計(ji)算(suan)機(ji)體系(xi)結(jie)構(gou)基(ji)礎知(zhi)識介(jie)紹(shao)之動態調度(du) Tomasulo算(suan)法(fa)(二)與(yu)計(ji)算(suan)機(ji)系(xi)統服(fu)務(wu)
壹(yi)、Tomasulo算(suan)法(fa)中的控(kong)制(zhi)冒(mao)險與(yu)分支(zhi)預(yu)測
- 預(yu)測執(zhi)行:取(qu)指(zhi)階段(duan),分支(zhi)預(yu)測器(qi)會預(yu)測分支(zhi)的(de)方向(跳轉或(huo)不跳轉)和(he)目標(biao)地(di)址。處理(li)器(qi)基於(yu)預測繼續前(qian)瞻(zhan)性(xing)地(di)取(qu)指(zhi)和發射(she)後(hou)續(xu)指(zhi)令,形成壹(yi)個(ge)“推(tui)測執(zhi)行”的(de)流。
- 帶(dai)標(biao)記的調度(du):所有(you)在分支(zhi)預(yu)測後(hou)發射(she)的指(zhi)令都(dou)被(bei)標(biao)記為“推測性(xing)”的。Tomasulo算(suan)法(fa)像(xiang)往常壹(yi)樣(yang)對這些(xie)指(zhi)令進行調度(du)、執行(xing)和結(jie)果(guo)轉發(fa),但這些(xie)結(jie)果(guo)在(zai)分支(zhi)確認(ren)正確之前(qian)不會(hui)最終提(ti)交(jiao)(寫回(hui)架構(gou)寄(ji)存(cun)器(qi)或內(nei)存)。
- 分支(zhi)解(jie)決(jue)與(yu)恢(hui)復:當(dang)分支(zhi)指(zhi)令的實(shi)際(ji)方向被(bei)計(ji)算(suan)出來(lai)時(在(zai)ALU執(zhi)行(xing)後),會進(jin)行驗(yan)證(zheng)。如(ru)果(guo)預(yu)測正(zheng)確,所(suo)有推測性(xing)指(zhi)令的結(jie)果(guo)被(bei)“提(ti)交(jiao)”,狀態轉為(wei)有效。如(ru)果(guo)預(yu)測錯(cuo)誤,則必(bi)須進(jin)行(xing)恢復(fu)操作:清空(kong)該分支(zhi)之後所(suo)有推(tui)測執(zhi)行的(de)指(zhi)令在保留(liu)站、重(zhong)排(pai)序(xu)緩(huan)沖(chong)區(qu)(ROB)和負(fu)載/存儲(chu)隊(dui)列(lie)中的狀態,並(bing)從正確的(de)路徑重(zhong)新(xin)開始(shi)取指(zhi)。
二、內(nei)存訪問冒(mao)險與(yu)存(cun)儲(chu)隊(dui)列(lie)
- 寫後讀(du)(RAW)內(nei)存冒(mao)險:壹(yi)條(tiao)Store指(zhi)令寫入內(nei)存後(hou),後(hou)續(xu)的Load指(zhi)令必(bi)須讀(du)到(dao)這個(ge)新(xin)值。
- 寫後寫(WAW)與(yu)讀(du)後(hou)寫(WAR)內(nei)存冒(mao)險:雖然寄(ji)存器(qi)重(zhong)命(ming)名解(jie)決(jue)了寄存(cun)器(qi)層面(mian)的(de)這些(xie)冒(mao)險,但內(nei)存地(di)址在(zai)運(yun)行時(shi)才(cai)可(ke)知,因此需要特(te)殊(shu)機(ji)制(zhi)。
- 順序(xu)發射(she),亂(luan)序(xu)執行(xing):Load和Store指(zhi)令按程序(xu)順序(xu)進入各自(zi)的隊(dui)列(lie)。
- 地址計(ji)算(suan)與(yu)冒(mao)險檢測:當(dang)Load指(zhi)令的地址計(ji)算(suan)完(wan)成後,它需(xu)要檢(jian)查存(cun)儲(chu)隊(dui)列(lie)中所有地址未定(ding)的(de)Store指(zhi)令。如(ru)果(guo)存(cun)在(zai)地址沖(chong)突(tu)(指(zhi)向同(tong)壹(yi)內(nei)存單(dan)元)且(qie)該(gai)Store指(zhi)令的值已就(jiu)緒,則Load可以(yi)直接從存儲(chu)隊(dui)列(lie)中獲取該值(zhi)(存儲(chu)轉發(fa),Store Forwarding)。這解(jie)決(jue)了RAW冒(mao)險並提(ti)升了性能(neng)。
- 順序(xu)提(ti)交(jiao):內(nei)存操(cao)作(zuo)必(bi)須按(an)照程序(xu)順序(xu)提(ti)交(jiao)(寫回(hui)內(nei)存),以(yi)維(wei)持(chi)內(nei)存訪問的(de)順序(xu)壹(yi)致(zhi)性(xing)(Sequential Consistency)或(huo)更寬松(song)的內(nei)存模(mo)型(xing)所要(yao)求的(de)順序(xu)。這通(tong)常由(you)壹(yi)個(ge)重(zhong)排(pai)序(xu)緩(huan)沖(chong)區(qu)(ROB) 來(lai)管(guan)理(li),確保(bao)指(zhi)令(包括Load/Store)的(de)退(tui)休(xiu)(Retirement)是(shi)按序(xu)的。
三(san)、Tomasulo算(suan)法(fa)與(yu)計(ji)算(suan)機(ji)系(xi)統服(fu)務(wu)
- 計(ji)算(suan)服(fu)務(wu)的高(gao)效執(zhi)行:操(cao)作系(xi)統調度(du)壹(yi)個(ge)進(jin)程(cheng)或線程後(hou),其指(zhi)令流被(bei)送入CPU核(he)心(xin)。Tomasulo算(suan)法(fa)在硬件層面,對用(yong)戶程序(xu)和系(xi)統內(nei)核(he)代碼(ma)壹(yi)視同仁(ren)地(di)進行動態調度(du)、亂(luan)序(xu)執行(xing),最大化地(di)利(li)用了執行(xing)單(dan)元,提(ti)高(gao)了系(xi)統吞吐(tu)率和(he)單(dan)個(ge)任務的(de)響應速度(du)。這是(shi)最基礎的計(ji)算(suan)服(fu)務(wu)。
- 虛擬內(nei)存與(yu)中斷響(xiang)應的(de)交(jiao)互:當(dang)執行(xing)中的指(zhi)令觸(chu)發缺(que)頁(ye)異(yi)常(Page Fault)或(huo)遇(yu)到(dao)I/O中斷時(shi),處理(li)器(qi)必(bi)須能(neng)夠精(jing)確地(di)暫(zan)停或(huo)保(bao)存當(dang)前(qian)狀態。在(zai)亂(luan)序(xu)執行(xing)的上下文中,這要(yao)求(qiu)處理(li)器(qi)具備(bei)精(jing)確異(yi)常(Precise Interrupt)的(de)能(neng)力。這與(yu)Tomasulo算(suan)法(fa)擴展(zhan)使用(yong)的重(zhong)排(pai)序(xu)緩(huan)沖(chong)區(qu)(ROB) 密切(qie)相關。ROB確保(bao)在異(yi)常或(huo)中斷發(fa)生時(shi),只(zhi)有(you)異(yi)常指(zhi)令之前(qian)的指(zhi)令被(bei)提(ti)交(jiao),之後的(de)所有(you)推(tui)測執(zhi)行指(zhi)令被(bei)抹(mo)去,從而(er)將(jiang)架構(gou)狀(zhuang)態恢(hui)復到(dao)壹(yi)致(zhi)的(de)點,便於(yu)操作(zuo)系(xi)統進行現場保(bao)存和後續(xu)恢(hui)復(fu)。
- 多(duo)核(he)/多(duo)線程同(tong)步的(de)底層(ceng)支(zhi)持(chi):在多(duo)核(he)系(xi)統中,內(nei)存壹(yi)致(zhi)性(xing)協(xie)議(yi)(如(ru)MESI)需(xu)要(yao)與(yu)核(he)心(xin)內(nei)的存(cun)儲(chu)隊(dui)列(lie)協(xie)同(tong)工作。當(dang)核(he)心(xin)執(zhi)行(xing)壹(yi)個(ge)存(cun)儲(chu)操(cao)作時,該(gai)操(cao)作在(zai)最終提(ti)交(jiao)前(qian)可能(neng)位於(yu)其存(cun)儲(chu)隊(dui)列(lie)中。緩(huan)存(cun)壹(yi)致(zhi)性(xing)協(xie)議(yi)在此時介(jie)入,處理(li)其他核(he)心(xin)對此(ci)地(di)址的(de)訪問請求(qiu)。Tomasulo機制(zhi)中內(nei)存操(cao)作(zuo)的(de)延(yan)遲(chi)提(ti)交(jiao)和排(pai)序(xu),為實(shi)現(xian)高(gao)效的(de)緩(huan)存(cun)壹(yi)致(zhi)性(xing)和(he)同步原語(如(ru)鎖(suo)、屏障)提(ti)供(gong)了硬件基礎。
- 性(xing)能(neng)監(jian)控(kong)與(yu)系(xi)統優化:現(xian)代CPU內(nei)置的(de)性(xing)能(neng)監(jian)控(kong)計(ji)數器(qi)(PMCs)可以(yi)統計(ji)諸如(ru)“保(bao)留(liu)站滿(man)周(zhou)期數”、“分支(zhi)預(yu)測失(shi)誤次(ci)數”等事(shi)件。這些(xie)直接反映Tomasulo算(suan)法(fa)各部件效率(lv)的指(zhi)標(biao),為(wei)操(cao)作系(xi)統調度(du)器(qi)(選擇(ze)更適(shi)合(he)亂(luan)序(xu)執行(xing)的線程)、編(bian)譯器(qi)(優化指(zhi)令序(xu)列)乃(nai)至虛擬機(ji)監(jian)視器(qi)(VMM)提(ti)供(gong)了關鍵(jian)的底層(ceng)反饋,助(zhu)力系(xi)統級(ji)的(de)性能(neng)優化和(he)資(zi)源管(guan)理(li)。
如(ru)若(ruo)轉載,請註(zhu)明(ming)出處:
更新時(shi)間:2025-12-29 21:11:11