專利名稱:多核處理器系統(tǒng)、同步控制系統(tǒng)、同步控制裝置、信息生成方法以及信息生成程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及控制寄存器間的同步的多核處理器系統(tǒng)、同步控制系統(tǒng)、同步控制裝置、信息生成方法以及信息生成程序。
背景技術(shù):
近年來(lái),代替安裝一個(gè)處理器核的計(jì)算機(jī)亦即單核處理器,而采用安裝有多個(gè)處理器的計(jì)算機(jī)亦即多核處理器的方式的裝置正在增加。在將面向以往的單核的軟件資產(chǎn)應(yīng)用于多核處理器的情況下,由于是由多個(gè)核執(zhí)行一個(gè)程序,所以需要考慮寄存器的值的兼容性。例如,作為與執(zhí)行對(duì)象的生成相關(guān)的技術(shù),公開(kāi)有一種在匯編程序上安裝虛擬的寄存器,在匯編的階段,通過(guò)對(duì)虛擬的寄存器進(jìn)行流程解析來(lái)判斷生存區(qū)間,并置換成實(shí)際寄存器這樣的技術(shù)(例如,參照下述專利文獻(xiàn)I)。在專利文獻(xiàn)I所涉及的技術(shù)中,能夠明確寄存器的生存區(qū)間。因此,在將寫(xiě)在單核上的匯編碼變更為通過(guò)多核處理器系統(tǒng)來(lái)并列處理的情況下,能夠避免不需要的同步處理的插入、或者同步處理的漏插入。另外,作為與在多核處理器系統(tǒng)中的負(fù)荷分散相關(guān)的技術(shù),例如已經(jīng)公開(kāi)了一種在處理模塊中持有配置信息,基于配置信息來(lái)決定各核所執(zhí)行的處理模塊這樣的技術(shù)(例如,參照下述專利文獻(xiàn)2。)。另外,作為用于進(jìn)行多核處理器系統(tǒng)中的并列處理的硬件的技術(shù),公開(kāi)了一種通過(guò)具有能夠從多個(gè)核訪問(wèn)的雙端口的寄存器,從而能夠容易地進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)的技術(shù)(例如,參照下述專利文獻(xiàn)3。)。另外,作為多核處理器系統(tǒng)的寄存器的同步方法,存在一種利用了高速緩存一致性機(jī)構(gòu)的技術(shù)(以下,稱為“現(xiàn)有技術(shù)I”。)。例如,在使特定的核的寄存器與其他核的寄存器同步的情況下,特定的核首先將寄存器的值寫(xiě)入高速緩存。檢測(cè)出寄存器的值被寫(xiě)入高速緩存的高速緩存一致性機(jī)構(gòu)向其他核的高速緩存通知寄存器的值。最后,其他核從其他核的高速緩存讀入寄存器的值,并寫(xiě)入其他核的寄存器。通過(guò)前述的一系列的動(dòng)作能夠進(jìn)行寄存器的同步。另外,作為多核處理器系統(tǒng)的寄存器的同步方法,例如公開(kāi)了一種設(shè)置進(jìn)行同步的專用指令的技術(shù)(例如,參照下述專利文獻(xiàn)4。)。在專利文獻(xiàn)4所涉及的技術(shù)中,在特定的核執(zhí)行專用指令時(shí),特定的核向其他核發(fā)送寄存器的值,使特定的核在其他核執(zhí)行寄存器轉(zhuǎn)發(fā)指令之前成為暫時(shí)停止?fàn)顟B(tài)。由此,能夠在軟件上以一個(gè)步驟執(zhí)行與現(xiàn)有技術(shù)I等同的處理內(nèi)容。圖13是表示在以往例的多核處理器系統(tǒng)中執(zhí)行C程序或者C + +程序時(shí)的寄存器的同步方法的說(shuō)明圖。設(shè)計(jì)時(shí),編譯器讀入成為C源程序、或者C + +源程序的C / C + +源程序1301,作為被追加了同步控制碼的執(zhí)行對(duì)象的一部分,生成程序塊1302和程序塊1303。另外,同步控制碼所對(duì)應(yīng)的位置為程序塊1304、程序塊1305。具體而言,C / C + +源程序1301包含“A = A + I ;func (A); ”這2個(gè)宣言,程序塊1302與程序塊1303是前述的2個(gè)宣言所對(duì)應(yīng)的執(zhí)行對(duì)象。在圖13的例子中,即使執(zhí)行程序塊1302與程序塊1303的CPU不同,也能夠通過(guò)程序塊1304、程序塊1305來(lái)取得寄存器Grl的同步,能夠正常地進(jìn)行動(dòng)作。具體而言,在程序塊1304中,將寄存器Grl保存在作為高速緩存等的區(qū)域的OxOOOOFFOO中。接下來(lái),在程序塊1305中,讀入保存在OxOOOOFFOO中的值并設(shè)定為寄存器Grl。這樣,存在下述技術(shù),即在編譯時(shí),通過(guò)追加同步控制碼,從而根據(jù)面向單核的程序生成面向多核處理器的執(zhí)行對(duì)象的技術(shù)(以下,稱為“現(xiàn)有技術(shù)2”。)。專利文獻(xiàn)1:日本特開(kāi)平8-234997號(hào)公報(bào)專利文獻(xiàn)2 :日本特開(kāi)2006-99156號(hào)公報(bào);專利文獻(xiàn)3 :日本特開(kāi)平01-048163號(hào)公報(bào);專利文獻(xiàn)4 :日本特開(kāi)平04-195664號(hào)公報(bào)然而,在上述的現(xiàn)有技術(shù)中,在現(xiàn)有技術(shù)1、現(xiàn)有技術(shù)2、還有專利文獻(xiàn)4所涉及的技術(shù)中,新追加了同步控制碼。因此,若將現(xiàn)有技術(shù)1、現(xiàn)有技術(shù)2、專利文獻(xiàn)4所涉及的技術(shù)用于匯編源程序,則存在對(duì)于生成的執(zhí)行對(duì)象執(zhí)行碼發(fā)生改變這樣的問(wèn)題。匯編源程序例如,在想要減少即使I個(gè)步驟的指令數(shù)的情況下,由設(shè)計(jì)者生成。因此,匯編源程序被期待一對(duì)一地變換成機(jī)器語(yǔ)言,由于無(wú)意中被追加了執(zhí)行碼,因此存在成為設(shè)計(jì)者不希望的代碼量這樣的問(wèn)題。本發(fā)明是為了消除上述現(xiàn)有技術(shù)的問(wèn)題點(diǎn),其目的在于,提供能夠不改變匯編源程序而以多核并行執(zhí)行的多核處理器系統(tǒng)、同步控制系統(tǒng)、同步控制裝置、信息生成方法以及信息生成程序。為了解決上述課題,實(shí)現(xiàn)目的,公開(kāi)的多核處理器系統(tǒng)通過(guò)多核處理器中的特定的核,檢測(cè)出在多核處理器內(nèi)將由同步源核執(zhí)行中的線程轉(zhuǎn)移至同步目標(biāo)核這一情況,通過(guò)特定的核,參照確定線程組的各個(gè)線程與和線程建立了對(duì)應(yīng)的寄存器的組合的表,確定與檢測(cè)出進(jìn)行了轉(zhuǎn)移的線程對(duì)應(yīng)的特定的寄存器,通過(guò)特定的核,生成確定被確定的特定的寄存器以及同步目標(biāo)核的同步控制信息,與多核處理器以能夠進(jìn)行通信的方式連接,從特定的核取得生成的同步控制信息,從同步源核的特定的寄存器讀入根據(jù)同步控制信息獲得的特定的寄存器的值,對(duì)同步目標(biāo)核的特定的寄存器寫(xiě)入從同步源核的特定的寄存器讀入的值。根據(jù)本多核處理器系統(tǒng)、同步控制系統(tǒng)、同步控制裝置、信息生成方法以及信息生成程序,能夠起到不改變面向單核的匯編源程序就能夠以多核正常地并行執(zhí)行這樣的效果O
圖1是表示實(shí)施方式涉及的多核處理器系統(tǒng)100的硬件的功能框圖。圖2是表示對(duì)CPUslOl應(yīng)用使用專用同步線路的寄存器同步控制裝置的狀態(tài)的功能框圖。圖3表示對(duì)CPUsIOI應(yīng)用使用了監(jiān)測(cè)機(jī)構(gòu)201的寄存器同步控制裝置的狀態(tài)的功能框圖。圖4是表示產(chǎn)生同步事件的狀態(tài)的說(shuō)明圖。
圖5是表示多核處理器系統(tǒng)100的功能的功能框圖。圖6是表示同步事件未產(chǎn)生時(shí)的寄存器同步控制裝置205的概要的說(shuō)明圖。圖7是表示同步控制寄存器603的存儲(chǔ)內(nèi)容的一個(gè)例子的說(shuō)明圖。圖8是表示同步事件產(chǎn)生時(shí)的同步源CPU的寄存器同步控制裝置205的概要的說(shuō)明圖。圖9是表示同步事件產(chǎn)生時(shí)的同步目標(biāo)CPU的寄存器同步控制裝置205的概要的說(shuō)明圖。圖10是表示多核處理器系統(tǒng)100的設(shè)計(jì)時(shí)的概要的說(shuō)明圖。圖11是表示調(diào)度處理的流程圖。圖12是表示寄存器同步控制處理的流程圖。圖13是表示在以往例中的多核處理器系統(tǒng)中執(zhí)行C程序或者C ++程序時(shí)的寄存器的同步方法的說(shuō)明圖。
具體實(shí)施例方式以下,參照附圖,對(duì)本發(fā)明的多核處理器系統(tǒng)、同步控制系統(tǒng)、同步控制裝置、信息生成方法以及信息生成程序的優(yōu)選實(shí)施方式詳細(xì)地進(jìn)行說(shuō)明。(多核處理器系統(tǒng)的硬件)圖1是表示實(shí)施方式所涉及的多核處理器系統(tǒng)100的硬件的功能框圖。在圖1中,多核處理器系統(tǒng)100具備搭載多個(gè)CPU的CPUslOl、ROM (Read Only Memory) 102和RAM(Random Access Memory) 103。另外,多核處理器系統(tǒng)100具備快閃R0M104、快閃ROM控制器105和快閃R0M106。另外,多核處理器系統(tǒng)100具備顯示器107、I / F (Interface)108、鍵盤(pán)109作為與用戶、其他設(shè)備的輸入輸出裝置。另外,各部通過(guò)總線110分別連接。這里,CPUsIOI管理多核處理器系統(tǒng)100的整體的控制。CPUslOl是指并行處理地連接單核處理器的所有的CPU。CPUslOl包括CPU # O, CPU # I。并且,CPUslOl也可以包括3個(gè)以上的CPU。CPU # O, CPU # I分別具有專用的高速緩存。另外,多核處理器系統(tǒng)是包括搭載有多個(gè)核的處理器的計(jì)算機(jī)系統(tǒng)。只要是搭載多個(gè)核,無(wú)論是搭載多個(gè)核的單一處理器,還是單核處理器并行處理的處理器組均可。此外,在本實(shí)施方式中,以作為單核處理器的CPU并行處理的形態(tài)為例進(jìn)行說(shuō)明。另外,CPU # OXPU # I分別持有專用的寄存器,還分別具有成為本實(shí)施方式的特征的、專用的寄存器同步控制裝置。利用圖2后述寄存器同步控制裝置的詳細(xì)。R0M102存儲(chǔ)有啟動(dòng)程序等程序。RAM103被用作為CPUslOl的工作區(qū)域??扉WR0M104存儲(chǔ)有OS (Operating System)等系統(tǒng)軟件、應(yīng)用軟件等。例如,在更新OS時(shí),多核處理器系統(tǒng)100通過(guò)I / F108接收新的OS,并將保存在快閃R0M104中的舊的OS更新為接收到的新OS??扉WROM控制器105按照CPUslOl的控制來(lái)控制針對(duì)快閃R0M106的數(shù)據(jù)的讀/寫(xiě)??扉WR0M106存儲(chǔ)在快閃ROM控制器105的控制下寫(xiě)入的數(shù)據(jù)。作為數(shù)據(jù)的具體例,有使用多核處理器系統(tǒng)100的用戶通過(guò)I / F108而取得的圖像數(shù)據(jù)、影像數(shù)據(jù)等??扉WR0M106例如能夠采用存儲(chǔ)卡、SD卡等。顯示器107顯示以光標(biāo)、圖標(biāo)或者工具箱為代表的文檔、圖像、功能信息等數(shù)據(jù)。該顯示器107例如能夠采用TFT液晶顯示器等。I / F108 通過(guò)通信線路與 LAN(Local Area Network)、WAN(WideArea Network)、互聯(lián)網(wǎng)等網(wǎng)絡(luò)111連接,經(jīng)由網(wǎng)絡(luò)111與其他裝置連接。而且,I / F108管理網(wǎng)絡(luò)111與內(nèi)部的接口,控制來(lái)自外部裝置的數(shù)據(jù)的輸入輸出。I / F108能夠采用例如調(diào)制解調(diào)器、LAN適配器等。鍵盤(pán)109具備用于輸入數(shù)字、各種指示等的鍵,進(jìn)行數(shù)據(jù)的輸入。另外,鍵盤(pán)109可以是觸摸面板式的輸入板、數(shù)字鍵等。圖2是表示對(duì)CPUslOl應(yīng)用使用了專用同步線路的寄存器同步控制裝置的狀態(tài)的功能框圖。圖2中所示的硬件為CPUslOl所包含的CPU # O、CPU # K RAM103以及作為高速緩存一致性機(jī)構(gòu)的一種的監(jiān)測(cè)機(jī)構(gòu)201。另外,在CPU # O、CPU # I的內(nèi)部存在CPU內(nèi)運(yùn)算單元202、CPU內(nèi)寄存器組203和高速緩存204。以下,在為了表示與CPU # 0、CPU # I分別對(duì)應(yīng)而對(duì)各硬件、軟件標(biāo)注了接尾標(biāo)記亦即“# 0,,、“# I”的情況下,表示是各自的CPU的內(nèi)部所存在的硬件、由各自的CPU執(zhí)行中的軟件。另外在CPU # O、CPU # I的內(nèi)部還存在作為本實(shí)施方式中的特征的、寄存器同步控制裝置205和通信部206。而且,CPU內(nèi)運(yùn)算單元202能夠訪問(wèn)CPU內(nèi)寄存器組203。另夕卜,CPU內(nèi)運(yùn)算單元202與寄存器同步控制裝置205通過(guò)地址總線207連接,通信部206
#O、通信部206 # I通過(guò)專用線路208連接。監(jiān)測(cè)機(jī)構(gòu)201是獲取CPU # OXPU # I所訪問(wèn)的高速緩存204 # O、高速緩存204
#I的匹配性的裝置。監(jiān)測(cè)機(jī)構(gòu)201管理高速緩存為自身的高速緩存和其他CPU的高速緩存的更新?tīng)顟B(tài),與其他高速緩存交換更新?tīng)顟B(tài)的信息。通過(guò)交換更新?tīng)顟B(tài)的信息,監(jiān)測(cè)機(jī)構(gòu)201判斷在哪個(gè)高速緩存中存在最新的數(shù)據(jù)。另外,監(jiān)測(cè)機(jī)構(gòu)201變更自身的高速緩存的狀態(tài)、或進(jìn)行高速緩存的無(wú)效化,以使得各高速緩存能夠獲得最新的數(shù)據(jù)。CPU內(nèi)運(yùn)算單元202是進(jìn)行整數(shù)運(yùn)算操作、邏輯運(yùn)算、位移操作等的運(yùn)算單元。CPU內(nèi)運(yùn)算單元202利用CPU內(nèi)寄存器組203按照從RAM103等讀入的指令代碼來(lái)進(jìn)行運(yùn)算。CPU內(nèi)寄存器組203是CPU內(nèi)運(yùn)算單元202進(jìn)行運(yùn)算所使用的存儲(chǔ)裝置。CPU內(nèi)寄存器組203根據(jù)用途而存在幾個(gè)種類。例如存在累加器、地址寄存器、通用寄存器、程序計(jì)數(shù)器、狀態(tài)寄存器等。累加器是存儲(chǔ)運(yùn)算結(jié)果等、暫時(shí)存儲(chǔ)數(shù)據(jù)的寄存器。地址寄存器是在訪問(wèn)存儲(chǔ)器的情況下的指定地址時(shí)所使用的寄存器。通用寄存器是不帶有特定的目的而根據(jù)指令來(lái)實(shí)現(xiàn)各種功能的寄存器,特別是具有累加器和地址寄存器的功能。程序計(jì)數(shù)器是指示保存有接下來(lái)要執(zhí)行的指令的主存儲(chǔ)器上的地址的寄存器。狀態(tài)寄存器是保持根據(jù)運(yùn)算結(jié)果而產(chǎn)生的位數(shù)溢出、累加器為O的狀態(tài)、或者各種處理器的狀態(tài)的寄存器。此外,除了累加器、地址寄存器、通用寄存器、程序計(jì)數(shù)器、狀態(tài)寄存器以外,根據(jù)CPU的規(guī)格還存在專用寄存器。例如,存在處理浮動(dòng)小數(shù)點(diǎn)的浮動(dòng)小數(shù)點(diǎn)寄存器。例如,CPU內(nèi)運(yùn)算單元202從RAM103取出用機(jī)器語(yǔ)言寫(xiě)的指令數(shù)據(jù)。這里,假定當(dāng)指令數(shù)據(jù)以助記符表現(xiàn)時(shí)書(shū)寫(xiě)為“Store GrlAcc #”。“Grl”指通用寄存器,“Acc # ”指累加器。取出后,CPU內(nèi)運(yùn)算單元202執(zhí)行指令數(shù)據(jù)。在前述的例子中,CPU內(nèi)運(yùn)算單元202將累加器的值保存在通用寄存器“Grl”中。由于CPU # OXPU # I能夠高速地訪問(wèn)RAM103的數(shù)據(jù),所以高速緩存204是復(fù)制了 RAM103的數(shù)據(jù)的一部分的存儲(chǔ)區(qū)域。
寄存器同步控制裝置205是控制CPU內(nèi)寄存器組203 # O與CPU內(nèi)寄存器組203
#I的同步的裝置。例如,寄存器同步控制裝置205 # O、寄存器同步控制裝置205 # I將通用寄存器之一的Grl寄存器在CPU # O與CPU # I中取得同步。通信部206與寄存器同步控制裝置205連接,進(jìn)行與其他寄存器同步控制裝置205的通信。具體而言,通信部206 # O將寄存器同步控制裝置205 # O取得的CPU # O的寄存器的值通過(guò)專用線路208轉(zhuǎn)發(fā)至寄存器同步控制裝置205 # I。接收到寄存器的值的通信部206 # I將寄存器的值通知給寄存器同步控制裝置205 # I。圖3是表示對(duì)CPUslOl應(yīng)用了使用監(jiān)測(cè)機(jī)構(gòu)201的寄存器同步控制裝置的狀態(tài)的功能框圖。圖2中,通信部206 # O和通信部206 # I通過(guò)專用線路208進(jìn)行通信,但在圖3中,使用高速緩存204和監(jiān)測(cè)機(jī)構(gòu)201來(lái)轉(zhuǎn)發(fā)寄存器的值等。具體而言,設(shè)計(jì)者在設(shè)計(jì)多核處理器系統(tǒng)100時(shí),將用于寄存器同步的保護(hù)區(qū)域301確保在高速緩存204中。保護(hù)區(qū)域301是高速緩存204的區(qū)域之中的、與由被分配給(PU的線程等使用、數(shù)據(jù)被更換的區(qū)域不同的區(qū)域,是被保護(hù)為數(shù)據(jù)不被消除的區(qū)域。首先,通信部206 # O對(duì)保護(hù)區(qū)域301 # O寫(xiě)入寄存器的值。檢測(cè)出對(duì)保護(hù)區(qū)域301 # O進(jìn)行了寫(xiě)入的監(jiān)測(cè)機(jī)構(gòu)201將保護(hù)區(qū)域301# O的內(nèi)容復(fù)制到保護(hù)區(qū)域301# I。復(fù)制后,通信部206 # I將寫(xiě)入保護(hù)區(qū)域301 # I的寄存器的值通知給寄存器同步控制裝置205 # I。圖4是表示產(chǎn)生同步事件的狀態(tài)的說(shuō)明圖。圖4中,通過(guò)執(zhí)行來(lái)自匯編源程序401的執(zhí)行對(duì)象402,從而示出了產(chǎn)生同步事件的狀態(tài)。另外,附圖標(biāo)記403所示的說(shuō)明圖表示執(zhí)行對(duì)象在單核中動(dòng)作的情況,附圖標(biāo)記404所示的說(shuō)明圖表示執(zhí)行對(duì)象在多核中動(dòng)作的情況。設(shè)計(jì)時(shí),匯編器讀入?yún)R編源程序401,生成一對(duì)一地變換而得的執(zhí)行對(duì)象402。在圖4的例子中,作為執(zhí)行對(duì)象402,匯編器生成程序塊405和程序塊406。此外,匯編源程序401記載了與C / C++源程序1301相同的內(nèi)容的“A = A+ I ;func (A); ”這樣的2個(gè)宣言。另外,匯編源程序401用最小的指令數(shù)執(zhí)行前述的2個(gè)宣言,因此所期望的同步控制代碼未被插入。作為各程序塊的處理內(nèi)容,程序塊405記載了將累加器的值保存在寄存器Grl中,并移至存在func ()的0x02FF0000地址這樣的指令。程序塊406記載了將寄存器Grl的內(nèi)容重新讀到累加器這一指令。在CPU執(zhí)行程序塊405、程序塊406時(shí),CPU生成線程,在線程上執(zhí)行各程序塊。在附圖標(biāo)記403所示的說(shuō)明圖中,假設(shè)了單核執(zhí)行基于程序塊405的線程和基于程序塊406的線程的情況。此時(shí),由于程序塊405的寄存器Grl與程序塊406的寄存器Grl相同,因此正常進(jìn)行動(dòng)作。在附圖標(biāo)記404所示的說(shuō)明圖中,假設(shè)了 CPUslOl中的CPU # M執(zhí)行基于程序塊405的線程,作為與CPU # M不同的CPU的CPU # N執(zhí)行程序塊406這樣的在多核中動(dòng)作的情況。此外,M與N是O以上的整數(shù)。此時(shí),由于程序塊405的寄存器Grl為CPU # M的寄存器Grl,程序塊406的寄存器Grl為CPU # N的寄存器Grl,所以不是正常地動(dòng)作。由于只要是值相等就正常地進(jìn)行動(dòng)作,因此例如,通過(guò)使CPU # M的寄存器Grl與CPU# N的寄存器Grl取得同步,能夠在多核中使程序塊405、程序塊406正常進(jìn)行動(dòng)作。具體而言,通過(guò)用CPU # M的寄存器Grl的值改寫(xiě)CPU # N的寄存器Grl,能夠取得同步。
以下,在產(chǎn)生了為了正常進(jìn)行動(dòng)作而取得2個(gè)CPU間的寄存器的同步的契機(jī)的情況下,設(shè)為產(chǎn)生了同步事件。另外,將成為寄存器的同步源的CPU# M作為同步源CPU,將成為寄存器的同步目標(biāo)的CPU# N作為同步目標(biāo)CPU。并且,在圖4的例中,將成為同步源的線程作為同步源線程,將成為同步目標(biāo)的線程作為同步目標(biāo)線程。在圖4的例中,基于程序塊405的線程為同步源線程,基于程序塊406的線程為同步目標(biāo)線程。此外,在線程從同步源CPU移至同步目標(biāo)CPU的情況下,同步源線程與同步目標(biāo)線程為相同的線程。另外,在同步目標(biāo)線程為從同步源線程分支的線程的情況下,同步源線程與同步目標(biāo)線程為不同的線程。(多核處理器系統(tǒng)100的功能)接下來(lái),對(duì)多核處理器系統(tǒng)100的功能進(jìn)行說(shuō)明。圖5是表示多核處理器系統(tǒng)100的功能的功能框圖。多核處理器系統(tǒng)100包括檢測(cè)部502、確定部503、生成部504、同步控制部505、設(shè)定部506、取得部507、讀入部508、寫(xiě)入部509、發(fā)送部510以及接收部511。在成為該控制部的功能中,檢測(cè)部502 生成部504、設(shè)定部506通過(guò)CPUslOl執(zhí)行存儲(chǔ)在存儲(chǔ)裝置中的程序來(lái)實(shí)現(xiàn)其功能。存儲(chǔ)裝置是指,具體而言,例如,圖1所示的R0M102、RAM103、快閃 R0M104、快閃 R0M106 等。另外,同步控制部505、取得部507、讀入部508、寫(xiě)入部509、發(fā)送部510、接收部511通過(guò)圖2所示的寄存器同步控制裝置205來(lái)實(shí)現(xiàn)其功能。另外,圖5中,假設(shè)CPU # O作為控制多核處理器系統(tǒng)100的主CPU,另外CPU # M和CPU # NS寄存器間的同步控制對(duì)象的CPU。另外,還可以是CPU # O為主CPU且為寄存器間的同步控制對(duì)象的CPU。例如,在CPU # O為主CPU,并成為寄存器間的同步控制對(duì)象的同步目標(biāo)CPU的情況下,作為CPU # O的功能,可以包括設(shè)定部506。另外,多核處理器系統(tǒng)100能夠訪問(wèn)確定線程組的各線程與和線程建立了對(duì)應(yīng)的寄存器的組合的寄存器依存表501。對(duì)于成為線程的執(zhí)行對(duì)象的執(zhí)行對(duì)象,在將執(zhí)行對(duì)象分割成能夠并行執(zhí)行的程序塊時(shí),寄存器依存表501存儲(chǔ)程序塊間的信息與在程序塊間繼承值的寄存器。寄存器依存表501的詳細(xì)使用圖10后述。另外,寄存器依存表501中的與線程建立了對(duì)應(yīng)的寄存器也可以不確定多核處理器的任何核。具體而言,寄存器依存表501中保存有作為與線程對(duì)應(yīng)的執(zhí)行對(duì)象的一部分的2個(gè)程序塊的信息、和寄存器名。關(guān)于寄存器名,為CPUslOl的全部的CPU所具有的寄存器名,不通過(guò)寄存器名來(lái)確定CPUslOl中的哪一個(gè)CPU。另外,寄存器依存表501還可以不指定寄存器以外的其他存儲(chǔ)區(qū)域。具體而言,寄存器依存表501保存寄存器名,不指定成為其他存儲(chǔ)區(qū)域的高速緩存204、RAM103、快閃R0M104 等。檢測(cè)部502具有通過(guò)多核處理器中的特定的核,檢測(cè)出在多核處理器內(nèi)將由同步源核執(zhí)行中的線程移至同步目標(biāo)核這一情況的功能。例如,檢測(cè)部502通過(guò)CPUslOl中的CPU # 0,檢測(cè)出將由CPU # M執(zhí)行中的線程移至CPU # N這一情況。另外,檢測(cè)部502還可以檢測(cè)在同步目標(biāo)核中生成從由同步源核執(zhí)行中的第I線程分支的第2線程這一情況。例如,檢測(cè)部502檢測(cè)在CPU # N中生成從由CPU # M執(zhí)行中的第I線程分支的第2線程這一情況。此外,表示已檢測(cè)出的信息被存儲(chǔ)在CPU內(nèi)寄存器組203 # O、高速緩存204 # 0.RAM103等存儲(chǔ)區(qū)域中。
確定部503具有通過(guò)特定的核,參照寄存器依存表501,確定由檢測(cè)部502檢測(cè)出轉(zhuǎn)移的線程所對(duì)應(yīng)的特定的寄存器。另外,確定部503還可以確定由CPU # M執(zhí)行中的第I線程、以及從第I線程分支并由CPU # N執(zhí)行的第2線程所對(duì)應(yīng)的特定的寄存器。具體而言,確定部503通過(guò)CPU # 0,基于寄存器依存表501的記錄中的、CPU # M執(zhí)行的執(zhí)行對(duì)象的程序塊和CPU # N執(zhí)行的執(zhí)行對(duì)象的程序塊,確定相應(yīng)的記錄。在相應(yīng)的記錄被確定的情況下,確定部503將存儲(chǔ)在相應(yīng)的記錄中的寄存器名確定為特定的寄存器。此外,被確定出的寄存器的信息被存儲(chǔ)到CPU內(nèi)寄存器組203 # O、高速緩存204 # O、RAM103等存儲(chǔ)區(qū)域中。生成部504具有通過(guò)特定的核,生成用于確定由確定部503確定出的特定的寄存器以及同步目標(biāo)核的同步控制信息的功能。例如,假設(shè)由確定部503確定了 Grl寄存器。此時(shí),生成部504通過(guò)CPU # 0,生成用于確定Grl寄存器以及CPU # N的同步控制信息。作為用于確定特定的寄存器以及同步目標(biāo)核的方法,例如,同步控制信息保存有特定的寄存器的名稱、或者ID(IDentification),并保存有同步目標(biāo)核的CPU編號(hào)。此外,生成的同步控制信息被存儲(chǔ)到RAM103等存儲(chǔ)區(qū)域,并通過(guò)在同步源CPU上進(jìn)行動(dòng)作的寄存器同步控制裝置205的驅(qū)動(dòng)器,被存儲(chǔ)到寄存器同步控制裝置205的存儲(chǔ)區(qū)域亦即同步控制寄存器。關(guān)于同步控制寄存器將通過(guò)圖6詳細(xì)后述。同步控制部505與多核處理器以能夠通信的方式連接,從特定的核取得由生成部504生成的同步控制信息,將根據(jù)同步控制信息獲得的特定的寄存器的值從同步源核的特定的寄存器讀入。接下來(lái),同步控制部505具有對(duì)同步目標(biāo)核的特定的寄存器寫(xiě)入從同步源核的特定的寄存器讀入的值的功能。例如,同步控制部505從CPU # O取得同步控制信息,從CPU #內(nèi)寄存器組203 # M中的寄存器Grl讀入寄存器Grl的值。接下來(lái),同步控制部505對(duì)CPU # N的CPU內(nèi)寄存器組203 # N的寄存器Grl寫(xiě)入從CPU # M的寄存器Grl讀入的值。另外,在寫(xiě)入了從同步源核的特定的寄存器讀入的值的情況下,同步控制部505可以向同步目標(biāo)核通知檢測(cè)出的線程成為能夠執(zhí)行的信息。在同步目標(biāo)核中檢測(cè)出的線程能夠執(zhí)行的信息例如為中斷信號(hào),同步控制部505將中斷信號(hào)通知給同步目標(biāo)核。具體而言,在對(duì)CPU # N的CPU內(nèi)寄存器組203 # N中的寄存器Grl寫(xiě)入了從CPU # M的寄存器Grl讀入的值的情況下,同步控制部505向CPU # N通知中斷信號(hào)。設(shè)定部506具有通過(guò)同步目標(biāo)的核,將檢測(cè)出的線程設(shè)定為能夠由同步目標(biāo)核執(zhí)行的狀態(tài)的功能。另外,在接收到從同步控制部505檢測(cè)出的線程能夠執(zhí)行的信息的情況下,設(shè)定部506可以將檢測(cè)出的線程設(shè)定成能夠由同步目標(biāo)核執(zhí)行的狀態(tài)。例如,設(shè)定部506通過(guò)CPU# N轉(zhuǎn)移檢測(cè)出的線程,并設(shè)定成能夠執(zhí)行的狀態(tài)。另外,在從由同步源核執(zhí)行中的第I線程分支的第2線程被生成到同步目標(biāo)核的情況下,CPU # N在RAM103中確保第2線程訪問(wèn)的區(qū)域,例如線程上下文,并設(shè)定為第2線程能夠執(zhí)行的狀態(tài)。取得部507具有在通過(guò)生成部504生成了用于確定特定的寄存器以及同步目標(biāo)核的同步控制信息的情況下,從特定的核取得同步控制信息的功能。具體而言,取得部507取得Grl寄存器以及CPU # N的CPU編號(hào)的同步控制信息。此外,所取得的信息被保存在寄存器同步控制裝置205 # M的存儲(chǔ)區(qū)域中。讀入部508具有從同步源核的特定的寄存器讀入根據(jù)通過(guò)取得部507取得的同步控制信息獲得的特定的寄存器的值的功能。具體而言,讀入部508從CPU # M的CPU內(nèi)寄存器組203 # M中的寄存器Grl讀入寄存器Grl的值。此外,所讀入的值被保存到寄存器同步控制裝置205 # M的存儲(chǔ)區(qū)域。寫(xiě)入部509將通過(guò)讀入部508從同步源核的特定的寄存器讀入的值寫(xiě)入同步目標(biāo)核的特定的寄存器。具體而言,寫(xiě)入部509將從CPU # M的寄存器Grl讀入的值寫(xiě)入CPU
#N的CPU內(nèi)寄存器組203 # N中的寄存器Grl。發(fā)送部510具有將特定的寄存器以及通過(guò)讀入部508讀入的特定的寄存器的值發(fā)送至同步目標(biāo)核的功能。具體而言,發(fā)送部510將寄存器Grl以及寄存器Grl的值發(fā)送至寄存器同步控制裝置205 # N。接收部511具有通過(guò)其他同步控制裝置接收特定的寄存器以及特定的寄存器的值的功能。具體而言,接收部511通過(guò)寄存器同步控制裝置205 # M接收寄存器Grl以及寄存器Grl的值。此外,接收到的寄存器和寄存器的值被保存在寄存器同步控制裝置205
#N的存儲(chǔ)區(qū)域中。圖6是表示同步事件未產(chǎn)生時(shí)的寄存器同步控制裝置205的概要的說(shuō)明圖。圖6中使用CPU # O的內(nèi)部進(jìn)行說(shuō)明。CPU # O以外的CPU的內(nèi)部也與圖6所示的CPU # O的內(nèi)部等同。圖6所示的硬件是CPU內(nèi)運(yùn)算單元202 # O、CPU內(nèi)外部I / 0601 # O、中斷控制器602 # O、CPU內(nèi)寄存器組203 # O以及寄存器同步控制裝置205 # O。CPU內(nèi)外部
I/ 0601 # O與寄存器同步控制裝置205 # O通過(guò)地址總線207 # O連接。另外,地址總線207 # O與高速緩存204 # O、總線110連接,并通過(guò)總線110與RAM103、顯示器107等外圍設(shè)備的寄存器連接。另外,在寄存器同步控制裝置205 # O中包含同步控制寄存器603 # O、寄存器讀取器604 # O、寄存器寫(xiě)入器605 # O、接收FIF0606 # O、發(fā)送FIF0607 # O以及中斷控制器608 # O。同步控制寄存器603 # O與地址總線207 # O連接,接收FIF0606 # O和發(fā)送FIF0607 # O與通信部206 # O連接。中斷控制器608 # O與中斷控制器602 # O連接。這里,多核處理器系統(tǒng)100采取在RAM103的地址空間中共存輸入輸出設(shè)備的地址空間的存儲(chǔ)器映射I / O的方式。這里,假定高速緩存204的地址區(qū)域?yàn)?2 [千字節(jié)],即為0x00008000 OxOOOOFFFF, RAM103的地址區(qū)域?yàn)?2[兆字節(jié)],即為0x02000000 0x03FFFFFF的狀態(tài)。另外,0x00010000 OxOlFFFFFF為未分配區(qū)域。例如,設(shè)計(jì)者將同步控制寄存器603 # O的地址區(qū)域設(shè)定為未分配區(qū)域中的0x00020000 0x00020003。由此,CPU內(nèi)運(yùn)算單元202能夠通過(guò)地址指定來(lái)訪問(wèn)同步控制寄存器603 # O。此外,即使多核處理器系統(tǒng)100為在RAM103的地址空間中未共存輸入輸出設(shè)備的地址空間的端口映射I / 0,各CPU也能夠通過(guò)對(duì)輸入輸出設(shè)備的地址空間進(jìn)行訪問(wèn),來(lái)訪問(wèn)同步控制寄存器603 # O。CPU內(nèi)外部I / 0601 # O是CPU內(nèi)運(yùn)算單元202 # O向地址總線207 # O輸入輸出用的端口。例如,在訪問(wèn)RAM103、同步控制寄存器603 # O時(shí),CPU內(nèi)運(yùn)算單元202 # O經(jīng)由CPU內(nèi)外部I / 0601 # O進(jìn)行訪問(wèn)。中斷控制器602 # O受理中斷信號(hào),將中斷編號(hào)通知給CPU內(nèi)運(yùn)算單元202 # O。在圖6的例子中,中斷控制器602 # O受理來(lái)自中斷控制器608 # O的中斷信號(hào)的輸入,但也受理其他中斷信號(hào),例如,受理來(lái)自鍵盤(pán)109的中斷信號(hào),將中斷編號(hào)通知給CPU內(nèi)運(yùn)算單元202 # O。中斷控制器602 # O具有多個(gè)中斷輸入端子,并按每一個(gè)端子設(shè)定有中斷編號(hào)。例如,中斷控制器602 # O的某一端子受理來(lái)自中斷控制器608 # O的中斷信號(hào),而其它端子受理來(lái)自鍵盤(pán)109的中斷信號(hào)。另外,中斷控制器602 # O具有在受理了多個(gè)中斷信號(hào)的情況下,按照中斷信號(hào)中設(shè)定的優(yōu)先順序來(lái)通知中斷編號(hào)的功能。同步控制寄存器603 # O是設(shè)定包含成為同步對(duì)象的寄存器的信息和同步目標(biāo)的CPU的信息的同步控制信息的寄存器。同步控制寄存器603 # O與各CPU的通用寄存器、浮動(dòng)小數(shù)點(diǎn)寄存器等累加器不同,是能夠視為經(jīng)由地址總線的一種外圍設(shè)備的寄存器。同步控制寄存器603 # O實(shí)現(xiàn)了由用戶程序使用的寄存器組,例如,累加器、通用寄存器、浮動(dòng)小數(shù)點(diǎn)寄存器的一致性。具體而言,同步控制寄存器603在同步對(duì)象寄存器名中存儲(chǔ)執(zhí)行一致性的寄存器的名稱。同步控制寄存器603中設(shè)定的同步控制信息的詳細(xì)將使用圖7后述。寄存器讀取器604 # O根據(jù)被寫(xiě)入同步控制寄存器603 # O的同步對(duì)象寄存器名的寄存器名,讀入CPU內(nèi)寄存器組203 # O中與同步對(duì)象寄存器名對(duì)應(yīng)的寄存器的值。例如,在同步對(duì)象寄存器名中存儲(chǔ)有“Grl”的情況下,寄存器讀取器604 # O讀入CPU內(nèi)寄存器組203 # O的Grl寄存器的值。寄存器寫(xiě)入器605 # O從接收FIF0606 # O接收寄存器名和值,對(duì)從CPU內(nèi)寄存器組203 # O接收到的寄存器名所對(duì)應(yīng)的寄存器寫(xiě)入接受到的值。例如,在從接收FIF0606
#O接收到“Grll”這樣的數(shù)據(jù)的情況下,寄存器寫(xiě)入器605 # O對(duì)CPU內(nèi)寄存器組203 # O的Grl寄存器寫(xiě)入“I”。接收FIF0606 # O保存從通信部206 # O發(fā)送來(lái)的寄存器名和值。另外,接收FIF0606 # O為了實(shí)現(xiàn)屏障同步,在寄存器寫(xiě)入器605 # O完成寄存器的寫(xiě)入后,作為CPU控制而將中斷信號(hào)通知給中斷控制器608。發(fā)送FIF0607 # O保存從寄存器讀取器604 # O發(fā)送來(lái)的同步目標(biāo)CPU的信息、寄存器名和寄存器的值。另外,發(fā)送FIF0607 # O向通信部206 # O發(fā)送同步目標(biāo)CPU的信息、寄存器名和寄存器的值。另外,發(fā)送FIF0607 # O在發(fā)送寄存器名和寄存器的值時(shí),發(fā)送成為同步信號(hào)的中斷信號(hào)。中斷控制器608 # O受理來(lái)自發(fā)送FIF0607 # O以外的其他發(fā)送FIF0607的中斷信號(hào),將中斷編號(hào)通知給中斷控制器602 # O。發(fā)送FIF0607 # O以外的其他發(fā)送FIF0607例如是指發(fā)送FIF0607 # I。另外,中斷控制器608 # O還從接收FIF0606 # O受理中斷信號(hào),并將中斷編號(hào)通知給中斷控制器602 # O。此外,中斷控制器608 # O與其他中斷控制器608不經(jīng)由通信部206而被直接結(jié)線。此外,作為圖5所示的寄存器同步控制裝置205的功能部與圖6所示的各部的對(duì)應(yīng),取得部507對(duì)應(yīng)同步控制寄存器603,讀入部508對(duì)應(yīng)寄存器讀取器604,寫(xiě)入部509對(duì)應(yīng)寄存器寫(xiě)入器605。另外,發(fā)送部510對(duì)應(yīng)發(fā)送FIF0607,接收部511對(duì)應(yīng)接收FIF0606。在圖6的例子中,是未產(chǎn)生同步事件的狀態(tài),CPU內(nèi)運(yùn)算單元202根據(jù)從RAM103取出的指令,進(jìn)行CPU內(nèi)寄存器組203 # O的讀、寫(xiě)。圖7是表示同步控制寄存器603的存儲(chǔ)內(nèi)容的一個(gè)例子的說(shuō)明圖。同步控制寄存器603以32 [位]的區(qū)域具有同步標(biāo)志、同步對(duì)象寄存器名、同步目標(biāo)CPU編號(hào)這樣的3個(gè)字段。同步控制信息雖然為同步對(duì)象寄存器名、同步目標(biāo)CPU編號(hào),但還可以包括同步標(biāo)志。同步標(biāo)志字段以I[位]的區(qū)域儲(chǔ)存表示寄存器的同步處理是否在執(zhí)行中的標(biāo)志。以下,對(duì)在同步標(biāo)志為I的情況下,使同步處理為執(zhí)行中的情況進(jìn)行說(shuō)明。同步對(duì)象寄存器名字段以8[位]的區(qū)域,保存進(jìn)行同步的寄存器編號(hào)。同步目標(biāo)CPU編號(hào)字段以8[位]的區(qū)域,保存進(jìn)行同步的CPU編號(hào)。此外,同步對(duì)象寄存器名字段和同步目標(biāo)CPU編號(hào)字段的區(qū)域?yàn)?[位],能夠處理256種類的寄存器、CPU編號(hào)。另外,即使在CPU數(shù)多于256的情況下,也能夠通過(guò)使用預(yù)備的15 [位]來(lái)進(jìn)行應(yīng)對(duì)。另外,關(guān)于同步目標(biāo)CPU編號(hào)字段,通常保存有作為單播進(jìn)行同步的CPU編號(hào),但在存在向多個(gè)CPU發(fā)送相同寄存器的值的可能性的情況下,還可以設(shè)定向多個(gè)CPU發(fā)送的模式。例如,在同步目標(biāo)CPU編號(hào)字段中保存有OxFF的情況下,可以按照發(fā)送FIF0607將寄存器的值向除了自身的CPU以外的全部的CPU進(jìn)行廣播的方式設(shè)定同步目標(biāo)CPU編號(hào)字段。具體而言,在同步標(biāo)志中保存1,在同步對(duì)象寄存器名字段中保存Grl寄存器的寄存器編號(hào),在同步目標(biāo)CPU編號(hào)字段中保存CPU # I的CPU編號(hào)。圖8是表示同步事件產(chǎn)生時(shí)的同步源CPU的寄存器同步控制裝置205的概要的說(shuō)明圖。當(dāng)同步事件產(chǎn)生時(shí),作為同步源CPU的CPU # M通過(guò)在CPU # Mi執(zhí)行的驅(qū)動(dòng)器801 # M,對(duì)同步控制寄存器603 # M設(shè)定同步控制信息。此外,同步控制信息由主CPU、例如CPU # O輸出。在設(shè)定后,寄存器讀取器604 # M根據(jù)同步控制信息,從CPU內(nèi)寄存器組203 # M讀入寄存器的值,對(duì)發(fā)送FIF0607 # M的緩沖器寫(xiě)入同步目標(biāo)CPU的編號(hào)、寄存器名和寄存器的值。在寫(xiě)入后,發(fā)送FIF0607 # 成為同步信號(hào)的中斷信號(hào)發(fā)送至同步目標(biāo)CPU的寄存器同步控制裝置205的中斷控制器608。發(fā)送FIF0607 # M與中斷信號(hào)相對(duì)應(yīng)地將寄存器名和寄存器的值發(fā)送至同步目標(biāo)CPU的寄存器同步控制裝置205的接收FIF0606。在發(fā)送后,發(fā)送FIF0607 # M將同步標(biāo)志改寫(xiě)為O。此外,在CPU # M將同步控制信息設(shè)定在同步控制寄存器603 # M的情況下,也可以在同步事件的產(chǎn)生時(shí)不設(shè)定同步控制信息的全部?jī)?nèi)容而事先設(shè)定一部分的信息。例如,如果是通過(guò)匯編器等被預(yù)先分配了同步目標(biāo)CPU的靜態(tài)調(diào)度的情況,則CPU # M可以在同步事件的產(chǎn)生前設(shè)定同步對(duì)象寄存器名、同步目標(biāo)CPU編號(hào)。并且,CPU# M還可以在同步事件的產(chǎn)生時(shí)設(shè)定同步標(biāo)志。此外,如果是通過(guò)調(diào)度器決定了同步目標(biāo)CPU的動(dòng)態(tài)調(diào)度,則CPU # M在同步事件的產(chǎn)生時(shí),設(shè)定同步對(duì)象寄存器名、同步目標(biāo)CPU編號(hào)、同步標(biāo)志。圖9是表示同步事件產(chǎn)生時(shí)的同步目標(biāo)CPU的寄存器同步控制裝置205的概要的說(shuō)明圖。成為同步目標(biāo)CPU的CPU # N的中斷控制器608 # N若接收到中斷信號(hào),則向中斷控制器602 # N通知中斷編號(hào)。另外,經(jīng)由中斷控制器602 # N被通知了中斷編號(hào)的CPU內(nèi)運(yùn)算單元202 # N生成同步目標(biāo)線程,抑制向CPU內(nèi)寄存器組203 # N的I / O。在中斷控制器608 # N接收到中斷信號(hào)后,接收FIF0606 # N取得寄存器名和寄存器的值。在取得后,寄存器寫(xiě)入器605 # N將所取得的寄存器的值寫(xiě)入CPU內(nèi)寄存器組203 # N。在寫(xiě)入結(jié)束后,接收FIF0606 # N將中斷信號(hào)通知給中斷控制器608 # N作為寫(xiě)入結(jié)束通知。中斷控制器608 # N若接收到中斷信號(hào),則向中斷控制器602 # N通知中斷編號(hào)。
此時(shí),優(yōu)選來(lái)自寄存器同步控制裝置205 # M的中斷信號(hào)的中斷編號(hào)與來(lái)自接收FIF0606 # N的中斷信號(hào)的中斷編號(hào)不同。由于中斷編號(hào)不同,從中斷控制器602 # N接收到中斷編號(hào)的CPU內(nèi)運(yùn)算單元202 # N、由CPU # N執(zhí)行中的OS能夠判定是基于哪種要因的中斷編號(hào)。圖10是表示多核處理器系統(tǒng)100的設(shè)計(jì)時(shí)的概要的說(shuō)明圖。匯編器讀入?yún)R編源程序401,生成一對(duì)一變換而得的執(zhí)行對(duì)象402。并且,匯編器進(jìn)行匯編源程序401的構(gòu)造解析,生成寄存器依存表501。此外,也存在在C / C++源程序中混入有一部分匯編源程序的情況。該情況下,多核處理器系統(tǒng)100也作為匯編源程序來(lái)處理。作為具體的構(gòu)造解析,構(gòu)造解析程序讀入?yún)R編源程序,提取以跳轉(zhuǎn)、條件分支為節(jié)點(diǎn)的程序塊構(gòu)造。并且,構(gòu)造解析程序提取最終進(jìn)行了讀寫(xiě)的寄存器、存儲(chǔ)器上的地址空間作為各程序塊的輸入輸出數(shù)據(jù)。接下來(lái),構(gòu)造解析程序使用輸入輸出數(shù)據(jù),作為程序塊間的輸入輸出值將并非地址空間而是寄存器所使用的分支定義為具有寄存器依存關(guān)系的程序塊。構(gòu)造解析程序?qū)⒋嬖诩拇嫫饕来骊P(guān)系的2個(gè)程序塊、和被設(shè)為有依存關(guān)系的寄存器作為I個(gè)記錄輸出至寄存器依存表501。寄存器依存表501是記載了在程序塊間具有依存關(guān)系的寄存器名的彳目息。具體而言,寄存器依存表501具有同步源程序塊名、同步目標(biāo)程序塊名、依存寄存器名這3個(gè)字段。同步源程序塊名字段保存有成為同步源線程的程序塊的信息,同步目標(biāo)程序塊名字段保存有成為同步目標(biāo)線程的程序塊的信息。若使用圖4的例子,同步源程序塊名字段與同步目標(biāo)程序塊名字段例如保存有程序塊405、程序塊406的名稱。此外,還可以代替程序塊的名稱而存儲(chǔ)有程序塊的前端地址和末尾地址。依存寄存器名字段保存有在同步源程序塊名字段和同步目標(biāo)程序塊名字段保存的程序塊間存在依存關(guān)系的寄存器名。當(dāng)使用圖4的例子時(shí),依存寄存器名字段保存有“Grl”這樣的字符串。圖11是表示調(diào)度處理的流程圖。關(guān)于圖11、圖12所示的流程圖,假設(shè)了由作為主CPU的CPU # O進(jìn)行多核處理器系統(tǒng)100全體線程的調(diào)度,由CPU # M執(zhí)行同步源線程的情況。另夕卜,CPU # M與CPU # O可以為同一 CPU。CPU# O判斷事件的種類(步驟S1101)。在事件的種類為再調(diào)度的情況下(步驟SllOl:再調(diào)度),CPU # O判斷再調(diào)度對(duì)象的執(zhí)行對(duì)象是否是由匯編源程序記述(步驟S1102)。此外,作為判斷基準(zhǔn),CPU # O通過(guò)參照寄存器依存表501能夠進(jìn)行判斷。具體而言,在同步源線程的執(zhí)行對(duì)象存在于同步源程序塊名字段中、且再調(diào)度對(duì)象的執(zhí)行對(duì)象存在于同步目標(biāo)程序塊名字段中的情況下,CPU # O判斷為由匯編源程序記述。另外,作為再調(diào)度產(chǎn)生的要因,例如,是CPUslOl的負(fù)荷變得不平衡的情況。在負(fù)荷不平衡,對(duì)特定的CPU施加了負(fù)荷的情況下,通過(guò)將由負(fù)荷高的CPU執(zhí)行中的線程轉(zhuǎn)移到負(fù)荷低的CPU,能夠使負(fù)荷均等。在通過(guò)匯編源程序記述的情況下(步驟S1102:是),CPU#0將再調(diào)度后分配的CPU # N設(shè)定為同步目標(biāo)CPU (步驟S1103)。此外,在通過(guò)步驟S1102:是的分支時(shí),產(chǎn)生了取得2個(gè)CPU間的寄存器的同步的同步事件。在事件的種類為線程起動(dòng)的情況下(步驟SllOl:線程起動(dòng)),CPU # O判斷新線程的執(zhí)行對(duì)象是否通過(guò)匯編源程序記述(步驟S1104)。具體而言,在同步源線程的執(zhí)行對(duì)象存在于同步源程序塊名字段中、且新線程的執(zhí)行對(duì)象存在于同步目標(biāo)程序塊名字段中的情況下,CPU # O判斷為通過(guò)匯編源程序記述。
此外,在線程起動(dòng)產(chǎn)生的要因中,作為特別是特化為并行執(zhí)行的要因,例如是執(zhí)行對(duì)象的程序塊為反復(fù)處理的情況。具體而言,在特定的程序塊是進(jìn)行100次處理的程序塊的情況下,同步源線程執(zhí)行50次,另外作為新線程,同步目標(biāo)線程執(zhí)行剩余的50次。在通過(guò)匯編器而記述的情況下(步驟S1104 :是),CPU # O將分配新線程的CPU # N設(shè)定為同步目標(biāo)CPU (步驟S1105)。此外,在通過(guò)了步驟S1104 :是的分支時(shí),產(chǎn)生了取得2個(gè)CPU間的寄存器的同步的同步事件。在步驟S1103、或者步驟S1105的處理后,CPU # O根據(jù)同步對(duì)象寄存器名、同步目標(biāo)CPU編號(hào)和同步標(biāo)志生成同步控制信息(步驟S1106)。此外,CPU # O根據(jù)寄存器依存表501的、存在同步源程序塊名字段以及同步目標(biāo)程序塊名字段的記錄的依存寄存器名字段中保存的值取得同步對(duì)象寄存器名。在生成后,CPU # O對(duì)成為同步源CPU的寄存器同步控制裝置205 # M的同步控制寄存器603 # M輸出生成的同步控制信息(步驟S1107)。具體而言,CPU # O對(duì)在CPU # M上進(jìn)行動(dòng)作的驅(qū)動(dòng)器801 # M通知同步控制信息,通過(guò)驅(qū)動(dòng)器801 # M被執(zhí)行,對(duì)同步控制寄存器603設(shè)定同步控制信息。在對(duì)同步控制寄存器603 # M設(shè)定了同步控制信息后,CPU # O移至步驟SllOl的處理。在事件為再調(diào)度、線程起動(dòng)以外的情況下(步驟SllOl :其他),CPU# O執(zhí)行按照事件的通常的調(diào)度處理(步驟S1108)。另外,在未通過(guò)匯編器記述的情況下(步驟S1102 :否,步驟S1104:否),CPU # O執(zhí)行步驟S1108的處理。此外,作為再調(diào)度、線程起動(dòng)以外的事件,有線程的時(shí)間片期間屆滿的情況、或者線程結(jié)束的情況等。作為同步源CPU的CPU # M的寄存器同步控制裝置205 # M以通過(guò)步驟SI 107的處理而輸出的同步控制信息為基礎(chǔ),執(zhí)行寄存器同步控制處理(步驟S1109)。另外,成為同步目標(biāo)CPU的CPU # N的寄存器同步控制裝置205 # N還與寄存器同步控制裝置205 # M連動(dòng)地執(zhí)行寄存器同步控制處理。寄存器同步控制處理的詳細(xì)將使用圖12后述。圖12是表示寄存器同步控制處理的流程圖。寄存器同步控制裝置205 # M從同步控制寄存器603 # 11取得同步對(duì)象寄存器名、同步目標(biāo)CPU名(步驟S1201)。取得后,寄存器同步控制裝置205 # M通過(guò)寄存器讀取器604 # M從CPU內(nèi)寄存器組203 # M讀入同步對(duì)象寄存器名所對(duì)應(yīng)的寄存器的值(步驟S1202)。寄存器同步控制裝置205 # M通過(guò)發(fā)送FIF0607 # M向同步目標(biāo)CPU名所對(duì)應(yīng)的寄存器同步控制裝置205 # N發(fā)送中斷信號(hào)、同步對(duì)象寄存器名和值(步驟S1203)。在發(fā)送后,寄存器同步控制裝置205 # M將同步標(biāo)志設(shè)定為0,結(jié)束作為寄存器的同步源的寄存器同步控制處理。寄存器同步控制裝置205 # N通過(guò)中斷控制器608 # N受理中斷信號(hào)(步驟S1204)。接收到中斷信號(hào)的寄存器同步控制裝置205 # N通過(guò)中斷控制器608 # N將表示寄存器的值的接收的中斷編號(hào)通知給中斷控制器602 # N(步驟S1205)。在通知后,寄存器同步控制裝置205 # N通過(guò)接收FIF0606 # N接收同步對(duì)象寄存器名和值(步驟S1206)。在接收后,寄存器同步控制裝置205 # N通過(guò)寄存器寫(xiě)入器605 # N將接收到的寄存器的值從CPU內(nèi)寄存器組203 # N寫(xiě)入同步對(duì)象寄存器名所對(duì)應(yīng)的寄存器(步驟S1207)。在寫(xiě)入后,寄存器同步控制裝置205 # N通過(guò)中斷控制器608 # N,將表示寫(xiě)入結(jié)束的中斷編號(hào)通知給中斷控制器602 # N(步驟S1208)。在通知后,寄存器同步控制裝置205 # N結(jié)束作為寄存器的同步目標(biāo)的寄存器同步控制處理。通過(guò)步驟S1205的處理,接收到中斷編號(hào)的CPU # N生成并起動(dòng)新線程、或者啟動(dòng)再調(diào)度的線程(步驟S1209)。
此外,通過(guò)步驟S1207的處理,寄存器同步控制裝置205 # N訪問(wèn)CPU內(nèi)寄存器組203 # N,因此制止了由CPU # N對(duì)CPU內(nèi)寄存器組203 # N的訪問(wèn)。因此,在步驟S1209的處理結(jié)束的階段,新線程、或者再調(diào)度的線程無(wú)法進(jìn)行向CPU內(nèi)寄存器組203 # N的訪問(wèn),前述的線程未成為能夠執(zhí)行的狀態(tài)。通過(guò)步驟S1208的處理,接收到中斷編號(hào)的CPU # N開(kāi)始向CPU內(nèi)寄存器組203
#N的訪問(wèn)(步驟S1210)。由于CPU # N能夠進(jìn)行向CPU內(nèi)寄存器組203 # N的訪問(wèn),新線程、或者再調(diào)度的線程被設(shè)定為能夠執(zhí)行的狀態(tài)。如以上說(shuō)明的那樣,根據(jù)多核處理器系統(tǒng)、同步控制系統(tǒng)、同步控制裝置、信息生成方法以及信息生成程序,在將同步源核的線程轉(zhuǎn)移到同步目標(biāo)核的情況下,確定與線程建立了對(duì)應(yīng)的寄存器。接下來(lái),多核處理器系統(tǒng)將確定的寄存器的值從同步源核繼承到同步目標(biāo)核。由此,多核處理器系統(tǒng)不改變面向單核生成的匯編源程序就能夠通過(guò)多核進(jìn)行并行執(zhí)行,能夠確保匯編源程序的兼容性。另外,在寫(xiě)入了從同步源核的上述特定的寄存器讀入的值的情況下,多核處理器系統(tǒng)可以在向同步目標(biāo)核通知了檢測(cè)出的線程能夠執(zhí)行的信息后,將檢測(cè)出的線程設(shè)定為能夠執(zhí)行的狀態(tài)。由此,在同步目標(biāo)核的寄存器繼承了同步源核的寄存器的值,同步目標(biāo)核的線程成為能夠正常動(dòng)作的狀態(tài)之后,多核處理器系統(tǒng)能夠執(zhí)行線程。另外,對(duì)于多核處理器系統(tǒng)而言,確定與和線程建立了對(duì)應(yīng)的寄存器的組合的表中的寄存器也可以不確定多核處理器的任意核。在面向單核生成的源程序中,由于僅存在一個(gè)核,所以不存在是哪個(gè)CPU的哪個(gè)寄存器這樣的信息。因此,由于表中的寄存器不確定多核處理器的任意的核,所以多核處理器系統(tǒng)能夠判斷是從面向單核的源程序生成的執(zhí)行對(duì)象這一情況。另外,對(duì)于多核處理器系統(tǒng)而言,確定與和線程建立了對(duì)應(yīng)的寄存器的組合的表可以不指定寄存器以外的其他存儲(chǔ)區(qū)域?;贑++源程序的執(zhí)行對(duì)象被追加了在具有依存關(guān)系的程序塊間,通過(guò)前方的程序塊保存到高速緩存、或者RAM,通過(guò)后方的程序塊讀入保存的數(shù)據(jù)這樣的同步控制碼。然而,基于匯編源程序的執(zhí)行對(duì)象不被追加同步控制碼,在具有依存關(guān)系的程序塊間,不訪問(wèn)寄存器以外的其他存儲(chǔ)區(qū)域。因此,由于表未指定寄存器以外的其他存儲(chǔ)區(qū)域,所以多核處理器系統(tǒng)能夠判斷是從匯編源程序生成的執(zhí)行對(duì)象這一情況。另外,在從同步源核的第I線程分支的第2線程生成在同步目標(biāo)核這一情況被檢測(cè)出的情況下,多核處理器系統(tǒng)可以將寄存器的值從同步源核復(fù)制到同步目標(biāo)核。由此,即使在生成了新線程的情況下,多核處理器系統(tǒng)也不改變面向單核生成的匯編源程序就能夠使用多核來(lái)并行執(zhí)行。另外,基于現(xiàn)有技術(shù)2的同步控制的處理時(shí)鐘數(shù)為100 1000時(shí)鐘左右。本實(shí)施方式的同步控制的處理時(shí)鐘數(shù)即使加上同步控制寄存器的操作也僅為10時(shí)鐘左右,每I次同步控制,能夠?qū)崿F(xiàn)90 99%的效率化。作為更具體的例子,假設(shè)了存在以時(shí)鐘頻率為500 [MHz]進(jìn)行動(dòng)作的CPU的情況?;诂F(xiàn)有技術(shù)2的同步控制的處理時(shí)間為每一次O. 2
2[微秒]左右,基于本實(shí)施方式的同步控制的處理時(shí)間以20 [納秒]左右結(jié)束。同步控制的出現(xiàn)頻度為I [微秒]I次左右的情況下,作為多核處理器系統(tǒng),可實(shí)現(xiàn)10%左右的性能改
盡
口 ο
此外,在本實(shí)施方式中說(shuō)明的信息生成方法能夠通過(guò)由個(gè)人計(jì)算機(jī)、工作站等的計(jì)算機(jī)執(zhí)行預(yù)先準(zhǔn)備的程序而實(shí)現(xiàn)。本信息生成程序通過(guò)被記錄在硬盤(pán)、軟盤(pán)、CD-R0M、M0、DVD等能夠通過(guò)計(jì)算機(jī)進(jìn)行讀取的記錄介質(zhì)中,并由計(jì)算機(jī)從記錄介質(zhì)讀出而被執(zhí)行。另外,本信息生成程序還可以經(jīng)由互聯(lián)網(wǎng)等網(wǎng)絡(luò)進(jìn)行發(fā)布。圖中符號(hào)說(shuō)明# 0、# M、# N CPU ;110總線;203 CPU內(nèi)寄存器組;205寄存器同步控制裝置;501寄存器依存表;502檢測(cè)部;503確定部;504生成部;505同步控制部;506設(shè)定部;507取得部;508讀入部;509寫(xiě)入部;510發(fā)送部;511接收部。
權(quán)利要求
1.一種多核處理器系統(tǒng),其特征在于,具備: 檢測(cè)單元,其通過(guò)多核處理器中的特定的核,檢測(cè)出在上述多核處理器內(nèi)將由同步源核正在執(zhí)行的線程轉(zhuǎn)移至同步目標(biāo)核這一情況; 確定單元,其通過(guò)上述特定的核,參照確定線程組的各個(gè)線程與和該線程建立了對(duì)應(yīng)的寄存器的組合的表,來(lái)確定與由上述檢測(cè)單元檢測(cè)出進(jìn)行了轉(zhuǎn)移的線程對(duì)應(yīng)的特定的寄存器; 生成單元,其通過(guò)上述特定的核,生成確定由上述確定單元確定的上述特定的寄存器以及上述同步目標(biāo)核的同步控制信息;以及 同步控制單元,其與上述多核處理器能夠通信地連接,從上述特定的核取得由上述生成單元生成的同步控制信息,從上述同步源核的上述特定的寄存器讀入根據(jù)上述同步控制信息獲得的上述特定的寄存器的值,并將從上述同步源核的上述特定的寄存器讀入的值寫(xiě)入至上述同步目標(biāo)核的上述特定的寄存器。
2.一種多核處理 器系統(tǒng),其特征在于,具備: 檢測(cè)單元,其通過(guò)多核處理器中的特定的核,檢測(cè)出在上述多核處理器內(nèi)在同步目標(biāo)核生成從由同步源核正在執(zhí)行的第I線程分支出的第2線程這一情況; 確定單元,其通過(guò)上述特定的核,參照確定線程組的各個(gè)線程與和該線程建立了對(duì)應(yīng)的寄存器的組合的表,來(lái)確定與上述第I線程以及第2線程對(duì)應(yīng)的特定的寄存器; 生成單元,其通過(guò)上述特定的核,生成確定由上述確定單元確定的上述特定的寄存器以及上述同步目標(biāo)核的同步控制信息;以及 同步控制單元,其與上述多核處理器能夠通信地連接,從上述特定的核取得由上述生成單元生成的同步控制信息,從上述同步源核的上述特定的寄存器讀入根據(jù)上述同步控制信息獲得的上述特定的寄存器的值,并將從上述同步源核的上述特定的寄存器讀入的值寫(xiě)入至上述同步目標(biāo)核的上述特定的寄存器。
3.根據(jù)權(quán)利要求1或者2所述的多核處理器系統(tǒng),其特征在于, 還具備設(shè)定單元,該設(shè)定單元通過(guò)上述同步目標(biāo)核,將上述檢測(cè)出的線程設(shè)定成能夠由上述同步目標(biāo)核執(zhí)行的狀態(tài), 在寫(xiě)入了從上述同步源核的上述特定的寄存器讀入的值的情況下,上述同步控制單元向上述同步目標(biāo)核通知上述檢測(cè)出的線程成為能夠執(zhí)行的信息, 在從上述同步控制單元接收到上述檢測(cè)出的線程成為能夠執(zhí)行的信息的情況下,上述設(shè)定單元將上述檢測(cè)出的線程設(shè)定成能夠由上述同步目標(biāo)核執(zhí)行的狀態(tài)。
4.根據(jù)權(quán)利要求1或者2所述的多核處理器系統(tǒng),其特征在于, 與上述表中的上述線程建立了對(duì)應(yīng)的上述寄存器不確定上述多核處理器的任意一個(gè)核。
5.根據(jù)權(quán)利要求1或者2所述的多核處理器系統(tǒng),其特征在于, 上述表未指定上述寄存器以外的其他存儲(chǔ)區(qū)域。
6.一種同步控制系統(tǒng),是與多核處理器能夠通信地連接的同步控制系統(tǒng),其特征在于,具備: 取得單元,其通過(guò)上述多核處理器中的特定的核,檢測(cè)出在上述多核處理器內(nèi)將由同步源核正在執(zhí)行的線程轉(zhuǎn)移至同步目標(biāo)核這一情況,并取得確定與上述正在執(zhí)行的線程對(duì)應(yīng)的特定的寄存器以及上述同步目標(biāo)核的同步控制信息; 讀入單元,其從上述同步源核的上述特定的寄存器讀入根據(jù)由上述取得單元取得的同步控制信息獲得的上述特定的寄存器的值;以及 寫(xiě)入單元,其將由上述讀入單元從同步源核的上述特定的寄存器讀入的值寫(xiě)入至上述同步目標(biāo)核的上述特定的寄存器。
7.一種同步控制裝置,是與多核處理器的各個(gè)核能夠通信地連接的同步控制裝置組中的任意的同步控制裝置,其特征在于,具備: 取得單元,在能夠與上述同步控制裝置通信的連接目標(biāo)核是使由該連接目標(biāo)核正在執(zhí)行的線程轉(zhuǎn)移至同步目標(biāo)核的同步源核的情況下,該取得單元從上述多核處理器中的執(zhí)行上述轉(zhuǎn)移的特定的核取得確定與上述正在執(zhí)行的線程對(duì)應(yīng)的特定的寄存器以及上述同步目標(biāo)核的同步控制信息; 讀入單元,在上述連接目標(biāo)核是上述同步源核的情況下,該讀入單元從上述同步源核的上述特定的寄存器讀入根據(jù)由上述取得單元取得的同步控制信息獲得的上述特定的寄存器的值; 發(fā)送單元,在上述連接目標(biāo)核是上述同步源核的情況下,該發(fā)送單元將上述特定的寄存器的識(shí)別信息以及上述特定的寄存器的值發(fā)送到上述同步控制裝置組中的上述同步目標(biāo)核的同步控制裝置; 接收單元,在上述連接 目標(biāo)核是上述同步目標(biāo)核的情況下,該接收單元從上述同步控制裝置組中的與上述同步源核連接的同步控制裝置接收上述特定的寄存器的識(shí)別信息以及上述特定的寄存器的值;以及 寫(xiě)入單元,在上述連接目標(biāo)核是上述同步目標(biāo)核的情況下,該寫(xiě)入單元將由上述接收單元接收到的上述特定的寄存器的值寫(xiě)入至上述同步目標(biāo)核的上述特定的寄存器。
8.一種信息生成方法,其特征在于,由多核處理器中的特定的核執(zhí)行下述步驟: 檢測(cè)步驟,檢測(cè)出在上述多核處理器內(nèi)將由同步源核正在執(zhí)行的線程轉(zhuǎn)移至同步目標(biāo)核這一,清況; 確定步驟,參照確定線程組的各個(gè)線程與和該線程建立了對(duì)應(yīng)的寄存器的組合的表,來(lái)確定與由上述檢測(cè)步驟檢測(cè)出進(jìn)行了轉(zhuǎn)移的線程對(duì)應(yīng)的特定的寄存器; 生成步驟,生成確定由上述確定步驟確定的上述特定的寄存器以及上述同步目標(biāo)核的同步控制信息;以及 輸出步驟,向控制上述多核處理器的各個(gè)核的寄存器間的同步的同步控制裝置組中的上述同步源核的同步控制裝置輸出由上述生成步驟生成的同步控制信息。
9.一種信息生成程序,其特征在于,使多核處理器中的特定的核執(zhí)行下述步驟: 檢測(cè)步驟,檢測(cè)出在上述多核處理器內(nèi)將由同步源核正在執(zhí)行的線程轉(zhuǎn)移至同步目標(biāo)核這一,清況; 確定步驟,參照確定線程組的各個(gè)線程與和該線程建立了對(duì)應(yīng)的寄存器的組合的表,來(lái)確定與由上述檢測(cè)步驟檢測(cè)出進(jìn)行了轉(zhuǎn)移的線程對(duì)應(yīng)的特定的寄存器; 生成步驟,生成確定由上述確定步驟確定的上述特定的寄存器以及上述同步目標(biāo)核的同步控制信息;以及 輸出步驟,向控制上述多核處理器的各個(gè)核的寄存器間的同步的同步控制裝置組中的上述同步源核的同步控制 裝置輸出由上述生成步驟生成的同步控制信息。
全文摘要
本發(fā)明涉及多核處理器系統(tǒng)、同步控制系統(tǒng)、同步控制裝置、信息生成方法以及信息生成程序。多核處理器中的CPU(#0)通過(guò)檢測(cè)部(502),檢測(cè)在多核處理器內(nèi)將由作為同步源核的CPU(#M)執(zhí)行中的線程向作為同步目標(biāo)核的CPU(#N)轉(zhuǎn)移這一情況。檢測(cè)后,CPU(#0)通過(guò)確定部(503),并參照寄存器依存表(501),確定與檢測(cè)出進(jìn)行了轉(zhuǎn)移的線程對(duì)應(yīng)的特定的寄存器。在確定后,CPU(#0)通過(guò)生成部(504)生成確定被確定出的特定的寄存器以及同步目標(biāo)核的同步控制信息。與多核處理器以能夠進(jìn)行通信的方式連接的同步控制部(505)從CPU(#0)取得生成的同步控制信息。接下來(lái),同步控制部(505)從CPU(#M)的特定的寄存器讀入根據(jù)同步控制信息而得的特定的寄存器的值,并對(duì)CPU(#N)的特定的寄存器寫(xiě)入讀入的值。
文檔編號(hào)G06F15/17GK103080921SQ20108006887
公開(kāi)日2013年5月1日 申請(qǐng)日期2010年8月30日 優(yōu)先權(quán)日2010年8月30日
發(fā)明者山下浩一郎, 山內(nèi)宏真, 鈴木貴久, 栗原康志 申請(qǐng)人:富士通株式會(huì)社