文章目录
计算机组成与设计第一章
1.1计算机应用的分类(重点)
个人计算机(PC)
用于个人使用的计算机,通常包括图形显示器、键盘和鼠标等。
服务器(Sever)
- 用于为多用户运行大型程序的计算机,通常由多个用户并行使用,并且一般通过网络访问。
- 服务器适用于执行大负载任务,也可以执行单个复杂应用和大量简单作业。
- 与个人计算机相比制造技术差不多,但能提供更强的计算、存储和I/O能力。
- 通常情况下,发生故障时,服务器比个人计算机恢复的代价高得多,因此服务器更加强调可靠性。
超级计算机(Supercomputer)
- 一般配置为服务器,具有高性能和高成本的一类计算器。
- 超级计算机也可以称为高端服务器。一般由成百上千台处理器组成,内存为Terabyte级(一般简写为TB,原始定义为1099511627776(2的40次方)字节,但有有些通信系统将其重新定义为(10的20次)方字节。一般使用术语tebibyte(TiB)表示(2的40次方)字节,而terabyte指(10的12次方)字节。),价格可高达上亿美元。
- 主要用于高端科学和工程计算,如天气预报、石油勘测、蛋白质结构计算等大规模问题。
- 代表最高计算能力,在服务器中占相对很小的一部分。
嵌入式计算机(Embedded computer)
- 嵌入到其他设备中的计算机,一般运行预定义的一个或者一组应用程序。
- 使用数量最多的一类计算机,应用和性能十分广泛。
- 对成本和功耗有严格限制,对故障非常敏感。
个人移动设备(PMD)
- 连接到网络上的小型无线设备。PMD由电池供电,通过下载APP的方式安装软件。
- 智能手机和平板电脑是典型的PMD。
云计算(Could computing)
- 云计算代替了传统的服务器,依赖于称为仓储规模计算机的巨型数据中心。
- 可为PMD提供软件服务,通过云计算实现软件即服务
- 在网络上提供服务的大服务器集群,一些运营商根据应用需求出租不同数量的服务器。
1.2计算机系统结构中的八个伟大思想(重点)
面向摩尔定律的设计
摩尔定律是指单芯片上的集成度每18~24个月翻一番,此定律是由Intel的创始人之一的Gordon Moore 在1965年对集成电路集成度做出的预测。
几十年来一直按此规律进行,虽然近些年来不太适用。但此定律却说明了计算机计算性能的飞速进步。
由于计算机设计需要几年时间,因此在项目结束时,单芯片的集成度相对于设计开始时很容易翻一番甚至翻两番。
使用抽象简化设计
计算机架构师和程序员必须发明能够提高产量的技术,否则设计时间也将会像资源规模一样按照摩尔定律增长。提高硬件和软件生产率的主要技术之一是使用抽象来表示不同设计层次,在高层次中 看不到低层次的细节,只能看到一个简化的模型。
加速大概率事件
大概率事件通常比小概率事件简单,从而易于提高。大概率事件规则意味着设计者需要知道什么事件是经常发现的,这只有通过仔细的裕与评估才能得出。可以把加速大概率事想象成一辆赛车,由于通常情况下只有一两名乘客,因此提高赛车的速度要比提高小型货车的速度容易
通过并行提高性能
从计算的诞生开始,计算机设计者就通过并行(parallel)执行操作来提高性能。
通过流水线提高性能
在计算机系统结构中,一个特别的并行性场景就是流水线,例如许多西部片中,一些坏人在制造火灾,在消防车出现之前会有一个“消防队列”来灭火—小镇的居民们排成一排通过水桶接力快速将水桶从水源传至火场,而不是每个人都来回奔跑。可以把流水线想象成一系列水管,其中每一块代表一个流水级。隐含分层思想,将工作细化,专人专事。
通过流水线提高性能
遵循谚语“求人准许不如求人原谅”,最后一个传大的思想就是预测。在某些情况下,如果假定从误预测恢复执行代价不高并且预测的准确率相对较高,则通过猜测的方式提前开始某些操作,要比等到确切知道这些操作应该启动时才开始要快一些。
存储器层次
存储器的速度通过影响性能,通过分层来解决相互矛盾的需求
通过冗余提高可靠性
计算机不仅需要速度快,还需要工作可靠。由于任何一个物理器件都可能失效,因此可以通过使用冗余部件的方式提高系统的可靠性,冗余部件可以替代失效部件并可以帮助检测错误。
1.3程序表象之下(重点)
计算机设计中一个伟大思想抽象的例子
我们知道计算机中的硬件只能执行极为简单的低级指令。
而一个典型的程序,比如字处理程序或者大型数据库处理系统,可由数百万代码构成,依靠软件库来实现异常复杂的功能。
因此从从复杂的应用程序到简单的指令需要经过几个软件层次来将复杂的高层次逐步解释或翻译成简单的计算机命令。
简化的硬件和软件层次图
这些程序软件的层次结构,外层是应用软件,中心是硬件是硬件,系统软件位于两者之间。
系统软件:提供常用服务的软件,包括操作系统、编译程序、加载程序和汇编程序等。
在复杂的应用中,通常存在多层应用软件层。
例如:
一个数据库系统可运行于系统软件之上,而驻留在该系统上的某应用反过来又运行在该数据库上。
系统软件的组成
操作系统(operating system):为了使程序更好地在计算机上运行而管理计算机资源的监控程序。
编译程序(compiler):把高级语言编写的程序翻译成硬件能执行的指令。翻译过程相当复杂,简要介绍。
计算机语言
电子硬件传递信号的方式是通过电信号的发送。因此对于计算机来说,最简单的信号就是“通”与“断”,只用2个符号“1”与“0”来表示,每一个符号就是二进制元数字中的一个二进制位(binary digit)或一位(bit)。
二进制位:基数为2的数字中的0或1,它是信息的基本组成。
指令:计算机硬件所能理解并服从的命令。
由此第一代的程序员就直接使用二进制数与计算机通信,但是这是一项及其枯燥的工作,所以设计人员开发了一种称为汇编程序的软件。
汇编程序:将指令由助记符形式翻译成二进制的程序。
例如:
add A,B
汇编程序会将其翻译成:
1000110010100000
这一种语言即汇编语言。而机器可以理解的二进制语言为机器语言。
汇编语言:以助记符形式表示的机器指令。
机器语言:以二进制元形式表示的机器指令。
但是汇编语言还是要求程序员像计算机一样思考。生产率低。
设计人员开始认识到编写一个程序来将更强大的高级语言翻译成计算机指令,即高级编程语言。
高级语言及其编译程序极大的提高了生产效率。
简单的例子说明之间的关系。
高级编程语言:如C\C++\JAVA\Visual Basic等可移植的语言,由一些单词和代数符号组成,可以由编译器转化为汇编语言。
高级应用程序(使用c语言)
swap(int v[],int k)
{
int temp;
temp=v[k];
v[k]=v[k+1];
v[k+1]=temp;
}
编译后
汇编语言程序(MIPS指令集)
swap:
multi $2, $5,4
add $2, $4,$2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jw $31
汇编后
二进制机器语言程序(MIPS指令集)
1.4箱盖后的硬件
计算机的基础硬件的基本功能:输入数据、输出数据、处理数据和存储数据。
关系图如下:
部分名词解释:
输入数据:为计算机提供信息的装置。如键盘、鼠标。
输出数据:将计算结果输出到用户或其他计算机装置。如显示器。
液晶显示:用液体聚合物薄层的带电或者不带电来传输或者阻止光线的传播。
动态矩阵显示:液晶显示技术。
像素:图像元素的最小单元。屏幕由成千上万的像素组成的矩阵而形成。
集成电路(芯片):将几十个至几百万个晶体管连接起来的设备。
中央处理器单元:数据通路和控制器,能将数字相加,测试结果。
数据通路:处理器执行算数的部分。
控制器:指令指挥数据通路、存储器、和输入、输出设备的部分。
内存:程序运行时的存储空间,同时存储程序运行时需要的数据。
DRAM:动态随机访问存储器,集成电路形式的存储器,可随机访问任何地址的内存。
缓存:小而快的存储器。一般作为大而慢的存储器的缓存。
静态随机访问存储器:一种集成电路形式的存储器。
指令集体系结构(体系结构):低层次软件和硬件之间的抽象接口。
应用二进制接口:用户部分指令加上应用程序员调用的操作系统接口,定义了二进制层次可移植的计算机标准。
实现:遵循体系结构抽象的硬件。
易失性存储器:仅在加电时保存数据。
非易失性存储器:在掉电时依然可以保持数据的存储器,用于存储运行之间的程序,如DVD.
主存储器:用来保存运行中的程序。
二级存储器:非易失性存储器,用来保存两次运行之间的程序和数据。
磁盘:也叫硬盘。
内存:一种非易失性半导体内存,价格比磁盘高,速度比磁盘快。
除了上面所说的经典部件还有一项不可缺少的功能:计算机网络。
联网计算机
局域网:一种在一定地理区域(如一栋大楼里)使用的传输数据的网络。
广域网:一种可将区域扩展到几百千米范围的网络。
1.5处理器和存储器的制造技术
晶体管:一种由电信号控制的简单开关。
集成电路是由成千上万个晶体管组成的芯片。
摩尔定律引用“超大规模”术语中,即超大规模集成电路。
超大规模集成电路:由数十万到数百万晶体管组成的电路。
要了解集成电路的制作过程,首先知道原材料硅的特性。
硅:一种自然因素,半导体。
半导体:一种导电性能不好的物质。
用特殊的化学方法对硅添加某些材料,可以将把细微的区域转变成三种类型之一。
- 良好的导电体
- 良好的绝缘体
- 可控导电体或绝缘体
芯片制造的全过程:
硅锭:一块由硅晶体组成的棒。
晶圆:厚度不超过0.1英寸的硅锭片,用来制作芯片。
但是在晶圆中或是在图样化的几十个步骤中出现一个细微的瑕疵就会使其附近的电路损坏,这些瑕疵使得制造一个完美的晶圆几乎是不可能的。
有几种策略可以解决这一问题。
- 把晶圆切分成许多独立的晶圆,也就是现在的芯片。通过切分,可以只淘汰有瑕疵的芯片,而不用淘汰整个晶圆。
这一个量化过程描述可以用成品率来表示。
瑕疵:晶圆上一个微小的缺陷,在图样化中因为包含这个缺陷而导致芯片失效。
芯片:从晶圆中切割出来的一个单独的矩形空间。
成品率:合格芯片数占总芯片数的百分比。
- 进行尺寸收缩,从而改进每晶圆的芯片数和成品数。
集成电路成品取决于成品率以及芯片和晶圆的体积,与芯片面积之间的关系一般不是线性。
1.6性能(重点中的重点)
性能定义
如果你在两台不同的计算机运行相同的程序,首先完成任务的计算机就更快。
但如果你运行的是一个数据中心,有几台服务器提供用户投放作业,那应该是一天内完成作业最多的那台计算机快。
所以不同使用途径对性能的要求也不一样
个人用户计算机会对降低响应时间有大的要求。
数据中心更多关注吞吐率。
响应时间:
- 也叫执行时间,是计算机完成某任务所需的总时间。
- 包括硬盘访问、内存访问、I/O活动、操作系统开销和CPU执行时间等。
吞吐率:
- 也叫带宽,性能的另一种度量参数,表示单位时间内完成任务的数量
一般来说,降低响应时间几乎都可以增加吞吐率。
但是当需要处理更多任务时,系统可能需要令后续请求排队。
在这种情况下,随着吞吐率的增加,可同时改进响应时间,因为缩小了排队等候的时间。
因此实际计算机中,响应时间和吞吐率往往相互影响。
使性能最大化方法:
希望任务的响应时间或执行时间最小化。
1.增加性能
2.降低执行时间
表达式:
性能 = 1 / 执行时间
例题:吞吐率和响应时间
见PDF 22页最下面
例题:相对性能
如果计算机A运行一个程序只需要10秒,而计算机B运行同样的程序需要15秒,那么计算机A比计算机B快多少?
答:我们知道,如果
性能A/性能B=执行时间B/执行时间A=n
则计算机A的执行速度是计算机B的n倍,故性能之比为
15/10=1.5
因此A的执行速度是计算机B的1.5倍
在以上的例子中,我们可以说,计算机B比计算机A慢1/3 因为
性能A/性能B = 1.5
意味着
性能A/1.5 = 性能B
性能的度量
计算机在运行程序所需的时间要与一般的响应时间区分开。
我们可以使用CPU执行时间,表示在CPU上花费的时间,不包括等待I/O或运行其他程序的时间。
(用户所感受到的是程序响应时间,而不是CPU时间)
CPU执行时间可以细分为
1.用户程序的响应时间。(用户CPU时间)
2.操作系统为用户服务花去的CPU时间。(系统CPU时间)
使用术语系统性能表示空载系统的响应时间,用CPU性能表示用户CPU时间。
时钟周期和时钟长度
时钟周期:为计算机一个时钟周期的时间,通常是处理器时钟。
时钟长度:每个时钟周期持续的时间长度。
关系:例如时钟周期为250ps,对应的时钟频率为4GHz。
CPU性能及其因素
公式:
一个程序的CPU执行时间 = 一个程序的CPU时钟周期 * 时钟周期时间(/时钟频率)
改进性能:
1.减少程序的CPU时钟周期数。
2.减少时钟周期时间。
指令的性能
公式:
CPU时钟周期数 = 程序的指令数 * 每条指令的平均时钟周期数
CPI:每条指令的时钟周期数,表示执行某个程序时每条指令所需要的时钟周期平均数。(CPI随着指令组合而变化)
例题:改进性能
见PDF 25页最下面
例题:性能公式的使用
见PDF 26页最下面
经典的CPU性能公式:
CPU时间 = 指令数 * CPI * 时间周期时间
或
CPU时间 = 指令数 * CPI / 时钟频率
各种因素影响
指令数:执行某程序所需要的总指令数
指令组合:在一个或多个程序中,指令动态使用频率的评价指标,
1.7功耗墙
例题:相对功耗
见PDF 30页最下面
1.8实例:Inter Core i7基准
工作负载
计算机运行的一组程序集构成了工作负载。
通过使用一组专门用于测量性能的基准测试程序。
前面我们已经了解设计计算机的几大思想之一的加速大概率事件的执行。
所以先必须准确知道哪些是大概率事件,因此基准测试在计算机系统架构中具有非常重要的作用。
工作负载:一个典型的工作负载必须指明程序和相应的频率。
基准测试程序:用于比较计算机性能的程序。
SPEC CPU 基准测试程序
SPECINTC2006基准程序在2.6GHz的 Inter Core i7 920的运行结果:
SPEC功耗基准测试程序:
谬误与陷阱
最后,祝你平安喜乐,万事胜意