or1200中IMMU分析(续)

以下内容摘自《步步惊芯——软核处理器内部设计分析》一书

2 IMMU中的特殊寄存器

OR1200处理器中的IMMU包含第2组特殊寄存器,如表10.1所示。

ITLBW0MRx是指令TLB匹配寄存器,其格式如表10.2所示。

表10.2是OpenRISC 1000规范中的定义,实际在OR1200处理器中只实现了其中一部分字段,包括VPN(Virtual
Page Number)的一部分、V(Valid标志位)。ITLBW0MRx对应图10.7中MR_RAM的表项,每一个表项对应一个ITLBW0MRx,表项中“有效地址的19-31位”对应ITLBW0MRx的19-31位,表项中的V对应ITLBW0MRx中的V。如图10.8所示。

ITLBW0TRx是指令TLB翻译寄存器,其格式如表10.3所示。

表10.3是OpenRISC 1000规范中的定义,实际在OR1200中也只实现了其中一部分字段,包括PPN(Physical Page Number)的一部分、UXE、SXE、CI。ITLBW0TRx对应图10.7中TR_RAM的表项,每一个表项对应一个ITLBW0TRx,具体的对应关系也很直接。如图10.9所示。

ITLB最大可配置有128项,所以ITLBW0MRx、ITLBW0TRx的x是从0-127,默认ITLB只配置有64项,此时ITLBW0MRx、ITLBW0TRx中的x只有0-63是有效的。

3 OR1200中关于IMMU的一些配置

在or1200_defines.v中有一些与IMMU相关的宏定义,用户可以通过修改宏定义实现对IMMU的配置,主要宏定义如下:

or1200中IMMU分析(续),布布扣,bubuko.com

时间: 2024-12-09 03:52:20

or1200中IMMU分析(续)的相关文章

or1200中IMMU分析

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 1 IMMU结构 OR1200中实现IMMU的文件有or1200_immu_top.v.or1200_immu_tlb.v.or1200_spram.v,其中使用or1200_immu_top.v实现了IMMU模块,使用or1200_immu_tlb.v实现了ITLB模块,or1200_spram.v是一个单口RAM,使用其实现了ITLB的表项.如图10.5所示.本小节将分别介绍IMMU模块与其余模块的连接关系.ITLB结构. 1.1 I

or1200中IMMU分析(再续)

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 ITLB代码分析 ITLB是IMMU中的主要模块,其实现也相对独立.简单.本节对ITLB的代码进行分析.ITLB的输入输出接口如图10.10所示,图中左边是输入接口,右边是输出接口. 因为在ITLB中实现了第2组特殊寄存器,所以有spr_cs.spr_write.spr_addr.spr_dat_i.spr_dat_o等接口,这些接口的含义在分析特殊寄存器类指令的时候已经学习过,应该是非常熟悉的.剩下的输入输出接口含义如下: tlb_en

Or1200中IMMU使用举例

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 5 IMMU使用情景 前几章通过对OR1200处理器中各类指令执行过程的分析,实现了对CPU模块的剖析,本章将采用情景分析法,通过对使用IMMU的各种情景的分析以实现对IMMU模块剖析.使用IMMU的情景有如下几种: (1)使用IMMU进行地址翻译,同时ITLB命中,且没有违反页保护策略 (2)使用IMMU进行地址翻译,但是ITLB未命中 (3)使用IMMU进行地址翻译,虽然ITLB命中,但是违反了页保护策略 (4)l.mtspr指令写特

or1200于IMMU分析

以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 1 IMMU结构 OR1200中实现IMMU的文件有or1200_immu_top.v.or1200_immu_tlb.v.or1200_spram.v,当中使用or1200_immu_top.v实现了IMMU模块,使用or1200_immu_tlb.v实现了ITLB模块,or1200_spram.v是一个单口RAM.使用事实上现了ITLB的表项.如图10.5所看到的. 本小节将分别介绍IMMU模块与其余模块的连接关系.IT

OR1200中数据Cache的使用情景分析

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 13.7DCache使用情景之一--存储指令执行阶段DCache失靶 存储指令执行阶段DCache失靶这种情景在通写法.回写法策略下有不同的执行过程,在通写法策略下直接写存储器中对应的地址,不操作DCache.在回写法策略下,首先判断目的地址对应的DCache中目录表的line是否被修改,如果是(Dirty为1),则将该line写回到内存,然后将目的地址所在的内存块读入DCache,填充到对应line,然后再修改DCache中对应目的地址

OR1200中指令Cache的结构

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.3 ICache结构 OR1200中实现ICache的文件有or1200_ic_top.v.or1200_ic_fsm.v.or1200_ic_tag.v.or1200_ic_ram.v.or1200_spram.v,分别实现了ICache模块.IC_FSM模块.IC_TAG模块.IC_RAM模块.单口RAM.在ICache中例化了IC_FSM.IC_TAG.IC_RAM模块,在IC_TAG.IC_RAM模块中例化了单口RAM.如图

Cache基本知识与OR1200中ICache简介

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.1 Cache基本知识 12.1.1 Cache的作用 处理器的设计者一般会声称其设计的处理器一秒钟能做多少次乘法.每条指令只占用xx个时钟周期,可是当我们实际使用处理器时,就会发现并不是那么回事,比如在第11章,从图11.8中可以发现,当程序运行在简单SOPC上时,原先设计在执行阶段只需要一个时钟周期的指令l.movhi却使用了6个时钟周期才完成执行,造成实际情况与设计不符的原因是由于实际情况是一个由多个模块.设备组成的系统,读者

or1200中乘法除法指令说明

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 OR1200中乘法除法类指令共有9条,表8.3给出了所有的乘法除法类指令的作用及说明. 说明:表8.3是ORBIS32中给出的指令用法,但是通过分析OR1200的代码,发现有些指令并没有按照ORBIS32实现,如:l.mac.l.maci.l.msb,这三条指令有一个共同点就是涉及到乘法结果的低32位与{MACHI,MACLO}的运算,比如l.mac指令需要乘法结果的低32位加上{MACHI,MACLO},但是在OR1200实现中并没有只

or1200中加载存储类指令说明

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 OR1200中实现的加载存储类指令有8条,每条指令的作用与说明如表9.1所示. 说明一点:在第2章建立的最小系统没有配置使用MMU,所以有效地址等于物理地址. 加载存储类指令的助记符也很好理解记忆,第一位是's'表示存储指令,'l'表示加载指令:第二位是'b'表示对字节操作,'h'表示对半字操作,'w'表示对字操作:第三位是'z'表示零扩展,'s'表示符号扩展.据此可以对指令进行简称,如:l.sb指令可以简称为存储字节指令.l.lwz指令