(57)【特許請求の範囲】
【請求項１】
プログラムを記憶する記憶部と、該記憶部に記憶されたプログラムを読み出し、読み出した該プログラムを実行する第１および第２の演算部と、該記憶部の同一アドレス空間に同時になされた読み出し要求に対するプログラムの転送処理を調停し調停結果を出力する調停部とを有する演算装置のアクセス競合試験を行う競合試験装置であって、
該記憶部の奇数個のアドレス空間にそれぞれ該調停部の調停動作を試験する試験プログラムを記憶させる手段と、
該記憶部に記憶された複数の試験プログラムを所定の順序に従って該第１の演算部に読み出させるとともに、該複数の試験プログラムを該所定の順序と逆の順序に従って該第２の演算部に読み出させる手段と、
該調停部の調停結果を記録する手段と
を有することを特徴とする競合試験装置。
【請求項２】
該調停部は該記憶部の同一アドレス空間に同時に読み出し要求がされた場合に所定値の競合信号を出力し、
該所定値の競合信号を検出するまで該第１の演算部と該第２の演算部との読み出し要求のタイミングをずらすことを特徴とする、請求項１に記載の競合試験装置。
【請求項３】
該第１および第２の演算部における該試験プログラムの読み出し要求タイミングの差に基づいて該該第１および第２の演算部のうちいずれか一方の演算部による該試験プログラムの読み出しタイミングをずらす手段をさらに有することを特徴とする、請求項１に記載の競合試験装置。
【請求項４】
該第１および第２の演算部は、該記憶部から読み出した該試験プログラムを一時記憶する一時記憶部をそれぞれ有し、
該記憶部に記憶させるそれぞれの該試験プログラムの容量値は、該一時記憶部の容量値より大きいことを特徴とする、請求項１に記載の競合試験装置。
【請求項５】
プログラムを記憶する記憶部と、該記憶部に記憶されたプログラムを読み出し、読み出した該プログラムを実行する第１および第２の演算部と、該記憶部の同一アドレス空間に同時になされた読み出し要求に対するプログラムの転送処理を調停し調停結果を出力する調停部とを有する演算装置のアクセス競合試験を行う競合試験方法であって、
該記憶部の奇数個のアドレス空間にそれぞれ該調停部の調停動作を試験する試験プログラムを記憶させ、
該記憶部に記憶された複数の試験プログラムを所定の順序に従って該第１の演算部に読み出させ、
該記憶部に記憶された複数の試験プログラムを該所定の順序と逆の順序に従って該第２の演算部に読み出させ、
該調停部の調停結果を記録する
ことを特徴とする競合試験方法。
【請求項６】
プログラムを記憶する記憶部と、該記憶部に記憶されたプログラムの読み出し、読み出した該プログラムを実行する第１および第２の演算部と、該記憶部の同一アドレス空間に同時になされた読み出し要求に対するプログラムの転送処理を調停し調停結果を出力する調停部とを有する演算装置のアクセス競合試験を行う競合試験プログラムであって、
該記憶部の奇数個のアドレス空間にそれぞれ該調停部の調停動作を試験する試験プログラムを記憶させ、
該記憶部に記憶された複数の試験プログラムを所定の順序に従って該第１の演算部に読み出させ、
該記憶部に記憶された複数の試験プログラムを該所定の順序と逆の順序に従って該第２の演算部に読み出させ、
該調停部の調停結果を記録する
手順をコンピュータに実行させることを特徴とする競合試験プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス競合発生時の調停動作を試験する競合試験装置に関する。
【背景技術】
【０００２】
数値演算処理を実行する演算装置に対し、より複雑で高速な演算が求められている。演算処理高速化の要求に対応するため、演算装置は複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算部を有する場合がある。演算装置は複数のＣＰＵにより複数の演算を並列に処理することが出来る。
【０００３】
演算部が実行するプログラムは、メモリなどの記憶部に記憶される。複数の演算部は記憶部を共有する場合がある。複数の演算部が共通する記憶部の同一アドレス空間に記憶されたプログラムを同時に読み出そうとすると、アクセス競合が発生する。アクセス競合が発生した場合に、あらかじめ定められた規則に従ってアクセス順序を調停する回路を調停回路という。複数の演算部は調停回路を経由して記憶部にアクセスすることにより、競合発生時でもエラーになることなく、プログラムの実行を継続することが出来る。
【０００４】
調停回路があらかじめ定められた規則に従ってアクセス順序を調停しているかを試験するための装置として、競合試験装置がある。競合試験装置は擬似的に調停回路で競合を発生させ、アクセス競合発生時の調停回路の動作を評価する。
【０００５】
それぞれの演算部と記憶部との間の配線長には差が存在する場合がある。演算部から記憶部に伝播する信号の周期が短くなると、配線長の差による見かけ上のタイミングのずれは大きくなる。タイミングのずれが大きい場合、調停回路においてアクセス競合が発生するように各演算部から記憶部へのアクセスを制御するのが困難になる。
【０００６】
以下の特許文献には、アクセス競合を擬似的に発生させるための擬似アクセス信号発生手段を設ける技術が開示されている。擬似アクセス信号発生手段を設けることにより、確実にアクセス競合を発生させることが出来る。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１３４８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
アクセス競合を擬似的に発生させるために擬似アクセス信号発生手段を設けることは、試験のために新たに装置を設計することになる。新たな装置の設計は演算装置開発工数の増大につながる。
【０００９】
本発明の一実施例では、擬似アクセス信号発生手段を設けることなく、確実にアクセス競合を発生させる競合試験装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、プログラムを記憶する記憶部と、該記憶部に記憶されたプログラムを読み出し、読み出した該プログラムを実行する第１および第２の演算部と、該記憶部の同一アドレス空間に同時になされた読み出し要求に対するプログラムの転送処理を調停し調停結果を出力する調停部とを有する演算装置のアクセス競合試験を行う競合試験装置は、該記憶部の奇数個のアドレス空間にそれぞれ該調停部の調停動作を試験する試験プログラムを記憶させる手段と、該記憶部に記憶された複数の試験プログラムを所定の順序に従って該第１の演算部に読み出させるとともに、該複数の試験プログラムを該所定の順序と逆の順序に従って該第２の演算部に読み出させる手段と、該調停部の調停結果を記録する手段とを有する。
【発明の効果】
【００１１】
実施形態によれば、擬似アクセス信号発生手段を設けることなく、確実にアクセス競合を発生させる競合試験装置を提供することが出来る。
【図面の簡単な説明】
【００１２】
【図１】競合試験装置および演算装置のブロック図である。
【図２】アクセス競合を発生させるアクセス競合試験プログラムのメモリマップ図である。
【図３】試験制御部によるアクセス競合試験の処理を示すフローチャート図である。
【図４】調停部のアクセス競合試験を実行するコンピュータのブロック図である。
【図５】２つのＣＰＵにおけるアクセス競合の発生を説明するタイミングチャート図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について説明する。なお、各実施形態における構成の組み合わせも本発明の実施形態に含まれる。
【００１４】
図１はアクセス競合試験を実行する競合試験装置１および競合試験対象となる演算装置２のブロック図である。競合試験装置１は演算装置２のアクセス競合試験を行う。競合試験装置１は演算装置２の演算処理動作を制御する制御部１４、制御部１４により実行されるプログラムを記憶する記憶部１５を有する。
【００１５】
演算装置２はＣＰＵ４、ＣＰＵ５、調停部６、メモリ８を有する。メモリ８はアドレス空間を奇数個のメモリブロックに分け、それぞれのメモリブロックに別個のプログラムを記憶させた記憶部の一例である。ＣＰＵ４、５はメモリ８にプログラムの読み出し要求を行う演算部の一例である。調停部６は記憶部の同一アドレス空間を同時に指定する読み出し要求に対するプログラムの転送処理を調停する。
【００１６】
競合試験装置１はメモリ８の奇数個のアドレス空間にそれぞれ調停部６の調停動作を試験する試験プログラムを記憶させる。競合試験装置１はメモリ８に記憶された複数の試験プログラムを所定の順序に従ってＣＰＵ４に読み出し要求させる。競合試験装置１はメモリ８に記憶された複数の試験プログラムを上記所定の順序と逆の順序に従ってＣＰＵ５に読み出し要求させる。競合試験装置１はメモリ８の同一アドレス空間に対し同時になされた読み出し要求に対する試験プログラムの転送処理を調停部６に調停させる。競合試験装置１は調停部６の調停動作を記録する。前述の通りアドレス空間を奇数個に分けるのは、偶数個だとＣＰＵ４、ＣＰＵ５が互いに逆順に読み出し要求を行っても、同一メモリブロックに同時にアクセスしないタイミングが生じるためである。アドレス空間を奇数個に分けることにより、ＣＰＵ４、ＣＰＵ５が互いに逆順に読み出し要求を行った場合に確実にアクセス競合を発生させることが出来る。アクセス競合の詳細については後述する。
【００１７】
競合試験装置１はＣＰＵ４、ＣＰＵ５に対し、調停部６を経由してメモリ８にアクセスさせる。ＣＰＵ４、ＣＰＵ５はメモリ８に記憶されたプログラムを読み出し要求する。ＣＰＵ４はキャッシュメモリ１０を有する。ＣＰＵ５はキャッシュメモリ１１を有する。ＣＰＵ４、５はメモリ８から読み出したプログラムをそれぞれのキャッシュメモリ１０、１１に一時記憶する。キャッシュメモリ１０、１１は読み出したプログラムを一時記憶する一時記憶部の一例である。ＣＰＵ４、５はそれぞれのキャッシュメモリ１０、１１に一時記憶したプログラムを実行する。
【００１８】
ＣＰＵ４、５は使用頻度の高いプログラムをキャッシュメモリ１０、１１から読み出すことにより、メモリ８へのアクセスを減らす。キャッシュメモリ１０、１１の容量値がメモリ８から複数回読み出そうとするプログラムサイズと等しいかそれ以上の場合、ＣＰＵ４、５はキャッシュメモリ１０、１１に一時記憶したプログラムを実行する。ＣＰＵ４、５が読み出そうとするプログラムがキャッシュメモリ１０、１１に一時記憶したプログラムと同一である場合、ＣＰＵ４、５はメモリ８にプログラムを読みに行くことなくキャッシュメモリ１０、１１に一時記憶したプログラムを実行する。
【００１９】
ＣＰＵ４、５がメモリ８から読み出そうとするプログラムサイズがキャッシュメモリ１０、１１の容量値を超えた場合、キャッシュメモリ１０、１１は実行しようとするプログラムを記憶することが出来ない。このときＣＰＵ４、５は、同一プログラムを複数回実行する場合であっても、実行の度にメモリ８に対し試験プログラムの読み出し要求をする。メモリ８はＣＰＵ４、５からの読み出し要求に応じて試験プログラムをバースト転送する。よって後述する通り、メモリ８に記憶させる試験プログラムの容量値をキャッシュメモリ１０、１１の容量値よりも大きく設定することにより、試験プログラムの読み出し命令ごとにバースト転送を発生させることが出来る。
【００２０】
調停部６はＣＰＵ４、５から読み出し要求された試験プログラムのバースト転送処理を調停する。ＣＰＵ４、５から出力された読み出し要求が、メモリ８の同一メモリブロックを同時に指定した場合、アクセス競合が発生する。調停部６はアクセス競合が発生した場合、あらかじめ設定された調停処理を実行する。例えば調停部６はアクセス競合が発生した場合、ＣＰＵ４からの読み出し要求を優先するように設定する。競合試験装置１は調停部６に対し、調停結果に応じた競合信号１２を競合試験装置１へ出力させる。競合試験装置１は受信した競合信号１２を記憶部１５に記録する。例えば競合信号１２は論理信号であり、アクセス競合が発生していない場合には論理値“１”であり、アクセス競合が発生した時に論理値“０”となる。競合試験装置１は調停部６の調停動作を記憶部１５に記録する。調停動作とは、アクセス競合が発生した場合に、調停部６によって実行されるべき調停処理の実行手順である。調停動作はアクセス競合発生時における調停部６の処理としてあらかじめ組み込まれている。競合試験装置１はアクセス競合が発生したときの競合信号１２の時間変化を記憶部１５に記録することにより、調停部６でのアクセス競合発生タイミングを特定することが出来る。特定したアクセス競合発生タイミングにおける記憶部１５に記録した調停部６の動作を解析することにより、調停部６が設計通りに調停動作を行っているかを確認することが出来る。
【００２１】
メモリ８はアクセス競合試験プログラム９、タイミング調整プログラム１３を記憶する。アクセス競合試験プログラム９、タイミング調整プログラム１３は競合試験装置１の記憶部１５に記憶されている。競合試験装置１において、制御部１４は記憶部１５に記憶されているアクセス競合試験プログラム９、タイミング調整プログラム１３をメモリ８に書き込む。
【００２２】
アクセス競合試験プログラム９は調停部６においてアクセス競合を発生させるためにＣＰＵ４、５に読み出させ、実行させるプログラムである。競合試験装置１はＣＰＵ４、５がアクセス競合試験プログラム９を読み出し要求するタイミングおよびアクセス競合試験プログラム９をＣＰＵ４、５が実行終了するタイミングを監視する。アクセス競合試験プログラム９の詳細は後述する。
【００２３】
タイミング調整プログラム１３はＣＰＵ４およびＣＰＵ５がメモリ８からアクセス競合試験プログラム９を読み出すタイミングを調整するためのダミー演算プログラムである。競合試験装置１における制御部１４は、ＣＰＵ４またはＣＰＵ５にタイミング調整プログラム１３を実行させることにより、タイミング調整を行う。制御部１４は、ＣＰＵ４がアクセス競合試験プログラム９を読み出す前に、タイミング調整プログラム１３を実行させる。この結果、ＣＰＵ４がアクセス競合試験プログラム９を読み出すタイミングは、ＣＰＵ５がアクセス競合試験プログラム９を読み出すタイミングよりもタイミング調整プログラム１３を実行する時間だけ遅くなる。具体的な実行タイミング調整手順は以下の通りである。
【００２４】
競合試験装置１において、制御部１４はＣＰＵ４、５の動作状況を記憶部１５に記録する。制御部１４はＣＰＵ４、５がアクセス競合試験プログラム９を読み出し要求するタイミングおよび実行終了するタイミングをそれぞれ記憶部１５に記録する。制御部１４は記録したＣＰＵ４、５の実行開始タイミングおよび実行終了タイミングに基づいて、ＣＰＵ４、５の実行タイミングのずれを計算する。
【００２５】
タイミング調整プログラム１３は四則演算などの単純なダミー演算の繰り返し回数を外部から設定可能なプログラムである。競合試験装置１の制御部１４は、計算したＣＰＵ４、５の実行タイミングのずれに基づいて、タイミング調整プログラム１３における演算処理の実行回数を指定する。
【００２６】
以上の通り、アクセス競合プログラムの読み出し要求タイミングおよび実行終了タイミングの監視結果に基づいて、いずれか一方のＣＰＵの読み出し要求タイミングをずらす。これにより、競合試験装置１はＣＰＵ４、５におけるプログラムの読み出し開始タイミングがずれた場合であっても、読み出し要求に対するアクセス競合を発生させることが出来る。
【００２７】
競合試験装置１の制御部１４は、調停部６からアクセス競合が発生したことを示す競合信号１２が出力されるまで、ＣＰＵ４とＣＰＵ５とのアクセス競合試験プログラム９の読み出し要求タイミングをずらす。制御部１４はアクセス競合が発生したことを示す競合信号１２を受信するとアクセス競合試験を終了する。制御部１４はアクセス競合試験終了後に、記憶部１５に記録した調停動作の実行ログを確認することにより、調停部６があらかじめ設定した調停動作を実行したか否かをチェックすることが出来る。
【００２８】
以上の通り演算装置２を制御することにより、擬似アクセス信号発生手段を設けることなく、確実にアクセス競合を発生させる競合試験装置１を提供することが出来る。
【００２９】
図２はアクセス競合を発生させるアクセス競合試験プログラム９のメモリマップ図である。アクセス競合試験プログラム９は複数の試験プログラムを有する。前述の通りメモリ８は一定のアドレス空間を有する奇数個のメモリブロックに分割されている。メモリブロック２０はメモリ８のアドレス１７Ｃ０からアドレス１７Ｅ０に対応する。メモリブロック２１はメモリ８のアドレス１７Ｅ０からアドレス１８００に対応する。メモリブロック２２はメモリ８のアドレス１８００からアドレス１８２０に対応する。メモリブロック２３はメモリ８のアドレス１８２０からアドレス１８４０に対応する。メモリブロック２４はメモリ８のアドレス１８４０からアドレス１８６０に対応する。
【００３０】
各メモリブロックはＣＰＵ４およびＣＰＵ５により実行される演算プログラムをそれぞれ記憶する。本実施例において、アクセス競合試験プログラム９のうちＣＰＵ４が読み出し要求するプログラムは、ＣＰＵ５が読み出し要求する順番と逆の順番となるように記憶されている。
【００３１】
本実施例においてＣＰＵ４は、メモリブロック２０、２１、２２、２３、２４の順に演算プログラムを読み出す。一方、ＣＰＵ５は、メモリブロック２４、２３、２２、２１、２０の順に演算プログラムを読み出す。つまりＣＰＵ５の読み出し順序は、ＣＰＵ４の読み出し順序の逆順になるように設定する。本実施例において１つのメモリブロックに記憶された演算プログラムは、他のメモリブロックに記憶された演算プログラムへジャンプするステップを有する。よって例えばＣＰＵ４がメモリブロック２０に記憶された演算プログラムを読み出して実行すると、自動的にＣＰＵ４は、メモリブロック２１に記憶された他の演算プログラムを読み出すこととなる。
【００３２】
各メモリブロックのサイズは各ＣＰＵ４、５のキャッシュサイズよりも大きい。各メモリブロックのサイズは互いに同一であっても良い。各メモリブロックのサイズを各ＣＰＵのキャッシュサイズよりも大きくすることにより、ＣＰＵ４、５がメモリブロックを読み出したときにキャッシュエラーが発生し、メモリ８から各ＣＰＵ４、５へバースト転送処理が発生する。ＣＰＵ４、５による読み出し動作の詳細を以下に示す。
【００３３】
ＣＰＵ４は以下の通りアクセス競合試験プログラム９を実行する。ＣＰＵ４はまず、メモリブロック２０を読み出す。ＣＰＵ４は読み出したメモリブロック２０のＭａｉｎ０関数を実行する。ＣＰＵ４はＭａｉｎ０関数に記述された演算プログラムを実行する。ＣＰＵ４はＭａｉｎ０関数の最後の行にあるｂｒａ  Ｍａｉｎ１を実行する。ｂｒａ  Ｍａｉｎ１はＭａｉｎ１関数を読み出せ、という命令である。ＣＰＵ４はＭａｉｎ１関数が記述されているメモリブロック２１を読み出す（ステップＳ１）。
【００３４】
ＣＰＵ４はメモリブロック２１についてもメモリブロック２０と同様にＭａｉｎ１関数を実行する。ＣＰＵ４はＭａｉｎ１関数に記述された演算プログラムを実行する。ＣＰＵ４はＭａｉｎ１関数の最後の行にあるｂｒａ  Ｍａｉｎ２を実行する。ＣＰＵ４はＭａｉｎ２関数が記述されているメモリブロック２２を読み出す（ステップＳ２）。ＣＰＵ４はメモリブロック２３、２４についても同様に演算処理を実行する。ＣＰＵ４はメモリブロック２４に記述されているＴｅｓｔ  Ｅｎｄコマンドを実行すると、演算処理を終了する。
【００３５】
ＣＰＵ５は以下の通りアクセス競合試験プログラム９を実行する。ＣＰＵ５はまず、メモリブロック２４を読み出す。ＣＰＵ５は読み出したメモリブロック２４のＳｕｂ０関数を実行する。Ｓｕｂ０関数の最後の行にｂｒａ  Ｓｕｂ１とあるので、ＣＰＵ５は続いてＳｕｂ１関数が記述されているメモリブロック２３を読み出す（ステップＳ３）。
【００３６】
ＣＰＵ５はメモリブロック２３についてもメモリブロック２４と同様にＳｕｂ１関数を実行する。ＣＰＵ５はＳｕｂ１関数に記述された演算プログラムを実行する。ＣＰＵ５はＳｕｂ１関数の最後の行にあるｂｒａ  Ｓｕｂ２を実行する。ＣＰＵ５はＳｕｂ２関数が記述されているメモリブロック２２を読み出す（ステップＳ４）。ＣＰＵ５はメモリブロック２１、２０についても同様に演算処理を実行する。ＣＰＵ５はメモリブロック２０に記述されているＴｅｓｔ  Ｅｎｄコマンドを実行すると、演算処理を終了する。
【００３７】
各メモリブロックで演算処理される関数の演算処理サイズが同一であり、ＣＰＵ４とＣＰＵ５の処理能力が同一であれば、ＣＰＵ４、５はメモリブロック２０、２１、２２、２３、２４のうち、昇順でも降順でも中央に位置するメモリブロック２２を同時に読み出す。
【００３８】
ＣＰＵ４とＣＰＵ５の処理能力が同一でなくても、競合試験装置１はメモリブロック２０、２１、２２、２３、２４のいずれかの読み出しにおいて、ＣＰＵ４、５への読み出しを競合させることが出来る。アクセス競合試験プログラム９は奇数個のメモリブロックを有する。競合試験装置１はＣＰＵ５がアクセス競合試験プログラム９の読み出しを終了する前にＣＰＵ４がプログラムの読み出しを開始するようにタイミング調整する。メモリブロックの数が奇数個なので、ＣＰＵ４の読み出し処理はメモリブロック２０、２１、２２、２３、２４のいずれかの読み出しにおいて、ＣＰＵ５の読み出し処理と競合する。
【００３９】
以上の通り奇数個のメモリブロックをＣＰＵ４と逆の順序でＣＰＵ５から読み出すことにより、確実にアクセス競合を発生させる競合試験装置を提供することが出来る。
【００４０】
図３は競合試験装置１によるアクセス競合試験の処理を示すフローチャート図である。競合試験装置１は演算装置２の記憶部８に対し、アクセス競合試験プログラム９およびタイミング調整プログラム１３を書き込む（Ｓ１０）。競合試験装置１は命令キャッシュ処理が有効になるようにＣＰＵ４、５のキャッシュを設定する（Ｓ１１）。命令キャッシュ処理を有効にすることにより、各ＣＰＵから読み出すメモリブロックのサイズがキャッシュサイズを超えた場合に、バースト転送が発生する。
【００４１】
ＣＰＵ４、５はそれぞれ各ＣＰＵを識別するためのＣＰＵＩＤを記憶したレジスタ領域を有する。ＣＰＵ４、５から出力される読み出し要求はレジスタ領域に記憶されたＣＰＵＩＤを有する。競合試験装置１は読み出し要求があった場合に、読み出し要求からＣＰＵＩＤを取得する。競合試験装置１は取得したＣＰＵＩＤに基づいて、ＣＰＵ４、５を判定する（Ｓ１２）。競合試験開始前にＣＰＵＩＤを取得することにより、ＣＰＵ４、５の実行順序を記録することが出来る。
【００４２】
競合試験装置１は先に読み出し要求があったと判定したＣＰＵ４またはＣＰＵ５にタイミング調整プログラム１３を実行させる（Ｓ１３）。ＣＰＵ４、５の処理能力が同じ場合などタイミング調整が不要な場合もあるため、タイミング調整プログラム１３によるタイミング調整時間の初期値はゼロである。競合試験装置１はシステムクロックを参照し、アクセス競合試験プログラム９を読み出し要求した時のＣＰＵ４のクロックタイムＳＴ４およびＣＰＵ５のクロックタイムＳＴ５を保持する（Ｓ１４）。システムクロックは例えばカウンタでカウントされる。競合試験装置１はカウンタのカウント値を参照する。クロックタイムＳＴ４、ＳＴ５を保持後、競合試験装置１は読み出し要求に応じて読み出されたアクセス競合試験プログラム９をＣＰＵ４およびＣＰＵ５に実行させる（Ｓ１５）。アクセス競合試験プログラム９の実行中、競合試験装置１は調停部６から受信する競合信号１２を記憶し続ける。ＣＰＵ４およびＣＰＵ５は、アクセス競合試験プログラム９を実行後、競合試験装置１に対しアクセス競合試験プログラム９の実行終了を通知する。競合試験装置１はシステムクロックを基準とするアクセス競合試験プログラム９実行終了時のＣＰＵ４のクロックタイムＥＤ４およびＣＰＵ５のクロックタイムＥＤ５を保持する（Ｓ１６）。
【００４３】
競合試験装置１はＤＥ４、ＥＤ５を記憶した後、記憶した競合信号１２を参照する（Ｓ２３）。  記憶した競合信号１２にアクセス競合を示す論理値を検出した場合（Ｓ２４：ＹＥＳ）、競合試験装置１は調停部６においてアクセス競合が発生したと判断し、アクセス競合試験を終了する。記憶した競合信号１２にアクセス競合を示す論理値を検出しなかった場合（Ｓ２４：ＮＯ）、競合試験装置１はクロックタイムＳＴ４とクロックタイムＳＴ５との差分値の絶対値（ＳＴ５−ＳＴ４）を計算する（Ｓ２５）。
【００４４】
競合試験装置１はＣＰＵ４がタイミング調整プログラム１３を１回実行するのに要する時間Ｔを記憶している。競合試験装置１は差分値の絶対値（ＳＴ５−ＳＴ４）を時間Ｔで割ることにより、クロックタイムの差分値をタイミング調整プログラム１３のループ回数Ｎに変換する（Ｓ２６）。競合試験装置１は変換したループ回数Ｎ＝（ＳＴ５−ＳＴ４）／Ｔをタイミング調整プログラム１３のループ回数として設定する（Ｓ２７）。競合試験装置１はＳＴ４とＳＴ５の大小関係に基づき、いずれのＣＰＵにタイミング調整プログラム１３を実行させるかを判定する。具体的にはＮが負の数の場合、すなわちＳＴ４がＳＴ５よりも大きい場合はＣＰＵ５にタイミング調整プログラムを実行させる。Ｎが正の数の場合、すなわちＳＴ４がＳＴ５よりも小さい場合はＣＰＵ４にタイミング調整プログラムを実行させる。Ｎがゼロの場合、すなわちＳＴ４がＳＴ５に等しい場合はいずれのＣＰＵにもタイミング調整プログラムを実行させない。競合試験装置１は判定結果を例えば判定フラグのフラグ値として記憶する。ループ回数設定後、競合試験装置１はステップＳ１２のＣＰＵ判定に戻る。ＣＰＵ判定後、競合試験装置１は判定フラグのフラグ値に基づいてＣＰＵ４、５のいずれかにタイミング調整プログラム１３を実行させる（Ｓ１３）。
【００４５】
以上の通り競合試験装置１は、ＣＰＵ４、５におけるアクセス競合試験プログラム９の読み出し要求タイミングの差に基づいていずれか一方のＣＰＵの読み出し要求タイミングをずらす。かかる構成により競合試験装置１は、ＣＰＵ４、５の読み出し要求タイミングに差がある場合であっても、演算装置２に対し確実にアクセス競合を発生させることが出来る。
【００４６】
図４は調停部６のアクセス競合試験を実行するコンピュータ３０のブロック図である。
コンピュータ３０はエミュレータと呼ばれるアプリケーションを実行する。エミュレータはコンピュータ上で動作するアプリケーションの一種である。エミュレータは演算装置２の回路設計情報に基づいて、演算装置２をコンピュータ３０のプログラム上で動作させることが出来る。コンピュータ３０はエミュレータを用いることにより、演算装置２の設計段階において演算装置２のアクセス競合試験を実行することが出来る。
【００４７】
コンピュータ３０はディスプレイ３１、キーボード３２、メモリ３３、ＣＰＵ３４、ＨＤＤ３５、バス３６を有する。
【００４８】
ＨＤＤ３５は、ＣＰＵ３４が実行するプログラムやプログラムの実行結果であるデータを記憶する記憶部の一例である。ＨＤＤ３５はエミュレータ３７を記憶する。エミュレータ３７はＣＰＵ３４により実行される。ＣＰＵ３４による実行処理を高速化するため、エミュレータ３７の一部をメモリ３３に一時的に記憶させても良い。
【００４９】
エミュレータ３７は演算装置２の設計情報である演算装置情報３８と、競合試験装置１の設計情報である競合試験装置情報３９を有する。演算装置情報３８および競合試験装置情報３９は例えばＶｅｒｉｌｏｇ言語などのハードウェア記述言語で記述されている。ＨＤＤ３５における競合試験装置情報３９は、アクセス競合試験プログラムを記憶していても良い。ＣＰＵ３４はエミュレータを実行することにより、アクセス競合試験プログラムを演算装置情報３８の仮想的なメモリ領域に書き込む。ＣＰＵ２３は競合試験装置情報３９に基づいてエミュレータを実行することにより、制御部１４として動作する。ＣＰＵ３４は仮想的なメモリ領域に書き込んだアクセス競合試験プログラムを演算装置情報３８に基づく仮想的な演算装置２に実行させる。
【００５０】
ディスプレイ３１はエミュレータによるアクセス競合試験の結果を表示する表示装置の一例である。ディスプレイ３１は演算装置情報３８、競合試験装置情報３９を可視化して表示する。
【００５１】
キーボード３２はエミュレータによるアクセス競合試験の解析条件などをコンピュータ３０に入力する入力装置の一例である。メモリ３３はエミュレータや、ＣＰＵ３４が算出したアクセス競合試験結果を一時的に記憶する。メモリ３３は競合試験装置１における記憶部１５として動作する。
【００５２】
ディスプレイ３１、キーボード３２、メモリ３３、ＣＰＵ３４、ＨＤＤ３５はバス３６を介して互いに接続されている。
【００５３】
以上の通り、コンピュータ３０上で演算装置情報３８および競合試験装置情報３９に基づき、アクセス競合試験プログラム９を実行することにより、設計段階で演算装置２のアクセス競合試験を仮想的に実行することが出来る。
【００５４】
処理内容を記述したエミュレータ３７は、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、半導体メモリなどがある。
【００５５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記憶媒体を用いる。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００５６】
図５は２つのＣＰＵ４およびＣＰＵ５における、アクセス競合の発生を説明するタイミングチャート図である。各タイミングチャートにおいて、タイミングチャート中の数字は各ＣＰＵが読み出すメモリブロックのアドレスである。メモリブロックのアドレスは１６進数で表されている。
【００５７】
図５のＡは、アクセス競合試験時においてＣＰＵ４、５がそれぞれメモリ８から読み出す、アクセス競合試験プログラム９のアドレスを表している。図５のＢは、アクセス競合試験のアクセス競合発生時において、ＣＰＵ４、５がそれぞれメモリ８から読み出すアクセス競合試験プログラム９の読み出し対象メモリブロックのアドレスが競合している様子を表している。
【００５８】
図５のＡにおいて、時間波形ＣＰＵ４は、ＣＰＵ４がメモリ８から読み出すメモリブロックのアドレスを表す。ＣＰＵ４はアドレス１０００から読み出しを開始する。ＣＰＵ４は３２ビットずつアドレスを加算しながら次のメモリブロックを読み出す。
【００５９】
図５のＡにおいて、時間波形ＣＰＵ５は、ＣＰＵ５がメモリ８から読み出すメモリブロックのアドレスを表す。ＣＰＵ５はアドレス２０００から読み出しを開始する。ＣＰＵ５は３２ビットずつアドレスを減算しながら次のメモリブロックを読み出す。
【００６０】
図５のＢは、時刻Ｔにおいて、ＣＰＵ４が読み出すメモリブロックとＣＰＵ５が読み出すメモリブロックとが競合している様子を示す。ＣＰＵ４とＣＰＵ５は互いにアドレス１８００を時刻Ｔにおいて読み出し要求している。
【００６１】
時刻Ｔより前の時間において、調停部６はアクセス競合が発生していないことを示す競合信号１２を出力する。時刻Ｔにおいてアクセス競合が発生すると、調停部６はアクセス競合が発生したことを示す競合信号１２を出力する。調停部６はアドレス競合が発生すると、あらかじめ決められた調停動作を行う。時刻Ｔを過ぎると、調停部６は再びアクセス競合が発生していないことを示す競合信号１２を出力する。
【００６２】
以上の通り奇数個のメモリブロックをＣＰＵ４と逆の順序でＣＰＵ５から読み出すことにより、確実にアクセス競合を発生させる競合試験装置を提供することが出来る。
【符号の説明】
【００６３】
１  競合試験装置
２  演算装置
４、５、３４  ＣＰＵ
６  調停部
８  メモリ
９  アクセス競合試験プログラム
１０、１１  キャッシュメモリ
１２  競合信号
１３  タイミング調整プログラム
１４  制御部
１５  記憶部
２０、２１、２２、２３、２４  メモリブロック
３０  コンピュータ
３１  ディスプレイ
３２  キーボード
３３  メモリ
３５  ＨＤＤ
３６  バス
３７  エミュレータ
３８  演算装置情報
３９  競合試験装置情報
【図１】
0005505192.tif 000002
【図２】
0005505192.tif 000003
【図３】
0005505192.tif 000004
【図４】
0005505192.tif 000005
【図５】
0005505192.tif 000006