国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      使用寄存器擴(kuò)展在中央處理單元中管理和實(shí)現(xiàn)元數(shù)據(jù)的制作方法

      文檔序號(hào):6333317閱讀:233來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):使用寄存器擴(kuò)展在中央處理單元中管理和實(shí)現(xiàn)元數(shù)據(jù)的制作方法
      技術(shù)領(lǐng)域
      本領(lǐng)域一般涉及計(jì)算科學(xué),更具體地涉及中央處理單元(CPU)中的元數(shù)據(jù)。
      背景技術(shù)
      諸如C和C++的現(xiàn)代編程語(yǔ)言不使用元數(shù)據(jù)。諸如指針邊界(例如邊界指的是開(kāi) 始和結(jié)束地址,即分別是指針?biāo)赶虻膶?duì)象的下邊界和上邊界)之類(lèi)的極其重要的元數(shù)據(jù) 和對(duì)象的數(shù)據(jù)類(lèi)型在諸如C/C++程序的這些編程語(yǔ)言的執(zhí)行期間不可用。正在運(yùn)行的軟件 程序缺少此類(lèi)元數(shù)據(jù)通常產(chǎn)生不正確的程序行為,并導(dǎo)致脆弱性。添加元數(shù)據(jù)的一種常規(guī) 手段是將其毗鄰數(shù)據(jù)本身存儲(chǔ)在存儲(chǔ)器中,以使軟件或硬件能定位到它;然而,這需要存儲(chǔ) 器布局/應(yīng)用程序二進(jìn)制接口(ABI)的改變。因此,元數(shù)據(jù)僅在非常專(zhuān)門(mén)的環(huán)境中使用,在 該環(huán)境中整個(gè)軟件需要被重新編譯以遵守修改后的新約定。替代地,軟件在不毗鄰的存儲(chǔ)器位置中存儲(chǔ)數(shù)據(jù)和元數(shù)據(jù),且進(jìn)一步實(shí)現(xiàn)映射功 能以將數(shù)據(jù)與相應(yīng)的元數(shù)據(jù)匹配。在該情況下,數(shù)據(jù)被載入寄存器,同時(shí)相應(yīng)的元數(shù)據(jù)被載 入其他現(xiàn)有寄存器。此外,該軟件需要留意該數(shù)據(jù)與現(xiàn)有寄存器中的元數(shù)據(jù)之間的關(guān)聯(lián),并 對(duì)元數(shù)據(jù)執(zhí)行必要的傳輸和無(wú)效以使其與其相應(yīng)的數(shù)據(jù)同步。在該情況下,當(dāng)數(shù)據(jù)以寄存 器參數(shù)被傳遞至函數(shù)時(shí),相應(yīng)的元數(shù)據(jù)也需要在寄存器中傳遞。這導(dǎo)致缺少透明性,且必須 對(duì)所使用的調(diào)用約定進(jìn)行擴(kuò)展。此外,該技術(shù)的實(shí)現(xiàn)因?yàn)槠鋵?duì)軟件和系統(tǒng)施加的高開(kāi)銷(xiāo)而 固有地很慢,該高開(kāi)銷(xiāo)諸如增加的寄存器壓力、元數(shù)據(jù)傳輸和無(wú)效所需的附加指令等,為此 該技術(shù)在實(shí)際中未被使用。圖1示出具有默認(rèn)寄存器102的處理器100的簡(jiǎn)化圖。諸如通用處理器或?qū)S锰?理器的處理器是具有設(shè)計(jì)成處理程序代碼指令的電子電路系統(tǒng)的半導(dǎo)體芯片。多數(shù)處理器 通常包括諸如默認(rèn)寄存器102的多個(gè)共同架構(gòu)特征。典型的寄存器在處理器上提供少量存 儲(chǔ)空間,以使與存取存儲(chǔ)器的較慢過(guò)程相比,可使用該寄存器來(lái)存取某些數(shù)據(jù);例如,寄存 器可用于存儲(chǔ)指令輸入操作數(shù)和指令輸出結(jié)果。其他公共架構(gòu)特征可包括用于本地存儲(chǔ)指令和/或數(shù)據(jù)的高速緩存、用于從高速 緩存和/或存儲(chǔ)器取出指令的取出電路系統(tǒng)、用于向高速緩存和/或存儲(chǔ)器存儲(chǔ)指令結(jié)果 的寫(xiě)回電路系統(tǒng)。此外,具有寄存器102的處理器100被示為與隨機(jī)存取存儲(chǔ)器(RAM) 104 和只讀存儲(chǔ)器(ROM) 106通信。


      本發(fā)明的實(shí)施方式在各附圖中是作為示例而非作為限制示出的,在附圖中相同的 附圖標(biāo)記表示相同的元素,并且其中圖1示出具有默認(rèn)寄存器的傳統(tǒng)處理器;圖2示出具有默認(rèn)寄存器和邊界寄存器的處理器的實(shí)施例;圖3示出處理器中的默認(rèn)寄存器與邊界寄存器耦合的實(shí)施例;圖4示出用于使用邊界寄存器作為具有與元數(shù)據(jù)關(guān)聯(lián)的數(shù)據(jù)的默認(rèn)寄存器的擴(kuò)展寄存器來(lái)管理元數(shù)據(jù)的過(guò)程的實(shí)施例;
      圖5示出用于邊界檢查的過(guò)程的實(shí)施例;
      圖6示出用于使用邊界寄存器作為具有與元數(shù)據(jù)關(guān)聯(lián)的數(shù)據(jù)的默認(rèn)寄存器的擴(kuò) 展寄存器來(lái)管理元數(shù)據(jù)的過(guò)程的實(shí)施例;以及
      圖7示出計(jì)算系統(tǒng)的一個(gè)實(shí)施例。
      詳細(xì)描述
      圖2示出具有默認(rèn)(即現(xiàn)有)寄存器202和邊界寄存器204的處理器200的實(shí)施 例。在一個(gè)實(shí)施例中,處理器200被示為具有默認(rèn)寄存器202和表示默認(rèn)寄存器的硬件寄 存器擴(kuò)展的邊界寄存器204。這些邊界寄存器204提供硬件寄存器擴(kuò)展,用于保存元數(shù)據(jù) (例如邊界寄存器204中的邊界),并在相應(yīng)數(shù)據(jù)被復(fù)制或修改時(shí)保持元數(shù)據(jù)與其相應(yīng)數(shù)據(jù) (例如默認(rèn)寄存器202中的指針)的關(guān)聯(lián),而不存在對(duì)默認(rèn)寄存器202的附加壓力。此外, 通過(guò)提供默認(rèn)寄存器202與邊界寄存器204之間的(隱式或顯式)關(guān)聯(lián),這些寄存器202的 調(diào)用約定保持相同。被保持在邊界寄存器204處的元數(shù)據(jù)可由處理器200用于不同目的。 例如,該元數(shù)據(jù)包括數(shù)據(jù)類(lèi)型,且處理器200在對(duì)它們進(jìn)行運(yùn)算之前可驗(yàn)證該數(shù)據(jù)類(lèi)型。
      寄存器可包括通用或整數(shù)寄存器(用于存儲(chǔ)數(shù)據(jù)和地址,且被認(rèn)為是組合的數(shù)據(jù) /地址寄存器)和其他寄存器,諸如用戶可存取寄存器、數(shù)據(jù)寄存器、地址寄存器、條件寄存 器、浮點(diǎn)寄存器、常數(shù)寄存器、矢量寄存器、專(zhuān)用寄存器(包括指令寄存器)、模型專(zhuān)用寄存 器、控制和狀態(tài)寄存器等。在一個(gè)實(shí)施例中,整數(shù)寄存器與邊界寄存器204關(guān)聯(lián),但實(shí)施例 不將邊界寄存器204限制于整數(shù)寄存器,且可采用任何類(lèi)型或組合類(lèi)型的寄存器。寄存器 擴(kuò)展204保存與寄存器202中的數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù)。在一個(gè)實(shí)施例中,當(dāng)(通用)寄存 器202包含存儲(chǔ)器地址(例如指針)時(shí),寄存器擴(kuò)展204可用于指定使用寄存器202可存 取(加載/存儲(chǔ))的存儲(chǔ)器地址范圍。寄存器202中的地址可能在其邊界寄存器204中指 定的邊界之外。這些邊界在存儲(chǔ)器存取時(shí)被檢查。每個(gè)存儲(chǔ)器地址范圍由下邊界和上邊界 (稍后在本文檔中進(jìn)一步描述和討論)組成。在該情況下,寄存器擴(kuò)展204稱(chēng)為邊界寄存 器或寄存器描述符。處理器200進(jìn)一步包括用于生成或確定存儲(chǔ)器地址的地址生成器單元 206??衫眉拇嫫?02和可任選的其他寄存器(例如英特爾處理器中的變址寄存器和恒 定偏移量)來(lái)產(chǎn)生地址。處理器200進(jìn)一步包括用于比較地址范圍的下邊界和上邊界的地 址比較器(也稱(chēng)為邊界檢查單元)208,以及用于提供對(duì)與處理器200耦合的存儲(chǔ)器以及寄 存器202、204內(nèi)的存儲(chǔ)介質(zhì)的存取的存儲(chǔ)器存取單元210。如圖所示,默認(rèn)寄存器202與地 址生成單元206耦合,而地址生成單元206和邊界寄存器204 二者與地址比較器(計(jì)算邏 輯)208耦合,地址比較器208進(jìn)一步與存儲(chǔ)器存取單元210耦合。處理器200可包含用于 執(zhí)行如本文檔通篇中描述的實(shí)施例的各種任務(wù)的其他邏輯、電路以及模塊。取決于所執(zhí)行 任務(wù)的本質(zhì),默認(rèn)寄存器202可包含任意數(shù)量和類(lèi)型的寄存器,諸如通用寄存器、浮點(diǎn)寄存 器等。例如,在涉及指令時(shí),采用了源寄存器和目的地寄存器,且這些寄存器可包括通用寄 存器或浮點(diǎn)寄存器等。因此,指令可通過(guò)源寄存器提供,而指令的結(jié)果可被放置于目的地寄 存器處;源和目的地寄存器是默認(rèn)寄存器202的一部分。
      在一個(gè)實(shí)施例中,定義新程序指令以創(chuàng)建邊界并將它們存儲(chǔ)于邊界寄存器204 中。該程序指令可以是之前未在程序中定義的全新操作碼,或可以化名為使用之前未使用 的無(wú)操作(NOP)指令。傳輸元數(shù)據(jù)以保持一致性由處理器200針對(duì)通常用于指針操縱的指令子集(諸如ADD、SUB、INC、DEC等)隱式地執(zhí)行,或使用指示傳輸行為的新指令來(lái)顯式地 執(zhí)行。傳輸行為描述了當(dāng)元數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)在某些狀況下被修改時(shí)處理器200如何保存元 數(shù)據(jù),以及當(dāng)元數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)在其他狀況下被修改時(shí)處理器200如何破壞元數(shù)據(jù)。因?yàn)?在一個(gè)實(shí)施例中,采用了現(xiàn)有指令的語(yǔ)義來(lái)傳輸、保存以及驗(yàn)證/無(wú)效元數(shù)據(jù),所以在軟件 程序中不需要附加指令,附加指令可潛在地負(fù)面影響程序代碼大小和其性能。
      在一個(gè)實(shí)施例中,邊界檢查可應(yīng)用于任意數(shù)量的存儲(chǔ)器指令,且可經(jīng)由諸如段覆 蓋前綴之類(lèi)的指令前綴來(lái)明確地指定。當(dāng)指令具有與其默認(rèn)段相同的段覆蓋前綴時(shí),該指 令可強(qiáng)制執(zhí)行邊界檢查,而在另一實(shí)施例中,可向該指令添加全新的前綴。在未實(shí)現(xiàn)該技術(shù) 的那些處理器中,默認(rèn)段前綴是NOP。使用NOP前綴允許軟件在不支持/實(shí)現(xiàn)元數(shù)據(jù)的那些 處理器上在不受益于元數(shù)據(jù)的情況下正確地工作。在一個(gè)實(shí)施例中,允許顯式邊界檢查指 令,其中此類(lèi)指令可具有兩個(gè)或多個(gè)操作數(shù)。例如,在兩操作數(shù)形式中,第一操作數(shù)用作存 儲(chǔ)器地址,而第二操作數(shù)用作存取大小(字節(jié)、字等)。
      圖3示出處理器中的默認(rèn)寄存器202與邊界寄存器204耦合的實(shí)施例。在一個(gè)實(shí) 施例中,基于默認(rèn)寄存器202的數(shù)量和類(lèi)型以及計(jì)算機(jī)系統(tǒng)的處理器架構(gòu)的工作方式,寄 存器擴(kuò)展(例如邊界寄存器)204可包括任意數(shù)量和類(lèi)型的寄存器。在該圖示中,寄存器擴(kuò) 展是1 位寬,且用于保存下邊界的下邊界擴(kuò)展302為64位寬,且用于保存上邊界的上邊 界擴(kuò)展304為64位寬。
      例如,例如CPMKDSCr,m的新指令將寄存器和有效地址作為操作數(shù)。寄存器值是下 邊界,且有效地址是上邊界。該指令將下邊界值寫(xiě)入對(duì)應(yīng)于指定寄存器的下邊界寄存器擴(kuò) 展302,且將上邊界值寫(xiě)入對(duì)應(yīng)于指定寄存器的上邊界寄存器擴(kuò)展304。因此,例如,CPMKDSC RAX, [RBX],其中RAX = 1000且RBX = 1004,在RAX的描述符中,下邊界擴(kuò)展306將被寫(xiě)入 1000作為下邊界值,而上邊界擴(kuò)展308將被寫(xiě)入1004作為上邊界值。這將為RAX中的指針 建立1000和1004作為下邊界和上邊界。在另一實(shí)施例中,該指令可具有用于計(jì)算下邊界 和上邊界的三個(gè)操作數(shù),而在另一實(shí)施例中,可存在用于單獨(dú)地生成下邊界和上邊界的兩 個(gè)單獨(dú)的指令。
      諸如INC、DEC、AND、OR、ADD以及SUB之類(lèi)的可用于對(duì)指針執(zhí)行算術(shù)運(yùn)算的指令保 存在該運(yùn)算中使用的寄存器的描述符內(nèi)容。這些運(yùn)算修改指針值,但不破壞該指針值,這是 描述符內(nèi)容仍有效的原因。繼續(xù)上述示例,如果INC RAX被執(zhí)行五次,則RAX的值將為1005, 從而我們說(shuō)RAX現(xiàn)在用于使用MOV RCX, [RAX]來(lái)存取存儲(chǔ)器。與RAX中的指針相關(guān)聯(lián)的元 數(shù)據(jù)是下邊界和上邊界,即1000306和1004308。該信息在與RAX為1005匹配時(shí)推斷出檢 測(cè)到超邊界的存儲(chǔ)器存取,即緩沖區(qū)溢出。在該實(shí)施例中,CPU/處理器可發(fā)出緩沖區(qū)溢出 異常的信號(hào),從而編程軟件可采取適當(dāng)?shù)男U胧?br> 諸如MOV或LEA的指令用于在寄存器之間復(fù)制指針,且除復(fù)制指針之外,還用于將 源描述符的內(nèi)容傳輸至目的地描述符。當(dāng)在默認(rèn)寄存器202中的寄存器之間復(fù)制指針時(shí), 這對(duì)應(yīng)于在邊界寄存器204中復(fù)制邊界。不需要或不預(yù)期元數(shù)據(jù)的任何其他指令可無(wú)效或 破壞指令中使用的任何目的地寄存器的描述符內(nèi)容;例如,MOV RAX,0破壞RAX的描述符內(nèi) 容,因?yàn)檫吔缈赡軐?duì)于指針有意義,但對(duì)于整數(shù)無(wú)意義。
      在一個(gè)實(shí)施例中,軟件或硬件或這二者的組合可用于確立對(duì)存儲(chǔ)器的細(xì)粒度存取 控制。一般而言,存取控制指的是在各個(gè)主體存取對(duì)象時(shí)進(jìn)行的檢查,用于確保嘗試存取對(duì)象的任何主體具有存取這些對(duì)象的許可。例如,指針可被認(rèn)為是試圖存取存儲(chǔ)器中的不 同對(duì)象的主體。許可被具體化為與指針相關(guān)聯(lián)的邊界。存取控制信息在本文中稱(chēng)為(下/ 上)邊界信息或值,而存取控制檢查稱(chēng)為邊界檢查。邊界寄存器204和此處指定的任何方 法可在使用指針存取存儲(chǔ)器時(shí)執(zhí)行某些任務(wù)或檢查,諸如下/上邊界檢查。這些方法也可 執(zhí)行附加檢 查,諸如對(duì)許可和/或數(shù)據(jù)類(lèi)型的檢查。在一個(gè)實(shí)施例中,邊界寄存器204用于 指定用于存取存儲(chǔ)器的地址的下/上邊界值、強(qiáng)制執(zhí)行指定的邊界值以及處理任何邊界越 限。在一個(gè)實(shí)施例中,作為存儲(chǔ)器存取的一部分,邊界寄存器204和方法用于指定指 針的邊界值(也稱(chēng)為存取控制信息)、在必要時(shí)操縱指針和/或邊界值、以及強(qiáng)制執(zhí)行邊界 值。采用了使用邊界寄存器204的新穎的細(xì)粒度存取控制或邊界檢查技術(shù)。此處所采用的 方法/裝置/系統(tǒng)將邊界值與指針或指針值直接關(guān)聯(lián)(與具有頁(yè)表或分段寄存器中的控制 不同),這些邊界值確立對(duì)存儲(chǔ)區(qū)的存取控制而非對(duì)通用(例如整數(shù))寄存器202中的數(shù)據(jù) 對(duì)象的存取控制,以便于對(duì)邊界寄存器204中存儲(chǔ)的邊界值進(jìn)行細(xì)粒度邊界檢查。如上所述,在一個(gè)實(shí)施例中,程序的一個(gè)或多個(gè)現(xiàn)有(但未使用)指令可用于產(chǎn)生 和指定邊界值(存取控制信息),并將邊界值與默認(rèn)寄存器202中的指針相關(guān)聯(lián),且進(jìn)一步 使用指令/前綴來(lái)指示處理器200對(duì)特定存儲(chǔ)器存取的強(qiáng)制要求。例如,默認(rèn)寄存器202 可包括要被擴(kuò)展的通用(整數(shù))寄存器,用于保存包括將使用默認(rèn)寄存器202中包含的指 針存取的地址的下邊界和上邊界的邊界值。每個(gè)默認(rèn)寄存器202被擴(kuò)充成圖示為邊界寄存 器204的兩個(gè)附加寄存器,用于保存默認(rèn)寄存器202中的指針的下邊界值和上邊界值。當(dāng)使用具有有效描述符的默認(rèn)(整數(shù))寄存器202來(lái)存取存儲(chǔ)器時(shí),處理器200針 對(duì)被存取的存儲(chǔ)器地址強(qiáng)制執(zhí)行描述符中的邊界。然后處理器200可將操作數(shù)“大小”添 加至默認(rèn)寄存器202中的指針,以檢查指定的上邊界。例如,如果該存取為四個(gè)字節(jié),則處 理器200可將指針加4,并將該數(shù)字與指定的上邊界作比較。因此,對(duì)于邊界檢查,操作數(shù) “大小”是用于檢查邊界的隱式操作數(shù)之一。例如,可在處理器架構(gòu)的尋址模式的基址寄存 器中指定邊界值;然而,也可在變址寄存器中指定該邊界。根據(jù)一個(gè)實(shí)施例,為確保與現(xiàn)有ABI的互可操作性和兼容性,傳統(tǒng)指令可使與目 的地寄存器相關(guān)聯(lián)的邊界無(wú)效。在可能不需要互可操作性的另一實(shí)施例中,選擇了邊界不 適用的那些指令,而且邊界(或元數(shù)據(jù))對(duì)于與目的地寄存器相關(guān)聯(lián)的邊界寄存器204被 無(wú)效。而且,需要從特定源寄存器向特定目的地寄存器傳輸邊界值的任何指令可向該指令 添加傳輸前綴。以這種方式,實(shí)施例提供對(duì)邊界值的細(xì)粒度控制,而且處理器200得以確保 任何傳統(tǒng)指令清除描述符以防止懸掛的描述符。然而,在此互可操作性或兼容性不必要的 其他實(shí)施例中,這些條件可放松或忽略。在一個(gè)實(shí)施例中,邊界檢查可應(yīng)用于任意數(shù)量的存儲(chǔ)器指令,且可經(jīng)由諸如段覆 蓋前綴之類(lèi)的指令前綴來(lái)明確地指定。當(dāng)指令具有與其默認(rèn)段相同的段覆蓋前綴時(shí),該指 令可強(qiáng)制執(zhí)行邊界檢查,而在另一實(shí)施例中,可向該指令添加全新的前綴。在一個(gè)實(shí)施例 中,可允許顯式邊界檢查指令,其中此類(lèi)指令可具有兩個(gè)或多個(gè)操作數(shù)。在兩操作數(shù)形式 中,第一操作數(shù)用作存儲(chǔ)器地址,而第二操作數(shù)用作存取大小(字節(jié)、字等)。使用來(lái)自存儲(chǔ) 器地址的基址或變址寄存器的邊界進(jìn)行該檢查。在三操作數(shù)形式中,還可明確地指定邊界 寄存器204的特定邊界寄存器以及前兩個(gè)操作數(shù)的內(nèi)容。利用本圖中描述的技術(shù),可執(zhí)行諸如防止緩沖區(qū)溢出、對(duì)代碼(例如C/C++代碼等)的運(yùn)行時(shí)間型檢查之類(lèi)的操作。圖4示出用于使用邊界寄存器作為默認(rèn)寄存器的擴(kuò)展寄存器來(lái)管理元數(shù)據(jù)的過(guò) 程400的實(shí)施例。在處理框402,軟件程序的指令被取出并在處理器處的默認(rèn)寄存器中被解 碼,且如果該指令是傳統(tǒng)指令, 則在處理框404處執(zhí)行該傳統(tǒng)指令。在處理框406,執(zhí)行指針 算術(shù)運(yùn)算(例如加法、減法、遞增等),且在處理框408,默認(rèn)寄存器中包含的指針的上邊界 和下邊界被保存在作為默認(rèn)寄存器的擴(kuò)展寄存器的邊界寄存器中。如果傳統(tǒng)指令不是指針 算術(shù)運(yùn)算指令,則在處理框410將邊界無(wú)效。如果該指令是CMPKDSC,在處理框412計(jì)算要使用默認(rèn)寄存器中包含的指針存取 的該地址的上下邊界,然后在處理框414將這些邊界復(fù)制到邊界寄存器中。如果該指令涉 及傳統(tǒng)加載,則在判定框416,確定在傳統(tǒng)加載上是否已存在邊界越限。如果是,則在處理 框420發(fā)出異常信號(hào),如果不是,則在處理框418執(zhí)行傳統(tǒng)加載操作。類(lèi)似地,如果該指令 涉及傳統(tǒng)存儲(chǔ),則在判定框422,確定在傳統(tǒng)存儲(chǔ)上是否已存在邊界越限。如果是,則在處理 框420發(fā)出異常信號(hào),如果不是,則在處理框424執(zhí)行傳統(tǒng)存儲(chǔ)操作。如果該指令涉及經(jīng)檢查的指針(例如可能具有與其關(guān)聯(lián)的邊界的指針)加載,則 在判定框426,確定在指針加載上是否已存在邊界越限。如果是,則在處理框420發(fā)出異常 信號(hào),而如果不是,則在處理框428計(jì)算存儲(chǔ)器中的該描述符的地址。在判定框430,確定存 儲(chǔ)器中是否存在該地址的有效邊界。如果是,則在處理框432,將來(lái)自存儲(chǔ)器的關(guān)于默認(rèn)寄 存器的有效邊界復(fù)制到作為默認(rèn)寄存器的擴(kuò)展的邊界寄存器。如果不是,則在處理框410, 這些邊界被認(rèn)為無(wú)效。同樣,如果在處理框402被取出和解碼的指令涉及經(jīng)檢查的指針存儲(chǔ),則在判定 框434,確定在指針存儲(chǔ)上是否已存在邊界越限。如果是,則在處理塊420發(fā)出異常信號(hào),而 如果不是,則在處理塊436計(jì)算存儲(chǔ)器中該描述符的地址。在判定框438,確定是否存在可 用于存儲(chǔ)該地址的邊界的任何可用的存儲(chǔ)器。如果不是,則在處理框420發(fā)出異常信號(hào),如 果是,則在處理框440將邊界從邊界寄存器存儲(chǔ)至存儲(chǔ)器描述符。該過(guò)程(從處理框410、 414、418、424、432、440)在過(guò)渡框 442 處結(jié)束。圖5示出用于邊界檢查的過(guò)程500的實(shí)施例。在處理框502,利用軟件程序的可用 指令計(jì)算要存取的最低地址。在處理框504,計(jì)算要存取的最高地址。在處理框506,執(zhí)行 計(jì)算。該計(jì)算確定要存取的最低地址是否大于或等于邊界寄存器中提供的下邊界,以及要 存取的最高地址是否小于或等于邊界寄存器中的上邊界;如果是這樣,則在處理框510未 檢測(cè)到越限。如果不是,則檢測(cè)到邊界越限,且該過(guò)程在處理框508結(jié)束。圖6示出用于使用邊界寄存器作為具有與元數(shù)據(jù)關(guān)聯(lián)的數(shù)據(jù)的默認(rèn)寄存器的擴(kuò) 展寄存器來(lái)管理元數(shù)據(jù)的過(guò)程600的實(shí)施例。在處理框602,向已經(jīng)具有一組默認(rèn)寄存器的 處理器添加一組邊界寄存器。默認(rèn)寄存器可包括通用(整數(shù))寄存器,且可用于保存數(shù)據(jù)、 指針等。該組邊界寄存器可包括能保存與默認(rèn)寄存器中存在的數(shù)據(jù)有關(guān)的元數(shù)據(jù)(諸如邊 界)的(基于硬件的)寄存器。在一個(gè)實(shí)施例中,對(duì)于每個(gè)默認(rèn)寄存器,向處理器添加兩個(gè) 邊界寄存器,以使它們中的一個(gè)保存與默認(rèn)寄存器中的指針存取存儲(chǔ)器所使用的地址相對(duì) 應(yīng)的下邊界,而另一個(gè)保存與該地址相對(duì)應(yīng)的上邊界。在處理框604,使用處理器處的計(jì)算 邏輯利用軟件程序的可用但尚未使用的一個(gè)或多個(gè)指令來(lái)執(zhí)行對(duì)與地址關(guān)聯(lián)的下邊界和 上邊界的計(jì)算。
      在判定框606,利用該計(jì)算邏輯,確定計(jì)算出的邊界是否有效。在一個(gè)實(shí)施例中,如 果計(jì)算出的下邊界小于邊界寄存器中已存在的下邊界,或如果計(jì)算出的上邊界大于邊界寄 存器中已存在的上邊界,則計(jì)算出的邊界越限。這稱(chēng)為邊界的展寬。如果這些邊界被確定 為展寬,則在處理框608發(fā)出異常信號(hào),且這些邊界不被存儲(chǔ)于邊界寄存器中。然而,如果 這些邊界未被展寬,則在處理框610將它們存儲(chǔ)于上下邊界寄存器中。
      本發(fā)明的實(shí)施例包括提供默認(rèn)(通用)寄存器的新/擴(kuò)展寄存器以使擴(kuò)展寄存器 保存元數(shù)據(jù)、使用指令在擴(kuò)展寄存器中創(chuàng)建元數(shù)據(jù)、從存儲(chǔ)器加載元數(shù)據(jù)到擴(kuò)展寄存器中 或向存儲(chǔ)器中存儲(chǔ)元數(shù)據(jù)、針對(duì)元數(shù)據(jù)檢查存儲(chǔ)器存取、通過(guò)不支持元數(shù)據(jù)以獲得結(jié)果的 那些指令執(zhí)行對(duì)元數(shù)據(jù)的無(wú)效、以及提供元數(shù)據(jù)與默認(rèn)寄存器的隱式關(guān)聯(lián)。此外,使用之前 實(shí)現(xiàn)的NOP對(duì)新指令執(zhí)行指令編碼,這允許軟件程序在未正確實(shí)現(xiàn)本發(fā)明的處理器上在不 受益于元數(shù)據(jù)的情況下正確地工作;同時(shí),在實(shí)現(xiàn)新技術(shù)和使用元數(shù)據(jù)的處理器上,同樣的 軟件帶來(lái)好處。
      此外,本發(fā)明的實(shí)施例定義為通用寄存器中的指針指定邊界的元數(shù)據(jù)。當(dāng)使用指 針來(lái)引用存儲(chǔ)器時(shí),處理器計(jì)算指令要存取的地址范圍,并將那些地址與擴(kuò)展(邊界)寄 存器中的邊界作比較,以確保任一指令所存取的存儲(chǔ)器位置完全落在那些邊界內(nèi)。存取邊 界以外的存儲(chǔ)器位置的任何嘗試被阻止,且在此類(lèi)情況下,處理器發(fā)出異常信號(hào)以允許軟 件程序處理該狀況。一個(gè)實(shí)施例包括地址轉(zhuǎn)換功能,用于將存儲(chǔ)指針的地址轉(zhuǎn)換成存儲(chǔ)器 中將存儲(chǔ)元數(shù)據(jù)的地址,以使與存儲(chǔ)器地址相關(guān)聯(lián)的元數(shù)據(jù)能被加載或存儲(chǔ)到擴(kuò)展寄存器 中。該地址轉(zhuǎn)換技術(shù)允許元數(shù)據(jù)被存儲(chǔ)在與存儲(chǔ)相對(duì)應(yīng)數(shù)據(jù)的位置(例如默認(rèn)/通用寄存 器)分離的位置處(例如新/擴(kuò)展/邊界寄存器)。為簡(jiǎn)潔、清楚以及一致起見(jiàn),此處使用 “邊界”作為元數(shù)據(jù)可能包括的內(nèi)容的示例(因此術(shù)語(yǔ)“邊界寄存器”也是示例),但構(gòu)想了 元數(shù)據(jù)可包括與數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)內(nèi)容的任何數(shù)字。例如,元數(shù)據(jù)可包括在與默認(rèn)寄存器 處的相應(yīng)數(shù)據(jù)有關(guān)且相關(guān)聯(lián)的擴(kuò)展寄存器處的數(shù)據(jù)類(lèi)型[〈datatype〉]的任何數(shù)字(例如, 整數(shù)、浮點(diǎn)數(shù)等)。在另一實(shí)施例中,它是諸如結(jié)構(gòu)的復(fù)雜數(shù)據(jù)類(lèi)型的類(lèi)型表的指針。在其 他實(shí)施例中,元數(shù)據(jù)可包括諸如只讀、讀/寫(xiě)等存儲(chǔ)器存取權(quán)限。
      圖7示出計(jì)算系統(tǒng)(例如計(jì)算機(jī))的一個(gè)實(shí)施例。圖7的示例性計(jì)算系統(tǒng)包括 1) 一個(gè)或多個(gè)處理器701,其中至少一個(gè)可包括上述部件;幻存儲(chǔ)器控制中樞(MCH) 702 ; 3)系統(tǒng)存儲(chǔ)器703(存在不同類(lèi)型,諸如雙倍數(shù)據(jù)率RAM (DDR RAM)、擴(kuò)展數(shù)據(jù)輸出RAM (EDO RAM)等);4)高速緩存704 ;5)輸入/輸出(I/O)控制中樞(ICH) 705 ;6)圖形處理器706 ; 7)顯示器/屏幕707(存在不同類(lèi)型,諸如陰極射線管(CRT)、薄膜晶體管(TFT)、液晶顯示 器(LCD)、DPL等;以及8) —個(gè)或多個(gè)I/O設(shè)備708。
      這一個(gè)或多個(gè)處理器701執(zhí)行指令以執(zhí)行該計(jì)算系統(tǒng)實(shí)現(xiàn)的任何軟件例程。這些 指令頻繁涉及對(duì)數(shù)據(jù)執(zhí)行的某種類(lèi)型的操作。數(shù)據(jù)和指令二者均存儲(chǔ)于系統(tǒng)存儲(chǔ)器703和 高速緩存704中。高速緩存704通常被設(shè)計(jì)成比系統(tǒng)存儲(chǔ)器703具有更短的等待時(shí)間。例 如,高速緩存704可能被集成到與處理器相同的硅芯片上,和/或用較快的靜態(tài)RAM(SRAM) 單元構(gòu)造,而系統(tǒng)存儲(chǔ)器703可能用較慢的動(dòng)態(tài)RAM(DRAM)單元構(gòu)造。通過(guò)傾向于將更頻 繁使用的指令和數(shù)據(jù)存儲(chǔ)于高速緩存704而非系統(tǒng)存儲(chǔ)器703中,該計(jì)算系統(tǒng)的總體性能 效率得以提高。
      特意使系統(tǒng)存儲(chǔ)器703對(duì)計(jì)算系統(tǒng)中的其他部件可用。例如,從計(jì)算系統(tǒng)的多個(gè)接口(例如鍵盤(pán)和鼠標(biāo)、打印機(jī)端口、局域網(wǎng)(LAN)端口、調(diào)制解調(diào)器端口等)接收或從計(jì) 算機(jī)系統(tǒng)的內(nèi)部存儲(chǔ)元件(例如硬盤(pán)驅(qū)動(dòng)器)取回的數(shù)據(jù)在軟件程序?qū)崿F(xiàn)中被一個(gè)或多個(gè) 處理器701操作之前通常被臨時(shí)排隊(duì)到系統(tǒng)存儲(chǔ)器703中。同樣,軟件程序確定應(yīng)從計(jì)算 系統(tǒng)通過(guò)計(jì)算系統(tǒng)接口之一發(fā)送至外部實(shí)體或應(yīng)存儲(chǔ)到內(nèi)部存儲(chǔ)元件的數(shù)據(jù)在被發(fā)送或 存儲(chǔ)之前通常臨時(shí)排隊(duì)于系統(tǒng)存儲(chǔ)器703中。
      ICH 705負(fù)責(zé)確保此類(lèi)數(shù)據(jù)在系統(tǒng)存儲(chǔ)器703與其相應(yīng)的適當(dāng)計(jì)算系統(tǒng)接口(以 及內(nèi)部存儲(chǔ)器件,如果該計(jì)算系統(tǒng)如此設(shè)計(jì))之間正確地傳遞。MCH 702負(fù)責(zé)管理處理器 701、接口以及內(nèi)部存儲(chǔ)元件之間可能在彼此相近的時(shí)間出現(xiàn)的對(duì)系統(tǒng)存儲(chǔ)器703存取的 多個(gè)競(jìng)爭(zhēng)請(qǐng)求。
      一個(gè)或多個(gè)I/O設(shè)備708也在典型的計(jì)算系統(tǒng)中實(shí)現(xiàn)。I/O設(shè)備一般負(fù)責(zé)向和/ 或從計(jì)算系統(tǒng)(例如聯(lián)網(wǎng)適配器)轉(zhuǎn)移數(shù)據(jù);或用于該計(jì)算系統(tǒng)中的大規(guī)模非易失性存儲(chǔ) (例如硬盤(pán)驅(qū)動(dòng)器)。ICH 705具有雙向點(diǎn)對(duì)點(diǎn)鏈路。
      本發(fā)明的多個(gè)實(shí)施例的部分可設(shè)置為計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品可包括 其上存儲(chǔ)了計(jì)算機(jī)程序指令的計(jì)算機(jī)可讀介質(zhì),這些計(jì)算機(jī)程序指令可用于對(duì)計(jì)算機(jī)(或 其它電子設(shè)備)編程以執(zhí)行根據(jù)本發(fā)明的實(shí)施例的過(guò)程。該機(jī)器可讀介質(zhì)可包括但不限于 軟盤(pán)、光盤(pán)、壓縮盤(pán)只讀存儲(chǔ)器(CD-ROM)、以及磁-光盤(pán)、ROM、RAM、可擦除可編程只讀存儲(chǔ) 器(EPROM)、電EPROM(EEPROM)、磁或光卡、閃存或適合于存儲(chǔ)電子指令的其它類(lèi)型的介質(zhì)/ 機(jī)器可讀介質(zhì)。
      在上述說(shuō)明書(shū)中,已經(jīng)參照本發(fā)明的特定示例性實(shí)施例描述了本發(fā)明。然而,顯然 可對(duì)這些實(shí)施例作出各種修改和改變,而不背離如所附權(quán)利要求所述的本發(fā)明的更寬泛精 神和范圍。因此,說(shuō)明書(shū)和附圖應(yīng)當(dāng)被視為說(shuō)明性而非限制性的意義。
      權(quán)利要求
      1.一種方法,包括將第一處理器的默認(rèn)寄存器擴(kuò)展成計(jì)算機(jī)系統(tǒng)的第一處理器上的元數(shù)據(jù)寄存器,所述 默認(rèn)寄存器上存儲(chǔ)有數(shù)據(jù);以及將元數(shù)據(jù)單獨(dú)存儲(chǔ)在所述元數(shù)據(jù)寄存器上,所述元數(shù)據(jù)與所述數(shù)據(jù)相關(guān)聯(lián)。
      2.如權(quán)利要求1所述的方法,其特征在于,所述元數(shù)據(jù)包括與由表示所述默認(rèn)寄存器 中的數(shù)據(jù)的指針存取存儲(chǔ)器所使用的地址相關(guān)聯(lián)的邊界,所述方法包括計(jì)算默認(rèn)寄存器中的指針存取所述存儲(chǔ)器所使用的地址的下邊界和上邊界;以及將所述下邊界和上邊界存儲(chǔ)于元數(shù)據(jù)寄存器中。
      3.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括對(duì)利用與包含一個(gè)或多個(gè)所述 邊界的一個(gè)或多個(gè)邊界寄存器相關(guān)聯(lián)的一個(gè)或多個(gè)默認(rèn)寄存器的存儲(chǔ)器存取執(zhí)行自動(dòng)邊 界檢查。
      4.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括采用現(xiàn)有的無(wú)操作(NOP)指令來(lái) 產(chǎn)生一組邊界,并對(duì)該組邊界執(zhí)行邊界檢查,以保持所述元數(shù)據(jù)寄存器如果位于不操作元 數(shù)據(jù)的第二處理器上時(shí)的互可操作性和兼容性,且使所啟用的軟件程序在所述第一和第二 處理器上運(yùn)行。
      5.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括將前綴與所使用的指令關(guān)聯(lián),以 創(chuàng)建和傳輸與目的地寄存器相關(guān)聯(lián)的一組邊界,且使用所述前綴以及現(xiàn)有的存儲(chǔ)器操作來(lái) 顯式地執(zhí)行對(duì)該組邊界的邊界檢查,所述前綴包括NOP前綴或新前綴,其中所述NOP前綴用 于便于所啟用的軟件程序在所述第一和第二處理器上運(yùn)行。
      6.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括執(zhí)行包括傳統(tǒng)指令的指令以執(zhí) 行指針?biāo)阈g(shù)運(yùn)算,以將與源指針相關(guān)聯(lián)的一組邊界傳輸?shù)侥康牡刂羔?,其中默認(rèn)寄存器包 括具有所述源指針和目的地指針的通用寄存器,其中如果所述指針?biāo)阈g(shù)運(yùn)算未執(zhí)行,則該 組邊界被無(wú)效。
      7.如權(quán)利要求6所述的方法,其特征在于,進(jìn)一步包括將所述新前綴添加到從所述源 指針傳輸?shù)剿瞿康牡刂羔樀脑摻M邊界,其中所述新前綴指示該組邊界從所述源指針到所 述目的地指針的傳輸。
      8.如權(quán)利要求6所述的方法,其特征在于,進(jìn)一步包括如果檢測(cè)到與該組邊界有關(guān)的 邊界越限,則執(zhí)行傳統(tǒng)加載操作或傳統(tǒng)存儲(chǔ)操作。
      9.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括計(jì)算與存儲(chǔ)器存取相關(guān)聯(lián)的地 址范圍,并將具有與指針有關(guān)的最低地址和最高地址的所述地址范圍與所述元數(shù)據(jù)寄存器 中已存在的下邊界和上邊界作比較,以防止在所述下邊界和上邊界的邊界范圍之外的任何 存儲(chǔ)器存取。
      10.如權(quán)利要求9所述的方法,其特征在于,所述防止包括避免邊界越限,如果所述最 低地址小于所述元數(shù)據(jù)寄存器中已存在的下邊界,或所述最高地址大于所述元數(shù)據(jù)寄存器 中已存在的上邊界,則發(fā)生所述邊界越限。
      11.如權(quán)利要求1所述的方法,其特征在于,所述擴(kuò)展包括產(chǎn)生與每個(gè)所述默認(rèn)寄存器 相對(duì)應(yīng)的至少兩個(gè)元數(shù)據(jù)寄存器,并將所述元數(shù)據(jù)寄存器放置在所述處理器上,其中所述 至少兩個(gè)元數(shù)據(jù)寄存器中的第一個(gè)用于存儲(chǔ)所述下邊界,而所述至少兩個(gè)元數(shù)據(jù)寄存器中 的第二個(gè)用于存儲(chǔ)所述上邊界。
      12.一種處理器,包括被擴(kuò)展成所述處理器上的元數(shù)據(jù)寄存器的默認(rèn)寄存器,所述默認(rèn)寄存器用于存儲(chǔ)數(shù) 據(jù);以及所述元數(shù)據(jù)寄存器用于存儲(chǔ)與所述數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù),所述元數(shù)據(jù)與存儲(chǔ)在所述默 認(rèn)寄存器處的數(shù)據(jù)分離地存儲(chǔ)在所述元數(shù)據(jù)寄存器處。
      13.如權(quán)利要求12所述的處理器,其特征在于,所述元數(shù)據(jù)包括與由表示所述默認(rèn)寄 存器中的數(shù)據(jù)的指針存取存儲(chǔ)器所使用的地址相關(guān)聯(lián)的邊界,所述處理器包括用于計(jì)算默認(rèn)寄存器中的指針存取所述存儲(chǔ)器所使用的地址的下邊界和上邊界的邏 輯;以及用于存儲(chǔ)所述下邊界和上邊界的元數(shù)據(jù)寄存器。
      14.如權(quán)利要求12所述的處理器,其特征在于,對(duì)應(yīng)于每個(gè)所述默認(rèn)寄存器產(chǎn)生至少 兩個(gè)元數(shù)據(jù)寄存器,其中所述至少兩個(gè)元數(shù)據(jù)寄存器中的第一個(gè)用于存儲(chǔ)所述下邊界,而 所述至少兩個(gè)元數(shù)據(jù)寄存器中的第二個(gè)用于存儲(chǔ)所述上邊界。
      15.一種計(jì)算機(jī)系統(tǒng),包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器芯片;以及處理器,所述處理器具有被擴(kuò)展成所述處理器上的元數(shù)據(jù)寄存器的默認(rèn)寄存器,所述默認(rèn)寄存器用于存儲(chǔ)數(shù) 據(jù),以及所述元數(shù)據(jù)寄存器用于存儲(chǔ)與所述數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù),所述元數(shù)據(jù)與存儲(chǔ)在所述默 認(rèn)寄存器處的數(shù)據(jù)分離地存儲(chǔ)在所述元數(shù)據(jù)寄存器處。
      16.如權(quán)利要求15所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述元數(shù)據(jù)包括與由表示所述默 認(rèn)寄存器中的數(shù)據(jù)的指針存取存儲(chǔ)器所使用的地址相關(guān)聯(lián)的邊界,所述處理器包括用于計(jì)算默認(rèn)寄存器中的指針存取所述存儲(chǔ)器所使用的地址的下邊界和上邊界的邏 輯;以及用于存儲(chǔ)所述下邊界和上邊界的元數(shù)據(jù)寄存器。
      17.如權(quán)利要求15所述的計(jì)算機(jī)系統(tǒng),其特征在于,對(duì)應(yīng)于每個(gè)所述默認(rèn)寄存器產(chǎn)生 至少兩個(gè)元數(shù)據(jù)寄存器,其中所述至少兩個(gè)元數(shù)據(jù)寄存器中的第一個(gè)用于存儲(chǔ)所述下邊 界,而所述至少兩個(gè)元數(shù)據(jù)寄存器中的第二個(gè)用于存儲(chǔ)所述上邊界。
      18.—種包括指令的機(jī)器可讀介質(zhì),所述指令在執(zhí)行時(shí)使機(jī)器將處理器的默認(rèn)寄存器擴(kuò)展成計(jì)算機(jī)系統(tǒng)的所述處理器上的元數(shù)據(jù)寄存器,所述默認(rèn) 寄存器上存儲(chǔ)有數(shù)據(jù);以及將元數(shù)據(jù)單獨(dú)存儲(chǔ)在所述元數(shù)據(jù)寄存器上,所述元數(shù)據(jù)與所述數(shù)據(jù)相關(guān)聯(lián)。
      19.如權(quán)利要求18所述的機(jī)器可讀介質(zhì),其特征在于,所述元數(shù)據(jù)包括與由表示所述 默認(rèn)寄存器中的數(shù)據(jù)的指針存取存儲(chǔ)器所使用的地址相關(guān)聯(lián)的邊界,所述指令在被執(zhí)行時(shí) 進(jìn)一步使所述機(jī)器計(jì)算默認(rèn)寄存器中的指針存取所述存儲(chǔ)器所使用的地址的下邊界和上邊界;以及將所述下邊界和上邊界存儲(chǔ)于元數(shù)據(jù)寄存器中。
      20.如權(quán)利要求18所述的機(jī)器可讀介質(zhì),其特征在于,所述指令在被執(zhí)行時(shí)進(jìn)一步使 所述機(jī)器對(duì)利用與包含一個(gè)或多個(gè)所述邊界的一個(gè)或多個(gè)邊界寄存器相關(guān)聯(lián)的一個(gè)或多個(gè)默認(rèn)寄存器的存儲(chǔ)器存取執(zhí)行自動(dòng)邊界檢查。
      全文摘要
      處理器的一組默認(rèn)寄存器被擴(kuò)展成計(jì)算機(jī)系統(tǒng)的處理器上的元數(shù)據(jù)寄存器。默認(rèn)寄存器上存儲(chǔ)有數(shù)據(jù),而與該數(shù)據(jù)關(guān)聯(lián)的元數(shù)據(jù)單獨(dú)存儲(chǔ)在元數(shù)據(jù)寄存器上。
      文檔編號(hào)G06F9/30GK102033735SQ20101050064
      公開(kāi)日2011年4月27日 申請(qǐng)日期2010年9月25日 優(yōu)先權(quán)日2009年9月30日
      發(fā)明者A·F·格魯, A·K·瑪里克, B·V·帕特爾, D·A·范德克, G·尼格, J·B·克羅斯蘭, J·F·西胡拉, J·格特里伯, M·G·迪克森, M·J·查尼, R·J·科什里斯, R·古帕拉克里西南, S·D·羅杰斯 申請(qǐng)人:英特爾公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1