最近要考高级计算机体系结构,《量化研究方法》里东西太多了,在这里把一些知识点精简一下。这篇是附录A指令集基本原理的内容。
指令集体系结构的分类
指令集体系结构可以分为栈型、累加器型和寄存器组型。
早期大多采用栈型和累加器型,1980年以来大多采用寄存器型。
寄存器型可以细分成register-memory型、load-store型以及memory-memory型(在今天的计算机中已经找不到了)。
控制流指令
控制流指令没有一致的术语。在20世纪50年代,它们通常被称为转移(transfer)。20世纪60年代开始使用分支(branch)一词。在本书中,如果控制中的改变是无条件的,我们就使用跳转(jump);如果改变是有条件的,则使用分支(branch)。
可以将控制流指令分为3类:条件分支、调用或返回、跳转。(按频率排序)
RISC-V体系结构
RISC-V数据传输的寻址方式
仅有的数据寻址方式就是立即数寻址和位移量寻址。二者均采用12为字段。寄存器间接寻址通过在12位位移字段中放置0来实现,而采用12位字段的有限绝对寻址则是以寄存器0为基址寄存器来实现。尽管这种体系结构种仅支持两种寻址方式,但通过包含0提供了4种有效方式。
RISC-V指令格式
由于RISC-V只有两种寻址方式,所以能把它们编码到操作码中。为便于处理器实现流水线和译码,所有指令的长度都是32为,其中有一个7位的主操作码。下图显示了4种主要指令类型的指令布局。
指令格式和指令字段的使用见下表。操作码指定一般的指令类型(ALU指令、ALU立即数、载入、存储、分支或跳转),而funct字段用于特定的操作。例如,一个ALU指令使用一个操作码编码的,funct字段记录了精确的操作:加、减,等等。有几种格式编码多种类型的指令:ALU立即数和Load使用I格式,Store和条件分支使用S格式。
RISC-V操作
RISC-V共有4大类指令:载入与存储、ALU运算、分支与跳转、浮点运算。
RISC-V控制流指令
控制是通过一组跳转指令和一组分支指令处理的。下表列出了一些典型的分支与跳转指令。