- 博客(32)
- 收藏
- 关注

原创 从零开始写riscv处理器(零)写在前面
本教程对应的项目用verilog语言实现了一个具有五级流水线的简单RISCV处理器核,带有一级cache,实现RV32I指令集(37条)并验证了指令实现的正确性。项目文件里面包含所有的设计和测试文件以及完整的makefile脚本,可以“开箱即用”。
2023-09-07 16:10:16
3527
4
原创 从零开始写riscv处理器(八)cache进阶
对于两级cache,第一级cache容量较小,更关注减小命中时间,以提高工作频率或者减小流水线级数;第二级cache容量较大,更关注提高命中率,以降低长访存延迟带来的失效代价。多级cache作为一种降低失效代价的技术,它允许一级cache的失效访问去访问容量更大的二级 cache。通常,二级cache的容量会是一级cache的10倍或更大,可以处理很多一级cache中失效的访问。
2024-05-21 16:34:34
2358
2
原创 从零开始写riscv处理器(六)控制冒险:流水线冲刷
控制冒险:也叫,决策依赖于一条指令的结果,而其他指令正在执行中。比如说分支跳转指令,必须等ALU给出结果后才知道该跳转到哪一条语句。
2023-09-07 19:53:16
3524
4
原创 从零开始写riscv处理器(五)数据冒险:停顿与前递
数据冒险:无法提供指令所需数据而导致指令不能在预定的时钟周期内执行的情况。即一条指令的执行需要等待另一条指令执行完成后所产生的数据。
2023-09-07 19:50:22
6158
2
原创 从零开始写riscv处理器(四)流水线结构
流水线是一种能使多条指令重叠执行的实现技术。引用书中的例子:从上图可见,流水线方式的速度大约为非流水线方式的 2.3 倍,因为当任务数量与流水线的步骤数量相比不是很大时,流水线的启动和结束会影响它的性能。如果每个步骤需要的时间相同,并且要完成的工作足够多,那么由流水线产生的加速比等于流水线中步骤的数目,在这个例子中是 4 倍。流水线并不会缩短执行一次任务的时间,流水线更快的原因是所有任务都在地执行。所以单位时间能够完成更多工作,流水线提高了洗衣系统的。吞吐率的提高减少了完成整个任务的时间。
2023-09-07 19:41:16
2608
2
原创 从零开始写riscv处理器(三)单周期riscv数据通路
上一篇文章以一个简单的数据通路作为引例,数据通路支持执行R型、BEQ指令、Load/Store型指令,并且你已经知道各指令的通路。
2023-09-07 19:36:33
3675
5
原创 从零开始写riscv处理器(二)简单数据通路
将之前的简单数据通路图添加上控制信号如下:RegWrite信号控制寄存器堆是否写回;ALUSrc控制第二个ALU操作数来自第二个寄存器堆的输出还是指令的低12位符号扩展;PCSrc控制PC值是PC+4还是adder的输出,即分支目标;MemRead控制DataMemery读有效;MemWrite控制DataMemery写有效;MemtoReg控制写回数据来自ALU运算结果还是DataMemery输出;
2023-09-07 19:30:40
3731
1
原创 从零开始写riscv处理器(一)指令集
要控制计算机硬件,就必须用它的语言。计算机语言中的单词称为指令,其词汇表称为指令系统 (instruction set)。
2023-09-07 19:18:34
5575
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人