第 2章 微处理器的结构及存储器组成第 2章 微处理器的结构及存储器组成
2.1 80x86和 Pentium微处理器的结构
2.2 存储器的组织第 2章 微处理器的结构及存储器组成
2.1 80x86和 Pentium微处理器的结构
2.1.1 80x86和 Pentium微处理器的结构
1,8086微处理器的结构
Intel8086(简称 8086)是在 Intel公司的 8位微处理器 8080与
8085的基础上发展起来的一种 16位微处理器。它的内部结构是
16位的,数据总线也是 16条;它能处理 16位数据 (具有 16位运算指令,包括乘法和除法指令 ),同时也能处理 8位数据;它能执行整套 8080/8085的指令,所以它在汇编语言上与 8080/8085是兼容的。
第 2章 微处理器的结构及存储器组成图 2-1 8086的功能结构存储器接口
ES
CS
SS
DS
IP
4
3
2
1
执行单元控制系统
AH AL
BH BL
CH CL
DH DL
SP
BP
SI
DI
标志
B I U
C - B U S
B - B U S
EU
A L U
A - B U S
指令流字节排队
Σ
第 2章 微处理器的结构及存储器组成
BIU负责与存储器接口,即 8086CPU与存储器之间的信息传送,都是由 BIU进行的。具体地说,BIU负责从内存的指定部分取出指令,送至指令流队列中排队,在执行指令时所需的操作数,也由 BIU从内存的指定区域取出,传送给 EU部分去执行。
EU部分负责指令的执行,取指部分与执行指令部分是分开的,于是在一条指令的执行过程中,就可以取出下一条 (或多条 )
指令,在指令流队列中排队。在一条指令执行完以后就可以立即执行下一条指令,减少了 CPU为取指令而等待的时间,提高了 CPU的利用率和执行速度,降低了与之相配的存储器对采样速度的要求。
第 2章 微处理器的结构及存储器组成图 2-2 8086的执行方式取指 取指 取指 取指 取指 得到数据 取指等待 执行 执行 执行 执行
B I U
EU
…
…
第 2章 微处理器的结构及存储器组成在 8080与 8085以及标准的 8位微处理器中,程序的执行是由取指和执行指令的循环来完成的,执行的顺序为取第一条指令,执行第一条指令;取第二条指令,执行第二条指令; …… ;
直至取最后一条指令,执行最后一条指令。这样,在每一条指令执行完以后,CPU必须等待,直到下一条指令取出来以后才能执行。所以,它的工作顺序如图 2-3所示。
取指 执行 取指 执行 取指 执行 …
时间图 2-3 一般 8位机的执行方式第 2章 微处理器的结构及存储器组成
2,80486微处理器的结构
80486是一种高性能全 32位的微处理器。它把构成 80386微机系统的主处理器、数值协处理器和一个具有 8 KB的 Cache存储器集成在一块集成电路芯片中。沿用了指令流水线技术,采用 RISC思想设计,使用静态高速 RAM作为程序和数据共用的
Cache,提高了存储器的读 /写速度,浮点运算部件 FPU集成在片内,提高了浮点运算的速度和能力,它支持多任务处理。
第 2章 微处理器的结构及存储器组成
80486微处理器的基本组成如图 2-4所示,包括总线接口部件、指令预取部件、指令译码部件、控制和保护部件、算术与逻辑运算部件、浮点运算部件 FPU、分段部件、分页部件和 8
KB的 Cache部件。这些部件可以独立工作,也能与其他部件一起并行工作。在取指令和执行指令时,每个部件完成一项任务或某一操作步骤,这样既可同时对不同的指令进行操作,又可对同一指令的不同部分并行处理,即采用流水线工作方式。
第 2章 微处理器的结构及存储器组成
80486微处理器的特点有:
(1) 浮点运算器 FPU,8 KB程序与数据共用 Cache和主 CPU
集成在同一芯片中,减少了外部数据传送环节,提高了浮点运算及数据处理的能力、速度和可靠性。
(2) 把分段部件和分页部件有机地结合在一起,建立起完整的存储器管理与保护机构,为存储器管理提供 4级保护,对指令的执行进行测试与监督,保证指令的正确执行。
(3) 采用 RISC思想设计,使 80486既带有 CISC类微处理器的特点,又具有 RISC类微处理器的特色,与以往的 CISC(80x86)微处理器兼容。
第 2章 微处理器的结构及存储器组成
(4) 在总线接口部件中设有成组控制和 Cache控制部件,支持 CPU在成组传送周期几乎以每个时钟周期传送一个字 (2个字节 )的速度连续从主存或外部 Cache存储器中选取指令和数据,
送入内部 Cache存储器。另外还设有总线大小控制部件,控制传送数据的宽度,同时提供数据传送时的奇偶控制。为了使宽总线达到最佳使用效果,在系统总线接口部件中配有写缓冲存储器。
第 2章 微处理器的结构及存储器组成
(5) 由预取部件负责从内部 Cache中取指令或数据。如果指令或数据不在内部 Cache中,则从主存中读取,同时填入内部
Cache。预取部件的数据通路为 16字节 (128位 ),使指令码和数据传送速度加快。预取指令队列为 32字节,可存放更多的指令代码或数据,从而有效地加快了指令执行的速度。许多指令 (如寄存器之间的数据传送、加减运算等 )可在一个时钟周期内完成。
第 2章 微处理器的结构及存储器组成图 2-4 80486结构逻辑图
32 位基址 / 变址总线桶形移位器寄存器组
A L U
分段部件描述符寄存器界限和属性
P L A
分页部件
TLB
C a c h e 部件
8 K B 一体的 C a c h e
总线大小控制奇偶控制和产生地址驱动器写缓存 ( 4 )
数据总线收发器总线控制请求序列发 生 器成组控制
C a c h e 控制预取部件
32 字节代码队列
EP 寄存器组
F P U
控制 R O M
控 制 和保护部件指令译码
20 位物理地址页属性
32 位系统地址
32 位写数据系统接口已译码的指令
24 位代码流整数部件
32 位读数据
64 位部件传送总线微指令总线
32 位位移总线
32 位线性地址总线
32 位数据总线
32 位数据总线第 2章 微处理器的结构及存储器组成
(6) 在内部 Cache和浮点运算器 FPU之间的内部通路采用 64位
(两个 32位 )数据线,使浮点数据的传送及运算速度加快。
(7) Cache采用“写贯穿” (Write Through)方式,使写入数据不仅写入 Cache存储器,同时还要写入主存储器,保证了 Cache
与主存数据的一致性。
(8) 采用单倍频时钟,简化了时钟电路,提高了 CPU的速度。
(9) 除了内部 Cache和 FPU外,支持配置外部 Cache和数值协处理器 FPU,使系统的性能进一步提高。
第 2章 微处理器的结构及存储器组成
(10) 在指令系统方面保持与 80386兼容。除了包含 80387的浮点运算指令外,还增加了 6条新指令,即字节交换指令
BSWAP、交换并相加指令 XADD、比较并交换指令 CMPXCH和
Cache指令 INVD,WBINVD,INVLPG。其中前 3条可在系统软件和应用软件中使用,增强数据运算与处理能力;后 3条只能在系统软件中使用,增强对内部 Cache和 TLB的管理。
第 2章 微处理器的结构及存储器组成
3,Pentium微处理器的结构图 2-5 Pentium体系结构示意图指令 Cach e
整数单元分支预测预取指令缓冲器整数单元寄 存 器 组数据 Cach e
6 4 b 总线接口流水线结构的浮点单元
MU L
ADD
D IV
3 2 b
3 2 b 3 2 b
6 4 b
6 4 b
6 4 b
2 5 6 b
U V
第 2章 微处理器的结构及存储器组成
1) 超标量流水线超标量流水线 (Super Scalar)设计是 Pentium处理器技术的核心。
它由 U和 V两条指令流水线构成,如图 2-6所示。每条流水线都拥有自己的 ALU(算术逻辑单元 )、地址生成电路和与数据 Cache的接口。这种流水线结构允许 Pentium在单个时钟周期内执行两条整数指令,比相同频率的 486DX的 CPU性能提高了一倍。
Pentium双流水线中的每一条流水线分为 5个步骤,即指令预取、指令解码、地址生成、指令执行、回写。当一条指令走过预取步骤,流水线就可以开始对另一条指令进行操作。
第 2章 微处理器的结构及存储器组成图 2-6 Pentium超标量流水线结构
U
-
流水线
V
-
流水线
U 或 V 流水线第 2章 微处理器的结构及存储器组成
Pentium是双流水线结构,可以一次执行两条指令,每条流水线执行一个。这个过程称为“指令并行”。在这种情况下,
要求指令必须是简单指令,且 V-流水线总是接受 U-流水线的下一条指令。例如,在下述 4条指令中
MOV AX,5
INC BX
MOV AX,5
INC AX
前两条指令可以并行工作,而后两条指令则不行,它会产生结果的冲突,因为后两条指令都在对同一个寄存器 AX进行操作。因而,Pentium的有效使用还必须借助于有适用的编译工具,
能产生尽量不冲突的指令序列。
第 2章 微处理器的结构及存储器组成
2) 独立的指令 Cache和数据 Cache
80486片内有 8 KB Cache,而 Pentium则为两个 8 KB,一个作为指令 Cache,另一个作为数据 Cache,即双路 Cache结构,如图
2-7所示。
图 2-7 Pentium双路 Cache结构
8 K B 指令
C a c h e
TLB
8 K B 数据
C a c h e
TLB
取指令 U - 流水线数据 V - 流水线数据
3 2 b 线宽无回写
3 2 b 线宽有回写第 2章 微处理器的结构及存储器组成图中 TLB的作用是将线性地址翻译成物理地址。指令 Cache
和数据 Cache采用 32× 8的线宽 (80486DX为 16× 8线宽 ),是对
Pentium 64 b总线的有力支持。
Pentium的数据 Cache有两个接口,分别通向 U和 V两条流水线,以便能在相同时刻向两个独立工作的流水线进行数据交换。
当向已被占满的数据 Cache写数据时,将移走一部分当前使用频率最低的数据,并同时将其写回主存,这个技术称为 Cache回写技术。由于处理器向 Cache写数据和将 Cache释放的数据写回主存是同时进行的,所以,采用 Cache回写技术可大大节省处理时间。
第 2章 微处理器的结构及存储器组成指令和数据分别使用不同的 Cache,使 Pentium的性能大大提高。例如,流水线的第一个步骤为指令预取,在这一步中,
指令从指令 Cache中取出来,如果指令和数据合用一个 Cache,
指令预取和数据操作之间很有可能发生冲突。提供两个独立的
Cache则可避免这种冲突并允许两个操作的并发执行。
第 2章 微处理器的结构及存储器组成
3) 浮点操作
Pentium的浮点单元流水分为 8级,浮点操作的执行过程分为
8级流水,使每个时钟周期能完成一个浮点操作,甚至在一个时钟周期内能完成两个浮点操作。
浮点单元流水线的前 4个步骤同整数流水线相同,后 4个步骤的前两步为二级浮点操作,后两步为四舍五入及写结果和出错报告。 Pentium的 FPU对一些常用指令如 ADD,MUL和 LOAD
等采用了新的算法,同时,用电路进行了固化,用硬件来实现,
提高了速度。
第 2章 微处理器的结构及存储器组成
4) 分支预测循环操作在软件设计中使用十分普遍,而每次循环中循环条件的判断占用了大量的 CPU时间。为此,Pentium提供一个称为分支目标缓冲器 BTB(Branch Target Buffer)的小 Cache来动态地预测程序分支。当一条指令导致程序分支时,BTB记住这条指令和分支目标的地址,并用这些信息预测这条指令再次产生分支时的路径,预先从此处预取,保证流水线的指令预取步骤不会空置。 BTB机制如图 2-8所示。
当 BTB判断正确时,分支程序即刻得到解码。从循环程序来看,在进入循环和退出循环时,BTB会发生判断错误,需重新计算分支地址。
第 2章 微处理器的结构及存储器组成在 Pentium中,常用指令如 MOV,INC,DEC,PUSH、
POP,JMP,CALL(near),NOP,SHIFT,NOT和 TEST等改用硬件实现,不再使用微码操作,使指令的运行得到进一步加快。
而其他的微码指令由于运行于双流水线上,速度也得到了提高。
第 2章 微处理器的结构及存储器组成指令 C a c h e
指令预取指令解码B T B
图 2-8 Pentium的 BTB机制第 2章 微处理器的结构及存储器组成
2.1.2 80x86和 Pentium微处理器的寄存器结构
1,8086微处理器的寄存器结构
8086的寄存器结构如图 2-9所示。它能处理 16位数,AX、
BX,CX和 DX这 4个寄存器均是 16位的数据寄存器,用以暂存 16
位的操作数。其中 AX为累加器,其他 3个 16位寄存器用以存放操作数,通常的用途如表 2-1所示。
第 2章 微处理器的结构及存储器组成
AH AL
BH BL
CH CL
DH DL
SP
AX
BX
CX
DX
BP
SI
DI
IP
FL A G
H
FL A G
L
CS
DS
SS
ES
(SP)
(PC)
(PSW )
累加器基 数计 数数 据堆栈指针基数指针源变址目的变址指令指针状态标志代码分段数据分段堆栈分段附加分段控制寄存器段寄存器数 据寄存器指 针寄存器变 址寄存器通 用寄存器
O D I T S Z A P C
15 8 7 0
( a )
( b )
(A )
(H L )
(BC)
(D E )
图
2-
9
80
86
的寄存器结构第 2章 微处理器的结构及存储器组成表 2-1 8086通用寄存器的用法寄存器 通常用途
AX 字乘法,字除法,字 I/O
AL 字节乘法,字节除法,字节 I/O,转移,十进制算术运算
AH 字节乘法,字节除法
BX 转移
CX 串操作,循环次数
CL 变量移位或循环
DX 字乘法,字除法,间接 I/O
第 2章 微处理器的结构及存储器组成
8086也能处理 8位数。图 2-9中的 4个 16位数据寄存器也可作为
8个 8位寄存器使用。
8086中有 4个 16位的段寄存器,即 CS(Code Segment Register)、
DS(Data Segment Register),SS(Stack Segment Register),ES(Extra
Segment Register),使 8086能在 1 MB的范围内对内存进行寻址。
8086中的堆栈指针 SP(Stack Pointer)用于确定在堆栈操作时,堆栈在内存中的位置。但在 8086中 SP还必须与 SS(堆栈段寄存器 )一起才能确定堆栈的实际位置。
第 2章 微处理器的结构及存储器组成在 8086中有 3个 16位寄存器,BP(Base Pointer Register)、
SI(Source Index Register)和 DI(Destination Index Register),寻址方式较多,寻找操作数灵活、方便。
8086中的指令指针 IP(Instruction Pointer)是指向下一次要取出的指令,与 CS寄存器相配合才能形成真正的物理地址。
8086有一个状态标志寄存器,如图 2-9(b)所示。
第 2章 微处理器的结构及存储器组成
2,80x86和 Pentium微处理器的寄存器结构
80x86和 Pentium微处理器的寄存器可以分为基本体系结构寄存器、系统级寄存器和调试与测试寄存器 3类。其中基本体系结构寄存器和浮点寄存器应用程序可以直接访问,一般称作程序可见寄存器。其他寄存器在应用程序设计期间不能直接寻址,
只有特权级为 0级的程序才可以使用它们,一般称为程序不可见寄存器。
80486和 Pentium微处理器中包含的寄存器有 8种:通用寄存器,段寄存器,指令指针寄存器,状态标志寄存器,控制寄存器,系统地址寄存器,调试与测试寄存器和浮点寄存器。
第 2章 微处理器的结构及存储器组成
1) 通用寄存器通用寄存器共有 8个,如图 2-10所示。其中 EAX,EBX、
ECX和 EDX可作为 8位,16位或 32位寄存器使用,ESI,EDI、
EBP,ESP可作为 16位或 32位寄存器使用,作用如下:
EAX:常用作累加器;
EBX:常用作基址寄存器;
ECX:常用作计数器;
EDX:常用作数据寄存器;
ESI:常用作源变址寄存器;
EDI:常用作目的变址寄存器;
EBP:常用作基址寄存器;
ESP:常用作堆栈指针寄存器。
第 2章 微处理器的结构及存储器组成图 2-10 80486通用寄存器
SI
AH
BH
CH
DH
A
B
C
D
X
X
X
X
AL
BL
CL
DL
DI
BP
SP
EAX
E BX
E CX
EDX
E S I
EDI
E BP
E S P
31 16 15 8 7 0
第 2章 微处理器的结构及存储器组成
2) 段寄存器段寄存器有 6个,每个 16位,其中 CS,DS,SS分别作为指令代码段、数据段和堆栈段寄存器,ES,FS和 GS作为附加数据段寄存器。在实地址方式和虚拟 8086方式下分别存放相应段的基地址;在保护方式下作为选择器,存放相应的选择符,如图
2-11所示。每个段寄存器对应一个隐含不可访问的段描述符寄存器,存放由选择符寻址的描述符。选择符的高 13位是段描述符表的地址 (简称选择码 ),低 3位表示段描述符的类型和特权标志。段选择符与段描述符寄存器如图 2-12所示。
第 2章 微处理器的结构及存储器组成图 2-11 80486段寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器附加段寄存器附加段寄存器第 2章 微处理器的结构及存储器组成图 2-12 段寄存器与段描述符高速缓冲寄存器选择符选择符选择符选择符选择符选择符段寄存器
CS
SS
DS
ES
FS
GS
物理基地址 段界限 段说明符段描述符高速缓冲寄存器第 2章 微处理器的结构及存储器组成
3) 指令指针寄存器指令指针寄存器是一个 32位的寄存器,如图 2-13所示,用来存放当前代码段中下一条要执行指令的偏移量 (或称偏移地址 )。在实地址方式和虚拟 8086方式下,作为 16位指针寄存器使用;在保护方式下,作为 32位指针寄存器使用。
IP
31 16 15 0
图 2-13 80486指令指针寄存器第 2章 微处理器的结构及存储器组成
4) 状态标志寄存器状态标志寄存器是一个 32位的寄存器,实际使用了 15位,
用来存放微处理器的状态标志和控制标志。其中部分标志供系统使用,因此也称为系统标志。各位的符号如图 2-14所示。
第 2章 微处理器的结构及存储器组成图 2-14 80486状态标志寄存器第 2章 微处理器的结构及存储器组成
FLAGS是 16位标志寄存器,由 EFLAGS中的 D15~ D0组成,
其中包含了两种标志:状态标志 (S)、控制标志 (C)。 SF,ZF、
PF,CF,AF和 OF组成了状态标志,控制标志由 DF,IF和 TF构成。 EFLAGS是 32位标志寄存器,其中包含了 3种标志:状态标志 (S)、控制标志 (C)和系统标志 (X)。状态标志报告算术 /逻辑运算指令执行后的状态;控制标志仅含一个标志 DF,用于控制串操作指令的地址改变方向;系统标志用于控制 I/O、屏蔽中断、
调试、任务转换和控制保护方式与虚拟 8086方式间的转换。
第 2章 微处理器的结构及存储器组成图 2-14给出了 EFLAGS各位的标志名,共定义了 15位 14种标志。其中 CF,PF,AF,ZF,SF,TF,IF,DF,OF属于 8086的标志位; LF,RF是 80286新增的标志位; VM是 80386新增的;
AC则是 80486新增的。各个标志位的功能分述如下:
(1) 辅助进位标志 AF(Auxitiary Carry Flag)。在字节操作时,
由低半字节 (一个字节的低 4位 )向高半字节 (一个字节的高 4位 )进位或借位;在字操作时,低位字节向高位字节有进位或借位,
则 AF=1,否则为 0。这个标志用于十进制算术运算指令中。
第 2章 微处理器的结构及存储器组成
(2) 进位标志 CF(Carry Flag)。当结果的最高位 (字节操作时的
D7或字操作时的 D15)产生一个进位或借位,则 CF=1,否则 CF=0。
这个标志主要用于多字节数的加、减法运算。移位和循环移位指令也能够把存储器或寄存器中的最高位 (左移时 )或最低位 (右移时 )
放入标志 CF中。
(3) 溢出标志 OF(Overflow Flag)。在算术运算中,带符号数的运算结果超出了 8位或 16位 (带符号数能表达的范围 ),即在字节运算时结果大于 +127或结果小于 -128,在字运算时结果大于
32 767或结果小于 -32 768,此标志置位。
第 2章 微处理器的结构及存储器组成溢出和进位是两个不同性质的标志,千万不能混淆了 。 例如,
在字节运算中
MOV AL,64H
ADD AL,64H
即 01100100
+ 01100100
11001000
D7位向前无进位,故运算后 CF=0;但运算结果超过了 +127,
此时,溢出标志 OF=1。 又例如,在字节运算中
MOV AL,0ABH
ADD AL,0FFH
即 10101011 (-85)
+ 11111111 (-1)
1 10101010
第 2章 微处理器的结构及存储器组成
D7位向前有进位,故运算后 CF=1;但运算的结果又不小于 -
128,此时,溢出标志 OF=0。 在字运算中
MOV AX,0064H
ADD AX,0064H
即
00000000 01100100
+ 00000000 01100100
00000000 11001000
D15位未产生进位,故 CF=0;运算结果未超过?+32?767,故
OF=0。
第 2章 微处理器的结构及存储器组成但若有 MOV AX,6400H
ADD AX,6400H
即
01100100 00000000
+ 01100100 00000000
11001000 00000000
第 2章 微处理器的结构及存储器组成
D15位未产生进位,故 CF=0,但运算结果超过了 +32?767,
故 OF=1。 又例如:
MOV AX,0AB00H
ADD AX,0FFFFH
即:
10101011 00000000
+ 11111111 11111111
110101010 11111111
D15位产生进位,故 CF=1,但运算结果不小于?-32 768,故
OF=0。
第 2章 微处理器的结构及存储器组成
(4) 符号标志 SF(Sign Flag)。 它的值与运算结果的最高位相同 。
即结果的最高位 (字节操作时为 D7,字操作时为 D15)为 1,则 SF=1;
否则 SF= 0。 由于在 80X86中符号数是用补码表示的,所以 SF表示了结果的符号,SF=0为正,SF=1为负 。
(5) 奇偶标志 PF(Parity F1ag)。 若操作结果中,1”的个数为偶数,则 PF=1,否则 PF=0。 这个标志可用于检查在数据传送过程中是否发生错误 。
(6) 零标志 ZF(Zero Flag)。 若运算的结果为 0,则 ZF=1,否则
ZF=0。 80x86还提供了三个控制标志,它们能由程序来置位和复位,以变更对处理器的操作 。
第 2章 微处理器的结构及存储器组成
(7) 方向标志 DF(Direction Flag)。 若用指令置 OF=1,则引起串操作指令为自动减量指令,也就是从高地址到低地址处理字符串;
若使 OF=0,则串操作指令就为自动增量指令,也就是从低地址到高地址处理字符串 。
(8) 中断允许标志 IF(Interrupt-enable Flag)。 若指令中置 IF=1,
则允许 CPU去接收外部的可屏蔽中断请求;若使 IF=0,则屏蔽上述的中断请求,对内部产生的中断不起作用 。
(9) 追踪标志 TF(Trap Flag)。置 TF标志,使处理进入单步方式,以便于调试。在这个方式中,CPU在每条指令执行以后,产生一个内部中断,允许程序在每条指令执行以后进行检查。
第 2章 微处理器的结构及存储器组成
(10) 特权级标志 IOPL是状态标志寄存器中的 D13和 D12位 。
其表示 0~ 3级的 4个 I/O特权级,用于保护方式 。 只有当任务的现行特权级高于或等于 IOPL时 (0级最高,3级最低 ),执行 I/O指令才能保证不产生异常 。
(11) 任务嵌套标志 NT是状态标志寄存器中的 D14 位 。
80486/80386/80286的中断和 CALL指令可以引起任务转换 。 NT
= 1表示引起了任务转换,当前任务嵌套在另一任务内,这样,
在执行 IRET指令时,便返回父任务; NT=0表示没引起任务转换,
执行 IRET时是进行同任务内的返回,而不发生任务转换 。 该标志位用来控制被中断的链和被调用的任务 。
第 2章 微处理器的结构及存储器组成
(12) 恢复标志 RF是状态标志寄存器中的 D16位 。 该标志与调试寄存器的代码断点结合使用,以保证不重复处理断点 。 RF= 1
时,即使遇到断点或调试故障也不产生异常中断 。 在成功地执行每条指令后,RF将自动复位 。 80486在响应,断点异常,(中断 )时,先将 RF位置 1,然后将 EFLAGS压栈;在断点处理程序结束处,IRET指令将弹出具有 RF= 1的 EFLAGS,恢复程序在断点位置的执行,从而保证了代码在断点只执行一次 。
(13) 虚拟 8086模式标志 VM是状态标志寄存器中的 D17位。
VM= 1表示工作在虚拟 8086方式。该位只能以两种方式来设置,
在保护方式下,由最高特权级 (0级 )的代码段的 IRET指令来设置,
或者由任务转换来设置。
第 2章 微处理器的结构及存储器组成
(14) 对准检查标志 AC是状态标志寄存器中的 D18位 。 该位仅对 80486有效 。 AC= 1且 CR0的 AM位也为 1,则进行字,双字或四字的对准检查 。 若处理器发现在访问内存时操作数未按边界对准 (所谓对准,是指访问字操作数时从偶地址开始,访问双字数据时从 4的整数倍地址开始,访问 4字数据时从 8的整数倍地址开始 ),则发生异常 。 对 80386,AC位恒为 0,不进行对准检查 。
EFLAGS的低 16位含有 80286的全部标志,称为 FLAGS标志寄存器。它对于执行 8086/80286的代码是很有用的。
第 2章 微处理器的结构及存储器组成
5) 控制寄存器控制寄存器为 CR0~ CR3共有 4个,各 32位,用来存放全局性与任务无关的机器状态,其标志符号如图 2-15所示。与 80386
相比,80486的 CR0增加了 NE,WP,AM,NW和 CD,CR3增加了 PWT和 PCD。
第 2章 微处理器的结构及存储器组成图 2-15 80486控制寄存器
P
G
C
D
N
W
A
M
W
P
N
E
E
T
T
S
E
M
M
P
P
E
01234515 12 11161718293031
保 留页故障线性地址寄存器
P
C
D
P
W
T
保 留页目录基址寄存器
CR0
CR1
CR2
CR3
第 2章 微处理器的结构及存储器组成
(1) CR0用来存放系统控制标志或表示处理器的状态,定义了
11位,其功能是:
PE:保护方式允许位 。 置 1,进入保护方式;清 0,进入实地址方式 。
MP:监控协处理器位 。 置 1,表示有协处理器 。 若在 80486系统中运行 80286或 80386程序,该位置 1;若运行 80486程序,该位清 0。
EM:模拟协处理器位 。 该位为 1,表示软件模拟协处理器,
这时若使用协处理器指令将产生协处理器无效异常中断;该位为
0,允许协处理器指令使用实际的协处理器 。 在运行 80286或
80386程序时,该位置 1;在 80486SX系统中该位也必须置 1。
第 2章 微处理器的结构及存储器组成
TS:任务切换位。每次任务转换,该位置 1。在解释浮点算术运算指令时,对该位进行测试。清除任务切换标志指令 CLTS
可将该位清 0。
ET:处理器扩展类型标志。该位置 1,表示配置 80387;否则表示未配置。
NE:数值异常事故位。该位用来控制浮点运算中未被屏蔽的异常故障。该位置 1,允许报告浮点数值错;该位清 0且
IGNNE输入有效,则不予以报告。当 NE清 0且 IGNNE输入无效时,数值错将会使处理器停止运行,并等待一次中断。
第 2章 微处理器的结构及存储器组成
WP:写保护位。该位用来净化 80486的页写保护机构,即保护用户级的那些页。该位置 1,禁止管理级的写操作写入用户级的页上;该位清 0,管理级可向用户级的页进行写入。
AM:对准屏蔽位。该位与状态标志 AC配合使用,控制对数据的对准校验。该位置 1且 AC也置 1时,对用户级 (CPL= 3)访问的存储器单元进行对准校验,即边界检查,否则不校验。
第 2章 微处理器的结构及存储器组成
NW:不透明写位。该位也称为不是写贯穿,用来控制
Cache操作。该位清 0,所有命中 Cache的写操作将按写贯穿方式写入 Cache,同时写入主存;该位置 1且 CD位也置 1,只写入
Cache存储器,而不写入主存。
CD:允许 Cache位。该位用来控制是否使用片内 Cache。该位清 0,允许使用内部 Cache,这时若不命中,可对片内 Cache存储器填充写入;该位置 1,又不命中 Cache时不能对 Cache填充写入。若访问 Cache命中,则 Cache正常运行;若要彻底禁止 Cache,
可用专门的指令 INVD或 WBINVD对片内 Cache刷新。刷新就是使片内 Cache中的所有数据无效即清 0。
PG:允许分页位。该位置 1,允许分页;该位清 0,禁止分页。
第 2章 微处理器的结构及存储器组成
(2) CR1未用。
(3) CR2为页故障线性地址寄存器,用来保存最后出现页故障的 32位线性地址。只有当 CR0中的 PG位为 1时,CR2才有意义。
(4) CR3为页目录基址寄存器。其中高 20位存放页目录表的物理基地址。在低 12位中用 2位作为标志位,其余 10位未用。
标志位的作用是:
第 2章 微处理器的结构及存储器组成
PCD:禁止页高速缓冲位。该位置 1,不对页进行高速缓冲操作。在不分页情况下的总线周期,该信号由 PCD引脚输出,
控制外部二级 Cache的高速缓冲操作。
PWT:写贯穿位。在 80486内部 Cache中使用的是“写贯穿”
方式,而外部二级 Cache有的使用“写贯穿”方式,有的既可使用“写贯穿”方式又可使用“写回”方式。 PWT= 1,使片外二级 Cache采用“写贯穿”方式,否则采用“写回”方式。
“写贯穿”就是向 Cache写入数据的同时,也写入到主存中;
“写回”是只有当 Cache中的某一存储块被刷新时,才把这一存储块写回到主存中去。
第 2章 微处理器的结构及存储器组成
6) 系统地址寄存器在 80486微处理器中设置了 4个系统地址寄存器,如图 2-16所示。其作用也与 80386基本相同,用来在保护方式下管理 4个系统表,即引用 80486在保护方式下所需要的段表信息。由于只能在保护方式下使用,因此又称为保护方式寄存器。
第 2章 微处理器的结构及存储器组成图 2-16 80486系统地址寄存器
32 位线性基地址47 16 15 界限值 0
G D T R
I D T R
15 16 位选择符 0
选择器
32 位线性基地址 界限值 属性说明符描述符高速缓冲寄存器 ( 自动装入 )
TR
L D T R
第 2章 微处理器的结构及存储器组成
(1) 全局描述符表寄存器 GDTR,一个 48位寄存器,用来存放全局描述符表 GDT的 32位线性基地址和 16位的界限值,在全局描述符表中不仅包括有操作系统使用的描述符,而且还有所有任务使用的公用描述符。
(2) 中断描述符表寄存器 IDTR,一个 48位寄存器,用来存放中断描述符表 IDT的 32位线性基地址和 16位的界限值。
第 2章 微处理器的结构及存储器组成
(3) 局部描述符表寄存器 LDTR,一个 16位寄存器,用来存放局部描述符表 LDT的 16位选择符。另外还有一个隐含的描述符高速缓冲寄存器,用来存放 LDT表描述符。
(4) 任务状态寄存器 TR,一个 16位寄存器,用来存放任务状态段 TSS的 16位选择符。与之相应,也有一个隐含的描述符高速缓冲寄存器,用来存放任务状态段 TSS的描述符。
第 2章 微处理器的结构及存储器组成
7) 调试与测试寄存器
(1) 调试寄存器。该类寄存器有 8个,各 32位,如图 2-17(a)所示,表示为 DR0~ DR7。其中 DR0~ DR3用作线性断点地址寄存器,可保存 4个断点地址,DR6用作断点状态寄存器,用来设置若干个状态标志,其中低 4位分别表示 4个断点处的调试状态。
若进入调试状态,由硬件置 1;退出调试状态时应由软件清 0。
另外还有 3位,即 BT,BS和 BD,其中 BT是与任务状态段中调试自陷位 T相关的状态标志位,BS是与状态标志寄存器中的自陷标志 TF相关的状态标志位,BD是当内部电路仿真使用的下一条指令对 8个调试寄存器中的任一个进行读 /写时,置 1。 DR7是断点控制寄存器,用来设置控制标志、控制断点的设置、设置条件、
断点地址的有效范围以及是否进入异常中断等。 DR4~ DR5为
Intel公司保留。
第 2章 微处理器的结构及存储器组成图 2-17 调试与测试寄存器
(a) 调试寄存器; (b) 调试与测试寄存器线性断点地址 0
线性断点地址 1
线性断点地址 2
线性断点地址 3
In t el 保留
In t el 保留断点状态断点控制
031
D R 0
D R 1
D R 2
D R 3
D R 4
D R 5
D R 6
D R 7
C a ch e 测试控制
031
C a ch e 测试数据
C a ch e 测试状态
T L B 测试控制
T L B 测试状态
T R 3
T R 4
T R 5
T R 6
T R 7
( a ) ( b )
第 2章 微处理器的结构及存储器组成
(2) 测试寄存器。该类寄存器有 4个,各 32位,如图 2-17(b)
所示,表示为 TR3~ TR7。其中 TR3~ TR5用于片内 Cache测试。
TR6~ TR7用来控制分页部件中的转换旁视缓冲存储器 TLB的工作。 TR6作为测试命令寄存器,用来存放测试控制命令,TR7作为数据寄存器,用来存放转换旁视缓冲存储器测试的数据。
第 2章 微处理器的结构及存储器组成
8) 浮点寄存器
80486微处理器内部的浮点运算器是用于浮点运算的,其内部设有相应的寄存器,包括 8个 80位通用数据寄存器,一个 48位指令指针寄存器、一个 48位数据指针寄存器,一个 16位控制字寄存器,一个 16位状态字寄存器和一个 16位标记字寄存器。
第 2章 微处理器的结构及存储器组成
3.总线接口部件总线接口部件用来与外部主存、外围设备等部件进行数据传送。 80486微处理器内部设有高速算术 /逻辑运算器、浮点运算器和 Cache存储器,配置了外部 Cache,这就要求其能与外存、
外设高速成批地进行数据传送,故此对总线接口部件的功能有更高的要求。它在内部通过 3条 32位总线与内部 Cache和指令预取部件连接;在外部通过多种电路与系统总线连接,根据优先级别协调数据输入 /输出、指令预取,Cache行的填充等工作。
为了支持片内 Cache的连贯性,配置了总线监视功能。总线接口部件中各部分的功能是:
第 2章 微处理器的结构及存储器组成
(1) 总线大小 (也称为宽度 )控制。用来控制数据总线的位数,
即按 32位,16位或 8位进行数据传送。
(2) 奇偶校验控制。数据传送时进行奇偶校验,写操作时产生偶校验,读操作时实施偶校验。如果出错,给出错误信息。
(3) 地址驱动器。提供所有地址信号 A31~ A2和字节允许信号 BE3~ BE0的功率驱动,其中高 28位地址为双向信号。
(4) 写缓冲存储器。由于外部数据线是 32位,为了传送可靠,
在接口部件中设有缓冲存储器,以等待总线全部空闲时再进行写入操作。
第 2章 微处理器的结构及存储器组成
(5) 数据总线收发器。为 32位,用来控制总线数据的接收与发送。
(6) 总线请求序列发生器。也就是总线周期与总线控制电路,
用来产生总线周期的时序及控制信号。其中包括成组和非成组传送、总线请求仲裁、浮点运算、中断以及复位等操作所需要的定时控制信号。
(7) 成组传送控制。用来控制内部 Cache等部件与外部主存之间的成批数据传送。
(8) Cache控制。 Cache控制电路与成批传送控制配合,对系统 Cache存储器实施控制。
第 2章 微处理器的结构及存储器组成
4.标志操作指令
80x86中有一部分指令是专门对标志寄存器或标志位进行操作的。包括四条标志寄存器传送指令和标志位操作指令。
1) 标志寄存器传送指令
(1) LAHF(Load AH with Flags)
格式,LAHF
功能:把标志寄存器的低 8位 (包括符号标志 SF、零标志 ZF、
辅助进位标志 AF、奇偶标志 PF和进位标志 CF)传送至 AH的指定位,即相应地传送至位 D7,D6,D4,D2和 D0。 (位 D5,D3、
D1的内容没有定义 ),如图 2-18所示。这条指令本身不影响这些标志位。
第 2章 微处理器的结构及存储器组成图 2-18 LAHF指令示意图
7 6 5 4 3 2 1 0
AH
CT S Z A PIO DF L A G
第 2章 微处理器的结构及存储器组成
(2) SAHF(Store AH into Flags)
格式,SAHF
功能:这条指令与上一条的操作刚好相反,它是把寄存器
AH的指定位传送至标志寄存器的低 8位的 SF,ZF,AF,PF和
CF标志。因而这些标志的内容就要受到影响,这取决于 AH中相应位的状态,但这条指令并不影响溢出标志 OF、方向标志 DF、
中断屏蔽标志 IF和追踪标志 TF,即不影响标志寄存器的高位字节。
第 2章 微处理器的结构及存储器组成
(3) PUSHF(Push Flags)
格式,PUSHF
功能:把整个标志寄存器 FLAGS推入至栈指针所指的栈的顶部,同时修改栈指针,即 SP-2→SP 。
这条指令不影响标志位。
第 2章 微处理器的结构及存储器组成
(4) POPF(POP Flags)
格式,POPF
功能:把现行栈指针所指的一个字,传送给标志寄存器
FLAGS,同时相应地修改栈指针,即 SP+2→SP 。这条指令执行后,80X86的标志位就取决于原栈顶部的内容。
PUSHF和 POPF这两条指令可保存和恢复标志寄存器。在子程序调用和中断服务中可利用这两条指令来保护和恢复标志位。
另外,这两条指令也可以用来改变追踪标志 TF。在 80X86的指令系统中,没有直接能改变 TF标志的指令,故若要改变 TF标志,
先用 PUSHF指令把标志位入栈,然后设法改变栈顶存储单元的
D8位 (把整个标志看成一个字 ),再用 POPF指令恢复。这样其余的标志不受影响,而只有 TF标志按需要改变了。
第 2章 微处理器的结构及存储器组成
(5) PUSHFD
格式,PUSHFD
功能,PUSHFD为标志寄存器入栈指令,用于将 32位
EFLAGS的内容压入堆栈。操作后,使 (E)SP减 4。
第 2章 微处理器的结构及存储器组成
(6) POPFD
格式,POPFD
功能,POPFD为标志寄存器出栈指令,用于将栈顶 32位数弹出到 EFLAGS中。
说明:① EFLAGS的恢复标志 RF(D16)和虚拟 8086方式标志
VM(D17)不受 POPF和 POPFD指令的影响; I/O特权级标志
IOPL(D13,D12)只有在当前代码段的特权级为 0时才受影响;中断标志 IF(D9)只有在当前特权级至少等于 I/O特权级时才受影响。
② 当压入堆栈的是 8位数时,执行上述指令 (其操作数宽度属性隐含为 16位或 32位 )应对 8位带符号数扩展到 16位或 32位。
第 2章 微处理器的结构及存储器组成
2) 标志位操作指令
80x86有 7条直接对标志单独进行操作的指令。其中三条是针对进位标志 CF的,两条是针对方向标志 DF的,两条是针对中断标志 IF的。
(1) CLC(Clear Carry Flags)
格式,CLC
功能:标志 CF清 0,即 0→CF 。
第 2章 微处理器的结构及存储器组成
(2) CMC(Complement Carry Flags)
格式,CMC
功能:标志 CF取反,即若 CF=0,则 1→CF ;若 CF=1,则 0→CF 。
(3) STC(Set Carry Flags)
格式,STC
功能:标志 CF置 1,即 1→CF 。
第 2章 微处理器的结构及存储器组成
(4) CLD(Clear Direction Flag)
格式,CLD
功能:标志 DF清 0,即 0→DF,则在串操作指令时,使地址增量。
(5) STD(Set Direction Flag)
格式,STD
功能:标志 DF置 1,即 1→DF,则在串操作指令时,使地址减量。
第 2章 微处理器的结构及存储器组成
(6) CLI(Clear Interrupt enable Flag)
格式,CLI
功能:中断允许标志 IF清 0,即 0→CF,于是在 80X86系统中,外部装置送至可屏蔽中断 INTR引线上的中断请求,CPU就不予以响应,即中断屏蔽。但此标志对于非屏蔽中断 NMI引线上的请求以及软件中断都没有影响。
第 2章 微处理器的结构及存储器组成
(7) STI(Set Interrupt-enable Flag)
格式,STI
功能:标志 IF置 1,即 1→IF,则 CPU就可以响应出现在 INTR
引线上的外部中断请求。
上述 7条指令除对指定的标志位进行操作外,对其他标志位皆无影响。
第 2章 微处理器的结构及存储器组成
2.2 存储器的组织
2.2.1 基本概念
1.常用的术语
1) 位 (bit)
计算机中存储信息的基本单位是一个二进制位,简称位,是计算机所能表示的最基本最小的数据单元,英文为 bit,可用小写字母 b表示。一位可存储一位二进制数,它只能有两种状态,即
,0”和,1”。由若干个二进制位的组合就可以表示各种数据、字符等。
第 2章 微处理器的结构及存储器组成
2) 字节 (Byte)
相邻的 8位二进制数称为一个字节 (1Byte= 8 bit),英文为
Byte,可用大写字母 B表示。一个字节由 8位二进制数组成,其位编号自左至右为 b7,b6,b5,b4,b3,b2,b1,b0。一个字节占用一个存储单元。字节是微型机中存取信息的基本单位,
长度是固定的,但不同微型机的字长是不同的。 8位微机的字长就等于 1个字节,而 16位微机的字长等于 2个字节,32位微机的字长等于 4个字节。为了表示方便,常把 1个字节定为 8位,把一个字 (Word)定为 16位,一个双字 (Double Word)定为 32位。
第 2章 微处理器的结构及存储器组成
3) 字 (Word)和字长字是计算机内部进行数据处理的基本单位,通常它与计算机内部的寄存器、运算装置、总线宽度相一致。一个字是 16位,
其位编号自左至右为 b15~ b0且占用两个存储单元。计算机的每一个字所包含的二进制位数称为字长。
不同类型的微型计算机有不同的字长,例如,Intel的 8080、
8085为 8位,Intel的 8086和 80286的字长为 16位,Intel的 80386和
80486的字长为 32位。一个计算机的字长与它能表达数的范围不是一回事,因为可以用单字长,也可以用多字长表示数。
第 2章 微处理器的结构及存储器组成
4) 双字和四字双字:一个双字有 32位,其位编号自左至右为 b31~ b0。一个双字占用 4个存储单元。
四字:一个四字有 64位,其位编号自左至右为 b63~ b0。一个四字占用 8个存储单元。
第 2章 微处理器的结构及存储器组成
5) 内存单元的编址为了正确地区分不同的内存单元,给每个单元分配一个存储器地址,地址从 0开始编号,顺序递增 1。机器中的地址是用无符号二进制数表示,可简写为十六进制数形式。一个存储单元中存放的信息称为该单元的内容。例如,2号单元中存放了一个数字 8,则表示为,(2)=8。
对于字、双字、四字数据类型,由于它们每个数据都要占用多个单元,访问时只需给出最低单元的地址号即可,然后依次存取后续字节。习惯上,对于字、双字、四字数据类型,其低地址中存放低位字节数据,高地址中存放高位字节数据,这就是所谓的数据“逆序存放”。
第 2章 微处理器的结构及存储器组成例 2-1 内存现有以下数据:
地址,0 1 2 3?4 5
数据,12H 34H 45H 67H 89H 0AH
则对于不同的数据类型,取到 1号单元的数据是:
(1)字节 =34H
(1)字 =4534H
(1)双字 =89674534H
第 2章 微处理器的结构及存储器组成
2.分段与分页结构
1) 分段结构存储器的分段管理是微型机常用的一种存储管理方法。
8086存储管理,80486和 Pentium工作在实地址方式时的存储管理,
均采用分段管理的方法。这种方法既解决了其字长为 16位的机器 (如以 8086为 CPU的 PC机 )访问 1M字节存储空间的矛盾,也便于程序在内存中重定位。采用分段管理后,一个内存单元地址要用段基地址和偏移量两个逻辑地址来描述,表示为段基址:偏移量其段基址和偏移量的限定、物理地址的形成要视 CPU工作模式决定。
第 2章 微处理器的结构及存储器组成
2) 分页结构在 80486/Pentium保护模式中,存储器在逻辑上仍采用分段式结构。存储器最多可以由 16 384 (214)个段组成,每个段最大可达 4GB。从程序设计者角度看,整个存储空间可高达 64 GB,
每一段为相连地址空间单元。存储器分段有利于程序与数据间的隔离及任务之间的隔离和保护。
第 2章 微处理器的结构及存储器组成图 2-19 存储器映像系统内存区程序暂驻区扩展存储区
1 0 2 4 K B
(1 M B )
6 4 0 K B
8
第 2章 微处理器的结构及存储器组成
3.存储器映像一般情况下,存储器被划分为 3部分:程序暂驻区 (TPA)、
系统内存区和扩展存储区 (XMS),其映像见图 2-19。通常把最低端的 1 MB叫做常规内存,因为每个设计成实模式的程序都在这个区域里完成。
程序暂驻区长度为 640 KB,其中驻留操作系统的核心部分、
其他控制计算机的程序、当前激活或非激活的应用程序等,应用程序在执行时就存放在程序暂驻区。系统内存区长度为 384
KB,主要包括 BIOS ROM、显示 RAM、硬盘控制器 ROM等,
另外还有一块空闲内存,在 80386以上的机器中,可以利用 CPU
的换页功能,把 1 MB以上的内存映射到这块区域,使 DOS也可以使用这块空间。
第 2章 微处理器的结构及存储器组成基于 80286以上的计算机可以包含扩展存储区,使存储容量远远大于 1 MB,只有在保护模式下才可以访问扩展存储区。
这块区域的管理问题 DOS无法解决,它要靠其他的内存管理程序,如可以使用扩展内存管理程序 HIMEM.SYS。该程序应该通过 CONFIG.SYS中的 DEVICE命令说明,并在系统执行
CONFIG时被加载到内存,然后由它监控扩展内存的使用情况。
第 2章 微处理器的结构及存储器组成
2.2.2 存储器的组织
8086微处理器只能工作在实模式方式下,而 80486和 Pentium
微处理器可在实模式或保护模式两种方式下工作。
1,8086的存储器组织
8086有 20条地址引线,它的直接寻址能力为 220 B(即 1 MB)。
所以,在一个 8086组成的系统中,可以有多达 1 MB的存储器。
这 1 MB逻辑上可以组织成一个线性矩阵,地址从 00000到 FFFFF。
给定一个 20位的地址,就可以从这 1 MB中取出所需要的指令或操作数。但是,在 8086内部,这 20位地址是如何形成的呢?
第 2章 微处理器的结构及存储器组成如前所述,8086内部的 ALU能进行 16位运算,有关地址的寄存器如 SP,IP,以及 BP,SI,DI等也都是 16位的,因而 8086
对地址的运算也只能是 16位。这就是说,对于 8086来说,各种寻址方式,寻找操作数的范围最多只能是 64 KB。所以,整个 1
MB存储器以 64 KB为范围分为若干段。在寻址一个具体物理单元时,必须要由一个基地址再加上由 SP,IP,BP,SI或 DI等可由 CPU处理的 16位偏移量来形成实际的 20位物理地址。这个基地址就是由 8086中的段寄存器,即代码段寄存器 CS、堆栈段寄存器 SS、数据段寄存器 DS以及附加段寄存器 ES中的一个来形成的。在形成 20位物理地址时,段寄存器中的 16位数会自动左移 4
位,然后与 16位偏移量相加,如图 2-20所示。
第 2章 微处理器的结构及存储器组成逻辑地址段寄存器 0000
物理地址
15 0
19 0
偏移地址段地址加法器
15 0
图 2-20 8086物理地址的形成第 2章 微处理器的结构及存储器组成每次在需要产生一个 20位地址的时候,一个段寄存器会自动被选择,且能自动左移 4位再与一个 16位的地址偏移量相加,
以产生所需要的 20位物理地址。每当取指令的时候,选择代码段寄存器 CS,再加上由 IP所决定的 16位偏移量,计算得到要取指令的物理地址。每当涉及到一个堆栈操作时,选择堆栈段寄存器 SS,再加上由 SP所决定的 16位偏移量,计算得到堆栈操作所需要的 20位物理地址。每当涉及到一个操作数,选择数据段寄存器 DS或附加段寄存器 ES,再加上 16位偏移量,计算得到操作数的 20位物理地址。这里,16位偏移量是包含在指令中的直接地址,或者是某一个 16位地址寄存器的值,或者是指令中的位移量加上 16位地址寄存器中的值等等,这取决于指令的寻址方式。
第 2章 微处理器的结构及存储器组成
8086系统中,存储器的访问如图 2-21所示。
在不改变段寄存器值的情况下,寻址的最大范围是 64 KB,
所以,若有一个任务,它的程序长度、堆栈长度以及数据区长度都不超过 64 KB,则可在程序开始时,分别给 DS,SS,ES置值,然后在程序中就可以不再考虑这些段寄存器,程序就可以在各自的区域中正常地进行工作,若某一个任务所需的总的存储器长度(包括程序长度、堆栈长度和数据长度等)不超过 64
KB,则可在程序开始时使 CS,SS,DS相等,程序也能正常工作。
第 2章 微处理器的结构及存储器组成
6
4
K
B
CS
SS
DS
ES
偏移量码段堆栈段数据段附 加数据段图 2-21 8086的存储器结构第 2章 微处理器的结构及存储器组成上述存储器分段方法,对于要求在程序区、堆栈区和数据区之间隔离这种任务时是非常方便的。这种存储器分段方法,
对于一个程序中要用的数据区超过 64KB,或要求从两个(或多个)不同区域中去存取操作数,也是十分方便的。只要在取操作数以前,用指令给数据段寄存器重新赋值就可以了。
这种分段方法也适用于程序的再定位要求。通常情况下,要求同一个程序能在内存的不同区域中运行,而不改变程序本身,
这在 8086中是可行的。只要程序中的转移指令都使用相对转移指令,而在运行这个程序前设法改变各个段寄存器的值就可以了。如图 2-20所示,根据指令,BIU会自动完成所需要的访问存储器的次数。
第 2章 微处理器的结构及存储器组成
2,80486的存储器管理
1) 存储器管理部件存储器管理部件包括分段部件、分页部件和高速缓冲存储器 Cache。在 80486微处理器中设有 6个 16位段寄存器,用来实现对主存的分段管理。在实地址方式下,段寄存器用来存放段基址,其内容左移 4位与偏移地址相加,产生线性地址。在保护方式下,段寄存器用来存放选择符。分段部件通过段描述符把逻辑地址转换成 32位线性地址。为了保证数据安全,分段部件与分页部件结合,为存储器管理提供 4级保护。
第 2章 微处理器的结构及存储器组成分页部件是分段部件之后的又一级管理部件。如果分页禁止,则线性地址就是物理地址;如果允许分页,则由分页部件再将线性地址转换成物理地址。 80486中的分页部件也提供二级分页管理。通过分页管理可寻址 80486微处理器的全部 4 GB地址空间,通过分段分页管理可实现 64 TB虚拟存储器的映像管理。
第 2章 微处理器的结构及存储器组成片内 8 KB高速缓冲存储器 Cache采用 4路相连映像方式,用来存储待执行的程序和数据,即作为外部主存的副本。它通过
16字节宽的总线与指令预取部件连接,以缩短指令和数据的传送时间。它通过 64位数据线与整数部件、浮点运算器和分段部件连接并与外部采用成组传送方式,以提高数据传送的速度。
为了保持与主存的一致性,片内 Cache采用“写贯穿”方式进行写入操作。
第 2章 微处理器的结构及存储器组成
2) 执行部件执行部件包括指令预取部件、指令译码器、控制和保护部件、
整数部件以及浮点运算器。指令预取部件由内部 Cache取出指令或数据,送入指令队列排队,等候执行。指令队列有 32个字节。
只要队列空,指令预取部件就自动由 Cache中取指令或数据。如果不能命中,则从主存中取,同时填充 Cache存储器。指令译码器由指令队列获取指令代码,并对其译码,然后由微程序控制器
ROM中输出微代码序列,控制该指令的执行,同时进行保护检查。整数部件包括算术 /逻辑运算部件 ALU、桶形移位器和寄存器组。在 ALU中设有高速加法器,可实现高速算术 /逻辑运算、
数据传送等操作。浮点运算器 FPU可实现各种浮点数值运算、超越 /非超越函数运算等操作。
第 2章 微处理器的结构及存储器组成
3) 存储器管理
80486微处理器设有 32位地址线 (A31~ A2和 EB3~ EB0),外部物理存储器空间为 232 B= 4 GB,内部采用分段分页管理,可实现 64 TB虚拟存储器的映像管理,另外设有 8 KB片内 Cache存储器 。 在工作方式方面,除具有实地址方式和保护方式之外,另有一种平台管理方式 。
第 2章 微处理器的结构及存储器组成
(1) 实地址方式。 80486微处理器加电开机或复位时,初始化为实地址方式。在这种方式下,它与 8086具有相同的存储器空间和管理方式。最大寻址空间为 1 MB,物理地址等于段地址左移 4位与偏移地址相加所得的值。 80486是 32位微处理器,但在实地址方式下的默认值为 16位,为了能在实地址方式下访问
32位寄存器或者寻址 32位的存储器单元,编程时须使用指令前缀。
(2) 分段管理。在分段管理方式中,段寄存器用来存放选择符,且每个段寄存器对应一个隐含不可访问的段描述符寄存器。
选择符与描述符表的关系如图 2-22所示。
第 2章 微处理器的结构及存储器组成图 2-22 选择符与描述符表
TI R P L
段选择符 全局描述符表 局部描述符表选择符界限值基地址界限值基地址
TI = 0 TI = 1
全局描述符表寄存器 G D T R 局部描述符表寄存器 L D T R
第 2章 微处理器的结构及存储器组成在段选择符中,RPL表示特权级别,即 0~ 3级。 TI是选择位,
当 TI= 0时,选择全局描述符表;当 TI= 1时,选择局部描述符表。
高 13位是描述符表地址,选择 8 KB描述符表中的某一个描述符。
GDTR和 LDTR是系统地址寄存器,其中 GDTR称为全局描述符表寄存器,用来存放全局描述符表 GDT的 32位基地址和界限值;
LDTR称为局部描述符表寄存器,用来存放局部描述符表 LDT的
32位基地址和界限值。
在 80486微处理器中设有多种描述符,其中最常用的一种格式如图 2-23所示,可用作应用代码段描述符、数据段描述符或一些系统专用段描述符,其中包括 32位段基址,20位段界限值和一些属性标志位,主要作用可概括如下:
第 2章 微处理器的结构及存储器组成图 2-23 段描述符基地址 31 ~ 24
A
V
L
0DG
段界限 15 ~ 0
段界限
19 ~ 16
P D PL S T Y PE 基地址 23 ~ 16
段界限 15 ~ 0
07811121314151619202122232431
第 2章 微处理器的结构及存储器组成
G:粒位,用来说明段界限值,以字节为单位,还是以页 (4
KB)为单位。 G= 0,表示以字节为单位; G= 1,表示以页为单位。若 G= 0,20位段界限值所表示的最大范围为 1 MB(220 B);
若 G= 1,段界限位所表示的最大范围为 4 GB(220× 4 KB)。
S:用来表示一个给定段是一个系统段还是应用程序代码段或者数据段。 S= 0,表示是系统段; S= 1,表示是应用程序代码段或者数据段。
第 2章 微处理器的结构及存储器组成
D:只能用在程序代码段描述符中,用来表示代码段中缺省说明的操作数的长度和有效地址长度。 D= 1,表示使用的是 32位操作数和 32位有效地址; D= 0,表示使用的是 16位操作数和 16位寻址方式。
P:段存在位。若 P= 0,表示所要使用的段不存在;若 P=
1,表示所要使用的段存在。当一个段描述符的选择符装入段寄存器时,若段存在位被清 0,将产生一个段不存在异常事故。
第 2章 微处理器的结构及存储器组成
DPL:特权级标志位,用来定义段的特权级,用以实现段保护。
AVL:系统软件可使用位。
TYPE:类型位,表示描述符的类型,但在不同的描述符中有着不同的含义。对于代码段 /数据段来说,其含义如表 2-2所示。
其中,数据 /堆栈段 TYPE的低 3位表示为 E,W,A,代码段 TYPE
的低 3位表示为 C,R,A。 E表示向下扩展,W表示允许写,A表示存取操作,C表示相容,R表示允许读。对于系统段 /门描述符,
TYPE的含义如表 2-3所示。
第 2章 微处理器的结构及存储器组成表 2-2 代码段 /数据段 TYPE的定义
TYPE
(数据 /堆栈段) 说 明
TYPE
(代码段
) 说 明编号 E W A 编号 E W A
0 0 0 0 只读 8 0 0 0 只执行
1 0 0 1 只读,存取操作 9 0 0 1 只执行,存取操作
2 0 1 0 读 /写 A 0 1 0 执行 /读
3 0 1 1 读 /写,存取操作 B 0 1 1 执行 /读,存取操作
4 1 0 0 只读,向下扩展 C 1 0 0 只执行,相容
5 1 0 1 只读,向下扩展,存取操作 D 1 0 1 只执行,相容,存取操作
6 1 1 0 读 /写,向下扩展 E 1 1 0 执行 /只读,相容
7 1 1 1 读 /写,向下扩展,存取操作 F 1 1 1 执行 /只读,相容,存取操作第 2章 微处理器的结构及存储器组成表 2-3 系统段 /门描述符类型
TYPE 说 明 TYPE 说 明
0 保留 B 80486CPU任务状态段忙
2 局部描述符表 C 80486CPU调用门
8 保留 D 保留
9 80486CPU任务状态段有效 E 80486CPU中断门
A 保留 F 80486CPU自陷门第 2章 微处理器的结构及存储器组成段描述符表是由段描述符构成的一个阵列,可有多种类型,
如全局描述符表 GDT、局部描述符表 LDT、中断描述符表 IDT以及任务状态段 TSS等,分别由相应的系统地址寄存器指示其起始地址。其中最基本最常用的是全局描述符表 GDT和局部描述符表 LDT,如图 2-22所示,其中第 0单元没有使用。
分段部件的作用是将逻辑地址转换成线性地址。其过程如图 2-24所示。首先根据选择符从相应的段描述符表中取出段描述符,再将段描述符中给出的段基址与逻辑地址中的偏移量相加,
即可得到线性地址。如果分页禁止 (即不分页 ),那么线性地址就是所需要的物理地址。如果分页,再由分页部件将线性地址转换成物理地址。
第 2章 微处理器的结构及存储器组成图 2-24 段转换过程选择符
15 0
偏移量
31 0
段描述符页表目录 页表 偏移量
31 0
线性地址逻辑地址描述符表基地址第 2章 微处理器的结构及存储器组成
(3) 分页管理。分页管理中要涉及页表、页目录表和页转换,
涉及段页地址转换和转换旁视缓冲存储器 TLB。
页表、页目录表及页转换:在 80486微处理器中,将 4GB物理存储器空间按 4KB为一页,分为 1 048 576个页;通过内部寄存器和两级页表进行管理。从 0开始,每一组连续相邻的 1024个页为一个低级管理单位。每一页有一个起始地址 (低 12位全为 0),1024个地址集中排列存放,构成一个页表,其中每一项称为一个页表项。
每个页表项占 4个字节,整个页表占 4 KB空间,由 10位地址与之映像。在低级管理单位的上面是高级管理单位,对 1024个低级管理单位实施管理。每一个页表有一个起始地址 (低 12位全为 0),1024
个地址集中排列存放,构成页目录表,其中每一项称为一个页目录项。每个页目录项占 4个字节,整个页目录表占 4 KB空间,由 10
位地址与之映像。页目录表中存放的页表项的高 20位地址由控制寄存器 CR3提供,页表、页目录表及其转换过程如图 2-25所示。
第 2章 微处理器的结构及存储器组成图 2-25 页表、页目录表及其转换过程
31 22 21 12 11 0
页目录项
n
1
0
CR 3
页表项
…
…
页目录索引 页表索引 偏移量
…
…
页表 1
页表 n
物理页地址 偏移量
31 12 11 0
32 位物理地址
32 位线性地址页转换页目录表页表 0
第 2章 微处理器的结构及存储器组成页转换过程中,分段部件给出 32位线性地址。其中高 10位与 CR3中给出的页目录表的 20位基地址相加 (最低 2位为 0,共 32
位 ),指示某一页目录项。从中取出 20位地址作为页表基地址,
与线性地址中的中间 10位相加 (最低 2位为 0,共 32位 ),指示某一页表中的某一项。这个 20位地址再作为页基址 (也称为页框地址 ),与线性地址中的低 12位偏移量相加,产生指向某一存储单元的 32位物理地址。
第 2章 微处理器的结构及存储器组成由于页和页表的起始地址都是从低 12位全为 0的单元开始的,
因此在页表和页目录表中存放高 20位有效,低 12位可作为状态特征位或保护控制位。其中页表中的页表项格式如图 2-26所示。
各项含义如下:
P:存在位,表示页或页表是否在物理存储器中。 P= 1,
表示页或页表在物理存储器中,该项地址可用于地址转换; P=
0,与之相反。
R/W:读 /写位,表示可读或者可写,用于页保护。
第 2章 微处理器的结构及存储器组成
U/S:用户 /管理员程序位,表示用户或管理员程序可以使用,用于页保护。
PWT:写贯穿位,用于 Cache写控制。对于片外二级 Cache,
PWT置 1,选择写贯穿方式; PWT清 0,选择写回方式。片内
Cache采用写贯穿方式。
图 2-26 页表项格式
A
P
C
D
P
W
T
U
/
S
P页框地址 31 ~ 12 A V A I L 0 0 D
31 12 11 9 8 7 6 5 4 3 2 1 0
R
/
W
位 0:存在位;位 1:读 /写位;位 2:用户 /管理程序位;位 3:页透明写;位 4:
页 Cache控制;
位 5:被访问位;位 6:脏位;位 7:保留;位 8:保留;位 9~ 11:系统设计人员可用位第 2章 微处理器的结构及存储器组成
PCD:页 Cache禁止位,用于分页高速缓冲存储控制。若 PCD
置 1,内部 Cache禁止。
A:被访问位,表示对该页目录项或页表项涉及到的页面是否正在进行读 /写操作。当访问某一页时,该位置 1,并保持直到软件清 0。
D:脏位,也称为写标志位。当对某一页写入时该位置 1,
并保持直到软件清 0。
AVAIL:系统设计人员可用位。
第 2章 微处理器的结构及存储器组成图 2-27 段页地址转换选择符
15 0
偏 移 量
31 0
描述符表段描述符页目录索引 页表索引 偏移量操作数页框页表项页目录项
CR3
页目录 页表第 2章 微处理器的结构及存储器组成分段管理可实现由逻辑地址到线性地址的转换,分页管理中能实现由线性地址到物理地址的转换,二者结合起来即可实现由逻辑地址到物理地址的全部转换过程,如图 2-27所示。首先根据选择符在段描述符表中取段描述符,将其中的段基址与偏移量相加,求出线性地址。然后将线性地址按二级页表转换,取出页基地址 (页框 ),再与偏移量相加,即可求出物理地址。
在 80486微处理器的分页部件中,设有一个称为转换旁视缓冲存储器 TLB的高速缓冲存储器,用来存放最近经常使用的页表项。绝大多数分页转换都通过转换旁视缓冲存储器进行,从而提高页转换的速度。
第 2章 微处理器的结构及存储器组成
(4) 平台管理方式。这是 80486微处理器最简单的一种存储管理方式。它使所有段都映像到整个物理存储器空间上,而且段的偏移量既可以代码区为基准,又可以数据区为基准。从程序设计环境的角度来看,它支持分页管理,而不支持分段管理。
在平台管理方式下,也设有段描述符。一般程序中至少需要两个段描述符,一个用于访问代码段,另一个用于访问数据段。
所有段描述符的基地址值相同且为 0,段的界限值最大为 4 GB,
其示意如图 2-28所示。它相当于 CPU直接通过偏移量访问所有存储器空间。
第 2章 微处理器的结构及存储器组成图 2-28 平台存储管理方式代码段 CS
堆栈段 SS
数据段 DS
附加数据段 ES
段寄存器访问控制 界限值基地址访问控制 界限值基地址
E P R O M
D R A M
段描述符 物理存储器第 2章 微处理器的结构及存储器组成在保护方式下也可使用平台管理方式,而且与非保护方式下的平台管理方式基本相同。区别仅在于保护方式下的界限值只能是实际的存储器范围,因为分段部件能够检查对不存在的存储器单元的访问。若访问不存在的存储器空间,将产生保护异常事故。而在非保护方式下对这种越界不予理睬。
第 2章 微处理器的结构及存储器组成
2.2.3 实模式下物理地址的形成
8086微处理器只能工作在实模式下,80286以上的微处理器既可以工作在实模式下也可以工作在保护模式下。在实模式下微处理器只可以寻址最低的 1 MB,即使机器实际有 64 MB或更多的内存也是如此。无论是哪一种微处理器,每次机器冷启动或复位都隐含地以实模式开始工作。实模式下存储器的物理地址由段基址和偏移量给出。为了与 8086等 16位 CPU兼容,其段基址必须定位在地址为 16的整数倍上,这种段起始边界通常称做节或小段。
这样,1 MB空间的 20位地址的低 4位可以不表示出来,而高 16位就可以完全放入段寄存器了。同样由于 16位字长的原因,在实模式下段长不能超过 64 KB,但是对最小的段并没有限制,因此可以定义只包含 1个字节的段。段间位置可以相邻、分离和重叠。
第 2章 微处理器的结构及存储器组成存储器采用分段管理后其物理地址的计算方法为
10H× 段基址 +偏移量 (其中 H表示是十六进制数 )
段基址和偏移量一般用十六进制数表示,简便的计算方法是在段基址的最低位补以 0H,再加上偏移量。
第 2章 微处理器的结构及存储器组成例 2-2 某内存单元的地址用十六进制数表示为 1234∶ 5678,
其物理地址是多少?
1 2 3 4 0 (10H× 段基址 )
+ 5 6 7 8 (偏移量 )
1 7 9 B 8 (物理地址 )
则其物理地址为 179B8H,如图 2-29所示。
第 2章 微处理器的结构及存储器组成图
2-
29
物理地址的形成
1 2 3 4 5 6 7 8
1 2 3 4 0 H
5 6 7 8 H
1 7 9 B8 H
段 n
存储器
:
第 2章 微处理器的结构及存储器组成程序执行时,其当前段的段基址存放在相应的段寄存器中,
偏移量视访问内存的操作类型决定,可能放在寄存器中或通过操作数寻址方式得到。
例 2-3 若 (CS)=1234H,(DS)=2000H,(IP)=0010H,
(SS)=4000H,则下一条要执行指令的地址是多少?
10H× (CS)+(IP)=12340H+0010H=12350H
所以,下一条要执行指令的地址是 12350H。
可以用不同的段基址:偏移量表示同一个物理地址。例如可以用 1000∶ 1F00,11F0∶ 0000,1100∶ 0F00和 1080∶ 1700表示同一个物理地址,其物理地址都是 11F00H。
第 2章 微处理器的结构及存储器组成
2.2.4 保护模式下物理地址的形成目录 表 偏移量操作单元线性地址
31 22
10 10 12
12 0
31 0
页目录用户存储器
31 0
31 0
页表控制寄存器
C R 0
C R 1
C R 2
C R 3
图 2-30 80x86分页机制第 2章 微处理器的结构及存储器组成存储器分页机构由三部分组成:页目录、页表和页 (页面或页帧 )。存储器最大可能的 4GB的物理存储空间分成 1 MB且大小为 4 KB的页,页开始于 4 KB的边界,每页与一个页表项相对应,
在页表项中规定了此页的物理地址及特性。每 1024个页表项构成一个页表,并有一个目录项与之相对应,目录项规定了此页表的物理地址和一些特性。 1024个目录项构成一个目录,目录的基地址由控制寄存器 CR3提供。
第 2章 微处理器的结构及存储器组成在从线性地址转换成物理地址时,在由 CR3提供基地址的目录中,由线性地址的高 10位做索引,从 1024个目录项中选择一个目录项,此目录项中提供了对应的页表的物理地址,再用线性地址的次 10位作为此页表的索引,从 1024个页表项中选择一个页表项,此页表项中提供了对应页的物理地址,再用线性地址的最低 12位作为页内偏移量,选择要访问的存储器单元。
第 2章 微处理器的结构及存储器组成习 题 二
2.1 一台微机的字长为 16位,若采用字节编址,则它可以访问的最大存储空间是多少字节? 试用十六进制数表示该机的地址范围 。
2.2 写出下列存储器地址的段地址,偏移地址和物理地址 。
(1)?2314:0035 (2)?1FD0:000A
第 2章 微处理器的结构及存储器组成
2.3 下列操作可使用哪些寄存器。
(1) 加法和减法
(2) 循环计数
(3) 乘法和除法
(4) 保存段地址
(5) 表示运算结果的特征
(6) 将要执行的指令地址第 2章 微处理器的结构及存储器组成
2.4 若代码段寄存器 CS中的内容为 0C018H,则该代码段的第一个存储单元的地址、最后一个存储单元的地址各是多少?
若偏移地址为 0FE7FH,则其所对应的物理地址是多少?试用图画出这三个地址和 CS的内容。
2.5 叙述 80486和 Pentium CPU的组成部分,各部分的主要功能是什么?
2.6 Pentium微处理器采用了哪些新技术? 在性能上有什么改进?
2.7 在 Pentium微处理器中,哪些寄存器既可以作为 32位寄存器,也可以作为 16位或 8位寄存器使用?
第 2章 微处理器的结构及存储器组成
2.8 IP寄存器的作用是什么?
2.9 试举例说明 FLAGS/ EFLAGS寄存器的作用。
2.10 在实模式下,对于以下 CS∶ IP组合,计算每条指令的存储器地址。
(1) CS=1000H IP=2000H (2) CS=1234H IP=1000H
(3) CS=3000H IP=0120H (4) CS=3000H IP=1A00H
第 2章 微处理器的结构及存储器组成
2.11 试确定实模式下,下列寄存器组合所寻址的存储单元。
(1) DS=2000H EAX=00003100H
(2) ES=1000H DI=2100H
(3) DS=1000H ESI=0000A000H
(4) SS=8000H ESP=00009000H
2.12 试说明段加偏移存储器寻址方式有什么优点。
2.1 80x86和 Pentium微处理器的结构
2.2 存储器的组织第 2章 微处理器的结构及存储器组成
2.1 80x86和 Pentium微处理器的结构
2.1.1 80x86和 Pentium微处理器的结构
1,8086微处理器的结构
Intel8086(简称 8086)是在 Intel公司的 8位微处理器 8080与
8085的基础上发展起来的一种 16位微处理器。它的内部结构是
16位的,数据总线也是 16条;它能处理 16位数据 (具有 16位运算指令,包括乘法和除法指令 ),同时也能处理 8位数据;它能执行整套 8080/8085的指令,所以它在汇编语言上与 8080/8085是兼容的。
第 2章 微处理器的结构及存储器组成图 2-1 8086的功能结构存储器接口
ES
CS
SS
DS
IP
4
3
2
1
执行单元控制系统
AH AL
BH BL
CH CL
DH DL
SP
BP
SI
DI
标志
B I U
C - B U S
B - B U S
EU
A L U
A - B U S
指令流字节排队
Σ
第 2章 微处理器的结构及存储器组成
BIU负责与存储器接口,即 8086CPU与存储器之间的信息传送,都是由 BIU进行的。具体地说,BIU负责从内存的指定部分取出指令,送至指令流队列中排队,在执行指令时所需的操作数,也由 BIU从内存的指定区域取出,传送给 EU部分去执行。
EU部分负责指令的执行,取指部分与执行指令部分是分开的,于是在一条指令的执行过程中,就可以取出下一条 (或多条 )
指令,在指令流队列中排队。在一条指令执行完以后就可以立即执行下一条指令,减少了 CPU为取指令而等待的时间,提高了 CPU的利用率和执行速度,降低了与之相配的存储器对采样速度的要求。
第 2章 微处理器的结构及存储器组成图 2-2 8086的执行方式取指 取指 取指 取指 取指 得到数据 取指等待 执行 执行 执行 执行
B I U
EU
…
…
第 2章 微处理器的结构及存储器组成在 8080与 8085以及标准的 8位微处理器中,程序的执行是由取指和执行指令的循环来完成的,执行的顺序为取第一条指令,执行第一条指令;取第二条指令,执行第二条指令; …… ;
直至取最后一条指令,执行最后一条指令。这样,在每一条指令执行完以后,CPU必须等待,直到下一条指令取出来以后才能执行。所以,它的工作顺序如图 2-3所示。
取指 执行 取指 执行 取指 执行 …
时间图 2-3 一般 8位机的执行方式第 2章 微处理器的结构及存储器组成
2,80486微处理器的结构
80486是一种高性能全 32位的微处理器。它把构成 80386微机系统的主处理器、数值协处理器和一个具有 8 KB的 Cache存储器集成在一块集成电路芯片中。沿用了指令流水线技术,采用 RISC思想设计,使用静态高速 RAM作为程序和数据共用的
Cache,提高了存储器的读 /写速度,浮点运算部件 FPU集成在片内,提高了浮点运算的速度和能力,它支持多任务处理。
第 2章 微处理器的结构及存储器组成
80486微处理器的基本组成如图 2-4所示,包括总线接口部件、指令预取部件、指令译码部件、控制和保护部件、算术与逻辑运算部件、浮点运算部件 FPU、分段部件、分页部件和 8
KB的 Cache部件。这些部件可以独立工作,也能与其他部件一起并行工作。在取指令和执行指令时,每个部件完成一项任务或某一操作步骤,这样既可同时对不同的指令进行操作,又可对同一指令的不同部分并行处理,即采用流水线工作方式。
第 2章 微处理器的结构及存储器组成
80486微处理器的特点有:
(1) 浮点运算器 FPU,8 KB程序与数据共用 Cache和主 CPU
集成在同一芯片中,减少了外部数据传送环节,提高了浮点运算及数据处理的能力、速度和可靠性。
(2) 把分段部件和分页部件有机地结合在一起,建立起完整的存储器管理与保护机构,为存储器管理提供 4级保护,对指令的执行进行测试与监督,保证指令的正确执行。
(3) 采用 RISC思想设计,使 80486既带有 CISC类微处理器的特点,又具有 RISC类微处理器的特色,与以往的 CISC(80x86)微处理器兼容。
第 2章 微处理器的结构及存储器组成
(4) 在总线接口部件中设有成组控制和 Cache控制部件,支持 CPU在成组传送周期几乎以每个时钟周期传送一个字 (2个字节 )的速度连续从主存或外部 Cache存储器中选取指令和数据,
送入内部 Cache存储器。另外还设有总线大小控制部件,控制传送数据的宽度,同时提供数据传送时的奇偶控制。为了使宽总线达到最佳使用效果,在系统总线接口部件中配有写缓冲存储器。
第 2章 微处理器的结构及存储器组成
(5) 由预取部件负责从内部 Cache中取指令或数据。如果指令或数据不在内部 Cache中,则从主存中读取,同时填入内部
Cache。预取部件的数据通路为 16字节 (128位 ),使指令码和数据传送速度加快。预取指令队列为 32字节,可存放更多的指令代码或数据,从而有效地加快了指令执行的速度。许多指令 (如寄存器之间的数据传送、加减运算等 )可在一个时钟周期内完成。
第 2章 微处理器的结构及存储器组成图 2-4 80486结构逻辑图
32 位基址 / 变址总线桶形移位器寄存器组
A L U
分段部件描述符寄存器界限和属性
P L A
分页部件
TLB
C a c h e 部件
8 K B 一体的 C a c h e
总线大小控制奇偶控制和产生地址驱动器写缓存 ( 4 )
数据总线收发器总线控制请求序列发 生 器成组控制
C a c h e 控制预取部件
32 字节代码队列
EP 寄存器组
F P U
控制 R O M
控 制 和保护部件指令译码
20 位物理地址页属性
32 位系统地址
32 位写数据系统接口已译码的指令
24 位代码流整数部件
32 位读数据
64 位部件传送总线微指令总线
32 位位移总线
32 位线性地址总线
32 位数据总线
32 位数据总线第 2章 微处理器的结构及存储器组成
(6) 在内部 Cache和浮点运算器 FPU之间的内部通路采用 64位
(两个 32位 )数据线,使浮点数据的传送及运算速度加快。
(7) Cache采用“写贯穿” (Write Through)方式,使写入数据不仅写入 Cache存储器,同时还要写入主存储器,保证了 Cache
与主存数据的一致性。
(8) 采用单倍频时钟,简化了时钟电路,提高了 CPU的速度。
(9) 除了内部 Cache和 FPU外,支持配置外部 Cache和数值协处理器 FPU,使系统的性能进一步提高。
第 2章 微处理器的结构及存储器组成
(10) 在指令系统方面保持与 80386兼容。除了包含 80387的浮点运算指令外,还增加了 6条新指令,即字节交换指令
BSWAP、交换并相加指令 XADD、比较并交换指令 CMPXCH和
Cache指令 INVD,WBINVD,INVLPG。其中前 3条可在系统软件和应用软件中使用,增强数据运算与处理能力;后 3条只能在系统软件中使用,增强对内部 Cache和 TLB的管理。
第 2章 微处理器的结构及存储器组成
3,Pentium微处理器的结构图 2-5 Pentium体系结构示意图指令 Cach e
整数单元分支预测预取指令缓冲器整数单元寄 存 器 组数据 Cach e
6 4 b 总线接口流水线结构的浮点单元
MU L
ADD
D IV
3 2 b
3 2 b 3 2 b
6 4 b
6 4 b
6 4 b
2 5 6 b
U V
第 2章 微处理器的结构及存储器组成
1) 超标量流水线超标量流水线 (Super Scalar)设计是 Pentium处理器技术的核心。
它由 U和 V两条指令流水线构成,如图 2-6所示。每条流水线都拥有自己的 ALU(算术逻辑单元 )、地址生成电路和与数据 Cache的接口。这种流水线结构允许 Pentium在单个时钟周期内执行两条整数指令,比相同频率的 486DX的 CPU性能提高了一倍。
Pentium双流水线中的每一条流水线分为 5个步骤,即指令预取、指令解码、地址生成、指令执行、回写。当一条指令走过预取步骤,流水线就可以开始对另一条指令进行操作。
第 2章 微处理器的结构及存储器组成图 2-6 Pentium超标量流水线结构
U
-
流水线
V
-
流水线
U 或 V 流水线第 2章 微处理器的结构及存储器组成
Pentium是双流水线结构,可以一次执行两条指令,每条流水线执行一个。这个过程称为“指令并行”。在这种情况下,
要求指令必须是简单指令,且 V-流水线总是接受 U-流水线的下一条指令。例如,在下述 4条指令中
MOV AX,5
INC BX
MOV AX,5
INC AX
前两条指令可以并行工作,而后两条指令则不行,它会产生结果的冲突,因为后两条指令都在对同一个寄存器 AX进行操作。因而,Pentium的有效使用还必须借助于有适用的编译工具,
能产生尽量不冲突的指令序列。
第 2章 微处理器的结构及存储器组成
2) 独立的指令 Cache和数据 Cache
80486片内有 8 KB Cache,而 Pentium则为两个 8 KB,一个作为指令 Cache,另一个作为数据 Cache,即双路 Cache结构,如图
2-7所示。
图 2-7 Pentium双路 Cache结构
8 K B 指令
C a c h e
TLB
8 K B 数据
C a c h e
TLB
取指令 U - 流水线数据 V - 流水线数据
3 2 b 线宽无回写
3 2 b 线宽有回写第 2章 微处理器的结构及存储器组成图中 TLB的作用是将线性地址翻译成物理地址。指令 Cache
和数据 Cache采用 32× 8的线宽 (80486DX为 16× 8线宽 ),是对
Pentium 64 b总线的有力支持。
Pentium的数据 Cache有两个接口,分别通向 U和 V两条流水线,以便能在相同时刻向两个独立工作的流水线进行数据交换。
当向已被占满的数据 Cache写数据时,将移走一部分当前使用频率最低的数据,并同时将其写回主存,这个技术称为 Cache回写技术。由于处理器向 Cache写数据和将 Cache释放的数据写回主存是同时进行的,所以,采用 Cache回写技术可大大节省处理时间。
第 2章 微处理器的结构及存储器组成指令和数据分别使用不同的 Cache,使 Pentium的性能大大提高。例如,流水线的第一个步骤为指令预取,在这一步中,
指令从指令 Cache中取出来,如果指令和数据合用一个 Cache,
指令预取和数据操作之间很有可能发生冲突。提供两个独立的
Cache则可避免这种冲突并允许两个操作的并发执行。
第 2章 微处理器的结构及存储器组成
3) 浮点操作
Pentium的浮点单元流水分为 8级,浮点操作的执行过程分为
8级流水,使每个时钟周期能完成一个浮点操作,甚至在一个时钟周期内能完成两个浮点操作。
浮点单元流水线的前 4个步骤同整数流水线相同,后 4个步骤的前两步为二级浮点操作,后两步为四舍五入及写结果和出错报告。 Pentium的 FPU对一些常用指令如 ADD,MUL和 LOAD
等采用了新的算法,同时,用电路进行了固化,用硬件来实现,
提高了速度。
第 2章 微处理器的结构及存储器组成
4) 分支预测循环操作在软件设计中使用十分普遍,而每次循环中循环条件的判断占用了大量的 CPU时间。为此,Pentium提供一个称为分支目标缓冲器 BTB(Branch Target Buffer)的小 Cache来动态地预测程序分支。当一条指令导致程序分支时,BTB记住这条指令和分支目标的地址,并用这些信息预测这条指令再次产生分支时的路径,预先从此处预取,保证流水线的指令预取步骤不会空置。 BTB机制如图 2-8所示。
当 BTB判断正确时,分支程序即刻得到解码。从循环程序来看,在进入循环和退出循环时,BTB会发生判断错误,需重新计算分支地址。
第 2章 微处理器的结构及存储器组成在 Pentium中,常用指令如 MOV,INC,DEC,PUSH、
POP,JMP,CALL(near),NOP,SHIFT,NOT和 TEST等改用硬件实现,不再使用微码操作,使指令的运行得到进一步加快。
而其他的微码指令由于运行于双流水线上,速度也得到了提高。
第 2章 微处理器的结构及存储器组成指令 C a c h e
指令预取指令解码B T B
图 2-8 Pentium的 BTB机制第 2章 微处理器的结构及存储器组成
2.1.2 80x86和 Pentium微处理器的寄存器结构
1,8086微处理器的寄存器结构
8086的寄存器结构如图 2-9所示。它能处理 16位数,AX、
BX,CX和 DX这 4个寄存器均是 16位的数据寄存器,用以暂存 16
位的操作数。其中 AX为累加器,其他 3个 16位寄存器用以存放操作数,通常的用途如表 2-1所示。
第 2章 微处理器的结构及存储器组成
AH AL
BH BL
CH CL
DH DL
SP
AX
BX
CX
DX
BP
SI
DI
IP
FL A G
H
FL A G
L
CS
DS
SS
ES
(SP)
(PC)
(PSW )
累加器基 数计 数数 据堆栈指针基数指针源变址目的变址指令指针状态标志代码分段数据分段堆栈分段附加分段控制寄存器段寄存器数 据寄存器指 针寄存器变 址寄存器通 用寄存器
O D I T S Z A P C
15 8 7 0
( a )
( b )
(A )
(H L )
(BC)
(D E )
图
2-
9
80
86
的寄存器结构第 2章 微处理器的结构及存储器组成表 2-1 8086通用寄存器的用法寄存器 通常用途
AX 字乘法,字除法,字 I/O
AL 字节乘法,字节除法,字节 I/O,转移,十进制算术运算
AH 字节乘法,字节除法
BX 转移
CX 串操作,循环次数
CL 变量移位或循环
DX 字乘法,字除法,间接 I/O
第 2章 微处理器的结构及存储器组成
8086也能处理 8位数。图 2-9中的 4个 16位数据寄存器也可作为
8个 8位寄存器使用。
8086中有 4个 16位的段寄存器,即 CS(Code Segment Register)、
DS(Data Segment Register),SS(Stack Segment Register),ES(Extra
Segment Register),使 8086能在 1 MB的范围内对内存进行寻址。
8086中的堆栈指针 SP(Stack Pointer)用于确定在堆栈操作时,堆栈在内存中的位置。但在 8086中 SP还必须与 SS(堆栈段寄存器 )一起才能确定堆栈的实际位置。
第 2章 微处理器的结构及存储器组成在 8086中有 3个 16位寄存器,BP(Base Pointer Register)、
SI(Source Index Register)和 DI(Destination Index Register),寻址方式较多,寻找操作数灵活、方便。
8086中的指令指针 IP(Instruction Pointer)是指向下一次要取出的指令,与 CS寄存器相配合才能形成真正的物理地址。
8086有一个状态标志寄存器,如图 2-9(b)所示。
第 2章 微处理器的结构及存储器组成
2,80x86和 Pentium微处理器的寄存器结构
80x86和 Pentium微处理器的寄存器可以分为基本体系结构寄存器、系统级寄存器和调试与测试寄存器 3类。其中基本体系结构寄存器和浮点寄存器应用程序可以直接访问,一般称作程序可见寄存器。其他寄存器在应用程序设计期间不能直接寻址,
只有特权级为 0级的程序才可以使用它们,一般称为程序不可见寄存器。
80486和 Pentium微处理器中包含的寄存器有 8种:通用寄存器,段寄存器,指令指针寄存器,状态标志寄存器,控制寄存器,系统地址寄存器,调试与测试寄存器和浮点寄存器。
第 2章 微处理器的结构及存储器组成
1) 通用寄存器通用寄存器共有 8个,如图 2-10所示。其中 EAX,EBX、
ECX和 EDX可作为 8位,16位或 32位寄存器使用,ESI,EDI、
EBP,ESP可作为 16位或 32位寄存器使用,作用如下:
EAX:常用作累加器;
EBX:常用作基址寄存器;
ECX:常用作计数器;
EDX:常用作数据寄存器;
ESI:常用作源变址寄存器;
EDI:常用作目的变址寄存器;
EBP:常用作基址寄存器;
ESP:常用作堆栈指针寄存器。
第 2章 微处理器的结构及存储器组成图 2-10 80486通用寄存器
SI
AH
BH
CH
DH
A
B
C
D
X
X
X
X
AL
BL
CL
DL
DI
BP
SP
EAX
E BX
E CX
EDX
E S I
EDI
E BP
E S P
31 16 15 8 7 0
第 2章 微处理器的结构及存储器组成
2) 段寄存器段寄存器有 6个,每个 16位,其中 CS,DS,SS分别作为指令代码段、数据段和堆栈段寄存器,ES,FS和 GS作为附加数据段寄存器。在实地址方式和虚拟 8086方式下分别存放相应段的基地址;在保护方式下作为选择器,存放相应的选择符,如图
2-11所示。每个段寄存器对应一个隐含不可访问的段描述符寄存器,存放由选择符寻址的描述符。选择符的高 13位是段描述符表的地址 (简称选择码 ),低 3位表示段描述符的类型和特权标志。段选择符与段描述符寄存器如图 2-12所示。
第 2章 微处理器的结构及存储器组成图 2-11 80486段寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器附加段寄存器附加段寄存器第 2章 微处理器的结构及存储器组成图 2-12 段寄存器与段描述符高速缓冲寄存器选择符选择符选择符选择符选择符选择符段寄存器
CS
SS
DS
ES
FS
GS
物理基地址 段界限 段说明符段描述符高速缓冲寄存器第 2章 微处理器的结构及存储器组成
3) 指令指针寄存器指令指针寄存器是一个 32位的寄存器,如图 2-13所示,用来存放当前代码段中下一条要执行指令的偏移量 (或称偏移地址 )。在实地址方式和虚拟 8086方式下,作为 16位指针寄存器使用;在保护方式下,作为 32位指针寄存器使用。
IP
31 16 15 0
图 2-13 80486指令指针寄存器第 2章 微处理器的结构及存储器组成
4) 状态标志寄存器状态标志寄存器是一个 32位的寄存器,实际使用了 15位,
用来存放微处理器的状态标志和控制标志。其中部分标志供系统使用,因此也称为系统标志。各位的符号如图 2-14所示。
第 2章 微处理器的结构及存储器组成图 2-14 80486状态标志寄存器第 2章 微处理器的结构及存储器组成
FLAGS是 16位标志寄存器,由 EFLAGS中的 D15~ D0组成,
其中包含了两种标志:状态标志 (S)、控制标志 (C)。 SF,ZF、
PF,CF,AF和 OF组成了状态标志,控制标志由 DF,IF和 TF构成。 EFLAGS是 32位标志寄存器,其中包含了 3种标志:状态标志 (S)、控制标志 (C)和系统标志 (X)。状态标志报告算术 /逻辑运算指令执行后的状态;控制标志仅含一个标志 DF,用于控制串操作指令的地址改变方向;系统标志用于控制 I/O、屏蔽中断、
调试、任务转换和控制保护方式与虚拟 8086方式间的转换。
第 2章 微处理器的结构及存储器组成图 2-14给出了 EFLAGS各位的标志名,共定义了 15位 14种标志。其中 CF,PF,AF,ZF,SF,TF,IF,DF,OF属于 8086的标志位; LF,RF是 80286新增的标志位; VM是 80386新增的;
AC则是 80486新增的。各个标志位的功能分述如下:
(1) 辅助进位标志 AF(Auxitiary Carry Flag)。在字节操作时,
由低半字节 (一个字节的低 4位 )向高半字节 (一个字节的高 4位 )进位或借位;在字操作时,低位字节向高位字节有进位或借位,
则 AF=1,否则为 0。这个标志用于十进制算术运算指令中。
第 2章 微处理器的结构及存储器组成
(2) 进位标志 CF(Carry Flag)。当结果的最高位 (字节操作时的
D7或字操作时的 D15)产生一个进位或借位,则 CF=1,否则 CF=0。
这个标志主要用于多字节数的加、减法运算。移位和循环移位指令也能够把存储器或寄存器中的最高位 (左移时 )或最低位 (右移时 )
放入标志 CF中。
(3) 溢出标志 OF(Overflow Flag)。在算术运算中,带符号数的运算结果超出了 8位或 16位 (带符号数能表达的范围 ),即在字节运算时结果大于 +127或结果小于 -128,在字运算时结果大于
32 767或结果小于 -32 768,此标志置位。
第 2章 微处理器的结构及存储器组成溢出和进位是两个不同性质的标志,千万不能混淆了 。 例如,
在字节运算中
MOV AL,64H
ADD AL,64H
即 01100100
+ 01100100
11001000
D7位向前无进位,故运算后 CF=0;但运算结果超过了 +127,
此时,溢出标志 OF=1。 又例如,在字节运算中
MOV AL,0ABH
ADD AL,0FFH
即 10101011 (-85)
+ 11111111 (-1)
1 10101010
第 2章 微处理器的结构及存储器组成
D7位向前有进位,故运算后 CF=1;但运算的结果又不小于 -
128,此时,溢出标志 OF=0。 在字运算中
MOV AX,0064H
ADD AX,0064H
即
00000000 01100100
+ 00000000 01100100
00000000 11001000
D15位未产生进位,故 CF=0;运算结果未超过?+32?767,故
OF=0。
第 2章 微处理器的结构及存储器组成但若有 MOV AX,6400H
ADD AX,6400H
即
01100100 00000000
+ 01100100 00000000
11001000 00000000
第 2章 微处理器的结构及存储器组成
D15位未产生进位,故 CF=0,但运算结果超过了 +32?767,
故 OF=1。 又例如:
MOV AX,0AB00H
ADD AX,0FFFFH
即:
10101011 00000000
+ 11111111 11111111
110101010 11111111
D15位产生进位,故 CF=1,但运算结果不小于?-32 768,故
OF=0。
第 2章 微处理器的结构及存储器组成
(4) 符号标志 SF(Sign Flag)。 它的值与运算结果的最高位相同 。
即结果的最高位 (字节操作时为 D7,字操作时为 D15)为 1,则 SF=1;
否则 SF= 0。 由于在 80X86中符号数是用补码表示的,所以 SF表示了结果的符号,SF=0为正,SF=1为负 。
(5) 奇偶标志 PF(Parity F1ag)。 若操作结果中,1”的个数为偶数,则 PF=1,否则 PF=0。 这个标志可用于检查在数据传送过程中是否发生错误 。
(6) 零标志 ZF(Zero Flag)。 若运算的结果为 0,则 ZF=1,否则
ZF=0。 80x86还提供了三个控制标志,它们能由程序来置位和复位,以变更对处理器的操作 。
第 2章 微处理器的结构及存储器组成
(7) 方向标志 DF(Direction Flag)。 若用指令置 OF=1,则引起串操作指令为自动减量指令,也就是从高地址到低地址处理字符串;
若使 OF=0,则串操作指令就为自动增量指令,也就是从低地址到高地址处理字符串 。
(8) 中断允许标志 IF(Interrupt-enable Flag)。 若指令中置 IF=1,
则允许 CPU去接收外部的可屏蔽中断请求;若使 IF=0,则屏蔽上述的中断请求,对内部产生的中断不起作用 。
(9) 追踪标志 TF(Trap Flag)。置 TF标志,使处理进入单步方式,以便于调试。在这个方式中,CPU在每条指令执行以后,产生一个内部中断,允许程序在每条指令执行以后进行检查。
第 2章 微处理器的结构及存储器组成
(10) 特权级标志 IOPL是状态标志寄存器中的 D13和 D12位 。
其表示 0~ 3级的 4个 I/O特权级,用于保护方式 。 只有当任务的现行特权级高于或等于 IOPL时 (0级最高,3级最低 ),执行 I/O指令才能保证不产生异常 。
(11) 任务嵌套标志 NT是状态标志寄存器中的 D14 位 。
80486/80386/80286的中断和 CALL指令可以引起任务转换 。 NT
= 1表示引起了任务转换,当前任务嵌套在另一任务内,这样,
在执行 IRET指令时,便返回父任务; NT=0表示没引起任务转换,
执行 IRET时是进行同任务内的返回,而不发生任务转换 。 该标志位用来控制被中断的链和被调用的任务 。
第 2章 微处理器的结构及存储器组成
(12) 恢复标志 RF是状态标志寄存器中的 D16位 。 该标志与调试寄存器的代码断点结合使用,以保证不重复处理断点 。 RF= 1
时,即使遇到断点或调试故障也不产生异常中断 。 在成功地执行每条指令后,RF将自动复位 。 80486在响应,断点异常,(中断 )时,先将 RF位置 1,然后将 EFLAGS压栈;在断点处理程序结束处,IRET指令将弹出具有 RF= 1的 EFLAGS,恢复程序在断点位置的执行,从而保证了代码在断点只执行一次 。
(13) 虚拟 8086模式标志 VM是状态标志寄存器中的 D17位。
VM= 1表示工作在虚拟 8086方式。该位只能以两种方式来设置,
在保护方式下,由最高特权级 (0级 )的代码段的 IRET指令来设置,
或者由任务转换来设置。
第 2章 微处理器的结构及存储器组成
(14) 对准检查标志 AC是状态标志寄存器中的 D18位 。 该位仅对 80486有效 。 AC= 1且 CR0的 AM位也为 1,则进行字,双字或四字的对准检查 。 若处理器发现在访问内存时操作数未按边界对准 (所谓对准,是指访问字操作数时从偶地址开始,访问双字数据时从 4的整数倍地址开始,访问 4字数据时从 8的整数倍地址开始 ),则发生异常 。 对 80386,AC位恒为 0,不进行对准检查 。
EFLAGS的低 16位含有 80286的全部标志,称为 FLAGS标志寄存器。它对于执行 8086/80286的代码是很有用的。
第 2章 微处理器的结构及存储器组成
5) 控制寄存器控制寄存器为 CR0~ CR3共有 4个,各 32位,用来存放全局性与任务无关的机器状态,其标志符号如图 2-15所示。与 80386
相比,80486的 CR0增加了 NE,WP,AM,NW和 CD,CR3增加了 PWT和 PCD。
第 2章 微处理器的结构及存储器组成图 2-15 80486控制寄存器
P
G
C
D
N
W
A
M
W
P
N
E
E
T
T
S
E
M
M
P
P
E
01234515 12 11161718293031
保 留页故障线性地址寄存器
P
C
D
P
W
T
保 留页目录基址寄存器
CR0
CR1
CR2
CR3
第 2章 微处理器的结构及存储器组成
(1) CR0用来存放系统控制标志或表示处理器的状态,定义了
11位,其功能是:
PE:保护方式允许位 。 置 1,进入保护方式;清 0,进入实地址方式 。
MP:监控协处理器位 。 置 1,表示有协处理器 。 若在 80486系统中运行 80286或 80386程序,该位置 1;若运行 80486程序,该位清 0。
EM:模拟协处理器位 。 该位为 1,表示软件模拟协处理器,
这时若使用协处理器指令将产生协处理器无效异常中断;该位为
0,允许协处理器指令使用实际的协处理器 。 在运行 80286或
80386程序时,该位置 1;在 80486SX系统中该位也必须置 1。
第 2章 微处理器的结构及存储器组成
TS:任务切换位。每次任务转换,该位置 1。在解释浮点算术运算指令时,对该位进行测试。清除任务切换标志指令 CLTS
可将该位清 0。
ET:处理器扩展类型标志。该位置 1,表示配置 80387;否则表示未配置。
NE:数值异常事故位。该位用来控制浮点运算中未被屏蔽的异常故障。该位置 1,允许报告浮点数值错;该位清 0且
IGNNE输入有效,则不予以报告。当 NE清 0且 IGNNE输入无效时,数值错将会使处理器停止运行,并等待一次中断。
第 2章 微处理器的结构及存储器组成
WP:写保护位。该位用来净化 80486的页写保护机构,即保护用户级的那些页。该位置 1,禁止管理级的写操作写入用户级的页上;该位清 0,管理级可向用户级的页进行写入。
AM:对准屏蔽位。该位与状态标志 AC配合使用,控制对数据的对准校验。该位置 1且 AC也置 1时,对用户级 (CPL= 3)访问的存储器单元进行对准校验,即边界检查,否则不校验。
第 2章 微处理器的结构及存储器组成
NW:不透明写位。该位也称为不是写贯穿,用来控制
Cache操作。该位清 0,所有命中 Cache的写操作将按写贯穿方式写入 Cache,同时写入主存;该位置 1且 CD位也置 1,只写入
Cache存储器,而不写入主存。
CD:允许 Cache位。该位用来控制是否使用片内 Cache。该位清 0,允许使用内部 Cache,这时若不命中,可对片内 Cache存储器填充写入;该位置 1,又不命中 Cache时不能对 Cache填充写入。若访问 Cache命中,则 Cache正常运行;若要彻底禁止 Cache,
可用专门的指令 INVD或 WBINVD对片内 Cache刷新。刷新就是使片内 Cache中的所有数据无效即清 0。
PG:允许分页位。该位置 1,允许分页;该位清 0,禁止分页。
第 2章 微处理器的结构及存储器组成
(2) CR1未用。
(3) CR2为页故障线性地址寄存器,用来保存最后出现页故障的 32位线性地址。只有当 CR0中的 PG位为 1时,CR2才有意义。
(4) CR3为页目录基址寄存器。其中高 20位存放页目录表的物理基地址。在低 12位中用 2位作为标志位,其余 10位未用。
标志位的作用是:
第 2章 微处理器的结构及存储器组成
PCD:禁止页高速缓冲位。该位置 1,不对页进行高速缓冲操作。在不分页情况下的总线周期,该信号由 PCD引脚输出,
控制外部二级 Cache的高速缓冲操作。
PWT:写贯穿位。在 80486内部 Cache中使用的是“写贯穿”
方式,而外部二级 Cache有的使用“写贯穿”方式,有的既可使用“写贯穿”方式又可使用“写回”方式。 PWT= 1,使片外二级 Cache采用“写贯穿”方式,否则采用“写回”方式。
“写贯穿”就是向 Cache写入数据的同时,也写入到主存中;
“写回”是只有当 Cache中的某一存储块被刷新时,才把这一存储块写回到主存中去。
第 2章 微处理器的结构及存储器组成
6) 系统地址寄存器在 80486微处理器中设置了 4个系统地址寄存器,如图 2-16所示。其作用也与 80386基本相同,用来在保护方式下管理 4个系统表,即引用 80486在保护方式下所需要的段表信息。由于只能在保护方式下使用,因此又称为保护方式寄存器。
第 2章 微处理器的结构及存储器组成图 2-16 80486系统地址寄存器
32 位线性基地址47 16 15 界限值 0
G D T R
I D T R
15 16 位选择符 0
选择器
32 位线性基地址 界限值 属性说明符描述符高速缓冲寄存器 ( 自动装入 )
TR
L D T R
第 2章 微处理器的结构及存储器组成
(1) 全局描述符表寄存器 GDTR,一个 48位寄存器,用来存放全局描述符表 GDT的 32位线性基地址和 16位的界限值,在全局描述符表中不仅包括有操作系统使用的描述符,而且还有所有任务使用的公用描述符。
(2) 中断描述符表寄存器 IDTR,一个 48位寄存器,用来存放中断描述符表 IDT的 32位线性基地址和 16位的界限值。
第 2章 微处理器的结构及存储器组成
(3) 局部描述符表寄存器 LDTR,一个 16位寄存器,用来存放局部描述符表 LDT的 16位选择符。另外还有一个隐含的描述符高速缓冲寄存器,用来存放 LDT表描述符。
(4) 任务状态寄存器 TR,一个 16位寄存器,用来存放任务状态段 TSS的 16位选择符。与之相应,也有一个隐含的描述符高速缓冲寄存器,用来存放任务状态段 TSS的描述符。
第 2章 微处理器的结构及存储器组成
7) 调试与测试寄存器
(1) 调试寄存器。该类寄存器有 8个,各 32位,如图 2-17(a)所示,表示为 DR0~ DR7。其中 DR0~ DR3用作线性断点地址寄存器,可保存 4个断点地址,DR6用作断点状态寄存器,用来设置若干个状态标志,其中低 4位分别表示 4个断点处的调试状态。
若进入调试状态,由硬件置 1;退出调试状态时应由软件清 0。
另外还有 3位,即 BT,BS和 BD,其中 BT是与任务状态段中调试自陷位 T相关的状态标志位,BS是与状态标志寄存器中的自陷标志 TF相关的状态标志位,BD是当内部电路仿真使用的下一条指令对 8个调试寄存器中的任一个进行读 /写时,置 1。 DR7是断点控制寄存器,用来设置控制标志、控制断点的设置、设置条件、
断点地址的有效范围以及是否进入异常中断等。 DR4~ DR5为
Intel公司保留。
第 2章 微处理器的结构及存储器组成图 2-17 调试与测试寄存器
(a) 调试寄存器; (b) 调试与测试寄存器线性断点地址 0
线性断点地址 1
线性断点地址 2
线性断点地址 3
In t el 保留
In t el 保留断点状态断点控制
031
D R 0
D R 1
D R 2
D R 3
D R 4
D R 5
D R 6
D R 7
C a ch e 测试控制
031
C a ch e 测试数据
C a ch e 测试状态
T L B 测试控制
T L B 测试状态
T R 3
T R 4
T R 5
T R 6
T R 7
( a ) ( b )
第 2章 微处理器的结构及存储器组成
(2) 测试寄存器。该类寄存器有 4个,各 32位,如图 2-17(b)
所示,表示为 TR3~ TR7。其中 TR3~ TR5用于片内 Cache测试。
TR6~ TR7用来控制分页部件中的转换旁视缓冲存储器 TLB的工作。 TR6作为测试命令寄存器,用来存放测试控制命令,TR7作为数据寄存器,用来存放转换旁视缓冲存储器测试的数据。
第 2章 微处理器的结构及存储器组成
8) 浮点寄存器
80486微处理器内部的浮点运算器是用于浮点运算的,其内部设有相应的寄存器,包括 8个 80位通用数据寄存器,一个 48位指令指针寄存器、一个 48位数据指针寄存器,一个 16位控制字寄存器,一个 16位状态字寄存器和一个 16位标记字寄存器。
第 2章 微处理器的结构及存储器组成
3.总线接口部件总线接口部件用来与外部主存、外围设备等部件进行数据传送。 80486微处理器内部设有高速算术 /逻辑运算器、浮点运算器和 Cache存储器,配置了外部 Cache,这就要求其能与外存、
外设高速成批地进行数据传送,故此对总线接口部件的功能有更高的要求。它在内部通过 3条 32位总线与内部 Cache和指令预取部件连接;在外部通过多种电路与系统总线连接,根据优先级别协调数据输入 /输出、指令预取,Cache行的填充等工作。
为了支持片内 Cache的连贯性,配置了总线监视功能。总线接口部件中各部分的功能是:
第 2章 微处理器的结构及存储器组成
(1) 总线大小 (也称为宽度 )控制。用来控制数据总线的位数,
即按 32位,16位或 8位进行数据传送。
(2) 奇偶校验控制。数据传送时进行奇偶校验,写操作时产生偶校验,读操作时实施偶校验。如果出错,给出错误信息。
(3) 地址驱动器。提供所有地址信号 A31~ A2和字节允许信号 BE3~ BE0的功率驱动,其中高 28位地址为双向信号。
(4) 写缓冲存储器。由于外部数据线是 32位,为了传送可靠,
在接口部件中设有缓冲存储器,以等待总线全部空闲时再进行写入操作。
第 2章 微处理器的结构及存储器组成
(5) 数据总线收发器。为 32位,用来控制总线数据的接收与发送。
(6) 总线请求序列发生器。也就是总线周期与总线控制电路,
用来产生总线周期的时序及控制信号。其中包括成组和非成组传送、总线请求仲裁、浮点运算、中断以及复位等操作所需要的定时控制信号。
(7) 成组传送控制。用来控制内部 Cache等部件与外部主存之间的成批数据传送。
(8) Cache控制。 Cache控制电路与成批传送控制配合,对系统 Cache存储器实施控制。
第 2章 微处理器的结构及存储器组成
4.标志操作指令
80x86中有一部分指令是专门对标志寄存器或标志位进行操作的。包括四条标志寄存器传送指令和标志位操作指令。
1) 标志寄存器传送指令
(1) LAHF(Load AH with Flags)
格式,LAHF
功能:把标志寄存器的低 8位 (包括符号标志 SF、零标志 ZF、
辅助进位标志 AF、奇偶标志 PF和进位标志 CF)传送至 AH的指定位,即相应地传送至位 D7,D6,D4,D2和 D0。 (位 D5,D3、
D1的内容没有定义 ),如图 2-18所示。这条指令本身不影响这些标志位。
第 2章 微处理器的结构及存储器组成图 2-18 LAHF指令示意图
7 6 5 4 3 2 1 0
AH
CT S Z A PIO DF L A G
第 2章 微处理器的结构及存储器组成
(2) SAHF(Store AH into Flags)
格式,SAHF
功能:这条指令与上一条的操作刚好相反,它是把寄存器
AH的指定位传送至标志寄存器的低 8位的 SF,ZF,AF,PF和
CF标志。因而这些标志的内容就要受到影响,这取决于 AH中相应位的状态,但这条指令并不影响溢出标志 OF、方向标志 DF、
中断屏蔽标志 IF和追踪标志 TF,即不影响标志寄存器的高位字节。
第 2章 微处理器的结构及存储器组成
(3) PUSHF(Push Flags)
格式,PUSHF
功能:把整个标志寄存器 FLAGS推入至栈指针所指的栈的顶部,同时修改栈指针,即 SP-2→SP 。
这条指令不影响标志位。
第 2章 微处理器的结构及存储器组成
(4) POPF(POP Flags)
格式,POPF
功能:把现行栈指针所指的一个字,传送给标志寄存器
FLAGS,同时相应地修改栈指针,即 SP+2→SP 。这条指令执行后,80X86的标志位就取决于原栈顶部的内容。
PUSHF和 POPF这两条指令可保存和恢复标志寄存器。在子程序调用和中断服务中可利用这两条指令来保护和恢复标志位。
另外,这两条指令也可以用来改变追踪标志 TF。在 80X86的指令系统中,没有直接能改变 TF标志的指令,故若要改变 TF标志,
先用 PUSHF指令把标志位入栈,然后设法改变栈顶存储单元的
D8位 (把整个标志看成一个字 ),再用 POPF指令恢复。这样其余的标志不受影响,而只有 TF标志按需要改变了。
第 2章 微处理器的结构及存储器组成
(5) PUSHFD
格式,PUSHFD
功能,PUSHFD为标志寄存器入栈指令,用于将 32位
EFLAGS的内容压入堆栈。操作后,使 (E)SP减 4。
第 2章 微处理器的结构及存储器组成
(6) POPFD
格式,POPFD
功能,POPFD为标志寄存器出栈指令,用于将栈顶 32位数弹出到 EFLAGS中。
说明:① EFLAGS的恢复标志 RF(D16)和虚拟 8086方式标志
VM(D17)不受 POPF和 POPFD指令的影响; I/O特权级标志
IOPL(D13,D12)只有在当前代码段的特权级为 0时才受影响;中断标志 IF(D9)只有在当前特权级至少等于 I/O特权级时才受影响。
② 当压入堆栈的是 8位数时,执行上述指令 (其操作数宽度属性隐含为 16位或 32位 )应对 8位带符号数扩展到 16位或 32位。
第 2章 微处理器的结构及存储器组成
2) 标志位操作指令
80x86有 7条直接对标志单独进行操作的指令。其中三条是针对进位标志 CF的,两条是针对方向标志 DF的,两条是针对中断标志 IF的。
(1) CLC(Clear Carry Flags)
格式,CLC
功能:标志 CF清 0,即 0→CF 。
第 2章 微处理器的结构及存储器组成
(2) CMC(Complement Carry Flags)
格式,CMC
功能:标志 CF取反,即若 CF=0,则 1→CF ;若 CF=1,则 0→CF 。
(3) STC(Set Carry Flags)
格式,STC
功能:标志 CF置 1,即 1→CF 。
第 2章 微处理器的结构及存储器组成
(4) CLD(Clear Direction Flag)
格式,CLD
功能:标志 DF清 0,即 0→DF,则在串操作指令时,使地址增量。
(5) STD(Set Direction Flag)
格式,STD
功能:标志 DF置 1,即 1→DF,则在串操作指令时,使地址减量。
第 2章 微处理器的结构及存储器组成
(6) CLI(Clear Interrupt enable Flag)
格式,CLI
功能:中断允许标志 IF清 0,即 0→CF,于是在 80X86系统中,外部装置送至可屏蔽中断 INTR引线上的中断请求,CPU就不予以响应,即中断屏蔽。但此标志对于非屏蔽中断 NMI引线上的请求以及软件中断都没有影响。
第 2章 微处理器的结构及存储器组成
(7) STI(Set Interrupt-enable Flag)
格式,STI
功能:标志 IF置 1,即 1→IF,则 CPU就可以响应出现在 INTR
引线上的外部中断请求。
上述 7条指令除对指定的标志位进行操作外,对其他标志位皆无影响。
第 2章 微处理器的结构及存储器组成
2.2 存储器的组织
2.2.1 基本概念
1.常用的术语
1) 位 (bit)
计算机中存储信息的基本单位是一个二进制位,简称位,是计算机所能表示的最基本最小的数据单元,英文为 bit,可用小写字母 b表示。一位可存储一位二进制数,它只能有两种状态,即
,0”和,1”。由若干个二进制位的组合就可以表示各种数据、字符等。
第 2章 微处理器的结构及存储器组成
2) 字节 (Byte)
相邻的 8位二进制数称为一个字节 (1Byte= 8 bit),英文为
Byte,可用大写字母 B表示。一个字节由 8位二进制数组成,其位编号自左至右为 b7,b6,b5,b4,b3,b2,b1,b0。一个字节占用一个存储单元。字节是微型机中存取信息的基本单位,
长度是固定的,但不同微型机的字长是不同的。 8位微机的字长就等于 1个字节,而 16位微机的字长等于 2个字节,32位微机的字长等于 4个字节。为了表示方便,常把 1个字节定为 8位,把一个字 (Word)定为 16位,一个双字 (Double Word)定为 32位。
第 2章 微处理器的结构及存储器组成
3) 字 (Word)和字长字是计算机内部进行数据处理的基本单位,通常它与计算机内部的寄存器、运算装置、总线宽度相一致。一个字是 16位,
其位编号自左至右为 b15~ b0且占用两个存储单元。计算机的每一个字所包含的二进制位数称为字长。
不同类型的微型计算机有不同的字长,例如,Intel的 8080、
8085为 8位,Intel的 8086和 80286的字长为 16位,Intel的 80386和
80486的字长为 32位。一个计算机的字长与它能表达数的范围不是一回事,因为可以用单字长,也可以用多字长表示数。
第 2章 微处理器的结构及存储器组成
4) 双字和四字双字:一个双字有 32位,其位编号自左至右为 b31~ b0。一个双字占用 4个存储单元。
四字:一个四字有 64位,其位编号自左至右为 b63~ b0。一个四字占用 8个存储单元。
第 2章 微处理器的结构及存储器组成
5) 内存单元的编址为了正确地区分不同的内存单元,给每个单元分配一个存储器地址,地址从 0开始编号,顺序递增 1。机器中的地址是用无符号二进制数表示,可简写为十六进制数形式。一个存储单元中存放的信息称为该单元的内容。例如,2号单元中存放了一个数字 8,则表示为,(2)=8。
对于字、双字、四字数据类型,由于它们每个数据都要占用多个单元,访问时只需给出最低单元的地址号即可,然后依次存取后续字节。习惯上,对于字、双字、四字数据类型,其低地址中存放低位字节数据,高地址中存放高位字节数据,这就是所谓的数据“逆序存放”。
第 2章 微处理器的结构及存储器组成例 2-1 内存现有以下数据:
地址,0 1 2 3?4 5
数据,12H 34H 45H 67H 89H 0AH
则对于不同的数据类型,取到 1号单元的数据是:
(1)字节 =34H
(1)字 =4534H
(1)双字 =89674534H
第 2章 微处理器的结构及存储器组成
2.分段与分页结构
1) 分段结构存储器的分段管理是微型机常用的一种存储管理方法。
8086存储管理,80486和 Pentium工作在实地址方式时的存储管理,
均采用分段管理的方法。这种方法既解决了其字长为 16位的机器 (如以 8086为 CPU的 PC机 )访问 1M字节存储空间的矛盾,也便于程序在内存中重定位。采用分段管理后,一个内存单元地址要用段基地址和偏移量两个逻辑地址来描述,表示为段基址:偏移量其段基址和偏移量的限定、物理地址的形成要视 CPU工作模式决定。
第 2章 微处理器的结构及存储器组成
2) 分页结构在 80486/Pentium保护模式中,存储器在逻辑上仍采用分段式结构。存储器最多可以由 16 384 (214)个段组成,每个段最大可达 4GB。从程序设计者角度看,整个存储空间可高达 64 GB,
每一段为相连地址空间单元。存储器分段有利于程序与数据间的隔离及任务之间的隔离和保护。
第 2章 微处理器的结构及存储器组成图 2-19 存储器映像系统内存区程序暂驻区扩展存储区
1 0 2 4 K B
(1 M B )
6 4 0 K B
8
第 2章 微处理器的结构及存储器组成
3.存储器映像一般情况下,存储器被划分为 3部分:程序暂驻区 (TPA)、
系统内存区和扩展存储区 (XMS),其映像见图 2-19。通常把最低端的 1 MB叫做常规内存,因为每个设计成实模式的程序都在这个区域里完成。
程序暂驻区长度为 640 KB,其中驻留操作系统的核心部分、
其他控制计算机的程序、当前激活或非激活的应用程序等,应用程序在执行时就存放在程序暂驻区。系统内存区长度为 384
KB,主要包括 BIOS ROM、显示 RAM、硬盘控制器 ROM等,
另外还有一块空闲内存,在 80386以上的机器中,可以利用 CPU
的换页功能,把 1 MB以上的内存映射到这块区域,使 DOS也可以使用这块空间。
第 2章 微处理器的结构及存储器组成基于 80286以上的计算机可以包含扩展存储区,使存储容量远远大于 1 MB,只有在保护模式下才可以访问扩展存储区。
这块区域的管理问题 DOS无法解决,它要靠其他的内存管理程序,如可以使用扩展内存管理程序 HIMEM.SYS。该程序应该通过 CONFIG.SYS中的 DEVICE命令说明,并在系统执行
CONFIG时被加载到内存,然后由它监控扩展内存的使用情况。
第 2章 微处理器的结构及存储器组成
2.2.2 存储器的组织
8086微处理器只能工作在实模式方式下,而 80486和 Pentium
微处理器可在实模式或保护模式两种方式下工作。
1,8086的存储器组织
8086有 20条地址引线,它的直接寻址能力为 220 B(即 1 MB)。
所以,在一个 8086组成的系统中,可以有多达 1 MB的存储器。
这 1 MB逻辑上可以组织成一个线性矩阵,地址从 00000到 FFFFF。
给定一个 20位的地址,就可以从这 1 MB中取出所需要的指令或操作数。但是,在 8086内部,这 20位地址是如何形成的呢?
第 2章 微处理器的结构及存储器组成如前所述,8086内部的 ALU能进行 16位运算,有关地址的寄存器如 SP,IP,以及 BP,SI,DI等也都是 16位的,因而 8086
对地址的运算也只能是 16位。这就是说,对于 8086来说,各种寻址方式,寻找操作数的范围最多只能是 64 KB。所以,整个 1
MB存储器以 64 KB为范围分为若干段。在寻址一个具体物理单元时,必须要由一个基地址再加上由 SP,IP,BP,SI或 DI等可由 CPU处理的 16位偏移量来形成实际的 20位物理地址。这个基地址就是由 8086中的段寄存器,即代码段寄存器 CS、堆栈段寄存器 SS、数据段寄存器 DS以及附加段寄存器 ES中的一个来形成的。在形成 20位物理地址时,段寄存器中的 16位数会自动左移 4
位,然后与 16位偏移量相加,如图 2-20所示。
第 2章 微处理器的结构及存储器组成逻辑地址段寄存器 0000
物理地址
15 0
19 0
偏移地址段地址加法器
15 0
图 2-20 8086物理地址的形成第 2章 微处理器的结构及存储器组成每次在需要产生一个 20位地址的时候,一个段寄存器会自动被选择,且能自动左移 4位再与一个 16位的地址偏移量相加,
以产生所需要的 20位物理地址。每当取指令的时候,选择代码段寄存器 CS,再加上由 IP所决定的 16位偏移量,计算得到要取指令的物理地址。每当涉及到一个堆栈操作时,选择堆栈段寄存器 SS,再加上由 SP所决定的 16位偏移量,计算得到堆栈操作所需要的 20位物理地址。每当涉及到一个操作数,选择数据段寄存器 DS或附加段寄存器 ES,再加上 16位偏移量,计算得到操作数的 20位物理地址。这里,16位偏移量是包含在指令中的直接地址,或者是某一个 16位地址寄存器的值,或者是指令中的位移量加上 16位地址寄存器中的值等等,这取决于指令的寻址方式。
第 2章 微处理器的结构及存储器组成
8086系统中,存储器的访问如图 2-21所示。
在不改变段寄存器值的情况下,寻址的最大范围是 64 KB,
所以,若有一个任务,它的程序长度、堆栈长度以及数据区长度都不超过 64 KB,则可在程序开始时,分别给 DS,SS,ES置值,然后在程序中就可以不再考虑这些段寄存器,程序就可以在各自的区域中正常地进行工作,若某一个任务所需的总的存储器长度(包括程序长度、堆栈长度和数据长度等)不超过 64
KB,则可在程序开始时使 CS,SS,DS相等,程序也能正常工作。
第 2章 微处理器的结构及存储器组成
6
4
K
B
CS
SS
DS
ES
偏移量码段堆栈段数据段附 加数据段图 2-21 8086的存储器结构第 2章 微处理器的结构及存储器组成上述存储器分段方法,对于要求在程序区、堆栈区和数据区之间隔离这种任务时是非常方便的。这种存储器分段方法,
对于一个程序中要用的数据区超过 64KB,或要求从两个(或多个)不同区域中去存取操作数,也是十分方便的。只要在取操作数以前,用指令给数据段寄存器重新赋值就可以了。
这种分段方法也适用于程序的再定位要求。通常情况下,要求同一个程序能在内存的不同区域中运行,而不改变程序本身,
这在 8086中是可行的。只要程序中的转移指令都使用相对转移指令,而在运行这个程序前设法改变各个段寄存器的值就可以了。如图 2-20所示,根据指令,BIU会自动完成所需要的访问存储器的次数。
第 2章 微处理器的结构及存储器组成
2,80486的存储器管理
1) 存储器管理部件存储器管理部件包括分段部件、分页部件和高速缓冲存储器 Cache。在 80486微处理器中设有 6个 16位段寄存器,用来实现对主存的分段管理。在实地址方式下,段寄存器用来存放段基址,其内容左移 4位与偏移地址相加,产生线性地址。在保护方式下,段寄存器用来存放选择符。分段部件通过段描述符把逻辑地址转换成 32位线性地址。为了保证数据安全,分段部件与分页部件结合,为存储器管理提供 4级保护。
第 2章 微处理器的结构及存储器组成分页部件是分段部件之后的又一级管理部件。如果分页禁止,则线性地址就是物理地址;如果允许分页,则由分页部件再将线性地址转换成物理地址。 80486中的分页部件也提供二级分页管理。通过分页管理可寻址 80486微处理器的全部 4 GB地址空间,通过分段分页管理可实现 64 TB虚拟存储器的映像管理。
第 2章 微处理器的结构及存储器组成片内 8 KB高速缓冲存储器 Cache采用 4路相连映像方式,用来存储待执行的程序和数据,即作为外部主存的副本。它通过
16字节宽的总线与指令预取部件连接,以缩短指令和数据的传送时间。它通过 64位数据线与整数部件、浮点运算器和分段部件连接并与外部采用成组传送方式,以提高数据传送的速度。
为了保持与主存的一致性,片内 Cache采用“写贯穿”方式进行写入操作。
第 2章 微处理器的结构及存储器组成
2) 执行部件执行部件包括指令预取部件、指令译码器、控制和保护部件、
整数部件以及浮点运算器。指令预取部件由内部 Cache取出指令或数据,送入指令队列排队,等候执行。指令队列有 32个字节。
只要队列空,指令预取部件就自动由 Cache中取指令或数据。如果不能命中,则从主存中取,同时填充 Cache存储器。指令译码器由指令队列获取指令代码,并对其译码,然后由微程序控制器
ROM中输出微代码序列,控制该指令的执行,同时进行保护检查。整数部件包括算术 /逻辑运算部件 ALU、桶形移位器和寄存器组。在 ALU中设有高速加法器,可实现高速算术 /逻辑运算、
数据传送等操作。浮点运算器 FPU可实现各种浮点数值运算、超越 /非超越函数运算等操作。
第 2章 微处理器的结构及存储器组成
3) 存储器管理
80486微处理器设有 32位地址线 (A31~ A2和 EB3~ EB0),外部物理存储器空间为 232 B= 4 GB,内部采用分段分页管理,可实现 64 TB虚拟存储器的映像管理,另外设有 8 KB片内 Cache存储器 。 在工作方式方面,除具有实地址方式和保护方式之外,另有一种平台管理方式 。
第 2章 微处理器的结构及存储器组成
(1) 实地址方式。 80486微处理器加电开机或复位时,初始化为实地址方式。在这种方式下,它与 8086具有相同的存储器空间和管理方式。最大寻址空间为 1 MB,物理地址等于段地址左移 4位与偏移地址相加所得的值。 80486是 32位微处理器,但在实地址方式下的默认值为 16位,为了能在实地址方式下访问
32位寄存器或者寻址 32位的存储器单元,编程时须使用指令前缀。
(2) 分段管理。在分段管理方式中,段寄存器用来存放选择符,且每个段寄存器对应一个隐含不可访问的段描述符寄存器。
选择符与描述符表的关系如图 2-22所示。
第 2章 微处理器的结构及存储器组成图 2-22 选择符与描述符表
TI R P L
段选择符 全局描述符表 局部描述符表选择符界限值基地址界限值基地址
TI = 0 TI = 1
全局描述符表寄存器 G D T R 局部描述符表寄存器 L D T R
第 2章 微处理器的结构及存储器组成在段选择符中,RPL表示特权级别,即 0~ 3级。 TI是选择位,
当 TI= 0时,选择全局描述符表;当 TI= 1时,选择局部描述符表。
高 13位是描述符表地址,选择 8 KB描述符表中的某一个描述符。
GDTR和 LDTR是系统地址寄存器,其中 GDTR称为全局描述符表寄存器,用来存放全局描述符表 GDT的 32位基地址和界限值;
LDTR称为局部描述符表寄存器,用来存放局部描述符表 LDT的
32位基地址和界限值。
在 80486微处理器中设有多种描述符,其中最常用的一种格式如图 2-23所示,可用作应用代码段描述符、数据段描述符或一些系统专用段描述符,其中包括 32位段基址,20位段界限值和一些属性标志位,主要作用可概括如下:
第 2章 微处理器的结构及存储器组成图 2-23 段描述符基地址 31 ~ 24
A
V
L
0DG
段界限 15 ~ 0
段界限
19 ~ 16
P D PL S T Y PE 基地址 23 ~ 16
段界限 15 ~ 0
07811121314151619202122232431
第 2章 微处理器的结构及存储器组成
G:粒位,用来说明段界限值,以字节为单位,还是以页 (4
KB)为单位。 G= 0,表示以字节为单位; G= 1,表示以页为单位。若 G= 0,20位段界限值所表示的最大范围为 1 MB(220 B);
若 G= 1,段界限位所表示的最大范围为 4 GB(220× 4 KB)。
S:用来表示一个给定段是一个系统段还是应用程序代码段或者数据段。 S= 0,表示是系统段; S= 1,表示是应用程序代码段或者数据段。
第 2章 微处理器的结构及存储器组成
D:只能用在程序代码段描述符中,用来表示代码段中缺省说明的操作数的长度和有效地址长度。 D= 1,表示使用的是 32位操作数和 32位有效地址; D= 0,表示使用的是 16位操作数和 16位寻址方式。
P:段存在位。若 P= 0,表示所要使用的段不存在;若 P=
1,表示所要使用的段存在。当一个段描述符的选择符装入段寄存器时,若段存在位被清 0,将产生一个段不存在异常事故。
第 2章 微处理器的结构及存储器组成
DPL:特权级标志位,用来定义段的特权级,用以实现段保护。
AVL:系统软件可使用位。
TYPE:类型位,表示描述符的类型,但在不同的描述符中有着不同的含义。对于代码段 /数据段来说,其含义如表 2-2所示。
其中,数据 /堆栈段 TYPE的低 3位表示为 E,W,A,代码段 TYPE
的低 3位表示为 C,R,A。 E表示向下扩展,W表示允许写,A表示存取操作,C表示相容,R表示允许读。对于系统段 /门描述符,
TYPE的含义如表 2-3所示。
第 2章 微处理器的结构及存储器组成表 2-2 代码段 /数据段 TYPE的定义
TYPE
(数据 /堆栈段) 说 明
TYPE
(代码段
) 说 明编号 E W A 编号 E W A
0 0 0 0 只读 8 0 0 0 只执行
1 0 0 1 只读,存取操作 9 0 0 1 只执行,存取操作
2 0 1 0 读 /写 A 0 1 0 执行 /读
3 0 1 1 读 /写,存取操作 B 0 1 1 执行 /读,存取操作
4 1 0 0 只读,向下扩展 C 1 0 0 只执行,相容
5 1 0 1 只读,向下扩展,存取操作 D 1 0 1 只执行,相容,存取操作
6 1 1 0 读 /写,向下扩展 E 1 1 0 执行 /只读,相容
7 1 1 1 读 /写,向下扩展,存取操作 F 1 1 1 执行 /只读,相容,存取操作第 2章 微处理器的结构及存储器组成表 2-3 系统段 /门描述符类型
TYPE 说 明 TYPE 说 明
0 保留 B 80486CPU任务状态段忙
2 局部描述符表 C 80486CPU调用门
8 保留 D 保留
9 80486CPU任务状态段有效 E 80486CPU中断门
A 保留 F 80486CPU自陷门第 2章 微处理器的结构及存储器组成段描述符表是由段描述符构成的一个阵列,可有多种类型,
如全局描述符表 GDT、局部描述符表 LDT、中断描述符表 IDT以及任务状态段 TSS等,分别由相应的系统地址寄存器指示其起始地址。其中最基本最常用的是全局描述符表 GDT和局部描述符表 LDT,如图 2-22所示,其中第 0单元没有使用。
分段部件的作用是将逻辑地址转换成线性地址。其过程如图 2-24所示。首先根据选择符从相应的段描述符表中取出段描述符,再将段描述符中给出的段基址与逻辑地址中的偏移量相加,
即可得到线性地址。如果分页禁止 (即不分页 ),那么线性地址就是所需要的物理地址。如果分页,再由分页部件将线性地址转换成物理地址。
第 2章 微处理器的结构及存储器组成图 2-24 段转换过程选择符
15 0
偏移量
31 0
段描述符页表目录 页表 偏移量
31 0
线性地址逻辑地址描述符表基地址第 2章 微处理器的结构及存储器组成
(3) 分页管理。分页管理中要涉及页表、页目录表和页转换,
涉及段页地址转换和转换旁视缓冲存储器 TLB。
页表、页目录表及页转换:在 80486微处理器中,将 4GB物理存储器空间按 4KB为一页,分为 1 048 576个页;通过内部寄存器和两级页表进行管理。从 0开始,每一组连续相邻的 1024个页为一个低级管理单位。每一页有一个起始地址 (低 12位全为 0),1024个地址集中排列存放,构成一个页表,其中每一项称为一个页表项。
每个页表项占 4个字节,整个页表占 4 KB空间,由 10位地址与之映像。在低级管理单位的上面是高级管理单位,对 1024个低级管理单位实施管理。每一个页表有一个起始地址 (低 12位全为 0),1024
个地址集中排列存放,构成页目录表,其中每一项称为一个页目录项。每个页目录项占 4个字节,整个页目录表占 4 KB空间,由 10
位地址与之映像。页目录表中存放的页表项的高 20位地址由控制寄存器 CR3提供,页表、页目录表及其转换过程如图 2-25所示。
第 2章 微处理器的结构及存储器组成图 2-25 页表、页目录表及其转换过程
31 22 21 12 11 0
页目录项
n
1
0
CR 3
页表项
…
…
页目录索引 页表索引 偏移量
…
…
页表 1
页表 n
物理页地址 偏移量
31 12 11 0
32 位物理地址
32 位线性地址页转换页目录表页表 0
第 2章 微处理器的结构及存储器组成页转换过程中,分段部件给出 32位线性地址。其中高 10位与 CR3中给出的页目录表的 20位基地址相加 (最低 2位为 0,共 32
位 ),指示某一页目录项。从中取出 20位地址作为页表基地址,
与线性地址中的中间 10位相加 (最低 2位为 0,共 32位 ),指示某一页表中的某一项。这个 20位地址再作为页基址 (也称为页框地址 ),与线性地址中的低 12位偏移量相加,产生指向某一存储单元的 32位物理地址。
第 2章 微处理器的结构及存储器组成由于页和页表的起始地址都是从低 12位全为 0的单元开始的,
因此在页表和页目录表中存放高 20位有效,低 12位可作为状态特征位或保护控制位。其中页表中的页表项格式如图 2-26所示。
各项含义如下:
P:存在位,表示页或页表是否在物理存储器中。 P= 1,
表示页或页表在物理存储器中,该项地址可用于地址转换; P=
0,与之相反。
R/W:读 /写位,表示可读或者可写,用于页保护。
第 2章 微处理器的结构及存储器组成
U/S:用户 /管理员程序位,表示用户或管理员程序可以使用,用于页保护。
PWT:写贯穿位,用于 Cache写控制。对于片外二级 Cache,
PWT置 1,选择写贯穿方式; PWT清 0,选择写回方式。片内
Cache采用写贯穿方式。
图 2-26 页表项格式
A
P
C
D
P
W
T
U
/
S
P页框地址 31 ~ 12 A V A I L 0 0 D
31 12 11 9 8 7 6 5 4 3 2 1 0
R
/
W
位 0:存在位;位 1:读 /写位;位 2:用户 /管理程序位;位 3:页透明写;位 4:
页 Cache控制;
位 5:被访问位;位 6:脏位;位 7:保留;位 8:保留;位 9~ 11:系统设计人员可用位第 2章 微处理器的结构及存储器组成
PCD:页 Cache禁止位,用于分页高速缓冲存储控制。若 PCD
置 1,内部 Cache禁止。
A:被访问位,表示对该页目录项或页表项涉及到的页面是否正在进行读 /写操作。当访问某一页时,该位置 1,并保持直到软件清 0。
D:脏位,也称为写标志位。当对某一页写入时该位置 1,
并保持直到软件清 0。
AVAIL:系统设计人员可用位。
第 2章 微处理器的结构及存储器组成图 2-27 段页地址转换选择符
15 0
偏 移 量
31 0
描述符表段描述符页目录索引 页表索引 偏移量操作数页框页表项页目录项
CR3
页目录 页表第 2章 微处理器的结构及存储器组成分段管理可实现由逻辑地址到线性地址的转换,分页管理中能实现由线性地址到物理地址的转换,二者结合起来即可实现由逻辑地址到物理地址的全部转换过程,如图 2-27所示。首先根据选择符在段描述符表中取段描述符,将其中的段基址与偏移量相加,求出线性地址。然后将线性地址按二级页表转换,取出页基地址 (页框 ),再与偏移量相加,即可求出物理地址。
在 80486微处理器的分页部件中,设有一个称为转换旁视缓冲存储器 TLB的高速缓冲存储器,用来存放最近经常使用的页表项。绝大多数分页转换都通过转换旁视缓冲存储器进行,从而提高页转换的速度。
第 2章 微处理器的结构及存储器组成
(4) 平台管理方式。这是 80486微处理器最简单的一种存储管理方式。它使所有段都映像到整个物理存储器空间上,而且段的偏移量既可以代码区为基准,又可以数据区为基准。从程序设计环境的角度来看,它支持分页管理,而不支持分段管理。
在平台管理方式下,也设有段描述符。一般程序中至少需要两个段描述符,一个用于访问代码段,另一个用于访问数据段。
所有段描述符的基地址值相同且为 0,段的界限值最大为 4 GB,
其示意如图 2-28所示。它相当于 CPU直接通过偏移量访问所有存储器空间。
第 2章 微处理器的结构及存储器组成图 2-28 平台存储管理方式代码段 CS
堆栈段 SS
数据段 DS
附加数据段 ES
段寄存器访问控制 界限值基地址访问控制 界限值基地址
E P R O M
D R A M
段描述符 物理存储器第 2章 微处理器的结构及存储器组成在保护方式下也可使用平台管理方式,而且与非保护方式下的平台管理方式基本相同。区别仅在于保护方式下的界限值只能是实际的存储器范围,因为分段部件能够检查对不存在的存储器单元的访问。若访问不存在的存储器空间,将产生保护异常事故。而在非保护方式下对这种越界不予理睬。
第 2章 微处理器的结构及存储器组成
2.2.3 实模式下物理地址的形成
8086微处理器只能工作在实模式下,80286以上的微处理器既可以工作在实模式下也可以工作在保护模式下。在实模式下微处理器只可以寻址最低的 1 MB,即使机器实际有 64 MB或更多的内存也是如此。无论是哪一种微处理器,每次机器冷启动或复位都隐含地以实模式开始工作。实模式下存储器的物理地址由段基址和偏移量给出。为了与 8086等 16位 CPU兼容,其段基址必须定位在地址为 16的整数倍上,这种段起始边界通常称做节或小段。
这样,1 MB空间的 20位地址的低 4位可以不表示出来,而高 16位就可以完全放入段寄存器了。同样由于 16位字长的原因,在实模式下段长不能超过 64 KB,但是对最小的段并没有限制,因此可以定义只包含 1个字节的段。段间位置可以相邻、分离和重叠。
第 2章 微处理器的结构及存储器组成存储器采用分段管理后其物理地址的计算方法为
10H× 段基址 +偏移量 (其中 H表示是十六进制数 )
段基址和偏移量一般用十六进制数表示,简便的计算方法是在段基址的最低位补以 0H,再加上偏移量。
第 2章 微处理器的结构及存储器组成例 2-2 某内存单元的地址用十六进制数表示为 1234∶ 5678,
其物理地址是多少?
1 2 3 4 0 (10H× 段基址 )
+ 5 6 7 8 (偏移量 )
1 7 9 B 8 (物理地址 )
则其物理地址为 179B8H,如图 2-29所示。
第 2章 微处理器的结构及存储器组成图
2-
29
物理地址的形成
1 2 3 4 5 6 7 8
1 2 3 4 0 H
5 6 7 8 H
1 7 9 B8 H
段 n
存储器
:
第 2章 微处理器的结构及存储器组成程序执行时,其当前段的段基址存放在相应的段寄存器中,
偏移量视访问内存的操作类型决定,可能放在寄存器中或通过操作数寻址方式得到。
例 2-3 若 (CS)=1234H,(DS)=2000H,(IP)=0010H,
(SS)=4000H,则下一条要执行指令的地址是多少?
10H× (CS)+(IP)=12340H+0010H=12350H
所以,下一条要执行指令的地址是 12350H。
可以用不同的段基址:偏移量表示同一个物理地址。例如可以用 1000∶ 1F00,11F0∶ 0000,1100∶ 0F00和 1080∶ 1700表示同一个物理地址,其物理地址都是 11F00H。
第 2章 微处理器的结构及存储器组成
2.2.4 保护模式下物理地址的形成目录 表 偏移量操作单元线性地址
31 22
10 10 12
12 0
31 0
页目录用户存储器
31 0
31 0
页表控制寄存器
C R 0
C R 1
C R 2
C R 3
图 2-30 80x86分页机制第 2章 微处理器的结构及存储器组成存储器分页机构由三部分组成:页目录、页表和页 (页面或页帧 )。存储器最大可能的 4GB的物理存储空间分成 1 MB且大小为 4 KB的页,页开始于 4 KB的边界,每页与一个页表项相对应,
在页表项中规定了此页的物理地址及特性。每 1024个页表项构成一个页表,并有一个目录项与之相对应,目录项规定了此页表的物理地址和一些特性。 1024个目录项构成一个目录,目录的基地址由控制寄存器 CR3提供。
第 2章 微处理器的结构及存储器组成在从线性地址转换成物理地址时,在由 CR3提供基地址的目录中,由线性地址的高 10位做索引,从 1024个目录项中选择一个目录项,此目录项中提供了对应的页表的物理地址,再用线性地址的次 10位作为此页表的索引,从 1024个页表项中选择一个页表项,此页表项中提供了对应页的物理地址,再用线性地址的最低 12位作为页内偏移量,选择要访问的存储器单元。
第 2章 微处理器的结构及存储器组成习 题 二
2.1 一台微机的字长为 16位,若采用字节编址,则它可以访问的最大存储空间是多少字节? 试用十六进制数表示该机的地址范围 。
2.2 写出下列存储器地址的段地址,偏移地址和物理地址 。
(1)?2314:0035 (2)?1FD0:000A
第 2章 微处理器的结构及存储器组成
2.3 下列操作可使用哪些寄存器。
(1) 加法和减法
(2) 循环计数
(3) 乘法和除法
(4) 保存段地址
(5) 表示运算结果的特征
(6) 将要执行的指令地址第 2章 微处理器的结构及存储器组成
2.4 若代码段寄存器 CS中的内容为 0C018H,则该代码段的第一个存储单元的地址、最后一个存储单元的地址各是多少?
若偏移地址为 0FE7FH,则其所对应的物理地址是多少?试用图画出这三个地址和 CS的内容。
2.5 叙述 80486和 Pentium CPU的组成部分,各部分的主要功能是什么?
2.6 Pentium微处理器采用了哪些新技术? 在性能上有什么改进?
2.7 在 Pentium微处理器中,哪些寄存器既可以作为 32位寄存器,也可以作为 16位或 8位寄存器使用?
第 2章 微处理器的结构及存储器组成
2.8 IP寄存器的作用是什么?
2.9 试举例说明 FLAGS/ EFLAGS寄存器的作用。
2.10 在实模式下,对于以下 CS∶ IP组合,计算每条指令的存储器地址。
(1) CS=1000H IP=2000H (2) CS=1234H IP=1000H
(3) CS=3000H IP=0120H (4) CS=3000H IP=1A00H
第 2章 微处理器的结构及存储器组成
2.11 试确定实模式下,下列寄存器组合所寻址的存储单元。
(1) DS=2000H EAX=00003100H
(2) ES=1000H DI=2100H
(3) DS=1000H ESI=0000A000H
(4) SS=8000H ESP=00009000H
2.12 试说明段加偏移存储器寻址方式有什么优点。