我是靠谱客的博主 欢呼洋葱,最近开发中收集的这篇文章主要介绍多核计算机组织结构,现代多核计算机体系结构简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这篇博文简单介绍多核计算机体系结构的相关术语(e.g. SIMD,superscalar,hyper-thread…),现代计算机体系结构保罗万象,越来越复杂,这里仅仅是抽象层简介,不涉及具体实现。旨在简单介绍它的一些工作方式概念.(非专业人士,有错误欢迎指正)

希望这篇文章能够帮助理解以下概念:

单核

很简单,每个clock 执行一条指令.

并行优化技术

multi-core

一个处理器增加多个核

这带来的是硬件对 multi-thread 的并行化支持.可以让两个线程同时跑.

SIMD(Single Instruction Multi-Data)

这是典型的数据并行(Data parallel) 的模型

典型的场景就是向量乘法

for (int i=0 ; i

z[i] = x[i] * y[i]

这里面每个data执行的指令都是一样的 mul

有很多种方式都可以实现这种SIMD

硬件,CPU运行时发现

compiler, 编译期发现

显示地用SIMD指令(程序员可见的)

前面两种都是programmer不可见的,因此写程序的时候尽量写data parallel 通常能够带来性能优化(PS:即使现在不能,随着这种技术的发展后面也一定能)

超标量(superscalar)

和单核单指令流的唯一区别就是加了另外一套 fetch/decode 及ALU 逻辑,这意味着可以在一个clock跑2条并行 的指令(ILP,指令级并行) 需要执行的指令流中的指令是无关的,没有依赖的.

这对programmer是完全透明的

superscalar+SIMD

访存(access memory)

两个重要概念

memory latency 处理器发出内存请求指令(store,load),到获得内存,继续跑的时间

memory bandwidth 内存系统可以提供数据给处理器的速度(e.g. 20G/s).

stalls 指令流中的指令由于前一条指令的依赖(e.g. 数据依赖,访存)而无法执行,称为被墙了(‘stalls’,不知怎翻译)

由于访存与cpu计算速度的巨大差异,改进前面的任意三者之一,都会提高计算的效果

改进 access memory 的姿势

cache,有效减少 stalls的长度,从而 reduce latency(在cache命中了就不需要access memory 了)

Prefech,减少stall,(如果预测正确,内存依赖会变少,从而减少stall,隐藏latency(整体性能上升))

硬件支持的multi-thread (单核multi-thread)

interleave multi-thread

这种单核多线程称为 interleave 多线程,也叫伪多线程,顾名思义就是假的多线程,因为它其实只有一套 fetch/decode,ALU, 也就是一个clock只能执行一条指令,所以同时只能执行一条指令,所以线程是交错执行(interleave),的不过有多个执行上下文(excute context)

这有什么好处呢:

减少内存墙(stalls), 可以类比OS的多线程,IO密集型与计算密集型不同调度,每个跑一会儿,当一个线程跑不动等待IO的时候让另外一个跑,这里是类似的,只是OS设想的IO的磁盘,这里是memory。可以有效隐藏latency

共享CPU cache,仍然可以类比OS多线程,共享内存的优点

一些不好的地方:

1. 每个thread的cache变少,可以会带来多次访问内存,不过可以hide latency,提高吞吐量

GPU的这个单核多线程就比较多,适合高吞吐

Simultaneous multi-threading (SMT)

这是一个superscalar的扩展,设想前面的想法,多套 fetch/decode ALU就可以一个clock执行多条instruction, 因此如果这里也配多套fetch/decode ALU,就能一次从多个thread中取指令执行了。

intel的hyper-thread技术属于这类多线程

总结多线程的利弊:

pros:

带来大的吞吐,隐藏延迟

使得superscalar archtechture充沛,(没有单线程ILP可以多个线程同时跑)

可能会比core扩展简单

costs:

额外的线程存储

非常依赖内存带宽(所以GPU的带宽通常比CPU大,excute context更多!)

最后以一张 CPU vsGPU架构图作为结束

reference

版权声明

仅允许非商业转载,转载请保留此版权声明,并注明出处

最后

以上就是欢呼洋葱为你收集整理的多核计算机组织结构,现代多核计算机体系结构简介的全部内容,希望文章能够帮你解决多核计算机组织结构,现代多核计算机体系结构简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部