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