[密码学基础][信息安全][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第一篇]不同类型的处理器
這是每個密碼學(xué)博士生應(yīng)該知道的52件事系列的第一篇文章。PhD研究生在第一年結(jié)束的時候應(yīng)該掌握這些問題。并且盡可能早的在他們能放棄的時候放棄(23333)無論怎樣,我們會將這些問題在接下來的一年里表達(dá)出來,我自愿的為這個第一個事情的編寫做出貢獻(xiàn)。這個第一個主題就是計算機(jī)架構(gòu),它被表達(dá)成下面的問題:
下面這些有什么不同?
- 一個通用的處理器
- 一個通用的帶指令集擴(kuò)展的處理器
- 一個專用的處理器(協(xié)同處理器)
- 一個FPGA
沒有一個嚴(yán)格的通用處理器的定義,然而,一般認(rèn)為如果處理器是圖靈完備的那么就是通用處理器。這個包括了所有能完成計算可計算任務(wù)的處理器。(例如,能夠計算所有圖靈機(jī)能計算的)。我不會仔細(xì)研究圖靈機(jī)的定義,但是如果現(xiàn)在你已經(jīng)不理解我說什么了,那么我推薦你看Theory of Computation[1]這本書。注意盡管這個沒有性能和指令能力集的概念,事實上,一些研究者已經(jīng)證明了你只需要一個指令就可以完成圖靈完備[2]。在如今的現(xiàn)代處理器下,大多數(shù)可編程的CPU都被認(rèn)為是通用的。
把一個CPU設(shè)計成通用的會導(dǎo)致性能的開銷。一個通用處理器可能計算任何可計算的任務(wù),但是它處理重復(fù)復(fù)雜的任務(wù)的性能將不會很好。處理器設(shè)計者會基于最小架構(gòu)包括擴(kuò)展指令集來完成那些經(jīng)常被各種各樣的應(yīng)用使用的任務(wù)。雖然功能上被擴(kuò)展過的架構(gòu)和最小架構(gòu)沒什么不同,但是實際上在終端用戶看來有著巨大的性能差異。
既然我們都為密碼學(xué)工作,那么我集中在一個使用擴(kuò)展指令的密碼學(xué)例子。考慮一個使用AES加密的桌面應(yīng)用機(jī)器。任何來自其他儲存設(shè)備的讀取都需要在被緩存之前給一個CPU中斷來完成內(nèi)容的解密。磁盤獲取時刻miss cache已經(jīng)很糟糕了,同時還要加上解密的時間,我們就不得不重新考慮磁盤加密了。我們很清楚AES是我們復(fù)雜的重復(fù)任務(wù)同時我們只有一個沒有指令集擴(kuò)展的通用CPU,我們只能用流操作實現(xiàn)解密。Intel和AMD都意識到磁盤加密的需求,為了減少其他存儲器獲得數(shù)據(jù)使用AES的開銷,在桌面CPU的流水線上設(shè)計了AES-NI x86擴(kuò)展指令集來加速加密磁盤。
如果你想急速所有的計算,最優(yōu)化的方法就是使用一個專用的處理器或者一個專用集成電路。但是這樣我們就為了性能失去了通用處理器的靈活性。這種處理器通常和通用處理器是緊密耦合的,用術(shù)語就是協(xié)同處理器(co-processor)。注意,一個協(xié)處理器可能和通用處理器有相同的包,但是不必集成通用處理器的架構(gòu)。也就是說,我們看看現(xiàn)在的處理器架構(gòu),Intel和AMD早已集成了聲卡,顯卡和數(shù)字信號處理器到它們的CPU。這個額外的功能通過專用寄存器呈現(xiàn)出來,同時協(xié)處理器變成一個分離的被通用處理器管理的組件。
最終我們看看FPGA(Field-Programmable Gate Arrays)。這個數(shù)字集成電路(ASIC)和通用處理器的中間產(chǎn)品。如果一個應(yīng)用需要高性能同時需要不頻繁的修改,那么FPGA可能是最好的選擇。為了理解FPGA,想象一下成千上萬個電路接線板和成千上萬的邏輯門和查找表(復(fù)用器表示內(nèi)存)放在電路接線板上。如果你把一個應(yīng)用描述成一組邏輯門和時序約束,那么你能把他們放在電路板上,然后生成一個電路來計算你的應(yīng)用。一個FPGA支持重新編程的靈活性。這個和通用處理器主要區(qū)別就是你怎樣設(shè)計和實現(xiàn)你的應(yīng)用。為了充分利用硬件,你必須使用**硬件描述語言(Verilog or VHDL)**把應(yīng)用描述成一組硬件組件和事務(wù)。這個過程將會頻繁的使用在通用和專用處理器原型機(jī)生產(chǎn)之前。然而,這并不是沒有缺點(diǎn)。設(shè)計一個有著底層構(gòu)建的程序?qū)沟闷涫直恐亍M瑫r,能源消耗和硬件花費(fèi)要比嵌入集成電路的通用處理器要高。近來,FPGA廠家Xilinx已經(jīng)開始把帶有ARM的FPGA通用處理器集成到一個包中。這個會讓FPGA能夠被ARM核心使用,把它當(dāng)做一個靈活的協(xié)處理器。[3]結(jié)果,你能夠構(gòu)建專用邏輯去計算你的密碼操作急速你的密碼應(yīng)用。
總結(jié)一下,通用處理器能計算所有可計算的事務(wù)。相似的,帶擴(kuò)展指令集的通用處理器也能,并且它可能在特殊的應(yīng)用上做的更好。一個專用處理器(協(xié)處理器)也能在特定的任務(wù)上非常快但是只能計算特定的任務(wù)。一個FPGA可能被用于構(gòu)建上面的硬件但是相對于ASIC為了靈活性犧牲了性能。
[1] http://www.amazon.co.uk/Introduction-Theory-Computation-Michael-Sipser/dp/0619217642
[2] http://www.cl.cam.ac.uk/~sd601/papers/mov.pdf
[3] http://www.xilinx.com/products/zynq-7000/extensible-virtual-platform.html
參考鏈接:http://bristolcrypto.blogspot.com/2014/10/52-things-number-1-different-types-of.html
參考鏈接:https://www.cnblogs.com/zhuowangy2k/category/1538813.html
總結(jié)
以上是生活随笔為你收集整理的[密码学基础][信息安全][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第一篇]不同类型的处理器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机毕业设计Java在线小说系统(源码
- 下一篇: mysql初始化错误【一】Can't f