国产精品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>

      用于存儲器損壞檢測架構(gòu)的字節(jié)水平粒度的緩沖器上溢檢測的制作方法

      文檔序號:11779701閱讀:276來源:國知局
      用于存儲器損壞檢測架構(gòu)的字節(jié)水平粒度的緩沖器上溢檢測的制作方法與工藝

      背景

      存儲器損壞可以是導(dǎo)致系統(tǒng)故障的主要資源問題,并且可能負(fù)面地影響系統(tǒng)的性能。存儲器損壞可能由多種原因引起,包括:存儲器上的編程錯誤、越界訪問、懸擺指針以及惡意攻擊。在計算機(jī)程序中使用被損壞的存儲器內(nèi)容可能使得計算機(jī)程序崩潰或異常地動作。軟件解決方案可以用于存儲器損壞檢測,諸如調(diào)試工具。然而,軟件解決方案可能使得計算機(jī)程序顯著更慢地運(yùn)行并且可以難以在調(diào)試計算機(jī)程序時使用。

      附圖說明

      圖1示出了根據(jù)一個實施例的存儲器損壞檢測(mcd)系統(tǒng)。

      圖2示出了根據(jù)一個實施例的具有系統(tǒng)存儲器和mcd表的mcd系統(tǒng)的架構(gòu)。

      圖3描繪了根據(jù)一個實施例的用于將存儲器對象的一個或多個存儲器塊與mcd元數(shù)據(jù)字的存儲器分配信息相關(guān)聯(lián)的方法的流程圖。

      圖4a示出了根據(jù)一個實施例的與存儲器塊相關(guān)聯(lián)的mcd元數(shù)據(jù)字。

      圖4b示出了根據(jù)一個實施例的與存儲器塊相關(guān)聯(lián)的另一mcd元數(shù)據(jù)字。

      圖5a示出了根據(jù)一個實施例的被分配給存儲器對象的第一存儲器塊和第二存儲器塊。

      圖5b描繪了根據(jù)一個實施例的用于檢查存儲器中的越界存儲器訪問的方法的流程圖。

      圖6a是示出根據(jù)一個實施例的有序流水線以及寄存器重命名級、亂序發(fā)布/執(zhí)行流水線的框圖。

      圖6b是示出根據(jù)一個實施例的實現(xiàn)安全存儲器重新分區(qū)的處理器的微架構(gòu)的框圖。

      圖7示出了根據(jù)一個實施例的包括用于執(zhí)行安全存儲器重新分區(qū)的邏輯電路的處理器的微架構(gòu)的框圖。

      圖8是根據(jù)一個實現(xiàn)的計算機(jī)系統(tǒng)的框圖。

      圖9是根據(jù)另一實現(xiàn)的計算機(jī)系統(tǒng)的框圖。

      圖10是根據(jù)一個實現(xiàn)的片上系統(tǒng)的框圖。

      圖11示出了計算系統(tǒng)的框圖的另一實現(xiàn)。

      圖12示出了計算系統(tǒng)的框圖的另一實現(xiàn)。

      具體實施方式

      當(dāng)訪問存儲器位置的內(nèi)容時,存儲器損壞可以發(fā)生。由于編程錯誤,存儲器位置中的內(nèi)容可以被無意地訪問,或者由于惡意攻擊,存儲器位置中的內(nèi)容可以被有意地修改。可以存在各種不同的存儲器損壞的原因。存儲器損壞的一個原因可以是編碼錯誤,其中應(yīng)用錯誤地寫入或讀取系統(tǒng)存儲器的非預(yù)期的存儲器塊。存儲器損壞的另一個原因可以是當(dāng)應(yīng)用使用無效指針來將數(shù)據(jù)寫入已經(jīng)被釋放的存儲器塊。存儲器損壞的另一個原因可以是當(dāng)應(yīng)用試圖將數(shù)據(jù)寫入可能由操作系統(tǒng)(os)管理的存儲器塊頭部(或其他受限制的或保留的存儲器區(qū)域)??赡艽嬖诖鎯ζ鲹p壞的各種其他原因。使用損壞的存儲器可以導(dǎo)致數(shù)據(jù)損壞(例如數(shù)據(jù)庫系統(tǒng)損壞的內(nèi)容)、存儲器管理問題,并且導(dǎo)致性能降級、不可預(yù)測的程序執(zhí)行或程序崩潰。存儲器損壞檢測(mcd)可以用于檢測存儲器損壞。然而,mcd會將元數(shù)據(jù)附連到固定尺寸的n字節(jié)的存儲器塊(諸如64字節(jié)塊)。當(dāng)mcd使用固定尺寸的存儲器塊時,n字節(jié)(b)粒度分配可以用于阻止多個分配共享相同的元數(shù)據(jù)。然而,傳統(tǒng)地,可能不能檢測到固定尺寸的元數(shù)據(jù)的存儲器塊(例如,元數(shù)據(jù)塊)內(nèi)的緩沖器溢出。此外,傳統(tǒng)mcd架構(gòu)可能使用將傳統(tǒng)mcd的使用限于調(diào)試或預(yù)生產(chǎn)用途的性能或存儲器開銷。

      本文中所描述的實施例可以通過使用具有字節(jié)水平的越界檢測的mcd架構(gòu)來解決上述缺陷。mcd架構(gòu)可以包括具有用于指示存儲器塊或存儲器對象的被使用的(合法的)和未被使用的(非法的)訪問區(qū)的mcd唯一標(biāo)識符(諸如mcd顏色)和mcd邊界值的元數(shù)據(jù)表。mcd架構(gòu)還可以包括處理器或由處理器執(zhí)行的軟件庫(諸如分配庫)以用于設(shè)置或分配mcd元數(shù)據(jù)字。此外,mcd架構(gòu)可以使用mcd元數(shù)據(jù)字來檢查加載或存儲數(shù)據(jù)何時是合法的或經(jīng)授權(quán)的(諸如在字節(jié)水平粒度)。

      堆存儲器(heapmemory)是程序或應(yīng)用可以使用以存儲當(dāng)程序正在運(yùn)行時可以被使用的可變的量的數(shù)據(jù)的被保留存儲器的區(qū)域。例如,應(yīng)用可以接收不同量或類型的輸入數(shù)據(jù)以用于處理(諸如來自不同用戶)并且在堆存儲器中存儲輸入數(shù)據(jù)。當(dāng)應(yīng)用可能正在運(yùn)行時,應(yīng)用可以處理不同量或類型的輸入數(shù)據(jù)。由處理器執(zhí)行的分配庫可以用于存儲器分配、存儲器釋放以及存儲器損壞檢測(mcd)數(shù)據(jù)管理。為了防止存儲器損壞的事故,處理系統(tǒng)或處理器可用于驗證被處理系統(tǒng)或處理器執(zhí)行的應(yīng)用的存儲器訪問指令產(chǎn)生的指針。在一個示例中,處理系統(tǒng)可以維持存儲用于不同的被分配的緩沖器(例如,存儲器分配)的標(biāo)識符的元數(shù)據(jù)表,包括系統(tǒng)存儲器的一個或多個連續(xù)存儲器塊。在另一示例中,系統(tǒng)存儲器的連續(xù)存儲器塊可以是相同的預(yù)定義尺寸,諸如64字節(jié)(b)或32b。在另一示例中,系統(tǒng)存儲器的連續(xù)存儲器塊可以是不同的尺寸。

      當(dāng)處理器的存儲器的一部分可以被分配給新創(chuàng)建的存儲器對象時,唯一標(biāo)識符(id)可以被生成并且與可以存儲被寫入到存儲器對象的數(shù)據(jù)的一個或多個連續(xù)存儲器塊相關(guān)聯(lián)。連續(xù)存儲器塊的唯一標(biāo)識符可以是mcd唯一標(biāo)識符或mcd顏色指定。例如,被分配給存儲器對象的連續(xù)存儲器塊可以被分派mcd顏色值,諸如6位元數(shù)據(jù)值。

      可以將不同的存儲器對象的mcd唯一標(biāo)識符存儲在mcd表的一個或多個mcd表條目中,一個或多個mcd表條目對應(yīng)于被分配給存儲器對象的連續(xù)存儲器塊。還可以將mcd唯一標(biāo)識符存儲在指針的一個或多個位(例如,較高位)中,指針可以被存儲器分配例程返回到請求了存儲器分配的應(yīng)用。當(dāng)處理器收到存儲器訪問指令時,處理器可以將從mcd表檢索的mcd唯一標(biāo)識符與從存儲器訪問指令指定的指針提取的mcd唯一標(biāo)識符進(jìn)行比較。當(dāng)mcd唯一標(biāo)識符不匹配時,可能生成錯誤。

      圖1示出了根據(jù)一個實施例的mcd系統(tǒng)100。mcd系統(tǒng)100可以包括指針102和系統(tǒng)存儲器104。指針102可以包括mcd唯一id字段或mcd顏色值字段110以及存儲器地址字段。例如,指針106可以包括mcd唯一id110和存儲器地址112,并且指針108可以包括mcd唯一id114和存儲器地址118??梢詫cd唯一id110和114分別存儲在指針106和108的一個或多個位(諸如較高位,其可能不是線性地址的一部分)中。存儲器地址112和118可以引用系統(tǒng)存儲器104中的存儲器對象138和140的開始地址位置。例如,存儲器地址112可以引用到連續(xù)存儲器塊128的地址位置,并且存儲器地址118可以引用到連續(xù)存儲器塊132的地址位置。存儲器對象138和140可以包括一個或多個連續(xù)存儲器塊。例如,存儲器對象138可以包括連續(xù)存儲器塊128和130,并且存儲器對象140可以包括連續(xù)存儲器塊132、134和136。當(dāng)可以將系統(tǒng)存儲器104的一部分分配到新創(chuàng)建的存儲器對象138和140以用于存儲器對象數(shù)據(jù)122和126時,存儲器分配例程(例如,由calloc例程、malloc例程或realloc例程)可以生成mcd唯一id120和124以分別與連續(xù)存儲器塊128-130和130-136相關(guān)聯(lián)。

      mcd系統(tǒng)100可以接收來自請求連續(xù)存儲器塊的對象數(shù)據(jù)的應(yīng)用的存儲器訪問指令。例如,mcd系統(tǒng)100可以接收存儲器訪問指令,其中存儲器訪問指令包括具有指示在連續(xù)存儲器塊128處的對象數(shù)據(jù)122的開始位置的存儲器地址112的指針106。當(dāng)執(zhí)行存儲器訪問指令時,mcd系統(tǒng)100可以將指針106的mcd唯一id110和與連續(xù)存儲器塊128相關(guān)聯(lián)的mcd唯一id120進(jìn)行比較。當(dāng)mcd唯一id110與mcd唯一id120匹配時,mcd系統(tǒng)100可以將對象數(shù)據(jù)122傳遞到請求應(yīng)用。mcd系統(tǒng)100可以迭代經(jīng)過存儲器對象138的連續(xù)存儲器塊128和130,直到mcd系統(tǒng)100到達(dá)連續(xù)存儲器塊132。當(dāng)mcd唯一id124與mcd唯一id110不匹配時,mcd系統(tǒng)100可以確定其已經(jīng)到達(dá)連續(xù)存儲器塊128和130的末尾。當(dāng)mcd唯一id124與mcd唯一id110不匹配時,mcd系統(tǒng)100可以生成指示已經(jīng)到達(dá)存儲器對象138的末尾的錯誤消息(諸如異常)。

      圖2示出了根據(jù)一個實施例的具有系統(tǒng)存儲器104和mcd表202的mcd系統(tǒng)200的架構(gòu)。mcd系統(tǒng)200包括指針106,指針106包括mcd唯一id110和引用存儲器對象138的存儲器地址112。存儲器對象138可以包括連續(xù)存儲器塊122a-122n。mcd表202可以包括分別與連續(xù)存儲器塊122a-122n相關(guān)聯(lián)的mcd唯一id120a-120n和mcd邊界值121a-121n??梢詫cd唯一id120a-120n和mcd邊界值121a-121n存儲在從對應(yīng)的連續(xù)存儲器塊122a-122n的基址導(dǎo)出的偏移處。

      圖3描繪了用于將存儲器對象的一個或多個存儲器塊與mcd元數(shù)據(jù)字的存儲器分配信息相關(guān)聯(lián)的方法300的流程圖。方法300可以由計算機(jī)系統(tǒng)執(zhí)行,該計算機(jī)系統(tǒng)可以包括硬件(例如,電路、專用邏輯和/或可編程邏輯)、軟件(例如,在計算機(jī)系統(tǒng)上可執(zhí)行以執(zhí)行硬件模擬的指令)或其組合。可由執(zhí)行方法的計算機(jī)系統(tǒng)的一個或多個物理處理器來執(zhí)行方法300和/或其函數(shù)、例程、子例程或操作中的每一個??刹⑿械鼗虬床煌谏鲜鲰樞虻捻樞騺韴?zhí)行方法300的兩個或更多個函數(shù)、例程、子例程或操作。在某些實現(xiàn)中,可以由單個處理線程來執(zhí)行方法300。替代地,可以由兩個或多個處理線程來執(zhí)行方法300,每個線程執(zhí)行方法的一個或多個單個函數(shù)、例程、子例程或操作。在說明性示例中,可以使實現(xiàn)方法300的處理線程同步(例如,使用信號量、關(guān)鍵段和/或其他線程同步機(jī)制)。替代地,可以彼此異步地執(zhí)行實現(xiàn)方法300的處理線程。

      參考圖3,方法300可以開始于處理器或由處理器執(zhí)行的軟件庫(諸如運(yùn)行時庫)從應(yīng)用接收訪問存儲器的存儲器對象中的一個或多個連續(xù)存儲器塊的數(shù)據(jù)的存儲器訪問請求(框310)。存儲器對象可以是包括一個或多個存儲器塊的存儲器的連續(xù)部分(諸如連續(xù)存儲器塊)。在一個示例中,當(dāng)應(yīng)用開始或可能被啟動時,處理器或庫可以接收分配請求(例如,來自應(yīng)用的對存儲器的初始分配請求)。在另一示例中,當(dāng)應(yīng)用可能正在運(yùn)行時,處理器或軟件庫可以接收分配請求(例如,來自應(yīng)用的對存儲器的后續(xù)分配請求)。

      該方法可以進(jìn)一步包括,由處理器或軟件庫確定分配請求所請求的存儲器對象的尺寸,諸如存儲器的字節(jié)的數(shù)量(n字節(jié))(框320)。在一個示例中,可以將存儲器分成固定塊尺寸的存儲器(例如,連續(xù)存儲器塊)。在接下來的段落中,出于示例性目的,可以假設(shè)存儲器塊可以是64字節(jié)(b)的連續(xù)存儲器。然而,64b的存儲器塊尺寸不旨在是限制性的,并且存儲器塊尺寸可以是處理器或mcd系統(tǒng)的分配庫所設(shè)置的任何尺寸。

      在一個示例中,軟件庫可以基于分配請求中包括的分配尺寸信息來確定被請求的存儲器的尺寸。該方法可以包括考慮到所請求的存儲器對象的尺寸,由處理器或軟件庫為存儲器對象分配一個或多個連續(xù)存儲器塊(框330)。方法還可以包括將mcd元數(shù)據(jù)字寫入到mcd表中(步驟340)。在一個示例中,對于大于mcd塊的分配尺寸(例如64b),可以將mcd元數(shù)據(jù)字寫入到mcd表中以用于每個塊。mcd元數(shù)據(jù)字可以包括:與一個或多個連續(xù)存儲器塊相關(guān)聯(lián)的mcd唯一id和mcd邊界值。mcd邊界值可以指示存儲器塊的被使用的(合法的)存儲器區(qū)域或未被使用的(非法的)存儲器區(qū)域的尺寸。該方法可以包括基于mcd邊界值來確定mcd邊界的位置,如接下來的段落中所討論的。在一個示例中,存儲器塊的每個存儲器塊可以是64b,例如,從1到64字節(jié)的連續(xù)字節(jié)。對于64b存儲器塊,mcd元數(shù)據(jù)字可以包括用于mcd邊界值的6位(b)。在另一示例中,mcd邊界值可以是log2(總存儲器塊尺寸)個位以描述合法的或非法的存儲器區(qū)域的尺寸。在該示例中,mcd元數(shù)據(jù)字可以是多個mcd唯一id位加上多個mcd邊界值位,例如,mcd唯一id位+mcd邊界值位。該方法還可以包括創(chuàng)建指針(框350)。在一個示例中,指針可以包括指示存儲器對象在存儲器中的位置的存儲器地址。在另一示例中,指針可以包括與存儲器對象相關(guān)聯(lián)的第二mcd唯一id。該方法還可以包括將指針發(fā)送到應(yīng)用(框360)。

      圖4a示出了根據(jù)一個實施例的與存儲器塊416相關(guān)聯(lián)的mcd元數(shù)據(jù)字406。在一個示例性實施例中,存儲器塊416可以是64b(例如,0b-63b),并且mcd元數(shù)據(jù)字的尺寸可以是1b。存儲器塊416可以包括可以是第一長度418的存儲器的合法訪問部分412以及可以是第二長度420的存儲器的非法訪問部分414,其中第一長度418加上第二長度420可以是64字節(jié)的長度。mcd元數(shù)據(jù)字406可以包括可以是第三長度408的mcd唯一id402和可以是第四長度410的mcd邊界值404。在該示例中,第三長度408的長度可以是2b(存儲在mcd元數(shù)據(jù)字406的位0-1中),而第四長度410的長度可以是6b(存儲在mcd元數(shù)據(jù)字406的位2-7中)。

      在一個實施例中,mcd邊界值404可以指示存儲器的非法訪問部分414的尺寸。在一個示例中,處理器或軟件庫可以通過從存儲器塊的最后字節(jié)減去存儲器的非法訪問部分414的尺寸來確定存儲器的合法訪問部分412與存儲器的非法訪問部分414之間的mcd邊界的位置。例如,為了確定64字節(jié)存儲器塊的mcd邊界,處理器或軟件庫可以從64字節(jié)存儲器塊中的最后字節(jié)(例如,字節(jié)63)減去mcd邊界值404。例如,當(dāng)可以是64字節(jié)的存儲器塊416的mcd邊界值404是24字節(jié)時,存儲器的合法訪問部分412是40字節(jié),而存儲器的非法訪問部分414是24字節(jié)(例如,對于總的64字節(jié)存儲器塊)。在另一示例中,當(dāng)mcd邊界值404是0字節(jié)時,存儲器的合法訪問部分412是64字節(jié),而存儲器的非法訪問部分414是0字節(jié)(例如,對于總的64字節(jié))。

      在另一實施例中,mcd邊界值404可以指示存儲器的合法訪問部分412的尺寸。在一個示例中,處理器或軟件庫可以通過從存儲器塊的第一字節(jié)加上存儲器的合法訪問部分414的尺寸來確定存儲器的合法訪問部分412與存儲器的非法訪問部分414之間的mcd邊界的位置。例如,處理器或軟件庫可以確定可以將mcd邊界值404添加到字節(jié)0,64字節(jié)存儲器塊中的第一字節(jié)。例如,當(dāng)可以是64字節(jié)的存儲器塊416的mcd邊界值404是20字節(jié)時,存儲器的合法訪問部分412是20字節(jié),而存儲器的非法訪問部分414是44字節(jié)(例如,對于總的64字節(jié))。在另一示例中,當(dāng)mcd邊界值404是1b時,存儲器的合法訪問部分412是1字節(jié),而存儲器的非法訪問部分414是63字節(jié)(例如,對于總的64字節(jié))。存儲器塊尺寸和/或mcd元數(shù)據(jù)字尺寸不旨在是限制性的,并且存儲器塊尺寸和/或mcd元數(shù)據(jù)字尺寸可以是由處理器或mcd系統(tǒng)的軟件庫設(shè)置的任何尺寸。

      圖4b示出了根據(jù)一個實施例的與存儲器塊416相關(guān)聯(lián)的另一mcd元數(shù)據(jù)字430。在一個示例性實施例中,存儲器塊416可以是64字節(jié)(例如,從字節(jié)0到字節(jié)63),并且mcd元數(shù)據(jù)字430的尺寸可以是2字節(jié)。存儲器塊416可以包括可以是第一長度418的存儲器的合法訪問部分412以及可以是第二長度420的存儲器的非法訪問部分414,其中第一長度418加上第二長度420可以是64字節(jié)的長度。mcd元數(shù)據(jù)字406可以包括:可以是第三長度408的mcd唯一id402;可以是第四長度410的mcd邊界值404;可以是第五長度424的第一保留位422,其中第一保留位422可以位于mcd唯一id402與mcd邊界值404之間;以及可以是第六長度426的第二保留位426,其中第二保留位426可以位于mcd邊界值404之后。在該示例中,mcd字430的長度可以是16位,其中第三長度408的長度可以是6位(位于位0-5中),第五長度424的長度可以是2位(位于位6-7中),第四長度410的長度可以是6位(位于位8-13中),并且第六長度428的長度可以是2位(位于位14-15中)。mcd元數(shù)據(jù)字430中的被使用的位的總數(shù)是mcd唯一id402的尺寸(長度408)加上mcd邊界值404的尺寸(長度410)。在該示圖中,長度的和總共為12位。當(dāng)標(biāo)準(zhǔn)計算機(jī)存儲器訪問尺寸是單個字節(jié)(8位)時,可以用保留位(例如,4個保留位)填充12個被使用的位。例如,保留位可以是具有長度424的保留位422和具有長度428的保留位426。mcd元數(shù)據(jù)字430的位的布置和尺寸不旨在是限制性的,并且保留位可以是處理器或mcd系統(tǒng)的分配庫設(shè)置的任何尺寸。

      在一個實施例中,mcd邊界值404可以指示存儲器的非法訪問部分414的尺寸。在一個示例中,處理器或分配庫可以通過從存儲器塊416的最后字節(jié)減去存儲器的非法訪問部分414的尺寸來確定存儲器的合法訪問部分412與存儲器的非法訪問部分414之間的mcd邊界的位置。例如,處理器或分配庫可以通過從64字節(jié)存儲器塊416中的最后字節(jié)(字節(jié)63)減去mcd邊界值來確定mcd邊界的位置。在另一實施例中,mcd邊界值404可以指示存儲器的合法訪問部分412的尺寸。在一個示例中,處理器或分配庫可以通過將存儲器的合法訪問部分414的尺寸增加到存儲器塊的第一字節(jié)來確定存儲器的合法訪問部分412與存儲器的非法訪問部分414之間的mcd邊界的位置。例如,處理器或分配庫可以通過從64字節(jié)存儲器塊416中的第一字節(jié)(字節(jié)0)加上邊界來確定mcd邊界的位置。存儲器塊尺寸和/或mcd元數(shù)據(jù)字尺寸不旨在是限制性的,并且存儲器塊尺寸和/或mcd元數(shù)據(jù)字尺寸可以是由處理器或mcd系統(tǒng)的軟件庫設(shè)置的任何尺寸。

      圖5a示出了根據(jù)一個實施例的被分配給存儲器對象560的第一存儲器塊540和第二存儲器塊562。在示例性實施例中,應(yīng)用可以請求100b的存儲器對象560,其中存儲器對象560可以包括第一存儲器塊540和第二存儲器塊562。在該實施例中,第一存儲器塊540和第二存儲器塊562中的每一個可以是64字節(jié)。第一mcd元數(shù)據(jù)字530可以與第一存儲器塊540相關(guān)聯(lián),并且第二mcd元數(shù)據(jù)字562可以與第二存儲器塊562相關(guān)聯(lián)。

      當(dāng)處理器或分配庫為存儲器對象560分配100字節(jié)時,處理器或分配庫可以分配第一存儲器塊540的全部存儲器(64字節(jié))以用于存儲數(shù)據(jù)。與第一存儲器塊540相關(guān)聯(lián)的第一mcd元數(shù)據(jù)字530可以具有為0的第一mcd邊界值504,指示第一存儲器塊540的全部字節(jié)(64字節(jié))可以是合法的(例如,可用的)。處理器或軟件庫可以分配第二存儲器塊562的存儲器的36字節(jié)以用于存儲數(shù)據(jù)(總共為64b+36b=100字節(jié))。與第二存儲器塊562相關(guān)聯(lián)的第二mcd元數(shù)據(jù)字550可以具有為28的第二mcd邊界值546。為28的第二mcd邊界值546可以指示存儲器塊562的第一36個連續(xù)字節(jié)可以是合法的并且最后28個連續(xù)字節(jié)可以是非法的。存儲器塊尺寸和/或mcd元數(shù)據(jù)字尺寸不旨在是限制性的,并且存儲器塊尺寸和/或mcd元數(shù)據(jù)字尺寸可以是由處理器或mcd系統(tǒng)的軟件庫設(shè)置的任何尺寸。

      圖5b描繪了根據(jù)一個實施例的用于檢查存儲器中的越界存儲器訪問的方法500的流程圖。方法500可以由計算機(jī)系統(tǒng)執(zhí)行,該計算機(jī)系統(tǒng)可以包括硬件(例如,電路、專用邏輯和/或可編程邏輯)、軟件(例如,在計算機(jī)系統(tǒng)上可執(zhí)行以執(zhí)行硬件模擬的指令)或其組合??捎蓤?zhí)行方法的計算機(jī)系統(tǒng)的一個或多個物理處理器來執(zhí)行方法500和/或其函數(shù)、例程、子例程或操作中的每一個??刹⑿械鼗虬床煌谏鲜鲰樞虻捻樞騺韴?zhí)行方法500的兩個或更多個函數(shù)、例程、子例程或操作。在某些實現(xiàn)中,可以由單個處理線程來執(zhí)行方法300。替代地,可以由兩個或多個處理線程來執(zhí)行方法500,每個線程執(zhí)行方法的一個或多個單個函數(shù)、例程、子例程或操作。在說明性示例中,可以使實現(xiàn)方法500的處理線程同步(例如,使用信號量、關(guān)鍵段和/或其他線程同步機(jī)制)。替代地,可以彼此異步地執(zhí)行實現(xiàn)方法500的處理線程。

      參考圖5b,方法500可以開始于處理器或軟件庫從應(yīng)用接收訪問具有連續(xù)存儲器塊的存儲器對象的數(shù)據(jù)的存儲器訪問請求(框570)。存儲器訪問請求可以包括指針,該指針指示應(yīng)用可以請求訪問的存儲器對象的開始的位置。該指針還可以包括存儲器對象的第一mcd唯一id。該方法可以包括處理器或軟件庫基于該指針?biāo)甘镜奈恢脵z索存儲在連續(xù)存儲器塊中的數(shù)據(jù)(例如,mcd元數(shù)據(jù))(框572)。該方法可以包括從mcd表檢索與連續(xù)存儲器塊相關(guān)聯(lián)的分配信息(框574)。分配信息可以包括與連續(xù)存儲器塊相關(guān)聯(lián)的第二mcd唯一標(biāo)識符和指示連續(xù)存儲器塊的第一存儲器區(qū)域的尺寸的mcd邊界值。該方法可以包括處理器或軟件庫將第一mcd唯一id與第二mcd唯一id進(jìn)行比較以確定被檢索的數(shù)據(jù)何時來自該指針?biāo)甘镜拇鎯ζ鲗ο?框576)。該方法可以包括處理器或軟件庫基于分配信息確定被檢索的數(shù)據(jù)何時來自存儲器的可用區(qū)域(框578)。該方法可以包括當(dāng)與被檢索的數(shù)據(jù)相關(guān)聯(lián)的錯誤事件發(fā)生時,處理器或軟件庫基于分配信息將錯誤消息發(fā)送到應(yīng)用(框580)。錯誤事件可以包括:第一mcd唯一id與第二mcd唯一id之間的失配或?qū)Υ鎯ζ鲗ο蟮拇鎯ζ鲏K內(nèi)的非法區(qū)域的訪問。

      存儲器的每個存儲器塊可以具有不同的mcd唯一id。在一個示例中,當(dāng)將數(shù)據(jù)存儲在存儲器中或讀取存儲器中的數(shù)據(jù)時,應(yīng)用可以執(zhí)行存儲器塊訪問下溢(例如,在當(dāng)前存儲器塊的開始之前的越界訪問)。當(dāng)應(yīng)用下溢存儲器塊時,當(dāng)當(dāng)前存儲器塊的第一mcd唯一id與先前存儲器塊的第二mcd唯一id失配時,處理器或軟件庫可以檢測出下溢。

      在另一示例中,當(dāng)將數(shù)據(jù)存儲在存儲器中或讀取存儲器中的數(shù)據(jù)時,應(yīng)用可以執(zhí)行存儲器塊訪問上溢(例如,在當(dāng)前存儲器塊之后的越界訪問)。當(dāng)應(yīng)用上溢存儲器塊時,處理器或軟件庫可以檢測上溢。在一個示例中,當(dāng)應(yīng)用上溢到當(dāng)前存儲器塊的非法訪問區(qū)域中時,處理器或軟件庫基于與存儲器對象的最后存儲器塊相關(guān)聯(lián)的mcd邊界值(如前面段落中所討論的)可以確定訪問在非法訪問區(qū)域中。例如,在圖5a中,處理器或軟件庫可以使用mcd邊界值546來確定非法訪問區(qū)域在字節(jié)35與字節(jié)63之間。在該示例中,當(dāng)應(yīng)用試圖訪問字節(jié)35與字節(jié)63之間的任何字節(jié)時,處理器或軟件庫可以確定應(yīng)用已經(jīng)上溢到非法訪問區(qū)域534中。

      在另一示例中,當(dāng)應(yīng)用試圖訪問超出當(dāng)前存儲器對象的字節(jié)時,處理器或軟件庫基于當(dāng)前存儲器塊的第一mcd唯一id與下一存儲器塊的第三mcd唯一id之間的失配可以確定應(yīng)用已經(jīng)上溢到下一存儲器對象中。例如,在圖5a中,當(dāng)應(yīng)用試圖訪問超出存儲器塊562的63b的存儲器時,處理器或軟件庫可以確定應(yīng)用已經(jīng)上溢,因為存儲器塊562的第一mcd唯一id542可能與下一存儲器塊的第三mcd唯一id不匹配。如前面段落所討論的,處理器或軟件庫檢測下溢或上溢的優(yōu)勢是使得處理器或軟件庫能檢測小到1字節(jié)的下溢或上溢。

      在一個示例中,當(dāng)錯誤消息指示非法區(qū)域已經(jīng)被訪問時,例如,訪問存儲器中的空白區(qū)域(諸如全部為零的區(qū)域),訪問可以使得軟件能訪問任何規(guī)范指針。例如,當(dāng)存儲器中的空白或空區(qū)域可以被訪問時,非mcd指針可以訪問存儲器中的任何數(shù)據(jù)。非mcd指針訪問存儲器中的任何數(shù)據(jù)的優(yōu)勢可以是避免改變傳統(tǒng)程序(例如,不是為mcd架構(gòu)配置的程序)的行為。

      圖6a是示出根據(jù)一個實施例的實現(xiàn)安全存儲器重新分區(qū)的處理器600的微架構(gòu)的框圖。具體地,根據(jù)本公開的至少一個實施例,處理器600描繪了被包括在處理器中的有序架構(gòu)核以及寄存器重命名邏輯、亂序發(fā)布/執(zhí)行邏輯??梢栽谔幚砥?00中實現(xiàn)頁面添加和內(nèi)容復(fù)制的實施例。

      處理器600包括耦合至執(zhí)行引擎單元650的前端單元630,并且兩者均耦合至存儲器單元670。處理器600可以包括精簡指令集計算(risc)核、復(fù)雜指令集計算(cisc)核、超長指令字(vliw)核、或混合或替代核類型。作為又一選項,處理器600可以包括專用核,例如,網(wǎng)絡(luò)或通信核、壓縮引擎、圖形核等。在一個實施例中,處理器600可以是多核處理器或可以是多處理器系統(tǒng)的一部分。

      前端單元630包括耦合至指令高速緩存單元634的分支預(yù)測單元632,指令高速緩存單元634耦合至指令轉(zhuǎn)換后備緩沖器(tlb)636,指令轉(zhuǎn)換后備緩沖器636耦合至指令取出單元638,指令取出單元638耦合至解碼單元660。解碼單元660(也被稱為解碼器)可以解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個或多個微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號作為輸出??墒褂酶鞣N不同的機(jī)制來實現(xiàn)解碼器660。合適的機(jī)制的示例包括但不限于:查找表、硬件實現(xiàn)、可編程邏輯陣列(pla)、微代碼只讀存儲器(rom)等。指令高速緩存單元634進(jìn)一步耦合至存儲器單元670。解碼單元660耦合至執(zhí)行引擎單元650中的重命名/分配器單元652。

      執(zhí)行引擎單元650包括耦合至引退單元654的重命名/分配器單元652以及一組一個或多個調(diào)度器單元656。調(diào)度器單元656表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站(rs)、中央指令窗等。調(diào)度器單元656耦合至物理寄存器堆單元658。每個物理寄存器堆單元658表示一個或多個物理寄存器堆,其中不同的物理寄存器堆存儲一個或多個不同的數(shù)據(jù)類型(諸如,標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn),等等)、狀態(tài)(諸如,作為要被執(zhí)行的下一條指令的地址的指令指針)等等。物理寄存器堆單元658與引退單元654重疊以示出可以用來實現(xiàn)寄存器重命名和亂序執(zhí)行的各種方式(例如,使用重排序緩沖器和引退寄存器堆;使用未來文件、歷史緩沖器和引退寄存器堆;使用寄存器映射和寄存器池等等)。

      通常,架構(gòu)寄存器從處理器外部或從編程者的視角來看是可見的。這些寄存器不限于任何已知的特定的電路類型。各種不同類型的寄存器可適用,只要它們能夠存儲并提供本文中所述的數(shù)據(jù)。合適的寄存器的示例包括但不限于:專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用物理寄存器和動態(tài)分配物理寄存器的組合等等。引退單元654和物理寄存器堆單元658耦合至執(zhí)行群集660。執(zhí)行群集660包括一組一個或多個執(zhí)行單元662和一組一個或多個存儲器訪問單元664。執(zhí)行單元662可以執(zhí)行各種操作(例如,移位、加法、減法、乘法)并且在各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))上操作。

      盡管一些實施例可以包括專用于特定功能或功能組的數(shù)個執(zhí)行單元,但是其他實施例可以僅包括一個執(zhí)行單元或全部都執(zhí)行所有功能的多個執(zhí)行單元。調(diào)度器單元656、物理寄存器堆單元658以及執(zhí)行群集660示出為可能是復(fù)數(shù)個,因為某些實施例為某些類型的數(shù)據(jù)/操作創(chuàng)建單獨(dú)的流水線(例如,各自都具有其自身的調(diào)度器單元、物理寄存器堆單元和/或執(zhí)行群集的標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/緊縮整數(shù)/緊縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線和/或存儲器訪問流水線——并且在單獨(dú)的存儲器訪問流水線的情況下,實現(xiàn)了其中僅此流水線的執(zhí)行群集具有存儲器訪問單元664的某些實施例)。還應(yīng)當(dāng)理解,在使用分開的流水線的情況下,這些流水線中的一個或多個可以是亂序發(fā)布/執(zhí)行的,而其余的是有序的。

      存儲器訪問單元664的集合耦合至存儲器單元670,存儲器單元670可以包括數(shù)據(jù)預(yù)取器680、數(shù)據(jù)tlb單元672、數(shù)據(jù)高速緩存單元(dcu)674、以及第2級(l2)高速緩存單元676,這里給出幾個示例。在一些實施例中,dcu674也被稱為第一級數(shù)據(jù)高速緩存(l1高速緩存)。dcu674可處理多個未完成的高速緩存未命中,并且繼續(xù)服務(wù)傳入存儲和加載。其還支持維持高速緩存一致性。數(shù)據(jù)tlb單元672是用于通過映射虛擬以及物理地址空間來改善虛擬地址轉(zhuǎn)換速度的高速緩存。在一個示例性實施例中,存儲器訪問單元664可包括加載單元、存儲地址單元和存儲數(shù)據(jù)單元,其中的每一個均耦合至存儲器單元670中的數(shù)據(jù)tlb單元672。l2高速緩存單元676可以耦合至一個或多個其他等級的高速緩存,并最終耦合至主存儲器。

      在一個實施例中,數(shù)據(jù)預(yù)取器680通過自動預(yù)測程序即將消耗哪些數(shù)據(jù)來推測性地加載/預(yù)取數(shù)據(jù)至dcu674。預(yù)取可指示在存儲在存儲器分層結(jié)構(gòu)(例如,較低級高速緩存或存儲器)的一個存儲器位置(例如,位置)的數(shù)據(jù)被處理器實際需求之前,將數(shù)據(jù)轉(zhuǎn)換至更靠近(例如,產(chǎn)生更少訪問等待時間)處理器的較高級存儲器位置。更具體地,預(yù)取可以指示在處理器發(fā)出對被返回的特定數(shù)據(jù)的需求之前,對從較低等級的高速緩存/存儲器之一到數(shù)據(jù)高速緩存和/或預(yù)取緩沖器的數(shù)據(jù)的早取回。

      處理器600可以支持一個或多個指令集(諸如,x86指令集(具有增加有更新版本的一些擴(kuò)展)、加利福尼亞州桑尼威爾的mips技術(shù)公司的mips指令集、加利福尼亞州桑尼威爾的arm控股公司的arm指令集(具有可選附加擴(kuò)展,諸如neon))。

      應(yīng)當(dāng)理解,核可以支持多線程操作(執(zhí)行兩個或更多個并行的操作或線程的集合),并且可以按各種方式來完成該多線程操作,各種方式包括時分多線程操作、同步多線程操作(其中,單個物理核為物理核正在同步進(jìn)行多線程操作的多個線程中的每一個線程提供邏輯核)或其組合(例如,時分取出和解碼以及此后諸如利用超線程技術(shù)的同步多線程操作)。

      盡管在亂序執(zhí)行的上下文中描述了寄存器重命名,但是,應(yīng)當(dāng)理解,寄存器重命名可以用于有序架構(gòu)中。雖然處理器的所示實施例也包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元以及共享的l2高速緩存單元,但替代實施例可具有用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,諸如例如,第一級(l1)內(nèi)部高速緩存或多個等級的內(nèi)部高速緩存。在一些實施例中,系統(tǒng)可以包括內(nèi)部高速緩存以及在核和/或處理器外部的外部高速緩存的組合?;蛘撸扛咚倬彺娑伎梢栽诤撕?或處理器的外部。

      圖6b是示出根據(jù)本發(fā)明的一些實施例的由圖6a的處理器600實現(xiàn)的有序流水線以及寄存器重命名級、亂序發(fā)布/執(zhí)行流水線的框圖。圖6b中的實線框示出了有序流水線,而虛線框示出了寄存器重命名、亂序發(fā)布/執(zhí)行流水線。在圖6b中,處理器流水線600包括取出級602、長度解碼級604、解碼級606、分配級608、重命名級610、調(diào)度(也稱為分派或發(fā)布)級612、寄存器讀取/存儲器讀取級614、執(zhí)行級616、寫回/存儲器寫入級618、異常處理級622、以及提交級624。在一些實施例中,級602-624的順序可以與所示出的不同,并且不限于圖6b中所示的特定順序。

      圖7示出了根據(jù)一個實施例的包括執(zhí)行安全存儲器重新分區(qū)的邏輯電路的處理器700的微架構(gòu)的框圖。在一些實施例中,可將根據(jù)一個實施例的指令實現(xiàn)為對具有字節(jié)尺寸、字尺寸、雙字尺寸、四字尺寸等并具有諸多數(shù)據(jù)類型(例如,單精度和雙精度整數(shù)和浮點(diǎn)數(shù)據(jù)類型)的數(shù)據(jù)元素進(jìn)行操作。在一個實施例中,有序前端701是處理器700的部分,該部分取出要被執(zhí)行的指令,并準(zhǔn)備這些指令以便稍后在處理器流水線中使用??梢栽谔幚砥?00中實現(xiàn)頁面添加和內(nèi)容復(fù)制的實施例。

      前端701可以包括若干單元。在一個實施例中,指令預(yù)取器716從存儲器中取出指令,并將這些指令饋送至指令解碼器718,指令解碼器718進(jìn)而解碼或解釋這些指令。例如,在一個實施例中,解碼器將所接收到的指令解碼為機(jī)器可執(zhí)行的被稱為“微指令”或“微操作”(也稱為微op或uop)的一個或多個操作。在其他實施例中,該解碼器將指令解析為可由微架構(gòu)用于執(zhí)行根據(jù)一個實施例的多個操作的操作碼以及對應(yīng)的數(shù)據(jù)和控制字段。在一個實施例中,追蹤高速緩存730獲取經(jīng)解碼的uop,并且在uop隊列734中將它們組合為程序排序的序列或蹤跡,以用于執(zhí)行。當(dāng)追蹤高速緩存730遇到復(fù)雜指令時,微代碼rom732提供完成操作所需的uop。

      一些指令被轉(zhuǎn)換為單個微op,而其他指令需要若干個微op以完成完整的操作。在一個實施例中,如果需要多于四個微op來完成指令,則解碼器718訪問微代碼rom732以執(zhí)行該指令。對于一個實施例,可將指令解碼為少量的微op,以便在指令解碼器718處進(jìn)行處理。在另一實施例中,如果需要許多微op來完成操作,則可將指令存儲在微代碼rom732中。追蹤高速緩存730參考進(jìn)入點(diǎn)可編程邏輯陣列(pla)來確定正確的微指令指針,以從微代碼rom732中讀取微代碼序列來完成根據(jù)一個實施例的一條或多條指令。在微代碼rom732完成對指令的微op進(jìn)行的序列化操作之后,該機(jī)器的前端701恢復(fù)從追蹤高速緩存730中取出微op。

      亂序執(zhí)行引擎703是準(zhǔn)備指令以進(jìn)行執(zhí)行的地方。亂序執(zhí)行邏輯具有若干個緩沖器,用于將指令流平滑并且重排序,以便在這些指令流沿流水線向下并經(jīng)調(diào)度供執(zhí)行時優(yōu)化性能。分配器邏輯分配每一個uop為了執(zhí)行所需的機(jī)器緩沖器和資源。寄存器重命名邏輯將諸個邏輯寄存器重命名為寄存器堆中的條目。分配器還在指令調(diào)度器(存儲器調(diào)度器、快速調(diào)度器702、慢速/通用浮點(diǎn)調(diào)度器704以及簡單浮點(diǎn)調(diào)度器706)之前,在兩個uop隊列(一個用于存儲器操作,而另一個用于非存儲器操作)中的一個uop隊列中,為每一個uop分配條目。uop調(diào)度器702、704、706基于它們的從屬輸入寄存器操作數(shù)源的準(zhǔn)備就緒以及uop完成它們的操作所需的執(zhí)行資源的可用性來確定uop何時準(zhǔn)備好用于執(zhí)行。一個實施例的快速調(diào)度器702可以在主時鐘周期的每半個時鐘周期上進(jìn)行調(diào)度,而其他調(diào)度器在每個主處理器時鐘周期上僅可調(diào)度一次。調(diào)度器對分派端口仲裁以調(diào)度uop來執(zhí)行。

      在執(zhí)行塊711中,寄存器堆708和710位于調(diào)度器702、704和706以及執(zhí)行單元712、714、716、718、710、712和714之間。也存在單獨(dú)的寄存器堆708、710,分別用于整數(shù)和浮點(diǎn)操作。一個實施例中的每個寄存器堆708、710也包括旁路網(wǎng)絡(luò),該旁路網(wǎng)絡(luò)可以繞開還未被寫入到寄存器堆中的、剛完成的結(jié)果或者將這些結(jié)果轉(zhuǎn)發(fā)到新的從屬uop中。整數(shù)寄存器堆708和浮點(diǎn)寄存器堆710也能夠彼此傳遞數(shù)據(jù)。對于一個實施例,將整數(shù)寄存器堆708劃分為兩個單獨(dú)的寄存器堆,一個寄存器堆用于數(shù)據(jù)的低階32位,第二個寄存器堆用于數(shù)據(jù)的高階32位。一個實施例中的浮點(diǎn)寄存器堆710具有128位寬的條目,因為浮點(diǎn)指令通常具有從64至128位寬度的操作數(shù)。

      執(zhí)行塊711包括執(zhí)行單元712、714、716、718、710、712和714,實際在這些執(zhí)行單元中執(zhí)行指令。該區(qū)塊包括存儲微指令執(zhí)行所需的整數(shù)和浮點(diǎn)數(shù)據(jù)操作數(shù)值的寄存器堆708和710。一個實施例的處理器700包括許多執(zhí)行單元:地址生成單元(agu)712、agu714、快速alu716、快速alu718、慢速alu710、浮點(diǎn)alu712、浮點(diǎn)移動單元714。對于一個實施例,浮點(diǎn)執(zhí)行塊712和714執(zhí)行浮點(diǎn)、mmx、simd、sse或其他操作。一個實施例中的浮點(diǎn)alu712包括用于執(zhí)行除法、平方根和余數(shù)微op的64位除64位的浮點(diǎn)除法器。對于本公開的多個實施例,可利用浮點(diǎn)硬件來處理涉及浮點(diǎn)值的指令。

      在一個實施例中,alu操作去往高速alu執(zhí)行單元716和718。一個實施例中的快速alu716和718可以執(zhí)行有效等待時間為半個時鐘周期的快速操作。對于一個實施例,大多數(shù)復(fù)雜的整數(shù)操作去往慢速alu710,因為慢速alu710包括用于長等待時間類型操作的整數(shù)執(zhí)行硬件,例如,乘法器、移位器、標(biāo)志邏輯和分支處理設(shè)備。存儲器加載/存儲操作由agu712和714來執(zhí)行。對于一個實施例,在對64位數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作的情境中描述整數(shù)alu716、718和710。在替代實施例中,alu716、718、710可被實現(xiàn)為支持多種數(shù)據(jù)位,包括16、32、128、256等等。類似地,浮點(diǎn)單元712、714可被實現(xiàn)為支持具有多種寬度的位的一系列操作數(shù)。對于一個實施例,浮點(diǎn)單元712、714可協(xié)同simd和多媒體指令對128位寬緊縮數(shù)據(jù)操作數(shù)進(jìn)行操作。

      在一個實施例中,在父加載完成執(zhí)行之前,uop調(diào)度器702、704和706分派從屬操作。由于在處理器700中推測性地調(diào)度并執(zhí)行uop,因此處理器700也包括用于處理存儲器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則在流水線中會存在將臨時不正確的數(shù)據(jù)留給調(diào)度器的運(yùn)行中的從屬操作。重放機(jī)制跟蹤并重新執(zhí)行使用不正確的數(shù)據(jù)的指令。僅僅從屬操作需要被重放,而允許獨(dú)立操作完成。也可將處理器的一個實施例的調(diào)度器和重放機(jī)制設(shè)計成用于捕捉指令序列,以用于文本串比較操作。

      根據(jù)一個實施例,處理器700還包括用于實現(xiàn)安全存儲器重新分區(qū)的邏輯。在一個實施例中,處理器700的執(zhí)行塊711可包括mcu115,以根據(jù)本文中的描述執(zhí)行安全存儲器重新分區(qū)。

      術(shù)語“寄存器”可以是指被用作標(biāo)識操作數(shù)的指令的部分的板上(on-board)處理器存儲器位置。換句話說,寄存器可以是從處理器外部(從編程者的角度來看)可用的那些。然而,不應(yīng)當(dāng)將實施例中的寄存器限制于意指特定類型的電路。相反,實施例中的寄存器能夠存儲并提供數(shù)據(jù),并且能夠執(zhí)行本文中所述的功能。本文所描述的寄存器可利用任何數(shù)量的不同技術(shù),由處理器中的電路來實現(xiàn),這些不同技術(shù)諸如,專用物理寄存器、使用寄存器重命名的動態(tài)分配的物理寄存器、專用和動態(tài)分配的物理寄存器的組合等。在一個實施例中,整數(shù)寄存器存儲32位整數(shù)數(shù)據(jù)。一個實施例的寄存器堆還包含用于緊縮數(shù)據(jù)的八個多媒體simd寄存器。

      對于此處的討論,寄存器應(yīng)被理解為設(shè)計成保存緊縮數(shù)據(jù)的數(shù)據(jù)寄存器,諸如來自美國加利福尼亞州圣克拉拉市的英特爾公司的啟用了mmx技術(shù)的微處理器的64位寬mmxtm寄存器(在一些實例中也稱為“mm”寄存器)。這些mmx寄存器(在整數(shù)和浮點(diǎn)形式兩者中是可用的)可與伴隨simd和sse指令的緊縮數(shù)據(jù)元素一起操作。類似地,也可以使用涉及sse2、sse3、sse4或以外的(統(tǒng)稱為“ssex”)技術(shù)的128位寬的xmm寄存器來保存這樣的緊縮數(shù)據(jù)操作數(shù)。在一個實施例中,在存儲緊縮數(shù)據(jù)和整型數(shù)據(jù)時,寄存器不需要區(qū)分兩種數(shù)據(jù)類型。在一個實施例中,整數(shù)和浮點(diǎn)可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。此外,在一個實施例中,浮點(diǎn)和整型數(shù)據(jù)可以存儲在不同的寄存器中或相同的寄存器中。

      可在許多不同的系統(tǒng)類型中實現(xiàn)實施例?,F(xiàn)在參照圖8,其中示出了根據(jù)一個實現(xiàn)的多處理器系統(tǒng)800的框圖。如圖8所示,多處理器系統(tǒng)800是點(diǎn)對點(diǎn)互連系統(tǒng),且包括經(jīng)由點(diǎn)對點(diǎn)互連850耦合的第一處理器870和第二處理器880。如圖8所示,處理器870和880中的每一個可以是多核處理器,包括第一和第二處理器核(即,處理器核874a和874b以及處理器核884a和884b),雖然潛在地更多核可以存在于處理器中。處理器各自可包括根據(jù)本公開的實施例的混合型寫入模式邏輯。可以在處理器870、處理器880或兩者中實現(xiàn)頁面添加和內(nèi)容復(fù)制的實施例。

      雖然以兩個處理器870、880來示出,但應(yīng)理解本公開的范圍不限于此。在其他實現(xiàn)中,在給定處理器中可存在一個或多個附加處理器。

      處理器870和880示出為分別包括集成存儲器控制器單元882和882。處理器870還包括點(diǎn)對點(diǎn)(p-p)接口876和888作為其總線控制器單元的部分;類似地,第二處理器880包括p-p接口886和888。處理器870、880可以經(jīng)由使用點(diǎn)對點(diǎn)(p-p)接口電路888、888的p-p接口850來交換信息。如圖8所示,imc882和882將處理器耦合到各自的存儲器,即存儲器832和存儲器834,這些存儲器可以是本地附連到各自處理器的主存儲器的多個部分。

      處理器870、880可各自使用點(diǎn)對點(diǎn)接口電路876、894、886、898經(jīng)由各個p-p接口852、854與芯片組890交換信息。芯片組890還可以經(jīng)由高性能圖形接口839與高性能圖形電路838交換信息。

      共享高速緩存(未示出)可以被包括在任一處理器之內(nèi),或被包括在兩個處理器外部但仍經(jīng)由p-p互連與這些處理器連接,使得如果將某處理器置于低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。

      芯片組890可經(jīng)由接口896耦合至第一總線816。在一個實施例中,第一總線816可以是外圍組件互連(pci)總線,或諸如pci快速總線或另一第三代io互連總線之類的總線,但是本公開的范圍不限于此。

      如圖8所示,各種io設(shè)備814可連同總線橋818一起耦合到第一總線816,總線橋818將第一總線816耦合到第二總線820。在一個實施例中,第二總線820可以是低引腳數(shù)(lpc)總線。在一個實施例中,各種設(shè)備可以耦合至第二總線820,包括例如,鍵盤和/或鼠標(biāo)822、通信設(shè)備827以及存儲單元828(諸如,可包括指令/代碼和數(shù)據(jù)830的盤驅(qū)動器或其他大容量存儲設(shè)備)。此外,音頻io824可以被耦合至第二總線820。注意,其他架構(gòu)是可能的。例如,代替圖8的點(diǎn)對點(diǎn)架構(gòu),系統(tǒng)可以實現(xiàn)多分支總線或其他此類架構(gòu)。

      現(xiàn)在參考圖9,所示出的是根據(jù)本發(fā)明的實施例的第三系統(tǒng)900的框圖。圖8和9中的類似元件使用類似附圖標(biāo)記,且在圖9中省略了圖8的某些方面以避免使圖9的其他方面模糊。

      圖9示出處理器970、980可分別包括集成存儲器和io控制邏輯(“cl”)972和982。對于至少一個實施例,cl972、982可以包括諸如本文所述的集成存儲器控制器單元。另外,cl972、982還可以包括io控制邏輯。圖9示出了存儲器932、934耦合到cl972、982,并且io設(shè)備914也耦合到控制邏輯972、982。傳統(tǒng)io設(shè)備915被耦合至芯片組990??梢栽谔幚砥?70、處理器980或兩者中實現(xiàn)頁面添加和內(nèi)容復(fù)制的實施例。

      圖10是可包括核1002中的一個或多個的示例性片上系統(tǒng)(soc)。本領(lǐng)域已知的對膝上型設(shè)備、臺式機(jī)、手持pc、個人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù)字信號處理器(dsp)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備以及各種其它電子設(shè)備的其它系統(tǒng)設(shè)計和配置也是合適的。一般地,能夠包含本文中所公開的處理器和/或其它執(zhí)行邏輯的多個系統(tǒng)或電子設(shè)備一般都是合適的。

      現(xiàn)在參考圖10,所示出的是根據(jù)本公開的一個實施例的soc1000的框圖。另外,虛線框是更先進(jìn)的soc上的特征。在圖10中,互連單元1002耦合至:應(yīng)用處理器1010,包括一組一個或多個核1002a-n以及共享高速緩存單元1006;系統(tǒng)代理單元1010;總線控制器單元1016;集成存儲器控制器單元1014;一組或一個或多個媒體處理器1020,可包括集成圖形邏輯1008、用于提供靜態(tài)和/或視頻照相功能的圖像處理器1024、提供硬件音頻加速的音頻處理器1026以及提供視頻編碼/解碼加速的視頻處理器1028;靜態(tài)隨機(jī)存取存儲器(sram)單元1030;直接存儲器存取(dma)單元1032;以及顯示單元1040,用于耦合至一個或多個外部顯示器??梢栽趕oc1000中實現(xiàn)頁面添加和內(nèi)容復(fù)制的實施例。

      接下來參考圖11,描繪了根據(jù)本發(fā)明的各實施例的片上系統(tǒng)(soc)設(shè)計的實施例。作為一個說明性示例,soc1100被包括在用戶設(shè)備(ue)中。在一個實施例中,ue是指由終端用戶用于通信的任何設(shè)備,諸如,手持式電話、智能電話、平板、超薄筆記本、具有寬帶適配器的筆記本或任何其他類似的通信設(shè)備。ue可以連接到基站或節(jié)點(diǎn),該基站或節(jié)點(diǎn)可以本質(zhì)上對應(yīng)于gsm網(wǎng)絡(luò)中的移動站(ms)??梢栽趕oc1100中實現(xiàn)頁面添加和內(nèi)容復(fù)制的實施例。

      這里,soc1100包括2個核——1106和1107。類似于上面的討論,核1106和1107可以符合指令集架構(gòu),諸如基于architecturecoretm的處理器、超微半導(dǎo)體公司(amd)處理器、基于mips的處理器、基于arm的處理器設(shè)計,或它們的客戶,以及它們的被許可方或采用者。核1106和1107耦合至與總線接口單元1109和l2高速緩存1110相關(guān)聯(lián)的高速緩存控制1108以與系統(tǒng)1100的其他部分進(jìn)行通信?;ミB1111包括片上互連,諸如iosf、amba,或上文所討論的其他互連,它們可以實現(xiàn)所描述的公開的一個或多個方面。

      互連1111提供到其他組件的通信信道,其他組件諸如與用戶身份模塊(sim)卡對接的sim1130、保存供核1106和1107執(zhí)行以初始化和引導(dǎo)soc1100的引導(dǎo)代碼的引導(dǎo)rom1135、與外部存儲器(例如,dram1160)對接的sdram控制器1140、與非易失性存儲器(例如,閃存1165)對接的閃存控制器1145、與外圍設(shè)備對接的外圍控制裝置1150(例如,串行外圍接口)、用于顯示和接收輸入(例如,允許觸摸的輸入)的視頻編解碼器1120和視頻接口1125、用于執(zhí)行圖形相關(guān)的計算的gpu1115等等。這些接口中的任何一種可以包括此處所描述的各實施例的各方面。

      另外,系統(tǒng)示出了用于通信的外圍設(shè)備,諸如藍(lán)牙模塊1170、3g調(diào)制解調(diào)器1175、gps1180以及wi-fi1185。注意,如上所述,ue包括用于通信的無線電裝置。因此,這些外圍通信模塊可以不被全部包括。然而,在ue中,應(yīng)該包括用于外部通信的某種形式的無線裝置。

      圖12示出了計算機(jī)系統(tǒng)1200的示例性形式的機(jī)器的圖示性表示,在該計算機(jī)系統(tǒng)1200內(nèi),可執(zhí)行用于使機(jī)器執(zhí)行本文中所討論的方法中的任何一個或多個的一組指令。在替代實現(xiàn)方式中,可以在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ī)機(jī)器操作,或者在對等(或分布式)網(wǎng)絡(luò)環(huán)境中作為對等機(jī)器操作。該機(jī)器可以是個人計算機(jī)(pc)、平板pc、機(jī)頂盒(stb)、個人數(shù)字助理(pda)、蜂窩電話、web設(shè)備、服務(wù)器、網(wǎng)絡(luò)路由器、交換機(jī)或橋、或者能夠執(zhí)行指定由該機(jī)器執(zhí)行的動作的一組指令(連續(xù)的或以其他方式)的任何機(jī)器。此外,雖然僅示出單個機(jī)器,但是也應(yīng)當(dāng)認(rèn)為術(shù)語“機(jī)器”包括單獨(dú)地或共同地執(zhí)行一組(或多組)指令以執(zhí)行本文中所討論的方法中的任何一個或多個的機(jī)器的任何集合。

      示例性計算機(jī)系統(tǒng)1200包括處理設(shè)備(處理器)1202、主存儲器1204(例如,只讀存儲器(rom)、閃存、動態(tài)隨機(jī)存取存儲器(dram)(諸如,同步dram(sdram)或rambusdram(rdram)等)、靜態(tài)存儲器1206(例如,閃存、靜態(tài)隨機(jī)存取存儲器(sram)等)以及數(shù)據(jù)存儲設(shè)備1218,它們經(jīng)由總線1230彼此進(jìn)行通信。

      處理器1202表示一個或多個通用處理設(shè)備,諸如微處理器、中央處理單元等。更具體而言,處理器1202可以是復(fù)雜指令集計算(cisc)微處理器、精簡指令集計算(risc)微處理器、超長指令字(vliw)微處理器、或?qū)崿F(xiàn)其他指令集的處理器、或?qū)崿F(xiàn)指令集的組合的處理器。處理器1202也可以是一個或多個專用處理設(shè)備,諸如,專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)、數(shù)字信號處理器(dsp)、網(wǎng)絡(luò)處理器等。處理器1202被配置成執(zhí)行用于執(zhí)行此處所討論的操作和步驟的指令1226。

      計算機(jī)系統(tǒng)1200可以進(jìn)一步包括網(wǎng)絡(luò)接口設(shè)備1222。計算機(jī)系統(tǒng)1200還可以包括視頻顯示單元1208(例如,液晶顯示器(lcd)、陰極射線管(crt)或觸摸屏)、字母數(shù)字輸入設(shè)備1210(例如,鍵盤)、光標(biāo)控制設(shè)備1214(例如,鼠標(biāo))、以及信號生成設(shè)備1216(例如,揚(yáng)聲器)

      數(shù)據(jù)存儲設(shè)備1218可以包括計算機(jī)可讀存儲介質(zhì)1224,在其上面存儲了實現(xiàn)本文所描述的方法或功能中的任意一個或多個的一組或多組指令1226(例如,軟件)。在由計算機(jī)系統(tǒng)1200對指令1226的執(zhí)行期間,這些指令1226也可完全或至少部分地駐留在主存儲器1204之內(nèi)和/或處理器1202之內(nèi);該主存儲器1204和處理器1202也構(gòu)成計算機(jī)可讀存儲介質(zhì)??梢赃M(jìn)一步在網(wǎng)絡(luò)1220上經(jīng)由網(wǎng)絡(luò)接口設(shè)備1234發(fā)送或接收指令1226。

      雖然在示例性實現(xiàn)方式中將計算機(jī)可讀存儲介質(zhì)1224示出為單個介質(zhì),但是應(yīng)當(dāng)認(rèn)為術(shù)語“計算機(jī)可讀存儲介質(zhì)”包括存儲一組或多組指令的單個介質(zhì)或多個介質(zhì)(例如,集中式或分布式數(shù)據(jù)庫和/或相關(guān)聯(lián)的高速緩存與服務(wù)器)。還應(yīng)當(dāng)認(rèn)為術(shù)語“計算機(jī)可讀存儲介質(zhì)”包括能夠存儲、編碼或攜帶由機(jī)器執(zhí)行并且使該機(jī)器執(zhí)行本公開的方法中的任何一個或多個的一組指令的任何介質(zhì)。相應(yīng)地,應(yīng)當(dāng)認(rèn)為術(shù)語“計算機(jī)可讀存儲介質(zhì)”包括但不限于固態(tài)存儲器、光介質(zhì)和磁介質(zhì)。以下示例關(guān)于進(jìn)一步的實施例。

      在示例1中,處理器包括:1)存儲器,用于存儲來自應(yīng)用的數(shù)據(jù),其中存儲器包括存儲器損壞檢測(mcd)表和存儲器對象;以及2)處理器核,耦合到存儲器,其中處理核用于:a)從應(yīng)用接收訪問具有連續(xù)存儲器塊的存儲器對象的數(shù)據(jù)的存儲器訪問請求,其中存儲器訪問請求包括:i)指針,指示存儲器對象在存儲器中的位置;以及ii)第一mcd唯一標(biāo)識符(id);b)基于指針?biāo)甘镜奈恢脵z索存儲在存儲器對象的連續(xù)存儲器塊中的數(shù)據(jù);c)從mcd表檢索與連續(xù)存儲器塊相關(guān)聯(lián)的分配信息,其中分配信息包括:i)第二mcd唯一標(biāo)識符,與連續(xù)存儲器塊相關(guān)聯(lián);以及ii)mcd邊界值,指示連續(xù)存儲器塊的第一存儲器區(qū)域的尺寸;以及d)當(dāng)與被檢索的數(shù)據(jù)相關(guān)聯(lián)的錯誤事件發(fā)生時,基于分配信息將錯誤消息發(fā)送到應(yīng)用。

      在示例2中,示例1的處理器,其中連續(xù)存儲器塊包括:1)可用存儲器區(qū)域和不可用存儲器區(qū)域;以及2)第一存儲器區(qū)域是可用存儲器區(qū)域或不可用存儲器區(qū)域。

      在示例3中,示例1-2的處理器,其中處理器核進(jìn)一步用于:1)將第一mcd唯一id與第二mcd唯一id進(jìn)行比較以確定被檢索的數(shù)據(jù)何時來自指針?biāo)甘镜拇鎯ζ鲗ο螅灰约?)基于分配信息確定被檢索的數(shù)據(jù)何時來自存儲器的可用區(qū)域。

      在示例4中,示例1-3的處理器,其中錯誤事件在以下情形時發(fā)生:1)第一mcd唯一id與第二mcd唯一id不匹配;或2)存儲器訪問在不可用存儲器區(qū)域內(nèi)。

      在示例5中,示例1-4的處理器,其中處理器核進(jìn)一步用于通過以下操作確定可用存儲器區(qū)域:1)從連續(xù)存儲器塊的尺寸值減去mcd邊界值來獲得邊界位置值;以及2)基于邊界位置值在連續(xù)存儲器塊中標(biāo)識mcd邊界位置,其中mcd邊界位置指示可用存儲器區(qū)域與不可用存儲器區(qū)域之間的界線。

      在示例6中,示例1-5的處理器,其中連續(xù)存儲器塊的尺寸是64字節(jié)。

      在示例7中,示例1-6的處理器,其中當(dāng)mcd邊界值是零時,全部連續(xù)存儲器塊是可用存儲器區(qū)域。

      各實施例可以具有上文所描述的結(jié)構(gòu)特征的不同的組合。例如,上文所描述的處理器和方法的所有可選的特征也可以利用此處所描述的系統(tǒng)來實現(xiàn),示例中的細(xì)節(jié)可以用于一個或多個實施例中的任何地方。

      在示例8中,處理器包括:1)存儲器,用于存儲來自應(yīng)用的數(shù)據(jù),其中存儲器包括存儲器損壞檢測(mcd)表;以及2)處理器核,耦合到存儲器,其中處理核用于:a)從應(yīng)用接收用于將存儲器中的一個或多個連續(xù)存儲器塊分配給存儲器對象的分配請求;b)考慮所請求的存儲器對象的尺寸,將一個或多個連續(xù)存儲器塊分配給存儲器對象,其中一個或多個連續(xù)存儲器塊的連續(xù)存儲器塊包括第一存儲器區(qū)域和第二存儲器區(qū)域;以及c)將mcd元數(shù)據(jù)字寫入mcd表,其中mcd元數(shù)據(jù)字包括i)第一mcd唯一標(biāo)識符,與連續(xù)存儲器塊相關(guān)聯(lián);以及ii)mcd邊界值,指示連續(xù)存儲器塊的第一存儲器區(qū)域的尺寸。

      在示例9中,示例8的處理器,其中第一存儲器區(qū)域是連續(xù)存儲器塊的被使用的部分。

      在示例10中,示例8-9的處理器,其中第一存儲器區(qū)域是連續(xù)存儲器塊的未被使用的部分。

      在示例11中,示例8-10的處理器,其中處理器核進(jìn)一步用于:1)創(chuàng)建具有存儲器對象的存儲器地址和與存儲器對象相關(guān)聯(lián)的第二mcd唯一標(biāo)識符的指針;以及2)將指針發(fā)送到應(yīng)用。

      在示例12中,示例8-11的處理器,其中連續(xù)存儲器塊的尺寸是64字節(jié)。

      在示例13中,示例8-12的處理器,其中mcd元數(shù)據(jù)字的尺寸是2字節(jié),以及其中:1)mcd唯一id是mcd元數(shù)據(jù)字的1字節(jié),以及2)mcd邊界值是mcd元數(shù)據(jù)字的1字節(jié)。

      各實施例可以具有上文所描述的結(jié)構(gòu)特征的不同的組合。例如,上文所描述的處理器和方法的所有可選的特征也可以利用此處所描述的系統(tǒng)來實現(xiàn),示例中的細(xì)節(jié)可以用于一個或多個實施例中的任何地方。

      在示例14中,片上系統(tǒng)(soc)包括:1)處理器;2)存儲器設(shè)備,耦合到處理器,用于存儲來自應(yīng)用的數(shù)據(jù),其中存儲器包括存儲器損壞檢測(mcd)表和存儲器對象;以及3)存儲器控制器,耦合到存儲器設(shè)備,存儲器控制器用于:a)從應(yīng)用接收訪問具有連續(xù)存儲器塊的存儲器對象的數(shù)據(jù)的存儲器訪問請求,其中存儲器訪問請求包括:i)指針,指示存儲器對象在存儲器中的位置;以及ii)第一mcd唯一標(biāo)識符(id);b)基于指針?biāo)甘镜奈恢脵z索存儲在連續(xù)存儲器塊中的數(shù)據(jù);c)從mcd表檢索與連續(xù)存儲器塊相關(guān)聯(lián)的分配信息,其中分配信息包括:i)第二mcd唯一標(biāo)識符,與連續(xù)存儲器塊相關(guān)聯(lián);以及ii)mcd邊界值,指示連續(xù)存儲器塊的第一存儲器區(qū)域的尺寸;d)基于分配信息確定被檢索的數(shù)據(jù)何時來自存儲器的可用區(qū)域;以及e)將被檢索的數(shù)據(jù)發(fā)送到應(yīng)用。

      在示例15中,示例14的soc,其中連續(xù)存儲器塊包括:1)可用存儲器區(qū)域和不可用存儲器區(qū)域;以及2)第一存儲器區(qū)域是可用存儲器區(qū)域或不可用存儲器區(qū)域。

      在示例16中,示例14-15的soc,其中當(dāng)mcd邊界值是零時,全部連續(xù)存儲器塊是可用存儲器區(qū)域。

      在示例17中,示例14-16的soc,其中存儲器控制器進(jìn)一步用于將第一mcd唯一id與第二mcd唯一id進(jìn)行比較以確定被檢索的數(shù)據(jù)何時來自指針?biāo)甘镜拇鎯ζ鲗ο蟆?/p>

      在示例18中,示例14-17的soc,存儲器控制器進(jìn)一步用于當(dāng)與被檢索的數(shù)據(jù)相關(guān)聯(lián)的錯誤事件發(fā)生時,將錯誤消息發(fā)送到應(yīng)用,其中錯誤事件在以下情形時發(fā)生:1)第一mcd唯一id與第二mcd唯一id不匹配;或2)存儲器訪問在不可用存儲器區(qū)域內(nèi)。

      在示例19中,示例14-18的soc,其中存儲器控制器進(jìn)一步用于通過以下操作確定可用存儲器區(qū)域:1)從連續(xù)存儲器塊的尺寸值減去mcd邊界值來獲得邊界位置值;以及2)基于邊界位置值在連續(xù)存儲器塊中標(biāo)識mcd邊界位置,其中mcd邊界位置指示可用存儲器區(qū)域與不可用存儲器區(qū)域之間的界線。

      在示例20中,示例14-19的soc,其中連續(xù)存儲器塊的尺寸是64字節(jié)。

      各實施例可以具有上文所描述的結(jié)構(gòu)特征的不同的組合。例如,上文所描述的處理器和方法的所有可選的特征也可以利用此處所描述的系統(tǒng)來實現(xiàn),示例中的細(xì)節(jié)可以用于一個或多個實施例中的任何地方。

      雖然已參照有限數(shù)量的實施例描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將從中領(lǐng)會很多修改和變型。所附權(quán)利要求旨在涵蓋落入本發(fā)明的真實精神與范圍的所有此類修改與變型。

      在本文的描述中,闡明了眾多具體細(xì)節(jié),例如具體類型的處理器和系統(tǒng)配置、具體硬件結(jié)構(gòu)、具體架構(gòu)的和微架構(gòu)的細(xì)節(jié)、具體寄存器配置、具體指令類型、具體系統(tǒng)組件、具體測量/高度、具體處理器流水線級和操作等的示例,以提供對本發(fā)明的透徹理解。然而,對本領(lǐng)域普通技術(shù)人員顯而易見的是,不一定要采用這些具體細(xì)節(jié)來實施本發(fā)明。在其它實例中,未詳細(xì)描述公知的組件或方法,諸如具體或替代的處理器架構(gòu)、用于所描述算法的具體邏輯電路/代碼、具體固件代碼、具體互連操作、具體邏輯配置、具體制造技術(shù)和材料、具體編譯器實現(xiàn)、代碼中算法的具體表達(dá)、具體掉電和門控技術(shù)/邏輯、以及計算機(jī)系統(tǒng)的其它具體操作細(xì)節(jié),以避免不必要地模糊本發(fā)明。

      各實施例是參考特定集成電路中的(諸如計算平臺或微處理器中的)安全存儲器重新分區(qū)來描述的。各實施例也可以適用于其他類型的集成電路和可編程邏輯器件。例如,所公開的各實施例不僅限于臺式計算機(jī)系統(tǒng)或便攜式計算機(jī),諸如ultrabookstm計算機(jī)。并且也可用于其他設(shè)備,諸如,手持式設(shè)備、平板、其他薄筆記本、片上系統(tǒng)(soc)設(shè)備以及嵌入式應(yīng)用。手持式設(shè)備的一些示例包括蜂窩電話、網(wǎng)際協(xié)議設(shè)備、數(shù)碼相機(jī)、個人數(shù)字助理(pda)和手持式pc。嵌入式應(yīng)用通常包括微控制器、數(shù)字信號處理器(dsp)、片上系統(tǒng)、網(wǎng)絡(luò)計算機(jī)(netpc)、機(jī)頂盒、網(wǎng)絡(luò)中樞、廣域網(wǎng)(wan)交換機(jī)或可執(zhí)行以下教導(dǎo)的功能與操作的任何其他系統(tǒng)。描述了系統(tǒng)可以是任何類型的計算機(jī)或嵌入式系統(tǒng)。所公開的各實施例可以特別用于低端設(shè)備,諸如可穿戴設(shè)備(例如,手表)、電子植入物、傳感和控制基礎(chǔ)設(shè)施設(shè)備、控制器、監(jiān)視控制和數(shù)據(jù)采集(scada)系統(tǒng)等等。此外,本文描述的裝置、方法和系統(tǒng)不限于物理計算設(shè)備,而是還可涉及用于節(jié)能和能效的軟件優(yōu)化。如將在以下描述中變得顯而易見的,本文描述的方法、裝置和系統(tǒng)的實施例(無論是關(guān)于硬件、固件、軟件還是它們的組合)對于用性能考量來平衡的‘綠色技術(shù)’的前景是至關(guān)重要的。

      雖然參照處理器來描述本文中的多個實施例,但是其他實施例也適用于其他類型的集成電路和邏輯設(shè)備。本發(fā)明的實施例的類似技術(shù)和教導(dǎo)可應(yīng)用于其他類型的電路或半導(dǎo)體器件,這些其他類型的電路或半導(dǎo)體器件可受益于更高的流水線吞吐量和改善的性能。本發(fā)明的實施例的教導(dǎo)適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機(jī)器。然而,本發(fā)明不限于執(zhí)行512位、256位、128位、64位、32位或16位數(shù)據(jù)操作的處理器或機(jī)器,并且可適用于執(zhí)行數(shù)據(jù)操縱或管理的任何處理器和機(jī)器。此外,本文的描述提供了示例,并且附圖出于示意性目的示出各種示例。然而,這些示例不應(yīng)當(dāng)被理解為是限制性意義的,因為它們僅僅旨在提供本發(fā)明的諸個實施例的示例,而并非提供本發(fā)明的實施例的所有可能實現(xiàn)的詳盡列表。

      雖然下述的示例是在執(zhí)行單元和邏輯電路情境下描述指令處理和分配,但本發(fā)明的其他實施例也可通過存儲在機(jī)器可讀有形介質(zhì)上的數(shù)據(jù)和/或指令來完成,這些數(shù)據(jù)和/或指令在被機(jī)器執(zhí)行時使得機(jī)器執(zhí)行與本發(fā)明至少一個實施例相一致的功能。在一個實施例中,與本發(fā)明的多個實施例相關(guān)聯(lián)的功能被具體化在機(jī)器可執(zhí)行指令中。這些指令可用來使通過這些指令而被編程的通用處理器或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本發(fā)明的多個實施例也可以作為計算機(jī)程序產(chǎn)品或軟件來提供,該計算機(jī)程序產(chǎn)品或軟件可包括其上存儲有指令的機(jī)器或計算機(jī)可讀介質(zhì),這些指令可被用來對計算機(jī)(或其他電子設(shè)備)進(jìn)行編程以執(zhí)行根據(jù)本發(fā)明的多個實施例的一個或多個操作。或者,本發(fā)明的多個實施例的多個操作可由包含用于執(zhí)行這些操作的固定功能邏輯的專用硬件組件來執(zhí)行,或由經(jīng)編程的計算機(jī)組件以及固定功能硬件組件的任何組合來執(zhí)行。

      可將用于對邏輯進(jìn)行編程以執(zhí)行本發(fā)明的多個實施例的指令存儲在系統(tǒng)中的存儲器(諸如,dram、高速緩存、閃存、或其他存儲設(shè)備)內(nèi)。此外,指令可經(jīng)由網(wǎng)絡(luò)或通過其他計算機(jī)可讀介質(zhì)來分配。因此,機(jī)器可讀介質(zhì)可包括用于以機(jī)器(例如,計算機(jī))可讀的形式存儲或發(fā)送信息的任何機(jī)制,但不限于:軟盤、光盤、緊致盤只讀存儲器(cd-rom)、磁光盤、只讀存儲器(rom)、隨機(jī)存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、磁卡或光卡、閃存、或在互聯(lián)網(wǎng)上經(jīng)由電、光、聲、或其他形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)發(fā)送信息中所使用的有形的機(jī)器可讀存儲器。因此,計算機(jī)可讀介質(zhì)包括適用于存儲或發(fā)送機(jī)器(例如,計算機(jī))可讀形式的電子指令或信息的任何類型的有形的機(jī)器可讀介質(zhì)。

      設(shè)計會經(jīng)歷多個階段,從創(chuàng)建到仿真到制造。表示設(shè)計的數(shù)據(jù)可以用多種方式來表示該設(shè)計。首先,像仿真中有用的那樣,可以使用硬件描述語言或另一功能性描述語言來表示硬件。此外,可以在設(shè)計過程的一些階段產(chǎn)生具有邏輯和/或晶體管門的電路級模型。此外,大多數(shù)設(shè)計在某個階段都達(dá)到表示硬件模型中各種設(shè)備的物理布置的數(shù)據(jù)的層級。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是指定在用于制造集成電路的掩模的不同掩模層上存在或不存在各種特征的數(shù)據(jù)。在任何設(shè)計表示中,數(shù)據(jù)可以被存儲在任何形式的機(jī)器可讀介質(zhì)中。存儲器或者磁或光存儲設(shè)備(諸如,盤)可以是存儲經(jīng)由光或電波發(fā)送的信息的機(jī)器可讀介質(zhì),調(diào)制或以其他方式生成這些光或電波以發(fā)送這些信息。當(dāng)發(fā)送指示或承載代碼或設(shè)計的電載波達(dá)到實現(xiàn)該電信號的復(fù)制、緩沖或重新發(fā)送的程度時,即產(chǎn)生了新的副本。因此,通信提供商或網(wǎng)絡(luò)提供商可在有形的機(jī)器可讀介質(zhì)上至少臨時地存儲具體化本發(fā)明的多個實施例的技術(shù)的制品(諸如,被編碼成載波的信息)。

      在本文中使用的模塊指的是硬件、軟件、和/或固件的任意組合。作為示例,模塊包括與非瞬態(tài)介質(zhì)相關(guān)聯(lián)的諸如微控制器之類的硬件,該非瞬態(tài)介質(zhì)用于存儲適于由該微控制器執(zhí)行的代碼。因此,在一個實施例中,對模塊的引用是指硬件,該硬件被專門配置成識別和/或執(zhí)行要保存在非瞬態(tài)介質(zhì)上的代碼。另外,在另一實施例中,模塊的使用是指包括代碼的非瞬態(tài)介質(zhì),該代碼專門適于由微控制器執(zhí)行以進(jìn)行預(yù)定操作。并且可推斷,在又一實施例中,術(shù)語模塊(在該示例中)可以指微控制器和非瞬態(tài)介質(zhì)的組合。通常,被示為分開的模塊邊界一般不同而且有可能重疊。例如,第一和第二模塊可共享硬件、軟件、固件、或它們的組合,同時可能保留某些獨(dú)立的硬件、軟件或固件。在一個實施例中,術(shù)語邏輯的使用包括諸如晶體管、寄存器之類的硬件或諸如可編程邏輯器件之類的其它硬件。

      在一個實施例中,短語“被配置成”的使用指的是安排、合在一起、制造、提供銷售、進(jìn)口和/或設(shè)計裝置、硬件、邏輯或元件以執(zhí)行指定和/或確定的任務(wù)。在該示例中,沒有操作的裝置或其元件仍然“被配置成”執(zhí)行指定任務(wù),如果它被設(shè)計、耦合、和/或互連以執(zhí)行所述指定任務(wù)的話。作為純說明性示例,在操作期間,邏輯門可以提供0或1。但“被配置成”向時鐘提供啟用信號的邏輯門不包括可提供1或0的每一潛在邏輯門。而是,該邏輯門是以在操作期間1或0的輸出用于啟用時鐘的某種方式來耦合的邏輯門。再次注意,術(shù)語“被配置成”的使用不要求操作,而是集中于裝置、硬件、和/或元件的潛在狀態(tài),其中在該潛在狀態(tài)中,該裝置、硬件和/或元件被設(shè)計成在該裝置、硬件和/或元件正在操作時執(zhí)行特定任務(wù)。

      此外,在一個實施例中,短語“用于”、“能夠/能夠用于”和/或“能用于”的使用指的是一些裝置、邏輯、硬件、和/或元件按這種方式設(shè)計來以指定方式啟用對該裝置、邏輯、硬件、和/或元件的使用。如上注意的,在一個實施例中,用于、能夠、或能用于的使用指的是裝置、邏輯、硬件、和/或元件的潛在狀態(tài),其中該裝置、邏輯、硬件、和/或元件沒有正在操作而是被按這種方式設(shè)計來以指定方式啟用裝置的使用。

      如在本文中所使用的值包括數(shù)字、狀態(tài)、邏輯狀態(tài)、或二進(jìn)制邏輯狀態(tài)的任何已知表示。通常,邏輯電平、邏輯值、或多個邏輯值的使用也被稱為1和0,這簡單地表示了二進(jìn)制邏輯狀態(tài)。例如,1指的是邏輯高電平,0指的是邏輯低電平。在一個實施例中,諸如晶體管或閃存單元之類的存儲單元能夠保持單個邏輯值或多個邏輯值。不過,也使用了計算機(jī)系統(tǒng)中的值的其它表示。例如,十進(jìn)制數(shù)十還可以被表示為二進(jìn)制值1010和十六進(jìn)制字母a。因此,值包括能夠被保存在計算機(jī)系統(tǒng)中的信息的任何表示。

      而且,狀態(tài)也可由值或值的部分來表示。作為示例,諸如邏輯1之類的第一值可表示默認(rèn)或初始狀態(tài),而諸如邏輯0之類的第二值可表示非默認(rèn)狀態(tài)。此外,在一個實施例中,術(shù)語重置和置位分別指的是默認(rèn)和已更新的值或狀態(tài)。例如,默認(rèn)值潛在地包括高邏輯值,即,復(fù)位,而更新的值潛在地包括低邏輯值,即,置位。注意,可以使用值的任何組合來表示任意數(shù)量的狀態(tài)。

      上述方法、硬件、軟件、固件或代碼的實施例可以經(jīng)由存儲在機(jī)器可訪問、機(jī)器可讀、計算機(jī)可訪問、或計算機(jī)可讀介質(zhì)上可由處理元件執(zhí)行的指令或代碼來實現(xiàn)。非瞬態(tài)機(jī)器可訪問/可讀介質(zhì)包括提供(即存儲和/或發(fā)送)諸如計算機(jī)或電子系統(tǒng)之類的機(jī)器可讀的形式的信息的任何機(jī)制。例如,非瞬態(tài)機(jī)器可訪問介質(zhì)包括:隨機(jī)存取存儲器(ram),諸如靜態(tài)ram(sram)或動態(tài)ram(dram);rom;磁或光存儲介質(zhì);閃存設(shè)備;電存儲設(shè)備;光存儲設(shè)備;聲存儲設(shè)備;用于保持從瞬態(tài)(傳播)信號(例如載波、紅外信號、數(shù)字信號)接收的信息的其它形式的存儲設(shè)備;等等,這些與可從其接收信息的非瞬態(tài)介質(zhì)相區(qū)別。

      被用于對邏輯進(jìn)行編程以執(zhí)行本發(fā)明的諸個實施例的指令可被存儲在系統(tǒng)中的存儲器(諸如,dram、高速緩存、閃存、或其他存儲器)內(nèi)。此外,指令可經(jīng)由網(wǎng)絡(luò)或通過其他計算機(jī)可讀介質(zhì)來分配。因此,機(jī)器可讀介質(zhì)可包括用于以機(jī)器(例如,計算機(jī))可讀的形式存儲或發(fā)送信息的任何機(jī)制,但不限于:軟盤、光盤、緊致盤只讀存儲器(cd-rom)、磁光盤、只讀存儲器(rom)、隨機(jī)存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、磁卡或光卡、閃存、或在互聯(lián)網(wǎng)上經(jīng)由電、光、聲、或其他形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)發(fā)送信息中所使用的有形的機(jī)器可讀存儲器。因此,計算機(jī)可讀介質(zhì)包括適于存儲或發(fā)送機(jī)器(例如,計算機(jī))可讀形式的電子指令或信息的任何類型的有形機(jī)器可讀介質(zhì)。

      本申請文件中通篇對“一個實施例”或“實施例”的引用意指結(jié)合所述實施例描述的特定的特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個實施例中。因此,在整篇說明書中的不同位置出現(xiàn)短語“在一個實施例中”或“在實施例中”不一定都是指同一個實施例。此外,在一個或多個實施例中,能以任何合適的方式來組合特定的特征、結(jié)構(gòu)或特性。

      在上述說明書中,已經(jīng)參考特定示例性實施例給出了詳細(xì)描述。然而,顯然可對這些實施例作出各種修改和改變,而不背離如所附權(quán)利要求所述的本發(fā)明的更寬泛精神和范圍。相應(yīng)地,應(yīng)當(dāng)認(rèn)為說明書和附圖是說明性的而不是限制性的。而且,實施例和其它示例性語言的上述使用不一定指的是同一實施例或同一示例,而可能指的是不同和獨(dú)特的實施例,也有可能是同一實施例。

      在對計算機(jī)存儲器內(nèi)的數(shù)據(jù)位的操作的算法和符號表示方面呈現(xiàn)了具體實施方式的一些部分。這些算法描述和表示是由數(shù)據(jù)處理領(lǐng)域的技術(shù)人員用于向本領(lǐng)域的其他技術(shù)人員最有效地傳達(dá)其工作實質(zhì)的手段。算法在此一般被理解為導(dǎo)致所需結(jié)果的自洽的操作序列。這些操作是需要對物理量進(jìn)行物理操控的操作。通常但非必須,這些量采用能被存儲、傳輸、組合、比較、以及以其他方式操控的電信號或磁信號的形式。主要出于慣用法的原因,時不時地將這些信號稱為位、值、要素、符號、字符、項、數(shù)字等已證明是方便的。此處所描述的塊可以是硬件、軟件、固件或其組合。

      然而,應(yīng)當(dāng)記住,所有這些和類似的術(shù)語用于與適當(dāng)?shù)奈锢砹筷P(guān)聯(lián),并且僅僅是應(yīng)用于這些量的方便的標(biāo)記。除非專門聲明,否則從上文的討論中顯而易見地看出,應(yīng)當(dāng)理解,貫穿本說明書,利用諸如“定義”、“接收”、“確定”、“發(fā)出”、“鏈接”、“關(guān)聯(lián)”、“獲取”、“認(rèn)證”、“阻止”、“執(zhí)行”、“請求”、“傳遞”等等之類的術(shù)語的討論是指計算系統(tǒng)或類似的電子計算設(shè)備的動作和/或進(jìn)程,這些計算系統(tǒng)或類似的電子計算設(shè)備操縱數(shù)據(jù),并且將被表示為計算系統(tǒng)的寄存器和存儲器內(nèi)的物理(例如,電子)量的數(shù)據(jù)轉(zhuǎn)換為類似地被表示為計算系統(tǒng)存儲器或寄存器或其他此類信息存儲、傳輸和/或顯示設(shè)備內(nèi)的物理量的其他數(shù)據(jù)。在此可使用詞語“示例”或“示例性”來意指用作示例、實例或說明。本文中被描述為“示例”或“示例性”的任何方面或設(shè)計不一定被解釋為優(yōu)選于或更優(yōu)于其他方面或設(shè)計。相反,詞語“示例”或“示例性”的使用旨在以具體的方式來呈現(xiàn)諸概念。如本申請中所使用的,術(shù)語“或”意指包括性的“或”而非排他性的“或”。也就是說,除非另有指定或從上下文來看是清楚的,否則“x包括a或b”意指自然的包括性排列中的任何一種。也就是說,如果x包括a;x包括b;或x包括a和b兩者,則在任何以上實例中,都滿足“x包括a或b”。此外,如本申請中和所附權(quán)利要求書所使用的冠詞“a”和“an”一般應(yīng)解釋為意指“一個或多個”,除非另有指定或從上下文來看顯然指向單數(shù)形式。此外,通篇對術(shù)語“實施例”或“一個實施例”或“實現(xiàn)”或“一個實現(xiàn)”的使用不旨在意指同一個實施例或?qū)崿F(xiàn),除非是這樣描述的。此外,如此處所使用的術(shù)語“第一”、“第二”、“第三”、“第四”等等旨在用作區(qū)別不同的元件的標(biāo)記,并且可以不一定具有根據(jù)它們的數(shù)字指定的順序含義。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1