專利名稱:用來(lái)實(shí)現(xiàn)高效和靈活存儲(chǔ)器復(fù)制操作的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及信息處理系統(tǒng)的領(lǐng)域,并且更具體地說(shuō),涉及在信息處理系統(tǒng)中的存儲(chǔ)器復(fù)制操作。
背景技術(shù):
存儲(chǔ)器復(fù)制操作是一種非常頻繁地進(jìn)行的數(shù)據(jù)處理操作。這樣的操作由在應(yīng)用程序級(jí)、在操作系統(tǒng)(OS)級(jí)下的軟件并且由中間件編程而啟動(dòng)。存儲(chǔ)器復(fù)制操作典型地編程有把數(shù)據(jù)從存儲(chǔ)器中的一個(gè)位置復(fù)制到另一個(gè)位置的重復(fù)加載和存儲(chǔ)操作。這使數(shù)據(jù)傳輸分段通過(guò)中央處理單元(CPU,或更簡(jiǎn)單地“處理器”)。這因?yàn)槿缦略驅(qū)е聰?shù)據(jù)處理系統(tǒng)的整體操作低效(1)復(fù)制操作的性能由適用的存儲(chǔ)器帶寬限制,該帶寬常常不足以匹配CPU的速度;(2)數(shù)據(jù)傳輸經(jīng)加載和存儲(chǔ)指令分段通過(guò)CPU,基本上在移動(dòng)操作期間約束住CPU,這阻止CPU參與其他任務(wù);(3)因?yàn)镃PU一般比存儲(chǔ)器子系統(tǒng)快得多,所以CPU當(dāng)它等待數(shù)據(jù)從存儲(chǔ)器到達(dá)CPU中時(shí)閑置。
如可從以上討論看到的那樣,對(duì)于應(yīng)用程序、中間件及操作系統(tǒng),存儲(chǔ)器復(fù)制操作是性能敏感過(guò)程。用來(lái)進(jìn)行存儲(chǔ)器復(fù)制操作的多種方法借助于重復(fù)的加載和存儲(chǔ)操作使數(shù)據(jù)分段通過(guò)CPU。如以上指示的那樣,這種本性的操作約束CPU比較長(zhǎng)的時(shí)間段,特別是當(dāng)要復(fù)制大量數(shù)據(jù)時(shí)。這樣的操作也較慢,因?yàn)榇鎯?chǔ)器時(shí)延和存儲(chǔ)器帶寬導(dǎo)致與CPU速度相比較慢的整體傳輸速率,由此導(dǎo)致不希望的性能水平。
然而,對(duì)于固定頁(yè)面(pinned page)的實(shí)模式(和因此實(shí)存儲(chǔ)器地址)的存儲(chǔ)器復(fù)制操作,的確存在某些方案,但對(duì)于由應(yīng)用程序、由中間件及由操作系統(tǒng)一般使用的不存在。換句話說(shuō),當(dāng)數(shù)據(jù)處理器在虛擬尋址模式中起作用時(shí),高效的存儲(chǔ)器復(fù)制操作簡(jiǎn)直是不可能的或不容許的。直到本發(fā)明的出現(xiàn),只有當(dāng)采用實(shí)尋址模式時(shí),才進(jìn)行改進(jìn)存儲(chǔ)器復(fù)制操作效率的努力,并且甚至在這種情況下都要求“頁(yè)面的固定”。固定是當(dāng)存儲(chǔ)器配置成防止在存儲(chǔ)器的該部分中存儲(chǔ)的數(shù)據(jù)分頁(yè)出去。這保證對(duì)于對(duì)臨時(shí)緩沖器的數(shù)據(jù)存取不發(fā)生頁(yè)面故障。另一個(gè)問(wèn)題是,存儲(chǔ)操作的典型實(shí)現(xiàn)使目的地高速緩沖存儲(chǔ)器行從存儲(chǔ)器讀取,即使整個(gè)高速緩沖存儲(chǔ)器行最終被重寫(xiě)。這也不希望地浪費(fèi)存儲(chǔ)器帶寬的大部分。
傳統(tǒng)存儲(chǔ)器復(fù)制的另一個(gè)低效源是不良數(shù)據(jù)對(duì)準(zhǔn)。典型計(jì)算機(jī)系統(tǒng)當(dāng)加載和存儲(chǔ)自然對(duì)準(zhǔn)的數(shù)據(jù)時(shí)更高效。它們當(dāng)加載和存儲(chǔ)較大數(shù)據(jù)粒度時(shí)更高效(例如,64-位操作比32-位操作更高效)。不幸的是,大量類別應(yīng)用軟件當(dāng)涉及相對(duì)于存儲(chǔ)器子系統(tǒng)的數(shù)據(jù)的自然對(duì)準(zhǔn)時(shí)表現(xiàn)不好。代之以,大多數(shù)應(yīng)用軟件依賴于操作系統(tǒng)(OS)指令,如bcopy或類似指令,以實(shí)現(xiàn)存儲(chǔ)器復(fù)制操作。bcopy例行程序不知道應(yīng)用程序?qū)?zhǔn)行為,并且必須設(shè)計(jì)成在所有對(duì)準(zhǔn)條件下高效地工作。
因此,存在克服與以上所討論的現(xiàn)有技術(shù)相關(guān)的問(wèn)題的需要。
發(fā)明內(nèi)容
簡(jiǎn)短地說(shuō),按照本發(fā)明,公開(kāi)的是一種用來(lái)半同步地把數(shù)據(jù)從存儲(chǔ)器的第一部分復(fù)制到存儲(chǔ)器的第二部分的系統(tǒng)、方法、及計(jì)算機(jī)可讀介質(zhì)。該方法包括在處理器中接收對(duì)于半同步存儲(chǔ)器復(fù)制操作的調(diào)用。半同步存儲(chǔ)器復(fù)制操作通過(guò)設(shè)置標(biāo)志位對(duì)于與在存儲(chǔ)器中的源位置相對(duì)應(yīng)的虛擬源地址和與在存儲(chǔ)器中的目標(biāo)位置相對(duì)應(yīng)的虛擬目標(biāo)地址保持有效性的臨時(shí)持續(xù)。該調(diào)用至少包括虛擬源地址、虛擬目標(biāo)地址、及識(shí)別待復(fù)制的多個(gè)字節(jié)的指示符。存儲(chǔ)器復(fù)制操作放置在隊(duì)列中以便由存儲(chǔ)器控制器執(zhí)行。隊(duì)列耦合到存儲(chǔ)器控制器上。繼續(xù)執(zhí)行變得從指令流水線可得到的至少一個(gè)隨后指令。
在本發(fā)明的另一個(gè)實(shí)施例中,公開(kāi)了一種用來(lái)半同步地把數(shù)據(jù)從存儲(chǔ)器的第一部分復(fù)制到存儲(chǔ)器的第二部分的系統(tǒng)。該系統(tǒng)包括存儲(chǔ)器和通信地耦合到存儲(chǔ)器上的存儲(chǔ)器控制器。系統(tǒng)也包括處理器,該處理器通信地耦合到存儲(chǔ)器和存儲(chǔ)器控制器上。處理器接收用于半同步存儲(chǔ)器復(fù)制操作的調(diào)用,該半同步存儲(chǔ)器復(fù)制操作通過(guò)設(shè)置標(biāo)志位對(duì)于與在存儲(chǔ)器中的源位置相對(duì)應(yīng)的虛擬源地址和與在存儲(chǔ)器中的目標(biāo)位置相對(duì)應(yīng)的虛擬目標(biāo)地址保持有效性的臨時(shí)持續(xù)。該調(diào)用至少包括虛擬源地址、虛擬目標(biāo)地址、及識(shí)別待復(fù)制的多個(gè)字節(jié)的指示符。也包括隊(duì)列,用來(lái)保持用于由存儲(chǔ)器控制器執(zhí)行的存儲(chǔ)器復(fù)制操作,其中隊(duì)列耦合到存儲(chǔ)器控制器上。
在本發(fā)明的又一個(gè)實(shí)施例中,公開(kāi)了一種用來(lái)半同步地把數(shù)據(jù)從存儲(chǔ)器的第一部分復(fù)制到存儲(chǔ)器的第二部分的計(jì)算機(jī)可讀介質(zhì)。有形體現(xiàn)計(jì)算機(jī)可讀介質(zhì)包括用來(lái)在處理器中接收用于半同步存儲(chǔ)器復(fù)制操作的調(diào)用的指令。半同步存儲(chǔ)器復(fù)制操作通過(guò)設(shè)置標(biāo)志位對(duì)于與在存儲(chǔ)器中的源位置相對(duì)應(yīng)的虛擬源地址和與在存儲(chǔ)器中的目標(biāo)位置相對(duì)應(yīng)的虛擬目標(biāo)地址保持有效性的臨時(shí)持續(xù)。該調(diào)用至少包括虛擬源地址、虛擬目標(biāo)地址、及識(shí)別待復(fù)制的多個(gè)字節(jié)的指示符。存儲(chǔ)器復(fù)制操作放置在隊(duì)列中以便由存儲(chǔ)器控制器執(zhí)行。隊(duì)列耦合到存儲(chǔ)器控制器上。繼續(xù)執(zhí)行變得從指令流水線可得到的至少一個(gè)隨后指令。
以上實(shí)施例的優(yōu)點(diǎn)在于,它們提供允許處理器在存儲(chǔ)器復(fù)制操作期間繼續(xù)執(zhí)行隨后指令的存儲(chǔ)器復(fù)制操作,由此避免不必要的處理器停機(jī)時(shí)間。本發(fā)明的另一個(gè)優(yōu)點(diǎn)在于,因?yàn)榇鎯?chǔ)器復(fù)制指令把有效(虛擬)地址當(dāng)作變?cè)杂纱鎯?chǔ)器復(fù)制指令的源和目標(biāo)引用的虛擬存儲(chǔ)器頁(yè)面不固定,并且可容許頁(yè)面故障。這允許避免固定頁(yè)面先驗(yàn)的開(kāi)銷。本發(fā)明的又一個(gè)優(yōu)點(diǎn)在于,存儲(chǔ)器復(fù)制指令對(duì)于地址的對(duì)準(zhǔn)不施加約束,該地址作為指令變?cè)獋鞯剿?。本發(fā)明的另外優(yōu)點(diǎn)在于,通過(guò)使用與數(shù)據(jù)完善結(jié)合的高速緩沖存儲(chǔ)器注入,可避免存儲(chǔ)器時(shí)延。
其中類似附圖標(biāo)記貫穿各個(gè)視圖指相同或功能類似元件、并且與下面的詳細(xì)描述一起并入說(shuō)明書(shū)和形成其部分的附圖,用來(lái)進(jìn)一步示出各種實(shí)施例、和解釋所有按照本發(fā)明的各種原理和優(yōu)點(diǎn)。
圖1是方塊圖,示出了根據(jù)本發(fā)明實(shí)施例的用來(lái)處理指令的示例性處理器;圖2是方塊圖,示出了根據(jù)本發(fā)明實(shí)施例的在圖1中的處理器的更簡(jiǎn)單版本,它包括示例性存儲(chǔ)器復(fù)制機(jī)制;圖3是操作流程圖,示出了根據(jù)本發(fā)明實(shí)施例的把示例性存儲(chǔ)器復(fù)制操作排隊(duì)到存儲(chǔ)器控制器的示例性過(guò)程;圖4是操作流程圖,示出了根據(jù)本發(fā)明實(shí)施例的示例性半同步存儲(chǔ)器復(fù)制操作;圖5是操作流程圖,示出了根據(jù)本發(fā)明實(shí)施例的發(fā)出多個(gè)存儲(chǔ)器復(fù)制指令的示例性過(guò)程;圖6是操作流程圖,示出了根據(jù)本發(fā)明實(shí)施例的目的地?cái)?shù)據(jù)的高速緩沖存儲(chǔ)器注入的示例性過(guò)程;圖7是操作流程圖,示出了根據(jù)本發(fā)明實(shí)施例的阻塞轉(zhuǎn)換后備緩沖區(qū)無(wú)效輸入指令的示例性過(guò)程。
具體實(shí)施例方式
如要求的那樣,這里公開(kāi)本發(fā)明的詳細(xì)實(shí)施例;然而,要理解,公開(kāi)的實(shí)施例只是本發(fā)明的示例,本發(fā)明能以各種形式體現(xiàn)。因此,這里公開(kāi)的特定結(jié)構(gòu)和功能細(xì)節(jié)不應(yīng)解釋成是限制性的,而是僅作為用于權(quán)利要求書(shū)的基礎(chǔ)和作為用來(lái)教導(dǎo)本領(lǐng)域技術(shù)人員在實(shí)際任何適當(dāng)詳細(xì)結(jié)構(gòu)中多樣地使用本發(fā)明的代表性基礎(chǔ)。而且,這里使用的術(shù)語(yǔ)和短語(yǔ)不旨在是限制性的;而是,提供本發(fā)明的可理解描述。
這里所使用的術(shù)語(yǔ)一個(gè)定義為一個(gè)或多于一個(gè)。這里所使用的術(shù)語(yǔ)多個(gè)定義為兩個(gè)或多于兩個(gè)。這里所使用的術(shù)語(yǔ)另一個(gè)定義為至少一個(gè)第二個(gè)或多個(gè)。這里所使用的術(shù)語(yǔ)包含和/或具有定義為包括(即開(kāi)放性語(yǔ)言)。這里所使用的術(shù)語(yǔ)耦合定義為連接,盡管不必直接地,并且不必機(jī)械地。
這里所使用的術(shù)語(yǔ)“存儲(chǔ)器復(fù)制操作”和“存儲(chǔ)器復(fù)制”是在信息處理系統(tǒng)內(nèi)執(zhí)行的過(guò)程,在其中在其隨機(jī)存取存儲(chǔ)器的一部分中的數(shù)據(jù)復(fù)制到同一隨機(jī)存取存儲(chǔ)器的另一部分,而不改變?cè)创鎯?chǔ)位置的存儲(chǔ)器內(nèi)容。然而,在本發(fā)明的示例性實(shí)施例中,術(shù)語(yǔ)“存儲(chǔ)器復(fù)制”是指涉及多個(gè)千字節(jié)或甚至兆字節(jié)數(shù)據(jù)的復(fù)制的存儲(chǔ)器復(fù)制操作。
本發(fā)明,根據(jù)實(shí)施例,通過(guò)提供用于存儲(chǔ)器復(fù)制操作的更有效機(jī)制而克服與現(xiàn)有技術(shù)有關(guān)的問(wèn)題。本發(fā)明允許處理器在存儲(chǔ)器復(fù)制操作期間繼續(xù)執(zhí)行隨后指令,由此避免不必要的處理器停機(jī)時(shí)間。
示例性處理器根據(jù)本發(fā)明的實(shí)施例,如圖1中所示,示出了一種按照本發(fā)明的示例性處理器,總體上指示為100,用來(lái)處理指令和數(shù)據(jù)。處理器100包括單個(gè)集成電路處理器,如超標(biāo)量處理器,它,如下面進(jìn)一步討論的那樣,包括都由集成電路形成的各種執(zhí)行單元、寄存器、緩沖器、存儲(chǔ)器、及其他功能單元。
如圖1中所示的那樣,處理器100可以由互連結(jié)構(gòu)106耦合到其他裝置上,如系統(tǒng)存儲(chǔ)器102,以及在一個(gè)實(shí)施例中,到第二處理器104上,以形成諸如計(jì)算機(jī)系統(tǒng)之類的較大數(shù)據(jù)處理系統(tǒng)。處理器100具有芯片上多級(jí)高速緩沖存儲(chǔ)器分級(jí)結(jié)構(gòu),其分別包括例如統(tǒng)一級(jí)二(“L2”)高速緩沖存儲(chǔ)器108、和分支級(jí)一(“L1”)指令(“I”)和數(shù)據(jù)(“D”)高速緩沖存儲(chǔ)器110、112。如對(duì)于本領(lǐng)域的技術(shù)人員已知的那樣,高速緩沖存儲(chǔ)器108、110、112對(duì)于與在系統(tǒng)存儲(chǔ)器102中的存儲(chǔ)器位置相對(duì)應(yīng)的高速緩沖存儲(chǔ)器行提供低時(shí)延訪問(wèn)。
響應(yīng)駐留在指令讀取地址寄存器(“IFAR”)114中的有效地址(“EA”),從L1I-高速緩沖存儲(chǔ)器110讀取用于處理的指令。在每個(gè)周期期間,新指令讀取地址可以從如下三個(gè)源的一個(gè)加載到IFAR114中分支預(yù)測(cè)單元(“BPU”)116,它提供由條件分支指令的預(yù)測(cè)生成的推測(cè)路徑地址;組完成表(“GCT”)118,在完成單元(“CU”)118中,它提供非推測(cè)路徑地址;及分支執(zhí)行單元(“BEU”)120,它提供由非正確預(yù)測(cè)的條件分支指令的分辨生成的非推測(cè)路徑地址。如果命中/不命中邏輯122,在由有效-至-實(shí)地址轉(zhuǎn)換(“ERAT”)124轉(zhuǎn)換包含在IFAR114中的EA和查閱在I-高速緩沖存儲(chǔ)器目錄126中的實(shí)地址(“RA”)之后,確定與在IFAR114中的EA相對(duì)應(yīng)的指令的高速緩沖存儲(chǔ)器行沒(méi)有駐留在L1I-高速緩沖存儲(chǔ)器110中,然后命中/不命中邏輯122經(jīng)I-高速緩沖存儲(chǔ)器請(qǐng)求總線128把RA作為請(qǐng)求地址提供給L2高速緩沖存儲(chǔ)器108。這樣的請(qǐng)求地址也可以基于最近訪問(wèn)圖案由在L2高速緩沖存儲(chǔ)器108內(nèi)的預(yù)讀取邏輯產(chǎn)生。響應(yīng)請(qǐng)求地址,L2高速緩沖存儲(chǔ)器108輸出指令的高速緩沖存儲(chǔ)器行,上述指令可能在通過(guò)可選擇的預(yù)譯碼邏輯134之后,加載到預(yù)讀取緩沖器(“PB”)130和L1I-高速緩沖存儲(chǔ)器重加載總線132中。
一旦由在IFAR114中的EA規(guī)定的高速緩沖存儲(chǔ)器行駐留在L1高速緩沖存儲(chǔ)器110中,L1I-高速緩沖存儲(chǔ)器110就把該高速緩沖存儲(chǔ)器行輸出到分支預(yù)測(cè)單元(“BPU”)116和指令讀取緩沖器(“IFB”)136。BPU116掃描用于分支指令的指令高速緩沖存儲(chǔ)器行,并且預(yù)測(cè)條件分支指令的結(jié)果,如果有的話。在分支預(yù)測(cè)之后,BPU116把推測(cè)指令讀取地址供給到IFAR114,如以上討論的那樣,并且把預(yù)測(cè)傳到分支指令隊(duì)列(“BIQ”)138,從而當(dāng)條件分支指令隨后由分支執(zhí)行單元120分辨時(shí),可確定預(yù)測(cè)精度。
IFB136臨時(shí)緩沖從L1I-高速緩沖存儲(chǔ)器110接收的指令的高速緩沖存儲(chǔ)器行,直到指令的高速緩沖存儲(chǔ)器行可由指令轉(zhuǎn)換單元(“ITU”)140轉(zhuǎn)換。在所示的處理器100的實(shí)施例中,ITU140把來(lái)自用戶指令集體系結(jié)構(gòu)(“UISA”)指令的指令轉(zhuǎn)換成直接可由處理器100的執(zhí)行單元執(zhí)行的可能不同數(shù)目的內(nèi)部ISA(“IISA”)指令。這樣的轉(zhuǎn)換例如可以通過(guò)參考在只讀存儲(chǔ)器(“ROM”)模板中存儲(chǔ)的微碼而進(jìn)行。在至少一些實(shí)施例中,UISA-至-IISA轉(zhuǎn)換導(dǎo)致與UISA指令不同數(shù)目的IISA指令、和/或與對(duì)應(yīng)UISA指令不同長(zhǎng)度的IISA指令。得到的IISA指令然后由組完成表118分配到指令組,該指令組的成員允許被調(diào)度,并且相對(duì)于彼此亂序地被執(zhí)行。組完成表118通過(guò)至少一個(gè)相關(guān)EA跟蹤每個(gè)對(duì)于其執(zhí)行還沒(méi)有完成的指令組,該相關(guān)EA優(yōu)選地是在指令組中的最老指令的EA。
在UISA-至-IISA指令轉(zhuǎn)換之后,基于指令類型,指令可能亂序地被調(diào)度到鎖存器142、144、146、148之一。就是說(shuō),分支指令和其他條件寄存器(“CR”)修改指令被調(diào)度到鎖存器142,定點(diǎn)和加載-存儲(chǔ)指令被調(diào)度到鎖存器144、146的任一個(gè),及浮點(diǎn)指令被調(diào)度到鎖存器148。要求用來(lái)臨時(shí)存儲(chǔ)執(zhí)行結(jié)果的重命名寄存器的每條指令,由適當(dāng)CR映射器150、鏈接和計(jì)數(shù)(“LC”)寄存器映射器152、異常寄存器(“XER”)映射器154、通用目的寄存器(“GPR”)映射器156、或浮點(diǎn)寄存器(“FPR”)映射器158分配到一個(gè)或多個(gè)重命名寄存器。
調(diào)度的指令然后被臨時(shí)放置在適當(dāng)CR發(fā)出隊(duì)列(“CRIQ”)160、分支發(fā)出隊(duì)列(“BIQ”)138、定點(diǎn)發(fā)出隊(duì)列(“FXIQ”)162、164、或浮點(diǎn)發(fā)出隊(duì)列(“FPIQ”)166、168中。從發(fā)出隊(duì)列160、138、162、164、166、168,指令有機(jī)會(huì)發(fā)出到用于執(zhí)行的處理器100的執(zhí)行單元,只要觀察到數(shù)據(jù)相關(guān)性和反相關(guān)性。然而,指令保持在發(fā)出隊(duì)列160、138、162、164、166、168中,直到指令的執(zhí)行完成,并且在指令的任一條需要重新發(fā)出的情況下,結(jié)果數(shù)據(jù),如果有的話,被寫(xiě)回。
如所示的那樣,處理器100的執(zhí)行單元包括用來(lái)執(zhí)行CR-修改指令的CR單元(“CRU”)172、用來(lái)執(zhí)行分支指令的分支執(zhí)行單元(“BEU”)120、用來(lái)執(zhí)行定點(diǎn)指令的兩個(gè)定點(diǎn)單元(“FXU”)174、176、用來(lái)執(zhí)行加載和存儲(chǔ)指令的兩個(gè)加載-存儲(chǔ)單元(“LSU”)178、180、及用來(lái)執(zhí)行浮點(diǎn)指令的兩個(gè)浮點(diǎn)單元(“FPU”)182、184。執(zhí)行單元172、120、174、176、178、180、182、184的每一個(gè)優(yōu)選地實(shí)施成具有多個(gè)流水線級(jí)的執(zhí)行流水線。
在執(zhí)行單元172、120、174、176、178、180、182、184之一內(nèi)的執(zhí)行期間,指令從在耦合到執(zhí)行單元上的寄存器文件內(nèi)的一個(gè)或多個(gè)構(gòu)造的和/或重命名寄存器接收操作數(shù),如果有的話。當(dāng)執(zhí)行CR-修改或CR-依賴指令時(shí),CRU172和BEU120訪問(wèn)CR寄存器文件186,該CR寄存器文件186在一個(gè)優(yōu)選實(shí)施例中,包含CR和多個(gè)CR重命名寄存器,它們每個(gè)包括多個(gè)由一個(gè)或多個(gè)位形成的相異字段。在這些字段中,是LT、GT、及EQ字段分別指示一個(gè)值(典型地為指令的操作數(shù)或結(jié)果)是小于零、大于零、或等于零。鏈接和計(jì)數(shù)寄存器(“LCR”)寄存器文件188包含每一個(gè)的重命名寄存器、計(jì)數(shù)寄存器(“CTR”)、鏈接寄存器(“LR”),通過(guò)它們BEU120也可以分辨條件分支以得到路徑地址。被同步的通用目的寄存器文件(“GPR”)190、192復(fù)制寄存器文件,存儲(chǔ)由FXU174、176和LSU178、180訪問(wèn)和產(chǎn)生的定點(diǎn)和整數(shù)值。像GPR190、192也可以實(shí)施為同步的寄存器的復(fù)制集的浮點(diǎn)寄存器文件(“FPR”)158,包含從由FPU182、184的浮點(diǎn)指令和由LSU178、180的浮點(diǎn)加載指令的執(zhí)行得到的浮點(diǎn)值。
在執(zhí)行單元結(jié)束指令的執(zhí)行之后,執(zhí)行單元把結(jié)果寫(xiě)到由指令所規(guī)定的指定目的地,并且從發(fā)出隊(duì)列除去指令,通知CU186,該CU186按程序順序計(jì)劃指令的完成。為了完成由CRU172、FXU174、176、或FPU182、184之一執(zhí)行的指令,CU194向執(zhí)行單元發(fā)信號(hào),該執(zhí)行單元把來(lái)自指定的重命令寄存器的結(jié)果數(shù)據(jù),如果有的話,寫(xiě)回在適當(dāng)寄存器文件內(nèi)的一個(gè)或多個(gè)構(gòu)造的寄存器。一旦在其指令組內(nèi)的所有指令已經(jīng)完成,就把它從GCT118除去。然而,其他類型的指令被不同地完成。
當(dāng)BEU120分辨條件分支指令,并且確定應(yīng)該采取的執(zhí)行路徑的路徑地址時(shí),路徑地址相對(duì)于由BPU116預(yù)測(cè)的推測(cè)路徑地址被比較。如果路徑地址匹配,則不要求進(jìn)一步的處理。然而如果計(jì)算的路徑地址與預(yù)測(cè)的路徑地址不匹配,則BEU120把正確的路徑地址供給到IFAR114。在任一種情況下,分支指令然后可從BIQ138除去,并且當(dāng)已經(jīng)完成在同一指令組內(nèi)的所有其他指令時(shí),從GCT118除去。
在加載指令的執(zhí)行之后,由執(zhí)行加載指令計(jì)算的有效地址由數(shù)據(jù)ERAT(未示出)轉(zhuǎn)換到實(shí)地址,并且然后作為請(qǐng)求地址提供給L1D-高速緩沖存儲(chǔ)器112。在這時(shí),加載指令從FXIQ162、164的任一個(gè)除去,并且放置在加載重排序隊(duì)列(“LRQ”)196中,直到進(jìn)行了指示的加載。如果請(qǐng)求地址在L1D-高速緩沖存儲(chǔ)器112中不命中,則請(qǐng)求地址放置在加載不命中隊(duì)列(“LMQ”)198中,從這,請(qǐng)求的數(shù)據(jù)從L2高速緩沖存儲(chǔ)器108檢索,并且如果失敗,從另一個(gè)處理器104或從系統(tǒng)存儲(chǔ)器102檢索。LRQ196探聽(tīng)獨(dú)占訪問(wèn)請(qǐng)求(例如,意圖在于修改的讀),在互連結(jié)構(gòu)106上相對(duì)于飛行的加載清倉(cāng)或刪除,并且如果命中發(fā)生,則取消并重新發(fā)出加載指令。
利用存儲(chǔ)隊(duì)列(“STQ”)103類似地完成存儲(chǔ)指令,在存儲(chǔ)指令的執(zhí)行之后把用于存儲(chǔ)的有效地址加載到該存儲(chǔ)隊(duì)列103中。從STQ103,數(shù)據(jù)可存儲(chǔ)到L1D-高速緩沖存儲(chǔ)器112和L2高速緩沖存儲(chǔ)器108的任一個(gè)或兩者中。處理器100也包括存儲(chǔ)器管理單元(“MMU”)105。MMU105包括用來(lái)處置由處理器請(qǐng)求的存儲(chǔ)器訪問(wèn)的各種組件。例如,存儲(chǔ)器管理單元202包括轉(zhuǎn)換后備緩沖區(qū)(“TLB”),對(duì)于其包括用來(lái)把虛擬地址轉(zhuǎn)換成實(shí)地址的頁(yè)面表的部分(包括在MMU105中)。MMU105也包括用于存儲(chǔ)器保護(hù)和高速緩沖存儲(chǔ)器控制的組件。
示例性存儲(chǔ)器復(fù)制機(jī)制圖2是方塊圖,示出了根據(jù)本發(fā)明實(shí)施例的在圖1中的處理器的更簡(jiǎn)單視圖,它包括示例性存儲(chǔ)器復(fù)制機(jī)制。圖2示出了包括GPR190、192;L1高速緩沖存儲(chǔ)器110、112;及MMU/TLB105的處理器核100。處理器100也包括操作碼202,如本發(fā)明的示例性存儲(chǔ)器復(fù)制指令。
新存儲(chǔ)器復(fù)制指令(“mc”)添加到處理器100指令體系結(jié)構(gòu)上,用來(lái)提供把數(shù)據(jù)從存儲(chǔ)器的第一部分復(fù)制到存儲(chǔ)器的第二部分的高效和靈活手段。本發(fā)明的存儲(chǔ)器復(fù)制操作對(duì)于處理器半同步地操作。換句話說(shuō),處理器在存儲(chǔ)器復(fù)制操作期間可執(zhí)行隨后指令。然而,存儲(chǔ)器復(fù)制指令分別對(duì)于與在存儲(chǔ)器102中的源和目標(biāo)位置相對(duì)應(yīng)的虛擬源和目標(biāo)地址保持有效性的臨時(shí)持續(xù)。在本發(fā)明的一個(gè)實(shí)施例中,存儲(chǔ)器復(fù)制指令包括如下句法/語(yǔ)義mc RT、RS、RN。
RT寄存器包括用于存儲(chǔ)器復(fù)制操作的目標(biāo)存儲(chǔ)器位置的有效(虛擬)地址。RS寄存器包括用于存儲(chǔ)器復(fù)制操作的源存儲(chǔ)器位置的有效(虛擬)地址。RN寄存器包括在存儲(chǔ)器復(fù)制操作中待傳輸?shù)淖止?jié)數(shù)目。在一個(gè)實(shí)施例中,存儲(chǔ)器復(fù)制指令也包括高速緩沖存儲(chǔ)器注入(“CI”)寄存器,該寄存器包括用來(lái)識(shí)別接收預(yù)定數(shù)目的數(shù)據(jù)行的高速緩沖存儲(chǔ)器的一個(gè)或多個(gè)級(jí)的信息。例如,CI寄存器在一個(gè)實(shí)施例中指示第一一些數(shù)據(jù)行要復(fù)制到L1高速緩沖存儲(chǔ)器112,下十行要復(fù)制到L2高速緩沖存儲(chǔ)器108,及下二十行要復(fù)制到L3高速緩沖存儲(chǔ)器204。待復(fù)制的數(shù)據(jù)行的數(shù)目基于各個(gè)信息處理系統(tǒng)而變化。例如,在一個(gè)實(shí)施例中,數(shù)據(jù)行的數(shù)目由系統(tǒng)控制,以反映最好高速緩沖存儲(chǔ)器命中可能性,其在高速緩沖存儲(chǔ)器中的工作集的污染最小。系統(tǒng)分配用于指令流的數(shù)據(jù)行的數(shù)目和高速緩沖存儲(chǔ)器的當(dāng)前狀態(tài)。
應(yīng)該注意,如“mc RT、RS、RN”的指令格式的描述包括幾個(gè)任意規(guī)定項(xiàng),上述任意規(guī)定項(xiàng)包括用于指令操作碼的名稱和縮寫(xiě)、以及用于指示的寄存器的名稱和縮寫(xiě)。操作碼只需要唯一可識(shí)別并且與存儲(chǔ)器復(fù)制操作相關(guān);同樣,盡管要求把虛擬(即有效)開(kāi)始地址和結(jié)束地址提供給指令,但它們的縮寫(xiě)的名稱和句法定位不是關(guān)鍵的;并且對(duì)于涉及待傳輸?shù)臄?shù)據(jù)的字節(jié)的數(shù)目的RN同樣如此。另外,與RN參考標(biāo)記相關(guān)的值也可稱作待傳輸?shù)臄?shù)據(jù)的另一個(gè)量,而不是稱作“數(shù)據(jù)的字節(jié)”;例如,它也可稱作數(shù)據(jù)的“字”,其中字可以包括諸如32位之類的值。
存儲(chǔ)器復(fù)制指令經(jīng)非可高速緩沖單元(“NCU”)206排隊(duì)到存儲(chǔ)器控制器(MC)208。例如,NCU206允許存儲(chǔ)器復(fù)制指令直接排隊(duì)到存儲(chǔ)器指令隊(duì)列212中,而不首先加載到L1I-高速緩沖存儲(chǔ)器110中。諸如縱橫開(kāi)關(guān)之類的結(jié)構(gòu)控制器230仲裁存儲(chǔ)器控制器與NCU230、L2高速緩沖存儲(chǔ)器108、及L3高速緩沖存儲(chǔ)器204之間的通信。結(jié)構(gòu)控制器230也將L2高速緩沖存儲(chǔ)器108、L3高速緩沖存儲(chǔ)器204及NCU206彼此耦合。L2高速緩沖存儲(chǔ)器108、L3高速緩沖存儲(chǔ)器204及NCU206的每一個(gè)包括用來(lái)排隊(duì)待通信到存儲(chǔ)器控制器208的數(shù)據(jù)的隊(duì)列323、234、236。
存儲(chǔ)器指令隊(duì)列212包括存儲(chǔ)器復(fù)制指令214。存儲(chǔ)器復(fù)制指令隊(duì)列212在一個(gè)實(shí)施例中設(shè)計(jì)成能夠并行容納多到使可用存儲(chǔ)器帶寬飽和的存儲(chǔ)器復(fù)制指令。存儲(chǔ)器復(fù)制單元210根據(jù)存儲(chǔ)器復(fù)制指令進(jìn)行存儲(chǔ)器復(fù)制操作。例如,數(shù)據(jù)從源地址216復(fù)制到存儲(chǔ)器102的目的地地址218。
核100也包括由半同步存儲(chǔ)器復(fù)制操作利用的源寄存器220、222和目標(biāo)寄存器224、226。有效位228與寄存器220、222、224、226內(nèi)的地址相關(guān)。在一個(gè)實(shí)施例中,可進(jìn)行多個(gè)半同步存儲(chǔ)器復(fù)制操作,并且每個(gè)半同步具有其自己的源和目標(biāo)寄存器對(duì)和與它相關(guān)的有效位。保護(hù)與這些寄存器220、222、224、226相關(guān)的地址范圍。例如,在存儲(chǔ)器復(fù)制操作期間,有效位228為源地址范圍Rs、Rs+Rn及目標(biāo)地址范圍Rt、Rt+Rn設(shè)置。如果在存儲(chǔ)器復(fù)制操作正在被執(zhí)行的同時(shí),例如在有效位228被設(shè)置的同時(shí),存儲(chǔ)操作試圖寫(xiě)地址范圍Rs、Rs+Rn,則該存儲(chǔ)指令將被阻塞或停止,直到完成存儲(chǔ)器復(fù)制操作。允許用來(lái)從地址范圍Rs、Rs+Rn讀的加載操作。如果在存儲(chǔ)器復(fù)制操作正在被執(zhí)行的同時(shí),例如在有效位228被設(shè)置的同時(shí),存儲(chǔ)或加載操作試圖讀/寫(xiě)地址范圍Rt、Rt+Rn,則加載或存儲(chǔ)指令將都被阻塞或停止,直到完成存儲(chǔ)器復(fù)制操作,例如,對(duì)于地址范圍Rt、Rt+Rn不再設(shè)置有效位228。
本發(fā)明的一個(gè)優(yōu)點(diǎn)在于,阻止了與在源寄存器220、222和目標(biāo)寄存器224、226中的地址范圍相關(guān)的存儲(chǔ)器頁(yè)面被分頁(yè)而沒(méi)有固定。例如,在源寄存器220、222和目標(biāo)寄存器224、226內(nèi)的地址范圍與由用于存儲(chǔ)器分頁(yè)的指令所瞄準(zhǔn)的地址范圍相比較。如果在源寄存器220、222和目標(biāo)寄存器224、226內(nèi)的地址范圍被諸如轉(zhuǎn)換后備緩沖區(qū)無(wú)效輸入(“tlbie”)指令之類的存儲(chǔ)器分頁(yè)指令所瞄準(zhǔn),則這條指令將被停止,直到完成與該地址范圍相關(guān)的存儲(chǔ)器復(fù)制操作。例如,在頁(yè)面表更新的情況下,由處理器100停止更新,直到完成所有未決存儲(chǔ)器操作(就是說(shuō),發(fā)出隱式同步指令),并且不修改轉(zhuǎn)換后備緩沖區(qū)(“TLB”)輸入,直到完成存儲(chǔ)器復(fù)制(就是說(shuō),發(fā)出隱式轉(zhuǎn)換后備緩沖區(qū)無(wú)效輸入(“tlbie”)指令)。
排隊(duì)存儲(chǔ)器復(fù)制操作的示例性過(guò)程圖3是操作流程圖,示出了把示例性半同步存儲(chǔ)器復(fù)制操作排隊(duì)到存儲(chǔ)器控制器208的過(guò)程。圖3的操作流程圖在步驟302處開(kāi)始,并且直接轉(zhuǎn)到步驟304。處理器100接收用于存儲(chǔ)器復(fù)制操作的調(diào)用。例如,用戶代碼調(diào)用存儲(chǔ)器復(fù)制指令,并且把變?cè)獋鞯酱鎯?chǔ)器復(fù)制指令。存儲(chǔ)器復(fù)制指令的目標(biāo)寄存器(“RT”)組件,在步驟306處,從用戶代碼接收用于存儲(chǔ)器復(fù)制操作的目標(biāo)存儲(chǔ)器位置的有效(虛擬)地址。存儲(chǔ)器復(fù)制指令的源寄存器(“RS”)組件,在步驟308處,從用戶代碼接收用于存儲(chǔ)器復(fù)制操作的源存儲(chǔ)器位置的有效(虛擬)地址。
存儲(chǔ)器復(fù)制指令的字節(jié)寄存器(“RN”)組件,在步驟310處,接收在存儲(chǔ)器復(fù)制操作中待傳輸?shù)淖止?jié)的數(shù)目。存儲(chǔ)器復(fù)制指令的高速緩沖存儲(chǔ)器注入寄存器(“CI”)組件,在步驟312處,接收指示目的地?cái)?shù)據(jù)是復(fù)制到高速緩沖存儲(chǔ)器還是到存儲(chǔ)器的數(shù)據(jù)。在接收存儲(chǔ)器復(fù)制指令的所有參數(shù)之后,指令在步驟314處經(jīng)不可高速緩沖單元206排隊(duì)到存儲(chǔ)器控制器208??刂屏鞒倘缓笤诓襟E316處退出。
本發(fā)明的一個(gè)優(yōu)點(diǎn)在于,因?yàn)榇鎯?chǔ)器復(fù)制指令把有效(虛擬)地址作為變?cè)杂纱鎯?chǔ)器復(fù)制指令的源和目標(biāo)引用的虛擬存儲(chǔ)器頁(yè)面不固定,并且可容許頁(yè)面故障。這允許避免固定頁(yè)面先驗(yàn)的開(kāi)銷。本發(fā)明的另一個(gè)優(yōu)點(diǎn)在于,存儲(chǔ)器復(fù)制指令對(duì)于地址的對(duì)準(zhǔn)不施加約束,該地址作為指令變?cè)獋鞯剿?br>
存儲(chǔ)器復(fù)制指令的半同步操作圖4是操作流程圖,示出了示例性存儲(chǔ)器復(fù)制指令的半同步屬性。圖4的操作流程圖在步驟402處開(kāi)始,并且直接轉(zhuǎn)到步驟404。處理器100在步驟404處監(jiān)視由存儲(chǔ)器復(fù)制指令使用的地址范圍。注意,這不對(duì)處理器-存儲(chǔ)器子系統(tǒng)施加任何新要求,而是處理器100的現(xiàn)有功能和慣例。處理器100在步驟406處確定存儲(chǔ)器復(fù)制指令是否已經(jīng)排隊(duì)到存儲(chǔ)器控制器208用于執(zhí)行。例如,示例性存儲(chǔ)器復(fù)制操作與處理器核100是半同步的,由此允許處理器核100在存儲(chǔ)器復(fù)制操作期間執(zhí)行隨后指令。
如果該確定的結(jié)果是否定的,則處理器100在步驟408處等待,直到存儲(chǔ)器復(fù)制指令被排隊(duì)以繼續(xù)執(zhí)行隨后指令。如果該確定的結(jié)果是肯定的,則處理器100在步驟410處相對(duì)于用于存儲(chǔ)器復(fù)制指令的地址范圍,例如在源寄存器220、222及目標(biāo)寄存器224、226中的地址范圍,檢查隨后加載和存儲(chǔ)。例如,到在存儲(chǔ)器中不與存儲(chǔ)器復(fù)制指令的源和目的地地址重疊的位置的隨后加載和存儲(chǔ)非禁止地繼續(xù)。
處理器100在步驟412處確定隨后加載操作是否到存儲(chǔ)器復(fù)制指令的目的地。如果該確定的結(jié)果是肯定的,則處理器100在步驟414處懸置這些加載操作的執(zhí)行,直到完成存儲(chǔ)器復(fù)制操作。例如,在存儲(chǔ)器復(fù)制操作期間,為源地址范圍Rs、Rs+Rn及目標(biāo)地址范圍Rt、Rt+Rn設(shè)置有效位228。如果在存儲(chǔ)器復(fù)制操作正在被執(zhí)行的同時(shí),例如在有效位228被設(shè)置的同時(shí),存儲(chǔ)或加載操作試圖讀/寫(xiě)地址范圍Rt、Rt+Rn,則加載或存儲(chǔ)指令將都被阻塞或停止,直到完成存儲(chǔ)器復(fù)制操作,例如,對(duì)于地址范圍Rt、Rt+Rn不再設(shè)置有效位228。當(dāng)完成存儲(chǔ)器復(fù)制操作時(shí),處理器100在步驟416處接收完成存儲(chǔ)器復(fù)制操作的通知。處理器100然后在步驟424處繼續(xù)執(zhí)行變得從指令流水線可得到的指令。
如果在步驟412處的確定結(jié)果是否定的,則處理器100在步驟418處確定隨后存儲(chǔ)操作是否到存儲(chǔ)器復(fù)制指令的源和/或目的地。如果該確定的結(jié)果是肯定的,則處理器100在步驟420處懸置這些存儲(chǔ)操作的執(zhí)行,直到完成存儲(chǔ)器復(fù)制操作。把加載/存儲(chǔ)操作的地址范圍同與存儲(chǔ)器復(fù)制操作相關(guān)的地址范圍(Rs至Rs+Rn、Rt至Rt+Rn)相比較,保護(hù)了在存儲(chǔ)器復(fù)制操作期間的存儲(chǔ)器復(fù)制地址范圍。換句話說(shuō),保持了存儲(chǔ)器復(fù)制地址范圍的有效性的臨時(shí)持續(xù)。當(dāng)完成存儲(chǔ)器復(fù)制操作時(shí),處理器100在步驟420處接收完成存儲(chǔ)器復(fù)制操作的通知。
本發(fā)明的半同步存儲(chǔ)器復(fù)制操作避免對(duì)通知用戶存儲(chǔ)器復(fù)制操作完成的復(fù)雜機(jī)制的需要,例如通過(guò)使存儲(chǔ)器復(fù)制指令與標(biāo)記相關(guān)并且使得用戶發(fā)出在標(biāo)記上的等待指令以保證完成。在一個(gè)實(shí)施例中,當(dāng)完成存儲(chǔ)器復(fù)制操作時(shí),“移動(dòng)者完成(mover done)”脈沖發(fā)送到核100,并且關(guān)閉有效位228。這向處理器發(fā)出信號(hào),存儲(chǔ)器復(fù)制操作完成。如果在步驟418處的確定結(jié)果是否定的,則處理器100在步驟424處繼續(xù)執(zhí)行隨后指令??刂屏鞒倘缓笤诓襟E426處退出。
通過(guò)停止到存儲(chǔ)器復(fù)制指令的源的存儲(chǔ)操作或到存儲(chǔ)器復(fù)制指令的目的地的加載/存儲(chǔ),直到完成存儲(chǔ)器復(fù)制操作,處理器100按照處理器100的相干性和一致性規(guī)則把存儲(chǔ)器復(fù)制指令作為存儲(chǔ)指令序列來(lái)處理。這個(gè)方面是重要的,因?yàn)樗试S計(jì)算與存儲(chǔ)器復(fù)制操作重疊,同時(shí)保證其他存儲(chǔ)器操作被保持并且與存儲(chǔ)操作序列相一致。
在本發(fā)明的一個(gè)實(shí)施例中,處理器體系結(jié)構(gòu)要求按預(yù)定順序(順序一致性)進(jìn)行加載/存儲(chǔ)操作。因此,不管加載/存儲(chǔ)操作是否瞄準(zhǔn)在源寄存器220、222或目標(biāo)寄存器224、226內(nèi)的地址范圍,在半同步存儲(chǔ)器復(fù)制操作期間都阻塞/停止加載/存儲(chǔ)操作。在另一個(gè)實(shí)施例中,處理器體系結(jié)構(gòu)僅要求按預(yù)定順序進(jìn)行存儲(chǔ)操作(中間一致性)。因此,存儲(chǔ)操作的瞄準(zhǔn)地址與源寄存器220、222的地址范圍相比較。如果瞄準(zhǔn)地址在源寄存器220、222的地址范圍內(nèi),則阻塞/停止存儲(chǔ)操作,直到完成半同步存儲(chǔ)器復(fù)制操作。在另外實(shí)施例中,處理器體系結(jié)構(gòu)不要求按預(yù)定順序進(jìn)行加載/存儲(chǔ)操作(弱一致性)。因此,加載/存儲(chǔ)操作的瞄準(zhǔn)地址與源寄存器220、222和目標(biāo)寄存器224、226相比較,如以上對(duì)于圖4討論的那樣。
本發(fā)明的另一個(gè)優(yōu)點(diǎn)在于,不要求頁(yè)面邊界限制。然而,可能利用本發(fā)明的存儲(chǔ)器復(fù)制指令的效率的中間件和字節(jié)級(jí)復(fù)制(“bcopy”)功能可以結(jié)束復(fù)制功能,以便不穿過(guò)頁(yè)面邊界(對(duì)于源和目的地都是)。換句話說(shuō),存儲(chǔ)器復(fù)制指令在一個(gè)實(shí)施例中在用于跨過(guò)多個(gè)頁(yè)面邊界的存儲(chǔ)器復(fù)制的循環(huán)中被調(diào)用。這實(shí)際上是良好設(shè)計(jì)點(diǎn),該設(shè)計(jì)點(diǎn)給出對(duì)于頁(yè)面表更新首先完成所有未決存儲(chǔ)器操作的約束。如果存儲(chǔ)器復(fù)制的大小是不受約束的,則它可能導(dǎo)致一個(gè)具有獨(dú)占系統(tǒng)資源的巨大存儲(chǔ)器復(fù)制的過(guò)程,由此影響操作系統(tǒng)的公平性方面。
本發(fā)明的另一個(gè)優(yōu)點(diǎn)在于,為了實(shí)施本發(fā)明的各種實(shí)施例,不必改變由編程者使用的編程指令和編程語(yǔ)義。
應(yīng)該注意,這個(gè)機(jī)制對(duì)于不同的頁(yè)面大小可調(diào)節(jié),以便保證高效存儲(chǔ)器復(fù)制操作以及允許由過(guò)程的系統(tǒng)資源使用的公平性。另外,注意,由于源和目的地地址可能在其相應(yīng)頁(yè)面內(nèi)在不同偏移處,所以這意味著實(shí)施“地址移位”,以便為了高效存儲(chǔ)器復(fù)制更理想地對(duì)準(zhǔn)偏移。
發(fā)出多個(gè)存儲(chǔ)器復(fù)制指令的示例性過(guò)程圖5是操作流程圖,示出了以流水線方式發(fā)出多個(gè)存儲(chǔ)器復(fù)制指令的示例性過(guò)程。圖5的操作流程圖在步驟502處開(kāi)始,并且直接轉(zhuǎn)到步驟504。在至少一個(gè)存儲(chǔ)器復(fù)制指令已經(jīng)排隊(duì)到存儲(chǔ)器控制器208之后,處理器100在步驟504處發(fā)出至少一個(gè)另外的存儲(chǔ)器復(fù)制指令。存儲(chǔ)器控制器208在步驟506處確定存儲(chǔ)器復(fù)制指令隊(duì)列212是否是充滿的。如果該確定的結(jié)果是肯定的,則忙信號(hào)在步驟508處返回到處理器100。例如,存儲(chǔ)器復(fù)制指令可返回指示資源忙的條件代碼。
在另一個(gè)實(shí)施例中,存儲(chǔ)器復(fù)制指令被停止,直到存儲(chǔ)器復(fù)制指令隊(duì)列212具有用于新發(fā)出存儲(chǔ)器復(fù)制指令的足夠空間。本發(fā)明能夠配置成,實(shí)現(xiàn)指示存儲(chǔ)器復(fù)制指令隊(duì)列充滿的各種方法。停止的一個(gè)優(yōu)點(diǎn)在于,它保證用來(lái)訪問(wèn)存儲(chǔ)器復(fù)制資源的“順序公平性”。在一個(gè)實(shí)施例中,如果返回忙信號(hào),則對(duì)于在加載系統(tǒng)中,過(guò)程的某些可能極需存儲(chǔ)器復(fù)制資源的推斷,而重新嘗試操作。另外,如果返回忙信號(hào),則請(qǐng)求存儲(chǔ)器復(fù)制操作的應(yīng)用程序在它等待存儲(chǔ)器復(fù)制指令隊(duì)列212空閑的同時(shí)具有做其他工作的潛力。
如果在步驟506處的確定結(jié)果是否定的,則另外的存儲(chǔ)器復(fù)制指令在步驟510處排隊(duì)到存儲(chǔ)器復(fù)制指令隊(duì)列212??刂屏鞒倘缓笤诓襟E512處退出。存儲(chǔ)器復(fù)制指令隊(duì)列212在一個(gè)實(shí)施例中設(shè)計(jì)成,能夠并行容納多到使可用存儲(chǔ)器帶寬飽和的存儲(chǔ)器復(fù)制指令。即使隊(duì)列212比適用的存儲(chǔ)器帶寬深,存儲(chǔ)器復(fù)制指令與隨后指令的重疊仍然對(duì)于運(yùn)行應(yīng)用程序產(chǎn)生有形好處。如果源和目的地地址范圍重疊,則存儲(chǔ)器復(fù)制指令的重疊區(qū)域的內(nèi)容在一個(gè)實(shí)施例中是未限定的,并且編程錯(cuò)誤典型地發(fā)生。然而,在本發(fā)明的可選擇實(shí)施例中,重疊的源和目的地地址范圍不引起編程錯(cuò)誤。在這個(gè)實(shí)施例中,來(lái)自源地址的數(shù)據(jù)允許復(fù)制到目的地地址,但將給予編程者可能損壞的警告。
高速緩沖存儲(chǔ)器注入的示例性過(guò)程圖6是操作流程圖,示出了基于在存儲(chǔ)器復(fù)制指令的高速緩沖存儲(chǔ)器注入寄存器中的信息的目的地?cái)?shù)據(jù)的高速緩沖存儲(chǔ)器注入的示例性過(guò)程。圖6的操作流程圖在步驟602處開(kāi)始,并且直接轉(zhuǎn)到步驟604。處理器100在步驟604處針對(duì)高速緩沖存儲(chǔ)器注入位檢查存儲(chǔ)器復(fù)制指令。高速緩沖存儲(chǔ)器注入位例如位于指令的不同寄存器中,或者可以可選擇地位于指令的RN寄存器中。高速緩沖存儲(chǔ)器注入位向存儲(chǔ)器復(fù)制單元210指示何處復(fù)制數(shù)據(jù)的全部或一些。例如,為了數(shù)據(jù)的更快處理,存儲(chǔ)器復(fù)制指令包括高速緩沖存儲(chǔ)器位,從而當(dāng)處理器加載數(shù)據(jù)時(shí),它從高速緩沖存儲(chǔ)器而不是從存儲(chǔ)器加載。
如果在步驟606處確定高速緩沖存儲(chǔ)器位不存在,則存儲(chǔ)器復(fù)制單元210在步驟608處把目的地?cái)?shù)據(jù)復(fù)制到存儲(chǔ)器102中??刂屏鞒倘缓笤诓襟E610處退出。如果在步驟606處確定高速緩沖存儲(chǔ)器位存在,則存儲(chǔ)器復(fù)制單元210在步驟612處把目的地?cái)?shù)據(jù)的預(yù)定數(shù)目行復(fù)制到由高速緩沖存儲(chǔ)器注入位所指示的適當(dāng)級(jí)的高速緩沖存儲(chǔ)器中。例如,一些行可移動(dòng)到級(jí)1高速緩沖存儲(chǔ)器112,下十行復(fù)制到級(jí)2高速緩沖存儲(chǔ)器108,及下二十行復(fù)制到級(jí)3高速緩沖存儲(chǔ)器204。這樣,高速緩沖存儲(chǔ)器的上部級(jí)不被損壞。待復(fù)制到高速緩沖存儲(chǔ)器中的行的數(shù)目例如基于信息處理系統(tǒng)而變化。目的地?cái)?shù)據(jù)的拷貝在步驟614處復(fù)制到存儲(chǔ)器102中。高速緩沖存儲(chǔ)器注入的一個(gè)優(yōu)點(diǎn)是,當(dāng)與數(shù)據(jù)完善結(jié)合時(shí),可避免存儲(chǔ)器時(shí)延。
也要注意,存儲(chǔ)器復(fù)制操作的結(jié)果常常以不同的方式使用。在多種情況下,在目的地存儲(chǔ)器中的數(shù)據(jù)立即由處理器用于隨后指令的消耗。這樣一種使用模型的例子是在讀操作之后從用戶緩沖器移動(dòng)數(shù)據(jù)文件。在這樣的情況下,有用的是,處理器100把目的地?cái)?shù)據(jù)上載到高速緩沖存儲(chǔ)器中以便由處理器100消耗。在其他情況下,如把數(shù)據(jù)從用戶緩沖器移動(dòng)到網(wǎng)絡(luò)緩沖器以經(jīng)直接存儲(chǔ)器訪問(wèn)(“DMA”)傳送到網(wǎng)絡(luò)(或I/O裝置)中,目的地?cái)?shù)據(jù)放置在用于進(jìn)行DMA操作的存儲(chǔ)器中(就是說(shuō),它不/高速緩沖)。
阻塞TLBIE指令的示例性過(guò)程圖7是操作流程圖,示出了在半同步存儲(chǔ)器復(fù)制操作期間阻塞轉(zhuǎn)換后備緩沖區(qū)無(wú)效輸入指令的示例性過(guò)程。圖7的操作流程圖在步驟702處開(kāi)始,并且直接轉(zhuǎn)到步驟704。處理器100在步驟704處確定是否已經(jīng)發(fā)出tlbie指令。如果該確定的結(jié)果是否定的,則處理器在步驟704處繼續(xù)確定是否已經(jīng)發(fā)出tlbie指令。如果該確定的結(jié)果是肯定的,則處理器100在步驟706處檢查由tlbie指令所瞄準(zhǔn)的地址。
處理器100在步驟708處確定由tlbie指令所瞄準(zhǔn)的地址是否在與半同步存儲(chǔ)器復(fù)制操作相關(guān)的地址范圍內(nèi)。例如,處理器100把由tlbie指令瞄準(zhǔn)的地址與在源和目標(biāo)寄存器220、222、224、226內(nèi)找到的地址范圍相比較。如果該確定的結(jié)果是否定的,則處理器100在步驟710處允許tlbie指令執(zhí)行。如果該確定的結(jié)果是肯定的,則處理器100在步驟714處停止tlbie指令,直到已經(jīng)完成存儲(chǔ)器復(fù)制操作??刂屏鞒倘缓笤诓襟E716處退出。
圖7的示例性過(guò)程也適用于在存儲(chǔ)器分頁(yè)時(shí)涉及的其他指令。通過(guò)停止瞄準(zhǔn)與半同步存儲(chǔ)器復(fù)制操作相關(guān)的地址的tlbie指令,保護(hù)了地址免到頁(yè)外(page-out)。換句話說(shuō),保持了對(duì)于在源和目的地寄存器220、222、224、226內(nèi)的地址的有效性的臨時(shí)持續(xù)。地址不必固定,這是昂貴的。
非限制例子本發(fā)明的以上實(shí)施例是有利的,因?yàn)樗鼈兲峁┰诖鎯?chǔ)器復(fù)制操作期間允許處理器繼續(xù)執(zhí)行隨后指令的存儲(chǔ)器復(fù)制操作,由此避免不必要的處理器停機(jī)時(shí)間。本發(fā)明的另一個(gè)優(yōu)點(diǎn)在于,因?yàn)榇鎯?chǔ)器復(fù)制指令采用有效(虛擬)地址作為變?cè)杂纱鎯?chǔ)器復(fù)制指令的源和目標(biāo)引用的虛擬存儲(chǔ)器頁(yè)面不固定,并且可容許頁(yè)面故障。這允許避免固定頁(yè)面先驗(yàn)的開(kāi)銷。本發(fā)明的又一個(gè)優(yōu)點(diǎn)在于,存儲(chǔ)器復(fù)制指令對(duì)于地址的對(duì)準(zhǔn)不施加約束,上述地址作為指令變?cè)獋鞯剿1景l(fā)明的另外優(yōu)點(diǎn)在于,通過(guò)使用與數(shù)據(jù)完善結(jié)合的高速緩沖存儲(chǔ)器注入,可避免存儲(chǔ)器時(shí)延。
本發(fā)明可以以硬件、軟件、或硬件和軟件的組合實(shí)現(xiàn)。根據(jù)本發(fā)明優(yōu)選實(shí)施例的一種系統(tǒng)可以以集中形式在一個(gè)計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn),或者以其中不同組件跨過(guò)幾個(gè)互連的計(jì)算機(jī)系統(tǒng)分布的分布式形式實(shí)現(xiàn)。任何種類的計(jì)算機(jī)系統(tǒng)-或適于實(shí)現(xiàn)這里描述的方法的其他設(shè)備,是適合的。硬件和軟件的典型組合可以是具有計(jì)算機(jī)程序的通用目的計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)程序當(dāng)被加載和執(zhí)行時(shí),控制計(jì)算機(jī)系統(tǒng),從而該計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)這里描述的方法。
一般地,執(zhí)行以實(shí)現(xiàn)本發(fā)明的實(shí)施例的例行程序,不管是否作為操作系統(tǒng)的部分,或特定應(yīng)用程序、組件、程序、模塊、對(duì)象或指令序列實(shí)現(xiàn),這里都可以稱作“程序”。計(jì)算機(jī)程序典型地包括將由本機(jī)計(jì)算機(jī)轉(zhuǎn)換成機(jī)器可讀格式并因此可執(zhí)行指令的多條指令。而且,程序包括局部駐留到程序或在存儲(chǔ)器中或在存儲(chǔ)裝置上發(fā)現(xiàn)的變量和數(shù)據(jù)結(jié)構(gòu)。另外,這里描述的各種程序可以基于用途而被識(shí)別,為了該用途它們?cè)诒景l(fā)明的特定實(shí)施例中被實(shí)施。然而,應(yīng)該認(rèn)識(shí)到,遵循的任何特定程序命名法僅為了方便而使用,并因而本發(fā)明不應(yīng)該限于僅以由這樣的命名法識(shí)別和/或所指的任何特定用途而使用。
盡管已經(jīng)公開(kāi)了本發(fā)明的特定實(shí)施例,但本領(lǐng)域的技術(shù)人員將理解,不脫離本發(fā)明的精神和范圍,可對(duì)特定實(shí)施例進(jìn)行改變。本發(fā)明的范圍因此不限于特定實(shí)施例,并且旨在所附權(quán)利要求覆蓋在本發(fā)明的范圍內(nèi)的任何和所有這樣的應(yīng)用、修改、及實(shí)施例。
權(quán)利要求
1.一種在處理器中用來(lái)半同步地把數(shù)據(jù)從存儲(chǔ)器的第一部分復(fù)制到存儲(chǔ)器的第二部分的方法,該方法包括在處理器中接收對(duì)于半同步存儲(chǔ)器復(fù)制操作的調(diào)用,該半同步存儲(chǔ)器復(fù)制操作通過(guò)設(shè)置標(biāo)志位對(duì)于與在存儲(chǔ)器中的源位置相對(duì)應(yīng)的虛擬源地址和與在所述存儲(chǔ)器中的目標(biāo)位置相對(duì)應(yīng)的虛擬目標(biāo)地址保持有效性的臨時(shí)持續(xù),該調(diào)用至少包括虛擬源地址、虛擬目標(biāo)地址、及識(shí)別待復(fù)制的多個(gè)字節(jié)的指示符;在隊(duì)列中放置用于由存儲(chǔ)器控制器執(zhí)行的所述存儲(chǔ)器復(fù)制操作,其中該隊(duì)列耦合到該存儲(chǔ)器控制器上;繼續(xù)執(zhí)行變得從指令流水線可得到的至少一個(gè)隨后指令。
2.根據(jù)權(quán)利要求1所述的方法,其中由所述虛擬源地址和虛擬目標(biāo)地址引用的存儲(chǔ)器頁(yè)面集是可分頁(yè)的。
3.根據(jù)權(quán)利要求1所述的方法,其中所述隨后指令是用于從與所述虛擬源地址相對(duì)應(yīng)的地址范圍的讀操作。
4.根據(jù)權(quán)利要求1所述的方法,其中允許繼續(xù)執(zhí)行至少一個(gè)隨后指令還包括確定所述隨后指令是否是用于如下的至少一個(gè),從如下至少一個(gè)的讀源地址范圍;和目的地地址范圍;和到如下至少一個(gè)的寫(xiě)所述源地址范圍;和所述目的地地址范圍;響應(yīng)所述隨后指令是用于從所述源地址范圍的讀,由所述處理器執(zhí)行所述隨后指令;其中在正在進(jìn)行的半同步存儲(chǔ)器復(fù)制操作期間,對(duì)于所述源地址范圍和目的地地址范圍保持有效性的臨時(shí)持續(xù)。
5.根據(jù)權(quán)利要求1所述的方法,還包括確定包括所述存儲(chǔ)器復(fù)制操作的隊(duì)列是否是充滿的;響應(yīng)所述存儲(chǔ)器復(fù)制指令隊(duì)列具有用于另外的存儲(chǔ)器復(fù)制操作的空間,在所述隊(duì)列中放置用于由所述存儲(chǔ)器控制器執(zhí)行的至少一個(gè)另外的存儲(chǔ)器復(fù)制操作。
6.根據(jù)權(quán)利要求5所述的方法,還包括響應(yīng)所述存儲(chǔ)器復(fù)制指令隊(duì)列是充滿的,等待在所述隊(duì)列中放置所述至少一個(gè)另外的存儲(chǔ)器復(fù)制操作,直到所述存儲(chǔ)器復(fù)制指令隊(duì)列具有用于所述至少一個(gè)另外的存儲(chǔ)器復(fù)制操作的足夠空間。
7.根據(jù)權(quán)利要求1所述的方法,其中所述半同步存儲(chǔ)器復(fù)制操作的長(zhǎng)度任意地限定。
8.根據(jù)權(quán)利要求1所述的方法,其中與所述虛擬源地址相對(duì)應(yīng)的地址范圍和與所述虛擬目標(biāo)地址相對(duì)應(yīng)的地址范圍是未對(duì)準(zhǔn)的。
9.一種用來(lái)半同步地把數(shù)據(jù)從存儲(chǔ)器的第一部分復(fù)制到存儲(chǔ)器的第二部分的系統(tǒng),該系統(tǒng)包括存儲(chǔ)器;通信地耦合到所述存儲(chǔ)器上的存儲(chǔ)器控制器;處理器,通信地耦合到所述存儲(chǔ)器和存儲(chǔ)器控制器上,其中所述處理器接收用于半同步存儲(chǔ)器復(fù)制操作的調(diào)用,該半同步存儲(chǔ)器復(fù)制操作通過(guò)設(shè)置標(biāo)志位對(duì)于與在所述存儲(chǔ)器中的源位置相對(duì)應(yīng)的虛擬源地址和與在所述存儲(chǔ)器中的目標(biāo)位置相對(duì)應(yīng)的虛擬目標(biāo)地址保持有效性的臨時(shí)持續(xù),所述調(diào)用至少包括所述虛擬源地址、所述虛擬目標(biāo)地址、及識(shí)別待復(fù)制的多個(gè)字節(jié)的指示符;及隊(duì)列,用來(lái)保持用于由所述存儲(chǔ)器控制器執(zhí)行的所述存儲(chǔ)器復(fù)制操作,其中所述隊(duì)列耦合到所述存儲(chǔ)器控制器上。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中當(dāng)所述存儲(chǔ)器復(fù)制操作正在執(zhí)行時(shí),執(zhí)行從指令流水線可得到的一條或多條隨后指令。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),其中由所述虛擬源地址和虛擬目標(biāo)地址引用的存儲(chǔ)器頁(yè)面集是可分頁(yè)的。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述隨后指令是用于從與所述虛擬源地址相對(duì)應(yīng)的地址范圍的讀操作。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述處理器確定所述隨后指令是否是用于如下的至少一個(gè),從如下至少一個(gè)的讀源地址范圍;和目的地地址范圍;和到如下至少一個(gè)的寫(xiě)所述源地址范圍;和所述目的地地址范圍;并且,響應(yīng)所述隨后指令是用于從所述源地址范圍的讀,執(zhí)行所述隨后指令;其中在正在進(jìn)行的半同步存儲(chǔ)器復(fù)制操作期間,對(duì)于所述源地址范圍和目的地地址范圍保持有效性的臨時(shí)持續(xù)。
14.根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述隊(duì)列保持由所述存儲(chǔ)器控制器執(zhí)行的至少兩個(gè)半同步存儲(chǔ)器復(fù)制操作。
15.根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述半同步存儲(chǔ)器復(fù)制操作的長(zhǎng)度任意地限定。
16.根據(jù)權(quán)利要求9所述的系統(tǒng),其中與所述虛擬源地址相對(duì)應(yīng)的地址范圍和與所述虛擬目標(biāo)地址相對(duì)應(yīng)的地址范圍是未對(duì)準(zhǔn)的。
17.一種用來(lái)半同步地把數(shù)據(jù)從存儲(chǔ)器的第一部分復(fù)制到存儲(chǔ)器的第二部分的計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)包括用來(lái)執(zhí)行在根據(jù)權(quán)利要求1-8的任一項(xiàng)的方法中的步驟的指令。
全文摘要
公開(kāi)了一種用來(lái)半同步地把數(shù)據(jù)從存儲(chǔ)器的第一部分復(fù)制到存儲(chǔ)器的第二部分的系統(tǒng)、方法、及計(jì)算機(jī)程序產(chǎn)品。該方法包括在處理器中接收對(duì)于半同步存儲(chǔ)器復(fù)制操作的調(diào)用。半同步存儲(chǔ)器復(fù)制操作通過(guò)設(shè)置標(biāo)志位對(duì)于與在存儲(chǔ)器中的源位置相對(duì)應(yīng)的虛擬源地址和與在存儲(chǔ)器中的目標(biāo)位置相對(duì)應(yīng)的虛擬目標(biāo)地址保持有效性的臨時(shí)持續(xù)。該調(diào)用至少包括虛擬源地址、虛擬目標(biāo)地址、及識(shí)別待復(fù)制的多個(gè)字節(jié)的指示符。存儲(chǔ)器復(fù)制操作放置在隊(duì)列中以便由存儲(chǔ)器控制器執(zhí)行。隊(duì)列耦合到存儲(chǔ)器控制器上。繼續(xù)執(zhí)行至少一個(gè)變得從指令流水線可得到的隨后指令。
文檔編號(hào)G06F9/38GK1987827SQ200610132248
公開(kāi)日2007年6月27日 申請(qǐng)日期2006年10月12日 優(yōu)先權(quán)日2005年12月22日
發(fā)明者塞特雅·P·沙瑪, 布魯斯·G·米利, 貝拉拉姆·辛哈羅伊, 彼得·H·霍克希爾德, 拉維·K·阿里米利, 拉姆·K·戈文達(dá)拉賈 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司