《步步惊“芯” 软核处理器内部设计分析》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:雷思磊著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2013
  • ISBN:9787121204890
  • 页数:482 页
图书介绍:本书以开源32位软核处理器OR1200为研究对象,像引导读者如做解剖学实验那般,对其进行剖析,力图使读者对教科书上介绍的处理器有一个实践上的认识,打破处理器令人高深莫测的印象,同时使读者了解处理器设计的细节。OR1200包括CPU、MMU、Cache、总线接口、电源管理、中断控制和计时器单元等多个模块,对于不同的模块,根据其难易程度,采用指令驱动分析法、情景分析法及直接分析源代码等不同的分析方法,便于读者理解。

第1章 OpenRISC介绍 1

1.1 开源软核处理器 1

1.2 OpenRISC 1000架构 4

1.3 OR1200——OpenRISC 1000架构的一个实现 4

1.3.1 寻址模式 5

1.3.2 位和字节次序 6

1.3.3 寄存器集 6

1.3.4 指令集 7

1.3.5 异常模型 8

1.4 OR1200代码组织 8

1.5 本书的分析方法 11

第2章 实验环境的搭建 13

2.1 GNU开发工具链的安装 13

2.2 GNU开发工具链的使用 18

2.2.1 一个简单的汇编程序 18

2.2.2 编译及ELF文件介绍 19

2.2.3 链接 21

2.2.4 Makefile文件 23

2.2.5 使用ORlKSim模拟器运行程序 24

2.3 创建OR1200运行的最小系统 25

2.3.1 最小系统的创建 26

2.3.2 运行仿真 29

2.3.3 修改Makefile 30

2.3.4 观察流水线 32

2.3.5 流水线介绍 33

2.4 本书的一些说明及定义 34

2.4.1 一些说明 34

2.4.2 一些定义 35

第3章 QMEM剖析 37

3.1 QMEM的作用 37

3.2 Wishbone总线快速了解 40

3.3 QMEM的Wishbone总线接口 43

3.3.1 QMEM与CPU、IMMU的连接 44

3.3.2 QMEM与ICache的连接 45

3.3.3 QMEM与CPU、DMMU的连接 46

3.3.4 QMEM与DCache的连接 47

3.4 QMEM的内部RAM 49

3.5 复位后取第一条指令的过程分析 51

3.5.1 复位信号有效阶段 51

3.5.2 复位信号无效后的第一个时钟周期上升沿 56

3.5.3 复位信号无效后的第一个时钟周期的组合逻辑阶段 57

3.6 第二条及后续指令的读取过程分析 58

3.6.1 复位信号无效后的第二个时钟周期的上升沿 58

3.6.2 复位信号无效后的第二个时钟周期的组合逻辑阶段 59

第4章 数据处理类指令剖析 61

4.1 数据处理类指令说明 61

4.2 分析用例 65

4.3 流水线的简单模型 67

4.4 1.add指令分析 69

4.4.1 1.add取指阶段的组合逻辑输出 70

4.4.2 1.add取指阶段的时序逻辑输出 73

4.4.3 1.add译码阶段的组合逻辑输出 75

4.4.4 1.add译码阶段的时序逻辑输出 80

4.4.5 1.add执行阶段的组合逻辑输出 91

4.4.6 1.add执行阶段的时序逻辑输出 97

4.4.7 第一条指令分析小结 98

4.5 1.sfeqi指令分析 99

4.5.1 1.sfeqi取指阶段的组合逻辑输出 99

4.5.2 1.sfeqi取指阶段的时序逻辑输出 100

4.5.3 1.sfeqi译码阶段的组合逻辑输出 100

4.5.4 1.sfeqi译码阶段的时序逻辑输出 101

4.5.5 1.sfeqi执行阶段的组合逻辑输出 102

4.5.6 1.sfeqi执行阶段的时序逻辑输出 105

4.5.7 第二条指令分析小结 106

4.6 ALU分析 106

4.7 流水线数据相关的解决方法 112

4.8 定制属于自己的指令 117

4.9 不完整流水线数据通路图 121

第5章 特殊寄存器访问类指令剖析 123

5.1 OR1200中的特殊寄存器 123

5.2 第0组特殊寄存器 125

5.3 特殊寄存器访问类指令说明 127

5.4 分析用例 128

5.5 1.mfspr指令分析 130

5.5.1 1.mfspr取指阶段的组合逻辑输出 131

5.5.2 1.mfspr取指阶段的时序逻辑输出 132

5.5.3 1.mfspr译码阶段的组合逻辑输出 132

5.5.4 1.mfspr译码阶段的时序逻辑输出 133

5.5.5 1.mfspr执行阶段第1个时钟周期的组合逻辑输出 135

5.5.6 1.mfspr执行阶段第1个时钟周期的时序逻辑输出 138

5.5.7 1.mfspr执行阶段第2个时钟周期的组合逻辑输出 141

5.5.8 1.mfspr执行阶段第2个时钟周期的时序逻辑输出 144

5.5.9 1.mfspr指令分析小结 144

5.6 1.mtspr指令分析 145

5.6.1 1.mtspr执行阶段的组合逻辑输出 147

5.6.2 1.mtspr执行阶段的时序逻辑输出 148

5.7 SPRS分析 148

5.8 完善流水线数据通路图 155

第6章 转移类指令剖析 157

6.1 延迟槽 157

6.2 转移类指令说明 158

6.3 分析用例 159

6.4 1.bf指令分析 161

6.4.1 1.bf取指阶段的组合逻辑输出 162

6.4.2 1.bf取指阶段的时序逻辑输出 163

6.4.3 1.bf译码阶段的组合逻辑输出 164

6.4.4 1.bf译码阶段的时序逻辑输出 166

6.4.5 1.bf执行阶段第1个时钟周期的组合逻辑输出 169

6.4.6 1.bf执行阶段第2个时钟周期的组合逻辑输出 173

6.4.7 1.bf执行阶段第2个时钟周期的时序逻辑输出 174

6.4.8 1.bf指令分析小结 175

6.5 1.ialr指令分析 176

6.5.1 1.jalr取指阶段的组合逻辑输出 177

6.5.2 1.jalr取指阶段的时序逻辑输出 177

6.5.3 1.jalr译码阶段的组合逻辑输出 177

6.5.4 1.jalr译码阶段的时序逻辑输出 179

6.5.5 1.jalr执行阶段第1个时钟周期的组合逻辑输出 180

6.5.6 1.jalr执行阶段第2个时钟周期的组合逻辑输出 181

6.5.7 1.jalr执行阶段第2个时钟周期的时序逻辑输出 182

6.6 转移类指令对处理器效率的影响 182

6.7 继续完善流水线数据通路图 183

第7章 异常处理类指令剖析 185

7.1 OR1200中的异常分类 185

7.2 OR1200中的异常处理过程 185

7.3 异常处理类指令说明 187

7.4 分析用例 187

7.5 EXCEPTION模块的作用 190

7.6 1.sys指令分析 195

7.6.1 1.sys取指阶段的组合逻辑输出 196

7.6.2 1.sys取指阶段的时序逻辑输出 196

7.6.3 1.sys译码阶段的组合逻辑输出 197

7.6.4 1.sys译码阶段的时序逻辑输出 198

7.6.5 1.sys执行阶段的组合逻辑输出 199

7.6.6 1.sys执行阶段的时序逻辑输出 201

7.6.7 异常处理过程——FLU1状态 207

7.6.8 异常处理过程——FLU2状态 211

7.6.9 异常处理过程——FLU3状态 212

7.6.10 异常处理过程——FLU4状态 212

7.6.11 异常处理过程——FLU5状态 213

7.6.12 1.sys分析小结 214

7.7 1.trap指令分析 215

7.7.1 1.trap译码阶段的时序逻辑输出 216

7.7.2 1.trap执行阶段的组合逻辑输出 216

7.7.3 1.trap执行阶段的时序逻辑输出 216

7.7.4 异常处理过程——FLU1状态 217

7.7.5 异常处理过程——FLU2状态 217

7.7.6 1.trap分析小结 218

7.8 1.rfe指令分析 218

7.8.1 1.rfe取指阶段的组合逻辑输出 219

7.8.2 1.rfe取指阶段的时序逻辑输出 219

7.8.3 1.rfe译码阶段的组合逻辑输出 220

7.8.4 1.rfe译码阶段的时序逻辑输出 221

7.8.5 1.rfe执行阶段第1个时钟周期的组合逻辑输出 223

7.8.6 1.rfe执行阶段第2个时钟周期的组合逻辑输出 224

7.8.7 1.rfe执行阶段第2个时钟周期的时序逻辑输出 225

7.9 继续完善流水线数据通路图 226

第8章 乘法、除法类指令剖析 228

8.1 串行乘法与并行乘法 228

8.1.1 串行乘法 228

8.1.2 并行乘法 229

8.2 串行除法与并行除法 230

8.2.1 串行除法 230

8.2.2 并行除法 231

8.3 乘法、除法类指令说明 232

8.4 OR1200中关于乘法、除法的一些配置 234

8.5 分析用例 234

8.6 1.mul指令分析(串行乘法) 238

8.6.1 1.mul取指阶段的组合逻辑输出 239

8.6.2 1.mul取指阶段的时序逻辑输出 240

8.6.3 1.mul译码阶段的组合逻辑输出 240

8.6.4 1.mul译码阶段的时序逻辑输出 241

8.6.5 1.mul执行阶段第1个时钟周期的组合逻辑输出 243

8.6.6 1.mul执行阶段第1个时钟周期的时序逻辑输出 245

8.6.7 1.mul执行阶段第2个时钟周期的组合逻辑输出 247

8.6.8 1.mul执行阶段第2个时钟周期的时序逻辑输出 249

8.6.9 1.mul执行阶段第33个时钟周期的时序逻辑输出 250

8.6.10 1.mul执行阶段第34个时钟周期的组合逻辑输出 250

8.6.11 1.mul执行阶段第34个时钟周期的时序逻辑输出 252

8.6.12 1.mul执行阶段第35个时钟周期的时序逻辑输出 252

8.6.13 1.mul分析小结 252

8.7 1.mul指令分析(并行乘法) 253

8.7.1 1.mul执行阶段第1个时钟周期的组合逻辑输出(并行乘法) 253

8.7.2 1.mul执行阶段第1个时钟周期的时序逻辑输出(并行乘法) 254

8.7.3 1.mul执行阶段第2个时钟周期的组合逻辑输出(并行乘法) 255

8.7.4 1.mul执行阶段第2个时钟周期的时序逻辑输出(并行乘法) 256

8.7.5 1.mul执行阶段第3个时钟周期的时序逻辑输出(并行乘法) 256

8.7.6 1.mul执行阶段第4个时钟周期的组合逻辑输出(并行乘法) 256

8.7.7 1.mul执行阶段第4个时钟周期的时序逻辑输出(并行乘法) 257

8.7.8 1.mul执行阶段第5个时钟周期的时序逻辑输出(并行乘法) 257

8.7.9 1.mul分析小结(并行乘法) 257

8.8 1.mac指令分析 257

8.8.1 1.mac执行阶段第1个时钟周期的组合逻辑输出 259

8.8.2 1.mac执行阶段第1个时钟周期的时序逻辑输出 260

8.8.3 1.mac执行阶段第2个时钟周期的组合逻辑输出 261

8.8.4 1.mac执行阶段第2个时钟周期的时序逻辑输出 261

8.8.5 后1.mac执行阶段第1个时钟周期的时序逻辑输出 262

8.8.6 后1.mac执行阶段第2个时钟周期的时序逻辑输出 262

8.8.7 1.mac指令分析小结 263

8.9 1.div指令分析(串行除法) 263

8.1 0继续完善流水线数据通路图 266

第9章 加载存储类指令剖析 268

9.1 加载存储类指令说明 268

9.2 分析用例 270

9.31 .sb指令分析 274

9.3.1 1.sb取指阶段的组合逻辑输出 276

9.3.2 1.sb取指阶段的时序逻辑输出 276

9.3.3 1.sb译码阶段的组合逻辑输出 276

9.3.4 1.sb译码阶段的时序逻辑输出 278

9.3.5 1.sb执行阶段第1个时钟周期的组合逻辑输出 280

9.3.6 1.sb执行阶段第2个时钟周期的组合逻辑输出 286

9.3.7 1.sb执行阶段第2个时钟周期的时序逻辑输出 287

9.3.8 1.sb指令分析小结 287

9.4 1 .1bs指令分析 288

9.4.11 .1bs执行阶段第1个时钟周期的组合逻辑输出 290

9.4.21 .1bs执行阶段第2个时钟周期的组合逻辑输出 291

9.4.31 .1bs执行阶段第2个时钟周期的时序逻辑输出 294

9.4.41 .1bs指令分析小结 294

9.5 对齐异常处理流程 295

9.6 三级流水线还是五级流水线 297

9.7 完整的流水线数据通路图 298

第10章 MMU剖析 301

10.1 MMU的作用及工作过程 301

10.2 TLB的作用及工作过程 303

10.3 IMMU分析 305

10.3.1 IMMU结构 305

10.3.2 IMMU中的特殊寄存器 307

10.3.3 OR1200中关于IMMU的一些配置 308

10.3.4 ITLB代码分析 309

10.3.5 IMMU使用情景 313

10.3.6 分析用例 313

10.3.7 IMMU使用情景之一——指令取指阶段ITLB命中且无页错误情况下IMMU工作分析 324

10.3.8 IMMU使用情景之二——指令取指阶段ITLB未命中情况下IMMU工作分析 329

10.3.9 IMMU使用情景之三——指令取指阶段ITLB命中但有页错误情况下IMMU工作分析 333

10.3.10 IMMU使用情景之四——1.mtspr执行阶段IMMU工作分析 333

10.3.11 IMMU使用情景之五——1.mfspr执行阶段IMMU工作分析 335

10.3.12 IMMU分析小结 336

10.4 DMMU分析 336

10.4.1 DTLB结构图 337

10.4.2 DMMU中的特殊寄存器 337

10.4.3 DMMU使用情景 338

第11章 基于OR1200的一个简单SOPC 340

11.1 简单SOPC的结构 340

11.2 Wishbone总线互联矩阵WB_CONMAX 341

11.3 挂接在互联矩阵WB_CONMAX下的RAM模块 342

11.4 SOPC顶层文件 344

11.5 ModelSim新建工程min or1200 sopc 346

11.6 示例程序 348

第12章 ICache剖析 350

12.1 Cache基本知识 350

12.1.1 Cache的作用 350

12.1.2 Cache的结构与工作过程 351

12.2 OR1200中Cache简介 352

12.3 ICache结构 353

12.3.1 ICache模块与其余模块的连接关系 353

12.3.2 ICache中数据部分 354

12.3.3 ICache中控制部分 356

12.3.4 ICache数据部分与控制部分的对外接口 357

12.4 ICache中的特殊寄存器 358

12.5 ICache使用情景 358

12.6 分析用例 359

12.7 ICache使用情景之一—1.mtspr执行阶段ICache工作分析 364

12.7.1 执行阶段的组合逻辑输出 364

12.7.2 执行阶段的时序逻辑输出 364

12.8 ICache使用情景之二—指令取指阶段ICache失靶情况下ICache工作分析 365

12.8.1 第1个时钟周期的组合逻辑输出 365

12.8.2 第1个时钟周期的时序逻辑输出 368

12.8.3 第2个时钟周期的组合逻辑输出 370

12.8.4 第2个时钟周期的时序逻辑输出 371

12.8.5 第n个时钟周期的组合逻辑输出 373

12.8.6 第n个时钟周期的时序逻辑输出 373

12.8.7 第n+1个时钟周期的组合逻辑输出 375

12.8.8 第2n个时钟周期的组合逻辑输出 376

12.8.9 第2n个时钟周期的时序逻辑输出 377

12.8.10 第2n+1个时钟周期的组合逻辑输出 378

12.8.11 第3n个时钟周期的组合逻辑输出 379

12.8.12 第3n个时钟周期的时序逻辑输出 379

12.8.13 第3n+1个时钟周期的组合逻辑输出 379

12.8.14 第4n个时钟周期的组合逻辑输出 379

12.8.15 第4n个时钟周期的时序逻辑输出 380

12.8.16 第4n+1个时钟周期的组合逻辑输出 380

12.8.17 ICache失靶时工作过程小结 381

12.9 ICache使用情景之三——指令取指阶段ICache命中情况下ICache工作分析 381

12.9.1 第1个时钟周期的组合逻辑输出 382

12.9.2 第1个时钟周期的时序逻辑输出 382

12.9.3 第2个时钟周期的组合逻辑输出 383

12.10 ICache使用情景之四——指令取指阶段内存页禁止缓存情况下ICache工作分析 384

12.10.1 第1个时钟周期的组合逻辑输出 384

12.10.2 第1个时钟周期的时序逻辑输出 385

12.10.3 第2个时钟周期的组合逻辑输出 385

12.10.4 第2个时钟周期的时序逻辑输出 386

12.10.5 第3个时钟周期的组合逻辑输出 386

12.10.6 第n个时钟周期的组合逻辑输出 387

12.10.7 第n个时钟周期的时序逻辑输出 387

第13章 DCache剖析 389

13.1 DCache的特别之处 389

1 3.2 DCache结构 390

13.2.1 DCache模块与其余模块的连接关系 391

13.2.2 DCache中数据部分 392

13.2.3 DCache中控制部分 394

13.2.4 DCache数据部分与控制部分的对外接口 395

13.3 DCache 中的特殊寄存器 396

13.4 DCache使用情景 397

13.5 分析用例 398

13.5.1 修改已有的简单SOPC 398

13.5.2 分析用例 398

13.6 DMMU地址翻译 405

13.7 DCache使用情景之一——存储指令执行阶段DCache失靶 405

13.7.1 通写法下DCache工作过程分析 406

13.7.2 回写法下DCache工作过程分析 413

13.8 DCache使用情景之二——存储指令执行阶段DCache命中 422

13.8.1 通写法下DCache工作过程分析 422

13.8.2 回写法下DCache工作过程分析 424

13.9 DCache使用情景之三——1.mtspr指令写DCache中特殊寄存器 427

13.9.1 通写法策略下指令1.mtspr写DCBIR、DCBFR的过程分析 428

13.9.2 回写法策略下指令1.mtspr写DCBIR的过程分析 429

13.9.3 回写法策略下指令1.mtspr写DCBWR的过程分析 431

13.9.4 回写法策略下指令1.mtspr写DCBFR的过程分析 437

13.10 DCache分析小结 438

第14章 Store Buffer(SB)剖析 440

14.1 SB模块的作用与工作过程 440

14.2 SB模块的结构 441

14.2.1 SB模块的对外连接关系 441

14.2.2 SB模块内部结构 442

14.2.3 SB模块有关的宏定义 442

14.3 示例程序 442

14.4 SB模块代码分析 444

14.4.1 FIFO分析 444

14.4.2 SB分析 447

第15章 WB_BIU剖析 450

15.1 WB_BIU模块的对外连接关系 450

15.2 Wishbone寄存反馈总线周期 451

15.3 WB_BIU代码分析 454

15.3.1 WB_BIU中的有限状态机 455

15.3.2 总线时钟与处理器时钟不同时的处理代码 462

第16章 PM、TT、PIC剖析 466

16.1 电源管理模块PM分析 466

16.1.1 PM介绍 466

16.1.2 PM模块的对外连接关系、特殊寄存器及相关宏定义 466

16.1.3 PM代码分析 468

16.2 计时器单元TT分析 471

16.2.1 TT介绍 471

16.2.2 TT的对外连接关系及相关宏定义 472

16.2.3 TT代码分析 473

16.2.4 计时器中断响应过程 475

16.3 可编程中断控制器PIC分析 477

16.3.1 PIC介绍 477

16.3.2 PIC的对外连接关系及相关宏定义 478

16.3.3 PIC代码分析 479