4.1 Y86-64指令集體系結(jié)構(gòu)
? ? 一個(gè)指令集體系結(jié)構(gòu)包括定義各種狀態(tài)單元诡挂、指令集和它們的編碼秀仲、一組編程規(guī)范和異常事件處理
? ? 4.1.1 程序員可見(jiàn)的狀態(tài)
?? ?? ? ?程序寄存器、條件碼疼鸟、程序計(jì)數(shù)器蹬屹、內(nèi)存扮碧。狀態(tài)碼指明程序是否運(yùn)行正常,或者發(fā)生了某個(gè)特殊事件
? ?4.13 指令編碼
?? ?? ? 每條指令需要1-10個(gè)字節(jié)不等堤瘤,這取決于需要那些字段玫芦。每條指令的第一個(gè)字節(jié)表明指令的類型。這個(gè)字節(jié)分為兩個(gè)部分宙橱,每部分4位:高4位是代碼(code)部分姨俩,低4位是功能(function)部分
4.2 邏輯設(shè)計(jì)和硬件控制語(yǔ)言HCL
?? ??? ?大多數(shù)現(xiàn)代電路技術(shù)都是用信號(hào)線上的高電壓或低電壓來(lái)表示不同的位值。邏輯1是用1.0伏特左右的高電壓表示的师郑,而邏輯0是用0.0伏特左右的低電壓表示的环葵。實(shí)現(xiàn)一個(gè)數(shù)字系統(tǒng)需要三個(gè)主要組成部分:計(jì)算對(duì)位進(jìn)行操作的函數(shù)的組合邏輯、存儲(chǔ)位的存儲(chǔ)器單元宝冕,以及控制存儲(chǔ)器單元更新的時(shí)鐘信號(hào)
?? ?4.2.1邏輯門(mén)
?? ??? ?? ? 邏輯門(mén)是數(shù)字電路的基本計(jì)算單元张遭。他們產(chǎn)生的輸出,等于他們輸入位值的某個(gè)布爾函數(shù)(AND地梨、OR菊卷、NOT)
? ? 4.2.2 組合電路和HCL布爾表達(dá)式
?? ??? ?? ? 將很多邏輯門(mén)組合成一個(gè)網(wǎng)缔恳,就能構(gòu)建計(jì)算機(jī),稱為組合電路洁闰。
?? ??? ?? ? 每個(gè)邏輯門(mén)的輸入必須連接到下述選項(xiàng)之一:1)一個(gè)系統(tǒng)輸入歉甚,2某個(gè)存儲(chǔ)器單元的輸出 3)某個(gè)邏輯門(mén)的輸出
?? ??? ?? ? 兩個(gè)或多個(gè)邏輯門(mén)的輸出不能連接在一起。否則它們可能會(huì)使線上的信號(hào)矛盾扑眉,可能會(huì)導(dǎo)致一個(gè)不合法的電壓或電路故障
?? ??? ?? ? 這個(gè)網(wǎng)必須是無(wú)環(huán)的纸泄。也就是網(wǎng)中不能有路徑經(jīng)過(guò)一系列的門(mén)而形成一個(gè)回路,這樣的回路會(huì)導(dǎo)致該網(wǎng)絡(luò)計(jì)算的函數(shù)有歧義
? ? 4.2.3 字級(jí)的組合電路和HCL整數(shù)表達(dá)式
?? ??? ?? ? 通過(guò)將邏輯門(mén)組合成大的網(wǎng)腰素,可以構(gòu)造出能計(jì)算更加復(fù)雜函數(shù)的組合電路聘裁。通常,我們?cè)O(shè)計(jì)對(duì)數(shù)據(jù)字進(jìn)行操作的電路
? ? 4.2.4 集合關(guān)系
?? ??? ?? ? 很多時(shí)候都需要將一個(gè)信號(hào)與許多可能匹配的信號(hào)做比較弓千,以此來(lái)檢測(cè)正在處理的某個(gè)指令代碼是否屬于某一類指令代碼
? 4.2.5 存儲(chǔ)器和時(shí)鐘
?? ??? ?? ? 存儲(chǔ)設(shè)備都是由同一個(gè)時(shí)鐘控制的衡便,時(shí)鐘是一個(gè)周期性信號(hào),決定什么時(shí)候要把新值加載到設(shè)備中
?? ??? ?? ? 時(shí)鐘寄存器(寄存器):存儲(chǔ)單個(gè)位或字洋访。時(shí)鐘信號(hào)控制寄存器加載輸入值
?? ??? ?? ? 隨機(jī)訪問(wèn)存儲(chǔ)器(內(nèi)存):存儲(chǔ)多個(gè)字镣陕,用地址來(lái)選擇該讀或改寫(xiě)哪個(gè)字
4.3 Y86-64的順序?qū)崿F(xiàn)
? ? 4.3.1 將處理組織成階段
?? ?? ? ? ?各個(gè)階段以及各階段內(nèi)執(zhí)行操作的簡(jiǎn)略描述:
? ? ? ? ? 取指 fetch:取指階段從內(nèi)存讀取指令字節(jié),地址為程序計(jì)數(shù)器(PC)的值捌显。從指令中抽取出指令指示符字節(jié)的兩個(gè)四位部分茁彭,稱為icode(指令代碼)和ifun(指令功能)
? ? ? ? ? 譯碼decode:譯碼階段從寄存器文件讀入最多兩個(gè)操作數(shù),得到值valA和/或valB
? ? ? ? ? 執(zhí)行execute? ? :在執(zhí)行階段扶歪,算術(shù)/邏輯單元要么執(zhí)行指令指明的操作理肺,計(jì)算內(nèi)存引用的有效地址,要么增加或者減少棧指針
? ? ? ? ?訪存memory:訪存階段可以將數(shù)據(jù)寫(xiě)入內(nèi)存善镰,或者從內(nèi)存讀出數(shù)據(jù)
? ? ? ? ?寫(xiě)回 write back:寫(xiě)回階段最多可以寫(xiě)兩個(gè)結(jié)果到寄存器文件
? ? ? ? ?更新PC :將PC設(shè)置成下一條指令的地址
? 4.3.2 SEQ硬件結(jié)構(gòu)
4.3.3SEQ的時(shí)序
4.3.4 SEQ階段的實(shí)現(xiàn)
4.4 流水線的通用原理