# 2019-2020-1 20175333曹雅坤 《信息安全系統設計基礎》第四周學習總結

2019-2020-1 20175333曹雅坤 《信息安全系統設計基礎》第四周學習總結


  • 1.流水線化的處理器:
    將每條指令的執行分解成五步,每一個步驟由一個獨立的硬件部分或者階段來處理。指令步經流水線的各個階段,且每一個時鐘週期有一條新指令進入流水線。因此處理器能夠同時執行五條指令的不一樣階段。
  • 2.程序員可見的狀態:
    Y86程序中的每條指令都會讀取或者修改處理器狀態中的某些部分。這稱爲程序員可見狀態。
  • 3.Stat
    程序狀態的最後一個部分是狀態碼Stat,它代表程序執行的整體狀態;它會指示是正常運行仍是出現了某種異常。
  • 4.Y86
    一個簡單的、能夠稱之爲IA32指令集的子集的指令集;只包括四字節整數操做,尋址方式比較少。指令編碼長度從1——6字節不等。
    關於指令結構,每條指令的第一個字節代表指令的類型;這個字節分爲兩個部分,每部分四位:高四位是代碼部分(0——0xB),第四位是功能部分。這裏補充一些縮寫:當即數(i),寄存器(r)、存儲器(m)。指令附加的寄存器指示符字節依次是數據源(若是是當即數,把這一位設置成0xf)、目的寄存器/基址寄存器。有些指令須要附加四字節的常數字,採用小端法(倒序)編碼
  • 5.stat代碼可能取值反應了機器的不一樣狀態——
  • AOK:正常操做(除此以外的任何狀態都會使得處理器中止執行指令)
  • HLT:處理器執行halt指令
  • ADR:遇到非法地址2015/10/14 17:16:25
  • INS:遇到非法指令
  • 6.命令指明應該將代碼或者是數據放在什麼位置等。其中,以 .開頭的是彙編器命令,它們告訴彙編器調整地址,以便在那兒產生代碼或者是插入一些數據。
  • 7.指令模擬器YIS是模擬Y86機器代碼程序的執行而不用試圖去模擬任何具體處理器實現的行爲。
  • 8.pushl會把棧指針減4,並將一個寄存器值寫入存儲器中。所以,執行pushl %esp 和 popl %esp的結果是不固定的。
  • 9.邏輯門是數字電路的基本計算元素。邏輯門老是活動的,一旦一個門的輸入變化了,在很短的時間內,輸出就會相應地變化。
  • 10.將不少的邏輯門組合成一個網,就能構建計算塊,稱爲組合電路。限制:
    兩個或者多個邏輯門的輸出不能鏈接在一塊兒;
    這個網必須無環
  • 11.多路複用電路(MUX):根據輸入控制信號的值,從一組不一樣的數據信號中選出一個。
  • 12.關於HCL的幾點說明
    HCL中全部字級的信號都聲明爲int;
    在畫字級電路的時候,用中等粗度的線表示攜帶字的每一個位的線路,用虛線來表示布爾信號的結果
    在HCL中,表示默認狀況(即全部條件都沒有被選中的狀況)通常用1
  • 13.算術/邏輯單元(ALU):
    根據控制輸入的設置(0,1,2,3),電路會對數據輸入執行不一樣的算數或者邏輯操做(+,-,&,^)。
  • 14.時序電路
    有狀態而且在這個狀態上進行計算的系統
  • 15.時鐘寄存器&隨機訪問存儲器
    時鐘寄存器存儲單個位或者字。時鐘信號控制寄存器加載輸入值
    隨機訪問存儲器存儲多個字,用地址來選擇該讀入或者該寫哪一個字
  • 16.Y86的順序實現離不開SEQ處理器(順序處理器)。
    將處理一條指令的操做組織成一個特殊的階段序列;能夠設計一個充分利用硬件的處理器。
  • 17.處理操做的階段——
    取指:從寄存器讀取指令字節,地址爲程序計數器的值。計算下一條指令地址等於PC中的值加上已取出指令的長度
    譯碼:從寄存器文件中最多讀出兩個操做數
    執行:ALU執行指明的操做、引用的有效地址或者是修改棧指針
    訪存:將數據寫入存儲器或者從存儲器讀出數據
    寫回:寫兩個結果到寄存器文件
    更新PC:將PC設置成下條指令地址
  • 18.關於一些指令的處理步驟
    irmovl指令的處理與rrmovl相似,可是由於是長指令格式,因此程序計數器要加6
    指令call和ret與以前的popl和pushl相似。對於指令call,咱們要將valP也就是call以後的那條指令的地址壓入棧中在更新PC階段,將PC設置爲valC,也就是調用目的地
  • 19.SEQ的時序(逐步深化)
    要控制處理器中活動的時序,只須要寄存器和存儲器的時鐘控制
    除了指令存儲器只用來讀指令故而能夠看做組合邏輯以外,剩餘的程序計數器、條件碼寄存器、數據存儲器和寄存器文件須要經過一個時鐘信號來控制(控制時序)
    在每一個時鐘週期內,程序計數器都會裝載新的指令地址;只有執行整數運算指令的時候,纔會裝載條件碼寄存器。只有執行rmmovl,pushl,call時,纔會寫數據存儲器。
    Y86指令集的本質遵循這樣一項組織原則:處理器歷來不須要爲了完成一條指令的執行而去讀由該指令更新了的狀態 【如何理解?也就是說,處理器所「經手」的指令中,若是有某些是能夠改變機構狀態的;那麼必定先改變狀態以後再執行指令。這樣保證了操做的時序性(防止指令執行起來互相顛倒)】
  • 20.SEQ階段的實現 取指階段包括指令存儲器單元。一次從存儲器中讀出6個字節。第一個字節分爲ocode,ifun。根據icode的值,計算:instrvalid(發現不合法指令),needregids,need_valC。instrvalid和imemerror在訪存階段被用來產生狀態碼。 SEQ中譯碼和寫回階段都須要訪問寄存器文件。寄存器文件有四個端口,它支持同時進行兩個讀和兩個寫;每一個端口都一個地址鏈接和數據鏈接。若是某個地址端口上的值爲特殊標識符0xf,則代表不須要訪問寄存器。 執行階段包括算術/邏輯單元(ALU)。這個單元革命家alufun信號的設置,對輸入aluA和aluB執行ADD,SUB,AND,XOR運算。ALU的輸出就是valE信號。還包括條件碼寄存器。每次運行時,ALU都會產生三個與條件碼相關的信號——零,符號,溢出。用set_cc來控制是否應該更新條件碼寄存器。 訪存階段。兩個控制塊產生存儲器地址和存儲器輸入數據的值;另外兩個塊產生控制信號代表應該執行讀操做仍是寫操做。
相關文章
相關標籤/搜索