(57)【要約】【課題】演算処理装置において、同一アドレスの順序保証を確実に検証する。【解決手段】データを記憶するメモリ１２と、メモリ１２に対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一プロセッサ１０と、メモリ１２に対して、複数のロード命令の実行中にストア命令を発行する第二プロセッサ１０と、第一プロセッサ１０によってメモリ１２からロードされたデータに含まれる値に基づき順序性が保証されているかを判定する順序性判定部と、を備える。【選択図】図５
2019219717.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するメモリと、
前記メモリに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一プロセッサと、
前記メモリに対して、前記複数のロード命令の実行中にストア命令を発行する第二プロセッサと、
前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき順序性が保証されているかを判定する順序性判定部と、
を備える、
ことを特徴とする演算処理装置。
【請求項２】
前記第二プロセッサは、前記第一プロセッサによる前記ロード命令の対象となる領域と同一の領域に対して、前記ストア命令を発行する、
ことを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記第二プロセッサは、前記順序性判定部が判定を行なう度に、前記ストア命令を発行するタイミングを変更し、
前記第一プロセッサによる前記ロード命令の発行、前記第二プロセッサによる前記ストア命令の発行、及び、前記第一プロセッサによる前記比較と前記判定とを繰り返し行なう、
ことを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
第一プロセッサが、データを記憶するメモリに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一の処理と、
第二プロセッサが、前記メモリに対して、前記複数のロード命令の実行中にストア命令を発行する第二の処理と、
前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき順序性が保証されているかを判定する第三の処理と、
を備える、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、及び制御方法に関する。
【背景技術】
【０００２】
演算処理装置の品質保証試験の一つとして、プロセッサ（ＣＰＵ（Central Processing Unit））がロード（Ｌｏａｄ；読み出し）命令や、ストア（Ｓｔｏｒｅ；書き込み）命令を実行した場合に順序性の検証を行なうための順序保証試験が行なわれている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３１１５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような従来の順序保証試験では、プロセッサによる異なるアドレス又は同一アドレスに対するロード命令及びストア命令等のアクセスの順序を検証する。
【０００５】
図１４は、ＲＭＯ（Ｒｅｌａｘｅｄ  Ｍｅｍｏｒｙ  Ｏｒｄｅｒｉｎｇ）方式を採用したプロセッサにおいて、後続（後の）のロード命令やストア命令が、先のロード命令やストア命令よりも先に実行されてしまう、いわゆる追い越しの可否を例示したものである。例えば、この図１４の“ロード命令−ロード命令”は、先の命令がロード命令であり、後の命令がロード命令であることを示している。この図１４に示すように、先行する命令のアクセス先と後続する命令のアクセス先とが異なるアドレスである場合には、“特別ロード命令−ロード命令”，“特別ストア命令−ストア命令”以外は追い越しが認められている。
【０００６】
一方、ＲＭＯ方式を採用したプロセッサにおいて、同一のアドレスに対するアクセスに関しては、後続のロード命令が先のロード命令を追い越すことや、後続のストア命令が先のストア命令を追い越すことは許可されていない（図１４の矢印Ａ１参照）。したがって、このようなＲＭＯ方式を採用したプロセッサの順序保証試験においては、同一のアドレスに対するアクセスの追い越しが行なわれていないことを検証することが重要である。
【０００７】
しかしながら、このようなＲＭＯ方式を採用したプロセッサにおける順序保証試験では、メモリ上の異なる複数の領域に対するアクセスを同時に試みる場合がある。このような場合、再度同一のアドレスに対するロード命令やストア命令が発行されるまでには時間間隔があいてしまう場合がある。
【０００８】
また、ロード命令を実行するプロセッサと、ストア命令を実行するプロセッサとを試験開始時点で同期させていても、両者による命令のタイミングのずれが発生してしまい、例えば、ロード命令がすべて実行された後に、ストア命令が実行される場合がある。
【０００９】
したがって、これらの場合に、同一アドレスをアクセス先とした、“ロード命令−ロード命令”，“ストア命令−ストア命令”の追い越しを発生させることができない。ＲＭＯ方式を採用したプロセッサを実装した順序保証回路において、同一のアドレスに対するアクセスの追い越しについて望ましい（正確な）順序保証試験を行なうことが難しく、順序保証回路の妥当性を検証することが難しいという課題がある。
【００１０】
１つの側面では、同一アドレスの順序保証を確実に検証することを目的とする。
【課題を解決するための手段】
【００１１】
この演算処理装置は、データを記憶するメモリと、前記メモリに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一プロセッサと、前記メモリに対して、前記複数のロード命令の実行中にストア命令を発行する第二プロセッサと、前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき順序性が保証されているかを判定する順序性判定部と、を備える。
【発明の効果】
【００１２】
一実施形態によれば、同一アドレスの順序保証を確実に検証することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態の一例としての演算処理装置のハードウェア構成を例示する図である。
【図２】実施形態の一例としての演算処理装置における順序保証試験のハードウェア構成を例示する図である。
【図３】実施形態の一例としての演算処理装置の機能構成を例示する図である。
【図４】実施形態の一例としての演算処理装置における初期化部による処理を例示する図である。
【図５】実施形態の一例としての演算処理装置における連続ロード命令発行部、待機命令発行部、及び、補助ストア命令発行部による各処理を例示する図である。
【図６】実施形態の一例としての演算処理装置における結果保存部による処理を例示する図である。
【図７】実施形態の一例としての演算処理装置において、後のロード命令による先のロード命令の追い越しが発生していない場合の概念図である。
【図８】実施形態の一例としての演算処理装置において、後のロード命令による先のロード命令の追い越しが発生した場合の概念図である。
【図９】実施形態の一例としての演算処理装置における順序保証試験の制御処理を例示する図である。
【図１０】実施形態の一例としての演算処理装置での試験対象プロセッサにおける順序保証試験による処理を例示する図である。
【図１１】実施形態の一例としての演算処理装置におけるエラーチェック部による処理を例示する図である。
【図１２】実施形態の変形例としての演算処理装置のハードウェア構成を例示する図である。
【図１３】実施形態の変形例としての演算処理装置における順序保証試験のハードウェア構成を例示する図である。
【図１４】実施形態の比較例としての演算処理装置における追い越しの可否を例示する図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図等はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１５】
〔１〕一実施形態
〔１−１〕一実施形態に係る演算処理装置のハードウェア構成例
図１は、実施形態の一例としての演算処理装置１のハードウェア構成を例示する図である。
【００１６】
この図１に示すように、演算処理装置１は、複数のＣＰＵ１０−０〜１０−ｎ（ｎは０以上の整数）を備えるマルチプロセッサ構成であり、記憶部１１、メモリ１２、ＩＦ（Interface）部１３、及び、Ｉ／Ｏ（Input / Output）部１４を備えてよい。
【００１７】
具体的に、演算処理装置１は、１つ以上のＣＰＵ１０−０，ＣＰＵ１０−１，ＣＰＵ１０−２，・・・，ＣＰＵ１０−ｎを備える。以下、ＣＰＵを示す符号としては、複数のＣＰＵのうち１つを特定する必要があるときには符号１０−０，１０−１，１０−２，・・・，１０−ｎを用いるが、任意のＣＰＵを指すときには符号１０を用いる。
【００１８】
また、ＣＰＵ１０−１，ＣＰＵ１０−２，・・・，ＣＰＵ１０−ｎは、それぞれ、ＣＰＵ＃０,ＣＰＵ＃１，ＣＰＵ＃２，・・・，ＣＰＵ＃ｎとも表され、符号“＃”に付される数字である、“０”，“１”，“２”，・・・，“ｎ”は単にＣＰＵ番号ともいう。また、これらのＣＰＵ１０は、バス１５を介して互いに通信可能に接続される。
【００１９】
このＣＰＵ１０は、後述する記憶部１１に格納されるＯＳ（Operating System）やプログラムを実行し、例えば、順序保証試験を実行すべく演算処理装置１を制御する。本実施形態では、ＣＰＵ１０は、図３等を用いて後述する試験プログラム１００を実行する。
【００２０】
記憶部１１は、種々のデータやプログラム等を格納するハードウェアの一例である。例えば、記憶部１１は、演算処理装置１の二次記憶装置として使用されてよく、ＯＳやファームウェア、アプリケーション等のプログラム、及び、各種データが格納されてよい。記憶部１１としては、例えば、ＨＤＤ（Hard Disk Drive）等の磁気ディスク装置の他、ＳＳＤ(Solid State Drive)やＳＣＭ(Storage Class Memory)が挙げられる。また、記憶部１１は、演算処理装置１の各種機能の全部若しくは一部を実現するプログラムを格納してもよい。
【００２１】
メモリ１２は、種々のデータやプログラムを格納するハードウェアの一例である。メモリ１２としては、ＲＡＭ（Random Access Memory）等の揮発性メモリや、フラッシュメモリ、ＳＣＭ、ＲＯＭ（Read Only Memory）等の不揮発性メモリが挙げられる。また、メモリ１２は、試験プログラム１００やデータを記憶してもよい。
【００２２】
ＩＦ部１３は、外部ネットワーク等を介し、図示しない外部装置との間の接続及び通信の制御等を行なう通信インタフェースの一例である。
【００２３】
Ｉ／Ｏ部１４は、例えば、マウス、キーボード、タッチパネル、操作ボタン等の入力装置、の少なくともいずれか一つを含んでよい。
【００２４】
バス１５は、ＣＰＵ１０同士を通信可能に接続すると共に、ＣＰＵ１０と、記憶部１１、メモリ１２、ＩＦ部１３、及び、Ｉ／Ｏ部１４とを接続する。
【００２５】
また、演算処理装置１は図示しないネットワークを介して、例えば、図示しない管理者の管理端末と接続されてもよい。
【００２６】
〔１−２〕一実施形態に係る演算処理装置における順序保証試験のハードウェア構成例
本演算処理装置における順序保証試験のハードウェア構成例について、図２を用いて説明する。
【００２７】
図２は、図１に示す実施形態の一例としての演算処理装置１における順序保証試験のハードウェア構成を例示する図である。
【００２８】
この図２に例示するように、本実施形態では、２つのプロセッサ１０を組み合わせてペア（１組）を構成し、このペア単位で順序保証試験を実施するものとする。
【００２９】
図２には、ＣＰＵ＃０とＣＰＵ＃１、ＣＰＵ＃２とＣＰＵ＃３、ＣＰＵ＃８とＣＰＵ＃９を組み合わせて、それぞれ、ペア＃１，ペア＃２，ペア＃５を構成して、これらのペア単位で順序保証試験を実施する場合を例示している。なお、本実施形態では、ＣＰＵ番号が隣り合わせのプロセッサ１０同士をペアとして組み合わせるものとしたが、組み合わせの方法はこれに限られない。
【００３０】
このペアのうち、一方のプロセッサ１０を試験対象となるプロセッサ１０、すなわち、試験対象プロセッサ１０として機能させ、他方のプロセッサ１０を追い越しの状況を発生させるプロセッサ１０、すなわち、試験補助プロセッサ１０として機能させる。図２には、ＣＰＵ番号が偶数のプロセッサ１０（例えば、ＣＰＵ＃０，＃２，＃８）を試験対象プロセッサ１０として機能させ、ＣＰＵ番号が奇数のプロセッサ１０（例えば、ＣＰＵ＃１，＃３，＃９）を試験補助プロセッサ１０として機能させる場合を例示する。この試験対象プロセッサ１０を第一プロセッサともいい、また、試験補助プロセッサ１０を第二プロセッサともいう。
【００３１】
なお、本実施形態では、各ペアにおいて、ＣＰＵ番号が小さい、又は、ＣＰＵ番号が偶数のプロセッサ１０（ＣＰＵ＃０，＃２，＃８）を試験対象プロセッサ１０に割り当てたが、これに限られない。また、本実施形態では、各ペアにおいて、ＣＰＵ番号が大きい、又はＣＰＵ番号が奇数のプロセッサ１０（ＣＰＵ＃１，＃３，＃９）を試験補助プロセッサ１０に割り当てたが、これに限られない。
【００３２】
メモリ１２は、図２に例示するように、ペア毎に、試験対象領域１２１、及び、ロード値保存領域１２２を備える。試験対象領域１２１は、ロード命令、又は、ストア命令のアクセス先の値が格納される領域であり、この試験対象領域１２１はストア命令によって値が書き込まれる。また、ロード値保存領域１２２は、ロード命令により読み出した値（ロード値）がまとめて格納される領域であり、このロード値保存領域１２２はストア命令によって値が書き込まれる。
【００３３】
なお、各ペアに含まれる試験対象プロセッサ１０と試験補助プロセッサ１０とは、メモリ１２上の試験対象領域１２１とロード値保存領域１２２とを共通に用いるものとする。また、試験対象領域１２１に格納された値を格納値という場合がある。
【００３４】
〔１−３〕一実施形態に演算処理装置における機能構成例
本演算処理装置における機能構成について、図４〜図８を参照しながら、図３を用いて説明する。
【００３５】
図３は、図２に示す実施形態の一例としての演算処理装置１の機能構成を例示する図である。
【００３６】
また、図４は、初期化部２１による処理を例示する図であり、図５は、連続ロード命令発行部２５、待機命令発行部３１、及び、補助ストア命令発行部３２による各処理を例示する図である。また、図６は、結果保存部２６による処理を例示する図である。また、図７は、後のロード命令による先のロード命令の追い越しが発生していない場合の概念図であり、図８は、後のロード命令による先のロード命令の追い越しが発生した場合の概念図である。
【００３７】
なお、図３〜図８には、試験対象プロセッサ１０としてＣＰＵ＃０（１０−０）を機能させ、試験補助プロセッサ１０としてＣＰＵ＃１（１０−１）を機能させた場合の順序保証試験を例示したが、他のＣＰＵ１０のペアにおいても並行して試験が行なわれてもよい。その場合、ＣＰＵ＃０とＣＰＵ＃１が用いるメモリ１２上の試験対象領域１２１やロード値保存領域１２２以外の領域を用いるものとする。
【００３８】
まず、本演算処理装置１における試験対象プロセッサ１０の機能構成について説明する。
【００３９】
図３に示すように、試験対象プロセッサ１０は、初期化部２１、試験部２２、後処理部２３、及び、エラー通知部２４としての機能を備え、この試験部２２は、連続ロード命令発行部２５、結果保存部２６、及び、エラーチェック部２７としての機能を備える。
【００４０】
初期化部２１は、試験対象領域１２１を初期化すべく、試験対象領域１２１に対してストア命令を発行し、所定の値（初期値）を格納する。例えば、初期化部２１は、図４に示すように、試験対象領域１２１に対して“０ｘ０”を格納する。
【００４１】
また、この初期化部２１は、後述する連続ロード命令発行部２５によって連続して発行されるロード命令の回数を示すＮの値も“０”に初期化する。
【００４２】
試験部２２は、本順序保証試験における命令を発行し、その結果を保存するまでの処理を行なう。具体的に、試験部２２は、図３に例示するように、連続ロード命令発行部２５、結果保存部２６、及び、エラーチェック部２７を備えてもよい。次に各機能構成について説明する。
【００４３】
連続ロード命令発行部２５は、試験対象領域１２１における同一のアドレスに対し、所定回数連続してロードさせる連続ロード命令を発行する。この連続ロード命令により、データをそれぞれ読み出す複数のロード命令が所定回数連続して発行される。本実施形態では、試験対象プロセッサ１０であるＣＰＵ＃０のレジスタ（図示省略）のうち、ロード値を保存可能なレジスタの数をＮ個（Ｎは１以上の整数）とすると、１回の連続ロード命令ではＮ回の連続したロード命令を発行するものとする。なお、このロード値を保存可能なレジスタの数（Ｎ個）はプロセッサ１０の種類等によって異なってもよく、この場合、連続したロード命令に含まれる個々のロード命令の数はＮ回となる。
【００４４】
この連続ロード命令発行部２５による処理について、図５の例示を用いて説明する。図５に例示するように、連続ロード命令発行部２５は、試験対象領域１２１における同一のアドレスに対し、連続した複数のロード命令（Ｌｏａｄ＃１〜＃５）を発行する。本例では、試験対象プロセッサ１０において、ロード値を保存可能なレジスタの数は５つ（Ｎは５）であるものとする。このように、連続したロード命令に含まれる各ロード命令は、メモリ１２の試験対象領域１２１上の同一のアドレスにアクセスするものである。したがって、当該アドレスによって特定される領域に格納される値に変更がなければ、初期化部２１により初期値（“０ｘ０”）を読み出すことになる。この初期値を“Ｏｌｄ”ともいう。
【００４５】
また、図５に例示するように、試験対象プロセッサ１０による１回目〜３回目のロード命令（Ｌｏａｄ＃１〜＃３）の後、例えば、試験補助プロセッサ１０によって、当該ロード命令のアクセス先のアドレスに対してストア命令が発行されたとする（後述）。そして、このストア命令により、ロード命令のアクセス先のアドレスの値が、初期値（“Ｏｌｄ”）から“０ｘｆ”に書き換わったとする。このストア命令により書き込まれた値をストア値、又は、“Ｎｅｗ”ともいう。このような場合、試験対象プロセッサ１０は、４回目〜５回目のロード命令（Ｌｏａｄ＃４，＃５）によるロード値として、“０ｘｆ”（“Ｎｅｗ”）を得ることになる。
【００４６】
結果保存部２６は、上述した連続ロード命令発行部２５による連続したロード命令によって読み出されたＮ回分の結果であるロード値をまとめ（連結し）、連結したロード値、すなわち、連結ロード値を生成する。そして、結果保存部２６は、例えば、ストア命令を発行し、連結ロード値をロード値保存領域１２２に格納（保存）させる。
【００４７】
この結果保存部２６による処理について、図６の例示を用いて説明する。図６は、１回目〜３回目のロード命令（Ｌｏａｄ＃１〜＃３）によるロード値がすべて“０ｘ０”であり、４回目〜５回目のロード命令（Ｌｏａｄ＃４，＃５）によるロード値が共に“０ｘｆ”であることを例示している。結果保存部２６は、図６に例示するように、これら各ロード命令によるロード値を順番どおりに連結し、例えば、５バイトのデータ長をもつ連結ロード値（“０ｘ０００００００ｆ０ｆ”）を作成する。そして、結果保存部２６は、例えば、ストア命令を発行し、この作成した連結ロード値をロード値保存領域１２２に格納させる。
【００４８】
なお、後述するが、試験補助プロセッサ１０によるストア命令の発行後、試験対象プロセッサ１０による連結ロード値の格納をＭ回（Ｍは０以上の整数）繰り返した時点で、試験対象プロセッサ１０と試験補助プロセッサ１０とは、試験完了保証の同期をとる。この試験完了保証同期も、図示しないクロック発生器等を用いるものとする。したがって、図６に例示するように、試験補助プロセッサ１０は、試験対象プロセッサ１０による連結ロード値の格納が完了するまでは、試験完了保証の同期待ちの状態となる。
【００４９】
エラーチェック部２７は、結果保存部２６によってメモリ１２のロード値保存領域１２２に格納された値（連結ロード値）に基づき、当該順序保証試験におけるエラー発生の有無を判定する。エラーチェック部２７は、ロード値保存領域１２２に格納された連結ロード値から、連続ロード命令に含まれる各ロード命令によって読み出されたロード値を時系列順に抽出し、その変化を確認してもよい。なお、本実施形態において、エラーチェック部２７よって判定されるエラーを異常ともいい、例えば、追い越しの発生を表す。
【００５０】
ここで、図７を用いて、後のロード命令による先のロード命令の追い越しが発生していない場合のエラーチェック部２７による処理について説明する。
【００５１】
図７は、後のロード命令による先のロード命令の追い越しが発生していない場合の概念図である。図７には、ロード値保存領域１２２に格納された各ロード値を、ロードされた順番に上から模式的に並べて表示してある。
【００５２】
この図７では、１回目，２回目のロード値が“Ｏｌｄ”（初期値）であり、しばらくロード値として“Ｏｌｄ”が継続することを例示している。その後、当該ロード命令のアクセス先のアドレスと同一のアドレスに対し、試験補助プロセッサ１０によってストア命令が発行され、試験対象領域１２１に初期値とは異なる値である“Ｎｅｗ”が格納されたとする。すなわち、試験対象領域１２１の格納値が初期値“Ｏｌｄ”から“Ｎｅｗ”に書き換えられたとする（図７の矢印“変化”参照）。このような場合、当該ストア命令の発行された後に、試験対象プロセッサ１０がロード命令を発行すると、ロード値が当該ストア命令によるストア値になることが期待される。すなわち、ストア命令の発行された後のロード値が“Ｏｌｄ”から“Ｎｅｗ”に変わった後には、そのまま初期値に戻らないことが望ましい。
【００５３】
図７の例示においても、試験補助プロセッサ１０によるストア命令が発行された後のロード値がすべて“Ｎｅｗ”であることから、期待値が得られていることがわかる。このように期待値が得られるということは、当該プロセッサの順序保証試験においては、同一のアドレスに対するアクセスの追い越しが行なわれていないことがわかる。したがって、このような場合には、エラーチェック部２７は、後のロード命令による先のロード命令の追い越しが発生していないと判定する。
【００５４】
次に、図８を用いて、後のロード命令による先のロード命令の追い越しが発生している場合のエラーチェック部２７による処理について説明する。
【００５５】
図８は、後のロード命令による先のロード命令の追い越しが発生している場合の概念図である。図８は、図７と同様に、ロード値保存領域１２２に格納された各ロード値を、ロードされた順番に上から模式的に並べて表示してある。また、この図８においても、１回目，２回目のロード値が“Ｏｌｄ”（初期値）であり、しばらくロード値が“Ｏｌｄ”のままであることを例示している。
【００５６】
図８では、図７とは異なり、試験補助プロセッサ１０によるストア命令発行の後、ロード値が“Ｏｌｄ”から“Ｎｅｗ”に変わり（図８の矢印“１回目変化”参照）、その後“Ｎｅｗ”から“Ｏｌｄ”に再度戻ったことを例示している（図８の矢印“２回目変化”参照）。このように、試験補助プロセッサ１０によるストア命令が発行された後、ロード命令と同一のアドレスに対するストア命令が何ら発行されていないにも関わらず、ロード値が“Ｏｌｄ”に戻っている場合には、期待値が得られていないといえる。このように、エラーチェック部２７は、ロード値が２回（以上）変化していた場合には、後のロード命令による先のロード命令の追い越しが発生したと判定する。
【００５７】
後処理部２３は、本順序保証試験終了後に後処理を行なう。例えば、試験結果の出力用データの作成を行なう。この試験終了後に行なう後処理は公知であるためここではその説明を省略する。
【００５８】
エラー通知部２４は、エラーチェック部２７によって得られた、追い越しのエラー発生の有無について、例えば、当該順序保証試験や演算処理装置１の管理者に対して通知する。
【００５９】
次に、本演算処理装置１における試験補助プロセッサ１０（ＣＰＵ＃１）の機能構成について説明する。
【００６０】
図３に示すように、試験補助プロセッサ１０は、待機命令発行部３１、及び、補助ストア命令発行部３２を備えてもよい。
【００６１】
待機命令発行部３１は、試験対象プロセッサ１０による連続ロード命令の発行中に、試験補助プロセッサ１０によるストア命令が発行できるように、自身（ＣＰＵ＃１）に対して待機命令（Ｗａｉｔ命令）を所定回数発行しロード命令（の数回分）の発行を待機する。
【００６２】
また、待機命令発行部３１は、種々のパターンの試験を実施できるようにするため、ストア命令の発行タイミング（ストア命令発行タイミング）を変更させる。具体的に、待機命令発行部３１は、連続ロード命令をＭ回繰り返す（後述）度に、待機命令発行部３１によるＷａｉｔ命令の発行回数Ｐ（Ｐは０以上の整数）を増加させていくことで、このストア命令発行タイミングを変更する。
【００６３】
そして、待機命令発行部３１は、連続ロード命令がＭ回繰り返された後に、Ｗａｉｔ命令の発行回数Ｐを変更する処理をＬ回（Ｌは１以上の整数）繰り返すものとする。また、このＬをストア命令の繰り返し回数、又は、ずらし範囲ともいい、このＬには順序保証できるだけの値が格納されるものとする。
【００６４】
この待機命令発行部３１による処理について、図５を用いて説明する。図５は、待機命令発行部３１が、自身に対してＷａｉｔ命令を２回発行し、連続ロード命令発行部２５による１回目〜３回目のロード命令（Ｌｏａｄ＃１〜＃３）の間、自身を待機させることを例示している。
【００６５】
例えば、図５に示すように、試験対象プロセッサ１０により発行されるロード命令が５つ（Ｌｏａｄ＃１〜＃５）の場合、試験補助プロセッサ１０によって発行されるストア命令は、本順序保証試験の性質上、すべてのパターンを網羅するものであることが望ましい。
【００６６】
具体的には、Ｌｏａｄ＃１の直前、Ｌｏａｄ＃１とＬｏａｄ＃２との間，Ｌｏａｄ＃２とＬｏａｄ＃３との間，Ｌｏａｄ＃３とＬｏａｄ＃４との間，Ｌｏａｄ＃４とＬｏａｄ＃５との間でそれぞれストア命令を発行する試験を行なうことが望ましい。したがって、上述の場合５種類のパターンを試験することになる。
【００６７】
なお、本試験の対象となるロード命令の範囲（図５の例ではＬｏａｄ＃１〜Ｌｏａｄ＃５）にしたがって繰り返し回数Ｌの値を決定するものとする。また、本実施形態では、連続したロード命令が終了した後にストア命令が発行される状況を回避するため、Ｌｏａｄ＃５の直後にストア命令が発行されるパターンの試験は実施しないものとする。したがって、連続ロード命令の繰り返し回数Ｍの値は、ストア命令の繰り返し回数Ｌによって決まり、ストア命令の繰り返し回数Ｌの値よりも大きいものとする。
【００６８】
また、例えばＬｏａｄ＃１とＬｏａｄ＃２との間でストア命令を発行する試験の後、Ｌｏａｄ＃２とＬｏａｄ＃３との間でストア命令を発行する試験を行なう場合、待機命令発行部３１は、先の試験にて発行した数よりも多くのＷａｉｔ命令を発行させる必要がある。したがって、待機命令発行部３１は、Ｗａｉｔ命令の実行回数Ｐを変化させてストア命令発行タイミングを変更することにより、本順序保証試験において種々のパターンを検証できるようにする。
【００６９】
このようにして、試験対象プロセッサ１０の連続ロード命令発行部２５は、Ｎ回の連続したロード命令を発行する連続ロード命令をＭ回繰り返す。その間、試験補助プロセッサ１０では、待機命令発行部３１がＰ回の待機命令を発行し、その後、補助ストア命令発行部３２が１回のストア命令を発行する。そして、この一連の処理を、ストア命令の繰り返し回数（Ｌ回）分繰り返して、処理を終了する。したがって、一連の処理が終了するまでには、Ｍ×Ｎ回分のロード命令が、Ｌ回繰り返されることになる。
【００７０】
補助ストア命令発行部３２は、上述した待機命令発行部３１によって発行された待機命令により、試験対象プロセッサ１０によって発行されたロード命令を任意の時間待機した後、ストア命令を１回発行する。この補助ストア命令発行部３２によるストア命令は、試験対象領域１２１に対して所定の値を格納するものであり、この値は、初期化部２１によるストア命令により格納された値とは異なる。
【００７１】
図５では、この補助ストア命令発行部３２は、試験対象プロセッサ１０による３回目のロード命令の後に、補助ストア命令発行部３２がストア命令を発行した場合を例示している。また、補助ストア命令発行部３２が発行するストア命令により格納された値は“０ｘｆ”であり、補助ストア命令発行部３２によるストア命令により格納された値（“０ｘ０”）とは異なることを例示している。なお、補助ストア命令発行部３２は、ストア命令発行タイミングにおいてこのようなストア命令を発行するものとする。
【００７２】
なお、上述した各機能構成の処理は、メモリ１２に格納される試験プログラム１００を実行することにより実現される。
【００７３】
〔１−４〕一実施形態に係る演算処理装置における順序保証試験の制御処理
上述の如く構成された実施形態の一例として、演算処理装置１における順序保証試験の制御処理を、図９に示すフローチャート（ステップＳ１〜Ｓ１６）に従って説明する。なお、ここでは、順序保証試験として、同一アドレスに対するアクセス試験について説明する。
【００７４】
図９は、一実施形態に係る演算処理装置１における順序保証試験の制御処理を説明するためのフローチャートである。
【００７５】
この図９を用いて、本実施形態における順序保証試験である、同一アドレスに対するアクセス試験の内容について説明する。本実施形態では、上述したとおり、２つのプロセッサ１０を組み合わせたペア単位で試験を実施するものとし、図９には、ＣＰＵ＃０とＣＰＵ＃１との２つのプロセッサ１０をペアとして試験を実施する場合を例示している。
【００７６】
また、ＣＰＵ＃０とＣＰＵ＃１とは、メモリ１２上の同一の試験対象領域１２１を用いる。
【００７７】
ステップＳ１において、初期化部２１は、これから行なう試験（試験対象）が、同一アドレスへの追い越しの有無を検証するものであるかを判定する。この手法は公知であるため、ここでは説明を省略する。
【００７８】
また、ステップＳ１において、試験対象が同一アドレスの追い越しであると判定した場合（ステップＳ１におけるＹｅｓルート参照）、処理がステップＳ２に移行する。一方、試験対象が同一アドレスの追い越しではないと判定した場合（ステップＳ１におけるＮｏルート参照）、処理が終了する。
【００７９】
続くステップＳ２において、待機命令発行部３１は、ストア命令の繰り返し回数Ｌの値を設定する。この手法は公知であるため、ここでは説明を省略する。
【００８０】
続くステップＳ３において、連続ロード命令発行部２５は、ステップＳ１において設定されたストア命令の繰り返し回数Ｌに基づき、連続ロード命令の繰り返し回数Ｍを決定する。
【００８１】
続くステップＳ４において、連続ロード命令発行部２５は、試験対象プロセッサ１０であるＣＰＵ＃０のレジスタの個数（Ｎ）に基づき、連続して発行させるロード命令の回数Ｎを決定する。
【００８２】
続くステップＳ５において、待機命令発行部３１は、Ｗａｉｔ命令の実行回数Ｐの値を０に初期化する。
【００８３】
続くステップＳ６において、まず、各ペアを構成する２つのプロセッサ１０のうち、一方を試験対象プロセッサ１０に割り当て、他方を試験補助プロセッサ１０に割り当てる。ここでは、ペア＃１のうち、ＣＰＵ＃０を試験対象プロセッサ１０に割り当て、ＣＰＵ＃１を試験補助プロセッサ１０に割り当てた場合を例にとり説明する。
【００８４】
続くステップＳ７では、試験対象プロセッサ１０のエラーチェック部２７は、ロード値がすべて“Ｏｌｄ”であるかを判断する。本試験の試験開始時には、ロード値、すなわち、ロード値保存領域１２２に格納されている各ロード値は、すべて“Ｏｌｄ”ではないものとする。
【００８５】
このステップＳ７において、ロード値がすべて“Ｏｌｄ”ではないと判定した場合（ステップＳ７におけるＮｏルート）、処理がステップＳ８に移行する。
【００８６】
続くステップＳ８において、試験対象プロセッサ１０の初期化部２１は、メモリ１２の試験対象領域１２１を初期化すべく、試験対象領域１２１に対してストア命令を発行し、初期値（例えば、“０ｘ０”）を格納する。また、初期化部２１は、連続ロード命令発行部２５によって連続して発行されるロード命令の回数を示すＮの値も“０”に初期化する。
【００８７】
続くステップＳ９において、試験対象プロセッサ１０と試験補助プロセッサ１０とは、図示しないクロック発生器等を用いて試験開始の同期をとる。
【００８８】
このステップＳ９における試験開始同期の後、順序保証試験が開始される。この順序保証試験について、試験対象プロセッサ１０側での処理（ステップＳ１０，Ｓ１３〜Ｓ１５）と、試験補助プロセッサ１０側での処理（ステップＳ１１〜Ｓ１３，Ｓ１６）とについてそれぞれ以下説明する。まず、試験対象プロセッサ１０側での順序保証試験について説明する。
【００８９】
試験対象プロセッサ１０側では、ステップＳ１０において、連続ロード命令発行部２５が、同一アドレスに対して連続ロード命令をＭ回発行する。すなわち、連続ロード命令発行部２５は、連続したＮ回のロード命令の発行をＭ回繰り返す。そして、結果保存部２６が、連続ロード命令をＭ回発行した結果であるロード値を用いて連結ロード値を生成し、この連結ロード値をロード値保存領域１２２に格納する（図５，図６参照）。このステップＳ１０の具体的な処理について、図１０に示すフローチャート（ステップＴ１〜Ｔ４）に従って説明する。
【００９０】
図１０は、一実施形態に係る演算処理装置１での試験対象プロセッサ１０における順序保証試験による処理を説明するフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００９１】
上述した図９のステップＳ９に示す試験開始同期の後、図１０のステップＴ１において、連続ロード命令発行部２５は、自身による連続ロード命令の発行をＭ回繰り返す。連続ロード命令の発行をＭ回繰り返した場合には（ステップＴ１におけるＹｅｓルート参照）、処理が図９のステップＳ１３に移行する。一方、連続ロード命令の発行をＭ回繰り返していない場合には（ステップＴ１におけるＮｏルート参照）、処理がステップＴ２に移行する。なお、初回実行時にはまだ連続ロード命令の繰り返しを行なっていないので、処理がステップＴ２に移行する。
【００９２】
ステップＴ２において、連続ロード命令発行部２５は、自身によるロード命令をＮ回発行したか否かを確認する。ロード命令をＮ回発行した場合（ステップＴ２におけるＹｅｓルート参照）、処理がステップＴ４に移行する。一方、ロード命令をＮ回発行していない場合（ステップＴ２におけるＮｏルート参照）、処理がステップＴ３に移行する。なお、初回実行時にはまだロード命令を発行していないので、処理がステップＴ３に移行する。
【００９３】
ステップＴ３において、連続ロード命令発行部２５は、同一アドレスである試験対象領域１２１に対するロード命令を発行する。そして、ステップＴ２に戻る。すなわち、連続ロード命令発行部２５は、同一アドレスである試験対象領域１２１に対するロード命令をＮ回発行する。
【００９４】
ステップＴ４において、結果保存部２６は、上述したステップＴ３において行なったＮ回のロード命令によるロード値をまとめて連結ロード値を生成し、連結ロード値をロード値保存領域１２２に格納する。そして、処理がステップＴ１に戻る。すなわち、結果保存部２６は、Ｎ個のロード値が得られる度に、連結ロード値を生成し、ロード値保存領域１２２に格納する。
【００９５】
このように、試験対象プロセッサ１０側での順序保証試験は、上記ステップＴ２〜Ｔ４に示す、Ｎ回のロード命令の発行と連結ロード値の格納をＭ回繰り返すことにより（ステップＴ１）実施される。
【００９６】
次に、図９に示す順序保証試験の制御処理に関する説明に戻り、試験補助プロセッサ１０側での処理について説明する。
【００９７】
ステップＳ１１において、試験補助プロセッサ１０側では、上述した図９のステップＳ９に示す試験開始同期の後、待機命令発行部３１が、待機命令（Ｗａｉｔ命令）をＰ回発行して、自身を待機させる。
【００９８】
続くステップＳ１２において、補助ストア命令発行部３２は、同一アドレスである試験対象領域１２１に対するストア命令を１回発行する。なお、この補助ストア命令発行部３２が発行するストア命令により試験対象領域１２１に格納される値（例えば、“０ｘｆ”）は、初期化部２１によるストア命令により格納された値（“０ｘ０”）とは異なるものでなければならない。
【００９９】
ステップＳ１３において、試験補助プロセッサ１０によるストア命令の発行の後、試験対象プロセッサ１０によるＭ回の連続ロード命令の発行が完了した時点で、図示しないクロック発生器等を用いて、両者は試験完了保証の同期をとる。
【０１００】
ステップＳ１４において、試験対象プロセッサ１０のエラーチェック部２７は、ロード値が２回（以上）変化しているか否かを判定する。このステップＳ１４の具体的な処理について、図１１に示すフローチャート（Ｑ１〜Ｑ１２）に従って説明する。
【０１０１】
図１１は、一実施形態に係る演算処理装置１での試験対象プロセッサ１０におけるエラーチェック部２７による処理を例示する図である。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【０１０２】
ステップＱ１において、試験対象プロセッサ１０のエラーチェック部２７は、エラー検出フラグＦ１を０に初期化する。このエラー検出フラグＦ１とは、エラーチェック部２７によってロード値の変化が検出されたか否かを示すものである。
【０１０３】
例えば、エラー検出フラグＦ１の値が１であることは、エラーチェック部２７によって追い越しの発生（エラー）が検出されたことを示す。一方、エラー検出フラグＦ１の値が０であることは、エラーチェック部２７によって追い越しの発生（エラー）が検出されなかったことを示す。なお、エラー検出フラグＦ１については、図示していないが、例えば、メモリ１２に格納されてもよく、エラーチェック部２７がエラー検出フラグＦ１の値（０又は１）を設定するものとする。
【０１０４】
続くステップＱ２において、試験対象プロセッサ１０のエラーチェック部２７は、ストア命令反映フラグＦ２を０に初期化する。このストア命令反映フラグＦ２とは、エラーチェック部２７が、試験補助プロセッサ１０の補助ストア命令発行部３２によるストア命令の発行が行なわれたと推測したか、又は、当該ストア命令の発行が行なわれなかったと推測したことを示すものである。エラーチェック部２７は、この推測を、ロード値の変化に基づき行なうものとする。
【０１０５】
例えば、ストア命令反映フラグＦ２の値が１であることは、補助ストア命令発行部３２によってストア命令が発行されたと推測されたことを示す。一方、ストア命令反映フラグＦ２の値が０であることは、補助ストア命令発行部３２によってストア命令が発行されなかったと推測されたことを示す。なお、ストア命令反映フラグＦ２については、図示していないが、例えば、メモリ１２に格納されてもよく、エラーチェック部２７が、ロード値の変化に基づき、ストア命令反映フラグＦ２の値（０又は１）を設定するものとする。
【０１０６】
続くステップＱ３において、エラーチェック部２７は、今回、上記ステップＳ１０〜Ｓ１２に示す処理を経ることにより得られたすべての連結ロード値をロード値保存領域１２２から取得する。そして、エラーチェック部２７は、取得した連結ロード値に含まれる各（複数の）ロード値を時系列順に抽出する。
【０１０７】
続くステップＱ４において、エラーチェック部２７は、すべてのロード値をチェックしたかを判定する。すべてのロード値をチェックした場合（ステップＱ４におけるＹｅｓルート参照）、エラーチェック部２７での処理が終了し、処理が図９に示すステップＳ１５に移行する。一方、すべてのロード値をチェックしていない場合（ステップＱ４におけるＮｏルート参照）、処理がステップＱ５に進む。なお、初回実行時には、まだロード値をチェックしていないので、処理がステップＱ５に進む。
【０１０８】
ステップＱ５において、エラーチェック部２７は確認対象を選択する。この確認対象とは、ステップＱ３において抽出されたロード値であり、ステップＱ４以降の処理において、追い越しの判定対象となるロード値である。なお、初回実行時には、最初に読み出されたロード値を確認対象とする。
【０１０９】
続くステップＱ６において、エラーチェック部２７は、ストア命令反映フラグＦ２が１であるか否かを判定する。ストア命令反映フラグＦ２が１であると判定した場合（ステップＱ６におけるＹｅｓルート参照）、処理がステップＱ７に移行する。
【０１１０】
ステップＱ７において、エラーチェック部２７は、ロード値が“Ｏｌｄ”であるか否かを判定する。ストア命令反映フラグＦ２が１であるということは、補助ストア命令発行部３２によってストア命令が発行されたと推測でき、当該ストア命令の後に発行されたロード値が“Ｎｅｗ”に変化することが期待される。したがって、ステップＱ７にて、ロード値が“Ｏｌｄ”ではなく“Ｎｅｗ”に変化したと判定された場合（ステップＱ７におけるＮｏルート参照）、エラーチェック部２７は、期待値が得られたと判断する。そして、処理がステップＱ１２に移行する。
【０１１１】
一方、エラーチェック部２７は、ロード値が“Ｏｌｄ”のままであると判定した場合（ステップＱ７におけるＹｅｓルート参照）、補助ストア命令発行部３２によるストア命令により格納された値（“Ｎｅｗ”）がロードされず、期待値が得られなかったと判断する。すなわち、ロード値が、“Ｏｌｄ”から“Ｎｅｗ”へ変化し、その後、“Ｎｅｗ”から“Ｏｌｄ”に変化するという、２回の値の変化が発生したと推測される。そこで、エラーチェック部２７は、追い越しが発生したと判断する。そして、処理がステップＳＱ８に移行する。
【０１１２】
ステップＱ８において、エラーチェック部２７は、エラー検出フラグＦ１の値を１に設定し、処理がステップＳ９に移行する。
【０１１３】
続くステップＱ９において、試験対象プロセッサ１０のエラー通知部２４は、エラーチェック部２７によって追い越しが発生したと判定されたことから、例えば、当該順序保証試験や演算処理装置１の管理者に対してその旨を通知する。そして、処理が図９のステップＳ１５に移行する。
【０１１４】
一方、ステップＱ６において、ストア命令反映フラグＦ２が１ではないと判定した場合（ステップＱ６におけるＮｏルート参照）、処理がステップＱ１０に移行する。
【０１１５】
続くステップＱ１０において、エラーチェック部２７は、ロード値が“Ｎｅｗ”であるか否かを判定する。ロード値が“Ｎｅｗ”であると判定した場合（ステップＱ１０におけるＹｅｓルート参照）、処理がステップＳ１１に移行する。
【０１１６】
続くステップＱ１１では、エラーチェック部２７は、ストア命令反映フラグＦ２の値を１に設定する。これは、上記ステップＱ１０にて、ロード値が“Ｎｅｗ”であると判定したということは、試験対象領域１２１に格納されている値に変化があったことになり、補助ストア命令発行部３２によってストア命令が発行されたと推測したためである。
【０１１７】
一方、上記ステップＱ１０において、“Ｎｅｗ”ではない（“Ｏｌｄ”のまま）と判定した場合（ステップＱ１０におけるＮｏルート参照）、ステップＱ１１をスキップし、処理がステップＱ１２に移行する。これは、試験対象領域１２１に格納される値に変化がなかったことから、エラーチェック部２７は、補助ストア命令発行部３２によってストア命令が発行されなかったと推測されるためである。
【０１１８】
ステップＱ１２において、エラーチェック部２７は、今回のチェック対象となったロード値の次に読み込まれたロード値を、（次回の）確認対象として選択する。その後、ステップＱ４に戻る。
【０１１９】
以上のように、図１１に示すフローチャートに従うと、ロード値が２回（以上）変化した場合には、まず、ステップＱ１０において１回目の変化（“Ｏｌｄ”から“Ｎｅｗ”）が検出される。そして、ステップＱ１１において、ストア命令反映フラグＦ２の値が１に設定される。そして、次のループでは、ステップＱ６において、ストア命令反映フラグＦ２の値が１であることから、処理がステップＱ７に移行する。このステップＱ７において、ロード値が“Ｏｌｄ”であるか否かが判定されるが、仮に、現時点で２回目の変化が既に発生している場合には、ロード値が“Ｎｅｗ”から“Ｏｌｄ”に戻るという状況が発生する（期待値は“Ｎｅｗ”のまま）。この場合、ステップＱ７において、ロード値が“Ｏｌｄ”である（“Ｏｌｄ”に戻った）と判定され、ステップＱ７におけるＹｅｓルートを経て、ロード値の２回の変化、すなわち、追い越しの発生（エラー）を検出することが可能となる。
【０１２０】
図９に示す順序保証試験の制御処理に関する説明に戻る。ステップＳ１５では、ステップＳ１４において追い越しの発生が検出されたか否か、すなわち、エラーが検出されたか否かを判定する。具体的には、エラーチェック部２７は、エラー検出フラグＦ１の値が１であるかを確認する。エラーが検出された場合（ステップＱ１５におけるＹｅｓルート参照）、エラー終了する。一方、エラーが検出されなかった場合（ステップＱ１５におけるＮｏルート参照）、処理がステップＳ７に戻る。
【０１２１】
ステップＳ１６では、試験補助プロセッサ１０において、待機命令発行部３１がＰの値をインクリメントし、処理がステップＳ７に戻ることにより、次のパターンでの順序保証試験を継続する。
【０１２２】
また、上記ステップＳ７において、エラーチェック部２７は、ロード値がすべて“Ｏｌｄ”であると判定した場合（ステップＳ７におけるＹｅｓルート）、処理が終了する。  
【０１２３】
〔２〕実施形態の変形例
上記図１〜図１１では２つのプロセッサ１０で構成されるペア単位で順序保証試験を実施するものとしたが、本変形例では、マルチコアのプロセッサ１０を備える演算処理装置１にて、２つのコアで構成されるペア単位で実施する順序保証試験について説明する。
【０１２４】
〔２−１〕実施形態の変形例に係る演算処理装置のハードウェア構成例
図１２は、実施形態の変形例に係る演算処理装置１のハードウェア構成を例示する図である。
【０１２５】
本変形例に係る演算処理装置１は、上述した一実施形態と同様に、複数のＣＰＵ１０を備えるマルチプロセッサ構成であり、記憶部１１、メモリ１２、ＩＦ部１３、及び、Ｉ／Ｏ部１４備えてよい。また、上述した一実施形態と同様に、演算処理装置１は、１つ以上のＣＰＵ１０−０（ＣＰＵ＃０），ＣＰＵ１０−１（ＣＰＵ＃１），・・・，ＣＰＵ１０−ｎ（ＣＰＵ＃ｎ；ｎは０以上の整数）を備え、任意のＣＰＵを指すときには符号１０を用いる。なお、記憶部１１、メモリ１２、ＩＦ部１３、及び、Ｉ／Ｏ部１４については上述した一実施形態と同様であるので、説明を省略する。
【０１２６】
本変形例に係るＣＰＵ１０は、マルチコア構成であり、図１２に示す本変形例では、各ＣＰＵ１０が１１個のコア１７−０〜１７−１０を備えるものとする。図１２に示すように、ＣＰＵ＃０は、コア１７−０〜コア１７−１０の１１個のコア１７を備える。また、コアの符号“＃”に付される数字である、“０”，“１”，“２”，・・・，“１０”は単にコア番号ともいう。
【０１２７】
以下、コアを示す符号としては、複数のコアのうち１つを特定する必要があるときには符号１７−０，・・・，１７−１０を用い、任意のコアを指すときには符号１７を用いる。なお、本変形例では、各ＣＰＵ１０が１１個のコア１７を備えるものとしたが、各ＣＰＵ１０は、１０個以下、又は、１２個以上のコア１７を備えてもよい。
〔２−２〕変形例に係る演算処理装置における順序保証試験のハードウェア構成例
本変形例に係る演算処理装置１における順序保証試験のハードウェア構成例について、図１３を用いて説明する。
【０１２８】
図１３は、図１２に示す変形例としての演算処理装置１における順序保証試験のハードウェア構成を例示する図である。
【０１２９】
この図１３に例示するように、本変形例では、２つのコア１７を組み合わせてペアを構成し、このペア単位で順序保証試験を実施するものとする。
【０１３０】
図１３には、コア＃０とコア＃１、コア＃２とコア＃３、コア＃８とコア＃９を組み合わせて、それぞれ、ペア＃１，ペア＃２，ペア＃５を構成して、これらのペア単位で順序保証試験を実施する場合を例示している。なお、本変形例では、コア番号が隣り合わせのコア１７同士をペアとして組み合わせるものとしたが、組み合わせの方法はこれに限られない。なお、図１３は、ＣＰＵ＃０の備えるコア１７を組み合わせてペアを構成する場合を例示したが、ＣＰＵ＃０の備えるコア１７と他のＣＰＵ１０備えるコア１７とを組み合わせて同様にペアを構成してもよい。
【０１３１】
このペアのうち、一方のコア１７を試験対象となるコア１７、すなわち、試験対象コア１７として機能させ、他方のコア１７を追い越しの状況を発生させるコア１７、すなわち、試験補助コア１７として機能させる。図１３には、コア＃０，＃２，＃８を試験対象コア１７として機能させ、コア＃１，＃３，＃９を試験補助コア１７として機能させる場合を例示する。
【０１３２】
なお、本変形例では、各ペアにおいて、コア番号が小さい、又は、コア番号が偶数のコア１７（コア＃０，＃２，＃８）を試験対象コア１７に割り当てたが、これに限られない。また、本変形例では、各ペアにおいて、コア番号が大きい、又は、コア番号が奇数のコア１７（コア＃１，＃３，＃９）を試験補助コア１７に割り当てたが、これに限られない。
【０１３３】
また、メモリ１２は、図１３に例示するように、ペア毎に、試験対象領域１２１、及び、ロード値保存領域１２２を備える。試験対象領域１２１，ロード値保存領域１２２については、上述した一実施形態と同様のため、説明を省略する。
【０１３４】
上述の如く構成された変形例に係る演算処理装置１の機能構成は、上述した一実施形態における機能構成（図２〜図６参照）において、ＣＰＵ１０に替えてコア１７を適用することで、一実施形態と同様の機能を備える。
【０１３５】
上述の如く構成された変形例に係る演算処理装置１での順序保証試験の制御処理は、上述した一実施形態における制御処理（図９〜図１１参照）にて、ＣＰＵ１０に替えてコア１７を適用することで、一実施形態と同様の動作を行なわせ、同様の効果を得られる。
【０１３６】
〔３〕効果
上述のように、一実施形態及び変形例に係る演算処理装置１では、連続ロード命令発行部２５が連続してロード命令を発行する。これにより、同一アドレスに対するアクセスの間隔を短くできる。
【０１３７】
また、一実施形態及び変形例に係る演算処理装置１では、待機命令発行部３１がＷａｉｔ命令の発行回数（Ｐの値）を変化させることで、ストア命令発行タイミングを変えながら順序保証試験を実施できる。これにより、試験対象プロセッサ１０による複数のロード命令の間に、確実にストア命令を実行することができる。
【０１３８】
したがって、本順序保証試験において追い越しを確実に発生させることができるので、同一アドレスの順序保証を確実に検証することができる。
【０１３９】
〔４〕その他
上述した一実施形態及び変形例に係る技術は、以下のように変形、変更して実施することができる。
【０１４０】
上述した一実施形態及び変形例では、後のロード命令による先のロード命令の追い越しが発生しないことを検証するための順序保証試験について説明したが、ロード命令に替えてストア命令について順序保証回路の妥当性を検証してもよい。その場合、試験補助プロセッサ１０によるストア命令の発行回数を複数回にしてもよい。
【０１４１】
上述した一実施形態及び変形例では、後のロード命令による先のロード命令の追い越しが発生しないことを検証するための順序保証試験について説明したが、ロード命令に替えてストア命令について順序保証回路の妥当性を検証してもよい。その場合、試験補助プロセッサ１０によるストア命令の発行回数を複数回にしてもよい。
【０１４２】
上述した一実施形態及び変形例では、エラーチェック部２７がエラー検出フラグＦ１，ストア命令反映フラグＦ２の値を設定するものとしたが、これに替えて、試験補助プロセッサ１０がエラー検出フラグＦ１，ストア命令反映フラグＦ２の値を設定してもよい。その場合、エラー検出フラグＦ１とストア命令反映フラグＦ２とは、メモリ１２に格納されることが望ましい。
【０１４３】
上述した一実施形態及び変形例では、待機命令発行部３１によりＷａｉｔの発行回数がＰより大きくなったと判定された場合にすべての試験が終了するものとしたが、これに替えて演算処理装置１の電源切断を契機としてすべての試験を終了するものとしてもよい。
【０１４４】
〔５〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１４５】
（付記１）
データを記憶するメモリと、
前記メモリに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一プロセッサと、
前記メモリに対して、前記複数のロード命令の実行中にストア命令を発行する第二プロセッサと、
前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき順序性が保証されているかを判定する順序性判定部と、
を備える、
ことを特徴とする演算処理装置。
【０１４６】
（付記２）
前記第二プロセッサは、前記第一プロセッサによる前記ロード命令の対象となる領域と同一の領域に対して、前記ストア命令を発行する、
ことを特徴とする付記１記載の演算処理装置。
【０１４７】
（付記３）
前記第二プロセッサは、前記順序性判定部が判定を行なう度に、前記ストア命令を発行するタイミングを変更し、
前記第一プロセッサによる前記ロード命令の発行、前記第二プロセッサによる前記ストア命令の発行、及び、前記第一プロセッサによる前記比較と前記判定とを繰り返し行なう、
ことを特徴とする付記１又は２記載の演算処理装置。
【０１４８】
（付記４）
第一プロセッサが、データを記憶するメモリに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一の処理と、
第二プロセッサが、前記メモリに対して、前記複数のロード命令の実行中にストア命令を発行する第二の処理と、
前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき順序性が保証されているかを判定する第三の処理と、
を備える、
ことを特徴とする制御方法。
【０１４９】
（付記５）
前記第二プロセッサは、前記第一プロセッサによる前記ロード命令の対象となる領域と同一の領域に対して、前記ストア命令を発行する、
ことを特徴とする付記４記載の制御方法。
【０１５０】
（付記６）
前記第二プロセッサは、前記順序性判定部が判定を行なう度に、前記ストア命令を発行するタイミングを変更し、
前記第一の処理、前記第二の処理、及び、前記第三の処理を繰り返し行なう、
ことを特徴とする付記４又は５記載の制御方法。
【符号の説明】
【０１５１】
１    演算処理装置
１０    ＣＰＵ（試験対象プロセッサ，試験補助プロセッサ）
１１    記憶部
１２    メモリ
１３    ＩＦ部
１４    Ｉ／Ｏ
１５    バス
１７    コア
２１    初期化部
２２    試験部
２３    後処理部
２４    エラー通知部
２５    連続ロード命令発行部
２６    結果保存部
２７    エラーチェック部（順序性判定部）
３１    待機命令発行部
３２    補助ストア命令発行部
１００    試験プログラム
１０１    試験対象プロセッサ用試験プログラム
１０２    試験補助プロセッサ用試験プログラム
１２１    試験対象領域
１２２    ロード値保存領域
【図１】
2019219717.tif 000003
【図２】
2019219717.tif 000004
【図３】
2019219717.tif 000005
【図４】
2019219717.tif 000006
【図５】
2019219717.tif 000007
【図６】
2019219717.tif 000008
【図７】
2019219717.tif 000009
【図８】
2019219717.tif 000010
【図９】
2019219717.tif 000011
【図１０】
2019219717.tif 000012
【図１１】
2019219717.tif 000013
【図１２】
2019219717.tif 000014
【図１３】
2019219717.tif 000015
【図１４】
2019219717.tif 000016