用Verilog搭建RISC-V架构流水线CPU

基于Verilog的流水线CPU设计 MIPS五级流水线CPU设计。 阅读详情

一、前言(一些废话)& 单周期CPU传送门

  如果还没有实现过单周期的朋友建议先去实践一下单周期再来钻研流水线哦~点击下方链接转至单周期CPU实现过程
  
  单周期CPU传送门
  

二、流水线特性解析

 2.1 为什么我们需要流水线?

  单周期CPU的实现从某种意义上来说是为了给流水线CPU打基础,毕竟单周期CPU无论是理论还是工程实现上的意义都不大,将CPU所有的工作全部交给一个时钟周期搞定,未免有些浪费本就珍贵的硬件资源,为了体现分治策略思想,同时更重要的是为了提升CPU的主频以实现更高的性能,在硬件条件不能更改时,流水线是一种非常经典的性能优化策略。
 

 2.2 流水线思想以及示意图

  也许我们都知道在一个忙碌的工作间里面,工人们热火朝天地干活,一个工业器件从原料到成品的加工可能要经过多个步骤,设想如果将所有的工作全部堆到一个工人的头上,将是一件多么恐怖的任务,但如果我们将这个加工过程分解,譬如:原料,设计,成形,打磨,质检;并且每个工人只负责一个步骤,那么这项本来很繁重的任务将变得更加轻松。
  这就是流水线的思想,和分治思想有着异曲同工之妙,通过分解任务,将原本单周期需要在一个CPU周期内解决的问题分成多个周期解决,大幅度减轻了CPU在单个时钟周期内的工作负担,从而使得CPU完成一个任务所需时间变短,从而使得CPU频率得以提高。
  流水线的工作示意图如图1所示在这里插入图片描述                       图1
  此图中IM为指令存储器,Reg为寄存器堆,DM为数据存储器。
 

三、理想流水线预备知识

 3.1 单周期CPU知识

  没有单周期CPU理论知识基础的话,即便设计出流水线也是瞎猫碰到死耗子的巧合罢了,所以基础知识一定要夯实打牢!
 

 3.2 寄存器(触发器)

  后序章节中的流水线寄存器之原型,为数字逻辑设计中时序逻辑部分重点内容:触发器;建议充分掌握其理论内容,这里仅简单列出D触发器的部分。
  D触发器,最简单的触发器之一,其工作原理是:若第一个时钟周期其输入D改变,则第二个时钟周期其输出Q将跟随D的改变而改变,即输出跟随输入变化而变化,并且在输入D每个周期都变化的基础下,输出Q总是“落后“D”一个时钟周期,并且就像是D的跟屁虫一般对其如影随形,此特性决定了我们要想人为分割一条指令的执行,就必须设置对应的触发器以完成这一时序逻辑电路。
 

四、理想流水线关键部件 & 划分

 4.1 流水线寄存器

  我们将CPU的工作划分成5个步骤的工作仅仅是理论层面的,实际在Verilog中需要我们通过一些特殊的模块来实现这个划分功能。
  虽然叫“寄存器”,但是其本质仍是触发器,至于存储什么样的内容,则要仔细分析我们对一条指令分割的过程。
 

 4.2 流水线划分

  我们可以简单的将一条指令的执行过程分为五个部分(也可以分成更多的部分,这里仅讨论最简单的五级流水线),其实这一划分在单周期CPU设计中就有所体现,这五个阶段分别是:取指、译码、执行、访存、写回;(其中控制单元被放入译码阶段)也就是说在我们的流水线中,可能在某一个CPU周期内,同时有5条指令在进行着不同阶段的处理,不妨拿图1中的例子来说明:
在这里插入图片描述  在CC5(CPU clock 5)中,从纵向时间切面来看,流水线此刻有5条指令正在被处理,且第一条指令ld x10, 40(x1)会在下一CPU周期流出流水线,而第六条指令(图中没有列出)将在下一CPU周期流入流水线。同理,在其他的CPU周期里,譬如CC1,此时流水线刚好开始工作,仅有第一条指令流入流水线,而CC

RISC-V 流水线 CPU 设计 Verilog 实验设计的是五段式流水线 CPU,分别为 IF(取指),ID(指令译码),EX(执行),MEM(访存),WB(写回)五个阶段,并且时钟周期由所有指令耗时最长的阶段决定。同时还有一个比较关键的在于需要解决结构冒险(寄存器可能同时需要读、写),控制冒险(跳转指令可能会改变指令顺序,但流水线读取每次是先读取静态 PC, 即 PC + 4),以及数据冒险(在本实验中是 RAW,即还未写回就以及需要进行读取)。以上这些问题需要通过设计转发单元,以及阻塞冲刷信号等等来实现。 阅读详情

相关推荐

RISCV五级流水CPU设计

RISCV五级流水CPU设计代码流水线设计取指译码执行ALU地址生成访存回写转发部件冒险检测Cache 代码 所有代码已上传至我的github,欢迎访问。 代码仍在施工中。 流水线设计 寄存器 取指 译码 执行 访存 回写 pc_reg ↗ → ↘ inst_reg ↗ ↘ rd_reg ↗ → → ↘ rs1_imm_reg ↗ ↘ rs1_reg ↗ ↘ rs2_reg ↗ → ↘ imm_reg ↗ ↘ alu_reg

qtxzh的博客 7330

RISC-V 开发环境搭建及资料汇总

汇总RISC-V 学习资料,环境搭建过程,通过阅读本文章,一周入门RISC-V开发,不是问题

Only love Can resist the Long Years! 唯有热爱,可抵岁月漫长! 2117

一个简单的 RISC-V CPU 设计与实现

RISCV五级流水CPU设计补充说明

qtxzh的博客 3866

[Verilog]RISC-V五级流水线CPU设计实战:从模块构建到FPGA部署

本文详细介绍了基于Verilog的RISC-V五级流水线CPU设计全过程,从基础模块构建到FPGA部署实战。涵盖程序计数器、指令存储器、寄存器堆等核心模块实现,解析流水线架构、数据前递机制及冒险处理策略,并提供FPGA调试技巧与性能优化建议,帮助开发者掌握CPU设计精髓。

k8s6orchestrator的博客 993

超详细版risc-v五级流水线cpu硬件设计实现解析

深入剖析risc-v五级流水线cpu的硬件架构与设计细节,涵盖指令流程、模块划分与关键时序控制,帮助理解risc-v五级流水线cpu的工作机制与优化策略。

weixin_42437253的博客 1621

从零开始:Xilinx FPGA实现RISC-V五级流水线CPU手把手教程

深入浅出地讲解如何在Xilinx FPGA上从零构建RISC-V五级流水线CPU,涵盖设计思路与关键代码实现,适合初学者掌握risc-v五级流水线cpu架构核心原理。

weixin_42372837的博客 1523

RISC-V五级流水线CPU的Verilog实现与仿真优化

本文详细介绍了RISC-V五级流水线CPU的Verilog实现与仿真优化方法,涵盖取指、译码、执行、访存和写回五个阶段的设计细节。重点探讨了流水线冲突处理方案,包括数据冒险的前递技术和控制冒险的分支预测策略,并提供了实用的Verilog编码技巧和Modelsim仿真验证方案,帮助开发者高效实现高性能RISC-V处理器。

5f4d3s2a1q的博客 744

FPGA五级流水线RISC-V CPU设计:从零实现冲突处理与上板验证

在数字系统与计算机体系结构领域,流水线技术是提升处理器性能的核心机制。其基本原理是将指令执行过程划分为多个阶段,使不同指令的不同阶段能并行工作,从而在每个时钟周期完成一条指令,实现吞吐量的显著提升。这一技术价值在于高效利用硬件资源,是现代CPU设计的基石。在FPGA开发与嵌入式系统等应用场景中,掌握流水线设计意味着能够实现高性能定制处理器。本文聚焦于五级流水线CPU的实现,深入探讨数据前递和流水线停顿等关键冲突处理逻辑,并提供完整的Verilog代码与上板验证方案,帮助读者构建可实际运行的RISC-V处理器

weixin_34087307的博客 1739

基于RISC-V架构的五级流水线CPU软核设计与实践

RISC-V(发音为“risk-five”)是一种基于精简指令集(RISC)原则的开源指令集架构(ISA),其设计目标是模块化、可扩展和开放免费。与x86和ARM等商业架构不同,RISC-V采用BSD许可证,允许任何人自由地实现、扩展和商业化,极大地促进了其在学术研究、嵌入式系统和定制化芯片设计中的应用。从架构层面来看,RISC-V将指令集分为基础指令集和多个可选扩展模块,例如整数、浮点、原子操作、压缩指令等。

weixin_42143092的博客 1731

基于RISC-V的单周期CPU设计

本文介绍支持45条RISC-V指令的单周期CPU设计,涵盖数据通路、控制单元、ALU与寄存器文件等核心模块,强调教学实践中对计算机体系结构的深入理解,通过Verilog实现与仿真帮助学生掌握指令执行流程与硬件协同机制。

css33的专栏 1213

从AT指令到万物互联:移远EG800K-CN模块的协议栈深度解析与实践指南

本文深度解析移远EG800K-CN 4G模块的协议栈架构与AT指令体系,涵盖MQTT云端集成、多协议配置优化及工业级故障排除指南。通过实战示例展示如何利用该模块构建稳定可靠的物联网连接方案,实现从设备到云端的万物互联。

jupyter5notebook的博客 353

LaTeX伪代码字体大小调整全攻略:从algorithm到algorithm2e的实战技巧

本文详细介绍了在LaTeX中调整伪代码字体大小的全面技巧,涵盖algorithm、algorithmicx和algorithm2e等主流算法包的使用方法。从基础命令到高级配置,帮助用户解决学术论文和技术文档中的伪代码排版问题,提升算法展示的专业性和可读性。特别针对不同期刊格式要求,提供了实用的字体调整方案。

weixin_29297127的博客 433

影刀RPA进阶:Excel多条件筛选与数据提取实战

本文详细介绍了如何利用影刀RPA实现Excel多条件筛选与数据提取的自动化。通过拆解文本、数值、日期及颜色筛选等核心指令,并结合实战案例,指导用户构建稳健的销售数据提取机器人,从而高效处理复杂数据报表,提升工作效率。

onion的博客 515

DELPHI11 利用Android手机实现条码扫描功能

好了,整个过程全部结束,当然这只是最简单的例子,只是演示一下如何识别条码,更多的条码处理功能,比如优化,提速等需要在后面继续。安装过程中所有提示框全部按OK就可以,直到提示安装成功,那么ZXing库就成功完成了安装。点击红框标识的文件夹图标,将下载的ZXing库文件路径加入进来后,点ADD。第三步:选择下载的ZXing库路径,并按Ctrl + A进行全选,并导入。至此为止,我们的库才算是全部安装完成,可以在DELPHI 中正常引用了。2.打开相机,识别条码,并将条码内容显示在MEMO1中。

1522

10分钟训练你的AI歌手:RVC WebUI声音克隆保姆级教程

本文提供了一份详细的RVC WebUI声音克隆保姆级教程,指导用户如何在10分钟内利用Retrieval-based-Voice-Conversion技术训练专属AI歌手。教程涵盖从环境配置、数据准备、模型训练到最终推理应用的全流程,即使是新手也能快速上手,实现高质量的声音克隆与歌曲生成。

weixin_29073241的博客 812

从零开始掌握Python机器学习:七步教程 基础篇

前言 「开始」往往是最难的,尤其是当选择太多的时候,一个人往往很难下定决定做出选择。本教程的目的是帮助几乎没有 Python 机器学习背景的新手成长为知识渊博的实践者,而且这个过程中仅需要使用免费的材料和资源即可。 第一步:基本 Python 技能 如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。 首先,你需要安装 Python。因为我们后...

hcgx2018的博客 1607

高通camera:PDAF的配置与测试

确认相关log日志都已经打开了之后,判断是在3A算法中没有应用到PDAF,可能是之前在调试AF效果的时候关闭了PDAF,打开效果文件对应的文件夹,在\kamorta_lce_S5K3P9\Scenario.Default\XML\STATS。在log中搜索af_pdaf_proc_pd_single,这个函数是pdaf算法中的,源码被封装了,这里看不到,因此只能通过log打印出来的参数来分析pd是否正确,主要参数有pd ,defocus,confidence。PDAF的配置与测试。

arvin_xiong的博客 2465

Modbus协议介绍及解析

Modbus协议介绍及解析 1.Modbus简介 Modbus是一种广泛应用于工业控制领域串行通信协议,以其开放性、高可靠性、高效简单性、免费等优点,成为了工业领域通信协议的业界标准,是工业现场电子设备之间常用的连接方式。Modbus按其格式可分为Modbus-RTU,Modbus-ASCII,Modbus-TCP,其中前两者适用于串行通信控制网络中,例如RS485,RS232等,而Modbus-TCP主要应用于基于以太网TCP/IP通信的控制网络中。通过此协议,控制器相互之间、或控制器和其它设备之间进行通

逍遥子的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 用Verilog搭出RISC-V架构单周期CPU
下一篇: Windows下安装tdm-gcc(64位)
LYZ832
博客等级 码龄7年 39粉丝 10原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值