108 年 國立中山大學資訊工程學系碩士班甲組《計算機結構》
第 1.1 題2 分
1.1 (2%) What is the binary representation of zero in the single-precision format? Express your answer
using binary format similar to x_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxx where x is either 0 or 1.
登入後即可作答並保存紀錄。
核心觀念
單精度浮點數採用 IEEE 754 格式,共 32 位元:
一般數值的表示式為
但當 exponent 全為 且 fraction 全為 時,表示零。
解題方法
零沒有正負之分時,通常採用正零,因此:
- sign:
- exponent:
- fraction:
依照題目指定格式組合:
第 1.2 題2 分
1.2 (2%) What is the binary representation of the decimal value -0.5 in single precision format?
登入後即可作答並保存紀錄。
核心觀念
本題考查 IEEE 754 單精度浮點數格式。單精度共 32 位元,分為:
- 1 位元符號位元
- 8 位元指數欄位
- 23 位元小數欄位
對於正常化數值,其表示式為:
其中 為單精度的 exponent bias。
解題方法
首先將 轉成二進位:
正常化後為:
因此:
-
符號位元
數值為負數,所以:
-
指數欄位
實際指數為 ,加上 bias :
的 8 位元二進位表示為:
-
小數欄位
正常化有效數為 ,隱藏的 leading 不存入欄位,因此小數欄位全部為 :
第 1.3 題2 分
1.3 (2%) What is the maximum magnitude of ordinary numbers (i.e., excluding infinity, NaN, and
subnormal numbers) in single precision floating-point representation? Express your answer in format
of x.xx xx x 2º where x ∈ {0,1} and e is the decimal value of the exponent.
登入後即可作答並保存紀錄。
核心觀念
IEEE 754 單精度浮點數共有 32 位元:
- 1 位元符號位元
- 8 位元指數欄位,偏移值(bias)為
- 23 位元 fraction 欄位
對於一般的正規化數(ordinary normalized number),表示式為
其中
為指數欄位所代表的無偏移指數。指數欄位全為 時保留給無限大與 NaN,因此最大一般數的指數欄位為:
所以實際指數為
解題方法
要使浮點數的絕對值最大,必須同時讓有效數字與指數都最大。
- 指數最大:指數欄位取 ,得到實際指數 。
- 有效數字最大:23 個 fraction 位元全部取 :
第 1.4 題2 分
1.4 (2%) What is the minimum magnitude of ordinary numbers (i.e., other than zero) in single precision
floating-point representation? Express your answer in format of x.xxxxx2º where x ∈ {0,1} and e
is the decimal value of the exponent.
登入後即可作答並保存紀錄。
核心觀念
IEEE 754 單精度浮點數由以下欄位組成:
- 符號位: bit
- 指數欄位: bits,偏移值(bias)為
- 小數欄位: bits
正常化的有限數表示為:
其中指數欄位 ; 保留給零與非正常化數, 保留給無限大與 NaN。
解題方法
要使數值的 magnitude(絕對值)最小,需要同時取:
- 最小的正常化有效數字:
也就是小數欄位全部為 。
- 最小的實際指數:
正常化數不能使用 ,因此最小指數欄位為 :
第 1.5 題2 分
1.5 (2%) What is the minimum magnitude of subnormal numbers in single precision floating-point
representation? Express your answer in format of x.xxxxx2º where x ∈ {0,1} and e is the decimal
value of the exponent.
登入後即可作答並保存紀錄。
核心觀念
IEEE 754 單精度浮點數包含:
- 1 位符號位元
- 8 位指數位元,偏移值(bias)為
- 23 位 fraction
當指數欄全為 且 fraction 不為 時,表示次正規數(subnormal number):
因此次正規數的有效指數為:
次正規數沒有隱含的開頭 。
解題方法
要找最小非零 magnitude:
- 符號不影響 magnitude,因此取正數。
- 指數欄設為全 ,有效指數為 。
- 23 位 fraction 中,最小的非零值只有最低位為 :
第 1.6 題2 分
1.6 (2%) What is the representable range of the single-precision floating-point numbers?
登入後即可作答並保存紀錄。
核心觀念
本題考查 IEEE 754 單精度浮點數(binary32)的格式與可表示範圍:
- 1 位元:符號位元
- 8 位元:指數欄位
- 23 位元: fraction 欄位
- 指數偏移量(bias)為
對於正規化數,其值為
其中正規化數的指數欄位為 。
解題方法
先求正規化數的指數範圍:
最大正規化數發生在:
- 符號位元為
- 指數欄位
- fraction 欄位全為
此時有效數字為
因此最大有限值為
最小正規化正數發生在:
- 指數欄位
- fraction 欄位全為
因此為
負數範圍由符號位元取得對稱結果。
IEEE 754 另有非正規化數(subnormal numbers)。當 且 時,沒有隱含的前導 ,其值為
最小正非正規化數為
第 1.7 題2 分
1.7 (2%) Is the distance between two neighboring single-precision floating-point numbers the same?
Why?
登入後即可作答並保存紀錄。
核心觀念
本題考查 IEEE 754 單精度浮點數的表示方式與「相鄰浮點數間距」的變化。
以 IEEE 754 binary32 為例:
- 1 個符號位元
- 8 個指數位元
- 23 個 fraction 位元
- 正規化數實際具有 24 位有效二進位數字,因為隱含最前面的
正規化浮點數可表示為
其中有效數字固定有 24 位,但指數 會改變數值的尺度。
解題方法
先固定指數 。相鄰的有效數字相差
因此,當指數固定時,相鄰浮點數的絕對距離為
所以在同一個區間
內,相鄰浮點數的間距相同;但當指數增加 時,間距也會增加為原來的 倍。
例如:
在 附近,下一個可表示的單精度浮點數為
兩者距離為
第 1.8 題2 分
1.8 (2%) For a 32-bit two's complement signed fixed-point representation with 16 integer bits and 16
fractional bits, is the distance between two neighboring numbers the same? Why?
登入後即可作答並保存紀錄。
核心觀念
本題考查二補數固定小數點表示法中,最小有效位元(Least Significant Bit, LSB)所代表的數值,以及可表示數值之間的間距。
16 個小數位表示小數點後最末位的權重為
因此,每增加一個最低位元,所表示的數值就增加 。
解題方法
將 32 位元二補數固定小數表示值視為一個帶符號的 32 位元整數 ,再將小數點向左移 16 位:
其中 的相鄰整數值相差 。若兩個相鄰可表示數值分別對應到 與 ,則其距離為
所以所有相鄰可表示數值的距離皆為
第 1.9 題2 分
1.9 (2%) Continued with the previous 32-bit signed fixed-point representation, what is the representable
range of the 32-bit signed fixed-point format?
登入後即可作答並保存紀錄。
核心觀念
本題考查二補數有號定點數的可表示範圍。
依前一題常用的 32 位元格式,假設配置為:
- 1 位元符號位元
- 15 位元整數部分
- 16 位元小數部分
因此每一個可表示數值的最小間距為
二補數的 32 位元原始整數範圍為
定點數的實際值為
解題方法
最小值由二補數位元型態
表示,其原始整數值為 ,所以
最大值由
表示,其原始整數值為 ,所以
整理得
因此數值範圍為
第 1.10 題2 分
1.10 (2%) In general, addition of two 32-bit fixed-point numbers can be finished in one clock cycle.
However, addition of two single-precision floating-point numbers usually takes more than one clock
cycle. Why? Hint: explain using the operations involved in floating-point addition/subtraction.
登入後即可作答並保存紀錄。
核心觀念
本題考查「固定小數點加法」與「浮點數加法」的硬體運算流程差異。
對於正常化的單精度浮點數,可表示為
其中包含:
- :符號位元
- :實際指數,儲存時使用 bias
- : fraction 欄位;正常數的有效尾數實際上有隱含的最高位 ,因此通常為 位有效精度
浮點數相加不只是將兩個 32 位元數字直接送入加法器,而是必須先處理指數與有效尾數。
解題方法
32 位元固定小數點數相加時,兩個數的二進位小數點位置固定且相同,因此可直接進行整數式加法:
每一位只需計算和與進位。硬體可使用 carry-lookahead adder、carry-select adder 或 prefix adder,使進位傳遞延遲縮短,在一個時脈週期內完成。若使用二補數,溢位也只需檢查最高位附近的進位:
浮點數加法則通常包含下列步驟:
-
拆解欄位:取出符號、指數與有效尾數,並補上正常數的隱含最高位 。
-
比較指數:計算兩個指數的差值
-
對齊有效尾數:將指數較小的數,其有效尾數向右位移 位,使兩數具有相同指數。例如:
必須先將第二項改寫為
-
有效尾數相加或相減:符號相同時做加法,符號不同時做大小數相減。
-
正規化:結果必須重新調整為 的形式。若加法產生進位,需將尾數右移一位並將指數加一;若減法產生前導零,需將尾數左移若干位並將指數減少相同數值。
第 2.1 題5 分
2.1 (5%) A processor is busy with computation 40% of the execution time, and is waiting for I/O access
60% of the execution time. If we replace the processor with a new one which is 10 times faster than
the old processor, what is the overall speedup gained using the new processor assuming that the
percentage of I/O access remains the same in both processors?
登入後即可作答並保存紀錄。
核心觀念
本題考查 Amdahl 定律:整體效能提升受限於未被加速的部分。
原執行時間中:
- 計算部分:,可因新處理器而加速 倍。
- I/O 等待部分:,不受處理器速度提升影響。
Amdahl 定律為:
解題方法
設舊處理器的總執行時間為 。
計算部分原本耗時:
新處理器快 倍,因此計算部分變為:
I/O 等待部分未被加速,仍為:
所以新處理器的總執行時間為:
整體 speedup 為:
第 2.2 題5 分
2.2 (5%) If you want to achieve a speedup of 80 for a computation task using 100 processors running
concurrently, what fraction of the computation task can be sequential according to Amdahl's law?
登入後即可作答並保存紀錄。
核心觀念
本題考查 Amdahl’s law(阿姆達定律),用來描述平行化後的理論加速比。
設:
- :原始計算中必須循序執行的比例
- :可平行執行的比例
- :處理器數量
- :整體加速比
使用 個處理器時,正規化後的執行時間為
因此加速比為
解題方法
題目給定:
代入 Amdahl 定律:
取倒數:
整理右式:
移項得:
第 2.3 題5 分
2.3 (5%) For an application program running on a multi-processor system with 32 processors, it takes
200 ns to handle reference in a remote memory. Assume that this application program always has hits
in the local memory except for remote memory access involving communication. Processors are
stalled on a remote request, and the processor clock is 3.3 GHz. Assume that the base CPI (cycles per
instruction) is 0.5 and all references hit in cache. How much faster is the multi-processor if there is no
communication versus if 0.2% of instructions involve remote communication references? Hint:
compute the new CPI first. The speedup is the ratio of the two CPI values.
登入後即可作答並保存紀錄。
核心觀念
當程式進行遠端記憶體存取(Remote Memory Access)時,處理器會產生停頓(Stall)。總 為基底 加上遠端存取所造成的額外停頓 。無通訊相較於有通訊的加速比(Speedup),即為兩者 之比值()。
詳細推導與計算
- 計算每次遠端記憶體存取之停頓週期數(Stall Cycles):
第 2.4 題5 分
2.4 (5%) Assume that 25% operations of a computation task are floating-point operations and average
CPI (cycles per instruction) for floating-point operations and other operations are 4.0 and 1.33
respectively. Suppose that 2% of the floating-point operations in the task are floating-point division
which has CPI = 20. Assume that the two design alternatives are to decrease the CPI of the floating-
point division to 2 or the decrease the average CPI of all floating-point operations to 2.5. Compare
these two design alternatives using processor performance equation. Which design choice is better?
Why? Hint: compute the CPI values of different designs.
登入後即可作答並保存紀錄。
核心觀念
本題使用處理器效能方程式:
兩種設計的指令數與時脈週期時間皆視為相同,因此只需比較整體平均 CPI;整體 CPI 必須依各類指令比例加權平均。
基準設計的 CPI
浮點運算占全部操作的 ,其他操作占 :
原本的浮點平均 CPI 已包含浮點除法。設非浮點除法的浮點運算 CPI 為 ,則:
方案一:將浮點除法 CPI 降至 2
新的浮點平均 CPI 為:
因此整體 CPI:
方案二:將所有浮點運算的平均 CPI 降至 2.5
新的整體 CPI 為:
第 3.1 題2 分
3.1 (2%) What is the maximum working frequency of the above CPU?
登入後即可作答並保存紀錄。
核心觀念
本題考查同步 CPU 的最小時脈週期與最大工作頻率。資料必須在下一個時脈邊緣前,完成暫存器輸出、組合邏輯運算,並滿足目的暫存器的 setup time。
對任一條暫存器到暫存器的路徑:
其中:
- :來源暫存器的 clock-to-Q 最大延遲。
- :該路徑上組合邏輯的最大延遲。
- :目的暫存器的 setup time。
- :時脈偏移與時脈不確定性所需的安全裕度。
因此,最大工作頻率為:
解題方法
題幹所稱的「above CPU」架構圖、各元件延遲與暫存器參數未附上,因此無法得到唯一的數值頻率;以下以標準同步 CPU 模型表示答案。
先找出 CPU 中所有從狀態元件出發、到下一個狀態元件結束的資料路徑,分別計算每條路徑的延遲:
CPU 的時脈週期必須滿足最慢路徑,因此:
第 3.2 題6 分
3.2 (6%) Assume that a computation task contains only 100 instructions and there is no hazard for these
instructions, what is the throughput of this task? What is the total latency of finishing executing this
task? What is the average cycle per instruction (CPI) in this task?
登入後即可作答並保存紀錄。
核心觀念
本題考查理想管線(pipeline)的 throughput、整體 latency 與平均 CPI。題目單獨提供的內容未明示管線級數 與時脈週期 ,以下採用計算機結構常見的理想 級管線模型:
- 共 條指令。
- 每個管線級耗用一個 clock cycle。
- 沒有 hazard,因此不會產生 stall 或 bubble。
- 管線填滿後,每個 cycle 完成一條指令。
解題方法
第一條指令必須經過全部 個管線級,因此在第 個 cycle 完成。之後每個 cycle 完成一條指令,所以第 條指令在
個 cycle 完成。
因此,整個任務的總執行 cycle 數為
總 latency 為
平均 CPI 為總 cycle 數除以指令數:
管線填滿後的穩態 throughput 為每個 cycle 完成一條指令:
若把「這 100 條指令從開始到全部完成」計算成整體平均 throughput,則為
以「每 cycle 完成幾條指令」表示時:
第 3.3 題4 分
3.3 (4%) If we want to reduce the pipelined stages from 5 to 4 by merging some of the five types of
pipelined operations mentioned above, what is the best design if the speed performance is the first
choice? And what is the maximum working frequency of the new design with four pipelined stages?
登入後即可作答並保存紀錄。
第 3.4 題4 分
3.4 (4%) What is data hazard? Give an assembly language example to show one type of data hazard.
登入後即可作答並保存紀錄。
核心觀念
資料危障(data hazard)是指在管線化處理器中,後續指令依賴前一指令產生的資料,但前一指令尚未完成寫入,導致後續指令在錯誤時間讀取資料的情況。
常見類型如下:
- RAW(Read After Write):後指令要讀取前指令寫入的資料,亦稱真正資料相依。
- WAR(Write After Read):後指令寫入資料,但前指令尚未讀取完畢。
- WAW(Write After Write):兩個指令寫入同一目的位置,寫入順序可能錯亂。
在一般依序發射的五級管線中,最常見的是 RAW。
解題方法與組合語言範例
以下使用類似 MIPS 的組合語言:
LW R1, 0(R2) ; R1 ← Memory[R2 + 0]
ADD R3, R1, R4 ; R3 ← R1 + R4
分析資料流:
LW指令將記憶體資料寫入暫存器R1。- 下一個
ADD指令需要讀取R1。 LW的資料要到MEM階段結束後才取得,但ADD在EX階段就需要使用R1。- 因此,
ADD可能在R1尚未準備好時讀取資料,形成 RAW data hazard,又稱 load-use hazard。
以五級管線 IF → ID → EX → MEM → WB 為例:
第 3.5 題4 分
3.5 (4%) What is super-pipeline? What are the advantages and disadvantages of super-pipeline design?
登入後即可作答並保存紀錄。
核心觀念
Super-pipeline(超級管線化)是將傳統 pipeline 的每個階段再細分成更小的子階段,使每個階段所需的組合邏輯延遲縮短,進而提高時脈頻率。
例如,原本的五級管線:
可再細分為更多級,使單一時脈週期能完成的工作量變少,但整體時脈變快。其重點是「增加 pipeline 深度」,不是增加同時發射的指令數,因此與 superscalar architecture 不同。
傳統管線的時脈週期約為:
其中 是最慢階段的組合邏輯延遲, 包含 pipeline register 的 setup time、clock-to-Q delay 與 clock skew。
若將邏輯階段細分為 個子階段,理想情況下:
因此時脈頻率可提高:
但由於每增加一級就會增加暫存器與時脈控制成本,實際加速通常小於理想的 倍。
解題方法
本題要求說明超級管線化的定義,以及其優缺點。作答時可依照「切細管線階段 → 時脈變快 → 效能收益與額外代價」的順序說明。
- 先指出 super-pipeline 是將原有管線階段細分,增加管線深度。
- 再說明階段變短後,時脈週期縮短,指令完成吞吐量提高。
- 最後分別列出效能上的優點,以及深管線帶來的硬體與控制成本。
優點
-
提高時脈頻率與指令吞吐量
每一級只需處理較少的組合邏輯,因此可以縮短時脈週期、提高 clock rate。當管線填滿後,理想狀況下仍可每個 clock cycle 完成一條指令,故單位時間完成的指令數增加。
-
提高管線階段的平衡性
若原本某個 pipeline stage 特別慢,可以再將其細分,使各階段延遲更接近,減少最慢階段對整體時脈週期的限制。
-
不必主要依靠多重功能單元
Super-pipeline 主要透過增加管線深度提升效能,不必像 superscalar 一樣大量複製執行單元並在同一週期發射多條指令,因此在某些設計中可降低功能單元複製的需求。
缺點
- 管線暫存器與時脈控制成本增加
第 4.1 題2 分
4.1 (2%) How many bits in total (including the tag bits and valid bits) are required for a direct-map
cache with 16K bytes of data and 16-byte blocks, assuming a 32-bit address and one valid bit for
each cache block?
登入後即可作答並保存紀錄。
核心觀念
直接對映快取(direct-mapped cache)中,每個主記憶體位址分為三個欄位:
- 區塊內位移(block offset):指出資料位於一個區塊中的哪個位元組。
- 索引(index):指出該資料應放入哪一條快取列。
- 標籤(tag):辨識目前快取列所儲存的記憶體區塊。
快取總位元數包含:
解題方法
快取資料容量為 bytes,每個區塊大小為 bytes,因此快取共有:
條快取列。
每個區塊大小為 bytes,所以區塊內位移需要:
快取共有 條列,因此索引需要:
地址長度為 bits,故標籤位元數為:
每條快取列包含:
- 資料: bytes bits
- 標籤: bits
- 有效位元: bit
因此每條快取列需要:
第 4.2 題2 分
4.2 (2%) Repeat the above problem for a two-way set-associative cache.
登入後即可作答並保存紀錄。
核心觀念
本題承接 4.1 的條件:資料快取容量為 、每個區塊大小為 、位址長度為 位元,每個 cache block 配置一個 valid bit。原試題 PDF
二路組合快取中,每個 set 包含兩個 cache block。位址格式分為:
總位元數為:
解題方法
- 計算 cache block 數量:
因此:
- 計算 set 數量:
因為是二路組合,每個 set 有兩個 block:
- 計算位址欄位:
- Block offset:每個 block 為 bytes,因此需要
- Set index:共有 個 sets,因此需要
- Tag:
第 4.3 題2 分
4.3 (2%) Repeat the above problem for a fully associative cache.
登入後即可作答並保存紀錄。
核心觀念
本題要求將上一題的快取記憶體配置改為「全相聯快取」重新分析。全相聯快取的核心特性是:
- 主記憶體的任一區塊可以放入快取中的任一列。
- 位址不再切成索引欄位(index)。
- 每次存取時,將位址中的標籤(tag)與快取內所有有效列的標籤同時比較。
- 若任一列比對成功,即為快取命中(hit);全部失敗則為未命中(miss)。
由於題目只提供「Repeat the above problem」,但未附上上一題的快取大小、區塊大小、位址長度與存取序列,因此無法產生上一題所要求的特定數值結果。以下以一般參數完整推導。
位址欄位的推導
設:
- 主記憶體位址長度為 位元
- 每個快取區塊大小為 bytes
- 快取共有 個區塊或快取列
- 記憶體採 byte-addressable
每個區塊內的 byte 數為 ,因此區塊內位移量需要:
全相聯快取沒有 index 欄位,所以其位址格式為:
標籤欄位長度為:
若每個區塊包含 個 word,且每個 word 有 bytes,則:
因此:
解題方法
1. 將位址換算成記憶體區塊編號
對 byte 位址 ,其記憶體區塊編號為:
區塊內位移量為:
在全相聯快取中,區塊編號的高位部分作為 tag。由於沒有 index,因此不需要計算固定的快取列位置。
2. 判斷命中或未命中
每次存取某一記憶體區塊時:
- 將該區塊的 tag 與快取內所有有效列的 tag 比較。
- 若任一列相等,則為 hit。
- 若所有列都不相等,則為 miss。
- 發生 miss 時,可將新區塊放入任何空的快取列。
- 若快取已滿,必須依照替換策略選擇一列,例如 LRU、FIFO 或 random。
全相聯快取的判斷條件可寫成:
與直接映射快取的差異
若上一題為直接映射快取,通常位址格式為:
其中:
第 4.4 題4 分
4.4 (4%) Compare the advantages and disadvantages of the above three different cache designs. Which
one is usually used in the design of TLB (translation lookaside buffer)? Why?
登入後即可作答並保存紀錄。
核心觀念
本題比較三種快取配置方式:
- 直接對映(direct-mapped)
- 全相聯(fully associative)
- 組相聯(set-associative)
設快取共有 個 cache lines,每個主記憶體區塊編號為 ,組相聯路數為 ,則組數為
區塊通常先依索引決定可放置的位置,再以 tag 比較是否命中。三種設計的主要差異,在於「一個記憶體區塊可以放在哪些 cache lines」。
一、直接對映快取
每個記憶體區塊只能放入唯一的一個 cache line:
查找時,利用 index 直接選出一個 cache line,再比較其 tag。
優點
- 硬體最簡單,只需一組 tag 比較器。
- 查找速度快,索引後只需檢查一個位置。
- 成本、面積與功率消耗最低。
- 不需要執行複雜的替換決策,因為每個區塊的位置已經固定。
缺點
- 衝突遺失(conflict miss)嚴重。
- 若兩個經常使用的區塊對映到同一個 line,即使快取仍有其他空間,也會互相替換,形成反覆失誤(thrashing)。
- 快取使用彈性最低,整體命中率通常不如組相聯與全相聯設計。
二、全相聯快取
任何記憶體區塊都可以放入快取中的任意一個 cache line,不使用固定的 index:
查找時,將輸入位址的 tag 同時與所有有效 cache lines 的 tag 比較。
優點
- 完全避免由配置位置造成的衝突遺失。
- 快取空間利用率最高,任何空閒 line 都可以存放新區塊。
- 在快取容量固定時,通常具有最高的命中率。
- 適合項目數量少、但每次查找都必須快速完成的結構。
缺點
- 需要同時比較最多 個 tags,必須使用大量平行比較器。
- tag 比較、結果選擇與替換硬體較複雜。
- 面積、功率與製造成本較高。
- 快取容量增大時,硬體成本與配線複雜度會快速上升。
- 當快取滿載時,必須使用替換策略,例如 LRU、FIFO 或 pseudo-LRU。
全相聯仍可能發生強制遺失(compulsory miss)與容量遺失(capacity miss),但不會發生因固定對映位置造成的衝突遺失。
三、組相聯快取
快取被分成 組,每組有 個 cache lines。記憶體區塊先對映到唯一的一組:
但在該組內,可以放入任意一個 cache line。查找時,先由 set index 找到該組,再平行比較該組內 個 tags。
直接對映與全相聯可視為組相聯的兩個極端:
- 直接對映:
- 全相聯:,只有一組
- 路組相聯:
優點
- 比直接對映大幅降低衝突遺失。
- 比全相聯需要的比較器少,硬體成本與功率較低。
- 查找速度、命中率與硬體複雜度之間具有良好折衷。
- 可在每組內採用替換策略,增加配置彈性。
缺點
第 4.5 題2 分
4.5 (2%) The average memory access time (AMAT) per instruction can be expressed as
AMAT = time for a hit + miss rate * miss penalty
Find the AMAT for a processor with a 1ns clock cycle time, a miss penalty of 20 clock cycles, a miss
rate of 0.05 misses per instruction, and a cache access time (including hit detection) of 1 clock cycle.
Assume that the read and write miss penalties are the same and ignore other write stalls.
登入後即可作答並保存紀錄。
核心觀念
平均記憶體存取時間可用下式表示:
其中:
- 命中時間:快取存取並完成命中判斷所需時間。
- 未命中率:每一個指令平均發生的 cache miss 次數。
- 未命中代價:一次 cache miss 額外花費的處理時間。
本題已說明讀取與寫入的 miss penalty 相同,且忽略其他寫入停頓,因此只需直接套用公式。
解題方法
處理各項數值的單位:
先以 clock cycle 為單位計算:
第 4.6 題4 分
4.6 (4%) Assume the miss rate of an instruction cache is 2% and the miss rate of the data cache is 4%. If
a processor has a CPI (cycle per instruction) of 2 without any memory stalls and the miss penalty is
100 cycles for all misses, determine how much faster a processor would run with a perfect cache that
never missed. Assume the frequency of all loads and stores is 36%.
登入後即可作答並保存紀錄。
核心觀念
本題考查快取未命中造成的記憶體停頓,以及 CPI 與加速比的計算。
記憶體停頓造成的額外 CPI 為:
實際 CPI 為:
完美快取完全不會 miss,因此不產生 miss penalty。
解題方法
設處理器執行 條指令。
- 指令快取停頓
每條指令都需進行一次指令快取存取,因此指令快取未命中次數為:
造成的停頓週期為:
換算成每指令的額外 CPI:
- 資料快取停頓
Load 與 Store 指令比例為 ,因此資料快取存取次數為:
資料快取 miss 次數為:
造成的停頓週期為:
因此:
第 4.7 題2 分
4.7 (2%) Suppose that in 1000 memory references, there are 40 misses in the first-level cache and 20
misses in the second-level cache. Assume the miss penalty from L2 cache to memory is 200 clock
cycles, the hit time of L2 cache is 10 clock cycles, and the hit time of L1 cache is 1 clock cycle. What
is the average memory access time? Hint: average memory access time = L1_hit_time +
L1_miss_rate * (L2_hit_time + L2_local_miss_rate * L2_miss_penalty) where the
L2_local_miss_rate is the number of misses in L2 cache divided by the total number of memory
accesses to L2 cache.
登入後即可作答並保存紀錄。
核心觀念
本題考查兩層快取的平均記憶體存取時間(Average Memory Access Time, AMAT)。
- 快取未命中率:
- 的區域未命中率(local miss rate)是以「實際存取 的次數」為分母,而不是全部記憶體參考次數:
題目給定公式:
解題方法
1. 計算 未命中率
1000 次記憶體參考中, 發生 40 次未命中:
2. 計算 的存取次數
只有 未命中的記憶體參考才會繼續查詢 ,因此:
第 4.8 題2 分
4.8 (2%) Continued with the previous problem, and assuming that there is 1.5 memory references per
instruction, what are the average stall cycles per instructions? Hint: average memory stall per
instruction = L1_misses_per_instruction * L1_miss_penalty + L2_misses_per_instruction * L2_miss_penalty
登入後即可作答並保存紀錄。
解題觀念與推導
計算每條指令的平均記憶體停頓週期(Average Memory Stall Cycles per Instruction)需結合每條指令的記憶體存取次數與各級快取的缺失率(Miss Rate)及缺失懲罰(Miss Penalty):
-
基本公式:
-
單位指令缺失數拆解:
-
代入公式:
參數假設與數值計算
第 5.1 題5 分
5.1 (5%) What is the advantage of single instruction multiple data (SIMD)? Compare the differences
between SIMD in conventional CPU (Central Processing Units) and SIMD in GPU (Graphics
Processing Units).
登入後即可作答並保存紀錄。
核心觀念
本題考查 Flynn 系統分類法中的 SIMD(Single Instruction, Multiple Data,單指令多資料) 架構,著重於以下核心觀念:
- 資料級平行(Data-Level Parallelism, DLP):透過單一控制單元抓取與解碼指令,將相同的操作廣播至多個算術邏輯單元(ALU),同時處理向量或陣列中的多個資料元素。
- 傳統 CPU 的 SIMD 架構:採用以向量暫存器(Vector Registers)為核心的媒體擴充指令集(如 x86 的 SSE/AVX、ARM 的 NEON)。
- GPU 的 SIMD 實作(SIMT 模式):以單指令多執行緒(Single Instruction, Multiple Threads, SIMT)為程式抽象介面,結合硬體 Warp / Wavefront 動態排程機制所實現的大規模平行 SIMD 執行架構。
解題方法
一、 SIMD 的核心優勢(Advantages of SIMD)
- 極高的計算吞吐量(High Throughput):
單一指令即可同時對長度為 的向量或陣列資料執行相同運算,使每個時脈週期(Clock Cycle)完成的運算次數擴增為原本純量(Scalar)執行的 倍,顯著提升資料平行應用的執行速度。 - 降低指令提取與解碼開銷(Low Control Overhead):
相較於 MIMD(多指令多資料)需要多個獨立的控制單元,SIMD 僅需一組控制邏輯負責指令提取(Instruction Fetch)與解碼(Instruction Decode)。晶片大幅節省了指令快取(I-Cache)頻寬與控制電路的晶片面積。 - 優秀的晶片面積與能源效率(Energy & Area Efficiency):
將省下的控制邏輯與分支預測電路面積,轉而配置給更多的 ALUs 與暫存器檔案(Register File),極大地提高了每瓦特效能(Performance per Watt)與單位面積運算密度。
二、 傳統 CPU SIMD 與 GPU SIMD 之差異比較
| 比較項目 | 傳統 CPU 中的 SIMD | GPU 中的 SIMD (SIMT) |
|---|---|---|
| 硬體執行模型 | 向量暫存器型 SIMD<br>(Vector-based SIMD) | 單指令多執行緒<br>(SIMT: Single Instruction, Multiple Threads) |
| 程式設計模型 | 顯式向量化(Explicit Vectorization)<br>工程師需直接呼叫向量 Intrinsics(如 __m256)或仰賴編譯器自動向量化,程式員顯式操控向量暫存器。 | 純量執行緒模型(Scalar Thread Model)<br>工程師撰寫單一純量執行緒(Thread)的 Kernel 邏輯,由硬體自動將多個執行緒(如 32 個)編組為 Warp/Wavefront 並以 SIMD 方式執行。 |
| 向量寬度與規模 | 較窄(Narrow Vector Width)<br>暫存器寬度通常為 128-bit 至 512-bit(例如 AVX-512 單一指令同時處理 16 個 32-bit 單精度浮點數)。 |