JP2011154534A - リコンフィギュラブル回路および半導体集積回路 - Google Patents

リコンフィギュラブル回路および半導体集積回路 Download PDF

Info

Publication number
JP2011154534A
JP2011154534A JP2010015589A JP2010015589A JP2011154534A JP 2011154534 A JP2011154534 A JP 2011154534A JP 2010015589 A JP2010015589 A JP 2010015589A JP 2010015589 A JP2010015589 A JP 2010015589A JP 2011154534 A JP2011154534 A JP 2011154534A
Authority
JP
Japan
Prior art keywords
data
input
register
circuit
output
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
JP2010015589A
Other languages
English (en)
Other versions
JP5711889B2 (ja
Inventor
Shinichi Sudo
晋一 須藤
Ichiro Kasama
一郎 笠間
Kyoji Sato
京治 佐藤
Takashi Hanai
喬 花井
Kiyomitsu Kato
清光 加藤
Takahiko Kubota
孝彦 久保田
Junji Sahota
純治 佐保田
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 Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2010015589A priority Critical patent/JP5711889B2/ja
Priority to US12/973,730 priority patent/US9720879B2/en
Publication of JP2011154534A publication Critical patent/JP2011154534A/ja
Application granted granted Critical
Publication of JP5711889B2 publication Critical patent/JP5711889B2/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor

Abstract

【課題】入出力データの転送時間の短縮、並びに、回路規模の縮小を行うことのできるリコンフィギュラブル回路および半導体集積回路の提供を図る。
【解決手段】複数の演算器と、該複数の演算器に入力する演算入力データ,および,該複数の演算器から出力される演算出力データを保持する入出力データインタフェース部22と、を有し、前記複数の演算器の接続をコンテキスト毎に制御するリコンフィギュラブル回路であって、前記入出力データインタフェース部22は、複数のポートPRT0〜PRTnと、該複数のポートに接続され、深さ方向にm[mは2以上の整数]バンクを有する複数のレジスタREG00〜REGmnと、を有するように構成する。
【選択図】図13

Description

この出願で言及する実施例は、リコンフィギュラブル回路および半導体集積回路に関する。
近年、デジタルカメラ,プリンタおよび情報処理端末などの様々な電子機器に対して、内部の回路構成を電気的にプログラムすることで様々な機能を発揮させることができるリコンフィギュラブル回路(Reconfigurable Circuit)が利用されている。
このリコンフィギュラブル回路は、例えば、CPUなどの外部回路のアクセラレータとして使用され、CPUからのコンテキストに基づいてその回路構成を時間と共に動的に変化させるダイナミック・リコンフィギュラブル回路を含む。
ところで、従来、再構成可能な複数のPE(Processing Element:演算器)を有し、PEの接続情報を含むコンフィグレーションデータにより制御するリコンフィギュラブル回路、或いは、類似の技術思想を適用した様々な半導体集積回路が提案されている。
特開2009−003765号公報 特開平05−006657号公報 特開昭62−151957号公報 特開昭56−068979号公報
上述したように、従来、リコンフィギュラブル回路が提案されている。しかしながら、従来のリコンフィギュラブル回路では、入出力データインタフェース部と外部回路との間の入出力データの転送時間の短縮、並びに、データネットワーク部の回路規模の縮小が十分なものとはいえなかった。
この出願は、入出力データの転送時間の短縮、並びに、回路規模の縮小を行うことのできるリコンフィギュラブル回路および半導体集積回路の提供を目的とする。
一実施形態のリコンフィギュラブル回路は、複数の演算器と、該複数の演算器に入力する演算入力データ,および,該複数の演算器から出力される演算出力データを保持する入出力データインタフェース部と、を有する。このリコンフィギュラブル回路は、前記複数の演算器の接続をコンテキスト毎に制御する。
前記入出力データインタフェース部は、複数のポートと、該複数のポートに接続され、深さ方向にm[mは2以上の整数]バンクを有する複数のレジスタと、を有する。
開示のリコンフィギュラブル回路および半導体集積回路は、入出力データの転送時間の短縮、並びに、回路規模の縮小を行うことができるという効果を奏する。
半導体集積回路の一例を示すブロック図である。 図1の半導体集積回路の動作の一例を説明するためのである。 図1の半導体集積回路の動作の他の例を説明するためのである。 図1のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えないときの動作を説明するための図である。 図1のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えるときの動作を説明するための図である。 メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その1)である。 メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その2)である。 メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その3)である。 メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その4)である。 メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その5)である。 メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その6)である。 メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その7)である。 メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その8)である。 半導体集積回路の一実施例を示すブロック図である。 図10のリコンフィギュラブル回路におけるコンフィギュレーションデータ保持部の一例を示すブロック図である。 図10のリコンフィギュラブル回路におけるレジスタ制御部の一例を示すブロック図である。 図10のリコンフィギュラブル回路における入出力データインタフェース部の一例を示すブロック図である。 図10の半導体集積回路の動作の一例を説明するためのである。 図10の半導体集積回路の動作の他の例を説明するためのである。 図10のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えるときの動作を説明するための図である。 図10のリコンフィギュラブル回路において、コンテキストで実行する演算内容の記述例を示す図である。 図11のコンフィギュレーションデータ保持部をより詳細に示すブロック図である。
まず、実施例を詳述する前に、図1〜図5、並びに、図6A,図6B〜図9A,図9Bを参照して、リコンフィギュラブル回路および半導体集積回路の一例およびその問題点を説明する。
図1は半導体集積回路の一例を示すブロック図である。図1において、参照符号101は外部回路を示し、また、102はリコンフィギュラブル回路を示す。ここで、外部回路101は、例えば、CPUであり、また、リコンフィギュラブル回路102は、例えば、ダイナミック・リコンフィギュラブル回路である。
図1に示されるように、半導体集積回路は、外部回路101およびリコンフィギュラブル回路102を含む。なお、半導体集積回路は、例えば、CPUである外部回路101と、そのアクセラレータとして機能するリコンフィギュラブル回路102を含む1つのパッケージングされたLSIである。
リコンフィギュラブル回路102は、レジスタ制御部121,入出力データインタフェース部122,コンフィグレーションデータ保持部123,および,データネットワーク部・データ演算部124を含む。
外部回路101は、リコンフィギュラブル回路102で演算を行うための入力データIDATを入力データバスに出力する。
また、外部回路101は、レジスタ保持部121に対して、書き込み制御信号WCSを出力すると共に、入力データIDATを格納するためのレジスタREG0〜REG9に対応するアドレスADDを、アドレスバスを介して出力する。
これにより、入力データIDATは、アドレスADDにより指定された入出力データインタフェース部122における所定のレジスタREG0〜REG9に保持される。
さらに、外部回路101は、動的再構成を行うためのコンフィギュレーションデータCDATを入力データバスに出力する。
また、外部回路101は、レジスタ保持部121に対して、書き込み制御信号WCSを出力すると共に、コンフィグレーションデータCDATの保持を行うコンフィギュレーションデータ保持部123に対応するアドレスADDを、アドレスバスを介して出力する。
これにより、コンフィグレーションデータCDATは、アドレスADDにより指定されたコンフィギュレーションデータ保持部123における所定個所に保持される。
なお、コンフィギュレーションデータ保持部123は、レジスタ保持部121からのコンフィギュレーションデータ書き込みイネーブル信号CWESに基づいて書き込みを行うようになっている。
さらに、外部回路101は、入出力データインタフェース部122,コンフィギュレーションデータ保持部123およびデータネットワーク部・データ演算部124に対して、演算を開始するための演算開始信号OSSを出力する。
レジスタREG0〜REG9に格納された入力データは、データネットワーク部・データ演算部124の入力ポートINP0〜INP9に出力される。
データネットワーク部・データ演算部124は、データネットワーク部と、複数の演算器(PE:Processing Element)を有するデータ演算部をまとめて描いたものである。
データネットワーク部は、入力ポートINP0〜INP9とデータ演算部の演算器の入力端子間の経路選定、演算器の出力端子から入力端子間の経路、および、演算器の出力端子とデータネットワーク部・データ演算部124の出力ポートOTP0〜OTP9間の経路選定を行う。
コンフィギュレーションデータ保持部123には、動的再構成を行うためのデータネットワークのネットワーク経路選定情報や演算器の演算命令情報などが保持されている。
そして、コンフィギュレーションデータ保持部123は、コンフィギュレーションデータが格納されているメモリを制御し、データネットワーク部・データ演算部124に対して、各コンテキストに対応したコンフィギュレーションデータCDAT'を出力する。
データ演算部で演算を行った演算結果は、データネットワーク部・データ演算部124の出力ポートOTP0〜OTP9から出力され、各ポートOTP0〜OTP9に対応するレジスタREG0〜REG9に保持される。
レジスタREG0〜REG9に対する書き込みは、データネットワーク部・データ演算部124から出力された演算結果書き込み制御信号ORWCSに基づいてレジスタ制御部121が生成したレジスタ書き込みイネーブル信号RWESにより行われる。
セレクタSEL0〜SEL9は、外部回路101から供給された演算入力データIDATをレジスタREG0〜REG9に格納するか、或いは、データ演算部(124)によって演算を行った演算結果を格納するかを、外部/内部書き込みデータ選択信号WDSSに基づいて選択する。
なお、外部/内部書き込みデータ選択信号WDSSは、レジスタ制御部121により、外部回路101から入力された書き込み制御信号WCSとデータネットワーク部・データ演算部124から出力された演算書き込み制御信号ORWCSに基づいて生成される。
リコンフィギュラブル回路102は、演算が完了すると演算完了信号OCSを外部回路101に出力し、外部回路101は演算が完了したことを認識する。
外部回路101は、演算結果を取得するために、レジスタREG0〜REG9内で取得する演算結果が保持されたレジスタに対応するアドレスADDをアドレスバスに出力する。
レジスタ制御部121は、外部回路101からのアドレス値に基づいて出力データ選択信号ODSSを出力し、選択回路SELoによって選択されたレジスタREG0〜REG9の出力データ(演算結果)ODATが出力データバスを介して外部回路101に出力される。
ところで、リコンフィギュラブル回路(例えば、ダイナミック・リコンフィギュラブル回路)102は、コンテキストごとに構成を変化させて処理を行うことができる。ここで、例えば、動的再構成による1回目のコンテキストをコンテキストCTX0、2回目のコンテキストをコンテキストCTX1というように、n回目のコンテキストをコンテキストCTXn-1とする。
図2は図1の半導体集積回路の動作の一例を説明するためのであり、また、図3は図1の半導体集積回路の動作の他の例を説明するためのである。図2および図3において、左側は外部回路101の動作フローを示し、また、右側はリコンフィギュラブル回路102の動作フローを示している。
ここで、図2は、コンテキストCTX0を実行するための入力ポートINP0の入力データと、コンテキストCTX1の入力ポートINP0の入力データが同じ場合の動作フローを示す。また、図3は、コンテキストCTX0を実行するための入力ポートINP0の入力データと、コンテキストCTX1の入力ポートINP0の入力データが異なる動作フローを示す。
まず、図2に示されるように、コンテキストCTX0およびCTX1を実行するための入力ポートINP0の入力データが同じ場合、外部回路101は、コンテキストCTX0とコンテキストCTX1で共通の値の入力データをレジスタREG0に書き込んで演算開始信号OSSを出力する。
演算開始信号OSSを受信したリコンフィギュラブル回路102は、コンテキストCTX0を実行する。さらに、コンテキストCTX0の実行が完了したら、動的再構成によるコンテキストの切り替えを行って、コンテキストCTX1を実行する。
リコンフィギュラブル回路102は、コンテキストCTX1の実行が完了したら演算完了信号OCSを出力する。演算完了信号OCSを受信した外部回路101は、演算が完了したことを認識し、コンテキストCTX0とコンテキストCTX1の演算結果(出力データ)をそれぞれの演算結果が保持されているレジスタから読み出す。
次に、図3に示されるように、コンテキストCTX0およびCTX1を実行するための入力ポートINP0の入力データが異なる場合、外部回路101は、まず、コンテキストCTX0の入力データをレジスタREG0に書き込み、演算開始信号OSSを出力する。
演算開始信号OSSを受信したリコンフィギュラブル回路102は、コンテキストCTX0を実行し、コンテキストCTX0の実行が完了したら演算完了信号OCSを出力する。このとき、入力データは、演算処理が完了するまでの間は保持し続ける必要があるので、コンテキストCTX1の入力データを書き込むことはできない。
演算完了信号OCSを受信した外部回路101は、演算完了信号OCSを受信した後に、コンテキストCTX1の入力データを再びレジスタREG0に書き込み、コンテキストCTX1を実行するための演算開始信号OSSを出力する。
演算開始信号OSSを受信したリコンフィギュラブル回路102は、コンテキストCTX1を実行し、コンテキストCTX1の実行が完了したら演算完了信号OCSを出力する。
演算完了信号OCSを受信した外部回路101は、演算が完了したことを認識し、コンテキストCTX0とコンテキストCTX1の演算結果をそれぞれの演算結果が保持されているレジスタから読み出す。
このように、各コンテキストの入力データは、そのコンテキストの演算処理が完了するまで保持する必要があるため、図3の場合はコンテキスト毎にデータを書き込むためのオーバーヘッドが発生して、処理速度が低下してしまう。
図3を参照して説明したように、コンテキストを実行する毎に入力ポートのデータが異なる場合には、以下のような処理を行う時間が掛かることになる。
すなわち、リコンフィギュラブル回路102がコンテキストCTX0の演算が完了してから演算完了信号OCSを出力するまでの時間、および、外部回路101がコンテキストCTX0の実行が完了したことを認識してレジスタREG0の値を書き換えるまでの時間が掛かる。
また、外部回路101がレジスタREG0への書き込みが完了してからコンテキストCTX1の演算開始信号OSSを出力するまでの時間が掛かることになる。さらに、リコンフィギュラブル回路102がコンテキストCTX1の演算開始信号OSSを認識して、コンテキストCTX1の演算を開始するまでの時間も掛かる。
なお、図2の場合、図3の場合に比べてコンテキストを切り替える時間が必要になるが、それは、上述した各処理に掛かる時間に比べれば、遥かに短い時間(演算が完了してから演算完了信号を出力するまでの時間とほぼ等価)で処理を行うことができる。
図4は図1のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えないときの動作を説明するための図であり、図5は図1のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えるときの動作を説明するための図である。
すなわち、図4は、入出力データ(演算結果)の数が入出力データを保持するためのレジスタの数を超えないときの動作を説明するものであり、また、図5は、演算結果の数が入出力データを保持するためのレジスタの数を超えるときの動作を説明するものである。
なお、図4および図5の例では、入出力データを保持するためのレジスタREGが6個(REG0〜REG5)あり、演算はコンテキストCTX0とコンテキストCTX1で実行する。
まず、図4(a)に示されるように、コンテキストCTX0実行前には、コンテキストCTX0の演算に必要な入力データA,BがそれぞれレジスタREG0,REG1に保持されている。また、コンテキストCTX1の演算に必要な入力データCがレジスタREG4に保持されている。
また、図4(b)に示されるように、コンテキストCTX0実行後には、コンテキストCTX0で演算を行った出力データa,bがそれぞれレジスタREG2,REG3に保持される。
そして、図4(c)に示されるように、コンテキストCTX1実行後には、コンテキストCTX1で演算を行った出力データcがレジスタREG5に保持される。
このように、図4の例では、リコンフィギュラブル回路102で演算を行うための入出力データ数(6個)がレジスタ数(6個)を超えることがないので、次に説明を行う図5の例における問題は発生しない。
次に、図5を参照して、リコンフィギュラブル回路102で演算を行うための入力データ数(7個)とリコンフィギュラブル回路で演算を行った出力データ数(演算結果の数:5個)が入出力データを保持するためのレジスタ数(6個)を超える場合を説明する。
まず、図5(a)に示されるように、コンテキストCTX0実行前には、コンテキストCTX0の演算に必要な入力データA,B,CがそれぞれレジスタREG0,REG1,REG2に保持されている。
次に、図5(b)に示されるように、コンテキストCTX0実行後には、コンテキストCTX0で演算を行った結果(出力データ)a,b,cがそれぞれレジスタREG3,REG4,REG5に保持される。
このように、コンテキストCTX0の入出力データを保持するために全てのレジスタREG0〜REG5が使用されることになる。すなわち、コンテキストCTX1の入力データをコンテキストCTX0実行前に予めレジスタに保持しておくことはできない。
そのため、図5(c)に示されるように、コンテキストCTX0実行後にコンテキストCTX0の出力データa,b,cを外部回路101(例えば、CPUのキャッシュメモリ)に待避させ、その後、空いたレジスタにコンテキストCTX1の入力データを書き込む。
さらに、図5(d)に示されるように、コンテキストCTX0の入力データA,B,CはコンテキストCTX0実行後は不要になるため、レジスタREG0,REG1,REG2にはコンテキストCTX1の入力データD,E,Fが上書きされる。
なお、待避させたコンテキストCTX0の出力データaが保持されていたレジスタREG3には、コンテキストCTX1の入力データGが書き込まれる。なお、待避させたコンテキストCTX0の出力データb,cが保持されていたレジスタREG4,REG5は空き状態になっている。
そして、図5(e)に示されるように、コンテキストCTX1の出力データd,eが空き状態になっているレジスタREG4,REG5に書き込まれる。
このように、入出力データ数がレジスタ数を超えると、すなわち、入出力データを保持するレジスタ数が不足すると、レジスタの内容を外部に待避させるための時間が掛かって動作が遅延することになる。
また、入出力データ数がレジスタ数を超えないようにレジスタ数を増やすことも考えられるが、そうすると、例えば、データネットワーク部(124)の入力ポート数と出力ポート数も増え、データネットワークの経路選択を行う回路規模が大きくなってしまう。
図6A,図6B〜図9A,図9Bはメモリを含むリコンフィギュラブル回路の動作の一例を説明するための図であり、データ演算部(124)内にRAM(Random Access Memory)などのメモリを配置し、そのメモリを利用した場合の動作を説明するためのものである。
すなわち、データ演算部(124)内に配置したメモリに対して、リコンフィギュラブル回路102で演算を行うための入力データとリコンフィギュラブル回路102で演算を行った出力データを保持する。
ここで、図6Aおよび図6B,図7Aおよび図7B,図8Aおよび図8B,並びに,図9Aおよび図9Bは、それぞれデータ演算部(124)に配置されたメモリ(RAM0〜RAM5)を利用してコンテキストCTX0およびCTX1を実行したときの各メモリ状態を示す。
すなわち、図6Aおよび図6Bは、外部回路101からの入力データが書き込まれたメモリ状態を示し、また、図7Aおよび図7Bは、コンテキストCTX0の実行中および実行後(コンテキストCTX1実行前)のメモリ状態を示している。
さらに、図8Aおよび図8Bは、コンテキストCTX1の実行中および実行後のメモリ状態を示し、そして、図9Aおよび図9Bは、外部回路から出力データを読み出す時のメモリ状態を示している。
図6A,図6B〜図9A,図9Bに示す例では、入出力データを保持するためのメモリ(RAM)が6個(RAM0〜RAM5)あり、演算はコンテキストCTX0とコンテキストCTX1で実行している。
まず、図6Aおよび図6Bに示されるように、コンテキストCTX0実行前にコンテキストCTX0の演算に必要な入力データA,B,Cを外部回路101から入力し、その入力データA,B,CをそれぞれメモリRAM0,RAM1,RAM2のアドレス0に書き込む。
同様に、コンテキストCTX1の演算に必要な入力データD,E,F,Gを外部回路101から入力し、その入力データD,E,F,GをそれぞれメモリRAM0,RAM1,RAM2,RAM3のアドレス1に書き込む。
ここで、コンテキストCTX1の入力データAとコンテキストCTX2の入力データDは、同一のメモリRAM0に書き込みが行われるが、書き込みアドレスが異なるため上書きされることなく、両方の入力データを保持することができる。なお、メモリRAM1,RAM2についても同様である。
次に、入力データA〜Gの書き込みが完了したら、外部回路101は演算開始信号OSSを出力し、その演算開始信号OSSを受信したリコンフィギュラブル回路102は、コンテキストCTX0の実行を行う。
すなわち、図7Aおよび図7Bに示されるように、メモリRAM0の読み出し/書き込み制御信号生成回路(R/W制御信号生成用演算器)は、メモリRAM0に対してコンテキストCTX0の演算入力データAの読み出しを行うための制御信号を出力する。
また、メモリRAM0のアドレス生成回路(アドレス生成用演算器)は、コンテキストCTX0の入力データAが保持されているアドレス値0を出力する。なお、コンテキストCTX0の入力データB,Cを出力するメモリRAM1,RAM2についても同様である。
さらに、コンテキストCTX0の演算出力データ(演算結果)a,b,cは、それぞれメモリRAM3,RAM4,RAM5のアドレス0に書き込みが行われる。
このとき、コンテキストCTX1の入力データGはメモリRAM3に保持されているが、コンテキストCTX0の演算出力データAが書き込まれるアドレス0と異なるアドレス1に保持されているので、上書きされることはない。
ここで、メモリRAM3のR/W制御信号生成用演算器は、コンテキストCTX0の演算出力データaのメモリRAM3への入力タイミングに同期して、メモリRAM3に対して演算出力データaの書き込みを行うための制御信号を出力する。
また、メモリRAM3のアドレス生成用演算器は、演算出力データaをアドレス0に書き込みを行うためのアドレス値0を出力する。なお、コンテキストCTX0の演算出力データb,cの書き込みを行うメモリRAM4,RAM5についても同様である。
さらに、図8Aおよび図8Bに示されるように、コンテキストCTX0の実行が完了したら、動的再構成によるコンテキストの切り替えを行って、コンテキストCTX1の実行を行う。
すなわち、メモリRAM0のR/W制御信号生成用演算器は、メモリRAM0に対してコンテキストCTX1の演算入力データDの読み出しを行うための制御信号を出力する。
また、メモリRAM0のアドレス生成用演算器は、コンテキストCTX1の入力データDが保持されているアドレス値1を出力する。コンテキストCTX1の入力データE,F,Gを出力するメモリRAM1,RAM2,RAM3についても同様である。
コンテキストCTX1の演算出力データ(演算結果)d,e,f,gはそれぞれメモリRAM2,RAM3,RAM4,RAM5のアドレス1に書き込みが行われる。
このとき、メモリRAM2,RAM3に保持されていたコンテキストCTX1の入力データF,Gに対して上書きが行われるが、コンテキストCTX1の演算は完了しているためコンテキストCTX1の入力データは不要であり、上書きされても問題は生じない。
メモリRAM2のR/W制御信号生成用演算器は、コンテキストCTX1の演算出力データdのメモリRAM2への入力タイミングに同期して、メモリRAM2に対して演算出力データdの書き込みを行うための制御信号を出力する。
また、メモリRAM2のアドレス生成用演算器は、演算出力データdをアドレス1に書き込みを行うためのアドレス値1を出力する。コンテキストCTX1の演算出力データe,f,gの書き込みを行うメモリRAM3,RAM4,RAM5についても同様である。
そして、リコンフィギュラブル回路102は、コンテキストCTX1の実行が完了したら、外部回路101に対して演算完了信号OCSを出力する。
さらに、演算完了信号OCSを受信した外部回路101は、演算が完了したことを認識し、コンテキストCTX0とコンテキストCTX1の演算結果をそれぞれの演算結果が保持されているメモリRAM0〜RAM5の該当アドレスから演算結果(演算出力データ)の読み出しを行う。
図9Aおよび図9Bに示されるように、メモリRAM3,RAM4,RAM5のアドレス0に保持されたコンテキストCTX0の演算結果a,b,c、並びに、メモリRAM2,RAM3,RAM4,RAM5のアドレス1に保持されたコンテキストCTX1の演算結果d,e,f,gが読み出される。
このように、コンテキストCTX0の演算結果a,b,cはコンテキストCTX1の実行によって上書きされることなく保持され、そのため、コンテキストCTX0の結果を外部回路101に待避させる必要がない。
しかしながら、図6A,図6B〜図9A,図9Bを参照して説明したRAMなどのメモリを有するリコンフィギュラブル回路は、以下のような課題が生じることになる。
まず、演算入力データが格納されているメモリ(RAM)に対して、コンテキスト単位に入力データが格納されているアドレスの読み出しを行うためのアドレス値を生成するための演算器が必要になる。さらに、データを格納するメモリに対してコンテキスト単位に出力データの書き込みを行うためのアドレス値を生成するための演算器が必要になる。
すなわち、多数のアドレス生成用演算器が必要になるため、本来の演算に使用するための演算器が不足する虞がある。
また、演算入力データが格納されているメモリと演算出力データを格納するメモリに対して、コンテキスト単位のR/W制御信号生成用演算器が必要になり、本来の演算に使用するための演算器が不足する虞がある。
さらに、データ演算部内のメモリリソースがデータ入出力のために消費されるため、データ演算を行うためのメモリ領域が不足する虞がある。
また、メモリとアドレス生成用演算器間、並びに、メモリとR/W制御信号生成用演算器間のネットワークリソースを消費するため、完全結合ではないデータネットワークを使用した場合、他の演算器と演算器間の結線性が低下する。
そして、例えば、RAM,アドレス生成用演算器およびR/W制御信号生成用演算器を新たに追加した場合、RAMと演算器の入出力をデータネットワークに接続するための入出力ポート数が増加してデータネットワークの回路規模が増大する虞がある。
以下、添付図面を参照して、リコンフィギュラブル回路および半導体集積回路の実施例を詳述する。
図10は半導体集積回路の一実施例を示すブロック図である。図10において、参照符号1は外部回路、2はダイナミック・リコンフィギュラブル回路を含むリコンフィギュラブル回路を示している。
図10に示されるように、半導体集積回路は、外部回路1およびリコンフィギュラブル回路2を含む。ここで、半導体集積回路は、例えば、CPUである外部回路1とそのアクセラレータとして機能するリコンフィギュラブル回路2を含む1つのパッケージングされたLSIである。
リコンフィギュラブル回路2は、レジスタ制御部21,入出力データインタフェース部22,コンフィグレーションデータ保持部23,データネットワーク部24,および,データ演算部25を含む。
外部回路1は、リコンフィギュラブル回路2で演算を行うための入力データIDATを入出力データバスに出力する。
また、外部回路1は、レジスタ制御部21に対して、書き込み制御信号WCSと入力データIDATを格納するためのレジスタREG00〜REGmnに対応するアドレスADDをアドレスバスに出力する。
ここで、レジスタREG00〜REGmnは、入出力データインタフェース部22において、例えば、出力ポートOTP0〜OTPn(ポートPRT0〜PRTn)に対応するREG00〜REG0nが深さ方向にm個(mバンク)並べられたマトリクス構造(…,REGm0〜REGmn)になっている。
なお、レジスタREG00〜REGmnは、フリップフロップ(FF)およびRAM等のデータを記憶することが可能なものであれば適用することが可能である。
レジスタ制御部21は、入出力データインタフェース部22に対して、入力されたアドレス値に対応するポートとバンクのレジスタREG00〜REGmnへのレジスタ書き込みイネーブル信号RWESを出力する。
さらに、レジスタ制御部21は、入出力データインタフェース部22に対して、外部/内部書き込みデータ選択信号WDSSを出力して外部データを選択する。これらの動作により、外部回路1からの入力データIDATをアドレスADDが示すレジスタに保持することができる。
外部回路1は、コンフィグレーションデータ保持部23に対して、動的再構成を行うためのコンフィギュレーションデータを、入出力データバスを介して出力する。
また、外部回路1は、レジスタ制御部21に対して、書き込み制御信号WCSを出力すると共に、コンフィギュレーションデータの保持を行うコンフィギュレーションデータ保持部23に対応するアドレスADDをアドレスバスに出力する。
さらに、外部回路1は、レジスタ制御部21に対して、外部回路1またはリコンフィギュラブル回路2からのデータのどちらを優先して書き込むかを示す外部回路/リコンフィギュラブル回路書き込み優先信号WPSを出力する。
レジスタ制御部21は、コンフィギュレーションデータ保持部23に対して、コンフィギュレーションデータ書き込みイネーブル信号CWESを出力し、外部回路1からのコンフィギュレーションデータを保持する。
外部回路1は、入出力データインタフェース部22,コンフィギュレーションデータ保持部23およびデータ演算部25に対して、演算を開始するための演算開始信号OSSを出力する。
この演算開始信号OSSにより、入出力データインタフェース部22のレジスタ(REG00〜REGmn)に格納された演算入力データは、データネットワーク部24を介して、データ演算部25(データ演算部の各演算器)に出力される。
コンフィギュレーションデータ保持部23は、各コンテキスト単位にどのバンクのレジスタをデータネットワーク部24(データ演算部25)に出力するかの情報をポートごとに出力する。
データネットワーク部24は、入出力データインタフェース部22の出力ポートとデータ演算部25の各演算器の入力端子間の経路選定、および、各演算器の出力端子と入出力データインタフェース部22の入力ポート間の経路選定を行う。さらに、データネットワーク部24は、各演算器の出力端子から各演算器の入力端子間の経路選定も行う。
コンフィギュレーションデータ保持部23には、動的再構成を行うためのネットワーク経路選定情報および各演算器に対する演算命令情報、並びに、入出力データインタフェース部22におけるレジスタ(REG00〜REGmn)のバンク情報などが保持されている。
また、コンフィギュレーションデータ保持部23は、各コンテキストのコンフィギュレーションデータが格納されているメモリの制御を行って、各コンテキストに対応したコンフィギュレーションデータを出力する。
データ演算部25で行った演算結果は、データネットワーク部24を介して出力され、入出力データインタフェース部22の各ポートに対応するレジスタ(REG00〜REGmn)に保持される。
ここで、レジスタ(REG00〜REGmn)への書き込みは、データネットワーク部24から出力された演算結果書き込み制御信号ORWCSと、コンフィギュレーションデータ保持部23から出力される各ポートのレジスタ入力バンク選択情報に基づいて行われる。
すなわち、レジスタ制御部21は、演算結果書き込み制御信号ORWCSおよび各ポートのレジスタ入力バンク選択情報を受け取って、対応するレジスタ書き込みイネーブル信号RWESを生成し、各レジスタに対する書き込みを制御する。
さらに、レジスタ制御部21は、入出力データインタフェース部22に対して、外部/内部書き込みデータ選択信号WDSSを出力して内部データを選択する。これらの動作により、データネットワーク部24を介して出力されるデータ演算部25の演算結果をアドレスADDが示すレジスタに保持することができる。
ここで、レジスタ(REG00〜REGmn)に対する書き込み処理は、外部回路1からの書き込みとリコンフィギュラブル回路2からの書き込みが同時に行われる事象が発生した場合、どちらの書き込みを優先するかの情報に基づいて行われる。
すなわち、外部回路1からの書き込みとリコンフィギュラブル回路2からの書き込みが同時に発生したときの優先書き込み処理は、外部回路1からレジスタ制御部21に供給される外部回路/リコンフィギュラブル回路書き込み優先信号WPSに基づいて行われる。
なお、正常時は同時書き込みの事象が発生しないため、例えば、レジスタ制御部21から外部回路1への同時書き込み検出信号SWDSをエラー情報として外部回路1に出力する。
演算が完了すると、入出力データインタフェース部22から外部回路1に対して演算完了信号OCSが出力され、外部回路1は演算が完了したことを認識する。
そして、外部回路1は、演算結果を取得するために、演算結果が保持されたレジスタ(REG00〜REGmn)に対応するアドレスADDを、アドレスバスを介してレジスタ制御部21に出力する。
レジスタ制御部21は、入出力データインタフェース部22に対して、そのアドレス値に基づいた出力データ選択信号ODSSを出力し、対応するレジスタの出力データ(演算結果)ODATが入出力データバスを介して外部回路1に出力される。
図11は図10のリコンフィギュラブル回路におけるコンフィギュレーションデータ保持部の一例を示すブロック図である。
コンフィグレーションデータ保持部23は、入出力データインタフェース部22におけるレジスタ(REG00〜REGmn)のバンク(BK0〜BKn)を切り替えるための複数のコンフィギュレーションデータを有し、コンテキスト単位にバンク切り替えを行えるようになっている。
すなわち、図11に示されるように、コンフィグレーションデータ保持部23には、例えば、n個のコンテキストCTX0〜CTXnのコンフィギュレーションデータが保持されている。
各コンフィギュレーションデータは、それぞれネットワーク経路選定情報,演算命令情報,並びに,各ポートのレジスタ出力バンク選択情報およびレジスタ入力バンク選択情報などのデータを有している。
すなわち、各コンフィギュレーションデータは、例えば、ポートPRT0のレジスタ入力バンク選択情報〜ポートPRTnのレジスタ入力バンク選択情報、並びに、ポートPRT0のレジスタ出力バンク選択情報〜ポートPRTnのレジスタ出力バンク選択情報を含む。
この各ポートのレジスタ入力バンク選択情報により、各コンテキストCTX0〜CTXnの各ポートPRT0〜PRTn単位に、どのバンク(BK0〜BKn)のレジスタ(REG00〜REGmn)への入力を行うかと、どのバンクのレジスタから出力するかを個別に指定できるようになっている。
図12は図10のリコンフィギュラブル回路におけるレジスタ制御部の一例を示すブロック図である。
図12に示されるように、レジスタ制御部21は、外部回路/リコンフィギュラブル回路同時書き込み検出部211,外部回路書き込みイネーブル信号生成部212,および,リコンフィギュラブル回路書き込みイネーブル信号生成部213を有する。
さらに、レジスタ制御部21は、優先判定部214,出力データ選択信号生成部215,OR回路216-00〜216-mn,および,外部/内部書き込みデータ選択信号生成回路217-00〜217-mnを有する。
外部回路書き込みイネーブル信号生成部212は、外部回路1からのアドレスADDおよび書き込み制御信号WCSを受け取り、外部回路書き込みイネーブル信号EWEを外部回路/リコンフィギュラブル回路同時書き込み検出部211および優先判定部214に出力する。
リコンフィギュラブル回路書き込みイネーブル信号生成部213は、データネットワーク部24からの演算結果書き込み制御信号ORWCSおよびコンフィグレーションデータ保持部23からの各ポートのレジスタ入力バンク選択情報を受け取る。
ここで、各ポートのレジスタ入力バンク選択情報は、各(入出力)ポートPRT0〜PRTnのレジスタバンク選択信号BSS0〜BSSnに対応する。また、生成されたリコンフィギュラブル回路書き込みイネーブル信号RCWEは、外部回路/リコンフィギュラブル回路同時書き込み検出部211および優先判定部214に出力される。
外部回路/リコンフィギュラブル回路同時書き込み検出部211は、外部回路書き込みイネーブル信号EWEとリコンフィギュラブル回路書き込みイネーブル信号RCWEを受け取り、同時書き込み検出信号SWDSを生成して外部回路1および優先判定部214に出力する。
なお、上述したように、同時書き込み検出信号SWDSは、正常時には生じない外部回路1とリコンフィギュラブル回路2の書き込みが同時に発生したときに出力されるものであり、エラー情報として外部回路1に提供される。
優先判定部214は、外部回路書き込みイネーブル信号EWEおよびリコンフィギュラブル回路書き込みイネーブル信号RCWEを受け取り、同時書き込み検出信号SWDSおよび外部回路/リコンフィギュラブル回路書き込み優先信号WPSに基づいて優先判定処理を行う。
すなわち、外部回路1からの書き込みとリコンフィギュラブル回路2からの書き込みが同時に発生すると、優先信号WPSに基づいて優先される側のイネーブル信号EWE(EWE00〜EWEmn)またはRCWE(RCWE00〜RCWEmn)を選択して後段の回路に出力する。
そして、優先判定部214は、外部回路1からの各バンクのレジスタに対する書き込みイネーブル信号EWE00〜EWEmn、および、リコンフィギュラブル回路2からの各バンクのレジスタに対する書き込みイネーブル信号RCWE00〜RCWEmnを出力する。
すなわち、バンクBK0のポートPRT0のレジスタREG00に対する信号EWE00およびRCWE00は、OR回路216-00および外部/内部書き込みデータ選択信号生成回路217-00に供給され、それぞれ信号RWES00およびWDSS00を出力する。
また、バンクBK1のポートPRT0のレジスタREG10に対する信号EWE10およびRCWE10は、OR回路216-10および外部/内部書き込みデータ選択信号生成回路217-10に供給され、それぞれ信号RWES10およびWDSS10を出力する。
さらに、バンクBKmのポートPRT0のレジスタREGm0に対する信号EWEm0およびRCWEm0は、OR回路216-m0および外部/内部書き込みデータ選択信号生成回路217-m0に供給され、それぞれ信号RWESm0およびWDSSm0を出力する。
そして、バンクBKmのポートPRTnのレジスタREGmnに対する信号EWEmnおよびRCWEmnは、OR回路216-mnおよび外部/内部書き込みデータ選択信号生成回路217-mnに供給され、それぞれ信号RWESmnおよびWDSSmnを出力する。
なお、出力データ選択信号生成回路215は、外部回路1からのレジスタ対象を示すアドレス情報ADDから、そのアドレス値に対応したレジスタ出力を選択するための出力データ選択信号を生成し、後述する図13のセレクタSELoに出力する。
図13は図10のリコンフィギュラブル回路における入出力データインタフェース部の一例を示すブロック図である。
図13に示されるように、入出力データインタフェース部22は、複数のレジスタREG00〜REGmn,および,セレクタSELo,SEL00〜SELmn,SELB0〜SELBnを有する。
図12および図13に示されるように、レジスタ書き込みイネーブル信号RWES00〜RWESmn(RWES)は、それぞれ対応するレジスタREG00〜REGmnに対して書き込みイネーブル信号として供給される。
すなわち、レジスタ書き込みイネーブル信号RWES00〜RWESmnがアサートされたときに、それぞれ対応するレジスタREG00〜REGmnに供給されたデータを書き込む。
さらに、図12および図13に示されるように、生成された外部/内部書き込みデータ選択信号WDSS00〜WDSSmn(WDSS)は、それぞれ対応するセレクタSEL00〜SELmnに対する書き込みデータ選択信号として供給される。
すなわち、各セレクタSEL00〜SELmnは、信号WDSS00〜WDSSmnに応じて外部回路1からの入力データIDATまたはデータネットワーク24(演算部25)からの演算結果入力を選択して対応するレジスタREG00〜REGmnに供給する。
図13において、レジスタREG00〜REGmnは、リコンフィギュラブル回路1で演算を行うための入力データ(IDATA)および演算を行った結果(演算結果入力)を保持する機能を有する。
ここで、レジスタREG00〜REGmnは、各ポートPRT0〜PRTnに対して複数個のデータを保持することができる。なお、ポートPRT0〜PRTnは、入出力データインタフェース部22の入力ポートおよび出力ポート(入出力ポート)として機能する。
例えば、ポートPRT0に着目したとき、レジスタREG00,REG10,REG20,…,REGm0というように、m+1個のデータを保持することができるようになっている。すなわち、各ポートに対して奥行き方向の記憶領域(バンク)BK0〜BKmを有している。
前述したように、各レジスタREG00〜REGmnへのデータ書き込みは、レジスタ書き込みイネーブル信号RWES00〜RWESmnによって行われるが、外部回路1からの入力データIDATとリコンフィギュラブル回路2自体の演算結果入力を選択して保持するようになっている。
セレクタSELB0〜SELBnは、各ポートPRT0〜PRTnにおいて、各ポートのレジスタ出力バンク選択情報に基づいてどのバンクBK0〜BKmに保持されているデータをデータ演算部25で演算を行うための入力データとして出力するか選択を行う。
なお、各ポートのレジスタ出力バンク選択情報(コンフィギュレーションデータ)は、コンフィギュレーションデータ保持部23から供給される。また、バンクの切り替えは、後述するように、コンテキスト(CTX0,CTX1)単位に切り替えることができる。
また、セレクタSELoは、どのレジスタREG00〜REGmnに保持されている演算結果を外部回路1に出力するかの選択を行う。ここで、レジスタREG00〜REGmnの選択は、レジスタ制御部21からの出力データ選択信号ODSSによって行われる。なお、外部回路1は、全てのレジスタREG00〜REGmnの選択を行うことができる。
さらに、セレクタSEL00〜SELmnは、レジスタREG00〜REGmnに対して、外部回路1からの入力データIDATを書きこむか、リコンフィギュラブル回路2(データ演算部25)で演算した結果を書きこむかの選択を行う。
すなわち、レジスタ書き込みイネーブル信号RWES00〜RWESmnがアサートされたレジスタREG00〜REGmnに対して、セレクタSEL00〜SELmnにより選択された側のデータが書き込まれる。
なお、レジスタREG00〜REGmnは、フリップフロップやRAMなどのデータを記憶できるものであればなんでもよい。また、図13では、各ポートPRT0〜PRTnに対して全てレジスタが設けられているが、これは単なる例であり、ポートPRT0〜PRTnの一部に対してレジスタを設けないようにしてもよい。
図14は図10の半導体集積回路の動作の一例を説明するためのであり、左側は外部回路1の動作フローを示し、また、右側はリコンフィギュラブル回路2の動作フローを示す。
ここで、図14は、コンテキストCTX0とCTX1で、ポートPRT0の入力データを換える必要がある場合、すなわち、前述した図3のケースに対して本実施例を適用した場合の動作フローを示している。
まず、図14に示されるように、外部回路1は、コンテキストCTX0の入力データをバンクBK0のポートPRT0のレジスタREG00に書き込み、コンテキストCTX1の入力データをバンクBK1のポートPRT0のレジスタREG10に書き込み、演算開始信号OSSを出力する。
ここで、コンテキストCTX0のコンフィギュレーションデータに含まれるポートPRT0のレジスタ出力バンク選択情報(セレクタSELB0の制御信号)により、コンテキストCTX0の実行時にはバンクBK0(レジスタREG00)の出力が選択される。そして、このバンクBK0(レジスタREG00)の出力がコンテキストCTX0の演算入力データになる。
次に、コンテキストCTX0の実行が完了したら、動的再構成によるコンテキストの切り替えを行い、コンテキストCTX1の実行を行う。
このとき、コンテキストCTX1のコンフィギュレーションデータに含まれるポートPRT0のレジスタ出力バンク選択情報(セレクタSELB0の制御信号)により、コンテキストCTX1の実行時にはバンクBK1(レジスタREG10)の出力が選択され。そして、このバンクBK1(レジスタREG10)の出力がコンテキストCTX1の演算入力データになる。
さらに、コンテキストCTX1の実行が完了したら外部回路1に演算完了信号OCSを出力する。演算完了信号OCSを受信した外部回路1は、演算が完了したことを認識し、コンテキストCTX0とコンテキストCTX1の演算結果をそれぞれの演算結果が保持されているレジスタから演算結果の読み出しを行う。
すなわち、出力データ選択信号ODSSによりセレクタSELoを制御して、コンテキストCTX0およびCTX1の演算結果が保持されているレジスタから出力データODATを読み出す。
図15は図10の半導体集積回路の動作の他の例を説明するためのであり、左側は外部回路1の動作フローを示し、また、右側はリコンフィギュラブル回路2の動作フローを示す。この図15に示す動作フローは、図14の動作フローにおいて、コンテキストCTX0およびCTX1の処理を並列的に実行するものである。
図15に示されるように、コンテキストCTX0の演算実行時間に対してコンテキストCTX1の入力データを書き込む時間が十分に小さい場合、コンテキストCTX0の演算実行と並行してコンテキストCTX1の入力データをバンクBK1のポートPRT0のレジスタREG10に書き込む。
この場合、コンテキストCTX0の演算実行時間内に並行してコンテキストCTX1の入力データを書き込むため、一連の処理にかかる時間を考えると、コンテキストCTX1の入力データを書き込む時間はゼロになり、さらなる高速化の効果を得ることができる。
このように、各バンクを選択する手段と、バンクの選択情報を各コンテキスト単位に持たせて動的再構成と連動してバンク選択信号を出力する手段を持つことで、コンテキスト間で実行を停止することなく各コンテキストの入力データを供給することが可能になる。
図16は図10のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えるときの動作を説明するための図である。
まず、図16(a)に示されるように、コンテキストCTX0実行前にバンクBK0にあるレジスタREG00,REG01,REG02にコンテキストCTX0の入力データA,B,Cを書き込む。同様に、コンテキストCTX0実行前にバンクBK1にあるレジスタREG10,REG11,REG12,REG13にコンテキストCTX1の入力データD,E,F,Gを書き込む。
そして、コンテキストCTX0とコンテキストCTX1の入力データの書き込みが完了したら、演算開始信号OSSを出力してコンテキストCTX0を実行する。
ここで、コンテキストCTX0実行時には、コンテキストCTX0のコンフィギュレーションデータに含まれるポートPRT0〜PRT5のレジスタ出力バンク選択情報により、バンクBK0のレジスタREG00,REG01,REG02の出力が選択される。これにより、入力データA,B,CがコンテキストCTX0の演算の入力データになる。
図16(b)に示されるように、コンテキストCTX0の実行結果は、コンテキストCTX0のコンフィギュレーションデータに含まれるポートPRT0〜PRT5のレジスタ出力バンク選択情報により、バンクBK0のレジスタREG03,REG04,REG05にデータa,b,cが保持される。
コンテキストCTX0の実行が完了したら、動的再構成によるコンテキストの切り替えを行い、コンテキストCTX1の実行を行う。
図16(c)に示されるように、コンテキストCTX1のコンフィギュレーションデータに含まれるポートPRT0〜PRT5のレジスタ出力バンク選択情報により、コンテキストCTX1実行時には、バンクBK1のレジスタREG10,REG11,REG12,REG13の出力が選択される。これにより、入力データD,E,F,GがコンテキストCTX1の演算の入力データになる。
ここで、コンテキストCTX1の入力データD,E,F,Gは、コンテキストCTX0実行前に既にバンクBK1のレジスタREG10,REG11,REG12,REG13に書き込まれている。そして、動的再構成によるコンテキストの切り替えに連動して、バンクBK1にあるレジスタREG10,REG11,REG12,REG13が選択されるので、コンテキスト間で実行を停止することなく、各コンテキストの入力データを供給することが可能になる。
図16(c)に示されるように、コンテキストCTX1の実行結果d,e,f,gは、コンテキストCTX1のコンフィギュレーションデータに含まれるポートPRT0〜PRT5のレジスタ出力バンク選択情報によりバンクBK1のレジスタREG12,REG13,REG14,REG15に保持される。
なお、リコンフィギュラブル回路2は、コンテキストCTX1の実行が完了したら演算完了信号OCSを外部回路1に出力する。演算完了信号OCSを受信した外部回路1は、演算が完了したことを認識し、コンテキストCTX0およびCTX1の演算結果をそれぞれの演算結果が保持されているレジスタから読み出す。
すなわち、出力データ選択信号ODSSにより、バンクBK0のレジスタREG03〜REG05に保持されたコンテキストCTX0の演算結果a,b,cと、バンクBK1のレジスタREG12〜REG15に保持されたコンテキストCTX1の演算結果d,e,f,gが読み出される。
ところで、バンクがない場合(BK0しかない場合)、レジスタREG00,REG01,REG02に保持されているコンテキストCTX0の入力が不要であればコンテキストCTX1の演算結果をそのレジスタREG00,REG01,REG02に上書きしても問題はない。しかしながら、コンテキストCTX1の結果は4つ(データd,e,f,g)あるのでレジスタ数が不足することになる。
また、レジスタREG03,REG04,REG05にはコンテキストCTX0の演算結果が保持されており、外部回路1がコンテキストCTX0の演算結果a,b,cをまだ読み出していないため、コンテキストCTX1の結果を上書きすることはできない。
これに対して、本実施例によれば、上述したような問題を生じることなく、また、ポート数を増やすことなく、対応することが可能である。
以上、詳述したように、本実施例によれば、演算の入出力データの格納にデータ演算部内のメモリを使用しないため、RAMアドレスの読み出しと書き込みを行うためのアドレス生成用演算器が不要になり、これに起因した演算器不足の発生をなくすことができる。
また、演算の入出力データの格納にデータ演算部の内部メモリを使用しないため、RAMの読み出し/書き込み制御信号を生成するための演算器が不要になり、これに起因した演算器不足の発生をなくすことができる。これは、データ演算部の内部メモリにおけるメモリ領域の不足を生じないことにもなる。
さらに、データ演算部の内部メモリだけでなく、アドレス生成用演算器およびR/W制御信号生成用演算器も使用しないため、これに起因した他の演算器と演算器間の結線性の低下をなくすことができる。
また、データ演算部内のメモリ、アドレス生成用演算器、および、読み出し/書き込み制御信号を生成するための演算器を新たに追加する必要性もない。
そのため、これらのRAMおよび演算器の入出力をデータネットワークに接続するためのデータネットワークの入出力ポート数を増加する必要はなく、さらに、データネットワークの回路規模が増大することもない。
[コンフィギュレーションデータの設定方法について]
次に、図17の記述例に基づいて、コンフィギュレーションデータの設定方法を説明する。図17は図10のリコンフィギュラブル回路において、コンテキストで実行する演算内容の記述例を示す図であり、論理式により記述した例を示している。
図17の例では、コンテキストCTX0(#context0)において、(A+B)*Cの演算を行い、その結果をXに代入し、さらに、コンテキストCTX1(#context1)において、(B−C)*Dの演算を行い、その結果をYに代入する。
そして、ソフトウェアを用いて、論理式を記述したファイルを入力とし、各コンテキストの以下の情報をコンフィギュレーションデータとして出力する。このソフトウェアを、以下の説明ではコンパイラと称する。
すなわち、コンフィギュレーションデータとして出力する情報(出力情報)は、論理式と等価な演算結果を得るためのデータ演算部25における各演算器の割り当て情報、および、その割り当てた演算器の演算命令情報を含む。
また、出力情報は、割り当てた演算器間でデータの入出力を行うためのデータネットワーク部24のネットワーク経路選定情報(経路選定情報)を含む。
さらに、出力情報は、入力データA,B,C,Dをデータインタフェース部24のどのレジスタ(ポートとバンク)に保持するかの割り当て情報、および、出力データ(演算結果)X,Yをデータインタフェース部のどのレジスタに保持するかの割り当て情報を含む。
また、出力情報は、入出力データインタフェース部22の入力データが保持されたレジスタおよび出力データを保持するレジスタと、割り当てた演算器間でデータの入出力を行うためのデータネットワーク部24の経路選定情報を含む。
以下、コンパイラによるこれらの出力情報(コンフィギュレーションデータとして出力する情報)の生成方法の一例を説明する。
ここで、データ演算部25に4つの演算器(OP0〜OP3)があり、それぞれ加算,減算および乗算が行えるものとする。
また、入出力データインタフェース部22は、入出力それぞれ3つのポート(入力ポートINP0〜INP2および出力ポートOTP0〜OTP2)を持ち、レジスタは、各ポートに対して2つのバンク(BK0,BK1)を持つものとする。
すなわち、入力ポートINP0〜INP2と出力ポートOTP0〜OTP2は同数であり、それぞれに対してバンクBK0のレジスタREG00〜REG02およびバンクBK1のレジスタREG10〜REG12が設けられている。
[演算器の割り当てと演算器の演算命令情報の生成について]
まず、コンテキストCTX0における入力データAとBの演算(加算)を行うために演算器OP0を割り当て、演算器OP0に加算命令を与えるためのコンフィギュレーションデータを外部回路1からコンフィギュレーションデータ保持部23に出力する。
次に、コンテキストCTX0における演算器OP0の出力と入力データCの演算(乗算)を行うために演算器OP1を割り当て、演算器OP1に乗算命令を与えるためのコンフィギュレーションデータを外部回路1からコンフィギュレーションデータ保持部23に出力する。
さらに、コンテキストCTX1における入力データBとCの演算(減算)を行うために演算器OP2を割り当て、演算器OP2に減算命令を与えるためのコンフィギュレーションデータを外部回路1からコンフィギュレーションデータ保持部23に出力する。
そして、コンテキストCTX1における演算器OP2の出力と入力データDの演算(乗算)を行うために演算器OP3を割り当て、演算器OP3に乗算命令を与えるためのコンフィギュレーションデータを外部回路1からコンフィギュレーションデータ保持部23に出力する。以上により、演算器の割り当てと演算器の演算命令情報の生成が行われることになる。
[演算器間でデータの入出力を行うための経路選定情報の生成について]
まず、コンテキストCTX0における演算器OP0の結果(A+B)を入力として演算器OP1で演算を行うために、演算器OP0の出力と演算器OP1の入力が接続されるためのコンフィギュレーションデータを外部回路1からコンフィギュレーションデータ保持部23に出力する。
また、コンテキストCTX1における演算器OP2の結果(B−C)を入力として演算器OP3で演算を行うために、演算器OP2の出力と演算器OP3の入力が接続されるためのコンフィギュレーションデータを外部回路1からコンフィギュレーションデータ保持部23に出力する。
以上により、演算器間でデータの入出力を行うための経路選定情報の生成が行われることになる。なお、[入出力データインタフェース部と演算器間の経路選定情報の生成について]は、後に詳述する。
[入出力データを保持するレジスタの割り当て情報の生成について]
まず、入出力データを保持するレジスタの割り当て情報の生成について説明する。まず、コンテキストCTX0の入力データA,B,Cを入力ポートINP0〜INP2に対応するバンクBK0のレジスタREG00〜REG02に保持することを決定する。なお、入力データB,CはコンテキストCTX1の入力データとしても利用される。
ここで、コンテキストCTX0の入力データAは、コンテキストCTX0の演算が完了した後は(コンテキストCTX1の演算では)使用しない。そこで、出力データXを上書きしても問題ないと判断し、コンテキストCTX0の出力データXを入力ポートINP0に対応するバンクBK0のレジスタREG00に保持することを決定する。
さらに、以下の(J1)〜(J4)に示す判断に基づいて、コンテキストCTX1の入力データDを入力ポートINP0に対応するバンクBK1のレジスタREG10に保持することを決定する。
(J1)まず、入力ポートINP0に対応するバンクBK0のレジスタREG00には、コンテキストCTX0の演算結果であるXが格納されているので、外部回路1が読み出しを行うまでは上書きはできない。
(J2)また、入力ポートINP1に対応するバンクBK0のレジスタREG01には、コンテキストCTX0の入力データであるBが保持されているが、コンテキストCTX1の入力データでもあるため、上書きはできない。
(J3)さらに、入力ポートINP2に対応するバンクBK0のレジスタREG02には、コンテキストCTX0の入力データであるCが保持されているが、コンテキストCTX1の入力データでもあるため、上書きはできない。
(J4)よって、入力ポートIN0〜INP2に対応するバンクBK0のレジスタREG00〜REG02は使用できないため、バンクBK1のレジスタを使用すると判断する。すなわち、コンテキストCTX1の入力データDの保持は、入力ポートINP0に対応するバンクBK1のレジスタREG10に保持することを決定する。
そして、コンテキストCTX1の演算が完了した時点ですべての入力データは使用されないので、コンテキストCTX0の入力データBが保持されている入力ポートINP1に対応するバンクBK0のレジスタREG01に出力データYを上書きしても問題ないと判断する。すなわち、コンテキストCTX1の出力データYを入力ポートINP1に対応するバンクBK0のレジスタREG01に保持することを決定する。
上記の決定結果から、以下の情報を出力する。まず、入出力データインタフェース部22の各ポートPRT0〜PRTnにおいて、どのバンクBK0〜BKmに保持されているデータをリコンフィギュラブル回路2での演算に使用するかを選択するコンフィギュレーションデータを出力する。
ここで、外部回路1からコンフィグレーションデータ保持部23に出力されるコンフィギュレーションデータは、コンフィグレーションデータ保持部23から入出力データインタフェース部22に出力されるレジスタ出力バンク選択情報を含む。
すなわち、図13を参照して説明したように、セレクタSELB0〜SELBnを制御してバンクBK0〜BKmのレジスタに保持されたデータを選択してポートPRT0〜PRTnから出力するためのレジスタ出力バンク選択情報(コンフィギュレーションデータ)を出力する。なお、ポートPRT0〜PRTnは、入出力データインタフェース部22の入力ポートおよび出力ポート(入出力ポート)として機能する。
また、入出力データインタフェース部22の各入力ポートにおいて、リコンフィギュラブル回路1で演算を行った結果をどのバンクに保持するかを選択するコンフィギュレーションデータを出力する。
すなわち、図12を参照して説明したように、リコンフィギュラブル回路書き込みイネーブル信号生成部213に入力されるポートPRT0〜PRTnのレジスタバンク選択信号BSS0〜BSSnを出力する。
なお、レジスタバンク選択信号BSS0〜BSSnは、コンフィグレーションデータ保持部23からレジスタ制御部21に対する各ポートのレジスタ入力バンク選択情報に対応する。
さらに、外部回路1に対して、入力データA,B,C,DをどのポートPRT0〜PRTnのどのバンクBK0〜BKmのレジスタREG00〜REGmnに書き込むかを指示するためのデータを出力する。
また、外部回路1に対して、演算結果X,Yをどのポートのどのバンクのレジスタから読み出すかを指示するためのデータを出力する。
例えば、外部回路1であるCPUが入出力データインタフェース部22に入力データIDATを書き込むプログラムに対して、各入力データをどのポートのどのバンクのレジスタに書き込む必要があるかをアドレス値で示したファイルをレジスタ制御部21に出力する。
或いは、上記の各入力データをどのポートのどのバンクのレジスタに書き込む必要があるかをアドレス値で示したファイルをCPUのプログラムソースにインクルードすることによって実現することもできる。なお、演算結果の読み出しについても同様である。
[入出力データインタフェース部と演算器間の経路選定情報の生成について]
以下、前述した[演算器の割り当てと演算器の演算命令情報の生成について]で得られた演算器の割り当て結果と、[入出力データを保持するレジスタの割り当て情報の生成について]で得られたレジスタの割り当て結果に基づいて説明を行う。
すなわち、前述した例に基づいて、入出力データインタフェース部22とデータ演算部25(演算器)間でデータの入出力を行うためのデータネットワーク部24における経路選定情報の生成について説明する。
まず、コンテキストCTX0において、A+Bの演算を行うために割り当てた演算器0の入力データAを入力する入力ポートと、入力データAを出力する入出力データインタフェース部22の出力ポート(OPT0)を接続するコンフィギュレーションデータを出力する。
このコンフィギュレーションデータは、データネットワーク部24に対してネットワーク経路選定情報(経路選定情報)として与えられ、上記の接続が実現される。
同様に、演算器0の入力データBを入力する入力ポートと、入力データBが出力される入出力データインタフェース部22の出力ポート(OTP1)を接続するデータネットワーク部24のコンフィギュレーションデータを出力する。
次に、コンテキストCTX0において、演算器0の結果(A+B)と入力データCの演算を行うために割り当てた演算器1の入力データCの入力ポートと、入出力データインタフェース部22の出力ポート(OTP2)を接続するコンフィギュレーションデータを出力する。
さらに、コンテキストCTX0において演算結果Xを出力する演算器1の出力ポートと、演算結果Xを保持するデータインタフェース部の入力ポートINP0を接続するコンフィギュレーションデータを出力する。
また、コンテキストCTX1において、B−Cの演算を行うために割り当てた演算器2の入力データBを入力する入力ポートと、入力データBが出力されるデータインタフェース部の出力ポートOTP1を接続するコンフィギュレーションデータを出力する。
同様に、演算器2の入力データCを入力する入力ポートと、入力データCが出力されるデータインタフェース部の出力ポートOTP2を接続するコンフィギュレーションデータを出力する。
さらに、コンテキストCTX1において演算器2の結果(B−C)と入力データDの演算を行うために割り当てた演算器3の入力データDの入力ポートと、データインタフェース部22の出力ポートOTP0を接続するコンフィギュレーションデータを出力する。
また、コンテキストCTX1において演算結果Yを出力する演算器3の出力ポートと、演算結果Yを保持するデータインタフェース部の入力ポートINP1を接続するコンフィギュレーションデータを出力する。
そして、コンパイラが出力したコンテキストごとのこれら各種コンフィギュレーション情報を、図11を参照して説明したコンフィギュレーションデータ保持部23にコンフィギュレーションデータとして外部回路1から書き込みを行う。
なお、コンフィギュレーションデータは、コンフィギュレーションデータ保持部23を介してデータネットワーク部24に対して経路選定情報(ネットワーク経路選定情報)として与えられることになる。
[コンフィギュレーションデータに連動してバンクが切り切り替わる仕組みついて]
図18は図11のコンフィギュレーションデータ保持部をより詳細に示すブロック図であり、図11に対してプログラマブルカウンタ231およびコンフィギュレーションデータ選択回路232を追加したものに相当する。
プログラマブルカウンタ231は、動的再構成によって実行されるコンテキストのコンフィギュレーションデータが格納されたメモリのアドレスを指定する。
コンフィギュレーションデータ選択回路232は、プログラマブルカウンタ231により指定されたアドレスに保持されたデータを選択し、レジスタ出力バンク選択情報およびレジスタ入力バンク選択情報を含む各種コンフィギュレーションデータを出力する。
以下、前述した[入出力データを保持するレジスタの割り当て情報の生成について]で説明した例に基づいて、コンフィギュレーションデータに連動してバンクが切り切り替わる仕組みついて説明する。
まず、コンテキストCTX0のコンフィギュレーションデータの1つである各ポートのレジスタ出力バンク選択情報およびレジスタ入力バンク選択情報には、次の情報が格納されている。
ポートPRT0のレジスタ出力バンク選択:0(BK0を選択)
ポートPRT1のレジスタ出力バンク選択:0(BK0を選択)
ポートPRT2のレジスタ出力バンク選択:0(BK0を選択)
ポートPRT0のレジスタ入力バンク選択:0(BK0を選択)
ポートPRT1のレジスタ入力バンク選択:使用しないのでドントケア(Don't care)
ポートPRT2のレジスタ入力バンク選択:使用しないのでドントケア(Don't care)
同様に、コンテキストCTX1のコンフィギュレーションデータの1つである各ポートのレジスタ出力バンク選択情報およびレジスタ入力バンク選択情報には、次の情報が格納されている。
ポートPRT0のレジスタ出力バンク選択:1(BK1を選択)
ポートPRT1のレジスタ出力バンク選択:0(BK0を選択)
ポートPRT2のレジスタ出力バンク選択:0(BK0を選択)
ポートPRT0のレジスタ入力バンク選択:使用しないのでドントケア(Don't care)
ポートPRT1のレジスタ入力バンク選択:0(BK0を選択)
ポートPRT2のレジスタ入力バンク選択:使用しないのでドントケア(Don't care)
ここで、コンテキストCTX0のコンフィギュレーションデータが格納されたメモリのアドレス値を0、コンテキストCTX1のコンフィギュレーションデータが格納されたメモリのアドレス値を1とする。
まず、外部回路1から演算を開始するための演算開始信号OSSを受信すると、プログラマブルカウンタ231はコンテキストCTX0のコンフィギュレーションが格納されたアドレス値(この場合は0)にリセットされる。
また、コンフィギュレーションデータ選択回路232は、演算開始信号OSSの受信により、プログラマブルカウンタ231が示すアドレス値=0に格納されたコンテキストCTX0のコンフィギュレーションデータを出力する。
さらに、コンテキストCTX0のコンフィギュレーションデータに含まれる各ポートのレジスタ出力バンク選択情報は、入出力データインタフェース部22に出力される。
ここで、各ポートのレジスタ出力バンク選択情報は、前述した図13におけるセレクタSELB0〜SELBの選択信号に対応している。これにより、入出力データインタフェース部22のポートPRT0,PRT1,PRT2からは各ポートのバンクBK0のレジスタREG00,REG01,REG02に保持された入力データA,B,Cが出力される。
コンテキストCTX0の演算結果は、データネットワーク部24の経路選定により入出力データインタフェース部22のポートPRT0に入力される。
各ポートのレジスタ入力バンク選択情報(レジスタバンク選択信号BSS0〜BSSn)は、前述した図12に示すレジスタ制御部21におけるリコンフィギュラブル回路書き込みイネーブル信号生成部213に入力される。
なお、各ポートのレジスタ入力バンク選択情報により、最終的に、レジスタ制御部21から出力されるレジスタ書き込みイネーブル信号RWES(RWES00〜RWESSmn)等が制御されることになる。
そして、レジスタ書き込みイネーブル信号RWES(RWES00〜RWESSm0)は、例えば、ポートPRT0のレジスタに演算結果が到達するタイミングでアサートされ、ポートPRT0の所定のレジスタに対する書き込みが行われる。
また、プログラマブルカウンタ231は、コンテキストCTX0の演算が完了したことを認識し、カウンタ値をインクリメントして、コンテキストCTX1のコンフィギュレーションデータが格納されているアドレス値1を出力する。
さらに、コンフィギュレーションデータ選択回路232は、プログラマブルカウンタ231が示すアドレス値=1に格納されたコンテキストCTX1のコンフィギュレーションデータを出力する。
そして、コンテキストCTX1のコンフィギュレーションデータに含まれる各ポートのレジスタ出力バンク選択情報は、入出力データインタフェース部22に出力される。
これにより、入出力データインタフェース部22のポートPRT0,PRT1,PRT2からは、それぞれバンクBK1,BK0,BK0のレジスタに保持された入力データD,B,Cが出力されることになる。
コンテキストCTX1の演算結果は、データネットワーク部24の経路選定により入出力データインタフェース部22のポートPRT1に入力される。
各ポートのレジスタ入力バンク選択情報(レジスタバンク選択信号BSS0〜BSSn)は、レジスタ制御部21におけるリコンフィギュラブル回路書き込みイネーブル信号生成部213に入力され、レジスタ書き込みイネーブル信号RWES(RWES00〜RWESSmn)等を制御する。
そして、レジスタ書き込みイネーブル信号RWES(RWES01〜RWESSm1)は、例えば、ポートPRT1のレジスタに演算結果が到達するタイミングでアサートされ、ポートPRT1の所定のレジスタに対する書き込みが行われる。
このように、各コンテキストのコンフィギュレーションデータに連動して各ポートのバンク(レジスタ)を切り替えることができる。
以上において、リコンフィギュラブル回路は、例えば、CPUなどの外部回路のアクセラレータとして使用され、CPUからのコンテキストに基づいてその回路構成を時間と共に動的に変化させるダイナミック・リコンフィギュラブル回路を含む。
また、CPUとしての外部回路と、そのCPUのアクセラレータとして使用されるリコンフィギュラブル回路をワンチップLSI(Large Scale Integration)として形成することができる。もちろん、外部回路およびリコンフィギュラブル回路を別の半導体チップとして形成してもよいのはいうまでもない。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
複数の演算器と、該複数の演算器に入力する演算入力データ,および,該複数の演算器から出力される演算出力データを保持する入出力データインタフェース部と、を有し、前記複数の演算器の接続をコンテキスト毎に制御するリコンフィギュラブル回路であって、
前記入出力データインタフェース部は、
複数のポートと、
該複数のポートに接続され、深さ方向にm[mは2以上の整数]バンクを有する複数のレジスタと、
を有することを特徴とするリコンフィギュラブル回路。
(付記2)
付記1に記載のリコンフィギュラブル回路において、さらに、
前記複数の演算器を含むデータ演算部と、
前記入出力データインタフェース部の前記複数のポートと前記複数の演算器の接続を制御するデータネットワーク部と、
複数のコンテキストのコンフィギュレーションデータを、該コンテキスト毎に保持するコンフィギュレーションデータ保持部と、
前記入出力データインタフェース部の前記各レジスタを制御するレジスタ制御部と、
を有することを特徴とするリコンフィギュラブル回路。
(付記3)
付記2に記載のリコンフィギュラブル回路において、
前記コンテキスト毎のコンフィギュレーションは、前記データ演算部からの演算出力データを前記各ポートのどのバンクのレジスタに書き込みを行うかの該各ポートのレジスタ入力バンク選択情報を有し、
前記レジスタ制御部は、前記各ポートのレジスタ入力バンク選択情報に基づいて、該各ポートの書き込みを行う対象のバンクのレジスタに対してリコンフィギュラブル回路書き込みイネーブル信号を生成するリコンフィギュラブル回路書き込みイネーブル信号生成部を有することを特徴とするリコンフィギュラブル回路。
(付記4)
付記3に記載のリコンフィギュラブル回路において、
前記コンテキスト毎のコンフィギュレーションは、前記データ演算部への演算入力データを前記各ポートのどのバンクのレジスタからのデータを出力するかの該各ポートのレジスタ出力バンク選択情報を有し、
前記入出力データインタフェース部は、さらに、前記各ポートのレジスタ出力バンク選択情報に基づいて、該各ポートからデータを出力する対象のバンクを選択する第1選択部を有することを特徴とするリコンフィギュラブル回路。
(付記5)
付記1〜4のいずれか1項に記載のリコンフィギュラブル回路において、該リコンフィギュラブル回路は、前記コンテキストに基づいてその回路構成を時間と共に動的に変化させるダイナミック・リコンフィギュラブル回路であることを特徴とするリコンフィギュラブル回路。
(付記6)
付記3〜5のいずれか1項に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、
外部回路からレジスタ対象を示すアドレス情報と、該外部回路から書き込みの指示を行う書き込み制御信号を受け取って、書き込み対象のレジスタに対して外部回路書き込みイネーブル信号を出力する外部回路書き込みイネーブル信号生成部と、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号を受け取って、どちらかのイネーブル信号がアサートされたときに対応するレジスタにレジスタ書き込みイネーブル信号をアサートする第1論理回路と、
前記リコンフィギュラブル回路書き込みイネーブル信号がアサートされたときは前記演算出力データを選択し、前記外部回路書き込みイネーブル信号がアサートされたときは前記外部回路からの演算入力データを選択する外部/内部書き込みデータ選択信号を生成する外部/内部書き込みデータ選択信号生成回路と、
を有することを特徴とするリコンフィギュラブル回路。
(付記7)
付記6に記載のリコンフィギュラブル回路において、
前記入出力データインタフェース部は、さらに、前記外部/内部書き込みデータ選択信号に基づいて、前記各レジスタに保持するデータを、前記演算入力データまたは前記演算出力データから選択する第2選択部を有することを特徴とするリコンフィギュラブル回路。
(付記8)
付記6または7に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたことを検出する外部回路/リコンフィギュラブル回路同時書き込み検出部と、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたときに、前記外部回路からのどちらの書き込みを優先させるかを規定する外部回路/リコンフィギュラブル回路書き込み優先信号に基づいて、優先判定を行う優先判定部と、
を有することを特徴とするリコンフィギュラブル回路。
(付記9)
付記8に記載のリコンフィギュラブル回路において、
前記外部回路/リコンフィギュラブル回路同時書き込み検出部は、前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたことを検出して、同時書き込み検出信号をエラー情報として前記外部回路に出力することを特徴とするリコンフィギュラブル回路。
(付記10)
付記6〜9のいずれか1項に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、前記外部回路からのレジスタ対象を示すアドレス情報から、そのアドレス値に対応したレジスタ出力を選択するための出力データ選択信号を生成す出力データ選択信号生成回路を有し、
前記前記入出力データインタフェース部は、さらに、前記出力データ選択信号に基づいて、レジスタ出力データを選択して外部回路に出力する第3選択部を有することを特徴とするリコンフィギュラブル回路。
(付記11)
付記6〜10のいずれか1項に記載のリコンフィギュラブル回路において、
前記コンフィギュレーションデータ保持部は、
前記各コンテキストのコンフィギュレーションデータが格納されたメモリと、
該メモリのアドレスを指定するプログラマブルカウンタと、
前記プログラマブルカウンタにより指定されたアドレスに保持されたデータを選択し、前記レジスタ出力バンク選択情報および前記レジスタ入力バンク選択情報を含む各種コンフィギュレーションデータを出力するコンフィギュレーションデータ選択回路と、
を有することを特徴とするリコンフィギュラブル回路。
(付記12)
付記6〜11のいずれか1項に記載のリコンフィギュラブル回路、および、前記外部回路を有することを特徴とする半導体集積回路。
(付記13)
付記12の半導体集積回路において、
前記外部回路はCPUであり、前記リコンフィギュラブル回路は、該CPUのアクセラレータであることを特徴とする半導体集積回路。
(付記14)
付記13の半導体集積回路において、
前記CPUおよび前記アクセラレータは、ワンチップLSIとして形成されることを特徴とする半導体集積回路。
1,101 外部回路
2,102 リコンフィギュラブル回路
20,200 PLL回路
21,121 レジスタ制御部
22,122 入出力データインタフェース部
23,123 コンフィグレーションデータ保持部
24 データネットワーク部
25 データ演算部
124 データネットワーク部・データ演算部
211 外部回路/リコンフィギュラブル回路同時書き込み検出部
212 外部回路書き込みイネーブル信号生成部
213 リコンフィギュラブル回路書き込みイネーブル信号生成部
214 優先判定部
215 出力データ選択信号生成部
216-00〜216-mn OR回路
217-00〜217-mn 外部/内部書き込みデータ選択信号生成回路

Claims (10)

  1. 複数の演算器と、該複数の演算器に入力する演算入力データ,および,該複数の演算器から出力される演算出力データを保持する入出力データインタフェース部と、を有し、前記複数の演算器の接続をコンテキスト毎に制御するリコンフィギュラブル回路であって、
    前記入出力データインタフェース部は、
    複数のポートと、
    該複数のポートに接続され、深さ方向にm[mは2以上の整数]バンクを有する複数のレジスタと、
    を有することを特徴とするリコンフィギュラブル回路。
  2. 請求項1に記載のリコンフィギュラブル回路において、さらに、
    前記複数の演算器を含むデータ演算部と、
    前記入出力データインタフェース部の前記複数のポートと前記複数の演算器の接続を制御するデータネットワーク部と、
    複数のコンテキストのコンフィギュレーションデータを、該コンテキスト毎に保持するコンフィギュレーションデータ保持部と、
    前記入出力データインタフェース部の前記各レジスタを制御するレジスタ制御部と、
    を有することを特徴とするリコンフィギュラブル回路。
  3. 請求項2に記載のリコンフィギュラブル回路において、
    前記コンテキスト毎のコンフィギュレーションは、前記データ演算部からの演算出力データを前記各ポートのどのバンクのレジスタに書き込みを行うかの該各ポートのレジスタ入力バンク選択情報を有し、
    前記レジスタ制御部は、前記各ポートのレジスタ入力バンク選択情報に基づいて、該各ポートの書き込みを行う対象のバンクのレジスタに対してリコンフィギュラブル回路書き込みイネーブル信号を生成するリコンフィギュラブル回路書き込みイネーブル信号生成部を有することを特徴とするリコンフィギュラブル回路。
  4. 請求項3に記載のリコンフィギュラブル回路において、
    前記コンテキスト毎のコンフィギュレーションは、前記データ演算部への演算入力データを前記各ポートのどのバンクのレジスタからのデータを出力するかの該各ポートのレジスタ出力バンク選択情報を有し、
    前記入出力データインタフェース部は、さらに、前記各ポートのレジスタ出力バンク選択情報に基づいて、該各ポートからデータを出力する対象のバンクを選択する第1選択部を有することを特徴とするリコンフィギュラブル回路。
  5. 請求項3〜4のいずれか1項に記載のリコンフィギュラブル回路において、
    前記レジスタ制御部は、さらに、
    外部回路からレジスタ対象を示すアドレス情報と、該外部回路から書き込みの指示を行う書き込み制御信号を受け取って、書き込み対象のレジスタに対して外部回路書き込みイネーブル信号を出力する外部回路書き込みイネーブル信号生成部と、
    前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号を受け取って、どちらかのイネーブル信号がアサートされたときに対応するレジスタにレジスタ書き込みイネーブル信号をアサートする第1論理回路と、
    前記リコンフィギュラブル回路書き込みイネーブル信号がアサートされたときは前記演算出力データを選択し、前記外部回路書き込みイネーブル信号がアサートされたときは前記外部回路からの演算入力データを選択する外部/内部書き込みデータ選択信号を生成する外部/内部書き込みデータ選択信号生成回路と、
    を有することを特徴とするリコンフィギュラブル回路。
  6. 請求項5に記載のリコンフィギュラブル回路において、
    前記入出力データインタフェース部は、さらに、前記外部/内部書き込みデータ選択信号に基づいて、前記各レジスタに保持するデータを、前記演算入力データまたは前記演算出力データから選択する第2選択部を有することを特徴とするリコンフィギュラブル回路。
  7. 請求項5または6に記載のリコンフィギュラブル回路において、
    前記レジスタ制御部は、さらに、
    前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたことを検出する外部回路/リコンフィギュラブル回路同時書き込み検出部と、
    前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたときに、前記外部回路からのどちらの書き込みを優先させるかを規定する外部回路/リコンフィギュラブル回路書き込み優先信号に基づいて、優先判定を行う優先判定部と、
    を有することを特徴とするリコンフィギュラブル回路。
  8. 請求項7に記載のリコンフィギュラブル回路において、
    前記外部回路/リコンフィギュラブル回路同時書き込み検出部は、前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたことを検出して、同時書き込み検出信号をエラー情報として前記外部回路に出力することを特徴とするリコンフィギュラブル回路。
  9. 請求項5〜8のいずれか1項に記載のリコンフィギュラブル回路において、
    前記レジスタ制御部は、さらに、前記外部回路からのレジスタ対象を示すアドレス情報から、そのアドレス値に対応したレジスタ出力を選択するための出力データ選択信号を生成す出力データ選択信号生成回路を有し、
    前記前記入出力データインタフェース部は、さらに、前記出力データ選択信号に基づいて、レジスタ出力データを選択して外部回路に出力する第3選択部を有することを特徴とするリコンフィギュラブル回路。
  10. 請求項5〜9のいずれか1項に記載のリコンフィギュラブル回路、および、前記外部回路を有することを特徴とする半導体集積回路。
JP2010015589A 2010-01-27 2010-01-27 リコンフィギュラブル回路および半導体集積回路 Active JP5711889B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010015589A JP5711889B2 (ja) 2010-01-27 2010-01-27 リコンフィギュラブル回路および半導体集積回路
US12/973,730 US9720879B2 (en) 2010-01-27 2010-12-20 Reconfigurable circuit having rows of a matrix of registers connected to corresponding ports and a semiconductor integrated circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010015589A JP5711889B2 (ja) 2010-01-27 2010-01-27 リコンフィギュラブル回路および半導体集積回路

Publications (2)

Publication Number Publication Date
JP2011154534A true JP2011154534A (ja) 2011-08-11
JP5711889B2 JP5711889B2 (ja) 2015-05-07

Family

ID=44309858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010015589A Active JP5711889B2 (ja) 2010-01-27 2010-01-27 リコンフィギュラブル回路および半導体集積回路

Country Status (2)

Country Link
US (1) US9720879B2 (ja)
JP (1) JP5711889B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9000801B1 (en) * 2013-02-27 2015-04-07 Tabula, Inc. Implementation of related clocks
US10191881B2 (en) * 2016-06-06 2019-01-29 Hewlett Packard Enterprise Development Lp Modifications to a stream processing topology during processing of a data stream
US11237758B2 (en) * 2016-08-06 2022-02-01 Wolley Inc. Apparatus and method of wear leveling for storage class memory using address cache
CN110798479B (zh) * 2019-11-07 2021-08-06 首都师范大学 动态可重构高速串行总线与以太网的互操作装置与方法

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0369138A (ja) * 1989-05-02 1991-03-25 Tandem Comput Inc 線形配列ウェーハ規模集積回路アーキテクチャ
JPH03102557A (ja) * 1989-09-18 1991-04-26 Nec Corp 周辺制御装置
JPH05342095A (ja) * 1992-06-10 1993-12-24 Toshiba Corp 近傍補間用インターリーブメモリ及びこのメモリを用いた画像処理装置
JPH07141208A (ja) * 1993-11-15 1995-06-02 Sony Corp マルチタスク処理装置
JP2000353092A (ja) * 1999-06-09 2000-12-19 Nec Corp 情報処理装置及びそのレジスタファイル切替方法
JP2002025288A (ja) * 2000-06-30 2002-01-25 Hitachi Ltd 半導体集積回路
WO2003023602A1 (fr) * 2001-09-07 2003-03-20 Ip Flex Inc. Systeme de traitement de donnees et procede de commande
JP2004252990A (ja) * 2001-03-22 2004-09-09 Sony Computer Entertainment Inc コンピュータ・プロセッサ及び処理装置
JP2006011924A (ja) * 2004-06-28 2006-01-12 Fujitsu Ltd 再構成可能演算装置および半導体装置
JP2006236106A (ja) * 2005-02-25 2006-09-07 Canon Inc データ処理装置及びデータ処理方法
JP2007041781A (ja) * 2005-08-02 2007-02-15 Fujitsu Ltd リコンフィグ可能な集積回路装置
JP2007052811A (ja) * 2006-10-23 2007-03-01 Tops Systems:Kk マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
US20070294517A1 (en) * 2005-12-09 2007-12-20 Stmicroelectronics Sa Method and device for saving and restoring a set of registers of a microprocessor in an interruptible manner
WO2009096482A1 (ja) * 2008-01-31 2009-08-06 Ipflex Inc. 再構成可能なデバイス
US20090228737A1 (en) * 2008-03-10 2009-09-10 Mobileye Technologies Ltd. Elut: enhanced look-up table signal processing
JP2010002986A (ja) * 2008-06-18 2010-01-07 Nec Corp 再構成可能電子回路装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3621387A (en) * 1969-08-21 1971-11-16 Gen Instrument Corp Computer-controlled tester for integrated circuit devices
JPS5668979A (en) 1979-11-09 1981-06-09 Nec Corp Memory device
JPS6140650A (ja) * 1984-08-02 1986-02-26 Nec Corp マイクロコンピユ−タ
JPS62151957A (ja) 1985-12-25 1987-07-06 Matsushita Electric Ind Co Ltd メモリアドレス装置
JPH056657A (ja) 1991-06-28 1993-01-14 Nec Corp 半導体記憶素子
US5680641A (en) * 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US6134653A (en) * 1998-04-22 2000-10-17 Transwitch Corp. RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
US7155602B2 (en) * 2001-04-30 2006-12-26 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US7167971B2 (en) * 2004-06-30 2007-01-23 International Business Machines Corporation System and method for adaptive run-time reconfiguration for a reconfigurable instruction set co-processor architecture
WO2006011232A1 (ja) * 2004-07-30 2006-02-02 Fujitsu Limited リコンフィギュラブル回路およびリコンフィギュラブル回路の制御方法
US7451297B2 (en) * 2005-06-01 2008-11-11 Microsoft Corporation Computing system and method that determines current configuration dependent on operand input from another configuration
JP5071707B2 (ja) 2007-06-22 2012-11-14 富士ゼロックス株式会社 データ処理装置およびその制御方法

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0369138A (ja) * 1989-05-02 1991-03-25 Tandem Comput Inc 線形配列ウェーハ規模集積回路アーキテクチャ
JPH03102557A (ja) * 1989-09-18 1991-04-26 Nec Corp 周辺制御装置
JPH05342095A (ja) * 1992-06-10 1993-12-24 Toshiba Corp 近傍補間用インターリーブメモリ及びこのメモリを用いた画像処理装置
JPH07141208A (ja) * 1993-11-15 1995-06-02 Sony Corp マルチタスク処理装置
JP2000353092A (ja) * 1999-06-09 2000-12-19 Nec Corp 情報処理装置及びそのレジスタファイル切替方法
JP2002025288A (ja) * 2000-06-30 2002-01-25 Hitachi Ltd 半導体集積回路
JP2004252990A (ja) * 2001-03-22 2004-09-09 Sony Computer Entertainment Inc コンピュータ・プロセッサ及び処理装置
WO2003023602A1 (fr) * 2001-09-07 2003-03-20 Ip Flex Inc. Systeme de traitement de donnees et procede de commande
JP2006011924A (ja) * 2004-06-28 2006-01-12 Fujitsu Ltd 再構成可能演算装置および半導体装置
JP2006236106A (ja) * 2005-02-25 2006-09-07 Canon Inc データ処理装置及びデータ処理方法
JP2007041781A (ja) * 2005-08-02 2007-02-15 Fujitsu Ltd リコンフィグ可能な集積回路装置
US20070294517A1 (en) * 2005-12-09 2007-12-20 Stmicroelectronics Sa Method and device for saving and restoring a set of registers of a microprocessor in an interruptible manner
JP2007052811A (ja) * 2006-10-23 2007-03-01 Tops Systems:Kk マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
WO2009096482A1 (ja) * 2008-01-31 2009-08-06 Ipflex Inc. 再構成可能なデバイス
US20090228737A1 (en) * 2008-03-10 2009-09-10 Mobileye Technologies Ltd. Elut: enhanced look-up table signal processing
JP2010002986A (ja) * 2008-06-18 2010-01-07 Nec Corp 再構成可能電子回路装置

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CSNG200900638004; 山脇 彰,岩根 雅彦 Akira YAMAWAKI, Masahiko IWANE: 'メモリアクセスを伴ったプログラムのFPGA実装に適したハードウェアアーキテクチャ A Hardware Archite' 電子情報通信学会論文誌 THE IEICE TRANSACTIONS ON INFORMATION AND SYSTEMS (JAPANESE EDITION) 第J92-D巻 第12号, 20091201, 2114〜2126頁, 社団法人電子情報通信学会 THE INSTITUTE OF ELECTRO *
CSNG201000150010; 中田 尚,中島康彦 TAKASHI NAKADA, YASUHIKO NAKAJIMA: '線形アレイVLIWプロセッサにおける適応性検討 Adaptability of A Linear Array VLIW Processor' 情報処理学会研究報告 平成21年度▲4▼ [CD-ROM] Vol.2009-ARC-186 No.10, 20091215, 1〜9頁, 社団法人情報処理学会 Information Processing Societ *
JPN6015004607; 山脇 彰,岩根 雅彦 Akira YAMAWAKI, Masahiko IWANE: 'メモリアクセスを伴ったプログラムのFPGA実装に適したハードウェアアーキテクチャ A Hardware Archite' 電子情報通信学会論文誌 THE IEICE TRANSACTIONS ON INFORMATION AND SYSTEMS (JAPANESE EDITION) 第J92-D巻 第12号, 20091201, 2114〜2126頁, 社団法人電子情報通信学会 THE INSTITUTE OF ELECTRO *
JPN6015004609; 中田 尚,中島康彦 TAKASHI NAKADA, YASUHIKO NAKAJIMA: '線形アレイVLIWプロセッサにおける適応性検討 Adaptability of A Linear Array VLIW Processor' 情報処理学会研究報告 平成21年度▲4▼ [CD-ROM] Vol.2009-ARC-186 No.10, 20091215, 1〜9頁, 社団法人情報処理学会 Information Processing Societ *
JPN7015000340; Carl J. Beckmann,Constantine D. Polychronopoulos: 'Fast Barrier Synchronization Hardware' Supercomputing '90 Proceedings of the 1990 ACM/IEEE conference on Supercomputing , 19901112, Pages 180-189, ACM/IEEE *

Also Published As

Publication number Publication date
JP5711889B2 (ja) 2015-05-07
US20110185152A1 (en) 2011-07-28
US9720879B2 (en) 2017-08-01

Similar Documents

Publication Publication Date Title
JP4188233B2 (ja) 集積回路装置
EP3906476A1 (en) Virtualization of a reconfigurable data processor
US20100241835A1 (en) Processor with automatic scheduling of operations
JP2014505916A (ja) Simdレジスタファイルから汎用レジスタファイルへデータを移動させるための方法及び装置
JP4007483B2 (ja) 高位合成装置および高位合成方法
JP2008507034A5 (ja)
US9069918B2 (en) System and method implementing full-rate writes for simulation acceleration
JP5711889B2 (ja) リコンフィギュラブル回路および半導体集積回路
JP4485272B2 (ja) 半導体装置
JP2012238306A (ja) ルーティングのための方法及び装置
US20080040700A1 (en) Behavioral synthesizer, debugger, writing device and computer aided design system and method
WO2019068267A1 (en) CONFIGURABLE HARDWARE ACCELERATORS
CN108958848A (zh) 近存储器计算体系结构
JP2001043180A (ja) マイクロプロセッサおよびそのための記憶装置
TW202240386A (zh) 可重組態硬體之時間多工使用
WO2008108005A1 (en) A data transfer network and control apparatus for a system with an array of processing elements each either self- or common controlled
JP4962305B2 (ja) リコンフィギュラブル回路
JP3952856B2 (ja) キャッシュ方法
Atat et al. Register binding for FPGAs with embedded memory
CN109766081A (zh) 遍历容器的方法及装置
US20240069770A1 (en) Multiple contexts for a memory unit in a reconfigurable data processor
US20230251989A1 (en) Direct Access to External Storage from a Reconfigurable Processor
CN112035394B (zh) 面向实时处理的多核处理器的存储装置及数据处理方法
US20240020265A1 (en) Operating a Cost Estimation Tool for Placing and Routing an Operation Unit Graph on a Reconfigurable Processor
US20230297527A1 (en) Direct Access to Reconfigurable Processor Memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121002

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20130822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130919

AA91 Notification that invitation to amend document was cancelled

Free format text: JAPANESE INTERMEDIATE CODE: A971091

Effective date: 20131008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140609

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140909

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150309

R150 Certificate of patent or registration of utility model

Ref document number: 5711889

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250