TW201409228A - 剖析應用程式碼以識別用於fpga實施之程式碼部份 - Google Patents
剖析應用程式碼以識別用於fpga實施之程式碼部份 Download PDFInfo
- Publication number
- TW201409228A TW201409228A TW102121922A TW102121922A TW201409228A TW 201409228 A TW201409228 A TW 201409228A TW 102121922 A TW102121922 A TW 102121922A TW 102121922 A TW102121922 A TW 102121922A TW 201409228 A TW201409228 A TW 201409228A
- Authority
- TW
- Taiwan
- Prior art keywords
- computer
- selecting
- hardware
- code
- program
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Stored Programmes (AREA)
- Architecture (AREA)
Abstract
分析應用程式碼以決定硬體資料庫是否可加速硬體資料庫的執行。詳言之,可分析應用程式碼以識別對應用程式介面(APIs)或具有硬體資料庫實施的其他函式的呼叫。可分析程式碼以識別此種呼叫的頻率。來自硬體資料庫的資訊可指示資料庫的特性,諸如資料庫的大小、功率消耗以及FPGA資源使用率。關於應用程式碼之執行圖樣的資訊亦可為有用的。此資訊以及關於使用FPGA資源之其他同時程序的資訊,可被用以選擇硬體資料庫以實施在應用程式碼中呼叫的函式。
Description
本發明係關於剖析應用程式碼以識別用於FPGA實施之程式碼部分。
在大部分一般用途電腦中,作業系統為管理對電腦內資源之存取的主要軟體。主要資源為中央處理單元(CPU),中央處理單元執行被設計為在電腦、主記憶體、與儲存設備上執行的應用程式。在一些電腦架構中,可存在稱為共處理器(co-processors)的額外處理單元(諸如處理器中的多重核心)及/或額外處理器。此種共處理器的範例包含圖像處理單元(GPU)以及數位訊號處理器(DSP)。作業系統亦管理由多重程序對這些資源的存取。
現場可程式化邏輯閘陣列(FPGA)為常見用於特定計算裝置中的邏輯裝置種類。FPGA通常用於執行特別適合以邏輯閘陣列執行的特定、專屬的函式。FPGA通常見於週邊裝置或其他特定硬體,諸如透過系統匯流排(諸如PCI匯流排)連接並存取的印刷電路板。一般而言,此種裝置被程式化一
次,並使用許多次。因為這些裝置為可程式化,由於他們可被更新,他們具有優於其他特定邏輯裝置的優點。
此發明內容係提供以由簡化形式介紹一些概念選擇,這些概念選擇被進一步說明於實施方式中。此發明內容不意為識別所主張標的的關鍵特徵或必要特徵,亦不意為用於限制所主張標的的範圍。
在一般用途計算系統中,可使用一或更多個現場可程式化邏輯閘陣列(FPGA)以作為共享可程式化共處理器資源。FPGA可被程式化以執行函式,相應地,函式可相關聯於一或更多個程序。使用多重程序,FPGA可被共享,且程序在存取FPGA的時間槽內被指派至FPGA的至少一部分。以硬體描述語言撰寫以用於將FPGA程式化的程式,被製成為可用的硬體資料庫。作業系統管理將FPGA資源分配至程序、根據由使用FPGA的程序來執行的函式以程式化FPGA、以及排程這些程序對FPGA的使用。
應用程式對硬體資料庫的使用可為明確的,或者應用程式碼可被分析,以決定硬體資料庫是否可加速硬體資料庫的執行。詳言之,可分析應用程式碼,以識別對應用程式介面(APIs)的呼叫,或具有硬體資料庫實施的其他函式。可分析程式碼以識別該等呼叫的頻率。來自硬體資料庫的資訊,可指示資料庫的特性,諸如資料庫的大小、功率消耗、以及FPGA資源使用率。關於應用程式碼的執行圖樣的資訊,亦可為有用的。此資訊,連同於關於其他同時使用FPGA資
源的程序的資訊,可用以選擇硬體資料庫,以實施在應用程式碼中呼叫的函式。
在下列說明中,參考形成本說明書一部分的附加圖式,在附加圖式中僅作為實例之目的圖示此技術的特定範例實施。應瞭解可利用其他具體實施例,並可進行結構性的改變,而不脫離本發明的範圍。
100‧‧‧計算裝置
102‧‧‧處理單元
104‧‧‧記憶體
106‧‧‧處理單元、共處理器、與記憶體的配置
108‧‧‧可移除式儲存裝置
110‧‧‧非移除式儲存裝置
112‧‧‧通訊連結
114‧‧‧輸入裝置
116‧‧‧輸出裝置
120‧‧‧FPGA單元
200‧‧‧功能性單元
202‧‧‧功能性單元
204‧‧‧功能性單元
206‧‧‧功能性單元
300‧‧‧應用程式
302‧‧‧軟體資料庫
304‧‧‧硬體資料庫
306‧‧‧作業系統
308‧‧‧CPU資源
310‧‧‧FPGA資源
400‧‧‧功能性單元
402‧‧‧功能性單元
404‧‧‧功能性單元
500‧‧‧程式碼分析器
502‧‧‧應用程式碼
504‧‧‧硬體資料庫
506‧‧‧硬體資料庫
508‧‧‧呼叫頻率
510‧‧‧選擇模組
512‧‧‧輸出
520‧‧‧排程器
522‧‧‧資料
524‧‧‧執行圖樣
600-610‧‧‧流程
第1圖為範例的方塊圖,範例計算系統具有可實施作業系統的FPGA資源。
第2圖為FPGA功能性單元示例性範例之示意圖。
第3圖為應用程式之範例架構的示意圖,該應用程式正使用具有FPGA資源之電腦系統上的硬體與軟體資料庫。
第4圖為圖示說明隨著時間FPGA資源之使用的示意圖。
第5圖為對於諸如第1圖之系統之程式碼分析與資料庫選擇的範例實施的資料流示意圖。
第6圖為說明第5圖中選擇模組之範例實施的流程圖。
下列的區段簡短並一般地描述範例計算環境,可實施用於管理FPGA資源之使用的作業系統於範例計算環境中。系統可被以數種一般用途或特別用途的計算裝置來實施。可為適合的習知計算裝置的範例包含(但不限於)個人電腦、伺服器電腦、手持式或膝上型裝置(例如媒體播放器、
記事本電腦、蜂巢式電話、個人資料助理、錄音機)、多處理器系統、以多處理器為基礎的系統、機上盒、遊戲主機、可程式化消費者電子產品、網路個人電腦、迷你電腦、主機電腦、包含上述系統或裝置之任意者的分散式計算環境、以及類似者。
第1圖僅僅圖示說明範例計算環境,且不意為提供對適合的計算環境之功能性或使用的範圍的任何限制。
參照第1圖,範例計算環境包含計算裝置100。在基本配置中,計算裝置100包含至少一個處理單元102,諸如一般用途電腦的典型中央處理單元(CPU),以及記憶體104。
計算裝置可包含多重處理單元及/或額外的共處理單元,諸如圖像處理單元(GPU)。計算裝置亦包含一或更多個現場可程式化邏輯閘陣列(FPGA),標註為FPGA單元120,FPGA單元120可為可用的共享(於在電腦上執行的程序中)共處理資源。FPGA可位於FPGA自身的CPU插槽中,或在插入延伸插槽(諸如快捷週邊部件交互連接(PCI-E)插槽)中的個別卡上。藉由提供此種FPGA單元,可由所產生的硬體加速益處,來實施適合由邏輯閘陣列來實施的各種函式。
根據處理單元與FPGA單元的配置,單元(或位於單元內的每一功能性單元)具有相關聯之用於與主機作業系統程序通訊的輸入/輸出通道。例如,可提供專屬於功能性單元,並共享於功能性單元與使用此功能性單元的程序之間的記憶體區域。可使用一些種類的要求佇列與回應佇列,以賦
能將實施於FPGA單元中的操作非同步地調用。此外,FPGA單元中用於程序的功能性單元的狀態,可被儲存至(並從其中回復)用於功能性單元與此程序的記憶體區域。或者,可使用其他技術,以確保功能性單元在被功能性單元的程序使用之前處於已知狀態中。
根據計算裝置的配置與種類,記憶體104可為揮發性(諸如RAM)、非揮發性(諸如ROM、快閃記憶體等等)或兩者的結合。在第1圖中以虛線106圖示說明處理單元、共處理器、與記憶體的此配置。
計算裝置100亦可具有額外的資源與裝置。例如,計算裝置100可包含額外的儲存裝置(可移除式及/或非移除式),包含(但不限於)磁性或光學性磁碟或磁帶。在第1圖中以可移除式儲存裝置108與非移除式儲存裝置110圖示說明此種額外的儲存裝置。電腦儲存媒體包含以用於儲存資訊(諸如電腦程式指令、資料檔案、資料結構、程式模組或其他資料)的任何方法或科技,來實施的揮發性與非揮發性以及可移除式與非移除式媒體。記憶體104、可移除式儲存裝置108、與非移除式儲存裝置110,皆為電腦儲存媒體的範例。電腦儲存媒體包含(但不限於)RAM、ROM、EEPROM、快閃記憶體或其他記憶體科技、光碟機、數位多媒體光碟(DVD)或其他光學性儲存裝置、磁性卡匣、磁帶、磁碟儲存裝置或其他磁性儲存裝置、或任何其他可用以儲存所需資訊並可由計算裝置100存取的媒體。任何此種電腦儲存媒體可為計算裝置100的部分。
計算裝置100亦可包含通訊連結112,通訊連結112允許裝置在通訊媒體上與其他裝置通訊。通訊連結112的實施,係根據計算裝置正存取的通訊媒體的種類,因為計算裝置提供對此種媒體的介面,以准許在通訊媒體上傳輸及/或接收資料。通訊媒體通常裝載電腦程式指令、資料檔案、資料結構、程式模組或其他資料於經調變資料訊號(諸如載波)或其他運輸機制中,且通訊媒體包含任何資訊傳遞媒體。名詞「經調變資料訊號」,表示其特性之一或更多者被以編碼資訊於訊號中的方式來設定或改變的訊號。例如(不為限制),通訊媒體包含有線媒體(諸如有線網路或直接連線連結)與無線媒體(諸如聲學、RF、紅外線、與其他無線媒體)。
計算裝置100可具有各種輸入裝置114,諸如鍵盤、滑鼠、筆、攝影機、觸摸輸入裝置等等。亦可包含輸出裝置116,諸如顯示器、揚聲器、印表機等等。這些裝置皆熟知於本發明領域中,且不需被詳細討論於本文中。
執行在計算裝置上的應用程式,被使用電腦可執行指令及/或電腦解譯指令來實施,諸如由計算裝置處理的程式模組。一般而言,程式模組包含常式、程式、物件、部件、資料結構等等,在由處理單元處理時,程式模組指示處理單元執行特定工作或實施特定抽象資料類型。在分散式計算環境中,可由透過通訊網路鏈結的遠端處理裝置執行此種工作。在分散式計算環境中,程式模組可置於本地與遠端電腦儲存媒體中,包含記憶體儲存裝置。
在計算裝置上執行的作業系統,管理程序對電腦裝
置的各種資源的存取。通常,在電腦系統上執行應用程式,產生一或更多個程序,且每一程序隨著時間被分配給不同的資源。若資源為許多程序共享,且若程序不能同時共享資源,則作業系統隨著時間排程對資源的存取。此種資源之一者為第1圖的FPGA單元120,FPGA單元120可包含一或更多個分離的FPGA。
參考第2圖,FPGA單元內的資源之一者,為一或更多個可程式邏輯閘群組(在本文中稱為功能性單元)。每一功能性單元由一組邏輯閘及/或邏輯閘陣列中的其他資源來界定。一般而言,功能性單元為非重疊的,亦即,功能性單元不共享邏輯閘陣列內的可程式元件。例如,如示意圖示說明於第2圖中,功能性單元200、202、204、與206為非重疊的。多數FPGA僅具有一個功能性單元。然而,第1圖中的FPGA單元120,可具有一或更多個FPGA。使用多重FPGA時,每一FPGA可被視為功能性單元。參照第3圖,每一功能性單元為可被指定給一或更多個程序的資源,由作業系統使用實施操作的硬體資料庫來程式化,且隨後由指定至功能性單元的程序使用以執行操作。參照第3圖作為範例,應用程式300可使用傳統軟體資料庫302與FPGA硬體資料庫304,以執行各種操作。若應用程式依賴硬體資料庫304,則作業系統306使用硬體資料庫以程式化FPGA資源310,以允許應用程式300使用資料庫。FPGA可在應用程式開始執行之前被程式化。若FPGA可被夠快速地再程式化,則資料庫可由作業系統的排程量程被載入FPGA。作業系統306亦在CPU
308上執行來自應用程式300與軟體資料庫302的軟體指令。在應用程式呼叫由軟體資料庫執行的功能時,作業系統在CPU 308上執行來自軟體資料庫的功能。在應用程式呼叫由FPGA執行的功能時,作業系統確保FPGA使用硬體資料庫被程式化,並使用FPGA來執行功能。
為了圖示說明可如何隨著時間使用不同的功能性單元,現參照第4圖。在第4圖中,在時間T1處,功能性單元400與402被使用。在時間T2處,功能性單元400與404被使用。在時間T3處,功能性單元400與402再次被使用。在時間T1處,功能性單元400可被指定至程序P1,而功能性單元402可被指定至程序P2。在時間T2處,程序P2可為不活動的,而程序P1可使用功能性單元400,且程序P3可使用功能性單元404。在時間T3處,可使用功能性單元400開始另一程序,諸如程序P4;且在使用功能性單元402時程序P2可再次活動。使用當前的FPGA實施,同時由不同程序使用多重功能性單元,隱含著使用多重FPGA。在FPGA可支持被不同程序同時使用的多重功能性單元的情況下,這些功能性單元可為在同一FPGA上。實際上,作業系統係統計性地在時間與空間兩者上使FPGA多工處理。
為了允許此種由不同程序隨著時間對FPGA資源的使用。作業系統具有排程器,排程器決定在每一排程量程(亦即時間週期)處哪個程序具有對FPGA資源的存取,以及何時FPGA功能性單元會被以硬體資料庫來程式化,而使功能性單元可用於被該程序使用。因此,用於FPGA單元的排程
器的實施,部分係根據FPGA單元(以及FPGA單元包含的一或更多個FPGA)的本質。相關於要考量的FPGA的因素包含(但不限於)以下。例如在一些情況中,整體FPGA被更新以將功能性單元程式化,若一個功能性單元不能被獨立於其他功能性單元來程式化。另一考量為功能性單元可被程式化的速度,以及功能性單元的程式化是否防止其他功能性單元在該程式化階段內被使用。另一要考量的因素,為程序是否可由共享功能性單元來共享硬體資料庫。排程器亦考量如以下因素:並行的程序數量、應用程式效能保證、應用程式優先權、程序背景切換成本、對記憶體與匯流排的存取、以及軟體資料庫的可用性,若FPGA單元內沒有可用的功能性單元。
可存在其他實例,其中FPGA單元對應用程式或作業系統提供一般用途設施,其因此被以應用程式例示之長度來排程。例如,可提供自定網路協定或卸載,作為FPGA單元上的加速服務。一般為執行於一般用途CPU中的系統呼叫或標準資料庫呼叫,可替代性地使用FPGA單元來加速。再者,作業系統可基於對於程序優先權的偏好設定來使CPU多工處理。在另一實例中,作業系統可使用應用程式的設定(被靜態或動態地產生),來預測最適合執行在FPGA單元上的功能性,且隨後預載入該功能性,而使該功能性可用於排程。藉由使用設定為導引,作業系統可確保FPGA單元上有可用的空間與時間兩者,以加速應用程式。最後,作業系統可使用來自應用程式的簡單提示,以得知何時在FPGA單元上排
程時間。例如,對作業系統內的某些呼叫(系統呼叫)可標示長延遲(對磁碟或網路的呼叫),長延遲提供對於FPGA單元有一些時間為空閒而可由其他線程或程序使用的提示。因此,作業系統使用各種提示與偏好設定以產生排程,以多工處理對FPGA單元的存取。因為作業系統控制排程器,作業系統具有對正執行工作與等待工作、可用的硬體資料庫、與程式化FPGA所需時間的詳盡知識。因此,作業系統可使用此知識以決定在執行中哪些程序利用FPGA。
在已說明對於此種電腦架構的概觀之後,現將說明對於程式碼剖析的範例實施。
現將參照第5圖,程式碼分析器500接收應用程式碼502。程式碼分析器亦具有對硬體資料庫504(或對於硬體資料庫的至少一個索引)的存取,以識別可用的硬體資料庫。程式碼分析器識別可用於實施應用程式碼502內的各種功能的硬體資料庫506。關於可提供的硬體資料庫506的資訊包含(但不限於)程式碼大小、電力消耗資料、資源資料(指示使用了哪些FPGA的部分)等等。程式碼分析器500亦可輸出關於對此種硬體資料庫呼叫的頻率的資訊508。
選擇模組510接收關於硬體資料庫的資訊506,以及關於對於資料庫的呼叫的資訊508,以做成對於要使用哪些硬體資料庫的選擇。選擇模組亦可接收來自排程器520的資料522(例如關於其他同時的程序),以協助此選擇。亦可使用其他關於來自先前應用程式碼502之執行的執行圖樣524的資料,來協助此選擇。根據輸入資訊,選擇模組提供指示
已被選擇的硬體資料庫的輸出512,以協助加速應用程式碼502的處理。
可由用於識別對資料庫之呼叫的各種傳統方式中的任意者,來實施程式碼分析器。在此情況中,係以硬體實施對於資料庫做成呼叫。在一個範例中,程式碼分析器在應用程式碼中,搜尋對在硬體資料庫中有實施的函式或物件的參照,並輸出關於此等硬體資料庫的資訊。在另一範例中,程式碼分析器識別進入作業系統中的陷阱,陷阱標識系統呼叫。若作業系統功能性已被卸載至FPGA上,則陷阱可被重新導向至作業系統內的不同程式碼路徑,藉由將用以傳輸資料進系統核心的暫存器再寫入提示或對於對FPGA之呼叫的適當資料。
現將連同第6圖來說明選擇模組的範例實施的流程圖。在接收600程式碼分析器的輸出之後,識別可用的硬體資料庫,選擇模組存取602關於硬體資料庫的資訊,諸如程式碼大小、消耗功率、FPGA資源消耗與類似者。關於程式碼中對此資料庫的呼叫的頻率的資訊被接收604。若存在使用FPGA的同時程序,則此資訊亦被接收606。最後,關於應用程式碼的執行圖樣的資訊(包含在先前的應用程式碼執行中資料庫被調用的次數)被接收608。使用各種所接收到的資訊,可用的硬體資料庫之一或更多者可被選擇610。
任何實施此種選擇的特定程序,係取決於應用程式以及正使用的FPGA資源類型。在最簡單的情況中,若不存在與其他程序間對於使用FPGA資源的衝突,且若估計了對
FPGA資源的投射利用以提供較佳的應用程式加速(相較於使用軟體資料庫),則硬體資料庫可被選擇使用。
在附加申請專利範圍的前置詞中,名詞「生產產品」、「程序」、「機器」以及「物質組成」,意為將申請專利範圍限制於被認定為落入在美國專利法第101條中由這些名詞的使用來界定之可專利性發明標的的範圍中。
本文所說明之前述替代性具體實施例的任意者或所有者,可依所需而任意組合以形成額外的混合具體實施例。應瞭解到,附加申請專利範圍中所界定的標的,不必要被限制於上文所說明的特定實施例。上文所說明的特定實施例僅作為範例而被揭示。
500‧‧‧程式碼分析器
502‧‧‧應用程式碼
504‧‧‧硬體資料庫
506‧‧‧硬體資料庫
508‧‧‧呼叫頻率
510‧‧‧選擇模組
512‧‧‧輸出
520‧‧‧排程器
522‧‧‧資料
524‧‧‧執行圖樣
Claims (20)
- 一種以電腦實施的程序,包含以下步驟:接收步驟,將電腦程式碼接收入記憶體中,該電腦程式碼包含對一或更多個資料庫的參照;存取步驟,使用一電腦處理器存取關於可用硬體資料庫的資訊;決定步驟,使用一電腦處理器,決定是否可使用該等可用硬體資料庫之一或更多者來實施該電腦程式碼中的該等參照;以及選擇與載入步驟,選擇並載入該等可用硬體資料庫之一或更多者於一現場可程式化邏輯閘陣列中,以供一應用程式使用該電腦程式碼來存取。
- 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:決定一現場可程式化邏輯閘陣列中的哪些資源,為可用於執行該硬體資料庫。
- 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮由同時的程序對該現場可程式化邏輯閘陣列的存取。
- 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮該電腦程式碼的一執行圖樣。
- 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮該電腦程式碼中對於該硬體資料庫之呼叫的頻率。
- 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮該電腦程式碼中該硬體資料庫的呼叫的頻率。
- 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮在執行於該現場可程式化邏輯閘陣列中時,該硬體資料庫的功率消耗。
- 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮該現場可程式化邏輯閘陣列中該硬體資料庫的資源使用。
- 如請求項第1項所述之以電腦實施的程序,其中決定與選擇一硬體資料庫之該決定與選擇步驟,發生為在執行該電腦程式碼之前的一及時編譯程序的部分。
- 如請求項第1項所述之以電腦實施的程序,其中該決定與選擇步驟發生於編譯時。
- 一種電腦程式產品,包含: 一電腦可讀取儲存媒體;儲存在該電腦可讀取儲存媒體上的電腦程式指令,該等電腦程式指令在由一電腦處理時,指示該電腦執行一以電腦實施的程序,包含以下步驟:接收步驟,將電腦程式碼接收入記憶體中,該電腦程式碼包含對一或更多個資料庫的參照;存取步驟,使用一電腦處理器存取關於可用硬體資料庫的資訊;決定步驟,使用一電腦處理器,決定是否可使用該等可用硬體資料庫之一或更多者來實施該電腦程式碼中的該等參照;以及選擇與載入步驟,選擇並載入該等可用硬體資料庫之一或更多者於一現場可程式化邏輯閘陣列中,以供一應用程式使用該電腦程式碼來存取。
- 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:決定一現場可程式化邏輯閘陣列中的哪些資源,為可用於執行該硬體資料庫。
- 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮由同時的程序對該現場可程式化邏輯閘陣列的存取。
- 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮該電腦程式碼的一執行圖樣。
- 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮該電腦程式碼中對於該硬體資料庫之呼叫的頻率。
- 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮該電腦程式碼中該硬體資料庫的大小。
- 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮在執行於該現場可程式化邏輯閘陣列中時,該硬體資料庫的功率消耗。
- 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮該現場可程式化邏輯閘陣列中該硬體資料庫的資源使用。
- 如請求項第11項所述之電腦程式產品,其中決定與選擇一硬體資料庫之該決定與選擇步驟,發生為在執行該電腦程式碼之前的一及時編譯程序的部分。
- 如請求項第11項所述之電腦程式產品,其中該決定與選擇步驟發生於編譯時。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/528,251 US9298438B2 (en) | 2012-06-20 | 2012-06-20 | Profiling application code to identify code portions for FPGA implementation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201409228A true TW201409228A (zh) | 2014-03-01 |
TWI594117B TWI594117B (zh) | 2017-08-01 |
Family
ID=48747741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102121922A TWI594117B (zh) | 2012-06-20 | 2013-06-20 | 剖析應用程式碼以識別用於fpga實施之程式碼部份 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9298438B2 (zh) |
TW (1) | TWI594117B (zh) |
WO (1) | WO2013192236A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8898480B2 (en) | 2012-06-20 | 2014-11-25 | Microsoft Corporation | Managing use of a field programmable gate array with reprogammable cryptographic operations |
US9230091B2 (en) | 2012-06-20 | 2016-01-05 | Microsoft Technology Licensing, Llc | Managing use of a field programmable gate array with isolated components |
US9424019B2 (en) | 2012-06-20 | 2016-08-23 | Microsoft Technology Licensing, Llc | Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor |
CN103577266B (zh) * | 2012-07-31 | 2017-06-23 | 国际商业机器公司 | 用于对现场可编程门阵列资源进行分配的方法及系统 |
US10133557B1 (en) * | 2013-01-11 | 2018-11-20 | Mentor Graphics Corporation | Modifying code to reduce redundant or unnecessary power usage |
US9507526B2 (en) | 2014-11-14 | 2016-11-29 | Netapp, Inc. | Just-in time remote data storage allocation |
JP6429650B2 (ja) * | 2015-01-29 | 2018-11-28 | キヤノン株式会社 | 情報処理装置およびその制御方法、並びにプログラム |
US9600356B2 (en) * | 2015-07-15 | 2017-03-21 | Bank Of America Corporation | Allocating field-programmable gate array (FPGA) resources |
US9940166B2 (en) | 2015-07-15 | 2018-04-10 | Bank Of America Corporation | Allocating field-programmable gate array (FPGA) resources |
JP6515771B2 (ja) * | 2015-10-07 | 2019-05-22 | 富士通コネクテッドテクノロジーズ株式会社 | 並列処理装置及び並列処理方法 |
US10360135B2 (en) * | 2016-03-31 | 2019-07-23 | Microsoft Technology Licensing, Llc | Privilege test and monitoring |
US10970133B2 (en) | 2016-04-20 | 2021-04-06 | International Business Machines Corporation | System and method for hardware acceleration for operator parallelization with streams |
US10067809B2 (en) | 2016-04-20 | 2018-09-04 | International Business Machines Corporation | System and method for batch transport using hardware accelerators |
US9703603B1 (en) * | 2016-04-25 | 2017-07-11 | Nxp Usa, Inc. | System and method for executing accelerator call |
US10599479B2 (en) | 2016-09-21 | 2020-03-24 | International Business Machines Corporation | Resource sharing management of a field programmable device |
US10572310B2 (en) * | 2016-09-21 | 2020-02-25 | International Business Machines Corporation | Deploying and utilizing a software library and corresponding field programmable device binary |
US10355945B2 (en) | 2016-09-21 | 2019-07-16 | International Business Machines Corporation | Service level management of a workload defined environment |
US10417012B2 (en) | 2016-09-21 | 2019-09-17 | International Business Machines Corporation | Reprogramming a field programmable device on-demand |
US10347039B2 (en) | 2017-04-17 | 2019-07-09 | Intel Corporation | Physically based shading via fixed-functionality shader libraries |
US10572250B2 (en) | 2017-12-20 | 2020-02-25 | International Business Machines Corporation | Dynamic accelerator generation and deployment |
US11645059B2 (en) | 2017-12-20 | 2023-05-09 | International Business Machines Corporation | Dynamically replacing a call to a software library with a call to an accelerator |
KR102409505B1 (ko) * | 2017-12-22 | 2022-06-14 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법 |
US10936043B2 (en) | 2018-04-27 | 2021-03-02 | International Business Machines Corporation | Thermal management of hardware accelerators |
US10496586B2 (en) | 2018-04-27 | 2019-12-03 | International Business Machines Corporation | Accelerator management |
US11144357B2 (en) | 2018-05-25 | 2021-10-12 | International Business Machines Corporation | Selecting hardware accelerators based on score |
US10747705B2 (en) | 2018-06-13 | 2020-08-18 | International Business Machines Corporation | On-chip accelerator management |
US10740257B2 (en) | 2018-07-02 | 2020-08-11 | International Business Machines Corporation | Managing accelerators in application-specific integrated circuits |
US10831627B2 (en) | 2018-07-23 | 2020-11-10 | International Business Machines Corporation | Accelerator monitoring and testing |
US10817339B2 (en) | 2018-08-09 | 2020-10-27 | International Business Machines Corporation | Accelerator validation and reporting |
US10977098B2 (en) | 2018-08-14 | 2021-04-13 | International Business Machines Corporation | Automatically deploying hardware accelerators based on requests from users |
US10892944B2 (en) | 2018-11-29 | 2021-01-12 | International Business Machines Corporation | Selecting and using a cloud-based hardware accelerator |
US11340874B2 (en) * | 2019-06-27 | 2022-05-24 | Intel Corporation | Methods and apparatus to recommend instruction adaptations to improve compute performance |
US11144290B2 (en) * | 2019-09-13 | 2021-10-12 | Huawei Technologies Co., Ltd. | Method and apparatus for enabling autonomous acceleration of dataflow AI applications |
EP3961388A1 (de) * | 2020-08-26 | 2022-03-02 | Siemens Aktiengesellschaft | Computer-implementiertes verfahren und system zur dynamischen ausführung eines anwendungsprogramms durch eine plattform |
US11829733B2 (en) * | 2021-11-22 | 2023-11-28 | Xilinx, Inc. | Synthesis flow for data processing engine array applications relying on hardware library packages |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752035A (en) * | 1995-04-05 | 1998-05-12 | Xilinx, Inc. | Method for compiling and executing programs for reprogrammable instruction set accelerator |
US5748979A (en) * | 1995-04-05 | 1998-05-05 | Xilinx Inc | Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table |
JP3627384B2 (ja) | 1996-01-17 | 2005-03-09 | 富士ゼロックス株式会社 | ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法 |
JP3783800B2 (ja) * | 1996-08-09 | 2006-06-07 | 富士通株式会社 | プログラマブルな論理素子/装置を用いた暗号化/復号化装置および方法 |
US6971066B2 (en) * | 1997-08-18 | 2005-11-29 | National Instruments Corporation | System and method for deploying a graphical program on an image acquisition device |
US6078736A (en) * | 1997-08-28 | 2000-06-20 | Xilinx, Inc. | Method of designing FPGAs for dynamically reconfigurable computing |
US7085670B2 (en) * | 1998-02-17 | 2006-08-01 | National Instruments Corporation | Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources |
US6150838A (en) | 1999-02-25 | 2000-11-21 | Xilinx, Inc. | FPGA configurable logic block with multi-purpose logic/memory circuit |
GB2352548B (en) * | 1999-07-26 | 2001-06-06 | Sun Microsystems Inc | Method and apparatus for executing standard functions in a computer system |
TW440845B (en) | 1999-08-11 | 2001-06-16 | Ibm | Method and system for programming FPGAs on PC-cards without additional hardware |
JP2001308843A (ja) | 2000-04-19 | 2001-11-02 | Nec Commun Syst Ltd | 暗号復号化装置 |
US7752419B1 (en) * | 2001-03-22 | 2010-07-06 | Qst Holdings, Llc | Method and system for managing hardware resources to implement system functions using an adaptive computing architecture |
WO2002082267A1 (en) * | 2001-04-06 | 2002-10-17 | Wind River Systems, Inc. | Fpga coprocessing system |
US6754881B2 (en) * | 2001-12-10 | 2004-06-22 | International Business Machines Corporation | Field programmable network processor and method for customizing a network processor |
US6941538B2 (en) * | 2002-02-22 | 2005-09-06 | Xilinx, Inc. | Method and system for integrating cores in FPGA-based system-on-chip (SoC) |
US7386717B2 (en) | 2002-03-07 | 2008-06-10 | Intel Corporation | Method and system for accelerating the conversion process between encryption schemes |
US7162644B1 (en) | 2002-03-29 | 2007-01-09 | Xilinx, Inc. | Methods and circuits for protecting proprietary configuration data for programmable logic devices |
US7073158B2 (en) * | 2002-05-17 | 2006-07-04 | Pixel Velocity, Inc. | Automated system for designing and developing field programmable gate arrays |
GB0304628D0 (en) * | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
WO2004010320A2 (en) | 2002-07-23 | 2004-01-29 | Gatechance Technologies, Inc. | Pipelined reconfigurable dynamic instruciton set processor |
US7197647B1 (en) | 2002-09-30 | 2007-03-27 | Carnegie Mellon University | Method of securing programmable logic configuration data |
US7260794B2 (en) * | 2002-12-20 | 2007-08-21 | Quickturn Design Systems, Inc. | Logic multiprocessor for FPGA implementation |
US7028283B1 (en) * | 2003-01-30 | 2006-04-11 | Xilinx, Inc. | Method of using a hardware library in a programmable logic device |
US7124391B1 (en) * | 2003-04-30 | 2006-10-17 | Xilinx, Inc. | Method and apparatus for dynamically connecting modules in a programmable logic device |
US20040230934A1 (en) * | 2003-05-15 | 2004-11-18 | Taylor Richard David | System and method for emulating systems with multiple field programmable gate arrays |
US7366652B2 (en) * | 2003-06-16 | 2008-04-29 | Springsoft, Inc. | Method of programming a co-verification system |
US20070277161A1 (en) * | 2004-03-04 | 2007-11-29 | Trustees Of Boston University | System and Method for Programmable Logic Acceleration of Data Processing Applications and Compiler Therefore |
US7512813B2 (en) * | 2004-05-28 | 2009-03-31 | International Business Machines Corporation | Method for system level protection of field programmable logic devices |
US20060059373A1 (en) | 2004-09-10 | 2006-03-16 | International Business Machines Corporation | Integrated circuit chip for encryption and decryption using instructions supplied through a secure interface |
WO2006071380A2 (en) | 2004-11-12 | 2006-07-06 | Pufco, Inc. | Securely field configurable device |
US7386708B2 (en) | 2005-01-13 | 2008-06-10 | Lenovo (Singapore) Pte Ltd. | Secure hardware personalization service |
US7788502B1 (en) | 2005-03-10 | 2010-08-31 | Xilinx, Inc. | Method and system for secure exchange of IP cores |
US7945894B2 (en) * | 2005-12-05 | 2011-05-17 | National Instruments Corporation | Implementing a design flow for a programmable hardware element coupled to a processor |
US20080104601A1 (en) * | 2006-10-26 | 2008-05-01 | Nokia Corporation | Scheduler for multiple software tasks to share reconfigurable hardware |
KR100883655B1 (ko) | 2006-12-04 | 2009-02-18 | 삼성전자주식회사 | 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법 |
EP1930834A1 (de) | 2006-12-05 | 2008-06-11 | Siemens Schweiz AG | Kryptographisch gesichertes Prozessorsystem |
US8065517B2 (en) | 2007-11-01 | 2011-11-22 | Infineon Technologies Ag | Method and system for transferring information to a device |
US20090119503A1 (en) | 2007-11-06 | 2009-05-07 | L3 Communications Corporation | Secure programmable hardware component |
CN101222743B (zh) | 2008-01-22 | 2011-12-28 | 中兴通讯股份有限公司 | 一种无线通信系统中管理软件版本文件方法 |
US8533663B2 (en) * | 2008-05-12 | 2013-09-10 | Oracle America, Inc. | System and method for utilizing available best effort hardware mechanisms for supporting transactional memory |
US20090288076A1 (en) | 2008-05-16 | 2009-11-19 | Mark Rogers Johnson | Managing Updates In A Virtual File System |
US20090293051A1 (en) | 2008-05-22 | 2009-11-26 | Fortinet, Inc., A Delaware Corporation | Monitoring and dynamic tuning of target system performance |
FR2935078B1 (fr) | 2008-08-12 | 2012-11-16 | Groupe Des Ecoles De Telecommunications Get Ecole Nationale Superieure Des Telecommunications Enst | Procede de protection du decryptage des fichiers de configuration de circuits logiques programmables et circuit mettant en oeuvre le procede |
CN101782893B (zh) | 2009-01-21 | 2014-12-24 | 上海芯豪微电子有限公司 | 可重构数据处理平台 |
US7830732B2 (en) | 2009-02-11 | 2010-11-09 | Stec, Inc. | Staged-backup flash backed dram module |
US8448122B1 (en) * | 2009-04-01 | 2013-05-21 | Xilinx, Inc. | Implementing sub-circuits with predictable behavior within a circuit design |
US8369460B1 (en) * | 2009-05-18 | 2013-02-05 | The United States Of America As Represented By The Secretary Of The Army | Reduced complexity constellation pattern recognition and classification method |
US8332795B2 (en) * | 2009-12-15 | 2012-12-11 | Apple Inc. | Automated pin multiplexing for programmable logic device implementation of integrated circuit design |
US8368423B2 (en) | 2009-12-23 | 2013-02-05 | L-3 Communications Integrated Systems, L.P. | Heterogeneous computer architecture based on partial reconfiguration |
US8417965B1 (en) | 2010-04-07 | 2013-04-09 | Xilinx, Inc. | Method and circuit for secure definition and integration of cores |
US8516268B2 (en) | 2010-08-23 | 2013-08-20 | Raytheon Company | Secure field-programmable gate array (FPGA) architecture |
CN102403033A (zh) * | 2010-09-08 | 2012-04-04 | 盛乐信息技术(上海)有限公司 | 用fpga实现快速sram读写控制的装置及方法 |
CA2719653A1 (en) * | 2010-11-05 | 2011-01-18 | Ibm Canada Limited - Ibm Canada Limitee | Partial inlining with software based restart |
CN102087600B (zh) | 2011-02-28 | 2015-08-05 | 华为终端有限公司 | 界面自主规划方法及装置 |
CN102324006B (zh) | 2011-09-06 | 2014-01-29 | 四川九洲电器集团有限责任公司 | 一种处理器程序安全保护装置及保护方法 |
CN102377564B (zh) | 2011-11-15 | 2015-03-11 | 华为技术有限公司 | 私钥的加密方法及装置 |
US9230091B2 (en) * | 2012-06-20 | 2016-01-05 | Microsoft Technology Licensing, Llc | Managing use of a field programmable gate array with isolated components |
US20130346985A1 (en) * | 2012-06-20 | 2013-12-26 | Microsoft Corporation | Managing use of a field programmable gate array by multiple processes in an operating system |
US9424019B2 (en) * | 2012-06-20 | 2016-08-23 | Microsoft Technology Licensing, Llc | Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor |
US8898480B2 (en) * | 2012-06-20 | 2014-11-25 | Microsoft Corporation | Managing use of a field programmable gate array with reprogammable cryptographic operations |
-
2012
- 2012-06-20 US US13/528,251 patent/US9298438B2/en active Active
-
2013
- 2013-06-18 WO PCT/US2013/046426 patent/WO2013192236A1/en active Application Filing
- 2013-06-20 TW TW102121922A patent/TWI594117B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20130346979A1 (en) | 2013-12-26 |
WO2013192236A1 (en) | 2013-12-27 |
TWI594117B (zh) | 2017-08-01 |
US9298438B2 (en) | 2016-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI594117B (zh) | 剖析應用程式碼以識別用於fpga實施之程式碼部份 | |
US9417935B2 (en) | Many-core process scheduling to maximize cache usage | |
TWI584141B (zh) | 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用 | |
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
US20130346985A1 (en) | Managing use of a field programmable gate array by multiple processes in an operating system | |
JP5658365B2 (ja) | ハイブリッド・コンピューティング環境における高スループット・コンピューティングの方法、システム及びプログラム | |
US8707326B2 (en) | Pattern matching process scheduler in message passing environment | |
US9262220B2 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
US8869162B2 (en) | Stream processing on heterogeneous hardware devices | |
US11163677B2 (en) | Dynamically allocated thread-local storage | |
US11144433B2 (en) | Analysis and visualization of application concurrency and processor resource utilization | |
US11188348B2 (en) | Hybrid computing device selection analysis | |
Mack et al. | CEDR: A compiler-integrated, extensible DSSoC runtime | |
CN112219192A (zh) | 用于使用元数据在神经网络中进行机会性负载平衡的方法和系统 | |
Cavicchioli et al. | Novel methodologies for predictable CPU-to-GPU command offloading | |
KR20150101870A (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
US20220222177A1 (en) | Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs | |
Gudukbay et al. | GYAN: Accelerating bioinformatics tools in galaxy with GPU-aware computation mapping | |
Kumar et al. | Global analysis of resource arbitration for MPSoC | |
US20240192934A1 (en) | Framework for development and deployment of portable software over heterogenous compute systems | |
US20230168898A1 (en) | Methods and apparatus to schedule parallel instructions using hybrid cores | |
Kim et al. | Towards predicting GPGPU performance for concurrent workloads in Multi-GPGPU environment | |
Badosa et al. | A history-based resource manager for genome analysis workflows applications on clusters with heterogeneous nodes | |
WO2024220259A1 (en) | Garbage collection in constrained local environments | |
WO2015140997A1 (ja) | プログラム管理装置及びプログラム管理方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |