信息安全系统设计基础第六周学习总结—20135227黄晓妍
第四章
?
ISA
指令集體系統結構:一個處理器支持的指令和指令的字節級編碼。
不同的處理器家族有不同的ISA。
?
Y86
本章定義的一個簡單的指令集。包括各種狀態元素、指令和它們的編碼、一組編程規范和異常事件處理。
Y86處理器
以順序指令執行為基礎,設計了一個流水化的處理器。將每條指令分成5步,每個步驟都由一個獨立的硬件部分或者階段來處理。每個時鐘周期有新的指令進入流水線,即說該處理器可以同時執行5條指令的不同階段。(重點在于如何處理冒險沖突的情況。數電,EDA中的概念)
?
4.1.1 程序員可見狀態
即:Y86程序中每條指令都會讀取或者修改處理器狀態的某些部分的狀態。
幫助理解 ??程序員:用匯編代碼寫程序的人,產生機器代碼的編譯器。
具體內容?? 8個程序寄存器(與IA32 一樣),3個條件碼(ZF,SF,OF)。PC程序計數器存放當前正在執行指令的地址。存儲器,很大的字節組,保存著程序和數據。狀態碼Stat,表明程序的總體狀態。(見p232圖4—1)
?
4.1.2 Y86指令
背景知識:一條指令含有一個單字節的指令指示符。可能含有一個單字節的寄存器指示符,還可能含有一個四字節的常數字。字段fn說明是 某個整數操作opl,數據移動條件comvXX,分支條件Jxx。
?
movl指令:
???????? irmovl , rrmovl , mrmovl , rmmovl .
i:立即數r:寄存器m:存儲器。
第一個字母代表源操作數,第二個字符代表目的操作數。
注意:有存儲器尋址參與的兩種movl指令,采用基址和偏移量形式。不支持第二變址寄存器和任何寄存器值得伸縮。
(p233頁有以下詳情)
4個整數操作指令:addl,subl,andl,xorl.
?
7個跳轉指令。
?
6個條件傳送指令。
?
Call指令返回地址入棧,人后跳回目的地址。 Ret指令從這樣的調用中返回。
?
Pushl popl入、出棧。
?
Hatl將處理器停止,并將狀態碼設定為HLT。
?
4.1.3指令編碼
每條指令的第一個字節:
高四位0~B表示,是代碼部分。手工對指令編碼時參照p232頁的表格。注意rrmovl和cmovXX取值一樣。
低四位是功能部分。除了opl,jXX,cmovXX以外全為0.這三者的指令對應的值,參照p233頁的圖。
附加部分:
寄存器指示符:參照p234頁的表格,對應的寄存器的編號。
4字節的常數字(這個部分采用小端法):
?
根本前提:字節編碼和指令序列是一一對應的。
?
4.1.4Y86異常
使用狀態碼stat描述。一共有四種取值。(見p237)在Y86中除了等于1以外的其他情況,都會使處理器停止(在IA32或者更完整設計的ISA中,都會調用一個異常處理程序但這個是簡化版咯。)
?
4.1.5Y86完整的程序
和IA32的匯編程序一樣,包括代碼段數據段和代碼。“.”開頭的詞語是匯編器命令。
理解見p238.239.240的程序。基本和匯編程序是一樣的。
?
?
4.2邏輯設計
這部分與以前學習過的電子電路,數字電路,EDA關聯性非常大。
前提知識點:
*邏輯1是用1V左右的高電壓表示的。
*邏輯0使用0V左右的低電壓表示的。
*實現一個數字系統:計算對位進行操作的函數的組合邏輯、存儲位的存儲器元件、控制存儲器元件更新的時鐘信號。
4.2.1邏輯門:
只對單個位的數進行操作,而不是整個字。
與:&&? 或: ||? 非: !
?
4.2.2組合電路:
很多邏輯門組合成一個網構建的計算塊。(注意兩個或多個輸出不能連接在一起,并且無環。)
HCL表達式與C語言中的表達式的區別:
*HCL中輸出會持續隨著輸入變化而變化。而C語言中只有在程序執行到的時候才進行求值。
*HCL只對0和1操作。C語言中,0是FLASE,除了0以外的所有整數都是TRUE
*C中&&和||這兩種,是優先求值,(&和|并不是)第一個值就能確定結果的話,它不會去計算第二個值。但是HCL中并沒有這樣的規則。
?
4.2.3字級的組合電路和HCL整數表達式
例如:bool eq=(A==B);
在HCL硬件描述語言中,每個字都可以聲明為特定的位數。允許描述自是否相等。輸出eq表示AB是否相等。
畫字級電路的時候,實線表示攜帶字的每個位的線路,虛線表示布爾信號的結果。
?
多路復用函數使用情況表達式描述:
[
???????? Select:expr
]
Select代表什么時候選擇這種情況
Expr表示該種情況得到的數值
注意:順序執行,第一個求值為1 的情況會被選中。一般最后一個表達式是 1:expr。表示的意思是前面所有情況都沒有選中,就執行最后這個。
?
例如:
Int out=[
???????? S&&q :a
???????? S&&w:b
???????? 1??? :c
]
算術\邏輯單元:
兩部分組成:數據輸入,控制輸入。
控制輸入代表不同的算術或邏輯操作。
0:+
1:-
2:&
3:^
?
4.2.4集合關系
書上的引入例子是數據選擇器,是EDA 中學習的七個基本集合電路中的一個。
?
4.2.5存儲器和時鐘
時鐘寄存器:(硬件寄存器)存儲單個位或字。時鐘信號控制寄存器加載輸入值。
隨機訪問存儲器(存儲器)存儲字,用地址來選擇該讀或該寫那個字。
?
4.3Y86的順序實現
處理指令階段化:
取值、譯碼(從寄存器讀入最多兩個操作數)、執行、訪存(寫入,讀出存儲器)、寫回(寫最多兩個結果到寄存器)、更新PC(設置為下一條指令的地址)。
?
取值:valC四字節常數字valP下一條指令的地址。
譯碼:從寄存器讀入的數valA,valB.
執行:計算出的值valE.
訪存:從存儲器讀出的值valM.
寫回:寫入寄存器的結果。
更新PC
?
SEQ硬件結構:
計算中不一樣的地方:
???????? 四個寄存器的ID信號:srcA,valA的源;srcB,valB的源;dstE,寫入valE的寄存器;dstM,寫入valM的寄存器。
?
SEQ的時序:
需要時序控制的控制的四個硬件:程序計數器、條件碼寄存器、數據寄存器、寄存器文件。
它們的值要等時鐘信號(上升沿或者下降沿來臨時才改變)。
?
SEQ階段的實現:
取值:第一個字節Split:由icode和ifun組成。Align:一字節的寄存器指示符和四字節的常數字。
譯碼和回寫:讀、寫端口都有一個地址連接(寄存器ID)和數據連接(寄存器文件的輸出、入字)。
執行階段
訪存階段更新PC
?
參考資料:《深入理解計算機系統》
轉載于:https://www.cnblogs.com/angelahxy/p/4889991.html
總結
以上是生活随笔為你收集整理的信息安全系统设计基础第六周学习总结—20135227黄晓妍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建本地LNMP开发环境(1)-VMwa
- 下一篇: 知识点小记之转义字符