# 1.2 计算机的类别
<!-- source: p0023 -->

上述变化为新世纪的一场重大转变奠定了基础：我们看待计算、计算应用以及计算机市场的方式都在改变。自个人计算机诞生以来，计算机的形态与使用方式还从未发生过如此显著的变化。使用方式的变化形成了五种差异很大的计算市场，每一种都有各自的应用、需求和计算技术。[图 1.2](/book/ch01/02-classes/#fig-1.2) 概括了这些主流计算环境及其重要特征。

<!-- source: p0024 -->

| 特征 | 物联网／嵌入式计算机 | 个人移动设备（PMD） | 桌面计算机 | 服务器 | 集群／仓库级计算机 |
| --- | --- | --- | --- | --- | --- |
| 系统价格 | 10–100,000 美元 | 100–1,000 美元 | 300–2,500 美元 | 5,000–10,000,000 美元 | 100,000–200,000,000 美元 |
| 微处理器价格 | 0.01–100 美元 | 10–100 美元 | 50–500 美元 | 200–2,000 美元 | 50–250 美元 |
| 系统设计的关键问题 | 价格、能耗、特定应用的性能 | 价格、能耗、媒体处理性能、响应能力 | 性价比、能耗、图形性能 | 吞吐量、可用性、可扩展性、能耗 | 性价比、吞吐量、功耗随负载成比例变化的能力（energy proportionality） |
{#fig-1.2 num="1.2" caption="五类主流计算环境及其系统特征" .wide .expand}

2021 年的销售量约为：20 亿台 PMD（其中 90% 为手机）、3.57 亿台 PC（其中 80% 为笔记本电脑）以及 1,300 万台服务器。嵌入式处理器的总销量约为 300 亿颗。2021 年，基于 ARM 技术的芯片出货量合计为 230 亿颗。请注意，服务器和嵌入式系统的价格跨度都很大，嵌入式设备可以从 U 盘一直到网络路由器。服务器价格跨度大的原因，是高端事务处理需要超大规模的多处理器系统。

## 物联网／嵌入式计算机

嵌入式计算机广泛存在于日常设备中：微波炉、洗衣机、大多数打印机、网络交换机，以及所有汽车。物联网（Internet of Things，IoT）指连接到互联网的嵌入式计算机，连接方式通常是无线的。配上传感器和执行器之后，IoT 设备能够收集有用的数据，并与物理世界交互，由此形成各种“智能”应用，例如智能手表、智能恒温器、智能音箱、智能汽车、智能家居、智能电网和智慧城市。

嵌入式计算机的处理能力与成本跨度最大，既包括价格可能低至 1 美分的 8 位至 32 位处理器，也包括用于汽车和网络交换机、价格达到 100 美元的高端 64 位处理器。尽管嵌入式计算市场的计算能力范围极广，价格始终是这一领域计算机设计中的关键因素。当然，性能要求也确实存在，但首要目标往往是以最低价格满足性能需求，而不是以更高价格换取更高性能。对 2025 年 IoT 设备出货量的预测在 300 亿至 400 亿台之间。

本书的大部分内容都适用于嵌入式处理器的设计、使用与性能分析，无论它们是现成的微处理器，还是将与其他专用硬件组合起来的微处理器核心。

遗憾的是，其他类别计算机赖以进行定量设计与评估的数据，向嵌入式计算领域的延伸还处于初期阶段，例如 1.9 节将介绍 EEMBC 所面临的挑战。因此，目前我们在这一领域还只能进行定性描述，这与本书其余部分的风格并不十分契合。为此，嵌入式计算的内容主要集中在附录 E。我们认为，单列附录既能使正文的论述更加连贯，又能让读者了解不同需求如何影响嵌入式计算。

<!-- source: p0025 -->

## 个人移动设备

我们用个人移动设备（personal mobile device，PMD）统称一类带有多媒体用户界面的无线设备，例如智能手机、功能手机、平板电脑、智能手表等。2021 年，PMD 的年收入规模最大，约为 5,000 亿美元。由于整个产品的零售价只有几百美元，成本是首要关注点。重视能效通常是因为设备依靠电池供电；不过，采用更便宜封装的需求——例如用塑料而非陶瓷封装——以及不使用散热风扇，也会限制整机功耗。1.5 节将更详细地讨论能耗与功率。PMD 上的应用通常以 Web 为基础，并以媒体处理为中心，前文提到的 Google Translate 就是一个例子。能耗与尺寸的要求使这些设备采用闪存（Flash memory，见第 2 章），而不是磁盘作为存储介质。

PMD 中的处理器常被视为嵌入式计算机，但我们将 PMD 单列为一类，因为它们是可以运行外部开发软件的平台，并且具有许多桌面计算机的特征。其他嵌入式设备在硬件和软件的复杂程度上都更受限制。我们以能否运行第三方软件，作为非嵌入式计算机与嵌入式计算机之间的分界。

响应能力与可预测性是媒体应用的关键特征。实时性能要求意味着，应用的某个部分具有不可超越的最长执行时间。例如，在 PMD 上播放视频时，每一帧的处理时间是有限的，因为处理器很快就必须接收并处理下一帧。某些应用的要求更为细致：不仅限制某项任务的平均执行时间，也限制超过某个最长时间阈值的次数。这类要求有时称为软实时（soft real-time），允许偶尔错过某个事件的时限，只要错过的次数不要太多。实时性能的要求往往高度依赖具体应用。

许多 PMD 应用的另一些关键需求，是尽量减少存储器容量，以及高效利用能量。电池供电和散热共同推动了能效要求。存储器可能占系统成本的相当大一部分，因此在这类系统中，优化存储器容量十分重要。数据规模由应用本身决定，所以对存储器容量的重视，进一步转化为对代码体积的重视。

## 桌面计算

2021 年，按销售额衡量，桌面计算市场的规模约为智能手机市场的一半。桌面计算覆盖了从售价不足 300 美元的低端上网本，到售价可能达到 2,500 美元、配置丰富的高端工作站。自 2008 年起，每年生产的桌面类计算机中，一半以上都是使用电池的笔记本电脑。2021 年，笔记本电脑占桌面类计算机销量的四分之三。

<!-- source: p0026 -->

在如此广泛的价格与能力范围内，桌面市场通常以优化性价比为目标。性能——主要指计算性能和图形性能——与系统价格的结合，是这一市场的客户最在意的因素，因此也是设计者最在意的因素。正因为如此，最新、性能最高的微处理器，以及经过成本优化的微处理器，往往最先出现在桌面系统中。影响计算机成本的因素将在 1.6 节讨论。

桌面计算的应用类型与基准测试通常也相对明确，不过，以 Web 为中心的交互式应用日益普及，正在给性能评估带来新的挑战。

## 服务器

20 世纪 80 年代，随着计算转向桌面，服务器的作用不断扩大，为用户提供规模更大、更可靠的文件与计算服务。这类服务器如今已经取代传统大型机，成为大规模企业计算的支柱。

对于服务器，重要的特征有所不同。首先，可用性至关重要，1.7 节将对此展开讨论。想一想为银行自动取款机或航空订票系统提供服务的服务器：这些服务器必须每周 7 天、每天 24 小时运行，这些服务器系统的失效远比一台桌面计算机的失效严重。[图 1.3](/book/ch01/02-classes/#fig-1.3) 估算了服务器应用因停机造成的收入损失。

第二个关键特征是可扩展性。随着服务需求增加，或功能要求扩大，服务器系统往往需要随之增长。因此，能够扩展服务器的计算能力、内存、存储容量和 I/O 带宽至关重要。

第三，服务器的成本目标是总拥有成本（total cost of ownership，TCO），而不只是购置价格。TCO 等于购置价格加上计算机整个使用期内的运行成本，后者包括电力、冷却、维护和占地空间的成本。关注 TCO 的原因包括：

- 服务器的使用寿命比桌面计算机长得多，通常为 5–8 年；
- 服务器消耗的电力远多于 PC；
- 服务器处理器的购置价格可能只占 TCO 的四分之一。

最后，服务器设计注重高效的吞吐能力。关键在于服务器的整体性能，例如每分钟处理的事务数，或每秒提供的网页数。单个请求的响应速度依然重要，但对于多数服务器，主要衡量指标是由单位时间处理请求的数量决定的整体效率和成本效益。1.9 节将再次讨论如何评估不同计算环境的性能。

<!-- source: p0027 -->

| 应用 | 每小时停机成本（美元） | 停机占比 1% 时的年损失（87.6 小时／年，美元） | 停机占比 0.5% 时的年损失（43.8 小时／年，美元） | 停机占比 0.1% 时的年损失（8.8 小时／年，美元） |
| --- | ---: | ---: | ---: | ---: |
| 证券经纪服务 | 4,000,000 | 350,400,000 | 175,200,000 | 35,000,000 |
| 能源 | 1,750,000 | 153,300,000 | 76,700,000 | 15,300,000 |
| 电信 | 1,250,000 | 109,500,000 | 54,800,000 | 11,000,000 |
| 制造业 | 1,000,000 | 87,600,000 | 43,800,000 | 8,800,000 |
| 零售 | 650,000 | 56,900,000 | 28,500,000 | 5,700,000 |
| 医疗保健 | 400,000 | 35,000,000 | 17,500,000 | 3,500,000 |
| 媒体 | 50,000 | 4,400,000 | 2,200,000 | 400,000 |
{#fig-1.3 num="1.3" caption="系统不可用带来的成本" .wide .expand}

通过分析停机成本，也就是立即损失的收入，可以估算系统不可用带来的损失，数值按最接近的 100,000 美元取整。这里假设三种不同的可用性水平，并假定停机时间均匀分布。数据引自 Landstrom（2014），由 Contingency Planning Research 收集并分析。

## 集群／仓库级计算机

搜索、社交网络、视频观看与分享、多人游戏、在线购物等应用中 SaaS 的增长，推动了一类称为集群（cluster）的计算机发展。集群通常由价格较低的服务器通过局域网连接而成，对外作为一台更大的计算机工作。每个节点运行自己的操作系统，节点间通过网络协议通信。WSC 是规模最大的集群，其设计目标是让数万台服务器能够协同成为一个整体。第 6 章将介绍这类规模极大的计算机。

由于规模庞大，性价比与功耗对 WSC 至关重要。如第 6 章所述，数据中心的大部分成本与其中计算机的供电和冷却有关。由于计算机和网络设备通常每隔几年就要更换，一座 WSC 的这些设备每年摊销的成本约为 5,000 万美元。当采购如此庞大的计算能力时，必须精打细算：性价比提高 10%，就意味着每座 WSC 每年节省 500 万美元，即 5,000 万美元的 10%。而像 Amazon 这样的公司，可能拥有超过 100 座 WSC！

WSC 与服务器有一个共同点：可用性都至关重要。例如，Amazon.com 在 2023 年的销售额为 5,750 亿美元。一年约有 8,760 小时，因此平均每小时收入约为 6,600 万美元。圣诞购物高峰时段一小时内可能损失的收入，还会高出许多倍。如第 6 章所述，WSC 与服务器的不同之处在于，WSC 采用冗余、廉价的组件作为基本构件，并依靠软件层检测和隔离在这种计算规模下必然大量发生的故障，从而提供应用所需的可用性。还要注意，WSC 的可扩展性由连接各台计算机的局域网来实现，而不像服务器那样由集成的计算机硬件实现。

<!-- source: p0028 -->

超级计算机与 WSC 也有相似之处：它们同样昂贵，造价高达数亿美元。不过，超级计算机侧重浮点性能，运行的是通信密集的大型批处理程序，一次可能持续数周。它们通常采用高带宽、低延迟的互连网络。相比之下，WSC 更注重交互式应用、大规模存储、标准局域网、可信赖性以及高互联网带宽。

## 并行性的类别与并行体系结构

在所有四类计算机[^class-count]中，多个层次上的并行性如今都成为计算机设计的驱动力，而能耗与成本是主要约束。应用中基本存在两种并行性：

1. **数据级并行性（DLP）**：有许多数据项可以同时处理。
2. **任务级并行性（task-level parallelism，TLP）**：工作被组织为可以独立、并且大体上并行执行的任务。[^tlp]

相应地，计算机硬件可以通过四种主要方式利用应用中的这两种并行性：

1. **指令级并行性（ILP）**：在编译器的帮助下，利用流水线等方法挖掘较小规模的 DLP，并利用推测执行等方法挖掘中等规模的 DLP。
2. **向量体系结构、图形处理器（GPU）和多媒体指令集**：把一条指令并行地应用于一组数据，从而利用 DLP。
3. **线程级并行性（TLP）**：在允许并行线程相互交互的紧耦合硬件模型中，利用 DLP 或任务级并行性。
4. **请求级并行性（RLP）**：利用程序员或操作系统所指定的、相互之间基本解耦的任务之间的并行性。

Flynn（1966）研究 20 世纪 60 年代的并行计算工作时，提出了一种简单分类，其缩写至今仍在使用。这些类别针对 DLP 和 TLP。Flynn 考察多处理器中约束最强的部件上，指令流以及指令所需数据流的并行性，将所有计算机分为以下四类：

<!-- source: p0029 -->

1. **单指令流、单数据流（single instruction stream, single data stream，SISD）**。这一类就是单处理器。程序员把它看作标准的顺序计算机，但它也可以利用 ILP。第 3 章将介绍采用超标量和推测执行等 ILP 技术的 SISD 体系结构。
2. **单指令流、多数据流（single instruction stream, multiple data streams，SIMD）**。多个处理器对不同数据流执行同一条指令。SIMD 计算机通过对多个数据项并行执行相同操作来利用 DLP。在早期 SIMD 计算机中，每个处理器都有自己的数据存储器，因此称为“多数据流”；但整个系统只有一个指令存储器和一个控制处理器，由后者取出并分发指令。较新的 SIMD 计算机则从一个共享存储器中一次取出多个数据项。第 4 章将讨论 DLP，以及利用它的三种不同体系结构：向量体系结构、标准指令集的多媒体扩展和 GPU。
3. **多指令流、单数据流（multiple instruction streams, single data stream，MISD）**。迄今尚未出现这种类型的成功商用多处理器，但它使这一简单分类完整起来。
4. **多指令流、多数据流（multiple instruction streams, multiple data streams，MIMD）**。每个处理器取出自己的指令，并操作自己的数据，主要利用 TLP。总体而言，MIMD 比 SIMD 更灵活，适用范围也更广，但其固有成本高于 SIMD。例如，MIMD 计算机也能利用 DLP，但开销很可能高于 SIMD 计算机。这意味着并行任务的粒度必须足够大，才能高效地利用并行性。第 5 章将讨论紧耦合的 MIMD 体系结构，它们通过让多个相互协作的线程并行运行来利用 TLP。第 6 章将讨论松耦合的 MIMD 体系结构，具体包括集群和仓库级计算机，它们利用 RLP，让许多独立任务自然地并行推进，而基本不需要通信或同步。

这种分类只是一个粗略模型，因为许多并行处理器实际上是 SISD、SIMD 与 MIMD 的混合体。尽管如此，它仍然有助于为本书将要介绍的计算机建立一个设计空间的基本框架。

[^class-count]: 译注：原文此处为“四类”，但本节开头与[图 1.2](/book/ch01/02-classes/#fig-1.2) 均列出五类。
[^tlp]: 译注：原文同时用 TLP 缩写 task-level parallelism（任务级并行性）和 thread-level parallelism（线程级并行性）。二者在此不是同一概念，译文用完整中文名称区分。
