在层次图中与RISC-V相关的是编译器和计算机体系结构两部分,前者属于软件,功能是将高级语言(C,C++等)语言写的程序翻译为硬件可以理解的机器语言指令,后者属于硬件,研究的是如何使用流水线技术,多级存储技术等来从框架层面搭建一个可以执行RISC-V指令的处理器。在实际处理中需要这两部分,以及操作系统等相配合才能实现一个高效的处理器,例如编译器层次中,现在标配的超标量处理器就需要编译器对翻译后的指令根据依赖性进行优化,操作系统会维护虚拟地址相关的页表,而体系结构层次则会加入分支预测硬件,cache管理硬件等,所以若是想设计处理器,还是得软硬件都熟悉才行。
RISC-V最核心的内容就是其指令集架构,因为具体的硬件结构,从大的技术方向来说都是非常相似的,例如流水线,超标量,乱序执行,多级cache等等,并且硬件架构都是为指令集架构服务的,所以指令集架构可以说是一款处理器最核心的技术之一。
1.存储层次
计算机体系中的零一大块内容是和存储相关的。为什么存储如此重要呢?因为当前CPU的时钟频率可以做到GHz,说明其内部的控制通路和数据通路的运算是非常快的,并且还有随着工艺节点缩小而进步的空间。然而存储的速度却没有跟上CPU的速度,受限于冯诺伊曼架构,CPU需要的数据都需要从存储中获取,因此存储的速度直接拖累了CPU的速度,也就是我们说的撞到了存储墙。为了解决存储墙的问题,一方面是现在已经比较成熟的多层次存储方案,即使用Cache,外存等不同大小,访问速度的存储构成综合性能优秀的多层次存储,另一方面是新型存储设备,包括存内计算,以及今年的华为天才少年似乎也是做和新型存储器件相关的课题研究。由此可见,存储是计算机体系结构中一个非常重要的内容。
体系结构的概念用于描述计算机系统设计的技术、方法和理论,包括计算机指令系统、计算机组成和计算机硬件实现三个方面。
1.1 流水线结构
引入流水线结构并不能缩短每一部分的执行所需的时间,但通过并行利用硬件资源,可以极大地提升吞吐能力;在理想情况下,当流水线开动后,每个周期都可以完成一条指令的5个步骤,这是通过提高硬件并行利用效率实现的,可以说流水线技术是一种通过面积换取性能的优化方式。
计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性。
指令由操作码和地址码组成
操作码:告诉机器做什么样的工作;
地址码:告诉机器对谁完成这样的工作
取指令-指令译码-取操作数-运算-结果写回-取指令。。
指令的操作十分简单,其操作由操作码编码表示;
每个操作需要的操作数个数0-3个不等;
操作数(operand),是 计算机指令中的一个组成部分,它规定了指令中进行数字运算的量 。操作数指出指令执行的操作所需要数据的来源。操作数是汇编语言指令的一个字段。例如:mov a b 操作数(a 和 b)。在操作数这个字段中可以放操作数本身,也可以放操作地址,还可以放操作地址的计算方法。
典型的存储单元有:主存、寄存器、堆栈和累加器;在计算机系统里能存储数据并且能被CPU直接访问到的叫做存储单元。
TCPU=CPI(每条指令的执行时间) x IC (指令的数量)x TCLK(CPU的时钟周期或主频)
指令的集合叫做指令集,每条指令都是直接由CPU硬件执行,表示方法可以是二进制格式,存储在存储器是位、字节、多字,字长为16位-64位
指令集结构的分类:
堆栈 累加器 寄存器:分为(寄存器-存储器型、寄存器-寄存器型)
根据能否划分:指令拥有访问存储器的功能,算数运算指令可以直接访问存储器里的操作数。
通用寄存器型指令集结构的主要优点 :
在表达式求值方面,比其它类型指令集结构都具有更大的灵活性;
寄存器可以用来存放变量;
减少存储器的通信量,加快程序的执行速度(因为寄存器比存储器快)
可以用更少的地址位来寻址寄存器,从而可以有效改进程序的目标代码大小。
寄存器-寄存器型的优点:指令字长固定,指令结构简洁,是一种简单的代码生成模型,各种指令的执行时钟周期数相近。缺点:与指令中含存储器操作数的指令系统结构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间比较大。流水线设计可以掩盖!
指令集是非常重要的软硬件接口,对系统、应用程序员了解计算机系统的硬件往往只需要了解到指令集结构就行;而对于像我一样的硬件设计者来说,对软件设计者提供的接口就是指令集,当然也可以通过其他的一些工具来提高软件设计者对指令集的方便程度,比如编译器,或者为一些特殊的指令提供特定的接口,比如处理器中提供的API,这可以大大方便软件使用者对指令的使用
软硬件功能等效和分配问题
摩尔定律:认为集成电路密度大约每两年翻一番
Risc指令集的特点:1.只有load和store操作指令才访问存储器,其他指令操作均在寄存器之间进行;2.所有指令的长度均相同32?。
流水线的基本特点:
流水过程由多个相关的子过程组成,每个子过程由专用的功能段实现,各个功能段的时间基本相当; 流水线需要经过一定的通过时间才能稳定。流水技术适合于大量重复的时序过程;
结构相关:第一周期时候的访存与第四周期的取值,都需要从存储器取值,所以冲突。解决方法:1插入暂停周期,2数据存储器与指令存储器分开设置。
数据相关(国科大PDF):
产生原因:当指令在流水线中重叠执行时,流水线有可能改变指令读/写操作数的顺序,使之不同于它们在非流水实现时的顺序,这将导致数据相关。
消除方法:向流水线中插入暂停周期
分为写后读、写后写、读后写(后两个mips的流水线不会产生这样的)
流水技术与指令集的并行极大的提高了CPU的性能,而处理器性能与存储系统质检存在巨大差距
存储层次:
冯诺依曼结构,计算机的程序与数据都存储在存储器中。
快速但昂贵的存储器,容量少点,尽量让CPU多访问,反之亦然。
目录表查找:
256个字节的主存空间,用八位来表示。可以分成64个数据块,前六位是块地址,后两位(低位)是块内地址,直接印象
一、并行查找的实现方法:
- 相连存储器
- 单体多字存储器+比较器。
二、4路组想联Cache的查找过程:访存地址分为TAG和index,前者标识存储体,后者数据存储体。
三、直接映像Cache的查找过程