2020年9月11日

Cache替换策略

摘要: LRU, Least Recently Used, LRU算法根据各block(cache line)使用的情况, 总是选择那个最长时间未被使用的block进行替换。这种策略比较好的反映了程序局部性规律。gem5中该替换策略的代码:voidLRURP::invalidate(const std::shared_ptr& replacement_data)const{ // Reset las... 阅读全文

posted @ 2020-09-11 19:59 迈克老狼2012 阅读(3574) 评论(1) 推荐(0) 编辑

2019年9月2日

E203 itcm

摘要: E203 itcm是64Kb,所以地址总线为16位,2^16=64Kb, 数据线宽度为64 bits(8 bytes),所以address width是16-3=13bit,ram depth 是2^16/8=2^13。 itcm的基地址默认是0x8000_0000。 在目录e200_opensource/riscv-tools/riscv-tests/isa/ge... 阅读全文

posted @ 2019-09-02 14:04 迈克老狼2012 阅读(1438) 评论(1) 推荐(0) 编辑

2019年8月25日

RV32FDQ/RV64RDQ指令集(2)

摘要: 下面我们逐个看下每个指令的细节:fadd.sfadd.s rd, rs1, rs2 //f [rd] = f [rs1] + f [rs2]单精度浮点加(Floating-point Add, Single-Precision). R-type, RV32F and RV64F.把寄存器 f[rs1]和 f[rs2]中的单精度浮点数相加,并将舍入后的和写入 f[rd]。示例:to dofs... 阅读全文

posted @ 2019-08-25 14:25 迈克老狼2012 阅读(2336) 评论(0) 推荐(0) 编辑

RV32FDQ/RV64RDQ指令集(1)

摘要: Risc-V架构定义了可选的单精度浮点指令(F扩展指令集)和双精度浮点指令(D扩展指令集),以及四精度浮点指令集(Q扩展指令集)。Risc-V架构规定:处理器可以选择只实现F扩展指令子集而不支持D扩展指令子集;但是如果支持了D扩展指令子集,则必须支持F扩展指令子集;如果支持了Q扩展指令集,必须支持D扩展指令集。Risc-V架构规定的浮点数符合IEEE754 2008规则,可以从下面的链... 阅读全文

posted @ 2019-08-25 08:41 迈克老狼2012 阅读(2162) 评论(0) 推荐(0) 编辑

2019年8月23日

在vcs中编译及运行测试E203例子

摘要: E203的Makefile默认是调用 iverilog编译rtl,我们可以做如下修改,使其支持vcs编译。1. 首先修改e200_opensource/tb/tb_top.v, 增加dump波形的两行代码,这样如果指定DUMPWAVE不等于0,就会打印dump出波形文件。 initial begin $value$plusargs("DUMPWAVE=%d",dumpwave)... 阅读全文

posted @ 2019-08-23 13:00 迈克老狼2012 阅读(3364) 评论(2) 推荐(0) 编辑

2019年8月14日

E203数据冲突处理OITF

摘要: 流水线的数据冲突分为三类:WAR,RAW,WAW https://wenku.baidu.com/view/e066926d48d7c1c708a14508.htmlWAR: write after read 相关性,又称先读后写相关性。比如下面的指令序列,第一条指令会读取x4,第二条指令会写x4。在流水线中,如果第二条指令比第一条指令先写x4,则第一条指令就会读出错误的值... 阅读全文

posted @ 2019-08-14 09:37 迈克老狼2012 阅读(2048) 评论(0) 推荐(0) 编辑

2019年8月13日

Verilog设计Valid-Ready握手协议

摘要: http://ninghechuan.com/2019/01/17/Verilog%E8%AE%BE%E8%AE%A1Valid-Ready%E6%8F%A1%E6%89%8B%E5%8D%8F%E8%AE%AE/ Handshake Protocol握手协议: 为了保证数据传输过程中准确无误,我们需要加上握手信号来控制信号的传输。握手协议的原则是:当Valid和Ready信号同时高有效... 阅读全文

posted @ 2019-08-13 13:42 迈克老狼2012 阅读(9095) 评论(0) 推荐(1) 编辑

E203 CSR rtl实现分析

摘要: CSR状态控制寄存器,每个hart都有自己的CSR。对于每个hart,可以配置的状态寄存器是4k。CSR寄存器的功能见:https://www.cnblogs.com/mikewolf2002/p/11314583.html CSR实现的rtl代码是e203_exu_csr.v,下面我们分析一下代码实现: 输出输入信号如下:module e203_exu_csr( ... 阅读全文

posted @ 2019-08-13 11:33 迈克老狼2012 阅读(1699) 评论(0) 推荐(0) 编辑

2019年8月12日

RiscV汇编介绍(1)-编译过程

摘要: 从c/c++源文件,到可以执行文件,需要以下几个步骤:预处理/编译汇编链接下面我们以hello world程序为例,展示整个编译链接过程。1. 编写hello.c代码#include int main(void){ printf("Hello World!\n"); return 0;}2.使用gcc –E hello.c –o hello.i, 将源文件hello.c... 阅读全文

posted @ 2019-08-12 20:29 迈克老狼2012 阅读(2991) 评论(0) 推荐(0) 编辑

2019年8月8日

RiscV汇编介绍(2)-编译过程

摘要: elf文件全称是Executable and Linkable Format,可执行链接格式,elf文件中除了机器码之外,还有段加载地址,运行入口地址,数据段等。 elf文件格式主要有以下三种:可重定向文件:文件保存着代码和适当的数据,用来和其它的目标文件一起来创建一个可执行文件或者共享目标文件。可执行文件:文件保存着一个用来执行的文件。共享目标文件:即共享库。elf文件详解:... 阅读全文

posted @ 2019-08-08 19:51 迈克老狼2012 阅读(5771) 评论(1) 推荐(0) 编辑

导航