RISCV处理器设计
文章平均质量分 93
Stephen_Dai 0327
这个作者很懒,什么都没留下…
展开
-
从零开始写riscv处理器(八)cache进阶
对于两级cache,第一级cache容量较小,更关注减小命中时间,以提高工作频率或者减小流水线级数;第二级cache容量较大,更关注提高命中率,以降低长访存延迟带来的失效代价。多级cache作为一种降低失效代价的技术,它允许一级cache的失效访问去访问容量更大的二级 cache。通常,二级cache的容量会是一级cache的10倍或更大,可以处理很多一级cache中失效的访问。原创 2024-05-21 16:34:34 · 1501 阅读 · 2 评论 -
从零开始写riscv处理器(七)一篇文章搞懂cache基础
时隔半年,终于填坑了hh…原创 2024-05-21 16:33:38 · 1910 阅读 · 0 评论 -
从零开始写riscv处理器(六)控制冒险:流水线冲刷
控制冒险:也叫,决策依赖于一条指令的结果,而其他指令正在执行中。比如说分支跳转指令,必须等ALU给出结果后才知道该跳转到哪一条语句。原创 2023-09-07 19:53:16 · 1930 阅读 · 2 评论 -
从零开始写riscv处理器(五)数据冒险:停顿与前递
数据冒险:无法提供指令所需数据而导致指令不能在预定的时钟周期内执行的情况。即一条指令的执行需要等待另一条指令执行完成后所产生的数据。原创 2023-09-07 19:50:22 · 3952 阅读 · 1 评论 -
从零开始写riscv处理器(四)流水线结构
流水线是一种能使多条指令重叠执行的实现技术。引用书中的例子:从上图可见,流水线方式的速度大约为非流水线方式的 2.3 倍,因为当任务数量与流水线的步骤数量相比不是很大时,流水线的启动和结束会影响它的性能。如果每个步骤需要的时间相同,并且要完成的工作足够多,那么由流水线产生的加速比等于流水线中步骤的数目,在这个例子中是 4 倍。流水线并不会缩短执行一次任务的时间,流水线更快的原因是所有任务都在地执行。所以单位时间能够完成更多工作,流水线提高了洗衣系统的。吞吐率的提高减少了完成整个任务的时间。原创 2023-09-07 19:41:16 · 1335 阅读 · 2 评论 -
从零开始写riscv处理器(三)全部指令数据通路
上一篇文章以一个简单的数据通路作为引例,数据通路支持执行R型、BEQ指令、Load/Store型指令,并且你已经知道各指令的通路。原创 2023-09-07 19:36:33 · 2304 阅读 · 3 评论 -
从零开始写riscv处理器(一)指令集
其中32位指令集(RV32I)为了进一步支持嵌入式又制定嵌入式指令集(RV32E),将32个32位的通用寄存器砍掉一半,即只有16个32位的通用寄存器,其他保持不变;众所周知,计算机中的硬件只能执行极为简单的低级指令,从复杂的应用程序到原始的指令涉及若干软件层次来将高层次操作解释或翻译成简单的计算机指令。现在,你已经大概了解了R型指令的指令格式,接着来看RV32I指令集中的其他类型指令,不同类型指令有不同的指令格式。其中,最特殊的是x0寄存器,即零寄存器,其被硬编码为0,写入数据忽略,读取数据为0。原创 2023-09-07 19:18:34 · 3610 阅读 · 0 评论 -
从零开始写riscv处理器(二)简单数据通路
将之前的简单数据通路图添加上控制信号如下:RegWrite信号控制寄存器堆是否写回;ALUSrc控制第二个ALU操作数来自第二个寄存器堆的输出还是指令的低12位符号扩展;PCSrc控制PC值是PC+4还是adder的输出,即分支目标;MemRead控制DataMemery读有效;MemWrite控制DataMemery写有效;MemtoReg控制写回数据来自ALU运算结果还是DataMemery输出;原创 2023-09-07 19:30:40 · 2310 阅读 · 0 评论 -
从零开始写riscv处理器(零)写在前面
本教程对应的项目用verilog语言实现了一个具有五级流水线的简单RISCV处理器核,带有一级cache,实现RV32I指令集(37条)并验证了指令实现的正确性。项目文件里面包含所有的设计和测试文件以及完整的makefile脚本,可以“开箱即用”。原创 2023-09-07 16:10:16 · 1895 阅读 · 4 评论