JP2018018198A - プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置 - Google Patents

プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置 Download PDF

Info

Publication number
JP2018018198A
JP2018018198A JP2016146197A JP2016146197A JP2018018198A JP 2018018198 A JP2018018198 A JP 2018018198A JP 2016146197 A JP2016146197 A JP 2016146197A JP 2016146197 A JP2016146197 A JP 2016146197A JP 2018018198 A JP2018018198 A JP 2018018198A
Authority
JP
Japan
Prior art keywords
logic circuit
logic
pld
circuit
save
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
JP2016146197A
Other languages
English (en)
Other versions
JP6694138B2 (ja
Inventor
秀敏 松村
Hidetoshi Matsumura
秀敏 松村
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 JP2016146197A priority Critical patent/JP6694138B2/ja
Priority to US15/647,858 priority patent/US10289787B2/en
Publication of JP2018018198A publication Critical patent/JP2018018198A/ja
Application granted granted Critical
Publication of JP6694138B2 publication Critical patent/JP6694138B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Microcomputers (AREA)

Abstract

【課題】PLD内に構成する論理回路を入れ替える処理を効率よく行う。
【解決手段】プログラマブルロジックデバイス(以下PLD)内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、複数の領域内に構成済みの複数の第1の論理回路と、構成要求により新たに構成される第2の論理回路の合計サイズまたは個数が、複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、第1の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、第2の論理回路に置換される置換対象の論理回路を前記複数の第1の論理回路から選択する、処理をコンピュータに実行させるPLD制御プログラム。
【選択図】図11

Description

本発明は,プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置に関する。
プログラマブルロジックデバイス(Programmable Logic Device, PLD)は、予め複数の論理回路要素、メモリ回路要素、配線、スイッチ等が形成された集積回路装置に、所定の処理を実行可能な回路を構成するための構成データが設定または書込まれると、所定の処理を実行可能な回路を再構成する。PLDに接続されたプロセッサなどの制御回路は、所定の処理をハードウエアの専用回路で実行するとき、専用回路を構成するための構成データをPLDに設定または書込みPLD内に専用回路を構成し、その専用回路に所定の処理を実行させる。このようなPLDは、例えばFPGA(Field Programmable Gate Array)など、構成データを書き換えることで内部の回路を様々な論理回路に再構成可能なLSIである。
制御回路は、あるタスクの処理を実行するとき、そのタスクの処理を実行する論理回路をPLD内に構成し、そのタスクの処理が終了後、異なるタスクの処理を実行するとき、PLD内にその異なるタスクの処理を実行する異なる論理回路を再構成する。PLDは、複数のタスクの処理をそれぞれ実行する複数の論理回路に再構成できるので、実行可能な処理についてソフトウエアのような柔軟性を有し、且つ複数のタスクの処理を専用の論理回路で高速に実行できる。
PLDについては以下の特許文献に開示されている。
特開2010−2986号公報 特開2006−333496号公報 特開2004−21426号公報 特開平11−184718号公報
PLDにおいて、プログラマブル論理回路群の一部の第1の領域に第1の論理回路の構成データを設定してその回路を構成し、第1の領域とは異なる第2の領域に第2の論理回路の構成データを設定してその回路を構成し、且つ、第1、第2の論理回路を独立に構成、実行、変更することが提案されている。
そのため、今後、プロセッサとPLDを混載した情報処理装置が、現在のサーバのように汎用の計算能力を提供することが予測される。その場合、単一のCPUが複数のタスクを時分割で実行するように、単一のPLDにおいて複数のタスクをそれぞれ処理する複数の論理回路が非同期で構成され動作する。複数の論理回路が非同期で構成され動作する場合、全タスクの論理回路数がPLD内のプログラマブル論理回路群の回路リソースを超えた場合、PDL内の論理回路を入れ替えながら時分割にタスクの処理を行うことになる。
そこで,本発明の目的は,PLD内に構成する論理回路を入れ替える処理を効率よく行うプログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置を提供することにある。
本開示の第1の側面は,プログラマブルロジックデバイス(以下PLD)内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、前記複数の領域内に構成済みの複数の第1の論理回路と、前記構成要求により新たに構成される第2の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第1の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第2の論理回路に置換される置換対象の論理回路を前記複数の第1の論理回路から選択する、処理をコンピュータに実行させるコンピュータ読み取り可能なPLD制御プログラムである。
第1の側面によれば,PLD内に構成する論理回路を入れ替える処理を効率よく行うことができる。
本実施の形態におけるPLDを有する情報処理装置の構成を示す図である。 本実施の形態におけるPLDの概略的な構成を示す図である。 本実施の形態におけるPLDを有する情報記憶装置であるサーバの動作の概略を示すフローチャート図である。 PLD内の再構成領域R_REGの構成例を示す図である。 PLD内の再構成領域R_REGに論理的に配置された部分再構成領域PRRの一例を示す図である。 本実施の形態における部分再構成領域内のユーザ回路(論理回路)の一例を示す図である。 状態データの退避と復元が必要なラッチ回路FF0,FF2と状態フリップフロップS_FFの構成を示す図である。 状態データの退避と復元が必要なメモリ回路SRAMの構成を示す図である。 各論理回路に固定の退避復元時間を予め決定する場合の論理回路と退避復元時間(S/R時間)の例を示す図である。 状態FF値-時間情報変換テーブルの一例を示す図である。 本実施の形態におけるCPUによる第1の論理回路の置換処理を示すフローチャート図である。 本実施の形態におけるCPUによる第2の論理回路の置換処理を示すフローチャート図である。 本実施の形態におけるCPUによる第3の論理回路の置換処理を示すフローチャート図である。 CPUが管理するPRR管理テーブルの一例を示す図である。 第1〜第3の論理回路の置換処理の具体例を示す図表である。
[PLDを有する情報処理装置の構成と動作]
図1は、本実施の形態におけるPLDを有する情報処理装置の構成を示す図である。情報処理装置10は、例えばサーバなどのコンピュータであり、CPU(Central Processing Unit)11と、DRAMなどのメインメモリ12と、キーボードや表示装置に接続される入出力ユニット13と、ネットワークNETに接続されるNIC(Network Interface Card)14と、FPGAなどのPLD15と、HDD、SSDなどの補助記憶装置16とを有し、それらはバスBUSを介して接続される。
補助記憶装置16内には、OS(Operating System)、アプリケーションプログラムAPL、その他図示しないミドルウエアプログラムが記憶され、これらは情報処理装置の起動時にメインメモリ12に展開され、CPUにより実行される。また、補助記憶装置16内には、PLDに構成される各論理回路を構成するための構成データCDATAのリストと、各論理回路内の状態データを退避(Save)及び復元(Restore)するために必要な退避復元時間S/R_Tと、一時的にPLDから削除された論理回路の退避データSDATAが記憶される。これらのデータCDATA、S/R_T、SDATAは、コンピュータが動作中、メインメモリ12内にも記憶され、CPUにより参照される。
CPUが、PLD内に所定の処理を実行する論理回路を構成するために、その論理回路の構成データCDATAをPLDに設定または書き込むと、PLD内に論理回路が構成される。そして、論理回路が所定の処理を実行する。
図2は、本実施の形態におけるPLDの概略的な構成を示す図である。PLD15は、コンピュータのバスBUSとのインターフェースを行うバスインターフェース回路BUS_IFと、構成データ書込制御回路151と、構成データが書き込まれる構成データメモリCRAMと、書き込まれた構成データにより種々の論理回路が再構成される再構成領域R_REGとを有する。
再構成領域R_REGには、図示しないが、複数の論理回路要素、メモリ回路要素、配線、スイッチ等が形成される。また、再構成領域R_REGは、論理的にまたは物理的に複数の部分再構成領域PRRに区分される。そして、再構成される論理回路は、各部分再構成領域に収容できる回路ブロックを配置単位として、各部分再構成領域に構成される。したがって、例えば、構成データメモリCRAMは、複数の部分再構成領域PRRに対応して複数の記憶領域に区分され、各記憶領域に構成データCDATAが書き込まれると、その記憶領域に対応する部分再構成領域に論理回路が構成される。
さらに、あるタスクを処理する論理回路が複数の部分再構成領域に分割して構成される場合、複数の部分再構成領域に対応する記憶領域に各論理回路の構成データが書き込まれ、それにより構成される複数の論理回路により前述のタスクの処理が実行される。
再構成領域R_REG内の複数の部分再構成領域PRRについては、後で具体例を示す。
図3は、本実施の形態におけるPLDを有する情報記憶装置であるサーバの動作の概略を示すフローチャート図である。ここでは一例として、CPUが実行するOSのタスク管理モジュールがタスクの切り替えを検出すると、必要に応じてPLD内に新たなタスクを処理する論理回路を構成するものとする。また、簡単のために、全てのタスクはPLD内の論理回路により処理されるものとする。但し、別のイベントに応じて、CPUがPLD内に新たな論理回路を構成するようにしてもよい。また、タスクの一部をPLD内の論理回路が処理するようにしても良い。
まず、CPUにより実行されるOSのタスク管理モジュールがタスクの切り替えを検出すると(S10のYES)、CPUはタスク管理モジュールを実行して、新タスクを実行する論理回路をPLD内に構成することが必要か否か判定する(S11)。つまり、PLD内に既に新タスクの論理回路が構成済みであり動作停止中であれば、新たに論理回路をPLD内に構成する必要はない。しかし、PLD内に新タスクの論理回路が構成されていない場合や、論理回路が構成済みでも動作中の場合、新たに論理回路をPLD内に構成する必要がある。
新たに論理回路をPLD内に構成する必要がある場合(S11のYES)、CPUはタスク管理モジュールを実行して、PLD内に構成済みの論理回路のいずれかを、新タスクの論理回路に置換することが必要か否か判定する(S12)。つまり、前述したとおりPLD内の再構成領域R_REGでは、複数の部分再構成領域PRRに収納可能な回路ブロックの単位で論理回路がそれぞれ構成される。したがって、複数の部分再構成領域PRR全てに論理回路が既に構成済みの場合、新タスクの論理回路を構成するためには、構成済みの論理回路のいずれかを新論理回路に置き換えることが必要になる。言い換えると、既に論理回路が構成されている部分再構成領域の数と、新たに構成する論理回路が構成される部分再構成領域の数の合計数が、部分再構成領域の総数を超えている場合、論理回路が構成済みの部分再構成領域PRRのいずれかの旧論理回路を新論理回路に置き換えることが必要になる。
このことは、構成済みの論理回路と新論理回路の合計サイズが、複数の部分再構成領域全てで構成可能な論理回路のサイズを超えている場合、いずれかの部分構成領域内の構成済み論理回路を、新論理回路に置き換えることが必要になることを意味する。複数の部分再構成領域は、好ましくは均一の回路サイズを有するが、異なる回路サイズを有する場合は、部分再構成領域の数よりも、新論理回路の回路サイズに基づいて置換が必要か否かが判断される。
そこで、置換えが必要な場合(S12のYES)、CPUはタスク管理モジュールを実行して、置換対象の構成済み論理回路(旧論理回路)を構成する部分再構成領域を選択し、置換対象の旧論理回路内の状態データをメインメモリ12に退避する(S13)。
そして、旧論理回路内の状態データを退避(S13)した後、CPUは、新タスクの論理回路の構成データを、構成データメモリCRAM内の選択した部分再構成領域に対応する領域に書込み、置換対象の旧論理回路が構成されていた部分再構成領域に新タスクの新論理回路を構成する(S14)。または、PLD内に十分な空き部分再構成領域が存在していた場合(S12のNO)、CPUは、構成データを構成データメモリに書込み、空き部分再構成領域に新論理回路を構成する(S14)。
そして、この新論理回路が動作再開の場合、以前動作停止した時に退避した状態データを新論理回路内に復元する(S14)。動作再開でない場合、新論理回路には構成データにより初期値が設定される。
新論理回路の動作再開準備または新たな動作開始準備が整ったところで、CPUは新論理回路の動作を開始する(S15)。具体的には、新論理回路内の状態制御回路に動作開始を指示する。タスク切り替えが検出されたときに、新タスクの論理回路が既にPLD内に構成済みで且つ動作停止中だった場合も(S11のNO)、CPUは新論理回路の動作を開始する(S15)。
上記の工程S10〜S15が繰り返されることで、CPUが複数のタスクを時分割で実行するのと同様に、PLD上に非同期で構成された複数の論理回路が非同期で動作する。また、PLD内の再構成可能な領域に限りがあるので、構成済みの旧論理回路と新たに構成する新論理回路の総数が、PLD内に構成可能な論理回路の総数(つまり部分再構成領域PRRの総数)を超える場合、CPUは、PLD内の部分再構成領域内の論理回路を入れ替えながら、必要なタスクの論理回路を動作させる。さらに、PLD内に構成された論理回路が動作を停止または中断した場合、新たな論理回路の構成のために論理回路を置き換えられる必要がない間は、その構成済み論理回路はPLD内に維持され、回路の状態データの退避処理は行われない。
このように、PLDが複数の論理回路を非同期で構成し動作させる場合、PLD内の再構成領域が構成済み論理回路で一杯になると、新たに論理回路を構成するために、ある再構成領域内の構成済みの旧論理回路を新たな論理回路に置き換える必要がある。このような制御は、あたかもキャッシュメモリ内のキャッシュブロックの置き換え制御と類似する。但し、PLDの場合、論理回路の置き換え処理には、論理回路の構成データの書き換えという点でキャッシュメモリと類似するが、旧論理回路の状態データの退避と新論理回路の状態データの復元という点では、キャッシュメモリと異なる。
[PLD内の複数の部分再構成領域]
図4は、PLD内の再構成領域R_REGの構成例を示す図である。再構成領域R_REGには、行列状に配置され構成データにより所定の論理回路に再構成される論理回路ブロックLG_Bと、その論理回路ブロックLG_Bの周囲に縦方向と横方向に配置された信号線群SGとを有する。さらに、縦方向と横方向の信号線群SGの交差位置に設けられ構成データによって導通または非導通にされる複数のスイッチを有するスイッチボックスSBと、各信号線群SGの各信号と論理回路ブロックLG_Bの入出力端子との間に設けられた複数のスイッチを有するコネクションCNとを有する。コネクションCNのスイッチも構成データで導通または非導通に設定される。
さらに、再構成領域R_REGの周囲には、PLDのバスインターフェースBUS_IFと接続される複数の入出力回路IOが配置され、これらの入出力回路IOもコネクションCN内のスイッチを介して信号線群SGの信号と接続される。また、一部の論理回路ブロックLG_Bには、例えばSRAMであるメモリブロックが配置される場合もある。
そして、論理回路ブロックLG_Bが構成データによりある論理回路に再構成され、スイッチボックスSBやコネクションCN内のスイッチが構成データによりある接続配線に再構成され、その結果、ある論理回路が再構成される。
図5は、PLD内の再構成領域R_REGに論理的に配置された部分再構成領域PRRの一例を示す図である。図5では、一例として、再構成領域R_REG内に4つの部分再構成領域PRRが配置される。4つの部分再構成領域PRR以外の領域は、共通回路領域として利用される。
図4で示したとおり、再構成領域R_REGには、論理回路ブロックLG_Bと信号線群SGとスイッチボックスSBとコネクションCNとが連続してフラットに配置される。したがって、図4の再配置領域R_REGには複数の部分再構成領域を区別する物理的な構成はない。
一方、図5のPLDには、再構成領域R_REG内の例えば3行3列の合計9個の論理回路ブロック(またはメモリブロック)LG_Bを有する領域が、部分再構成領域PRRとして論理的に設定される。
例えば、図2に示した構成データ書込制御回路151が、CPUからあるタスクに対応する論理回路の構成データの書込要求を受信すると、まだ論理回路が構成されていない部分再構成領域に対応する構成データメモリCRAM内の記憶領域に、受信した構成データを書き込む。その結果、その部分再構成領域には、書き込んだ構成データに基づいて対応する論理回路が構成される。したがって、構成データ書込制御回路151が、再構成領域R_REG内を論理的に区分した複数の部分再構成領域PRRに対して、書き込み要求に応答し、論理回路が構成されていない部分構成領域を選択し、その選択した部分構成領域に対応する記憶領域に、入力された構成データを書き込む。
もちろん、図示しないが、再配置領域R_REGには複数の部分再構成領域PRRを区別する物理的な構成が形成されてもよい。その場合、PLDは、固定されたサイズと位置に複数の部分再構成領域PRRを有する。
[再構成される論理回路の退避及び復元回路例]
図6は、本実施の形態における部分再構成領域内のユーザ回路(論理回路)の一例を示す図である。図3において説明したとおり、PLD内の再構成領域R_REGには複数の論理回路が非同期で構成され非同期で動作する。そのため、再構成領域R_REG内の複数の部分再構成領域PRRに、様々な論理回路が互いに置換されながら構成される。論理回路の置換処理において、置換される旧論理回路内の状態データがメインメモリに退避され、新論理回路の構成データが書き込まれ、新論理回路が動作再開の場合新論理回路の状態データが復元される。そのため、ユーザ回路には状態データの退避と復元が可能な回路構成が含まれる。
図6において、部分再構成領域PRR内には、タスクを処理する論理回路20と、その論理回路20の状態を制御するステートマシン回路24と、論理回路20のデータの外部とのインターフェースであるデータインターフェース回路21と、論理回路20やステートマシン回路24内のレジスタと外部とのインターフェースであるレジスタインターフェース回路25とが構成されている。
論理回路20は、複数の組み合わせ回路CC1,CC2と、組み合わせ回路の前後及び間に配置されるフリップフロップなどのラッチ回路FF0,FF1,FF2と、SRAMなどのメモリ回路SRAMとを有する。図6の例では、組み合わせ回路CC1がアドレスADDR、ライトデータWDATA、ライトイネーブル信号WEN、リードイネーブル信号RENをメモリ回路SRAMに入力し、メモリ回路が内部クロックCLKに同期して動作し、リードデータRDATAを別の組み合わせ回路CC2に出力する。
一方、ステートマシン回路24は、ステートマシンの組み合わせ回路CC3と、その出力をラッチし再度組み合わせ回路CC3にラッチデータを入力する状態フリップフロップS_FFとを有する。ラッチ回路や状態フリップフロップは、内部クロックCLKに同期してラッチ動作する。
また、レジスタインターフェース回路25は、内部のレジスタの出力を選択してレジスタのデータを外部に出力するセレクタSELと、外部から入力されるレジスタアドレスRG_ADDをデコードして内部のレジスタに選択信号を供給するアドレスデコーダADD_DECとを有する。さらに、レジスタインターフェース回路25では、外部からレジスタアドレスRG_ADD、レジスタライトイネーブルRG_WEN、レジスタライトデータRG_WDATAを入力し、レジスタリードデータRG_RDATAを出力する。このように、レジスタインターフェース回路を介して、外部から内部のレジスタにデータを設定することができ、内部のレジスタのデータを外部に出力できる。
[論理回路の置き換えに伴う状態データの退避と復元]
次に、論理回路の置換に伴う状態データの退避と復元を行う回路について説明する。論理回路の置換に伴って退避及び復元される状態データは、論理回路内の所定のラッチ回路FFにラッチされているデータやメモリ回路SRAMに記憶されているデータであり、各論理回路に依存するとともに、各論理回路の動作状態にも依存するデータである。
一例として、図6の論理回路20では、ラッチ回路FF0,FF2とメモリ回路SRAMがデータの退避と復元が必要であり、ステートマシン24では状態データを保持する状態フリップフロップS_FFがデータの退避と復元が必要である。
そこで、ユーザ回路には、状態データの退避及び復元の制御を行う退避復元制御回路30と、データインターフェース回路21のデータ信号線22または退避復元制御回路30のデータ信号線37を切り替え信号36に応じて切り替えて外部データ端子23に接続するデータインターフェース切替回路31と、退避復元制御回路30に退避または復元の指示をする退避復元指示信号を生成する退避復元指示信号発生回路32とが含まれる。また、ステートマシン回路24の状態フリップフロップS_FFの状態データ34を退避復元時間情報35に変換する状態データ・退避復元時間変換テーブル33も含まれる。この変換テーブルについては後で詳述する。
図7は、状態データの退避と復元が必要なラッチ回路FF0,FF2と状態フリップフロップS_FFの構成を示す図である。ラッチ回路FFのデータ入力Dには、組み合わせ回路からのデータDまたは退避復元制御回路からの復元データR_Dを選択するセレクタSEL_0の出力が入力される。また、ラッチ回路FFのイネーブル端子ENには、組み合わせ回路からのイネーブル信号ENと復元イネーブル信号R_ENの論理和を出力する論理和ゲート36の出力が入力される。そして、ラッチ回路FFのデータ出力Qは、通常の出力Qとして後段の組み合わせ回路に出力されると共に、退避データS_Dとして退避復元制御回路30にも出力される。
退避時には、単に、ラッチ回路FFがラッチするデータQが、退避データS_Dとして退避復元制御回路30に出力される。また、復元時には、復元イネーブル信号R_ENが「1」になり、セレクタSEL_0が復元データR_Dを選択し、ラッチ回路FFをラッチイネーブル状態にし、ラッチ回路FFに復元データR_Dがラッチされる。
図8は、状態データの退避と復元が必要なメモリ回路SRAMの構成を示す図である。メモリ回路SRAMのアドレス端子ADDRには、組み合わせ回路からのアドレスADDRまたは退避復元制御回路30からのアドレスS/R_ADDRを選択するセレクタSEL_1の出力が入力される。また、ライトデータ端子WDATAには、組み合わせ回路からのライトデータWDATAまたは退避復元制御回路からの復元データR_Dを選択するセレクタSEL_2の出力が入力される。セレクタSEL_1は、退避データリードイネーブル信号S_RENと復元データライトイネーブルR_WENを入力する論理和ゲート37の出力が「1」の場合に退避復元アドレスS/R_ADDRを選択する。また、セレクタSEL_2は、復元データライトイネーブルR_WENが「1」の場合に復元データR_Dを選択する。
そして、ライトイネーブル端子WENには、組み合わせ回路からのライトイネーブル信号WENと復元データライトイネーブル信号R_WENを出力する論理和ゲート38の出力が入力され、リードイネーブル端子RENには、組み合わせ回路からのリードイネーブル信号RENと退避データリードイネーブル信号S_RENを出力する論理和ゲート39の出力が入力される。
退避時は、退避データリードイネーブル信号S_RENが「1」になり、退避復元アドレスS/R_ADDRに対応したデータが退避データ線S_Dを経由して退避復元制御回路30に出力される。一方、復元時は、復元データライトイネーブルR_WENが「1」になり、復元データR_Dが退避復元アドレスS/R_ADDRに書き込まれる。
以下、図6における状態データの退避及び復元の動作を簡単に説明する。CPUからの要求により、退避復元制御回路内の退避レジスタSのレジスタアドレスRG_ADDと、「1」のレジスタライトデータRG_WDATAと、「1」のレジスタライトイネーブルRG_WENが入力されると、退避復元指示信号発生回路32がデコーダ出力とレジスタライトデータRG_WDATAとレジスタライトイネーブルRG_WENを出力する。これに応答して、退避復元制御回路30内の退避レジスタSに「1」が書き込まれ、退避復元制御回路30が退避処理を開始する。
退避処理では、退避復元制御回路30からの前述の制御信号により、退避復元対象のラッチ回路FFとメモリ回路SRAMが保持している状態データが、退避復元制御回路30に供給され、データインターフェース切替回路31を介してデータ端子23から出力される。退避される状態データは、PLDからメインメモリ12に送信され記憶される。
一方、復元処理では、CPUからの要求により、退避復元制御回路内の復元レジスタRのレジスタアドレスRG_ADDと、「1」のレジスタライトデータRG_WDATAと、「1」のレジスタライトイネーブルRG_WENが入力されると、退避復元指示信号発生回路32がデコーダ出力とレジスタライトデータRG_WDATAとレジスタライトイネーブルRG_WENを出力する。これに応答して、退避復元制御回路30内の復元レジスタRに「1」が書き込まれ、退避復元制御回路30が復元処理を開始する。
復元処理では、退避復元制御回路30からの前述の制御信号により、退避復元対象のラッチ回路FFとメモリ回路SRAMに、メインメモリから転送されてきた復元すべき状態データがそれぞれ書き込まれる。
[論理回路の置換処理(1)]
次に、図3で示した論理回路の置換処理について具体的に説明する。論理回路の置換処理には、置換対象の旧論理回路の選択(または置換対象の旧論理回路が構成される部分再構成領域PRRの選択)とその旧論理回路内の状態データの退避処理(S13)、新たに構成される新論理回路の構成データの書込み処理と新論理回路への状態データの復元処理(S14)が含まれる。そこで、以下、本実施の形態における置換対象の論理回路の選択方法について説明する。
図3で既述したとおり、CPUが新たなタスクへの切り替えを検出したとき、PLD内に新タスクを実行する新論理回路を構成するに十分な空き部分再構成領域PRRが存在しない場合、CPUは、論理回路が構成済みの複数の部分再構成領域から選択した部分再構成領域において、構成済みの論理回路内の状態データの退避と、新タスクの論理回路の構成データの書込みとその状態データの復元を行う。つまり、PLD内に構成済みの旧論理回路の数またはサイズと新タスクの新論理回路の数またはサイズの合計が、PLD内に構成可能な論理回路の数またはサイズを超える場合、CPUは、複数の構成済みの旧論理回路のなかから選択した論理回路を新論理回路に置換する。
そして、置換された論理回路に対応するタスクへの切り替えがその後検出されると、CPUが、PLD内に、その論理回路の構成データを書込み、その状態データを論理回路内に復元する。
退避及び復元すべき状態データ量は、部分再構成領域PRR内に構成される論理回路に依存して異なる。退避及び復元すべきデータ量が大きい論理回路もあれば少ない論理回路もある。また、退避及び復元すべきデータ量は論理回路の動作状態にも依存して変動する場合がある。
したがって、どの部分再構成領域の論理回路を置換対象にするかの選択では、置換対象の論理回路をPLDから追い出しそして再度PLD内に構成するのに要する総工数ができるだけ少ないものを選ぶことが、PLD内の論理回路の置換処理の効率化につながる。つまり、PLDから追い出す工数と再度PLD内に呼び戻す工数の総工数が比較的大きい論理回路は、できるだけ置換対象に選択せずPLD内に構成したままにし、総工数が比較的小さい論理回路を置換対象に選択するのが望ましい。
PLDから論理回路を追い出す工数は、前述のとおり論理回路内の状態データを退避するに要する時間である。一方、PLDに論理回路を呼び戻す工数は、前述のとおり論理回路の構成データの書込み時間と、一旦退避した状態データの復元に要する時間である。
本実施の形態では、CPUは、論理回路の状態データの退避時間と復元時間が短いほど優先的に置換対象の論理回路に選択する。そこで、CPUは、タスク切り替えを検出すると、構成データが書込み済みの全ての部分再構成領域PRRの論理回路の退避復元時間情報を取得し、退避復元時間が短いほど優先的に置換対象の部分再構成領域PRRまたは置換対象の論理回路に選択する。具体的には、退避復元時間が最も短い部分再構成領域PRRまたは論理回路を、置換対象に選択する。
ここで、退避復元時間の取得について説明する。図6で説明した通り、論理回路内の退避すべき状態データは予め分かっており、したがって、ユーザ回路内の所定のラッチ回路FFやメモリ回路SRAMに退避及び復元回路が付加される。そこで、論理回路毎に固定の退避復元時間を予め定めておき、CPUが参照可能なメモリに論理回路毎の退避復元時間を記憶しておく。CPUは、置換対象の論理回路を選択する場合、メモリ内の各論理回路の退避復元時間を参照し、退避復元時間が最も短い論理回路を置換対象の論理回路に選択する。
各論理回路に固定の退避復元時間を予め決定する際、以下の2つの方法が好ましい。第1の例では、論理回路内の退避対象のラッチ回路FFとメモリ回路SRAMのビット数に比例するように退避復元時間を決定する。例えば、論理回路内の退避対象のラッチ回路FFのビット総数がBf、退避対象のメモリ回路SRAMのビット総数がBsとすると、退避復元時間は、(wt+rt)*(Bf+Bs)となる。ここで係数(wt+rt)は、ビット当たりの退避時間(論理回路からの読み出し時間とメインメモリへの書き込み時間)wtと復元時間(メインメモリの読み出し時間と論理回路への書込み時間)rtの合計時間である。
第2の例では、状態データの退避と復元時のメインメモリへのアクセス回数に比例するように退避復元時間を決定する。つまり、退避すべき状態データのビット総数をメインメモリの1回のアクセスで書き込めるビット幅で除した回数が退避時のアクセス回数になる。一方、復元すべき状態データのビット総数をメインメモリの1回のアクセスで読み出せるビット幅で除した回数が復元時のアクセス回数になる。いずれも、状態データを1回のビット幅に詰め込めるパッキング率にも依存する。そして、退避時のアクセス回数をAs、復元時のアクセス回数をArとすると、退避復元時間は、wt*As+rt*Arとなる。
図9は、各論理回路に固定の退避復元時間を予め決定する場合の論理回路と退避復元時間(S/R時間)の例を示す図である。図9のテーブルには、各部分再構成領域内に構成される論理回路のIDに対応して、その構成データCDATAのID及び退避復元時間(S/R時間)が格納されている。図9のテーブルが、図1の補助記憶装置内に記憶され、サーバが起動されるときにメインメモリ内に展開され、CPUにより参照される。
一方、論理回路から退避され復元される状態データが論理回路の状態に応じて大きく異なる場合、退避復元時間を論理回路の状態に依存した可変時間にするようにしても良い。この場合、論理回路に現在の状態を管理するステートマシンを設け、ステートマシンの各状態x毎に、退避が必要なラッチ回路FFのビット数Bfx、メモリ回路SRAMのビット数Bsxを予め求めておく。そして、状態xにおける退避復元時間を、(wt+rt)*(Bfx+Bsx)とする。または、上記の固定値で説明したメインメモリのアクセス数に基づいて求めても良い。
そして、ステートマシンが示す論理回路の状態に依存する退避復元時間を常時更新して格納するレジスタを論理回路内に設けておき、タスクスイッチ発生時にそのレジスタから退避復元時間を読み出す。または、ステートマシン内に論理回路の状態を示すレジスタを設けておき、タスクスイッチ発生時にそのレジスタから論理回路の状態を読み出し、その状態から退避復元時間を算出するようにしてもよい。
図6においてステートマシン24内の状態フリップフロップS_FFは、この論理回路の状態(論理回路の状態を制御するステートマシンの状態(STATE))を示すレジスタである。図6の例では、状態フリップフロップS_FFの出力34が状態FF値-時間情報変換テーブル33に入力され、状態FF値-時間情報変換テーブル33が状態FF値に対応する退避復元時間を出力する。
図10は、状態FF値-時間情報変換テーブルの一例を示す図である。図10のテーブルには、論理回路Aが取りうる状態ST0-ST4それぞれにおける退避復元時間(S/R時間)と、論理回路Bが取りうる状態ST0-ST2それぞれにおける退避復元時間とが示されている。
論理回路の状態に応じて退避すべきデータ量が大きく異なる例として、MPEG回路がある。MPEG回路の場合、タスクスイッチのタイミングがピクチャ処理完了時とマクロブロックの処理途中とでは大きく異なる。例えば、ピクチャ処理完了時であれば退避データはピクチャ単位のレート制御用変数などである。一方、マクロブロック処理途中であれば退避データはピクチャ内の情報(ピクチャ内レート制御変数、隣接マクロブロック情報、処理中のマクロブロック情報、エントロピー符号化のコンテキスト情報)も含まれ、データ量が多くなる。
図11は、本実施の形態におけるCPUによる第1の論理回路の置換処理を示すフローチャート図である。図11のフローチャートは、図3のタスクの切り替えが検出され(S10のYES)、PLD内に構成済みの旧論理回路を新タスクに対応する新論理回路に置換する必要が発生した場合(S11,S12のYES)の工程S13,S14を詳述する。
論理回路の置換処理のプログラムの引数は置換対象タスクXである。まず、ループS20は、置換対象タスクXを実行する論理回路のうち1つの部分再構成領域PRRに構成される論理回路(回路ブロック)の構成データ(ループ変数が構成データi)のループである。したがって、置換対象タスクXを実行する論理回路がN個の部分再構成領域に構成される論理回路を有する場合、ループ変数はi=0〜N-1となる。
最初に、CPUは、論理回路が構成されていない空き部分再構成領域PRRが存在するか否かを判定し(S21)、空きPRRが存在する場合(S21のYES)、その空きPRRを新論理回路の構成データの書込み先とする(S22)。
空きPRRが存在しない場合(S21のNO)、CPUは置換対象の論理回路(PRR内の論理回路)を選択する。具体的には、CPUは、全PRRの退避復元時間情報(S/R時間情報)を取得する(S23)。この取得処理は、S/R時間が論理回路に依存する固定時間を利用する場合は、CPUは、図9に示した論理回路に対応するS/R時間のテーブルから取得する。また、S/R時間が論理回路の状態に依存する変動時間を利用する場合は、CPUは、図6に示した状態FF値・時間情報変換テーブルの出力35を読み出す、もしくは、図6のステートマシン24内の状態フリップフロップS_FFの状態番号を取得し、図10の各論理回路の状態番号に対応するS/R時間を抽出する。
そして、CPUは、S/R時間が最も短い論理回路(または部分再構成領域PRR)を置換対象の論理回路(またはPRR)に選択する(S24)。さらに、CPUは、選択した論理回路の部分再構成領域PRRに論理回路内の状態データの退避を指示する退避指示を送り、退避の完了を待つ(S25)。工程S24,S25は、図3の工程S13に対応する。
次に、CPUは、置換対象の部分再構成領域PRRに構成データiを書き込む(S26)。構成データはメインメモリに記憶されているので、CPUは、メインメモリから対応する構成データiを読み出し、PLDの構成データメモリCRAM内の置換対象PRRに対応する領域に書き込むようPLDに要求する。
さらに、新タスクXが演算を再開する場合(S27のYES)、メインメモリ内の復元データを置換対象PRR内の論理回路に復元する復元指示をPLDに行い、復元が完了するのを待つ(S28)。新タスクXの演算が初回の場合(S27のNO)、復元すべきデータはないので復元指示を行わない。
上記の工程S21〜S28を、新タスクXを実行するに必要な論理回路の全ての構成データiについて繰り返す処理が完了すると、論理回路の置換処理が完了する。
[論理回路の置換処理(2)]
図12は、本実施の形態におけるCPUによる第2の論理回路の置換処理を示すフローチャート図である。第2の論理回路の置換処理では、置換対象の論理回路の選択を、論理回路の退避復元時間に加えて、論理回路の未使用時間も考慮して行う。すなわち、PLD内の最も最近使用されなかった論理回路(LRU論理回路)は、今後も使用される確率が低いとみなすことができるので、そのような論理回路を置換対象候補とする。つまり、キャシュメモリなどで採用されるLRU(Least recent Usage)に基づく選択アルゴリズムである。そして、第2の論理回路の置換処理では、LRUに基づいて選択された複数の置換対象候補のうち、最も退避復元時間が短い論理回路を置換対象に選択する。
図12のフローチャートにおいて、図11と同じ工程番号の工程は図11と同じ処理である。まず、ループS20は図11のループS20と同じである。
次に、ループS20内において、最初に、CPUは、論理回路が構成されていない空き部分再構成領域PRRが存在するか否かを判定し(S21)、空きPRRが存在する場合(S21のYES)、その空きPRRを新論理回路の構成データの書込み先とする(S22)。
空きPRRが存在しない場合(S21のNO)、CPUは置換対象の論理回路(PRR内の論理回路)を選択する。第2の置換処理では、LRUにより未使用時間が最も長い論理回路を構成するPRRを置換対象PRR候補集合の要素として選択する(S30)。そして、置換対象PRR候補集合が1つのPRRのみ有する場合(S31のYES)、そのPRRが置換対象PRRに選択される(S32)。
次に、CPUは、置換対象PRR候補集合が複数のPRRを有する場合(S31のNO)、置換対象PRR候補集合の全てのPRRの退避復元時間情報(S/R時間情報)を取得する(S33)。この取得処理では、S/R時間が論理回路に依存する固定時間を利用する場合、CPUは、図9の論理回路に対応するS/R時間テーブルから取得する。また、S/R時間が論理回路の状態に依存する変動時間を利用する場合、CPUは、図6の状態FF値・時間情報変換テーブルの出力35を読み出す、もしくは、状態フリップフロップS_FFの状態番号を取得し、図10の各論理回路の状態番号に対応するS/R時間を抽出する。
そして、CPUは、置換対象候補集合のうちS/R時間が最も短い論理回路(または部分再構成領域PRR)を置換対象の論理回路(またはPRR)に選択する(S34)。
以降は、図11と同様に、CPUは、選択した論理回路の部分再構成領域PRRに論理回路内の状態データの退避を指示する退避指示を送り、退避の完了を待つ(S25)。次に、CPUは、置換対象の部分再構成領域PRRに構成データiを書き込む(S26)。さらに、新タスクXが演算を再開する場合(S27のYES)、CPUは、メインメモリ内の復元データを置換対象PRR内の論理回路に復元する復元指示をPLDに行い、復元が完了するのを待つ(S28)。
図14は、CPUが管理するPRR管理テーブルの一例を示す図である。第2の置換処理では、LRUに基づいて置換対象の論理回路の候補を選択する。そのために、CPUは、どのPRR内の論理回路が使用されたかの履歴を記憶する必要がある。
図14のPRR管理テーブルには、PLD内の全てのPRRに対応して、構成済みの論理回路のIDと、それぞれの未使用時間が記憶される。CPUは、PRR内に構成した論理回路の動作が中断した時点で未使用時間を「0」に設定し、全ての動作中断中の論理回路の未使用時間を所定の時間が経過する度にインクリメントする。図14の例では、未使用時間が2ビットデータであり、未使用時間が「3」(2ビットデータで「11」)に達するとそれ以上増加しない。
一般に、キャッシュメモリなどでのLRUに基づく置換処理の未使用時間は記憶データ量を削減する目的からかなり粗い粒度で記憶される。たとえば、2ビットデータで所定時間毎に未使用時間が長くなるなどである。そのため、未使用時間が最も長い論理回路を構成するPRRを抽出しても多くのPRRが置換対象候補になることが想定される。そこで、置換対象候補のうち最も退避復元時間が短い論理回路を構成するPRRを置換対象に選択することで、論理回路の置換処理の効率を高めることができる。
[論理回路の置換処理(3)]
図13は、本実施の形態におけるCPUによる第3の論理回路の置換処理を示すフローチャート図である。第3の論理回路の置換処理でも、置換対象の論理回路の選択を、論理回路の退避復元時間に加えて、論理回路の未使用時間も考慮して行う。但し、第3の置換処理では、未使用時間と退避復元時間とから置換対象の評価値を算出し、評価値が大きいほど優先して置換対象に選択する。
つまり、未使用時間が長いほど置換対象になりやすく、退避復元時間が短いほど置換対象になりやすくする。評価値を算出する式の一例は以下のとおりである。
評価値=未使用時間−w×退避復元時間
ここで、wは退避復元時間の重み値であり、たとえば未使用時間の粒度や、未使用時間と退避復元時間の比較に基づいて決定され、好ましくは実験等により最適な重み値が予め決定される。
図13において、図11と同じ工程番号の工程は図11と同じ処理である。まず、ループS20は図11のループS20と同じである。
次に、ループS20内において、CPUは、論理回路が構成されていない空き部分再構成領域PRRが存在するか否かを判定し(S21)、空きPRRが存在する場合(S21のYES)、その空きPRRを新論理回路の構成データの書込み先とする(S22)。
空きPRRが存在しない場合(S21のNO)、CPUは、全PRRの論理回路の退避復元時間と未使用時間を取得する(S40)。退避復元時間の取得は、図11で説明した処理S23と同じであり、図9のテーブルから取得する。また、未使用時間の取得は、図14のテーブルから取得する。
そして、CPUは、全PRRの論理回路の評価値を、取得した未使用時間と退避復元時間から上記の式により算出し(S41)、評価値が最も大きい論理回路のPRRを置換対象PRRとして選択する(S42)。
その後の工程S25〜S28は、図11,図12と同様である。
[論理回路の置換処理(4)]
第1〜第3の置換処理では、退避復元時間が短い論理回路を優先して置換対象の論理回路に選択した。それに対して、第4の置換処理では、退避復元時間と構成データの書込み時間とに基づいて算出される置換時間が短い論理回路を優先して置換対象の論理回路に選択する。置換時間は、たとえば以下の式により算出される。
置換時間=退避復元時間+w2×構成データの書込み時間
ここで、w2は構成データの書込み時間の重み値である。
第1〜第3の置換処理での置換対象の論理回路の選択において、退避復元時間をこの置換時間に置き換えて行うことで、PRR内に構成済みの論理回路の追い出しと呼び戻しに要する総時間を考慮して、最も追い出しと呼び戻しに要する時間が短い論理回路を置換対象に選択することができる。構成データの書込み時間が無視できないほど大きい場合、第4の置換処理が有効である。
[論理回路の置換処理の具体例]
図15は、第1〜第3の論理回路の置換処理の具体例を示す図表である。図15には、4つの部分再構成領域PRRの未使用時間、S/R時間、評価値が示され、さらに、置換対象論理回路の選択について、LRUに基づいて不使用時間が最も長いものを選択する場合、S/R時間が最も短いものを選択する場合(第1の置換処理)、不使用時間が最も長い候補からS/R時間が最も短いものを選択する場合(第2の置換処理)、評価値が最も大きいものを選択する場合(第3の置換処理)それぞれにおける置換対象の論理ブロックが示されている。未使用時間、S/R時間は、図9と図14の具体例と同じである。
LRUに基づいて不使用時間が最も長いものを選択する場合、論理回路A,Bを構成するPRRが置換対象に選択される。それに対して、S/R時間が最も短いものを選択する場合(第1の置換処理)、論理回路Cを構成するPRRが置換対象に選択される。また、評価値が最も大きいものを選択する場合(第3の置換処理)、論理回路Cを構成するPRRが置換対象に選択される。論理回路Cは未使用時間は「1」でありそれほど長くないが、S/R時間が「1」と他の論理回路A,Bよりも短いので、第1、第3の置換処理で置換対象に選択されている。
以上のとおり、S/R時間が短いものを優先して置換対象の論理回路を選択することにより、LRUに基づく選択よりもS/R時間が短いものが選択される確率が高くなる。
以上、本実施の形態によれば、PLD内の複数の部分再構成領域に、様々な論理回路を互いに独立して構成し、動作させる場合、新たな論理回路を構成するための空の部分構成領域の数またはサイズが足りない場合、各論理回路の状態データの退避及び復元時間が短いものを優先して置換対象の論理回路を選択する。その結果、PLD内に構成する論理回路の置換処理の効率を高めることができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
プログラマブルロジックデバイス(以下PLD)内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、
前記複数の領域内に構成済みの複数の第1の論理回路と、前記構成要求により新たに構成される第2の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第1の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第2の論理回路に置換される置換対象の論理回路を前記複数の第1の論理回路から選択する、
処理をコンピュータに実行させるコンピュータ読み取り可能なPLD制御プログラム。
(付記2)
前記処理は、さらに、
前記選択した置換対象の第1の論理回路内の状態データを退避する退避要求を出力し、
前記第2の論理回路を構成する構成データを、前記選択された置換対象の第1の論理回路が構成されていた領域に設定して、前記第2の論理回路を構成する構成要求を出力し、
前記第2の論理回路が動作再開の場合、前記第2の論理回路の退避済みの状態データを、前記構成された第2の論理回路に復元する復元要求を出力する、ことを有する、付記1に記載のPLD制御プログラム。
(付記3)
前記選択することは、前記第1の論理回路の前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、付記1に記載のPLD制御プログラム。
(付記4)
前記選択することは、前記複数の第1の論理回路のうち、それぞれの未使用時間が最も長い複数の第1の論理回路から、前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、付記3に記載のPLD制御プログラム。
(付記5)
前記選択することは、未使用時間から前記退避復元時間に所定の重み値を乗じた値を減じた評価値が大きいものを優先して、前記置換対象の論理回路を選択する、付記3に記載のPLD制御プログラム。
(付記6)
前記退避及び復元時間は、前記論理回路それぞれに予め決められた固定時間である、付記1に記載のPLD制御プログラム。
(付記7)
前記退避及び復元時間は、前記論理回路の動作状態に対応して異なる可変時間である、付記1に記載のPLD制御プログラム。
(付記8)
前記PLD内の論理回路を再構成可能な複数の領域は、前記PLD内の再構成可能な領域を論理的に区分した複数の領域である、付記1に記載のPLD制御プログラム。
(付記9)
前記PLD内の論理回路を再構成可能な複数の領域は、前記PLD内の再構成可能な領域を固定的に区分した複数の領域である、付記1に記載のPLD制御プログラム。
(付記10)
プログラマブルロジックデバイス(以下PLD)内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、
前記複数の領域内に構成済みの複数の第1の論理回路と、前記構成要求により新たに構成される第2の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第1の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第2の論理回路に置換される置換対象の論理回路を前記複数の第1の論理回路から選択する、
処理をコンピュータに実行させるPLD制御方法。
(付記11)
論理回路を再構成可能な複数の領域を有し、前記複数の領域それぞれに論理回路を再構成可能なプログラマブルロジックデバイス(以下PLD)と、
前記PLD内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、前記複数の領域内に構成済みの複数の第1の論理回路と、前記構成要求により新たに構成される第2の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第1の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第2の論理回路に置換される置換対象の論理回路を前記複数の第1の論理回路から選択する処理を実行するプロセッサと、を有する情報処理装置。
(付記12)
前記選択することは、前記第1の論理回路内の状態データの前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、付記11に記載の情報処理装置。
(付記13)
前記PLDでは、前記複数の領域それぞれに収容可能な回路ブロックを単位にして、前記論理回路が各領域に再構成される、付記11に記載の情報処理装置。
10:情報処理装置
PLD:プログラマブルロジックデバイス、Programmable Logic Device
FPGA:フィールドプログラマブルゲートアレイ、Field Programmable Gate Array
PRR:部分再構成領域、Partial Reconfigurable Region
CPU:プロセッサ、Central Processing Unit
NIC:ネットワークインターフェースカード
OS:オペレーティングシステム
APL:アプリケーションプログラム
CDATA:構成データ、コンフィグレーションデータ
S/R_T:退避及び復元時間
CRAM:構成データRAM
SDATA:状態データ
STATE_NO:状態番号

Claims (9)

  1. プログラマブルロジックデバイス(以下PLD)内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、
    前記複数の領域内に構成済みの複数の第1の論理回路と、前記構成要求により新たに構成される第2の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第1の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第2の論理回路に置換される置換対象の論理回路を前記複数の第1の論理回路から選択する、
    処理をコンピュータに実行させるコンピュータ読み取り可能なPLD制御プログラム。
  2. 前記処理は、さらに、
    前記選択した置換対象の第1の論理回路内の状態データを退避する退避要求を出力し、
    前記第2の論理回路を構成する構成データを、前記選択された置換対象の第1の論理回路が構成されていた領域に設定して、前記第2の論理回路を構成する構成要求を出力し、
    前記第2の論理回路が動作再開の場合、前記第2の論理回路の退避済みの状態データを、前記構成された第2の論理回路に復元する復元要求を出力する、ことを有する、請求項1に記載のPLD制御プログラム。
  3. 前記選択することは、前記第1の論理回路の前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、請求項1に記載のPLD制御プログラム。
  4. 前記選択することは、前記複数の第1の論理回路のうち、それぞれの未使用時間が最も長い複数の第1の論理回路から、前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、請求項3に記載のPLD制御プログラム。
  5. 前記選択することは、未使用時間から前記退避復元時間に所定の重み値を乗じた値を減じた評価値が大きいものを優先して、前記置換対象の論理回路を選択する、請求項3に記載のPLD制御プログラム。
  6. 前記退避及び復元時間は、前記論理回路それぞれに予め決められた固定時間である、請求項1に記載のPLD制御プログラム。
  7. 前記退避及び復元時間は、前記論理回路の動作状態に対応して異なる可変時間である、請求項1に記載のPLD制御プログラム。
  8. プログラマブルロジックデバイス(以下PLD)内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、
    前記複数の領域内に構成済みの複数の第1の論理回路と、前記構成要求により新たに構成される第2の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第1の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第2の論理回路に置換される置換対象の論理回路を前記複数の第1の論理回路から選択する、
    処理をコンピュータに実行させるPLD制御方法。
  9. 論理回路を再構成可能な複数の領域を有し、前記複数の領域それぞれに論理回路を再構成可能なプログラマブルロジックデバイス(以下PLD)と、
    前記PLD内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、前記複数の領域内に構成済みの複数の第1の論理回路と、前記構成要求により新たに構成される第2の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第1の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第2の論理回路に置換される置換対象の論理回路を前記複数の第1の論理回路から選択する処理を実行するプロセッサと、を有する情報処理装置。
JP2016146197A 2016-07-26 2016-07-26 プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置 Active JP6694138B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016146197A JP6694138B2 (ja) 2016-07-26 2016-07-26 プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置
US15/647,858 US10289787B2 (en) 2016-07-26 2017-07-12 Control program and control method for programmable logic device and information processing apparatus including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016146197A JP6694138B2 (ja) 2016-07-26 2016-07-26 プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2018018198A true JP2018018198A (ja) 2018-02-01
JP6694138B2 JP6694138B2 (ja) 2020-05-13

Family

ID=61009881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016146197A Active JP6694138B2 (ja) 2016-07-26 2016-07-26 プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置

Country Status (2)

Country Link
US (1) US10289787B2 (ja)
JP (1) JP6694138B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114924776A (zh) * 2022-04-20 2022-08-19 阿里巴巴(中国)有限公司 可编程逻辑器件升级方法、装置、系统、设备及程序产品

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10642617B2 (en) 2015-12-08 2020-05-05 Via Alliance Semiconductor Co., Ltd. Processor with an expandable instruction set architecture for dynamically configuring execution resources
US11061853B2 (en) * 2015-12-08 2021-07-13 Via Alliance Semiconductor Co., Ltd. Processor with memory controller including dynamically programmable functional unit
JP6849908B2 (ja) * 2016-12-21 2021-03-31 富士通株式会社 情報処理装置、pld管理プログラム及びpld管理方法
US10540200B2 (en) * 2017-11-10 2020-01-21 Advanced Micro Devices, Inc. High performance context switching for virtualized FPGA accelerators
US10447273B1 (en) 2018-09-11 2019-10-15 Advanced Micro Devices, Inc. Dynamic virtualized field-programmable gate array resource control for performance and reliability
US10963170B2 (en) * 2019-01-30 2021-03-30 Xilinx, Inc. Retaining memory during partial reconfiguration

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184718A (ja) * 1997-12-19 1999-07-09 Matsushita Electric Ind Co Ltd プログラマブルなデータ処理装置
JP2003347930A (ja) * 2002-05-28 2003-12-05 Konica Minolta Holdings Inc プログラマブル論理回路及びコンピュータシステム並びにキャッシュ方法
JP2008152470A (ja) * 2006-12-15 2008-07-03 Hitachi Ltd データ処理システム及び半導体集積回路
WO2012098684A1 (ja) * 2011-01-21 2012-07-26 富士通株式会社 スケジューリング方法およびスケジューリングシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3983394B2 (ja) * 1998-11-09 2007-09-26 株式会社ルネサステクノロジ 幾何学処理プロセッサ
JP4088763B2 (ja) 2002-06-13 2008-05-21 コニカミノルタホールディングス株式会社 コンピュータシステム及び該コンピュータシステムに適したハードウェア/ソフトウェアロジック並びにキャッシュ方法
JP2006333496A (ja) 2006-06-22 2006-12-07 Fuji Xerox Co Ltd プログラマブル論理回路装置および情報処理システム
JP5294304B2 (ja) 2008-06-18 2013-09-18 日本電気株式会社 再構成可能電子回路装置
EP2798454A4 (en) * 2011-12-30 2016-08-17 Intel Corp VARIABLE SIMD DISPLACEMENT AND ROTATION USING A CONTROL PANELULATION
EP2894572B1 (en) * 2014-01-09 2018-08-29 Université de Rennes 1 Method and device for programming a FPGA

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184718A (ja) * 1997-12-19 1999-07-09 Matsushita Electric Ind Co Ltd プログラマブルなデータ処理装置
JP2003347930A (ja) * 2002-05-28 2003-12-05 Konica Minolta Holdings Inc プログラマブル論理回路及びコンピュータシステム並びにキャッシュ方法
JP2008152470A (ja) * 2006-12-15 2008-07-03 Hitachi Ltd データ処理システム及び半導体集積回路
WO2012098684A1 (ja) * 2011-01-21 2012-07-26 富士通株式会社 スケジューリング方法およびスケジューリングシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114924776A (zh) * 2022-04-20 2022-08-19 阿里巴巴(中国)有限公司 可编程逻辑器件升级方法、装置、系统、设备及程序产品

Also Published As

Publication number Publication date
US20180032657A1 (en) 2018-02-01
US10289787B2 (en) 2019-05-14
JP6694138B2 (ja) 2020-05-13

Similar Documents

Publication Publication Date Title
JP6694138B2 (ja) プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置
US20190065364A1 (en) Allocating and configuring persistent memory
CN104679586B (zh) 包括异构多核处理器的电子系统及其操作方法
JP4938080B2 (ja) マルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路
KR102082859B1 (ko) 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
US10540200B2 (en) High performance context switching for virtualized FPGA accelerators
JP5776688B2 (ja) 情報処理装置及びタスク切り替え方法
KR102043276B1 (ko) 워크 로드에 따라 동적 자원 할당 가능한 상호 연결 패브릭 스위칭 장치 및 방법
JP5226010B2 (ja) 共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路
KR20120012377A (ko) 정보 처리 장치 및 정보 처리 방법
KR20180092715A (ko) 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치
JP5045163B2 (ja) 演算処理装置および演算処理装置の制御方法
US9652259B2 (en) Apparatus and method for managing register information in a processing system
WO2013079988A1 (en) Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor
JP2018512661A (ja) グラフィックス・プロセッサ仮想化のためのシャドー・コマンド・リング
JP6380261B2 (ja) 電子機器および給電制御プログラム
CN116401043A (zh) 一种计算任务的执行方法和相关设备
US20200334081A1 (en) Flexible logic unit adapted for real-time task switching
JP6515771B2 (ja) 並列処理装置及び並列処理方法
US20210157512A1 (en) Flexible configuration of storage device with translation language set
JP4868012B2 (ja) コンピュータシステム、コンピュータシステムの制御方法、及びプログラム
US9503096B1 (en) Multiple-layer configuration storage for runtime reconfigurable systems
JP6741940B2 (ja) 情報処理装置及びpld管理プログラム
US10180907B2 (en) Processor and method
US9853644B2 (en) Multiple-layer configuration storage for runtime reconfigurable systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200228

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: 20200317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200330

R150 Certificate of patent or registration of utility model

Ref document number: 6694138

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150