114 一般警察特考二等 刑事警察人員類別數位鑑識組 計算機系統(包括計算機結構、作業系統) 考古題詳解
第 一 題25 分
有一個 4 位元的算術邏輯運算(ALU)硬體架構設計如圖一,可以執行如圖二的無號數(Unsigned Number)4 位元乘法運算,請回答下列問題:
(一) 請寫出 Control Test 的演算法(或流程圖)。(10 分)
(二) 給定兩個十進位數字,被乘數(Multiplicand)為 5,乘數(Multiplier)為 12,請用上述(一)所寫出的 Control Test 演算法(或流程圖)完成圖一 ALU 的運算,並寫出執行過程。(10 分)
(三) 若要將圖一擴展成 32 位元的 ALU,且可以執行無號數和有號數(Signed Number)的乘法運算,請說明可以如何擴展或設計。(5 分)
【圖一:4 位元 ALU 硬體架構】
- Multiplicand Register(4-bit)
- 4-bit ALU
- Shift Right
- Control
- Product Register(8-bit)
- Write
- Test
【圖二:無號數 4 位元乘法運算示意】
登入後即可作答並保存紀錄。
核心觀念
本題考的是「移位加法乘法器(Shift-and-Add Multiplier)」的硬體控制。
將乘積暫存器 分成高、低兩部分:
- :高 4 位元,存放部分積。
- :低 4 位元,存放乘數及其右移結果。
- 被乘數暫存於 。
- 每次測試 最右邊的最低有效位元 :
- 若 ,則 。
- 若 ,不進行加法。
- 完成判斷後,將整個 8 位元乘積暫存器右移一位。
- 4 位元乘法需重複執行 4 次。
公式為:
(一)Control Test 演算法
暫存器設定
令:
- :4 位元被乘數暫存器。
- :8 位元乘積暫存器。
- : 的高 4 位元。
- : 的低 4 位元。
- :迴圈計數器,初始值為 4。
初始化:
控制流程
- 測試 的最低位元 。
- 若 ,執行:
- 將 8 位元乘積暫存器右移一位:
- 計數器減 1:
- 若 ,回到步驟 1。
- 若 , 即為 8 位元乘積。
虛擬流程表示
(二) 的執行過程
初始值
被乘數:
乘數:
因此:
每次先測試最低位元,再決定是否加法,最後右移。
執行表
| 次數 | 測試前 | 加法結果 | 右移後 | |
|---|---|---|---|---|
| 1 | 0 | 不加, | ||
| 2 | 0 | 不加, | ||
| 3 | 1 | ,得 |
第 二 題25 分
有一個 32 位元的 CPU 執行有號數(Signed Number)的加法運算或減法運算,運算結果有可能發生滿溢(Overflow)的情況,請回答下列問題:
(一) 請說明加法運算與減法運算會發生滿溢的情形為何?(15 分)
(二) 請設計一個電路(或演算法)來檢查運算結果是否發生滿溢?(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查 32 位元二補數(two’s complement)有號數的加減法與滿溢判斷。32 位元二補數可表示的範圍為
最高位元 是符號位元: 表示非負數, 表示負數。滿溢是指數學上的正確結果超出上述範圍;硬體仍會保留 32 位元結果,因此截去進位後,位元結果可能代表另一個數值。
(一)加法與減法的滿溢情形
加法
只有兩個加數同號時,才可能發生滿溢:
- 正數加正數,結果卻成為負數:正向滿溢。
- 負數加負數,結果卻成為非負數:負向滿溢。
- 兩個加數異號:不會發生有號滿溢。
以 32 位元表示,令 、 為加數符號位元, 為結果符號位元,則加法滿溢條件為
例如,最大正數加 :
數學結果是 ,超出最大可表示值,位元結果的符號卻變成負數,因此發生滿溢。
減法
減法可視為 。只有被減數與減數異號時,才可能滿溢:
- 正數減負數,結果卻成為負數:正向滿溢。
- 負數減正數,結果卻成為非負數:負向滿溢。
- 被減數與減數同號:不會發生有號滿溢。
其條件為
例如,最大正數減 等同最大正數加 ,數學結果超出可表示範圍,結果符號卻為負,故發生滿溢。
(二)滿溢檢查電路或演算法
令 為 32 位元運算結果,、、 分別為兩個運算元與結果的符號位元。
第 三 題25 分
假設有一個程式在某單一處理器(CPU)上執行的指令中,有 道算術類指令、 道 load/store 類指令,以及 道分支(Branch)類指令。
此處理器對算術類指令的 CPI(Clock Cycles Per Instruction)為 1,load/store 類指令的 CPI 為 10,分支類指令的 CPI 為 5,且處理器的時脈頻率為 2 GHz。請回答下列問題:
(一) 請問此程式的執行時間和平均 CPI 是多少?若有小數,計算到小數點後二位。(10 分)
(二) 如果程式平行化後,分別在 4 個和 8 個處理器核心上執行,每個處理器的時脈頻率依舊是 2 GHz,每個處理器上執行的分支類指令數維持不變,但於 4 個核心上執行的算術類指令數以及 load/store 類指令數,為原該指令數除以 2.8;於 8 個核心上執行的算術類指令數以及 load/store 類指令數,為原該指令數除以 5.6。
請問平行化後,相對於單處理器執行結果,分別提升多少?若有小數,計算到小數點後二位。(15 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查 CPU 執行時間與平均 CPI 的計算,以及平行化後的加速比。總時脈週期數為各類指令數乘上其 CPI 後加總;平均 CPI 則為總時脈週期數除以總指令數。
平行化的提升幅度以加速比計算:
解題方法
先依各類指令的數量與 CPI 計算總時脈週期數,再除以 2 GHz 求執行時間。平行化部分依題目指定的指令數變化,分別計算 4 核心與 8 核心的總週期數;每個核心的分支指令數維持不變,因此分支類總週期數不變。
(一)單處理器執行時間與平均 CPI
各類指令所需週期數如下:
- 算術類: 個週期
- Load/store 類: 個週期
- 分支類: 個週期
因此總時脈週期數為:
時脈頻率為 次/秒,故執行時間為:
總指令數為:
平均 CPI 為:
(二)平行化後的提升幅度
題目將每個核心的分支指令數維持為 道;算術類與 load/store 類指令數則依指定除數調整。各核心時脈頻率相同,因此以各平行版本的總週期數除以 求時間,再與單處理器的 7.75 秒相比。
4 個核心
第 四 題25 分
虛擬記憶體(Virtual Memory)的功能可以使多個程式間有效及安全地分享主記憶體。同時,虛擬記憶體也必須和快取記憶體(Cache Memory)系統階層式地共同工作,所以除非資料已經存在於主記憶體中,否則不能存在於快取記憶體中。
設計上,虛擬記憶體會使用頁(Page)表和轉譯側查緩衝器(Translation-Lookaside Buffer, TLB)對應到主記憶體。請回答下列問題:
(一) 記憶體階層存取效能(Performance)有兩個常用的衡量指標:命中(Hit)和錯失(Miss)。請說明何謂命中?何謂錯失?以及如何影響記憶體效能?(10 分)
(二) 在記憶體階層的整體運作上,主記憶體存取可能會遇到三種錯失:TLB 錯失、頁錯失和快取(Cache)錯失。設想這三種錯失有一種或多種發生,可以組合成七種可能性。請對每一種可能性,說明是否真的會發生,以及在什麼情況下會發生?(15 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查記憶體階層中「命中」與「錯失」的意義,以及虛擬位址經過 TLB、頁表、主記憶體與快取時,三種錯失如何互相制約。
- 命中(hit):在目前查詢的階層中找到所需資訊。例如 TLB 命中,表示在 TLB 找到虛擬頁號對應的實體頁框號;快取命中,表示所需資料已在快取中。
- 錯失(miss):目前階層找不到所需資訊,必須到下一層查找。例如 TLB 錯失要查頁表;快取錯失要向下一層記憶體取得資料。
- 頁錯失(page fault):頁表指出該虛擬頁目前不在主記憶體,作業系統須將頁面載入主記憶體,並更新頁表等映射資訊。
命中通常可由較快的階層直接完成存取;錯失則須多花時間查找較低層,甚至由作業系統處理,因此會增加平均存取時間。命中率愈高,整體效能通常愈好;錯失率愈高,效能通常愈差。快取的平均記憶體存取時間可概念化為:
解題方法
以一次記憶體存取的順序判斷三種錯失:
- 先查 TLB:命中時取得實體位址;錯失時查頁表。
- 再確認頁面是否在主記憶體:若不在,發生頁錯失;若在,取得實體位址。
- 最後查快取:只有資料已在主記憶體、且映射後的實體位址已確定,才進行快取查詢。快取命中即取出資料;快取錯失則向主記憶體讀取資料。
因此,TLB 錯失與頁錯失可以同時發生;但依題目所述「資料須先存在主記憶體,才能存在快取」,頁錯失與快取錯失不能同時發生。頁面載入主記憶體後,才會繼續快取查詢。
七種組合分析
| TLB 錯失 | 頁錯失 | 快取錯失 | 是否會發生及原因 |
|---|---|---|---|
| 否 | 否 | 否 | 會。 TLB 命中、頁面在主記憶體,且所需資料也在快取中。 |
| 否 | 否 | 是 | **會。 |