欢迎来到我的小窝~在这里我会分享一些工作生活中的知识与经验~
Note:如果你评论后发现并没有立刻生效,那是因为本站开启了评论审核唷,站长会不定期的审阅评论并回复,到时候自然就会反馈到文章当中。
XiangShan FrontEnd源码浅析:uBTB
XiangShan是中科院计算所的高性能RISC-V微处理器项目,基于其开源的特性,可以从中一窥高性能微处理器的一些设计理念以及思路等。本系列的文章将从XiangShan开源的微处理器核的前端(除译码器外)代码出发,尝试浅析其分支预测、取指以及指令缓存的微架构设计等。更多关于XiangShan的信息
RISC-V基本指令集概述
RISC-V基本指令集概述RISC-V的主要技术特性:将ISA分离为一个小的基本ISA以及可选的扩展。支持32位和64位地址空间。使ISA扩展更为容易,包括紧密耦合以及松弛耦合的协处理器。支持可变长的指令扩展。提供有效率的现代标准的硬件支持,包括IEEE-754 2008浮点数标准以及C11和C++
基于RISC-V的CPU设计入门——异常处理
Exceptions在处理器的设计当中,控制单元及其信号的设计是最具有挑战性的:它是处理器设计当中最困难的部分,并且要想加快其运行速度需要付出更大的努力。在控制单元的设计当中一个重要且关键的工作就是对异常以及中断处理的实现——不是分支指令,但是同样会改变程序正常的指令执行流。异常用于处理非期望的(不
基于RISC-V的CPU设计入门——控制冒险
Control Hazards在这之前,我们将冒险可能发生的范围限制在算术操作和数据传送操作。然而,就如同我们在第V节所讨论过的一样,条件分支同样会导致流水线冒险,也就是控制冒险。下图展示了一些列的指令以及分支会在流水线的那个地方发生。指令必须要在每个时钟周期都进行取指来维持流水线的进行。在我们的设
基于RISC-V的CPU设计入门——旁路与停顿
Data Hazards: Forwarding versus Stalling在前面的章节当中,我们展示了流水线执行的优点以及硬件的具体实现方法。然而现在我们需要深入到一些隐蔽的问题来探讨其解决方法。首先是在流水线处理器中的第一个重要的问题:数据冒险。在第V节中我们已经说明了,数据冒险在流水线的执
基于RISC-V的CPU设计入门——流水线化的数据路径与控制
Pipelined Datapath and Control前面我们给出了一个单周期非流水线实现的数据通路图。在上一节当中我们说明了将RISC-V的指令执行划分为5步,因此在流水线的实现当中,我们也采用5级流水线的实现方式。因此,我们首先要将流水线的数据通路划分成5块:IF:取指ID:译码以及取寄存
基于RISC-V的CPU设计入门——流水线概览
An Overview of Pipelining流水线是一种实现的技术,指的是在执行过程中多条指令互相重叠。在当今,流水线技术已经非常普遍。在流水线实现的过程中,指令执行的时间和非流水线的实现是相同的,而流水线比非流水线实现的速度要快的原因在于,流水线中指令的执行是并行的。使用流水线可以提高处理器
基于RISC-V的CPU设计入门——简单架构实现
A Simple Implementation Sceheme在这一节当中,我们将会讨论如何创建一个简单的RISC-V架构的实现。我们使用上一节中构建的数据通路来进行实现,通过增加简单的控制功能。这个简单的实现包括LD(Load Double Word)、SD(Store a Double Word
基于RISC-V的CPU设计入门——设计数据路径
Building a Datapath在这一节当中,我们将会深入到了解每种指令所需要的数据通路元素(datapath elements),也就是一个用于操作或者保存数据的功能单位。在RISC-V的实现当中,数据通路的元素包括指令以及数据存储器、寄存器组、ALU以及加法器。PC第一个需要的器件是一个存
基于RISC-V的CPU设计入门——基本逻辑设计
Logic Design Conventions在RISC-V的实现当中,数据路径有两种不同的逻辑元素:组合逻辑元素以及状态元素。组合逻辑元素是不能保存状态的逻辑器件,比如与门以及ALU。状态元素是可以保存状态的逻辑器件,比如寄存器或者存储器。状态元素至少有两个输入和一个输出。两个输入包括数据输入以