JP2017219931A - 情報処理装置、情報処理方法、およびプログラム - Google Patents

情報処理装置、情報処理方法、およびプログラム Download PDF

Info

Publication number
JP2017219931A
JP2017219931A JP2016112044A JP2016112044A JP2017219931A JP 2017219931 A JP2017219931 A JP 2017219931A JP 2016112044 A JP2016112044 A JP 2016112044A JP 2016112044 A JP2016112044 A JP 2016112044A JP 2017219931 A JP2017219931 A JP 2017219931A
Authority
JP
Japan
Prior art keywords
code
predetermined
circuit
virtual address
tlb
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2016112044A
Other languages
English (en)
Other versions
JP6740719B2 (ja
Inventor
貴史 三吉
Takashi Miyoshi
貴史 三吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016112044A priority Critical patent/JP6740719B2/ja
Priority to US15/453,131 priority patent/US10176112B2/en
Publication of JP2017219931A publication Critical patent/JP2017219931A/ja
Application granted granted Critical
Publication of JP6740719B2 publication Critical patent/JP6740719B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Microcomputers (AREA)
  • Stored Programmes (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Abstract

【課題】再構成可能集積回路にコードがロードされているか否かを高速に判定する。
【解決手段】情報処理装置は、回路の構成を示すコードがロードされることにより前記回路が構成される再構成可能集積回路と、前記再構成可能集積回路にコードがロードされていることを示す情報を記憶するメモリと、所定のコードに対応付けられた所定の仮想アドレスから情報を読み出す命令を発行し、前記命令に基づいて、コードに対応付けられた仮想アドレスと前記メモリの物理アドレスとが対応付けられたTLBを検索し、前記所定の仮想アドレスが前記TLBにヒットしたとき、前記所定のコードがロードされていると判定し、前記所定の仮想アドレスが前記TLBにヒットしなかったとき、前記再構成可能集積回路内の未使用領域に、前記所定のコードが示す所定の回路を構成する処理部と、を備える。
【選択図】図6

Description

本発明は、情報処理装置、情報処理方法、およびプログラムに関する。
近年、Central Processing Unit(CPU)とField-Programmable Gate Array(FPGA)の混載パッケージが発表されるなど、コンピューティングのアクセラレーションとしてFPGAの重要性が増している。CPUとFPGAの混載パッケージでは、CPUとFPGAとがメモリコヒーレントバスで接続され、CPUとFPGAのメモリ共有が可能になっている。
また、複数のリージョンがあらかじめ用意され、リージョンごとの書き換えが可能なFPGAが知られている。
アプリケーションの実行中にFPGAを動的にプログラムする方法が知られている(例えば、特許文献1参照)。
特開2006−215592号公報 特開2013−45219号公報
特許文献1では、ある関数がFPGAにプログラムされているかどうかのチェックをコプロセッサが行い、その結果を結果レジスタに格納し、プロセッサが結果レジスタをチェックして、ある関数がFPGAで実行可能か判定している。特許文献1では、FPGAで実行可能であるかの判定に際してレジスタをチェックしており、細粒度の処理を行う場合、レジスタのチェックがオーバーヘッドとして表れる。
本発明は、再構成可能集積回路にコードがロードされているか否かを高速に判定することを目的とする。
実施の形態に係る情報処理装置は、再構成可能集積回路と、メモリと、処理部と、を備える。
前記再構成可能集積回路と、回路の構成を示すコードがロードされることにより前記回路が構成される。
前記メモリは、前記再構成可能集積回路にコードがロードされていることを示す情報と、前記再構成可能集積回路内で回路が構成可能な未使用領域を示すリソース情報と、を記憶する。
前記処理部は、所定のコードに対応付けられた所定の仮想アドレスから情報を読み出す命令を発行し、前記命令に基づいて、コードに対応付けられた仮想アドレスと前記メモリの物理アドレスとが対応付けられたトランスレーション・ルックアサイド・バッファ(TLB)を検索する。前記処理部は、前記所定の仮想アドレスが前記TLBにヒットしたとき、前記所定のコードがロードされていると判定する。前記処理部は、前記所定の仮想アドレスが前記TLBにヒットしなかったとき、前記リソース情報が示す前記未使用領域に、前記所定のコードが示す所定の回路を構成する。
実施の形態に係る情報処理装置によれば、再構成可能集積回路にコードがロードされているか否かを高速に判定することが出来る。
実施の形態に係る情報処理装置の構成図である。 FPGAリソーステーブルの例である。 マッピングテーブルの例である。 FPGAにコードがロード済みの場合のシーケンス図である。 FPGAにコードがロードされる場合のシーケンス図である。 FPGAにコードがロードされない場合のシーケンス図である。 情報処理装置(コンピュータ)のハードウェア図である。
以下、図面を参照しながら実施の形態について説明する。
図1は、実施の形態に係る情報処理装置の構成図である。
情報処理装置101は、処理部111、メモリ121、FPGA131−i(i=1,2)、およびフラッシュメモリ141を備える。情報処理装置101は、例えば、パーソナルコンピュータ(PC)やサーバ等のコンピュータである。
処理部111は、情報処理装置101全体を制御する処理装置である。処理部111は、ユーザアプリケーション142やOperating System(OS)143をメモリ121上に読み出して、種々の処理を実行する。処理部111は、アプリケーション部112、OS部113、リソースマネージャー115、およびTranslation Lookaside Buffer(TLB)116を備える。処理部111は、例えば、CPUである。
アプリケーション部112は、フラッシュメモリ141からユーザアプリケーション142をメモリ121上に読み出して、実行する。アプリケーション部112は、所定のコード145−kがFPGA131−iにロードされることにより構成される所定の回路を使用してある処理を行いたい場合、所定のコード145−kがFPGA131−iにロードされているかチェックする。アプリケーション部112は、所定のコード145−kに対応付けられた仮想アドレスに格納される値を読み出し、読み出した値に応じて、所定のコード145−kがFPGA131−iにロードされているか判定する。すなわちアプリケーション部112は、FPGA131−iを利用可能であるか(FPGA131−iを利用したハードウェア処理が可能か)判定する。例えば、アプリケーション部112は、所定のコード145−kに対応付けられた仮想アドレスから読み出した値が1の場合、所定のコード145−kがFPGA131−iにロードされている(FPGA131−iを利用可能)と判定する。また、アプリケーション部112は、所定のコード145−kに対応付けられた仮想アドレスから読み出した値が1の場合、所定のコード145−kがFPGA131−iにロードされていない(FPGA131−iを利用不可)と判定する。
OS部113は、フラッシュメモリ141からOS143をメモリ121上に読み出して、実行する。OS部113は、ページテーブル124の管理を行う。
OS部は、例外処理部114を備える。例外処理部144は、TLBのミスヒット時の例外処理を行う。例外処理部144は、TLBのミスヒット時にリソースマネージャー115を呼び出す。
リソースマネージャー115は、フラッシュメモリ141からリソース管理アプリケーション144をメモリ121上に読み出して、実行する。リソースマネージャー115は、FPGAリソーステーブル122を参照し、FPGA131−iの状況に応じて、FPGA131−iにコード145−kを書き込む。詳細には、リソースマネージャー115は、FPGA131−iに指示とコード145−kを送信し、FPGA131−iの制御部132−iは、受信したコード145−kをリージョン133−i−jにロードする。すなわち、制御部132−iは、受信したコード145−kで示される回路をリージョン133−i−jに構成する。また、リソースマネージャー115は、FPGAリソーステーブル123およびマッピングテーブル123の設定を行う。
TLB116は、仮想アドレスとメモリ121の物理アドレスとが対応付けられた情報を格納するキャッシュである。TLB116には、ページテーブル124の情報の一部が格納される。TLB116の検索は、ハードウェアにより実行される。
メモリ121は、情報処理装置101で使用されるプログラムやデータを一時的に格納する記憶装置である。メモリ121は、例えば、Dynamic Random Access Memory(DRAM)等である。メモリ121は、FPGAリソーステーブル122、マッピングテーブル123、およびページテーブル124を格納する。
FPGAリソーステーブル122は、FPGA131−iの使用状況などの状態が記載されたテーブルである。尚、FPGAリソーステーブル122の詳細は後述する。
マッピングテーブル123は、コード145−kと仮想アドレスとの対応関係が記載されたテーブルである。尚、マッピングテーブルの123の詳細は後述する。マッピングテーブル123は、リソースマネージャー115により設定され、コード145−kがフラッシュメモリ141に格納またはフラッシュメモリ141から削除されると、それに応じて更新される。各コード145−kに対応付けられる各仮想アドレスは、リソースマネージャー115により、重複しないように適当な値が設定される。
ページテーブル124は、仮想アドレスとメモリ121の物理アドレスとの対応関係が記載されたテーブルである。ページテーブル124は、OS143におけるページング方式の仮想記憶システムで使われる。ページテーブル124には、仮想アドレス空間を「ページ」と呼ばれる所定のサイズに分割した領域の仮想アドレスとメモリ121の物理アドレスとの対応関係が記載されている。尚、ページテーブル124の数は一例であり、これに限られるものではない。
FPGA131−iは、制御部132−iおよびリージョン133−i−j(j=1〜n)を備える。FPGA131−iは、再構成可能集積回路の一例である。
制御部132−iは、処理部111から指示とコード145−kを受信し、リージョン133−i−jに受信したコード145−kを書き込む(ロードする)。すなわち、制御部132−iは、受信したコード145−kで示される回路をリージョン133−i−jに構成する。上記処理は、コンフィグレーションとも呼ばれる。
リージョン133−i−jは、コード145−kで示される回路が構成される予め設定された領域である。制御部132−iは、リージョン133−i−jごとに書き換えが可能である。尚、リージョン133−i−jは、リージョン#jと表記する場合がある。
尚、FPGA131−iの数およびリージョン133−i−jの数は一例であり、これに限られるものではない。
フラッシュメモリ141は、情報処理装置101で使用されるプログラムやデータを格納する不揮発性の半導体記憶装置である。ユーザアプリケーション142、OS143、リソース管理アプリケーション144、およびコード145−k(k=1〜M)を格納する。
ユーザアプリケーション142は、ユーザが要求する処理を実行するプログラムである。
OS143は、情報処理装置101の制御、ページテーブル124の設定、および例外処理などを行うプログラムである。
リソース管理アプリケーション144は、FPGA131−iへのコード145−kの書き込みやFPGAリソーステーブル122の更新などの管理を行うプログラムである。
コード145−kは、FPGA131−iのリージョン132−i−jに構成される回路を示す情報である。以下、コード145−kは、コード#kと表記する場合がある。
図2は、FPGAリソーステーブルの例である。
FPGAリソーステーブル122は、項目として、ID、FPGA番号、リージョン番号、InUse、コード番号、およびプロセスIDを有し、これらが関連付けられて記載されている。
IDは、リージョン133−i−jに割り当てられた通し番号である。
FPGA番号は、FPGA131−iを識別する番号である。
リージョン番号は、リージョン133−i−jを識別する番号である。
InUseは、リージョン133−i−jが使用されているか否か、すなわち当該リージョン133−i−jにコード145−kがロードされているか否かを示す。“Yes”は使用中を示し、“No”は未使用であることを示す。すなわち、InUseが“No”である場合、対応するリージョン133−i−jにコード145−kをロードすることにより回路を構成して実行、すなわちハードウェア処理が可能であることを示す。
コード番号は、リージョン133−i−jにロードされているコード145−kを示す。実施の形態では、コード番号kはコード145−kを示す。
プロセスIDは、リージョン133−i−jにロードされているコード145−kにより構成された回路を使用しているOS143で使用されているプロセスのID(識別子)を示す。
リソースマネージャー115は、FPGAリソーステーブル122に含まれるプロセスIDが示すプロセスが動作中でない場合、InUseを“No”に設定する。また、リソースマネージャー115は、動作中でないプロセスIDに対応するプロセスに対応するコード番号に対応する仮想アドレスに対応する物理アドレスをTLB116から削除する。
図3は、マッピングテーブルの例である。
マッピングテーブル123は、項目として、コード番号およびアドレスを有し、これらが関連付けられて記載されている。
コード番号は、コード145−kを識別する番号である。実施の形態では、コード番号kはコード145−kを示す。
アドレスは、仮想アドレスを示す。
図4は、FPGAにコードがロード済みの場合のシーケンス図である。
図4では、ユーザアプリケーション142がある処理をコード#1を利用して実行する場合について説明する。また、コード#1に対応する仮想アドレス=0x0001000に対応するメモリ121の物理アドレス=0x1000008000には、1が格納されている。
アプリケーション部112は、コード#1に対応する仮想アドレスから情報を読み出すロード(LD)命令を発行する(ステップS501)。図3に示すように、コード#1に対応する仮想アドレスは、0x0001000である。
処理部111は、アプリケーション部112が発行した仮想アドレスに基づいて、TLB116を検索する(ステップS502)。ここでは、仮想アドレス=0x0001000に対応する物理アドレス=0x1000008000が検索結果として得られるとする(TLBヒット)。
メモリ121の物理アドレス=0x1000008000には、1が格納されおり、処理部111は、メモリ121から読みだした情報=1をアプリケーション部112に返す(ステップS503)。
アプリケーション部112は、戻り値として1を受信したので、FPGA131−iは利用可能であると判定する(ステップS504)。そして、アプリケーション部112は、コード#1に対応するFPGA関数をコールする(ステップS504)。すなわち、アプリケーション部112は、コード#1によりFPGA131−iに構成された回路を実行する。詳細には、アプリケーション部112は、コード#1により構成された回路を有するFPGA131−iに、当該回路の実行を指示する。
FPGA131−iは、コード#1により構成された回路を実行し、実行終了すると、コード#1により構成された回路の実行結果をアプリケーション部112に送信する(ステップS505)。
図5は、FPGAにコードがロードされる場合のシーケンス図である。
図5では、ユーザアプリケーション142がある処理をコード#2を利用して実行しようとする場合について説明する。
アプリケーション部112は、コード#1に対応する仮想アドレスから情報を読み出すロード(LD)命令を発行する(ステップS511)。図3に示すように、コード#2に対応する仮想アドレスは、0x0003000である。
処理部111は、アプリケーション部112が発行した仮想アドレスに基づいて、TLB116を検索する(ステップS512)。ここでは、仮想アドレス=0x0003000に対応する物理アドレスはTLBに格納されていないとする(TLBミス)。処理部111は、割り込みを発生させ、例外処理部114を呼び出す(ステップS512)。そして、例外処理部114は、リソースマネージャー115を呼び出す(ステップS513)。
リソースマネージャー115は、マッピングテーブル123を参照し、仮想アドレス=0x0003000に対応するコード番号=2を検出する(ステップS514)。リソースマネージャー115は、FPGAリソーステーブル122を参照し、未使用のリージョンを検索する(ステップS514)。ここでは、未使用のリージョンとしてID=2(FPGA番号=1、リージョン番号=2)に対応するリージョン(すなわちFPGA131−1のリージョン133−1−2)が検出されたとする。尚、未使用のリージョンが複数ある場合、例えば、未使用のリージョンのうちIDが最小のリージョンを検出する。リソースマネージャー115は、コード#2をFPGA131−1に送信し、リージョン133−1−2への書き込み(ロード)を指示する(ステップS514)。
FPGA131−1の制御部332−1は、リージョン133−1−2にコード#2を書き込む(ロードする)(ステップS515)。それにより、リージョン133−1−2には、コード#2で示される回路が構成される。制御部332−1は、書き込みが終了したらリソースマネージャー115にロードの完了を通知する(ステップS515)。
リソースマネージャー115は、ページテーブル124に仮想アドレス0x0003000を含むページと対応する物理アドレスを設定し、仮想アドレス0x0003000を含むページの仮想アドレスに対応するメモリ121の物理アドレスに1を書き込む。リソースマネージャー115は、1をアプリケーション部112に返す(ステップS516)。リソースマネージャー115は、TLB516に仮想アドレス0x0003000に対応する物理アドレスを登録する(ステップS516)。
アプリケーション部112は、戻り値として1を受信したので、FPGA131−iは利用可能であると判定する(ステップS517)。そして、アプリケーション部112は、コード#2に対応するFPGA関数をコールする(ステップS517)。すなわち、アプリケーション部112は、コード#2によりFPGA131−iに構成された回路を実行する。詳細には、アプリケーション部112は、コード#2により構成された回路を有するFPGA131−iに、当該回路の実行を指示する。
FPGA131−iは、コード#2により構成された回路を実行し、実行終了すると、コード#2により構成された回路の実行結果をアプリケーション部112に送信する(ステップS518)。
図6は、FPGAにコードがロードされない場合のシーケンス図である。
図6では、ユーザアプリケーション142がある処理をコード#2を利用して実行しようとする場合について説明する。
アプリケーション部112は、コード#2に対応する仮想アドレスから情報を読み出すロード(LD)命令を発行する(ステップS521)。図3に示すように、コード#2に対応する仮想アドレスは、0x0003000である。
処理部111は、アプリケーション部112が発行した仮想アドレスに基づいて、TLB116を検索する(ステップS522)。ここでは、仮想アドレス=0x0003000に対応する物理アドレスはTLBに格納されていないとする(TLBミス)。処理部111は、割り込みを発生させ、例外処理部114を呼び出す(ステップS522)。そして、例外処理部114は、リソースマネージャー115を呼び出す(ステップS523)。
リソースマネージャー115は、マッピングテーブル123を参照し、仮想アドレス=0x0003000に対応するコード番号=2を検出する(ステップS524)。リソースマネージャー115は、FPGAリソーステーブル122を参照し、未使用のリージョンを検索する(ステップS524)。ここでは、未使用のリージョンが検出されなかったとする。リソースマネージャー115は、ページテーブル124に仮想アドレス0x0003000を含むページの仮想アドレスと対応する物理アドレスを設定し、仮想アドレス0x0003000を含むページに対応するメモリ121の物理アドレスに0を書き込む。(ステップS524)。
アプリケーション部112は、戻り値として0を受信したので、FPGA131−iは利用不可であると判定する。そして、アプリケーション部112は、ある処理をFPGA131−iによるハードウェア処理を用いずに、ソフトウェア処理により実行する。すなわち、アプリケーション部112は、コード#2により構成される回路が実行する処理(ハードウェア処理)と同等の処理をソフトウェアにより自身で実行する。これにより、コード#2により構成される回路を使用した場合と同等の処理結果が得られるが、ソフトウェア処理のため、コード#2により構成される回路を使用した場合よりも時間がかかる。
実施の形態に係る情報処理装置によれば、FPGAが利用可能かの判定結果をTLBの検索の結果と連動させており、TLBの検索は通常アクセスでもLD命令ごとに行われるため、ヒット時のオーバーヘッドは無くなる。
実施の形態に係る情報処理装置によれば、FPGAが利用可能かをチェックするためのオーバーヘッドを小さくすることが出来る。
FPGAのリソースを複数のユーザアプリケーションで共有して使う場合、リソース待ちが発生すると、FPGAを使ったハードウェア処理を行うより、CPU(処理部)によるソフトウェア処理の方が速い場合がある。
実施の形態に係る情報処理装置によれば、FPGAの利用状況に応じて、FPGAによるハードウェア処理を使うかCPUによるソフトウェア処理を使うか判断できる。
図7は、情報処理装置(コンピュータ)のハードウェア図である。
実施の形態の情報処理装置101は、例えば、図7に示すような情報処理装置(コンピュータ)1によって実現可能である。
情報処理装置1は、CPU2、メモリ3、入力装置4、出力装置5、フラッシュメモリ6、記録媒体駆動部7、及びFPGA8−iを備え、それらはバスにより互いに接続されている。
CPU2は、情報処理装置1全体を制御する中央処理装置である。CPU2は、コア11、キャッシュ12、メモリコントローラ13、I/Oハブ14を備える。コア11は、各種処理を行う演算装置である。コア11は、アプリケーション部112、OS部113、およびリソースマネージャー115として動作する。
メモリ3は、プログラム実行の際に、フラッシュメモリ6(あるいは可搬記録媒体10)に記憶されているプログラムあるいはデータを一時的に格納するRead Only Memory(ROM)やRandom Access Memory(RAM)等のメモリである。CPU2は、メモリ3を利用してプログラムを実行することにより、上述した各種処理を実行する。メモリ3は、メモリ121に対応する。
この場合、可搬記録媒体10等から読み出されたプログラムコード自体が実施の形態の機能を実現する。
入力装置4は、ユーザ又はオペレータからの指示や情報の入力、情報処理装置1で用いられるデータの取得等に用いられる。入力装置4は、例えば、キーボード、マウス、タッチパネル、カメラ、またはセンサ等である。
出力装置5は、ユーザ又はオペレータへの問い合わせや処理結果を出力したり、CPU2による制御により動作する装置である。出力装置5は、例えば、ディスプレイ、またはプリンタ等である。
フラッシュメモリ6は、プログラムやデータを記憶する記憶装置である。情報処理装置1は、フラッシュメモリ6に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ3に読み出して使用する。フラッシュメモリ6は、フラッシュメモリ141に対応する。フラッシュメモリ6は、例えば、磁気ディスク装置、光ディスク装置、テープ装置等でもよい。
記録媒体駆動部7は、可搬記録媒体10を駆動し、その記録内容にアクセスする。可搬記録媒体としては、メモリカード、フレキシブルディスク、Compact Disk Read Only Memory(CD−ROM)、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。ユーザは、この可搬記録媒体10に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ3に読み出して使用する。
FPGA8−iは、再構成可能な集積回路である。FPGA8−iは、FPGA131−iに対応する。FPGA8−1は、Staticモジュール16とリージョン17−jを備える。Staticモジュール16は、制御部132−1に対応する。リージョン17−jはリージョン133−i−jに対応する。FPGA8−2もFPGA8−1と同様の構成である。
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1)
回路の構成を示すコードがロードされることにより前記回路が構成される再構成可能集積回路と、
前記再構成可能集積回路にコードがロードされていることを示す情報と、前記再構成可能集積回路内で回路が構成可能な未使用領域を示すリソース情報と、を記憶するメモリと、
所定のコードに対応付けられた所定の仮想アドレスから情報を読み出す命令を発行し、前記命令に基づいて、コードに対応付けられた仮想アドレスと前記メモリの物理アドレスとが対応付けられたトランスレーション・ルックアサイド・バッファ(TLB)を検索し、前記所定の仮想アドレスが前記TLBにヒットしたとき、前記所定のコードがロードされていると判定し、前記所定の仮想アドレスが前記TLBにヒットしなかったとき、前記リソース情報が示す前記未使用領域に、前記所定のコードが示す所定の回路を構成する処理部と、
を備える情報処理装置。
(付記2)
前記処理部は、前記所定の回路を前記未使用領域に構成したとき、前記所定の仮想アドレスに対応する前記メモリの物理アドレスを前記TLBに設定し、前記所定の仮想アドレスに対応する前記メモリの物理アドレスに、前記所定のコードがロードされていることを示す情報を書き込むことを特徴とする付記1記載の情報処理装置。
(付記3)
前記処理部は、前記所定の回路を前記未使用領域に構成したとき、前記所定のコードがロードされていることを示す情報を取得し、前記所定の回路を実行することを特徴とする付記2記載の情報処理装置。
(付記4)
前記処理部は、前記所定の仮想アドレスが前記TLBにヒットしなかったとき、前記再構成可能集積回路内に前記未使用領域がない場合、前記所定の回路が実行する処理と同等の処理を前記処理部により実行することを特徴とする付記1記載の情報処理装置。
(付記5)
回路の構成を示すコードがロードされることにより前記回路が構成される再構成可能集積回路と、前記再構成可能集積回路にコードがロードされていることを示す情報と、前記再構成可能集積回路内で回路が構成可能な未使用領域を示すリソース情報と、を記憶するメモリと、を備える情報処理装置が実行する情報処理方法であって、
所定のコードに対応付けられた所定の仮想アドレスから情報を読み出す命令を発行し、
前記命令に基づいて、コードに対応付けられた仮想アドレスと前記メモリの物理アドレスとが対応付けられたトランスレーション・ルックアサイド・バッファ(TLB)を検索し、
前記所定の仮想アドレスが前記TLBにヒットした場合、前記所定のコードがロードされていると判定し、
前記所定の仮想アドレスが前記TLBにヒットしなかった場合、前記リソース情報が示す前記未使用領域に、前記所定のコードが示す所定の回路を構成する
処理を備える情報処理方法。
(付記6)
前記所定の回路を前記未使用領域に構成したとき、前記所定の仮想アドレスに対応する前記メモリの物理アドレスを前記TLBに設定し、前記所定の仮想アドレスに対応する前記メモリの物理アドレスに、前記所定のコードがロードされていることを示す情報を書き込む処理をさらに備える付記5記載の情報処理方法。
(付記7)
前記所定の回路を前記未使用領域に構成したとき、前記所定のコードがロードされていることを示す情報を取得し、前記所定の回路を実行する処理をさらに備える付記6記載の情報処理方法。
(付記8)
前記所定の仮想アドレスが前記TLBにヒットしなかったとき、前記再構成可能集積回路内に前記未使用領域がない場合、前記所定の回路が実行する処理と同等の処理を処理部により実行する処理をさらに備える付記4記載の情報処理方法。
(付記9)
回路の構成を示すコードがロードされることにより前記回路が構成される再構成可能集積回路と、前記再構成可能集積回路にコードがロードされていることを示す情報と、前記再構成可能集積回路内で回路が構成可能な未使用領域を示すリソース情報と、を記憶するメモリと、を備えるコンピュータに、
所定のコードに対応付けられた所定の仮想アドレスから情報を読み出す命令を発行し、
前記命令に基づいて、コードに対応付けられた仮想アドレスと前記メモリの物理アドレスとが対応付けられたトランスレーション・ルックアサイド・バッファ(TLB)を検索し、
前記所定の仮想アドレスが前記TLBにヒットした場合、前記所定のコードがロードされていると判定し、
前記所定の仮想アドレスが前記TLBにヒットしなかった場合、前記リソース情報が示す前記未使用領域に、前記所定のコードが示す所定の回路を構成する
処理を実行させるプログラム。
(付記10)
前記所定の回路を前記未使用領域に構成したとき、前記所定の仮想アドレスに対応する前記メモリの物理アドレスを前記TLBに設定し、前記所定の仮想アドレスに対応する前記メモリの物理アドレスに、前記所定のコードがロードされていることを示す情報を書き込む処理をさらに備える付記9記載の情報処理方法。
(付記11)
前記所定の回路を前記未使用領域に構成したとき、前記所定のコードがロードされていることを示す情報を取得し、前記所定の回路を実行する処理をさらに備える付記10記載の情報処理方法。
(付記12)
前記所定の仮想アドレスが前記TLBにヒットしなかったとき、前記再構成可能集積回路内に前記未使用領域がない場合、前記所定の回路が実行する処理と同等の処理を処理部により実行する処理をさらに備える付記5記載のプログラム。
101 情報処理装置
111 処理部
112 アプリケーション部
113 OS部
114 例外処理部
115 リソースマネージャー
116 TLB
121 メモリ
122 FPGAリソーステーブル
123 マッピングテーブル
124 ページテーブル
131 FPGA
132 制御部
133 リージョン
141 フラッシュメモリ
142 ユーザアプリケーション
143 OS
144 リソース管理アプリケーション
145 コード

Claims (6)

  1. 回路の構成を示すコードがロードされることにより前記回路が構成される再構成可能集積回路と、
    前記再構成可能集積回路にコードがロードされていることを示す情報と、前記再構成可能集積回路内で回路が構成可能な未使用領域を示すリソース情報と、を記憶するメモリと、
    所定のコードに対応付けられた所定の仮想アドレスから情報を読み出す命令を発行し、前記命令に基づいて、コードに対応付けられた仮想アドレスと前記メモリの物理アドレスとが対応付けられたトランスレーション・ルックアサイド・バッファ(TLB)を検索し、前記所定の仮想アドレスが前記TLBにヒットしたとき、前記所定のコードがロードされていると判定し、前記所定の仮想アドレスが前記TLBにヒットしなかったとき、前記リソース情報が示す前記未使用領域に、前記所定のコードが示す所定の回路を構成する処理部と、
    を備える情報処理装置。
  2. 前記処理部は、前記所定の回路を前記未使用領域に構成したとき、前記所定の仮想アドレスに対応する前記メモリの物理アドレスを前記TLBに設定し、前記所定の仮想アドレスに対応する前記メモリの物理アドレスに、前記所定のコードがロードされていることを示す情報を書き込むことを特徴とする請求項1記載の情報処理装置。
  3. 前記処理部は、前記所定の回路を前記未使用領域に構成したとき、前記所定のコードがロードされていることを示す情報を取得し、前記所定の回路を実行することを特徴とする請求項2記載の情報処理装置。
  4. 前記処理部は、前記所定の仮想アドレスが前記TLBにヒットしなかったとき、前記再構成可能集積回路内に前記未使用領域がない場合、前記所定の回路が実行する処理と同等の処理を前記処理部により実行することを特徴とする請求項1記載の情報処理装置。
  5. 回路の構成を示すコードがロードされることにより前記回路が構成される再構成可能集積回路と、前記再構成可能集積回路にコードがロードされていることを示す情報と、前記再構成可能集積回路内で回路が構成可能な未使用領域を示すリソース情報と、を記憶するメモリと、を備える情報処理装置が実行する情報処理方法であって、
    所定のコードに対応付けられた所定の仮想アドレスから情報を読み出す命令を発行し、
    前記命令に基づいて、コードに対応付けられた仮想アドレスと前記メモリの物理アドレスとが対応付けられたトランスレーション・ルックアサイド・バッファ(TLB)を検索し、
    前記所定の仮想アドレスが前記TLBにヒットした場合、前記所定のコードがロードされていると判定し、
    前記所定の仮想アドレスが前記TLBにヒットしなかった場合、前記リソース情報が示す前記未使用領域に、前記所定のコードが示す所定の回路を構成する
    処理を備える情報処理方法。
  6. 回路の構成を示すコードがロードされることにより前記回路が構成される再構成可能集積回路と、前記再構成可能集積回路にコードがロードされていることを示す情報と、前記再構成可能集積回路内で回路が構成可能な未使用領域を示すリソース情報と、を記憶するメモリと、を備えるコンピュータに、
    所定のコードに対応付けられた所定の仮想アドレスから情報を読み出す命令を発行し、
    前記命令に基づいて、コードに対応付けられた仮想アドレスと前記メモリの物理アドレスとが対応付けられたトランスレーション・ルックアサイド・バッファ(TLB)を検索し、
    前記所定の仮想アドレスが前記TLBにヒットした場合、前記所定のコードがロードされていると判定し、
    前記所定の仮想アドレスが前記TLBにヒットしなかった場合、前記リソース情報が示す前記未使用領域に、前記所定のコードが示す所定の回路を構成する
    処理を実行させるプログラム。
JP2016112044A 2016-06-03 2016-06-03 情報処理装置、情報処理方法、およびプログラム Active JP6740719B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016112044A JP6740719B2 (ja) 2016-06-03 2016-06-03 情報処理装置、情報処理方法、およびプログラム
US15/453,131 US10176112B2 (en) 2016-06-03 2017-03-08 Information processing device, method, and non-transitory computer-readable recording medium storing information processing program for loading code into reconfigurable integrated circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016112044A JP6740719B2 (ja) 2016-06-03 2016-06-03 情報処理装置、情報処理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2017219931A true JP2017219931A (ja) 2017-12-14
JP6740719B2 JP6740719B2 (ja) 2020-08-19

Family

ID=60483335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016112044A Active JP6740719B2 (ja) 2016-06-03 2016-06-03 情報処理装置、情報処理方法、およびプログラム

Country Status (2)

Country Link
US (1) US10176112B2 (ja)
JP (1) JP6740719B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108319563B (zh) * 2018-01-08 2020-01-03 华中科技大学 一种基于fpga的网络功能加速方法和系统
US11410027B2 (en) * 2019-09-16 2022-08-09 SambaNova Systems, Inc. Performance estimation-based resource allocation for reconfigurable architectures

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542077A (en) * 1993-09-10 1996-07-30 Compaq Computer Corporation Personal computer with CMOS memory not having a separate battery
WO2004001605A1 (en) * 2002-06-19 2003-12-31 Tokyo Electron Device Limited Memory device, memory managing method and program
JP3900499B2 (ja) 2004-10-27 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置
US7873830B2 (en) * 2006-01-13 2011-01-18 International Business Machines Corporation Methods for coordinating access to memory from at least two cryptography secure processing units
EP2159706B1 (en) * 2007-06-19 2014-09-10 Fujitsu Limited Operation processing apparatus and operation processing method
US9936333B2 (en) * 2010-08-10 2018-04-03 Microsoft Technology Licensing, Llc Location and contextual-based mobile application promotion and delivery
JP5653865B2 (ja) 2011-08-23 2015-01-14 日本電信電話株式会社 データ処理システム

Also Published As

Publication number Publication date
US20170351617A1 (en) 2017-12-07
US10176112B2 (en) 2019-01-08
JP6740719B2 (ja) 2020-08-19

Similar Documents

Publication Publication Date Title
US11030126B2 (en) Techniques for managing access to hardware accelerator memory
JP6066250B2 (ja) マルチコア異種システム変換のルックアサイドバッファコヒーレンシ
US9218302B2 (en) Page table management
JP5914145B2 (ja) メモリ保護回路、処理装置、およびメモリ保護方法
US20170277903A1 (en) Data Protection Using Virtual Resource Views
EP2972898B1 (en) Externally programmable memory management unit
JP7096840B2 (ja) 能力メタデータを管理するための装置及び方法
JP5778296B2 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
JP6740719B2 (ja) 情報処理装置、情報処理方法、およびプログラム
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
KR102130813B1 (ko) 재구성 가능 프로세서 및 재구성 가능 프로세서를 동작하는 방법
US9507724B2 (en) Memory access processing method and information processing device
US9513824B2 (en) Control method, control device, and recording medium
EP3136245B1 (en) Computer
CN112654965A (zh) 动态模块的外部分页和交换
US20080072009A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
CN112286839A (zh) 低开销的转换后备缓冲器下拉
JP5471677B2 (ja) 仮想ディスク制御システム、方法及びプログラム
CN104166633B (zh) 用于存储器访问保护的方法和系统
US20210191641A1 (en) Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200219

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20200219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200623

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200706

R150 Certificate of patent or registration of utility model

Ref document number: 6740719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150