03 2022 档案

摘要:https://mp.weixin.qq.com/s/C6Twva47PDyUev-BLhKLug 简单介绍ALU的实现。 1. object ALU ALU对象中定义了ALU要使用的一些常量和辅助方法。 1) 常量 a. SIZE_ALU_FN: 表示ALU操作类型的占用的宽度为4位; 需要注意的 阅读全文
posted @ 2022-03-22 20:03 wjcdx 阅读(541) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/mTHnVCxOk04nDQbqpr5xnw 简单介绍IDecode的实现。 1. DecodeConstants 定义了解码相关的常量,也就是每条指令对应的解码信号的值。这些是在指令集编码设计的时候确定的,所以落实到代码中是常量。 2. Int 阅读全文
posted @ 2022-03-22 20:02 wjcdx 阅读(289) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/KfU9ynQGmCsMCu2ACV17uA 简单介绍Instructions的实现。 1. Instructions 定义各个指令的比特模式: 其中: a. 部分比特位值是确定的0和1; b. 无关的比特位值可以随意,这里使用问号表示; 这些比 阅读全文
posted @ 2022-03-22 20:01 wjcdx 阅读(156) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/Z67OXngGV2Qb8Qf80LzY1g 简单介绍Consts的实现。 1. ScalarOpConstants 定义标量操作相关的常量: 1) MT 定义操作的内存类型: 如下图所示load指令中的使用: mtSize表示操作数的大小,以字 阅读全文
posted @ 2022-03-22 20:00 wjcdx 阅读(196) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/0GSNIf0wCApPi8XYwa8MdQ 简单介绍EventSet的实现。 1. EventSet 定义事件集合: 0) 类参数 EventSet类包含两个类参数: a. gate: (UInt, UInt) => Bool:使用两个参数,返 阅读全文
posted @ 2022-03-22 19:59 wjcdx 阅读(152) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/sRYIPj9tlxuZAPZxwYpEYQ 简单介绍structure/data/control三大类hazard相关的实现。 参考链接:https://www.elsevier.com/__data/assets/powerpoint_doc 阅读全文
posted @ 2022-03-21 20:19 wjcdx 阅读(314) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/QbFEuvix7kgFssqDK6OyKQ 简单介绍id_load_use相关的实现。 1. id_load_use id_load_use是一个线型信号: 其赋值为: 其包含的三个条件中: a. mem_ctrl.mem表示MEM阶段当前指令 阅读全文
posted @ 2022-03-21 20:18 wjcdx 阅读(152) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/5FpKbfJFWPXZCFFXrhAXDQ 简单介绍ex_slow_bypass相关的实现。 1. ex_slow_bypass ex_slow_bypass表示指令为sc,或者访问的内存大小小于4字节的情况: ex_slow_bypass用于 阅读全文
posted @ 2022-03-21 20:17 wjcdx 阅读(123) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/g2oTABxX1RXp03sod87hmw 简单介绍bypass或者stall之间的差异。 1. 概述 bypass的条件与stall的条件并不相同,甚至应该互斥。即不能bypass的则stall,不stall的则bypass。前提条件是存在h 阅读全文
posted @ 2022-03-21 20:16 wjcdx 阅读(322) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/-mb2ENHqnciGiSLXUwOOBA 简单介绍bypass相关变量的用法。 1. 概述 所谓bypass或者forward,就是把没有回写到寄存器中的数据提前传给后续的指令使用: 在当前实现中,所有的bypass都传递到后续指令的EX阶段 阅读全文
posted @ 2022-03-21 20:15 wjcdx 阅读(214) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/6Xb2INIqWP5mFy2nR3l6AA 简单介绍wb_reg_wdata相关的实现。 1. wb_reg_wdata的正常使用 正常情况下,wb_reg_wdata寄存器用于存放要回写到寄存器的数据,比如数学运算指令的运算结果,用于生成rf 阅读全文
posted @ 2022-03-20 11:19 wjcdx 阅读(178) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/UuIy-KkdlsE9aK7XwGA0GA 简单介绍sboard.set相关的实现。 1. sboard.set sboard用于记录对通用寄存器的占用,每个比特位代表一个寄存器。sboard.set用于实现对相应位的置位。 1) sboard 阅读全文
posted @ 2022-03-20 11:18 wjcdx 阅读(222) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/mwmD3JctGIxLAjMnIUnd-Q 简单介绍io.dmem及HellaCacheIO的结构。 1. io.dmem 在ex阶段和mem阶段均对io.dmem接口进行了填充: io.dmem的定义咋HasCoreIO这个trait中: H 阅读全文
posted @ 2022-03-20 11:17 wjcdx 阅读(342) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/ObOJWdSvJKVWUsE2W71GEQ 简单介绍ctrl_stalld相关的实现。 1. 概述 顾名思义,ctrl_stalld的意思是stall id阶段,也就是挂起id阶段,不再继续前进。 同时,还有另外一个变量叫做ctrl_killd 阅读全文
posted @ 2022-03-20 11:15 wjcdx 阅读(116) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/zIus4MysOdrGYpbZiqNVGg 简单介绍mem_reg_rs2相关的实现。 1. mem_reg_rs2 mem_reg_rs2是一个流水线寄存器: 用于接收ex阶段传递过来的寄存器参数: 其中: a. ex_rs(1)存放的是rs 阅读全文
posted @ 2022-03-20 11:13 wjcdx 阅读(110) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/qv9ia9bU2mvvihk5OxL5EQ 简单介绍ex_reg_mem_size相关的实现。 1. ex_reg_mem_size 1) 定义 ex_reg_mem_size是一个无符号整形寄存器,是IE/EX阶段的流水线寄存器,用于ID阶段 阅读全文
posted @ 2022-03-20 11:10 wjcdx 阅读(122) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/6PBY-seJ6Cj2-yzQD_HAJg 简单介绍流水线对replay的处理。本文不研究为什么会发生replay。 1. replay的效果 replay经流水线传递之后,最终在wb阶段起作用: 即触发take_pc_wb,以wb_reg_p 阅读全文
posted @ 2022-03-20 11:08 wjcdx 阅读(375) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/eJd4VpU5fsZ6WM_YYXPX4Q 简单介绍流水线对sfence.vma指令的处理。 1. io.imem.sfence 根据规范,sfence.vma指令的用途如下: 其效果最终通过io.imem.sfence/io.ptw.sfen 阅读全文
posted @ 2022-03-20 11:07 wjcdx 阅读(496) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/Nzm5m0Ub6SmQ-CWf4kaFKQ 简单介绍fence, fence_i, sfence的差异。 1. IntCtrlSigs IntCtrlSigs中包含了fence和fence_i的定义: FENCE指令的信号值如下: 其中:fen 阅读全文
posted @ 2022-03-12 00:06 wjcdx 阅读(554) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/6WVmHCY0nd_AtOBByfgJVA 简单介绍wb_reg_flush_pipe的作用。 1. wb_reg_flush_pipe值的由来 1) wb_reg_flush_pipe wb_reg_flush_pipe的值是通过流水线从me 阅读全文
posted @ 2022-03-12 00:05 wjcdx 阅读(98) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/oWJb2NIl9poyBFBwVNNJ-A 简单介绍ctrl_killd的作用。 1. 概述 ctrl_killd表示id阶段被kill,也就是id阶段的指令被废弃,不再执行。 2. ctrl_killd发生的时钟周期: cycle t 1) 阅读全文
posted @ 2022-03-12 00:04 wjcdx 阅读(167) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/fWbfACM87AhrLe-b9j4j-Q 简单介绍mem_reg_valid和mem_pc_valid的用法。 本文目录: 1. 概述 2. reg_valid 3. pc_valid 以下正文: 1. 概述 概括而言,reg_valid表示 阅读全文
posted @ 2022-03-12 00:03 wjcdx 阅读(100) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/HicRl6t-4lKN0uOzBG2f7w 简单介绍take_pc对流水线的影响。 1. take_pc是线型变量,其值变化即时生效 take_pc意为指示if阶段take新的pc,从新的pc开始取指。其定义为: 从中可知其类型依赖于take_ 阅读全文
posted @ 2022-03-12 00:02 wjcdx 阅读(108) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/7YF5cZLYkvo-Dbp30DxwsA 简单介绍take_pc相关的实现。 本文目录: 1. take_pc 2. 用途 3. 意义 4. take_pc_mem 5. take_pc_wb 6. 总结 以下正文: 1. take_pc t 阅读全文
posted @ 2022-03-12 00:01 wjcdx 阅读(196) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/PYporobINz5czzgY8p1odw 简单介绍中断和异常的优先级。 本文目录: 1. 中断在ID阶段被检测 2. ID阶段同时存在中断和异常信号 3. 各阶段的异常 4. 领先于中断的异常 以下正文: 1. 中断在ID阶段被检测 中断信号 阅读全文
posted @ 2022-03-12 00:00 wjcdx 阅读(281) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s/Lacj8qDWhn98BMPns-mJPw 简单介绍wb阶段异常的处理。 本文目录: 1. wb阶段的异常 2. 使用mtval记录异常内存地址信息 以下正文: 1. wb阶段的异常 wb阶段发生的异常如下: a. misaligned sto 阅读全文
posted @ 2022-03-11 23:59 wjcdx 阅读(196) 评论(0) 推荐(0)