TWI514272B - 融合if-then指令之微處理器及其方法 - Google Patents

融合if-then指令之微處理器及其方法 Download PDF

Info

Publication number
TWI514272B
TWI514272B TW103106474A TW103106474A TWI514272B TW I514272 B TWI514272 B TW I514272B TW 103106474 A TW103106474 A TW 103106474A TW 103106474 A TW103106474 A TW 103106474A TW I514272 B TWI514272 B TW I514272B
Authority
TW
Taiwan
Prior art keywords
instruction
block
instructions
condition
microprocessor
Prior art date
Application number
TW103106474A
Other languages
English (en)
Other versions
TW201445441A (zh
Inventor
Terry Parks
G Glenn Henry
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW201445441A publication Critical patent/TW201445441A/zh
Application granted granted Critical
Publication of TWI514272B publication Critical patent/TWI514272B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

融合IF-THEN指令之微處理器及其方法 【相關申請案之參考文獻】
本申請案主張2013年5月21日提出申請之美國臨時申請案第61/825,699號“融合IF-THEN指令之微處理器”之優先權,此案件係整體引用為本案之揭露內容。
本發明係關於微處理器之技術領域,特別是關於非循序執行(out-of-order execution)微處理器。
條件指令之執行是處理器指令集的一個重要議題。舉例來說,條件分支指令幾乎存在於每個指令集且經常被程式使用。除了分支指令,指令集亦會包含其他種類有條件執行之指令。
對於提升處理器效能之要求持續存在。相較於只能依序執行指令之處理器,具有微架構能使處理器不依照程式順序執行指令(非循序執行),通常可以獲得顯著的效能提升。因此,對於指令集內具有條件指令之處理器而言,尋找一個方法改善處理器非循序執行之效能,是一個亟待解決的問題。
本發明之一實施例係提供一微處理器。此微處理器包含一指令轉譯單元,用以由該IT指令抽取條件資訊以及將該IT指令融合於一IT區塊指令。對於該IT區塊之每個指令,此指令轉譯單元使用由該IT指令所抽取之該條件資訊以確認該IT區塊指令之一相對應條件,以及將該IT區塊指令轉譯為一微指令,而此微指令包含該相對應條件。此微處理器並包含複數個執行單元,用以依據該相對應條件,以條件地執行該微指令。
本發明之另一實施例提供一種利用一微處理器執行一If-Then(IT)指令與一相關IT區塊之方法,此方法包含由該IT指令抽取條件資訊之步驟。對於該IT區塊之每個指令,此方法包含:使用由該IT指令所抽取之該條件資訊以確認該IT區塊指令之一相對應條件;將該IT區塊指令轉譯為一微指令,而此微指令包含該相對應條件;以及依據該相對應條件,條件地執行該微指令。對於該IT區塊之該第一指令,前揭將該第一IT區塊指令轉譯為一微指令之步驟係包含將該IT指令融合於該IT區塊指令。
本發明之又一實施例提供一個微處理器。此微處理器包含一指令轉譯單元,透過將一IF-Then(IT)指令與一鄰近程式指令之融合,以將該IT指令與一相關聯IT區塊轉譯出M個微指令。此IT區塊包含M個指令,其中,M係一大於零之整數。此微處理器並包含複數個執行單 元,用以執行由該IT指令與該相關聯IT區塊轉譯出之該M個微指令。
本發明之又一實施例提供一種利用一微處理器執行之方法。此方法包含:利用該微處理器之一指令轉譯單元,將一IF-Then(IT)指令與一鄰近程式指令融合,以將該IT指令與一相關聯IT區塊轉譯出M個微指令。此IT區塊包含M個指令,其中M係一大於零之整數。此方法並包含利用該微處理器之複數個執行單元,執行由該IT指令與該相關聯IT區塊轉譯出之該M個微指令。
本發明之又一實施例提供一種微處理器。此微處理器包含一指令轉譯單元,用以將N個指令之指令序列轉譯為M個微指令之第一指令序列,其中,該N個指令之指令序列係一IF-Then(IT)指令與跟隨該IT指令之一相關聯之IT指令區塊,其中各該IT區塊指令係一非條件指令,該非條件指令會透過IT指令所指定條件之暗示而變為條件指令,其中,N係一大於一之整數,M係一大於零之整數。此指令轉譯單元亦將N-1個指令之指令序列轉譯為M個微指令之第二指令序列,其中,該N-1個指令之指令序列係對應於該IT區塊指令,其中該N-1個指令之每一個係指定與其相對應之IT區塊指令相同之操作,但對該相對應之IT指令區塊所暗示之指定條件予以明確指定,其中,該第二指令序列與該第一指令序列相同。此微處理器亦包含複數個執行單元,用以執行由該指令轉譯單元所產生之該些微指令。
本發明之又一實施例提供一種利用一微處理器執行之 方法。此方法包含:利用一指令轉譯單元,將N個指令之指令序列轉譯為M個微指令之第一指令序列,其中,該N個指令之指令序列係一IF-Then(IT)指令與跟隨該IT指令之一相關聯之IT指令區塊,其中各該IT區塊指令係一非條件指令,該非條件指令會透過IT指令所指定條件之暗示而變為條件指令,其中,N係一大於一之整數,M係一大於零之整數。此方法亦包含:利用該指令轉譯單元,將N-1個指令之指令序列轉譯為M個微指令之第二指令序列,其中,該N-1個指令之指令序列係對應於該IT區塊指令,其中該N-1個指令之每一個係指定與其相對應之IT區塊指令相同之操作,但對該相對應之IT指令區塊所暗示之指定條件予以明確指定,其中,該第二指令序列與該第一指令序列相同;此方法亦包含:利用複數個執行單元,用以執行由該指令轉譯單元所產生之該些微指令。
關於本發明之優點與精神可以藉由以下的發明詳述及所附圖式得到進一步的瞭解。
100‧‧‧微處理器
102‧‧‧指令快取
104‧‧‧指令轉譯單元
112‧‧‧暫存器別名表(RAT)
114‧‧‧保留站
116‧‧‧執行單元
118‧‧‧引退單元
126‧‧‧格式化單元狀態(FSTATE)
128‧‧‧儲存處理器狀態暫存器(SPSR)
122‧‧‧指令間接暫存器(IIR)
124‧‧‧重排緩衝器(ROB)
132‧‧‧指令格式化單元
134‧‧‧格式化指令佇列(FIQ)
136‧‧‧指令轉譯器
154‧‧‧微指令
126‧‧‧格式化單元狀態(formatter state,FSTATE)儲存空間
152‧‧‧程式指令
138‧‧‧延伸指令佇列(XIQ)
202‧‧‧ITSTATE值
206‧‧‧執行前位元
208‧‧‧全部條件
212‧‧‧罩遮位元
304‧‧‧ITSTATE欄位
306‧‧‧計數欄
402‧‧‧格式化指令佇列134之項目
406‧‧‧欄位
404‧‧‧ITSTATE欄位
502‧‧‧指令間接暫存器(IIR)之項目
504‧‧‧罩遮欄位
602‧‧‧重排緩衝器之項目
604‧‧‧融合旗標
606‧‧‧完成旗標
608‧‧‧例外旗標
612‧‧‧後續指令指標(NSIP)欄位
614‧‧‧結果欄位
902‧‧‧Thumb指令
904‧‧‧格式化指令
906‧‧‧微指令
1002‧‧‧程式指令
1004‧‧‧格式化指令
1006‧‧‧微指令
第一圖係本發明一微處理器之方塊示意圖。第二圖係第一圖之指令格式化單元為各個IT區塊指令所產生之ITSTATE之一實施例之方塊示意圖。
第三圖係第一圖之FSTATE之一實施例之方塊示意圖。
第四圖係第一圖之格式化指令佇列(FIQ)之項目之一實施例之方塊示意圖。
第五圖係第一圖之指令間接暫存器(IIR)之項目之一實 施例之方塊示意圖。
第六圖係第一圖之重排緩衝器(ROB)之項目一實施例之方塊示意圖。
第七圖係第一圖之微處理器執行IT指令與IT區塊之一實施例之流程圖。
第八圖係第一圖之微處理器所執行之操作一實施例之流程圖。
第九圖係第一圖之微處理器執行第八圖之操作之一實施例之方塊示意圖。
第十圖係第一圖之微處理器執行第八圖之操作之另一實施例之方塊示意圖。
名詞定義
IF-Then(IT)指令,係賦予緊接在IT指令後方之N個指令條件,N大於零。本文將此N個指令稱為“IT區塊”或“IT區塊指令”。IT指令所包含之條件資訊可透過:(1)N,以及(2)IT區塊各個指令的條件,加以確定。舉例來說,進階精簡指令集機器(Advanced RISC Machines,ARM)架構之IT指令即是本文所定義之IT指令。
IT區塊,係緊接在前方之指令後並被此指令賦予條件之N個指令,N大於零。此在前方之指令係稱為“IT指令”。IT區塊內之N個指令中的每一個的相對應條件,可透過IT指令的條件資訊加以確定。舉例來說,ARM架構之IT區塊即是本文所定義之IT區塊。
將一第二指令融合(Fusing)於一第一指令,係指將第一指令與第二指令集體地轉譯為C個微指令。C小於A與B的加總,其中,A是第一指令在不與其他指令融合之情況下,透過轉譯通常會產生之微指令的數量,B是第二指令在不與其他指令融合之情況下,透過轉譯通常會產生之微指令的數量。在許多事例中,A、B與C都是一。亦即,將一第二指令融合於一第一指令係指將第一與第二指令轉譯出單一個微指令。
指令轉譯單元,係處理器內將第一指令集之指令轉譯為第二指令集之指令的硬體。第一指令集係撰寫程式之程式人員可由外部看見並由微處理器加以執行。亦即,第一指令集具有架構,其係遵守一指令集架構(ISA)。本文之第一指令集之指令是指,指令、巨集指令、程式指令、架構指令、或是ISA指令。本文之第二指令集之指令是指微指令,執行一個或多個微指令之執行結果係由程式指令所定義。因此,複數個執行單元對於一個或多個微指令之集體執行可由程式指令所實現(implement);亦即,複數個執行單元對於由指令轉譯單元所產生之實現微指令之集體執行,係執行由程式指令所指定之操作於程式指令所指定之輸入上,以產生程式指令所定義之結果。被融合的程式指令所轉譯出之微指令係實現此被融合的程式指令。
指令集,係定義二進位制編碼值之集合(即機器語言指令)與微處理器所執行操作間的對應關係。機器語言指令指示微處理器執行的操作如:將暫存器1內之運算元 與暫存器2內之運算元相加並將結果寫入暫存器3、將記憶體位址0x12345678之運算元減掉指令所指定之立即運算元並將結果寫入暫存器5、依據暫存器7所指定之位元數對暫存器6內的數值進行位移、若是零旗標被設定時分支到指令後方之36個位元組、將記憶體位址0xABCD0000的數值載入暫存器8。因此,指令集係定義各個機器語言指令使微處理器執行所欲執行之操作的二進位編碼值。須瞭解的是,指令集定義二進位值與微處理器操作間的對應關係,並不意味著單一個二進位值就會對應至單一個微處理器操作。具體來說,在部分指令集中,多個二進位值可能會對應至同一個微處理器操作。
指令集架構(ISA),從微處理器家族的脈絡來看,包含:(1)指令集;(2)指令集之指令所能存取資源(例如:暫存器與記憶體定址模式)之集合;以及(3)微處理器回應指令集之指令執行所產生的例外事件集(例如:除以零、分頁錯誤、記憶體保護違反等)。因為程式撰寫者,如組譯器與編譯器的撰寫者,想要作出可在一微處理器家族執行之機器語言程式時,就需要此微處理器家族之ISA定義,所以微處理器家族的製造者通常會將ISA定義於操作者操作手冊中。舉例來說,2009年3月公佈之Intel 64與IA-32架構軟體開發者手冊(Intel 64 and IA-32 Architectures Software Developer’s Manual)即定義Intel 64與IA-32處理器架構的ISA。此軟體開發者手冊包含有五個章節,第一章是基本架構;第二A章是指令集參 考A至M;第二B章是指令集參考N至Z;第三A章是系統編程指南;第三B章是系統編程指南第二部分,此手冊係列為本案的參考文件。此種處理器架構通常被稱為x86架構,本文中則是以x86、x86 ISA、x86 ISA家族、x86家族或是相似用語來說明。在另一個例子中,2010年公佈之ARM架構參考手冊,ARM v7-A與ARM v7-R版本Errata markup,定義ARM處理器架構之ISA,此參考手冊整體係引用為本說明書之揭示內容。此ARM處理器架構之ISA在此亦被稱為ARM、ARM ISA、ARM ISA家族、ARM家族或是相似用語。其他眾所周知的ISA家族還有IBM System/360/370/390與z/Architecture、DEC VAX、Motorola 68k、MIPS、SPARC、PowerPC與DEC Alpha等等。ISA的定義會涵蓋處理器家族,因為處理器家族的發展中,製造者會透過在指令集中增加新指令、以及/或在暫存器組中增加新的暫存器等方式來改進原始處理器之ISA。舉例來說,隨著x86程式集架構的發展,其於Intel Pentium III處理器家族導入一組128位元之多媒體擴展指令集(MMX)暫存器作為單指令多重數據流擴展(SSE)指令集的一部分,而x86 ISA機器語言程式已經開發來利用XMM暫存器以提升效能,雖然現存的x86 ISA機器語言程式並不使用單指令多重數據流擴展指令集之XMM暫存器。此外,其他製造商亦設計且製造出可執行x86 ISA機器語言程式之微處理器。例如,超微半導體(AMD)與威盛電子(VIA Technologies)即在x86 ISA增加新技術特徵,如超微半 導體之3DNOW!單指令多重數據流(SIMD)向量處理指令,以及威盛電子之Padlock安全引擎隨機數產生器(random number generator)與先進譯碼引擎(advanced cryptography engine)的技術,前述技術都是採用x86 ISA之機器語言程式,但卻非由現有之Intel微處理器實現。以另一個實例來說明,ARM ISA原本定義ARM指令集狀態具有4位元組之指令。然而,隨著ARM ISA的發展而增加其他指令集狀態,如具有2位元組指令以提升編碼密度之Thumb指令集狀態以及用以加速Java位元組碼程式之Jazelle指令集狀態,ARM ISA機器語言程式已被發展來使用部分或所有其他ARM ISA指令集狀態,即使現存的ARM ISA機器語言程式並非採用這些其他的ARM ISA指令集狀態。
ARM架構係指定一ARM指令集與一Thumb指令集,ARM指令集係一32位元指令集。Thumb指令集原本係開發為具有ARM指令集功能之子集的16位元指令集,ARM ISA之後續版本導入Thumb-2之技術,使原本Thumb指令集能夠延伸出許多32位元指令。當32位元指令字之高位(upper)四個位元被設定時,在ARM指令集中的大部分指令都可被條件執行。然而,此四個位元通常無法在16位元之Thumb指令中找到對應(例如,例外係一條件分支指令)。
因應此不足之處,ARM架構具有一個稱為If-Then(IT)的指令。如ARM架構參考手冊第A8-104頁所稱,”If Then指令可對其後續至多四個指令(即IT區塊)賦予條 件。IT區塊內之指令的條件可與其相同,或部分與其相反”。2010年公佈之ARM架構參考手冊,ARM v7-A與ARM v7-R版本Errata markup,整體係引用為本說明書之揭示內容。此ARM IT指令指定一第一條件(位元[7:4])與一罩遮(位元[3:0])。此第一條件可以是表1所示之十五個可能條件之其中之一(條件值‘1111’為無法預期(UNPREDICTABLE))。
此ARM架構指定一應用程式狀態暫存器(Application Program Status Register,APSR),此應用程式狀態暫存器 包含四個條件旗標:N(負數)、Z(零)、C(進位)、與V(溢位)。在表1中每一行(row)之最右側欄(column)即顯示條件旗標之數值,此旗標數值亦適用於其他行之相應欄所指定之條件。換言之,對於表1中每一給定行之條件而言,例如由一IT指令賦予條件之一IT區塊指令,在相對應之條件指令之執行時間內,應用程式狀態暫存器之條件旗標的當前值不是滿足此條件,就是不滿足此條件。
IT指令之第一條件位元指定IT區塊內第一指令之條件。IT指令之罩遮位元對於IT區塊內之指令數量的值進行編碼,易言之,IT區塊內之指令數量也就是緊接著IT指令且被IT指令賦予條件之指令的數量。無論指令是一“Then”(T)或是一“Else”(E),對於IT區塊之各個指令,罩遮位元也會進行編碼。“T”是指賦予IT區塊指令之條件將會是第一條件(亦即IT指令之[7:4]位元所指定之條件);不過,“E”則是指賦予IT區塊指令之條件將會是第一條件之相反條件。舉例來說,對於一給定IT區塊指令而言,若是第一條件是EQ而E被指定於罩遮內,賦予此IT區塊指令之條件就會是NE。對於IT指令而言,E會觸發第一條件之低位(lower)位元(除非E無法為AL條件所指定)此ARM架構指定一當前程式狀態暫存器(Current Program Status Register,CPSR)。
依據ARM架構,應用程式狀態暫存器是當前程式狀態暫存器在應用層的別名。當前程式狀態暫存器包含提供 給Thumb IT指令之執行狀態位元,這些位元稱為ITSTATE位元。一共有八個ITSTATE位元。ITSTATE之高位三個位元([7:5])指定賦予IT區塊指令之基礎條件(base condition),而其低位五個位元則是對於各IT指令區塊的IT區塊之大小(亦即IT區塊內之指令的數量值)以及各IT區塊指令之條件的最低有效位元(least significant bit)的值加以編碼。在傳統之ARM處理器中,ITSTATE位元是透過IT指令與IT指令區塊之執行來進行更新,往後將對此做更多的描述。
在傳統之ARM處理器中,IT指令之執行會讓當前程式狀態暫存器之ITSTATE位元隨著IT指令之低位八位元(亦即第一條件位元[7:4]與罩遮位元[3:0])被載入。對於IT區塊內之各個指令而言,指令係依據應用程式狀態暫存器之條件旗標值有條件地執行。換言之,處理器只有在應用程式狀態暫存器內之條件旗標滿足ITSTATE之位元[7:4]內所指定之條件的情況下,才會執行由IT區塊指令所指定之操作。也就是說,在IT區塊指令之執行時間內,各個IT區塊指令之條件係指定於ITSTATE之位元[7:4]之當前值。在第一IT區塊指令之執行時間內,其條件係由IT指令執行後之ITSTATE之[7:4]位元來確認。若是第一IT區塊指令正常地完成其執行,ITSTATE之位元[4:0]就會左移一位元(其中包含在最低有效位元內移入一零值)。在第二IT區塊指令之執行時間內,其條件係由更新後之ITSTATE之[7:4]位元來確認。若是第二IT區塊指令正常地完成其執行, ITSTATE之位元[4:0]會再度左移一位元。此程序會重覆執行於各個IT區塊指令,直到最後一個IT區塊指令正常地完成其執行。此時,各個ITSTATE位元都會被更新為零值。不過,若是過程中有一個IT區塊指令發生例外,當前程式狀態暫存器之ITSTATE位元之未更新值(亦即,執行導致例外之IT區塊指令前之當前程式狀態暫存器之ITSTATE位元之值)會被儲存在相關例外處理程序(exception handler)之例外模式(exception mode)下的ARM架構儲存處理器狀態暫存器(Saved Processor Status Register,SPSR)中。
如前文所述,由於IT區塊指令之內部並不包含條件,傳統之ARM處理器是從當前程式狀態暫存器之ITSTATE位元取得賦予IT指令之條件,這會造成IT區塊指令之非循序執行的困難。
本發明之實施例的優點在於,對於各個程式之多樣IT指令,透過將IT指令與其鄰近指令之融合,可避免IT指令不必要地浪費機器資源,例如:重排序緩衝器項目、保留站項目、暫存器配置表項目、指令間接暫存器項目、執行單元配置儲位、指令退出儲位等等。這有助於增加具有IT指令(例如ARM ISA之IT指令)之編碼中,單位時脈率之指令數(instruction per clock,IPC)。本發明所提供之實施例具有可接受IT區塊指令之非循序執行的優點。
第一圖係一微處理器100之方塊圖。此微處理器100係一非循序執行微處理器100,亦即,此微處理器100會 發布與程式順序不相關之指令以供執行,只要此執行有利於整體效能。不過,此微處理器100依照程式順序引退指令。此微處理器100具有一功能單元管線,其具有一指令快取102連接至一指令轉譯單元104,指令轉譯單元104連接至一暫存器別名表(register alias table,RAT)112,暫存器別名表112連接至一保留站114,保留站114連接至執行單元116,執行單元116連接至一引退單元118,引退單元118連接至儲存處理器狀態暫存器(SPSR)128。就一實施例而言,每個儲存處理器狀態暫存器128對應一個例外模式。微處理器100並具有一指令間接暫存器(IIR)122與一重排緩衝器(ROB)124,指令間接暫存器122連接至指令轉譯單元104,而重排緩衝器124則是連接至執行單元116。指令轉譯單元104包含一指令格式化單元132,指令格式化單元132連接至一格式化指令佇列(FIQ)134,格式化指令佇列134連接至一指令轉譯器136,指令轉譯器136連接至暫存器別名表112。在一實施例中,在指令轉譯器136與暫存器別名表112間連接有一微指令佇列,以緩衝由指令轉譯器136產生並由暫存器別名表112接收之微指令154。指令格式化單元132具有定義為格式化單元狀態(FSTATE)126之儲存空間。
指令快取102暫存(cache)由系統記憶體取得之程式指令152。在一實施例中,此指令快取102每一個時鐘週期提供十六個程式指令之位元組至指令轉譯單元104。此程式指令152可以是ISA指令152、架構指令、巨集指 令152、或簡單指令152。在一實施例中,此程式指令係ARM ISA指令,其包含Thumb指令,如Thumb IT指令與緊跟在此Thumb IT指令後方之IT區塊內之Thumb指令。
指令轉譯單元104將由指令快取102所取得之程式指令轉譯為微指令154,程式指令包含IT指令與IT區塊指令,微指令154係由一微指令集所定義,並由執行單元116所執行之指令集合。微指令集不同於程式指令152所屬之ISA。在一實施例中,一個微指令154之寬度約為200位元。本發明之優點在於,指令轉譯單元104將IT指令與鄰近於IT指令之程式指令152相融合以提升微處理器100之效率,此指令轉譯單元152在本文後續內容會有更詳細的說明。
暫存器別名表112執行暫存器重命名之工作。保留站114保留微指令154,直到這些微指令已完成發布至執行單元116以供執行之準備,亦即,直到所有由微指令154指定之來源運算元都可被取得且執行單元116可被利用以執行微指令154為止。執行單元116所執行之微指令154包含由IT區塊指令152轉譯來之微指令154。舉例來說,執行單元116可包含整數單元、浮點單元、單指令多數據流(SIMD)單元、載入/儲存單元、與/或分支單元。在一實施例中,此微處理器100係以超純量(superscalar)、非循序之方式,在每一個時鐘週期內,對於各個執行單元116發布一個微指令154。
在一實施例中,此暫存器別名表112係將由程式指令152 指定之微處理器100架構暫存器重新命名為接收微指令154結果之實體暫存器。在一實施例中,此實體暫存器之名稱係對應於分配給微指令154之重排緩衝器124之項目索引。就一實施例而言,此重排緩衝器124係以環型佇列之方式組織起來。暫存器別名表112依據程式順序由指令轉譯單元104接收微指令154,並以先入先出(FIFO)之方式對各個微指令154分別分配一個重排緩衝器項目124。因此,此重排緩衝器124會使微指令154之順序維持其由程式指令154轉譯出來之程式順序,此特徵可以使引退單元118依照程式順序引退微指令154與其相對應之程式指令152。進一步來說,若是所有由程式指令152轉譯出來之微指令154都由執行單元116完成執行,且這些微指令154是微處理器100中最舊的微指令154(可由其位於重排緩衝器124中相對應於後續引退指令指標(next-to-retire pointer)的位置來確認),引退單元118會引退此微指令154與程式指令152,假如這些微指令154中沒有任何一個微指令導致例外發生的話。進一步來說,引退單元118會將微指令154之執行結果寫入微處理器100之架構狀態、更新架構程式計數器、並釋放對應於這些微指令154之重排緩衝器項目124。此外,若是完成引退準備之微指令154導致例外條件之發生,引退單元118會更新相對應例外模式之儲存處理器狀態暫存器128。
程式指令152可具有不同長度。舉例來說,ARM ISA程式會包含32位元與16位元長度之指令152。指令格式 化單元132對指令快取102所取得的指令串位元組進行解碼,並確認這些不同長度之程式指令152的邊界。就一實施例而言,此指令格式化單元132係在格式化指令佇列134之每一個項目都放置一個程式指令152。格式化指令佇列134之項目在第四圖會有更詳細的說明。當遇到一個IT指令152時,指令格式化單元132會將資訊儲存至FSTATE 126,指令格式化單元132之狀態機需要此資訊來對各個IT方塊指令152產生相對應之ITSTATE。就一實施例而言,格式化指令佇列134之項目係用以保留由指令格式化單元132所接收之相對應ITSTATE。FSTATE 126在第三圖會有更詳細的說明。就一實施例而言,指令格式化單元132在一時鐘週期內可以格式化至多三個程式指令152,並將其連同相對應之ITSTATE提供至格式化指令佇列134。
格式化指令佇列134提供格式化後之程式指令與相關之ITSTATE至指令轉譯器136。指令轉譯器136將其轉譯為微指令154,並在提供微指令154時一併提供相應之ITSTATE,此ITSTATE係由指令格式化單元132產生給轉譯出此微指令154之程式指令152。在一實施例中,格式化指令佇列134係在一個時鐘週期內,提供至多三個格式化後之程式指令給指令轉譯器136。當重排緩衝器之項目124可用來放置這些微指令154時,暫存器別名表112會從延伸指令佇列(XIQ)138依據程式順序依序取得這些微指令154。在一實施例中,此指令格式化單元132係將IT指令指示為一空操作(no-op)指令,而 指令轉譯器136係將空操作指令與一鄰近指令相融合。
第二圖係第一圖之指令格式化單元132為各個IT區塊指令所產生之ITSTATE 202之方塊示意圖。在一實施例中,指令格式化單元132為各個IT區塊指令所產生之ITSTATE 202具有八個位元。指令格式化單元132產生一ITSTATE 202位元之”執行前”數值,以供IT區塊指令來模擬當前程式狀態暫存器被ARM架構所指定時,其ITSTATE位元之操作狀態。在概念上,ITSTATE 202之數值係在IT區塊指令執行前,於傳統ARM處理器之當前程式狀態暫存器中之ITSTATE位元值。如第二圖所示,ITSTATE 202之位元[7:5]係保留基礎條件204,位元[4:0]保留“執行前”位元206給IT區塊指令。執行前位元206係對IT區塊指令條件之最低有效位元與執行前IT區塊之大小進行編碼。執行前IT區塊之大小係指IT區塊指令之數量,其包含即時IT區塊指令但排除任何IT區塊內,早於此即時IT區塊指令之指令。換言之,IT區塊指令之ITSTATE 202之數值是相關聯之IT指令152之位元[7:0],此IT指令152之位元[4:0]係左移N-1位元,其中N是IT區塊內之指令位置,換言之,對於第一指令而言,N就是1,對於第二指令而言,N就是2,對於第三指令而言,N就是3,對於第四指令而言,N就是4。舉例來說,假定IT指令之低位八個位元的數值是二進位數00100101,此數值係指進位設置(Carry Set,CS)之第一條件0010與一罩遮0101,其指定IT區塊之大小為四個指令且“T”賦予IT區塊之第二 指令、“E”賦予IT區塊之第三指令且“T”賦予IT區塊之第四指令。在此範例中,指令格式化單元132為第一IT區塊指令所產生之ITSTATE 202是00100101,為第二IT區塊指令所產生的是00101010,為第三IT區塊指令所產生的是00110100,為第四IT區塊指令所產生的是00101000。在此情況下,IT區塊指令之全部條件208係保留於ITSTATE 202之位元[7:4],即CS(二進位數0101)賦予第一、第二與第四IT區塊,而進位清除(Carry Clear(CC),其為二進位數0011)則賦予第三IT區塊指令。ITSTATE 202之位元[3:0]係指罩遮位元212。就一實施例而言,對於任何非IT區塊指令而言,指令格式化單元132所產生之ITSTATE數值為二進位數00000000。此ITSTATE 202有利於微指令154之執行與例外之處理,這在後續段落會有更詳細的說明。簡言之,ITSTATE 202之全部條件208會成為IT區塊指令轉譯出之各個微指令154之條件,而全部之ITSTATE 202會轉變為儲存處理器狀態暫存器128之ITSTATE 202並提供給例外處理程序。
就一實施例而言,指令轉譯單元104可透過將一IT指令與其鄰近程式指令152之融合,以有效地將此IT指令152轉譯為零微指令154。換言之,IT指令152與IT區塊指令152所轉譯出之微指令係缺少一對應於IT指令之微指令。亦即,指令轉譯單元104將IT指令152與鄰近於IT指令之程式指令152轉譯出C個微指令,其中,C等於A與B之加總減一,其中,A是鄰近之程 式指令152在不與其他指令融合之情況下,透過轉譯通常會產生之微指令的數量,B是IT指令152在不與其他指令融合之情況下,透過轉譯通常會產生之微指令的數量。B通常為一,即一空操作微指令154。在許多情況下,A、B與C均為一,亦即,將一IT指令152與鄰近之程式指令152相融合,就是將此二個指令轉譯為單一個微指令154。此融合操作是可能實現的,因為指令轉譯單元104會產生適當的ITSTATE給各個由IT區塊指令152轉譯而來之微指令154。如此,可省略傳統處理器因應IT指令應為IT區塊指令152取得條件時,需為微指令154可能被執行之情況而填寫當前程式狀態暫存器之ITSTATE位元之需求。因此,IT指令152之功能會分布於IT區塊指令152轉譯所產生之微指令154中,本文對此會有詳細說明。
第三圖係第一圖之FSTATE 126一實施例之方塊示意圖。此FSTATE 126包含一ITSTATE欄304與一計數欄306。在指令格式化單元132遇到一IT指令152時,指令格式化單元132會對IT指令152進行解碼以確認IT區塊內之指令數量,並以IT區塊之指令數量之數值填入此計數欄306以及以IT指令152之位元[7:0]填入ITSTATE 304,兩者之調整可基於在IT指令於同一個時鐘週期內被處理的IT區塊指令152之數量來進行,這部分在下文會有更詳細的說明。指令格式化單元132使用ITSTATE 304與計數欄306之數值在後續時鐘週期內產生ITSTATE 202,以在IT指令被格式化之時鐘週期內 提供ITSTATE 202給未在此時鐘週期內格式化之IT區塊指令。如前述,就一ARM架構之實施例而言,IT區塊內之指令數量係由IT指令152之罩遮位元(位元[3:0])所確定。尤其是,若是位元0是一,指令數量即為四;若是位元0是零且位元1是一,數量就是三;若是位元0與1都是零而位元2是一,數量就是二;若是位元0、1與2都是零而位元3是一,數量就是一。在一實施例中,指令格式化單元132可以在一個時鐘週期內格式化多個指令152以儲存至格式化指令佇列134。當指令格式化單元132格式化IT區塊指令152時,指令格式化單元132利用給定時鐘週期內格式化之數量來減少計數欄306之數值,並依此更新ITSTATE 304。進一步來說,指令格式化單元132係依據給定時鐘週期內IT區塊指令被格式化之數量,來將ITSTATE 304之低位五個位元向左移動。若是指令格式化單元132在一給定時鐘週期內格式化IT指令與一個以上之IT區塊指令,計數欄306與ITSTATE 304之起始值就會反映在此時鐘週期內IT區塊指令被格式化之數量。舉例來說,若是IT區塊包含四個指令而指令格式化單元132在第一時鐘週期內格式化IT指令與前兩個IT區塊指令,計數欄306就會被寫入數值二,而ITSTATE就會具有IT指令之低位八個位元之數值,但其中低位五個位元係左移二位元。此指令格式化單元132亦可適用於在單一時鐘週期內格式化三個以上指令之實施例,因此可能遭遇兩個IT指令。在此實施例中,指令格式化單元132會具有儲存 兩個FSTATE 126之儲存空間。
第四圖係第一圖之格式化指令佇列134之一項目402之實施例方塊示意圖。此格式化指令佇列項目402具有一欄位406,由指令格式化單元132接收一被格式化程式指令,例如一IT指令152、一IT區塊指令或是其他程式指令。此格式化指令佇列項目402並具有一ITSTATE欄位404,用以接收指令格式化單元132為此格式化程式指令406所產生之ITSTATE 202。
第五圖係第一圖之指令間接暫存器122之項目502之實施例方塊示意圖。指令間接暫存器122之項目502係配置給各個由指令轉譯單元104產生之微指令154,各個指令間接暫存器項目502係保留微指令154之部分狀態。如第二圖所示,各個指令間接暫存器項目502在微指令154之其他狀態(未圖示)中具有一罩遮欄位504。當指令轉譯單元104產生由IT區塊指令轉譯而來之微指令154時,由指令格式化單元132對轉譯出微指令之IT區塊指令所產生之ITSTATE 202之罩遮位元212,係儲存至指令間接暫存器項目502中分配給微指令154之罩遮欄位504。若是微指令154造成一例外事件,微處理器100會由相對應之指令間接暫存器項目502讀取罩遮504之數值,並填入相關聯例外模式之儲存處理器狀態暫存器128之ITSTATE[3:0]位元,以供給例外處理程序。在此情況下,當前程式狀態暫存器之ITSTATE會被概念化為虛擬的或是分布於各個微指令154,而非位於單一架構狀態中。此特徵有利於微指令154(包含 由IT區塊指令轉譯而來之微指令154)之非循序執行。就一實施例而言,若是指令轉譯單元104將IT區塊指令152轉譯為多個微指令154,各個微指令154之相關聯之指令間接暫存器項目502係被填入由指令格式化單元132為轉譯出微指令154之IT區塊指令所產生之ITSTATE 202之罩遮位元212。在另一實施例中,罩遮212係儲存於關聯於此微指令154之重排緩衝器項目602(請參照第六圖),而非被儲存於指令間接暫存器122內,並且由重排緩衝器項目602提供至引退單元118。
第六圖係第一圖之重排緩衝器124之項目602之實施例方塊示意圖。暫存器別名表112係依程式順序配置重排緩衝器項目602給各個微指令154。重排緩衝器項目602具有一融合旗標604、一完成旗標606、一例外旗標608、一後續指令指標(next sequential instruction pointer,NSIP)欄位612、與關聯於配置此項目602之微指令154之一結果欄位614。此結果欄位614係由執行此微指令154之執行單元116接收微指令154之執行結果。融合旗標604在指令轉譯器136將轉譯出此微指令154之程式指令152與其鄰近程式指令152相融合時被設定為一真值;否則,此融合旗標604被設定為一假值。其優點在於,若是指令轉譯單元104將鄰近IT指令152之程式指令152融合至IT指令152時,微處理器100就會設定由IT指令152與其鄰近程式指令152轉譯出之微指令154之融合旗標604。後續指令指標欄位612仍正常地填入緊跟在轉譯出微指令154之程式指令152後方 之程式指令152之記憶體位址。不過,在兩個程式指令152相融合之情況下,後續指令指標欄位612則是填入緊跟在此二個相融合之程式指令中,第二個程式指令152後方之程式指令152之記憶體位址。就重排緩衝器項目602之配置而言,完成旗標606起初為假,而執行單元116在完成微指令154之執行後就會將完成旗標606設定為真,同時也包含填寫項目602之結果614與例外旗標608。
例外旗標608起初在重排緩衝器項目602之配置中設定為假,若是微指令造成一例外條件,執行單元116就會將例外旗標608設定為真。若是一微指令154指出一例外且其融合旗標604指出相對應的程式指令152已被融合,例如一融合IT指令152,引退單元118就會指示指令轉譯單元104暫時不去融合程式指令152。引退單元118會使微處理器100開始去重新取得與重新轉譯前一個導致例外發生之融合程式指令之程式,而此時,指令轉譯單元104不會去融合鄰近之程式指令152。因此,若是一IT指令152與其相鄰之程式指令152相融合而其中任一個指令導致例外,此IT指令152與其相鄰之程式指令152就會被重新轉譯,但是指令轉譯單元104在此重新轉譯之過程中不會將此二指令相融合。就一實施例而言,當一IT指令152被重新轉譯而不進行指令融合時,指令轉譯單元104會將IT指令152轉譯為一空操作微指令154,因為沒有任何需要微指令154執行之操作,這是因為沒有CPSR之單一架構ITSTATE位元 需要載入,且ITSTATE 202已經由指令轉譯單元104產生給每個由相關聯之IT區塊指令152轉譯出之微指令154,此處將予以闡述。本文所稱之例外條件可包含,但不限於,中斷點、未定義指令、管理程序呼叫、軟體中斷、記憶系統中止(memory system abort)、頁面錯誤、機器檢查(machine check)、記憶體保護錯誤、與各種算術例外,如除以零、溢位與不足位(underflow)。
第七圖係第一圖之微處理器100執行一IT指令152與IT區塊一實施例之流程圖。此流程始於步驟702。
在步驟702,指令格式化單元132由指令快取102接收程式指令152位元組串流,並在其中遇到一IT指令152並對此IT指令152進行解碼。此指令格式化單元132由IT指令152抽取要產生ITSTATE 202給後續IT區塊指令152之資料。以ARM架構為實施例,抽取出的資訊是第一條件與IT指令152之罩遮欄位(即低位八個位元)。指令格式化單元132亦將IT指令152連同作為ITSTATE 202之二進位數00000000寫入格式化指令佇列134。在一實施例中,指令格式化單元132在將IT指令寫入格式化指令佇列134前會將IT指令標示為空操作指令,且指令轉譯器136係將一空操作程式指令之鄰近程式指令152融合於此空操作程式指令152。指令格式化單元132亦基於所抽取之資訊更新FSTATE 126。進一步來說,指令格式化單元係將IT區塊指令中留待指令格式化單元132處理之數量填入計數欄306內。舉例來說,若是指令格式化單元132在其處理IT指令152 之同一個時鐘週期內處理完所有IT區塊指令152時,指令格式化單元132就會在計數欄306內填入零值。再舉一例,若是指令格式化單元132在其處理IT指令152之同一個時鐘週期內未處理任何IT區塊指令152時,指令格式化單元132在計數欄306內填入之數值就會是IT區塊之大小。再舉一例,假定IT區塊之大小為三,而指令格式化單元132在其處理IT指令152之同一個時鐘週期內處理了一個IT區塊指令152時,指令格式化單元就會在計數欄306內填入二。此外,指令格式化單元132會以IT指令152之位元[7:5]填入ITSTATE 304之位元[7:5]。最後,指令格式化單元132還會以IT指令152之位元[4:0]依據IT指令152在同一個時鐘週期內處理之IT區塊指令152之數量左移後產生之數值,填入ITSTATE 304之位元[4:0]。接下來前進至步驟704。
在步驟704中,指令格式化單元132將IT區塊指令152解碼。值得注意的是,步驟704可對於部分或全部IT區塊指令152進行處理,而此處理係與步驟702對於IT指令152之處理在同一個時鐘週期內。指令格式化單元132確認各個IT區塊指令之ITSTATE 202。若是此IT區塊指令與IT指令152在同一個時鐘週期內被處理,指令格式化單元132就會產生ITSTATE 202,其數值為IT指令152之低位八個位元且其低位五個位元係平移N-1,其中N是IT區塊內該指令之位置。若是IT區塊指令係在IT指令152之後續時鐘週期內進行處理,指令格式化單元132就會產生ITSTATE 202,而其數值為 FSTATE 126 ITSTATE 304且其低位五個位元係平移M-1,其中M是指該指令在指令格式化單元132在該時鐘週期內處理之指令群中的位置。舉例來說,假定:(1)指令格式化單元132可以在單一個時鐘週期內格式化三個指令,(2)IT指令152之低位八個位元的數值是00001111(亦即,IT區塊之大小為四個指令,第一條件為EQ,且其他三個指令都是“E”),以及(3)IT區塊指令152之其中之一係在處理IT指令152之時鐘週期內被處理。在此情況下,在第一時鐘週期(即處理IT指令152之時鐘週期)內,指令格式化單元132會產生數值為00001111之ITSTATE 202給第一IT區塊指令,此數值係將IT指令152之低位八個位元中之低位五個位元平移距離零(N-1=1-1=0)所產生;將二進位數00011110填入FSTATE 206 ITSTATE 304,此數值係將IT指令152之低位八個位元左移一位所產生,此左移數值即在第一時鐘週期內被處理之指令數量;以及在計數欄306內填入三,此數值係尚待處理之IT區塊指令152之數量。在第二時鐘週期內,指令格式化單元132會為三個尚待處理之IT區塊指令152之每一個產生ITSTATE 202之數值,如表2所示;將計數欄306更新為零,此數值為先前之計數欄306數值(即三)減去在第二時鐘週期內被處理之指令數量(即三);以及將數值00010000填入ITSTATE 304,此數值為先前之ITSTATE 304之低位五個位元左移三位之數值,此左移數值即為第二時鐘週期內被處理之IT區塊指令152之 數量。接下來前進至步驟708。
在步驟708中,指令轉譯器136係接收來自格式化指令佇列134之IT指令152,並將其轉譯為微指令154。一般而言,指令轉譯器136轉譯IT指令152時,指令轉譯器136會將鄰近於IT指令152之程式指令152融合於IT指令152。不過,若是如前述因為例外或某些使融合無法進行之原因而導致IT指令被重新轉譯,指令轉譯器136會將IT指令轉譯為空操作微指令154。就一實施例而言,指令轉譯器會將IT指令152鄰近之程式指令152融合於IT指令152之任一側,端視格式化指令佇列134提供給指令轉譯器136之格式化指令列中,IT指令之方向而定。亦即,此鄰近之程式指令152可能是在IT指令前,或在IT指令後(即IT區塊之第一程式指令152)。舉例來說,假定指令轉譯器136能夠在一個時 鐘週期內轉譯三個格式化指令。若是IT指令152是指令轉譯器136在一給定時鐘週期內所接收之三個指令中的最後一個,指令轉譯器136就會將此IT指令136與其在前之指令融合;反之,若是IT指令152是指令轉譯器136在一給定時鐘週期內所接收之三個指令中的第一或第二個,指令轉譯器136就會將此IT指令152與其後之指令融合,也就是將IT區塊之第一指令融合於IT指令152。值得注意的是,在IT指令152與第一IT區塊指令融合之情況下,步驟708中IT指令152與其鄰近程式指令152之融合處理,將會與步驟712中第一IT區塊指令之轉譯處理同時進行,其中的IT指令152與第一IT區塊指令相融合。接下來前進之步驟712。
在步驟712中,指令轉譯器136由格式化指令佇列134接收格式化IT區塊指令406與相對應之ITSTATE 404,並將IT區塊指令406轉譯為微指令154。亦即,指令轉譯器136會將各個IT區塊指令406轉譯為一個或多個微指令154以實現IT區塊指令406。各個微指令154包含一條件欄位,供指令轉譯器136填入由格式化指令佇列134所接收之相對應之ITSTATE 404之全部條件(即位元[7:4])。隨後指令轉譯器136輸出各個微指令154並提供給暫存器別名表112。如前述,在一實施例中,一微指令佇列連接於指令轉譯器136與暫存器別名表112間,以緩衝其間之微指令154傳遞。此外,指令轉譯器136也提供相對應之ITSTATE 404之罩遮位元212(即位元[3:0]),供載入配置給微指令154之指令間接 暫存器項目502之罩遮欄位504。在另一實施例中,提供給各個微指令154之罩遮212係伴隨著微指令154,由微處理器100之管道向下傳輸至引退單元118,而非先儲存於指令間接暫存器122,然後在引退時提供給引退單元118。在另一實施例中,罩遮212係儲存於關聯於微指令154之重排緩衝器項目602,而非儲存於指令間接暫存器122,然後在引退時提供給引退單元118。值得注意的是,步驟712對於IT區塊指令406之轉譯處理,可以與步驟708對於IT指令之融合處理同時進行。接下來前進至步驟714。
在步驟714中,IT指令152與IT區塊指令152所轉譯融合之微指令154被提供至暫存器別名表112,然後到保留站114,接下來再逐步提供至執行單元116。執行單元116係透過確認應用程式狀態暫存器之條件旗標是否滿足微指令154之條件以條件執行微指令154,而微指令154之條件係來自ITSTATE 202之全部條件位元208。若是條件滿足,執行單元116就會執行微指令154;反之,執行單元116就會將微指令154視為一空操作微指令154。接下來前進至步驟716。
在步驟716中,引退單元118確認程式指令152所轉譯之微指令154已經成為重排緩衝器124內最舊的微指令154。相對應地,引退單元118透過檢視配置給微指令154之重排緩衝器項目602之例外旗標608,來確認此微指令154是否導致例外產生。若是,流程前進至步驟722;反之前進至步驟718。
在步驟718中,引退單元118引退微指令154與轉譯出此微指令154之程式指令152。此流程終止於此。
在步驟722中,引退單元118將微指令154之條件位元與來自配置給微指令154之指令間接暫存器項目502之罩遮位元504,填入關聯於此例外模式之儲存處理器狀態暫存器128之ITSTATE位元,進而提供予處理此例外狀況之例外處理程序。此流程終止於此。
第八圖係第一圖之微處理器100之操作一實施例之流程圖。此流程始於步驟802。
在步驟802中,指令轉譯單元104由指令快取102接收N個程式指令152之序列,其中N是一個大於零的整數。此N個程式指令152之序列係一IT指令與其後跟隨之一個具有N-1個非條件指令之IT區塊。這些非條件指令係由IT指令152暗示而變為條件指令。舉例來說,此N-1個非條件指令可以是16位元之非條件Thumb指令。接下來前進至步驟804。
在步驟804中,指令轉譯單元104將步驟802所接收之N個程式指令152之序列,轉譯為M個微指令154之序列,其中M是一個大於零的整數。轉譯此N個程式指令152之序列之步驟包含將IT指令152之一鄰近程式指令152融合於此IT指令152。接下來前進至步驟806。
在步驟806中,指令轉譯單元104接收一N-1個程式指令152之序列,此序列與步驟802所接收之N個程式指令152之序列不同,其中,此步驟之N係相同於步驟802中的整數N。步驟806之N-1個程式指令152之序 列不包含一IT指令152,且與步驟802中位於IT區塊之N-1個程式指令之序列相同。步驟806中每個程式指令所指定之操作係與其於步驟802中之相對應程式指令相同;不過,步驟806中明確指定給IT指令152之程式指令152之條件,但在步驟802中則是暗示由相關聯之程式指令152所指定。舉例來說,步驟806之程式指令152可以是32位元之條件ARM指令。接下來前進至步驟808。
在步驟808中,指令轉譯單元104係將步驟806所接收之N-1個程式指令152之序列轉譯為M個微指令154之序列,此序列係與指令轉譯單元104於步驟804所產生之M個微指令154之序列相同。透過步驟804對於IT指令152之融合處理,可以減少一個微指令154之產生,並帶來節省微處理器100之資源,如重排緩衝器124之項目、保留站114之項目、暫存器別名表112之項目、指令間接暫存器122之項目、執行單元116配置儲位、指令引退單元118儲位等等之優點。此流程終止於此。
第九圖係第一圖之微處理器100執行第八圖之操作之一實施例之方塊示意圖。第九圖包含由指令格式化單元132所接收之四個Thumb指令902之序列,以例示第八圖之步驟802所接收之N個程式指令152之序列,其中N為四。此四個指令902之序列包含一IT指令(標示為ITTE EQ)與其後跟隨由三個指令構成之IT區塊,此IT指令係指定IT區塊之大小為三且其條件分別為EQ、EQ與NE。此IT區塊包含一Thumb非條件加法指 令(ADD R1,R2,R3)、跟隨其後之Thumb非條件減法指令(SUB R4,R5,R6)與跟隨其後之Thumb非條件乘法指令(NUL R7,R8,R9),上述之加法指令係由IT指令賦予條件EQ,減法指令係由IT指令賦予條件EQ,乘法指令係由IT指令賦予條件NE。
指令格式化單元132係將此四個Thumb指令902之序列轉變為四個格式化指令904之序列,即一個被轉變為空操作指令(或單純以旗標標示為空操作指令)之IT指令152及其後方跟隨之三個IT區塊指令。如前述,尤其是第七圖之步驟702與704,此指令格式化單元132並為此三個IT區塊指令分別產生ITSTATE 202,即00000110,00001100,與00011000,提供給指令轉譯器136。
指令轉譯器136係將格式化指令904轉譯為三個微指令906之序列,此轉譯步驟包含將一鄰近程式指令152融合於此空操作指令。此轉譯產生之序列係例示第八圖之步驟804所產生之M個微指令154之序列,又如前述,尤其是第七圖之步驟708與712,其中M為三。此三個微指令906之序列包含一具有一條件EQ之條件加法微指令(ADDEQ R1,R2,R3),其後跟隨一具有一條件EQ之條件減法微指令(SUBEQ R4,R5,R6),其後再跟隨一具有一條件NE之條件乘法微指令(MULNE R7,R8,R9)。
第十圖係第一圖之微處理器執行第八圖之操作之另一實施例之方塊示意圖。第十圖包含由指令格式化單元 132所接收之三個ARM指令之序列,以例示第八圖之步驟806所接收之N-1個程式指令152之序列,其中N為四。此三個指令1002之序列包含具有條件EQ之一ARM條件加法指令(ADD EQ R1,R2,R3),其後跟隨之具有條件EQ之一ARM條件減法指令(SUB EQ R4,R5,R6),與其後跟隨之具有條件NE之一ARM條件乘法指令(MUL NE R7,R8,R9)。
指令格式化單元132係將此三個ARM指令1002之序列轉變為三個格式化指令1004之序列,且各個格式化指令之ITSTATE 202為00000000,以提供給指令轉譯器136。
指令轉譯器136將格式化指令1004轉譯為三個微指令1006之序列,以例示第八圖之步驟808所產生之M個微指令154之序列,其中M為三。此三個微指令1006之序列係相同於第九圖之三個微指令906之序列。
透過比較第九圖與第十圖可以發現,微處理器100對於IT指令之融合處理,可以減少一個微指令154之產生,這樣可節省微處理器100之資源,如重排緩衝器124之項目、保留站114之項目、暫存器別名表112之項目、指令間接暫存器122之項目、執行單元116配置儲位、指令引退單元118儲位等等。
前述各實施例係以ARM ISA IT指令為例進行說明,不過本發明並不限於此,本發明可用以對於其他指令集架構之IT指令進行融合處理。此外,前述各實施例之指令轉譯器每個時鐘週期所能轉譯之指令數量具有一給 定上限,不過,其他具有不同轉譯指令數量上限之指令轉譯器亦可適用於本發明。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。舉例來說,軟體可以執行本發明所述之裝置與方法的功能、製造、形塑、模擬、描述以及/或測試等。這可由一般的程式語言(如C、C++)、硬體描述語言(HDL)包含Verilog HDL,VHDL等,或是其他既有程式來達成。此軟體可以設置於任何已知的電腦可利用媒介,如磁帶、半導體、磁碟、光碟(如CD-ROM、DVD-ROM等)、網路接線、無線或是其他通訊媒介。此處描述之裝置與方法的實施例可被包含於一半導體智財核心,例如一微處理核心(如以硬體描述語言的實施方式)並且透過積體電路的製作轉換為硬體。此外,本文所描述之裝置與方法亦可包含硬體與軟體之結合。因此,本文所述的任何實施例,並非用以限定本發明之範圍。此外,本發明可應用於一般通用電腦之微處理器裝置。最後,所屬技術領域具有通常知識者利用本發明所揭露的觀念與實施例作為基礎,來設計並調整出不同的結構已達成相同的目的,亦不超出本發明之範圍。
100‧‧‧微處理器
102‧‧‧指令快取
104‧‧‧指令轉譯單元
112‧‧‧暫存器別名表(RAT)
114‧‧‧保留站
116‧‧‧執行單元
118‧‧‧引退單元
122‧‧‧指令間接暫存器(IIR)
124‧‧‧重排緩衝器(ROB)
126‧‧‧格式化單元狀態(FSTATE)儲存空間
128‧‧‧儲存處理器狀態暫存器(SPSR)
132‧‧‧指令格式化單元
134‧‧‧格式化指令佇列(FIQ)
136‧‧‧指令轉譯器
154‧‧‧微指令
152‧‧‧程式指令

Claims (28)

  1. 一種微處理器,包含:一指令轉譯單元,用以:由一IT指令抽取條件資訊;將該IT指令與一IT區塊指令融合;以及對於該IT區塊之每個指令:使用由該IT指令抽取之該條件資訊確認該IT區塊指令之一相對應條件;以及將該IT區塊指令轉譯為一微指令,該微指令包含該相對應條件;以及複數個執行單元,用以依據該相對應條件,條件地執行該微指令;其中,該IT指令包含一ARM架構IT指令。
  2. 如申請專利範圍第1項之微處理器,其中,該指令轉譯單元更用以:對於該IT區塊之每個指令,使用所抽取之該條件資訊確認一相對應狀態值,其中該狀態值包含該IT指令之低位8位元,該IT指令之低位5位元係左移N-1位元,N係指該IT區塊指令在該IT區塊內之位置。
  3. 如申請專利範圍第2項之微處理器,其中,該微處理器更用以:偵測該IT區塊之所轉譯出之微指令是否有導致一例外條件 之一微指令;以及將關聯於該例外之一ARM架構儲存程式狀態暫存器之低位八位元,填入轉譯出且導致該例外條件之該微指令之該相對應狀態值。
  4. 如申請專利範圍第2項之微處理器,其中,對於該IT區塊之每個指令:該IT區塊指令轉譯出之該微指令內之該相對應條件係包含該相對應狀態值之[7:4]位元。
  5. 如申請專利範圍第1項之微處理器,其中,該IT區塊指令與該IT指令所融合之該微指令僅執行該IT區塊指令指定之操作,而不為該IT指令執行任何操作。
  6. 如申請專利範圍第1項之微處理器,其中,該微處理器更用以發布由該指令轉譯單元產生之該些微指令以供非循序執行。
  7. 如申請專利範圍第1項之微處理器,其中,在至少一事例(instance)中,該指令轉譯單元係用以:在一第一時鐘週期內,由該IT指令抽取該條件資訊;對於一部分之該IT區塊指令,在該第一時鐘週期內,使用所抽取之該條件資訊確認該IT區塊指令之該相對應條件;以及對於剩餘之該IT區塊指令,在該微處理器接續該第一時鐘 週期之一個或多個時鐘週期內,使用所抽取之該條件資訊確認該IT區塊指令之該相對應條件。
  8. 一種利用一微處理器執行一If-Then(IT)指令與一相關IT區塊之方法,該方法包括:由該IT指令抽取條件資訊;對於該IT區塊之每個指令:使用由該IT指令抽取之該條件資訊確認該IT區塊指令之一相對應條件;將該IT區塊指令轉譯為一微指令,該微指令包含該相對應條件;以及依據該相對應條件,條件執行該微指令;以及其中,該IT指令包含一ARM架構IT指令,對於該IT區塊之該第一指令,將該IT區塊指令轉譯為一微指令之步驟包含將該IT指令與該IT區塊指令融合。
  9. 如申請專利範圍第8項之方法,該方法更包含:在將該IT區塊指令轉譯為該微指令之步驟前,對於該IT區塊之每個指令,使用所抽取之該條件資訊確認一相對應狀態值,其中該狀態值包含該IT指令之低位8位元,該IT指令之低位5位元係左移N-1位元,N係指該IT區塊指令在該IT區塊內之位置。
  10. 如申請專利範圍第9項之方法,該方法更包含:偵測該IT區塊轉譯出之微指令中是否有導致一例外條件之 一微指令,以因應條件執行該微指令之步驟;以及將關聯於該例外之一ARM架構儲存程式狀態暫存器之低位八位元,填入轉譯出導致該例外條件之該微指令之該指令之該相對應狀態值,以因應該偵測步驟。
  11. 如申請專利範圍第9項之方法,其中,對於該IT區塊之每個指令:該IT區塊指令轉譯出之該微指令內之該相對應條件係包含該相對應狀態值之[7:4]位元。
  12. 如申請專利範圍第8項之方法,其中,該IT區塊指令與該IT指令融合出之該微指令僅執行該IT區塊指令指定之操作,而不為該IT指令執行任何操作。
  13. 如申請專利範圍第8項之方法,更包含:其中,條件執行由該IT區塊之各個指令所轉譯產生之該微指令之步驟係包含發布該些微指令用以依據非循序方式來執行。
  14. 如申請專利範圍第8項之方法,其中,在至少一事例(instance)中,由該IT指令抽取該條件資訊之步驟係在一第一時鐘週期內執行,對於一部分之該IT區塊指令,使用所抽取之該條件資訊確認該IT區塊指令之該相對應條件之步驟,係在該第一時鐘週期內執行,對於剩餘之該IT區塊指令,使用所抽取之該條件資訊確認該IT區塊指令之該相對應條件, 是在該微處理器接續該第一時鐘週期之一個或多個時鐘週期內執行。
  15. 一種微處理器,包含:一指令轉譯單元,將一IF-Then(IT)指令與一鄰近程式指令融合,以將該IT指令與一相關聯IT區塊轉譯出M個微指令,其中,該IT區塊包含M個指令,其中,M係一大於零之整數;以及複數個執行單元,用以執行由該IT指令與該相關聯IT區塊轉譯出之該M個微指令;其中,該IT指令包含一ARM架構IT指令。
  16. 如申請專利範圍第15項之微處理器,其中,該M個微指令所執行之操作係相對應於該IT區塊之該M個指令所指定之操作,其中,該M個微指令內不包含一對應於該IT指令之微指令。
  17. 如申請專利範圍第15項之微處理器,其中該指令轉譯單元係用以:對於該IT區塊之每個指令,使用由該IT指令所抽取之資訊確認一相對應狀態值,其中該狀態值包含該IT指令之低位8位元,該IT指令之低位5位元係左移N-1位元,N係指該IT區塊指令在該IT區塊內之位置。
  18. 如申請專利範圍第17項之微處理器,其中,該微處理器更 用以:偵測該IT區塊之轉譯出之該M個微指令之其中之一是否導致一例外條件;以及將關聯於該例外之一ARM架構儲存程式狀態暫存器之低位八位元,填入轉譯出該M個微指令中導致該例外條件之該微指令之該相對應狀態值。
  19. 如申請專利範圍第17項之微處理器,其中,該指令轉譯單元更用以:對於該IT區塊之每個指令,將該IT區塊指令轉譯出該M個微指令之至少其中之一,並且轉譯出之該微指令具有一條件係包含該相對應狀態值之[7:4]位元。
  20. 一種利用一微處理器執行之方法,該方法包括:利用該微處理器之一指令轉譯單元,將一IF-Then(IT)指令與一鄰近程式指令融合,以將該IT指令與一相關聯IT區塊轉譯出M個微指令,其中,該IT區塊包含M個指令,其中,M係一大於零之整數;以及利用該微處理器之複數個執行單元,執行由該IT指令與該相關聯IT區塊轉譯出之該M個微指令;其中,該IT指令包含一ARM架構IT指令。
  21. 如申請專利範圍第20項之方法,其中,該M個微指令所執行之操作係相對應於該IT區塊之該M個指令所指定之操作,其中,該M個微指令內不包含一對應於該IT指令之微 指令。
  22. 如申請專利範圍第20項之方法,更包含:對於該IT區塊之每個指令,使用由該IT指令所抽取之資訊確認一相對應狀態值,其中該狀態值包含該IT指令之低位8位元,該IT指令之低位5位元係左移N-1位元,N係指該IT區塊指令在該IT區塊內之位置。
  23. 如申請專利範圍第22項之方法,更包含:偵測該IT區塊轉譯出之該M個微指令之其中之一是否導致一例外條件;以及將關聯於該例外之一ARM架構儲存程式狀態暫存器之低位八位元,填入轉譯出該M個微指令中導致該例外條件之該微指令之該相對應狀態值。
  24. 如申請專利範圍第22項之方法,更包含:對於該IT區塊之每個指令,將該IT區塊指令轉譯出該M個微指令之至少其中之一,並且轉譯出之該微指令具有一條件係包含該相對應狀態值之[7:4]位元。
  25. 一種微處理器,包含:一指令轉譯單元,用以:將N個指令之指令序列轉譯為M個微指令之第一指令序列,其中,該N個指令之指令序列係一IF-Then(IT)指令與跟隨該IT指令之一相關聯之IT指令區塊,其中 各該IT區塊指令係一非條件指令,該非條件指令暗示會透過IT指令所指定之條件變為條件指令,其中,N係一大於一之整數,M係一大於零之整數;以及將N-1個指令之指令序列轉譯為M個微指令之第二指令序列,其中,該N-1個指令之指令序列係對應於該IT區塊指令,其中該N-1個指令之每一個係指定與其相對應之IT區塊指令相同之操作,但明確指定該相對應之IT指令區塊所暗示之該指定條件,其中,該第二指令序列與該第一指令序列相同;以及複數個執行單元,用以執行由該指令轉譯單元所產生之該些微指令。
  26. 如申請專利範圍第25項之微處理器,其中,該指令轉譯單元係用以將該IT指令與一鄰近指令融合。
  27. 一種利用一微處理器執行之方法,包含:利用一指令轉譯單元,將N個指令之指令序列轉譯為M個微指令之第一指令序列,其中,該N個指令之指令序列係一IF-Then(IT)指令與跟隨該IT指令之一相關聯之IT指令區塊,其中各該IT區塊指令係一非條件指令,該非條件指令暗示會透過IT指令所指定之條件變為條件指令,其中,N係一大於一之整數,M係一大於零之整數;利用該指令轉譯單元,將N-1個指令之指令序列轉譯為M個微指令之第二指令序列,其中,該N-1個指令之指令序列係對應於該IT區塊指令,其中該N-1個指令之每一 個係指定與其相對應之IT區塊指令相同之操作,但明確指定該相對應之IT指令區塊所暗示之該指定條件,其中,該第二指令序列與該第一指令序列相同;以及利用複數個執行單元,用以執行由該指令轉譯單元所產生之該些微指令。
  28. 如申請專利範圍第27項之方法,其中,將該N個指令之指令序列轉譯為該M個微指令之第一指令序列之步驟包含將該IT指令與一鄰近指令融合。
TW103106474A 2013-05-21 2014-02-26 融合if-then指令之微處理器及其方法 TWI514272B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361825699P 2013-05-21 2013-05-21
US14/066,520 US9792121B2 (en) 2013-05-21 2013-10-29 Microprocessor that fuses if-then instructions

Publications (2)

Publication Number Publication Date
TW201445441A TW201445441A (zh) 2014-12-01
TWI514272B true TWI514272B (zh) 2015-12-21

Family

ID=49882829

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103106474A TWI514272B (zh) 2013-05-21 2014-02-26 融合if-then指令之微處理器及其方法

Country Status (4)

Country Link
US (2) US9792121B2 (zh)
EP (1) EP2806354B1 (zh)
CN (1) CN104182204B (zh)
TW (1) TWI514272B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106599989B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 神经网络单元和神经处理单元阵列
US10324724B2 (en) * 2015-12-16 2019-06-18 Intel Corporation Hardware apparatuses and methods to fuse instructions
GB2548600B (en) 2016-03-23 2018-05-09 Advanced Risc Mach Ltd Vector predication instruction
US10831496B2 (en) 2019-02-28 2020-11-10 International Business Machines Corporation Method to execute successive dependent instructions from an instruction stream in a processor
US11748104B2 (en) 2020-07-29 2023-09-05 International Business Machines Corporation Microprocessor that fuses load and compare instructions
US11249757B1 (en) 2020-08-14 2022-02-15 International Business Machines Corporation Handling and fusing load instructions in a processor
CN113254083B (zh) * 2021-06-28 2021-11-02 北京智芯微电子科技有限公司 指令处理方法、指令处理系统及处理器、芯片
US20230315454A1 (en) * 2022-03-30 2023-10-05 Advanced Micro Devices, Inc. Fusing no-op (nop) instructions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2356805A1 (en) * 2001-09-07 2003-03-07 International Business Machines Corporation Converting short branches to predicated instructions
TW200401187A (en) * 2002-07-12 2004-01-16 Nec Corp Fault-tolerant computer system, re-synchronization method thereof and re-synchronization program thereof
US20060190671A1 (en) * 2005-02-23 2006-08-24 Jeddeloh Joseph M Memory device and method having multiple internal data buses and memory bank interleaving

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524222A (en) 1992-03-27 1996-06-04 Cyrix Corporation Microsequencer allowing a sequence of conditional jumps without requiring the insertion of NOP or other instructions
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
EP0942357A3 (en) 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Data processor compatible with a plurality of instruction formats
US6456891B1 (en) 1999-10-27 2002-09-24 Advanced Micro Devices, Inc. System and method for transparent handling of extended register states
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
US7185180B2 (en) 2002-04-02 2007-02-27 Ip-First, Llc Apparatus and method for selective control of condition code write back
US7155598B2 (en) 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
TW569136B (en) * 2002-05-09 2004-01-01 Ip First Llc Apparatus and method for conditional instruction execution
GB2402510A (en) * 2003-06-05 2004-12-08 Advanced Risc Mach Ltd Predication instruction within a data processing system
US8046400B2 (en) 2008-04-10 2011-10-25 Via Technologies, Inc. Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor
US9690591B2 (en) 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter
US20100262813A1 (en) 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates
KR101642556B1 (ko) * 2012-09-21 2016-07-25 인텔 코포레이션 이진 번역을 수행하기 위한 방법 및 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2356805A1 (en) * 2001-09-07 2003-03-07 International Business Machines Corporation Converting short branches to predicated instructions
TW200401187A (en) * 2002-07-12 2004-01-16 Nec Corp Fault-tolerant computer system, re-synchronization method thereof and re-synchronization program thereof
US20060190671A1 (en) * 2005-02-23 2006-08-24 Jeddeloh Joseph M Memory device and method having multiple internal data buses and memory bank interleaving

Also Published As

Publication number Publication date
CN104182204B (zh) 2017-06-06
EP2806354B1 (en) 2019-06-12
US10394562B2 (en) 2019-08-27
US20140351561A1 (en) 2014-11-27
TW201445441A (zh) 2014-12-01
US9792121B2 (en) 2017-10-17
EP2806354A1 (en) 2014-11-26
CN104182204A (zh) 2014-12-03
US20180032341A1 (en) 2018-02-01

Similar Documents

Publication Publication Date Title
TWI514272B (zh) 融合if-then指令之微處理器及其方法
US20210026634A1 (en) Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register
TWI397857B (zh) 微處理器、用以處理微處理器之儲存巨指令之方法及用於計算裝置之電腦程式產品
Lee Precision architecture
TWI423127B (zh) 指令處理方法以及其所適用之超純量管線微處理器
CN104252586B (zh) 促进在处理环境中的处理的方法和计算机系统
CN104252360B (zh) 在流水线化处理中使用的预测器数据结构
US7458069B2 (en) System and method for fusing instructions
US9424037B2 (en) Instructions and functions for evaluating program defined conditions
CN104335168B (zh) 分支预测预加载
US6351804B1 (en) Control bit vector storage for a microprocessor
US9262161B2 (en) Tracking multiple conditions in a general purpose register and instruction therefor
CN104252336B (zh) 基于解码时间指令优化来形成指令组的方法和系统
JP2017539008A (ja) データ投機実行のためのシステム、装置および方法
JP2018500662A (ja) データ投機実行のためのシステム、装置および方法
JP2022546615A (ja) 圧縮支援命令
US9588769B2 (en) Processor that leapfrogs MOV instructions
US9959122B2 (en) Single cycle instruction pipeline scheduling
TWI502498B (zh) 微處理器、積體電路、計算機程式產品與提供微碼指令儲存空間的方法
WO2000070446A2 (en) Method and apparatus for loose register encoding within a pipelined processor
GB2620381A (en) Vector extract and merge instruction
Case DEC's Alpha Architecture Premiers
Moreno et al. ForestaPC (Scalable-VLIW) User Instruction Set Architecture
Lee H sion Architecturc to serve as
Wu Architecture of out of order TURBO51 embedded microprocessor