TWI438681B - 立即且置換之擷取與解碼機制 - Google Patents
立即且置換之擷取與解碼機制 Download PDFInfo
- Publication number
- TWI438681B TWI438681B TW097123298A TW97123298A TWI438681B TW I438681 B TWI438681 B TW I438681B TW 097123298 A TW097123298 A TW 097123298A TW 97123298 A TW97123298 A TW 97123298A TW I438681 B TWI438681 B TW I438681B
- Authority
- TW
- Taiwan
- Prior art keywords
- constant
- instruction
- unit
- buffer
- guiding
- Prior art date
Links
- 238000006073 displacement reaction Methods 0.000 title description 58
- 230000007246 mechanism Effects 0.000 title description 10
- 238000000605 extraction Methods 0.000 title description 3
- 239000000872 buffer Substances 0.000 claims description 111
- 238000012545 processing Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100498823 Caenorhabditis elegans ddr-2 gene Proteins 0.000 description 1
- 210000005100 blood-tumour barrier Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明係關於微處理器架構,且詳言之,係關於立即且置換之解碼機制。
在許多系統中,處理器核心之前端典型地包含指令解碼單元,用於在傳送至執行單元之前對於從指令快取取出(fetch)之指令進行解碼。除了實際的指令位元,舉例而言,取出的指令通常具有執行單元所使用之一個或多個常數以處理指令。例如,在一些系統中,取出的指令可包含立即或置換(immediate or displacement,imm/disp)常數。
在典型的處理器中,為了執行解碼運作(operation),指令解碼單元可從第一緩衝器取回(retrieve)實際的指令並忽略常數。在指令被解碼之後,被解碼之指令儲存在第二緩衝器中。當被解碼之指令準備好要傳送至執行單元時,引導(steer)單元通常從第一緩衝器取回常數,並且大約在指令解碼單元提供對應的解碼指令至執行單元的同時,提供常數至執行單元。
在這些系統中,第一緩衝器典型地需要是相當大的大小(size),因為第一緩衝器必須保留常數的空間直到對應的指令被解碼並準備好傳送至執行單元。換句話說,在一些例子中,常數可需要被儲存在第一緩衝器中數個時脈週期。相當大之大小的第一緩衝器可能增加晶片面積與處理器的成本。
本發明揭露用於獲取與處理指令與嵌入在該指令內之對應常數之擷取與解碼機制之各種實施例。該擷取與解碼機制可被包含於處理單元內,並可包括指令解碼單元與至少一個常數引導網路。在運作期間,指令解碼單元可獲得並解碼將被處理單元執行之指令。對於各指令,指令解碼單元也可決定嵌入在該指令內之一個或多個常數之位置。常數引導網路可從指令解碼單元接收位置資訊。當指令解碼單元解碼指令時,常數引導網路可基於位置資訊而獲得嵌入在該指令內之常數並儲存該常數。在各種實施例中,嵌入在該指令內之常數可以是立即或置換(imm/disp)常數。
在一些實施例中,處理單元可包含指令緩衝器以儲存將被指令解碼單元解碼之指令。各指令可包含一個或多個指令位元組與一個或多個常數。在運作期間,指令解碼單元可獲得與指令相關聯之一個或多個指令位元組,且常數引導網路可從指令緩衝器獲得嵌入在該指令內之對應常數。在常數引導網路從指令緩衝器獲取嵌入在該指令內之常數之後,處理單元可解除配置在與指令相關聯之指令緩衝器內之空間。
在一些實施例中,各常數引導網路可包含常數引導單元與常數緩衝器。常數引導單元可基於從指令解碼單元接收之位置資訊,獲得嵌入在對應指令內之一個或多個常數,並儲存該常數在常數緩衝器中。在一個實施例中,可
結合一對常數引導網路以獲取大於預定大小之常數。
現在請參閱第1圖,係顯示處理器核心100之例示前端之一個實施例的方塊圖。如圖所示,處理器核心100可包含指令緩衝器110、指令引導單元120、指令解碼單元(DEC)140、解碼指令緩衝器145、立即/置換(imm/disp)引導網路155、與執行單元180。在一個實施例中,立即/置換引導網路155可包含立即/置換引導單元150與立即/置換緩衝器160。
指令緩衝器110可儲存指令,該指令係被安排成由DEC 140解碼。在一個實施例中,指令可藉由指令取出單元而被提供至指令快取,該指令取出單元係從位於處理器核心100內之指令快取(諸如L1快取)而取出指令,如第5圖所示。指令引導單元可存取(access)指令緩衝器110以獲得指令並提供該指令至DEC 140。DEC 140可解碼指令並在解碼指令緩衝器145中儲存被解碼的指令。
引導網路155之立即/置換引導單元150可從指令緩衝器110獲得嵌入在獲取之指令內的常數(例如立即/置換常數),將進一步參考第2至4圖並描述於下。立即/置換引導單元150可儲存獲取之常數在引導網路155之立即/置換緩衝器160中。解碼指令緩衝器145與立即/置換緩衝器160可各自分配解碼指令與對應常數至執行單元180以執行指令。
在各種實施例中,處理核心100可包括任何各種類型
之計算或處理系統,例如工作站、個人電腦(PC)、刀鋒伺服器(server blade)、可攜式計算裝置、遊戲控制台、系統單晶片(system-on-a-chip,SOC)、電視系統、音頻系統等。例如,在一個實施例中,處理器核心100可被包含在連接至計算系統之電路板或主機板之處理單元內。在一些實施例中,處理器核心100可以是被包含在計算系統之處理單元內之多個處理器核心之其中之一,將進一步參考第6圖並描述於下。
應注意,參考第1圖所描述的元件係僅為例示,而不意圖限制本發明於任何特定組之元件或組構。舉例而言,在各種實施例中,可依需要來刪除、結合、修改所描述之一個或多個元件或包含額外的元件。例如,在一些實施例中,處理器核心100可包含如顯示於第3圖中之兩個或更多個立即/置換引導網路155。
第2圖係根據一個實施例,描述用於對指令與對應常數進行擷取與解碼之方法的流程圖。應注意,在各種實施例中,顯示在圖中之一些步驟可同步執行、以不同於顯示於圖中之順序執行、或省略。也可依需要來執行額外的步驟。
共同地參考第1與2圖,指令緩衝器110可儲存複數個指令,該等指令係被安排成由DEC 140解碼。各指令可包含實際的指令位元組與常數,例如立即/置換(imm/disp)常數。在運作期間,DEC 140可從指令緩衝器110獲得至少一個指令(步驟210)。在各種實施例中,DEC 140可從用
於解碼運作(例如使用多工器)之指令緩衝器110獲得實際的指令位元組並忽略與立即/置換常數相關聯之位元。DEC 140然後可開始解碼指令(步驟220)。
此外,DEC 140可決定嵌入在指令內之立即/置換常數的位置(步驟230)。舉例而言,DEC 140可決定在指令緩衝器110內儲存常數之位址,或如果使用多工器以讀取指令位元,決定該多工器中哪些位元對應至常數之位元。DEC 140然後可提供位置資訊至立即/置換引導網路155。
在一些實作中,除了決定位置資訊,DEC 140可決定常數的大小並將大小資訊連同位置資訊一起提供至立即/置換引導網路155。例如,DEC 140可決定常數是64位元之立即/置換常數或是32位元之立即/置換常數等。然而,應注意,一些指令可具有多於一個的常數,或可沒有常數。因此,在許多實作中,DEC 140可組構成決定指令具有多少常數、常數的大小、與常數的位置,並提供該資訊至立即/置換引導網路155。
當獲取之指令係藉由DEC 140解碼時,至少基於由DEC 140所決定之位置資訊,引導網路155之立即/置換引導單元150可從指令緩衝器110獲得嵌入在指令內的立即/置換常數(步驟240)。在一些實施例中,立即/置換引導單元150也可接收關於DEC 140之常數的大小資訊,而因此可一同使用大小資訊與位置資訊以獲得常數。在一個特定的實作中,立即/置換引導單元150可藉由從指令緩衝器110多工處理常數以獲取常數。立即/置換引導單元150可儲存獲取
之常數在引導網路155之立即/置換緩衝器160中(步驟250)。
在此時,因為實際的指令位元組已被DEC 140獲取且對應的立即/置換常數已被引導網路155獲取,故仍然儲存在指令緩衝器110內之指令的複本(copy)可被其他指令資料覆寫(overwrite)。換句話說,保留給指令位元之指令緩衝器110內之空間可被解除配置(deallocate),所以可利用該空間來儲存其他的未決(pending)指令(步驟260)。在各種實作中,在指令緩衝器110內之空間可被解除配置而DEC 140仍然解碼指令。在一些實作中,在引導網路155從指令緩衝器110獲取常數之後,可立即解除配置空間。在一些例子中,在解碼程序中可相當早解除配置指令緩衝器110,因為在從DEC 140接收位置資訊之後,引導網路155可很快獲取常數。舉例而言,如果解碼運作需要五個時脈週期完成,指令緩衝器110可在兩個時脈週期之後解除配置,而不用等到五個時脈週期結束。相較於典型系統,因為相當快地解除配置(與可能再使用)在指令緩衝器110內的空間,故指令緩衝器110的大小可少於在典型系統中緩衝器的大小。基本上,此設計可令解碼指令與處理立即/置換常數所需的時間與指令緩衝器110的大小無關。
在DEC 140完成解碼運作之後(步驟270),DEC 140可在解碼指令緩衝器145中儲存解碼指令(步驟280)。解碼指令係儲存在解碼指令緩衝器145中,而對應的常數係儲存在立即/置換緩衝器160中,直到從控制單元(如描述於
第4圖中之分配控制單元)接收到進一步的指令。回應於從控制單元接收到控制信號,解碼指令緩衝器145與立即/置換緩衝器160可各自分配解碼指令與對應的常數至執行單元180以執行指令。
此立即/置換常數擷取與解碼技術在各種處理器架構(例如指令邊界沒有良好定義之架構與在指令內之立即/置換常數也沒有良好定義之架構)中是有用的,如可變長度x86指令。
第3圖係處理器核心100之例示前端之另一實施例的方塊圖。如圖所示,處理器核心100可包含指令緩衝器110、指令引導單元120A至D、指令解碼單元(DEC)140A至D、解碼指令緩衝器145A至D、最終解碼單元370A至D、分配控制單元390、立即/置換引導網路155A至D、與執行單元180。在一個實施例中,立即/置換引導網路155A至D可包含立即/置換引導單元150A至D與立即/置換緩衝器160A至D。
在第3圖描述之實施例中,處理器核心100在指令處理區段與立即/置換處理區段二者中每個元件包含有四個元件。具有多個這些元件可允許處理器核心100在同時獲取並處理多個指令與對應的常數,例如,使用上述參考第2圖描述之方法。然而,應注意,在其他實施例中,處理器核心100可設計成每個元件包含兩個元件或可設計成關於各描述元件數量之各種其他組構。
在各種實施例中,處理核心100可包含一個或多個最
終解碼單元370,耦接在解碼指令緩衝器145與執行單元180之間。最終解碼單元370可對被部分地解碼之指令完全解碼且然後將被完全地解碼之指令分配至執行單元180。尤其是,在這些實施例中,每個DEC 140可部分地解碼獲取的指令並將被部分地解碼之指令儲存在對應的解碼指令緩衝器145中。當指令準備好被完全地解碼用於分配至執行單元180時,對應的最終解碼單元370從解碼指令緩衝器145獲取被部分地解碼之指令並完全地解碼指令。在一些實作中,儲存被部分地解碼之指令可節省在解碼指令緩衝器145內的空間,因為被部分地解碼之指令典型地具有比被完全地解碼之指令少的位元。
分配控制單元390可決定哪些指令要分配至執行單元180。在具有一個或多個解碼指令緩衝器145與一個或多個最終解碼單元370之實作中(如第3圖),分配控制單元390可指示解碼指令緩衝器145與/或對應的最終解碼單元370以分配解碼指令,並可指示立即/置換緩衝器160以分配立即/置換常數至執行單元180。在這些實作中,因為DEC 140可部分地解碼指令,故DEC 140可需要解碼至少與指令相關聯之分配資訊,以便可產生分配決定。在DEC 140完全地解碼指令並儲存該指令在解碼指令緩衝器145之實作中(如第1圖),分配控制單元390可指示解碼指令緩衝器145以分配解碼指令,並可指示立即/置換緩衝器160以分配立即/置換常數至執行單元180。應注意,在各種實施例中,分配控制單元390可在大約相同時間指示元件以分配指令
與對應的常數至執行單元180。
應注意,參考第3圖描述之元件僅為例示,而不意圖限制本發明於任何特定組之元件或組構。舉例而言,在各種實施例中,可依需要來刪除、結合、修改所描述之一個或多個元件或包含額外的元件。
第4圖係例如顯示在第1與3圖中之複數個立即/置換引導網路155A至D(如立即/置換網路155)之一個實施例的方塊圖。如圖示,立即/置換引導網路155A至D可包含立即/置換引導單元150A至D、立即/置換解碼單元452A至D、多工器462A至D、‘高(HI)’路徑464A至D、‘低(LO)’路徑466A至D、與立即/置換緩衝器160A至D。
在一些實作中(如第4圖中所示),立即/置換引導網路155可包含立即/置換解碼單元452,耦接在立即/置換引導單元150與立即/置換緩衝器160之間。解碼單元可包含邏輯(如加法器、比較邏輯等)以處理並解碼從指令緩衝器110獲取之立即/置換常數。例如,在一個特定的實作中,一些常數可基於其目前位址(也就是其程式計數器)而需要被處理。
此外,在各種實作中,多對的立即/置換引導網路155可結合在一起以供給串接(concatenated)的立即/置換常數至對應的立即/置換緩衝器160中。如圖示,立即/置換引導網路155可包含多工器462A至D以結合一個解碼單元452之‘低’路徑與另一解碼單元452之‘高’路徑。例如,在顯示在第4圖之範例中,引導網路155A之‘低’路
徑466A與引導網路155B之‘高’路徑464B經由多工器462B結合、引導網路155B之‘低’路徑466B與引導網路155C之‘高’路徑464C經由多工器462C結合、引導網路155C之‘低’路徑466C與引導網路155D之‘高’路徑464D經由多工器462D結合、以及引導網路155D之‘低’路徑466D與引導網路155A之‘高’路徑464A經由多工器462A結合。然而,應注意,在其他實施例中,一個或多個立即/置換引導網路可用各種其他組構結合。
用於結合兩個或更多個引導網路155之機制可縮減立即/置換引導單元150之大小,並因此可減小晶片面積。在一個特定實作中,如果引導網路155可獲取高達64位元之常數,以此機制可將立即/置換引導單元150設計成處理高達32位元之立即/置換常數而非高達64位元之常數,而全部的引導網路155仍可作用為64位元之網路。在此實作中,各立即/置換緩衝器160可組構成儲存高達64位元之立即/置換常數。藉由使用多工器462,各立即/置換解碼單元452可組構成從引導單元150接收高達32位元之常數並藉由連接另一個引導網路155輸出高達64位元之常數至立即/置換緩衝器160。因此,在此實作中,即使各引導網路155可作用為64位元之網路,但立即/置換引導單元150可各別設計成處理高達32位元,其可縮減大小並因此降低系統的成本。然而,應注意,在其他實作中,各引導網路155可作用為32位元之網路,而立即/置換引導單元150可各別設計成處理高達16位元,或系統可具有關於引導網
路155與引導單元150可處理之位元數目之各種其他組構。
在一個範例中,如果指令緩衝器110具有未決的64位元之常數,則立即/置換引導網路155B與155C可各自獲取64位元常數之一半,或各32位元,而解碼單元452B與452C可處理32位元。在解碼之後,引導網路155可藉由程式化多工器462C而結合引導網路155B以接受由引導網路155B處理之32位元並傳送該位元至‘高’路徑464C。由引導網路155C處理之32位元係傳送至‘低’路徑466C。換句話說,由引導網路155B處理之32位元可與由155C處理之32位元串接,而所串接的64位元立即/置換常數接著被儲存在立即/置換緩衝器160中。
在各種實施例中,當獲取的常數大於任何一個立即/置換引導單元150可處理的常數時,可致能(enable)用於結合兩個引導網路155並輸出串接的立即/置換常數之機制。換句話說,各立即/置換引導單元150可設計成處理高達預定大小之常數,例如高達32位元之常數。如果大小的常數大於所偵測的預定大小,則引導網路155之其中一者(或在處理核心100內之任何其他電路)可使用第一引導單元150(例如,150B)與第二引導單元150(例如,150C)以獲取常數。
在一些實施例中,可設計引導網路155使得立即/置換緩衝器160的總數與連接至執行單元180之立即/置換匯流排之數目相符。例如,在描述於第4圖之實施例中,四個立即/置換緩衝器160連接至四個分離的立即/置換匯流
排,該等匯流排連接至執行單元180。具有相符數目的立即/置換緩衝器160與立即/置換匯流排可避免在緩衝器之間需要多工器。同樣地,在一些實作中,所有立即/置換緩衝器160可為相同寬度與深度以簡化引導網路155之設計。在這些實施例中,可允許常數依序的分配至執行單元180,只要常數那時允許輪換(rotate)以相符於對應之指令。舉例而言,如果常數以關於對應指令之輪換次序到達執行單元180,在常數儲存的暫存器檔案中的位址線可被輪換以重新儲存正確的次序。
應了解,參考第4圖描述之元件僅為例示,而不意圖限制本發明於任何特定組之元件或組構。舉例而言,在各種實施例中,可依需要來刪除、結合、修改描述之一個或多個元件或包含額外的元件。例如,在一些實施例中,可使用代替或除了多工器462之外的其他機制以結合兩個或更多個引導網路155以輸出串接的立即/置換常數。
第5圖係處理器核心100之一個實施例的方塊圖。一般而言,核心100可組構成執行可儲存於系統記憶體中之指令,該系統記憶體係直接或間接地耦接該核心100。此等指令可根據特定的指令集架構(instruction set architecture,ISA)而定義。舉例而言,核心100可組構成實作x86 ISA的版本,雖然在其他實施例中,核心100可實作不同的ISA或ISA的組合。
在描述的實施例中,核心100可包含耦接的指令快取(IC)510以提供指令至指令取出單元(IFU)520。IFU 520可
耦接至分支預測單元(BPU)530與指令解碼單元(DEC)540。
在各種實施例中,DEC 540可耦接至顯示在第1、3、與4圖中之元件。DEC 540可與這些元件一同實作參考第1-4圖描述之方法,用以處理指令與嵌入在該等指令內之對應常數。
可耦接DEC 540以提供運作至複數個整數執行群集(cluster)550a至b以及至浮點單元(FPU)560。各群集550a至b包含個別群集排程器552a至b耦接至個別複數個整數執行單元554a至b。群集550a至b也可包含耦接的個別資料快取556a至b以提供資料至執行單元554a至b。在描述的實施例中,資料快取556a至b也可提供資料至FPU 560之浮點執行單元564,該浮點執行單元564可被耦接以接受來自FP排程器562之運作。資料快取556a至556b和指令快取510可額外地耦接至核心介面單元570,該核心介面單元570可接著耦接至統一L2快取580以及至外接於核心100之系統介面單元(SIU)(顯示於第6圖並描述如下)。應注意,雖然第5圖表現出在各種單元之間之某些指令與資料流路徑,但是可對未特別顯示於第5圖中之資料或指令流提供額外的路徑或方向。
如下之更詳細說明,可組構核心100用於多緒執行(multithreaded execution),於多緒執行中可以同時執行來自不同的執行緒之指令。於一個實施例中,各群集550a至b可專用於執行對應於兩個緒之各自其中一個之指令,同時FPU 560和上游指令取出和解碼邏輯可以共用於緒
間。於其他實施例中,考量到可以支援不同數目之緒用來共同執行,以及可以提供不同數目之群集550和FPU 560。
指令快取510可組構成在指令被取回、解碼和發出用於執行之前儲存指令。在各種實施例中,可組構指令快取510為特定大小之直接映射(direct-mapped)、集合相聯(set-associative)、或全相聯(fully-associative)快取,例如8路、64千位元組(KB)快取。指令快取510可以被實際定址、虛擬定址、或二者組合(例如,虛擬索引位元與實際標籤位元)。在一些實施例中,指令快取510亦可包含組構成快取虛擬至實際轉譯用於指令取出位址之轉譯後備緩衝(translation lookaside buffer,TLB)邏輯,雖然TLB和轉譯邏輯可以包含在核心100內其他地方。
可藉由IFU 520而協調對於指令快取510的指令取出存取。舉例而言,IFU 520可追蹤用於各種執行緒之目前程式計數器狀態,並可發出取出訊號至指令快取510以取回用於執行之額外指令。於指令快取漏失之情況中,指令快取510或IFU 520可協調從L2快取580取回指令資料。在一些實施例中,IFU 520也可協調於其預期使用之前從記憶體階層之其他層級預先取出指令,以便緩和記憶體延遲(memory latency)之影響。舉例而言,成功的指令預先取出可增加當需要指令時他們出現在指令快取510中之可能性,因此避免於可能多層級之記憶體階層中快取漏失之延遲效應。
各種類型之分支(例如,條件或非條件跳躍、呼叫/返
回指令等)可改變特定緒之執行流。分支預測單元530通常可組構成預測由IFU 520使用之未來取出位址。在一些實施例中,BPU 530可包含分支目標緩衝器(BTB),該BTB可組構成儲存在指令流中關於可能的分支之各種的資訊。例如,可以組構BTB以儲存關於分支類型(例如,靜止、條件、直接、間接等)、分支之預測目標位址、指令快取510中目標可以常駐之預測通路(way)之資訊,或者任何其他適當的分支資訊。在一些實施例中,BPU 530可包含以類似快取之階層方式配置之多重BTB。此外,在一些實施例中,BPU 530可包含一個或多個不同類型之預測器(例如,局部、總體、或混合預測器),組構成預測條件分支之結果。在一個實施例中,IFU 520和BPU 530之執行管線可以被解除耦接,使得允許分支預測“預先執行(run ahead)”指令取出,允許多個未來取出位址被預測並佇列直到IFU 520準備服務他們為止。考量到在多緒運作期間,預測和取出管線可組構成同時運作於不同的緒。
取出的結果,可組構IFU 520以產生指令位元組之序列,該指令位元組也可稱之為取出封包。例如,取出封包可是32位元組長度,或另一適當的值。在一些實施例中,尤其用於實作可變長度指令之ISA,可能存在有對準於給定取出封包內任意邊界之可變數目之有效指令,而在一些實例中指令可跨渡(span)不同的取出封包。一般而言,DEC 540可組構成確定給定取出封包內之指令邊界、解碼或藉由群集550或FPU 560將指令轉換成適合用於執行之運
作、以及分配此等運作用於執行。
在一個實施例中,DEC 540可組構成首先決定在從一個或多個取出封包之位元組之給定視窗內可能指令之長度。舉例而言,對於x86相容ISA而言,DEC 540可組構成確認字首(prefix)、運算碼(opcode)、“mod/rm”和“SIB”位元組的有效序列,開始於給定取出封包內各位元組之位置。然後,在一個實施例中,可組構在DEC 540內之選擇邏輯,以確定在視窗內高達四個有效指令之邊界。在一個實施例中,多個取出封包和確認指令邊界之多個群之指令指標可被排序在DEC 540內,允許解碼處理從取出操作解除耦接,使得IFU 520可以偶而“預先取出(fetch ahead)”解碼。
然後可引導指令從取出封包儲存至在DEC 540內之數個指令解碼器的其中之一。在一個實施例中,DEC 540可組構成對每一循環分配高達四個指令用於執行,並可相應地提供四個獨立之指令解碼器,雖然其他組構為可能並予以考慮。在核心100支援微碼指令之實施例中,可組構各指令解碼器以決定給定的指令是否為微碼,若是如此,可以引動(invoke)微碼引擎之運作以轉變指令成為運作之序列。否則,指令解碼器可轉變指令成為適合由群集550或FPU 560執行之一個運作(或者在一些實施例中可能的數個運作)。所產生之運作也可稱之為微運作(micro-operation、micro-ops或uops),並且可以儲存在一個或多個佇列內以等待分配用於執行。在一些實施例
中,微碼運作與非微碼(或“快速路徑(fastpath)”運作可儲存在分離的佇列中。
可組構在DEC 540內之分配邏輯以檢查等待分配之佇列運作的狀態以及執行資源與分配規則之狀態,以便嚐試組合分配小包(parcel)。舉例而言,DEC 540可考慮到佇列用於分配之運作之有效性、在群集550和/或FPU 560內佇列並等待執行運作之數目、以及可應用於待分配運作之任何資源限制。在一個實施例中,可組構DEC 540以於給定執行循環期間分配高達四個運作的小包至群集550或FPU 560其中之一。
在一個實施例中,DEC 540可組構成於給定執行循環期間對僅僅一個緒解碼並分配運作。然而,應注意,IFU 520和DEC 540不須同時運作於相同的緒。考慮到各種類型之緒切換策略使用於指令取出和解碼期間。舉例而言,IFU 520和DEC 540可組構成以循環的方式選擇不同的緒用於處理每N個循環(其中N可以小至1)。或者,可藉由譬如佇列佔據(queue occupancy)之動態狀況而影響緒切換。舉例而言,若用於DEC 540內特定緒之佇列解碼運作或用於特定群集550之佇列分配運作的深度低於緒值,則解碼處理可切換至該緒,直到用於不同緒之佇列運作運行短路為止。在一些實施例中,核心100可以支援多個不同的緒切換策略,可以透過軟體或於製造期間(例如,作為製造遮罩選項)選擇任何其中一種策略。
一般而言,可以組構群集550以實作整數演算和邏輯
運作以及施行載入/儲存運作。在一個實施例中,各群集550a至b可以專用於對於個別緒之執行運作,而使得當組構核心100操作於單緒模式時,運作可被分配至僅其中一個群集550。各群集550可以包含其自身的排程器552,可以組構該排程器552以管理用於執行先前分配於群集之運作之發佈事件。各群集550可以進一步包含其自身的整數實體暫存器檔案之複本以及其自身的完成邏輯(例如,用於管理運作完成和撤回之重排序緩衝器(reorder buffer)或其他結構)。
在各群集550內,執行單元554可以支援並行(concurrent)執行之各種不同類型之運作。舉例而言,在一個實施例中,執行單元554可以支援二個並行的載入/儲存位址產生(AGU)運作和二個並行的算術/邏輯(ALU)運作,對每個群集總共有四個並行的整數運作。執行單元554可以支援額外的運作,譬如整數乘法和除法,雖然在各種實施例中,群集550可以對此種額外的運作與其他ALU/AGU運作之通量及並行實作排程限制。此外,各群集550可以具有其自身的資料快取556,該資料快取556如同指令快取510可以使用任何不同的快取機構來實作。應注意,資料快取556可以不同於指令快取510來予以組織。
於例示的實施例中,不像群集550,可組構FPU 560以執行來自不同緒之浮點運作,而在一些例子中,則可以並行的方式實施。FPU 560可以包含FP排程器562,該FP排程器562像群集排程器552一樣,可以組構成接受、佇
列和發出運作用於FP執行單元564內之執行。FPU 560也可包含浮點實體暫存器檔案,組構成管理浮點運算元。可組構FP執行單元564以實作各種類型之浮點運作,譬如加法、乘法、除法、和倍增累積(multiply-accumulate)、以及其他的浮點、多媒體或可以由ISA定義之其他運作。於各種的實施例中,FPU 560可以支援並行執行某些不同類型之浮點運作,並也可以支援不同程度之準確性(例如,64位元運算元、128位元運算元等)。如圖所示,FPU 560可以不包含資料快取,但是卻可以組構成存取包含在群集550內之資料快取556。在一些實施例中,也可以組構FPU 560以執行浮點載入和儲存指令,同時於其他實施例中,群集550可以代表FPU 560執行這些指令。
指令快取510和資料快取556可組構成經由核心介面單元570存取L2快取580。在一個實施例中,CIU 570可以提供在核心100與系統內之其他核心101之間,以及至外部系統記憶體、周邊裝置等之一般介面。在一個實施例中,可以使用任何適當的快取機構將L2快取記憶體580組構為聯合快取(unified cache)。典型上,L2快取580將實質大於第一層級指令和資料快取之容量。
在一些實施例中,核心100可以支援脫序(out of order)執行之運作,包含載入和儲存運作。也就是說,在群集550和FPU 560內執行運作之次序可以不同於運作所對應之指令的原始程式化次序。此種緩和(relaxed)之執行次序可以促進更有效的執行資源排程,其可改進整體執行
效能。
此外,核心100可以實作各種的控制和資料推測技術。如上所述,核心100可以實作各種的分支預測和推測預先取出技術,以便嘗試預測緒之執行控制流將處理之方向。此種控制推測技術在其已知確定是否指令將是可以使用,或者是否已發生不當推測(例如,由於分支不當預測)之前,一般可以嘗試提供一致的指令流。若控制不當推測發生,則可組構核心100以沿著不當推測路徑拋棄運作和資料,並將執行控制改向至正確路徑。舉例而言,在一個實施例中,可以組構群集550以執行條件分支指令並決定是否該分支結果與預測結果一致。若不一致,則可以組構群集550以改向IFU 520而開始沿著正確路徑取出。
分別地,核心100可以在已知值是否為正確之前,實作嘗試提供資料值用於進一步的執行的各種資料推測技術。舉例而言,於集合相聯的快取中,於知道那些通路實際上命中(hit)該快取之前(若有命中的話),資料可以從快取之多個通路獲得。在一個實施例中,可以組構核心100以執行通路預測作為於指令快取510、資料快取556和/或L2快取580中資料推測的形式,以便於已知通路命中/漏失狀態之前嘗試提供快取結果。若不正確的資料推測發生,則依於不正確推測的資料之運作可能會“重作(replay)”或者重發出而再度執行。舉例而言,對於不正確之通路被預測之載入運作可以重作。當再度執行時,可以依於實施例,根據較早錯誤推測之結果再度推測載入運
作(例如,當先前已決定時,則推測使用正確通路來推測),或者可以執行而沒有資料推測(例如,在產生結果之前,允許處理直到通路命中/漏失檢查完成為止)。於各種實施例中,核心100可以根據位址或位址運算元型樣(pattern)、推測之儲存至載入結果傳送、資料連貫(data coherence)推測、或其他適合的技術或其結合而實作許多其他類型之資料推測,譬如位址預測、載入/儲存相依偵測。
在各種實施例中,處理器實作可包含製造作為單一積體電路與其他結構部份之核心100的多個實例(instance)。一個此種處理器之實施例描述於第6圖中。如圖所示,處理器600包含核心的四個實例100a至d,各實例可如上述的組構。在例示的實施例中,各核心100可經由系統介面單元(SIU)610耦接至L3快取620與記憶體控制器/周邊介面單元(MCU)630。在一個實施例中,可組構L3快取620為使用任何適合組織而實作之聯合快取,該聯合快取運作為在核心100之L2快取580與相對慢之系統記憶體640之間的中間快取。
可組構MCU 630將處理器600直接與系統記憶體640介接(interface)。舉例而言,可組構MCU 630以產生必須的信號,用來支援一個或多個不同類型之隨機存取記憶體(RAM)(譬如雙資料率同步動態RAM(Dual Data Rate Synchronous Dynamic RAM,DDR RAM)、DDR-2 SDRAM、完全緩衝雙線內記憶體模組(Fully Buffered Dual Inline Memory Module,FB-DIMM)),或者可以用來實作系統記憶
體640之另一適當類型記憶體。可組構系統記憶體640以儲存由處理器600之各種核心100運作之指令和資料,以及可以藉由前述之各種快取對系統記憶體640之內容進行快取。
此外,MCU 630可以對處理器600支援其他類型之介面。舉例而言,MCU 630可以實作專用圖形處理器介面,譬如加速/先進圖形埠(Accelerated/Advanced Graphics Port,AGP)介面的版本,該圖形處理器介面可以用來介接處理器600與圖形處理次系統,該圖形處理次系統包含獨立的圖形處理器、圖形記憶體和/或其他的元件。也可以組構MCU 630以實作一個或多個類型之周邊介面(例如,PCI快速(PCI-Express)匯流排標準版本),透過該PCI-Express匯流排標準,處理器600可以與譬如儲存裝置、繪圖裝置、網路裝置等之周邊介接。在一些實施例中,可以使用外接於處理器600之第二匯流排橋接器(例如,南橋接器)以經由其他類型之匯流排或互連而將處理器600耦接至其他的周邊裝置。應注意,雖然記憶體控制器和周邊介面功能係顯示經由MCU 630而被整合在處理器600內,但是在其他實施例中,這些功能可經由習知的“北橋接器”配置而由外部實作於處理器600。舉例而言,MCU 630之各種功能可經由獨立的晶片組實作而不整合於處理器600內。
雖然已相當詳細說明了上述實施例,但是對於熟悉此項技術者而言,一旦完全了解了以上的揭示內容,則許多的變化和修飾將變得很清楚。下列之申請專利範圍將解釋
為包含所有的此等變化和修飾。
100‧‧‧處理器核心;處理核心
100a至d‧‧‧核心
110‧‧‧指令緩衝器
120、120A至D‧‧‧指令引導單元
140、140A至D‧‧‧指令解碼單元
145、145A至D‧‧‧解碼指令緩衝器
150、150A至D‧‧‧立即/置換引導單元
155、155A至D‧‧‧立即/置換引導網路
160、160A至D‧‧‧立即/置換緩衝器
180‧‧‧執行單元
210、220、230、240、260、270、280、290‧‧‧步驟
370A至D‧‧‧最終解碼單元
390‧‧‧分配控制單元
452A至D‧‧‧立即/置換解碼單元
462A至D‧‧‧多工器
464A至D‧‧‧‘高’路徑
466A至D‧‧‧‘低’路徑
510‧‧‧指令快取
520‧‧‧指令取出單元
530‧‧‧分支預測單元
540‧‧‧指令解碼單元
550a、550b‧‧‧群集
552a、552b‧‧‧群集排程器
554a、554b‧‧‧執行單元
556a、556b‧‧‧資料快取
560‧‧‧浮點單元
562‧‧‧FP排程器
564‧‧‧FP執行單元
570‧‧‧核心介面單元
580‧‧‧L2快取
600‧‧‧處理器
610‧‧‧系統介面單元
620‧‧‧L3快取
630‧‧‧記憶體控制器/周邊介面單元
640‧‧‧系統記憶體
第1圖係一處理器核心之例示前端之一個實施例的方塊圖;第2圖係根據一實施例,描述用於引導並解碼指令及對應常數之方法的流程圖;第3圖係一處理器核心之例示前端之另一個實施例的方塊圖;第4圖係複數個立即/置換引導網路之一個實施例之方塊圖;第5圖係處理器核心之一個實施例的方塊圖;以及第6圖係包含多個處理核心之處理器之一個實施例的方塊圖。
雖然本發明易受到各種修改和替代形式之影響,然其特定實施例已藉由圖式中實例之方式顯示和予以詳細說明。然而,應了解到此處特定實施例之圖式與詳細說明並不欲限制本發明於所揭露之特定形式,反之,本發明將涵蓋所有落於由所附之申請專利範圍所界定之精神和範疇內之所有的修飾、等效、和改變。
100‧‧‧處理器核心;處理核心
110‧‧‧指令緩衝器
120‧‧‧指令引導單元
140‧‧‧指令解碼單元
145‧‧‧解碼指令緩衝器
150‧‧‧立即/置換引導單元
155‧‧‧立即/置換引導網路
160‧‧‧立即/置換緩衝器
180‧‧‧執行單元
Claims (19)
- 一種處理單元,包括:指令解碼單元,組構成解碼將被該處理單元執行之指令,其中,對於每個指令,該指令解碼單元係組構成決定嵌入在該指令內之常數的位置;以及複數個常數引導網路,組構成從該指令解碼單元接收該位置資訊,其中,當該指令解碼單元解碼該指令時,該等常數引導網路係組構成基於該位置資訊而獲得嵌入在該指令內之該常數並儲存該常數,其中,各該常數引導網路包含常數引導單元與常數緩衝器,其中,第一常數引導網路之第一常數引導單元係組構成基於從該指令解碼單元接收之位置資訊而獲得嵌入在該指令內之高達預定大小之常數,其中,回應於偵測到常數的大小大於該預定大小,該處理單元係組構成使用第二常數引導網路之第二常數引導單元與該第一常數引導單元以獲取該常數。
- 如申請專利範圍第1項之處理單元,其中,嵌入在該指令內之該常數係立即或置換(imm/disp)常數。
- 如申請專利範圍第1項之處理單元,復包括指令緩衝器,組構成儲存將被該指令解碼單元解碼之該指令,其中,各指令包含一個或多個指令位元組與至少一個常數,其中,該指令解碼單元係組構成獲得與該指令相關聯之該一個或多個指令位元組,且該常數引導網路係組構成從該指令緩衝器獲得至少一個嵌入在該指令內之 對應常數。
- 如申請專利範圍第3項之處理單元,在該常數引導網路從該指令緩衝器獲取該至少一個嵌入在該指令內之常數之後,組構成解除配置在與該指令相關聯之該指令緩衝器內之空間。
- 如申請專利範圍第1項之處理單元,復包括複數個常數引導網路,其中,各該常數引導網路包含常數引導單元與常數緩衝器,其中,該常數引導單元係組構成基於從該指令解碼單元接收之位置資訊而獲得嵌入在該對應指令中之常數,並儲存該常數於該常數緩衝器中。
- 如申請專利範圍第5項之處理單元,其中,各該常數引導網路復包含常數解碼單元,其中,該常數解碼單元係組構成在該常數被儲存於該常數緩衝器中之前處理該常數。
- 如申請專利範圍第1項之處理單元,復包括解碼指令緩衝器,其中,在解碼該指令之後,該指令解碼單元係組構成儲存該解碼指令於該解碼指令緩衝器中。
- 如申請專利範圍第7項之處理單元,復包括分配控制單元與執行單元,其中,該分配控制單元係組構成指示該解碼指令緩衝器以分配該解碼指令至執行單元,且該分配控制單元係進一步組構成指示該常數緩衝器以分配該對應常數至該執行單元。
- 如申請專利範圍第1項之處理單元,復包括解碼指令緩衝器與最終解碼單元,其中,該指令解碼單元係組構成 在該解碼指令緩衝器中儲存部分解碼的指令,其中,該最終解碼單元係組構成獲得該部分解碼的指令並完全地解碼該指令。
- 如申請專利範圍第1項之處理單元,其中,對於每個指令,該指令解碼單元係組構成決定嵌入在該指令內之常數的位置與大小,其中,該常數引導網路係組構成從該指令解碼單元接收該位置與大小之資訊,其中,當該指令解碼單元解碼該指令時,該常數引導網路係組構成基於該位置與大小資訊而獲得嵌入在該指令內之該常數並儲存該常數。
- 如申請專利範圍第1項之處理單元,其中,該第一常數引導單元係組構成獲取該常數之第一部分,而該第二常數引導單元係組構成獲取該常數之剩餘部份,其中,該第一與第二引導網路之其中一者係組構成串接該獲取部份以形成該常數並儲存該常數於該對應之常數緩衝器中。
- 如申請專利範圍第11項之處理單元,其中,各該引導網路包含常數緩衝器,該常數緩衝器係組構成儲存高達該預定大小兩倍之常數。
- 一種用於操作微處理器架構之方法,包括:使用指令解碼單元解碼將被處理單元執行之指令;對於各指令,決定嵌入在該指令內之常數的位置;提供位置資訊給複數個常數引導網路;當解碼該指令時,使用該等常數引導網路,基於該 位置資訊而獲取嵌入在該指令內之常數;以及使用該等常數引導網路儲存該常數,其中,各該常數引導網路包含常數引導單元與常數緩衝器,其中,第一常數引導網路之第一常數引導單元係組構成基於從該指令解碼單元接收之位置資訊而獲得嵌入在該指令內之高達預定大小之常數,其中,回應於偵測到常數的大小大於該預定大小,該處理單元係組構成使用第二常數引導網路之第二常數引導單元與該第一常數引導單元以獲取該常數。
- 如申請專利範圍第13項之方法,其中,嵌入在該指令內之常數係立即或置換(imm/disp)常數。
- 如申請專利範圍第13項之方法,復包括:儲存將被該處理單元執行之指令在指令緩衝器中;使用該指令解碼單元從該指令緩衝器中獲得該指令;使用該常數引導網路,基於該位置資訊而從該指令緩衝器獲取嵌入在該指令內之該常數;以及在從該指令緩衝器獲取該常數之後,解除配置在與該指令相關聯之該指令緩衝器內之空間。
- 一種微處理器架構之系統,包括:記憶體單元;以及處理單元,耦接至該記憶體單元,其中,該處理單元包含:指令緩衝器,組構成儲存複數個指令; 指令解碼單元,組構成從該指令緩衝器獲得該指令並解碼該指令,其中,對於各指令,該指令解碼單元係組構成決定嵌入在該指令內之立即或置換(imm/disp)常數之位置;以及複數個常數引導網路,組構成從該指令解碼單元接收該位置資訊,其中,當該指令解碼單元解碼該指令時,該等常數引導網路係組構成基於該位置資訊從該指令緩衝器獲得嵌入在該指令內之該立即或置換常數且儲存該imm/disp常數,其中,各該常數引導網路包含常數引導單元與常數緩衝器,其中,第一常數引導網路之第一常數引導單元係組構成基於從該指令解碼單元接收之位置資訊而獲得嵌入在該指令內之高達預定大小之常數,其中,回應於偵測到常數的大小大於該預定大小,該處理單元係組構成使用第二常數引導網路之第二常數引導單元與該第一常數引導單元以獲取該常數。
- 如申請專利範圍第16項之系統,其中,該處理單元係組構成在該常數引導網路從該指令緩衝器獲取該imm/disp常數之後,解除配置在與該指令相關聯之該指令緩衝器內之空間。
- 如申請專利範圍第16項之系統,其中,該處理單元包含複數個常數引導網路,其中,各該常數引導網路包含常數引導單元與常數緩衝器,其中,該常數引導單元係 組構成基於從該指令解碼單元接收之位置資訊而獲得嵌入在該對應指令內之imm/disp常數,並儲存該imm/disp常數於該常數緩衝器中。
- 如申請專利範圍第16項之系統,其中,該處理單元包含複數個常數引導網路,其中,各該常數引導網路包含常數引導單元與常數緩衝器,其中,第一常數引導網路之第一常數引導單元係組構成基於從該指令解碼單元接收之該位置資訊而獲得嵌入在該指令內之高達預定大小之imm/disp常數,其中,回應於偵測到imm/disp常數的大小大於該預定大小,該處理單元係組構成使用第二常數引導網路之第二常數引導單元與該第一常數引導單元以獲取該imm/disp常數。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/768,417 US7908463B2 (en) | 2007-06-26 | 2007-06-26 | Immediate and displacement extraction and decode mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200907795A TW200907795A (en) | 2009-02-16 |
TWI438681B true TWI438681B (zh) | 2014-05-21 |
Family
ID=39790430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097123298A TWI438681B (zh) | 2007-06-26 | 2008-06-23 | 立即且置換之擷取與解碼機制 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7908463B2 (zh) |
TW (1) | TWI438681B (zh) |
WO (1) | WO2009002532A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7552405B1 (en) * | 2007-07-24 | 2009-06-23 | Xilinx, Inc. | Methods of implementing embedded processor systems including state machines |
US8261243B2 (en) * | 2008-08-12 | 2012-09-04 | International Business Machines Corporation | Selective execution of trace mechanisms for applications having different bit structures |
US8335910B2 (en) * | 2009-05-19 | 2012-12-18 | Via Technologies, Inc. | Early release of cache data with start/end marks when instructions are only partially present |
US10324723B2 (en) * | 2014-07-02 | 2019-06-18 | Nxp Usa, Inc. | Systems and methods for processing both instructions and constant values from a memory of a digital processor accessed by separate pointers |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04156613A (ja) | 1990-10-20 | 1992-05-29 | Fujitsu Ltd | 命令バッファ装置 |
US5353420A (en) | 1992-08-10 | 1994-10-04 | Intel Corporation | Method and apparatus for decoding conditional jump instructions in a single clock in a computer processor |
JP3452655B2 (ja) * | 1993-09-27 | 2003-09-29 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法 |
US5600806A (en) * | 1994-03-01 | 1997-02-04 | Intel Corporation | Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer |
US5581717A (en) * | 1994-03-01 | 1996-12-03 | Intel Corporation | Decoding circuit and method providing immediate data for a micro-operation issued from a decoder |
US5822558A (en) | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor |
US6237074B1 (en) * | 1995-05-26 | 2001-05-22 | National Semiconductor Corp. | Tagged prefetch and instruction decoder for variable length instruction set and method of operation |
JP3711422B2 (ja) * | 1995-12-20 | 2005-11-02 | セイコーエプソン株式会社 | 情報処理回路 |
JPH1063500A (ja) * | 1996-08-23 | 1998-03-06 | Matsushita Electric Ind Co Ltd | 信号処理装置 |
JP3658101B2 (ja) * | 1996-09-13 | 2005-06-08 | 株式会社ルネサステクノロジ | データ処理装置 |
JP3884172B2 (ja) | 1997-10-02 | 2007-02-21 | 株式会社東芝 | 可変長復号化装置および復号化方法 |
US6175908B1 (en) | 1998-04-30 | 2001-01-16 | Advanced Micro Devices, Inc. | Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte |
US6237087B1 (en) * | 1998-09-30 | 2001-05-22 | Intel Corporation | Method and apparatus for speeding sequential access of a set-associative cache |
US6732257B1 (en) * | 2000-09-29 | 2004-05-04 | Intel Corporation | Reducing the length of lower level instructions by splitting and recombining an immediate |
JP3776732B2 (ja) * | 2001-02-02 | 2006-05-17 | 株式会社東芝 | プロセッサ装置 |
US7039060B2 (en) * | 2001-03-07 | 2006-05-02 | Mips Tech Inc | System and method for extracting fields from packets having fields spread over more than one register |
WO2005013493A1 (en) | 2003-07-29 | 2005-02-10 | Zakrytoe Aktsionernoe Obschestvo Intel | A method for efficient variable length decoding |
US7432835B2 (en) | 2005-07-05 | 2008-10-07 | Matsushita Electric Industrial Co., Ltd. | Variable length decoding method and device |
-
2007
- 2007-06-26 US US11/768,417 patent/US7908463B2/en not_active Expired - Fee Related
-
2008
- 2008-06-23 TW TW097123298A patent/TWI438681B/zh not_active IP Right Cessation
- 2008-06-26 WO PCT/US2008/007960 patent/WO2009002532A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20090006814A1 (en) | 2009-01-01 |
TW200907795A (en) | 2009-02-16 |
WO2009002532A1 (en) | 2008-12-31 |
US7908463B2 (en) | 2011-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7818542B2 (en) | Method and apparatus for length decoding variable length instructions | |
US7818543B2 (en) | Method and apparatus for length decoding and identifying boundaries of variable length instructions | |
US7702888B2 (en) | Branch predictor directed prefetch | |
US7890702B2 (en) | Prefetch instruction extensions | |
US7743232B2 (en) | Multiple-core processor with hierarchical microcode store | |
JP5837126B2 (ja) | 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア | |
US6604190B1 (en) | Data address prediction structure and a method for operating the same | |
US9131899B2 (en) | Efficient handling of misaligned loads and stores | |
US20090006803A1 (en) | L2 Cache/Nest Address Translation | |
US7568070B2 (en) | Instruction cache having fixed number of variable length instructions | |
JP5543366B2 (ja) | ロックされたオペレーションを実行するためのシステムおよび方法 | |
US7680985B2 (en) | Method and apparatus for accessing a split cache directory | |
US7937530B2 (en) | Method and apparatus for accessing a cache with an effective address | |
TWI438681B (zh) | 立即且置換之擷取與解碼機制 | |
US8909904B2 (en) | Combined byte-permute and bit shift unit | |
US6636959B1 (en) | Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition | |
CN113568663A (zh) | 代码预取指令 | |
US5895497A (en) | Microprocessor with pipelining, memory size evaluation, micro-op code and tags | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |