一個處理器支持的指令和指令的字節(jié)級編碼稱為ISA(指令集體系結(jié)構(gòu))祥国,不同的處理器”家族“都有不同的ISA。一個程序編譯成一種機器上運行桐汤,就不能再另一種機器上運行垢夹。另外溢吻,同一個家族里也有許多不同類型的處理器。因此果元,ISA在編譯器編寫者和處理器設(shè)計員之間提供了一個概念抽象層促王,編譯器編寫者只需要知道允許哪些指令,以及如何編碼而晒;而處理器設(shè)計者必須建造出執(zhí)行這些指令的處理器蝇狼。
Y86處理器是基于順序操作、功能正確倡怎,但有點不實用迅耘。
一贱枣、Y86指令集體系結(jié)構(gòu)
Y86程序中每條指令都會讀取或修改處理器狀態(tài)的某些部分。Y86的處理器有8個寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp颤专,處理器每個程序寄存器存儲一個字纽哥。寄存器%esp被入棧、出棧栖秕、調(diào)用和返回指令作為棧指針春塌。而其他寄存器沒有固定的含義或固定值。有三個一位的條件碼:ZF簇捍、SF只壳、OF,保存有關(guān)最近的算術(shù)或邏輯指令造成影響的信息暑塑。程序計數(shù)器(PC)存放著當前正在執(zhí)行指令的地址吼句。存儲器,從概念上說是一個很大的字節(jié)數(shù)組事格,保存著程序和數(shù)據(jù)惕艳。Y86程序用虛擬地址來引用存儲器位置。硬件和操作系統(tǒng)軟件結(jié)合起來將虛擬地址翻譯成明數(shù)據(jù)實際存在存儲器中哪個地方的實際或物理地址分蓖。
二尔艇、邏輯設(shè)計和硬件控制語言HCL
在硬件設(shè)計中尔许,電子電路被用來計算位的函數(shù)么鹤,以及在各種存儲器元素中存儲位。大多數(shù)現(xiàn)代電路設(shè)計都是用信號線上的高電壓或低電壓來表示不同的位值味廊。通常的技術(shù)中蒸甜,邏輯1是用1.0伏特左右的高電壓表示,邏輯0是用0.0伏特左右的低電壓表示余佛。要實現(xiàn)一個數(shù)字系統(tǒng)需要三個主要的組成部分:計算位的函數(shù)的組合邏輯柠新、存儲位的存儲器元素、以及控制存儲器元素更新的時鐘信號辉巡。
1.邏輯門
邏輯門是數(shù)字電路的基本計算元素恨憎。它們產(chǎn)生的輸出,等于他們輸入位值的某個布爾函數(shù)郊楣,AND,OR,NOT憔恳。邏輯門總是活動的,一旦一個門的輸入變化了净蚤,在很短時間內(nèi)钥组,輸出就會相應(yīng)地變化。
2.存儲器和時刻控制
組合電路從本質(zhì)上來講今瀑,不存儲任何信息程梦。相反只是簡單地相應(yīng)輸入信號点把,產(chǎn)生等于輸入的某個函數(shù)輸出。為了產(chǎn)生時序電路屿附,有狀態(tài)并在在這個狀態(tài)上進行計算的系統(tǒng)郎逃,引入了按位存儲信息的設(shè)備。
- 時鐘寄存器存儲單個位或字挺份。
- 隨機訪問存儲器存儲多個字衣厘,用地址選擇讀或該讀哪個字。硬件和軟件系統(tǒng)結(jié)合起來使處理器可以在很大的地址空間訪問任意的字压恒。
在硬件中影暴,寄存器直接將它的輸入和輸出線連接到電路其他部分。在機器編程級別探赫,寄存器代表CPU中為數(shù)不多的可尋址的字型宙,這里的地址是寄存器ID。分別稱這兩類寄存器為“硬件寄存器”和”程序寄存器“伦吠。
(a) 硬件寄存器
大多數(shù)時候妆兑,寄存器保持在穩(wěn)定狀態(tài)(用x表示),產(chǎn)生的輸出等于它當前狀態(tài)毛仪。只要時鐘是低電位搁嗓,寄存器的輸出狀態(tài)保持不變。當時鐘變成高電位箱靴,輸入信號加載到寄存器腺逛,成為下一個狀態(tài)y,這個狀態(tài)就成為寄存器的新輸出衡怀。
(b) 程序寄存器
下面展示典型的寄存器文件棍矛,寄存器文件有兩個讀端口(A和B),還要一個寫端口(W)抛杨。這樣一個多端口隨機訪問存儲器允許同時進行多個讀和寫操作够委。在圖中,電路可以讀兩個程序寄存器的值怖现,同時更新第三個寄存器的狀態(tài)茁帽。每個端口都有一個地址輸入,表明選擇哪個程序寄存器屈嗤,另外還有一個數(shù)據(jù)輸出或?qū)?yīng)程序寄存器的輸入值潘拨。
三、硬件結(jié)構(gòu)
實現(xiàn)所有Y86指令所需要的計算可以被組織成六個基本階段:取指恢共、解碼战秋、執(zhí)行、訪存讨韭、寫回和更新PC脂信。
- 取指:將程序計數(shù)器寄存器作為地址癣蟋,指令存儲器讀取一個指令的字節(jié),增加程序計數(shù)器
- 解碼: 寄存器文件有兩個讀端口A和B,從這兩個端口同時讀寄存器值valA和valB.
- 執(zhí)行:執(zhí)行階段根據(jù)指令的類型,將算術(shù)/邏輯單元(ALU)用于不同的目的狰闪。對整數(shù)操作疯搅,它需要執(zhí)行指令所指定的運算。對其他指令埋泵,它會作為一個加法器來計算增加或減少棧指針幔欧,或者有效地址,或者只是簡單地加0丽声,將一個輸入傳遞到輸出礁蔗。
- 訪存:在執(zhí)行訪存操作時,數(shù)據(jù)存儲器讀出或?qū)懭胍粋€存儲字雁社,指令和數(shù)據(jù)會根據(jù)條件碼或轉(zhuǎn)換碼類型來計算分支信號Bch
- 寫回:寄存器文件有兩個寫端口浴井,端口E用來寫ALU計算出來的值,端口M用來寫從數(shù)據(jù)寄存器中讀出的值霉撵。