第四章 处理器体系结构
4.1 Y86-64指令集体系结构
- 程序员可见状态:
Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分,这称为程序员可见状态。 - Y86-64状态包括15个寄存器、程序计数器PC(存放当前正在执行指令的地址)、、3个一位的条件码(ZF、SF和OF)、内存和状态码。
- Y86-64指令
- 4个传送指令
irmovq rrmovq mrmovq rmmovq
其中指令的第一个字母表明源的类型(i r m)第二个字母表明目的的类型(r m)
- 4个整数操作指令
addq subq andq xorq
他们只对寄存器数据进行操作,而X86还允许内存数据进行这些操作,设置三个条件码ZF SF OF(零,符号,溢出)
- 7个跳转指令
jmp jle jl je jne jge jg
根据分支的类型和条件代码的设置来选则分支
- 6个条件传送指令
cmovle cmovl cmove cmovne cmovge cmovg
条件码满足所需要的约束时才会更新寄存器的值。
- call:将返回地址入栈,然后跳到目的地址。
- ret:从call的调用中返回。
- pushq和popq:入栈和出栈。
- halt:停止指令的执行。
- 指令编码
上图给出指令的字节级编码,每条指令需要1-10个字节不等,每条指令第一个字节表明指令的类型:搞四位是代码部分,低四位是功能部分。 - 组成:
- 一个单字节的指令指示符
- 一个单字节的寄存器指示符
- 一个八字节的常数字
4.2 逻辑设计和硬件控制语言HCL
- HCL与HDL的区分
- HCL:硬件控制语言
- HDL:硬件描述语言
- 逻辑门
- 与:AND用“&&”表示
- 或:OR用“||”表示
- 非:NOT用“!”表示
- 与、或、非三种逻辑门可以用一种与非门或者或非门实现
- 与非和与的组合可以概括大部分计算
- HCL情况表达式通用格式
- Y86-64的顺序实现
- 取值:fetch
- 译码:decode
- 执行:execute
- 访存:memory
- 写回:write back
- 更新:PC update
- SEQ
- 白色方框表示时钟寄存器
- 淡蓝色方框表示硬件单元
- 灰色圆角矩形表示控制逻辑块
- 白色圆圈中是线路的名字
- 粗线表示宽度为字长的数据
- 细线表示宽度为字节或更窄的数据
- 虚线表示单个位的连接