第四章 處理器體系架構(gòu)

指令集體系結(jié)構(gòu)(Instruction-Set Architecture,ISA)在編譯器編寫者和處理器設(shè)計(jì)人員之間提供了一個(gè)概念抽象層弹囚,編譯器編寫者只需要知道允許哪些指令抬驴,以及他們是如何編碼的;而處理器設(shè)計(jì)者必須建造出執(zhí)行這些指令的處理器傀履。
本章簡要介紹處理器硬件的設(shè)計(jì)虱朵。
4.1 Y86-64指令集體系結(jié)構(gòu)

4.1.1 程序員的可見狀態(tài)
包括15個(gè)寄存器、三個(gè)條件碼ZF SF OF钓账、一個(gè)程序計(jì)數(shù)器PC碴犬、狀態(tài)碼stat。

4.1.2 Y86-64指令
mov指令梆暮、整數(shù)操作指令op(add服协、sub、and啦粹、xor)偿荷、跳轉(zhuǎn)指令jxx治专、call指令、棧操作push pop指令遭顶、停止halt指令

4.1.3 指令編碼

  1. 每條指令需要1-10個(gè)字節(jié)张峰,每個(gè)指令的第一個(gè)字節(jié)表明指令的類型,這個(gè)字節(jié)分兩個(gè)部分棒旗,高4位是指令代碼部分喘批,低4位是功能部分。
  2. 每個(gè)寄存器都有標(biāo)識(shí)符铣揉,從0到E饶深。如果某個(gè)指令中寄存器標(biāo)識(shí)ID是0xF,就表明此處沒有寄存器操作數(shù)逛拱。不同的指令根據(jù)功能后面可能需要跟0-2個(gè)寄存器標(biāo)識(shí)ID敌厘。
  3. 使用小端法編碼。

4.1.4 Y86-64異常
1 AOK 正常
2 HLT halt指令停止運(yùn)行
3 ADR 遇到非法讀取或?qū)懭雰?nèi)存地址
4 INS 遇到了非法指令

4.1.5 Y86-64程序

  1. Y86-64不支持常數(shù)與寄存器直接運(yùn)算朽合,因此需要先把常數(shù)加載到寄存器中
  2. Y86-64的sub俱两、add等指令直接設(shè)置了條件碼,因此不需要test比較指令
  3. 以.開頭的詞是匯編器的偽指令

4.1.6 一些Y86-64的指令

  1. pushq會(huì)把棧指針減8曹步,并把寄存器的值寫入內(nèi)存中宪彩,那么 pushq %rsp這條指令是把rsp的原始值還是把rsp-8的值寫入內(nèi)存。Y86-64和X86-64的選擇是一樣的讲婚,即把rsp的原始值存入內(nèi)存尿孔。
  2. popq %rsp,同樣會(huì)把棧指針設(shè)置為從內(nèi)存中讀出來的值筹麸。

4.2 邏輯設(shè)計(jì)與硬件控制語言HCL
數(shù)字電路系統(tǒng)通過高低電壓表示10位活合,三個(gè)組成部分:計(jì)算對位進(jìn)行操作的函數(shù)的邏輯組合、存儲(chǔ)位的存儲(chǔ)器單元物赶、控制存儲(chǔ)器單元更新的時(shí)鐘信號白指。

4.2.1 邏輯門
AND對應(yīng)&&,OR對應(yīng)||块差,NOT對應(yīng)侵续!

4.2.2 組合電路和HCL表達(dá)式
很多的邏輯門組合成一個(gè)網(wǎng)就能構(gòu)建計(jì)算塊,稱為組合電路憨闰。
位相等組合電路:bool eq = (a && b) || (!a && !b)
多路復(fù)用電路:bool out = (s && a) || (!s && b)

4.2.3 字級組合電路和HCL整數(shù)表達(dá)式
1.將很多個(gè)位級的邏輯門組合連接輸出到一個(gè)邏輯門上状蜗,就能形成字級的組合電路。
如bool Eq = (A == B)鹉动,使用64個(gè)位級邏輯與門一同輸出到一個(gè)位級與門上轧坎,來進(jìn)行64位int相等的判斷。
2.多路復(fù)用電路(函數(shù))用情況表達(dá)式表示:
[select1: expr1; select2: expr2; ...]
select是布爾表達(dá)式泽示,表示什么時(shí)候選擇這種情況缸血;expr是整數(shù)表達(dá)式蜜氨,表示得到的值。
select為1表示前面情況如果沒有被選中捎泻,那么就選擇這種情況飒炎,這是HCL中一種指定默認(rèn)情況的方法。

  1. ALU是一種重要的組合電路笆豁,它有兩個(gè)數(shù)據(jù)輸入和一個(gè)控制輸入郎汪,通過控制輸入實(shí)現(xiàn)對這兩個(gè)數(shù)據(jù)的加減與或等操作。

4.2.4 集合關(guān)系
判斷某個(gè)多位控制輸入屬于哪些集合闯狱,以此來確定它分解后的控制輸入煞赢。

4.2.5 存儲(chǔ)器與時(shí)鐘
1.存儲(chǔ)設(shè)備由同一個(gè)時(shí)鐘(周期性信號)決定什么時(shí)候要把新值加載進(jìn)來。
2.時(shí)鐘寄存器(簡稱寄存器)存儲(chǔ)單個(gè)位或字哄孤,時(shí)鐘信號控制寄存器加載輸入值照筑。
隨機(jī)訪問存儲(chǔ)器(簡稱內(nèi)存)存儲(chǔ)多個(gè)字,用地址來選擇該讀或該寫哪個(gè)字瘦陈。
3.硬件寄存器指輸入輸出連接在電路中的凝危;程序寄存器代表CPU可通過寄存器ID進(jìn)行尋址的字,這些字存儲(chǔ)在寄存器文件中双饥。

  1. 硬件寄存器媒抠,大多時(shí)候維持在穩(wěn)定狀態(tài),輸出等于當(dāng)前狀態(tài)咏花,如果輸入變化,但是時(shí)鐘是低電位的阀趴,寄存器輸出就保持不變昏翰,當(dāng)時(shí)鐘變高電位,輸入加載到寄存器中刘急,直到下一個(gè)時(shí)鐘上升沿,寄存器一直保持新輸出。
  2. 寄存器文件待诅,寫入需要傳寫入地址即寄存器標(biāo)識(shí)符和寫入值乘碑,同樣用時(shí)鐘信號控制寫入,時(shí)鐘上升時(shí)据块,輸入值被寫入到寄存器ID指示的程序寄存器码邻。讀取通過一個(gè)地址輸入和一個(gè)值輸出完成。
  3. 隨機(jī)訪問存儲(chǔ)器另假,有一個(gè)write控制信號像屋,一個(gè)地址輸入,一個(gè)數(shù)據(jù)輸入边篮,一個(gè)數(shù)據(jù)輸出己莺。write為0時(shí)進(jìn)行讀操作奏甫,write為1時(shí)進(jìn)行寫操作。

4.3 Y86-64的順序?qū)崿F(xiàn)
4.3.1 將處理組織成階段

  1. 取指:從內(nèi)存中按PC的值讀取指令凌受,指令包含指令指示符字節(jié)阵子,兩個(gè)四位分別是指令代碼和指令功能∈を龋可能包含一個(gè)寄存器指示符字節(jié)款筑,指明一個(gè)或兩個(gè)寄存器id標(biāo)識(shí)符。還可能取出一個(gè)四字節(jié)常數(shù)腾么。然后根據(jù)PC的值和已取出指令長度計(jì)算下一條指令地址奈梳。
  2. 譯碼:從寄存器文件讀取最多兩個(gè)操作數(shù)。
  3. 執(zhí)行:ALU運(yùn)算解虱、棧指針運(yùn)算攘须、有效地址運(yùn)算、條件碼殴泰、跳轉(zhuǎn)指令等處理于宙。
  4. 訪存:將數(shù)據(jù)寫入內(nèi)存,或從內(nèi)存讀取值悍汛。
  5. 寫回:寫結(jié)果到寄存器文件捞魁。
  6. 更新PC:將PC設(shè)置成下一條指令地址。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末离咐,一起剝皮案震驚了整個(gè)濱河市谱俭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宵蛀,老刑警劉巖昆著,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異术陶,居然都是意外死亡凑懂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門梧宫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來接谨,“玉大人,你說我怎么就攤上這事塘匣∨Ш溃” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵馆铁,是天一觀的道長跑揉。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么历谍? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任现拒,我火速辦了婚禮,結(jié)果婚禮上望侈,老公的妹妹穿的比我還像新娘印蔬。我一直安慰自己,他們只是感情好脱衙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布侥猬。 她就那樣靜靜地躺著,像睡著了一般捐韩。 火紅的嫁衣襯著肌膚如雪退唠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天荤胁,我揣著相機(jī)與錄音瞧预,去河邊找鬼。 笑死仅政,一個(gè)胖子當(dāng)著我的面吹牛垢油,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播圆丹,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滩愁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辫封?” 一聲冷哼從身側(cè)響起硝枉,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秸讹,沒想到半個(gè)月后檀咙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡璃诀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔑匣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劣欢。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖裁良,靈堂內(nèi)的尸體忽然破棺而出凿将,到底是詐尸還是另有隱情,我是刑警寧澤价脾,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布牧抵,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏犀变。R本人自食惡果不足惜妹孙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望获枝。 院中可真熱鬧蠢正,春花似錦、人聲如沸省店。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懦傍。三九已至雹舀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粗俱,已是汗流浹背说榆。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留源梭,地道東北人娱俺。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像废麻,于是被迫代替她去往敵國和親荠卷。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容