计算机系统结构专业是软件还是硬件,计算机体系结构中软硬件和架构设计有哪些机会?...
軟件和硬件的架構(gòu)設(shè)計
在編程的時候可以通過程序提高系統(tǒng)的運行效率。當(dāng)前最為流行的編程方法是運用現(xiàn)代高級語言和腳本語言,如Java、Python等。它們采用解釋型執(zhí)行,支持動態(tài)類型,并具有很高的靈活性來支持復(fù)用。這類編程語言對程序員非常友好,可以用于快速開發(fā)大型工程,但它們的執(zhí)行效率不高。另一方面,在硬件層面,也可以通過改進(jìn)架構(gòu)來提升性能。但這個方向上 的唯一出路是轉(zhuǎn)變?yōu)轭I(lǐng)域?qū)S眉軜?gòu),而非繼續(xù)保持通用性。當(dāng)然可以為一套特征相近的任務(wù)專門定制一種系統(tǒng)架構(gòu)的設(shè)計,以達(dá)到最佳的性能。事實上,工程師也可以結(jié)合軟件和硬件,協(xié)同設(shè)計一門領(lǐng)域?qū)S玫木幊陶Z言,支持其特別優(yōu)化的系統(tǒng)架構(gòu)。
在軟件層面,麻省理工學(xué)院一個團隊的論文“There’s plenty of room at the Top”里提到,當(dāng)前我們常用的軟件編程環(huán)境的效率尚有很大的提升空間。他們選擇了一個小規(guī)模但具有足夠代表性的應(yīng)用——矩陣相乘。比較的基準(zhǔn)是一個Python 的實現(xiàn)版本。首先,他們用C語言實現(xiàn)了同樣的算法,得到了47倍的加速;然后在C語言版本的基礎(chǔ)上把循環(huán)并行化,得到了額外的8倍提速;接著,引入緩存和內(nèi)存訪問等相關(guān)優(yōu)化,使性能再次提高了20倍;最后,通過采用x86架構(gòu)上的SIMD指令,又獲得了10倍加速。結(jié)合以上的所有軟件優(yōu)化技術(shù),最終的實現(xiàn)版本比原始的Python基準(zhǔn)快了約63000倍。不得不說這是一個極大的性能提升。雖然這個程序只是一個比較易于優(yōu)化的例子,但我認(rèn)為它揭示了許多通過改進(jìn)軟件實現(xiàn)系統(tǒng)效率提升的機會。
那么,領(lǐng)域?qū)S玫挠布軜?gòu)又擁有什么樣的機 會呢?這類架構(gòu)通過針對特定應(yīng)用領(lǐng)域的定制化設(shè)計來達(dá)到更高的效率,支持整個領(lǐng)域的應(yīng)用,而不只是單一的一個應(yīng)用。它們是可編程的,這是與專用的ASIC(專用應(yīng)用集成電路,Application-Specific Integrated Circuits)芯片的不同之處。后者常見于手機等設(shè)備之上,通常用來執(zhí)行唯一的固定任務(wù),例如調(diào)制解調(diào)等,并不能通過編程來完成其他功能,而領(lǐng)域?qū)S眉軜?gòu)可以支持一系列相似的應(yīng)用。但是與通用處理器相比,設(shè)計此類架構(gòu)需要更多的領(lǐng)域?qū)S弥R,需要深入理解應(yīng)用的特征才能得到好的性能。這里也 存在著一個權(quán)衡:更靈活、更通用意味著更低的性能;更高性能則需要更加專注于特定領(lǐng)域。一個典型的可能也是目前最大的例子,就是深度學(xué)習(xí)類的應(yīng)用:現(xiàn)代神經(jīng)網(wǎng)絡(luò)處理器可以用于模型訓(xùn)練和任務(wù)推理。又如GPU,革命性地改變了圖形學(xué)應(yīng)用的性能。好消息是,雖然這類領(lǐng)域?qū)S锰幚砥鞑粔蛲ㄓ?#xff0c;但在這些特定領(lǐng)域中,需要持續(xù)追求更高的性能。實際上,機器學(xué)習(xí)也許是目前最重要、甚至唯一的新型編程方式:對數(shù)據(jù)進(jìn)行“編程”來產(chǎn)生有潛力的應(yīng)用,而不是按傳統(tǒng)的方式去寫許多代碼。深度學(xué)習(xí)正在引發(fā)一場機器學(xué)習(xí)的革命。現(xiàn)在,這一領(lǐng)域每周發(fā)表的論文數(shù)量已經(jīng)達(dá)到了一百篇左右。機器學(xué)習(xí)方向發(fā)表的論文數(shù)量,正如同摩爾定律一般飛速增長。人們對這一領(lǐng)域充滿著興趣和熱情,這就是一場新的革命。
領(lǐng)域?qū)S眉軜?gòu)
以典型的英特爾多核處理器中的一個核心為例,我們來分析其上每條指令執(zhí)行時所產(chǎn)生的能量消耗,例如一條從一級緩存中讀取數(shù)據(jù)至寄存器的指令,或者是一條完成一次浮點數(shù)乘法的指令。可以注意到,在這兩種情況下,多于一半的能量是被控制邏輯所消耗的。另外,從緩存中訪問指令也耗費了許多能量。所以,有高達(dá)60%~80%的能耗都是來源于獲取指令和解析其相應(yīng)的控制行為。如果可以改善這幾部分,那將帶來極大的能效提升。
1. 領(lǐng)域?qū)S眉軜?gòu)可以采用更簡單的并行方式來 處理一個特定應(yīng)用領(lǐng)域的問題,以減少所需的硬件控制邏輯。通用處理器中60%以上的能量都消耗在控制上。通過利用更簡單的并行方式,我們可以減少控制邏輯,從而減少處理指令的額外開銷。這包括兩種方法:一是從傳統(tǒng)多核處理器的 MIMD 架構(gòu)(多指令多數(shù)據(jù),即每個核心獨立獲取其指令流)轉(zhuǎn)向所謂的SIMD架構(gòu)(單指令多數(shù)據(jù),即將一條指令廣播至多個運算單元以并行處 理多個數(shù)據(jù))。由于取指令的數(shù)量大大減少,效率 將大幅提升。二是采用所謂的VLIW(超長指令字)架構(gòu),用更寬的指令來配置各個單元,以取代現(xiàn)代通用多核處理器中的猜測執(zhí)行和亂序執(zhí)行方式。后者被廣泛用于英特爾處理器和高端的ARM處理器中,但其需要大量的控制邏輯。因此可以再一次在控制方面取得了優(yōu)勢,降低了能耗。
2. 領(lǐng)域?qū)S眉軜?gòu)可以更加有效地利用片上和片外的存儲帶寬,以用戶顯式控制的存儲來取代傳統(tǒng)緩存。當(dāng)無法預(yù)知程序代碼的行為時,緩存對于通用處理器是非常靈活和高效的,但它們也有非常高的額外開銷。對比之下,當(dāng)應(yīng)用程序具有非常明確的數(shù)據(jù)流動模式時,則可以采用讓用戶顯式控制的存儲系統(tǒng)來達(dá)到更高的效率。所以可以將傳統(tǒng)的緩存系統(tǒng)替換成處理器結(jié)合顯式存儲的結(jié)構(gòu),并在需要時采用高效的片外數(shù)據(jù)預(yù)取。總之,正是由于可以明確知道應(yīng)用程序的特征,使得工程師可以完成上述的優(yōu)化設(shè)計。
3. 降低不必要的精度。IEEE的浮點數(shù)標(biāo)準(zhǔn)支持很高的精度,但也有很大的代價,可以將其替換成低精度的浮點數(shù)格式。類似地,也可以將32比特和64比特的整數(shù)降為8比特或16比特。例如,對于機器學(xué)習(xí)應(yīng)用,可以用小浮點數(shù)做模型訓(xùn)練,用小整數(shù)做任務(wù)推理。
4. 領(lǐng)域?qū)S玫木幊棠P?#xff0c;無論是TensorFlow還是CUDA等,都可以將上層應(yīng)用與下層架構(gòu)相匹配。
結(jié)合以上方法,領(lǐng)域?qū)S眉軜?gòu)完全可以在晶體管的使用效率和功耗開銷上取得顯著的優(yōu)勢。
舉報/反饋
總結(jié)
以上是生活随笔為你收集整理的计算机系统结构专业是软件还是硬件,计算机体系结构中软硬件和架构设计有哪些机会?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国海军假想敌部队首次采用我国空军涂装
- 下一篇: 辽宁号和国产航母配备空警600预警机