《计算机组成与设计》(一)——计算机概要与技术

《计算机组成与设计》(一)——计算机概要与技术

摘要: 个人计算机组成学习笔记。

0x01 写在前面

这个暑假要好好利用好,因此打算把计算机组成给过一遍,一方面让自己对计算机科学、技术有更为深刻的理解以在将来成为一个更好的计算机/IT行业从业者;另一方面让自己之后考研复习408起来轻松些。用的教材是David A. Patterson 和John L. Hennessy编写的《计算机组成与设计 硬件/软件接口》。开此系列博客是为了记录自己学习过程的个人向,课后习题也会贴上来,各位看官如若发现错误,敬请指出与讨论。

0x02 笔记部分

这章节主要是一些学习该本教材的一些前置知识,对本人比较有价值的是对程序性能进行推算的部分。

引言

数据量大小单位对照表

程序性能影响因素

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

面向摩尔定律的设计:指的是计算机设计者必须预测其完成设计时的工艺水平,而不是开始时的。

使用抽象简化设计:比方说上层忽略底层细节,上下层交互借由抽象的接口即可以简化整个系统的设计。

加速大概率事件:优化大概率事件比优化小概率事件更易于提高性能。

通过并行提高性能:这个不多说。

通过流水线提高性能:这是CPU在处理指令时所用的技术。

通过预测提高性能:如果假定从误预测恢复执行代价不高并且预测的准确率相对较高,那么通过猜测的方式提前开始某些操作,要比等到确切知道这些操作应该启动时才开始要快一些。

存储器层次:不多说。

通过冗余提高可靠性:在计算机中,任何一个物理器件都有可能失效,因此可以通过使用冗余部件的方式来提高系统的可靠性。简单点说就是加个备胎。

程序概念入门

从机器语言到汇编语言到高级语言

硬件概念入门

计算机硬件部分由五部分组成:输入、输出、存储、处理(数据通路+控制器)。

计算机中最重要的抽象之一是硬件和底层软件之间的接口,其被称为指令集体系结构(instruction set architecture)或者被称为体系结构(architecture)。其包括程序员正确编写二进制机器语言程序所需要的全部信息,如指令、I/O设备等。

操作系统会封装I/O操作、存储器分配和其他低级的系统调用功能细节。提供给程序员的基本指令集和操作系统接口合称为应用二进制接口(Application Binary Interface, ABI)

DRAM与SRAM

处理器和存储器制造技术

芯片制造全过程

集成电路成本公式

性能(重点)

性能可以由

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

吞吐率:表示单位时间内完成任务的数量

在计算机系统中,响应时间和吞吐率往往相互影响

同时可以由公式根据时间计算一台计算机的性能。

CPU执行时间:执行某一任务在CPU上花费的时间

用户CPU时间:执行程序本身所花费的CPU

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

时钟周期=1/时钟频率,如4GHz的时钟频率对应250ps的时钟周期

CPU执行时间=CPU时钟周期数x时钟周期=CPU时钟周期数/时钟频率

时钟周期数=指令数量×CPI

CPI为执行每条指令所需要的平均时钟周期数

综合以上,我们得到经典的表示CPU性能的公式:

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

由此再来接着对之前那幅影响性能的图表来进行更为深入的理解:

关于功耗墙

从前CPU的发展在增加时钟频率的同时降低电压来大幅减少功耗,因为功耗正比于1/2×负载电容×电压^2×开关频率

但是电压继续下降,晶体管泄漏电流会过大,从而功耗增大得不可收拾。所以无法再通过这种方式低成本地增加芯片性能,所谓功耗墙。

本章谬误与陷阱

1)应该明白:改进计算机的某个方面时期望总性能的提高并不与改进的大小成正比。也就是说,有些性能提升指标无论如何都无法达到。

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

2)应该明白:利用率低的计算机功耗不一定低。比方说Google的仓储式计算机中10%的工作负载能消耗1/3的峰值功耗。

3)应该明白:不能用性能公式的一个子集去度量性能。利用MIPS,忽略指令执行的能力。

MIPS指的是Million Instruction Per Second,每秒百万条指令。计算公式为MIPS=指令数/(执行时间×10^6)

0x03 总结

没啥好总结的,冲就完事了:P


评论