深入理解OpenRISC体系结构

深入理解OpenRISC体系结构
作 者: 甄建勇
出版社: 机械工业出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 计算机/网络 计算机体系结构
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《深入理解OpenRISC体系结构》作者简介

内容简介

这是一本介绍OpenRISC体系结构的图书。通读对本书的阅读,读者不仅可以获得计算机体系结构设计的基础理论知识,还可以掌握动手设计处理器的基本技能,迈入CPU设计的大门。本书的内容大致可分为三部分,即知识储备、实例分析和动手实践。其中第一部分着重介绍了体系结构设计中的概念、并行技术、局部性原理,以及进行计算机体系接结构设计的一般流程。第二部分,以OpenRISC为分析对象,深入分析了开源CPU数据通路、控制通路和存储器层次组织的实际实现,对研究体系结构设计具有很高的现实意义和实际价值。此外本部分还介绍了以OpenRISC为基础的ORPSoC的很多设计细节。第三部分,介绍如何运用前面的积累设计一个简单的RISC核,以及设计的仿真和FPGA验证。本书适合急于了解和掌握体系结构设计基础,对开源CPU内部实现充满好奇,并想动手设计属于自己CPU的读者,以及从事嵌入式开发的技术人员。此外,本书还可作为对计算机体系结构设计感兴趣的电子工程类、自动控制类、计算机类的高年级本科生和研究生的参考用书。

图书目录

目 录

前言

第1章 绪 论 / 1

1.1 概述 / 1

1.2 计算机漫谈 / 3

1.2.1 十进制计算机 / 3

1.2.2 二进制计算机 / 7

1.3 计算机体系结构 / 12

1.3.1 图灵与图灵机 / 12

1.3.2 冯.诺依曼与冯.诺依曼体系结构 / 14

1.3.3 改进的哈佛体系结构 / 17

1.3.4 发展趋势 / 19

1.4 并行技术 / 20

1.4.1 流水线 / 20

1.4.2 乱序 / 22

1.4.4 单指令多数据流 / 22

1.4.5 同时多线程 / 23

1.4.6 单芯片多处理器 / 23

1.4.7 对称多处理器 / 25

1.5 局部性原理 / 25

1.6 计算机的评价 / 26

1.7 设计流程 / 27

1.7.1 分析 / 27

1.7.2 模拟器 / 28

1.7.3 FPGA设计 / 29

1.7.4 ASIC / 35

1.8 OpenRISC / 36

1.8.1 概述 / 36

1.8.2 OpenRISC寄存器集 / 37

1.8.3 OpenRISC指令集 / 41

1.9 小结 / 41

1.10 习题 / 42

第2章 基于OpenRISC的开发 / 43

2.1 概述 / 44

2.2 项目描述 / 44

2.3 开发环境的构建 / 44

2.3.1 开发环境的组成 / 44

2.3.2 开发环境的选择与安装 / 46

2.4 硬件的开发 / 51

2.4.1 模块划分和编码实现 / 51

2.4.2 功能仿真与时序仿真 / 51

2.5 驱动程序的开发 / 55

2.6 FPGA板级验证 / 66

2.7 硬件与软件的比较 / 66

2.8 ORPSoC与or1200 / 70

2.8.1 ORPSoC架构分析 / 70

2.8.2 ORPSoC的启动过程 / 73

2.8.3 or1200 / 83

2.9 小结 / 86

2.10 习题 / 86

第3章 数据通路设计 / 87

3.1 概述 / 87

3.2 数据通路 / 87

3.3 OpenRISC的数据通路整体架构分析 / 88

3.4 取指 / 89

3.5 译码 / 97

3.6 执行 / 118

3.6.1 运算部件基础 / 118

3.6.2 or1200的运算部件 / 127

3.7 访存 / 135

3.7.1 流水线的访存阶段 / 135

3.7.2 or1200访存阶段的具体实现分析 / 136

3.8 写回 / 142

3.8.1 or1200写回阶段整体功能 / 142

3.8.2 or1200写回阶段具体实现代码分析 / 143

3.9 设计一个简单的除法器 / 150

3.10 小结 / 156

3.11 习题 / 157

第4章 控制通路设计 / 158

4.1 概述 / 158

4.2 控制通路的复杂性 / 158

4.3 OR的控制通路设计分析 / 160

4.3.1 整体介绍 / 160

4.3.2 sprs模块 / 160

4.4 OR的异常处理 / 172

4.4.1 except模块 / 172

4.4.2 freeze模块 / 187

4.5 OR的调试系统 / 190

4.5.1 调试方案的分类 / 190

4.5.2 advanced debug system / 192

4.5.3 我的调试系统 / 195

4.5.4 JTAG模块 / 201

4.6 基于or1200的中断实验 / 223

4.7 小结 / 239

4.8 习题 / 239

第5章 存储器组织 / 240

5.1 概述 / 240

5.2 TLB与Cache / 241

5.2.1 概述 / 241

5.2.2 TLB / 243

5.2.3 Cache / 250

5.3 OR的存储器组织 / 256

5.3.1 OR的MMU / 257

5.3.2 OR的Cache / 265

5.4 自己设计一个简单的Cache / 292

5.5 小结 / 293

5.6 习题 / 294

第6章 自己设计一个简单的CPU / 295

6.1 概述 / 295

6.2 层次建模 / 295

6.3 可综合代码风格 / 299

6.4 一个简单CPU的设计、实现、仿真与综合 / 300

6.4.1 架构设计 / 301

6.4.2 模块划分 / 301

6.4.3 模块划分与接口定义 / 302

6.4.4 RTL实现 / 303

6.4.5 ModelSim仿真 / 326

6.4.6 综合 / 331

6.4.7 改进及优化 / 332

6.4.8 tiny_core的指令集 / 333

6.5 小结 / 334

6.6 习题 / 334

附录A 常用公式和定律 / 335

附录B wishbone / 337

附录C 状态机的4种写法 / 340

附录D 跨时钟域信号的同步 / 352

附录E 推荐阅读 / 362

参考文献 / 364

后记 / 365