以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
2 IMMU中的特殊寄存器
OR1200处理器中的IMMU包含第2组特殊寄存器,如表10.1所示。
ITLBW0MRx是指令TLB匹配寄存器,其格式如表10.2所示。
表10.2是OpenRISC 1000规范中的定义,实际在OR1200处理器中只实现了其中一部分字段,包括...
分类:
其他好文 时间:
2014-06-20 10:21:15
阅读次数:
309
以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
在本书第2章建立了最小系统,最小系统只由CPU、QMEM模块组成,借助于最小系统,我们分析了OR1200各类指令的执行过程、熟悉了流水线的工作原理以及CPU内部各个模块的代码实现,第10章在最小系统上增添了IMMU、DMMU模块,借此分析了OR1200中内存管理单元的实现原理。本章将建立一个基于OR1200的简单SOPC,...
分类:
其他好文 时间:
2014-06-10 18:05:08
阅读次数:
735
5 IMMU使用情景
前几章通过对OR1200处理器中各类指令执行过程的分析,实现了对CPU模块的剖析,本章将采用情景分析法,通过对使用IMMU的各种情景的分析以实现对IMMU模块剖析。使用IMMU的情景有如下几种:
(1)使用IMMU进行地址翻译,同时ITLB命中,且没有违反页保护策略
(2)使用IMMU进行地址翻译,但是ITLB未命中
(3)使用IMMU进行地...
分类:
其他好文 时间:
2014-06-10 15:26:08
阅读次数:
300
以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
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,使用其实...
分类:
其他好文 时间:
2014-06-05 08:48:55
阅读次数:
368
以下内容摘自《步步惊心芯——软核处理器内部设计分析》一书
页表一般都很大,并且存放在内存中,所以处理器引入MMU后,读取指令、数据需要访问两次内存:首先通过查询页表得到物理地址,然后访问该物理地址读取指令、数据。为了减少因为MMU导致的处理器性能下降,引入了TLB,TLB是Translation
Lookaside Buffer的简称,可翻译为“地址转换后援缓冲器”,...
分类:
其他好文 时间:
2014-06-05 01:44:03
阅读次数:
314
以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
完整的OR1200处理器流水线数据通路图,如图9.12所示,图中显示了数据处理类、特殊寄存器访问类、转移类、异常处理类、乘法除法类、加载存储类指令处理过程中流水线各个阶段的数据流转。
(1)取指阶段:GENPC模块计算指令地址,然后通过指令Wishbone总线从指令存储器中取得指令,...
分类:
其他好文 时间:
2014-05-08 17:23:32
阅读次数:
323
以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
OR1200中实现的加载存储类指令有8条,每条指令的作用与说明如表9.1所示。
说明一点:在第2章建立的最小系统没有配置使用MMU,所以有效地址等于物理地址。
加载存储类指令的助记符也很好理解记忆,第一位是’s’表示存储指令,’l’表示加载指令;第二位是’b’表示对字节操作...
分类:
其他好文 时间:
2014-05-07 15:13:28
阅读次数:
421
以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
串行除法与并行除法
8.2.1 串行除法
OR1200中使用的串行除法算法是“试商法”。设被除数是m,除数是n,商保存在s中,被除数的位数是k,其计算步骤如下(为了便于说明,在此处所有数据的最低位称之为第1位,而不称为第0位):
(1)取出被除数的最高位m[k],使用被除数的最高位减去除数n,如...
分类:
其他好文 时间:
2014-05-07 04:48:29
阅读次数:
343
以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
OR1200中乘法除法类指令共有9条,表8.3给出了所有的乘法除法类指令的作用及说明。
说明:表8.3是ORBIS32中给出的指令用法,但是通过分析OR1200的代码,发现有些指令并没有按照ORBIS32实现,如:l.mac、l.maci、l.msb,这三条指令有一个共同点就是涉...
分类:
其他好文 时间:
2014-05-06 19:45:29
阅读次数:
318