【计算机组成与设计:硬件/软件接口】第一章:计算机概要与技术
【计算机组成与设计:硬件/软件接口】第一章:计算机概要与技术
标签(空格分隔):【计算机组成与设计:硬件/软件接口】
第一章:计算机系统概述
1.1 引言
1.1.1 计算机应用的分类及其特性
- 个人计算机(Personal Computer ,PC):用于个人使用的计算机,通常包含图形显示器、键盘等。强调对单用户提供良好的性能,价格低廉,通常运行第三方软件。
服务器(server):用于为多用户运行大型程序的计算机,通常由多个用户并行使用,并且一般通过网络访问。过去被称为大型机的现代形式。服务器适用于执行大负载任务,可以执行单个复杂应用(科学的或者工程上的),也可以处理大量简单的作业,如大型 Web 服务器。这些应用通常基于其他来源的软件(例如数据库或仿真软件),并且往往为了特殊的需要而加以修改或定制。服务器的制造技术和桌面计算机差不多,但是能够踢狗更强的计算、存储和 I/O 能力。通常情况下,当发生故障时,服务器比个人计算机回复的代价要高得多,因此服务器更加强调可靠性。
服务器又分为低端服务器和高端服务器(超级计算机)。嵌入式计算机(embedded computer):嵌入到其他设备中的计算机,一般运行预定义的一个或一组应用程序。它的设计目标是运行单一应用程序或者一组相关的应用程序,并通常和硬件集成在一起以单一系统的方式一并交互给用户。他对故障十分敏感,例如,我相信没人愿意看到新买的电视机无法正常收看节目,或者十字路口的红路灯发生故障。
treabyte:简写作 TB, 原始定义为 1099511627776()字节,但是有些通信和辅助存储系统将其重新定义为 1 000 000 000 000 () 字节,为了避免混淆,使用术语 tebibyte(TiB)表示 字节,而 terabyte(TB)表示 字节。如下图,表示了十进制和二进制术语的区别与范围。
十进制数语 | 缩写 | 数值 | 二进制数语 | 缩写 | 数值 | 数值差别 |
---|---|---|---|---|---|---|
kilobyte | KB | kibibyte | KiB | 2% | ||
megabyte | MB | mebibyte | MiB | 5% | ||
gigabyte | GB | gibibyte | GiB | 7% | ||
terabyte | TB | tebibyte | TiB | 10% | ||
petabyte | PB | pebibyte | PiB | 13% | ||
exabyte | EB | exbibyte | EiB | 15% | ||
zettabyte | ZB | zebibyte | ZiB | 18% | ||
yottabyte | YB | yobibyte | YiB | 21% |
通过为常用量加一个二进制注释解决 与 字节的模糊性,最后一行表示了二进制术语大于相应的十进制术语的具体数值。在以 bit 为单位时,这种表示方法依旧适用。
1.1.2 后 PC 时代
个人移动设备(Personal Moblie Device,PMD):连接到网路上的小型无线设备。PMD 依靠电池供电,通过下载 App 的方式来安装软件。智能手机和平板电脑是典型的 PMD.
云计算(cloud computing):在网络上提供服务的大服务器集群,一些运营商根据应用需求出租不同数量的服务器。它依赖于仓储规模计算机(Warehouse Scale Computer,WSC)的巨型数据中心。
软件即服务(Software as a Service, SaaS):在网络上以服务的方式提供软件和数据。其运行方式通常不是在本地设备上运行所有的二进制代码,而是通过诸如运行在本地客户端的浏览器等小程序登入到远程服务器上执行。典型的例子如 Web 搜索和社交网络。
1.1.3 一些基本概念
- 多核微处理器(multicore microporcessor):在一块集成电路上包含多个处理器的微处理器。
- 首字母缩写词(acronym):由一串单词中每个单词的首字母相连构成的单词。例如,RAM是随机访问存储器(Random Acces(s Memory)的缩写词,CPU是中央处理单元(Central Process Unit)的缩写词。
- 影响程序性能的因素:程序所用算法的有效性;用来建立程序并将其翻译成机器指令的软件系统;计算机执行及其指令的有效性。见下表:
软硬件组成元素 | 对性能的影响 |
---|---|
算法 | 决定了源码级语句的数量和I/O操作的数量 |
编程语言、编译器和体系结构 | 决定了每条源码级语句对应的计算机指令数量 |
处理器和存储系统 | 决定了指令的执行速度 |
I/O系统(硬件和操作系统) | 决定了I/O操作可能的执行速度 |
1.2 计算机系统结构中的 8 个伟大思想
1.2.1 面向摩尔定律的设计
- 摩尔定律(Moore’ Law):指单芯片上的集成度每 18 ~ 24 个月翻一番。
1.2.2 适用抽象简化设计
- 抽象(abstraction):在高层次中看不见低层次的细节,只能看到一个简化的模型。
1.2.3 加速大概率事件
- 加速大概率事件(common case fast):优化大概率事件远比优化小概率事件更能提高性能。想象一下,提高赛车速度远比提高货车速度容易很多。
1.2.4 通过并行提高性能
- 并行设计(parallel performace)
1.2.5 通过流水线提高性能
- 流水线(pipelining)
1.2.6 通过预测提高性能
- 预测(prediction)
1.2.7 存储器层次
- 存储器层次(hierarchy of memory):在存储器层次结构中,速度最快,容量最小,且单位价格最昂贵的存储器放到顶层,而速度最慢,容量最大并且每单位价格最便宜的存储器放在最底层。
1.2.8 通过冗余提高可靠性
- 可靠性(dependable):由于任何一个物理器件都有可能失效,因此可以通过使用冗余部件的方式来提高系统可靠性。
1.3 程序概念入门
系统软件(system software):提供常用服务的软件,包括操作系统、编译程序、加载程序和汇编程序等。
操作系统(operating system):为了使程序更好的在计算机上运行而管理计算机资源的监控程序。是用户程序和硬件之间的接口,为用户提供各种服务和监控功能。最重要的最用:1. 处理基本的输入和输出操作。2. 分配外存和内存。3. 为多个应用程序提供共享计算机资源的服务。
简化的硬件和软件层次图:
将硬件作为同心圆的中心,应用程序软件作为最外层。在复杂的应用中,通常存在多层应用软件层。编译程序(compiler):将高级语言翻译为计算机所能识别的机器语言的程序。
1.3.1 从高级语言到硬件语言
位(bit):也称为 二进制位(binary digit)。基数为 2 的数字中的 ‘0’ 或 ‘1’.它是信息的基本组成元素,分别 代表电信号中的 “通” 和 “断”。
指令(instruction):计算机硬件所能理解并服从的命令。可以将其视为一串二进制的数字,如 1000110010100000.
机器语言(machine language):以二进制元表示的机器指令。计算机可以理解。
汇编程序(assembler):将指令由助记符形式翻译成二进制形式的程序。
汇编语言(assembly language):以助记符形式表示的机器指令。
高级编程语言(high-level programming langugae):如 C, C++, Java, Visual Basic 等移植的语言,由一些单词和代数符号组成,可由编译器转换成汇编语言。
-
程序和编程语言之间的关系,这是抽象的一个例子。
步骤:- 当然,如今也有一些编译器直接 编译 二进制语言。
1.4 硬件概念入门
- 输入设备(input device):为计算机提供信息的装置,如键盘。
-
输出设备(output):将计算结果输出给用户的设备,如显示器,或者其他计算机装置。
-
中央处理单元(central processor unit,CPU):也称之为处理器,是计算机中最活跃的部分,包括数据通路和控制器,能将数字相加,测试结果,并按照结果发出控制信号使得I/O设备工作等。
- 数据通路(datapath):处理器中执行算术操作的部分,负责完成算术运算。
-
控制器(control):负责指导数据通路,存储器和 I/O 设备按照程序的指令正确执行。
内存(memo**ry):是程序运行时的存储空间,同时也用于保存程序运行时所使用的数据。内存由DRAM芯片组成
- 动态随机访问存储器(dynamic random access memory,DRAM):集成电路形式的存储器,可以随机访问任何地址的内存。
- 缓存(cache memory):是一种小并且快的存储器,一般作为大而慢的存储器的缓冲。它是由SRAM组成。
- 静态随机访问存储器( static random access memory,SRAM):一种集成电路形式的存储器,比DRAM 更快,集成度更低。DRAM 与 SRAM 是存储器层次中的两层。
- 易失性存储器(volatile memory):类似 DRAM 的存储器,尽在加电时保存数据。
- 非易失性存储器(nonvolatil memory):在掉电时仍然可以保持数据的存储器,用于存储运行的程序,如DVD.
- 主存储器(main memory):也叫做主要存储器,这个存储器用来保持运行中的程序,在现代计算机中一般由 DRAM 组成。
- 二级存储器(secondary memory):非易失性存储器,用来保存两次运行之间的程序和数据。在个人移动设备中一般由闪存构成,在服务器中由磁盘构成。
- 磁盘(magnetic disk):也叫做硬盘(hard disk),是使用磁介质材料构成的以旋转盘片为基础的非易失性二级存储设备。
-
闪存(flash memory):一种非易失性半导体内存,单位价格和速度均低于 DRAM,单位价格高于磁盘,速度快于磁盘。
指令集体系结构(instruction set architecture):简称为体系结构,是低层次软件和硬件之间的抽象接口,包含了需要编写正确运行的机器语言所需要的全部信息,包括指令、寄存器、存储访问和I/O等。
-
应用二进制接口(application binary interface,ABI):用户部分的指令加上应用程序员调用的操作系统的接口,定义了二进制层次可移植的计算机标准。
通信:在计算机之间高速度交换信息。
- 资源共享:有些I/O设备可以由网络上的计算机共享,不必每台计算机都配备。
- 远距离访问:用户不必再计算机旁边,而是在相距比较远的地方使用计算机。
- 局域网(local area network,LAN):一种在一定地理区域内使用的传输数据的网络。
- 广域网:一种可以将区域扩展到几百千米范围内的网络。
1.5 处理器和存储器制造技术
- 晶体管(transistor):一种由电信号控制的简单开关。
- 超大规模集成电路(very large-scale integrated circuit):由数十万到数百万晶体管组成的电路。
1.6 性能
1.6.1 性能的定义
- 响应时间(response time):也叫做执行时间(execution time),是指计算机完成某个任务所需的总时间,包括硬盘访问、内存访问、I/O活动、操作系统开销和 CPU 执行时间等。
-
吞吐率(throughput):也叫做带宽(bandwith),性能的另一种度量参数,表示单位时间内完成的任务数量。
问题:一下两种改进计算机系统的方式能否增加计算机的吞吐率或者减少响应时间,或者及增加吞吐率又减少响应时间?
- 将计算机中的处理器更换为更高速的型号。
- 增加多个处理器来分别处理完成的任务。
答:一般而言,降低反应时间都增加吞吐率。因此,方式1同时改进了响应时间,又增加了吞吐率。方式2 不会使任务完成得更快,只会增加其吞吐率。
但是,当需要处理更多任务时,系统可能需要令后续请求排队,在这种情况下,随着吞吐率的增加,可以同时改进响应时间,因为这种情况下缩小了排队等待的事件。所以,在实际的计算机系统中,响应时间和吞吐率往往相互影响。
-
对于计算机性能而言,在这里,我们主要考虑响应时间方面。对于某一个计算机,可以表达为:
- 如果要定量的比较两台不同计算机 X,Y 的性能。我们可以用
1.6.2 性能的度量
- CPU 执行时间(CPU execution):在CPU上花费的时间,而不包括等待 I/O 或者运行其他应用程序的时间。注意,在日常使用计算机的时候,我们感受到的是程序的响应时间(response time),而不是 CPU 的执行时间。CPU 时间可以进一步划分为 系统CPU时间 和 用户CPU时间。
- 系统 CPU 时间:为执行程序而花费在操作系统上的时间。
-
用户 CPU 时间:在程序本身所花费的 CPU 时间。
时钟周期(clock cycle):也叫做tick,clock tick,clock period,clock或者cycle,是计算机一个时钟周期的时间,通常是处理器时钟,一般为一个常数。
- 时钟频率(clock rate):时钟周期的倒数。
1.6.3 CPU性能及因素
1.6.4 指令的性能
- CPI( clock cycle per instruction):即每条指令的时钟周期数,表示执行某个应用程序或者程序片段时每条指令所需要的时钟周期平均数。
- 指令数(instruction count):执行某程序所需要的总指令数量。
1.6.5 经典的 CPU 性能公式
- 计算机在不同层次上的性能测试指标以及测试单位。通过这些指标的组合可以计算出程序的执行时间。
性能的分量 | 测量单位 |
---|---|
程序的 CPU 时间 | 程序执行的执行时间,单位为秒 |
指令数目 | 程序执行的指令数目 |
指令的平均执行时钟周期(CPI) | 每条指令的平均执行的时钟周期数 |
时钟周期时间 | 每个时钟周期的长度,以秒为单位 |
唯一能够以完全可靠测量的计算机性能指标是时间。例如,对指令集减少指令数目的改建可能降低时钟周期时间或者提高 CPI,从而抵消了改进的效果。类似地, CPI 与执行的指令类型相关,执行指令数最少的代码其执行速度未必是最快的。
指令组合(instruction mix):在一个或多个程序中,指令的动态使用频度的评价指标。CPI随着指令组合的变化而变化。
- 一些影响CPU性能公式的因素
- 算法。影响指令数与可能的CPI,算法决定源程序执行指令的数目,从而也决定了 CPU 执行指令的数目。算法也可能通过使用较快或者较慢的指令影响 CPI.例如,当算法使用更多的除法运算时,将会导致 CPI 增大。
- 编程语言。影响指令数与CPI,编程语言显然会影响指令数,因为编程语言中的语句必须翻译为指令,从而就决定了指令数。编程语言也可以影响CPI,例如,Java语言充分支持数据抽象,因此将进行间接调用,需要使用较高的 CPI 指令。
- 编译程序。影响指令数与CPI,因为编译程序决定了源程序到计算机指令的翻译过程,所以编译程序的效率既影响了指令数又影响CPI。编译器会以复杂的方式影响 CPI.
- 指令集体系结构。影响指令数,CPI,时钟频率,指令集体系结构影响 CPU 性能的所有 3 个方面,因为它影响完成某功能所需要的指令数、每条指令的周期数以及处理器的时钟频率。
也许你会认为 CPI 的最小值为 1.0. 需要注意,有些处理器在每个时钟频率可以对多条指令取指并执行。有些设计者用 IPC (instruction per clock cycle)来代替 CPI.例如一个处理器每时钟周期可以执行平均 2 条指令,故 IPC = 2, CPI = 0.5.
时钟周期时间传统上是固定的。但是为了节省能量胡总和暂时提高性能,当今计算机可以使用不同的时钟频率,因此我们需要对程序使用平均时钟频率。例如,i7 处理器可以在温度升高之前暂时的将时钟频率提高 10%.