---
# System prepended metadata

title: Amdahl's Law 阿姆達爾定律
tags: [Computer Organization]

---

# Amdahl's Law 阿姆達爾定律


> [name=K.Wei] [color=gray]

## 概述

阿姆達爾定律可以用來評估「改善系統」的效率。

## 先備知識

- 假設一部影片 10 分鐘。我用兩倍速觀看，只需5分鐘。
- 假設所需時間 T ，速度提升 S 倍。則提速後時間只需要 $\dfrac{T}{S}.$
- $\text{Rate} = \dfrac{ 1 }{ \text{Time} }$
- 一點點數學

## 原理

- 假設系統優化後提升 S 倍。

$$
\begin{array}{ll}
&\displaystyle{ \text{New Time} = \dfrac{ \text{Old Time} }{ \text{Speedup }S } }
\\\\
\Rightarrow & \displaystyle{ \text{Speedup }S = \dfrac{\text{Old Time}}{ \text{New Time} } = \dfrac{ \text{New Rate} }{ \text{Old Rate} } }
\end{array}
$$

## 推導（可以不用看）

- 假設系統由 $n$ 個部分組成，所需時間 $T_{overall}$。

$$
\begin{array}{ll}
\begin{array}{ll}
    T_{overall} &= T_{1}+T_{2}+ \cdots + T_{a} + \cdots +T_{n},\; a \in (1,n)
    \\\\
    &\displaystyle{= \sum_{k=1}^{n}{ T_{k} } }
\end{array}
\\\\
\displaystyle{\Rightarrow \text{Ratio with } T_{overall }\; \text{ is }\; 1 }
\end{array}
$$

<br>

- 每 Part 對系統影響時間比 $R$

$$
\text{Ratio } R_{k} = \dfrac{ T_{k} }{ T_{overall} }
$$

<br>

- 假設 Part $a$ 優化後速度增加 $s$ 倍

$$
\begin{array}{ll}
\begin{array}{rl}
    \text{New Time } t_{a} &= \dfrac{T_a}{s}
    \\\\
    \text{New Ratio } r_{a} &= \dfrac{ \frac{T_{a}}{s} }{ T_{overall} } = \dfrac{t_a}{T_{overall}}
    \\\\
    r_{overall} &\displaystyle{= \sum_{k=1}^{n}{r_{k}} }
\end{array}
\\\\
\begin{array}{ll}
    \displaystyle{\Rightarrow T_{new} } &\displaystyle{= T_{1} + \cdots + \dfrac{T_{a}}{s} + \cdots + T_{n} }
    \\\\
    &\displaystyle{= \sum_{k=1}^{n} r_{k} \cdot T_{overall} \quad \boxed{ k \neq a \Rightarrow R_k = r_k } }
    \\\\
    &\displaystyle{= T_{overall} \times r_{overall} }
\end{array}
\end{array}
$$

<br>

- 系統速度提升

$$
\text{Speedup } S = \dfrac{ T_{overall} }{ T_{new} } = \dfrac{ T_{overall} }{ r_{overall} \cdot T_{overall} } = \dfrac{ 1 }{ r_{overall} } = \dfrac{1}{r_1+r_2+ \cdots + r_n}
$$

## 範例

### Case 1

假設你把系統某一部份提升了2倍速，
但這部分只佔系統的 20%，
意味著未改善的部分有 80%。

根據阿姆達爾定律：
$$
\text{Speedup} = \dfrac{1}{(1-0.2)+(\frac{0.2}{2}) } \approx 1.11
$$

意味這個優化只能提升系統速度 1.11 倍左右。
$$
\text{New Time} = \dfrac{\text{Old Time}}{1.11}
$$

---

### Case 2

接著假設你很厲害，
把系統的 20% 提升到無窮倍快。
$$
\text{Speedup} = \lim_{n \to \infty} \dfrac{1}{(1-0.2)+(\frac{0.2}{n})} = \dfrac{1}{0.8} = 1.25
$$

這時得到的就是這 20% 改善的極限。
你即使再怎麼厲害，
也只能把系統速度提升到 1.25 倍。

---

## 備註

覺得有問題的話歡迎來信指點！

---

###### tags: `Computer Organization`