TW202248846A - 微處理器、適用於微處理器的方法以及資料處理系統 - Google Patents

微處理器、適用於微處理器的方法以及資料處理系統 Download PDF

Info

Publication number
TW202248846A
TW202248846A TW110129840A TW110129840A TW202248846A TW 202248846 A TW202248846 A TW 202248846A TW 110129840 A TW110129840 A TW 110129840A TW 110129840 A TW110129840 A TW 110129840A TW 202248846 A TW202248846 A TW 202248846A
Authority
TW
Taiwan
Prior art keywords
type
instruction
execution queue
unit
instructions
Prior art date
Application number
TW110129840A
Other languages
English (en)
Other versions
TWI796755B (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 TW202248846A publication Critical patent/TW202248846A/zh
Application granted granted Critical
Publication of TWI796755B publication Critical patent/TWI796755B/zh

Links

Images

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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • 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
    • 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/30141Implementation provisions of register files, e.g. ports
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units

Landscapes

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

Abstract

本發明介紹一種微處理器,包含共用功能單元、第一執行佇列以及第二執行佇列。第一執行佇列包含多個條目,其中第一執行佇列的每一條目包含第一計數值,第一計數值遞減直到第一計數值達到0為止。當第一計數值達到0時,第一執行佇列將第一類型指令分派到共用功能單元。第二執行佇列包含多個條目,其中第二執行佇列的每一條目包括第二計數值,第二計數值遞減直到第二計數值達到0為止。當第二計數值達到0時,第二執行佇列將第二類型指令分派到共用功能單元。發佈單元解析所有資料相依性和資源衝突,使得第一計數值和第二計數值被預設用於共用功能單元在未來的確切時間相互執行的第一類型指令和第二類型指令。

Description

微處理器、適用於微處理器的方法以及資料處理系統
本發明是關於一種微處理器,更具體地說,是關於一種具有用於執行多類型指令的共用功能單元的微處理器。
超標量微處理器通過每時脈週期執行多個指令且通過指令的亂序執行而實現高性能。指令必須有序寫回到暫存器組,以避免如分支誤預測、中斷以及精確異常的控制危險。如重新排序緩衝器、暫存器重命名的臨時儲存裝置用於結果資料,直到其可有序引退到暫存器組為止。此外,需要儲存裝置來將源運算元資料保持在執行佇列中,直到指令可由功能單元執行為止。這些儲存裝置通常是架構暫存器組的大小的數倍,且這些儲存裝置的讀取/寫入消耗更多的功率。
當微處理器包含獨立的多類型處理單元(如標量浮點單元(floating-point unit;FPU)和向量處理單元(vector processing unit;VPU))時,包含性能、功率以及面積(performance, power, and area;PPA)的設計微處理器的指標難以實現。VPU由整數和浮點(floating-point;FP)算術函數兩者組成。與整數執行單元相比,FP執行單元的大小大得多。在不同類型的指令之間共用執行單元可能是極複雜的,尤其是在處理不同暫存器組、資料相依性以及結果轉發的亂序執行微處理器中。微處理器可通過序列化指令類型來共用執行單元,即標量FP指令必須完成,且在可將向量指令發送到執行單元之前清除執行單元。然而,當允許來自兩個多類型處理單元的指令處於微處理器的執行管線中時,微處理器的性能受到限制。
本公開介紹一種能夠改進具有共用功能單元的微處理器的性能的微處理器、方法以及資料處理系統。
在一些實施例中,微處理器包含共用功能單元、第一執行佇列、第二執行佇列、第一類型發佈單元以及第二類型發佈單元。第一執行佇列包含多個條目,其中第一執行佇列的每一條目記錄第一類型指令,第一執行佇列的每一條目包含對應於第一類型指令的第一計數值,第一計數值遞減直到第一計數器達到0為止。當對應於第一類型指令的第一計數值達到0時,第一執行佇列將第一類型指令分派到共用功能單元。第二執行佇列包含多個條目,其中第二執行佇列的每一條目記錄第二類型指令,第二執行佇列的每一條目包含對應於第二類型指令的第二計數值,第二計數值遞減直到對應於第二類型指令的第二計數值達到0為止。當第二計數器達到0時,第二執行佇列將第二類型指令分派到共用功能單元。共用功能單元執行第一類型指令和第二類型指令,其中來自第一執行佇列的第一類型指令和來自第二執行佇列的第二類型指令相互排斥地分派到共用功能單元。與動態地選擇不同類型的指令以用於由共用功能單元執行的現有技術的重要區別在於,通過使用預設計數器(第一計數值和第二計數值),指令被調度為在未來的確切時間由共用功能單元執行。暫存器組的資料的讀取和寫入被預設為針對第一類型指令或第二類型指令在共用功能單元的未來的確切執行時間同步。與現有技術一樣,不需要動態衝突解析,不需要動態資料相依性解析以及不需要動態讀取/寫入埠解析。動態解析是微處理器設計中的最多功率消耗。
在一些實施例中,方法適用於包括第一執行佇列、第二執行佇列、共用功能單元的微處理器。方法包含以下步驟:回應於確定包含於第一執行佇列的條目中的第一計數器達到0而將記錄於第一執行佇列的條目中的第一類型指令分派到共用功能單元;回應於確定包含於第二執行佇列的條目中的第二計數器達到0而將記錄於第二執行佇列的條目中的第二類型指令分派到共用功能單元;以及由共用功能單元執行第一類型指令和第二類型指令。
在一些實施例中,資料處理系統包含記憶體和微處理器,其中記憶體配置成儲存第一類型指令和第二類型指令。微處理器包含共用功能單元、第一執行佇列、第二執行佇列、第一類型發佈單元以及第二類型發佈單元。第一執行佇列包含多個條目,其中第一執行佇列的每一條目記錄第一類型指令,第一執行佇列的每一條目包含對應於第一類型指令的第一計數值,第一計數值遞減直到第一計數器達到0為止。當對應於第一類型指令的第一計數值達到0時,第一執行佇列將第一類型指令分派到共用功能單元。第二執行佇列包含多個條目,其中第二執行佇列的每一條目記錄第二類型指令,第二執行佇列的每一條目包含對應於第二類型指令的第二計數值,第二計數值遞減直到第二計數器達到0為止。當第二計數器達到0時,第二執行佇列將第二類型指令分派到共用功能單元。共用功能單元執行第一類型指令和第二類型指令,其中來自第一執行佇列的第一類型指令和來自第二執行佇列的第二類型指令相互分派到共用功能單元。在另一實施例中,第一執行佇列和第二執行佇列可合併成具有用以指示佇列的每一條目的指令的類型的標籤的單個佇列。單個執行佇列更高效,但兩個執行佇列更易於配置。
參考圖1至圖14提供本發明的實施例的詳細描述。
以下公開內容提供用於實施本公開的不同特徵的多個不同實施例或實例。下文描述元件和佈置的特定實例來簡化本公開。當然,這些僅是實例且並不希望為限制性的。舉例來說,在以下描述中,第一特徵在第二特徵上方或上的形成可包含第一特徵與第二特徵直接接觸地形成的實施例,且還可包含額外特徵可在第一特徵與第二特徵之間形成以使得第一特徵與第二特徵可不直接接觸的實施例。此外,本公開可在各種實例中重複附圖標記和/或字母。此重複是出於簡單和清晰的目的,且本身並不指示所論述的各種實施例和/或配置之間的關係。
本公開介紹一種將指令調度到未來時間以供執行而非暫停管線的微處理器。此處理器還可稱為未來調度執行(future scheduling execution;FSE)微處理器。常規地,如果由指令指定的暫存器或功能單元未就緒(例如,資源衝突,如數據相依性、暫存器的讀取和寫入埠的可用性、功能單元的可用性等),那麼解碼/發佈單元將暫停執行管線或將指令放在一邊,直到解析暫存器或功能單元的可用性為止。在FSE微處理器中,基於解析資料相依性、暫存器和功能單元的讀取和寫入埠在未來時間的可用性,解碼/發佈單元仍將會發佈這些指令並將其調度到未來時間以供執行。
參考圖1A,根據一些實施例示出包含微處理器10和記憶體30的資料處理系統1的示意圖。微處理器10實施為通過執行儲存於記憶體30中的指令來執行多種資料處理功能性。記憶體30可包含2級(level 2;L2)快取記憶體和3級(level 3;L3)快取記憶體以及資料處理系統1的主記憶體,其中L2快取記憶體和L3快取記憶體具有比主記憶體更快的存取時間。記憶體可包含隨機存取記憶體(random access memory;RAM)、動態隨機存取記憶體(dynamic random access memory;DRAM)、靜態隨機存取記憶體(static random access memory;SRAM)、唯讀記憶體(read only memory;ROM)、可程式化唯讀記憶體(programmable read only memory;PROM)、電可程式設計唯讀記憶體(electrically programmable read only memory;EPROM)、電可擦除可程式化唯讀記憶體(electrically erasable programmable read only memory;EEPROM)以及快閃記憶體中的至少一個。
微處理器10可為在單個微處理器內實施指令級並行性的超標量微處理器。超標量微處理器通過每時脈週期執行多個指令而實現高性能。將多個指令分派到不同功能單元以供並存執行。超標量微處理器可採用亂序(out-of-order;OOO)執行,其中可在第一指令之前執行對第一指令沒有任何相依性的第二指令。在傳統的亂序微處理器設計中,指令可亂序執行,但由於如分支誤預測、中斷以及精確異常的控制危險,所述指令必須有序引退到微處理器的暫存器組。如重新排序緩衝器和暫存器重命名的臨時儲存裝置用於結果資料,直到指令從執行管線有序引退為止。在本發明中,只要指令不具有資料相依性和控制危險,微處理器10就可通過將結果資料亂序寫回到暫存器組而亂序執行和引退指令。在實施例中,沒有臨時暫存器用於此FSE微處理器10,這是因為微處理器10配置成通過將指令調度到未來時間而發佈具有資料相依性或控制危險的指令。然而,本公開並不希望限於此。在一些其它實施例中,還可使用臨時暫存器。
參考圖1A,微處理器10可包含指令快取記憶體11、分支預測單元(branch prediction unit;BPU)12、解碼/發佈單元13、暫存器組14、記分板15、讀取/寫入控制單元16、載入/儲存單元17、資料快取記憶體18、多個執行佇列(execution queue;EQ)19A到19E,其中執行佇列可用於專用(如標籤執行佇列TEQ 19A和資料執行佇列DEQ 19B)、多個功能單元(functional unit;FUNT)20A到20C。微處理器10還包含讀取匯流排31和結果匯流排32。讀取匯流排31耦合到載入/儲存單元17、功能單元20A到功能單元20C以及暫存器組14以用於將運算元資料從暫存器組14中的暫存器傳輸到載入/儲存單元17和功能單元20A到功能單元20C,這還可稱為從暫存器組14讀取運算元據(或在儲存指令的情況下儲存資料)的操作。結果匯流排32耦合到資料快取記憶體18、功能單元20A到功能單元20C以及暫存器組14以用於將資料從資料快取記憶體18或功能單元20A到功能單元20C傳輸到暫存器組14的暫存器,這還可稱為將結果資料寫回到暫存器組14(或在載入指令的情況下載入資料)的操作。本文中以後接字母的特定附圖標記指代的元件將由單獨附圖標記共同指代。舉例來說,除非指定,否則執行佇列19A到執行佇列19E將統稱為執行佇列19。解碼/發佈單元13、記分板15、讀取/寫入控制單元16、暫存器組14、多個執行佇列19以及多個功能單元20在執行塊100A中分組在一起,以用於通過同一暫存器組進行資料存取的一種類型的指令。在一些實施例中,微處理器10還可執行其它類型的指令,如如執行塊100B和執行塊100C中所繪示的向量指令或浮點指令,所述執行塊在本文中統稱為執行塊100。在一些實施例中,指令可包含不同類型的指令。舉例來說,指令可包含向量指令、標量FP指令、單指令/多資料(Single Instruction/Multiple Data;SIMD)指令、數位信號處理(digital signal processing;DSP)指令或任何其它類型的指令中的至少一個。向量指令、標量FP指令、SIMD指令、DSP指令的定義在所提交的相關技術中是眾所周知的,因此下文省略關於那些指令類型的詳細描述。本公開的一些實施例可使用比圖1A中所示出的元件更多、更少或不同的組件。
在一些實施例中,指令快取記憶體11耦合(未繪示)到記憶體30和解碼/發佈單元13,且配置成儲存從記憶體30提取的指令並將所述指令分派到解碼/發佈單元13。指令快取記憶體11包含來自記憶體30的連續指令位元組的許多快取記憶體線。快取記憶體線組織為直接映射、完全關聯映射或組關聯映射等。直接映射、完全關聯映射以及組關聯映射在相關技術中是眾所周知的,因此下文省略關於以上映射的詳細描述。
指令快取記憶體11可包含標籤陣列(未繪示)和資料陣列(未繪示)以用於分別儲存由微處理器10使用的頻繁使用指令的位址的一部分和資料。標籤陣列中的每一標籤對應於資料陣列中的快取記憶體線。當微處理器10需要執行指令時,微處理器10首先通過將指令的位址與儲存於標籤陣列中的標籤進行比較來檢查指令在指令快取記憶體11中的存在。如果指令位址與標籤陣列中的標籤中的一個匹配(即,快取記憶體命中),那麼從資料陣列提取對應快取記憶體線。如果指令位址不與標籤陣列中的任何條目匹配,那麼其是快取記憶體未命中,那麼微處理器10可存取記憶體30以找到指令。在一些實施例中,微處理器10更包含耦合到指令快取記憶體11的指令佇列(未繪示)和用於在將指令發送到解碼/發佈單元13之前儲存來自指令快取記憶體11或記憶體30的指令的解碼/發佈單元13。
BPU 12耦合到指令快取記憶體11且配置成推測地提取分支指令之後的指令。BPU 12可基於分支指令的過往行為而提供對分支指令的分支方向(採取或不採取)的預測,且提供所採取分支指令的預測分支目標位址。分支方向可被「採取」」,其中從所採取分支指令的分支目標位址提取後續指令。分支方向可「未採取」,其中從與分支指令連續的記憶體位置提取後續指令。在一些實施例中,BPU 12實施用於從基本塊的起始位址預測基本塊的結束的基本塊分支預測。基本塊的起始位址(例如,基本塊的第一指令的位址)可為先前所採取分支指令的目標位址。基本塊的結束位址是在基本塊的最後一個指令之後的指令位址,所述指令位址可以是另一基本塊的起始位址。基本塊可包含多個指令,且當基本塊中的分支跳躍到另一基本塊時,所述基本塊結束。
功能單元可包含可執行分支指令且確定所預測分支方向是否不正確(誤預測)的分支執行單元(branch execution unit;BEU)(其可為功能單元20中的一個)。舉例來說,BEU可將所預測分支方向(採取或未採取)與所執行的實際分支進行比較以確定所預測分支方向是否正確。從微處理器中的各種單元捨棄誤預測分支之後的指令。分支誤預測還可來自解碼/發佈單元13以對未由BPU 12預測的非條件分支指令(始終採取的分支)進行解碼。解碼/發佈單元13和BPU 12可將更新資訊提供到BPU 12。在微處理器10中,分支指令之後的指令必須直到分支指令執行之後才寫回到暫存器組14。
解碼/發佈單元13可對從指令快取記憶體11接收到的指令進行解碼。指令可包含以下欄位:操作代碼(或操作碼)、運算元(例如,源運算元和目的地運算元)以及立即資料。操作碼可指定進行何種操作(例如,ADD、SUBTRACT、SHIFT、STORE、LOAD等)。運算元可指定暫存器組14中的暫存器的索引或位址,其中源運算元指示來自暫存器組的將從其讀取操作的暫存器,且目的地運算元指示暫存器組中的操作的結果資料將寫回到的暫存器。應注意,源運算元和目的地運算元還可稱為源暫存器和目的地暫存器,其在下文中可互換使用。在一些實施例中,運算元將需要5位元索引來識別具有32個暫存器的暫存器組中的暫存器。一些指令可使用如指令中所指定的立即資料而非暫存器資料。每一操作將在功能單元20或載入/儲存單元17中執行。基於由操作碼指定的操作類型和資源(例如,暫存器、功能單元等)的可用性,每一指令將具有執行等待時間和吞吐時間。執行等待時間(或等待時間)是指用於執行由指令指定的操作以完成和寫回結果資料的時間量(即,時脈週期數)。吞吐時間是指下一指令可進入功能單元20時的時間量(即,時脈週期數)。
在實施例中,在解碼/發佈單元13中基於操作碼針對執行等待時間、吞吐時間以及指令類型對指令進行解碼。指令被分派到執行佇列19以由功能單元20或載入/儲存單元17執行。多個指令可發佈到其中累積吞吐時間的一個執行佇列19。累積時間鑒於執行佇列19中先前發佈的指令而指示下一指令可進入功能單元20以供執行的時間。指令可發送到功能單元20時的時間稱為讀取時間(來自暫存器組),且指令由功能單元20完成時的時間稱為寫入時間(到暫存器組)。指令發佈到執行佇列19,其中每一所發佈指令具有調度的讀取時間以分派到功能單元20或載入/儲存單元17以供執行。累積吞吐時間為發佈指令的讀取時間。當指令發佈到執行佇列19的下一可用條目時,將指令的指令等待時間添加到累積輸送量以產生寫入時間。累積時間修改發佈指令的等待執行時間和開始時間。修改後的執行等待時間在本文中將稱為最近發佈的指令的寫入時間,且修改後的開始時間在本文中將稱為所發佈指令的讀取時間。寫入時間和讀取時間還可稱為存取時間,所述存取時間描述將所發佈指令寫入到暫存器組14的暫存器或從暫存器組14的暫存器讀取所發佈指令的特定時間點。對於多於一個指令的並行發佈,可基於在第二指令之前發佈的第一指令而進一步調整第二指令的寫入時間和讀取時間。解碼/發佈單元13可將載入/儲存指令解碼為包含標籤微操作和資料微操作的兩個微操作(微操作)。
在一些實施例中,在發佈指令之前,解碼/發佈單元13檢查且解析所有可能的衝突。指令可具有以下4種基本類型的衝突:(1)數據相依性,其包含讀後寫(write-after-read;WAR)、寫後讀(read-after-write;RAW)以及寫後寫(write-after-write;WAW)相依性;(2)用以從暫存器組讀取資料到功能單元的讀取埠的可用性;(3)用以從功能單元寫回資料到暫存器組的寫入埠的可用性;以及(4)用以執行資料的功能單元20的可用性。在指令可分派到執行佇列19之前,解碼/發佈單元13可存取記分板15以檢查資料相依性。暫存器組14具有有限數目個讀取埠和寫入埠,其中所發佈指令必須評斷或保留讀取埠和寫入埠以在未來時間存取暫存器組14。讀取/寫入控制單元16保持針對指令的每一源運算元的調度的讀取時間和針對指令的每一目的地運算元的調度的寫入時間。解碼/發佈單元13可存取讀取/寫入控制單元16以檢查暫存器組14的讀取埠的可用性,以便調度指令的存取時間(即,讀取時間和寫入時間)。在其它實施例中,寫入埠中的一個可專用於具有未知執行等待時間以寫回到暫存器組14而不使用寫入埠控制的指令,且可保留讀取埠中的一個以用於具有未知讀取時間以從暫存器組14讀取資料而不使用讀取埠控制的指令。暫存器組14的讀取埠的數目可動態保留(不專用)用於未知讀取操作。在這種情況下,功能單元20或載入/儲存單元17必須確保讀取埠在試圖從暫存器組14讀取資料時不忙碌。在實施例中,可通過與其中累積所排隊指令(即,先前發佈到執行佇列)的吞吐時間的執行佇列19協調來解析功能單元20的可用性。基於執行佇列中的累積吞吐時間,指令可分派到執行佇列19,其中指令可調度為在功能單元20可用的未來的特定時間發佈到功能單元20。
圖2是示出根據本公開的一些實施例的暫存器14和記分板15的框圖。暫存器組14可包含多個暫存器R(0)到R(N)、讀取埠以及寫入埠(未繪示),其中N是大於1的整數。在實施例中,暫存器組14可包含標量暫存器組和向量暫存器組。本公開並不希望限制暫存器組14中的暫存器、讀取埠以及寫入埠的數目。記分板15包含多個條目150(0)到150(N),且每一記分板條目對應於暫存器組14中的一個暫存器且記錄與對應暫存器相關的資訊。在一些實施例中,記分板15具有與暫存器組14相同數目個條目(即,N數目個條目),但本公開並不希望限制記分板15中的條目的數目。
圖3A到圖3B是示出根據本公開的一些實施例的記分板條目的各種結構的圖。在實施例中,記分板15可包含用於處置到暫存器組14的寫回操作的第一記分板151和用於處置來自暫存器組14的讀取操作的第二記分板152。第一記分板151和第二記分板152可或可不共存於微處理器10中。本公開並不希望限於此。在其它實施例中,可將第一記分板151和第二記分板152實施為或視為處置讀取操作和寫入操作兩者的一個記分板15。圖3A示出用於所發佈指令的目的地暫存器的第一記分板151。圖3B示出用於所發佈指令的源暫存器的第二記分板152。參考圖3A,第一記分板151的每一條目1510(0)到1510(N)包含未知欄位(「Unknown」)1511、計數欄位(「cnt」)1531以及功能單元欄位(「funit」)1551。這些欄位中的每一個記錄與待由所發佈指令寫入的對應目的地暫存器相關的資訊。可在發佈指令時設置記分板條目的這些欄位。
未知欄位1511包含指示對應於記分板條目的暫存器的寫入時間是已知還是未知的位值。舉例來說,未知欄位1511可包含一個位,其中非零值指示暫存器具有未知寫入時間,且零值指示暫存器具有如由計數欄位1531指示的已知寫入時間。在一些實施例中,未知欄位1511可包含用以指示將具有未知寫入時間的一個或多個所發佈指令調度為寫入暫存器的任何數目個位。未知欄位1511可在指令的發佈時間設置或修改且在解析未知暫存器寫入時間之後復位。可通過解碼/發佈單元13、載入/儲存單元17(例如,在資料命中之後)或功能單元20(例如,在INT DIV操作解析待劃分的數位的數目之後)以及微處理器中涉及執行具有未知寫入時間的指令的其它單元來執行重定操作。在一些實施例中,未知欄位1511可包含兩個位,這將具有記錄具有未知寫入時間的調度為寫入暫存器的三個其它所發佈指令的存在的4種不同狀態。在又一些其它實施例中,未知欄位1511可包含三個位、四個位等,以記錄具有未知寫入時間的多個所發佈指令。
計數欄位1531記錄指示在暫存器可由下一指令寫入(發佈)之前的時脈週期數的計數值,其還可稱為記錄寫入計數值的寫入計數欄位。換句話說,計數欄位1531記錄先前發佈的指令將完成操作且將結果資料寫回到暫存器的時脈週期數。基於指令的發佈時間處的執行等待時間來設置計數欄位1531的計數值。接著,計數值針對每一時脈週期向下計數(即,遞減一),直到計數值變為零(即,自複位元數目器)為止。舉例來說,ADD指令的執行等待時間為2個時脈週期,且計數欄位1531中的計數值將在目的地暫存器的ADD指令的發佈時間設置為2且在計數器欄位達到0時自復位。計數值3指示結果資料將在3個時脈週期後寫回到對應於記分板條目的暫存器,計數值1指示結果資料將在下一時脈週期中寫回到暫存器,且計數值0指示不存在用於存取暫存器的資料相依性。在實施例中,所發佈指令可寫入到暫存器或從暫存器讀取。在寫入到暫存器的情況下,計數欄位1531的值可稱為寫入(或等待)計數值。在讀取到暫存器的情況下,計數欄位1531的值可稱為將在圖3B中論述的讀取計數值。換句話說,在一些其它實施例中,計數值欄位可取決於所發佈指令所指定的操作而記錄暫存器的寫入時間或讀取時間。
記分板條目的功能單元欄位1551指定待寫回到暫存器的功能單元20(由所發佈指令指定)。舉例來說,記錄ALU的功能單元欄位1551指示結果資料將從ALU功能單元寫回到暫存器。在一些實施例中,功能單元欄位1551中的所記錄功能單元可用於在計數欄位1531達到值1時將來自所記錄功能單元的結果資料轉發到由下一指令指定的另一功能單元。
圖3B是示出根據本公開的一些實施例的記分板條目的結構的圖。具有記分板條目1520(0)到記分板條目1520(N)的結構的第二記分板152設計成解析在從暫存器讀取所發佈指令之前寫入到對應於記分板條目的暫存器時的衝突。第二記分板還可稱為用於解析WAR資料相依性的WAR記分板。記分板條目1520(0)到記分板條目1520(N)中的每一個包含未知欄位(「Unknown」)1521和計數欄位(還可稱為計數欄位)(「read cnt」)1523。可在WAR記分板的實施方案中省略功能單元欄位。未知欄位1521包含指示對應於記分板條目的暫存器的讀取時間是已知還是未知的位值。未知欄位1521的操作和功能性類似於未知欄位1511,且因此,出於簡潔的目的省略其細節。計數欄位1523記錄指示先前發佈的指令從對應暫存器讀取將花費的時脈週期數的讀取計數值。計數欄位1523還可稱為儲存讀取計數值的讀取計數欄位。類似於(寫入)計數欄位1531的寫入計數值,讀取計數值針對每一時脈週期向下計數一,直到讀取計數值達到0為止。除非指定,否則(讀取)計數欄位1523的操作和功能性類似於(寫入)計數欄位1531,且因此省略其細節。
讀取/寫入控制單元16配置成在未來在多個時脈週期處記錄暫存器組14的讀取埠和/或寫入埠的可用性以用於調度待發佈的指令的存取。在發佈指令時,基於指令所指定的存取時間,解碼/發佈單元13存取讀取/寫入控制單元16以檢查暫存器組14的讀取埠和/或寫入埠的可用性。詳細地說,讀取/寫入控制單元16在未來時間選擇可用讀取埠作為將源運算元讀取到功能單元20的所調度讀取時間,且在未來時間選擇可用寫入埠作為寫回來自功能單元20的結果資料的所調度寫入時間。在實施例中,讀取/寫入控制單元16可包含用於如上文所描述調度讀取埠和寫入埠的讀取位移器161和寫入位移器163。
圖4是示出根據本公開的一些實施例的與暫存器組的讀取埠相關聯的讀取位移器161的圖。圖5是示出根據本公開的一些實施例的與暫存器組的寫入埠相關聯的寫入位移器163的圖。暫存器組14的讀取埠中的每一個可與一個讀取位移器161相關聯,且暫存器組14的寫入埠中的每一個可與一個寫入位移器163相關聯。在實施例中,讀取位移器161和寫入位移器163可包含於讀取/寫入控制單元16中。然而,本公開並不限於此。在一些其它實施例中,讀取位移器161和寫入位移器163可在讀取/寫入控制單元16外部,其中讀取/寫入控制單元16可分別以通信方式耦合到讀取位移器161和寫入位移器163,以用於控制暫存器組14的讀取埠和寫入埠的使用。
參考圖4,讀取位移器161包含多個條目1610(1)到1610(M),其中每一條目可包含讀取有效欄位1611和讀取位址欄位1613,其中M是大於1的整數。條目1610(1)到條目1610(M)中的每一個與未來的一個時脈週期相關聯,且記錄對應讀取埠在所述時脈週期中的可用性。舉例來說,條目1610(1)指示讀取埠在第一即將來臨的時脈週期(即,立即下一時脈週期)中的可用性,且條目1610(M)指示讀取埠在未來的第M個時脈週期中的可用性。參考圖4,條目1610(1)到條目1610(M)的最底條目將在每一時脈週期被移出,且可添加新條目作為1610(M)。舉例來說,最底條目1610(1)將在立即下一時脈週期中移出。在實施例中,讀取有效欄位(「rd」)1611記錄指示對應時脈週期中的讀取埠的可用性的讀取有效值。舉例來說,第X條目中的讀取有效欄位1611(X)中的非零值指示讀取埠在未來的第X個時脈週期處將為忙碌的,其中X大於1且小於M。第X條目中的讀取有效欄位1611(X)中的零值指示對應讀取埠在未來的第X個時脈週期處將自由存取。讀取位址欄位(「rd_addr」)1613記錄待從其中讀取資料的暫存器的位址。舉例來說,條目1610(1)指示對應讀取埠在用於從暫存器7讀取資料的立即下一時脈週期(即,位址「r7」)處將為忙碌的。在一些替代實施例中,讀取位移器161的每一條目中存在更多或更少的用於記錄其它資訊的欄位。
在指令的發佈時間,解碼/發佈單元13針對暫存器組14的讀取埠在指令的讀取時間處的可用性檢查讀取/寫入控制單元16。舉例來說,讀取時間為X個時脈週期。讀取/寫入控制單元16檢查讀取位移器161的第X條目以確定在未來的第X個時脈週期處讀取埠是否空閒。如果在讀取時間處可用讀取埠的數目大於或等於指令的所需讀取埠的數目,那麼解碼/發佈單元13可發佈並調度指令以用於在第X個時脈週期(即,所調度讀取時間)執行。針對所發佈指令的每一有效源暫存器設置讀取埠的讀取有效欄位1611和讀取位址欄位1613。如果可用讀取埠的數目小於所需讀取埠的數目,那麼解碼/發佈單元13可暫停指令且在下一時脈週期中重新檢查讀取位移器。在所調度的讀取時間,讀取位移器161將讀取有效欄位1611和讀取位址欄位1613提供到用於從暫存器組14讀取資料的對應功能單元。在實施例中,讀取位移器161可通過旋轉讀取指針來實施,其中讀取指標指示讀取位移器161的底部以在每一時脈週期讀取有效位元1611和讀取位址欄位1613,且讀取指標在每一時脈週期遞增。
參考圖5,寫入位移器163(可稱為等待時間位移器)包含多個條目1630(1)到1630(P),其中每一條目包含寫回有效欄位(「wr」)1631、寫入位址欄位(「wr_addr」)1633以及功能單元欄位(「funit」)1635,其中P為大於1的整數。條目1630(1)到條目1630(P)中的每一個與未來的一個時脈週期相關聯,且記錄對應寫入埠在所述時脈週期中的可用性。舉例來說,條目1630(1)指示寫入埠在第一即將來臨的時脈週期(即,立即下一時脈週期)中的可用性,且條目1630(P)指示寫入埠在未來的第N個時脈週期中的狀態。參考圖5,條目1630(1)到條目1630(P)的最底條目將在每一時脈週期移出。舉例來說,最底條目1630(1)將在立即下一時脈週期中移出,且可添加新條目作為1630(P)。在實施例中,寫回有效欄位(「wr」)1631記錄寫回有效值,所述寫回有效值指示寫入埠在對應於所述條目的時脈週期處的可用性。舉例來說,第Y條目中的寫回有效欄位1631(Y)中的非零值指示寫入埠在未來的第Y個時脈週期將為忙碌的,其中Y大於1且小於P。第Y條目中的寫回有效欄位1631(Y)中的零值指示寫入埠在未來的第Y個時脈週期處將自由存取。寫入位址欄位(「wr_addr」)1633指示暫存器組14中的暫存器的位址,功能單元將結果資料寫回到所述暫存器。功能單元欄位1635指定將結果資料寫回到寫入埠的功能單元20或載入/儲存單元17(「funit」)。舉例來說,寫入位移器163的第一條目1630(1)指示寫入埠在第一即將來臨的時脈週期中將為忙碌的,其中記錄在功能欄位1635中的alu 0將把結果資料寫回到記錄在寫入位址欄位1633中的暫存器22(「r22」)。
在指令的發佈時間,在發佈指令之前,解碼/發佈單元13針對暫存器組14的寫入埠在指令的寫入時間處的可用性檢查讀取/寫入控制單元。舉例來說,寫入時間為Y個時脈週期。讀取/寫入控制單元16檢查寫入移位元器163的第Y條目以確定在未來的第Y個時脈週期處寫入埠是否空閒。如果在寫入時間處可用寫入埠的數目大於或等於指令的所需寫入埠的數目,那麼解碼/發佈單元13可發佈並調度指令以用於在第Y個時脈週期(即,所調度寫入時間)處執行完成。針對所發佈指令的每一有效目的地暫存器設置寫回有效欄位1631、功能單元1635以及目的地位址1633。如果可用寫入埠的數目小於所需寫入埠的數目,那麼解碼/發佈單元13可暫停指令且在下一時脈週期中重新檢查寫入位移器。在所調度寫入時間處,讀取/寫入埠控制提取來自功能單元20的如記錄於功能單元欄位1635中的結果資料,且將結果資料寫入到如寫入位址欄位1633中所指定的暫存器。在實施例中,寫入位移器163可通過旋轉讀取指針來實施,其中讀取指針指示寫入位移器163的底部以在每一時脈週期讀取有效位元1631、暫存器位址1633以及功能單元1635,且讀取指標在每一時脈週期遞增。
參考圖1,執行佇列19配置成保持調度為分派到功能單元20的所發佈指令。功能單元20可包含但不限於:整數乘法、整數除法、算數邏輯單位(arithmetic logic unit;ALU)、浮點單元(FPU)、分支執行單元(BEU)、接收已解碼指令且執行操作的單元等。在實施例中,執行佇列19中的每一個耦合到或專用於功能單元20中的一個。舉例來說,執行佇列19A耦合在解碼/發佈單元13與對應功能單元20A之間以將指令排成佇列且分派所述指令,所述指令指定對應功能單元20A設計成用於的操作。類似地,執行佇列19B耦合在解碼/發佈單元13與對應功能單元20B之間,且執行佇列19C耦合在解碼/發佈單元13與對應功能單元20C之間。在實施例中,執行佇列19D、執行佇列19E耦合在解碼/發佈單元13與載入/發佈單元17之間以處置載入/儲存指令。執行佇列19D、執行佇列19E還可分別稱為標籤執行佇列(Tag-Execution Queue;TEQ)19D和資料執行佇列(Data-Execution Queue;DEQ)19E。
圖6是示出根據一些實施例的執行佇列19的圖。EQ 19可包含用於以將發送到功能單元20的次序來記錄關於從解碼/發佈單元13發佈的指令的資訊的多個條目190(0)到190(Q),其中Q為大於0的整數。在實例中,執行佇列19的每一條目包含在圖6中分別標記為「v」、「ex_ctrl」、「data」以及「rd_cnt」的有效欄位191、執行控制資料欄位193、資料欄位195以及讀取計數欄位197。在其它實施例中,可存在記錄於每一EQ中的更多或更少的欄位,且資料欄位195可具有其它資料而不是立即資料。
有效欄位191指示條目是否有效(例如,有效條目由「1」指示且無效條目由「0」指示)。執行控制資料欄位193和資料欄位195指示功能單元20的執行控制資訊和從指令匯出的指令的立即資料。讀取計數欄位197記錄用於指示指令的讀取時間的讀取計數rd_cnt。儲存於讀取計數欄位197中的讀取時間每一時脈週期向下計數一,直到讀取計數rd_cnt變為零為止。當讀取計數欄位197中的讀取時間為0時,執行佇列19將有效指令分派到功能單元20。
執行佇列19可包含或耦合到用於儲存累積計數值acc_cnt的累積計數器199,所述累積計數值acc_cnt每一時脈週期向下計數一,直到計數器值變為零為止。累積計數零指示EQ 19是空的。累積計數器199的累積計數值acc_cnt指示在未來可將解碼/發佈單元13中的下一指令分派到功能單元20或載入/儲存單元17的時間。解碼/發佈單元13中的下一指令可以根據累積計數器199的累積計數值按到功能單元20或載入/儲存單元17的所調度分派時間發佈到執行佇列19。在一些實施例中,指令的讀取時間就是累積計數值,所以下一指令的累積計數值由當前acc_cnt和當前指令的吞吐時間(inst_xput_time)的總和(acc_cnt = acc_cnt + inst_xput_time)來設置。在一些其它實施例中,讀取時間會被修改(這裡的讀取時間大於當前累積計數),而下一指令的累積計數值則根據此指令的讀取時間(rd_cnt)和該指令的吞吐時間(inst_xput_time)的總和(acc_cnt = rd_cnt + inst_xput_time)來設置。讀取位移器161和寫入位移器163設計成與執行佇列19同步,使得執行佇列19可在根據讀取移位元器161從暫存器組14讀取源暫存器的同時將指令分派到功能單元20或載入/儲存單元17,且根據寫入移位元器163將來自功能單元20或載入/儲存單元17的結果資料寫回到暫存器組14。
參考圖1,載入/儲存單元17耦合到解碼/發佈單元13以處置載入指令和儲存指令。在實施例中,解碼/發佈單元13將載入/儲存指令發佈為包含標籤微操作和資料微操作的兩個微操作(微操作)。將標籤微操作發送到標籤執行佇列(TEQ)19D,且將資料微操作發送到資料執行佇列(DEQ)19E。在一些實施例中,載入/儲存指令的微操作的吞吐時間為1個週期;TEQ 19D和DEQ 19E為獨立處理的載入/儲存操作;並且TEQ 19D必須在DEQ 19E發佈資料操作之前發佈標籤操作。
資料快取記憶體18耦合到記憶體30和載入/儲存單元17,且配置成儲存從記憶體30提取且由載入/儲存單元17存取以用於載入/儲存資料的資料。資料快取記憶體18包含來自記憶體30的連續資料位元組的許多快取記憶體線。資料快取記憶體18的快取記憶體線被組織為類似於指令快取記憶體11的直接映射、完全關聯映射或組關聯映射,但不需要與指令快取記憶體11相同的映射。
資料快取記憶體18可包含標籤陣列(tag array;TA)22和數據陣列(data array;DA)24以用於分別儲存由微處理器10使用的頻繁使用的資料的位址的一部分和資料。類似於指令快取記憶體11,標籤陣列22中的每一標籤對應於資料陣列24中的快取記憶體線。當微處理器10需要執行載入/儲存指令時,微處理器10首先通過將載入/儲存位址與儲存於標籤陣列22中的標籤進行比較來檢查載入/儲存資料在資料快取記憶體18中的存在。如果載入/儲存位址與標籤陣列中的標籤中的一個匹配(快取記憶體命中),那麼針對載入/儲存資料存取資料陣列24中的對應快取記憶體線。在一些實施例中,載入指令從資料陣列24的快取記憶體線提取資料以寫入到暫存器組14的目的地暫存器,而儲存指令將來自暫存器組16的源暫存器的資料寫入到資料陣列24中的快取記憶體線。如果載入/儲存位址不與標籤陣列22中的任何條目匹配,那麼其是快取記憶體未命中,且微處理器10可存取記憶體30以找到資料。在快取記憶體命中的情況下,載入/儲存指令的執行等待時間為已知的(例如,2個、3個、6個或任何數目個時脈週期)。在快取記憶體未命中的情況下,載入/儲存指令的執行等待時間為15個時脈週期或更多。載入指令的執行等待時間取決於快取記憶體命中和記憶體30的等待時間為基本上未知的。
標籤操作包含通過載入/儲存單元17中的位址產生單元(address generation unit,AGU)171計算位址,且使用所計算的位址來存取標籤陣列22和資料轉換後備緩衝器(translation look-aside buffer,TLB)(未繪示)以用於虛擬位址到物理位址轉換。位址計算為來自暫存器組14的源暫存器和來自圖6的資料欄位195的立即資料(「立即資料(imm data)」)的加法操作。圖4的讀取位移器161調度為從暫存器組14讀取源暫存器以與從TEQ 19D到AGU 171的標籤操作的分派匹配。在一些實施例中,虛擬位址和物理位址在不需要資料TLB的情況下是相同的。TEQ 19D將標籤操作分派到載入/儲存單元17的位址產生單元(AGU)171以計算載入/儲存位址。載入/儲存位址用於存取資料快取記憶體18的標籤陣列(TA)22。保持快取記憶體命中/未命中和命中路線(組關聯映射)以便由DEQ 19E存取,其中資料操作存取DA 24中的命中路線的快取記憶體線。對於載入指令,如果與TA 22同時存取DA 24,那麼DA 24中的組關聯映射的所有路線得以讀取。在此實施例中,在TA 22之後的DA 24的串列存取允許讀取DA 24的單個路線,因此DA 24可節省相當大的功率且減少資料庫衝突。
對於載入指令,當快取記憶體命中時,通過寫入位移器的寫入控制從寫回到暫存器組14的目的地暫存器的DA 24中提取資料。對於快取記憶體未命中,將記分板15中的目的地暫存器的狀態改變為未知的,且從記憶體30提取載入資料。來自記憶體30的快取記憶體未命中載入資料通過保留寫入埠寫回到暫存器組14的目的地暫存器。在實施方案中,來自記憶體30的載入資料寫入到資料未命中緩衝器(未繪示),那麼資料未命中緩衝器將寫回到暫存器組14的目的地暫存器且最終將快取記憶體線資料寫入到資料快取記憶體24。
對於儲存指令,當快取記憶體命中時,儲存資料調度為由讀取位移器及時從暫存器組14讀取以寫入到DA 24。對於快取記憶體未命中,將儲存資料發送到載入/儲存單元17中的儲存未命中緩衝器(未繪示)。在儲存指令的常規執行中,可同時從暫存器組14讀取用於標籤位址的源暫存器和用於儲存資料的源暫存器,在此情況下,需要儲存緩衝器來保持儲存資料直到其寫入到DA 24為止。在本發明中,將儲存資料寫入到DA 24的時間(假設快取記憶體命中)是已知的,因此,讀取埠控制調度為「及時(just-in-time)」從暫存器組14讀取用於儲存資料的源暫存器以寫入到DA 24,因此不需要儲存緩衝器。對於快取記憶體未命中,並不從暫存器組14讀取用於儲存資料的源暫存器,直到儲存資料準備好寫入到資料快取記憶體為止,所述資料快取記憶體是源暫存器的「及時」讀取。
對於快取記憶體未命中,載入/儲存單元17可允許到記憶體30的許多待決快取記憶體未命中請求。多個待決未命中請求保持在載入/儲存單元17中的未命中請求佇列(未繪示)中。將新快取記憶體線從記憶體30提取到資料快取記憶體18中的未命中資料緩衝器(未繪示)中。未命中資料緩衝器可由多個快取記憶體線組成。另外,資料快取記憶體18中的替換快取記憶體線可能是髒的,其中髒快取記憶體線必須在來自記憶體30的新快取記憶體線可寫入到資料快取記憶體18中之前寫回到記憶體30。在逐出到記憶體30之前,將髒快取記憶體線從資料快取記憶體18提取到逐出緩衝器中。逐出緩衝器可實施為未命中資料緩衝器的部分。必須通過用於資料的匹配和轉發的後續載入/儲存指令檢查逐出緩衝器、未命中請求佇列以及未命中資料緩衝器。
載入/儲存指令可具有精確異常,其中必須從執行管線捨棄所有後續指令。類似於分支指令,載入/儲存指令之後的所有後續指令無法寫回到暫存器組14,直到載入/儲存指令的執行之後為止。具有快取記憶體未命中的載入/儲存指令可具有資料錯誤異常,所述資料錯誤異常是不精確異常且通過阻止解碼/發佈單元13發佈任何更多指令且在執行管線中的所有指令完成之後而採取。中斷類似於不精確異常,其中通過阻止解碼/發佈單元13發佈任何更多指令且在執行管線中的所有指令完成之後而採取中斷。
圖7A是示出根據一些實施例的執行塊100B和執行塊100C的圖。為簡單起見,執行塊100B還稱為專用於處理向量指令的向量執行塊100B;且執行塊100C還稱為專用於處理FP指令的FP執行塊100B。然而,執行塊100B和執行塊100C中的每一個可配置成處理任何其它類型的指令。執行塊100B和執行塊100C中的每一個可包含與執行塊100A相同的元件。舉例來說,執行塊100B和執行塊100C中的每一個可包含解碼/發佈單元、記分板、讀取/寫入控制單元、暫存器組、執行佇列以及功能單元。執行塊100B和執行塊100C還稱為第一類型發佈單元和第二類型發佈單元。
在一些實施例中,不同類型的指令可由執行塊100B和執行塊100C中的解碼/發佈單元13b和解碼/發佈單元13c並行地解碼。在指令的並行解碼中,解碼/發佈單元13b和解碼/發佈單元13c中的每一個可驗證執行塊100B和執行塊100C中的一個中的指令,且指令一次只能在執行塊100B和執行塊100C中的一個中有效。
在一些實施例中,執行塊100B和執行塊100C中的解碼/發佈單元13b和解碼/發佈單元13c中的每一個在發佈指令之前檢查並解析不同類型的指令的所有可能的衝突。與執行塊100A中相同的機制可用於解析資料相依性並控制執行塊100B和執行塊100C中的讀取/寫入埠。本文中以後接字母的特定附圖標記指代的元件將由單獨附圖標記共同指代。舉例來說,除非指定,執行佇列291A到執行佇列291C將統稱為執行塊100B的執行佇列291,且執行佇列292A到執行佇列292C將統稱為執行塊100C的執行佇列292。因而,下文省略關於解碼/發佈單元13b和解碼/發佈單元13c的詳細描述。
執行塊100B和執行塊100C中的暫存器組14b和暫存器組14c、記分板15b和記分板15c、讀取/寫入控制單元16b和讀取/寫入控制單元16c、執行佇列291和執行佇列292以及功能單元201和功能單元202可類似於執行塊100A中的暫存器組14、記分板15、讀取/寫入控制單元16、執行佇列19以及功能單元20。執行塊100A中的暫存器組14、記分板15、讀取/寫入控制單元16、執行佇列19以及功能單元20用於標量整數指令,而執行塊100B中的暫存器組14b、記分板15b、讀取/寫入控制單元16b、執行佇列291以及功能單元201專用於向量指令,且執行塊100C中的暫存器組14c、記分板15c、讀取/寫入控制單元16c、執行佇列292以及功能單元202專用於FP指令。可從執行塊100A中的對應元件推斷執行塊100B和執行塊100C中的這些元件的結構和功能性,因此下文省略關於執行塊100B和執行塊100C的詳細描述。
在一些實施例中,微處理器100可更包含多工(multiplex,MUX)300和共用功能單元20s,其中共用功能單元20s用於執行塊100B和執行塊100C共用。共用功能單元20s可執行從執行塊100B分派的向量指令和從執行塊100C分派的FP指令。共用功能單元20s可從多工300接收向量指令和FP指令,且執行接收到的指令。在一些實施例中,構造向量執行佇列291C和FP執行佇列292C,使得執行佇列291C或執行佇列292C中的僅一個可通過多工300一次將有效指令發送到共用功能單元20s。換句話說,多工300可一次將向量指令或FP指令中的僅一個提供到共用功能單元20s,且共用功能單元20s一次執行向量指令或FP指令中的僅一個。在一些實施例中,共用功能單元20s經由多工300以及讀取匯流排31b和讀取匯流排31c耦合到執行塊100B和執行塊100C的暫存器組14b和暫存器組14c,且來自共用功能單元20s的結果資料經由結果匯流排32b和結果匯流排32c寫回到暫存器組14b或暫存器組14c。
在一些實施例中,共用功能單元20s可包含配置成執行向量指令的多個元素的多個執行單元200A到執行單元200D。向量指令在兩個方面不同於標量整數指令和FP指令:(1)向量指令對許多元素操作,而標量整數指令或FP指令對單個元素操作,(2)向量指令的許多元素可分組為更小的元素集合,以便作為微操作按循序執行。舉例來說,向量指令可經程式設計以對32個元素執行,所述元素可在硬體中執行為4個元素的8個微操作;其中每一元素為32位元資料。通過圖7A中的執行單元200A到執行單元200D進行4個元素的執行。在一些實施例中,共用功能單元20s的一些功能單元用於VEQ 291C和FPEQ 292C兩者共用;且共用功能單元20s的一些功能單元專用於執行向量指令的多個元素。在實例中,功能單元200D經共用用於執行向量指令和FP指令兩者的元素;且功能單元200A到功能單元200C專用於執行向量指令的一些元素。共用功能單元20s中的共用執行單元的數目在本公開中不受限制。
在實施例中,多工300耦合到執行塊100B的VEQ 291C和執行塊100C的FPEQ 292C,且配置成選擇來自VEQ 291C的向量指令或來自FPEQ 292C的FP指令並將其分派到共用功能單元20s以供執行。在替代實施例中,執行塊100B和執行塊100C包含多個VEQ 291和多個FPEQ 292,且多工300耦合到多個VEQ 291和多個FPEQ 292以選擇來自VEQ 291和FPEQ 292的有效指令且將其提供到共用功能單元20s以供執行。在一些實施例中,VEQ 291C和FPEQ 292C可將指示有效指令(即,向量指令或FP指令)的有效指示提供到多工300。多工300可基於來自VEQ 291C和FPEQ 292C的有效指示而選擇向量指令或FP指令。在一些實施例中,向量指令和FP指令中的僅一個一次是有效的,因此向量指令或FP指令中的僅一個被發送到共用功能單元以供執行。
在一些實施例中,多工300經由讀取匯流排31b和讀取匯流排31c耦合到執行塊100B和執行塊100C的暫存器組14b和暫存器組14c以接收與向量指令和FP指令相關聯的運算元資料。與向量指令或FP指令相關聯的運算元資料可經由多工300發送到共用功能單元20s,如通過從暫存器組讀取匯流排31b和讀取匯流排31c到多工300的連接所繪示。
在一些實施例中,來自暫存器組14b和暫存器組14c的運算元資料與VEQ 291C和FPEQ 292C同步地通過多工300發送到共用功能單元20s。舉例來說,VEQ 291C和FPEQ 292C可在從暫存器組14b和暫存器組14c讀取運算元資料的同時經由多工300將指令分派到共用功能單元20。在一些實施例中,讀取/寫入控制單元16b和讀取/寫入控制單元16c調度指令的讀取時間和寫入時間,使得來自暫存器組14b和暫存器組14c的運算元資料與VEQ 291C和FPEQ 292C的操作同步地發送到共用功能單元20s。因為一次允許VEQ 291C和FPEQ 292C中的僅一個將有效指令發送到共用功能單元20s,所以通過VEQ 291C或FPEQ 292C對多工300的選擇是相互排斥的。
在一些實施例中,執行塊100B包含用於整數、置換、遮罩以及浮點的功能單元,且執行塊100C包含僅用於浮點的功能單元。在一些實施例中,浮點功能單元包含FP乘法累積(FP multiply-accumulate;FP MACC)功能單元、FP除法(FP divide;FP DIV)功能單元、FP雜項(FP miscellaneous;FP MISC)功能單元,其中FP MACC配置成執行FP乘法指令、FP加/減指令以及FP乘法累積指令;FP DIV功能單元配置成執行FP除法指令;以及FP MISC功能單元配置成執行如整數FP轉換、FP比較、FP最小、FP最大指令的其他指令。在一些實施例中,FP MACC功能單元比其它FP功能單元更關鍵,因此專用FP MACC功能單元經設計用於執行塊100B和執行塊100C中的每一個,且其它FP功能單元用於執行塊100B和執行塊100C兩者共用。在實例中,FP MACC功能單元專用於執行執行塊100C的FP指令,且向量FP MACC功能單元專用於執行執行塊100B的向量FP指令。在一些替代實施例中,執行塊100B具有多個向量FP MACC功能單元,其中一個向量FP MACC功能單元與執行塊100C共用而另一向量FP MACC功能單元專用於執行塊100B。
圖7B示出根據一些實施例的執行塊100B和執行塊100C的圖。圖7A中所示出的圖與圖7B中所示出的圖之間的差異在於,圖7B示出共用執行佇列19s和多工330而不是多工300。共用執行佇列19s耦合到執行塊100B和執行塊100C的解碼/發佈單元13b和解碼/發佈單元13c,且配置成接收由解碼/發佈單元13b分派的向量指令或由解碼/發佈單元13c分派的FP指令。在一些實施例中,構造解碼/發佈單元13b和解碼/發佈單元13c,使得解碼/發佈單元13b和解碼/發佈單元13c中的僅一個可將有效指令發送到共用執行佇列19s。換句話說,一次將向量指令或FP指令中的僅一個寫入到共用執行佇列19s中的多個條目當中的一個條目。在另一實施例中,如果來自執行塊100B和執行塊100C的指令是到共用功能單元20s的,那麼解碼/發佈單元13b和解碼/發佈單元13c具有停止機制,所述停止機制可基於指令的序列停止解碼/發佈單元13b和解碼/發佈單元13c中的一個。在另一實施例中,向量指令和FP指令使用指令次序優先順序以允許解碼/發佈單元13b或解碼/發佈單元13c一次僅將1個指令分派到共用執行佇列19s。然而,在另一實施例中,解碼/發佈單元13b和解碼/發佈單元13c可同時將向量指令和FP指令兩者分派到共用執行佇列19s,且通過共用執行佇列19s中的指令次序將所述指令寫入到2個條目。來自暫存器組14b和暫存器組14c的暫存器運算元資料分別通過讀取/寫入控制單元16b和讀取/寫入控制單元16c與共用執行佇列19s同步,以將資料發送到多工330以用於由共用功能單元20s執行。換句話說,多工330與待由共用執行佇列19s發佈的向量指令同步地從暫存器組14b選擇暫存器運算元資料,或多工330與待由共用執行佇列19s發佈的FP指令同步地從暫存器組14c選擇暫存器運算元資料。舉例來說,共用執行佇列19s可在從暫存器組14b或暫存器組14c讀取運算元資料的同時將指令分派到共用功能單元20s。讀取/寫入控制單元16b和讀取/寫入控制單元16c可調度指令的讀取時間和寫入時間,使得來自暫存器組14b和暫存器組14c的運算元資料與共用執行佇列19s的操作同步地發送到共用功能單元20s。
共用執行佇列19s可包含如圖6中所繪示的EQ 19的多個欄位。本公開的一些實施例可使用比圖6中所示出的欄位更多、更少或不同的共用執行佇列19s的欄位。在實施例中,共用執行佇列19s具有標籤位元欄位(未繪示),所述標籤位元欄位記錄共用執行佇列19s的每個條目的標籤位元以指示記錄於共用執行佇列19s的每一條目中的指令的指令類型(例如,向量或FP)。記錄於共用執行佇列19s中的標籤位元可用於從執行塊100B或執行塊100C的暫存器組14b和暫存器組14c選擇運算元資料。舉例來說,當共用執行佇列19s的條目中的標籤位元指示所記錄指令為向量指令時,從執行塊100B的暫存器組14b中選出與向量指令相關聯的運算元資料。儲存在共用執行佇列19s中的向量指令和FP指令可以分派次序分派到共用功能單元20s。可根據記錄於功能單元20s的讀取計數欄位197(即,圖6中所繪示的執行佇列10的讀取計數欄位197)中的讀取計數值來確定共用功能單元20s的分派次序。
圖8示出根據一些實施例的VEQ 291的圖。VEQ 291可包含多個條目190(0)到190(Q),其中VEQ 291的每一條目配置成記錄關於一個向量指令的資訊。在一些實施例中,VEQ 291的每一條目包含可與圖6中所繪示的EQ 19的欄位相同或不同的多個欄位。舉例來說,圖8中所繪示的VEQ 291中的有效欄位191、執行控制資料欄位193、資料欄位195以及讀取計數欄位197與圖6中所繪示的EQ 19中的對應欄位相同。另外,圖8中所繪示的累積輸送量計數器199與圖6中所繪示的累積輸送量計數器199相同。省略關於圖8中的VEQ 291和圖6中的執行佇列19的相同元件的詳細描述。
VEQ 291可更包含微操作計數欄位192和輸送量計數欄位(xput_cnt)194,其中微操作計數欄位192表示向量指令中的多個微操作。舉例來說,條目190(0)和190(2)中的向量指令具有4個微操作;且條目190(1)中的向量指令具有8個微操作。輸送量計數欄位194配置成表示向量指令中的每一微操作的吞吐時間(例如,多個時脈週期)。
在一些實施例中,VEQ 291包含或耦合到微操作計數器303以用於跟蹤所執行的微操作的數目。微操作計數器303可接收第一條目190(0)的微操作計數欄位192的值,且針對分派到功能單元201或功能單元20s的每一微操作將所述值遞減一。在一些實施例中,在可通過復位有效欄位191而使對應條目無效之前,微操作計數器303將微操作計數欄位192的值遞減到0。在實例中,第一條目190(0)中的向量指令具有吞吐時間為1個時脈週期的4個微操作。因而,微操作計數欄位192的值每一時脈週期遞減一。具有1個時脈週期的輸送量等待時間的微操作的輸送量計數欄位194被設置為「0」。輸送量計數欄位194中的吞吐時間總是比實際吞吐時間小1。
在一些實施例中,VEQ 291更包含用於跟蹤分派到功能單元201或功能單元20s的微操作的吞吐時間的輸送量計數器305。輸送量計數器305可從第一條目190(0)接收對應於第一微操作的輸送量計數欄位194的值,且每一時脈週期將所述值遞減一,直到對應於第一微操作的輸送量計數欄位194的值達到0為止。當對應於第一微操作的輸送量計數欄位194的值達到0時,輸送量計數器305被重新載入有對應於下一微操作的輸送量計數欄位194的值,且如果mop計數欄位192大於1,那麼重複向下計數過程。在一些實施例中,VEQ 291的條目的有效欄位191保持有效,直到微操作計數器303和輸送量計數器305的值都達到0為止。
在一些實施例中,執行塊100C的FPEQ 292可具有與圖6中所示出的執行塊100A的執行佇列19大體上相同的結構。因此,下文省略關於執行塊100C的FPEQ 292的詳細描述。
參考圖9,根據一些實施例示出用於在微處理器中發佈不同類型的指令的過程。圖9中所示出的微處理器可包含向量累積輸送量計數器199b和FP累積輸送量計數器199c,其中向量累積輸送量計數器199b用於跟蹤VEQ 291、VEQ 291C中的有效條目的累積輸送量計數,且FP累積輸送量計數器199c用於跟蹤FPEQ 292、FPEQ 292C中的有效條目的累積輸送量計數。
圖9中所示出的微處理器更包含耦合到向量累積輸送量計數器199b和FP累積輸送量計數器199c的多工MUX 302_1和多工MUX 302_2。多工MUX 302_1配置成選擇向量累積輸送量計數器199b或FP累積輸送量計數器199c作為圖8的欄位197中的讀取時間(或讀取計數rd_cnt)以將向量指令發佈到VEQ 291C。多工MUX 302_2配置成選擇向量累積輸送量計數器199b或FP累積輸送量計數器199c作為圖8的欄位197中的讀取計數rd_cnt以將標量FP指令發佈到FPEQ 292C。在一些實施例中,多工MUX 302_1和多工MUX 302_2基於向量活動位v_active和FP活動位f_active進行選擇。舉例來說,多工MUX 302_1和多工MUX 302_2選擇向量累積輸送量計數器199b以用於在設置向量活動位v_active且清除FP活動位元f_active時發佈指令;且多工MUX 302_1和多工MUX 302_2選擇FP累積輸送量計數器199c以用於在清除向量活動位v_active且設置FP活動位元f_active時發佈指令。在一些實施例中,待發佈的最後一個指令類型設置活動位元。舉例來說,當待發佈的最後一個指令為向量指令時,設置活動位元v_active;且當待發佈的最後一個指令為FP指令時,設置活動位元f_active。在另一實施例中,如果向量指令和FP指令兩者同時有效且向量指令具有比FP指令更高的優先順序,那麼向量指令的讀取時間遵循如上文所描述的程序,而FP指令的讀取時間為該向量指令的吞吐時間與讀取時間的總和。向量指令和FP指令兩者可同時分別發佈到執行佇列291C和執行佇列292C。在一些實施例中,向量累積輸送量計數器199b、多工MUX 302_1以及VEQ 291包含於圖1中所繪示的執行塊100B中;且FP累積輸送量計數器199c,多工MUX 302_2以及FPEQ 290C包含於圖1中所繪示的執行塊100C中。
在實施例中,圖7B中的共用執行佇列19s包含跟蹤共用執行佇列19s的有效條目的累積輸送量計數的單個累積輸送量計數器(未繪示)。參考圖7B和圖9,單個累積輸送量計數器可表示為圖9中所繪示的累積輸送量計數器199b和累積輸送量計數器199c的組合。在此實施例中,根據記錄於共用執行佇列19s中的指令的指令次序來更新單個累積輸送量計數器。舉例來說,可根據由共用執行佇列19s的指令次序指示的最後一個指令來更新單個累積輸送量計數器。如上文所提及,如果同時將向量指令和FP指令兩者發佈到圖7B中的共用佇列19s,那麼根據共用執行佇列19s的指令次序將向量指令和FP指令記錄於兩個條目中。向量指令和FP指令的指令優先順序可確定向量指令和FP指令同時發佈到共用執行佇列19s的指令次序。單個累積輸送量計數器的值用作共用執行佇列19s中的所記錄指令的讀取時間(或圖6的欄位197中的讀取計數rd_cnt)。
圖10示出根據一些實施例的用於基於活動位v_active和活動位元f_active將指令發佈到共用功能單元的流程圖。假設一個有效指令發送到圖1中的執行塊100B和執行塊100C中的解碼/發佈單元。執行塊100B和執行塊100C設計成使得執行塊100B和執行塊100C中的僅一個對如在塊501中所提及的有效指令進行解碼。在塊501中,如果有效指令inst被確定為向量指令v_inst,那麼執行塊100B用以發佈有效指令。塊502確定FP活動位f_active是否被設置或被清除。如果FP活動位f_active被清除(f_active=0),那麼在塊503b中,執行塊100B的向量累積輸送量計數器199b用以將向量指令v_inst發佈到向量執行佇列(即,圖8中的VEQ 291),且將對應於所發佈指令的讀取計數值(即,圖8中的欄位197中的讀取計數rd_cnt)設置為向量累積輸送量計數器199b的值(v_acc_cnt)。否則,如果FP活動位f_active被設置(f_active=1),那麼在塊503c中,執行塊100C的FP累積輸送量計數器199c用以將向量指令v_inst發佈到向量執行佇列(即,圖8中的VEQ 291),且將對應於所發佈指令的讀取計數值(即,圖8中的欄位197中的讀取計數rd_cnt)設置為FP累積輸送量計數器199c的值(f_acc_cnt)。這裡要更進一步指出,只要向量指令v_inst的讀取時間等於或大於塊502選擇的累積時間(即,向量累積輸送量計數器199b或FP累積輸送量計數器199c的值),即可將向量指令v_inst發佈到向量執行佇列(即,圖8中的VEQ 291),且將所選擇的累積時間設置為向量指令讀取時間(即,圖8中的欄位197中的讀取計數rd_cnt的值)和所發佈向量指令的吞吐時間之總和。因為向量源暫存器和/或目的地暫存器的讀取/寫入埠衝突或資料相依性,向量指令的讀取時間可能會大於所選擇的累積時間。
返回到塊501,如果有效指令inst被確定為FP指令f_inst,那麼執行塊100C用以發佈有效指令。塊510確定向量活動位v_active是否被設置或被清除。如果向量活動位v_active被清除(v_active=0),那麼在塊511c中,執行塊100C的FP累積輸送量計數器199c用以將FP指令f_inst發佈到FP執行佇列(即,圖8中的FPEQ 291和圖6中的EQ 19),且對應於所發佈指令的讀取計數值(即,圖6中的欄位197中的讀取計數rd_cnt)為FP累積輸送量計數器199c的值(f_acc_cnt)。否則,如果向量活動位v_active被設置(v_active=1),那麼在塊511b中,執行塊100B的向量累積輸送量計數器199b用以將FP指令f_inst發佈到FP執行佇列(即,圖8中的FPEQ 291或圖6中的EQ 19),且將對應於所發佈指令的讀取計數值(即,圖6中的欄位197中的讀取計數rd_cnt)設置為向量累積輸送量計數器199b的值(v_acc_cnt)。這裡要更進一步指出,只要FP指令f_inst的讀取時間等於或大於塊510選擇的累積時間(即,向量累積輸送量計數器199b或FP累積輸送量計數器199c的值),即可將FP指令f_inst發佈到FP執行佇列(即,圖8中的FPEQ 291),且將所選擇的FP累積時間設置為FP指令讀取時間(即,圖6中的欄位197中的讀取計數rd_cnt的值)和所發佈FP指令的吞吐時間之總和。因為FP源暫存器和/或目的地暫存器的讀取/寫入埠衝突或資料相依性,FP指令的讀取時間可能會大於所選擇的累積時間。
根據實施例中的一個,公開一種包含共用功能單元、第一執行佇列、第二執行佇列、第一類型發佈單元以及第二類型發佈單元的微處理器。第一執行佇列包含多個條目,其中第一執行佇列的每一條目記錄第一類型指令,第一執行佇列的每一條目包含對應於第一類型指令的第一計數值,第一計數值遞減直到第一計數值達到0為止。當對應於第一類型指令的第一計數值達到0時,第一執行佇列將第一類型指令分派到共用功能單元。第二執行佇列包含多個條目,其中第二執行佇列的每一條目記錄第二類型指令,第二執行佇列的每一條目包含對應於第二類型指令的第二計數值,第二計數值遞減直到第二計數值達到0為止。當對應於第二類型指令的第二計數值達到0時,第二執行佇列將第二類型指令分派到共用功能單元。共用功能單元執行第一類型指令和第二類型指令。暫存器組的資料的讀取和寫入被預設為針對第一類型指令或第二類型指令在共用功能單元的未來的確切執行時間同步。與現有技術一樣,不需要動態衝突解析,不需要動態資料相依性解析以及不需要動態讀取/寫入埠解析。動態解析是微處理器設計中的最多功率消耗。微處理器配置成將來自第一執行佇列的第一類型指令和來自第二執行佇列的第二類型指令相互分派到共用功能單元。第一類型發佈單元將第一類型指令發佈到第一執行佇列,調度第一類型指令的讀取時間和寫入時間,且設置記錄於第一執行佇列的每一條目中的第一計數值。第二類型發佈單元將第二類型指令發佈到第二執行佇列,調度第二類型指令的讀取時間和寫入時間,且設置記錄於第二執行佇列的每一條目中的第二計數值。
根據實施例中的一個,介紹一種適用於第一執行佇列、第二執行佇列、共用功能單元、第一類型發佈單元以及第二類型發佈單元的方法。方法包括以下步驟:由第一類型發佈單元將第一類型指令發佈到第一執行佇列;由第一類型發佈單元調度第一類型指令的讀取時間和寫入時間;由第一類型發佈單元設置記錄於第一執行佇列的每一條目中的第一計數值,其中第一計數值遞減直到第一計數值達到0為止;回應於確定包含於第一執行佇列的條目中的第一計數值達到0,由第一執行佇列將記錄於第一執行佇列的條目中的第一類型指令分派到共用功能單元;由第二類型發佈單元將第二類型指令發佈到第二執行佇列;由第二類型發佈單元調度第二類型指令的讀取時間和寫入時間;由第二類型發佈單元設置記錄於第二執行佇列的每一條目中的第二計數值,其中第二計數值遞減直到第二計數值達到0為止;回應於確定包含於第二執行佇列的條目中的第二計數值達到0,由第二執行佇列將記錄於第二執行佇列的條目中的第二類型指令分派到共用功能單元;以及由共用功能單元執行第一類型指令和第二類型指令。來自第一執行佇列的第一類型指令和來自第二執行佇列的第二類型指令相互分派到共用功能單元。
根據實施例中的一個,提供一種包含記憶體和微處理器的資料處理系統。記憶體配置成儲存第一類型指令和第二類型指令。微處理器包含共用功能單元、第一執行佇列、第二執行佇列、第一類型發佈單元以及第二類型發佈單元。第一執行佇列包含多個條目,其中第一執行佇列的每一條目記錄第一類型指令,第一執行佇列的每一條目包含對應於第一類型指令的第一計數值,第一計數值遞減直到第一計數值達到0為止。當對應於第一類型指令的第一計數值達到0時,第一執行佇列將第一類型指令分派到共用功能單元。第二執行佇列包含多個條目,其中第二執行佇列的每一條目記錄第二類型指令,第二執行佇列的每一條目包含對應於第二類型指令的第二計數值,第二計數值遞減直到第二計數值達到0為止。當對應於第二類型指令的第二計數值達到0時,第二執行佇列將第二類型指令分派到共用功能單元。共用功能單元執行第一類型指令和第二類型指令,其中來自第一執行佇列的第一類型指令和來自第二執行佇列的第二類型指令相互分派到共用功能單元。第一類型發佈單元將第一類型指令發佈到第一執行佇列,調度第一類型指令的讀取時間和寫入時間,且設置記錄於第一執行佇列的每一條目中的第一計數值。第二類型發佈單元將第二類型指令發佈到第二執行佇列,調度第二類型指令的讀取時間和寫入時間,且設置記錄於第二執行佇列的每一條目中的第二計數值。
前文已概述了若干實施例的特徵以使得本領域的技術人員可更好地理解以下詳細描述。本領域的技術人員應瞭解,其可容易地將本公開用作設計或修改用於進行本文中所引入的實施例的相同目的和/或實現相同優勢的其它製程和結構的基礎。本領域的技術人員還應認識到,這種等效構造並不脫離本公開的精神和範圍,且其可在不脫離本公開的精神和範圍的情況下在本文中進行各種改變、替代以及更改。
1:資料處理系統 10:微處理器 100、100A、100B、100C:執行塊 11:指令快取記憶體 12:分支預測單元 13、13b、13c:解碼/發佈單元 14、14b、14c:暫存器組 15、15b、15c:記分板 150(0)、150(N)、190(0)、190(1)、190(2)、190(Q)、1510(0) 、1510(N)、1610(1)、1610(M)、1630(1)、1630(P):條目 151:第一記分板 1511、1521:未知欄位 152:第二記分板 1520(0)、1520(N):記分板條目 1531、1523:計數欄位 1551:功能單元欄位 16、16b、16c:讀取/寫入控制單元 161:讀取位移器/移位暫存器 1611、1611(X):讀取有效欄位/有效位 1613:位址欄位/暫存器位址 163:寫入位移器 1631、1631(Y):寫回有效欄位/有效位 1633:寫入位址欄位/暫存器位址 1635:功能單元欄位 17:載入/儲存單元 171:位址產生單元 18:資料快取記憶體 19、19A、19B、19C、19D、19E、291A、291B、291C、292A、292B、292C:執行佇列 19s:共用執行佇列 191:有效欄位 192:微操作計數欄位 193:執行控制資料欄位 194:輸送量計數欄位 195:資料欄位 197:讀取計數欄位 199:累積計數器 199b:向量累積輸送量計數器 199c:FP累積輸送量計數器 20、20A、20B、20C、201、201A、201B、202A、202B:功能單元 20s:共用功能單元 200A、200B、200C、200D:執行單元 22:標籤陣列 24:資料陣列/資料快取記憶體 30:記憶體 300、302_1、302_2、330:多工 303:微操作計數器 305:輸送量計數器 31、31b、31c:讀取匯流排 32、32b、32c:結果匯流排 501、502、503b、503c、510、511b、511c:塊 f_active:FP活動位 f_inst:FP指令 inst:有效指令 R(0)、R(N):暫存器 rd_cnt:讀取計數 v_active:向量活動位 v_inst:向量指令
當結合隨附圖式閱讀時從以下詳細描述最好地理解本公開的各方面。應注意,根據業界中的標準慣例,各種特徵未按比例繪製。實際上,為了論述清楚起見,可任意增大或減小各種特徵的尺寸。 圖1是示出根據一些實施例的資料處理系統的框圖。 圖2是示出根據一些實施例的記分板和暫存器組的圖。 圖3A到圖3B是示出根據一些實施例的記分板條目的各種結構的圖。 圖4是示出根據一些實施例的與暫存器組的讀取埠相關聯的讀取位移器的圖。 圖5是示出根據一些實施例的與暫存器組的寫入埠相關聯的寫入位移器的圖。 圖6是示出根據一些實施例的執行佇列的圖。 圖7A到圖7B是示出根據一些實施例的微處理器的各種結構的圖。 圖8是示出根據一些實施例的執行佇列的圖。 圖9是示出根據一些實施例的發佈指令的過程的流程圖。 圖10是示出根據一些實施例的適用於微處理器的方法的流程圖。
13b、13c:解碼/發佈單元
14b、14c:暫存器組
15b、15c:記分板
16b、16c:讀取/寫入控制單元
100B、100C:執行塊
20s:共用功能單元
200A、200B、200C、200D:執行單元
201A、201B、202A、202B:功能單元
291A、291B、291C、292A、292B、292C:執行佇列
300:多工
31b、31c:讀取匯流排
32b、32c:結果匯流排

Claims (20)

  1. 一種微處理器,包括: 第一執行佇列,包括多個條目,其中所述第一執行佇列的每一條目記錄第一類型指令,所述第一執行佇列的每一條目包括對應於所述第一類型指令的第一計數值,所述第一計數值遞減直到所述第一計數值達到0為止,且當對應於所述第一類型指令的所述第一計數值達到0時,所述第一執行佇列將所述第一類型指令分派到共用功能單元; 第二執行佇列,包括多個條目,其中所述第二執行佇列的每一條目記錄第二類型指令,所述第二執行佇列的每一條目包括對應於所述第二類型指令的第二計數值,所述第二計數值遞減直到所述第二計數值達到0為止,且當對應於所述第二類型指令的所述第二計數值達到0時,所述第二執行佇列將所述第二類型指令分派到所述共用功能單元; 共用功能單元,執行第一類型指令和第二類型指令,其中來自所述第一執行佇列的所述第一類型指令和來自所述第二執行佇列的所述第二類型指令相互排斥地分派到所述共用功能單元; 第一類型發佈單元,將所述第一類型指令發佈到所述第一執行佇列,調度所述第一類型指令的讀取時間和寫入時間,且設置記錄於所述第一執行佇列的每一條目中的所述第一計數值;以及 第二類型發佈單元,將所述第二類型指令發佈到所述第二執行佇列,調度所述第二類型指令的讀取時間和寫入時間,且設置記錄於所述第二執行佇列的每一條目中的所述第二計數值。
  2. 如請求項1所述的微處理器,其中 所述第一執行佇列的每一條目中的所述第一計數值表示所述第一類型指令的所述讀取時間, 所述第一執行佇列的每一條目中的所述第一計數值每一時脈週期遞減一,直到所述第一計數值達到0為止,以及 當對應於所述第一類型指令的所述第一計數值達到0時,將記錄於所述第一執行佇列中的所述第一類型指令分派到所述共用功能單元。
  3. 如請求項1所述的微處理器,其中 所述第一類型發佈單元包括第一類型解碼/發佈單元、第一類型暫存器組、第一類型記分板、用於所述第一類型暫存器組的第一類型讀取/寫入控制單元以及所述第一執行佇列,以及 所述第二類型發佈單元包括第二類型解碼/發佈單元、第二類型暫存器組、第二類型記分板、用於所述第二類型暫存器組的第二類型讀取/寫入控制單元以及所述第二執行佇列。
  4. 如請求項3所述的微處理器,其中 所述第一類型發佈單元與所述共用功能單元中所述第一類型指令的執行同步地調度所述第一類型指令的所述讀取時間以從所述第一類型暫存器組讀取所述第一類型指令的運算元資料,且調度所述第一類型指令的所述寫入時間以將結果資料從所述共用功能單元寫入到所述第一類型暫存器, 所述第二類型發佈單元與所述共用功能單元中所述第二類型指令的執行同步地調度所述第二類型指令的所述讀取時間以從所述第二類型暫存器組讀取所述第二類型指令的運算元資料,且調度所述第二類型指令的所述寫入時間以將結果資料從所述共用功能單元寫入到所述第二類型暫存器, 所述第一類型發佈單元解析所述第一類型指令的資料相依性和資源衝突以設置記錄於所述第一執行佇列的每一條目中的所述第一計數值,以及 所述第二類型發佈單元解析所述第二類型指令的資料相依性和資源衝突以設置記錄於所述第二執行佇列的每一條目中的所述第二計數值。
  5. 如請求項3所述的微處理器,更包括: 第一多工,耦合到所述第一執行佇列、所述第二執行佇列以及所述共用功能單元,配置成將來自所述第一執行佇列的所述第一類型指令或來自所述第二執行佇列的所述第二類型指令相互排斥地分派到所述共用功能單元,其中 所述第一多工分別通過第一讀取匯流排和第二讀取匯流排進一步耦合到所述第一類型暫存器組和所述第二類型暫存器組,且所述第一多工將來自所述第一類型暫存器組的運算元資料或來自所述第二類型暫存器組的運算元資料相互排斥地分派到所述共用功能單元。
  6. 如請求項5所述的微處理器,其中 所述第一執行佇列更包括每一時脈週期遞減一的第一累積輸送量計數器,所述第一累積輸送量計數器表示所述第一類型發佈單元在哪個時脈週期內允許將下一第一類型指令發佈到所述第一執行佇列,以及 所述第二執行佇列更包括每一時脈週期遞減一的第二累積輸送量計數器,所述第二累積輸送量計數器表示所述第二類型發佈單元在哪個時脈週期內允許將下一第二類型指令發佈到所述第二執行佇列。
  7. 如請求項6所述的微處理器,其中 所述第一類型發佈單元,基於所述第一執行佇列的第一活動位元和所述第二執行佇列的第二活動位元,使用所述第一累積輸送量計數器或所述第二累積輸送量計數器將所述第一類型指令發佈到所述第一執行佇列作為所發佈的第一類型指令的讀取時間;以及 所述第二類型發佈單元,基於所述第一執行佇列的所述第一活動位和所述第二執行佇列的所述第二活動位,使用所述第一累積輸送量計數器或所述第二累積輸送量計數器將所述第二類型指令發佈到所述第二執行佇列作為所發佈的第二類型指令的讀取時間,其中 當所述第一解碼/發佈單元發佈所述第一類型指令時,設置所述第一活動位, 當所述第二解碼/發佈單元發佈所述第二類型指令時,清除所述第一活動位, 當所述第一累積輸送量計數器為零時,清除所述第一活動位, 當所述第二解碼/發佈單元發佈所述第二類型指令時,設置所述第二活動位, 當所述第一解碼/發佈單元發佈所述第一類型指令時,清除所述第二活動位,以及 當所述第二累積輸送量計數器為零時,清除所述第二活動位。
  8. 如請求項3所述的微處理器,更包括: 共用執行佇列,用於所述第一類型發佈單元和所述第二類型發佈單元共用,接收所述第一類型指令和所述第二類型指令,且將所述第一類型指令和所述第二類型指令記錄到所述共用執行佇列的條目中,且依次分派記錄於所述共用執行佇列的條目中的所述第一類型指令和所述第二類型指令;以及 第二多工,分別通過第一讀取匯流排和第二讀取匯流排耦合到所述第一類型暫存器組和所述第二類型暫存器組,通過第一讀取匯流排接收所述第一類型指令的運算元資料或通過第二讀取匯流排接收所述第二類型指令的運算元資料,且將所述第一類型指令的所述運算元資料和所述第二類型指令的所述運算元資料相互排斥地分派到所述共用功能單元, 其中所述第二多工與所述共用執行佇列對所述第一類型指令和所述第二類型指令的分派同步地分派所述第一類型指令的所述運算元資料和所述第二類型指令的所述運算元資料。
  9. 如請求項8所述的微處理器,其中 所述共用執行佇列包含跟蹤所述共用執行佇列的有效條目的累積輸送量計數的累積輸送量計數器, 根據將從所述第一類型發佈單元或所述第二類型發佈單元發佈到所述共用執行佇列的最後一個指令來更新所述累積輸送量計數器,以及 所述累積輸送量計數器每一時脈週期遞減一,所述累積輸送量計數器表示所述發佈單元在哪個時脈週期內允許將下一指令發佈到所述共用執行佇列。
  10. 如請求項1所述的微處理器,更包括: 未共用功能單元,具有與所述共用功能單元相同的功能性,其中所述未共用功能單元專用於執行所述第一類型指令或所述第二類型指令。
  11. 如請求項1所述的微處理器,其中所述共用功能單元包括: 第一執行單元,經共用用於執行所述第一類型指令和所述第二類型指令;以及 第二執行單元,專用於執行所述第一類型指令或所述第二類型指令。
  12. 一種適用於微處理器的方法,所述微處理器包括第一執行佇列、第二執行佇列、共用功能單元、第一類型發佈單元以及第二類型發佈單元,所述方法包括: 由所述第一類型發佈單元將第一類型指令發佈到所述第一執行佇列; 由所述第一類型發佈單元調度所述第一類型指令的讀取時間和寫入時間; 由所述第一類型發佈單元設置記錄於所述第一執行佇列的每一條目中的第一計數值,其中所述第一計數值遞減直到所述第一計數值達到0為止; 回應於確定包含於所述第一執行佇列的所述條目中的所述第一計數值達到0,由所述第一執行佇列將記錄於所述第一執行佇列的條目中的所述第一類型指令分派到所述共用功能單元; 由所述第二類型發佈單元將第二類型指令發佈到所述第二執行佇列; 由所述第二類型發佈單元調度所述第二類型指令的讀取時間和寫入時間; 由所述第二類型發佈單元設置記錄於所述第二執行佇列的每一條目中的第二計數值,其中所述第二計數值遞減直到所述第二計數值達到0為止; 回應於確定包含於所述第二執行佇列的所述條目中的第二計數值達到0,由所述第二執行佇列將記錄於所述第二執行佇列的條目中的所述第二類型指令分派到所述共用功能單元;以及 由所述共用功能單元執行所述第一類型指令和所述第二類型指令,其中來自所述第一執行佇列的所述第一類型指令和來自所述第二執行佇列的所述第二類型指令相互排斥地分派到所述共用功能單元。
  13. 如請求項12所述的方法,其中 所述第一執行佇列中的每一個中的所述第一計數值表示所述第一類型指令的所述讀取時間, 所述第一執行佇列的每一條目中的所述第一計數值每一時脈週期遞減一,直到所述第一計數值達到0為止,以及 當對應於所述第一類型指令的所述第一計數值達到0時,將記錄於所述第一執行佇列中的所述第一類型指令分派到所述共用功能單元。
  14. 如請求項12所述的方法,其中 所述第一類型發佈單元包括第一類型解碼/發佈單元、第一類型暫存器組、第一類型記分板、用於所述第一類型暫存器組的第一類型讀取/寫入控制單元以及所述第一執行佇列,以及 所述第二類型發佈單元包括第二類型解碼/發佈單元、第二類型暫存器組、第二類型記分板、用於所述第二類型暫存器組的第二類型讀取/寫入控制單元以及所述第二執行佇列。
  15. 如請求項14所述的方法,其中 所述第一類型發佈單元與所述共用功能單元中所述第一類型指令的執行同步地調度所述第一類型指令的所述讀取時間以從所述第一類型暫存器組讀取所述第一類型指令的運算元資料,且調度所述第一類型指令的所述寫入時間以將結果資料從所述共用功能單元寫入到所述第一類型暫存器, 所述第二類型發佈單元與所述共用功能單元中所述第二類型指令的執行同步地調度所述第二類型指令的所述讀取時間以從所述第二類型暫存器組讀取所述第二類型指令的運算元資料,且調度所述第二類型指令的所述寫入時間以將結果資料從所述共用功能單元寫入到所述第二類型暫存器, 所述第一類型發佈單元解析所述第一類型指令的資料相依性和資源衝突以設置記錄於所述第一執行佇列的每一條目中的所述第一計數值,以及 所述第二類型發佈單元解析所述第二類型指令的資料相依性和資源衝突以設置記錄於所述第二執行佇列的每一條目中的所述第二計數值。
  16. 如請求項14所述的方法,其中 所述第一執行佇列更包括每一時脈週期遞減一的第一累積輸送量計數器,所述第一累積輸送量計數器表示所述第一類型發佈單元在哪個時脈週期內允許將下一第一類型指令發佈到所述第一執行佇列,以及 所述第二執行佇列更包括每一時脈週期遞減一的第二累積輸送量計數器,所述第二累積輸送量計數器表示所述第二類型發佈單元在哪個時脈週期內允許將下一第二類型指令發佈到所述第二執行佇列, 所述第一類型發佈單元基於所述第一類型執行佇列的第一活動位元和第二類型執行佇列的第二活動位元,使用所述第一累積輸送量計數器或所述第二累積輸送量計數器將所述第一類型指令發佈到所述第一類型執行佇列作為所發佈的第一類型指令的讀取時間;以及 所述第二類型發佈單元基於所述第一類型執行佇列的所述第一活動位和所述第二類型執行佇列的所述第二活動位,使用所述第一累積輸送量計數器或所述第二累積輸送量計數器將所述第二類型指令發佈到所述第二類型執行佇列作為所發佈的第二類型指令的讀取時間,其中 當所述第一解碼/發佈單元發佈所述第一類型指令時,設置所述第一活動位, 當所述第二解碼/發佈單元發佈所述第二類型指令時,清除所述第一活動位, 當所述第一累積輸送量計數器為零時,清除所述第一活動位, 當所述第二解碼/發佈單元發佈所述第二類型指令時,設置所述第二活動位, 當所述第一解碼/發佈單元發佈所述第一類型指令時,清除所述第二活動位,以及 當所述第二累積輸送量計數器為零時,清除所述第二活動位。
  17. 如請求項14所述的方法,其中所述微處理器更包括: 第一多工,耦合到所述第一執行佇列、所述第二執行佇列以及所述共用功能單元,配置成將來自所述第一執行佇列的所述第一類型指令或來自所述第二執行佇列的所述第二類型指令相互排斥地分派到所述共用功能單元,其中 所述第一多工分別通過第一讀取匯流排和第二讀取匯流排進一步耦合到所述第一類型暫存器組和所述第二類型暫存器組,且所述第一多工將來自所述第一類型暫存器組的運算元資料或來自所述第二類型暫存器組的運算元資料相互排斥地分派到所述共用功能單元。
  18. 如請求項14所述的方法,其中所述微處理器更包括: 共用執行佇列,用於所述第一類型發佈單元和所述第二類型發佈單元共用,從所述第二多工接收所述第一類型指令和所述第二類型指令,且將所述第一類型指令和所述第二類型指令記錄到所述共用執行佇列的條目中,且依次分派記錄於所述共用執行佇列的條目中的所述第一類型指令和所述第二類型指令;以及 第二多工,分別通過第一讀取匯流排和第二讀取匯流排耦合到所述第一類型暫存器組和所述第二類型暫存器組,通過第一讀取匯流排接收所述第一類型指令的運算元資料或通過第二讀取匯流排接收所述第二類型指令的運算元資料,且將所述第一類型指令的所述運算元資料和所述第二類型指令的所述運算元資料相互排斥地分派到所述共用功能單元, 其中所述第二多工與所述共用執行佇列對所述第一類型指令和所述第二類型指令的分派同步地分派所述第一類型指令的所述運算元資料和所述第二類型指令的所述運算元資料。
  19. 如請求項18所述的方法,其中 所述共用執行佇列包含跟蹤所述共用執行佇列的有效條目的累積輸送量計數的累積輸送量計數器,以及 根據將從所述第一類型發佈單元或所述第二類型發佈單元發佈到所述共用執行佇列的最後一個指令來更新所述累積輸送量計數器,以及 所述累積輸送量計數器每一時脈週期遞減一,所述累積輸送量計數器表示所述發佈單元在哪個時脈週期內允許將下一指令發佈到所述共用執行佇列。
  20. 一種資料處理系統,包括: 記憶體,配置成儲存第一類型指令和第二類型指令;以及 微處理器,包括: 第一執行佇列,包括多個條目,其中所述第一執行佇列的每一條目記錄第一類型指令,所述第一執行佇列的每一條目包括對應於所述第一類型指令的第一計數值,所述第一計數值遞減直到所述第一計數值達到0為止,且當對應於所述第一類型指令的所述第一計數值達到0時,所述第一執行佇列將所述第一類型指令分派到共用功能單元; 第二執行佇列,包括多個條目,其中所述第二執行佇列的每一條目記錄第二類型指令,所述第二執行佇列的每一條目包括對應於所述第二類型指令的第二計數值,所述第二計數值遞減直到所述第二計數值達到0為止,且當對應於所述第二類型指令的所述第二計數值達到0時,所述第二執行佇列將所述第二類型指令分派到所述共用功能單元; 共用功能單元,執行第一類型指令和第二類型指令,其中來自所述第一執行佇列的所述第一類型指令和來自所述第二執行佇列的所述第二類型指令相互排斥地分派到所述共用功能單元; 第一類型發佈單元,將所述第一類型指令發佈到所述第一執行佇列,調度所述第一類型指令的讀取時間和寫入時間,且設置記錄於所述第一執行佇列的每一條目中的所述第一計數值;以及 第二類型發佈單元,將所述第二類型指令發佈到所述第二執行佇列,調度所述第二類型指令的讀取時間和寫入時間,且設置記錄於所述第二執行佇列的每一條目中的所述第二計數值。
TW110129840A 2021-06-01 2021-08-12 微處理器、適用於微處理器的方法以及資料處理系統 TWI796755B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/335,089 2021-06-01
US17/335,089 US11467841B1 (en) 2021-06-01 2021-06-01 Microprocessor with shared functional unit for executing multi-type instructions

Publications (2)

Publication Number Publication Date
TW202248846A true TW202248846A (zh) 2022-12-16
TWI796755B TWI796755B (zh) 2023-03-21

Family

ID=83547302

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110129840A TWI796755B (zh) 2021-06-01 2021-08-12 微處理器、適用於微處理器的方法以及資料處理系統

Country Status (4)

Country Link
US (1) US11467841B1 (zh)
JP (1) JP7348969B2 (zh)
CN (1) CN115437694A (zh)
TW (1) TWI796755B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210098B2 (en) * 2013-07-15 2021-12-28 Texas Instruments Incorporated Variable latency instructions
WO2024118838A1 (en) * 2022-12-01 2024-06-06 Simplex Micro, Inc. Method and apparatus for a scalable microprocessor with time counter

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148395A (en) * 1996-05-17 2000-11-14 Texas Instruments Incorporated Shared floating-point unit in a single chip multiprocessor
US5996064A (en) * 1997-12-30 1999-11-30 Intel Corporation Method and apparatus for guaranteeing minimum variable schedule distance by using post-ready latency
US6725354B1 (en) * 2000-06-15 2004-04-20 International Business Machines Corporation Shared execution unit in a dual core processor
US6826704B1 (en) 2001-03-08 2004-11-30 Advanced Micro Devices, Inc. Microprocessor employing a performance throttling mechanism for power management
GB2447907B (en) * 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US9104399B2 (en) * 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US11163582B1 (en) 2020-04-20 2021-11-02 Andes Technology Corporation Microprocessor with pipeline control for executing of instruction at a preset future time

Also Published As

Publication number Publication date
JP7348969B2 (ja) 2023-09-21
CN115437694A (zh) 2022-12-06
JP2022184701A (ja) 2022-12-13
TWI796755B (zh) 2023-03-21
US11467841B1 (en) 2022-10-11

Similar Documents

Publication Publication Date Title
EP3301566B1 (en) Pipelined processor with multi-issue microcode unit having local branch decoder
US8006075B2 (en) Dynamically allocated store queue for a multithreaded processor
US9430235B2 (en) Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US5751983A (en) Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US8099566B2 (en) Load/store ordering in a threaded out-of-order processor
US8230177B2 (en) Store prefetching via store queue lookahead
US8335911B2 (en) Dynamic allocation of resources in a threaded, heterogeneous processor
US8429386B2 (en) Dynamic tag allocation in a multithreaded out-of-order processor
US9262171B2 (en) Dependency matrix for the determination of load dependencies
US7984274B2 (en) Partial load/store forward prediction
US20080126771A1 (en) Branch Target Extension for an Instruction Cache
US7093106B2 (en) Register rename array with individual thread bits set upon allocation and cleared upon instruction completion
US20100332804A1 (en) Unified high-frequency out-of-order pick queue with support for speculative instructions
US20220382546A1 (en) Apparatus and method for implementing vector mask in vector processing unit
US9454371B2 (en) Micro-architecture for eliminating MOV operations
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
US11132202B2 (en) Cache control circuitry and methods
TWI796755B (zh) 微處理器、適用於微處理器的方法以及資料處理系統
US8468325B2 (en) Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
KR100572040B1 (ko) 명령들의 퇴거시 물리적인 레지스터들을 선택적으로 자유화하도록 구성된 프로세서
US6370637B1 (en) Optimized allocation of multi-pipeline executable and specific pipeline executable instructions to execution pipelines based on criteria
US7694110B1 (en) System and method of implementing microcode operations as subroutines
US11687347B2 (en) Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard
WO2013101323A1 (en) Micro-architecture for eliminating mov operations
TW202318190A (zh) 用於處置向量指令的掩碼資料的微處理器和方法