本公開的實(shí)施例一般涉及計(jì)算設(shè)備,并且更具體地涉及具有獨(dú)立的用戶域與管理程序域的存儲(chǔ)器保護(hù)密鑰架構(gòu)。
背景技術(shù):
應(yīng)用程序可能包括嘗試訪問不應(yīng)該被訪問的存儲(chǔ)器區(qū)域的意外缺陷(稱為偶然訪問(stray access))。訪問可以包括在存儲(chǔ)器中寫與讀,并且偶然訪問包括偶然寫(stray write)與偶然讀(stray read)。為防止偶然訪問以意外的方式訪問或破壞存儲(chǔ)器,需要某些存儲(chǔ)器保護(hù)機(jī)制。
附圖說明
通過下文給出的具體實(shí)施方式并通過本公開各種實(shí)施例的附圖,將更完整地理解本公開。然而,不應(yīng)當(dāng)認(rèn)為這些附圖將本公開限制為特定實(shí)施例,而是這些附圖僅用于說明和理解。
圖1示出了根據(jù)本公開的實(shí)施例的處理系統(tǒng)。
圖2示出了根據(jù)本公開的實(shí)施例的存儲(chǔ)器管理單元。
圖3是示出了根據(jù)本公開的實(shí)施例的存儲(chǔ)器管理單元的操作的流程圖。
圖4是根據(jù)本公開的實(shí)施例的操作包括核以及存儲(chǔ)器管理單元的處理器的方法的流程圖。
圖5A是示出了用于處理器的微架構(gòu)的框圖,在該處理器中可以使用本公開的一個(gè)實(shí)施例。
圖5B是示出了根據(jù)本公開的至少一個(gè)實(shí)施例實(shí)現(xiàn)的有序流水線以及寄存器重命名級(jí)、亂序發(fā)布/執(zhí)行流水線的框圖。
圖6示出了根據(jù)本公開的一個(gè)實(shí)施例的用于處理器的微架構(gòu)的框圖。
圖7是示出了系統(tǒng)的框圖,在該系統(tǒng)中可以使用本公開的實(shí)施例。
圖8是系統(tǒng)的框圖,在該系統(tǒng)中本公開的實(shí)施例可以操作。
圖9是系統(tǒng)的框圖,在該系統(tǒng)中本公開的實(shí)施例可以操作。
圖10是根據(jù)本公開的實(shí)施例的片上系統(tǒng)(SoC)的框圖。
圖11是根據(jù)本公開的SoC設(shè)計(jì)的實(shí)施例的框圖。
圖12示出了計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖。
具體實(shí)施方式
計(jì)算設(shè)備可以包括用于執(zhí)行指令的在一個(gè)或多個(gè)處理器中(諸如中央處理單元(CPU))的一個(gè)或多個(gè)處理核,以及在一個(gè)或多個(gè)處理核上用于存儲(chǔ)與執(zhí)行任務(wù)(包括用戶應(yīng)用以及諸如操作系統(tǒng)的內(nèi)核的系統(tǒng)應(yīng)用)相關(guān)聯(lián)的指令以及數(shù)據(jù)的存儲(chǔ)器設(shè)備(諸如隨機(jī)存取存儲(chǔ)器(RAM))。每個(gè)應(yīng)用程序的指令使用虛擬存儲(chǔ)器的虛擬地址(或線性地址)尋址存儲(chǔ)器,可以通過與該一個(gè)或多個(gè)處理器相關(guān)聯(lián)的存儲(chǔ)器管理單元(MMU)將該虛擬地址(或線性地址)轉(zhuǎn)換成存儲(chǔ)器的物理地址??梢愿鶕?jù)存儲(chǔ)的頁組織虛擬存儲(chǔ)器,可以將該存儲(chǔ)的頁轉(zhuǎn)換成該存儲(chǔ)器的頁幀。虛擬地址的每一頁可以對應(yīng)于該存儲(chǔ)器的存儲(chǔ)器幀。虛擬存儲(chǔ)器的頁可以根據(jù)頁編號(hào)被標(biāo)識(shí),而存儲(chǔ)器的頁幀可以根據(jù)存儲(chǔ)器幀編號(hào)被標(biāo)識(shí)。每個(gè)虛擬地址可以包括頁編號(hào)以及在該頁編號(hào)處的頁內(nèi)的偏移。因此,可以通過查找頁表以得到頁編號(hào)以及偏移來確定存儲(chǔ)器的具體的物理地址。每個(gè)頁表?xiàng)l目指定虛擬地址到物理地址的轉(zhuǎn)換,以及諸如訪問許可的存儲(chǔ)器頁的其他屬性。如此,在處理核上執(zhí)行的任務(wù)可以訪問的虛擬地址的空間可以大于物理存儲(chǔ)器地址的空間。
應(yīng)用程序可以與確定其對存儲(chǔ)器的訪問模式(例如,作為用戶或作為管理程序)的特權(quán)等級(jí)相關(guān)聯(lián)。例如,用戶應(yīng)用可以具有用戶模式的低特權(quán),而系統(tǒng)應(yīng)用(諸如內(nèi)核)可以具有管理程序模式的高特權(quán)。在處理核上執(zhí)行的任務(wù)可能需要訪問(讀或?qū)?虛擬地址所引用的存儲(chǔ)器,該虛擬地址可以被存儲(chǔ)器管理單元轉(zhuǎn)換成存儲(chǔ)器的物理地址。
頁表?xiàng)l目是頁表的一項(xiàng),被用來將存儲(chǔ)器的虛擬地址映射到該存儲(chǔ)器的物理地址。頁表?xiàng)l目可以包括存儲(chǔ)頁表?xiàng)l目所引用的頁的類型的字段。例如,具有“1”的一位指示用戶頁,而具有“0”的一位指示管理程序頁。頁表?xiàng)l目指示用戶頁的存儲(chǔ)器頁可以被在任何特權(quán)等級(jí)上運(yùn)行的任務(wù)訪問(包括具有用戶模式訪問的用戶應(yīng)用以及具有管理程序模式訪問的系統(tǒng)應(yīng)用),而頁表?xiàng)l目指示管理程序頁的存儲(chǔ)器頁限于在比用戶等級(jí)更高的特權(quán)等級(jí)上運(yùn)行的任務(wù)。在一個(gè)實(shí)施例中,操作系統(tǒng)可以將存儲(chǔ)器的一部分分配為管理程序頁,該管理程序頁被保留以用于操作系統(tǒng)的內(nèi)核。操作系統(tǒng)也可以將存儲(chǔ)器的一部分分配為用戶頁以供用戶應(yīng)用程序使用。
在存儲(chǔ)器訪問期間,當(dāng)程序訪問因?yàn)槌绦蝈e(cuò)誤而以意外的方式被分配給程序的存儲(chǔ)器位置時(shí),偶然訪問可能發(fā)生。為防止偶然訪問以意外的方式訪問或破壞存儲(chǔ)器,每個(gè)存儲(chǔ)器頁可以與一個(gè)保護(hù)密鑰(由操作系統(tǒng)為任務(wù)選擇的二進(jìn)制位串)相關(guān)聯(lián),該保護(hù)密鑰可以被用來檢索存儲(chǔ)在一個(gè)或多個(gè)許可寄存器中的位,該位反映該任務(wù)對于該存儲(chǔ)器頁的存儲(chǔ)器訪問許可。檢索到的存儲(chǔ)器訪問許可可以被用來阻止任務(wù)超過它的對于存儲(chǔ)器幀的許可。在某些實(shí)現(xiàn)方式中,保護(hù)密鑰架構(gòu)在頁表中用n位的保護(hù)密鑰標(biāo)記每個(gè)頁表?xiàng)l目,而無需區(qū)分頁表?xiàng)l目是為用戶頁還是為管理程序頁創(chuàng)建的。
本公開的實(shí)施例包括根據(jù)該頁表?xiàng)l目是被標(biāo)識(shí)為與用戶頁還是管理程序頁相關(guān)聯(lián)來處理存儲(chǔ)在頁表?xiàng)l目中的虛擬地址的頁的保護(hù)密鑰架構(gòu)?;诜诸悾鎯?chǔ)器的用戶域(以用戶模式標(biāo)識(shí)的存儲(chǔ)器的部分)以及管理程序域(以管理程序模式標(biāo)識(shí)的存儲(chǔ)器的部分)可以被分開的許可寄存器保護(hù)。在某些實(shí)現(xiàn)方式中,用戶應(yīng)用可以直接地修改與用戶域相關(guān)聯(lián)的許可寄存器,而無需操作系統(tǒng)的內(nèi)核的輔助。
圖1示出了根據(jù)本公開的實(shí)施例的包括用于保護(hù)存儲(chǔ)器的處理系統(tǒng)的片上系統(tǒng)(SoC)100。SoC 100可以包括經(jīng)由總線系統(tǒng)108彼此連接的處理器(諸如中央處理單元(CPU))102以及存儲(chǔ)器。磁盤106可以經(jīng)由總線106耦合至處理器102以及存儲(chǔ)器104,以在存儲(chǔ)器對于任務(wù)不具有足夠的空間的情況下提供交換空間。存儲(chǔ)器104以及磁盤106可以存儲(chǔ)系統(tǒng)應(yīng)用以及用戶應(yīng)用程序以及與該程序相關(guān)聯(lián)的數(shù)據(jù)。處理器102可以執(zhí)行諸如系統(tǒng)應(yīng)用以及用戶應(yīng)用使用存儲(chǔ)器104來存儲(chǔ)該程序的指令以及與該程序相關(guān)聯(lián)的數(shù)據(jù)的任務(wù)。
在一個(gè)實(shí)施例中,處理器102可以進(jìn)一步包括一個(gè)或多個(gè)處理核110以及存儲(chǔ)器管理單元(MMU)112。該一個(gè)或多個(gè)處理核是處理器102內(nèi)的用于執(zhí)行任務(wù)的引擎。在一個(gè)實(shí)施例中,在處理核110上執(zhí)行的任務(wù)不使用存儲(chǔ)器的物理地址直接地訪問存儲(chǔ)器104。相反,任務(wù)通過虛擬地址(也被稱為線性地址)訪問虛擬存儲(chǔ)器。在處理核110以及存儲(chǔ)器之間耦合的存儲(chǔ)器管理單元112可以將虛擬存儲(chǔ)器的虛擬地址映射到存儲(chǔ)器104的物理地址。虛擬地址的空間可以被分成被稱為頁的固定尺寸單元。虛擬地址的頁可以被對應(yīng)地映射到存儲(chǔ)器104的物理地址的空間中的被稱為存儲(chǔ)器幀的固定尺寸單元。
在一個(gè)實(shí)施例中,存儲(chǔ)器104可以包括用于存儲(chǔ)虛擬地址的頁到物理地址之間的映射的頁表114。映射可以是頁的標(biāo)識(shí)符(或頁編號(hào))到存儲(chǔ)器幀的標(biāo)識(shí)符(或存儲(chǔ)器幀編號(hào))之間的映射。存儲(chǔ)器幀編號(hào)確定存儲(chǔ)器104的被分配給任務(wù)的區(qū)域。
在一個(gè)實(shí)施例中,虛擬地址頁表114可以包括一個(gè)或多個(gè)頁表?xiàng)l目(PTE)116。頁表?xiàng)l目也被稱為頁表的葉節(jié)點(diǎn)。在一個(gè)實(shí)施例中,頁表114的頁表?xiàng)l目116可以被加載到存儲(chǔ)器管理單元112的頁表寄存器130中,使得存儲(chǔ)器管理單元112可以執(zhí)行存儲(chǔ)器地址映射。頁表?xiàng)l目中的每一個(gè)可以存儲(chǔ)根據(jù)虛擬地址頁編號(hào)被標(biāo)識(shí)的一個(gè)或多個(gè)存儲(chǔ)器幀編號(hào)。在一個(gè)實(shí)施例中,在處理核110上執(zhí)行的任務(wù)可以通過指定一個(gè)或多個(gè)虛擬地址范圍來分配存儲(chǔ)器的塊。虛擬地址可以包括第一部分,該第一部分包括指示虛擬地址頁編號(hào)的一個(gè)或多個(gè)位(例如,高階20位),以及第二部分,該第二部分的位(例如,低階12位)指示對應(yīng)于頁的存儲(chǔ)器幀內(nèi)的字節(jié)偏移。存儲(chǔ)器管理單元112可以使用虛擬地址頁編號(hào)以標(biāo)識(shí)存儲(chǔ)在頁表?xiàng)l目116中的存儲(chǔ)器幀編號(hào),并且將被標(biāo)識(shí)的存儲(chǔ)器幀編號(hào)與偏移字節(jié)組合以形成用于訪問存儲(chǔ)器104的物理地址。對應(yīng)于虛擬地址的物理地址可以被存儲(chǔ)在緩沖器中。
在一個(gè)實(shí)施例中,存儲(chǔ)器管理單元112可以包括檢查對任務(wù)的存儲(chǔ)器訪問許可的邏輯,以阻止某些類型的存儲(chǔ)器訪問(例如,由偶然訪問造成的存儲(chǔ)器訪問)。在一個(gè)實(shí)施例中,每個(gè)頁表?xiàng)l目116可以包括一個(gè)或多個(gè)狀態(tài)位,以指示在將頁表?xiàng)l目中的頁編號(hào)映射到存儲(chǔ)器幀編號(hào)之前需要被檢查的某些頁訪問狀態(tài)。在一個(gè)實(shí)施例中,每個(gè)頁表?xiàng)l目116中的狀態(tài)位中的一個(gè)是用于指示頁屬于用戶類型還是管理程序類型的存儲(chǔ)器訪問模式狀態(tài)位U/S 126。將結(jié)合圖2的描述討論狀態(tài)檢查的細(xì)節(jié)。
在一個(gè)實(shí)施例中,頁表?xiàng)l目116可以進(jìn)一步包括保護(hù)密鑰段128,用于存儲(chǔ)由操作系統(tǒng)在頁表?xiàng)l目116創(chuàng)建時(shí)為其選擇的保護(hù)密鑰。在一個(gè)實(shí)施例中,操作系統(tǒng)可以從操作系統(tǒng)可用的一組現(xiàn)有的保護(hù)密鑰中選擇保護(hù)密鑰。例如,可能有16個(gè)保護(hù)密鑰可供操作系統(tǒng)選擇,并且操作系統(tǒng)可以選擇一個(gè)保護(hù)密鑰,該保護(hù)密鑰被指定為下一個(gè)可用的保護(hù)密鑰。在一個(gè)實(shí)施例中,保護(hù)密鑰是二進(jìn)制位串(例如,4位),被用作檢索存儲(chǔ)在一個(gè)或多個(gè)許可寄存器中的一組存儲(chǔ)器訪問許可的標(biāo)識(shí)符。
在一個(gè)實(shí)施例中,存儲(chǔ)器管理單元112可以包括用戶許可寄存器118以及管理程序許可寄存器120。用戶許可寄存器118是包括多個(gè)字段的寄存器,其中每個(gè)字段存儲(chǔ)對于一組用戶頁的一組存儲(chǔ)器訪問許可,而管理程序許可寄存器120是包括多個(gè)字段的寄存器,其中每個(gè)字段存儲(chǔ)用于一組管理程序頁的存儲(chǔ)器訪問許可。在一個(gè)實(shí)施例中,存儲(chǔ)在頁表?xiàng)l目116中的保護(hù)密鑰128可以標(biāo)識(shí)存儲(chǔ)在用戶許可寄存器118或管理程序許可寄存器120的字段中的特定許可。例如,保護(hù)密鑰128可以是存儲(chǔ)每個(gè)許可寄存器的一組許可的字段的索引。因此,根據(jù)頁表?xiàng)l目116中的保護(hù)密鑰128以及頁U/S 126的用戶或管理程序存儲(chǔ)器訪問模式可以唯一地檢索到存儲(chǔ)在用戶許可寄存器118以及管理程序許可寄存器120中的每組許可。
在一個(gè)實(shí)施例中,用戶許可寄存器118以及管理程序許可寄存器120的每個(gè)字段可以存儲(chǔ)包括多個(gè)存儲(chǔ)器訪問許可位的一組許可。在一個(gè)實(shí)施例中,該組許可可以包括指示是否啟用或禁用讀訪問的第一位,指示是否啟用或禁用寫訪問的第二位,以及指示是否啟用或禁用執(zhí)行訪問的第三位。在一個(gè)實(shí)施例中,許可還可以包括指示對加密存儲(chǔ)在頁表?xiàng)l目116中的存儲(chǔ)器幀的許可以及其他所定義的屬性的位。
在一個(gè)實(shí)施例中,存儲(chǔ)器管理單元112可以包括ADD邏輯電路122,該ADD邏輯電路122包括輸入引腳,用于接收選自用戶許可寄存器118或管理程序許可寄存器120,以及來自基于存儲(chǔ)在頁表?xiàng)l目116中的狀態(tài)位而生成的存儲(chǔ)器訪問許可的一組許可。ADD邏輯電路122可以將接收自用戶許可寄存器118或管理程序許可寄存器120的一組許可與基于存儲(chǔ)在頁表?xiàng)l目116中的狀態(tài)位而生成的存儲(chǔ)器訪問許可組合,以生成對訪問頁表?xiàng)l目116中所引用的存儲(chǔ)器幀的最終存儲(chǔ)器訪問許可。
在一個(gè)實(shí)施例中,響應(yīng)于在核110上執(zhí)行的任務(wù)訪問標(biāo)識(shí)符被存儲(chǔ)在頁表?xiàng)l目116中的存儲(chǔ)器幀的請求,存儲(chǔ)器管理單元112可以生成可以確定來自任務(wù)的請求是否超過被分配給該任務(wù)的許可的最終存儲(chǔ)器訪問許可。最終存儲(chǔ)器訪問許可可以被用來控制開關(guān)124。如果來自任務(wù)的請求沒有超過最終存儲(chǔ)器訪問許可,則開關(guān)124可以接合并允許物理地址被傳至總線108以訪問存儲(chǔ)器104。如果來自任務(wù)的請求超過了最終存儲(chǔ)器訪問許可,則門124可以脫離并且阻止物理地址被傳到總線108。
在一個(gè)實(shí)施例中,用戶許可寄存器的內(nèi)容可以被在任何特權(quán)等級(jí)(例如用戶應(yīng)用程序以及操作系統(tǒng)的內(nèi)核)上執(zhí)行的任務(wù)讀取或更新,而管理程序許可寄存器的內(nèi)容只可以被在高于用戶的特權(quán)等級(jí)(例如操作系統(tǒng)的內(nèi)核)上執(zhí)行的任務(wù)讀取或更新。
圖2示出了根據(jù)本公開的實(shí)施例的詳細(xì)的存儲(chǔ)器管理單元200。如圖2所示,存儲(chǔ)器保護(hù)單元200可以包括作為頁表的一部分的頁表?xiàng)l目202,專用于用戶模式的存儲(chǔ)器幀的第一許可寄存器204(被稱為用戶許可寄存器),以及專用于管理程序模式的存儲(chǔ)器幀的第二許可寄存器206(被稱為管理程序許可寄存器)。頁表?xiàng)l目202可以是如圖1所示的被存儲(chǔ)在虛擬地址頁表114中的多個(gè)頁表?xiàng)l目中的一個(gè)。用戶許可寄存器204以及管理程序許可寄存器206中的每一個(gè)可以包括用于存儲(chǔ)與每個(gè)保護(hù)密鑰224相關(guān)聯(lián)的存儲(chǔ)器訪問許可的多個(gè)字段。
在一個(gè)實(shí)施例中,頁表?xiàng)l目202可以包括一個(gè)或多個(gè)狀態(tài)位、保護(hù)密鑰段224、以及存儲(chǔ)器幀編號(hào)段222。存儲(chǔ)器幀編號(hào)段222(例如,尺寸是32位)存儲(chǔ)虛擬地址的頁編號(hào)被映射到的存儲(chǔ)器幀編號(hào)。
在一個(gè)實(shí)施例中,一個(gè)或多個(gè)狀態(tài)位可以包括指示頁表?xiàng)l目的存儲(chǔ)器幀是否在存儲(chǔ)器中的存在/不存在(P/A)位216。P/A位216的“1”可以指示存儲(chǔ)器幀在存儲(chǔ)器中,而“0”可以指示存儲(chǔ)器幀被從存儲(chǔ)器中交換到磁盤。一個(gè)或多個(gè)狀態(tài)位可以包括指示對由頁表?xiàng)l目202中的存儲(chǔ)器幀指定的存儲(chǔ)器的部分的存儲(chǔ)器訪問許可的讀/寫(R/W)位218。例如,R/W位218的“0”可以指示存儲(chǔ)器的該部分是只讀(或不可以寫)的,而“1”可以指示存儲(chǔ)器的該部分是可以讀以及寫的。一個(gè)或多個(gè)狀態(tài)位可以包括指示對存儲(chǔ)在存儲(chǔ)器的該部分的指令的執(zhí)行許可的XD位226。例如,XD位226的“1”可以指示取自存儲(chǔ)器的該部分的指令是不被允許的。
在一個(gè)實(shí)施例中,頁表?xiàng)l目202可以包括指示訪問由頁表?xiàng)l目202的存儲(chǔ)器幀編號(hào)引用的存儲(chǔ)器幀的任務(wù)的特權(quán)等級(jí)的存儲(chǔ)器訪問模式位或用戶/管理程序(U/S)狀態(tài)位220。在一個(gè)實(shí)施例中,U/S狀態(tài)位220的“1”可以指示具有用戶模式的特權(quán)或更高等級(jí)的特權(quán)的任務(wù)可以訪問在頁表?xiàng)l目202中被標(biāo)識(shí)的存儲(chǔ)器幀,而U/S狀態(tài)位220中的“0”可以指示只有具有管理程序模式的訪問可以訪問存儲(chǔ)器幀。
在一個(gè)實(shí)施例中,保護(hù)密鑰段224可以存儲(chǔ)為保護(hù)頁表?xiàng)l目202的存儲(chǔ)器幀而被操作系統(tǒng)標(biāo)記到頁表?xiàng)l目202的n位保護(hù)密鑰(PKEY)。在一個(gè)實(shí)施例中,響應(yīng)于在任務(wù)中映射存儲(chǔ)器幀,操作系統(tǒng)可以從操作系統(tǒng)可用的多個(gè)保護(hù)密鑰中選擇保護(hù)密鑰(PKEY),以及使用被選擇的保護(hù)密鑰來標(biāo)記頁表?xiàng)l目202。在一個(gè)實(shí)施例中,操作系統(tǒng)可以提供接口,應(yīng)用可以使用該接口請求在存儲(chǔ)器頁中被使用的特定的保護(hù)密鑰。在一個(gè)實(shí)施例中,保護(hù)密鑰是可以被用作存儲(chǔ)在用戶許可寄存器204或管理程序許可寄存器206的字段中的許可的標(biāo)識(shí)符的n位二進(jìn)制代碼串。例如,保護(hù)密鑰0010可以指向被標(biāo)識(shí)在0010位置處的用戶許可寄存器204或管理程序許可寄存器206的字段。
在一個(gè)實(shí)施例中,因?yàn)楸Wo(hù)密鑰224的長度是n位,用戶許可寄存器204以及管理程序許可寄存器206中的每一個(gè)可以包括可唯一尋址的2n個(gè)字段。
在一個(gè)實(shí)施例中,存儲(chǔ)在用戶許可寄存器118以及管理程序許可寄存器120的字段中的每組許可可以包括多個(gè)存儲(chǔ)器訪問許可位230。在一個(gè)實(shí)施例中,該組許可位230可以包括用于指示是否啟用或禁用讀訪問的第一位,用于指示是否啟用或禁用寫訪問的第二位,以及用于指示是否啟用或禁用執(zhí)行訪問的第三位。在一個(gè)實(shí)施例中,許可還可以包括指示對加密存儲(chǔ)在頁表?xiàng)l目116中的存儲(chǔ)器幀的許可以及其他所定義的屬性的位。
在一個(gè)實(shí)施例中,在發(fā)起任務(wù)的時(shí)候或者當(dāng)切換到另一任務(wù)時(shí),由操作系統(tǒng)設(shè)置存儲(chǔ)在用戶許可寄存器204以及管理程序許可寄存器206中的存儲(chǔ)器訪問許可位。
在一個(gè)實(shí)施例中,具有用戶模式訪問的用戶應(yīng)用可以訪問用戶許可寄存器204。讀或?qū)懹脩粼S可寄存器204的指令可以被提供給用戶應(yīng)用。例如,這些指令包括可以允許用戶應(yīng)用程序讀取用戶許可寄存器204的內(nèi)容的用戶許可寄存器讀(RDPKRU)指令,以及可以允許用戶應(yīng)用程序?qū)懭胗脩粼S可寄存器204的用戶許可寄存器寫(WRPKRU)指令。通過允許用戶應(yīng)用直接地操縱存儲(chǔ)在用戶許可寄存器204中的許可,可以顯著地減少通過保護(hù)密鑰(例如,通過經(jīng)過操作系統(tǒng))改變該組許可的性能開銷,從而允許對保護(hù)密鑰的更加廣泛的使用。
在一個(gè)實(shí)施例中,存儲(chǔ)器管理單元可以包括復(fù)用器208,復(fù)用器208具有第一輸入,用于接收存儲(chǔ)在用戶許可寄存器204中的(根據(jù)保護(hù)密鑰224所選擇的)第一組許可,具有第二輸入,用于接收存儲(chǔ)在管理程序許可寄存器206中的(根據(jù)保護(hù)密鑰224所選擇的)第二組許可,以及具有控制引腳,被耦合至頁表?xiàng)l目202的訪問模式位(U/S位)220。訪問模式位220可以在復(fù)用器208的輸出處選擇性地提供第一組許可或第二組許可。
在一個(gè)實(shí)施例中,響應(yīng)于訪問在頁表?xiàng)l目202中被指定的存儲(chǔ)器中的存儲(chǔ)器幀的請求,存儲(chǔ)器管理單元112可以執(zhí)行兩個(gè)訪問許可檢查。首先,存儲(chǔ)器管理單元112可以包括控制器214,控制器214可以在輸入處接收存儲(chǔ)在頁表?xiàng)l目202中的一個(gè)或多個(gè)狀態(tài)位(諸如XD 226,R/W 218,P/A 216),以及定義處理器操作模式的來自處理器的狀態(tài)位(諸如執(zhí)行任務(wù)的管理程序模式執(zhí)行保護(hù)(SMEP)狀態(tài)以及當(dāng)前特權(quán)等級(jí)(CPL))?;跔顟B(tài)位,控制器214可以輸出包括第一組許可位的第一許可,該第一組許可位基于頁表?xiàng)l目的狀態(tài)位指示存儲(chǔ)器訪問許可。在一個(gè)實(shí)施例中,第一組許可位可以包括用于指示是否啟用或禁用讀取的第一位、用于指示是否啟用或禁用寫的第二位、以及用于指示是否啟用或禁用執(zhí)行的第三位。
在一個(gè)實(shí)施例中,響應(yīng)于訪問在頁表?xiàng)l目202中被指定的存儲(chǔ)器中的存儲(chǔ)器幀的任務(wù)的請求,存儲(chǔ)器管理單元112可以提供第二許可檢查。在一個(gè)實(shí)施例中,存儲(chǔ)器管理單元112可以包括復(fù)用器208,該復(fù)用器208包括被耦合至用戶許可寄存器204的第一輸入以及被耦合至管理程序許可寄存器206的第二輸入。復(fù)用器208可以進(jìn)一步包括被耦合至頁表?xiàng)l目202的U/S位220的控制引腳。存儲(chǔ)在U/S位220中的值可以控制由哪個(gè)許可寄存器在復(fù)用器208的輸出處提供其內(nèi)容,并且保護(hù)密鑰224確定由哪個(gè)字段提供該許可。復(fù)用器208的輸出可以提供第二組許可位,包括用于指示是否啟用或禁用讀取的第一位、用于指示是否啟用或禁用寫入的第二位、以及用于指示是否啟用或禁用執(zhí)行的第三位。在一個(gè)實(shí)施例中,許可還可以包括指示對加密存儲(chǔ)在頁表?xiàng)l目116中的存儲(chǔ)器幀的許可以及其他所定義的屬性的位。
在一個(gè)實(shí)施例中,存儲(chǔ)器管理單元112可以包括AND邏輯212,該AND邏輯212包括用于接收來自控制器214的第一組許可位的第一輸入以及接收來自復(fù)用器208的第二組許可位的第二輸入。AND邏輯212可基于第一組許可以及保護(hù)密鑰許可生成一組最終存儲(chǔ)器訪問許可。該組最終存儲(chǔ)器訪問許可可以包括使用第一組許可和保護(hù)密鑰許可之間的最低許可的許可位。例如,如果第一組許可位具有指示寫啟用的寫許可位并且第二組許可位具有指示寫禁用的寫許可位,則最終組的寫許可位是禁用的。然而,如果兩組中的寫許可位均指示寫啟用,則最終許可中的寫許可是啟用的。
在一個(gè)實(shí)施例中,將任務(wù)發(fā)起的訪問存儲(chǔ)器的請求與最終許可比較以確定該請求是否超過授予給該任務(wù)的許可。如果超過,則存儲(chǔ)器管理單元可以生成頁錯(cuò)誤信號(hào)以阻止物理地址輸出到總線108以及將該結(jié)果通知處理核。
圖3是根據(jù)本公開的實(shí)施例的通過存儲(chǔ)器管理單元檢查訪問存儲(chǔ)器的許可的操作300的流程圖。參考圖3,響應(yīng)于在用戶模式訪問或管理程序模式訪問中執(zhí)行的任務(wù)的存儲(chǔ)器請求,操作可以在302處開始。存儲(chǔ)器管理單元可以基于任務(wù)所請求的存儲(chǔ)器的虛擬地址搜索頁表?xiàng)l目,以及確定存儲(chǔ)在頁表?xiàng)l目中的存儲(chǔ)器的存儲(chǔ)器幀,以及執(zhí)行從存儲(chǔ)器的虛擬地址到物理地址的映射。
在允許基于物理地址的存儲(chǔ)器的訪問之前,在304處,存儲(chǔ)器管理單元的控制器可以基于狀態(tài)位(諸如XD,P/A,R/W)以及處理器操作的處理器狀態(tài)位生成第一組許可。存儲(chǔ)器管理單元可以確定第一組許可是否允許訪問存儲(chǔ)器的物理地址。如果第一組許可不允許任務(wù)所請求的訪問,則在314處,存儲(chǔ)器管理單元可以生成頁錯(cuò)誤信號(hào)給處理核以通知所請求的任務(wù)。
如果第一許可允許訪問,則在306處,存儲(chǔ)器管理單元可以基于存儲(chǔ)在頁表?xiàng)l目中的U/S位來確定頁表?xiàng)l目是被標(biāo)記為了用戶模式還是管理程序模式。如果頁表?xiàng)l目是用于用戶模式,則在310處,存儲(chǔ)器管理單元可以使用存儲(chǔ)在頁表?xiàng)l目中的保護(hù)密鑰來選擇存儲(chǔ)在用戶許可寄存器中的第二組許可,并且確定第二組許可是否允許任務(wù)所請求的對存儲(chǔ)器的訪問。如果被允許,則在312處,存儲(chǔ)器管理單元可以允許任務(wù)訪問存儲(chǔ)器幀編號(hào)存儲(chǔ)在頁表?xiàng)l目中的存儲(chǔ)器幀。如果不被允許,則在314處,存儲(chǔ)器管理單元可以生成頁錯(cuò)誤信號(hào)并且不允許對存儲(chǔ)器幀的訪問。
如果確定該頁表?xiàng)l目是管理程序模式,則在308處,存儲(chǔ)器管理單元可以使用存儲(chǔ)在該頁表?xiàng)l目中的保護(hù)密鑰來選擇存儲(chǔ)在管理程序許可寄存器中的第二組許可,并且確定第二組許可是否允許任務(wù)所請求的對存儲(chǔ)器的訪問。如果不被允許,則在314處,存儲(chǔ)器管理單元可以生成頁錯(cuò)誤信號(hào)并且不允許對存儲(chǔ)器幀的訪問。如果被允許,則在312處,存儲(chǔ)器管理單元可以允許任務(wù)訪問存儲(chǔ)器幀編號(hào)存儲(chǔ)在該頁表?xiàng)l目中的存儲(chǔ)器幀。
圖4是根據(jù)本公開的實(shí)施例的操作包括核以及存儲(chǔ)器管理單元的處理器的方法的流程圖。方法400可以由處理邏輯執(zhí)行,該處理邏輯可以包括硬件(例如,電路、專用邏輯、可編程邏輯、微代碼等)、軟件(諸如在處理系統(tǒng)、通用計(jì)算機(jī)系統(tǒng)、或?qū)S脵C(jī)器上運(yùn)行的指令)、固件或其組合。在一個(gè)實(shí)施例中,參照圖1,方法400可以部分地由執(zhí)行操作系統(tǒng)的處理核110中的任一個(gè)的處理邏輯執(zhí)行。
為了簡化說明,方法400被描繪以及被描述成一系列動(dòng)作。然而,根據(jù)本公開的動(dòng)作可以按各種順序發(fā)生,并且/或者可以同時(shí)發(fā)生,并且伴隨本文未呈現(xiàn)以及描述的其他動(dòng)作發(fā)生。此外,并不是所有示出的動(dòng)作都被執(zhí)行以實(shí)現(xiàn)根據(jù)所公開主題的方法400。此外,本領(lǐng)域技術(shù)人員將會(huì)理解以及明白,方法400可以替代地經(jīng)由狀態(tài)圖被表示為一系列相關(guān)的狀態(tài)或者被表示為事件。
參考圖4,在402處,處理邏輯(諸如操作系統(tǒng))可以開始管理任務(wù)(諸如用戶應(yīng)用程序或內(nèi)核的執(zhí)行)。在404處,處理邏輯可以確定任務(wù)在哪個(gè)特權(quán)等級(jí)操作。任務(wù)的特權(quán)等級(jí)確定存儲(chǔ)器訪問的模式是用戶模式訪問還是管理程序模式訪問。在一個(gè)實(shí)施例中,處理邏輯可以接收來自保持對當(dāng)前特權(quán)等級(jí)(CPL)的記錄的寄存器的特權(quán)等級(jí),當(dāng)前特權(quán)等級(jí)可以支持從0到3的等級(jí),其中3作為最低等級(jí)(諸如用戶應(yīng)用)并且3作為最高等級(jí)(諸如操作系統(tǒng)的內(nèi)核)。任務(wù)可以在用戶等級(jí)(例如,CPL=3)或管理程序等級(jí)(例如,CPL<3)上運(yùn)行。
在406處,處理邏輯可以確定任務(wù)所分配的存儲(chǔ)器的存儲(chǔ)器幀的標(biāo)識(shí)符(或編號(hào))。
在408處,處理邏輯可以從處理邏輯可用的一組保護(hù)密鑰中選擇保護(hù)密鑰。保護(hù)密鑰可以是可以被用來標(biāo)識(shí)存儲(chǔ)在一個(gè)或多個(gè)許可寄存器中的存儲(chǔ)器訪問許可的n位二進(jìn)制代碼。
在410處,處理邏輯可以將訪問模式以及所確定的存儲(chǔ)器幀的標(biāo)識(shí)符、以及所選擇的保護(hù)密鑰存儲(chǔ)在存儲(chǔ)器管理單元的頁表的頁表?xiàng)l目中。頁表?xiàng)l目可以被用來將虛擬地址映射到存儲(chǔ)器的物理地址以及確定對存儲(chǔ)器的訪問許可。
在一個(gè)實(shí)施例中,處理邏輯可以確定任務(wù)的存儲(chǔ)器訪問許可,該存儲(chǔ)器訪問許可包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè)。處理邏輯可以基于訪問模式是用戶模式訪問還是管理程序模式訪問來選擇用戶許可寄存器或管理程序許可寄存器中的一個(gè)。通過將保護(hù)密鑰用作標(biāo)識(shí)符,處理邏輯可以將存儲(chǔ)器訪問許可存儲(chǔ)在所選擇的許可寄存器的字段中。
圖5A是示出了根據(jù)本公開的一個(gè)實(shí)施例的用于實(shí)現(xiàn)包括異構(gòu)核的處理設(shè)備的處理器500的微架構(gòu)的框圖。具體地,根據(jù)本公開的至少一個(gè)實(shí)施例,處理器500描繪了被包括在處理器中的有序架構(gòu)核以及寄存器重命名邏輯、亂序發(fā)布/執(zhí)行邏輯。處理器500包括耦合至執(zhí)行引擎單元550的前端單元530,并且兩者均耦合至存儲(chǔ)器單元570。處理器500可以包括精簡指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長指令字(VLIW)核、或混合或替代核類型。作為又一選項(xiàng),處理器500可以包括專用核,例如,網(wǎng)絡(luò)或通信核、壓縮引擎、圖形核等。在一個(gè)實(shí)施例中,處理器500可以是多核處理器或者可以是多處理器系統(tǒng)的一部分。
前端單元530包括耦合至指令高速緩存單元534的分支預(yù)測單元532,指令高速緩存單元534耦合至指令轉(zhuǎn)換后備緩沖器(TLB)536,指令轉(zhuǎn)換后備緩沖器536耦合至指令取出單元538,指令取出單元538耦合至解碼單元540。解碼單元540(也被稱為解碼器)可以解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號(hào)作為輸出??墒褂酶鞣N不同的機(jī)制來實(shí)現(xiàn)解碼器540。合適的機(jī)制的示例包括但不限于:查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。指令高速緩存單元534進(jìn)一步耦合至存儲(chǔ)器單元570。解碼單元540耦合至執(zhí)行引擎單元550中的重命名/分配器單元552。
執(zhí)行引擎單元550包括耦合至引退單元554的重命名/分配器單元552以及一組一個(gè)或多個(gè)調(diào)度器單元556。調(diào)度器單元556表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站(RS)、中央指令窗等。調(diào)度器單元556耦合至物理寄存器組單元558。物理寄存器組單元558中的每一個(gè)表示一個(gè)或多個(gè)物理寄存器組,其中不同的物理寄存器組存儲(chǔ)一個(gè)或多個(gè)不同的數(shù)據(jù)類型(諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、等等)、狀態(tài)(諸如,指令指針,其是將要被執(zhí)行的下一個(gè)指令的地址)等等。物理寄存器組單元558被引退單元554所覆蓋,以示出可實(shí)現(xiàn)寄存器重命名和亂序執(zhí)行的多種方式(諸如,使用重排序緩沖器和引退寄存器組、使用未來文件(future file)、歷史緩沖器以及引退寄存器組;使用寄存器映射和寄存器池等等)。
通常,架構(gòu)寄存器從處理器外部或從編程者的視角來看是可見的。這些寄存器不限于任何已知的特定的電路類型。各種不同類型的寄存器可適用,只要它們能夠存儲(chǔ)并提供本文中所述的數(shù)據(jù)。合適的寄存器的示例包括但不限于:專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配物理寄存器、專用物理寄存器和動(dòng)態(tài)分配物理寄存器的組合等等。引退單元554和物理寄存器組單元558耦合至執(zhí)行群集560。執(zhí)行群集560包括一組一個(gè)或多個(gè)執(zhí)行單元562和一組一個(gè)或多個(gè)存儲(chǔ)器訪問單元564。執(zhí)行單元562可以執(zhí)行各種操作(例如,移位、加法、減法、乘法)并且在各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))上操作。
盡管一些實(shí)施例可以包括專用于特定功能或功能組的數(shù)個(gè)執(zhí)行單元,但是其他實(shí)施例可以僅包括一個(gè)執(zhí)行單元或全部都執(zhí)行所有功能的多個(gè)執(zhí)行單元。調(diào)度器單元556、物理寄存器組單元558以及執(zhí)行群集560示出為可能是復(fù)數(shù)個(gè),因?yàn)槟承?shí)施例為某些類型的數(shù)據(jù)/操作創(chuàng)建單獨(dú)的流水線(例如,各自都具有其自身的調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/緊縮整數(shù)/緊縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線和/或存儲(chǔ)器訪問流水線——并且在單獨(dú)的存儲(chǔ)器訪問流水線的情況下,實(shí)現(xiàn)了其中僅此流水線的執(zhí)行群集具有存儲(chǔ)器訪問單元564的某些實(shí)施例)。還應(yīng)當(dāng)理解,在使用分開的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是亂序發(fā)布/執(zhí)行的,而其余的是有序的。
存儲(chǔ)器訪問單元564的集合耦合至存儲(chǔ)器單元570,存儲(chǔ)器單元570可以包括數(shù)據(jù)預(yù)取器580、數(shù)據(jù)TLB單元572、數(shù)據(jù)高速緩存單元(DCU)574、以及第2級(jí)(L2)高速緩存單元576,這里給出幾個(gè)示例。在一些實(shí)施例中,DCU574也被稱為第一級(jí)數(shù)據(jù)高速緩存(L1高速緩存)。DCU 574可處理多個(gè)未完成的高速緩存未命中,并且繼續(xù)服務(wù)傳入存儲(chǔ)和加載。其還支持維持高速緩存一致性。數(shù)據(jù)TLB單元572是用于通過映射虛擬以及物理地址空間來改善虛擬地址轉(zhuǎn)換速度的高速緩存。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問單元564可以包括加載單元、存儲(chǔ)地址單元以及存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)均耦合至存儲(chǔ)器單元570中的數(shù)據(jù)TLB單元572。L2高速緩存單元576可以耦合至一個(gè)或多個(gè)其他等級(jí)的高速緩存,并最終耦合至主存儲(chǔ)器。
在一個(gè)實(shí)施例中,數(shù)據(jù)預(yù)取器580通過自動(dòng)預(yù)測程序即將消耗哪些數(shù)據(jù)來推測性地加載/預(yù)取數(shù)據(jù)至DCU 574。預(yù)取可以指示在存儲(chǔ)在存儲(chǔ)器分層結(jié)構(gòu)(例如,較低等級(jí)的高速緩存或存儲(chǔ)器)的一個(gè)存儲(chǔ)器位置的數(shù)據(jù)被處理器實(shí)際要求之前,將數(shù)據(jù)轉(zhuǎn)換至更靠近(例如,產(chǎn)生更少訪問等待時(shí)間)處理器的較高等級(jí)的存儲(chǔ)器位置。更具體地,預(yù)取可以指示在處理器發(fā)出對被返回的特定數(shù)據(jù)的需求之前,對從較低等級(jí)的高速緩存/存儲(chǔ)器之一到數(shù)據(jù)高速緩存和/或預(yù)取緩沖器的數(shù)據(jù)的早取回。
處理器500可以支持一個(gè)或多個(gè)指令集(諸如,x86指令集(具有增加有更新版本的一些擴(kuò)展)、加利福尼亞州桑尼威爾的MIPS技術(shù)公司的MIPS指令集、加利福尼亞州桑尼威爾的ARM控股公司的ARM指令集(具有可選附加擴(kuò)展,諸如NEON))。
應(yīng)當(dāng)理解,核可以支持多線程操作(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程的集合),并且可以按各種方式來完成該多線程操作,各種方式包括時(shí)分多線程操作、同步多線程操作(其中,單個(gè)物理核為物理核正在同步進(jìn)行多線程操作的多個(gè)線程中的每一個(gè)線程提供邏輯核)或其組合(例如,時(shí)分取出和解碼以及此后諸如利用超線程技術(shù)的同步多線程操作)。
盡管在亂序執(zhí)行的上下文中描述了寄存器重命名,但是,應(yīng)當(dāng)理解,寄存器重命名可以用于有序架構(gòu)中。雖然處理器的所示實(shí)施例也包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元以及共享的L2高速緩存單元,但替代實(shí)施例可具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,諸如例如,第一級(jí)(L1)內(nèi)部高速緩存或多個(gè)等級(jí)的內(nèi)部高速緩存。在一些實(shí)施例中,系統(tǒng)可以包括內(nèi)部高速緩存以及在核和/或處理器外部的外部高速緩存的組合。或者,全部高速緩存都可以在核和/或處理器的外部。
圖5B是示出了根據(jù)本公開的一些實(shí)施例的由圖5A的處理設(shè)備500實(shí)現(xiàn)的有序流水線以及寄存器重命名級(jí)、亂序發(fā)布/執(zhí)行流水線的框圖。圖5B中的實(shí)線框示出了有序流水線,而虛線框示出了寄存器重命名、亂序發(fā)布/執(zhí)行流水線。在圖5B中,處理器流水線500包括取出級(jí)502、長度解碼級(jí)504、解碼級(jí)506、分配級(jí)508、重命名級(jí)510、調(diào)度(也稱為分派或發(fā)布)級(jí)512、寄存器讀取/存儲(chǔ)器讀取級(jí)514、執(zhí)行級(jí)516、寫回/存儲(chǔ)器寫入級(jí)518、異常處理級(jí)522以及提交級(jí)524。在一些實(shí)施例中,級(jí)502-524的順序可以與所示出的不同,并且不限于圖5B中所示的特定順序。
圖6是示出了根據(jù)本公開的一個(gè)實(shí)施例的處理器600的微架構(gòu)的框圖。在一些實(shí)施例中,可將根據(jù)一個(gè)實(shí)施例的指令實(shí)現(xiàn)為對具有字節(jié)尺寸、字尺寸、雙字尺寸、四字尺寸等并具有諸多數(shù)據(jù)類型(例如,單精度和雙精度整數(shù)和浮點(diǎn)數(shù)據(jù)類型)的數(shù)據(jù)元素進(jìn)行操作。在一個(gè)實(shí)施例中,有序前端601是處理器600的部分,該部分取出要被執(zhí)行的指令,并準(zhǔn)備這些指令以便稍后在處理器流水線中使用。
前端601可以包括若干單元。在一個(gè)實(shí)施例中,指令預(yù)取器626從存儲(chǔ)器中取出指令,并將這些指令饋送至指令解碼器628,指令解碼器628進(jìn)而解碼或解釋這些指令。例如,在一個(gè)實(shí)施例中,解碼器將所接收到的指令解碼為機(jī)器可執(zhí)行的被稱為“微指令”或“微操作”(也稱為微op或uop)的一個(gè)或多個(gè)操作。在其他實(shí)施例中,該解碼器將指令解析為可由微架構(gòu)用于執(zhí)行根據(jù)一個(gè)實(shí)施例的多個(gè)操作的操作碼以及對應(yīng)的數(shù)據(jù)和控制字段。在一個(gè)實(shí)施例中,追蹤高速緩存630獲取經(jīng)解碼的uop,并且在uop隊(duì)列634中將它們組合為程序排序的序列或蹤跡,以用于執(zhí)行。當(dāng)追蹤高速緩存630遇到復(fù)雜指令時(shí),微代碼ROM 632提供完成操作所需的uop。
一些指令被轉(zhuǎn)換為單個(gè)微op,而其他指令需要若干個(gè)微op以完成完整的操作。在一個(gè)實(shí)施例中,如果需要多于四個(gè)微op來完成指令,則解碼器628訪問微代碼ROM 632以執(zhí)行該指令。對于一個(gè)實(shí)施例,可將指令解碼為少量的微op,以便在指令解碼器628處進(jìn)行處理。在另一實(shí)施例中,如果需要許多微op來完成操作,則可將指令存儲(chǔ)在微代碼ROM 632中。追蹤高速緩存630參考進(jìn)入點(diǎn)可編程邏輯陣列(PLA)來確定正確的微指令指針,以從微代碼ROM632中讀取微代碼序列來完成根據(jù)一個(gè)實(shí)施例的一條或多條指令。在微代碼ROM 632完成對指令的微op進(jìn)行的序列化操作之后,該機(jī)器的前端601恢復(fù)從追蹤高速緩存630中取出微op。
亂序執(zhí)行引擎603是準(zhǔn)備指令以進(jìn)行執(zhí)行的地方。亂序執(zhí)行邏輯具有若干個(gè)緩沖器,用于將指令流平滑并且重排序,以便在這些指令流沿流水線向下并經(jīng)調(diào)度供執(zhí)行時(shí)優(yōu)化性能。分配器邏輯分配每一個(gè)uop為了執(zhí)行所需的機(jī)器緩沖器和資源。寄存器重命名邏輯將諸個(gè)邏輯寄存器重命名為寄存器組中的條目。分配器還在指令調(diào)度器(存儲(chǔ)器調(diào)度器、快速調(diào)度器602、慢速/通用浮點(diǎn)調(diào)度器604以及簡單浮點(diǎn)調(diào)度器606)之前,在兩個(gè)uop隊(duì)列(一個(gè)用于存儲(chǔ)器操作,而另一個(gè)用于非存儲(chǔ)器操作)中的一個(gè)uop隊(duì)列中,為每一個(gè)uop分配條目。uop調(diào)度器602、604、606基于對它們的從屬輸入寄存器操作數(shù)源的準(zhǔn)備就緒以及uop完成它們的操作所需的執(zhí)行資源的可用性來確定uop何時(shí)準(zhǔn)備好用于執(zhí)行。一個(gè)實(shí)施例的快速調(diào)度器602可以在主時(shí)鐘周期的每半個(gè)時(shí)鐘周期上進(jìn)行調(diào)度,而其他調(diào)度器在每個(gè)主處理器時(shí)鐘周期上僅可調(diào)度一次。調(diào)度器對分派端口仲裁以調(diào)度uop來執(zhí)行。
在執(zhí)行塊611中,寄存器組608和610位于調(diào)度器602、604和606以及執(zhí)行單元612、614、616、618、620、622和624之間。也存在單獨(dú)的寄存器組608、610,分別用于整數(shù)和浮點(diǎn)操作。一個(gè)實(shí)施例中的每個(gè)寄存器組608、610也包括旁路網(wǎng)絡(luò),該旁路網(wǎng)絡(luò)可以繞開還未被寫入到寄存器組中的、剛完成的結(jié)果或者將這些結(jié)果轉(zhuǎn)發(fā)到新的從屬uop中。整數(shù)寄存器組608和浮點(diǎn)寄存器組610也能夠彼此傳遞數(shù)據(jù)。對于一個(gè)實(shí)施例,將整數(shù)寄存器組608劃分為兩個(gè)單獨(dú)的寄存器組,一個(gè)寄存器組用于數(shù)據(jù)的低階32位,第二個(gè)寄存器組用于數(shù)據(jù)的高階32位。一個(gè)實(shí)施例中的浮點(diǎn)寄存器組610具有128位寬的條目,因?yàn)楦↑c(diǎn)指令通常具有從64至128位寬度的操作數(shù)。
執(zhí)行塊611包括執(zhí)行單元612、614、616、618、620、622和624,實(shí)際在這些執(zhí)行單元中執(zhí)行指令。該區(qū)塊包括寄存器組608、610,寄存器組608、610存儲(chǔ)微指令需要執(zhí)行的整數(shù)和浮點(diǎn)數(shù)據(jù)操作數(shù)值。一個(gè)實(shí)施例的處理器600包括許多執(zhí)行單元:地址生成單元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、慢速ALU 620、浮點(diǎn)ALU 622、浮點(diǎn)移動(dòng)單元624。對于一個(gè)實(shí)施例,浮點(diǎn)執(zhí)行塊622和624執(zhí)行浮點(diǎn)、MMX、SIMD、SSE或其他操作。一個(gè)實(shí)施例中的浮點(diǎn)ALU 622包括用于執(zhí)行除法、平方根和余數(shù)微op的64位除64位的浮點(diǎn)除法器。對于本公開的多個(gè)實(shí)施例,可利用浮點(diǎn)硬件來處理涉及浮點(diǎn)值的指令。
在一個(gè)實(shí)施例中,ALU操作去往高速ALU執(zhí)行單元616和618。一個(gè)實(shí)施例中的快速ALU 616和618可以執(zhí)行有效等待時(shí)間為半個(gè)時(shí)鐘周期的快速操作。對于一個(gè)實(shí)施例,大多數(shù)復(fù)雜的整數(shù)操作去往慢速ALU 620,因?yàn)槁貯LU 620包括用于長等待時(shí)間類型操作的整數(shù)執(zhí)行硬件,例如,乘法器、移位器、標(biāo)志邏輯和分支處理設(shè)備。存儲(chǔ)器加載/存儲(chǔ)操作由AGU 612和614來執(zhí)行。對于一個(gè)實(shí)施例,在對64位數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作的情境中描述整數(shù)ALU 616、618和620。在替代實(shí)施例中,可實(shí)現(xiàn)ALU 616、618以及620以支持包括16、32、128以及256等的各種數(shù)據(jù)位。類似地,可實(shí)現(xiàn)浮點(diǎn)單元622和624以支持具有各種寬度的位的一系列操作數(shù)。對于一個(gè)實(shí)施例,浮點(diǎn)單元622和624可結(jié)合SIMD以及多媒體指令對128位寬的緊縮數(shù)據(jù)操作數(shù)進(jìn)行操作。
在一個(gè)實(shí)施例中,在父加載完成執(zhí)行之前,uop調(diào)度器602、604和606分派從屬操作。由于在處理器600中推測性地調(diào)度并執(zhí)行uop,因此處理器600也包括用于處理存儲(chǔ)器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則在流水線中會(huì)存在將臨時(shí)不正確的數(shù)據(jù)留給調(diào)度器的運(yùn)行中的從屬操作。重放機(jī)制跟蹤并重新執(zhí)行使用不正確的數(shù)據(jù)的指令。僅僅從屬操作需要被重放,而允許獨(dú)立操作完成。也可將處理器的一個(gè)實(shí)施例的調(diào)度器和重放機(jī)制設(shè)計(jì)成用于捕捉指令序列,以用于文本串比較操作。
根據(jù)本公開的一個(gè)實(shí)施例,處理器600還包括用于實(shí)現(xiàn)用于存儲(chǔ)器消歧的存儲(chǔ)地址預(yù)測的邏輯。在一個(gè)實(shí)施例中,處理器600的執(zhí)行塊611可以包括用于實(shí)現(xiàn)用于存儲(chǔ)器消歧的存儲(chǔ)地址預(yù)測的存儲(chǔ)地址預(yù)測器(未示出)。
術(shù)語“寄存器”可以是指被用作標(biāo)識(shí)操作數(shù)的指令的部分的板上(on-board)處理器存儲(chǔ)器位置。換句話說,寄存器可以是從處理器外部(從編程者的角度來看)可用的那些。然而,不應(yīng)當(dāng)將實(shí)施例中的寄存器限制于意指特定類型的電路。相反,實(shí)施例中的寄存器能夠存儲(chǔ)并提供數(shù)據(jù),并且能夠執(zhí)行本文中所述的功能。本文所描述的寄存器可利用任何數(shù)量的不同技術(shù),由處理器中的電路來實(shí)現(xiàn),這些不同技術(shù)諸如,專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配的物理寄存器、專用和動(dòng)態(tài)分配的物理寄存器的組合等。在一個(gè)實(shí)施例中,整數(shù)寄存器存儲(chǔ)32位整數(shù)數(shù)據(jù)。一個(gè)實(shí)施例的寄存器組還包含用于緊縮數(shù)據(jù)的八個(gè)多媒體SIMD寄存器。
對于以下討論,寄存器應(yīng)理解為設(shè)計(jì)成用于保存緊縮數(shù)據(jù)的數(shù)據(jù)寄存器,諸如,來自美國加利福尼亞州圣克拉拉市的英特爾公司的啟用了MMX技術(shù)的微處理器中的64位寬MMXTM寄存器(在一些實(shí)例中,也稱為“mm”寄存器)。這些MMX寄存器(在整數(shù)和浮點(diǎn)形式兩者中是可用的)可與伴隨SIMD和SSE指令的緊縮數(shù)據(jù)元素一起操作。類似地,也可以使用涉及SSE2、SSE3、SSE4或以外的(統(tǒng)稱為“SSEx”)技術(shù)的128位寬的XMM寄存器來保存這樣的緊縮數(shù)據(jù)操作數(shù)。在一個(gè)實(shí)施例中,在存儲(chǔ)緊縮數(shù)據(jù)和整型數(shù)據(jù)時(shí),寄存器不需要區(qū)分兩種數(shù)據(jù)類型。在一個(gè)實(shí)施例中,整數(shù)和浮點(diǎn)可被包括在相同的寄存器組中,或被包括在不同的寄存器組中。此外,在一個(gè)實(shí)施例中,浮點(diǎn)和整型數(shù)據(jù)可以存儲(chǔ)在不同的寄存器中或相同的寄存器中。
現(xiàn)在參考圖7,所示的是示出了系統(tǒng)700的框圖,在系統(tǒng)700中可以使用本公開的實(shí)施例。如圖7所示,多處理器系統(tǒng)700是點(diǎn)對點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)對點(diǎn)互連750耦合的第一處理器770和第二處理器780。雖然僅示出了兩個(gè)處理器770和780,但是應(yīng)當(dāng)理解,本公開的實(shí)施例不受限于此。在其他實(shí)施例中,在給定處理器中可存在一個(gè)或多個(gè)附加處理器。
處理器770和780示出為分別包括集成存儲(chǔ)器控制器單元772和782。處理器770還包括點(diǎn)對點(diǎn)(P-P)接口776和778作為其總線控制器單元的部分;類似地,第二處理器780包括P-P接口786和788。處理器770、780可以經(jīng)由使用點(diǎn)對點(diǎn)(P-P)接口電路778、788的P-P接口750來交換信息。如圖7所示,IMC 772和782將處理器耦合至相應(yīng)的存儲(chǔ)器,即,存儲(chǔ)器732和存儲(chǔ)器734,它們可以是本地連接到相應(yīng)的處理器的主存儲(chǔ)器的部分。
處理器770、780可各自經(jīng)由使用點(diǎn)對點(diǎn)接口電路776、794、786和798的各個(gè)P-P接口752和754與芯片組790交換信息。芯片組790還可以經(jīng)由高性能圖形接口739與高性能圖形電路738交換信息。
共享高速緩存(未示出)可以被包括在任一處理器之內(nèi),或被包括在兩個(gè)處理器外部但仍經(jīng)由P-P互連與這些處理器連接,使得如果將某處理器置于低功率模式時(shí),可將任一處理器或兩個(gè)處理器的本地高速緩存信息存儲(chǔ)在該共享高速緩存中。
芯片組790可經(jīng)由接口796耦合至第一總線716。在一個(gè)實(shí)施例中,第一總線716可以是外圍組件互連(PCI)總線,或諸如PCI快速總線或另一第三代I/O互連總線之類的總線,但是本公開的范圍不限于此。
如圖7所示,各種I/O設(shè)備714可以連同總線橋718被耦合至第一總線716,總線橋718將第一總線716耦合至第二總線720。在一個(gè)實(shí)施例中,第二總線720可以是低引腳數(shù)(LPC)總線。在一個(gè)實(shí)施例中,各種設(shè)備可以耦合至第二總線720,包括例如,鍵盤和/或鼠標(biāo)722、通信設(shè)備727以及存儲(chǔ)單元728(諸如,可包括指令/代碼和數(shù)據(jù)730的盤驅(qū)動(dòng)器或其他大容量存儲(chǔ)設(shè)備)。此外,音頻I/O 724可以被耦合至第二總線720。注意,其他架構(gòu)是可能的。例如,系統(tǒng)可實(shí)現(xiàn)多分支總線或者其他此類架構(gòu),而不是圖7中的點(diǎn)對點(diǎn)架構(gòu)。
現(xiàn)在參考圖8,所示的是系統(tǒng)800的框圖,在系統(tǒng)800中本公開的一個(gè)實(shí)施例可以操作。系統(tǒng)800可以包括耦合至圖形存儲(chǔ)器控制器中樞(GMCH)820的一個(gè)或多個(gè)處理器810、815。在圖8中以虛線表示附加的處理器815的可選的性質(zhì)。
每個(gè)處理器810、815可以是如上所述的電路、集成電路、處理器和/或硅集成電路的某個(gè)版本。然而,應(yīng)當(dāng)注意,集成圖形邏輯和集成存儲(chǔ)器控制單元不太可能出現(xiàn)在處理器810、815中。圖8示出了GMCH 820可以耦合至存儲(chǔ)器840,該存儲(chǔ)器840可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。對于至少一個(gè)實(shí)施例,DRAM可以與非易失性高速緩存相關(guān)聯(lián)。
GMCH 820可以是芯片組或芯片組的部分。GMCH 820可以與處理器810、815進(jìn)行通信,并控制處理器810、815與存儲(chǔ)器840之間的交互。GMCH 820還可擔(dān)當(dāng)處理器810、815和系統(tǒng)800的其他元件之間的加速總線接口。對于至少一個(gè)實(shí)施例,GMCH 820經(jīng)由諸如前端總線(FSB)895之類的多點(diǎn)總線與處理器810、815進(jìn)行通信。
此外,GMCH 820耦合至顯示器845(諸如平板或觸摸屏顯示器)。GMCH820可包括集成圖形加速器。GMCH 820進(jìn)一步耦合至輸入/輸出(I/O)控制器中樞(ICH)850,該輸入/輸出(I/O)控制器中樞(ICH)850可用于將各種外圍設(shè)備耦合至系統(tǒng)800。在圖8的實(shí)施例中作為示例示出了外部圖形設(shè)備860以及另一外圍設(shè)備870,外部圖形設(shè)備850可以是耦合至ICH 850的分立圖形設(shè)備。
替代地,附加的或不同的處理器也可存在于系統(tǒng)800中。例如,附加的處理器815可以包括與處理器810相同的附加的處理器、與處理器810異構(gòu)的或不對稱的附加的處理器、加速器(例如,圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場可編程門陣列或任何其他處理器。在包括架構(gòu)、微架構(gòu)、熱、功耗特征等一系列品質(zhì)度量的方面,處理器810、815之間存在各種差異。這些差異可以有效顯示為處理器810和815之間的不對稱性和異構(gòu)性。對于至少一個(gè)實(shí)施例,各種處理器810和815可駐留在同一管芯封裝中。
現(xiàn)在參考圖9,所示的是系統(tǒng)900的框圖,在系統(tǒng)900中本公開的實(shí)施例可以操作。圖9示出了處理器970和980。處理器970、980可以分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”)972和982,并且分別經(jīng)由點(diǎn)對點(diǎn)(P-P)接口978和988之間的點(diǎn)對點(diǎn)互連950彼此相互通信。處理器970、980各自通過相應(yīng)P-P接口976到994以及986到998經(jīng)由點(diǎn)對點(diǎn)互連952和954與芯片組990通信,如圖所示。對于至少一個(gè)實(shí)施例,CL 972、982可以包括集成存儲(chǔ)器控制器單元。CL 972、982可以包括I/O控制邏輯。如圖所示,耦合至CL972、982以及I/O設(shè)備914的存儲(chǔ)器932、934還耦合至控制邏輯972、982。傳統(tǒng)I/O設(shè)備915經(jīng)由接口996耦合至芯片組990。
可在許多不同的系統(tǒng)類型中實(shí)現(xiàn)實(shí)施例。圖10是根據(jù)本公開的實(shí)施例的SoC 1000的框圖。虛線框是更先進(jìn)的SoC的可選特征。在圖10中,互連單元1012耦合至:應(yīng)用處理器1020,包括一組一個(gè)或多個(gè)核1002A-N以及共享高速緩存單元1006;系統(tǒng)代理單元1010;總線控制器單元1016;集成存儲(chǔ)器控制器單元1014;一組或一個(gè)或多個(gè)媒體處理器1018,可包括集成圖形邏輯1008、用于提供靜態(tài)和/或視頻照相功能的圖像處理器1024、提供硬件音頻加速的音頻處理器1026、提供視頻編碼/解碼加速的視頻處理器1028、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元1030;直接存儲(chǔ)器存取(DMA)單元1032;以及顯示單元1040,用于耦合至一個(gè)或多個(gè)外部顯示器。在一個(gè)實(shí)施例中,存儲(chǔ)器模塊可以被包括在集成存儲(chǔ)器控制器單元1014中。在另一個(gè)實(shí)施例中,存儲(chǔ)器模塊可以被包括在可以被用來訪問和/或控制存儲(chǔ)器的SoC 1000的一個(gè)或多個(gè)其他組件中。
存儲(chǔ)器層次結(jié)構(gòu)包括核內(nèi)的一個(gè)或多個(gè)層級(jí)的高速緩存,一組或一個(gè)或多個(gè)共享高速緩存單元1006以及耦合到集成存儲(chǔ)器控制器單元1014的集合的外部存儲(chǔ)器(未示出)。共享高速緩存單元1006的集合可以包括一個(gè)或多個(gè)中級(jí)高速緩存,諸如,第2級(jí)(L2)、第3級(jí)(L3)、第4級(jí)(L4),或其他層級(jí)的高速緩存,末級(jí)高速緩存(LLC),和/或上述各項(xiàng)的組合。
在一些實(shí)施例中,核1002A-N中的一個(gè)或多個(gè)核能夠多線程化。系統(tǒng)代理1010包括協(xié)調(diào)并操作核1002A-N的那些組件。系統(tǒng)代理單元1010可包括例如功率控制單元(PCU)和顯示單元。PCU可以是或可包括用于調(diào)節(jié)核1002A-N和集成圖形邏輯1008的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)從外部連接的顯示器。
核1002A-N在架構(gòu)和/或指令集方面可以是同構(gòu)或異構(gòu)的。例如,核1002A-N中的一些可以是有序的,而另一些是亂序的。作為另一個(gè)示例,核1002A-N中的兩個(gè)或更多能夠執(zhí)行相同的指令集,而其他核僅能夠執(zhí)行該指令集的子集或不同的指令集。
應(yīng)用處理器1020可以是通用處理器,諸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至強(qiáng)(XeonTM)、安騰(ItaniumTM)、凌動(dòng)(AtomTM)或QuarkTM處理器,這些均可以從加利福尼亞圣克拉拉市的英特爾TM公司獲得。或者,應(yīng)用處理器1020可以來自另一個(gè)公司,諸如ARM控股TM公司、MIPSTM等。應(yīng)用處理器1020可以是專用處理器,諸如例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、協(xié)處理器、嵌入式處理器等。應(yīng)用處理器1020可以被實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上。應(yīng)用處理器1020可以是一個(gè)或多個(gè)襯底的部分,并且/或者可以使用諸如例如BiCMOS、CMOS或NMOS之類的多種工藝技術(shù)中的任何技術(shù)將應(yīng)用處理器1020實(shí)現(xiàn)在一個(gè)或多個(gè)襯底上。
圖11是根據(jù)本公開的片上系統(tǒng)(SoC)設(shè)計(jì)的實(shí)施例的框圖。作為特定的說明性示例,SoC 1100被包括在用戶裝備(UE)中。在一個(gè)實(shí)施例中,UE是指由終端用戶用于通信的任何設(shè)備,諸如,手持式電話、智能電話、平板、超薄筆記本、具有寬帶適配器的筆記本或任何其他類似的通信設(shè)備。UE常常連接到基站或節(jié)點(diǎn),該基站或節(jié)點(diǎn)本質(zhì)上潛在地對應(yīng)于GSM網(wǎng)絡(luò)中的移動(dòng)站(MS)。
在此,SoC 1100包括2個(gè)核——1106和1107。核1106和1107可符合指令集架構(gòu),諸如,基于架構(gòu)核TM的處理器、超微半導(dǎo)體公司(AMD)處理器、基于MIPS的處理器、基于ARM的處理器設(shè)計(jì),或它們的客戶,以及它們的被許可方或采納方。核1106和1107耦合至與總線接口單元1109和L2高速緩存1110相關(guān)聯(lián)的高速緩存控制1108以與系統(tǒng)1100的其他部分進(jìn)行通信?;ミB1110包括可能實(shí)現(xiàn)所述公開的一個(gè)或多個(gè)方面的片上互連,諸如IOSF、AMBA或上文討論的其他互連。
互連1110提供到其他組件的通信信道,其他組件諸如與用戶身份模塊(SIM)卡對接的SIM 1130、保存供核1106和1107執(zhí)行以初始化和引導(dǎo)SOC 1100的引導(dǎo)代碼的引導(dǎo)ROM 1135、與外部存儲(chǔ)器(例如,DRAM 1160)對接的SDRAM控制器1140、與非易失性存儲(chǔ)器(例如,閃存1165)對接的閃存控制器1145、與外圍設(shè)備對接的外圍控制裝置1150(例如,串行外圍接口)、用于顯示和接收輸入(例如,允許觸摸的輸入)的視頻編解碼器1120和視頻接口1125、用于執(zhí)行圖形相關(guān)的計(jì)算的GPU 1115等等。這些接口中的任何一種可以包括本文中所述公開的多個(gè)方面。另外,系統(tǒng)1100示出了用于通信的外圍設(shè)備,諸如藍(lán)牙模塊1170、3G調(diào)制解調(diào)器1175、GPS 1180以及Wi-Fi 1185。
圖12示出了計(jì)算機(jī)系統(tǒng)1200的示例形式中的機(jī)器的示意圖,在該計(jì)算機(jī)系統(tǒng)1200內(nèi),可以執(zhí)行用于使機(jī)器執(zhí)行本文所討論的方法中的任何一個(gè)或多個(gè)的一組指令。在替代實(shí)施例中,可以在LAN、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)或因特網(wǎng)中將機(jī)器連接(例如,聯(lián)網(wǎng))到其他機(jī)器。機(jī)器可以在客戶機(jī)-服務(wù)器網(wǎng)絡(luò)環(huán)境中作為服務(wù)器或客戶機(jī)設(shè)備操作,或者在對等(或分布式)網(wǎng)絡(luò)環(huán)境中作為對等機(jī)器操作。該機(jī)器可以是個(gè)人計(jì)算機(jī)(PC)、平板PC、機(jī)頂盒(STB)、個(gè)人數(shù)字助理(PDA)、蜂窩電話、web設(shè)備、服務(wù)器、網(wǎng)絡(luò)路由器、交換機(jī)或橋、或者能夠執(zhí)行指定由該機(jī)器執(zhí)行的動(dòng)作的一組指令(連續(xù)的或以其他方式)的任何機(jī)器。此外,雖然僅示出單個(gè)機(jī)器,但是也應(yīng)當(dāng)認(rèn)為術(shù)語“機(jī)器”包括單獨(dú)地或共同地執(zhí)行一組(或多組)指令以執(zhí)行本文中所討論的方法中的任何一個(gè)或多個(gè)的機(jī)器的任何集合。
計(jì)算機(jī)系統(tǒng)1200包括處理設(shè)備1202、主存儲(chǔ)器1204(例如,只讀存儲(chǔ)器(ROM)、閃存、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)(諸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、靜態(tài)存儲(chǔ)器1206(例如,閃存、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)等)以及數(shù)據(jù)存儲(chǔ)設(shè)備1218,它們經(jīng)由總線1230彼此進(jìn)行通信。
處理設(shè)備1202表示一個(gè)或多個(gè)通用處理設(shè)備,諸如微處理器、中央處理單元等。更具體地,處理設(shè)備可以是復(fù)雜指令集計(jì)算(CISC)微處理器、精簡指令集計(jì)算機(jī)(RISC)微處理器、超長指令字(VLIW)微處理器、或?qū)崿F(xiàn)其他指令集的處理器、或?qū)崿F(xiàn)指令集的組合的處理器。處理設(shè)備1202也可以是一個(gè)或多個(gè)專用處理設(shè)備,諸如,專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、數(shù)字信號(hào)處理器(DSP)、網(wǎng)絡(luò)處理器等。在一個(gè)實(shí)施例中,處理設(shè)備1202可以包括一個(gè)或多個(gè)處理核。處理設(shè)備1202被配置成執(zhí)行用于執(zhí)行本文中所討論的操作和步驟的處理邏輯1226。
計(jì)算機(jī)系統(tǒng)1200可以進(jìn)一步包括通信地耦合至網(wǎng)絡(luò)1220的網(wǎng)絡(luò)接口設(shè)備1208。計(jì)算機(jī)系統(tǒng)1200還可以包括視頻顯示單元1210(例如,液晶顯示器(LCD)或陰極射線管(CRT))、字母數(shù)字輸入設(shè)備1212(例如,鍵盤)、光標(biāo)控制設(shè)備1214(例如,鼠標(biāo))、以及信號(hào)生成設(shè)備1216(例如,揚(yáng)聲器)此外,計(jì)算機(jī)系統(tǒng)1200可以包括圖形處理單元1222、視頻處理單元1228以及音頻處理單元1232。
數(shù)據(jù)存儲(chǔ)設(shè)備1218可以包括機(jī)器可訪問存儲(chǔ)介質(zhì)1224,其上存儲(chǔ)著實(shí)現(xiàn)本文所述功能的任何一個(gè)或多個(gè)方法的軟件1226,諸如如上文所述實(shí)現(xiàn)用于存儲(chǔ)器消歧的存儲(chǔ)地址預(yù)測。在由計(jì)算機(jī)系統(tǒng)1200對軟件1226的執(zhí)行期間,軟件1226也可完全或至少部分地作為指令1226駐留在主存儲(chǔ)器1204之內(nèi)和/或作為處理邏輯1226駐留在處理設(shè)備1202之內(nèi);該主存儲(chǔ)器1204和處理設(shè)備1202也構(gòu)成機(jī)器可訪問存儲(chǔ)介質(zhì)。
機(jī)器可讀存儲(chǔ)介質(zhì)1224還可以被用來存儲(chǔ)實(shí)現(xiàn)存儲(chǔ)地址預(yù)測和/或包含調(diào)用以上應(yīng)用的方法的軟件庫的指令1226。雖然在示例實(shí)施例中,將機(jī)器可訪問存儲(chǔ)介質(zhì)1128示出為單個(gè)介質(zhì),但是應(yīng)當(dāng)認(rèn)為術(shù)語“機(jī)器可訪問存儲(chǔ)介質(zhì)”包括存儲(chǔ)一組或多組指令的單個(gè)或多個(gè)介質(zhì)(例如,集中式或分布式數(shù)據(jù)庫和/或相關(guān)聯(lián)的高速緩存與服務(wù)器)。還應(yīng)當(dāng)認(rèn)為術(shù)語“機(jī)器可訪問存儲(chǔ)介質(zhì)”包括能夠存儲(chǔ)、編碼或攜帶由機(jī)器執(zhí)行并且使該機(jī)器執(zhí)行本公開的任何一個(gè)或多個(gè)方法的一組指令的任何介質(zhì)。應(yīng)當(dāng)相應(yīng)地認(rèn)為術(shù)語“機(jī)器可訪問存儲(chǔ)介質(zhì)”包括但不限于:固態(tài)存儲(chǔ)器以及光和磁介質(zhì)。
以下示例關(guān)于進(jìn)一步的實(shí)施例。示例1是包括一種包括用于執(zhí)行任務(wù)的處理核以及耦合至該處理核的存儲(chǔ)器管理單元的處理系統(tǒng)。存儲(chǔ)器管理單元包括用于存儲(chǔ)頁表?xiàng)l目的存儲(chǔ)單元,該頁表?xiàng)l目包括存儲(chǔ)器幀的一個(gè)或多個(gè)標(biāo)識(shí)符、保護(hù)密鑰、以及根據(jù)用戶模式或管理程序模式指示一個(gè)或多個(gè)存儲(chǔ)器幀是否可訪問的訪問模式位;第一許可寄存器,包括多個(gè)字段,每個(gè)字段包括在用戶模式下反映一組存儲(chǔ)器訪問許可的一組位,以及第二許可寄存器,存儲(chǔ)多個(gè)字段,每個(gè)字段包括在管理程序模式下反映一組存儲(chǔ)器訪問許可的一組位。
在示例2中,示例1的主題可以任選地規(guī)定,存儲(chǔ)器管理單元進(jìn)一步包括復(fù)用器,該復(fù)用器包括耦合至第一許可寄存器的第一輸入、耦合至第二許可寄存器的第二輸入、以及耦合至訪問模式位的控制引腳。
在示例3中,示例1和2中的任一示例的主題可以任選地規(guī)定,響應(yīng)于訪問模式位指示用戶模式,復(fù)用器將存儲(chǔ)在第一許可寄存器的多個(gè)字段中的一個(gè)字段中的第一組位提供給復(fù)用器的輸出,以及響應(yīng)于訪問模式位指示管理程序模式,復(fù)用器將存儲(chǔ)在第二許可寄存器的多個(gè)字段中的一個(gè)字段中的第二組位提供給復(fù)用器的輸出。
在示例4中,示例3的主題可以任選地規(guī)定,第一許可寄存器的多個(gè)字段中的一個(gè)字段是根據(jù)頁表?xiàng)l目的保護(hù)密鑰選擇的,并且第二許可寄存器的多個(gè)字段中的一個(gè)字段是根據(jù)頁表?xiàng)l目的保護(hù)密鑰選擇的。
在示例5中,示例4的主題可以任選地規(guī)定,其中第一組位包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè),其中第二組位包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè)。
在示例6中,示例5的主題可以任選地規(guī)定,頁表?xiàng)l目包括多個(gè)狀態(tài)位。
在示例7中,示例6的主題可以任選的規(guī)定,存儲(chǔ)器管理單元包括接收多個(gè)狀態(tài)位以及基于該多個(gè)狀態(tài)位確定第一組存儲(chǔ)器訪問許可的控制器,并且其中第一組存儲(chǔ)器訪問許可包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè)。
在示例8中,示例7的主題可以任選地規(guī)定,存儲(chǔ)器管理單元包括AND邏輯,該AND邏輯包括用于接收來自復(fù)用器的輸出的第一組存儲(chǔ)器訪問許可的第一輸入以及用于接收來自復(fù)用器的輸出的第二組存儲(chǔ)器訪問許可的第二輸入,其中該AND邏輯基于該第一和第二組存儲(chǔ)器訪問許可生成一組最終存儲(chǔ)器訪問許可。
在示例9中,示例8的主題可以任選地規(guī)定,存儲(chǔ)器管理單元基于最終存儲(chǔ)器訪問許可將任務(wù)訪問提供給一個(gè)或多個(gè)存儲(chǔ)器幀。
在示例10中,示例1的主題可以任選地規(guī)定,任務(wù)具有用戶模式訪問或管理程序模式訪問之一的特權(quán)等級(jí)。
在示例11中,示例1和10中的任一個(gè)示例的主題可以任選地規(guī)定,第一許可寄存器能被具有用戶模式訪問或管理程序模式訪問之一的特權(quán)等級(jí)的任務(wù)訪問。
在示例12中,示例11的主題可以任選地規(guī)定,第一許可寄存器包括任務(wù)可設(shè)置的多個(gè)許可位,該任務(wù)具有用戶模式訪問或管理程序模式訪問之一的特權(quán)等級(jí)。
在示例13中,示例12的主題可以任選地規(guī)定,具有用戶模式訪問或管理程序模式訪問之一的特權(quán)等級(jí)的任務(wù)用于標(biāo)識(shí)存儲(chǔ)在第一許可寄存器中的許可位并且設(shè)置該許可位以禁用該許可。
在示例14中,示例13的主題可以任選地規(guī)定,保護(hù)密鑰包括n位,并且第一和第二許可寄存器中的每一個(gè)包括2n個(gè)字段。
示例15是一種片上系統(tǒng)(SoC),包括存儲(chǔ)器以及通信地耦合至該存儲(chǔ)器的處理器,該處理器包括用于執(zhí)行任務(wù)的處理核以及耦合至該處理核的存儲(chǔ)器管理單元,該存儲(chǔ)器管理單元包括用于存儲(chǔ)頁表?xiàng)l目的存儲(chǔ)單元,該頁表?xiàng)l目包括存儲(chǔ)器幀的一個(gè)或多個(gè)標(biāo)識(shí)符、保護(hù)密鑰、以及根據(jù)用戶模式或管理程序模式指示一個(gè)或多個(gè)存儲(chǔ)器幀是否可訪問的訪問模式位,第一許可寄存器,包括多個(gè)字段,每個(gè)字段包括在用戶模式下反映一組存儲(chǔ)器訪問許可的一組位,以及第二許可寄存器,存儲(chǔ)多個(gè)字段,每個(gè)字段包括在管理程序模式下反映一組存儲(chǔ)器訪問許可的一組位。
在示例16中,示例15的主題可以任選地規(guī)定,存儲(chǔ)器管理單元進(jìn)一步包括復(fù)用器,該復(fù)用器包括耦合至第一許可寄存器的第一輸入、耦合至第二許可寄存器的第二輸入、以及耦合至訪問模式位的控制引腳。
在示例17中,示例15和16中的任一示例的主題可以任選地規(guī)定,響應(yīng)于訪問模式位指示用戶模式,復(fù)用器將存儲(chǔ)在第一許可寄存器的多個(gè)字段中的一個(gè)字段中的第一組位提供給復(fù)用器的輸出,以及響應(yīng)于訪問模式位指示管理程序模式,復(fù)用器將存儲(chǔ)在第二許可寄存器的多個(gè)字段中的一個(gè)字段中的第二組位提供給復(fù)用器的輸出。
在示例18中,示例17的主題可以任選地規(guī)定,根據(jù)頁表?xiàng)l目的保護(hù)密鑰選擇第一許可寄存器的多個(gè)字段中的一個(gè)字段,以及根據(jù)頁表?xiàng)l目的保護(hù)密鑰選擇第二許可寄存器的多個(gè)字段中的一個(gè)字段。
在示例19中,示例17的主題可以任選地規(guī)定,第一組位包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè),其中第二組位包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè)。
在示例20中,示例19的主題可以任選地規(guī)定,頁表?xiàng)l目包括多個(gè)狀態(tài)位,其中存儲(chǔ)器管理單元包括用于接收多個(gè)狀態(tài)位以及基于該多個(gè)狀態(tài)位確定第一組存儲(chǔ)器訪問許可的控制器,并且其中第一組存儲(chǔ)器訪問許可包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè),并且其中存儲(chǔ)器管理單元包括AND邏輯,該AND邏輯包括用于接收來自復(fù)用器的輸出的第一組存儲(chǔ)器訪問許可的第一輸入以及用于接收來自復(fù)用器的輸出的第二組存儲(chǔ)器訪問許可的第二輸入,其中該AND邏輯基于該第一和第二組存儲(chǔ)器訪問許可生成一組最終存儲(chǔ)器訪問許可。
示例21是一種方法,包括由處理核基于任務(wù)的特權(quán)等級(jí)確定任務(wù)的訪問模式,其中訪問模式是用戶模式訪問或管理程序模式訪問中的一個(gè),確定由任務(wù)分配的存儲(chǔ)器幀的標(biāo)識(shí)符,由執(zhí)行操作系統(tǒng)的處理核選擇任務(wù)的保護(hù)密鑰,以及將保護(hù)密鑰、訪問模式以及標(biāo)識(shí)符存儲(chǔ)在耦合至處理核的存儲(chǔ)器管理單元的頁表?xiàng)l目中。
在示例22中,示例21的主題可以進(jìn)一步包括確定任務(wù)的存儲(chǔ)器訪問許可,該存儲(chǔ)器訪問許可包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè),基于訪問模式選擇分配給用戶模式訪問的第一許可寄存器以及分配給管理程序模式訪問的第二許可寄存器中的一個(gè),基于保護(hù)密鑰標(biāo)識(shí)在第一許可寄存器或第二許可寄存器中的所選擇的一個(gè)中的字段,以及將存儲(chǔ)器訪問許可存儲(chǔ)在被標(biāo)識(shí)的字段中。
在示例23中,示例21和22中的任一示例的主題可以任選地規(guī)定,第一許可寄存器是具有用戶模式訪問的特權(quán)等級(jí)的任務(wù)可訪問的,以及其中第一許可寄存器包括具有用戶模式訪問的特權(quán)等級(jí)的任務(wù)可設(shè)置的寫禁用位。
示例24是一種設(shè)備,包括:用于執(zhí)行示例21和22中的任一示例的主題的裝置。
示例25是一種機(jī)器可讀非瞬態(tài)介質(zhì),具有存儲(chǔ)于其上的被執(zhí)行時(shí)進(jìn)行以下操作的程序代碼,該操作包括:由處理核基于任務(wù)的特權(quán)等級(jí)確定任務(wù)的訪問模式,其中訪問模式是用戶模式訪問或管理程序模式訪問中的一個(gè),確定由任務(wù)分配的存儲(chǔ)器幀的標(biāo)識(shí)符,由執(zhí)行操作系統(tǒng)的處理核選擇任務(wù)的保護(hù)密鑰,以及將保護(hù)密鑰、訪問模式以及標(biāo)識(shí)符存儲(chǔ)在耦合至處理核的存儲(chǔ)器管理單元的頁表?xiàng)l目中。
在示例26中,示例25的主題可以進(jìn)一步包括確定任務(wù)的存儲(chǔ)器訪問許可,該存儲(chǔ)器訪問許可包括指示讀許可的第一位、指示寫許可的第二位、或指示執(zhí)行許可的第三位中的至少一個(gè),基于訪問模式、選擇分配給用戶模式訪問的第一許可寄存器或分配給管理程序模式訪問的第二許可寄存器中的一個(gè);基于保護(hù)密鑰標(biāo)識(shí)在第一許可寄存器或第二許可寄存器中的所選擇的一個(gè)中的字段,以及將存儲(chǔ)器訪問許可存儲(chǔ)在被標(biāo)識(shí)的字段中。
盡管是參考有限數(shù)量的實(shí)施例來描述本公開的,但是本領(lǐng)域技術(shù)人員將從其中理解到很多的修改和變體。所附權(quán)利要求書旨在涵蓋落入本公開的真實(shí)精神和范圍內(nèi)的所有這些修改和變體。
設(shè)計(jì)會(huì)經(jīng)歷多個(gè)階段,從創(chuàng)建到仿真到制造。表示設(shè)計(jì)的數(shù)據(jù)可以用多種方式來表示該設(shè)計(jì)。首先,像仿真中有用的那樣,可以使用硬件描述語言或另一功能性描述語言來表示硬件。此外,可以在設(shè)計(jì)過程的一些階段產(chǎn)生具有邏輯和/或晶體管門的電路級(jí)模型。此外,大多數(shù)設(shè)計(jì)在某個(gè)階段都達(dá)到表示硬件模型中各種設(shè)備的物理布置的數(shù)據(jù)的層級(jí)。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是指定在用于制造集成電路的掩模的不同掩模層上存在或不存在各種特征的數(shù)據(jù)。在任何設(shè)計(jì)表示中,數(shù)據(jù)可以被存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。存儲(chǔ)器或者磁或光存儲(chǔ)設(shè)備(諸如,盤)可以是存儲(chǔ)經(jīng)由光或電波發(fā)送的信息的機(jī)器可讀介質(zhì),調(diào)制或以其他方式生成這些光或電波以發(fā)送這些信息。當(dāng)發(fā)送指示或承載代碼或設(shè)計(jì)的電載波達(dá)到實(shí)現(xiàn)該電信號(hào)的復(fù)制、緩沖或重新發(fā)送的程度時(shí),即產(chǎn)生了新的副本。因此,通信供應(yīng)商或網(wǎng)絡(luò)供應(yīng)商會(huì)在有形機(jī)器可讀介質(zhì)上至少臨時(shí)地存儲(chǔ)具體化本公開的諸個(gè)實(shí)施例的技術(shù)的項(xiàng)目(諸如,編碼在載波中的信息)。
在本文中使用的模塊指的是硬件、軟件、和/或固件的任意組合。作為示例,模塊包括與非瞬態(tài)介質(zhì)相關(guān)聯(lián)的諸如微控制器之類的硬件,該非瞬態(tài)介質(zhì)用于存儲(chǔ)適于由該微控制器執(zhí)行的代碼。因此,在一個(gè)實(shí)施例中,對模塊的引用是指硬件,該硬件被專門配置成識(shí)別和/或執(zhí)行要保存在非瞬態(tài)介質(zhì)上的代碼。另外,在另一實(shí)施例中,模塊的使用是指包括代碼的非瞬態(tài)介質(zhì),該代碼專門適于由微控制器執(zhí)行以進(jìn)行預(yù)定操作。并且可推斷,在又一實(shí)施例中,術(shù)語模塊(在該示例中)可以指微控制器和非瞬態(tài)介質(zhì)的組合。通常,被示為分開的模塊邊界一般不同而且有可能重疊。例如,第一和第二模塊可共享硬件、軟件、固件、或它們的組合,同時(shí)可能保留某些獨(dú)立的硬件、軟件或固件。在一個(gè)實(shí)施例中,術(shù)語邏輯的使用包括諸如晶體管、寄存器之類的硬件或諸如可編程邏輯器件之類的其它硬件。
在一個(gè)實(shí)施例中,短語“被配置成”的使用指的是安排、合在一起、制造、提供銷售、進(jìn)口和/或設(shè)計(jì)裝置、硬件、邏輯或元件以執(zhí)行指定和/或確定的任務(wù)。在該示例中,沒有操作的裝置或其元件仍然“被配置成”執(zhí)行指定任務(wù),如果它被設(shè)計(jì)、耦合、和/或互連以執(zhí)行所述指定任務(wù)的話。作為純說明性示例,在操作期間,邏輯門可以提供0或1。但“被配置成”向時(shí)鐘提供啟用信號(hào)的邏輯門不包括可提供1或0的每一潛在邏輯門。而是,該邏輯門是以在操作期間1或0的輸出用于啟用時(shí)鐘的某種方式來耦合的邏輯門。再次注意,術(shù)語“被配置成”的使用不要求操作,而是集中于裝置、硬件、和/或元件的潛在狀態(tài),其中在該潛在狀態(tài)中,該裝置、硬件和/或元件被設(shè)計(jì)成在該裝置、硬件和/或元件正在操作時(shí)執(zhí)行特定任務(wù)。
此外,在一個(gè)實(shí)施例中,短語“用于”、“能夠/能夠用于”和/或“能用于”的使用指的是一些裝置、邏輯、硬件、和/或元件按這種方式設(shè)計(jì)來以指定方式啟用對該裝置、邏輯、硬件、和/或元件的使用。如上注意的,在一個(gè)實(shí)施例中,用于、能夠、或能用于的使用指的是裝置、邏輯、硬件、和/或元件的潛在狀態(tài),其中該裝置、邏輯、硬件、和/或元件沒有正在操作而是被按這種方式設(shè)計(jì)來以指定方式啟用裝置的使用。
如在本文中所使用的值包括數(shù)字、狀態(tài)、邏輯狀態(tài)、或二進(jìn)制邏輯狀態(tài)的任何已知表示。通常,邏輯電平、邏輯值、或多個(gè)邏輯值的使用也被稱為1和0,這簡單地表示了二進(jìn)制邏輯狀態(tài)。例如,1指的是邏輯高電平,0指的是邏輯低電平。在一個(gè)實(shí)施例中,諸如晶體管或閃存單元之類的存儲(chǔ)單元能夠保持單個(gè)邏輯值或多個(gè)邏輯值。不過,也使用了計(jì)算機(jī)系統(tǒng)中的值的其它表示。例如,十進(jìn)制數(shù)十還可以被表示為二進(jìn)制值910和十六進(jìn)制字母A。因此,值包括能夠被保存在計(jì)算機(jī)系統(tǒng)中的信息的任何表示。
而且,狀態(tài)也可由值或值的部分來表示。作為示例,諸如邏輯1之類的第一值可表示默認(rèn)或初始狀態(tài),而諸如邏輯0之類的第二值可表示非默認(rèn)狀態(tài)。此外,在一個(gè)實(shí)施例中,術(shù)語重置和置位分別指的是默認(rèn)和已更新的值或狀態(tài)。例如,默認(rèn)值潛在地包括高邏輯值,即,復(fù)位,而更新的值潛在地包括低邏輯值,即,置位。注意,可以使用值的任何組合來表示任意數(shù)量的狀態(tài)。
上述方法、硬件、軟件、固件或代碼的實(shí)施例可以經(jīng)由存儲(chǔ)在機(jī)器可訪問、機(jī)器可讀、計(jì)算機(jī)可訪問、或計(jì)算機(jī)可讀介質(zhì)上可由處理元件執(zhí)行的指令或代碼來實(shí)現(xiàn)。非瞬態(tài)機(jī)器可訪問/可讀介質(zhì)包括提供(即存儲(chǔ)和/或發(fā)送)諸如計(jì)算機(jī)或電子系統(tǒng)之類的機(jī)器可讀的形式的信息的任何機(jī)制。例如,非瞬態(tài)機(jī)器可訪問介質(zhì)包括:隨機(jī)存取存儲(chǔ)器(RAM),諸如靜態(tài)RAM(SRAM)或動(dòng)態(tài)RAM(DRAM);ROM;磁或光存儲(chǔ)介質(zhì);閃存設(shè)備;電存儲(chǔ)設(shè)備;光存儲(chǔ)設(shè)備;聲存儲(chǔ)設(shè)備;用于保持從瞬態(tài)(傳播)信號(hào)(例如載波、紅外信號(hào)、數(shù)字信號(hào))接收的信息的其它形式的存儲(chǔ)設(shè)備;等等,這些與可從其接收信息的非瞬態(tài)介質(zhì)相區(qū)別。
被用于對邏輯進(jìn)行編程以執(zhí)行本公開的諸個(gè)實(shí)施例的指令可被存儲(chǔ)在系統(tǒng)的存儲(chǔ)器(諸如,DRAM、高速緩存、閃存、或其他存儲(chǔ)器)中。此外,指令可經(jīng)由網(wǎng)絡(luò)或通過其他計(jì)算機(jī)可讀介質(zhì)來分配。因此,機(jī)器可讀介質(zhì)可包括用于以機(jī)器(例如,計(jì)算機(jī))可讀的形式存儲(chǔ)或發(fā)送信息的任何機(jī)制,但不限于:軟盤、光盤、緊致盤只讀存儲(chǔ)器(CD-ROM)、磁光盤、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、磁卡或光卡、閃存、或在互聯(lián)網(wǎng)上經(jīng)由電、光、聲、或其他形式的傳播信號(hào)(例如,載波、紅外信號(hào)、數(shù)字信號(hào)等)發(fā)送信息中所使用的有形的機(jī)器可讀存儲(chǔ)器。因此,計(jì)算機(jī)可讀介質(zhì)包括適用于存儲(chǔ)或發(fā)送機(jī)器(例如,計(jì)算機(jī))可讀形式的電子指令或信息的任何類型的有形的機(jī)器可讀介質(zhì)。
本說明書中通篇對“一個(gè)實(shí)施例”或“實(shí)施例”的引用意指結(jié)合所述實(shí)施例描述的特定的特征、結(jié)構(gòu)或特性被包括在本公開的至少一個(gè)實(shí)施例中。因此,在整篇說明書中的不同位置出現(xiàn)短語“在一個(gè)實(shí)施例中”或“在實(shí)施例中”不一定都是指同一個(gè)實(shí)施例。此外,在一個(gè)或多個(gè)實(shí)施例中,能以任何合適的方式來組合特定的特征、結(jié)構(gòu)或特性。
在上述說明書中,已經(jīng)參考特定示例性實(shí)施例給出了詳細(xì)描述。然而,顯然可對這些實(shí)施例作出各種修改和改變,而不背離如所附權(quán)利要求所述的本公開的更寬泛精神和范圍。相應(yīng)地,應(yīng)當(dāng)認(rèn)為說明書和附圖是說明性的而不是限制性的。而且,實(shí)施例和其它示例性語言的上述使用不一定指的是同一實(shí)施例或同一示例,而可能指的是不同和獨(dú)特的實(shí)施例,也有可能是同一實(shí)施例。