多核處理器系統(tǒng)、分配程序、控制程序、分配方法以及控制方法
【專利摘要】CPU#0檢測進程1的分配指示。CPU#0取得殘余時間,該殘余時間是從作為對CPU#1分配的中斷處理的句柄B的事件的產生時刻到句柄B的執(zhí)行期限為止的時間(句柄B的Dt)減去句柄A的處理時間即句柄B的CP后的時間。CPU#0判斷所取得的殘余時間是否為進程1的被定義禁止中斷的處理的處理時間(進程1的CP)以上。即,在對CPU#1分配了進程1的情況下,即使在進程1的執(zhí)行中產生句柄B的事件,也判斷是否能夠遵守句柄B的Dt。若在進程1的執(zhí)行中產生句柄B的事件,則判斷為能夠遵守句柄B的Dt。因此,CPU#0將進程1向CPU#1分配。
【專利說明】多核處理器系統(tǒng)、分配程序、控制程序、分配方法以及控制方法
[0001 ] 本申請是國家申請?zhí)枮?01080068231.6,進入中國國家階段日期為2013年I月24日,發(fā)明名稱為“多核處理器系統(tǒng)、分配程序、控制程序、分配方法以及控制方法”的發(fā)明專利申請的分案申請。
技術領域
[0002]本發(fā)明涉及對進程分配或驅動程序分配進行控制的多核處理器系統(tǒng)、分配程序以及分配方法。而且,本發(fā)明涉及對向處理器供給的時鐘的頻率進行控制的多核處理器系統(tǒng)、控制程序以及控制方法。
【背景技術】
[0003]以往,已知有一種在計算機系統(tǒng)中通過針對來自設備的中斷信號,使由CPU(Central Processing Unit)正在執(zhí)行的進程退避,進行針對中斷信號的中斷處理,來高速進行與設備對應的處理的技術。將與設備對應的處理稱為設備驅動程序,作為設備驅動程序的動作,存在:用I次中斷信號完結的單動作型驅動程序、和當產生I次中斷信號時以一定時間間隔等連續(xù)產生中斷信號的連續(xù)動作型驅動程序。
[0004]單動作型的驅動程序針對設備的寄存器組操作,變更成軟件友好(softwarefriendly)的接口。單動作型的驅動程序例如適合于鍵盤驅動程序、鼠標驅動程序等。連續(xù)動作型的驅動程序通過針對利用FIF0(First In,First Out)進行管理的緩沖器的缺乏和緩沖器滿狀態(tài)的中斷信號進行DMA(Direct Memory Access)設定,來進行數據傳輸。連續(xù)動作型的驅動程序例如適合于顯示器驅動程序、照相機驅動程序等。
[0005]在連續(xù)動作型的驅動程序中,根據作為數據傳輸的對象數據的標準,存在最后期限時間(deadline time)的情況較多。例如,顯示器的驅動程序具有在顯示器以60[Hz]更新的情況下,作為最后期限時間在約0.017[秒]以內傳輸數據這一標準。
[0006]若以照相機驅動程序為例,則照相機設備作為輸入裝置被安裝于終端,在拍攝的同時將一行一行來自照相機設備的輸入數據儲存于行緩沖器(line buffer)。當行緩沖器變?yōu)樵撔芯彌_器的容量的1/2時,產生中斷處理,該行緩沖器中儲存的數據為了圖像處理或壓縮,被使用DMA(Direct Memory Access)向共享存儲器傳輸。
[0007]另外,在單核處理器系統(tǒng)中,已知有由一個CPU基于多個進程的處理時間來切換該進程的執(zhí)行的技術(例如參照下述專利文獻I)。
[0008]另外,在多核處理器系統(tǒng)中,各驅動程序的分配在該系統(tǒng)起動時決定。例如已知有一種通過將多核處理器中的一個CPU作為驅動程序專用的CPU,來實現即使產生中斷處理也能夠不使進程退避而執(zhí)行的技術(例如參照下述專利文獻2。)。
[0009]專利文獻1:日本特開2005 — 285093號公報
[0010]專利文獻2:日本特開平4一33130號公報
[0011]然而,有時在進程中具有被定義禁止中斷的處理。在執(zhí)行該被定義禁止中斷的處理過程中,即使產生驅動程序的中斷處理,該中斷處理也不被立即執(zhí)行。如上所述,由于連續(xù)動作型的驅動程序存在最后期限時間,所以如果被定義禁止中斷的處理的處理時間比該最后期限時間長,則存在連續(xù)動作型的驅動程序不能夠遵守最后期限時間的問題。
[0012]例如,如上述的照相機驅動程序那樣,若不能夠遵守向共享存儲器傳輸行緩沖器的數據的功能的最后期限時間,則由于丟失不能夠傳輸的數據,所以導致拍攝的圖像的數據缺失,使得圖像變得模糊。
[0013]如上所述,在多核處理器系統(tǒng)中,通過設置驅動程序專用的CPU,不會與進程的被定義禁止中斷的處理發(fā)生重疊。然而,當在進程專用的CPU中起動多個進程,且沒有利用驅動程序專用的CPU執(zhí)行任何驅動程序時,存在負荷僅集中于進程專用的CPU的問題。
【發(fā)明內容】
[0014]為了消除上述現有技術的問題點,本發(fā)明的目的在于,提供能夠遵守驅動程序的最后期限時間并且向有余力的CPU分配進程的多核處理器系統(tǒng)、分配程序以及分配方法。
[0015]根據本發(fā)明的一個觀點,提供下述的多核處理器系統(tǒng)、分配程序以及分配方法,其中,對進程的分配指示進行檢測,當檢測出上述進程的分配指示時,取得殘余時間,該殘余時間是從對多核處理器中任意的核心分配的中斷處理的調出時刻到上述中斷處理的執(zhí)行期限為止的時間中減去了上述中斷處理的處理時間的時間,并判斷取得的殘余時間是否為上述進程的被定義了禁止中斷的處理的處理時間以上,在判斷為上述殘余時間為上述進程的被定義了禁止中斷的處理的處理時間以上時,向上述任意核心分配上述進程。
[0016]根據本發(fā)明的其他觀點,提供下述的多核處理器系統(tǒng)、分配程序以及分配方法,其中,將對象中斷處理的執(zhí)行時間、與對多核處理器中的任意核心分配的分配完畢的中斷處理的執(zhí)行時間相加,基于加法結果來判斷上述任意核心是否能夠遵守從上述對象中斷處理調出時起的執(zhí)行期限、以及從上述分配完畢的中斷處理調出時起的執(zhí)行期限,在判斷為能夠遵守從上述對象中斷處理調出時起的執(zhí)行期限、以及從上述分配完畢的中斷處理調出時起的執(zhí)行期限時,向上述任意核心分配上述對象中斷處理。
[0017]根據本發(fā)明的其他觀點,提供下述的多核處理器系統(tǒng)、控制程序以及控制方法,其中,對分配給多核處理器中的任意核心的分配完畢的進程的結束進行檢測,當檢測出上述分配完畢的進程的結束時,判斷是否沒有對上述任意核心分配任何進程,在判斷為沒有對上述任意核心分配任何進程時,取得殘余時間,該殘余時間是從對上述任意核心分配的中斷處理的調出時刻到上述中斷處理的執(zhí)行期限為止的時間中減去了上述中斷處理的處理時間后的時間,根據由上述取得單元取得的殘余時間與上述中斷處理的處理時間的比率,來決定向上述任意核心供給的時鐘頻率,并將決定結果賦予給上述時鐘的供給源。
[0018]根據本多核處理器系統(tǒng)、分配程序以及分配方法,起到可將進程分配給能夠遵守驅動程序的最后期限時間的CPU這一效果。另外,根據本多核處理器系統(tǒng)、分配程序以及分配方法,起到即使調出多個驅動程序,也能夠遵守各驅動程序的最后期限時間這一效果。另夕卜,根據本多核處理器系統(tǒng)、控制程序以及控制方法,起到能夠遵守各驅動程序的最后期限時間并且可實現低消耗電力這一效果。
【附圖說明】
[0019]圖1是表示本發(fā)明的一個例子的說明圖。
[0020]圖2是表示本發(fā)明的另一個例子的說明圖。
[0021 ]圖3是表示ESL模型的一個例子的說明圖。
[0022]圖4是表示實施方式I所涉及的設計輔助裝置的硬件的框圖。
[0023]圖5是表示ESL模擬例的說明圖。
[0024]圖6是表示驅動程序的CP以及Dt的輸出例的說明圖。
[0025]圖7是表示進程的CP的輸出例的說明圖。
[0026]圖8是表示由設計輔助裝置進行的驅動程序的CP記憶Dt的計算處理步驟的流程圖。
[0027]圖9是表示多核處理器系統(tǒng)的硬件的框圖。
[0028]圖10是與起動時相關的多核處理器系統(tǒng)900的功能框圖。
[0029 ]圖11是表示句柄(hand I er)的分配例的說明圖。
[0030]圖12是表示多核處理器系統(tǒng)900起動時的驅動程序的分配處理步驟的流程圖。
[0031]圖13是與運行時相關的多核處理器系統(tǒng)900的功能框圖。
[0032]圖14是表示App的計算例的說明圖。
[0033]圖15是表示進程A的分配例的說明圖。
[0034]圖16是表示進程B的分配例的說明圖。
[0035]圖17是表示進程C的分配例的說明圖。
[0036]圖18是表示計算處理步驟的流程圖。
[0037]圖19是表示主OS的分配處理步驟例I的流程圖。
[0038]圖20是表示0S911的分配處理步驟例2流程圖。
[0039]圖21是與時鐘頻率相關的多核處理器系統(tǒng)900的功能框圖。
[0040]圖22是表示OS的時鐘頻率的控制處理步驟的流程圖。
【具體實施方式】
[0041]下面,參照附圖對本發(fā)明所涉及的多核處理器系統(tǒng)、分配程序以及分配方法的優(yōu)選實施方式進行詳細說明。
[0042]圖1是表示本發(fā)明的一個例子的說明圖。首先,CPU#0檢測進程I的分配指示。然后,CPU#0取得殘余時間,該殘余時間是從作為對CPU#0分配的中斷處理的句柄A的事件的產生時刻到句柄A的執(zhí)行期限為止的時間(句柄A的Dt)除去了作為句柄A的處理時間的句柄A的CP后的時間。
[0043]接著,CPU#0判斷所取得的殘余時間是否為進程I的被定義禁止中斷的處理的處理時間(進程I的CP)以上。即,此處在對CPU#0分配了進程I的情況下,即使在進程I的執(zhí)行中產生句柄A的事件,也判斷是否能夠遵守句柄A的Dt。
[0044]如圖1所示,在對CPU#0分配了進程I的情況下,若在進程I的被定義禁止中斷的處理的執(zhí)行中產生句柄A的事件,則判定為存在不能夠遵守句柄A的Dt的情況。因此,CPU#0不向CPU#0分配進程I。
[0045]圖2是表示本發(fā)明的另一個例子的說明圖。首先,CPU#0檢測進程I的分配指示。然后,CPU#0取得殘余時間,該殘余時間是從作為對CPU#1分配的中斷處理的句柄B的事件的產生時刻到句柄B的執(zhí)行期限為止的時間(句柄B的Dt)除去了作為句柄B的處理時間的句柄B的CP后的時間。
[0046]接著,CPU#0判斷所取得的殘余時間是否為進程I的被定義禁止中斷的處理的處理時間(進程I的CP)以上。即,此處在進程I被分配給CPU#1的情況下,即使在進程I的執(zhí)行中產生句柄B的事件,也判斷是否能夠遵守句柄B的Dt。
[0047]如圖2所示,若在進程I的執(zhí)行中產生句柄B的事件,則判斷為能夠遵守句柄B的Dt。因此,CPU#0向CPU# I分配進程I。
[0048]首先,在實施方式I中對各驅動程序的執(zhí)行時間的計算和各驅動程序的最后期限進行說明。接著,在實施方式中2對多核處理器的起動時、中斷處理程序的分配以及進程的分配進行說明。
[0049](實施方式I)
[0050]在實施方式I中,使用ESL(Electronic System Level)模型對各驅動程序的執(zhí)行時間的計算進行說明。此處,ESL模型是指通過根據硬件設備的行為(動作-behav1r)為基礎進行記述,來將硬件環(huán)境模擬化的技術。例如,在CPU的ESL模型中并不是將指令發(fā)送的電氣電路的機理原樣進行模擬,而是用發(fā)行命令和其需要的時間來表現。
[0051]另外,在總線的ESL模型中同樣不是利用電路機理來嚴格地計算數據傳播的延遲,而是根據訪問要求將設計上的潛在模式相乘,將動作和時間概念作為行為(動作)來進行模擬。
[0052]以往,模擬是指根據RTL(RegisterTransfer Level)等電路設計信息,不實際安裝半導體地進行模擬的情況,被用于通過實現與實際設備等同的動作來進行驗證。
[0053]然而,為了實施電路等級的詳細模擬是非常耗時的(通常,針對實際設備的速度為數千萬?數億分之一的處理時間),現實中難以在使應用程序運行的同時對系統(tǒng)整體的舉動進行解析。另一方面,在ESL模型中,由于將處理和時間的概念作為動作進行解析,所以是不需要進行電路的模擬就能夠評價大體的處理時間的環(huán)境。
[0054](ESL 模型)
[0055]圖3是表示ESL模型的一個例子的說明圖。ESL模型300具有評價對象的外圍電路模型301、外圍電路模型302、中斷控制器模型303以及CPU模型304。
[0056]評價對象的外圍電路模型301例如是照相機設備模型或動態(tài)圖像再生設備模型。若評價對象的外圍電路模型301是照相機設備模型,則評價對象驅動程序是照相機驅動程序。另外,外圍電路模型301和外圍電路模型302只要是向共享存儲器模型305訪問的模型即可。
[0057]此處,通過增加總線緩沖器(busbuffer)的個數,來使針對CPU模型304的負荷增大。例如,總線緩沖器的深度為2是表示在總線模型306的比特寬度為128比特的情況下,CPU模型304以外的硬件(評價對象的外圍電路模型301和外圍電路模型302)占有16比特的總線模型306。緩沖器的深度為16表示在總線模型306的比特寬度為128比特的情況下,CPU模型304以外的硬件(評價對象的外圍電路模型301與外圍電路模型302)占有128比特的總線模型 306。
[0058](設計輔助裝置的硬件)
[0059]圖4是表示實施方式I所涉及的設計輔助裝置的硬件的框圖。在圖4中,設計輔助裝置具有CPU(Central Processing Unit)401、R0M(Read Only Memory:只讀存儲器)402、RAM(Random Access Memory:隨機存儲器)403、磁盤驅動程序404、磁盤405、光盤驅動程序406、光盤407、顯示器408、I/F(Interface)409、鍵盤410、鼠標411、掃描儀412以及打印機413。而且,各部通過總線400分別連接。
[0060]此處,CPU401掌管分配裝置的整體控制。R0M402存儲有引導程序等程序。RAM403作為CPU401的工作區(qū)域被使用。磁盤驅動程序404根據CPU401的控制,控制針對磁盤405的數據的讀/寫。磁盤405存儲通過磁盤驅動程序404的控制而寫入的數據。
[0061 ] 光盤驅動程序406根據CPU401的控制,控制針對光盤407的數據的讀/寫。光盤407存儲通過光盤驅動程序406的控制而寫入的數據,或使計算機讀取光盤407中存儲的數據。
[0062]以光標、圖標或者工具箱為代表,顯示器408顯示文檔、圖像以及功能信息等數據。該顯示器408例如能夠采用CRT、TFT液晶顯示器、等離子顯示器等。
[0063]I/F409通過通信線路與LAN(Local Area Network:局域網)、WAN(Wide AreaNetwork:廣域網)、因特網等網絡414連接,并經由該網絡414與其他的裝置連接。而且,I/F409掌管網絡414與內部的接口,控制來自外部裝置的數據的輸入輸出。I/F409例如能夠采用調制解調器、LAN適配器等。
[0064]鍵盤410具備用于輸入文字、數字、各種指示等的鍵,進行數據的輸入。另外,也可以是觸摸面板式的輸入板、數字鍵等。鼠標411進行光標的移動、范圍選擇、或者窗口的移動、尺寸的變更等。只要是具備與作為定點設備一樣的功能的設備即可,也可以是跟蹤球、操縱桿等。
[0065]掃描儀412以光學方式讀取圖像,向分配裝置內取入圖像數據。此外,可以使掃描儀412具備0CR(0ptical Character Reader)功能。另外,打印機413打印圖像數據、文檔數據。打印機413例如能夠采用激光打印機、噴墨打印機。
[0066]首先,對各對象驅動程序的Dt的計算進行說明。CPU401按每一個對象驅動程序取得對象外圍電路的動作頻率,CPU401將I/動作頻率的計算結果作為最后期限。例如,顯示器的動作規(guī)格為60[Hz],聲音處理的動作使用為44.l[kHz]。
[0067].顯示器驅動程序的Dt = l/60 = 16.6[ms]
[0068].音頻驅動程序的Dt = l/44.1 = 22[ys]
[0069]接著,對各對象驅動程序的CP進行說明。
[0070]圖5是表示ESL模擬例的說明圖。CPU401使用ESL模擬器在ESL模型300的CPU模型304上分配并執(zhí)行評價對象驅動程序。將總線緩沖器的深度為2時的執(zhí)行時間作為理論執(zhí)行值。將顯示器驅動程序的理論執(zhí)行值設為10.0[ms],將音頻驅動程序的理論執(zhí)行值設定為10.0|>s] O
[0071]在曲線圖500中,執(zhí)行結果表示了顯示器驅動程序的性能比和音頻驅動程序的性能比。曲線圖500的橫軸為總線緩沖器的深度,曲線圖500的縱軸為性能比。性能比是將總線緩沖器的深度為2時的性能作為I時的執(zhí)行時間的比率。
[0072]具體而言,例如CPU401根據曲線圖500檢測各驅動程序的最低性能比。此處,對顯示器驅動程序和音頻驅動程序而言,都在總線緩沖器的深度為16時為0.98這一最低性能比。即,判明為性能最大劣化2[%]。此處,顯示器驅動程序和音頻驅動程序的劣化率為102[% ]。而且,如下式那樣計算ESL的實效值(CP)。
[0073].CP =理論執(zhí)行值X劣化率[% ]
[0074]因此,顯示器驅動程序的CP是10.0[ms]X102[%]的結果10.2[ms]。音頻驅動程序的〇?是10.0卜8]\102[%]的結果10.2卜8]。由此,正在執(zhí)行驅動程序的0?1]能夠得到與其他的CPU、其他的硬件對共享存儲器的訪問發(fā)生了競爭時的驅動程序的執(zhí)行時間。因此,在實施方式2中,能夠基于性能低時的執(zhí)行時間來決定進程的分配、驅動程序的分配。
[0075]另外,CPU401針對被定義禁止中斷的進程,計算出該進程內的被定義禁止中斷的處理的執(zhí)行時間(CP)。具體而言,例如CPU401向ESL模型300內的CPU模型304分配該進程,通過使用ESL模擬器執(zhí)行ESL模擬,來計算該執(zhí)行時間(CP)。
[0076]CPU401輸出各驅動程序的CP及Dt、進程的CP。作為輸出形式,例如有向顯示器408的顯示、向打印機413的打印輸出以及利用I/F409向外部裝置的發(fā)送。另外,也可以存儲在RAM403、磁盤405以及光盤407等的存儲區(qū)域。
[0077]圖6是表示驅動程序的CP以及Dt的輸出例的說明圖。在表600中,按每一各中斷驅動程序保持Dt和CP。表600具有驅動程序名項目601、Dt項目602以及CP項目603。在驅動程序名項目601中保持驅動程序的識別信息、在Dt項目602中保持Dt,在CP項目603中保持CP。例如,在驅動程序名項目601內的識別信息是視頻驅動程序時,Dt項目602的值為16.6[ms]、CP項目603的值為10.2[ms]。其中,句柄I?句柄5被用于驅動程序的分配的說明。
[0078]圖7是表示進程的CP的輸出例的說明圖。表700中按每一個被定義禁止中斷的進程保持該進程的被定義禁止中斷的處理的執(zhí)行時間。表700具有進程名項目701和CP項目702。進程名項目701中保持進程的識別信息,CP項目702中保持被定義禁止中斷的處理的執(zhí)行時間。
[0079](驅動程序的CP和Dt的計算處理步驟)
[0080]圖8是表示由設計輔助裝置進行的驅動程序的CP和Dt的計算處理步驟的流程圖。首先,設計輔助裝置取得ESL模型(步驟S801)、判斷是否有未選擇的驅動程序(步驟S802)。然后,在設計輔助裝置判斷為沒有未選擇的驅動程序時(步驟S802: “是”),從未選擇的驅動程序中選擇一個驅動程序(步驟S803)。
[0081 ]設計輔助裝置取得對象驅動程序的動作規(guī)格(步驟S804),使Dt= I/動作規(guī)格(步驟S805) ο設計輔助裝置輸出對象驅動程序的Dt (步驟S806),使用ESL模擬器向ESL模型的CPU模型供給對象驅動程序而執(zhí)行ESL模擬(步驟S807)。然后,設計輔助裝置判斷ESL模擬是否結束(步驟S808)。
[0082]在設計輔助裝置判斷為ESL模擬沒有結束時(步驟S808: “否”),返回到步驟S808。另一方面,在設計輔助裝置判斷為ESL模擬已結束時(步驟S808:“是”),根據模擬結果來檢測劣化率(步驟S809)。
[0083]然后,設計輔助裝置取得對象驅動程序的理論執(zhí)行值(步驟S810),計算出CP =理論執(zhí)行值X劣化率(步驟S811)。例如,設計者可以基于對象程序的步驟數等來計算出對象驅動程序的理論執(zhí)行值。另外,計算出的對象驅動程序的理論執(zhí)行值被存儲在CPU401能夠訪問的存儲裝置。然后,設計輔助裝置輸出對象驅動程序的CP(步驟S812),返回到步驟S802。在步驟S802中,當設計輔助裝置判斷為沒有未選擇的驅動程序時(步驟S802: “否”),結束一系列的處理。
[0084](實施方式2)
[0085]接著,在實施方式2中,對驅動程序的分配和應用程序的分配進行說明。此處,在多核處理器系統(tǒng)中,多核處理器是指搭載了多個核心的處理器。只要搭載了多個核心即可,可以是搭載了多個核心的單一處理器,也可以是單核心的處理器并列而成的處理器組。其中,在本實施方式中,為了使說明簡化,以單核心處理器并列而成的處理器組為例進行說明。
[0086](多核處理器系統(tǒng)的硬件)
[0087]圖9是表示多核處理器系統(tǒng)的硬件的框圖。多核處理器系統(tǒng)900中具有外圍電路901、外圍電路902、中斷控制器903、0?1]#0、0?1]#1、共享存儲器905以及時鐘供給電路906。各部通過總線904連接。
[0088]CPU#0和CPU#1分別具有核心、寄存器以及高速緩沖存儲器。CPU#0執(zhí)行作為主OS的0S911,管理多核處理器系統(tǒng)900的整體的控制。0S911控制將產生了分配指示的進程分配給哪個CPU,并且具有對CPU#0中的進程的切換進行控制的分配程序和決定向CPU#0供給的時鐘的頻率的控制程序。并且,0S911具有在多核處理器系統(tǒng)900起動時決定驅動程序的分配的分配程序。
[0089]CPU#1執(zhí)行作為從OS的0S912AS912具有對分配給CPU#1的進程的切換進行控制的分配程序和決定向CPU#1供給的時鐘的頻率的控制程序。
[0090]時鐘供給電路906對各CPU、外圍電路901、外圍電路902、中斷控制器903以及共享存儲器905分別供給時鐘。而且,在實施方式2中,時鐘供給電路906例如按各部的每一個具有CPU能夠設定向該各部供給的時鐘頻率的寄存器。時鐘供給電路906基于寄存器中設定的值來生成時鐘,向各部供給時鐘。
[0091]外圍電路901和外圍電路902例如是照相機設備、音頻設備、鍵盤等。
[0092]中斷控制器903若接收到來自外圍電路901、外圍電路902的中斷信號,則基于中斷表使各(PU調出與該中斷信號對應的中斷處理程序。
[0093]共享存儲器905是CPU#0和CPU#1共享的存儲器。共享存儲器905例如具有R0M(ReadOnly Memory)、RAM (Random Access Memory)和閃存ROM等。共享存儲器905例如存儲有進程管理表922、0S911與0S912的引導程序等程序、上述表600以及上述表700、驅動程序921組、和未圖不的中斷表。
[0094]例如,ROM或閃存ROM存儲該程序、驅動程序組等,1^1作為0?1]#0和0?1]#1的工作區(qū)域被使用。通過共享存儲器905中存儲的0S911和0S912被加載到各CPU中,使各CPU執(zhí)行正被譯碼的處理。
[0095]驅動程序組921有與各外圍電路對應的驅動程序。各OS選擇從驅動程序組921調出的驅動程序。
[0096]進程管理表922例如是表示各進程被分配給哪個CPU、被分配的CPU是否正在執(zhí)行該進程的信息。各CHJ讀出進程管理表922,預先將其存儲在各CHJ的高速緩沖存儲器。若0S911將進程分配給CPU#0和CPU#1中的任意一個CPU,則對進程管理表922登記該進程被分配給哪個CPU。另外,各OS在對該OS分配的進程的執(zhí)行結束時,將關于該進程的記述從該進程管理表922中削除。
[0097]接著,在實施方式2中,對驅動程序的分配進行說明。在實施方式2中,在多核處理器系統(tǒng)900起動時進行驅動程序的分配。另外,并不局限于此,也可以在多核處理器的OS更新后決定驅動程序的分配,還可以在下載任意驅動程序時決定。
[0098](與起動時相關的多核處理器系統(tǒng)900的功能框圖)
[0099]圖10是與起動時相關的多核處理器系統(tǒng)900的功能框圖。多核處理器系統(tǒng)900中具有加法部1001、確定部1002、判斷部1003以及分配部1004。加法部1001?分配部1004具有0S911,CPU#0從共享存儲器905加載0S911后,在該0S911內執(zhí)行正被譯碼(coding)的處理。
[0100]加法部1001將對象中斷處理的執(zhí)行時間、與對多核處理器中的任意CPU分配的分配完畢的中斷處理的執(zhí)行時間相加。
[0101]判斷部1003基于加法部1001的加法結果,判斷任意的CPU是否能夠遵守從上述對象中斷處理調出時開始的執(zhí)行期限、以及從分配完畢的中斷處理的調出時開始的執(zhí)行期限。
[0102]在利用判斷部1003判斷為能夠遵守從對象中斷處理的調出時開始的執(zhí)行期限、以及從分配完畢的中斷處理的調出時開始的執(zhí)行期限時,分配部1004向任意的CPU分配上述對象中斷處理。
[0103]另外,確定部1002從對象中斷處理的調出時刻到執(zhí)行期限為止的時間、和每一個分配完畢的中斷處理的分配完畢的中斷處理的調出時刻到執(zhí)行期限的時間中,確定最短時間。在實施方式2中將最短時間稱為最短Dt。
[0104]判斷部1003判斷由確定部1002確定出的最短時間是否在加法部1001的加法結果以下。
[0105]在利用判斷部1003判斷為最短時間在加法結果以下時,分配部1004向任意的CPU分配對象中斷處理。
[0106]鑒于以上步驟,使用附圖進行詳細的說明。
[0107]圖11是表示句柄的分配例的說明圖。句柄3和句柄4被分配給CPU#0,句柄I和句柄2被分配給CPU#1。若各句柄被分配,則0S911通過從表600中檢索正被分配的所有句柄的CP,來取得該所有句柄的CP。然后,0S911通過對取得的CP進行加法運算來計算CP的合計值。〇卩1]#0中的0?的合計值為15[!118] ,CPUSl中的CP的合計值為21 [ms]。
[0108]首先,0S911從多個句柄中選擇未分配的句柄5。此處,多個句柄是決定了CP和Dt的連續(xù)動作型驅動程序。接著,0S911從共享存儲器905取得句柄5。然后,通過0S911從表600中檢索句柄5的CP和句柄5的Dt,來取得句柄5的CP和句柄5的Dt。
[0109]0S911按每一個CPU將CP的合計值和句柄5的CP進行加法運算。CPU#0的加法結果為20 [ms], CPU# I的加法結果為26 [ ms ]。然后,0S911確定加法結果為句柄5的Dt以下的CPU。此處,CPU#0被確定。然后,0S911向確定出的CPU#0分配句柄5。
[0110](驅動程序的分配處理步驟)
[0111]圖12是表示多核處理器系統(tǒng)900起動時的驅動程序的分配處理步驟的流程圖。在上述例子中,同時檢測出所有CPU的CP的合計值和最短Dt,但在本流程圖中,從CPU#0開始按順序檢測CPU的合計值和最短Dt,并判斷是否能夠向CPU分配。
[0112]首先,0S911開始系統(tǒng)起動、驅動程序分配處理(步驟S1201)。然后,0S911使k = 0(步驟S1202),判斷所有驅動程序是否分配結束(步驟S1203)。在0S911判斷為未分配所有驅動程序時(步驟S1203: “否”),從未分配的驅動程序中選擇一個驅動程序作為對象驅動程序(步驟 S1204)。
[0113]然后,0S911對分配給CPU#k的驅動程序的CP和對象驅動程序的CP進行加法運算(計算CP的合計值)(步驟S1205) AS911從分配給CPU#k的驅動程序的Dt和對象驅動程序的Dt中確定最短Dt(步驟S1206)。然后,0S911判斷是否CP的合計值 < 最短Dt(步驟S1207)。
[0114]在0S911判斷為不是CP的合計值彡最短Dt時(步驟S1207: “否”),使k = k+l(步驟S1208)、使k彡所有CPU個數(步驟S1209)。在0S911判斷為k彡所有CPU個數時(步驟S1209:“是”),返回到步驟S1205。另一方面,在0S911判斷為不是k彡所有CPU個數時(步驟S1209:“否”),輸出錯誤(Error)(步驟S1210 ),結束一系列的處理。在0S911判斷為CP的合計值彡最短Dt時(步驟SI 207: “是”),向CPU#k分配對象驅動程序(步驟SI 211)。另外,在分配時,將該對象驅動程序被分配到哪個CHJ存儲到中斷表中。然后,CPU#k的0S912起動對象驅動程序(步驟 S1212)。
[0115]另外,在0S911判斷為已被分配了所有驅動程序時(步驟S1203:“是”),結束系統(tǒng)起動(步驟S1213),并結束一系列的處理。
[0116]另外,對即使多核處理器系統(tǒng)900的設計者在設計時將所有驅動程序分配給多核處理器,所有驅動程序也能夠工作進行確認。由此,設計者能夠驗證在多核處理器系統(tǒng)900中是否沒有產生設計上的破綻。
[0117]接著,對多核處理器系統(tǒng)900運行時的進程的分配進行說明。
[0118](與運行時相關的多核處理器系統(tǒng)900的功能框圖)
[0119]圖13是與運行時相關的多核處理器系統(tǒng)900的功能框圖。多核處理器系統(tǒng)900具有檢測部1301、取得部1302、判斷部1303以及分配部1304。檢測部1301?分配部1304具有0S911,CPU#0從共享存儲器905加載0S911,并在該0S911內執(zhí)行正被譯碼的處理。
[0120]檢測部1301檢測進程的分配指示。
[0121]若利用檢測部1301檢測出進程的分配指示,則取得部1302取得殘余時間,該殘余時間是從多核處理器中的任意CPU被分配的中斷處理的調出時刻到中斷處理的執(zhí)行期限的時間中減去中斷處理的處理時間后的時間。此處,從中斷處理的調出時刻到中斷處理的執(zhí)行期限的時間為Dt O將殘余時間設定為App。
[0122]判斷部1303判斷由取得部1302取得的殘余時間是否為進程的被定義禁止中斷的處理的處理時間以上。
[0123]在利用判斷部1303判斷為殘余時間為進程的被定義禁止中斷的處理的處理時間以上時,分配部1304向該任意CPU分配進程。
[0124]鑒于以上步驟,使用附圖進行說明。
[0125]圖14是表示App的計算例的說明圖。在圖14中,視頻驅動程序被分配給CPU#0,音頻驅動程序被分配給CPU#1。首先,若驅動程序的分配處理結束,則各OS通過檢索表600來取得已被分配的所有驅動程序的CP和該驅動程序的Dt。
[0126]然后,各OS計算出CP的合計值。在圖14中,由于各OS分別僅被分配一個驅動程序,所以0S911中的CP的合計值為10.2[ms],0S912中的CP的合計值為10.2[ys]。然后,各OS從已被分配的驅動程序的Dt中檢索最短的Dt、即最短DU0S911中的最短Dt為16.6[ms],0S912中的最短Dt為22[ys]。
[0127]然后,各OS從最短Dt中減去CP的合計值。將0S911中的減法結果設定為App(O)J^0S912中的減法結果設定為App(l) WS912將App(l)與CP的合計值建立關聯地向作為主OS的0S911通知。另外,各OS輸出CP的合計值和App。作為輸出形式,例如可以存儲到共享存儲器905。
[0128]圖15是表示進程A的分配例的說明圖。若0S911檢測出進程A的分配指示,則0S911通過從表700檢索進程A的CP,來取得進程A的CP AS911確定進程A的CP以上的App的CPU。此處CPU#0被確定。然后,0S911向確定出的CPU#0分配進程A。
[0129]圖16是表示進程B的分配例的說明圖。接著,若0S911檢測出進程B的分配指示,則0S911通過從表700檢索進程B的CP,來取得進程B的CP AS911確定進程B的CP以上的App的CPU。此處CPU#0和CPU#1被確定。然后,0S911向確定出的CPU#1分配進程B。
[0130]圖17是表示進程C的分配例的說明圖。接著,若0S911檢測出進程C的分配指示,則0S911通過從表700檢索進程C的CP,來取得進程C的CP AS911確定進程C的CP以上的App的CPUο此處CPU#0被確定。然后,0S911向確定出的CPU#0分配進程C。
[0131](多核處理器系統(tǒng)900的計算處理步驟和分配處理步驟)
[0132]圖18是表示計算處理步驟的流程圖。各OS執(zhí)行App的計算處理,此處以0S912為例進行說明。首先,0S912判斷驅動程序的分配是否已結束(步驟S1801)。在0S912判斷為驅動程序的分配未結束時(步驟S1801:“否”),返回到步驟S1801。接著,在0S912判斷為驅動程序的分配已結束時(步驟S1801: “是”),取得已被分配的所有驅動程序的CP和Dt(步驟S1802)。
[0133]然后,0S912計算已被分配的所有驅動程序的CP的合計值(步驟S1803),從已被分配的驅動程序的Dt中檢測最短Dt(步驟S1804K0S912計算出App =最短Dt — CP的合計值(步驟S1805),向主OS通知App與CP的合計值(步驟S1806)。
[0134]圖19是表示主OS的分配處理步驟例I的流程圖。首先,作為主OS的0S911判斷是否接收到進程的分配指示(步驟S1901)。在0S911判斷為沒有接收到進程的分配指示時(步驟S1901:“否”),返回到步驟S1901。另一方面,在0S911判斷為接收到進程的分配指示時(步驟S1901: “是”),取得接收到分配指示的進程的CP(步驟S1902)。
[0135]然后,0S911使i=0(步驟S1903),判斷是否存在CPU#i(步驟S1904)。在0S911判斷為存在CPU#i時(步驟S1904: “是”),計算出SUB = CPU#i的App —所取得的CP(步驟S1905),然后判斷是否SUB彡0(步驟S1906)。
[0136]在0S911判斷為SUB彡O時(步驟S1906:“是”),將CPU#i確定為能夠分配的CPU(步驟S1907),將SUB建立關聯地向CPU#i輸出(步驟S1908),使i = i+l (步驟S1909)。另一方面,在0S911判斷為不是SUB彡O時(步驟S1906: “否”),移至步驟S1909。
[0137]另外,在0S911判斷為不存在CPU#i時(步驟S1904:“否”),判斷確定出的CPU是否有多個(步驟S1910)。在0S911判斷為確定出的CPU有多個時(步驟S1910:“是”),從確定出的CHJ中確定SUB最大的CPU(步驟S1911 ),向確定出的CPU分配進程(步驟S1912 ),并返回到步驟 S1901。
[0138]在0S911判斷為確定出的CPU不是多個時(步驟S1910:“否”),向確定出的CPU分配進程(步驟S1913),然后返回到步驟S1901。
[0139]圖20是表示0S911的分配處理步驟例2的流程圖。首先,0S911判斷是否已接收到進程的分配指示(步驟S2001)。在0S911判斷為未接收到進程的分配指示時(步驟S2001:“否”),返回到步驟S2001。另一方面,在0S911判斷為接收到進程的分配指示時(步驟S2001:“是”),取得接收到分配指示的進程的CP(步驟S2002)。
[0140]然后,0S911使i=0(步驟S2003),判斷是否存在CPU#i(步驟S2004)。在0S911判斷為存在CPU#i時(步驟S2004: “是”),判斷是否CPU#i的A卯彡所取得的CP(步驟S2005)。在0S911判斷為CPU#i的App彡所取得的CP時(步驟S2005: “是”),向CPU#i分配進程(步驟S2006),然后返回到步驟S2001。
[0141]在0S911判斷為不是CPU#i的App彡所取得的CP時(步驟S2005:“否”),使i = i+l (步驟S2007),并返回到步驟S2004。另外,當在步驟S2004中0S911判斷為不存在CPU#i時(步驟S2004: “否”),輸出錯誤(步驟S2008),并返回到步驟S2001。
[0142]接著,對將向未被分配進程的CPU供給的時鐘頻率降低的例子進行說明。
[0143](與時鐘頻率相關的多核處理器系統(tǒng)900的功能框圖)
[0144]圖21是與時鐘頻率相關的多核處理器系統(tǒng)900的功能框圖。多核處理器系統(tǒng)900的各OS具有檢測部、判斷部、取得部、決定部以及設定部。0S911具有檢測部2101、判斷部2102、取得部2103、決定部2104以及設定部2105,0S912具有檢測部2111、判斷部2112、取得部2113、決定部2114以及設定部2115。各CPU從共享存儲器905加載各自的OS,在該OS內執(zhí)行正被譯碼的處理。
[0145]檢測部2101和檢測部2111為相同處理,判斷部2102和判斷部2112為相同處理。并且,取得部2103和取得部2113為相同處理,決定部2104和決定部2114為相同處理,設定部2105和設定部2115為相同處理。此處,以檢測部2101?設定部2105為例進行說明。
[0146]檢測部2101檢測對多核處理器中的任意CPU分配的分配完畢的進程的結束。此處,將任意CPU設定為CPU#0。
[0147]當利用檢測部2101檢測出分配完畢的進程的結束時,判斷部2102判斷是否不向任意的CPU分配任何進程。
[0148]在利用判斷部2102判斷為不向CPU#0分配任何進程時,取得部2103取得殘余時間,該殘余時間是從已對CPU#0分配的中斷處理的調出時刻到中斷處理的執(zhí)行期限為止的時間中減去上述中斷處理的處理時間后的時間。此處,殘余時間為App。
[0149]決定部2104根據由取得部2103取得的殘余時間與中斷處理的處理時間的比率,來決定向CPU#0供給的時鐘頻率。
[0150]設定部2105向時鐘的供給源供給決定部2104的決定結果。此處,時鐘供給源為時鐘供給電路906。因此,具體例如由CPU#0對時鐘供給電路906內的寄存器中與向該CPU#0供給的時鐘頻率對應的寄存器設定決定結果。
[0151]另外,檢測部2101檢測未分配的進程向CPU#0的分配。
[0152]若利用檢測部2101檢測出上述未分配的進程向CPU#0的分配,則設定部2105將由CPU#0的規(guī)格定義的頻率向上述時鐘的供給源供給。
[0153]例如,將CPU#0的App設定為6.4[ms]、將CP的合計值設定為10.2[ms]。此時,相對于10.2[ms],由于到6.4[ms]之前是CPU#0的余力,所以能夠將時鐘降低到余力為O。此處,將用CPU#0的規(guī)格定義的向該CPU#0供給的時鐘頻率設定為CMAX。該情況下,能夠將向CPU#0供給的時鐘頻率降低到C。
[0154].C = CMAX.{l—App/CP的合計值}
[0155]此處,CMAX為 I OOMHz,
[0156]C=10.{1-6.4/10.2}=37.25[MHz]o
[0157]此處,在共享存儲器905內保持有每個CPU的CMAX。使用流程圖對詳細的處理進行說明。
[0158](時鐘頻率的控制處理步驟)
[0159]圖22是表示OS的對時鐘頻率的控制處理步驟的流程圖。由各OS執(zhí)行控制處理,這里以0S911為例進行說明。首先,0S911判斷是否檢測出進程的分配或進程的執(zhí)行結束(步驟S2201)。在0S911判斷為沒有檢測出進程的分配一級進程的執(zhí)行結束時(步驟S2201:“否”),返回到步驟S2201。
[0160]接著,在0S911判斷為檢測出進程的分配時(步驟S2201:進程的分配),取得由規(guī)格定義的時鐘頻率(CMAX)(步驟S2202)。關于進程的分配,能夠通過0S911參照進程管理表922來檢測。
[0161 ] 然后,0S911向時鐘供給電路906賦予CMAX(步驟S2203),并返回到步驟S2201。向時鐘供給電路906賦予CMAX是指對與向時鐘供給電路906內的CPU#0供給的時鐘頻率對應的寄存器設定CMAX。
[0162]另一方面,在0S911判斷為檢測出進程的執(zhí)行結束時(步驟S2201:進程的執(zhí)行結束),判斷是否存在已被分配的進程(步驟S2204K0S911能夠通過參照進程管理表922來檢測出進程的結束。
[0163]在0S911判斷為存在已被分配的進程時(步驟S2204: “是”),返回到步驟S2201。在0S911判斷為不存在已被分配的進程時(步驟S2204:“否”),取得由規(guī)格定義的時鐘頻率(CMAX)(步驟 S2205)。
[0164]然后,0S911計算出? = 01^\(1—六??/^的合計值)(步驟32206),向時鐘供給電路906賦予C(步驟S2207)。向時鐘供給電路906賦予C是指將與向時鐘供給電路906內的CPU#O賦予的時鐘頻率對應的寄存器設定為C。
[0165]如以上說明那樣,根據多核處理器系統(tǒng)、分配程序以及分配方法,進程被分配到任意的核心,通過判斷向該任意核心分配完畢的中斷處理是否能夠遵守從該中斷處理的調出時起的執(zhí)行期限,來決定是否向任意的核心分配該進程。由此,即使分配被定義禁止中斷的進程,也能夠遵守從中斷處理的調出時起的執(zhí)行期限。即,能夠不為了驅動程序專用而確保CPU。
[0166]如上說明那樣,根據多核處理器系統(tǒng)、分配程序以及分配方法,將對象中斷處理的執(zhí)行時間與對任意核心分配的I個或多個中斷處理的執(zhí)行時間相加。然后,通過基于加法運算結果,判斷該對象中斷處理以及I或者多個中斷處理是否能夠遵守從各自的調出時起的執(zhí)行期限,能夠判斷是否向該任意的核心分配對象中斷處理。由此,即使同時調出多個中斷處理,也能夠遵守從各中斷處理的調出時起的執(zhí)行期限。
[0167]另外,從該對象中斷處理的調出時刻到執(zhí)行期限的時間、和每個分配完畢的中斷處理的上述分配完畢的中斷處理的調出時刻到執(zhí)行期限為止的時間中,確定最短時間。然后,判斷該確定出的最短時間是否為加法結果以下。由此,能夠判斷該對象中斷處理以及分配完畢的中斷處理是否能夠遵守從各自的調出時起的執(zhí)行期限。因此,可以使判斷處理高速化,能夠高速地進行中斷處理的分配。
[0168]如上說明那樣,根據多核處理器系統(tǒng)、控制程序以及控制方法,若檢測出已對任意CPU分配的分配完畢的進程的執(zhí)行結束,則判斷為對該任意CPU沒有分配任何進程。如果沒有被分配任何進程,則基于從已對該任意CPU分配的中斷處理的調出時起的執(zhí)行期限,來決定向該任意CPU供給的時鐘頻率。由此,能夠遵守各驅動程序的最后期限時間,同時實現低電力消耗。
[0169]另外,若檢測出未分配的進程向該任意CPU的分配,則將向該任意CPU賦予的時鐘頻率返回到由規(guī)格決定的頻率。由此,能夠遵守各驅動程序的最后期限時間。
[0170]符號說明:900...多核處理器系統(tǒng);1001...加法部;1002...確定部;1003、1303、2102、2112...判斷部;1004、1304..?分配部;1301、2101、2111..?檢測部;1302、2103、2113...取得部;2104、2114...決定部;2105、2115...設定部。
【主權項】
1.一種多核處理器系統(tǒng),具有: 多個核心,執(zhí)行被分配的中斷處理;以及 存儲部,存儲每一個中斷處理的處理時間信息以及執(zhí)行期限信息, 所述多個核心的第I核心在檢測出第I中斷處理的情況下,基于存儲于所述存儲部的所述處理時間信息計算對所述多個核心的各個分配的中斷處理以及所述第I中斷處理的合計處理時間,并且根據基于存儲于所述存儲部的所述執(zhí)行期限信息的所述第I中斷處理的執(zhí)行期限和所述合計處理時間來將所述第I中斷處理分配至能夠在所述執(zhí)行期限內執(zhí)行的所述多個核心中的任意一個。2.—種多核處理器系統(tǒng)的控制方法, 所述多核處理器系統(tǒng)具有: 多個核心,執(zhí)行被分配的中斷處理;以及 存儲部,存儲每一個中斷處理的處理時間信息以及執(zhí)行期限信息, 所述多個核心的第I核心執(zhí)行如下處理: 在檢測出第I中斷處理的情況下,基于存儲于所述存儲部的所述處理時間信息計算對所述多個核心的各個分配的中斷處理以及所述第I中斷處理的合計處理時間, 根據基于存儲于所述存儲部的所述執(zhí)行期限信息的所述第I中斷處理的執(zhí)行期限和所述合計處理時間來將所述第I中斷處理分配至能夠在所述執(zhí)行期限內執(zhí)行的所述多個核心中的任意一個。
【文檔編號】G06F13/26GK105930289SQ201610236777
【公開日】2016年9月7日
【申請日】2010年7月30日
【發(fā)明人】山下浩郎, 山下浩一郎, 鈴木貴久, 山內宏真, 栗原康志
【申請人】富士通株式會社