1. 程式人生 > >2018-2019-1 20165336《資訊安全系統設計基礎》第四周學習總結

2018-2019-1 20165336《資訊安全系統設計基礎》第四周學習總結

2018-2019-1 20165336《資訊安全系統設計基礎》第四周學習總結

1.教材學到的知識點

  • Y86-64中程式設計師(彙編程式設計師、編譯器等)可見的狀態包括程式暫存器、條件碼、程式狀態、程式計數器(PC)、記憶體
  • Y86-64中有15個程式暫存器分別是%eax %ecx %edx %ebx %esp %ebp %esi %eadi ZF SF OF PC Stat DMEM
  • Y86-64指令支援的整數操作的長度是8位元組
  • Y86-64的指令編碼長度是1-10位元組,指令編碼長度從1-6個位元組不等。一條指令含有一個單位元組的指令指示符,可能含有一個單位元組的暫存器指示符,還可能含有一個四位元組的常數字
  • Y86-64中共有7個跳轉指令,分別為jmp、jle、jl、je、jne、jge、jg。
  • Y86-64的狀態碼AOK表示正常操作,3表示遇到非法地址,HLT 處理器執行halt命令,ADR 遇到非法地址,INS 遇到非法指令
  • 實現一個數字系統需要三個主要的組成部分:計算對位進行操作的函式的組合邏輯、儲存位的儲存器元素,以及控制儲存器元素更新的時鐘訊號。
  • 與、或、非三種邏輯閘可以用一種門(與非門, 或者 或非門)實現。

  • 多路複用器。多路複用器根據輸入控制訊號的值,從一組不同的資料訊號中選出一個。
  • ALU是一種組合電路,暫存器是一種時序電路,區分在有沒有時鐘。
  • 每當每個時鐘到達上沿時,值才會從暫存器的輸入傳送到輸出。我們的Y86處理器會用時鐘暫存器儲存程式計數器(PC)、條件程式碼(CC)和程式狀態(Stat)。
  • 暫存器檔案有兩個讀埠,還有一個寫埠。這樣一個多埠隨機訪問儲存器允許同時進行多個讀和寫操作。向暫存器檔案寫入字是由時鐘訊號控制的。
  • Y86-64中,指令執行分為6個階段取指(fetch)、譯碼(decode)、執行(execute)、訪存(memory)、寫回(write)、更新PC(PC update)
  • 在執行階段,算數/邏輯單元(ALU)要麼執行指令指明的操作(根據ifun的值),計算儲存器引用的有效地址,要麼增加或減少棧指標。得到的值我們稱為valE。在此,也可能設定條件碼。對一條跳轉指令來說,這個階段會檢驗條件碼和分支條件,看是不是應該選擇分支
  • rrmovl是暫存器-暫存器傳送,irmovq是立即數-暫存器傳送,不需要訪存。
  • 在SEQ+中,建立狀態暫存器來儲存在一條指令執行過程中計算出來的訊號。然後,當一個新的時鐘週期開始時,這些訊號值通過同樣的邏輯來計算當前指令的PC。
    SEQ+中對狀態元素的改變稱為電路重定時,在SEQ+的各個階段之間插入了流水線暫存器,並對訊號重新排列。

教材學習中的問題和解決過程

書中例題指令編碼問題:需要掌握Y86-64指令集,Y86-64指令集的功能碼,Y86-64程式暫存器識別符號

考試錯題總結

  • 1.4.在Y86-64中,對一條跳轉指令,決定是不是應該選擇分支的階段是()
    A . fetch
    B . decode
    C . execute
    D . memory
    E . write back
    F . PC update
    正確答案: C
    解析:在執行階段,算數/邏輯單元(ALU)要麼執行指令指明的操作(根據ifun的值),計算儲存器引用的有效地址,要麼增加或減少棧指標。得到的值我們稱為valE。在此,也可能設定條件碼。對一條跳轉指令來說,這個階段會檢驗條件碼和分支條件,看是不是應該選擇分支。

  • 2.圖中的程式碼說明異常處理的細節問題是()
    A . 同時多條指令引起異常
    B . 指令執行引起異常,後來由於分支預測錯誤,取消了該指令
    C . 不同階段更新系統狀態的不同部分
    D . 與流水線無關的異常
    正確答案: B
    解析:在這個程式中,流水線會預測選擇分支,因此他會取出並以一個值為0xFF的位元組作為指令。譯碼階段會因此發現一個非法指令異常。稍後,流水線會發現不應該選擇分支,因此根本就不應該取出位於地址0x00e的指令。流水線控制邏輯會取消該指令,但是我們想要避免出現異常。