跳转至

计算机组成与设计:硬件/软件接口(原书第5版)

第 1 章 计算机概要与技术

计算机应用的分类及其特性

个人计算机:用于个人使用的计算机,通常包含图形显示器、键盘和鼠标等。

服务器:用于为多用户运行大型程序的计算机,通常由多个用户并行使用,并且一般通过网络访问。

嵌入式计算机:嵌入到其他设备中的计算机,一般运行预定义的一个或者一组应用程序。

软件即服务(Software as a Service, SaaS):在网络上以服务的方式提供软件和数据。其运行方式通常不是在本地上运行所有的二进制代码,而是通过诸如运行在本地客户端的浏览器等小程序登录到远程服务器上执行。典型的例子是 Web 搜索和社交网络。

云计算:在网络上提供服务的大服务器集群,一些运营商根据应用需求出租不同数量的服务器

多核微处理器:在一块集成电路上包含多个微处理器(“核”)的微处理器

计算机系统结构中 8 个伟大的思想

  1. 面向摩尔定律的设计
  2. 使用抽象简化设计
  3. 加速大概率时间
  4. 通过并行提高性能
  5. 通过流水线提高性能
  6. 通过预测提高性能
  7. 存储器层次
  8. 通过冗余提高可靠性

系统软件:提供常用服务的软件,包括操作系统、编译程序、加载程序和汇编程序等

操作系统:为了使程序更好地在计算机上运行而管理计算机资源的监控程序。操作系统是用户程序和硬件之间的借口,为用户提供各种服务和监控功能。操作系统最为重要的作用是:

  1. 处理基本的输入和输出操作
  2. 分配外存和内存
  3. 为多个应用程序提供共享计算机资源的服务

编译程序:将高级语言翻译为计算机所能识别的机器语言的程序。

从高级语言到硬件语言,我们通常认为计算机语言就是二进制数。每个字母就是二进制元数字中的一个二进制位一位。计算机服从于我们的命令,即计算技术术语中的指令。指令是能被计算机识别并执行的位串,可以将其视为数字。

汇编程序:将指令由助记符形式翻译成二进制形式的程序

汇编语言:以助记符形式表示的机器指令

机器语言:以二进制元形式表示的机器指令

高级编程语言:如 C、C++、Java、Visual Basic 等可移植的语言,由一些单词和代数符号组成,可以由编译期转换为汇编语言。

高级编程语言的好处

  1. 可以使程序员用更自然的语言来思考,用英文和代数符号来表示
  2. 高级语言提高了程序员的生产率
  3. 采用高级语言编写程序提高了程序相对于计算机的独立性

计算机的 5 个部件

  1. 输入设备:为计算机提供信息的装置,如键盘
  2. 输出设备:将计算结果输出给用户(如显示器)或其他计算机装置
  3. 控制器
  4. 存储器
  5. 数据通路

集成电路:也叫芯片,一种将几十个只几百万个晶体管连接起来的设备

中央处理器单元:也称为处理器,处理器是计算机中最活跃的部分,它包括数据通路和控制器,能将数字相加,测试结果,并按结果发出控制信号使 I/O 设备激活等

数据通路:是处理器中执行算术操作的部分

控制器:处理器中根据程序的指令指挥数据通路、存储器和 I/O 设备的部分

内存:程序运行时的存储空间,同时还存储程序运行时所需的数据

DRAM:动态随机访问存储器,集成电路形式的存储器,可随机访问任何地址的内存。

缓存:缓存是一种小而快的存储器,一般作为大而慢的存储器的缓冲

SRAM:静态随机访问存储器,一种集成电路形式的存储器,但是比 DRAM 更快,集成度更低

SRAM 和 DRAM 是存储器层次中的两层

指令体系结构:简称体系结构,是低层次软件和硬件之间的抽象接口,包含了需要编写正确运行的机器语言程序所需要的全部信息,包括指令、寄存器、存储访问和 I/O 等。一般来说,操作系统需要封装 I/O 操作、存储器分配和其他地级的系统功能细节,以便应用程序员无需在这些细节上分心。

应用二进制接口:用户部分的指令加上应用程序要调用的操作系统接口,定义了二进制层次可移植的计算机的标准。

易失性存储器:类似 DRAM 的存储器,仅在加电时保存数据。

非易失性存储器:在掉电时仍可保持数据的存储器,用于存储运行间的程序,例如 DVD。

为了区分易失性存储器和非易失性存储器,我们将易失性存储器称为主存储器,将非易失性存储器称为二级存储器。二级存储器形成了存储器层次中下面更低的一级。

磁盘:也叫硬盘,是使用磁介质材料构成的以旋转盘片为基础的非易失性二级存储设备。

闪存:一种非易失性半导体内存,单位价格和速度均低于 DRAM,但单位价格比磁盘高,速度比磁盘快。

联网的计算机具有如下几个主要优点:

  1. 通信:在计算机之间告诉交换信息
  2. 资源共享:有些 I/O 设备可以由网络上的计算机共享,不比每台计算机都配备
  3. 远距离访问:用户可以不必在计算机的旁边,而是在很远的地方使用计算机

局域网:一种在一定地理区域(例如在同一栋大楼内)使用的传输数据的网络

广域网:一种可将区域扩展到几百千米范围的网络

晶体管:一种由电信号控制的简单开关。

超大规模集成电路:由数十万到数百万晶体管组成的电路

半导体:一种导电性能不好的物质

硅锭:一块由硅晶体组成的棒。直径大约在 8~12 英寸,长度约 12~24 英寸

晶圆:厚度不超过 0.1 英寸的硅锭片,用来制造芯片

瑕疵:晶圆上一个微小的缺陷,或者在图样化的过程中因为包含这个缺陷而导致芯片失效

芯片:从晶圆中切割出来的一个单独的矩形区域,更加正式的英文名称时 chip

成品率:合格芯片数占总芯片数的百分比

封装:合格芯片要连接到 I/O 引脚上

响应时间:也叫执行时间,是计算机完成某任务所需的总时间,包括硬盘访问、内存访问、I/O 活动、操作系统开销和 CPU 执行时间

吞吐率:也叫带宽,性能的另一种度量参数,表示单位时间内完成的任务数量

CPU 执行时间:简称 CPU 时间,执行某一任务在 CPU 上所花费的时间

用户 CPU 时间:在程序本身花费的 CPU 时间

系统 CPU 时间:为执行程序而花费在操作系统上的时间

时钟周期:也叫 tick、clock period、clock 或 cycle,为计算机一个时钟周期的时间,通常是处理器时钟,一般为常数

时钟长度:每个时钟周期持续的时间长度

CPU 时钟周期数 = 程序的指令数 × 每条指令的平均时钟周期数

CPI:每条指令的时钟周期数,表示执行某个程序或者程序片段时每条指令所需要的时钟周期平均数

CPU 时间 = 指令数 × CPI × 时钟周期时间

CPU 时间 = 指令数 × CPI ÷ 时钟频率

指令数:执行某程序所需的总指令数量

指令组合:在一个或多个程序中,指令的动态使用频度的评价指标

硬件或软件指标 影响什么 如何影响
算法 指令数,可能的CPI 算法决定源程序执行指令的数目,从而也决定了CPU 执行指令的数目。算法也可能通过使用较快或较慢的指令影响 CPI。例如,当算法使用更多的除法运算时,将会导致 CPI 增大
编程语言 指令数,CPI 编程语言显然会影响指令数,因为编程语言中的语句必须翻译为指令,从而决定了指令数。编程语言也可影响 CPI,例如,Java 语言充分支持数据抽象,因此将进行间接调用,需要使用较高的 CPI 指令
编译程序 指令数,CPI 因为编译程序决定了源程序到计算机指令的翻译过程,所以编译程序的效率既影响指令数又影响 CPI。编译器会以复杂的方式影响 CPI
指令集体系结构 指令数,CPI 时钟频率 指令集体系结构影响 CPU 性能的所有 3 个方面,因为它影响完成某功能所需的指令数、每条指令的周期数以及处理器的时钟频率

工作负载:运行在计算机上的一组程序,可以直接使用用户的一组实际应用程序,也可以从实际程序中构建。一个典型的工作服在必须指明程序和相应的频率

基准测试程序:用于比较计算机性能的程序

Amdahl 定律:改进后的执行时间 = 受改进影响的执行时间 / 改进量 + 不受影响的执行时间

MIPS:基于百万条指令的程序执行速度的一种测量。指令条数除以执行时间与 \(10^6\) 之积就得到了 MIPS

执行时间是唯一有效且不可推翻的性能度量方法。

第 2 章 指令:计算机的语言

计算机语言中的基本单词称为指令

指令集:一个给定的计算机体系结构所包含的指令集合

存储程序概念:多种类型的指令和数据均以数字形式存储于存储器中的概念,存储程序型计算机即源于此。

回到页面顶部