Computer Abstractions and Technology
约 1049 个字 预计阅读时间 7 分钟
认识计算机
计算机的分类 Classes of Computers
- 个人计算机 Personal computer
- 服务器 Server computers
- 超级计算机 Supercomputers(也算服务器)
- 嵌入式计算机 Embedded computers(不会单独存在,一般作为配件)
后PC时代 The PostPC Era
主要包括普通手机(Cell phone)、智能手机(Smart phone)、平板电脑(Tablet)等。
- 个人手机 Personal Mobile Device (PMD)
- 云计算 Cloud computing
- 仓储式计算机 Warehouse Scale Computers (WSC)
- Software as a Service (SaaS)
计算机发展中的七大思想 Senev Great Ideas
- Use abstraction to simplify design 抽象
- Make the common case fast 常见情况
- Performance via parallelism 并行
- Performance via pipelining 流水线
- Performance via prediction 预测
- Hierarchy of memories 内存层次
- Dependability via redundancy 冗余
语言层级 Levels of Program Code
- High-level language 高级语言
- Assembly language 汇编语言
- Hardware representation 机器语言
- 二进制语言
计算机的组成 Components of a Computer
- 所有电脑都有的组成部分
- Desktop, server, embended
- 输入输出设备
- 用户接口设备(键盘、鼠标)
- 存储设备(硬盘、DVD/CD、flash)
- 网络调试器
抽象 Abstraction
- 抽象帮助处理复杂问题
- 隐藏底层细节问题
- 指令集 ISA
- 硬件与软件的交互部分
技术发展趋势 Technology Trends
摩尔定律:每隔18个月,计算机性能会翻一倍,价格会降低一半(以前适用,现在泛化了)
计算机的性能
响应时间和吞吐率 Response Time and Throughput
响应时间 Response time
计算机处理交给它的任务所需要的时间(需要对用户的请求做出快速的反应)
吞吐率 Throughput
单位时间内能够完成任务的数量
注意:响应时间与吞吐率之间有关联,但是并不一样。
具体衡量方式
Ececution Time 执行时间
Elapsed time 整个处理过程的时间
包括 processing, I/O, OS overhead, idle time 等,可用于体现系统性能
CPU time
除去 I/O 其他部分工作需要的时间,包括 user CPU time 和 system CPU time
- CPU Clocking CPU时钟周期
- Clock period 时钟周期:一个时钟周期的长度
\(e.g.\quad 250ps = 0.25ns =250\times10^{-12}s\) - Clock frequency 时钟频率:单位时间内时钟周期个数
\(e.g.\quad 4.0GHz = 4000MHz=4.0\times 10^9Hz\)
- Clock period 时钟周期:一个时钟周期的长度
CPU Time的计算: $$ \begin{align} CPU\quad Time &= CPU\quad Clock\quad Cycles\times Clock\quad Cycle\quad Time \end{align} $$ $$ =\frac{CPU\quad Clock\quad Cycles}{Clock\quad Rate} $$
提高性能的方式:①减少 clock cycles 的数量 ②缩短时钟周期 ③增大时钟频率(注意②和③并不是无限制的)
- Clock Cycles 和 CPU Time 的计算
在计算过程中一般使用平均 CPI(由 CPU 硬件计算)
- CPI 的计算
- 不同指令耗时相同
$$ Clock\quad Cycles = \sum^n_{i=1}(CPI_i\times Instruction\quad Count_i) $$ - 不同指令耗时不同 Weighted average CPI
$$ CPI = \frac{Clock\quad Cycles}{Instructuon\quad Count}=\sum^n_{i=1}(CPI_i\times\frac{Instruction\quad Count_i}{Instruction\quad Count}) $$
- 不同指令耗时相同
- Performance Summary
$$ \begin{align} CPU\quad Time&=\frac{Instructions}{Program}\times\frac{Clock\quad cycles}{Instruction}\times\frac{Seconds}{Clock\quad cycle}\ \end{align} $$
$$ =指令数\times 每条指令所需时钟周期\times 每个时钟周期耗时 $$- 影响因素:算法、编程语言、编译器、ISA
功耗
功耗计算方式
In CMOS IC technology $$ \begin{align} Power = Capacitive\quad load\times Voltage^2\times Frequency \end{align} $$
功耗墙 power wall
- 无法无限降低电压,无法通过降低电压的方式来降低功耗
- 散热不足
多核
多核 CPU 处理器,可以进行多线程操作,需要程序员进行并行编程(与指令集的并行【由 CPU 自行判断】不同),相对要求较高。
性能评估
评估性能的三个指标:指令数、CPI、时钟频率
SPEC CPU 2006
对在整形和浮点型上计算的数据进行测试 $$ \sqrt[n]{\prod^n_{i=1}Execution\quad time\quad ratio_i} $$
计算不同电压下的工作负荷
程序优化
Amdahl’s Law
针对程序中大量耗能耗时的部分进行优化 $$ T_{improved}=\frac{T_{affected}}{improvement\quad factor}+T_{unaffected} $$