用于包括屏障指令的指令序列的處理器性能改進(jìn)的制作方法
【專利摘要】一種用于處理指令序列的技術(shù),該指令序列包括屏障指令、在屏障指令之前的加載指令和跟隨屏障指令的隨后存儲(chǔ)器訪問(wèn)指令,該技術(shù)包括:由處理器內(nèi)核基于由處理器內(nèi)核接收到用于對(duì)應(yīng)于加載指令的讀操作的良好組合響應(yīng)以及用于加載指令的數(shù)據(jù)中的最早的一個(gè)來(lái)確定加載指令被解決。該技術(shù)還包括:如果隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行未在屏障指令的完成之前被發(fā)起,則由處理器內(nèi)核響應(yīng)于確定完成的屏障指令來(lái)發(fā)起隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行。該技術(shù)進(jìn)一步包括:如果隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行在屏障指令的完成之前被發(fā)起,則由處理器內(nèi)核響應(yīng)于確定完成的屏障指令來(lái)中斷關(guān)于無(wú)效對(duì)隨后存儲(chǔ)器訪問(wèn)指令的追蹤。
【專利說(shuō)明】用于包括屏障指令的指令序列的處理器性能改進(jìn)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明總體上涉及處理器性能改進(jìn),并且更具體地涉及用于包括屏障指令的指令 序列的處理器性能改進(jìn)。
【背景技術(shù)】
[0002] 傳統(tǒng)的對(duì)稱多處理器(SMP)計(jì)算機(jī)系統(tǒng)(比如服務(wù)器計(jì)算機(jī)系統(tǒng))包括多個(gè)都耦 接到系統(tǒng)互連的處理單元,該系統(tǒng)互連典型地包括一個(gè)或者多個(gè)地址、數(shù)據(jù)和控制總線。被 耦接到的系統(tǒng)互連是系統(tǒng)存儲(chǔ)器,其代表多處理器計(jì)算機(jī)系統(tǒng)中的最低級(jí)別的易失性存儲(chǔ) 器并且通常由所有處理單元針對(duì)讀和寫(xiě)訪問(wèn)可訪問(wèn)。為了減少對(duì)于駐留在系統(tǒng)存儲(chǔ)器中的 指令和數(shù)據(jù)的訪問(wèn)延時(shí),每個(gè)處理單元典型地進(jìn)一步由相應(yīng)的多級(jí)高速緩存層級(jí)支持,該 多級(jí)高速緩存層級(jí)的最低級(jí)可以被一個(gè)或者多個(gè)處理器內(nèi)核共享。
[0003] 已經(jīng)被提出和/或?qū)嵤┑母鞣N處理器設(shè)計(jì)旨在于改進(jìn)數(shù)據(jù)處理系統(tǒng)性能。例如, 在實(shí)施脆弱存儲(chǔ)器模型的處理器設(shè)計(jì)中,只要操作未被限制為不可亂序執(zhí)行,指令就可以 被重排序以用于執(zhí)行。一種用于限制某些指令執(zhí)行的技術(shù)采用了屏障(或者同步)指令以 防止后續(xù)加載或者存儲(chǔ)指令(例如,跟隨屏障指令的加載或者存儲(chǔ)指令)的執(zhí)行,直到在先 的加載或者存儲(chǔ)指令或者指令(例如,在屏障指令之前的加載或者存儲(chǔ)指令)被解決。
[0004] 參照?qǐng)D8,關(guān)于運(yùn)用屏障指令(SYNC)來(lái)強(qiáng)制實(shí)施在存儲(chǔ)(ST)和加載(LD)指令之 間的排序可能有四種不同情形。在第一存儲(chǔ)到存儲(chǔ)情形中,在屏障指令(SYNC)之前的到 地址'A'的存儲(chǔ)指令(ST A)跟隨有在屏障指令(SYNC)之后的到地址'B'的存儲(chǔ)指令(ST B)。在第二存儲(chǔ)到加載情形中,在屏障指令(SYNC)之前的到地址'A'的存儲(chǔ)指令(ST A) 跟隨有在屏障指令(SYNC)之后的到地址'B'處加載指令(LD B)。在第三加載到加載情形 中,在屏障指令(SYNC)之前的到地址'A'的加載指令(LD A)跟隨有在屏障指令(SYNC)之 后的到地址'B'的加載指令(LD B)。在第四加載到存儲(chǔ)情形中,在屏障指令(SYNC)之前 的到地址'A'的加載指令(LD A)跟隨有在屏障指令(SYNC)之后的到地址'B'的存儲(chǔ)指令 (ST B)。
[0005] 在第一情形中,因?yàn)橹噶钚蛄幸蚜鹘?jīng)處理器流水線,因此屏障指令(SYNC)在存儲(chǔ) 指令(ST A和ST B)之間維持了順序。在第二情形中,跟隨屏障指令(SYNC)的加載指令 (LD B)的執(zhí)行被延遲,直到在屏障指令(SYNC)之前的存儲(chǔ)指令(ST A)被完成(或者跟隨 屏障指令(SYNC)的加載指令(LD B)被早先發(fā)布并且針對(duì)無(wú)效被追蹤直到在處理器內(nèi)核處 從存儲(chǔ)器子系統(tǒng)處接收到用于屏障指令(SYNC)的確認(rèn)(ACK))。在第三情形中,跟隨屏障指 令(SYNC)的加載指令(LD B)等待著直到用于在屏障指令(SYNC)之前的加載指令(LD A) 的數(shù)據(jù)已被接收到(或者跟隨著屏障指令(SYNC)的加載指令(LD B)早前被發(fā)起并針對(duì)無(wú) 效被追蹤直到在處理器內(nèi)核處接收到用于在屏障指令(SYNC)之前的加載指令(LD A)的數(shù) 據(jù))。在第四情形中,跟隨屏障指令(SYNC)的存儲(chǔ)指令(ST B)的執(zhí)行已被延遲,直到在處 理器內(nèi)核處接收到用于在屏障指令(SYNC)之前的加載指令(LD A)的數(shù)據(jù)。
[0006] 在常規(guī)實(shí)現(xiàn)方式中,當(dāng)(用于加載指令的)數(shù)據(jù)已被返回到處理器內(nèi)核時(shí),先于屏 障指令的加載指令已被解決。相反地,在傳統(tǒng)實(shí)現(xiàn)方式中,當(dāng)在處理器內(nèi)核處從存儲(chǔ)子系統(tǒng) (例如,L2高速緩存)處接收到(用于隨后的屏障指令的)確認(rèn)(ACK)時(shí),先于屏障指令的 存儲(chǔ)指令已被解決。參照?qǐng)D8的情形10,如前所記錄,常規(guī)實(shí)現(xiàn)方式要么是推測(cè)地執(zhí)行并且 針對(duì)無(wú)效跟蹤跟隨屏障指令的加載指令(其中無(wú)效的加載指令被重新執(zhí)行),要么是(在跟 蹤邏輯不可用的情形中)延遲執(zhí)行跟隨屏障指令的加載指令直到在屏障指令之前的指令 (ST A或者LD A)已被解決。參參照?qǐng)D8的情形12,常規(guī)實(shí)現(xiàn)方式延遲了跟隨屏障指令的 指令(LD B或者ST B)的執(zhí)行,直到用于加載指令(LD A)的數(shù)據(jù)被處理器內(nèi)核接收到。
[0007] 因此,在本領(lǐng)域中需要解決前述問(wèn)題。
【發(fā)明內(nèi)容】
[0008] 根據(jù)本公開(kāi)內(nèi)容的一個(gè)方面,公開(kāi)了一種用于處理指令序列的技術(shù),指令序列包 括屏障指令、在屏障指令之前的加載指令和跟隨述屏障指令的隨后存儲(chǔ)器訪問(wèn)指令,該技 術(shù)包括:由處理器內(nèi)核基于由處理器內(nèi)核接收到用于對(duì)應(yīng)于加載指令的讀操作的良好組合 響應(yīng)以及用于加載指令的數(shù)據(jù)中的最早的一個(gè)來(lái)確定加載指令被解決。這種技術(shù)還包括: 如果隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行未在屏障指令的完成之前被發(fā)起,則由處理器內(nèi)核響應(yīng)于 確定完成的屏障指令來(lái)發(fā)起隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行。這種技術(shù)還包括:如果隨后存儲(chǔ) 器訪問(wèn)指令的執(zhí)行在屏障指令的完成之前被發(fā)起,則由處理器內(nèi)核響應(yīng)于確定完成的屏障 指令來(lái)中斷關(guān)于無(wú)效對(duì)隨后存儲(chǔ)器訪問(wèn)指令的追蹤。
[0009] 從本發(fā)明的第一方面來(lái)看,本發(fā)明提供了一種處理指令序列的方法,指令序列包 括屏障指令、在屏障指令之前的加載指令和跟隨屏障指令的隨后存儲(chǔ)器訪問(wèn)指令,該方法 包括:由處理器內(nèi)核基于由處理器內(nèi)核接收到用于對(duì)應(yīng)于加載指令以及用于加載指令的數(shù) 據(jù)的讀操作的良好組合響應(yīng)以及用于加載指令的數(shù)據(jù)中的最早的一個(gè)來(lái)確定加載指令被 解決;如果隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行未在屏障指令的完成之前被發(fā)起,則由處理器內(nèi)核 響應(yīng)于確定完成的屏障指令來(lái)發(fā)起隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行;如果隨后存儲(chǔ)器訪問(wèn)指令 的執(zhí)行在屏障指令的完成之前被發(fā)起,則由處理器內(nèi)核響應(yīng)于確定完成的屏障指令來(lái)中斷 關(guān)于無(wú)效對(duì)隨后存儲(chǔ)器訪問(wèn)指令的追蹤。
[0010] 從進(jìn)一步的方面來(lái)看,本發(fā)明提供了一種被配置用于處理指令序列的數(shù)據(jù)處理系 統(tǒng),指令序列包括屏障指令、在屏障指令之前的加載指令和跟隨屏障指令的隨后存儲(chǔ)器訪 問(wèn)指令,該數(shù)據(jù)處理系統(tǒng)包括:高速緩沖存儲(chǔ)器;以及耦接到高速緩沖存儲(chǔ)器的處理器內(nèi) 核,該系統(tǒng)包括用于以下操作的裝置:基于由處理器內(nèi)核接收到用于對(duì)應(yīng)于加載指令的讀 操作的良好組合響應(yīng)以及用于加載指令的數(shù)據(jù)中的最早的一個(gè)來(lái)確定加載指令被解決;如 果隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行未在屏障指令的完成之前被發(fā)起,則由處理器內(nèi)核響應(yīng)于確 定完成的屏障指令來(lái)發(fā)起隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行;以及如果隨后存儲(chǔ)器訪問(wèn)指令的執(zhí) 行在屏障指令的完成之前被發(fā)起,則由所述處理器內(nèi)核響應(yīng)于確定完成的屏障指令來(lái)中斷 關(guān)于無(wú)效對(duì)隨后存儲(chǔ)器訪問(wèn)指令的追蹤。
[0011] 從進(jìn)一步的方面來(lái)看,本發(fā)明提供了一種被配置用于處理指令序列的數(shù)據(jù)處理系 統(tǒng),指令序列包括屏障指令、在屏障指令之前的加載指令和跟隨屏障指令的隨后存儲(chǔ)器訪 問(wèn)指令,該數(shù)據(jù)處理系統(tǒng)包括:高速緩沖存儲(chǔ)器;以及耦接到高速緩沖存儲(chǔ)器的處理器內(nèi) 核,其中處理器內(nèi)核被配置用于:基于由處理器內(nèi)核接收到用于對(duì)應(yīng)于加載指令的讀操作 的良好組合響應(yīng)以及用于加載指令的數(shù)據(jù)中的最早的一個(gè)來(lái)確定加載指令被解決;如果隨 后存儲(chǔ)器訪問(wèn)指令的執(zhí)行未在屏障指令的完成之前被發(fā)起,則由處理器內(nèi)核響應(yīng)于確定完 成的屏障指令來(lái)發(fā)起隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行;以及如果隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行在 屏障指令的完成之前被發(fā)起,則由所述處理器內(nèi)核響應(yīng)于確定完成的屏障指令來(lái)中斷關(guān)于 無(wú)效對(duì)隨后存儲(chǔ)器訪問(wèn)指令的追蹤。
[0012] 從進(jìn)一步的方面來(lái)看,本發(fā)明提供了一種用于處理指令序列的計(jì)算機(jī)程序產(chǎn)品, 指令序列包括屏障指令、在屏障指令之前的加載指令和跟隨屏障指令的隨后存儲(chǔ)器訪問(wèn)指 令,該計(jì)算機(jī)程序產(chǎn)品包括:計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其由處理電路可讀取并且存儲(chǔ)指令以用 于由處理電路執(zhí)行以執(zhí)行用于執(zhí)行本發(fā)明的步驟的方法。
[0013] 從進(jìn)一步的方面來(lái)看,本發(fā)明提供了一種存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上并且可以加載 到數(shù)字計(jì)算機(jī)的內(nèi)部存儲(chǔ)器中的計(jì)算機(jī)程序,包括軟件代碼部分,當(dāng)計(jì)算機(jī)程序在計(jì)算機(jī) 上被運(yùn)行時(shí),用于執(zhí)行本發(fā)明的步驟。
【專利附圖】
【附圖說(shuō)明】
[0014] 現(xiàn)在將僅通過(guò)示例的方式參考優(yōu)選實(shí)施例描述本發(fā)明,如在以下附圖中所圖示出 的:
[0015] 圖1是根據(jù)本發(fā)明的優(yōu)選實(shí)施例配置的處理單元的相關(guān)部分的示圖;
[0016] 圖2是根據(jù)本發(fā)明的優(yōu)選實(shí)施例配置的示例性數(shù)據(jù)處理系統(tǒng)的相關(guān)部分的示圖;
[0017] 圖3是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的示例性操作的示圖,該操作包括在圖2的數(shù)據(jù) 處理系統(tǒng)內(nèi)實(shí)施的請(qǐng)求階段、部分響應(yīng)(Presp)階段和組合響應(yīng)(Cresp)階段;
[0018] 圖4是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的圖2的數(shù)據(jù)處理系統(tǒng)內(nèi)的示例性操作的示圖; [0019] 圖5是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的圖1中的L2高速緩存的片的相關(guān)部分的示圖;
[0020] 圖6是根據(jù)本發(fā)明的優(yōu)選實(shí)施例由圖5的讀取主張(read-claim,RC)機(jī)器實(shí)施的 示例性的過(guò)程的流程圖;
[0021] 圖7是根據(jù)本發(fā)明的優(yōu)選實(shí)施例由在圖5的加載-存儲(chǔ)單元(LSU)中包括的處理 器內(nèi)核加載重排序隊(duì)列解決邏輯實(shí)施的示例性的過(guò)程的流程圖;
[0022] 圖8是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的示圖,其圖示了關(guān)于運(yùn)用屏障指令(SYNC)以對(duì) 存儲(chǔ)(ST)和加載(LD)指令排序的四種情形;以及
[0023] 圖9是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的由圖5的LSU的處理器內(nèi)核加載重排序隊(duì)列解 決邏輯實(shí)施的示例性屏障釋放過(guò)程的流程圖。
【具體實(shí)施方式】
[0024] 所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算 機(jī)程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為硬件實(shí)施方式或者組合有軟件(包 括固件、駐留軟件、微代碼等)的實(shí)施方式,硬件方面這里可以統(tǒng)稱為"電路"、"模塊"或"系 統(tǒng)"。此外,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序 產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0025] 可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算 機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以例如是一但不 限于--電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì) 算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的示例包括以下的:便攜式計(jì)算機(jī)盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器 (RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、便攜式緊湊盤(pán)只讀存 儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī) 可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置 或者器件使用或者與其結(jié)合使用。
[0026] 計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào), 其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括一但不 限于一電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算 機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸 用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0027] 計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限 于一無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0028] 可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明操作的計(jì)算 機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java⑧、Smalltalk、 C++等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如"C"語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序 代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件 包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器 上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)一包括局域網(wǎng) (LAN)或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特 網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。Java和所有基于Java商標(biāo)和標(biāo)記是甲骨文和/或其 關(guān)聯(lián)公司的商標(biāo)或者注冊(cè)商標(biāo)。
[0029] 下面將參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖 和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖 中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì) 算機(jī)、專用計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些計(jì) 算機(jī)程序指令在通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程 圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
[0030] 也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、 其他可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的 指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令 的制造品(article of manufacture) 〇
[0031] 計(jì)算機(jī)程序指令也可以被加載到計(jì)算機(jī)、其他可編程數(shù)據(jù)處理裝置或者其他設(shè)備 上以使得一系列操作步驟在計(jì)算機(jī)、其他可編程裝置或者其他設(shè)備上被執(zhí)行以產(chǎn)生計(jì)算機(jī) 實(shí)施的過(guò)程,從而使得在計(jì)算機(jī)或者其他可編程裝置上執(zhí)行的指令提供用于實(shí)施在流程圖 和/或一個(gè)或者多個(gè)框圖中指定的功能/動(dòng)作的過(guò)程。
[0032] 數(shù)據(jù)處理系統(tǒng)利用脆弱存儲(chǔ)器模型,其允許對(duì)于操作的大量重排序并且允許存儲(chǔ) 修改操作以按照非原子方式影響在不同處理器(即,存儲(chǔ)操作可以在多處理器數(shù)據(jù)處理系 統(tǒng)中的不同處理器中在不同時(shí)間點(diǎn)起作用)。在運(yùn)用脆弱存儲(chǔ)器模型的數(shù)據(jù)處理系統(tǒng)中,希 望為跨多處理器數(shù)據(jù)處理系統(tǒng)的所有處理器的某些存儲(chǔ)器訪問(wèn)操作強(qiáng)制實(shí)施排序和原子 性。一種用于強(qiáng)制實(shí)施此類操作排序的典型方式在指令序列中利用屏障(同步或者柵欄) 指令。屏障指令強(qiáng)迫在屏障指令的不同側(cè)的加載和存儲(chǔ)指令按順序地跨系統(tǒng)被執(zhí)行并且可 以在特定情形下恢復(fù)存儲(chǔ)指令的原子性。屏障指令的執(zhí)行是脆弱存儲(chǔ)器模型機(jī)器的關(guān)鍵方 面。這樣,希望屏障指令被盡可能高效地執(zhí)行。為了實(shí)現(xiàn)操作排序以及原子性的恢復(fù),屏障 指令等待某些事件發(fā)生以指示在允許屏障指令完成之前在數(shù)據(jù)處理系統(tǒng)中在屏障指令之 前的加載或者存儲(chǔ)指令已進(jìn)展得足夠遠(yuǎn)(例如,已經(jīng)被解決),并且然后允許在屏障指令后 的存儲(chǔ)器訪問(wèn)操作繼續(xù)進(jìn)行。
[0033] 根據(jù)本公開(kāi)內(nèi)容的各種實(shí)施例,屏障指令等待的特定微架構(gòu)事件被增強(qiáng)以允許具 有屏障指令的指令序列被更高效地處理。常規(guī)實(shí)現(xiàn)方式等待數(shù)據(jù)被返回到處理器內(nèi)核以便 指示與數(shù)據(jù)關(guān)聯(lián)的加載指令已被解決。在很多情形中,在釋放屏障之前等待向處理器內(nèi)核 返回加載指令的數(shù)據(jù)強(qiáng)制實(shí)施延遲,該延遲比必須的延遲更長(zhǎng),這樣就減慢了包括加載指 令的指令序列的處理器執(zhí)行。在當(dāng)前的一致性協(xié)議實(shí)現(xiàn)方式中,一致性協(xié)議可以返回組合 響應(yīng)(Cresp)指示,其為在用于加載指令的實(shí)際數(shù)據(jù)被返回到處理器內(nèi)核之前已經(jīng)綁定或 者確定了用于加載指令的值。根據(jù)本公開(kāi)內(nèi)容,在屏障指令之前的加載指令被認(rèn)為在最早 出現(xiàn)用于加載指令的良好Cresp或者用于加載指令的數(shù)據(jù)"回家(home) "(即,返回到進(jìn)行 請(qǐng)求的處理器內(nèi)核)時(shí)被解決,由此允許由屏障指令實(shí)施的屏障被釋放以及跟隨屏障指令 的存儲(chǔ)器訪問(wèn)指令的執(zhí)行繼續(xù)進(jìn)行。在很多情形中,用于加載指令的Cresp在加載數(shù)據(jù)之 前被處理器內(nèi)核接收,這意味著相比于請(qǐng)求數(shù)據(jù)回家以解決在屏障指令之前的之前的實(shí)現(xiàn) 方式,指令序列的處理被加速。
[0034] 如前所述,屏障指令可以被用于強(qiáng)制實(shí)施下面四種情形中的排序:加載到加載、力口 載到存儲(chǔ)、存儲(chǔ)到加載和存儲(chǔ)到存儲(chǔ)。根據(jù)本公開(kāi)內(nèi)容,解決了具有屏障指令的指令系列的 執(zhí)行,該屏障指令對(duì)在屏障指令之前的加載指令排序。應(yīng)當(dāng)領(lǐng)會(huì)到,存儲(chǔ)到存儲(chǔ)排序情形沒(méi) 有數(shù)據(jù)響應(yīng)于在屏障指令之前的存儲(chǔ)操作被返回,這樣未被本公開(kāi)內(nèi)容所解決。相似地,因 為在屏障指令之后出現(xiàn)的加載指令通常被推測(cè)為在屏障指令完成之前已被發(fā)起并且如果 情形要求加載指令應(yīng)當(dāng)未在更早時(shí)被執(zhí)行則被重啟,所以存儲(chǔ)到加載排序情形未被影響。
[0035] 根據(jù)本公開(kāi)內(nèi)容,通過(guò)允許在屏障指令之前和跟隨屏障指令的加載指令以任意順 序執(zhí)行實(shí)現(xiàn)了加載到加載排序。然而,在屏障指令之后的加載指令被針對(duì)任何無(wú)效追蹤 (直到屏障指令完成),這些無(wú)效指示由屏障指令之后的加載指令引用的地址已經(jīng)改變了 其值。當(dāng)前,當(dāng)在屏障指令之前的更舊加載指令已經(jīng)接收到它們的數(shù)據(jù)并且同步確認(rèn)(SYNC ACK)已經(jīng)從存儲(chǔ)子系統(tǒng)中被接收到時(shí)(指示在屏障指令之前的存儲(chǔ)指令已經(jīng)被關(guān)于所有 處理器執(zhí)行),屏障指令可以完成(并且因此對(duì)跟隨屏障指令的更加新的加載指令的追蹤 可以停止)。同樣地,在當(dāng)前實(shí)現(xiàn)方式中,在屏障指令之后出現(xiàn)的存儲(chǔ)指令被延遲,直到屏障 指令完成。因?yàn)檫@些更加新的存儲(chǔ)指令改變系統(tǒng)狀態(tài),所以這些更加新的存儲(chǔ)指令不像那 些更加新的加載指令那樣,不能夠被啟動(dòng),直到屏障指令完成。
[0036] 根據(jù)本公開(kāi)內(nèi)容,代替在先前的加載指令上等待數(shù)據(jù)回家,處理器內(nèi)核在良好 Cresp出現(xiàn)時(shí)(良好Cresp指示將被返回的用于更舊的加載指令的值已經(jīng)被綁定到更舊的 加載指令)或者在數(shù)據(jù)返回時(shí)考慮被解決的該更舊的加載指令。在讀取主張(RC)機(jī)器接 收到用于讀操作的良好Cresp時(shí),RC機(jī)器向處理器內(nèi)核發(fā)送指示(例如,在重載總線上) 以指示良好Cresp已經(jīng)針對(duì)給定的加載指令而出現(xiàn)。處理器內(nèi)核然后使用該Cresp以及現(xiàn) 存的用于監(jiān)測(cè)所請(qǐng)求的數(shù)據(jù)的返回的機(jī)制以釋放屏障指令對(duì)于加載指令的依賴性。在某些 情形中,在用于加載指令的數(shù)據(jù)被返回之前,用于加載指令的Cresp可以出現(xiàn)幾百個(gè)處理 器周期。當(dāng)Cresp在數(shù)據(jù)之前被返回時(shí),在Cresp被接收的點(diǎn)處,通過(guò)釋放(對(duì)于加載指令 的)屏障指令依賴性改善處理器性能。
[0037] 根據(jù)本發(fā)明的各種實(shí)施例,在Cresp的點(diǎn)處關(guān)于數(shù)據(jù)處理系統(tǒng)中的所有處理器解 決加載指令(因?yàn)楫?dāng)Cresp被返回時(shí)加載指令所返回的值被綁定)這一事實(shí)被用來(lái)加速指 令序列的處理。例如,在用于加載指令的Cresp在用于加載指令的數(shù)據(jù)被處理器內(nèi)核所接 收之前被處理器內(nèi)核所接收時(shí),跟隨在屏障指令之后的加載指令的指令可以在用于加載指 令的數(shù)據(jù)到達(dá)處理器內(nèi)核處之前開(kāi)始執(zhí)行。
[0038] 現(xiàn)在參照附圖并且特別地參照?qǐng)D1,其圖示了依據(jù)本公開(kāi)內(nèi)容的處理單元100的 示例性實(shí)施例的高級(jí)框圖。在所描繪的實(shí)施例中,處理單元100是單個(gè)集成電路,其包括兩 個(gè)用于獨(dú)立地處理指令和數(shù)據(jù)的處理器內(nèi)核102a和102b。每個(gè)處理器內(nèi)核102包括用于 取讀和排序指令以用于執(zhí)行的指令排序單元(ISU) 104以及用于執(zhí)行指令的一個(gè)或者多個(gè) 執(zhí)行單元106。由執(zhí)行單元106所執(zhí)行的指令可以包括例如定點(diǎn)和浮點(diǎn)運(yùn)算指令、邏輯指令 和請(qǐng)求對(duì)存儲(chǔ)器塊的讀和寫(xiě)訪問(wèn)的指令。例如,執(zhí)行單元106可以包括一個(gè)或者多個(gè)浮點(diǎn) 單元(FPU),一個(gè)或者多個(gè)加載-存儲(chǔ)單元(LSU)和一個(gè)或者多個(gè)整數(shù)單元(IU)。
[0039] 每個(gè)處理器內(nèi)核102a、102b的操作由多級(jí)易失性存儲(chǔ)器層級(jí)支持,該多級(jí)易失性 存儲(chǔ)器層級(jí)在其最低級(jí)具有一個(gè)或者多個(gè)共享系統(tǒng)存儲(chǔ)器132(僅其中的一個(gè)在圖1中被 示出),以及在其更高級(jí)具有一個(gè)或者多個(gè)級(jí)別的高速緩沖存儲(chǔ)器。如所描繪的,處理單元 100包括集成存儲(chǔ)器控制器(MC) 124,其響應(yīng)于從處理器內(nèi)核102a、102b所接收的請(qǐng)求以 及由探聽(tīng)器126在互連結(jié)構(gòu)(以下描述)中所探聽(tīng)的操作控制對(duì)系統(tǒng)存儲(chǔ)器132的讀和寫(xiě) 訪問(wèn)。
[0040] 在所圖示的實(shí)施例中,處理單元100的高速緩沖存儲(chǔ)器層級(jí)包括在每個(gè)處理器內(nèi) 核102a、102b內(nèi)的全存儲(chǔ)層1(L1)高速緩存108以及由處理單元100的所有處理器內(nèi)核 102a、102b共享的層2 (L2)高速緩存110。L2高速緩存110包括L2陣列和目錄114、主機(jī) (master) 112和探聽(tīng)器116并且可以被配置在多個(gè)片中。主機(jī)112在互連結(jié)構(gòu)上發(fā)起事務(wù) 并且響應(yīng)于從關(guān)聯(lián)的處理器內(nèi)核102a和102b所接收的存儲(chǔ)器訪問(wèn)(以及其他)請(qǐng)求訪問(wèn) L2陣列和目錄114。探聽(tīng)器116檢測(cè)互連結(jié)構(gòu)上的操作、提供適當(dāng)響應(yīng)并且執(zhí)行操作所需 要的對(duì)L2陣列和目錄114的訪問(wèn)。雖然所圖示的高速緩存層級(jí)包括僅兩個(gè)緩存級(jí)別,但本 領(lǐng)域技術(shù)人員將領(lǐng)會(huì)到備選實(shí)施例可以包括片上或者片外的內(nèi)置或者旁視的高速緩存的 其他級(jí)別(層3(L3)、層4(L4)等),其可以完全包含、部分包含、或者不包含更高層高速緩 存中的內(nèi)容。
[0041] 如圖1中進(jìn)一步所示,處理單元100包括集成互連邏輯120,處理單元100可以通 過(guò)集成互連邏輯120耦接到互連結(jié)構(gòu)作為更大的數(shù)據(jù)處理系統(tǒng)的一部分。在所描繪的實(shí)施 例中,互連邏輯120支持任意數(shù)目tl的"第一層"互連鏈接,在這種情形中互連鏈接包括入 站和出站'X','Y'和'Z'鏈接?;ミB邏輯120還支持如在圖1中被設(shè)計(jì)為入站和出站'A' 和'B'鏈接的任意數(shù)目t2第二層鏈接的。利用這些第一和第二層鏈接,每個(gè)處理單元100 可以被耦接用于到上至tl/2+t2/2 (在這個(gè)情形中是5)個(gè)其他處理單元100的雙向通信。 互連邏輯120包括請(qǐng)求邏輯121a (被標(biāo)記為'R')、部分響應(yīng)邏輯121b (被標(biāo)記為'P')、組 合響應(yīng)邏輯121c (被標(biāo)記為'C')以及數(shù)據(jù)邏輯121d(被標(biāo)記為'D')以用于在不同操作 階段處理和轉(zhuǎn)發(fā)信息。此外,互連邏輯120包括配置寄存器123 (被標(biāo)記為'CR'),其包括 用于配置處理單元100的多個(gè)模式比特。這些模式比特優(yōu)選地包括:(1) 一個(gè)或者多個(gè)模 式比特的第一集合,其選擇用于第一和第二層鏈接的希望的鏈接信息分配;(2)模式比特 的第二集合,其指定處理單元100的第一和第二層鏈接中哪個(gè)連接到其他處理單元100 ;以 及(3)模式比特的第三集合,其確定保護(hù)窗延伸的可編程持續(xù)時(shí)間。
[0042] 每個(gè)處理單元100還包括響應(yīng)邏輯122的實(shí)例,其實(shí)施分布式相干性信號(hào)傳輸機(jī) 制的一部分,該分布式相干性信號(hào)傳輸機(jī)制維持在處理單元100的高速緩存層級(jí)和其他處 理單元100的高速緩存層級(jí)之間的高速緩存相干性。最后,每個(gè)處理單元100包括集成1/ 〇(輸入/輸出)控制器128,其支持附接一個(gè)或者多個(gè)I/O設(shè)備,比如I/O設(shè)備130。I/O 控制器128可以響應(yīng)于I/O設(shè)備130的請(qǐng)求在'X','Y','Z','A'和'B'鏈接上發(fā)布操 作以及接收數(shù)據(jù)。
[0043] 現(xiàn)在參照?qǐng)D2,其描繪了根據(jù)本公開(kāi)內(nèi)容的由多個(gè)處理單元100形成的數(shù)據(jù) 處理系統(tǒng)200的示例的實(shí)施例的框圖。如所示,數(shù)據(jù)處理系統(tǒng)200包括八個(gè)處理節(jié)點(diǎn) 202a0-202d0以及202al-202dl,其各自可以被實(shí)現(xiàn)為包括包含四個(gè)處理單元100的打包的 多芯片模塊(MCM)。如所示,通過(guò)處理單元的'X','Y','Z'鏈接,在每個(gè)處理節(jié)點(diǎn)202 內(nèi)的處理單元100被耦接用于點(diǎn)到點(diǎn)通信。每個(gè)處理單元100可以進(jìn)一步通過(guò)處理單元的 'A','B'鏈接被耦接到兩個(gè)不同的處理節(jié)點(diǎn)202中的處理單元100以用于點(diǎn)到點(diǎn)通信。雖 然在圖2中圖示了雙向箭頭,但應(yīng)當(dāng)理解,每對(duì)'X','Y','Z','A'和'B'鏈接優(yōu)選地 (但不是必需地)被實(shí)施為兩個(gè)單向鏈接而不是雙向鏈接。
[0044] 用于形成圖2中所示的拓?fù)涞耐ㄓ帽磉_(dá)可以被如下給出:
[0045] 節(jié)點(diǎn)[I] [K].芯片[J].鏈接[K]連接到節(jié)點(diǎn)[J] [K].芯片[I].鏈接[K],對(duì)于 所有I關(guān)J的情形;and
[0046] 節(jié)點(diǎn)[I] [K].芯片[J].鏈接[K]連接到節(jié)點(diǎn)[I] [NOT K].芯片[I].鏈接[NOT K] ;AND
[0047] 節(jié)點(diǎn)[I] [K].芯片[I].鏈接[NOT K]連接到:
[0048] 空,保留用于將來(lái)的擴(kuò)展;OR
[0049] 節(jié)點(diǎn)[額外][非K].芯片[I].鏈接[K],在所有的鏈接都被完全利用時(shí)(即,9 個(gè)8-路節(jié)點(diǎn)形成了 72路系統(tǒng));AND
[0050] 其中I和J屬于集合{a, b, c, d}AND K屬于集合{0, 1}。
[0051] 當(dāng)然,備選表達(dá)可以被定義為形成其他的功能上等同的拓?fù)?。而且,?yīng)當(dāng)領(lǐng)會(huì)到, 所描繪的拓?fù)涫谴硇缘亩皇歉F盡體現(xiàn)了本發(fā)明的數(shù)據(jù)處理系統(tǒng)拓?fù)洌⑶移渌負(fù)涫?可能的。在此類備選拓?fù)渲?,例如,耦接到每個(gè)處理單元100的第一層和第二層鏈接的數(shù)目 可以是任意數(shù)目,并且在每層內(nèi)的處理節(jié)點(diǎn)202的數(shù)目(即,I)不需要等于每個(gè)處理節(jié)點(diǎn) 100的處理單元100的數(shù)目(即,J)。
[0052] 本領(lǐng)域技術(shù)人員將領(lǐng)會(huì)到,SMP數(shù)據(jù)處理系統(tǒng)100可以包括許多附加的未圖示的 組件,比如互連網(wǎng)橋、非易失性存儲(chǔ)器、用于到網(wǎng)絡(luò)的連接的端口或者附接的設(shè)備等。因?yàn)?此類附加組件對(duì)于理解本發(fā)明不是必需的,所以這里沒(méi)有在圖2中圖示或者討論它們。
[0053] 現(xiàn)在參照?qǐng)D3,其描繪了圖2的數(shù)據(jù)處理系統(tǒng)200的互連結(jié)構(gòu)上的示例性操作的時(shí) 間-空間示圖。當(dāng)主機(jī)300 (例如,L2高速緩存110的主機(jī)112或者I/O控制器128內(nèi)的 主機(jī))在互連結(jié)構(gòu)上發(fā)布請(qǐng)求302時(shí),操作開(kāi)始。請(qǐng)求302優(yōu)選地至少包括指示希望的訪 問(wèn)的類型的事務(wù)類型以及指示請(qǐng)求將要訪問(wèn)的資源的資源標(biāo)識(shí)符(例如,真實(shí)地址)。請(qǐng)求 的普通類型包括以下在表I中所闡明的內(nèi)容。
[0054] 表 I
[0055] 請(qǐng)求 描述 READ 請(qǐng)求用于查詢目的的存儲(chǔ)器塊的鏡像的副 本 RW1TM(具有修改目的請(qǐng)求存儲(chǔ)器塊的鏡像的唯一副本并且具有 的讀) 更新(修改)它的意圖并且如果有的話則請(qǐng) 求銷毀其他副本 DCLAIM (數(shù)據(jù)主張)請(qǐng)求授權(quán)以將存儲(chǔ)器塊的現(xiàn)存的僅可查詢 副本提升為唯一副本且具有更新(修改)它 的意圖并且如果有的話則請(qǐng)求銷毀其他副 本 DCBZ (數(shù)據(jù)高速緩存請(qǐng)求授權(quán)以創(chuàng)建存儲(chǔ)器塊的新的唯一副本 緩存塊清零) 而不考慮其當(dāng)前的狀態(tài)并且隨后修改其內(nèi) 容;如果有的話則請(qǐng)求銷毀其他副本 CASTOUT 從存儲(chǔ)器的更高層向存儲(chǔ)器的更低層復(fù)制
[0056] 存儲(chǔ)態(tài)塊的鏡像 WRITE 請(qǐng)求授權(quán)以創(chuàng)建存儲(chǔ)器塊的新的唯一副本 而不考慮其當(dāng)前狀態(tài)井且立即從更咼層存 儲(chǔ)器向更低層存儲(chǔ)器復(fù)制存儲(chǔ)器塊的鏡像 PARTIAL WRITE 請(qǐng)求授權(quán)以創(chuàng)建部分存儲(chǔ)器塊的新的唯一 副本而不考慮其當(dāng)前狀態(tài)并且在準(zhǔn)備銷毀 更高層的副本時(shí)立即從更高層存儲(chǔ)器向更 低層存儲(chǔ)器復(fù)制部分存儲(chǔ)器塊的鏡像
[0057] 關(guān)于這些操作的進(jìn)一步細(xì)節(jié)以及有助于高效處理這些操作的示例性高速緩存相 干性協(xié)議可以在美國(guó)專利No. 7, 774, 555中被找到。
[0058] 請(qǐng)求302被探聽(tīng)器304接收,探聽(tīng)器304例如是遍布數(shù)據(jù)處理系統(tǒng)200分布的L2 高速緩存110的探聽(tīng)器116和頂C 124的探聽(tīng)器126。通常,在有一些例外的情況下,因?yàn)?僅在請(qǐng)求302無(wú)法被處理單元100在內(nèi)部服務(wù)時(shí)請(qǐng)求302在互連結(jié)構(gòu)上被傳輸,所以在與 請(qǐng)求302的主機(jī)112相同的L2高速緩存110中的探聽(tīng)器116不探聽(tīng)請(qǐng)求302 (即,通常沒(méi) 有自探聽(tīng))。接收和處理請(qǐng)求302的探聽(tīng)器304各自提供相應(yīng)的部分響應(yīng)306,該部分響應(yīng) 306代表至少該探聽(tīng)器304對(duì)請(qǐng)求302的響應(yīng)。在頂C 124內(nèi)的探聽(tīng)器126基于例如探聽(tīng) 器126是否對(duì)請(qǐng)求地址負(fù)責(zé)確定要提供的部分響應(yīng)306,以及是否有可用于服務(wù)于的資源。 L2高速緩存110的探聽(tīng)器116可以基于例如它的L2高速緩存目錄114的可用性、探聽(tīng)器 116內(nèi)的用于處理請(qǐng)求的探聽(tīng)邏輯實(shí)例的可用性以及與L2高速緩存目錄114中的請(qǐng)求地址 關(guān)聯(lián)的相干性狀態(tài)確定它的部分響應(yīng)306。
[0059] 探聽(tīng)器304的部分響應(yīng)306在邏輯上要么被有階段性地組合要么一次性地通過(guò)響 應(yīng)邏輯122的一個(gè)或者多個(gè)實(shí)例而被組合,以確定對(duì)于請(qǐng)求302的系統(tǒng)范圍中的組合響應(yīng) (Cresp)310。在一個(gè)實(shí)施例中,在以下中假設(shè),響應(yīng)于生成Cresp 310的響應(yīng)邏輯122的實(shí) 例被定位在處理單元100中,該處理單元100包含有發(fā)布了請(qǐng)求302的主機(jī)300。響應(yīng)邏輯 122經(jīng)由互連結(jié)構(gòu)向主機(jī)300和探聽(tīng)器304提供Cresp 310,以指示對(duì)于請(qǐng)求302的系統(tǒng)范 圍的響應(yīng)(例如,成功、失敗、再試等)。如果Cresp 310指示請(qǐng)求302的成功,則Cresp310 可以指示例如用于被請(qǐng)求的存儲(chǔ)器塊的數(shù)據(jù)源、主機(jī)300將按照其高速緩存被請(qǐng)求的存儲(chǔ) 器塊的高速緩存狀態(tài)以及使得在一個(gè)或者多個(gè)L2高速緩存110中的所請(qǐng)求的存儲(chǔ)器塊無(wú) 效的'清除'操作是否是需要的。
[0060] 響應(yīng)于接收到Cresp 310, 一個(gè)或者多個(gè)主機(jī)300以及探聽(tīng)器304典型地執(zhí)行一 個(gè)或者多個(gè)操作以便服務(wù)于請(qǐng)求302。這些操作可以包括向主機(jī)300供應(yīng)數(shù)據(jù),無(wú)效或者 以其他方式更新高速緩存在一個(gè)或者多個(gè)L2高速緩存110中的數(shù)據(jù)的相干性狀態(tài)、執(zhí)行 castout操作、向系統(tǒng)存儲(chǔ)器132寫(xiě)回?cái)?shù)據(jù)等。如果請(qǐng)求302需要,則可以在由響應(yīng)邏輯122 生成Cresp 310之前或者之后,向主機(jī)300或者從主機(jī)300傳輸被請(qǐng)求的存儲(chǔ)器塊或者目 標(biāo)存儲(chǔ)器塊。
[0061] 在以下描述中,將參照探聽(tīng)器是相干性的最高點(diǎn)(HPC)、相干性的最低點(diǎn)(LPC)或 者均無(wú)關(guān)于由請(qǐng)求指定的請(qǐng)求地址來(lái)描述探聽(tīng)器304的對(duì)于請(qǐng)求302的部分響應(yīng)306,以 及由探聽(tīng)器304響應(yīng)于請(qǐng)求302所執(zhí)行的操作和/或它的組合響應(yīng)310。這里,LPC被定義 為存儲(chǔ)器設(shè)備或者作為用于存儲(chǔ)器塊的存儲(chǔ)庫(kù)的I/O設(shè)備。在不存在用于存儲(chǔ)器塊的HPC 時(shí),LPC保持存儲(chǔ)器塊的真實(shí)鏡像并有權(quán)允許或者否決用于生成存儲(chǔ)器塊的附加的高速緩 存的副本的請(qǐng)求。對(duì)于在圖1和圖2的數(shù)據(jù)處理系統(tǒng)實(shí)施例中的典型請(qǐng)求,LPC將是用于 系統(tǒng)存儲(chǔ)器132的存儲(chǔ)器控制器124,其保持有被引用的存儲(chǔ)器塊。這里,HPC被定義為被 唯一標(biāo)識(shí)的設(shè)備,其高速緩存有存儲(chǔ)器塊的真實(shí)鏡像(其可以或者可以不與LPC處的對(duì)應(yīng) 的存儲(chǔ)器塊相一致)并有有權(quán)允許或者否決用于修改存儲(chǔ)器塊的請(qǐng)求。描述性地,HPC也 可以響應(yīng)于并不修改存儲(chǔ)器塊的操作而向請(qǐng)求方提供存儲(chǔ)器塊的副本。因此,對(duì)于圖1和 圖2的數(shù)據(jù)處理系統(tǒng)實(shí)施例中的典型的請(qǐng)求,如果有的話,HPC將是L2高速緩存110。雖然 其他指示符也可以被用來(lái)指明用于存儲(chǔ)器塊的HPC,但本發(fā)明的優(yōu)選實(shí)施例如果有的話指 明用于存儲(chǔ)器塊的HPC,該存儲(chǔ)器塊利用L2高速緩存110的L2高速緩存目錄114內(nèi)的選定 的高速緩存相干性狀態(tài)。
[0062] 仍然參考圖3,如果有的話,在請(qǐng)求302中被引用的用于存儲(chǔ)器塊的HPC,或者在沒(méi) 有HPC時(shí)存儲(chǔ)器塊的LPC,優(yōu)選地如果必須的話,則在對(duì)請(qǐng)求302的響應(yīng)中有責(zé)任保護(hù)存儲(chǔ) 器塊的所有權(quán)的轉(zhuǎn)移。在圖3中所示的示例性場(chǎng)景中,在用于由請(qǐng)求302的請(qǐng)求地址指定 的存儲(chǔ)器塊的HPC處(或者在沒(méi)有HPC時(shí),LPC)的探聽(tīng)器304η,在保護(hù)窗312a期間和隨后 的窗延伸312b期間,保護(hù)被請(qǐng)求的存儲(chǔ)器塊的所有權(quán)向主機(jī)300的轉(zhuǎn)移,其中保護(hù)窗312a 是從探聽(tīng)器304η確定其部分響應(yīng)的時(shí)間延伸直到探聽(tīng)器304η接收Cresp 310,其中隨后的 窗延伸312b延伸超過(guò)由探聽(tīng)器304η接收到Cresp 310后的可編程時(shí)間。在保護(hù)窗312a和 窗延伸312b期間,探聽(tīng)器304η通過(guò)提供部分響應(yīng)到其他的請(qǐng)求保護(hù)所有權(quán)的轉(zhuǎn)移直到所 有權(quán)被成功地轉(zhuǎn)移到主機(jī)300,其中其他請(qǐng)求指定相同的請(qǐng)求地址,其防止其他主機(jī)獲取所 有權(quán)(例如,再試部分響應(yīng))。同樣地,跟隨接收到組合響應(yīng)310,主機(jī)300發(fā)起保護(hù)窗313 以保護(hù)在請(qǐng)求302中所請(qǐng)求的其自己的存儲(chǔ)器塊的所有權(quán)。
[0063] 因?yàn)樘铰?tīng)器304都具有用于處理前述的CPU和I/O請(qǐng)求的有限資源,所以各種不 同層級(jí)的部分響應(yīng)和對(duì)應(yīng)的Cresp是可能的。例如,如果在負(fù)責(zé)被請(qǐng)求的存儲(chǔ)器塊的存儲(chǔ) 控制器124內(nèi)的探聽(tīng)器126具有可用于處理請(qǐng)求的隊(duì)列,則探聽(tīng)器126可以用部分響應(yīng)做 出響應(yīng),該部分響應(yīng)指示探聽(tīng)器可以充當(dāng)用于請(qǐng)求的LPC。在另一方面,如果探聽(tīng)器126沒(méi) 有可用于處理請(qǐng)求的隊(duì)列,則探聽(tīng)器126可以用部分響應(yīng)做出響應(yīng),該部分響應(yīng)指示探聽(tīng) 器126是用于存儲(chǔ)器塊的LPC但是其當(dāng)前不能服務(wù)于該請(qǐng)求。相似地,在L2高速緩存110 中的探聽(tīng)器116可以要求探聽(tīng)邏輯的可用實(shí)例以及對(duì)L2高速緩存目錄114的訪問(wèn)以便處 理請(qǐng)求。在不能訪問(wèn)這些資源中的一個(gè)(或者兩個(gè))時(shí)導(dǎo)致部分響應(yīng)(以及對(duì)應(yīng)的Cresp), 該部分響應(yīng)信號(hào)通知由于缺少所需的資源而不能服務(wù)于該請(qǐng)求。
[0064] 如在圖3中進(jìn)一步圖示的,在主機(jī)300從響邏輯122接收到Cresp (用于加載指 令)之前或者之后,探聽(tīng)器304η可以返回?cái)?shù)據(jù)(用于在指令序列中的屏障指令之前的加載 指令)到主機(jī)300(即,L2高速緩存110的主機(jī)112)。根據(jù)本公開(kāi)內(nèi)容,在當(dāng)探聽(tīng)器304η 返回?cái)?shù)據(jù)之前主機(jī)300從響應(yīng)邏輯122接收Cresp的情況下,主機(jī)300返回Cresp到處理 器內(nèi)核102,處理器內(nèi)核102轉(zhuǎn)而解決加載指令并可以允許屏障指令去解決和加載和保存 在所述屏障指令之后的指令,以在屏障指令之后的指令的執(zhí)行還沒(méi)有被發(fā)起的時(shí)候開(kāi)始執(zhí) 行。在所述屏障指令之后的加載指令的執(zhí)行已經(jīng)被處理器102在接收到Cresp或者數(shù)據(jù)之 前發(fā)起的情況下,處理器內(nèi)核102中斷使用無(wú)效追蹤邏輯以用于執(zhí)行如下加載指令,這些 加載指令是在指令序列中的屏障指令之后的。
[0065] 現(xiàn)在參照?qǐng)D4,其圖示了圖2的數(shù)據(jù)處理系統(tǒng)200中的示例性的操作流程的時(shí) 間-空間示圖。在這些圖中,數(shù)據(jù)處理系統(tǒng)200內(nèi)的各種處理單元100被標(biāo)記有兩個(gè)位置標(biāo) 識(shí)符-第一個(gè)標(biāo)識(shí)處理單元100所屬于的處理節(jié)點(diǎn)202并且第二個(gè)標(biāo)識(shí)處理節(jié)點(diǎn)202內(nèi)的 特定處理單元100。因此,例如,處理單元100a0c指的是處理節(jié)點(diǎn)202a0的處理單元100c。 此外,每個(gè)處理單元100被標(biāo)記有功能標(biāo)識(shí)符,該功能標(biāo)識(shí)符指示其相對(duì)于參與操作的其 他的處理單元100的功能。這些功能標(biāo)識(shí)符包括:(1)本地主機(jī)(LM),其指明發(fā)源操作的處 理單元100 ; (2)本地集線器(LH),其指明如下處理單元100,該處理單元與本地主機(jī)一樣在 同一個(gè)處理節(jié)點(diǎn)202中并且負(fù)責(zé)闡述操作到另一處理節(jié)點(diǎn)202 (本地主機(jī)也可以是本地集 線器);(3)遠(yuǎn)程集線器(RH),其指明如下處理單元100,該處理單元在與本地主機(jī)不同的處 理節(jié)點(diǎn)202中并且負(fù)責(zé)分發(fā)操作到它的處理節(jié)點(diǎn)202中的其他處理單元100 ;以及(4)遠(yuǎn) 程葉(RL),其指明如下處理單元100,該處理單元在不同于本地主機(jī)的處理節(jié)點(diǎn)202中而且 該處理單元不是遠(yuǎn)程集線器。
[0066] 如圖4中所示,示例性操作具有如以上參照?qǐng)D3所描述的至少3個(gè)階段,即請(qǐng)求 (或者地址)階段、部分響應(yīng)(Presp)階段和組合響應(yīng)(Cresp)階段。這3個(gè)階段優(yōu)選地以 前述的順序出現(xiàn)并且不重疊。操作可以附加地具有數(shù)據(jù)階段,其可以可選地與請(qǐng)求、部分響 應(yīng)和組合響應(yīng)階段中的任何階段重疊。
[0067] 仍然參照?qǐng)D4,當(dāng)本地主機(jī)lOOaOc (即,處理節(jié)點(diǎn)202a0的處理單元100c)執(zhí)行請(qǐng) 求(例如,讀請(qǐng)求)的同步廣播到它的處理節(jié)點(diǎn)202a0內(nèi)的本地集線器100a0a、100a0b、 100a0c和100a0d中的每個(gè)本地集線器時(shí),請(qǐng)求階段開(kāi)始。應(yīng)當(dāng)注意,本地集線器的列表 包括本地集線器100a0c,其也是本地主機(jī)。這一內(nèi)部傳輸可以被有利地用于本地集線器 100a0c的操作與本地集線器100a0a、100a0b和100a0d的同步以使得時(shí)序約束可以被更容 易地滿足。
[0068] 響應(yīng)于接收到請(qǐng)求,通過(guò)它的'A'或者'B'連接被耦接到遠(yuǎn)程集線器100的每個(gè)本 地集線器1〇〇傳輸操作到它的遠(yuǎn)程集線器1〇〇。因此,本地集線器100a0a在它的出站'A' 鏈接上不進(jìn)行操作的傳輸,而是經(jīng)由它的出站'B'鏈接傳輸操作到處理節(jié)點(diǎn)202al內(nèi)的遠(yuǎn) 程集線器。本地集線器100a0b、100a0c和100a0d經(jīng)由它們的相應(yīng)的出站'A'和'B'連接 分別傳輸操作到處理節(jié)點(diǎn)202b0和處理節(jié)點(diǎn)202bl、處理節(jié)點(diǎn)202c0和處理節(jié)點(diǎn)202cl以及 處理節(jié)點(diǎn)202d0和處理節(jié)點(diǎn)202dl中的遠(yuǎn)程集線器。接收到操作的每個(gè)遠(yuǎn)程集線器100轉(zhuǎn) 而傳輸操作到它的處理節(jié)點(diǎn)202中的每個(gè)遠(yuǎn)程葉100。因此,例如,遠(yuǎn)程集線器100b0a傳輸 操作到遠(yuǎn)程葉100b0b、100b0c和100b0d。以這種方式,操作被高效地廣播到數(shù)據(jù)處理系統(tǒng) 200內(nèi)的所有處理單元100,這種傳輸利用不超過(guò)3個(gè)鏈接。
[0069] 在請(qǐng)求階段之后,是部分響應(yīng)(Presp)階段出現(xiàn)。在部分響應(yīng)階段中,每個(gè)遠(yuǎn)程葉 100評(píng)估操作并提供它的部分的響應(yīng)到對(duì)它的相應(yīng)的遠(yuǎn)程集線器100的操作。例如,遠(yuǎn)程葉 100b0b、100b0c和100b0d傳輸它們的相應(yīng)的部分響應(yīng)到遠(yuǎn)程集線器100b0a。每個(gè)遠(yuǎn)程集 線器100轉(zhuǎn)而傳輸這些部分響應(yīng)以及它們自己的部分響應(yīng)到本地集線器100a0a、100a0b、 100a0c和100a0d中的相應(yīng)的本地集線器。本地集線器100a0a、100a0b、100a0c和100a0d 然后廣播這些部分響應(yīng)以及它們自己的部分響應(yīng)到處理節(jié)點(diǎn)202a0中的每個(gè)本地集線器 100。應(yīng)當(dāng)注意,處理節(jié)點(diǎn)202a0中的本地集線器100所響應(yīng)的部分響應(yīng)的廣播出于時(shí)序原 因包括由每個(gè)本地集線器100所進(jìn)行的其自己的部分響應(yīng)的自廣播。
[0070] 如將領(lǐng)會(huì)到的那樣,按照示出的方式的部分響應(yīng)的收集可以按照多種不同方式被 實(shí)施。例如,有可能將個(gè)別部分響應(yīng)從每個(gè)其他本地集線器、遠(yuǎn)程集線器和遠(yuǎn)程葉傳送回每 個(gè)本地集線器。備選地,為了更高的效率,可能希望在部分響應(yīng)被傳送回本地集線器時(shí)積累 這些部分響應(yīng)。為了確保每個(gè)部分響應(yīng)的效果被精確地傳送回本地集線器100,優(yōu)選地是如 果真要進(jìn)行的話則以非破壞性的方式積累部分響應(yīng),例如,使用邏輯0R函數(shù)以及在受制于 這個(gè)函數(shù)時(shí)使用其中未丟失相關(guān)信息的編碼(例如,"獨(dú)熱(one-hot)"編碼)。
[0071] 如圖4中進(jìn)一步所示的,在處理節(jié)點(diǎn)202a0內(nèi)的每個(gè)本地集線器100的響應(yīng)邏輯 122編譯其他處理單元100的部分響應(yīng)以獲取到組合響應(yīng),該組合響應(yīng)代表對(duì)于該請(qǐng)求的 系統(tǒng)范圍的響應(yīng)。本地集線器100a0a-100a0d然后遵循針對(duì)請(qǐng)求階段所運(yùn)用的相同的分發(fā) 路徑廣播組合響應(yīng)到所有處理單元1〇〇。因此,組合響應(yīng)首先被廣播到遠(yuǎn)程集線器1〇〇,遠(yuǎn) 程集線器100轉(zhuǎn)而傳輸組合響應(yīng)到它們的相應(yīng)的處理節(jié)點(diǎn)202內(nèi)的每個(gè)遠(yuǎn)程葉100。例如, 本地集線器100a0b傳輸組合響應(yīng)到遠(yuǎn)程集線器100b0a,遠(yuǎn)程集線器100b0a轉(zhuǎn)而傳輸組合 響應(yīng)到遠(yuǎn)程葉100b0b、100b0c和100b0d。
[0072] 如前所述,服務(wù)于操作可能需要附加的數(shù)據(jù)階段。例如,如果操作是讀類型操作 (比如讀或者RWITM操作),則遠(yuǎn)程葉100b0b可以經(jīng)由連接遠(yuǎn)程葉100b0d到遠(yuǎn)程集線器 100b0a的鏈接、連接遠(yuǎn)程集線器100b0a到本地集線器100a0b的鏈接和連接本地集線器 100a0b到本地主機(jī)100a0c的鏈接,尋求到本地主機(jī)100a0c的被請(qǐng)求的存儲(chǔ)器塊的來(lái)源。 相反地,如果操作是寫(xiě)類型操作(例如,高速緩存castout操作,其將修改的存儲(chǔ)器塊寫(xiě)回 遠(yuǎn)程葉100b0b的系統(tǒng)存儲(chǔ)器132),則存儲(chǔ)器塊經(jīng)由連接本地主機(jī)lOOaOc到本地集線器 100a0b的鏈接、連接本地集線器100a0b到遠(yuǎn)程集線器100b0a的鏈接和連接遠(yuǎn)程集線器 100b0a到遠(yuǎn)程葉100b0b的鏈接被傳輸。
[0073] 當(dāng)然,在圖4中描繪的場(chǎng)景僅僅是無(wú)數(shù)可能的操作中的一個(gè)示例,其可能會(huì)同時(shí) 地出現(xiàn)在多處理器數(shù)據(jù)處理系統(tǒng)(比如數(shù)據(jù)處理系統(tǒng)200)中。
[0074] 如以上參照?qǐng)D3所描述的,在存儲(chǔ)器塊的相干性所有權(quán)從探聽(tīng)器304η被"轉(zhuǎn)送 (handoff) "到請(qǐng)求主機(jī)300期間相干性被維持,其中在上述轉(zhuǎn)送時(shí)可能有其他主機(jī)通過(guò)保 護(hù)窗312a、窗延伸312b和保護(hù)窗313在競(jìng)爭(zhēng)相同存儲(chǔ)器塊的所有權(quán)。例如,保護(hù)窗體312a 和窗延伸312b必須一起具有足夠的持續(xù)時(shí)間來(lái)保護(hù)所請(qǐng)求的存儲(chǔ)器塊的相關(guān)性所有權(quán)轉(zhuǎn) 移到獲勝的主機(jī)300 (WM),這時(shí)有競(jìng)爭(zhēng)主機(jī)(CM)在的競(jìng)爭(zhēng)請(qǐng)求。為了確保保護(hù)窗312a和窗 延伸312b具有足夠的持續(xù)時(shí)間來(lái)保護(hù)所請(qǐng)求的存儲(chǔ)器塊的所有權(quán)轉(zhuǎn)移到獲勝的主機(jī)300, 在根據(jù)圖4的處理單元100之間的通信延時(shí)較佳地被限制以使得以下條件被滿足:
[0075] A_lat(CM_S) ^ A_lat(CM_WM)+C_lat(WM_S)+ ε ,
[0076] 其中的A_lat(CM_S)是任何競(jìng)爭(zhēng)主機(jī)(CM)到擁有被請(qǐng)求的存儲(chǔ)器塊的相干性的 探聽(tīng)器304η的地址延時(shí),A_lat(CM_WM)是任何競(jìng)爭(zhēng)主機(jī)(CM)到被探聽(tīng)器304η授予相干性 所有權(quán)的"獲勝"主機(jī)300(WM)的地址延時(shí),C_lat(WM_S)是從組合響應(yīng)被獲勝主機(jī)(WM)300 接收到的時(shí)間起到組合響應(yīng)被擁有被請(qǐng)求的存儲(chǔ)器塊的探聽(tīng)器304η所接收到的時(shí)間止的 組合響應(yīng)延時(shí),并且ε是窗延伸312b的持續(xù)時(shí)間。
[0077] 如果可應(yīng)用于任意拓?fù)涞南到y(tǒng)的前述時(shí)序限制未被滿足,則競(jìng)爭(zhēng)主機(jī)的請(qǐng)求可能 被(1)競(jìng)爭(zhēng)主機(jī)300在競(jìng)爭(zhēng)主機(jī)300具有相干性所有權(quán)以及發(fā)起保護(hù)窗312b之前被接收; (2)探聽(tīng)器304η在保護(hù)窗312a和窗延伸312b結(jié)束之后接收。在此類情形中,獲勝的主機(jī) 300和探聽(tīng)器304η都不將提供部分響應(yīng)給阻止競(jìng)爭(zhēng)主機(jī)獲取存儲(chǔ)器塊的相干性所有權(quán)并 從存儲(chǔ)器讀取非相干數(shù)據(jù)的競(jìng)爭(zhēng)請(qǐng)求。然而,為了避免這種相干性錯(cuò)誤,窗延伸312b可以 被可編程地設(shè)置(例如,通過(guò)合適地設(shè)置配置寄存器(CR) 123)為一個(gè)任意的長(zhǎng)度(ε)以 補(bǔ)償延遲變化或者物理實(shí)施的缺點(diǎn),其中物理實(shí)施可能以其他方式未能滿足必須被滿足以 維持相干性的時(shí)序限制。因此,通過(guò)求解前面的公式中的ε,用于任何實(shí)現(xiàn)方式的窗延伸 312b的理想長(zhǎng)度可以被確定。
[0078] 就前述的時(shí)序約束可進(jìn)行多個(gè)觀察。首先,從競(jìng)爭(zhēng)主機(jī)到擁有的探聽(tīng)器304a的地 址延時(shí)沒(méi)有必須的下界,但是必須具有上界。上界通過(guò)確定給定的最壞情況可達(dá)延時(shí)以及 最大可能的振蕩漂移、耦接處理單元1〇〇的最長(zhǎng)鏈接、積累的位(Stalla)的最大數(shù)目以及 保證的最壞情形吞吐量來(lái)而被設(shè)計(jì)。為了確保上界被觀察到,互連結(jié)構(gòu)必須確保非阻塞行 為。
[0079] 第二,從競(jìng)爭(zhēng)主機(jī)到獲勝主機(jī)300的地址延時(shí)沒(méi)有必需的上界,但是應(yīng)該具有下 界。該下界通過(guò)給定的最好情形可達(dá)延時(shí),以及位缺失、在處理單元1〇〇之間的最短可能鏈 接和給定特定靜態(tài)配置下的最慢振蕩漂移而被確定。
[0080] 雖然對(duì)于給定的操作,獲勝主機(jī)300和競(jìng)爭(zhēng)主機(jī)中的每一個(gè)具有僅一個(gè)時(shí)序界以 用于它的相應(yīng)的請(qǐng)求,但是將領(lǐng)會(huì)到,在操作的過(guò)程期間,任何處理單元100可以是用于一 些操作的獲勝主機(jī)以及用于其他操作的競(jìng)爭(zhēng)(和失敗)主機(jī)。結(jié)果,每個(gè)處理單元100高 效地具有用于它的地址延時(shí)的上界和下界。
[0081] 第三,從組合響應(yīng)被生成的時(shí)間到組合響應(yīng)被獲勝的主機(jī)300觀察到的時(shí)間的組 合響應(yīng)延時(shí)沒(méi)有必需的下界(組合響應(yīng)可以在任意早的時(shí)間到達(dá)獲勝主機(jī)300),但是必須 具有上界。相比之下,從組合響應(yīng)被生成的時(shí)間直到組合響應(yīng)被探聽(tīng)器304η接收到的時(shí)間 的組合響應(yīng)延時(shí)具有下界,但是沒(méi)有必需的上界(雖然可以任意地向飛速并行操作的數(shù)目 強(qiáng)加限制)。
[0082] 第四,對(duì)于部分響應(yīng)延時(shí)沒(méi)有約束。也就是說(shuō),因?yàn)樗械囊陨厦杜e的時(shí)序限制的 項(xiàng)與請(qǐng)求/地址延時(shí)以及組合響應(yīng)延時(shí)有關(guān),所以探聽(tīng)器304和競(jìng)爭(zhēng)主機(jī)的對(duì)于獲勝主機(jī) 300的部分響應(yīng)延時(shí)就不具有必需的上界或者下界。
[0083] 連接處理單元100的第一層和第二層鏈接可被以各種方式來(lái)實(shí)施以獲取在圖2中 所描繪的拓?fù)湟詽M足時(shí)序約束。在一個(gè)優(yōu)選實(shí)施例中,每個(gè)入站和出站第一層('X','Υ' 和'Ζ')鏈接以及每個(gè)入站和出站第二層('Α'和'Β')鏈接被實(shí)施為單向的8字節(jié)總線, 該8字節(jié)總線包含多個(gè)不同的虛擬通道或者使用權(quán)以傳送地址、數(shù)據(jù)、控制和相干性信息。
[0084] 為了高效地處理對(duì)于可高速緩存地址的多個(gè)并發(fā)存儲(chǔ)器訪問(wèn),每個(gè)L2高速緩存 110可以被實(shí)施為具有多個(gè)L2高速緩存片,每個(gè)L2高速緩存片處理對(duì)于相應(yīng)的真實(shí)存儲(chǔ)器 地址集合的存儲(chǔ)器訪問(wèn)請(qǐng)求?,F(xiàn)在參照?qǐng)D5,其圖示了根據(jù)本公開(kāi)內(nèi)容的示例性L2高速緩 存片ll〇a的更詳細(xì)的框圖。如圖5中所示,L2高速緩存片110a包括高速緩存陣列502和 高速緩存陣列502的內(nèi)容的目錄508。雖然沒(méi)有被明確地圖示,但是高速緩存陣列502優(yōu)選 地被實(shí)施為具有單個(gè)讀端口和單個(gè)寫(xiě)端口以減少實(shí)施高速緩存陣列502所需要的裸片區(qū) 域。
[0085] 假設(shè)如常規(guī)的那樣高速緩存陣列502和目錄508被設(shè)置為關(guān)聯(lián)的,使用系統(tǒng)存儲(chǔ) (真實(shí))地址內(nèi)的預(yù)定索引比特,系統(tǒng)存儲(chǔ)器132中的存儲(chǔ)器位置被映射到高速緩存陣列 502內(nèi)的特定同余類。存儲(chǔ)在高速緩存陣列502的高速緩存線中的特定存儲(chǔ)器塊被記錄在 高速緩存目錄508中,高速緩存目錄508對(duì)于每個(gè)高速緩存線包含一個(gè)目錄條目。盡管在 圖5中沒(méi)有被明顯地描繪,但是本領(lǐng)域技術(shù)人員將理解,高速緩存目錄508中的每個(gè)目錄條 目包括各種字段,例如,標(biāo)識(shí)在高速緩存陣列502的對(duì)應(yīng)的高速緩存線中保持的存儲(chǔ)器塊 的真實(shí)地址的標(biāo)記字段、指示高速緩存線的相干性狀態(tài)的狀態(tài)字段以及指示在相同同余類 中的關(guān)于其他高速緩存線的用于高速緩存線的替換順序的最近最少使用(LRU)字段。
[0086] L2高速緩存片110a包括多個(gè)(例如,16個(gè))讀取主張(RC)機(jī)器512a_512n以用 于獨(dú)立地和并發(fā)地服務(wù)于從附屬的處理器內(nèi)核102接收的加載(LD)和存儲(chǔ)(ST)請(qǐng)求。至 少一些RC機(jī)器512可以被實(shí)施為更小的特殊用途RC機(jī)器,其能夠處理比所有可能類型的 從附屬的處理器內(nèi)核102處接收的存儲(chǔ)器訪問(wèn)請(qǐng)求更少的類型的存儲(chǔ)器訪問(wèn)請(qǐng)求。一般而 言,以這種方式實(shí)施特殊用途RC機(jī)器實(shí)質(zhì)上減少了在處理單元100中的專用于RC機(jī)器512 的裸片區(qū)域。
[0087] 根據(jù)本公開(kāi)內(nèi)容的一個(gè)方面,RC機(jī)器512還被配置用于經(jīng)由復(fù)用器M5返回用于 到內(nèi)核102加載指令的Cresp (從本地互連514接收),該復(fù)用器M5可以經(jīng)由未圖示的選 擇線由仲裁器505(或者其他邏輯)控制。如圖5中所圖示的,內(nèi)核10還也包括加載-存 儲(chǔ)單元(LSU) 555 (例如,執(zhí)行單元106的一個(gè)),其包括加載再排列隊(duì)列(LRQ) 555a和LRQ 解決邏輯555b。LSU 555的解決邏輯555b被配置用于插入用于加載指令的條目(該加載 指令在指令序列中的屏障指令之如)到LRQ 555a中并且響應(yīng)于確定加載指令被解決來(lái)將 LRQ 555a中的該項(xiàng)目標(biāo)記為已解決。例如,LRQ解決邏輯555b可以通過(guò)斷言條目的一個(gè)或 者多個(gè)比特來(lái)將LRQ 555a中的該條目標(biāo)記為已解決。根據(jù)本公開(kāi)內(nèi)容,當(dāng)處理器內(nèi)核102 接收到用于加載指令的良好Cresp (經(jīng)由復(fù)用器M5來(lái)自L2高速緩存片110a),或者用于加 載指令的數(shù)據(jù)(經(jīng)由復(fù)用器M3來(lái)自L2高速緩存片110a)的時(shí)候,加載指令被解決。
[0088] 為了服務(wù)于源自處理器內(nèi)核102而不是附屬的處理器內(nèi)核102的遠(yuǎn)程存儲(chǔ)器訪問(wèn) 請(qǐng)求,L2高速緩存片110a包括多個(gè)探聽(tīng)機(jī)器51 la-51 lm。每一個(gè)探聽(tīng)器機(jī)器511可以獨(dú)立 地并并且發(fā)地處理從本地互連514被"探聽(tīng)"的遠(yuǎn)程存儲(chǔ)器訪問(wèn)請(qǐng)求。
[0089] 如將被領(lǐng)會(huì)到的,RC機(jī)器512對(duì)于存儲(chǔ)器訪問(wèn)請(qǐng)求的服務(wù)可以要求對(duì)高速緩存陣 列502內(nèi)的存儲(chǔ)器塊的替換或者無(wú)效。相應(yīng)地,L2高速緩存片110包括C0(cast 〇ut)機(jī)器 510,該C0機(jī)器510管理著對(duì)來(lái)自高速緩存陣列502的存儲(chǔ)器塊的移除和回寫(xiě)。
[0090] L2高速緩存片110a的仲裁器505被進(jìn)一步配置用于控制復(fù)用器M1-M2來(lái)對(duì)從附 屬的處理器內(nèi)核102處接收的本地存儲(chǔ)器訪問(wèn)請(qǐng)求和在本地互連514上所探聽(tīng)的遠(yuǎn)程請(qǐng)求 的處理排序。包括本地加載和存儲(chǔ)操作以及遠(yuǎn)程讀和寫(xiě)操作的存儲(chǔ)器訪問(wèn)請(qǐng)求根據(jù)由仲裁 器505所實(shí)施的仲裁政策被轉(zhuǎn)發(fā)到分發(fā)流水線506,在分發(fā)流水線506處在給定數(shù)目的周期 上關(guān)于目錄508和高速緩存陣列502處理每個(gè)讀/加載和存儲(chǔ)請(qǐng)求。
[0091] L2高速緩存片110a還包括RC隊(duì)列520和CPI (castout推送介入)隊(duì)列518,這 兩個(gè)隊(duì)列分別緩沖被插入到高速緩存陣列502中和從高速緩存陣列502移除的數(shù)據(jù)。RC隊(duì) 列520包括多個(gè)緩沖器條目,其各自個(gè)別地對(duì)應(yīng)于特定的RC機(jī)器512以使得每個(gè)被調(diào)度的 RC機(jī)器512僅僅從被指定的緩沖器條目取回?cái)?shù)據(jù)。相似地,CPI隊(duì)列518包括多個(gè)緩沖器 條目,這些緩沖器條目各自給別地對(duì)應(yīng)于特定的castout機(jī)器510和探聽(tīng)機(jī)器511,從而使 得被調(diào)度的每個(gè)C0機(jī)器510和每個(gè)探聽(tīng)器511僅僅從相應(yīng)的指定的CPI緩沖器條目取回 數(shù)據(jù)。
[0092] 每個(gè)RC機(jī)器512還具有向其指派的有多個(gè)RC數(shù)據(jù)(RCDAT)緩沖器522中的一個(gè) 以用于緩沖從高速緩存陣列502讀取的存儲(chǔ)器塊和/或經(jīng)由再加載總線523從本地互連 514接收的存儲(chǔ)器塊。被指派給每個(gè)RC機(jī)器512的RCDAT緩沖器522優(yōu)選地被構(gòu)造為具有 連接和功能,這些連接和功能對(duì)應(yīng)于可以被關(guān)聯(lián)的RC機(jī)器512所服務(wù)的存儲(chǔ)器訪問(wèn)請(qǐng)求。 如以下還進(jìn)一步討論的,一些但不是所有的RCDAT緩沖器522具有關(guān)聯(lián)的存儲(chǔ)數(shù)據(jù)復(fù)用器 M4,該復(fù)用器M4響應(yīng)于未圖示的由仲裁器505生成的選擇信號(hào)從它的用于緩沖到RCDAT緩 沖器522中的輸入選擇數(shù)據(jù)字節(jié)。
[0093] 在操作中,處理器存儲(chǔ)包括事務(wù)型(ttype)、目標(biāo)真實(shí)地址的請(qǐng)求,并且將從附屬 的處理器內(nèi)核102接收的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)隊(duì)列(STQ) 504內(nèi)。STQ504還包括用于處理屏障 指令(主要是特殊存儲(chǔ)指令)的屏障解決邏輯(沒(méi)有被分離地顯示)。當(dāng)屏障指令到達(dá) STQ504的頭部時(shí)(即,先于屏障指令的所有保存指令已被推送通過(guò)STQ 504),屏障解決邏 輯返回確認(rèn)(ACK)到處理器內(nèi)核102,這如這里進(jìn)一步描述的那樣釋放屏障(參見(jiàn)圖9)。從 STQ 504,保存數(shù)據(jù)經(jīng)由數(shù)據(jù)路徑524被傳輸?shù)酱鎯?chǔ)數(shù)據(jù)復(fù)用器M4,并且存儲(chǔ)型和目標(biāo)地址 被傳遞到復(fù)用器Ml。復(fù)用器Ml也接收來(lái)自處理器內(nèi)核102的處理器加載請(qǐng)求和來(lái)自于RC 機(jī)器512的目錄寫(xiě)請(qǐng)求作為輸入。響應(yīng)于由仲裁器505生成的未圖示的選擇信號(hào),復(fù)用器 Ml選擇它的輸入請(qǐng)求中的一個(gè)以轉(zhuǎn)發(fā)到復(fù)用器M2,該復(fù)用器M2附加地從本地互連514經(jīng) 由遠(yuǎn)程請(qǐng)求路徑526接收遠(yuǎn)程請(qǐng)求作為輸入。仲裁器505基于調(diào)度來(lái)調(diào)度用于處理的本地 和遠(yuǎn)程存儲(chǔ)器訪問(wèn)請(qǐng)求并且生成選擇信號(hào)528的序列。響應(yīng)于由仲裁器505生成的選擇信 號(hào)528,復(fù)用器M2選擇從復(fù)用器Ml接收的本地請(qǐng)求或者從本地互連514所探聽(tīng)的遠(yuǎn)程請(qǐng)求 作為將要被處理的下一存儲(chǔ)器訪問(wèn)請(qǐng)求。
[0094] 被選擇用于由仲裁器505處理的請(qǐng)求被復(fù)用器M2放置在分發(fā)流水線506中。分 發(fā)流水線506優(yōu)選地被實(shí)施為固定持續(xù)時(shí)間流水線,在該流水線中在預(yù)定數(shù)目的時(shí)間周期 中多個(gè)可能重疊的請(qǐng)求A、B、C等中的每個(gè)被處理。例如,分發(fā)流水線506在每四個(gè)周期中 可以處理一個(gè)請(qǐng)求。
[0095] 在分發(fā)流水線506內(nèi)的第一個(gè)處理周期期間,1-循環(huán)目錄讀被執(zhí)行從而使用請(qǐng)求 地址來(lái)確定請(qǐng)求地址在目錄508中命中還是未命中,并且如果存儲(chǔ)器地址命中則確定目錄 508內(nèi)的存儲(chǔ)器塊的相干性狀態(tài)。包括命中/未命中指示和存儲(chǔ)器塊的相干性狀態(tài)的目錄 信息在隨后周期(比如第四周期)中被目錄508返回到分發(fā)流水線506。如將領(lǐng)會(huì)的那樣, 通常在L2高速緩存片中響應(yīng)于對(duì)遠(yuǎn)程存儲(chǔ)器訪問(wèn)請(qǐng)求的未命中不進(jìn)行動(dòng)作,這樣的遠(yuǎn)程 存儲(chǔ)器請(qǐng)求被相應(yīng)地從分發(fā)流水線506丟棄。然而,在本地存儲(chǔ)器訪問(wèn)請(qǐng)求上命中或者未 命中或者遠(yuǎn)程存儲(chǔ)器訪問(wèn)請(qǐng)求上命中時(shí)的情況下,L2高速緩存片110a將服務(wù)于該存儲(chǔ)器 訪問(wèn)請(qǐng)求,而對(duì)于在處理單元100內(nèi)完全不能被服務(wù)的請(qǐng)求,可能需要經(jīng)由結(jié)構(gòu)控制器516 在本地連接514上進(jìn)行通信。
[0096] 在分發(fā)流水線506內(nèi)的存儲(chǔ)器訪問(wèn)請(qǐng)求的處理期間的預(yù)定時(shí)間處,仲裁器505經(jīng) 由地址和控制路徑530傳輸請(qǐng)求地址到高速緩存陣列502以發(fā)起由請(qǐng)求地址所指定的存儲(chǔ) 器塊的高速緩存讀。高速緩存讀在示例性實(shí)施例中耗時(shí)2個(gè)周期。從高速緩存陣列502讀 取出來(lái)的存儲(chǔ)器塊經(jīng)由數(shù)據(jù)路徑542被傳輸?shù)藉e(cuò)誤校正代碼(ECC)邏輯544,該錯(cuò)誤校正代 碼邏輯544檢查存儲(chǔ)器塊以尋找錯(cuò)誤,如果可能的話,校正任何檢測(cè)到的錯(cuò)誤。對(duì)于處理器 加載請(qǐng)求,存儲(chǔ)器塊也經(jīng)由數(shù)據(jù)路徑540被傳輸?shù)郊虞d數(shù)據(jù)復(fù)用器M3以用于轉(zhuǎn)發(fā)到附屬的 處理器內(nèi)核102。
[0097] 在分發(fā)流水線506中的存儲(chǔ)器訪問(wèn)請(qǐng)求的處理中的最后的周期,分發(fā)流水線506 做出分發(fā)確定。例如,分發(fā)流水線506可以基于一些標(biāo)準(zhǔn)確定進(jìn)行分發(fā)確定,這些標(biāo)準(zhǔn)包 括:(1)存在由castout機(jī)器510、探聽(tīng)511或者RC機(jī)器512當(dāng)前處理的請(qǐng)求地址和之前的 請(qǐng)求地址之前的地址沖突;(2)目錄信息;以及(3)用于處理存儲(chǔ)器訪問(wèn)請(qǐng)求的RC機(jī)器512 或者探聽(tīng)機(jī)器511的可用性。如果分發(fā)流水線506做出存儲(chǔ)器訪問(wèn)請(qǐng)求將被分發(fā)的分發(fā)確 定,則存儲(chǔ)器訪問(wèn)請(qǐng)求被從分發(fā)流水線506分發(fā)到RC機(jī)器512或者探聽(tīng)機(jī)器511。如果存 儲(chǔ)器訪問(wèn)請(qǐng)求分發(fā)失敗,則失敗通過(guò)再試響應(yīng),被信號(hào)通知到請(qǐng)求器(例如,本地或者遠(yuǎn)程 處理器內(nèi)核102)。如果必需的話,請(qǐng)求器可以隨后再試失敗了的存儲(chǔ)器訪問(wèn)請(qǐng)求。
[0098] 在RC機(jī)器512處理本地的存儲(chǔ)器訪問(wèn)請(qǐng)求時(shí),RC機(jī)器512具有一個(gè)忙狀態(tài)并且 不可用于服務(wù)于另一個(gè)請(qǐng)求。當(dāng)RC機(jī)器512具有忙狀態(tài)時(shí),如果必需的話,RC機(jī)器512可 以執(zhí)行目錄寫(xiě)操作以更新目錄508的相關(guān)條目。另外,RC機(jī)器512可以執(zhí)行高速緩存寫(xiě) 以更新高速緩存陣列502的相關(guān)高速緩存線。目錄寫(xiě)和緩存寫(xiě)可以在其中分發(fā)流水線506 未準(zhǔn)備好根據(jù)目錄讀和高速緩存讀的固定調(diào)度處理其他請(qǐng)求的任何間隔期間由仲裁器505 調(diào)度。當(dāng)用于給定請(qǐng)求的所有操作已被完成時(shí),RC機(jī)器512返回不忙狀態(tài)。
[0099] 將被領(lǐng)會(huì)到的是,對(duì)于非固定調(diào)度操作(比如目錄寫(xiě)和高速緩存寫(xiě))的調(diào)回會(huì)影 響其他操作的調(diào)度,包括根據(jù)固定調(diào)度被處理的那些操作。
[0100] 參照?qǐng)D6,其圖示了由根據(jù)本公開(kāi)內(nèi)容的實(shí)施例所配置的RC機(jī)器512所實(shí)施的示 例性過(guò)程600的流程圖。在塊602中,過(guò)程600被發(fā)起,屆時(shí)控制轉(zhuǎn)移到塊604。在塊604 中,RC機(jī)器512響應(yīng)于目錄508中的加載指令的目標(biāo)地址的高速緩存未命中,在互連結(jié)構(gòu) 上發(fā)布對(duì)應(yīng)于加載指令(該指令被包括在包括屏障指令的指令序列中,其中屏障指令跟隨 加載指令)的讀操作。接著,在決定塊606中,RC機(jī)器512確定用于讀操作的數(shù)據(jù)是否已 被接收到,例如,從另一個(gè)L2高速緩存110或者系統(tǒng)存儲(chǔ)器132處接收到。在塊606中,響 應(yīng)于RC機(jī)器512確定已針對(duì)讀操作接收到數(shù)據(jù),控制從塊606轉(zhuǎn)移到塊616,在塊616用于 讀操作的數(shù)據(jù)被返回(經(jīng)由復(fù)用器M3)到關(guān)聯(lián)的處理器內(nèi)核102。在塊606中,響應(yīng)于沒(méi)有 被接收到用于讀操作的數(shù)據(jù),控制從塊606轉(zhuǎn)移到?jīng)Q定塊608。
[0101] 在塊608中,RC機(jī)器512確定是否針對(duì)讀操作已接收到Cresp。響應(yīng)于用于讀操 作的Cresp在塊608中沒(méi)有被接收到,控制從塊608轉(zhuǎn)移到塊606。響應(yīng)于用于讀操作的 Cresp在塊608中被接收到,控制從塊608轉(zhuǎn)到?jīng)Q定塊610。在塊610中,RC機(jī)器512確定 接收到的用于讀操作的Cresp是否是"良好",這意味著將供應(yīng)由讀操作請(qǐng)求的數(shù)據(jù),例如, 由數(shù)據(jù)處理系統(tǒng)200中的另一 L2高速緩存110或者系統(tǒng)存儲(chǔ)器132。在塊610中,響應(yīng)于 Cresp不是良好,控制從塊610轉(zhuǎn)移到塊604,其中讀操作被再次發(fā)布。在塊610中,響應(yīng)于 Cresp是良好,控制從塊610轉(zhuǎn)移到塊612。
[0102] 在塊612中,RC機(jī)器512返回(經(jīng)由復(fù)用器M5)良好的Cresp指示到處理器內(nèi)核 102。接著,在決定塊614中,RC機(jī)器512確定是否已經(jīng)針對(duì)讀操作接收到數(shù)據(jù)。在塊614 中,響應(yīng)于沒(méi)有被接收到針對(duì)讀操作的數(shù)據(jù),控制循環(huán)到塊614上。在塊614中,響應(yīng)于接 收到針對(duì)讀操作的數(shù)據(jù),控制從塊614轉(zhuǎn)移到塊616,其中RC機(jī)器512返回由讀操作所請(qǐng)求 的數(shù)據(jù)到處理器內(nèi)核102。跟隨塊616,控制轉(zhuǎn)移到塊618,在塊618過(guò)程600結(jié)束,直到RC 機(jī)器512被指派另一存儲(chǔ)器訪問(wèn)操作。
[0103] 參照?qǐng)D7,其圖示了由根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的LSU 555的處理器內(nèi)核加載重 排序隊(duì)列解決邏輯555b實(shí)施的示例性過(guò)程700的流程圖。在塊702中,過(guò)程700被發(fā)起, 屆時(shí)控制轉(zhuǎn)移到?jīng)Q定塊704。在塊704中,LSU 555的解決邏輯555b為如下加載指令在LSU 555的加載重排序隊(duì)列(LRQ) 555a中創(chuàng)建隊(duì)列條目,該加載指令在指令序列中先于屏障指 令。接著,在決定塊706中,LSU 555的解決邏輯555b確定是否由加載指令所請(qǐng)求的數(shù)據(jù) 已經(jīng)被接收到。在塊706中,響應(yīng)于確定由加載指令所請(qǐng)求的數(shù)據(jù)尚未被接收到,控制轉(zhuǎn)移 到?jīng)Q定塊708。然而,如果在塊706中確定由加載指令所請(qǐng)求的數(shù)據(jù)已被接收到,則控制轉(zhuǎn) 移到?jīng)Q定塊710。
[0104] 在塊708中,LSU 555的解決邏輯555b確定是否針對(duì)加載指令接收到了良好 Cresp。在塊708,響應(yīng)于良好Cresp尚未被接收到,控制轉(zhuǎn)移到塊706。在塊708,響應(yīng)于 良好Cresp已被接收到,控制轉(zhuǎn)移到塊710。在塊710中,LSU 555的解決邏輯555b將LSU 555的LRQ中的用于加載指令的條目標(biāo)記為已解決。跟隨塊710,控制轉(zhuǎn)移到塊712,在塊 712過(guò)程700結(jié)束。
[0105] 參照?qǐng)D9,其圖示了(例如,由LSU 555實(shí)施的)示例性屏障釋放過(guò)程900的流程 圖。過(guò)程900響應(yīng)于屏障指令的執(zhí)行而被實(shí)施。在塊902中,過(guò)程900被發(fā)起,屆時(shí)控制轉(zhuǎn) 移到?jīng)Q定塊904。在塊904中,LSU 555的解決邏輯555b確定是否所有的在屏障指令之前的 加載指令已經(jīng)被解決。在所有的在屏障指令之前的加載指令尚未被解決時(shí),控制循環(huán)到塊 904。在塊904中,響應(yīng)于在屏障指令之前的所有加載指令被解決,控制轉(zhuǎn)移到?jīng)Q定塊906。 在決定塊906中,LSU 555的解決邏輯555b通過(guò)確定是否用于給定屏障指令的ACK已經(jīng)被 收到來(lái)確定是否所有的在屏障指令之前的存儲(chǔ)指令已經(jīng)被解決。在所有的在屏障指令之前 的存儲(chǔ)指令尚未被解決時(shí),控制循環(huán)到塊906。在塊906中,響應(yīng)于在屏障指令之前的所有 存儲(chǔ)指令被解決,控制轉(zhuǎn)移到?jīng)Q定塊908。在塊908中,LSU 555的解決邏輯555b完成用于 屏障指令的SYNC操作,屆時(shí)跟隨屏障指令的存儲(chǔ)器訪問(wèn)指令的執(zhí)行可以繼續(xù)進(jìn)行。跟隨塊 908,在塊910中過(guò)程900結(jié)束。
[0106] 相應(yīng)地,已在這里被公開(kāi)的技術(shù)在執(zhí)行包括屏障指令的指令序列時(shí)可以有利地改 善處理器性能。例如,在處理器內(nèi)核處當(dāng)對(duì)于加載指令的良好組合響應(yīng)在用于加載指令的 數(shù)據(jù)在處理器內(nèi)核處被接收之前而被接收時(shí),屏障指令可以響應(yīng)于該良好組合響應(yīng)而被釋 放,從而在某些情形下來(lái)在數(shù)百個(gè)周期改善處理器性能。
[0107] 附圖中的流程圖和框圖圖示了根據(jù)本發(fā)明的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程 序產(chǎn)品的可能的實(shí)現(xiàn)方式的架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以 代表模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于 實(shí)現(xiàn)指定的邏輯功能的可執(zhí)行指令。還應(yīng)注意的是,在一些備選實(shí)現(xiàn)方式中,在方框中所標(biāo) 注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)被連續(xù)示出的方框?qū)嶋H上 可以基本并行地被執(zhí)行,或者方框有時(shí)也可以按相反的順序被執(zhí)行,這依賴于所涉及的功 能。還應(yīng)注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組 合,可以用執(zhí)行指定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件 與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
[0108] 這里使用的術(shù)語(yǔ)僅是出于描述特定實(shí)施例的目的并且并非旨在于限制本發(fā)明。如 這里所使用的,單數(shù)形式的"一"、"一個(gè)"和"該"旨在于也包括復(fù)數(shù)形式,除非上下文明確地 另有指示。還將理解,術(shù)語(yǔ)"包括"和/或"包含"(以及類似的術(shù)語(yǔ),比如包括著、包括有、 具有、包含有等)當(dāng)在本說(shuō)明書(shū)中被使用時(shí)指定所陳述的特征、整體、步驟、操作、元件和/ 或部件的存在,但并不排除一個(gè)或者多個(gè)其他特征、整體、步驟、操作、元件、部件和/或其 分組的存在或添加。
[0109] 以下權(quán)利要求中的所有裝置或者步驟加功能元素的對(duì)應(yīng)結(jié)構(gòu)、材料、動(dòng)作和等效 物如果存在則旨在于包括用于結(jié)合如具體要求保護(hù)的其他要求保護(hù)的元素執(zhí)行功能的任 何結(jié)構(gòu)、材料或者動(dòng)作。本發(fā)明的描述已經(jīng)出于例示和描述的目的而被呈現(xiàn),但是并非旨在 于是窮盡的或者限于按照所公開(kāi)形式的本發(fā)明。由于本領(lǐng)域技術(shù)人員將容易地想起許多修 改和改變,因此本發(fā)明旨在于并未限于這里描述的有限數(shù)目的實(shí)施例。因此,將領(lǐng)會(huì)到,可 以借助的所有適當(dāng)變型、修改和等效物落入本發(fā)明的范圍內(nèi)。實(shí)施例被選擇和描述以便最 佳地說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,以及使得本領(lǐng)域普通技術(shù)人員能夠理解如適合于所預(yù) 期的特定使用的、對(duì)于具有各種修改的各種實(shí)施例的本發(fā)明。
[〇11〇] 已經(jīng)因此詳細(xì)地并且參考本申請(qǐng)的發(fā)明的優(yōu)選實(shí)施例描述了本申請(qǐng)的發(fā)明,將明 確的是在沒(méi)有脫離在所附權(quán)利要求中所定義的本發(fā)明的范圍的情況下修改和改變是可能 的。
【權(quán)利要求】
1. 一種處理指令序列的方法,所述指令序列包括屏障指令、在所述屏障指令之前的加 載指令和跟隨所述屏障指令的隨后存儲(chǔ)器訪問(wèn)指令,所述方法包括: 由處理器內(nèi)核基于由所述處理器內(nèi)核接收到用于對(duì)應(yīng)于所述加載指令的讀操作的良 好組合響應(yīng)以及用于所述加載指令的數(shù)據(jù)中的最早的一個(gè)來(lái)確定所述加載指令被解決; 如果所述隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行未在所述屏障指令的完成之前被發(fā)起,則由所述 處理器內(nèi)核響應(yīng)于確定完成的所述屏障指令來(lái)發(fā)起所述隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行;以及 如果所述隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行在所述屏障指令的完成之前被發(fā)起,則由所述處 理器內(nèi)核響應(yīng)于確定完成的所述屏障指令來(lái)中斷關(guān)于無(wú)效對(duì)所述隨后存儲(chǔ)器訪問(wèn)指令的 追蹤。
2. 如權(quán)利要求1所述的方法,還包括: 由所述處理器內(nèi)核向加載重排序隊(duì)列中插入用于所述加載指令的條目項(xiàng);以及 由所述處理器內(nèi)核響應(yīng)于由所述處理器內(nèi)核確定所述加載指令被解決來(lái)將所述加載 重排序序列中的所述條目標(biāo)記為已解決。
3. 如前述權(quán)利要求中的任一權(quán)利要求所述的方法,其中所述隨后存儲(chǔ)器訪問(wèn)指令為隨 后加載指令。
4. 如權(quán)利要求1到2中的任一權(quán)利要求所述的方法,其中所述隨后存儲(chǔ)器訪問(wèn)指令為 隨后存儲(chǔ)指令。
5. 如前述權(quán)利要求中的任一權(quán)利要求所述的方法,還包括所述處理器內(nèi)核在接收用于 所述加載指令的所述數(shù)據(jù)之前接收用于對(duì)應(yīng)于所述加載指令的所述讀操作的所述良好組 合響應(yīng)。
6. 如權(quán)利要求1到4中的任一權(quán)利要求所述的方法,還包括所述處理器內(nèi)核在接收用 于所述加載指令的所述數(shù)據(jù)之后接收用于對(duì)應(yīng)于所述加載指令的所述讀操作的所述良好 組合響應(yīng)。
7. 如前述權(quán)利要求中的任一權(quán)利要求所述的方法,其中當(dāng)在所述屏障指令之前的所有 加載指令和存儲(chǔ)指令被解決時(shí)所述屏障指令完成。
8. -種被配置用于處理指令序列的數(shù)據(jù)處理系統(tǒng),所述指令序列包括屏障指令、在所 述屏障指令之前的加載指令和跟隨所述屏障指令的隨后存儲(chǔ)器訪問(wèn)指令,所述數(shù)據(jù)處理系 統(tǒng)包括: 高速緩沖存儲(chǔ)器;以及 耦合到所述高速緩沖存儲(chǔ)器的處理器內(nèi)核,所述系統(tǒng)包括用于以下操作的裝置: 基于由所述處理器內(nèi)核接收到用于對(duì)應(yīng)于所述加載指令的讀操作的良好組合響應(yīng)以 及用于所述加載指令的數(shù)據(jù)中的最早的一個(gè)來(lái)確定所述加載指令被解決; 如果所述隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行未在所述屏障指令的完成之前被發(fā)起,則由所述 處理器內(nèi)核響應(yīng)于確定完成的所述屏障指令來(lái)發(fā)起所述隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行;以及 如果所述隨后存儲(chǔ)器訪問(wèn)指令的執(zhí)行在所述屏障指令的完成之前被發(fā)起,則由所述處 理器內(nèi)核響應(yīng)于確定完成的所述屏障指令來(lái)中斷關(guān)于無(wú)效對(duì)所述隨后存儲(chǔ)器訪問(wèn)指令的 追蹤。
9. 如權(quán)利要求8所述的數(shù)據(jù)處理系統(tǒng),其中所述數(shù)據(jù)處理系統(tǒng)還可操作用于: 向加載重排序隊(duì)列中插入用于所述加載指令的條目;以及 響應(yīng)于確定所述加載指令被解決來(lái)將所述加載重排序序列中的所述條目標(biāo)記為已解 決。
10. 如權(quán)利要求8或9中的任一權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),其中所述隨后存儲(chǔ)器訪 問(wèn)指令為隨后加載指令。
11. 如權(quán)利要求8或9中的任一權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),其中所述隨后存儲(chǔ)器訪 問(wèn)指令為隨后存儲(chǔ)指令。
12. 如權(quán)利要求8到11中的任一權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),還可操作用于:所述 處理器內(nèi)核在接收用于所述加載指令的所述數(shù)據(jù)之前接收用于對(duì)應(yīng)于所述加載指令的所 述讀操作的所述良好組合響應(yīng)。
13. 如權(quán)利要求8到11中的任一權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),還可操作用于:所述 處理器內(nèi)核在接收用于所述加載指令的所述數(shù)據(jù)之后接收用于對(duì)應(yīng)于所述加載指令的所 述讀操作的所述良好組合響應(yīng)。
14. 如權(quán)利要求8到13中的任一權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),還可操作用于當(dāng)在所 述屏障指令之前的所有加載指令和存儲(chǔ)指令被解決時(shí)所述屏障指令完成。
15. 如權(quán)利要求8到14中的任一權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),其中所述高速緩沖存 儲(chǔ)器為二級(jí)高速緩沖存儲(chǔ)器。
16. 如權(quán)利要求15所述的數(shù)據(jù)處理系統(tǒng),其中所述處理器內(nèi)核包括加載-存儲(chǔ)單元,所 述加載-存儲(chǔ)單元包括加載重排序隊(duì)列(LRQ)并且LRQ可操作用于解決邏輯,并且其中解 決邏輯的所述LRQ可操作用于: 向所述LRQ中插入用于所述加載指令的條目;以及 響應(yīng)于確定所述加載指令被解決來(lái)將所述LRQ中的所述條目標(biāo)記為已解決。
17. -種用于處理指令序列的計(jì)算機(jī)程序產(chǎn)品,所述指令序列包括屏障指令、在所述屏 障指令之前的加載指令和跟隨所述屏障指令的隨后存儲(chǔ)器訪問(wèn)指令,所述計(jì)算機(jī)程序產(chǎn)品 包括: 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其由處理電路可讀取并且存儲(chǔ)指令以用于由所述處理電路執(zhí)行 以執(zhí)行根據(jù)權(quán)利要求1到7中的任一權(quán)利要求所述的方法。
18. -種存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上并且可以加載到數(shù)字計(jì)算機(jī)的內(nèi)部存儲(chǔ)器中的計(jì)算 機(jī)程序,包括軟件代碼部分,當(dāng)所述計(jì)算機(jī)程序在計(jì)算機(jī)上被運(yùn)行時(shí),用于執(zhí)行如權(quán)利要求 1到7中的任一權(quán)利要求所述的方法。
【文檔編號(hào)】G06F9/00GK104106043SQ201380008415
【公開(kāi)日】2014年10月15日 申請(qǐng)日期:2013年1月22日 優(yōu)先權(quán)日:2012年2月8日
【發(fā)明者】D·E·威廉斯, G·L·格思里, W·斯塔克 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司