專利名稱:環(huán)管理的制作方法
背景技術(shù):
環(huán)(或″循環(huán)緩沖″)用于在代理,諸如中央處理器(″CPUs″)、I/O裝置和聯(lián)合處理器之間傳遞消息。消息可以包括數(shù)據(jù)、指針和在這樣代理之間交換的任何其他類型信息。環(huán)也用于在線程或在單一代理上運(yùn)行的進(jìn)程之間傳遞消息。環(huán)典型地由存儲(chǔ)器中的陣列,和陣列中的一對(duì)指針或偏移實(shí)現(xiàn),陣列通過陣列和″包″中的記錄線性增加,當(dāng)?shù)竭_(dá)陣列尾部時(shí)取模環(huán)尺寸。這些指針之一用于在環(huán)的尾部增加新的記錄。這個(gè)指針稱為″生產(chǎn)指針″。使用生產(chǎn)指針執(zhí)行生產(chǎn)訪問(或入列)操作的代理稱為″生產(chǎn)者″。另一個(gè)指針,稱為″消耗指針″,用于從環(huán)的頭部把記錄移除。執(zhí)行消耗訪問(或出列)操作的代理稱為″消費(fèi)者”。
具體指針可以由單一代理擁有。代理維持指針的拷貝,其用于確定哪個(gè)記錄在陣列中被讀取或者寫入??蛇x地,如果指針由多重生產(chǎn)者和/或多重消費(fèi)者使用,每一個(gè)代理要求互相排除機(jī)制來允許代理自動(dòng)作用于指針和相關(guān)的記錄。
生產(chǎn)指針由生產(chǎn)者讀取和寫入,所述生產(chǎn)者使用指針并增加它的值。同樣地,消耗指針由消費(fèi)者讀取和寫入。許多機(jī)制可以被使用來允許消費(fèi)者確定在環(huán)中是否有可用的空間,來允許生產(chǎn)者確定在環(huán)中是否有任何可用的記錄。通用機(jī)制將消耗指針和生產(chǎn)指針中的額外高位位進(jìn)行比較,以在當(dāng)所述指針的值在不同情況下相等時(shí),將是空環(huán)還是充滿的環(huán)的情況區(qū)分開來。在這種情況下,生產(chǎn)指針也是由消費(fèi)者讀取,并且消耗指針由生產(chǎn)者讀取。
代理有時(shí)保持其擁有的指針的私人本地拷貝,來最小化相關(guān)于環(huán)訪問的開銷。同樣,由于各種原因,代理可以使用從環(huán)中入列或者出列的″批″通知,來攤銷對(duì)于代理的開銷。因此,生產(chǎn)者可以維持生產(chǎn)指針的一個(gè)私人拷貝用于在環(huán)中寫入記錄,和一個(gè)較少更新的該指針的單獨(dú)的公共拷貝,來把″大量″記錄一次傳給消費(fèi)者。消費(fèi)者同樣地可以用消耗指針的私人和公共的拷貝來表示空間被釋放,允許″懶惰″收回和資源恢復(fù)來優(yōu)化那些功能并把他們從服務(wù)環(huán)的過程中分離(decouple)。因此,指針的私人拷貝和公共拷貝分別地服務(wù)于訪問和通知的不同功能。
生產(chǎn)者讀取消耗指針和消費(fèi)者讀取生產(chǎn)指針來確定環(huán)狀態(tài)對(duì)通信開銷作出貢獻(xiàn)。為了最小化該開銷,環(huán)信用有時(shí)被使用。環(huán)信用指示有空閑環(huán)記錄可以給生產(chǎn)者使用。消費(fèi)者把信用傳給生產(chǎn)者,生產(chǎn)者將其加入它的本地信用池。用于傳送信用的機(jī)制包括由消費(fèi)者發(fā)送到信用池中,且由生產(chǎn)者從信用池取出。信用傳送也能夠被批處理,其減少了用于生產(chǎn)者信用通知的業(yè)務(wù),但是不能解決通知消費(fèi)者該環(huán)是非空的的開銷。
圖1是典型多-處理器系統(tǒng)的框圖,其使用共享存儲(chǔ)器的環(huán)。
圖2是描述典型環(huán)數(shù)據(jù)結(jié)構(gòu)的框圖,包括環(huán)和在共享存儲(chǔ)器存儲(chǔ)的相關(guān)環(huán)描述符。
圖3是描述在使用環(huán)數(shù)據(jù)結(jié)構(gòu)的代理之間傳送的消息的框圖。
圖4顯示頭描述符的典型布局。
圖5顯示尾部描述符的典型布局。
圖6顯示公共描述符的典型布局。
圖7顯示信用描述符的典型布局。
圖8顯示了使用在圖7的信用描述符中維持的公共信用計(jì)數(shù)的實(shí)施例。
圖9是表示典型環(huán)描述符的讀取操作的流程圖。
圖10是用于在環(huán)中存儲(chǔ)項(xiàng)的典型″生產(chǎn)訪問″操作的流程圖。
圖11是由圖10的產(chǎn)品訪問操作使用的典型共享存儲(chǔ)器寫操作的流程圖。
圖12是用于典型超時(shí)機(jī)制的狀態(tài)圖。
圖13是典型將項(xiàng)從環(huán)中移除的″消耗訪問″操作的流程圖。
圖14是由圖13的消耗訪問操作使用的典型共享存儲(chǔ)器讀取操作的流程圖。
圖15是典型環(huán)初始化處理的流程圖。
圖16是使用圖1的系統(tǒng)的典型網(wǎng)絡(luò)應(yīng)用的框圖。
具體實(shí)施例方式
圖1示出多-處理器系統(tǒng)10其中處理器12和通用處理器(″GPP″)14與系統(tǒng)總線連接(參見此處作為前端總線,″FSB″)16。如圖所示,多于一個(gè)的GPP14可以連接在FSB 16上。多于一個(gè)的處理器12也可以連接在FSB 16上。GPP14可以是具有CPU核心和集成的高速緩存的處理器、例如Intel結(jié)構(gòu)處理器(″IA處理器″),諸如IntelXeonTM處理器,或一些其他的通用CPU。處理器12可以是專業(yè)處理器,諸如網(wǎng)絡(luò)處理器,例如,基于Intel互聯(lián)網(wǎng)交換結(jié)構(gòu)(IXA)的網(wǎng)絡(luò)處理器,其包括多重多線程的減少指令集合計(jì)算機(jī)(RISC)核心(″微引擎″(MEs))和在相同的模上集成的通用的處理器核心。其他種類的處理器結(jié)構(gòu)能夠被使用。處理器12的GPP 14和處理元件能夠在FSB 16上開始事務(wù)處理,以及因此可以共同地稱為總線代理,或者更簡(jiǎn)單地稱為代理。
同樣與FSB 16連接的是存儲(chǔ)控制器20,其連接存儲(chǔ)器22。存儲(chǔ)器22被系統(tǒng)10的各種代理共享并且為各種代理共享共有。存儲(chǔ)控制器20由這樣的代理管理到共享存儲(chǔ)器22的訪問。存儲(chǔ)控制器20可以充當(dāng)網(wǎng)絡(luò)集線器或橋接,以及因此包括連接到和通信于其它系統(tǒng)邏輯電路和I/O組件的電路,共同地顯示為系統(tǒng)邏輯電路和I/O塊34。系統(tǒng)邏輯電路和I/O塊34的組件可以連接底板、外部設(shè)備和/或通信鏈路。
處理器12和GPP 14每一個(gè)都包括高速緩存24、38。高速緩存的尺寸和結(jié)構(gòu)是設(shè)計(jì)選擇的事。例如,高速緩存24可以組織為8一路設(shè)置的相關(guān)高速存儲(chǔ),每個(gè)設(shè)置包括2048高速緩存行,每高速緩存行有64字節(jié)。高速緩存也可以包括不同尺寸和結(jié)構(gòu)高速緩存的體系。
在共享存儲(chǔ)器22中維持的是實(shí)現(xiàn)環(huán)(例如,環(huán)陣列)26的數(shù)據(jù)結(jié)構(gòu)和相關(guān)環(huán)的描述符28。每個(gè)環(huán)的一端由硬件管理,示為處理器12中的環(huán)管理器30。環(huán)管理器30連接到并且由處理器的代理(例如,MEs和控制處理器)訪問,示為通過內(nèi)部總線36的環(huán)用戶31。環(huán)管理器30包含F(xiàn)IFOs(未示出),其用于在處理器12和共享存儲(chǔ)器22的代理之間緩沖指令和傳送數(shù)據(jù)。那組指令FIFOs包括入列FIFOs的陣列和出列FIFOs的陣列,作為寄存器的陣列提供給代理(每環(huán)的一個(gè)入列寄存器和一個(gè)出列寄存器),用于分別在環(huán)中放置數(shù)據(jù)或者在環(huán)中去除數(shù)據(jù)。環(huán)用戶31開始在入列寄存器的陣列中的記錄寫入或者在出列寄存器的記錄讀取,同時(shí)在環(huán)管理器本身的硬件處理其它操作。環(huán)管理器30也包括控制和狀態(tài)寄存器(CSRs)以存儲(chǔ)環(huán)配置參數(shù)(諸如環(huán)尺寸)和用于環(huán)描述符的基礎(chǔ)值,這將參考圖2討論。每個(gè)環(huán)的另一端由在GPP 14執(zhí)行的軟件管理和訪問,示為環(huán)管理器32。在一個(gè)實(shí)施例中,環(huán)管理器32可以作為驅(qū)動(dòng)器軟件部分實(shí)現(xiàn)。
當(dāng)其在內(nèi)部總線36收到指令時(shí),環(huán)管理器30執(zhí)行消耗訪問(出列)和生產(chǎn)訪問(入列)操作。如上面所討論的,這些環(huán)訪問指令在指令FIFO寄存器中收到。它們可以為″放(put)″或″得到(get)″指令形式(例如,對(duì)于ME環(huán)用戶),或加載或存儲(chǔ)指令(例如,對(duì)于Xscale核心環(huán)用戶)以提供一些例子。GPP 14用環(huán)管理器32的軟件例行程序來執(zhí)行消耗和生產(chǎn)操作。
環(huán)管理器30執(zhí)行除了環(huán)管理以外的其他操作。例如,環(huán)管理器30管理FSB協(xié)議和中斷FSB16,把數(shù)據(jù)指向給高速緩存24和從高速緩存24指向,對(duì)于處理器12的高速緩存24保持高速緩存相干性協(xié)議和管理高速緩存活動(dòng)(諸如代替,標(biāo)記查找并且依此類推)。
環(huán)管理器30提供能力來把數(shù)據(jù)移動(dòng)到共享存儲(chǔ)器22和從共享存儲(chǔ)器22移動(dòng)。各種類型的訪問包括讀取訪問、寫入訪問和最小單元(atomic)的讀取-修改-寫入訪問。讀取和寫入訪問能夠規(guī)定如果高速緩存丟失是否在高速緩存分配空間。最小單元讀取-修改-寫入指令被使用來在共享存儲(chǔ)器22中的保持信號(hào)量相干性。
處理器12和GPP 14允許共享存儲(chǔ)器的選定區(qū)被高速緩存,和一種高速緩存(叫做″存儲(chǔ)器類型″)對(duì)于選定區(qū)被規(guī)定。支持的存儲(chǔ)器類別包括不可高速緩存的(UC);寫入-通過(WT);回復(fù)(WB);寫保護(hù)(WP);和寫入結(jié)合(WC)。
如果UC存儲(chǔ)器類型被規(guī)定,選定區(qū)不被高速緩存。對(duì)于WT,對(duì)和從選定區(qū)寫入和讀取被高速緩存。在高速緩存命中和讀取丟失的從高速緩存行讀取導(dǎo)致高速緩存填充。所有寫入被寫入給高速緩存行和通過給共享存儲(chǔ)器。這個(gè)機(jī)制加強(qiáng)在各種高速緩存和共享存儲(chǔ)器之間的相干性。在WB存儲(chǔ)器類型中,對(duì)共享存儲(chǔ)器的寫入和從共享存儲(chǔ)器的讀取被高速緩存。高速緩存命中從高速緩存行讀取;讀取丟失導(dǎo)致高速緩存填充。寫入丟失導(dǎo)致高速緩存行填充,以及寫入在高速緩存徹底執(zhí)行,當(dāng)可能時(shí)。當(dāng)高速緩存行需要被回收時(shí),回寫操作被觸發(fā)。在WP模式下,當(dāng)可能時(shí)從高速緩存行讀取,和讀取丟失導(dǎo)致高速緩存填充。寫入被傳播給系統(tǒng)總線并且導(dǎo)致在總線上所有處理器的相應(yīng)高速緩存行失效。當(dāng)WC被使用時(shí),共享的存儲(chǔ)器位置不被高速緩存,以及寫入可以被延遲和組合在寫入緩沖中以減少存取器訪問。
處理器12和GPP 14用他們的各個(gè)高速緩存來保持最近訪問數(shù)據(jù)的本地拷貝,包括環(huán)數(shù)據(jù)和描述符,從共享存儲(chǔ)器,以減少處理器使用的FSB 16帶寬。相干性(或一致性)可以在多重高速緩存24、38和共享存儲(chǔ)器22中,由諸如探聽高速緩存和目錄的許多不同公知機(jī)制和諸如修改專有共享無效的(MESI)或修改所有者專有共享無效的(MOESI)的公知協(xié)議進(jìn)行維持。
在一個(gè)典型實(shí)施例中,在此描述了所使用的探聽高速緩存相干性協(xié)議是MESI協(xié)議,其中″MESI″涉及四個(gè)高速緩存狀態(tài)″修改″(M)、″專有″(E)、″共享的″(S)、和″無效″(I)。高速緩存的每個(gè)高速緩存行都可以是四種狀態(tài)中的一種。環(huán)數(shù)據(jù)結(jié)構(gòu)26、28由代理以這種方式使用,使每個(gè)環(huán)上的在生產(chǎn)的和消耗一個(gè)或多個(gè)代理之間存儲(chǔ)器通信和導(dǎo)致的相干性業(yè)務(wù)減到最少,如將描述的那樣。
GPP 14使用頁可高速緩存性屬性和存儲(chǔ)器類型范圍寄存器(MTRRs)以確定FSB訪問的高速緩存屬性。同樣地,處理器12都用FSB指令類型和MTRR來定義FSB事務(wù)可高速緩存性。MTRRs允許高速緩存的類型在共享存儲(chǔ)器中被規(guī)定以用于所選擇的物理地址范圍。根據(jù)描述的實(shí)施例,下面的表格1定義高速緩存分配策略。其他高速緩存分配策略也可以使用。
表格1環(huán)管理器30監(jiān)控(″探聽″)來自其他處理器的FSB 16的訪問,諸如GPP 14,和根據(jù)請(qǐng)求保持高速緩存24和其他處理器的高速緩存的相干性以進(jìn)行響應(yīng)。這個(gè)探聽活動(dòng)由環(huán)管理器30的硬件處理,并且對(duì)軟件是透明的。探聽響應(yīng)能夠表示對(duì)于地址的命中,該地址實(shí)際上不在高速緩存中,但是高速緩沖具有響應(yīng)性,因?yàn)榄h(huán)管理器30從時(shí)間點(diǎn)保持用于數(shù)據(jù)的相干性,該時(shí)間點(diǎn)上開始了對(duì)要修改的數(shù)據(jù)的FSB數(shù)據(jù)讀取,直到數(shù)據(jù)在FSB 16上寫出。修改的數(shù)據(jù)可以從存儲(chǔ)器,在內(nèi)部環(huán)管理器緩沖中,在高速緩存24,在從高速緩存24收回的過程中穿梭,依此類推。當(dāng)?shù)刂访墟i定的高速緩存行時(shí),環(huán)管理器30將會(huì)停止探聽響應(yīng)。高速緩存行在環(huán)操作更新期間鎖定,如將被描述的那樣。
如圖2所示,環(huán)數(shù)據(jù)結(jié)構(gòu)40包括環(huán)描述符28和環(huán)陣列26,二者都存儲(chǔ)在共享存儲(chǔ)器下22,如圖1所示。環(huán)陣列26包括用于每個(gè)環(huán)的環(huán)數(shù)據(jù)存儲(chǔ)區(qū)域41(為了簡(jiǎn)單,僅有一個(gè)--對(duì)于環(huán)‘n’41的環(huán)數(shù)據(jù)存儲(chǔ)--被示出)。用于不同環(huán)的環(huán)數(shù)據(jù)存儲(chǔ)不需要是鄰近的。每個(gè)環(huán)由唯一環(huán)描述符描述。環(huán)描述符被分成四個(gè)描述符,其中每個(gè)描述符駐留在由號(hào)做索引的類似環(huán)的陣列中頭描述符;尾部描述符;公共描述符;和信用描述符。因此,有頭描述符42的陣列、尾部描述符44的陣列、公共描述符46的陣列和信用描述符48的陣列。頭描述符42的陣列包括用于每個(gè)環(huán)的頭描述符50,即用于環(huán)0的頭描述符0、用于環(huán)1的頭描述符1,..,用于環(huán)′n′的頭描述符‘n’,同樣地有用于每個(gè)環(huán)的尾部描述符52、公共描述符54和信用描述符56。每個(gè)環(huán)的描述符通過使用那個(gè)環(huán)號(hào)相對(duì)于在環(huán)管理器30中各個(gè)CSR存儲(chǔ)的基礎(chǔ)地址來定位,作為描述符塊的索引。更具體地,頭描述符陣列基礎(chǔ)CSR 58、尾部描述符陣列基礎(chǔ)CSR 60、公共描述符陣列基礎(chǔ)CSR 62、和信用描述符基礎(chǔ)陣列CSR 64分別地保持用于頭描述符陣列42、尾部描述符陣列44、公共描述符陣列46和信用描述符陣列48的基礎(chǔ)地址。一個(gè)特定的環(huán)號(hào)將會(huì)用來訪問頭描述符52、尾部描述符50、公共描述符54和信用描述符56,這四個(gè)陣列的每個(gè)的一個(gè),和每個(gè)對(duì)具體環(huán)相關(guān)。頭描述符提供指向下一個(gè)記錄或?qū)⒃谙鄳?yīng)環(huán)中讀取的位置的指針,同時(shí)尾部描述符提供指向下一個(gè)記錄或?qū)⒃谙鄳?yīng)環(huán)中寫入的位置的指針如圖2針對(duì)環(huán)′n′所示。環(huán)描述符的不同部分是分離的以便對(duì)它們個(gè)別地訪問和保留在不同高速緩存行(通過不同處理器),由于錯(cuò)誤共享這使高速緩存活動(dòng)和相干性業(yè)務(wù)減到最少。當(dāng)共享相干存儲(chǔ)系統(tǒng)的具有高速緩存的兩個(gè)代理,每個(gè)反復(fù)訪問不同和不相關(guān)位置時(shí),該位置碰巧存在于相同的高速緩存行并且因此在兩個(gè)代理高速緩存之間引起額外的和不必要的相干性業(yè)務(wù),錯(cuò)誤共享發(fā)生。
每個(gè)環(huán)能夠獨(dú)立用于尺寸配置和能夠獨(dú)立位于在存儲(chǔ)器中(即,不同環(huán)可以不存在于存儲(chǔ)器的相鄰區(qū)域)。一些技術(shù)適用于環(huán)尺寸配置。例如,一個(gè)環(huán)或者一組環(huán)能由指示環(huán)尺寸的控制寄存器來配置。交替的,環(huán)尺寸可以作為數(shù)據(jù)存儲(chǔ)在環(huán)的描述符中。表示環(huán)的每個(gè)存儲(chǔ)器陣列的尺寸和校準(zhǔn)可以限制為2的乘方(power)以允許滿指針在環(huán)描述符的一個(gè)位置中存儲(chǔ)。通過使用環(huán)-尺寸來確定哪個(gè)高位位保持常量和哪個(gè)包括在增量指針中,用于每個(gè)環(huán)的環(huán)基礎(chǔ)和增量索引能夠有效地在環(huán)的描述符中存儲(chǔ)。可選地,通過存儲(chǔ)環(huán)upper_bound地址和環(huán)尺寸(或等效地ring_base和環(huán)尺寸),一個(gè)能支持任意的校準(zhǔn)和/或獨(dú)立于定位的環(huán)的任意尺寸,并且當(dāng)?shù)竭_(dá)邊界時(shí)指針復(fù)位到界限減去尺寸(或等效地設(shè)置成基礎(chǔ)值)。閾值(例如,用于推出新的公共指針,用于從公共池提取信用和用于溢出信用到公共池)都是每環(huán)獨(dú)特地可配置的。
環(huán)促進(jìn)消息在代理之間在兩個(gè)方向通過。硬件環(huán)管理器30可以用用于在兩個(gè)方向通信的模式定義,在每-環(huán)基礎(chǔ)上選擇。即,每個(gè)環(huán)都是可配置以選擇是否一個(gè)或者多個(gè)GPP14或處理器12的硬件擔(dān)當(dāng)消費(fèi)者,并且另一個(gè)擔(dān)當(dāng)生產(chǎn)者。方向也能夠硬布線。給定的環(huán)僅僅配置為用于一個(gè)方向。
圖3顯示根據(jù)一個(gè)例子配置的在GPP 14(作為環(huán)用戶)和處理器12的環(huán)用戶31之間傳遞的消息的每個(gè)環(huán)所選擇的方向。圖中顯示的是三個(gè)環(huán)用戶31a、31b和31c、和三個(gè)環(huán)41a、41b和41c。在這個(gè)例子中,環(huán)用戶31a和31b寫入環(huán)41a(由GPP 14讀取),環(huán)用戶31c寫入環(huán)41b(也由GPP 14讀取)以及GPP14寫入環(huán)41c(依次由環(huán)用戶31c閱讀)。因此,環(huán)用戶31a和31b是生產(chǎn)者以及GPP 14是關(guān)于環(huán)41a的消費(fèi)者,環(huán)用戶31是生產(chǎn)者以及GPP 14是關(guān)于環(huán)41b的消費(fèi)者,以及GPP 14是生產(chǎn)者和環(huán)31c是關(guān)于環(huán)41c的消費(fèi)者。應(yīng)該注意的是,從環(huán)入列和出列的消息內(nèi)容完全相當(dāng)于應(yīng)用定義以及不由環(huán)管理器30的硬件觀察或修改。
圖4顯示用于頭描述符50的典型數(shù)據(jù)結(jié)構(gòu)布局,其僅僅由相關(guān)環(huán)的消費(fèi)者訪問。頭描述符50保持下面的字段頭指針(Head_Ptr)字段70,在前的尾部指針(Prev_Tail)字段72,和取得的環(huán)數(shù)(C_Count)字段74。其也能夠在環(huán)尺寸字段(Ring_Sz)76中存儲(chǔ)環(huán)尺寸的拷貝。
圖5顯示用于尾部描述符52的典型數(shù)據(jù)結(jié)構(gòu)布局。尾部描述符52由相關(guān)的環(huán)的生產(chǎn)者使用,和從未由消費(fèi)者訪問過。尾部描述符52包括下面的字段尾部(或生產(chǎn))指針(Tail_Ptr)字段80;數(shù)(P_Count)字段82;閾值字段84;和環(huán)尺寸字段86。頭和尾部描述符能夠包括指示環(huán)尺寸的相同的編碼的值,其用于確定當(dāng)″包″環(huán)陣列開始的指針。
圖6顯示用于公共描述符54的典型數(shù)據(jù)結(jié)構(gòu)布局。公共描述符54由生產(chǎn)者寫入和由消費(fèi)者讀取。到公共描述符的訪問因此在系統(tǒng)10的高速緩存中可以引起高速緩存相干性業(yè)務(wù)。公共描述符54包括公共尾部指針(Public_Tail)字段90以存儲(chǔ)在尾部描述符52的Tail_Ptr字段80中存儲(chǔ)的尾部指針的近似版本。近似尾部指針表示已經(jīng)寫入到用于參考環(huán)的環(huán)陣列41的所有或較少的記錄,以及可以表示比在尾部描述符52的私人尾部指針40指示出的更少的記錄。
現(xiàn)在參見圖4-6,頭描述符50包含對(duì)消費(fèi)者的私人數(shù)據(jù),尾部描述符52包含對(duì)生產(chǎn)者的私人數(shù)據(jù),和公共描述符54包含通知給消費(fèi)者的生產(chǎn)指針的公共版本。在頭指針字段70中存儲(chǔ)的頭(消耗)指針提供由消耗訪問操作(例如,基于ME產(chǎn)生了′到達(dá)(get)′指令)要從環(huán)讀取的下一個(gè)項(xiàng)(記錄)的地址。在Tail_Ptr字段80中存儲(chǔ)的尾部指針包含由生產(chǎn)訪問操作(例如,由ME產(chǎn)生′放(put)′指令)要對(duì)環(huán)寫入的下一個(gè)項(xiàng)的地址。在優(yōu)選實(shí)施例中,頭和尾部指針用環(huán)數(shù)據(jù)存儲(chǔ)區(qū)域41的基礎(chǔ)的物理地址(共享存儲(chǔ)器的位置)初始化。Prev_Tail字段72存儲(chǔ)公共尾部指針的最近高速緩存的值。C_Count 74包含環(huán)中可用于消耗訪問操作的數(shù)據(jù)數(shù)量(記錄的數(shù)量)。只要C_Count字段74的值表示在環(huán)中存在的數(shù)據(jù)的數(shù)量小于消費(fèi)者請(qǐng)求的時(shí)候,生產(chǎn)指針的公共值,即存儲(chǔ)在Public_Tail字段90中的公共尾部指針,從在共享存儲(chǔ)器中公共描述符54得到,其間的(進(jìn)行包如果必要)增量和高速緩存(在前尾部指針)值被確定,以及產(chǎn)生的值(指示自從最后的檢查入列的記錄的數(shù)量)被增加到C_Count字段74。Prev_Tail字段72維持最近從公共描述符54的Public_Tail字段90讀取的公共尾部指針的拷貝。
參見圖5-6,P_Count字段82的值表示從對(duì)Public_Tail字段90的最后更新開始已經(jīng)添加到環(huán)尾部的數(shù)據(jù)的量(記錄的計(jì)數(shù))。記錄可以是由共享環(huán)的生產(chǎn)者和消費(fèi)者相互認(rèn)同的任何尺寸。當(dāng)P_Count字段82的值變得大于在閾值字段84中存儲(chǔ)的閾值時(shí),Tail_Ptr字段80的值被拷貝到Public_Tail字段90并且把P_Count字段82的值設(shè)置成′0′。到Public_Tail字段的更新也能夠由超時(shí)機(jī)制觸發(fā),下文參考圖11描述。P_Count 82的初始值是′0′。
更高的閾值產(chǎn)生更少頻率的更新,以及因而在FSB 16使用較少的周期。更高的閾值在通知消費(fèi)者關(guān)于環(huán)的新信息時(shí)也引起得更多延遲。閾值字段可以包含閾值或指示閾值的碼。在一個(gè)實(shí)施例中,3-位值可以被使用來定義八個(gè)相應(yīng)閾值(每一個(gè)規(guī)定一給定數(shù)量的記錄)。
因此,P_Count字段82的值提供了自從公共生產(chǎn)指針以私人(實(shí)際)生產(chǎn)指針值最后一次更新開始,入列的項(xiàng)的數(shù)目的計(jì)數(shù),并且把存儲(chǔ)在閾值字段84中的閾值與計(jì)數(shù)比較來確定更新公共指針的時(shí)刻以及由此把那些新項(xiàng)傳給消費(fèi)者。Public_Tail字段90由消費(fèi)者讀取和使用以更新頭描述符50的C_Count字段74,只要C_Count字段74的值比滿足消耗訪問操作的數(shù)據(jù)需要的數(shù)量少。生產(chǎn)指針的私人和公共的拷貝因此用于緩和對(duì)消費(fèi)者的通知和最小化高速緩存/存儲(chǔ)器業(yè)務(wù)。注意到消費(fèi)者可以定期地輪詢環(huán)或從生產(chǎn)者處由邊帶通信被通知(諸如中斷)在環(huán)中可提供數(shù)據(jù),可以利用閾值來批處理這樣的通知并且可以利用相關(guān)的計(jì)時(shí)器來界定通知延遲。為了支持輪詢,如果在環(huán)中不存在足夠的數(shù)據(jù)來滿足請(qǐng)求的尺寸,環(huán)數(shù)據(jù)結(jié)構(gòu)可以配置為返回NULL值。
圖7顯示用于信用描述符56的典型數(shù)據(jù)結(jié)構(gòu)布局,其由生產(chǎn)者和消費(fèi)者二者訪問。到信用描述符的訪問因此在FSB 16能夠產(chǎn)生高速緩存相干性業(yè)務(wù)。信用描述符56保持信用字段100和鎖字段102。信用字段100是指示環(huán)上可用的空閑位置的數(shù)量的計(jì)數(shù)。信用字段100的初始值是環(huán)的最大尺寸(即,位置的數(shù)量,基于指定的環(huán)尺寸。)鎖字段102為一個(gè)位,用來允許生產(chǎn)者和消費(fèi)者到信用字段100的專有訪問。生產(chǎn)者和消費(fèi)者在修改信用字段100前通過設(shè)置鎖字段102的鎖位來鎖住信用描述符。它們能夠用最小單位的交換指令使用公知的算法獲得和釋放互相拒絕鎖,以及僅僅當(dāng)它們獲得鎖的時(shí)候才能夠修改信用值。
消費(fèi)者和生產(chǎn)者之間交換的環(huán)信用可以表示在環(huán)的每一端單一環(huán)用戶的行動(dòng),或可以表示在環(huán)上任一個(gè)端上共享該環(huán)的環(huán)用戶的多重的集中行動(dòng)。共享環(huán)的每個(gè)用戶能夠使用互相拒絕鎖以最小單位將公共信用計(jì)數(shù)的信用移動(dòng)到本地、私人的變量或者返回信用給公共池。使公共信用數(shù)目計(jì)數(shù)由消費(fèi)者遞增和由生產(chǎn)者遞減,當(dāng)信用從消費(fèi)用戶的私人本地″池″(私人信用計(jì)數(shù)在環(huán)的消耗端由用戶在本地信用變量維持)移動(dòng)到公共信用池(即,信用描述符的信用字段值例如信用描述符56的信用100)到生產(chǎn)用戶的私人本地池(私人信用計(jì)數(shù)在環(huán)的生產(chǎn)端由用戶在本地信用變量維持)。在示例的實(shí)施例中,環(huán)用戶本身保持本地信用變量和執(zhí)行信用管理。可選地,或此外,私人信用計(jì)數(shù)可以用環(huán)描述符的其它本地變量?jī)?chǔ)存(用于消費(fèi)者的私人信用計(jì)數(shù)的頭描述符和用于生產(chǎn)者的私人信用數(shù)目的尾部描述符)。
生產(chǎn)者從可用的本地信用中減去在生產(chǎn)訪問操作期間寫入的環(huán)位置的數(shù)量。只要生產(chǎn)者確定本地信用的數(shù)量已經(jīng)降低到低于低的″水印″(或閾值水平)時(shí),生產(chǎn)者就從信用字段100補(bǔ)充它的本地信用,。例如,只要本地信用的數(shù)量到達(dá)200以下,生產(chǎn)者能從公共信用池那里獲取5000個(gè)信用,這要首先檢查來確保那個(gè)公共信用池作為結(jié)果不會(huì)到達(dá)0以下。以這個(gè)方式成組分配信用并且將它們本地高速緩存使得用于分配環(huán)信用的共享存儲(chǔ)器業(yè)務(wù)的數(shù)量減到最少。當(dāng)每次完成對(duì)從環(huán)讀取的數(shù)據(jù)的處理,并將所移除的環(huán)項(xiàng)的數(shù)目增加到本地信用后,消費(fèi)者就積累信用到它的本地信用變量里。當(dāng)消費(fèi)者確定本地信用的數(shù)量已經(jīng)到達(dá)高于高水印(或者閾值水平)時(shí),消費(fèi)者向信用字段100中添加本地信用。本地積累信用然后成組返回信用,使得用于返回環(huán)信用到公共信用池的共享存儲(chǔ)器業(yè)務(wù)的數(shù)量減到最少。由于如上所述成批處理分配和釋放信用,實(shí)際上將在環(huán)上有比信用指示的更多的可用空間。大數(shù)量的(或所有可用的)信用可以同時(shí)分配或釋放以使對(duì)共享的信用字段的訪問和沖突的可能性減到最少,其在互相拒絕(互斥)鎖保護(hù)中增加和減少,該鎖是在硬件環(huán)管理器30和共享存儲(chǔ)器的軟件環(huán)管理器32之間共享的。
在一個(gè)典型實(shí)施例中,信用管理被在GPP 14和處理器12的環(huán)用戶上的軟件執(zhí)行??蛇x地信用管理能由硬件執(zhí)行。同樣注意的是,這個(gè)機(jī)制不排除多重生產(chǎn)者對(duì)特定的一個(gè)環(huán)的寫入和多重消費(fèi)者從特定的一個(gè)環(huán)進(jìn)行讀取的情況。在那情況下,理想的是設(shè)置水印閾值以便于所有生產(chǎn)者都能夠預(yù)取足夠的信用到他們的本地信用池里,無需使得其它生產(chǎn)者缺乏,以及環(huán)被適當(dāng)?shù)脑O(shè)置尺寸來解決由于多重如此″信用高速緩存″的較少有效的環(huán)利用。此外,當(dāng)多重生產(chǎn)者共享環(huán)時(shí)生產(chǎn)者不應(yīng)該自動(dòng)地取得所有可用的信用而應(yīng)該具有確保貪婪的信用獲取不使同等生產(chǎn)者缺乏的策略。用于返回信用的環(huán)尺寸和消費(fèi)者閾值同樣地必須解決多于一個(gè)消費(fèi)者在收集成批的信用返回給用于那環(huán)的池的事實(shí)。用于從公共池獲取信用和用于返回信用到公共池的水印閾值對(duì)于每個(gè)環(huán)和每個(gè)環(huán)用戶而言都是唯一可配置的。
圖8示出在圖1的多處理的環(huán)境下私人和公共的信用計(jì)數(shù)的典型使用。這個(gè)例子表示用于單一環(huán)的信用傳送,示為用于給定的方向配置的環(huán)′n′41,其中GPP 14作為關(guān)于環(huán)′n′的生產(chǎn)者操作以及處理器12作為消費(fèi)者操作。如圖所示,用于環(huán)′n′的私人信用計(jì)數(shù)103在GPP 14維持以及私人信用計(jì)數(shù)104在處理器12用于維持環(huán)′n′(更具體地,由處理器12的特定環(huán)用戶)。應(yīng)該意識(shí)到的是每個(gè)處理器都維持至少一個(gè)用于每個(gè)使用的環(huán)的單獨(dú)私人信用計(jì)數(shù),以及用于每個(gè)環(huán)的方向是基于環(huán)配置的,如前面討論的。因此,對(duì)于另一個(gè)環(huán),GPP 14可以是消費(fèi)者并且處理器12的環(huán)用戶可以是生產(chǎn)者。在這個(gè)例子中,生產(chǎn)者入列環(huán)記錄(如箭頭105所示)。對(duì)于每個(gè)入列的記錄,生產(chǎn)者遞減一個(gè)私人信用計(jì)數(shù)103(如箭頭106所示)。消費(fèi)者出列環(huán)記錄(如箭頭107所示)并且對(duì)每個(gè)出列的記錄(如箭頭108所示)遞增一個(gè)私人信用計(jì)數(shù)104。周期性地,或在出列操作的開始(響應(yīng)于高水印閾值交叉的檢測(cè))消費(fèi)者引起信用成批地傳送,從私人信用計(jì)數(shù)104到環(huán)的公共信用計(jì)數(shù)100(如箭頭109a所示)。周期性地,或在入列操作的開始(響應(yīng)于低水印閾值交叉的檢測(cè))生產(chǎn)者引起信用成批地傳送,從公共信用計(jì)數(shù)100到私人信用計(jì)數(shù)103(如箭頭109b所示)。信用的傳送需要在互相拒絕鎖的保護(hù)中從公共信用計(jì)數(shù)減去信用,并且增加對(duì)私人生產(chǎn)者的信用計(jì)數(shù)的信用。
消耗訪問(出列)和生產(chǎn)訪問(入列)操作二者都訪問部分環(huán)描述符。參考圖9,在一個(gè)典型實(shí)施例中,用于環(huán)描述符讀取110的隨后任務(wù)被用于兩個(gè)操作執(zhí)行。首先,環(huán)管理器計(jì)算112由操作112需要的環(huán)描述符的地址。環(huán)描述符通過增加多倍的環(huán)數(shù)量給適當(dāng)?shù)幕A(chǔ)值來確定,其中,乘數(shù)表示記錄的尺寸。例如,用于頭描述符,環(huán)數(shù)量倍數(shù)(time)′n′被增加到Ring_Head_Base_CSR存儲(chǔ)的值。下一步,如果指示的環(huán)描述符在高速緩存,環(huán)管理器確定114。對(duì)于高速緩存命中的情況,環(huán)管理器設(shè)置116高速緩存行狀態(tài)為′M′(即,修改MOSI狀態(tài))。對(duì)于高速緩存丟失的情況,環(huán)管理器分配118高速緩存行。如果分配的高速緩存行為′M′狀態(tài)時(shí)其確定120。如果分配的高速緩存行確定為′M′狀態(tài),環(huán)管理器初始化122 FSB存儲(chǔ)器寫入以寫出(″轉(zhuǎn)儲(chǔ)清除″)犧牲數(shù)據(jù)(victim data)給共享存儲(chǔ)器。環(huán)管理器通過FSB存儲(chǔ)器讀取124從共享存儲(chǔ)器(在所計(jì)算的地址處)返回的高速緩存行填充數(shù)據(jù)到高速緩存中分配的高速緩存行,以及把高速緩存行狀態(tài)設(shè)置成′M′(在116)。
參考圖10,示出一個(gè)典型的生產(chǎn)訪問操作130。如果私人信用計(jì)數(shù)降低到低于預(yù)定的低水印,請(qǐng)求所述操作的代理從信用描述符字段獲得132信用。進(jìn)行請(qǐng)求的代理也移動(dòng)134要添加到環(huán)的數(shù)據(jù)到寫入緩存。如果確定尾部描述符已經(jīng)不駐留在高速緩存中,環(huán)管理器閱讀136尾部描述符到高速緩存里。這個(gè)尾部描述符讀取可以根據(jù)環(huán)描述符閱讀110執(zhí)行,參考圖9描述。環(huán)管理器設(shè)置相關(guān)于保持尾部描述符為″鎖″高速緩存行的高速緩存行的鎖狀態(tài)位,即確保在高速緩沖行上最小單位(atomically)地一系列操作的完成,沒有任何相干性活動(dòng)的中斷。將P_Count字段的值和閾值字段的閾值進(jìn)行比較140,以確定P_Count字段的值是否大于閾值中的值。如果這個(gè)比較指示P_Count值比閾值更大,環(huán)管理器拷貝142保留在Tail_Ptr字段80里的尾部指針到公共描述符Public_Tail的字段以更新公共尾部指針。如果P_Count值不大于閾值或者PublicTail字段更新被執(zhí)行以后,環(huán)管理器根據(jù)被寫入環(huán)以及高速緩存的數(shù)據(jù)的數(shù)量,更新144Tail_Ptr和P_Count字段的值,并且清除146高速緩存行鎖狀態(tài)位為″解鎖″高速緩存行。
仍然參考圖10,環(huán)管理器檢查148高速緩存來確定是否高速緩存具有通過預(yù)修改的尾部指針尋址的高速緩存行的拷貝?;诟咚倬彺娴姆峙洳呗裕褂肨ail_Ptr的值作為地址,環(huán)管理器寫入150數(shù)據(jù)到高速緩存或共享存儲(chǔ)器里。應(yīng)該注意的是,當(dāng)環(huán)描述符總是被高速緩存時(shí),如果該地址的高速緩存分配策略配置指示為高速緩存分配應(yīng)當(dāng)發(fā)生時(shí),環(huán)寫入(也讀取)數(shù)據(jù)僅僅被高速緩存。
除了在環(huán)情況中使用的地址是被從環(huán)數(shù)量和指令中間接取得之外,共享存儲(chǔ)器寫入150與用于非-環(huán)-相關(guān)共享存儲(chǔ)器訪問的共享存儲(chǔ)器寫入大體相同。根據(jù)一個(gè)典型實(shí)施例,存儲(chǔ)器的細(xì)節(jié)寫入150,如圖11所示。參考11,環(huán)管理器為每個(gè)高速緩存行確定152寫入數(shù)據(jù)是否命中高速緩存行并且高速緩存行為′E′還是′M′狀態(tài)。如果如此,任何FSB事務(wù)是不需要的。環(huán)管理器將命中那個(gè)高速緩沖行的數(shù)據(jù)寫入154到高速緩存里的,并改變156高速緩存行狀態(tài)′E′到′M′(或者使?fàn)顟B(tài)不變?nèi)绻呀?jīng)是′M′狀態(tài))。如果環(huán)管理器確定158數(shù)據(jù)命中高速緩沖行并且高速緩沖行狀態(tài)是′S′,則環(huán)管理器初始化160在FSB上的FSB存儲(chǔ)器讀取和失效。當(dāng)那個(gè)事務(wù)完成時(shí),環(huán)管理器引起162寫入數(shù)據(jù)被合并入從共享存儲(chǔ)器返回的高速緩存行和合并的數(shù)據(jù)被寫入高速緩存里。環(huán)管理器改變164高速緩存行狀態(tài)為′M′。如果尋址的數(shù)據(jù)的任何部分不在高速緩存內(nèi),下一個(gè)操作取決于高速緩存分配策略,所以環(huán)管理器檢查168高速緩存分配策略。如果高速緩存分配策略是′寫入分配′,環(huán)管理器對(duì)每個(gè)丟失的高速緩存行分配170高速緩存行,并初始化172 FSB讀取來充滿那個(gè)高速緩存行。FSB讀取使用一種存儲(chǔ)器讀取和失效及WB屬性的請(qǐng)求類型。環(huán)管理器初始化174 FSB存儲(chǔ)器寫入以對(duì)于任何分配的在′M′狀態(tài)的高速緩沖行,寫出犧牲數(shù)據(jù)給共享存儲(chǔ)器。當(dāng)用于每個(gè)高速緩存行填充的數(shù)據(jù)被返回在FSB 16時(shí),環(huán)管理器存儲(chǔ)176數(shù)據(jù)到高速緩存中分配的行。環(huán)管理器將命中分配的高速緩沖行的寫入數(shù)據(jù)寫入到高速緩存中,并且設(shè)置了178高速緩存行狀態(tài)為′M′(如果還沒有設(shè)置成′M′)。如果,在168,其確定高速緩存分配策略是′沒有分配’,環(huán)管理器對(duì)于沒有在高速緩存找到的地址的每個(gè)塊初始化180 FSB寫入。FSB寫入使用存儲(chǔ)器寫入和WC屬性的請(qǐng)求類型。
除了信用更新以外的所有活動(dòng)(在132)由處理器12的環(huán)管理器30執(zhí)行。類似的活動(dòng)由運(yùn)行在GPP 14的軟件環(huán)管理器32執(zhí)行。
生產(chǎn)訪問操作基于閾值更新Public_Tail的值,如上所述(在140和142)。為了處理積累的操作長(zhǎng)時(shí)間沒有到達(dá)閾值(例如,由于消息生產(chǎn)中的暫停)的情況,一個(gè)超時(shí)機(jī)制可以被提供來確保消費(fèi)者被通知那些消息的到達(dá)。否則,用于特定環(huán)的P_Count值和環(huán)描述符可以在無限制的時(shí)間內(nèi)依然如故。超時(shí)可以由下述部件處理用于處理器環(huán)用戶31到GPP 14通信的環(huán)的環(huán)管理器的硬件,和環(huán)的GPP 14中的環(huán)管理器軟件,所述環(huán)由作為生產(chǎn)者的GPP 14和由在相反方向通信的作為消費(fèi)者的環(huán)用戶31使用。
超時(shí)機(jī)制的一個(gè)例子是環(huán)管理器30里的硬件處理以及環(huán)管理器32的例行程序的軟件處理,該環(huán)處理器掃描所有尾部/生產(chǎn)描述符并且如果特定環(huán)訪問時(shí)是非空的就觸發(fā)該環(huán)的更新。每個(gè)環(huán)每當(dāng)超時(shí)期間應(yīng)該被訪問。
另一個(gè)示例實(shí)施例中,環(huán)管理器30可以包括超時(shí)狀態(tài)機(jī)形式的超時(shí)支持來管理某些數(shù)量的環(huán)超時(shí)。
在這樣的例子中,和如圖12所示,超時(shí)狀態(tài)機(jī)(SM)190如下操作。在復(fù)位狀態(tài)時(shí),把超時(shí)SM放入‘清潔’狀態(tài)(狀態(tài)192)。當(dāng)放指令被執(zhí)行時(shí),那個(gè)環(huán)的狀態(tài)被設(shè)置為″放″狀態(tài)(狀態(tài)194)。在超時(shí)時(shí),狀態(tài)機(jī)從″放″狀態(tài)前進(jìn)到″時(shí)間1″狀態(tài)(狀態(tài)196)。在第二超時(shí)時(shí),超時(shí)SM從″時(shí)間1″狀態(tài)前進(jìn)到″時(shí)間2″狀態(tài)(狀態(tài)198)。在″時(shí)間2″狀態(tài),尾部描述符的Tail_Ptr 80(從圖5)的更新到公共描述符Public_Tail 90是未決的。從″時(shí)間2″到″清潔″狀態(tài)有兩個(gè)出口。如果超時(shí)SM在″時(shí)間2″狀態(tài),在主要FSB狀態(tài)機(jī)的下一個(gè)發(fā)送執(zhí)行更新??蛇x地,如果超時(shí)SM進(jìn)入″時(shí)間2″狀態(tài)和更新在放的過程期間被完成,超時(shí)SM立即進(jìn)入″清潔″狀態(tài),因?yàn)樵撌录⒏碌絇ublic_Tail。超時(shí)SM 160記錄任何還未更新到Public_Tail的未完成的放操作。超時(shí)SM 190等待兩個(gè)計(jì)時(shí)間隔,而不是立即觸發(fā)更新。那個(gè)時(shí)候,如果放操作仍然未完成,則更新。對(duì)于額外等待,很可能的是,在計(jì)時(shí)觸發(fā)更新以前經(jīng)常使用的環(huán)將通過(cross)閾值(以及因而需要″正?!甯?。
理想的是當(dāng)生產(chǎn)指針在共享的相干存儲(chǔ)器中維持和代理有不同高速緩存的拷貝時(shí),把公共生產(chǎn)指針的更新頻率減少,如上所述。每個(gè)到生產(chǎn)指針的寫入訪問在寫入者的高速緩存中將該拷貝置于′M′狀態(tài),并且隨后寫入能夠立即提供業(yè)務(wù)。每個(gè)由另一個(gè)代理對(duì)該指針的讀取將其移動(dòng)到′S′狀態(tài),要求寫入者在相干總線上出去,以重新得到用于下一個(gè)入列增量指針變量的專有所有權(quán)。有利的是,當(dāng)消息由代理間的高通過量傳送時(shí),將這樣相干的事務(wù)處理的數(shù)目減到最少。成批的通知也能夠通過攤銷進(jìn)入和離開服務(wù)程序的軟件開銷來幫助優(yōu)化處于高流量情況的軟件,僅僅當(dāng)有一整個(gè)成批記錄要服務(wù)時(shí)調(diào)用(或者當(dāng)周期性輪詢(poll)環(huán)時(shí)期望高成功率)。強(qiáng)制更新公共指針的超時(shí)機(jī)制幫助確保部分批處理不用等待服務(wù)太久。
圖13個(gè)表示典型的消耗訪問操作200。如果必要,請(qǐng)求代理根據(jù)如果由本地代理維持的私人信用計(jì)數(shù)超過預(yù)定的高水印,增加信用給信用描述符的信用字段值,來返回202信用。環(huán)管理器讀取204頭描述符到高速緩存里,如果其已經(jīng)不在高速緩存中。頭描述符讀取根據(jù)環(huán)描述符讀取110(圖9)執(zhí)行。
環(huán)管理器比較206頭描述符中C_Count字段74的值和消息尺寸來確定環(huán)中是否足夠的數(shù)據(jù)是可用的來完成請(qǐng)求的操作。如果C_Count 74測(cè)試指示環(huán)中沒有足夠的數(shù)據(jù)(即,C_Count字段74的值小于消息尺寸),則環(huán)管理器讀取208公共描述符54到高速緩存里,如果公共描述符54已經(jīng)沒有高速緩存。公共描述符讀取也能夠根據(jù)環(huán)描述符讀取110(圖9)執(zhí)行。環(huán)管理器設(shè)置210用于保持頭描述符的高速緩存行的高速緩存行同步狀態(tài)位。其使用PublicTail 90字段值更新212 C_Count 74值和Prev_Tail 72字段,如前所述。如果,在186,C_Count字段74的值指示環(huán)中有足夠的數(shù)據(jù)來完成請(qǐng)求的操作,則沒有對(duì)C_Count 74和Prev_Tail 72的更新被執(zhí)行。取而代之,C_Count 74測(cè)試后跟隨有根據(jù)設(shè)置214用于保持頭描述符的高速緩存行的高速緩存行鎖狀態(tài)位。
在高速緩存行鎖狀態(tài)位被設(shè)置并且根據(jù)Public_Tail 90字段的C_Count 74和Prev_Tail 72字段的任何必要的頭描述符更新被執(zhí)行之后,環(huán)管理器根據(jù)消息尺寸(被從環(huán)消除的數(shù)據(jù)的數(shù)量)更新216 Head_Ptr 70和C_Count 74字段。當(dāng)那些已經(jīng)更新時(shí),環(huán)管理器清除218高速緩存行鎖狀態(tài)位。
環(huán)管理器檢查220高速緩存來確定其是否保持所有通過預(yù)修改的頭指針尋址的數(shù)據(jù)。如果有高速緩存丟失,環(huán)管理器從共享存儲(chǔ)器讀取222該數(shù)據(jù)到高速緩存,基于使用頭指針作為地址的高速緩存分配策略。然后環(huán)管理器提供224請(qǐng)求代理的數(shù)據(jù)。如果數(shù)據(jù)已經(jīng)駐留在高速緩存則將其提供給請(qǐng)求代理(在224)而無需FSB共享存儲(chǔ)器訪問。
共享存儲(chǔ)器讀取大體相同于用作非-環(huán)-相關(guān)的共享存儲(chǔ)器訪問的讀取,除了環(huán)情況中使用的地址從環(huán)的數(shù)量獲得。根據(jù)一個(gè)典型實(shí)施例的共享存儲(chǔ)器讀取訪問222的細(xì)節(jié)如圖14所示。參考圖14,環(huán)管理器將任何在高速緩存找到的請(qǐng)求數(shù)據(jù)轉(zhuǎn)移230到讀取緩沖。請(qǐng)求數(shù)據(jù)在那里維持直到所有請(qǐng)求的讀取數(shù)據(jù)都在讀取緩沖中。環(huán)管理器確定232是否有尋址的數(shù)據(jù)的任何部分不在高速緩存。如果這樣,環(huán)管理器檢查234高速緩存分配策略。如果高速緩存分配策略是′讀取分配′,環(huán)管理器對(duì)每個(gè)丟失的高速緩存行分配236高速緩存行,并初始化238 FSB讀取來充滿那個(gè)分配的高速緩存行。每個(gè)FSB讀取都使用存儲(chǔ)器數(shù)據(jù)讀取和WB的屬性的請(qǐng)求類型。對(duì)于每個(gè)預(yù)先分配的行,如果行是′M′狀態(tài),環(huán)管理器初始240 FSB存儲(chǔ)器寫入來寫出犧牲數(shù)據(jù)到共享存儲(chǔ)器。當(dāng)用于每個(gè)高速緩存行填充的數(shù)據(jù)回到FSB16,將其存儲(chǔ)242在高速緩存的分配行,并且高速緩存行狀態(tài)根據(jù)FSB總線探聽響應(yīng)設(shè)置244為′E′或′S′(如果沒有在另一高速緩存中找到就為′E′,如果在另一個(gè)高速緩存找到則為′S′)。同樣,環(huán)管理器在讀取緩沖存儲(chǔ)246由讀取指令請(qǐng)求的數(shù)據(jù)字。一旦所有請(qǐng)求的讀取數(shù)據(jù)在讀取緩存,環(huán)管理器將其提供給請(qǐng)求的環(huán)用戶(在224、圖13)。如果在234環(huán)管理器確定高速緩存分配策略是′沒有分配′,則其初始化248對(duì)沒有在高速緩存中找到的每個(gè)地址塊的FSB讀取。每個(gè)FSB讀取都使用存儲(chǔ)器數(shù)據(jù)讀取和WB的屬性的請(qǐng)求類型。當(dāng)每個(gè)讀取的數(shù)據(jù)回到FSB 16時(shí),將其存儲(chǔ)250在讀取緩沖,而不在高速緩存中存儲(chǔ)。一旦所有請(qǐng)求的讀取數(shù)據(jù)在讀取緩存,其被提供給請(qǐng)求的環(huán)用戶(在224、圖13)。
除了信用更新以外的所有活動(dòng)(在202)由處理器12的環(huán)管理器30執(zhí)行。類似的活動(dòng)由運(yùn)行在GPP 14的軟件環(huán)管理器執(zhí)行。
在給定的環(huán)可以被使用之前,其必須初始化。初始化由在代理上運(yùn)行的軟件處理,例如,處理器的環(huán)用戶31、或者GPP 14。參考圖15,典型的初始化處理260通過分配262共享存儲(chǔ)器給環(huán)描述符開始。四個(gè)區(qū)域被分配,一個(gè)用于頭描述符陣列,一個(gè)用于尾描述符陣列,一個(gè)用于公共描述符的陣列,一個(gè)用于信用描述符陣列,如前所述。處理260為四個(gè)區(qū)域的每個(gè)分別寫入264開始地址到Ring_Head_Base、Ring_Tail_Base、Ring_Public_Base、和Ring_Credit_BaseCSRs里?;诿總€(gè)環(huán)的選擇的環(huán)尺寸,處理260在共享存儲(chǔ)器中分配266用于環(huán)數(shù)據(jù)存儲(chǔ)區(qū)域的存儲(chǔ)。通過對(duì)環(huán)數(shù)據(jù)存儲(chǔ)區(qū)域?qū)懭刖哂谢A(chǔ)值的這些描述符,處理為每個(gè)環(huán)初始化268四個(gè)環(huán)描述符的每一個(gè)。用于特定環(huán)的生產(chǎn)指針和消耗指針初始化到相同值。頭和尾部結(jié)構(gòu)復(fù)制尺寸信息和環(huán)基礎(chǔ)(使指針不增加的部分)以避免圍繞不必要的共享信息的相干性業(yè)務(wù)的需要。
如上所述,多重生產(chǎn)者和/或者消費(fèi)者可以對(duì)相同處理器來的環(huán)數(shù)據(jù)操作。例如,多重處理器核心可以期望給/從環(huán)寫入/讀取數(shù)據(jù)。許多實(shí)施例能夠處理多重生產(chǎn)者/消費(fèi)者。例如,處理器可以著重于單一環(huán)生產(chǎn)者和/或消費(fèi)者代理,以處理從其他代理接收的環(huán)請(qǐng)求。例如,不同處理器核心可以集中(funnel)環(huán)訪問請(qǐng)求到由核心之一操作的環(huán)生產(chǎn)者線程服務(wù)的隊(duì)列里。這樣的實(shí)施例中,單一處理器環(huán)生產(chǎn)者和/或者消費(fèi)者代理可以有私人生產(chǎn)者和/或消費(fèi)者結(jié)構(gòu)中的數(shù)據(jù)的專有控制。
交替地,不同生產(chǎn)者和消費(fèi)者可以獨(dú)立訪問給定的環(huán)的環(huán)數(shù)據(jù)結(jié)構(gòu)。這樣的實(shí)施例中,機(jī)制(例如,互相拒絕鎖(″互斥″))可以用于解決代理之間的爭(zhēng)用問題。例如,頭和尾部描述符可以由互相拒絕(互斥)鎖保護(hù),以限制一次就對(duì)一個(gè)各自的消費(fèi)者或生產(chǎn)者代理的描述符的訪問。交替的,互斥信號(hào)可以在更好的顆粒度(granularity)使用。例如,一個(gè)互斥信號(hào)可以鎖住私人消費(fèi)者指針同時(shí)另外一個(gè)鎖住私人消費(fèi)者信用計(jì)數(shù)。另外,多重代理可以保持自己的信用池,其貢獻(xiàn)給/獲取從私人生產(chǎn)者/消費(fèi)者信用池。
為了表示多重獨(dú)立生產(chǎn)者為特征的實(shí)施例的操作,生產(chǎn)者可以通過下述步驟寫入環(huán)記錄,例如獲得對(duì)私人生產(chǎn)者指針的互斥信號(hào);從生產(chǎn)者信用計(jì)數(shù)獲得必要信用;寫入環(huán)記錄;更新私人生產(chǎn)者指針;和釋放互斥信號(hào)。潛在地,生產(chǎn)者可以調(diào)整共享的生產(chǎn)者指針和/或者共享的信用計(jì)數(shù),其也可以需要獲得各個(gè)互斥信號(hào)。同樣地,例如,通過獲得對(duì)私人消費(fèi)者指針的互斥信號(hào);出列環(huán)記錄;更新私人消費(fèi)者指針;和釋放互斥信號(hào),多重獨(dú)立消費(fèi)者能夠出列環(huán)記錄。潛在地,給定的消費(fèi)者可以更新私人消費(fèi)者信用池和/或者公共信用池。再次,這個(gè)更新可能需要一個(gè)或多個(gè)互斥信號(hào)的獲取。
多-處理器系統(tǒng)10(圖1),如上所述,具有環(huán)管理和高速緩存/存儲(chǔ)器相干性,可以在許多應(yīng)用下使用。例如在網(wǎng)絡(luò)應(yīng)用中,可能的是緊密連接分組處理和通用處理,以實(shí)現(xiàn)在網(wǎng)絡(luò)處理器的分組處理單元之間的高通過量的通信和通用處理的控制和/或內(nèi)容處理。例如,圖16所示,分布的處理平臺(tái)270包括由底板276,例如開關(guān)構(gòu)造(如所示),相互連接的葉片272a-272m和行插板274a-274n的集合。例如開關(guān)構(gòu)造可以符合通用開關(guān)接口(CSIX)或者其他的構(gòu)造技術(shù),諸如高級(jí)切換相互連接(ASI)、HyperTransport、Infiniband、外圍部件互連總線(PCI)、以太網(wǎng)、同步光纖網(wǎng)上的分組、RapidIO、和/或通用測(cè)試和用于ATM的操作PHY接口(UTOPIA)。
行插板是線路終端和I/O處理發(fā)生的地方。其可以包括數(shù)據(jù)平面處理(分組處理),和控制平面處理來操作數(shù)據(jù)平面中執(zhí)行策略的管理。葉片272a-272m可以包括操作不被分發(fā)給行插板的控制平面功能的控制葉片;執(zhí)行系統(tǒng)管理功能,諸如驅(qū)動(dòng)器枚舉、路線表管理、全局表管理、網(wǎng)絡(luò)地址轉(zhuǎn)換和對(duì)控制葉片消息的控制葉片;應(yīng)用和業(yè)務(wù)葉片;和內(nèi)容的處理葉片。開關(guān)構(gòu)造或者多個(gè)構(gòu)造也可以在一個(gè)或多個(gè)葉片上存在。網(wǎng)絡(luò)基礎(chǔ)中,內(nèi)容處理可以用于在標(biāo)準(zhǔn)行插板功能之外操作基于密集(intensive)內(nèi)容的處理,包括語音處理,加密卸載和入侵檢測(cè),其中性能要求高。
至少一個(gè)行插板,例如行插板274a,是專業(yè)行插板,即實(shí)現(xiàn)基于系統(tǒng)10的結(jié)構(gòu),來緊緊地將通用處理器的處理智能與網(wǎng)絡(luò)處理機(jī)的更專業(yè)的能力結(jié)合在一起。行插板274a包括媒體接口278以處理在網(wǎng)絡(luò)連接上的通信。每個(gè)媒體接口278都連接在處理器12上,示為網(wǎng)絡(luò)處理器(NP)12。這個(gè)實(shí)施例中,一個(gè)NP用作進(jìn)入處理器并且另一NP用作出處理器,但單一NP也能夠被使用。系統(tǒng)10的其他部分和相互聯(lián)接如圖1所示。在這里在系統(tǒng)10的系統(tǒng)邏輯電路和I/O塊34與開關(guān)構(gòu)造276連接??蛇x地,或者此外,其他基于以多-處理器系統(tǒng)10的應(yīng)用能通過分布的處理平臺(tái)270使用。例如,用于優(yōu)化的存儲(chǔ)處理,理想地用于這樣的應(yīng)用,如企業(yè)服務(wù)器、網(wǎng)絡(luò)存儲(chǔ)器、卸載和存儲(chǔ)子系統(tǒng)應(yīng)用,處理器12能作為I/O處理器實(shí)現(xiàn)。對(duì)于其他應(yīng)用,處理器12仍然可以是協(xié)處理器(用作加速器,例如)或者獨(dú)立的控制平臺(tái)處理器。取決于葉片和行插板的配置,分布的處理平臺(tái)270能實(shí)現(xiàn)開關(guān)器件(例如,開關(guān)或者路由器),服務(wù)器、語音網(wǎng)關(guān)或者其他的類型設(shè)備。
如上所述的技術(shù)可以在許多邏輯電路中實(shí)現(xiàn)。在此使用的術(shù)語邏輯電路包括硬布線的電路、數(shù)字電路、模擬電路、可編程電路,并且依此類推。可編程電路操作配置于制造的項(xiàng)目的指令(例如,易失或者非-易失的存儲(chǔ)器)。
其他的實(shí)施例也在所附權(quán)利要求的范圍中。
權(quán)利要求
1.一種系統(tǒng)包括存儲(chǔ)器;第一處理器,包括至少一個(gè)相關(guān)的高速緩存;以及邏輯電路,操作作為一組環(huán)中至少一個(gè)環(huán)的消費(fèi)者,所述一組環(huán)包含含有存儲(chǔ)在存儲(chǔ)器中的記錄的至少一個(gè)環(huán),所述邏輯電路用于從該至少一個(gè)環(huán)出列記錄;基于出列的環(huán)記錄的數(shù)量,調(diào)整用于記錄的該至少一個(gè)環(huán)的消費(fèi)者信用計(jì)數(shù);基于用于所述記錄的該至少一個(gè)環(huán)的消費(fèi)者信用計(jì)數(shù),調(diào)整用于記錄的該至少一個(gè)環(huán)的共享信用計(jì)數(shù);基于用于記錄的該至少一個(gè)環(huán)的共享生產(chǎn)者指針,為記錄的該至少一個(gè)環(huán)設(shè)置消費(fèi)者生產(chǎn)者指針;第二處理器具有至少一個(gè)相關(guān)的高速緩存;邏輯電路,操作作為所述一組環(huán)中至少一個(gè)環(huán)的生產(chǎn)者,所述一組環(huán)包含含有存儲(chǔ)在存儲(chǔ)器中的記錄的至少一個(gè)環(huán),所述邏輯電路用于入列記錄到該至少一個(gè)環(huán);基于已入列的環(huán)記錄的數(shù)量,調(diào)整用于記錄的該至少一個(gè)環(huán)的生產(chǎn)者信用計(jì)數(shù);基于用于記錄的該至少一個(gè)環(huán)的共享信用計(jì)數(shù),調(diào)整用于記錄的該至少一個(gè)環(huán)的生產(chǎn)者信用計(jì)數(shù);基于用于記錄的該至少一個(gè)環(huán)的生產(chǎn)者信用計(jì)數(shù)的調(diào)整,調(diào)整用于記錄的該至少一個(gè)環(huán)的共享的信用計(jì)數(shù);基于入列的環(huán)記錄調(diào)整用于記錄的該至少一個(gè)環(huán)的生產(chǎn)者生產(chǎn)者指針;為記錄的該至少一個(gè)環(huán)設(shè)置共享生產(chǎn)者指針為用于記錄的該至少一個(gè)環(huán)的生產(chǎn)者生產(chǎn)者指針;以及使存儲(chǔ)器、第一處理器、第二處理器相互連接的總線。
2.如權(quán)利要求1所述的系統(tǒng),其中第一處理器和第二處理器中的至少一個(gè)包括在單一模之內(nèi)集成多重處理器核心的處理器。
3.如權(quán)利要求1所述的系統(tǒng)其中消費(fèi)者邏輯電路和生產(chǎn)者邏輯電路中的一個(gè)由硬件組成;以及其中消費(fèi)者邏輯電路和生產(chǎn)者邏輯電路中的一個(gè)包括軟件指令。
4.如權(quán)利要求1所述的系統(tǒng),其中所述作為消費(fèi)者操作調(diào)整共享的信用計(jì)數(shù)的邏輯電路包括基于消費(fèi)者信用計(jì)數(shù)與閾值的比較,向共享的信用計(jì)數(shù)中添加至少一些消費(fèi)者信用計(jì)數(shù)的邏輯電路。
5.如權(quán)利要求1所述的系統(tǒng),其中所述作為生產(chǎn)者調(diào)整生產(chǎn)者信用計(jì)數(shù)的邏輯電路包括基于生產(chǎn)者信用計(jì)數(shù)和閾值的比較,向生產(chǎn)者信用計(jì)數(shù)中添加至少一些共享信用計(jì)數(shù)的邏輯電路。
6.如權(quán)利要求5所述的系統(tǒng),其中所述作為生產(chǎn)者操作增加至少一些共享信用計(jì)數(shù)的邏輯電路包括增加少于共享信用計(jì)數(shù)的總數(shù)的邏輯電路。
7.如權(quán)利要求1所述的系統(tǒng),其中作為生產(chǎn)者操作的邏輯電路包括作為多重生產(chǎn)者操作的邏輯電路。
8.如權(quán)利要求7所述的系統(tǒng),其中多重生產(chǎn)者獲得至少一個(gè)從至少一個(gè)下述組中選出的互相拒絕鎖訪問共享的信用計(jì)數(shù);訪問共享的生產(chǎn)者指針;和入列至少一個(gè)記錄到存儲(chǔ)器中存儲(chǔ)的記錄的至少一個(gè)環(huán)。
9.如權(quán)利要求1所述的系統(tǒng),其中作為生產(chǎn)者操作的邏輯電路,包括對(duì)來自多重代理的生產(chǎn)者請(qǐng)求進(jìn)行服務(wù)的邏輯電路。
10.如權(quán)利要求1所述的系統(tǒng),其中作為消費(fèi)者操作的邏輯電路包括作為多重消費(fèi)者操作的邏輯電路。
11.如權(quán)利要求10所述的系統(tǒng),其中多重消費(fèi)者獲得至少一個(gè)從至少一個(gè)下述組中選出的互相拒絕鎖訪問共享的信用計(jì)數(shù);訪問消費(fèi)者消費(fèi)者指針;和從存儲(chǔ)器中存儲(chǔ)的記錄的該至少一個(gè)環(huán)中出列至少一個(gè)記錄。
12.如權(quán)利要求1所述的系統(tǒng),其中作為消費(fèi)者操作的邏輯電路,包括對(duì)來自多重代理的消費(fèi)者請(qǐng)求進(jìn)行服務(wù)的邏輯電路。
13.如權(quán)利要求1所述的系統(tǒng),其中消費(fèi)者信用計(jì)數(shù)、共享的信用計(jì)數(shù)、生產(chǎn)者信用計(jì)數(shù)、共享的生產(chǎn)者指針、消費(fèi)者生產(chǎn)者指針、和生產(chǎn)者生產(chǎn)者指針包括存儲(chǔ)器存儲(chǔ)的不同數(shù)據(jù)結(jié)構(gòu)所存儲(chǔ)的變量。
14.如權(quán)利要求13所述的系統(tǒng),其中在存儲(chǔ)器內(nèi)存儲(chǔ)的至少一個(gè)數(shù)據(jù)結(jié)構(gòu)在第一和第二處理器的至少一個(gè)高速緩存中是可以進(jìn)行高速緩存的。
15.如權(quán)利要求1所述的系統(tǒng),其中在存儲(chǔ)器存儲(chǔ)的記錄的該至少一個(gè)環(huán)組成的該組中的至少一個(gè)環(huán)在第一處理器和第二處理器的至少一個(gè)中的至少一個(gè)高速緩存中是可以高速緩存的。
16.如權(quán)利要求1所述的系統(tǒng),其中所述至少一個(gè)環(huán)組成的組包括多重環(huán)。
17.如權(quán)利要求16所述的系統(tǒng),其中第一處理器的邏輯電路包括作為第二個(gè)環(huán)的生產(chǎn)者的邏輯電路,并且第二處理器的邏輯電路包括作為第二個(gè)環(huán)的消費(fèi)者操作的邏輯電路。
18.如權(quán)利要求17所述的系統(tǒng)進(jìn)一步包括配置數(shù)據(jù),識(shí)別第一處理器和第二處理器中的哪個(gè)作為生產(chǎn)者操作和第一處理器和第二處理器中的哪個(gè)作為該組多重環(huán)中的給定一個(gè)環(huán)的消費(fèi)者。
19.如權(quán)利要求1所述的系統(tǒng)其中第一處理器和第二處理器包括一組多于兩個(gè)的處理器,該組處理器除第一和第二處理器以外的處理器包括邏輯電路,其作為至少從下述組中選出的操作(1)作為在存儲(chǔ)器中記錄的該至少一個(gè)環(huán)組成的該組中的至少一個(gè)環(huán)的生產(chǎn)者操作;以及(2)作為在存儲(chǔ)器中記錄的該至少一個(gè)環(huán)組成的該組中的至少一個(gè)環(huán)的消費(fèi)者操作。
20.如權(quán)利要求1所述的系統(tǒng),其中第一處理器的高速緩存和第二處理器的高速緩存執(zhí)行高速緩存相于性協(xié)議。
21.如權(quán)利要求1所述的系統(tǒng),其中基于以共享的生產(chǎn)者指針的值調(diào)整消費(fèi)者生產(chǎn)者指針,包括響應(yīng)至少一個(gè)從下述組選出的項(xiàng)來調(diào)整(1)周期性輪詢;以及(2)表示從所述記錄的該至少一個(gè)環(huán)組成的該組中的至少一個(gè)環(huán)中出列至少一個(gè)環(huán)記錄的事件。
22.一種方法,包括消費(fèi)者從環(huán)出列記錄;基于出列的環(huán)記錄數(shù)量調(diào)整消費(fèi)者信用計(jì)數(shù);基于消費(fèi)者信用計(jì)數(shù)調(diào)整共享的信用計(jì)數(shù);基于共享的生產(chǎn)者指針設(shè)置消費(fèi)者生產(chǎn)者指針;以及,生產(chǎn)者將記錄入列到環(huán);基于入列的環(huán)記錄數(shù)量調(diào)整生產(chǎn)者信用計(jì)數(shù);基于共享的信用計(jì)數(shù)調(diào)整生產(chǎn)者信用計(jì)數(shù);基于對(duì)生產(chǎn)者信用計(jì)數(shù)調(diào)整,調(diào)整共享的信用計(jì)數(shù);基于入列的環(huán)記錄,調(diào)整生產(chǎn)者生產(chǎn)者指針;以及把共享的生產(chǎn)者指針設(shè)置成生產(chǎn)者生產(chǎn)者指針。
23.如權(quán)利要求22所述的方法,其中調(diào)整共享的信用計(jì)數(shù)包括基于消費(fèi)者信用計(jì)數(shù)和閾值的比較來增加消費(fèi)者信用計(jì)數(shù)給共享的信用計(jì)數(shù)。
24.如權(quán)利要求22所述的方法其中基于共享的生產(chǎn)者指針設(shè)置消費(fèi)者生產(chǎn)者指針,包括基于至少一個(gè)下述組中選出的項(xiàng)設(shè)置消費(fèi)者生產(chǎn)者指針(1)周期性輪詢;以及(2)表示至少一個(gè)環(huán)記錄出列的事件。
25.如權(quán)利要求22所述的方法,其中調(diào)整生產(chǎn)者信用計(jì)數(shù)包括基于生產(chǎn)者信用計(jì)數(shù)和閾值的比較,來增加至少一些共享的信用計(jì)數(shù)給生產(chǎn)者信用計(jì)數(shù)。
26.如權(quán)利要求25所述的方法,其中增加至少一些共享信用計(jì)數(shù)包括增加少于共享信用計(jì)數(shù)的總數(shù)。
27.如權(quán)利要求22所述的方法,其中消費(fèi)者信用計(jì)數(shù)、共享的信用計(jì)數(shù)、生產(chǎn)者信用計(jì)數(shù)、共享的生產(chǎn)者指針、消費(fèi)者生產(chǎn)者指針、和生產(chǎn)者生產(chǎn)者指針包括在存儲(chǔ)器存儲(chǔ)的不同數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)的變量。
28.如權(quán)利要求22所述的方法,其中環(huán)包括一組多重環(huán)中的一個(gè),每個(gè)環(huán)都有相關(guān)的共享的信用計(jì)數(shù)和共享的生產(chǎn)者指針。
29.一種產(chǎn)品包括指令,其當(dāng)被執(zhí)行時(shí)提供邏輯電路,包括消費(fèi)者從第一個(gè)環(huán)出列記錄;基于從第一個(gè)環(huán)出列的記錄的計(jì)數(shù),調(diào)整消費(fèi)者信用計(jì)數(shù);基于第一個(gè)環(huán)的消費(fèi)者信用計(jì)數(shù)調(diào)整第一個(gè)環(huán)的共享的信用計(jì)數(shù);基于第一環(huán)的共享的生產(chǎn)者指針設(shè)置第一個(gè)環(huán)的消費(fèi)者生產(chǎn)者指針;以及生產(chǎn)者入列第二個(gè)環(huán)的記錄;基于第二個(gè)環(huán)入列的記錄,調(diào)整第二個(gè)環(huán)的生產(chǎn)者信用計(jì)數(shù);基于第二個(gè)環(huán)的共享的信用計(jì)數(shù)調(diào)整第二個(gè)環(huán)的生產(chǎn)者信用計(jì)數(shù);基于第二個(gè)環(huán)入列的記錄,調(diào)整第二個(gè)環(huán)的生產(chǎn)者生產(chǎn)者指針;基于調(diào)整第二個(gè)環(huán)的生產(chǎn)者信用計(jì)數(shù),調(diào)整第二個(gè)環(huán)共享的信用計(jì)數(shù);以及設(shè)置第二個(gè)環(huán)共享的生產(chǎn)者指針為第二環(huán)的生產(chǎn)者生產(chǎn)者指針。
30.如權(quán)利要求29所述的產(chǎn)品,其中消費(fèi)者邏輯電路調(diào)整第一個(gè)環(huán)的共享的信用計(jì)數(shù),包括消費(fèi)者邏輯電路,基于第一個(gè)環(huán)消費(fèi)者信用計(jì)數(shù)和閾值的比較向第一個(gè)環(huán)的共享的信用計(jì)數(shù)中添加第一個(gè)環(huán)的消費(fèi)者信用計(jì)數(shù)。
全文摘要
本發(fā)明描述了由一個(gè)或多個(gè)環(huán)的一個(gè)或多個(gè)生產(chǎn)者和消費(fèi)者使用的技術(shù)。
文檔編號(hào)G06F15/16GK1869966SQ20061009961
公開日2006年11月29日 申請(qǐng)日期2006年4月17日 優(yōu)先權(quán)日2005年4月15日
發(fā)明者M·羅森布魯斯, C·那拉德 申請(qǐng)人:英特爾公司