用于中斷處理的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)中的中斷處理的領(lǐng)域。
【背景技術(shù)】
[0002] 已知超級(jí)監(jiān)督器系統(tǒng)以多個(gè)不同的執(zhí)行等級(jí)運(yùn)行。這些執(zhí)行等級(jí)被組織在層級(jí)結(jié) 構(gòu)中,其中較高執(zhí)行等級(jí)被給予比較低執(zhí)行等級(jí)更多至數(shù)據(jù)處理系統(tǒng)的特權(quán)。通常,特定的 執(zhí)行等級(jí)能夠執(zhí)行較低執(zhí)行等級(jí)能夠執(zhí)行的任意動(dòng)作并且訪問(wèn)較低執(zhí)行等級(jí)能夠訪問(wèn)的 任意數(shù)據(jù)。
[0003] 虛擬化的系統(tǒng)可以使用四個(gè)執(zhí)行等級(jí)進(jìn)行操作。用戶軟件可以在最低且具有最少 特權(quán)的等級(jí)EL0處執(zhí)行。該軟件可以包括用戶日常工作中運(yùn)行的那些應(yīng)用以及不會(huì)為了正 確執(zhí)行需要特殊特權(quán)的軟件。
[0004] 在下一最高等級(jí)ELI處,操作系統(tǒng)可以執(zhí)行。通常,操作系統(tǒng)管理在其下面、在EL0 處運(yùn)行的若干用戶應(yīng)用,并且使能夠訪問(wèn)用戶應(yīng)用的硬件資源。因此,在ELI內(nèi)執(zhí)行的操作 系統(tǒng)具有相對(duì)于EL0增大的特權(quán)等級(jí),因?yàn)樗軌蛟L問(wèn)和控制在EL0下運(yùn)行的用戶應(yīng)用的 行為。
[0005] 超級(jí)監(jiān)督器可以在EL2中運(yùn)行。超級(jí)監(jiān)督器通??刂圃贓LI下執(zhí)行的若干操作系 統(tǒng)的數(shù)量、行為和資源管理。因?yàn)槎鄠€(gè)操作系統(tǒng)可能爭(zhēng)奪對(duì)硬件資源的訪問(wèn),超級(jí)監(jiān)督器必 須能夠允許或拒絕此類訪問(wèn)請(qǐng)求。因此,相較于在ELI處運(yùn)行的操作系統(tǒng),超級(jí)監(jiān)督器在較 高的特權(quán)等級(jí)EL2處運(yùn)行。
[0006] 還已知數(shù)據(jù)處理系統(tǒng)在各種執(zhí)行模式下操作,比如,安全狀態(tài)和非安全狀態(tài)。通過(guò) 提供在安全狀態(tài)和非安全狀態(tài)都能操作的數(shù)據(jù)處理裝置,有可能將安全操作的執(zhí)行與非安 全操作的執(zhí)行分開(kāi)。此外,被認(rèn)為是安全的數(shù)據(jù)可以與不安全的數(shù)據(jù)分開(kāi)。從而安全數(shù)據(jù) 和安全操作可以與可能被認(rèn)為不安全的其它數(shù)據(jù)和操作隔離。于是保護(hù)了系統(tǒng)的安全。超 級(jí)監(jiān)督器系統(tǒng)還可以在安全模式或非安全模式下操作。在這些情況下,每個(gè)執(zhí)行等級(jí)可以 在安全模式或非安全模式中的一個(gè)或另一個(gè)下操作。
[0007] 安全模式和非安全模式的之間切換必須在最高安全和特權(quán)執(zhí)行等級(jí)處處理,以便 確保在非安全操作模式下運(yùn)行的軟件不能訪問(wèn)屬于安全操作模式的數(shù)據(jù),并且在一些情況 下反之亦然。于是,EL3等級(jí)可以在控制該切換操作的安全監(jiān)視器處提供。此EL3等級(jí)是 最高特權(quán)等級(jí),它的責(zé)任是確定何時(shí)需要進(jìn)行模式變化并且產(chǎn)生該需要的執(zhí)行模式變化。
[0008] 當(dāng)處理系統(tǒng)中運(yùn)行于若干不同執(zhí)行等級(jí)處的中斷時(shí),有必要隔離在中斷處理期間 使用的特定數(shù)據(jù)存儲(chǔ)元件。例如,系統(tǒng)寄存器的子集可以是分區(qū)的,從而只有在執(zhí)行等級(jí) ELI或以上等級(jí)處運(yùn)行的軟件能夠訪問(wèn)寄存器的第一子集,只有在執(zhí)行EL2或以上等級(jí)處 運(yùn)行的軟件能夠訪問(wèn)寄存器的第二子集,并且只有在執(zhí)行EL3處執(zhí)行的軟件能夠訪問(wèn)第三 組子集寄存器。在適當(dāng)?shù)那闆r下,可以為操作的安全模式或非安全模式兩者實(shí)施這種分區(qū)。 此類隔離確保在較低執(zhí)行等級(jí)處運(yùn)行的軟件不能干擾或影響在較高執(zhí)行等級(jí)處運(yùn)行的軟 件的執(zhí)行。
【發(fā)明內(nèi)容】
[0009] 根據(jù)本發(fā)明的第一方面,提供了一種數(shù)據(jù)處理設(shè)備,包括:多個(gè)系統(tǒng)寄存器,該多 個(gè)系統(tǒng)寄存器包括用于控制進(jìn)入中斷的處理的一組中斷處理寄存器的;處理電路,該處理 電路被配置為在多個(gè)執(zhí)行等級(jí)處執(zhí)行軟件;中斷控制器電路,該中斷控制器電路被配置為 將所述進(jìn)入中斷路由至被配置為在所述多個(gè)執(zhí)行等級(jí)中的一個(gè)執(zhí)行等級(jí)處運(yùn)行的中斷處 理軟件;寄存器訪問(wèn)控制電路,該寄存器訪問(wèn)控制電路被配置為根據(jù)所述進(jìn)入中斷被路由 至的所述多個(gè)執(zhí)行等級(jí)中的一個(gè)執(zhí)行等級(jí)來(lái)動(dòng)態(tài)控制對(duì)所述中斷處理寄存器中的至少一 些寄存器的訪問(wèn),從而被配置為在所述執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件有權(quán)訪問(wèn)用于處理 所述進(jìn)入中斷的所述中斷處理寄存器中的至少一些寄存器,并且從而被配置為在所述執(zhí)行 等級(jí)處運(yùn)行的所述中斷處理軟件無(wú)權(quán)訪問(wèn)用于處理被路由至在具有更多特權(quán)的執(zhí)行等級(jí) 處運(yùn)行的中斷處理軟件的第二進(jìn)入中斷的中斷處理寄存器。
[0010] 根據(jù)上文,對(duì)一組訪問(wèn)中斷控制寄存器的訪問(wèn)根據(jù)進(jìn)入中斷被路由至的特定執(zhí)行 等級(jí)而被動(dòng)態(tài)控制。這與已知的其中在特定執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件只能訪問(wèn)具體 的、靜態(tài)定義的寄存器和被定義來(lái)由任意具有較低、較少特權(quán)的執(zhí)行等級(jí)的那些寄存器的 子集的系統(tǒng)不同。這種對(duì)訪問(wèn)的限制被提供來(lái)阻止在低特權(quán)等級(jí)處運(yùn)行的軟件干擾在較高 特權(quán)等級(jí)處運(yùn)行的軟件。這樣做的結(jié)果是如果打算用于高執(zhí)行等級(jí)的中斷被路由至在低執(zhí) 行等級(jí)處運(yùn)行的中斷處理軟件,那么通常該中斷不會(huì)被處理。這可以由本發(fā)明的實(shí)施例通 過(guò)允許根據(jù)中斷的目的地的執(zhí)行等級(jí)動(dòng)態(tài)地控制對(duì)一組中斷處理寄存器的訪問(wèn)來(lái)解決。 [0011] 在上文所述的系統(tǒng)中,在特定執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件可以自行訪問(wèn)在被 動(dòng)態(tài)改變的中斷處理寄存器中的一組寄存器,從而可以處理特定的進(jìn)入中斷。因此,由于進(jìn) 入中斷可以被在任意執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件處理而獲得了靈活度。此外,因?yàn)樵?各個(gè)執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件只訪問(wèn)與進(jìn)入中斷相關(guān)的系統(tǒng)寄存器,因此保護(hù)了系 統(tǒng)的安全性。該系統(tǒng)的另一優(yōu)勢(shì)是可以使軟件更便攜,因?yàn)椴恍枰谔囟▓?zhí)行等級(jí)處運(yùn)行 的中斷處理軟件來(lái)處理具體中斷。而是任何中斷都可以被路由至在不同執(zhí)行等級(jí)處運(yùn)行的 中斷處理軟件,在這些不同的執(zhí)行等級(jí)處,中斷仍可以被處理。上述的另一優(yōu)勢(shì)是有可能根 據(jù)需要明確地將中斷路由至非安全軟件、安全操作系統(tǒng)、或安全監(jiān)視器中的任意一個(gè)。因此 該系統(tǒng)的靈活性通過(guò)增加可用于處理給定中斷的選擇的數(shù)量得到提升。
[0012] 在一些實(shí)施例中,多個(gè)執(zhí)行等級(jí)包括EL0、EL1、EL2和EL3。EL0是用戶在其中執(zhí)行 軟件的執(zhí)行等級(jí)。ELI是訪客操作系統(tǒng)在其中執(zhí)行的具有較高特權(quán)的執(zhí)行等級(jí)。EL2是超 級(jí)監(jiān)督器在其中執(zhí)行的執(zhí)行等級(jí),其具有比ELI更多的特權(quán)。EL3是具有最多特權(quán)的執(zhí)行等 級(jí),安全監(jiān)視器在其中被執(zhí)行。需要注意的是訪客操作系統(tǒng)、超級(jí)監(jiān)督器軟件和安全監(jiān)視器 中的每一個(gè)可以包括中斷處理軟件。
[0013] 在一些實(shí)施例中,給予中斷處理寄存器的訪問(wèn)可以只取決于進(jìn)入中斷被路由至哪 個(gè)執(zhí)行等級(jí)。
[0014] 在一些實(shí)施例中,數(shù)據(jù)處理電路還可以包括用于檢測(cè)處理電路的當(dāng)前執(zhí)行模式的 處理器模式檢測(cè)電路、接收針對(duì)在預(yù)期執(zhí)行模式和預(yù)期執(zhí)行等級(jí)處運(yùn)行的特定中斷處理器 的進(jìn)入中斷的輸入電路、以及用于將進(jìn)入中斷路由至被配置為在特定執(zhí)行等級(jí)處運(yùn)行的中 斷處理軟件的路由電路。
[0015] 當(dāng)路由電路接收具有與處理電路的當(dāng)前執(zhí)行模式相符的預(yù)期執(zhí)行模式的進(jìn)入中 斷時(shí),該進(jìn)入中斷被路由至在預(yù)期執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件??商娲兀绻酚呻?路接收具有與處理電路的當(dāng)前執(zhí)行模式不相符的預(yù)期執(zhí)行模式的進(jìn)入中斷,那么路由電路 將該進(jìn)入中斷路由至被配置為在比預(yù)期執(zhí)行等級(jí)有更多特權(quán)的執(zhí)行等級(jí)并且可以是具有 最大特權(quán)的執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件。在一些實(shí)施例中,進(jìn)入中斷可以被路由至在 與安全監(jiān)視器運(yùn)行于其中的執(zhí)行等級(jí)相同的執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件。
[0016] 當(dāng)前執(zhí)行模式和預(yù)期執(zhí)行模式各自可以是安全模式或非安全模式。當(dāng)在安全模式 下操作時(shí),處理電路可以訪問(wèn)在所述非安全模式下操作的所述處理電路不可訪問(wèn)的安全數(shù) 據(jù)。此外,在一些實(shí)施例中,當(dāng)處理電路在非安全模式下操作時(shí),它訪問(wèn)在安全模式下操作 的所述處理電路不可訪問(wèn)的非安全數(shù)據(jù)。
[0017] 在一些實(shí)施例中,中斷處理電路包括確認(rèn)寄存器。該確認(rèn)寄存器指示中斷是待處 理的。確認(rèn)寄存器還返回預(yù)定義值以指示接收到的進(jìn)入中斷具有與當(dāng)前執(zhí)行模式不相符的 預(yù)期執(zhí)行模式。因此,確認(rèn)寄存器的預(yù)定義值可以被用于指示進(jìn)入中斷必須被路由至在不 同于針對(duì)進(jìn)入中斷最初所預(yù)期的執(zhí)行等級(jí)的執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件。在一些實(shí)施 例中,當(dāng)確認(rèn)寄存器返回預(yù)定義值時(shí),在預(yù)定的、具有更多特權(quán)的執(zhí)行等級(jí)處運(yùn)行的中斷處 理軟件被配置為改變處理電路的執(zhí)行模式并且隨后使得路由電路將進(jìn)入中斷路由至在預(yù) 期執(zhí)行等級(jí)處運(yùn)行的中斷處理軟件,其中該中斷被再次提取并且此次該中斷被完全處理及 完成。
[0018] 在其他實(shí)施例中,響應(yīng)于返回預(yù)定義值的確認(rèn)寄存器,在預(yù)定的執(zhí)行等級(jí)處運(yùn)行 的中斷處理軟件可以直接自行處理進(jìn)入中斷。例如,如果在執(zhí)行等級(jí)EL3處運(yùn)行的中斷處 理軟件處理進(jìn)入中斷比起切換處理器的操作模式以允許預(yù)期的中斷處理軟件處理進(jìn)入中 斷更有效,則這會(huì)發(fā)生。
[0019] 路由進(jìn)入中斷的過(guò)程可能涉及中斷異常的生成,該中斷異常隨后被轉(zhuǎn)發(fā)至中斷處 理軟件。這些中斷異常在系統(tǒng)內(nèi)部并且是由中斷控制器生成的以向處理器指示給定類別的 中斷的出現(xiàn)。中斷異常的示例包括FIQ和IRQ。
[0020] 在一些實(shí)施例中,數(shù)據(jù)處理設(shè)備生成虛擬中斷。中斷控制器電路可在第一設(shè)置和 第二設(shè)置之間切換。在第一設(shè)置中,進(jìn)入中斷被路由至在比預(yù)期執(zhí)行等