计算机体系结构量化研究方法-1

1.1 introduction

计算机技术的进步主要原因有两个:设计和制造。设计主要是架构的演进,制造主要是工艺的进步。这两个因素虽然都能保持计算机性能的进步,但是却不尽相同。

微处理器的诞生,极大的促进了计算机的发展,架构的演进却相对慢一些,后来又有两方面的原因加快了架构演进的速度:1, 高级语言(之前是汇编语言);2, 操作系统,如UNIX/Linux等的诞生。这两种技术的产生,加快了新的架构在商业中的使用。再之后,RISC(精简指令集)诞生了,它的优势主要在两个方面:1, 指令级并行(流水线和多指令发射);2, cache。RISC的产生提高了性能,迫使之前的架构要么改善自己,要么消失。

随着计算机的发展,微处理器技术的限制(晶体管尺寸等),多核处理器产生了,并从以前的ILP(instruction level parallelism)到DLP(data level parallelism),thread-level parallelism (TLP),request-level parallelism (RLP)。其中,ILP是程序无法察觉的,由硬件隐式的去做;别的并行方式都需要程序自己去做,对程序员来说是一种负担。

书中说了很多,但归根结底,到现在位置,摩尔定律已经失效,提高芯片功耗比需要依赖特殊的架构(domain-specific architectures),而不是通用处理器。

 

1.2 计算机的分类

根据使用场景,需求,计算技术的不同,计算机分成了五类:

Internet of Things/Embedded Computers

Personal Mobile Device

Desktop Computing

Servers

Clusters/Warehouse-Scale Computers

 

并行化的分类以及并行架构

考虑到energy和cost,目前主要是两种并行化的方向:

1. DLP 也就是数据级并行化

因为有很多数据可以并行化处理

2. TLP 也就是任务级并行化

因为有很多的任务可以并行化处理

 

而计算机硬件则可以可以利用程序的这两种并行化提高性能,主要有四种方式:

1. 硬件的指令级并行化可以在两个层面利用程序的DLP,一个是利用编译器的帮助(比如pipeling),一个是利用硬件的推测执行(speculative execution)。

2. 向量架构,GPU,多媒体指令集可以利用DLP,让一条指令作用于多个数据

3. TLP在几组硬件的帮助下,可以利用DLP和task level的并行化,让多个线程可以交互数据,从而提高性能

4. RLP可以在程序或者操作系统指定的很多task之间实现并行化。

 

根据多处理器中,最受约束组件中的指令流和数据流,将所有的计算机分为四类:

1. SISD 单指令流,单数据流

这种类别是单处理器,程序员把它看作是标准的顺序计算机,但是它可以实现ILP。例子为超标量和推理执行。

2. SIMD 单指令流,多数据流

同一个指令由多个使用不同数据流的处理器执行。SIMD计算机实现数据级并行,对多个数据并行执行相同的操作,每个处理有自己的数据存储器,但是只有一个指令存储器,用来提取和派发指令。SIMD有三种:向量体系结构,标准指令集的多媒体扩展,以及GPU。

3. MISD 多指令流,单数据流

暂时没有这种类型的商用多处理器。。。

4. MIMD 多指令流,多数据流

每个处理器提取自己的指令执行,对自己的数据操作,针对的是task level parallel。适用cluster以及WSCs,因为可以并行执行多个独立任务,几乎不需要通信和同步。

 

1.3 计算机体系结构的定义

计算机设计人员的任务:判断哪些属性对于新计算机而言是至关重要的,然后满足成本,功耗和可用性约束条件。包括:指令集设计,功能组织,逻辑设计,实现方式;而实现方式可能包括集成电路设计,包装,电池和冷却等。因此设计人员要熟悉编译器,操作系统以及逻辑设计与包装等广泛技术。

13.1 指令集体系结构

指令集体系结构(ISA),指代程序员可以看到的实际指令集,作用相当于区分软件和硬件的界限。后面会以80×86,ARM以及RISC-V为例子,从7个方面介绍ISA。

1) ISA的分类

几乎所有的ISA都是通用寄存器体系结构,操作数要么是寄存器,要么是存储器地址。有两个主流版本:80×86,register-memory ISA,在许多指令中都可以访问存储器;还有一种是RISC-V,是load-store ISA,只能通过load或者store指令来访问存储器,下图是RISC-V的部分寄存器:

 2) 存储器寻址

几乎所有桌面计算机和服务器使用字节寻址来访问存储器操作数。ARM要求操作对象是对齐的,比如大小是s的对象,地址为A,为A mod s == 0,就说明对这个对象的访问是对齐的。80×86和RISC-V不要求对齐,但是对齐会更快一些。

3)寻址模式

RISC-V寻址模式:寄存器寻址,立即数寻址以及位移量寻址。所谓的位移量寻址,是指固定的偏移量加到寄存器得出存储器地址。

 4)操作数的类型和大小

8bit ASCII,16bit Unicode,32bit int,64bit ull以及IEEE 754浮点数(32bit单精度,64bit双精度)。

5)操作指令

数据传输指令,算数逻辑指令,控制指令,浮点指令。

6)控制流指令

几乎所有的ISA都有,支持条件转移,无条件跳转,过程调用以及返回。都使用相对于PC的寻址方式,分支地址由一个地址字段指定,该地址将被加到PC。不过这几种架构有细微差别,RISC-V条件分支(BE,BNE等)季铵盐寄存器中的内容,80×86和ARM测试条件代码位,这些位是在执行算术/逻辑运算时顺带置上的。ARM和RISC-V过程调用的返回地址放在寄存器中,80×86则存放在存储器的stack里。

7)ISA的编码。

有两种编码选择:固定长度和可变长度。ARM和RISC-V是固定长度(32位),8086是可变长度(1~18 byte)。采用可变长度编码可以减少程序的体积,所以后来ARM和RISC-V推出了16bit指令,成为Thumb,Thumb-2等。

下图是RISC-V的部分ISA:

下图是RISC-V的浮点运算ISA:

以及下面是RISC-V的指令格式:

R格式用于整数寄存器到寄存器的操作,比如ADD,SUB等;I格式的用于load操作以及立即数操作,如LD,ADDI等;B格式用于分支;J格式用于跳转和link?;S格式用于store。

 

1.3.2 真正的计算机体系结构:设计满足目标和功能需求的功能和硬件

计算机的实现有两个方面:组成和硬件。组成,也就是微体系结构,包含存储器系统,存储器互联,设计内部处理器或CPU等等,使用相同ISA计算机,可能有不同的组成,比如Intel和AMD都是x86 ISA,但是组成非常不同。硬件是计算机的具体实现,比如详尽的逻辑设计以及封装技术,有相同ISA,相似组成的计算机,可能有不同的硬件,比如Intel i7和Xeon就是相同的ISA相似的组成,硬件实现略有不同。

因此,严格来说,计算机有三个方面:ISA,组成以及硬件。

计算机架构师要考虑的内容:

 

 1.4 技术趋势

在系统架构中,有些技术一直在发生剧烈的变化,比如:

a) 晶体管逻辑技术

晶体管密度在增加,晶片尺寸在增大

b) 半导体DRAM

也就是通常说的内存,增长越来越慢

c) 半导体闪存

d) 磁盘技术

e) 网络技术

以上这些技术,都在制约计算机的发展速度。

 

版权声明:本文为henzhi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/henzhi/p/13520038.html