欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

程序模糊方法和用于執(zhí)行模糊程序的處理設(shè)備的制作方法

文檔序號:6592808閱讀:240來源:國知局
專利名稱:程序模糊方法和用于執(zhí)行模糊程序的處理設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種包括可編程處理器的數(shù)據(jù)處理設(shè)備,以及一種轉(zhuǎn)換可編程處理器 的指令程序的方法。
背景技術(shù)
代碼模糊是按照模糊其內(nèi)容的方式轉(zhuǎn)換計(jì)算機(jī)的指令程序的技術(shù)的統(tǒng)稱。可以應(yīng) 用代碼模糊以使其更加難以識別需要在未授權(quán)類型的計(jì)算機(jī)上執(zhí)行程序的相關(guān)部分,或者 無需保護(hù)策略。美國專利No. 6,779,114描述了一種代碼模糊技術(shù),所述代碼模糊技術(shù)包含模糊 程序的控制流。將分支指令按照以下方式添加到指令塊中,對所述塊的預(yù)期執(zhí)行順序進(jìn)行 了模糊。美國專利No. 5,559,884描述了一種程序基本塊的偽隨機(jī)重排序,以創(chuàng)建簽名,所 述簽名用于識別通過其分布程序的源。許多現(xiàn)代處理器使用指令緩存、預(yù)取和/或流水線操作技術(shù),其依賴于程序流的 本地性。具有模糊目標(biāo)的分支指令的添加減小了本地性,這可以具有防止根據(jù)這種技術(shù)所 期待的執(zhí)行速度增益的效果。

發(fā)明內(nèi)容
其中,本發(fā)明的目的是提供一種程序模糊,其中支持高速緩存使用效率。提出了根據(jù)權(quán)利要求1所述的轉(zhuǎn)換可編程處理器的程序指令的方法。在所述方法 中,將在原始地址空間內(nèi)的原始指令地址的序列映射到目標(biāo)地址的有限的范圍集合內(nèi),用 于對重排序的指令進(jìn)行尋址。連續(xù)的原始指令地址的目標(biāo)地址之間的地址步長包括所述 范圍的第一范圍內(nèi)的第一地址步長;這些第一地址步長之間的、所述范圍的至少第二范圍 內(nèi)的第二地址步長。限制所述范圍的個(gè)數(shù)促進(jìn)了其原始指令地址彼此相鄰的指令的聯(lián)合緩 存的可能性。通過步進(jìn)至范圍內(nèi)的地址步長之間的不同范圍,對所述范圍內(nèi)的指令順序進(jìn) 行了模糊,使其難以重構(gòu)程序。同樣,這使得可以使用在范圍內(nèi)和或范圍之間相互相反符號 (方向)的地址步長。在實(shí)施例中,在每一個(gè)范圍內(nèi)只使用一個(gè)指令長度的地址步長,例如,該大小的背 向和正向步長。對于其他范圍的中間偏移的使用使得可以在避免所述范圍連續(xù)執(zhí)行的指令 的簡單序列的同時(shí)進(jìn)行尋址。通過使用一個(gè)指令長度的地址步長,甚至更加促進(jìn)了緩存。提供根據(jù)權(quán)利要求18所述的處理設(shè)備用于執(zhí)行已轉(zhuǎn)換的程序。該處理設(shè)備對與 重排序地址一致的連續(xù)指令進(jìn)行尋址。在其他實(shí)施例中,例如,通過在執(zhí)行之前對本地存儲 器中的指令序列重新排序的處理器可以執(zhí)行所述程序。在另一個(gè)示例中,可以使用包括添 加的跳轉(zhuǎn)指令的程序,以使得處理器能夠按照正常順序執(zhí)行所述程序,或者可以將分離的 信息提供用于使得處理器能夠執(zhí)行這種行為。


使用以下附圖,根據(jù)典型實(shí)施例的描述,這些和其他目的和有利方面將變得清楚 明白。圖1示出了數(shù)據(jù)處理設(shè)備圖la-d示出了程序流控制單元圖2示出了程序轉(zhuǎn)換的流程3示出了地址映射圖3a示出了空間填充路徑以形象化地址映射圖4示出了程序流控制單元圖5、5a示出了程序流控制單元
具體實(shí)施例方式基本數(shù)據(jù)處理設(shè)備圖1示出了數(shù)據(jù)處理設(shè)備,例如集成電路。除了數(shù)據(jù)處理設(shè)備的程序流控制單元 16之外,所述處理設(shè)備可以具有傳統(tǒng)的結(jié)構(gòu),包括存儲器10、指令發(fā)布電路12和多個(gè)功能 單元14、16,所述功能單元包括程序流控制單元16。指令發(fā)布電路12具有分別與存儲器10 的地址輸入和數(shù)據(jù)輸出相連的地址輸出以及指令輸入。指令發(fā)布電路12具有與功能單元 14、16相連的指令輸出。程序流控制單元16具有與指令發(fā)布電路12相連的地址輸出。程序流控制單元16配置用于確保程序的已重新排序以便模糊程序內(nèi)容的指令序 列的正確執(zhí)行。在實(shí)施例中,使用最小化了指令緩存有效性的減小的重新排序。圖Ia示出了程序流控制單元16的第一實(shí)施例。在該實(shí)施例中,程序流控制單元 16包括程序計(jì)數(shù)器160和分支執(zhí)行電路162。程序計(jì)數(shù)器160具有與指令發(fā)布電路(未 示出)相連的輸出。分支執(zhí)行電路162具有與指令發(fā)布電路(未示出)相連的輸入,用于 接收分支命令,以及與程序計(jì)數(shù)器160相連的輸出和輸入。在操作時(shí),程序計(jì)數(shù)器對由時(shí)鐘 CL表示的連續(xù)指令周期求和??蛇x地,當(dāng)沒有按照恒定距離存儲指令時(shí),通過從指令解碼器 (未示出)接收到的指令長度代碼控制增量。計(jì)數(shù)值作為提供給指令發(fā)布電路的指令的地 址。在其中分支執(zhí)行電路162已經(jīng)接收到分支命令并且已經(jīng)確定必須接受所述分支命令的 指令周期內(nèi),分支執(zhí)行電路162根據(jù)所述分支重寫程序計(jì)數(shù)器值,典型地從所述程序計(jì)數(shù) 器值中增加或減去分支距離。圖Ib示出了程序流控制單元16的實(shí)施例,所述程序流控制單元16附加地包括映 射電路164。程序計(jì)數(shù)器160具有通過映射電路164與指令發(fā)布電路(未示出)相連的輸 出。在操作時(shí),程序計(jì)數(shù)器160對連續(xù)的指令周期求和,可選地用由指令長度控制的增量。 映射電路164將計(jì)數(shù)值映射到目標(biāo)地址,繼而提供給指令發(fā)布電路。映射電路164可以實(shí) 現(xiàn)為查找表電路,例如在通過計(jì)數(shù)值尋址的位置處存儲目標(biāo)地址的查找存儲器。例如,可以 使用隨機(jī)分配給各個(gè)計(jì)數(shù)值的目標(biāo)地址集合。作為查找電路的選項(xiàng)或者與這種查找電路結(jié) 合,可以將算術(shù)電路用于計(jì)算地址,或者可以將特別設(shè)計(jì)的邏輯電路用于計(jì)算地址。這種電 路可以配置用于將每一個(gè)計(jì)數(shù)值映射到各個(gè)偽隨機(jī)選擇的目標(biāo)地址集合之一。在實(shí)施例 中,邏輯上連續(xù)的指令之間的地址步長的符號可以具有偽隨機(jī)概率,即沿一個(gè)方向地址步 長可以相等地與沿其他方向的步長頻率相同。即,即使只使用有線個(gè)數(shù)的步長大小,所述步長的符號可以是隨機(jī)的。同樣,連續(xù)步長的聯(lián)合概率可以是隨機(jī)的,使得沿一個(gè)方向的步長 接著是同樣頻繁的沿相同方向的另一個(gè)方向的步長??蛇x地,可以使用其他映射。在其中分支執(zhí)行電路162已經(jīng)接收到分支命令并且 已經(jīng)確定必須接受所述分支命令的指令周期中,分支執(zhí)行電路162根據(jù)所述分支重寫程序 計(jì)數(shù)器值,典型地向程序計(jì)數(shù)器值添加或減去分支距離。圖Ic示出了與連續(xù)映射的指令地址塊一起使用的程序流控制單元16的可選實(shí)施 例。該實(shí)施例包括連接在映射電路164和指令存儲器(未示出)之間的附加目標(biāo)程序計(jì)數(shù) 器166和更新選擇器168。更新選擇器168控制程序計(jì)數(shù)器160什么時(shí)候累加,以及是否根 據(jù)映射電路164累加或者更新目標(biāo)程序計(jì)數(shù)器168。在操作時(shí),程序計(jì)數(shù)器160在每一個(gè)塊 開始時(shí)累加,并且目標(biāo)程序計(jì)數(shù)器166在塊開始時(shí)復(fù)制程序計(jì)數(shù)器160的映射程序計(jì)數(shù)器 值。在所述塊內(nèi),目標(biāo)程序計(jì)數(shù)器累加。例如,通過在所述程序中包括的信息或者當(dāng)執(zhí)行特 定類型的指令時(shí)通過自動(dòng)開始新塊來控制所述塊的開始。圖Id示出了具有更新單元161的程序流控制單元16的實(shí)施例。更新單元161當(dāng) 沒有執(zhí)行跳轉(zhuǎn)時(shí)控制指令地址的更新。在實(shí)施例中,更新單元配置用于向程序計(jì)數(shù)器160 輸出地址步長,并且程序計(jì)數(shù)器160向程序計(jì)數(shù)器值增加所述步長。更新單元161依賴于程 序計(jì)數(shù)器值選擇地址步長,以下將描述步長值。例如,可以使用偽隨機(jī)步長。在實(shí)施例中, 更新單元161包括查找存儲器,以查找針對各個(gè)程序計(jì)數(shù)器值的步長??蛇x地,可以使用設(shè) 計(jì)用于產(chǎn)生地址步長的邏輯電路。在另一個(gè)實(shí)施例中,更新單元輸出由前一個(gè)程序計(jì)數(shù)器 值確定的下一個(gè)程序計(jì)數(shù)器值的一部分或全部??梢詫⒉檎掖鎯ζ饔糜谑褂们耙粋€(gè)程序計(jì) 數(shù)器值來得出下一個(gè)程序計(jì)數(shù)器值。按照這種方式,無需使用程序計(jì)數(shù)器120中的增加就 實(shí)現(xiàn)了地址步長??蛇x地,分支執(zhí)行電路162可以包括分支目標(biāo)查找存儲器162a,用于按照 更新指令地址的相應(yīng)方式查找跳轉(zhuǎn)指令的分支目標(biāo)。在實(shí)施例中,分支執(zhí)行電路162包括 用于計(jì)算分支目標(biāo)地址的計(jì)算電路(沒有分離地示出)。指令發(fā)布電路12包括指令緩存存儲器120、指令緩存控制器122和指令寄存器 124。指令緩存控制器122具有與程序流控制單元16的地址輸出相連的輸入以及與存儲器 10和指令緩存存儲器120相連的輸出。指令緩存存儲器120具有與存儲器10相連的輸入 以及與指令寄存器124相連的輸出。指令寄存器124具有與功能單元14、16相連的輸出。 功能單元14、16可以與一個(gè)或更多寄存器文件(未示出)和/或數(shù)據(jù)存儲器(未示出)相 連。在另外實(shí)施例中(未示出),功能單元14、16也可以與存儲器10相連。在操作時(shí),功能單元14、16在連續(xù)的指令周期內(nèi)執(zhí)行連續(xù)的指令。程序流控制單 元16確定指令地址,所述指令地址必須由功能單元14、16執(zhí)行,并且向指令發(fā)布電路12表 示這些地址。指令緩存控制器122確定來自這些地址的指令在指令緩存存儲器120中是否 可用,并且從指令緩存存儲器向指令寄存器124發(fā)布所述指令。如果在指令緩存存儲器120 中不存在指令,指令緩存控制器122使得將所述指令從存儲器10帶到指令緩存存儲器10 中(可選地,是較大指令塊的一部分)。緩存未命中數(shù)與缺少本地性有關(guān)。通常,當(dāng)?shù)谝缓偷诙噶畹刂贩浅=咏灾劣?他們將基于它們的地址一起保存在緩存中時(shí),當(dāng)從第一指令地址進(jìn)行到第二指令地址時(shí)緩 存未命中數(shù)極少發(fā)生。這通常應(yīng)用于相鄰的地址,但是也可以應(yīng)用于更大距離的地址。當(dāng) 基于這些地址的臨近性將這些地址的內(nèi)容存儲在指令緩存存儲器120中時(shí),認(rèn)為地址相對于彼此是本地的。典型地,可以針對緩存定義本地距離作為針對由于地址之間的類似性聯(lián) 合存儲內(nèi)容的地址之間的最大距離。在簡單的示例中,其中將每一個(gè)均具有多個(gè)地址的線 路的內(nèi)容緩存在指令緩存存儲器120中,如果他們屬于相同的線路,則這些地址相對于彼 此是本地的。在這種情況下,本地距離是線路長度。在另一個(gè)示例中,其中將地址的移動(dòng)窗 口緩存在指令緩存存儲器120中,當(dāng)所述窗口向前移動(dòng)時(shí),將窗口開始處的地址用窗口結(jié) 尾處的地址來代替,如果它們的距離小于窗口大小,則這些地址相對于彼此是本地的。在這 種情況下,本地距離是窗口大小。當(dāng)將指令緩存在緩存線中時(shí),例如64或128個(gè)指令地址的緩存線,如果可以將程 序流限制到有限個(gè)數(shù)的緩存線,可以避免緩存未命中數(shù),所述緩存線在有限個(gè)數(shù)的地址范 圍內(nèi),使得可以一起緩存所述范圍。應(yīng)該理解的是,可以有許多替換指令發(fā)布電路結(jié)構(gòu)和管理方法。例如,可以按照壓 縮和/或加密形式將指令存儲在存儲器10中,在這種情況下可以在緩沖存儲器和存儲器和 /或指令寄存器124之間使用解壓縮和/或解密電路。在一些情況下,可以將指令緩存存儲 器120旁路。目前,通過說明解釋簡單的指令緩存存儲器。程序流控制單元16可以包括程序計(jì)數(shù)器寄存器,所述程序計(jì)數(shù)器寄存器在每一 個(gè)指令周期中更新。當(dāng)程序流控制單元16接收分支指令(也稱作跳轉(zhuǎn)指令)時(shí),程序流控 制單元16根據(jù)所述分支指令執(zhí)行更新。否則,程序流控制單元16應(yīng)用本地定義的更新。在 實(shí)施例中,程序流控制單元16在其中不執(zhí)行分支的每一個(gè)指令周期向所述程序計(jì)數(shù)器寄 存器的內(nèi)容中添加當(dāng)前指令長度。在另外的實(shí)施例中,可以在這樣的情況下使用預(yù)取,即程序流控制單元16和或指 令緩存控制器122計(jì)算期待將來被執(zhí)行的指令的預(yù)測地址,并且指令緩存控制器122預(yù)取 這些指令。例如,可以通過預(yù)先應(yīng)用本地定義的更新來形成預(yù)測地址,即假設(shè)將不會遇到分 支指令。此外,可以將諸如分支預(yù)測之類的其他技術(shù)用于計(jì)算預(yù)測地址。在可選實(shí)施例中,程序流控制單元16可以使用數(shù)據(jù)處理設(shè)備,所述程序流控制單 元16處按照慣例遞增程序計(jì)數(shù)器,并且使用程序計(jì)數(shù)器尋址指令,無需映射到目標(biāo)指令。 在這種情況下,在一個(gè)實(shí)施例中,數(shù)據(jù)處理設(shè)備包括用于在執(zhí)行之前預(yù)處理所述程序的軟 件和/或硬件。執(zhí)行預(yù)處理,使得不會進(jìn)行指令序列的重排。由于避免了緩存未命中數(shù),可 以有效地進(jìn)行這種預(yù)處理。不必立刻撤銷對于整個(gè)程序的重排。相反地,可以在每一次處 理器開始執(zhí)行程序段之前,一次性地預(yù)處理各個(gè)程序段。作為另一個(gè)實(shí)施例,可以將跳轉(zhuǎn)指 令添加到程序中,以使得處理器能夠根據(jù)指令的重排順序跳轉(zhuǎn)??梢詫μD(zhuǎn)指令目標(biāo)加密, 在這種情況下數(shù)據(jù)處理設(shè)備可以包括用于對所述目標(biāo)解密的軟件或硬件解密器。作為另一 個(gè)示例,可以將跳轉(zhuǎn)列表與程序分離地提供給數(shù)據(jù)處理設(shè)備,并且在執(zhí)行期間由程序流控 制單元16使用所述跳轉(zhuǎn)列表。該列表上的條目可以規(guī)定跳轉(zhuǎn)位置和跳轉(zhuǎn)目標(biāo)的組合集合。程序轉(zhuǎn)換圖2示出了程序轉(zhuǎn)換的流程圖。在將程序的指令存儲到存儲器10中用于執(zhí)行之 前使用程序轉(zhuǎn)換??梢酝ㄟ^程序轉(zhuǎn)換設(shè)備執(zhí)行程序轉(zhuǎn)換,例如對其編程以執(zhí)行程序轉(zhuǎn)換的 計(jì)算機(jī)。在第一步驟21中,程序轉(zhuǎn)換設(shè)備接收必須轉(zhuǎn)換的指令的程序。在第二步驟22中, 所述程序轉(zhuǎn)換設(shè)備在程序中檢測分支指令,并且對分支指令的位置和分支目標(biāo)制表。在第三步驟23中,程序轉(zhuǎn)換設(shè)備將程序分成指令塊。優(yōu)選地,針對每一個(gè)分支目標(biāo)定義所述塊,在所述分支目標(biāo)處的指令時(shí)開始所述塊??蛇x地,可以形成在分支目標(biāo)處不 會開始的附加塊。在實(shí)施例中,塊可以包含不超過一個(gè)單獨(dú)的指令。每一個(gè)塊延伸到下一 個(gè)塊的開始。向所述塊給出指數(shù),例如按照程序中出現(xiàn)的順序。在第四步驟24中,程序轉(zhuǎn) 換設(shè)備根據(jù)映射函數(shù)映射所述指數(shù)。在第五步驟25中,程序轉(zhuǎn)換設(shè)備按照出現(xiàn)順序在每一 個(gè)塊的末端向下一個(gè)塊添加分支指令。在第六步驟26中,程序轉(zhuǎn)換設(shè)備通過按照它們映射 的指數(shù)順序排列所述塊來形成已轉(zhuǎn)換的程序。在第七步驟27中,程序轉(zhuǎn)換設(shè)備根據(jù)重新排 列的塊的地址替換程序的分支指令中的分支目標(biāo)的定義??蛇x地,可以是省略第五步驟25,或者通過向表示新塊開始的程序添加信息的步 驟來替換第五步驟,在這種情況下,執(zhí)行所述程序的處理器必須提供關(guān)于地址的未命中數(shù) 信息,例如通過在本地程序存儲器中重構(gòu)原始塊序列、通過在塊的末端添加分支、或者通過 在執(zhí)行期間主動(dòng)使指令地址跳轉(zhuǎn)生效,而無需明確的分支指令。在實(shí)施例中,每一個(gè)塊包含不超過一個(gè)指令。因此,在每一個(gè)指令之后發(fā)生指令地 址跳轉(zhuǎn)。指令地址映射優(yōu)選地,所述映射函數(shù)具有這樣的性質(zhì)有效地使用了指令存儲器,所述指令存儲 器保存緩存效率,并且使得指令序列的重構(gòu)困難。指令存儲器的有效使用意味著不會留下 太多的沒有映射指令的未使用地址。緩存效率的保存意味著導(dǎo)致緩存未命中的指令地址改 變的個(gè)數(shù)應(yīng)該保持在緩存能夠處理的范圍內(nèi)。使得指令序列重構(gòu)困難意味著連續(xù)執(zhí)行的指 令的地址之間的地址步長的統(tǒng)計(jì)性質(zhì)應(yīng)該具有某種偽隨機(jī)特性。因此例如,地址步長的頻 率分布不應(yīng)該集中于單一的步長值,應(yīng)該避免連續(xù)的步長值和頻繁重復(fù)的圖案之間的強(qiáng)相 關(guān)。這些不同的性質(zhì)可能會矛盾。例如,使得指令序列的重構(gòu)困難最好是通過使用整 個(gè)地址空間的隨機(jī)地址步長來最佳服務(wù),而緩存效率依賴于可預(yù)測的尋址步長,優(yōu)選地,依 賴于單位步長。圖3示意性地示出了將困難的重構(gòu)與緩存效率組合的映射。在第一列30中示出 了映射之前的連續(xù)原始指令地址的位置,表示邏輯上連續(xù)的指令的序列。在第二列31中示 出了通過將所述映射應(yīng)用于原始指令地址獲得的目標(biāo)地址的本地性。如可以看出的,將來 自指令地址的序列32的連續(xù)原始指令地址映射到目標(biāo)地址的打亂次序的范圍32a-d的有 限集合。序列32是由第一列30表示的序列的子序列,在這種意義上在所述列中存在其他 子序列。作為示例,包含16個(gè)指令的序列32可以用于映射到四個(gè)范圍33a-d中的目標(biāo)地 址的原始指令地址??梢允褂美?4個(gè)或256個(gè)指令或者不同個(gè)數(shù)指令的較大序列???以將序列32外邊的原始指令地址映射到其他范圍集合中的目標(biāo)地址。這可以基于具有相 同序列大小的第一列30中的其他序列來實(shí)現(xiàn),每一個(gè)都映射到不同的范圍集合。典型地, 序列32外的一部分原始指令地址映射到范圍33a-d之間的目標(biāo)地址。在作為序列32中的連續(xù)原始指令地址的映射的目標(biāo)指令之間存在地址步長。作 為示例,已經(jīng)表示出了幾個(gè)地址步長34。如從圖中可以看出的,所述地址步長可以是范圍 33a-d內(nèi)或所述范圍之間的步長。原始指令地址的序列定義了作為連續(xù)成對的原始指令地 址映射的目標(biāo)地址之間的地址步長的序列。在該地址步長序列中將不同類型的地址步長彼 此互相混合。避免了高度可預(yù)測的序列。因此例如,如果將序列32的連續(xù)部分每一個(gè)均映射到范圍33a_d的相應(yīng)范圍內(nèi),這將是高度可預(yù)測的。這將與包含第一范圍33a范圍內(nèi)的 地址步長的地址步長的序列相對應(yīng),然后是第二范圍33b內(nèi)的步長之后與第二范圍33b相 對應(yīng)的步長,以此類推。通過使用包含在第一范圍33a中的步長之間的范圍33b_d以及因 此第一范圍33a中的步長之間的范圍之間的步長之內(nèi)的步長的地址步長的序列,實(shí)現(xiàn)了幾 乎不可預(yù)測的序列。優(yōu)選地,在有限的范圍集合33a_d中的所有目標(biāo)地址是來自序列32的原始指令地 址的映射的意義下,序列32到范圍的映射是一對一的,但是可以使用并不密集的映射,其 中例如在有限的范圍集合33a-d中的一半和全部目標(biāo)地址之間是來自序列32的原始指令 地址的映射??梢允褂萌我獬潭鹊奶畛?。使用至少一半填充確保了至少50%效率的使用。 優(yōu)選地,使用至少90%的填充,并且甚至更優(yōu)選地,使用100%的填充。當(dāng)然,也可以存在沒 有填滿的例外范圍。只要將一個(gè)或更多指令的(子)序列映射到按照所述方式至少一半填 充的范圍,實(shí)現(xiàn)了某種程度上改進(jìn)的本地性,即使其他子序列沒有這么多的填充范圍。優(yōu)選 地,按照這種方式映射程序的模糊部分中的指令序列的主要部分,并且更優(yōu)選地并且只是 例外的,按照這種方式?jīng)]有映射小于10%的序列。當(dāng)將第一列30的原始指令地址分為與圖中所示序列32類似的多個(gè)序列時(shí),可以 按照這種方式將每一個(gè)序列映射到不同的范圍集合,組合起來的范圍集合填滿了所述地址 空間,使得其他序列的目標(biāo)地址的多個(gè)范圍位于序列32的范圍33a_d之間。因此,在范圍 內(nèi)的地址步長之間的程序地址步長中,將出現(xiàn)其他范圍中的地址步長。在實(shí)施例中,選擇作為序列32映射的所述范圍集合33的個(gè)數(shù)和大小,使得范圍 33a-d的大小的總和小于緩存存儲器大小。這確保了可以將具有序列32中的原始指令地址 的所有指令一起保持在緩存中,減小了緩存未命中數(shù)。但是即使不是所有的指令都在緩存 中,由于范圍內(nèi)的地址步長的使用改進(jìn)了本地性,改善了緩存效率。可以將范圍33a_d的不 同范圍保持在不同的緩存線中、或緩存線組中,而不需要在緩存中保持具有范圍33a_d之 間的目標(biāo)地址的指令。因此,最小化了緩存未命中數(shù)。另一方面,序列32的映射不局限于 一個(gè)連續(xù)的范圍以及互相混合不同范圍中的步長的事實(shí)使其可以實(shí)現(xiàn)指令的重新排序,使 得指令序列的重構(gòu)變得困難。有限的范圍集合33a_d的使用使其可以使用有限個(gè)數(shù)的地址步長大小,同時(shí)仍然 使得指令序列的重構(gòu)變得困難。在實(shí)施例中,例如只使用所述大小的正向或反向地址步長, 將每一個(gè)范圍內(nèi)的地址步長的大小限制到一個(gè)指令長度。通過使用這種正向和反向地址步 長之間的其他范圍中的地址步長,可以確保對不同的指令進(jìn)行尋址。因?yàn)橄噜徶噶钪g的 地址步長可以是正向或反向的,序列的重構(gòu)變得困難。因?yàn)槭褂脝挝坏刂凡介L,由于范圍內(nèi) 的地址步長是本地的,從而改善了所使用的緩存效率。在實(shí)施例中,每一對范圍33a_d之間的地址步長的大小也限制為針對每一對的單 獨(dú)大小和/或可以將所述地址步長限制為范圍33a_d內(nèi)選定的對之間的步長。當(dāng)然,如果 使用所有對的范圍之間的步長,針對不同對范圍的大小可以不同,因?yàn)樗鰧Φ姆秶梢?是不同的相互距離。如果定義了等距范圍的序列,并且將地址步長限制為序列中相鄰范圍 之間的步長,甚至可以進(jìn)一步減小不同步長大小的個(gè)數(shù)。有限個(gè)數(shù)的步長大小的使用簡化 了映射,并且可以增加緩存效率。例如通過使用具有來自當(dāng)前地址相同大小的地址步長處 的目標(biāo)地址的指令并行預(yù)處理,也可以促進(jìn)預(yù)取和流水線操作。
形象化可以通過多維空間中的點(diǎn)陣來形象化所述映射,所述點(diǎn)陣中的點(diǎn)代表目標(biāo)地址。 每一個(gè)范圍33a_d由該陣列中沿第一維度的相應(yīng)行來表示。在該形象化中,一個(gè)指令長度 的目標(biāo)地址步長與這種空間中沿第一維度的移動(dòng)相對應(yīng)。沿其他維度的移動(dòng)與所述范圍 33a_d的不同范圍之間的地址步長相對應(yīng)。因此,可以將連續(xù)的指令地址值的映射值的序列 形象化為沿η維空間中的路徑。在另外的實(shí)施例中,每一個(gè)范圍可以與所述陣列中的行的 相應(yīng)部分相對應(yīng),使得多于一個(gè)范圍與所述陣列中的行相關(guān)聯(lián),或者范圍可以與所述陣列 中的多個(gè)行相對應(yīng)。然而,為了解釋,可以緊記行和范圍之間的一對一對應(yīng)性。圖3a示出了具有這種路徑36的二維空間,用于限定映射函數(shù)。應(yīng)該強(qiáng)調(diào)的是示出 了具體的路徑36只是為了說明路徑的概念在實(shí)踐中,可以使用其他更復(fù)雜的路徑。示出 了具有坐標(biāo)位置(χ,y)的行和列的二維陣列的一部分,其中χ和y具有整數(shù)值。每一行與 范圍33a-d的不同范圍相對應(yīng),即y值是范圍33a_d的標(biāo)簽,并且所述范圍占據(jù)了范圍占據(jù) 了所述行的一部分。在該部分內(nèi)沿χ方向的步長與所述范圍內(nèi)的步長相對應(yīng),沿y方向的 步長與范圍33a-d之間的步長相對應(yīng)。在一個(gè)示例中,每一個(gè)點(diǎn)(x,y)根據(jù)A = (b(y)+x)*L 定義了目標(biāo)地址A,其中L是指令長度,對于不同的y值表示,范圍的基本地址由b (y)來表示。 作為簡單的示例,可以使用函數(shù)b(y) = A0+M*y,其中M是大于范圍大小的整數(shù),AO是常數(shù)。示出了空間填充路徑36的一部分。如所注意的,示出了路徑36形狀的具體選擇 僅僅是為了說明路徑的概念。該空間填充路徑36可以在所示空間的一部分之外繼續(xù)???間填充路徑36沿陣列的各個(gè)點(diǎn)連續(xù)延伸,每次從相應(yīng)點(diǎn)移動(dòng)到其相鄰的點(diǎn),并且實(shí)際上只 訪問每一個(gè)點(diǎn)一次。所述路徑沿所有維度蜿蜒,意義在于步長的頻率沿各個(gè)維度不同,如果 根本上不同,則不同之處在于(遠(yuǎn)遠(yuǎn))小于所述陣列的行中的點(diǎn)的個(gè)數(shù)的因子,例如不超過 因子2,并且對沿不同維度的步長互相混合。因此,空間填充路徑36定義了沿路徑36的位置“S”對于二維坐標(biāo)(x,y)的第一 函數(shù),(x,y) = (Fx(s),F(xiàn)y (s))??梢詫⒃贾噶畹刂贰⒒蛴弥噶铋L度除以原始指令地址與 基本地址的差用作位置S。因此,目標(biāo)地址是(b (Fy (s)+Fx(S) )*L。如果使用指令索引數(shù), s可以表示連續(xù)的指令索引數(shù)。因?yàn)樗雎窂皆L問了陣列的所有點(diǎn),使用空間填充路徑36限定映射確保了存儲 器的有效使用,具有使用所述范圍中的所有目標(biāo)地址的效果。因?yàn)閷⒕哂信c沿所示路徑36 的s值相對應(yīng)的16個(gè)地址的序列32只映射到4行,即映射在四個(gè)范圍中,緩存是高效的。 這是最佳情況,最差情況下將其映射到7行。因?yàn)榈刂凡介L是不規(guī)則的,使得原始序列的重 構(gòu)變得困難不同范圍(行)出現(xiàn)的地址步長沿空間填充路徑36彼此相互混合。范圍內(nèi)的 地址步長與路徑36中沿一行的水平步長相對應(yīng)。這種水平步長可以向左或向右,與正向和 反向地址步長相對應(yīng)。如可以看出的,在這些步長之間發(fā)生了到其他行的步長或其他行內(nèi) 的步長。在實(shí)施例中,使用正方形陣列,并且選擇二維陣列的大小足夠大,以提供具有超過 需要替換的指令地址個(gè)數(shù)的長度的空間填充路徑36的點(diǎn)??蛇x地,可以使用具有較小大小 或不同形狀的陣列。在小陣列的情況下,可以將必須轉(zhuǎn)換的程序分為段,每一個(gè)段具有不超 過所述路徑中地址的地址,將轉(zhuǎn)換分離地應(yīng)用于各個(gè)段。應(yīng)該注意的是,用沿η維空間的路徑36實(shí)現(xiàn)的并且映射到范圍中的復(fù)合函數(shù)保留
12了受限制的本地性。至少當(dāng)路徑36沿行移動(dòng)時(shí)(例如,沿χ方向),保留了本地性。因?yàn)榇?在有限個(gè)數(shù)的行,只有有限個(gè)數(shù)的地址范圍33a_d通常一起使用。此外,如果基本地址之間 的距離b (y)不超過緩存的本地性距離,當(dāng)路徑36沿y方向移動(dòng)時(shí),也可以保留不會引起緩 存未命中的本地性。因此,通過使用具有本地步長的空間填充路徑36,將緩存本地性保留為 遠(yuǎn)大于針對隨機(jī)地址序列的程度。例如,可以通過存儲在查找表中的路徑36中的點(diǎn)的外在規(guī)格來實(shí)現(xiàn)諸如路徑36 之類的空間填充路徑,通過用于計(jì)算路徑點(diǎn)的算法的遞歸定義,通過映射值的表或者通過 這些方法的混合。作為示例,圖中所示的具體路徑36用簡單的遞歸定義來實(shí)現(xiàn)。偽隨機(jī)路徑在實(shí)施例中,可以使用偽隨機(jī)路徑。在這種情況下,可以通過執(zhí)行偽隨機(jī)發(fā)生器算 法來計(jì)算陣列中沿所述路徑的連續(xù)點(diǎn)。優(yōu)選地,使用基于密鑰的偽隨機(jī)算法,其中所產(chǎn)生的 路徑依賴于可以存儲在處理器中、或則在程序產(chǎn)生期間使用的密鑰,否則保持所述密鑰為 保密的。因?yàn)橛糜诋a(chǎn)生路徑的偽隨機(jī)算法可以是公知的,這樣只要保持密鑰是秘密的,就不 會危及處理器的安全。在不同的集成電路中可以使用不同的密鑰,或者在不同組的集成電 路的每一個(gè)中可以使用不同的密鑰。如果所述路徑不局限于陣列中的相鄰點(diǎn)和分離的范圍之間的步長,可以通過使用 任意偽隨機(jī)置換算法(置換算法是這樣一種算法,將來自集合的地址A映射到地址f (A),使 得不會將兩個(gè)地址映射到相同的地址)來實(shí)現(xiàn)這種映射。許多偽隨機(jī)置換算法實(shí)現(xiàn)本質(zhì)上 是已知的,例如線性反饋移位寄存器(LFSR)算法、Xn+1 = A*X+B等等類型的線性迭代公式、 等等。在這種情況下,LFSR的發(fā)生器多項(xiàng)式或值A(chǔ)、B和/或LFSR的初始狀態(tài)可以保持為 集成電路中的密鑰信息。在實(shí)施例中,可以將偽隨機(jī)置換算法與內(nèi)部范圍映射g(f (A))和 范圍選擇映射h(f(A))相結(jié)合,所述內(nèi)部范圍映射從所置換的地址f(A)中得出內(nèi)部范圍地 址,所述范圍選擇映射從所置換的地址f (A)中得出范圍選擇。通過映射到由范圍選擇映射 h沒有選擇的其他范圍使其彼此分離的范圍集合,實(shí)現(xiàn)了更大的模糊性。該內(nèi)部范圍映射可 以是簡單的映射,例如通過從所置換的地址中選擇比特集合獲得。所述范圍選擇映射可以 是類似地簡單,例如獲取所置換地址的其他比特并且通過任意合適的函數(shù)從這些比特計(jì)算 范圍選擇,或者使用查找表確定所述范圍選擇。這種算法可以通過映射電路164中的算法和/或邏輯電路與密鑰存儲器結(jié)合來實(shí) 現(xiàn),所述密鑰存儲器用于提供計(jì)算所需的密鑰??蛇x地,可以預(yù)先執(zhí)行地址的計(jì)算,并且可 以將這些地址存儲在映射電路164中的查找存儲器中。在后一種情況下,可以代替地存儲 真隨機(jī)映射。通常,偽隨機(jī)數(shù)列不會必然地導(dǎo)致與由η維陣列中的鄰居之間的步長組成的路徑 36相對應(yīng)的地址步長。在實(shí)施例中,所述路徑局限于這種步長。這種類型的路徑可以通過向 密鑰流/秘密映射提供針對每一個(gè)地址的η比特密鑰信息來定義(η是陣列維度的個(gè)數(shù)), 所述η比特表示路徑在每一個(gè)點(diǎn)移動(dòng)的方向??梢灶A(yù)先隨機(jī)地或偽隨機(jī)地選擇則這種密鑰 流/秘密映射,限制是定義了沒有返送的路徑。如所述的,偽隨機(jī)算法可以是依賴于(較 小)密鑰的基于密鑰的。所得到的密鑰流/秘密映射可以存儲在集成電路的存儲器中。當(dāng) 更新指令地址時(shí),在處理器中找回針對所述地址的η比特,并且將所述η比特用于確定與下 一個(gè)地址值的步長。
例如,η比特的每一個(gè)可以與由所述比特選擇的各個(gè)步長部分相對應(yīng),以及所述地 址中的步長可以是由所述η比特表示的選定步長部分的總和。這可以使用針對每一個(gè)指令 地址(或指令地址組)存儲η比特密鑰部分的存儲器來在映射電路164、查找電路和加法 器中實(shí)現(xiàn),并且用于通過(一部分)當(dāng)前指令地址進(jìn)行尋址,所述查找電路用于查找與所述 η比特相對應(yīng)的查找步長部分,并且所述加法器用于彼此添加步長部分、并且添加到當(dāng)前指 令地址,以計(jì)算下一個(gè)指令地址。當(dāng)使用η比特密鑰部分時(shí),例如,一個(gè)步長部分可以具有可選擇值加減1,并且另 一個(gè)步長可以具有可選擇值加減地址范圍對之間的距離。可選地,通過使用所述路徑不會 折疊的事實(shí),可以減小每一個(gè)點(diǎn)的密鑰比特個(gè)數(shù)。因此,在二維示例中,每一個(gè)指令地址只 需要編碼三個(gè)步長值,而不是四個(gè)。因此,例如可以使用5個(gè)比特對針對三個(gè)指令地址的步 長值編碼??梢允褂糜糜趥坞S機(jī)地定義η維空間中路徑的任意其他類型算法。通過沿根據(jù)跳轉(zhuǎn)距離(跳轉(zhuǎn)原點(diǎn)和跳轉(zhuǎn)目標(biāo)之間的距離)重復(fù)的路徑計(jì)算和添加 連續(xù)的步長,所述程序流控制單元可以執(zhí)行跳轉(zhuǎn)指令。如這里所使用的,所述跳轉(zhuǎn)指令包括 分支指令。跳轉(zhuǎn)地址計(jì)算具有以下缺點(diǎn)跳轉(zhuǎn)可能遲延處理器。在可選實(shí)施例中,程序流控 制單元包括跳轉(zhuǎn)目標(biāo)存儲器,其中存儲了跳轉(zhuǎn)指令的目標(biāo)地址。例如,可以當(dāng)加載程序時(shí)計(jì) 算跳轉(zhuǎn)指令的目標(biāo)地址。在該實(shí)施例中,當(dāng)程序流控制單元遇到跳轉(zhuǎn)指令時(shí),程序流控制單 元存取跳轉(zhuǎn)目標(biāo)存儲器,并且用跳轉(zhuǎn)目標(biāo)代替當(dāng)前指令地址。在另一個(gè)實(shí)施例中,直接使用來自跳轉(zhuǎn)指令的跳轉(zhuǎn)信息,例如通過向當(dāng)前指令地 址添加來自所述跳轉(zhuǎn)指令的跳轉(zhuǎn)距離,或者用來自所述跳轉(zhuǎn)指令的跳轉(zhuǎn)地址代替當(dāng)前指令 地址。在該實(shí)施例中,可以由預(yù)處理器預(yù)先處理所述程序,以便根據(jù)處理器的密鑰來代替跳 轉(zhuǎn)指令信息。在預(yù)處理期間,所述預(yù)處理器(可以是在任意可編程計(jì)算機(jī)上執(zhí)行的預(yù)處理 程序)檢測預(yù)處理的程序中的跳轉(zhuǎn)指令,計(jì)算根據(jù)所述處理器的密鑰計(jì)算所檢測的指令的 跳轉(zhuǎn)目標(biāo),并且所述預(yù)處理器根據(jù)所計(jì)算的跳轉(zhuǎn)目標(biāo)代替所述跳轉(zhuǎn)指令中的跳轉(zhuǎn)信息。遞歸定義如所注意到的,限定路徑的另一種可能方法是通過遞歸定義。遞歸定義概念上使 用“單元”,即空間的一部分(下文中將單元稱作“方塊”,tiles)??梢远x多個(gè)不同的單 元類型。單元類型的定義限定了所述類型單元的形狀,而沒有規(guī)定其大小,并且定義了如何 將所述類型的每一個(gè)單元細(xì)分為具有更小規(guī)模的各種類型的單元,可選地,細(xì)分為這些單 元的旋轉(zhuǎn)或鏡像版本。通過重復(fù)地應(yīng)用這種細(xì)分,可以將單元分等級地細(xì)分為更多的小單兀。在遞歸定義中,將路徑劃分為各個(gè)單元中的路徑部分,進(jìn)而將所述路徑部分按照 等級細(xì)分方式劃分為更小單元中的更小路徑部分。將確保空間中所有點(diǎn)的完整或近似完整 的覆蓋劃分為逐漸更小規(guī)模的子問題。對于可以將針對單元內(nèi)路徑的入口點(diǎn)和出口點(diǎn)的單 元位置的每一種類型,可以按照單元相對于其角落的邊界處的位置來定義。這樣定義單元 的細(xì)分,使得其入口點(diǎn)和出口點(diǎn)與細(xì)分單元的入口點(diǎn)和出口點(diǎn)相對應(yīng),并且可選擇地在顛 倒了單元中路徑方向之后內(nèi)部出口點(diǎn)和連續(xù)單元的入口點(diǎn)一致。當(dāng)所述空間包含點(diǎn)陣時(shí), 按等級劃細(xì)分的單元包含逐漸更小的子陣列。對于某個(gè)最小尺寸的子陣列,可以明確的定 義路徑,所述路徑覆蓋所述子陣列中的所有點(diǎn)。因此,通過按等級劃分,定義了整個(gè)路徑。盡管已經(jīng)按照單元形式給出了這種定義,應(yīng)該理解的是對于相同路徑的定義可以采取許多形 式。作為一個(gè)示例,可以使用L系統(tǒng)語法。例如,可以通過正方形形狀的方塊類型來定義圖3a的空間填充路徑36。最高級 別的單元(方塊)包含8*8點(diǎn)陣。將最高級別的單元細(xì)分為四個(gè)中等級別的單元,每一個(gè) 中等級別的單元包含4*4子陣列。每一個(gè)中等級別的單元進(jìn)而可以細(xì)分為4個(gè)低級別的方 塊,每一個(gè)低級別的方塊可以包含2*2子陣列??梢酝ㄟ^旋轉(zhuǎn)、鏡像和/或顛倒相同基本路 徑的序列來互動(dòng)偶爾每一個(gè)最低單元中的路徑。可以通過遞歸定義來產(chǎn)生路徑的非限制性變體,對于最小單元通過使用不同形狀 的單元和/或不同的細(xì)分以及不同的明確定義的路徑(可以是比圖3a中示例更大的單元, 例如,可以針對4*4單元或8*8單元清楚地定義路徑)。明確定義的路徑無需局限于具有沿 χ方向和y方向步長的路徑也可以使用對角線步長或?qū)τ诟h(yuǎn)鄰居的步長。此外,不同的 明確定義的路徑可以用于相同點(diǎn)陣中不同位置處的相同類型的單元。盡管為了說明的目的 已經(jīng)針對二維路徑給出了示例,應(yīng)該理解的是可以使用更高維度空間中的路徑??梢酝ㄟ^留下路徑暗示的查找運(yùn)算和/或計(jì)算來將點(diǎn)陣中的坐標(biāo)確定為沿所述 路徑的位置的函數(shù)。根據(jù)s,可以確定在分等級細(xì)分的各種單元中確定所述點(diǎn)。當(dāng)將每一 個(gè)單元分為2的冪(例如4)個(gè)更小單元、并且針對更小的單元定義了 2的冪個(gè)點(diǎn)的路徑,s 的數(shù)字表示比特的連續(xù)組識別了所述點(diǎn)沿位置s處的路徑所定位的單元,并且它們相對于 較大單元的的位置和朝向(例如在圖3a中,s的數(shù)字表示具有6個(gè)比特,最高有效兩個(gè)比 特確定了 4*4單元,中間兩個(gè)比特確定了所述4*4單元內(nèi)的2*2單元,最低有效兩個(gè)比特確 定了所述單元內(nèi)的位置)。更一般的,沿所述路徑在位置s處的點(diǎn)所歸屬的最高級別單元的 指數(shù)s(0)是根據(jù)s/N(l)的整數(shù)部分得出的,s除以下一個(gè)較低級別單元中的點(diǎn)N(I)的個(gè) 數(shù)。所述點(diǎn)所歸屬的下一個(gè)較低級別單元的指數(shù)s(l)是根據(jù)余數(shù)的整除R(l)/N(l)得出 的,即余數(shù)R(I) =S-N⑴*s(0)除以下一個(gè)較低級別單元中的點(diǎn)的個(gè)數(shù),以此類推。如上 所述,當(dāng)N(i)是2的冪時(shí),這總計(jì)區(qū)來自s的數(shù)字表示的比特組。每一個(gè)單元中級別“i” 的點(diǎn)的個(gè)數(shù)N(i)可以由細(xì)分為較低級別單元的點(diǎn)的個(gè)數(shù)N(i+1)的總和來確定的??梢栽诓檎冶黼娐分斜硎舅黾?xì)分的定義,所述查找表電路存儲針對細(xì)分的每一 個(gè)單元(由c所標(biāo)記的這些單元的指數(shù))的信息P(C),表示單元的類型、相對于進(jìn)行細(xì)分的 較大單元的位置、相對于該較大單元的朝向以及其中單元中的路徑相對于較大單元所遵循 的方向(向后或向前)??蛇x地,P也可以依賴于所細(xì)分的單元的類型??梢允褂迷搯卧?的指數(shù)s(0)在查找表電路中獲得針對最高級別單元的信息P(s(0))??梢詫⑾乱粋€(gè)m比特 用于查找針對細(xì)分的下一個(gè)較低級別處的單元的類似信息P (s (a))。與表示相對于最高級 別單元中細(xì)分時(shí)的前一個(gè)級別單元的位置、相對朝向和路徑方向的信息Q(O)相結(jié)合,可以 將該信息P’用于確定信息Q(I) =f(Q(0),P(s(l))),表示下一個(gè)較低級別處的單元相對于 最高級別單元的位置、朝向和路徑方向,對于由“i”表示的連續(xù)級別處的信息Q(i)以此類 推。函數(shù)“f”表示偏移、旋轉(zhuǎn)和路徑方向的合成物,并且可以通過算法計(jì)算或通過查找(可 以與P的查找相結(jié)合)來確定。因此,可以從指數(shù)s(i)獲得陣列中的位置,例如s的數(shù)字 表示的連續(xù)比特組??蛇x地,遞增計(jì)算可以用于沿所述路徑的連續(xù)點(diǎn)。如可以理解的,每次當(dāng)遞增s 時(shí),只有最低級別指數(shù)s(i)(例如,來來自s的數(shù)字表示的比特組)改變。當(dāng)對于較高級別
15“i”的指數(shù)沒有改變時(shí),對于這些較高級別的信息Q(i)也不會改變。在這種情況下,對于沿 路徑的位置S在陣列中的位置可以通過對于位置S-I更新前一個(gè)位置由最低級別信息P確 定的偏移、或者通過將來自該最低級別的偏移添加至最低級別單元的基本點(diǎn)來更新。只需 要對值S中的選定步長更新對于其他級別的信息Q(I’)。當(dāng)發(fā)生這種步長時(shí)可以預(yù)先計(jì)算 對于各種級別的未來值Q(i)來使用,或者當(dāng)發(fā)證這種步長時(shí)計(jì)算所述未來值。應(yīng)該強(qiáng)調(diào)的是,對于指令地址的映射,路徑只是作為形象化而是重要的。陣列中的 點(diǎn)的一個(gè)坐標(biāo)的一部分白哦是目標(biāo)地址范圍中的位置,并且其余部分和其余一個(gè)或更多坐 標(biāo)表示范圍的選擇,即所述范圍的基本地址。原始指令地址A與沿所述路徑的位置“S”相 對應(yīng),例如根據(jù)s = Α-Α0,其中AO是基本地址。因此,所述查找信息P和函數(shù)f定義了范圍 選擇和范圍中位置作為原始指令地址A的函數(shù)。保密性當(dāng)定義了所述映射的相關(guān)信息已知時(shí),當(dāng)然可以重構(gòu)程序序列。為了防止這種情 況,優(yōu)選地,通過將所述信息包括在程序流控制單元中使得不能容易地讀出所述信息,將所 述信息保持為秘密的。為了改善秘密的保護(hù),可以將不同的映射以及因此不同重新排序的 程序用于不同的集成電路或集成電路組。為了實(shí)現(xiàn)較大范圍的可能映射,可以使用具有最低級別信息P的相對較大的單 元,所述最低級別信息P定義了用于不同處理器的不同基本路徑。在一個(gè)實(shí)施例中,可以將 整個(gè)地址空間作為一個(gè)這種最低級別單元處理,使得有效地使用了無(多級別)遞歸定義。按照圖3a示例的形式,例如,可以使用8*8個(gè)點(diǎn)的最低級別單元(方塊),具有定 義了沿所述單元中的路徑的連續(xù)位置的查找電路。處理器的查找電路中的信息使得能夠執(zhí) 行已經(jīng)重新排序的程序。為了進(jìn)一步改善秘密性,優(yōu)選地,在相同映射的不同單元中使用不同的基本路徑。 這與使用大量不同類型的、具有可替換的不同基本路徑的單元相對應(yīng),盡管這些單元可以 具有相同的形狀??蛇x地,這可以在多個(gè)級別的單元中進(jìn)行。如果在將程序分布至處理器 之前根據(jù)相應(yīng)的映射重新排序了處理器的程序,在細(xì)分時(shí)替換單元類型的使用以及各種基 本路徑的定義二者可以在處理器內(nèi)保持為秘密的。按照這種方式,可以將所述程序劃分為多個(gè)指令地址的序列,在秘密信息的控制 下將所述指令地址映射到目標(biāo)地址??梢詫⒚孛苄畔⒌牟煌糠钟糜谙鄳?yīng)的序列,使得針 對每一個(gè)序列的秘密信息只影響所述序列。按照這種方式,一個(gè)序列的指令重構(gòu)使得不能 重構(gòu)其他序列。用于遞歸映射的硬件修改如上所述,使用空間填充路徑的模糊可以用于轉(zhuǎn)換所述程序,包括從塊的末端向 修改的地址添加分支指令。在這種情況下,可以使用如圖Ia所示的程序流控制單元。在可 選實(shí)施例中,數(shù)據(jù)處理設(shè)備可以適用于執(zhí)行地址映射的一部分。在這種情況下,程序轉(zhuǎn)換可 以重新排列一部分程序,而不會包括附加信息。在這種情況下,可以使用如圖Ia或Ib所示 的程序流控制單元。在一個(gè)實(shí)施例中,根據(jù)利用根據(jù)L算法的遞歸定義獲得的地址映射來重新排列指 令。在該實(shí)施例中,程序流控制單元16可以具有堆棧結(jié)構(gòu),配置用于根據(jù)利用所述遞歸定 義獲得的地址映射來更新用于獲得連續(xù)的指令的地址。
圖4示出了程序流控制單元的實(shí)施例的示例,用于使用空間填充路徑執(zhí)行更新。 所述程序流控制單元包括第一查找表電路(LUT電路40和第二查找表電路(LUT電路42), 所述第一查找表電路定義了沿通過最小尺寸方塊的路徑的位置,以及所述第二查找表定義 了在較大方塊的細(xì)分時(shí)與連續(xù)方塊有關(guān)的信息。另外,程序流控制單元16包括加法器43、 地址寄存器44、路徑計(jì)數(shù)器45、堆棧存儲器16a、堆棧更新電路47、分支指令處理器48和多 路復(fù)用器49。地址寄存器44具有與加法器43的第一輸入相連的輸出。加法器43具有輸出,所 述輸出形成程序流控制單元的指令地址輸出,并且與地址寄存器44的輸入相連。分支指令 處理器48具有用于接收分支指令的輸入和與路徑計(jì)數(shù)器45相連的輸出。在操作時(shí),在連續(xù)的指令周期將指令地址連續(xù)地存儲在地址寄存器44中。分支指 令處理器48檢測從指令發(fā)布電路(未示出)接收的指令是否包括分支命令。如果沒有檢 測到分支,加法器43通過增加來自第一 LUT電路40的增量來計(jì)算指令地址。堆棧存儲器46具有與第二 LUT電路42相連的輸出。第二 LUT電路42和路徑計(jì) 數(shù)器45具有與第一 LUT電路40相連的輸入。第一 LUT電路40具有與加法器43的第二輸 入以及堆棧更新電路47相連的輸出。第二 LUT電路具有經(jīng)由堆棧更新電路47與堆棧存儲 器46的輸入相連的輸出。第一 LUT電路40根據(jù)最小尺寸的方塊中的空間填充路徑來存儲所述地址的遞增 值。第一 LUT電路40也在方塊中存儲路徑末端的指示。路徑計(jì)數(shù)器45表示去往第一 LUT 電路40的路徑中的位置,以及第二 LUT電路42表示路徑的類型和朝向。結(jié)果,第一 LUT電 路40向加法器43輸出增量值,其中將所述增量值增加到來自地址寄存器44的地址值。第二 LUT電路42針對每一種類型的方塊,在較大方塊的細(xì)分時(shí)存儲與連續(xù)方塊的 類型、相等朝向等有關(guān)的信息P。在實(shí)施例中,堆棧存儲器46中的信息可以是數(shù)據(jù)(T、A、I) 的組合,其中T表示方塊的類型,A表示方塊的朝向,以及I表示方塊的細(xì)分中的指數(shù)。可 以針對連續(xù)的較大方塊存儲這種組合。堆棧存儲器46向第二 LUT電路42輸出與當(dāng)前方塊 有關(guān)的信息。在操作期間,在每一個(gè)指令周期中遞增路徑計(jì)數(shù)器45。一旦來自路徑計(jì)數(shù)器45的 計(jì)數(shù)達(dá)到與最小尺寸方塊中的路徑末端相對應(yīng)的計(jì)數(shù)值,第一 LUT電路40向堆棧更新電路 47提供該指示。作為響應(yīng),堆棧更新電路47更新堆棧存儲器46中的堆棧頂部處的方塊。 除非第二 LUT電路42表示指數(shù)值與細(xì)分中的最終方塊相對應(yīng),這可以通過在細(xì)分時(shí)遞增所 述指數(shù)I來實(shí)現(xiàn)。當(dāng)遞增所述指數(shù)時(shí)具有以下效果第二 LUT電路42向第一 LUT電路40 輸出下一個(gè)方塊的類型和朝向。當(dāng)所述指數(shù)值與細(xì)分時(shí)的最終方塊相對應(yīng)時(shí),堆棧更新電路47遞歸地操作。將所 述頂部級別處理作第一級別,并且將堆棧的頂部級別的下一個(gè)級別處理作第二較低級別。 如果可能,堆棧更新電路47在該第二較低級別處的信息中遞增所述指數(shù),并且響應(yīng)于該遞 增指數(shù)使用第二 LUT電路42來選擇第一級別處的信息,將第一級別處的指數(shù)設(shè)置為器原始 值。如果第二較低級別處的指數(shù)也在范圍的末端,將該操作應(yīng)用為第二較低級別作為第一 級別,以及將下一個(gè)較低級別作為第二較低級別,并且遞歸地以此類推。當(dāng)分支指令處理器48檢測到從指令發(fā)布電路(未示出)接收的指令包括分支命 令時(shí),所述分支指令處理器計(jì)算路徑計(jì)數(shù)器45和堆棧存儲器46的相應(yīng)內(nèi)容,并且因此當(dāng)執(zhí)行所述分支指令時(shí),代替路徑計(jì)數(shù)器45和堆棧存儲器46中的內(nèi)容??蛇x地,當(dāng)所述分支具 有較小的分支距離時(shí),分支指令處理器48可以使與該距離相對應(yīng)的一系列技術(shù)脈沖應(yīng)用 于路徑計(jì)數(shù)器45,同時(shí)禁用相應(yīng)介入指令的執(zhí)行。為了減小執(zhí)行分支所需的時(shí)間,分支指令可以包括表示所述分支之后的堆棧內(nèi)容 和路徑計(jì)數(shù)值的參數(shù)。在應(yīng)用這種替代方案實(shí)施例中,分支指令處理器48可以配置用于在 分支指令的控制下,將來自分支指令的數(shù)據(jù)加載到路徑計(jì)數(shù)器45和堆棧存儲器46中。應(yīng)該理解的是,圖4的電路具有以下效果確定下一個(gè)指令地址所需要的時(shí)間可 以依賴于是否到達(dá)各個(gè)級別處的方塊末端或者是否執(zhí)行分支指令來變化。如果發(fā)生這種情 況,堆棧更新電路47可以配置用于發(fā)布遲延信號,以遲延數(shù)據(jù)處理電路的操作。圖5示出了程序流控制單元,包括計(jì)數(shù)器50、分支執(zhí)行單元52、多個(gè)查找電路54 和多個(gè)組合器電路56、58。計(jì)數(shù)器50具有針對連續(xù)計(jì)數(shù)比特組的時(shí)鐘輸入CL和輸出,與相 應(yīng)的查找電路54相連。分支執(zhí)行單元52接收用于計(jì)算分支目標(biāo)的計(jì)數(shù)比特組(為了清楚 起見,沒有明確示出連接)。組合器電路56的第一個(gè)具有與用于最高有效比特組的查找電 路54和用于與次高有效比特組的查找電路54的輸出相連的輸入。另一個(gè)組合器電路46、 58每一個(gè)均與計(jì)數(shù)器的比特組相關(guān)聯(lián),并且具有與用于所述比特組的查找表電路54和與 所述次高有效比特組相關(guān)聯(lián)的組合器電路56的輸出相連的輸入。與所述最低有效比特組 相關(guān)聯(lián)的組合器電路56向指令發(fā)布電路(未示出)輸出目標(biāo)地址。在操作時(shí),計(jì)數(shù)器50求和??蛇x地,指令解碼器(未示出)可以用于依賴于指令 長度控制計(jì)數(shù)器的遞增,但是如果所有指令具有相同大小或者這如它們按照相等的距離存 儲,這也不是必須的。不同的查找電路54和組合器電路56、58并行地針對不同級別處的單 元執(zhí)行目標(biāo)地址計(jì)算。查找電路54有效地實(shí)現(xiàn)了信息P作為路徑指數(shù)的函數(shù),以及組合器 電路56、58實(shí)現(xiàn)了合成函數(shù)f(Q,P)的應(yīng)用??蛇x地,查找電路54和組合器電路56、58可 以折疊到一個(gè)查找電路54和組合器電路56、58中,使用用于存儲針對不同級別結(jié)果的寄存 器來連續(xù)的執(zhí)行相應(yīng)的操作。這可能產(chǎn)生圖4的結(jié)構(gòu)。圖5a示出了所述電路的管線圖,在組合器56、58之間以及針對最高有效比特組的 查找電路54和第一組合器電路之間具有寄存器。在這種情況下,查找電路54、組合器電路 56、58可以配置用于執(zhí)行針對想愛一個(gè)比特組的未來值執(zhí)行查找和組合,所述寄存器響應(yīng) 于所述比特組與所述未來值的迫切轉(zhuǎn)換的檢測,當(dāng)檢測到迫切的轉(zhuǎn)換時(shí)將新的組合器結(jié)果 復(fù)制到寄存器中??蛇x地,圖4和圖5的程序流控制單元的查找電路可以是可熔絲編程的,或者包含 非易失性存儲器,以定義查找函數(shù)。因此,所述處理器可以配置由定義所述映射的秘密信 肩、ο例如,在圖5的程序流控制單元中,可以對針對最低有效比特組的查找電路54編 程,以定義不同類型最低級別單元的多個(gè)替代基本路徑部分。因此,可以通過更高級別查找 電路54實(shí)現(xiàn)的單元類型選擇在映射時(shí)將具有使用不同路徑的效果。類似地,用于更高有效比特組的查找電路54也可以是可編程的,使得可以在不同 的處理器中使用細(xì)分到單元的不同細(xì)分,以定義不同的映射。這使得更加難以重構(gòu)程序??蛇x地或者附加地,通過沿不同裝置中的路徑使用不同的起始點(diǎn),可以在一個(gè)族 中實(shí)現(xiàn)不同的裝置。這可以在程序流控制單元46 (例如ROM)中添加表示對于路徑計(jì)數(shù)器45和堆棧存儲器46中的計(jì)數(shù)的初始值的電路、使得程序流控制單元16在開始執(zhí)行程序之 前加載這些初始值來實(shí)現(xiàn)。其他硬件修改已經(jīng)將圖4和圖5用于說明其中映射了所有指令的地址的實(shí)施例。作為替代實(shí)施 例,可以只映射分支目標(biāo)。在這種情況下,每一個(gè)分支指令可以包括目標(biāo)個(gè)數(shù)。分支指令處 理器48執(zhí)行將該個(gè)數(shù)轉(zhuǎn)換為地址的計(jì)算,如在圖4的上下文中針對分支所描述的。作為另 一個(gè)實(shí)施例,可以將映射只用于一部分指令地址,其余的不進(jìn)行映射的來使用。在實(shí)施例 中,只映射比特組(例如,16個(gè)比特),無需映射的使用程序計(jì)數(shù)器的更高有效比特。這使 得可以利用有效量的電路來映射較大的地址空間,將仍然可以模糊本地程序結(jié)構(gòu)。例如,可 以將最低有效的η比特進(jìn)行映射以使得程序極度難解,或者可以對兩個(gè)有效級別之間的比 特進(jìn)行映射,使得將緩存本地性保留用于更低的有效比特??梢詫⒘硗獾拇胧┯糜诟M(jìn)一步的模糊所述程序。因此,可以在分布之前對指令 進(jìn)行加密,并且在執(zhí)行之前在指令發(fā)布電路中進(jìn)行解密。根據(jù)對于附圖、公開和所附權(quán)利要求的研究,本領(lǐng)域普通技術(shù)人員在實(shí)現(xiàn)所要求 權(quán)利要求的本發(fā)明時(shí)可以理解和實(shí)現(xiàn)所公開實(shí)施例的變體。在權(quán)利要求中,詞語“包括”不 排除存在其他元件和步驟,并且不定冠詞“a”或“an”不排除多個(gè)。單一的處理器或其他但 愿可以滿足在權(quán)利要求中引用的幾個(gè)條目的功能。在相互不同的從屬權(quán)利要求中引用的特 定措施并不表示不能有利地使用這些措施的組合??梢詫⒂?jì)算機(jī)程序存儲/分布在合適的 介質(zhì)上,例如光學(xué)存儲介質(zhì)或與其他硬件一起或作為其他硬件一部分的固態(tài)介質(zhì),但是也 可以按照其他形式分布,例如經(jīng)由英特網(wǎng)或者其他有線或無限電信系統(tǒng)。權(quán)利要求中的任 意參考符號不應(yīng)該解釋為限制范圍。
權(quán)利要求
一種轉(zhuǎn)換可編程處理器的程序指令的方法,所述方法包括重新排序所述指令的序列,從而將原始指令地址映射到相應(yīng)的目標(biāo)地址,所述序列(30)包括連續(xù)的子序列,所述方法包括將所述序列的每一個(gè)子序列(32)映射到相互打亂順序的范圍(33a d)的相應(yīng)集合中的地址,通過與所述子序列所映射的其他范圍與所述相互打亂順序的范圍相分離;用來自所述子序列(32)的指令填充所述相互打亂順序的范圍的相應(yīng)集合中的每一個(gè)打亂順序范圍(33a d)的至少一半;提供針對每一個(gè)子序列(30)所映射的原始指令地址的連續(xù)地址的目標(biāo)地址之間的地址步長(34),用于所述子序列的所述地址步長(34)包括所述相互打亂順序范圍(33a d)的至少第一范圍內(nèi)的第一地址步長以及所述相互打亂順序范圍(33a d)的至少第二范圍內(nèi)的第二地址步長。
2.根據(jù)權(quán)利要求1所述的方法,其中原始指令地址與目標(biāo)地址的映射與將連續(xù)的原始 指令地址映射到沿η維陣列中的路徑(36)的連續(xù)位置相對應(yīng),其中η大于1,以及與將沿所 述陣列的相應(yīng)行、行組或行部分的位置映射到相互打亂順序的范圍(33a-d)的相應(yīng)一個(gè)相 對應(yīng),所述路徑(36)包括陣列中相鄰位置之間的步長,所述路徑訪問所述陣列的每一行的 至少一半的點(diǎn)。
3.根據(jù)權(quán)利要求1所述的方法,包括在可編程計(jì)算機(jī)上執(zhí)行已轉(zhuǎn)換的程序,所述可編 程計(jì)算機(jī)包括用于緩存指令的緩存存儲器(120),所述緩存存儲器(120)具有大于或等于 相互打亂順序的范圍(33a-d)的大小之和的大小。
4.根據(jù)權(quán)利要求3所述的方法,包括緩存控制器(122),配置用于基于指令組來管理所 述緩存存儲器中指令的保持,每一組具有相同的組大小,相互打亂順序的范圍(33a-d)的 大小至多等于所述組大小。
5.根據(jù)權(quán)利要求1所述的方法,其中對于兩個(gè)范圍(33a-d)的每一種組合,所述組合的 范圍(33a-d)之間的地址步長(34)具有與所述組合的范圍(33a-d)之間的所有步長(34) 相同的大小。
6.根據(jù)權(quán)利要求1所述的方法,其中所述范圍(33a-d)內(nèi)的地址步長都具有相同的大
7.根據(jù)權(quán)利要求1所述的方法,其中一對范圍(33a-d)之間的所有地址步長將通過 所述對中的第一范圍(33a_d)內(nèi)的地址步長相連的目標(biāo)地址與通過所述對中的第二范圍 (33a-d)內(nèi)的地址步長相連的目標(biāo)地址相連接。
8.根據(jù)權(quán)利要求1所述的方法,其中利用相等的頻率產(chǎn)生相反符號的地址步長。
9.根據(jù)權(quán)利要求1所述的方法,包括用跳轉(zhuǎn)目的地的目標(biāo)地址或與所述目標(biāo)地址的距 離來替代程序的跳轉(zhuǎn)指令中的分支跳轉(zhuǎn)目的地或跳轉(zhuǎn)距離信息。
10.根據(jù)權(quán)利要求1所述的方法,包括在包括程序流控制單元(16)的可編程計(jì)算機(jī) 上執(zhí)行已轉(zhuǎn)換的程序,所述程序流控制單元配置用于確定連續(xù)原始指令地址的目標(biāo)地址, 并且配置用于使用所述目標(biāo)地址對連續(xù)尋址的指令進(jìn)行尋址。
11.根據(jù)權(quán)利要求8所述的方法,其中所述程序流控制單元(16)包括查找存儲器 (164),所述程序流控制單元(16)使用從查找存儲器(164)查找的相應(yīng)信息確定對于相應(yīng) 指令的目標(biāo)地址。
12.根據(jù)權(quán)利要求8所述的方法,包括提供具有相同結(jié)構(gòu)的處理電路族,但是所述處理 電路族配置用于根據(jù)相互不同的映射來確定連續(xù)原始指令的目標(biāo)地址,以及針對所述族的 不同處理電路而不同地轉(zhuǎn)換所述程序。
13.根據(jù)權(quán)利要求8所述的方法,其中所述程序流控制單元(16)包括分支目標(biāo)查找存 儲器,針對相應(yīng)的跳轉(zhuǎn)指令存儲跳轉(zhuǎn)指令的目標(biāo)地址和/或與跳轉(zhuǎn)指令的目標(biāo)地址的跳轉(zhuǎn) 距離,所述程序流控制單元配置用于檢測跳轉(zhuǎn)指令,配置用于響應(yīng)于所述跳轉(zhuǎn)指令,從所述 分支目標(biāo)查找存儲器中找回跳轉(zhuǎn)指令的目標(biāo)地址和/或跳轉(zhuǎn)距離,并且配置用于根據(jù)所找 回的跳轉(zhuǎn)指令的目標(biāo)地址和/或跳轉(zhuǎn)距離改變程序流。
14.根據(jù)權(quán)利要求1所述的方法,其中基于具有連續(xù)級別單元的等級來計(jì)算所述目標(biāo) 地址,每一個(gè)單元與相應(yīng)的范圍集合相對應(yīng),連續(xù)較低級別處的單元與作為較高級別處的 單元集合子集的范圍子集相對應(yīng),所述等級中的單元與指數(shù)相關(guān)聯(lián),所述方法包括提供細(xì)分信息,所述細(xì)分信息定義了范圍集合作為所述指數(shù)值的函數(shù); 提供路徑信息,所述路徑信息定義了相應(yīng)的目標(biāo)地址,在最低級別單元的范圍集合內(nèi) 將所述指數(shù)的相應(yīng)值映射到所述目標(biāo)地址;針對所述原始指令地址的至少一個(gè),得出所述指數(shù)值的集合; 使用所述指數(shù)值的集合來存取所述細(xì)分信息,以對所述細(xì)分信息進(jìn)行索引; 對來自不同級別的已存取細(xì)分信息進(jìn)行組合,以定義對于所述至少一個(gè)原始指令地址 的最低級別單元的范圍集合;使用所述指數(shù)值的集合來存取所述路徑信息,以對所述路徑信息進(jìn)行索引; 使用所存取的路徑信息,在通過組合所存取的細(xì)分信息所定義的范圍集合內(nèi)選擇針對 所述至少一個(gè)原始指令地址的目標(biāo)地址。
15.根據(jù)權(quán)利要求14所述的方法,包括提供在所述路徑信息中所包括的選項(xiàng),所述選項(xiàng)定義了在相應(yīng)的目標(biāo)地址與所述指數(shù) 值之間的多個(gè)相互明確的可替代關(guān)系;對分別針對相互不同的原始指令地址而獲得的相應(yīng)已存取細(xì)分信息進(jìn)行組合; 使用已組合的已存取細(xì)分信息控制所述選項(xiàng)的相應(yīng)不同一選項(xiàng)的選擇,用于確定針對 原始指令地址的相互不同地址的目標(biāo)地址。
16.根據(jù)權(quán)利要求14所述的方法,包括提供處理電路族,每一個(gè)處理電路包括程序流 控制電路,所述程序流控制電路包括細(xì)分信息和路徑信息,所述族的不同處理電路包括相 互不同的路徑信息。
17.一種計(jì)算機(jī)產(chǎn)品,包括指令程序,當(dāng)可編程計(jì)算機(jī)執(zhí)行所述指令程序時(shí),使得所述 可編程計(jì)算機(jī)執(zhí)行根據(jù)任一前述權(quán)利要求所述的方法。
18.一種數(shù)據(jù)處理設(shè)備,包括可編程處理器,所述可編程處理器包括 功能單元(14),用于執(zhí)行來自存儲器(10)的指令;地址輸出,用于向所述存儲器(10)提供指令的目標(biāo)地址;程序流控制單元(16),配置用于確定用于提供給所述地址輸出的目標(biāo)地址,所述程序 流控制單元(16)配置用于在所述程序中的邏輯上連續(xù)的位置處引入依賴于指令的目標(biāo)地 址之間的大小和/或方向的位置地址步長,其中所述程序流控制單元(16)配置用于利用針對連續(xù)的原始指令地址確定的目標(biāo)地址之間的連續(xù)地址步長(34),確定針對連續(xù)原始指令地址的相應(yīng)目標(biāo)地址集合,所述相應(yīng) 的目標(biāo)地址集合位于多個(gè)非重疊地址范圍(33a_d)中,所述相應(yīng)目標(biāo)地址集合用多個(gè)指令 填充所述相互不重疊范圍(33a_d)的每一個(gè)的至少一半,所述連續(xù)的地址步長(34)包括所 述相互不重疊范圍(33a_d)的至少第一范圍內(nèi)的第一地址步長和至少第二范圍內(nèi)的第二 地址步長。
19.根據(jù)權(quán)利要求17所述的數(shù)據(jù)處理設(shè)備,其中原始指令地址與目標(biāo)地址之間的關(guān)系 與將連續(xù)的原始指令地址映射到沿η維陣列的中的點(diǎn)的路徑(36)中的連續(xù)位置相對應(yīng),其 中η大于1,以及與將沿所述陣列的相應(yīng)行、行組或行部分的位置映射到相互不重疊的范圍 (33a-d)的相應(yīng)范圍相對應(yīng),所述路徑包括陣列中相鄰位置之間的步長,訪問所述陣列的每 一行的至少一半的點(diǎn)。
20.根據(jù)權(quán)利要求18所述的數(shù)據(jù)處理設(shè)備,其中所述程序流控制單元(16)包括用于表 現(xiàn)可編程秘密信息的電路,所述程序流控制單元配置用于依賴于所述秘密信息來選擇地址 步長。
21.根據(jù)權(quán)利要求20所述的數(shù)據(jù)處理設(shè)備,其中所述連續(xù)原始指令地址的序列(32)是 超級序列(30)的適當(dāng)子集,所述超級序列還包括在所述秘密信息的控制下映射到目標(biāo)地 址的指令地址的另外序列,至少所述相互不重疊范圍內(nèi)的映射由不影響所述另外序列的映 射的一部分秘密信息來控制。
22.根據(jù)權(quán)利要求18所述的數(shù)據(jù)處理設(shè)備,其中所述指令的序列(32)是超級序列 (30)的適當(dāng)子集,所述超級序列(30)還包括映射到另外地址范圍中的目標(biāo)地址的指令地 址的另外序列,所述非重疊地址范圍(33a-d)通過所述另外的地址范圍相互分離。
23.根據(jù)權(quán)利要求18所述的數(shù)據(jù)處理設(shè)備,其中所述程序流控制單元(16)配置用于確 定連續(xù)的原始指令地址的目標(biāo)地址,并且配置用于使用所述目標(biāo)地址對連續(xù)尋址的指令進(jìn) 行尋址。
24.根據(jù)權(quán)利要求23所述的數(shù)據(jù)處理設(shè)備,其中所述程序流控制單元(16)包括查找存 儲器(161、164),所述程序流控制單元(16)配置用于使用從所述查找存儲器(161、164)查 找的相應(yīng)信息來確定針對每一個(gè)相應(yīng)指令的目標(biāo)地址。
25.根據(jù)權(quán)利要求18所述的數(shù)據(jù)處理設(shè)備,配置用于基于連續(xù)級別單元的等級來確定 目標(biāo)地址,每一個(gè)單元與相應(yīng)的范圍集合相對應(yīng),連續(xù)較低級別中的單元與作為較高級別 處的單元集合子集的范圍子集相對應(yīng),所述等級中的單元與指數(shù)相關(guān)聯(lián),所述設(shè)備包括程序計(jì)數(shù)器;查找電路,提供細(xì)分信息和路徑信息,所述細(xì)分信息定義了所述范圍集合作為所述指 數(shù)值的函數(shù),所述路徑信息定義了在最低級別單元的范圍集合內(nèi)將相應(yīng)指數(shù)值所映射的相 應(yīng)目標(biāo)地址,所述查找電路具有與所述程序計(jì)數(shù)器相連的輸入,用于接收指數(shù)值;組合電路,配置用于對在程序計(jì)數(shù)器的控制下已經(jīng)存取的不同級別的細(xì)分信息進(jìn)行組 合,以定義針對至少一個(gè)所述原始指令地址的最低級別單元的范圍集合,并且配置用于組 合所存取的路徑信息,以用于通過組合所存取的細(xì)分信息而限定的范圍結(jié)合內(nèi),針對所述 至少一個(gè)原始指令地址選擇目標(biāo)地址。
26.根據(jù)權(quán)利要求25所述的數(shù)據(jù)處理設(shè)備,其中所述查找電路配置用于提供針對路徑 信息的選項(xiàng),所述選項(xiàng)定義了在相應(yīng)的目標(biāo)地址和指數(shù)值之間的多個(gè)相互明確可替代的關(guān)系,所述組合電路配置用于對針對相互不同的原始指令地址獲得的相應(yīng)已存取細(xì)分信息 進(jìn)行組合,并且配置用于使用已組合的相應(yīng)已存取細(xì)分信息來控制所述不同選項(xiàng)的選擇, 用于針對相互不同的原始指令地址確定目標(biāo)地址。
全文摘要
通過重新排序指令對程序進(jìn)行模糊。將原始指令地址映射到目標(biāo)地址。通過將指令序列的目標(biāo)地址限制到目標(biāo)地址的有限打亂順序范圍(33a-d)的集合,實(shí)現(xiàn)了緩存的有效模糊程序,所述范圍至少填充了一半指令。將所映射的地址步長(34)提供在連續(xù)的原始指令地址所映射的目標(biāo)地址之間。所述地址步長(34)包括相互打亂順序的范圍(33a-d)的至少第一范圍內(nèi)的第一地址步長。在所述第一地址步長之間,是所述相互打亂順序范圍(33a-d)的至少第二范圍內(nèi)的第二地址步長。因此,實(shí)現(xiàn)了針對邏輯連續(xù)的指令得出連續(xù)地址。在實(shí)施例中,原始指令地址到目標(biāo)地址的映射可以通過沿n維陣列中的點(diǎn)的路徑(36)來形象化,其中n大于1。將連續(xù)原始指令映射到所述路徑中的位置,并且將沿所述陣列的相應(yīng)行的位置映射到相互打亂順序范圍(33a-d)中的相應(yīng)范圍。因?yàn)槭褂胣維路徑,保留了用于提供緩存效率的本地性形式,而所述路徑的多維本性使得可以將這種本地性與偽隨機(jī)步長相結(jié)合。
文檔編號G06F21/14GK101939749SQ200980104710
公開日2011年1月5日 申請日期2009年2月9日 優(yōu)先權(quán)日2008年2月11日
發(fā)明者馬克·沃克萊爾 申請人:Nxp股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
宜川县| 清水县| 蕉岭县| 吉安县| 社会| 方城县| 松滋市| 梧州市| 喜德县| 昌图县| 榆树市| 德江县| 独山县| 丰城市| 楚雄市| 九台市| 鲜城| 瑞丽市| 南木林县| 平安县| 乐昌市| 阿图什市| 延安市| 华宁县| 乌恰县| 永仁县| 眉山市| 鹤庆县| 高唐县| 临颍县| 张北县| 渝中区| 松滋市| 昌吉市| 灌阳县| 边坝县| 赣州市| 平顺县| 吉隆县| 大同县| 建瓯市|