專利名稱:用于劃分安全保護(hù)的輸入/輸出許可位圖的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種內(nèi)存管理系統(tǒng)和方法,詳而言之,是涉及可在內(nèi)存中提供數(shù)據(jù)存儲(chǔ)保護(hù)的一種內(nèi)存管理系統(tǒng)和方法。
背景技術(shù):
80x86處理器(即x86)結(jié)構(gòu)允許輸入/輸出(I/O)地址空間從內(nèi)存地址空間分離出來(lái)。該x86 I/O地址空間為64k 8位數(shù)據(jù)單元的連續(xù)區(qū)塊,位于由0至65,535的地址范圍間(0000h至FFFFh,其中h指16進(jìn)制的數(shù)字),且典型地用于和外圍設(shè)備(如鍵盤、硬盤等等)做聯(lián)系。接口設(shè)備通常包含稱為”I/O端口”或簡(jiǎn)稱為”端口”的特殊訪問寄存器。該I/O端口可為8位、16位或32位端口。該8位端口系以其獨(dú)特的字節(jié)地址進(jìn)行訪問。該16位I/O端口包含兩個(gè)相鄰的字節(jié),而32位I/O端口包含四組鄰近的字節(jié)。該16和32位I/O端口系以其總I/O地址空間的最低地址進(jìn)行訪問。
在x86處理器的I/O地址空間中的地址可對(duì)應(yīng)至連接于x86處理器的接口設(shè)備的不同端口。無(wú)論在地址信號(hào)線以地址信號(hào)驅(qū)動(dòng)的地址是在內(nèi)存地址空間或是I/O地址空間中,該x86處理器皆以內(nèi)存輸入/輸出(M/IO)信號(hào)驅(qū)動(dòng)M/IO信號(hào)線。
該x86指令組包含特殊I/O指令以驅(qū)動(dòng)該I/O地址空間。該x86 I/O指令提供方法使x86處理器的內(nèi)部寄存器和對(duì)應(yīng)于I/O地址空間的I/O端口間以及于連接于該x86處理器的內(nèi)存和該I/O端口間做數(shù)據(jù)的交換。該x86I/O指令包含”IN”(由端口輸入)以及”O(jiān)UT”(輸出至端口)寄存器指令,以及”INS”(由端口輸入串)以及”O(jiān)UTS”(輸出串至端口)區(qū)塊或串I/O指令。該區(qū)塊x86指令直接由I/O端口傳送數(shù)據(jù)至該內(nèi)存,也可直接由該內(nèi)存?zhèn)魉椭罥/O端口。
“任務(wù)”為單一執(zhí)行的連續(xù)線程(thread)。80286和后來(lái)的x86處理器支持多任務(wù)處理,亦即可同時(shí)處理多個(gè)任務(wù)。只有一個(gè)任務(wù)真正在任何給定的時(shí)間內(nèi)執(zhí)行;該x86處理器依指示輕易地在多個(gè)任務(wù)間切換。
現(xiàn)代x86處理器能夠在任何一個(gè)不同的模式中運(yùn)行,該不同的模式包括真實(shí)地址或”真實(shí)”模式、保護(hù)虛擬地址或”保護(hù)”地址以及虛擬8086或”虛擬”模式。在該保護(hù)模式中,通過(guò)設(shè)定在FLAGS寄存器中的輸入/輸出權(quán)限級(jí)別(IOPL)控制該I/O地址的使用。在80386和后來(lái)的x86處理器,通過(guò)在該任務(wù)的任務(wù)狀態(tài)段(TSS)中的I/O許可位圖控制對(duì)應(yīng)至該I/O地址空間的個(gè)別端口的訪問。大部分的保護(hù)模式操作系統(tǒng)限制I/O端口的訪問在I/O端口自身之間(權(quán)限級(jí)別為0),而于”信任的”設(shè)備驅(qū)動(dòng)則為一個(gè)小數(shù)字(權(quán)限級(jí)別為1)。
當(dāng)80386或后來(lái)的x86處理器以保護(hù)模式運(yùn)作,可利用兩種機(jī)制通過(guò)任務(wù)限制對(duì)I/O地址空間的訪問。首先,通過(guò)對(duì)標(biāo)志(EFLAGS)寄存器的IOPL的設(shè)定控制該I/O指令的使用。接著,通過(guò)各任務(wù)的TSS中的I/O許可位圖控制I/O空間中的個(gè)別I/O端的訪問。必須注意的是,該I/O許可位圖的機(jī)制僅在80386與后來(lái)的x86處理器中執(zhí)行。
大部分的保護(hù)模式操作系統(tǒng)企圖限制I/O指令的使用限于I/O指令之間而信任設(shè)備驅(qū)動(dòng)則限制于一個(gè)小數(shù)字。于該x86處理器結(jié)構(gòu)的同心環(huán)權(quán)限模塊中,保護(hù)模式操作系統(tǒng)軟件典型地于內(nèi)環(huán)中以權(quán)限級(jí)別0執(zhí)行,而信任設(shè)備驅(qū)動(dòng)則是于包圍該內(nèi)環(huán)的環(huán)中以權(quán)限級(jí)別1或權(quán)限級(jí)別0執(zhí)行。應(yīng)用程序通常在外環(huán)中以權(quán)限級(jí)別3執(zhí)行。
當(dāng)x86處理器于保護(hù)模式下執(zhí)行任務(wù)的I/O指令,該x86處理器首先將該任務(wù)的該當(dāng)前權(quán)限級(jí)別(CPL)與該IOPL做比較。若該任務(wù)的該CPL與該IPOL的權(quán)限一樣(亦即數(shù)字上小于或等于),則該x86處理器執(zhí)行該I/O指令。換句話說(shuō),若該CPL的權(quán)限不如(亦即數(shù)字上大于)該IOPL則該x86處理器確認(rèn)該任務(wù)的TSS中的I/O許可位圖。
圖1揭示該熟知的該x86結(jié)構(gòu)的I/O許可位圖保護(hù)機(jī)制。圖1為示意圖,顯示存儲(chǔ)于內(nèi)存100中的TSS 102和對(duì)應(yīng)的I/O許可位圖104。該TSS 102始于內(nèi)存段的開端(亦即基礎(chǔ))而該I/O許可位圖104結(jié)束于該內(nèi)存段的終端(亦即極限)。該TSS 102包括在該內(nèi)存段中與地址66h相關(guān)的16位“I/O映像基礎(chǔ)(I/O map base)”。該I/O映像基礎(chǔ)具有對(duì)應(yīng)于I/O許可位圖104的第一字節(jié)的偏移量,該偏移量為字節(jié)的偏移量。
該I/O許可位圖104的每一位在該I/O空間中都有對(duì)應(yīng)的字節(jié)。例如,該I/O許可位圖104的第一位表示于該I/O空間中地址”0”的8位端口,第二位表示于該I/O空間中地址”1”的8位端口,以此類推。該I/O端口訪問的數(shù)字被做為進(jìn)入該I/O許可位圖104的位偏移量。若對(duì)應(yīng)至該I/O端口訪問的位于I/O許可位圖104中的位顯示為”0”,該x86處理器(連接于該內(nèi)存100且訪問該I/O保護(hù)位圖104)執(zhí)行該I/O指令。若該位設(shè)為”1”,該x86處理器就不會(huì)執(zhí)行該I/O指令,且產(chǎn)生一般性保護(hù)錯(cuò)誤。當(dāng)16位字組或32位雙字組于I/O端口訪問,所有代表該端口鄰近字節(jié)的位必須全部顯示為”0”以讓該x86處理器執(zhí)行該I/O指令。
當(dāng)I/O空間越趨稀疏,且8k字節(jié)必須用于表現(xiàn)該I/O空間的全部64k端口,該I/O許可位圖保護(hù)機(jī)制包含一種方法以縮短I/O許可位圖。將看待該具有越過(guò)I/O許可位圖終端的地址的I/O端口猶如于該I/O許可位圖中對(duì)應(yīng)的位被設(shè)為1。
問題發(fā)生在該x86處理器結(jié)構(gòu)的該I/O保護(hù)位圖機(jī)制無(wú)法充分適當(dāng)?shù)乇Wo(hù)該I/O地址空間。例如,任何執(zhí)行于該監(jiān)督級(jí)(如CPL為0)的任務(wù)可于任何時(shí)間訪問任何該I/O地址空間的端口。此外,執(zhí)行于該監(jiān)督級(jí)的第一任務(wù)可修該第二任務(wù)的I/O許可位圖中的位以允許該第二任務(wù)于該I/O地址空間中訪問任何或全部的端口。接著該第二任務(wù)可繼續(xù)訪問一或更多I/O地址空間中的端口。本發(fā)明為針對(duì)一種系統(tǒng)及/或方法可用于解決或至少可以減少上述的無(wú)法適當(dāng)?shù)乇Wo(hù)x86結(jié)構(gòu)的I/O空間的問題。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供一種方法用于選擇性執(zhí)行輸入/輸出(I/O)指令。該方法包含在內(nèi)存中產(chǎn)生I/O許可位圖并且接收I/O端口數(shù)字和安全狀態(tài)認(rèn)證(SCID)值。該方法還包括以該SCID值和該I/O端口數(shù)字訪問該存儲(chǔ)的I/O許可位圖以獲得對(duì)應(yīng)于該I/O端口的許可位,并且根據(jù)對(duì)應(yīng)的該I/O端口的許可位值執(zhí)行該I/O指令。該I/O許可位圖包含多個(gè)許可位。每一個(gè)許可位對(duì)應(yīng)至該多個(gè)I/O端口的不同的一個(gè)。每一個(gè)該許可位具有數(shù)值可用于指示訪問至對(duì)應(yīng)的I/O端口是否被允許。該I/O端口數(shù)字依據(jù)該I/O指令來(lái)指示該I/O端口。該SCID值指示包含有該I/O指令的內(nèi)存位置的安全狀態(tài)級(jí)別。
通過(guò)參照所附的圖示可更了解本發(fā)明上述的說(shuō)明,圖標(biāo)中類似組件標(biāo)有類似的參考符號(hào),且其中圖1為示意圖,其顯示存儲(chǔ)于內(nèi)存中的x86結(jié)構(gòu)的任務(wù)狀態(tài)段(TSS),以及對(duì)應(yīng)的x86結(jié)構(gòu)的I/O許可位圖;圖2為示意圖,其顯示依據(jù)本發(fā)明的計(jì)算機(jī)系統(tǒng)的實(shí)施例,該計(jì)算機(jī)系統(tǒng)包含中央處理器(CPU)、系統(tǒng)或”主機(jī)”橋接器、內(nèi)存、第一設(shè)備總線(如計(jì)算機(jī)外設(shè)部件連接或PCI總線)、設(shè)備總線橋接器、第二設(shè)備總線(如工業(yè)標(biāo)準(zhǔn)架構(gòu)或ISA總線)以及四個(gè)設(shè)備硬件單元,其中該CPU包含輸入/輸出(I/O)安全檢驗(yàn)單元(SCU),該I/O SCU用于保護(hù)該設(shè)備硬件單元使之避免該CPU產(chǎn)生的未經(jīng)授權(quán)的訪問。
圖3為示意圖,其顯示圖2中該計(jì)算機(jī)系統(tǒng)的軟件與各種硬件之間的關(guān)系;圖4為示意圖,其顯示圖2中該計(jì)算機(jī)系統(tǒng)200的該CPU的實(shí)施例,其中該CPU包含執(zhí)行單元、內(nèi)存管理單元(MMU)以及連接于該執(zhí)行單元以及該MMU間的總線接口單元(BIU),其中該BIU包含該I/OSCU;圖5為示意圖,其顯示圖4中的I/O SCU的實(shí)施例;圖6為示意圖,其顯示圖2中的存儲(chǔ)于該內(nèi)存中的安全執(zhí)行模式(SEM)I/O許可位圖的實(shí)施例以及用于訪問該SEM I/O許可位圖的機(jī)制的實(shí)施例;圖7為示意圖,其顯示圖6中該SEM I/O許可位圖的另一個(gè)實(shí)施例以及用于訪問該SEM I/O許可位圖的機(jī)制的另一實(shí)施例;圖8為示意圖,其顯示圖2中該計(jì)算機(jī)系統(tǒng)的CPU的另一實(shí)施例,其中該CPU包含執(zhí)行單元、內(nèi)存管理單元MMU、連接于該執(zhí)行單元和該內(nèi)存管理單元MMU的總線接口單元BIU、以及連接于該處理單元、該MMU以及該BIU的微碼引擎,且其中該微碼引擎執(zhí)行存儲(chǔ)于微碼存儲(chǔ)器中的微碼指令并產(chǎn)生信號(hào),該信號(hào)控制該執(zhí)行單元、該MMU以及該BIU的運(yùn)行獨(dú)立于該微碼指令;圖9為示意圖,其顯示第二圖中該計(jì)算機(jī)系統(tǒng)的軟件與該各種硬件間的關(guān)系,其中第一設(shè)備驅(qū)動(dòng)以及對(duì)應(yīng)的第一設(shè)備硬件單元屬于第一安全”隔間”,而第二設(shè)備驅(qū)動(dòng)和對(duì)應(yīng)的第二設(shè)備硬件單元屬于與第一安全隔間分離的第二安全隔間,且其運(yùn)行也為各自獨(dú)立。
本發(fā)明可由此說(shuō)明書中獲得益處的此領(lǐng)域的技術(shù)人員熟知的不同卻等效的方式作修改與實(shí)施,因此前文所揭示的實(shí)施例僅做為例證的用。此外,此處詳細(xì)的敘述與樣式并非意圖限制本發(fā)明。在此確信該揭露的實(shí)施例于本發(fā)明的精神與范疇下可以多種不同的形式替換或修改。因此,本發(fā)明所欲申請(qǐng)的保護(hù)系如后附之申請(qǐng)專利范圍所述。
具體實(shí)施例方式
本發(fā)明的例證性的實(shí)施例如后敘述。為求簡(jiǎn)潔,于說(shuō)明書中并未列出所有實(shí)際實(shí)現(xiàn)的特征。在此將了解,任何實(shí)施例以及各種特定實(shí)現(xiàn)的決定均可達(dá)成開發(fā)者的特定目標(biāo),如系統(tǒng)相關(guān)以及商業(yè)相關(guān)的衡量,將會(huì)依不同需求而有不同的結(jié)果。此外,此種開發(fā)亦是復(fù)雜且費(fèi)時(shí)的,但將成為由此揭示而獲得益處的該領(lǐng)域的技術(shù)人員日常執(zhí)行的工作。
圖2為示意圖,其顯示依據(jù)本發(fā)明的計(jì)算機(jī)系統(tǒng)200的實(shí)施例,該計(jì)算機(jī)系統(tǒng)200包含中央處理器(CPU)202、系統(tǒng)或”主機(jī)”橋接器204、內(nèi)存206、第一設(shè)備總線208(如計(jì)算機(jī)外設(shè)部件連接或PCI總線)、設(shè)備總線橋接器210、第二設(shè)備總線212(如工業(yè)標(biāo)準(zhǔn)架構(gòu)或ISA總線)以及四個(gè)設(shè)備硬件單元214A-214D。該主機(jī)橋接器204連接于該CPU202、內(nèi)存206以及該第一設(shè)備總線208。該橋接器204于該第一設(shè)備總線以及該第二設(shè)備總線212間傳遞信號(hào)。該設(shè)備總線橋接器210連接于該第一設(shè)備總線208和該第二設(shè)備總線212,并在第一設(shè)備總線208和該第二設(shè)備總線212間傳遞信號(hào)。于圖2的實(shí)施例中,該硬件設(shè)備單元214A和214B連接于該第一設(shè)備總線208,而該設(shè)備硬件單元214C和214D連接于該第二設(shè)備總線212。一個(gè)或多個(gè)該設(shè)備硬件單元214A-214D,舉例來(lái)說(shuō)可為存儲(chǔ)設(shè)備(如硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器以及CD-ROM驅(qū)動(dòng)器)、通訊設(shè)備(如調(diào)制解調(diào)器和網(wǎng)絡(luò)轉(zhuǎn)接器)或輸入/輸出設(shè)備(如影像設(shè)備、音響設(shè)備以及打印機(jī))。
于圖2的實(shí)施例中,該CPU202包含輸入/輸出(I/O安全檢驗(yàn)單元(SCU)216。該設(shè)備硬件單元214A-214D可對(duì)應(yīng)至該CPU202的該I/O空間的各種I/O端口,且該CPU 202可通過(guò)對(duì)應(yīng)的I/O端口與該設(shè)備硬件單元214A-214D交流。在此情況中,該I/O SCU 216是用于保護(hù)該設(shè)備硬件單元214A-214D使之避免該CPU202產(chǎn)生的未經(jīng)授權(quán)的訪問。在此必須注意,在其它實(shí)施例中該主機(jī)橋接器204可如圖2中為CPU202的一部分。
圖3為示意圖,其顯示圖2中該計(jì)算機(jī)系統(tǒng)的軟件與各種硬件之間的關(guān)系。于圖3的實(shí)施例中,多個(gè)應(yīng)用程序300、操作系統(tǒng)302、安全核心304以及設(shè)備驅(qū)動(dòng)306A-306D皆存儲(chǔ)于該內(nèi)存206中。該應(yīng)用程序300、該操作系統(tǒng)302、該安全核心304以及該設(shè)備驅(qū)動(dòng)306A-306D包含由該CPU302所執(zhí)行的指令。該操作系統(tǒng)302提供用戶接口和供應(yīng)用程序300在其上運(yùn)行的軟件”平臺(tái)”。該操作系統(tǒng)302同時(shí)可提供,一些如基本支持功能,包含文件系統(tǒng)管例、程序管理以及I/O控制。
該操作系統(tǒng)302可同時(shí)提供基本的安全功能。例如,該CPU202(在圖2中)可為x86處理器,其執(zhí)行該x86指令組的指令。在此情況中,該CPU202如前所述可包括提供虛擬內(nèi)存和物理內(nèi)存保護(hù)特征的專門硬件組件。該操作系統(tǒng)302可為例如Windows系列的操作系統(tǒng)(Microsoft Corp.,Redmond,WA),其在保護(hù)模式中運(yùn)行該CPU302,且在保護(hù)模式中使用該CPU202的專門硬件組件提供虛擬內(nèi)存和內(nèi)存保護(hù)。
如后所述,該安全核心304較該操作系統(tǒng)302提供更多的安全功能以保護(hù)存儲(chǔ)于該內(nèi)存206中的數(shù)據(jù)避免未經(jīng)授權(quán)的訪問。如圖3所示,該安全核心304連接于該I/O SCU 216。該I/O SCU 216監(jiān)控在I/O地址空間中的所有初始化的軟件對(duì)該I/O端口的訪問,且只允許經(jīng)授權(quán)者對(duì)該I/O端口訪問。
在圖3的實(shí)施例中,該設(shè)備驅(qū)動(dòng)306A-306D在運(yùn)行上皆關(guān)聯(lián)且連接至各自對(duì)應(yīng)的設(shè)備硬件單元214A-214D。該設(shè)備硬件單元214A和214D可為如”安全的”設(shè)備,以及該對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)306A和306D可為如”安全”設(shè)備驅(qū)動(dòng)。該安全核心304連接于該操作系統(tǒng)302和該安全的設(shè)備驅(qū)動(dòng)306A及306D之間,并且可監(jiān)控由應(yīng)用程序300和該操作系統(tǒng)302至安全的設(shè)備驅(qū)動(dòng)306A和306D以及對(duì)應(yīng)的安全的設(shè)備214A和214D的所有訪問。該安全核心304可避免應(yīng)用程序300和該操作系統(tǒng)302所發(fā)出的對(duì)該安全設(shè)備驅(qū)動(dòng)306A和306D以及對(duì)應(yīng)的安全設(shè)備214A和214D的未經(jīng)授權(quán)的訪問。該設(shè)備驅(qū)動(dòng)214B和214C可為”非安全”設(shè)備驅(qū)動(dòng),且該對(duì)應(yīng)的設(shè)備硬件單元214B和214C可為”非安全”設(shè)備硬件單元。該設(shè)備驅(qū)動(dòng)306B和306C以及相對(duì)應(yīng)的設(shè)備硬件單元214B和214C可為如”傳統(tǒng)”設(shè)備驅(qū)動(dòng)以及設(shè)備硬件單元。
注意到,在其它實(shí)施例中該安全核心304可為該操作系統(tǒng)302的一部分。在此實(shí)施例中,該安全核心304、該設(shè)備驅(qū)動(dòng)306A和306D以及/或該設(shè)備驅(qū)動(dòng)306B和306C可為該操作系統(tǒng)302的一部分。
圖4為示意圖,其顯示圖2中該計(jì)算機(jī)系統(tǒng)200的該CPU202的實(shí)施例。在圖4的實(shí)施例中,該CPU202包含執(zhí)行單元400、內(nèi)存管理單元(MMU)402、高速緩存單元404、總線接口單元(BIU)406、一組控制寄存器408、一組安全執(zhí)行模式(SEM)寄存器410??偩€接口單元(BIU)406還連接到主橋204(圖2),并在該CPU202和該主機(jī)橋接器204之間形成接口。該BIU 406還通過(guò)該橋接器204連接到該內(nèi)存206(圖2),并在該CPU 202和該內(nèi)存206之間形成接口。在圖4的此實(shí)施例中該I/O SCU 216位于該BIU 406中。
如后之詳述,該SEM寄存器組410被用于在圖2的該計(jì)算機(jī)系統(tǒng)(200)中實(shí)現(xiàn)安全執(zhí)行模式(SEM),且該I/O SCU 216的運(yùn)行是由該SEM寄存器組410的內(nèi)容來(lái)管理的。該SEM寄存器410由該安全核心304(圖3)進(jìn)行訪問(寫入和/或讀取)。
在圖4的實(shí)施例中,該SEM寄存器組410包含SEM位。圖2中的該計(jì)算機(jī)系統(tǒng)200可以在下列情況下運(yùn)行在安全執(zhí)行模式下(i)該CPU202為運(yùn)行于x86保護(hù)模式下的x86處理器,(ii)內(nèi)存分布被使用,以及(iii)該SEM位被設(shè)為”1”時(shí)。
一般來(lái)說(shuō),控制寄存器組408的內(nèi)容管理該CPU202的運(yùn)行。于是,該控制寄存器組408的內(nèi)容也管理該執(zhí)行單元400、該MMU402、該高速緩存單元404和/或該BIU406。該控制寄存器組408可包含如該x86處理器構(gòu)造的多個(gè)控制寄存器。
在指令執(zhí)行期間,該CPU 202的該執(zhí)行單元400提取指令(如x86指令)和數(shù)據(jù)、執(zhí)行提取的指令以及生成信號(hào)(如地址、數(shù)據(jù)和控制信號(hào))。該執(zhí)行單元400連接于該高速緩存單元404,且可通過(guò)該高速緩存單元404和該BIU 406接收來(lái)自于該內(nèi)存206(圖2)的指令。
該計(jì)算機(jī)系統(tǒng)200的內(nèi)存206(圖2)包含多個(gè)內(nèi)存位置,每一個(gè)內(nèi)存位置具有唯一的物理地址。當(dāng)運(yùn)行于保護(hù)模式且分頁(yè)被激活時(shí),該CPU202的地址空間將分為多個(gè)區(qū)塊,這些區(qū)塊稱為頁(yè)幀或”分頁(yè)”。只有對(duì)應(yīng)于該分頁(yè)的一部分的的數(shù)據(jù)能夠隨時(shí)于該內(nèi)存206中存儲(chǔ)。在圖4的實(shí)施例中,當(dāng)指令顯示為已分段的(亦即”邏輯上”)地址的時(shí),地址信號(hào)由該執(zhí)行單元400產(chǎn)生。該MMU402傳送由該執(zhí)行單元400產(chǎn)生的該分段的地址至對(duì)應(yīng)的該內(nèi)存206的物理地址。該MMU402提供該物理地址給該高速緩存單元404。該高速緩存單元404是一種相對(duì)較小的存儲(chǔ)單元,用于存儲(chǔ)該執(zhí)行單元400最近所提取的指令和數(shù)據(jù)。
該BIU 406連接于該快速緩沖存儲(chǔ)單位404和該主機(jī)橋接器204之間。該BIU 406用于通過(guò)該主機(jī)橋接器204從該內(nèi)存206提取當(dāng)前不在該高速緩存單元404中的指令和數(shù)據(jù)。該BIU 406同時(shí)包含該I/OSCU 216。該I/O SCU 216連接于該SEM寄存器410、該執(zhí)行單元400和該MMU402。如前所述,該I/O SCU 216監(jiān)控對(duì)該I/O地址空間中的該I/O端口的所有軟啟動(dòng)(software-initiated)的訪問,且只允許經(jīng)授權(quán)者對(duì)該I/O端口訪問。
圖5為示意圖,其顯示圖4中的I/O SCU的實(shí)施例。在圖5的實(shí)施例中,該I/O SCU 216包含安全檢驗(yàn)邏輯500。該安全檢驗(yàn)邏輯500由該執(zhí)行單元400接收”激活”信號(hào)和I/O端口數(shù)字,并且由該MMU 402接收安全狀態(tài)認(rèn)證(SCID)值。該執(zhí)行單元400可判定該激活信號(hào)優(yōu)先于執(zhí)行在該I/O位空間中的”目標(biāo)”I/O端口的訪問。該I/O端口數(shù)字為該目標(biāo)I/O端口的數(shù)字。該SCID值表示含有該I/O指令的該內(nèi)存頁(yè)面的安全狀態(tài)級(jí)。
當(dāng)圖2的該計(jì)算機(jī)系統(tǒng)200在該SEM中運(yùn)行時(shí),該安全核心304(圖3)產(chǎn)生且維持一個(gè)或多個(gè)圖2中的安全特性數(shù)據(jù)結(jié)構(gòu)(如表格)。每一個(gè)內(nèi)存頁(yè)面有與其對(duì)應(yīng)的SCID值,且該對(duì)應(yīng)的SCID值可存儲(chǔ)于該安全特性數(shù)據(jù)結(jié)構(gòu)中。該MMU 402使用一個(gè)在指令執(zhí)行期間所產(chǎn)生的地址(如物理地址)訪問該一個(gè)或多個(gè)安全特性數(shù)據(jù)結(jié)構(gòu)以獲得該對(duì)應(yīng)的內(nèi)存頁(yè)面的該SCID。一般來(lái)說(shuō),該計(jì)算機(jī)系統(tǒng)200具有n個(gè)不同的SCID值,其中n為一個(gè)大于等于1的整數(shù)。
當(dāng)圖2中的該計(jì)算機(jī)系統(tǒng)200在SEM下運(yùn)行,該安全核心304(圖3)同時(shí)產(chǎn)生且維持在該內(nèi)存206(圖2)中的SEM I/O許可位圖。當(dāng)該執(zhí)行單元400(圖4)執(zhí)行一項(xiàng)任務(wù)的I/O指令時(shí),在該CPU202中的邏輯可首先對(duì)該任務(wù)的當(dāng)前權(quán)限級(jí)別(CPL)與輸入/輸出權(quán)限級(jí)別(IOPL)作比較。
若該任務(wù)的該CPL至少與該IOPL有相同的權(quán)限(亦即數(shù)字上小于或等于)則該CPU202中的邏輯即可檢驗(yàn)該SEM I/O許可位圖。相反地,若該任務(wù)的該CPL不夠在該IOPL的權(quán)限(亦即數(shù)字上大于),則該執(zhí)行單元400將不執(zhí)行該I/O指令。于一實(shí)施例中,將會(huì)產(chǎn)生一個(gè)一般性保護(hù)錯(cuò)誤。
當(dāng)該執(zhí)行單元400(圖4)確認(rèn)該激活信號(hào)時(shí),該安全檢驗(yàn)邏輯500提供該激活信號(hào)、該接收的SCID值和該接收的I/O端口數(shù)字給該BIU406中的邏輯。該BIU 406中的邏輯使用該SCID值和該接收的I/O端口數(shù)字以訪問該SEM I/O許可位圖,并從該SEM I/O許可位圖提供對(duì)應(yīng)的位至該安全檢驗(yàn)邏輯500。若來(lái)自于該SEM I/O許可位圖的對(duì)應(yīng)位顯示為”0”,則該安全檢驗(yàn)邏輯500可確認(rèn)輸出”執(zhí)行”信號(hào)至該執(zhí)行單元400。響應(yīng)該確認(rèn)的”執(zhí)行”信號(hào),該執(zhí)行單元400可執(zhí)行該I/O指令。相反地,若該對(duì)應(yīng)位顯示為”1”,則該安全檢驗(yàn)邏輯500可判定輸出”SEM安全異?!毙盘?hào)至該執(zhí)行單元400。響應(yīng)該確認(rèn)的”SEM安全異?!毙盘?hào),該執(zhí)行單元400將不執(zhí)行該I/O指令,代替為執(zhí)行一個(gè)SEM異常運(yùn)行控制。
當(dāng)該I/O指令企圖訪問16位字組I/O端口或32位雙字組I/O端口,該執(zhí)行單元400將連續(xù)地提供多字節(jié)I/O端口數(shù)字至該安全檢驗(yàn)邏輯500。若該安全檢查邏輯500判定各該字節(jié)I/O端口數(shù)字為該執(zhí)行信號(hào),則該執(zhí)行單元400將執(zhí)行該I/O指令。相反地,若該安全檢查邏輯500判定各該字節(jié)I/O端口數(shù)字為該SEM安全異常信號(hào),則該執(zhí)行單元400將不執(zhí)行該I/O指令,且將執(zhí)行一個(gè)SEM異常運(yùn)行控制來(lái)代替。
圖6為示意圖,其顯示圖2中的存儲(chǔ)于該內(nèi)存中的安全執(zhí)行模式(SEM)I/O許可位圖的實(shí)施例以及用于訪問該SEM I/O許可位圖的機(jī)制的實(shí)施例,該SEM I/O許可位圖在圖6中以600標(biāo)示。圖6中的機(jī)制可實(shí)施于BIU 406(圖6)的邏輯中,且當(dāng)該計(jì)算機(jī)系統(tǒng)200于SEM下運(yùn)行時(shí)可供其使用。在圖6中,該SEM寄存器組410具有模式指定寄存器(MSR)602。該MSR 602用于存儲(chǔ)該SEM I/O許可位圖600的開始(亦即基礎(chǔ))地址。如前所述該計(jì)算機(jī)系統(tǒng)200具有n個(gè)不同的SCID值,其中n為一個(gè)大于等于1的整數(shù)。該SEM I/O許可位圖600對(duì)于n個(gè)不同的SCID值中的每一個(gè)都包括一個(gè)不同的I/O許可位圖。每個(gè)獨(dú)立的I/O許可位圖具有64k位或8k字節(jié)。
在圖6的實(shí)施例中,具有訪問該I/O端口的I/O指令的內(nèi)存頁(yè)面的該SCID值是做為來(lái)自于該MSR 602的內(nèi)容(亦即該SEM I/O許可位圖600的該基礎(chǔ)地址)的偏移量成為組成該SEM I/O許可位圖600的一個(gè)或多個(gè)64k位(8字節(jié))的I/O許可位圖。因此,對(duì)應(yīng)于該SCID值的該I/O許可位圖即可被訪問。該I/O端口數(shù)字于是被作為進(jìn)入對(duì)應(yīng)于SCID值的該I/O許可位圖的位偏移量。以這種方式訪問的位即為由I/O端口數(shù)字所定義的該I/O端口的對(duì)應(yīng)位。
圖7為示意圖,其顯示圖6中該SEM I/O許可位圖的另一個(gè)實(shí)施例以及用于訪問該SEM I/O許可位圖的機(jī)制的另一實(shí)施例,該SEM I/O許可位圖在圖7中以700做標(biāo)記。圖7中的機(jī)制可實(shí)施于該BIU 406(圖4)中的邏輯。在圖7的實(shí)施例中,該SEM I/O許可位圖700具有單獨(dú)的一個(gè)64位(8k字節(jié))I/O許可位圖。該I/O端口數(shù)字做為來(lái)自于該MSR602的內(nèi)容(亦即該SEM I/O許可位圖600的基礎(chǔ)地址)的位偏移量而成為該I/O許可位圖。以這種方式訪問的位即為由I/O端口數(shù)字所定義的該I/O端口的對(duì)應(yīng)位。
圖8為示意圖,其顯示圖2中該計(jì)算機(jī)系統(tǒng)200的該CPU202的另一實(shí)施例。于圖8的實(shí)施例中,該CPU202包含執(zhí)行單元400、MMU402、高速緩存單元404、BIU 406、控制寄存器組408以及如前述的該SEM寄存器組410。此外,該CPU 202具有微碼引擎800和微碼存儲(chǔ)器802。此微碼引擎800連接于該執(zhí)行單元400、該MMU 402、該高速緩存單元404、該BIU 406、該控制寄存器組408以及該SEM寄存器組410。該微碼引擎800執(zhí)行存儲(chǔ)于微碼存儲(chǔ)器802中的微碼指令并產(chǎn)生信號(hào),該信號(hào)控制該執(zhí)行單元400、該MMU402、該高速緩存單元404以及該BIU406且此控制運(yùn)行依賴于該微碼指令以及控制寄存器組408和該SEM寄存器組410的內(nèi)容。該微碼引擎800并同時(shí)協(xié)助該執(zhí)行單元400執(zhí)行多個(gè)該x86指令組的復(fù)合指令。
在圖8的實(shí)施例中,存儲(chǔ)于該微碼存儲(chǔ)設(shè)備802中的微碼指令的一部分形成I/O安全檢驗(yàn)碼804。當(dāng)圖2的該計(jì)算機(jī)系統(tǒng)200運(yùn)行于SEM中的時(shí)執(zhí)行該I/O安全檢驗(yàn)碼801,而I/O指令被傳遞到執(zhí)行單元400以便執(zhí)行。本質(zhì)上,該I/O安全檢驗(yàn)碼804的該微碼指令造成該微碼引擎800和該BIU 406執(zhí)行如前所述的該I/O SCU 216(圖2至圖4)的功能。
例如,當(dāng)I/O指令傳遞到該執(zhí)行單元400執(zhí)行時(shí),該執(zhí)行單元400可發(fā)出當(dāng)前該I/O指令的信號(hào)至該微碼引擎800。該微碼引擎可判定信號(hào)至該MMU 402和該BIU 406。響應(yīng)來(lái)自于該位碼引擎800的信號(hào),該MMU 402將提供包括有該I/O指令的內(nèi)存頁(yè)面的SCID值至該BIU406。該執(zhí)行單元400將提供該I/O指令訪問的I/O端口數(shù)字至該BIU406。
響應(yīng)來(lái)自于該微碼引擎800的信號(hào),該BIU 406將使用該SCID值和該接收的I/O端口數(shù)字訪問該SEM I/O許可位圖,如前所述。并將提供來(lái)自于該SEM I/O許可位圖的對(duì)應(yīng)的位至該微碼引擎800。若來(lái)自于該SEM I/O許可位圖顯示為”0”,則該微碼引擎800可繼續(xù)協(xié)助該執(zhí)行單元400以完成該I/O指令的執(zhí)行。相反地,若該對(duì)應(yīng)的位顯示為”1”,則該微碼引擎可發(fā)出信號(hào)至該執(zhí)行單元400以停止執(zhí)行該I/O指令并啟動(dòng)執(zhí)行SEM異常運(yùn)行控制。
圖9用于描述如何為SCID值賦值以及該對(duì)應(yīng)的SEM I/O許可位圖如何產(chǎn)生,如何做為”分隔”設(shè)備驅(qū)動(dòng)并結(jié)合圖2中的該計(jì)算機(jī)系統(tǒng)200中設(shè)備硬件單元以達(dá)成安全的目的。圖9為示意圖,其顯示圖2中該計(jì)算機(jī)系統(tǒng)200的軟件與該各種硬件間的關(guān)系,其中設(shè)備驅(qū)動(dòng)306A以及對(duì)應(yīng)的設(shè)備硬件單元214A屬于第一安全”隔間”900,而設(shè)備驅(qū)動(dòng)306D和對(duì)應(yīng)的設(shè)備硬件單元214D屬于與第一安全隔間900分離的第二安全隔間902,且其運(yùn)行也是各自獨(dú)立。只有該設(shè)備驅(qū)動(dòng)306A能訪問該設(shè)備硬件單元214A,且只有該設(shè)備驅(qū)動(dòng)306D可訪問該設(shè)備硬件單元214D。該設(shè)備驅(qū)動(dòng)和相關(guān)的硬件單元的”分隔”幫助避免惡意代碼或錯(cuò)誤代碼對(duì)該設(shè)備硬件單位的狀態(tài)所造成的負(fù)面的影響或介入圖2的該計(jì)算機(jī)系統(tǒng)200的正常運(yùn)行。
例如,于圖9的實(shí)施例中,具有該設(shè)備驅(qū)動(dòng)306A和306D指令的內(nèi)存頁(yè)面可分配到不同的SCID值。為該設(shè)備驅(qū)動(dòng)306A的該SCID值所產(chǎn)生的第一SEM I/O許可位圖,可允許該設(shè)備驅(qū)動(dòng)306A訪問第一部分,該第一部分被分配給該設(shè)備硬件單元214A的該計(jì)算機(jī)系統(tǒng)200的I/O地址空間的第一部分,且將不允許該設(shè)備驅(qū)動(dòng)306A訪問分配給該設(shè)備硬件單元214D的I/O地址空間的第二部分。同樣地,為該設(shè)備驅(qū)動(dòng)306D的SCID值所產(chǎn)生的第二SEM I/O許可位圖,可允許該設(shè)備驅(qū)動(dòng)306D訪問分配給該設(shè)備硬件單元214D的I/O地址空間的第二部分,而不允許該設(shè)備驅(qū)動(dòng)306A訪問分配給該設(shè)備硬件單元214A的I/O地址空間的第一部分。因此,只有該設(shè)備驅(qū)動(dòng)306A可訪問該設(shè)備硬件單元214A,也只有該設(shè)備驅(qū)動(dòng)306D可訪問該設(shè)備硬件單元214D。
本發(fā)明如前所述的一些目的可用于硬件或軟件當(dāng)中。因此,說(shuō)明書中的部分詳述可用于硬件實(shí)施過(guò)程而說(shuō)明書中的部分詳述也可用于軟件實(shí)施過(guò)程,該軟件實(shí)施過(guò)程系牽涉到運(yùn)算系統(tǒng)或運(yùn)算設(shè)備的內(nèi)存中數(shù)據(jù)位的操作符號(hào)表現(xiàn)。該詳述和表現(xiàn)的意義系為該技術(shù)領(lǐng)域的相關(guān)人員間以硬件和軟件兩者同時(shí)做有效的傳達(dá)之用。該處理和操作皆需要實(shí)際量的實(shí)質(zhì)操作。軟件方面,通常雖非全然必要,但該以電、磁或光學(xué)信號(hào)形式出現(xiàn)的量皆可用于執(zhí)行存儲(chǔ)、傳送、結(jié)合、比較和其它相關(guān)的操作。有時(shí)為求方便,系依理論上一般使用的動(dòng)機(jī),將位、值、元素、符號(hào)、特性、術(shù)語(yǔ)、數(shù)字或其它相關(guān)量稱為信號(hào)。
然而,在此提醒到,所有敘述以及相似的術(shù)語(yǔ)皆為適當(dāng)?shù)奈锢砹壳医詾榉奖銘?yīng)用于該量的標(biāo)記。除非于說(shuō)明書中有特別提出,否則這些提及的動(dòng)作和電子設(shè)備的處理皆以物理(電、磁或光)量形式表現(xiàn)的信號(hào)在一些電子設(shè)備的存儲(chǔ)設(shè)備中于這些存儲(chǔ)設(shè)備間做運(yùn)行和傳送。像是”處理”、”運(yùn)算”、”決定”、”顯示”和其它相關(guān)的術(shù)語(yǔ)系敘述中例證之用,其意圖并非限制用途。
同時(shí)注意到,本發(fā)明的軟件施行的目的系典型地用于程序存儲(chǔ)媒介或某些形式的傳送媒介的譯碼。該程序存儲(chǔ)媒介可為磁性(亦即軟盤或硬件驅(qū)動(dòng))或光學(xué)(亦即只讀光驅(qū)或”CD ROM”),且可只讀或隨機(jī)訪問。同樣地,該傳送媒介可為雙絞線、同軸電纜、光纖或其它相關(guān)領(lǐng)域中實(shí)之的適當(dāng)傳送媒介。本發(fā)明并非限制于任何給定實(shí)施的目的中。
上述實(shí)施例僅例示性說(shuō)明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟習(xí)此項(xiàng)技藝的人士均可在不違背本發(fā)明的精神及范疇下,對(duì)上述實(shí)施例進(jìn)行修飾與改變。因此,本發(fā)明的權(quán)利保護(hù)范圍,應(yīng)如后述的申請(qǐng)專利范圍所列。
權(quán)利要求
1.一種處理器(202),該處理器(202)適于連接至內(nèi)存(206),該處理器(202)包括執(zhí)行單元(400),用于執(zhí)行輸入/輸出(I/O)指令;內(nèi)存管理單元(402),用于存儲(chǔ)信號(hào)于該內(nèi)存(206)中;以及總線接口單元(406),連接以接收I/O端口數(shù)字和對(duì)應(yīng)至該I/O端口數(shù)字的許可位,并依該許可位的值產(chǎn)生輸出信號(hào);以及其中,該執(zhí)行單元(400)連接以接收該輸出信號(hào)并依該輸出信號(hào)執(zhí)行該I/O指令。
2.如權(quán)利要求1所述的處理器(202),其中,該I/O端口數(shù)字表示為I/O指令所引用的I/O端口的數(shù)字,且其中,該總線接口單元(406)連接以接收安全狀態(tài)認(rèn)證值,且其中,該安全狀態(tài)認(rèn)證值表示具有該I/O指令的內(nèi)存位置的安全認(rèn)證級(jí),其中該總線接口單元(406)系使用該安全狀態(tài)認(rèn)證值和該I/O端口數(shù)字以訪問存儲(chǔ)于該內(nèi)存(206)中的I/O許可位而獲得該許可位。
3.如權(quán)利要求2所述的處理器(202),其中,該總線接口單元(406)連接至該執(zhí)行單元(400)和該內(nèi)存管理單元(402),且其中該I/O端口數(shù)字系來(lái)自該執(zhí)行單元(400),且其中該安全狀態(tài)認(rèn)證系來(lái)自該內(nèi)存管理單元(402)。
4.如權(quán)利要求2所述的處理器(202),其中,該I/O端口數(shù)字和該安全狀態(tài)認(rèn)證皆由該執(zhí)行單元(400)于該I/O指令執(zhí)行期間接收。
5.如權(quán)利要求2所述的處理器(202),其中,該I/O許可位圖(600)包括多個(gè)許可位,其中各該許可位對(duì)應(yīng)至一個(gè)不同的I/O端口,且其中各該許可位具有值以指示該對(duì)應(yīng)的I/O端口是否允許被訪問。
6.如權(quán)利要求2所述的處理器(202),更進(jìn)一步包括模塊指定寄存器(602),該模塊指定寄存器(602)用于存儲(chǔ)該I/O許可位圖(600)的基礎(chǔ)地址,其中,該總線接口單元(406)通過(guò)將該I/O端口數(shù)字做為來(lái)自于該模塊指定寄存器(602)的位偏移量以獲得對(duì)應(yīng)至該I/O端口數(shù)字的該許可位而成為該I/O許可位圖(600)。
7.如權(quán)利要求2所述的處理器(202),其中,該I/O許可位圖(600)為主要I/O許可位圖(600),且其中,該主要I/O許可位圖(600)包含多個(gè)次要I/O許可位圖,且其中各該次要I/O許可位圖包含多個(gè)許可位,且其中給定的該次要I/O許可位圖的各該許可位各對(duì)應(yīng)至一個(gè)不同的I/O端口,且其中,各該許可位有值以指示該對(duì)應(yīng)的I/O端口是否受允許可進(jìn)行訪問,且其中,各該次要I/O許可位圖對(duì)應(yīng)至一個(gè)不同的安全狀態(tài)認(rèn)證值。
8.如申請(qǐng)專利范圍中的處理器(202),更進(jìn)一步包括微碼引擎(800)連接至該執(zhí)行單元(400)、該內(nèi)存管理單元(402)以及該總線接口單元(406),并用于執(zhí)行存儲(chǔ)于微碼存儲(chǔ)設(shè)備(802)中的微碼指令,其中該微碼引擎(800)于至少一個(gè)微碼指令的執(zhí)行期間產(chǎn)生控制信號(hào),其中部分該微碼指令使該微碼引擎(800)產(chǎn)生控制信號(hào),該控制信號(hào)系造成該總線接口單元(406)進(jìn)行工作,該工作包括接收該I/O端口數(shù)字和安全狀態(tài)認(rèn)證值,其中該I/O端口數(shù)字為I/O指令所引用的該I/O端口的數(shù)字,其中該安全狀態(tài)認(rèn)證值為具有該I/O指令的內(nèi)存位置的安全狀態(tài)級(jí);以及利用該安全狀態(tài)認(rèn)證值和該I/O端口數(shù)字以訪問該存儲(chǔ)于內(nèi)存(206)中的I/O許可位圖(600)以獲得對(duì)應(yīng)于該I/O端口的該許可位,并依該許可位的產(chǎn)生該輸出信號(hào);以及其中,該執(zhí)行單元(400)連接以接收該輸出信號(hào)并依該輸出信號(hào)執(zhí)行該I/O指令。
9.一種方法,該方法用于選擇性執(zhí)行I/O指令,該方法包括產(chǎn)生I/O許可位圖(600)于內(nèi)存(206)中,其中該I/O許可位圖(600)包含多個(gè)許可位,且其中各該許可位對(duì)應(yīng)至一個(gè)不同的I/O端口,且其中各該許可位有值以指示該對(duì)應(yīng)的I/O端口是否受允許可進(jìn)行訪問;接收I/O端口數(shù)字和安全狀態(tài)認(rèn)證值,其中該I/O端口數(shù)字為該I/O指令索引用的該I/O端口,且其中該安全狀態(tài)認(rèn)證值為具有該I/O指令的內(nèi)存位置的安全狀態(tài)級(jí);利用該安全狀態(tài)認(rèn)證值和該I/O端口數(shù)字以訪問該存儲(chǔ)的I/O許可位圖(600)以獲得對(duì)應(yīng)至該I/O端口的許可位;以及執(zhí)行該I/O指令,該執(zhí)行系依對(duì)應(yīng)至該I/O端口的該許可位的值。
10.如權(quán)利要求9所述的方法,其中接收該I/O端口數(shù)字和該安全狀態(tài)認(rèn)證值,進(jìn)一步包含于該I/O指令執(zhí)行期間接收該I/O端口數(shù)字和該安全狀態(tài)認(rèn)證值,且其中,依對(duì)應(yīng)至該I/O端口的許可位的值執(zhí)行該I/O指令,進(jìn)一步包括若對(duì)應(yīng)至該I/O端口的許可位的值允許該I/O端口的訪問執(zhí)行則執(zhí)行該I/O指令。
全文摘要
一種選擇性執(zhí)行輸入/輸出(I/O)指令的方法和裝置設(shè)備。該方法包括于內(nèi)存(206)中產(chǎn)生I/O許可位圖(600)并接收I/O端口數(shù)字和安全狀態(tài)認(rèn)證(SCID)值。該方法并包括使用該SCID值和該I/O端口數(shù)字訪問該存儲(chǔ)的I/O許可位圖(600)以獲得對(duì)應(yīng)至該I/O端口的許可位并依照對(duì)應(yīng)至該I/O端口的許可位執(zhí)行該I/O指令。該I/O許可位圖(600)包括多個(gè)許可位。各該許可位對(duì)應(yīng)至一個(gè)不同的I/O端口。各該許可位具有數(shù)值指示該對(duì)應(yīng)的I/O端口是被允許訪問。該I/O端口數(shù)字指示該I/O指令所引用的I/O端口。該SCID值指示具有該I/O指令的內(nèi)存地址的安全認(rèn)證級(jí)。
文檔編號(hào)G06F21/02GK1623143SQ02828622
公開日2005年6月1日 申請(qǐng)日期2002年12月17日 優(yōu)先權(quán)日2002年3月27日
發(fā)明者R·W·施密特, B·C·巴尼斯, G·S·斯特勞金 申請(qǐng)人:先進(jìn)微裝置公司