进行SIMD多媒体扩展的设计,源于一个很容易观察到的事实:

许多多媒体应用程序操作的数据类型比对32位处理器进行针对性优化的数据类型更窄一些。

图像三基色,都是8位。音频采样也都是8位和16位来表示。

SIMD的多媒体扩展指令与标准的SIMD指令相比,它指定的操作数更少,因此使用的寄存器堆更小。

SIMD扩展主要对一下三项进行了简化:

1)多媒体SIMD扩展固定了操作代码中数据操作数的数目,从而在x86的体系结构的MMX,SSE,AVX中添加了数百条指令。

2)多媒体SIMD没有提供向量体系结构的更复杂的寻址模式,也就是步幅访问和集中---分散访问。

3)多媒体SIMD不像向量体系结构那样,为了支持元素的条件执行而提供遮罩寄存器。

做这些扩展指令的目的也是加快那些精心编制的库函数的运行速度,而不是由编译器来生成的这些库。

SIMD的优点:

1)芯片设计相对向量体系结构来说,较简单,且不需要那么大的存储器带宽。

2)可以比较轻松的引入一些符合新媒体标准的指令。

GPU的祖先是图形加速器,极强的图形处理能力是GPU得以存在的原因。当前GPU的研究热点是一种简化的GPU编程的编程语言。

GPU几乎拥有所有可以由编程环境捕获的并行类型:多线程,MIMD,SIMD,指令级并行

NVIDA开发的是一种类似于C的语言和编程环境,通过克服多种并行的挑战来提高GPU程序员的生产效率。这一系统称为CUDA。

将所有的这些并行形式统一为CUDA线程,以这种最低级的并行作为编程原型。

编译器和硬件可以将数以千计的CUDA线程聚合在一起。CUDA编程模型被定义为"单指令多线程(SIMT)"

执行时,以32个线程为一组,称为线程块,将执行整个线程块的硬件称为多线程SIMD处理器。

行执行和线程管理由GPU硬件负责,而不是由应用程序或操作系统完成,不同的线程块之间可以使用全局存储的原子操作来进行协调,

但是它们之间不能直接通信。

和很多并行系统一样,CUDA在生产效率和性能之间进行了一点折中,提供了一些本身固有的功能,让程序员能够显示控制硬件。

了解编程语言可以平衡生产效率和性能之间的关系。

AMD推出的与供应商无关的语言,OpenCL。

以NVIDIA系统为例,GPU可以很好的解决数据级并行的问题,也拥有着集中---分散数据传送和遮罩寄存器,但是GPU的寄存器要比

向量处理器更多。有一些功能,GPU通过硬件来实现,在向量体系结构中通过软件来实现。

网格是在GPU上运行,由一组线程块构成的代码。例如我们希望两个向量乘在一起,每个向量长度为8192个元素。执行所有8192个

元素乘法的GPU代码称为网格(向量化循环)

为了便于管理,网格可以由线程块(向量化循环体)组成。每个线程块最多512个元素。一条SIMD指令一次执行32个元素。所以该例子

中,共有16个线程块

网格和线程块是GPU硬件中实现的编程抽象,可以帮助程序员组织自己的CUDA代码。

线程块调度程序是将线程块指定给执行该代码的处理器,我们将这种处理器称为多线程SIMD处理器。

线程块调度程序与向量体系结构中的控制处理器类似。决定了该循环所需要的线程块数,以及将他们分配给不同的多线程SIMD处理器。

SIMD多线程处理器与向量处理器类似。但是它的很多功能单元都是深度流水化的。

GPU是一个由多线程SIMD处理器组成的多处理器,加自己的线程块调度程度。

GPU硬件中有两级硬件调度程序:

1) 线程块调度程序,将线程块分配给多线程SIMD处理器

2) SIMD处理器内部的SIMD线程调度程序,调度何时运行SIMD指令线程

在多线程SIMD处理器中执行的指令,由并行功能单元来执行,称为SIMD车道,每个SIMD处理器中的车道数在各代GPU中是不同的。

对于fermi,每个宽度为32的SIMD指令线程被映射到16个物理SIMD车道,所以每条SIMD指令需要两个时钟周期才能完成。

记分板,可以让SIMD线程调度程序,了解哪个SIMD指令已经做好运行准备。

向量体系结构(2)----SIMD指令集扩展和GPU的更多相关文章

  1. SIMD数据并行(一)——向量体系结构

    在计算机体系中,数据并行有两种实现路径:MIMD(Multiple Instruction Multiple Data,多指令流多数据流)和SIMD(Single Instruction Multip ...

  2. 构建可扩展的GPU加速应用程序(NVIDIA HPC)

    构建可扩展的GPU加速应用程序(NVIDIA HPC) 研究人员.科学家和开发人员正在通过加速NVIDIA GPU上的高性能计算(HPC)应用来推进科学发展,NVIDIA GPU具有处理当今最具挑战性 ...

  3. SIMD指令集——一条指令操作多个数,SSE,AVX都是,例如:乘累加,Shuffle等

    SIMD指令集 from:https://zhuanlan.zhihu.com/p/31271788 SIMD,即Single Instruction, Multiple Data,一条指令操作多个数 ...

  4. 计算机系统6-> 计组与体系结构3 | MIPS指令集(中)| MIPS汇编指令与机器表示

    上一篇计算机系统5-> 计组与体系结构2 | MIPS指令集(上)| 指令系统从顶层讲解了一个指令集 / 指令系统应当具备哪些特征和工作原理.这一篇就聚焦MIPS指令集(MIPS32),看看其汇 ...

  5. 计算机系统5-> 计组与体系结构2 | MIPS指令集(上)| 指令系统

    系列的上一篇计算机系统4-> 计组与体系结构1 | 基础概念与系统评估,学习了一些计算机的基础概念,将一些基本的计算机组成部分的功能和相互联系了解了一下,其中很重要的一个抽象思想就是软硬件的接口 ...

  6. Intrinsics头文件与SIMD指令集、Visual Studio版本对应表(转)

    File:Intrinsics头文件 描述:指令集描述VS:Visual Studio版本号VisualStudio:Visual Studio版本名 File 描述 VS VisualStudio ...

  7. SIMD数据并行(二)——多媒体SIMD扩展指令集

    在计算机体系中,数据并行有两种实现路径:MIMD(Multiple Instruction Multiple Data,多指令流多数据流)和SIMD(Single Instruction Multip ...

  8. SIMD数据并行(三)——图形处理单元(GPU)

    在计算机体系中,数据并行有两种实现路径:MIMD(Multiple Instruction Multiple Data,多指令流多数据流)和SIMD(Single Instruction Multip ...

  9. SIMD数据并行(四)——三种结构的比较

    在计算机体系中,数据并行有两种实现路径:MIMD(Multiple Instruction Multiple Data,多指令流多数据流)和SIMD(Single Instruction Multip ...

随机推荐

  1. [qemu][cloud][centos][ovs][sdn] centos7安装高版本的qemu 以及 virtio/vhost/vhost-user咋回事

    因为要搭建ovs-dpdk,所以需要vhost-user的qemu centos默认的qemu与qemu-kvm都不支持vhost-user,qemu最高版本是2.0.0, qemu-kvm最高版本是 ...

  2. textfield内边距

    使用QMUITextField self.inputTf.textInset = UIEdgeInsetsMake(0, -6, 0, 10);

  3. 转:Scanner中nextLine()方法和next()方法的区别

    原文地址:https://blog.csdn.net/hello_word2/article/details/54895106 总结:next() 读取第一个 空白符之前(不包括空白符)的内容,nex ...

  4. JLRoutes使用

    JLRoutes 地址:https://github.com/joeldev/JLRoutes JLRoutes原理: 它是通过url scheme来实现app内部,web到app,app与app之间 ...

  5. zabbix宏(macro)使用:自定义监控阈值

    一.简单应用场景 zabbix在监控cpu load时并没有考虑客户端cpu的个数和核心数量,当平均5分钟的负载达到5时zabbix执行报警动作,这样是非常不合理的,笔者的被监控机器有四核和单核,现在 ...

  6. 关于eclipse调试时程序控制台不能自动打开

      对于这个程序,在刚开始的时候,没有敲上22,29,33行的打印语句时,在调试的时候不会自动弹开控制台,所以一直在怀疑代码可能出错了.因此可以自己手动打开,但是如果敲上那些代码,系统可以自动弹开控制 ...

  7. ubuntu上make menuconfig出错

    如果使用make menuconfig的方式配置内核,又碰巧系统没有安装ncurses库(ubuntu系统默认就没有安装此库),就会出现错误,错误信息大体上如下: *** Unable to find ...

  8. bat、sh等批处理文件(脚本文件)

    批处理文件(batch file):也被称为批处理程序或脚本,可以简化日常或重复性任务.本质是无格式的文本文件,它包含一条或多条命令.(1).bat是dos下的批处理文件,在window系统上执行的文 ...

  9. MySQL中varchar最大长度是多少?

    一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...

  10. 教你使用SQL数据库复制系列(1-7)

    SQL Server 复制系列(文章索引) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 复制逻辑结构图(Construction) ...