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

短指針的制作方法

文檔序號:6494620閱讀:343來源:國知局
短指針的制作方法
【專利摘要】數(shù)字處理器在存儲器中存儲不同大小的指針。特別地,處理器執(zhí)行指令以存儲長指針或短指針。長指針指示存儲器的邏輯地址空間中的任何地址,而短指針僅指示那個空間的子集中的任何地址。但是,短指針在存儲于存儲器中時在大小上小于長指針。因此,長指針支持相對較大的地址范圍能力,而短指針使用較少的存儲器。處理器還執(zhí)行指令以將長指針或短指針載入到寄存器堆,并且以當(dāng)執(zhí)行其它指令時不需要處理器區(qū)分不同的指針的方式來這么做。特別地,處理器將長和短指針轉(zhuǎn)換為公共格式以便載入到寄存器堆,并將采用公共格式的指針轉(zhuǎn)換回長指針或短指針以便存儲到存儲器中。
【專利說明】短指針
【技術(shù)領(lǐng)域】
[0001]本發(fā)明通常涉及存儲器中指針的存儲,更特別地,涉及配置為在存儲器中存儲不同大小的指針的方法和裝置。
【背景技術(shù)】
[0002]為了執(zhí)行具體的任務(wù),數(shù)字處理器執(zhí)行指令序列。這些指令;作為任務(wù)的一部分所使用、操縱或產(chǎn)生的任何數(shù)據(jù);以及任何其它相關(guān)信息都存儲于處理器可訪問的存儲器中。當(dāng)執(zhí)行存儲指令時,處理器在存儲器中存儲信息。當(dāng)執(zhí)行載入指令時,處理器從存儲器檢索信息并將其載入到寄存器堆(register file)中。這種寄存器堆包括在由處理器實現(xiàn)的指令集架構(gòu)中指定的寄存器。
[0003]指令指示的一個或多個地址指明了與執(zhí)行指令相關(guān)的特定存儲器位置。例如,存儲指令指示的地址指明了要存儲信息的存儲器位置。載入指令指示的地址指明了要從其中檢索信息的存儲器位置。
[0004]出于多種原因,包括安全、多程序設(shè)計和其它原因,指令不指示存儲器的實際物理地址;就是說,訪問存儲器的地址總線上呈現(xiàn)的實際地址。相反,指令指示存儲器的所謂邏輯地址,并且處理器和存儲器之間的存儲器管理單元將邏輯地址轉(zhuǎn)化為物理地址,反之亦然。存儲器的所有邏輯地址的集合構(gòu)成了那個存儲器的邏輯地址空間。
[0005]指針是一種數(shù)據(jù)結(jié)構(gòu),其值是存儲在存儲器的其它地方的另一個值的邏輯地址。因此,指針使用那個值的邏輯地址指示(即,指向)另一個值。慣例規(guī)定數(shù)字處理器使用某些固定大小的指針,并且此大小允許任何給定的指針指示存儲器邏輯地址空間中的整個范圍的邏輯地址。例如,數(shù)字處理器可以使用固定大小為32位的指針,其允許指針指示具有4千兆字節(jié)(GB)邏輯地址空間的存儲器中的任何邏輯地址。
[0006]限制數(shù)字處理器使用具有單一的固定大小的指針顯然精簡了處理器的指令集架構(gòu)。但是,該限制同樣人為地增加了存儲指針?biāo)璧拇鎯ζ魅萘亢蛶?。即使特定的指針不需要指示存儲器邏輯地址空間的整個范圍,指針還是必須具有與需要指示全部區(qū)域的另一個指針相同的固定大小。

【發(fā)明內(nèi)容】

[0007]本文的教導(dǎo)有利地包括操作為在存儲器中存儲不同大小的指針的數(shù)字處理器。所謂的長指針指示存儲器邏輯地址空間中的全部范圍的邏輯地址,而短指針僅指示那些邏輯地址的子集。短指針相應(yīng)地相對于長指針在存儲于存儲器中時在大小上較小。因此,在需要時,長指針支持相對大的地址范圍能力,而當(dāng)?shù)刂贩秶囊笙鄬^小時,短指針使用較少的存儲器。
[0008]在一些實施例中,例如,數(shù)字處理器配置為執(zhí)行在存儲器中存儲長指針的指令,并且還配置為執(zhí)行在存儲器中存儲短指針的指令。長指針指示存儲器的邏輯地址空間中的任何地址,但是其在存儲于存儲器時在大小上相對于短指針而言較大。相反地,短指針指示邏輯地址空間的子集中的任何地址,但是其當(dāng)存儲于存儲器中時在大小上相對于長指針而言有利地較短。
[0009]處理器還配置為執(zhí)行將長指針載入到寄存器堆(其包括在處理器的指令集架構(gòu)中指定的寄存器)的指令,并執(zhí)行將短指針載入到寄存器堆的指令。不管是載入長指針還是短指針,處理器都將指針轉(zhuǎn)換為公共格式以載入到寄存器堆。這樣,處理器無需在執(zhí)行隨后的指令時另外區(qū)分長指針和短指針。當(dāng)然,盡管如此,為了區(qū)分存儲于存儲器中時的長指針和短指針,處理器將公共格式的指針轉(zhuǎn)換為長指針或短指針以便存儲于存儲器中。
[0010]在至少一些實施例中,例如為達到與存儲器或寄存器堆相關(guān)聯(lián)的某些預(yù)定結(jié)果的需求,通過添加或移除填充(padding),處理器在公共格式和長短指針之間進行轉(zhuǎn)換。例如,如需要使得指針以預(yù)定大小載入到與公共格式相關(guān)聯(lián)的寄存器堆中,處理器可以從長或短指針中添加或移除填充。相反地,處理器可以從公共格式的指針添加或移除填充,如需要使得長或短指針以使得存儲器訪問更有效率的預(yù)定的對準(zhǔn)存儲在存儲器中。
[0011]此外,在一個或多個實施例中,存儲器的邏輯地址空間包括預(yù)定數(shù)量的邏輯段。這些段中的每一個都包括多個邏輯地址。長和短指針都指示了段中的任何一個,在某種意義上,指針指示的最終邏輯地址可以包含于那些段中的任何一個中。但是,長和短指針的不同在于,長指針指示了段中的任何地址,而短指針僅指示了段的子集中的任何地址。因此,在這些實施例中,短指針指示存儲器邏輯地址空間的子集中的任何地址,其中這些子集包括邏輯存儲器段的不相鄰的部分。
[0012]在一些實施例中,長指針在存儲于存儲器中時具有64位的大小,而短指針具有32位的大小??墒牵?dāng)將指針載入到寄存器堆時,處理器將長和短指針都轉(zhuǎn)換為具有48位的大小的公共格式。
[0013]此外,在至少一個實施例中,處理器實際上配置為執(zhí)行載入或存儲不同類型的短指針的指令,其中,不同類型的短指針指示不同大小的子集中的地址。
[0014]當(dāng)然,處理器還可以配置為執(zhí)行其它指令。即,上述用于載入和存儲指針的指令僅僅表示了處理器實現(xiàn)的指令集架構(gòu)(ISA)中的一些指令。因此,處理器的ISA還可以包括執(zhí)行算術(shù)和邏輯運算的指令,和載入或存儲其它類型數(shù)據(jù)(例如整數(shù))的指令。實際上,在一個或多個實施例中,處理器10配置為執(zhí)行指令以便載入或存儲對應(yīng)于長和短指針的大小的不同大小的整數(shù)。
[0015]在這點上,根據(jù)其關(guān)于整數(shù)和指針的相關(guān)配置,可以更一般地理解數(shù)字處理器。關(guān)于這一點,數(shù)字處理器配置為執(zhí)行指令以載入或存儲不同大小的整數(shù)(例如,64位和32位)。數(shù)字處理器還配置為執(zhí)行指令以載入或存儲對應(yīng)大小的指針(例如,64位和32位)。
[0016]當(dāng)然,本發(fā)明不限于上述特征和優(yōu)點。本領(lǐng)域的普通技術(shù)人員在閱讀了隨后的示例實施例的詳細描述并回顧包含于其中的附圖之后將意識到額外的特征和優(yōu)點。
【專利附圖】

【附圖說明】
[0017]圖1是根據(jù)一個或多個實施例的數(shù)字處理器的框圖,其操作為在邏輯分段的存儲器中存儲指針。
[0018]圖2是圖示根據(jù)一些實施例的由數(shù)字處理器實施的轉(zhuǎn)換過程的框圖,其用于通過添加或移除填充而在公共指針格式和長或短指針之間進行轉(zhuǎn)換。[0019]圖3A-3B是根據(jù)一個或多個實施例,在它們的地址范圍能力方面圖示關(guān)于長和短指針之間的區(qū)別的額外細節(jié)的框圖。
[0020]圖4A-4B是根據(jù)一些實施例,圖示32位短指針和64位長指針的特定實施例的框圖。
[0021]圖5A-5B是根據(jù)一些實施例,圖示不同類型短指針的框圖。
[0022]圖6A-6C是根據(jù)一些實施例,圖示包括自識別位的不同類型的短指針的框圖。
[0023]圖7是根據(jù)一個或多個實施例的由數(shù)字處理器實現(xiàn)的方法的邏輯流程圖,其用于將指針存儲于邏輯分段的存儲器中。
【具體實施方式】
[0024]圖1根據(jù)各實施例描述了數(shù)字處理器10。如圖所示,處理器10在通信上耦合到邏輯分段的存儲器12。處理器10配置為執(zhí)行指令以將信息存儲在此存儲器12中。處理器10還配置為執(zhí)行指令以從存儲器12中檢索信息并將信息載入到寄存器堆14,例如,用于處理。寄存器堆14包括在由處理器10實現(xiàn)的指令集架構(gòu)中指定的寄存器。
[0025]處理器10在存儲器12的邏輯地址而非物理地址空間16中執(zhí)行這些指令。就是說,處理器10執(zhí)行指示了那些存儲器位置的邏輯地址的指令,而不是執(zhí)行指示了與指令相關(guān)的特定存儲器位置的實際物理地址的指令。存儲器管理單元(未示出)將這些邏輯地址轉(zhuǎn)化為物理地址用于實際存儲器的訪問,反之亦然。存儲器12的所有邏輯地址的集合構(gòu)成了那個存儲器12的邏輯地址空間16。因此,此邏輯地址空間16具有預(yù)定大小。
[0026]指針是處理器10存儲于存儲器12中或載入到寄存器堆14中的一種信息類型,通過執(zhí)行指令達到那種效果。指針是一種數(shù)據(jù)結(jié)構(gòu),其值是存儲于存儲器12的其它位置的另一個值的邏輯地址。因此,指針使用那個值的邏輯地址指示(指向)另一個值。
[0027]特別地,處理器10配置為在存儲器12中存儲不同大小的指針。特別地,處理器10配置為執(zhí)行指令以在存儲器12中存儲所謂的長指針,并且還配置為執(zhí)行指令以在存儲器12中存儲所謂的短指針。長指針指示了存儲器12的邏輯地址空間16中的任何地址;8卩,長指針具有跨越存儲器的邏輯地址空間16的全部地址范圍的能力。但是,長指針在存儲于存儲器12時在大小上相對于短指針較大。相反,短指針僅僅指示了邏輯地址空間16的子集18中的任何地址;即,短指針具有跨越存儲器的邏輯地址空間16的有限地址范圍的能力。但是短指針在存儲于存儲器12時在大小上比長指針有利的要小。因此,當(dāng)需要時長指針支持相對大的地址范圍能力,而當(dāng)?shù)刂贩秶笙鄬πr,短指針使用較少的存儲器12。
[0028]對應(yīng)地,處理器10配置為執(zhí)行指令以將長指針載入到寄存器堆14中,并執(zhí)行指令以將短指針載入到寄存器堆14中。不管載入的是長指針還是短指針,處理器10都將指針轉(zhuǎn)換為公共格式以便載入到寄存器堆14中。這樣,處理器10就不需要在執(zhí)行后續(xù)指令中另外區(qū)分長或短指針(也就是說,處理器的指令集架構(gòu)可以保持不變,除了考慮那些與實際載入或存儲指針相關(guān)聯(lián)的特殊指令之外)。當(dāng)然,為了仍然區(qū)分存儲于存儲器12中時的長和短指針,處理器10將采用公共格式的指針轉(zhuǎn)換為長或短指針以便于在存儲器12中存儲。
[0029]在至少一些實施例中,例如為達到與存儲器12或寄存器堆14相關(guān)聯(lián)的某些預(yù)定的結(jié)果而需要的那樣,通過添加或移除填充,處理器10在公共格式和長或短指針之間轉(zhuǎn)換。例如,處理器10可以從長或短指針添加或移除填充,如使得指針以與公共格式相關(guān)聯(lián)的預(yù)定大小載入到寄存器堆14所需的那樣。相反的,如使得長或短指針以某個預(yù)定的對準(zhǔn)存儲于存儲器12中所需的那樣(例如,特定字對準(zhǔn),其中字包括某個預(yù)定數(shù)量的位),處理器10可以從采用公共格式的指針添加或移除填充。此對準(zhǔn)可使得存儲器的訪問更有效率。
[0030]例如,考慮圖2。在圖2中,通過添加填充24,處理器10將采用公共格式20的指針轉(zhuǎn)換為長指針22以存儲于存儲器12中。在添加此填充24時,處理器10將長指針22以預(yù)定對準(zhǔn)存儲于存儲器12中,通過直接采用公共格式20存儲指針其不會另外出現(xiàn)。相反的,通過移除填充24,處理器10將長指針22轉(zhuǎn)換為公共格式20。在移除此填充24時,處理器10將長指針22以預(yù)定大小載入到寄存器堆14中。
[0031]處理器10可以按類似方式在公共格式20和短指針26之間轉(zhuǎn)換。但是,由于短指針26與長指針相比在存儲器12中存儲時的大小相對較小,所以由處理器10添加或移除的填充24的量可能不同于與長指針22的轉(zhuǎn)換關(guān)聯(lián)的量。
[0032]此外,在一些實施例中,并且如圖2所示,短指針26固有地在存儲器12中對準(zhǔn)而無需任何添加的填充,但是為了以預(yù)定的大小載入到寄存器堆14中需要填充。因此,在圖2中,通過添加填充28處理器10將短指針26轉(zhuǎn)換為公共格式20。在添加此填充時,處理器10使得短指針26以預(yù)定的大小載入到寄存器堆14中。同樣的,通過移除填充28,處理器10將采用公共格式20的指針轉(zhuǎn)換為短指針26以便于存儲在存儲器12中。在移除此填充28時,處理器10使得短指針26以預(yù)定的對準(zhǔn)存儲于存儲器12中。
[0033]圖3A-3B圖示根據(jù)一個或多個實施例,關(guān)于長和短指針22、26之間的區(qū)別的額外細節(jié)。如圖3A所示,存儲器12的邏輯地址空間16包括預(yù)定數(shù)量的邏輯段30 (例如,段O、
1...N)。這些段30中的每一個都包括多個邏輯地址。長指針和短指針22、26都指示段30中的任何一個,在某種意義上,指針指示的最終的邏輯地址可能包含于那些段30中的任何一個。但是,長和短指針22、26的不同在于,長指針22指示段30中的任何地址,而短指針26僅指示段30的子集中的任何地址。圖3B更特別地圖示了此不同。
[0034]圖3B描述了存儲器邏輯地址空間16的一個段30。長指針22可以指示此段30中的任何地址;就是說,長指針22具有跨越段30的全部地址范圍的能力。作為對比,短指針26只能指示段30中的一些地址,即,短指針26具有跨越段30的有限地址范圍的能力。如圖所示,例如,短指針26可以指示段20的30A部分中的任何地址,但是不能指示30B部分中的任何地址。因此,在圖3A-3B的實施例中,短指針26指示存儲器邏輯地址空間16的子集18中的任何地址,其中這種子集18由邏輯存儲器段30的不相鄰的部分30A組成。
[0035]更詳細地,根據(jù)各實施例的指針包括指出了存儲器邏輯地址空間的特定段30的某些位,以及指出了那個段30中的特定地址的其它位。這些位共同地指示存儲器邏輯地址空間16中的特定地址。根據(jù)一些實施例,長指針22和短指針26之間的一個不同之處在于短指針26包括指出了段30中特定地址的幾個位。使用這幾個位,短指針26僅指示段30的子集中的任何地址。
[0036]在這些實施例中,處理器10配置為在將短指針26轉(zhuǎn)換為公共格式20以及將公共格式20轉(zhuǎn)換為短指針26時解釋那幾個位。例如,在一些情形中,通過將填充添加到指出了段30中的特定地址的那些位中,處理器10將短指針26轉(zhuǎn)換為公共格式20以便于載入到寄存器堆14中。如上面關(guān)于圖2所討論那樣,處理器10可以添加此填充以使得短指針26以與公共格式20相關(guān)聯(lián)的預(yù)定大小載入到寄存器堆14中。同樣,通過抽取一個或多個那些位,而不是那些填充,處理器10將采用公共格式20的指針轉(zhuǎn)換為短指針26以便存儲于存儲器12中。再次如上面討論的那樣,處理器10可以移除此填充以使得短指針26以預(yù)定對準(zhǔn)存儲于存儲器12中。
[0037]圖4A-4B圖示了這些實施例的具體示例。在圖4A-4B中,處理器10將采用公共格式20的指針轉(zhuǎn)換為長或短指針22、26,其分別以4個字或2個字的對準(zhǔn)存儲于存儲器12中,其中一個字包括16位。因此,處理器10將采用公共格式20的指針轉(zhuǎn)換為具有64位大小的長指針22,并將采用公共格式20的指針轉(zhuǎn)換為具有32位大小的短指針26。在將長或短指針22、26轉(zhuǎn)換為公共格式20時,處理器10使得那些指針22、26以預(yù)定的48位的大小載入到寄存器堆14中。
[0038]更詳細地,圖4A圖示了 64位的長指針22作為包括填充24、選擇器32、以及偏移量34。填充24和選擇器32每個都包括16位,而偏移量34包括32位。如上所述,填充24由處理器10添加用于存儲器對準(zhǔn),其并不指出任何信息。選擇器32和偏移量34共同地指示存儲器邏輯地址空間16中的任何地址。特別地,選擇器32的8位指出了存儲器的256個邏輯段30中的任何一個。選擇器32的其它8位指出了與所指出的段30相關(guān)聯(lián)的唯一屬性。偏移量34的32個位指出了所指出的段30中的232個地址中的任何一個。
[0039]因此,圖4A中的64位長指針22包括填充24的16位和可用于指出邏輯地址的信息的48位(選擇器32的16位和偏移量34的32位)。因此,這種情形中的處理器10配置為通過從那些長指針22中移除16位的填充24將64位的長指針22簡單地轉(zhuǎn)換為48位的公共格式20。同樣,處理器10配置為通過添加16位的填充24將采用48位公共格式20的指針簡單地轉(zhuǎn)換為64位的長指針22。
[0040]圖4B圖示32位短指針26的相似細節(jié)。短指針26包括8位的局部選擇器36和24位的偏移量38。局部選擇器36和位偏移量38共同地指示存儲器邏輯地址空間16的子集18中的任何地址。特別地,8位的局部選擇器36指出了存儲器的256個邏輯段30中的任何一個。24位的偏移量38指出了所指出的段30的子集30A中的224個地址中的任何一個。
[0041]因此,圖4B中32位短指針26把以其他方式的話包含于圖4A的64位長指針22中的8位的選擇器32和8位的偏移量34排除在外。使用這些被排除的位,處理器10配置為,通過添加8位默認(rèn)值40以代替被排除的8個選擇器位、并通過添加8位填充28到24個偏移量位而將32位的短指針26轉(zhuǎn)換為48位的公共格式20。以此方式載入到寄存器堆14中,公共格式的短指針指示存儲器邏輯地址空間16的子集18中的任何地址,并指出與所指出的段30相關(guān)聯(lián)的默認(rèn)屬性。
[0042]當(dāng)然,圖4A-4B中所示的具體實施例僅僅表示非限定性示例,由于指針或指針部分的位的精確數(shù)量可能與上面的那些不同。在一些實施例中,例如,短指針26被限制為指示雙字對準(zhǔn)的存儲器位置。這意味著短指針26指示的邏輯地址的最低有效位η具有“ ;0”值(其中,η=1,2...)。給定此要求,處理器10抑制不必要地在存儲器12中存儲那些η個最低有效位。那么,為了將短指針26載入到寄存器堆14,處理器10僅僅載入默認(rèn)值為“O”的寄存器堆14的η個最低有效位。因此,在這些情形中,短指針26到公共格式的轉(zhuǎn)換以及填充的對應(yīng)添加在某種意義上增加了短指針26的地址范圍,但是代價是具有對準(zhǔn)限制。這還可以被認(rèn)為是在短指針26的粒度和短指針26的范圍之間的折衷。結(jié)果是,在這些情形中,圖4中的填充28實際上可以小于8位,即,8-n位,偏移量38可以有效地具有較大范圍的224+n個邏輯地址。
[0043]在這點上,圖4A-4B也是非限制性的,在某種意義上,短指針可以指示比所示的示例短指針26具有更大或更小大小的子集(S卩,具有更大或更小的地址范圍能力)。實際上,根據(jù)一些實施例的處理器10實際上被配置為執(zhí)行指令以載入或存儲不同類型的短指針,其中不同類型的短指針指示不同大小的子集中的地址。
[0044]例如,考慮圖5A-5B。這些圖描繪了兩個示范類型的短指針(分別是中等和大的短指針),它們中的任何一個或所有都可以與之前在圖4B中所示的短指針(也稱為小的短指針)結(jié)合使用。在圖5A中,存儲于存儲器12中時的中等短指針42包括4位的局部選擇器44和28位的偏移量46。單獨考慮4位的局部選擇器44,其指出了段30的子集中的任何一個段30 (例如,128個段的子集中的任何段)。28位的偏移量46指出了所指出的段30的子集30A中的228個地址中的任何一個。
[0045]但是處理器10配置為載入中等短指針42以致,如載入到寄存器堆14中那樣,公共格式的指針50指出了任何一個段30 (例如,256個段中的任何一個,而不僅僅是128個段的子集)。特別地,處理器10配置為從存儲器12載入中等短指針42,并且還配置為從特定寄存器28 (此處示出為RBASE)載入4位,其指出了在段30的剩余子集中的任何段30 (例如,未與中等短指針的4位局部選擇器44關(guān)聯(lián)的128個其它段的子集中的任何段)。因此,來自中等短指針的局部選擇器44的4位和來自特定寄存器28的4位共同指出了 256個段30中的任何一個。與圖4B中的短指針相似,處理器10添加8位默認(rèn)值52并添加填充54。但是,由于在存儲于存儲器12中時中等短指針42包括更多的4位用于偏移量46,因此,填充54僅僅是4位而非8位。
[0046]在圖5B中,在存儲于存儲器12中時大的短指針58簡單地包括32位的偏移量58。32位的偏移量58指出所指出的段30中的232個地址中的任何一個。在存儲于存儲器12中時大的短指針58自身不指出此段30。這改為由特殊寄存器60中的8位指出(在一些實施例中,其不同于圖5A中討論的特殊寄存器48)。因此,處理器10配置為從存儲器12載入大的短指針56,還配置為從指出256個段30中的任何段30的特殊寄存器60載入8位。因此,如載入到寄存器堆14那樣,公共格式的指針64指出了任何一個段30以及段30中的任何地址。與圖4B中的短指針相似,處理器10添加8位的默認(rèn)值62。但是,由于在存儲于存儲器12中時大的短指針56包含更多的8位偏移量58,所以不添加填充。
[0047]注意到,通過執(zhí)行相同或不同的指令,處理器10可以載入或存儲如上所述的不同類型的短指針(例如,小的、中等的、或大的)。在一些實施例中,例如,處理器10配置為執(zhí)行相同的指令以便基于識別了其類型(例如,小的、中等的、或大的)的短指針的一個或多個位來載入不同類型的短指針。例如,考慮圖6A-6C,其圖示了熵編碼技術(shù)用于實現(xiàn)在不同類型的短指針中的類型識別位。
[0048]圖6A根據(jù)一些實施例圖示了小的短指針70。此小的短指針70包括I位類型識別符72,其將短指針的類型識別為小。小的短指針70進一步包括8位局部選擇器74和23位偏移量76。圖6B圖示了中等短指針80。中等短指針80包括2位類型識別符82,其將短指針類型識別為中等。中等短指針80進一步包括4位局部選擇器84和26位偏移量86。最后,圖6C圖示了大的短指針90。大的短指針90包括2位類型識別符92,其將短指針類型識別為大。大的短指針90進一步包括30位的偏移量96。
[0049]類型識別位的此用法簡化了處理器的指令集架構(gòu)。但是,如圖6A-6C中所示,這些一個或多個類型識別位可以代替一位或多位指針偏移量或局部選擇器。因此,這些實施例用指令集架構(gòu)的精簡換來了地址范圍能力。
[0050]在一些實施例中,指令集架構(gòu)精簡的程度被限制為載入指令而沒有存儲指令。事實上,在這些實施例中,處理器10仍然可以配置為執(zhí)行不同的指令來存儲不同類型的短指針。此處,不同的指令存儲用于識別其類型的短指針的一位或多位的不同值。
[0051]在其它實施例中,處理器10配置為執(zhí)行同樣的指令來存儲不同類型的短指針。在這些實施例中,公共格式的短指針,如載入到寄存器堆14中那樣,包括一個或多個類型識別位,其描述了短指針應(yīng)該如何存儲于存儲器12 (例如,作為小的、中等的、或大的短指針)。這樣,處理器10只需要執(zhí)行單個存儲短指針指令來將短指針存儲于存儲器12,其中該指令檢查類型識別位并存儲不同位值的不同類型的短指針。再次,類型識別位可以代替公共格式指針的偏移量或選擇器的一位或多位。
[0052]長指針也可以包括上面討論的類型識別位。在此情形中,包含于長指針中的類型識別位描述了那個長指針應(yīng)該如何作為短指針(例如,作為小的、中等的、或大的短指針)存儲于存儲器12中??紤]這樣的示例,其中具有類型識別位的長指針存儲于存儲器12中。處理器10可以執(zhí)行指令以將那個長指針載入到寄存器堆作為公共格式的指針。此公共格式的指針同樣包括類型識別位。處理器10隨后可以執(zhí)行指令以將該公共格式的指針作為短指針存儲到存儲器12中,而不是如原始存儲那樣的長指針。為此,處理器10檢查類型識別位以確定是否將公共格式的指針作為小的、中等的、或大的短指針來存儲。注意,在實踐中,類型識別位可以額外的指出不知道如何將指針作為短指針存儲于存儲器12中。在此情形中,處理器10會指出異常或錯誤。
[0053]記住上面的修改和變化,本領(lǐng)域的技術(shù)人員將意識到上面描述的處理器10通常實現(xiàn)圖7中所示的處理,其用于處理與邏輯分段的存儲器12相關(guān)聯(lián)的指針。如圖7所描繪的,這種處理方法包括執(zhí)行指令以將長指針載入到寄存器堆14中,或?qū)㈤L指針存儲到存儲器12中(框100)。與迄今為止的描述一致,此上下文中的長指針指示存儲器18的邏輯地址空間16中的任何地址,其具有預(yù)定大小。處理還包括執(zhí)行指令以將短指針載入到寄存器堆14中或?qū)⒍讨羔槾鎯Φ酱鎯ζ?2中(框110)。再次與迄今為止的描述一致,短指針指示存儲器的邏輯地址空間16的子集18中的任何地址。處理進一步包括將長指針或短指針轉(zhuǎn)換為公共格式以便載入到寄存器堆14中(框120)。并且處理最后包括將采用公共格式的指針轉(zhuǎn)換為長或短指針以便存儲于存儲器12中(框130)。使用在存儲于存儲器12中時在大小上相對于長指針較小的短指針,當(dāng)?shù)刂贩秶笙鄬^小時此處理有利地使用較少的存儲器。
[0054]本領(lǐng)域的那些技術(shù)人員當(dāng)然將意識到,雖然上面已經(jīng)將數(shù)字處理器10通常描述為配置成執(zhí)行指令以載入或存儲長和短指針,但是處理器10可以配置成也執(zhí)行其它指令。就是說,上面描述的指令僅表示由處理器10實現(xiàn)的指令集架構(gòu)(ISA)中的一些指令。因此處理器的ISA還可以包括載入或存儲其它類型數(shù)據(jù)(例如整數(shù))的指令。實際上,在一個或多個實施例中,處理器10配置為執(zhí)行指令以載入或存儲不同大小的整數(shù),其對應(yīng)于長和短指針的大小。例如,至少一個實施例中的處理器10配置為執(zhí)行指令以載入或存儲64位的長指針和32位的短指針,并對應(yīng)地配置為執(zhí)行指令以載入或存儲64位的整數(shù)和32位的整數(shù)。
[0055]在這點上,依據(jù)其關(guān)于整數(shù)和指針的相關(guān)配置,可以更一般地理解數(shù)字處理器10。在此上下文中的數(shù)字處理器10配置為執(zhí)行指令以在寄存器堆14中載入或在存儲器12中存儲不同大小的整數(shù)(例如,64位和32位)。數(shù)字處理器10還配置為執(zhí)行指令以在寄存器堆14中載入或在存儲器12中存儲對應(yīng)大小的指針(例如,64位和32位)。
[0056]因此,本文的實施例廣泛地支持在存儲于存儲器12時的不同大小的指針。不同大小的指針提供不同的地址范圍能力,并且因此如果地址范圍的需求允許的話,使得程序員通過使用較小大小的指針來使用較少的存儲器12。此外,不同大小的指針采用一個公共表示或格式在寄存器堆中內(nèi)部表示,這有利地避免了對處理器的指令集架構(gòu)的進一步修改。
[0057]因此,本領(lǐng)域的技術(shù)人員將意識到,在不脫離本發(fā)明的實質(zhì)特征的情況下,本發(fā)明可以采用不同于本文具體闡述的方式的其它方式來實現(xiàn)。因此,本實施例在所有方面都認(rèn)為是說明性的而非限制性的,并且落在所附的權(quán)利要求的含義和等效范圍中的所有變化都旨在包含于其中。
【權(quán)利要求】
1.一種數(shù)字處理器,操作為處理與邏輯分段的存儲器相關(guān)聯(lián)的指針,所述數(shù)字處理器配置為: 執(zhí)行指令以將指示所述存儲器的邏輯地址空間中的任何地址的長指針載入到寄存器堆中或存儲到所述存儲器中,所述邏輯地址空間具有預(yù)定大小; 執(zhí)行指令以將指示邏輯地址空間的子集中的任何地址的短指針載入到所述寄存器堆或存儲到所述存儲器中; 將長指針或短指針轉(zhuǎn)換為公共格式以便載入到所述寄存器堆;以及 將采用公共格式的指針轉(zhuǎn)換為長指針或短指針以便存儲于所述存儲器中,短指針在存儲于所述存儲器時在大小上相對于長指針較小。
2.如權(quán)利要求1所述的數(shù)字處理器,其中長指針和短指針都指示所述邏輯地址空間的預(yù)定數(shù)量的段中的任何一個,并且其中長指針指示段中的任何地址,而短指針指示段的子集中的任何地址。
3.如權(quán)利要求2所述的數(shù)字處理器,其中與長指針相比,短指針包括指出段中的特定地址的較少數(shù)量的預(yù)定位,并且其中所述數(shù)字處理器配置為: 通過將填充添加到所述預(yù)定位來將短指針轉(zhuǎn)換為所述公共格式;以及 通過抽取一個或多個所述預(yù)定位而不是所述填充,將采用公共格式的指針轉(zhuǎn)換為短指針,以便存儲到所述存儲器中。
4.如權(quán)利要求1所述的數(shù)字處理器,配置為通過將填充添加到短指針來將短指針轉(zhuǎn)換為所述公共格式,以及通過從長指針移除填充來將長指針轉(zhuǎn)換為所述公共格式。
5.如權(quán)利要求1所述的數(shù)字處理器,進一步配置為執(zhí)行不同的指令以載入或存儲不同類型的短指針,不同類型的短指針指示不同大小的子集中的地址。
6.如權(quán)利要求1所述的數(shù)字處理器,進一步配置為執(zhí)行相同的指令,以基于識別其類型的短指針的一個或多個位來載入不同類型的短指針,不同類型的短指針指示不同大小的子集中的地址。
7.如權(quán)利要求1所述的數(shù)字處理器,進一步配置為執(zhí)行相同的指令,以基于采用所述公共格式的指針的一個或多個位來在所述存儲器中將采用所述公共格式的指針存儲為不同類型的短指針,所述一個或多個位識別要存儲的短指針的類型,不同類型的短指針指示不同大小的子集中的地址。
8.如權(quán)利要求1所述的數(shù)字處理器,進一步配置為執(zhí)行指令以將對應(yīng)于所述長指針和短指針的大小的不同大小的整數(shù)載入到所述寄存器堆或存儲到所述存儲器中。
9.如權(quán)利要求1所述的數(shù)字處理器,其中長指針在存儲于所述存儲器時具有64位大小,而短指針在存儲于存儲器時具有32位大小。
10.如權(quán)利要求9所述的數(shù)字處理器,其中在存儲于所述存儲器時長指針包括指出所述邏輯地址空間的預(yù)定數(shù)量的段中的任何一個的8位,以及指出段中的任何一個地址的32位,并且其中在存儲于所述存儲器時短指針包括指出所述段中的任何一個的8位,以及指出段的子集中的任何一個地址的24位。
11.如權(quán)利要求9所述的數(shù)字處理器,其中在存儲于所述存儲器時長指針包括指出所述邏輯地址空間的預(yù)定數(shù)量的段中的任何一個的8位,以及指出段中的任何地址的32位,并且其中在存儲于所述存儲器時短指針具有以下至少任何兩個:第一類型,包括指出所述段的任何一個的8位,以及指出段的子集中的任何地址的24位; 第二類型,包括指出所述段的子集中的任何段的4位,以及指出段的子集中的任何地址的28位;以及 第三類型,包括指出段中的任何地址的32位。
12.如權(quán)利要求11所述的數(shù)字處理器,配置為將所述第二類型和所述第三類型中的至少一個載入到所述寄存器堆中,所述處理器配置為: 通過從所述存儲器載入所述短指針以及通過從特殊寄存器載入識別所述段的剩余子集中的任何段的4位,將具有所述第二類型的短指針載入到所述寄存器堆,由此在載入到所述寄存器堆時所述短指針指出所述段的任何一個以及段的子集中的任何地址;以及 通過從所述存儲器載入所述短指針以及通過從特殊寄存器載入識別所述段中的任何一個的8位,將具有所述第三類型的短指針載入到所述寄存器堆,由此在載入到所述寄存器堆時所述短指針指出所述段的任何一個以及段中的任何地址。
13.一種在數(shù)字處理器中操作以處理與邏輯分段的存儲器相關(guān)聯(lián)的指針的方法,所述方法包括: 執(zhí)行指令以將指示所述存儲器的邏輯地址空間中的任何地址的長指針載入到寄存器堆中或存儲到所述存儲器中,所述邏輯地址空間具有預(yù)定大?。? 執(zhí)行指令以將指示所述邏輯地址空間的子集中的任何地址的短指針載入到所述寄存器堆或存儲到所述存儲器中; 將長指針或短指針轉(zhuǎn)換為公共格式以便載入到所述寄存器堆;以及 將采用公共格式的指針轉(zhuǎn)換為長指針或短指針以便存儲于所述存儲器中,短指針在存儲于所述存儲器時在大小上相對于長指針較小。
14.如權(quán)利要求13所述的方法,其中長指針和短指針都指示所述邏輯地址空間的預(yù)定數(shù)量的段的任何一個,并且其中長指針指示段中的任何地址,而短指針指示段的子集中的任何地址。
15.如權(quán)利要求14所述的方法,其中與長指針相比,短指針包括指出段中的特定地址的較少數(shù)量的預(yù)定位,并且其中所述方法包括: 通過將填充添加到所述預(yù)定位來將短指針轉(zhuǎn)換為所述公共格式;以及 通過抽取一個或多個所述預(yù)定位而不是所述填充,來將采用所述公共格式的指針轉(zhuǎn)換為短指針,以便存儲到所述存儲器中。
16.如權(quán)利要求13所述的方法,包括通過將填充添加到短指針來將短指針轉(zhuǎn)換為所述公共格式,以及通過從長指針移除填充來將長指針轉(zhuǎn)換為所述公共格式。
17.如權(quán)利要求13所述的方法,包括執(zhí)行不同的指令以載入或存儲不同類型的短指針,不同類型的短指針指示不同大小的子集中的地址。
18.如權(quán)利要求13所述的方法,包括執(zhí)行相同的指令,以基于識別其類型的短指針的一個或多個位來載入不同類型的短指針,不同類型的短指針指示不同大小的子集中的地址。
19.如權(quán)利要求13所述的方法,包括執(zhí)行相同的指令,以基于采用所述公共格式的指針的一個或多個位來在所述存儲器中將采用所述公共格式的指針存儲為不同類型的短指針,所述一個或多個位識別要存儲的短指針的類型,不同類型的短指針指示不同大小的子集中的地址。
20.如權(quán)利要求13所述的方法,進一步包括執(zhí)行指令以將對應(yīng)于所述長指針和短指針的大小的不同大小的整數(shù)載入到所述寄存器堆或存儲到所述存儲器中。
21.如權(quán)利要求13所述的方法,其中長指針在存儲于所述存儲器中時具有64位大小,而短指針在存儲于所述存儲器中時具有32位大小。
22.如權(quán)利要求21所述的方法,其中長指針包括指出所述邏輯地址空間的預(yù)定數(shù)量的段中的任何一個的8位,以及指出段中的任何地址的32位,并且其中短指針包括指出所述段中的任何一個的8位,以及指出段的子集中的任何地址的24位。
23.如權(quán)利要求21所述的方法,其中長指針包括指出所述邏輯地址空間的預(yù)定數(shù)量的段中的任何一個的8位,以及指出段中的任何地址的32位,并且其中短指針具有以下至少任何兩個: 第一類型,包括指出所述段中的任何一個的8位,以及指出段的子集中的任何地址的24位; 第二類型,包括指出所述段的子集中的任何段的4位,以及指出段的子集中的任何地址的28位;以及 第三類型,包括指出段中的任何地址的32位。
24.如權(quán)利要求23所述 的方法,包括將所述第二類型和所述第三類型中的至少一個載入到所述寄存器堆中,其中: 將具有所述第二類型的短指針載入到所述寄存器堆包括從所述存儲器載入所述短指針以及從特殊寄存器載入識別所述段的剩余子集中的任何段的4位,由此在載入到所述寄存器堆時所述短指針指出所述段的任何一個以及段的子集中的任何地址;以及 將具有所述第三類型的短指針載入到所述寄存器堆包括從所述存儲器載入所述短指針以及從特殊寄存器載入識別所述段中的任何一個的8位,由此在載入到所述寄存器堆時所述短指針指出所述段的任何一個以及段中的任何地址。
25.一種數(shù)字處理器,操作為處理與邏輯分段的存儲器相關(guān)聯(lián)的指針,所述數(shù)字處理器配置為: 執(zhí)行指令以將不同大小的整數(shù)載入到寄存器堆或存儲于所述存儲器中;以及 執(zhí)行指令以將對應(yīng)大小的指針載入到寄存器堆或存儲于所述存儲器中。
【文檔編號】G06F9/30GK103547995SQ201280012977
【公開日】2014年1月29日 申請日期:2012年3月8日 優(yōu)先權(quán)日:2011年3月11日
【發(fā)明者】S·梅爾, J·G·法沃, E·格維茨, R·哈塔韋, E·特雷胡斯 申請人:瑞典愛立信有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
托克托县| 庐江县| 土默特右旗| 洛南县| 盘锦市| 伊宁县| 宣恩县| 广宗县| 额敏县| 彩票| 文化| 迁安市| 固镇县| 杭锦后旗| 上犹县| 社会| 凌云县| 通辽市| 原平市| 若羌县| 铜鼓县| 龙陵县| 定襄县| 太仆寺旗| 南通市| 鄱阳县| 确山县| 潜江市| 冷水江市| 邵阳市| 赣州市| 四子王旗| 河池市| 丰台区| 江油市| 青冈县| 彝良县| 昆山市| 辽阳市| 正安县| 高州市|