1.在movl指令中,指令名字的第一个字母就表明了源类型。指令第二个字母指明了目的类型。立即数(i)、寄存器(r)、存储器(m)。两个存储器传送指令中的存储器引用方式是简单地基址和偏移量形式。
2.addl,subl,andl,xorl是四个整数操作指令,Y86中只允许对寄存器数据进行操作。
3.jmp,jle,jl,je,jne,jge,jg是七个跳转指令,根据分支指令的类型和条件码的设置来选择分支。
4.cmovle,cmovl,cmove,cmovne,cmovge,cmovg是六个条件传送指令,这些指令的格式与寄存器-寄存器传送指令rrmovl一样,但只有当条件码满足所需要的约束时,才会更新目的寄存器的值。
5.call指令将返回地址入栈,然后跳到目的地址。
6.pushl和popl指令实现了入栈和出栈。
7.halt指令停止指令的执行(IA32中的指令hlt)。
每条指令的第一个字节表明指令的功能
这个字节分为两个部分
高四位是代码部分
低四位是功能部分
有的指令只有一个字节长,因为可能附加有寄存器指示符字节,指定一个或两个寄存器。这些寄存器字段为rA,rB。有则有,无则无,只有一个的则将第二个设为0xF。
有的指令需要一个附加的4字节常数字作为立即数数据或地址指示符偏移量或分支指令和调用指令的目的地址。所有整数采用小端法编码。
两个限制:
在HCL中,多路复用函数是用情况表达式来描述的,格式如下:
[
select_1 : expr_1
select_2 : expr_2
...
select_k : expr_k]
判断集合关系:
iexpr in {iexpr1,iexpr2,...,iexprk}
其中被测值iexpr和待匹配的值iexpr1-iexprk
组合电路简单的响应输入信号,产生等于输入的某个函数的输出,并存在状态在这个状态上进行计时,如此产生了时序电路。
储存器设备:
1.取指
2.译码
3.执行
4.访问
5.写回
6.更新PC
1.取指
2.译码
3.执行
4.访存
5.写回
四个硬件单元:
1.程序计数器
2.条件码寄存器
3.数据存储器
4.寄存器文件
由于Y86指令集得本质,要遵循以下原则组织计算:
处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态
流水线化的一个重要特性是增加了系统的吞吐量
吞吐量={1 instruction/(加载寄存器时间+组合逻辑时间)}*{1000 picosecond/1 nanosecond}
书上的例子是一个理想的流水线化的系统,若将这个系统分成三个互相独立的阶段,每个阶段所需的时间应是原来逻辑需要时间的三分之一,然而现实中不能实现。
原因:
1.不一致的划分
2.流水线过深,收益反而下降
参考来源:《深入理解计算机系统》