计算机系统导论——读书笔记——第四章 处理器体系结构

2019年10月14日

 

1.指令集体系结构(Instruction-Set Architecture, ISA):一个处理器支持的指令和指令的字节级编码.

2.硬件控制语言(Hardware Control Language, HCL):一种描述硬件系统控制部分的简单语言.

 

4.1 Y86-64指令集体系结构

状态单元、指令集和他们的编码、一组编程规范、异常事件处理

 

4.1.1 程序员可见的状态

 

 

4.1.2 Y86-64指令 

1.Y86-64 vs x86-64

Y86-64指令集是x86-64的子集,只包含8字节(q)操作

前者简单,后者紧凑(常数值编码灵活、字段不固定)

2.Y86-64指令

(1)movq指令:irmovq,rrmovq,mrmovq,rmmovq(格式为: 源+目的+movq,源和目的包括i(instant number),r(register),m(memory);注意,不允许immovq或mmmovq)

(2)4个整数操作:addq,subq,andq,xorq(注意,只对寄存器操作,同时设置条件码ZF、SF、OF)

(3)7个跳转指令:jmp,jle,jl,je,jne,jge,jg

(4)6个条件传送指令:cmovle,cmovl,cmove,cmovne,cmovge,cmovg(注意:只能寄存器->寄存器)

(5)call,ret

(6)pushq,popq

(7)halt指令:停止指令的执行,并设置状态码Stat为HLT

注:目的地址Dest为8字节常数,使用绝对寻址(注意小端法)

 

4.1.3 指令编码

1.指令的字节级编码

(1)指令类型——第一个字节:高4位是代码部分code(0x0~0xB),低4位是功能部分function(见图4-3)

(2)寄存器指示符字节register specifier byte——第二个字节/无:存放寄存器标识符(register ID)——15个寄存器(0x0~0xE)、无寄存器(0xF)(见图4-4)

(3)常数字constant word——8字节:立即数V、地址指示符的偏移量D、目的地址Dest(见图4-3)

 

例:指令rmmovq %rsp, 0x123456789abcd(%rdx)的字节编码为4042cdab896745230100.

2.指令集重要性质:无二义性

3.CISC(复杂指令集计算机=x86-64)指令集 vs RISC(精简指令集计算机)

Y86-64 = CISC(x86-64)的采用 + RISC的简化

 

4.1.4 Y86-64异常——状态码Stat

遇到异常时更完整的处理:处理器调用异常处理程序(exception handler)(详见第8章)

 

4.1.5 Y86-64程序

YAS汇编器,YIS指令集模拟器

 

4.1.6 一些Y86-64指令的详情

x86-64处理器上:pushq %rsp总是压入%rsp的原始值,popq %rsp总是弹出%rsp的原始值.

 

 

 

4.2 逻辑设计和硬件控制语言HCL

硬件控制语言HCL(Hardware Control Language)

 

4.2.1 逻辑门

1.逻辑门:数字电路的基本计算单元

2.AND - &&, OR - ||, NOT - !

 

4.2.2 组合电路和HCL布尔表达式

4.2.3 字级的组合电路和HCL整数表达式

1.组合电路combinational circuits:很多逻辑门组合成一个网所构建的计算块(computational block)

2.简单的组合电路例子

(1)单个位的相等检测电路

HCL表达式:bool eq = (a && b) || (!a && !b);

(2)单个位的多路复用器(multiplexor)电路

HCL表达式:bool out = (s && a) || (!s && b);

(3)字级相等检测电路

HCL表达式:bool Eq = (A == B);

 

(4)字级多路复用器电路

HCL表达式:  

word Out = [

  s: A; //case (s==1): Out = A;

  1: B; //default: Out = B;

];

(5)四路复用器

HCL表达式:

word Out4 = [

  !s1 && !s0 : A; # 00
  !s1        : B; # 01
  !s0        : C; # 10
  1          : D; # 11

];

(6)找最小值

HCL语言:

word Min3 = [

  A <= B && A <= C : A;

  B <= A && B <= C : B;

  1                : C;

];

3.算术/逻辑单元(ALU)

 

4.2.4 集合关系

1.判断集合关系的通用格式:iexpr in {iexpr1, iexpr2, ..., iexprk}

其中,被测试的值iexpr和待匹配的值iexpri都是整数表达式.

4.2.5 储存器和时钟

1.时序电路(sequential circuit):有状态并且在这个状态上进行计算的系统

2.时钟:周期性信号,决定什么时候把新值加载到存储设备当中

3.存储设备:按位存储信息的设备

(1)时钟寄存器/寄存器:存储单个位或字

(2)随机访问存储器/内存:存储多个字,用地址来选择该读或该写哪个字

  i. 处理器的虚拟内存系统

  ii.寄存器文件:寄存器标识符作为地址(硬件寄存器vs程序寄存器

4.硬件寄存器和时钟

“大多数时候,寄存器都保持在稳定状态(用 x 表示),产生的输出等于它的当前状态。信号沿着寄存器前面的组合逻辑传播,这时,产生了一个新的寄存器输人(用 y 表示),但只要时钟是低电位的,寄存器的输出就仍然保持不变。当时钟变成高电位的时候,输人信号就加载到寄存器中,成为下一个状态 yÿ 直到下一个时钟上升沿,这个状态就一直是寄存器的新输出。”

Y86-64 处理器会用时钟寄存器保存程序计数器(PC)ÿ 条件代码(CC)和程序状态(Stat)

 

5.寄存器文件

两个读端口(A和B), 一个写端口(W)

原文地址:https://www.cnblogs.com/tanshiyin-20001111/p/11669661.html