處理設備的製作方法
2023-12-04 21:45:21
處理設備的製作方法
【專利摘要】本發明涉及處理設備。當從另一處理設備輸入無效請求時,高速緩衝控制器將無效請求具有的一組無效請求地址和輸出無效請求的該另一處理設備的標識符寄存在無效歷史表中。當中央處理單元試圖讀取沒有存儲在高速緩衝存儲器中的第一地址處的數據時,如果第一地址寄存在無效歷史表中,則高速緩衝控制器將包含第一地址的一致讀取請求輸出至輸出了與第一地址對應的無效請求的另一處理設備的標識符所指示的另一處理設備,或者如果第一地址沒有寄存在無效歷史表中,則高速緩衝控制器將包含第一地址的一致讀取請求輸出至所有其他處理設備。
【專利說明】處理設備
【技術領域】
[0001]本文中所論述的實施例涉及處理裝置,並且特別涉及高速緩衝存儲器的一致性技術。
【背景技術】
[0002]使用多個處理單元(CPU)作為用於提高使用計算機的信息處理系統的性能的手段的並行處理系統是已知的。在並行處理系統中,需要保持各個CPU具有的高速緩衝存儲器的內容相同。這稱為高速緩衝一致性並且將描述用於有效地保持高速緩衝一致性的若干方法。
[0003]已知存在一種具有歷史表的高速緩衝系統,該歷史表存儲流經公用總線和歷史表控制電路的訪問請求中所包含的地址(例如,參見專利文獻I)。歷史表控制電路確定所接收的訪問請求的地址是否存儲在表中。當該地址存儲在表中時,禁止高速緩衝控制電路的與訪問請求相關的操作,而當該地址沒有存儲在表中時,使高速緩衝控制電路進行與訪問請求相關的操作。
[0004]此外,已知存在一種存儲信息的多播表,該信息指示每個處理器單元是否高速緩衝屬於具有大於或等於高速緩衝行的大小的主存儲器的多個區域中的每個區域的數據(例如,參見專利文獻2)。基於該表中存儲的信息來限定待發送至其他處理器單元的一致處理請求的目的地,並且該請求在互耦合網絡上部分地通過廣播方式到達所限定的目的地。當返回該請求所指定的數據的高速緩衝狀態時,作為目的地的處理器單元將與處理器單元中包含數據的特定存儲器區域有關的處理器單元中的高速緩衝狀態一起返回。請求源處理器單元基於該返回來更新多播表。
[0005]專利文獻1:日本公開專利公報第09-293060號
[0006]專利文獻2:日本公開專利公報第09-311820號
[0007]在其中均包括處理單元(CPU)和附接至CPU的高速緩衝存儲器的多個處理設備(節點)彼此相連的並行處理系統中,在這些節點的各個高速緩衝存儲器中節點共享的數據需要相同。高速緩衝存儲器的相同稱為高速緩衝一致性。作為用於保持高速緩衝一致性的算法,存在探聽方法。在探聽方法中,為了保持高速緩衝一致性,一個節點將許多探聽請求輸出至所有其他的節點。然而,當節點無條件地將請求輸出至所有其他節點時,在連接這些節點的互耦合網絡上的數據變得擁塞,並且處理系統的處理性能下降。這種情況隨著節點數量的增加變得更加顯著。此外,接收探聽請求的其他高速緩衝由於響應操作而使作為所述其他高速緩衝的真正目的的來自CPU的請求變得延遲,並且這導致了性能的下降。
【發明內容】
[0008]在一個方面,實施例的目的是提供能夠在保持高速緩衝一致性的同時提高處理性能的處理設備。
[0009]一種處理設備,具有:存儲主存儲器的部分數據的副本的高速緩衝存儲器;訪問高速緩衝存儲器中的數據的中央處理單元;控制高速緩衝存儲器的高速緩衝控制器;以及無效歷史表,其中,當從另一處理設備輸入無效請求時,高速緩衝控制器將無效請求具有的一組無效請求地址和輸出無效請求的該另一處理設備的標識符寄存在無效歷史表中,並且當中央處理單元試圖讀取沒有存儲在高速緩衝存儲器中的第一地址處的數據時,如果第一地址寄存在無效歷史表中,則高速緩衝控制器將包含第一地址的一致讀取請求輸出至輸出了與第一地址對應的無效請求的該另一處理設備的標識符所指示的該另一處理設備,或者如果第一地址沒有寄存在無效歷史表中,則高速緩衝控制器將包含第一地址的一致讀取請求輸出至所有其他處理設備。
[0010]此外,一種處理設備,具有:存儲主存儲器的部分數據的副本的高速緩衝存儲器;訪問高速緩衝存儲器中的數據的中央處理單元;控制高速緩衝存儲器的高速緩衝控制器;以及一致讀取歷史表,其中,當從另一處理設備輸入一致讀取請求時,高速緩衝控制器將一致讀取請求具有的一組一致讀取請求地址和輸出一致讀取請求的該另一處理設備的標識符寄存在一致讀取歷史表中,並且當中央處理單元試圖重寫高速緩衝存儲器中的第二地址處的數據時,如果第二地址寄存在一致讀取歷史表中,則高速緩衝控制器將包含第二地址的無效請求輸出至與寄存在一致讀取歷史表中的第二地址對應的另一處理設備的標識符所指示的另一處理設備,或者如果第二地址沒有寄存在一致讀取歷史表中,則高速緩衝控制器將包含第二地址的無效請求輸出至所有其他處理設備。
【專利附圖】
【附圖說明】
[0011]圖1是例示根據實施例的處理系統的結構示例的示圖;
[0012]圖2是例示根據實施例的處理系統的開關控制單元的結構示例的示圖;
[0013]圖3是例示圖1的高速緩衝存儲器和高速緩衝控制器的一部分的結構示例的示圖;
[0014]圖4是例示圖1的歷史表中的無效歷史表、比較器以及邏輯乘(與)電路的結構示例的示圖;
[0015]圖5是例示圖1的歷史表中的一致讀取歷史表、比較器以及邏輯乘電路的結構示例的示圖;
[0016]圖6是例不節點的讀取處理的流程圖;
[0017]圖7是例示節點的寫入處理的流程圖;
[0018]圖8是例示在本實施例中在執行探聽請求之前和在執行探聽請求之後高速緩衝存儲器的狀態如何變化的示圖;
[0019]圖9是例示在本實施例中在執行探聽請求之前和在執行探聽請求之後高速緩衝存儲器的狀態如何變化的示圖;以及
[0020]圖10是例示圖1的歷史表中的一致讀取歷史表的另一示例的示圖。
【具體實施方式】
[0021]圖1和圖2是例不根據實施例的處理系統的結構不例的不圖。該處理系統具有第一節點I至第六節點6、開關SW12至SW67、主存儲器51、主存儲器控制器52、開關控制單元53以及寄存器R12至R67。圖2的節點I至6和開關SW12至SW67與圖1的節點I至6和開關SW12至SW67相同。
[0022]第一節點I是第一處理設備並且具有第一中央處理單元(CPU) 11、第一高速緩衝控制器21、第一高速緩衝存儲器31以及第一歷史表41。
[0023]第二節點2是第二處理設備並且具有第二 CPU12、第二高速緩衝控制器22、第二高速緩衝存儲器32以及第二歷史表42。
[0024]第三節點3是第三處理設備並且具有第三CPU13、第三高速緩衝控制器23、第三高速緩衝存儲器33以及第三歷史表43。
[0025]第四節點4是第四處理設備並且具有第四CPU14、第四高速緩衝控制器24、第四高速緩衝存儲器34以及第四歷史表44。
[0026]第五節點5是第五處理設備並且具有第五CPU15、第五高速緩衝控制器25、第五高速緩衝存儲器35以及第五歷史表45。
[0027]第六節點6是第六處理設備並且具有第六CPU16、第六高速緩衝控制器26、第六高速緩衝存儲器36以及第六歷史表46。
[0028]主存儲器51存儲進行處理的各個CPU的指令和CPU要處理的數據或者由處理產生的數據。主存儲器控制器52響應於來自每個節點的請求對主存儲器51進行控制。高速緩衝存儲器31至36每個均存儲主存儲器51中所存儲的地址中的部分地址處的數據的副本。CPUll至16是中央處理單元(處理器)並且每個均訪問主存儲器51或者高速緩衝存儲器31至36中的數據。高速緩衝控制器21至26分別對高速緩衝存儲器31至36進行控制。
[0029]開關SW12至SW67是用於形成使第一節點I至第六節點6互相連接的互耦合網絡的開關。開關SW12可以使第一節點I與第二節點2彼此連接。開關SW13可以使第一節點I與第三節點3彼此連接。開關SW14可以使第一節點I與第四節點4彼此連接。開關SW15可以使第一節點I與第五節點5彼此連接。開關SW16可以使第一節點I與第六節點6彼此連接。開關SW17可以使第一節點I與主存儲器控制器52彼此連接。
[0030]開關SW23可以使第二節點2與第三節點3彼此連接。開關SW24可以使第二節點2與第四節點4彼此連接。開關SW25可以使第二節點2與第五節點5彼此連接。開關SW26可以使第二節點2與第六節點6彼此連接。開關SW27可以使第二節點2與主存儲器控制器52彼此連接。
[0031]開關SW34可以使第三節點3與第四節點4彼此連接。開關SW35可以使第三節點3與第五節點5彼此連接。開關SW36可以使第三節點3與第六節點6彼此連接。開關SW37可以使第三節點3與主存儲器控制器52彼此連接。
[0032]開關SW45可以使第四節點4與第五節點5彼此連接。開關SW46可以使第四節點4與第六節點6彼此連接。開關SW47可以使第四節點4與主存儲器控制器52彼此連接。
[0033]開關SW56可以使第五節點5與第六節點6彼此連接。開關SW57可以使第五節點5與主存儲器控制器52彼此連接。
[0034]開關SW67可以使第六節點6與主存儲器控制器52彼此連接。
[0035]開關控制單元53響應於來自第一節點I至第六節點6的請求將數據Din以與時鐘信號CK同步的方式寫入至寄存器R12至R67。開關SW12至SW67分別根據寫入至寄存器R12至R16的數據來接通或者斷開。
[0036]圖2是開關控制的框圖。開關控制單元53接收從節點I至6發送的開關控制信號並且將各個開關的接通/斷開控制信息寫入至分別與開關SW12至SW67配對的寄存器R12至R67。例如,當寫入「I」時每個開關接通,而當寫入「O」時每個開關斷開。
[0037]圖3是例示圖1的高速緩衝存儲器31至36的結構示例的示圖。與主存儲器51相比,高速緩衝存儲器31至36是高速率且小容量的存儲器並且通常在高速緩衝存儲器中存儲主存儲器的一部分的副本。設置有高速緩衝存儲器31至36,CPUll至16能夠以高速率訪問數據。圖3例示了直接映射方法和MESI協議的高速緩衝存儲器。高速緩衝存儲器31至36每個均存儲一組或更多組的標記304和數據303。標記304具有地址301和狀態302。通常,在數據303的一個行中,可以存儲主存儲器51的幾個字的數據。標記304和數據303的一個行的量稱作為一個條目。高速緩衝存儲器的地址輸入連接至CPU的低地址ADD1,並且在確定了 CPU的低地址ADDl時,讀出高速緩衝存儲器的一個條目的數據。狀態302指示無效狀態1、共享狀態S、獨有狀態E以及修改狀態M中的任一狀態。
[0038]無效狀態I指示與該狀態對應的地址301處的數據303為無效。當第一高速緩衝存儲器31與第二高速緩衝存儲器32在相同的地址301處存儲相同的數據303時,如果改變第一高速緩衝存儲器31的地址301處的數據303,則有必要保持高速緩衝一致性。在該情況下,為了指示第二高速緩衝存儲器32的地址301處的數據303是舊數據,將與第二高速緩衝存儲器32的地址301處的數據303對應的狀態302設定為無效狀態I。
[0039]共享狀態S指示多個高速緩衝存儲器共享在相同地址301處的相同數據303的狀態。例如,當在高速緩衝存儲器31至36中多個高速緩衝存儲器在相同地址301處存儲相同數據303時,在相同地址301處存儲相同數據303的多個高速緩衝存儲器的狀態302都變為共享狀態S。
[0040]獨有狀態E指示僅一個高速緩衝存儲器在地址301處存儲數據303的狀態。例如,當在高速緩衝存儲器31至36中僅一個高速緩衝存儲器在地址301處存儲數據303時,該高速緩衝存儲器的狀態302變為獨有狀態E。
[0041]修改狀態M指示中央處理單元已經改變了高速緩衝存儲器中的地址301處的數據303的狀態。例如,當CPUll重寫了高速緩衝存儲器31中的地址301處的數據303時,高速緩衝存儲器31中與地址301處的數據303對應的狀態302變成修改狀態M。在該狀態下,高速緩衝存儲器31中的數據303與主存儲器51中的數據是不同的數據。
[0042]首先,將描述無效請求。如上所述,例如,當第一高速緩衝存儲器31與第二高速緩衝存儲器32在相同地址301處存儲相同數據303時,與第一高速緩衝存儲器31和第二高速緩衝存儲器32的地址301處的數據303對應的狀態302都處在共享狀態S。在該狀態下,當第一 CPUll試圖重寫第一高速緩衝存儲器31中的地址301處的數據303時,CPU向所有其他的節點2至6輸出包含地址信息的無效請求,以便保持高速緩衝一致性。在第二節點2中,當通過使用所輸入的無效請求的地址信息讀取高速緩衝存儲器32時,在地址301中存在相同的地址並且在同一數據303中存在相同的數據,並且共享狀態S作為狀態輸出,這是高速緩衝命中(hit)。在該情況下,根據來自第一節點I的無效請求,將第二高速緩衝存儲器32中與地址301處的數據303對應的狀態302設定為無效狀態I。此外,節點3至6通過使用所輸入的無效請求的地址信息讀取高速緩衝存儲器33至36。然而,在高速緩衝存儲器33至36中不存在無效請求的地址301處的數據303並且因此不進行無效處理,但是在該時段發生對各自高速緩衝存儲器的訪問並且來自CPU的訪問處於等待狀態。此外,如上所述,第一節點I經由處在接通狀態(ON)的開關SW12至SW16向所有其他的節點2至6輸出相同的無效請求。在該情況下,所有的開關路徑被佔用,因此其他節點之間的通信或者與主存儲器的通信受到幹擾,這減少了開關結構類型的總線一半的優勢,並且降低了處理系統的性能。
[0043]在本實施例中,通過提供圖1的歷史表41至46,第一節點I不用將無效請求輸出至所有其他節點2至6,而是僅接通開關SW12並且僅將無效請求輸出至需要的另一節點2,從而未佔用開關SW34至SW67。因此,可以確保其他節點之間的通信或者與主存儲器的通信,並且由於不進行對高速緩衝存儲器33至36的訪問,所以從CPU到各個高速緩衝存儲器的訪問不受幹擾,從而提高了處理系統的性能。
[0044]接著,將描述一致讀取請求。例如,考慮如下情形,第一 CPUll對某一地址處的數據做出讀取請求,但是在第一高速緩衝存儲器31中不存在該地址處的數據,這稱為失中(miss fit)。在該情況下,主存儲器51中該地址處的數據不一定是最新數據。也就是說,可以存在如下情形,第二節點2讀出主存儲器51中某一地址處的數據並且將該數據寫入至第二高速緩衝存儲器32,並且在此之後CPU12重寫高速緩衝存儲器32中的數據。在該情況下,第二高速緩衝存儲器32中與該地址處的數據對應的狀態302變成修改狀態M。在該情況下,第二高速緩衝存儲器32中的數據是最新的並且與主存儲器51中的數據不匹配。因此,第一節點I通常向所有的其他節點2至6輸出該地址的一致讀取請求,以便保持高速緩衝一致性。在該情況下,由於與所輸入的一致讀取請求的地址處的數據對應的狀態302為修改狀態M,所以第二節點2將第二高速緩衝存儲器32中該地址處的最新數據寫回至主存儲器51,並且第一節點I讀取主存儲器51中該地址處的最新數據並且將該最新數據寫入至高速緩衝存儲器31。此外,在節點3至6中,在高速緩衝存儲器33至36中不存在所輸入的一致讀取請求的地址處的數據,但是在該時段內由於一致讀取請求而發生對高速緩衝存儲器的訪問並且來自CPU的訪問處於等待狀態。如上所述,第一節點I經由處在接通狀態的開關SW12至SW16向所有的其他節點2至6輸出相同的一致讀取請求。在該情況下,所有的開關路徑被佔用,因此其他CPU之間的通信或者與主存儲器的通信受到幹擾,這減少了開關結構類型的總線一半的優勢,並且降低了處理系統的性能。
[0045]在本實施例中,通過提供圖1的歷史表41至46,第一節點I不用將一致讀取請求輸出至所有的其他節點2至6,而是僅接通開關SW12並且僅將請求輸出至需要的另一節點2,從而未佔用開關SW34至SW67。因此,可以確保其他節點之間的通信或者與主存儲器的通信,並且由於不進行對高速緩衝存儲器33至36的訪問,所以從各個CPU到高速緩衝存儲器的訪問不受幹擾,從而提高了處理系統的性能。
[0046]以下將詳細描述本實施例的示例。圖1的歷史表41至46每個均包括圖4的無效歷史單元和圖5的一致讀取歷史單元。圖4的無效歷史單元包括無效歷史表MT、比較器404以及邏輯乘(與)電路405。標記區段401存儲與圖3的高速緩衝存儲器的地址301類似的高地址ADD2,其中無效位402為「O」指示無效歷史表IHT的該行為無效,而無效位402為「I」指示無效歷史表IHT的該行為有效。節點編號403指示從哪個節點接收無效請求並且將該節點編號存儲在其中。圖5的一致讀取歷史單元包括一致讀取歷史表RHT、比較器504以及邏輯乘(與)電路505。標記區段501存儲與圖3的高速緩衝存儲器的地址301類似的高地址ADD2,其中讀取位502為「O」指示一致讀取歷史表RHT的該行為無效,而讀取位502為「I」指示一致讀取歷史表RHT的該行為有效。節點編號503指示從哪個節點接收一致讀取請求並且將該節點編號存儲在其中。在初始化時歷史表為無效,即,無效位402和讀取位502為「O」。比較器504將由一致讀取歷史表RHT輸出的標記501與高地址ADD2相比較,並且當二者匹配時輸出「I」而當二者不匹配時輸出「O」。邏輯乘電路505將比較器504的輸出值與由一致讀取歷史表RHT輸出的讀取位502的邏輯乘值作為讀取狀態RS輸出。
[0047]圖10是例示一致讀取歷史單元的另一實施例的示圖。一致讀取歷史單元包括一致讀取歷史表RHT、比較器904和邏輯乘(與)電路905以及邏輯和(或)電路906,其中一致讀取歷史表RHT包括標記區段901和節點映射區段902。標記區段901存儲與圖3的高速緩衝存儲器的地址301類似的高地址ADD2,並且在節點映射區段902中,「O」指示一致讀取請求不是來自與該位位置對應的節點,而「 I」指示一致讀取請求來自與該位位置對應的節點。邏輯和電路906輸出節點映射區段902的各個有效節點位RN的邏輯和,並且當任一節點位為「I」時,邏輯和電路906的輸出變為「I」。標記區段901的輸出與高地址ADD2通過比較器904進行比較,並且當它們匹配時比較器904的輸出變為「 I 」。邏輯乘電路905將邏輯和電路906的輸出與比較器904的輸出的邏輯乘值作為讀取狀態RS輸出。當讀取狀態RS為「I」時,這指示來自節點映射區段902的輸出節點位為有效。
[0048]圖8和圖9例示了當從操作前的高速緩衝存儲器的狀態以及無效歷史表IHT的狀態和一致讀取歷史表RHT的狀態進行讀/寫操作時的探聽和數據流,並且還表示了操作後的狀態。在下文中,將參照圖1至圖5來描述本實施例中的重要部分。注意,以下圓括號中的編號的說明對應於圖8和圖9中的「說明」所示出的編號。
[0049](I)當從另一節點接收無效請求時
[0050]在由CPUll執行寫入指令,在第一節點I中高速緩衝存儲器31的狀態為共享,並且在歷史表41中RS= 「O」即無效的情況下,第一節點I向各個節點廣播無效請求。如果第二節點2中的高速緩衝存儲器32共享數據並且狀態=共享,則高速緩衝存儲器32中的狀態被無效,並且包含標記區段401中的高地址ADD2、無效位402中的值「I」以及節點編號403中的節點編號「 I 」的無效歷史信息寄存在歷史表42中的無效歷史表IHT中由低地址ADDl選擇的行上。此外,在本示例的情況下,對其他節點3至6的無效請求導致失中,因此不進行對歷史表43至46中的無效歷史表的寫入。然後,高速緩衝控制器21重寫高速緩衝存儲器31的數據,並且將高速緩衝存儲器31中的狀態改變為修改。
[0051](2)當從另一節點接收一致讀取請求時
[0052]當第一 CPUll對某一地址處的數據做出讀取請求時,如果在第一高速緩衝存儲器31中不存在該地址處的數據(這是失中),並且此外在歷史表41中的無效歷史表中無效IS=O,則向各個節點發出一致讀取請求。
[0053](2-1)在接收一致讀取請求的各個節點中在高速緩衝存儲器32至36中沒有命中(失中)的任一高速緩衝存儲器不訪問一致讀取歷史表。
[0054](2-2)當接收一致讀取請求的高速緩衝存儲器32至36中的任一高速緩衝存儲器命中,例如,高速緩衝存儲器32在狀態=獨有的情形下命中時,高速緩衝存儲器32的狀態改變為共享,並且以下信息寫入至歷史表42中的一致讀取歷史表低地址ADDl處。[I]高地址ADD2寫入至標記區段501,[2] 「I」寫入至讀取位區段502,以及[3]發出一致讀取請求的節點編號寫入至節點編號區段503。接著,向請求節點報告命中的發生並且從主存儲器51讀取讀出數據並且將讀出數據發送至請求節點。請求側節點中高速緩衝存儲器的狀態變為共享。
[0055](2-3)當接收一致讀取請求的高速緩衝存儲器32至36中的任一高速緩衝存儲器命中,例如,高速緩衝存儲器32在狀態=修改的情形下命中時,高速緩衝存儲器32的狀態改變為共享,並且以下信息寫入至歷史表42中的一致讀取歷史表低地址ADDl處。[I]高地址ADD2寫入至標記區段501,[2] 「I」寫入至讀取位區段502,以及[3]發出一致讀取請求的節點編號寫入至節點編號區段503。接著,向請求節點報告命中的發生,並且從高速緩衝存儲器32讀取的數據寫回主存儲器51並且發送至請求源節點。請求源節點中高速緩衝存儲器的狀態變為共享。
[0056](2-4)當接收一致讀取請求的高速緩衝存儲器32至36中的任一高速緩衝存儲器命中並且例如高速緩衝存儲器32和高速緩衝存儲器33共享數據時,兩個高速緩衝存儲器都在狀態=共享的情形下命中。在該情況下,在兩個歷史表42和43中的一致讀取歷史表中的低地址ADDl處,「O」寫入至讀取位區段502以將讀取位區段502改變為無效。在圖5中,歷史表中的一致讀取歷史表503中僅可以存儲一個節點編號,也就是說,當一致讀取歷史表為有效時,從作為請求源的節點僅向一個其他節點發出一致讀取請求。因此,當三個或更多個節點共享數據並且由共享數據的節點中的任一節點向其他節點發出無效請求時,有必要向兩個節點發出請求。然而,在圖5中不存在這種功能,因此請求需要廣播,即向所有的節點發出請求。因此,進行寫入,以使得一致讀取歷史表無效。當然,當一致讀取歷史表擴展為使得能夠存儲兩個節點編號時,即使在由三個節點共享數據時也可以表現本實施例的效果。此外,本實施例的一個擴展是圖10的實施例。在圖10的示例中,為了存儲發出一致讀取請求的所有節點,在一致讀取歷史表RHT中設置節點映射區段902,其中各個位與節點逐一對應,並且即使在從兩個或更多個節點接收一致讀取請求時也可以存儲請求所來自的所有節點。接著,向請求節點報告命中的發生,並且從主存儲器51讀取讀出數據並且將該讀出數據發送至請求節點。在請求側節點中高速緩衝存儲器的狀態變為共享。
[0057](3)當節點發出一致讀取請求時
[0058]當節點I中的CPUll讀取高速緩衝存儲器31時,如果在高速緩衝存儲器31中不存在需要的數據,即,高速緩衝存儲器中的狀態為無效或失中,則高速緩衝控制器21讀取歷史表中的無效歷史表IHT與其訪問高速緩衝存儲器31的地址一樣的地址處。無效歷史表IHT輸出指示與低地址ADDl對應的高地址的標記區段401、無效位402以及節點編號403。當無效歷史信息沒有寄存在無效歷史表IHT中時,無效位402具有值「I」。作為節點編號403,例如,第二節點2的編號作為節點編號IN輸出。比較器404將由無效歷史表IHT輸出的標記區段401與高地址ADD2進行比較,並且當二者匹配時輸出「I」或者當二者不匹配時輸出「O」。邏輯乘電路405將比較器404的輸出值與無效歷史表IHT輸出的無效位402的邏輯乘值作為無效狀態IS輸出。
[0059]當地址的無效歷史信息寄存在無效歷史表IHT中時,無效狀態IS變為「I」並且確定出所寄存的節點編號IN為有效。另一方面,當無效歷史信息沒有寄存在無效歷史表IHT中時,無效狀態IS變為「O」。
[0060]當歷史表的輸出,無效狀態IS為「I」時,高速緩衝控制器21僅接通開關SW12,以使得將包含地址的一致讀取請求僅輸出至由節點編號IN指示的編號的節點,例如在編號為「2」的情況下執行一致讀取的編號2節點。因此,不會僅由該一致讀取佔用所有的開關路徑,並且可以提高處理系統的性能。此外,不再發生對沒有必需數據的節點中的高速緩衝存儲器進行一致讀取,因此使得CPU的訪問延遲能夠減少。
[0061]將描述有必要僅向節點2發出一致讀取請求的原因。當數據由節點I和節點2共享時,如果節點2試圖重寫該數據,則節點2向其他節點1、3至6發出無效請求。該無效請求在節點I中命中,因此如(I)所述,相關高速緩衝行無效並且該信息的無效地址和節點編號寫入無效歷史表中。此後,如果試圖讀取節點I中的高速緩衝行,則因高速緩衝行已經無效而發生高速緩衝失中。然而,當讀取無效歷史表時,可以看出使該高速緩衝行無效的節點為編號2節點。即,可以看出很可能過去共享數據的節點2具有當前所需的數據。因此,可以看出僅僅必要向編號2節點發出一致讀取請求。如果節點2中不存在該數據,則向所有其他的節點發出一致讀取請求。
[0062]當歷史表的輸出的無效狀態IS為「O」時,高速緩衝控制器21將包含地址的一致讀取請求輸出至所有其他的節點2至6。
[0063](4)當節點發出無效請求時
[0064]例如,當節點I和節點2共享某一地址處的數據並且節點I中的CPUll試圖對該地址執行數據寫入時,CPU讀取為共享的高速緩衝存儲器31並且命中。在該情況下,高速緩衝控制器21讀取歷史表41中的一致讀取歷史表與訪問高速緩衝存儲器的地址一樣的地址處。當作為一致讀取歷史表的輸出的讀取位502為「I」即有效時,如果標記區段501的數據與所輸入的高地址ADD2匹配(RS= 「1」),則發生命中,指示節點編號區段503的數據RN為有效。當RS= 「I」即有效時,高速緩衝控制器21僅接通SW12以使得僅向由數據RN指示的編號=2的節點發出無效請求,並且發出該無效請求。因此,不會僅由該無效請求佔用所有的開關路徑,並且可以提聞處理系統的性能。在接收無效請求的節點2中,相關聞速緩衝行無效,並且該信息寫入至無效歷史表。此外,不發生對沒有共享該數據的節點中的高速緩衝存儲器的無效訪問,因此使得CPU的訪問延遲能夠減少。在進行無效後,重寫節點I中的高速緩衝存儲器31中的數據,並且狀態改變為修改。
[0065]將描述有必要僅向節點2發出無效請求的原因。作為本示例的假定,描述了節點I和節點2共享數據。然而,在共享數據之前,首先,例如,節點I中的高速緩衝存儲器31已經從主存儲器51讀取了某一地址處的數據,並且此後,當相同地址處的數據在節點2中變得必需時,節點2通過一致讀取請求獲得該數據。此時,響應於該一致讀取,節點I將高速緩衝存儲器31的狀態設定為共享,並且如(2)所述將相關地址和節點編號「2」的信息寫入至歷史表41中的一致讀取歷史表。也就是說,節點I知道與節點2共享該地址的數據。因此,當節點I對該地址發出無效請求時,可以看出僅需向節點2發出請求。
[0066]使用圖10描述一致讀取歷史表的示例,例如,節點1、2、3共享某一地址處的數據,並且當節點I中的CPUll試圖在該地址處執行數據的寫入時,CPU讀取為共享的高速緩衝存儲器31並且命中。在該情況下,高速緩衝控制器21讀取歷史表41中的一致讀取歷史表與訪問高速緩衝存儲器的地址一樣的地址處。如果作為一致讀取歷史表的輸出的標記區段901的數據與所輸入的高地址ADD2匹配並且節點映射區段中的任一節點位為「1」,則發生命中(RS=1),指示節點映射區段902的數據RN為有效。當RS= 「 I」即有效時,高速緩衝控制器21僅接通開關SWl2和SWl3以使得僅向由數據RN=2和3指示的位的節點發出無效請求,並且發出該無效請求。
[0067]當歷史表41的輸出RS= 「O」時,高速緩衝控制器21向所有的節點發出一致讀取請求。
[0068]圖6是例示當CPU讀取高速緩衝並且失中發生時的處理的流程圖。當高速緩衝命中發生時,CPU讀取高速緩衝存儲器的內容並且處理結束。例如將描述在高速緩衝失中時第二節點2的處理,而其他節點1、3至6進行與第二節點2類似的處理。當第二 CPU12針對某一地址處的數據發出讀取請求時,如果第二高速緩衝存儲器32中不存在該地址處的數據並且失中發生時,則進行圖6的處理。
[0069]在步驟S601中,第二高速緩衝控制器22通過使用讀取請求的地址中的低地址ADDl作為輸入地址來讀取其自身的無效歷史表MT。此外,高地址ADD2變為其自身的比較器404的一側的輸入。無效歷史表IHT通過使用低地址ADDl作為輸入地址來輸出標記區段401、無效位402以及節點編號403。當地址的無效歷史信息寄存在無效歷史表IHT中時,無效狀態IS變為「I」並且所寄存的節點編號IN變為有效。流程前進至步驟S602。另一方面,當該地址的無效歷史信息沒有寄存在無效歷史表IHT中時,無效狀態IS變為「O」並且流程前進至步驟S604。
[0070]在步驟S602中,第二高速緩衝控制器22通過單播僅向例如由節點編號IN指示的第一節點I輸出一致讀取請求。
[0071]接著,在步驟S603中,當在接收一致讀取請求的節點I中的高速緩衝存儲器中發生失中時,節點2中的高速緩衝控制器22確定出節點I中存在所需的數據,但是該數據在其中卻不存在。當由於高速緩衝存儲器31的容量小所以另一地址處的數據變得必需時發生這種情形,因而這些數據被重寫。在該情況下,流程前進至步驟S604。此外,當來自節點I的答覆是高速緩衝命中時,高速緩衝控制器22前進至步驟S608。
[0072]在步驟S604中,高速緩衝控制器22通過廣播向所有的其他節點1、3至6輸出一致讀取請求。注意,在經過上述步驟S602的情況下,對於在步驟S602中已經向其輸出一致讀取請求的節點而言,不需要再次輸出一致讀取請求。
[0073]接著,在步驟S605中,當針對由高速緩衝控制器22發出的一致讀取請求在所有的其他節點1、3至6中發生高速緩衝失中時,處理前進至步驟S606。當在其他節點1、3至6中的至少一個節點中發生高速緩衝命中時,處理前進至步驟S608。
[0074]在步驟S606中,鑑於其他節點中不存在節點2所需的數據,請求源的高速緩衝控制器22經由主存儲器控制器52從主存儲器51讀取該地址處的數據。
[0075]接著,在步驟S607中,請求源的高速緩衝控制器22將從主存儲器讀取的數據寫入至與該地址對應的高速緩衝存儲器32,並且CPU12獲取數據。高速緩衝存儲器32的狀態改變為獨有狀態E。因此,讀取處理結束。
[0076]步驟S608和稍後的步驟目標僅為針對來自節點2的一致讀取請求發生了高速緩衝命中的節點。任何不命中的節點結束。
[0077]在步驟S608中,高速緩衝控制器21、23至26中的每個高速緩衝控制器在其狀態302為獨有狀態E時前進至步驟S609、在其狀態302為共享狀態S時前進至步驟S611,或者在其狀態302為修改狀態M時前進至步驟S614。
[0078]在步驟S609中,節點1、3至6的高速緩衝控制器21、23至26將與高速緩衝存儲器31、33至36中針對其發出一致讀取請求的地址對應的高速緩衝行的狀態302改變為共享狀態S。
[0079]接著,在步驟S610中,節點1、3至6的高速緩衝控制器21、23至26通過使用發出一致讀取請求的節點2的地址的低地址ADDl作為輸入地址來在一致讀取歷史表RHT中寄存高地址(標記)501、具有值「I」的讀取位502以及作為請求源的節點2的節點編號503。此後,流程前進至步驟S612。
[0080]在步驟S611中,節點1、3至6的高速緩衝控制器21、23至26通過使用發出一致讀取請求的節點2的地址的低地址ADDl作為輸入地址來在一致讀取歷史表RHT中將讀取位502改變為「O」以使讀取位502無效。之後,流程前進至步驟S612。
[0081]在步驟S612中,請求源的高速緩衝控制器22確定想要讀取的最新數據在主存儲器中,並且從主存儲器51中讀取必需地址的數據。此後,流程前進至步驟S613。
[0082]在步驟S614中,節點1、3至6的高速緩衝控制器21、23至26將與高速緩衝存儲器31、33至36中針對其發出一致讀取請求的地址對應的高速緩衝行的狀態302改變為共享狀態S。
[0083]接著,在步驟S615中,節點1、3至6的高速緩衝控制器21、23至26通過使用發出一致讀取請求的節點2的地址的低地址ADDl作為輸入地址來在一致讀取歷史表RHT中寄存高地址(標記)501、具有值「I」的讀取位502以及作為請求源的節點2的節點編號503。
[0084]接著,在步驟S616中,一致地讀取的高速緩衝存儲器的狀態為M,這具體地指的是在高速緩衝存儲器31、33至36中的一個高速緩衝存儲器中存在最新數據,因此其中數據存在的節點1、3至6的高速緩衝控制器21、23至26將從高速緩衝存儲器31、33至36讀取的數據寫回到主存儲器51。伴隨著寫回操作,這些數據返回作為請求源的節點2。此後,流程前進至步驟S613。
[0085]在步驟S613中,請求源的高速緩衝控制器22將所獲得的最新數據寫入高速緩衝存儲器32。同時,CPU12獲取這些數據。然後,相關高速緩衝行的狀態302改變為共享狀態
S。因此,讀取處理結束。
[0086]圖7是例示第一節點I的寫入處理的流程圖。注意,該流程圖僅針對在CPU試圖寫入的地址處發生高速緩衝命中的情形。下面將描述作為示例的節點I的處理,但是節點2至6進行與第一節點I相同的處理。當第一 CPUll發出對其自身的高速緩衝存儲器31中的某一地址處的數據的寫入請求時,進行圖7的處理。
[0087]在步驟701中,高速緩衝控制器21在其試圖寫入的高速緩衝存儲器31中的地址命中高速緩衝行並且對應的狀態302為修改狀態M或獨有狀態E時前進至步驟S705,或者在對應的狀態302為共享狀態S時前進至步驟S702。注意,當狀態302為無效狀態I或者失中發生時,進行圖6中所例示的讀取失中的處理,並且此後進行圖7的處理。
[0088]在步驟S702中,高速緩衝控制器21通過使用前述寫入請求的地址中的低地址ADDl作為地址輸入來讀取一致讀取歷史表RHT,並且如果讀取位502為「I」即有效,並且由比較器504將高地址ADD2與標記區段501進行比較結果是匹配,則RS變為I,指示節點編號503的輸出RN為有效。也就是說,當一致讀取歷史信息寄存在一致讀取歷史表RHT中時,讀取狀態RS變為「I」、所寄存的節點編號RN變為有效,並且流程前進至步驟S703。在這方面,當該地址的一致讀取歷史信息沒有寄存在一致讀取歷史表RHT中時,讀取狀態RS變為「O」,並且處理前進到步驟S706。
[0089]在步驟S703中,高速緩衝控制器21通過單播例如僅向由節點編號RN指示的第二節點2輸出無效請求。此後,流程前進至步驟S704。
[0090]在步驟S706中,高速緩衝控制器21通過廣播向所有的其他節點2至6輸出無效請求。此後,流程前進至步驟S704。
[0091]在步驟S704中,沒有發生高速緩衝命中的節點對發出無效請求的高速緩衝控制器21不進行操作,並且前進至步驟S705。其中發生命中的節點,例如第二高速緩衝控制器22,前進至步驟S707。
[0092]在步驟S707中,節點2至6的高速緩衝控制器22至26將在其自身的高速緩衝存儲器32至36中的對其發出無效請求的高速緩衝行所對應的狀態302改變為無效狀態I。
[0093]接著,在步驟S708中,節點2至6的高速緩衝控制器22至26通過使用前述無效請求的地址的低地址ADDl作為地址輸入來在其自身的無效歷史表IHT中的標記區段401、無效位區段402以及節點編號區段403中寄存高地址(標記)401、具有值「I」的無效位402以及作為請求源的第一節點I。此後,處理前進至步驟S705。
[0094]在步驟S705中,根據前述寫入請求,請求源的第一 CPUll將其數據寫入至其自身的高速緩衝存儲器31中的數據區段303,並且將狀態302改變為修改狀態M。因此,寫入處理結束。
[0095]注意,儘管圖1中描述了作為示例的使用開關SW12至SW67的互耦合網絡,但是可以使用任意其他的互耦合網絡例如環形總線或公用總線。此外,本實施例中的高速緩衝存儲器的結構使用直接映射方法,但是當使用一組關聯的方法時,可以通過準備與其方式的數量對應的歷史表來適配該方法。此外,寫入屬於回寫方法,但是在沒有任何問題的情況下可以使用通寫方法(write through method)。此外,用指示無效狀態1、共享狀態S、獨有狀態E以及修改狀態M中的一個狀態的被稱作為MESI類型的示例描述了本實施例中的圖3的狀態302,但是還可以使用諸如MOESI的任意其他的方法。
[0096]在本實施例中,在其中多個CPU以彼此關聯的方式進行信息處理的處理系統中,通過識別應當接收探聽請求的CPU,減少了由多個CPU向所有其他CPU無條件輸出探聽請求的發生,並且減少了互耦合網絡上的數據擁塞,從而明顯地提高了互耦合網絡的性能。此夕卜,接收數量減少的探聽請求,高速緩衝存儲器可以專注於作為高速緩衝存儲器的真正目的的來自CPU的請求,並且這有助於處理性能提高。
[0097]應認為本實施例在所有方面都是說明性的而不是限制性的,並且因此意在將權利要求的等價的含義和範圍內的所有變化包括在內。在不違背本發明的精神或必要特徵的情況下可以以其他特定形式體現本發明。
[0098]通過僅向寄存在無效歷史表中的另一處理設備輸出一致讀取請求或者僅向寄存在一致讀取歷史表中的另一處理設備輸出無效請求,減少了由多個處理設備向所有其他處理設備無條件輸出一致讀取請求或者無效請求,並且減少了互耦合網絡上的數據擁塞,從而提高了性能。此外,接收數量減少的一致讀取請求或無效請求,高速緩衝存儲器可以專注於作為高速緩衝存儲器的真正目的的來自中央處理單元的讀/寫請求,並且這有助於處理性能提聞。
【權利要求】
1.一種處理設備,包括: 高速緩衝存儲器,所述高速緩衝存儲器存儲主存儲器的部分數據的副本; 中央處理單元,所述中央處理單元訪問所述高速緩衝存儲器中的數據; 高速緩衝控制器,所述高速緩衝控制器控制所述高速緩衝存儲器;以及 無效歷史表,其中: 當從另一處理設備輸入無效請求時,所述高速緩衝控制器將所述無效請求具有的一組無效請求地址和輸出所述無效請求的所述另一處理設備的標識符寄存在所述無效歷史表中;以及 當所述中央處理單元試圖讀取沒有存儲在所述高速緩衝存儲器中的第一地址處的數據時,如果所述第一地址寄存在所述無效歷史表中,則所述高速緩衝控制器將包含所述第一地址的一致讀取請求輸出至輸出了與所述第一地址對應的無效請求的另一處理設備的標識符所指示的所述另一處理設備,或者如果所述第一地址沒有寄存在所述無效歷史表中,則所述高速緩衝控制器將包含所述第一地址的一致讀取請求輸出至所有其他處理設備。
2.根據權利要求1所述的處理設備,其中, 當由於包含所述第一地址的所述一致讀取請求輸出至輸出了與所述無效歷史表中所寄存的所述第一地址對應的所述無效請求的所述另一處理設備的標識符所指示的所述另一處理設備而輸入來 自所述另一處理設備的所述第一地址處的數據處在無效狀態的指示時,所述高速緩衝控制器將包含所述第一地址的一致讀取請求輸出至所有其他處理設備。
3.一種處理設備,包括: 高速緩衝存儲器,所述高速緩衝存儲器存儲主存儲器的部分數據的副本; 中央處理單元,所述中央處理單元訪問所述高速緩衝存儲器中的數據; 高速緩衝控制器,所述高速緩衝控制器控制所述高速緩衝存儲器;以及 一致讀取歷史表,其中: 當從另一處理設備輸入一致讀取請求時,所述高速緩衝控制器將所述一致讀取請求具有的一組一致讀取請求地址和輸出所述一致讀取請求的所述另一處理設備的標識符寄存在所述一致讀取歷史表中;以及 當所述中央處理單元試圖重寫所述高速緩衝存儲器中的第二地址處的數據時,如果所述第二地址寄存在所述一致讀取歷史表中,則所述高速緩衝控制器將包含所述第二地址的無效請求輸出至與寄存在所述一致讀取歷史表中的所述第二地址對應的另一處理設備的標識符所指示的所述另一處理設備,或者如果所述第二地址沒有寄存在所述一致讀取歷史表中,則所述高速緩衝控制器將包含所述第二地址的無效請求輸出至所有其他處理設備。
4.根據權利要求3所述的處理設備,其中, 當所述一組一致讀取請求地址和所述另一處理設備的標識符已經寄存在所述一致讀取歷史表中並且存在來自另一處理設備對所述一致讀取歷史表在相同地址處的寄存請求時,所述一致讀取歷史表中在所述相同地址處的數據寄存被無效。
5.一種處理設備,包括: 高速緩衝存儲器,所述高速緩衝存儲器存儲主存儲器的部分數據的副本; 中央處理單元,所述中央處理單元訪問所述高速緩衝存儲器中的數據;高速緩衝控制器,所述高速緩衝控制器控制所述高速緩衝存儲器;以及 一致讀取歷史表,其中: 當從另一處理設備輸入一致讀取請求時,所述高速緩衝控制器改變與所述一致讀取請求具有的一致讀取請求地址和輸出所述一致讀取請求的所述另一處理設備對應的位,以指示在所述一致讀取歷史表中存在一致讀取請求;以及 當所述中央處理單元輸入重寫所述高速緩衝存儲器中的第三地址處的數據的請求時,如果所述第三地址寄存在所述一致讀取歷史表中,則所述高速緩衝控制器將包含所述第三地址的無效請求輸出至與指示在所述一致讀取歷史表中存在一致讀取請求的位位置對應的另一處理設備,或者如果所述第三地址沒有寄存在所述一致讀取歷史表中,則所述高速緩衝控制器將包含所述第 三地址的無效請求輸出至所有其他處理設備。
【文檔編號】G06F12/08GK104077236SQ201410064639
【公開日】2014年10月1日 申請日期:2014年2月25日 優先權日:2013年3月27日
【發明者】福田高利, 森健司郎, 高田修司 申請人:富士通株式會社