基于RISC-V的CPU设计入门——异常处理
Exceptions在处理器的设计当中,控制单元及其信号的设计是最具有挑战性的:它是处理器设计当中最困难的部分,并且要想加快其运行速度需要付出更大的努力。在控制单元的设计当中一个重要且关键的工作就是对异常以及中断处理的实现——不是分支指令,但是同样会改变程序正常的指令执行流。异常用于处理非期望的(不
Exceptions在处理器的设计当中,控制单元及其信号的设计是最具有挑战性的:它是处理器设计当中最困难的部分,并且要想加快其运行速度需要付出更大的努力。在控制单元的设计当中一个重要且关键的工作就是对异常以及中断处理的实现——不是分支指令,但是同样会改变程序正常的指令执行流。异常用于处理非期望的(不
Control Hazards在这之前,我们将冒险可能发生的范围限制在算术操作和数据传送操作。然而,就如同我们在第V节所讨论过的一样,条件分支同样会导致流水线冒险,也就是控制冒险。下图展示了一些列的指令以及分支会在流水线的那个地方发生。指令必须要在每个时钟周期都进行取指来维持流水线的进行。在我们的设
Data Hazards: Forwarding versus Stalling在前面的章节当中,我们展示了流水线执行的优点以及硬件的具体实现方法。然而现在我们需要深入到一些隐蔽的问题来探讨其解决方法。首先是在流水线处理器中的第一个重要的问题:数据冒险。在第V节中我们已经说明了,数据冒险在流水线的执
Pipelined Datapath and Control前面我们给出了一个单周期非流水线实现的数据通路图。在上一节当中我们说明了将RISC-V的指令执行划分为5步,因此在流水线的实现当中,我们也采用5级流水线的实现方式。因此,我们首先要将流水线的数据通路划分成5块:IF:取指ID:译码以及取寄存
An Overview of Pipelining流水线是一种实现的技术,指的是在执行过程中多条指令互相重叠。在当今,流水线技术已经非常普遍。在流水线实现的过程中,指令执行的时间和非流水线的实现是相同的,而流水线比非流水线实现的速度要快的原因在于,流水线中指令的执行是并行的。使用流水线可以提高处理器
A Simple Implementation Sceheme在这一节当中,我们将会讨论如何创建一个简单的RISC-V架构的实现。我们使用上一节中构建的数据通路来进行实现,通过增加简单的控制功能。这个简单的实现包括LD(Load Double Word)、SD(Store a Double Word
Building a Datapath在这一节当中,我们将会深入到了解每种指令所需要的数据通路元素(datapath elements),也就是一个用于操作或者保存数据的功能单位。在RISC-V的实现当中,数据通路的元素包括指令以及数据存储器、寄存器组、ALU以及加法器。PC第一个需要的器件是一个存
Logic Design Conventions在RISC-V的实现当中,数据路径有两种不同的逻辑元素:组合逻辑元素以及状态元素。组合逻辑元素是不能保存状态的逻辑器件,比如与门以及ALU。状态元素是可以保存状态的逻辑器件,比如寄存器或者存储器。状态元素至少有两个输入和一个输出。两个输入包括数据输入以
在整理上学期间的资料时,发现了一系列当初入门RISC-V微处理器设计所整理的笔记,基于Patterson大师所写的Computer Organization and Design RISC-V edition中第四章The Processor,就当是回归初心了。由于本人当时水平还比较菜,所以难免会有