《Intel+汇编语言程序设计(第五版》——第2章 IA-32体系结构

 

4.
 4.IA-32微机的构成

5.输入输出系统

5.


 

 

===========================内存储器:程序运行时存放指令和数据的地方。存储单元接受CPU的数据请求,从随机访问存储器(RAM)中取出数据送至CPU,并将运算结果从CPU送回存储器中

 

时钟(clock):涉及CPU和系统总线的每个操作都由一个内部时钟同步,这个时钟以固定的频率产生脉冲。


多级流水线
IA-32处理器中的Intel386是拥有6级流水线的处理器。

 

多级流水线

 
l 假设处理器的每个执行阶段都需要一个时钟周期:
对于k级的非流水线处理器,执行n条指令需要n*k个时钟周期。

超标量流水线

 

有两条以上的流水线,使得多条指令能够同时处于同一执行阶段

奔腾Pro:3条流水线




内存的读取

周期1:内存操作数地址的各位被放到地址总线ADDR上。
周期2:读取线RD被设为低(0)以通知存储器要读一个值。
周期3:CPU等待一个周期,给存储器一些时间以做出反应,在这个周期中,内存控制器将数据放在数据总线DATA上。
周期4:读取线RD变为1,以通知CPU现在可以在数据总线上读取数据值了。

 

 


程序是如何运行的

1. 装入和执行进程

 

当计算机的操作系统加载和运行程序时,将按顺序进行
以下步骤:
l
1 OS在当前磁盘目录中查找程序文件名,如果未找到就在预先定义的目录列表中查找,如果OS还是找不到,就发出一条错误信息。  
l
2 如果找到了程序文件名,OS返回磁盘上程序文件名的基本信息,如文件的大小和物理位置。
l
 
3 OS确定下一个可用的内存块的地址,并将程序文件载入内存,然后将程序的大小和位置等信息登记在一张表中。
4 OS执行一条分支转移指令,使CPU在程序的第一条机器 指令处开始执行。一旦程序运行就被称为一个进程,并 分配一个进程ID。
4程序自动运行,OS的任务就是跟踪进程的执行并响应进程对系统资源的请求。
5进程结束时,其句柄被删除,使用的内存也被释放以便 能够由其他程序使用。
  
                                                                                  
对于k级的单流水线处理器,执行n条指令需要k+(n-1)个时钟周期
用户发出运行特定程序的命令。

 

 

 



标量流水线

 

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位地址,0232-1

         实地址模式:处理器最多只能访问1MB(使用20位地址,0220-1

         虚拟8086模式:处理器处于保护模式中对实地址模式的模拟,可以运行多个程序,但每个程序只能寻址1MB内存的空间。

二、基本寄存器

         寄存器是CPU内部的高速储存单元,访问速度比常规内存快得多。包括:

         832位通用寄存器

         616位段寄存器

         一个存放处理器标志的寄存器(EFLAGS)

         一个指令指针寄存器(EIP)

 

l           通用寄存器的特殊用法

         EAX:扩展累加寄存器。在乘法和除法指令中被自动使用;

         ECX:循环计数器。

         ESP:扩展堆栈指针寄存器。一般不用于算术运算和数据传送,而用于寻址堆栈上的数据。

         ESIEDI:扩展源指针寄存器和扩展目的指针寄存器。用于内存数据的存取;

         EBP:扩展帧指针寄存器。由高级语言用来引用函数参数和局部变量;

l           段寄存器

l            

l           段是一块预分配的内存区域。用于存放程序的指令(代码段)、变量(数据段)、函数的局部变量和参数(堆栈段)

l           在实地址模式下,段寄存器用于存放段的基址;保护模式下,段寄存器存放段描述符表的指针(索引)

l           段寄存器包括:CSSSDSESFSGS

         CS往往用于存放代码段地址;

         DS存放数据段地址;

         SS存放堆栈段地址;

         ESFSGS则可指向其他数据段。

指令指针寄存器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开始集成到主处理器

芯片中。

         880位的浮点数据寄存器 ST(0)ST(7)

         248位的指针寄存器

         316位的控制寄存器

 

Intel微处理器的历史

 

         Intel 8086

          Intel 80286

          IA-32处理器系列

          P6处理器系列

          奔腾Ⅳ和Xeon系列

          CISCRISC

         虚拟8086模式

         计算机运行于保护模式下后创建的1MB地址空间的虚拟机,虚拟机对运行于实地址模式下的80x86计算机进行模拟。

         例如:在Windows NTWindows 2000下,打开一个命令行窗口时就创建了一个8086虚拟机

         在实地址模式下,处理器使用20位的地址总线,可以访问1MB(0~FFFFF)内存。

         Intel 8086只有16位的地址线,不能直接表示20位的地址,因此采用了内存分段的解决方法。

         :将内存空间划分为64KB的段Segment

         -偏移地址方式:

         段地址存放于16位的段寄存器中(CSDSESSS

         16位的偏移地址

 

l           一个典型的程序有三个段:代码段、数据段和堆栈段。

        CS包含一个16位的代码段基地址。

        DS包含一个16位的数据段基地址。

        SS包含一个16位的堆栈段基地址。

保护模式

 

l           段寄存器(CSDSSSESFSGS)指向段描述符表,操作系统使用段描述符表定位程序使用的段的位置。

l           一个典型的保护模式程序有三个段:代码段、数据段和堆栈段,使用CSDSSS三个段寄存器。

         CS存放代码段描述符表的地址

         DS存放数据段描述符表的地址

         SS存放堆栈段描述符表的地址

l           32位地址总线寻址,每个程序4GB0FFFFFFFF

         平坦分段模式

         多段模式Multi-Segment):内存划分为64KB的段

         分页模式Paging

l            将一个段分割成称为页(Pages)的4KB的内存块;

 

 

 

 

 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值