更新时间:2018-12-27 11:18:34
封面
版权信息
前言
第1章 OpenRISC介绍
1.1 开源软核处理器
1.2 OpenRISC 1000架构
1.3 OR1200——OpenRISC 1000架构的一个实现
1.3.1 寻址模式
1.3.2 位和字节次序
1.3.3 寄存器集
1.3.4 指令集
1.3.5 异常模型
1.4 OR1200代码组织
1.5 本书的分析方法
第2章 实验环境的搭建
2.1 GNU开发工具链的安装
2.2 GNU开发工具链的使用
2.2.1 一个简单的汇编程序
2.2.2 编译及ELF文件介绍
2.2.3 链接
2.2.4 Makefile文件
2.2.5 使用OR1KSim模拟器运行程序
2.3 创建OR1200运行的最小系统
2.3.1 最小系统的创建
2.3.2 运行仿真
2.3.3 修改Makefile
2.3.4 观察流水线
2.3.5 流水线介绍
2.4 本书的一些说明及定义
2.4.1 一些说明
2.4.2 一些定义
第3章 QMEM剖析
3.1 QMEM的作用
3.2 Wishbone总线快速了解
3.3 QMEM的Wishbone总线接口
3.3.1 QMEM与CPU、IMMU的连接
3.3.2 QMEM与ICache的连接
3.3.3 QMEM与CPU、DMMU的连接
3.3.4 QMEM与DCache的连接
3.4 QMEM的内部RAM
3.5 复位后取第一条指令的过程分析
3.5.1 复位信号有效阶段
3.5.2 复位信号无效后的第一个时钟周期上升沿
3.5.3 复位信号无效后的第一个时钟周期的组合逻辑阶段
3.6 第二条及后续指令的读取过程分析
3.6.1 复位信号无效后的第二个时钟周期的上升沿
3.6.2 复位信号无效后的第二个时钟周期的组合逻辑阶段
第4章 数据处理类指令剖析
4.1 数据处理类指令说明
4.2 分析用例
4.3 流水线的简单模型
4.4 l.add指令分析
4.4.1 l.add取指阶段的组合逻辑输出
4.4.2 l.add取指阶段的时序逻辑输出
4.4.3 l.add译码阶段的组合逻辑输出
4.4.4 l.add译码阶段的时序逻辑输出
4.4.5 l.add执行阶段的组合逻辑输出
4.4.6 l.add执行阶段的时序逻辑输出
4.4.7 第一条指令分析小结
4.5 l.sfeqi指令分析
4.5.1 l.sfeqi取指阶段的组合逻辑输出
4.5.2 l.sfeqi取指阶段的时序逻辑输出
4.5.3 l.sfeqi译码阶段的组合逻辑输出
4.5.4 l.sfeqi译码阶段的时序逻辑输出
4.5.5 l.sfeqi执行阶段的组合逻辑输出
4.5.6 l.sfeqi执行阶段的时序逻辑输出
4.5.7 第二条指令分析小结
4.6 ALU分析
4.7 流水线数据相关的解决方法
4.8 定制属于自己的指令
4.9 不完整流水线数据通路图
第5章 特殊寄存器访问类指令剖析
5.1 OR1200中的特殊寄存器
5.2 第0组特殊寄存器
5.3 特殊寄存器访问类指令说明
5.4 分析用例
5.5 l.mfspr指令分析
5.5.1 l.mfspr取指阶段的组合逻辑输出
5.5.2 l.mfspr取指阶段的时序逻辑输出
5.5.3 l.mfspr译码阶段的组合逻辑输出
5.5.4 l.mfspr译码阶段的时序逻辑输出
5.5.5 l.mfspr执行阶段第1个时钟周期的组合逻辑输出
5.5.6 l.mfspr执行阶段第1个时钟周期的时序逻辑输出
5.5.7 l.mfspr执行阶段第2个时钟周期的组合逻辑输出
5.5.8 l.mfspr执行阶段第2个时钟周期的时序逻辑输出
5.5.9 l.mfspr指令分析小结
5.6 l.mtspr指令分析
5.6.1 l.mtspr执行阶段的组合逻辑输出
5.6.2 l.mtspr执行阶段的时序逻辑输出
5.7 SPRS分析
5.8 完善流水线数据通路图
第6章 转移类指令剖析
6.1 延迟槽
6.2 转移类指令说明
6.3 分析用例
6.4 l.bf指令分析
6.4.1 l.bf取指阶段的组合逻辑输出
6.4.2 l.bf取指阶段的时序逻辑输出
6.4.3 l.bf译码阶段的组合逻辑输出
6.4.4 l.bf译码阶段的时序逻辑输出