TWI520059B - 運用別名定址法來實現可變長度的指令編碼之方法及數位處理器裝置 - Google Patents
運用別名定址法來實現可變長度的指令編碼之方法及數位處理器裝置 Download PDFInfo
- Publication number
- TWI520059B TWI520059B TW103125987A TW103125987A TWI520059B TW I520059 B TWI520059 B TW I520059B TW 103125987 A TW103125987 A TW 103125987A TW 103125987 A TW103125987 A TW 103125987A TW I520059 B TWI520059 B TW I520059B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- address space
- virtual
- mode
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 25
- 230000007704 transition Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims 5
- 238000010586 diagram Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
本發明相關於在傳統(legacy)處理器上之可變長度指令編碼,特別是相關於使用別名位址(alias address)空間來實現自動模式切換之可變長度指令編碼。
多數現代嵌入式處理器使用指令集中的可變長度指令編碼來達到緊密的程式碼(code)大小。依據傳統處理器的存在,有兩種方法已被採用。
以新設計的指令集而言,其中程式碼大小被認為是一項重要的設計準則,可能使用了混合大小的編碼方式。在這種實例下,短的和長的指令共用了相同的編碼空間。因此,不需要為了針對不同大小指令的解碼和執行而作模式切換。
以在程式碼大小縮減前、使用指令集而言,編碼空間可能在容許新的操作碼進來前已經太過擁擠。通常在處理器解碼並執行新引進的指令時,新的操作模式會產生,而不是在雜亂中再重新設計指令集。
以第二種實例而言,在處理器可以解碼並執行新的指令型態之前,處理器需要置於新的模式下。通常從傳統模式到新模式的這種模式
轉換是以設定或重設指定的組態暫存器中的模式位元來達成的。這種方法是有缺點的。在處理器開始解碼並執行新的指令前,模式位元必須要先被設定。在傳統模式下必須要下指令去設定此位元來切換到新的模式,反之亦然。意味著如果任何傳統的程式碼模組再被用到,這些模組便必須再修改來讓模式更換生效。這可能會有實際的限制,舉例來說,當使用預先編譯的程式庫模組便是。就程式碼大小而論,就像執行加入的模式更換指令需要一些週期一樣,模式位元也隱含著某些額外的程式。此外,每次模式更改後,已被管線(pipeline)排序的處理器就必須再排出管線才能開始從不同模式中作指令解碼。如果模式切換很頻繁,這也會影響到性能。
因此,有必要為了傳統處理器中的可變長度指令編碼來設計改良的方法和裝置。
依據本發明之第一觀點,提供一種操作數位處理器的方法,該數位處理器包含記憶體、程式定序器(program sequencer)及執行單元。該方法包括儲存程式碼序列(code sequence)的指令到記憶體中;產生程式碼序列的指令位址;以及回應於指令位址在第一位址空間和第二位址空間之間的轉換而自動地切換在第一操作模式和第二操作模式之間,其中第一和第二位址空間之位址存取相同的記憶體空間;在第一操作模式下,存取第一位址空間內的指令;在第二操作模式下,存取第二位址空間內的指令;以及執行程式碼序列之被存取的指令。
第一和第二操作模式可能使用到相同或不同指令長度的指
令。尤其是,第一操作模式可能使用到一種或更多的指令長度,以及第二操作模式可能使用到一種或更多的指令長度。第一和第二模式中的指令長度在任何組合下,可能相同可能不同。在某些實施例中,第一模式安排來執行第一種指令長度之指令,而第二模式安排來執行第一指令長度、第二指令長度以及第三指令長度之指令。
依據本發明之第二觀點,數位處理器裝置包括一記憶體,其用來儲存程式碼序列之指令;一程式定序器,其用來產生程式碼序列之指令位址並針對指令位址在第一位址空間和第二位址空間轉換時能在第一操作模式和第二操作模式之間自動切換,其中第一和第二位址空間之位址存取相同的記憶體空間,在第一操作模式下,存取第一位址空間內的指令,在第二操作模式下,存取第二位址空間內的指令;以及一執行單元,其用來執行程式碼序列之被存取的指令。
10‧‧‧數位處理器
11‧‧‧核心處理器
12‧‧‧程式定序器
14‧‧‧記憶體
16‧‧‧位址轉換單元
20‧‧‧指令校準緩衝器
22‧‧‧IAB控制器
30‧‧‧解碼器
32‧‧‧執行單元
70‧‧‧記憶體區塊0
72‧‧‧記憶體區塊1
74‧‧‧第一位址空間
76‧‧‧第二位址空間
80‧‧‧程式碼
82‧‧‧傳統程式碼
84‧‧‧傳統程式碼
86‧‧‧visa程式碼
88‧‧‧visa程式碼
100‧‧‧實體位址空間
102‧‧‧實體頁
104‧‧‧實體頁
106‧‧‧實體頁
110‧‧‧核心處理器
120‧‧‧虛擬位址空間
130‧‧‧虛擬頁
131‧‧‧虛擬頁
132‧‧‧虛擬頁
133‧‧‧虛擬頁
134‧‧‧虛擬頁
135‧‧‧虛擬頁
136‧‧‧虛擬頁
300‧‧‧緩衝器
310‧‧‧緩衝器中16位元之位置
311‧‧‧緩衝器中16位元之位置
312‧‧‧緩衝器中16位元之位置
313‧‧‧緩衝器中16位元之位置
314‧‧‧緩衝器中16位元之位置
320‧‧‧多工器
400‧‧‧記憶體區塊
410‧‧‧記憶體區塊
圖1係依照本發明之一實施例的數位處理器裝置之方塊圖;圖2係舉例說明第一位址空間和第二位址空間存取著同一個實體記憶體空間之圖示;圖3係依照本發明之一實施例,舉例說明指令定址之圖示;圖4係舉例說明虛擬記憶體之圖示;圖5係依照本發明之一實施例,舉例說明處理器操作的方法之流程圖;圖6係依照本發明之一實施例,舉例說明指令校準緩衝器之方塊圖;
圖7係依照本發明之一實施例,舉例說明記憶體在傳統和visa模式中存取之圖示;圖8係依照本發明之一實施例,舉例說明指令校準之圖示。
本發明並不受限於接下來要提出的詳細說明和圖示所指之應用。本發明可以是其他透過各種方式已經實行或實現的實施例。並且,在此所用的措辭和用語是以敘述為目的,不應視為是一種限制。在此所用到的”包含”、”包括”、”具有”、”含有”、”涉及”,以及其他此文之變異詞,都意謂著強調之後所列出來同等以及額外的項目。
依照本發明之一實施例,圖1表示了數位處理器10之方塊圖。數位處理器裝置10包含一個核心處理器11和記憶體14。程式定序器12產生一個指令位址的序列以執行一個應用程式。程式的流程可能會存取連續的位址,但典型地包含一種或更多的程式結構,例如迴圈、副函式、跳越、以及/或者中斷,這些產生了非連續性的程式流程。程式定序器12供應指令位址到位址轉換單元16,其轉換邏輯的指令位址到實體的位址以便存取實體的記憶體。就如以下所討論的,別名位址空間可能用來實現自動的模式切換。在某些實施例中,正規字元位址空間和短字元位址空間用來在模式之間作區分。在其他的實施例中,虛擬位址空間之不同虛擬頁用來在模式之間作區分。
實體的位址提供給記憶體14,其傳回指令給指令校準緩衝器(Instruction Alignment Buffer,IAB)20。就如以下所討論的,記憶體14可能在每個時脈週期中傳回多於一個指令,而指令校準緩衝器選擇正確的指
令來執行。如下所述,IAB控制器22控制指令校準緩衝器20。解碼器30解碼指令並提供控制訊號給執行單元32以執行目前的指令。在圖1的實施例中,核心處理器11包含程式定序器12、位址轉換單元16、指令校準緩衝器20、IAB控制器22、解碼器30以及執行單元32。指令所需要的運算元(operand)分別地存取。
如圖1所示,程式定序器提供模式(mode)信號給IAB控制器22以及解碼器30。第一操作模式和第二操作模式相對於不同的指令集,其指令集可在數位處理器裝置10執行。第一和第二操作模式可能使用到相同或不同指令長度之指令。特別是,第一操作模式可能使用到一種或更多的指令長度以及第二操作模式可能使用到一種或更多的指令長度。第一和第二模式中的指令長度在任何組合下,可能相同可能不同。在某些實施例中,第一模式安排來執行第一指令長度之指令,而第二模式安排來執行第一指令長度、第二指令長度以及第三指令長度之指令。在這些實例中,第二和第三指令長度比第一指令長度來的短。
在某些實施例中,第一模式,也叫做”傳統”模式,相對於一組現行的指令集,而第二模式,也叫做”visa”模式,相對於一組新的指令集。新的指令集可能包含了現行指令集的指令也包含了新的指令。舉例來說,至少某些新指令可能比現行的指令有著較短的指令長度以減少程式碼大小。
解碼器30用來決定每個指令的長度並提供指令長度信號給IAB控制器22和程式定序器12。執行單元32用來供應一分支位址給程式定序器12。就如以下所討論到的,取得的分支可能會觸發模式切換。
在圖1的實施例中,第一模式使用48位元的固定指令長度。第二模式使用可變長度的指令,包含48位元指令、32位元指令以及16位元指令。根據目前正在執行的指令之位址,程式定序器12自動在第一模式和第二模式之間切換。依照本發明之實施例,別名位址用來區分第一模式和第二模式。
圖2用來舉例說明記憶體14中之別名定址法。圖2中,實體記憶體14有4百萬位元的容量,分成區塊(block)70和72各2百萬位元。記憶體14可以經由第一位址空間74和第二位址空間76所存取。在此實施例中,第一位址空間74稱為”正規字元(normal word)”位址空間,而第二位址空間76稱為”短字元(short word)”位址空間。在正規字元定址時,48位元之字元從記憶體14中讀取,其位址範圍從0x0002 0000到0x0002 AAAA以及0x0003 0000到0x0003 AAAA。在短字元定址時,16位元之字元從記憶體14中讀取,其位址範圍從0x0004 0000到0x0007 FFFF。在短字元定址時,超過一個,通常是三個16位元之字元從記憶體14中讀取。如圖2所示,第一位址空間和第二位址空間有著不同的位址範圍但存取相同的記憶體空間。
在圖2的實施例中,第一位址空間和第二位址空間內之位址存取實體記憶體位址中的同一段範圍。在其他實施例下,第一位址空間和第二位址空間內之位址存取實體記憶體位址中不同但有重疊的範圍。因此,第一位址空間可能比第二位址空間來的大也可能比較小。然而,至少部分的第一位址空間和第二位址空間對應到相同的實體記憶體空間。關於第一位址空間,第二位址空間有時就是所知的別名位址空間,反之亦然。
依照本發明之一實施例,圖3表示出傳統編碼和visa編碼使用了別名定址法。將圖2中的區塊72表示在圖3中。應用程式中的程式碼80可能儲存在實體記憶體14中的一個特定位址空間中。程式碼80包含了傳統程式碼區段82和84的指令以及visa程式碼區段86和88的指令。如示,程式碼區段82、84、86和88佔有實體記憶體14中不同但連續相鄰的區域。傳統程式碼區段82和84利用正規字元位址空間的位址來存取,而visa程式碼區段86和88利用短字元位址空間的位址來存取。結果,程式定序器12能夠根據目前指令位址是在正規字元位址空間或是短字元位址空間,來決定操作模式。
圖4用來舉例說明虛擬定址。實體位址空間100包含實體頁102、104、106等。核心處理器110以存取虛擬位址空間120來操作,該虛擬位址空間通常比實體位址空間100要來的大。虛擬位址空間120可能包含虛擬頁130、131、132、133、134、135、136等。當核心處理器110存取虛擬位址空間120中的一個位置,虛擬位址被位址轉換單元16(圖1)轉換成實體位址,而存取對應的實體記憶體位置。某些實例中,需要的資料在較低層的記憶體中存取,比如說磁碟儲存器,並轉換到實體記憶體中。虛擬頁和實體頁之間的對映放在頁碼表(page table)中。頁碼表在合適地配置後,以圖4為例,虛擬頁131指向實體頁102,虛擬頁133和136指向實體頁104,而虛擬頁135指向實體頁106。如示,兩個或更多的虛擬頁可能指向同一個實體頁。
依照本發明之實施例,程式碼序列的指令可能儲存在實體記憶體的一個區域,比如說實體頁104。核心處理器110產生程式碼序列的指
令位址當作虛擬位址。對應到第一操作模式之程式碼序列的虛擬位址可能在虛擬頁133,而對應到第二操作模式之程式碼序列的虛擬位址可能在虛擬頁136。舉例來說,在虛擬頁133中的指令可能具有相同的指令長度,而在虛擬頁136中的指令可能具有混合的指令長度。當程式碼序列從虛擬頁133的指令位址分岔到虛擬頁136的指令位址時,核心處理器110偵測到分支目標的位址空間有改變時,如果需要的話,並自動地從第一操作模式切換到第二操作模式。同樣地,當程式碼序列從虛擬頁136的指令位址分岔到虛擬頁133的指令位址時,核心處理器110偵測到分支目標的位址空間有改變時,如果需要的話,並自動地從第二操作模式切換到第一操作模式。在第一和第二操作模式中,指令可能因為不同的指令長度而以不同方式存取。
依照本發明之一實施例,圖5表示出操作數位處理器裝置之方法的流程圖。在步驟200中,程式碼序列的指令儲存於記憶體中,比方說圖1中的記憶體14。第一操作模式的指令和第二操作模式的指令可能儲存在實體記憶體14中連續相鄰的區域。當程式碼序列被呼叫到要執行了,指令位址便在步驟202中產生。
很明顯地,重置時,定序器應該初始以操作於一個既定的模式下。既然處理器通常設計成要回溯相容,在本實施例中,定序器在重置時便初始於傳統操作模式。
在步驟204中,決定了關於下一個指令位址是否表示要從第一位址空間轉換到第二位址空間。如果下一個指令位址表示要從第一位址空間轉換到第二位址空間,程式定序器12(圖1)自動地在步驟206中切換到
在第二操作模式並執行到步驟220。如果下一個指令位址沒有表示要從第一位址空間轉換到第二位址空間,則要在步驟208中,決定關於下一個指令位址是否表示要從第二位址空間轉換到第一位址空間。如果下一個指令位址表示要從第二位址空間轉換到第一位址空間,程式定序器12自動地在步驟210中切換到在第一操作模式並執行到步驟220。如果下一個指令位址沒有表示要從第二位址空間轉換到第一位址空間,不需模式切換便執行步驟220。位址空間的轉換可能由位址空間之間分岔的分支指令來顯示。
在步驟220中,程式定序器12使用適當的操作模式以提取下一個指令並把指令送入執行單元來執行。然後回到步驟202來產生下一個指令位址。
如上所述之實施例中,第一,或稱傳統操作模式是用來執行第一指令長度之指令,該指令長度固定為48位元;而第二,或稱visa操作模式是用來執行具有可變指令長度之指令,該指令長度包含48位元指令、32位元指令以及16位元指令。記憶體14可能組織成以16位元之字元為一欄之四個欄位(column)。在傳統模式中,一個48位元的指令在每個時脈週期被提取,並提供給核心處理器11以解碼和執行。因為記憶體結構的原因,指令校準緩衝器20用來校準儲存在記憶體14中不同列的48位元指令。既然所有的指令都是48位元,並不需要指令長度之資訊,而程式計數器在每個時脈週期中以對應於48位元的值來增加。
在visa模式中,48位元、32位元以及16位元的指令混合於記憶體14中。混合的指令儲存在記憶體14連貫的位置中以達到高度的程式碼密度。當執行一段程式碼序列時,下一個指令的指令長度預先並不
知道。因此,參考圖1,當指令局部被解碼器30解碼時,指令長度確定了,而指令長度資訊提供給IAB控制器22和程式定序器12。IAB控制器22利用指令長度資訊來控制下一個由解碼器提供之指令的校準。程式定序器12利用指令長度資訊,並依據目前指令被解碼的長度分別為一個、兩個或三個16位元之字元來增加程式計數器的量。
因為下一個指令的長度預先並不知道,在每個時脈週期中,一部分對應到最長指令的字元從記憶體14中提取出來。在上面的例子中,visa模式下,三個16位元之字元在每個時脈週期下從記憶體14中提取。指令校準緩衝器20在每個時脈週期中,利用從解碼器來的指令長度資訊以校準指令。因為下一個指令的長度預先並不知道,三個16位元之字元在每個時脈週期下由指令校準緩衝器20提供給解碼器30。
圖6表示出指令校準緩衝器20之實施例的方塊圖。緩衝器300有著五個16位元之字元的容量,並包含有16位元之位置310、311、312、313以及314。多工器320供應資料給緩衝器300每個16位元之位置。緩衝器300的輸入可以從記憶體、從緩衝器300的輸出,或者是從其他輸入源。一16位元之位置的輸出可以寫入到緩衝器300中另一個不同的16位元之位置以有效地搬移緩衝器300中的指令。
在第一,或稱傳統操作模式中,三個16位元之字元在每個時脈週期下從記憶體中讀取並供應給解碼器30。因為傳統模式中每個指令都是48位元,所以並不需要指令校準。
在第二,或稱visa操作模式中,三個16位元之字元在每個時脈週期下從記憶體中讀取並寫入緩衝器300。任何時脈週期中,從記憶體
讀取的48位元可能包含各種混合的指令長度。因為三個16位元之字元的具體內容起先並不知道,所以48位元全部提供給解碼器30。在部分解碼之後,基於特定的指令編碼,指令長度決定了。如果緩衝器300不能容納從記憶體中讀取的三個新的16位元之字元,提取的操作會延遲。
圖7表示出含有傳統模式中48位元指令的操作之記憶體區塊400。在此實施例中,記憶體區塊400包含了四個以16位元之字元為一組的欄位。圖7也表示出含有visa模式中混合長度指令的操作之記憶體區塊410。在此實施例中,高階、中階和低階的16位元之字元在傳統和visa模式下不同地排列(不同的旋轉)。如圖8所示,對應於指令長度訊號,指令在記憶體區塊410中提取,置放於緩衝器300並在緩衝器300中搬移。在逐次的時脈週期中,緩衝器300的內容顯示在圖8中。混合長度的指令在逐次的時脈週期中執行著。
如果指令解碼為48位元的指令,此三個16位元之字元的指令從緩衝器300中的位置312、313和314中刪除。在下一個時脈週期中,三個從記憶體讀取的16位元之字元寫入緩衝器300的高階位置312、313和314中(參見圖8裏的週期n和n+1)。
如果指令解碼為32位元的指令,此兩個16位元之字元的指令從緩衝器300中的位置313和314中刪除,而剩下緩衝器300中的16位元之字元搬移了兩個位置到最左邊去(參見圖8裏的週期n+1和n+2)。
如果指令解碼為16位元的指令,在緩衝器300中高階位置314的16位元之字元被刪除掉,而剩下緩衝器300中的16位元之字元搬移了一個位置到最左邊去(參見圖8裏的週期n+4和n+5)。以此方式,指令校
準緩衝器20依據目前指令所被解碼的指令長度而操作。
在任何週期下,當緩衝器300不能容納從記憶體提取的三個16位元之字元時,指令的提取會減速或是延遲。圖8中有一範例。在週期n+6中,緩衝器300無法容納16位元之字元8H、8M和8L(參見圖7)而減緩了提取的動作。
組譯器(assembler)可能會操作在傳統模式或visa模式。在visa模式下操作的組譯器所組譯之原始碼,其產生之二進制碼(binary code)可能有不同長度指令的組合。所有的指令置放於記憶體14中短字元的位址空間。相同的碼在傳統模式下組譯所產生的二進制碼有著一致的48位元長度的指令。以此組譯全部的程式碼置放於記憶體14中正規字元的位址空間。兩種型式的碼可以鏈接在一起。執行檔包括了傳統模式下組譯的指令,也包括了visa模式下組譯的指令,以此方式決定之分支目標,其程式碼區段產生於傳統模式下之分支目標為正規字元位址,而程式碼區段產生於visa模式下之分支目標為短字元位址。就如稍早所提的,處理器在重置時是初始於傳統模式下。因此,重置的中斷副函式(Interrupt SubRoutine),其係由處理器在重置後立即執行,將會組譯於傳統模式下。此兩種位址空間使得程式定序器能夠偵測程式碼的型態,並能夠動態地切換操作的模式以正確地解碼不同操作模式下的指令。
以上提出本發明至少一個實施例之一些觀點,任何熟習此技術者在不脫離本發明之精神和範圍內,當可作各種之變更、修改和改善。因此,以上所說的敘述和圖示都只是為了舉例說明之方法而已。
10‧‧‧數位處理器
11‧‧‧核心處理器
12‧‧‧程式定序器
14‧‧‧記憶體
16‧‧‧位址轉換單元
20‧‧‧指令校準緩衝器
22‧‧‧IAB控制器
30‧‧‧解碼器
32‧‧‧執行單元
Claims (27)
- 一種用於藉由存取目前指令而操作數位處理器之方法,該方法包括:決定與該目前指令有關的虛擬位址屬於第一別名位址空間或是第二別名位址空間,其中:第一操作模式係與該第一別名位址空間有關,並且第二操作模式係與該第二別名位址空間有關;且該第一別名位址空間中的至少一個虛擬位址及該第二別名位址空間中的至少一個虛擬位址係對應於單一實體記憶體位址;以及根據與該目前指令有關的該虛擬位址所屬於的別名空間而將該處理器設定於該第一操作模式或該第二操作模式中。
- 如申請專利範圍第1項所述之方法,其中具有在該第一別名位址空間中的虛擬位址之指令係具有第一指令長度,且在具有在該第二別名位址空間中的虛擬位址之指令係具有複數個指令長度。
- 如申請專利範圍第2項所述之方法,其中在該複數個指令長度中之一個指令長度係該第一指令長度。
- 如申請專利範圍第3項所述之方法,進一步包括了在該第二模式中決定目前指令長度,並根據目前指令長度校準下一個指令。
- 如申請專利範圍第4項所述之方法,其中校準指令包括回應於該目前指令長度而在指令校準緩衝器中搬移指令。
- 如申請專利範圍第2項所述之方法,其中存取指令包括在每個時脈週期下存取對應於最長指令長度之一些位元。
- 如申請專利範圍第2項所述之方法,其中該複數個指令長度包括第二 指令長度和第三指令長度。
- 如申請專利範圍第7項所述之方法,其中該第一指令長度要比該第二指令長度和該第三指令長度還長。
- 如申請專利範圍第7項所述之方法,其中存取具有在第二別名位址空間中的相關虛擬位址之指令包括了對實體記憶體的連續位置中具有混合指令長度之指令進行存取。
- 如申請專利範圍第7項所述之方法,其中該第一指令長度為48位元,該第二指令長度為32位元而該第三指令長度為16位元。
- 如申請專利範圍第1項所述之方法,其中該第一別名位址空間為正規字元位址空間而該第二別名位址空間為短字元位址空間。
- 如申請專利範圍第1項所述之方法,其中該第一別名位址空間為虛擬位址空間之第一虛擬頁而該第二別名位址空間為該虛擬位址空間之第二虛擬頁。
- 如申請專利範圍第1項所述之方法,其中與該目前指令有關的該虛擬位址係該目前指令的該虛擬位址。
- 如申請專利範圍第1項所述之方法,其中該目前指令係分支指令,且與該目前指令有關的該虛擬位址係與該目前指令有關的目標指令的該虛擬位址。
- 一種用以執行指令的數位處理器裝置,該裝置包括:一程式定序器,其用來產生虛擬指令位址並回應於虛擬指令位址在第一別名位址空間和第二別名位址空間之間的轉換而自動地切換在第一操作模式和第二操作模式之間,其中該第一別名位址空間中的至少一個虛擬位 址及該第二別名位址空間中的至少一個虛擬位址係對應於單一實體記憶體位址。
- 如申請專利範圍第15項所述之數位處理器裝置,其中程式定序器用來回應於虛擬指令位址從該第一別名位址空間轉換到該第二別名位址空間時,從該第一模式切換到該第二模式,並用來回應於虛擬指令位址從該第二別名位址空間轉換到該第一別名位址空間時,從該第二模式切換到該第一模式。
- 如申請專利範圍第15項所述之數位處理器裝置,其中該程式定序器用來存取該第一別名位址空間內具有第一指令長度之指令,並用來存取該第二別名位址空間內具有複數個指令長度之指令。
- 如申請專利範圍第17項所述之數位處理器裝置,其中在該複數個指令長度中之一個指令長度係該第一指令長度。
- 如申請專利範圍第17項所述之數位處理器裝置,其中該複數個指令長度包括第二指令長度和第三指令長度。
- 如申請專利範圍第19項所述之數位處理器裝置,其中該第一指令長度要比該第二指令長度和該第三指令長度還長。
- 如申請專利範圍第19項所述之數位處理器裝置,其中該第一指令長度為48位元,該第二指令長度為32位元而該第三指令長度為16位元。
- 如申請專利範圍第17項所述之數位處理器裝置,其中該程式定序器用來在每個時脈週期下提取對應於最大長度指令之一些位元。
- 如申請專利範圍第17項所述之數位處理器裝置,進一步包括了解碼器,其用於在該第二模式中決定目前指令長度,以及一指令校準緩衝器, 其用來回應於該目前指令長度而校準下一個指令。
- 如申請專利範圍第23項所述之數位處理器裝置,其中該指令校準緩衝器用來回應於該目前指令長度而搬移指令。
- 如申請專利範圍第15項所述之數位處理器裝置,其中該程式定序器用來偵測分支指令之目標指令的虛擬位址,並響應於偵測到該目標指令之該虛擬位址表示在該第一別名位址空間和該第二別名位址空間之間存有轉換時,在該第一模式和該第二模式之間切換。
- 如申請專利範圍第15項所述之數位處理器裝置,其中該第一別名位址空間為正規字元位址空間而該第二別名位址空間為短字元位址空間。
- 如申請專利範圍第15項所述之數位處理器裝置,其中該第一別名位址空間為虛擬位址空間之第一虛擬頁而該第二別名位址空間為該虛擬位址空間之第二虛擬頁。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/890,907 US7836285B2 (en) | 2007-08-08 | 2007-08-08 | Implementation of variable length instruction encoding using alias addressing |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201445442A TW201445442A (zh) | 2014-12-01 |
TWI520059B true TWI520059B (zh) | 2016-02-01 |
Family
ID=39940664
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097126741A TWI451329B (zh) | 2007-08-08 | 2008-07-15 | 運用別名定址法來實現可變長度的指令編碼 |
TW103125987A TWI520059B (zh) | 2007-08-08 | 2008-07-15 | 運用別名定址法來實現可變長度的指令編碼之方法及數位處理器裝置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097126741A TWI451329B (zh) | 2007-08-08 | 2008-07-15 | 運用別名定址法來實現可變長度的指令編碼 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7836285B2 (zh) |
EP (1) | EP2186001B1 (zh) |
JP (1) | JP5329541B2 (zh) |
KR (1) | KR101503554B1 (zh) |
CN (1) | CN101849222B (zh) |
TW (2) | TWI451329B (zh) |
WO (1) | WO2009020513A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8488210B2 (en) * | 2006-06-20 | 2013-07-16 | Datalogic ADC, Inc. | Imaging scanner with multiple image fields |
US20100312991A1 (en) * | 2008-05-08 | 2010-12-09 | Mips Technologies, Inc. | Microprocessor with Compact Instruction Set Architecture |
CN102077195A (zh) * | 2008-05-08 | 2011-05-25 | Mips技术公司 | 具有紧凑指令集架构的微处理器 |
US9274796B2 (en) | 2009-05-11 | 2016-03-01 | Arm Finance Overseas Limited | Variable register and immediate field encoding in an instruction set architecture |
US8438367B2 (en) * | 2009-05-19 | 2013-05-07 | Via Technologies, Inc. | Instruction extraction through prefix accumulation |
US8874888B1 (en) | 2011-01-13 | 2014-10-28 | Google Inc. | Managed boot in a cloud system |
US20120185688A1 (en) * | 2011-01-13 | 2012-07-19 | Google Inc. | Processor mode locking |
US9135037B1 (en) | 2011-01-13 | 2015-09-15 | Google Inc. | Virtual network protocol |
US8533343B1 (en) | 2011-01-13 | 2013-09-10 | Google Inc. | Virtual network pairs |
US8812586B1 (en) | 2011-02-15 | 2014-08-19 | Google Inc. | Correlating status information generated in a computer network |
US8261295B1 (en) | 2011-03-16 | 2012-09-04 | Google Inc. | High-level language for specifying configurations of cloud-based deployments |
US9063818B1 (en) | 2011-03-16 | 2015-06-23 | Google Inc. | Automated software updating based on prior activity |
US9237087B1 (en) | 2011-03-16 | 2016-01-12 | Google Inc. | Virtual machine name resolution |
US8533796B1 (en) | 2011-03-16 | 2013-09-10 | Google Inc. | Providing application programs with access to secured resources |
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9075979B1 (en) | 2011-08-11 | 2015-07-07 | Google Inc. | Authentication based on proximity to mobile device |
US8966198B1 (en) | 2011-09-01 | 2015-02-24 | Google Inc. | Providing snapshots of virtual storage devices |
US9069616B2 (en) | 2011-09-23 | 2015-06-30 | Google Inc. | Bandwidth throttling of virtual disks |
US8958293B1 (en) | 2011-12-06 | 2015-02-17 | Google Inc. | Transparent load-balancing for cloud computing services |
US8800009B1 (en) | 2011-12-30 | 2014-08-05 | Google Inc. | Virtual machine service access |
US8983860B1 (en) | 2012-01-30 | 2015-03-17 | Google Inc. | Advertising auction system |
US9672052B1 (en) | 2012-02-16 | 2017-06-06 | Google Inc. | Secure inter-process communication |
US8996887B2 (en) | 2012-02-24 | 2015-03-31 | Google Inc. | Log structured volume encryption for virtual machines |
US8677449B1 (en) | 2012-03-19 | 2014-03-18 | Google Inc. | Exposing data to virtual machines |
US9069806B2 (en) | 2012-03-27 | 2015-06-30 | Google Inc. | Virtual block devices |
US9430255B1 (en) | 2013-03-15 | 2016-08-30 | Google Inc. | Updating virtual machine generated metadata to a distribution service for sharing and backup |
US10235219B2 (en) * | 2015-07-27 | 2019-03-19 | Sony Interactive Entertainment America Llc | Backward compatibility by algorithm matching, disabling features, or throttling performance |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6273333A (ja) * | 1985-09-26 | 1987-04-04 | Nec Corp | エミュレーション制御装置 |
US5115500A (en) * | 1988-01-11 | 1992-05-19 | International Business Machines Corporation | Plural incompatible instruction format decode method and apparatus |
US5481684A (en) | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
GB2307072B (en) * | 1994-06-10 | 1998-05-13 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
US5638525A (en) * | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
JP3451595B2 (ja) * | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US5826074A (en) * | 1996-11-22 | 1998-10-20 | S3 Incorporated | Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register |
US5881258A (en) * | 1997-03-31 | 1999-03-09 | Sun Microsystems, Inc. | Hardware compatibility circuit for a new processor architecture |
JPH1173315A (ja) * | 1997-08-28 | 1999-03-16 | Saibaa Lab:Kk | 可変長命令プロセサ |
US6189090B1 (en) * | 1997-09-17 | 2001-02-13 | Sony Corporation | Digital signal processor with variable width instructions |
JP2000010863A (ja) * | 1998-06-24 | 2000-01-14 | Sony Computer Entertainment Inc | 情報処理装置および方法、並びに提供媒体 |
US6167459A (en) * | 1998-10-07 | 2000-12-26 | International Business Machines Corporation | System for reassigning alias addresses to an input/output device |
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6820189B1 (en) | 1999-05-12 | 2004-11-16 | Analog Devices, Inc. | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation |
US6571330B1 (en) * | 2000-01-14 | 2003-05-27 | Advanced Micro Devices, Inc. | Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor |
US7171543B1 (en) * | 2000-03-28 | 2007-01-30 | Intel Corp. | Method and apparatus for executing a 32-bit application by confining the application to a 32-bit address space subset in a 64-bit processor |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US6671791B1 (en) * | 2001-06-15 | 2003-12-30 | Advanced Micro Devices, Inc. | Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms |
JP4073721B2 (ja) * | 2002-06-28 | 2008-04-09 | 株式会社ルネサステクノロジ | データ処理装置 |
US7149873B2 (en) * | 2003-10-24 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | Methods and apparatus for a dual address space operating system |
US7421568B2 (en) * | 2005-03-04 | 2008-09-02 | Qualcomm Incorporated | Power saving methods and apparatus to selectively enable cache bits based on known processor state |
GB2435116B (en) | 2006-02-10 | 2010-04-07 | Imagination Tech Ltd | Selecting between instruction sets in a microprocessors |
-
2007
- 2007-08-08 US US11/890,907 patent/US7836285B2/en active Active
-
2008
- 2008-07-15 TW TW097126741A patent/TWI451329B/zh not_active IP Right Cessation
- 2008-07-15 TW TW103125987A patent/TWI520059B/zh not_active IP Right Cessation
- 2008-07-17 CN CN200880110576.6A patent/CN101849222B/zh not_active Expired - Fee Related
- 2008-07-17 JP JP2010519909A patent/JP5329541B2/ja not_active Expired - Fee Related
- 2008-07-17 EP EP08794539.0A patent/EP2186001B1/en not_active Not-in-force
- 2008-07-17 WO PCT/US2008/008725 patent/WO2009020513A1/en active Application Filing
- 2008-07-17 KR KR1020107004979A patent/KR101503554B1/ko active IP Right Grant
-
2010
- 2010-10-08 US US12/900,993 patent/US8332621B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US7836285B2 (en) | 2010-11-16 |
WO2009020513A1 (en) | 2009-02-12 |
TW200907796A (en) | 2009-02-16 |
KR101503554B1 (ko) | 2015-03-17 |
TW201445442A (zh) | 2014-12-01 |
EP2186001B1 (en) | 2018-06-13 |
TWI451329B (zh) | 2014-09-01 |
US20110078423A1 (en) | 2011-03-31 |
US8332621B2 (en) | 2012-12-11 |
US20090043990A1 (en) | 2009-02-12 |
JP2010536089A (ja) | 2010-11-25 |
EP2186001A1 (en) | 2010-05-19 |
CN101849222A (zh) | 2010-09-29 |
JP5329541B2 (ja) | 2013-10-30 |
CN101849222B (zh) | 2014-01-29 |
KR20100061463A (ko) | 2010-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI520059B (zh) | 運用別名定址法來實現可變長度的指令編碼之方法及數位處理器裝置 | |
US20210149820A1 (en) | Two address translations from a single table look-aside buffer read | |
US11693660B2 (en) | Data processing apparatus having streaming engine with read and read/advance operand coding | |
EP2018609B1 (en) | Pre-decoding variable length instructions | |
US4586130A (en) | Central processing unit for a digital computer | |
US6275927B2 (en) | Compressing variable-length instruction prefix bytes | |
US11934833B2 (en) | Stream data unit with multiple head registers | |
JP2016539423A (ja) | 命令セット変換システム及び方法 | |
WO1999014669A1 (en) | Digital signal processor with variable width instructions | |
US6460116B1 (en) | Using separate caches for variable and generated fixed-length instructions | |
US4893235A (en) | Central processing unit for a digital computer | |
CN108920188B (zh) | 一种扩展寄存器堆的方法及装置 | |
US5404471A (en) | Method and apparatus for switching address generation modes in CPU having plural address generation modes | |
KR100611305B1 (ko) | 주소 맵핑 방법 및 장치 | |
JP3644892B2 (ja) | 複数組の命令組を実行するためのデータ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |