80X86微处理器发展与内部结构
Intel微处理器发展概况
微处理有关的常用术语
- 字长(数据宽度)
字长是微处理器一次可以直接处理的二进制数码的位数,它通常取决于微处理器内部通用寄存器的位数和数据总线的宽度。微处理器的字长有4位、8位、16位、32位和64位等。 - 寻址能力
指CPU能直接存取数据的内存地址的范围,它由CPU的地址总线的数目决定。 - 主频
主频也叫时钟频率,用来表示微处理器的运行速度,主频越高,表明微处理器运行越快,主频的单位是 MHz、GHz。 - MIPS
MIPS 是 Millions of Instruction Per Second 的缩写,用来表示微处理器的性能—运算速度,用每秒钟能执行多少百万条指令表示。 - 微处理器的集成度
指微处理器芯片上集成的晶体管的密度。
最早 Intel 4004 的集成度为2250个晶体管,PentiumIII 的集成度已经达到750万个晶体管以上,集成度提高了3000多倍。
微处理器发展概况图
32位微处理器内部结构
486微处理器内部结构寄存器
486内部寄存器分为4类:
- 基本结构寄存器
- 浮点寄存器
- 系统级寄存器
- 调试测试寄存器
应用程序只能访问基本结构寄存器和浮点寄存器。(我们只学习基本结构寄存器)
486内部基本结构寄存器
32位微处理器地址空间
存储空间
物理空间(物理存储器地址空间):程序的运行空间,即主存空间。
486有32条地址线,内存最大容量4G。这4G字节称为物理存储器,每一单元的地址称为物理地址,其地址范围:0000,0000H~FFFF,FFFFH为物理存储空间。
虚拟空间(虚拟存储器地址空间):编程空间。
- 虚拟存储器是一项硬件和软件结合的技术。
- CPU内部的存储管理部件把主存(物理存储器)和辅存(磁盘)看作是一个整体,即虚拟存储器。
- 允许编程空间为 246=64T,程序员可在此地址范围内编程,大大超过物理空间。该空间对应的地址称为虚拟地址或逻辑地址。
- 程序运行时,操作系统从虚拟空间取一部分程序代码载入物理空间运行。
- 当程序运行需要调用的程序和要访问的数据不在物理存储器时,操作系统再把那一部分调入物理存储器.……数据的交换极快,程序察觉不到。
线性空间
- 当程序从虚拟空间调入物理空间时,要进行地址转换。
- 分段部件首先把虚拟地址(编程地址)转换为线性地址。
- 如果不分页的话,线性地址就是物理地址;
- 如果分页的话,则由分页部件把线性地址转换为物理地址。
实模式:存储空间仅分段,而不分页;
保护模式:存储空间先分段,再分页。
I/O 空间
- 486利用低16位地址线访问IVO端口,所以IVO端口最多有216=64K,I/O地址空间为0000H~FFFFH。
- I/O地址空间不分段;
- I/O地址空间与存储空间不重叠。CPU有一条控制线M/ ,在硬件设计上用M/ =1,参与存储器寻址,用M/ =0参与I/O寻址。
- 从PC/XT~Pentium,基于Intel微处理器的系统机,实际上只使用低10位地址线,寻址210=1024个I/O端口。
32位微处理器工作模式
实地址模式(实模式)
①加电、复位之后,486自动工作在实模式,系统在DOS管理下;
②在实模式下,486只能访问第一个 1M 内存(00000H~FFFFFH);
③存储管理部件对存储器只进行分段管理,没有分页功能,每一逻辑段的最大容量为64K;
④在实模式下,段寄存器中存放段基址。
保护虚拟地址模式(保护模式)
①在保护模式下,486支持多任务操作系统;
②在保护模式下,486可以访问4G物理存储空间,存储器用虚拟地址空间、线性地址空间和物理地址空间三种方式来进行描述,虚拟地址就是逻辑地址。寻址机构不同于8086,通过一种称为描述符表的数据结构来实现对内存单元的访问,该描述符由存放在段寄存器中的选择符来确定;
③CPU 内部的存储管理部件对存储器采用分段和分页管理。可以将磁盘等存储设备有效映射到内存,使逻辑地址空间大大超过实际的物理地址空间,这样,使主存储器容量很大;
④既能进行16位运算,也能进行32位运算。
486工作在保护模式下,才能真正发挥它的设计能力。
关于保护机制:
高级别的程序可以访问同级或低级的数据段,反之则不行。
虚拟86模式
虚拟86模式是保护模式下的一种特殊工作模式,可运行实模式程序。
在操作系统管理下,486可以分时地运行多个实模式程序。
不能从实模式直接进入虚拟86模式,也不能从虚拟86模式直接回到实模式。
32位微处理器实模式下20位物理地址的形成
实地址模式下的物理地址与逻辑地址
- 物理空间对应的物理地址
物理地址是指1MB 存贮区域中的某一单元地址,地址信息是20位的二进制代码,以16进制表示是 00000H~FFFFFH 中的一个单元。
CPU 访问存贮器时,地址总线上送出的是:20位物理地址。 - 编程空间(虚拟空间)对应的逻辑地址
编制程序应采用逻辑地址。程序是分段的,逻辑地址由段基址和偏移地址组成,书写成:
段基址:偏移地址
- 在一个逻辑段中,各单元的段地址是相同的,偏移地址是该单元相对于段首的地址偏移量
- 所有段都是起始于16字节的边界,段起始物理地址为XXXX0H
- 物理地址为12345H的单元,逻辑地址可能为 1000H:2345H ,也有可能是1200H:345H、1230H:45H…
- 实模式下,把1M字节的存储器分为任意数量的段,其中每一段最大长度为64K(216) 字节。
- 段的起始地址的高16位地址称为该段的段基址。段内再由16位二进制数寻址,段内寻址的16位二进制数地址是存储单元到段起始地址的距离,称为偏移地址。
实地址模式CPU20位物理地址的形成
注:物理地址是唯一的,不同的逻辑地址可以得到相同的物理地址,如:
- 1000H:2345H —— 12345H
- 1200H:0345H —— 12345H
逻辑地址需由程序员在编程时给出,这是由于编程在逻辑空间进行,还没有定位到存储器。
所以:段基址,指明由哪个段寄存器给出即可;偏移地址,由程序员在程序中给出具体值;
实地址模式下各逻辑段物理地址的形成
以16位寻址为例,段寄存器中存放段机制:
- 代码段:CS*24 + IP = 指令单元的物理地址;
一条指令的一个字节取出后,IP自动加1,指向下一字节。 - 堆栈段:SS*24 + SP = 栈顶单元的物理地址;
- 数据段:DS*24 + 偏移地址 = 数据单元的物理地址;
- CS、IP的初值:由操作系统赋值
- SS、SP的初值:
①由程序员赋值
②由操作系统自动赋值 - DS/ES/FS/GS的初值:由程序员赋值。
- BX/SI/DI/BP的初值:由程序员赋值。
转载:https://blog.csdn.net/weixin_43734095/article/details/101703567