TWI666587B - 處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法 - Google Patents

處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法 Download PDF

Info

Publication number
TWI666587B
TWI666587B TW107107036A TW107107036A TWI666587B TW I666587 B TWI666587 B TW I666587B TW 107107036 A TW107107036 A TW 107107036A TW 107107036 A TW107107036 A TW 107107036A TW I666587 B TWI666587 B TW I666587B
Authority
TW
Taiwan
Prior art keywords
instruction
merge
instructions
processor
architecture
Prior art date
Application number
TW107107036A
Other languages
English (en)
Other versions
TW201905681A (zh
Inventor
費曉龍
楊夢晨
Original Assignee
中國商上海兆芯集成電路有限公司
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 中國商上海兆芯集成電路有限公司 filed Critical 中國商上海兆芯集成電路有限公司
Publication of TW201905681A publication Critical patent/TW201905681A/zh
Application granted granted Critical
Publication of TWI666587B publication Critical patent/TWI666587B/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/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/3856Reordering of instructions, e.g. using queues or age tags

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)

Abstract

一種處理器,包括具有多個物理暫存器的物理暫存器檔案、映射邏輯和合併系統。對於在接收到的程式指令中特定的每個架構暫存器,映射邏輯映射最多的第一最大數量的物理暫存器,並將對應的映射儲存在重命名表中。合併系統為需要合併的每個架構暫存器生成合併指令,將每個生成的合併指令插入到程式指令中,以提供經過修改的指令組,並根據採取規則在連續的發佈週期中發佈修改後的指令組。在一個實施例中,第一最大數量可以是二。

Description

處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法
本發明一般涉及暫存器重命名以解決處理器中儲存的結果尺寸問題,更具體地涉及一種插入合併指令以合併部分寫入結果的系統和方法。
處理器包括一組暫存器以儲存寫入操作的結果。寫操作由處理器的標準指令集架構(ISA)的子集執行,例如英特爾®的X86架構等。在包括X86架構的許多架構中,執行寫入操作的指令可以指代用於儲存結果的一組預定義架構暫存器中的至少一個。近期的處理器配置實現物理暫存器檔案(PRF)重命名風格,使處理器設計更簡潔,並實現更方便的設計擴展。具有PRF重命名的處理器包含用於儲存操作結果的物理暫存器檔案(PRF)和用於將架構暫存器映射到物理暫存器的重命名結構。PRF是一組物理暫存器,每個物理暫存器使用一組索引或指標等中的唯一一個索引或指標來標識。重命名結構將由指令引用的架構暫存器映射到至少一個對應的物理暫存器的索引。
在執行軟體程式或應用程式期間,當遇到引用架構暫存器以儲存指令結果的指令時,處理器從物理暫存器索引的“空閒列表(freelist)”中分配可用的物理暫存器,附加或否則分配所選索引給指令,並更新重命名結構的推測部分以將架構暫存器映射到所選擇的物理暫存器。當指令執行時,索引用於訪問物理暫存器以儲存結果。當指令退出時,索引可以被移動到重命名結構的退出部分(或者被移動到不同的重命名結構),以將物理暫存器映射到特定的架構暫存器。物理到架構暫存器映射可以由隨後的讀取操作使用,直到被重寫或重新定義。不需要單獨的一組物理架構暫存器;而是將架構識別字等簡單地映射到物理暫存器索引。PRF重命名風格更有效,因為索引只是簡單地移動或重新映射,而不必在暫存器之間移動值。
當架構使用允許部分寫入操作僅修改整個暫存器的一部分的複雜運算元尺寸時,出現尺寸問題。例如,X86架構使用這種複雜的運算元尺寸,儘管本發明不限於X86架構。作為複雜運算元尺寸的示例,可以執行寫入指令來修改64位元暫存器的8位、16位、32位或64位,其中每個較大的尺寸包含較小的寫入尺寸(因為被引用到暫存器的公共端)。即使引用同一架構暫存器,每個指令也可以被分配一個單獨的物理暫存器。與同一架構暫存器的先前寫操作相同尺寸或比其尺寸大的後續寫操作在系統中得到適當處理,無需進一步修改。然而,對相同的架構暫存器的後續寫入操作小於之前的寫入操作會造成隨後的引用該相同的架構暫存器的較大讀取操作的問題, 因為沒有單個物理暫存器保存該架構暫存器的完整結果。
根據一個實施例的處理器包括具有多個物理暫存器的物理暫存器檔案、映射邏輯和合併系統。對於接收到的程式指令中特定的每個架構暫存器,映射邏輯映射最多第一最大數量的物理暫存器,並將對應的映射儲存在重命名表中。合併系統為需要合併的每個架構暫存器生成合併指令,將每個合併指令插入到程式指令中,以提供經過修改的指令組,並根據採取規則在連續的發佈週期中發佈修改後的指令組。在一個實施例中,第一最大數量可以是二。
合併系統可以包括合併檢測器、合併指令生成器、合併採取邏輯和指令發佈邏輯。合併檢測器檢測讀取指令是否讀取映射到多個物理暫存器的架構暫存器的,檢測寫指令是否會導致映射超過所述第一最大數,並且生成標識任何架構暫存器的合併的合併識別字。合併指令生成器根據合併識別字生成要合併的每個架構暫存器的合併指令。合併採取邏輯基於所述採取規則確定哪一個合併指令應該在所述多個程式指令中的任何一個之前被插入,並產生指示每個時脈週期發佈哪些指令的終止指示。指令發佈邏輯提供基於終止指示的發佈指令控制。
指令發佈邏輯可以包括指令重排序模組,其接收終止指示、程式指令以及由合併指令生成器產生的任何合併指令,並且提供發佈指令控制以控制在每個時脈週期內發佈的指令。
指令發佈邏輯可以包括指令移位元器和指令重排序模組。指令移位元器根據終止指令移動程式指令。指令重排序模組接收程式指令和由合併指令生成器生成的任何合併指令,並提供發佈指令控制以控制在每個時脈週期內發佈的指令。
根據一個實施例,合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法包括:將重命名表中的多個程式指令中特定的多個架構暫存器中的每一個映射到最多第一最大數量的多個物理暫存器,在執行至少一個程式指令之前,檢測任何架構暫存器何時需要被合併,為需要合併的每個架構暫存器生成合併指令,將每個合併指令插入到程式指令中以提供修改的指令組,並且基於建立相應的定時和性能折衷的採取規則在連續的時脈週期內發佈經修改的指令組。第一最大數量可能是二。
該方法可以包括檢測讀取指令是否讀取映射到多個物理暫存器的架構暫存器,以及生成相應的讀取合併指令。該方法可以包括檢測寫入指令是否使得映射的超過第一最大數量,並且生成相應的寫入合併指令。
該方法可以包括基於檢測來生成標識需要被合併的任何架構暫存器的合併識別字,並且在生成和發佈期間使用合併識別字。
該方法可以包括基於採取規則確定任何生成的合併指令中的哪一個應當在任何程式指令之前被插入,產生指示每個時脈週期發佈哪些指令的終止指示,以及基於終止指示提 供發佈指令控制。
該方法可以包括從多個採用規則中選擇一個採用規則,其中每個採用規則在時序和性能之間提供不同的折衷。
100‧‧‧處理器
102‧‧‧指令快取記憶體
104‧‧‧指令轉換器
106‧‧‧暫存器別名表
108‧‧‧保留站
110‧‧‧重排序緩衝器
112‧‧‧執行單元
114‧‧‧物理暫存器檔案
116‧‧‧重命名表
118‧‧‧映射邏輯
120‧‧‧空閒列表
122‧‧‧合併系統
202‧‧‧第一條目
204‧‧‧第二條目
206‧‧‧第三條目
208‧‧‧第四條目
502‧‧‧合併檢測器
508‧‧‧指令重排序模組
504‧‧‧合併採取模組
506‧‧‧合併指令生成器
MID‧‧‧合併識別字
KI‧‧‧終止指示
OI‧‧‧原始指令
MI‧‧‧合併指令
608‧‧‧指令重排序模組
610‧‧‧指令移位元器
702‧‧‧原始指令組
704‧‧‧合併檢查
706‧‧‧指令組
710‧‧‧單獨發佈合併
712‧‧‧發佈直到合併
714‧‧‧發佈直到第二合併
M1~M3‧‧‧合併指令
I1-I4‧‧‧指令
T1‧‧‧第一週期
T2‧‧‧第二週期
T3‧‧‧第三週期
T4‧‧‧第四週期
關於以下描述和附圖,將更好地理解本發明的益處、特徵和優點,其中:第1圖是根據本發明的一個實施例所述的超標量流水線處理器的方塊圖;第2圖是在執行指令μop1和μop2之後並且在執行μop3之前根據本發明的一個實施例的第1圖的重命名表的至少一部分的圖;第3圖是在執行指令μop1,μop2,μopM和μop 3之後,根據本發明的一個實施例的第1圖的重命名表的至少一部分的圖;第4圖是根據本發明的一個實施例的第1圖的重命名表的至少一部分的圖;第5圖是示出根據本發明的一個實施例實現第1圖的合併系統的方塊圖;第6圖是示出根據本發明的另一個實施例實現的第1圖的合併系統的方塊圖;以及第7圖是示出根據本發明的實施例的示例性採取規則的示意圖。
本發明人已經認識到由使用複雜運算元尺寸的指 令集架構引起的PRF重命名風格的尺寸問題。因此,他們開發了一種插入合併指令以合併部分寫入結果以將部分寫入結果保持在預定最大值並允許後續讀取操作的系統和方法。
第1圖是根據本發明的一個實施例實現的超標量流水線處理器100的簡化方塊圖。本文所用的術語“處理器”是指包括微處理器、中央處理單元(CPU)、處理核心、微控制器等的任何類型的處理單元。本文所用的術語“處理器”還包括任何類型的處理器配置,例如集成在晶片或積體電路(IC)上的一個或多個處理單元,包括集成在晶片上系統(SOC)等中的處理器配置。處理器100包括快取記憶體諸如X86指令集架構等的指令集架構(ISA)的巨集指令的指令快取記憶體102。考慮了允許複雜運算元尺寸的額外的或替代的指令集架構。處理器100包括指令轉換器104,其接收巨集指令並將巨集指令轉換成微指令。微指令通常可以被稱為微指令,但是在本文中更一般地簡稱為“指令”,或者甚至更簡單地稱為“μops”。然後將微指令以程式順序提供給暫存器別名表(RAT)106,暫存器別名表106產生微指令依賴性並將程式順序的微指令發佈到保留站(RS)108和重排序緩衝器(ROB,reorder buffer)110。重排序緩衝器110儲存從暫存器別名表106發佈的每條指令的條目,並確保已發佈的指令按順序退出。
保留站108將指令調度到多個執行單元112中的適當的一個,保留站108也可稱為分派器。在一個實施例中,處理器100是無序(OOO,out of order)處理器,其中當保留站108準備不是嚴格按照程式循序執行指令時,可以將指令分派 給執行單元112。當其所有依賴性被解決並且適當的執行單元112可用於執行指令時,指令被視為準備執行。暫存器別名表106確定並將相關性資訊轉發給保留站108用於所發佈的指令,並且保留站108使用依賴性資訊來確定何時分派用於執行的指令。雖然沒有具體示出,但是執行單元112可以包括一個或多個整數執行單元(例如整數算術/邏輯單元(ALU)等)、一個或多個浮點執行單元(諸如包括單指令多資料(SIMD)執行單元,例如MMX和SSE單元等)、記憶體順序緩衝器(MOB)等。寫入指令的任何結果透過回寫(WB)路徑被寫入一個物理暫存器檔案(PRF)114內的物理暫存器。與寫指令對應的重排序緩衝器110的條目將索引儲存到用於寫入結果的物理暫存器。
暫存器別名表106包括重命名表116、映射邏輯118、空閒列表120和合併系統122。重命名表116將架構暫存器交叉引用或映射到物理暫存器檔案114的物理暫存器。空閒列表120將索引清單儲存到未分配的相應物理暫存器。當寫入操作引用用於儲存結果的架構暫存器時,映射邏輯118參考重命名表116來確定架構暫存器是否已被映射。如果還沒有映射,則映射邏輯118參考空閒列表120並選擇和分配物理暫存器。然後,映射邏輯118將分配的物理暫存器的索引儲存到與寫入指令中引用的架構暫存器對應的重命名表116的條目中。以這種方式,物理暫存器最初映射到架構暫存器和寫指令。如本文進一步描述的,響應於一個或多個部分寫指令,每個架構暫存器可被映射到多個物理暫存器,其中架構暫存器的完整內容分佈在多個物 理暫存器中,因此不儲存在某一個物理暫存器。重命名表116可以被配置為映射到達預定數量的“N”個物理暫存器,其中執行合併操作以將總映射數保持在N或N以下,如本文進一步描述的。
合併系統122分析從指令轉換器104提供的μops的源和/或目的地,以確定儲存在映射到所指示的架構暫存器的多個物理暫存器中的部分結果是否需要被合併到單個物理暫存器。對於需要合併的每個架構暫存器,合併系統122生成合併指令並將合併指令插入到指令流中。合併系統122確定每個合併指令將要被插入的位置,並根據這裡進一步描述的適用的採取規則進一步確定每個週期中要向保留站108發佈的μops。如由合併系統122建立的排序和編號所指示的,如本文進一步描述的,暫存器別名表106然後向保留站108發佈μops。
用於處理器100的ISA(例如所示配置中的X86)使用複雜的運算元尺寸,允許對每個架構暫存器進行部分寫入。X86架構包括可以使用多種尺寸訪問的多個架構暫存器。64位元版本包括暫存器符號RAX、RBX、RCX、RDX等(64位使用預先提供的'R'符號),其中使用任何這些64位元符號的寫操作是寫入整個暫存器。這些暫存器分別包括32位元符號EAX、EBX、ECX、EDX等(32位使用預先提供的'E'符號)以及16位元符號AX、BX、CX、DX等(16位僅使用暫存器名稱而沒有預先提供的字母)。也可以定義8位元符號,但是每個符號通常都是16位元版本的最高有效位元組(MSB)或最低有效位元組(LSB),不再進一步描述。重命名表116中的架構識別字僅需 要包括用於任何給定暫存器或其部分的單個引用。
當一系列μop指令使用複雜運算元尺寸時,其中多個物理暫存器儲存相同架構暫存器的部分,當嘗試讀取架構暫存器時,挑戰出現。例如,考慮以下指令模式:μop 1)MOV RAX,RBX;μop 2)MOV EAX,ECX;μop 3)MOV RSP,RAX;為第一MOV指令(μop 1)分配第一物理暫存器,並將分配的物理暫存器映射到RAX架構暫存器。第一MOV指令μop 1指示處理器100將64位元暫存器RBX的內容移動到64位元暫存器RAX中。在操作中,分配給RBX的物理暫存器的內容被移動到為RAX分配的物理暫存器。為第二MOV指令(μop 2)分配第二物理暫存器並將第二物理暫存器映射到EAX架構暫存器。第二MOV指令μop 2指示處理器100將32位元暫存器ECX的內容移動到32位元暫存器EAX中。在操作中,根據映射將內容從一個物理暫存器移動到另一個物理暫存器。但是,應注意,架構暫存器EAX是RAX架構暫存器的最低有效部分(下半部分),因此RAX暫存器的內容有效地被μop 2修改。因此,第一和第二物理暫存器都不保存RAX架構暫存器的完整內容;相反,在每個中儲存一部分。第三物理暫存器被分配給第三MOV指令(μop 3),並且第三物理暫存器被映射到RSP架構暫存器(例如,堆疊指標暫存器)。第三MOV指令旨在將RAX的內容移動到RSP中。然而,RAX的內容分佈在兩個不同的物理暫存器之間,因此μop 3無法從單個物理暫存器獲取RAX的完整內容。
第2圖是在執行上面列出的指令μop 1和μop 2之後但是執行μop 3之前,根據本發明的一個實施例的重命名表116的至少一部分的圖。在重命名表116的第一最左邊的行中,列出了用於64位版本的架構(ARCH)暫存器符號,如RAX、RBX、RCX、RSP等所示。儘管僅示出了64位版本,但是應當理解,ARCH符號還可以包括32位元版本、16位版本、8位版本等。之後多行的行表示用於映射到至多列出的每個架構暫存器的物理暫存器的預定最大數量N的推測資訊。雖然在各種實施例中可以將附加的物理暫存器映射到每個架構暫存器,但是合併3個或更多個物理暫存器計算上變得複雜(例如,N為3或更多)。在一個實施例中,對第三物理暫存器的部分寫入被合併,使得在重命名表116中一次只允許2個映射(例如,N=2)。推測資訊包括第一映射物理暫存器的有效值(VALID 1)、物理索引符號(P_IDX 1)和尺寸值(SIZE 1),以及第二映射物理暫存器的有效值(VALID 2)、物理索引符號(P_IDX 2)和尺寸值(SIZE 2)。如果映射有效,則有效值為“1”,否則為“0”。物理暫存器索引符號的格式為PRX,其中“X”是從1到可用物理暫存器總數的數位。尺寸值表示為暫存器儲存的有效值的位元數。任何條目的短劃線符號“-”表示“不用考慮”或沒有條目。
如圖所示,第一條目202將由索引PR6標識的物理暫存器的64位元映射到RBX,並且第二條目204將由索引PR7標識的物理暫存器的32位元映射到RCX(或ECX)。假設先前執行的指令將相應的結果儲存到用於架構暫存器RBX和RCX的物理暫存器PR6和PR7中。在執行μop 1之後,第三條目206 將由索引PR1標識的第一物理暫存器的64位元映射到暫存器RAX,其中PR6的內容被移動到PR1。在執行μop 2之後,第三條目206還將由索引PR2標識的第二物理暫存器的32位元映射到RAX,其中PR7的內容移動到PR2。因此,應當理解,64位架構暫存器RAX的值包含在兩個物理暫存器PR1和PR2中,其中較低或最低有效32位元儲存在PR2中,並且下一個更高有效32位元儲存在PR1。第三MOV指令旨在將RAX的內容移動到RSP中。然而,RAX的內容分佈在兩個不同的物理暫存器PR1和PR2之間,使得μop 3無法從單個物理暫存器獲取RAX的完整內容。
合併系統122檢查包括μop 1-μop 3的指令流,並檢測RAX的內容被儲存在兩個不同物理暫存器中的尺寸問題。合併系統122生成將PR2的內容合併到PR1中的合併(MRG)指令,使得PR1儲存RAX的全部內容。插入MRG指令以修改原始指令模式,如下所示:μop 1)MOV RAX,RBX μop 2)MOV EAX,ECX μop M)MRG PR1,PR2,PR1 μop 3)MOV RSP,RAX
其中,在μop3之前插入μopM,並進行操作以將PR2的內容組合到PR1中。合併(MRG)指令的格式μopM包括3個參數或運算元,包括2個來源暫存器和1個目標暫存器。前兩個運算元PR1和PR2是來源運算元,其中第一PR1標識較大結果的來源,第二PR2標識較小結果的來源。第三運算元PR1標識合 併操作的目的地,其中儲存在PR2中的較小結果與儲存在PR1中的較大結果合併,並且合併結果被儲存回PR1作為目的地暫存器。在μop M執行之後,μop 3可以被執行而不改變,因為物理暫存器PR1儲存架構暫存器RAX的完整內容。
第3圖是在執行指令μop 1、μop 2、μop M和μop 3之後根據本發明的一個實施例的重命名表116的至少一部分的圖。在執行μop M之後,修改重命名表的條目206,其中VALID 2被改變為“0”,表示RAX僅被映射到一個物理暫存器PR1。在執行μop 3時,另一個物理暫存器PR3被分配給架構暫存器RSP,並且PR1的內容被複製到PR3,如第四條目208所示,其中第四條目208的值VALID 1、P_IDX 1和SIZE 1為1、PR3和64。此外,VALID 2值可以被設置為“0”,使RSP很清楚得被映射到僅一個物理暫存器PR3。雖然指令μop 1、μop 2和μop 3是“移動”指令,但是它們可以被實現為“複製”操作,其中RBX、RCX和RAX的內容在執行四個指令之後保持有效,如重命名表116所示。
上述示例示出了在嘗試讀取分佈在多個(例如,2個)物理暫存器之間的架構暫存器的讀取指令之前插入合併指令。合併指令將多個物理暫存器的內容合併到一個暫存器中,以使讀取指令成功操作。考慮μop 3是另一個部分寫操作的情況,例如MOV AX,DX,其中第二部分寫入變成架構暫存器RAX的低16位。在一個實施例(未示出)中,重命名表116可以包括用於儲存RAX的第三部分寫入結果的第三組有效索引和尺寸條目。第三物理暫存器PR3可用於將第二部分寫入的低16位 元結果儲存到RAX。將3個或更多的物理暫存器映射到一個架構暫存器可能在某些配置中計算複雜。如第4圖所示,對於其中僅包括每個架構暫存器的2個映射(例如,N=2)的示出的實施例,以先前描述的相同方式在第二部分寫指令之前插入合併指令μop M並以與第1圖中的條目206所示相同的方式組合暫存器PR1和PR2的內容到PR1。然後,對於條目206,VALID 2值被改變為“1”,P_IDX 2值被改變為PR3,並且SIZE 2被改變為16,使得RAX仍被映射到僅2個物理暫存器,PR1和PR3。
總而言之,合併系統122產生合併指令以當指令嘗試從映射到多個物理暫存器的架構暫存器讀取時執行讀合併,或者當指令嘗試執行額外的部分寫入時執行寫合併到已經映射到最大數量的物理暫存器的架構暫存器。寫合併用於防止映射超過同一架構暫存器(及其部分)的物理暫存器的最大數量,並且讀合併用於將多個物理暫存器的內容合併到一個物理暫存器,以使隨後的讀取指令進行適當的操作。
第4圖是根據本發明的一個實施例的第1圖的重命名表的至少一部分的圖。其中僅包括每個架構暫存器的2個映射,並且其中與上述相同的方式將合併指令μopM在第二部分寫指令之前插入以便以與第3圖中的條目206所示相同的方式將暫存器PR1和PR2的內容組合到PR1。
第5圖是示出根據本發明的一個實施例實現的合併系統122的方塊圖。指令轉換器104向暫存器別名表106提供的原始指令(OI)被提供給合併檢測器502和指令重排序模組508。在一個實施例中,指令轉換器104每時脈週期一次提供至 多達四個μops。合併檢測器502分析與每個接收到的μop的來源和目的地相對應的架構暫存器,並且確定是否有任何架構暫存器需要合併。在一個實施例中,每個μops可以具有至多達3個來源和1個目的地,使得每個週期可以存在至多達16個合併,對於四個接收的μops中的每一個可以有4個合併。合併檢測器502形成合併識別字(MID),並提供MID到合併採取模組504和合併指令生成器506。MID標識需要被合併的至多達4個接收的μops的每個架構暫存器。
合併指令生成器506接收MID,讀取重命名表116中的資訊以標識需要合併的架構暫存器,並為每個要合併的架構暫存器生成相應的合併指令。如前所述,合併指令MRG標識映射到架構暫存器的對應物理暫存器,並將該資訊合併到儲存較大值的物理暫存器,例如,μopM將PR1和PR2合併到映射到架構暫存器EAX的PR1中。合併指令生成器506將一個或多個合併指令(MI)輸出到指令重排序模組508。
合併採取模組504接收MID並確定在從指令轉換器104接收到的每個原始μop之前應該插入的合併μops的數量。合併採取模組504然後根據多個採用規則之一分割原始μops並且向指令重排序模組508輸出終止指示(KI),以便在每個時脈週期中標識應從暫存器別名表106向保留站108發佈哪些原始指令。術語“終止”表示相對於當前時脈週期的終止,以標識被推入下一個時脈週期的下一個指令。在一個實施例中,暫存器別名表106一次向包括合併μops的保留站108發佈至多達4μops。如本文進一步描述的,可以定義多個採用規則,以提供定時和 性能之間的不同折衷。合併採取模組504可以在不同的採取規則之間切換以確保適當的定時和/或實現一定程度的性能。
指令重排序模組508與終止指示KI一起接收原始指令OI和合併指令MI,並提供確定每個時脈週期發佈原始和合併μops中的哪一個的發佈指令控制。
第6圖是示出根據本發明的另一實施例實現的合併系統122的方塊圖。指令轉換器104向暫存器別名表106提供的原始指令(OI)被提供給合併檢測器502和指令重排序模組608,指令重排序模組608以與指令重排序模組508類似的方式操作。合併檢測器502以基本上相同的方式將MID提供給合併採取模組504,其以類似的方式開發終止指示KI。然而,終止指示KI被提供給也接收原始指令OI的指令移位元器610。指令移位元器610根據終止指示KI移位元原始μops,以確定每個時脈週期哪個μop被移位到時隙0。合併指令生成器506透過接收MID並將合併指令MI提供給指令重排序模組608而以類似的方式操作。指令移位元器610與合併指令生成器506和指令重排序模組608配合,以提供確定每個時脈週期發佈原始和合併的μops中的哪一個的指令控制。
第7圖是示出根據本發明的實施例的示例性採取規則的示意圖。一組4μop指令702,如I1、I2、3和I4所示,按照程式順序由指令轉換器104提供給暫存器別名表106。合併系統122對指令I1-I4執行合併檢查704,並產生合併指令M2和M3。合併系統122將合併指令M2和M3插入到原始指令組702中以提供經修改的指令組706。在這種情況下,對應於指令I2的 合併指令M2被插入在指令I2之前,對應於指令I3的合併指令M3被插入到指令I3之前,使得指令流被改變為指令I1、合併指令M2、指令I2、合併指令M3、指令I3和指令I4。合併系統122進一步使用一個或多個採取規則中的一個選擇的規則來確定為每個時脈週期發佈哪個指令。採取規則不改變指令流706的順序,而是確定在當前週期中發佈哪些指令並將其推送到下一個週期。
對於三種不同的採取規則中的每一個示出了四個連續的時脈週期T1、T2、T3和T4。第一列顯示被稱為“單獨發佈合併(ISSUE MERGE ALONE)”710的第一採取規則,第二列顯示被稱為“發佈直到合併(ISSUE UNTIL MERGE)”712的第二採取規則,第三列示出被稱為“發佈直到第二合併(ISSUE UNTIL 2ND MERGE)”714的第三採取規則。如前所述,合併採取模組504基於由合併檢測器502提供的MID施加合併取得規則中的活動的一個以提供用於標識在每個時脈週期中發佈的指令的KI。不同的採取規則提供了時間和性能之間的折衷,並且可以基於指令引數進行切換。在每個時脈週期中,當然,指令轉換器104可以繼續提供至多4個附加指令(未示出)。時序考慮了由合併檢測器502執行的功能,以分析輸入指令進而提供MID,以及考慮了由合併指令生成器506執行的功能,以生成要插入到指令流中的期望的合併指令。
ISSUE MERGE ALONE 710確定需要合併的原始指令以及它們對應的合併指令將在每個週期中單獨發佈。指令I1不需要合併,並且首先分配給週期T1。由於指令I2需要合併, 所以將其與合併指令M2一起被推到第二週期T2,從而在第二週期T2中單獨發佈指令M2和I2。然後由於指令I3需要合併,所以它與其合併指令M3一起被推到第三週期,所以在第三週期T3中單獨發佈合併指令M3和指令I3。不需要合併的指令I4在第四週期T4中發佈。雖然未示出,但是根據是否需要合併,可以在第四週期T4中的指令I4之後最多發佈3個附加指令。在這種情況下,需要4個時脈週期來發佈ISSUE MERGE ALONE 710的指令流706。
ISSUE UNTIL MERGE 712發佈至多每個週期中允許的總數(如4)的指令,並發佈指令直到指令及其所有相應的合併指令已經在該週期中發佈。在這種情況下,由於指令I1不需要合併,但是指令I2僅僅只需要一個合併指令M2,所以在第一週期T1中發佈指令I1、合併指令M2和指令I2。下一條指令I3也需要合併,因此在下一個週期T2中發佈指令M3和指令I3。雖然未示出,但是如果指令I3除了合併指令M3之外還有更多的合併指令,如果第二週期T2中發佈的總數不超過最大數量(如4),則它們也可以在第二週期T2內發佈。這留下了在第三週期T3中發佈的指令I4。再次,根據是否需要合併並且如果可以滿足時序,可以在第三週期T3中可以與指令I4一起發佈至多3個附加指令(未示出)。在這種情況下,需要3個時脈週期來發佈指令流706,其中ISSUE UNTIL MERGE 712以較少的時脈週期發佈指令流706作為ISSUE MERGE ALONE 710,從而提高性能。
ISSUE UNTIL 2ND MERGE 714發佈每個週期中允 許的至多總數(如4)的指令,並且發佈指令,直到指令、其所有相應的合併指令和所有其他指令指令在對應於下一個指令的下一個合併指令之前已在週期中發佈為止。然而,在第一週期T1中,合併指令M3和指令I3不能與合併指令M2和指令I2一起發佈,因為在所示配置中每個週期只允許最多4個指令。以這種方式,合併指令M3和指令I3被推到下一個週期(即T2)。由於指令I4不需要合併,所以也可以包括在第二週期T2中。雖然未示出,但是如果附加指令不需要合併,並且如果定時允許,就如第二週期T2中發佈的總數不超過最大數4,則在第二週期T2中可以發佈一個附加指令。因此,ISSUE UNTIL 2ND MERGE 714透過過僅在兩個週期內發佈指令流706而提供比其他採取規則更大的性能,但是可能提出額外的時序挑戰。
已經提出了前述描述,以使本領域普通技術人員能夠在特定應用及其要求的背景下提供和使用本發明。雖然已經參考其某些優選的形式相當詳細地描述了本發明,但是其他的形式和變化是可能的和預期的。對優選實施例的各種修改對於本領域技術人員將是顯而易見的,並且本文定義的一般原理可以應用於其他實施例。例如,本文描述的方框可以以包括邏輯器件或電路等的任何合適的方式來實現。本領域技術人員應當理解,在不脫離本發明的精神和範圍的情況下,它們可以容易地使用所公開的概念和具體實施例作為設計或修改用於實現本發明的相同目的的其他結構的基礎。因此,本發明不旨在限於本文所示和所述的具體實施例,而是符合與本文公開的原理和新穎特徵一致的最廣範圍。

Claims (19)

  1. 一種處理器,包括:物理暫存器檔案,包括多個物理暫存器;映射邏輯,其對於在多個程式指令中指定的多個架構暫存器中的每一個映射至多第一最大數量的所述多個物理暫存器,並且將對應映射關係儲存在重命名表中;以及合併系統,其對於需要被合併的所述多個架構暫存器中的每一個生成合併指令,其將每個合併指令插入到所述多個程式指令中以提供經修改的指令組,並且基於採取規則在連續的發佈週期發佈所述修改的指令組予保留站。
  2. 如申請專利範圍第1項所述的處理器,其中所述合併系統包括:合併檢測器,其檢測所述多個程式指令的讀取指令是否讀取映射到多個物理暫存器的架構暫存器,其檢測所述多個程式指令的寫指令是否會導致映射超過所述第一最大數,並且生成標識所述多個架構暫存器中的任何一個合併的合併識別字;合併指令生成器,其基於所述合併識別字生成要被合併的每個架構暫存器的所述合併指令;合併採取邏輯,其基於所述採取規則確定所述至少一個合併指令中的哪一個應該在所述多個程式指令中的任何一個之前被插入,並且產生指示每個時脈週期發佈哪些指令的終止指示;以及指令發佈邏輯,其基於所述終止指示提供發佈指令控制。
  3. 如申請專利範圍第2項所述的處理器,其中所述指令發佈邏輯包括指令重排序模組,其接收所述終止指示、所述多個程式指令以及由所述合併指令生成器生成的任何合併指令,並且提供所述發佈指令控制以控制在每個時脈週期內發佈的指令。
  4. 如申請專利範圍第2項所述的處理器,其中所述指令發佈邏輯包括指令移位元器和指令重排序模組,其中所述指令移位元器根據所述終止指令移動所述多個程式指令,並且其中所述指令重排序模組接收所述多個程式指令和由所述合併指令生成器產生的任何合併指令,並且提供所述發佈指令控制以控制在每個時脈週期中發佈的指令。
  5. 如申請專利範圍第1項所述的處理器,其中所述採取規則包括發佈合併單獨採取規則,其允許只有一個具有至少一個架構暫存器的指令被合併並且對應於在時脈週期中發佈的至少一個生成的合併指令。
  6. 如申請專利範圍第1項所述的處理器,其中所述採取規則包括發佈直到合併採取規則,其允許在時脈週期內最多發佈第二最大數量的指令,並且允許發佈直到具有至少一個架構暫存器的指令被合併並且在所述時脈週期中發佈了相應的至少一個合併指令。
  7. 如申請專利範圍第1項所述的處理器,其中所述採取規則包括發佈直到第二合併採取規則,其允許在時脈週期中發佈最多第二最大數量的指令,並且允許發佈直到具有至少一個架構暫存器的指令被合併,在所述時脈週期中已經發佈與下一個指令對應的下一個合併指令之前的對應的至少一個合併指令和其他指令。
  8. 如申請專利範圍第1項所述的處理器,其中所述採取規則包括從多個採取規則中選擇的採取規則,其中所述多個採取規則中的每一個在時序和性能之間提供不同的折衷。
  9. 如申請專利範圍第1項所述的處理器,其中所述第一最大數量是兩個。
  10. 一種合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,包括:將重命名表中的多個程式指令中特定的多個架構暫存器中的每一個映射到最多第一最大數量的多個物理暫存器;在執行所述多個程式指令中的至少一個程式指令之前,檢測所述多個架構暫存器中的任何一個何時需要被合併;為需要合併的所述多個架構暫存器中的每一個生成合併指令;將每個合併指令插入到所述多個程式指令中以提供經修改的指令組;和基於採取規則在連續的時脈週期內發佈經修改的指令組予保留站。
  11. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,其中:所述檢測包括檢測所述多個程式指令的讀取指令是否讀取映射到多個物理暫存器的架構暫存器;和其中所述生成包括生成對應的讀取合併指令。
  12. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,其中:所述檢測包括檢測所述多個程式指令的寫入指令是否會導致映射超過所述第一最大數量;和其中所述生成包括產生相應的寫入合併指令。
  13. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,還包括:生成合併識別字,所述合併識別字基於所述檢測來標識需要被合併的所述多個架構暫存器中的任何一個,並且在所述生成和所述發佈期間使用所述合併識別字。
  14. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,還包括:基於所述採取規則,確定在所述多個程式指令中的任何一個之前應該插入任何所生成的合併指令中的哪一個,產生指示每個時脈週期發佈哪些指令的終止指示;以及基於所述終止指示提供發佈指令控制。
  15. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,還包括從多個採取規則中選擇採取規則,其中所述多個採用規則中的每一個在時序和性能之間提供不同的折衷。
  16. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,還包括僅允許一個具有至少一個架構暫存器的指令被合併並且在時脈週期中發佈相應的至少一個合併指令。
  17. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,還包括允許在時脈週期中發佈最多第二最大數量的指令,並且允許發佈直到具有要被合併的至少一個架構暫存器的指令和在所述時脈週期中發佈了對應的至少一個合併指令。
  18. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,還包括允許在時脈週期中發佈最多第二最大數量的指令,並且允許發佈直到具有至少一個架構暫存器的指令被合併,並且在所述時脈週期中已經發佈對應的至少一個合併指令、和與下一個指令相對應的下一個合併指令之前的其他指令。
  19. 如申請專利範圍第10項所述的合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法,其中所述映射包括將多個程式指令中特定的多個架構暫存器中的每一個映射到針對每個架構暫存器的最多兩個物理暫存器。
TW107107036A 2017-06-23 2018-03-02 處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法 TWI666587B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710491888.7A CN107291425B (zh) 2017-06-23 2017-06-23 合并解决重命名尺寸问题的部分写入结果的系统和方法
??201710491888.7 2017-06-23

Publications (2)

Publication Number Publication Date
TW201905681A TW201905681A (zh) 2019-02-01
TWI666587B true TWI666587B (zh) 2019-07-21

Family

ID=60099789

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107107036A TWI666587B (zh) 2017-06-23 2018-03-02 處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法

Country Status (3)

Country Link
US (1) US10853080B2 (zh)
CN (1) CN107291425B (zh)
TW (1) TWI666587B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494190B2 (en) * 2021-03-31 2022-11-08 Arm Limited Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840783B1 (en) * 2007-09-10 2010-11-23 Netlogic Microsystems, Inc. System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths
TW201145037A (en) * 2010-06-03 2011-12-16 Super Talent Electronics Inc USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch
TW201346755A (zh) * 2011-12-20 2013-11-16 Intel Corp 用於順序指令管線中的亂序預取指令的系統與方法
CN104049947A (zh) * 2013-03-15 2014-09-17 三星电子株式会社 基于动态重命名的矢量寄存器堆的寄存器重新配置
CN106095393A (zh) * 2016-06-22 2016-11-09 上海兆芯集成电路有限公司 在回退阶段期间合并部分写结果的系统和方法
US9569574B1 (en) * 2014-03-07 2017-02-14 Altera Corporation Method and apparatus for performing fast incremental physical design optimization

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463525B1 (en) * 1999-08-16 2002-10-08 Sun Microsystems, Inc. Merging single precision floating point operands
US7228403B2 (en) * 2000-12-23 2007-06-05 International Business Machines Corporation Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture
GB2393270B (en) * 2002-09-19 2005-07-27 Advanced Risc Mach Ltd Executing variable length instructions stored within a plurality of discrete memory address regions
CN100555225C (zh) * 2008-03-17 2009-10-28 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
US7937561B2 (en) * 2008-04-03 2011-05-03 Via Technologies, Inc. Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture
CN101794214B (zh) * 2009-02-04 2013-11-20 世意法(北京)半导体研发有限责任公司 使用多块物理寄存器映射表的寄存器重命名系统及其方法
US20120059866A1 (en) * 2010-09-03 2012-03-08 Advanced Micro Devices, Inc. Method and apparatus for performing floating-point division
CN103959238B (zh) * 2011-11-30 2017-06-09 英特尔公司 使用gpu/cpu体系结构的rsa的高效实现
US9098265B2 (en) * 2012-07-11 2015-08-04 Arm Limited Controlling an order for processing data elements during vector processing
KR102332478B1 (ko) * 2013-10-27 2021-11-30 어드밴스드 마이크로 디바이시즈, 인코포레이티드 부동 소수점 레지스터 앨리어싱을 위한 프로세서 및 방법들
US10318299B2 (en) * 2013-10-31 2019-06-11 International Business Machines Corporation Reading a register pair by writing a wide register
US9442731B2 (en) * 2014-03-13 2016-09-13 Intel Corporation Packed two source inter-element shift merge processors, methods, systems, and instructions

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840783B1 (en) * 2007-09-10 2010-11-23 Netlogic Microsystems, Inc. System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths
TW201145037A (en) * 2010-06-03 2011-12-16 Super Talent Electronics Inc USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch
TW201346755A (zh) * 2011-12-20 2013-11-16 Intel Corp 用於順序指令管線中的亂序預取指令的系統與方法
CN104049947A (zh) * 2013-03-15 2014-09-17 三星电子株式会社 基于动态重命名的矢量寄存器堆的寄存器重新配置
US9569574B1 (en) * 2014-03-07 2017-02-14 Altera Corporation Method and apparatus for performing fast incremental physical design optimization
CN106095393A (zh) * 2016-06-22 2016-11-09 上海兆芯集成电路有限公司 在回退阶段期间合并部分写结果的系统和方法

Also Published As

Publication number Publication date
TW201905681A (zh) 2019-02-01
CN107291425B (zh) 2020-11-24
CN107291425A (zh) 2017-10-24
US10853080B2 (en) 2020-12-01
US20180373539A1 (en) 2018-12-27

Similar Documents

Publication Publication Date Title
EP3314437B1 (en) Verifying branch targets in a block based processor
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
JP6236443B2 (ja) ベクトル処理中のデータ要素処理のための順序制御
KR101594502B1 (ko) 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법
US9411589B2 (en) Branch-free condition evaluation
US9256427B2 (en) Tracking multiple conditions in a general purpose register and instruction therefor
US7979637B2 (en) Processor and method for executing data transfer process
BR102013010540B1 (pt) processador e método para operações de inicialização de registro otimizantes
US20150277925A1 (en) Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
JP2018500657A5 (zh)
US9367318B1 (en) Doubling thread resources in a processor
US11188332B2 (en) System and handling of register data in processors
JP7156776B2 (ja) リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法
US20130339689A1 (en) Later stage read port reduction
US8245016B2 (en) Multi-threaded processing
WO2015171862A1 (en) Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
TWI666587B (zh) 處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法
US9081581B2 (en) Size mis-match hazard detection
US10248425B2 (en) Processor with slave free list that handles overflow of recycled physical registers and method of recycling physical registers in a processor using a slave free list
US7694110B1 (en) System and method of implementing microcode operations as subroutines
US7783692B1 (en) Fast flag generation
EP4049127A1 (en) Register renaming after a non-pickable scheduler queue
Wang et al. A general framework to build new CPUs by mapping abstract machine code to instruction level parallel execution hardware