JP7102963B2 - 演算処理装置、及び制御方法 - Google Patents

演算処理装置、及び制御方法 Download PDF

Info

Publication number
JP7102963B2
JP7102963B2 JP2018114403A JP2018114403A JP7102963B2 JP 7102963 B2 JP7102963 B2 JP 7102963B2 JP 2018114403 A JP2018114403 A JP 2018114403A JP 2018114403 A JP2018114403 A JP 2018114403A JP 7102963 B2 JP7102963 B2 JP 7102963B2
Authority
JP
Japan
Prior art keywords
load
processor
instruction
test
store
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.)
Active
Application number
JP2018114403A
Other languages
English (en)
Other versions
JP2019219717A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018114403A priority Critical patent/JP7102963B2/ja
Priority to US16/419,040 priority patent/US11500639B2/en
Publication of JP2019219717A publication Critical patent/JP2019219717A/ja
Application granted granted Critical
Publication of JP7102963B2 publication Critical patent/JP7102963B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

本発明は、演算処理装置、及び制御方法に関する。
演算処理装置の品質保証試験の一つとして、プロセッサ(CPU(Central Processing Unit))がロード(Load;読み出し)命令や、ストア(Store;書き込み)命令を実行した場合に順序性の検証を行なうための順序保証試験が行なわれている。
特開2006-31156号公報
このような従来の順序保証試験では、プロセッサによる異なるアドレス又は同一アドレスに対するロード命令及びストア命令等のアクセスの順序を検証する。
図14は、RMO(Relaxed Memory Ordering)方式を採用したプロセッサにおいて、後続(後の)のロード命令やストア命令が、先のロード命令やストア命令よりも先に実行されてしまう、いわゆる追い越しの可否を例示したものである。例えば、この図14の“ロード命令-ロード命令”は、先の命令がロード命令であり、後の命令がロード命令であることを示している。この図14に示すように、先行する命令のアクセス先と後続する命令のアクセス先とが異なるアドレスである場合には、“特別ロード命令-ロード命令”,“特別ストア命令-ストア命令”以外は追い越しが認められている。
一方、RMO方式を採用したプロセッサにおいて、同一のアドレスに対するアクセスに関しては、後続のロード命令が先のロード命令を追い越すことや、後続のストア命令が先のストア命令を追い越すことは許可されていない(図14の矢印A1参照)。したがって、このようなRMO方式を採用したプロセッサの順序保証試験においては、同一のアドレスに対するアクセスの追い越しが行なわれていないことを検証することが重要である。
しかしながら、このようなRMO方式を採用したプロセッサにおける順序保証試験では、メモリ上の異なる複数の領域に対するアクセスを同時に試みる場合がある。このような場合、再度同一のアドレスに対するロード命令やストア命令が発行されるまでには時間間隔があいてしまう場合がある。
また、ロード命令を実行するプロセッサと、ストア命令を実行するプロセッサとを試験開始時点で同期させていても、両者による命令のタイミングのずれが発生してしまい、例えば、ロード命令がすべて実行された後に、ストア命令が実行される場合がある。
したがって、これらの場合に、同一アドレスをアクセス先とした、“ロード命令-ロード命令”,“ストア命令-ストア命令”の追い越しを発生させることができない。RMO方式を採用したプロセッサを実装した順序保証回路において、同一のアドレスに対するアクセスの追い越しについて望ましい(正確な)順序保証試験を行なうことが難しく、順序保証回路の妥当性を検証することが難しいという課題がある。
1つの側面では、同一アドレスの順序保証を確実に検証することを目的とする。
この演算処理装置は、同一アドレスに対するアクセスに際し後続のロード命令またはストア命令が先のロード命令またはストア命令よりも先に実行される追い越しを許可しない演算処理装置であって、データを記憶するメモリと、前記メモリの前記同一アドレスに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一プロセッサと、前記メモリの前記同一アドレスに対して、前記複数のロード命令の実行中にストア命令を一回発行する第二プロセッサと、前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき、前記追い越しの発生の有無を判定し序保判定結果として出力する順序保証判定部と、を備え、前記順序保証判定部は、前記複数のロード命令によって前記メモリの前記同一アドレスからロードされるロード値が、前記同一アドレスに設定された初期値と、前記ストア命令によってストアされた、当該初期値とは異なる値との間で変化する回数に基づき、前記追い越しの発生の有無を判定する。
一実施形態によれば、同一アドレスの順序保証を確実に検証することができる。
実施形態の一例としての演算処理装置のハードウェア構成を例示する図である。 実施形態の一例としての演算処理装置における順序保証試験のハードウェア構成を例示する図である。 実施形態の一例としての演算処理装置の機能構成を例示する図である。 実施形態の一例としての演算処理装置における初期化部による処理を例示する図である。 実施形態の一例としての演算処理装置における連続ロード命令発行部、待機命令発行部、及び、補助ストア命令発行部による各処理を例示する図である。 実施形態の一例としての演算処理装置における結果保存部による処理を例示する図である。 実施形態の一例としての演算処理装置において、後のロード命令による先のロード命令の追い越しが発生していない場合の概念図である。 実施形態の一例としての演算処理装置において、後のロード命令による先のロード命令の追い越しが発生した場合の概念図である。 実施形態の一例としての演算処理装置における順序保証試験の制御処理を例示する図である。 実施形態の一例としての演算処理装置での試験対象プロセッサにおける順序保証試験による処理を例示する図である。 実施形態の一例としての演算処理装置におけるエラーチェック部による処理を例示する図である。 実施形態の変形例としての演算処理装置のハードウェア構成を例示する図である。 実施形態の変形例としての演算処理装置における順序保証試験のハードウェア構成を例示する図である。 実施形態の比較例としての演算処理装置における追い越しの可否を例示する図である。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図等はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
〔1-1〕一実施形態に係る演算処理装置のハードウェア構成例
図1は、実施形態の一例としての演算処理装置1のハードウェア構成を例示する図である。
この図1に示すように、演算処理装置1は、複数のCPU10-0~10-n(nは0以上の整数)を備えるマルチプロセッサ構成であり、記憶部11、メモリ12、IF(Interface)部13、及び、I/O(Input / Output)部14を備えてよい。
具体的に、演算処理装置1は、1つ以上のCPU10-0,CPU10-1,CPU10-2,・・・,CPU10-nを備える。以下、CPUを示す符号としては、複数のCPUのうち1つを特定する必要があるときには符号10-0,10-1,10-2,・・・,10-nを用いるが、任意のCPUを指すときには符号10を用いる。
また、CPU10-1,CPU10-2,・・・,CPU10-nは、それぞれ、CPU#0,CPU#1,CPU#2,・・・,CPU#nとも表され、符号“#”に付される数字である、“0”,“1”,“2”,・・・,“n”は単にCPU番号ともいう。また、これらのCPU10は、バス15を介して互いに通信可能に接続される。
このCPU10は、後述する記憶部11に格納されるOS(Operating System)やプログラムを実行し、例えば、順序保証試験を実行すべく演算処理装置1を制御する。本実施形態では、CPU10は、図3等を用いて後述する試験プログラム100を実行する。
記憶部11は、種々のデータやプログラム等を格納するハードウェアの一例である。例えば、記憶部11は、演算処理装置1の二次記憶装置として使用されてよく、OSやファームウェア、アプリケーション等のプログラム、及び、各種データが格納されてよい。記憶部11としては、例えば、HDD(Hard Disk Drive)等の磁気ディスク装置の他、SSD(Solid State Drive)やSCM(Storage Class Memory)が挙げられる。また、記憶部11は、演算処理装置1の各種機能の全部若しくは一部を実現するプログラムを格納してもよい。
メモリ12は、種々のデータやプログラムを格納するハードウェアの一例である。メモリ12としては、RAM(Random Access Memory)等の揮発性メモリや、フラッシュメモリ、SCM、ROM(Read Only Memory)等の不揮発性メモリが挙げられる。また、メモリ12は、試験プログラム100やデータを記憶してもよい。
IF部13は、外部ネットワーク等を介し、図示しない外部装置との間の接続及び通信の制御等を行なう通信インタフェースの一例である。
I/O部14は、例えば、マウス、キーボード、タッチパネル、操作ボタン等の入力装置、の少なくともいずれか一つを含んでよい。
バス15は、CPU10同士を通信可能に接続すると共に、CPU10と、記憶部11、メモリ12、IF部13、及び、I/O部14とを接続する。
また、演算処理装置1は図示しないネットワークを介して、例えば、図示しない管理者の管理端末と接続されてもよい。
〔1-2〕一実施形態に係る演算処理装置における順序保証試験のハードウェア構成例
本演算処理装置における順序保証試験のハードウェア構成例について、図2を用いて説明する。
図2は、図1に示す実施形態の一例としての演算処理装置1における順序保証試験のハードウェア構成を例示する図である。
この図2に例示するように、本実施形態では、2つのプロセッサ10を組み合わせてペア(1組)を構成し、このペア単位で順序保証試験を実施するものとする。
図2には、CPU#0とCPU#1、CPU#2とCPU#3、CPU#8とCPU#9を組み合わせて、それぞれ、ペア#1,ペア#2,ペア#5を構成して、これらのペア単位で順序保証試験を実施する場合を例示している。なお、本実施形態では、CPU番号が隣り合わせのプロセッサ10同士をペアとして組み合わせるものとしたが、組み合わせの方法はこれに限られない。
このペアのうち、一方のプロセッサ10を試験対象となるプロセッサ10、すなわち、試験対象プロセッサ10として機能させ、他方のプロセッサ10を追い越しの状況を発生させるプロセッサ10、すなわち、試験補助プロセッサ10として機能させる。図2には、CPU番号が偶数のプロセッサ10(例えば、CPU#0,#2,#8)を試験対象プロセッサ10として機能させ、CPU番号が奇数のプロセッサ10(例えば、CPU#1,#3,#9)を試験補助プロセッサ10として機能させる場合を例示する。この試験対象プロセッサ10を第一プロセッサともいい、また、試験補助プロセッサ10を第二プロセッサともいう。
なお、本実施形態では、各ペアにおいて、CPU番号が小さい、又は、CPU番号が偶数のプロセッサ10(CPU#0,#2,#8)を試験対象プロセッサ10に割り当てたが、これに限られない。また、本実施形態では、各ペアにおいて、CPU番号が大きい、又はCPU番号が奇数のプロセッサ10(CPU#1,#3,#9)を試験補助プロセッサ10に割り当てたが、これに限られない。
メモリ12は、図2に例示するように、ペア毎に、試験対象領域121、及び、ロード値保存領域122を備える。試験対象領域121は、ロード命令、又は、ストア命令のアクセス先の値が格納される領域であり、この試験対象領域121はストア命令によって値が書き込まれる。また、ロード値保存領域122は、ロード命令により読み出した値(ロード値)がまとめて格納される領域であり、このロード値保存領域122はストア命令によって値が書き込まれる。
なお、各ペアに含まれる試験対象プロセッサ10と試験補助プロセッサ10とは、メモリ12上の試験対象領域121とロード値保存領域122とを共通に用いるものとする。また、試験対象領域121に格納された値を格納値という場合がある。
〔1-3〕一実施形態に演算処理装置における機能構成例
本演算処理装置における機能構成について、図4~図8を参照しながら、図3を用いて説明する。
図3は、図2に示す実施形態の一例としての演算処理装置1の機能構成を例示する図である。
また、図4は、初期化部21による処理を例示する図であり、図5は、連続ロード命令発行部25、待機命令発行部31、及び、補助ストア命令発行部32による各処理を例示する図である。また、図6は、結果保存部26による処理を例示する図である。また、図7は、後のロード命令による先のロード命令の追い越しが発生していない場合の概念図であり、図8は、後のロード命令による先のロード命令の追い越しが発生した場合の概念図である。
なお、図3~図8には、試験対象プロセッサ10としてCPU#0(10-0)を機能させ、試験補助プロセッサ10としてCPU#1(10-1)を機能させた場合の順序保証試験を例示したが、他のCPU10のペアにおいても並行して試験が行なわれてもよい。その場合、CPU#0とCPU#1が用いるメモリ12上の試験対象領域121やロード値保存領域122以外の領域を用いるものとする。
まず、本演算処理装置1における試験対象プロセッサ10の機能構成について説明する。
図3に示すように、試験対象プロセッサ10は、初期化部21、試験部22、後処理部23、及び、エラー通知部24としての機能を備え、この試験部22は、連続ロード命令発行部25、結果保存部26、及び、エラーチェック部27としての機能を備える。
初期化部21は、試験対象領域121を初期化すべく、試験対象領域121に対してストア命令を発行し、所定の値(初期値)を格納する。例えば、初期化部21は、図4に示すように、試験対象領域121に対して“0x0”を格納する。
また、この初期化部21は、後述する連続ロード命令発行部25によって連続して発行されるロード命令の回数を示すNの値も“0”に初期化する。
試験部22は、本順序保証試験における命令を発行し、その結果を保存するまでの処理を行なう。具体的に、試験部22は、図3に例示するように、連続ロード命令発行部25、結果保存部26、及び、エラーチェック部27を備えてもよい。次に各機能構成について説明する。
連続ロード命令発行部25は、試験対象領域121における同一のアドレスに対し、所定回数連続してロードさせる連続ロード命令を発行する。この連続ロード命令により、データをそれぞれ読み出す複数のロード命令が所定回数連続して発行される。本実施形態では、試験対象プロセッサ10であるCPU#0のレジスタ(図示省略)のうち、ロード値を保存可能なレジスタの数をN個(Nは1以上の整数)とすると、1回の連続ロード命令ではN回の連続したロード命令を発行するものとする。なお、このロード値を保存可能なレジスタの数(N個)はプロセッサ10の種類等によって異なってもよく、この場合、連続したロード命令に含まれる個々のロード命令の数はN回となる。
この連続ロード命令発行部25による処理について、図5の例示を用いて説明する。図5に例示するように、連続ロード命令発行部25は、試験対象領域121における同一のアドレスに対し、連続した複数のロード命令(Load#1~#5)を発行する。本例では、試験対象プロセッサ10において、ロード値を保存可能なレジスタの数は5つ(Nは5)であるものとする。このように、連続したロード命令に含まれる各ロード命令は、メモリ12の試験対象領域121上の同一のアドレスにアクセスするものである。したがって、当該アドレスによって特定される領域に格納される値に変更がなければ、初期化部21により初期値(“0x0”)を読み出すことになる。この初期値を“Old”ともいう。
また、図5に例示するように、試験対象プロセッサ10による1回目~3回目のロード命令(Load#1~#3)の後、例えば、試験補助プロセッサ10によって、当該ロード命令のアクセス先のアドレスに対してストア命令が発行されたとする(後述)。そして、このストア命令により、ロード命令のアクセス先のアドレスの値が、初期値(“Old”)から“0xf”に書き換わったとする。このストア命令により書き込まれた値をストア値、又は、“New”ともいう。このような場合、試験対象プロセッサ10は、4回目~5回目のロード命令(Load#4,#5)によるロード値として、“0xf”(“New”)を得ることになる。
結果保存部26は、上述した連続ロード命令発行部25による連続したロード命令によって読み出されたN回分の結果であるロード値をまとめ(連結し)、連結したロード値、すなわち、連結ロード値を生成する。そして、結果保存部26は、例えば、ストア命令を発行し、連結ロード値をロード値保存領域122に格納(保存)させる。
この結果保存部26による処理について、図6の例示を用いて説明する。図6は、1回目~3回目のロード命令(Load#1~#3)によるロード値がすべて“0x0”であり、4回目~5回目のロード命令(Load#4,#5)によるロード値が共に“0xf”であることを例示している。結果保存部26は、図6に例示するように、これら各ロード命令によるロード値を順番どおりに連結し、例えば、5バイトのデータ長をもつ連結ロード値(“0x0000000f0f”)を作成する。そして、結果保存部26は、例えば、ストア命令を発行し、この作成した連結ロード値をロード値保存領域122に格納させる。
なお、後述するが、試験補助プロセッサ10によるストア命令の発行後、試験対象プロセッサ10による連結ロード値の格納をM回(Mは0以上の整数)繰り返した時点で、試験対象プロセッサ10と試験補助プロセッサ10とは、試験完了保証の同期をとる。この試験完了保証同期も、図示しないクロック発生器等を用いるものとする。したがって、図6に例示するように、試験補助プロセッサ10は、試験対象プロセッサ10による連結ロード値の格納が完了するまでは、試験完了保証の同期待ちの状態となる。
エラーチェック部27は、結果保存部26によってメモリ12のロード値保存領域122に格納された値(連結ロード値)に基づき、当該順序保証試験におけるエラー発生の有無を判定する。エラーチェック部27は、ロード値保存領域122に格納された連結ロード値から、連続ロード命令に含まれる各ロード命令によって読み出されたロード値を時系列順に抽出し、その変化を確認してもよい。なお、本実施形態において、エラーチェック部27よって判定されるエラーを異常ともいい、例えば、追い越しの発生を表す。
ここで、図7を用いて、後のロード命令による先のロード命令の追い越しが発生していない場合のエラーチェック部27による処理について説明する。
図7は、後のロード命令による先のロード命令の追い越しが発生していない場合の概念図である。図7には、ロード値保存領域122に格納された各ロード値を、ロードされた順番に上から模式的に並べて表示してある。
この図7では、1回目,2回目のロード値が“Old”(初期値)であり、しばらくロード値として“Old”が継続することを例示している。その後、当該ロード命令のアクセス先のアドレスと同一のアドレスに対し、試験補助プロセッサ10によってストア命令が発行され、試験対象領域121に初期値とは異なる値である“New”が格納されたとする。すなわち、試験対象領域121の格納値が初期値“Old”から“New”に書き換えられたとする(図7の矢印“変化”参照)。このような場合、当該ストア命令の発行された後に、試験対象プロセッサ10がロード命令を発行すると、ロード値が当該ストア命令によるストア値になることが期待される。すなわち、ストア命令の発行された後のロード値が“Old”から“New”に変わった後には、そのまま初期値に戻らないことが望ましい。
図7の例示においても、試験補助プロセッサ10によるストア命令が発行された後のロード値がすべて“New”であることから、期待値が得られていることがわかる。このように期待値が得られるということは、当該プロセッサの順序保証試験においては、同一のアドレスに対するアクセスの追い越しが行なわれていないことがわかる。したがって、このような場合には、エラーチェック部27は、後のロード命令による先のロード命令の追い越しが発生していないと判定する。
次に、図8を用いて、後のロード命令による先のロード命令の追い越しが発生している場合のエラーチェック部27による処理について説明する。
図8は、後のロード命令による先のロード命令の追い越しが発生している場合の概念図である。図8は、図7と同様に、ロード値保存領域122に格納された各ロード値を、ロードされた順番に上から模式的に並べて表示してある。また、この図8においても、1回目,2回目のロード値が“Old”(初期値)であり、しばらくロード値が“Old”のままであることを例示している。
図8では、図7とは異なり、試験補助プロセッサ10によるストア命令発行の後、ロード値が“Old”から“New”に変わり(図8の矢印“1回目変化”参照)、その後“New”から“Old”に再度戻ったことを例示している(図8の矢印“2回目変化”参照)。このように、試験補助プロセッサ10によるストア命令が発行された後、ロード命令と同一のアドレスに対するストア命令が何ら発行されていないにも関わらず、ロード値が“Old”に戻っている場合には、期待値が得られていないといえる。このように、エラーチェック部27は、ロード値が2回(以上)変化していた場合には、後のロード命令による先のロード命令の追い越しが発生したと判定する。
後処理部23は、本順序保証試験終了後に後処理を行なう。例えば、試験結果の出力用データの作成を行なう。この試験終了後に行なう後処理は公知であるためここではその説明を省略する。
エラー通知部24は、エラーチェック部27によって得られた、追い越しのエラー発生の有無について、例えば、当該順序保証試験や演算処理装置1の管理者に対して通知する。
次に、本演算処理装置1における試験補助プロセッサ10(CPU#1)の機能構成について説明する。
図3に示すように、試験補助プロセッサ10は、待機命令発行部31、及び、補助ストア命令発行部32を備えてもよい。
待機命令発行部31は、試験対象プロセッサ10による連続ロード命令の発行中に、試験補助プロセッサ10によるストア命令が発行できるように、自身(CPU#1)に対して待機命令(Wait命令)を所定回数発行しロード命令(の数回分)の発行を待機する。
また、待機命令発行部31は、種々のパターンの試験を実施できるようにするため、ストア命令の発行タイミング(ストア命令発行タイミング)を変更させる。具体的に、待機命令発行部31は、連続ロード命令をM回繰り返す(後述)度に、待機命令発行部31によるWait命令の発行回数P(Pは0以上の整数)を増加させていくことで、このストア命令発行タイミングを変更する。
そして、待機命令発行部31は、連続ロード命令がM回繰り返された後に、Wait命令の発行回数Pを変更する処理をL回(Lは1以上の整数)繰り返すものとする。また、このLをストア命令の繰り返し回数、又は、ずらし範囲ともいい、このLには順序保証できるだけの値が格納されるものとする。
この待機命令発行部31による処理について、図5を用いて説明する。図5は、待機命令発行部31が、自身に対してWait命令を2回発行し、連続ロード命令発行部25による1回目~3回目のロード命令(Load#1~#3)の間、自身を待機させることを例示している。
例えば、図5に示すように、試験対象プロセッサ10により発行されるロード命令が5つ(Load#1~#5)の場合、試験補助プロセッサ10によって発行されるストア命令は、本順序保証試験の性質上、すべてのパターンを網羅するものであることが望ましい。
具体的には、Load#1の直前、Load#1とLoad#2との間,Load#2とLoad#3との間,Load#3とLoad#4との間,Load#4とLoad#5との間でそれぞれストア命令を発行する試験を行なうことが望ましい。したがって、上述の場合5種類のパターンを試験することになる。
なお、本試験の対象となるロード命令の範囲(図5の例ではLoad#1~Load#5)にしたがって繰り返し回数Lの値を決定するものとする。また、本実施形態では、連続したロード命令が終了した後にストア命令が発行される状況を回避するため、Load#5の直後にストア命令が発行されるパターンの試験は実施しないものとする。したがって、連続ロード命令の繰り返し回数Mの値は、ストア命令の繰り返し回数Lによって決まり、ストア命令の繰り返し回数Lの値よりも大きいものとする。
また、例えばLoad#1とLoad#2との間でストア命令を発行する試験の後、Load#2とLoad#3との間でストア命令を発行する試験を行なう場合、待機命令発行部31は、先の試験にて発行した数よりも多くのWait命令を発行させる必要がある。したがって、待機命令発行部31は、Wait命令の実行回数Pを変化させてストア命令発行タイミングを変更することにより、本順序保証試験において種々のパターンを検証できるようにする。
このようにして、試験対象プロセッサ10の連続ロード命令発行部25は、N回の連続したロード命令を発行する連続ロード命令をM回繰り返す。その間、試験補助プロセッサ10では、待機命令発行部31がP回の待機命令を発行し、その後、補助ストア命令発行部32が1回のストア命令を発行する。そして、この一連の処理を、ストア命令の繰り返し回数(L回)分繰り返して、処理を終了する。したがって、一連の処理が終了するまでには、M×N回分のロード命令が、L回繰り返されることになる。
補助ストア命令発行部32は、上述した待機命令発行部31によって発行された待機命令により、試験対象プロセッサ10によって発行されたロード命令を任意の時間待機した後、ストア命令を1回発行する。この補助ストア命令発行部32によるストア命令は、試験対象領域121に対して所定の値を格納するものであり、この値は、初期化部21によるストア命令により格納された値とは異なる。
図5では、この補助ストア命令発行部32は、試験対象プロセッサ10による3回目のロード命令の後に、補助ストア命令発行部32がストア命令を発行した場合を例示している。また、補助ストア命令発行部32が発行するストア命令により格納された値は“0xf”であり、補助ストア命令発行部32によるストア命令により格納された値(“0x0”)とは異なることを例示している。なお、補助ストア命令発行部32は、ストア命令発行タイミングにおいてこのようなストア命令を発行するものとする。
なお、上述した各機能構成の処理は、メモリ12に格納される試験プログラム100を実行することにより実現される。
〔1-4〕一実施形態に係る演算処理装置における順序保証試験の制御処理
上述の如く構成された実施形態の一例として、演算処理装置1における順序保証試験の制御処理を、図9に示すフローチャート(ステップS1~S16)に従って説明する。なお、ここでは、順序保証試験として、同一アドレスに対するアクセス試験について説明する。
図9は、一実施形態に係る演算処理装置1における順序保証試験の制御処理を説明するためのフローチャートである。
この図9を用いて、本実施形態における順序保証試験である、同一アドレスに対するアクセス試験の内容について説明する。本実施形態では、上述したとおり、2つのプロセッサ10を組み合わせたペア単位で試験を実施するものとし、図9には、CPU#0とCPU#1との2つのプロセッサ10をペアとして試験を実施する場合を例示している。
また、CPU#0とCPU#1とは、メモリ12上の同一の試験対象領域121を用いる。
ステップS1において、初期化部21は、これから行なう試験(試験対象)が、同一アドレスへの追い越しの有無を検証するものであるかを判定する。この手法は公知であるため、ここでは説明を省略する。
また、ステップS1において、試験対象が同一アドレスの追い越しであると判定した場合(ステップS1におけるYesルート参照)、処理がステップS2に移行する。一方、試験対象が同一アドレスの追い越しではないと判定した場合(ステップS1におけるNoルート参照)、処理が終了する。
続くステップS2において、待機命令発行部31は、ストア命令の繰り返し回数Lの値を設定する。この手法は公知であるため、ここでは説明を省略する。
続くステップS3において、連続ロード命令発行部25は、ステップS1において設定されたストア命令の繰り返し回数Lに基づき、連続ロード命令の繰り返し回数Mを決定する。
続くステップS4において、連続ロード命令発行部25は、試験対象プロセッサ10であるCPU#0のレジスタの個数(N)に基づき、連続して発行させるロード命令の回数Nを決定する。
続くステップS5において、待機命令発行部31は、Wait命令の実行回数Pの値を0に初期化する。
続くステップS6において、まず、各ペアを構成する2つのプロセッサ10のうち、一方を試験対象プロセッサ10に割り当て、他方を試験補助プロセッサ10に割り当てる。ここでは、ペア#1のうち、CPU#0を試験対象プロセッサ10に割り当て、CPU#1を試験補助プロセッサ10に割り当てた場合を例にとり説明する。
続くステップS7では、試験対象プロセッサ10のエラーチェック部27は、ロード値がすべて“Old”であるかを判断する。本試験の試験開始時には、ロード値、すなわち、ロード値保存領域122に格納されている各ロード値は、すべて“Old”ではないものとする。
このステップS7において、ロード値がすべて“Old”ではないと判定した場合(ステップS7におけるNoルート)、処理がステップS8に移行する。
続くステップS8において、試験対象プロセッサ10の初期化部21は、メモリ12の試験対象領域121を初期化すべく、試験対象領域121に対してストア命令を発行し、初期値(例えば、“0x0”)を格納する。また、初期化部21は、連続ロード命令発行部25によって連続して発行されるロード命令の回数を示すNの値も“0”に初期化する。
続くステップS9において、試験対象プロセッサ10と試験補助プロセッサ10とは、図示しないクロック発生器等を用いて試験開始の同期をとる。
このステップS9における試験開始同期の後、順序保証試験が開始される。この順序保証試験について、試験対象プロセッサ10側での処理(ステップS10,S13~S15)と、試験補助プロセッサ10側での処理(ステップS11~S13,S16)とについてそれぞれ以下説明する。まず、試験対象プロセッサ10側での順序保証試験について説明する。
試験対象プロセッサ10側では、ステップS10において、連続ロード命令発行部25が、同一アドレスに対して連続ロード命令をM回発行する。すなわち、連続ロード命令発行部25は、連続したN回のロード命令の発行をM回繰り返す。そして、結果保存部26が、連続ロード命令をM回発行した結果であるロード値を用いて連結ロード値を生成し、この連結ロード値をロード値保存領域122に格納する(図5,図6参照)。このステップS10の具体的な処理について、図10に示すフローチャート(ステップT1~T4)に従って説明する。
図10は、一実施形態に係る演算処理装置1での試験対象プロセッサ10における順序保証試験による処理を説明するフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
上述した図9のステップS9に示す試験開始同期の後、図10のステップT1において、連続ロード命令発行部25は、自身による連続ロード命令の発行をM回繰り返す。連続ロード命令の発行をM回繰り返した場合には(ステップT1におけるYesルート参照)、処理が図9のステップS13に移行する。一方、連続ロード命令の発行をM回繰り返していない場合には(ステップT1におけるNoルート参照)、処理がステップT2に移行する。なお、初回実行時にはまだ連続ロード命令の繰り返しを行なっていないので、処理がステップT2に移行する。
ステップT2において、連続ロード命令発行部25は、自身によるロード命令をN回発行したか否かを確認する。ロード命令をN回発行した場合(ステップT2におけるYesルート参照)、処理がステップT4に移行する。一方、ロード命令をN回発行していない場合(ステップT2におけるNoルート参照)、処理がステップT3に移行する。なお、初回実行時にはまだロード命令を発行していないので、処理がステップT3に移行する。
ステップT3において、連続ロード命令発行部25は、同一アドレスである試験対象領域121に対するロード命令を発行する。そして、ステップT2に戻る。すなわち、連続ロード命令発行部25は、同一アドレスである試験対象領域121に対するロード命令をN回発行する。
ステップT4において、結果保存部26は、上述したステップT3において行なったN回のロード命令によるロード値をまとめて連結ロード値を生成し、連結ロード値をロード値保存領域122に格納する。そして、処理がステップT1に戻る。すなわち、結果保存部26は、N個のロード値が得られる度に、連結ロード値を生成し、ロード値保存領域122に格納する。
このように、試験対象プロセッサ10側での順序保証試験は、上記ステップT2~T4に示す、N回のロード命令の発行と連結ロード値の格納をM回繰り返すことにより(ステップT1)実施される。
次に、図9に示す順序保証試験の制御処理に関する説明に戻り、試験補助プロセッサ10側での処理について説明する。
ステップS11において、試験補助プロセッサ10側では、上述した図9のステップS9に示す試験開始同期の後、待機命令発行部31が、待機命令(Wait命令)をP回発行して、自身を待機させる。
続くステップS12において、補助ストア命令発行部32は、同一アドレスである試験対象領域121に対するストア命令を1回発行する。なお、この補助ストア命令発行部32が発行するストア命令により試験対象領域121に格納される値(例えば、“0xf”)は、初期化部21によるストア命令により格納された値(“0x0”)とは異なるものでなければならない。
ステップS13において、試験補助プロセッサ10によるストア命令の発行の後、試験対象プロセッサ10によるM回の連続ロード命令の発行が完了した時点で、図示しないクロック発生器等を用いて、両者は試験完了保証の同期をとる。
ステップS14において、試験対象プロセッサ10のエラーチェック部27は、ロード値が2回(以上)変化しているか否かを判定する。このステップS14の具体的な処理について、図11に示すフローチャート(Q1~Q12)に従って説明する。
図11は、一実施形態に係る演算処理装置1での試験対象プロセッサ10におけるエラーチェック部27による処理を例示する図である。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
ステップQ1において、試験対象プロセッサ10のエラーチェック部27は、エラー検出フラグF1を0に初期化する。このエラー検出フラグF1とは、エラーチェック部27によってロード値の変化が検出されたか否かを示すものである。
例えば、エラー検出フラグF1の値が1であることは、エラーチェック部27によって追い越しの発生(エラー)が検出されたことを示す。一方、エラー検出フラグF1の値が0であることは、エラーチェック部27によって追い越しの発生(エラー)が検出されなかったことを示す。なお、エラー検出フラグF1については、図示していないが、例えば、メモリ12に格納されてもよく、エラーチェック部27がエラー検出フラグF1の値(0又は1)を設定するものとする。
続くステップQ2において、試験対象プロセッサ10のエラーチェック部27は、ストア命令反映フラグF2を0に初期化する。このストア命令反映フラグF2とは、エラーチェック部27が、試験補助プロセッサ10の補助ストア命令発行部32によるストア命令の発行が行なわれたと推測したか、又は、当該ストア命令の発行が行なわれなかったと推測したことを示すものである。エラーチェック部27は、この推測を、ロード値の変化に基づき行なうものとする。
例えば、ストア命令反映フラグF2の値が1であることは、補助ストア命令発行部32によってストア命令が発行されたと推測されたことを示す。一方、ストア命令反映フラグF2の値が0であることは、補助ストア命令発行部32によってストア命令が発行されなかったと推測されたことを示す。なお、ストア命令反映フラグF2については、図示していないが、例えば、メモリ12に格納されてもよく、エラーチェック部27が、ロード値の変化に基づき、ストア命令反映フラグF2の値(0又は1)を設定するものとする。
続くステップQ3において、エラーチェック部27は、今回、上記ステップS10~S12に示す処理を経ることにより得られたすべての連結ロード値をロード値保存領域122から取得する。そして、エラーチェック部27は、取得した連結ロード値に含まれる各(複数の)ロード値を時系列順に抽出する。
続くステップQ4において、エラーチェック部27は、すべてのロード値をチェックしたかを判定する。すべてのロード値をチェックした場合(ステップQ4におけるYesルート参照)、エラーチェック部27での処理が終了し、処理が図9に示すステップS15に移行する。一方、すべてのロード値をチェックしていない場合(ステップQ4におけるNoルート参照)、処理がステップQ5に進む。なお、初回実行時には、まだロード値をチェックしていないので、処理がステップQ5に進む。
ステップQ5において、エラーチェック部27は確認対象を選択する。この確認対象とは、ステップQ3において抽出されたロード値であり、ステップQ4以降の処理において、追い越しの判定対象となるロード値である。なお、初回実行時には、最初に読み出されたロード値を確認対象とする。
続くステップQ6において、エラーチェック部27は、ストア命令反映フラグF2が1であるか否かを判定する。ストア命令反映フラグF2が1であると判定した場合(ステップQ6におけるYesルート参照)、処理がステップQ7に移行する。
ステップQ7において、エラーチェック部27は、ロード値が“Old”であるか否かを判定する。ストア命令反映フラグF2が1であるということは、補助ストア命令発行部32によってストア命令が発行されたと推測でき、当該ストア命令の後に発行されたロード値が“New”に変化することが期待される。したがって、ステップQ7にて、ロード値が“Old”ではなく“New”に変化したと判定された場合(ステップQ7におけるNoルート参照)、エラーチェック部27は、期待値が得られたと判断する。そして、処理がステップQ12に移行する。
一方、エラーチェック部27は、ロード値が“Old”のままであると判定した場合(ステップQ7におけるYesルート参照)、補助ストア命令発行部32によるストア命令により格納された値(“New”)がロードされず、期待値が得られなかったと判断する。すなわち、ロード値が、“Old”から“New”へ変化し、その後、“New”から“Old”に変化するという、2回の値の変化が発生したと推測される。そこで、エラーチェック部27は、追い越しが発生したと判断する。そして、処理がステップSQ8に移行する。
ステップQ8において、エラーチェック部27は、エラー検出フラグF1の値を1に設定し、処理がステップS9に移行する。
続くステップQ9において、試験対象プロセッサ10のエラー通知部24は、エラーチェック部27によって追い越しが発生したと判定されたことから、例えば、当該順序保証試験や演算処理装置1の管理者に対してその旨を通知する。そして、処理が図9のステップS15に移行する。
一方、ステップQ6において、ストア命令反映フラグF2が1ではないと判定した場合(ステップQ6におけるNoルート参照)、処理がステップQ10に移行する。
続くステップQ10において、エラーチェック部27は、ロード値が“New”であるか否かを判定する。ロード値が“New”であると判定した場合(ステップQ10におけるYesルート参照)、処理がステップS11に移行する。
続くステップQ11では、エラーチェック部27は、ストア命令反映フラグF2の値を1に設定する。これは、上記ステップQ10にて、ロード値が“New”であると判定したということは、試験対象領域121に格納されている値に変化があったことになり、補助ストア命令発行部32によってストア命令が発行されたと推測したためである。
一方、上記ステップQ10において、“New”ではない(“Old”のまま)と判定した場合(ステップQ10におけるNoルート参照)、ステップQ11をスキップし、処理がステップQ12に移行する。これは、試験対象領域121に格納される値に変化がなかったことから、エラーチェック部27は、補助ストア命令発行部32によってストア命令が発行されなかったと推測されるためである。
ステップQ12において、エラーチェック部27は、今回のチェック対象となったロード値の次に読み込まれたロード値を、(次回の)確認対象として選択する。その後、ステップQ4に戻る。
以上のように、図11に示すフローチャートに従うと、ロード値が2回(以上)変化した場合には、まず、ステップQ10において1回目の変化(“Old”から“New”)が検出される。そして、ステップQ11において、ストア命令反映フラグF2の値が1に設定される。そして、次のループでは、ステップQ6において、ストア命令反映フラグF2の値が1であることから、処理がステップQ7に移行する。このステップQ7において、ロード値が“Old”であるか否かが判定されるが、仮に、現時点で2回目の変化が既に発生している場合には、ロード値が“New”から“Old”に戻るという状況が発生する(期待値は“New”のまま)。この場合、ステップQ7において、ロード値が“Old”である(“Old”に戻った)と判定され、ステップQ7におけるYesルートを経て、ロード値の2回の変化、すなわち、追い越しの発生(エラー)を検出することが可能となる。
図9に示す順序保証試験の制御処理に関する説明に戻る。ステップS15では、ステップS14において追い越しの発生が検出されたか否か、すなわち、エラーが検出されたか否かを判定する。具体的には、エラーチェック部27は、エラー検出フラグF1の値が1であるかを確認する。エラーが検出された場合(ステップQ15におけるYesルート参照)、エラー終了する。一方、エラーが検出されなかった場合(ステップQ15におけるNoルート参照)、処理がステップS7に戻る。
ステップS16では、試験補助プロセッサ10において、待機命令発行部31がPの値をインクリメントし、処理がステップS7に戻ることにより、次のパターンでの順序保証試験を継続する。
また、上記ステップS7において、エラーチェック部27は、ロード値がすべて“Old”であると判定した場合(ステップS7におけるYesルート)、処理が終了する。
〔2〕実施形態の変形例
上記図1~図11では2つのプロセッサ10で構成されるペア単位で順序保証試験を実施するものとしたが、本変形例では、マルチコアのプロセッサ10を備える演算処理装置1にて、2つのコアで構成されるペア単位で実施する順序保証試験について説明する。
〔2-1〕実施形態の変形例に係る演算処理装置のハードウェア構成例
図12は、実施形態の変形例に係る演算処理装置1のハードウェア構成を例示する図である。
本変形例に係る演算処理装置1は、上述した一実施形態と同様に、複数のCPU10を備えるマルチプロセッサ構成であり、記憶部11、メモリ12、IF部13、及び、I/O部14備えてよい。また、上述した一実施形態と同様に、演算処理装置1は、1つ以上のCPU10-0(CPU#0),CPU10-1(CPU#1),・・・,CPU10-n(CPU#n;nは0以上の整数)を備え、任意のCPUを指すときには符号10を用いる。なお、記憶部11、メモリ12、IF部13、及び、I/O部14については上述した一実施形態と同様であるので、説明を省略する。
本変形例に係るCPU10は、マルチコア構成であり、図12に示す本変形例では、各CPU10が11個のコア17-0~17-10を備えるものとする。図12に示すように、CPU#0は、コア17-0~コア17-10の11個のコア17を備える。また、コアの符号“#”に付される数字である、“0”,“1”,“2”,・・・,“10”は単にコア番号ともいう。
以下、コアを示す符号としては、複数のコアのうち1つを特定する必要があるときには符号17-0,・・・,17-10を用い、任意のコアを指すときには符号17を用いる。なお、本変形例では、各CPU10が11個のコア17を備えるものとしたが、各CPU10は、10個以下、又は、12個以上のコア17を備えてもよい。
〔2-2〕変形例に係る演算処理装置における順序保証試験のハードウェア構成例
本変形例に係る演算処理装置1における順序保証試験のハードウェア構成例について、図13を用いて説明する。
図13は、図12に示す変形例としての演算処理装置1における順序保証試験のハードウェア構成を例示する図である。
この図13に例示するように、本変形例では、2つのコア17を組み合わせてペアを構成し、このペア単位で順序保証試験を実施するものとする。
図13には、コア#0とコア#1、コア#2とコア#3、コア#8とコア#9を組み合わせて、それぞれ、ペア#1,ペア#2,ペア#5を構成して、これらのペア単位で順序保証試験を実施する場合を例示している。なお、本変形例では、コア番号が隣り合わせのコア17同士をペアとして組み合わせるものとしたが、組み合わせの方法はこれに限られない。なお、図13は、CPU#0の備えるコア17を組み合わせてペアを構成する場合を例示したが、CPU#0の備えるコア17と他のCPU10備えるコア17とを組み合わせて同様にペアを構成してもよい。
このペアのうち、一方のコア17を試験対象となるコア17、すなわち、試験対象コア17として機能させ、他方のコア17を追い越しの状況を発生させるコア17、すなわち、試験補助コア17として機能させる。図13には、コア#0,#2,#8を試験対象コア17として機能させ、コア#1,#3,#9を試験補助コア17として機能させる場合を例示する。
なお、本変形例では、各ペアにおいて、コア番号が小さい、又は、コア番号が偶数のコア17(コア#0,#2,#8)を試験対象コア17に割り当てたが、これに限られない。また、本変形例では、各ペアにおいて、コア番号が大きい、又は、コア番号が奇数のコア17(コア#1,#3,#9)を試験補助コア17に割り当てたが、これに限られない。
また、メモリ12は、図13に例示するように、ペア毎に、試験対象領域121、及び、ロード値保存領域122を備える。試験対象領域121,ロード値保存領域122については、上述した一実施形態と同様のため、説明を省略する。
上述の如く構成された変形例に係る演算処理装置1の機能構成は、上述した一実施形態における機能構成(図2~図6参照)において、CPU10に替えてコア17を適用することで、一実施形態と同様の機能を備える。
上述の如く構成された変形例に係る演算処理装置1での順序保証試験の制御処理は、上述した一実施形態における制御処理(図9~図11参照)にて、CPU10に替えてコア17を適用することで、一実施形態と同様の動作を行なわせ、同様の効果を得られる。
〔3〕効果
上述のように、一実施形態及び変形例に係る演算処理装置1では、連続ロード命令発行部25が連続してロード命令を発行する。これにより、同一アドレスに対するアクセスの間隔を短くできる。
また、一実施形態及び変形例に係る演算処理装置1では、待機命令発行部31がWait命令の発行回数(Pの値)を変化させることで、ストア命令発行タイミングを変えながら順序保証試験を実施できる。これにより、試験対象プロセッサ10による複数のロード命令の間に、確実にストア命令を実行することができる。
したがって、本順序保証試験において追い越しを確実に発生させることができるので、同一アドレスの順序保証を確実に検証することができる。
〔4〕その他
上述した一実施形態及び変形例に係る技術は、以下のように変形、変更して実施することができる。
上述した一実施形態及び変形例では、後のロード命令による先のロード命令の追い越しが発生しないことを検証するための順序保証試験について説明したが、ロード命令に替えてストア命令について順序保証回路の妥当性を検証してもよい。その場合、試験補助プロセッサ10によるストア命令の発行回数を複数回にしてもよい。
上述した一実施形態及び変形例では、後のロード命令による先のロード命令の追い越しが発生しないことを検証するための順序保証試験について説明したが、ロード命令に替えてストア命令について順序保証回路の妥当性を検証してもよい。その場合、試験補助プロセッサ10によるストア命令の発行回数を複数回にしてもよい。
上述した一実施形態及び変形例では、エラーチェック部27がエラー検出フラグF1,ストア命令反映フラグF2の値を設定するものとしたが、これに替えて、試験補助プロセッサ10がエラー検出フラグF1,ストア命令反映フラグF2の値を設定してもよい。その場合、エラー検出フラグF1とストア命令反映フラグF2とは、メモリ12に格納されることが望ましい。
上述した一実施形態及び変形例では、待機命令発行部31によりWaitの発行回数がPより大きくなったと判定された場合にすべての試験が終了するものとしたが、これに替えて演算処理装置1の電源切断を契機としてすべての試験を終了するものとしてもよい。
〔5〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
データを記憶するメモリと、
前記メモリに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一プロセッサと、
前記メモリに対して、前記複数のロード命令の実行中にストア命令を発行する第二プロセッサと、
前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき順序性が保証されているかを判定する順序性判定部と、
を備える、
ことを特徴とする演算処理装置。
(付記2)
前記第二プロセッサは、前記第一プロセッサによる前記ロード命令の対象となる領域と同一の領域に対して、前記ストア命令を発行する、
ことを特徴とする付記1記載の演算処理装置。
(付記3)
前記第二プロセッサは、前記順序性判定部が判定を行なう度に、前記ストア命令を発行するタイミングを変更し、
前記第一プロセッサによる前記ロード命令の発行、前記第二プロセッサによる前記ストア命令の発行、及び、前記第一プロセッサによる前記比較と前記判定とを繰り返し行なう、
ことを特徴とする付記1又は2記載の演算処理装置。
(付記4)
第一プロセッサが、データを記憶するメモリに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一の処理と、
第二プロセッサが、前記メモリに対して、前記複数のロード命令の実行中にストア命令を発行する第二の処理と、
前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき順序性が保証されているかを判定する第三の処理と、
を備える、
ことを特徴とする制御方法。
(付記5)
前記第二プロセッサは、前記第一プロセッサによる前記ロード命令の対象となる領域と同一の領域に対して、前記ストア命令を発行する、
ことを特徴とする付記4記載の制御方法。
(付記6)
前記第二プロセッサは、前記順序性判定部が判定を行なう度に、前記ストア命令を発行するタイミングを変更し、
前記第一の処理、前記第二の処理、及び、前記第三の処理を繰り返し行なう、
ことを特徴とする付記4又は5記載の制御方法。
1 演算処理装置
10 CPU(試験対象プロセッサ,試験補助プロセッサ)
11 記憶部
12 メモリ
13 IF部
14 I/O
15 バス
17 コア
21 初期化部
22 試験部
23 後処理部
24 エラー通知部
25 連続ロード命令発行部
26 結果保存部
27 エラーチェック部(順序保証判定部)
31 待機命令発行部
32 補助ストア命令発行部
100 試験プログラム
101 試験対象プロセッサ用試験プログラム
102 試験補助プロセッサ用試験プログラム
121 試験対象領域
122 ロード値保存領域

Claims (4)

  1. 同一アドレスに対するアクセスに際し後続のロード命令またはストア命令が先のロード命令またはストア命令よりも先に実行される追い越しを許可しない演算処理装置であって、
    データを記憶するメモリと、
    前記メモリの前記同一アドレスに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一プロセッサと、
    前記メモリの前記同一アドレスに対して、前記複数のロード命令の実行中にストア命令を一回発行する第二プロセッサと、
    前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき、前記追い越しの発生の有無を判定し序保判定結果として出力する順序保証判定部と、
    を備え
    前記順序保証判定部は、前記複数のロード命令によって前記メモリの前記同一アドレスからロードされるロード値が、前記同一アドレスに設定された初期値と、前記ストア命令によってストアされた、当該初期値とは異なる値との間で変化する回数に基づき、前記追い越しの発生の有無を判定する、
    ことを特徴とする演算処理装置。
  2. 前記第二プロセッサは、前記第一プロセッサによる前記ロード命令の対象となる領域と同一の領域に対して、前記ストア命令を発行する、
    ことを特徴とする請求項1記載の演算処理装置。
  3. 前記第二プロセッサは、前記順序保証判定部が判定を行なう度に、前記ストア命令を発行するタイミングを変更し、
    前記第一プロセッサによる前記ロード命令の発行、前記第二プロセッサによる前記ストア命令の発行、及び、前記第一プロセッサによる前記判定を繰り返し行なう、
    ことを特徴とする請求項1又は2記載の演算処理装置。
  4. 同一アドレスに対するアクセスに際し後続のロード命令またはストア命令が先のロード命令またはストア命令よりも先に実行される追い越しを許可しない演算処理装置の制御方法であって、
    第一プロセッサが、データを記憶するメモリの前記同一アドレスに対して、データをそれぞれ読み出す複数のロード命令を連続して発行する第一の処理と、
    第二プロセッサが、前記メモリの前記同一アドレスに対して、前記複数のロード命令の実行中にストア命令を一回発行する第二の処理と、
    前記第一プロセッサによって前記メモリからロードされたデータに含まれる値に基づき、前記追い越しの発生の有無を判定し序保判定結果として出力する第三の処理と、
    を備え
    前記第三の処理において、前記第一プロセッサは、前記複数のロード命令によって前記メモリの前記同一アドレスからロードされるロード値が、前記同一アドレスに設定された初期値と、前記ストア命令によってストアされた、当該初期値とは異なる値との間で変化する回数に基づき、前記追い越しの発生の有無を判定する、
    ことを特徴とする制御方法。
JP2018114403A 2018-06-15 2018-06-15 演算処理装置、及び制御方法 Active JP7102963B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018114403A JP7102963B2 (ja) 2018-06-15 2018-06-15 演算処理装置、及び制御方法
US16/419,040 US11500639B2 (en) 2018-06-15 2019-05-22 Arithmetic processing apparatus and control method using ordering property

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018114403A JP7102963B2 (ja) 2018-06-15 2018-06-15 演算処理装置、及び制御方法

Publications (2)

Publication Number Publication Date
JP2019219717A JP2019219717A (ja) 2019-12-26
JP7102963B2 true JP7102963B2 (ja) 2022-07-20

Family

ID=68839328

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018114403A Active JP7102963B2 (ja) 2018-06-15 2018-06-15 演算処理装置、及び制御方法

Country Status (2)

Country Link
US (1) US11500639B2 (ja)
JP (1) JP7102963B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060600A1 (en) 2003-09-12 2005-03-17 Jeddeloh Joseph M. System and method for on-board timing margin testing of memory modules

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737636A (en) * 1996-01-18 1998-04-07 International Business Machines Corporation Method and system for detecting bypass errors in a load/store unit of a superscalar processor
JP2001222442A (ja) * 2000-02-08 2001-08-17 Fujitsu Ltd パイプライン試験方法、パイプライン試験命令生成方法及びその記憶媒体
JP4461934B2 (ja) * 2004-07-13 2010-05-12 富士通株式会社 キャッシュメモリ試験システム、試験方法、試験プログラム
GB0623934D0 (en) * 2006-11-29 2007-01-10 Ibm Testing the compliance of a design with the synchronization requirements of a memory model
US10067762B2 (en) * 2016-07-01 2018-09-04 Intel Corporation Apparatuses, methods, and systems for memory disambiguation
US10891071B2 (en) * 2018-05-15 2021-01-12 Nxp Usa, Inc. Hardware, software and algorithm to precisely predict performance of SoC when a processor and other masters access single-port memory simultaneously

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060600A1 (en) 2003-09-12 2005-03-17 Jeddeloh Joseph M. System and method for on-board timing margin testing of memory modules

Also Published As

Publication number Publication date
US20190384610A1 (en) 2019-12-19
JP2019219717A (ja) 2019-12-26
US11500639B2 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
JP6660991B2 (ja) マルチスレッドプロセッサでのタスクのスケジューリング
US10241880B2 (en) Efficient validation/verification of coherency and snoop filtering mechanisms in computing systems
US9734033B2 (en) Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads
US20140317628A1 (en) Memory apparatus for processing support of long routing in processor, and scheduling apparatus and method using the memory apparatus
US11036673B2 (en) Assigning identifiers to processing units in a column to repair a defective processing unit in the column
US20130152048A1 (en) Test method, processing device, test program generation method and test program generator
JP2011086298A (ja) プログラム・フロー制御
JP6205168B2 (ja) 並列構造化重複検出を利用する並列モデル検査のためのシステムおよび方法
US9354850B2 (en) Method and apparatus for instruction scheduling using software pipelining
JP2005235135A (ja) ベクトル処理装置、及び、追い越し制御回路
JP4865016B2 (ja) プロセッサ
US20110131031A1 (en) Dynamic generation of tests
JP7102963B2 (ja) 演算処理装置、及び制御方法
CN111522648B (zh) 一种区块链的交易处理方法、装置及电子设备
US9218273B2 (en) Automatic generation of a resource reconfiguring test
US20110320784A1 (en) Verification of processor architectures allowing for self modifying code
CN107665169B (zh) 处理器程序的测试方法和装置
US9934118B2 (en) Reducing SPQL tester time for the critical paths stress test
US11119873B2 (en) Processor repair
CN111383704B (zh) 一种存储器内建自测试电路和对存储器的测试方法
CN107423029B (zh) 计算单元
US20110320783A1 (en) Verification using opcode compare
US20140013312A1 (en) Source level debugging apparatus and method for a reconfigurable processor
US20130311164A1 (en) Dynamic generation of test segments
US20130205171A1 (en) First and second memory controllers for reconfigurable computing apparatus, and reconfigurable computing apparatus capable of processing debugging trace data

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220405

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220620

R150 Certificate of patent or registration of utility model

Ref document number: 7102963

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150