日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

向量体系结构(2)----SIMD指令集扩展和GPU

發(fā)布時(shí)間:2023/12/15 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 向量体系结构(2)----SIMD指令集扩展和GPU 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

進(jìn)行SIMD多媒體擴(kuò)展的設(shè)計(jì),源于一個(gè)很容易觀察到的事實(shí):

許多多媒體應(yīng)用程序操作的數(shù)據(jù)類型比對(duì)32位處理器進(jìn)行針對(duì)性優(yōu)化的數(shù)據(jù)類型更窄一些。

圖像三基色,都是8位。音頻采樣也都是8位和16位來(lái)表示。

SIMD的多媒體擴(kuò)展指令與標(biāo)準(zhǔn)的SIMD指令相比,它指定的操作數(shù)更少,因此使用的寄存器堆更小。

SIMD擴(kuò)展主要對(duì)一下三項(xiàng)進(jìn)行了簡(jiǎn)化:

1)多媒體SIMD擴(kuò)展固定了操作代碼中數(shù)據(jù)操作數(shù)的數(shù)目,從而在x86的體系結(jié)構(gòu)的MMX,SSE,AVX中添加了數(shù)百條指令。

2)多媒體SIMD沒(méi)有提供向量體系結(jié)構(gòu)的更復(fù)雜的尋址模式,也就是步幅訪問(wèn)和集中---分散訪問(wèn)。

3)多媒體SIMD不像向量體系結(jié)構(gòu)那樣,為了支持元素的條件執(zhí)行而提供遮罩寄存器。

做這些擴(kuò)展指令的目的也是加快那些精心編制的庫(kù)函數(shù)的運(yùn)行速度,而不是由編譯器來(lái)生成的這些庫(kù)。

SIMD的優(yōu)點(diǎn):

1)芯片設(shè)計(jì)相對(duì)向量體系結(jié)構(gòu)來(lái)說(shuō),較簡(jiǎn)單,且不需要那么大的存儲(chǔ)器帶寬。

2)可以比較輕松的引入一些符合新媒體標(biāo)準(zhǔn)的指令。

GPU的祖先是圖形加速器,極強(qiáng)的圖形處理能力是GPU得以存在的原因。當(dāng)前GPU的研究熱點(diǎn)是一種簡(jiǎn)化的GPU編程的編程語(yǔ)言。

GPU幾乎擁有所有可以由編程環(huán)境捕獲的并行類型:多線程,MIMD,SIMD,指令級(jí)并行

NVIDA開發(fā)的是一種類似于C的語(yǔ)言和編程環(huán)境,通過(guò)克服多種并行的挑戰(zhàn)來(lái)提高GPU程序員的生產(chǎn)效率。這一系統(tǒng)稱為CUDA。

將所有的這些并行形式統(tǒng)一為CUDA線程,以這種最低級(jí)的并行作為編程原型。

編譯器和硬件可以將數(shù)以千計(jì)的CUDA線程聚合在一起。CUDA編程模型被定義為"單指令多線程(SIMT)"

執(zhí)行時(shí),以32個(gè)線程為一組,稱為線程塊,將執(zhí)行整個(gè)線程塊的硬件稱為多線程SIMD處理器。

行執(zhí)行和線程管理由GPU硬件負(fù)責(zé),而不是由應(yīng)用程序或操作系統(tǒng)完成,不同的線程塊之間可以使用全局存儲(chǔ)的原子操作來(lái)進(jìn)行協(xié)調(diào),

但是它們之間不能直接通信。

和很多并行系統(tǒng)一樣,CUDA在生產(chǎn)效率和性能之間進(jìn)行了一點(diǎn)折中,提供了一些本身固有的功能,讓程序員能夠顯示控制硬件。

了解編程語(yǔ)言可以平衡生產(chǎn)效率和性能之間的關(guān)系。

AMD推出的與供應(yīng)商無(wú)關(guān)的語(yǔ)言,OpenCL。

以NVIDIA系統(tǒng)為例,GPU可以很好的解決數(shù)據(jù)級(jí)并行的問(wèn)題,也擁有著集中---分散數(shù)據(jù)傳送和遮罩寄存器,但是GPU的寄存器要比

向量處理器更多。有一些功能,GPU通過(guò)硬件來(lái)實(shí)現(xiàn),在向量體系結(jié)構(gòu)中通過(guò)軟件來(lái)實(shí)現(xiàn)。

網(wǎng)格是在GPU上運(yùn)行,由一組線程塊構(gòu)成的代碼。例如我們希望兩個(gè)向量乘在一起,每個(gè)向量長(zhǎng)度為8192個(gè)元素。執(zhí)行所有8192個(gè)

元素乘法的GPU代碼稱為網(wǎng)格(向量化循環(huán))

為了便于管理,網(wǎng)格可以由線程塊(向量化循環(huán)體)組成。每個(gè)線程塊最多512個(gè)元素。一條SIMD指令一次執(zhí)行32個(gè)元素。所以該例子

中,共有16個(gè)線程塊

網(wǎng)格和線程塊是GPU硬件中實(shí)現(xiàn)的編程抽象,可以幫助程序員組織自己的CUDA代碼。

線程塊調(diào)度程序是將線程塊指定給執(zhí)行該代碼的處理器,我們將這種處理器稱為多線程SIMD處理器。

線程塊調(diào)度程序與向量體系結(jié)構(gòu)中的控制處理器類似。決定了該循環(huán)所需要的線程塊數(shù),以及將他們分配給不同的多線程SIMD處理器。

SIMD多線程處理器與向量處理器類似。但是它的很多功能單元都是深度流水化的。

GPU是一個(gè)由多線程SIMD處理器組成的多處理器,加自己的線程塊調(diào)度程度。

GPU硬件中有兩級(jí)硬件調(diào)度程序:

1) 線程塊調(diào)度程序,將線程塊分配給多線程SIMD處理器

2) SIMD處理器內(nèi)部的SIMD線程調(diào)度程序,調(diào)度何時(shí)運(yùn)行SIMD指令線程

在多線程SIMD處理器中執(zhí)行的指令,由并行功能單元來(lái)執(zhí)行,稱為SIMD車道,每個(gè)SIMD處理器中的車道數(shù)在各代GPU中是不同的。

對(duì)于fermi,每個(gè)寬度為32的SIMD指令線程被映射到16個(gè)物理SIMD車道,所以每條SIMD指令需要兩個(gè)時(shí)鐘周期才能完成。

記分板,可以讓SIMD線程調(diào)度程序,了解哪個(gè)SIMD指令已經(jīng)做好運(yùn)行準(zhǔn)備。

總結(jié)

以上是生活随笔為你收集整理的向量体系结构(2)----SIMD指令集扩展和GPU的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。