1、pdf地址
链接: https://pan.baidu.com/s/15lD6PNs5iJmA3qZLqyrkPQ
提取码: qbtj
2、新版变化
示例上的变化
- 桌面计算机:Core i7(x86指令)
- 移动计算:OMAP4430(ARM指令)
- 嵌入式:ATmega168(AVR指令)
汇编语言:8088
章节变化
第2章:增加 GPU、Flash存储设备、触摸屏
第3章:增加 FPGA
第4章:内容没大的改变,只换了示例
第5、6章:仅就新的示例体系结构所涉及的部分做了改写,增加了对 ARM 和 AVR 的 ISA 描述;第6章换成win7
第8章:增加Core i7多处理器体系结构的一些新特征,详细介绍 NVIDIA Fremi 的通用 GPU 体系结构;对 BlueGene 和 Red Storm 超级计算机的内容进行了更新
参考文献:将推荐读物放在了网站上。第6版引出的文献仅是本书引用过的参考文献
3、结构化计算机组成
数字计算机是通过执行人们给出的指令来完成工作的。人们通过编写程序来使计算机按人们的预期执行。所谓程序就是描述如何完成一个确定任务的指令序列。
每台计算机的电路都只能识别和直接执行有限的简单指令。程序在执行前必须转换成这些指令。
这些原始指令共同组成了一种人与计算机交流的语言,即机器语言。
设计一种新的计算机时,必须先决定它的机器语言中包含哪些原始指令。这些原始指令是站在机器角度考虑的,在设计时除了要求尽量简单,还要考虑降低实现电路的成本和复杂度。所以对人来说使用机器语言来编程显得十分困难和乏味。
由于原始指令的简单有限性,会存在人可能要做X,而计算机只会做Y的问题。解决这种问题的办法和解决两个不同国家的人交流的方式一样——引入中间层(在现实中即翻译员)。将人使用的高层次语言翻译或解释为机器能明白的机器语言。
转换的过程中可能不能一步到位,那么可以引入多层,自底向上一层一层的进行转换,每一层都更加地方便人使用。通过抽象,在高层编程的程序员无需关心下层的翻译器或解释器或电子电路。
翻译:将高层的程序一次性全部转换成与之等效的下一层的程序。然后机器直接执行翻译后的低层程序。其优点是速度快,但可移植性低
解释:由解释器将高层的程序逐条检查和解码后立即执行。速度比翻译慢,但可移植性高。
虚拟机:是一种概念上的机器,负责将高层程序翻译成下一层程序直接执行或翻译成用下一层程序写出的解释器来执行
多数计算机包含两层或更多层
- 数字逻辑层
- 主要包括逻辑门电路、布尔代数、存储器、寄存器、总线
- 几个门可组成1位存储器,存放0和1;多个1位存储器一组(16、32、64)可组合成寄存器
- 微体系结构层
- 主要包括寄存器组、ALU、 数据通路
- 指令系统层(ISA层)
- 机器的指令集
- 操作系统层
- 包含和 ISA 层相同的指令(由硬件执行)和新的指令集(由运行在ISA层的解释器(即操作系统)执行)
- 汇编语言层
- 通过汇编器将汇编语言翻译成低层的语言,由相应的虚拟机或硬件解释执行
- 高级语言层
- 通过编译器将高级语言翻译成第3层或第4层的语言,或像java一样解释成字节码,然后被解释执行
加粗表示本书主要讲述的部分
计算机的每一层都是建立在它的前一层之上,每一层表示一个不同的抽象,由不同的对象和操作表示。这种设计方式和分析方法,就是抽象。通过抽象可以让人暂时忽略一些无关紧要的细节,使复杂的问题更容易理解。
早期硬件和软件的界限很清晰,随着现在技术的发展,现在硬件和软件在逻辑上是等同的,硬件就是固化的软件。
4、公制计量单位
存储:KB、MB、GB、TB 依次表示 2^10、 2^20、 2^30、 2^40 字节
网络传输:kbps、Mbps、Gbps、Tbps 依次表示 10^3、 10^6、 10^9、 10^12 位/秒