系統分析師上午題-第 1 章 計算機組成與體系結構
1.1 試題1(2018年上半年試題14)
答案:C 採用的是SIMD架構
解析:
一、CPU與GPU的區別是什麼?
中央處理器CPU,Central Processing Unit是一塊超大規模的積體電路,是一臺計算機的運算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋計算機指令以及處理計算機軟體中的資料。中央處理器主要包括運算器(算術邏輯運算單元,ALU,Arithmetic Logic Unit)和高速緩衝儲存器(Cache)及實現它們之間聯絡的資料(Data)、控制及狀態的匯流排(Bus)。它與內部儲存器(Memory)和輸入/輸出(I/O)裝置合稱為電子計算機三大核心部件。
圖形處理器GPU,Graphics Processing Unit,又稱顯示核心、視覺處理器、顯示晶片,是一種專門在個人電腦、工作站、遊戲機和一些移動裝置(如平板電腦、智慧手機等)上影象運算工作的微處理器。用途是將計算機系統所需要的顯示資訊進行轉換驅動,並向顯示器提供行掃描訊號,控制顯示器的正確顯示,是連線顯示器和個人電腦主機板的重要元件,也是“人機對話”的重要裝置之一。顯示卡作為電腦主機裡的一個重要組成部分,承擔輸出顯示圖形的任務,對於從事專業圖形設計的人來說顯示卡非常重要。
CPU和GPU之所以大不相同,是由於其設計目標的不同,它們分別針對了兩種不同的應用場景。主要區別如下。
CPU需要很強的通用性來處理各種不同的資料型別,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理
而GPU面對的則是型別高度統一的、相互無依賴的大規模資料和不需要被打斷的純淨的計算環境。
於是CPU和GPU就呈現出非常不同的架構。
其中上圖中綠色的是計算單元,橙紅色的是儲存單元,橙黃色的是控制單元。
GPU採用了數量眾多的計算單元和超長的流水線,但只有非常簡單的控制邏輯並省去了Cache。而CPU不僅被Cache佔據了大量空間,而且還有有複雜的控制邏輯和諸多優化電路,相比之下計算能力只是CPU很小的一部分。
從上圖可以看出:
Cache, local memory: CPU > GPU
Threads(執行緒數): GPU > CPU
Registers: GPU > CPU 多暫存器可以支援非常多的Thread,thread需要用到register,thread數目大,register也必須得跟著很大才行。
SIMD Unit(單指令多資料流,以同步方式,在同一時間內執行同一條指令)
CPU有強大的ALU(算術運算單元),它可以在很少的時鐘週期內完成算術計算。當今的CPU可以達到64bit 雙精度。執行雙精度浮點源算的加法和乘法只需要1~3個時鐘週期。CPU的時鐘週期的頻率是非常高的,達到1.532~3gigahertz(千兆HZ, 10的9次方)。
大的快取也可以降低延時。儲存很多的資料放在快取裡面,當需要訪問的這些資料,只要在之前訪問過的,如今直接在快取裡面取即可。
複雜的邏輯控制單元。當程式含有多個分支的時候,它通過提供分支預測的能力來降低延時。
資料轉發。 當一些指令依賴前面的指令結果時,資料轉發的邏輯控制單元決定這些指令在pipeline中的位置並且儘可能快的轉發一個指令的結果給後續的指令。這些動作需要很多的對比電路單元和轉發電路單元。
GPU是基於大的吞吐量設計。
GPU的特點是有很多的ALU和很少的cache。快取的目的不是儲存後面需要訪問的資料的,這點和CPU不同,而是為thread提高服務的。如果有很多執行緒需要訪問同一個相同的資料,快取會合並這些訪問,然後再去訪問dram(因為需要訪問的資料儲存在dram中而不是cache裡面),獲取資料後cache會轉發這個資料給對應的執行緒,這個時候是資料轉發的角色。但是由於需要訪問dram,自然會帶來延時的問題。
所以與CPU擅長邏輯控制,序列的運算。和通用型別資料運算不同,GPU擅長的是大規模併發計算,這也正是密碼破解等所需要的。所以GPU除了影象處理,也越來越多的參與到計算當中來。
GPU的工作大部分就是這樣,計算量大,但沒什麼技術含量,而且要重複很多很多次。就像你有個工作需要算幾億次一百以內加減乘除一樣,最好的辦法就是僱上幾十個小學生一起算,一人算一部分,反正這些計算也沒什麼技術含量,純粹體力活而已。
而CPU就像老教授,積分微分都會算,就是工資高,一個老教授資頂二十個小學生,你要是富士康你僱哪個?
GPU就是這樣,用很多簡單的計算單元去完成大量的計算任務,純粹的人海戰術。這種策略基於一個前提,就是小學生A和小學生B的工作沒有什麼依賴性,是互相獨立的。很多涉及到大量計算的問題基本都有這種特性,比如你說的破解密碼,挖礦和很多圖形學的計算。這些計算可以分解為多個相同的簡單小任務,每個任務就可以分給一個小學生去做。但還有一些任務涉及到“流”的問題。比如你去相親,雙方看著順眼才能繼續發展。總不能你這邊還沒見面呢,那邊找人把證都給領了。這種比較複雜的問題都是CPU來做的。
總而言之,CPU和GPU因為最初用來處理的任務就不同,所以設計上有不小的區別。而某些任務和GPU最初用來解決的問題比較相似,所以用GPU來算了**。GPU的運算速度取決於僱了多少小學生**,CPU的運算速度取決於請了多麼厲害的教授。教授處理複雜任務的能力是碾壓小學生的,但是對於沒那麼複雜的任務,還是頂不住人多。當然現在的GPU也能做一些稍微複雜的工作了,相當於升級成初中生高中生的水平。但還需要CPU來把資料喂到嘴邊才能開始幹活,究竟還是靠CPU來管的。
二、什麼是SIMD?
1.2 試題2(2018年上半年試題15)
答案:A
解析:
這一題主要考查的是計算機系統的層次結構,以下內容均取自教材:
計算機系統是一個硬體和軟體的綜合體,可以把它看做是按功能劃分的多級層次結構
(1)硬聯邏輯級。這是計算機的核心,由門、觸發器等邏輯電路組成。
(2)微程式級。這一級的程式語言是微指令集,程式設計師用微指令編寫的微程式一般直接由硬體執行。
(3)傳統機器級。這一級的機器語言是該機的指令集,程式設計師用機器指令編寫的程式可以由微程式進行解釋。
(4)作業系統級。從作業系統的基本功能來看,一方面它要直接管理傳統機器中的軟硬體資源,另一方面它又是傳統機器的延伸。
(5)組合語言級。這一級的機器語言是組合語言,完成組合語言編譯的程式稱為彙編程式。
(6)高階語言級。這一級的機器語言就是各種高階語言,通常用編譯程式來完成高階語言翻譯的工作。
(7)應用語言級。這一級是為了使計算機滿足某種使用者而專門設計的,因此這一級的機器語言就是各種面向問題的應用語言。
1.3 試題3(2018年上半年試題16-17)
答案:DB
解析:
根據內容,只有相聯存取才是根據內容來訪問,其他都是根據存取地址來訪問。
使用相聯存取只有Cache。
DRAM,隨機存取。
EERPROM,隨機存取。
CD-ROM,序列存取。
該題主要涉及的範圍是儲存器系統,以下內容均取自教程