JP4569284B2 - 集積回路のデバッグ方法、デバッグプログラム - Google Patents

集積回路のデバッグ方法、デバッグプログラム Download PDF

Info

Publication number
JP4569284B2
JP4569284B2 JP2004358785A JP2004358785A JP4569284B2 JP 4569284 B2 JP4569284 B2 JP 4569284B2 JP 2004358785 A JP2004358785 A JP 2004358785A JP 2004358785 A JP2004358785 A JP 2004358785A JP 4569284 B2 JP4569284 B2 JP 4569284B2
Authority
JP
Japan
Prior art keywords
bank
configuration
execution
stored
configuration data
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.)
Expired - Fee Related
Application number
JP2004358785A
Other languages
English (en)
Other versions
JP2006164186A (ja
Inventor
昭文 渡辺
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2004358785A priority Critical patent/JP4569284B2/ja
Publication of JP2006164186A publication Critical patent/JP2006164186A/ja
Application granted granted Critical
Publication of JP4569284B2 publication Critical patent/JP4569284B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)
  • Logic Circuits (AREA)

Description

本発明は、動的再構成可能なLSIにおけるデバッグ方法およびデバッグプログラムに関する。
近年、LSIを構成する回路の一部をソフトウェアにより再構成できるハードウェアが提供されている。さらに、特許文献1においては、再構成する基本単位を、ゲートレベルからALUなどのある程度の規模の演算機能を備えた演算ユニットにして、複数種類の演算ユニットをマトリクス状に配置し、再構成に要する時間を短縮することが開示されている。複数の演算ユニットがマトリクス状に配置されたシステムは、それぞれの演算ユニットが並列に処理を実行できるので、膨大な数の並列処理に適したハードウェアリソースを備えたシステムと捉えることが可能である。
現時点において、非特許文献2に記載されたように、本出願人が開発した動的再構成可能なLSIにおいては、主にシーケンシャルな処理を担当するRISCプロセッサコア(以下、単に「プロセッサコア」と称する。)と、大規模なデータ処理や演算処理を担当する2次元アレイ構造の「DNA(distributed
Network Architecture)マトリクス」とが含まれる。この「DNAマトリクス」が動的に回路構成を切り換えられる部分に相当する。この動的再構成可能な部分(以下、「マトリクス」と称する。)は、2次元アレイ状に、演算器やメモリなどの回路構成要素が整列した構造をとっている。これらの回路構成要素の接続関係を変更することで、並列演算や演算の組み合わせ(積和演算)を自由に設定することが可能である。
特許文献2に記載された動的再構成可能なLSIでは、上記マトリクスのコンフィグレーションを同時に複数(たとえば4つ)記憶しておき、それを切り替えながら、高速にアプリケーションを実行する。たとえば、図3に示すように、マトリクス内部に記憶可能なコンフィグレーションとして、1つの実行バンクのコンフィグレーション、および、3つのバックグラウンドバンクのコンフィグレーションが存在し、それぞれのデータが、各バンクの記憶領域に、外部メモリ等から転送される。
実際に、マトリクスが動作しているときに、実行バンクにコンフィグレーションのデータを書き込むと、処理内容に影響を与える。そこで、通常は、何れかの・バンクにコンフィグレーションのデータが書き込まれ、必要に応じて、バックグラウンドバンクのコンフィグレーションのデータを、実行バンクに転送する。
コンフィグレーションの切り替えには、プロセッサコア上で実行されるプログラムの制御によって、マトリクスに指示が与えられるもの、および、マトリクス内の内部要因によって自律的に行われるものが存在する。ここで、前者を他律ダイナミックリコンフィグレーション、後者を自律ダイナミックリコンフィグレーションと称する。
国際公開WO03/007155号公報 榊原泰徳、佐藤友美著、「DAPDNAのデバイスアーキテクチャ」、デザインウェーブマガジン(Design Wave Magazine)2004年8月号、「特集 動的再構成可能デバイス その素性と実力 第2章」、CQ出版社、2004年8月、第30頁〜第38頁
設計者は、上記バンクにロードさせて、マトリクスを動作させるための回路情報を作成するが、その際に、回路が所望のように動作しているかを調べ、かつ、不具合な箇所を訂正するデバッグを通常行う。
回路情報の作成は、たとえば、以下の手順により実現される。
(1)設計者は、データの流れに沿って、マトリクス中の論理回路を構成する回路要素(PE:Processing
element)をエディタ上に配置する。これにより、配置されたPEとその間の論理的接続情報とを含む一次ファイルが生成される。
(2)次いで、一次ファイルは、コンパイラにより、実際にマトリクスを構成する特定の位置の回路要素および特定の位置の回路要素間の物理的配線がなされた情報を含む二次ファイルに変換される。この二次ファイルの情報が、バンクにロードされることで、マトリクスは動作することが可能となる。
デバッグを実現するデバッガは、プログラムの実行を一時停止させ、その状態で主メモリからデバッグ情報、つまり、コンフィグレーションのソースデータおよびコンフィグレーションデータを取得し、かつ、マトリクスの実行バンクからコンフィグレーションデータを読み出して、これらを照合するなど必要な処理を実行する。また、デバッガは、マトリクス中のレジスタ値の読み取り、設定や、マトリクスのブレークポイントの設定などを可能にしている。
上述したように、本出願人が考案した動的再構成可能LSIにおいては、プロセッサコア上を稼動しているプログラムの働きによってコンフィグレーションを変更する他律ダイナミックリコンフィグレーションと、マトリクス自体が、コンフィグレーションを変更する自律ダイナミックリコンフィグレーションとが存在する。
他律ダイナミックリコンフィグレーションに関しては、プロセッサコアがコンフィグレーションの変更を把握しているため、どのバンクにどのコンフィグレーションを格納しているかを把握するテーブル(バンク情報テーブル)を主メモリに保持しておくことにより、プログラムの実行停止時に、実行バンクにどのコンフィグレーションが格納されているかを知ることが可能である。
これに対して、自律ダイナミックリコンフィグレーションは、マトリクス自身がそのコンフィグレーションを変更するため、プロセッサコアが、外部からその発生を知ることができない。このため、主メモリのバンク情報テーブルを参照して、実行バンクに格納されているコンフィグレーションを調べても、実際に実行バンクに格納されたコンフィグレーションと異なる場合があるという問題点があった。
たとえば、プロセッサコアが、コンフィグレーションメモリにロードした全てのコンフィグレーションデータの履歴を記憶しておき、プログラムの実行停止時に、実際に実行バンクに格納されていたコンフィグレーションデータと、履歴に残っている全てのコンフィグレーションデータとのマッチングを実行して、実行バンクに格納されたコンフィグレーションを特定することも考えられる。しかしながら、全てのコンフィグレーショデータの履歴を残すことは、膨大なメモリ容量が必要になり、場合によっては、メモリが破綻する可能性もある。また、マッチングに多大な時間を必要とするという問題点もある。
本発明は、メモリ容量を増大させることなく、かつ、迅速に、動的再構成可能LSIにおける現在のコンフィグレーションを特定するデバッグ方法およびデバッグ用プログラムを提供することを目的とする。
本発明の目的は、主としてシーケンシャルな処理を実行するプロセッサコア、および、データ処理および演算を担当し、かつ、その2次元アレイ構造の回路構成要素間の接続を変更することで、そのコンフィグレーションを動的に変更可能なマトリクスと、を備えた動的再構成可能LSIであって、
前記マトリクスが、複数のコンフィグレーションのそれぞれを表わすコンフィグレーションデータを記憶する複数のバンクを有するコンフィグレーションメモリを有し、かつ、前記複数のバンクのうち実行バンクに格納されたコンフィグレーションデータに基づいて回路構成要素間の接続が規定され、かつ、前記プロセッサコアからの指示に従う他律ダイナミックリコンフィグレーションにより、或いは、マトリクス自身による自律ダイナミックリコンフィグレーションにより、各バンクに格納されたコンフィグレーションデータを前記実行バンクにコピーすることにより、そのコンフィグレーションを変更するとともに、 当該コンフィグレーションの変更に伴って、実行バンクにコピーされたコンフィグレーションデータの供給元となったバンクを特定するバンク由来値を記憶するように構成され、
前記プロセッサコアが、主メモリに格納されたコンフィグレーションデータを、前記コンフィグレーションメモリの所望のバンクにロードするロード命令、および、何れかのバンクに格納されたコンフィグレーションを実行バンクにコピーさせて他律ダイナミックリコンフィグレーションを発生させるコンフィグレーション変更命令を実行可能であり、かつ、前記ロード命令およびコンフィグレーション変更命令の実行に伴って、前記主メモリ中、バンクを特定する情報と、コンフィグレーションを特定するコンフィグレーション名と、が関連付けられたバンク情報テーブルを更新するように構成された、動的再構成可能なLSIにおいて、
前記動的再構成可能LSIのプログラムの実行を設定にしたがって停止させ、その状態において、主メモリに記憶されたコンフィグレーションデータおよびそのソースデータ、並びに、コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを取得するデバッガのデバッグ方法であって、
前記プロセッサコアによる他律ダイナミックリコンフィグレーションの発生時に、実行バンクに格納されるべきコンフィグレーションの供給元のバンク名を静的変数として記憶するステップと、
前記プログラムの実行停止時に、前記マトリクスから前記バンク由来値を取得するステップと、
前記記憶された静的変数とバンク由来値とを比較し、これらが不一致の場合に、自律ダイナミックリコンフィグレーションが発生したと判断するステップと、
前記自律ダイナミックリコンフィグレーションが発生していないと判断された場合に、前記バンク情報テーブルにしたがって、バンク情報テーブルからコンフィグレーションデータを読み出すステップと、
前記自律ダイナミックリコンフィグレーションが発生したと判断した場合に、前記バンク情報テーブル中、前記バンク由来値が示すコンフィグレーションデータを読み出すステップと、
前記静的変数およびバンク情報テーブルを、前記バンク由来値に整合するように更新するステップと、を備えたことを特徴とするデバッグ方法により達成される(請求項1:第1の手法)。
本発明によれば、他律ダイナミックリコンフィグレーションの際に、どのバンクから実行バンクにコンフィグレーションをコピーしたか、つまり、データの供給元を示す静的変数を、主メモリに記憶しておき、プログラムの停止時に、コンフィグレーションメモリにあるバンク由来値と静的変数とを比較することで、自律ダイナミックリコンフィグレーションの発生を検出する。自律ダイナミックリコンフィグレーションが生じていると判断された場合には、コンフィグレーションメモリ中のメモリ由来値にしたがって、そのバンクのデータを取得することができる。
好ましい実施態様においては、さらに、前記プロセッサコアによるロード命令の実行時に、前記マトリクスから前記バンク由来値を取得するステップと、
前記記憶された静的変数とバンク由来値とを比較し、これらが不一致の場合に、前記静的変数およびバンク情報テーブルを、前記バンク由来値に整合するように更新するステップと、を備えている(請求項2:第2の手法)。
この実施態様においては、さらに、コンフィグレーションメモリのバンクにデータをロードする際に、バンク由来値と静的変数とを比較することで、自律ダイナミックリコンフィグレーションの発生を検出している。ここで自律ダイナミックリコンフィグレーションが発生したと判断された場合には、あたかも他律ダイナミックリコンフィグレーションが生じたのと同様に、静的変数およびバンク情報テーブルを更新することで、実行バンクに格納されたコンフィグレーションを適切に把握する。
たとえば、前記静的変数およびバンク情報テーブルを更新するステップは、静的変数の値としてバンク由来値を記憶するステップと、バンク情報テーブル中、前記実行バンクに関連付けてバンク由来値を格納するステップと、を有する(請求項3)。
また、本発明の目的は、主としてシーケンシャルな処理を実行するプロセッサコア、および、データ処理および演算を担当し、かつ、その2次元アレイ構造の回路構成要素間の接続を変更することで、そのコンフィグレーションを動的に変更可能なマトリクスと、を備えた動的再構成可能LSIであって、
前記マトリクスが、複数のコンフィグレーションのそれぞれを表わすコンフィグレーションデータを記憶する複数のバンクを有するコンフィグレーションメモリを有し、かつ、前記複数のバンクのうち実行バンクに格納されたコンフィグレーションデータに基づいて回路構成要素間の接続が規定され、かつ、前記プロセッサコアからの指示に従う他律ダイナミックリコンフィグレーションにより、或いは、マトリクス自身による自律ダイナミックリコンフィグレーションにより、各バンクに格納されたコンフィグレーションデータを前記実行バンクにコピーすることにより、そのコンフィグレーションを変更するとともに、 当該コンフィグレーションの変更に伴って、実行バンクにコピーされたコンフィグレーションデータの供給元となったバンクを特定するバンク由来値を記憶するように構成され、
前記プロセッサコアが、主メモリに格納されたコンフィグレーションデータを、前記コンフィグレーションメモリの所望のバンクにロードするロード命令、および、何れかのバンクに格納されたコンフィグレーションを実行バンクにコピーさせて他律ダイナミックリコンフィグレーションを発生させるコンフィグレーション変更命令を実行可能であり、かつ、前記ロード命令およびコンフィグレーション変更命令の実行に伴って、前記主メモリ中、バンクを特定する情報と、コンフィグレーションを特定するコンフィグレーション名と、が関連付けられたバンク情報テーブルを更新するように構成された、動的再構成可能なLSIにおいて、
前記動的再構成可能LSIのプログラムの実行を設定にしたがって停止させ、その状態において、主メモリに記憶されたコンフィグレーションデータおよびそのソースデータ、並びに、コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを取得するデバッガのデバッグ方法であって、
前記プロセッサコアのロード命令の実行時に、前記ロードするコンフィグレーションデータを特定するパターンを生成し、主メモリ中、前記ロードすべきバンクに関連付けて記憶するステップと、
前記プロセッサコアによる他律ダイナミックリコンフィグレーションの発生時に、実行バンクに格納されるべきコンフィグレーションの供給元のバンク名を静的変数として記憶するステップと、
前記プログラムの実行停止時に、前記コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを読み出すステップと、
前記実行バンクから読み出されたコンフィグレーションメモリを特定するパターンを生成するステップと、
前記生成されたパターンと、前記主メモリ中、それぞれのバンクに関連付けられて記憶されたパターンとを比較し、一致或いは最も類似するパターンに関連付けられたバンクを特定するステップと、
前記バンク情報テーブル中、前記特定されたバンクの情報が示すコンフィグレーションデータを読み出すステップと、を備えたことを特徴とするデバッグ方法により達成される(請求項4:第3の手法)。
本発明によれば、主メモリにおいてバンクに関連付けられて記憶されたコンフィグレーションデータのパターンと、実際に実行バンクから読み出されたコンフィグレーションのデータのパターンとを比較して、実行バンクに格納されたコンフィグレーションを判断している。この手法を利用すれば、コンフィグレーションデータのパターンは、バンクの数だけ持てばよく、多大なメモリの容量を必要としない。また、請求項1ないし3にしたがった方法により検出できないダイナミックリコンフィグレーションのパターン(コンフィグレーションデータのロードの後、自律ダイナミックリコンフィグレーションが2回以上発生し、かつ、実行バンクには、当初の供給元と同じバンクを供給元とするコンフィグレーションデータが格納されている場合)でも、本発明を適用することで、正しいコンフィグレーションを特定することが可能となる。
より好ましい実施態様においては、さらに、前記特定されたバンクが実行バンクであるか否かを判断するステップと、
前記特定されたバンクが実行バンクである場合に、前記バンク情報テーブル中、前記実行バンクが示すコンフィグレーションデータを読み出すステップと、
前記特定されたバンクが実行バンク以外である場合に、前記バンク情報テーブル中、前記特定されたバンクの情報が示すコンフィグレーションデータを読み出すステップと、
前記バンク情報テーブルを、前記特定されたバンクの情報に整合するように更新するステップと、を備えている(請求項5)。
また、別の好ましい実施態様においては、さらに、前記プロセッサコアによるロード命令実行時に、前記マトリクスから前記バンク由来値を取得するステップと、
前記記憶された静的変数とバンク由来値とを比較し、これらが不一致の場合に、前記静的変数およびバンク情報テーブルを、前記バンク由来値に整合するように更新するステップと、
前記静的変数とバンク由来値が一致した場合に、前記コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを読み出すステップと、
前記実行バンクから読み出されたコンフィグレーションメモリを特定するパターンを生成するステップと、
前記生成されたパターンと、前記主メモリ中、それぞれのバンクに関連付けられて記憶されたパターンとを比較し、一致或いは最も類似するパターンに関連付けられたバンクを特定するステップと、
前記バンク情報テーブルを、前記特定されたバンクの情報に整合するように更新するステップと、を備えている(請求項6:第4の手法)。
本実施の形態によれば、さらに、コンフィグレーションデータのロードの後、自律ダイナミックリコンフィグレーションが2回以上発生し、かつ、実行バンクには、当初の供給元と同じバンクを供給元とするコンフィグレーションデータが格納され、かつ、同じバンクにコンフィグレーションデータがロードされた場合であっても、適切にコンフィグレーションを特定することが可能である。
たとえば、前記パターンを生成するステップは、前記マトリクス中の回路構成要素のそれぞれを利用しているか否かを示すビット列を含む存在パターンを生成する(請求項7)。或いは、前記パターンを生成するステップは、前記マトリクス中の回路構成要素のそれぞれを利用しているか否かを示すビット列を符号化した存在パターンを生成しても良い(請求項8)。後者を採用することで、パターンの比較処理を著しく短縮することができる。
また、前記パターンを生成するステップは、前記コンフィグレーションデータの少なくとも部分を符号化するステップを有していても良い(請求項9)。ここでは、コンフィグレーションデータ全体を符号化しても良いし、コンフィグレーションデータ中、マトリクスにおいて変更されるコンフィグレーションに相当する部分を除外して、残りの部分を符号化しても良い。
また、本発明の目的は、主としてシーケンシャルな処理を実行するプロセッサコア、および、データ処理および演算を担当し、かつ、その2次元アレイ構造の回路構成要素間の接続を変更することで、そのコンフィグレーションを動的に変更可能なマトリクスと、を備えた動的再構成可能LSIであって、
前記マトリクスが、複数のコンフィグレーションのそれぞれを表わすコンフィグレーションデータを記憶する複数のバンクを有するコンフィグレーションメモリを有し、かつ、前記複数のバンクのうち実行バンクに格納されたコンフィグレーションデータに基づいて回路構成要素間の接続が規定され、かつ、前記プロセッサコアからの指示に従う他律ダイナミックリコンフィグレーションにより、或いは、マトリクス自身による自律ダイナミックリコンフィグレーションにより、各バンクに格納されたコンフィグレーションデータを前記実行バンクにコピーすることにより、そのコンフィグレーションを変更するとともに、 当該コンフィグレーションの変更に伴って、実行バンクにコピーされたコンフィグレーションデータの供給元となったバンクを特定するバンク由来値を記憶するように構成され、
前記プロセッサコアが、主メモリに格納されたコンフィグレーションデータを、前記コンフィグレーションメモリの所望のバンクにロードするロード命令、および、何れかのバンクに格納されたコンフィグレーションを実行バンクにコピーさせて他律ダイナミックリコンフィグレーションを発生させるコンフィグレーション変更命令を実行可能であり、かつ、前記ロード命令およびコンフィグレーション変更命令の実行に伴って、前記主メモリ中、バンクを特定する情報と、コンフィグレーションを特定するコンフィグレーション名と、が関連付けられたバンク情報テーブルを更新するように構成された、動的再構成可能なLSIにおいて、
前記動的再構成可能LSIのプログラムの実行を設定にしたがって停止させ、その状態において、主メモリに記憶されたコンフィグレーションデータおよびそのソースデータ、並びに、コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを取得するデバッガとして、コンピュータを動作させるために、当該コンピュータにより読み出し可能なデバッグ用プログラムであって、前記コンピュータに、
前記プロセッサコアによる他律ダイナミックリコンフィグレーションの発生時に、実行バンクに格納されるべきコンフィグレーションの供給元のバンク名を静的変数として記憶するステップ、
前記プログラムの実行停止時に、前記マトリクスから前記バンク由来値を取得するステップ、
前記記憶された静的変数とバンク由来値とを比較し、これらが不一致の場合に、自律ダイナミックリコンフィグレーションが発生したと判断するステップ、
前記自律ダイナミックリコンフィグレーションが発生していないと判断された場合に、前記バンク情報テーブルにしたがって、バンク情報テーブルからコンフィグレーションデータを読み出すステップ、
前記自律ダイナミックリコンフィグレーションが発生したと判断した場合に、前記バンク情報テーブル中、前記バンク由来値が示すコンフィグレーションデータを読み出すステップ、並びに、
前記静的変数およびバンク情報テーブルを、前記バンク由来値に整合するように更新するステップを実行させることを特徴とするデバッグ用プログラムによっても達成される(請求項10)。
好ましい実施態様においては、さらに、前記コンピュータに、
前記プロセッサコアによるロード命令の実行時に、前記マトリクスから前記バンク由来値を取得するステップ、並びに、
前記記憶された静的変数とバンク由来値とを比較し、これらが不一致の場合に、前記静的変数およびバンク情報テーブルを、前記バンク由来値に整合するように更新するステップを実行させる(請求項11)。
また、好ましい実施態様においては、前記静的変数およびバンク情報テーブルを更新するステップにおいて、前記コンピュータに、
静的変数の値としてバンク由来値を記憶するステップ、並びに、
バンク情報テーブル中、前記実行バンクに関連付けてバンク由来値を格納するステップを実行させる(請求項12)。
さらに、本発明の目的は、主としてシーケンシャルな処理を実行するプロセッサコア、および、データ処理および演算を担当し、かつ、その2次元アレイ構造の回路構成要素間の接続を変更することで、そのコンフィグレーションを動的に変更可能なマトリクスと、を備えた動的再構成可能LSIであって、
前記マトリクスが、複数のコンフィグレーションのそれぞれを表わすコンフィグレーションデータを記憶する複数のバンクを有するコンフィグレーションメモリを有し、かつ、前記複数のバンクのうち実行バンクに格納されたコンフィグレーションデータに基づいて回路構成要素間の接続が規定され、かつ、前記プロセッサコアからの指示に従う他律ダイナミックリコンフィグレーションにより、或いは、マトリクス自身による自律ダイナミックリコンフィグレーションにより、各バンクに格納されたコンフィグレーションデータを前記実行バンクにコピーすることにより、そのコンフィグレーションを変更するとともに、 当該コンフィグレーションの変更に伴って、実行バンクにコピーされたコンフィグレーションデータの供給元となったバンクを特定するバンク由来値を記憶するように構成され、
前記プロセッサコアが、主メモリに格納されたコンフィグレーションデータを、前記コンフィグレーションメモリの所望のバンクにロードするロード命令、および、何れかのバンクに格納されたコンフィグレーションを実行バンクにコピーさせて他律ダイナミックリコンフィグレーションを発生させるコンフィグレーション変更命令を実行可能であり、かつ、前記ロード命令およびコンフィグレーション変更命令の実行に伴って、前記主メモリ中、バンクを特定する情報と、コンフィグレーションを特定するコンフィグレーション名と、が関連付けられたバンク情報テーブルを更新するように構成された、動的再構成可能なLSIにおいて、
前記動的再構成可能LSIのプログラムの実行を設定にしたがって停止させ、その状態において、主メモリに記憶されたコンフィグレーションデータおよびそのソースデータ、並びに、コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを取得するデバッガとして、コンピュータを動作させるために、当該コンピュータにより読み出し可能なデバッグ用プログラムであって、前記コンピュータに、
前記プロセッサコアのロード命令の実行時に、前記ロードするコンフィグレーションデータを特定するパターンを生成し、主メモリ中、前記ロードすべきバンクに関連付けて記憶するステップ、
前記プロセッサコアによる他律ダイナミックリコンフィグレーションの発生時に、実行バンクに格納されるべきコンフィグレーションの供給元のバンク名を静的変数として記憶するステップ、
前記プログラムの実行停止時に、前記コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを読み出すステップ、
前記実行バンクから読み出されたコンフィグレーションメモリを特定するパターンを生成するステップ、
前記生成されたパターンと、前記主メモリ中、それぞれのバンクに関連付けられて記憶されたパターンとを比較し、一致或いは最も類似するパターンに関連付けられたバンクを特定するステップ、並びに、
前記バンク情報テーブル中、前記特定されたバンクの情報が示すコンフィグレーションデータを読み出すステップを実行させることを特徴とするデバッグ用プログラムによっても達成される。
好ましい実施態様においては、さらに、前記コンピュータに、
前記特定されたバンクが実行バンクであるか否かを判断するステップ、
前記特定されたバンクが実行バンクである場合に、前記バンク情報テーブル中、前記実行バンクが示すコンフィグレーションデータを読み出すステップ、
前記特定されたバンクが実行バンク以外である場合に、前記バンク情報テーブル中、前記特定されたバンクの情報が示すコンフィグレーションデータを読み出すステップ、並びに、
前記バンク情報テーブルを、前記特定されたバンクの情報に整合するように更新するステップを、実行させる(請求項14)。
別の好ましい実施態様においては、さらに、前記コンピュータに、
前記プロセッサコアによるロード命令実行時に、前記マトリクスから前記バンク由来値を取得するステップ、
前記記憶された静的変数とバンク由来値とを比較し、これらが不一致の場合に、前記静的変数およびバンク情報テーブルを、前記バンク由来値に整合するように更新するステップ、
前記静的変数とバンク由来値が一致した場合に、前記コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを読み出すステップと、
前記実行バンクから読み出されたコンフィグレーションメモリを特定するパターンを生成するステップ、
前記生成されたパターンと、前記主メモリ中、それぞれのバンクに関連付けられて記憶されたパターンとを比較し、一致或いは最も類似するパターンに関連付けられたバンクを特定するステップ、並びに、
前記バンク情報テーブルを、前記特定されたバンクの情報に整合するように更新するステップを実行させる(請求項15)。
前記パターンを生成するステップにおいて、前記コンピュータに、前記マトリクス中の回路構成要素のそれぞれを利用しているか否かを示すビット列を含む存在パターンを生成するステップを実行させても良い(請求項16)。或いは、前記パターンを生成するステップにおいて、前記コンピュータに、前記マトリクス中の回路構成要素のそれぞれを利用しているか否かを示すビット列を符号化した存在パターンを生成するステップを実行させても良い(請求項17)。また、前記パターンを生成するステップにおいて、前記コンピュータに、前記コンフィグレーションデータの少なくとも部分を符号化するステップを実行させても良い(請求項18)。
本発明によれば、メモリ容量を増大させることなく、かつ、迅速に、動的再構成可能LSIにおける現在のコンフィグレーションを特定するデバッグ方法およびデバッグ用プログラムを提供することが可能となる。
以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本実施の形態にかかる回路設計システムの概略を示すブロックダイヤグラムである。本実施の形態においては、上記特許文献1および非特許文献2に記載された、プロセッサコアおよびマトリクスからなる、動的再構成可能なLSIを設計するように構成されている。しかしながら、図1においては、基本的に、マトリクスを設計するための構成要素を詳細に示す。
図1に示すように、本実施の形態にかかる回路設計システム10は、設計者の入力にしたがって、たとえばC言語の記述により、プロセッサコアおよびマトリクスのアルゴリズムを生成するアルゴリズム設計部12と、アルゴリズム設計部12によるアルゴリズムを、プロセッサコアで処理すべきもの、或いは、マトリクスで処理すべきものを判断し、アルゴリズムを分解するプロファイラ14と、プロセッサコアで処理すべきアルゴリズムをコンパイルする第1のコンパイラ16と、前記マトリクスで処理すべきアルゴリズムに相当する、データフローを拡張されたC言語で記述されたDFC(Data Flow C)を受け入れて、これに基づき、後述するコンフィグレーションファイルを生成するDFCコンパイラ18と、コンフィグレーションファイルに基づいて、マトリクスを構成する回路要素(プロセッシングエレメント:PE)を二次元アレイ上に配置する第2のコンパイラ20と、第1のコンパイラおよび第2のコンパイラによりそれぞれ生成された、プロセッサコアのソースコード、および、マトリクスのPEの配置配線情報とに基づいて、シミュレート或いはエミュレートを実行するシミュレータ/エミュレータ22と、シミュレート或いはエミュレートの結果に基づき、マトリクスを、前記コンフィグレーションレベルでデバッグするデバッガ24と備えている。
設計者は、入力装置(図示せず)を操作して、LSIにて実現することを求めるアルゴリズムをC言語で記述する。このアルゴリズムのC記述(図1の符号101参照)は、プロファイラ14に与えられ、プロファイラ14が、そのアルゴリズム中のどの関数がデータフロー向きか(処理の負荷が重いか)を調べる。データフロー向きの関数に相当する記述(符号103参照)は、DFCコンパイラ18に入力される。DFCコンパイラ18は、マトリクスのためのC記述に基づいて、コンフィグレーションファイル(符号104参照)を生成する。コンフィグレーションファイルにおいては、アルゴリズムを実現する、演算器(ALU、レジスタなど)とその間の接続を含むデータフローが形成される。
また、アルゴリズムからDFCの関数を除いた部分は、第1のコンパイラ16によりコンパイルされる。その際に、DFCコンパイラ18で生成された、ラッパ(wrapper)関数(符号105参照)も、第1のコンパイラ16においてコンパイルされる。
DFCコンパイラ18において生成されたコンフィグレーションファイル104は、第2のコンパイラ20に入力される。第2のコンパイラは、コンフィグレーションにしたがって、マトリクスを構成する実際のPE間の配線を決定する。
このようにして生成された、コンパイルされたプロセッサコアのC記述、コンフィグレーションのラッパおよびマトリクスを構成するPEの配置配線情報がリンクされて、オブジェクトコード106が出来上がる。
シミュレータ/エミュレータ22は、プロセッサコアおよびマトリクスを含むLSIの動作を模擬することができる。シミュレータ/エミュレータ22は、第1のコンパイラ16により生成されたオブジェクトコードと、マトリクスを構成するPEの配置配線情報とを入力として、LSIの実行サイクル数、マトリクスやプロセッサコアの動作などを詳細に解析することができる。
デバッガ24は、マトリクスをコンフィグレーションのレベルでデバッグすることができる。また、図示していないが、デバッガ24は、プロセッサコアのC記述、或いは、アセンブリ言語レベルでのデバッグも可能である。デバッガ24においては、プロセッサコア、マトリクスの双方に対して、条件付のブレークポイントを設定することができる。
このように構成された回路設計システムにて設計されるLSIについて簡単に説明する。図2は、本実施の形態にかかるLSIの概略を示すブロックダイヤグラムである。図2に示すように、このLSIは、プロセッサコア30とマトリクス32を有し、マトリクス内のPE(たとえば、符号38)の間の接続を変更することにより、動的再構成可能となる。
マトリクス32は、PE38にデータを与えるためのロード・バッファ34、演算結果を一時的に記憶するストアバッファ36、複数のPEの配置配線情報を記憶するコンフィグレーションメモリ40、および、LSI外部からマトリクス32に直接与えられる命令などの入出力を制御するダイレクトI/O42を有する。
プロセッサコア30は、たとえば、32ビットRISCであり、汎用レジスタ(図示せず)を内蔵し、また、命令キャッシュ44やデータキャッシュ44に接続される。また、LSIは、高速演算に不可欠な広帯域のデータ入出力のため、クロスバ・スイッチ回路の一種であるスイッチ・バス48と、PSIインタフェース、DDR・SDRAMインタフェース、DMAコントローラなどを含む各種インタフェース/コントローラ50とを有する。
LSIにおいては、プロセッサの外部メモリに記憶されたコンフィグレーションデータ(つまり、本実施の形態にかかる回路設計システムで設計された、マトリクスを構成するPEの配置配線情報)は、コンフィグレーションメモリ40にロードされ、そのコンフィグレーションデータにしたがって、マトリクス32内のPEの接続が変更される(つまり、マトリクスが書き換えられる)。
図3は、コンフィグレーションメモリ40の構成をより詳細に示すブロックダイヤグラムである。図3に示すように、本実施の形態においては、4種類のコンフィグレーションデータを記憶することができる。図3において、バンク0(ゼロ)は実行バンクであり(符号300参照)、実行バンク300に格納されたコンフィグレーションが、マトリクス40の配置配線情報として利用される。
また、バンク1〜バンク3はバックグラウンドバンクであり(符号301〜303参照)、マトリクスにおけるコンフィグレーションの切り替え(他律ダイナミックリコンフィグレーション、および、自律ダイナミックリコンフィグレーション)に伴って、選択回路304を経て、実行バンクであるバンク0にロードされて、配置配線情報として利用され得る状態となる。
他律ダイナミックリコンフィグレーションの場合には、通常、バンク1〜バンク3に格納されている、PEの配置配線情報(コンフィグレーションデータ)の何れかが、プロセッサコア上を稼動しているプログラムの働きによって、次のカレントコンフィグレーションとなる。ここに、カレントコンフィグレーションとは、その時点で、実行バンク(バンク0)に格納され、マトリクスの配置配線に反映されているコンフィグレーションをいう。
本実施の形態にかかるデバッグは、コンフィグレーションデータとともに、コンフィグレーションのソースデータ(以下、「コンフィグレーションのデバッグ情報」或いは単に「デバッグ情報」と称する。)を、主メモリに配置し、コンフィグレーションデータがバンクにロードされる際に、そのコンフィグレーションのデバッグ情報領域へのポインタを、バンク毎のテーブル(以下、「バンク情報テーブル」と称する。)に格納することにより実現される。このようなデバッグ情報領域を持つことを支援するプロセッサコアのプログラムのライブラリをデバッグ用制御ライブラリと予備、通常動作用制御ライブラリの機能に加えてデバッグ用処理を持つ。デバッグが終了したプログラムは、通常動作用制御ライブラリを使って余分な処理を経ることなく実行することができる。その一方、デバッグ用制御ライブラリを使用すると、状態によって実行を止め、実行途中の状態をモニターし、また、状態を変更するなどデバッグ作業を行いつつ、アプリケーションを動作させることができる。
以下、制御ライブラリについて簡単に説明する。マトリクスのバンクへの読み込みや、コンフィグレーションの切り替えは、プロセッサコアが、I/Oポートを介することで実現される。プロセッサコアが行うこれらの操作は、ライブラリ関数の中に記述される。これらの操作が記述されたライブラリ関数を含むライブラリを制御ライブラリと称する。制御ライブラリに含まれる関数には、たとえば、以下のようなものが含まれる。
マトリクス_load(int bank):指定のバンクへのコンフィグレーションデータの読み込み
マトリクス_change(int bank):プロセッサコアの制御で他律コンフィグレーションを実行し、カレントコンフィグレーション(バンク0)を、指定のバンクのコンフィグレーションに切り換える
デバッグの際には、上述したように、デバッグ用処理を含むデバッグ用制御ライブラリが使用され、通常の動作の際には、デバッグ用処理が取り除かれた通常動作用制御ライブラリが使用される。
図4は、本実施の形態にかかるデバッガ、および、デバッガに関連する部材(主メモリ等)の構成を示すブロックダイヤグラムである。図4に示すように、デバッガ24は、デバッグ用モニター52とコンフィグレーション読み込み部54と、デバッグ用モニター52に出力すべきコンフィグレーションを決定するコンフィグレーション決定部56とを有する。
デバッグ用モニター52は、実行を一時的に停止させた状態のメモリ空間からデバッグのための情報を読み取り、また、マトリクス中のレジスタ値、設定を読み取ることができる。また、設計者は、デバッグ用モニター52に指示を与えることで、マトリクス中のレジスタの設定やブレークポイントの設定をすることができる。
コンフィグレーション読み込み部54は、実行を途中で止められたアプリケーションの現在状態を知るために、コンフィグレーションデータを読み込むことができる。本実施の形態においては、コンフィグレーション読み込み部54は、マトリクス32のコンフィグレーションメモリ40に格納されたバンク0のコンフィグレーションデータを読み込み、かつ、主メモリ60中のバンク情報テーブル62において、バンク0に対応付けられたコンフィグレーションのコンフィグレーションデータおよびデバッグ情報を、主メモリ60から読み出して、これらを比較し、正しくコンフィグレーションがロードされているかを調べることが可能である。
本実施の形態においては、プロセッサコア30は、制御ライブラリ中の関数「マトリクス_load」を利用して、たとえば、主メモリ60から、所定のコンフィグレーションデータ(たとえば、コンフィグレーション名=A(符号62−1参照))を読み出して、コンフィグレーションメモリ40の所望のバンク(たとえば、バンク1)にロードする。また、この動作に伴って、バンク情報テーブル66中、バンク1について、コンフィグレーションデータ(コンフィグレーション名=A)をロードしたことを示すポインタを書き込むことで、バンク情報テーブル66を更新する。
また、他律ダイナミックリコンフィグレーションが発生した場合には、制御ライブラリ中の関数「マトリクス_change」を利用して、バンク1〜3のいずれかのバンクに格納されたコンフィグレーションデータを、バンク0にコピーする。この場合にも、バンク0について、バンク情報テーブル66が更新される。このように、他律ダイナミックリコンフィグレーションにおいては、バンク情報テーブル66に記載された、各バンクに格納されたコンフィグレーションを示す情報(たとえば、コンフィグレーション名)と、実際の、コンフィグレーションメモリ40の各バンクに格納されたコンフィグレーションデータとは一致する。
しかしながら、自律ダイナミックリコンフィグレーションにおいては、マトリクス32において、自律的に、バンク1〜3のうちのコンフィグレーションが、バンク0に読み込まれ、コンフィグレーションの切り替えが実行されてしまうため、割り込みなどの設定をしない限り、いつ、どのコンフィグレーション切り替えが発生したかを、外部から知ることができないという問題点がある。
デバッガ24において、デバッグ中のアプリケーションが何らかの要因で停止したときに、自律ダイナミックリコンフィグレーションが発生していると、バンク情報テーブルのバンク0に関連付けられた情報(コンフィグレーション名)は意味の無いものになってしまう。
本実施の形態においては、コンフィグレーション読み込み部54は、コンフィグレーションメモリ40のバンク0に格納されたコンフィグレーションデータが、バンク1〜3の何れかからロードされたかが書かれている、コンフィグレーションメモリ40中の特定のフィールドからのデータも読み込むことができるように構成されている。これにより、自律ダイナミックリコンフィグレーションが発生したことを判断し、ロード元が示すバンクに格納されたコンフィグレーション名を有するデバッグ情報を、主メモリ60から読み出す。このような構成を採用すれば、自律ダイナミックリコンフィグレーションが発生した場合であっても、正しいコンフィグレーションのデバッグ情報を取得することが可能である。
しかしながら、以下の場合には、上述した構成を採用しても、正しいコンフィグレーションのデバッグ情報を取得することができない。
(1)自律ダイナミックリコンフィグレーションが発生した後に、プロセッサコアにより、命令「マトリクス_load」が実行された場合
(2)自律ダイナミックリコンフィグレーションが複数回発生し、カレントコンフィグレーションには、元のバンクのコンフィグレーションデータが戻ったものの、途中で、命令「マトリクス_load」が実行された場合
そこで、以下、これらの問題点を解決するためのデバッガ24の構成について詳細に説明する。
[第1の手法]
まず、自律ダイナミックリコンフィグレーションが発生した場合のコンフィグレーションメモリの各バンクの状態などについて説明する。図5(a)、(b)は、それぞれ、コンフィグレーションを生じるイベント、コンフィグレーションメモリに格納されたコンフィグレーションデータ名、および、バンク情報テーブルの例を示す図である。
図5において、「load」、「自律」、「他律」と記載された矢印型のブロック(たとえば、符号501参照)は、コンフィグレーションメモリの各バンクの状態を変化させる3つのイベントを並べており、ある時刻には、3つのうち1つのイベントのみが発生可能である。図5において、ハッチングを付した矢印ブロック(たとえば、符号602参照)が、その時刻に発生したイベントを示す。図5(a)においては、その時刻に他律ダイナミックリコンフィグレーションが発生し、その際にバンク1が対象となったことを示す。
また、バンク0〜バンク3と記載された方形のブロック510は、コンフィグレーションメモリのバンクを示す。それぞれのバンクにかかるブロック(たとえば、符号511、512参照)中のアルファベットは、当該バンクに格納されたコンフィグレーション名を示す。たとえば、バンク0のブロック(符号511参照)には、コンフィグレーション名=Aのコンフィグレーションデータが格納されている。また、バンク0のブロック511において、左側に括弧()で示されているコンフィグレーション名は、主メモリのバンク情報テーブル(図4の符号44参照)において、バンク0に格納されているコンフィグレーション名を示す。また、バンク0のブロック511において、括弧[]で示されているコンフィグレーション名は、カレントコンフィグレーション、つまり、バンク0のコンフィグレーションが、どのバンク由来のコンフィグレーションであるかを示す値(以下、これを「バンク由来値」とも称する。)である。したがって、括弧[]で示されるバンク名は、本実施の形態にかかるコンフィグレーション読み込み部54により取得することができる。
図5(a)においては、他律ダイナミックリコンフィグレーションが発生し、制御ライブラリの関数「マトリクス_change」により、バンク1のコンフィグレーションデータ(コンフィグレーション名=A)が、カレントコンフィグレーション(バンク0)にコピーされる。したがって、バンク0において、バンク由来値=1となる。また、これに伴って、主メモリのバンク情報テーブルが書き換えられる(符号520参照)。
ここで、図5(b)に示すように、マトリクスにおいて自律ダイナミックリコンフィグレーションが発生し、バンク2のコンフィグレーションデータ(コンフィグレーション名=B)が、カレントコンフィグレーション(バンク0)にコピーされて、その後、デバッガ24によりプログラムの実行が停止された場合を考える。自律ダイナミックリコンフィグレーションは、プロセッサコアには認識されないため、バンク情報テーブルは、図5(b)に示すように変更されていない。その一方、実際には、バンク0には、バンク2に由来するコンフィグレーションデータ(コンフィグレーション名=B)が格納されている。したがって、図5(b)において、デバッガ24が、主メモリ中のバンク情報テーブルを参照して、デバッグ情報を取り出すべきコンフィグレーション名(=A)を特定すると、誤ってしまう。
そこで、本実施の形態においては、第1の手法として、制御ライブラリの関数「マトリクス_change」において、カレントコンフィグレーションとされたコンフィグレーションデータが格納されたバンク、つまり供給元となったバンクのバンク番号を静的変数に格納し、プログラムの動作停止時に、デバッガ24のコンフィグレーション決定部56が、その静的変数から得られるバンク番号と、コンフィグレーション読み込み部54により取得されるバンク由来値とを比較し、自律ダイナミックリコンフィグレーションの発生を検知する。
より詳細には、図6(a)に示すように、シミュレート或いはエミュレートにおいて、他律ダイナミックリコンフィグレーションが発生したときに(ステップ601)、上記制御ライブラリの関数「マトリクス_change」において、カレントコンフィグレーションとされたコンフィグレーションデータが格納されたバンクのバンク番号を静的変数pbに格納する(ステップ602)。たとえば、図5(a)の例では、他律ダイナミックリコンフィグレーションにより、バンク1のコンフィグレーションデータが、バンク0にコピーされるため、静的変数pb=1となる。
デバッガ24が、ブレークポイントなど設定された条件の下などで、プログラムの実行を停止すると(ステップ611)、デバッガ24のコンフィグレーション読み込み部54は、コンフィグレーションメモリ40からバンク由来値を読み出し、コンフィグレーション決定部56が、静的変数pbと、取得したバンク由来値とを比較する(ステップ612)。両者が一致した場合には(ステップ613でイエス(Yes))、デバッグ用モニター52は、通常の通り、バンク情報テーブルにおいて、バンク0が示すコンフィグレーション名のデバッグ情報を取得して出力する(ステップ614)。その一方、両者が一致しなかった場合には(ステップ613でノー(No))、デバッガ24は、バンク由来値を参照して、当該バンク由来値に対応するバンク番号が示すコンフィグレーション名のデバッグ情報を取得して出力する(ステップ615)。
図5(a)の状態の後、図5(b)に示す自律ダイナミックリコンフィグレーションが発生して、プログラムの実行が停止した場合には、静的変数pb=1である一方、バンク由来値は「2」となる。したがって両者は一致しないため、バンク由来値に相当するバンク2が示すコンフィグレーション名=Bのデバッグ情報が取得される。
その後、以後のプログラムの実行でもデバッグを可能にするために、デバッガ24は、静的変数pbを更新し(本例では「+1」)、かつ、バンク情報テーブルのバンク0に関連付けたコンフィグレーション名を、バンク由来値が示すものに更新する(ステップ616)。
このような構成により、静的変数と、由来値との一致を判断することで、自律コンフィグレーションの発生を検知することが可能となる。
[第2の手法]
次に、本実施の形態にかかる第2の手法について説明する。たとえば、自律ダイナミックリコンフィグレーションが1回発生した後、制御ライブラリの関数「マトリクス_load」により新たなコンフィグレーションがロードされ、その後、デバッガ24によりプログラムの実行が停止した場合を考える。
図7(a)〜(c)は、上記場合の具体例を示す図である。たとえば、第1の手法を利用して、静的変数pbとバンク由来値との一致により、どのデバッグ情報を選択すべきかを判断することを考える。図7(a)において他律ダイナミックリコンフィグレーションが発生し、バンク1のコンフィグレーションデータ(コンフィグレーション名=A)が、バンク0にコピーされるため、静的変数pb=1となる。また、他律ダイナミックリコンフィグレーションであるため、主メモリのバンク情報テーブルも、バンク0に関連付けられてコンフィグレーション名=Aが格納される。
次いで、図7(b)に示すように、自律ダイナミックリコンフィグレーションが発生し、バンク2のコンフィグレーションデータ(コンフィグレーション名=B)がバンク0にコピーされ、さらに、図7(c)に示すように、制御ライブラリの関数「マトリクス_load」により、バンク2に、新たなコンフィグレーションデータ(コンフィグレーション名=D)がロードされたと考える。制御ライブラリの関数「マトリクス_load」の実行に伴って、主メモリ中のバンク情報テーブルにおいて、バンク2に関連付けられてコンフィグレーション名=Dが格納される。
この場合、第1の手法を用いると、pb=1である一方、バンク由来値=2であるため、バンク由来値に基づいて、バンク情報テーブル中、バンク2に関連付けられたコンフィグレーション名を取得すると「D」となる。しかしながら、図7(c)に示すように、実際にコンフィグレーションメモリのバンク2には、コンフィグレーション名=Bのコンフィグレーションデータが格納されており、第1の手法の結果得られたコンフィグレーション名と一致しない。
そこで、第2の手法においては、図8に示すように、制御ライブラリの関数「マトリクス_load」において(ステップ801)、他律ダイナミックリコンフィグレーション時のバンク番号として、静的変数pbを取得するとともに、コンフィグレーション読み込み部54が、コンフィグレーションメモリ40からバンク由来値を取得し、コンフィグレーション決定部56が、静的変数pbとバンク由来値とを比較する(ステップ802)。自律ダイナミックリコンフィグレーションが発生していると考えられる場合、つまり、これらが一致しない場合には(ステップ803でノー(No))、コンフィグレーション決定部56は、バンク情報テーブル中、バンク0に関連付けて、コンフィグレーション読み込み部54により取得されたバンク由来値を格納する(ステップ804)。また、静的変数pbを、バンク由来値に更新する(ステップ805)。つまり、あたかも他律ダイナミックリコンフィグレーションが発生して、バンク情報テーブルや静的変数が書き換えられたかのように、これらの状態を整合させる。その後、コンフィグレーションメモリの指定のバンクに、コンフィグレーションデータが格納される(ステップ806)。
上記図7に示す例について、第2の手法を適用した場合の静的変数pbやバンク由来値の状態について、図9を参照して説明する。図9(a)の状態(他律ダイナミックリコンフィグレーションが発生し、バンク1のコンフィグレーションデータ(コンフィグレーション名=A)が、バンク0にコピーされた状態)および図9(b)の状態(自律ダイナミックリコンフィグレーションが発生し、バンク2のコンフィグレーションデータ(コンフィグレーション名=B)がバンク0にコピーされた状態)は、それぞれ、図7(a)、(b)の状態と一致する。
これに対して、制御ライブラリの関数「マトリクス_load」の処理が開始され、静的変数pbと取得されたバンク番号(バンク由来値)とを比較すると、「1≠2」であるため、ステップ803でノー(No)と判断される。したがって、バンク情報テーブルのバンク0に関連付けて、「バンク由来値=2」を格納するとともに、「静的変数pb=2」に書き換える。
デバッガ24によるプログラムの実行停止時には、第1の手法と同様に、図6(b)に示す処理が実行される。図6(b)の処理において、静的変数pbと、コンフィグレーション読み込み部54により読み込まれるバンク由来値とが一致し、自律ダイナミックリコンフィグレーションが発生していないと判断され(ステップ613でノー(No))、バンク情報テーブルのバンク0に関連付けられたコンフィグレーション名(この場合には「B」)のデバッグ情報が主メモリから読み出されて出力される。このように、デバッグ用モニター52に正しい表示をすることができる。
[第3の手法]
次に、本実施の形態にかかる第3の手法について説明する。たとえば、制御ライブラリ「マトリクス_load」により新たなコンフィグレーションデータが、コンフィグレーションメモリのカレントコンフィグレーションにロードされた後、自律ダイナミックリコンフィグレーションが2回以上発生し、最初のバンク番号に戻り、その後にデバッガ24によりプログラムの実行が停止された場合を考える。
図10(a)〜(d)は、上記場合の具体例を示す図である。たとえば、第1の手法を利用して、静的変数pbとバンク由来値の一致により、どのデバッグ情報を選択すべきかを判断することを考える。この場合に、静的変数とバンク由来値とは一致するため、バンク情報テーブルのバンク0が示すコンフィグレーション名のデバッグ情報が取り出される。ところが、実際には、制御ライブラリ「マトリクス_load」により新たなコンフィグレーションデータ(コンフィグレーション名=D)が、バンク中にロードされ、さらに、そのコンフィグレーションデータが、自律ダイナミックリコンフィグレーションにより、バンク0にコピーされているため、本来であれば、コンフィグレーション名=Dのデバッグ情報が表示されなければならない。
そこで、第3の手法においては、制御ライブラリ「マトリクス_load」が実行される際に、コンフィグレーションデータに基づき、コンフィグレーションを識別するマッチングパターンを生成し、これを、主メモリに記憶しておく。デバッガ24によるプログラムの実行停止の際に、コンフィグレーション決定部56が、カレントコンフィグレーション(バンク0のコンフィグレーション)からマッチングパターンを生成し、最も近いと判断されたバンクが、カレントコンフィグレーションの供給元であると判断する。
[第3の手法にかかる具体的処理(その1)]
第1の具体的処理においては、コンフィグレーションにしたがったマトリクス中のPEの存在パターンを符号化(たとえばCRC符号化)する。なお、符号化は、CRCに限定されるものではなく、他の符号化を適用してもよいことは言うまでもない。
図11(a)に示すように、制御ライブラリの関数「マトリクス_load」において(ステップ1101)、コンフィグレーションデータを参照して、コンフィグレーションにしたがったPEの存在パターンを生成する(ステップ1102)。この存在パターンの生成は、コンフィグレーションにおいてそれぞれの物理位置のPEを利用しているか否かを「1」或いは「0」のビットで表わすことにより実現される。
たとえば、コンフィグレーションデータは、PEごとに1〜8ワードのデータを有する。したがって、あるPEが5ワードのコンフィグレーションを必要とする場合には、32(ビット=1ワード)×5=160ビットのデータ量を必要とする。その一方、そのPEを使うか否かであれば、1ビットで足り、存在パターンとして必要なデータ容量を著しく削減することができるとともに、後述する比較処理を短時間で実現することもできる。
存在パターンは、主メモリ中、バンク情報テーブルのバンク番号に関連付けられて記憶される(ステップ1103)。たとえば、制御ライブラリ関数「マトリクス_load」が、バンク1に、コンフィグレーション名=Dのコンフィグレーションデータをロードするのであれば、コンフィグレーション名=Dのコンフィグレーションデータを構成するPEの存在パターンが、主メモリ中、バンク1に関連付けられて記憶される。
また、他律ダイナミックリコンフィグレーションが発生した場合には、制御ライブラリの関数「マトリクス_change」により、あるバンクのコンフィグレーションデータが、バンク0にコピーされるときにも、当該コピー先のバンク番号と、PEの存在パターンとが関連付けられる。これにより、バンク番号を参照して、主メモリからPEの存在パターンを読み出すことができる。
図11(b)に示すように、プログラムの実行が停止すると、デバッガ24のコンフィグレーション読み込み部54は、マトリクス32中のバンク0のコンフィグレーションを読み込み(ステップ1111)、コンフィグレーション決定部56が、読み込まれたコンフィグレーションを構成するPEの存在パターンを生成し、これを符号化する(ステップ1112)。次いで、コンフィグレーション決定部56は、バンク情報テーブルの各バンクに関連付けられて、主メモリ中に記憶されたPEの存在パターンのそれぞれと、ステップ1112で得られた存在パターンとを比較し、一致するものを見出す(ステップ1113)。コンフィグレーション決定部56は、実際にバンク0に存在したコンフィグレーションデータから得られた存在パターンと一致するような存在パターンが、バンク0と関連付けられたものであるかを判断する(ステップ1114)。
ステップ1114でノー(No)と判断された場合には、バンク情報テーブルにおいて、上記読み出されたコンフィグレーションの存在パターンと一致する存在パターンに関連付けられたバンク番号に対応するコンフィグレーション名のデバッグ情報を取得して出力するとともに(ステップ1115)、当該バンク番号に対応するコンフィグレーション名を、バンク0にコピーするよう、バンク情報テーブルが更新される(ステップ1116)。なお、ステップ1114でイエス(Yes)と判断された場合には、バンク情報テーブルにおいてバンク0のコンフィグレーション名のデバッグ情報を読み出して出力すればよい(ステップ1117)。
このように、第3の手法では、コンフィグレーション読み出し部54が読み出したコンフィグレーションデータの存在パターンと、主メモリに記憶しておいたバンク0〜バンク3までの存在パターンとを比較し、一致するもの(或いは後述するように最も類似するもの)をバンク0に供給されたコンフィグレーションであると判断して、バンク情報テーブルおよび静的変数を更新する。
[第3の手法にかかる具体的処理(その2)]
第2の具体的処理では、図11のステップ1102、1103において、コンフィグレーションを構成するPEの存在パターンを、符号化せずにそのまま保存する。同様に、ステップ1112においても、コンフィグレーション読み出しにより取得されたコンフィグレーションデータに基づいて、コンフィグレーションを構成するPEの存在パターンを生成する。また、存在パターンの比較(ステップ1113)において、双方の存在パターンが完全に一致しない場合でも、コンフィグレーション読み出しにより取得されたコンフィグレーションデータに基づく存在パターンに最も類似する存在パターンを選択するように構成される。
第1の具体的処理においては、たとえば、存在パターンのCRC符号を比較すればよいため、比較処理が極めて高速に実現できる一方、マトリクスにおいてコンフィグレーションデータの書き換えがあったときに対応できないという問題点がある。その一方、第2の具体的処理においては、存在パターンをビットごとに比較するため、比較自体は第1の具体的処理と比較して時間を要するが、上記コンフィグレーションの書き換えに対応できるという利点がある。
図10(a)に示す状態において、主メモリにおいては、バンク0〜3のそれぞれに関連付けられて、存在パターンA(コンフィグレーション名=Aに関する存在パターン、以下同様)、存在パターンA、存在パターンBおよび存在パターンCが記憶される(図12(a)参照)。図10(b)において、制御ライブラリの関数「マトリクス_load」により、コンフィグレーションメモリのバンク1にコンフィグレーション名=Dのコンフィグレーションがロードされると、これに伴って、コンフィグレーション名=Dのコンフィグレーションデータについて存在パターン(存在パターンD)が生成される。これは、バンク1と関連付けて主メモリ中に記憶される(図12(b)参照)。また、バンク情報テーブルも書き換えられる。
図10(c)、(d)に示す自律ダイナミックリコンフィグレーションは、マトリクスの外部から検出することはできない。第3の手法にしたがって図11(b)に示す処理を実行することにより、実際にマトリクスのコンフィグレーションメモリのバンク0に格納されているコンフィグレーションデータは、バンク情報テーブルに従うと、バンク1に格納されているとされたもの(コンフィグレーション名=D)であると判断される。そこで、図12(c)に示すようにバンク情報テーブルが更新され、また、静的変数pbも、図12(d)に示すように更新される。
[第4の手法]
次に、本実施の形態にかかる第4の手法について説明する。第1の手法における問題が生じる状態および第2の手法における問題が生じる状態の複合状態では、第3の手法を用いても、正しいコンフィグレーションデータを特定することができない。たとえば、
(1)制御ライブラリの関数「マトリクス_load」により新たなコンフィグレーションデータが、コンフィグレーションメモリのカレントコンフィグレーションにロードされた後、
(2)自律ダイナミックリコンフィグレーションが2回以上発生し、最初のバンク番号に戻り、
(3)再び、新たなコンフィグレーションデータが、同じバンクに、制御ライブラリの関数「マトリクス_load」を用いてロードされ、
(4)その後、デバッガ24によりプログラムの実行が停止された場合を考える。
図13(a)〜(e)は、上記場合の具体例を示す図である。図13(a)〜(d)は、それぞれ、図10(a)〜(d)と同様である。この例では、図13(e)に示すように、さらに、制御ライブラリの関数「マトリクス_load」により、新たなコンフィグレーションデータ(コンフィグレーション名=E)が、コンフィグレーションメモリのバンク1に記憶される。
第3の手法を利用して、コンフィグレーション決定部56において、コンフィグレーション読み出し部54により読み出されたコンフィグレーションデータの存在パターンと、バンク情報テーブルのバンク番号と関連付けられた存在パターンとを比較することを考える。しかしながら、図13(e)に示す状態では、バンク1に、コンフィグレーション名=Eのコンフィグレーションデータをロードしているため、主メモリには、コンフィグレーション名=A、E、B、Cの存在パターンのみが残され、その結果、適切なコンフィグレーション名を特定することが不可能である。第4の手法では、上述した場合でも適切なコンフィグレーション名を特定し、そのデバッガ情報をデバッグ用モニターが出力することを可能にする。
第4の手法においても、制御ライブラリの関数「マトリクス_load」の実行時に、図11のステップ1102に示すような、ロードするコンフィグレーションのデータを構成するPEの存在パターンが生成され、主メモリ中、そのバンク番号と関連付けられて記憶される。さらに、図14に示すように、制御ライブラリの関数「マトリクス_load」において(ステップ1401)、他律ダイナミックリコンフィグレーション時のバンク番号として静的変数pbを取得するとともに、コンフィグレーション読み込み部54が、コンフィグレーションメモリ40からバンク由来値を取得し、コンフィグレーション決定部56が、静的変数pbとバンク由来値とを比較する(ステップ1402)。
自律ダイナミックリコンフィグレーションが発生していないと考えられる場合、つまり、これらが一致する場合には(ステップ1403でイエス(Yes))、コンフィグレーション決定部56は、コンフィグレーション読み込み部54により取得されたコンフィグレーションデータに基づき存在パターンを生成する(ステップ1404)。
次いで、コンフィグレーション決定部56は、バンク情報テーブルの各バンクに関連付けられて、主メモリ中に記憶されたPEの存在パターンのそれぞれと、ステップ1112で得られた存在パターンとを比較し、一致するものを見出す(ステップ1405)。さらに、コンフィグレーション決定部56は、主メモリのバンク情報テーブルにおいて、バンク0のコンフィグレーション名を、一致した存在パターンのコンフィグレーション名に更新するとともに(ステップ1406)、バンク情報テーブルにおいて、一致した存在パターンのコンフィグレーション名が格納されていたバンク番号となるように更新する(ステップ1407)。
ステップ1403でノー(No)と判断された場合には、第2の手法と同様である。図14において、ステップ1408、1409は、図8のステップ804、805にそれぞれ対応する。
このような処理の後、コンフィグレーションメモリの指定のバンクに、コンフィグレーションデータがロードされる(ステップ1410)。
図15(a)および(b)は、それぞれ、図13(d)に示すコンフィグレーションデータのロード前で、かつ、図14に示す処理(ステップ1404〜1407)の実行前のバンク情報テーブルおよびコンフィグレーションメモリの状態を示す。また、図15(c)および(d)は、それぞれ、図13(d)に示すコンフィグレーションデータのロード前で、かつ、図14に示す処理の実行後のバンク情報テーブルおよびコンフィグレーションメモリの状態を示す。
コンフィグレーション読み出しにより読み出されたコンフィグレーションデータのコンフィグレーション名=Dであり、存在パターンの比較により、同じコンフィグレーションデータは、主メモリのバンク情報テーブル中、バンク1に関連付けられていることがわかる。そこで、図15(c)に示すように、バンク0には、コンフィグレーション名=Dのコンフィグレーションデータが格納されていることを示すように、バンク情報テーブルが更新される。
図16(a)〜(e)は、第4の手法を適用した場合の、コンフィグレーションメモリの状態を示す図である。図16(a)〜(d)は、それぞれ、図13(a)〜(d)と一致する。図16(e)においては、図15(c)に示す状態から、さらに、コンフィグレーションメモリに、コンフィグレーション名Eのコンフィグレーションデータがロードされている。このような場合でも、実行停止の後、デバッガ24は、バンク情報テーブル中、バンク0のコンフィグレーション名Dに基づいて、適切なコンフィグレーションのデバッグ情報を読み出して出力することができる。
[第1の手法〜第4の手法による処理負荷およびこれらの相互関係]
図17は、従来の手法と、本実施の形態にかかる第1の手法〜第4の手法による処理負荷を示す。図17において、丸印が、その手法において実行される処理を示す。また、×印は、その手法においては、実行されない処理を示す。
図17に示すように、第1の手法においては、他律ダイナミックリコンフィグレーションの発生時(つまり、制御ライブラリの関数「マトリクス_change」の実行時)に、静的変数pbに、カレントコンフィグレーションとなるコンフィグレーションのバンク番号を記憶するとともに、プログラムの実行停止時に、静的変数と、コンフィグレーションメモリから読み出したバンク由来値の一致を判断する。これにより、自律ダイナミックリコンフィグレーションの発生を検出する。
第2の手法においては、コンフィグレーションメモリのバンクへのロード時、つまり、制御ライブラリの関数「マトリクス_load」の実行時に、静的変数pbとバンク由来値が一致しない場合には、その時点で、あたかも他律ダイナミックリコンフィグレーションが発生したように、静的変数を更新している。
その一方、第3の手法においては、第1の手法において、自律ダイナミックリコンフィグレーションが発生していないと判断された場合にも、存在パターンの比較により、自律ダイナミックリコンフィグレーションが複数回発生して最初のバンク番号に戻ってしまった場合にも対応できるようにしている。
さらに、第4の手法においては、第3の手法に加えて、コンフィグレーションメモリのバンクへのロード時に、第2の手法において一定の処理を行ったように、存在パターンの比較により、静的変数pbの整合を図っている。
[デバッガにおける選択]
本実施の形態においては、設計者のデバッガに対する要求水準にしたがって、上記第1の手法から第4の手法のいずれかを提供してデバッガ24が動作できるようなっている。さらに、上述した手法を用いず、従来と同様に、単に、コンフィグレーション読み出し部54から読み出されたバンク由来値にしたがって、バンク情報テーブル中のコンフィグレーション名を特定し、そのデバッグ情報を取得するように設定することも可能である。
ここでは、静的な機能選択する実装(静的実装)と、動的に機能選択を許す実装(動的実装)とを考えることができる。静的実装においては、C言語のマクロに数値をあてはめ、アプリケーションのコンパイル時に定義されるその数値によってライブラリの中で呼ばれる処理を変えられるようにしておけば良い。
動的実装においては、アプリケーションプログラムのコンパイル時には最低のデバッグレベルで動作するようにしておく。ただし、スタティックまたはグローバルな変数の値によって処理を帰るようなライブラリ関数の構造を構築しておく。そのまま実行すると、その変数の値は変化しないが、デバッガの請求項亭により、変数の値を実行の前に書き換えることができ、目的のデバッグレベルで実行することが可能となる。
本実施の形態によれば、自律ダイナミックリコンフィグレーション発生後のデバッグを行うことが可能となる。また、デバッガの処理負荷の軽減が必要な場合には、機能の選択により効率的にデバッグを実現することができる。
また、本実施の形態においては、前回デバッガが停止したとき、制御ライブラリの関数「マトリクス_load」が実行されたとき、或いは、制御ライブラリの関数「マトリクス_change」が実行されたときのいずれかの1時点の状態と、現時点の状態から得られる状態を比較し、カレントコンフィグレーションのデバッグ情報を取得し、或いは、デバッグ情報の状態を更新する。したがって、自律ダイナミックリコンフィグレーションや「マトリクス_load」が幾度も繰り返されることが想定されるアプリケーションであっても、多くの記憶容量を要することなく、つまり、主メモリ等を破綻させることなく継続したプログラムの実行およびデバッグを実現することが可能となる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、前記実施の形態の第3の手法および第4の手法において、マッチングパターンとして、コンフィグレーションを構成するPEの利用の是非を示すビットからなる存在パターンを利用しているがこれに限定されるものはない。コンフィグレーションデータ全体を使ってこれを符合化(たとえば、CRC符号化)しても良い。また、マトリクスにおけるプログラムの実行の際に変更される可能性のあるコンフィグレーションの部分を除き、符号化をしてもよい。
また、前記実施の形態において、コンフィグレーションメモリのバンクの数は4としたが、この数が限定されるものではないことは言うまでも無い。
図1は、本実施の形態にかかる回路設計システムの概略を示すブロックダイヤグラムである。 図2は、本実施の形態にかかるLSIの概略を示すブロックダイヤグラムである。 図3は、コンフィグレーションメモリの構成をより詳細に示すブロックダイヤグラムである。 図4は、本実施の形態にかかるデバッガ、および、デバッガに関連する部材(主メモリ等)の構成を示すブロックダイヤグラムである。 図5(a)、(b)は、それぞれ、コンフィグレーションを生じるイベント、コンフィグレーションメモリに格納されたコンフィグレーション名、および、バンク情報テーブルの例を示す図である。 図6は、本実施の形態にかかる第1の手法において実行される処理を示すフローチャートである。 図7(a)〜(c)は、それぞれ、イベントにしたがった、コンフィグレーションメモリの状態およびバンク情報テーブルの状態の例を示す図である。 図8は、本実施の形態にかかる第2の手法において実行される処理を示すフローチャートである。 図9(a)〜(c)は、それぞれ、第2の手法を適用した場合の、コンフィグレーションメモリの状態およびバンク情報テーブルの状態の例を示す図である。 図10(a)〜(d)は、それぞれ、イベントにしたがった、コンフィグレーションメモリの状態およびバンク情報テーブルの状態の例を示す図である。 図11は、本実施の形態にかかる第3の手法において実行される処理を示すフローチャートである。 図12(a)〜(d)は、それぞれ、第3の手法を適用した場合の、コンフィグレーションメモリの状態およびバンク情報テーブルの状態の例を示す図である。 図13(a)〜(e)は、それぞれ、イベントにしたがった、コンフィグレーションメモリの状態およびバンク情報テーブルの状態の例を示す図である。 図14は、本実施の形態にかかる第4の手法において実行される処理を示すフローチャートである。 図15は、図14に示す処理を具体的に説明する図である。 図16(a)〜(e)は、それぞれ、第4の手法を適用した場合の、コンフィグレーションメモリの状態およびバンク情報テーブルの状態の例を示す図である。 図17は、本実施の形態にかかる第1の手法〜第4の手法のそれぞれの相互関係を示す図である。
符号の説明
12 アルゴリズム設計部
14 プロファイラ
16 第1のコンパイラ
18 DFCコンパイラ
20 第2のコンパイラ
22 シミュレータ/エミュレータ
24 デバッガ
52 デバッグ用モニター
54 コンフィグレーション読み出し部
56 コンフィグレーション決定部

Claims (18)

  1. 主としてシーケンシャルな処理を実行するプロセッサコア、および、データ処理および演算を担当し、かつ、その2次元アレイ構造の回路構成要素間の接続を変更することで、そのコンフィグレーションを動的に変更可能なマトリクスと、を備えた動的再構成可能LSIであって、
    前記マトリクスが、複数のコンフィグレーションのそれぞれを表わすコンフィグレーションデータを記憶する複数のバンクを有するコンフィグレーションメモリを有し、かつ、前記複数のバンクのうち実行バンクに格納されたコンフィグレーションデータに基づいて回路構成要素間の接続が規定され、かつ、前記プロセッサコアからの指示に従う他律ダイナミックリコンフィグレーションにより、或いは、マトリクス自身による自律ダイナミックリコンフィグレーションにより、各バンクに格納されたコンフィグレーションデータを前記実行バンクにコピーすることにより、そのコンフィグレーションを変更するとともに、 当該コンフィグレーションの変更に伴って、実行バンクにコピーされたコンフィグレーションデータの供給元となったバンクを特定するバンク由来値を記憶するように構成され、
    前記プロセッサコアが、主メモリに格納されたコンフィグレーションデータを、前記コンフィグレーションメモリの所望のバンクにロードするロード命令、および、何れかのバンクに格納されたコンフィグレーションを実行バンクにコピーさせて他律ダイナミックリコンフィグレーションを発生させるコンフィグレーション変更命令を実行可能であり、かつ、前記ロード命令およびコンフィグレーション変更命令の実行に伴って、前記主メモリ中、バンクを特定する情報およびコンフィグレーションを特定するコンフィグレーション名が関連付けられ、かつ、前記実行バンクに対応するコンフィグレーション名が格納されたバンク情報テーブルを更新するように構成された、動的再構成可能なLSIにおいて、
    前記動的再構成可能LSIのプログラムの実行を設定にしたがって停止させ、その状態において、主メモリに記憶されたコンフィグレーションデータおよびそのソースデータ、並びに、コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを取得するデバッガのデバッグ方法であって、
    前記プロセッサコアによる他律ダイナミックリコンフィグレーションの発生時に、実行バンクに格納されるべきコンフィグレーションの供給元のバンク名を静的変数として静的変数記憶手段に記憶するステップと、
    前記プログラムの実行停止時に、前記マトリクスから前記バンク由来値を取得するステップと、
    前記静的変数と前記バンク由来値とを比較し、これらが不一致の場合に、自律ダイナミックリコンフィグレーションが発生したと判断するステップと、
    前記自律ダイナミックリコンフィグレーションが発生していないと判断された場合に、前記バンク情報テーブル中、前記実行バンクに対応するコンフィグレーションデータを読み出すステップと、
    前記自律ダイナミックリコンフィグレーションが発生したと判断した場合に、前記バンク情報テーブル中、前記バンク由来値が示すコンフィグレーションデータを読み出すステップと、
    前記静的変数記憶手段に記憶された静的変数および前記バンク情報テーブルを、前記バンク由来値に整合するように更新するステップと、を備えたことを特徴とするデバッグ方法。
  2. さらに、前記プロセッサコアによるロード命令の実行時に、前記マトリクスから前記バンク由来値を取得するステップと、
    前記静的変数と前記バンク由来値とを比較し、これらが不一致の場合に、前記静的変数記憶手段に記憶された静的変数および前記バンク情報テーブルを、前記バンク由来値に整合するように更新するステップと、を備えたことを特徴とする請求項1に記載のデバッグ方法。
  3. 前記静的変数記憶手段に記憶された静的変数および前記バンク情報テーブルを更新するステップが、
    前記静的変数の値として前記静的変数記憶手段にバンク由来値を記憶するステップと、
    前記バンク情報テーブル中、前記実行バンクに関連付けてバンク由来値を格納するステップと、を有することを特徴とする請求項1または2に記載のデバッグ方法。
  4. 主としてシーケンシャルな処理を実行するプロセッサコア、および、データ処理および演算を担当し、かつ、その2次元アレイ構造の回路構成要素間の接続を変更することで、そのコンフィグレーションを動的に変更可能なマトリクスと、を備えた動的再構成可能LSIであって、
    前記マトリクスが、複数のコンフィグレーションのそれぞれを表わすコンフィグレーションデータを記憶する複数のバンクを有するコンフィグレーションメモリを有し、かつ、前記複数のバンクのうち実行バンクに格納されたコンフィグレーションデータに基づいて回路構成要素間の接続が規定され、かつ、前記プロセッサコアからの指示に従う他律ダイナミックリコンフィグレーションにより、或いは、マトリクス自身による自律ダイナミックリコンフィグレーションにより、各バンクに格納されたコンフィグレーションデータを前記実行バンクにコピーすることにより、そのコンフィグレーションを変更するとともに、 当該コンフィグレーションの変更に伴って、実行バンクにコピーされたコンフィグレーションデータの供給元となったバンクを特定するバンク由来値を記憶するように構成され、
    前記プロセッサコアが、主メモリに格納されたコンフィグレーションデータを、前記コンフィグレーションメモリの所望のバンクにロードするロード命令、および、何れかのバンクに格納されたコンフィグレーションを実行バンクにコピーさせて他律ダイナミックリコンフィグレーションを発生させるコンフィグレーション変更命令を実行可能であり、かつ、前記ロード命令およびコンフィグレーション変更命令の実行に伴って、前記主メモリ中、バンクを特定する情報と、コンフィグレーションを特定するコンフィグレーション名と、が関連付けられたバンク情報テーブルを更新するように構成された、動的再構成可能なLSIにおいて、
    前記動的再構成可能LSIのプログラムの実行を設定にしたがって停止させ、その状態において、主メモリに記憶されたコンフィグレーションデータおよびそのソースデータ、並びに、コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを取得するデバッガのデバッグ方法であって、
    前記プロセッサコアのロード命令の実行時に、前記ロードするコンフィグレーションデータを特定するパターンを生成し、主メモリ中、前記ロードすべきバンクに関連付けて記憶するステップと、
    前記プロセッサコアによる他律ダイナミックリコンフィグレーションの発生時に、実行バンクに格納されるべきコンフィグレーションの供給元のバンク名を静的変数として静的変数記憶手段に記憶するステップと、
    前記プログラムの実行停止時に、前記コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを読み出すステップと、
    前記実行バンクから読み出されたコンフィグレーションメモリを特定するパターンを生成するステップと、
    前記生成されたパターンと、前記主メモリ中、それぞれのバンクに関連付けられて記憶されたパターンとを比較し、一致或いは最も類似するパターンに関連付けられたバンクを特定するステップと、
    前記バンク情報テーブル中、前記特定されたバンクの情報が示すコンフィグレーションデータを読み出すステップと、を備えたことを特徴とするデバッグ方法。
  5. さらに、前記特定されたバンクが実行バンクであるか否かを判断するステップと、
    前記特定されたバンクが実行バンクである場合に、前記バンク情報テーブル中、前記実行バンクが示すコンフィグレーションデータを読み出すステップと、
    前記特定されたバンクが実行バンク以外である場合に、前記バンク情報テーブル中、前記特定されたバンクの情報が示すコンフィグレーションデータを読み出すステップと、
    前記バンク情報テーブルを、前記特定されたバンクの情報に整合するように更新するステップと、を備えたことを特徴とする請求項4に記載のデバッグ方法。
  6. さらに、前記プロセッサコアによるロード命令実行時に、前記マトリクスから前記バンク由来値を取得するステップと、
    前記静的変数とバンク由来値とを比較し、これらが不一致の場合に、前記静的変数記憶手段に記憶された静的変数および前記バンク情報テーブルを、前記バンク由来値に整合するように更新するステップと、
    前記静的変数と前記バンク由来値が一致した場合に、前記コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを読み出すステップと、
    前記実行バンクから読み出されたコンフィグレーションメモリを特定するパターンを生成するステップと、
    前記生成されたパターンと、前記主メモリ中、それぞれのバンクに関連付けられて記憶されたパターンとを比較し、一致或いは最も類似するパターンに関連付けられたバンクを特定するステップと、
    前記バンク情報テーブルを、前記特定されたバンクの情報に整合するように更新するステップと、を備えたことを特徴とする請求項4または5に記載のデバッグ方法。
  7. 前記パターンを生成するステップが、前記マトリクス中の回路構成要素のそれぞれを利用しているか否かを示すビット列を含む存在パターンを生成するステップを有することを特徴とする請求項4ないし6の何れか一項に記載のデバッグ方法。
  8. 前記パターンを生成するステップが、前記マトリクス中の回路構成要素のそれぞれを利用しているか否かを示すビット列を符号化した存在パターンを生成するステップを有することを特徴とする請求項4ないし6の何れか一項に記載のデバッグ方法。
  9. 前記パターンを生成するステップが、前記コンフィグレーションデータの少なくとも部分を符号化するステップを有することを特徴とする請求項4ないし6の何れか一項に記載のデバッグ方法。
  10. 主としてシーケンシャルな処理を実行するプロセッサコア、および、データ処理および演算を担当し、かつ、その2次元アレイ構造の回路構成要素間の接続を変更することで、そのコンフィグレーションを動的に変更可能なマトリクスと、を備えた動的再構成可能LSIであって、
    前記マトリクスが、複数のコンフィグレーションのそれぞれを表わすコンフィグレーションデータを記憶する複数のバンクを有するコンフィグレーションメモリを有し、かつ、前記複数のバンクのうち実行バンクに格納されたコンフィグレーションデータに基づいて回路構成要素間の接続が規定され、かつ、前記プロセッサコアからの指示に従う他律ダイナミックリコンフィグレーションにより、或いは、マトリクス自身による自律ダイナミックリコンフィグレーションにより、各バンクに格納されたコンフィグレーションデータを前記実行バンクにコピーすることにより、そのコンフィグレーションを変更するとともに、 当該コンフィグレーションの変更に伴って、実行バンクにコピーされたコンフィグレーションデータの供給元となったバンクを特定するバンク由来値を記憶するように構成され、
    前記プロセッサコアが、主メモリに格納されたコンフィグレーションデータを、前記コンフィグレーションメモリの所望のバンクにロードするロード命令、および、何れかのバンクに格納されたコンフィグレーションを実行バンクにコピーさせて他律ダイナミックリコンフィグレーションを発生させるコンフィグレーション変更命令を実行可能であり、かつ、前記ロード命令およびコンフィグレーション変更命令の実行に伴って、前記主メモリ中、バンクを特定する情報およびコンフィグレーションを特定するコンフィグレーション名が関連付けられ、かつ、前記実行バンクに対応するコンフィグレーション名が格納されたバンク情報テーブルを更新するように構成された、動的再構成可能なLSIにおいて、
    前記動的再構成可能LSIのプログラムの実行を設定にしたがって停止させ、その状態において、主メモリに記憶されたコンフィグレーションデータおよびそのソースデータ、並びに、コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを取得するデバッガとして、コンピュータを動作させるために、当該コンピュータにより読み出し可能なデバッグ用プログラムであって、前記コンピュータに、
    前記プロセッサコアによる他律ダイナミックリコンフィグレーションの発生時に、実行バンクに格納されるべきコンフィグレーションの供給元のバンク名を静的変数として静的変数記憶手段に記憶するステップ、
    前記プログラムの実行停止時に、前記マトリクスから前記バンク由来値を取得するステップ、
    前記静的変数と前記バンク由来値とを比較し、これらが不一致の場合に、自律ダイナミックリコンフィグレーションが発生したと判断するステップ、
    前記自律ダイナミックリコンフィグレーションが発生していないと判断された場合に、前記バンク情報テーブル中、前記実行バンクに対応するコンフィグレーションデータを読み出すステップ、
    前記自律ダイナミックリコンフィグレーションが発生したと判断した場合に、前記バンク情報テーブル中、前記バンク由来値が示すコンフィグレーションデータを読み出すステップ、並びに、
    前記静的変数記憶手段に記憶された静的変数および前記バンク情報テーブルを、前記バンク由来値に整合するように更新するステップを実行させることを特徴とするデバッグ用プログラム。
  11. さらに、前記コンピュータに、
    前記プロセッサコアによるロード命令の実行時に、前記マトリクスから前記バンク由来値を取得するステップ、並びに、
    前記静的変数と前記バンク由来値とを比較し、これらが不一致の場合に、前記静的変数記憶手段に記憶された静的変数および前記バンク情報テーブルを、前記バンク由来値に整合するように更新するステップを実行させることを特徴とする請求項10に記載のプログラム。
  12. 前記静的変数記憶手段に記憶された静的変数および前記バンク情報テーブルを更新するステップにおいて、前記コンピュータに、
    前記静的変数の値として前記静的変数記憶手段にバンク由来値を記憶するステップ、並びに、
    前記バンク情報テーブル中、前記実行バンクに関連付けてバンク由来値を格納するステップを実行させることを特徴とする請求項10または11に記載のプログラム。
  13. 主としてシーケンシャルな処理を実行するプロセッサコア、および、データ処理および演算を担当し、かつ、その2次元アレイ構造の回路構成要素間の接続を変更することで、そのコンフィグレーションを動的に変更可能なマトリクスと、を備えた動的再構成可能LSIであって、
    前記マトリクスが、複数のコンフィグレーションのそれぞれを表わすコンフィグレーションデータを記憶する複数のバンクを有するコンフィグレーションメモリを有し、かつ、前記複数のバンクのうち実行バンクに格納されたコンフィグレーションデータに基づいて回路構成要素間の接続が規定され、かつ、前記プロセッサコアからの指示に従う他律ダイナミックリコンフィグレーションにより、或いは、マトリクス自身による自律ダイナミックリコンフィグレーションにより、各バンクに格納されたコンフィグレーションデータを前記実行バンクにコピーすることにより、そのコンフィグレーションを変更するとともに、 当該コンフィグレーションの変更に伴って、実行バンクにコピーされたコンフィグレーションデータの供給元となったバンクを特定するバンク由来値を記憶するように構成され、
    前記プロセッサコアが、主メモリに格納されたコンフィグレーションデータを、前記コンフィグレーションメモリの所望のバンクにロードするロード命令、および、何れかのバンクに格納されたコンフィグレーションを実行バンクにコピーさせて他律ダイナミックリコンフィグレーションを発生させるコンフィグレーション変更命令を実行可能であり、かつ、前記ロード命令およびコンフィグレーション変更命令の実行に伴って、前記主メモリ中、バンクを特定する情報と、コンフィグレーションを特定するコンフィグレーション名と、が関連付けられたバンク情報テーブルを更新するように構成された、動的再構成可能なLSIにおいて、
    前記動的再構成可能LSIのプログラムの実行を設定にしたがって停止させ、その状態において、主メモリに記憶されたコンフィグレーションデータおよびそのソースデータ、並びに、コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを取得するデバッガとして、コンピュータを動作させるために、当該コンピュータにより読み出し可能なデバッグ用プログラムであって、前記コンピュータに、
    前記プロセッサコアのロード命令の実行時に、前記ロードするコンフィグレーションデータを特定するパターンを生成し、主メモリ中、前記ロードすべきバンクに関連付けて記憶するステップ、
    前記プロセッサコアによる他律ダイナミックリコンフィグレーションの発生時に、実行バンクに格納されるべきコンフィグレーションの供給元のバンク名を静的変数として静的変数記憶手段に記憶するステップ、
    前記プログラムの実行停止時に、前記コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを読み出すステップ、
    前記実行バンクから読み出されたコンフィグレーションメモリを特定するパターンを生成するステップ、
    前記生成されたパターンと、前記主メモリ中、それぞれのバンクに関連付けられて記憶されたパターンとを比較し、一致或いは最も類似するパターンに関連付けられたバンクを特定するステップ、並びに、
    前記バンク情報テーブル中、前記特定されたバンクの情報が示すコンフィグレーションデータを読み出すステップを実行させることを特徴とするデバッグ用プログラム。
  14. さらに、前記コンピュータに、
    前記特定されたバンクが実行バンクであるか否かを判断するステップ、
    前記特定されたバンクが実行バンクである場合に、前記バンク情報テーブル中、前記実行バンクが示すコンフィグレーションデータを読み出すステップ、
    前記特定されたバンクが実行バンク以外である場合に、前記バンク情報テーブル中、前記特定されたバンクの情報が示すコンフィグレーションデータを読み出すステップ、並びに、
    前記バンク情報テーブルを、前記特定されたバンクの情報に整合するように更新するステップを、実行させることを特徴とする請求項13に記載のプログラム。
  15. さらに、前記コンピュータに、
    前記プロセッサコアによるロード命令実行時に、前記マトリクスから前記バンク由来値を取得するステップ、
    前記静的変数とバンク由来値とを比較し、これらが不一致の場合に、前記静的変数記憶手段に記憶された静的変数および前記バンク情報テーブルを、前記バンク由来値に整合するように更新するステップ、
    前記静的変数と前記バンク由来値が一致した場合に、前記コンフィグレーションメモリの実行バンクに格納されたコンフィグレーションデータを読み出すステップと、
    前記実行バンクから読み出されたコンフィグレーションメモリを特定するパターンを生成するステップ、
    前記生成されたパターンと、前記主メモリ中、それぞれのバンクに関連付けられて記憶されたパターンとを比較し、一致或いは最も類似するパターンに関連付けられたバンクを特定するステップ、並びに、
    前記バンク情報テーブルを、前記特定されたバンクの情報に整合するように更新するステップを実行させることを特徴とする請求項13または14に記載のプログラム。
  16. 前記パターンを生成するステップにおいて、前記コンピュータに、
    前記マトリクス中の回路構成要素のそれぞれを利用しているか否かを示すビット列を含む存在パターンを生成するステップを実行させることを特徴とする請求項13ないし15の何れか一項に記載のプログラム。
  17. 前記パターンを生成するステップにおいて、前記コンピュータに、
    前記マトリクス中の回路構成要素のそれぞれを利用しているか否かを示すビット列を符号化した存在パターンを生成するステップを実行させることを特徴とする請求項13ないし15の何れか一項に記載のプログラム。
  18. 前記パターンを生成するステップにおいて、前記コンピュータに、
    前記コンフィグレーションデータの少なくとも部分を符号化するステップを実行させることを特徴とする請求項13ないし15の何れか一項に記載のプログラム。
JP2004358785A 2004-12-10 2004-12-10 集積回路のデバッグ方法、デバッグプログラム Expired - Fee Related JP4569284B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004358785A JP4569284B2 (ja) 2004-12-10 2004-12-10 集積回路のデバッグ方法、デバッグプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004358785A JP4569284B2 (ja) 2004-12-10 2004-12-10 集積回路のデバッグ方法、デバッグプログラム

Publications (2)

Publication Number Publication Date
JP2006164186A JP2006164186A (ja) 2006-06-22
JP4569284B2 true JP4569284B2 (ja) 2010-10-27

Family

ID=36666103

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004358785A Expired - Fee Related JP4569284B2 (ja) 2004-12-10 2004-12-10 集積回路のデバッグ方法、デバッグプログラム

Country Status (1)

Country Link
JP (1) JP4569284B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101581882B1 (ko) 2009-04-20 2015-12-31 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
JP6160317B2 (ja) * 2013-07-09 2017-07-12 富士ゼロックス株式会社 画像処理装置及びプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002305438A (ja) * 2001-04-05 2002-10-18 Hitachi Ltd Fpga、fpgaの機能変更方法、および、それを利用した通信装置
WO2003007155A1 (fr) * 2001-07-12 2003-01-23 Ip Flex Inc. Dispositif a circuit integre

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6920627B2 (en) * 2002-12-13 2005-07-19 Xilinx, Inc. Reconfiguration of a programmable logic device using internal control

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002305438A (ja) * 2001-04-05 2002-10-18 Hitachi Ltd Fpga、fpgaの機能変更方法、および、それを利用した通信装置
WO2003007155A1 (fr) * 2001-07-12 2003-01-23 Ip Flex Inc. Dispositif a circuit integre

Also Published As

Publication number Publication date
JP2006164186A (ja) 2006-06-22

Similar Documents

Publication Publication Date Title
JP4629768B2 (ja) 並列化処理方法、システム、及びプログラム
KR101418969B1 (ko) 프로세서 및 컴파일 방법
GB2480285A (en) Conditional compare instruction which sets a condition code when it is not executed
US9720793B2 (en) Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads
Pantridge et al. On the difficulty of benchmarking inductive program synthesis methods
JP5479942B2 (ja) 並列化方法、システム、及びプログラム
JP3990332B2 (ja) データ処理システム
US7266791B2 (en) High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium
Guidolin et al. Using high performance techniques to accelerate demand-driven hydraulic solvers
JPH0816429A (ja) 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置
US9658938B2 (en) Iterative test generation based on data source analysis
CN108700864A (zh) 可编程逻辑控制器中网络攻击弹性控制的程序随机化
JP4569284B2 (ja) 集積回路のデバッグ方法、デバッグプログラム
JP2011253253A (ja) コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
Biallas et al. {Counterexample-Guided} Abstraction Refinement for {PLCs}
US7296199B1 (en) Systems and methods for defining and utilizing attributes of a processor resource
Di Carlo et al. On the in-field test of the GPGPU scheduler memory
JP5082797B2 (ja) ソフトウェア部分テストシステム
JP3641090B2 (ja) プログラミング支援装置とその方法
EP4002096B1 (en) Design support apparatus and design support method
US20230229403A1 (en) Method for generating source code
JP4633073B2 (ja) データ処理システム
JPS63214804A (ja) Plc用プロセツサ及びplc
JP5067705B2 (ja) 異常系テスト支援装置、異常系テスト支援方法、及びプログラム
WO2012170675A2 (en) Verification of computer-executable code generated from a model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091130

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20100208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100208

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100726

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130820

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4569284

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

LAPS Cancellation because of no payment of annual fees