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的指令。流水線控制邏輯會取消該指令,但是我們想要避免出現異常。

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