TW201409228A - 剖析應用程式碼以識別用於fpga實施之程式碼部份 - Google Patents

剖析應用程式碼以識別用於fpga實施之程式碼部份 Download PDF

Info

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
Application number
TW102121922A
Other languages
English (en)
Other versions
TWI594117B (zh
Inventor
Edmund B Nightingale
Brian Lamacchia
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of TW201409228A publication Critical patent/TW201409228A/zh
Application granted granted Critical
Publication of TWI594117B publication Critical patent/TWI594117B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/76Protecting 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實施之程式碼部份
本發明係關於剖析應用程式碼以識別用於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. 一種以電腦實施的程序,包含以下步驟:接收步驟,將電腦程式碼接收入記憶體中,該電腦程式碼包含對一或更多個資料庫的參照;存取步驟,使用一電腦處理器存取關於可用硬體資料庫的資訊;決定步驟,使用一電腦處理器,決定是否可使用該等可用硬體資料庫之一或更多者來實施該電腦程式碼中的該等參照;以及選擇與載入步驟,選擇並載入該等可用硬體資料庫之一或更多者於一現場可程式化邏輯閘陣列中,以供一應用程式使用該電腦程式碼來存取。
  2. 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:決定一現場可程式化邏輯閘陣列中的哪些資源,為可用於執行該硬體資料庫。
  3. 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮由同時的程序對該現場可程式化邏輯閘陣列的存取。
  4. 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮該電腦程式碼的一執行圖樣。
  5. 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮該電腦程式碼中對於該硬體資料庫之呼叫的頻率。
  6. 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮該電腦程式碼中該硬體資料庫的呼叫的頻率。
  7. 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮在執行於該現場可程式化邏輯閘陣列中時,該硬體資料庫的功率消耗。
  8. 如請求項第1項所述之以電腦實施的程序,其中該選擇步驟包含以下步驟:考慮該現場可程式化邏輯閘陣列中該硬體資料庫的資源使用。
  9. 如請求項第1項所述之以電腦實施的程序,其中決定與選擇一硬體資料庫之該決定與選擇步驟,發生為在執行該電腦程式碼之前的一及時編譯程序的部分。
  10. 如請求項第1項所述之以電腦實施的程序,其中該決定與選擇步驟發生於編譯時。
  11. 一種電腦程式產品,包含: 一電腦可讀取儲存媒體;儲存在該電腦可讀取儲存媒體上的電腦程式指令,該等電腦程式指令在由一電腦處理時,指示該電腦執行一以電腦實施的程序,包含以下步驟:接收步驟,將電腦程式碼接收入記憶體中,該電腦程式碼包含對一或更多個資料庫的參照;存取步驟,使用一電腦處理器存取關於可用硬體資料庫的資訊;決定步驟,使用一電腦處理器,決定是否可使用該等可用硬體資料庫之一或更多者來實施該電腦程式碼中的該等參照;以及選擇與載入步驟,選擇並載入該等可用硬體資料庫之一或更多者於一現場可程式化邏輯閘陣列中,以供一應用程式使用該電腦程式碼來存取。
  12. 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:決定一現場可程式化邏輯閘陣列中的哪些資源,為可用於執行該硬體資料庫。
  13. 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮由同時的程序對該現場可程式化邏輯閘陣列的存取。
  14. 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮該電腦程式碼的一執行圖樣。
  15. 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮該電腦程式碼中對於該硬體資料庫之呼叫的頻率。
  16. 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮該電腦程式碼中該硬體資料庫的大小。
  17. 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮在執行於該現場可程式化邏輯閘陣列中時,該硬體資料庫的功率消耗。
  18. 如請求項第11項所述之電腦程式產品,其中該選擇步驟包含以下步驟:考慮該現場可程式化邏輯閘陣列中該硬體資料庫的資源使用。
  19. 如請求項第11項所述之電腦程式產品,其中決定與選擇一硬體資料庫之該決定與選擇步驟,發生為在執行該電腦程式碼之前的一及時編譯程序的部分。
  20. 如請求項第11項所述之電腦程式產品,其中該決定與選擇步驟發生於編譯時。
TW102121922A 2012-06-20 2013-06-20 剖析應用程式碼以識別用於fpga實施之程式碼部份 TWI594117B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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