5.
===========================内存储器:程序运行时存放指令和数据的地方。存储单元接受CPU的数据请求,从随机访问存储器(RAM)中取出数据送至CPU,并将运算结果从CPU送回存储器中
时钟(clock):涉及CPU和系统总线的每个操作都由一个内部时钟同步,这个时钟以固定的频率产生脉冲。
–
超标量流水线
有两条以上的流水线,使得多条指令能够同时处于同一执行阶段
奔腾Pro:3条流水线
内存的读取
周期1:内存操作数地址的各位被放到地址总线ADDR上。
周期2:读取线RD被设为低(0)以通知存储器要读一个值。
周期3:CPU等待一个周期,给存储器一些时间以做出反应,在这个周期中,内存控制器将数据放在数据总线DATA上。
周期4:读取线RD变为1,以通知CPU现在可以在数据总线上读取数据值了。
程序是如何运行的
1. 装入和执行进程
3 OS确定下一个可用的内存块的地址,并将程序文件载入内存,然后将程序的大小和位置等信息登记在一张表中。
4 OS执行一条分支转移指令,使CPU在程序的第一条机器 指令处开始执行。一旦程序运行就被称为一个进程,并 分配一个进程ID。
4程序自动运行,OS的任务就是跟踪进程的执行并响应进程对系统资源的请求。
5进程结束时,其句柄被删除,使用的内存也被释放以便 能够由其他程序使用。
标量流水线
IA-32处理器体系结构
l 操作模式
l 基本执行环境
l 浮点单元
l Intel微处理器的历史
l 保护模式(Protected Mode)
l 虚拟8086模式(Virtual-8086 Mode)
l 实地址模式(Real-address Mode)
l 系统管理模式(System Management Mode)
l 保护模式:处理器可同时运行多个程序,并为每个进程分配高达4GB的内存。每个程序都拥有自己的内存空间,系统将阻止程序访问其他程序的内存区域。例如:MS-Windows运行于该模式下。
l 实地址模式:处理器只能寻址1MB的内存,一次只能运行一个程序,但可以通过中断的方式来响应来自外围设备的请求。例如:MS-DOS操作系统运行于该模式。
l 虚拟8086模式:是计算机运行于保护模式下后创建的有1MB地址空间的虚拟机,虚拟机对运行于实地址模式下的80X86计算机进行模拟。例如:在Windows NT下,打开一个命令行窗口。
系统管理模式:提供给操作系统,用以实现电源管理和系统安全等功能的机制。
一、地址空间
– 保护模式:IA-32处理器可对4GB的内存进行寻址(32位地址,0~232-1)
– 实地址模式:处理器最多只能访问1MB(使用20位地址,0~220-1)
– 虚拟8086模式:处理器处于保护模式中对实地址模式的模拟,可以运行多个程序,但每个程序只能寻址1MB内存的空间。
二、基本寄存器
– 寄存器是CPU内部的高速储存单元,访问速度比常规内存快得多。包括:
– 8个32位通用寄存器
– 6个16位段寄存器
– 一个存放处理器标志的寄存器(EFLAGS)
– 一个指令指针寄存器(EIP)
l 通用寄存器的特殊用法
– EAX:扩展累加寄存器。在乘法和除法指令中被自动使用;
– ECX:循环计数器。
– ESP:扩展堆栈指针寄存器。一般不用于算术运算和数据传送,而用于寻址堆栈上的数据。
– ESI和EDI:扩展源指针寄存器和扩展目的指针寄存器。用于内存数据的存取;
– EBP:扩展帧指针寄存器。由高级语言用来引用函数参数和局部变量;
l 段寄存器
l
l 段是一块预分配的内存区域。用于存放程序的指令(代码段)、变量(数据段)、函数的局部变量和参数(堆栈段)。
l 在实地址模式下,段寄存器用于存放段的基址;保护模式下,段寄存器存放段描述符表的指针(索引)。
l 段寄存器包括:CS、SS、DS、ES、FS、GS。
– CS往往用于存放代码段地址;
– DS存放数据段地址;
– SS存放堆栈段地址;
– ES、FS和GS则可指向其他数据段。
指令指针寄存器EIP
l 指令指针寄存器存放下一条要执行的指令的地址。
有些机器指令可以操纵这个地址,导致程序向新的地
址进行转移。
EFLAGS寄存器
l 进位标志CF:在无符号算术运算的结果,无法容纳于目的操作数中时被设置。
l 溢出标志OF:在有符号算术运算的结果位数太多,而无法容纳于目的操作数中时被设置。
l 符号标志SF:在算术或逻辑运算产生的结果为负时被设置。
l 零标志ZF:在算术或逻辑运算产生的结果为零时被设置。
l 辅助进位标志AF:在算术运算导致8位操作数的位3到位4产生进位时被设置。
l 奇偶进位PF:在统计一个数字内值等于1的位数时,如果为1的总位数为偶数,则设置该标志;否则清除该标志。
系统寄存器
三、系统寄存器
仅允许运行在最高特权级的程序(例如:操作系统内核)访问
的寄存器,任何应用程序禁止访问。
l 中断描述符表寄存器IDTR:保存中断描述符表的地址。
l 全局描述符表寄存器GDTR:保存全局描述符表的地址,包含了任务状态段和局部描述符表的指针。
l 局部描述符表寄存器LDTR:保存当前正在运行的程序的代码段、数据段和堆栈段的指针。
l 任务寄存器:保存当前执行任务的任务状态段的地址。
l 调试寄存器:用于调试程序时设置端点。
浮点单元
l 浮点单元FPU
适合于高速浮点运算,从Intel 486开始集成到主处理器
芯片中。
– 8个80位的浮点数据寄存器 ST(0)~ST(7)
– 2个48位的指针寄存器
– 3个16位的控制寄存器
Intel微处理器的历史
– Intel 8086
– Intel 80286
– IA-32处理器系列
– P6处理器系列
– 奔腾Ⅳ和Xeon系列
– CISC和RISC
– 虚拟8086模式
– 计算机运行于保护模式下后创建的1MB地址空间的虚拟机,虚拟机对运行于实地址模式下的80x86计算机进行模拟。
– 例如:在Windows NT和Windows 2000下,打开一个命令行窗口时就创建了一个8086虚拟机
– 在实地址模式下,处理器使用20位的地址总线,可以访问1MB(0~FFFFF)内存。
– 但Intel 8086只有16位的地址线,不能直接表示20位的地址,因此采用了内存分段的解决方法。
– 段:将内存空间划分为64KB的段Segment;
– “段-偏移地址”方式:
– 段地址存放于16位的段寄存器中(CS、DS、ES或SS)
– 16位的偏移地址
l 一个典型的程序有三个段:代码段、数据段和堆栈段。
– CS包含一个16位的代码段基地址。
– DS包含一个16位的数据段基地址。
– SS包含一个16位的堆栈段基地址。
保护模式
l 段寄存器(CS、DS、SS、ES、FS和GS)指向段描述符表,操作系统使用段描述符表定位程序使用的段的位置。
l 一个典型的保护模式程序有三个段:代码段、数据段和堆栈段,使用CS、DS和SS三个段寄存器。
– CS存放代码段描述符表的地址
– DS存放数据段描述符表的地址
– SS存放堆栈段描述符表的地址
l 32位地址总线寻址,每个程序4GB:0~FFFFFFFF
– 平坦分段模式
– 多段模式(Multi-Segment):内存划分为64KB的段
– 分页模式(Paging)
l 将一个段分割成称为页(Pages)的4KB的内存块;
超