两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于管理微處理器中的或微處理器組件中的任務(wù)的方法

文檔序號(hào):6361792閱讀:137來源:國(guó)知局
專利名稱:用于管理微處理器中的或微處理器組件中的任務(wù)的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于管理微處理器中的或微處理器組件中的任務(wù)的方法,并且更特別地涉及一種管理微處理器中的任務(wù)中斷的方法。
背景技術(shù)
微處理器是可以實(shí)現(xiàn)各種任務(wù)的電子設(shè)備,其中每個(gè)任務(wù)都是數(shù)個(gè)指令系列。裝置與微處理器相關(guān)聯(lián),以便用它來形成微控制器。這些附加裝置允許對(duì)被分配給微處理器的任務(wù)的管理。微處理器通常一次只執(zhí)行單個(gè)任務(wù)。因此,管理其中數(shù)個(gè)任務(wù)不得不被同時(shí)執(zhí)行的情形或者其中一個(gè)或多個(gè)任務(wù)在前面的任務(wù)在執(zhí)行的過程中的同時(shí)不得不被執(zhí)行的情況是適當(dāng)?shù)?。例如,為某些微處理器作好?zhǔn)備,以能夠中斷任務(wù),以便執(zhí)行另一個(gè)任務(wù)并且一旦新的任務(wù)已經(jīng)被完成就結(jié)束被中斷的任務(wù)。特別是當(dāng)由微處理器對(duì)任務(wù)的執(zhí)行使用了對(duì)存儲(chǔ)器的訪問時(shí),這樣的管理是有問題的。因此,新任務(wù)的實(shí)現(xiàn)冒著干擾被存儲(chǔ)用于在執(zhí)行的過程中的任務(wù)的值的危險(xiǎn),這當(dāng)然干擾在進(jìn)行中的任務(wù),并且可以導(dǎo)致由于中間數(shù)據(jù)的不穩(wěn)定狀態(tài)所引起的不一致。為了克服這些問題,可能簡(jiǎn)單地禁止任何中斷。那么,風(fēng)險(xiǎn)是任務(wù)丟失。使用軟件用于存儲(chǔ)等待的任務(wù)也是可能的。那么,這樣的軟件管理在下文將被叫做“JobRow”的任務(wù)列表。利用這樣的軟件,在執(zhí)行的過程中的任務(wù)被短暫地停止,從而給軟件時(shí)間以列出等待的任務(wù)。因而,在任務(wù)的執(zhí)行期間,到達(dá)的任務(wù)通過軟件的中介被存儲(chǔ)在“JobRow”列表中,并且一旦在執(zhí)行的過程中的任務(wù)被完成,就將實(shí)現(xiàn)到達(dá)的任務(wù)。然而,這個(gè)替換方案提出問題。如果一款軟件的執(zhí)行的中斷被授權(quán),則管理“JobRow”列表的軟件的中斷也被授權(quán)。因而,“ JobRow管理”類型的任務(wù)可以通過相同類型的新任務(wù)來中斷。因而,管理“JobRow”列表的軟件可以被單獨(dú)中斷。為了克服這個(gè)缺點(diǎn),為在這個(gè)軟件的工作期間阻止任何任務(wù)中斷做好準(zhǔn)備因此是適當(dāng)?shù)?。但是,任?wù)中斷管理功能具有使任務(wù)的執(zhí)行速度慢下來的缺點(diǎn)。實(shí)際上,這些任務(wù)的停止和重新開始消耗時(shí)間。此外,對(duì)這些停止和重新開始授權(quán)也增加了在寫管理“JobRow”的軟件期間犯人為錯(cuò)誤的風(fēng)險(xiǎn)。這樣的錯(cuò)誤甚至可以導(dǎo)致阻塞系統(tǒng)。

發(fā)明內(nèi)容
因此,本發(fā)明的目的是提供一種用于管理微處理器中的任務(wù)的方法,特別是使得還管理任務(wù)中斷成為可能,這允許具有盡可能快的任務(wù)執(zhí)行的系統(tǒng)良好地運(yùn)行。特別適當(dāng)?shù)氖潜苊庥捎谠谌蝿?wù)執(zhí)行期間的停止和重新開始所引起的時(shí)間浪費(fèi)。在某些系統(tǒng)中,資源為數(shù)個(gè)微處理器所共有。因而,數(shù)個(gè)微處理器可能訪問該資源(被叫做“共享資源”),用于執(zhí)行被分配給這數(shù)個(gè)微處理器的任務(wù)。然而,該共享資源一次只可以由一個(gè)單個(gè)微處理器使用。因此,使用“互斥”算法(也被稱為術(shù)語“mutex”)來管理對(duì)共享資源的訪問是公知的。有利地,本發(fā)明也將使得管理對(duì)為數(shù)個(gè)微處理器所共有的共享資源的連續(xù)訪問成為可能。
出于這個(gè)目的,本發(fā)明提出了一種用于管理微處理器中的任務(wù)的處理的方法,其特征在于,該方法包括用于并行管理第一列表和第二列表的步驟:
在于,第一列表對(duì)應(yīng)于要被實(shí)現(xiàn)的任務(wù)列表,
在于,第二列表對(duì)應(yīng)于指示了要被實(shí)現(xiàn)的任務(wù)的存在或不存在的變量列表,
在于,任務(wù)列表以“FIFO”(先進(jìn)先出)方式被管理,也就是說,被輸入到列表中的第一任務(wù)是要被執(zhí)行的第一任務(wù),并且,· 在于,通過使用在第二列表的元素上被執(zhí)行的“測(cè)試并置位(Test And Set)”功能,任務(wù)中斷被管理,其中“測(cè)試并置位”功能是不能被中斷的功能并且包括下面的步驟:-讀取考慮中的元素的值,
-把所讀取的值存儲(chǔ)在局部(local)存儲(chǔ)器中,
-給剛剛已經(jīng)被讀取的元素分配預(yù)定的值。不能與任務(wù)中斷同時(shí)被中斷的“測(cè)試并置位”類型功能的原始(original)使用使得保持一致的數(shù)據(jù)以及因而保持任務(wù)的正確運(yùn)行成為可能。當(dāng)涉及到任務(wù)列表時(shí),需要理解的是,任務(wù)不一定被列出,但是與任務(wù)相關(guān)聯(lián)的指示物(pointer)是被包含在那個(gè)列表中的元素。該列表的元素可以被擴(kuò)展到會(huì)允許清楚標(biāo)識(shí)要被執(zhí)行的任務(wù)的任何類型的元素(地址等)。本發(fā)明還提出了一種用于實(shí)施這樣的方法的詳細(xì)算法。本發(fā)明因而還提出了一種用于管理微處理器中的任務(wù)的處理的方法,其特征在于,該方法包括用于管理第一列表和第二列表的步驟:
在于,第一列表是包含了給出要由微處理器實(shí)現(xiàn)的任務(wù)的指示的元素的列表,
在于,第二列表是表示狀態(tài)的變量的列表,其中第二列表的每個(gè)變量都與第一列表的一個(gè)并且僅有一個(gè)元素相關(guān)聯(lián),并且能夠取表示第一狀態(tài)的第一值以及表示第二狀態(tài)的第
二值,
在于,全局變量被限定,其中該全局變量能夠取與在第二列表中存在的兀素一樣多的單獨(dú)的值,所述全局變量使得指向第一列表中的和第二列表中的變量成為可能,
在于,所述全局變量是意圖以這樣的方式被遞增以致以給定的次序指向第一列表和第二列表的元素的變量,其中第一列表和第二列表被看作循環(huán)列表,也就是說,以所述給定的次序,列表的第一元素被看作跟隨該列表的最后元素的元素,并且相反地,該列表的最后元素被看作在該列表的第一元素之前的元素,
在于,當(dāng)被叫做當(dāng)前任務(wù)的任務(wù)被分配給微處理器時(shí),該方法的第一步驟在于讀取第二列表的由全局變量所指向的值,在于將所讀取的值復(fù)制到第一全局變量中,并且在于在第二列表中代替所讀取的值寫表示第二狀態(tài)的值,其中該第一步驟形成單個(gè)操作,所述單個(gè)操作被叫做“測(cè)試并置位”并且不能被中斷,
在于,在其中第一局部變量已經(jīng)取了表示第一狀態(tài)的值的情況下,所述方法實(shí)施第一子方法,并且在其中第一局部變量已經(jīng)取了表示第二狀態(tài)的值的情況下,所述方法實(shí)施第二子方法, 在于,第一子方法包括下面的步驟:
-3a)更新第一列表,使得對(duì)應(yīng)于局部變量的元素給出對(duì)應(yīng)于當(dāng)前任務(wù)的指示,
-4a)第二列表的在對(duì)應(yīng)于全局值的變量之前的變量被置位為表示第一狀態(tài)的值,
_5a)執(zhí)行當(dāng)前任務(wù),
-6a)使全局變量遞增,
在于,在步驟6a)之后,如果第二列表的對(duì)應(yīng)于被遞增的全局變量的值表示第二狀態(tài),那么第一子方法返回到步驟4a),并且如果第二列表的對(duì)應(yīng)于被遞增的全局變量的值不表示第二狀態(tài),那么該方法被終止,
在于,第二子方法包括下面的步驟:
-3b)將第二局部變量初始化為值1,其中該第二局部變量意圖被用于使全局變量遞增,-4b)對(duì)第二列表的對(duì)應(yīng)于被遞增第二局部變量的值的全局變量的變量執(zhí)行“測(cè)試并置位”操作,其中所讀取的值被復(fù)制到第三局部變量中,并且第二列表的對(duì)應(yīng)于被遞增第二局部變量的值的全局變量的元素取表示第二狀態(tài)的值,
-5b)對(duì)第三局部變量進(jìn)行測(cè)試,并且執(zhí)行步驟6b),所述步驟6b)在于更新第一列表,使得對(duì)應(yīng)于被遞增第二局部變量的全局變量的變量給出了對(duì)應(yīng)于當(dāng)前任務(wù)的指示,并且接著就對(duì)第三局部變量的測(cè)試的結(jié)果而言結(jié)束用于管理任務(wù)的方法指示了第三局部變量具有表不第一狀態(tài)的值,在相反的情況下,只要第二局部變量的值嚴(yán)格小于對(duì)應(yīng)于第二列表的元素?cái)?shù)目減去I的極限值,第二局部變量的遞增就被實(shí)現(xiàn),后面是到步驟4b)的返回,并且如果該極限值被第二局部變量超過,那么該方法以當(dāng)前任務(wù)丟失結(jié)束。這樣的方法并不包含不能被中斷的任何部分。因此,這樣的方法可以在這樣的方法的執(zhí)行期間的任何時(shí)候被中斷,并且重新開始另一執(zhí)行。如前面所提及的那樣,“測(cè)試并置位”功能當(dāng)然不能被中斷。還可能的是,規(guī)定單獨(dú)中斷該算法。上面的方法的算法有兩個(gè)分支,一個(gè)分支用于執(zhí)行任務(wù),另一分支用于存儲(chǔ)要被執(zhí)行的新任務(wù)。這使得保證在執(zhí)行的過程中由任務(wù)所產(chǎn)生的值的一致性而不阻塞到達(dá)的其它任務(wù)的執(zhí)行成為可能,其中該方法能夠在任何時(shí)候被中斷。在這個(gè)詳細(xì)方法中,第三局部變量有利地與第一局部變量合并。這使得增加要被管理的變量的數(shù)目成為可能。此外,為了促進(jìn)根據(jù)本發(fā)明的方法的執(zhí)行速度,第二列表的變量?jī)?yōu)選地是布爾變量。本發(fā)明還涉及一種用于管理至少兩個(gè)微處理器的組件中的任務(wù)的處理的方法。在該方法中,每個(gè)微處理器都使用諸如上述之類的用于管理任務(wù)的方法。另外,當(dāng)共享存儲(chǔ)器可由考慮中的組件的每個(gè)微處理器訪問時(shí),提出了:
為微處理器的組件所共有的任務(wù)列表被限定,
該任務(wù)列表以“FIFO”方式被管理,也就是說被輸入到列表中的第一任務(wù)是被執(zhí)行的
第一任務(wù),
兩個(gè)索引針對(duì)微處理器的組件共同地被限定,其中第一索引指示了哪個(gè)任務(wù)是要被執(zhí)行的下一任務(wù),而第二索引指示了任務(wù)列表中的將不得不由被輸入到要被實(shí)現(xiàn)的任務(wù)列表中的下一任務(wù)所占據(jù)的位置,其中任務(wù)列表的管理以循環(huán)的方式被實(shí)現(xiàn),
對(duì)共享存儲(chǔ)器的訪問由限定如下變量的mutex機(jī)制來管理:所述變量的值表示共享存儲(chǔ)器的狀態(tài),并且所述mutex機(jī)制使用對(duì)后者變量所執(zhí)行的“測(cè)試并置位”功能,其中“測(cè)試并置位”功能是不能被中斷的功能并且包括下面的步驟:
-讀取變量的值,
-把所讀取的值存儲(chǔ)在局部存儲(chǔ)器中,
-給剛剛已經(jīng)被讀取的變量分配預(yù)定的值。微處理器的組件中的這樣的管理允許對(duì)共用資源(存儲(chǔ)器)的一致管理。這些任務(wù)可以根據(jù)它們?cè)诹斜碇械竭_(dá)的次序一個(gè)接著一個(gè)被執(zhí)行。然而,利用這個(gè)管理,當(dāng)任務(wù)必須被執(zhí)行時(shí),不可能預(yù)先知道使用共享資源的微處理器的組件中的哪個(gè)微處理器將執(zhí)行那個(gè)任務(wù)。本發(fā)明還涉及一種被存儲(chǔ)在數(shù)據(jù)介質(zhì)上的計(jì)算機(jī)程序,其中當(dāng)所述程序由諸如微處理器之類的數(shù)據(jù)處理系統(tǒng)被加載并被執(zhí)行時(shí),所述程序包括允許實(shí)施諸如上述之類的管理任務(wù)的方法的指令。最后,本發(fā)明還涉及一種微處理器,其特征在于,該微處理器包括允許實(shí)施諸如上述之類的管理任務(wù)的方法的程序的指令。


在參照示意圖給出的情況下,本發(fā)明的細(xì)節(jié)和優(yōu)點(diǎn)將更好地從下面的描述顯現(xiàn),其中:
圖1是圖示了根據(jù)本發(fā)明的任務(wù)管理方法的算法,
圖2是由數(shù)個(gè)微處理器所共享的存儲(chǔ)器的框圖,以及
圖3示出了用于管理微處理器的任務(wù)和對(duì)在圖2中利用圖表所示的共享存儲(chǔ)器的訪問的算法。
具體實(shí)施例方式圖1示出了允許實(shí)施根據(jù)本發(fā)明的用于管理任務(wù)的方法的優(yōu)選實(shí)施例的算法。各種元素在該算法中被使用。在這些元素中,特別是存在:
RowSize,其是為大于二的整數(shù)的變量。它對(duì)應(yīng)于在微處理器中能夠被保持等待的任務(wù)的數(shù)目。.r_index,其是能夠取從O到(RowSize-Ι)的所有值的整數(shù)。.JobRow,其是在數(shù)目方面為RowSize的元素列表。這些元素可以直接是任務(wù),或者可以是指示了任務(wù)的位置的指示物,或者是使得限定任務(wù)、特別是要被執(zhí)行的任務(wù)成為可能的任何其它元素。.TasRow,其在這里是變量、優(yōu)選地是布爾變量的列表。在該列表中存在與在JobRow中存在的元素一樣多的變量。該列表是JobRow的映像(ref lection),并且使得知道被存儲(chǔ)JobRow中的任務(wù)的位置成為可能。.Get,其是局部變量,只在微處理器中是可用的,并且每當(dāng)該方法在方法的執(zhí)行中被中斷時(shí),所述Get的新副本被創(chuàng)建,以便再次從開始被執(zhí)行。Get優(yōu)選地是布爾變量。

.Ν,其在這里也是局部變量。在下文將假設(shè)這是整數(shù)。如下面所提及的那樣,該局部變量被用于讀取TasRow的元素。
當(dāng)對(duì)應(yīng)于在圖1中所示的算法的程序被初始化時(shí),r_index如同TasRow列表中的所有元素那樣被置位為零。在圖1的頂端的黑點(diǎn)對(duì)應(yīng)于將在下面被描述的程序的入口尖端(pointy ofentry)。步驟I實(shí)施了在下文被叫做“測(cè)試并置位”的功能?!皽y(cè)試并置位”是不能被中斷的功能。在這種情況下,“測(cè)試并置位”將被應(yīng)用于布爾變量。該“測(cè)試并置位”功能讀取布爾變量,把這個(gè)變量的值存儲(chǔ)在緩沖存儲(chǔ)器(局部存儲(chǔ)器)中,并且接著給所讀取的布爾變量預(yù)定的值(在這種情況下,值I)。在步驟I中,“測(cè)試并置位”功能被應(yīng)用于具有索引r_index的TasRow列表中的元素。TasRow列表的這個(gè)元素的值(O或I)接著被放在局部存儲(chǔ)器Get中,并且接著TasRow中的在位置r_index的元素取值I。在步驟2中,Get的值被分析,并且根據(jù)所獲得的結(jié)果,該程序執(zhí)行該算法的左手側(cè)分支或者該算法的右手側(cè)分支。該算法的左手側(cè)分支使得在右手側(cè)分支被用于存儲(chǔ)要被執(zhí)行的新任務(wù)的同時(shí)執(zhí)行任務(wù)成為可能。因而,在步驟3a中,如果Get的值為0,則任務(wù)Job在JobRow列表中被放在位置r_index。接著,在步驟4a中,在位置r_index之前的位置值接著在TasRow列表中被置位為O0在這里應(yīng)該注意的是,所有列表的管理是循環(huán)管理(在下面的涉及數(shù)個(gè)微處理器的方法中也是如此)。因而,例如,如果RowSize為10,那么r_index可以在O到9之間變化。因而,當(dāng)r_index等于9時(shí),并且當(dāng)r_index被遞增一個(gè)單位時(shí),r_index的值變?yōu)镺。列表的這樣的循環(huán)管理對(duì)于本領(lǐng)域技術(shù)人員是完全常見的。在下一步驟、即步驟5a中,對(duì)應(yīng)于在JobRow列表中被放在位置r_index的元素的Job (工作)被執(zhí)行。只有當(dāng)該任務(wù)被完全執(zhí)行時(shí),變量r_index才被遞增一個(gè)單位(步驟6a)。在步驟7a中,TasRow列表的在位置r_index的元素被察看,其中這個(gè)位置是新的被遞增的位置。如果這個(gè)元素的值是1,那么這表明任務(wù)不得不被執(zhí)行。在這種情況下,該算法返回到步驟4a。相反地,如果沒有更多的任務(wù)要被執(zhí)行,那么該程序被完成。在圖1的底部的斑點(diǎn)表示從對(duì)應(yīng)于該算法的程序中退出。該算法的左手側(cè)分支現(xiàn)在已經(jīng)被描述,右手側(cè)分支將被考慮。這個(gè)分支涉及任務(wù)的JobRow列表中的任務(wù)存儲(chǔ)。在右手側(cè)分支的輸入處,局部變量N在步驟3b中被初始化為值I。接著,在步驟4b中,對(duì)TasRow列表的在位置r_index+N (當(dāng)然為取RowSize的模)的兀素實(shí)現(xiàn)“測(cè)試并置位”功能。第三局部變量可以在這里被用作緩沖存儲(chǔ)器。實(shí)際上,在這里使用第三變量不是有用的,其中局部變量Get可用于堆積(stack)被分配給微處理器并且不能立即被執(zhí)行的任務(wù)。在步驟4b中的“測(cè)試并置位”功能的結(jié)果接著被記錄在局部變量Get中。如果局部變量Get接著等于O (步驟5b),那么位置r_index+N接著在JobRow列表中是空閑的,并且為已經(jīng)發(fā)起程序的當(dāng)前任務(wù)的“Job”任務(wù)接著在JobRow中被存儲(chǔ)在位置r_index+N (當(dāng)然是取RowSize的模)上。該任務(wù)在等待列表中,程序因此被完成。相反地,如果在步驟5b中Get的值不是O,也就是說Get的值等于I,那么使N遞增一個(gè)單位是適當(dāng)?shù)模员憧闯鯦obRow任務(wù)列表中的下一地方是否是空閑的。JobRow中的所有地方接著被察看,直到空閑的地方被找到(環(huán)4b、5b、6c、7c、4b )。如果任務(wù)的列表被完全填充(步驟7c),那么當(dāng)前任務(wù)“Job”因此丟失。那么,該程序也被完成。在這里剛剛已經(jīng)描述的用于管理任務(wù)的方法具有該方法并不包含不是中斷的任何部分的優(yōu)點(diǎn)。然而,這里記得的是,“測(cè)試并置位”功能不能被中斷。上面所述的以及在圖1中所圖示的方法可以在其執(zhí)行期間的任何時(shí)候被中斷,以便重新開始另一執(zhí)行。在單獨(dú)中斷的情況下,該方法的執(zhí)行被暫停,直到下一執(zhí)行結(jié)束為止。這里所提出的算法使得在執(zhí)行的過程中的任務(wù)一被完成就在任務(wù)的列表中記錄任務(wù)成為可能。這些任務(wù)以其到達(dá)的次序被存儲(chǔ)和被讀取。因此,這是“FIFO”(先進(jìn)先出)管理。這個(gè)算法的實(shí)施使得提供由在執(zhí)行d過程中的任務(wù)所產(chǎn)生的值的一致性而不阻塞到達(dá)的其它任務(wù)成為可能,因?yàn)橄鄬?duì)應(yīng)的方法可以在任何時(shí)候被中斷。由于被用于任務(wù)的執(zhí)行和存儲(chǔ)的算法基于不是中斷的并且因此不能被中斷的功能、即“測(cè)試并置位”功能的事實(shí),特別是這個(gè)一致性被獲得。 本發(fā)明還規(guī)定管理微處理器的組件中的任務(wù),其中這個(gè)組件具有共享存儲(chǔ)器,該組件的微處理器中的每個(gè)都可以訪問所述共享存儲(chǔ)器。借助于非限制的并且簡(jiǎn)單說明的例子,圖2示出了四個(gè)微處理器,被叫做CPU A、CPU B、CPU C和CPU D0這里例如假設(shè),這四個(gè)微處理器是全部相同的,但是當(dāng)然本發(fā)明還在并不相似的微處理器的情況下運(yùn)行。在圖2的中心處的存儲(chǔ)器包含可以由微處理器組件的四個(gè)微處理器訪問和修改的數(shù)據(jù)。仍然借助于非限制的例子,這里假設(shè),每個(gè)微處理器都具有四個(gè)中斷層(“Level”)。為了系統(tǒng)的一致性,提供安全機(jī)制是適當(dāng)?shù)模霭踩珯C(jī)制使得當(dāng)使用公用數(shù)據(jù)的另一任務(wù)已經(jīng)在執(zhí)行的過程中時(shí)擱置應(yīng)被執(zhí)行的任務(wù)成為可能。在這里用中斷的數(shù)個(gè)層中的每個(gè)來管理數(shù)個(gè)微處理器是方便的。因而找到鎖定機(jī)制(locking mechanism)是方便的,所述鎖定機(jī)制使得為每個(gè)程序的執(zhí)行都提供數(shù)據(jù)一致性成為可能。因而想要的是,保證共享存儲(chǔ)器由所有任務(wù)順序地訪問,也就是說每個(gè)任務(wù)都在另一任務(wù)開始之前被完全地完成。如借助于圖2中的例子所示出的那樣,管理例如如下情形是想要的:在所述情形中,CPUA的第3層、CPU A的第I層、CPU B的第4層、CPU B的第2層、CPU C的第3層和CPU D的第I層使得同時(shí)訪問相同的存儲(chǔ)器是必需的。在圖3中所示的算法意圖管理針對(duì)數(shù)個(gè)微處理器的任務(wù),并且意圖管理在這些微處理器之間共享的存儲(chǔ)器。這里,首先提出的是,微處理器中的每個(gè)都根據(jù)諸如上面參照?qǐng)D1描述的方法之類的方法來管理微處理器中的每個(gè)的任務(wù)。在圖3中所示的方法涉及管理在微處理器的組件(在這個(gè)情況下也就是說,微處理器CPU A、CPU B、CPU V和CPU D)的級(jí)別的任務(wù)。本發(fā)明在這里提出了使用公用任務(wù)列表(在這里也被叫做JobRow)。和前面相同的名稱在這里將被再次用于相似的元素。然而,在下面的描述中,元素涉及微處理器的組件和共享存儲(chǔ)器。在圖3的算法中所示的方法因而特別是使用下面的元素:
JobRow,已經(jīng)在上面被提及。JobRow是涉及微處理器的組件的任務(wù)列表, RowSize,其是可以在JobRow中被找到的元素的數(shù)目,
r_index,其是可以達(dá)到RowSize值的整數(shù)變量。在這里將假設(shè),r_index可以取從O到RowSize-Ι的值。如將在下面被看出的那樣,該方法規(guī)定讀取任務(wù),以便在一方面執(zhí)行這些任務(wù),而在另一方面把要被執(zhí)行的任務(wù)放在任務(wù)列表中。索引r_index被用于讀取(“r”代表“讀取”),
像r_index那樣的w_index是能夠取RowSize值的整數(shù)變量。在實(shí)踐中,w_index將取從O到RowSize-1的值。這個(gè)索引w_index被用于堆積JobRow任務(wù)列表中的任務(wù)(“w”代表“寫”),
mutex,這個(gè)變量指示了共享存儲(chǔ)器的狀態(tài)。mutex特別是被用于阻塞對(duì)這個(gè)存儲(chǔ)器的訪問。在實(shí)踐中,布爾變量將被選擇用于mutex,當(dāng)存儲(chǔ)器是可訪問的時(shí)取值O,或者當(dāng)存儲(chǔ)器被阻塞時(shí)取值1,
Get,在這種情況下,這是在這里也優(yōu)選地被選擇為布爾變量的局部變量。開始,這些變量通過將r_index、w_index和mutex的值置位為O而被初始化。這里考慮的是,RowSize至少等于3。在下面的方法中,任務(wù)列表JobRow以“FIFO”方式被管理。如之前已經(jīng)被提及的那樣,JobRow列表作為循環(huán)列表被管理。所有要被執(zhí)行的任務(wù)在這個(gè)循環(huán)列表中被分組。在JobRow列表中的兩個(gè)任務(wù)之間具有一個(gè)或多個(gè)“空閑地方”是不可能的。下面所述的方法簡(jiǎn)單地規(guī)定要被執(zhí)行的第一任務(wù)(跟著索引r_index)的執(zhí)行,以及規(guī)定借助于w_index列表堆積到達(dá)JobRow任務(wù)列表的任務(wù)。特別是用于管理r_index和w_index索引的對(duì)共享存儲(chǔ)器的訪問實(shí)施使用相同名稱的變量以及“測(cè)試并置位”功能的mutex機(jī)制。因而,圖3的第一步驟、即步驟al規(guī)定對(duì)mutex變量執(zhí)行“測(cè)試并置位”功能。該變量表示由微處理器組件的所有微處理器所共享的存儲(chǔ)器的狀態(tài)?!皽y(cè)試并置位”功能的結(jié)果被放在局部變量Get中。如對(duì)于“測(cè)試并置位”功能是常見的那樣,mutex變量因此取值1,而Get值等于O或等于I。在步驟a2中,如果Get值并不等于0,那么該過程返回到步驟al,這被實(shí)現(xiàn),直到共享存儲(chǔ)器是可訪問的并且因此Get值等于O為止。在步驟a3中,Get值被重新初始化為O (可選的),并且變量r_index與變量w_index相比較。實(shí)際上,這兩個(gè)變量是相等的,這表明任務(wù)列表是空的。如果是這種情況,那么該方法接著跟隨在圖3中所示的對(duì)應(yīng)于任務(wù)的執(zhí)行的算法的左手側(cè)分支。右手側(cè)分支(在步驟a4層分離)涉及任務(wù)列表中的任務(wù)的堆積。下面的描述首先描述了在圖1中所示的算法的左手側(cè)分支(步驟bl到步驟b7),并且接著描述了在圖1中所示的算法的右手側(cè)分支。在左手側(cè)分支的第一步驟(步驟bl)中,當(dāng)前的任務(wù)“Job”在位置w_index被復(fù)制到JobRow任務(wù)列表中。此外,變量w_index被遞增一個(gè)單位。如已經(jīng)提及的那樣,這個(gè)遞增被實(shí)現(xiàn)為取RowSize的模。由于此,當(dāng)w_index必須取值RowSize時(shí),w_index取值O。因?yàn)樗?w_indeX 現(xiàn)在已經(jīng)被修改過,所以存儲(chǔ)器可以被釋放,并且mutex值在步驟b2中被置為O。在JobRow任務(wù)列表中在位置r_index的任務(wù)接著被執(zhí)行(步驟b3)。如前面那樣,針對(duì)參照?qǐng)D1所述的方法,一旦任務(wù)被完成,位置索引r_index就可以被遞增。然而,在這里需要保證對(duì)共享存儲(chǔ)器的訪問是可用的。因此,在步驟b4中,對(duì)mutex變量實(shí)現(xiàn)“測(cè)試并置位”功能。如之前已經(jīng)被建議的那樣,針對(duì)在圖1中所圖示的方法,選擇附加的局部變量是沒有用的。變量Get在這里被再次使用。只要這個(gè)Get變量等于1,也就是說只要共享變量由另一資源使用,就存在到步驟b4的返回。然而,當(dāng)存儲(chǔ)器變?yōu)榭稍L問的時(shí),Get接著取值O,并且繼續(xù)到步驟b6是可能的,所述步驟b6規(guī)定使索引r_index遞增一個(gè)單位。一旦索引r_index被遞增,索引r_index就被再次與索引w_index相比較。如果這兩個(gè)索引是相等的,也就是說如果任務(wù)列表是空的,那么該程序可以被完成。然而,在離開該程序之前,在步驟a5做好準(zhǔn)備,以通過將值O給予mutex變量來自由訪問共享存儲(chǔ)器。在相反的情況下(在步驟b7中,r_index不同于w_index),存在到步驟b2的返回,以便實(shí)現(xiàn)下一任務(wù)。在圖3中所示的算法的左手側(cè)分支現(xiàn)在已經(jīng)被描述,描述的繼續(xù)將涉及該算法的右手側(cè)分支。變量(w_index+l)的值接著與變量r_index (當(dāng)然為取RowSize的模)的值進(jìn)行比較。如果這些值是相等的,那么在步驟dl中,值I被分配給局部變量Get ;這使得看見任務(wù)列表是裝滿的是可能的。還可能的是,在這里使用局部變量Get,并且不限定特殊的局部變量,因?yàn)樵撟兞縂et在任務(wù)由方法執(zhí)行之后(或者當(dāng)新的任務(wù)被添加到任務(wù)列表時(shí))將被復(fù)位為O。在步驟cl中,如果任務(wù)列表JobRow不是滿的,那么當(dāng)前任務(wù)“Job”接著在位置w_index進(jìn)入JobRow列表。一旦該寫被完成,索引w_index就可以被遞增一個(gè)單位。隨著任務(wù)被正確地堆積并且索引被更新,該程序可以被終止。然而,為了自由訪問共享存儲(chǔ)器,將變量mutex重新初始化為值O的步驟a5被實(shí)現(xiàn)。對(duì)應(yīng)于在圖3中所示的算法的方法沒有阻塞。該方法從不導(dǎo)致潛在地?zé)o限擱置微處理器。肯定的是,如果所有處理器只在該算法(圖3)的情況下使用涉及共享存儲(chǔ)器的變量mutex,那么這樣的阻塞被避免。以這種方式,如果微處理器具有通過訪問共享數(shù)據(jù)來執(zhí)行的任務(wù),那么該微處理器將把這個(gè)任務(wù)置于任務(wù)列表中,并且當(dāng)共享資源變?yōu)榭捎玫臅r(shí),該微處理器或者另一微處理器將順序地執(zhí)行這個(gè)任務(wù)。所描述的算法具有如下特征:如果數(shù)個(gè)微處理器共享公用資源以及由于公用資源引起的相同任務(wù)列表,那么當(dāng)任務(wù)執(zhí)行被要求時(shí),不可能知道哪個(gè)微處理器將執(zhí)行該任務(wù)。然而,這個(gè)算法保證了,通過使用“FIFO”類型的管理,該任務(wù)將盡可能快地由共享該資源的微處理器中的一個(gè)來執(zhí)行。本發(fā)明并不限于上面作為非限制例子所描述的方法。本發(fā)明涉及在下面的權(quán)利要求的上下文中的這樣的方法的所有變形實(shí)施例。本發(fā)明還涉及允許實(shí)施諸如上述之類的方法的微處理器。
權(quán)利要求
1.一種用于管理微處理器中的任務(wù)的處理的方法,其特征在于,該方法包括用于管理第一列表和第二列表的步驟: 在于,第一列表是包含給出要由微處理器實(shí)現(xiàn)的任務(wù)的指示的元素的列表, 在于,第二列表是表示狀態(tài)的變量的列表,其中第二列表的每個(gè)變量都與第一列表的一個(gè)并且僅有一個(gè)元素相關(guān)聯(lián),并且能夠取表示第一狀態(tài)的第一值以及表示第二狀態(tài)的第二值, 在于,全局變量被限定,其中該全局變量能夠取與在第二列表中存在的兀素一樣多的單獨(dú)的值,其中所述全局變量使得指向第一列表和第二列表中的變量成為可能, 在于,所述全局變量是意圖以這樣的方式被遞增以致以給定的次序指向第一列表和第二列表的元素的變量,其中第一列表和第二列表被看作循環(huán)列表,也就是說,以所述給定的次序,列表的第一元素被看作跟隨著列表的最后元素的元素,并且相反地,列表的最后元素被看作在列表的第一元素之前的元素, 在于,當(dāng)被叫做當(dāng)前任務(wù)的任務(wù)被分配給微處理器時(shí),該方法的第一步驟在于讀取第二列表的由全局變量所指向的值,在于將所讀取的值復(fù)制到第一局部變量中,并且在于在第二列表中代替所讀取的值寫表示第二狀態(tài)的值,其中該第一步驟形成單個(gè)操作,所述單個(gè)操作被叫做“測(cè)試并置位”并且不能被中斷而且包括下面的步驟: -讀取考慮中的元素的值, -把所讀取的值存儲(chǔ)在局部存儲(chǔ)器中, -給剛剛已經(jīng)被讀取的元素分配預(yù)定的值, 在于,在第一局部變 量已經(jīng)取了表示第一狀態(tài)的值的情況下,所述方法實(shí)施第一子方法,并且在第一局部變量已經(jīng)取了表示第二狀態(tài)的值的情況下,所述方法實(shí)施第二子方法, 在于,第一子方法包括下面的步驟: -3a)更新第一列表,使得對(duì)應(yīng)于局部變量的元素給出對(duì)應(yīng)于當(dāng)前任務(wù)的指示, -4a)第二列表的在對(duì)應(yīng)于全局值的變量之前的變量被置位為表示第一狀態(tài)的值, _5a)執(zhí)行當(dāng)前任務(wù), -6a)使全局變量遞增, 在于,在步驟6a)之后,如果第二列表的對(duì)應(yīng)于被遞增的全局變量的值表示第二狀態(tài),那么第一子方法返回到步驟4a),并且如果第二列表的對(duì)應(yīng)于被遞增的全局變量的值不表示第二狀態(tài),那么該方法被終止, 在于,第二子方法包括下面的步驟: -3b)將第二局部變量初始化為值1,其中該第二局部變量意圖被用于使全局變量遞增,-4b)對(duì)第二列表的對(duì)應(yīng)于被遞增第二局部變量的值的全局變量的變量執(zhí)行“測(cè)試并置位”操作,其中所讀取的值被復(fù)制到第三局部變量中,并且第二列表的對(duì)應(yīng)于被遞增第二局部變量的值的全局變量的元素取表示第二狀態(tài)的值, -5b)對(duì)第三局部變量進(jìn)行測(cè)試,并且執(zhí)行步驟6b),所述步驟6b)在于更新第一列表,使得對(duì)應(yīng)于被遞增第二局部變量的全局變量的變量給出了對(duì)應(yīng)于當(dāng)前任務(wù)的指示,并且接著就對(duì)第三局部變量的測(cè)試的結(jié)果而言結(jié)束用于管理任務(wù)的方法指示了第三局部變量具有表不第一狀態(tài)的值,在相反的情況下,只要第二局部變量的值嚴(yán)格小于對(duì)應(yīng)于第二列表的元素?cái)?shù)目減去I的極限值,第二局部變量的遞增就被實(shí)現(xiàn),后面是到步驟4b)的返回,并且如果該極限值被第二局部變量超過,那么該方法以當(dāng)前任務(wù)丟失結(jié)束。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,第三局部變量與第一局部變量合并。
3.根據(jù)權(quán)利要求1至2之一所述的方法,其特征在于,第二列表的變量是布爾變量。
4.一種用于管理至少兩個(gè)微處理器的組件中的任務(wù)的處理的方法,其特征在于,每個(gè)微處理器都使用如在權(quán)利要求1至3之一中所述的用于管理任務(wù)的方法。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,共享存儲(chǔ)器是由考慮中的組件的每個(gè)微處理器可訪問的, 在于,為微處理器的組件所共有的任務(wù)列表被限定, 在于,該任務(wù)列表以“FIFO”方式 被管理,也就是說被輸入到列表中的第一任務(wù)是所執(zhí)行的第一任務(wù), 在于,兩個(gè)索引針對(duì)微處理器的組件共同地被限定,其中第一索引指示了哪個(gè)任務(wù)是要被執(zhí)行的下一任務(wù),而第二索引指示了將不得不由被輸入到要被實(shí)現(xiàn)的任務(wù)列表中的下一任務(wù)所占據(jù)的任務(wù)列表中的位置,其中任務(wù)列表的管理以循環(huán)的方式被實(shí)現(xiàn), 在于,對(duì)共享存儲(chǔ)器的訪問通過限定如下變量的“mutex”機(jī)制管理:所述變量的值表示共享存儲(chǔ)器的狀態(tài),并且所述“mutex”機(jī)制使用對(duì)后者變量所執(zhí)行的“測(cè)試并置位”功能,其中“測(cè)試并置位”功能是不能被中斷的功能并且包括下面的步驟: -讀取變量的值, -把所讀取的值存儲(chǔ)在局部存儲(chǔ)器中, -給剛剛已經(jīng)被讀取的變量分配預(yù)定的值。
6.一種被存儲(chǔ)在數(shù)據(jù)介質(zhì)上的計(jì)算機(jī)程序,當(dāng)所述程序由諸如微處理器之類的數(shù)據(jù)處理系統(tǒng)加載并執(zhí)行時(shí),所述程序包括允許實(shí)施根據(jù)權(quán)利要求1至5中的任意一個(gè)權(quán)利要求所述的用于管理任務(wù)的方法的指令。
7.—種微處理器,其特征在于,該微處理器包括允許實(shí)施根據(jù)權(quán)利要求1至5中的任意一個(gè)權(quán)利要求所述的用于管理任務(wù)的方法的程序的指令。
全文摘要
這個(gè)方法包括用于并行管理第一列表和第二列表的步驟。第一列表對(duì)應(yīng)于要被實(shí)現(xiàn)的任務(wù)列表。第二列表對(duì)應(yīng)于指示了要被實(shí)現(xiàn)的任務(wù)的存在或不存在的變量列表。任務(wù)列表以“FIFO”(先進(jìn)先出)方式被管理,也就是說,被輸入到列表中的第一任務(wù)是要被執(zhí)行的第一任務(wù)。并且,通過使用對(duì)第二列表的元素所執(zhí)行的“測(cè)試并置位”功能,任務(wù)中斷被管理,其中“測(cè)試并置位”功能是不能被中斷的功能并且包括下面的步驟-讀取考慮中的元素的值,-把所讀取的值存儲(chǔ)在局部存儲(chǔ)器中,-給剛剛已經(jīng)被讀取的元素分配預(yù)定的值。
文檔編號(hào)G06F9/48GK103154894SQ201180045180
公開日2013年6月12日 申請(qǐng)日期2011年8月9日 優(yōu)先權(quán)日2010年9月21日
發(fā)明者O.于亞爾 申請(qǐng)人:法國(guó)大陸汽車公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
沾益县| 华容县| 政和县| 嵩明县| 宜都市| 巩留县| 玉林市| 古丈县| 新宁县| 高要市| 泰州市| 邵阳县| 蓝山县| 北票市| 榕江县| 紫阳县| 晋城| 舞钢市| 和平区| 昆山市| 缙云县| 利津县| 恩施市| 且末县| 通化县| 余干县| 天长市| 广德县| 新沂市| 延吉市| 贵溪市| 无为县| 巴青县| 淮阳县| 南和县| 介休市| 新化县| 时尚| 缙云县| 资中县| 靖江市|