1.1引言
1.1.1传统的计算应用分类及其特点
1.计算机主要被用于三种不同的应用场景:
1.个人计算机:用于个人使用的计算机,通常包含图形显示器、键盘和鼠标。
2.服务器:用于为多个用户并行运行大型程序的计算机,通常只能通过网络访问。
3.超级计算机:具有最高的性能和成本的一类计算机,一般被配置为服务器且通常耗费数千万美元甚至数亿美元。
2.嵌入式计算机是用于运行某预定应用程序或软件集合的计算机,一般内嵌于其他设备中。
1.1.2欢迎来到后PC时代
1.个人移动设备在一定程度上代替了个人电脑,它是连接到互联网的小型无线设备;依靠电池供电,并通过下载App的方式来安装软件。
2.而云计算则接替了传统服务器,它是通过互联网提供服务的大规模服务器集群,一些服务提供商动态地将不同数量的服务器作为像水、电一样的公用资源进行租用。
1.1.3 你能从本书中学到什么
1.2计算机体系结构中的8个伟大思想
1.2.1面向摩尔定律的设计
1.摩尔定律指出单芯片上所集成的晶体管资源每18至24个月翻一番。
1.2.2使用抽象简化设计
1.提高硬件和软件生产率的主要技术之一是使用抽象来表示不同的设计层次——隐藏底层细节以提供给高层一个更简单的模型。
1.2.3加速经常性事件
1.加速经常性事件远比优化罕见情形能够更好地提升性能。
1.2.4通过并行提高性能
1.通过并行计算操作可以获得更高性能。
1.2.5通过流水线提高性能
1.2.6通过预测提高性能
1.在某些情况下,假设从预测错误中恢复地代价并不高,且预测相对准确,则平均来说进行预测并开始工作可能会比等到明确结果后再执行更快。
1.2.7存储层次
1.在存储层次中,速度最快、容量最小并且每位价格最昂贵地存储器处于顶层,而速度最慢、容量最大且每位价格最便宜地存储器处于底层。
1.2.8通过冗余提高可靠性
1.由于任何物理设备都可能发生故障,因此我们通过引入冗余组件来使系统可靠,该组件在系统发生故障时可以替代失效组件并帮助检测故障。
1.3程序表象之下
1.外层是应用软件,中心是硬件,系统软件位于两者之间。
系统软件是提供常用服务的软件,包括操作系统、编译器、加载程序和汇编器等。
2.操作系统是用户程序和硬件之间的接口,为用户提供各种服务和监控功能。
操作系统为了使程序更好地在计算机上运行而管理计算机资源的监控程序。
3.操作系统最重要的作用:
处理基本的输入和输出操作。
分配外村和内存。
为多个应用程序提供共享计算机资源的服务。
4.编译器将高级语言翻译为计算机所能识别的机器语言的程序。
5.计算机服从于我们的命令,即计算机术语中的指令。指令是能够被计算机识别并执行的命令,可以将其视为数字。
6.汇编器是可以将指令由主给助记符形式翻译成二进制形式的程序。
7.汇编语言是以助记符形式表示的汲取指令。
8.机器语言是以二进制形式表示的机器指令,可以被机器所理解。
9.使用高级编程语言有以下几个好处:
1.可以使程序员用更自然的语言来思考,用英文和代数符号来表示,形成的程序看卡里更像文字而不是密码表;
2.高级语言提高了程序员的生产率;
3.采用高级语言编写程序提高了程序相对于计算机的独立性,因为编译器和汇编程序能够把高级语言程序翻译成任何计算机的二进制指令。
C程序编译为汇编语言程序,再汇编为二进制机器语言程序。
1.4箱盖后的硬件
1.任何一台计算机的基础硬件都要完成相同的基本功能:输入数据、输出数据、处理数据和存储数据。
2.计算机的两个关键部件是输入设备和输出设备。
输入设备:为计算机提高信息的装置。
输出设备:将计算结果输出给用户或其他计算机的装置。
3.组成计算机的五个经典部件是输入、输出、存储器、数据通路(在计算机中也称运算器)和控制器,其中后两个部件通常合称为处理器。
处理器从存储器中得到指令和数据,输入部件将数据写入存储器,输出部件从存储器中读出数据,控制器向数据通路、存储器、输入和输出部件发出命令信号。
1.4.1显示器
1.4.2 触摸屏
1.4.3打开机箱
1.处理器是计算机中最活跃的部分。它严格按照程序中的指令运行,完成数据相加、数据测试、按照结果发出控制信号使I/O设备做出动作等操作。
处理器也被称为中央处理单元,即CPU。
2.处理器从逻辑上包括两个主要部件:数据通路和控制器。
数据通路负责完成算术运算,是处理器中执行算术操作的部分。
控制器负责指导数据通路、存储器和I/O设备按照程序的指令正确执行。
3.内存是程序运行时的存储空间,它同时也用于保存程序运行时所使用的数据。内存由DRAM(动态随机访问存储器)芯片组成。内存由多片DRAM芯片组成,用来承载程序的指令和数据。与串行访问内存不同的是,无论数据存储在什么位置,DRAM访问内存所需的时间基本相同。
4.在处理器内部使用的是另外一种存储器——高速缓存。高速缓存是一种小而快的存储器,一般作为DRAM的缓冲。高速缓存采用的是另一种存储技术,称为静态随机访问存储器,其速度更快而且不那么密集,因此价格比DRAM更贵。
5.硬件和底层软件之间的接口被命名为计算机指令系统体系结构,或简称体系结构。计算机体系结构包含了程序员正确编写二进制机器语言程序所需的全部信息,如指令、I/O设备等。
一般来说,操作系统需要封装I/O操作、存储器分配和其他低级的系统功能细节,以使得应用程序员无须关注这些细节。
提供给应用程序员的基本指令系统和操作系统接口合称为应用二进制接口(ABI)。
6.应用二进制接口:用户部分的指令加上应用程序员调用的操作系统接口,定义了二进制层次可移植的计算机的标准。
1.4.4数据安全
1.易失性存储和非易失性存储。
易失性存储类似DRAM的存储器,仅在加电时保存数据。
非易失性存储在掉电时仍可保持数据的存储器,用于存储需运行的程序。
2.为了区分易失性存储和非易失性存储,我们将前者称为主存储或主要存储,将后者称为辅助存储。
1.4.5与其他计算机通信
1.通过网络,一台计算机可以与其他计算机通信,从而扩展计算能力。
2.根据传输距离和速率特点,以太网可以将一座建筑物中同一层的计算机连接起来,这就形成了通常称为局域网的一个例子。局域网通过交换机进行连接,可以提高路由与安全服务。广域网可跨越大陆,是因特网的骨干构成部分,可支持万维网。
1.5处理器和存储制造技术
1.6性能
1.6.1性能的定义
1.个人移动设备更关注响应时间,而服务器更关注吞吐率。
响应时间:也叫执行时间,是计算机完成某任务所需的总时间,包括硬盘访问、内存访问、I/O活动、操作系统开销和CPU执行时间等。
吞吐率:也叫做带宽,性能的另一种度量参数,表示单位时间内完成的任务数量。
1.6.2性能的度量
1.时间是计算机性能的衡量标准:完成同样的计算任务,需要时间最少的计算机是最快的。
对时间最直接的定义是挂钟时间,也叫响应时间、运行时间等。
这些术语均表示完成某项任务所需的总时间,包括了磁盘访问、内存访问、I/O活动和操作系统开销等一切时间。
2.CPU执行时间检查CPU时间,只表示在CPU上花费的时间,而不包括等待I/O或与性能其他程序的时间。
3.CPU时间还可以进一步分为用于用户程序的时间和操作系统为用户程序执行相关任务所花去的CPU时间。前者称为用户CPU时间,后者称为系统CPU时间。
4.时钟周期数为计算机一个时钟周期的时间,通常是指处理器时钟,并在固定频率下运行。
1.6.3CPU性能及其度量因素
1.程序的CPU执行时间 = 程序的CPU时钟周期数 × 时钟周期长度
1.6.4指令性能
1.CPU时钟周期数 = 程序的指令数 × 指令平均时钟周期数
指令平均时钟周期数表示执行每条指令所需的时钟周期平均数,缩写为CPI。
1.6.5经典的CPU性能公式
1.CPU时间 = 指令数 × CPI × 时钟周期长度
1.7功耗墙
1.当前在集成电路技术中占统治地位的是CMOS,其主要的能耗来源是动态能耗,即在晶体管开关过程中产生的能耗,即晶体管的状态从0翻转到1或从1翻转到0消耗的能量。
1.8沧海巨变:从单处理器向多处理器转变
1.9实测:评测 Intel Core i7
1.10谬误与陷阱
1.陷阱:在改进计算机的某个方面时期望总性能的提高与改进大小成正比。
2.谬误:低利用率的计算机具有更低功耗。
3.谬误:面向性能的设计和面向能效的设计具有不相关的目标。
4.陷阱:用性能公式的一个子集去度量性能。