TWI719788B - 可重組態資料處理器的虛擬化 - Google Patents

可重組態資料處理器的虛擬化 Download PDF

Info

Publication number
TWI719788B
TWI719788B TW108148376A TW108148376A TWI719788B TW I719788 B TWI719788 B TW I719788B TW 108148376 A TW108148376 A TW 108148376A TW 108148376 A TW108148376 A TW 108148376A TW I719788 B TWI719788 B TW I719788B
Authority
TW
Taiwan
Prior art keywords
configurable
configuration
unit
array
memory
Prior art date
Application number
TW108148376A
Other languages
English (en)
Other versions
TW202040368A (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 TW202040368A publication Critical patent/TW202040368A/zh
Application granted granted Critical
Publication of TWI719788B publication Critical patent/TWI719788B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • G06F15/7882Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for self reconfiguration
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Logic Circuits (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)

Abstract

一種可重組態資料處理器,其包含可組態成定義虛擬機器的可組態單元陣列和匯流排系統。所述系統可以將所述可組態單元陣列劃分成複數個可組態單元集合,並透過所述匯流排系統阻隔特定集合內的可組態單元與所述特定集合外的可組態單元之間的通訊。可以將記憶體存取控制器連接到所述匯流排系統,可組態成將對於源自所述特定集合內的所述可組態單元陣列外的記憶體的存取侷限於分配給所述特定集合的記憶體空間。

Description

可重組態資料處理器的虛擬化
本技術關於可重組態架構的虛擬化,其可以特別是適用於粗粒度可重組態架構。 優先權申請案
本申請案主張美國非臨時申請案編號16/ 239,252(律師案卷號為SBNV 1000-1)之利益,其於2019年1月3日提交,所述申請案藉由參考被併入本文中。
可重組態處理器(包含現場可程式化閘陣列(FPGA))比使用執行電腦程式的通用處理器可能實現的具有更有效或更快速地各種功能。所謂的粗粒度可重組態架構(例如CGRA)是正在開發的,其中陣列中的可組態單元比通常使用的(更精細粒度的FPGA)複雜,並可以致使更快或更有效地執行各種功能。例如,已經提出的CGRA,可以實現節能高效的機器學習加速器和人工智慧工作負載。參見Prabhakar等人所著「Plasticine: A Reconfigurable Architecture for Parallel Patterns」,ISCA ’17,2017年6月24至28,加拿大安大略省多倫多市。
可重組態處理器的組態關於對組態描述的編譯,以產生由組態檔案(有時稱為位元流或位元檔案)表示的應用程式圖形,並且將組態檔案分配到處理器上的可組態單元。為了開始使用應用程式圖形實現的程序,必須為此程序載入組態檔案。為了更改使用應用程式圖形實現的程序,必須將組態檔案替換為新的組態檔案。
分配和載入組態檔案的程序和支援結構可以是複雜的,並且程序的執行可能很耗時。
在某些環境中,可能希望在單一可重組態處理器中同時執行多個應用程式圖形。
因此,希望提供支援可重組態處理器的虛擬化的技術。
描述了一種致使在粗粒度可重組態陣列處理器以及包含可組態單元陣列的其它類型可重組態處理器中執行多個不相關的應用程式圖形的技術。
本文所述的技術提供了一種可重組態資料處理器,其包含:可組態單元;連接到所述可組態單元陣列的匯流排系統,其可組態成將所述可組態單元陣列劃分成複數個可組態單元集合,並透過所述匯流排系統阻隔特定集合內的可組態單元與所述特定集合外的可組態單元之間的通訊。此外,連接到所述匯流排系統的記憶體存取控制器,可組態成將對於源自所述特定集合內的所述可組態單元陣列外的記憶體(諸如大容量DRAM、SRAM和其它記憶體類別)的存取侷限於分配給所述可組態單元陣列外的所述記憶體中的所述特定集合的記憶體空間。
在本文描述的實施例中,複數個記憶體存取控制器包含連接為所述匯流排系統上的可定址節點的記憶體存取控制器,並且可組態成將對於源自對應可組態單元集合內的所述可組態單元集合陣列外的記憶體的存取侷限於分配給所述對應集合的記憶體空間。
所述匯流排系統的一個範例包含連接至所述可組態單元陣列中的可組態單元的開關的網格,所述網格中的開關包含用於劃分所述匯流排系統的電路。所述網格中的開關包含可使用埠參數組態的電路,其根據所述埠參數啟用和禁用所述開關上的埠。
所述複數個可組態單元集合中的​​可組態單元集合可組態成使用虛擬位址來執行應用程式圖形。所述記憶體存取控制器包含或具有對於可組態表的存取,以將源自在所述特定集合內執行的應用程式圖形的請求中的虛擬位址轉換至分配給所述特定集合的所述記憶體空間中的位址。針對本說明書的目的,實體位址是由匯流排系統上的記憶體介面使用的位址,其用於識別外部記憶體中的記憶體空間中的位置,而虛擬位址是諸如透過記憶體存取控制器將其轉換為實體位址的特定虛擬機器中的應用程式圖形所使用的位址。在本文所述的裝置中,匯流排系統包含頂層網路和陣列層網路。頂層網路被連接到外部資料介面,以使用實體位址與陣列外部的記憶體進行通訊。陣列層網路被連接到可組態單元陣列中的可組態單元。在如本文所述的兩階層匯流排系統中,記憶體存取控制器被連接到陣列層網路以及頂層網路,並包含在頂層網路和陣列層網路之間路由資料傳輸的邏輯。
陣列層網路可以包含開關的網格,其中所述開關在所述網格中,所述可組態單元陣列中的所述可組態單元和所述記憶體存取控制器是所述陣列層網路上的可定址節點。
在一些實施例中,一種裝置包含含有複數個可組態單元的圖塊的可組態單元陣列。包含這種複數個圖塊的裝置可以在單一積體電路或單一多晶片模組上實現。所述匯流排系統可以包含在包含電路的所述圖塊之間的邊界上的開關,以將所述匯流排系統在所述圖塊邊界上劃分。更一般地,可組態單元陣列可以包含用於劃分包含陣列中的可劃分群組的可組態單元的區塊。在一些實施例中,可劃分群組可以包含不止一種類型的可組態單元。在一些實施例中,陣列可以包含原子可劃分群組,其包含可用於組成虛擬機器的最小集合可組態單元。同樣地,可以將匯流排系統組態成隔離可劃分群組的邊界上的陣列中的可組態單元。
描述了一種裝置,其中組態控制器被連接到匯流排系統,所述匯流排可以用於在可組態單元集合中交換應用程式圖形,而不會干擾應用程式圖形在同一可重組態處理器上以其它可組態單元集合執行。包含這種組態控制器的可重組態處理器可以在單一積體電路或單一多晶片模組上實現。組態控制器可以包含用以執行組態載入程序(包含將組態檔案分配到陣列中的可組態單元的各個集合中的可組態單元)的邏輯,其中可組態單元集合之一中的應用程式圖形在另一個可組態單元集合的組態載入程序期間是可執行的。此外,組態控制器可以包含執行組態卸載程序(包含從各個集合中的可組態單元卸載狀態資訊)的邏輯,其中可組態單元集合中的應用程式圖形在另一個可組態單元集合的組態卸載程序期間是可執行的。組態控制器可以在獨立於其它可組態單元集合的個別可組態單元上執行組態載入和卸載操作。
通常,描述了包含用於組態包含可組態單元陣列和連接到所述可組態單元陣列的匯流排系統的可重組態資料處理器的方法的技術。所述方法可以包含透過所述匯流排系統阻隔特定集合內的可組態單元與所述特定集合外的可組態單元之間的通訊,將所述可組態單元陣列劃分成複數個可組態單元集合;以及將對於源自所述特定集合內的所述可組態單元陣列外的記憶體的存取侷限於分配給所述可組態單元陣列外的所述記憶體中的所述特定集合的記憶體空間。
本文描述的技術提供了CGRA或其它類型的可組態單元陣列的動態重組態。主機中的運行時間應用程式或服務可以包含用於在可重組態處理器內分配和重新分配資源的例程。在一個這種例程中,主機可以在各個可組態單元集合中載入應用程式圖形,並啟動載入的應用程式圖形,以致使複數個應用程式圖形同時執行,或並行執行。當需要更改或更新正在執行的應用程式圖形時,主機可以在可組態單元集合之一中停止和卸載選定的應用程式圖形,接著載入所述集合中之一中的另一個應用程式圖形,而可組態單元陣列中的其它可組態單元集合中的其它應用程式圖形繼續執行。
可以在查看下面的圖式、詳細說明和申請專利範圍時看見本文中所述技術的其它態樣和優點。
以下的描述通常將參考特定的結構實施例和方法。應當理解,無意將所述技術侷限於具體揭露的實施例和方法,但是可以使用其它特徵、元素、方法和實施例來實施所述技術。描述了較佳實施例以說明本技術,而不是限制由請求項所定義的其範圍。本領域普通技術人員將在以下描述中認識到各種等效變化。
圖1是顯示包含主機120、記憶體140和可重組態資料處理器110的系統的系統圖。如圖1的範例所示,可重組態資料處理器110包含可組態單元(CU)和虛擬化邏輯195的陣列190。虛擬化邏輯195可以包含支援或允許同時執行在一個晶粒或一個多晶片模組上的可組態單元陣列中的多個不相關的應用程式圖形(或相關的應用程式圖形)的資源。在圖中,第一應用程式圖形在可組態單元的特定集合196中以虛擬機器VM1實現,而第二應用程式圖形在可組態單元的另一集合197中以虛擬機器VM2實現。
用於本說明書的目的之應用程式圖形包含用於被編譯為使用裝置來執行任務功能程序或程序集合的陣列中的可組態單元的組態檔案,諸如人工智慧或機器學習系統中的推理或學習。用於本說明書的目的之虛擬機器包含一組資源(包含虛擬化邏輯195和匯流排系統115的元素),其組態成以在應用程式圖形中看起來好像對於可用資源存在實體約束(諸如會在實體機器上有經驗)的方式來支援在可組態單元陣列中執行應用程式圖形。可以將虛擬機器建立為使用虛擬機器的任務功能的應用程式圖形的一部分,或者可以使用單獨的組態機制來建立。在本文所述的實施例中,虛擬機器是使用也在應用程式圖形中使用的可組態單元陣列的資源來實現的,因此用於應用程式圖形的組態檔案包含其對應虛擬機器的組態資料,並將應用程式圖形鏈接到可組態單元陣列中的特定可組態單元集合。
虛擬化邏輯195可以包含多個邏輯元件,其包含用於劃分陣列190的電路、一或多個記憶體存取控制器以及一或多個組態載入/卸載控制器,如下面更詳細描述的。
如本文所使用的,用語「組態載入/卸載控制器」是指組態載入控制器和組態卸載控制器的組合。組態載入控制器和組態卸載控制器可以使用單獨的邏輯和資料路徑資源來實現,或者可以使用共享邏輯和資料路徑資源來實現特定實施例。
處理器110可以在單一積體電路晶粒上或在多晶片模組上實現。積體電路可以封裝在單晶片模組或多晶片模組(MCM)中。MCM是由組裝到單一封裝中的多個積體電路晶粒組成的電子封裝,其組態為單一裝置。MCM的各種晶粒都安裝在基板上,而基板的裸晶粒例如是使用佈線鍵合、帶鍵合或倒裝晶片鍵合連接到表面或彼此連接。
處理器110包含透過線路125連接到主機120的外部I/O介面130,以及連接到記憶體140的外部I/O介面150。I/O介面130、150經由匯流排系統115連接到可組態單元的陣列190和虛擬化邏輯195。匯流排系統115可具有一塊資料的匯流排寬度,其在此範例中可以是128位元(整個參照128位元可以通常被視為範例塊大小)。通常,組態檔案的一塊可以具有N個資料位元,而匯流排系統可以組態成在一個匯流排週期內傳輸N個資料位元,其中N是任何實際的匯流排寬度。按分配順序分配的子檔案可以由一塊或適合於特定實施例的其它量的資料組成。本文描述的程序使用由每個資料的一塊組成的子檔案。當然,可以將所述技術組態成分配不同大小的子檔案,其包含例如可能由分佈在兩個匯流排週期中的兩塊組成的子檔案。
為了利用用於應用程式圖形和虛擬機器的組態檔案來組態可組態單元陣列190中的可組態單元,主機120可以透過介面130、匯流排系統115和可重組態資料處理器110中的介面150將組態檔案發送到記憶體140。可以按照適合特定架構的多種方式載入組態檔案,其包含在可組態處理器110外部的資料路徑中。可以透過記憶體介面150從記憶體140中檢索組態檔案。接著可以按本文描述的分配順序將虛擬機器中的應用程式圖形的組態檔案的塊發送到對應於虛擬機器的陣列190中的可組態單元集合中的可組態單元,而其它可組態單元集合或其它虛擬機器中的應用程式圖形可以繼續同時執行。為了支援虛擬化,組態檔案可以包含電路使用的參數,以劃分記憶體存取控制器使用的陣列和參數以及分配給特定虛擬機器的組態載入和卸載邏輯。
外部時脈產生器170或其它內部或外部時脈訊號源可以提供時脈訊號175或發送給可重組態資料處理器110中的元件(包含可組態單元的陣列190與匯流排系統115以及外部資料I/O介面)的時脈訊號。
2是可以在單一積體電路晶粒或多晶片模組上實現的CGRA(粗粒度可重組態架構)處理器的元件的簡化方塊圖。在此範例中,CGRA處理器具有2個圖塊(Tile1、Tile2)。圖塊包含連接到匯流排系統的可組態單元集合,在此範例中其包含陣列層網路。匯流排系統包含將圖塊連接到外部I/O介面205(或任何數目的介面)的頂層網路。在其它實施例中,可以利用不同的匯流排系統組態。在此實施例中,每個圖塊中的可組態單元是陣列層網路上的可定址節點。
四個圖塊中之各者都有4個AGCU(位址產生和合併單元)(例如MAGCU1、AGCU12、AGCU13、AGCU14)。AGCU是頂層網路上的節點和陣列層網路上的節點,並包含頂層網路上的節點和陣列層上的節點,並且包含用於在每個圖塊中的頂層網路上的節點和陣列層上的節點之間路由資料的資源。在其它實施例中,可以使用不同數目的AGCU,或者可以將它們的功能與CGRA處理器中的其它部件或圖塊中的可重組態元件結合在一起。
在此範例中,頂層網路上的節點包含一或多個外部I/O介面,其包含介面205。到外部裝置的介面包含用於在頂層網路上的節點和外部裝置之間路由資料的資源,諸如連接到介面的大容量記憶體、主機處理器、其它CGRA處理器、FPGA裝置等。
在此範例中,圖塊中的AGCU之一被組態成主AGCU,其包含用於圖塊的陣列組態載入/卸載控制器。在其它實施例中,一個以上的陣列組態載入/卸載控制器可以被實現,並且一個陣列組態載入/卸載控制器可以透過分佈在一個以上的AGCU之間的實現。在此範例中,圖塊中的所有AGCU都包含記憶體存取控制器(MAC)。在其它實施例中,可以將記憶體存取控制器實現為在陣列層和頂層網路上的單獨節點,並包含充當陣列層和頂層網路之間的閘道器的邏輯,其將與執行圖形的可組態單元集合的通訊侷限於分配給所述可組態單元集合的記憶體空間,以及(可選地)可使用頂層網路存取的其它分配的資源。記憶體存取控制器可以包含位址暫存器和位址轉換邏輯,其可組態成將對可組態單元陣列外的記憶體的存取侷限於分配給所述存取所源自的可組態單元集合的記憶體空間,或分配給所述可組態單元陣列外的記憶體中的資料定向到的記憶體空間。
在此範例中,MAGCU1包含用於Tile1的組態載入/卸載控制器,而MAGCU2包含用於Tile2的組態載入/卸載控制器。在其它實施例中,組態載入/卸載控制器可設計用於載入和卸載一個以上圖塊的組態。在其它實施例中,一個以上的組態控制器可設計用於單一圖塊的組態。此外,組態載入/卸載控制器可以在系統的其它部分中實現,其包含作為頂層網路和一或多個陣列層網路上的獨立節點。
頂層網路係使用相互連接的頂層開關(211-216)以及到頂層網路上的其它節點(包含AGCU和I/O介面205)來構建。頂層網路包含連接頂層開關的鏈路(例如L11、L12、L21、L22)。資料在鏈路上的頂層開關之間以封包的形式傳輸,並且從開關到連接到所述開關的網路上的節點。例如,頂層開關211和212透過鏈路L11連接,頂層開關214和215透過鏈路L12連接,頂層開關211和214透過鏈路L13連接,而頂層開關212和213透過鏈接L21連接。鏈接可以包含一或多個匯流排和支援控制線,其包含例如塊寬匯流排(向量匯流排)。例如,頂層網路可以包含可協同操作以類似於AXI相容協定的方式傳輸資料的資料、請求和響應通道。參見,AMBA®AXI和ACE協定規範,ARM,2017年。
頂層開關可以被連接到AGCU。例如,頂層開關211、212、214和215分別被連接到圖塊Tile1中的MAGCU1、AGCU12、AGCU13和AGCU14。頂層開關212、213、215和216分別被連接到圖塊Tile2中的MAGCU2、AGCU22、AGCU23和AGCU24。
頂層開關可以連接一或多個外部I/O介面(例如,介面205)。
3是可用於圖2的組態的圖塊和陣列層網路的簡化圖,其中陣列中的可組態單元是陣列層網路上的節點。
在此範例中,可組態單元陣列300包含多種類型的可組態單元。在此範例中的可組態單元的類型包含模式計算單元(PCU)、模式記憶體單元(PMU)、開關單元以及位址產生和合併單元(其各包含兩個位址產生器AG和共享的CU)。有關這些類型的可組態單元功能的範例,請參見Prabhakar等人的「Plasticine: A Reconfigurable Architecture For Parallel Patterns」,ISCA ’17,2017年6月24日至28日,多倫多,加拿大,其以參照方式併入本文,如同在此完整闡述。這些可組態單元均包含一個組態儲存,其包含一組暫存器或正反器,其代表運行程式的設置或順序,並且可以包含數個巢狀迴圈、每個迴圈迭代器的限制、每個階段要執行的指令、運算元的來源以及輸入和輸出介面的網路參數。
此外,這些可組態單元中之各者都包含組態儲存,其包含一組暫存器或正反器,其儲存可用於追蹤巢狀迴圈或其它情況下的進度的狀態。組態檔案包含位元流,其代表執行所述程式的每個部件的初始組態或啟動狀態。此位元流被稱為位元檔案。程式載入是根據位元檔案的內容來設置可組態單元陣列中的組態儲存區,以允許所有元件執行程式(即機器)的程序。程式載入可能還需要載入所有PMU記憶體。
陣列層網路包含使陣列中可組態單元互連的鏈接。所述陣列層網路中的鏈接包含一或多個和多種實體匯流排(在這種情況下包含三種):塊級向量匯流排(例如128位元資料)、字元級純量匯流排(例如32位元資料)和多位元級控制匯流排。例如,開關單元311和312之間的互連321包含具有128位元的向量匯流排寬度的向量匯流排互連、具有32位元的純量匯流排寬度的純量匯流排互連以及控制匯流排互連。
三種實體匯流排的傳輸資料粒度不同。在一個實施例中,向量匯流排可以攜帶包含16位元組(=128位元)資料的塊作為其酬載。純量匯流排可以具有32位元酬載,並承載純量運算元或控制資訊。控制匯流排可以攜帶諸如令牌之類的控制交握和其它訊號。向量和純量匯流排可以是交換的封包,其包含指示每個封包的目的地以及其它資訊(諸如當亂序接收到的封包時,可用於重組檔案的序列號)的標頭。每個封包標頭都可以包含識別目標開關單元的地理坐標(例如,陣列中的列和行)的目的地識別符,以及識別用於到達目的地單位的目的地開關(例如,北、南、東、西等)上的介面的介面識別符。例如,可以基於裝置中的時序電路對控制網路進行電路交換。組態載入/卸載控制器可以針對128位元的每個組態資料塊產生標頭。所述標頭在標頭匯流排上傳輸到可組態單元陣列中的每個可組態單元。
在一個範例中,在將塊作為向量輸入提供到可組態單元的向量匯流排上傳輸了128位元的資料塊。向量匯流排可以包含128條酬載線和一組標頭線。所述標頭可以包含每個塊的序列ID,其可以包含: •指示塊是否包含暫存器記憶體或組態儲存資料的位元。 •形成塊號的位元。 •指示行識別符的位元。 •指示列識別符的位元。 •指示元件識別符的位元。
對於載入操作,組態載入控制器可以將數目為N的塊以N-1到0的順序發送到可組態單元。對於此範例,塊5->塊4->塊3->塊2->塊1->塊0的最高有效位元第一順序發送6個塊。(請注意,此最高有效位元第一順序致使塊5在來自陣列組態載入控制器的分配序列的第0輪中分配)。對於卸載操作,組態卸載控制器可以將卸載資料無序地寫入到記憶體。對於載入和卸載操作兩者,可組態單元中的組態資料儲存區中的組態串列鏈的移位是從LSB(最低有效位元)到MSB(最高有效位元)或MSB先出。
圖3A顯示連接陣列層網路中的元素的範例開關單元。如如圖3A的範例所示,開關單元可以具有8個介面。開關單元的北、南、東和西介面被用於開關單元之間的連接。開關單元的東北、東南、西北和西南介面各自用於建立與PCU或PMU實例的連接。每個圖塊象限中的一組2個開關單元具有到位址產生和合併單元(AGCU)的連接,其中位址產生和合併單元(AGCU)包含多個位址產生(AG)單元和連接到多個位址產生單元的合併單元(CU)。合併單元(CU)在AG之間進行仲裁並且處理記憶體請求。開關單元的8個介面中之各者可以包含向量介面、純量介面以及與向量網路、純量網路和控制網路進行通訊的控制介面。
在用以劃分可組態開關陣列的邏輯的實施例中,所述開關包含組態資料,諸如開關埠禁用暫存器SPDR和開關路由暫存器SRR。在一個實施例中,可使用組態載入和卸載程序來組態陣列中的每個開關,以阻隔使用開關上的一或多個開關埠的通訊。因此,圍繞著可組態單元集合的一組開關可被組態成將圖塊劃分為可被不同的應用程式圖形使用的複數個組態單元集合。
在存在多個圖塊的另一個實施例中,只有在圖塊的外部列和外部行上的開關可以使用組態載入和卸載程序來組態,以允許或阻隔跨圖塊邊界使用一或多個開關埠進行通訊。例如,可以設置開關埠禁用暫存器以禁用跨圖塊邊界的通訊。
在組態後的執行虛擬機器期間,可以透過一或多個單元開關和單元開關之間的一或多個鏈接來將資料發送到使用向量匯流排和陣列層網路上的一或多個開關單元的向量介面的可組態單元。
在本文描述的實施例中,在組態圖塊之前,組態檔案或位元檔案可以使用同一向量匯流排從組態載入控制器透過一或多個單元開關和單元開關之間的一或多個鏈接被發送到使用向量匯流排和陣列層網路上的一或多個開關單元的向量介面的可組態單元。例如,特定於可組態單元PMU 341的單元檔案中的組態資料塊可將從組態載入/卸載控制器301被發送到PMU 341,其透過組態載入/卸載控制器301和開關單元311的西(W)向量介面、開關單元311之間的鏈接320,以及開關單元311的東南(SE)向量介面和PMU 341之間的鏈接331。
在此範例中,AGCU中之一者被組態成主AGCU,其包含組態載入/卸載控制器(例如301)。主AGCU實現了暫存器,主機(圖1:120)透過所述暫存器可以透過匯流排系統將命令發送到主AGCU。主AGCU控制在圖塊中的可組態單元陣列上的操作,並實現程式控制狀態機以根據其透過寫入暫存器從主機接收的命令來追蹤圖塊的狀態。對於每個狀態轉換,主AGCU透過菊鏈命令匯流排向圖塊上的所有元件發出命令(圖4)。所述命令包含用於重置圖塊中的可組態單元陣列中的可組態單元的程式重置命令,以及用於將組態檔案載入到可組態單元的程式載入命令。
主AGCU中的組態載入控制器負責從記憶體中讀取組態檔案,並將組態資料發送到圖塊的每個可組態單元。主AGCU可以較佳地用頂層網路的最大產出量從記憶體中讀取組態檔案。從記憶體讀取的資料由主AGCU透過陣列階層網路上的向量介面根據本文描述的分配順序傳輸到對應的可組態單元。
在一個實施例中,以一種可以減少可組態單元內的佈線需求的方式,在元件中保存要在組態載入程序中載入或在組態卸載程序中卸載的單元檔案的組態和狀態暫存器以串列鏈連接,並且可以透過串列鏈透過移位位元程序被載入。在一些實施例中,可能存在一個以上並聯或串聯佈置的串聯鏈。當可組態單元在一個匯流排週期內從主AGCU接收到例如128位元的組態資料時,可組態單元透過其串列鏈以每週期1位元的速率移位此資料,其中移位器週期可以與匯流排週期以相同的速率運行。對於可組態單元需要128個移位器週期來載入具有透過向量介面接收的128位元資料的128個組態位元。所述128位元的組態資料被稱為塊。可組態單元可能需要多個資料塊來載入其所有組態位元。圖6中顯示了範例移位暫存器結構。
可組態單元透過多個記憶體介面(圖1:150)與記憶體介接。可以使用多個AGCU存取每個記憶體介面。每個AGCU包含可重組態純量資料路徑以產生對晶片外記憶體的請求。每個AGCU包含用於組織資料以緩衝來自晶片外記憶體的傳出命令、資料和傳入響應的緩衝器。
AGCU中的位址產生器AG可以產生密集或稀疏的記憶體命令。密集請求可用於批量傳輸連續的晶片外記憶體區域,並可用於從可組態單元陣列中的可組態單元讀取資料塊或將資料塊寫入可組態單元陣列中的可組態單元。密集請求可以透過AGCU中的合併單元(CU)被轉換至多個晶片外記憶體的突發請求。稀疏請求可以將位址流佇列到合併單元中。合併單元使用合併快取來維護發出的晶片外記憶體請求中的元資料,並結合屬於同一晶片外記憶體請求的稀疏位址,以最小化發出的晶片外記憶體請求的數目。
如上所述,所說明的實施例中的每個AGCU包含記憶體存取控制器MAC 301、302、303和304。每個記憶體存取控制器可以專用於圖塊中的所有可組態單元。或者,由組態檔案設置的不同圖形可以駐留在圖塊中的可組態單元不同劃分的集合,並且每個劃分集合都可以由組態檔案分配到連接到劃分集合中的開關的記憶體存取控制器之一。
圖4顯示包含耦接到外部主機401和外部記憶體402的CGRA裝置400的系統。可以存在將裝置400耦接到主機401的複數個介面405,其包含例如PCIE類型的介面或適合特定實現的其它類型的介面。一或多個介面405可以是網路連接,其包含網際網路式網路連接。主機401可以包含任何系統,其包含能夠與裝置400協調執行運行時間程式的雲端式系統。
可以存在將裝置400耦接到記憶體402的複數個介面406,其例如包含適用於連接到高密度DRAM記憶體的高速雙倍資料速率介面或適用於特定實現的其它介面類型。
CGRA裝置400包含耦接到陣列層網路411的可組態單元陣列410。在此範例中,所述陣列被劃分成複數組可組態單元VM1、VM2、…VMn。可組態單元陣列可以支援不同「形狀」的虛擬機器。例如,在一些實施例中,可以存在可組態單元和其它CGRA資源(原子團)的最小尺寸集合,其可以支援其資源需要與原子團資源匹配的虛擬機器。較大的VM可以由原子團的聚合集合組成,以組成不同的VM形狀。在一個範例中,原子團是如圖3所示的圖塊,而VM可以跨越多個圖塊。在其它實施例中,原子團可以是圖塊的一部分(列和行的子集),其具有用以隔離VM通訊、記憶體和載入/卸載由彼此不同的原子團組態組成的VM的邏輯。
陣列層網路411還耦接到一或多個位址產生和合併單元AGCU 420。AGCU 420耦接到頂層網路412,頂層網路412又耦接到用於與包含外部主機401和外部記憶體402的外部資源進行通訊的介面405、406。
AGCU 420包含用作陣列層網路411和頂層網路412之間的閘道器的邏輯。
AGCU的閘道器功能包含記憶體存取控制器,所述記憶體存取控制器在此範例中利用了映射用於限制陣列410中的可組態單元集合之間的通訊到分配給由對應的可組態單元集合實現的虛擬機器的記憶體中的區域的虛擬機器記憶體空間的映射表422。
在一個實施例中,映射表422過濾透過AGCU的任何記憶體存取。如果嘗試從分配的記憶體空間外的特定可組態單元集合存取記憶體到特定可組態單元集合,則被阻隔。在某些實施例中,除了阻隔存取,還可以將異常訊息發送到主機,以指示在所述可組態單元集合中運行的特定應用程式圖形的記憶體存取衝突。
此範例中的AGCU還包含組態控制器421,其用於在虛擬機器的支援下載入和卸載來自陣列中對應的可組態單元集合的圖形。
映射表422可以組態成對應AGCU 420的組態檔案的一部分。
圖5是顯示由AGCU中的記憶體存取控制器執行的邏輯的流程圖,如可以在上述系統中使用的。在此流程中,在包含AGCU的可組態單元集合中的應用程式圖形的執行期間的AGCU可以監視用於記憶體存取(510)的陣列層網路上的通訊。當接收到記憶體存取時,請求中的虛擬位址(即由在特定虛擬機器中執行的應用程式圖形所使用的位址)被解析(511)。所述請求的來源被匹配到特定虛擬機器(512)。虛擬位址被使用映射表422轉換為實體位址(即到可組態單元陣列外的記憶體的位址)。這可以透過使用分配給特定可組態單元集合(513)的虛擬機器的識別符VMID來查找記憶體映射MM的方式完成。記憶體存取控制器確定存取是否映射到超出了分配給虛擬機器的記憶體空間的界限的實體位址(515)。如果存取沒有超出界限,接著使用實體位址在頂層網路上發出記憶體存取請求(516)。如果存取超出界限,則在頂層網路上發出異常,並丟棄請求(517)。
此流程圖描述了來自其中特定虛擬機器正在執行的特定可組態單元集合內的請求的邏輯。對於從頂層網路到特定可組態單元集合的資料傳輸可以執行類似的程序。
複數個可組態單元集合中的​​可組態單元集合可組態成使用虛擬位址執行應用程式圖形,並且記憶體存取控制器包含或有權存取可組態表來將源自特定集合內執行的應用程式圖形的請求中的虛擬位址轉換到分配給特定集合的記憶體空間中的位址。在某些範例中,虛擬位址係響應來自陣列中其它單元的通訊而在AGCU中產生的。這些虛擬位址係在記憶體存取控制器中轉換為實體位址。
在一個實施例中,記憶體存取控制器可組態成將每個應用程式圖形分配到許多記憶體區域。可以使用基底/邊界方法根據將包含在分配的記憶體空間中的最大區域數目來實現映射。假設例如分配給每個應用程式圖形的記憶體空間最多可以包含16個記憶體區域,編譯器可以使用AGCU中位址暫存器的位元63:60來靜態地分配區域ID。
在一種方法中,編譯器將基底記憶體位址0和大小分配給每個區域。也分配用以驗證每個分配區域的使用的指標。
分配的區域包含在由編譯器產生的組態檔案中。這可以採用X入口區域表的形式,其中X是整數,並且每個表條目都是具有以下欄位的結構: Valid-表條目已被分配; Size-區域的N位元大小;所述區域的大小可能不是2的冪數;以及 綁定AGCU記憶體位址產生器(計數器/ALU輸出)的每個區域到給定區域的關聯列表。
在位元檔案載入時,區域表中的條目被用於程式化鏈接到用於實現應用程式圖形的可組態單元集合的每個AGCU中的有效、基底和界限暫存器。取決於區域綁定機制,每個AGCU位址產生器也可以被綁定到特定區域。在某些範例中,基底位址可以由運行時間分配。
當AGCU響應於從其可組態單元集合中的可組態單元中發起的存取請求而產生記憶體位址和長度時,執行以下操作,接著利用頂層網路上的位址來發送交易。
此X區域範例中的Z位元位址可以包含2個部分。最高位元(Z-1:W)的數目識別了區域存取暫存器。較低位元(W-1:0)識別了所述區域中的相對虛擬偏移。
AGCU使用虛擬位址的位元(Z-1:W)來查找實體區域的基底/邊界。位元偏移量將添加到所述區域的基底暫存器中,以產生實際的DDR實體位址。基底值隨著長度遞增,接著根據限制暫存器檢查結果延伸區位址。如果延伸區位址小於或等於限制,則位址和請求將透過頂層網路傳遞給DDR以供處理。
如果延伸區位址超出限制,則會產生運行時間異常,即頂層網路請求會被抑制,並且AGCU停止處理來自所述位址產生器的其它位址請求。
在替代實施例中,記憶體存取控制器可以使用其它方法使用虛擬到實體轉換來實現虛擬位址(VA)到實體位址(PA)映射。例如,在VA-PA緩衝器轉換方法中,運行時間軟體透過VA-PA轉換程序將編譯器產生的位址區域映射到實體記憶體中的可用記憶體空間。這允許運行時間將大型虛擬位址空間劃分為多個實體位址空間,這些實體位址空間可以跨多個可組態單位陣列分佈。實體位址空間可以被劃分為多個片段,在某些情況下,具有最小尺寸(例如,1MB)和最大尺寸(例如,1TB)。
為了有效地將虛擬位址轉換為實體位址,每個記憶體存取控制器可以實現16個條目的VA-PA緩衝器,其保存16個虛擬片段的映射資訊。此範例中的VA-PA緩衝器是完全關聯的,並在載入組態期間從位元檔案(組態檔案)中載入。VA-PA緩衝器的每個條目也可以透過暫存器寫入來寫入。每個VA-PA緩衝器條目可以包含2個子欄位:VSID_PA和V_SSIZE。下表描述了這些子欄位中的每一個:
Figure 02_image001
AGCU從組態載入程序中的位元檔案的VA-PA緩衝器結構填充其VA-PA緩衝器。
在虛擬機器中執行應用程式圖形期間,虛擬位址係基於與AGCU鏈接的可組態單元集合中的應用程式圖形而產生。
記憶體存取控制器透過在每個VA-PA緩衝器條目中搜索匹配的虛擬片段來轉換虛擬位址。
轉換錯誤可以由記憶體存取控制器檢測,其包含例如: 1.不存在的轉換:請求的VA與任何VA-PA緩衝器條目的VSID位元不匹配。 2.多個匹配:請求的VA匹配多個條目的VSID位元。 3. SSIZE大於最大值:匹配條目的SSIZE大於集合最大值。
這些錯誤可以與致使錯誤的VA一起記錄在狀態暫存器中。此外,對於轉換錯誤,記憶體存取控制器可以向主機發送中斷或其它類型的通知、丟棄致使錯誤的請求,並停止處理任何新請求。
圖6顯示諸如參考圖3所描述的那些可組態單元陣列,包含PCU、PMU和開關單元。在陣列中其它可定址節點(諸如AGCU)中實現的組態載入邏輯和記憶體存取控制器邏輯未被顯示。陣列層網路包含開關網格,這些開關網格可組態成連接到所述區域中的其它可組態單元。
組態檔案可用於將開關組態以阻隔開關上的所選通訊埠外的通訊,以便將陣列劃分為可組態單元的劃分集合。在圖6所示的範例中,陣列被組態成包含標記為VM1的第一可組態單元集合和標記為VM2的第二可組態單元集合。在可組態單元集合的邊界上的開關被組態成阻隔從對應集合內的單元到外部單元的通訊。例如,開關600可以被組態成阻隔西南埠、西埠、西北埠、北埠和東北埠,同時啟用東埠、東南埠和南埠。開關601可以被組態成阻隔西北埠、北埠和東北埠,同時啟用開關上的其它埠。開關602可以組態成僅阻隔東南埠,同時啟用開關上的其它埠。因此,可組態單元陣列的劃分可以組成以形成隔離的可組態單元集合。在本文描述的實施例中,每個隔離的集合被耦接到如上所述的記憶體存取控制器和組態控制器。
更一般地,可組態單元陣列可以包含用於劃分包含陣列中的可劃分群組之可組態單元的區塊。在一些實施例中,可劃分的群組可以包含多於一種類型的可組態單元,其包含如圖3所示的PMU、PCU、開關和AGCU。可以組態匯流排系統,以將陣列劃分為適用於給定實現的任何大小的陣列中可劃分群組的邊界上的多個可組態單元集合。
圖7顯示諸如參考圖3所描述的那些可組態單元陣列,包含PCU、PMU和開關單元。在此範例中,可組態單元陣列包含複數個可組態單元的圖塊。匯流排系統包含在圖塊之間的邊界上的開關,其包含劃分在圖塊邊界上的匯流排系統的電路。在此範例中,可以分配給在對應集合中執行的特定虛擬機器或圖形的可組態單元集合在圖塊邊界上被劃分,並且可以包含一或多個圖塊。
因此,如圖所示,第一虛擬機器VM1被隔離在包含圖塊T1和T3的至少一部分的可組態單元集合中。第二虛擬機器VM2被隔離在包含圖塊T2、T4、T5和T6的至少一部分的可組態單元集合中。
在陣列中以其它可定址節點(諸如AGCU中)實現的組態載入邏輯和記憶體存取控制器邏輯未被顯示,其包含每個圖塊中的至少一個。
圖塊邊界上的開關可以被稱為邊界開關,其可以被組態成使用上面討論的組態檔案阻隔選定埠上的通訊。網格中的其它開關可能具有或不具有禁用埠的能力。例如,開關700可以組態成阻隔從圖塊T5中的可組態單元集合到圖塊T3中的可組態單元集合的所有埠。同樣地,開關701可以被組態成阻隔跨越從圖塊T5到T3的邊界的埠。在此圖示的實施例中,每個圖塊都包含按列和行排列的開關網格。邊界開關位於每一列的結尾。每個圖塊的頂部和底部列中的所有開關都可以是邊界開關。邊界開關可以被組態成彼此路由如下。每個圖塊的最裡面的晶片行的開關可以連接到其左/右鄰居,建立到其相鄰圖塊的雙向東西鏈接,從而融合為單一邏輯圖塊。同樣地,每個圖塊中最裡面的晶片列上的開關可以連接到其南北鄰居,將南北圖塊對融合為單一圖塊。在一些實施例中,僅一列或一行的邊界開關可以在圖塊邊界上實現,而不是如圖所示般在每個圖塊中的一列和一行。
在可組態單元陣列中劃分的可組態單元集合可以具有各種組態。圖8顯示系統中的範例性組態,其中可組態單元陣列800包含複數個圖塊T1到T6,其具有可組態成啟用或阻隔在圖塊邊界上的通訊的邊界開關。在此範例中,第一虛擬機器VM1組態在圖塊T1和T3內,而第二虛擬機器VM2組態在圖塊T2、T4、T5和T6內。被組態成虛擬機器VM1和VM2的可組態單元集合各包含可從所述可組態單元集合內存取的陣列層網路上的可定址節點上的記憶體存取控制器MAC和組態控制器CC(804、805)。
圖9顯示系統中的範例組態,其中可組態單元陣列可以不包含圖塊,或在可組態單元陣列的單一圖塊內,其中陣列層網路上的開關被組態成將陣列劃分為具有更靈活邊界的複數個集合。在此圖中,虛擬機器VM1在左上所示區域中的可組態單元集合中實現,而虛擬機器VM2在陣列900的下部所示區域中的可組態單元集合中實現。組態成虛擬機器VM1和VM2的可組態單元集合各包含可從所述可組態單元集合內存取的陣列層網路上的可定址節點上的記憶體存取控制器MAC和組態控制器CC(904、905)。
圖10顯示包含複數個CGRA的系統,其中虛擬機器可以是跨CGRA1和CGRA2組態。每個CGRA都可以在單一積體電路上實現。CGRA可以具有類似上面結合圖3和其它圖形討論的可組態單元陣列,或劃分為支援虛擬化邏輯的可組態單元集合的任何其它類型的可組態單元陣列。
圖10中的系統包含執行運行時間程式的主機1000。此外,第一可組態單元陣列1010被實現在CGRA1上,而第二可組態單元陣列1020被實現在CGRA2上。每個CGRA被耦接到對應的記憶體1110、1120。主機系統匯流排1005將主機1000與兩個CGRA上的可組態單元陣列1010、1020互連。高速記憶體介面1015、1025將CGRA耦接到對應的記憶體1110、1120。
在一些實施例中,主機1000可以與記憶體1110和記憶體1120透過CGRA中的頂層網路進行通訊。
在圖10中,第一虛擬機器VM1被組態在限定於CGRA1上的陣列1010的可組態單元集合中。此外,第二虛擬機器VM2被組態在包含在CGRA1上的陣列1010中的可組態單元以及在CGRA2上的陣列1020上的可組態單元的的可組態單元集合中。
圖11是顯示如本文中所描述的支援虛擬機器的系統的能力以執行資源分配例程以最佳利用系統中的可組態單元陣列的流程圖。在簡化流程圖中,可以在運行或其它監視服務時,在主機上執行的應用程式可載入可重組態處理器的可組態單元陣列中的多個VM和對應的應用程式圖形(AG)(1140)。主機應用程式可以發送命令以啟動已載入的AG的執行,以便多個AG在其各自的VM內同時執行(1141)。在AG執行期間,主機應用程式可以監視分配資源的請求,以實現用於特定應用程式圖形的虛擬機器(1142),如當執行中的AG需要使用新AG進行更新或更高優先順序的AG需要啟動時。接著,所述服務將確定可以實現新AG的新虛擬機器的需求(1143)。此外,所述服務可以調查可重組態處理器中(並且更一般地,在系統中所有可用的可重組態處理器中)的可組態單元陣列中的資源利用率(1144)。比較新AG的需求和執行AG的資源利用率,以確定是否存在響應於所述請求而分配的可用資源(1145)。如果資源不可用,則所述服務可以選擇優先順序較低的應用程式圖形,停止選定的AG(使用檢查點,如果可用),接著卸載AG以釋放資源(1154)。在一些實施例中,直到資源由於其它原因變為可用,服務可以等待。在實現用於執行AG的VM的系統中,當所選AG停止並卸載時,其它AG可以保持執行。如果資源可用,則可以使用新的可用可組態單元集合來提供VM,並且可以載入並啟動新的AG組態檔案(1155)。
通常,在執行應用程式圖形期間,虛擬化依可以改變的方式致使資源的分配和重新分配。為了完全檢查應用程式圖形,應用程式圖形可以使用應用程式圖形沒有顯著的記憶體或主機交易的靜態點進行編譯,並且可以跨圖塊和晶片以一致的方式停止它。在一種方法中,編譯器可以在圖形執行中的特定點插入檢查點操作。這些可能對應於一定數目的最外層迴圈或其它與執行相關的事件的完成。
在檢查點,應用程式圖形被停止,並且可以執行組態卸載,其包含可用於重新啟動暫停的應用程式圖形的可組態單元的狀態資訊。因此,組態卸載程序可以包含拋棄暫存記憶體(例如,Plasticine範例中的PMU記憶體)、管線和控制暫存器狀態,以及開關和記憶體存取控制器或AGCU狀態。
圖12是顯示如本文所述可用於可組態單元陣列的範例性可組態開關的方塊圖。可組態開關包含用於仲裁陣列層網路中的向量、純量和控制匯流排之間的通訊的電路1205。在本實施例中,每個開關包含具有八個埠的電路1205,所述埠包含被組態用於連接開關網格中的相鄰開關的北、南、東和西埠。此外,八個埠包含組態成連接到其它類型的可組態單元,諸如PCU、PMU和AGCU(其可以包含本文所述的記憶體存取控制器和組態控制器)的東北、東南、西南和西北埠。
為了將陣列劃分成可組態單元集合,可組態開關包含開關埠禁用暫存器SPDR[0:7]。在一種實現中,SPDR暫存器針對每個方向中的每個北/南/東/西埠包含1位元;位元分配如下。
[0]:如果設置為「1」,則禁用北埠上的出站交易。任何外向交易將默默地往下掉。否則,將啟用北埠上的出站交易。 [1]:如果設置為「1」,則禁用北埠上的入站交易。任何入站交易將默默地往下掉。否則,將啟用北埠上的入站交易。 [2]:如果設置為「1」,則禁用南埠上的出站交易。任何外向交易將默默地往下掉。否則,將啟用南埠上的出站交易。 [3]:如果設置為「1」,則禁用南埠上的入站交易。任何入站交易將默默地往下掉。否則,將啟用南埠上的入站交易。 [4]:如果設置為「1」,則禁用東埠上的出站交易。任何外向交易將默默地往下掉。否則,將啟用東埠上的出站交易。 [5]:如果設置為「1」,則禁用東埠上的入站交易。任何入站交易將默默地往下掉。否則,將啟用東埠上的入站交易。 [6]:如果設置為「1」,則禁用西埠上的出站交易。任何外向交易將默默地往下掉。否則,將啟用西埠上的出站交易。 [7]:如果設置為「1」,則禁用西埠上的入站交易。任何入站交易將默默地往下掉。否則,將啟用西埠上的入站交易。
如果各個入站和出站埠控制是不必要的,則此設計可以簡化為每個埠方向具有單一位元。同樣地,可能會在使用甚至更少位元的組態暫存器中指示較小數目的預定義組態。
網格中的可組態開關包含組態資料儲存區1220(例如,可以包含埠禁用暫存器的串列鏈),以儲存包含特定於對應開關的複數塊(或其它大小的子檔案)的組態資料的單元檔案。組態資料儲存區1220係透過線路1221連接到電路1205。此外,網格中的可組態開關各包含透過線路1222連接到組態資料儲存區1220的單元組態載入邏輯1240。單元組態載入邏輯1240執行單元組態載入程序。單元組態載入程序包含透過匯流排系統(例如,向量輸入)接收統一特定於可組態開關的塊,並將接收到的塊載入到可組態開關的組態資料儲存區1220。單元組態載入程序將進一步參考圖15描述。
在此範例中,在網格中的可組態開關中的組態資料儲存區包含鎖存器的串列鏈,其中鎖存器儲存控制開關中資源的組態的位元。組態資料儲存區中的串列鏈可以包含用於組態資料的第一移位暫存器鏈,諸如埠致能和禁用參數,以及用於串聯狀態資訊和計數器值的第二移位暫存器鏈。
可組態開關中的每個埠可以與使用三個對應的輸入和輸出集合的純量、向量和控制匯流排介接。同樣地,可組態開關可以與用於針對開關的通訊(例如,包含與組態載入和卸載程序相關的通訊)的純量、向量和控制匯流排介接。
儘管未顯示,但是每個埠可以包含FIFO緩衝器和其它資源以支援開關的網格中的封包式和/或路由式通訊。
在此實施例中,組態載入和卸載程序使用菊鏈完成匯流排來指示用於在網格中組態可組態開關的載入/卸載命令何時完成。如圖12的範例所示,菊鏈完成匯流排1291和菊鏈命令匯流排1292被連接到菊鏈邏輯1293。菊鏈邏輯1293與單元組態載入邏輯1240進行通訊。菊鏈邏輯1293可以包含如下述的載入完成狀態邏輯。菊鏈完成匯流排在下面進一步描述。控制輸入由控制區塊1270接收,並且控制輸出由控制區塊1270提供。用於命令和完成匯流排的其它拓撲是可能的,但是這裡沒有描述。
圖13是顯示範例可組態單元1300(諸如模式計算單位(PCU))的方塊圖。可組態單元陣列中的可組態單元包含組態資料儲存區1320(例如,串列鏈),以儲存包含特定於對應的可組態單元的複數個組態資料塊(或其它大小的子檔案)的單元檔案。可組態單元陣列中的可組態單元分別包含透過線1322連接到組態資料儲存區1320的單元組態載入邏輯1340,以執行單元組態載入程序。單元組態載入程序包含透過匯流排系統接收(例如,向量輸入),特定於可組態單元的單元檔案的塊,並將接收到的塊載入到可組態單元的組態資料儲存區1320。單元組態載入程序進一步參考圖14被描述。
在此範例中,組態資料儲存區在複數個可組態單元中的可組態單元中包含鎖存器的串列鏈,其中鎖存器儲存控制在可組態單元中的資源的組態的位元。可組態資料儲存區中的串列鏈可以包含用於組態資料的第一移位暫存器鏈和用於串聯的狀態資訊和計數器值的第二移位暫存器鏈。組態儲存進一步參考圖15被描述。
可組態單元可以使用三個對應的輸入和輸出(IO)集合:純量輸入/輸出、向量輸入/輸出和控制輸入/輸出與純量、向量和控制匯流排連接。純量IO可用於傳送單一字組的資料(例如32位元)。向量IO可以用來傳達多塊的資料(例如128位元),如在單元組態載入程序中接收組態資料時,以及在跨多個PCU之間的長管線的組態之後的操作期間發送和接收資料。控制IO可用於傳達控制訊號,如可組態單元的執行的開始或結束。控制輸入係由控制區塊1370接收,控制輸出係由控制區塊1370提供。
每個向量輸入係使用向量FIFO區塊1360中的向量FIFO來進行緩衝,其中向量FIFO區塊1360可以包含一或多個向量FIFO。每個純量輸入係使用純量FIFO 1350來進行緩衝。使用輸入FIFO解耦資料生產者和消費者之間的時序,並透過使其對於輸入延遲不匹配穩健來簡化可組態單元間的控制邏輯。
輸入組態資料1310可以被提供給向量FIFO作為向量輸入,接著被傳輸到組態資料儲存區1320。輸出組態資料1330可以使用向量輸出從組態資料儲存區1320卸載。
CGRA使用菊鏈完成匯流排來指示何時已經完成載入/卸載命令。主AGCU透過菊鏈命令匯流排將程式載入和卸載命令傳輸到可組態單元陣列中的可組態單元(從S0過渡到S1,圖14)。如圖13的範例所示,菊鏈完成匯流排1391和菊鏈命令匯流排1392被連接到菊鏈邏輯1393,所述菊鏈邏輯與單元組態載入邏輯1340進行通訊。如下述,菊鏈邏輯1393可以包含載入完成狀態邏輯。菊鏈完成匯流排進一部如下面所描述的。用於命令匯流排和完成匯流排的其它拓撲顯然是可能的,但在這裡未描述。
在區塊1380中,可組態單元包含多個可重組態的資料路徑。可組態單元中的資料路徑可以組織為多階段(階段1…階段N)、可重組態的SIMD(單一指令多重資料)管線。推送到可組態單元中的組態串列鏈中的資料塊包含可組態單元中每個資料路徑的每個階段的組態資料。組態資料儲存區1320中的組態串列鏈在區塊1380中透過線1321連接到多個資料路徑。
模式記憶體單元(例如,PMU)可以包含與用於位址計算的可重組態純量資料路徑耦接的暫存器記憶體,以及PCU中使用的匯流排介面。PMU可用於在整個可重組態單元陣列中分配晶載記憶體。在一個實施例中,PMU中的記憶體內的位址計算係在PMU資料路徑上執行,而核心計算係在PCU內執行。
圖14顯示可用於控制組態單元中的單元組態載入程序的狀態機的範例。通常,單元組態載入程序接收特定於在一個匯流排週期中來自匯流排系統的可組態單元的單元檔案的第一塊(或子檔案),在隨後與匯流排週期相同的速率發生的移位器週期期間,在接收到單元檔案的第二塊之前,開始推送接收到的第一塊到串列鏈中。在接收到特定於在稍後的匯流排週期中來自匯流排系統的組態單元的單元檔案的第二塊時,所述程序在將較早接收到的塊推送到串列鏈之後的週期期間,開始將接收到的第二塊推送到串列鏈。在組態載入程序的一些或全部回合中,在複數個有序塊中第二塊(依單元檔案的塊順序中的下一個)由可組態單元接收之前,可組態單元中的單元組態載入程序可以消耗第一塊。
圖14的狀態機包含六個狀態S0至S5。在狀態S0(閒置)下,單元組態載入程序等待來自主AGCU中的組態載入/卸載控制器的組態載入/卸載命令。組態載入/卸載控制器負責載入和卸載組態資料自/至晶晶片外記憶體(圖1:140)和自/至可組態單元陣列(圖1:190)。當在組態載入/卸載控制器處接收到載入命令時,單元組態載入程序進入狀態S1。
在狀態S1(等待靜止),多個資料路徑中的功能正反器被禁用,因此功能正反器不循環,而純量輸出、向量輸出和控制輸出關閉,因此輸出不驅動任何負載。如果已接收到載入命令,則單元組態載入程序進入狀態S2。當接收到卸載命令時,單元組態載入程序進入狀態S4。
在狀態S2(等待輸入有效),單元組態載入程序等待輸入FIFO(圖15:1510)變為有效。當輸入FIFO變為有效時,輸入FIFO已透過匯流排系統接收到組態檔案的組態資料塊。例如,組態資料塊可以包含128位元的載入資料,所述載入資料在匯流排系統的向量網路上接收,並且所述向量網路具有128位元的向量匯流排寬度。當輸入FIFO變為有效時,單元組態載入程序進入狀態S3。
在狀態S3(載入移位),128位元的組態資料塊首先在一個時脈週期內從輸入FIFO中出列,接著將128位元的組態資料塊在128個時脈週期內移位至輸入移位暫存器(圖15:1520)。輸入移位暫存器的長度可以與組態資料塊的長度相同(例如128位元),並且採用相同數目的移位器時脈週期(例如128個)來將組態塊資料移位至輸入移位暫存器中作為組態資料塊的長度。如上所述,在一些實施例中,移位器時脈和匯流排時脈(或匯流排週期)可以用相同的速率運行。
可組態單元中的組態資料儲存區包含組態串列鏈(圖15:1530、1540)(其可以組態成FIFO鏈),以儲存包含特定於可組態單元的複數個組態資料塊的單元檔案。複數個組態資料塊包含第一組態資料塊和最後組態資料塊。輸入移位暫存器中的組態資料塊在隨後的時脈週期中進一步串列移位至組態資料儲存區。組態資料儲存區參照圖15進一步描述。
在特定於可組態單元的單元檔案的第一塊在狀態S3中被移位至輸入移位暫存器之後,所述單元組態載入程序確定組態資料的第一塊是否為特定於可組態單元的最後組態資料塊。如果是,則可組態單元的單元檔案的載入完成,並且單元組態載入程序進入狀態S0。如果不是,則單位組態載入程序進入狀態S2,並等待輸入FIFO對於特定於可組態單元的第二組態資料塊變為有效。
當在狀態S1中接收到卸載命令時,單元組態載入程序進入狀態S4。
在狀態S4(卸載移位),來自組態資料儲存區的組態資料塊被移位至輸出移位暫存器(圖15:1550)。組態資料塊可以包含128位元的卸載資料。輸出移位暫存器的長度可以與組態資料塊的長度相同(例如128),並且採用相同數目的移位器時脈週期(例如128個),來將組態資料塊從組態資料儲存區中移位至輸出FIFO中作為組態資料塊的長度。當組態資料塊被移位至輸出移位暫存器之後,單元組態載入程序進入狀態S5(等待輸出有效)。
在狀態S5(等待輸出有效),單元組態載入程序等待輸出FIFO(圖15:1560)變為有效。當輸出FIFO變為有效時,來自輸出移位暫存器具有128位元的組態資料塊在一個時脈週期中被插入輸出FIFO。輸出FIFO中的組態資料塊接著可以被發送到匯流排系統(圖3)。
在狀態S5將第一組態資料塊移位至輸出FIFO之後,單元組態載入程序確定第一組態資料塊是否為組態資料儲存區中的最後組態資料塊。如果是,則完成可組態單元的組態資料的卸載,並且單元組態載入程序進入狀態S0。如果不是,則單元組態載入程序進入狀態S4,並且來自組態資料儲存區的第二組態資料塊被串列移位至輸出移位暫存器。
圖15是可組態單元中的組態儲存的邏輯表示。在此實施例中,可組態單元中的組態資料儲存區(圖4:420)包含組態串列鏈,其包含第一移位暫存器鏈1530和第二移位暫存器鏈1540。第一移位暫存器鏈1530包含一組暫存器或鎖存器。第二移位暫存器鏈1540包含另一組暫存器或鎖存器(正反器)。在此實施例中,第一移位暫存器鏈和第二移位暫存器鏈串聯連接以形成單鏈。
組態檔案包含用於可組態單元陣列中的複數個可組態單元中的每個可組態單元的複數個組態資料塊。組態資料塊代表各個可組態單元的初始組態或啟動狀態。此系統中的組態載入操作是在可組態單元陣列中設置組態資料的單元檔案以允許所有可組態單元執行程式的程序。
第一移位暫存器鏈1530中的暫存器組可以代表用以運行程式的設置或順序,其包含定義包含暫存器的可組態單元的操作。這些暫存器可以暫存巢狀迴圈的數目、每個迴圈迭代器的限制、每個階段要執行的指令、運算元的來源以及輸入和輸出介面的網路參數。第二移位暫存器鏈中的暫存器組可以包含有關可組態單元中載入的程式的逐週期運行狀態的資料。
如圖15的範例所示,第一移位暫存器鏈1530和第二移位暫存器鏈1540被串聯連接,使得第一移位暫存器鏈的MSB(最高有效位元)被連接到第二移位暫存器鏈的LSB(最低有效位元)。載入訊號或卸載訊號可充當移位訊號,其耦接到第一移位暫存器鏈的LSB和第二移位暫存器鏈的LSB,以控制第一移位暫存器鏈和第二移位暫存器鏈上的載入/卸載操作。輸入FIFO 1510經由選擇器1570耦接到輸入移位暫存器1520。當載入訊號為有效時,選擇器1570將輸入移位暫存器1520與組態資料儲存區的輸入(第一移位暫存器鏈1530的LSB)連接。
當載入訊號有效時,輸入移位暫存器1520中的組態資料可以被移位至組態串列鏈中的第一移位暫存器鏈1530和第二移位暫存器鏈1540。這裡的載入訊號可用作輸入移位暫存器、第一移位暫存器鏈和第二移位暫存器鏈的致能訊號。載入操作可以重複進行,直到可組態單元的所有組態資料塊都載入到可組態單元中的組態資料儲存區。當串列鏈的長度與整數數目的塊(或子檔案)的長度不同時,可以用差值填充序列中的第一塊,並且當最後一個塊被填充時,將填充位元移出到鏈的末尾。例如,可組態單元中的組態資料儲存區可以儲存具有760位元大小的單元檔案。單元組態載入程序可以載入整數數目N的塊。在此範例中,N=6,並且塊的數目N包含塊5、塊4、塊3、塊2、塊1和塊0。向量匯流排具有128位元的向量寬度,組態資料塊具有128位元,並且可以在一個匯流排時脈週期內將塊發送到可組態單元。N個塊的大小為Nx128=6* 128=768位元,其中包含8個填充位元,以匹配760位元的單元檔案大小。
為了從錯誤中恢復,卸載操作可以檢查點每個可組態單元的狀態。卸載操作可以保存重新啟動所需的每個可組態單元的執行狀態,並如果發生錯誤,則啟用將被重新啟動的應用程式圖形。還允許保存或傳輸可組態單元的狀態以供除錯。需要保存的狀態至少包含第一或第二移位暫存器部分的內容,以及可選地PMU記憶體的內容。程式卸載可能也需要卸載所有第一和第二移位暫存器的狀態。
輸出FIFO 1560被耦接到輸出移位暫存器1550,輸出移位暫存器1550又耦接到組態資料儲存區的輸出(第二移位暫存器鏈1540的MSB)。對於卸載操作,當卸載訊號有效時,第二移位暫存器鏈1540和第一移位暫存器鏈1530中的組態資料可以被移位至輸出移位暫存器1550中。當輸出FIFO 1560有效時,輸出移位暫存器1550中的組態資料(例如128位元)可以在一個時脈週期內被插入輸出FIFO 1560。卸載操作可以重複進行,直到可組態單元中的組態資料儲存區中的所有組態資料塊都被卸載到輸出FIFO中。
為了同步並傳達由MAGCU中的組態載入控制器發布的組態載入命令的完成,在一個範例中實現了單線菊鏈方案,由鏈的每個元件中的菊鏈邏輯(例如,圖13中的菊鏈邏輯1393)中包含的邏輯支援。此方案需要每個元件都具有以下兩個埠:
1.稱為PROGRAM_LOAD_DONE_IN的輸入埠
2.稱為PROGRAM_LOAD_DONE_OUT的輸出埠
在元件已完成執行MAGCU發出的命令並且其PROGRAM_LOAD_DONE_IN輸入被驅動為高準位時,元件將驅動其PROGRAM_LOAD_DONE_OUT訊號。在已完成執行命令的所有必要步驟之後,MAGCU將透過驅動其PROGRAM_LOAD_DONE_OUT來啟動菊鏈。鏈中的最後一個元件將驅動其PROGRAM_LOAD_DONE_OUT,其將被連接到MAGCU的PROGRAM_LOAD_DONE_IN。MAGCU的PROGRAM_LOAD_DONE_IN變為高準位表示命令的完成。在交付與所有元件的所有塊對應的資料之後,MAGCU將其PROGRAM_LOAD_DONE_OUT埠驅動為高準位。當已完成載入它們的所有組態位元之後,所有元件將驅動它們各自的PROGRAM_LOAD_DONE_OUT埠為高準位。
當MAGCU的輸入埠 PROGRAM_LOAD_DONE_IN被主張時,組態檔案載入係完成。
圖16是顯示耦接到可重組態資料處理器的主機的操作的流程圖。在步驟1611,主機(圖1:120)透過PCIE介面(圖1:130)和頂層網路(圖1:115)將用於可組態單元陣列的組態檔案發送到晶片外記憶體(圖1:140),或儲存可組態處理器可存取的記憶體中的組態檔案。
在步驟1612,當完成將組態檔案載入到記憶體時,主機120將組態載入命令發送到處理器中的組態載入控制器(在此範例中是主AGCU的一部分)。主AGCU可以實現暫存器,主機可以透過所述暫存器將組態載入命令發送到組態載入控制器。組態載入命令可以識別記憶體中可透過可組態處理器上的記憶體介面存取的位置,所述位置指定組態檔案的位置。接著,組態載入控制器可以透過響應檢索組態檔案的命令的頂層網路來產生一或多個記憶體存取請求。接著主機可以監視用於組態檔案已完全載入的訊號的可組態處理器(1614)。當檔案載入完成後,主機可以啟動將由機器執行的功能(1616)。
圖17是顯示組態載入控制器的操作的流程圖,其可以是MAGCU的一部分或與圖塊中的可組態單元陣列通訊。組態載入控制器負責從晶片外記憶體(圖1:140)讀取組態檔案並發送組態資料到可組態單元陣列中的每個可組態單元。此流程圖起始於等待組態載入命令的組態載入控制器(1710)。如上所述,組態載入命令識別組態檔案及其在記憶體中可供處理器存取的位置。
在接收到載入命令後,在步驟1711,組態載入控制器將載入請求發佈到連接到可重組態資料處理器(圖1:110)的記憶體(圖1:140)。在步驟1712,組態載入控制器透過記憶體介面來檢索頂層網路上的組態檔案塊。在步驟1713,組態載入控制器按捨入到陣列層網路上的陣列中的可組態單元的順序分配組態檔案塊。在步驟1714,當所有的組態檔案塊已接收並分配後,組態載入控制器產生分配完成的訊號(例如,其 PROGRAM_LOAD_DONE_OUT)。接著,在步驟1715中,組態載入控制器等待來自各自單元檔案已被載入的可組態單元的確認,例如透過聲明其 PROGRAM_LOAD_DONE_IN來指示。在確認成功組態載入後,組態載入控制器可以通知主機(1716)。
圖18顯示組態檔案的一種範例組織。可以使用其它組織以及適合於載入和卸載組態檔案的特定協定的佈置。在參考圖9進行描述的範例中,可組態單元陣列中的可組態單元包含開關、PCU、PMU和AGCU。這些可組態單元中之各者包含代表用以運行程式的設置或順序的一組暫存器。這些暫存器包含用於定義包含所述暫存器的可組態單元的操作,如巢狀迴圈的數目、每個迴圈迭代器的限制、每個階段將要執行的指令、運算元的來源以及輸入和輸出介面的網路參數。此外,每個組態檔案可以包含用於在追蹤每個巢狀迴圈中的進度的一組計數器中設置上下文的資料。
程式可執行檔案包含表示執行程式的每個可組態單元的初始組態或開始狀態的位元流。此位元流被稱為位元檔案,或者在本文中被稱為「組態檔案」。程式載入是基於組態檔案的內容而在可組態單元中設置組態儲存以允許所有可組態單元執行程式的程序。程式卸載是從可組態單元中卸載組態儲存,並組譯本文中被稱為卸載組態檔案的位元流的程序。在本文描述的範例中,卸載組態檔案具有相同的排列塊或子檔案以及用於程式載入的組態檔案。
組態檔案包含用於可組態單元陣列中的每個可組態單元的複數個組態資料塊,這些塊以與它們被分配的順序匹配的方式在組態檔案中排列。組態檔案的這種組織致使了用以基於組態檔案中的塊的位置將可組態單元塊路由的陣列組態載入程序。
如圖18所示,組態檔案(和以同樣方式排列的卸載組態檔案)包含複數個可組態單元中的每個可組態單元的複數個單元檔案塊,所述單元檔案中最多包含在所述單元檔案中的順序為(i)的M個(在此範例中Z4=6)子檔案。在圖9中,M為六,塊的順序從第一到第六(即在此索引中與塊(0)到(5)對應的第一到第六塊)。塊被排列成使得載入或卸載組態檔案中的所有單元檔案的順序(i)的所有子檔案((i)從0到M-1)都儲存在記憶體中的位址空間的對應塊(i)中((i)從0到M-1)。順序(0)的塊被儲存在包含位址A0至A1-1的區塊(0)中。在此範例中,開關單元的順序(0)的塊係在區塊(0)內的一組連續位址中。PCU的順序(0)的塊係在區塊(0)內的一組連續位址中。PMU的順序(0)的塊係在區塊(0)內的一組連續位址中。AGCU的順序(0)的塊係在一組連續位址中。順序(1)的塊係儲存在包含位址A1至A2-1的塊(1)中。在此範例中,開關單元的順序(1)的塊係儲存在區塊(1)內的一組連續位址中。PCU的順序(1)的塊係在區塊(1)內的一組連續位址中。PMU的順序(1)的塊係在區塊(1)內的一組連續位址中。AGCU的順序(1)的塊係在區塊(1)內的一組連續位址中。順序3至5的塊如圖9所示排列,遵循區塊(2)到(5)中的模式。
如圖所示,在此範例中,線性位址空間被分配在線邊界上的組態檔案的區塊內。在其它實施例中,線性位址空間可以分配在字組邊界或塊邊界。可以選擇邊界以匹配所使用的記憶體的效率特性。從而,在此範例中的組態檔案包含具有連續行位址的記憶體行。
此外,所述陣列包含不止一種類型的可組態單元,以及用於不同類型的可組態單元的單元檔案包含不同數目的組態資料的子檔案,並且其中在位址空間的區塊(i)內,每種類型的可組態單元的子檔案都儲存在位址空間的區塊(i)內的對應連續位址群組中。
陣列可以包含不止一種類型的可組態單元,並且用於不同類型的可組態單元的單元檔案可以包含不同數目的組態資料塊。例如,如圖3所示,陣列中可組態單元的類型可以包含開關單元、PCU(模式計算單元)、PMU(模式記憶體單元)和AGCU(位址產生和合併單元)。
範例組態檔案組織包含: W個(例如圖3中的28個)開關單元,每個單元需要Z1個組態位元塊; X個(例如9個)PCU單元,每個單元需要Z2個組態位元塊; Y個(例如9個)PMU單元,每個單元需要Z3個組態位元塊; Z個(例如4個)AGCU單元,每個單元需要Z4個組態位元塊。
因此,用於第一類型的可組態單元的單元檔案可以包含Z1個塊,而用於第二類型的可組態單元的單元檔案可以包含Z2個塊,其中Z1小於Z2。陣列組態載入程序可以包含檢索組態檔案的片段,其包含第一類型和第二類型的所有可組態單元的單元檔案的塊(i)(在Z1回合中(i)從0到Z1-1),接著檢索組態檔案的片段,其包含第二類型的所有可組態單元的單元檔案的塊(i)(在Z2回合中(i)從Z1到Z2-1)。第三類型的可組態單元的單元檔案可以包含Z3塊,並且第四類型的可組態單元的單元檔案包含Z4塊,其中Z1小於Z2、Z2小於Z3,並且Z3小於Z4。分配順序可以在此模式下繼續進行,針對需要超過(i+1)塊的所有不同類型的可組態單元的每個塊(i)利用一個回合。
如範例組態檔案組織中所示,組態檔案中的組態資料塊以交錯方式排列: •對於回合R(i=0)的每個開關單元,組態位元中的2塊中的第一個; •對於回合R(i=0)的每個PCU單元,組態位元中的3塊中的第一個; •對於回合R(i=0)的每個PMU單元,組態位元中的5塊中的第一個; •對於回合R(i=0)的每個AGCU單元,組態位元中的6塊中的第一個; •對於回合R(i=1)的每個開關單元,組態位元中的2塊中的第二個; •對於回合R(i=1)的每個PCU單元,組態位元中的3塊中的第二個; •對於回合R(i=1)的每個PMU單元,組態位元中的5塊中的第二個; •對於回合R(i=1)的每個AGCU單元,組態位元中的6塊中的第二個; •對於回合R(i=2)的每個PCU單元,組態位元中的3塊中的第三個; •對於回合R(i=2)的每個PMU單元,組態位元中的5塊中的第三個; •對於回合R(i=2)的每個AGCU單元,組態位元中的6塊中的第三個; •對於回合R(i=3)的每個PMU單元,組態位元中的5塊中的第四個; •對於回合R(i=3)的每個AGCU單元,組態位元中的6塊中的第四個; •對於回合R(i=3)的每個PMU單元,組態位元中的5塊中的第五個; •對於回合R(i=4)的每個AGCU單元,組態位元中的6塊中的第五個; •對於回合R(i=5)的每個AGCU單元,組態位元中的6塊中的第六個。
單元檔案可以被組織為包含複數個有序塊(或其它大小的子檔案)。在某些實施例中,特定於不同可組態單元的單元檔案可能具有不同數目的有序塊。佈置了可組態單元陣列的組態檔案,以便將單元檔案的塊依照與其它單元檔案相同的塊順序來分組。此外,組態檔案被佈置成使得組態檔案中的塊位置表示塊陣列中的可組態單元及其在特定於可組態單元的單元檔案中的順序。
陣列組態載入程序可以檢索組態檔案的片段,包含第一類型(開關類型)、第二類型(PCU類型)、第三類型(PMU類型)和第四類型(AGCU類型)的所有可組態單元的單元檔案的塊(i)((i)從0到Z1-1(=1))。在第一回合中檢索了四種類型的所有可組態單元的單元檔案的塊(0),而在第二回合中檢索了四種類型的所有可組態單元的單元檔案的塊(1)。在第一回合和第二回合之後,已檢索到第一類型(開關類型)的所有可組態單元的單元檔案的所有(2)塊。第一、第二、第三和第四類型的所有可組態單元的單位檔案分別具有剩餘要進行檢索的0、1、3和4塊。
接著,陣列組態載入程序可以檢索組態檔案的片段,其包含第三回合中的第二、第三和第四類型的所有可組態單元的單元檔案的塊(i)。在第三回合之後,已檢索了第二類型(PCU類型)的所有可組態單元的單元檔案的所有(3)塊。第一、第二、第三和第四類型的所有可組態單元的單元檔案分別具有剩餘要進行檢索的0、0、2和3塊。
接著,陣列組態載入程序可以檢索組態檔案的片段,其包含第四回合中的第三和第四類型的所有可組態單元的單元檔案的塊(i)。在第四回合之後,已檢索了第三類型(PMU類型)的所有可組態單元的單元檔案的所有(4)塊。第一、第二、第三和第四類型的所有可組態單元的單元檔案分別具有剩餘要進行檢索的0、0、1和2塊。
接著,陣列組態載入程序可以檢索組態檔案的片段,其包含第五回合和第六回合中的第三和第四類型的所有可組態單元的單元檔案的塊(i),其中(i)從Z3(=4)到Z4-1(5)。第六回合之後,已檢索了第四類型(AGCU類型)的所有可組態單元的單元檔案的所有(6)塊。第一、第二、第三和第四類型的所有可組態單元的單元檔案分別具有剩餘要進行檢索的0、0、0和0塊。
以上述方式,陣列組態載入程序可以繼續進行,直到用於第一、第二、第三和第四類型的所有可組態單元的單元檔案都沒有剩餘要進行檢索的的塊。
陣列組態載入程序透過使用由組態檔案中的塊位置指示的位址的陣列層網路將組態資料塊路由到可組態單元。例如,198個開關單元中的每個開關單元的2個組態資料塊中的第一個具有線性記憶體位址0-12288,而198個開關單元中的每個開關單元的2個組態資料塊中的第二個具有線性記憶體位址33792-46080。
在一些實施例中,組態檔案的塊可以不按順序從記憶體返回給組態載入控制器。組態檔案中的塊位置可用於將塊路由到正確的可組態單元。由於分配順序中的回合組織,確保可組態單元按順序接收其單元檔案的塊。
圖19是顯示用以執行類似於圖2和圖3的系統的陣列組態載入程序的邏輯的一個範例的狀態機圖,其包含分配包含用於陣列中的複數個可組態單元的單元檔案的組態檔案,每個單元檔案包含複數個有序的塊(或子檔案),其透過匯流排系統以N回合(R(i),其中i=0到N-1)的序列發送順序(i)的一個單位塊到所有可組態單元,其包含多達複數個可組態單元中的N個子檔案,直到組態檔案中的單元檔案被分配到複數個可組態單元中的可組態單元。
在此範例中,狀態機包含六個狀態S1至S6。在狀態S1(閒置),組態載入控制器等待來自主機的組態載入命令。當接收到組態載入命令時,載入程序進入狀態S2,以開始執行分配序列的第一回合R(0)。每個迴圈遍歷狀態S2至S6。在本文描述的範例中,有六個回合,因為要分配給陣列中的可組態單元的最大塊數為六。
在狀態S2(開關請求),組態載入控制器透過頂層網路產生記憶體存取請求,以檢索各個開關單元的組態單元檔案的回合R(i)的狀態S2的塊,並將檢索到的塊分配給各個開關單元。對於i=0,在回合R(0)中,組態載入控制器為各個開關單元的多個塊中的塊(0)產生記憶體存取請求,並將塊(0)發送到各個開關單元。對於i=1,在回合R(1)中,組態載入控制器為各個開關單元的多個塊中的塊(1)產生記憶體存取請求,並將塊發送到各個開關單元。在回合R(i)中,當組態載入控制器已為各個開關單元的多個塊中的塊(i)產生記憶體存取請求,並針對各個開關單元分發塊,則載入程序進入狀態S3。
在狀態S3(PCU請求),組態載入控制器透過頂層網路產生記憶體存取請求,以檢索各個PCU單元(模式計算單元)的組態單元檔案的回合R(i)的塊,並將檢索到的塊分配給各個PCU單元。在回合R(i)的狀態S3中,組態載入控制器為各個PCU單元的多個塊中的塊(i)產生記憶體存取請求,並將塊(i)發送到各個PCU單元。在回合R(i)中,當組態載入控制器已為各個PCU單元的多個塊中的塊(i)產生記憶體存取請求,並分發塊,則載入程序進入狀態S4。
在狀態S4(PMU請求),組態載入控制器透過頂層網路產生記憶體存取請求,以檢索可組態單元陣列中的各個PMU單元(模式記憶體單元)的組態單元檔案的塊,並將檢索到的塊發送到各個PMU單元。在回合R(i)的狀態S4中,組態載入控制器為各個PMU單元的多個塊中的塊(i)產生記憶體存取請求,並將塊(i)發送到各個PMU單元。例如,對於i=0,在回合R(0)中,組態載入控制器為各個PMU單元的多個塊中的塊(0)產生記憶體存取請求,並將塊(0)發送到各個PMU單元。對於i=1,在回合R(1)中,組態載入控制器為各個PMU單元的多個塊中的塊(1)產生記憶體存取請求,並將塊(1)發送到各個PMU單元。在回合R(i)中,當組態載入控制器已為各個PMU單元的多個塊中的塊(i)產生記憶體存取請求,並分發塊,則載入程序進入狀態S5。
在狀態S5(AGCU請求),組態載入控制器透過頂層網路產生記憶體存取請求,以檢索可組態單元陣列中的各個AGCU單元(位址產生和合併單元)的組態單元檔案的塊,並將檢索到的塊發送到各個AGCU單元。在回合R(i)的狀態S5中,組態載入控制器為各個AGCU單元的多個塊中的塊(i)產生記憶體存取請求,並將塊(i)發送到各個AGCU單元。在回合R(i)的狀態S5中,當組態載入控制器已為各個AGCU單元的多個塊中的塊(i)產生記憶體存取請求,並分發塊,則載入程序進入回合R(i)的狀態S6。
在狀態S6(響應等待),組態載入控制器等待以確保可組態單元(開關、PCU、PMU、AGCU單元)陣列準備好在下一回合接收更多組態資料塊。如果未發送所有開關單元的塊,則載入程序遞增(i)並進入狀態S2,以啟動下一回合R(i+1)。如果發送了所有開關單元的塊,但未發送所有PCU的塊,則載入程序遞增(i)並進入狀態S3,以啟動下一回合R(i+1)。如果發送了所有開關單元和PCU單元的塊,但未發送所有PMU的塊,則載入程序遞增(i)並進入狀態S4,以啟動下一回合R(i+1)。如果發送了所有開關單元、PCU單元和PMU單元的塊,但未發送所有AGCU的塊,則載入程序遞增(i)並進入狀態S5,以啟動下一回合R(i+1)。如果發送了所有可組態單元(開關、PCU、PMU、AGCU單元)的塊(即,完成所有回合),則載入程序進入狀態S1。
圖20是顯示類似於圖10的分配序列的早期回合的時序的時序圖。在此範例中,組態單元檔案的塊具有數目為B的位元的資料(例如B=128),分配序列中的回合可以包含數目為X的可組態單元,可組態單元陣列可以包含數目為Y的可組態單元(例如Y=148)。對於回合R(0),X可以等於Y。在隨後的回合中,X可以小於或等於Y。
在此範例中,回合R(0)包含Y=148個可組態單元。對於回合R(0)和R(1),X=Y。在前兩個回合R(0)和R(1)之後,開關單元已接收到其所有(2)個塊,因此第三回合R(2)包含少於128個可組態單元。
如圖20的範例所示,在R(0)回合中,組態單元檔案的第一塊P11在第一匯流排週期C0中經由匯流排系統在可組態單元處接收。接著透過將可組態單元上的並行任務串列移位來將第一塊載入到第一可組態單元「Unit 1」的組態儲存區,而所述回合的其它塊係透過組態載入控制器分配給其它可組態單元,B個時脈週期中的第一塊P11中的B個位元的資料(其可以用與匯流排時脈相同的速率運行)。組態檔案的第二塊P21係在第二匯流排週期C1中經由匯流排系統接收。接著透過在B個時脈週期中將第二塊P21中的B個位元的資料串列移位來將第二塊以並行任務方式載入到第二可組態單元「Unit 2」的組態儲存區。組態檔案的第三塊P31係在第三匯流排週期C2中經由匯流排系統接收。接著透過在B個時脈週期中將第三塊P31中的B個位元的資料串列移位來將第三塊P31載入到第三可組態單元「Unit 3」的組態儲存區。本回合繼續進行,直到所有可組態單元接收到特定於它們的單元檔案的第一塊。
回合R(0)包含分配在陣列中的Y個各自可組態單元(單位1…單位Y)中的組態檔案(P11、P21、P31...PY1)的第一組Y個塊。組態檔案的塊具有數目為B的位元的資料,而可組態單元陣列具有數目為Y的可組態單元。當回合R(0)完成時,在Y個匯流排週期(C0至CY-1)中,在陣列中的Y個可組態單元中已接收到第一組中的Y個組態檔案(P11、P21、P31...PY1)的塊,並且第一塊P11已在B個時脈週期中被載入或串列移位入第一可組態單元「Unit 1」的組態儲存區中。B個時脈週期是在接收到第一塊P11的第一時脈週期C0之後。
下一回合R(1)包含接收在陣列中的Y個各自可組態單元(單位1…單位Y)中的組態檔案(P12、P22、P32...Py2)的第二組Y個塊。當回合R(1)完成時,在Y個時脈週期(Cy至C2y-1)中,在陣列中的Y個可組態單元中已接收到第二組中的Y個組態檔案(P12、P22、P32...Py2)的塊。當回合R(1)完成時,第一可組態單元「Unit 1」的第二塊P12已在回合R(1)中的第一時脈週期(Cy)之後的B個時脈週期中被載入或串列移位入第一可組態單元「Unit 1」的組態儲存區中。此外,當第二回合完成時,在回合R(0)接收到的組態檔案的第一組Y個塊中的最後一塊PY1已被載入或串列移位入最後可組態單元「Unit Y」的組態儲存區中。
只要塊中的位元數目B(128)小於回合中的可組態單元的數目X,可組態單元將在已經載入前一個塊之後,接收單元組態檔案中的下一個塊,以使可組態單元應準備就緒,而無需序列停止。在此範例中,塊中的位元數目B為128,而在回合R(0)中可組態單元的數目X為X=Y=148。由於花費了128個時脈週期來將塊中的128個位元串列移位至可組態單元的組態資料儲存區,完成移位後,實際上可以有20個(Y-B=148-128)緩衝週期,從而確保第一可組態單元「單元1」準備好接受下一回合R(1)中的下一個塊(P12)。當塊中的位元數目B大於回合中的可組態單元的數目X,則可以接收下一個塊,而先前的塊正在被消耗。這裡的正在被消耗是指將塊中的位元串列移位至可組態單元的組態資料儲存區。
通常,單元組態載入程序在一個匯流排週期內從匯流排系統接收特定於可組態單元的單元檔案的第一塊(或子檔案),在接收下一回合的單元檔案的第二塊之前,在後續的匯流排週期期間,開始將接收到的第一塊推送至串列鏈中,在稍後的匯流排週期中,針對下一回合的序列從匯流排系統接收特定於可組態單元的單元檔案的第二塊,並在將較早接收到的塊推入串列鏈之後的序列的週期期間,開始將接收到的第二塊推送到串列鏈。在某些回合中,所有接收到的塊可以在接收下一個塊之前被消耗掉。
由於不同類型的可組態單元可以具有不同數目的組態位元,因此可組態單元可能需要變化數目的塊。一旦需要較少數目的塊的可組態單元,已載入了其所有的組態位元,組態載入控制器停止向其發送資料。這可能會致使交錯的可組態單元(數目X)減少,並可能致使可組態單元在處理完之前的塊之前,接收到新的塊。這可能致使陣列層網路的背壓。
背壓可以透過陣列層網路上的信用機制來處理。例如,每個輸入FIFO都可以具有逐跳(hop-to-hop)信用,因此,如果PCU的輸入FIFO滿了,則陣列層網路中沒有嘗試將組態資料發送到所述PCU的輸入FIFO的開關可以發送資料,直到輸入FIFO清空了一個條目並向發送開關返回信用。最終,背壓可能會使AGCU停止發送鏈接繁忙的資料。然而,一旦可組態單元消耗了所有128位元的塊,其清空了一個輸入FIFO條目,將釋放信用,接著發送者可以發送新的塊(如果有)。
圖21是顯示可組態單元中的單元組態載入程序的流程圖。在步驟2121,單元組態載入程序等待輸入FIFO(圖6:610)變為有效。當有效時,輸入FIFO已透過用於組態可組態單元的匯流排系統而接收到組態檔案的組態資料塊。當輸入FIFO有效時,流程前進到步驟2122。
在步驟2122,輸入FIFO被踢出佇列。在步驟2123,來自輸入FIFO的組態資料塊被並行載入到輸入移位暫存器(圖6:620)中。在步驟2124,輸入移位暫存器中的組態資料塊被移位至可組態單元的組態資料儲存區的組態串列鏈中。
在步驟2125,單元組態載入程序確定載入的組態資料塊是否為可組態單元的最後一個組態資料塊。如果是,則完成用於可組態單元的組態資料的載入。如果不是,則流程進行到步驟2121,並且單元組態載入程序等待輸入FIFO對下一個組態資料塊變為有效。可組態單元中的單元組態載入程序進一步參照圖14和15被描述。
圖22是用於執行陣列組態卸載程序的邏輯的一個範例的狀態機圖。
在此範例中,狀態機包含三個狀態S1至S3。在狀態S1(閒置),組態卸載控制器等待來自主機的組態卸載命令。組態卸載控制器為陣列組態卸載程序實現兩個計數「next_unld_req_count」和「next_unld_resp_count」。計數「next_unld_req_count」追蹤下一個卸載請求計數。計數「next_unld_resp_count」追蹤下一個卸載響應計數。在狀態S1,兩個計數都重置為初始值,諸如0。當接收到組態卸載命令後,卸載程序進入狀態S2。
在狀態S2(產生請求),組態卸載控制器產生針對可組態單元陣列中的每個可組態單元的卸載請求,所述可組態單元包含陣列中的開關單元、PCU、PMU和AGCU。針對產生的每個卸載請求,計數 「next_unld_req_count」都會遞增。將計數 「next_unld_req_count」與預定數 PROGRAM_UNLOAD_REQ_COUNT(其表示可組態單元陣列中的可組態單元的總數)進行比較。只要計數「next_unld_req_count」小於 PROGRAM_UNLOAD_REQ_COUNT,則卸載程序保持在狀態S2。當計數「next_unld_req_count」等於 PROGRAM_UNLOAD_REQ_COUNT時,則已為陣列中的每個可組態單元產生卸載請求,並且卸載程序進入狀態S3。
在狀態S3(響應等待),組態卸載控制器針對從陣列中的可組態單元接收到的每個響應,遞增計數「next_unld_resp_count」。響應包含可組態單元的組態資料的單元檔案中的塊(子檔案)。在某些範例中,響應還可以包含PMU暫存器資料。在卸載程序期間,響應被提供給可組態單元的向量輸出,並透過向量匯流排發送到組態載入控制器。只要計數「next_unld_resp_count」小於PROGRAM_UNLOAD_REQ_COUNT,則卸載程序保持在狀態S3。
在狀態S3,卸載程序針對接收到的每個響應產生記憶體位址,並在接收到的每個響應插入在頂層網路上產生的記憶體位址。每個響應包含卸載塊和序列ID。記憶體位址係從攜帶陣列層網路中的塊的伴隨封包的標頭產生,所述標頭包含塊號、行識別符、列識別符和序列ID中的元件識別符。元件識別符可以指示可組態單元是否為開關單元、PCU單元、PMU單元或AGCU單元。
當計數「next_unld_resp_count」等於PROGRAM_UNLOAD_REQ_COUNT時,則已從陣列中的每個可組態單元接收到響應,並將響應插入到頂層網路中,並且卸載程序返回到狀態S1。
在一個實施例中,開關單元中用於組態資料的線性記憶體位址的順序是第一行開關單元中的每列的第一塊,接著是第二行開關單元的每列的第一塊,接著是第三行開關單元的每列的第一塊,…直到最後一行的每列的第一塊。這將線性位址空間中所有開關單元的第一塊進行分組。其它類型的可組態單元的第一塊在相鄰位址空間中分組載入。接著,順序是第一行開關單元中的每列的第二塊,接著是第二行開關單元的每列的第二塊,接著是第三行開關單元的每列的第二塊,…直到最後一行開關單元的最後一列的最後一塊,針對所有類型的可組態單元的第二塊則依此類推。
使用如上所述的用於開關單元中的組態資料的記憶體位址的順序,下面的偽代碼說明了如何為開關單元(comp_switch)產生線性記憶體位址。偽代碼使用4個輸入: comp_id 元件識別符; comp_col 行識別符; comp_row 列識別符; comp_chunk 塊號; 並產生輸出: linear_address 卸載塊的線性記憶體位址;
用於為開關單元的特定卸載塊產生線性記憶體位址的偽代碼如下:
Figure 02_image003
其中 • comp_switch指示開關單元; • NUM_ROW_SW是所有開關單元的列數; • COMP_COUNT_ALL是所有可組態單元的總和。
為了為PCU、PMU或AGCU單元的特定卸載塊產生線性記憶體位址,可以使用類似的代碼。一個區別是所有開關單元的列數與所有PCU的列數、所有PMU的列數以及所有AGCU的列數不同。另一個區別是開關單元的線性記憶體位址可以從基底位址(例如0)開始,而PCU、PMU和AGCU的線性記憶體位址分別從開關單元、PCU和PMU的最後一塊之後的位址開始。
23是顯示可組態單元中的單元組態卸載程序的流程圖。在步驟2331,來自組態資料儲存區中的組態串列鏈的組態資料塊被串列移位至輸出移位暫存器(圖15:1550)。流程進入步驟2332。
在步驟2332,單元組態卸載程序等待輸出FIFO(圖15:1560)或其它類型的輸出緩衝電路變為有效。在步驟2333,當輸出FIFO變為有效時,來自輸出移位暫存器的組態資料塊被插入到輸出FIFO中。在步驟2334,輸出FIFO中的組態資料塊被寫入匯流排系統。
在步驟2335,單元組態卸載程序確定第一組態資料塊是否為組態資料儲存區中的最後組態資料塊。如果是,則完成可組態單元的組態資料的卸載。如果不是,則流程返回到步驟2331,接著來自組態資料儲存區的第二組態資料塊被串列移位至輸出移位暫存器。在暫停和卸載正在執行的應用程式圖形的支援中,組態儲存區(如串列鏈的一部分或單元中的其它記憶體)可以包含儲存狀態資訊的暫存器,這些狀態資訊在應用程式被重新載入並重新啟動,以在被暫停的點或在接近被暫停的點的檢查點繼續執行時是有用的。
本文提供了一種使得能夠在一個晶粒上的可組態單元陣列中同時執行多個不相關的應用程式圖形的技術。為了能夠在一組較小的應用程式圖形(諸如在基於機器學習的人工智慧系統中使用的推理或訓練應用程式)之間共享晶粒的計算能力,這是特別有吸引力的。
此處描述的實施例支援在圖塊階層的虛擬化。在其它實施例中,在子圖塊階層支援虛擬化。支援虛擬化的技術包含一或多個以下的機制:
a) 程式化開關,並且在實施例中的圖塊邊界開關,以忽略入站流量,以及降低相對於對應圖塊或子圖塊的出站流量。這樣可以防止任何錯誤或惡意程式化的可組態單元集合,以探查或干擾其它集合。
b) 對(例如在AGCU中實現的)記憶體存取控制器進行程式化,以檢查來自允許區域內的給定圖塊或子圖塊集合(其為虛擬每圖塊位址)的記憶體綁定請求的記憶體位址,並將這些區域映射到不同於共享處理器的任何其它程序的實體位址。這可以透過用於允許圖塊存取的一組區域的基底/邊界暫存器來實現,並向每個出站位址添加偏移量,以將虛擬位址重新定位/映射到適用於所述位址空間的實體位址。
c) 在其它圖塊正在運行的同時,透過載入組態位元檔案而獨立地程式化每個圖塊的能力。在範例實施例中,可以從本地或遠端記憶體或透過適當的鏈接從主機從載入位元檔案。
d) 獨立於其它圖塊或子圖塊而卸載圖塊或子圖塊的能力。
儘管透過參考以上詳細描述的較佳實施例和範例揭露了本發明,應當理解,這些範例僅是說明性的,而不是限制性的。可以預期,本領域技術人員將容易想到修改和組合,其修改和組合將在本發明的精神和所附請求項的範圍內。
110:可重組態資料處理器 115:匯流排系統 120:主機 125:線路 130:I/O介面 140:記憶體 150:I/O介面 170:外部時脈產生器 175:時脈訊號 190:陣列 195:虛擬化邏輯 196:可組態單元的特定集合 197:可組態單元的另一集合 205:I/O介面 211:頂層開關 212:頂層開關 213:頂層開關 214:頂層開關 215:頂層開關 216:頂層開關 300:可組態單元陣列 301:組態載入/卸載控制器 302:記憶體存取控制器MAC 303:記憶體存取控制器MAC 304:記憶體存取控制器MAC 311:開關單元 312:開關單元 320:鏈接 321:互連 331:鏈接 341:PMU 400:CGRA裝置 401:主機 402:記憶體 405:介面 406:介面 410:陣列 411:陣列層網路 412:頂層網路 420:位址產生和合併單元AGCU 421:組態控制器 422:映射表 510~517:步驟 600:開關 601:開關 602:開關 700:開關 701:開關 800:陣列 804:組態控制器CC 805:組態控制器CC 900:陣列 904:組態控制器CC 905:組態控制器CC 1000:主機 1005:主機系統匯流排 1010:可組態單元陣列 1015:高速記憶體介面 1020:可組態單元陣列 1025:高速記憶體介面 1110:記憶體 1120:記憶體 1140~1147:步驟 1205:電路 1220:組態資料儲存區 1221:線路 1222:線路 1240:單元組態載入邏輯 1260:開關路由暫存器SRR 1270:控制區塊 1291:菊鏈完成匯流排 1292:菊鏈命令匯流排 1293:菊鏈邏輯 1300:可組態單元 1310:輸入組態資料 1320:組態資料儲存區 1321:線 1322:線 1330:輸出組態資料 1340:單元組態載入邏輯 1350:純量FIFO 1360:向量FIFO區塊 1370:控制區塊 1380:區塊 1391:菊鏈完成匯流排 1392:菊鏈命令匯流排 1393:菊鏈邏輯 1510:輸入FIFO 1520:輸入移位暫存器 1530:組態串列鏈 1540:組態串列鏈 1550:輸出移位暫存器 1560:輸出FIFO 1570:選擇器 1611~1616:步驟 1710~1716:步驟 2121~2125:步驟 2331~2335:步驟
[圖1] 是顯示包含主機、記憶體和可重組態資料處理器的系統的系統圖。
[圖2] 是頂層網路和CGRA(粗粒度可重組態架構)的元件的簡化方塊圖。
[圖3] 是可用於圖2的組態的圖塊和陣列層網路的簡化圖,其中陣列中的可組態單元是陣列層網路上的節點。
[圖3A] 顯示連接陣列層網路中的元件的範例開關單元。
[圖4] 是包含可組態單元陣列和實現虛擬機器的資源的系統的方塊圖。
[圖5] 是由類似於圖4的系統中的記憶體存取控制器執行的程序的流程圖。
[圖6] 顯示被劃分為複數個可組態單元集合的可組態單元陣列的一部分。
[圖7] 顯示根據另一實施例被劃分為複數個可組態單元集合的包含複數個圖塊的可組態單元陣列的一部分。
[圖8] 顯示在圖塊邊界上被劃分為複數個可組態單元集合的可組態單元陣列的一個範例。
[圖9] 顯示被劃分為複數個可組態單元集合的可組態單元陣列的另一範例。
[圖10] 顯示跨複數個CGRA裝置的虛擬機器的實現。
[圖11] 是用於在可組態單元陣列中分配虛擬機器資源的程序的流程圖。
[圖12] 是顯示可用於可組態單元陣列中的可組態開關的範例的方塊圖。
[圖13] 是顯示範例可組態單元的方塊圖。
[圖14] 說明了可用於控制可組態單元中的單元可組態載入程序的狀態機圖的一個範例。
[圖15] 是支援可組態單元中的組態儲存區載入的結構的邏輯表示。
[圖16] 是顯示耦接到可重組態資料處理器的主機的操作的流程圖。
[圖17] 是顯示可以是主AGCU的一部分或與圖塊中的可組態單元陣列進行通訊的組態載入控制器的操作的流程圖。
[圖18] 顯示了組態檔案的範例組織。
[圖19] 是顯示用以執行類似於圖2和圖3的系統的陣列組態載入程序的邏輯的一個範例的狀態機圖。
[圖20] 是顯示類似於圖19的分配序列的早期回合時序的時序圖。
[圖21] 是顯示可組態單元中的單元組態載入程序的流程圖。
[圖22] 是顯示用以執行似於圖2和圖3的陣列組態卸載程序的邏輯的一個範例的狀態機圖。
[圖23] 是顯示可組態單元中的單元組態卸載程序的流程圖。
110:可重組態資料處理器 115:匯流排系統 120:主機 125:線路 130:I/O介面 140:記憶體 150:I/O介面 170:外部時脈產生器 175:時脈訊號 190:陣列 195:虛擬化邏輯 196:可組態單元的特定集合 197:可組態單元的另一集合

Claims (22)

  1. 一種可重組態資料處理器,其包含:在一個晶粒或多晶片模組上的可組態單元陣列;連接到所述可組態單元陣列的匯流排系統,其可組態成將所述可組態單元陣列劃分成複數個可組態單元集合,並透過所述匯流排系統阻隔特定集合內的可組態單元與所述特定集合外的可組態單元之間的通訊;以及連接到所述匯流排系統的記憶體存取控制器,其可組態成將對於源自所述特定集合內的所述可組態單元陣列外的記憶體的存取侷限於分配給所述可組態單元陣列外的所述記憶體中的所述特定集合的記憶體空間。
  2. 如請求項1的處理器,其包含複數個記憶體存取控制器,其包含前述的記憶體存取控制器、在所述複數個記憶體存取控制器中為所述匯流排系統上的可定址節點的記憶體存取控制器,以及所述記憶體存取控制器可組態成將對於源自所述複數個可組態單元集合中的對應可組態單元集合內的所述可組態單元集合陣列外的記憶體的存取侷限於分配給所述對應集合的所述可組態單元陣列外的所述記憶體中的記憶體空間。
  3. 如請求項1的處理器,其中所述複數個可組態單元集合中的可組態單元集合可組態成使用虛擬位址來執行應用程式圖形,而所述記憶體存取控制器包含或具有對於可組態表的存取,以將源自在所述特定集合內執行的應用程式圖形的請求中的虛擬位址轉換至分配給所述特 定集合的所述記憶體空間中的位址。
  4. 如請求項1的處理器,其中所述匯流排系統包含連接至所述可組態單元陣列中的可組態單元的開關的網格,所述網格中的開關包含用於劃分所述匯流排系統的電路。
  5. 如請求項1的處理器,其中所述匯流排系統包含連接至所述可組態單元陣列中的可組態單元的開關的網格,所述網格中的開關包含可使用埠參數組態的電路,其根據所述埠參數來啟用和禁用所述開關上的埠。
  6. 如請求項1的處理器,其中所述匯流排系統包含頂層網路和陣列層網路,所述頂層網路連接到外部資料介面,以與所述陣列外部的記憶體進行通訊,所述陣列層網路連接到所述可組態單元陣列中的可組態單元,以及其中所述記憶體存取控制器係連接到所述陣列層網路和所述頂層網路,並且包含用以路由所述頂層網路和所述陣列層網路之間的資料傳輸的邏輯。
  7. 如請求項6的處理器,其中所述陣列層網路包含開關的網格,而所述網格中的所述開關、所述可組態單元陣列中的所述可組態單元和所述記憶體存取控制器係所述陣列層網路上的可定址節點。
  8. 如請求項6的處理器,其包含複數個記憶體存取控制器,所述複數個記憶體存取控制器包含前述的記憶體存取控制器、在所述複數個記憶體存取控制器中為 所述陣列層網路中的可定址節點的記憶體存取控制器。
  9. 如請求項8的處理器,其中所述陣列層網路包含開關的網格,而所述網格中的所述開關、所述可組態單元陣列中的所述可組態單元和所述複數個記憶體存取控制器中的所述記憶體存取控制器係所述陣列層網路上的可定址節點。
  10. 如請求項1的處理器,其中所述可組態單元陣列包含複數個可組態單元的圖塊,而所述匯流排系統包含在所述圖塊之間的邊界上的開關,所述開關包含用以劃分所述圖塊邊界上的所述匯流排系統的電路。
  11. 如請求項10的處理器,其包含複數個記憶體存取控制器,所述複數個記憶體存取控制器包含前述的記憶體存取控制器、在所述複數個記憶體存取控制器中可操作地耦接到所述複數個圖塊中的每個圖塊的至少一個記憶體存取控制器。
  12. 如請求項1的處理器,其包含連接到所述匯流排系統的組態控制器,其包含用以執行組態載入程序的邏輯,其包含將組態檔案分配到所述陣列中的各個所述可組態單元集合中的可組態單元,其中在所述組態載入程序期間可在另一個可組態單元集合中執行所述可組態單元集合中之一者中的應用程式圖形。
  13. 如請求項1的處理器,其包含連接到所述匯流排系統的組態控制器,其包含用以執行組態卸載程序的邏輯,其包含從各個集合中的可組態單 元卸載狀態資訊,其中在所述組態卸載程序期間可在另一個可組態單元集合中執行所述可組態單元集合中之一者中的應用程式圖形。
  14. 一種可重組態資料處理器,其包含:在一個晶粒或多晶片模組上的可組態單元陣列,其包含複數個可組態單元的圖塊;連接到所述可組態單元陣列的匯流排系統,其包含在所述圖塊之間的圖塊邊界上的邊界開關,其包含可組態成在所述圖塊邊界上劃分所述匯流排系統,並透過所述匯流排系統阻隔特定圖塊內的可組態單元與所述特定圖塊外的可組態單元之間的通訊的電路;以及連接到所述匯流排系統的複數個記憶體存取控制器,所述複數個記憶體存取控制器中的記憶體存取控制器可組態成將對於源自對應圖塊內的所述可組態單元陣列外的記憶體的存取侷限於分配給所述可組態單元陣列外的所述記憶體中的所述對應圖塊的記憶體空間,以及其中所述複數個記憶體存取控制器中的至少一個記憶體存取控制器可操作地耦接到所述複數個圖塊中的每個圖塊。
  15. 如請求項14的處理器,其中所述匯流排系統包含頂層網路和陣列層網路,所述頂層網路連接到外部資料介面,以與所述陣列外部的記憶體進行通訊,所述陣列層網路連接到所述可組態單元陣列中的可組態單元,以及其中所述複數個記憶體存取控制器中的記憶 體存取控制器係連接到所述陣列層網路和所述頂層網路,並且包含用以路由所述頂層網路和所述陣列層網路之間的資料傳輸的邏輯。
  16. 如請求項15的處理器,其中所述陣列層網路包含含有所述邊界開關的開關的網格,而所述網格中的所述開關、所述可組態單元陣列中的所述可組態單元和所述記憶體存取控制器係所述陣列層網路上的可定址節點。
  17. 如請求項14的處理器,其包含連接到所述匯流排系統的組態控制器,所述組態控制器包含:用以執行組態載入程序的邏輯,其包含將組態檔案分配到所述陣列中的各個所述可組態單元集合中的可組態單元,其中在所述組態載入程序期間可在另一個可組態單元集合中執行所述可組態單元集合中之一者中的應用程式圖形;以及用以執行組態卸載程序的邏輯,其包含從各個集合中的可組態單元卸載狀態資訊,其中在所述組態卸載程序期間可在另一個可組態單元集合中執行所述可組態單元集合中之一者中的應用程式圖形。
  18. 一種用於組態可重組態資料處理器的方法,所述可重組態資料處理器包含可組態單元陣列和在一個晶粒或多晶片模組上連接到所述可組態單元陣列的匯流排系統;所述方法包含藉由透過所述匯流排系統阻隔特定集合內的可組態單 元與所述特定集合外的可組態單元之間的通訊,將所述可組態單元陣列劃分成複數個可組態單元集合;以及將對於源自所述特定集合內的所述可組態單元陣列外的記憶體的存取侷限於分配給所述可組態單元陣列外的所述記憶體中的所述特定集合的記憶體空間。
  19. 如請求項18的方法,其包含透過載入所述可組態單元集合的邊界上的開關中的組態資料來劃分所述可組態單元陣列,以阻隔橫跨所述邊界的通訊。
  20. 如請求項18的方法,其中所述複數個可組態單元集合中的可組態單元集合可組態成使用虛擬位址來執行應用程式圖形,其包含透過轉換源自在所述特定集合內執行的應用程式圖形的請求中的虛擬位址來將對於所述陣列外的記憶體的存取侷限於分配給所述特定集合的所述記憶體空間中的位址。
  21. 如請求項18的方法,其包含:在各個可組態單元集合中載入應用程式圖形,並啟動所述載入的應用程式圖形;以及停止和卸載在所述可組態單元集合中之一者中的選定應用程式圖形,接著載入所述集合中之所述者中的另一個應用程式圖形,而所述可組態單元陣列中的其它可組態單元集合中的其它應用程式圖形繼續執行。
  22. 如請求項21的方法,其中所述選定應用程式圖形包含檢查點,而停止所述選定應用程式圖形包含等待,直到其到達所述檢查點。
TW108148376A 2019-01-03 2019-12-30 可重組態資料處理器的虛擬化 TWI719788B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/239,252 US10698853B1 (en) 2019-01-03 2019-01-03 Virtualization of a reconfigurable data processor
US16/239,252 2019-01-03

Publications (2)

Publication Number Publication Date
TW202040368A TW202040368A (zh) 2020-11-01
TWI719788B true TWI719788B (zh) 2021-02-21

Family

ID=69400643

Family Applications (2)

Application Number Title Priority Date Filing Date
TW108148376A TWI719788B (zh) 2019-01-03 2019-12-30 可重組態資料處理器的虛擬化
TW110101760A TWI789687B (zh) 2019-01-03 2019-12-30 可重組態資料處理器的虛擬化

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW110101760A TWI789687B (zh) 2019-01-03 2019-12-30 可重組態資料處理器的虛擬化

Country Status (8)

Country Link
US (4) US10698853B1 (zh)
EP (1) EP3906476A1 (zh)
JP (1) JP2022516739A (zh)
KR (1) KR20210119390A (zh)
CN (1) CN113424168A (zh)
CA (1) CA3125707C (zh)
TW (2) TWI719788B (zh)
WO (1) WO2020142623A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10832753B2 (en) * 2017-07-31 2020-11-10 General Electric Company Components including structures having decoupled load paths
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11327923B2 (en) 2019-09-04 2022-05-10 SambaNova Systems, Inc. Sigmoid function in hardware and a reconfigurable data processor including same
US11327713B2 (en) 2019-10-01 2022-05-10 SambaNova Systems, Inc. Computation units for functions based on lookup tables
US11327717B2 (en) 2019-11-19 2022-05-10 SambaNova Systems, Inc. Look-up table with input offsetting
US11328038B2 (en) 2019-11-25 2022-05-10 SambaNova Systems, Inc. Computational units for batch normalization
US11150872B2 (en) 2019-12-17 2021-10-19 SambaNova Systems, Inc. Computational units for element approximation
US11836629B2 (en) 2020-01-15 2023-12-05 SambaNova Systems, Inc. Computationally efficient softmax loss gradient backpropagation
US12052370B2 (en) * 2020-05-04 2024-07-30 Intel Corporation Managing state in accelerators
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11409540B1 (en) * 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11841823B2 (en) 2021-08-16 2023-12-12 Micron Technology, Inc. Connectivity in coarse grained reconfigurable architecture
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems
US11892966B2 (en) * 2021-11-10 2024-02-06 Xilinx, Inc. Multi-use chip-to-chip interface
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources
US12056085B2 (en) 2022-01-20 2024-08-06 SambaNova Systems, Inc. Determining internodal processor interconnections in a data-parallel computing system
US11983141B2 (en) * 2022-01-27 2024-05-14 SambaNova Systems, Inc. System for executing an application on heterogeneous reconfigurable processors
US12072836B2 (en) * 2022-02-09 2024-08-27 SambaNova Systems, Inc. Fast argument load in a reconfigurable data processor
CN116257320B (zh) * 2022-12-23 2024-03-08 中科驭数(北京)科技有限公司 一种基于dpu虚拟化配置管理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728871B1 (en) * 1996-12-09 2004-04-27 Pact Xpp Technologies Ag Runtime configurable arithmetic and logic cell
TW200801964A (en) * 2005-12-20 2008-01-01 Silicon Image Inc Convert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices
TW200928736A (en) * 2007-12-27 2009-07-01 Sandisk Il Ltd A controller for one type of NAND flash memory for emulating another type of NAND flash memory
US20180121121A1 (en) * 2016-10-28 2018-05-03 Western Digital Technologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
US20180157825A1 (en) * 2013-03-15 2018-06-07 Brick Eksten Systems and methods for determining trust levels for computing components using blockchain

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6238075A (ja) 1985-08-13 1987-02-19 Fuji Xerox Co Ltd 行列デ−タの転置処理装置
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5684980A (en) * 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
US5434995A (en) 1993-12-10 1995-07-18 Cray Research, Inc. Barrier synchronization for distributed memory massively parallel processing systems
CN1076838C (zh) 1994-08-19 2001-12-26 财团法人工业技术研究院 离散余弦转换/反离散余弦转换电路的转置存储器
US5794033A (en) 1995-10-24 1998-08-11 International Business Machines Corporation Method and system for in-site and on-line reprogramming of hardware logics with remote loading in a network device
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
US6105119A (en) * 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
US6327634B1 (en) * 1998-08-25 2001-12-04 Xilinx, Inc. System and method for compressing and decompressing configuration data for an FPGA
US7073069B1 (en) * 1999-05-07 2006-07-04 Infineon Technologies Ag Apparatus and method for a programmable security processor
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US6845445B2 (en) 2000-05-12 2005-01-18 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
US6817005B2 (en) 2000-05-25 2004-11-09 Xilinx, Inc. Modular design method and system for programmable logic devices
US6990555B2 (en) 2001-01-09 2006-01-24 Pact Xpp Technologies Ag Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.)
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
EP1372084A3 (en) 2002-05-31 2011-09-07 Imec Method for hardware-software multitasking on a reconfigurable computing platform
GB0304628D0 (en) 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
US7412581B2 (en) * 2003-10-28 2008-08-12 Renesas Technology America, Inc. Processor for virtual machines and method therefor
US7386703B2 (en) 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
JP4594666B2 (ja) 2004-07-12 2010-12-08 富士通株式会社 再構成可能な演算装置
US7224184B1 (en) * 2004-11-05 2007-05-29 Xilinx, Inc. High bandwidth reconfigurable on-chip network for reconfigurable systems
US7673164B1 (en) 2004-12-13 2010-03-02 Massachusetts Institute Of Technology Managing power in a parallel processing environment
US20060190517A1 (en) 2005-02-02 2006-08-24 Guerrero Miguel A Techniques for transposition of a matrix arranged in a memory as multiple items per word
JP4804829B2 (ja) 2005-08-24 2011-11-02 富士通株式会社 回路
GB0605349D0 (en) 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array
US8456191B2 (en) * 2006-06-21 2013-06-04 Element Cxi, Llc Data-driven integrated circuit architecture
US8407429B2 (en) * 2006-06-21 2013-03-26 Element Cxi, Llc Multi-context configurable memory controller
US7797258B1 (en) 2006-11-02 2010-09-14 Nvidia Corporation Graphics system transposer read scheduler
US8026739B2 (en) * 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US7669014B2 (en) 2007-07-23 2010-02-23 Nokia Corporation Transpose memory and method thereof
DE212007000102U1 (de) * 2007-09-11 2010-03-18 Core Logic, Inc. Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
US7873701B2 (en) * 2007-11-27 2011-01-18 International Business Machines Corporation Network on chip with partitions
US8526422B2 (en) 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US8006021B1 (en) * 2008-03-27 2011-08-23 Xilinx, Inc. Processor local bus bridge for an embedded processor block core in an integrated circuit
CN101593169A (zh) 2008-05-30 2009-12-02 国际商业机器公司 可配置逻辑阵列的配置管理器和配置方法
US8045546B1 (en) * 2008-07-08 2011-10-25 Tilera Corporation Configuring routing in mesh networks
US7952387B1 (en) 2008-08-13 2011-05-31 Altera Corporation Securing memory based IP in FPGAs
US20100161309A1 (en) 2008-12-23 2010-06-24 Scaleo Chip Apparatus and Methods Thereof for Configuration and Control of a System-On-Chip Emulation Platform
CN101485576A (zh) 2008-12-30 2009-07-22 深圳市蓝韵实业有限公司 一种对设备内fpga芯片统一配置和管理的系统
KR101581882B1 (ko) 2009-04-20 2015-12-31 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US9063825B1 (en) * 2009-09-21 2015-06-23 Tilera Corporation Memory controller load balancing with configurable striping domains
KR101076869B1 (ko) 2010-03-16 2011-10-25 광운대학교 산학협력단 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
US20110264723A1 (en) 2010-04-21 2011-10-27 Samsung Electronics Co., Ltd. System and method for successive matrix transposes
JP6078923B2 (ja) 2011-10-14 2017-02-15 パナソニックIpマネジメント株式会社 転置演算装置とその集積回路、および転置処理方法
KR101978409B1 (ko) 2012-02-28 2019-05-14 삼성전자 주식회사 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US9348792B2 (en) 2012-05-11 2016-05-24 Samsung Electronics Co., Ltd. Coarse-grained reconfigurable processor and code decompression method thereof
WO2014075705A1 (en) 2012-11-13 2014-05-22 Hewlett-Packard Indigo B.V. Formation of a crease and an image on media
US20140149480A1 (en) 2012-11-28 2014-05-29 Nvidia Corporation System, method, and computer program product for transposing a matrix
US9411715B2 (en) * 2012-12-12 2016-08-09 Nvidia Corporation System, method, and computer program product for optimizing the management of thread stack memory
CN103906068B (zh) * 2012-12-26 2017-07-21 华为技术有限公司 虚拟基站创建方法及装置
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
JP6092649B2 (ja) 2013-02-15 2017-03-08 キヤノン株式会社 演算装置、アレイ型演算装置およびその制御方法、情報処理システム
KR20140126190A (ko) 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
KR20140131472A (ko) 2013-05-03 2014-11-13 삼성전자주식회사 상수 저장 레지스터를 구비하는 재구성 가능 프로세서
US10140157B2 (en) 2014-05-29 2018-11-27 Apple Inc. Multiple process scheduling of threads using process queues
TWI570573B (zh) 2014-07-08 2017-02-11 財團法人工業技術研究院 矩陣轉置電路
US10180908B2 (en) * 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
US10116557B2 (en) * 2015-05-22 2018-10-30 Gray Research LLC Directional two-dimensional router and interconnection network for field programmable gate arrays, and other circuits and applications of the router and network
US20170083313A1 (en) 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
US10019234B2 (en) 2015-10-05 2018-07-10 Altera Corporation Methods and apparatus for sequencing multiply-accumulate operations
US9697318B2 (en) 2015-10-08 2017-07-04 Altera Corporation State visibility and manipulation in integrated circuits
EP3157172B1 (en) 2015-10-15 2018-11-28 Menta System and method for testing and configuration of an fpga
US10528356B2 (en) 2015-11-04 2020-01-07 International Business Machines Corporation Tightly coupled processor arrays using coarse grained reconfigurable architecture with iteration level commits
GB2545170B (en) * 2015-12-02 2020-01-08 Imagination Tech Ltd GPU virtualisation
US10037227B2 (en) 2015-12-17 2018-07-31 Intel Corporation Systems, methods and devices for work placement on processor cores
JP6669961B2 (ja) 2015-12-24 2020-03-18 富士通株式会社 プロセッサ、再構成可能回路の制御方法及びプログラム
US10516396B2 (en) 2016-04-29 2019-12-24 University Of Florida Research Foundation, Incorporated Overlay architecture for programming FPGAs
US10067911B2 (en) 2016-07-26 2018-09-04 Advanced Micro Devices, Inc. High performance inplace transpose operations
DE102016216944A1 (de) 2016-09-07 2018-03-08 Robert Bosch Gmbh Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit vereinfachter Aktivierungsfunktion
US20180089117A1 (en) 2016-09-26 2018-03-29 Wave Computing, Inc. Reconfigurable fabric accessing external memory
US11487445B2 (en) 2016-11-22 2022-11-01 Intel Corporation Programmable integrated circuit with stacked memory die for storing configuration data
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US9952831B1 (en) 2017-02-16 2018-04-24 Google Llc Transposing in a matrix-vector processor
CN110832460A (zh) 2017-06-30 2020-02-21 英特尔公司 基于中断率来修改处理器频率
US11256978B2 (en) 2017-07-14 2022-02-22 Intel Corporation Hyperbolic functions for machine learning acceleration
US11055126B2 (en) * 2017-08-16 2021-07-06 Royal Bank Of Canada Machine learning computing model for virtual machine underutilization detection
WO2019089816A2 (en) * 2017-10-31 2019-05-09 Micron Technology, Inc. System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network
GB2568087B (en) 2017-11-03 2022-07-20 Imagination Tech Ltd Activation functions for deep neural networks
US10599596B2 (en) 2018-01-08 2020-03-24 Intel Corporation Management of processor performance based on user interrupts
US20190303297A1 (en) * 2018-04-02 2019-10-03 Intel Corporation Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US11048661B2 (en) 2018-04-16 2021-06-29 Simple Machines Inc. Systems and methods for stream-dataflow acceleration wherein a delay is implemented so as to equalize arrival times of data packets at a destination functional unit
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US11188497B2 (en) * 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728871B1 (en) * 1996-12-09 2004-04-27 Pact Xpp Technologies Ag Runtime configurable arithmetic and logic cell
TW200801964A (en) * 2005-12-20 2008-01-01 Silicon Image Inc Convert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices
TW200928736A (en) * 2007-12-27 2009-07-01 Sandisk Il Ltd A controller for one type of NAND flash memory for emulating another type of NAND flash memory
US20180157825A1 (en) * 2013-03-15 2018-06-07 Brick Eksten Systems and methods for determining trust levels for computing components using blockchain
US20180121121A1 (en) * 2016-10-28 2018-05-03 Western Digital Technologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory

Also Published As

Publication number Publication date
US20200257643A1 (en) 2020-08-13
US20200218683A1 (en) 2020-07-09
JP2022516739A (ja) 2022-03-02
US20220156213A1 (en) 2022-05-19
EP3906476A1 (en) 2021-11-10
TW202040368A (zh) 2020-11-01
TW202117547A (zh) 2021-05-01
US11681645B2 (en) 2023-06-20
WO2020142623A1 (en) 2020-07-09
US20230289310A1 (en) 2023-09-14
US10698853B1 (en) 2020-06-30
US11237996B2 (en) 2022-02-01
KR20210119390A (ko) 2021-10-05
CN113424168A (zh) 2021-09-21
CA3125707A1 (en) 2020-07-09
TWI789687B (zh) 2023-01-11
CA3125707C (en) 2023-07-04

Similar Documents

Publication Publication Date Title
TWI719788B (zh) 可重組態資料處理器的虛擬化
CN113383327B (zh) 可重配置数据处理器的配置加载
CN113272796B (zh) 可重配置的数据处理器
WO2021247614A1 (en) Anti-congestion flow control for reconfigurable processors
TWI766211B (zh) 可重組態資料處理器的組態加載和卸載
EP3841484B1 (en) Link layer data packing and packet flow control scheme