首页 » 智能 » 处理器根本常识整理_地址_指令

处理器根本常识整理_地址_指令

落叶飘零 2024-11-14 16:41:43 0

扫一扫用手机浏览

文章目录 [+]

RISC(reduced instruction set computer,精简指令集打算机)是一种实行较少类型打算机指令的微处理器.这样一来,它能够以更快的速率实行操作。
由于打算机实行每个指令类型都须要额外的晶体管和电路元件,打算机指令集越大就会使微处理器更繁芜,实行操作也会更慢。

纽约约克镇IBM研究中央的John Cocke证明,打算机中约20%的指令承担了80%的事情,他于1974年提出了RISC的观点。

处理器根本常识整理_地址_指令 处理器根本常识整理_地址_指令 智能

CISC(complexinstruction set computer,繁芜指令集打算机) 除了RISC,任何全指令集打算机都利用的是繁芜指令集打算(CISC)。

处理器根本常识整理_地址_指令 处理器根本常识整理_地址_指令 智能
(图片来自网络侵删)

目前常见利用RISC的处理器包括DEC Alpha、ARC、ARM、MIPS、PowerPC、SPARC和SuperH等。

常见利用CISC的处理器紧张有X86.

RISC和CISC的差异:

(1) 指令系统:RISC 设计者把紧张精力放在那些常常利用的指令上,只管即便使它们具有大略高效的特色。
对不常用的功能,常通过组合指令来完成。
因此,在RISC 机器上实现分外功能时,效率可能较低。
但可以利用流水技能和超标量技能加以改进和填补。
而CISC 打算机的指令系统比较丰富,有专用指令来完成特定的功能。
因此,处理分外任务效率较高。
  

(2) 存储器操作:RISC 对存储器操作有限定,使掌握大略化;而CISC 机器的存储器操作指令多,操作直接。
  

(3) 程序:RISC 汇编措辞程序一样平常须要较大的内存空间,实现分外功能时程序繁芜,不易设计;而CISC 汇编措辞程序编程相对大略,科学打算及繁芜操作的程序设计相对随意马虎,效率较高。
  (4) 中断:RISC 机器在一条指令实行的适当地方可以相应中断;而CISC 机器是在一条指令实行结束后相应中断。
  

(5) CPU芯片电路:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面历年夜、功耗大。
  

(6) 设计周期:RISC 微处理器构造大略,布局紧凑,设计周期短,且易于采取最新技能;CISC 微处理器构造繁芜,设计周期长。
  

(7) 用户利用:RISC 微处理器构造大略,指令规整,性能随意马虎把握,易学易用;CISC微处理器构造繁芜,功能强大,实现分外功能随意马虎。
  

(8) 运用范围:由于RISC 指令系统的确定与特定的运用领域有关,故RISC 机器更适宜于专用机;而CISC 机器则更适宜于通用机。

二、 冯洛伊曼构造 VS 哈佛构造

1903年12月28日,在布达佩斯出身了一位神童,这不仅给这个家庭带来了巨大的喜悦,也值得全体打算机界去纪念。
正是他,首创了当代打算机理论,其体系构造沿用至今,而且他早在40年代就已预见到打算机建模和仿真技能对当代打算机将产生的意义深远的影响。
他,便是约翰·冯·诺依曼(John Von Neumann)。

最大略的来说 他的精髓贡献是2点:2进制思想与程序内存思想。

1946年6月美籍匈牙利科学家冯诺依曼教授揭橥了“电子打算机装置逻辑构造初探”的论文。
并设计出了第一台“存储程序”打算机EDVAC(埃德瓦克),即离散变量自动电子打算机(The ElectronicDiscrete Variable Automatic Computer).这种构造的打算机为当代打算机体系构造奠定了根本,成为“冯诺依曼体系构造”。

冯诺依曼理论的要点是:数字打算机的数制采取二进制;打算机该当按照程序顺序实行。

  其紧张内容是:

  1.打算机由掌握器、运算器、存储器、输入设备、输出设备五大部分组成。

  2.程序和数据以二进制代码形式不加差异地存放在存储器中,存放位置由地址确定。

  3.掌握器根据存放在存储器中地指令序列(程序)进行事情,并由一个程序计数器掌握指令地实行。
掌握用具有判断能力,能根据打算结果选择不同的事情流程。

  人们把冯诺依曼的这个理论称为冯诺依曼体系构造。
从EDVAC(ENIVAC并不是冯诺依曼体系)到当前最前辈的打算机都采取的是冯诺依曼体系构造。
以是冯诺依曼是当之无愧的数字打算机之父。

  根据冯诺依曼体系构造构成的打算机,必须具有如下功能:

  把须要的程序和数据送至打算机中。

  必须具有长期影象程序、数据、中间结果及终极运算结果的能力。

  能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。

  能够根据须要掌握程序走向,并能根据指令掌握机器的各部件折衷操作。

  能够按照哀求将处理结果输出给用户。

为了完成上述的功能,打算机必须具备五大基本组成部件,包括:

  输入数据和程序的输入设备;

  影象程序和数据的存储器;

  完成数据加工处理的运算器;

  掌握程序实行的掌握器;

  输出处理结果的输出设备 。

哈佛构造是一种将程序指令存储和数据存储分开的存储器构造。
哈佛构造一种并行体系构造,它的紧张特点。

将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。
这种分离的程序总线和数据总线可许可在一个机器周期内同时得到指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了实行速率,提高了数据的吞吐率。
又由于程序和数据存储器在两个分开的物理空间中,因此取指和实行能完备重叠。
中心处理器首先到程序指令存储器中读取程序指令内容,解码後得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(常日是实行)。
程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度。

  哈佛构造的打算机由CPU、程序存储器和数据存储器组成,程序存储器和数据存储器采取不同的总线,从而供应了较大的存储器带宽,使数据的移动和交流更加方便,尤其供应了较高的数字旗子暗记处理性能。

哈佛构造与冯.诺曼构造处理器比较,处理器有两个明显的特点:利用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不许可指令和数据并存;利用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
 

改进的哈佛构造,其构造特点为:1、利用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不许可指令和数据并存,以便实现并行处理;2、具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输;

哈佛构造的微处理器常日具有较高的实行效率。
其程序指令和数据指令分开组织和储存的,实行时可以预先读取下一条指令。
目前利用哈佛构造的中心处理器和微掌握器有很多,除了Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11。
TI的DSP等。

三、流水线

流水线处理概述

CPU紧张事情办法:

顺序

重叠

流水

和铺地板的事理相似…

设指令事情办法分成取指令、剖析、实行指令

若各阶段实行韶光相等,则共需3n t

优点:掌握大略;

缺陷:速率慢,机器各部件的利用率很低。

重叠(Overlap):在两条附近指令的阐明过程中,某些不同阐明阶段在韶光上存在重叠部分。

包括一次重叠、先行掌握技能和多操作部件并行。

将相邻两条指令的重叠韶光再往条件前一个阶段;T=3×t+(n-1)×t=(n+2)×t

一次重叠:把取指令操作隐含在剖析、实行指令过程中,则在任何时候只许可上条指令“实行”与下条指令“剖析”相重叠。
T=(n+1)×t

若各段韶光不等时,有实际实行韶光:

先行掌握:剖析部件和实行部件能分别连续不断地剖析和实行指令,预取和缓冲相结合的技能 ,通过对指令流和数据流的先行掌握,使指令剖析器和实行部件能只管即便连续并行事情。

实行韶光:

多操作部件并行:采取有多个功能部件的处理机,把ALU的多种功能分散到几个具有专门功能的部件中,这些功能部件可以并行事情,使指令流出速率大大提高。

先行掌握:当代打算机指令系统是繁芜的,“剖析”和“实行”所须要的韶光每每相差很大,从而造成功能部件的摧残浪费蹂躏,因此,须要采取先行掌握技能。

剖析指令和实行指令韶光不等时的一次重叠办法

采取先行缓冲栈是指令实行过程的一种表示方法

先行掌握:

一样平常采取先行缓冲栈的办法实现:

一样平常设置四种缓冲栈:

先行指令缓冲栈当主存比较忙时,指令剖析器能够从先行指令缓冲栈中得到所需指令。

先行操作栈对付条件转移等利用。

先行读书栈主存储器和运算器之间的缓冲存储器,用来平缓运算器和主存储器之间的事情。

后行写数栈

当前没有完备写道主存的数据可以暂存到写数栈

先行掌握的处理机构造:

先行掌握中的缓冲深度设计:

通过一种极度情形打算举例:

假设先行指令缓冲栈已经完备充满,缓冲深度是D1。

此时指令缓冲栈输出端,指令流出速率最快,而输入端,流入最慢

假设指令序列的最大长度是L1,均匀剖析一条指令的韶光是t1

而此时更坏的是取指令很慢,均匀取一条指令的韶光是t2

假设先行掌握栈充满到被取空的过程中指令剖析条数是L1

则此时有: L1t1 = (L1-D1)t2

1989年推出的i486处理器引入了五级流水线。
这时,在CPU中不再仅运行一条指令,每一级流水线在同一时候都运行着不同的指令。
这个设计使得i486比同频率的386处理器性能提升了不止一倍。
五级流水线中的取指阶段将指令从指令缓存中取出(i486中的指令缓存为8KB);第二级为译码阶段,将取出的指令翻译为详细的功能操作;第三级为转址阶段,用来将内存地址和偏移进行转换;第四级为实行阶段,指令在该阶段真正实行运算;第五级为退出阶段,运算的结果被写回寄存器或者内存。
由于处理器同时运行了多条指令,大大提升了程序运行的性能。

处理器一样平常由如下功能单元组成:

取指单元

译码单元

实行单元

Load/store单元(load用于从内存中取数据,而STORE用于存数据到内存)

例外/中断单元

电源管理单元

流水线常日由取指、译码、实行及Load/Store等单元组成。
各单元按图所示的几个步骤循环重复自身事情。

流水线的含义:

与工厂生产线类似,将一件事情分成多少个固定的工序进行。

cpu流水线技能是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技能。
指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。
(事理和生产流水线一样)

CPU指令流水线

根据之前描述的根本,指令进入流水线,通过流水线处理,从流水线出来的过程,对付我们程序员来说,是比较直不雅观的。

I486拥有五级流水线。
分别是:取指(Fetch),译码(D1, main decode),转址(D2, translate),实行(EX, execute),写回(WB)。
某个指令可以在流水线的任何一级。

但是这样的流水线有一个明显的毛病。
对付下面的指令代码,它们的功能是将两个变量的内容进行交流。

1

2

3

XOR a, b

XOR b, a

XOR a, b

从8086直到386处理器都没有流水线。
处理器一次只能实行一条指令。
再这样的架构下,上面的代码实行并不会存在问题。

但是i486处理器是首个拥有流水线的x86处理器,它实行上面的代码会发生什么呢?当你一下去不雅观察很多指令在流水线中运行,你会以为混乱,以是你须要转头参考上面的图。

1、第一步是第一条指令进入取指阶段;

2、然后在第二步第一条指令进入译码阶段,同时第二条指令进入取指阶段;

3、第三步第一条指令进入转址阶段,第二条指令进入译码阶段,第三条指令进入取指阶段。

4、但是在第四步会涌现问题,第一条指令会进入实行阶段,而其他指令却不能连续向前移动。

5、第二条xor指令须要第一条xor指令打算的结果a,但是直到第一条指令实行完成才会写回。

以是流水线的其他指令就会在当前流水级等待直到第一条指令的实行和写回阶段完成。
第二条指令会等待第一条指令完成才能进入流水线下一级,同样第三条指令也要等待第二条指令完成。

这个征象被称为流水线壅塞或者流水线气泡。

常用观点:

1、流水线级数:流水线的节拍数。

2、吞吐率:单位韶光内流水线能处理的任务数量。

3、最大吞吐率:流水线达到不间断流水的稳定状态后可得到的吞吐率。

4、加速比:流水办法的事情速率与等效的顺序事情办法韶光的比值。

流水线指标:

1、流水技能无助于减少单个任务的处理延迟(latency),但有助于提高整体事情负载的吞吐率

2、多个不同任务同时操作, 利用不同资源

3、潜在加速比= 流水线级数

4、流水线的速率受限于最慢的流水段

5、流水段的实行韶光如果不屈衡,那么加速比就会降落

6、开始添补流水线的韶光和末了排放流水线的韶光降落加速比

低功耗嵌入式领域的ARM7便是采取3级流水线构造。

超流水

超流水线技能是通过细化的流水,提高主频。
使得机器在一个周期内完成一个乃至多个操作,其本色是用空间换取韶光。

超流水处理器是相对付基准处理器而言的,一样平常cpu的流水线是基本的指令预取,译码,实行和写回结果四级。
超流水线(superpiplined)是指某型CPU内部的流水线超过常日的5~6步以上,例如Pentium pro的流水线就长达14步。
将流水线设计的步(级)数越多,其完成一条指令的速率越快,因此才能适应事情主频更高的CPU。
这一点我们可以用日常事例来解释,比如有5个人接力传送木头(对应一个5级的流水线),超流水是说细化该流水过程,即由10个人接力(此时为10级流水),显然完玉成体任务的速率会快。
相称于毛主席的一句话:人多力量大(效率高)。

超标量

超标量是指在CPU中有一条以上的流水线,并且每时钟周期内可以完成一条以上的指令,这种设计就叫超标量技能。
其本色因此空间换取韶光。

CPU架构是指在一颗处理器内核中实施了指令级并行的一类并走运算。
这种技能能够在相同的CPU主频下实现更高的CPU吞吐率(throughput)。

四、寻址空间

一、什么叫寻址空间?

寻址空间一样平常指的是CPU对付内存寻址的能力。
普通地说,便是能最多用到多少内存的一个问题。
数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候须要把数据提取出来就须要知道数据在那里 ,这时候就须要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。
CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位。

常日人们认为,内存容量越大,处理数据的能力也就越强,但内存容量不可能无限的大,它要受到系统构造、硬件设计、制造本钱等多方面成分的制约,一个最直接的成分取决于系统的地址总线的地址寄存器的宽度(位数)。

打算机的探求范围由总线宽度(处理器的地址总线的位数)决定的,也可以理解为cpu寄存器位数,这二者一样平常是匹配的。

Intel公司早期的CPU产品的地址总线和地址寄存器的宽度为20位,即CPU的寻址能力为2^20=10241024字节=1024K字节=1M字节;286的地址总线和地址寄存器的宽度为24位,CPU的寻址能力为2^24=1024410244B=410244KB=16M;386及386以上的地址总线和地址寄存器的宽度为32位,CPU的寻址能力为2^32=4096M字节=4G字节。
也便是说,如果机器的CPU过早,纵然有很大的内存也不能得到利用,而对付现在的PⅡ级的CPU,其寻址能力已远远超过目前的内存容量。

由此推出:地址总线为N位(N常日都是8的整数倍;也说N根数据总线)的CPU寻址范围是2的N次方字节,即2^N(B)。

二、16位、32位、64位常日指的是什么?

从CPU的发展史来看,从以前的8位到现在的64位,8位也便是CPU在一个时钟周期内可并行处理8位二进字符0或是1,那么16就以此类推是64位就64位二进制.从数据打算上来讲理论上64位比32快一半。
但由于电脑是软硬相合营才能发挥最佳性能的.以是操作系统也必须从32位的到64位的,而且系统的硬件驱动也必须是64位的.在64CPU的打算机上要安装64位操作系统64位的硬件驱动,32位的硬件驱动是不能用的,只有这样才能发挥打算机的最佳性能.如果64CPU装32操作系统的话,那性能不会有明显的提升。

三、为什么是2的N次方,而不是其他数的N次方?

由于打算机是采取二进制打算的。
假设一台打算机,它只有1根地址线,叨教它最多能对几个存储单元寻址?答案是:2个.由于在任何2进制打算机中,所有物理元件只有 0,1两种状态,对应这个例子,我们假设已经把这唯一的一根地址线与两个存储单元a和b连上了,那么究竟怎么确定何时读a何时读b?有一个办法,当地址线上的电压是高电压时我们读a,相反是低电压时,我们读b.如此一来,一根地址线的情形下,只能对2个存储单元进行寻址 依次类推,2根地址线时可以对4个存储单元进行寻址,对应的电压情形可以是:低低,低高,高低,高高;连续想下去,3根地址线就可以对8个存储单元进行寻址(3个1和3个0不同组合情形:111、110、100、000、101、100、001、011),4根便是16个,也便是说,当有n根地址线时,可以对2的n次方个存储单元进行寻址。

一根线是怎么连接到两个存储单元的?彷佛不同于一根电话线吧,他有两个线芯或才网线,有八个小线(线芯)?

四、什么是存储单元?存储单元一样平常应具有存储数据和读写数据的功能,一样平常以8位二进制作为一个存储单元,也便是一个字节。
每个单元有一个地址,是一个整数编码,可以表示为二进制整数。
程序中的变量和主存储器的存储单元相对应。
变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。
五、为什么打算机采取二进制?(1)技能实现大略,打算机是由逻辑电路组成,逻辑电路常日只有两个状态,开关的接通与断开,这两种状态恰好可以用“1”和“0”表示。
(2)简化运算规则:两个二进制数和、积运算组合各有三种,运算规则大略,有利于简化打算机内部构造,提高运算速率。
(3)适宜逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,恰好与逻辑代数中的“真”和“假”相吻合。
(4)易于进行转换,二进制与十进制数易于相互转换。
(5)用二进制表示数据具有抗滋扰能力强,可靠性高档优点。
由于每位数据只有高低两个状态,当受到一定程度的滋扰时,仍能可靠地分辨出它是高还是低。
  我们的宇宙出身于137亿年前的一次大爆炸。
在宇宙之外的一个宇宙中,有一个星系与银河系具有非常显著的相似之处,在这个星系的一条旋臂上,存在着一个恒星系统,这个别系中只有一颗恒星,这颗恒星也与我们的太阳非常相似,再将镜头放大,在这颗恒星周围存在着八大行星,个中第三颗行星与我们的地球非常相似,这颗行星上同样也存在着高档直立聪慧生物,个中有一个生物和您非常相似,过着同样的生活,更主要的是,此时此刻,他与您一样,也正在阅读这篇文章正文第一段的末了一行。
在X86系统里面,实在有多个寻址空间(Memory空间、IO空间、PCI的配置空间)类似于独立的多个并行的宇宙,虽然没有多宇宙的相似性,但是每个空间通过自己的指令,自己独立体例,是不同的空间,互不干涉。
这在RISC处理器的编址办法里面,是不涉及的,在RISC处理器中,一样平常所有的外设,内存,寄存器都在统一的寻址空间。
IO空间通过in/ins、out/outs指令访问。
16位地址范围(0-0FFFFh)。
对付x86架构来说,通过IN/OUT指令访问。
PC架构一共有65536个8bit的I/O端口,组成64KI/O地址空间,编号从0~0xFFFF。
连续两个8bit的端口可以组成一个16bit的端口,连续4个组成一个32bit的端口。
I/O地址空间和CPU的物理地址空间是两个不同的观点,例如I/O地址空间为64K,一个32bit的CPU物理地址空间是4G。
MMIO占用CPU的物理地址空间,对它的访问可以利用CPU访问内存的指令进行。
一个形象的比喻是把文件用mmap()后,可以像访问内存一样访问文件、同样,MMIO是用访问内存一样的办法访问I/O资源,如设备上的内存。
MMIO不能被cache,缘故原由以前很多帖子论述过,就不多说了(有分外情形,如VGA)。
Port I/O和MMIO的紧张差异在于:1)前者不占用CPU的物理地址空间,后者霸占(这是对x86架构说的,一些架构,如IA64,port I/O占用物理地址空间)。
2)前者是顺序访问。
也便是说在一条I/O指令完成前,下一条指令不会实行。
例如通过Port I/O对设备发起了操作,造成了设备寄存器状态变革,这个变革不才一条指令实行前生效。
uncache的MMIO通过uncahce memory的特性担保顺序性。
3)利用办法不同由于port I/O有独立的64KI/O地址空间,但CPU的地址线只有一套,以是必须区分地址属于物理地址空间还是I/O地址空间。
早期的CPU有一个M/I针脚来表示当前地址的类型。
Memory空间通过mov指令以及其他干系指令访问。
访问空间与CPU模式有关。
后面章节做详细描述。
PCI Config 空间PCI设备的配置寄存器空间•每个设备256个寄存器(00-FFh)•X86平台通过CF8/CFC端口访问。
这一段PCI的内容,其实在RISC处理器中,带PCI或者PCIe外设的处理器,一样存在PCI配置空间的问题。
后续,有PCI系统学习的内容,再做详细描述。
本文不做展开描述。
X86内存地址空间解释:S16 表示 16 位段寄存器P16 表示 16 位的普通寄存器, 立即数, 结果为 16 位的表达式等等.P32 同上, 只是扩展到 32 位.一. CPU 数据线和地址线的概况1. 8086: 8 位数据线, 16 位地址线. 8 位数据线和前8位地址线合用.2. 8088: 16位数据线, 16位地址线. 数据线和地址线完备分时合用.3. 80186: 16位数据线, 16位地址线. 数据线和地址线完备分时合用.4: 80188: 16位数据线, 16位地址线. 数据线和地址线完备分时合用.5. 80286: 16位数据线, 24位地址线. 数据线和地址线是完备分开的. 转到保护模式的过渡 CPU.6. 80386: 32位数据线, 32位地址线. 数据线和地址线是完备分开的(个中80386SX像80286).7. 80486: 32位数据线, 32位地址线.8. Pentium: 64位数据线, 32位地址线.9. Pentium Pro: 64位数据线, 36位地址线.二. 实模式: 分段内存1. 支持的 CPU: 8086 以上2. 启用办法: 启动后自动进入3. 地址长度: 204. 寻址能力: 1M5. ALU宽度: 166. 寻址过程:引入了 CS, DS, SS, ES 这 4 个 16 位的段寄存器. 寻址时将段寄存器左移 4 位后再加上 16 位的偏移, 既: (S16 << 4) + P16. 得到 20 位的地址.省略段寄存器时, 会利用默认的段寄存器:段偏移用场CSIP指令地址DSAX, BX, SI, DI, Disp8/16数据地址SSSP, BP堆栈地址ESDI串操作目的地址l只能寻址1MB以下内存。
源于8086CPU的20根地址线设计。
l内存寻址由段地址和偏移地址组成。
l一个段包含64KB空间的内存。
段地址和偏移地址寄存器皆为16bit。
l没有数据保护功能。
l段地址是16Byte对齐,因此事实上不同的段是可以重叠的。
三. 保护模式: 分段内存1. 支持的 CPU: 80286 以上2. 启用办法: 将 CR0 寄存器的 PE 位置 1.3. 地址长度: 324. 寻址能力: 4GB5. ALU宽度: 326. 寻址过程:从 32 位的数据宽度, 寻 32 位的地址, 看起来彷佛是非常大略的一件事情. 不过由于对内存保护的加入, 这个过程实在更为繁芜. 而 Intel 又选择了兼容之前的分段内存, 且分段机制在进入保护模式后是必须的, 不能关闭. 实在大多数的操作系统实现的时候都选择绕过分段机制, 只利用分页机制来进行内存管理.保护模式的分段机制保留了以前的段寄存器, 并且增加了两个 FS, GS. 这些段寄存器仍旧为 16 位, 但是里面保存的不再是段的基地址了, 而是一个段选择子。
同样, 在没有指明段寄存器的情形下, 会利用一个默认的段寄存器:段偏移用场CSEIP指令地址DSEAX, EBX, ECX, EDX, ESI, EDI, Disp8/16/32数据地址SSESP, EBP堆栈地址ESEDI串操作目的地址GS无一样平常地址FS无一样平常地址l可以寻址4GB空间。
l每个段利用一个段描述符定义。
每个段描述符长度8byte。
l段紧张属性:起始地址,size,Code/Data,方向,特权级,粒度等。
l段具有范围保护功能,只能寻址段范围内的指令和数据,超出段范围将引起CPU非常缺点。
l程序、数据的引用地址皆为相对付段的起始地址的偏移量。
这使程序可以定位在实际内存中的任意位置。
l干系寄存器:GDTR、LDTR、IDTR、TRlCS、DS、ES、SS等保存的是“段选择字”,而非段的地址。
四. 保护模式: 分页内存1. 支持的 CPU: 80386 以上, PSE 须要 Pentium 以上2. 启用办法: 将 CR0 寄存器的 PG 位置 13. 地址长度: 324. 寻址能力: 4GB5. ALU宽度: 326. 寻址过程:分页机制是当代操作系统实现内存管理的紧张办法. 它将线性地址空间划分为固定大小的页面, 每个页面可以被映射到物理内存或外部存储器的虚拟内存文件中, 并且进行权限检讨. 在没有启用 PAE 时, 内存页面大小可以是 4KB 或 4MB. 如果 CR4 中的 PSE 位是 0, 则只支持 4KB 的内存页. 如果 PSE 位是 1, 则根据 PDE 中的 PS 位来决定内存页的大小.1# 4KB 页面寻址对付 4KB 的页面, 32 位的线性地址不再表示物理地址。
2# 4MB 页面寻址 (PSE 模式)对付 4MB 的页面, 不须要利用页表, 只须要页目录的一层映射. 要配置 4MB 的页面, 须要设置 CR4 中的 PSE 位. 并在 PDE 中设置 PS 位.1. 内存的二级分页构造2. 4KB 页面寻址过程3. 4MB 页面寻址过程五. 虚拟 86 模式 (V8086, V86)1. 支持的 CPU: 80386 以上2. 启用办法: 在保护模式下, 将标志寄存器中的 VM 位置 13. 地址长度: 204. 寻址能力: 1MB5. ALU 宽度: 166. 寻址过程:虚拟 86 模式是保护模式下, 某些任务的一种事情模式. 此模式是为了能够在保护模式下运行实模式软件. 在虚拟 86 模式下, 软件的事情环境和实模式类似, 利用 (S16 << 4) + P16 的办法访问 1M 的内存, 但是得到的地址不再是物理地址了, 而是由系统的虚拟 86 管理程序分配的内存. 虚拟 86 模式下也可以利用内存分页(实模式下弗成), 让没有利用的内存空间不占用物理内存. 虚拟 86 模式下的中断和分外指令的访问也由系统软件进行仿照, 不能直接访问硬件.在虚拟 86 模式下, 是不能直接变动标志寄存器的 VM 位的, 以是进入和退出虚拟 86 模式是通过任务切换或中断来完成的.1. 保护模式和 V86 模式的切换六. PSE-36: Page Size Extension 361. 支持的 CPU: Pentium III 以上 (另说为 Pentium II)2. 启用办法: 开启 PSE 的情形下, 如果 CPU 支持即可利用3. 地址长度: 364. 寻址能力: 64GB5. ALU 宽度: 326. 寻址过程:在前面的分页内存中, 处于 PSE 模式时, PDE 构造只利用了高 10 位作为基址. 在 PSE-36 模式里, 将利用个中的 14 位来作为基址, 这样, 末了的地址位数将达到 36 位, 寻址能力提高到 64GB. 在 PSE 36 模式下, 4MB 页面的 PDE 构造变为:对付 4KB 的页面, 仍旧和普通的分页内存相同, 它可以表示的内存仍旧只要 4GB. 以是, 在 PSE 36 模式下, 4KB 的页面只能位于前 4GB 物理内存中. 4GB 以上的内存只能通过 PSE 办法访问, 页面大小只能为 4MB.PAE 模式下 4KB 页面的寻址PAE 模式下 2MB 页面的寻址七. PAE: Physical Address Extension 物理地址扩展1. 支持的 CPU: Pentium Pro 以上2. 启用办法: 设置 CR4 中的 PAE 位3. 地址长度: 364. 寻址能力: 64GB5. ALU 宽度: 326. 寻址过程:在 PAE 模式中, 运用程序仍旧为 32 位, 只能利用 4GB 的内存空间. 但是系统可以把不同的进程映射到 64GB 的物理内存中. 运用程序如果须要利用大于 4GB 的内存, 则须要操作系统的分外支持(Windows 为 AWE, Address Windowing Extensions; Unix 存在多种, 比如 mmap ).启用 PAE 后, CR3 寄存器不再指向页目录基址, 而是指向一个页目录指针表 PDPT (Page Directory Pointer Table), 即包含 4 个页目录指针的表. 页目录项和页表项从原来的 4 字节变为 8 字节, 占用的内存大小仍旧为 4KB, 以是个中的表项从 1024 个变为 512 个. 因此, 现在一共有 4 个页目录表, 页目录表和页表的下标也只须要 9 位了, 于是线性地址的划分也有了变革.八. 长模式 (long-mode, IA-32e 模式)1. 支持的 CPU: x86-64 的 CPU2. 启用办法:同时知足以下条件:(1). 开启保护模式 CR0.PE = 1(2). 开启分页机制 CR0.PG = 1(3). 开启 PAE CR4.PAE = 1(4). IA32_EFER.LME = 1 (Long Mode Enable)(5). IA32_EFER.LMA = 1 (Long Mode Active)3. 地址长度: 484. 寻址能力: 256 TB5. ALU 宽度: 646. 寻址过程:x86-64 体系, 也被称为 x64 体系, 还被叫做 AMD 64 和 Intel 64 体系. 他们是 x86 体系向 64 位的扩展, 有别于纯 64 位架构的 IA64 体系. x64 体系兼容 x86 的运行模式, 并增加一种新的长模式. x64 的运行模式如下:x64 体系子模式资源long-mode (IA-32e)64-bit mode64 位实行环境compatibility mode内核为 64 位, 运用为 32 位的 legacy modelegacy modeprotected mode32 位real mode16 位在长模式下, 内核只能为 64 位, 运用可以为 64 位或 32 位. 兼容模式(compatibility mode)和保护模式基本相同.在 64 位模式下, 寄存器被扩展为 64 位, 默认的地址大小也是 64 位(可以利用 67H 前缀来利用 32 位地址, 但是不能利用 16 位地址), 并增加了 RIP 相对寻址办法. 兼容模式下代码段描述符中的 D 标志位决定了默认的地址大小: D = 0 默认为16位地址, D = 1 默认为32位地址, 可通过 67H 前缀来改变默认值.虚拟地址空间当处理器读或写入内存位置时,它会利用虚拟地址。
作为读或写操作的一部分,处理器将虚拟地址转换为物理地址。
通过虚拟地址访问内存有以下上风:程序可以利用一系列相邻的虚拟地址来访问物理内存中不相邻的大内存缓冲区。
程序可以利用一系列虚拟地址来访问大于可用物理内存的内存缓冲区。
当物理内存的供应量变小时,内存管理器会将物理内存页(常日大小为 4 KB)保存到磁盘文件。
数据或代码页会根据须要在物理内存与磁盘之间移动。
不同进程利用的虚拟地址彼此隔离。
一个进程中的代码无法更改正在由另一进程利用的物理内存。
进程可用的虚拟地址范围称为该进程的“虚拟地址空间”。
每个用户模式进程都有其各自的专用虚拟地址空间。
对付 32 位进程,虚拟地址空间常日为 2 GB,范围从 0x00000000 至 0x7FFFFFFF。
对付 64 位进程,虚拟地址空间为 8 TB,范围从 0x000'00000000 至 0x7FF'FFFFFFFF。
一系列虚拟地址有时称为一系列“虚拟内存”。
此图解释了虚拟地址空间的一些主要功能。
该图显示了两个 64 位进程的虚拟地址空间:Notepad.exe 和 MyApp.exe。
每个进程都有其各自的虚拟地址空间,范围从 0x000'0000000 至 0x7FF'FFFFFFFF。
每个阴影框都表示虚拟内存或物理内存的一个页面(大小为 4 KB)。
把稳,Notepad 进程利用从 0x7F7'93950000 开始的虚拟地址的三个相邻页面。
但虚拟地址的这三个相邻页面会映射到物理内存中的非相邻页面。
而且还把稳,两个进程都利用从 0x7F7'93950000 开始的虚拟内存页面,但这些虚拟页面都映射到物理内存的不同页面。
用户空间和系统空间诸如 Notepad.exe 和 MyApp.exe 的进程在用户模式下运行。
核心操作系统组件和多个驱动程序在更有特权的内核模式下运行。
有关处理器模式的详细信息,请参阅用户模式和内核模式。
每个用户模式进程都有其各自的专用虚拟地址空间,但在内核模式下运行的所有代码都共享称为“系统空间”的单个虚拟地址空间。
当前用户模式进程的虚拟地址空间称为“用户空间”。
在 32 位 Windows 中,可用的虚拟地址空间共计为 2^32 字节(4 GB)。
常日较下的 2 GB 用于用户空间,较上的 2 GB 用于系统空间。
在 32 位 Windows 中,你可以指定(在启动时)超过 2 GB 用于用户空间。
结果是系统空间可用的虚拟地址更少。
可以将用户空间的大小增至 3 GB,在这种环境下系统空间仅有 1 GB。
若要增大用户空间的大小,请利用 BCDEdit /set increaseuserva。
在 64 位 Windows 中,虚拟地址空间的理论大小为 2^64 字节(16 百亿亿字节),但实际上仅利用 16 百亿亿字节范围的一小部分。
范围从 0x000'00000000 至 0x7FF'FFFFFFFF 的 8 TB 用于用户空间,范围从 0xFFFF0800'00000000 至 0xFFFFFFFF'FFFFFFFF 的 248 TB 的部分用于系统空间。
用户模式下运行的代码可以访问用户空间,但不能访问系统空间。
此限定可防止用户模式代码读或变动受保护的操作系统数据构造。
内核模式下运行的代码既可以访问用户空间,也可以访问系统空间。
即,在内核模式下运行的代码可以访问系统空间和当前用户模式进程的虚拟地址空间。
在内核模式下运行的驱动程序必须在直接从用户空间地址中读取或写入这些地址时非常小心。
此方案解释了缘故原由。
用户模式程序发起从设备读取某些数据的要求。
程序供应缓冲区的起始地址以吸收数据。
在内核模式下运行的设备驱动程序例程启动读取操作并将掌握权返回到其调用程序。
然后,设备中断了当前运行的任何线程以显示读取操作完成。
中断由在此任意线程上运行的内核模式驱动程序例程进行处理,该例程属于任意进程。
此时,驱动程序不得将数据写入用户模式程序在步骤 1 中供应的开始地址。
此地址位于发起要求的进程的虚拟地址空间,该进程可能很大程度上不同于当提高程。
页面缓冲池和非页面缓冲池在用户空间中,所有物理内存页面都可以根据须要进行分页至磁盘文件。
在系统空间中,某些物理页面可以分页,而其他页面不能。
系统空间具有用于动态分配内存的两个区域:页面缓冲池和非页面缓冲池。
在 64 位 Windows 中,页面缓冲池为 128 GB 的虚拟地址,范围从 0xFFFFA800'00000000 至 0xFFFFA81F'FFFFFFFF。
非页面缓冲池为 128 GB 的虚拟地址,范围从 0xFFFFAC00'00000000 至 0xFFFFAC1F'FFFFFFFF。
在页面缓存池等分配的内存可以根据须要分页至磁盘文件。
在非页面缓冲池等分配的内存永久无法分页至磁盘文件。
Flat Mode 平坦模式所有段包含全体4G空间;可以寻址4G范围。
可以理解为保护模式的分外情形,以进入保护模式的办法进入。
内存访问模式切换

ARM地址空间分配

1、ARM,32位的,寻址4GB空间,内存(SDRAM)和端口(分外寄存器),还有ROM都映射到同一个4G空间里.

2:一样平常都用SDRAM做内存flash(nor、nand)来当做ROM。
个中nand flash没有地址线,一次至少要读一页(512B).其他两个有地址线

3:norflash不用来运行代码,只用来存储代码,NORflash,SDRAM可以直接运行代码)

4:s3c2440统共有8个内存banks

6个内存bank可以当作ROM或者SRAM来利用

留下的2个bank除了当作ROM 或者SRAM,还可以用SDRAM(各种内存的读写办法不一样) 7个bank的起始地址是固定的

还有一个灵巧的bank的内存地址,并且bank大小也可以改变

5、FLASH启动,有两种模式:NAND和非NAND(这里是nor flash)。
详细采取的办法取决于OM0、OM1两个引脚

OM[1:0]所决定的启动办法

OM[1:0]=00时,处理器从NAND Flash启动

OM[1:0]=01时,处理器从16位宽度的ROM启动

OM[1:0]=10时,处理器从32位宽度的ROM启动。

OM[1:0]=11时,处理器从Test Mode启动。

Arm的启动都是从0地址开始,所不同的是地址的映射不一样。
在arm开电的时候,要想让arm知道以某种办法(地址映射办法)运行,不可能通过你写的某段程序掌握,由于这时候你的程序还没启动,这时候arm会通过引脚的电平来判断。

1当引脚OM0跟OM1有一个是高电平时,这时地址0会映射到外部nGCS0片选的空间,也便是Norflash,程序就会从Norflash中启动,arm直接取Norflash中的指令运行。

2当OM0跟OM1都为低电平,则0地址内部bootbuf(一段4k的SRAM)开始。
系统上电,arm会自动把NANDflash中的前4K内容考到bootbuf(也便是0地址),然后从0地址运行。

这时NANDFlash中的前4K便是启动代码(他的功能便是初始化硬件然后在把NANDFlash中的代码复制到RAM中,再把相应的指针指向该运行的地方)

为什么会有这两种启动办法,关键还是两种flash的不同特点造成,NOR FLASH容量小,速率快,稳定性好,输入地址,然后给出读写旗子暗记即可从数据口得到数据,适宜做程序存储器。
NAND FLASH 总容量大,但是读写都须要繁芜的时序,更适宜做数据存储器。
这种不同就造成了NORflash可以直接连接到arm的总线并且可以运行程序,而NANDflash必须搬移到内存(SDRAM)中运行。

在实际的开拓中,一样平常可以把bootloader烧入到Norflash,程序运行可以通过串口交互,进行一定的操作,比如下载,调试。
这样就很可以很方便的调试你的一些代码。
Norflash中的Bootloader还可以烧录内核到Norflash等等功能。

arm寻址办法

1. 立即数寻址

这是一种比较大略的寻址办法,操作数包含在指令当中。
取出指令,即取出了操作数。
对应的寻址办法也就叫做立即数寻址。

例:

;把稳arm汇编中,指令不能顶格写,在前面加空格。

;而定义变量的时候,必须顶格写,这里新手要把稳。

ADD R0,R0,#1 ;R0 <==R0 +1 ,把R0的内容加1。

ADD R0,R0,#0x30 ;R0 <==R0 +0x30,把R0的内容加 0x30。

解释:以上两条指令中,第二个源操作数 #1 和#0x30为立即数。
立即数必须以#作为前缀,对付16进制的立即数,哀求有"0x"或者"&"符号。

2. 寄存器寻址

将寄存器中的值作为操作数,这种办法即为寄存器寻址。
此种办法较为各种微处理器常用,实行效率高。

例:

ADD R0,R1,R3 ;R0 <==R1+R3

将R1和R3的内容相加,结果存放到R0。

3. 寄存器移位寻址

其是将2 寄存器寻址做变革而得到的一种新的寻址办法。
即移位,第二个操作数通过相应移位和第一个操作数运算后放到目的寄存器中。

例:

ADD R0,R1,R3,LSL #3 ;R0 <== R0+R38 ,R3的值左移3位便是乘以8,结果与R1的值相加,存放到R0.

ARM的移位(或者循环移位)操作有如下几种:

LSL 逻辑左移,寄存器中低位空出的有效位用0添补

LSR 逻辑右移,寄存器中高端空出的有效位用0添补

ASR 算数右移,移位过程中必须保持符号位不变,即若源操作数为正,则高位用0添补,若为负,则高位用1添补。
其每移一位的操作和逻辑右移相同,仅是如果原最高位为1,则移位后最高位补1,以是在移大于1位时左边的高位都是1.

即:

MOV R1,#0

MOV R2,#&80000000 ;此处立即数为负数,

MOV R1,R2,ASR #3

R1 内的值为 0xF0000000

若立即数换为0x40000000,则R1的值末了为0x08000000.

ROR 循环右移,一处的最低位移到空出的最高位

RRX 扩展的循环右移,操作数右移一位(每次实行只能移动1位),高端空出的位用进位标志位C确当前值来添补。

4.寄存器间接寻址

寄存器间接寻址,便是以寄存器中的值作为操作数的地址。
这种寻址办法类似于c措辞中取指针对应的变量的值 p。

例:

ADD R0,R1,[R2] ;R0 《==R1 + [R2]

LDR R0,[R1] ;R0 <==[R1]

STR R0,[R1] ;[R1] <== R0

第一条指令为将R2的值作为操作数的地址,将此地址对应的位置的操作数和R1相加,存放到R0 ,[R2]类似于 取指针对应的值 p。

第二条指令为将R1的值作为地址的寄存器中的数传送到R0中。
类似于c措辞 R0 = R1;

第三条指令将R0的值传送到R1的值作为地址的寄存器中。
类似于c措辞中 R1 = R0;

5.基址变址寻址

这种寻址办法便是将寄存器(一样平常为基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到操作数的有效地址。

这种办法长用来访问基址附近的地址空间。

例:

LDR R0,[R1,#4] ;R0 <==[R1 +4]

LDR R0,[R1,#4]! ;R0<==[R1+4] 、 R1<==R1 +4

LDR R0,[R1],#4 ;R0<==[R1] 、R1 <==R1+4

LDR R0,[R1,R2] ;R0 <==[R1+R2]

以上是常见的4中变址寻址办法,通过前面4中寻址的学习,我们可以认为 符号"[]"意为里面的数是地址,用符号浸染后是取地址对应的值。
即 (int )逼迫类型转换,

#即代表的立即数。
那么第一条和第四条就很随意马虎理解了。

第二三条指令可以看出,相称于两个动作,第一个动作是将取得的值存放到R0,第二个都是R1的地址自加4.

6.多寄存器寻址

多寄存器寻址办法可以实现一条指令完成多个寄存器值的传送。
最多可以传送16个通用寄存器的值。

例:

LDMIA R0,{R1,R2,R3,R4} ;R1 <==[R0]

;R2 <==[R0+4] ; R3 <==[R0+8] ;R4 <==[R0+12]

该条指令的后缀 IA 即 Increment After 的缩写,表示在每次实行完加载/存储操作之后,R0按字长度(即4字节)增加,因此,指令可以将连续多个存储单元的值传送到R1-R4中。

7.相对寻址

这种寻址办法从名称上就可以看出和基址变址寻址办法类似,相对寻址以程序计数器PC确当前值为基地址,指令中的地址标号为偏移量,将两者相加之后得到操作数的有效地址。

以下程序完成了子程序的调用和返回,跳转指令BL采取相对寻址办法:

[plain] view plaincopyprint?

BL NEXT ;跳转到子程序NEXT处实行 ,采取BL或者BLX跳转时, LR(即寄存器R14)保存了返回地址

[plain] view plaincopyprint?

……EXT……MOV PC,LR ;从子程序返回,将返回地址存到PC(即寄存器R15)

8.堆栈寻址

堆栈(STACK)是一种十分常用的数据构造,按照前辈后出(First In Last Out,FILO)的办法事情。
堆栈利用一个叫做堆栈指针的专用寄存器指示当前操作位置,堆栈指针总是指向栈顶。
ARM中利用LDMFD和STMFD指令来支持POP出栈操作和PUSH进栈操作,R13被用作堆栈指针。

例:

STMFD R13!,{R0~R4} ;

LDMFD R13!,{R0~R4} ;

第一条指令将R0~R4中的数据压入堆栈

第二条指令将数据出栈,回答R0~R4的值。

ARM内存管理单元

MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。
MMU常日是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作TLB(转换旁置缓冲区)。
所有数据要求都送往MMU,由MMU决定数据是在RAM中还是在大容量存储器设备中。
如果数据不在RAM中,MMU将产生缺页中断。

MMU的两个紧张功能如下:

1.将虚地址转换成物理地址。

2.掌握存储器存取许可。

嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如FLASH、SRAM、SDRAM、ROM等,这些不同类型的存储器件速率和宽度等各不相同;在访问存储单元时,可能采纳平板式的地址映射机制对其操作,或须要利用虚拟地址对其进行读写;系统中,需引入存储保护机制,增强系统的安全性。
为适应如此繁芜的存储体系哀求,ARM处理器中引入了存储管理单元来管理存储系统。

在实践中,利用MMU办理了如下几个问题:

1.利用DRAM作为大容量存储器时,如果DRAM的物理地址不连续,这将给程序的编写调试造成极大不便,而适当配置MMU可将其转换成虚拟地址连续的空间。

2.ARM内核的中断向量表哀求放在0地址,对付ROM在0地址的情形,无法调试中断做事程序,以是在调试阶段有必要将可读写的存储器空间映射到0地址。

3.系统的某些地址段是不许可被访问的,否则会产生不可预见的后果,为了避免这类缺点,可以通过MMU匹配表的设置,将这些地址段设为用户不可存取类型。

启动程序时天生的匹配表中包含地址映射,存储页大小(1M、64K、4K)以及是否许可存取等信息。
MMU通过虚拟地址和页面表位置信息,按照转换逻辑得到对应物理地址,输出到地址总线上。

MMU的浸染有两个:地址翻译和地址保护。
软件的职责是配置页表,硬件的职责是根据页表完成地址翻译和保护事情。
如果CPU没有硬件MMU,那么这张表将毫无意义。
必须从CPU的角度去理解内存映射这个观点,内存映射是CPU通过MMU把一条指令中要访问的地址转换为物理地址,然后发送到总线上的过程。

在实际的运用中,可能会把两片不连续的物理地址空间分配给SDRAM。
而在操作系统中,习气于把SDRAM的空间连续起来,方便内存管理,且运用程序申请大块的内存时,操作系统内核也可方便地分配。
通过MMU可实现不连续的物理地址空间映射为连续的虚拟地址空间。

操作系统内核或者一些比较关键的代码,一样平常是不肯望被用户运用程序所访问的。
通过MMU可以掌握地址空间的访问权限,从而保护这些代码不被毁坏。

MMU的实现过程,实际上便是一个查表映射的过程。
建立页表(translatetable)是实现MMU功能不可短缺的一步。
页表位于系统的内存中,页表的每一项对应于一个虚拟地址到物理地址的映射。
每一项的长度即是一个字的长度(在ARM中,一个字的长度被定义为4字节)。
页表项除完成虚拟地址到物理地址的映射功能之外,还定义了访问权限和缓冲特性等。

MMU的映射分为两种,一级页表的变换和二级页表变换。
两者的不同之处便是所实现的变换地址空间大小不同。
一级页表变换支持1M大小的存储空间的映射,而二级可以支持64KB、4KB和1KB大小地址空间的映射。

要实现从虚拟地址到物理地址的映射,一定会碰着一个问题,如何找到这个页表。
对付表的查找,要知道这个表的基地址和偏移地址,在具有MMU功能的处理器中,集成了一个被称为CP15的协处理器,该协处理器的C2寄存器中用于保存页表的基地址,

ARM MMU实行以下一些功能,将虚拟地址转换成物理地址;掌握存储访问权限;决定存储器中每一页的Cache和写缓冲器的行为。
当禁用MMU时,所有的虚拟地址逐一映射到与其相同的物理地址。
如果MMU在转换一个地址时失落败,就会产生一个中止非常。
MMU只有在转换失落败、权限缺点和域(domain)缺点时,才会中止。

MMU的紧张配置和掌握模块如下:页表、转换旁路缓冲器、域和访问权限、Cache和写缓冲器、CP15、快速高下文切换扩展。

标签:

相关文章

DIY一个超大年夜号的数字时钟_数码管_模块

超大号数码管时钟最近创造家里居然没有钟,看韶光还得先找手机,买一个又太贵还不足有创意,为了彰显个性(实在是穷),以是决定自己做一个...

智能 2025-01-21 阅读0 评论0