專(zhuān)利名稱(chēng):通過(guò)源/目的轉(zhuǎn)換機(jī)構(gòu)實(shí)現(xiàn)高速存儲(chǔ)器克隆的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)處理系統(tǒng),具體地說(shuō),涉及數(shù)據(jù)處理系統(tǒng)的處理器內(nèi)的數(shù)據(jù)移動(dòng)。更具體地說(shuō),本發(fā)明涉及在數(shù)據(jù)處理系統(tǒng)的存儲(chǔ)器子系統(tǒng)內(nèi)能夠進(jìn)行更快速、更有效的數(shù)據(jù)移動(dòng)的方法和系統(tǒng)。
背景技術(shù):
對(duì)于更快速和硬件不太密集的數(shù)據(jù)處理和數(shù)據(jù)運(yùn)算的需要一直是數(shù)據(jù)處理系統(tǒng)領(lǐng)域中發(fā)生的各種改進(jìn)背后的驅(qū)動(dòng)力。近來(lái)的趨勢(shì)是更快速、更小并且更復(fù)雜處理器的出現(xiàn),以及多處理器結(jié)構(gòu)的實(shí)現(xiàn),所述多處理器結(jié)構(gòu)能夠使多個(gè)互連的處理器同時(shí)執(zhí)行指定任務(wù)的多個(gè)部分。除了多處理器結(jié)構(gòu)的實(shí)現(xiàn)之外,還開(kāi)發(fā)出了具有便于更有效地訪(fǎng)問(wèn)存儲(chǔ)器的分布式存儲(chǔ)器系統(tǒng)的系統(tǒng)。另外,實(shí)現(xiàn)了基于開(kāi)關(guān)的互連(或者接線(xiàn)器(switch)),以代替?zhèn)鹘y(tǒng)的總線(xiàn)互連。
分布式存儲(chǔ)器使得數(shù)據(jù)能夠被保存在多個(gè)獨(dú)立的存儲(chǔ)器模塊中,并且增強(qiáng)多處理器結(jié)構(gòu)中的存儲(chǔ)器訪(fǎng)問(wèn)?;陂_(kāi)關(guān)的互連使處理系統(tǒng)的各個(gè)組件彼此直接連接,從而在組件之間提供更快速/更直接的通信和數(shù)據(jù)傳輸。
圖1是圖解說(shuō)明具有分布式存儲(chǔ)器和基于開(kāi)關(guān)的互連(接線(xiàn)器)的傳統(tǒng)多處理器系統(tǒng)的方框圖。如圖所示,多處理器數(shù)據(jù)處理系統(tǒng)100包括通過(guò)接線(xiàn)器103彼此互連,并與其它系統(tǒng)組件互連的多個(gè)處理器芯片101A-101D。其它系統(tǒng)組件包括分布式存儲(chǔ)器105、107(具有相關(guān)的存儲(chǔ)器控制器106、108),和輸入/輸出(I/O)組件104。其它組件(未示出)也可通過(guò)接線(xiàn)器103與圖解說(shuō)明的組件互連。處理器芯片101A-101D分別包括順序標(biāo)記為P1-PN的兩個(gè)處理器核心(處理器)。除了處理器P1-PN之外,處理器芯片101A-101D包括和處理器P1-PN一起控制數(shù)據(jù)處理系統(tǒng)100內(nèi)的處理操作的其它組件/邏輯電路。圖1圖解說(shuō)明了一個(gè)這種組件,硬件引擎111,其功能后面說(shuō)明。
在如圖1所示的多處理器數(shù)據(jù)處理系統(tǒng)中,多個(gè)處理器(或者處理器操作)通常可訪(fǎng)問(wèn)一個(gè)或多個(gè)存儲(chǔ)器/存儲(chǔ)模塊,存儲(chǔ)器一般被處理資源共享。由于每個(gè)處理資源可獨(dú)立行動(dòng),因此系統(tǒng)內(nèi)會(huì)出現(xiàn)對(duì)共享存儲(chǔ)資源的競(jìng)爭(zhēng)。例如,當(dāng)?shù)谝惶幚砥髡谠L(fǎng)問(wèn)特定的存儲(chǔ)器地址時(shí),第二處理器可能試圖對(duì)該存儲(chǔ)器地址進(jìn)行寫(xiě)(或讀)操作。如果在先的訪(fǎng)問(wèn)正在進(jìn)行中時(shí),產(chǎn)生后一訪(fǎng)問(wèn)請(qǐng)求,那么必須延遲或阻止后面的請(qǐng)求,直到在先請(qǐng)求完成為止。從而,為了把數(shù)據(jù)寫(xiě)入特定的存儲(chǔ)器位置(或者地址)或者從特定的存儲(chǔ)器位置(或地址)讀取數(shù)據(jù),在讀/寫(xiě)操作完全完成之前,處理器必須獲得關(guān)于該特定存儲(chǔ)器地址的鎖定。這消除了當(dāng)系統(tǒng)不知不覺(jué)地處理不正確(例如陳舊)數(shù)據(jù)時(shí),可能發(fā)生的錯(cuò)誤。
另外,借助更快速、更復(fù)雜的多處理器系統(tǒng),多個(gè)數(shù)據(jù)請(qǐng)求可同時(shí)發(fā)出,并存在于不同的完成階段中。除了關(guān)心一致性之外,處理器必須確保特定的數(shù)據(jù)塊未被改變操作順序。例如,如果處理器P1要求對(duì)位于地址A的數(shù)據(jù)塊進(jìn)行寫(xiě)操作,處理器P2必須讀取同一數(shù)據(jù)塊,并且如果在程序序列中讀操作在寫(xiě)操作之前,那么重要的是保持這兩個(gè)操作的順序,以便獲得正確的結(jié)果。
數(shù)據(jù)處理系統(tǒng)的標(biāo)準(zhǔn)操作要求處理組件(及其它組件)對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)和移動(dòng)或處理。數(shù)據(jù)通常保存在存儲(chǔ)器中,并且利用執(zhí)行程序代碼的特定處理器發(fā)出的命令,被訪(fǎng)問(wèn)/讀取、取回(retrieve)、處理、保存/寫(xiě)入和/或僅僅被移動(dòng)。
數(shù)據(jù)移動(dòng)操作不涉及對(duì)數(shù)據(jù)的數(shù)值/內(nèi)容的改變/修改。相反,數(shù)據(jù)移動(dòng)操作把數(shù)據(jù)從具有第一物理地址的一個(gè)存儲(chǔ)器位置轉(zhuǎn)移到具有不同物理地址的另一位置。在分布式存儲(chǔ)器系統(tǒng)中,數(shù)據(jù)可從一個(gè)存儲(chǔ)模塊轉(zhuǎn)移到另一存儲(chǔ)模塊,不過(guò)單一存儲(chǔ)器/存儲(chǔ)模塊內(nèi)的移動(dòng)也是可能的。
為了實(shí)現(xiàn)目前系統(tǒng)中的任意一種移動(dòng),完成下述步驟(1)處理器引擎發(fā)出裝入和保存指令,這導(dǎo)致高速緩沖存儲(chǔ)器線(xiàn)(cacheline)(“CL”)讀取內(nèi)容通過(guò)接線(xiàn)器/互連,從處理器芯片被傳送給存儲(chǔ)器控制器;(2)存儲(chǔ)器控制器獲得關(guān)于目的地存儲(chǔ)器位置的鎖定;(3)(存儲(chǔ)器控制器)向處理器分配鎖定目的地存儲(chǔ)器位置;(4)通過(guò)接線(xiàn)器/互連,把數(shù)據(jù)從存儲(chǔ)器(源地址)發(fā)送給處理器芯片(引擎);(5)通過(guò)接線(xiàn)器/互連,把數(shù)據(jù)從處理器引擎發(fā)送給目的地位置的存儲(chǔ)器控制器;(6)把數(shù)據(jù)寫(xiě)入目的地位置;和(7)為其它處理器釋放目的地的鎖定(lock)。該過(guò)程中固有的是即使當(dāng)利用接線(xiàn)器時(shí),把數(shù)據(jù)從源存儲(chǔ)器位置轉(zhuǎn)移到處理器芯片,隨后從處理器芯片轉(zhuǎn)移到目的地存儲(chǔ)器位置的固定等待時(shí)間。
一般來(lái)說(shuō),每個(gè)裝入和保存操作移動(dòng)一個(gè)8字節(jié)的數(shù)據(jù)塊。為了完成該移動(dòng),需要高速緩沖存儲(chǔ)器的滾動(dòng),轉(zhuǎn)換后備緩沖器(translation look-aside buffer)(TLB)的利用來(lái)實(shí)現(xiàn)有效讀取地址轉(zhuǎn)換,還需要利用處理器及其它硬件資源來(lái)接收和轉(zhuǎn)發(fā)數(shù)據(jù)。至少一個(gè)處理器系統(tǒng)制造商已引入硬件加速裝入線(xiàn)路和存儲(chǔ)線(xiàn)路,和TLB一起在高速緩沖存儲(chǔ)器線(xiàn)上實(shí)現(xiàn)字節(jié)級(jí)的同步操作。
現(xiàn)在利用圖1圖解說(shuō)明處理器P1從存儲(chǔ)器中的一個(gè)區(qū)域/位置(即物理地址)向另一區(qū)域/位置的數(shù)據(jù)移動(dòng)。如圖1中及識(shí)別路徑1和2的方向箭所示,在數(shù)據(jù)移動(dòng)操作中,通過(guò)把數(shù)據(jù)放在沿著數(shù)據(jù)路徑1的總線(xiàn)(或者接線(xiàn)器103)上,數(shù)據(jù)從存儲(chǔ)器105中的地址位置A移動(dòng)到處理器芯片101A。隨后通過(guò)接線(xiàn)器103,沿著數(shù)據(jù)路徑2,數(shù)據(jù)從處理器芯片101A被發(fā)送給存儲(chǔ)器107內(nèi)的所需地址位置B。
目前(及在前的)系統(tǒng)利用硬件引擎(即硬件模型)和/或軟件編程模型(或者接口)完成上述數(shù)據(jù)移動(dòng)操作。
在硬件引擎實(shí)現(xiàn)中,利用虛擬地址,硬件引擎111控制數(shù)據(jù)移動(dòng)操作,并接收正被移動(dòng)的數(shù)據(jù)。硬件引擎111(也稱(chēng)為硬件加速器)啟動(dòng)鎖定獲得過(guò)程,所述過(guò)程在開(kāi)始數(shù)據(jù)的移動(dòng)之前,獲得關(guān)于源存儲(chǔ)器地址和目的地存儲(chǔ)器地址的鎖定,以避免多個(gè)處理器同時(shí)訪(fǎng)問(wèn)位于該存儲(chǔ)器地址的數(shù)據(jù)。不是把數(shù)據(jù)直接發(fā)送到處理器,數(shù)據(jù)被發(fā)送給硬件引擎111。硬件引擎111利用高速緩沖存儲(chǔ)器線(xiàn)讀取,并以流水線(xiàn)方式實(shí)現(xiàn)要完成的寫(xiě)入。
就軟件編程模型來(lái)說(shuō),軟件把位置A和位置B通知處理器硬件,處理器硬件隨后完成該移動(dòng)。在該過(guò)程中,可利用真實(shí)地址(即不是虛擬地址)。因此,可消除前述硬件模型需要的進(jìn)行虛擬地址-真實(shí)地址轉(zhuǎn)換(或歷史模式匹配)所需的其它時(shí)間。另外在軟件模型中,地址可包括偏移量(例如地址B可偏移幾個(gè)字節(jié))。
處理器P1為實(shí)現(xiàn)數(shù)據(jù)移動(dòng)操作而執(zhí)行的典型偽代碼序列如下LOCK DST ;鎖定目的地LOCK SRC ;鎖定源LD A(Byte 0) ;Aa0(4B或8B數(shù)量)ST B(Byte 0) ;Ba0(4B/8B)INC;增加字節(jié)數(shù)CMP;比較,看是否完成BC ;如果未完成,則轉(zhuǎn)移SYNC ;實(shí)現(xiàn)同步RL LOCK;釋放鎖定字節(jié)數(shù)(B0、B1、B2)等被遞增,直到由地址A識(shí)別的存儲(chǔ)區(qū)內(nèi)保存的所有數(shù)據(jù)被移動(dòng)到由地址B識(shí)別的存儲(chǔ)區(qū)為止。鎖定和釋放操作由存儲(chǔ)器控制器和總線(xiàn)仲裁器(arbiter)執(zhí)行,總線(xiàn)仲裁器向被授予鎖定的請(qǐng)求處理器分配對(duì)特定地址的臨時(shí)訪(fǎng)問(wèn)和控制。
在數(shù)據(jù)移動(dòng)操作之后,在處理器P1能夠重新開(kāi)始處理其它后續(xù)操作之前,處理器P1必須接收指示所有數(shù)據(jù)已被物理移動(dòng)到存儲(chǔ)器位置B的完成響應(yīng)(或信號(hào))。這確保在處理單元之間存在一致性,并且數(shù)據(jù)一致性被保持。完成信號(hào)是對(duì)SYNC操作的響應(yīng),SYNc操作是在數(shù)據(jù)移動(dòng)操作之后,由處理器P1在架構(gòu)(fabric)上發(fā)布,以確保所有處理器接收數(shù)據(jù)移動(dòng)操作的通知(及確認(rèn))。
從而,在圖1中,處理器P1發(fā)出的指令啟動(dòng)從位置A到位置B的數(shù)據(jù)移動(dòng)。處理器P1發(fā)出SYNC,并且當(dāng)最后的數(shù)據(jù)塊已被移動(dòng)到位置B時(shí),向處理器P1發(fā)送指示物理移動(dòng)已完成的信號(hào)。作為響應(yīng),處理器P1釋放對(duì)地址B的鎖定,處理器P1能夠重新開(kāi)始處理其它指令。
特別地,由于在能夠開(kāi)始移動(dòng)操作之前,處理器P1必須獲得關(guān)于位置B及位置A的鎖定,因此完成信號(hào)還用信號(hào)通知鎖定的釋放,并使試圖訪(fǎng)問(wèn)存儲(chǔ)器位置A和B的其它處理器能夠獲得這兩個(gè)存儲(chǔ)器位置中任一位置的鎖定。
雖然硬件模型和軟件硬件分別提供不同的功能好處,但是都存在一些局限。例如,硬件模型和軟件模型都具有把數(shù)據(jù)從存儲(chǔ)器(源)裝入處理器芯片,隨后從處理器芯片裝回到存儲(chǔ)器(目的地)的固有等待時(shí)間。此外,就這兩種模型來(lái)說(shuō),在整體移動(dòng)完成之前,處理器必須等待,并且在處理器能夠重新開(kāi)始處理后續(xù)指令/操作之前,產(chǎn)生來(lái)自存儲(chǔ)器控制器的完成響應(yīng)。
于是,本發(fā)明認(rèn)識(shí)到需要提供一種更有效的數(shù)據(jù)移動(dòng)操作的方法和系統(tǒng)。消除了在移動(dòng)數(shù)據(jù)時(shí)從源存儲(chǔ)器地址發(fā)送數(shù)據(jù)到處理器以及發(fā)送回目的地存儲(chǔ)器地址所涉及的時(shí)間延遲的方法、處理器和系統(tǒng)理應(yīng)是受歡迎的改進(jìn)。本發(fā)明提供了這些及其它幾個(gè)優(yōu)點(diǎn)。
發(fā)明內(nèi)容
公開(kāi)了一種數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)通過(guò)將數(shù)據(jù)從存儲(chǔ)器子系統(tǒng)內(nèi)的源位置直接路由到該存儲(chǔ)器子系統(tǒng)內(nèi)的目的地位置。該數(shù)據(jù)不通過(guò)啟動(dòng)數(shù)據(jù)克隆操作的處理器被路由。該存儲(chǔ)器子系統(tǒng)的各存儲(chǔ)部件最好通過(guò)提供大的數(shù)據(jù)帶寬的接線(xiàn)器直接相互連接。
當(dāng)數(shù)據(jù)克隆操作由在數(shù)據(jù)處理系統(tǒng)的架構(gòu)上的處理器發(fā)出時(shí),修改發(fā)送到所述源地址的數(shù)據(jù)讀操作以包括替代處理器地址的目的地地址。接線(xiàn)器將數(shù)據(jù)路由到在數(shù)據(jù)讀操作中提供的地址。因此,該接線(xiàn)器自動(dòng)地將數(shù)據(jù)路由到目的地地址而不路由到請(qǐng)求處理器。
在一個(gè)實(shí)施例中,處理器具有相關(guān)的高速存儲(chǔ)器克隆體,其負(fù)責(zé)發(fā)布具有目的地地址而非處理器地址的讀操作。數(shù)據(jù)處理系統(tǒng)執(zhí)行數(shù)據(jù)一致性協(xié)議,并且數(shù)據(jù)從具有數(shù)據(jù)的最一致副本的存儲(chǔ)器位置被發(fā)送。
附加權(quán)利要求中陳述了本發(fā)明特有的新特征。但是,結(jié)合附圖,參考例證實(shí)施例的下述詳細(xì)說(shuō)明,將更好地理解發(fā)明本身,以及本發(fā)明的優(yōu)選使用方式、其它目的和優(yōu)點(diǎn),其中圖1是根據(jù)現(xiàn)有技術(shù)圖解說(shuō)明具有用于移動(dòng)數(shù)據(jù)的硬件引擎的多處理器數(shù)據(jù)處理系統(tǒng)的方框圖;圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖解說(shuō)明配置有存儲(chǔ)器克隆體的處理器系統(tǒng)內(nèi)的例證存儲(chǔ)器-存儲(chǔ)器克隆操作的方框圖;圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖解說(shuō)明圖2的存儲(chǔ)器克隆體的組件的方框圖;圖4A是根據(jù)本發(fā)明的一個(gè)實(shí)施例,表示主存儲(chǔ)器內(nèi)的存儲(chǔ)位置X和Y的方框圖,所述存儲(chǔ)位置X和Y被用于保存存儲(chǔ)器克隆操作的源地址和目的地地址;圖4B根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖解說(shuō)明圖2的數(shù)據(jù)處理系統(tǒng)的(接線(xiàn)器)架構(gòu)上的存儲(chǔ)器地址操作數(shù)及標(biāo)記,包括裸寫(xiě)的流動(dòng);圖5A是圖解說(shuō)明按照本發(fā)明的一個(gè)例證實(shí)施例工作的數(shù)據(jù)處理系統(tǒng)內(nèi)克隆數(shù)據(jù)的一般過(guò)程的流程圖;圖5B是根據(jù)本發(fā)明的一個(gè)實(shí)現(xiàn),圖解說(shuō)明在數(shù)據(jù)克隆操作內(nèi)發(fā)出裸寫(xiě)的過(guò)程的流程圖;圖5C是根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖解說(shuō)明結(jié)構(gòu)完成狀態(tài)前后的過(guò)程步驟的流程圖;圖5D是根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖解說(shuō)明通過(guò)發(fā)布讀取操作,發(fā)布物理移動(dòng)數(shù)據(jù)的讀取操作的過(guò)程的流程圖;圖6A根據(jù)本發(fā)明的實(shí)現(xiàn)過(guò)程中,一致提供(sourcing)/保存數(shù)據(jù)的一個(gè)模型,圖解說(shuō)明具有主存儲(chǔ)器、幾級(jí)高速緩沖存儲(chǔ)器和外部系統(tǒng)存儲(chǔ)器的分布式存儲(chǔ)器子系統(tǒng);圖6B圖解說(shuō)明具有上層金屬的存儲(chǔ)模塊,所述上層金屬簡(jiǎn)化了相同存儲(chǔ)模塊內(nèi)從源到目的地的數(shù)據(jù)直接克隆,而不必利用外部接線(xiàn)器;圖7A是根據(jù)本發(fā)明的一個(gè)實(shí)施例,用于把多個(gè)同時(shí)進(jìn)行的數(shù)據(jù)克隆操作引向正確的目的地存儲(chǔ)器的地址標(biāo)記的框圖;圖7B是根據(jù)本發(fā)明的一個(gè)實(shí)施例,當(dāng)裸寫(xiě)完成,并且產(chǎn)生結(jié)構(gòu)完成狀態(tài)時(shí),存儲(chǔ)器克隆體用于跟蹤的寄存器的框圖;圖8A是圖解說(shuō)明按照本發(fā)明的一個(gè)實(shí)施例工作的數(shù)據(jù)處理系統(tǒng)內(nèi)的鎖定爭(zhēng)用過(guò)程的方框圖;圖8B是根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖解說(shuō)明數(shù)據(jù)克隆操作期間,保持?jǐn)?shù)據(jù)一致性的過(guò)程的流程圖;圖9A根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖解說(shuō)明具有附加模式位的指令,所述模式位可由軟件來(lái)回切換,以指示指令的處理器執(zhí)行是按照真實(shí)尋址模式,還是按照虛擬尋址模式進(jìn)行的;圖9B根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖解說(shuō)明數(shù)據(jù)處理系統(tǒng)內(nèi)的應(yīng)用代碼、OS和固件層,以及各層支持的相關(guān)類(lèi)型的地址操作。
具體實(shí)施例方式
A.綜述本發(fā)明提供與處理器(或者處理器芯片)相關(guān)的高速存儲(chǔ)器克隆體(cloner),和利用高速存儲(chǔ)器克隆體提供的特征,完成數(shù)據(jù)克隆操作的有效方法。存儲(chǔ)器克隆體使處理器能夠遵循把數(shù)據(jù)從第一存儲(chǔ)器位置移動(dòng)到另一存儲(chǔ)器位置的請(qǐng)求,繼續(xù)處理操作,而不要求要完成的數(shù)據(jù)的實(shí)際移動(dòng)。
本發(fā)明引入關(guān)于移動(dòng)操作的層次結(jié)構(gòu)完成狀態(tài)。存儲(chǔ)器克隆體提供的功能特征包括裸(naked)寫(xiě)操作,支持裸寫(xiě)操作和直接存儲(chǔ)器-存儲(chǔ)器數(shù)據(jù)移動(dòng)的先進(jìn)相關(guān)一致性操作,指令集體系結(jié)構(gòu)內(nèi)的新指令(例如,無(wú)中斷情況下,借助指令的流水線(xiàn)式發(fā)布,優(yōu)化的組合指令集),以及在數(shù)據(jù)處理的虛擬尋址模式和真實(shí)尋址模式之間動(dòng)態(tài)轉(zhuǎn)換的模式位。本發(fā)明還提供了數(shù)據(jù)處理系統(tǒng)的其它新穎操作特征。
本發(fā)明利用了目前的處理系統(tǒng)中存在的開(kāi)關(guān)布局以及存儲(chǔ)器控制器的功能性。和目前的用于實(shí)現(xiàn)移動(dòng)操作的基于硬件或基于軟件的模型(它要求把數(shù)據(jù)回送給請(qǐng)求處理器模塊,隨后從處理器模塊把數(shù)據(jù)轉(zhuǎn)發(fā)給目的)不同,本發(fā)明實(shí)現(xiàn)具有允許直接把數(shù)據(jù)傳送給目的地的附加特征的組合軟件模型和硬件模型。最好利用設(shè)計(jì)有存儲(chǔ)器克隆體的處理器芯片實(shí)現(xiàn)本發(fā)明,存儲(chǔ)器克隆體包括下面說(shuō)明的各種硬件和軟件邏輯單元/組件。
本發(fā)明的說(shuō)明規(guī)定了幾個(gè)新術(shù)語(yǔ),其中關(guān)鍵的是高速存儲(chǔ)器克隆體進(jìn)行的“克隆”操作。如此處使用的,克隆操作指的是在高速存儲(chǔ)器克隆體內(nèi),在架構(gòu)上,以及在存儲(chǔ)器位置發(fā)生的,一同實(shí)現(xiàn)數(shù)據(jù)的層次結(jié)構(gòu)完成狀態(tài)和實(shí)際物理移動(dòng)的所有操作。數(shù)據(jù)從A點(diǎn)被移動(dòng)到B點(diǎn),但它是按照和完成數(shù)據(jù)移動(dòng)操作的已知方法完全不同的方式進(jìn)行的。數(shù)據(jù)“移動(dòng)”的引用(reference)具體指的是從處理器發(fā)給高速存儲(chǔ)器控制器的指令。在一些情況下,當(dāng)具體指的是作為數(shù)據(jù)克隆操作一部分的數(shù)據(jù)的物理移動(dòng)時(shí),利用術(shù)語(yǔ)“移動(dòng)”。從而,例如,物理數(shù)據(jù)移動(dòng)的完成被看作是數(shù)據(jù)克隆操作的一部分。
B.硬件可選件現(xiàn)在參見(jiàn)附圖,特別參見(jiàn)圖2,圖2圖解說(shuō)明了多處理器、接線(xiàn)器連接的數(shù)據(jù)處理系統(tǒng)200,本發(fā)明可在數(shù)據(jù)處理系統(tǒng)200內(nèi)實(shí)現(xiàn)。數(shù)據(jù)處理系統(tǒng)200包括多個(gè)處理器模塊/芯片,圖中描繪了它們的兩個(gè),即芯片201A和201D。處理器芯片201A和201D均包含一個(gè)或多個(gè)處理器(P1、P2等)。存儲(chǔ)器克隆體211至少位于處理芯片之一內(nèi)(例如,處理器芯片201),后面參考圖3說(shuō)明存儲(chǔ)器克隆體211。處理器芯片201A和201D通過(guò)接線(xiàn)器203彼此互連,并與數(shù)據(jù)處理系統(tǒng)200的其它組件互連。這些其它組件包括分布式存儲(chǔ)器模塊,圖中描繪了它們中的兩個(gè),即存儲(chǔ)器205和207,存儲(chǔ)器205和207分別具有相應(yīng)的存儲(chǔ)器控制器206和208。與存儲(chǔ)器控制器208相聯(lián)系的是存儲(chǔ)器高速緩存213,下面結(jié)合裸寫(xiě)操作的說(shuō)明,描述存儲(chǔ)器高速緩存的功能。
在數(shù)據(jù)克隆操作的實(shí)現(xiàn)過(guò)程中,通過(guò)接線(xiàn)器203,數(shù)據(jù)直接從存儲(chǔ)器205的存儲(chǔ)位置A被移動(dòng)到存儲(chǔ)器207的存儲(chǔ)位置B。從而,數(shù)據(jù)沿著不包括處理器或處理器模塊的直接路徑3移動(dòng)。即,被移動(dòng)的數(shù)據(jù)不是首先被發(fā)送給存儲(chǔ)器克隆體211或處理器P1。當(dāng)正在完成物理移動(dòng)的時(shí)候,數(shù)據(jù)的實(shí)際移動(dòng)由存儲(chǔ)器控制器206和208分別控制(或者在基于下面描述的模型相關(guān)情況下,由高速緩存控制器控制),存儲(chǔ)器控制器206和208還分別控制對(duì)存儲(chǔ)器205和207的訪(fǎng)問(wèn)。
這里只是出于舉例說(shuō)明的目的,給出了數(shù)據(jù)處理系統(tǒng)內(nèi)的處理器和存儲(chǔ)器的例證結(jié)構(gòu)。本領(lǐng)域的技術(shù)人員明白本發(fā)明的各種功能特征完全適合于包含非分布式存儲(chǔ)器和/或單個(gè)處理器/處理器芯片的系統(tǒng)結(jié)構(gòu)。于是,這里描述的本發(fā)明的功能特征適合于不同結(jié)構(gòu)的數(shù)據(jù)處理系統(tǒng),只要數(shù)據(jù)處理系統(tǒng)包括高速存儲(chǔ)器克隆體和/或借助其,可完成這里描述的各種功能特征的類(lèi)似組件。
高速存儲(chǔ)器克隆體存儲(chǔ)器克隆體211包括借助其控制和/或啟動(dòng)本發(fā)明的處理的硬件和軟件組件。具體地說(shuō),如圖3中所示,存儲(chǔ)器克隆體211包括控制邏輯單元303和轉(zhuǎn)換后備緩沖器(TLB)319。存儲(chǔ)器克隆體211還包括幾個(gè)寄存器,包括SRC地址寄存器、DST地址寄存器307、CNT寄存器309、層次結(jié)構(gòu)完成寄存器313和克隆完成寄存器317。模式位315也包含在存儲(chǔ)器克隆體內(nèi)。在本文獻(xiàn)的相關(guān)章節(jié)描述存儲(chǔ)器克隆體的各個(gè)圖解組件的功能。
特別地,和硬件加速器或類(lèi)似組件不同,存儲(chǔ)器克隆體只接收和發(fā)布地址操作。借助每個(gè)芯片單一存儲(chǔ)器克隆體,可實(shí)現(xiàn)本實(shí)現(xiàn)。另一方面,每個(gè)微處理器可使用相應(yīng)的存儲(chǔ)器克隆體。
TLB 319包括虛擬地址緩沖器321和真實(shí)地址緩沖器323。與處理器P1、P2等使用的I-TLB和D-TLB分離的TLB 319被固定,并且與I-TLB和D-TLB協(xié)同工作。緩沖器321和323由OS在啟動(dòng)時(shí)加載,并且最好保存由OS和進(jìn)程引用的所有地址的轉(zhuǎn)變,從而不必讀取存儲(chǔ)器中的OS頁(yè)表。
SRC、DST和CNT寄存器在圖3的圖解說(shuō)明的實(shí)施例中,存儲(chǔ)器克隆體211包括源(SRC)地址寄存器305、目的地(DST)地址寄存器307和計(jì)數(shù)(CNT)寄存器309。如它們的名字暗示那樣,目的地寄存器307和源地址寄存器305分別保存相對(duì)于其移動(dòng)數(shù)據(jù)的存儲(chǔ)位置的目的地地址和源地址。計(jì)數(shù)寄存器309保存在數(shù)據(jù)克隆操作中正被轉(zhuǎn)移的高速緩沖存儲(chǔ)器線(xiàn)的數(shù)目。
從存儲(chǔ)器中用于保存數(shù)據(jù)克隆操作的目的地地址和源地址的位置(X和Y)讀取目的地地址和源地址。源地址和目的地地址的讀取由發(fā)出一個(gè)或多個(gè)指令的處理器(例如P1)觸發(fā),所述一個(gè)或多個(gè)指令一起使存儲(chǔ)器克隆體啟動(dòng)數(shù)據(jù)克隆操作,如下詳細(xì)所述。
C.數(shù)據(jù)克隆操作的一般過(guò)程圖5A圖解說(shuō)明由利用上述硬件組件的本發(fā)明完成的整個(gè)過(guò)程的幾個(gè)主要步驟。所述過(guò)程始于方框501,之后,處理器P1執(zhí)行指令,所述指令構(gòu)成把數(shù)據(jù)從存儲(chǔ)位置A克隆到存儲(chǔ)位置B的請(qǐng)求,如方框503所示。存儲(chǔ)器克隆體接收數(shù)據(jù)克隆請(qǐng)求,取回虛擬源地址和目的地地址,查尋對(duì)應(yīng)的真實(shí)地址,并啟動(dòng)裸WR操作,如方框505所示。在架構(gòu)(fabric)上執(zhí)行裸WR操作,存儲(chǔ)器克隆體監(jiān)視層次結(jié)構(gòu)完成狀態(tài),如方框507所示。在已結(jié)構(gòu)完成克隆操作的指示之后,如方框509所示,存儲(chǔ)器克隆體用信號(hào)通知處理器克隆操作完成,處理器繼續(xù)處理,好象數(shù)據(jù)移動(dòng)已物理完成一樣。隨后,存儲(chǔ)器克隆體在后臺(tái)完成實(shí)際的數(shù)據(jù)移動(dòng),如方框511所示,并且在物理移動(dòng)數(shù)據(jù)的時(shí)候,存儲(chǔ)器克隆體進(jìn)行必要的高速緩沖存儲(chǔ)器線(xiàn)的保護(hù)。該過(guò)程隨后在方框513終止。下面參考這里提供的幾個(gè)其它流程圖,展開(kāi)并說(shuō)明由圖5A的各個(gè)方框規(guī)定的過(guò)程。
現(xiàn)在參考圖5B,圖中圖解說(shuō)明了圖5A的完成方框505中涉及的幾個(gè)步驟。該過(guò)程始于方框521,隨后轉(zhuǎn)移到方框523,方框523圖解說(shuō)明從存儲(chǔ)位置X和Y取回被請(qǐng)求數(shù)據(jù)克隆操作的目的地地址和源地址,并將其置于存儲(chǔ)器克隆體中的相應(yīng)寄存器中。計(jì)數(shù)值(即數(shù)據(jù)的高速緩沖存儲(chǔ)器線(xiàn)的數(shù)目)也被置于CNT寄存器中,如方框525所示。隨后如方框526所示,完成源令牌(token)和目的令牌操作。之后,裸CL WR被放在架構(gòu)上,如方框527所示。每個(gè)裸CLWR在架構(gòu)上接收來(lái)自存儲(chǔ)器控制器的響應(yīng)。在方框529,確定響應(yīng)是否為NULL。如果響應(yīng)不是NULL,那么重試裸CL WR操作,如方框531所示。但是,當(dāng)響應(yīng)為NULL時(shí),在存儲(chǔ)器克隆體211內(nèi),裸CL WR被標(biāo)記為完成,如方框533所示。在以下各個(gè)章節(jié)中更詳細(xì)地說(shuō)明在圖5B中圖解說(shuō)明的各個(gè)步驟。
移動(dòng)操作數(shù)(operand)和移動(dòng)地址的取回為了能夠清楚地理解本發(fā)明,下面參考小塊的程序代碼,以及從存儲(chǔ)位置A(具有虛擬地址A和真實(shí)地址A1)到另一存儲(chǔ)位置B(具有虛擬地址B和真實(shí)地址B1)的數(shù)據(jù)克隆,說(shuō)明數(shù)據(jù)克隆操作的實(shí)現(xiàn)。從而,例如,在處理器P1執(zhí)行的導(dǎo)致從存儲(chǔ)位置A到存儲(chǔ)位置B的數(shù)據(jù)克隆的樣本程序代碼塊如下ST X(地址X持有虛擬源地址A)ST Y(地址Y持有虛擬目的地地址B)ST CNT (CNT是要克隆的數(shù)據(jù)線(xiàn)的數(shù)目)SYNCADD上面表示存儲(chǔ)器克隆體從處理器接收的啟動(dòng)克隆操作的樣本指令。ADD指令被用作在完成數(shù)據(jù)克隆操作之前,不被處理器執(zhí)行的樣本指令。每當(dāng)從處理器收到上述直到SYNC的一系列指令時(shí),存儲(chǔ)器克隆體啟動(dòng)數(shù)據(jù)克隆操作。在存儲(chǔ)器克隆體執(zhí)行上述一系列指令會(huì)導(dǎo)致把虛擬源地址和目的地地址返回給存儲(chǔ)器克隆體,還會(huì)提供要移動(dòng)的數(shù)據(jù)線(xiàn)的數(shù)目。在例證實(shí)施例中,CNT的值等于一頁(yè)存儲(chǔ)器內(nèi)的線(xiàn)(line)的數(shù)目,克隆操作被描述成克隆位于地址A1的單頁(yè)數(shù)據(jù)。
圖4A用X和Y存儲(chǔ)位置的方框表示,圖解說(shuō)明了存儲(chǔ)器405,存儲(chǔ)器405可以是存儲(chǔ)器子系統(tǒng)內(nèi)的任意存儲(chǔ)器205、207,數(shù)據(jù)克隆操作的源地址和目的地地址,A和B存在于所述X和Y存儲(chǔ)位置之中。在一個(gè)實(shí)施例中,在較早的執(zhí)行時(shí)間,處理器把克隆操作的A和B地址保存在X和Y存儲(chǔ)位置中。每個(gè)存儲(chǔ)位置包括32位的地址數(shù)據(jù)和之后的12個(gè)保留位。根據(jù)圖解說(shuō)明的實(shí)施例,附加的這12位中的頭5位被數(shù)據(jù)處理系統(tǒng)的狀態(tài)機(jī)用于選擇源或目的地頁(yè)地址范圍內(nèi)32個(gè)可能頁(yè)中的哪一頁(yè)正被請(qǐng)求/訪(fǎng)問(wèn)。
如圖4A中所示,X和Y地址是保存A和B虛擬地址的存儲(chǔ)位置,并且當(dāng)包含在存儲(chǔ)請(qǐng)求(ST)中時(shí),向處理器及存儲(chǔ)器克隆體指出該請(qǐng)求是關(guān)于數(shù)據(jù)克隆操作(而不是關(guān)于常規(guī)保存操作)的請(qǐng)求。虛擬地址A和B對(duì)應(yīng)于數(shù)據(jù)克隆操作的源和目的地的真實(shí)存儲(chǔ)器地址A1和B1,并被保存在存儲(chǔ)器克隆體211的SRC地址寄存器305和DST地址寄存器307內(nèi)。在下面的存儲(chǔ)器克隆操作的說(shuō)明中,A和B指的是地址,所述地址是保存在存儲(chǔ)器克隆體內(nèi)的數(shù)據(jù)地址,而A1和B1指的是發(fā)布給架構(gòu)的(即在接線(xiàn)器上發(fā)出的)真實(shí)存儲(chǔ)器地址。A和A1及B和B1分別代表數(shù)據(jù)克隆操作的源存儲(chǔ)位置和目的地存儲(chǔ)位置。
在圖解說(shuō)明的實(shí)施例中,當(dāng)存儲(chǔ)器克隆體211接收處理器和其后跟隨SYNC的ST命令序列時(shí),TLB 319分別根據(jù)虛擬地址(X和Y)查尋真實(shí)地址X1和Y1。X1和Y1是專(zhuān)用于保存存儲(chǔ)器克隆操作的源地址和目的地地址的存儲(chǔ)位置。存儲(chǔ)器克隆體211通過(guò)接線(xiàn)器(即在架構(gòu)上)向存儲(chǔ)器發(fā)出操作,所述操作訪(fǎng)問(wèn)相應(yīng)的位置,并把目的地地址和源地址返回給存儲(chǔ)器克隆體211。存儲(chǔ)器克隆體211分別從位置X1和Y1接收源(A)和目的地(B)的虛擬地址。提供的實(shí)際地址是第一頁(yè)存儲(chǔ)器地址。
存儲(chǔ)器克隆體211把源地址和目的地地址,以及從處理器P1接收的高速緩沖存儲(chǔ)器線(xiàn)計(jì)數(shù)分別保存在寄存器305、307、309中。根據(jù)保存在CNT寄存器309內(nèi)的值,存儲(chǔ)器克隆體能夠產(chǎn)生始于利用12個(gè)保留位的頭5個(gè)附加位的SRC寄存器305和DST寄存器307內(nèi)的地址,從0-31順序編號(hào)的連續(xù)地址。
例如,對(duì)其中把具有128字節(jié)線(xiàn)的一頁(yè)4K字節(jié)數(shù)據(jù)從存儲(chǔ)器地址A1(具有4K對(duì)準(zhǔn)地址)移動(dòng)到存儲(chǔ)器地址BI(也具有4K對(duì)準(zhǔn)地址)的克隆操作來(lái)說(shuō),對(duì)應(yīng)于狀態(tài)機(jī)地址擴(kuò)展00000~11111,為32的計(jì)數(shù)值被保存在CNT寄存器309中,所述狀態(tài)機(jī)地址擴(kuò)展0000-11111被附到所述頭5個(gè)位中的源地址上。這些地址擴(kuò)展可由狀態(tài)機(jī)設(shè)置(即存儲(chǔ)器克隆體利用的計(jì)數(shù)器),并且識(shí)別頁(yè)內(nèi)哪些地址塊正在被移動(dòng)。
另外,除了所有頁(yè)之外,本發(fā)明的附加特征還能夠?qū)崿F(xiàn)部分存儲(chǔ)頁(yè)的克隆。該特征與例如其中在具有不同大小的高速緩沖存儲(chǔ)器線(xiàn)的存儲(chǔ)器組件之間進(jìn)行移動(dòng)操作的實(shí)施例相關(guān)。
響應(yīng)虛擬源地址和虛擬目的地地址的接收,存儲(chǔ)器克隆體211實(shí)現(xiàn)(1)把源地址(即地址A)保存在SRC寄存器305中,和(2)把目的地地址(即地址B)保存在DST寄存器307中的功能。存儲(chǔ)器克隆體211還把從處理器接收的CNT值保存在CNT寄存器309中。保存的源地址和目的地地址是處理器在預(yù)先處理中產(chǎn)生的虛擬地址。TLB 319隨后可查尋這些地址,以便確定存儲(chǔ)器中的相應(yīng)真實(shí)地址,隨后使用所述真實(shí)地址進(jìn)行下面說(shuō)明的數(shù)據(jù)克隆操作。
D.令牌操作現(xiàn)在返回方框526,在開(kāi)始存儲(chǔ)器克隆的寫(xiě)入和讀取操作之前,存儲(chǔ)器克隆體發(fā)出一組令牌(或者地址占有權(quán)(addresstenure)),在圖解說(shuō)明的實(shí)施例中,所述一組令牌指的是源(SRC)令牌和目的地(DST)令牌。SRC令牌是在架構(gòu)上的操作,該操作查詢(xún)系統(tǒng),了解任何其它存儲(chǔ)器克隆體目前是否正在利用SRC頁(yè)地址。類(lèi)似地,DST令牌也是架構(gòu)上的操作,該操作查詢(xún)系統(tǒng),了解任何其它存儲(chǔ)器克隆體目前是否正在利用DST頁(yè)地址。
在發(fā)出啟動(dòng)克隆操作的操作之前,由存儲(chǔ)器克隆體在架構(gòu)上發(fā)出SRC和DST令牌。系統(tǒng)中的所有其它存儲(chǔ)器克隆體(或者處理器)監(jiān)聽(tīng)每個(gè)存儲(chǔ)器克隆體的令牌。每個(gè)監(jiān)聽(tīng)器(snooper)對(duì)照當(dāng)前正在該監(jiān)聽(tīng)器使用的任意地址,檢查令牌的源地址和目的地地址,隨后每個(gè)監(jiān)聽(tīng)器發(fā)出向發(fā)布該令牌的存儲(chǔ)器克隆體指出地址是否正被監(jiān)聽(tīng)器之一使用的應(yīng)答。令牌操作確保不會(huì)有兩個(gè)存儲(chǔ)器克隆體試圖對(duì)相同位置進(jìn)行讀取/寫(xiě)入操作。令牌操作還確保存儲(chǔ)器地址空間對(duì)于數(shù)據(jù)克隆操作可用。
令牌的應(yīng)用防止了多個(gè)存儲(chǔ)器克隆體同時(shí)把數(shù)據(jù)寫(xiě)入相同的存儲(chǔ)位置。除了防止不同操作對(duì)存儲(chǔ)位置的多個(gè)同時(shí)更新之外,令牌操作還有助于避免活鎖(livelock),以及確保保持存儲(chǔ)器內(nèi)的一致性(coherency)。本發(fā)明還提供確保處理器不會(huì)活鎖的其它方法,如下所述。
利用令牌地址操作數(shù)使存儲(chǔ)器克隆體能夠在開(kāi)始一系列寫(xiě)操作之前,接收關(guān)于源地址和目的地地址的明確(clear)信號(hào)。一旦存儲(chǔ)器克隆體收到來(lái)自令牌的明確信號(hào),存儲(chǔ)器克隆體能夠通過(guò)發(fā)出裸高速緩沖存儲(chǔ)器線(xiàn)(CL)寫(xiě)(WR)操作,隨后發(fā)出CL讀(RD)操作,開(kāi)始克隆體操作。
隨后根據(jù)接收的源地址和目的地地址產(chǎn)生令牌操作,并發(fā)出令牌操作,以確保關(guān)于訪(fǎng)問(wèn)相應(yīng)存儲(chǔ)器位置的明確響應(yīng)。在架構(gòu)上發(fā)出SRC和DST令牌操作,以確定被請(qǐng)求的存儲(chǔ)位置是否適合于克隆體(即,當(dāng)前未被另一處理器或克隆體使用等),并保留可用的地址,直到克隆操作完成為止。一旦DST令牌和SRC令牌操作返回明確響應(yīng),那么存儲(chǔ)器克隆體開(kāi)始通過(guò)監(jiān)聽(tīng)關(guān)于訪(fǎng)問(wèn)對(duì)應(yīng)地址空間的其它請(qǐng)求,保護(hù)這些地址空間,如下所述。
特別地,在一個(gè)實(shí)施例中,一旦來(lái)自DST令牌的響應(yīng)指示對(duì)于該克隆操作來(lái)說(shuō),目的地地址是明確的(甚至在未收到來(lái)自SRC令牌的明確響應(yīng)的情況下),那么允許開(kāi)始克隆操作。本實(shí)施例使數(shù)據(jù)能夠同時(shí)來(lái)源于相同的源地址,從而允許關(guān)于相同源地址的多個(gè)同時(shí)進(jìn)行的克隆操作。這種實(shí)現(xiàn)的一個(gè)主要原因在于和傳統(tǒng)的移動(dòng)操作不同,存儲(chǔ)器克隆體控制的克隆操作開(kāi)始于對(duì)目的地地址的一系列裸寫(xiě)操作,如下詳細(xì)所述。
現(xiàn)在提供可以以令牌的應(yīng)用為基礎(chǔ)的可能的數(shù)據(jù)提供操作的例子。在本例中,“A”用于代表數(shù)據(jù)源自的源地址?!癇”代表正相對(duì)于其完成存儲(chǔ)器克隆的目的地的地址,“O”代表試圖訪(fǎng)問(wèn)分別對(duì)應(yīng)于地址A或B的訪(fǎng)問(wèn)位置A或B的另一過(guò)程(例如克隆操作)的存儲(chǔ)器地址。當(dāng)數(shù)據(jù)正從A到B時(shí),數(shù)據(jù)還可同時(shí)從A到O。但是,當(dāng)正在進(jìn)行數(shù)據(jù)克隆時(shí),其它任何組合都是不可能的。這些其它組合是A到B和O到B;A到B和B到O;以及A到B和O到A。注意,在每種組合中,S被假定為數(shù)據(jù)的發(fā)源地址。從而,本發(fā)明允許多個(gè)存儲(chǔ)器移動(dòng)源自相同的存儲(chǔ)位置。但是,當(dāng)目的地地址和被監(jiān)聽(tīng)的源地址相同時(shí),監(jiān)聽(tīng)器根據(jù)哪個(gè)令牌首先被收到,向沖突的SRC令牌和DST令牌發(fā)出重試。
E.裸寫(xiě)操作裸寫(xiě)入現(xiàn)在參見(jiàn)圖5B的方框527,本發(fā)明在存儲(chǔ)器克隆體內(nèi)引入新的寫(xiě)操作和相關(guān)的響應(yīng)集合。該操作是不具有任何數(shù)據(jù)占有權(quán)的高速緩沖存儲(chǔ)器線(xiàn)寫(xiě)入操作(也稱(chēng)為裸寫(xiě)入,因?yàn)樵摬僮魇遣话〝?shù)據(jù)占有權(quán)的地址操作)(因此采用術(shù)語(yǔ)“裸”)。裸寫(xiě)入由存儲(chǔ)器克隆體發(fā)出,以便開(kāi)始數(shù)據(jù)克隆操作,并由包含數(shù)據(jù)將被移動(dòng)到的目的地存儲(chǔ)位置的存儲(chǔ)器的存儲(chǔ)器控制器接收。存儲(chǔ)器控制器產(chǎn)生對(duì)裸寫(xiě)入的響應(yīng),所述響應(yīng)被回送給存儲(chǔ)器克隆體。
存儲(chǔ)器克隆體從而發(fā)出不具有任何數(shù)據(jù)的寫(xiě)入命令(也可稱(chēng)為裸寫(xiě)入),所述寫(xiě)入命令被放在架構(gòu)上,并為正被移動(dòng)的數(shù)據(jù)啟動(dòng)目的地緩沖器等的分配。對(duì)應(yīng)于地址B,加上其它31個(gè)連續(xù)的頁(yè)級(jí)地址擴(kuò)展的每一個(gè),存儲(chǔ)器克隆體發(fā)出始于第一目的地地址的32個(gè)裸CL寫(xiě)入命令。圖4B圖解說(shuō)明了裸寫(xiě)入和相關(guān)響應(yīng)等的流水線(xiàn)(pipeline)操作。
存儲(chǔ)器克隆體按照連續(xù)的、流水線(xiàn)方式發(fā)出CL WR。流水線(xiàn)操作過(guò)程提供DMA CL WR(B0-B31),因?yàn)閿?shù)據(jù)被直接寫(xiě)入存儲(chǔ)器中。32個(gè)CL WR操作獨(dú)立并在架構(gòu)上重疊。
對(duì)裸CL寫(xiě)的響應(yīng)圖4B圖解說(shuō)明高速緩沖存儲(chǔ)器線(xiàn)(CL)讀取(RD)和寫(xiě)入(WR)操作,以及在架構(gòu)上傳送的對(duì)應(yīng)頁(yè)的模擬線(xiàn)段(simulatedline segment)(即A0-A31和B0-B31)。每個(gè)操作接收下面說(shuō)明的一致性響應(yīng)(coherency response)。如圖所示,在不傳送任何實(shí)際數(shù)據(jù)的情況下,發(fā)布裸CL寫(xiě)入操作。一旦發(fā)布了裸CL WR,為每個(gè)裸寫(xiě)入操作產(chǎn)生一致性響應(yīng),所述一致性響應(yīng)表示存儲(chǔ)位置B是否可以自由接受正被移動(dòng)的數(shù)據(jù)。根據(jù)特定目的地存儲(chǔ)位置的存儲(chǔ)器控制器是否能夠分配的緩沖器以接收正被移動(dòng)數(shù)據(jù),所述響應(yīng)可以是Null(空)或者Retry(重試)。
在圖解說(shuō)明的實(shí)施例中,緩沖器代表目的地存儲(chǔ)器207的存儲(chǔ)器高速緩存213的高速緩沖存儲(chǔ)器線(xiàn)。在標(biāo)準(zhǔn)存儲(chǔ)器操作過(guò)程中,發(fā)送給存儲(chǔ)器的數(shù)據(jù)首先被保存在存儲(chǔ)器高速緩存213中,稍后該數(shù)據(jù)被轉(zhuǎn)移到物理存儲(chǔ)器207中。從而,存儲(chǔ)器控制器檢查被用于保存特定裸CL WR操作的存儲(chǔ)器地址的數(shù)據(jù)的特定高速緩沖存儲(chǔ)器線(xiàn)。術(shù)語(yǔ)緩沖器有時(shí)可與高速緩沖存儲(chǔ)器線(xiàn)交替使用,不過(guò)也可在不存在可構(gòu)成緩沖器的正式存儲(chǔ)器高速緩存結(jié)構(gòu)的情況下,實(shí)現(xiàn)本發(fā)明。
一致性響應(yīng)被送回存儲(chǔ)器克隆體。該響應(yīng)向存儲(chǔ)器克隆體提供是否可在(經(jīng)歷一致性檢查和源地址可用性)的時(shí)候開(kāi)始數(shù)據(jù)傳送的指示。當(dāng)存儲(chǔ)器控制器能夠?yàn)槁鉉L WR分配緩沖器時(shí),分配所述緩沖器,存儲(chǔ)器控制器等待該CL的數(shù)據(jù)的接收。除了Null/Retry響應(yīng)之外,還向每個(gè)裸CLWR提供目的地ID標(biāo)記,如圖4B中所示。參考關(guān)于圖5D說(shuō)明的CL操作說(shuō)明目的地ID的利用。
F.結(jié)構(gòu)完成狀態(tài)圖5C圖解說(shuō)明依據(jù)其產(chǎn)生結(jié)構(gòu)完成狀態(tài)的過(guò)程,以及處理器對(duì)結(jié)構(gòu)完成狀態(tài)的響應(yīng)。所述過(guò)程開(kāi)始于方框551,存儲(chǔ)器克隆體監(jiān)視關(guān)于發(fā)出的裸CL WR操作的Null響應(yīng),如方框553所示。在方框555確定發(fā)出的所有裸CL WR是否已從存儲(chǔ)器控制器收到Null響應(yīng)。當(dāng)存儲(chǔ)器控制器已向所有的裸CL WR操作發(fā)出NULL響應(yīng)時(shí),認(rèn)為整個(gè)移動(dòng)“結(jié)構(gòu)完成”,如方框557所示,存儲(chǔ)器克隆體用信號(hào)通知請(qǐng)求處理器,數(shù)據(jù)克隆操作已完成,即使還沒(méi)有從存儲(chǔ)器子系統(tǒng)讀取要移動(dòng)的數(shù)據(jù)。所述過(guò)程隨后終止于方框559。處理器重新開(kāi)始執(zhí)行后續(xù)指令(例如例證指令序列中,跟隨SYNC的ADD指令)。
由于不從處理器或存儲(chǔ)器克隆體接收數(shù)據(jù),因此使結(jié)構(gòu)完成狀態(tài)的實(shí)現(xiàn)成為可能。即,要移動(dòng)的數(shù)據(jù)不必被傳送給處理器芯片或者存儲(chǔ)器克隆體,而是直接從存儲(chǔ)位置A轉(zhuǎn)移到存儲(chǔ)位置B。一旦系統(tǒng)不再向處理器提供“舊的”目的地?cái)?shù)據(jù),處理器接收指示克隆操作已結(jié)構(gòu)完成的指示。
從而,從而處理器的觀(guān)點(diǎn)來(lái)看,即使在物理移動(dòng)任意數(shù)據(jù)行之前,克隆操作可能看起來(lái)也已完成(取決于根據(jù)可用帶寬、數(shù)據(jù)段的大小、重疊移動(dòng)的數(shù)目、以及來(lái)回穿過(guò)接線(xiàn)器的其它過(guò)程等,能夠多快完成物理移動(dòng))。當(dāng)獲得結(jié)構(gòu)完成狀態(tài)時(shí),所有的目的地地址緩沖器已被分配,以便接收數(shù)據(jù),存儲(chǔ)器克隆體已發(fā)出觸發(fā)把數(shù)據(jù)移動(dòng)到目的地地址的相應(yīng)讀取操作。從系統(tǒng)同步的觀(guān)點(diǎn)來(lái)看,雖然不是所有數(shù)據(jù)都已開(kāi)始移動(dòng)或者已完成移動(dòng),不過(guò)仍然通知處理器克隆操作已完成,處理器假定處理器發(fā)出的SYNC操作已收到ACK響應(yīng),所述ACK響應(yīng)表示克隆操作的完成。
實(shí)現(xiàn)結(jié)構(gòu)完成狀態(tài)的一個(gè)優(yōu)點(diǎn)在于使處理器免受存儲(chǔ)器等待時(shí)間和系統(tǒng)布局的影響,因?yàn)樵趯?shí)際數(shù)據(jù)克隆操作完成之前,處理器不必等待。從而,在數(shù)據(jù)克隆指令被發(fā)送給存儲(chǔ)器克隆體之后,分配給數(shù)據(jù)克隆操作并且在收到ACK響應(yīng)之前防止其處理后續(xù)指令的處理器資源被快速釋放,以便以極小的延遲繼續(xù)處理其它操作。
基于寄存器的結(jié)構(gòu)完成狀態(tài)跟蹤在一個(gè)實(shí)施例中,實(shí)現(xiàn)了基于硬件或軟件寄存器的接收的Null響應(yīng)的跟蹤。寄存器設(shè)置在存儲(chǔ)器克隆體211內(nèi),如圖2中所示。例如在CNT值為32的情況下,存儲(chǔ)器克隆體211配置一個(gè)32位軟件寄存器313,以便跟蹤32個(gè)裸CL寫(xiě)入操作中的哪一個(gè)收到Null響應(yīng)。圖7B圖解說(shuō)明了用于向存儲(chǔ)器克隆體提供克隆操作至少部分完成或者結(jié)構(gòu)完成的指示的32位寄存器313。該寄存器用作受存儲(chǔ)器克隆體監(jiān)視的進(jìn)度條。代替實(shí)現(xiàn)SYNC操作,存儲(chǔ)器克隆體利用寄存器313監(jiān)視/記錄已收到哪些Null響應(yīng)。一旦收到了對(duì)應(yīng)編號(hào)的裸CL寫(xiě)入操作的Null響應(yīng),那么每個(gè)二進(jìn)制位被置為“1”。根據(jù)圖解說(shuō)明的實(shí)施例,由置于寄存器313的對(duì)應(yīng)二進(jìn)制位位置中的“1”所示,與二進(jìn)制位1、2和4相關(guān)的目的地存儲(chǔ)器地址的裸CL寫(xiě)入操作已完成。
在圖解說(shuō)明的實(shí)施例中,通過(guò)掃描寄存器的二進(jìn)制位,了解所有二進(jìn)制位是否被置為1(或者是否有任何二進(jìn)制位未被置為1),完成結(jié)構(gòu)完成狀態(tài)的確定。另一種實(shí)現(xiàn)涉及對(duì)寄存器的各個(gè)二進(jìn)制位中持有的數(shù)值進(jìn)行“或”運(yùn)算。本實(shí)施例中,在對(duì)無(wú)保持寫(xiě)操作的所有Null響應(yīng)進(jìn)行“或”運(yùn)算之后,存儲(chǔ)器克隆體用信號(hào)把完成狀態(tài)通知處理器。當(dāng)所有二進(jìn)制位數(shù)值為1時(shí),結(jié)構(gòu)完成狀態(tài)被確認(rèn),存儲(chǔ)器克隆體向請(qǐng)求處理器發(fā)送指示。隨后,整個(gè)寄存器313被重置為0。
在圖解說(shuō)明的實(shí)施例中,一個(gè)N位寄存器被用于跟蹤哪個(gè)保持寫(xiě)操作收到Null響應(yīng),這里N是大到足以覆蓋為克隆操作發(fā)出的最大數(shù)目的寫(xiě)操作的設(shè)計(jì)參數(shù)。但是,在一些情況下,處理器只對(duì)了解特定高速緩沖存儲(chǔ)器線(xiàn)是否處于結(jié)構(gòu)完成狀態(tài)感興趣。對(duì)于這些情況,只讀取或檢查與關(guān)心的那些高速緩沖存儲(chǔ)器線(xiàn)相關(guān)的特定寄存器位置,一旦這些特定的高速緩沖存儲(chǔ)器線(xiàn)處于結(jié)構(gòu)完成狀態(tài),那么存儲(chǔ)器克隆體用信號(hào)通知處理器重新開(kāi)始操作。
G.借助目的地ID標(biāo)記的直接存儲(chǔ)器-存儲(chǔ)器移動(dòng)讀取請(qǐng)求現(xiàn)在參見(jiàn)圖4B,并參考圖5D的流程圖,舉例說(shuō)明在裸寫(xiě)入操作之后發(fā)出讀取操作的過(guò)程。該過(guò)程始于方框571,存儲(chǔ)器克隆體監(jiān)視對(duì)裸CL WR的NULL響應(yīng),如方框573所示。在方框575確定是否收到Null響應(yīng)。存儲(chǔ)器克隆體重試所有未收到Null響應(yīng)的裸CLWR,直到收到關(guān)于每個(gè)裸CL WR的Null響應(yīng)為止。如方框577所示,當(dāng)在存儲(chǔ)器克隆體收到Null響應(yīng)時(shí),立即在架構(gòu)上向當(dāng)前要移動(dòng)的數(shù)據(jù)段駐留于其中的源存儲(chǔ)位置發(fā)送相應(yīng)的(地址)CL讀取操作。例如,關(guān)于裸CL WR(B0)收到的Null響應(yīng)導(dǎo)致在架構(gòu)上放置CL RD(A0),依此類(lèi)推,如圖4B中所示。源存儲(chǔ)位置的存儲(chǔ)器控制器檢查源存儲(chǔ)器內(nèi)的特定地址是否可用于CL讀取操作正在請(qǐng)求的源數(shù)據(jù)(即另一過(guò)程目前是否沒(méi)有使用該地址位置或數(shù)據(jù))。該檢查導(dǎo)致一個(gè)Null響應(yīng)(或Retry響應(yīng))。
在一個(gè)實(shí)施例中,當(dāng)正被克隆的數(shù)據(jù)的源地址不可用于CL RD操作時(shí),使該CL RD操作排隊(duì)等待,直到源地址變成可用時(shí)為止。因此,不需要重試。但是,對(duì)于提供重試而不提供CL RD操作的排隊(duì)的實(shí)施例來(lái)說(shuō),用信號(hào)通知存儲(chǔ)器克隆體重試具體的CL RD操作。
架構(gòu)上的目的地ID標(biāo)記如圖4B中所示,和對(duì)裸CL WR的Null響應(yīng)一起,目的地ID標(biāo)記由目的地存儲(chǔ)器的存儲(chǔ)器控制器發(fā)出。產(chǎn)生的目的地ID標(biāo)記隨后可被附到或者插入CL RD操作內(nèi)(而不是處理器的ID,或者除了處理器的ID之外)。根據(jù)圖解說(shuō)明的實(shí)施例,借助相應(yīng)的CL RD請(qǐng)求以把目的地ID標(biāo)記放在架構(gòu)上。目的地ID標(biāo)記是提供給CL RD請(qǐng)求以識(shí)別讀取操作所請(qǐng)求的數(shù)據(jù)將被返回的位置的路由標(biāo)記。具體地說(shuō),目的地ID標(biāo)記識(shí)別將接收被相關(guān)CL RD操作移動(dòng)的數(shù)據(jù)的存儲(chǔ)緩沖器(分配給裸CL WR操作)。
圖7A圖解說(shuō)明了在架構(gòu)上發(fā)送的讀寫(xiě)地址操作705以及目的地ID標(biāo)記701(包括存儲(chǔ)器克隆體標(biāo)記703)。這兩者被用于區(qū)分在架構(gòu)上重疊的多個(gè)克隆操作。如圖7A中所示,地址操作705包括32位源(SRC)或目的地(DST)頁(yè)級(jí)地址和附加的12個(gè)保留位,所述12個(gè)保留位包括被存儲(chǔ)器克隆體211的控制邏輯單元303用于提供頁(yè)級(jí)尋址的5位。
與地址操作705相關(guān)的是目的地ID標(biāo)記701,目的地ID標(biāo)記701包括發(fā)出該操作的存儲(chǔ)器克隆體的ID,操作的類(lèi)型(即WR、RE、令牌(SRC)或令牌(DST)),計(jì)數(shù)值(CNT)和發(fā)送操作的響應(yīng)/數(shù)據(jù)的目的地單元的ID。如圖所示,最初利用ID字段中的存儲(chǔ)器克隆體地址,發(fā)出寫(xiě)操作,如圖7A的WR標(biāo)記中所示。在RD操作中,用實(shí)際目的地存儲(chǔ)器地址替換SRC地址,如圖7A的RD標(biāo)記中所示。
直接源-目的地移動(dòng)為了實(shí)現(xiàn)直接存儲(chǔ)器-存儲(chǔ)器數(shù)據(jù)移動(dòng),而不是經(jīng)過(guò)請(qǐng)求處理器(或者存儲(chǔ)器克隆體)的移動(dòng),存儲(chǔ)器克隆體用目的地存儲(chǔ)器位置(B)的真實(shí)存儲(chǔ)器地址(即目的地ID)替換CL RD操作的標(biāo)記中的物理處理器ID。如下所述,這使數(shù)據(jù)能夠直接被發(fā)送給存儲(chǔ)器位置B(而不必經(jīng)過(guò)存儲(chǔ)器克隆體)。
在目前的系統(tǒng)中,發(fā)出讀取請(qǐng)求的處理器或處理器芯片的ID包含在讀取請(qǐng)求內(nèi),或者作為標(biāo)記被提供給讀取請(qǐng)求,以便識(shí)別數(shù)據(jù)將被返回給的組件。即,該ID指向讀操作的源,而不是數(shù)據(jù)將被移往的最終目的地。
存儲(chǔ)器控制器自動(dòng)把數(shù)據(jù)發(fā)送給在目的地標(biāo)記中規(guī)定的位置。從而,對(duì)目前的系統(tǒng)來(lái)說(shuō),數(shù)據(jù)被發(fā)送給處理器。但是,根據(jù)這里描述的實(shí)施例,由于路由地址是最終(存儲(chǔ)器)目的地的路由地址,因此源存儲(chǔ)器控制器必須把數(shù)據(jù)直接發(fā)送給目的地存儲(chǔ)器。數(shù)據(jù)通過(guò)接線(xiàn)器,從源存儲(chǔ)器被直接轉(zhuǎn)移到目的地存儲(chǔ)器。決不會(huì)通過(guò)處理器或存儲(chǔ)器克隆體發(fā)送數(shù)據(jù),消除了從處理器的數(shù)據(jù)路由操作。特別地,在其中在相同物理存儲(chǔ)塊內(nèi)移動(dòng)數(shù)據(jù)的實(shí)施例中,可在不把數(shù)據(jù)外送給外部接線(xiàn)器構(gòu)架的情況下,完成數(shù)據(jù)克隆。
跟蹤數(shù)據(jù)克隆操作的完成在一個(gè)實(shí)施例中,為使存儲(chǔ)器克隆體了解克隆操作何時(shí)完成,提供一個(gè)軟件激活的克隆完成寄存器,該寄存器跟蹤哪些高速緩沖存儲(chǔ)器線(xiàn)(或者多少數(shù)據(jù)部分)已完成克隆操作。由于從發(fā)出地址到數(shù)據(jù)產(chǎn)生其通過(guò)接線(xiàn)器到達(dá)目的地的路線(xiàn)的中間時(shí)間的緣故,裝入完成寄存器被用作已到達(dá)存儲(chǔ)位置B0…Bn的數(shù)據(jù)部分A0…An的數(shù)目的計(jì)數(shù)器。在一個(gè)實(shí)施例中,存儲(chǔ)器克隆體根據(jù)所有的讀取地址操作何時(shí)收到指示所有數(shù)據(jù)正在架構(gòu)上向目的地存儲(chǔ)位置轉(zhuǎn)移的Null響應(yīng),跟蹤實(shí)際移動(dòng)的完成。
在利用軟件寄存器的備選實(shí)施例中,寄存器包括數(shù)目和CNT值相同的二進(jìn)制位。從而,每一位對(duì)應(yīng)于正被移動(dòng)的數(shù)據(jù)頁(yè)的具體段(或者CL區(qū)組(granule))??寺⊥瓿杉拇嫫骺梢允谴鎯?chǔ)器克隆體的組成部分,如圖3中所示,克隆完成寄存器317被用于跟蹤克隆操作的進(jìn)展,直到克隆操作的所有數(shù)據(jù)已被克隆到目的地存儲(chǔ)位置為止。
H.一致性協(xié)議(coherency protocol)和操作完成數(shù)據(jù)克隆操作時(shí)的一個(gè)需要考慮的重要因素是數(shù)據(jù)必須來(lái)源于包含該數(shù)據(jù)的最一致副本的存儲(chǔ)位置或高速緩沖存儲(chǔ)器。從而,雖然本發(fā)明被描述成數(shù)據(jù)直接來(lái)源于存儲(chǔ)器,不過(guò)本發(fā)明的實(shí)際應(yīng)用允許數(shù)據(jù)來(lái)源于高速緩沖存儲(chǔ)器/存儲(chǔ)器子系統(tǒng)的任意一致位置。圖6B圖解說(shuō)明了存儲(chǔ)器子系統(tǒng)的一種可能結(jié)構(gòu)。
在鏈接系統(tǒng)600的組件的背景下圖解說(shuō)明了接線(xiàn)器603,系統(tǒng)600的組件包括處理器611、613和存儲(chǔ)器子系統(tǒng)的各個(gè)組件。如圖所示,存儲(chǔ)器子系統(tǒng)指的是分布式主存儲(chǔ)器605、607,處理器(L1)高速緩沖存儲(chǔ)器615、617,低級(jí)(L2-Ln)高速緩沖存儲(chǔ)器619、621(也可以是干涉(intervening)高速緩沖存儲(chǔ)器),以及任意類(lèi)似來(lái)源。這些存儲(chǔ)器組件中的任何一個(gè)都可包含數(shù)據(jù)將被移動(dòng)時(shí),數(shù)據(jù)的最一致副本。特別地,如圖2中所示及上面所述,存儲(chǔ)器控制器608包括克隆數(shù)據(jù)將被移動(dòng)到其中的存儲(chǔ)器高速緩存213(這里也稱(chēng)為緩沖器)。由于發(fā)送給存儲(chǔ)器的數(shù)據(jù)首先被保存在存儲(chǔ)器高速緩存213中,隨后被移動(dòng)到實(shí)際的物理存儲(chǔ)器607,因此存儲(chǔ)器高速緩存213常包含目的地地址的數(shù)據(jù)的最一致副本(即呈M狀態(tài)的數(shù)據(jù))。
在一些高級(jí)系統(tǒng)中,在通過(guò)外部(架構(gòu))總線(xiàn)663連接的不同系統(tǒng)之間共享數(shù)據(jù)。如同這里所示那樣,外部存儲(chǔ)器子系統(tǒng)661包含與存儲(chǔ)器地址C相關(guān)的存儲(chǔ)位置。該存儲(chǔ)位置內(nèi)的數(shù)據(jù)可代表數(shù)據(jù)克隆操作的源數(shù)據(jù)的最一致副本。與外部存儲(chǔ)器子系統(tǒng)661的連接可通過(guò)局域網(wǎng)(LAN)或者甚至通過(guò)廣域網(wǎng)(WAN)。
可采用常規(guī)的一致性協(xié)議(例如,修改(M)、獨(dú)占(E)、共享(S)、無(wú)效(I))或者關(guān)于一致數(shù)據(jù)的來(lái)源的MESI協(xié)議;但是,這里利用的一致性協(xié)議擴(kuò)展了常規(guī)的協(xié)議,以便允許存儲(chǔ)器克隆體獲得高速緩沖存儲(chǔ)器線(xiàn)的所有權(quán),并完成裸CL WR操作。
低級(jí)高速緩存均具有相應(yīng)的高速緩存控制器620、622。當(dāng)數(shù)據(jù)直接來(lái)源于除分布式主存儲(chǔ)器605、607之外的位置,例如低級(jí)高速緩存619時(shí),該高速緩存的相關(guān)控制器(高速緩存控制器620)按照和存儲(chǔ)器控制器606、608相同的方式控制從該高速緩存的數(shù)據(jù)轉(zhuǎn)移。
存儲(chǔ)器高速緩存控制器對(duì)裸寫(xiě)操作的響應(yīng)就除了存儲(chǔ)器之外,還包括高級(jí)和低級(jí)高速緩沖存儲(chǔ)器的存儲(chǔ)器子系統(tǒng)來(lái)說(shuō),可在高速緩沖存儲(chǔ)器之間共享源地址和目的地地址的一致數(shù)據(jù),并且任一地址的一致數(shù)據(jù)可存在于高速緩沖存儲(chǔ)器之一中,而不是存在于存儲(chǔ)器中。即,存儲(chǔ)器子系統(tǒng)起完全相關(guān)存儲(chǔ)器子系統(tǒng)的作用。對(duì)源地址來(lái)說(shuō),數(shù)據(jù)總是來(lái)源于最相關(guān)的存儲(chǔ)位置。但是,對(duì)于目的地地址來(lái)說(shuō),一致操作根據(jù)標(biāo)準(zhǔn)MESI協(xié)議變化,如下所述。
當(dāng)目的地存儲(chǔ)位置的存儲(chǔ)器控制器收到無(wú)保持寫(xiě)操作時(shí),存儲(chǔ)器控制器以三種主要的監(jiān)聽(tīng)響應(yīng)之一,應(yīng)答各個(gè)裸寫(xiě)操作。不同的裸寫(xiě)操作的單各響應(yīng)被轉(zhuǎn)發(fā)給存儲(chǔ)器克隆體。這三種主要的監(jiān)聽(tīng)響應(yīng)包括1.Retry響應(yīng),該響應(yīng)表示存儲(chǔ)器高速緩存具有呈M狀態(tài)的數(shù)據(jù),但是不能轉(zhuǎn)到I狀態(tài)和/或存儲(chǔ)器控制器目前不能接受WR請(qǐng)求/向WR請(qǐng)求分配緩沖器;2.Null響應(yīng),該響應(yīng)表示存儲(chǔ)器控制器可接受WR請(qǐng)求,并且相應(yīng)高速緩沖存儲(chǔ)器線(xiàn)的一致?tīng)顟B(tài)立即轉(zhuǎn)為I狀態(tài);和3.Ack_Resend響應(yīng),該響應(yīng)表示存儲(chǔ)器高速緩存內(nèi)CL的一致?tīng)顟B(tài)已從M狀態(tài)轉(zhuǎn)變成I狀態(tài),但是存儲(chǔ)器控制器仍然不能接受WR請(qǐng)求(即,存儲(chǔ)器控制器仍然不能分配緩沖器接收正被移動(dòng)的數(shù)據(jù))。
后一響應(yīng)(Ack_Resend)是使存儲(chǔ)器克隆體開(kāi)始保護(hù)CL數(shù)據(jù)(即,向請(qǐng)求訪(fǎng)問(wèn)高速緩沖存儲(chǔ)器線(xiàn)的其它組件發(fā)送重試)的組合響應(yīng)。修改的數(shù)據(jù)從高速緩沖存儲(chǔ)器線(xiàn)丟失,因?yàn)樵摳咚倬彌_存儲(chǔ)器線(xiàn)被置為I狀態(tài),如下所述。存儲(chǔ)器控制器稍后分配存儲(chǔ)器高速緩存內(nèi)的地址緩沖器,所述地址緩沖器被保留,直到恰當(dāng)?shù)淖x取操作完成為止。
高速緩沖存儲(chǔ)器線(xiàn)無(wú)效和線(xiàn)的存儲(chǔ)器克隆體操作根據(jù)例證的實(shí)施例,裸寫(xiě)操作使完全相關(guān)的存儲(chǔ)器子系統(tǒng)中的所有相應(yīng)高速緩沖存儲(chǔ)器線(xiàn)無(wú)效。具體地說(shuō),每當(dāng)存儲(chǔ)器克隆體發(fā)出針對(duì)存儲(chǔ)器高速緩存的修改高速緩沖存儲(chǔ)器線(xiàn)(即該線(xiàn)處于MESI或者其它類(lèi)似一致性協(xié)議的M狀態(tài))的裸WR時(shí),存儲(chǔ)器控制器響應(yīng)對(duì)裸寫(xiě)操作的監(jiān)聽(tīng),把高速緩沖存儲(chǔ)器線(xiàn)的相關(guān)狀態(tài)更新成無(wú)效(I)狀態(tài)。
另外,裸WR不會(huì)導(dǎo)致存儲(chǔ)器高速緩存的“重試/推送”操作。從而,和標(biāo)準(zhǔn)的一致操作不同,當(dāng)在存儲(chǔ)器高速緩存收到裸寫(xiě)操作時(shí),修改后的數(shù)據(jù)不會(huì)從存儲(chǔ)器高速緩存推送到存儲(chǔ)器。裸寫(xiě)操作立即使當(dāng)前的修改數(shù)據(jù)無(wú)效。在實(shí)際移動(dòng)操作之后,克隆數(shù)據(jù)的新的高速緩沖存儲(chǔ)器線(xiàn)被賦予M一致?tīng)顟B(tài),隨后被用于按照標(biāo)準(zhǔn)一致操作,響應(yīng)關(guān)于位于相應(yīng)地址空間的數(shù)據(jù)的后續(xù)請(qǐng)求,提供數(shù)據(jù)源。
當(dāng)使高速緩沖存儲(chǔ)器線(xiàn)無(wú)效時(shí),存儲(chǔ)器克隆體啟動(dòng)高速緩沖存儲(chǔ)器線(xiàn)的保護(hù),并起修改后的監(jiān)聽(tīng)器的作用。即,存儲(chǔ)器克隆體負(fù)責(zé)完成高速緩沖存儲(chǔ)器線(xiàn)的所有一致保護(hù),好像高速緩沖存儲(chǔ)器線(xiàn)處于M狀態(tài)一樣。例如,如圖5A的方框511所示,如果在實(shí)際完成克隆操作之前,另一過(guò)程需要該數(shù)據(jù)(例如保存在A(yíng)0的數(shù)據(jù)的讀取被監(jiān)聽(tīng)),那么存儲(chǔ)器控制器或者重試或者延遲發(fā)送數(shù)據(jù),直到實(shí)際完成數(shù)據(jù)的物理移動(dòng)為止。從而,來(lái)自其它組件的關(guān)于該高速緩沖存儲(chǔ)器線(xiàn)的監(jiān)聽(tīng)請(qǐng)求被重試,直到數(shù)據(jù)已被克隆,并且高速緩沖存儲(chǔ)器線(xiàn)狀態(tài)變回M狀態(tài)為止。
圖8B圖解說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的關(guān)于存儲(chǔ)器克隆操作的過(guò)程,依據(jù)該過(guò)程完成一致操作。該過(guò)程始于方框851,之后如方框853所示,存儲(chǔ)器克隆體發(fā)出裸CL WR。在圖解說(shuō)明的過(guò)程中,所有監(jiān)聽(tīng)器監(jiān)聽(tīng)該裸CL WR,如方框855所示。具有最高一致?tīng)顟B(tài)的監(jiān)聽(tīng)器(這種情況下為存儲(chǔ)器高速緩存)隨后把高速緩沖存儲(chǔ)器線(xiàn)狀態(tài)從修改(M)變成無(wú)效(I),如方框857所示。
特別地,和常規(guī)的一致性協(xié)議操作不同,在使數(shù)據(jù)無(wú)效之前,監(jiān)聽(tīng)器不啟動(dòng)向存儲(chǔ)器的數(shù)據(jù)推送。相關(guān)的存儲(chǔ)器控制器用信號(hào)通知存儲(chǔ)器克隆體,該存儲(chǔ)器克隆體需要向高速緩沖存儲(chǔ)器線(xiàn)提供保護(hù)。因此,當(dāng)存儲(chǔ)器克隆體被賦予保護(hù)高速緩沖存儲(chǔ)器線(xiàn)的任務(wù)時(shí),該高速緩沖存儲(chǔ)器線(xiàn)立即被標(biāo)記為I狀態(tài)。在高速緩沖存儲(chǔ)器線(xiàn)處于I狀態(tài)的情況下,存儲(chǔ)器克隆體從而接管使該高速緩沖存儲(chǔ)器免受監(jiān)聽(tīng)的全部責(zé)任。
返回圖8B,隨后在方框859(由目的地存儲(chǔ)器控制器)確定高速緩沖存儲(chǔ)器線(xiàn)用緩沖器是否可用。如果緩沖器不可用,那么發(fā)出Retry監(jiān)聽(tīng)響應(yīng),如方框861所示。存儲(chǔ)器克隆體然后重新發(fā)送CLWR,如方框863所示。但是,如果緩沖器可用,那么存儲(chǔ)器控制器把該緩沖器分配給監(jiān)聽(tīng)的裸CL WR,如方框865所示。
隨后,開(kāi)始數(shù)據(jù)克隆過(guò)程,如方框867所示。當(dāng)數(shù)據(jù)克隆過(guò)程完成時(shí)(如方框869所示),持有克隆數(shù)據(jù)的高速緩沖存儲(chǔ)器線(xiàn)的一致?tīng)顟B(tài)被改變成M狀態(tài),如方框871所示。隨后,終止數(shù)據(jù)克隆過(guò)程,如方框873所示。在一種實(shí)現(xiàn)中,目的地存儲(chǔ)器控制器(MC)可能不具備可用于裸CL WR的地址緩沖器,并發(fā)出Ack_Resend響應(yīng),所述Ack_Resend響應(yīng)導(dǎo)致稍后重發(fā)裸CL WR,直到MC可接受裸CL WR,并分配相應(yīng)的緩沖器為止。
活鎖避免提供一種避免活鎖的新方法。該方法包括當(dāng)裸WR在飛行過(guò)程中(in flight)時(shí),使修改的高速緩沖存儲(chǔ)器線(xiàn)無(wú)效,以避免活鎖。
圖8A圖解說(shuō)明了根據(jù)本發(fā)明的處理當(dāng)正在完成裸寫(xiě)入,以及隨后的數(shù)據(jù)物理移動(dòng)時(shí)的鎖定爭(zhēng)用的過(guò)程。該過(guò)程開(kāi)始于方框821,隨后前進(jìn)到方框823,方框823表示處理器P1請(qǐng)求從位置A到B的高速緩沖存儲(chǔ)器線(xiàn)移動(dòng)。在裸WR和自數(shù)據(jù)源的數(shù)據(jù)的物理移動(dòng)之前,P1和/或P1啟動(dòng)的過(guò)程獲得關(guān)于該存儲(chǔ)位置的鎖定。處理器P2隨后請(qǐng)求訪(fǎng)問(wèn)位于目的地或源地址的高速緩沖存儲(chǔ)器線(xiàn),如方框825所示。
在方框827,(目的地存儲(chǔ)器控制器)確定實(shí)際移動(dòng)是否已完成(即P1可釋放鎖定)。如果實(shí)際移動(dòng)已完成,那么向P2提供對(duì)該存儲(chǔ)位置的訪(fǎng)問(wèn),P2隨后可獲得鎖定,如方框831所示,隨后在方框833終止該過(guò)程。但是,如果移動(dòng)仍然正在進(jìn)行中,那么根據(jù)正實(shí)現(xiàn)的實(shí)施例,提供兩種路徑之一。在第一實(shí)施例中,如方框829所示,向P2返回Retry響應(yīng),直到P1放棄對(duì)該高速緩沖存儲(chǔ)器線(xiàn)的鎖定為止。
在另一實(shí)施例中,如果實(shí)際移動(dòng)還沒(méi)有開(kāi)始,并且請(qǐng)求與從位置A讀取數(shù)據(jù)有關(guān),那么從位置A提供數(shù)據(jù)。這使多個(gè)過(guò)程能夠從相同的源位置獲得數(shù)據(jù),而不是發(fā)出Retry。但是,當(dāng)數(shù)據(jù)正被移動(dòng)時(shí),在數(shù)據(jù)已完成移動(dòng)之前,總是重試對(duì)目的地地址的訪(fǎng)問(wèn)請(qǐng)求。
I.多個(gè)同時(shí)進(jìn)行的數(shù)據(jù)移動(dòng)和標(biāo)記標(biāo)識(shí)符多個(gè)存儲(chǔ)器克隆體和重疊的克隆操作完成裸寫(xiě)操作并向CL RD請(qǐng)求分配標(biāo)記的方法的一個(gè)關(guān)鍵益處在于借助大量的存儲(chǔ)器克隆體,可在系統(tǒng)上實(shí)際多個(gè)克隆操作。本發(fā)明從而允許多個(gè)獨(dú)立的存儲(chǔ)器克隆體,每個(gè)存儲(chǔ)器克隆體可進(jìn)行與架構(gòu)上的另一存儲(chǔ)器克隆體的另一數(shù)據(jù)克隆操作重疊的數(shù)據(jù)克隆操作。特別地,在請(qǐng)求鎖定(或者鎖定獲得)情況下,存儲(chǔ)器克隆體的操作使多個(gè)存儲(chǔ)器克隆體能夠發(fā)布(issue)同時(shí)進(jìn)行的克隆操作。
在舉例說(shuō)明的實(shí)施例中,每個(gè)芯片只提供一個(gè)存儲(chǔ)器克隆體,導(dǎo)致每次從每個(gè)芯片只完成一個(gè)克隆操作。在多個(gè)處理器芯片共用單一存儲(chǔ)器克隆體的另一實(shí)施例中,存儲(chǔ)器克隆體包括確定在指定時(shí)間,哪個(gè)處理器獲得訪(fǎng)問(wèn)的仲裁邏輯單元。仲裁邏輯單元可由FIFO隊(duì)列代替,F(xiàn)IFO隊(duì)列能夠按照從處理器接收的順序,保持多個(gè)存儲(chǔ)器移動(dòng)操作的完成。其它實(shí)施例可提供每個(gè)處理器芯片粒度(granularity)增大的存儲(chǔ)器克隆體,實(shí)現(xiàn)每個(gè)芯片的多個(gè)存儲(chǔ)器克隆操作,每個(gè)克隆操作由獨(dú)立的存儲(chǔ)器克隆體控制。
本發(fā)明還允許多個(gè)存儲(chǔ)器克隆體同時(shí)工作。存儲(chǔ)器可通過(guò)令牌操作相互通信,并且每個(gè)存儲(chǔ)器克隆體把其克隆操作的源地址和目的地地址通知其它存儲(chǔ)器克隆體。如果第一存儲(chǔ)器克隆體的目的地地址和已進(jìn)行數(shù)據(jù)克隆操作的第二存儲(chǔ)器克隆體的源地址相同,那么第一存儲(chǔ)器克隆體延遲克隆操作,直到第二存儲(chǔ)器克隆體完成其實(shí)際數(shù)據(jù)移動(dòng)為止。
借助目的地ID和附加標(biāo)記,識(shí)別多個(gè)克隆操作除了實(shí)現(xiàn)直接源-目的地克隆操作之外,當(dāng)來(lái)自多個(gè)克隆操作的數(shù)據(jù)重疊或者正在同時(shí)完成時(shí),目的地ID標(biāo)記還被用于唯一地識(shí)別架構(gòu)上的數(shù)據(jù)占有權(quán)。由于每次只有來(lái)自單一克隆操作的數(shù)據(jù)可被發(fā)送給任意目的地存儲(chǔ)器地址,因此每個(gè)目的地地址必須是唯一的。
在另一實(shí)現(xiàn)中,一組附加的二進(jìn)制位被附到圖7A的數(shù)據(jù)標(biāo)記701的數(shù)據(jù)路由部分。這些二進(jìn)制位(或者克隆ID標(biāo)記)703唯一地識(shí)別來(lái)自特定克隆操作的數(shù)據(jù)和/或識(shí)別與克隆操作相關(guān)的存儲(chǔ)器克隆體。因此,附加二進(jìn)制位的實(shí)際數(shù)目以系統(tǒng)設(shè)計(jì)員所希望的具體實(shí)現(xiàn)為基礎(chǔ)。例如,在只具有兩個(gè)存儲(chǔ)器克隆體的最簡(jiǎn)單實(shí)現(xiàn)中,單個(gè)二進(jìn)制位可被用于區(qū)分第一克隆操作的數(shù)據(jù)(與第一存儲(chǔ)器克隆體相關(guān))和第二克隆操作的數(shù)據(jù)(與第二存儲(chǔ)器克隆體相關(guān))。
顯然,當(dāng)只把少量的二進(jìn)制位用于識(shí)別不同的數(shù)據(jù)路由操作時(shí),如果使用的每個(gè)標(biāo)記唯一,那么克隆ID標(biāo)記703嚴(yán)格限制了同時(shí)進(jìn)行的克隆操作的數(shù)目。
目的地ID和克隆ID標(biāo)記的組合唯一地識(shí)別不同克隆操作/數(shù)據(jù)的另一方式是利用目的地ID和克隆ID標(biāo)記的組合。就這種實(shí)現(xiàn)來(lái)說(shuō),由于特定克隆操作的目的地ID不可能和另一未決克隆操作的目的地ID相同(歸因于下面說(shuō)明的一致性和鎖定爭(zhēng)用問(wèn)題),克隆ID標(biāo)記的大小可以相對(duì)較小。
如圖7A中圖解所示,標(biāo)記與各數(shù)據(jù)克隆操作相關(guān)(與之鏈接、附加在其上,或者以其它方式與數(shù)據(jù)克隆操作相關(guān))。從而,如果第一數(shù)據(jù)克隆操作涉及從一頁(yè)移動(dòng)12個(gè)獨(dú)立的高速緩沖存儲(chǔ)器線(xiàn),那么這12個(gè)數(shù)據(jù)克隆操作中的每一個(gè)被賦予相同的標(biāo)記。同時(shí)進(jìn)行的涉及20段數(shù)據(jù)的移動(dòng)的第二克隆操作例如也使每個(gè)數(shù)據(jù)移動(dòng)操作由第二標(biāo)記標(biāo)記,所述第二標(biāo)記不同于第一克隆操作的標(biāo)記,依次類(lèi)推。
可重新使用的標(biāo)記標(biāo)識(shí)符存儲(chǔ)器克隆體使用的各高速緩沖存儲(chǔ)器線(xiàn)由地址字段內(nèi)的12個(gè)保留位的頭5位確定。由于存在12個(gè)保留位,因此或多或少的地址都是可能的。在一個(gè)實(shí)施例中,其它保留位都被用于提供標(biāo)記。從而,雖然參考獨(dú)立的克隆標(biāo)記標(biāo)識(shí)符描述了本發(fā)明,不過(guò)在高位二進(jìn)制位被分配給目的地ID的情況下,地址字段的低位二進(jìn)制位可容易地提供所述特征。
在一個(gè)實(shí)施例中,為了簡(jiǎn)化大量的存儲(chǔ)器克隆操作(例如在大規(guī)模多處理器系統(tǒng)中),一旦不再在架構(gòu)上發(fā)送先前的數(shù)據(jù),那么就重新使用克隆ID標(biāo)記703。在一個(gè)實(shí)施例中,通過(guò)使標(biāo)記足夠大,以致它包含數(shù)據(jù)移動(dòng)可能采取的最大間隔,實(shí)現(xiàn)標(biāo)記重新使用。
在舉例說(shuō)明的實(shí)施例中,標(biāo)記被設(shè)計(jì)成可重新使用的位序列,并選擇在標(biāo)記使用和重新使用期間,避免任意標(biāo)記沖突所需的二進(jìn)制位的最小數(shù)目(即,確定為設(shè)計(jì)參數(shù))。該確定涉及處理器數(shù)目、重疊克隆操作的可能數(shù)目、完成克隆操作的時(shí)間長(zhǎng)度的考慮??身樌m(xù)分配標(biāo)記,并且當(dāng)分配該序列中的最后一個(gè)標(biāo)記時(shí),第一標(biāo)記應(yīng)可被自由分配給發(fā)布的下一克隆操作。從而,在系統(tǒng)級(jí)實(shí)現(xiàn)標(biāo)記退役(retirement)和重新使用的過(guò)程,以致一旦使第一個(gè)發(fā)出的標(biāo)記退役(即,相關(guān)的數(shù)據(jù)克隆操作完成),那么就可重新開(kāi)始標(biāo)記編號(hào)。
另一實(shí)施例提供一種克隆ID標(biāo)記,所述克隆ID標(biāo)記包括在每個(gè)克隆操作或存儲(chǔ)器克隆體被分配唯一的一個(gè)編號(hào)的情況下,涵蓋同時(shí)進(jìn)行的克隆操作的最大可能數(shù)目所需的二進(jìn)制位。對(duì)于任一實(shí)施例來(lái)說(shuō),都不發(fā)生克隆ID標(biāo)記的重疊。
可采用確保標(biāo)記釋放,包括何時(shí)重新使用標(biāo)記的幾種可能方法。在一個(gè)實(shí)施例中,為了確保標(biāo)記可被釋放并被重新使用,需要確認(rèn)。一旦數(shù)據(jù)克隆操作完成,存儲(chǔ)器克隆體從目的地存儲(chǔ)器控制器接收釋放的確認(rèn)。
基于標(biāo)記的沖突的重試一個(gè)實(shí)施例引入了基于標(biāo)記的沖突的重試概念。根據(jù)該實(shí)施例,標(biāo)記是可以重新使用的,并且不必是唯一的。從而,當(dāng)后續(xù)克隆操作被賦予“001”的標(biāo)記號(hào)時(shí),具有該標(biāo)記的第一克隆操作可能仍然正在進(jìn)行。發(fā)生這種情況時(shí),擁有第一克隆操作的第一存儲(chǔ)器克隆體監(jiān)聽(tīng)對(duì)后續(xù)克隆操作的標(biāo)記分配(或者接收和對(duì)后續(xù)克隆操作的標(biāo)記分配有關(guān)的信號(hào))。第一存儲(chǔ)器克隆體隨后立即向擁有后續(xù)克隆操作的第二存儲(chǔ)器克隆體的裸寫(xiě)操作發(fā)出基于標(biāo)記的重試。下一存儲(chǔ)器克隆體延遲后續(xù)克隆操作,直到第一克隆操作完成(即,數(shù)據(jù)已被移動(dòng))為止。
J.結(jié)構(gòu)化(ARCHITECTED)二進(jìn)制位和ST克隆操作目前的多數(shù)處理器與阻止(hold up)架構(gòu)上指令的執(zhí)行的外部中斷一起工作。外部中斷特征由硬件位提供,所述硬件位由操作系統(tǒng)(OS)設(shè)置。在中斷位被斷言(assert)或去斷言(de-assert)的情況下,OS設(shè)置處理器操作狀態(tài)。當(dāng)被斷言時(shí),可在指令流的執(zhí)行過(guò)程中的任意時(shí)刻發(fā)生中斷,處理器或應(yīng)用程序都不能控制何時(shí)發(fā)生中斷。
缺少對(duì)外部中斷的控制是外部架構(gòu)上移動(dòng)操作期間需要考慮的問(wèn)題。具體地說(shuō),移動(dòng)操作包括處理器發(fā)出一系列的指令(例如,6個(gè)連續(xù)指令)。為了在該系列指令的執(zhí)行過(guò)程中,不發(fā)生中斷的情況下完成移動(dòng)操作,在發(fā)出實(shí)現(xiàn)移動(dòng)操作的一系列指令之前,處理器必須首先確保對(duì)架構(gòu)的鎖定。這意味著每次只有一個(gè)處理器可執(zhí)行移動(dòng)操作,因?yàn)殒i定只可提供給一個(gè)請(qǐng)求處理器。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,實(shí)現(xiàn)外部中斷(EE)位的斷言和去斷言的特征被修改,以便允許在處理器上運(yùn)行的軟件斷言和去斷言中斷位。即,用特殊指令對(duì)應(yīng)用程序編碼,所述特殊指令可切換(toggle)外部中斷(EE)位,從而允許處理器發(fā)出特定的指令序列,該指令序列不會(huì)被中斷。
去斷言EE位,使得處理器在發(fā)出指令序列之前,不必確保對(duì)外部架構(gòu)的鎖定。從而,多個(gè)處理器能夠同時(shí)發(fā)出它們各自的指令序列。當(dāng)應(yīng)用于數(shù)據(jù)克隆操作時(shí),該特征允許多處理器系統(tǒng)中的多個(gè)處理器同時(shí)執(zhí)行克隆操作,而不必分別獲得鎖定。這還使得每當(dāng)每個(gè)處理器需要完成數(shù)據(jù)克隆操作時(shí),該處理器就能夠開(kāi)始數(shù)據(jù)克隆。另外,如下所述,無(wú)中斷情況下指令的發(fā)布,使存儲(chǔ)器克隆體能夠以流水線(xiàn)方式發(fā)出一系列指令。
在舉例說(shuō)明的實(shí)施例中,結(jié)構(gòu)化EE(外部中斷)位被用于動(dòng)態(tài)轉(zhuǎn)換處理器的操作狀態(tài),以便包括中斷或者不包括中斷。在共同構(gòu)成克隆操作的一系列指令之間不存在中斷的情況下,在架構(gòu)上執(zhí)行該系列指令。應(yīng)用程序內(nèi)的程序代碼切換EE位,以便動(dòng)態(tài)禁用和啟用外部中斷。該特定指令序列的應(yīng)用軟件超越(over-ridden)OS選擇的中斷狀態(tài)。根據(jù)舉例說(shuō)明的實(shí)施例,EE位可被在處理器上運(yùn)行的應(yīng)用程序設(shè)置為1或0,每個(gè)值對(duì)應(yīng)于具體的中斷狀態(tài),這取決于處理器的設(shè)計(jì)以及和EE位相關(guān)的軟件編碼值。
從而,本發(fā)明提供一種軟件編程模型,當(dāng)外部中斷被禁用時(shí),所述軟件編程模型能夠發(fā)出多個(gè)指令。就舉例說(shuō)明的實(shí)施例來(lái)說(shuō),共同完成移動(dòng)或克隆操作的指令序列之前是由如下例證代碼序列所示的去斷言EE位的指令EE bit=0ST AST BST CNTEE bit=1SYNC在上面舉例說(shuō)明的實(shí)施例中,當(dāng)EE位的值為0時(shí),外部中斷被關(guān)閉。指令從處理器流到存儲(chǔ)器克隆體。隨后,EE位的值被改為1,表示處理器狀態(tài)返回允許外部中斷的中斷啟用狀態(tài)。之后,在架構(gòu)上發(fā)布SYNC操作。
ST CLONE操作在一個(gè)實(shí)施例中,存儲(chǔ)器克隆體(或者處理器)把上述指令序列看作代表克隆操作,并自動(dòng)設(shè)置EE位,以便防止外部中斷打斷該指令序列。在另一實(shí)施例中,上述指令序列被存儲(chǔ)器克隆體接收為組合的基本存儲(chǔ)操作。這里,組合操作被稱(chēng)為Store(ST)CLONE操作,并用單個(gè)ST CLONE操作替代上述一系列的三個(gè)獨(dú)立存儲(chǔ)操作和一個(gè)SYNC操作。
ST CLONE是使存儲(chǔ)器克隆體啟動(dòng)克隆操作的多字節(jié)存儲(chǔ)操作。設(shè)置EE位使存儲(chǔ)器克隆體能夠用ST CLONE操作替換其后跟隨SYNC的上述一系列的存儲(chǔ)指令。
從而,可用單個(gè)ST CLONE操作替換4個(gè)獨(dú)立操作(即3個(gè)存儲(chǔ)操作及其后的一個(gè)SYNC操作)。另外,根據(jù)本發(fā)明的這種實(shí)現(xiàn),SYNC操作是虛擬的,因?yàn)橐坏┐鎯?chǔ)器克隆體檢測(cè)到結(jié)構(gòu)完成狀態(tài),就用信號(hào)把數(shù)據(jù)克隆操作的完成通知給處理器。結(jié)構(gòu)完成狀態(tài)使處理器表現(xiàn)為好像在存儲(chǔ)器克隆操作之后,發(fā)布的SYNC已收到ACK響應(yīng)。
K.借助保留位的虛擬/真實(shí)地址操作模式本發(fā)明能夠?qū)崿F(xiàn)處理單元的虛擬或真實(shí)尋址能力的基于應(yīng)用的動(dòng)態(tài)選擇。在可能影響存儲(chǔ)器中數(shù)據(jù)的位置的各個(gè)指令(例如ST指令)內(nèi),提供一個(gè)保留位,所述保留位可由應(yīng)用軟件(即不是OS)設(shè)置,以便把處理器的操作模式選擇為虛擬尋址或真實(shí)尋址模式。圖9A圖解說(shuō)明了具有保留位901的地址操作900。保留位901能夠由運(yùn)行于處理器上的應(yīng)用軟件動(dòng)態(tài)設(shè)置。根據(jù)運(yùn)行于處理器上的應(yīng)用程序提供的代碼,處理器操作模式從虛擬模式變?yōu)檎鎸?shí)模式,以及從真實(shí)模式變成虛擬模式。
保留位901表示是需要真實(shí)尋址還是需要虛擬尋址,保留位由運(yùn)行于處理器上的應(yīng)用軟件賦值(1或0)。為“0”的默認(rèn)值可用于表示虛擬尋址,當(dāng)需要真實(shí)尋址時(shí),軟件可動(dòng)態(tài)地把該值變?yōu)椤?”。處理器讀取保留位的值,確定特定的地址操作需要何種操作模式。
虛擬或真實(shí)尋址模式的選擇可由運(yùn)行于處理器上的特定應(yīng)用程序確定。當(dāng)應(yīng)用程序需要尋求性能的提高,而不是數(shù)據(jù)的保護(hù)時(shí),選擇虛擬操作模式,允許應(yīng)用程序直接把有效地址發(fā)送給OS和固件。
圖9B圖解說(shuō)明了典型軟件環(huán)境的軟件層圖以及地址操作的相關(guān)默認(rèn)操作模式。如圖所示,應(yīng)用軟件(software application)911按照尋址模式操作,而OS 913和固件913按照真實(shí)尋址模式操作。通過(guò)把保留位設(shè)置成虛擬尋址模式的預(yù)定值,實(shí)現(xiàn)提供性能提高的模式的選擇。同樣地,當(dāng)要求數(shù)據(jù)保護(hù)時(shí),保留位被設(shè)置成指示虛擬尋址模式的值,虛擬數(shù)據(jù)地址被發(fā)送給存儲(chǔ)器克隆體211,存儲(chǔ)器克隆體211中的TLB 319稍后提供相應(yīng)的真實(shí)地址。從而,本發(fā)明能夠?qū)崿F(xiàn)性能與數(shù)據(jù)保護(hù)的軟件方面的均衡。
虛擬地址模式的處理器操作由存儲(chǔ)器克隆體211的虛擬-真實(shí)地址轉(zhuǎn)換后備緩沖器(TLB)支持。當(dāng)從處理器接收存儲(chǔ)器克隆體操作及虛擬地址時(shí),TLB被用于把地址從虛擬地址轉(zhuǎn)換成真實(shí)(或物理地址)。隨后,在架構(gòu)上發(fā)出之前,虛擬地址被轉(zhuǎn)換成真實(shí)地址。從OS的觀(guān)點(diǎn)來(lái)看,虛擬尋址模式能夠?qū)崿F(xiàn)用戶(hù)級(jí)特權(quán),而真實(shí)尋址模式則不能。從而,虛擬尋址模式使數(shù)據(jù)能夠被用戶(hù)級(jí)應(yīng)用程序以及被OS訪(fǎng)問(wèn)。另外,虛擬尋址模式允許操作系統(tǒng)(OS)和用戶(hù)級(jí)應(yīng)用程序訪(fǎng)問(wèn)存儲(chǔ)器克隆體。真實(shí)地址操作模式能夠?qū)崿F(xiàn)更快的性能,因?yàn)橐坏┲噶顝奶幚砥鞅话l(fā)出,就不需要地址轉(zhuǎn)換。
L.其它特征、概述和益處作為數(shù)據(jù)移動(dòng)操作的目標(biāo)的數(shù)據(jù)來(lái)源于實(shí)際存儲(chǔ)器、處理器高速緩存、低級(jí)高速緩存、干涉高速緩存等中的最一致存儲(chǔ)位置。從而,源地址還表示存儲(chǔ)器子系統(tǒng)內(nèi)包含被請(qǐng)求數(shù)據(jù)的一致副本的正確存儲(chǔ)模塊。
本發(fā)明使多個(gè)克隆操作能夠在架構(gòu)上重疊(或者同時(shí)被執(zhí)行)。為了監(jiān)視并唯一地區(qū)分每個(gè)獨(dú)立克隆操作的完成,提供一個(gè)標(biāo)記,所述標(biāo)記被附到發(fā)送給源地址的讀取操作的地址標(biāo)記上。該標(biāo)記可保存在M位寄存器中,其中每個(gè)克隆操作具有置于該寄存器中的不同值,M是為支持系統(tǒng)上同時(shí)進(jìn)行的可能克隆操作的最大數(shù)目而選擇的設(shè)計(jì)參數(shù)。
如上所述,一旦裸WR過(guò)程完成,即結(jié)構(gòu)性完成移動(dòng)。結(jié)構(gòu)完成狀態(tài)和其它相關(guān)特征的實(shí)現(xiàn)相當(dāng)快地使處理器脫離數(shù)據(jù)移動(dòng)操作。數(shù)據(jù)的所有物理移動(dòng)(代表存儲(chǔ)移動(dòng)中涉及的相當(dāng)大部分等待時(shí)間)發(fā)生于后臺(tái)中。處理器能夠相當(dāng)快地重新開(kāi)始處理指令序列中跟在SYNC之后的指令,因?yàn)樵诋a(chǎn)生結(jié)構(gòu)完成狀態(tài)的裸寫(xiě)過(guò)程中不包含任何數(shù)據(jù)傳輸階段。
特別地,在數(shù)據(jù)在相同存儲(chǔ)模塊上的地址之間移動(dòng)的情況下,時(shí)間益處甚至更顯著,因?yàn)閿?shù)據(jù)不必在外部接線(xiàn)器架構(gòu)上傳輸。利用存儲(chǔ)器芯片上互連存儲(chǔ)模塊的不同子組件(例如控制器等)的上層金屬便于這種“內(nèi)部”存儲(chǔ)移動(dòng)。圖6C中提供了存儲(chǔ)模塊的這種結(jié)構(gòu)。從而在其中存在在不同組件之間的互連的接線(xiàn)器實(shí)現(xiàn)中,借助存儲(chǔ)模塊605的上層金屬651,也可實(shí)現(xiàn)直接內(nèi)部數(shù)據(jù)克隆。
本發(fā)明提供其它幾個(gè)可以確認(rèn)的益處,包括(1)移動(dòng)數(shù)據(jù)不滾動(dòng)(roll)高速緩沖存儲(chǔ)器(L2、L3等),如同傳統(tǒng)處理器啟動(dòng)移動(dòng)那樣;和(2)由于結(jié)構(gòu)完成處理器狀態(tài)的緣故,執(zhí)行應(yīng)用軟件也極快地完成。例如,在現(xiàn)有技術(shù)中,如下進(jìn)行128B CL移動(dòng)(LD/ST)LD/ST1 CL RDx(地址和數(shù)據(jù)),32 CL RDy(地址和數(shù)據(jù)),32 CL WRy(地址和數(shù)據(jù))。該操作實(shí)際上是3個(gè)地址操作和384字節(jié)的數(shù)據(jù)事務(wù)(transaction)。但是,借助本發(fā)明,利用一個(gè)裸CL WRy(僅地址)和1 CL RDx(僅地址)總線(xiàn)事務(wù)完成相同的過(guò)程。從而,獲得顯著的性能提高。
本發(fā)明利用帶有分布式存儲(chǔ)器結(jié)構(gòu)的基于接線(xiàn)器的多處理器系統(tǒng)的數(shù)個(gè)當(dāng)前可用特征/操作,從處理觀(guān)點(diǎn)提供更有效的數(shù)據(jù)移動(dòng)。例如傳統(tǒng)上,MS控制來(lái)自于存儲(chǔ)器(高速緩沖存儲(chǔ)器線(xiàn))的數(shù)據(jù)相對(duì)于處理器的發(fā)送和接收。MC被提供地址和源ID,并利用這兩個(gè)參數(shù)轉(zhuǎn)發(fā)所請(qǐng)求的數(shù)據(jù)。通過(guò)用與高速緩沖存儲(chǔ)器線(xiàn)讀取相關(guān)的地址標(biāo)記中的目的地ID替換源ID,本發(fā)明能夠?qū)崿F(xiàn)被移動(dòng)數(shù)據(jù)的直接MC-MC傳輸(即發(fā)送和接收),而不需要改變傳統(tǒng)的MC邏輯單元和/或功能。
接線(xiàn)器還使得能夠同時(shí)進(jìn)行多個(gè)存儲(chǔ)器克隆操作,這進(jìn)一步導(dǎo)致存儲(chǔ)隊(duì)列/緩沖器的有效利用。借助直接接線(xiàn)器連接,數(shù)據(jù)移動(dòng)中所涉及的時(shí)間也不取決于存儲(chǔ)器克隆操作的量。
本發(fā)明借助硬件的虛擬化和數(shù)個(gè)軟件可控特征的包含,改進(jìn)了具有加速器引擎的當(dāng)前處理器的基于硬件的移動(dòng)操作。即,在不實(shí)際利用傳統(tǒng)用于完成移動(dòng)操作的硬件組件的情況下,觀(guān)察到并改進(jìn)了硬件模型的性能優(yōu)點(diǎn)。
另一例子涉及利用接線(xiàn)器在架構(gòu)上實(shí)現(xiàn)更快的數(shù)據(jù)移動(dòng),因?yàn)楸灰苿?dòng)的高速緩沖存儲(chǔ)器線(xiàn)不再必須通過(guò)單一點(diǎn)(即進(jìn)出單一處理器芯片,所述處理器芯片一般接收,并且隨后發(fā)送被移動(dòng)的所有數(shù)據(jù))。另外,由于實(shí)際的數(shù)據(jù)移動(dòng)不需要相對(duì)于單一收集點(diǎn)的傳輸,因此利用接線(xiàn)器能夠?qū)崿F(xiàn)(多個(gè))高速緩沖存儲(chǔ)器線(xiàn)的并行移動(dòng),導(dǎo)致對(duì)更高帶寬的使用,從而快得多地完成所有物理移動(dòng)。現(xiàn)有系統(tǒng)每次只能完成一次移動(dòng)。
本發(fā)明還能夠?qū)崿F(xiàn)字節(jié)、高速緩沖存儲(chǔ)器線(xiàn)和頁(yè)的移動(dòng)。雖然沒(méi)有提供和移動(dòng)何時(shí)實(shí)際開(kāi)始有關(guān)的任何實(shí)際時(shí)間,不過(guò)存儲(chǔ)器克隆體跟蹤該信息,并保持處理系統(tǒng)的一致性。特別地,由于該移動(dòng)不會(huì)影響在正在完成實(shí)際移動(dòng)時(shí)實(shí)現(xiàn)的任何其它過(guò)程,因此處理器資源可以自由完成其它任務(wù),而不是等到數(shù)據(jù)從一個(gè)存儲(chǔ)位置被移動(dòng)到另一存儲(chǔ)位置為止。
雖然已參考具體實(shí)施例說(shuō)明了本發(fā)明,不過(guò)所述說(shuō)明不應(yīng)被理解為對(duì)本發(fā)明的限制。當(dāng)參考本發(fā)明的說(shuō)明時(shí),對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō),所公開(kāi)實(shí)施例的各種修改,以及本發(fā)明的其它實(shí)施例將變得顯而易見(jiàn)。于是可認(rèn)為在不脫離附加權(quán)利要求中限定的本發(fā)明的精神或范圍的情況下,可做出這樣的修改。
權(quán)利要求
1.一種數(shù)據(jù)處理系統(tǒng),包含處理器;至少包括一個(gè)存儲(chǔ)器部件的存儲(chǔ)器子系統(tǒng);互連所述存儲(chǔ)器子系統(tǒng)和所述處理器的裝置;和完成由所述處理器啟動(dòng)的數(shù)據(jù)克隆操作的裝置,其中數(shù)據(jù)從所述存儲(chǔ)器子系統(tǒng)內(nèi)的源位置直接路由到所述存儲(chǔ)器子系統(tǒng)內(nèi)的目的地位置,而不通過(guò)所述處理器進(jìn)行。
2.按照權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述存儲(chǔ)器子系統(tǒng)包括分布式存儲(chǔ)器,所述分布式存儲(chǔ)器具有包括所述源位置的源地址的第一存儲(chǔ)器和包括所述目的地位置的目的地地址的第二存儲(chǔ)器;所述互連裝置包括直接將所述第一存儲(chǔ)器和所述第二存儲(chǔ)器耦接的裝置;和其中所述數(shù)據(jù)通過(guò)所述直接耦接裝置從所述第一存儲(chǔ)器被路由到所述第二存儲(chǔ)器。
3.按照權(quán)利要求2所述的數(shù)據(jù)處理系統(tǒng),還包含產(chǎn)生數(shù)據(jù)克隆操作的裝置;在所述數(shù)據(jù)處理系統(tǒng)的架構(gòu)上發(fā)出所述數(shù)據(jù)克隆操作的裸寫(xiě)和修改的讀操作數(shù)的裝置;和修改發(fā)送到所述源位置的數(shù)據(jù)讀操作以包括替代處理器的路由地址的目的地地址的裝置,其中提供給數(shù)據(jù)讀操作的數(shù)據(jù)被直接路由到在數(shù)據(jù)讀操作內(nèi)指示的目的地地址。
4.按照權(quán)利要求3所述的數(shù)據(jù)處理系統(tǒng),還包含所述第一存儲(chǔ)器的存儲(chǔ)器控制器,該存儲(chǔ)器控制器用于將數(shù)據(jù)從源地址直接發(fā)送到包括在所述數(shù)據(jù)讀操作中的目的地地址,其中所述存儲(chǔ)器控制器將數(shù)據(jù)直接發(fā)送到所述第二存儲(chǔ)器的緩沖器。
5.按照權(quán)利要求3所述的數(shù)據(jù)處理系統(tǒng),其中所述產(chǎn)生和修改數(shù)據(jù)讀操作的裝置包括存儲(chǔ)器克隆體。
6.按照權(quán)利要求3所述的數(shù)據(jù)處理系統(tǒng),還包含所述第二存儲(chǔ)器的存儲(chǔ)器控制器,該存儲(chǔ)器控制器用于將信號(hào)發(fā)送到所述存儲(chǔ)器克隆體通知所述存儲(chǔ)器克隆體數(shù)據(jù)的物理移動(dòng)已完成。
7.按照權(quán)利要求3所述的數(shù)據(jù)處理系統(tǒng),還包含數(shù)據(jù)一致性協(xié)議;以及當(dāng)完成所述數(shù)據(jù)克隆操作時(shí),提供數(shù)據(jù)一致性的裝置。
8.按照權(quán)利要求7所述的數(shù)據(jù)處理系統(tǒng),其中所述提供裝置包括確定所述存儲(chǔ)器子系統(tǒng)內(nèi)克隆操作所針對(duì)的數(shù)據(jù)的最一致副本的位置的裝置;從具有最一致副本的所述位置發(fā)送數(shù)據(jù)的裝置;以及在所述克隆操作完成后,將所述目的地位置的一致?tīng)顟B(tài)設(shè)定為修改(M)的裝置。
9.按照權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述互連裝置是接線(xiàn)器。
10.一種在數(shù)據(jù)處理系統(tǒng)中完成數(shù)據(jù)移動(dòng)的方法,所述方法包含在將被發(fā)送的數(shù)據(jù)所處的存儲(chǔ)器位置,接收具有替代處理器路由地址的目的地地址的讀操作;和將所述數(shù)據(jù)直接發(fā)送到由所述目的地地址指示的目的地存儲(chǔ)器位置,其中所述數(shù)據(jù)不通過(guò)發(fā)出所述讀操作的處理部件被路由。
11.按照權(quán)利要求10所述的方法,還包含利用所述目的地地址產(chǎn)生數(shù)據(jù)克隆操作;在所述數(shù)據(jù)處理系統(tǒng)的架構(gòu)上發(fā)出所述數(shù)據(jù)克隆操作的寫(xiě)和讀操作數(shù);和修改發(fā)送到所述源位置的數(shù)據(jù)讀操作以包括替代處理部件的路由地址的目的地地址,其中數(shù)據(jù)讀操作提供的數(shù)據(jù)被直接路由到在數(shù)據(jù)讀操作內(nèi)指示的目的地地址。
12.按照權(quán)利要求11所述的方法,還包含將所述數(shù)據(jù)的所述物理移動(dòng)完成信號(hào)發(fā)送到從其發(fā)出所述數(shù)據(jù)讀操作的處理部件。
13.按照權(quán)利要求12所述的方法,其中所述處理部件是存儲(chǔ)器克隆體。
14.按照權(quán)利要求11述的方法,還包含確定所述存儲(chǔ)器子系統(tǒng)內(nèi)要克隆的數(shù)據(jù)的最一致副本的位置;和從具有最一致副本的所述位置發(fā)送數(shù)據(jù)。
全文摘要
公開(kāi)了一種數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)通過(guò)將數(shù)據(jù)從存儲(chǔ)器子系統(tǒng)內(nèi)的源位置直接路由到所述存儲(chǔ)器子系統(tǒng)內(nèi)的目的地位置。該數(shù)據(jù)不通過(guò)啟動(dòng)數(shù)據(jù)克隆操作的處理器被路由。該存儲(chǔ)器子系統(tǒng)的各存儲(chǔ)部件通過(guò)接線(xiàn)器直接相互連接。該接線(xiàn)器提供路由數(shù)據(jù)的大的帶寬。當(dāng)數(shù)據(jù)克隆操作由處理器在數(shù)據(jù)處理系統(tǒng)的架構(gòu)上發(fā)出時(shí),修改發(fā)送到所述源地址的數(shù)據(jù)讀操作以包括替代處理器地址的目的地地址。接線(xiàn)器將數(shù)據(jù)路由到在數(shù)據(jù)讀操作中提供的地址。因此,該接線(xiàn)器自動(dòng)地將數(shù)據(jù)路由到目的地地址而不路由到處理器地址。
文檔編號(hào)G06F12/08GK1504903SQ20031011865
公開(kāi)日2004年6月16日 申請(qǐng)日期2003年11月27日 優(yōu)先權(quán)日2002年12月5日
發(fā)明者拉維·K·阿里米利, 本杰明·L·古德曼, 喬迪·B·喬伊納, L 古德曼, B 喬伊納, 拉維 K 阿里米利 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司