本系列文章是本人读《深入理解计算机系统》时的摘抄和读书笔记,内容比较精简,可能会有错误,如想展开深入理解请阅读源书
序言
本章将介绍处理器硬件的设计,研究硬件系统执行某种ISA(指令集体系结构)。
文章目录
4.1 Y86-64指令集体系结构
4.1.1 程序员可见的状态
程序员可见状态:程序中每条指令都会读取或修改处理器状态的某些部分。
RF:程序寄存器,存放程序的控制信息?
ZF、SF、OF:零、符号、溢出,存最近算术或逻辑指令造成影响的有关信息。
PC:程序计数器,存放当前正在执行指令的地址
Stat:表面程序执行的总体状态(正常或异常)。
4.1.2 Y86-64指令
- movq:从源到目的间传送数据
- addq、subq、andq、xorq:对寄存器数据进行操作
- 跳转指令:根据分支指令的类型和条件的代码的设置选择分支。
- 条件传送指令
- call:将返回地址入栈然后跳到目的地址。
- pushq、popq:入栈和出栈
4.1.3 RISC和CISC指令集
CISC:复杂指令集计算机,指令数量多
RISC:精简指令集计算机,指令数量少
4.2 逻辑设计和硬件控制语言HCL
HDL:硬件描述语言,一种文本表示,描述硬件结构,常用语言是Verilog。
多路复用器:将简单的门电路进行组合,根据输入控制信号的值
4.2.5 存储器和时钟
组合电路不存储信息,知识简单相应输入信号,产生等于输入的某个函数的输出。
时序电路:有状态并且在这个状态上进行计算的系统。
时钟寄存器(寄存器):存储单个位或字,时钟信号控制寄存器加载输入值。
随机访问存储器(内存):存储多个字,用地址选择读或写哪个字。处理器的虚拟内存系统,硬件和操作系统软件结合来使得处理器可以在一个很大的地址空间内访问任意的字。寄存器文件,标识地址。
4.3 Y86-64的顺序实现
4.3.1 将处理组织成阶段
- 取指:从内存读取指令字节,地址为程序计数器PC的值。
- 译码:从寄存器文件读入最多两个操作数。
- 执行:算术逻辑单元ALU执行指令指明的操作,计算内存引用的有效地址。
- 访存:将数据写入内存,或从内存读出数据。
- 写回:将结果写入到寄存器文件中。
- 更新:将PC设置成下一条指令的地址。