本文已参与「新人创作礼」活动,一起开启掘金创作之路。
👨🎓作者简介:一位喜欢写作,计科专业大二菜鸟
🏡个人主页: starry陆离
🕒首发日期:2022年7月10日星期日
🌌上期文章:『期末复习』微处理器发展历程与微型计算机结构
📚订阅专栏:『微机原理与接口技术』 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦
Pentium的寄存器
1.Pentium的寄存器
基本寄存器组:供系统程序和应用程序共同访问
- 通用寄存器(8个)(简记:EABCDX ESBP ESDI)
- 指令指针寄存器 (EIP)
- 标志寄存器 (EFLAGS)
- 段寄存器 (6个) (简记:CS SS DS ES FS GS)
系统寄存器组:供系统程序访问
- 地址寄存器
- 控制寄存器
- 调试寄存器
- 测试寄存器
浮点寄存器组:供系统程序和应用程序共同访问
- 数据寄存器
- 标记字寄存器
- 状态寄存器
- 控制字寄存器
- 指令指针寄存器
- 数据指针寄存器
2.保护方式下存储单元的地址
保护方式也叫虚地址方式哦
- 48位的逻辑地址16:32(不同于实模式下为16:16)
- 段寄存器中不是存放段地址,而是段选择子
- 实模式下,逻辑地址空间中存储单元的地址由【段值】+【段内偏移】两部分组成。
- 保护模式下,虚拟地址空间(相当于逻辑地址空间)中存储单元的地址由【段选择子】和【段内偏移】两部分组成。
2.1段描述符
段描述符: 为了实现分段管理,把有关段的信息即段基地址、长度、属性全部存放在一个称为段描述符的8个字节长的数据结构中,并把系统中所有的描述符编制成表,以便硬件查找和识别。
- 段基址32位、界限(段长度)20位、属性12位
2.2段描述符表
把系统中所有的描述符编制成表,以便硬件查找和识别
3种描述符表
- 全局描述符表GDT
- 局部描述符表LDT
- 中断描述符表IDT
一个系统中
- GDT和IDT是面向系统中所有任务的,是全局性的,都只能有一个,每个任务一个LDT,可以有多个(多任务)
- IDT和每个LDT本身也各对应一个存储段
- LDT的描述符在GDT中
2.3段选择子
段选择子长16位。
- 其高13位是描述符索引(Index)。所谓描述符索引是指描述符在描述符表中的序号。
- 第2位是引用描述符指示位,标记为TI,TI=0表示从全局描述符表GDT中读取该段的描述符;TI=1表示从局部描述符表LDT中读取该段的描述符。
- 选择子最低两位是请求特权级RPL,用于特权检查。00~11可以表示0 ~ 3共四级特权。其中0级最高
这里可以结合之前的虚地址模式下的逻辑地址向线性地址的转换来理解,实在不懂也没关系,后面会专门学逻辑地址转物理地址,和逻辑地址转线性地址再转物理地址
肯定晕了吧,我来捋一捋:
-
虚地址模式下的逻辑地址是通过【段描述子】+【段内偏移量】,通过段选择子我们找到段描述符表,段描述符表中存放着段描述符,通过段描述符我们可以找到32位的段基址,【段基址】+【段内偏移量】就是我们的线性地址,如果没有分页机制的话,这个地址就是我们要找的物理地址
-
所以前面的笔记中我有记录:其实在这里就解释为什么不启动分页机制:物理地址=线性地址 。
物理地址可用以下公式: 1. 不启动分页机制:物理地址=线性地址 2. 启动分页机制:物理地址=页基址+页内偏移量 = 2^32^ *页码+页内偏移量
3.描述符表的优点
- 可以大大扩展存储空间
- 可以实现虚拟存储
- 可以实现多任务隔离
4.问答环节
1.段选择子各位的含义
某个段选择子的值是0031H (0000,0000,0011,0001B),那么请思考:
描述符索引DI(Index),描述符指示位TI及类型,请求特权级RPL分别是多少?
(高13位)DI=0 0000 0000 0110 B = 6
TI=0 在全局描述符表中(GDT)
RPL=01 请求特权1级
2.Pentium采用了哪些先进技术
-
先进的体系结构
- 扩充数据总线
- cache分离提速
- u/v并行流水线
- 片内集成FPU
- 分页分段两级存储
- 增强异常检测
-
CISC和RISC相结合的技术
-
超标量流水线技术
- 并行方式在U、V两条流水线上同时执行两条指令
- U、V两条流水线,U—所有整数运算,V—简单整数运算和数据交换指令
-
先进的分支预测技术
- 使用分支目标缓冲器BTB(branch target buffer)来执行预测功能
- 双向分支预测
3.指令流水线的组成部件有哪些?每条指令流水线分为哪几级?
指令流水线由以下四个部件组成:
- 总线接口部件(读取指令和存取数据)、
- 指令预取部件(总线空闲时从存储器读取指令放入指令预取队列)、
- 指令译码部件(指令译码,送入译码指令队列)、
- 执行部件(控制两条流水线的运行)
Pentium的指令流水线由5级组成
- 指令预取级PF
- 首级译码级D1
- 二次译码级D2(形成物理地址)
- 执行级EX
- 回写级WB