TWI836055B - 用於暫存器記憶體的系統及設備 - Google Patents

用於暫存器記憶體的系統及設備 Download PDF

Info

Publication number
TWI836055B
TWI836055B TW109112025A TW109112025A TWI836055B TW I836055 B TWI836055 B TW I836055B TW 109112025 A TW109112025 A TW 109112025A TW 109112025 A TW109112025 A TW 109112025A TW I836055 B TWI836055 B TW I836055B
Authority
TW
Taiwan
Prior art keywords
circuit
register file
local
circuits
data
Prior art date
Application number
TW109112025A
Other languages
English (en)
Other versions
TW202107275A (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 TW202107275A publication Critical patent/TW202107275A/zh
Application granted granted Critical
Publication of TWI836055B publication Critical patent/TWI836055B/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/3824Operand accessing
    • 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
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

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

用於暫存器記憶體的系統及設備 [相關申請案的交叉參考]
本申請案主張於2019年4月22日提出申請且名稱為「暫時暫存器中的按通道動態索引編製(PER-LANE DYNAMIC INDEXING IN TEMPORARY REGISTERS)」的臨時專利申請案第62/837,186號的優先權。此較早提出申請的申請案的標的併入本文中供參考。
本說明是有關於暫存器記憶體,且更具體而言,是有關於暫時暫存器中的按通道動態索引編製。
暫存器檔案通常是中央處理單元(central processing unit,CPU)中的處理器暫存器陣列。現代的基於積體電路的暫存器檔案通常藉由具有多個埠的快速靜態隨機存取記憶體(random access memory,RAM)來實作。此類RAM的特點是具有專用的讀取埠及寫入埠,而普通的多埠RAM將通常藉由相同的埠進行讀取及寫入。
CPU的指令集架構將通常定義用於在記憶體與晶片上的 功能單元之間暫存(stage)資料的一組暫存器。在較簡單的CPU中,該些架構暫存器一一對應於CPU內的實體暫存器檔案(physical register file,PRF)中的條目。較複雜的CPU使用暫存器重新命名(renaming),使得在執行期間,關於哪一實體條目儲存特定架構暫存器的映射會動態地改變。與通透快取(transparent cache)的概念相反,暫存器檔案通常是架構的一部分且對於程式設計員而言是可見的。
單指令多資料(single instruction,multiple data,SIMD)電腦是一類並行電腦。其包括具有多個處理元件的電腦,該些處理元件實質上同時對多個資料點實行實質上相同的操作。此類機器利用資料層階並行性(data level parallelism)。通常,SIMD電腦及SIMD指令涉及同時(並行)計算,但在給定時刻僅涉及單個過程(指令)。SIMD特別適用於普通任務,例如調整數位影像中的對比度或調整數位音訊的音量。大多數現代的CPU設計包括SIMD指令,以提高多媒體使用的效能。
圖形處理單元(graphics processing unit,GPU)是一種專門的電子電路,其被設計成快速操縱及更改記憶體以加速在訊框緩衝器中創建旨在輸出至顯示裝置的影像。GPU用於嵌入式系統、行動電話、個人電腦、工作站及遊戲控制台中。現代的GPU在電腦圖形操縱及影像處理方面非常高效。對於並行處理大資料區塊的技術(例如,SIMD指令)而言,所述GPU的高度並行的結構使其較通用中央處理單元(CPU)更高效。在個人電腦中, GPU可存在於視訊卡上或者嵌入於主機板上。在某些CPU中,GPU嵌入於CPU晶粒上。
根據一個一般態樣,一種設備可包括一或多個執行單元電路,其各自被配置成存取一或多條資料。所述設備可包括一或多個局部暫存器檔案電路(local register file circuit),其各自與所述一或多個執行單元電路中相應的執行單元電路相關聯,且各自被配置成儲存所述資料。所述設備可包括主暫存器電路。所述主暫存器電路可包括被配置成儲存所述資料的主暫存器檔案電路。所述主暫存器電路可包括局部索引暫存器電路,所述局部索引暫存器電路被配置成將由所述主暫存器檔案電路供應的索引映射成所述局部暫存器檔案電路中的儲存位置。所述主暫存器電路可被配置成:自控制電路接收欲存取經指定的所述資料的所述儲存位置的請求,且向所述一或多個局部暫存器檔案電路中的目標局部暫存器檔案電路供應經指定的所述資料在所述目標局部暫存器檔案電路中的儲存位置。
根據另一一般態樣,一種系統可包括處理器核心。所述處理器核心可包括一或多個執行單元電路,其各自被配置成存取一或多條資料。所述處理器核心可包括一或多個局部暫存器檔案電路,其各自與所述一或多個執行單元電路中相應的執行單元電路相關聯,且各自被配置成儲存所述資料。所述處理器核心可包括主暫存器電路,所述主暫存器電路包括局部索引暫存器電路, 所述局部索引暫存器電路被配置成為所述局部暫存器檔案電路中的每一者儲存有效索引值(active index value),且被配置成因應於來自控制電路的欲存取所述一或多個執行單元電路中的目標執行單元電路的請求而供應與所述目標執行單元電路相關聯的所述有效索引值。所述系統可包括被配置成儲存所述資料的核心外(off-core)記憶體電路。
根據另一一般態樣,一種設備可包括多個執行單元電路,其各自被配置成存取一或多條資料。所述設備可包括多個局部暫存器檔案電路,其各自與所述多個執行單元電路中相應的執行單元電路相關聯,且各自被配置成儲存各條所述資料。所述設備可包括主暫存器電路。所述主暫存器電路可包括主暫存器檔案電路,所述主暫存器檔案電路被配置成為所述多個執行單元電路的至少一部分儲存資料。所述主暫存器電路可包括局部索引暫存器電路,所述局部索引暫存器電路被配置成識別所述多個局部暫存器檔案電路中的有效儲存位置。所述設備可包括控制電路,所述控制電路被配置成:向所述多個執行單元電路中的目標執行單元電路發佈指令,且指示所述局部索引暫存器電路在所述有效儲存位置處存取與所述目標執行單元電路相關聯的所述局部暫存器檔案電路。
在附圖及以下說明中陳述一或多個實施方案的細節。依據說明及圖式並依據申請專利範圍,其他特徵將顯而易見。
在申請專利範圍中更全面地陳述實質上如結合各圖中的 至少一者所示及/或所述的一種用於暫存器記憶體的系統及/或方法且更具體而言暫時暫存器中的按通道動態索引編製。
100、200、300:系統
102:指令提取單元(IFU)
104:指令解碼單元(IDU)
106:管線控制邏輯或電路
108:主暫存器電路/主暫存器檔案
110、110A、110B、110C、110D:執行單元
112、112A、112B、112C、112D:局部暫存器檔案
120:階層式暫存器檔案/暫存器檔案
132:暫存器或通道識別符
136:局部暫存器識別符或索引
212:主暫存器檔案
214:索引暫存器電路
232:索引暫存器識別符
233:索引編製識別符或有效記憶體位址
234:指令控制訊號
242A、242B、242C、242D、244A、244B、244C、244D、R[0]、R[1]、R[2]、R[3]:訊號
LR(R[0])、LR(R[1])、LR(R[2])、LR(R[3])、Ri:值
252、253、254、257:位置
302:處理器核心或處理電路/核心
304:核心外記憶體或核心外記憶體電路
400:資訊處理系統
405:系統匯流排
410:處理器
415:組合邏輯區塊(CLB)
420:揮發性記憶體
430:非揮發性記憶體
440:網路介面
450:使用者介面單元
460:硬體組件/硬體裝置
470:軟體組件
圖1是根據所揭露標的的系統的示例性實施例的方塊圖。
圖2A是根據所揭露標的的系統的示例性實施例的方塊圖。
圖2B是根據所揭露標的的系統的示例性實施例的方塊圖。
圖3是根據所揭露標的的系統的示例性實施例的方塊圖。
圖4是可包括根據所揭露標的的原理形成的裝置的資訊處理系統的示意性方塊圖。
在各圖式中,相同的參考符號指示相同的元件。
將在下文中參照其中示出一些示例性實施例的附圖來更全面地闡述各種示例性實施例。然而,本發明所揭露標的可實施為諸多不同形式而不應被理解為僅限於本文中所陳述的示例性實施例。而是,提供該些示例性實施例是為了使本發明透徹及完整,且將向熟習此項技術者全面地傳達本發明所揭露標的的範圍。在圖式中,為清晰起見,各層及各區的大小及相對大小可被擴大。
應理解,當將元件或層稱作位於另一元件或層「上」、「連接至」或「耦合至」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至或直接耦合至所述另一元件或層,或者可存在中間元件或層。相較而言,當將元件稱作「直接」 位於另一元件或層「上」、「直接連接至」或「直接耦合至」另一元件或層時,不存在中間元件或層。在通篇中,相同的編號指代相同的元件。本文中所使用的用語「及/或(and/or)」包括相關聯所列各項中的一或多者的任意及所有組合。
應理解,雖然本文中可使用用語「第一」、「第二」、「第三」等來闡述各種元件、組件、區、層及/或區段,但該些元件、組件、區、層及/或區段不應受該些用語限制。該些用語僅用於將一個元件、組件、區、層、或區段與另一區、層、或區段區分開。因此,在不背離本發明所揭露標的的教示內容的條件下,下文所論述的「第一元件」、「第一組件」、「第一區」、「第一層」、或「第一區段」可被稱為第二元件、第二組件、第二區、第二層、或第二區段。
為易於說明,本文中可能使用例如「在…下方(beneath)」、「在…下面(below)」、「下部的(lower)」、「上方(above)」、「上部的(upper)」等空間相對性用語來闡述圖中所示出的一個元件或特徵與另一(些)元件或特徵的關係。應理解,所述空間相對性用語旨在除圖中所繪示的定向外亦囊括裝置在使用或操作中的不同定向。舉例而言,若將各圖中所示的裝置翻轉,則闡述為位於其他元件或特徵「下面」或「下方」的元件將被定向成位於其他元件或特徵「上方」。因此,示例性用語「在…下面」可囊括在…上方及在…下面兩種定向。裝置可具有其他定向(旋轉90度或其他定向),且本文中所使用的空間相對性描述語可相 應地進行解釋。
同樣地,為易於說明,本文中可能使用例如「高態(high)」、「低態(low)」、「上拉(pull up)」、「下拉(pull down)」、「1」、「0」等電性用語來闡述如圖中所示的電壓位準或電流相對於其他電壓位準或另一(些)元件或特徵的關係。應理解,所述電性相對用語旨在除圖中所繪示的電壓或電流以外亦囊括裝置在使用或操作中的不同參考電壓。舉例而言,若圖中的裝置或訊號被反轉或使用其他參考電壓、電流、或電荷,則與新的參考電壓或電流相較,被闡述為「高態」或「被上拉」的元件將為「低態」或「被下拉」。因此,示例性用語「高態」可囊括相對低或高的電壓或電流。裝置可另外基於不同的電性參考系,且本文中所使用的電性相對描述語可相應地進行解釋。
本文中所使用的術語僅用於闡述特定示例性實施例而非旨在限制本發明所揭露標的。除非上下文另有清晰指示,否則本文中所使用的單數形式「一(a、an)」及「所述(the)」均旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprise及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但並不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。
本文中參照作為理想化示例性實施例(及中間結構)的示意圖的剖視圖來闡述各示例性實施例。因此,預期會因例如製造技術及/或容差而與各圖所示的形狀有所變化。因此,各示例性 實施例不應被理解為僅限於本文所示的特定區形狀,而是將包括例如因製造所致的形狀偏差。舉例而言,被示出為矩形的經植入區通常將具有圓形或彎曲特徵,及/或在其邊緣處具有植入濃度梯度而非自經植入區至未植入區具有二元變化(binary change)。同樣,藉由植入而形成的掩埋區可能會在所述掩埋區與進行植入所經由的表面之間的區中引起某種程度的植入。因此,各圖中所示出的區本質上是示意性的,且其形狀並非旨在示出裝置的區的實際形狀且並非旨在限制本發明所揭露標的的範圍。
除非另有定義,否則本文中所使用的所有用語(包括技術用語及科學用語)均具有與本發明所揭露標的所屬領域中具有通常知識者通常所理解的含義相同的含義。更應理解,例如常用字典中所定義的用語等用語應被解釋為具有與其在相關技術背景中的含義相一致的含義,而不應被解釋為具有理想化或過度形式化意義,除非本文中明確如此定義。
在下文中,將參照附圖詳細地闡釋各示例性實施例。
圖1是根據所揭露標的的系統100的示例性實施例的方塊圖。在各種實施例中,所述系統可為處理器或處理器核心的一部分。在各種實施例中,所述處理器可為以下各項的一部分:CPU、GPU、系統晶片(system-on-a-chip,SoC)、或其他計算裝置,例如膝上型電腦、桌上型電腦、工作站、個人數位助理、智慧型電話、平板電腦、以及其他適當的電腦或其虛擬機或虛擬計算裝置。
在各種實施例中,系統100可包括一或多個管線或者執行單元或電路。在所示實施例中,管線或者執行單元或電路由指令提取單元(instruction fetch unit,IFU)102及指令解碼單元(instruction decode unit,IDU)104表示。在此種實施例中,IFU 102可被配置成擷取下一指令或操作(通常自指令快取),並將其放置於處理器的管線中。IDU 104可被配置成轉換指令,所述指令被轉換成對系統100的其他部分進行控制的訊號且可被路由至適當的執行單元(例如,執行單元110A至110C)。
在所示實施例中,系統100可包括管線控制邏輯或電路106,管線控制邏輯或電路106被配置成向執行單元110A至110C發佈指令134並向執行單元110A至110C提供與指令相關聯的運算元或各條資料。例如,若指令是將1與2相加,則數值1及2將是運算元。然而,在電腦世界中,運算元將不使用值1及2,而是使用可儲存該些值的暫存器(例如,暫存器A及B)。
在所示實施例中,系統100可包括階層式暫存器檔案120,階層式暫存器檔案120包括數個暫存器或相對快速的記憶體位置。該些暫存器可儲存資料,且可被用作或稱作各種指令的運算元。
在所示實施例中,系統100可包括一或多個執行單元或電路110A至110C。在各種實施例中,可存在執行單元110A至110C的多個實例,使得可實質上同時處理多個指令。在各種實施例中,執行單元110可包括算術邏輯單元(arithmetic logic unit, ALU)、浮點單元(floating point unit,FPU)、實行其他數學運算或變換運算的其他電路系統;然而,應理解,上文僅為幾個說明性實例,所揭露標的並非僅限於所述實例。
在各種實施例中,SIMD處理器可包括多個由執行單元110A至110C形成的通道。由執行單元110A至110C形成的通道可被組織成使得其以鎖步(lock-step)來執行相同的指令。此可容許各通道共享公共管線控制邏輯106,使得來自單個指令的控制訊號在所有通道上被廣播。以SIMD指令為例,單個ADD指令可使多條資料被相加,執行單元110A至110C中的每一者處理一條資料。
在各種實施例中,系統100可藉由暫存器檔案120(例如,向量暫存器檔案(vector register file,VRF))向此由執行單元110形成的陣列供應運算元,暫存器檔案120可使用寬埠靜態隨機存取記憶體(static random access memory,SRAM)來實作。當系統100執行單個指令時,可自暫存器檔案120的單個列讀取每一運算元,並將其饋送至多個由執行單元110A至110C形成的通道中。類似地,在指令完成執行時,每一指令的結果可被寫入至暫存器檔案120的單個列中。
在各種實施例中,階層式暫存器檔案120可包括相對大的暫存器電路或主暫存器電路108。此主暫存器電路108可包括主暫存器檔案電路。此主暫存器電路108可包括多組(bank)相對大的記憶體胞元,且亦提供足夠的頻寬來保持寬的SIMD資料路 徑。在一些實施例中,此大的主暫存器檔案108及其所支援的運算元存取可為大多數GPU設計上的主要功率消耗者。
在各種實施例中,階層式暫存器檔案120亦可包括數個相對小的局部暫存器檔案112A至112C。該些局部暫存器檔案112A至112C可降低運算元存取功率。在一些實施例中,局部暫存器檔案112A至112C可與由執行單元110A至110C形成的通道緊耦合,且可一對一地相關聯。
在此種實施例中,局部暫存器檔案112A至112C可在每次存取時消耗較少的功率,且用於儲存頻繁使用的程式變數。主暫存器電路108則可在執行單元110A至110C之間被共享,並負責較大的及/或較不頻繁使用的程式資料,進而提供在同一SIMD處理器中多工其執行的大量執行緒所需的儲存容量。
傳統上,編譯器將不知曉或不能夠預測指令將存取哪個暫存器,且將藉由基值(base value)加上索引值來引用暫存器。為了判斷應存取哪個暫存器,管線控制邏輯106將進行對基加上索引的恰當計算,然後將該記憶體位址廣播至局部暫存器檔案112A至112C。在此種實施例中,局部暫存器檔案112A至112C將進行鎖步,其中使用單個索引值在每一局部暫存器檔案112A/112B/112C上對運算元進行定址。此外,此種計算(基加上索引)意味著管線控制邏輯106將必須在實際指令可被實行之前實行初步計算(且使用記憶體及功率來實行初步計算)。
在所示實施例中,系統100可包括在局部暫存器檔案 112A至112C中具有靈活定址能力的階層式暫存器檔案120。在此種實施例中,可使用可自主暫存器電路108提供的不同索引來對每一由局部暫存器檔案112形成的通道動態地進行索引編製或定址。
在此種實施例中,主暫存器電路108可被配置成為每一局部暫存器檔案112A/112B/112C維持有效索引、儲存位置或記憶體位址。管線控制邏輯106可向主暫存器電路108提供暫存器或通道識別符132。主暫存器電路108可將此暫存器或通道識別符132轉譯或映射成局部暫存器識別符或索引136。主暫存器電路108可將此局部暫存器識別符或索引136供應至相應的局部暫存器檔案112A/112B/112C。
在此種實施例中,局部暫存器檔案112A至112C可分別使用該局部暫存器識別符或索引136來擷取所期望運算元(或與運算元相關聯的資料),並分別將其供應至執行單元110A至110C。在另一實施例中,局部暫存器識別符或索引136亦可用於指定局部暫存器檔案112A/112B/112C之一中欲由來自相應執行單元110A/110B/110C的值寫入的目的地運算元。執行單元110A至110C可實行所期望運算(例如,加法),且分別將值返回至相應局部暫存器檔案112A/112B/112C或主暫存器電路108中的一者或二者。同樣,在各種實施例中,若所請求資料不在相應的局部暫存器檔案112A/112B/112C中,則其可由主暫存器電路108供應至相應的執行單元110A/112B/112C。
在此種實施例中,每一局部暫存器檔案112A的有效索引或記憶體位置可與其他局部暫存器檔案112B及112C獨立或動態地不同。如圖2B所示,有效索引不需要鎖步地移動。在此種實施例中,不需要在指令執行之前發生對恰當暫存器的計算(基加上索引)。因此,可節省功率及時間。
在各種實施例中,系統100可被配置成以二種模式運行:傳統的軟體執行模式,其中軟體未被編碼以對局部暫存器檔案112A至112C進行動態索引編製;以及經最佳化模式,其中軟體已被如此編碼。例如,採取以下碼。
Figure 109112025-A0305-02-0015-1
未被設計或配置成利用系統100的按通道索引編製能力的編譯器可產生組譯碼(assembly code),例如:LD.SHARED Rj,[Rbase+Ri];IADD Rj,Rj,1;ST.SHARED Rj,[Rbase+Ri];其中將資料自藉由Rbase+Ri(其中i是索引)計算的記憶體位址載入至暫存器Rj,然後實行指令(IADD)(將1加至Rj並儲存回Rj中),然後將結果(現在在Rj中)放回至藉由Rbase+ Ri計算的記憶體位址。可看出,在一個實施例中,讀取-修改-寫入(read-modify-write,MRW)可需要3個指令來實行。在此種實施例中,通常使用記憶體來儲存及計算Rbase+Ri值。
相反地,被設計或配置成利用系統100的按通道索引編製能力的編譯器可產生組譯碼,例如:IADD LR[Ri],LR[Ri],1
首先要注意的是載入(LD)指令及儲存(ST)指令的省略,進而因具有單個指令(IADD)而得到~66%的節省。在此種實施例中,LR分別代表局部暫存器檔案112A至112C,且程式變數「索引」可被載入至Ri中(例如,藉由主暫存器電路108)。此外,不需要求助於高速暫存記憶體(scratchpad memory)來依據基值(例如,Rbase)計算記憶體位置。
在各種實施例中,視所執行的碼而定,系統100可被配置成以任一模式運行。在另一實施例中,系統100可被配置成使用按通道索引編製模式來處理所有指令。
圖2A是根據所揭露標的的系統的示例性實施例的方塊圖。在此種實施例中,示出了傳統的操作模式。
在此種實施例中,系統200可包括管線控制邏輯106,如上所述。系統200可包括各種由執行單元110A至110D形成的通道以及其相關聯的局部暫存器檔案112A至112D。
系統200可包括主暫存器電路108,如上所述。在所示實施例中,主暫存器電路108可包括被配置成儲存資料且由執行單 元通道共享的主暫存器檔案212。主暫存器電路108亦可包括被配置成為每一局部暫存器檔案112A/112B/112C/112D儲存有效索引或記憶體位址且參照圖2B更詳細闡述的索引暫存器電路214。
在所示實施例中,局部暫存器檔案112A至112D的索引編製識別符或有效記憶體位址233由管線控制邏輯106計算,並在所有通道上被廣播。在所示實施例中,在所有局部暫存器檔案112A、112B、112C及112D上,第四記憶體位置是有效的。儲存於那裡的值被同時提供至所有執行單元110A、110B、110C及110D。
圖2B是根據所揭露標的的系統200的示例性實施例的方塊圖。在此種實施例中,示出了按通道操作模式。在所示實施例中,各種訊號僅有助於使所述圖為說明性的。
再次,在此種實施例中,系統200可包括管線控制邏輯106,如上所述。系統200可包括各種由執行單元110A至110D形成的通道以及其相關聯的局部暫存器檔案112A至112D。
系統200可包括主暫存器電路108,如上所述。在所示實施例中,主暫存器電路108可包括被配置成儲存資料且由執行單元通道共享的主暫存器檔案212。主暫存器電路108亦可包括被配置成為每一局部暫存器檔案112儲存有效索引或記憶體位址的一或多個索引暫存器電路214。
在所示實施例中,管線控制邏輯106可向主暫存器電路108發佈索引暫存器識別符232。按照上述示例性碼的說法,此索 引暫存器識別符232可包括值Ri,其指示每一通道的有效索引或記憶體位址。
在此種實施例中,主暫存器電路108可在索引暫存器電路214中查找每一通道的有效索引或記憶體位址。然後,主暫存器電路108可將此有效索引或記憶體位址(訊號242A至242D)分別傳遞至局部暫存器檔案112A至112D。然後,局部暫存器檔案112A至112D可將分別儲存於那裡的值(訊號244A至244D)分別提供至執行單元110A至110D進行處理。同樣,如上所述,管線控制邏輯106可向執行單元110A至110D提供指令控制訊號234。
在所示實施例中,對於通道0或A,訊號242A或R[0]可指示有效記憶體位置是253,且位置253可儲存表示為LR(R[0])的值。在所示實施例中,對於通道1或B,訊號242B或R[1]可指示有效記憶體位置是254,且位置254可儲存表示為LR(R[1])的值。在所示實施例中,對於通道2或C,訊號242C或R[2]可指示有效記憶體位置是252,且位置252可儲存表示為LR(R[2])的值。在所示實施例中,對於通道3或D,訊號242D或R[3]可指示有效記憶體位置是257,且位置257可儲存表示為LR(R[3])的值。應理解,上文僅為幾個說明性實例,所揭露標的並非僅限於所述實例。
圖3是根據所揭露標的的系統300的示例性實施例的方塊圖。在所示實施例中,系統300可包括系統晶片(SoC)、多晶片模組(multi-chip module,MCM)、其他積體電路或積體電路構 造。
在所示實施例中,系統300可包括多個處理器核心或處理電路302。如上所述,在所示實施例中,每一核心302可包括IFU 102、IDU 104、管線控制邏輯106、主暫存器電路108、執行單元110及局部暫存器檔案112以及其他組件及電路。
在所示實施例中,系統300亦可包括核心外記憶體或核心外記憶體電路304。如上所述,當移動資料或實行暫存器計算時,此核心外記憶體304可被用作管線控制邏輯106的高速暫存儲存器或暫時儲存器。應理解,上文僅為一個說明性實例,所揭露標的並非僅限於所述實例。
圖4是可包括根據所揭露標的的原理形成的半導體裝置的資訊處理系統400的示意性方塊圖。
參照圖4,資訊處理系統400可包括根據所揭露標的的原理構造的裝置中的一或多者。在另一實施例中,資訊處理系統400可採用或執行根據所揭露標的的原理的一或多種技術。
在各種實施例中,資訊處理系統400可包括計算裝置,例如膝上型電腦、桌上型電腦、工作站、伺服器、刀鋒型伺服器、個人數位助理、智慧型電話、平板電腦、及其他適當電腦、或者其虛擬機器或虛擬計算裝置。在各種實施例中,資訊處理系統400可由使用者(圖中未示出)使用。
根據所揭露標的的資訊處理系統400可更包括中央處理單元(central processing unit,CPU)、邏輯、或處理器410。在一 些實施例中,處理器410可包括一或多個功能單元區塊(functional unit block,FUB)或者組合邏輯區塊(combinational logic block,CLB)415。在此種實施例中,組合邏輯區塊可包括各種布林邏輯運算(例如,反及(NAND)、反或(NOR)、反(NOT)、互斥或(XOR))、穩定化邏輯裝置(例如,正反器、鎖存器)、其他邏輯裝置、或其組合。該些組合邏輯運算可以簡單或複雜的方式被配置成處理輸入訊號以達成所期望結果。應理解,儘管闡述了同步組合邏輯運算的幾個說明性實例,但所揭露標的並非受此限制且可包括非同步運算或其混合運算。在一個實施例中,組合邏輯運算可包括多個互補金屬氧化物半導體(complementary metal oxide semiconductor,CMOS)電晶體。在各種實施例中,該些CMOS電晶體可被配置至實行邏輯運算的閘中;然而應理解,其他技術可被使用且處於所揭露標的的範圍內。
根據所揭露標的的資訊處理系統400可更包括揮發性記憶體420(例如,隨機存取記憶體(Random Access Memory,RAM))。根據所揭露標的的資訊處理系統400可更包括非揮發性記憶體430(例如,硬碟機、光學記憶體、反及記憶體、或快閃記憶體)。在一些實施例中,揮發性記憶體420、非揮發性記憶體430、或者其組合或部分可被稱為「儲存媒體」。在各種實施例中,揮發性記憶體420及/或非揮發性記憶體430可被配置成以半永久或實質上永久形式來儲存資料。
在各種實施例中,資訊處理系統400可包括一或多個網 路介面440,所述一或多個網路介面440被配置成使得資訊處理系統400能夠成為通訊網路的一部分及經由通訊網路進行通訊。無線相容認證(Wi-Fi)協定的實例可包括但不限於電機電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11g、IEEE 802.11n。蜂巢式協定的實例可包括但不限於:IEEE 802.16m(亦稱進階無線都會區域網路(Metropolitan Area Network,MAN)、進階長期演進(Long Term Evolution,LTE)、全球行動通訊系統(Global System for Mobile Communications,GSM)增強資料速率演進(Enhanced Data rates for GSM Evolution,EDGE)、演進型高速封包存取(Evolved High-Speed Packet Access,HSPA+)。有線協定的實例可包括但不限於IEEE 802.3(亦稱乙太網路)、光纖頻道(Fibre Channel)、電力線通訊(例如,HomePlug、IEEE 1901)。應理解,上文僅為幾個說明性實例,所揭露標的並非僅限於所述實例。
根據所揭露標的的資訊處理系統400可更包括使用者介面單元450(例如,顯示器配接器、觸感介面、人類介面裝置)。在各種實施例中,此使用者介面單元450可被配置成自使用者接收輸入及/或將輸出提供至使用者。亦可使用其他種類的裝置來達成與使用者的互動;舉例而言,提供至使用者的回饋可為任何形式的感覺回饋,例如,視覺回饋、聽覺回饋、或觸覺回饋;且來自使用者的輸入可以任何形式(包括聲學輸入、語音輸入、或觸覺輸入)被接收。
在各種實施例中,資訊處理系統400可包括一或多個其他裝置或者硬體組件460(例如,顯示器或監視器、鍵盤、滑鼠、照相機、指紋讀取器、視訊處理器)。應理解,上文僅為幾個說明性實例,所揭露標的並非僅限於所述實例。
根據所揭露標的的資訊處理系統400可更包括一或多個系統匯流排405。在此種實施例中,系統匯流排405可被配置成以通訊方式耦合處理器410、揮發性記憶體420、非揮發性記憶體430、網路介面440、使用者介面單元450、及一或多個其他硬體裝置460。由處理器410處理的資料或自非揮發性記憶體430外部輸入的資料可儲存於非揮發性記憶體430或揮發性記憶體420中。
在各種實施例中,資訊處理系統400可包括或執行一或多個軟體組件470。在一些實施例中,軟體組件470可包括作業系統(operating system,OS)及/或應用程式。在一些實施例中,OS可被配置成為應用程式提供一或多個服務並作為媒介在應用程式與資訊處理系統400的各種硬體組件(例如,處理器410、網路介面440)之間進行管理或發揮作用。在此種實施例中,資訊處理系統400可包括一或多個原生應用程式,所述一或多個原生應用程式可安裝於本端(例如,非揮發性記憶體430內)且被配置成由處理器410直接執行並與OS直接互動。在此種實施例中,原生應用程式可包括預編譯的機器可執行碼。在一些實施例中,原生應用程式可包括指令碼解譯器(例如,C殼(C shell,csh)、AppleScript、AutoHotkey)或虛擬執行機器(virtual execution machine,VM)(例如,Java虛擬機器、微軟通用語言執行環境(Microsoft Common Language Runtime)),所述指令碼解譯器或虛擬執行機器被配置成將原始碼(source code)或目的碼(object code)轉譯成然後由處理器410執行的可執行碼。
上文所述的半導體裝置可使用各種封裝技術來進行包封。舉例而言,根據所揭露標的的原理構造的半導體裝置可使用以下技術中的任一者來進行包封:疊層封裝(package on package,POP)技術、球柵陣列(ball grid array,BGA)技術、晶片尺度封裝(chip scale package,CSP)技術、塑膠引線晶片載體(plastic leaded chip carrier,PLCC)技術、塑膠雙列直插式封裝(plastic dual in-line package,PDIP)技術、窩伏爾組件中晶粒封裝(die in waffle pack)技術、晶圓內晶粒封裝(die in wafer form)技術、板上晶片封裝(chip on board,COB)技術、雙列直插式陶瓷封裝(ceramic dual in-line package,CERDIP)技術、塑膠公制四方扁平封裝(plastic metric quad flat package,PMQFP)技術、塑膠四方扁平封裝(plastic quad flat package,PQFP)技術、小輪廓封裝(small outline package,SOIC)技術、收縮型小輪廓封裝(shrink small outline package,SSOP)技術、薄型小輪廓封裝(thin small outline package,TSOP)技術、薄型四方扁平封裝(thin quad flat package,TQFP)技術、系統級封裝(system in package,SIP)技術、多晶片封裝(multi-chip package,MCP)技術、晶圓級製作封裝(wafer-level fabricated package,WFP)技術、晶圓級加工堆疊封 裝(wafer-level processed stack package,WSP)技術、或熟習此項技術者將知曉的其他技術。
各方法步驟可由一或多個可程式化處理器實行,所述一或多個可程式化處理器實行電腦程式以藉由對輸入資料進行操作並產生輸出來執行功能。各方法步驟亦可由特殊用途邏輯電路系統(例如,現場可程式化閘陣列(field programmable gate array,FPGA)或應用專用積體電路(application-specific integrated circuit,ASIC))來實行,且設備可被實作為所述特殊用途邏輯電路系統。
在各種實施例中,電腦可讀取媒體可包括當被執行時使裝置實行各方法步驟的至少一部分的指令。在一些實施例中,電腦可讀取媒體可包含於磁性媒體、光學媒體、其他媒體、或其組合(例如,光碟-唯讀記憶體(Compact Disc-Read Only Memory,CD-ROM)、硬碟機、唯讀記憶體、快閃磁碟機)中。在此種實施例中,電腦可讀取媒體可為有形且非暫時性地實施的製品。
儘管已參照示例性實施例闡述了所揭露標的的原理,然而對於熟習此項技術者將顯而易見,可在不背離該些所揭露概念的範圍的條件下對所述實施例作出各種改變及潤飾。因此,應理解,上述實施例並非是限制的,而僅是說明性的。因此,所揭露概念的範圍應由對以下申請專利範圍及其等效內容的最廣泛的所允許解釋來決定,而不應由上述說明限定或限制。因此,應理解,隨附申請專利範圍旨在涵蓋歸屬於各實施例的範圍內的所有此種 潤飾及改變。
100:系統
102:指令提取單元(IFU)
104:指令解碼單元(IDU)
106:管線控制邏輯或電路
108:主暫存器電路/主暫存器檔案
110A、110B、110C:執行單元
112:局部暫存器檔案
120:階層式暫存器檔案/暫存器檔案
132:暫存器或通道識別符
136:局部暫存器識別符或索引

Claims (20)

  1. 一種用於暫存器記憶體的設備,包括:一或多個執行單元電路,其各自被配置成存取一或多條資料;一或多個局部暫存器檔案電路,其各自與所述一或多個執行單元電路中相應的執行單元電路相關聯,且各自被配置成儲存所述一或多條資料;以及主暫存器電路,包括:主暫存器檔案電路,被配置成儲存所述一或多條資料,以及局部索引暫存器電路,被配置成將由所述主暫存器檔案電路供應的索引映射成所述局部暫存器檔案電路中的儲存位置,且其中所述主暫存器電路被配置成:自控制電路接收欲存取經指定的資料的所述儲存位置的請求,且向目標局部暫存器檔案電路供應所述經指定的資料在所述目標局部暫存器檔案電路中的儲存位置。
  2. 如請求項1所述的設備,其中所述一或多個局部暫存器檔案電路具有基於索引的儲存位置系統,且其中所述一或多個局部暫存器檔案電路中的每一者被配置成與其他的局部暫存器檔案電路的有效索引獨立地來存取一條資料。
  3. 如請求項1所述的設備,其中所述設備包括階層式暫存器檔案電路,其中所述階層式暫存器檔案電路包括所述主暫存器檔案電路及所述一或多個局部暫存器檔案電路。
  4. 如請求項1所述的設備,其中所述一或多個執行單元電路包括算術邏輯單元(ALU)電路。
  5. 如請求項1所述的設備,其中所述主暫存器檔案電路在所述一或多個執行單元電路之間被共享。
  6. 如請求項1所述的設備,更包括所述控制電路,其中所述控制電路被配置成將單指令多資料(SIMD)指令分配給所述一或多個執行單元電路的至少一子集,且請求為所述一或多個執行單元電路存取多條資料來作為所述單指令多資料指令的運算元。
  7. 如請求項6所述的設備,其中所述單指令多資料指令的所述運算元包括對多個局部暫存器檔案電路中的所述儲存位置的直接引用。
  8. 如請求項1所述的設備,其中所述一或多個局部暫存器檔案電路中的每一者的儲存位置由索引值確定,所述索引值是在不考慮其他局部暫存器檔案電路的索引值的情況下確定及維持的。
  9. 如請求項1所述的設備,其中所述主暫存器電路被配置成藉由僅存取所述局部索引暫存器電路而不存取核心外記憶體來確定一條資料在所述目標局部暫存器檔案電路中的儲存位 置。
  10. 一種用於暫存器記憶體的系統,包括:處理器核心,包括:一或多個執行單元電路,其各自被配置成存取一或多條資料;一或多個局部暫存器檔案電路,其各自與相應的執行單元電路相關聯,且各自被配置成儲存所述一或多條資料;以及主暫存器電路,所述主暫存器電路包括局部索引暫存器電路,所述局部索引暫存器電路被配置成為所述一或多個局部暫存器檔案電路中的每一者儲存有效索引值且被配置成因應於來自控制電路的欲存取目標執行單元電路的請求而供應與所述目標執行單元電路相關聯的所述有效索引值;以及核心外記憶體電路,被配置成儲存所述一或多條資料。
  11. 如請求項10所述的系統,其中所述一或多個局部暫存器檔案電路中的每一者被配置成藉由所述相應的局部暫存器檔案電路的所述有效索引值而與其他局部暫存器檔案電路的所述有效索引值獨立地來存取一條資料。
  12. 如請求項10所述的系統,其中所述處理器核心包括階層式暫存器檔案電路,其中所述階層式暫存器檔案電路包括主暫存器檔案電路及所述一或多個局部暫存器檔案電路。
  13. 如請求項10所述的系統,更包括所述控制電路,其中所述控制電路被配置成判斷指令是第一類型還是第二類 型,若所述指令是所述第一類型,則採用所述核心外記憶體電路來計算運算元,且若所述指令是所述第二類型,則直接向所述主暫存器電路請求有效索引。
  14. 如請求項10所述的系統,其中所述主暫存器電路包括在所述一或多個執行單元電路之間共享的主暫存器檔案。
  15. 如請求項10所述的系統,更包括所述控制電路,其中所述控制電路被配置成將單指令多資料(SIMD)指令分配給多個執行單元電路的至少一子集,且請求為所述一或多個執行單元電路存取資料來作為所述單指令多資料指令的運算元。
  16. 如請求項15所述的系統,其中所述單指令多資料指令的所述運算元包括對所述一或多個局部暫存器檔案電路中的儲存位置的直接引用。
  17. 如請求項10所述的系統,其中所述一或多個局部暫存器檔案電路中的每一者的儲存位置由索引值確定,所述索引值是在不考慮其他局部暫存器檔案電路的索引值的情況下確定及維持的。
  18. 如請求項10所述的系統,其中所述主暫存器電路被配置成藉由僅存取所述局部索引暫存器電路而不存取所述核心外記憶體電路來確定一條資料在所述目標局部暫存器檔案電路中的儲存位置。
  19. 一種用於暫存器記憶體的設備,包括:多個執行單元電路,其各自被配置成存取一或多條資料;多個局部暫存器檔案電路,其各自與相應的執行單元電路相關聯,且各自被配置成儲存多條資料;以及主暫存器電路,包括:主暫存器檔案電路,被配置成為所述多個執行單元電路的至少一部分儲存資料,以及局部索引暫存器電路,被配置成識別所述多個局部暫存器檔案電路中的有效儲存位置,以及控制電路,被配置成:向目標執行單元電路發佈指令,且指示所述局部索引暫存器電路在所述有效儲存位置處存取與所述目標執行單元電路相關聯的局部暫存器檔案電路。
  20. 如請求項19所述的設備,其中所述多個局部暫存器檔案電路中的每一者的儲存位置由索引值確定,所述索引值是在不考慮其他局部暫存器檔案電路的索引值的情況下確定及維持的。
TW109112025A 2019-04-22 2020-04-09 用於暫存器記憶體的系統及設備 TWI836055B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962837186P 2019-04-22 2019-04-22
US62/837,186 2019-04-22
US16/445,199 US11029954B2 (en) 2019-04-22 2019-06-18 Per-lane dynamic indexing in temporary registers
US16/445,199 2019-06-18

Publications (2)

Publication Number Publication Date
TW202107275A TW202107275A (zh) 2021-02-16
TWI836055B true TWI836055B (zh) 2024-03-21

Family

ID=72832410

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109112025A TWI836055B (zh) 2019-04-22 2020-04-09 用於暫存器記憶體的系統及設備

Country Status (4)

Country Link
US (1) US11029954B2 (zh)
KR (1) KR20200123750A (zh)
CN (1) CN111831338A (zh)
TW (1) TWI836055B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120011348A1 (en) * 2010-07-12 2012-01-12 International Business Machines Corporation Matrix Multiplication Operations Using Pair-Wise Load and Splat Operations
US20120079503A1 (en) * 2010-09-24 2012-03-29 William James Dally Two-Level Scheduler for Multi-Threaded Processing
CN102707927A (zh) * 2011-04-07 2012-10-03 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
TW201732581A (zh) * 2015-12-22 2017-09-16 英特爾股份有限公司 用於載入索引與集中操作的指令及邏輯

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7477260B1 (en) * 2006-02-01 2009-01-13 Nvidia Corporation On-the-fly reordering of multi-cycle data transfers
US7489315B1 (en) * 2006-02-01 2009-02-10 Nvidia Corporation Pixel stream assembly for raster operations
US7925860B1 (en) * 2006-05-11 2011-04-12 Nvidia Corporation Maximized memory throughput using cooperative thread arrays
EP2289001B1 (en) * 2008-05-30 2018-07-25 Advanced Micro Devices, Inc. Local and global data share
US8266382B1 (en) * 2009-09-28 2012-09-11 Nvidia Corporation Cache interface protocol including arbitration and hints
US9665969B1 (en) 2009-09-29 2017-05-30 Nvidia Corporation Data path and instruction set for packed pixel operations for video processing
US8725989B2 (en) 2010-12-09 2014-05-13 Intel Corporation Performing function calls using single instruction multiple data (SIMD) registers
US8639882B2 (en) * 2011-12-14 2014-01-28 Nvidia Corporation Methods and apparatus for source operand collector caching
US9354892B2 (en) 2012-11-29 2016-05-31 Advanced Micro Devices, Inc. Creating SIMD efficient code by transferring register state through common memory
US10007518B2 (en) 2013-07-09 2018-06-26 Texas Instruments Incorporated Register file structures combining vector and scalar data with global and local accesses
CN105389134B (zh) * 2015-12-11 2019-01-04 华中科技大学 一种闪存接口控制方法及装置
US10678545B2 (en) * 2016-07-07 2020-06-09 Texas Instruments Incorporated Data processing apparatus having streaming engine with read and read/advance operand coding
US10761850B2 (en) * 2017-12-28 2020-09-01 Texas Instruments Incorporated Look up table with data element promotion

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120011348A1 (en) * 2010-07-12 2012-01-12 International Business Machines Corporation Matrix Multiplication Operations Using Pair-Wise Load and Splat Operations
US20120079503A1 (en) * 2010-09-24 2012-03-29 William James Dally Two-Level Scheduler for Multi-Threaded Processing
CN102707927A (zh) * 2011-04-07 2012-10-03 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
TW201732581A (zh) * 2015-12-22 2017-09-16 英特爾股份有限公司 用於載入索引與集中操作的指令及邏輯

Also Published As

Publication number Publication date
US11029954B2 (en) 2021-06-08
CN111831338A (zh) 2020-10-27
US20200334037A1 (en) 2020-10-22
TW202107275A (zh) 2021-02-16
KR20200123750A (ko) 2020-10-30

Similar Documents

Publication Publication Date Title
KR102689910B1 (ko) 고효율 러닝 시스템들을 위한 이종 가속기
US9747108B2 (en) User-level fork and join processors, methods, systems, and instructions
CN110659068A (zh) 用于张量置换引擎的装置和方法
US9396020B2 (en) Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator
US20150007196A1 (en) Processors having heterogeneous cores with different instructions and/or architecural features that are presented to software as homogeneous virtual cores
US9245601B2 (en) High-density latch arrays
CN109508206B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
CN109416640B (zh) 孔径访问处理器、方法、系统和指令
US10055136B2 (en) Maintaining guest input/output tables in swappable memory
KR20200002606A (ko) 데이터 표현들 사이의 코히어런트 가속 변환을 위한 장치 및 방법
US20240211256A1 (en) Partition and isolation of a processing-in-memory (pim) device
US20160098276A1 (en) Operand conflict resolution for reduced port general purpose register
US20230367492A1 (en) Flexible provisioning of coherent memory address decoders in hardware
Wang et al. Performance-centric register file design for GPUs using racetrack memory
CN108572812B (zh) 存储器加载和算术加载单元(alu)融合
US20230195645A1 (en) Virtual partitioning a processor-in-memory ("pim")
TWI836055B (zh) 用於暫存器記憶體的系統及設備
US20190129718A1 (en) Packed 16 bits instruction pipeline
EP4155960A1 (en) Three-dimensional stacked programmable logic fabric and processor design architecture
US10430197B2 (en) Banking register renaming to reduce power
US20230393849A1 (en) Method and apparatus to expedite system services using processing-in-memory (pim)
US11989582B2 (en) Apparatus and method for low-latency decompression acceleration via a single job descriptor
US8768991B2 (en) Mechanism to find first two values
US20240330188A1 (en) Systems and methods for distributing work between a host and an accelerator using a shared memory
WO2024138235A2 (en) Backward-compatible heterogeneous multi-core processor