【汇编语言与计算机系统结构笔记04】80x86计算机组织、保护模式、存储器、寄存器、计算机系统结构金字塔

痴心易碎 提交于 2019-12-30 20:13:04

本次笔记内容:
05.80x86计算机组织

计算机系统

在这里插入图片描述

如上图,CPU与主存间,通过一个bridge(总线)相连。上图还是比较抽象的,当前,CPU的一个趋势是,集成程度越来越高。

CPU中,PC即当前指令的地址,ALU是arithmetic and logic unit即计算路径。目前Memory Control、集成显卡等已经集成到CPU中了。

现在即便集成度(晶体管)提升,但性能并没有提升。因为程序往往是串行的,并行性有限。

在这里插入图片描述

上图中,在代码被从Disk中load到主存中,被CPU处理,再把信息投入显示器。

存储器 / 主存(main memory)

存储单元的地址和内容:

  • 存储器以字节(8 bit)为单位存储信息;
  • 每个字节单元有一个地址,从0编号,顺序加1;
  • 地址用二进制数表示(无符号整数,写成十六进制);
  • 一个32位字要占用相继的四个字节,低位字节存入低地址,高位字节存入高地址;
  • 机器以字对齐地址访问(读/写)存储器;
  • 字单元地址用它的低地址来表示。

80x86处理器与保护模式

历史

8086 / 8088 微处理器
  • 8086是由ntel于1978年设计的微处理器;
  • Intel公司在推出8086之后,推出了介于16位与8位之间的准16位微处理器8088;
  • 8088与8086之间的区别主要在于8088对外只有8根数据线引脚,访问16位的操作数需要两个总线周期;
  • 8088的这一特点使它能够十分方便地与8位接口芯片相连接;
  • 1980年,IBM公司使用8088成功地开发了16位微型计算机:IBM-PC。
80186和80286微处理器
  • Intel公司把大型计算机的技术融合到微处理器中,首先研制的80186在技术上并不十分成熟,没有获得广泛的应用;
  • 1982年Inte推出了增强型16微处理器80286,集成度达13万管/片,时钟频率提高到5MHz到25MHz,它的16条数据线和24条地址线相互独立,不再分时使用,可以寻址16M的地址空间;
  • 80286 CPU增加了运行多任务所需要的任务切换、存储管理和多种保护功能。
80286 CPU基本工作方式
  • 实地址方式:和8086一样使用20根地址线寻址1M的内存空间,DOS应用程序占用全部系统资源;
  • 保护方式:80286 CPU具有虚拟内存管理和多任务处理功能,通过硬件控制可以在多任务之间进行快速切换;
  • 80286 CPU的内部组成:总线接口部件BlU、地址单元AU、指令单元IU、总线单元BU、执行部件EU;
  • IBM公司以80286为CPU生产了著名的IBM-PC/AT微型计算机,它的许多技术被沿用至今。

32位80x86微处理器

80386微处理器
  • 1985年,Intel公司推出了第四代微处理器,32位的微处理器80386;
  • 片内集成27.5万个晶体管,时钟频率为16MHz到33MHz。具有32位数据线和32位地址线,32位通用寄存器;
  • 80386内部由中央处理器CPU、存储器管理部件MMU、总线接口部件BIU组成;
  • 80386有3种工作模式:实地址模式、虚地址保护式和虚拟8086模式。
80x86的三种工作模式

实模式: 操作相当于一个可进行32位快速运算的8086;

保护模式: 是80x86设计目标达到的工作模式,通过对程序使用的存储区采用分段、分页的存储管理机制,达到分级使用、互不相互干扰的保护目的。能为每个任务提供一台虚处理器,使每个任务单独执行,快速切换。

虚拟8086模式: 保护模式下同时模拟多个8086处理器。

32位微处理器的寄存器
  • 80x86微处理器由16位升级为32位后,它的寄存器也对应升级为32位。
  • 为了新的工作方式和存储管理的需要,増加了一些用于控制的寄存器。
  1. 数据寄存器:16位80x86处理器原有的4个通用数据寄存器扩展为32位,命名为EAX、EBX、ECX和EDX。仍然可以使用原有的16位和8位寄存器,如AX、BX、CX、DX、AH、AL、BH、BL等,形式如下图。

在这里插入图片描述

  1. 地址寄存器:原有的4个主要用于内存寻址的通用寄存器同样扩展为32位,命名为ESI、EDI、EBP、ESP。在实地址模式下仍然可以使用原有的16位寄存器SI、DI、BP和SP。

  2. 指令指针寄存器扩展为32位,更名为EIP,实地址下仍然可以使用它的低16位IP。

在这里插入图片描述

  1. 在原有的4个段寄存器(CS DS SS ES)基础上,增加了2个新的段寄存器FS和GS。段存器长度均为16位,其中13位代表内存段的一个编号,称为“段选择器”。
保护模式下的80x86(段模式)
  • 支持多任务处理;
  • 支持虚拟存储器。

在操作系统中有讲过。

**保护模式保护什么?**分清不同程序使用的存储区域,不允许随便使用别人的数据和代码。必要条件为:

  • 要标记每段存储区的所有者或被使用的权限级别;
  • 要标记使用者是谁(权限级别);
  • 中间环节:CPU要去判断此次访问是否合法。

在x86-32体系结构的保护模式下,一个内存地址是由段基地址、偏移地址两个要素构成的。

每个段的描述(即段描述符)由三个要素构成段基地址(32位)、段长度(20位,段长度单位为2^12)、访问权限。段描述符的长度为64位。

出于系统兼容原因,段寄存器只有16位,如何表示64位的段描述符?答:通过描述符表,将段寄存器中的高13位值作为索引来访问该表,从而获得64位的段描述符。

描述符表分为两类:GDT与LDT。

  • GDT是全局描述符表,主要存放操作系统和各任务公用的描述符。公用的数据和代码段描述符、各任务的TSS描述符和LDT描述符;TSS是任务状态段,存放各个任务私有运行状态信息描述符GDT register (GDTR),48 bit;
  • LDT是局部描述符表,主要存放各个任务的私有描述符(一个任务也可能分多个段,而一个段需要一个描述符,因此每个任务要有一个LDT);
  • 段寄存器:高13位用来指示描述符在描述符表中的索引号,低两位是表示使用描述符的特权级别。另外一位(T1)是GDT和LDT的信号量,如果T1=0,则使用GDT,如果T1=1,则使用LDT。

在这里插入图片描述

如上图,GDT只存储在GDTR中的。段寄存器记录了本段在GDT上的位置,从而访问,获取相应描述符。

在这里插入图片描述

如上图,当T1=1时,首先通过LDTR在GDT上找到LDT的描述符(LDT本身也需要一个描述符),接着,段寄存器再在LDT找到自己索引的的描述符x。

寄存器与处理器的比较
寄存器 存储器
在CPU内部 在CPU外部
访问速度块 访问速度慢
容量小,成本高 容量大,成本低
用名字表示 用地址表示
没有地址 地址可用各种方式形成
计算机体系结构金字塔

在这里插入图片描述

如上图,速度与容量(低成本)不可兼得。

缓存,把最近最常使用的数据集放在cache中,效率大大提高。速度、成本、容量居于上下层次间。

可以把塔中每三个层次的中间层视为上下层次间的缓存。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!