專利名稱:多處理器系統(tǒng)中存儲器訪問的動態(tài)串行化的制作方法
技術領域:
本發(fā)明涉及計算機和計算機系統(tǒng),尤其涉及在一個共享存儲器系統(tǒng)內部用于解決地址沖突和資源訪問優(yōu)先級的機構。
背景技術:
多處理器系統(tǒng)能夠采取許多形式,而且個別方案可能包含許多獨特特征。在多處理器系統(tǒng)當中的共同之處在于需要解決共享地址沖突。當一個或多個處理器試圖更新共享數(shù)據(jù)時就會發(fā)生共享地址沖突。由于解決這類沖突需要一個串行化的訪問,因此系統(tǒng)設計員避免有這類行為發(fā)生的情況。例如,可以由操作系統(tǒng)給一個處理單元分配一個專用地址空間;使該處理器能不受沖突約束地工作。甚至在這種環(huán)境下,一個空閑的處理器通常將會從保存在一個共享地址空間中的一個隊列中獲取新作業(yè)。隨著處理器速度和數(shù)目的增加,工作調度的協(xié)調變得更加重要。然而,某些工作調度要求在許多處理器當中的相互作用,甚至就相對低速的處理器來說,也要求有效地解決沖突。例如,要維護一個大數(shù)據(jù)庫用于許多事務,該數(shù)據(jù)庫能夠由幾個同時運行的應用程序進行更新。沖突解決經常成為這種系統(tǒng)的限制。希望有這樣一種多處理器系統(tǒng)最小化這些共享沖突,而且當共享沖突發(fā)生時最小化它對性能的影響。
技術的進步已經創(chuàng)造了快速的處理器,同時還給出了高密度、但是相對低速的存儲器。已經增加了高速緩存體系、快速但小容量的存儲器層,以補償該影響并減少訪問延遲。由于高速緩存是一個處理器能夠訪問的全部存儲器的一個子集,因此需要一個目錄以記錄主存儲器中的哪些塊對應于保持在該高速緩存中的那些塊。由于在一個共享存儲器的多處理器系統(tǒng)中,所有的存儲器更新必須被全部處理器所看見,因此這個系統(tǒng)中的全部處理器和設備都可以對這些高速緩存中的數(shù)據(jù)進行修改。在本技術中的一種普通方法是在這些高速緩存目錄中添加標記以指示在該高速緩存中每一塊的所有權狀態(tài)(基于目錄的高速緩存相關性)。這個所有權狀態(tài)將指示該塊的一個處理器寫權限。如果一個處理器希望更新一個高速緩存中的一個數(shù)據(jù)塊,它必須首先經由某些處理器間通信獲得執(zhí)行權限。一旦它具有了執(zhí)行權限,該處理器就可以改變這個競爭塊的目錄所有權狀態(tài)并執(zhí)行它的更新。其中重要的是處理器間通信要求在處理器之間傳遞共享塊的所有權。這個處理器間通信能夠在與存取數(shù)據(jù)有關的總延遲上增加一個顯著的延遲時間。為了確保一個處理器能夠更新這個競爭塊,對這個處理器間通信的訪問通常是串行的。這通常是指處理器必須以某種方式請求優(yōu)先權以使用所需的資源。一個好的、確保公平訪問的優(yōu)先級方案,對確保恰當?shù)淖鳂I(yè)分配和避免請求阻塞來說是重要的。隨著存儲器請求數(shù)目的增加,保持對存儲器資源的平等訪問變得更加困難,而且能夠阻止多處理器系統(tǒng)的可擴展性。因此期望有一種能夠減少處理器互連和相關通信的負面影響的優(yōu)先級系統(tǒng)。已經使用了在一個集中隊列或者類似有序機構中輸入請求的優(yōu)先級方案以確保請求按它們被接收的相同順序呈現(xiàn)。當存儲器系統(tǒng)完成了由這個隊列系統(tǒng)呈現(xiàn)的每個請求時,該隊列保持這個順序。這種解決方案保證了這個次序,但是要求這個次序在對任何資源進行關于可用性或沖突計算之前進行設置。一個實例就是有關高速緩存交叉存取的可用性。就這個解決方案來說,沒有請求能夠繞過一個由于它的目標高速緩存交叉存取是不可用而停止的請求。這意味著用于那個請求的額外延遲現(xiàn)在被增加到隊列中在它之后的所有請求的延遲上。此外,在隊列中的這些請求可能不具有與所述停止請求的地址沖突,因此不會從強制的串行化中得到好處。能夠在堆棧的輸入端使用附加的補丁來避免這個隊列影響。例如,基于一個地址范圍創(chuàng)建多個堆棧,這將要求在進入堆棧中之前檢查地址。這個解決方案的效果將會受到可以有多少個硬件以物理陣列或其它存儲設備的形式用于這個目的的限制。同時,所有的這類改進,由于在優(yōu)先級之前增加額外的請求檢查和歸類,將會負面影響標稱延遲。其它的某些優(yōu)先級方案,試圖減少能夠導致請求阻塞的某些復雜相互作用,而使用了取樣方法。取樣、或瞬態(tài)圖對在一個給定時間內的這些請求加以標記,并確保在取一個新樣本之前所有這些請求都得到滿足。由于在當前的瞬態(tài)圖中一個滿足的請求只有到瞬態(tài)圖為空時才能產生一個可見的請求,因此可以避免某些阻塞情況。然而,瞬態(tài)圖方案取決于在請求之間沒有相互依賴,在某些實現(xiàn)中,這可能是不真實的,而且能夠導致一個死鎖條件在該瞬態(tài)圖中的一個請求等待一個不在該瞬態(tài)圖中的請求。這類解決方案沒有試圖提高在引起競爭的請求當中的訪問,它僅僅將問題的范圍限制到一個假定可管理的規(guī)模,并且因此可能增加標稱延遲卻沒有保證成功。
一種最近最少使用(LRU)優(yōu)先級算法可以用來確保所有的處理器都能夠公平訪問。為了限制優(yōu)先請求的延遲,使用了一個局部LRU。這個局部LRU使用更少的位并且允許更快的優(yōu)先級計算。在這個系統(tǒng)中,對請求進行判優(yōu),然后呈現(xiàn)到一個流水線結構中。請求通過這個流水線移動,并初始化一個高速緩存訪問和相關的目錄查找,檢查資源可用性以及經常是否有其它任何請求鎖定了相同的地址。如果沒有所有者,則當前請求者通過設置一個鎖定來承擔所有權。這個鎖定保持有效直到該請求已經被滿足為止。一旦設置了一個鎖定所有對同一個地址的后續(xù)請求將中斷它們的存儲訪問,并且為該所有者請求設置一個資源需求來完成。這個資源需求阻止了進一步的流水線訪問直到該所有者請求完成為止。然后釋放該所有者請求來改變流水線的所有權狀態(tài),如果必要,將請求的數(shù)據(jù)返回到該處理器中。這樣一種系統(tǒng)正常工作直到地址活動、如先前描述的這類處理器間同步發(fā)生為止。在那些情況下,許多請求試圖訪問同一地址。它們將全部進入流水線中并且為擁有處理器設置它們的資源需求,擁有的處理器完成操作,剩余的全部請求將再次為優(yōu)先級競爭,一個新的擁有者將設置它的鎖,然后所有的后續(xù)請求將為這個新?lián)碛姓咴O置一個資源需求。每個請求將使這個流水線、及其它資源僅僅為新指定的擁有者設置它的資源需求而忙碌。一旦新的擁有者完成了就再次開始這個過程。每一個完成后,就再次測試優(yōu)先機構,并且資源的忙碌會導致通信和延遲的增加。此外,一個完成的處理器可以在所有處理器已經訪問該數(shù)據(jù)之前向同一地址發(fā)出另一個請求。由于優(yōu)先邏輯已經為最佳情況進行了優(yōu)化,而且由于在一個鎖定解除之后請求產生的固有延遲,新的請求能夠勝過那些正在等候的請求。結合局部LRU而不是完整LRU、轉移所有權的延遲、額外的通信和新請求的優(yōu)化,能夠引起鎖定情況。優(yōu)先級系統(tǒng)出現(xiàn)了這類處理器阻塞,而且進行了校正某些特例情況的嘗試。已經使用了添加中止避免硬件以避免死鎖情況來避免處理器初始化的恢復。
隨著更多處理器請求的加入,通信和延遲也增加了,因此必需要一種改進的判優(yōu)設備。
發(fā)明內容
在一個多處理器系統(tǒng)中,由處理器做出的、對共享存儲器同一地址空間的請求以這些請求被接收的順序得到滿足。在一個包含了多個與一個公用存儲器子系統(tǒng)相連的處理器的計算機系統(tǒng)中,多個請求經常同時競爭同一地址空間。存儲器控制器資源的可用性和對它們的訪問能夠強制在這些請求當中不合理的排序。然而,同樣復雜的資源相互作用,要求一個不串行所有請求的解決方案,即請求B將不會等待請求A,除非在A與B之間有一個競爭。本發(fā)明提供所有的請求都具有對存儲器資源的平等訪問,除非這些請求試圖同時訪問存儲器中的同一單元。一旦已經識別到這個沖突,就對這個單元的訪問進行排序。
當共享存儲器控制器處理每個請求時,就檢查地址沖突。如果沒有指定訪問規(guī)定地址范圍的當前擁有者,這就授予那個請求對那個地址空間的所有權,直到它的請求被滿足為止。對同一存儲單元的后續(xù)請求為上一個請求設置它們的需求,以查看同一沖突,而不是第一個。當每個控制者完成時,僅僅只有一個請求程序重新設定它的需求然后進行處理。可以有任何數(shù)目的這些有序列表而且在每個列表上可以有任何數(shù)目的請求。在此之前,所有對同一地址空間的后續(xù)請求都將會查看到這個擁有者并為它的完成設置一個資源需求鎖存。一旦這個地址擁有者完成了操作,就再次處理所有剩余的請求。
通過為每一個競爭地址動態(tài)地創(chuàng)建請求的有序列表,實現(xiàn)了一種串行訪問一個地址空間而對不同地址空間的存儲訪問沒有負面影響的方法。只有在識別到一個沖突以后,才將一個新請求增加到該列表中。由于地址沖突不是始終存在的,因此這對一個對一個沒有競爭的地址的請求是沒有影響的。增加的硬件將產生一個對應于遇到同一地址沖突的上一個請求者的資源需求,而不是為擁有的請求者設置一個資源需求??梢杂腥我鈹?shù)目的這些有序列表。例如,在一個有二十個請求者的系統(tǒng)中,能有二十個一個請求者的有序‘列表’、或一個二十個請求者的有序列表、或是兩者之間的任何組合。排序設備沒有增加物理限制。這些列表的生成取決于某一鎖定位。如前所述,如果沒有識別到地址沖突,就設置一個常規(guī)鎖定,然后那個請求者就被賦予所有權。這個鎖在每個不同地址有序列表中移動并始終由上一個請求者保持。新的請求者將會識別一個對應于上一個請求者而不是第一個請求者的沖突,并且由此設置它的資源需求。以這種方法,第一個請求者可以自由地更新高速緩存塊的狀態(tài)而不受其它所有競爭者妨礙,而且這個列表確保了對存儲器的公平、有序的訪問。任何時候,在這個有序列表中的一個處理器可以強制恢復并且暫時從該系統(tǒng)中取出。必須注意以確保這不會導致一個死鎖條件。其它情況發(fā)生在設置和重新設置移動的鎖定時,特別是在沖突能夠在許多周期的每個周期中發(fā)生的一個流水線環(huán)境中。
還可以包含其它的競爭資源。例如,如果多個高速緩存塊溢出/填充的資源是可用的,則這些有限的資源就可以成為可競爭的。能夠出現(xiàn)相同的解決方案。幾個處理器請求可能錯過高速緩存,并試圖載入高速緩存溢出/填充的資源,僅僅是為了發(fā)現(xiàn)沒有資源是可用的。這個請求者將為變得可用的下一個設置它的資源需求。一旦這發(fā)生了這種情況,它將使另一個流水線通過以載入資源,僅僅是為了發(fā)現(xiàn)在一個周期前,在該流水線中一個請求者采納最后一個。在這種情況下,能夠以與地址沖突相同的方式為溢出/填充資源創(chuàng)建有序列表。同樣也實現(xiàn)了相同的好處。例如,只有那些實際上需要溢出/填充資源的請求被迫進入該列表,而且僅僅是當該資源是不可用時。
具體實施例方式
圖1是最佳實施例的多處理器系統(tǒng)的一個系統(tǒng)概述;圖2是在圖1的多處理器系統(tǒng)中單個存儲控制器的地址流程的一個框圖;圖3是該最佳多處理器系統(tǒng)的系統(tǒng)概述的一個普遍示意圖;圖4是多個中央處理器讀取控制器的框圖,其向中央處理器讀取預優(yōu)先級站產生請求;圖5是一個編碼器的框圖,其為請求者創(chuàng)建對應于流水線標識符的一個比較標識符;圖6是一個由讀取控制器保持的地址以及該讀取控制器提供地址比較的方式的框圖;圖6A是一個流水線監(jiān)督器的框圖;圖7是待決重新設置的產生框圖;圖8是需求寄存器集合的一個框圖;圖9是需求和重新設置條件的一個解碼框圖。
本發(fā)明的詳細說明在這個環(huán)境中,通常在本發(fā)明運作的場所中,多個中央處理器(CP)擔當請求者例如CPA、CPB、CPC和CPD,每一個向一個存儲控制器(SC)產生一個對共享存儲器中同一地址的讀取(FETCH)請求。每一請求的指令和地址被發(fā)送給SC。當這四個請求正在處理時沒有新的請求被發(fā)送。SC接收這些請求并將每一個輸入到它自己的讀取控制器中。依據(jù)優(yōu)先級選擇一個請求進入流水線,而且該請求處于第一個周期(C1)。在第二個周期(C2)期間,將與CPA有關的地址與所有“待決”的請求者進行比較。C2流水線地址被分發(fā)給所有的請求者。每一個請求者對它們的地址執(zhí)行一個比較(COMPARE)。如果該地址匹配,則激活那個請求者的待決鎖定,發(fā)送一個比較(COMPARE)信號。在C2中的請求查看針對另一個請求者的比較。只有一個請求能夠為一個給定的地址設置待決鎖定。所有比較線聚集在一起,然后產生一個比較標識符。這標識與流水線C2中地址相同的待決請求者。當CPA通過流水線移動(有其它三個有效請求)時,在SC中沒有其它請求是待決的。CPA在它的C2流水線周期中沒有查看到一個比較(COMPARE),而且沒有為地址比較設置它的需求寄存器。在C2中還可用的是目錄結果。這指示尋找數(shù)據(jù)在該高速緩存中是否是可用的,以及所有權狀態(tài)是否適于讀取(FETCH)請求類型。如果數(shù)據(jù)不在該高速緩存中,就載入溢出/填充控制,并且CPA為來自主存儲器的數(shù)據(jù)設置它的需求寄存器。如果所有權狀態(tài)指示一個專用無效(INVALIDATE)必須發(fā)送給另一個處理器,則發(fā)送該INVALIDATE(專用干涉),并且CPA為來自于目標處理器的一個響應設置它的需求寄存器。如果數(shù)據(jù)是可用的而且已經處于恰當?shù)乃袡酄顟B(tài),則返回該數(shù)據(jù)。在C2周期,CPA設置它的待決鎖定,以使在SC中有效的其它請求在CPA獲得它的數(shù)據(jù)同時,查看到一個針對CPA的比較(COMPARE)。
繼CPA之后是CPB、CPC和CPD。當CPA處于C2時,CPB處于C1。當CPA處于C3時,CPB處于C2,且CPC處于C1。當CPA處于C4時,CPB處于C3、CPC處于C2且CPD處于C1。這就是流水線概念。當CPB處于它的C2周期時,它將查看到一個針對現(xiàn)在已經打開待決鎖定的CPA的比較(COMPARE),從而CPB為CPA設置它的需求寄存器。當CPC處于C2時,它為CPA設置它的需求寄存器。當CPD處于C2時,它為CPA設置它的需求寄存器。
CPA最終獲得它的數(shù)據(jù),然后它的請求者完成操作,并且重新設置它的有效鎖定和待決鎖定。所有為CPA設置需求寄存器的請求者查看到CPA的有效鎖定撤消,并且再次為優(yōu)先級競爭。在這個實例中,CPB、CPC和CPD向優(yōu)先機構提出一個請求(即為CPB、CPC和CPD的第二個請求)。
假定優(yōu)先級次序是相同的,則CPB將獲得授權GRANT、在流水線中移動,而且在C2中不會看到任何地址比較(COMPARE)。C2將設置它的待決鎖定并完成讀取(FETCH)操作。
CPC緊隨CPB之后,并且當它處于C2時,它將查看一個針對CPB的比較(COMPARE)并為CPB設置它的需求寄存器。CPD將緊隨CPC之后,并且當它處于C2時,它將查看一個針對CPB的比較COMPARE并為CPB設置它的需求寄存器。當CPB完成時,CPC和CPD將為CPB重新設置它們的需求寄存器,并且再次為優(yōu)先級競爭(即為CPC和CPD的第三次)。假定優(yōu)先級次序是相同的,則CPC將進入流水線,并且當它處于C2時,將不會查看任何比較(COMPARE)并將設置它的待決寄存器。CPD將緊隨CPC之后,并且將查看一個針對CPC的比較COMPARE,然后為CPC設置它的需求寄存器。當CPC完成時,CPD將重新設置它的需求寄存器并且將請求優(yōu)先(即第四次)。當CPD到達C2時它不會查看任何比較(COMPARE)并且將完成它的操作。
回到本發(fā)明的環(huán)境,通常是在一個共享存儲器的多處理器系統(tǒng)中,多個處理器、I/O(輸入/輸出)模塊及其他系統(tǒng)組件連接到一個共享存儲器控制器。這個控制器提供對一個共享、交叉存取高速緩存的訪問。它處理與該高速緩存有關的相干性管理,并提供對一個交叉存取的主存儲器的訪問。為了容易管理資源并利用存儲器的交叉存取特性,使用了一個流水線結構,其在每一時鐘周期內能夠初始化一個新的存儲訪問。在描述的本發(fā)明中,存儲控制器提供一個優(yōu)先機構用于這個流水線的入口,包含該優(yōu)先機構以確保各個請求者的公平、平等的訪問并且防止任一請求的阻塞。本發(fā)明還包含一個處理過程,它能夠解決由多個請求者試圖同時更新同一地址單元而引起的一個地址沖突。
參考這樣一個一般實例四個處理器(P0、P1、P2和P3)試圖訪問一個公用地址,向共享存儲器控制器同時提出它們的請求。這四個處理器以它們名稱次序P0、P1、P2、然后P3進入流水線。當P0進入流水線時,由于它不會遇到任何地址沖突因此它將設置它的鎖定。P1將會查看到P0,象現(xiàn)有技術中的情況那樣,為P0設置一個資源需求。P2將進入流水線,而且不是為P0設置它的資源需求,而是它將會為P1設置資源請求。同樣地,P3將為P2設置它的需求。當處理器P0完成時,只有P1將請求優(yōu)先級P2和P3將分別會有一個為P1和P2的資源請求。同樣地,當P1完成時,P2將做出一個優(yōu)先級請求且P3將等待。如果P0具有一個對同一地址的第二個請求,并在P3已經完成之前回來,則P0將為P3設置它的資源需求。然而,如果P0請求一個不同的地址,它能夠不受現(xiàn)有有序列表的阻礙而完成。
現(xiàn)在將會結合附圖中的特定詳細說明,對這個最佳實施例的整個系統(tǒng)結構進行討論,如下所述。
圖1顯示了本發(fā)明最佳實施例的多處理器系統(tǒng)的一個概觀。在一個完全配置的系統(tǒng)中,最多有十二個CP(12、13、14、15、16、17、18、19、20、21、22、23)、四個I/O適配器(24、25、26、27)、和四個存儲器卡(44、45、46、47)可以連接到兩個存儲控制器(SC10和SC11)。有可能有一個單節(jié)點、僅僅包含一個SC的系統(tǒng)。這樣一種系統(tǒng)支持最多六個CP、兩個I/O適配器、以及兩個存儲器卡。每一個CP包含一個貫穿存儲一級(L1)高速緩存,而每一SC包含一個二級(L2)高速緩存。
一個CP或I/O適配器僅僅直接連接到一個SC。一個給定的SC可直接訪問兩個存儲器卡,SC0(10)經由一個總線(48)直接訪問存儲器卡0(44),且經由一個單獨總線(49)直接訪問存儲器卡2(45)。類似地,SC1(11)可以借助于一個總線(50)訪問存儲卡1(46),并使用一個獨立的總線(51)訪問存儲卡3(47)。
然而,所有CP和I/O適配器能訪問主存儲器的任何部分。對其它二個存儲卡的存儲訪問是由一個SC到SC的操作(52)來處理的,它對CP或I/O適配器是透明的。每個CP或I/O適配器有兩條數(shù)據(jù)總線連到附屬的SC,稱為數(shù)據(jù)總線A和數(shù)據(jù)總線B。來自于存儲器卡0和1(44,46)的存儲數(shù)據(jù)在總線A上返回,而來自于存儲器卡2和3(45,47)的數(shù)據(jù)在總線B上返回。
所有對存儲控制器SC的請求是通過從一個CP、I/O適配器、或其它(遠程)SC向這個SC發(fā)送地址和指令來啟動的。當該SC已經完成這個請求時,一個響應、以及可能是數(shù)據(jù)被退回到該請求的始發(fā)者。
從一個CP到與它相連的SC的讀取和存儲請求利用一組單向和雙向總線(28、29、30、31、32、33、34、35、36、37、38、39)來傳送指令、地址、數(shù)據(jù)和響應。經由一個單向總線發(fā)送CP讀取和存儲請求的地址和指令部分,以及經由二個雙向總線發(fā)送該請求的數(shù)據(jù)部分。該請求的數(shù)據(jù)部分可以是從該CP向該SC發(fā)送的儲存數(shù)據(jù),或是從該SC向該CP發(fā)送的讀取數(shù)據(jù)。這些雙向總線就是先前提及的數(shù)據(jù)總線A和數(shù)據(jù)總線B。它們每個都是四字節(jié)寬。還有一條從該SC到每個CP的單向總線用來發(fā)送響應,以指示什么時侯一個讀取或存儲請求已經完成以及該請求的所有狀態(tài)是什么,例如正常完成或是無效地址。
I/O適配器接口同樣是由雙向和單向總線(40、41、42、43)構成的。在這種情況下,在該SC和該I/O適配器之間經由一條雙向總線發(fā)送指令地址、和響應讀取和存儲數(shù)據(jù)在兩條雙向總線、數(shù)據(jù)總線A和數(shù)據(jù)總線B上發(fā)送,每條總線都是雙字節(jié)寬的。單向總線被用于其它控制信號。
遠程SC接口使用單向總線(52)用于指令、地址、響應、和數(shù)據(jù)。因此,在一個完全配置的系統(tǒng)中有兩組這樣的總線,一組從SC0到SC1,一組從SC1到SC0。數(shù)據(jù)在四個四字節(jié)寬的單向總線上進行傳送,總線A和總線B從SC0到SC1,而總線A和總線B從SC1到SC0。在如上所述的單節(jié)點系統(tǒng)情況下,沒有遠程SC,因此沒有起源于該遠程SC的請求。
參考圖2作出對高級地址流程的一個更詳細的理解,其中圖2顯示了圖1所示的一個存儲控制器(SC0)的高級地址流程。有二條獨立的流水線,稱為流水線A(119)和流水線B(120),其每一條有它自己的目錄(121、122),而且每個都有一個經由存儲控制器邏輯(131、132)到一個存儲卡的接口(133、134)。在該SC中的二條處理流水線對應于先前提到的二條數(shù)據(jù)總線。流水線A處理總線A上(存儲卡0)的存儲請求,而流水線B處理總線B上(存儲卡2)的存儲請求。流水線信息被發(fā)送到數(shù)據(jù)流邏輯(136、137),在那兒它被用來訪問L2高速緩存。有可能有一個其中每個SC僅包含一條個流水線的系統(tǒng)。在這種情況下,該SC僅僅能訪問一個存儲器卡。
在一個操作流水線通過的第一個周期上訪問與一條給定流水線有關的目錄。如果找到了一個目錄,則從L2高速緩存處返回數(shù)據(jù)。如果錯過了一個目錄,則由流水線讀取地址寄存器(LFAR)邏輯(123、124)來處理該請求的進一步處理過程。該請求的地址和控制信息將會被輸入到每個流水線都可用的四個LFAR寄存器的某一個中。一個請求經由遠程SC接口寄存器(135)發(fā)送到遠程SC。如果在該遠程SC高速緩存中沒有數(shù)據(jù)取決于目標地址,該請求將會被發(fā)送到與該當?shù)豐C連接的存儲器卡中的一個、或是與該遠程SC相連接的存儲器卡中的一個。
如果一個高速緩存輸入項必須被移出,從而為L2高速緩存的一個新輸入項留出空間,它由流水線存儲地址寄存器(LSAR)邏輯(125、126)來處理。使用一個LRU算法將用于替換的地址,輸入到每個流水線可用的四個LSAR寄存器的某一個中。LSAR邏輯控制將數(shù)據(jù)存儲到主存儲器中并且使該高速緩存中的輸入項無效。
在該SC以外產生的請求,可以是讀取或者存儲請求,經由遠程SC接口(52)、這六個CP接口(28、29、30、31、32、33)、以及兩個I/O適配器接口(40、41)進行接收。在每種情況下,一個接口寄存器(103、104、105)用來鎖存一個請求信息持續(xù)一個周期。在這之后,該信息被發(fā)送給相關的控制器。
在該SC內部的每個功能區(qū)域都有一個獨立的控制器,當請求經過流水線時由它來處理來自于該接口的輸入、優(yōu)先級請求、以及對該請求的控制。有兩個I/O適配器控制器(109)、六個CP讀取控制器(107)、六個CP存儲控制器(108)、以及一個遠程SC控制器(106)。在每個控制器內部,都有保持寄存器以記錄與一個給定請求有關的信息。這些寄存器將保持有效直到該請求被SC完成為止。在大多數(shù)情況下,必須對該請求進行某些解碼來引導它到正確的保持寄存器中。
在遠程SC控制器(106)內部,有分開的寄存器用來讀取和存儲來自于遠程SC的請求,每條流水線中有二個寄存器專用于保持讀取以及二個寄存器專用于保持存儲。接口信息包含一個流水線選擇,用來選擇一組四個寄存器,并將指令進行解碼以確定它是讀取還是存儲指令,以選擇那對讀取或存儲寄存器。
單個接口寄存器用于每個CP(104)的讀取和存儲請求。必須對進來的指令進行解碼以確定它是一個讀取還是存儲指令。從這個接口寄存器到,包含一個讀取請求寄存器的相關的CP讀取控制器(107)、或是到包含兩個大小為八個輸入項的堆棧的CP存儲控制器(108),對請求進行分段,其中這兩個堆棧的每一個分別用于一條流水線,并包含存儲請求的地址和控制位。
從I/O適配器發(fā)送的指令也可以是讀取或存儲指令。I/O控制器(109)每條流水線每個I/O處理器有兩個請求寄存器,這樣每條流水線總共有四個寄存器,其中每一個都可以保持一個讀取或存儲指令。I/O適配器記錄在該I/O控制器內,哪幾個寄存器是可用的,而且它指示當該指令發(fā)送時的目標寄存器。
在每個控制器內部,這些用以指示一個有效請求的信號以及其它控制信息被用來確定該請求在一個給定的周期內是否享有優(yōu)先級。在一個給定范疇內的所有合格請求被發(fā)送給相關的預優(yōu)先級邏輯站。
對于遠程SC請求來說,有單個預優(yōu)先級站(110)用于所有兩條流水線。為流水線A或者流水線B對單個請求選擇預優(yōu)先級。在接口寄存器中的一個請求能夠獲得直接的優(yōu)先級,并且有最高優(yōu)先級。如果在接口寄存器中沒有請求,在用于每條流水線的四個寄存器當中使用一個偽LRU算法(最近完成的請求具有最低優(yōu)先級)進行預優(yōu)先級邏輯判優(yōu)。在這兩個流水線之間優(yōu)先級是交替的。
同樣也有單個預優(yōu)先級站(112)用于兩條流水線的CP讀取請求。用一種偽LRU算法從至多六個合格請求中選出一個。這個判優(yōu)不用考慮CP讀取請求的目標流水線。
CP存儲必須以它們被接收的順序來進行處理。用來緩存存儲請求的這些堆棧以FIFO(先入先出)的次序進行管理。對于來自一個給定CP的每條流水線,只有最早的存儲請求有資格獲得優(yōu)先級。有二個分開的預優(yōu)先級站用于CP存儲,每條流水線一個(113、114),因此有可能在一個周期內有二個不同的存儲請求被授予預優(yōu)先級。用于CP存儲的這些預優(yōu)先級站使用一種修改的循環(huán)算法為每條流水線從至多六個的合格請求當中選出一個存儲請求。
I/O控制器也有用于流水線A和B(115、116)的獨立的預優(yōu)先級站。一種偽LRU算法被用來確定每條流水線的這四個可能請求當中的預優(yōu)先級,而不考慮它們是讀取還是存儲操作。
有一個共享的預優(yōu)先級機制用于LFAR和LSAR(127、130)的請求。如果有多個LFAR請求,則按首先是LFAR0、然后是LFAR1、2和3的順序對它們進行選擇。類似地,如果有多個LSAR請求,則按從LSAR0開始、然后是LSAR1、2和3順序對它們進行選擇。一個觸發(fā)鎖存器在LFAR和LSAR之間變換優(yōu)先級。
用于一條流水線(117、118)的總優(yōu)先級判優(yōu)邏輯通過使用一個排序的優(yōu)先次序來選擇一個請求。基于請求的頻率確定了該次序,最不頻繁的請求具有最高優(yōu)先級,而最頻繁的請求具有最低優(yōu)先級。該優(yōu)先次序從最高到最低是遠程SC請求、LFAR/LSAR請求、I/O適配器請求、CP讀取請求、以及CP存儲請求。該選定請求的地址和控制信息被發(fā)送給流水線的第一階段。
每個控制器從兩條流水線接收輸入(128、129),并追蹤它的請求通過流水線的進展,用以監(jiān)視那些在具體的流水線周期中有效的輸入信號。這些信號中的某些被用來確定該請求是否處于該流水線的某一階段。其它的流水線輸入的例子是目錄查找結果,以及同其它地址寄存器的比較。這些輸入被用來確定該請求需要的所有資源是否有效,或者是是否必須中斷它的處理過程以等待某些條件得到滿足。當一個請求的處理過程被中斷時,信號被發(fā)送給流水線邏輯??刂票恢匦略O置以便使這個請求在該流水線的以后階段中不再顯示為一個有效的輸入項。信號也被發(fā)送給在控制器內部的各種邏輯站。在控制器內部采取的動作包含重新設置用來指示該請求當前正在執(zhí)行的控制位。
參考圖4,多個中央處理器(未顯示)向存儲控制器(10)產生對同一地址的讀取(FETCH)請求。存儲控制器(10)接收這些請求,并將每個請求放入到一個專用于一個具體處理器的讀取控制器(107a、107b、107c)中,即每個中央處理器都有一個讀取控制器。如圖4所示,只有三個讀取控制器(107a、107b、107c)用來從相應的中央處理器接收讀取請求(28、29、33),但是這將會被認為是表示多個和這些中央處理器通信的讀取控制器。例如,四個中央處理器CP1、CP2、CP3和CP4可以產生讀取(FETCH)請求。每個請求的指令和地址被發(fā)送給存儲控制器(10)。立刻接收所有請求,而且當這四個請求正在被處理時沒有發(fā)送新的請求。由一個控制器預優(yōu)先級站(112)和中心優(yōu)先級(117、118)選擇一個請求(140)進入流水線A(119)或流水線B(120)中。這樣選擇的請求處于第一周期(C1)。
如圖6所示,在第二個流水線周期(C2)內,與CP1有關的地址在(424)中與所有“待決的”請求者進行比較。C2流水線地址(425)輸入被分發(fā)給所有請求者,這樣每個請求者在圖6的(424)中針對它們的地址執(zhí)行一個比較。如果地址匹配的話,就激活那個請求者的待決鎖存器(426),且輸出一個比較(COMPARE)信號(432)。在C2中的該請求查看到一個針對另一個請求者的比較(COMPARE)。只有一個請求能夠為一個給定地址設置它的待決鎖存器(426)。所有COMPARE比較地址線(150、152、154)被聚集在圖4中的200上,并產生一個對應于該請求者的流水線標識符的一個比較標識符(COMPARE IDENTIFIER)(202)。這標識了與在流水線C2中的請求者有同一地址的待決請求者。當CP1在流水線中移動(有其它三個有效請求)時,在存儲控制器中沒有其它請求是待決的。在它的C2流水線周期CP1沒有查看到一個比較(COMPARE),而沒有設置它用于地址比較的需求寄存器(204)(圖8)。當在一個請求流水線通道的C2中遇到一個地址比較時,需求寄存器(204)將會載入一個與那個請求者的唯一標識符相等的值。
同樣在C2中可用的是該目錄結果(170)(圖4)。這將指示是否在該高速緩存目錄(121)中的檢索數(shù)據(jù)是有效的,以及該所有權狀態(tài)是否適合于該讀取請求類型。如果該數(shù)據(jù)沒有在該高速緩存(121)中的話,就裝載高速緩存溢出控制(182)和高速緩存填充控制(180)(圖3),并且CP1為來自主存儲器的數(shù)據(jù)設置它的需求寄存器(204)。如果所有權狀態(tài)指示一個專用無效(INVALIDATE)必須被發(fā)送給另一個處理器,則發(fā)送該INVALIDATE(專用干涉),并且CP1為來自于目標處理器的一個響應設置它的需求記錄。如果數(shù)據(jù)是有效的而且已經處于恰當?shù)乃袡酄顟B(tài),則返回該數(shù)據(jù)。在C2周期中,CP1設置它的未決鎖定,這樣在存儲控制器中有效的其它請求,在CP1獲取它的數(shù)據(jù)同時,將查看到一個對于CP1的比較(COMPARE)。
繼CP1之后,是CP2,CP3和CP4。當CP1處于C2周期時,CP2處于C1周期。當CP1處于C3周期時,CP2處于C2周期且CP3處于C1周期。當CP1處于C4周期時,CP2處于C3周期,CP3處于C2周期且CP4處于C1周期。當CP2處于它的C2周期時,它將會查看到對于現(xiàn)在已經設置了待決鎖存器的CP1的一個比較(COMPARE)。C2將為CP1設置它的需求寄存器(204)。CP2設置它的待決鎖存(426),而且CP1,其在查看到CP2在對CP1進行比較時,重新設置它的待決鎖存(426)。CP1,其在它的C3周期中,設置它的塊待決鎖存(422)。當CP3處于周期C2時,CP3設置它的待決鎖存(426)且CP2重新設置它的待決鎖存(426)。CP3為CP2設置它的需求寄存器(204)。CP2設置它的塊待決鎖存(422)。
當CP4處于周期C2時,CP4設置它的待決鎖存(426)且CP3重新設置它的待決鎖存(426)。CP4為CP3設置它的需求寄存器(204)。CP3設置它的塊待決鎖存(422)。在這一點上,就存在一個基于地址的隊列,其中CP1為頭,繼之以CP2(為CP1設置需求寄存器),CP3(為CP2設置需求寄存器)以及CP4(為CP3設置需求寄存器)。當CP4處于C3周期中,它設置它的塊待決鎖存(422)。
CP1最終接收它的數(shù)據(jù),然后它在SC中的請求者完成操作,并且重新設置它的有效鎖存(450)。CP2為CP1設置它的需求寄存器(204),然后重新設置它的需求寄存器(204),以允許CP2對該流水線(119,120)做出一個新的請求。一旦重新設置了該需求寄存器,該請求者能夠自由地請求流水線優(yōu)先級并且完成它的操作。沒有別的已經設置了它的需求寄存器的請求會做出一個流水線請求。由于它們已經設置了需求寄存器(204),因此它們被阻止了。
當CP2處于C2時,它將會查看到針對CP4的一個比較(COMPARE),但是不會為CP4設置它的需求寄存器(204),也不會設置它的待決鎖存(426),這是由于它在它通過該流水線的第一步時已經設置了它的塊待決鎖存(422),而且該鎖存是仍然設置的。在與CP1的所有權沖突解決之后,CP2會最終完成操作,并且CP2進入后續(xù)的流水線階段,來訪問數(shù)據(jù),更新目錄,重新設置它的有效鎖存(450)和塊待決鎖存(422)。
CP3將會查看到CP2的有效鎖存撤消,并且重新設置為CP2的需求寄存器。它將請求優(yōu)先級112,并且當它處于它的C2周期時,將會查看到一個針對CP4的比較(COMPARE)。CP3將忽視這個比較(COMPARE),由于它的塊待決鎖存(426)是設置的。CP3將解決與CP2的所有權沖突,然后完成重新設置它的有效鎖存(450)和塊待決鎖存(422)。
CP4將會查看到CP3的有效鎖存(450)撤消,并且將重新設置為CP3的需求寄存器(204)。CP4將請求優(yōu)先級112,并且當CP3處于它的C2周期時,將會查看到一個針對CP4的比較(COMPARE)。CP4將忽視這個比較(COMPARE)因為CP4的塊待決鎖存(426)是設置的。CP4將解決與CP3的所有權沖突,然后完成操作,重新設置它的有效鎖存(450)和塊待決鎖存(422)。在現(xiàn)有技術中,CP4需要四個步驟,而現(xiàn)在CP4只需要兩個步驟。
盡管已經顯示和描述了最佳實施例,但是可以做出各種修改和替換而沒有背離本發(fā)明的精神和范圍。因此,要理解本發(fā)明已經用實例的方法進行了描述,而不是加以限制。
權利要求
1.一種用于在一個共享存儲器系統(tǒng)內部解決地址沖突和資源訪問優(yōu)先級的方法,其中一個共享存儲器系統(tǒng)具有多個連接到一個共用存儲器子系統(tǒng)的處理器,該子系統(tǒng)有一個共享存儲器控制器用來處理存儲器請求,并能使多個處理器充當請求者競爭所述存儲器子系統(tǒng)中的同一地址空間,該方法包含以下步驟使多個請求者能繼續(xù)進行平等地訪問該子系統(tǒng)存儲器,而不必等待其它對該子系統(tǒng)存儲器的任何請求者;由所述的共享存儲器控制器處理存儲器請求,并且允許每個請求平等地訪問該子系統(tǒng)存儲器,直到對存儲器中同一存儲單元的訪問請求超過一個競爭請求者為止,以及一旦和另一個競爭請求者一樣請求訪問存儲器中的同一存儲單元識別出多于一個請求者時,所述共享存儲器控制器通過建立一個對同一存儲單元的訪問請求的有序列表,對同一存儲單元的訪問進行排序,但是當一個請求者請求一個不同的地址時,該共享存儲器控制器允許該請求者完成它的請求而不受該現(xiàn)有有序列表的阻礙。
2.如權利要求1所述的方法,進一步包含當一個附加的請求者請求訪問和用于同一共享存儲器地址的現(xiàn)有有序列表的相同的共享存儲器地址時,該請求被增加到那個用于同一共享存儲器地址的現(xiàn)有有序列表中,并且通過硬件產生一個對應于上一個遇到同一地址沖突的請求者的資源需求來處理該請求。
3.如權利要求1所述的方法,其特征在于對同一存儲單元的后續(xù)請求為上一個查看到相同沖突的請求者設置請求,而不是為該有序列表的第一請求者設置,當該有序列表的某一個完成時,只有該有序列表的一個請求者重新設置它的請求,并且被處理。
4.權利要求1所述的方法,包含為每個競爭的資源動態(tài)地創(chuàng)建請求有序列表,并且只是在一個沖突被認為是競爭一個新而且不同的地址以后,在沖突的有序列表中添加一個新的請求。
全文摘要
一種用于解決在一個共享存儲器系統(tǒng)內部地址沖突和資源訪問優(yōu)先級的方法,其包含為每個競爭的資源動態(tài)地創(chuàng)建請求有序列表。只有在識別出一個沖突以后才將一個新請求增加到該列表中。由于資源沖突不是始終存在的,因此這對一個沒有競爭資源的請求是沒有影響的。
文檔編號G06F12/08GK1347041SQ0114112
公開日2002年5月1日 申請日期2001年9月28日 優(yōu)先權日2000年9月29日
發(fā)明者M·菲, P·K·馬克 申請人:國際商業(yè)機器公司