TWI498818B - 指示可變長度指令集的指令長度之技術 - Google Patents
指示可變長度指令集的指令長度之技術 Download PDFInfo
- Publication number
- TWI498818B TWI498818B TW101147450A TW101147450A TWI498818B TW I498818 B TWI498818 B TW I498818B TW 101147450 A TW101147450 A TW 101147450A TW 101147450 A TW101147450 A TW 101147450A TW I498818 B TWI498818 B TW I498818B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- length
- byte
- bytes
- processor
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims description 63
- 238000000034 method Methods 0.000 claims description 14
- 239000000284 extract Substances 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明之一些實施例通常涉及處理器之操作。更具體而言,本發明之一些實施例涉及指示可變長度指令集之指令之長度。
處理器可具有包括處理器能夠執行之指令的相關指令集。在一些情況下,指令集可包括可變長度指令,例如,至少一指令可具有不同於指令集中之另一指令的長度。為了說明,指令集中之至少一些指令可包括可由前代處理器執行之指令,以便能夠與前代處理器向後相容。決定每個指令之長度可消耗時間(例如,處理器週期)、功率或兩者。
依據本發明之一實施例,係特地提出一種包括一或多個核心的處理器,該一或多個核心中之至少一核心包含:一指令快取記憶體;以及一預解碼單元,其包含可藉由該處理器執行的邏輯,以執行包含以下之操作:使用指
向該指令快取記憶體中之第一位元組的一邏輯指令指標,自該指令快取記憶體讀取該第一位元組;偵測該第一位元組是否包括指令之長度;以及響應於偵測到該第一位元組包括該指令之長度,基於該指令之長度自該指令快取記憶體讀取該指令。
100、200、800‧‧‧構架
102‧‧‧裝置
104‧‧‧處理器
106‧‧‧記憶體控制器
108‧‧‧記憶體
110‧‧‧核心
112‧‧‧執行單元
114‧‧‧指令佇列
116‧‧‧指令長度解碼器
118‧‧‧預解碼單元
120‧‧‧一級(L1)指令快取記憶體
122‧‧‧較高階快取記憶體
124‧‧‧解碼的指令
126‧‧‧邏輯指令指標
128‧‧‧結構
130‧‧‧位元組
132‧‧‧區塊
202‧‧‧指令
204‧‧‧長度
206‧‧‧邏輯
208‧‧‧預定規則
210‧‧‧第一解碼的指令
212‧‧‧第N個解碼的指令
300‧‧‧構架
302‧‧‧第一位元組
304‧‧‧第二位元組
306‧‧‧第M個位元組
308‧‧‧指示位元
310‧‧‧值
312‧‧‧編碼的值
400、500、600、700‧‧‧程序
402~~414、502~512、602~610、702~710‧‧‧方塊
802‧‧‧時脈產生器
804‧‧‧輸入/輸出控制集線器
806‧‧‧電源
808‧‧‧第N個核心
810‧‧‧大容量儲存器
812‧‧‧作業系統
814‧‧‧網路端口
816‧‧‧網路
818‧‧‧顯示裝置
詳細說明參考附圖來闡述。在附圖中,參考數字之最左側數位辯識出參考數字首次出現於其中的圖式。在不同圖式中使用相同參考數字指示相似或相同項目或特徵。
圖1例示根據一些實行方案包括預解碼單元及指令長度解碼器之實例構架。
圖2例示根據一些實行方案包括解碼之指令的實例構架。
圖3例示根據一些實行方案包括指令快取記憶體之實例構架。
圖4例示根據一些實行方案包括自指令快取記憶體讀取多個位元組的實例程序之流程圖。
圖5例示根據一些實行方案包括決定是否自指令快取記憶體讀取之具體位元組識別指令長度的實例程序之流程圖。
圖6例示根據一些實行方案包括基於預定規則來決定指令長度的實例程序之流程圖。
圖7例示根據一些實行方案包括在邏輯指令指標
所指向之具體位元組處開始自指令快取記憶體讀取一或多個位元組的實例程序之流程圖。
圖8例示根據一些實行方案包括指令長度解碼器之實例構架800,該指令長度解碼器用於修改指令快取記憶體中之位元組以便包括指令長度。
本文描述之技術通常涉及識別來自可變長度指令集之指令之長度。處理器可能夠執行包括可變長度指令之指令集(例如,指令集之至少一指令具有不同於指令集之另一指令的長度)。處理器可包括指令長度解碼器,該指令長度解碼器用於自指令快取記憶體讀取多個位元組,決定包括於多個位元組中之指令之長度,並且自多個位元組解碼(例如,提取)指令。決定指令之長度可消耗時間、功率或兩者。舉例而言,多個時鐘週期可用於決定指令之長度。
當處理器執行一執行緒時,一或多個指令可被重複地執行,例如在一或多個指令為疊代程序之一部分時或在一或多個指令為頻繁執行之分支操作的目的地時。在此實例中,指令長度解碼器可重複地解碼在執行該執行緒期間由處理器重複地執行之彼等指令的長度。舉例而言,若具體指令在六十秒時段內被執行十次,則指令長度解碼器可在六十秒時段期間決定具體指令之長度十次。
為了解決此等類型之情況,在計算指令之長度之
後,指令長度解碼器可修改指令被編碼於其中之位元組的一或多者以便包括指令之長度。舉例而言,在一些情況下,指令可包括一或多個前綴位元組。前綴位元組可修改行為指令。舉例而言,前綴位元組可改變指令之預設暫存器、置換機器字之預設大小、控制字串指令中之循環、控制匯流排使用、修改其他指令相關行為,或其任何組合。指令快取記憶體中之多個位元組可包括前綴位元組及指令。在決定指令之長度之後,指令長度解碼器可修改至少一前綴位元組以便包括指令之長度。
預解碼單元可用於自指令快取記憶體讀取多個位元組。預解碼單元可決定是否來自多個位元組之一位元組包括指令之長度(例如,若多個位元組先前經過修改以便包括長度)。若位元組包括長度,則預解碼單元可基於指令之長度自多個位元組提取指令。若位元組不包含(例如,不包括)指令之長度,則預解碼單元可將多個位元組發送至指令長度解碼器以便決定指令之長度。(a)若指令長度解碼器未決定指令之長度或(b)若指令長度先前被決定但是多個位元組(例如,其包括指令及長度)自指令快取記憶體清除,則位元組可不包括指令之長度。舉例而言,若自從最後一次存取多個位元組以來已經過去之時間量滿足臨界值,則包括指令及長度之多個位元組可自指令快取記憶體清除。
因此,預解碼單元可自指令快取記憶體讀取多個位元組並且決定是否來自多個位元組之一位元組包括指令之長度。若位元組包括長度,則預解碼單元可自多個位元
組提取(例如,解碼)指令並且將指令放置於指令佇列中以便由處理器執行。若位元組不包括長度,則預解碼單元可將多個位元組發送至指令長度解碼器。指令長度解碼器可基於預定規則來決定指令之長度並且修改多個位元組中之一者以便包括長度供後續存取。在決定指令之長度之後,指令長度解碼器可基於長度自多個位元組提取指令並且將指令放置於指令佇列中供處理器執行。當預解碼單元隨後讀取多個位元組時,預解碼單元可決定多個位元組包括指令之長度並且基於長度自多個位元組提取指令。以此方式,在每個指令儲存於指令快取記憶體中的時間期間,每個指令之長度可被決定一次(例如,而非重複地),從而減少指令長度解碼器重複地決定長度所消耗的時間及/或功率。
圖1例示根據一些實行方案包括預解碼單元及指令長度解碼器之實例構架100。構架100包括裝置102,例如桌上型電腦電子裝置、膝上型電腦電子裝置、無線電子裝置及其類似裝置。裝置102可包括處理器104、記憶體控制器106及記憶體108。記憶體控制器106可用於藉由自記憶體108讀取或寫入記憶體108來存取記憶體108。記憶體108可包括唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存器、其他類型之記憶體,或其任何組合。
處理器104可包括一或多個核心,例如核心110。核心110可包括執行單元112、指令佇列114、指令長度解碼器116、預解碼單元118及一級(L1)指令快取記憶體120。處理器104亦可包括一或多個快取記憶體,例如較高階快取記
憶體122。在一些實行方案中,較高階快取記憶體122可為二級(L2)快取記憶體,而在其他實行方案中,較高階快取記憶體可為末級快取記憶體(LLC)。裝置102可包括額外快取記憶體,例如L1資料快取記憶體,但是為了清楚起見未在圖1予以例示。指令佇列114可用於將一或多個指令,例如解碼的指令124置於佇列中以便由執行單元112執行。執行單元112可具有包括執行單元112能夠執行之指令的相關指令集。指令集可包括可變長度指令,例如,第一指令指令集可具有第一長度並且第二指令指令集可具有不同於第一長度之第二長度。
在執行指令佇列114中之指令期間,執行單元112可藉由執行指令擷取而請求來自指令佇列114之指令。舉例而言,在執行一組指令時,分支操作可導致執行單元112擷取(例如,請求)指令。若指令不在指令佇列114中,預解碼單元118可決定是否指令L1在指令快取記憶體120中。
預解碼單元118可使用邏輯指令指標126讀取來自L1指令快取記憶體120之結構128。結構128可與將要自L1指令快取記憶體120讀取之一或多個位元組130相關聯。邏輯指令指標126可指向位元組130、相關結構128或兩者。位元組130可包括指令,例如由執行單元112請求之指令。結構128可指示是否相關位元組130包括指令之長度。
結構128可使用許多不同方案來實施。舉例而言,在一些實行方案中,結構128可包括單一位元,其用於指示是否位元組130之一具體位元組包括位元組130中之指
令之長度。在其他實行方案中,結構128可包括兩個或兩個以上位元。舉例而言,在兩位元方案中,第一位元可用於指示是否位元組130之具體位元組包括指令之長度並且第二位元可用於指示是否長度被編碼於指令之前綴位元組中。當然,其他方案可用於結構128以便識別是否位元組130包括被編碼於位元組130中之指令長度。在此等其他方案之一些方案中,結構128可包括一個以上位元。在圖2中,結構128展示為與位元組130分開。然而,在一些實行方案中,位元組130可被修改成包括結構128。舉例而言,位元組130可包括前綴位元組及指令。前綴位元組可被修改成包括結構128。
若結構128指示指令之長度包括於位元組130中,則預解碼單元118可決定指令之長度、基於長度自位元組130解碼指令,並且將解碼的指令124放置於指令佇列114中以便由執行單元112作為下一個指令來執行。若結構128不指示編碼於位元組130中之指令長度,則預解碼單元118可指示指令長度解碼器116來決定指令之長度。指令長度解碼器116可決定指令之長度、基於長度自位元組130解碼指令,並且將解碼指令124放置於指令佇列114中以便由執行單元112作為下一個指令來執行。
在決定指令之長度之後,指令長度解碼器116可修改位元組130中之至少一者以便包括指令之長度。指令長度解碼器116可修改結構128以便指示位元組130中之至少一者被修改成包括指令之長度。舉例而言,結構128可被修
飾成指示位元組130中之至少一者被修飾成包括指令之長度。隨後,若執行單元112請求來自L1指令快取記憶體120之指令,則預解碼單元118可決定(例如,基於結構128)位元組130包括指令之長度並且自位元組130解碼(例如,提取)指令。以此方式,在位元組130駐留於L1指令快取記憶體120中之具體時段期間,當最初請求指令時,編碼於位元組130中之指令長度可由指令長度解碼器116來決定。在具體時段期間對於來自L1指令快取記憶體120之指令的後續請求可導致預解碼單元118自位元組130中之一者決定指令之長度並且基於長度自位元組130提取指令,而不調用指令長度解碼器116。
在一些實行方案中,預解碼單元118及指令長度解碼器116可並行(例如,實質上同時)操作。舉例而言,預解碼單元118可實質上與指令長度解碼器116讀取位元組130同時讀取結構128。預解碼單元118可決定是否位元組130中之一者包括指令之長度並且若位元組130不包括指令之長度,則可指示指令長度解碼器116決定指令之長度。在其他實行方案中,預解碼單元118及指令長度解碼器116可以連續方式來操作。舉例而言,與預解碼單元118及指令長度解碼器116並行操作之實行方案比較,預解碼單元118及指令長度解碼器116連續操作之實行方案可消耗較少功率。
若執行單元112請求之指令不在L1指令快取記憶體120中,則可發生L1漏失,並且可自較高階快取記憶體122請求指令。若指令包括於較高階快取記憶體122中,則可將
指令提供至L1指令快取記憶體120。若指令不包括於較高階快取記憶體122中,則可發生漏失並且記憶體控制器106可讀取來自記憶體108之一或多個區塊132並且將區塊132填充至快取記憶體120或122之一或多者中。舉例而言,若較高階快取記憶體122包含L1指令快取記憶體120,則可將區塊132填充至快取記憶體120及122中。作為另一實例,若較高階快取記憶體122不包括L1指令快取記憶體120,則可將區塊132填充至L1指令快取記憶體120中。
因此,指令長度解碼器116可在執行單元112請求具體指令之後決定編碼於位元組130中之具體指令之長度。指令長度解碼器116可修改位元組130(例如,前綴位元組)中之至少一者以便包括具體指令之長度並且可修改結構128以便指示位元組130中之至少一者包括具體指令之長度。隨後,若執行單元112請求具體指令,則預解碼單元118可例如基於結構128來決定位元組130包括具體指令之長度並且自位元組130解碼(例如,提取)具體指令。以此方式,在指令駐留於L1指令快取記憶體120中之時間期間對於來自L1指令快取記憶體120之具體指令的後續請求可導致預解碼單元118基於儲存於位元組130中之先前決定之長度自位元組130提取指令。在位元組130駐留於L1指令快取記憶體120中之時間期間,可自位元組130提取指令而不重複地決定指令之長度。
圖2例示根據一些實行方案包括解碼之指令的實例構架200。構架200包括來自圖1之核心110的執行單元
112、指令佇列114、指令長度解碼器116、預解碼單元118、指令快取記憶體120及邏輯指令指標126。
邏輯指令指標126可指向將要自L1指令快取記憶體120讀取之一組位元組130。位元組130可包括指令202。結構128可與位元組130中之至少一者相關並且可指示是否位元組包括指令202之長度204。結構128可使用一或多個位元來實施。舉例而言,結構128中之第一位元可指示是否位元組130包括長度204,而結構128中之一或多個額外位元可識別長度204在位元組130中之位置。舉例而言,一或多個額外位元可指示是否長度204包括於指令202之前綴位元組中。在一些實行方案中,結構128可包括針對指令202中之每個位元組之一個位元。
預解碼單元118可包括邏輯206,例如可由處理器104執行以便執行各種功能的硬體邏輯或邏輯指令。舉例而言,邏輯206可基於邏輯指令指標126自L1指令快取記憶體120讀取與位元組130相關之結構128。邏輯206可基於結構128來決定是否位元組130包括長度204。若結構128指示指令202之長度204包括於位元組130中,邏輯206可自位元組130提取(例如,解碼)長度204並且(例如,藉由自指令快取記憶體120讀取對應於長度204的許多位元組130)來基於長度204自位元組130解碼指令202。若結構128指示位元組130不包含(例如,不包括)長度204,則邏輯206可指示指令長度解碼器116決定指令202之長度204。
指令長度解碼器116可自指令快取記憶體120讀
取位元組130,決定指令202之長度204,並且基於長度204自位元組130解碼指令202。在一些實行方案中,決定指令202之長度204可耗用執行單元112之多個操作週期。指令長度解碼器116可使用一或多個預定規則208來決定指令202之長度204。為了說明,包括執行單元112能夠執行之指令的指令集可能在長度方面自一個位元組至十五或更多個位元組而有所不同。指令可能在大小方面會有所不同,此歸因於(i)每個指令中之操作碼(operational code)(「操作碼(opcode)」)可能在大小方面會有所不同;(ii)一些指令可具有相關前綴而其他指令可具有相關前綴,(iii)視操作碼而定,前綴可能在大小方面會有所不同,或其任何組合。
預解碼單元118或指令長度解碼器116可自位元組130解碼指令202並且將指令放置於指令佇列114中。指令佇列114可包括多個指令,例如第一解碼的指令210及第N個解碼的指令212,其中N大於一。可自指令佇列114擷取解碼的指令210及212以便由執行單元112執行。
在決定長度204之後,指令長度解碼器116可修改位元組130中之至少一者以便包括長度204。指令長度解碼器116可修改結構128以便指示位元組130包括指令202之長度204。舉例而言,結構128可被修飾成指示來自位元組130之前綴位元組包括長度204。若預解碼單元118隨後收到對於來自L1指令快取記憶體120之指令202的請求,則邏輯206可決定(例如,基於結構128)位元組130包括長度204並且自位元組130解碼(例如,提取)指令202。以此方式,在位元組
130駐留於L1指令快取記憶體120中之具體時段期間,在最初請求指令202時可由指令長度解碼器116決定長度204,並且對於來自L1指令快取記憶體120之指令的後續請求可導致邏輯206自位元組130決定長度204。
在一些實行方案中,預解碼單元118及指令長度解碼器116可並行(例如,實質上同時)操作。舉例而言,預解碼單元118可實質上與指令長度解碼器116讀取位元組130同時讀取結構128。預解碼單元118可決定是否位元組130包括長度204並且若位元組130不包括長度204,則可指示指令長度解碼器116決定長度204。
因此,響應於執行單元112請求指令202,指令長度解碼器116可決定編碼於位元組130中之指令202之長度204。指令長度解碼器116可修改位元組130以便包括指令202之長度204並且可修改結構128以便指示位元組130包括長度204。隨後,在執行單元112請求指令202時,預解碼單元118可基於結構128來決定位元組130包括長度204並且基於長度204自位元組130解碼(例如,提取)指令202。以此方式,在指令202駐留於L1指令快取記憶體120中之時間期間自L1指令快取記憶體擷取指令202之後續請求可導致預解碼單元118基於先前決定之長度204自位元組130解碼指令202。
圖3例示根據一些實行方案包括指令快取記憶體之實例構架300。邏輯指令指標122可指向將要自L1指令快取記憶體120讀取之位元組130。位元組130可包括第一位元
組302、第二位元組304及額外位元組,直至並且包括第M個位元組306,其中M大於二。舉例而言,在一些實行方案中,位元組130可包括十六個位元組(例如,M=16)。結構128可與一個更多個位元組302、304或306相關並且可包括一或多個指示位元308。指示位元308可指示是否位元組130包括圖2之指令202之長度204。指示位元308可指示位元組302、304或306中之哪一個包括長度204。
在一些實行方案中,第一位元組302可為前綴位元組。舉例而言,位元組302、304及306可包括具有一或多個前綴位元組之指令。若第一位元組302為指令(例如,指令202)之前綴位元組,則第一位元組302可具有作為指令之前綴之一部分的值310。為了使得第一位元組可包括指令之長度204及作為前綴一部分的值310,值310可使用編碼方案來編碼以便產生編碼的值312。舉例而言,在決定指令202之長度204之後,圖2之指令長度解碼器116可決定第一位元組302之值310、產生編碼的值312,並且修改第一位元組302以便包括指令之長度204及編碼的值312。
因此,若第一位元組302為指令(例如,指令202)之前綴位元組,則第一位元組302可被修飾成包括長度204及編碼的值312,其編碼第一位元組302之原始值310。藉由修飾指令之前綴位元組以便包括指令之長度,指令之長度可包括於位元組130中而不添加額外位元組。以此方式,可對於圖1之處理器104之架構進行輕微修改以便能夠識別位元組130中之指令之長度。因為未添加額外位元組,所以由
修改第一位元組302以便包括長度204及編碼值312所產生的計算開銷相對較小並且由於不使用指令長度解碼器116來重複地決定重複地擷取供執行的指令之長度而大大抵銷。
圖4、5、6及7例示之流程圖描述決定是否包括指令之位元組亦包括指令之長度的程序。在圖4、5、6及7之流程圖中,每個方塊代表可實施於硬體、韌體、軟體或其組合中之一或多個操作。圖4、5、6及7中描述之程序可由指令佇列114、指令長度解碼器116、預解碼單元118或L1指令快取記憶體120中之一或多者來執行。在硬體之情境下,方塊代表被組配成執行所列舉之操作的硬體邏輯。在韌體或軟體之情境下,方塊代表在由處理器執行時導致處理器執行所列舉之操作的電腦可執行指令。通常,電腦可執行指令包括常式、程式、對象、模組、組件、資料結構及其類似指令,其執行具體功能或實施具體抽象資料類型。描述方塊之順序不意欲理解為具有限制性,並且所描述的許多操作可以任何順序及/或並行組合以便實施該等程序。出於討論目的,程序400、500、600及700參照如上所述之構架100、200及300中之一或多者來描述,但是其他模型、構架、系統及環境可用於實施此等程序。
圖4例示根據一些實行方案包括自指令快取記憶體讀取多個位元組的實例程序之流程圖。
在方塊402處,可自指令快取記憶體讀取多個位
元組。在方塊404處,可決定是否多個位元組中之一個位元組識別指令之指令長度。舉例而言,在圖2中,預解碼單元118可讀取位元組130並且決定是否位元組130包括指令202之長度204。
若在404處多個位元組中之一個位元組識別指令之指令長度,則可在406處基於位元組來決定指令之指令長度。在408處,可基於指令長度自多個位元組讀取指令。舉例而言,在圖2中,若預解碼單元118確定位元組130包括長度204,則預解碼單元118可自位元組130決定長度204並且基於長度204自位元組130讀取指令202。為了說明,若長度204指示指令為十個位元組長,則預解碼單元118可自指令快取記憶體120讀取位元組130中之十個位元組。
在410處,指令可寫入指令佇列。舉例而言,在圖2中,預解碼單元118可將指令202寫入指令佇列114。
若在404處多個位元組中之一個位元組不識別(例如,不包括)該指令之指令長度,則在412處可基於預定規則來解碼該指令之指令長度。在414處,多個位元組可被修飾成包括指令之指令長度。舉例而言,在圖2中,指令長度解碼器116可基於規則208來決定指令202之長度204202並且修改位元組130以便包括長度204。為了說明,在圖3中,指令長度解碼器116可修改第一位元組302以便包括長度204及編碼的值312。
在408處,可基於指令長度自多個位元組讀取指令。舉例而言,在圖2中,在指令長度解碼器116確定長度
204之後,可基於長度204自位元組130解碼(例如,提取)指令202。在410處,指令可寫入指令佇列。舉例而言,在圖2中,預解碼單元118可將指令202寫入指令佇列114。
圖5例示根據一些實行方案包括決定是否自指令快取記憶體讀取之具體位元組識別指令長度的實例程序之流程圖。
在方塊502處,可基於邏輯指令指標自指令快取記憶體讀取包括指令之多個位元組。在方塊504處,可決定是否多個位元組中之一具體位元組識別指令之長度。舉例而言,在圖2中,預解碼單元118可基於邏輯指令指標126來讀取位元組130並且決定是否位元組130包括指令202之長度204。
在506處,若多個位元組中之一具體位元組不包括指令之長度,則可決定指令之長度、可基於長度自多個位元組讀取指令,並且多個位元組中之一具體位元組可被修飾成包括指令之長度。舉例而言,在圖2中,若位元組130不包括長度204,則指令長度解碼器116可決定指令202之長度204並且修改位元組130以便包括長度204。
在508處,若具體位元組包括值,則可自具體位元組提取值、值可被編碼以便產生編碼的值,並且多個位元組中之一具體位元組可被修飾成包括編碼的值。在一些實行方案中,具體位元組可包含指令之前綴位元組。舉例而言,在圖3中,指令長度解碼器116可自第一位元組302提取值310、將值310編碼以便產生編碼的值312,並且修改第
一位元組302以便包括編碼的值312。
在510處,若多個位元組中之一具體位元組識別指令之指令長度,則可基於長度自多個位元組讀取指令。舉例而言,在圖2中,預解碼單元118可基於長度204自位元組130讀取指令202。
在512處,可將指令放置於指令佇列中以便能夠由處理器之執行單元來執行指令。舉例而言,在圖2中,預解碼單元118或指令長度解碼器116可將指令202放置於指令佇列114中以便由執行單元112來執行。
圖6例示根據一些實行方案包括基於預定規則來決定指令長度的實例程序之流程圖。
在方塊602處,可使用邏輯指令指標自指令快取記憶體讀取第一位元組。在方塊404處,可決定是否第一位元組包括指令之長度。舉例而言,在圖2中,預解碼單元118可基於邏輯指令指標126來讀取位元組130中之第一位元組並且決定是否第一位元組包括指令202之長度204。
若在604處,第一位元組不包括指令之長度,則可在606處基於預定規則來決定指令之長度並且第一位元組可被修飾成包括指令之長度,並且程序繼續進行至608。舉例而言,在圖2中,指令長度解碼器116可基於規則208來決定指令202之長度204202並且修改位元組130以便包括長度204。為了說明,在圖3中,指令長度解碼器116可修改第一位元組302以便包括長度204。若在604處,第一位元組包括指令之長度,則程序繼續進行至608。
在608處,可基於指令之長度自指令快取記憶體讀取指令。舉例而言,在圖2中,若位元組130包括長度204,則可基於長度204自位元組130解碼(例如,提取)指令202。
在610處,可將指令放置於指令佇列中供處理器之執行單元來執行。舉例而言,在圖2中,預解碼單元118或指令長度解碼器116可將指令202放置於指令佇列114中以便由執行單元112來執行。
圖7例示根據一些實行方案包括在邏輯指令指標所指向之具體位元組處開始自指令快取記憶體讀取一或多個位元組的實例程序之流程圖。
在方塊702處,可在邏輯指令指標所指向之具體位元組處開始自指令快取記憶體讀取一或多個位元組。在方塊704處,可決定是否一或多個位元組包括指令之長度。舉例而言,在圖2中,預解碼單元118可基於邏輯指令指標126來讀取位元組130並且決定是否位元組130包括指令202之長度204。
在706處,響應於決定一或多個位元組包括指令之長度,可基於長度自一或多個位元組提取指令。舉例而言,在圖2中,若位元組130包括長度204,則預解碼單元118可基於長度204自位元組130提取指令202。
在708處,響應於一或多個位元組不包括指令之長度的決定,可決定指令之長度並且可基於指令之長度自一或多個位元組提取指令。舉例而言,在圖2中,若位元組130不包括長度204,則指令長度解碼器116可決定指令202
之長度204並且基於長度204自位元組130提取指令202。位元組130可被修飾成包括長度204。
在710處,可將指令放置於指令佇列中以使得處理器能夠執行指令。舉例而言,在圖2中,預解碼單元118或指令長度解碼器116可將指令202放置於指令佇列114中以便由執行單元112來執行。
圖8例示根據一些實行方案包括指令長度解碼器之實例構架800,該指令長度解碼器用於修改指令快取記憶體中之位元組以便包括指令長度。構架800包括裝置102,其可為電子裝置,例如桌上型計算裝置、膝上型計算裝置、平板計算裝置、上網本計算裝置、無線計算裝置及其類似裝置。
裝置102可包括一或多個處理器,例如處理器104、時脈產生器802、記憶體108、輸入/輸出控制集線器804及電源806(例如,電池或供電)。在一些實行方案中,處理器104可包括一個以上核心,例如第一核心110及一或多個額外核心,直至並且包括第N個核心808,其中N為二或二以上。處理器104可包括記憶體控制器106以便能夠存取(例如,讀取或寫入)記憶體108。
核心N個核心110及808中之至少一者可包括圖1之執行單元112、指令佇列114、指令長度解碼器116、預解碼單元118、L1指令快取記憶體120、邏輯指令指標126及較高階快取記憶體122(例如,L2快取記憶體或LLC)。當執行單元112請求指令202時,指令長度解碼器116可使用邏輯指
令指標126自L1指令快取記憶體讀取位元組130,決定指令之長度202,並且修改位元組130中之一或多者以便包括長度204。當執行單元112後來請求指令202時,預解碼單元118可決定位元組130包括指令之長度202,並且基於長度204自位元組130解碼指令202。
時脈產生器802可產生時脈信號,其為處理器104之N個核心110及808中之一或多者之工作頻率的基礎。舉例而言,N核心110及808中之一或多者可在時脈產生器802產生之時脈信號的倍數下操作。
輸入/輸出控制集線器804可耦接至大容量儲存器810。大容量儲存器810可包括一或多個非依電性儲存器裝置,例如磁碟機、固態驅動器及其類似裝置。作業系統812可儲存於大容量儲存器810中。
輸入/輸出控制集線器804可耦接至網路端口814。網路端口814可使得裝置102能夠經由網路816與其他裝置通訊。網路816可包括多個網路,例如纜線網路(例如,公用交換電話網路及其類似網路)、無線網路(例如,802.11、分碼多工存取網路(CDMA)、行動通訊全球系統(GSM)、長期演進技術(LTE)及其類似網路)、其他類型之通訊網路或其任何組合。輸入/輸出控制集線器804可耦接至能夠展示本文、圖形及其類似項目之顯示裝置818。
如本文描述,處理器104可包括多個計算單元或多個核心。處理器104可實施為一或多個微處理器、微電腦、微控制器、數位信號處理器、中央處理單元、狀態機、
邏輯電路,及/或基於操作指令來操作信號之任何裝置。除了其他能力以外,處理器104可被組配成擷取並且執行儲存於記憶體108或其他電腦可讀媒體中之電腦可讀指令。
記憶體108為用於儲存指令之電腦儲存媒體的實例,該等指令由處理器104執行以便執行如上所述之各種功能。記憶體108可通常包括依電性記憶體及非依電性記憶體(例如,RAM、ROM等)。記憶體108可在本文中被稱為記憶體或電腦儲存媒體,並且可為能夠將電腦可讀、處理器可執行程式指令以電腦程式碼形式加以儲存之非暫時性媒體,該電腦程式碼可由處理器104來執行,該處理器為被組配成執行本文之實行方案中所描述的操作及功能的具體機器。處理器104可包括模組及組件,該等模組及組件用於識別根據本文之實行方案具有可變長度指令之指令集之指令之長度。
本文描述之實例系統及計算裝置僅僅為適合於一些實行方案之實例並且不意欲暗示關於可實施本文描述之程序、組件及特徵的環境、架構及構架之範圍、使用或功能的任何限制。因此,本文之實行方案可在許多環境或架構中操作,並且可實施於通用及專用計算系統,或具有處理能力之其他裝置中。通常,參照附圖描述之任何功能可使用軟體、硬體(例如,固定邏輯電路)或此等實行方案之組合來實施。如本文使用之用詞「模組」、「機構」或「組件」通常代表可被組配成實施規定功能之軟體、硬體或軟體與硬體之組合。例如,在軟體實行方案之情況下,用詞
「模組」、「機構」或「組件」可代表在執行於處理裝置或裝置(例如,CPUs或處理器)上時執行指定任務或操作的程式碼(及/或宣告型指令)。程式碼可儲存於一或多個電腦可讀記憶體裝置或其他電腦儲存裝置中。因此,本文描述之程序、組件及模組可由電腦程式產品來實施。
此外,本揭示案提供如附圖中描述及說明之各種實例實行方案。然而,本揭示案不限於本文描述及說明之實行方案,而是可延伸至如熟習此項技術者已知或將已知之其他實行方案。說明書中提及「一實行方案」、「此實行方案」「此等實行方案」或「一些實行方案」意味所描述的具體特徵、結構或特性包括於至少一實行方案中,並且此等片語出現於說明書之不同位置中不一定都涉及相同實行方案。
雖然標的物已經用構造特徵及/或方法行為所特有的語言來描述,但是附加申請專利範圍中所定義之標的物不限於如上所述之具體特徵或行為。實際上,如上所述之具體特徵及行為以實施申請專利範圍之實例形式來揭示。本揭示案意欲涵蓋所揭示的實行方案之任何及所有調適或變化形式,並且以下申請專利範圍不應理解限於說明書中揭示之具體實行方案。替代地,此文件之範圍完全由以下申請專利範圍,以及此申請專利範圍有資格享有之均等物的完全範圍來決定。
100‧‧‧構架
102‧‧‧裝置
104‧‧‧處理器
106‧‧‧記憶體控制器
108‧‧‧記憶體
110‧‧‧核心
112‧‧‧執行單元
114‧‧‧指令佇列
116‧‧‧指令長度解碼器
118‧‧‧預解碼單元
120‧‧‧一級(L1)指令快取記憶體
122‧‧‧較高階快取記憶體
124‧‧‧解碼的指令
126‧‧‧邏輯指令指標
128‧‧‧結構
130‧‧‧位元組
132‧‧‧區塊
Claims (20)
- 一種包括一或多個核心的處理器,該一或多個核心中之至少一核心包含:一指令快取記憶體;以及一預解碼單元,其包含可由該處理器執行的邏輯,用以進行包含下列之操作:使用指向該指令快取記憶體中之一第一位元組的一邏輯指令指標而自該指令快取記憶體讀取該第一位元組;偵測該第一位元組是否包括一指令之長度;以及響應於偵測到該第一位元組包括該指令之長度,基於該指令之長度而自該指令快取記憶體讀取該指令。
- 如申請專利範圍第1項之處理器,其中,該邏輯進一步可由該處理器執行來進行包含下列之操作:響應於偵測到該第一位元組不包括該指令之長度,基於預定規則來偵測該指令之長度。
- 如申請專利範圍第2項之處理器,其中,該邏輯進一步可由該處理器執行來進行包含下列之操作:將該等多個位元組中之該第一位元組修改為包括有該指令之長度。
- 如申請專利範圍第1項之處理器,其中,該邏輯進一步 可由該處理器執行來進行包含下列之操作:偵測該第一位元組是否包括一值;響應於偵測到該第一位元組包括該值,自該第一位元組提取該值;以及基於一編碼方案來對該值進行編碼,以產生一編碼值。
- 如申請專利範圍第4項之處理器,其中,該邏輯進一步可由該處理器執行來進行包含下列之操作:將該等多個位元組中之該第一位元組修改為包括有該編碼值。
- 如申請專利範圍第1項之處理器,其進一步包含:一指令佇列,其包括多個經解碼指令;以及一執行單元,其能夠執行該等多個經解碼指令。
- 如申請專利範圍第6項之處理器,其中,該邏輯進一步可由該處理器執行來進行包含下列之操作:將該指令置於該指令佇列中以供該執行單元執行。
- 一種包括一或多個處理器的系統,該一或多個處理器中之至少一者包含:一指令快取記憶體;以及一預解碼單元,其包括可由該處理器執行之邏輯,用以進行下列動作:從由一邏輯指令指標所指向的一具體位元組處開始,自該指令快取記憶體讀取一或多個位元組; 判定該一或多個位元組是否包括一指令之長度;以及響應於偵測到該一或多個位元組包括該指令之長度,基於該長度而自該一或多個位元組提取該指令。
- 如申請專利範圍第8項之系統,其中,該邏輯可由該處理器執行來進行下列動作:響應於偵測到該一或多個位元組不包括該指令之長度,判定該指令之長度;以及基於該指令之長度,自該一或多個位元組提取該指令。
- 如申請專利範圍第9項之系統,其中,該邏輯可由該處理器執行來進行下列動作:將該一或多個位元組修改為包括有該指令之長度。
- 如申請專利範圍第8項之系統,其進一步包含:一指令佇列,用以儲存自該指令快取記憶體所提取出的數個指令;以及一執行單元,用以執行來自該指令佇列的該等指令中之至少一者。
- 如申請專利範圍第11項之系統,其中,該邏輯可由該處理器執行來進行下列動作:將該指令置於該指令佇列中,以使該處理器能夠執行該指令。
- 如申請專利範圍第8項之系統,其中: 該一或多個位元組包括該指令之一前綴位元組;以及該前綴位元組包括該指令之長度。
- 一種處理指令的方法,其包含以下步驟:於一處理器的一預解碼單元處,基於一邏輯指令指標而自一指令快取記憶體讀取多個位元組,該等多個位元組包括一指令;偵測該等多個位元組中之一第一位元組是否有界定該指令之長度;響應於偵測到該等多個位元組中之該第一位元組不包括該指令之長度,判定該指令之長度;將該等多個位元組中之該第一位元組修改為包括有該指令之長度;以及基於該指令之長度,自該等多個位元組提取該指令。
- 如申請專利範圍第14項之方法,其進一步包含以下步驟:響應於偵測到該等多個位元組中之該第一位元組有界定該指令之長度,基於該指令之長度而自該等多個位元組提取該指令。
- 如申請專利範圍第14項之方法,其中,該指令之長度係基於預定規則所判定。
- 如申請專利範圍第14項之方法,其進一步包含以下步驟: 偵測該第一位元組是否包括一值;響應於偵測到該第一位元組包括該值,自該第一位元組提取該值;基於一編碼方案來對該值進行編碼,以產生一編碼值;以及將該等多個位元組中之該第一位元組修改為包括有該編碼值。
- 如申請專利範圍第14項之方法,其進一步包含以下步驟:將該指令置於一指令佇列中,以使該處理器的一執行單元能夠執行該指令。
- 如申請專利範圍第14項之方法,其中,偵測該等多個位元組中之該第一位元組是否有界定該指令之長度的步驟包含以下步驟:識別與該第一位元組相關的一或多個指示位元;以及偵測該等指示位元是否有指出該第一位元組包括該指令之長度。
- 如申請專利範圍第19項之方法,其中,該指令之前綴包含該一或多個指示位元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067809 WO2013101042A1 (en) | 2011-12-29 | 2011-12-29 | Indicating a length of an instruction of a variable length instruction set |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346732A TW201346732A (zh) | 2013-11-16 |
TWI498818B true TWI498818B (zh) | 2015-09-01 |
Family
ID=48698279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101147450A TWI498818B (zh) | 2011-12-29 | 2012-12-14 | 指示可變長度指令集的指令長度之技術 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9606931B2 (zh) |
TW (1) | TWI498818B (zh) |
WO (1) | WO2013101042A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI737628B (zh) * | 2015-10-30 | 2021-09-01 | 英商Arm股份有限公司 | 修改資料處理單元的行為 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013101042A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Indicating a length of an instruction of a variable length instruction set |
US20140244932A1 (en) * | 2013-02-27 | 2014-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for caching and indexing victim pre-decode information |
JP6016689B2 (ja) * | 2013-03-28 | 2016-10-26 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US10795681B2 (en) * | 2014-12-23 | 2020-10-06 | Intel Corporation | Instruction length decoding |
WO2019046716A1 (en) * | 2017-08-31 | 2019-03-07 | MIPS Tech, LLC | CONTROLLED INSTRUMENT PROCESSING BY POINTER SIZE |
US11204768B2 (en) | 2019-11-06 | 2021-12-21 | Onnivation Llc | Instruction length based parallel instruction demarcator |
US20220100516A1 (en) * | 2020-09-26 | 2022-03-31 | Intel Corporation | Circuitry and methods for power efficient generation of length markers for a variable length instruction set |
CN115250458B (zh) * | 2021-04-12 | 2024-04-09 | 上海博泰悦臻网络技术服务有限公司 | 基于ota远程配置的数据通讯方法、系统、存储介质及服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253309B1 (en) * | 1998-09-21 | 2001-06-26 | Advanced Micro Devices, Inc. | Forcing regularity into a CISC instruction set by padding instructions |
US6405303B1 (en) * | 1999-08-31 | 2002-06-11 | Advanced Micro Devices, Inc. | Massively parallel decoding and execution of variable-length instructions |
US6460116B1 (en) * | 1998-09-21 | 2002-10-01 | Advanced Micro Devices, Inc. | Using separate caches for variable and generated fixed-length instructions |
TW201042542A (en) * | 2009-05-19 | 2010-12-01 | Via Tech Inc | Apparatus and a method in a microprocessor |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5740392A (en) * | 1995-12-27 | 1998-04-14 | Intel Corporation | Method and apparatus for fast decoding of 00H and OFH mapped instructions |
WO2013101042A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Indicating a length of an instruction of a variable length instruction set |
-
2011
- 2011-12-29 WO PCT/US2011/067809 patent/WO2013101042A1/en active Application Filing
- 2011-12-29 US US13/994,695 patent/US9606931B2/en active Active
-
2012
- 2012-12-14 TW TW101147450A patent/TWI498818B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253309B1 (en) * | 1998-09-21 | 2001-06-26 | Advanced Micro Devices, Inc. | Forcing regularity into a CISC instruction set by padding instructions |
US6460116B1 (en) * | 1998-09-21 | 2002-10-01 | Advanced Micro Devices, Inc. | Using separate caches for variable and generated fixed-length instructions |
US6405303B1 (en) * | 1999-08-31 | 2002-06-11 | Advanced Micro Devices, Inc. | Massively parallel decoding and execution of variable-length instructions |
TW201042542A (en) * | 2009-05-19 | 2010-12-01 | Via Tech Inc | Apparatus and a method in a microprocessor |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI737628B (zh) * | 2015-10-30 | 2021-09-01 | 英商Arm股份有限公司 | 修改資料處理單元的行為 |
Also Published As
Publication number | Publication date |
---|---|
TW201346732A (zh) | 2013-11-16 |
US20130262771A1 (en) | 2013-10-03 |
WO2013101042A1 (en) | 2013-07-04 |
US9606931B2 (en) | 2017-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI498818B (zh) | 指示可變長度指令集的指令長度之技術 | |
CN108292222B (zh) | 用于数据解压缩的硬件装置和方法 | |
US9697140B2 (en) | Encryption integrity check with CRC encryption in memory using a word count- and address-derived nonce | |
CN104756090B (zh) | 提供扩展的缓存替换状态信息 | |
US20140149722A1 (en) | Fusing Immediate Value, Write-Based Instructions in Instruction Processing Circuits, and Related Processor Systems, Methods, and Computer-Readable Media | |
US9753730B2 (en) | Decoding instructions from multiple instructions sets | |
CN112230992B (zh) | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 | |
CN106664100B (zh) | 用于进行有效的基于lz77的数据解压缩的技术 | |
KR20130141396A (ko) | 루프 버퍼 패킹 | |
CN110832455B (zh) | 测试向量元素内部的位值 | |
CN110806900B (zh) | 一种访存指令处理方法及处理器 | |
KR20160130324A (ko) | 1들을 최하위 비트들이 되도록 풀링하면서 비트들을 좌측으로 시프팅하기 위한 명령어 | |
JP2016536665A (ja) | 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 | |
EP3335109A1 (en) | Determining prefetch instructions based on instruction encoding | |
JP2018523239A (ja) | 電力効率的なフェッチ適合 | |
US20140250289A1 (en) | Branch Target Buffer With Efficient Return Prediction Capability | |
EP4020172A1 (en) | Processor instructions for data compression and decompression | |
US10069512B2 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
US8601244B2 (en) | Apparatus and method for generating VLIW, and processor and method for processing VLIW | |
JP6212133B2 (ja) | マルチビットウェイ予測マスクを有する命令キャッシュ | |
US8589661B2 (en) | Odd and even start bit vectors | |
JP2004334773A (ja) | 情報処理装置 | |
CN114610388A (zh) | 一种指令跳转方法、处理器及电子设备 | |
US20140143526A1 (en) | Branch Prediction Gating | |
CN104615408A (zh) | 微处理器、集成电路与提供微码指令储存空间的方法 |