コンピュータシステム、試験装置、試験方法、及び試験プログラム
【課題】追い越し機能が正常に動作しているか否かを信頼性よく試験することができる、コンピュータシステム、試験装置、試験方法、及び試験プログラムを提供する。
【解決手段】試験装置2と、先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令を追い越して実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路12と、前記後続命令の追い越しが発生した場合に、前記後続命令を特定する情報を生成し、追い越し結果情報として保存する、追い越しトレーサ回路13とを具備する。前記試験装置2は、設定変更部5と、試験命令列生成部6と、追い越し判別部7と、試験命令列変更部8と、SWシミュレータ実行部9と、実行結果判定部10とを備える。
【解決手段】試験装置2と、先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令を追い越して実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路12と、前記後続命令の追い越しが発生した場合に、前記後続命令を特定する情報を生成し、追い越し結果情報として保存する、追い越しトレーサ回路13とを具備する。前記試験装置2は、設定変更部5と、試験命令列生成部6と、追い越し判別部7と、試験命令列変更部8と、SWシミュレータ実行部9と、実行結果判定部10とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステム、試験装置、試験方法、及び試験プログラムに関し、特に、命令間における追い越し制御機能を有するコンピュータシステムに関する。
【背景技術】
【0002】
コンピュータシステムには、処理装置(CPU等)と、メモリとが設けられる。処理装置においてストア命令が発行されると、処理装置はメモリにアクセスし、メモリにデータを格納する。また、ロード命令が発行されると、処理装置は、メモリにアクセスし、メモリからデータを読み出す。
【0003】
コンピュータシステムが正常に動作するかどうかを確認するために、試験が行なわれる。試験時には、ランダムに試験命令列が生成され、処理装置によって実行される。また、試験命令列の実行結果が、ソフトウェアによるシミュレータ(以下、SWシミュレータと記載する)により計算され、期待値が生成される。そして、処理装置による実行結果が、期待値に一致するか否かが判定される。判定結果に基づき、コンピュータシステムが正常に動作しているか否かが確認される。
【0004】
上記に関連して、特許文献1(特開昭62−203240号公報)には、情報処理装置の試験方式が開示されている。この情報処理装置の試験方式は、試験されるべき被試験情報処理装置と同一命令セットを持つシミュレータと、ランダム試験プログラムを生成するランダム試験プログラム生成手段と、生成されたランダム試験プログラムを被試験情報処理装置の先行制御有効状態と先行制御無効状態及びシミュレータで実行するように指示するランダム試験プログラム起動手段と、ランダム試験プログラム起動手段で起動されて得られた実行結果を判定する実行結果判定手段とを有することを特徴としている。
【0005】
一方で、コンピュータシステムの性能を高めるために、追い越し機能がコンピュータシステムに搭載されることがある。追い越し機能が搭載されたコンピュータシステムでは、先行命令のアクセス先アドレスが後続命令のアクセス先アドレスと重複するか否かが判定される。アクセス先アドレス同士が重複しない場合、後続命令が先行命令よりも先に実行される。これにより、先行命令の実行終了を待たずに後続命令を実行することができ、コンピュータシステムにおける動作性能を高めることができる。
【0006】
追い越し機能に関連して、特許文献2(特開2010−198439号公報)には、ベクトル命令間追い越し判定装置が開示されている。このベクトル命令間追い越し判定装置は、先行するベクトルストア命令と後続のベクトルロード命令間のアドレスの依存関係をチェックするアドレス比較部が、チェック対象の複数のベクトルストア命令に対して共通に1つのアドレス比較論理を備える。アドレス比較論理は、複数のベクトルストア命令と後続のベクトルロード命令のアドレスの依存関係を時分割でチェックする。このベクトル命令間追い越し判定装置では、要素展開部での展開処理と、アドレス比較処理とが、並行して実行可能とされている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開昭62−203240号公報
【特許文献2】特開2010−198439号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
追い越し機能が搭載されたコンピュータシステムでは、追い越し機能が正常に動作しているか否かを試験することが求められる。しかしながら、試験命令列をランダムに生成した場合、追い越し機能が正常に動作しているかどうかを試験することは、以下に述べる3つの理由から、難しい。
【0009】
第1に、通常、ロード命令のアクセス先アドレスと、ストア命令のアクセス先アドレスとは異なっている。そのため、追い越しが発生しようがしまいが、処理装置による実行結果に変わりはない。従って、処理装置による実行結果がシミュレータによって得られた期待値に一致したとしても、追い越し機能が正常に機能しているかどうかは判別できない。
【0010】
第2に、ランダムに生成された試験命令列では、追い越しの発生を保証できない。また、追い越しが発生しようがしまいが実行結果に変わりがないため、実際に追い越しが発生したか否かをソフトウェアによって確認することができない。
【0011】
第3に、追い越しが発生した場合の実行結果を、SWシミュレータによって計算することができず、期待値の生成ができない。
【0012】
追い越し機能が正常に動作しているか否かを試験するために、必ず追い越しが発生するような試験命令列を作成し、作成した試験命令列を用いて試験を行なうことが考えられる。しかしながら、必ず追い越しが発生するような試験命令列の作成は、人間が行なわなければならない。加えて、コンピュータシステムにおけるハードウェア(HW)構造を理解していなければ、そのような試験命令列を作成することができない。更には、特定の試験命令列でしか試験を行なうことができず、HWの品質を十分に保証することが難しい。
【0013】
従って、本発明の課題は、追い越し機能が正常に動作しているか否かを信頼性よく試験することができる、コンピュータシステム、試験装置、試験方法、及び試験プログラムを提供することにある。
【課題を解決するための手段】
【0014】
本発明に係るコンピュータシステムは、先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令を追い越して実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路と、前記後続命令の追い越しが発生した場合に、前記後続命令を特定する情報を生成し、追い越し結果情報として保存する、追い越しトレーサ回路とを具備する。前記試験装置は、前記後続命令の追い越しが発生した場合における実行結果が、前記後続命令の追い越しが発生しなかった場合における実行結果とは異なる結果になるように、前記処理装置の設定を変更する、設定変更部と、ランダムに試験命令列を生成し、前記処理装置に実行させる、試験命令列生成部と、前記試験命令列が実行された後に、前記追い越し結果情報に基づいて、前記後続命令の追い越しが発生したか否かを判別する、追い越し判別部と、追い越しが発生していた場合に、前記追い越し結果情報に基づいて、前記試験命令列を実際に前記処理装置によって実行された順番になるように並び替え、変更後試験命令列を生成する、試験命令列変更部と、前記変更後試験命令列の実行結果をシミュレートし、期待値を生成する、SWシミュレータ実行部と、前記試験命令列の実行結果が前記期待値に一致するか否かを判定し、判定結果を出力する、実行結果判定部とを備える。
【0015】
本発明に係る試験装置は、上述のコンピュータシステムで用いられる試験装置である。
【0016】
本発明に係る試験方法は、先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令よりも先に実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路と、前記後続命令が前記先行命令よりも先に実行された場合に、前記後続命令を特定する情報を追い越し結果情報として保存する、追い越しトレーサ回路とを具備する被試験装置の試験方法である。この試験方法は、前記後続命令の追い越しが発生した場合における実行結果が、前記後続命令の追い越しが発生しなかった場合における実行結果とは異なる結果になるように、前記処理装置の設定を変更するステップと、ランダム試験命令列を生成し、前記処理装置に実行させるステップと、前記試験命令列が実行された後に、前記追い越し結果情報に基づいて、前記後続命令の追い越しが発生したか否かを判別するステップと、追い越しが発生していた場合に、前記追い越し結果情報に基づいて、前記試験命令列の順番を実際に前記処理装置によって実行された順番になるように並び替え、変更後試験命令列を生成するステップと、前記変更後試験命令列の実行結果をシミュレートし、期待値を生成するステップと、前記試験命令列の実行結果が前記期待値に一致するか否かを判定し、判定結果を出力するステップとを具備する。
【0017】
本発明に係る試験プログラムは、上述の試験方法を、コンピュータにより実現するためのプログラムである。
【発明の効果】
【0018】
本発明によれば、追い越し機能が正常に動作しているか否かを信頼性よく試験することができる、コンピュータシステム、試験装置、試験方法、及び試験プログラムが提供される。
【図面の簡単な説明】
【0019】
【図1】コンピュータシステムを概略的に示す機能構成図である。
【図2】メモリアドレスを示す概念図である。
【図3】仮想メモリアドレスの空間番号と、物理メモリアドレスの空間番号との対応関係を示す概念図である。
【図4】追い越し結果情報を示す概念図である。
【図5】コンピュータシステムの動作方法を示すフローチャートである。
【図6】設定変更後のアドレス変換テーブルの設定内容を概念的に示す図である。
【図7】試験命令列の一例を示す概念図である。
【図8】追い越し結果情報採取命令を示す概念図である。
【図9】読み取られた追い越し結果情報の一例を示す概念図である。
【図10】変更後試験命令列を示す概念図である。
【発明を実施するための形態】
【0020】
以下に、本発明の実施形態について説明する。
【0021】
まず、本実施形態の原理について説明する。
【0022】
本願発明者は、追い越し機能が正常に動作しているか否かを試験するために、以下の(1)乃至(3)の機能を設けることを考えた。
(1)追い越しが発生した場合に、追い越しが発生しなかった場合とは異なる実行結果が得られるようにする機能。
(2)追い越しが発生した場合に、追い越しが発生したことをソフトウェアによって知ることができる機能。
(3)上記(1)における異なる実行結果を、ソフトウェアによって計算し、期待値を生成する機能。
上記(1)乃至(3)の機能を用いれば、機能(2)により、追い越しが発生したことを知ることができる。追い越しが発生した場合には、機能(1)によって、追い越しが発生しなかった場合とは異なる実行結果を得ることができる。追い越しが発生した場合の実行結果を、機能(3)によって得られた追い越しが発生した場合の期待値と比較することにより、追い越し機能が正常に動作しているか否かを判別することができる。
【0023】
上記(1)の機能を実現するために、本願発明者は、仮想メモリアドレスと物理メモリアドレスとの対応関係を変更することを考えた。通常、仮想メモリアドレスと物理メモリアドレスとは、1対1で対応している。また、追い越しを発生させるか否かの判断は、仮想メモリアドレスに基いて行なわれる。すなわち、先行命令の仮想メモリアドレスと後続命令の仮想メモリアドレスとが重複しているか否かが判定され、重複しない場合、追い越しが行われる。そのため、先行するロード命令(又はストア命令)を後続するストア命令(又はロード命令)が追い越したとしても、実行結果に変わりはない。これに対して、仮想メモリアドレスと物理メモリアドレスとの対応関係を変更することにより、先行命令において使用される仮想メモリアドレスと後続命令において使用される仮想メモリアドレスとを、同一の物理メモリアドレスに割り当てることができる。その結果、先行するストア命令(又はロード命令)と後続するロード命令(又はストア命令)との間において仮想メモリアドレスが異なるにもかかわらず、アクセス先の物理メモリアドレスを同一にすることができる。すなわち、追い越しが発生した場合に、追い越しが発生しなかった場合とは異なる実行結果を得ることが可能になる。
【0024】
また、本願発明者は、上記(2)の機能を実現するために、ハードウェア内に、追い越しが発生したことを示す情報を格納する追い越しトレーサを設けることを考えた。追い越しトレーサに格納された情報を読み取ることにより、ソフトウェアによって追い越しが発生したことを知ることができる。
【0025】
更に、本願発明者は、上記(3)の機能を実現するために、試験命令列を変更し、変更後の試験命令列によって期待値を生成することを考えた。すなわち、上記(2)で説明した追い越しトレーサに保存された情報を用いれば、試験命令列の中から、追い越しが発生した命令のペアを特定することができる。そして、特定したペアの順番を入れ替えることにより、変更後の試験命令列を得ることができる。変更後の試験命令列中における命令の順序は、実際に処理装置によって実行された命令の順序に一致する。変更後の試験命令列を用いてシミュレーションを行なえば、追い越しが発生した場合の期待値を得ることができる。
【0026】
続いて、図面を参照しつつ、本実施形態に係るコンピュータシステムについて、詳細に説明する。尚、本実施形態では、一例として、先行命令がストア命令であり、後続命令がロード命令である場合に、追い越しが発生するものとする。
【0027】
<構成の説明>
図1は、本実施形態に係るコンピュータシステム1を概略的に示す機能構成図である。図1に示されるように、コンピュータシステム1は、CPU3(処理装置)、メモリ4、及び試験装置2を備えている。試験装置2は、CPU3がメモリ4に格納された試験プログラムを実行することにより、実現される。
【0028】
まず、CPU3について説明する。CPU3は、メモリ4に格納された命令列を実行する。命令列に含まれる各命令(ロード命令又はストア命令)には、アクセス先の仮想メモリアドレスを示す情報が含まれる。CPU3では、命令に含まれる仮想メモリアドレスが、物理メモリアドレスに変換される。そして、CPU3は、物理メモリアドレスに基いてメモリ4にアクセスし、命令を実行する。すなわち、命令がロード命令である場合には、メモリ4にアクセスし、物理メモリアドレスからデータをレジスタに読み出す。命令がストア命令である場合には、メモリ4にアクセスし、レジスタに格納されたデータを、アクセス先の物理メモリアドレスに書き込む。
【0029】
CPU3は、アドレス変換制御部11、命令追い越し回路12、追い越しトレーサ回路13、及びSWビジブルレジスタ15を備えている。
【0030】
アドレス変換制御部11には、アドレス変換テーブルを示す情報が格納されている。アドレス変換テーブルは、仮想メモリアドレスと物理メモリアドレスとの対応関係を示しており、仮想メモリアドレスを物理メモリアドレスに変換するために用いられる。図2は、メモリアドレス(仮想メモリアドレス及び物理メモリアドレス)を示す概念図である。図2に示されるように、メモリアドレスは、通常、空間番号、ページ番号、及びページ内アドレスによって表現される。通常、仮想メモリアドレスを物理メモリアドレスに変換する際、空間番号及びページ番号が変更され、ページ内アドレスは変更されない。また、図3は、仮想メモリアドレスの空間番号と、物理メモリアドレスの空間番号との対応関係を示す概念図である。通常の運用時には、アドレス変換テーブルは、仮想メモリアドレスと物理メモリアドレスが1対1で対応するように、設定されている。すなわち、図3に示されるように、仮想メモリアドレスの空間番号と、物理メモリアドレスの空間番号とは、1対1で対応している。
【0031】
再び図1を参照する。命令追い越し回路12は、先行命令がストア命令であり、後続命令がロード命令である場合に、後続命令が先行命令を追い越すことが可能であるか否かを判断する部分である。追い越し可能である場合、後続命令が先行命令よりも先に実行される。また、命令追い越し回路12は、追い越しが発生した場合、追い越しがあった旨と、追い越しを行なった後続命令(ロード命令)を特定する情報(以下、追い越し結果情報)とを、追い越しトレーサ13に格納する。
【0032】
追い越しトレーサ13は、上述のように、追い越し結果情報を格納するために設けられている。図4は、追い越しトレーサ13に格納される追い越し結果情報を示す概念図である。本実施形態では、追い越しトレーサ13に4個(4レコード)の追い越し結果情報を格納できるものとする。また、各追い越し結果情報は、追い越しがあったこと示す有効bitと、追い越しを行なった後続命令(ロード命令)の仮想アクセス先アドレスにおけるページ内アドレスとを含んでいる。尚、ページ内アドレスは、16bitの情報により表現されている。
【0033】
SWビジブルレジスタ15は、ソフトウェアビジブルなレジスタであり、追い越しトレーサ13に格納された情報を退避させるために設けられている。
【0034】
続いて、試験装置2について詳細に説明する。図1に示されるように、試験装置2は、マッピング変更部5、試験命令列生成部6、追い越し判定部7、試験命令列変更部8、SWシミュレータ実行部9、及び実行結果判定部10を備えている。
【0035】
マッピング変更部5は、追い越しが発生した場合と追い越しが発生しなかった場合とで実行結果が変わるように、アドレス変換制御部11の設定を変更する機能を有している。
【0036】
試験命令列生成部6は、試験命令列を生成する部分である。試験命令列には、複数の命令が含まれる。生成された試験命令列は、メモリ4に格納され、CPU3によって順番に実行される。
【0037】
追い越し判定部7は、試験命令列がCPU3によって実行された後に、追い越し結果情報を読み取る機能を有している。追い越し判定部7は、追い越し結果情報に基づいて、追い越しが発生したか否かを判定する。追い越しが発生していた場合、追い越し判定部7は、追い越し結果情報を試験命令列変更部8に通知する。
【0038】
試験命令列変更部8は、試験命令列の順番を変更し、変更後試験命令列を生成する機能を有している。試験命令列変更部8は、追い越し結果情報に基づいて、追い越しが発生した命令のペアを特定し、実際にCPU3によって実行された順番になるように、試験命令列に含まれる複数の命令の順番を並び替える。
【0039】
SWシミュレータ実行部9は、試験命令列又は変更後試験命令列の実行結果をソフトウェア的にシミュレーションし、期待値を生成する機能を有している。
【0040】
実行結果判定部10は、CPU3による試験命令列の実行結果が、期待値に一致するか否かを判別する部分する。実行結果判定部10は、判別結果を、出力する。
【0041】
<動作方法の説明>
続いて、本実施形態に係るコンピュータシステム1の動作方法について説明する。図5は、コンピュータシステム1の動作方法を示すフローチャートである。本コンピュータシステム1では、ROM(Read Only Memory)等に格納された試験プログラムがメモリ4上にロードされることにより、試験装置2が実現される。試験装置1には、試験に必要なパラメータ情報が与えられる。パラメータ情報は、実行時間、試験命令列の特性(命令毎の出現頻度の重み付け等)、及び試験命令列中に含まれる命令数などを特定する情報である。パラメータ情報は、予めメモリ4などに設定されていてもよいし、ユーザによって入力されていてもよい。
【0042】
ステップS1:マッピング
試験装置2では、まず、マッピング変更部5が、アドレス変換制御部11にアクセスし、アドレス変換テーブルの設定を変更する。図6は、設定が変更された後のアドレス変換テーブルの設定内容を概念的に示す図である。図6に示されるように、マッピング変更部は、仮想メモリアドレスにおける空間番号(以下、仮想空間番号)と、物理メモリアドレスにおける空間番号(以下、物理空間番号)との対応関係を、変更する。より詳細には、マッピング変更部5は、ロード命令で用いられるデータエリアの仮想空間番号と、ストア命令で用いられるデータエリアの仮想空間番号とを、同一の物理空間番号に割り当てる。本実施形態では、ロード命令で用いられる仮想空間番号が#0であり、ストア命令で用いられる仮想空間番号が#1であるものとする。そして、図6に示されるように、仮想空間番号♯0及び♯1が、物理空間番号#0に対応付けられている。
【0043】
ステップS2:試験命令列の生成
次いで、試験命令列生成部6が、ランダムに試験命令列を生成する。試験命令列生成部6は、入力されたパラメータ情報に基づいて、試験命令列を生成し、メモリ4に格納する。図7は、試験命令列の一例を示す概念図である。
【0044】
ここで、試験命令列生成部6は、追い越しが発生しやすい命令列を、試験命令列として生成する。具体的には、図7に示されるように、試験命令列生成部6は、順番的に連続するストア命令とロード命令とのペアが含まれるように、試験命令列を生成する。試験命令列に含まれるペアの数は、追い越しトレーサ13に格納することのできる追い越し結果情報の数に応じて、決定される。また、試験命令列生成部6は、同一ペア内におけるロード命令及びストア命令のアクセス先アドレスを、以下のように決定する。まず、ロード命令の仮想アクセス先アドレスの空間番号を、ステップS1で設定されたロード命令用の仮想空間番号(♯0)に決定する。また、ストア命令の仮想アクセス先アドレスの空間番号を、ステップS2で設定されたストア命令用の仮想空間番号(♯1)に決定する。一方、ページ番号及びページ内アドレスは、同一ペア内で同一となるように、決定される。
【0045】
上述のようにペアを作成すれば、順番的に連続するストア命令とロード命令との間において仮想アクセス先アドレスが異なっているため、追い越しが発生しやすくなる。加えて、ストア命令とロード命令との間において、物理アクセス先アドレスは同一となるため、追い越しが発生した場合と追い越しが発生しなかった場合との間において、CPU3の実行結果を異ならせることが可能になる。
【0046】
尚、図7に示される試験命令列には、ペア1及びペア2が含まれている。また、本実施形態では、メモリアドレスが32ビットのアドレス空間を有するものとし、空間番号が8ビット、ページ番号が8ビット、ページ内アドレスが16ビットであるものとする。図7に示されるように、ペア1では、ロード命令のアクセスアドレスにおいて、仮想空間番号が#0であり、ページ番号がページ#0であり、ページ内アドレスが0x1000である。一方、ストア命令のアクセスアドレスにおいては、仮想空間番号が#1であり、ページ番号がページ#0であり、ページ内アドレスが0x1000である。すなわち、ペア1においては、ロード命令の仮想アクセスアドレスを32ビットで表現すれば、0x00001000となり、ストア命令アクセスアドレスを32ビットで表現すれば、0x01001000になる。その結果、ロード命令及びストア命令の仮想アクセス先アドレスを物理アクセス先アドレスに変換すれば、いずれも、0x00001000になる。一方、ペア2においては、ロード命令のアクセスアドレスが0x00001008に設定され、ストア命令のアクセスアドレスが0x01001008に設定されている。ペア2においても、ロード命令及びストア命令の物理アクセス先アドレスは、いずれも、0x00001008になる。
【0047】
ステップS3:試験命令列の実行
次いで、CPU3により、試験命令列が実行される。CPU3では、命令追い越し回路12が、既述のように、追い越しの可否を判定する。既述のように、命令追い越し回路12は、先行するストア命令と後続するロード命令の仮想アクセス先アドレスが重複しているか否かを判定することにより、追い越しの可否を判定する。そして、追い越しが可能である場合には、ロード命令がストア命令を追い越して実行される。更に、追い越しが発生した場合には、追い越し結果情報が、追い越しトレーサ13に保存される。すなわち、追い越しが発生した場合、図4に示したように、追い越しが発生したことを示す有効ビットと、追い越して実行されたロード命令のアクセス先アドレスにおけるページ内アドレスとが、保存される。
【0048】
ステップS4:追い越し結果情報の採取
試験命令列の実行が終了すると、追い越し判定部7が、追い越しトレーサ13に保存された追い越し結果情報(図4参照)を採取する。具体的には、追い越し判定部7は、追い越し結果情報採取命令を生成し、CPU3に実行させる。図8は、追い越し結果情報採取命令を示す概念図である。図8に示されるように、追い越し結果情報採取命令は、オペコードと、REGとを含んでいる。オペコードは、追い越しトレーサ13の情報を読み出すことを示している。REGは、SWビジブルレジスタ15のメモリアドレスが格納されたレジスタ番号を示している。すなわち、追い越し結果情報採取命令が実行されると、CPU3は、追い越しトレーサ13から追い越し結果情報を1つずつ読み出し、SWビジブルレジスタ15に、順次書き込んでいく。
【0049】
ステップS5:追い越しの有無の判定
追い越し判定部7は、SWビジブルレジスタ15に書き込まれた追い越し結果情報を読み取り、追い越しが発生したか否かを判定する。図9は、読み取られた追い越し結果情報の一例を示す概念図であり、図7に示した試験命令列を実行した場合の結果の一例を示している。追い越し判定部7は、追い越し結果情報中における有効ビットを参照することにより、追い越しが発生したか否かを判定する。すなわち、有効ビットが全て「0」であった場合には、追い越しが発生しなかったと判断される。一方、有効ビットが「1」である追い越し結果情報が存在する場合には、追い越しが発生したと判断される。追い越しが発生したと判断した場合、追い越し判定部7は、追い越し結果情報を試験命令列変更部8に通知する。図7に示した例の場合、有効ビットが「1」である追い越し結果情報が存在する。従って、追い越し判定部7は、追い越しが発生したと判断する。
【0050】
ステップS6:命令の入れ替え
追い越しが発生した場合、試験命令列変更部8が、試験命令列の順番を変更する。試験命令列変更部8は、追い越し結果情報に記載されるページ内アドレスを参照し、追い越しが発生したペアを特定する。試験命令列変更部8は、試験命令列を取得し、特定したペアにおける命令の順番を入れ替え、変更後試験命令列を生成する。図9に示される例の場合、一つの追い越し結果情報において、有効ビットが「1」になっている。従って、図7に示した試験命令列中において、ペア1及びペア2のいずれかにおいて追い越しが発生したことがわかる。更に、図9に示される追い越し結果情報において、ページ内アドレスは、「0×1008」である。このアドレスは、ペア2(図7参照)における仮想アクセス先アドレスに一致する。従って、ペア2で追い越しが発生したことが特定される。そこで、試験命令列変更部8は、ペア2において、ストア命令及びロード命令の順番を入れ替え、変更後試験命令列を生成する。図10は、変更後試験命令列を示す概念図である。ペア2において、ストア命令とロード命令との順番が、入れ替えられている。
【0051】
ステップS7:シミュレーション実行
次いで、SWシミュレータ実行部9が、変更後試験命令列を用いてシミュレーションを行い、期待値を生成する。
【0052】
ステップS8:実行結果比較
次いで、実行結果判定部10が、CPU3による試験命令列の実行結果を、期待値と比較する。実行結果が期待値に一致する場合、実行結果判定部10は、追い越し機能が正常に動作していると判定し、その旨を出力する。一方、一致しない場合には、ハードウェアの動作状態に以上があるものと判断し、その旨を出力する。
【0053】
以上のステップS8までの動作により、試験動作が終了する。尚、連続実行が指定されている場合は、再びステップS1以降の動作が繰り返される。
【0054】
尚、ステップS5において、追い越しが発生していないと判断された場合には、SWシミュレータ実行部9が、試験命令列を用いてシミュレーションを行い、期待値を生成する。そして、実行結果判定部10により、CPU3による試験命令列の実行結果が、期待値と比較される(ステップS9)。
【0055】
<効果の説明>
本実施形態によれば、仮想メモリアドレスと物理メモリアドレスとの対応関係を変更することにより、命令の追い越しが発生した場合に、命令の追い越しが発生しなかった場合とは異なる実行結果が得られる。また、追い越しトレーサ13が設けられていることにより、追い越しが発生した命令を特定することができる。更に、試験命令列中の順番を変更し、実際にCPU3で実行された順番を示す変更後試験命令列を生成することができる。そして、変更後試験命令列に基づいてシミュレーションによる期待値を生成することができる。そのため、追い越しが発生しなかった場合とは別に、追い越しが発生した場合における実行結果と期待値とを照合することが可能となる。すなわち、追い越し機能が正常に動作しているか否かを試験することが可能となる。
【0056】
また、本実施形態によれば、試験命令列をランダムに生成することが可能であるため、いろいろなタイミングでの評価が可能になり、ハードウェアの品質を向上させることが可能になる。
【0057】
尚、本実施形態では、先行命令がストア命令であり、後続命令がロード命令である場合に追い越しが発生する場合について説明した。但し、先行命令と後続命令との関係はこれに限定されるものではない。例えば、ストア命令がロード命令を追い越すように構成されたコンピュータシステムにおいても、本実施形態を適用することが可能である。
【符号の説明】
【0058】
1 コンピュータシステム
2 試験装置
3 CPU
4 メモリ
5 マッピング変更部
6 試験命令列生成部
7 追い越し情報読み出し部
8 試験命令列変更部
9 SWシミュレータ実行部
10 実行結果判定部
11 アドレス変換制御部
12 命令追い越し回路
13 追い越しトレーサ回路
14 追い越し情報格納先アドレス指定レジスタ
15 レジスタ
16 命令実行部
17 命令発行部
【技術分野】
【0001】
本発明は、コンピュータシステム、試験装置、試験方法、及び試験プログラムに関し、特に、命令間における追い越し制御機能を有するコンピュータシステムに関する。
【背景技術】
【0002】
コンピュータシステムには、処理装置(CPU等)と、メモリとが設けられる。処理装置においてストア命令が発行されると、処理装置はメモリにアクセスし、メモリにデータを格納する。また、ロード命令が発行されると、処理装置は、メモリにアクセスし、メモリからデータを読み出す。
【0003】
コンピュータシステムが正常に動作するかどうかを確認するために、試験が行なわれる。試験時には、ランダムに試験命令列が生成され、処理装置によって実行される。また、試験命令列の実行結果が、ソフトウェアによるシミュレータ(以下、SWシミュレータと記載する)により計算され、期待値が生成される。そして、処理装置による実行結果が、期待値に一致するか否かが判定される。判定結果に基づき、コンピュータシステムが正常に動作しているか否かが確認される。
【0004】
上記に関連して、特許文献1(特開昭62−203240号公報)には、情報処理装置の試験方式が開示されている。この情報処理装置の試験方式は、試験されるべき被試験情報処理装置と同一命令セットを持つシミュレータと、ランダム試験プログラムを生成するランダム試験プログラム生成手段と、生成されたランダム試験プログラムを被試験情報処理装置の先行制御有効状態と先行制御無効状態及びシミュレータで実行するように指示するランダム試験プログラム起動手段と、ランダム試験プログラム起動手段で起動されて得られた実行結果を判定する実行結果判定手段とを有することを特徴としている。
【0005】
一方で、コンピュータシステムの性能を高めるために、追い越し機能がコンピュータシステムに搭載されることがある。追い越し機能が搭載されたコンピュータシステムでは、先行命令のアクセス先アドレスが後続命令のアクセス先アドレスと重複するか否かが判定される。アクセス先アドレス同士が重複しない場合、後続命令が先行命令よりも先に実行される。これにより、先行命令の実行終了を待たずに後続命令を実行することができ、コンピュータシステムにおける動作性能を高めることができる。
【0006】
追い越し機能に関連して、特許文献2(特開2010−198439号公報)には、ベクトル命令間追い越し判定装置が開示されている。このベクトル命令間追い越し判定装置は、先行するベクトルストア命令と後続のベクトルロード命令間のアドレスの依存関係をチェックするアドレス比較部が、チェック対象の複数のベクトルストア命令に対して共通に1つのアドレス比較論理を備える。アドレス比較論理は、複数のベクトルストア命令と後続のベクトルロード命令のアドレスの依存関係を時分割でチェックする。このベクトル命令間追い越し判定装置では、要素展開部での展開処理と、アドレス比較処理とが、並行して実行可能とされている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開昭62−203240号公報
【特許文献2】特開2010−198439号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
追い越し機能が搭載されたコンピュータシステムでは、追い越し機能が正常に動作しているか否かを試験することが求められる。しかしながら、試験命令列をランダムに生成した場合、追い越し機能が正常に動作しているかどうかを試験することは、以下に述べる3つの理由から、難しい。
【0009】
第1に、通常、ロード命令のアクセス先アドレスと、ストア命令のアクセス先アドレスとは異なっている。そのため、追い越しが発生しようがしまいが、処理装置による実行結果に変わりはない。従って、処理装置による実行結果がシミュレータによって得られた期待値に一致したとしても、追い越し機能が正常に機能しているかどうかは判別できない。
【0010】
第2に、ランダムに生成された試験命令列では、追い越しの発生を保証できない。また、追い越しが発生しようがしまいが実行結果に変わりがないため、実際に追い越しが発生したか否かをソフトウェアによって確認することができない。
【0011】
第3に、追い越しが発生した場合の実行結果を、SWシミュレータによって計算することができず、期待値の生成ができない。
【0012】
追い越し機能が正常に動作しているか否かを試験するために、必ず追い越しが発生するような試験命令列を作成し、作成した試験命令列を用いて試験を行なうことが考えられる。しかしながら、必ず追い越しが発生するような試験命令列の作成は、人間が行なわなければならない。加えて、コンピュータシステムにおけるハードウェア(HW)構造を理解していなければ、そのような試験命令列を作成することができない。更には、特定の試験命令列でしか試験を行なうことができず、HWの品質を十分に保証することが難しい。
【0013】
従って、本発明の課題は、追い越し機能が正常に動作しているか否かを信頼性よく試験することができる、コンピュータシステム、試験装置、試験方法、及び試験プログラムを提供することにある。
【課題を解決するための手段】
【0014】
本発明に係るコンピュータシステムは、先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令を追い越して実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路と、前記後続命令の追い越しが発生した場合に、前記後続命令を特定する情報を生成し、追い越し結果情報として保存する、追い越しトレーサ回路とを具備する。前記試験装置は、前記後続命令の追い越しが発生した場合における実行結果が、前記後続命令の追い越しが発生しなかった場合における実行結果とは異なる結果になるように、前記処理装置の設定を変更する、設定変更部と、ランダムに試験命令列を生成し、前記処理装置に実行させる、試験命令列生成部と、前記試験命令列が実行された後に、前記追い越し結果情報に基づいて、前記後続命令の追い越しが発生したか否かを判別する、追い越し判別部と、追い越しが発生していた場合に、前記追い越し結果情報に基づいて、前記試験命令列を実際に前記処理装置によって実行された順番になるように並び替え、変更後試験命令列を生成する、試験命令列変更部と、前記変更後試験命令列の実行結果をシミュレートし、期待値を生成する、SWシミュレータ実行部と、前記試験命令列の実行結果が前記期待値に一致するか否かを判定し、判定結果を出力する、実行結果判定部とを備える。
【0015】
本発明に係る試験装置は、上述のコンピュータシステムで用いられる試験装置である。
【0016】
本発明に係る試験方法は、先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令よりも先に実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路と、前記後続命令が前記先行命令よりも先に実行された場合に、前記後続命令を特定する情報を追い越し結果情報として保存する、追い越しトレーサ回路とを具備する被試験装置の試験方法である。この試験方法は、前記後続命令の追い越しが発生した場合における実行結果が、前記後続命令の追い越しが発生しなかった場合における実行結果とは異なる結果になるように、前記処理装置の設定を変更するステップと、ランダム試験命令列を生成し、前記処理装置に実行させるステップと、前記試験命令列が実行された後に、前記追い越し結果情報に基づいて、前記後続命令の追い越しが発生したか否かを判別するステップと、追い越しが発生していた場合に、前記追い越し結果情報に基づいて、前記試験命令列の順番を実際に前記処理装置によって実行された順番になるように並び替え、変更後試験命令列を生成するステップと、前記変更後試験命令列の実行結果をシミュレートし、期待値を生成するステップと、前記試験命令列の実行結果が前記期待値に一致するか否かを判定し、判定結果を出力するステップとを具備する。
【0017】
本発明に係る試験プログラムは、上述の試験方法を、コンピュータにより実現するためのプログラムである。
【発明の効果】
【0018】
本発明によれば、追い越し機能が正常に動作しているか否かを信頼性よく試験することができる、コンピュータシステム、試験装置、試験方法、及び試験プログラムが提供される。
【図面の簡単な説明】
【0019】
【図1】コンピュータシステムを概略的に示す機能構成図である。
【図2】メモリアドレスを示す概念図である。
【図3】仮想メモリアドレスの空間番号と、物理メモリアドレスの空間番号との対応関係を示す概念図である。
【図4】追い越し結果情報を示す概念図である。
【図5】コンピュータシステムの動作方法を示すフローチャートである。
【図6】設定変更後のアドレス変換テーブルの設定内容を概念的に示す図である。
【図7】試験命令列の一例を示す概念図である。
【図8】追い越し結果情報採取命令を示す概念図である。
【図9】読み取られた追い越し結果情報の一例を示す概念図である。
【図10】変更後試験命令列を示す概念図である。
【発明を実施するための形態】
【0020】
以下に、本発明の実施形態について説明する。
【0021】
まず、本実施形態の原理について説明する。
【0022】
本願発明者は、追い越し機能が正常に動作しているか否かを試験するために、以下の(1)乃至(3)の機能を設けることを考えた。
(1)追い越しが発生した場合に、追い越しが発生しなかった場合とは異なる実行結果が得られるようにする機能。
(2)追い越しが発生した場合に、追い越しが発生したことをソフトウェアによって知ることができる機能。
(3)上記(1)における異なる実行結果を、ソフトウェアによって計算し、期待値を生成する機能。
上記(1)乃至(3)の機能を用いれば、機能(2)により、追い越しが発生したことを知ることができる。追い越しが発生した場合には、機能(1)によって、追い越しが発生しなかった場合とは異なる実行結果を得ることができる。追い越しが発生した場合の実行結果を、機能(3)によって得られた追い越しが発生した場合の期待値と比較することにより、追い越し機能が正常に動作しているか否かを判別することができる。
【0023】
上記(1)の機能を実現するために、本願発明者は、仮想メモリアドレスと物理メモリアドレスとの対応関係を変更することを考えた。通常、仮想メモリアドレスと物理メモリアドレスとは、1対1で対応している。また、追い越しを発生させるか否かの判断は、仮想メモリアドレスに基いて行なわれる。すなわち、先行命令の仮想メモリアドレスと後続命令の仮想メモリアドレスとが重複しているか否かが判定され、重複しない場合、追い越しが行われる。そのため、先行するロード命令(又はストア命令)を後続するストア命令(又はロード命令)が追い越したとしても、実行結果に変わりはない。これに対して、仮想メモリアドレスと物理メモリアドレスとの対応関係を変更することにより、先行命令において使用される仮想メモリアドレスと後続命令において使用される仮想メモリアドレスとを、同一の物理メモリアドレスに割り当てることができる。その結果、先行するストア命令(又はロード命令)と後続するロード命令(又はストア命令)との間において仮想メモリアドレスが異なるにもかかわらず、アクセス先の物理メモリアドレスを同一にすることができる。すなわち、追い越しが発生した場合に、追い越しが発生しなかった場合とは異なる実行結果を得ることが可能になる。
【0024】
また、本願発明者は、上記(2)の機能を実現するために、ハードウェア内に、追い越しが発生したことを示す情報を格納する追い越しトレーサを設けることを考えた。追い越しトレーサに格納された情報を読み取ることにより、ソフトウェアによって追い越しが発生したことを知ることができる。
【0025】
更に、本願発明者は、上記(3)の機能を実現するために、試験命令列を変更し、変更後の試験命令列によって期待値を生成することを考えた。すなわち、上記(2)で説明した追い越しトレーサに保存された情報を用いれば、試験命令列の中から、追い越しが発生した命令のペアを特定することができる。そして、特定したペアの順番を入れ替えることにより、変更後の試験命令列を得ることができる。変更後の試験命令列中における命令の順序は、実際に処理装置によって実行された命令の順序に一致する。変更後の試験命令列を用いてシミュレーションを行なえば、追い越しが発生した場合の期待値を得ることができる。
【0026】
続いて、図面を参照しつつ、本実施形態に係るコンピュータシステムについて、詳細に説明する。尚、本実施形態では、一例として、先行命令がストア命令であり、後続命令がロード命令である場合に、追い越しが発生するものとする。
【0027】
<構成の説明>
図1は、本実施形態に係るコンピュータシステム1を概略的に示す機能構成図である。図1に示されるように、コンピュータシステム1は、CPU3(処理装置)、メモリ4、及び試験装置2を備えている。試験装置2は、CPU3がメモリ4に格納された試験プログラムを実行することにより、実現される。
【0028】
まず、CPU3について説明する。CPU3は、メモリ4に格納された命令列を実行する。命令列に含まれる各命令(ロード命令又はストア命令)には、アクセス先の仮想メモリアドレスを示す情報が含まれる。CPU3では、命令に含まれる仮想メモリアドレスが、物理メモリアドレスに変換される。そして、CPU3は、物理メモリアドレスに基いてメモリ4にアクセスし、命令を実行する。すなわち、命令がロード命令である場合には、メモリ4にアクセスし、物理メモリアドレスからデータをレジスタに読み出す。命令がストア命令である場合には、メモリ4にアクセスし、レジスタに格納されたデータを、アクセス先の物理メモリアドレスに書き込む。
【0029】
CPU3は、アドレス変換制御部11、命令追い越し回路12、追い越しトレーサ回路13、及びSWビジブルレジスタ15を備えている。
【0030】
アドレス変換制御部11には、アドレス変換テーブルを示す情報が格納されている。アドレス変換テーブルは、仮想メモリアドレスと物理メモリアドレスとの対応関係を示しており、仮想メモリアドレスを物理メモリアドレスに変換するために用いられる。図2は、メモリアドレス(仮想メモリアドレス及び物理メモリアドレス)を示す概念図である。図2に示されるように、メモリアドレスは、通常、空間番号、ページ番号、及びページ内アドレスによって表現される。通常、仮想メモリアドレスを物理メモリアドレスに変換する際、空間番号及びページ番号が変更され、ページ内アドレスは変更されない。また、図3は、仮想メモリアドレスの空間番号と、物理メモリアドレスの空間番号との対応関係を示す概念図である。通常の運用時には、アドレス変換テーブルは、仮想メモリアドレスと物理メモリアドレスが1対1で対応するように、設定されている。すなわち、図3に示されるように、仮想メモリアドレスの空間番号と、物理メモリアドレスの空間番号とは、1対1で対応している。
【0031】
再び図1を参照する。命令追い越し回路12は、先行命令がストア命令であり、後続命令がロード命令である場合に、後続命令が先行命令を追い越すことが可能であるか否かを判断する部分である。追い越し可能である場合、後続命令が先行命令よりも先に実行される。また、命令追い越し回路12は、追い越しが発生した場合、追い越しがあった旨と、追い越しを行なった後続命令(ロード命令)を特定する情報(以下、追い越し結果情報)とを、追い越しトレーサ13に格納する。
【0032】
追い越しトレーサ13は、上述のように、追い越し結果情報を格納するために設けられている。図4は、追い越しトレーサ13に格納される追い越し結果情報を示す概念図である。本実施形態では、追い越しトレーサ13に4個(4レコード)の追い越し結果情報を格納できるものとする。また、各追い越し結果情報は、追い越しがあったこと示す有効bitと、追い越しを行なった後続命令(ロード命令)の仮想アクセス先アドレスにおけるページ内アドレスとを含んでいる。尚、ページ内アドレスは、16bitの情報により表現されている。
【0033】
SWビジブルレジスタ15は、ソフトウェアビジブルなレジスタであり、追い越しトレーサ13に格納された情報を退避させるために設けられている。
【0034】
続いて、試験装置2について詳細に説明する。図1に示されるように、試験装置2は、マッピング変更部5、試験命令列生成部6、追い越し判定部7、試験命令列変更部8、SWシミュレータ実行部9、及び実行結果判定部10を備えている。
【0035】
マッピング変更部5は、追い越しが発生した場合と追い越しが発生しなかった場合とで実行結果が変わるように、アドレス変換制御部11の設定を変更する機能を有している。
【0036】
試験命令列生成部6は、試験命令列を生成する部分である。試験命令列には、複数の命令が含まれる。生成された試験命令列は、メモリ4に格納され、CPU3によって順番に実行される。
【0037】
追い越し判定部7は、試験命令列がCPU3によって実行された後に、追い越し結果情報を読み取る機能を有している。追い越し判定部7は、追い越し結果情報に基づいて、追い越しが発生したか否かを判定する。追い越しが発生していた場合、追い越し判定部7は、追い越し結果情報を試験命令列変更部8に通知する。
【0038】
試験命令列変更部8は、試験命令列の順番を変更し、変更後試験命令列を生成する機能を有している。試験命令列変更部8は、追い越し結果情報に基づいて、追い越しが発生した命令のペアを特定し、実際にCPU3によって実行された順番になるように、試験命令列に含まれる複数の命令の順番を並び替える。
【0039】
SWシミュレータ実行部9は、試験命令列又は変更後試験命令列の実行結果をソフトウェア的にシミュレーションし、期待値を生成する機能を有している。
【0040】
実行結果判定部10は、CPU3による試験命令列の実行結果が、期待値に一致するか否かを判別する部分する。実行結果判定部10は、判別結果を、出力する。
【0041】
<動作方法の説明>
続いて、本実施形態に係るコンピュータシステム1の動作方法について説明する。図5は、コンピュータシステム1の動作方法を示すフローチャートである。本コンピュータシステム1では、ROM(Read Only Memory)等に格納された試験プログラムがメモリ4上にロードされることにより、試験装置2が実現される。試験装置1には、試験に必要なパラメータ情報が与えられる。パラメータ情報は、実行時間、試験命令列の特性(命令毎の出現頻度の重み付け等)、及び試験命令列中に含まれる命令数などを特定する情報である。パラメータ情報は、予めメモリ4などに設定されていてもよいし、ユーザによって入力されていてもよい。
【0042】
ステップS1:マッピング
試験装置2では、まず、マッピング変更部5が、アドレス変換制御部11にアクセスし、アドレス変換テーブルの設定を変更する。図6は、設定が変更された後のアドレス変換テーブルの設定内容を概念的に示す図である。図6に示されるように、マッピング変更部は、仮想メモリアドレスにおける空間番号(以下、仮想空間番号)と、物理メモリアドレスにおける空間番号(以下、物理空間番号)との対応関係を、変更する。より詳細には、マッピング変更部5は、ロード命令で用いられるデータエリアの仮想空間番号と、ストア命令で用いられるデータエリアの仮想空間番号とを、同一の物理空間番号に割り当てる。本実施形態では、ロード命令で用いられる仮想空間番号が#0であり、ストア命令で用いられる仮想空間番号が#1であるものとする。そして、図6に示されるように、仮想空間番号♯0及び♯1が、物理空間番号#0に対応付けられている。
【0043】
ステップS2:試験命令列の生成
次いで、試験命令列生成部6が、ランダムに試験命令列を生成する。試験命令列生成部6は、入力されたパラメータ情報に基づいて、試験命令列を生成し、メモリ4に格納する。図7は、試験命令列の一例を示す概念図である。
【0044】
ここで、試験命令列生成部6は、追い越しが発生しやすい命令列を、試験命令列として生成する。具体的には、図7に示されるように、試験命令列生成部6は、順番的に連続するストア命令とロード命令とのペアが含まれるように、試験命令列を生成する。試験命令列に含まれるペアの数は、追い越しトレーサ13に格納することのできる追い越し結果情報の数に応じて、決定される。また、試験命令列生成部6は、同一ペア内におけるロード命令及びストア命令のアクセス先アドレスを、以下のように決定する。まず、ロード命令の仮想アクセス先アドレスの空間番号を、ステップS1で設定されたロード命令用の仮想空間番号(♯0)に決定する。また、ストア命令の仮想アクセス先アドレスの空間番号を、ステップS2で設定されたストア命令用の仮想空間番号(♯1)に決定する。一方、ページ番号及びページ内アドレスは、同一ペア内で同一となるように、決定される。
【0045】
上述のようにペアを作成すれば、順番的に連続するストア命令とロード命令との間において仮想アクセス先アドレスが異なっているため、追い越しが発生しやすくなる。加えて、ストア命令とロード命令との間において、物理アクセス先アドレスは同一となるため、追い越しが発生した場合と追い越しが発生しなかった場合との間において、CPU3の実行結果を異ならせることが可能になる。
【0046】
尚、図7に示される試験命令列には、ペア1及びペア2が含まれている。また、本実施形態では、メモリアドレスが32ビットのアドレス空間を有するものとし、空間番号が8ビット、ページ番号が8ビット、ページ内アドレスが16ビットであるものとする。図7に示されるように、ペア1では、ロード命令のアクセスアドレスにおいて、仮想空間番号が#0であり、ページ番号がページ#0であり、ページ内アドレスが0x1000である。一方、ストア命令のアクセスアドレスにおいては、仮想空間番号が#1であり、ページ番号がページ#0であり、ページ内アドレスが0x1000である。すなわち、ペア1においては、ロード命令の仮想アクセスアドレスを32ビットで表現すれば、0x00001000となり、ストア命令アクセスアドレスを32ビットで表現すれば、0x01001000になる。その結果、ロード命令及びストア命令の仮想アクセス先アドレスを物理アクセス先アドレスに変換すれば、いずれも、0x00001000になる。一方、ペア2においては、ロード命令のアクセスアドレスが0x00001008に設定され、ストア命令のアクセスアドレスが0x01001008に設定されている。ペア2においても、ロード命令及びストア命令の物理アクセス先アドレスは、いずれも、0x00001008になる。
【0047】
ステップS3:試験命令列の実行
次いで、CPU3により、試験命令列が実行される。CPU3では、命令追い越し回路12が、既述のように、追い越しの可否を判定する。既述のように、命令追い越し回路12は、先行するストア命令と後続するロード命令の仮想アクセス先アドレスが重複しているか否かを判定することにより、追い越しの可否を判定する。そして、追い越しが可能である場合には、ロード命令がストア命令を追い越して実行される。更に、追い越しが発生した場合には、追い越し結果情報が、追い越しトレーサ13に保存される。すなわち、追い越しが発生した場合、図4に示したように、追い越しが発生したことを示す有効ビットと、追い越して実行されたロード命令のアクセス先アドレスにおけるページ内アドレスとが、保存される。
【0048】
ステップS4:追い越し結果情報の採取
試験命令列の実行が終了すると、追い越し判定部7が、追い越しトレーサ13に保存された追い越し結果情報(図4参照)を採取する。具体的には、追い越し判定部7は、追い越し結果情報採取命令を生成し、CPU3に実行させる。図8は、追い越し結果情報採取命令を示す概念図である。図8に示されるように、追い越し結果情報採取命令は、オペコードと、REGとを含んでいる。オペコードは、追い越しトレーサ13の情報を読み出すことを示している。REGは、SWビジブルレジスタ15のメモリアドレスが格納されたレジスタ番号を示している。すなわち、追い越し結果情報採取命令が実行されると、CPU3は、追い越しトレーサ13から追い越し結果情報を1つずつ読み出し、SWビジブルレジスタ15に、順次書き込んでいく。
【0049】
ステップS5:追い越しの有無の判定
追い越し判定部7は、SWビジブルレジスタ15に書き込まれた追い越し結果情報を読み取り、追い越しが発生したか否かを判定する。図9は、読み取られた追い越し結果情報の一例を示す概念図であり、図7に示した試験命令列を実行した場合の結果の一例を示している。追い越し判定部7は、追い越し結果情報中における有効ビットを参照することにより、追い越しが発生したか否かを判定する。すなわち、有効ビットが全て「0」であった場合には、追い越しが発生しなかったと判断される。一方、有効ビットが「1」である追い越し結果情報が存在する場合には、追い越しが発生したと判断される。追い越しが発生したと判断した場合、追い越し判定部7は、追い越し結果情報を試験命令列変更部8に通知する。図7に示した例の場合、有効ビットが「1」である追い越し結果情報が存在する。従って、追い越し判定部7は、追い越しが発生したと判断する。
【0050】
ステップS6:命令の入れ替え
追い越しが発生した場合、試験命令列変更部8が、試験命令列の順番を変更する。試験命令列変更部8は、追い越し結果情報に記載されるページ内アドレスを参照し、追い越しが発生したペアを特定する。試験命令列変更部8は、試験命令列を取得し、特定したペアにおける命令の順番を入れ替え、変更後試験命令列を生成する。図9に示される例の場合、一つの追い越し結果情報において、有効ビットが「1」になっている。従って、図7に示した試験命令列中において、ペア1及びペア2のいずれかにおいて追い越しが発生したことがわかる。更に、図9に示される追い越し結果情報において、ページ内アドレスは、「0×1008」である。このアドレスは、ペア2(図7参照)における仮想アクセス先アドレスに一致する。従って、ペア2で追い越しが発生したことが特定される。そこで、試験命令列変更部8は、ペア2において、ストア命令及びロード命令の順番を入れ替え、変更後試験命令列を生成する。図10は、変更後試験命令列を示す概念図である。ペア2において、ストア命令とロード命令との順番が、入れ替えられている。
【0051】
ステップS7:シミュレーション実行
次いで、SWシミュレータ実行部9が、変更後試験命令列を用いてシミュレーションを行い、期待値を生成する。
【0052】
ステップS8:実行結果比較
次いで、実行結果判定部10が、CPU3による試験命令列の実行結果を、期待値と比較する。実行結果が期待値に一致する場合、実行結果判定部10は、追い越し機能が正常に動作していると判定し、その旨を出力する。一方、一致しない場合には、ハードウェアの動作状態に以上があるものと判断し、その旨を出力する。
【0053】
以上のステップS8までの動作により、試験動作が終了する。尚、連続実行が指定されている場合は、再びステップS1以降の動作が繰り返される。
【0054】
尚、ステップS5において、追い越しが発生していないと判断された場合には、SWシミュレータ実行部9が、試験命令列を用いてシミュレーションを行い、期待値を生成する。そして、実行結果判定部10により、CPU3による試験命令列の実行結果が、期待値と比較される(ステップS9)。
【0055】
<効果の説明>
本実施形態によれば、仮想メモリアドレスと物理メモリアドレスとの対応関係を変更することにより、命令の追い越しが発生した場合に、命令の追い越しが発生しなかった場合とは異なる実行結果が得られる。また、追い越しトレーサ13が設けられていることにより、追い越しが発生した命令を特定することができる。更に、試験命令列中の順番を変更し、実際にCPU3で実行された順番を示す変更後試験命令列を生成することができる。そして、変更後試験命令列に基づいてシミュレーションによる期待値を生成することができる。そのため、追い越しが発生しなかった場合とは別に、追い越しが発生した場合における実行結果と期待値とを照合することが可能となる。すなわち、追い越し機能が正常に動作しているか否かを試験することが可能となる。
【0056】
また、本実施形態によれば、試験命令列をランダムに生成することが可能であるため、いろいろなタイミングでの評価が可能になり、ハードウェアの品質を向上させることが可能になる。
【0057】
尚、本実施形態では、先行命令がストア命令であり、後続命令がロード命令である場合に追い越しが発生する場合について説明した。但し、先行命令と後続命令との関係はこれに限定されるものではない。例えば、ストア命令がロード命令を追い越すように構成されたコンピュータシステムにおいても、本実施形態を適用することが可能である。
【符号の説明】
【0058】
1 コンピュータシステム
2 試験装置
3 CPU
4 メモリ
5 マッピング変更部
6 試験命令列生成部
7 追い越し情報読み出し部
8 試験命令列変更部
9 SWシミュレータ実行部
10 実行結果判定部
11 アドレス変換制御部
12 命令追い越し回路
13 追い越しトレーサ回路
14 追い越し情報格納先アドレス指定レジスタ
15 レジスタ
16 命令実行部
17 命令発行部
【特許請求の範囲】
【請求項1】
試験装置と、
先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令を追い越して実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路と、
前記後続命令の追い越しが発生した場合に、前記後続命令を特定する情報を生成し、追い越し結果情報として保存する、追い越しトレーサ回路と、
を具備し、
前記試験装置は、
前記後続命令の追い越しが発生した場合における実行結果が、前記後続命令の追い越しが発生しなかった場合における実行結果とは異なる結果になるように、前記処理装置の設定を変更する、設定変更部と、
ランダムに試験命令列を生成し、前記処理装置に実行させる、試験命令列生成部と、
前記試験命令列が実行された後に、前記追い越し結果情報に基づいて、前記後続命令の追い越しが発生したか否かを判別する、追い越し判別部と、
追い越しが発生していた場合に、前記追い越し結果情報に基づいて、前記試験命令列を実際に前記処理装置によって実行された順番になるように並び替え、変更後試験命令列を生成する、試験命令列変更部と、
前記変更後試験命令列の実行結果をシミュレートし、期待値を生成する、SWシミュレータ実行部と、
前記試験命令列の実行結果が前記期待値に一致するか否かを判定し、判定結果を出力する、実行結果判定部とを備える
コンピュータシステム。
【請求項2】
請求項1に記載されたコンピュータシステムであって、
前記先行命令は、メモリからデータを読み出す旨を示すロード命令であり、
前記後続命令は、メモリにデータを格納する旨を示すストア命令である
コンピュータシステム。
【請求項3】
請求項1に記載されたコンピュータシステムであって、
前記先行命令は、メモリにデータを格納する旨を示すストア命令であり、
前記後続命令は、メモリからデータを読み出す旨を示すロード命令である
コンピュータシステム。
【請求項4】
請求項2又は3に記載されたコンピュータシステムであって、
前記設定変更部は、前記ストア命令のアクセス先仮想メモリアドレスに含まれる仮想メモリ空間と、前記ロード命令のアクセス先仮想メモリアドレスに含まれる仮想メモリ空間とが、同一の物理メモリ空間にマッピングされるように、前記処理装置の設定を変更する
コンピュータシステム。
【請求項5】
請求項4に記載されたコンピュータシステムであって、
前記試験命令列生成部は、前記試験命令列として、順番的に連続する前記ストア命令及び前記ロード命令のペアを含む命令列を生成する
コンピュータシステム。
【請求項6】
請求項5に記載されたコンピュータシステムであって、
前記試験命令列生成部は、前記ストア命令のアクセス先仮想メモリアドレスと前記ロード命令のアクセス先仮想メモリアドレスとが、異なる仮想メモリ空間を有し、同一のページ番号及びページ内アドレスを有するように、前記ペアを生成する
コンピュータシステム。
【請求項7】
請求項1乃至6のいずれかに記載されたコンピュータシステムで用いられる
試験装置。
【請求項8】
先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令よりも先に実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路と、
前記後続命令が前記先行命令よりも先に実行された場合に、前記後続命令を特定する情報を追い越し結果情報として保存する、追い越しトレーサ回路と、
を具備する被試験装置の試験方法であって、
前記後続命令の追い越しが発生した場合における実行結果が、前記後続命令の追い越しが発生しなかった場合における実行結果とは異なる結果になるように、前記処理装置の設定を変更するステップと、
ランダム試験命令列を生成し、前記処理装置に実行させるステップと、
前記試験命令列が実行された後に、前記追い越し結果情報に基づいて、前記後続命令の追い越しが発生したか否かを判別するステップと、
追い越しが発生していた場合に、前記追い越し結果情報に基づいて、前記試験命令列の順番を実際に前記処理装置によって実行された順番になるように並び替え、変更後試験命令列を生成するステップと、
前記変更後試験命令列の実行結果をシミュレートし、期待値を生成するステップと、
前記試験命令列の実行結果が前記期待値に一致するか否かを判定し、判定結果を出力するステップと、
を具備する
試験方法。
【請求項9】
請求項8に記載された試験方法を、コンピュータにより実現するための、試験プログラム。
【請求項1】
試験装置と、
先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令を追い越して実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路と、
前記後続命令の追い越しが発生した場合に、前記後続命令を特定する情報を生成し、追い越し結果情報として保存する、追い越しトレーサ回路と、
を具備し、
前記試験装置は、
前記後続命令の追い越しが発生した場合における実行結果が、前記後続命令の追い越しが発生しなかった場合における実行結果とは異なる結果になるように、前記処理装置の設定を変更する、設定変更部と、
ランダムに試験命令列を生成し、前記処理装置に実行させる、試験命令列生成部と、
前記試験命令列が実行された後に、前記追い越し結果情報に基づいて、前記後続命令の追い越しが発生したか否かを判別する、追い越し判別部と、
追い越しが発生していた場合に、前記追い越し結果情報に基づいて、前記試験命令列を実際に前記処理装置によって実行された順番になるように並び替え、変更後試験命令列を生成する、試験命令列変更部と、
前記変更後試験命令列の実行結果をシミュレートし、期待値を生成する、SWシミュレータ実行部と、
前記試験命令列の実行結果が前記期待値に一致するか否かを判定し、判定結果を出力する、実行結果判定部とを備える
コンピュータシステム。
【請求項2】
請求項1に記載されたコンピュータシステムであって、
前記先行命令は、メモリからデータを読み出す旨を示すロード命令であり、
前記後続命令は、メモリにデータを格納する旨を示すストア命令である
コンピュータシステム。
【請求項3】
請求項1に記載されたコンピュータシステムであって、
前記先行命令は、メモリにデータを格納する旨を示すストア命令であり、
前記後続命令は、メモリからデータを読み出す旨を示すロード命令である
コンピュータシステム。
【請求項4】
請求項2又は3に記載されたコンピュータシステムであって、
前記設定変更部は、前記ストア命令のアクセス先仮想メモリアドレスに含まれる仮想メモリ空間と、前記ロード命令のアクセス先仮想メモリアドレスに含まれる仮想メモリ空間とが、同一の物理メモリ空間にマッピングされるように、前記処理装置の設定を変更する
コンピュータシステム。
【請求項5】
請求項4に記載されたコンピュータシステムであって、
前記試験命令列生成部は、前記試験命令列として、順番的に連続する前記ストア命令及び前記ロード命令のペアを含む命令列を生成する
コンピュータシステム。
【請求項6】
請求項5に記載されたコンピュータシステムであって、
前記試験命令列生成部は、前記ストア命令のアクセス先仮想メモリアドレスと前記ロード命令のアクセス先仮想メモリアドレスとが、異なる仮想メモリ空間を有し、同一のページ番号及びページ内アドレスを有するように、前記ペアを生成する
コンピュータシステム。
【請求項7】
請求項1乃至6のいずれかに記載されたコンピュータシステムで用いられる
試験装置。
【請求項8】
先行命令のアクセス先仮想メモリアドレスが、後続命令のアクセス先仮想メモリアドレスと重複するか否かを判定し、重複しない場合に、前記後続命令が前記先行命令よりも先に実行されるように、処理装置によるメモリへのアクセス動作を制御する、命令追い越し回路と、
前記後続命令が前記先行命令よりも先に実行された場合に、前記後続命令を特定する情報を追い越し結果情報として保存する、追い越しトレーサ回路と、
を具備する被試験装置の試験方法であって、
前記後続命令の追い越しが発生した場合における実行結果が、前記後続命令の追い越しが発生しなかった場合における実行結果とは異なる結果になるように、前記処理装置の設定を変更するステップと、
ランダム試験命令列を生成し、前記処理装置に実行させるステップと、
前記試験命令列が実行された後に、前記追い越し結果情報に基づいて、前記後続命令の追い越しが発生したか否かを判別するステップと、
追い越しが発生していた場合に、前記追い越し結果情報に基づいて、前記試験命令列の順番を実際に前記処理装置によって実行された順番になるように並び替え、変更後試験命令列を生成するステップと、
前記変更後試験命令列の実行結果をシミュレートし、期待値を生成するステップと、
前記試験命令列の実行結果が前記期待値に一致するか否かを判定し、判定結果を出力するステップと、
を具備する
試験方法。
【請求項9】
請求項8に記載された試験方法を、コンピュータにより実現するための、試験プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2012−160071(P2012−160071A)
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願番号】特願2011−19871(P2011−19871)
【出願日】平成23年2月1日(2011.2.1)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願日】平成23年2月1日(2011.2.1)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】
[ Back to top ]