專利名稱:多核處理器系統(tǒng),控制程序以及控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及向存儲器中儲存數(shù)據(jù)的多核處理器系統(tǒng)、控制程序以及控制方法。
背景技術(shù):
以往,在CPU (Central Processing Unit:中央處理器)具有與存儲器相比訪問速度快的高速緩存的情況下,若從CPU產(chǎn)生數(shù)據(jù)的寫入請求,則向高速緩存中儲存數(shù)據(jù)。由此,CPU能夠從高速緩存中讀出數(shù)據(jù),所以能夠?qū)?shù)據(jù)的讀出高速化。在多核處理器系統(tǒng)中,各線程被分配給哪個CPU是根據(jù)分配狀態(tài)而決定的,所以如果在對象程序內(nèi)存在在多個線程間共享的數(shù)據(jù),則該數(shù)據(jù)有可能被多個CPU利用。在此,向多核處理器分配線程例如是分配給負荷最小的CPU。于是,在多核處理器系統(tǒng)中按每個CPU具有分散高速緩存的情況下,在產(chǎn)生數(shù)據(jù)的寫入請求時將該數(shù)據(jù)儲存到全部的CPU的分散高速緩存的技術(shù)(第一現(xiàn)有技術(shù))已被公知。而且,為了保持分散高速緩存間的數(shù)據(jù)的一致性,進行監(jiān)測處理。在監(jiān)測處理中,若在一個CPU的分散高速緩存檢測到高速緩存行(cache line)的變化,則經(jīng)由監(jiān)測總線更新其他的CPU的分散高速緩存。另外,在多核處理器的分散高速緩存中的任一個分散高速緩存中保持數(shù)據(jù)。而且,未在分散高速緩存中儲存數(shù)據(jù)的CPU通過對保持該數(shù)據(jù)的CPU的分散高速緩存進行訪問而讀出該數(shù)據(jù)的技術(shù)(第二現(xiàn)有技術(shù))已被公知(例如參照下述專利文獻I。)。另外,在多核處理器系統(tǒng)中按每個CPU具有本地存儲器的情況下,其他CPU向一個CPU的本地存儲器寫入數(shù)據(jù)的技術(shù)已被公知(例如,參照下述專利文獻2。)。專利文獻1:日本特開平I 一 251250專利文獻2:日本特開平11 - 39214然而,在第二現(xiàn)有技術(shù)中,為了使未在分散高速緩存中儲存有數(shù)據(jù)的其他CPU讀出該數(shù)據(jù),必須訪問在分散高速緩存中儲存了該數(shù)據(jù)的一個CPU。由此,在一個CPU和其他CPU針對該數(shù)據(jù)的訪問產(chǎn)生速度差。即,在第二現(xiàn)有技術(shù)中,存在未將數(shù)據(jù)儲存在分散高速緩存中的CPU的讀出速度變慢的問題點。另一方面,在第一現(xiàn)有技術(shù)中,由于在各CPU的分散高速緩存中儲存數(shù)據(jù),所以不會如第二現(xiàn)有技術(shù)那樣讀出速度變慢,但多核處理器中的全部的CPU并不一定讀出分散高速緩存所儲存的數(shù)據(jù)。即,存在該CPU的分散高速緩存的區(qū)域被未讀出的數(shù)據(jù)占用的問題點。
發(fā)明內(nèi)容
本發(fā)明的目的在于為了解決上述的第一以及第二以往技術(shù)的問題點,而提供一種不會對高速緩存的讀出速度造成影響,能夠有效利用高速緩存的區(qū)域的多核處理器系統(tǒng)、控制程序以及控制方法。根據(jù)本發(fā)明的一觀點,提供一種多核處理器系統(tǒng),具備:存儲單元,其按定義為對象數(shù)據(jù)的輸入目標(biāo)的輸入目標(biāo)線程存儲該輸入目標(biāo)線程的分配目標(biāo)核的識別信息;更新單元,若檢測到上述輸入目標(biāo)線程向多核處理器的分配,則該更新單元更新由上述存儲單元存儲的上述輸入目標(biāo)線程的分配目標(biāo)核的識別信息;檢測單元,其檢測上述對象數(shù)據(jù)的寫入請求;確定單元,其基于由上述檢測單元檢測到上述寫入請求的上述對象數(shù)據(jù),從上述存儲單元確定上述更新單元更新后的識別信息;和儲存單元,其向上述多核處理器中的、由上述確定單元確定了上述更新后的識別信息的上述輸入目標(biāo)線程的分配目標(biāo)核的存儲器儲存上述對象數(shù)據(jù)。根據(jù)本多核處理器系統(tǒng)、控制程序以及控制方法,實現(xiàn)不會影響高速緩存的讀出速度、能夠有效利用高速緩存的區(qū)域這樣的效果。
圖1是表不本實施方式的一個例子的說明圖。圖2是表示線程的分配例的說明圖。圖3是表示多核處理器系統(tǒng)100的硬件的一個例子的框圖。圖4是表不變換表400的一個例子的說明圖。圖5是表示分散高速緩存111的詳細例的說明圖。圖6是表示監(jiān)測總線103的詳細例的說明圖。圖7是表不與依賴關(guān)系有關(guān)的列表組700的一個例子的說明圖。圖8是表不線程管理表800的一個例子的說明圖。圖9是多核處理器系統(tǒng)100的功能框圖。圖10是表示線程I的分配例的說明圖。圖11是表示線程2的分配例的說明圖。圖12是表示變量被儲存的例子的說明圖。圖13是表示0S191的更新處理順序的流程圖(其I)。圖14是表示0S191的更新處理順序的流程圖(其2)。圖15是表示圖13以及圖14所示的變換表的更新處理(步驟S1305或者步驟S1312)的詳細說明的流程圖。圖16是表示各MMU的確定處理順序的流程圖。圖17是表示分散高速緩存控制器的儲存處理順序(來自監(jiān)測總線103的寫入請求)的流程圖。圖18是表示分散高速緩存控制器的儲存處理順序(來自MMU的寫入請求)的流程圖。圖19是表示應(yīng)用程序的一個例子的說明圖。圖20是表示解碼結(jié)果的儲存例的說明圖。圖21是表示PCM結(jié)果的儲存例的說明圖。
具體實施例方式對本發(fā)明所涉及的多核處理器系統(tǒng)、控制程序以及控制方法的優(yōu)選實施方式進行詳細說明。此外,在本實施方式的多核處理器系統(tǒng)中,多核處理器是指安裝有多個核的處理器。只要安裝有多個核即可,可以是安裝了多個核的單個處理器,也可以是單核的處理器并行進行處理的處理器組。此外,在本實施方式中,為了將說明簡化,所以以單核的處理器并行進行處理的處理器組舉例進行說明。圖1是表示本實施方式的一個例子的說明圖。圖1的線程I { }和線程2{ }的各自的{ }內(nèi)記述有各自的編碼例。線程I中,將5代入變量z,將10代入變量X。然后,在線程I中將變量z和10的相加結(jié)果代入變量W。由此,在線程I中變量X、變量Z和變量W是輸出數(shù)據(jù),在線程I中變量Z是輸入數(shù)據(jù)。在線程2中,將變量X代入變量y,將變量z和100的相乘結(jié)果代入變量a。由此,在線程2中變量y和變量a是輸出數(shù)據(jù),變量X和變量z是輸入數(shù)據(jù)。變量X的輸入目標(biāo)線程是線程2,變量z的輸入目標(biāo)線程是線程I和線程2。表具有輸出數(shù)據(jù)項、輸入目標(biāo)線程項和分配目標(biāo)CPU的識別信息項,按每個輸出數(shù)據(jù)來記述該輸出數(shù)據(jù)的輸入目標(biāo)線程和該輸入目標(biāo)線程的分配目標(biāo)CPU。在開發(fā)具有線程I和線程2的程序時,該程序的開發(fā)者能夠通過使用編譯器來確定出輸出數(shù)據(jù)和該輸出數(shù)據(jù)的輸入目標(biāo)線程。另外,對于輸入目標(biāo)線程的分配目標(biāo)CPU,根據(jù)線程I和線程2的分配狀態(tài)而發(fā)生變化。線程I被分配給CPU101,因此在輸出數(shù)據(jù)項的信息為變量z,并且輸入目標(biāo)線程的識別信息項的信息為線程I的情況下,分配目標(biāo)CPU的識別信息項的信息為CPU101。首先,OS (Operating System:操作系統(tǒng))191執(zhí)行:(I)若將線程2分配給CPU,貝IJ 0S191將輸出數(shù)據(jù)項的信息為變量z、并且輸入目標(biāo)線程的識別信息項的信息為線程2時的分配目標(biāo)CPU的識別信息項的信息更新為CPU102。
`
而且,0S191執(zhí)行:(2)將輸出數(shù)據(jù)項的信息為變量X、并且輸入目標(biāo)線程的識別信息項的信息為線程2時的分配目標(biāo)CPU的識別信息項的信息更新為CPU102。另外,在此,0S191將線程2分配給CPU102,由此對該線程2的分配進行檢測。然后,0S191執(zhí)行:(3)在檢測出變量X的寫入請求時,0S191執(zhí)行:(4)基于變量X從表中檢索分配目標(biāo)CPU的識別信息項中所保持的信息,從而確定分配目標(biāo)CPU的識別信息。接著,0S191執(zhí)行:(5)由于確定的分配目標(biāo)CPU的識別信息示出CPU102,所以向CPU102的分散高速緩存112中儲存變量X。由此,在多核處理器的CPU的高速緩存中,能夠僅在分配有將對象數(shù)據(jù)作為輸入使用的線程的CPU的高速緩存中保持對象數(shù)據(jù)。即,在無需對象數(shù)據(jù)的讀出的CPU的高速緩存中沒有儲存對象數(shù)據(jù),所以不會給輸入目標(biāo)線程讀出對象數(shù)據(jù)的讀出速度帶來影響,能夠?qū)⒏鞲咚倬彺娴膮^(qū)域有效地利用。另外,如上述那樣對于線程的分配來說,輸入目標(biāo)線程的分配根據(jù)CPU的分配狀態(tài)來決定,所以儲存對象數(shù)據(jù)的CPU的高速緩存也根據(jù)該輸入目標(biāo)線程的分配狀態(tài)而發(fā)生變化。圖2是表示線程的分配例的說明圖。(a)分配例I中,如圖1所示的例子那樣,線程I被分配給CPU101,線程2被分配給CPU102。(b)在分配例2中,線程I和線程2都被分配給 CPUlOI。本實施方式中的分配例I中,在分散高速緩存111和分散高速緩存112中,變量X僅被儲存在分散高速緩存112,變量z被儲存在分散高速緩存111和分散高速緩存112中。而在本實施方式中的分配例2中,在分散高速緩存111和分散高速緩存112中,變量X僅被儲存在分散高速緩存111,變量z也僅被儲存在分散高速緩存111。在本實施方式中,通過對各輸出數(shù)據(jù)的輸入目標(biāo)線程的分配目標(biāo)CPU進行存儲以及更新,而決定儲存該輸出數(shù)據(jù)的CPU的分散高速緩存。接著,在本實施方式中,示出對于各輸出數(shù)據(jù)的輸入目標(biāo)線程的分配目標(biāo)CPU使用MMU (Memory Management Unit:存儲器管理單元)和線程管理表進行管理的例子。(多核處理器系統(tǒng)100的硬件)圖3是表示多核處理器系統(tǒng)100的硬件的一個例子的框圖。在圖3中,多核處理器系統(tǒng)100例如具有CPUlOl以及CPU102、MMU141以及MMU142、分散高速緩存111以及分散高速緩存112、和共享存儲器104。在本實施方式中,將CPUlOl和CPU102 —并稱為多核處理器。另外,雖未圖示但在多核處理器系統(tǒng)100中,例如,作為與用戶、其他設(shè)備之間的輸入輸出裝置,具有與互聯(lián)網(wǎng)等網(wǎng)絡(luò)連接的I / F (Interface)、顯示器和鍵盤109。在此,CPUlOl和MMU141經(jīng)由I / F181連接,MMU141和分散高速緩存111 (具體地說,為分散高速緩存控制器121)經(jīng)由I / F171連接。CPU102和MMU142經(jīng)由I / F182連接,MMU142和分散高速緩存112 (具體地說,為分散高速緩存控制器122)經(jīng)由I / F172連接。各分散高速緩存的分散高速緩存控制器和共享存儲器104經(jīng)由監(jiān)測總線103連接。CPUlOl和CPU102分別具有核和寄存器。核具體地說,是指實現(xiàn)CPU的運算功能的電路。CPUlOl是主CPU,執(zhí)行0S191,承擔(dān)多核處理器系統(tǒng)100的整體控制。0S191具有對將軟件的各線程分配給哪個CPU進行控制的功能,并具有對被分配給CPUlOl的線程的切換進行控制的功能。CPU102是協(xié)CPU,執(zhí)行0S192。0S192具有對分配給CPU102的線程的切換進行控制的功能。MMU141和MMU142具有如下功能,即若分別從CPUlOl和CPU102接受了訪問請求,則使用變換表400將該訪問請求所附帶的邏輯地址變換為物理地址。MMU141和MMU142可以分別被包含在CPUlOl的內(nèi)部和CPU102的內(nèi)部。而且,在多核處理器系統(tǒng)100中使MMU141和MMU142為硬件,但也可以使MMU141和MMU142作為軟件分別是0S191和0S192的功能的一部分。(變換表400的一個例子)圖4是表示變換表400的一個例子的說明圖。邏輯地址是指在程序的編碼上定義的虛擬存儲器空間上的地址,物理地址是指共享存儲器上的地址。在變換表400中,按每個邏輯地址具有將該邏輯地址映射在共享存儲器上從而得到的物理地址。在變換表400中,具有邏輯地址項401、物理地址項402和區(qū)域信息項403。由于在從各CPU通知的訪問請求中附帶有邏輯地址,所以通過從變換表400內(nèi)的邏輯地址項401所保持的信息中檢索該訪問請求的邏輯地址,而能夠確定物理地址。另外,區(qū)域信息項403中保持有能夠辨別在各邏輯地址示出的虛擬存儲器空間上所配置的對象數(shù)據(jù)的輸入目標(biāo)線程的分配目標(biāo)CPU的信息。區(qū)域信息項403具有與各CPU對應(yīng)的CPU標(biāo)志。區(qū)域信息項403具有與CPUlOl對應(yīng)的CPUlOl標(biāo)志和與CPU102對應(yīng)的CPU102標(biāo)志。例如,如果區(qū)域信息項403中,CPUlOl標(biāo)志為1,CPU102標(biāo)志為0,則對象數(shù)據(jù)的輸入目標(biāo)線程的分配目標(biāo)CPU為CPUlOl。另外,例如,如果在區(qū)域信息項403中,CPUlOl標(biāo)志為0,CPU102標(biāo)志為I,則對象數(shù)據(jù)的輸入目標(biāo)線程的分配目標(biāo)CPU為CPUlOl。
區(qū)域信息項403中,針對CPUlOl標(biāo)志以及CPU102標(biāo)志,根據(jù)線程的分配狀態(tài)來決定0S191確立哪個標(biāo)志(是否設(shè)定為I)。返回圖3,分散高速緩存111具有分散高速緩存控制器121和分散高速緩沖存儲器131。分散高速緩存控制器121控制向分散高速緩沖存儲器131的寫入、讀出。分散高速緩存112具有分散高速緩存控制器122和分散高速緩沖存儲器132。分散高速緩存控制器122控制向分散高速緩沖存儲器132的寫入、讀出。分散高速緩存111的分散高速緩存控制器121經(jīng)由主I / F151向監(jiān)測總線103傳遞物理地址、數(shù)據(jù)、指令信息。而且,分散高速緩存控制器121經(jīng)由協(xié)I / F161從監(jiān)測總線103接受物理地址、數(shù)據(jù)、指令信息。分散高速緩存112的分散高速緩存控制器122經(jīng)由主I / F152向監(jiān)測總線103傳遞物理地址、數(shù)據(jù)、指令信息。分散高速緩存控制器121經(jīng)由協(xié)I / F162從監(jiān)測總線103接受物理地址、數(shù)據(jù)、指令信息。(分散高速緩存111的詳細例)圖5是表示分散高速緩存111的詳細例的說明圖。如上所述分散高速緩存111中具有分散高速緩存控制器121和分散高速緩沖存儲器131。在分散高速緩沖存儲器131中,按每個數(shù)據(jù)存儲有物理地址、STATE (狀態(tài))和數(shù)據(jù)。在分散高速緩沖存儲器131中,將物理地址和STATE —并稱為標(biāo)簽信息,將標(biāo)簽信息和數(shù)據(jù)一并稱為高速緩存行。分散高速緩存控制器121能夠基于來自MMU141或者監(jiān)測總線103的對象數(shù)據(jù)的訪問請求所附帶的物理地址來判斷在分散高速緩沖存儲器131中是否存儲有對象數(shù)據(jù)。在此,對STATE進行說明。STATE是2位的信息,根據(jù)STATE的值來決定各高速緩存行能夠取得的狀態(tài)。該狀態(tài)因?qū)崿F(xiàn)監(jiān)測方式的協(xié)議的不同而不同,但作為代表的狀態(tài)為以下的4種狀態(tài)。-M (Modified)狀態(tài):表示高速緩存行僅存在于該高速緩存中,已經(jīng)被變更的狀態(tài) E (Exclusive)狀態(tài):表示高速緩存行僅存在于該高速緩存中,沒有被變更的狀態(tài) S (Shared)狀態(tài):表示高速緩存行存在于多個高速緩存的狀態(tài) I (Invalid)狀態(tài):表示高速緩存行無效的狀態(tài)分散高速緩存控制器121與該4種狀態(tài)對應(yīng)地進行動作。使用圖17以及圖18的流程圖后述分散高速緩存控制器121進行的動作。另外,對于分散高速緩存112,由于是與分散高速緩存111同樣的功能,所以省略詳細的說明。返回圖3,監(jiān)測總線103連接共享存儲器104和分散高速緩存,是與監(jiān)測處理對應(yīng)的總線。(監(jiān)測總線103的詳細例)圖6是表示監(jiān)測總線103的詳細例的說明圖。圖6中的線是物理上的一根信號線,黑圓點表示信號線彼此的連接。監(jiān)測總線103具有地址信號線、指令信號線、數(shù)據(jù)信號線、控制器601和選擇信號線。監(jiān)測總線103從主I / F151以及主I / F152、和協(xié)I / F161以及協(xié)I / F162接收信號。
主I / F151以及主I / F152例如,將物理地址向地址信號線送出,將表示是讀出請求還是寫入請求的指令信息向指令信號線送出。而且,控制器601接收被送出的物理地址??刂破?01基于物理地址和預(yù)先登記在控制器601中的映射信息,向針對對應(yīng)的協(xié)I / F的選擇信號線輸出選擇信號。接收了選擇信號的協(xié)I / F接受來自主I / F151以及主I / F152的物理地址和指令信息,該協(xié)I / F根據(jù)指令信息進行數(shù)據(jù)的交換。而且,監(jiān)測總線103中例如具有廣播、阻塞和無效3種功能。廣播是指將指令信息和數(shù)據(jù)信息的組合的請求從主I / F向預(yù)先作為廣播目標(biāo)而設(shè)定的全部協(xié)I / F送出的功能。阻塞是指強制地解除當(dāng)前的總線連接的功能。無效是指針對各分散高速緩沖存儲器使與對象物理地址對應(yīng)的高速緩存行無效化的功能。通過使用這些功能,監(jiān)測總線103滿足作為高速緩存一致性機構(gòu)被要求的功能。返回圖3,共享存儲器104是CPUlOl和CPU102所共享的存儲器。共享存儲器104例如具有 ROM (Read Only Memory:只讀存儲器)、RAM (Random Access Memory:隨機存取存儲器)和快閃ROM等。共享存儲器104例如存儲有線程管理表800、0S191以及0S192的啟動程序、后述的控制程序或應(yīng)用程序、和與依賴關(guān)系有關(guān)的列表組700。例如,ROM或者快閃ROM存儲該程序等,RAM被用作CPU101和CPU102的工作區(qū)域。共享存儲器104所存儲的0S191和0S192分別被加載到CPU101和CPU102,從而使各CPU執(zhí)行被編碼的處理。(與依賴關(guān)系有關(guān)的列表組700的一個例子)圖7是表示與依賴關(guān)系有關(guān)的列表組700的一個例子的說明圖。在與依賴關(guān)系有關(guān)的列表組700中,按每個線程具有與該線程內(nèi)的輸出數(shù)據(jù)和該輸出數(shù)據(jù)的輸入目標(biāo)線程有關(guān)的信息,并且按每個線程具有該線程內(nèi)的輸入數(shù)據(jù)和與該輸入數(shù)據(jù)的輸出源線程有關(guān)的信息。與線程I有關(guān)的列表701具有輸出表711和輸入表721,與線程2有關(guān)的列表702具有輸出表712和輸入表722。輸出表711具有輸出數(shù)據(jù)項和輸入目標(biāo)線程項。在輸出表711中,按輸出數(shù)據(jù)項中所保持的每個數(shù)據(jù),該數(shù)據(jù)的輸入目標(biāo)線程被保持在輸入目標(biāo)線程項中。在輸入表721中具有輸入數(shù)據(jù)項和輸出源線程項。在輸入表721中,按輸入數(shù)據(jù)項所保持的每個數(shù)據(jù),該數(shù)據(jù)的輸出源線程被保持在輸出源線程項中。輸出表712具有輸出數(shù)據(jù)項和輸入目標(biāo)線程項。輸出表712中,按輸出數(shù)據(jù)項中所保持的每個數(shù)據(jù),該數(shù)據(jù)的輸入目標(biāo)線程被保持在輸入目標(biāo)線程項中。在輸入表722中具有輸入數(shù)據(jù)項和輸出源線程項。在輸入表722中,按輸入數(shù)據(jù)項中所保持的每個數(shù)據(jù),該數(shù)據(jù)的輸出源線程被保持在輸出源線程項中。與各線程的依賴關(guān)系有關(guān)的列表,例如,能夠通過由程序的設(shè)計者使用編譯器來解析該程序內(nèi)的各數(shù)據(jù)來創(chuàng)建。(線程管理表800的一個例子)圖8是表示線程管理表800的一個例子的說明圖。線程管理表800按每個線程記述該線程的分配狀態(tài)和該線程的執(zhí)行狀態(tài)。線程管理表800具有線程的識別信息項801、分配目標(biāo)CPU的識別信息項802和執(zhí)行狀態(tài)項803。例如,0S191若接受程序的啟動指示,則將該程序內(nèi)的全部線程的識別信息登記到線程管理表800內(nèi)的線程的識別信息項801中。然后,例如,若OS191按每個線程決定了該線程的分配目標(biāo)CPU,則OS191將該分配目標(biāo)CPU的識別信息登記到線程管理表800內(nèi)的分配目標(biāo)CPU的識別信息項802中。分配目標(biāo)CPU的識別信息為“ 一 ”的線程表示分配目標(biāo)(PU沒有決定的狀態(tài)。對于執(zhí)行狀態(tài),例如,表示是正在執(zhí)行、還是未分配(圖中“一”所示。)、還是登記在就緒隊列中的執(zhí)行等待。例如,0S19U0S192若進行任務(wù)切換,則對與通過該任務(wù)切換而切換的線程有關(guān)的執(zhí)行狀態(tài)項803的執(zhí)行狀態(tài)進行改寫。在圖8中,與線程I以及線程2有關(guān)的分配目標(biāo)CPU的識別信息項802中所保持的分配目標(biāo)CPU的識別信息是“-”,執(zhí)行狀態(tài)項803所保持的執(zhí)行狀態(tài)為“ 一”。另外,除了共享存儲器104之外,線程管理表800也可以被各分散高速緩沖存儲器存儲,如果任意一個分散高速緩沖存儲器內(nèi)的線程管理表800有變化,則可以經(jīng)由監(jiān)測總線103進行監(jiān)測處理。返回圖3,對與上述的顯示器和網(wǎng)絡(luò)等進行連接的I / F和鍵盤進行說明。顯示器以光標(biāo)、圖標(biāo)或者工具箱為主,顯示文檔、圖像、功能信息等數(shù)據(jù)。該顯示器例如能夠采用TFT液晶顯不器等。該I / F 通過通信線路與 LAN (Local Area Network:局域網(wǎng))、WAN (Wide AreaNetwork:廣域網(wǎng))、互聯(lián)網(wǎng)等網(wǎng)絡(luò)連接,并經(jīng)由網(wǎng)絡(luò)與其他裝置連接。對該I / F例如能夠采用調(diào)制解調(diào)器、LAN適配器等。鍵盤具備用于進行數(shù)字、各種指示等的輸入的按鍵,進行數(shù)據(jù)的輸入。另外,鍵盤也可以是觸摸面板式的輸入板、數(shù)字鍵等。圖9是多核處理器系統(tǒng)100的功能框圖。在多核處理器系統(tǒng)100中,具有存儲部901、更新部902、檢測部903、確定部904、儲存部905、判斷部906和消去部907。存儲部901例如通過MMU存儲變換表400,共享存儲器104存儲線程管理表800而被實現(xiàn)。更新部902例如使用編程語言等定義在控制程序內(nèi),在0S191內(nèi)編入該控制程序。而且,CPUlOl加載存儲于共享存儲器104內(nèi)的0S191,通過由CPUlOl執(zhí)行被編碼成該0S191內(nèi)的控制程序的處理而實現(xiàn)更新部902。另外,例如,將檢測部903和確定部904利用HDL描述進行功能定義,對該HDL描述進行邏輯合成而組合邏輯電路等元件,從而能夠在各MMU內(nèi)實現(xiàn)檢測部903和確定部904。另外,例如,檢測部903和確定部904作為控制程序被存儲在共享存儲器104內(nèi)。而且,例如,也可以由如CPU101、CPU102那樣具有能夠執(zhí)行程序的功能的MMU加載該控制程序來執(zhí)行被編碼成該控制程序的處理。儲存部905、判斷部906和消去部907通過分散高速緩存
111、分散高速緩存112而實現(xiàn)。存儲部901,按定義為對象數(shù)據(jù)的輸入目標(biāo)的每個輸入目標(biāo)線程,存儲該輸入目標(biāo)線程的分配目標(biāo)CPU的識別信息。更新部902若檢測到輸入目標(biāo)線程向多核處理器的分配,則更新通過存儲部901存儲的線程的分配目標(biāo)CPU的識別信息。檢測部903檢測對象數(shù)據(jù)的寫入請求。確定部904基于通過檢測部903檢測到寫入請求的對象數(shù)據(jù),從存儲部901確定更新部902進行更新后的識別信息。儲存部905在多核處理器中,向通過確定部904確定了更新后的識別信息的輸入目標(biāo)線程的分配目標(biāo)CPU的分散高速緩沖存儲器中儲存對象數(shù)據(jù)。判斷部906在寫入請求的請求源CPU沒有包含在輸入目標(biāo)線程的分配目標(biāo)CPU中的情況下,基于對象數(shù)據(jù)所包含的地址信息來判斷是否在請求源CPU的分散高速緩沖存儲器內(nèi)儲存有對象數(shù)據(jù)。在本實施方式中,具體地說,例如,在寫入請求中附帶有物理地址,并且在分散高速緩沖存儲器內(nèi)的各高速緩存行中儲存有物理地址。例如,根據(jù)寫入請求的物理地址和高速緩存行的物理地址的一致來判斷是否儲存有對象數(shù)據(jù)。消去部907在通過判斷部90判斷為在請求源CPU的分散高速緩沖存儲器內(nèi)儲存有對象數(shù)據(jù)的情況下,消去請求源CPU的分散高速緩沖存儲器內(nèi)的對象數(shù)據(jù)。消去分散高速緩沖存儲器內(nèi)的對象數(shù)據(jù),具體地說例如是指將對象數(shù)據(jù)無效化。另外,儲存部905在未通過確定部904確定出更新后的識別信息的情況下,向?qū)懭胝埱蟮恼埱笤碈PU的分散高速緩沖存儲器中儲存對象數(shù)據(jù)。未通過確定部904確定出更新后的識別信息的情況,具體地說是指例如輸入目標(biāo)線程未分配的情況。基于上述,使用實施例詳細地進行說明。圖10是表示線程I的分配例的說明圖。首先,0S191若接受線程I的分配指示,則通過參照線程管理表800來確認各CPU的分配狀態(tài),向CPUlOl和CPU102的任意一個CPU分配線程I。0S191執(zhí)行:(1)將線程I分配給CPU101,由此檢測出線程I向多核處理器的分配。接著,0S191從線程管理表800內(nèi)的線程的識別信息項801中檢索與線程I 一致的識別信息。0S191通過更新部902執(zhí)行:(2)將分配目標(biāo)CPU的識別信息項802中所保持的分配目標(biāo)CPU的識別信息更新為CPUlOl。而且,0S191將執(zhí)行狀態(tài)項803中所保持的執(zhí)行狀態(tài)更新為正在執(zhí)行。`而且,0S191從輸出表711中按輸出數(shù)據(jù)項所保持的數(shù)據(jù)的順序來檢索輸入目標(biāo)線程項中所保持的信息。在變量X的情況下,輸入目標(biāo)線程項所保持的信息是線程2。0S191從線程管理表800內(nèi)的線程的識別信息項801中檢索與線程2 —致的識別信息,并檢索與該線程2有關(guān)的分配目標(biāo)CPU的識別信息項802中所保持的分配目標(biāo)CPU的識別信息。在此,對于線程的分配目標(biāo)CPU的識別信息而言,“一”被檢索。由于作為變量X的輸入目標(biāo)線程的線程2未分配,所以0S191執(zhí)行:(3)將變換表400內(nèi)的CPUlOl標(biāo)志更新為I。即,在對象數(shù)據(jù)的輸入目標(biāo)線程未分配的情況下,在寫入請求的請求源CPU的存儲器中儲存對象數(shù)據(jù)。由此,能夠?qū)ο髷?shù)據(jù)儲存到至少一個CPU的分散高速緩存中,并且能夠有效地利用其他的CPU的分散高速緩存的區(qū)域。另外,本實施方式中,在輸入目標(biāo)線程的分配目標(biāo)CPU不明的情況下(輸入目標(biāo)線程未分配的情況下),確立變量X的輸出源線程的CPUlOl標(biāo)志,但并不局限于此,例如,可以確立全部的CPU標(biāo)志?;蛘?,例如,也可以按照所有CPU標(biāo)志都不確立而直接將變量X寫入共享存儲器104的方式設(shè)定。和與上述的變量X有關(guān)的處理同樣,0S191對于變量z也將與變換表400內(nèi)的變量z有關(guān)的記錄的CPUlOl標(biāo)志更新為I。另外,在圖10的例子中,0S191每當(dāng)產(chǎn)生線程的分配,就更新變換表400內(nèi)的CPU標(biāo)志,但并不局限于此,例如,0S191也可以在產(chǎn)生了寫入請求時更新變換表400內(nèi)的CPU標(biāo)
O圖11是表示線程2的分配例的說明圖。首先,0S191當(dāng)接受了線程2的分配指示時,通過參照線程管理表800而確認各線程的分配狀態(tài),向CPUlOl和CPU102中的任意一個CPU分配線程2。OS191執(zhí)行:(I)通過將線程2分配給CPU,來檢測線程2的分配。接著,0S191從線程管理表800內(nèi)的線程的識別信息項801中檢索與線程2 —致的識別信息。0S191執(zhí)行:(2)將線程的識別信息項801的識別信息為線程2的分配目標(biāo)CPU的識別信息項802中所保持的分配目標(biāo)CPU的識別信息更新為CPU102。而且,0S191執(zhí)行:
(2)將線程的識別信息項801的識別信息為線程2的執(zhí)行狀態(tài)項803中所保持的執(zhí)行狀態(tài)更新為正在執(zhí)行。其次,0S191從與線程2有關(guān)的列表702中取得輸出表712。而且,0S191從輸出表712中按輸出數(shù)據(jù)項中所保持的輸出數(shù)據(jù)的順序來檢索輸入目標(biāo)線程項中所保持的輸入目標(biāo)線程的識別信息。在此,由于線程2內(nèi)的輸出數(shù)據(jù)亦即變量I和變量a所涉及的變換表400的更新處理與圖10說明的變量X的更新處理相同,所以省略詳細的說明。接著,0S191從與線程2有關(guān)的列表702中取得輸入表722。而且,0S191從輸入表722中按輸入數(shù)據(jù)項中所保持的輸入數(shù)據(jù)的順序來檢索輸出源線程項中所保持的輸出源線程的識別信息。在此,由于作為線程2的輸入數(shù)據(jù)的變量X和變量z的輸出源線程為線程1,所以檢索結(jié)果為線程I。而且,0S191取得檢索到的輸出源線程的輸出表。S卩,從與線程I有關(guān)的列表701中取得輸出表711。0S191從輸出表711中按輸出數(shù)據(jù)項中所保持的輸出數(shù)據(jù)的順序來檢索輸入目標(biāo)線程項中所保持的輸入目標(biāo)線程的識別信息。在此,由于線程I內(nèi)的輸出數(shù)據(jù)亦即變量X和變量z所涉及的變換表400的更新處理與圖10說明的變量X的更新處理相同,所以省略詳細的說明。由此,執(zhí)行:(3)更新與變換表400內(nèi)的變量X有關(guān)的記錄的CPU標(biāo)志。圖12是表示儲存變量X的例子的說明圖。接著,若在線程I內(nèi)產(chǎn)生變量X的寫入請求,則0S191檢測該寫入請求,執(zhí)行:(I)將附帶有邏輯地址和寫入數(shù)據(jù)的寫入請求通知給MMU141。MMU141通過檢測部903檢索與接受到的寫入請求所附帶的邏輯地址相同的變換表400內(nèi)的邏輯地址項401中所保持的邏輯地址。而且,MMU141通過檢索與該檢索到的邏輯地址對應(yīng)的物理地址項402所保持的物理地址,執(zhí)行:(2)將邏輯地址變換為物理地址。而且,MMU141利用確定部904,通過讀出與變換表400內(nèi)檢索到的邏輯地址對應(yīng)的CPU標(biāo)志,執(zhí)行:(3)確定變量X的輸入目標(biāo)線程的分配目標(biāo)CPU。與檢索到的邏輯地址對應(yīng)的CPU標(biāo)志是指處于包含檢索到的邏輯地址的記錄上的CPU標(biāo)志。MMU141使寫入請求中附帶物理地址、寫入數(shù)據(jù)和各CPU標(biāo)志,向分散高速緩存控制器121通知該寫入請求。分散高速緩存控制器121若接受了該寫入請求,則參照各CPU標(biāo)志,向為I的CPU標(biāo)志所示的CPU中儲存寫入數(shù)據(jù)。在此,CPU標(biāo)志為0,CPU標(biāo)志為1,所以分散高速緩存控制器121通過儲存部905,執(zhí)行:(5)不向CPUlOl的分散高速緩沖存儲器131儲存寫入數(shù)據(jù),而是執(zhí)行(6)向CPU102的分散高速緩沖存儲器132儲存寫入數(shù)據(jù)。(0S191的更新處理順序)圖13以及圖14是表示0S191的更新處理順序的流程圖。首先,0S191判斷是否接受了線程的啟動指示(步驟S1301)。0S191在判斷為沒有接受線程的啟動指示的情況下(步驟S1301:否),返回步驟S1301。0S191在判斷為接受了線程的啟動指示的情況下(步驟S1301:是),決定接受了啟動指示的線程(對象線程)的分配目標(biāo)CPU (步驟S1302)。接著,0S191通過更新部902,基于決定結(jié)果更新線程管理表800(步驟S1303)。而且,0S191取得按對象線程的每個輸出數(shù)據(jù)而記述該輸出數(shù)據(jù)的輸入目標(biāo)線程的輸出表(步驟S1304),并通過更新部902,執(zhí)行變換表400的更新處理(步驟S1305)。而且,0S191取得按照對象線程的每個輸入數(shù)據(jù)而記述該輸入數(shù)據(jù)的輸出源線程的輸入表(步驟S1306),判斷在對象線程內(nèi)的輸入數(shù)據(jù)中是否存在未選擇的輸入數(shù)據(jù)(步驟S1307)。0S191在判斷為存在未選擇的輸入數(shù)據(jù)的情況下(步驟S1307:是),從未選擇的輸入數(shù)據(jù)中選擇一個輸入數(shù)據(jù)(選擇輸入數(shù)據(jù))(步驟S1308)。而且,0S191將與選擇輸入數(shù)據(jù)所涉及的區(qū)域信息內(nèi)的對象線程的分配目標(biāo)CPU對應(yīng)的標(biāo)志設(shè)定為1(步驟S1309)。0S191基于輸入表檢索選擇輸入數(shù)據(jù)的輸出源線程(步驟S1310),取得按檢索到的輸出源線程內(nèi)的每個輸出數(shù)據(jù)而記述該輸出數(shù)據(jù)的輸入目標(biāo)線程的輸出表(步驟S1311)。而且,0S191通過更新部902,執(zhí)行變換表400的更新處理(步驟S1312),返回步驟 S1307。另外,在步驟S1307中,0S191在判斷為在對象線程內(nèi)的輸入數(shù)據(jù)中,沒有未選擇的輸入數(shù)據(jù)的情況下(步驟S1307:否),返回步驟S1301。圖15是表示圖13以及圖14所示的變換表的更新處理(步驟S1305或者步驟S1312)的詳細的說明的流程圖。首先,0S191判斷取得的輸出表內(nèi)的輸出數(shù)據(jù)中是否存在未選擇的輸出數(shù)據(jù)(步驟S1501)。而且,0S191在判斷為取得的輸出表內(nèi)的輸出數(shù)據(jù)中存在未選擇的輸出數(shù)據(jù)的情況下(步驟S1501:是),從未選擇的輸出數(shù)據(jù)中選擇一個輸出數(shù)據(jù)(選擇輸出數(shù)據(jù))(步驟S1502)。而且,0S191基于輸出表檢索選擇輸出數(shù)據(jù)的輸入目標(biāo)線程(步驟S1503),基于線程管理表800確定檢索到的輸入目標(biāo)線程的分配目標(biāo)CPU (步驟S1504)。接著,0S191將與選擇輸出數(shù)據(jù)有關(guān)的CPU標(biāo)志中對應(yīng)于確定的分配目標(biāo)CPU的CPU標(biāo)志設(shè)定為I (步驟S1505)。而且,0S191在與選擇輸出數(shù)據(jù)有關(guān)的CPU標(biāo)志中,將與除了確定的分配目標(biāo)CPU之外的CPU對應(yīng)的CPU標(biāo)志設(shè)定為0 (步驟S1506),并判斷是否確定了全部輸入目標(biāo)線程的分配目標(biāo)CPU (步驟S1507)。0S191在判斷為確定了全部輸入目標(biāo)線程的分配目標(biāo)CPU的情況下(步驟S1507:是),返回步驟S1501。0S191在判斷為沒有確定全部輸入目標(biāo)線程的分配目標(biāo)CPU的情況下(步驟S1507:否),將與選擇輸出數(shù)據(jù)有關(guān)的CPU標(biāo)志中對應(yīng)于對象線程的分配目標(biāo)CPU的標(biāo)志設(shè)定為I (步驟S1508)。由此,能夠?qū)ο髷?shù)據(jù)儲存在至少一個CPU的分散高速緩存中,并且能夠有效利用其他CPU的分散高速緩存的區(qū)域。而且,0S191在步驟S1508后返回步驟S1501。另外,0S191在判斷為取得的輸出表內(nèi)的輸出數(shù)據(jù)中,沒有未選擇的輸出數(shù)據(jù)的情況下(步驟S1501:否),移至步驟S1306 (步驟S1307)。(各MMU的確定處理順序)圖16是表示各MMU的確定處理順序的流程圖。首先,MMU通過檢測部903,判斷是否檢測到對象數(shù)據(jù)的寫入請求(步驟S1601)。MMU在判斷為沒有檢測到對象數(shù)據(jù)的寫入請求的情況下(步驟S1601:否),返回步驟S1601。MMU在判斷為檢測到對象數(shù)據(jù)的寫入請求的情況下(步驟S1601:是),通過確定部904,基于檢測到的寫入請求所附帶的邏輯地址,從變換表400中檢索與對象數(shù)據(jù)有關(guān)的記錄(步驟S1602)。而且,MMU將變換為邏輯地址而檢索到的記錄內(nèi)的物理地址與寫入請求建立關(guān)聯(lián)(步驟S1603)。接著,MMU通過確定部904,從檢索到的記錄中將CPU標(biāo)志與寫入請求建立關(guān)聯(lián)(步驟S1604),向分散高速緩存控制器通知寫入請求(步驟S1605),返回步驟S1601。(各分散高速緩存控制器的儲存處理順序)圖17是表示分散高速緩存控制器的儲存處理順序(來自監(jiān)測總線103的寫入請求)的流程圖。首先,分散高速緩存控制器判斷是否接受了來自監(jiān)測總線103的寫入請求(步驟S1701)。分散高速緩存控制器在判斷為沒有接受來自監(jiān)測總線103的寫入請求的情況下(步驟S1701:否),返回步驟S1701。另一方面,分散高速緩存控制器在判斷為接受了來自監(jiān)測總線103的寫入請求的情況下(步驟S1701:是),移至步驟S1702。在步驟S1702中,分散高速緩存控制器判斷對象高速緩存行是否處于與該分散高速緩存控制器對應(yīng)的分散高速緩沖存儲器上(步驟S1702)。分散高速緩存控制器在判斷為對象高速緩存行不在與該分散高速緩存控制器對應(yīng)的分散高速緩沖存儲器上的情況下(步驟S1702:否),判斷輸出目標(biāo)CPU是否僅為一個(步驟 S1703)。分散高速緩存控制器在判斷為輸出目標(biāo)CPU僅為一個的情況下(步驟S1703:是),以M狀態(tài)獲取對象高速緩存行(步驟S1704)。以M狀態(tài)獲取對象高速緩存行表示將標(biāo)簽信息的STATE設(shè)定為M狀態(tài)進行獲取。而且,分散高速緩存控制器在判斷為輸出目標(biāo)CPU不僅是一個的情況下(步驟S1703:否),以S狀態(tài)獲取對象高速緩存行(步驟S1705)。以S狀態(tài)獲取對象高速緩存行表示將標(biāo)簽信息的STATE設(shè)定為S狀態(tài)進行獲取。在步驟S1704或者步驟S1705后,分散高速緩存控制器更新與該分散高速緩存控制器對應(yīng)的分散高速緩沖存儲器內(nèi)的對象高速緩存行上的數(shù)據(jù)(步驟S1706),返回步驟S1701。另外,分散高速緩存控制器在判斷為對象高速緩存行處于與該分散高速緩存控制器對應(yīng)的分散高速緩沖存儲器上的情況下(步驟S1702:是),移至步驟S1706。圖18是表示分散高速緩存控制器的儲存處理順序(來自MMU的寫入請求)的流程圖。首先,分散高速緩存控制器判斷是否接受了來自MMU的寫入請求(步驟S1801)。分散高速緩存控制器在判斷為沒有接受來自MMU的寫入請求的情況下(步驟S1801:否),返回步驟S1801。另一方面,分散高速緩存控制器在判斷為接受了來自MMU的寫入請求的情況下(步驟S1801:是),判斷在寫入請求中是否附帶有CPU標(biāo)志(步驟S1802)。分散高速緩存控制器在判斷為在寫入請求中沒有附帶CPU標(biāo)志的情況下(步驟S1802:否),作為通常的監(jiān)測對應(yīng)高速緩存控制器進行動作(步驟S1803),返回步驟S1801。作為通常的監(jiān)測對應(yīng)高速緩存控制器的動作是指,基于標(biāo)簽信息判斷對象高速緩存行是否被儲存在分散高速緩沖存儲器上,如果被儲存,就更新對象高速緩存行。另一方面,在對象高速緩存行沒有被儲存在分散高速緩沖存儲器上的情況下,在分散高速緩沖存儲器上獲取對象高速緩存行。而且,向全部的CPU的分散高速緩存控制器通知對象高速緩存行的儲存。在步驟S1802中,分散高速緩存控制器在判斷為在寫入請求中附帶有CPU標(biāo)志的情況下(步驟S1802:是),通過判斷部906,判斷與寫入請求的請求源CPU對應(yīng)的CPU標(biāo)志是否為I (步驟S1804)。分散高速緩存控制器在判斷為與寫入請求的請求源CPU對應(yīng)的CPU標(biāo)志為I的情況下(步驟S1804:是),判斷對象高速緩存行是否處于分散高速緩沖存儲器上(步驟 S1805)。分散高速緩存控制器在判斷為對象高速緩存行不在分散高速緩沖存儲器上的情況下(步驟S1805:否),判斷輸出目標(biāo)CPU是否為一個(步驟S1806)。分散高速緩存控制器在判斷為輸出目標(biāo)CPU是一個的情況下(步驟S1806:是),以M狀態(tài)獲取對象高速緩存行(步驟 S1807)。分散高速緩存控制器在判斷為輸出目標(biāo)CPU不是一個的情況下(步驟S1806:否),以S狀態(tài)獲取對象高速緩存行(步驟S1808)。在步驟S1807或者步驟S1808后,分散高速緩存控制器更新分散高速緩沖存儲器內(nèi)的對象高速緩存行上的數(shù)據(jù)(步驟S1809)。另外,在步驟S1805中,分散高速緩存控制器在判斷為對象高速緩存行處于分散高速緩沖存儲器上的情況下(步驟S1805:是),移至步驟S1809。在步驟S1804中,分散高速緩存控制器在判斷為與寫入請求的請求源CPU對應(yīng)的CPU標(biāo)志不是I的情況下(步驟S1804:否),判斷對象高速緩存行是否處于分散高速緩沖存儲器上(步驟S1810)。首先,分散高速緩存控制器在判斷為對象高速緩存行處于分散高速緩沖存儲器上的情況下(步驟S1810:是),將對象高速緩存行的數(shù)據(jù)回寫到共享存儲器104(步驟S1811)。而且,分散高速緩存控制器通過消去部907使對象高速緩存行無效化(步驟S1812)。使對象高速緩存行無效化是指,將對象高速緩存行的STATE設(shè)定為I狀態(tài)。將STATE設(shè)定為I狀態(tài)是表不消去該對象聞速緩存行。在步驟S1810中,分散高速緩存控制器在判斷為對象高速緩存行不在分散高速緩沖存儲器上的情況下(步驟S1810:否),移至步驟S1813。在步驟S1809、步驟S1810為否的情況下,或者在步驟S1812后,向以CPU標(biāo)志指定的分散高速緩存通知寫入請求(步驟S1813),返回步驟S1801。(應(yīng)用程序的一個例子)在此,作為具體的應(yīng)用程序例舉多聲道音頻解碼器。在多聲道音頻解碼器中,是對語音數(shù)據(jù)進行解碼來輸出的處理。首先,被壓縮的語音數(shù)據(jù)按I單位被解碼。而且,解碼結(jié)果為從I到7聲道分別為4KB (Byte)大小。解碼結(jié)果按每個聲道進行濾波處理、加工和合成(PCM (Pulse CodeModulation:脈沖編碼調(diào)制))處理。進行了濾波處理、PCM處理的語音數(shù)據(jù)按全部聲道匯集,匯集后的語音數(shù)據(jù)與安裝在設(shè)備中的再生裝置(揚聲器)的聲道數(shù)對應(yīng)地進行下混處理。然后,下混處理后的語音數(shù)據(jù)向該再生裝置輸出。由于I單位的語音數(shù)據(jù)為數(shù)十ms左右,所以在多聲道音頻解碼器中,在向再生裝置輸出的過程中反復(fù)進行下一語音數(shù)據(jù)的解碼處理、濾波處理、PCM處理來再生長時間的語音數(shù)據(jù)。濾波處理、PCM處理能夠按每個聲道執(zhí)行,所以多聲道的語音數(shù)據(jù)中能夠在多核處理器中對各聲道并行執(zhí)行濾波處理以及PCM處理。圖19是表示應(yīng)用程序的一個例子的說明圖。在此,如圖19那樣例舉分為解碼處理、各聲道的濾波處理以及PCM處理、和下混以及輸出的處理的線程進行安裝的例子。進行解碼處理的線程是線程DEC,進行濾波處理以及PCM處理的線程是線程CHl 線程CH7以及線程CH7.1,進行濾波處理以及PCM處理的線程是線程DM。首先,在線程DEC中輸出全聲道的解碼后的語音數(shù)據(jù)(解碼結(jié)果)。然后,線程CHl 線程CH7以及線程CH7.1分別將I聲道的解碼后的語音數(shù)據(jù)(解碼結(jié)果)作為輸入并分別輸出I聲道的加工后的語音數(shù)據(jù)(PCM結(jié)果)。然后,在線程DM中將全聲道的加工后的語音數(shù)據(jù)作為輸入。圖20是表示解碼結(jié)果的儲存例的說明圖。圖20中,線程CHl和線程CH2被分配給CPU2001,線程CH3和線程CH4被分配給CPU2002。線程CH5和線程CH6被分配給CPU2003,線程CH7、線程CH7.1、線程DEC和線程DM被分配給CPU2004。在此,僅線程DEC為正在執(zhí)行中(圖中實線的線程),其他的線程全部為執(zhí)行等待中(圖中虛線的線程)。若圖20所示的多核處理器系統(tǒng)具有存儲部901 儲存部905,則在線程DEC的解碼結(jié)果中,作為向線程CHl和線程CH2的輸入的解碼結(jié)果僅輸出到CPU2001的分散高速緩存2011。而且,線程DEC的解碼結(jié)果中,作為向線程CH3和線程CH4的輸入的解碼結(jié)果僅輸出到CPU2002的分散高速緩存2012。而且,線程DEC的解碼結(jié)果中,作為向線程CH5和線程CH6的輸入的解碼結(jié)果僅輸出到CPU2003的分散高速緩存2013。線程DEC的解碼結(jié)果中,作為向線程CH7和線程CH7.1的輸入的解碼結(jié)果僅儲存在CPU2004的分散高速緩存2014。圖20中,從線程DEC向分散高速緩存2013、分散高速緩存2012和分散高速緩存2011內(nèi)的解碼結(jié)果引出箭頭。實際上,經(jīng)由CPU2004的MMU、分散高速緩存2014內(nèi)的分散高速緩存控制器、以及監(jiān)測總線向各分散緩存中儲存解碼結(jié)果。圖21是表示PCM結(jié)果的儲存例的說明圖。線程CHl 線程CH7以及線程CH7.1為正在執(zhí)行中(圖中實線的線程),線程DEC和線程DM為執(zhí)行等待中(圖中虛線的線程)。若圖21所示的多核處理器系統(tǒng)具有存儲部901儲存部905,則各PCM的結(jié)果被線程DM使用,所以各PCM的結(jié)果僅被儲存于分配了線程DM的CPU的分散高速緩存中。在圖21中,從各聲道的線程向分散高速緩存2014內(nèi)的各PCM的結(jié)果引出箭頭。實際上,經(jīng)由分配了各聲道的線程的CPU的MMU、該CPU的分散高速緩存內(nèi)的分散高速緩存控制器、以及監(jiān)測總線向分散高速緩存2014儲存各PCM的結(jié)果。如以上說明那樣,根據(jù)多核處理器系統(tǒng)、控制程序以及控制方法,在多核處理器中,僅在以對象數(shù)據(jù)作為輸入使用的輸入目標(biāo)線程的分配目標(biāo)CPU的分散高速緩存中儲存對象數(shù)據(jù)。由此,在無需對象數(shù)據(jù)的讀出的CPU的分散高速緩存中沒有儲存對象數(shù)據(jù)。由此,不會給輸入目標(biāo)線程讀出對象數(shù)據(jù)的讀出速度帶來影響,能夠有效利用各分散高速緩存的區(qū)域。另外,在對象數(shù)據(jù)的寫入請求的請求源CPU沒有包含在輸入目標(biāo)線程的分配目標(biāo)CPU中的情況下,在該請求源CPU的分散高速緩存中已經(jīng)儲存有對象數(shù)據(jù)時,在該請求源CPU的分散高速緩存中已經(jīng)消去對象數(shù)據(jù)。由此,能夠消去未讀出的數(shù)據(jù)的區(qū)域,能夠有效利用未讀出對象數(shù)據(jù)的CPU的分散高速緩存的區(qū)域。另外,對象數(shù)據(jù)的輸入目標(biāo)線程為向多核處理器未分配的情況下,在寫入請求的請求源CPU的存儲器中儲存對象數(shù)據(jù)。由此,能夠?qū)ο髷?shù)據(jù)儲存在至少一個CPU的分散高速緩存中,并且能夠有效地利用其他CPU的分散高速緩存的區(qū)域。
附圖標(biāo)記說明100…多核處理 器系統(tǒng);101、102、2001、2002、2003、2004…CPU ;121,122…分散高速緩存控制器;131、132…分散高速緩沖存儲器;901…存儲部;902…更新部;903…檢測部;904…確定部;905…儲存部;906…判斷部;907…消去部。
權(quán)利要求
1. 一種多核處理器系統(tǒng),其特征在于,具備存儲單元,其按定義為對象數(shù)據(jù)的輸入目標(biāo)的輸入目標(biāo)線程來存儲該輸入目標(biāo)線程的 分配目標(biāo)核的識別信息;更新單元,若檢測到所述輸入目標(biāo)線程向多核處理器的分配,則該更新單元更新由所 述存儲單元存儲的所述輸入目標(biāo)線程的分配目標(biāo)核的識別信息; 檢測單元,其對所述對象數(shù)據(jù)的寫入請求進行檢測;確定單元,其基于由所述檢測單元檢測到所述寫入請求的所述對象數(shù)據(jù),從所述存儲 單元確定由所述更新單元更新后的識別信息;和儲存單元,其向所述多核處理器中的、由所述確定單元確定了所述更新后的識別信息 的所述輸入目標(biāo)線程的分配目標(biāo)核的存儲器儲存所述對象數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的多核處理器系統(tǒng),其特征在于,具有 判斷單元,在所述寫入請求的要求源核未包含在所述輸入目標(biāo)線程的分配目標(biāo)核中的 情況下,該判斷單元基于所述對象數(shù)據(jù)所包含的地址信息來判斷在所述要求源核的存儲器 內(nèi)是否儲存有所述對象數(shù)據(jù);和消去單元,在由所述判斷單元判斷為在所述請求源核的存儲器內(nèi)儲存有所述對象數(shù)據(jù) 的情況下,該消去單元消去所述要求源核的存儲器內(nèi)的所述對象數(shù)據(jù)。
3.根據(jù)權(quán)利要求1或者2所述的多核處理器系統(tǒng),其特征在于, 在由所述確定單元未確定出所述更新后的識別信息的情況下,所述儲存單元向所述寫 入請求的請求源核的存儲器儲存所述對象數(shù)據(jù)。
4 一種控制程序,其特征在于,使能夠訪問對多核處理器的每個核向存儲器的訪問進 行控制的控制電路、且能夠訪問按定義為對象數(shù)據(jù)的輸入目標(biāo)的輸入目標(biāo)線程存儲該輸入 目標(biāo)線程的分配目標(biāo)核的識別信息的存儲單元的、所述多核處理器執(zhí)行更新步驟,若檢測到所述輸入目標(biāo)線程向所述多核處理器的分配,則更新由所述存儲 單元存儲的所述輸入目標(biāo)線程的分配目標(biāo)核的識別信息; 檢測步驟,對所述對象數(shù)據(jù)的寫入請求進行檢測;確定步驟,基于由所述檢測步驟檢測到所述寫入請求的所述對象數(shù)據(jù),從所述存儲單 元確定所述更新步驟更新后的識別信息;和儲存處理步驟,使所述控制電路向所述多核處理器中的、由所述確定步驟確定了所述 更新后的識別信息的所述輸入目標(biāo)線程的分配目標(biāo)核的存儲器儲存所述對象數(shù)據(jù)。
5.一種控制方法,其特征在于,使能夠訪問對多核處理器的每個核向存儲器的訪問進 行控制的控制電路、且能夠訪問按定義為對象數(shù)據(jù)的輸入目標(biāo)的輸入目標(biāo)線程存儲該輸入 目標(biāo)線程的分配目標(biāo)核的識別信息的存儲單元的、所述多核處理器執(zhí)行更新步驟,若檢測到所述輸入目標(biāo)線程向所述多核處理器的分配,則更新由所述存儲 單元存儲的所述輸入目標(biāo)線程的分配目標(biāo)核的識別信息; 檢測步驟,對所述對象數(shù)據(jù)的寫入請求進行檢測;確定步驟,基于由所述檢測步驟檢測到所述寫入請求的所述對象數(shù)據(jù),從所述存儲單 元確定所述更新步驟更新后的識別信息;和儲存處理步驟,使所述控制電路向所述多核處理器中的、由所述確定步驟確定了所述 更新后的識別信息的所述輸入目標(biāo)線程的分配目標(biāo)核的存儲器儲存所述對象數(shù)據(jù)。
全文摘要
本發(fā)明涉及多核處理器系統(tǒng),控制程序以及控制方法。OS(191)若將線程2分配給CPU(102),則OS(191)將輸出數(shù)據(jù)項的輸出數(shù)據(jù)為變量z、并且輸入目標(biāo)線程的識別信息項的輸入目標(biāo)線程的識別信息為線程2時的分配目標(biāo)CPU的識別信息項的分配目標(biāo)CPU的識別信息更新為CPU(102)。OS(191)將輸出數(shù)據(jù)項的輸出數(shù)據(jù)為變量x、并且輸入目標(biāo)線程的識別信息項的輸入目標(biāo)線程的識別信息為線程2時的分配目標(biāo)CPU的識別信息項的分配目標(biāo)CPU的識別信息更新為CPU(102)。OS(191)若檢測到變量x的寫入請求,則OS(191)將變量x作為檢索關(guān)鍵字從表中檢索分配目標(biāo)CPU的識別信息項的分配目標(biāo)CPU的識別信息,由此確定分配目標(biāo)CPU的識別信息,基于確定結(jié)果向CPU(102)的分散高速緩存(112)儲存變量x。
文檔編號G06F9/46GK103109279SQ20108006757
公開日2013年5月15日 申請日期2010年6月22日 優(yōu)先權(quán)日2010年6月22日
發(fā)明者鈴木貴久, 山下浩一郎, 山內(nèi)宏真, 栗原康志 申請人:富士通株式會社