TWI457827B - 具有同時的無序調度之分布式調度 - Google Patents

具有同時的無序調度之分布式調度 Download PDF

Info

Publication number
TWI457827B
TWI457827B TW097104960A TW97104960A TWI457827B TW I457827 B TWI457827 B TW I457827B TW 097104960 A TW097104960 A TW 097104960A TW 97104960 A TW97104960 A TW 97104960A TW I457827 B TWI457827 B TW I457827B
Authority
TW
Taiwan
Prior art keywords
instruction
instructions
time slot
time slots
processor
Prior art date
Application number
TW097104960A
Other languages
English (en)
Other versions
TW200841236A (en
Inventor
Gene W Shen
Sean Lie
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of TW200841236A publication Critical patent/TW200841236A/zh
Application granted granted Critical
Publication of TWI457827B publication Critical patent/TWI457827B/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional 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)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Developing Agents For Electrophotography (AREA)
  • Eye Examination Apparatus (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)

Description

具有同時的無序調度之分布式調度
本發明係關於處理器的技術領域,且特別是關於在處理器中指令的提取及調度(dispatch)。
按超純量處理器(superscalar processor)試圖透過平行之方式(in parallel)處理多重指令(multiple instructions)來達成高效能。舉例而言,超純量處理器通常係包含多個平行執行單元,每一個平行執行單元被組構用來獨立地執行運算(operation)。為了提供足夠的指令以有效地利用該等平行執行單元,該超純量處理器試圖迅速地提取以及解碼多重指令,並將他們傳送至指令排程機制(instruction scheduling mechanism)。
由於指令之間的運算元相依性(operand dependency)需要被考慮,因此,被提取及解碼的指令之程式順序必須具有可辨識性(discernable),以使相依性檢核(dependency checking)能被實施。舉例而言,實作暫存器更名(register renaming)之處理器經常將該相依性檢核實施成部分的暫存器更名運算。
以不同的時脈循環所傳送的指令之程式順序通常係明顯的:以較早時脈循環所傳送的指令比以較晚時脈循環所傳送的指令要來得舊。在程式順序中,較舊的指令係在較新的指令之前。若分支預測(branch prediction)被實作成例如直接提取(direct fetching),則該程式順序是可推 測的。
在被同時(例如,以相同的時脈循環)傳送的指令中,該程式順序較不明顯。為了確保程式順序可被辨認,很多處理器在多個平行解碼器中指定靜態程式順序。該等解碼器以及其他的硬體可被視為數個時槽(slot),指令可被傳送至該等時槽。程式順序中的第一指令被傳送至時槽0,程式順序中的第二指令被傳送至時槽1,等等。據此,該等同時被傳送的指令之程序順序很明顯的是來自該等時槽,該等指令被傳送至該等時槽。
第1圖為這種用於三個時槽(三個同時被傳送的指令)的運算的範例,當然任何數目的時槽皆能被實作。第1圖也顯示範例序列的指令I0至I10,其中,該等指令的推測之程式順序係由上流向下(例如:根據該推測的程式順序,I0為第一、I1為第二,等等)。在很多情況下,一些時脈循環中所發送(issue)的指令會少於三個(例如:所提取的指令不足,實作-相依性限制(implementation-dependent constraint),等等)。
如第1圖所示,每一個傳送循環內(在第1圖中被標示為D0至D4)之程式順序中之第一指令總是被發送至時槽0,程式順序中之第二指令(若有的話)總是被發送至時槽1,而程序順序中之第三指令(若有的話)則總是被發送至時槽2。因此,該等同時傳送的指令之程式順序為時槽0、然後時槽1、以及然後時槽2。
第1圖中的實作指令傳送通常包含相當複雜的輪循機 制(rotation mechanism),以將程式順序中之第一指令對準(align)時槽0。該輪循機制係相依於先前已被傳送的指令之數目以及第一指令於被提取的指令中之位置。此外,相較於其他時槽,時槽0所關聯之資源通常更被高度地利用。若該等時槽就資源而言是對稱的,則指定至時槽0的資源會整體性支配該處理器之可達成的平行性(achievable parallelism)。另一方面,若有更多的資源被指定至時槽0甚於其他時槽(並且更多的資源被指定至時槽1甚於時槽2),實作會因各個時槽之間的差異而更加複雜。雖然其他已被提出的機制允許第一指令被傳送至時槽0以外的時槽,但是同時傳送的指令會被傳送至較高編號的時槽,因此,這種實作仍須使用到複雜的輪循。
在一個實施例中,一種處理器包括:指令緩衝器以及與該指令緩衝器連接之選取單元。該指令緩衝器係被連接用來接收從指令快取所提取的指令。該選取單元係被組構用來從該指令緩衝器中選擇多達(up to)N個指令以供同時傳送至複數個時槽(slot)中的個別時槽,其中N為大於1的整數。此外,該選取單元被組構用來將所選擇的指令中之最舊的指令傳送至該複數個時槽中的任何一者,即使所選擇的指令的數目大於1。該選取單元被組構用來基於該最舊的指令被傳送至的時槽而同時將所選擇的指令中之其他指令傳送至該複數個時槽中的其他時槽。一些實施例包括一種電腦系統,該電腦系統包含該處理器及通訊裝置, 該通訊裝置係組構用來與另一電腦系統通訊。
在一實施例中,一種方法包括:從處理器中的指令緩衝器選取多達N個指令以供同時傳送至該處理器中之複數個時槽中之個別時槽,其中N為大於1的整數;將所選擇的指令中之最舊的指令傳送至複數個時槽中的任何一者,即使所選擇的指令的數目大於1;基於該最舊的指令被傳送至的時槽,同時將所選擇的指令中之其他指令傳送至該複數個時槽中的其他時槽。
現在翻至第2圖,方塊圖係顯示以揭示依據一個實施例之指令傳送。係顯示推測的指令序列(speculative instruction sequence),包括指令I0至I10。該等指令的編號指示該推測的程式順序(speculative program order)(例如,指令I0在程式順序中為第一,指令I1在程式順序中為第二,等等)。係顯示三個時槽(slot 0、slot 1、及slot 2),以及顯示數個指令傳送的連續循環(D0至D4)。雖然係簡示為三個時槽,但需注意的是任何數目的時槽可實作於各種實施例中(例如,在第4圖中之四個時槽)。為了比較之目的,在每一個循環D0至D4中係選擇與第1圖所顯示相同的指令。也存在各種不同的理由以在給定的循環中選擇少於三個指令(例如,已被提取但尚未被傳送至時槽之指令的數目;對於同時傳送指令(例如,分支指令的偵測及預測,在給定組之已提取指令位元組中之指令的數目,等等)之實作-特定限制(implementation-specific constraint);等等)。
根據此處所描述的指令選擇機制,在程式順序中最舊的指令可被傳送至任何時槽,不論同時選擇用於傳送之指令的數目為多少(例如,即使所選取的指令的數目大於1),其他被選擇的指令可基於該最舊的指令被傳送至的時槽而被傳送。舉例而言,該等時槽可被視為彼此接續,包含從最後一個時槽繞回至時槽0。也就是,在本實施例中,時槽1係接續於時槽0,時槽2係接續於時槽1,而時槽0係接續於時槽2。若最舊的指令被傳送至給定的時槽,則隨後的指令被傳送至接續該給定時槽的時槽。在給定傳送中之最舊的指令可以一些方式加以識別,這樣,下游管線階段(downstream pipeline stage)便可辨識該程式順序。
藉由傳送最舊的指令至任何時槽,指令於下游資源上的負載(load)便可隨著時間而相當地平衡。因此,在一些實施例中,可提供對稱式資源,而不會產生嚴重地影響效能,實作可因此被減緩。舉例來說,可指定時槽硬體的實例,而該實例可被複製以提供所希望的時槽。此外,在一些實施例中,指令可以較少或幾乎沒有輪循之方式被提取(例如,進入指令緩衝器)及傳送,以將他們從該緩衝器對準至他們被傳送至之時槽。
在第2圖中,任何給定循環中的最舊的指令被傳送至該時槽,該時槽係接續於已在該先前傳送中被寫入(fill)的前一個時槽(例如,該時槽寫入有該先前傳送中之最新的指令)。指令I0及I1被選擇並在循環D0中被傳送至時 槽0及1,在循環D1中,指令I2及I3被選擇。由於指令I1係被傳送至時槽2,並且為循環D0中最新的指令,因此,指令I2係被傳送至時槽2。指令I3被傳送至下一個接續的時槽(時槽0)。在循環D2中,有三個指令(I4、I5、及I6)被選取,指令I4被傳送至時槽1,而其餘指令則傳送至下一個接續的時槽(指令I5被傳送至時槽2,指令I6被傳送至時槽0)。在循環D3中,指令I7被選取並被傳送至時槽1;而在循環D4中,指令I8、I9、及I10被選取並分別地被傳送至時槽2、0及1。
雖然第2圖揭示三個時槽,但其他實施例可包含超過三個時槽或兩個時槽。舉例而言,第3圖揭示具有四個時槽34A-34D之實施例,每一個時槽皆包括硬體,提取的指令可被傳送至該硬體,並且,該提取的指令在離開(exit)該時槽之最後管線階段之前會一直留在該硬體內。該等時槽可彼此相互獨立,並且,他們的管線可為無閒置(stall-free)。在一個實施例中,每一個時槽可包括至少一個解碼器電路系統,並且在開始無序執行(out of order execution)之前(例如,在指令被排程以執行之排程階段之前)可復包括任何額外所希望的電路。舉例而言,在第3圖中,每一個時槽可包括解碼單元以及運算(op)佇列。
翻至第3圖,係顯示處理器10之一個實施例之方塊圖。在揭示的實施例中,該處理器10係包括提取控制單元12、指令快取(instruction cache;ICache)14、分支預測器(branch predictor)16、指令緩衝器20、選取單元26、 複數個解碼單元18A至18D、複數個運算佇列28A至28D、更名單元(rename unit)22、以及執行核心(execution core)24。該提取控制單元12係被連接至該指令快取14、該分支預測器16、以及該執行核心24。該指令快取14復被連接至該指令緩衝器20,該指令緩衝器20被連接至該選取單元26。該選取單元26被連接至該等解碼單元18A至18D,該等解碼單元18A至18D之各者被連接至個別的運算佇列28A至28D。該等運算佇列28A至28D被連接至該更名單元22,該更名單元22復被連接至執行核心24並包含線內式相依性檢核器(intraline dependency checker)30。
使用於此處之術語”運算(operation)”、”指令運算(instruction operation)”(或更可簡稱為”運算(op)”)係相關於由該處理器10所執行的指令。一般而言,運算可以一對一映射(one-to-one mapping)至由該處理器10所實作的指令集架構中所指定指令。該等運算可與該等指令相同、或具有解碼的形式。或者,給定指令集架構(或至少一些該等指令)中的指令可映射至兩個或更多個運算。在某些情況中,可實作微碼化(microcoding),因此,映射可包括儲存於微碼唯讀記憶體(microcode ROM)中的微碼常式(microcode routine)。在其他情況中,硬體可產生該等運算,或可使用硬體產生與微碼化的組合方式。因此,分支運算(或更可簡稱為”分支”)係對應於分支指令/或從分支指令所衍生。載入運算及儲存運算(或更可簡稱為”載入”以及”儲存”)係對應於載入及儲存指令或其他具有記憶體 運算元(memory operand)的指令/或從載入及儲存指令或其他具有記憶體運算元的指令所衍生。同樣地,其他的運算可對應於其他的指令/或從其他的指令所衍生。
該提取控制單元12係被組構而產生提取位址以在該處裡器10中提取用於執行之指令。該提取控制單元12係被連接至該分支預測器16,以及使用由該分支預測器16所產生之分支預測來控制隨後的提取,據此產生推測的程式順序。此外,當重提取清除(refetch flush)發生時(例如,分支預測錯誤(branch misprediction)、推測錯誤(misspeculation)、或異常(exception)),重取清除控制可由執行核心24提供,以重定向提取(redirecting fetching)。該提取控制單元將提取位址傳輸至該指令快取14,該指令快取14提供對應的指令位元組至該指令緩衝器20。
該選取單元26可掃描該指令緩衝器20中之指令位元組,以將用於傳送之指令定位(locate)於該等時槽(開始於該等解碼單元18A至18D)。在一個實施例中,該指令快取14可實作預解碼,以促進定位指令於該等所提取之位元組內。舉例而言,如x86(也被稱為IA-32)或AMD64TM 之可變的位元組長度指令集可在該等位元組的不同點具有指令邊限(instruction boundary)。該選取單元26可使用該預解碼資料來定位指令,並可選擇每一個定位的指令所對應之指令位元組來傳送至解碼單元18A至18D。該選取單元26也可在同時被選擇指令上實行各式各樣的實作限 制。用於一些實施例的範例限制可包含一個或更多個以下的限制:在分支指令之數目上的限制;在動態執行資源(dynamic execution resourc)(例如,排程器佇列項目(scheduler queue entry)或用於暫存器更名的閒置暫存器)之數目上的限制;可在同一群組同時被調度(dispatched)的指令類型上的限制;等等。
在一個實施例中,該選取單元26可於指令位元組被寫入至指令緩衝器20時掃描該指令位元組,以辨別指令以及將他們指定至時槽。該選取單元26可例如將接續的時槽以該程式順序指定至接續的指令,從最後一個時槽輪循回到時槽0。當該等指令被選擇時,該等指令可被傳送至該指定的時槽。因此,時槽選擇可與給定的時脈循環中所選擇之指令的數目無關。在另一實施例中,該選取單元26可在每一個循環中記錄接續於寫入最新的指令之時槽的時槽(例如,按時槽編號),並可將下一個時脈循環中所選擇之最舊的指令傳送至那所記錄的時槽編號。在同樣該下一個時脈循環中所選擇之隨後的指令可被傳送至接續的時槽,而接續於該最新的指令之時槽可再次被記錄。其他的實施例可使用其他的機制來判定那些時槽接收到那些指令。
該選取單元26也可被組構用以產生在給定同時傳送的指令中的最舊之指令的指示。舉例而言,可提供最舊之指令的時槽編號,或可於接收最舊之指令的時槽中設定旗標位元(flag bit)。可使用任何指示。
每一個解碼單元18A至18D均包括電路系統,該電路系統用以解碼由選取單元26所提供之指令,以產生運算。若實作微碼化,則該等解碼單元可包含一個微碼單元。該解碼單元18A至18D將該運算提供至被連接於那個解碼單元18A至18D的運算佇列28A至28D。每一個運算佇列28A至28D均包括複數個項目,每一個項目均被組構用來儲存運算。若給定的時槽在給定的循環中沒有被傳送至其之運算,但其他的時槽確有運算被傳送,則項目可分配在運算佇列28A至28D內,並且該項目可指示無效。因此,該同時傳送之指令的群組可留在每一個運算佇列28A至28D內的相同項目中,並且可同時由更名單元22讀取。所以,同時被傳送之指令的給定群組可同時離開該挾槽。
每一個運算佇列項目可儲存運算以及各種狀態/控制資料。舉例而言,運算佇列項目32係顯示於該運算佇列28A內,其他的項目亦類似。該運算佇列項目32可包含有效位元(V)、第一位元(F)、以及運算欄(O)。其他的狀態/控制資料也可被實作在不同的實施例中。該有效位元可指示該項目是否為有效,也就是,該有效位元可指示該項目是否正在儲存運算。該第一位元可指示該運算是否對應於同時被傳送的指令之群組中的最舊的指令。或者,一個或更多個項目可儲存指示該最舊的指令之時槽編碼。在一個實施例中,該運算佇列項目也可包含預解碼資料,以加速該等指令的處理。
該更名單元22可實作該暫存器更名。該更名單元22 可維持邏輯暫存器(logical register)對實體暫存器(physical register)的映射(mapping),並可基於該映射將每一個來源邏輯暫存器(source logical register)更名為實體暫存器。該更名單元22也可指定閒置的實體暫存器給每一個目標暫存器(destination register),並可以該重新指定的實體暫存器更名該目標暫存器。該更名單元22可更新該映射,以反映該重新指定的實體暫存器。一般而言,該邏輯暫存器可包含任何已建構的暫存器(該已建構的暫存器係由該處理器10所實作的指令集架購所指定),以及實作-特定程式者-可視暫存器(implementation-specific programmer-visible register)及微碼臨時暫存器(microcode temp register),若有的話。實體暫存器可包括實際上被實作於該處理器10內的暫存器。該更名單元22提供該等運算及他們的更名至該執行核心24。
作為該更名處理之一部分,該更名單元可檢核從該等運算佇列28A至28D所同時提供之運算之間的相依性。來自該運算佇列項目之第一位元可被用來定位該最舊的指令,以將該等指令依據內線路相依性檢核器30之相依性檢核排序。該更名單元22也可提供該第一位元或該指令排序的其他指示給該執行核心24。
該執行核心24可包含排程電路系統(例如,中央式排程器(centralized scheduler)、預留緩存空間(reservation station),等等),以於運算的運算元可用(available)時,排程該運算以備執行。該執行核心24可代表一個或更多個執 行各種運算之平行執行單元。舉例而言,該執行核心24的各種實施例可包括一個或更多個整數單元(integer unit)、一個或更多個位址產生單元(address generation unit)(用以載入/儲存運算)、一個或更多個浮點單元(floating point unit)、及/或一個或更多個多媒體單元、資料快取,等等。該執行核心24也可包含異常偵測硬體、以及引退硬體(retirement hardware),該引退硬體將不再推測的以及已正確執行過的指令予以引退。
在不同的實施例中,該指令快取14之各者以及該執行核心24中的資料快取可包括任何組構及容量。在一些實施例中,該指令快取14也可儲存預解碼資料,諸如指令起始及/或終止指標(end indicator),以辨別指令的位置。
在一些實施例中,該處理器10可支援多重執行緒(multithreading)。舉例而言,實施例可已經分享了指令快取及解碼硬體,但可具有分別的每一執行緒執行叢集(per-thread execution cluster)。需注意的是,雖然該揭示的實施例包含四個時槽(解碼單元及運算佇列),但其他的實施例可包含2或更大之任何數目個時槽。
在一個實施例中,被實作於該指令快取14內的該預解碼結構可包含與每一個指令位元組關聯的兩個終止位元(end bit),一個終止位元包含在兩組終止位元之各組內。若位元組不是指令的終止,則兩個位元皆被清除。若該位元組為指令的終止,則可設定該等終止位元之至少一者。可產生該組終止位元,這樣,序列中之接續指令便具有他 們的相對於該組之各者的組終止位元。在這種實施例中,該選取單元26可包括兩個掃描器,每一個掃描器接收該組終止位元之其中一者。每一個掃描器可將頭兩個指令終止(指示於他們個別的組位元)予以定位。因此,多達四個指令可能只使用搜尋第一及搜尋第二演算法而定位在該等終止位元上。在一個實施例中,解碼成一個或兩個運算之指令在該等解碼單元18A-18D中的硬體內被處理,而解碼成3個或更多個運算碼之指令在微碼中被處理。被解碼成兩個運算的指令可稱為雙重調度運算(double dispatch op),雙重調度運算可具有兩組終止位元,這樣,該指令便可被傳送至兩個時槽。該等指令實例之其中一者可如該第二實例般被附加標籤(tagged),而該兩個接收解碼單元18A至18D可產生用於那個指令之個別的第一或第二運算。
現在翻至第4圖,係顯示揭示該選取單元26之一個實施例之流程圖。雖然該等區塊(block)係以特別的順序顯示,以易於理解,但其他的順序亦可被使用。區塊可由該選取單元26內的組合邏輯(combinational logic)以平行的方式實施。區塊、區塊的組合、及/或該流程圖整體可以管線排列(pipelined)於多重時脈環循上。
若有效的指令(指令位元組)係在該指令緩衝器20內(判斷區塊40,”是”的路徑),則該選取單元26可分配時槽給每一個指令(區塊42)。在一個實施例中,若指令為雙重調度,則該指令可被分配至兩個時槽。若指令緩衝器20中沒有有效的指令,則該選取單元26可等待有效指 令(判斷區塊40,”否”的路徑)。
該選取單元26可根據不同的標準選擇一個或更多個指令,該等標準中之一些之實作可與不同的實施例相依(區塊44)。該選取單元26可傳送該等指令至被分配到的時槽,並辨別最舊的指令(區塊46)。
現在翻至第5圖,係顯示揭示該選取單元26之另一實施例之流程圖。雖然該等區塊係以特別的順序顯示,以易於理解,但其他的順序亦可被使用。區塊可由該選取單元26內的組合邏輯以平行的方式實施。區塊、區塊的組合及/或該流程圖整體可以管線排序於多重時脈環循上。
該選取單元26可嘗試去選擇指令以傳送。若至少一個指令被選取(判斷區塊50,”是”的路徑),則該選取單元26被組構將該等指令傳送至數個時槽(該數個機槽係以最近記錄的時槽開始,並以接續的時槽繼續)(區塊52)。該選取單元26也可辨別該最舊的指令。該選取單元26也可記錄最後所發出的指令所對應之時槽。
現在翻至第6圖,係顯示電腦系統300之實施例。在第6圖的實施例中,電腦系統300係包含數個處理節點312A、312B、312C、及312D。每一個處理節點經由包含在每一個個別處理節點312A至312D內之記憶體控制器316A至316D而連接至個別的記憶體314A至314D。此外,處理節點312A至312D包含介面邏輯(interface logic),該等介面邏輯被用來於該等處理節點312A至312D之間進行通訊。舉例而言,處理節點312A包含用以與處理節點 312B進行通訊的介面邏輯318A、用以與處理節點312C進行通訊的介面邏輯318B、以及用以與其他的處理節點(未顯示)進行通訊的介面邏輯318C。同樣地,處理節點312B包含介面邏輯318D、318E、及318F;處理節點312C包含介面邏輯318G、318H、及318I;而處理節點312D包含介面邏輯318J、318K、及318L。處理節點312D被連接以經由介面邏輯318L與複數個輸入/輸出(Input/OutPut; I/O)裝置(例如,組構成菊鏈狀(daisy chain)的裝置320A至320B)進行通訊。其他的處理節點可以同樣的方式與其他的I/O裝置進行通訊。
處理節點312A至312D實作以封包為基礎(packet-based)的連線,來進行處理節點內部之通訊。在本實施例中,該連線係被實作成數組單向式線路(unidirectional line)(例如,線路324A被用來從處理節點312A傳送封包至處理節點312B,而線路324B被用來從處理節點312B傳送封包至處理節點312A)。如第6圖所揭示,其他組的線路324C至324H可被用來於其他的處理節點之間傳送封包。一般而言,每一組線路324可包含一條或更多條資料線(data line)、一條或更多條對應於該等資料線之時脈線(clock line)、以及一條或更多條控制線(control line)以指示被傳遞的封包之類型。該連線可以快取一致性(cache coherent)的方式被運算以於處理節點之間進行通訊,或以非一致性(non-coherent)的方式被運算以於處理節點與I/O裝置(或橋接至傳統架構的I/O 匯流排(諸如,週邊組件互連(Peripheral Component Interconnect; PCI)匯流排或工業標準構造(Industry Standard Architecture; ISA)匯流排)之匯流排)之間進行通訊。再者,該連線可使用如所顯示之I/O裝置間的菊鏈狀結構而以非一致性的方式被運算。需注意的是,將從一個處理節點被傳送至另一個處理節點之封包可通過一個或更多個中間節點(intermediate node)。舉例而言,如第6圖所顯示,由處理節點312A傳送至處理節點312D之封包可通過處理節點312B或處理節點312C。任何適當的繞線演算法(routing algorithm)皆可被使用。相較於第6圖所顯示之實施例,電腦系統300之其他實施例可包含較多或較少個處理節點。
一般而言,該等封包可在線路324上的節點間被傳送如一個或更多個位元時間(bit time)。位元時間可為該對應的時脈線上之時脈訊號的上升緣(rising edge)或下降緣(falling edge)。該等封包可包含用來起始交易(initiating transaction)的命令封包(command packet)、用來維持快取一致性的探測封包(probe packet)、以及回應探測及命令之回應封包(response packet)。
處理節點312A至312D除了記憶體控制器以及介面邏輯以外可另包含一個或更多個處理器。廣義言之,處理節點包括至少一個處理器以及可選擇地包含記憶體控制器,用以視需要與記憶體以及其他邏輯進行通訊。更甚者,如第3圖所顯示,每一個處理節點312A至312D可包括一個 或更多個處理器10之複製物(例如,包含第2及4至5圖所顯示之不同的結構以及運算細節)。一個或更多個處理器可包括單晶片多核心處理(chip multiprocessing; CMP)或單晶片多執行緒處理(chip multithreaded; CMT)積體電路,該積體電路係位在該處理節點中或形成該處理節點,或該處理節點可具有任何其他所希望的內部結構。
記憶體314A至314D可包括任何適當的記憶體裝置。舉例而言,記憶體314A至314D可包括一個或更多個RAMBUS動態隨機存取記憶體(RDRAM)、同步動態隨機存取記憶體(SDRAM)、DDR DRAM、靜態隨機存取記憶體(static RAM),等等。電腦系統300的位址空間被劃分成記憶體314A至314D。每一個處理節點312A至312D可包含記憶體映射圖(memory map),該記憶體映射圖被用來判定那些位址被映射至那些記憶體314A至314D,以及因此判定特別位址之記憶體請求(memory request)應於被繞線至那個處理節點312A至312D。在一個實施例中,該電腦系統300內之位址的一致性點(coherency point)係為被連接該記憶體之記憶體控制器316A至316D,其中,該記憶體係儲存該位址所對應之位元組。換言之,該記憶體控制器316A至316D負責確保每一個至該對應的記憶體314A至314D之記憶體存取皆以快取一致性的方式發生。記憶體控制器316A至316D可包括用來與記憶體314A至314D介接(interface)的控制電路系統。此外,記憶體控制器316A至316D可包含用以佇列記憶體請求之請求佇列。
一般而言,介面邏輯318A至318L可包括多種緩衝器,該等緩衝器用來從該連線接收封包以及用來緩衝將被傳送於該連線上的封包。電腦系統300可採用於任何用於傳送封包的流量控制機制(flow control mechanism)。舉例而言,在一個實施例中,每一個介面邏輯318儲存該接收器內之每一種緩衝器類型的數目之計數,該接收器係在該連線上該介面邏輯所連接之另一端處。除非該接收介面邏輯具有閒置的緩衝器以儲存封包,否則該介面邏輯將不傳送該封包。當接收緩衝器藉由將封包向前繞線而閒置時,該接收介面邏輯將訊息傳送給該發送介面邏輯(sending interface logic),以指示該緩衝器已經是閒置的。這種機制可被稱為”基於抵用券(coupon-based)”的系統。
I/O裝置320A至320B可為任何適用的I/O裝置。舉例而言,I/O裝置320A至320B可包含用來與其他電腦系統通訊之裝置(例如,網路介面卡或數據機),該電腦系統可與該裝置連接。此外,I/O裝置320A至320B可包含視訊加速器(video accelerator)、音訊卡(audio card)、硬或軟碟或驅動控制器、小型電腦系統介面(Small Computer Systems Interface; SCSI)轉接器及通話卡(telephony card)、音效卡(sound card)、以及多種資料採集卡(data acquisition card)(諸如,通用介面匯流排(GPIB)或現場匯流排介面卡(field bus interface card))。再者,被實作如卡的任何I/O裝置也可被實作如該系統300之主電路板上的電路系統及/或在處理節點上所執行的軟體。需注意的 是,術語”I/O裝置”與術語”周邊裝置”於此係視為同義。
再者,一個或更多個處理器10可被實作在更傳統的個人電腦(PC)結構內,該更傳統的個人電腦結構包含一個或更多個處理器的介面,以橋接至一個或更多個I/O互連及/或記憶體。
以上所揭露的內容一旦理解後,許多的變化及修改對於該技術領域中熟習技術者將變得很明顯。接下來的申請專利範圍打算以涵蓋所有這種變化與修改之方式來加以解讀。
10‧‧‧處理器
12‧‧‧提取控制單元
14‧‧‧指令快取
16‧‧‧分支預測器
18A至18D‧‧‧解碼單元
20‧‧‧指令緩衝器
22‧‧‧更名單元
24‧‧‧執行核心
26‧‧‧選取單元
28A至28D‧‧‧運算佇列
30‧‧‧線內式相依性檢核器
32‧‧‧運算佇列項目
40、50‧‧‧判斷區塊
42、44、46、52、54‧‧‧區塊
300‧‧‧電腦系統
312A至312D‧‧‧處理節點
314A至314D‧‧‧記憶體
316A至316D‧‧‧記憶體控制器
318A至318L‧‧‧介面邏輯
320A至320B‧‧‧I/O裝置
324、324A至324h‧‧‧線路
D0至D4‧‧‧時脈循環
F‧‧‧第一位元
I0至I10‧‧‧指令
O‧‧‧運算欄
Slot 0-Slot 2‧‧‧時槽0至時槽2
V‧‧‧有效位元
上述的詳細說明係參照附隨的圖式,現在將簡單地描述該圖式。
第1圖為揭示以一種習知形式進行的指令傳送之方塊圖;第2圖為揭示此處所描述之指令傳送的一個實施例之方塊圖;第3圖為處理器之一個實施例之方塊圖;第4圖為揭示選取單元之一個實施例之運算的流程圖;第5圖為揭示選取單元之另一實施例之運算的流程圖;以及第6圖為電腦系統之一個實施例之方塊圖。
雖然本發明可容易作各種之修飾和替代形式,但是在此係由圖式中之範例顯示及詳細說明本發明之特定實施 例。然而,應暸解到此處特定實施例之圖式及詳細說明並不欲用來限制本發明為所揭示之特定形式,反之,本發明將涵蓋所有落於如所附申請專利範圍內所界定之本發明之精神和範圍內之修飾、等效和替代內容。
10‧‧‧處理器
12‧‧‧提取控制單元
14‧‧‧指令快取
16‧‧‧分支預測器
18A至18D‧‧‧解碼單元
20‧‧‧指令緩衝器
22‧‧‧更名單元
24‧‧‧執行核心
26‧‧‧選取單元
28A至28D‧‧‧運算佇列
30‧‧‧線內式相依性檢核器
32‧‧‧運算佇列項目
V‧‧‧有效位元
F‧‧‧第一位元
O‧‧‧運算欄

Claims (20)

  1. 一種處理器,包括:指令緩衝器,連接成用來接收從指令快取所提取的指令;以及選取單元,與該指令緩衝器連接,且被組構成用來從該指令緩衝器中選擇多達N個指令以供同時傳送至複數個對稱時槽中之個別時槽,其中,N為大於1的整數,以及其中,該選取單元被組構成用來將該等所選擇的指令中之最舊的指令傳送至該複數個時槽中的第一時槽,其中,該第一時槽接續於在先前之指令傳送中已被傳送有最新指令的第二時槽,且其中,該選取單元被組構成,即使該等所選擇的指令的數目大於1亦將最舊的指令傳送至該第一時槽,以及其中,該選取單元被組構成用來基於該最舊的指令被傳送至的該第一時槽而將該等所選擇的指令中之其他指令同時傳送至該複數個時槽中的其他時槽。
  2. 如申請專利範圍第1項之處理器,其中,該選取單元係被組構成,當該等指令被接收至該指令緩衝器內時,回應於此,將指令指定至時槽。
  3. 如申請專利範圍第2項之處理器,其中,該選取單元係被組構成用來根據該等指令於該指令緩衝器中之程式順序,將該等指令以接續的方式指定至該等時槽。
  4. 如申請專利範圍第2項之處理器,其中,該選取單元係被組構成用來將該最舊的指令傳送至該第一時槽, 並將隨後的指令傳送至其被指定到的時槽。
  5. 如申請專利範圍第1項之處理器,其中,該選取單元係被組構成用來記錄該第一時槽係接續於第二時槽,其中,最新指令係在之前被傳送至該第二時槽。
  6. 如申請專利範圍第5項之處理器,其中,該選取單元係被組構成用來將該最舊的指令傳送至該記錄的第一時槽。
  7. 如申請專利範圍第1項之處理器,其中,該複數個時槽中的每一個時槽包括解碼單元。
  8. 如申請專利範圍第7項之處理器,其中,每一個時槽復包括佇列,該佇列係連接至該解碼單元且被組構成用來儲存由該解碼單元所提供的已解碼的運算。
  9. 如申請專利範圍第8項之處理器,其中,該選取單元係被組構成用來辨別該最舊的指令,以及其中,該佇列係被組構成用來儲存指示,該指示用以辨別每一組同時被選擇的指令中之最舊的指令。
  10. 如申請專利範圍第9項之處理器,復包括更名單元,該更名單元係被連接至該複數個時槽中的該等佇列以及被組構成用來從該等佇列中之各者讀取該等同時被選擇的指令中之一者,其中,該更名單元係被組構成用來在該等同時被選擇的指令上實施暫存器更名以及被組構成用來使用該最舊的指令之指示,以偵測該等同時被選擇的指令之間的暫存器相依性。
  11. 一種處理指令之方法,包括: 從處理器中的指令緩衝器選擇多達N個指令,以供同時傳送至該處理器中之複數個對稱時槽中的個別時槽,其中,N為大於1的整數;將該等所選擇的指令中之最舊的指令傳送至該複數個時槽中的第一時槽,其中,該第一個時槽接續於在先前之指令傳送中已被傳送有最新指令的第二時槽,且其中,即使該等所選擇的指令的數目大於1亦將最舊的指令傳送至該第一時槽;以及基於該最舊的指令被傳送至的該第一時槽,將該等所選擇的指令中之其他指令同時傳送至該複數個時槽中的其他時槽。
  12. 如申請專利範圍第11項之方法,復包括:當該等指令被接收至該指令緩衝器內時,回應於此,將指令指定至時槽。
  13. 如申請專利範圍第12項之方法,其中,該指定包括根據該等指令之程式順序,將該等指令以接續的方式指定至該等時槽。
  14. 如申請專利範圍第11項之方法,復包括記錄該第一時槽係接續於第二時槽,其中,先前指令係在之前被傳送至該第二時槽。
  15. 如申請專利範圍第14項之方法,復包括將該最舊的指令傳送至該記錄的第一時槽。
  16. 如申請專利範圍第11項之方法,其中,該處理器包含複數個解碼單元以及複數個佇列,其中,該複數個佇 列中之各者係連接至該複數個解碼單元中之個別解碼單元,以及其中,每一個解碼單元及其個別的佇列包括時槽,該方法復包括該複數個佇列中之各者儲存由該個別的解碼單元所提供的已解碼的運算。
  17. 如申請專利範圍第16項之方法,其中,傳送該最舊的指令復包括辨別該最舊的指令,以及該方法復包括該複數個佇列中之對應佇列儲存指示,該指示辨別每一組同時被選擇的指令中之最舊的指令。
  18. 如申請專利範圍第17項之方法,復包括:從該複數個佇列中之各者中讀取該等同時被選擇的指令中之一者;以及使用該最舊的指令之該指示以偵測該等同時被選擇的指令之間的暫存器相依性。
  19. 如申請專利範圍第18項之方法,復包括對該等同時被選擇的指令進行暫存器更名。
  20. 一種電腦系統,包括:處理器,包括:指令緩衝器,連接成用來接收從指令快取所提取的指令;以及選取單元,與該指令緩衝器連接,且被組構成用來從該指令緩衝器中選擇多達N個指令以供同時傳送至複數個對稱時槽中之個別時槽,其中,N為大於1的整數,以及其中,該選取單元被組構成用來將該等所選擇的指令中之最舊的指令傳送至該複數個時槽中 的第一時槽,其中,該第一個時槽接續於在先前之指令傳送中已被傳送有最新指令的第二時槽,且其中,該選取單元被組構成,即使該等所選擇的指令的數目大於1亦將最舊的指令傳送至該第一時槽,以及其中,該選取單元被組構成用來基於該最舊的指令被傳送至的該第一時槽而將該等所選擇的指令中之其他指令同時傳送至該複數個時槽中的其他時槽;以及通訊裝置,被組構成用來於該電腦系統與另一電腦系統之間進行通訊。
TW097104960A 2007-02-13 2008-02-13 具有同時的無序調度之分布式調度 TWI457827B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/674,562 US7725690B2 (en) 2007-02-13 2007-02-13 Distributed dispatch with concurrent, out-of-order dispatch

Publications (2)

Publication Number Publication Date
TW200841236A TW200841236A (en) 2008-10-16
TWI457827B true TWI457827B (zh) 2014-10-21

Family

ID=39400404

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097104960A TWI457827B (zh) 2007-02-13 2008-02-13 具有同時的無序調度之分布式調度

Country Status (8)

Country Link
US (1) US7725690B2 (zh)
EP (2) EP2221718B1 (zh)
KR (1) KR101466934B1 (zh)
CN (1) CN101730880B (zh)
AT (2) ATE550713T1 (zh)
DE (1) DE602008002325D1 (zh)
TW (1) TWI457827B (zh)
WO (1) WO2008100551A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533721B2 (en) * 2010-03-26 2013-09-10 Intel Corporation Method and system of scheduling out-of-order operations without the requirement to execute compare, ready and pick logic in a single cycle
US9529594B2 (en) 2010-11-30 2016-12-27 Oracle International Corporation Miss buffer for a multi-threaded processor
US10346173B2 (en) 2011-03-07 2019-07-09 Oracle International Corporation Multi-threaded instruction buffer design
US20130166882A1 (en) * 2011-12-22 2013-06-27 Jack Hilaire Choquette Methods and apparatus for scheduling instructions without instruction decode
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
WO2013095554A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
US10223111B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664136A (en) * 1993-10-29 1997-09-02 Advanced Micro Devices, Inc. High performance superscalar microprocessor including a dual-pathway circuit for converting cisc instructions to risc operations
US6032249A (en) * 1998-02-02 2000-02-29 International Business Machines Corporation Method and system for executing a serializing instruction while bypassing a floating point unit pipeline
WO2006105295A2 (en) * 2005-03-29 2006-10-05 Qualcomm Incorporated Mixed superscalar and vliw instruction issuing and processing method and system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870578A (en) 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6065110A (en) * 1998-02-09 2000-05-16 International Business Machines Corporation Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue
US6212621B1 (en) 1998-06-24 2001-04-03 Advanced Micro Devices Inc Method and system using tagged instructions to allow out-of-program-order instruction decoding
US6192465B1 (en) 1998-09-21 2001-02-20 Advanced Micro Devices, Inc. Using multiple decoders and a reorder queue to decode instructions out of order
US6622236B1 (en) * 2000-02-17 2003-09-16 International Business Machines Corporation Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions
US6785802B1 (en) 2000-06-01 2004-08-31 Stmicroelectronics, Inc. Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor
US6826704B1 (en) * 2001-03-08 2004-11-30 Advanced Micro Devices, Inc. Microprocessor employing a performance throttling mechanism for power management
US6970999B2 (en) * 2002-07-31 2005-11-29 International Business Machines Corporation Counting latencies of an instruction table flush, refill and instruction execution using a plurality of assigned counters

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664136A (en) * 1993-10-29 1997-09-02 Advanced Micro Devices, Inc. High performance superscalar microprocessor including a dual-pathway circuit for converting cisc instructions to risc operations
US6032249A (en) * 1998-02-02 2000-02-29 International Business Machines Corporation Method and system for executing a serializing instruction while bypassing a floating point unit pipeline
WO2006105295A2 (en) * 2005-03-29 2006-10-05 Qualcomm Incorporated Mixed superscalar and vliw instruction issuing and processing method and system

Also Published As

Publication number Publication date
KR101466934B1 (ko) 2014-12-01
EP2221718B1 (en) 2012-03-21
EP2221718A3 (en) 2010-11-10
US7725690B2 (en) 2010-05-25
US20080195846A1 (en) 2008-08-14
DE602008002325D1 (de) 2010-10-07
KR20090113884A (ko) 2009-11-02
TW200841236A (en) 2008-10-16
ATE550713T1 (de) 2012-04-15
EP2122462A1 (en) 2009-11-25
WO2008100551A1 (en) 2008-08-21
EP2221718A2 (en) 2010-08-25
CN101730880A (zh) 2010-06-09
EP2122462B1 (en) 2010-08-25
ATE479144T1 (de) 2010-09-15
CN101730880B (zh) 2013-04-10

Similar Documents

Publication Publication Date Title
JP4170292B2 (ja) データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
US9965274B2 (en) Computer processor employing bypass network using result tags for routing result operands
CN100495325C (zh) 用于按需临时寄存器重命名的方法和系统
US6336183B1 (en) System and method for executing store instructions
US7937574B2 (en) Precise counter hardware for microcode loops
US7133969B2 (en) System and method for handling exceptional instructions in a trace cache based processor
US7284117B1 (en) Processor that predicts floating point instruction latency based on predicted precision
TWI457827B (zh) 具有同時的無序調度之分布式調度
JP2005182825A5 (zh)
US7725659B2 (en) Alignment of cache fetch return data relative to a thread
US6934903B1 (en) Using microcode to correct ECC errors in a processor
US6427204B1 (en) Method for just in-time delivery of instructions in a data processing system
US6389529B1 (en) Method for alternate preferred time delivery of load data
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US6425090B1 (en) Method for just-in-time delivery of load data utilizing alternating time intervals
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
US5897654A (en) Method and system for efficiently fetching from cache during a cache fill operation
US6430683B1 (en) Processor and method for just-in-time delivery of load data via time dependency field
US7694110B1 (en) System and method of implementing microcode operations as subroutines
US6505277B1 (en) Method for just-in-time delivery of load data by intervening caches
US6393553B1 (en) Acknowledgement mechanism for just-in-time delivery of load data
US20040128476A1 (en) Scheme to simplify instruction buffer logic supporting multiple strands
US6397320B1 (en) Method for just-in-time delivery of load data via cycle of dependency

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent