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

    技术2024-08-16  60

     

    1.  1.基本概念 2.  2.IA-32处理器体系结构 3.  3.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的内存块;

     

     

     

     

     

     

    最新回复(0)