前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漫谈计算机架构

漫谈计算机架构

作者头像
木可大大
发布2018-07-25 15:11:54
1K0
发布2018-07-25 15:11:54
举报
文章被收录于专栏:木可大大木可大大

前言

一说到计算机架构(Computer Architecture),大家可能会有疑问:计算机架构到底是个什么东西?引用维基百科对计算机架构的定义:

代码语言:javascript
复制
computer architecture is a set of rules and methods that describe the functionality, organization, and implementation of computer systems.

翻译成中文:计算机架构是描述计算机系统功能,组织和实现的一组规则和方法。而这组规则和方法是通过ISA和Microarchitecture实现的。

我们知道计算机是由硬件和软件组成的,而它们之间的桥梁是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)就应运而生了。

既然流水线技术可以实现不间断取指、解码、执行、写回,那么我们是不是同时可以让几条流水线一起工作,这就是超标量技术。不过需要注意的是当前后两条指令存在依赖关系时,流水线需要停顿,例如:

代码语言:javascript
复制
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,多指令多数据)。

早期的冯·诺依曼结构采用的都是SISD,冯·诺依曼结构也称存储程序计算机,它有两个重要特性:1. 指令和数据被存储在内存中;2. 指令被顺序执行,在一个时刻只有一条指令在执行,通过PC(Program Counter)识别当前指令。

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 时延的存储系统了,不过这显然是无法做到的,因此人们就提出了分层式的存储系统结构,从寄存器开始每往下一层容量就更大,但是速度也更慢,如下图所示。寄存器容量最小,但是速度最快。因此,想要设计一个良好的存储系统,需要对容量和速度做一个权衡。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木可大大 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 流水线
  • 并行
  • 存储器分层结构
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档