www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]摘要:近幾年圖形處理器GPU的通用計(jì)算能力發(fā)展迅速,現(xiàn)在已經(jīng)發(fā)展成為具有巨大并行運(yùn)算能力的多核處理器,而CUDA架構(gòu)的推出突破了傳統(tǒng)GPU開發(fā)方式的束縛,把GPU巨大的通用計(jì)算能力解放了出來。本文利用GPU來加速AES算

摘要:近幾年圖形處理器GPU的通用計(jì)算能力發(fā)展迅速,現(xiàn)在已經(jīng)發(fā)展成為具有巨大并行運(yùn)算能力的多核處理器,而CUDA架構(gòu)的推出突破了傳統(tǒng)GPU開發(fā)方式的束縛,把GPU巨大的通用計(jì)算能力解放了出來。本文利用GPU來加速AES算法,即利用GPU作為CPU的協(xié)處理器,將AES算法在GPU上實(shí)現(xiàn),以提高計(jì)算的吞吐量。最后在GPU和CPU平臺(tái)上進(jìn)行了實(shí)驗(yàn),獲得了GPU的加速結(jié)果,并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行了優(yōu)化。
關(guān)鍵詞:圖形處理器;統(tǒng)一計(jì)算架構(gòu);高級(jí)加密標(biāo)準(zhǔn)算法

0 引言
    隨著通信技術(shù)高速發(fā)展,信息安全也越來越重要。加密技術(shù)是對(duì)通信系統(tǒng)或者存儲(chǔ)系統(tǒng)中的信息數(shù)據(jù)進(jìn)行保護(hù)的一個(gè)很重要的方式。AES(高級(jí)加密標(biāo)準(zhǔn))算法是一種分組密碼算法,具有極高的安全性能,自提出之日起便成為信息安全領(lǐng)域研究的熱點(diǎn)。由于該算法在實(shí)現(xiàn)方面具有設(shè)計(jì)簡(jiǎn)單,速度快,可并行處理,分組長(zhǎng)度可以改變,對(duì)處理器結(jié)構(gòu)無特殊要求等特點(diǎn),在電子商務(wù)、網(wǎng)絡(luò)安全和數(shù)據(jù)存儲(chǔ)等多個(gè)領(lǐng)域得到了廣泛的應(yīng)用。然而,硬件實(shí)現(xiàn)需要較長(zhǎng)的開發(fā)周期和很高的成本,并且硬件實(shí)現(xiàn)不靈活,不易后續(xù)的升級(jí)和維護(hù),而且只適合做部分算法的實(shí)現(xiàn),限制了應(yīng)用領(lǐng)域和范圍。近幾年GPU(圖形處理器)已經(jīng)成為普及的電子消費(fèi)品,在市場(chǎng)需求的驅(qū)動(dòng)下,GPU已經(jīng)發(fā)展成為具有巨大運(yùn)算能力和極高內(nèi)存帶寬的并行多核處理器。近幾年在某些信號(hào)處理任務(wù)中使用GPU的運(yùn)算性能超過了FPGA。
    傳統(tǒng)的GPU開發(fā)具有很大的難度,而且由于無法充分利用GPU的資源,并且很多的開發(fā)精力是用在將應(yīng)用轉(zhuǎn)換到圖形上,這就限制了GPU用作通用計(jì)算的應(yīng)用范圍,并且影響了GPU進(jìn)行通用運(yùn)算的性能。為了改變這一現(xiàn)狀,NVIDIA公司在2006年年底推出了一種利用GPU進(jìn)行通用計(jì)算開發(fā)的架構(gòu),稱作統(tǒng)一計(jì)算設(shè)備架構(gòu),簡(jiǎn)稱為CUDA。它對(duì)GPU的結(jié)構(gòu)和資源進(jìn)行了抽象表示,并且為GPU的資源提供了訪問接口,這就使得開發(fā)者能夠根據(jù)抽象的GPU結(jié)構(gòu)進(jìn)行通用計(jì)算應(yīng)用的設(shè)計(jì),并且可以充分利用到GPU中的資源。

1 AES算法分析
    AES算法由NIST在2001年11月26日公布,并在2002年5月26日成為標(biāo)準(zhǔn)。AES算法具有分組長(zhǎng)度和密鑰長(zhǎng)度均可變的分組密碼。密鑰長(zhǎng)度和分組長(zhǎng)度可以獨(dú)立地指定為128bit、192bit或256bit。AES加密的圈數(shù)是一個(gè)變量,主要依賴于密鑰長(zhǎng)度,所有的運(yùn)算都將在一個(gè)4×4字節(jié)的模塊上進(jìn)行。每圈包括4個(gè)順序步驟:圈密鑰加,字節(jié)代替,行移位,列混合。在加密以前,我們必須使用密鑰擴(kuò)展算法擴(kuò)展密鑰。
    狀態(tài)可以用字節(jié)為元素組成二維數(shù)組陣列,共4行,Nb列,Nb等于數(shù)據(jù)塊長(zhǎng)度除以32。密鑰的設(shè)計(jì)類似二維字節(jié)數(shù)組,也是4行,Nk列,且Nk等于密鑰塊的長(zhǎng)度除以32。AES算法使用的是圈變換,其變換的圈數(shù)Nr由Nb和Nk共同決定,如表1所示:


    從具體規(guī)則上,AES算法在進(jìn)行加解密運(yùn)算時(shí)都會(huì)按照三大步驟進(jìn)行,依次為1)初始化的圈密鑰加法;2)(Nr-1)圈變換;3)最后一圈變換。這里以加密過程為例,其加密過程用偽代碼表示如下。
   
    解密過程是加密過程的逆過程。

2 CUDA編程簡(jiǎn)介
2.1 CUDA簡(jiǎn)介
    CUDA全稱是Compute Unified Device Architecture,是NVIDIA公司在2006年11月推出的一種在GPU上進(jìn)行通用計(jì)算的架構(gòu)。它具有全新的并行編程模型,不需要像傳統(tǒng)GPU開發(fā)方式那樣進(jìn)行圖形API的映射就可以使用GPU的資源進(jìn)行并行計(jì)算。CUDA是一個(gè)包含軟件和硬件的完整的并行計(jì)算架構(gòu),它的硬件設(shè)備是具有多個(gè)流處理器核的圖形并且支持CUDA的GPU,軟件部分包括編譯工具、驅(qū)動(dòng)程序、runtime庫(kù)和一些常用的數(shù)學(xué)運(yùn)算庫(kù)。
2.2 CUDA中GPU結(jié)構(gòu)
    在CUDA架構(gòu)下,開發(fā)者可以通過創(chuàng)建和管理大量的線程來使用GPU的硬件資源進(jìn)行并行計(jì)算。在CUDA中線程的創(chuàng)建和切換是由硬件來實(shí)現(xiàn)的,不會(huì)占用軟件的執(zhí)行時(shí)間。在CUDA的rtmtime庫(kù)中提供了訪問GPU硬件資源的接口,用戶通過調(diào)用runtime庫(kù)中的函數(shù)就可以直接訪問GPU的硬件資源。CUDA的編程語言是一種C語言的擴(kuò)展,提供了通用的DRAM尋址方式,從而提供了很大的編程靈活性。操作系統(tǒng)可以管理多個(gè)并發(fā)運(yùn)行的CUDA程序和圖形應(yīng)用程序來訪問GPU。

3 CUDA編程模型
    由于GPU的特點(diǎn),它很適合做高密度數(shù)據(jù)的并行運(yùn)算,但是對(duì)于不能并行的具有復(fù)雜執(zhí)行路徑的程序執(zhí)行效率就會(huì)很低。因此當(dāng)通過CUDA在GPU上進(jìn)行通用計(jì)算的開發(fā)時(shí),是把在應(yīng)用程序中高密度數(shù)據(jù)可以進(jìn)行并行計(jì)算的部分做成一個(gè)稱作kernel的函數(shù)在GPU設(shè)備上執(zhí)行,而應(yīng)用程序中的其他串行執(zhí)行的部分由主機(jī)上的CPU來完成。一個(gè)在GPU上執(zhí)行的kernel可以包含極高數(shù)量并發(fā)執(zhí)行的線程,在CUDA架構(gòu)中是通過設(shè)計(jì)kernel中的線程來完成通用計(jì)算的GPU實(shí)現(xiàn)的。主機(jī)和GPU設(shè)備之間的交互是通過在主機(jī)和設(shè)備各自的DRAM之間傳輸數(shù)據(jù)來實(shí)現(xiàn)的,而這種數(shù)據(jù)傳輸是由設(shè)備的DMA引擎完成的,因此數(shù)據(jù)的傳輸并不會(huì)造成太多主機(jī)CPU開銷。
    一個(gè)kernel中的線程是被分成具有相同大小的線程塊的,線程塊可以是一維、二維或者三維的,因此對(duì)應(yīng)的線程就可以具有一維、二維或者三維的索引。在一個(gè)線程塊中每個(gè)線程都具有一個(gè)一維的ID,這個(gè)ID和索引具有以下kernel關(guān)系:對(duì)于一維的線程塊,線程就等于其索引;對(duì)于大小為ID(Dx,Dy)的二維線程塊,索引為(x,y)的線程ID為(x+v Dx);對(duì)于大小為(Dx,Dy,Dz)的三維線程塊,索引為(x,y,z)的線程ID為(x+y Dx+z Dx Dy)。
    同一個(gè)線程塊中的線程之間可以通過同步操作來協(xié)同內(nèi)存訪問。當(dāng)通過調(diào)用內(nèi)置函數(shù)_syncthreads()在kernel中建立同步點(diǎn)時(shí),一個(gè)線程塊中的執(zhí)行到同步點(diǎn)的線程會(huì)被掛起直到這個(gè)線程塊中所有的線程都到達(dá)這個(gè)同步點(diǎn)。
    為了線程之間能夠有效地協(xié)同工作,同步操作被設(shè)計(jì)成只需要一條指令就可以實(shí)現(xiàn),并且同一個(gè)線程塊中的線程需要在同一個(gè)多核處理器上執(zhí)行。因此每個(gè)線程塊中全部線程的數(shù)量就受到一個(gè)處理器核上的存儲(chǔ)資源的限制。在當(dāng)前的GPU上,一個(gè)線程塊可以包含最多512個(gè)線程。
    雖然一個(gè)線程塊可以包含的線程數(shù)量有限制,但是一個(gè)kernel可以包括多個(gè)大小相同的線程塊,kernel中的線程數(shù)就等于每個(gè)塊中線程的數(shù)量乘以線程塊的數(shù)量。線程塊之間是獨(dú)立的,它們可以并行地執(zhí)行,也可以串行地順序執(zhí)行。這就允許線程塊在多個(gè)處理器核之間按照任何順序調(diào)度,從而使得開發(fā)具有靈活性和可擴(kuò)展性。而且這樣線程塊的數(shù)量就可以根據(jù)待處理數(shù)據(jù)的大小決定,而不是由系統(tǒng)中多核處理器的個(gè)數(shù)決定,也就是說線程塊的數(shù)量可以大于多核處理器的數(shù)量。因此kernel中可以具有大量的線程塊,從而具有極高的線程數(shù)。但是由于線程塊之間執(zhí)行的不確定性,不同線程塊的線程之間不能進(jìn)行同步操作。
3.1 算法設(shè)計(jì)
    首先把待處理的大數(shù)據(jù)塊劃分為尺寸相同的多個(gè)小數(shù)據(jù)塊,然后使用標(biāo)準(zhǔn)的AES算法對(duì)各個(gè)小數(shù)據(jù)塊進(jìn)行并行的運(yùn)算,運(yùn)算完成后把每個(gè)小數(shù)據(jù)塊的值按順序保存在一起,最后再把所有的輸出結(jié)果使用標(biāo)準(zhǔn)的AES算法來處理得到最后的結(jié)果,這樣就可以使用大量的線程來并行地對(duì)每個(gè)小數(shù)據(jù)塊進(jìn)行運(yùn)算。但是當(dāng)數(shù)據(jù)分塊足夠多線程數(shù)很大時(shí),就需要將線程劃分為多個(gè)線程塊。由于不同線程塊中的線程之間不能進(jìn)行同步,所以設(shè)計(jì)了兩個(gè)kernel,第一個(gè)kernel的任務(wù)是使用大量并發(fā)執(zhí)行的線程對(duì)原始數(shù)據(jù)分成的多個(gè)小塊數(shù)據(jù)進(jìn)行運(yùn)算,并把結(jié)果按照順序保存在設(shè)備DKAM中。等第一個(gè)kernel執(zhí)行完成后,由主機(jī)啟動(dòng)第二個(gè)kernel,這個(gè)kernel會(huì)根據(jù)主機(jī)提供的地址和數(shù)據(jù)大小對(duì)第一個(gè)kernel的計(jì)算得到的中間值進(jìn)行運(yùn)算,這一步只需用一個(gè)線程來執(zhí)行,由于中間值的大小遠(yuǎn)遠(yuǎn)小于原始數(shù)據(jù),所以這一步的計(jì)算開銷是很小的。
3.2 算法優(yōu)化
    GPU計(jì)算雖然高效,但是也有瓶頸。CPU代碼在調(diào)用GPU的kernel函數(shù)時(shí),首先要將內(nèi)存中的數(shù)據(jù)塊讀到流中,處理完后,又要將流寫回內(nèi)存。
    GPU和內(nèi)存的數(shù)據(jù)交換是一筆很大的開銷,因此從整體上減小這部分的開銷是優(yōu)化的關(guān)鍵。從GPU執(zhí)行的特點(diǎn)來看,每個(gè)線程都獨(dú)自從內(nèi)存中讀取一個(gè)分組長(zhǎng)度的數(shù)據(jù)塊,加密完成后寫回到內(nèi)存中。這樣,每加密一個(gè)分組長(zhǎng)度都要讀寫一次內(nèi)存,整體IO效率低。根據(jù)程序的局部性原理,如果一次讀入相鄰的多個(gè)分組,IO效率會(huì)大大提高。在前面的GPU程序中,我們是在一個(gè)線程里加密一個(gè)分組?,F(xiàn)在我們一次讀取多個(gè)分組進(jìn)行加密。這樣從整體上提高了IO效率。鑒于線程處理器還可以進(jìn)行并行操作,我們還可以使用流數(shù)據(jù)類型,進(jìn)一步提高并行度。
    改進(jìn)的算法如下:
    brook::Stream<int>*datastream;
    datastream.read(Block[m][n]);
    AESEncrypt_CPU_Simple(dtatastream);
    Datastream.write(Block[m][n]);
    改進(jìn)后,每個(gè)線程一次讀取n個(gè)相鄰的分組進(jìn)行加密。

4 實(shí)驗(yàn)設(shè)計(jì)
    實(shí)驗(yàn)采用的CPU是GeForce 9800 GTX+,軟件使用GUDA2.1,是在WmdowsXP操作系統(tǒng)下運(yùn)行的。
    CPU對(duì)AES算法的加速結(jié)果如圖1所示。從圖中可以看出,當(dāng)數(shù)據(jù)量較小時(shí)(小于100kB),GPU上的運(yùn)行性能要低于CPU,這是因?yàn)镚PU的特點(diǎn)是適合用作高密度數(shù)據(jù)的并行計(jì)算,而當(dāng)數(shù)據(jù)量較小時(shí)并無法充分利用到GPU的計(jì)算資源,而且從主機(jī)向設(shè)備傳輸輸入數(shù)據(jù)和由設(shè)備向主機(jī)返回?cái)?shù)據(jù)又會(huì)占用一定的開銷,因此對(duì)于小數(shù)據(jù)量的處理并不適合使用GPU。隨著數(shù)據(jù)量的增加,GPU運(yùn)算的性能就會(huì)明顯高于CPU。當(dāng)數(shù)據(jù)量大于1MB時(shí),GPU具有將近兩倍的加速倍數(shù),之后加速倍數(shù)就基本穩(wěn)定下來,達(dá)到飽和,這是因?yàn)楫?dāng)數(shù)據(jù)量已經(jīng)足夠多,充分利用了GPU的計(jì)算資源。由于GPU的計(jì)算能力遠(yuǎn)遠(yuǎn)高于它訪問設(shè)備內(nèi)存的帶寬以及主機(jī)與設(shè)備之間的數(shù)據(jù)傳輸帶寬,在應(yīng)用中這些數(shù)據(jù)傳輸?shù)拈_銷會(huì)成為限制GPU運(yùn)算整體性能的瓶頸,需要對(duì)GPU進(jìn)行優(yōu)化,才能充分開發(fā)出GPU的計(jì)算優(yōu)勢(shì)。
    圖1 GPU對(duì)AES算法的加速效果


    對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行優(yōu)化。通過優(yōu)化,可以提高超過兩倍的加速效果,在數(shù)據(jù)量大時(shí),優(yōu)化結(jié)果更為明顯,如圖2所示。

5 結(jié)論
    本文介紹了在GPU上實(shí)現(xiàn)AES加密算法的方法。首先介紹了AES算法,然后對(duì)CUDA中的GPU結(jié)構(gòu)和CUDA編程模型進(jìn)行了深入的研究。最后在GPU和CPU平臺(tái)上對(duì)設(shè)計(jì)進(jìn)行了實(shí)驗(yàn)對(duì)比,取得了理想的加速效果。其實(shí)在大多數(shù)應(yīng)用情況下,目前計(jì)算機(jī)顯卡配置的GPU運(yùn)算潛能并沒有完全釋放出來,本文介紹的加密方法是GPU通用計(jì)算具體應(yīng)用的一個(gè)體現(xiàn)。雖然目前以CUDA為代表的GPU仍然存在精度不高,程序編寫限制較多的缺點(diǎn),但隨著并行流處理概念的進(jìn)一步發(fā)展,GPU通用計(jì)算技術(shù)將在各個(gè)領(lǐng)域發(fā)揮更大的作用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉