TWI584141B - 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用 - Google Patents

更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用 Download PDF

Info

Publication number
TWI584141B
TWI584141B TW102121921A TW102121921A TWI584141B TW I584141 B TWI584141 B TW I584141B TW 102121921 A TW102121921 A TW 102121921A TW 102121921 A TW102121921 A TW 102121921A TW I584141 B TWI584141 B TW I584141B
Authority
TW
Taiwan
Prior art keywords
hardware
update
library
information
fpga
Prior art date
Application number
TW102121921A
Other languages
English (en)
Other versions
TW201411387A (zh
Inventor
奈丁格爾艾慕德B
拉瑪查布萊恩
巴漢保羅
Original Assignee
微軟技術授權有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 微軟技術授權有限責任公司 filed Critical 微軟技術授權有限責任公司
Publication of TW201411387A publication Critical patent/TW201411387A/zh
Application granted granted Critical
Publication of TWI584141B publication Critical patent/TWI584141B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

更新硬體庫以供具有FPGA共處理器的電腦系統上的應 用程式使用
本發明涉及更新硬體庫以供具有FPGA共處理器的電腦系統上的應用程式使用。
在大多數通用電腦內,作業系統是管理對電腦內資源的存取的主要軟體。主要資源是執行被設計成在電腦上執行的應用程式程式的中央處理單元(CPU)、主記憶體和儲存器。在一些電腦體系結構中,可出現額外的處理單元(諸如處理器中的多個核)及/或額外的處理器(稱為共處理器)。此種共處理器的實例包括圖形處理單元(GPU)和數位訊號處理器(DSP)。作業系統亦管理多個程序對該等資源的存取。
現場可程式設計閘陣列(FPGA)是一種通常被用在專用計算設備中的邏輯設備。FPGA通常被用於執行此閘陣列尤其適用於的特定的、專用的功能。FPGA通常位於周邊設備或其他專用硬體(諸如連接到諸如PCI匯流排的系統匯流排並 經由該系統匯流排被存取的印刷電路板)中。一般而言,此種設備被程式設計一次並被使用多次。因為該等設備是可程式設計的,相比於其他專用邏輯設備,其具有能被在現場更新的優勢。
提供本發明內容以便以簡化形式介紹將在以下具體實施方式中進一步描述的一些概念的選擇。本發明內容並不意欲識別所主張標的的關鍵特徵或必要特徵,亦不意欲用於限制所主張標的的範疇。
一或多個現場可程式設計閘陣列(FPGA)能在通用計算系統中用作共享可程式設計共處理器資源。FPGA能被程式設計來執行功能,該等功能進而能與一或多個程序相關聯。在多個程序的情況下,FPGA能被共享,並且程序能在存取FPGA的時間間隙期間被指派到FPGA的至少一個部分。用硬體描述語言所寫的用於程式設計FPGA的程式被用作硬體庫。作業系統對以下進行管理:將FPGA資源分配到程序、根據要由程序使用FPGA來執行的功能來程式設計該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‧‧‧更新伺服器
514‧‧‧使用者介面
516‧‧‧選擇
518‧‧‧應用程式異常
520‧‧‧系統參數
522‧‧‧請求
524‧‧‧開發環境
526‧‧‧應用程式
600‧‧‧步驟
602‧‧‧步驟
604‧‧‧步驟
606‧‧‧步驟
700‧‧‧步驟
702‧‧‧步驟
704‧‧‧步驟
706‧‧‧步驟
800‧‧‧步驟
802‧‧‧步驟
804‧‧‧步驟
806‧‧‧步驟
圖1是對其作業系統能被實施的具有FPGA資源的示例計算系統的方塊圖。
圖2是FPGA功能單元的說明性實例的示意圖。
圖3是使用具有FPGA資源的電腦系統上的硬體和軟體庫的應用程式的示例體系結構的示意圖。
圖4是示出隨著時間的對FPGA資源使用的圖。
圖5示出用於更新硬體庫的系統的示例實施例的資料流程圖。
圖6是示出基於代碼分析請求硬體庫的示例實施例的流程圖。
圖7是示出基於使用者選擇請求硬體庫的示例實施例的流程圖。
圖8是示出基於輪詢更新伺服器來請求硬體庫的示例實施例的流程圖。
以下部分提供了對示例計算環境的簡要的、一般的描述,在該示例計算環境中能實施用於管理對FPGA資源的使 用的作業系統。該系統可以用眾多通用或專用計算設備來實施。適合的公知計算設備的實例包括但不限於:個人電腦、伺服器電腦、掌上型或膝上型設備(例如,媒體播放機、筆記型電腦、蜂巢式電話、個人資料助理、語音記錄器)、多處理器系統、基於微處理器的系統、機上盒、遊戲機、可程式設計消費性電子產品、網路PC、小型電腦、大型電腦、包括以上系統或設備的任一個的分散式計算環境等等。
圖1僅僅示出示例計算環境,並不意欲對適合的計算環境的使用範疇或功能提出任何限制。
參考圖1,示例計算環境包括計算設備100。在一個基本配置中,計算設備100包括至少一個處理單元102(諸如通用電腦的典型中央處理單元(CPU))和記憶體104。
計算設備可包括多個處理單元及/或額外的共處理單元,諸如圖形處理單元(GPU)。計算設備亦包括一或多個現場可程式設計閘陣列(FPGA),其被表示為可用作共享(在執行在電腦上的程序間共用)的共處理資源的FPGA單元120。FPGA可常駐於其自身的CPU插孔中或常駐於分開的被插入到擴充槽(諸如快速周邊部件互連(PCI-E)槽)中的卡上。藉由提供此種FPGA單元,能在得到硬體加速的益處的情況下實施各種非常適合於閘陣列來實施的功能。
取決於處理單元和FPGA單元的配置,該單元或單元內的每個功能單元具有相關聯的輸入/輸出通道來用於與主作業系統程序進行通訊。例如,能提供專用於該功能單元並在其與使用該功能單元的程序之間共享的記憶體區域。一種請 求佇列和回應佇列亦能被用於賦能在FPGA單元內實施的操作的非同步調用。此外,FPGA單元中的功能單元針對程序的狀態能被保存到用於該功能單元和該程序的記憶體區域並從該記憶體區域中復原。或者,其他技術能被用於確保功能單元在被其程序使用前處於已知狀態。
取決於計算設備的配置和類型,記憶體104可以是揮發性的(諸如RAM)、非揮發性的(諸如ROM、快閃記憶體等)或是兩者的某種組合。處理單元、共處理器和記憶體的該配置在圖1中用虛線106示出。
計算設備100亦可具有額外的資源和設備。例如,計算設備100亦可包含額外儲存器(可移除及/或不可移除的),包括但不限於磁碟、光碟或磁帶。在圖1中藉由可移除式儲存器108和不可移除式儲存器110示出此種額外儲存器。電腦儲存媒體包括以用於儲存諸如電腦程式指令、資料檔案、資料結構、程式模組或其他資料等資訊的任何方法或技術實施的揮發性和非揮發性、可移除和不可移除媒體。記憶體104、可移除式儲存器108和不可移除式儲存器110全部皆是電腦儲存媒體的實例。電腦儲存媒體包括但不限於,RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(DVD)或其他光學儲存器、磁帶盒、磁帶、磁碟儲存器或其他磁性儲存設備,或者可用於儲存所需資訊並且可由計算設備100存取的任何其他媒體。任何此種電腦儲存媒體皆可以是計算設備100的一部分。
計算設備100亦可包括通訊連接112,其允許設備經 由通訊媒體與其他設備進行通訊。通訊連接112的實施是取決於正由計算設備存取的通訊媒體的種類的,此是因為其提供了對此種媒體的介面以允許經由該通訊媒體的資料的傳輸及/或接收。通訊媒體通常承載諸如載波或其他傳輸機制等已調制資料信號中的電腦程式指令、資料檔案、資料結構、程式模組或其他資料,並包括任何資訊傳遞媒體。術語「已調制資料信號」指其一或多個特徵以此種方式設置或改變以便在信號中對資訊進行編碼的信號。舉例而言(但並非限制),通訊媒體包括諸如有線網路或直接線連接之類的有線媒體,以及諸如聲學、RF、紅外及其他無線媒體之類的無線媒體。
計算設備100可具有各種輸入設備114,如鍵盤、滑鼠、筆、相機、觸摸輸入設備等。亦可包括諸如顯示器、揚聲器、印表機等輸出設備116。所有該等設備在本領域中是公知的並且不必在此詳細論述。
使用由計算設備處理的諸如程式模組等電腦可執行指令及/或電腦解譯的指令來實施在計算設備上執行的應用程式。一般而言,程式模組包括在由處理單元處理時指示處理單元執行特定任務或實施特定抽象資料類型的常式、程式、物件、部件、資料結構等等。在分散式計算環境中,此種任務能由經由通訊網路連結的遠端處理設備來執行。在分散式計算環境中,程式模組可以位於包括記憶體儲存設備在內的本端和遠端電腦儲存媒體中。
在計算設備上執行的作業系統管理程序對電腦設備的各種資源的存取。通常,在電腦系統上執行應用程式導致 一或多個程序被建立,其中每個程序隨著時間被分配到不同的資源。若資源在程序間共享,並且若程序不能同時共享資源,則作業系統隨著時間排程對資源的存取。此種資源之一是圖1的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可被足夠快地重新程式設計,則庫可在作業系統的排程量子(quantum)內被載入到FPGA中。作業系統306亦執行來自應用程式300和CPU 308上的軟體庫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,另一程序(諸如程序P4)能開始使用功能單元400;並且程序P2能再次有效來使用功能單元402。經由當前的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,該硬體庫502儲存了用於在FPGA共處理器上實施功能的代碼。更新程序500與更新伺服器510進行通訊以,在一些情況下,接收描述可用庫的資訊504,以及在其他情況下接收經更新的硬體庫506。更新伺服器510可將資訊504和庫506推送到更新程序500,或可在接收到來自更新伺服器的請求508之後提供此種資訊。更新程序500可常駐在主機電腦的作業系統中,或可以是執行在該主機電腦上的使用者級服務。更新伺服器510可以是經由電腦網路連接到該主機電腦的分開的伺服器電腦。
更新伺服器亦可以被配置為不僅可被更新程序存取,而且或替代地可經由習知web瀏覽器或其他使用者介面來存取。更新伺服器可提供一或多個虛擬店面作為介面,經由該一或多個虛擬店面,硬體庫可被用於選擇、出售及/或下載到使用者。此種介面可包括描述庫和定價的資訊以及用於下載該庫的其他項。
在更新程序接收關於可用庫的資訊之後,可用庫的列表512可被呈現給使用者,以用於經由使用者介面514來選擇。經由使用者介面中的適當的輸入設備,使用者可向更新程序提供用於下載的一或多個庫的選擇516的指示。
基於各種情況,更新程序可觸發對硬體庫的請求。 例如,代碼分析可識別已知具有對應硬體庫的功能。若硬體庫不可用或若在使用其時發生錯誤,則應用程式在被執行時可觸發異常。在此種情況下,作業系統可嘗試藉由使用對應的軟體庫(若可用)來處理該異常。或者,在應用程式被載入時,作業系統或應用程式載入器可作出決定:是動態地連結到硬體庫還是軟體庫。可使用系統參數來指示:硬體庫是否應被更新。因此,如圖5所示,更新程序可被應用程式異常518及/或系統參數520觸發。在開發環境524中提供的工具在正在開發的應用程式526指定或可使用硬體庫時亦可發起請求522。一些請求硬體庫的示例實施例如下。
更新程序和更新伺服器之間的通道可受保護,以確保更新程序與合法更新伺服器進行通訊。類似地,從更新伺服器下載的庫可被認證為是由受信源創作的以提高安全性。
圖6是示出基於代碼分析請求硬體庫的示例實施例的流程圖。關於硬體庫的資訊被接收600到記憶體。應用程式代碼被接收並分析602以識別對一或多個硬體庫的引用。在一些情況下,對一個庫的引用可允許藉由軟體庫或硬體庫實施。根據所接收的硬體庫資訊,在應用程式代碼中引用的具有對應實施例的任何庫被識別604。所識別的硬體庫隨後被下載606。
圖7是示出基於使用者選擇請求硬體庫的示例實施例的流程圖。關於硬體庫的資訊被接收700到記憶體。該資訊的清單或其他格式化視圖被呈現702給使用者,從中使用者被允許作出選擇。若來自使用者的選擇被接收704,則所識別的 硬體庫可被下載706。硬體庫亦可被做廣告為提供改良的使用者體驗並且因此保證升級,該升級可被購買或被授權並被下載,要麼收費要麼作為補償而免費。
圖8是示出基於輪詢或從更新伺服器接收通知來請求硬體庫的示例實施例的流程圖。特別地,更新程序首先識別800當前使用的硬體庫,諸如圖5中502中儲存的硬體庫。在給定硬體庫的識別符的情況下,更新伺服器接著被輪詢802。更新伺服器決定是否有任何更新與識別給其的硬體庫相關。更新程序接著接收804關於對硬體庫的任何可用更新的資訊。該等更新接著可被請求806用於下載。
在所附申請專利範圍的序言中的術語「製品」、「程序」、「機器」和「物質組成」意欲將申請專利範圍限制為標的,該標的到被認為落入專利法§101中的該等術語的使用所定義的可被專利保護的標的的範疇內。
上文中提到的此處描述的替代實施例中的任一個或全部可以按形成額外混合實施例所需的任何組合使用。應該理解,在所附申請專利範圍中定義的標的沒有必要限於上述的特定實施例。上述特定實施例僅作為實例被揭示。
500‧‧‧更新程序
502‧‧‧硬體庫
504‧‧‧資訊
506‧‧‧經更新的硬體庫
508‧‧‧請求
510‧‧‧更新伺服器
514‧‧‧使用者介面
516‧‧‧選擇
518‧‧‧應用程式異常
520‧‧‧系統參數
522‧‧‧請求
524‧‧‧開發環境
526‧‧‧應用程式

Claims (20)

  1. 一種電腦實施的方法,包括以下步驟:從一硬體庫店將描述硬體庫的資訊接收到記憶體中,該硬體庫儲存用於在一電腦系統中程式設計一現場可程式設計閘陣列(FPGA)以進行一或更多應用程式所請求之操作的代碼;從一更新伺服器將描述對用來程式設計該FPGA的該等硬體庫的更新的資訊接收到記憶體中;根據接收自該更新伺服器的描述該等更新的該資訊,更新在該硬體庫店內的該等硬體庫;至少部分地依據針對該一或更多應用程式之功能性的資訊,來決定將以該等經更新之硬體庫中至少一者來程式設計該FPGA;及以該等經更新之硬體庫中的該至少一者來程式設計該FPGA。
  2. 如請求項1述及之電腦實施的方法,其中接收描述更新的資訊之步驟包括以下步驟:向該更新伺服器發出對一組硬體庫的更新的一請求;及從該更新伺服器接收描述該組硬體庫的可用更新的資訊。
  3. 如請求項2述及之電腦實施的方法,其中接收描述更新的資訊之步驟包括以下步驟: 回應於指示一硬體庫的執行失敗的一應用程式異常來發送該請求。
  4. 如請求項2述及之電腦實施的方法,其中接收描述更新的資訊之步驟包括以下步驟:回應於指定更新一硬體庫的一時間的系統參數來發送該請求。
  5. 如請求項2述及之電腦實施的方法,其中接收描述更新的資訊之步驟包括以下步驟:回應於指示一硬體庫在一應用程式中的使用的一開發環境來發送該請求。
  6. 如請求項1述及之電腦實施的方法,進一步包括以下步驟:向一使用者呈現描述可用更新的資訊;及從該使用者接收對該可用更新中的一選擇的一指示。
  7. 如請求項6述及之電腦實施的方法,其中被呈現給該使用者的該資訊被呈現在一虛擬店面中,該虛擬店面提供包括描述該庫和定價的資訊以及用於下載該庫的其他項的一介面。
  8. 一種電腦程式產品,包括:一實體電腦可讀取硬體儲存裝置;及 電腦程式指令,該等電腦程式指令儲存在該電腦可讀取硬體儲存裝置上,在該等電腦程式指令被一電腦處理時,指令該電腦執行包括以下的一程序:從一硬體庫店將描述硬體庫的資訊接收到記憶體中,該等硬體庫儲存用於在一電腦系統中程式設計一現場可程式設計閘陣列(FPGA)以進行一或更多應用程式請求之操作的代碼;從一更新伺服器將描述對用以程式設計該FPGA的該等硬體庫的更新的資訊接收到記憶體中;根據從該更新伺服器接收的描述該等更新的該資訊,更新該硬體庫店內的該等硬體庫;至少部分地依據針對該一或更多應用程式之功能性的資訊,來決定將以該等經更新之硬體庫中至少一者來程式設計該FPGA;及以該等經更新之硬體庫中的該至少一者來程式設計該FPGA。
  9. 如請求項8述及之電腦程式產品,其中接收描述更新的資訊包括:向該更新伺服器發出對一組硬體庫的更新的一請求;及從該更新伺服器接收描述該組硬體庫的可用更新的資訊。
  10. 如請求項9述及之電腦程式產品,其中接收描述更新的資 訊包括:回應於指示一硬體庫的執行失敗的一應用程式異常來發送該請求。
  11. 如請求項9述及之電腦程式產品,其中接收描述更新的資訊包括:回應於指定更新一硬體庫的一時間的系統參數來發送該請求。
  12. 如請求項9述及之電腦程式產品,其中接收描述更新的資訊包括:回應於指示一硬體庫在一應用程式中的使用的一開發環境來發送該請求。
  13. 如請求項8述及之電腦程式產品,亦包括:向一使用者呈現描述可用更新的資訊;及從該使用者接收對該等可用更新的選擇的一指示。
  14. 如請求項13述及之電腦程式產品,其中更新該硬體庫包括根據來自該使用者的選擇更新硬體庫。
  15. 一種計算機器,包括:一硬體庫店,該硬體庫店包含硬體庫的一集合,該等硬體庫的該集合能夠被該計算機器存取,該等硬體庫儲存用於 在該計算機器中程式設計一現場可程式設計閘陣列(FPGA)以進行一或更多應用程式所請求之操作的代碼;一更新程序部件,被配置以:從該硬體庫店將描述用來程式設計該FPGA的該等硬體庫的資訊接收到記憶體中;從一更新伺服器,將描述對用來程式設計該FPGA的該等硬體庫的更新的資訊接收到記憶體中;根據從該更新伺服器接收的描述該等更新的該資訊,來更新該硬體庫店內的該等硬體庫;至少部分地依據針對該一或更多應用程式之功能性的資訊,來決定將把對該等硬體庫的該等更新中至少一者程式設計到該FPGA中;及以該等經更新之硬體庫中的該至少一者來程式設計該FPGA。
  16. 如請求項15述及之計算機器,其中該更新程序部件被配置以:向該更新伺服器發出對一組硬體庫的更新的一請求;及從該更新伺服器接收描述該組硬體庫的可用更新的資訊。
  17. 如請求項16述及之計算機器,其中該更新程序部件被配置以:接收指示一硬體庫的執行失敗的應用程式異常;及 回應於指示一硬體庫的執行失敗的一應用程式異常來發送該請求。
  18. 如請求項16述及之計算機器,其中該更新程序部件被配置以:存取指定更新硬體庫的時間的系統參數;及回應於指定更新一硬體庫的一時間的出現來發送該請求。
  19. 如請求項16述及之計算機器,其中該更新程序部件被配置以:從指示硬體庫在應用程式中的使用的一開發環境接收資訊;及回應於從指示一硬體庫的使用的該開發環境接收的資訊發送該請求。
  20. 如請求項16述及之計算機器,其中該更新程序部件被配置為:從一應用程式載入器接收資訊,該應用程式載入器在應用程式載入時間決定是否載入一庫;及回應於從該應用程式載入器接收的資訊來發送該請求。
TW102121921A 2012-06-20 2013-06-20 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用 TWI584141B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/528,329 US9424019B2 (en) 2012-06-20 2012-06-20 Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor

Publications (2)

Publication Number Publication Date
TW201411387A TW201411387A (zh) 2014-03-16
TWI584141B true TWI584141B (zh) 2017-05-21

Family

ID=48699356

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102121921A TWI584141B (zh) 2012-06-20 2013-06-20 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用

Country Status (4)

Country Link
US (1) US9424019B2 (zh)
CN (1) CN103488471B (zh)
TW (1) TWI584141B (zh)
WO (1) WO2013192380A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9230091B2 (en) 2012-06-20 2016-01-05 Microsoft Technology Licensing, Llc Managing use of a field programmable gate array with isolated components
US9298438B2 (en) * 2012-06-20 2016-03-29 Microsoft Technology Licensing, Llc Profiling application code to identify code portions for FPGA implementation
US8898480B2 (en) 2012-06-20 2014-11-25 Microsoft Corporation Managing use of a field programmable gate array with reprogammable cryptographic operations
WO2014204453A1 (en) * 2013-06-19 2014-12-24 Empire Technology Development, Llc Processor-optimized library loading for virtual machines
US9507526B2 (en) * 2014-11-14 2016-11-29 Netapp, Inc. Just-in time remote data storage allocation
CN104581782B (zh) * 2014-12-29 2018-01-19 三维通信股份有限公司 一种用于分布式综合接入系统的新型fpga模块
US9411613B1 (en) 2015-04-22 2016-08-09 Ryft Systems, Inc. Systems and methods for managing execution of specialized processors
US9542244B2 (en) 2015-04-22 2017-01-10 Ryft Systems, Inc. Systems and methods for performing primitive tasks using specialized processors
US9411528B1 (en) 2015-04-22 2016-08-09 Ryft Systems, Inc. Storage management systems and methods
US10152317B2 (en) * 2017-03-30 2018-12-11 Wipro Limited Method and system for updating software packages in a storage system
US10341852B2 (en) 2017-06-02 2019-07-02 Apple Inc. Informational articles in response to detection of devices or software
US10031993B1 (en) * 2017-06-12 2018-07-24 Intel Corporation Application store model for dynamic reconfiguration of a field-programmable gate array (FPGA)
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
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
WO2019217931A1 (en) 2018-05-11 2019-11-14 Lattice Semiconductor Corporation Asset management systems and methods for programmable logic devices
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
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
CN110175056B (zh) * 2019-05-30 2022-02-11 西安微电子技术研究所 一种异构平台远程动态加载多目标fpga的控制装置及控制方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1284681A (zh) * 1999-08-11 2001-02-21 国际商业机器公司 无需附加硬件即可对pc卡上的fpga编程的方法和系统
CN101222743A (zh) * 2008-01-22 2008-07-16 中兴通讯股份有限公司 一种无线通信系统中管理软件版本文件方法
US20090288076A1 (en) * 2008-05-16 2009-11-19 Mark Rogers Johnson Managing Updates In A Virtual File System

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
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
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
US20040019765A1 (en) 2002-07-23 2004-01-29 Klein Robert C. Pipelined reconfigurable dynamic instruction 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
WO2005086746A2 (en) 2004-03-04 2005-09-22 Trustees Of Boston University Programmable-logic acceleraton of data processing applications
US7512813B2 (en) 2004-05-28 2009-03-31 International Business Machines Corporation Method for system level protection of field programmable logic devices
US7975062B2 (en) 2004-06-07 2011-07-05 Sling Media, Inc. Capturing and sharing media content
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
US7702927B2 (en) 2004-11-12 2010-04-20 Verayo, 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
US7908476B2 (en) 2007-01-10 2011-03-15 International Business Machines Corporation Virtualization of file system encryption
US7870223B2 (en) 2007-02-27 2011-01-11 Rockwell Automation Technologies, Inc. Services associated with an industrial environment employing controller engine instances
US8621008B2 (en) 2007-04-26 2013-12-31 Mcafee, Inc. System, method and computer program product for performing an action based on an aspect of an electronic mail message thread
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
US8620996B2 (en) 2007-11-19 2013-12-31 Motorola Mobility Llc Method and apparatus for determining a group preference in a social network
US8612409B2 (en) 2007-12-18 2013-12-17 Yahoo! Inc. Method and apparatus for detecting and explaining bursty stream events in targeted groups
US8627052B2 (en) 2008-04-14 2014-01-07 Dell Products, Lp System and method of enabling a function within a module configured to be used within an information handling system
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
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
US8620967B2 (en) 2009-06-11 2013-12-31 Rovi Technologies Corporation Managing metadata for occurrences of a recording
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
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
US8898480B2 (en) 2012-06-20 2014-11-25 Microsoft Corporation Managing use of a field programmable gate array with reprogammable cryptographic operations
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
US9298438B2 (en) 2012-06-20 2016-03-29 Microsoft Technology Licensing, Llc Profiling application code to identify code portions for FPGA implementation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1284681A (zh) * 1999-08-11 2001-02-21 国际商业机器公司 无需附加硬件即可对pc卡上的fpga编程的方法和系统
CN101222743A (zh) * 2008-01-22 2008-07-16 中兴通讯股份有限公司 一种无线通信系统中管理软件版本文件方法
US20090288076A1 (en) * 2008-05-16 2009-11-19 Mark Rogers Johnson Managing Updates In A Virtual File System

Also Published As

Publication number Publication date
US9424019B2 (en) 2016-08-23
US20130346669A1 (en) 2013-12-26
CN103488471B (zh) 2018-04-06
TW201411387A (zh) 2014-03-16
CN103488471A (zh) 2014-01-01
WO2013192380A1 (en) 2013-12-27

Similar Documents

Publication Publication Date Title
TWI584141B (zh) 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用
Anderson BOINC: a platform for volunteer computing
US9182975B2 (en) Automatic application updates
CN102195970B (zh) 基于客户端会话的调试
US9298438B2 (en) Profiling application code to identify code portions for FPGA implementation
CA3000422C (en) Workflow service using state transfer
US20130346985A1 (en) Managing use of a field programmable gate array by multiple processes in an operating system
US10789111B2 (en) Message oriented middleware with integrated rules engine
KR102120868B1 (ko) 서비스형 함수(FaaS)를 제공하는 시스템 및 그 동작방법
US10908948B2 (en) Multiple application instances in operating systems that utilize a single process for application execution
CN111221550B (zh) 用于流式计算的规则更新方法、装置及流式计算系统
JP6070423B2 (ja) 情報処理装置、情報処理方法、及びプログラム
CN107667343B (zh) 用于加载按需加载资源的系统和方法
CN116700694B (zh) 小程序引擎
CN117971376A (zh) 一种数据处理方法、装置、云端设备及介质
CN116149822A (zh) 任务执行方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees