-
2024-01-04 #cpu
冒险与停顿
- 结构冒险
- 每个部件每个周期只能被一条指令使用
- 数据冒险
- 前递(forwarding)或旁路: 上级已经计算出新值,下一级(以及之后)不必等待,直接拿到数据 e.g.
sub x2, x1, x3; and x12, x2, x5
,其中x2
在sub
指令的EX阶段算出来新值后可以立即前递给and
指令的EX阶段 - 停顿(stall)或气泡: 无法前递的冒险(比如载入-使用型数据冒险)只能
- 前递(forwarding)或旁路: 上级已经计算出新值,下一级(以及之后)不必等待,直接拿到数据 e.g.
- 结构冒险
-
2023-12-27 #cpu
代码都在这里
刚学完AXI-Lite,在用
valid/ready
握手在一条链上传递信息的时候,发现每传递一个消息,每一级都需要切换idle
和wait
两个状态,当时就在想能不能砍掉idle
状态,毫无停顿地发下去.学到Double Buffer FIFO的时候,才发现原来可以这样简单地就解决了.Bubble FIFO
先考虑最简单的Bubble FIFO,每个Buffer只有两种状态:空
empt
-
Types
Data
is the root of the Chisel type system.UInt
andSInt
extendBits
虽然chisel能够自动推断宽度,但是最好还是指定一下宽度(如
4.W
)UInt () UInt (8.W) 3.U(4.W) // An 4-bit constant of 3
We will need Scala vars to write
-
2023-10-21 #cpu
注: 啃手册自用,基于riscv-spec-20191213-1版本,使用DeepL辅助翻译,人工二次修改校对,若有纰漏,望谅指正.
riscv-spec
Chapter 9 “Zicsr” CSR
“Zicsr”, 控制和状态寄存器(CSR) 指令, Version 2.0
RISC-V 定义了一个由 4096 个控制和状态寄存器及其Hart(硬件线程)组成的独立地址空间。本章定义了在这些 CS
-
2023-08-22 #cpu
RV32I指令集和多周期 RV32I CPU代码的笔记,可用于RV32I指令集速查
指令格式
RISC-V指令集是模块化设计的,其中RV32I是基本的32位整数ISA,只有47种指令,但是足以提供给现代操作系统足够的基本支持以及作为编译器的编译目标。
| 助记符 | 描述 | | ------ | ------------- | | I
-
2023-08-03 #cpu
第一篇“提问的智慧” 较为系统和详细,作者描述了很多提问时需要注意的细节,非常详细,在此将其结合自己的理解概括总结如下:
- 提问之前:应该尽可能先自己解决问题,而不是一有问题就麻烦别人。
- 提问时:
- 提问的地方:选择合适的地方,尊重他人
- 标题:使用
目标-差异
式的描述,目标
指示哪里有问题,差异
指示与正常情况有何差别 - 内容:
- 拼写语法正确,易于阅读
- 简洁、准确描述重现问题发现的情况
- 先直接告知现象而不是