# 案例与习题
作者：Gregory D. Peterson。

> 译校说明：题号、方括号内的难度标记及尖括号内的章节引用均沿用原书。部分章节引用与本版正文位置不完全一致；例如题目中涉及 Amdahl 定律的若干引用仍写为〈1.9〉，本版相关内容实际在 1.10 节。

<!-- source: p0096 -->

## 案例一：芯片制造的发展趋势

本案例涉及的概念：

- 制造成本
- 制造良率
- 利用冗余容忍缺陷

<!-- source: p0097 -->

尽管半导体制造正逼近物理学的基本极限，各公司仍在持续建设制造设施，以跟上 Moore 定律的步伐。每座新晶圆厂的成本都达数百亿美元；要制造新一代计算机芯片，还需要一系列相关技术共同取得进展。这些挑战直接影响能否造出性能更高的芯片，以及芯片的价格。本案例将探讨芯片设计中的一些决策，分析它们如何影响性能、良率、冗余和成本。

### 习题 1.1 {#exercise-1-1}

**[10/10/10/10/10/10]〈1.6〉** [图 1.28](/book/ch01/15-exercises/#fig-1.28) 给出了影响 GPU 和 CPU 芯片成本的一组假设数据。接下来的几道题将探讨不同设计决策对这些芯片的影响。

| 芯片 | 裸片面积（mm²） | 估计缺陷密度（每 cm²） | N | 工艺尺寸（nm） | 晶体管数（十亿） | 核心数或 SM 数 |
| --- | --- | --- | --- | --- | --- | --- |
| GPU A | 800 | 0.011 | 36 | 4 | 80 | 132 |
| GPU B | 2 × 850 | 0.011 | 37 | 4 | 210 | 160 |
| CPU A | 270 | 0.011 | 36 | 4 | 16 | 8 |
| CPU B | 12 × 75（计算）<br>1 × 400（I/O） | 0.010<br>0.010 | 35<br>34 | 5<br>6 | 90 | 96 |
{#fig-1.28 num="1.28" caption="假设的 GPU 和 CPU 的制造成本影响因素。" .wide .expand}

a. **[10]〈1.6〉** 对于一片合格晶圆，GPU A 芯片的良率是多少？

b. **[10]〈1.6〉** 对于一片合格晶圆，CPU A 芯片的良率是多少？

c. **[10]〈1.6〉** GPU B 将两个大型 chiplet 集成为一个封装系统。对于一片合格晶圆，每个 GPU B chiplet 的良率是多少？

d. **[10]〈1.6〉** CPU B 将多个不同的 chiplet 集成为一个封装系统。其中，12 个用于计算任务的 chiplet 采用较小的工艺尺寸制造，另有一个用于 I/O 任务的 chiplet 采用较大的工艺尺寸。假设晶圆合格，构成 CPU B 的计算 chiplet 与 I/O chiplet 的良率各是多少？

e. **[10]〈1.6〉** 假设 GPU B 不采用 chiplet，而是制造成一块更大的单片芯片。此时的良率与原方案相比如何？你还能想到哪些使用 chiplet 更有利的理由？

f. **[10]〈1.6〉** 假设 CPU B 不采用 chiplet，而是使用较小的工艺节点制造成一块更大的单片芯片，并假定在较小工艺节点下 I/O 功能仍占用相同面积。此时的良率与原方案相比如何？

### 习题 1.2 {#exercise-1-2}

**[20/20/20/25/25]〈1.6〉** 考虑制造上述各类芯片的工厂。我们希望评估应为每类芯片分配多少产能。假设每颗无缺陷的 GPU A 芯片可获得 1000 美元利润，
<!-- source: p0098 -->
每颗无缺陷的 CPU A 芯片可获得 100 美元利润。对每类芯片，都假设晶圆直径为 300 mm。

a. **[20]〈1.6〉** 每片用于制造 GPU A 芯片的晶圆可获得多少利润？

b. **[20]〈1.6〉** 每片用于制造 CPU A 芯片的晶圆可获得多少利润？

c. **[20]〈1.6〉** 如果每月需求最多为 5000 颗 GPU A 和 3000 颗 CPU A，而工厂每月能加工 90 片晶圆，应为两类芯片各分配多少片晶圆？

d. **[25]〈1.6〉** 假设每个无缺陷的 GPU B 产品可获得 2500 美元利润，且每个产品需要两个 chiplet。每片用于制造 GPU B chiplet 的晶圆可获得多少利润？

e. **[25]〈1.6〉** 假设每个无缺陷的 CPU B 产品可获得 75 美元利润，每个产品需要 12 个计算 chiplet 和一个 I/O chiplet。每片用于制造 CPU B 计算 chiplet 的晶圆，能支持销售多少个 CPU B 产品？每加工一片计算 chiplet 晶圆，需要配套加工多少片 I/O chiplet 晶圆？如果工厂能加工 30 片这类晶圆，应如何在计算 chiplet 与 I/O chiplet 之间分配，才能使利润最大？最大利润是多少？

### 习题 1.3 {#exercise-1-3}

**[20/5]〈1.6〉** 对于良率较低的大型处理器芯片，与其丢弃功能不完整的芯片，不如降价出售，以提高经济效益。某些产品可以按照不同核心数出售多个版本，这些版本也称为库存单位（stock keeping unit，SKU）。例如，可以销售分别包含 8、4、2、1 个核心的 CPU A 芯片。如果全部八个核心均无缺陷，就作为 CPU A8 出售；如果四至七个核心无缺陷，就作为 CPU A4 出售；如果两至三个核心无缺陷，就作为 CPU A2 出售。

为简化计算，用面积为原 CPU A 芯片 1/8 的芯片良率，作为单个核心的良率。再将该良率视为单个核心无缺陷的独立概率。每种配置的良率，则按相应数量核心无缺陷的概率计算。

a. **[20]〈1.6〉** 单个核心无缺陷的良率，以及 CPU A4、CPU A2 和 CPU A1 的良率各是多少？

b. **[5]〈1.6〉** 根据（a）的结果，你认为哪些芯片值得封装并出售？说明理由。

### 习题 1.4 {#exercise-1-4}

**[20/5/25]〈1.6〉** 现在考虑用冗余提高 GPU 良率的类似方法。假设 GPU B 由两个 chiplet 构成，每个 chiplet 包含 85 个对称多处理器（原文为 symmetric multiprocessors，SM），相当于 GPU 中的核心。进一步假设，要交付一个包含 160 个 SM 的产品，需要两个可用的 GPU chiplet；每个 chiplet 最多可以有五个 SM 存在缺陷。

与习题 1.3 对 CPU A 的处理相同，以面积为原 GPU B chiplet 的 1/85 的 chiplet 良率，作为单个 SM 的良率。
<!-- source: p0099 -->
同样，将该良率视为单个 SM 无缺陷的独立概率。再以至少 80 个 SM 无缺陷的概率，计算整个 chiplet 的良率。

> 译注：本题原文将 SM 展开为 symmetric multiprocessors；GPU 语境下通常所指的名称为 Streaming Multiprocessor。

a. **[20]〈1.6〉** 单个 SM 无缺陷的良率，以及每个 GPU B chiplet 的良率各是多少？

b. **[5]〈1.6〉** 根据（a）的结果，每片用于制造 GPU B chiplet 的晶圆能获得多少利润？与习题 1.2（d）的结果相比如何？

c. **[25]〈1.6〉** 对 GPU A 也可以作类似分析：假设每块裸片有 144 个 SM，而只要至少 132 个 SM 正常工作，芯片就可以出售。这样的冗余会如何影响每片晶圆的利润？它又会如何改变习题 1.2（c）的答案？

## 案例二：可扩展计算机系统

本案例涉及的概念：

- Amdahl 定律
- 冗余
- 平均失效前时间（MTTF）

现代系统的规模从微型物联网设备延伸到数据中心和超级计算机。以下习题讨论影响这些系统的实际问题，包括成本、功率与能耗，以及性能随规模的扩展。

大型可扩展计算机系统通常通过提高作业吞吐量（同时处理许多作业）、降低延迟（尽快完成任务），或兼顾两者，来获得高性能。利用并行性是提高性能的重要方法，适用于各种规模：从增加处理器内部的核心数，到增加服务器或节点内的处理器数、插槽数，再到增加数据中心或超级计算机中的服务器数、节点数。

### 习题 1.5 {#exercise-1-5}

**[10/20/20/20/25]〈1.10〉** 将应用程序并行化时，理想加速比应等于处理器数量。实际上，加速比受两方面限制：程序中可并行化部分的比例，以及通信成本等额外开销。Amdahl 定律考虑了前者，却没有考虑后者。

a. **[10]〈1.10〉** 如果应用程序中可并行化的比例分别为 [80%、90%、95%、99%]，忽略通信成本时，使用 N 个处理器的加速比各是多少？

b. **[20]〈1.10〉** 如果每增加一个处理器，通信开销就增加原始执行时间的 [0.5%、1%、2%、5%]，使用 32 个处理器的加速比各是多少？

<!-- source: p0100 -->

c. **[20]〈1.10〉** 如果处理器数量每翻一倍，通信开销就增加原始执行时间的 [0.5%、1%、2%、5%]，使用 32 个处理器的加速比各是多少？

d. **[20]〈1.10〉** 如果处理器数量每翻一倍，通信开销就增加原始执行时间的 [0.5%、1%、2%、5%]，使用 N 个处理器的加速比各是多少？

e. **[25]〈1.10〉** 写出求解下列问题的一般方程：若应用程序原始执行时间中有 P% 可以并行化，而处理器数量每翻一倍，通信开销就增加原始执行时间的 [0.5%、1%、2%、5%]，那么使用多少个处理器才能获得最大的加速比？

### 习题 1.6 {#exercise-1-6}

**[10/20/20/20]〈1.10〉** 在习题 1.5 中，各种并行执行方案所处理的问题规模相同，这称为强扩展（strong scaling）。在弱扩展（weak scaling，有时也称为 Gustafson 定律）中，问题规模随处理器数量增加而增大。下面考虑一个采用弱扩展的应用程序的性能，即扩展加速比，同时考虑串行应用程序（基准）中被并行化部分的比例和通信成本。

a. **[10]〈1.10〉** 如果串行应用程序中可并行化的比例分别为 [80%、90%、95%、99%]，忽略通信成本，并假定其余方面都能随处理器数量增加而理想扩展，使用 N 个处理器的扩展加速比各是多少？

b. **[20]〈1.10〉** 如果每增加一个处理器，通信开销就增加原始执行时间的 [0.5%、1%、2%、5%]，使用 32 个处理器的扩展加速比各是多少？

c. **[20]〈1.10〉** 如果处理器数量每翻一倍，通信开销就增加原始执行时间的 [0.5%、1%、2%、5%]，使用 32 个处理器的扩展加速比各是多少？

d. **[20]〈1.10〉** 如果处理器数量每翻一倍，通信开销就增加原始执行时间的 [0.5%、1%、2%、5%]，使用 N 个处理器的扩展加速比各是多少？

### 习题 1.7 {#exercise-1-7}

**[讨论]〈1.9、1.10〉** 世界上规模最大的超级计算机所参加的 Top 500 榜单（top500.org），使用稠密线性代数程序 High Performance LINPACK（HPL）作为基准测试，报告系统实际达到的每秒浮点运算次数（FLOPS）以及理论峰值 FLOPS。该榜单也使用稀疏线性代数程序 High Performance Conjugate Gradient（HPCG），同样报告实际达到的 FLOPS。根据 2024 年 6 月的榜单，排名靠前的计算机在 HPL 上平均达到了峰值 FLOPS 的约 70%，但在 HPCG 上还不到峰值的 2%。

<!-- source: p0101 -->

a. 能否将 Top 500 的 HPL 或 HPCG 结果换算为加速比或扩展加速比？请说明理由。

b. 将这些 Top 500 结果与[图 1.26](/book/ch01/12-fallacies-pitfalls/#fig-1.26) 所示超级计算机运行科学计算程序时报告的结果进行比较。

c. 2024 年，一项研究在当时位列 Top 500 榜首的 Frontier 上开展机器学习训练，报告称实际达到了理论每秒运算次数的 32%–38%。[^training] 研究还报告，训练程序的扩展加速比（弱扩展）接近 100%，加速比（强扩展）为 87%–89%。这些结果与（a）、（b）中的情况相比如何？

> 译注：（c）原文直接用百分数表述 speedup 与 scaled speedup，未在题干中说明这些百分数的归一化基准。

[^training]: 原书脚注：见 https://arxiv.org/pdf/2312.12705.pdf 。

### 习题 1.8 {#exercise-1-8}

**[10/10/20/20]〈1.10〉** 你需要为一个包含 64 个核心的新处理器优化混合应用的性能。处理器上将运行四个应用程序，但它们对资源的需求并不相同。假设系统和应用程序具有[图 1.29](/book/ch01/15-exercises/#fig-1.29) 所列的特征。你可以针对图中彼此独立的 A–D 场景中的任意一个或全部场景求解。图中的资源占比表示：如果四个应用程序（1–4）全部串行运行，每个应用程序的执行时间在总执行时间中所占的比例。假设将程序的一部分按 X 倍并行化，这一部分的加速比就是 X。

| 场景 | 指标 | 应用程序 1 | 应用程序 2 | 应用程序 3 | 应用程序 4 |
| --- | --- | --- | --- | --- | --- |
| A | 所需资源占比（%） | 35 | 31 | 20 | 14 |
| A | 可并行化比例（%） | 50 | 80 | 60 | 90 |
| B | 所需资源占比（%） | 41 | 28 | 17 | 14 |
| B | 可并行化比例（%） | 90 | 60 | 80 | 50 |
| C | 所需资源占比（%） | 37.5 | 25 | 22 | 15.5 |
| C | 可并行化比例（%） | 80 | 90 | 50 | 60 |
| D | 所需资源占比（%） | 50 | 25 | 12.5 | 12.5 |
| D | 可并行化比例（%） | 60 | 50 | 90 | 80 |
{#fig-1.29 num="1.29" caption="四个应用程序。" .wide .expand}

a. **[10]〈1.10〉** 与串行运行相比，让应用程序 1 使用整个处理器运行，能获得多大加速比？

<!-- source: p0102 -->

b. **[10]〈1.10〉** 与串行运行相比，让应用程序 4 使用整个处理器运行，能获得多大加速比？

c. **[20]〈1.10〉** 按照应用程序 1 所需资源的比例，将相同比例的核心静态分配给它。如果只有应用程序 1 并行运行，其余应用程序仍串行运行，总体加速比是多少？

d. **[20]〈1.10〉** 如果按照四个应用程序各自的资源需求比例，分别为它们静态分配一定数量的核心，并让它们全部并行运行，总体加速比是多少？

### 习题 1.9 {#exercise-1-9}

**[10/10/20/20]〈1.7〉** 设计服务器时，可用性是最重要的考虑因素，紧随其后的是可扩展性和吞吐量。

a. **[10]〈1.7〉** 一个单处理器的 FIT 值为 100。该系统的平均失效前时间（MTTF）是多少？

b. **[10]〈1.7〉** 如果需要一天才能使系统恢复运行，其可用性是多少？

c. **[20]〈1.7〉** 假设政府为降低成本，计划用廉价计算机构建超级计算机，而不采用价格昂贵、可靠性高的计算机。包含 1000 个处理器的系统，其 MTTF 是多少？假设其中一个处理器失效，整个系统就会失效。

d. **[20]〈1.7〉** 最大的超级计算机可以包含 10,000 个甚至更多节点，每个节点又有多个处理器或加速器。如果系统共有 50,000 个处理器，且可靠性特征与上述相同，其 MTTF 是多少？在这种情况下，在发生一次失效之前，我预计能够完成的作业，其最长运行时间是多少？

### 习题 1.10 {#exercise-1-10}

**[20/20/20]〈1.2、1.7〉** 在云服务提供商使用的这类服务器集群中，单个设备失效不会使整个系统崩溃，而是减少系统在任一时刻能够响应的请求数。

a. **[20]〈1.7〉** 如果一家公司有 10,000 台计算机，每台计算机的 MTTF 为 35 天，只有在 1/3 的计算机失效时才发生灾难性的系统失效，那么系统的 MTTF 是多少？

b. **[20]〈1.2、1.7〉** 假设停机每小时造成 100,000 美元损失，系统崩溃后需要一天才能恢复运行。每年因停机造成的损失是多少？

c. **[20]〈1.2、1.7〉** 假设停机每小时造成 100,000 美元损失，系统崩溃后需要一天才能恢复运行。如果每台计算机额外投入 1000 美元，就能使 MTTF 翻倍，这是否是一个好的商业决策？假设计算机的使用寿命为三年。

<!-- source: p0103 -->

## 案例三：计算机系统的能耗与功率

本案例涉及的概念：

- 动态能耗
- 功耗

现代系统的功耗取决于多种因素，包括芯片的时钟频率、效率和电压。以下习题探讨不同设计决策及使用场景对功率和能耗的影响。

### 习题 1.11 {#exercise-1-11}

**[10/10/10/10]〈1.5、1.9〉** 手机承担的任务差异很大，包括播放流媒体音乐或视频、阅读电子邮件，以及日益增多的图像识别、语音识别等机器学习任务。用户要求手机具备较长的电池续航时间，因此降低功率和能耗至关重要。

本题考虑一个不符合现实的场景：手机没有专用处理单元，只配备一个四核通用处理单元。每个核心满负荷运行时消耗 0.5 W 功率。对于要完成的任务，这个四核处理器的速度是所需速度的八倍。

a. **[10]〈1.5〉** 与满功率运行相比，需要多少动态能量和动态功率？先假设四核处理器只运行 1/8 的时间，其余时间空闲，即在 7/8 的时间内关闭时钟，并假定这段时间内没有漏电。比较总动态能耗，以及核心运行期间的动态功率。

b. **[10]〈1.5〉** 如果采用频率和电压调节，需要多少动态能量和动态功率？假设在整个期间内，频率和电压都降至原来的 1/8。

c. **[10]〈1.5、1.9〉** 现在假设电压不能降到原电压的 50% 以下。这个电压称为电压下限（voltage floor）；低于该电压，状态就会丢失。因此，频率可以继续下降，电压却不能继续下降。在这种情况下，动态能耗和动态功率分别能节省多少？

d. **[10]〈1.5〉** 采用 dark silicon（暗硅）方案时，会消耗多少能量？这种方案为每项主要任务设置专用 ASIC 硬件，并在不使用时通过电源门控将其关闭。芯片只保留一个通用核心，其余面积都用于专用单元。对于电子邮件这类任务，通用核心运行 25% 的时间，在其余 75% 的时间内通过电源门控完全关闭。在这 75% 的时间内，一个能耗仅为通用核心 20% 的专用 ASIC 单元运行，完成语音识别等任务。

<!-- source: p0104 -->

### 习题 1.12 {#exercise-1-12}

**[10/10/10]〈1.5〉** 如习题 1.11 所述，手机会运行各种各样的应用程序。这里沿用之前的假设：每个核心的功率为 0.5 W。

a. **[10]〈1.5〉** 假设 80% 的代码可以并行化。要使单个核心达到四路并行代码的执行速度，其频率和电压需要提高多少？

b. **[10]〈1.5〉** 在（a）中采用频率和电压调节，能够减少多少动态能耗？

> 译注：（a）原文要求提高单核的频率与电压，（b）仍使用“减少动态能耗”（reduction in dynamic energy）的问法。题干并不保证计算所得一定是节能。

c. **[10]〈1.5〉** 采用 dark silicon 方案时，会消耗多少能量？这种方案对所有硬件单元使用电源门控，使其可以完全关闭，且不产生漏电。系统提供专用 ASIC，以通用处理器 20% 的功率完成相同的计算。假设每个核心都支持电源门控，图像识别这类任务需要两个 ASIC 和两个核心。与使用四个核心并行运行的基准方案相比，需要多少动态能量？

### 习题 1.13 {#exercise-1-13}

**[10/10/10/10/10/20]〈1.5、1.9〉** 通用处理器针对通用计算进行优化，因此能在大量应用程序上表现良好。不过，一旦把应用领域适当缩小，经过优化的功能单元或专用处理器就可以更加高效。借助 ASIC 或 GPU 等专用硬件，许多机器语言操作能够并发执行。本题从性能和散热两方面，探讨通用处理器与 GPU 之间的权衡。如果不能有效地将热量从计算机中排出，风扇吹回计算机的就会是热风，而不是冷风。

注意：两种方案的区别不只在处理器，片上存储器和 DRAM 也会产生影响。因此，这里的统计数据针对系统，而不是芯片。

| 系统 | 热设计功耗（TDP） | 空闲功率 | 繁忙时功率 |
| --- | --- | --- | --- |
| 基于 CPU | 504 W | 159 W | 455 W |
| 基于 GPU | 1838 W | 357 W | 991 W |
{#fig-1.30 num="1.30" caption="基于通用处理器或 GPU 的系统的硬件特征，包括实测功率。" .wide .expand}

| 系统 | 吞吐量 A | 吞吐量 B | 吞吐量 C | A：最大 IPS 的百分比 | B：最大 IPS 的百分比 | C：最大 IPS 的百分比 |
| --- | --- | --- | --- | --- | --- | --- |
| 基于 CPU | 5482 | 13,194 | 12,000 | 42% | 100% | 90% |
| 基于 GPU | 13,461 | 36,465 | 15,000 | 37% | 100% | 40% |
{#fig-1.31 num="1.31" caption="基于通用处理器或 GPU 的系统在两个神经网络工作负载上的性能特征。工作负载 A、B 来自已发表的结果；工作负载 C 是虚构的、更偏通用计算的应用程序。" .wide .expand}

> 译注：[图 1.31](/book/ch01/15-exercises/#fig-1.31) 的原表没有注明吞吐量的单位，译表不作补充。

a. **[10]〈1.9〉** 如果一个数据中心使用 CPU 时，有 70% 的时间运行工作负载 A，30% 的时间运行工作负载 B，那么 GPU 系统相对于 CPU 系统的加速比是多少？

b. **[10]〈1.9〉** 如果一个数据中心使用 CPU 时，有 70% 的时间运行工作负载 A，30% 的时间运行工作负载 B，那么三个系统各自能达到最大 IPS 的百分之多少？

c. **[15]〈1.5、1.9〉** 在（b）的基础上，假设当 IPS 从最大值的 0% 增加到 100% 时，功率从空闲功率线性增加到繁忙时功率。CPU 系统与 GPU 系统的每瓦性能相比如何？

d. **[10]〈1.9〉** 如果另一个数据中心有 40% 的时间运行工作负载 A，10% 的时间运行工作负载 B，50% 的时间运行工作负载 C，那么 GPU 系统相对于通用处理器系统的加速比是多少？

e. **[10]〈1.5〉** 假设一个机架冷却门售价 4000 美元，能够排出 14 kW 的热量。热量只是排到了机房内，要将其排出机房还需额外投入。按照[图 1.30](/book/ch01/15-exercises/#fig-1.30) 和[图 1.31](/book/ch01/15-exercises/#fig-1.31) 中的 TDP，一个冷却门能为多少台基于 CPU 或基于 GPU 的服务器散热？

<!-- source: p0105 -->

f. **[20]〈1.5〉** 典型服务器集群每平方英尺最多能够散去 200 W 热量。已知一个服务器机架占用 11 平方英尺，包括前后预留空间，那么（e）中的服务器在一个机架内最多能放多少台？需要多少个冷却门？

> 译注：原文（b）写“三个系统”，但[图 1.30](/book/ch01/15-exercises/#fig-1.30)、1.31 只列出 CPU、GPU 两类系统；（e）引用两幅图的 TDP，但 TDP 只列于[图 1.30](/book/ch01/15-exercises/#fig-1.30)。题首第三项难度标记为 [10]，而（c）标为 [15]。以上均保留原书差异。

## 习题

### 习题 1.14 {#exercise-1-14}

**[15/10]〈1.9〉** 假设我们对一台计算机作了改进，使某种执行模式的速度提高到原来的十倍。测量启用改进模式之后的执行时间，发现其中有 50% 的时间使用了这种改进模式。注意，Amdahl 定律所需的是：在**改进前的原始执行时间**中，能够使用改进模式的那一部分所占的比例。因此，不能直接将测得的 50% 代入 Amdahl 定律计算加速比。

a. **[15]〈1.9〉** 这种快速模式带来的总体加速比是多少？

b. **[10]〈1.9〉** 原始执行时间中有百分之多少被转换成了快速模式？

### 习题 1.15 {#exercise-1-15}

**[20/10/10/15]〈1.9〉** 假设我们考虑改进一个基于 chiplet 的多核处理器，用一个加密硬件 chiplet 替换一个计算核心 chiplet。执行加密操作时，它的速度是正常执行模式的 20 倍。定义“加密占比”为：原始执行时间中用于加密操作的时间比例。

a. **[20]〈1.9〉** 绘制加速比随加密计算占比变化的曲线。纵轴标注“净加速比”，横轴标注“加密占比”。

<!-- source: p0106 -->

b. **[10]〈1.9〉** 加密占比达到多少时，增加加密硬件能获得 2 倍加速比？

c. **[10]〈1.9〉** 如果获得了 2 倍加速比，在新的执行时间中，加密操作占多少比例？

d. **[15]〈1.9〉** 假设失去一个计算核心 chiplet 会使其他计算的性能下降 10%。加密单元的使用比例至少达到多少，才值得这样做？

### 习题 1.16 {#exercise-1-16}

**[20/20/15]〈1.9〉** 对处理器的一部分进行优化时，常常会出现这样的情况：一种指令加快了，其他方面却变慢了。例如，加入一个复杂而快速的浮点单元会占用空间；为了容纳它，可能必须把其他单元移到离中央更远的位置，导致访问那个单元的延迟增加一个周期。基本的 Amdahl 定律方程并没有考虑这种权衡。

a. **[20]〈1.9〉** 如果新的快速浮点单元使浮点运算的平均速度变为原来的 2 倍，而浮点运算占程序原始执行时间的 20%，忽略对其他指令的影响，总体加速比是多少？

b. **[20]〈1.9〉** 现在假设加快浮点单元使数据缓存访问变慢，耗时增加到原来的 1.5 倍，即加速比为 2/3。数据缓存访问占执行时间的 10%。此时的总体加速比是多少？

c. **[15]〈1.9〉** 实现新的浮点运算之后，浮点运算占执行时间的百分之多少？数据缓存访问又占多少？

### 习题 1.17 {#exercise-1-17}

**[10/10/20/20]〈1.5〉** 云计算提供商等机构的服务器集群，必须提供足以应对一天中请求率峰值的计算能力。假设这些服务器在大多数时间里只使用 60% 的容量。进一步假设功率不会随负载线性变化：服务器在 60% 容量下运行时，仍消耗最大功率的 90%。虽然可以关闭一部分服务器，但负载增加时，重启需要的时间太长。现在有人提出一种新系统，可以快速重启，不过处于这种“最低维持运行”状态时，仍需消耗最大功率的 20%。

a. **[10]〈1.5〉** 关闭 40% 的服务器，能节省多少功率？

b. **[10]〈1.5〉** 让 40% 的服务器进入“最低维持运行”状态，能节省多少功率？

c. **[20]〈1.5〉** 将电压降低 20%、频率降低 20%，能节省多少功率？

d. **[20]〈1.5〉** 让 20% 的服务器进入“最低维持运行”状态，再关闭 20% 的服务器，能节省多少功率？

<!-- source: p0107 -->

### 习题 1.18 {#exercise-1-18}

**[10/10/10/10/5]〈1.5〉** 对于必须在规定截止时间前完成任务的实时系统，更早完成计算并没有额外收益。考虑一个物联网系统，即使在最坏情况下，执行所需代码的速度仍是必要速度的两倍。

a. **[10]〈1.5〉** 如果按当前速度执行，并在计算完成后关闭系统，能节省多少能量？

b. **[10]〈1.5〉** 如果把电压和频率都降为原来的一半，能节省多少能量？

c. **[10]〈1.5〉** 考虑另一个物联网系统：核心数多 50%，功率高 30%。如果按当前速度执行，并在计算完成后关闭系统，其能耗与（a）相比如何？

d. **[10]〈1.5〉** 仍考虑这个核心数多 50%、功率高 30% 的物联网系统。如果将电压和频率都降为原来的三分之一，其能耗与（c）相比如何？

e. **[5]〈1.5〉** 是否值得使用核心数更多的这个物联网系统？为什么？

### 习题 1.19 {#exercise-1-19}

**[10/15/15/10/10]〈1.4、1.5〉** 体系结构设计者面临的一个挑战是：今天完成的设计，要经过数年的实现、验证与测试才能上市。这意味着设计者必须提前数年预测技术的发展状况，而这种预测有时很难做。

a. **[10]〈1.4〉** 按照 Moore 定律在历史上体现出的器件缩放趋势，2030 年一颗芯片上的晶体管数应该是 2020 年的多少倍？

b. **[15]〈1.5〉** 性能提升曾经与这一趋势相吻合。如果性能继续按 20 世纪 90 年代的速度增长，那么到 2030 年，芯片的性能大约应是 VAX-11/780 的多少倍？

c. **[15]〈1.5〉** 如果按 2010 年代末至 2020 年代初的增长速度计算，对 2030 年性能的较新预测是多少？

d. **[10]〈1.4〉** 什么因素限制了时钟频率的增长？体系结构设计者现在怎样利用额外的晶体管来提高性能？

e. **[10]〈1.4〉** DRAM 容量的增长也放缓了。曾经连续 20 年，DRAM 容量每年提高 60%。如果 8 Gb DRAM 于 2014 年首次出现，而 16 Gb DRAM 到 2019 年才出现，那么这一阶段 DRAM 容量的年增长率是多少？

### 习题 1.20 {#exercise-1-20}

**[10/5/10/5/10]〈1.2〉** 本题通过考察[图 1.22](/book/ch01/11-performance-price-power/#fig-1.22) 中两种相近的服务器配置，探讨计算机系统的总拥有成本（TCO）。

<!-- source: p0108 -->

a. **[10]〈1.2〉** 假设两台服务器的工作负载都由 70% 的整数运算和 30% 的浮点运算组成。根据[图 1.22](/book/ch01/11-performance-price-power/#fig-1.22) 中各服务器的 SPEC 整数与浮点吞吐率，哪一台性能更好？

b. **[5]〈1.2〉** 根据（a）的结果，两台服务器在该工作负载下的性价比如何？

c. **[10]〈1.2〉** 假设两台服务器都在 60% 的时间里处于繁忙状态，其余时间空闲。繁忙时消耗电源额定功率上限的 90%，空闲时仅消耗上限的 30%。每台服务器一年的能耗是多少？

d. **[5]〈1.2〉** 假设连续使用 1 W 功率一年的费用为 1 美元。根据（c）的结果，每台服务器每年的用电费用是多少？

e. **[10]〈1.2〉** 假设服务器使用寿命为五年，把购置成本与每年用电费用都考虑在内，每年的成本各是多少？如果使用寿命改为六年或七年，结果会怎样变化？每台服务器整个使用寿命内的总成本是多少？

> 译注：原文（c）将一年内的消耗称为 power，此处按量纲译为“能耗”；（d）的条件是每瓦持续使用一年的费用，不是每瓦时的电价。
