2_x86处理器架构剖析

上传人:今*** 文档编号:106802159 上传时间:2019-10-16 格式:PPT 页数:60 大小:19.23MB
返回 下载 相关 举报
2_x86处理器架构剖析_第1页
第1页 / 共60页
2_x86处理器架构剖析_第2页
第2页 / 共60页
2_x86处理器架构剖析_第3页
第3页 / 共60页
2_x86处理器架构剖析_第4页
第4页 / 共60页
2_x86处理器架构剖析_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《2_x86处理器架构剖析》由会员分享,可在线阅读,更多相关《2_x86处理器架构剖析(60页珍藏版)》请在金锄头文库上搜索。

1、汇编语言,lybliu, QQ:16807256 (学校主页教学平台),授课教师:刘云本,第二章 x86处理器架构,2.1 一般概念 2.2 32位x86处理器 2.2.2 基本执行环境 2.2.3 x86内存管理 2.3 64位x86-64处理器 2.4 典型x86计算机组件 2.5 输入输出系统(I/O系统),第二章 x86处理器架构,2.1 一般概念 2.2 32位x86处理器 2.2.2 基本执行环境 2.2.3 x86内存管理 2.3 64位x86-64处理器 2.4 典型x86计算机组件 2.5 输入输出系统(I/O系统),2.1 一般概念,从程序员的角度描述IA-32处理器系列

2、包括所有的Intel处理器 兼容处理器,如AMD的处理器,2.1.1 微机的基本结构,图2-1描述了微机的基本结构: 中央处理器 CPU 内存存储单元 输入/输出设备 通过三大总线连接起来,中央处理器CPU包括 数量有限的称作寄存器的存储单元 一个高频时钟 用于CPU内部操作和其他系统部件之间的同步 一个控制单元(CU) 协调执行机器指令时各个步骤的次序 一个算术逻辑单元(ALU) 执行加法等算术逻辑运算 CPU通过主板插槽的引脚同计算机的其他部分相连接,内存存储单元是计算机程序运行时存放指令和数据的地方 总线:是一组用于在计算机各部分之间传送数据的并行线。一般分成三组: 数据总线:在CPU与

3、外部之间传送指令和数据 控制总线:使用数字信号,同步、控制接入到总线上的所有设备的动作。 地址总线:传输指令和数据的地址,时钟:涉及CPU和系统总线的每个操作都由一个内部时钟同步。它以固定的频率产生脉冲。 机器指令使用的最基本的时间单位称为机器周期或时钟周期。 时钟频率是时钟周期的持续时间的倒数。用每秒振荡的次数来计算。 通常所说的CPU的主频即为这个CPU内部时钟的频率。 机器指令的执行至少需要一个时钟周期,很多指令需要很多个时钟周期才能完成一条指令。,I/O设备 即我们平常所见到的计算机的部件 如显示器,键盘,鼠标,硬盘等等,2.1.2 指令执行周期,程序在开始执行之前必须装入内存 指令指

4、针寄存器(IP, Instruction Pointer, 是CPU中的一个寄存器)存有要执行的下一条指令的地址 指令队列存放着若干条要执行的指令,机器指令的执行包括三个基本步骤: 取指令 解码 执行 如指令使用了内存操作数,还需要额外的步骤 取操作数 存储输出操作数,单条指令的执行可以分解为一系列的独立操作,这些操作构成执行指令的周期。,取指令:控制单元从指令队列中取出指令并递增指令指针(IP) 解码:控制单元对指令进行解码以确定该条指令要执行什么操作。控制单元将输入操作数传递给算术逻辑单元,并向它发送信号指明要执行的操作 取操作数:如指令的操作数在内存中,控制单元就产生读内存操作从内存中传

5、入到内部寄存器中,执行:算术逻辑单元执行指令,以寄存器(有名寄存器或内部寄存器)为操作数,将运算输出的结果送到有名寄存器或内存,然后更新处理器的状态标志 存储结果,如果结果要存储到内存中,则执行写内存操作将结果存到内存中去。,参见图2-2这个简化的奔腾CPU结构图理解CPU的指令的执行过程,多级流水线,指令执行的每一步至少占用一个时钟周期。 处理器可以采用流水线技术来实现多个部件间的并行处理,以提高系统的效率。 以486为例,采用了6级流水线,每级流水线有其对应的执行部件。,486的6级执行部件 总线接口单元BIU 代码预取单元 指令解码单元 执行单元 分段部件:把逻辑地址转换为线性地址并进行

6、保护检查 分页部件:把线性地址转换为物理地址,进行页保护检查并保留一个最近访问页的列表,6级非流水线的指令执行,6级流水线的指令执行,时间,超标量体系结构 指有两条及以上的执行流水线。 使得同时可以执行多条指令,2.1.3 内存的读取,系统的吞吐量通常依赖于内存的访问速度 通常,CPU时钟频率很高,可能几GHz。通过系统总线的内存访问速度往往偏低,如33MHz。这二者之间速度不匹配,一般要求快速设备插入等待周期以等待慢速设备。 一个内存操作,要求执行一系列的步骤,往往需要多个时钟周期。下图示例了一个内存读取周期。,(内存读),读内存步骤 周期1:内存操作数的地址放到地址总线上 周期2:读取线(

7、控制总线中的一根)设为读功能(一般是置为低),通知存储器要读一个值。 周期3:CPU等待,以便存储器作出响应,存储器在响应好后,将选中单元里的数据放到数据总线上。如果存储器不能在这个时间内把数据准备好,则要求CPU插入更多的等待周期。 周期4:将读信号置1,通知CPU从数据总线上取数。,由于内存与CPU速度相差巨大,目前一般是采取缓存的方式来提高速度。 缓存是一块特殊内存,它存取速度比普通内存快得多,但价格贵。 程序在第一次读取某数据时,将此数据范围内的一块内存数据读入并存放到缓存中,以后再操作此块内存时,则不进行真正的内存操作,而在缓存中进行。,2.1.4 程序是如何运行的,当用户双击桌面某

8、图标后,操作系统所做的事: 查找这个图标所对应的程序文件。 如果未找到,提示错误,如果找到,则进一步获取程序文件的基本信息,如文件大小及在磁盘驱动器上的物理位置 操作系统分配内存,将程序文件装入这块内存中。 操作系统执行一条跳转指令,跳到这个程序的第一条指令以开始这个程序的执行。,多任务 多任务操作系统能够同时运行多个任务 对于一次只能运行一条指令的CPU,多任务是个假象。是通过调度程序为每个任务分配小的时间片 多任务操作系统运行在支持多任务切换的处理器上 多任务切换时,要保存当前任务的状态,包括处理器的寄存器,程序计数器(即指令指针),标志寄存器等。 抢占式多任务系统允许高优先级任务打断低优

9、先级任务,可以使系统更加稳定。,(补充),第二章 x86处理器架构,2.1 一般概念 2.2 32位x86处理器 2.2.2 基本执行环境 2.2.3 x86内存管理 2.3 64位x86-64处理器 2.4 典型x86计算机组件 2.5 输入输出系统(I/O系统),2.2 32位x86处理器,IA-32系列自身在发展 向前兼容 很多改进对编程是不可见的,如流水线,分支预测等 从编程角度能见到的扩展就是指令集的扩展,如增加浮点数处理,多媒体处理,图形处理等。,2.2.1 操作模式,IA-32处理器有3种基本的操作模式 保护模式,是基本模式 实地址模式 系统管理模式,为操作系统提供了用以实现电源

10、管理和系统安全等功能的机制。通常是由想自定义特定的系统启动过程的计算机制造商实现的。 虚拟8086模式,是保护模式的一个特例。在保护模式下执行实地址模式的软件。,保护模式 指令分成不同的级别,程序也分成不同的级别,如系统级程序和应用级程序,应用级程序能执行的指令要少 不同程序间内存独立,一个程序不能去访问其他程序的内存 现代的windows,Linux等操作系统,都把CPU设置在保护模式下工作 是从286开始引入保护模式的概念,在之前的8086不具有这种工作模式,实模式 即是8086的工作模式 由于IA-32的向前兼容特性,可以理解成在整个IA-32系列CPU中都包含了8086这个CPU内核

11、在CPU加电时,CPU工作在实模式。平时机器启动过程中,开始的开机自检阶段,CPU工作在实模式,在windows操作系统载入过程中的某一步,CPU操作模式被置成保护模式,然后就一直工作在保护模式 实模式无指令级别概念,内存也不独立,不同程序间可以相互访问对方的内存,使得系统可能不稳定。 在DOS操作系统中,CPU工作在实模式,2.2.2 基本执行环境,地址空间 在32位的保护模式下,一个任务或程序可以寻址4GB的线性地址空间32位地址线能够表达的上限 实地址模式下,只用到20根地址线,最大地址访问量是1M 在虚拟8086模式下,一个系统中可以运行多个虚拟的8086模式程序,每个程序拥有独立的1

12、M地址空间。,寄存器 CPU内部的存储单元,访问速度比内存快得多 图2-3列出了所有程序能访问的寄存器(见下页),8个32位的通用寄存器 EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP 把这些寄存器名字中的第一个字母E去掉,这些寄存器就变成8个16位的通用寄存器AX,BX,CX,DX,SI,DI,BP,SP 其中,AX,BX,CX,DX这4个16位的寄存器每个寄存器又可以对半分成两个8位的寄存器,名字分别为AH,AL,BH,BL,CH,CL,DH,DL,通用寄存器主要用于算术运算和数据的传送。某些寄存器有特殊用法: EAX在乘法和除法指令中被自动使用。通常被称为扩展累加寄存器。

13、 在某些指令中,CPU自动使用ECX作为循环计数器。 ESI和EDI由高速内存数据传送指令使用,通常称为扩展源变址寄存器(Extended Source Index Register)和扩展目的变址寄存器(Extended Destination Index Register)。 第5版翻译为:扩展源指针寄存器,扩展目的指针寄存器。 ESI通常与DS段配合使用;EDI通常与ES段配合使用 ESP寻址堆栈(一种系统内存结构)上的数据,极少用于普通的算述运算和数据传送,通常称之为扩展堆栈指针寄存器。 与SS配合 高级语言使用EBP指向堆栈上的函数参数和局部变量。一般不应该用于普通算术运算和数据传送

14、。通常称为扩展帧指针寄存器。 通常翻译为:基址指针寄存器,EBX - 基址寄存器(常用于地址索引),EDX - 数据寄存器(常用于数据传递),6个16位的段寄存器 在实模式下,段寄存器用来存放段的基地址 在保护模式下,段寄存器存放段描述符的索引(段描述符选择子,segment descriptor selector) 在保护模式下的应用程序编程,较少关注段寄存器,而在实模式下,则是必须关注的,不正确的段寄存器设置,会导致内存的错误访问。 通常每个段寄存器有特定的用途 CS用于指向代码 SS用于指向堆栈 DS等其他段寄存器指向数据(全局变量),指令指针寄存器EIP 存放下一条要执行的指令的地址

15、每执行完一条指令,CPU会自动修改EIP,以指向下一条指令的地址,通常,其值是递增的。但如遇到跳转指令(相当于C语言中goto语句),则不一定是递增了。 不能用数据传送指令、算术指令等指令去修改EIP的值。,EFLAGS寄存器(标志寄存器) 由控制CPU的操作或反映CPU某些运算结果的独立的二进制位构成。 很多算术逻辑运算指令的运算结果会影响到这个寄存器的某些位 有些指令可以测试和控制这些单独的处理器标志位。, C (Carry Flag,进位标志CF) 结果的最高位(字节、字操作的D7、D15)进位或借位时C=1。 A (Auxiliary Carry Flag,辅助进位标志AC) 低4位进

16、位或借位时A=1。 P (Parity Flag,奇偶标志PF) 操作结果(的最低有效字节)中“1”的个数为偶数P=1。 Z (Zero Flag,零标志ZF) 结果为0则Z=1。 S (Sign Flag,符号标志SF) S = 符号位值(补码时0=正,1=负)。 O(Overflow Flag,溢出标志OF) 运算结果超界(结果太大或太小)时O=1。,*,*, D (Direction Flag) 串操作时,D=1,自动减(左右处理串);D=0,增。 I (Interrupt Flag) I=0,中断屏蔽;I=1,中断不屏蔽。 T (Trace Flag) T=1,置单步执行方式(方便跟踪)。,(“控制CPU的操作”部分),系统寄存器 IA-32有若干重要的系统寄存器 这些寄存器的访问要求一定的指令级别 在windows平台下,普通应用程序不能访问这些寄存器,只能在操作系统内核程序才能访问他。驱动程序属于内核程序。,MMX寄存器,XMM寄存器,其它不常用的寄存器,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号