OpenRisc-45-or1200的ID模块分析】的更多相关文章

引言 之前,我们分析了or1200流水线的整体结构,也分析了流水线中IF级,EX级,本小节我们来分析ID(insn decode)级的一些细节. 1,基础 or1200的pipeline的ID阶段包含一个模块,就是ctrl模块,其对应的文件是or1200_ctrl.v.ID,就是instruction decode,顾名思义,其主要任务就是对从IF阶段取得的指令进行解析,产生各种控制信号. 在分析本模块之前,我们有必要先了解几个相关的概念,这对后面的RTL的分析会有很大帮助. 1>forword…
引言 “喂饱饥饿的CPU”,是计算机体系结构设计者时刻要考虑的问题.要解决这个问题,方法大体可分为两部分,第一就是利用principle of locality而引进的cache技术,缩短取指时间,第二就是采用各种转移预测技术,提高取指正确的概率. 只有cache,没有好的转移预测,取指时间再短,每次提前取的指令都是错的,不行. 只有转移预测,没有cache,即使每次取得指令都对,但是每次取指都需要很长时间,也不行. 所以,只有两部分通力合作,才能喂饱饥饿的ALU. “吃的是草,挤出来的是奶”,…
引言 MMU(memory management unit),无论对于computer architecture designer还是OS designer,都是至关重要的部分,设计和使用的好坏,对性能影响比较大. MMU,我觉得是硬件和软件配合最密切的部分之一,对于RISC CPU而言,更是这样. 前面,我们对or1200的整体memory hierarchy做了简单分析,了解了cache的映射方式,替换策略,写策略,以及cache的优化等等背景知识,并对or1200的具体实现做了分析.在现实…
引言 之前,我们在分析or1200的WB模块时(http://blog.csdn.net/rill_zhen/article/details/10220619),介绍了OpenRISC的GPRS(general purpose register set).除了GPRS之外,大多数的CPU还有SPRS(special purpose register set).在分析完or1200的数据通路之后,从本小节开始,我们将分析or1200的控制通路.or1200的控制通路包括sprs,except,fr…
引言 “善妖善老,善始善终”,说的是无论什么事情要从有头有尾,别三分钟热度. 对于or1200的流水线来说,MA阶段是最后一个阶段,也是整条流水线的收尾阶段,负责战场的清扫工作.比如,把运算指令的运算结果要写到寄存器里,把从内存读来的数据写到寄存器里,如果在前面的流水阶段出现了异常,WB阶段还要负责把异常指令的地址存到寄存器里.总之呢,就是写回寄存器. 本小节,我们就分析一下or1200五级流水线最后一级,也就是WB(write back). 1,整体结构 or1200的WB模块,主要包括的rt…
引言 为CPU提供足够的,稳定的指令流和数据流是计算机体系结构设计中两个永恒的话题.为了给CPU提供指令流,需要设计分支预测机构,为了给CPU提供数据流,就需要设计cache了.其实,无论是insn还是data,都需要访问存储器,所以从这个角度来说,cache需要承担更重要的角色. 本小节我们就分析一下or1200的cache部分的实现. 1,cache产生原因 还是那句话,研究一个东西,首先要了解其来龙去脉,cache也不例外. cache的出现是为了解决memory wall问题.由于cpu…
引言 之前,我们分析or1200的控制通路中的sprs模块和except模块,本小节,我们就分析一下or1200控制通路的最后一个模块,就是freeze模块. 1,整体分析 freeze模块,顾名思义,就是根据各个流水阶段的反馈信号,负责产生控制整条流水线各个阶段的暂停信号,如取指阶段的genpc_freeze和if_freeze信号,解码阶段的id_freeze信号,执行阶段的ex_freeze信号,以及写回阶段的wb_freeze信号,共5个暂停信号. 可以这么说,freeze就好像整条流水…
[转]python模块分析之logging日志(四) python的logging模块是用来写日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) python模块分析之logging日志(四) python模块分析之unittest测试(五) python模块分析之collections(六) logging的结构 查看logging的python源码,可知主要有四个类实…
前言 python的logging模块是用来设置日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) python模块分析之logging日志(四) python模块分析之unittest测试(五) python模块分析之collections(六) 日志记录的级别 DEBUG:优先级10,记录调试的详细信息,只在调试时开启: INFO:优先级20,记录普通的消息,包括错误…
引言 computer(计算机),顾名思义,就是用来compute(计算)的.计算机体系结构在上世纪五六十年代的时候,主要就是研究如何设计运算部件,就是想办法用最少的元器件(那时元器件很贵),最快的速度,完成加减乘除......等等这些运算.后来发现运算已经足够快了,快到已经无法提供足够的运算指令和运算的操作数了,人们才开始研究如何给运算部件提供足够的指令和数据,这就产生了cache啊,分支预测啊,流水线啊,等等技术. 本小节,我们就分析一下or1200的运算部件. 1,基础 在上世纪50年代中…