114 一般警察特考二等 刑事警察人員類別數位鑑識組 計算機系統(包括計算機結構、作業系統) 考古題詳解

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 位元乘法運算示意】

1000×10011000 \times 1001 10000000000010001001000\begin{array}{r} 1000\\ 0000\\ 0000\\ 1000\\ \hline 1001000 \end{array}
🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考的是「移位加法乘法器(Shift-and-Add Multiplier)」的硬體控制。

將乘積暫存器 PP 分成高、低兩部分:

  • PHP_H:高 4 位元,存放部分積。
  • PLP_L:低 4 位元,存放乘數及其右移結果。
  • 被乘數暫存於 MM。
  • 每次測試 PP 最右邊的最低有效位元 P0P_0:
  • 若 P0=1P_0=1,則 PH←PH+MP_H \leftarrow P_H+M。
  • 若 P0=0P_0=0,不進行加法。
  • 完成判斷後,將整個 8 位元乘積暫存器右移一位。
  • 4 位元乘法需重複執行 4 次。

公式為:

PH←PH+M(當 P0=1)P_H \leftarrow P_H+M \quad \text{(當 } P_0=1\text{)} P←P≫1P \leftarrow P \gg 1

(一)Control Test 演算法

暫存器設定

令:

  • MM:4 位元被乘數暫存器。
  • PP:8 位元乘積暫存器。
  • PHP_H:PP 的高 4 位元。
  • PLP_L:PP 的低 4 位元。
  • CC:迴圈計數器,初始值為 4。

初始化:

M←MultiplicandM \leftarrow \text{Multiplicand} PH←0000P_H \leftarrow 0000 PL←MultiplierP_L \leftarrow \text{Multiplier} C←4C \leftarrow 4

控制流程

  1. 測試 PLP_L 的最低位元 P0P_0。
  2. 若 P0=1P_0=1,執行:

PH←PH+MP_H \leftarrow P_H+M

  1. 將 8 位元乘積暫存器右移一位:

P←P≫1P \leftarrow P \gg 1

  1. 計數器減 1:

C←C−1C \leftarrow C-1

  1. 若 C≠0C\neq 0,回到步驟 1。
  2. 若 C=0C=0,PP 即為 8 位元乘積。

虛擬流程表示

PH←0000,PL←Multiplier,C←4若 P0=1,PH←PH+MP←P≫1C←C−1若 C≠0,重複執行否則輸出 P\begin{array}{l} P_H\leftarrow 0000,\quad P_L\leftarrow Multiplier,\quad C\leftarrow 4\\ \text{若 }P_0=1,\quad P_H\leftarrow P_H+M\\ P\leftarrow P\gg 1\\ C\leftarrow C-1\\ \text{若 }C\neq 0\text{,重複執行}\\ \text{否則輸出 }P \end{array}

(二)5×125\times 12 的執行過程

初始值

被乘數:

M=5=(0101)2M=5=(0101)_2

乘數:

Multiplier=12=(1100)2Multiplier=12=(1100)_2

因此:

PH=0000,PL=1100P_H=0000,\qquad P_L=1100 P=00001100P=00001100

每次先測試最低位元,再決定是否加法,最後右移。

執行表

次數測試前 PPP0P_0加法結果右移後 PP
10000 11000000\ 11000不加,PH=0000P_H=00000000 01100000\ 0110
20000 01100000\ 01100不加,PH=0000P_H=00000000 00110000\ 0011
30000 00110000\ 001110000+0101=01010000+0101=0101,得 0101 00110101\ 00110010 10010010\ 1001
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題25 分

有一個 32 位元的 CPU 執行有號數(Signed Number)的加法運算或減法運算,運算結果有可能發生滿溢(Overflow)的情況,請回答下列問題:

(一) 請說明加法運算與減法運算會發生滿溢的情形為何?(15 分)

(二) 請設計一個電路(或演算法)來檢查運算結果是否發生滿溢?(10 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 32 位元二補數(two’s complement)有號數的加減法與滿溢判斷。32 位元二補數可表示的範圍為

−231 至 231−1=−2,147,483,648 至 2,147,483,647。-2^{31}\ \text{至}\ 2^{31}-1 = -2,147,483,648\ \text{至}\ 2,147,483,647。

最高位元 x31x_{31} 是符號位元:00 表示非負數,11 表示負數。滿溢是指數學上的正確結果超出上述範圍;硬體仍會保留 32 位元結果,因此截去進位後,位元結果可能代表另一個數值。

(一)加法與減法的滿溢情形

加法 A+BA+B

只有兩個加數同號時,才可能發生滿溢:

  • 正數加正數,結果卻成為負數:正向滿溢。
  • 負數加負數,結果卻成為非負數:負向滿溢。
  • 兩個加數異號:不會發生有號滿溢。

以 32 位元表示,令 A31A_{31}、B31B_{31} 為加數符號位元,S31S_{31} 為結果符號位元,則加法滿溢條件為

A31=B31且S31≠A31。A_{31}=B_{31}\quad\text{且}\quad S_{31}\ne A_{31}。

例如,最大正數加 11:

011…111+000…001=100…000011\ldots 111 + 000\ldots 001 = 100\ldots 000

數學結果是 2312^{31},超出最大可表示值,位元結果的符號卻變成負數,因此發生滿溢。

減法 A−BA-B

減法可視為 A+(−B)A+(-B)。只有被減數與減數異號時,才可能滿溢:

  • 正數減負數,結果卻成為負數:正向滿溢。
  • 負數減正數,結果卻成為非負數:負向滿溢。
  • 被減數與減數同號:不會發生有號滿溢。

其條件為

A31≠B31且S31≠A31。A_{31}\ne B_{31}\quad\text{且}\quad S_{31}\ne A_{31}。

例如,最大正數減 −1-1 等同最大正數加 11,數學結果超出可表示範圍,結果符號卻為負,故發生滿溢。

(二)滿溢檢查電路或演算法

令 SS 為 32 位元運算結果,A31A_{31}、B31B_{31}、S31S_{31} 分別為兩個運算元與結果的符號位元。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題25 分

假設有一個程式在某單一處理器(CPU)上執行的指令中,有 2.5×1092.5 \times 10^9 道算術類指令、1.2×1091.2 \times 10^9 道 load/store 類指令,以及 2.0×1082.0 \times 10^8 道分支(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 則為總時脈週期數除以總指令數。

CPU 執行時間=總時脈週期數時脈頻率\text{CPU 執行時間} = \frac{\text{總時脈週期數}}{\text{時脈頻率}} 平均 CPI=總時脈週期數總指令數\text{平均 CPI} = \frac{\text{總時脈週期數}}{\text{總指令數}}

平行化的提升幅度以加速比計算:

加速比=單處理器執行時間平行處理器執行時間\text{加速比} = \frac{\text{單處理器執行時間}}{\text{平行處理器執行時間}}

解題方法

先依各類指令的數量與 CPI 計算總時脈週期數,再除以 2 GHz 求執行時間。平行化部分依題目指定的指令數變化,分別計算 4 核心與 8 核心的總週期數;每個核心的分支指令數維持不變,因此分支類總週期數不變。

(一)單處理器執行時間與平均 CPI

各類指令所需週期數如下:

  • 算術類:2.5×109×1=2.5×1092.5\times10^9\times1=2.5\times10^9 個週期
  • Load/store 類:1.2×109×10=12.0×1091.2\times10^9\times10=12.0\times10^9 個週期
  • 分支類:2.0×108×5=1.0×1092.0\times10^8\times5=1.0\times10^9 個週期

因此總時脈週期數為:

2.5×109+12.0×109+1.0×109=15.5×1092.5\times10^9+12.0\times10^9+1.0\times10^9 =15.5\times10^9

時脈頻率為 2 GHz=2×1092\text{ GHz}=2\times10^9 次/秒,故執行時間為:

15.5×1092×109=7.75 秒\frac{15.5\times10^9}{2\times10^9} =7.75\text{ 秒}

總指令數為:

2.5×109+1.2×109+2.0×108=3.9×1092.5\times10^9+1.2\times10^9+2.0\times10^8 =3.9\times10^9

平均 CPI 為:

15.5×1093.9×109≈3.97\frac{15.5\times10^9}{3.9\times10^9} \approx 3.97

(二)平行化後的提升幅度

題目將每個核心的分支指令數維持為 2.0×1082.0\times10^8 道;算術類與 load/store 類指令數則依指定除數調整。各核心時脈頻率相同,因此以各平行版本的總週期數除以 2×1092\times10^9 求時間,再與單處理器的 7.75 秒相比。

4 個核心

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題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):頁表指出該虛擬頁目前不在主記憶體,作業系統須將頁面載入主記憶體,並更新頁表等映射資訊。

命中通常可由較快的階層直接完成存取;錯失則須多花時間查找較低層,甚至由作業系統處理,因此會增加平均存取時間。命中率愈高,整體效能通常愈好;錯失率愈高,效能通常愈差。快取的平均記憶體存取時間可概念化為:

平均存取時間≈命中時間+錯失率×錯失代價\text{平均存取時間} \approx \text{命中時間} + \text{錯失率}\times\text{錯失代價}

解題方法

以一次記憶體存取的順序判斷三種錯失:

  1. 先查 TLB:命中時取得實體位址;錯失時查頁表。
  2. 再確認頁面是否在主記憶體:若不在,發生頁錯失;若在,取得實體位址。
  3. 最後查快取:只有資料已在主記憶體、且映射後的實體位址已確定,才進行快取查詢。快取命中即取出資料;快取錯失則向主記憶體讀取資料。

因此,TLB 錯失與頁錯失可以同時發生;但依題目所述「資料須先存在主記憶體,才能存在快取」,頁錯失與快取錯失不能同時發生。頁面載入主記憶體後,才會繼續快取查詢。

七種組合分析

TLB 錯失頁錯失快取錯失是否會發生及原因
否否否會。 TLB 命中、頁面在主記憶體,且所需資料也在快取中。
否否是**會。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題

刑事警察人員類別數位鑑識組《計算機系統(包括計算機結構、作業系統)》其他年度