登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』步步惊"芯"--软核处理器内部设计分析(含CD光盘1张)(掀开处理器的神秘面纱,带你遨游在一个简洁但不简单、复杂但不混乱的二进制世界)

書城自編碼: 2088040
分類:簡體書→大陸圖書→計算機/網絡计算机体系结构
作者: 雷思磊
國際書號(ISBN): 9787121204890
出版社: 电子工业出版社
出版日期: 2013-07-01
版次: 1 印次: 1
頁數/字數: 482/800000
書度/開本: 16开 釘裝: 平装

售價:HK$ 198.8

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
中国绘画史(第三卷)
《 中国绘画史(第三卷) 》

售價:HK$ 357.6
德兰修女传:在爱中行走(世界名人名传典藏系列)
《 德兰修女传:在爱中行走(世界名人名传典藏系列) 》

售價:HK$ 60.0
抗癌饮食指导
《 抗癌饮食指导 》

售價:HK$ 94.8
编织大花园.7,趣味十足的时尚编织
《 编织大花园.7,趣味十足的时尚编织 》

售價:HK$ 82.8
游戏三部曲:游戏改变未来+游戏改变世界+游戏改变人生(套装共3册)
《 游戏三部曲:游戏改变未来+游戏改变世界+游戏改变人生(套装共3册) 》

售價:HK$ 347.6
修昔底德与政治秩序
《 修昔底德与政治秩序 》

售價:HK$ 82.8
大学问·魏晋清谈史
《 大学问·魏晋清谈史 》

售價:HK$ 117.6
区域经济与产业发展研究
《 区域经济与产业发展研究 》

售價:HK$ 81.6

 

建議一齊購買:

+

HK$ 146.2
《 深入理解OpenRISC体系结构 》
+

HK$ 257.4
《 自己动手写CPU(含CD光盘1张) 》
+

HK$ 257.4
《 CPU自制入门【只需编程基础,从零开始设计和实现CPU】 》
+

HK$ 203.6
《 兼容ARM9的软核处理器设计:基于FPGA(首本在FPGA上实现兼容ARM9指令集处理器设计的书,含开源工具链指导) 》
內容簡介:
本书以开源32位软核处理器OR1200为研究对象,像引导读者如做解剖学实验那般,对其进行剖析,力图使读者对教科书上介绍的处理器有一个实践上的认识,打破处理器令人高深莫测的印象,同时使读者了解处理器设计的细节。OR1200包括CPU、MMU、Cache、总线接口、电源管理、中断控制和计时器单元等多个模块,对于不同的模块,根据其难易程度,采用指令驱动分析法、情景分析法及直接分析源代码等不同的分析方法,便于读者理解。
通过阅读本书,读者可以掌握一款成熟的软核处理器OR1200的设计思路、实现方法,同时更加深刻、具体地理解计算机组成原理、计算机体系结构等课程介绍的知识。
本书适合计算机专业的学生、FPGA开发人员、处理器设计者、嵌入式系统应用开发工程师、对处理器内部实现感兴趣的读者及对这个世界充满好奇心的读者阅读,也可以作为高等院校计算机组成原理、计算机体系结构等课程的实践参考书。
關於作者:
雷思磊,理工男,好静,倡导低碳生活,常以环保人士自居,喜读书,自幼笃信“博观而约取厚积而薄发”,是故,所读书籍甚为驳杂,年近而立,尚不确定根本兴趣目标,一日,驻足书架之前,细览所读书籍,惊觉随岁月增长,关注点依次从应用编程、操作系统、驱动设计转移至处理器结构,此一脉络极其清晰,遂如醍醐灌顶,幡然醒悟,原来余根本兴趣目标在“底层”,在于从根本上理解世界之运行,遂耗数年时间钻研处理器工作原理,乃有些微收获,拙作当为数年辛苦之小结,然学无止境,科技发展亦日新月异,唯有持续钻研,方能大成,屈子曰:路漫漫其修远兮,吾将上下而求索。此言甚是,余定谨记而遵行之。
目錄
第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译码阶段的时序逻辑输出
6.4.5 l.bf执行阶段第1个时钟周期的组合逻辑输出
6.4.6 l.bf执行阶段第2个时钟周期的组合逻辑输出
6.4.7 l.bf执行阶段第2个时钟周期的时序逻辑输出
6.4.8 l.bf指令分析小结
6.5 l.jalr指令分析
6.5.1 l.jalr取指阶段的组合逻辑输出
6.5.2 l.jalr取指阶段的时序逻辑输出
6.5.3 l.jalr译码阶段的组合逻辑输出
6.5.4 l.jalr译码阶段的时序逻辑输出
6.5.5 l.jalr执行阶段第1个时钟周期的组合逻辑输出
6.5.6 l.jalr执行阶段第2个时钟周期的组合逻辑输出
6.5.7 l.jalr执行阶段第2个时钟周期的时序逻辑输出
6.6 转移类指令对处理器效率的影响
6.7 继续完善流水线数据通路图
第7章 异常处理类指令剖析
7.1 OR1200中的异常分类
7.2 OR1200中的异常处理过程
7.3 异常处理类指令说明
7.4 分析用例
7.5 EXCEPTION模块的作用
7.6 l.sys指令分析
7.6.1 l.sys取指阶段的组合逻辑输出
7.6.2 l.sys取指阶段的时序逻辑输出
7.6.3 l.sys译码阶段的组合逻辑输出
7.6.4 l.sys译码阶段的时序逻辑输出
7.6.5 l.sys执行阶段的组合逻辑输出
7.6.6 l.sys执行阶段的时序逻辑输出
7.6.7 异常处理过程——FLU1状态
7.6.8 异常处理过程——FLU2状态
7.6.9 异常处理过程——FLU3状态
7.6.10 异常处理过程——FLU4状态
7.6.11 异常处理过程——FLU5状态
7.6.12 l.sys分析小结
7.7 l.trap指令分析
7.7.1 l.trap译码阶段的时序逻辑输出
7.7.2 l.trap执行阶段的组合逻辑输出
7.7.3 l.trap执行阶段的时序逻辑输出
7.7.4 异常处理过程——FLU1状态
7.7.5 异常处理过程——FLU2状态
7.7.6 l.trap分析小结
7.8 l.rfe指令分析
7.8.1 l.rfe取指阶段的组合逻辑输出
7.8.2 l.rfe取指阶段的时序逻辑输出
7.8.3 l.rfe译码阶段的组合逻辑输出
7.8.4 l.rfe译码阶段的时序逻辑输出
7.8.5 l.rfe执行阶段第1个时钟周期的组合逻辑输出
7.8.6 l.rfe执行阶段第2个时钟周期的组合逻辑输出
7.8.7 l.rfe执行阶段第2个时钟周期的时序逻辑输出
7.9 继续完善流水线数据通路图
第8章 乘法、除法类指令剖析
8.1 串行乘法与并行乘法
8.1.1 串行乘法
8.1.2 并行乘法
8.2 串行除法与并行除法
8.2.1 串行除法
8.2.2 并行除法
8.3 乘法、除法类指令说明
8.4 OR1200中关于乘法、除法的一些配置
8.5 分析用例
8.6 l.mul指令分析(串行乘法)
8.6.1 l.mul取指阶段的组合逻辑输出
8.6.2 l.mul取指阶段的时序逻辑输出
8.6.3 l.mul译码阶段的组合逻辑输出
8.6.4 l.mul译码阶段的时序逻辑输出
8.6.5 l.mul执行阶段第1个时钟周期的组合逻辑输出
8.6.6 l.mul执行阶段第1个时钟周期的时序逻辑输出
8.6.7 l.mul执行阶段第2个时钟周期的组合逻辑输出
8.6.8 l.mul执行阶段第2个时钟周期的时序逻辑输出
8.6.9 l.mul执行阶段第33个时钟周期的时序逻辑输出
8.6.10 l.mul执行阶段第34个时钟周期的组合逻辑输出
8.6.11 l.mul执行阶段第34个时钟周期的时序逻辑输出
8.6.12 l.mul执行阶段第35个时钟周期的时序逻辑输出
8.6.13 l.mul分析小结
8.7 l.mul指令分析(并行乘法)
8.7.1 l.mul执行阶段第1个时钟周期的组合逻辑输出(并行乘法)
8.7.2 l.mul执行阶段第1个时钟周期的时序逻辑输出(并行乘法)
8.7.3 l.mul执行阶段第2个时钟周期的组合逻辑输出(并行乘法)
8.7.4 l.mul执行阶段第2个时钟周期的时序逻辑输出(并行乘法)
8.7.5 l.mul执行阶段第3个时钟周期的时序逻辑输出(并行乘法)
8.7.6 l.mul执行阶段第4个时钟周期的组合逻辑输出(并行乘法)
8.7.7 l.mul执行阶段第4个时钟周期的时序逻辑输出(并行乘法)
8.7.8 l.mul执行阶段第5个时钟周期的时序逻辑输出(并行乘法)
8.7.9 l.mul分析小结(并行乘法)
8.8 l.mac指令分析
8.8.1 l.mac执行阶段第1个时钟周期的组合逻辑输出
8.8.2 l.mac执行阶段第1个时钟周期的时序逻辑输出
8.8.3 l.mac执行阶段第2个时钟周期的组合逻辑输出
8.8.4 l.mac执行阶段第2个时钟周期的时序逻辑输出
8.8.5 后l.mac执行阶段第1个时钟周期的时序逻辑输出
8.8.6 后l.mac执行阶段第2个时钟周期的时序逻辑输出
8.8.7 l.mac指令分析小结
8.9 l.div指令分析(串行除法)
8.10 继续完善流水线数据通路图
第9章 加载存储类指令剖析
9.1 加载存储类指令说明
9.2 分析用例
9.3 l.sb指令分析
9.3.1 l.sb取指阶段的组合逻辑输出
9.3.2 l.sb取指阶段的时序逻辑输出
9.3.3 l.sb译码阶段的组合逻辑输出
9.3.4 l.sb译码阶段的时序逻辑输出
9.3.5 l.sb执行阶段第1个时钟周期的组合逻辑输出
9.3.6 l.sb执行阶段第2个时钟周期的组合逻辑输出
9.3.7 l.sb执行阶段第2个时钟周期的时序逻辑输出
9.3.8 l.sb指令分析小结
9.4 l.lbs指令分析
9.4.1 l.lbs执行阶段第1个时钟周期的组合逻辑输出
9.4.2 l.lbs执行阶段第2个时钟周期的组合逻辑输出
9.4.3 l.lbs执行阶段第2个时钟周期的时序逻辑输出
9.4.4 l.lbs指令分析小结
9.5 对齐异常处理流程
9.6 三级流水线还是五级流水线
9.7 完整的流水线数据通路图
第10章 MMU剖析
10.1 MMU的作用及工作过程
10.2 TLB的作用及工作过程
10.3 IMMU分析
10.3.1 IMMU结构
10.3.2 IMMU中的特殊寄存器
10.3.3 OR1200中关于IMMU的一些配置
10.3.4 ITLB代码分析
10.3.5 IMMU使用情景
10.3.6 分析用例
10.3.7 IMMU使用情景之一——指令取指阶段ITLB命中且无页错误情况下IMMU工作分析
10.3.8 IMMU使用情景之二——指令取指阶段ITLB未命中情况下IMMU工作分析
10.3.9 IMMU使用情景之三——指令取指阶段ITLB命中但有页错误情况下IMMU工作分析
10.3.10 IMMU使用情景之四——l.mtspr执行阶段IMMU工作分析
10.3.11 IMMU使用情景之五——l.mfspr执行阶段IMMU工作分析
10.3.12 IMMU分析小结
10.4 DMMU分析
10.4.1 DTLB结构图
10.4.2 DMMU中的特殊寄存器
10.4.3 DMMU使用情景
第11章 基于OR1200的一个简单SOPC
11.1 简单SOPC的结构
11.2 Wishbone总线互联矩阵WB_CONMAX
11.3 挂接在互联矩阵WB_CONMAX下的RAM模块
11.4 SOPC顶层文件
11.5 ModelSim新建工程min_or1200_sopc
11.6 示例程序
第12章 ICache剖析
12.1 Cache基本知识
12.1.1 Cache的作用
12.1.2 Cache的结构与工作过程
12.2 OR1200中Cache简介
12.3 ICache结构
12.3.1 ICache模块与其余模块的连接关系
12.3.2 ICache中数据部分
12.3.3 ICache中控制部分
12.3.4 ICache数据部分与控制部分的对外接口
12.4 ICache中的特殊寄存器
12.5 ICache使用情景
12.6 分析用例
12.7 ICache使用情景之一——l.mtspr执行阶段ICache工作分析
12.7.1 执行阶段的组合逻辑输出
12.7.2 执行阶段的时序逻辑输出
12.8 ICache使用情景之二——指令取指阶段ICache失靶情况下ICache工作分析
12.8.1 第1个时钟周期的组合逻辑输出
12.8.2 第1个时钟周期的时序逻辑输出
12.8.3 第2个时钟周期的组合逻辑输出
12.8.4 第2个时钟周期的时序逻辑输出
12.8.5 第n个时钟周期的组合逻辑输出
12.8.6 第n个时钟周期的时序逻辑输出
12.8.7 第n+1个时钟周期的组合逻辑输出
12.8.8 第2n个时钟周期的组合逻辑输出
12.8.9 第2n个时钟周期的时序逻辑输出
12.8.10 第2n+1个时钟周期的组合逻辑输出
12.8.11 第3n个时钟周期的组合逻辑输出
12.8.12 第3n个时钟周期的时序逻辑输出
12.8.13 第3n+1个时钟周期的组合逻辑输出
12.8.14 第4n个时钟周期的组合逻辑输出
12.8.15 第4n个时钟周期的时序逻辑输出
12.8.16 第4n+1个时钟周期的组合逻辑输出
12.8.17 ICache失靶时工作过程小结
12.9 ICache使用情景之三——指令取指阶段ICache命中情况下ICache工作分析
12.9.1 第1个时钟周期的组合逻辑输出
12.9.2 第1个时钟周期的时序逻辑输出
12.9.3 第2个时钟周期的组合逻辑输出
12.10 ICache使用情景之四——指令取指阶段内存页禁止缓存情况下ICache工作分析
12.10.1 第1个时钟周期的组合逻辑输出
12.10.2 第1个时钟周期的时序逻辑输出
12.10.3 第2个时钟周期的组合逻辑输出
12.10.4 第2个时钟周期的时序逻辑输出
12.10.5 第3个时钟周期的组合逻辑输出
12.10.6 第n个时钟周期的组合逻辑输出
12.10.7 第n个时钟周期的时序逻辑输出
第13章 DCache剖析
13.1 DCache的特别之处
13.2 DCache结构
13.2.1 DCache模块与其余模块的连接关系
13.2.2 DCache中数据部分
13.2.3 DCache中控制部分
13.2.4 DCache数据部分与控制部分的对外接口
13.3 DCache中的特殊寄存器
13.4 DCache使用情景
13.5 分析用例
13.5.1 修改已有的简单SOPC
13.5.2 分析用例
13.6 DMMU地址翻译
13.7 DCache使用情景之一——存储指令执行阶段DCache失靶
13.7.1 通写法下DCache工作过程分析
13.7.2 回写法下DCache工作过程分析
13.8 DCache使用情景之二——存储指令执行阶段DCache命中
13.8.1 通写法下DCache工作过程分析
13.8.2 回写法下DCache工作过程分析
13.9 DCache使用情景之三——l.mtspr指令写DCache中特殊寄存器
13.9.1 通写法策略下指令l.mtspr写DCBIR、DCBFR的过程分析
13.9.2 回写法策略下指令l.mtspr写DCBIR的过程分析
13.9.3 回写法策略下指令l.mtspr写DCBWR的过程分析
13.9.4 回写法策略下指令l.mtspr写DCBFR的过程分析
13.10 DCache分析小结
第14章 Store Buffer(SB)剖析
14.1 SB模块的作用与工作过程
14.2 SB模块的结构
14.2.1 SB模块的对外连接关系
14.2.2 SB模块内部结构
14.2.3 SB模块有关的宏定义
14.3 示例程序
14.4 SB模块代码分析
14.4.1 FIFO分析
14.4.2 SB分析
第15章 WB_BIU剖析
15.1 WB_BIU模块的对外连接关系
15.2 Wishbone寄存反馈总线周期
15.3 WB_BIU代码分析
15.3.1 WB_BIU中的有限状态机
15.3.2 总线时钟与处理器时钟不同时的处理代码
第16章 PM、TT、PIC剖析
16.1 电源管理模块PM分析
16.1.1 PM介绍
16.1.2 PM模块的对外连接关系、特殊寄存器及相关宏定义
16.1.3 PM代码分析
16.2 计时器单元TT分析
16.2.1 TT介绍
16.2.2 TT的对外连接关系及相关宏定义
16.2.3 TT代码分析
16.2.4 计时器中断响应过程
16.3 可编程中断控制器PIC分析
16.3.1 PIC介绍
16.3.2 PIC的对外连接关系及相关宏定义
16.3.3 PIC代码分析
內容試閱
人看见我

就是看见了父

我就是道路、真理、生命

若不借着我

没有人能到父那里去

——《约翰福音》

现在看来,用上述语句形容1971年诞生的世界上第一款商用微处理器Intel
4004,似乎也是恰当的。从“人类历史上最具革新性的产品之一”(戈登?摩尔语)的4004诞生至今,已过了四十多年,期间,处理器的应用范围不断扩展,渗透到各行各业,浸入人们的日常生活,极大地影响了第五次信息革命的进程。对其自身而言既有“变”也有“不变”,“变”的是处理器的性能,“不变”的是其高高在上的形象,处理器设计制造作为国家信息产业的基石之一,一直都是高科技行业,轻易无法涉足。幸运的是,随着可编程硬件技术的持续发展,如今可以通过编写代码实现处理器,出现了软核处理器,它的出现使得寻常人士也能有机会了解处理器内部实现原理,甚至参与处理器的设计、研发。

软核处理器有很多,比如:NiosII、OR1200、LEON3和OpenSparc等,本书选择OR1200作为分析对象,深度剖析其内部实现,理解其设计思路、工作过程。选择OR1200的原因有两个:一方面OR1200是开源的;另一方面,笔者在学习处理器的过程中有一个体会,那就是“一通百通、融会贯通、取长补短、创新提高”。我们的最终目的是了解处理器的实现原理,不必过多纠结于选择哪个、不选哪个,处理器设计中很多问题都是相通的,深入学习一款处理器,明白其架构,在这个过程中可以找到学习处理器的途径,找到适合自己的学习方法,有了方法,再学其他的处理器时就会顺利很多,所以称为“一通百通”。

分析第一个处理器内部实现时,是抱着学习的态度,学第二个、第三个就应该在头脑中形成一种比较的意识,比较这几种处理器实现相同功能的部分为何会有不同的设计方法,哪一种性能更好,这就称为“融会贯通”。通过前面的两步,我们已经如牛顿那般站在巨人的肩膀上了,学习了各种处理器的设计原理,明白了各自优劣,在自己设计处理器的时候就可以“取长补短”。此外,通过独立思考,或者由于不同设计思路的碰撞,可能会产生新的、更好的设计灵感,是谓“创新提高”。



写作目的

寻找一个确定性的世界

我们信科学

我们信逻辑

我们信因果

我们是理工男

科学的、逻辑的、因果的,最终表达的是确定性。恐惧源于未知,人类科技活动的目的就是为了探索未知,消除未知带来的不确定性,努力使得一切都可预测,都是确定性的。当然,现实生活中各种因素使我们个体所接触的物质世界显得如此的不确定。从大的方面讲,对于个人命运、社会变革这些宏大的命题,我们都显得渺小和茫然;从小的方面讲,即使坐在对面的是自己的意中人,因为不知她(他)的心思,从而产生一种对确定性丧失的焦虑和痛苦。这时我们迫切地需要一种满足,一种对确定性存在的满足,进而是一种理想的满足。笔者觉得这也是剖析处理器的魅力,处理器的世界就是一个确定性的世界,从加电的那一刻开始,读指令、执行、再读指令、再执行,一切都是设计好的,精准、无误、确定。即使出现意外,也可以得到一个确定的意外原因。

对好奇心的满足

人类进步的推动力量有两个:懒惰、好奇。这不是玩笑,而是很严肃的话题,关于第一点,大家想想洗衣机、电视、麦当劳就很容易理解了。第二点更好理解,看看婴儿打量这个世界的眼神就知道好奇心是人类与生俱来的。为什么太阳东升西落?为什么苹果会掉下来?为什么烧开的水会把壶盖顶起来?……每一个为什么的提出及解答,都使得人类前进了一步。在IT行业,人们会问,为什么可以通过计算机一边听音乐、一边上网、一边看电影?

不同的人会有不同的答案

A君:啊,这还有为什么啊,计算机本来就可以这样啊,不这样还能叫计算机!

B君:这是多线程的效果。

C君:这是操作系统调度的原因。

D君:这是由于处理器在每个时钟中断都会进入时钟中断处理例程,在其中切换进程。

A君的回答天真无邪,基本可以断定这位同学不是IT行业的。其他三位同学的答案一个比一个接近根本、接近底层、接近硬件,但好奇的我们不禁要多问一句:时钟中断是如何发生的?解答这个问题就需要深入处理器内部实现了。

对现有教科书的不满

国内大多数计算机方面的教科书,常给人这么一个体会:理论太多、实践太少。操作系统、计算机体系结构、计算机组成原理等课程无不如此。过多的理论、过少的实践,给学生带来的问题是:容易纸上谈兵;对具体知识的印象不深刻;知其然,不知其所以然。因此,笔者想结合一款实用的处理器,深度剖析其内部设计实现,作为现有教科书的一个补充。

适合谁读

适合对确定性世界狂热追求者阅读。通过阅读本书,读者将发现,虽然处理器内部十分复杂,但是从加电的那一刻开始,它就按照预定程序运行,每一刻都是可预测的,都是确定性的。

适合对处理器内部实现有着强烈好奇心的朋友阅读。本书通过对OR1200处理器的剖析,将使读者全方位了解32位RISC处理器设计。

适合不满足于教科书的同学阅读。本书可以作为实践参考书,帮助读者理解书本上抽象的概念,同时培养读者的动手能力。

适合正在从事软核处理器开发、设计的人员阅读。本书将提供一些经验、一些好的方法,帮助读者做到事半功倍。

适合正在从事嵌入式开发的人员阅读,本书对处理器的一些介绍,有助于嵌入式开发。

内容安排

全书共16章,每章的主要内容如下。

第1章简单介绍了目前主要的开源软核处理器,并做了对比,然后重点介绍了OR1200的架构、代码组织,并对本书的分析方法进行了说明。

第2章带领读者一步一步建立起实验平台、准备好实验工具,有了平台和工具的帮助,可以更加方便地认识和理解OR1200的内部细节。

第3章剖析了OR1200中的QMEM模块,这是一个快速存储器模块,可以在一个时钟周期内读取其中的指令,同时分析了复位结束后,指令的读取过程,给出了一个理想的取指模型。

第4~9章分别剖析了OR1200中数据处理类指令、特殊寄存器访问类指令、转移类指令、异常处理类指令、乘法除法类指令和加载存储类指令的处理过程。这些指令也是OR1200支持的全部指令,分析了这些指令的处理过程,也就明白了OR1200处理器中CPU模块的内部结构、工作原理。在第9章最后给出一个完整的OR1200流水线数据通路图,而4~9章中,对每一类指令处理过程的分析都采用相同的方法:首先写一段简单的测试代码,测试代码包含我们即将分析的指令类别中的全部或部分指令,然后使用OR1KSim模拟器查看执行情况,接下来对这一类指令中有代表性的若干条指令采用流水线驱动的方法进行分析,即分析指令处理过程中,在流水线各个阶段引起的信号变化,以及通过这些变化的信号是如何逐步实现指令目标的。

第10章剖析了MMU模块,采用的是情景分析法,即通过分析使用该模块的各种情景及各种情景下模块的工作过程,达到了解该模块原理的目的。

第11章建立了一个基于OR1200的简单SOPC,后续章节将借助该SOPC分析OR1200中的指令Cache、数据Cache等模块。

第12、13章分别剖析了OR1200中的指令Cache、数据Cache,采用的是情景分析法。

第14章剖析了Store
Buffer模块,采用的是直接分析源代码的方式。

第15章剖析了OR1200处理器与外部Wishbone总线连接的接口模块WB_BIU,采用的是情景分析法。

第16章剖析了电源管理模块、计时器单元、可编程中断控制器,由于比较简单,采用的都是直接分析源代码的方式。

写作原则

不唯上、不唯下,只唯实

要保持质疑,哪怕对方是所谓的权威。本书对OR1200的一些介绍可能与OR1200手册及其他学者的观点不同,比如:本书认为OR1200是三级流水线。OR1200手册上认为是五级流水线,笔者在源代码的剖析中发现这种说法并不充分,在第9章给出理由以佐证笔者的观点,整本书也是按照三级流水线进行分析的。同时,本书指出了源代码中的一些错误,有些可能是笔误,有些就是设计缺陷(如:QMEM的设计)。

像剥洋葱似的,一步步接近核心

OR1200是一个系统、一个整体,各个模块之间的联系很紧密,并且相互影响。最开始,只给出了一种理想情况,也是OR1200大部分时候的运行情况,后面分析到某些指令、某些场景的时候,会具体分析这些指令、场景是如何影响这个理想情况的。比如:第3章给出了一个理想的取指过程,在后续章节,当分析系统调用指令l.sys的时候,就会介绍l.sys对这个取指过程的影响;分析转移指令l.bf的时候,就会介绍l.bf对这个取指过程的影响;分析特殊寄存器读指令l.mfspr的时候,就会介绍l.mfspr对这个取指过程的影响。通过这样一步一步的探索,由简到繁,由不求甚解到全面了解,最后揭示得出结论,而不是直接给出结论,再分析得出这个结论的理由。笔者认为前者更符合我们认识事物的规律。

依据不同的分析对象使用合适的分析方法

在内容安排中可以发现,本书针对不同的模块,依据具体情况,采用了不同的分析方法,主要有:流水线驱动的分析方法、场景分析法和直接分析源代码的方法。

适量重复

在分析过程中,为了直观,本书大量采用了表格化的显示方法,表格中列出了当前阶段的主要变化信号,包括信号的作用说明,其中有很多信号可能在之前的表格中出现过,但笔者仍然在新的表格中重复给出这个信号的作用说明。这样适量的重复,增强了各章之间的独立性,尤其是第5~9章,便于读者选择性阅读。

感性与理性结合

除了对代码进行分析,本书还使用ModelSim进行仿真,通过ModelSim仿真结果可以直观地观察到任意时刻处理器内部任一信号的状态,既验证了代码分析的正确性,也使读者加深了印象。

本书特色

(1)国内第一本采用指令驱动分析法、流水线驱动分析法和情景分析法对一款成熟的32位软核处理器进行分析的图书,通过对流水线、MMU和Cache等处理器内部重要功能单元的分析,有效消除了处理器的神秘感。

(2)国内第一本采用实验的方法对处理器设计中的一些重要思想进行阐释的书,如:通过实验,给出了存储操作在Cache存在、Cache不存在时的区别,从而使读者可以更加深刻地体会到Cache的作用。

(3)国内第一本对OR1200处理器进行全面、详细介绍的图书。

阅读方法

针对不同的阅读需要,可以有粗读、精读两种阅读方法。

粗读

该方法适合希望快速理解处理器内部工作原理的读者使用,这些读者可能更关心处理器在流水线每个阶段的主要工作,而不关心这个工作是如何实现的。因此,本书在流水线每一个阶段分析结束的时候,都会给出一个表格,列出本阶段变化信号,其中重要的变化信号都使用“加粗斜体
”来强调,这些重要变化信号的作用就反映了处理器在本阶段的主要工作,读者只需关注每个阶段分析结束时的表格即可,从而达到快速理解处理器内部工作原理之目的。

精读

该方法适合不仅希望知道处理器在流水线每个阶段的主要工作是什么,而且希望知道这个工作是如何实现的读者使用。这种方法当然比较辛苦,也比较耗时,然而读书无捷径,任何知识的获取都是要下一番苦功夫的。

引用余秋雨先生的话与读者共勉:

阅读的最大理由是想摆脱平庸

早一天就多一份人生的精彩

迟一天就多一天平庸的困扰

致谢

向OR1200的诸位作者Damjan Lampret、Julius
Baxter等致敬,正是由于你们的辛苦工作和无私奉献,为我们打开了一扇窗,有机会进入另一个世界。

笔者第一次与博文视点合作,博文视点干练、敏捷的工作作风给笔者留下了深刻的印象,在此特别感谢孙学瑛老师,正是由于孙老师的出谋划策、辛苦工作才使得本书能够及时发行。

感谢酒泉卫星发射中心通信总站的各位领导、同事,虽然我们处在戈壁滩上,自然条件恶劣,但是我们共同从事的是一项伟大的事业,这一事业将我们紧紧联系在一起。若干年后,当我老得哪儿也去不了的时候,这必定将成为一段珍贵的回忆。

感谢我的好友张世伟老师在百忙之中阅读了本书,并提出许多宝贵的修改意见。

最后,感谢我的爸爸、妈妈、姐姐、姐夫,以及可爱的外甥女,任何成绩的取得都离不开家人的付出,谢谢你们!

笔者学识有限,尽管已通读数次,但仍不能保证书中无一纰漏,欢迎各位读者朋友对本书提出批评、建议,可以通过邮箱leishangwen@163.com与笔者交流。

……

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.