一说到计算机架构(Computer Architecture),你们可能会有疑问:计算机架构究竟是个什么东西?引用维基百科对计算机架构的定义:程序员
computer architecture is a set of rules and methods that describe the functionality, organization, and implementation of computer systems.
复制代码
翻译成中文:计算机架构是描述计算机系统功能,组织和实现的一组规则和方法。而这组规则和方法是经过ISA和Microarchitecture实现的。bash
咱们知道计算机是由硬件和软件组成的,而它们之间的桥梁是ISA(Instruction Set Architecture,指令集架构),换句话说,硬件的功能经过ISA提供出来,而软件经过ISA规定的指令使用硬件。目前经常使用的ISA有x86和ARM,其中x86采用的是复杂指令集(CISC),被较多的应用于服务器端,而ARM(Advanced RISC Machine)采用的是精简指令集,目前被用于移动端。服务器
微架构(Microarchitecture)是ISA在处理器的实现,描述处理器是怎样实现功能的,其本质就是一系列硬件实现以知足各类指令集。而Microarchitecture是ISA的具体实现,并且对于同一个ISA,可使用不一样技术的微架构 ,好比单周期、多周期以及流水线。好比说x86 ISA有286,386,486,Pretium,Pretium Pro等实现。目前,微架构涉及如下部分:流水线、并行、存储系统分层结构,下面将对这几部分进行详细介绍。网络
咱们知道指令的执行过程包含如下几个步骤:取指(IF,instruction Fetch)、译码(ID,Instruction Decode)、执行(EXE,Execution)以及写回(WB,Write Back),在早期微架构中咱们将这些步骤放在同一个周期内顺序完成,这样设计致使效率很低,当进行取值时,其他部件是空闲的。为了提升各个部件工做效率,流水线技术(Pipeline)就应运而生了。架构
既然流水线技术能够实现不间断取指、解码、执行、写回,那么咱们是否是同时可让几条流水线一块儿工做,这就是超标量技术。不过须要注意的是当先后两条指令存在依赖关系时,流水线须要停顿,例如:分布式
x=1+2
y = x*3
复制代码
除了经过流水线技术来提升计算机运行速度以外, 还有没有其余并行技术?按照费林分类法能够将计算机分为:SISD(Single Instruction Stream Single Data Stream,单指令单数据)、SIMD(Single Instruction Stream Mutiple Data Stream,单指令多数据)、MISD(Mutiple Instruction Stream Single Data Stream,多指令单数据)和MIMD(Mutiple Instruction Stream Mutiple Data Stream,多指令多数据)。ui
早期的冯·诺依曼结构采用的都是SISD,冯·诺依曼结构也称存储程序计算机,它有两个重要特性:1. 指令和数据被存储在内存中;2. 指令被顺序执行,在一个时刻只有一条指令在执行,经过PC(Program Counter)识别当前指令。
spa
SIMD 就是单指令多数据的缩写,将一个指令广播到多个处理器上,但每一个处理器都有本身的数据。也就是说同一份控制指令同时运行不一样的数据,以下图所示,这样作的好处就是减轻的控制成本。目前,GPUs(Graphics Processor Units)采用的就是SIMD架构。翻译
对于MISD这种架构,目前没有系统安装这个结构设计的,这里就不过多介绍了。设计
下面重点介绍下MIMD,它指的是不一样时刻不一样CPU执行的指令不一样,而且数据也不一样,以下图所示。目前超级计算机,网络并行计算机集群和“网格”,多处理器SMP计算机,多核PC都属于这一类。而MIMD又能够根据内存结构,能够分为共享内存和消息驱动。共享内存就是处理器之间共享内存,经过内存来进行通讯,而消息驱动指的是处理器经过消息驱动来进行通讯。目前共享内存有SMP、NUMA两种,消息驱动对应DM。
SMP全称Symmetric Multi Processors,对称多处理机,又称UMA(Unifor Memory Access,统一内存访问),全部CPU都共享同一内存。目前Intel和AMD推出的多核CPU应该归为SMP这一类中。
NUMA(NonUniform Memory Access,非一致内存访问),全部CPU共享全部的内存,但不一样的CPU访问不一样的内存速度是不同的。
DM(Distributed Memory,分布式内存):每一个CPU都有本身的内存,CPU经过消息来通讯,因为每一个处理器都有本身的本地内存,所以,每一个处理对本地内存操做都不会影响其余处理器。并且,内存数量可随着处理器的数量进行扩展。不过,它的缺点就是程序员负责许多与处理器之间数据通讯相关的细节。
不管是冯·诺依曼结构仍是其余结构的处理器,最理想的状况下固然是有无限大的存储空间和 0 时延的存储系统了,不过这显然是没法作到的,所以人们就提出了分层式的存储系统结构,从寄存器开始每往下一层容量就更大,可是速度也更慢,以下图所示。寄存器容量最小,可是速度最快。所以,想要设计一个良好的存储系统,须要对容量和速度作一个权衡。
更多文章请订阅公众号"木可大大"。