TWI706256B - 加速器控制器及其方法 - Google Patents
加速器控制器及其方法 Download PDFInfo
- Publication number
- TWI706256B TWI706256B TW105124369A TW105124369A TWI706256B TW I706256 B TWI706256 B TW I706256B TW 105124369 A TW105124369 A TW 105124369A TW 105124369 A TW105124369 A TW 105124369A TW I706256 B TWI706256 B TW I706256B
- Authority
- TW
- Taiwan
- Prior art keywords
- dram
- accelerator
- array
- logic
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0423—Input/output
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/25—Pc structure of the system
- G05B2219/25257—Microcontroller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Automation & Control Theory (AREA)
- Logic Circuits (AREA)
- Memory System (AREA)
- Stored Programmes (AREA)
Abstract
一種加速器控制器包括偵測器及加載器。所述偵測器偵
測應用程式或虛擬機的運行時間特徵,並辨識與對應於所偵測運行時間特徵的所述應用程式或所述虛擬機相關聯的加速器邏輯。所述加載器將所辨識加速器邏輯加載至至少一個動態隨機存取記憶體(dynamic random access memory,DRAM)中。所述至少一個DRAM陣列能夠基於所辨識加速器邏輯而被選擇性地重新配置成具有如同查找表(look-up table,LUT)般之行為或如同DRAM記憶體陣列般之行為,且所述至少一個DRAM陣列是處於作業系統環境的快取同調位址空間中。所述加速器邏輯可包括查找表(LUT)。
Description
本專利申請案基於35 U.S.C § 119(e)主張於2015年11月30日提出申請的美國臨時專利申請案第62/261,306號的優先權,所述美國臨時專利申請案的揭露內容全文併入本案供參考。
本發明是有關於計算技術。更具體而言,本發明是有關於可重新配置的處理單元以及使用可重新配置的處理單元的系統。
一種傳統的處理加速器可被實作為例如現場可程式化閘陣列(Field Programmable Gate Array,FPGA)或圖形處理單元(Graphics Processing Unit,GPU)等可程式化邏輯裝置(programmable logic device,PLD)以提供有效率的加速器邏輯。資料中心應用程式及行動裝置應用程式日益成為資料密集型的,且對於使用處理加速器的此種應用程式而言,傳統的記憶體階層不能夠提供良好的效能及能源效率。傳統的記憶體階層中的處理加速器的最大效率會因片外(off-chip)(即非中央處理單元)記憶
體存取而劣化。實作靠近記憶體的加速器邏輯來提高效率迄今所提供的成效是有限的,乃因其成本高且效能欠佳。此外,若加速器邏輯被實作為靠近例如動態隨機存取記憶體(dynamic random access memory,DRAM)等記憶體,則將非動態隨機存取記憶體(non-DRAM)加速器邏輯整合至DRAM半導體晶粒上會犧牲DRAM的容量。
大體而言,可程式化邏輯裝置(PLD)是一種用於形成可重新配置的數位電路的電子組件。與一般具有固定功能的邏輯閘或邏輯電路不同,PLD在製造時通常具有未定義的功能,且常常在電路中使用PLD之前,所述PLD必須被程式化或重新配置以執行所期望的功能。
通常,PLD可包括邏輯裝置及記憶體裝置的組合。所述記憶體一般而言用於儲存定義所期望的功能的程式化型式(pattern)。用於將資料儲存於積體電路中的大多數技術已適用於PLD,例如矽反熔絲(silicon anti-fuse)、靜態隨機存取記憶體(static random access memory,SRAM)、可抹除可程式化唯讀記憶體(erasable programmable read-only memory,EPROM)、電可抹除可程式化唯讀記憶體(electronically erasable programmable read-only memory,EEPROM)、非揮發性隨機存取記憶體(non-volatile RAM)等。大多數PLD一般包括藉由向可程式化邏輯裝置內的經改質的矽區域兩端施加專門的電壓(即非操作電壓或高壓)而被程式化的組件,所述經改質的矽區域會中斷或設定
(依技術而定)電性連接並改變所述可程式化邏輯裝置的電性電
路的佈局。
最常用類型的可程式化邏輯裝置中的一者為現場可程式化閘陣列(field-programmable gate array,FPGA),所述FPGA是被設計成在製造之後由客戶或設計者進行配置的積體電路;因此被稱為「現場可程式化」。FPGA包括可程式化邏輯區塊的陣列、及使所述區塊能夠被「接線於一起」的可重新配置互連線階層(hierarchy of reconfigurable interconnects)。FPGA的邏輯區塊可被配置成執行複雜的組合功能,或僅執行如及(AND)、互斥或(XOR)等簡單的邏輯閘。
實施例提供一種加速器控制器,所述加速器控制器包括偵測器及加載器。所述偵測器偵測應用程式或虛擬機的運行時間特徵,並辨識與對應於所述所偵測運行時間特徵的所述應用程式或所述虛擬機相關聯的加速器邏輯。所述加載器將所述所辨識加速器邏輯加載至至少一個動態隨機存取記憶體(DRAM)中。所述至少一個DRAM陣列可基於所述所辨識加速器邏輯而被選擇性地重新配置成具有如同查找表(LUT)般之行為或如同DRAM記憶體陣列般之行為,且所述至少一個DRAM陣列可處於作業系統環境的快取同調位址空間中。所述加速器邏輯可包括查找表(LUT)。
另一實施例提供一種加速器控制器,所述加速器控制器
包括:偵測器,用以偵測應用程式或虛擬機的運行時間特徵,其中所述運行時間特徵可基於所述應用程式的或所述虛擬機的預定義辨識、與所述應用程式或所述虛擬機相關聯的功能利用、中央處理利用、記憶體利用、潛時中的至少一者;以及加載器,用以將對應於所述所偵測運行時間特徵的加速器邏輯加載至至少一個動態隨機存取記憶體(DRAM)中,其中所述至少一個DRAM陣列可基於所述所辨識的加速器邏輯而被選擇性地重新配置成具有如同查找表(LUT)般之行為或如同DRAM記憶體陣列般之行為。所述偵測器可更用於辨識與對應於所述所偵測運行時間特徵的所述應用程式或所述虛擬機相關聯的加速器邏輯,且所述至少一個DRAM陣列可處於所述系統的快取同調位址空間中。在一個實施例中,所述加速器邏輯可包括查找表(LUT)。在另一實施例中,所述DRAM可為雙直插記憶體模組(Dual In-line Memory Module,DIMM)的一部分。
又一實施例提供一種方法,所述方法包括:偵測在作業系統環境中運行的應用程式或虛擬機的運行時間特徵;選擇對應於所述所偵測運行時間特徵的加速器邏輯;以及使用加載命令及儲存命令來將所述所選擇的加速器邏輯加載至至少一個動態隨機存取記憶體(DRAM)子陣列中,其中所述至少一個DRAM子陣列可被選擇性地重新配置成具有如同查找表(LUT)般之行為或如同DRAM記憶體陣列般之行為,其中所述至少一個DRAM子陣列可被配置成具有如同查找表般之行為,且其中所述至少一個
DRAM子陣列可處於作業系統環境的快取同調位址空間中。
100、200:可重新配置的記憶體邏輯裝置
101:RLUT子陣列
102:輸入/輸出(I/O)介面
103:配置介面
201:子陣列
202:通訊匯流排
203:輸入訊號焊墊
204:輸出訊號焊墊
300、310、320、330、404、604:DIMM
301:DRAM-FPGA模組
302:規則的DRAM模組
303:混合DRAM-FPGA模組
400、600:系統架構
401、601:CPU
402、602:記憶體通道
403:儲存器
405:作業系統
406:加速器控制器
407:偵測器
408:加載器
409:運行時間特徵
410:加速器邏輯
411、605:DRAM-FPGA
412:DRAM-FPGA驅動器
500:方法
501、502、503、504:操作
603:大容量儲存裝置
606:互連
700:資訊處理系統
705:系統匪流排
710:處理器及/或邏輯
720:揮發性記憶體
730:非揮發性記憶體
740:網路介面
750:使用者介面單元
760:硬體組件
770:軟體組件
在以下部分中,將參考圖中所示實施例來闡述本文所揭露之主題的態樣,其中:
圖1繪示根據本文所揭露之主題的可重新配置的記憶體邏輯裝置的實施例。
圖2繪示根據本文所揭露之主題的可重新配置的記憶體邏輯的另一實施例的方塊圖。
圖3A至圖3D分別繪示根據本文所揭露之主題的包括一或多個動態隨機存取記憶體-現場可程式化閘陣列(DRAM-FPGA)的雙直插記憶體模組(DIMM)的實施例。
圖4繪示根據本文所揭露之主題的在記憶體通道中使用一或多個DRAM-FPGA的系統架構的實施例的功能性方塊圖。
圖5繪示根據本文所揭露之主題的用於偵測虛擬機或應用程式的運行時間特徵及將對應於所述虛擬機或應用程式的加速器邏輯儲存於可重新配置的DRAM子陣列中的方法的流程圖。
圖6繪示根據本文所揭露之主題的基於快速通道互連(QuickPath Interconnect,QPI)並在記憶體通道中使用一或多個DRAM-FPGA的系統架構。
圖7繪示根據本文所揭露之主題的可使用在記憶體通道中包括一或多個DRAM-FPGA的系統架構的資訊處理系統的實施例的功能性方塊圖。
本文所揭露之主題是有關於一種在記憶體通道中使用一或多個動態隨機存取記憶體-現場可程式化閘陣列(dynamic random access memory field programmable gate array,DRAM-FPGA)的系統架構。DRAM-FPGA使用可選擇地被重新配置的DRAM胞元陣列作為查找表(LUT);實作靠近記憶體的可重新配置的邏輯;且可被重新配置為任意邏輯設計。
在以下詳細說明中,闡述諸多具體細節以提供對所揭露內容之透徹理解。然而,熟習此項技術者應理解的是,無需所述具體細節即可實踐所揭露之態樣。在其他情形中,未對眾所習知的方法、程序、組件、及電路予以詳細闡述,以避免使本文所揭露之主題模糊不清。
在本說明書通篇中所提及的「一個實施例」或「一實施例」意指結合所述實施例所闡述的特定特徵、結構、或特性包含於本文所揭露之至少一個實施例中。因此,在本說明書通篇各處所出現的片語「在一個實施例中」或「在一實施例中」或「根據一個實施例」(或具有相同含義的其他片語)未必全部指代同一實施例。此外,所述特定特徵、結構、或特性可在一或多個實施例中以任何適當的方式加以組合。此外,依本文所論述內容的上下文而定,單數用語可包括對應的複數形式,且複數用語可包括對應的單數形式。更應注意到,本文示出並論述的各個圖式(包括
組件圖)僅用於說明之目的,且未按比例繪製。類似地,示出各個波形圖及時序圖亦僅用於說明之目的。
本文使用的「第一」、「第二」等用語是用作其前面名詞的標注,且並不暗示任意類型的次序(例如空間的、時間的、邏輯的等),除非明確地如此定義。此外,相同的參考標號可在兩個或更多個圖式中使用以指代具有相同或類似功能的部件、組件、區塊、電路、單元、或模組。然而,此種用法僅是為了簡要說明及易於論述;其並不暗示此些組件或單元在構造或架構上的細節在全部實施例中相同、或此些具有共同參考標號的部件/模組是實作本文所揭露特定實施例的教示內容的唯一方式。
本文所揭露之主題是有關於一種基於DRAM的可重新配置的邏輯,所述基於DRAM的可重新配置的邏輯使用DRAM胞元陣列作為查找表(LUT);實作靠近記憶體的可重新配置的邏輯;且可被重新配置為任意邏輯設計。此外,此種基於DRAM的可重新配置的邏輯可與DRAM製作製程相容,且是記憶體內處理(in-memory processing)的良好候選者。相較於傳統的現場可程式化閘陣列(FPGA),基於DRAM的可重新配置的邏輯提供更高的密度、更低的成本、及更好的靈活性(例如支援在倉庫規模資料中心(warehouse-scale center)中的不同計算節點之間進行快速遷移的自我修改(self-modifying)及快速動態重新配置)。
使用FPGA形式的可程式化邏輯裝置的傳統系統架構通常將所述FPGA定位於PCIe槽中,所述PCIe槽不位於快取同調
位址空間(cache-coherent address space)中且提供低的通訊頻寬。此外,PCIe槽中的FPGA中的加速器邏輯的運作由驅動器提供的顯式命令(explicit command)執行。
圖1繪示根據本文所揭露之主題的可重新配置的記憶體邏輯裝置100的實施例。所述可重新配置的記憶體邏輯裝置100可被配置及連接成以查找表(LUT)模式或以規則的DRAM模式工作。所述可重新配置的記憶體邏輯裝置100包括一或多個RLUT子陣列101、輸入/輸出(I/O)介面102、及配置介面103。各RLUT子陣列101以列及行的形式排列。每一RLUT子陣列101可包括諸多記憶體胞元(圖中未示出),所述記憶體胞元亦可排列成由列及行形成的陣列。所述可重新配置的記憶體邏輯裝置100可包括圖1中未繪示的其他組件及/或元件。
在一個實施例中,RLUT子陣列101包括DRAM。RLUT子陣列101中的一或多者可使用標準記憶體存取操作而被選擇性地重新配置成或重新程式化成具有如同LUT般之行為,或作為另一種選擇,具有如同傳統的DRAM子陣列般之行為。本文所使用的可重新配置的記憶體邏輯裝置100一般而言可在本文中被稱為FPGA。對於其中RLUT子陣列101包括DRAM的可重新配置的記憶體邏輯裝置100的實施例而言,可重新配置的記憶體邏輯裝置100可在本文中被稱為「DRAM-FPGA」。
在一個實施例中,被配置成查找表或RAM的RLUT子陣列101的數目可視需要而動態地調整。在另一實施例中,RLUT
子陣列101中的一或多者可被重新配置成具有如同LUT或傳統記憶體子陣列般之行為,同時RLUT子陣列101中的一或多者可為不可重新配置的且被配置成具有如同傳統記憶體子陣列般之行為。本文中所使用的被重新配置成具有如同LUT般之行為或如同傳統記憶體子陣列般之行為的子陣列被稱為可重新配置的查找表(reconfigurable LUT,RLUT)子陣列。
若RLUT子陣列101被配置成具有如同LUT般之行為,則所述LUT行為可實作邏輯功能,例如算術邏輯功能(即加法器、乘法器等)、邏輯功能(及(AND)、或(OR)、互斥或(XOR)等)、或其組合,但並非僅限於此。可藉由對子陣列僅執行記憶體寫入操作或特殊的寫入操作而修改所述邏輯功能,藉此容許在可重新配置的記憶體邏輯裝置100的運作期間動態地重新配置或修改邏輯功能。特殊的寫入操作可包括關於寫入操作涉及特定的子陣列的指示符。使用傳統寫入操作(或類似寫入操作)可容許在不需要專門的(即非操作電壓或高電壓)電壓(例如用於將電可抹除可程式化唯讀記憶體(electronically erasable programmable read-only memory,EEPROM)程式化的電壓等)的情況下對所選擇的RLUT子陣列101進行重新程式化。
RLUT子陣列與RAM子陣列的共同混合可提供多種優勢。舉例而言,與儲存於RAM子陣列中的資料的緊密接近性可加快由RLUT子陣列執行的計算並減少功率需求,乃因所述資料不需要經由匯流排而在個別的組件之間移動。此外,在一個實施例
中,RLUT子陣列101中的一或多者可被同時存取,藉此減少可重新配置的記憶體邏輯裝置100的功率及計算複雜度。藉此,由DRAM RLUT提供的近資料計算(near-data computing)可更快且更有效率。藉由將RLUT子陣列建立在類似於用於創建處理器(圖中未示出)及記憶體(圖中未示出)的技術的DRAM技術的基礎上,RLUT子陣列可與處理器及/或記憶體存在於同一晶粒或封裝中。採用相同的製造製程可降低根據本文所揭露之主題的在記憶體通道中使用一或多個RLUT的系統的生產成本。此外,藉由將所述RLUT子陣列建立在DRAM子陣列的基礎上,與基於靜態隨機存取記憶體(static random access memory,SRAM)的FPGA的密度相比,可達成更高的密度。舉例而言,基於DRAM的RLUT可每一記憶體胞元或每一資訊位元僅需要一個電晶體及一個電容器(1T1C),而基於SRAM的FPGA可每一記憶體胞元或每一資訊位元需要六個電晶體(6T)。此外,基於DRAM的RLUT與基於SRAM的或基於快閃記憶體的FPGA相比可降低成本。
輸入/輸出介面102可被配置成對所選擇的RLUT子陣列101進行讀取或寫入。寫入存取可涉及對RLUT子陣列101進行寫入以界定子陣列是否具有如同LUT般之行為或如同傳統DRAM子陣列般之行為。在某些實施例中,所有記憶體存取或記憶體操作皆可經由輸入/輸出介面102。若所述記憶體存取是針對儲存有用於復活的資料的子陣列(無論是RAM子陣列還是被配置成RAM子陣列的RLUT子陣列),則輸入/輸出介面102可僅處理作為傳統
記憶體存取的讀取/寫入請求。然而,若所述記憶體存取是針對被配置成查找表的RLUT子陣列,則輸入/輸出介面102可將所述記憶體存取傳遞至配置介面103以供處理。
配置介面103可被配置成調整位於整個可重新配置的記憶體邏輯裝置100內及/或位於每一各別RLUT子陣列101內的訊號的路由。舉例而言,配置介面103可被配置成調整被配置為RLUT及/或RAM的多個子陣列之間的訊號的路由。在一個示例性實施例中,輸入/輸出介面102可被配置成管理對RLUT子陣列101的資料存取。舉例而言,在一個實施例中,輸入/輸出介面102可自處理器(圖中未示出)接收配置資訊,所述配置資訊用於配置輸入/輸出介面102以控制對RLUT子陣列101的輸入/輸出存取而使得RLUT子陣列101中的記憶體位置表現為可定址暫存器(addressable register)。配置介面103可被配置成藉由例如點對點路由、基於位址的路由、或其組合而管理各別RLUT子陣列101之間的互連及訊號路由。舉例而言,在一個實施例中,可由輸入/輸出介面102接收配置資訊,所述配置資訊用於配置配置界面103以使RLUT子陣列101可執行可跨越多個RLUT子陣列101的複雜邏輯操作。在一個示例性實施例中,輸入/輸出介面102可包括配置介面103。
記憶體存取可包括將LUT儲存於特定的RLUT子陣列101中的寫入操作。所述記憶體存取亦可包括依所述LUT的大小而定的一系列記憶體存取。在某些實施例中,特定的記憶體存取
可指示輸入至LUT的輸入的數目及自LUT輸出的輸出的數目。此外,其他記憶體存取可指示關於RLUT子陣列101的訊號路由資訊及/或關於兩個或更多個RLUT子陣列是否串聯或以其他方式一起路由來執行邏輯功能(例如加法器等)的訊號路由資訊。在名稱為「基於動態隨機存取記憶體的可重新配置的邏輯(DRAM-Based Reconfigurable Logic)」的序號為14/814,503的美國專利申請案中闡述了可由RLUT子陣列101提供的邏輯功能的細節,其揭露內容併入本文供參考。作為另外一種選擇,記憶體存取可包括用於將RLUT子陣列101重新配置成具有如同傳統RAM子陣列般之行為的寫入操作。
圖2繪示根據本文所揭露之主題的可重新配置的記憶體邏輯裝置200的另一示例性實施例的方塊圖。如圖2所示,可在單獨的晶粒上或晶粒的一部分上實施可重新配置的記憶體邏輯裝置200,其中可重新配置的記憶體邏輯裝置200可與共用的晶粒上的其他組件(圖中未示出)整合於一起,所述其他組件為例如但不限於單晶片系統(systerm-on-a-chip)、處理器快取等。可重新配置的記憶體邏輯裝置200包括一或多個子陣列201、多個通訊匯流排202、輸入訊號焊墊203及輸出訊號焊墊204。可重新配置的記憶體邏輯裝置200可被實作有基於匯流排的互連及路由方案。通訊匯流排202可容許子陣列201之間的路由方案被動態地改變以使訊號在子陣列201之間重新路由。
若子陣列201被配置成具有如同LUT般之行為,則所述
LUT行為可實作邏輯功能,例如但不限於算術邏輯功能(即加法器、乘法器等)、邏輯功能(及(AND)、或(OR)、互斥或(XOR)等)、或其組合。在名稱為「基於動態隨機存取記憶體的可重新配置的邏輯(DRAM-Based Reconfigurable Logic)」的序號為14/814,503的美國專利申請案中闡述了可由子陣列201提供的邏輯功能的細節,其揭露內容併入本文供參考。可藉由對子陣列僅執行記憶體寫入操作或特殊的寫入操作而修改所述邏輯功能,藉此容許在可重新配置的記憶體邏輯裝置200的運作期間動態地重新配置或修改邏輯功能。特殊的寫入操作可包括關於寫入操作涉及特定的子陣列的指示符。
根據示例性實施例,圖1中的一或多個RLUT子陣列101及/或圖2中的一或多個可重新配置的記憶體邏輯裝置200可在雙直插記憶體模組(DIMM)中使用。亦即,DIMM可被配置成包括一或多個DRAM-FPGA、一或多個RLUT模組、一或多個DRAM-FPGA與一或多個RLUT模組的組合、或一或多個DRAM-FPGA及/或一或多個RLUT模組與一或多個規則的DRAM模組的組合。圖3A至圖3D分別繪示根據本文所揭露之主題的包括一或多個DRAM-FPGA的DIMM的示例性實施例。
在圖3A中,DIMM 300包括多個DRAM-FPGA 301,圖中僅示出其中的四個DRAM-FPGA 301。因此,對於DIMM 300的特定示例性實施例而言,所有模組位置皆由DRAM-FPGA 301佔據。作為另外一種選擇,所有模組位置皆可由RLUT模組佔據,
其中每一RLUT模組僅包括可重新配置的查找表(RLUT)。
在圖3B中,DIMM 310包括:一或多個DRAM-FPGA 301,圖中示出其中的兩個;以及一或多個規則的DRAM模組302,圖中示出其中的兩個。對於DIMM 310的特定示例性實施例而言,DRAM-FPGA 301及規則的DRAM模組302的實體排列可為任意次序。作為另外一種選擇,DIMM 310的配置可包括一或多個RLUT及一或多個規則的DRAM模組302。
在圖3C中,DIMM 320包括多個混合DRAM-FPGA 303,圖中僅示出其中的四個混合DRAM-FPGA 303。混合DRAM-FPGA 303包括可重新配置成具有如同查找表(LUT)般之行為或如同傳統DRAM子陣列般之行為的一或多個子陣列、以及不可重新配置的且具有如同傳統RAM子陣列般之行為的一或多個子陣列。亦即,DIMM 320的配置僅包括混合DRAM-FPGA 303。
在圖3D中,DIMM 330包括:一或多個混合DRAM-FPGA 303,圖中示出其中的兩個;以及一或多個規則的DRAM 302,圖中示出其中的兩個。對於DIMM 330的特定示例性實施例而言,混合DRAM-FPGA 303及規則的DRAM 302的實體排列可為任意次序。
應理解,可具有其他DIMM配置,例如但不限於包括一或多個DRAM-FPGA、一或多個規則的DRAM模組、一或多個混合DRAM-FPGA及/或一或多個RLUT模組的DIMM配置。
圖4繪示根據本文所揭露之主題的在記憶體通道中使用
一或多個DRAM-FPGA的系統架構400的示例性實施例的功能性方塊圖。圖5繪示根據本文所揭露之主題的偵測虛擬機或應用程式的運行時間特徵並將對應於所述虛擬機或應用程式的加速器邏輯儲存於可重新配置的DRAM子陣列中的方法500的流程圖。以下將結合圖5論述圖4中所示的方法500的操作501至操作504。
參照圖4,系統架構400包括中央處理單元(CPU)401,CPU 401經由記憶體通道402耦合至系統記憶體(例如RAM),並耦合至一或多個儲存裝置403。系統記憶體的隨機存取記憶體可包括SRAM及/或DRAM。如圖4所示,在一個示例性實施例中,系統記憶體包括位於一或多個DIMM 404中的DRAM。在一個實施例中,DIMM 404可被配置成包括一或多個DRAM-FPGA、一或多個RLUT模組、一或多個DRAM-FPGA與一或多個RLUT模組的組合、或一或多個DRAM-FPGA及/或一或多個RLUT模組與一或多個規則的DRAM模組的組合。可在一或多個DIMM中實施記憶體通道中的DRAM-FPGA。
作業系統(operating system,OS)405在中央處理單元401上運行。作業系統405可為但不限於基於Unix的作業系統、Unix類作業系統、基於Linux的作業系統、基於Chrome的作業系統或基於windows的作業系統。一或多個虛擬機(VM)可在作業系統405上運行。如圖4所示,虛擬機(VM1至VMn)可在作業系統405上運行。在其中於資料中心環境中實施系統架構400的情形中,虛擬機VM1至VMn可代表資料中心應用程式。在其中
於行動裝置環境中實施系統架構400的情形中,虛擬機VM1至VMn可代表行動裝置應用程式。
作業系統405包括加速器控制器406,加速器控制器406藉由偵測與實例性虛擬機VM相關聯的運行時間特徵409而偵測虛擬機VM的實例。本文所使用的用語虛擬機VM的「運行時間特徵」意指例如但不限於虛擬機的身份及/或特定的設置配置等操作特性。在一個實施例中,加速器控制器406可基於軟體、基於硬體、或其組合。在一個實施例中,加速器控制器406可包括作業系統405中的軟體模組。在另一實施例中,加速器控制器406可包括記憶體控制器(圖4中未示出)中的硬體模組。
在一個實施例中,加速器控制器406包括偵測器407及加載器408。偵測器407偵測應用程式或虛擬機的運行時間特徵409,並辨識與對應於所述所偵測運行時間特徵409的所述應用程式或所述虛擬機相關聯的加速器邏輯410。在另一實施例中,加速器控制器406在運行時形成虛擬機VM或應用程式的概要描述,並收集運行時間標記(signature),例如但不限於功能利用、CPU利用、潛時(latency)、及/或其他微架構統計資料,並使用運行時間標記來搜尋加速器邏輯410的儲存庫。在一個實施例中,用於偵測虛擬機VM或應用程式的運行時間特徵的運行時間特徵409可儲存於加速器控制器406中或可為加速器控制器406的一部分。在另一實施例中,運行時間特徵409可儲存於例如儲存器403中並在加速器控制器406初始化時加載至加速器邏輯406中。
基於虛擬機VM(或應用程式)的所偵測運行時間特徵409,加速器控制器406選擇加載器408並擷取可由虛擬機使用的並可儲存於儲存裝置403中的加速器邏輯410,並使用記憶體通道儲存指令將用於虛擬機VM的加速器邏輯410加載至DRAM-FPGA 411中。在一個實施例中,所擷取的加速器邏輯410可由虛擬機VM請求得到或可視需要由虛擬機VM請求得到。在另一實施例中,加速器邏輯410可由作業系統405或使用者請求得到或推薦。在替代實施例中,加速器控制器406可辨識用於虛擬機VMn的加速器邏輯410,且虛擬機VMn使用記憶體通道儲存指令而擷取加速器邏輯410並將加速器邏輯410儲存於DRAM-FPGA 411中。由於加速器邏輯410儲存於位於系統架構400的記憶體通道402中的DRAM-FPGA 411中,加速器邏輯410因此儲存於可直接由CPU 401存取的快取同調位址空間中。就此而言,加速器邏輯410儲存於可由作業系統405存取的同調位址空間中。
如圖4所示,虛擬機VMn、運行時間特徵409、加速器邏輯410、儲存加速器邏輯410的特定DRAM-FPGA 411、及用於虛擬機VMn的DRAM-FPGA 412由自左上方延伸至右下方的陰影線指示。其他虛擬機、其各自的運行時間特徵、加速器邏輯及DRAM-FPGA位置亦由對應的類似陰影線指示。在一個實施例中,加速器控制器406向虛擬機VM傳送對應於虛擬機VM的DRAM-FPGA驅動器412的位址。當虛擬機VM存取DRAM-FPGA驅動器412時,DRAM-FPGA驅動器412存取儲存於DRAM-FPGA
411中的用於虛擬機VM的加速器邏輯410。
圖5繪示根據本文所揭露之主題的偵測虛擬機或應用程式的運行時間特徵並將對應於所述虛擬機或應用程式的加速邏輯儲存於可重新配置的DRAM子陣列中的方法500的流程圖。參照圖4,考量在圖5的501中將虛擬機VMn實例化的情形。加速器控制器406偵測到已基於與虛擬機VMn相關聯的運行時間特徵409而將虛擬機VMn實例化。在502中,加速器控制器406選擇並擷取用於虛擬機VMn的加速器邏輯410。在503中,加速器控制器406的加載器408使用記憶體通道儲存指令而將所選擇的加速器邏輯410儲存於DRAM-FPGA 411中。在替代實施例中,加速器控制器406在503中辨識用於虛擬機VMn的加速器邏輯410,且虛擬機VMn在圖4中的502a處使用記憶體通道儲存指令而擷取加速器邏輯410並將加速器邏輯410儲存於DRAM-FPGA 411中。在操作504中,虛擬機VMn藉由DRAM-FPGA驅動器412而存取DRAM-FPGA 411中的加速器邏輯410。在另一示例性實施例中,系統架構400適用於點對點處理器互連環境,例如但不限於快速通道互連(QPI)環境。
圖6繪示根據本文所揭露之主題的基於快速通道互連並在記憶體通道中使用一或多個DRAM-FPGA的系統架構600。在圖6中,系統架構600包括兩個中央處理單元(CPU)601,所述兩個CPU 601經由記憶體通道602耦合至系統記憶體(例如,RAM)並耦合至一或多個大容量儲存裝置603。系統記憶體的RAM
可包括SRAM及/或DRAM。在一個示例性實施例中,系統記憶體包括在一或多個DIMM 604中實施的DRAM。一或多個DRAM-FPGA 605可在各自的CPU 601的記憶體通道602中使用。CPU 601經由基於快速通道互連的互連606而彼此耦合。
圖7繪示根據本文所揭露之主題的可使用在記憶體通道中包括一或多個DRAM-FPGA的系統架構的資訊處理系統700的示例性實施例的功能性方塊圖。資訊處理系統700可包括根據本文所揭露之主題而構造的一或多個裝置。
在各種實施例中,資訊處理系統700可被實施為計算裝置,例如但不限於膝上型電腦、桌上型電腦、工作站、伺服器、刀鋒型伺服器(blade server)、個人數位助理(personal digital assistant,PDA)、智慧型電話、平板電腦、及其他恰當的電腦等,或被實施為虛擬機或其虛擬計算裝置。在各種實施例中,資訊處理系統700可由使用者使用(圖中未示出)。
資訊處理系統700可更包括中央處理單元(CPU)、邏輯、或處理器及/或邏輯710。在某些實施例中,處理器及/或邏輯710可包括一或多個功能單元區塊(functional unit block,FUB)或組合邏輯區塊(combinational logic block,CLB)。在此種實施例中,組合邏輯區塊可包括各種布爾邏輯運算(例如,反及(NAND)、反或(NOR)、反(NOT)、互斥或(XOR)等)、穩定化邏輯裝置(例如,正反器、鎖存器等)、其他邏輯裝置、或其組合。組合邏輯運算可以簡單或複雜的方式被配置成處理輸入訊號以獲得所期
望的結果。應理解,雖然闡述了同步組合邏輯運算的說明性實例,但所揭露之主題並非僅限於此且可包括非同步運算、或其混合運算。在一個實施例中,組合邏輯運算可包括多個互補金屬氧化物半導體(complementary metal oxide semiconductor,CMOS)電晶體。在各種實施例中,該些互補金屬氧化物半導體電晶體可排列成執行邏輯運算的閘;儘管應理解的是,可使用其它技術且所述其他技術亦處於所揭露之主題範圍內。在某些實施例中,構成處理器及/或邏輯710的組件可包括根據本文所揭露之主題而實施加速器控制器的組件。
根據所揭露之主題的資訊處理系統700可更包括由處理器及/或邏輯710經由記憶體通道存取的揮發性記憶體720(例如,隨機存取記憶體(RAM)等)。根據所揭露之主題的資訊處理系統700可更包括非揮發性記憶體730(例如,硬驅動機、光學記憶體、反及記憶體(NAND)或快閃記憶體等)。在某些實施例中,揮發性記憶體720、非揮發性記憶體730、或其組合抑或其部分可被稱為「儲存媒體」。在各種實施例中,揮發性記憶體720及/或非揮發性記憶體730可被配置以半永久的或實質上永久的形式儲存資料。
在各種實施例中,上述一或多個可重新配置的查找表(RLUT)可包含於揮發性記憶體720中或甚至包含於非揮發性記憶體730中。如上所述,RLUT可被包含為動態隨機存取記憶體或其他記憶體的一部分。如上所述,在某些實施例中,記憶體720或記憶體730的一部分可用來儲存資料且其第二部分可用作
RLUT。在某些實施例中,RLUT亦可被視為處理器及/或邏輯710的一部分。如上所述,RLUT可執行一或多種邏輯功能,且因此可執行指令。
在各種實施例中,資訊處理系統700可包括一或多個網路介面740,所述一或多個網路介面740用以使資訊處理系統700成為通訊網路的一部分並經由通訊網路進行通訊。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 Communication)的增強資料傳輸率演進(Enhanced Date rates for GSM Evolution,EDGE)、演進高速封包存取(High-Speed Packet Access,HSPA+)等。有線協定的實例可包括但不限於IEEE 802.3(亦稱為乙太網路)、光纖通道、電力線通訊(power line communication)(例如,HomePlug、IEEE 1901等)等。
根據本文所揭露之主題的資訊處理系統700可更包括使用者介面單元750(例如顯示器配接器、觸覺式介面、人機介面裝置等)。在各種實施例中,使用者介面單元750可被配置成自使用者接收輸入及/或向使用者提供輸出。亦可使用其他種類的裝置來提供與使用者的交互作用;舉例而言,向使用者提供的回饋可為
任意的感官回饋形式,例如,視覺回饋、聽覺回饋、或觸覺回饋;且可以任意形式接收來自使用者的輸入,包括聲學輸入、語音輸入、或觸覺輸入。
在各種實施例中,資訊處理系統700可包括一或多個其他裝置或硬體組件760,例如但不限於顯示器或監視器、鍵盤、滑鼠、照相機、指紋讀取器、視訊處理器等。
根據本文所揭露之主題的資訊處理系統700可更包括一或多個系統匪流排705。在此種實施例中,系統匪流排705可被配置成與處理器及/或邏輯710、揮發性記憶體720、非揮發性記憶體730、網路介面740、使用者介面單元750、及一或多個硬體組件760進行通訊耦合。經處理器及/或邏輯710處理的資料或自非揮發性記憶體730的外部輸入的資料可儲存於非揮發性記憶體730或揮發性記憶體720中。
在各種實施例中,資訊處理系統700可包括或執行一或多個軟體組件770。在某些實施例中,軟體組件770可包括作業系統(OS)及/或應用程式。在某些實施例中,作業系統可被配置成向應用程式提供一或多個服務並管理或充當所述應用程式與資訊處理系統700的各種硬體組件(例如,處理器及/或邏輯710、網路介面740等)之間的中介。在此種實施例中,資訊處理系統700可包括一或多個本機應用程式,所述本機應用程式可局部地安裝(例如,安裝於非揮發性記憶體730等內)且被配置成由處理器及/或邏輯710直接執行並與作業系統直接進行交互作用。在此種
實施例中,本機應用程式可包括經過預編譯的機器可執行碼。在某些實施例中,本機應用程式可包括腳本解譯器(例如,C shell(csh)、AppleScript、AutoHotkey等)或虛擬執行機(VM)(例如Java虛擬機、微軟公共語言運行時間等),所述腳本解譯器或虛擬執行機被配置成將原始碼或目標碼轉譯成之後由處理器及/或邏輯710執行的可執行碼。在某些實施例中,軟體組件770中的一或多者可包括實施根據本文所揭露之主題的加速器控制器的可執行指令。
熟習此項技術者將認識到,本文所述的創新性概念可在各種各樣的應用中加以潤飾及改變。因此,所主張之主題的範圍不應受限於上述任何具體教示內容,而是可由以下申請專利範圍界定。
400:系統架構
401:CPU
402:記憶體通道
403:儲存器
404:DIMM
405:作業系統
406:加速器控制器
407:偵測器
408:加載器
409:運行時間特徵
410:加速器邏輯
411:DRAM-FPGA
412:DRAM-FPGA驅動器
501、502、503、504:操作
Claims (20)
- 一種加速器控制器,包括:偵測器,用以偵測應用程式或虛擬機的運行時間特徵,並辨識與對應於所偵測的所述運行時間特徵的所述應用程式或所述虛擬機相關聯的加速器邏輯;以及加載器,用以將所辨識的所述加速器邏輯加載至至少一個動態隨機存取記憶體(DRAM)陣列中,所述至少一個DRAM陣列能夠基於所辨識的所述加速器邏輯而被選擇性地重新配置成具有如同查找表(LUT)般之行為。
- 如申請專利範圍第1項所述的加速器控制器,更包括所述至少一個DRAM陣列。
- 如申請專利範圍第1項所述的加速器控制器,其中所述至少一個DRAM陣列是處於作業系統環境的快取同調位址空間中。
- 如申請專利範圍第1項所述的加速器控制器,其中所述運行時間特徵是基於所述應用程式的或所述虛擬機的預定義辨識。
- 如申請專利範圍第1項所述的加速器控制器,其中所述運行時間特徵是基於與所述應用程式或所述虛擬機相關聯的功能利用、中央處理利用、記憶體利用、及潛時中的至少一者。
- 如申請專利範圍第1項所述的加速器控制器,其中所述加速器邏輯包括查找表(LUT)。
- 如申請專利範圍第1項所述的加速器控制器,其中所述至少一個DRAM陣列是雙直插記憶體模組(DIMM)的一部分。
- 如申請專利範圍第7項所述的加速器控制器,其中所述DIMM更包括不能夠被選擇性地重新配置成具有如同查找表(LUT)般之行為或如同DRAM記憶體陣列般之行為之至少一個DRAM陣列。
- 如申請專利範圍第1項所述的加速器控制器,其中所辨識的所述加速器邏輯被利用加載命令及儲存命令而加載於所述至少一個DRAM陣列中。
- 一種加速器控制器,包括:偵測器,用以偵測應用程式或虛擬機的運行時間特徵,所述運行時間特徵是基於所述應用程式的或所述虛擬機的預定義辨識、與所述應用程式或所述虛擬機相關聯的功能利用、中央處理利用、記憶體利用、及潛時中的至少一者;以及加載器,用以將對應於所偵測的所述運行時間特徵的加速器邏輯加載至至少一個動態隨機存取記憶體(DRAM)中,所述至少一個DRAM陣列能夠基於所述加速器邏輯而被選擇性地重新配置成具有如同查找表(LUT)般之行為。
- 如申請專利範圍第10項所述的加速器控制器,其中所述偵測器更辨識與對應於所偵測的所述運行時間特徵的所述應用程式或所述虛擬機相關聯的加速器邏輯。
- 如申請專利範圍第10項所述的加速器控制器,其中所述至少一個DRAM陣列處於作業系統環境的快取同調位址空間中。
- 如申請專利範圍第10項所述的加速器控制器,其中所述加速器邏輯包括查找表(LUT)。
- 如申請專利範圍第10項所述的加速器控制器,其中所述至少一個DRAM陣列是雙直插記憶體模組(DIMM)的一部分。
- 如申請專利範圍第14項所述的加速器控制器,其中所述DIMM更包括不能夠被選擇性地重新配置成具有如同查找表(LUT)般之行為或如同DRAM記憶體陣列般之行為之至少一個DRAM陣列。
- 一種加速器控制器的方法,包括:偵測在作業系統環境中運行的應用程式或虛擬機的運行時間特徵;辨識對應於所偵測的所述運行時間特徵的加速器邏輯;以及利用加載命令及儲存命令將所辨識的所述加速器邏輯加載至至少一個動態隨機存取記憶體(DRAM)子陣列中。
- 如申請專利範圍第16項所述的方法,其中所述至少一個DRAM子陣列能夠被選擇性地重新配置成具有如同查找表(LUT)般之行為,其中所述至少一個DRAM子陣列被配置成具有如同查找表般之行為, 其中所述至少一個DRAM子陣列處於所述作業系統環境的快取同調位址空間中,其中所述至少一個DRAM子陣列為雙直插記憶體模組(DIMM)的一部分,且其中所偵測的所述運行時間特徵是基於所述應用程式的或所述虛擬機的預定義辨識、與所述應用程式或所述虛擬機相關聯的功能利用、中央處理利用、記憶體利用、潛時中的至少一者。
- 如申請專利範圍第16項所述的方法,其中所述加速器邏輯包括查找表(LUT)。
- 如申請專利範圍第16項所述的方法,其中所辨識的所述加速器邏輯被加速器控制器加載於所述至少一個DRAM子陣列中。
- 如申請專利範圍第16項所述的方法,其中所辨識的所述加速器邏輯被所述應用程式或所述虛擬機加載至所述至少一個DRAM子陣列中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562261306P | 2015-11-30 | 2015-11-30 | |
US62/261,306 | 2015-11-30 | ||
US15/086,010 US10013212B2 (en) | 2015-11-30 | 2016-03-30 | System architecture with memory channel DRAM FPGA module |
US15/086,010 | 2016-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201723865A TW201723865A (zh) | 2017-07-01 |
TWI706256B true TWI706256B (zh) | 2020-10-01 |
Family
ID=58777561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105124369A TWI706256B (zh) | 2015-11-30 | 2016-08-02 | 加速器控制器及其方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10013212B2 (zh) |
JP (1) | JP6738262B2 (zh) |
KR (1) | KR102380776B1 (zh) |
CN (1) | CN106814662B (zh) |
TW (1) | TWI706256B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099894B2 (en) * | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US10250572B2 (en) | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10162921B2 (en) | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10423438B2 (en) | 2016-09-30 | 2019-09-24 | Amazon Technologies, Inc. | Virtual machines controlling separate subsets of programmable hardware |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
US10747565B2 (en) * | 2017-04-18 | 2020-08-18 | Amazon Technologies, Inc. | Virtualization of control and status signals |
US10503551B2 (en) * | 2017-06-07 | 2019-12-10 | Dell Products L.P. | Coordinating FPGA services using cascaded FPGA service managers |
CN108897706B (zh) * | 2018-05-10 | 2021-07-23 | 北京融芯微科技有限公司 | 一种加速器接口 |
KR102615443B1 (ko) * | 2018-05-25 | 2023-12-20 | 에스케이하이닉스 주식회사 | 머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 |
US10884949B2 (en) * | 2019-04-05 | 2021-01-05 | International Business Machines Corporation | On-chip logic accelerator |
CN112506087A (zh) * | 2019-09-16 | 2021-03-16 | 阿里巴巴集团控股有限公司 | Fpga加速系统和方法、电子设备以及计算机可读存储介质 |
US11403111B2 (en) * | 2020-07-17 | 2022-08-02 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic using look-up tables |
CN112580285A (zh) * | 2020-12-14 | 2021-03-30 | 深圳宏芯宇电子股份有限公司 | 嵌入式服务器子系统及其配置方法 |
US11355170B1 (en) | 2020-12-16 | 2022-06-07 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic |
CN112947282B (zh) * | 2021-03-08 | 2023-06-20 | 电子科技大学 | 一种应用于电源门控fpga结构中的新型隔离单元 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200802011A (en) * | 2005-12-01 | 2008-01-01 | Liga Systems Inc | Hardware acceleration system for simulation of logic and memory |
TWI296757B (en) * | 2003-12-29 | 2008-05-11 | Intel Corp | Method and system for managing data organization, article comprising a storage medium, and device for use with a data storage having a plurality of non-volatile storage units |
TWI308719B (en) * | 2004-12-10 | 2009-04-11 | Via Tech Inc | Cache controllers, buffers and cache systems with a filling cacheline for accessing data to cache memory |
US20110010721A1 (en) * | 2009-07-13 | 2011-01-13 | Vishakha Gupta | Managing Virtualized Accelerators Using Admission Control, Load Balancing and Scheduling |
US20110307233A1 (en) * | 1998-08-31 | 2011-12-15 | Tseng Ping-Sheng | Common shared memory in a verification system |
US20140359219A1 (en) * | 2013-05-31 | 2014-12-04 | Altera Corporation | Cache Memory Controller for Accelerated Data Transfer |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3106998B2 (ja) * | 1997-04-11 | 2000-11-06 | 日本電気株式会社 | メモリ付加型プログラマブルロジックlsi |
JP3738802B2 (ja) * | 1998-02-10 | 2006-01-25 | 富士ゼロックス株式会社 | 情報処理システム |
JP3809727B2 (ja) * | 1998-06-17 | 2006-08-16 | 富士ゼロックス株式会社 | 情報処理システム、回路情報管理方法および回路情報記憶装置 |
US8619452B2 (en) | 2005-09-02 | 2013-12-31 | Google Inc. | Methods and apparatus of stacking DRAMs |
JP4191219B2 (ja) * | 2006-10-30 | 2008-12-03 | エルピーダメモリ株式会社 | メモリ回路、半導体装置及びメモリ回路の制御方法 |
CN101354677B (zh) * | 2008-09-11 | 2014-12-03 | 青岛海信移动通信技术股份有限公司 | 一种应用程序运行状态的检测方法及装置 |
CN101477831A (zh) * | 2009-01-22 | 2009-07-08 | 上海广电(集团)有限公司中央研究院 | 一种基于fpga器件的dram控制器 |
CN101924550A (zh) * | 2009-06-11 | 2010-12-22 | 复旦大学 | 一种采用增益单元eDRAM的查找表 |
CN101717817B (zh) * | 2009-07-17 | 2011-11-23 | 中国人民解放军国防科学技术大学 | 对基于随机上下文无关文法的rna二级结构预测进行加速的方法 |
US8589851B2 (en) * | 2009-12-15 | 2013-11-19 | Memoir Systems, Inc. | Intelligent memory system compiler |
JP2012084220A (ja) * | 2011-10-25 | 2012-04-26 | Fujitsu Semiconductor Ltd | メモリシステム |
CN103959245B (zh) * | 2011-12-02 | 2016-08-24 | 英派尔科技开发有限公司 | 作为服务的集成电路 |
US9396020B2 (en) * | 2012-03-30 | 2016-07-19 | Intel Corporation | Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator |
US10558490B2 (en) * | 2012-03-30 | 2020-02-11 | Intel Corporation | Mechanism for issuing requests to an accelerator from multiple threads |
US9697147B2 (en) * | 2012-08-06 | 2017-07-04 | Advanced Micro Devices, Inc. | Stacked memory device with metadata management |
US8984368B2 (en) * | 2012-10-11 | 2015-03-17 | Advanced Micro Devices, Inc. | High reliability memory controller |
US8880809B2 (en) | 2012-10-29 | 2014-11-04 | Advanced Micro Devices Inc. | Memory controller with inter-core interference detection |
US9098402B2 (en) * | 2012-12-21 | 2015-08-04 | Intel Corporation | Techniques to configure a solid state drive to operate in a storage mode or a memory mode |
US9954533B2 (en) * | 2014-12-16 | 2018-04-24 | Samsung Electronics Co., Ltd. | DRAM-based reconfigurable logic |
-
2016
- 2016-03-30 US US15/086,010 patent/US10013212B2/en active Active
- 2016-07-29 KR KR1020160097039A patent/KR102380776B1/ko active IP Right Grant
- 2016-08-02 TW TW105124369A patent/TWI706256B/zh active
- 2016-10-11 CN CN201610886006.2A patent/CN106814662B/zh active Active
- 2016-11-28 JP JP2016229897A patent/JP6738262B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110307233A1 (en) * | 1998-08-31 | 2011-12-15 | Tseng Ping-Sheng | Common shared memory in a verification system |
TWI296757B (en) * | 2003-12-29 | 2008-05-11 | Intel Corp | Method and system for managing data organization, article comprising a storage medium, and device for use with a data storage having a plurality of non-volatile storage units |
TWI308719B (en) * | 2004-12-10 | 2009-04-11 | Via Tech Inc | Cache controllers, buffers and cache systems with a filling cacheline for accessing data to cache memory |
TW200802011A (en) * | 2005-12-01 | 2008-01-01 | Liga Systems Inc | Hardware acceleration system for simulation of logic and memory |
US20110010721A1 (en) * | 2009-07-13 | 2011-01-13 | Vishakha Gupta | Managing Virtualized Accelerators Using Admission Control, Load Balancing and Scheduling |
US20140359219A1 (en) * | 2013-05-31 | 2014-12-04 | Altera Corporation | Cache Memory Controller for Accelerated Data Transfer |
Also Published As
Publication number | Publication date |
---|---|
CN106814662A (zh) | 2017-06-09 |
KR102380776B1 (ko) | 2022-04-01 |
JP6738262B2 (ja) | 2020-08-12 |
KR20170063334A (ko) | 2017-06-08 |
CN106814662B (zh) | 2019-06-25 |
US10013212B2 (en) | 2018-07-03 |
US20170153854A1 (en) | 2017-06-01 |
JP2017102923A (ja) | 2017-06-08 |
TW201723865A (zh) | 2017-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI706256B (zh) | 加速器控制器及其方法 | |
US9954533B2 (en) | DRAM-based reconfigurable logic | |
US11016906B2 (en) | GPU virtualisation | |
EP0931380B1 (en) | Reconfigurable computing system | |
US10665295B2 (en) | Static random-access memory with virtual banking architecture, and system and method including the same | |
US9361956B2 (en) | Performing logical operations in a memory | |
US11429769B1 (en) | Implementing a hardware description language memory using heterogeneous memory primitives | |
US20240037037A1 (en) | Software Assisted Hardware Offloading Cache Using FPGA | |
US20220075541A1 (en) | Memory device performing configurable mode setting and method of operating the same | |
US10180847B2 (en) | Circuitry for configuring entities | |
KR101275628B1 (ko) | 듀얼 포트 메모리 기반의 영역 크기 가변이 가능한 tcm 메모리 구조의 전자칩 |