專(zhuān)利名稱(chēng):多處理器系統(tǒng)以及用于使計(jì)算機(jī)執(zhí)行多處理器系統(tǒng)的中斷控制方法的程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多處理器系統(tǒng)以及用于使計(jì)算機(jī)執(zhí)行多處理器系統(tǒng)的中 斷控制方法的程序,尤其涉及一邊受理來(lái)自外部設(shè)備的中斷處理、 一邊并 行執(zhí)行程序處理的多處理器系統(tǒng)以及用于使計(jì)算機(jī)執(zhí)行多處理器系統(tǒng)的 中斷控制方法的程序。
背景技術(shù):
使用于特定裝置的處理器被稱(chēng)作嵌入式系統(tǒng)(built in system)。近年 來(lái),在嵌入式系統(tǒng)中采用多處理器或多線(xiàn)程處理器的情況也較多。多處理器的采用有利于裝置的低時(shí)鐘化或響應(yīng)性的提高。另外,尤其 在便攜式裝置中,由于還有利于減少耗電而希望采用多處理器。但是,在判斷新開(kāi)發(fā)的處理器是否正常工作時(shí)需要花費(fèi)時(shí)間和成本。 因此,在軟件的領(lǐng)域上,所使用的結(jié)果只要是有實(shí)際成績(jī)的處理器能夠挪 用(divert),就希望挪用它。因而,在對(duì)嵌入式系統(tǒng)進(jìn)行多處理器化時(shí), 需要挪用以前所使用的單處理器的軟件。作為將單處理器挪用到多處理器的現(xiàn)有技術(shù),例如有專(zhuān)利文獻(xiàn)l。專(zhuān) 利文獻(xiàn)1的發(fā)明是將基于pITRON (注冊(cè)商標(biāo))的單處理器用的操作系統(tǒng) (OS: Operating System)轉(zhuǎn)用到多處理器的技術(shù)。專(zhuān)利文獻(xiàn)1:特開(kāi)平8—2975S1號(hào)公報(bào)但是,在單處理器中,在處理器以規(guī)定單位(任務(wù)(task))執(zhí)行程 序期間,在任務(wù)側(cè)將處理器設(shè)定為中斷禁止。另外,在單處理器中,有時(shí) 在中斷級(jí)別較低的中斷處理中禁止進(jìn)行處理的執(zhí)行中的中斷。再有,在單 處理器中,當(dāng)對(duì)調(diào)用OS的服務(wù)調(diào)用進(jìn)行發(fā)布時(shí),需要在服務(wù)調(diào)用的發(fā)布 到OS的釋放之前的整個(gè)期間內(nèi)禁止中斷處理。
在將上述的規(guī)格挪用到多處理器時(shí),盡管多處理器具有多個(gè)處理器 部,還是無(wú)法并行執(zhí)行中斷處理和任務(wù)處理。另外,與優(yōu)先級(jí)無(wú)關(guān)地發(fā)生中斷處理處于等待狀態(tài)的期間,因此存在 程序的處理效率降低的缺點(diǎn)。圖11是用于對(duì)中斷處理處于等待狀態(tài)的現(xiàn)有技術(shù)進(jìn)行說(shuō)明的圖。在 低優(yōu)先級(jí)的任務(wù)的執(zhí)行中,為了防止該任務(wù)因更高優(yōu)先級(jí)的任務(wù)或中斷處 理而導(dǎo)致中斷的情況,將處理器設(shè)定為禁止中斷狀態(tài)。結(jié)果,后面的任務(wù) 或中斷處理不會(huì)起動(dòng)而等待,直到低優(yōu)先級(jí)的任務(wù)結(jié)束為止。發(fā)明內(nèi)容本發(fā)明是鑒于上述問(wèn)題而提出的,其目的在于提供一種在多處理器系 統(tǒng)中能夠進(jìn)行任務(wù)和中斷處理的并行處理,另外能夠縮短任務(wù)等的等待時(shí) 間,進(jìn)而并行處理的處理效率高的多處理器系統(tǒng)以及用于使計(jì)算機(jī)執(zhí)行多 處理器系統(tǒng)的中斷控制方法的程序。為了解決以上的課題,本發(fā)明的多處理器系統(tǒng),具備多個(gè)單位處理器, 該多處理器系統(tǒng)具備旗語(yǔ)設(shè)定單元,其將表示對(duì)資源競(jìng)爭(zhēng)優(yōu)先的權(quán)利的 旗語(yǔ)與多個(gè)資源每一個(gè)建立對(duì)應(yīng)而可識(shí)別地進(jìn)行設(shè)定;旗語(yǔ)請(qǐng)求判斷單元,當(dāng)上述單位處理器中的第一單位處理器進(jìn)行了在上述旗語(yǔ)設(shè)定單元中 所設(shè)定的旗語(yǔ)的取得請(qǐng)求時(shí),判斷該請(qǐng)求是否為請(qǐng)求由第二單位處理器取得的旗語(yǔ)即取得中的旗語(yǔ)的請(qǐng)求;和排他控制單元,當(dāng)由上述旗語(yǔ)請(qǐng)求判 斷單元判斷上述請(qǐng)求為請(qǐng)求取得中旗語(yǔ)的請(qǐng)求時(shí),使第一單位處理器的請(qǐng) 求等待,另一方面,當(dāng)由上述旗語(yǔ)請(qǐng)求判斷單元判斷上述請(qǐng)求為請(qǐng)求取得 中旗語(yǔ)以外的旗語(yǔ)的請(qǐng)求時(shí),允許所請(qǐng)求的旗語(yǔ)的取得。另外,本發(fā)明的多處理器系統(tǒng),其特征在于,具備中斷禁止單元,該 中斷禁止單元禁止對(duì)允許取得旗語(yǔ)的第一單位處理器的基于分發(fā)的任務(wù) 切換、從外部請(qǐng)求的中斷處理、由其他單位處理器所請(qǐng)求的中斷處理的至 少一個(gè)。另外,本發(fā)明的多處理器系統(tǒng),其特征在于,單位處理器為了對(duì)在多 處理器內(nèi)部所發(fā)生的任務(wù)和在外部所發(fā)生的句柄進(jìn)行處理而請(qǐng)求旗語(yǔ)的 取得,上述排他控制單元在用于在務(wù)處理的旗語(yǔ)取得請(qǐng)求的彼此之間、用
于任務(wù)處理的旗語(yǔ)取得請(qǐng)求與用于句柄處理的旗語(yǔ)取得請(qǐng)求之間、用于句 柄處理的旗語(yǔ)取得請(qǐng)求的彼此之間,等待或允許旗語(yǔ)的取得。另外,本發(fā)明的多處理器系統(tǒng),其特征在于,當(dāng)上述排他控制單元允 許了由上述第一單位處理器所請(qǐng)求的旗語(yǔ)的取得時(shí),對(duì)上述第一單位處理 器進(jìn)行自旋鎖。另外,本發(fā)明的多處理器系統(tǒng),其特征在于,上述旗語(yǔ)設(shè)定單元通過(guò) 對(duì)多個(gè)旗語(yǔ)的每一個(gè)添加識(shí)別信息而可識(shí)別地進(jìn)行設(shè)定,并且對(duì)多個(gè)旗語(yǔ) 的至少一部分的旗語(yǔ)添加公共的識(shí)別信息,對(duì)添加有公共的該識(shí)別信息的 多個(gè)旗語(yǔ)的每一個(gè)設(shè)定管理區(qū)域,上述旗語(yǔ)請(qǐng)求判斷單元根據(jù)識(shí)別信息, 按各管理區(qū)域判斷第一單位處理器進(jìn)行取得請(qǐng)求的旗語(yǔ)是否為由第二單 位處理器取得的取得中旗語(yǔ)。另外,使計(jì)算機(jī)執(zhí)行本發(fā)明的多處理器系統(tǒng)的中斷控制方法的程序, 使計(jì)算機(jī)執(zhí)行適用于具備多個(gè)單位處理器的多處理器系統(tǒng)的多處理器系 統(tǒng)的中斷控制方法,其包括旗語(yǔ)請(qǐng)求判斷步驟,當(dāng)上述單位處理器中的 第一單位處理器進(jìn)行了可識(shí)別地設(shè)定的旗語(yǔ)的取得請(qǐng)求時(shí),判斷該請(qǐng)求是 否為請(qǐng)求由第二單位處理器取得的旗語(yǔ)即取得中旗語(yǔ)的請(qǐng)求;排他控制步 驟,在上述旗語(yǔ)請(qǐng)求判斷步驟中,當(dāng)判斷上述請(qǐng)求為請(qǐng)求取得中旗語(yǔ)的請(qǐng) 求時(shí),使第一單位處理器的請(qǐng)求等待,另一方面,當(dāng)判斷上述請(qǐng)求為請(qǐng)求 取得中旗語(yǔ)以外的旗語(yǔ)的請(qǐng)求時(shí),允許所請(qǐng)求的旗語(yǔ)的取得;和中斷禁止步驟,將在上述排他控制步驟中允許取得旗語(yǔ)的單位處理器設(shè)定為中斷禁 止。
圖1是表示一般的多處理器系統(tǒng)中的單位處理器的結(jié)合的例子的圖。圖2是表示適用了本發(fā)明的一實(shí)施方式的多處理器的便攜式電話(huà)的功 能結(jié)構(gòu)的框圖。圖3是用于對(duì)本發(fā)明的一實(shí)施方式的多處理器進(jìn)行說(shuō)明的圖。 圖4是用于對(duì)本實(shí)施方式的多處理器系統(tǒng)的中斷控制方法進(jìn)行說(shuō)明的 流程圖。圖5是用于對(duì)圖4的流程圖所示的HW旗語(yǔ)(semaphore)的取得成 功與否進(jìn)行說(shuō)明的圖。圖6是用于對(duì)由本發(fā)明的一實(shí)施方式的程序控制部而實(shí)現(xiàn)的HW旗語(yǔ)的取得處理進(jìn)行說(shuō)明的流程圖。圖7是用于對(duì)由圖6所示的流程圖而實(shí)現(xiàn)的并行工作進(jìn)行說(shuō)明的圖。 圖8是用于對(duì)本發(fā)明的一實(shí)施方式的程序控制部釋放HW旗語(yǔ)的處理進(jìn)行說(shuō)明的流程圖。圖9是用于對(duì)本發(fā)明的一實(shí)施方式的HW旗語(yǔ)部13釋放HW旗語(yǔ)的處理進(jìn)行說(shuō)明的流程圖。圖IO是用于對(duì)本發(fā)明的一實(shí)施方式的HW旗語(yǔ)釋放進(jìn)行說(shuō)明的圖。 圖11是用于對(duì)中斷處理處于待機(jī)狀態(tài)的現(xiàn)有技術(shù)進(jìn)行說(shuō)明的圖。 符號(hào)說(shuō)明ll一中斷控制部;12 —存儲(chǔ)器控制部;13 —硬件旗語(yǔ)部;30—存儲(chǔ)器;105—程序控制部;106—驅(qū)逐禁止標(biāo)志(expelling prohibitingflag) ; 230—PC; 305—PSR; P0、 Pl、 P2、 P3 —單位處理器。
具體實(shí)施方式
以下,參照附圖,說(shuō)明本發(fā)明所涉及的多處理器系統(tǒng)以及用于使計(jì)算 機(jī)執(zhí)行多處理器系統(tǒng)的中斷控制方法的程序的一實(shí)施方式。本實(shí)施方式將本實(shí)施方式的多處理器系統(tǒng)構(gòu)成為適用于便攜式電話(huà) 的嵌入式系統(tǒng)。多處理器系統(tǒng)結(jié)合多個(gè)處理器(單位處理器)而構(gòu)成。圖 1表示一般多處理器系統(tǒng)中的單位處理器的結(jié)合的例子。圖1 (a) 、 (b)所示的多處理器均為被稱(chēng)作對(duì)稱(chēng)型多處理器(SMP: symmetric multi-processor)的結(jié)構(gòu),構(gòu)成為將多個(gè)單位處理器Pu以共享存 儲(chǔ)器的方式來(lái)結(jié)合。(a)所示的結(jié)構(gòu)被稱(chēng)作多處理器。另外,(b)所示 的結(jié)構(gòu)被稱(chēng)作多線(xiàn)程處理器。多線(xiàn)程處理器在與多處理器相比共享預(yù)算器 的這一點(diǎn)上來(lái)講單位處理器Pu更密切地結(jié)合。在本實(shí)施方式中,舉出將多處理器系統(tǒng)構(gòu)成為多處理器的例子,進(jìn)行 說(shuō)明。此外,本實(shí)施方式也可構(gòu)成為多處理器、多線(xiàn)程處理器的任一個(gè)。圖2是表示適用了本發(fā)明的一實(shí)施方式的多處理器系統(tǒng)的便攜式電話(huà) 1的功能結(jié)構(gòu)的框圖。在圖2中便攜式電話(huà)1包括CPU (Central Processing Unit) 10、閃速ROM (flashROM) 20、存儲(chǔ)器30、緩沖器(buffer ) 40、
無(wú)線(xiàn)部50、 IrDA (Infrared Data Association)部60、音頻(Audio)部70、 定時(shí)器(Timer) 80、 USB (Universal Serial Bus)接口部90、鍵(KEY) 操作部100、 LCD (Liquid Crystal Display) 110和相機(jī)(Camera)部120, CPU10、閃速ROM20、存儲(chǔ)器30和緩沖器40由總線(xiàn)相連。另外,無(wú)線(xiàn) 部50、 IrDA部60、音頻部70、定時(shí)器80、 USB接口部90、鍵操作部100、 LCD110和相機(jī)部120,與CPUIO直接連接。CPUIO, 一邊并行處理多個(gè)任務(wù)、 一邊控制便攜式電話(huà)l整體,并且 根據(jù)從鍵操作部100所輸入的各種指示信號(hào),讀出并執(zhí)行存儲(chǔ)器30所存 儲(chǔ)的操作系統(tǒng)程序(OS: Operating System)或各種應(yīng)用程序,根據(jù)從無(wú) 線(xiàn)部50、音頻部70或相機(jī)部120等的外圍芯片所輸入的中斷信號(hào)來(lái)執(zhí)行 中斷句柄(handler)。此外,OS是與多處理器對(duì)應(yīng)的OS。另外,CPU10將各種處理結(jié)果保存在閃速ROM20或存儲(chǔ)器30。圖3是用于對(duì)在圖2中表示為CPUIO的本實(shí)施方式的多處理器進(jìn)行 說(shuō)明的圖。本實(shí)施方式的多處理器是對(duì)多個(gè)單位處理器P0、 Pl、 P2、 P3 進(jìn)行組合后,使多個(gè)上述單位處理器在多個(gè)操作系統(tǒng)下進(jìn)行工作的多處理 器。如圖3所示,多處理器包括多個(gè)單位處理器P0 P3、中斷控制部ll、 存儲(chǔ)器控制部12、硬件旗語(yǔ)(以下HW旗語(yǔ))部13。HW旗語(yǔ)部13為設(shè)定HW旗語(yǔ)的結(jié)構(gòu),該HW旗語(yǔ)是由哪一個(gè)單位 處理器優(yōu)先執(zhí)行進(jìn)行競(jìng)爭(zhēng)的處理(在本實(shí)施方式中占用硬件資源的處理) 的權(quán)利。在本實(shí)施方式中,在HW旗語(yǔ)部13可識(shí)別地設(shè)定有與硬件資源 對(duì)應(yīng)的多個(gè)HW旗語(yǔ)。為了識(shí)別,對(duì)多個(gè)HW旗語(yǔ)的每一個(gè)添加識(shí)別信息 (ID)。請(qǐng)求HW旗語(yǔ)的服務(wù)調(diào)用是通過(guò)指定HW旗語(yǔ)的ID而進(jìn)行的。只有通過(guò)該服務(wù)調(diào)用來(lái)可取得HW旗語(yǔ)的單位處理器,才能夠使用與 該HW旗語(yǔ)對(duì)應(yīng)的硬件資源來(lái)執(zhí)行處理。另外,在本實(shí)施方式中,在必要 期間內(nèi)禁止對(duì)可取得HW旗語(yǔ)的單位處理器的中斷。HW旗語(yǔ)部13,與后面敘述的程序控制部105協(xié)作,當(dāng)單位處理器中 的第一單位處理器(例如單位處理器PO)進(jìn)行了在HW旗語(yǔ)部13中所設(shè) 定的旗語(yǔ)的取得請(qǐng)求時(shí),判斷該請(qǐng)求是否為請(qǐng)求由第二單位處理器(例如 單位處理器P1)所取得的旗語(yǔ)的請(qǐng)求(取得中的旗語(yǔ))。另外,程序控制部105,當(dāng)由HW旗語(yǔ)部13判斷旗語(yǔ)的取得請(qǐng)求為
請(qǐng)求取得中的旗語(yǔ)的請(qǐng)求時(shí),使單位處理器P0的請(qǐng)求等待。另一方面, 當(dāng)判斷該請(qǐng)求為請(qǐng)求取得中的旗語(yǔ)以外的旗語(yǔ)的請(qǐng)求時(shí),允許所請(qǐng)求的旗語(yǔ)的取得。再有,將允許取得旗語(yǔ)的單位處理器PO設(shè)定為中斷禁止。在以上的結(jié)構(gòu)中,HW旗語(yǔ)部13相當(dāng)于旗語(yǔ)設(shè)定單元,HW旗語(yǔ)部 13和程序控制部105相當(dāng)于旗語(yǔ)請(qǐng)求判斷單元、排他控制單元、中斷控制 單元。程序管理部105根據(jù)ID按每管理區(qū)域來(lái)判斷所請(qǐng)求的HW旗語(yǔ)是否 已由其他單位處理器所使用。這樣,可以使用一個(gè)HW旗語(yǔ)對(duì)多個(gè)單位處 理器進(jìn)行排他控制。另外,在本實(shí)施方式中,在每次賦予ID時(shí),HW旗語(yǔ)部13對(duì)多個(gè) HW旗語(yǔ)的至少一部分旗語(yǔ)添加公共ID。另外,對(duì)添加有公共ID的多個(gè) HW旗語(yǔ)的每一個(gè)設(shè)定管理區(qū)域。而且,程序管理部105由于如上所述那 樣按每管理區(qū)域來(lái)判斷所請(qǐng)求的HW旗語(yǔ)是否已經(jīng)由其他單位處理器所 使用,因此即使在硬件資源少的情況下,也能夠控制很多旗語(yǔ),并且對(duì)單 位處理器進(jìn)行排他控制。艮口,在本實(shí)施方式中,定義HW旗語(yǔ)0 HW旗語(yǔ)7總共8個(gè)HW旗 語(yǔ),并且可設(shè)定255個(gè)ID。因此,HW旗語(yǔ)0 6各自與ID—一對(duì)應(yīng), HW旗語(yǔ)7與8 255的ID相對(duì)應(yīng)。而且,例如在存儲(chǔ)器30中設(shè)置與8 255的ID對(duì)應(yīng)的管理區(qū)域。另外,單位處理器P0 P3為了處理在多處理器的內(nèi)部所發(fā)生的任務(wù) 和在外部所發(fā)生的句柄,而請(qǐng)求旗語(yǔ)的取得。中斷控制部11和程序控制 部105,在用于任務(wù)處理的旗語(yǔ)取得請(qǐng)求的彼此之間、或者在用于任務(wù)處 理的旗語(yǔ)取得請(qǐng)求與用于句柄處理的旗語(yǔ)取得請(qǐng)求之間,進(jìn)而在用于句柄 處理的旗語(yǔ)取得請(qǐng)求的彼此之間,等待或允許旗語(yǔ)的取得。根據(jù)這種結(jié)構(gòu),本實(shí)施方式的多處理器可對(duì)任務(wù)處理的彼此、任務(wù)處 理與基于外部中斷的處理、基于外部中斷的處理的彼此進(jìn)行并行處理,并 且可根據(jù)需要進(jìn)行排他控制。艮P, HW旗語(yǔ)部13具有如下功能在由單位處理器P0 P3發(fā)出了旗 語(yǔ)取得請(qǐng)求時(shí),如果單位處理器P0 P3所指定的HW旗語(yǔ)處于已被獲取 的狀態(tài),則針對(duì)新請(qǐng)求通知所指定的HW旗語(yǔ)的獲取失敗;另一方面,如 果在此之前HW旗語(yǔ)沒(méi)有處于被獲取的狀態(tài),則向單位處理器返回成功獲 取所指定的HW旗語(yǔ)的通知。這種HW旗語(yǔ)能夠防止多個(gè)單位處理器同時(shí)使用同一硬件資源的情 況。因此,能夠防止因由OS所使用的存儲(chǔ)器30的規(guī)定區(qū)域同時(shí)被訪(fǎng)問(wèn)而 導(dǎo)致處理中斷等的不良情況。另外,本實(shí)施方式的處理器具備作為單位處理器P0 P3的公共區(qū)域 的存儲(chǔ)器30和控制存儲(chǔ)器30的存儲(chǔ)器控制部12。在本實(shí)施方式中,在存 儲(chǔ)器30中保存使硬件資源與HW旗語(yǔ)的ID相對(duì)應(yīng)的信息。接著,對(duì)單位處理器P0 P3的內(nèi)部結(jié)構(gòu)進(jìn)行說(shuō)明。此外,由于單位 處理器P0 P3同樣地構(gòu)成,因此只對(duì)單位處理器PO的內(nèi)部結(jié)構(gòu)進(jìn)行說(shuō)明, 來(lái)取代其他單位處理器的說(shuō)明。單位處理器PO包括取出(fetch)部101、解碼部102、 ALU (Arithmetic and Logical Unit) 103、寄存器文檔104、程序控制部105。取出部101根 據(jù)后面敘述的程序控制部105的程序計(jì)數(shù)器所示的存儲(chǔ)器地址讀出指令 碼,并輸出到解碼部102。解碼部102對(duì)由取出部101所輸入的指令碼進(jìn)行解碼,并將解碼結(jié)果 (指令內(nèi)容以及源寄存器、目的地寄存器的地址等)輸出到ALU103。ALU103根據(jù)由解碼部102所輸入的解碼結(jié)果,進(jìn)行規(guī)定的運(yùn)算,并 將運(yùn)算結(jié)果寫(xiě)入寄存器文檔104、或者將分支轉(zhuǎn)移指令等的運(yùn)算結(jié)果即分 支轉(zhuǎn)移(branch)目的地的地址輸出到程序控制部105。寄存器文檔104是對(duì)由讀取指令從存儲(chǔ)器30所讀出的數(shù)據(jù)或作為 ALU103的運(yùn)算結(jié)果的數(shù)據(jù)進(jìn)行存儲(chǔ)的寄存器組。如后面敘述那樣寄存器 文檔104包括通用寄存器組和特殊寄存器組,特殊寄存器組是寫(xiě)入本實(shí)施 方式的引導(dǎo)處理用的地址的區(qū)域。程序控制部105控制單位處理器P0整體,包括狀態(tài)寄存器(PSR) 305,其存儲(chǔ)單位處理器PO的狀態(tài)(例如,中斷的可否狀態(tài)、單位處理器 PO中的溢出的發(fā)生狀態(tài)等);和程序計(jì)數(shù)器(PC) 230,其對(duì)保存有單位 處理器PO下一次要執(zhí)行的指令的存儲(chǔ)器地址進(jìn)行存儲(chǔ)。而且,程序控制 部105在單位處理器PO向中斷處理轉(zhuǎn)移的時(shí)刻,將PSR305的值變更為中 斷處理的禁止?fàn)顟B(tài),或者在執(zhí)行分支轉(zhuǎn)移指令時(shí),將程序計(jì)數(shù)器的值變更
為分支轉(zhuǎn)移目的地的地址。另外,程序控制部105在由執(zhí)行中的任務(wù)而輸出HW旗語(yǔ)的取得請(qǐng)求 時(shí),首先收取HW旗語(yǔ)的取得結(jié)果,在狀態(tài)寄存器中的表示HW旗語(yǔ)的取 得結(jié)果的區(qū)域中,對(duì)表示成功取得HW旗語(yǔ)的標(biāo)志進(jìn)行更新。另一方面, 當(dāng)旗語(yǔ)取得失敗時(shí),對(duì)表示HW旗語(yǔ)的取得失敗的標(biāo)志進(jìn)行更新,并暫時(shí) 停止HW旗語(yǔ)的取得后離開(kāi)等待狀態(tài)。再有,程序控制部105具備驅(qū)逐禁止標(biāo)志106。驅(qū)逐禁止標(biāo)志106是 用于禁止在自單位處理器中發(fā)生任務(wù)的切換或外部中斷,任務(wù)從單位處理 器被驅(qū)逐的情況的機(jī)構(gòu)。通過(guò)將驅(qū)逐禁止標(biāo)志106設(shè)定為1,由此防止在 當(dāng)前單位處理器中的任務(wù)或中斷處理切換到其他任務(wù)或中斷處理的情況。將禁止驅(qū)逐單位處理器中的任務(wù)的狀態(tài)稱(chēng)作鎖定狀態(tài),在本實(shí)施方式 中利用自旋鎖(spin lock)來(lái)實(shí)現(xiàn)鎖定狀態(tài)。自旋鎖是指,當(dāng)單位處理器之間使用相同資源(在本實(shí)施方式中為硬 件資源)時(shí),通過(guò)等待該資源的釋放而進(jìn)行忙碌等待(busy wait)的方法。 與利用了單位處理器之間的通信的排他控制相比其優(yōu)點(diǎn)在于,用于單位處 理器的彼此同步的開(kāi)銷(xiāo)少。自旋鎖是適合于利用資源的排他區(qū)間短的情況 的方式。中斷控制部11在從無(wú)線(xiàn)部50等的外圍芯片輸入了外部中斷的中斷信 號(hào)時(shí),在調(diào)停中斷信號(hào)的基礎(chǔ)上,將規(guī)定的中斷信號(hào)輸出到在單位處理器 P0 P3中所指定的單位處理器。存儲(chǔ)器控制部12配置在CPU10與存儲(chǔ)器 30之間,在由CPU10對(duì)存儲(chǔ)器30進(jìn)行數(shù)據(jù)的讀出和寫(xiě)入時(shí),控制存儲(chǔ)器 30進(jìn)行數(shù)據(jù)的輸入輸出。接著,說(shuō)明以上所述的多處理器的工作。圖4是用于對(duì)本實(shí)施方式的多處理器系統(tǒng)的中斷控制方法進(jìn)行說(shuō)明的 流程圖,是用于對(duì)由程序控制部105和硬件結(jié)構(gòu)即HW旗語(yǔ)部13所執(zhí)行 的處理進(jìn)行說(shuō)明的圖。如果發(fā)生要排他的處理,則HW旗語(yǔ)部13根據(jù)單位處理器側(cè)的軟件 的請(qǐng)求,來(lái)受理取得HW旗語(yǔ)的請(qǐng)求(S401) 。 HW旗語(yǔ)的取得通過(guò) TEST&SET方式進(jìn)行。由于以一個(gè)機(jī)器語(yǔ)言(machine language)指令來(lái) 進(jìn)行,因此TEST&SET方式不會(huì)在處理的途中因其他任務(wù)等導(dǎo)致中斷而 處于競(jìng)爭(zhēng)狀態(tài)。另外,HW旗語(yǔ)部13判斷是否成功取得HW旗語(yǔ)(S402)。當(dāng)該判 斷的結(jié)果為成功取得HW旗語(yǔ)時(shí)(S402:是),程序控制部105禁止對(duì)取 得了HW旗語(yǔ)的單位處理器(請(qǐng)求源處理器)的中斷(S403)。該中斷禁 止用于禁止對(duì)請(qǐng)求源處理器從外部所請(qǐng)求的中斷處理、由其他單位處理器 所請(qǐng)求的中斷處理之外,還禁止基于分發(fā)(dispatch)的任務(wù)切換(task switch)。另外,程序控制部105通過(guò)將可取得HW旗語(yǔ)的這一情況設(shè)定在請(qǐng)求 源處理器的狀態(tài)寄存器,由此通知給請(qǐng)求源處理器(S404)。另外,在本實(shí)施方式中,當(dāng)成功取得了HW旗語(yǔ)時(shí),還同時(shí)設(shè)定請(qǐng)求 源處理器的驅(qū)逐禁止標(biāo)志106來(lái)進(jìn)行自旋鎖。另一方面,當(dāng)在步驟S402 中判斷為無(wú)法取得HW旗語(yǔ)時(shí)(S402:否),則對(duì)請(qǐng)求源處理器的狀態(tài)寄 存器設(shè)定無(wú)法取得HW旗語(yǔ)的這個(gè)情況(S404)。圖5 (a) 、 (b)是用于對(duì)取得HW旗語(yǔ)的成功與否進(jìn)行說(shuō)明的圖。 如圖5 (a) 、 (b)所示,作為請(qǐng)求源處理器的單位處理器,為了取得HW 旗語(yǔ)而對(duì)控制HW旗語(yǔ)的HW (HW旗語(yǔ)部13)執(zhí)行TEST&SET。此夕卜, 從TEST&SET的執(zhí)行到向PSR寫(xiě)入結(jié)果之前的處理以一個(gè)周期的期間完 成。當(dāng)可取得HW旗語(yǔ)時(shí),HW旗語(yǔ)部13向請(qǐng)求處理器PSR305寫(xiě)入可 取得HW旗語(yǔ)的這個(gè)情況。收到取得HW旗語(yǔ)的通知的請(qǐng)求源處理器確保 自旋鎖狀態(tài)。另外,當(dāng)無(wú)法取得HW旗語(yǔ)時(shí),HW旗語(yǔ)部13向請(qǐng)求源處 理器的PSR305寫(xiě)入無(wú)法取得HW旗語(yǔ)的這個(gè)情況。當(dāng)無(wú)法取得HW旗語(yǔ) 時(shí),請(qǐng)求源處理器重復(fù)進(jìn)行HW旗語(yǔ)的取得處理直到可取得HW旗語(yǔ)為止。圖6是用于對(duì)由請(qǐng)求源處理器的程序控制部105而實(shí)現(xiàn)的HW旗語(yǔ)的 取得處理進(jìn)行說(shuō)明的流程圖。請(qǐng)求源處理器首先參照存儲(chǔ)器30所保存的 HW旗語(yǔ)與ID之間的對(duì)應(yīng)信息,并識(shí)別想要取得的HW旗語(yǔ)的ID(S601 )。 而且,當(dāng)ID小于8時(shí),由于ID與HW旗語(yǔ)一一對(duì)應(yīng),從而向HW旗語(yǔ) 部13請(qǐng)求來(lái)取得與ID對(duì)應(yīng)的HW旗語(yǔ)(S613)。而且,將寫(xiě)入有該結(jié)果 的PSR值反映在返回值中,并將結(jié)果返回給程序(S614)。另外,在步驟S601中,當(dāng)判斷為ID在8以上時(shí)(S601:是),則請(qǐng)
求HW旗語(yǔ)7取得HW旗語(yǔ)部(S602)。而且,寫(xiě)入在PSR的值表示可 獲取HW旗語(yǔ)時(shí)(S603:是),對(duì)與ID對(duì)應(yīng)的HW旗語(yǔ)的管理區(qū)域進(jìn)行 TEST&SET (S604)。這樣,當(dāng)對(duì)一個(gè)HW旗語(yǔ)7添加多個(gè)ID時(shí),本實(shí)施方式能夠由多個(gè) 單位處理器同時(shí)且互不干擾地使用一個(gè)HW來(lái)執(zhí)行處理。另外,程序控制部105判斷由TEST&SET可否獲取旗語(yǔ)(S605), 并請(qǐng)求HW旗語(yǔ)7釋放HW旗語(yǔ)(S606)。再有,對(duì)請(qǐng)求源處理器設(shè)定中斷禁止(S607),并禁止對(duì)自處理器的 任務(wù)中斷、外部中斷、還有任務(wù)切換。在以上的處理后將寫(xiě)入有HW旗語(yǔ) 的取得結(jié)果的PSR值反映在返回值中,并將結(jié)果返回給程序(S608)。此外,當(dāng)無(wú)法取得HW旗語(yǔ)時(shí)(S612:否),程序控制部105將表示 HW旗語(yǔ)取得失敗的PSR值反映在返回值中,并將結(jié)果返回給程序 (S614)。另外,即使在不能通過(guò)TEST&SET獲取旗語(yǔ)時(shí)(S605:否), 也請(qǐng)求HW旗語(yǔ)7釋放HW旗語(yǔ),之后將PSR值反映在返回值中,并將 結(jié)果返回給程序(S611)。為了進(jìn)行以上的處理,在本實(shí)施方式中設(shè)定了以下的四個(gè)服務(wù)調(diào)用。
loc一spn是從任務(wù)側(cè)進(jìn)行HW旗語(yǔ)的取得的服務(wù)調(diào)用。單位處理器不會(huì)從服務(wù) 調(diào)用復(fù)原(recover)直到可取得HW旗語(yǔ)為止。當(dāng)處理任務(wù)的單位處理器 為loc—spn狀態(tài)時(shí),禁止unl—spn以外的服務(wù)調(diào)用的同時(shí),還禁止對(duì)該單位 處理器的中斷和任務(wù)切換。
iloc一spn是從中斷句柄側(cè)進(jìn)行HW旗語(yǔ)的取得的服務(wù)調(diào)用。單位處理器不會(huì)從 服務(wù)調(diào)用復(fù)原直到可取得HW旗語(yǔ)為止。當(dāng)執(zhí)行中斷句柄的單位處理器在 iloc—spn狀態(tài)時(shí),禁止iiml—spn以外的服務(wù)調(diào)用的同時(shí),還禁止對(duì)該單位 處理器的中斷和任務(wù)切換。
unl—spn是從任務(wù)側(cè)進(jìn)行HW旗語(yǔ)的釋放的服務(wù)調(diào)用。當(dāng)存在正在等待獲取 HW旗語(yǔ)的單位處理器時(shí)該單位處理器可在unl一spn的定時(shí)取得自旋鎖。
iunl一spn
是從中斷句柄側(cè)進(jìn)行HW旗語(yǔ)的釋放的服務(wù)調(diào)用。當(dāng)存在正在等待獲 取HW旗語(yǔ)的單位處理器時(shí),該單位處理器可在kml一spn的定時(shí)取得自旋 鎖。
圖7是用于對(duì)由圖6所示的流程圖實(shí)現(xiàn)的并行工作進(jìn)行說(shuō)明的圖。如 圖7 (a)所示,本實(shí)施方式在執(zhí)行優(yōu)先級(jí)較低的任務(wù)時(shí),由OS對(duì)執(zhí)行該 任務(wù)的單位處理器進(jìn)行自旋鎖直到任務(wù)結(jié)束為止。在此期間,本實(shí)施方式 的多處理器不會(huì)設(shè)定為中斷禁止,而與執(zhí)行中的任務(wù)取得的HW旗語(yǔ)無(wú)關(guān) 地執(zhí)行的任務(wù)或中斷處理,可在其他單位處理器中并行工作。
另外,如圖7(b)所示,在并行工作中的單位處理器中,當(dāng)并行處理 的任務(wù)或中斷處理請(qǐng)求了己被取得的HW旗語(yǔ)的取得時(shí),任務(wù)等等待機(jī)到 所請(qǐng)求的HW旗語(yǔ)釋放為止。
圖8是用于對(duì)程序控制部105釋放HW旗語(yǔ)的處理進(jìn)行說(shuō)明的流程 圖。程序控制部105判定應(yīng)釋放的HW旗語(yǔ)的ID是否在8以上(S801)。 判斷的結(jié)果,當(dāng)ID小于8時(shí)(S801:否),請(qǐng)求HW旗語(yǔ)部13釋放與 ID對(duì)應(yīng)的HW旗語(yǔ)(S803)。另一方面,當(dāng)ID在8以上時(shí)(S801:是), 則對(duì)寫(xiě)入在OS內(nèi)的與ID對(duì)應(yīng)的旗語(yǔ)管理區(qū)域中的信息進(jìn)行清除(S802), 并結(jié)束處理。
圖9是用于對(duì)HW旗語(yǔ)部3釋放HW旗語(yǔ)的處理進(jìn)行說(shuō)明的流程圖。 HW旗語(yǔ)部13針對(duì)要釋放的ID的HW旗語(yǔ)進(jìn)行釋放請(qǐng)求(CLEAR) (S901)。
而且,解除請(qǐng)求源處理器的中斷禁止(S902),并在請(qǐng)求源處理器的 PSR305設(shè)定表示已釋放了HW旗語(yǔ)這一情況的值并進(jìn)行通知(S903)。
圖10是用于對(duì)HW旗語(yǔ)釋放進(jìn)行說(shuō)明的圖。作為HW旗語(yǔ)釋放的請(qǐng) 求源處理器的單位處理器,在收取HW旗語(yǔ)釋放的通知后從自旋鎖狀態(tài)釋 放。
此外,將用于使計(jì)算機(jī)執(zhí)行用圖4、圖6、圖8、圖9敘述的本實(shí)施方 式的多處理器系統(tǒng)的中斷控制方法的程序,以可安裝的形式或可執(zhí)行的形 式的文件記錄在CD-ROM、 floppy (注冊(cè)商標(biāo))盤(pán)(FD) 、 DVD等由計(jì) 算機(jī)可讀取的記錄介質(zhì)中而進(jìn)行提供。另外,也可采用下述結(jié)構(gòu)將用于 使計(jì)算機(jī)執(zhí)行本實(shí)施方式的多處理器系統(tǒng)的中斷控制方法的程序,按照將
其保存在與互聯(lián)網(wǎng)等網(wǎng)絡(luò)連接的計(jì)算機(jī)上,并經(jīng)由網(wǎng)絡(luò)進(jìn)行下載的方式來(lái) 提供。
再有,將用于使計(jì)算機(jī)執(zhí)行以上敘述的本實(shí)施方式的多處理器系統(tǒng)的
中斷控制方法的程序,也可記錄在由計(jì)算機(jī)可讀取的ROM、閃存、存儲(chǔ) 卡(memory card) 、 USB連接型閃存等存儲(chǔ)設(shè)備中而進(jìn)行提供。
根據(jù)以上敘述的本實(shí)施方式,將8個(gè)HW旗語(yǔ)可識(shí)別地設(shè)定,并且指 定與任務(wù)處理或中斷句柄所使用的HW資源對(duì)應(yīng)的HW旗語(yǔ)后請(qǐng)求取得。 因此,對(duì)任務(wù)或中斷處理而言可并行工作而不會(huì)發(fā)生競(jìng)爭(zhēng)。
另外,當(dāng)請(qǐng)求以前被取得的HW旗語(yǔ)的取得時(shí),使進(jìn)行請(qǐng)求的單位處 理器等待處理。因此,在并行處理中不會(huì)使用同一HW資源,能夠防止因 處理的競(jìng)爭(zhēng)而發(fā)生死鎖(deadock)。
可知,這種本實(shí)施方式的多處理器系統(tǒng)和多處理器系統(tǒng)的中斷控制方 法,與以前在圖11中所示的現(xiàn)有例的結(jié)構(gòu)相比,任務(wù)等進(jìn)行等待的期間 短。等待時(shí)間短,能夠提高并行處理的處理效率。 (產(chǎn)業(yè)上的可利用性)
根據(jù)本發(fā)明,能夠?qū)⒍鄠€(gè)旗語(yǔ)與資源對(duì)應(yīng)地可識(shí)別地設(shè)定。而且,在 單位處理器中的第一單位處理器進(jìn)行了在旗語(yǔ)設(shè)定單元中所設(shè)定的旗語(yǔ) 的取得請(qǐng)求時(shí),對(duì)旗語(yǔ)進(jìn)行識(shí)別,來(lái)判斷請(qǐng)求是否為請(qǐng)求由第二單位處理 器取得的旗語(yǔ)即取得中的旗語(yǔ)的請(qǐng)求。當(dāng)判斷請(qǐng)求為請(qǐng)求取得中旗語(yǔ)的請(qǐng) 求時(shí),使第一單位處理器的請(qǐng)求等待,而當(dāng)判斷請(qǐng)求為請(qǐng)求取得中旗語(yǔ)以 外的旗語(yǔ)的請(qǐng)求時(shí),允許取得所請(qǐng)求的旗語(yǔ)的取得。
因此,除了所請(qǐng)求的旗語(yǔ)為取得中的情況之外,第一單位處理器不會(huì) 成為等待狀態(tài),而與第二單位處理器并行工作。
本發(fā)明,能夠縮短單位處理器成為等待狀態(tài)的時(shí)間,能夠增加可并行 工作的期間。這樣本發(fā)明能夠提供一種并行處理的處理效率高的多處理器 系統(tǒng)。
另外,在第一單位處理器中處理結(jié)束之前不會(huì)發(fā)生中斷處理,從而能 夠減小發(fā)生死鎖等的可能性。
另外,能夠?qū)θ蝿?wù)處理、任務(wù)處理與句柄處理、句柄處理的彼此進(jìn)行 并行處理。
另外,等待狀態(tài)的其他單位處理器能夠周期性地檢測(cè)第一單位處理器 的旗語(yǔ)的釋放。因此,能夠立即檢測(cè)出第一單位處理器的旗語(yǔ)釋放來(lái)取得 所釋放的旗語(yǔ),從而能夠脫離等待狀態(tài)。
另外,即使在硬件資源少的情況下也能夠控制很多旗語(yǔ)。 另外,根據(jù)本發(fā)明,當(dāng)單位處理器之中的第一單位處理器進(jìn)行了可識(shí) 別地設(shè)定的旗語(yǔ)的取得請(qǐng)求時(shí),對(duì)旗語(yǔ)進(jìn)行識(shí)別,來(lái)判斷請(qǐng)求是否為請(qǐng)求 由第二單位處理器正在取得的旗語(yǔ)即取得中的旗語(yǔ)的請(qǐng)求。當(dāng)判斷請(qǐng)求為 請(qǐng)求取得中旗語(yǔ)的請(qǐng)求時(shí),使第一單位處理器的請(qǐng)求等待,另一方面,當(dāng) 判斷請(qǐng)求為請(qǐng)求取得中旗語(yǔ)以外的旗語(yǔ)的請(qǐng)求時(shí),允許取得所請(qǐng)求的旗語(yǔ) 的取得。
因此,除了所請(qǐng)求的旗語(yǔ)為已經(jīng)取得中的情況之外,第一單位處理器 不會(huì)成為等待狀態(tài),而與第二單位處理器并行工作。本發(fā)明,能夠縮短單 位處理器成為等待狀態(tài)的時(shí)間,能夠增加可并行工作的期間。這種本發(fā)明 能夠提供一種用于使計(jì)算機(jī)執(zhí)行并行處理的處理效率高的多處理器系統(tǒng) 的中斷控制方法的程序。
權(quán)利要求
1. 一種多處理器系統(tǒng),具備多個(gè)單位處理器,該多處理器系統(tǒng)包括旗語(yǔ)設(shè)定單元,其將表示對(duì)資源競(jìng)爭(zhēng)優(yōu)先的權(quán)利的旗語(yǔ)與多個(gè)資源分別對(duì)應(yīng)而可識(shí)別地設(shè)定;旗語(yǔ)請(qǐng)求判斷單元,當(dāng)上述單位處理器中的第一單位處理器進(jìn)行了在上述旗語(yǔ)設(shè)定單元中所設(shè)定的旗語(yǔ)的取得請(qǐng)求時(shí),判斷該請(qǐng)求是否為請(qǐng)求由第二單位處理器取得的旗語(yǔ)即取得中的旗語(yǔ)的請(qǐng)求;和排他控制單元,當(dāng)由上述旗語(yǔ)請(qǐng)求判斷單元判斷上述請(qǐng)求為請(qǐng)求取得中旗語(yǔ)的請(qǐng)求時(shí),使第一單位處理器的請(qǐng)求等待,另一方面,當(dāng)由上述旗語(yǔ)請(qǐng)求判斷單元判斷上述請(qǐng)求為請(qǐng)求取得中旗語(yǔ)以外的旗語(yǔ)的請(qǐng)求時(shí),允許所請(qǐng)求的旗語(yǔ)的取得。
2、 根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于, 具備中斷禁止單元,該中斷禁止單元禁止對(duì)允許取得旗語(yǔ)的第一單位處理器的由分發(fā)實(shí)現(xiàn)的任務(wù)切換、從外部請(qǐng)求的中斷處理、由其他單位處 理器所請(qǐng)求的中斷處理的至少一個(gè)。
3、 根據(jù)權(quán)利要求1或2所述的多處理器系統(tǒng),其特征在于, 單位處理器為了對(duì)在多處理器內(nèi)部所發(fā)生的任務(wù)和在外部所發(fā)生的句柄進(jìn)行處理而請(qǐng)求旗語(yǔ)的取得,上述排他控制單元在用于任務(wù)處理的旗 語(yǔ)取得請(qǐng)求的彼此之間、用于任務(wù)處理的旗語(yǔ)取得請(qǐng)求與用于句柄處理的 旗語(yǔ)取得請(qǐng)求之間、用于句柄處理的旗語(yǔ)取得請(qǐng)求的彼此之間,等待或允 許旗語(yǔ)的取得。
4、 根據(jù)權(quán)利要求1 3中任一項(xiàng)所述的多處理器系統(tǒng),其特征在于, 當(dāng)上述排他控制單元允許了由上述第一單位處理器所請(qǐng)求的旗語(yǔ)的取得時(shí),對(duì)上述第一單位處理器進(jìn)行自旋鎖。
5、 根據(jù)權(quán)利要求1 4中任一項(xiàng)所述的多處理器系統(tǒng),其特征在于, 上述旗語(yǔ)設(shè)定單元通過(guò)對(duì)多個(gè)旗語(yǔ)的每一個(gè)添加識(shí)別信息而可識(shí)別地進(jìn)行設(shè)定,并且對(duì)多個(gè)旗語(yǔ)的至少一部分的旗語(yǔ)添加公共的識(shí)別信息, 對(duì)添加有公共的該識(shí)別信息的多個(gè)旗語(yǔ)的每一個(gè)設(shè)定管理區(qū)域,上述旗語(yǔ)請(qǐng)求判斷單元根據(jù)識(shí)別信息,按各管理區(qū)域判斷第一單位處 理器進(jìn)行取得請(qǐng)求的旗語(yǔ)是否為由第二單位處理器取得的取得中旗語(yǔ)。
6、 一種使計(jì)算機(jī)執(zhí)行多處理器系統(tǒng)的中斷控制方法的程序,使計(jì)算 機(jī)執(zhí)行適用于具備多個(gè)單位處理器的多處理器系統(tǒng)的多處理器系統(tǒng)中斷 控制方法,其特征在于,包括旗語(yǔ)請(qǐng)求判斷步驟,當(dāng)上述單位處理器中的第一單位處理器進(jìn)行了可 識(shí)別地設(shè)定的旗語(yǔ)的取得請(qǐng)求時(shí),判斷該請(qǐng)求是否為請(qǐng)求由第二單位處理 器取得的旗語(yǔ)即取得中旗語(yǔ)的請(qǐng)求;排他控制步驟,在上述旗語(yǔ)請(qǐng)求判斷步驟中,當(dāng)判斷上述請(qǐng)求為請(qǐng)求 取得中旗語(yǔ)的請(qǐng)求時(shí),使第一單位處理器的請(qǐng)求等待,另一方面,當(dāng)判斷 上述請(qǐng)求為請(qǐng)求取得中旗語(yǔ)以外的旗語(yǔ)的請(qǐng)求時(shí),允許所請(qǐng)求的旗語(yǔ)的取 得;禾口中斷禁止步驟,將在上述排他控制步驟中允許取得旗語(yǔ)的單位處理器 設(shè)定為中斷禁止。
全文摘要
具備多個(gè)單位處理器的多處理器系統(tǒng),具有可識(shí)別地設(shè)定與資源對(duì)應(yīng)的多個(gè)旗語(yǔ)的HW旗語(yǔ)部(13),當(dāng)單位處理器(P0)對(duì)HW旗語(yǔ)部(13)進(jìn)行了旗語(yǔ)的取得請(qǐng)求時(shí),判斷該請(qǐng)求是否為請(qǐng)求由單位處理器(P1)取得的旗語(yǔ)即取得中旗語(yǔ)的請(qǐng)求,當(dāng)判斷該請(qǐng)求為請(qǐng)求取得中旗語(yǔ)的請(qǐng)求時(shí),使單位處理器(P0)的請(qǐng)求等待,另一方面,當(dāng)判定請(qǐng)求為請(qǐng)求取得中旗語(yǔ)以外的旗語(yǔ)的請(qǐng)求時(shí),程序控制部(105)允許所請(qǐng)求的旗語(yǔ)的取得。
文檔編號(hào)G06F9/52GK101213519SQ20078000006
公開(kāi)日2008年7月2日 申請(qǐng)日期2007年1月16日 優(yōu)先權(quán)日2006年1月16日
發(fā)明者田中克哉, 轟晃成 申請(qǐng)人:精工愛(ài)普生株式會(huì)社