Computer Architecture A Quantitative Approach 读书笔记chapter1-1

来源:互联网 发布:300英雄淘宝金币cdk 编辑:程序博客网 时间:2024/06/06 05:06

第一章,Fundamentals of Quantitative Design and Analysis

并行的各种分类

并行的种类分为两种。

其一。Data-Level Parallelism (DLP) 数据层次并行。

there are many data items that can be operated on at the same time.

其二.Task-Level Parallelism (TLP) 任务层次并行。

tasks of work are created that can operate independently and largely in parallel。

这两种并行又可以分为以下4种主要实现方式。

1.Instruction-Level Parallelism指令级并行,属于DLP数据并行。利用编译器来充分利用指令流水线pipeline,以及像指令预测这样的并行方式。

2.Vector Architectures 向量架构和GPU(图形处理单元)。这同样属于DLP的实现,这样的做法是将同样的指令应用到多个数据中实现并行。

3.Thread-Level Parallelism 线程并行机制。既有DLP的属性也有TLP的属性。这样的机制紧密结合硬件以允许不同线程间的交流。

4.Request-Level Parallelism请求级并行特点由用户或者操作系统所制定的,促使不同任务间并行实现。

最后有有Michael Flynn 为我们分了4种并行计算机。

1.SISD ,主要是单核单线程cpu,并且只能使用DLP技术而不能使用TLP,如流水线,但同时刻运行两个任务是不可能的。

2.SIMD  ,这样的计算机有多个处理单元,但是只能执行同一条指令,每一个处理单元都有单独的内存。典型的不论是intelcpu中的AVX-512 指令集达到512的宽度。但却使用同一条指令,处理大量数据。这在现代处理器中被广泛采用。同样的现代显卡中gpu也是采用这样的方法,并且发生在一个运算器的内部。并且可以只有一个控制器。

这里我要提个问题。simd到底是发生在一个计算单元中,还是多个计算单元中。如果是多个的话,现代处理器中一个核内是否只有一个计算单元?

3.(MISD ,现代没人使用了。

4.MIMD 这意味着每个计算单元可以单独执行指令,并且每一个计算单元都有一个控制单元。

那么平时老挂在嘴边的计算机架构到底是什么呢?
书中的回答包含了数个方面的统称。
从指令集设计,逻辑电路设计,功能组织等方面。甚至于电源管理和散热也包含在计算机架构之中。
当然这也只是作者的看法罢了。不过作者所说指令集设计是最有挑战的方面。
下面就开始讲述instruction set architecture(ISA) 了
ISA(指令集架构)被认为是软件和硬件的边界。(想来也很合理,指令集的实现是通过硬件的方式实现,而软件是使用指令集作为接口来使用硬件)
ISA包含下面几个方面。
1.ISA种类,现代计算机都市通用型计算机。也就是说指令操作对象既可以是内存也可以是寄存器。X86中有16个通用寄存器,和16个浮点寄存器。MIPS有32个同样 寄存器和32个浮点寄存器,是X86的一倍。典型的ISA包含两类,X86这样的register-memory ISA,可以直接对内存数据在一条指令中操作。还有就是load-storeISAs ,比如ARM和MIPS。这样的指令集只能通过load和store操作访问内存。
2.I内存地址址安排方式。现代的主要区别就是指令内存地址是否采用对齐方式,这在ARM和MIPS中是确实使用的,这会加快译码阶段的运行。
3.I地址模型。也就是内存寻址方式。
4.I指令操作对象的类型和大小。
5.I操作种类。这点上分为RISC和CISC。
6.I控制流指令。跳转,条件跳转指令
7.I指令编码。包括固定长度和可变长度指令。

即使具有相同指令集的cpu也会有不同的微架构microarchitecture 。如intel的i7系列芯片。
它们都具有相同的X86指令集但在cache的组织形式和流水线是不相同的。

关于TDP,表示的是计算机持续的功率,这并不代表最大功率。最大功率往往是TDP的1.5倍左右。
如果电源供给不足,会导致cpu降压,从而使cpu停止工作。
其次,散热不足可能导致cpu停止工作,甚至永久性伤害,(这看起来就像个DIY装机博客)
现代cpu在cpu过热的时候采用自动降频的办法降低功耗。
关于CMOS管制作的芯片。电消耗主要花在晶体管的打开和关闭上,这些电消耗称为dynamic energy。
每个晶体管的能量消耗 正比于 晶体管电容*电压^2
这里的能量消耗只是晶体管从0->1->0或者从1->0->1的能量消耗。
实际应用中每秒钟的能量晶体管能量消耗为
动态能量消耗 正比于 1/2 * 晶体管电容 * 电压^2 * 晶体管0-1切换的频率。
这样就能够获得一个信息,就是一个任务在不同频率cpu下运行时,需要的总能量不变。但是功率减小。但是在不同电压下工作时会减少总能量消耗,同时减小电压消耗。

接下来一个公式令人感兴趣,是关于晶圆产出的dies的良品率或者产出量的一个经验公式:
dies的产出量 = 晶圆数量 /(1 + 每个die面积*单位面积下的差品率)^N
其中N是处理复杂度因子process-complexity factor 用来衡量生产难度。

1.7可靠性分析。
Module reliability 模块的可靠性对于提供服务的设备的水平而已是一个重要的衡量标准。
而平均故障metric
时间(MTTF)是一种可靠性测量方法,表示没百万小时的系统故障时间
平均修复时间(MTTR) 是中断服务的处理时间。
所以故障平均间隔时间(MTBF) = MTTF + MTTR 。

1.8 Measuring, Reporting, and Summarizing Performance
CPUtime ,elapsed time 
cpu时间 , 运行时间
现代用户衡量方式大多通过benchmark跑分来实现。


阅读全文
0 0