JPWO2013105237A1 - 試験プログラム、試験方法、及び処理装置 - Google Patents
試験プログラム、試験方法、及び処理装置 Download PDFInfo
- Publication number
- JPWO2013105237A1 JPWO2013105237A1 JP2013553138A JP2013553138A JPWO2013105237A1 JP WO2013105237 A1 JPWO2013105237 A1 JP WO2013105237A1 JP 2013553138 A JP2013553138 A JP 2013553138A JP 2013553138 A JP2013553138 A JP 2013553138A JP WO2013105237 A1 JPWO2013105237 A1 JP WO2013105237A1
- Authority
- JP
- Japan
- Prior art keywords
- test
- processor
- processing
- data
- unit
- 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.)
- Pending
Links
Images
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本発明を適用した1システムでは、複数の処理装置の動作を確認するための試験を行う場合、複数の処理装置に、試験を並行して実行させる。複数の処理装置のなかで試験を終了した処理装置に、複数の処理装置がそれぞれ実行した試験の結果を出力する第1の処理装置として動作すべきか否かを判定させ、試験を終了した処理装置のなかで第1の処理装置として動作すべきと判定した処理装置に、第1の処理装置として動作させる。
Description
本発明は、複数の処理装置を対象に、その動作を確認するための試験を行うための技術に関する。
CPU(Central Processing Unit)等のプログラムを実行可能な処理装置では、専用のプログラム(以降「試験プログラム」と呼ぶ)を実行させて、そのマイクロアーキテクチャ、つまり内部構造設計を検証するための試験が行われる。処理装置を複数、備えたシステムでは、試験プログラムとして、その試験を行うためのサブプログラム、及びそのサブプログラムを起動する別のサブプログラムを有する試験プログラムが用いられる。ここでは以降、試験を行うためのサブプログラムを「試験部」、その試験部を起動するサブプログラムを「制御部」とそれぞれ呼ぶことにする。
上記試験プログラムは、例えばスタンドアロンで各処理装置のマイクロアーキテクチャの検証を行う。その試験プログラムを実行する複数の処理装置のうちの一つは、制御部の実行により、他の処理装置に試験プログラムを起動させ、その起動によって実行される制御部による試験部の起動を実現させる。複数の処理装置のうちの一つは、その試験部の実行によって他の処理装置で得られる試験結果の出力を行う。それにより、複数の処理装置のうちの一つは、処理装置全体の試験を進行させ、試験結果(例えば発生したエラーに関するエラー情報)を出力する試験管理装置として機能する。以降、試験管理装置として機能する処理装置は便宜的に「管理処理装置」と呼ぶことにする。
試験部による試験は、普通、マイクロアーキテクチャの検証のために、処理装置の使用可能な資源を全て対象にして行われる。そのため、各処理装置で実行される制御部は、試験部を起動させ、起動させた試験部に制御を渡した後、スリープ状態となる。試験部に制御を渡す前に制御部によって処理装置上で使用されていた資源のデータは、起動された試験部によって、処理装置が使用可能なメモリ上に退避される。メモリ上に退避されるデータは、例えば各種レジスタに格納されていたデータである。退避されたデータは、試験部から制御部に制御を渡す際に、処理装置に戻されることにより、制御部から試験部に制御を渡す前の状態が復元される。
マイクロアーキテクチャに存在する不具合は、試験部をハングアップさせる可能性がある。試験部の実行中にハングアップが発生した処理装置は、再度、制御部を実行することはできない。これは、管理処理装置が試験部の実行中にハングアップを起こした場合、他の処理装置のなかに試験部から制御部に制御を渡した処理装置が存在していても、その処理装置の試験結果は出力できないことを意味する。このため、各処理装置に試験プログラムを最初から実行させなければならない。
各処理装置に試験プログラムを最初から実行させることは、それまでに試験者が行った作業が無駄になることを意味する。各処理装置のなかで管理処理装置として機能させる処理装置を変更しても、変更後の処理装置が試験(試験部)の実行中にハングアップを起こす可能性がある。各処理装置のなかで試験の実行中にハングアップしなかった処理装置の存在、及びその処理装置の試験結果は、ハングアップを発生させた原因の解析を行ううえで有用な情報となる可能性がある。これらのことを考慮するならば、処理装置が試験の実行中に発生したハングアップに対応させ、ハングアップしなかった処理装置の試験結果を確実に出力できるようにすることが考えられる。
本発明の1側面は、管理処理装置として機能する処理装置が試験の実行中に発生するハングアップに対応し、ハングアップしなかった処理装置の試験結果を出力できるようにするための技術を提供することを目的とする。
本発明を適用した1システムでは、複数の処理装置の動作を確認するための試験を行う場合、複数の処理装置に、試験を並行して実行させ、複数の処理装置のなかで試験を終了した処理装置に、該複数の処理装置がそれぞれ実行した試験の結果を出力する第1の処理装置として動作すべきか否かを判定させ、試験を終了した処理装置のなかで第1の処理装置として動作すべきと判定した処理装置に、該第1の処理装置として動作させる。
本発明を適用した1システムでは、管理処理装置として機能する処理装置が試験の実行中にハングアップした場合であっても、ハングアップしなかった処理装置の試験結果を出力することができる。
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施形態による試験プログラムを実行可能なプロセッサを複数、備えたマルチプロセッサシステムの構成例を説明する図である。図1に表すように、マルチプロセッサシステム1は、計N+1個のプロセッサ11(11−0〜11−N)、メモリ(例えばメモリモジュール)12、I/0(Input/Output)装置13、表示装置14、入力装置15、インターフェース(I/F)16及び各部11〜14、16を互いに接続するバス17を備えている。
図1は、本実施形態による試験プログラムを実行可能なプロセッサを複数、備えたマルチプロセッサシステムの構成例を説明する図である。図1に表すように、マルチプロセッサシステム1は、計N+1個のプロセッサ11(11−0〜11−N)、メモリ(例えばメモリモジュール)12、I/0(Input/Output)装置13、表示装置14、入力装置15、インターフェース(I/F)16及び各部11〜14、16を互いに接続するバス17を備えている。
I/O装置13は、ハードディスク装置、或いは半導体記憶装置等の記憶装置であり、本実施形態による試験プログラム20は、このI/O装置13に格納されている。メモリ12は、全てのプロセッサ11がアクセス可能な記憶装置であり、各プロセッサ11が試験プログラム20の実行のための領域12aが確保される。その領域12aは、以降、「データ管理領域」と呼ぶことにする。
試験プログラム20は、各プロセッサ11の動作、例えばそのマイクロアーキテクチャ(内部構造設計)を検証するためのプログラムであり、全てのプロセッサ11にとって実行の対象となる。その試験プログラム20は、マイクロアーキテクチャを検証する試験を行うためのサブプログラムであるテスト部22、及びそのテスト部22を起動する別のサブプログラムである制御部21を含む。本実施形態による処理装置は、プロセッサ11が試験プログラム20を実行することで実現される。
試験プログラム20の制御部21は、図1に表す構成のマルチプロセッサシステムでは、N+1個のプロセッサ11のうちの1つに、他のプロセッサ11の動作を制御し、試験結果を出力する管理機能を実現させる。その管理機能を実現させる制御部21は、テスト部22を起動させ、他のプロセッサ11に試験プログラム20を起動させる。試験プログラム20を起動させた他のプロセッサ11は、制御部21を実行し、テスト部22を起動させる。この結果、管理機能を実現させる制御部21は、各プロセッサ11に並行に試験を実施させる。以降、管理機能が実現されるプロセッサ11は便宜的に「管理プロセッサ11」と表記する。
管理プロセッサ11となるプロセッサ11は、例えばバス17及びインターフェース16を介した入力装置15からの試験者の指示に従い、I/0装置13に格納された試験プログラム20をメモリ12に読み出し、試験プログラム20を起動する。試験プログラム20の起動により、制御部21の実行が開始される結果、プロセッサ11は管理プロセッサ11として動作する。
試験プログラム20を実行するプロセッサ11が管理プロセッサ11として動作するか否かは、例えば実行時に試験プログラム20に取り込ませるデータにより制御することができる。その制御は、制御部21を起動したプロセッサ11に、他の制御部21を起動したプロセッサ11の有無を確認させることでも実現できる。ここでは便宜的に前者を想定する。
テスト部22は、マイクロアーキテクチャの検証のために、起動したプロセッサ11の使用可能な資源を全て対象にした試験を行う。このため、各プロセッサ11で起動されたテスト部22は、試験を実施する前に、起動したプロセッサ11で制御部21によって使用されていた資源のデータのなかで退避すべきデータをメモリ12上のデータ管理領域12a内に退避させる。
図4は、プロセッサの構成例を説明する図である。ここで図4を参照し、試験プログラム20を実行させる対象となるプロセッサ11の構成例、及びその構成例のプロセッサ11で退避の対象となるデータについて具体的に説明する。
図4に表すプロセッサ11は、MTP(Multi Threaded Processing)に対応したものであり、1つのSXユニット(Secondary Cache and External Access Unit)41と、4つのプロセッサ・コア42とを備えている。各プロセッサ・コア42は、Sユニット(Storage Unit)45、Iユニット(Instruction Control Unit)46、及びEユニット(Execution Unit)47を備えている。
SXユニット41は、レベル2のユニファイドキャッシュ(図4中「U2 Cache」と表記)41bを備え、このユニファイドキャッシュ41bを用いて、各プロセッサ・コア42のSユニット45との間でデータの入出力を行う。SXユニット41は、バス15を介したデータの送受信を行うためにインターフェース・ロジック41aを備えている。このインターフェース・ロジック41aは、バス15から受信したデータを格納するムーブイン・バッファ41a1、及びバス15に送信するデータを格納するムーブアウト・バッファ41a2を備えている。バス15から受信されるデータは、メモリ12からのデータであり、バス14に送信するデータは、メモリ12に格納されるデータである。
各プロセッサ・コア42のSユニット45は、ロード及びストア命令のために全てのデータの供給、及び受給を扱う。そのために、Sユニット45は、SXユニット41用のインターフェース(図4中「SX Interface」と表記)45a、命令用のレベル1キャッシュ(図4中「L1I Cache」と表記)45b、データ用のレベル1キャッシュ(図4中「L1D Cache」と表記)45c、命令用のTLB(Translation Look-aside Buffer。図4中「I−TLB」と表記)45d、及びデータ用のTLB(図4中「D−TLB」と表記)45eを備えている。インターフェース45aは、SXユニット41から入力したデータ(命令を含む)の格納に用いられるバッファ(図4中「SX Order Queue」と表記)45a1、及びEユニット47からのデータの格納に用いられるバッファ(図4中「Store Queue」と表記)45a2を備える。
SXユニット45からの命令及びデータは、インターフェース45aのバッファ45aに格納され、更にキャッシュ45b或いは45cに格納される。このとき、キャッシュ45b或いは45cに格納される命令、或いはデータのアドレスは論理アドレス(仮想アドレス)である。
TLB45dは、命令の論理アドレスを対応する物理アドレス(実アドレス)に変換し、その対応関係を格納する。論理アドレスは、タグとして扱われ、命令は、キャッシュ45bのそのタグにより特定されるエントリに格納される。そのためにTLB45dは、例えばタグ(論理アドレス(例えば仮想ページ番号)、物理アドレス(例えば物理ページ番号)、及び状態フラグを格納可能なエントリが複数、確保されたテーブルを備えている。そのテーブルのエントリのうち、32のエントリは、エントリ毎に異なる論理アドレスを格納可能なフルアソシアティブ(Full Associative)方式である。2048のエントリは、同一の論理アドレスを2つのエントリに格納可能な2ウェイセットアソシアティブ方式である。これは、TLB45eも同様である。
命令は、パイプライン処理される。そのパイプライン処理では、命令は投機的に投入される。バッファ45a2は、ストア命令のレイテイシをパイプライン処理から分離するためのものであり、ストア命令がデータを待っている間、パイプライン処理を継続させることを格納にする。
Iユニット46は、命令フェッチパイプライン46a、ブランチヒストリ46b、命令バッファ46c、コミットスタックエントリ46d、リザベーションステーション群46e、及びレジスタ群46fを備える。MTPをサポートするために、命令バッファ46c、コミットスタックエントリ46d及びレジスタ群46fはそれぞれ二重化されている。
命令フェッチパイプライン46aは、フェッチすべき命令のアドレス生成、キャッシュ45bへのアクセス、命令の命令バッファ46cへの書き込み、等を行う。ブランチヒストリ46bは、命令の分岐先と分岐方向を予測するためのテーブルである。命令フェッチパイプライン46aは、ブランチヒストリ46bを参照して、命令をフェッチし、命令バッファ46cに書き込む。命令バッファ46cは、そのようにしてフェッチされた命令を保持するためのバッファである。
コミットスタックエントリ46dは、実行中の命令の情報を保持するためのバッファである。リザベーションステーション群46eを構成する各リザベーションステーションは、対応付けられた種類の命令が実行可能になるまで保持するためのバッファである。実行可能になった命令は、対応するリザベーションステーションから読み出され、Eユニット47に出力される。
レジスタ群46fは、命令実行制御のためのプログラム可視の各種レジスタである。図4中に表記のPC、nPC、CCR、及びFSRは、それぞれ、異なるレジスタの種類を表している。PCは「Program Counter」の略記である。同様に、nPCは「next Program Counter」、CCRは「Condition Code Register」、及びFSRは「Floating-Point State Register」の略記である。
PCは、次に投入すべき命令のアドレスを保持する。nPCは、次にPCに格納すべきアドレスを保持する。CCRは、例えば複数のフラグを有するコンディションコードを保持する。FSRは、Eユニット47内の浮動小数点データを処理するALU(Arithmetic and Logic Unit)の実行モードと状態情報とを保持する。
Eユニット47は、命令を処理するためのALU群47aを備える。ALU群47aを構成するALUとしては、2つの整数実行パイプライン(図4中「EXA」、「EXB」と表記)、2つの浮動小数点実行パイプライン(図4中「FLA」、「FLB」と表記)、2つの仮想アドレス加算器(図4中「EAGA」、「EAGB」と表記)がある。Iユニット46が有するレジスタ群46fのFSRに実行モードが格納されるALUは、浮動小数点実行パイプラインである。
コントロール・ロジック47bは、Iユニット46のリザベーションステーション群46にアクセスし、実行(投入)可能になった命令を対応するリザベーションステーションから読み出し、ALU群47aの対応するALUに供給する。ALU群47aの命令の実行に必要なデータは、レジスタ群47cを介して、バッファ45a2、キャッシュ45c、或いはレジスタ群46fから取得される。ALU群47aの命令の実行によって得られたデータは、レジスタ群47cを介して、バッファ45a2、キャッシュ45c、或いはレジスタ群46fの何れかのレジスタに格納される。
Eユニット47は、上記構成要素の他に、GUB(GPR Update Buffer)47d、CWR(Current Window Register)47e、GPR(General Purpose register)47f、FUB(FPR Update Buffer)47g及びFPR(Floating Point Register)47hを備える。これらは、MTPをサポートするために二重化されている。図4では明確にしていないが、これらGUB47d、GPR47f、FUB47g及びFPR47hは、それぞれ複数、存在する。
上記GPR47fは、整数データの保持に用いられる汎用のレジスタである。CWR47eは、GPR47fのコピーに用いられるレジスタである。GUB47dは、GPR47f用のリネーミングレジスタファイルである。FPR47hは、浮動小数点データの保持に用いられるレジスタである。FUB47gは、FPR47h用のリネーミングレジスタファイルである。
上記のような構成のプロセッサ11では、Iユニット46が備えたレジスタ群46fの各レジスタにそれぞれ保持されたデータ、及びEユニット47のGPR47f及びFPR47hにそれぞれ保持されたデータが退避対象となる。それにより、テスト部22が起動されたプロセッサ11は、それらのレジスタに保持されたデータをメモリ12に退避させる。なお、退避対象となるデータは、プロセッサ11の構成等に依存することから、特に限定されるものではない。
テスト部22は、メモリ12に退避させたデータを、制御部21に制御を渡す際にプロセッサ11に戻すことにより、制御部21からテスト部22に制御が渡される前の状態を復元する。その状態を復元することにより、プロセッサ11は制御部21を実行可能な状態に移行する。
テスト部22から制御部21に制御が渡された管理プロセッサ11は、他のプロセッサ11による試験の結果を収集して出力する。その出力は、図1に表す構成では表示装置14を用いて行われる。他のプロセッサ11の試験結果は、バス17を介した通信により、或いはメモリ12を介した試験結果の取得により収集することができる。ここでは、便宜的に、他のプロセッサ11の試験結果はバス17を介した通信により収集されると想定する。
制御部21からテスト部22に制御が渡される前の状態を復元することにより、プロセッサ11は制御部21を実行可能な状態になる。そのため、テスト部22が何らかの原因によってハングアップしたプロセッサ11では、制御部21を再度、実行できなくなる。そのプロセッサ11が管理プロセッサ11であった場合、ハングアップが発生していないプロセッサ11の試験結果も出力できなくなる。このことから、本実施形態では、テスト部22から制御部21に制御が渡される場合、複数のプロセッサ11のなかで管理プロセッサ11として動作するプロセッサ11を自律的に決定させるようにしている。そのように管理プロセッサ11を固定とせず、ハングアップが発生していないプロセッサ11のなかの1つを管理プロセッサ11として動作させるため、ハングアップが発生していないプロセッサ11の試験結果を確実に出力させることができる。
テスト部22から制御部21に制御を渡したプロセッサ11のなかから新たに決定される管理プロセッサ11は、制御部21からテスト部22に制御を渡す前に動作していた管理プロセッサ11とは一致しない可能性がある。このことから、それら2つの管理プロセッサ11を区別する必要がある場合、新たに決定される管理プロセッサ11は「第2の管理プロセッサ11」と表記する。制御部21からテスト部22に制御を渡す前に動作していた管理プロセッサ11は「第1の管理プロセッサ11」と表記する。
第1の管理プロセッサ11と第2の管理プロセッサ11とが同じであった場合、第2の管理プロセッサ11は、自身がメモリ12に退避させたデータを取り込み、制御部21からテスト部22に制御を渡す前の状態を復元する。第1の管理プロセッサ11と第2の管理プロセッサ11とが同じでない場合、第2の管理プロセッサ11は、自身がメモリ12に退避させたデータではなく、別のプロセッサ11である第1の管理プロセッサ11がメモリ12に退避させたデータを取り込み、制御部21からテスト部22に制御を渡す前の第1の管理プロセッサ11の状態を復元する。
図1に表すようなマルチプロセッサシステム1では、各プロセッサ11には各プロセッサ11を個別に識別するための識別情報が割り当てられる。図4に表すような構成のプロセッサ11は、割り当てられた識別情報をレジスタ、例えばGPR47fの一つに保持する。そのような識別情報は、例えメモリ12に退避させるデータであっても、他のプロセッサ11に取り込ませるべきではない。
このようなことから、各プロセッサ11からメモリ12に退避させるデータは、他のプロセッサ11が取り込んでも良いデータ(以降「汎用データ」と呼ぶ)と、他のプロセッサ11に取り込ませるべきでないデータ(以降「専用データ」と呼ぶ)と、に大別することができる。それにより、本実施形態では、各プロセッサ11に、退避させるデータを汎用データと専用データとに分けてメモリ12に退避させるようにしている。このため、第1の管理プロセッサ11と第2の管理プロセッサ11とが同じでない場合、第2の管理プロセッサ11は、自身の専用データと、第1の管理プロセッサ11の汎用データとをメモリ12から取り込み、制御部21を実行可能な状態を復元にする。第1の管理プロセッサ11を各プロセッサ11が認識できるように、本実施形態では、メモリ12上に領域を確保し、第1の管理プロセッサに、自身の識別情報をその領域内に書き込ませるようにしている。その領域内に書き込まれる識別情報は以降「フラグA」と表記する。そのフラグAが書き込まれる領域は以降「フラグ領域」と表記する。
上記のように、第1の管理プロセッサ1以外の各プロセッサ11は、その第1の管理プロセッサ11の制御により、試験プログラム20を起動し、制御部21によってテスト部22を起動させる。テスト部22に制御を渡したプロセッサ11は、ハングアップが発生しない場合、試験を実行した後、メモリ12に退避させたデータを取り込む。本実施形態では、各プロセッサ11が適切なデータを取り込めるように、その取り込みのためにメモリ12に最初にアクセスしたプロセッサ11を第2の管理プロセッサ11とさせている。そのアクセスが最初のものか否かを各プロセッサ11が判定できるように、第1の管理プロセッサ11は、フラグAの書き込みの他に、その判定用のフラグのフラグ領域への書き込みを行うようになっている。そのフラグは、例えば何れかのプロセッサ11で試験が終了したか否かを表す情報である。第1の管理プロセッサ11は、そのフラグとして、試験が終了していないことを表す情報を書き込む。そのフラグは以降「試験終了フラグ」或いは「フラグB」と表記する。
試験が終了したプロセッサ11は、メモリ12にアクセスしてフラグBを参照し、そのフラグBが試験の終了を表しているか否かを確認する。それにより、フラグBが試験の終了を表していないことを確認したプロセッサ11は、試験の終了を表す情報にフラグBを更新し、自身の識別情報にフラグAを更新する。そのプロセッサ11が、第2の管理プロセッサ11として動作する。
図3は、試験プログラムを実行する各プロセッサによってメモリ上に確保される領域例を説明する図である。
上記のように、メモリ12上には、各プロセッサ11(11−0〜11−N)が試験プログラム20の実行のためのデータ管理領域12aが確保される。そのデータ管理領域12a内には、図3に表すように、サブ領域として、フラグA311、及びフラグB312が格納されるフラグ領域31、及び各プロセッサ11(11−0〜11−N)がデータの退避に用いる領域であるレジスタ退避領域32(32−0〜32−N)が確保される。各レジスタ退避領域32内には、専用データ格納用の専用レジスタ格納領域321、及び汎用データ格納用の汎用レジスタ退避領域322が確保される。メモリ12上でデータ管理領域12aが確保される場所、各プロセッサ11が用いるレジスタ退避領域32の場所は、例えば試験プログラム20の起動時に取り込ませるデータにより各プロセッサ11に特定させることができる。
本実施形態では、図3に表すように、各プロセッサ11と、プロセッサ11がデータの退避に用いるレジスタ退避領域32との関係を対応付け、レジスタ退避領域32内には専用データと汎用データとを分けて格納するようにしている。そのようにして、第1の管理プロセッサ11とは異なる何れのプロセッサ11も、第1の管理プロセッサ11の汎用データを用いて、制御部21からテスト部22に制御が渡される前の状態を復元できるようにしている。
試験が終了したプロセッサ11は、メモリ12にアクセスしてフラグB312を参照し、そのフラグBが試験の終了を表しているか否かを確認する。それにより、フラグB312が試験の終了を表していないことを確認したプロセッサ11は、フラグA311を参照し、更に第1の管理プロセッサ11が自身であったか否か判定する。その判定により、自身が第1の管理プロセッサ11でないことを確認したプロセッサ11は、自身が退避させた汎用データと、第1の管理プロセッサ11の汎用データとをメモリ12上で入れ替える。
上記のような入れ替えにより、各プロセッサ11は、対応するレジスタ退避領域32上のデータを用いて、制御部21からテスト部22に制御が渡される前の状態を復元する。そのため、復元自体は、処理が複雑になるのが回避され、従来と同様に行うことができる。第2の管理プロセッサ11として機能させるプロセッサ11に上記のような入れ替えを行わせるのは、このためである。その入れ替えを行わなかったプロセッサ11は、第1の管理プロセッサ11として機能したものを含め、第2の管理プロセッサ11として機能しない。
第1の管理プロセッサ11と第2の管理プロセッサ11とを異なるプロセッサ11に機能させることを可能とするために、本実施形態では、試験プログラム20は以下のような機能構成となっている。図2A及び図2Bを参照して、具体的に説明する。図2Aは制御部21の機能構成例を表す図であり、図2Bはテスト部22の機能構成例を表す図である。
図2Aに表すように、制御部21は、機能構成(例えばサブプログラム)として、フラグA設定部211、フラグB設定部212、テスト部起動部213、終了監視部214、及び試験結果出力部215を含む。図2Bに表すように、テスト部22は、機能構成(例えばサブプログラム)として、レジスタ退避部221、試験実行部222、フラグB判定部223、汎用レジスタ入れ替え部224、フラグA再設定部225、及びレジスタ復元部226を含む。
フラグA設定部211は、メモリ12上にフラグA311を格納するための機能である。フラグB設定部212は、メモリ12上にフラグB312を格納するための機能である。そのため、フラグA設定部211及びフラグB設定部212は共に、第1の管理プロセッサ11でのみ動作する。
テスト部起動部213は、テスト部22を起動するための機能である。動作内容は、第1の管理プロセッサ11とそれ以外のプロセッサ11とで異なる。終了監視部214は、他のプロセッサ11の試験の終了を監視するための機能である。その終了監視部214は、テスト部22から制御部22に制御が渡されたプロセッサ11のなかで第2の管理プロセッサ11として機能するプロセッサ11でのみ動作する。
試験結果出力部215は、テスト部22による試験の結果を出力するための機能である。試験結果出力部215は、第2の管理プロセッサ11以外のプロセッサ11では、上記想定から、試験結果を第2の管理プロセッサ11に出力させる。第2の管理プロセッサ11では、試験結果出力部215は、自身の試験結果と、他のプロセッサ11から収集した試験結果とを出力させる。
一方、テスト部22のレジスタ退避部221は、退避の対象となるデータを退避するための機能である。レジスタ退避部221は、退避の対象となるデータを専用データ、汎用データとに大別し、メモリ12上の対応するレジスタ退避領域32に格納させる。試験実行部222は、試験を実施するための機能である。フラグB判定部223は、試験実行部222による試験が終了した場合に、メモリ12上のフラグB312の内容を判定するための機能である。フラグB312の内容の判定とは、上記のように、フラグB312が試験の終了を表しているか否かの判定である。
汎用レジスタ入れ替え部224は、試験の終了を表す内容へのフラグB312の更新、及び必要に応じた汎用データの入れ替えを行うための機能である。汎用レジスタ入れ替え部224は、フラグB判定部223により、フラグB312が試験の終了を表していないと判定された場合に動作する。汎用データの入れ替えを行う必要性は、フラグA311を参照して判定される。それにより、汎用データの入れ替えは、フラグA311の内容(識別情報)が、フラグB判定部223を実行しているプロセッサ(以降「自プロセッサ」)11を表していないと判定された場合に行われる。
フラグA再設定部225は、フラグA311として、自プロセッサの識別情報をメモリ12に書き込むための機能である。このフラグA再設定部225は、上記汎用レジスタ入れ替え部224と同様に、フラグB判定部223により、フラグB312が試験の終了を表していないと判定された場合に動作する。レジスタ復元部226は、対応するレジスタ退避領域32上のデータを読み出し、制御部21からテスト部22に制御を渡す前の状態を自プロセッサ11上に復元するための機能である。汎用レジスタ入れ替え部224が動作する場合、レジスタ復元部226は、汎用レジスタ入れ替え部224が動作した後に動作する。
本実施形態では、制御部21に、フラグA設定部211、及びフラグB設定部212を追加し、テスト部22に、フラグB判定部223、汎用レジスタ入れ替え部224、及びフラグA再設定部225を追加している。それにより、第1の管理プロセッサ11と異なるプロセッサ11が第2の管理プロセッサ11として機能するのを可能にさせている。図2A及び図2Bにそれぞれ表す制御部21及びテスト部22の機能構成は一例であり、そのような機能構成に限定されるものではない。
図5は、試験プログラムを実行する各プロセッサの動作を説明する図である。次に図5を参照して、試験プログラム20を実行した場合の各プロセッサ11の動作について具体的に説明する。
図5では、説明上、便宜的に、プロセッサ11の数は3つとしている。プロセッサ11−0が第1の管理プロセッサ11と想定している。プロセッサの符号としては、特定できないプロセッサ以外、「11」にハイフンと数字が続くシンボル列(例えば「11−0」)を用いる。図5中に表記の「111」及び「112」は、それぞれ、専用データが格納された1つ以上の資源であるレジスタ(以降「専用レジスタ」と呼ぶ)、汎用データが格納された複数のレジスタ群(以降「汎用レジスタ群」と呼ぶ)、を表している。
予め第1の管理プロセッサ11として設定されたプロセッサ11−0は、入力装置15を介した指示により、I/0装置13からメモリ12に試験プログラム20をロードし、試験プログラム20を起動する(S1)。その起動により、プロセッサ11−0は、制御部21を実行する。
制御部21の実行を開始したプロセッサ11−0は、自身の識別情報(例えばプロセッサID(identifier))をフラグA311としてメモリ12に書き込む(S2)。次に、プロセッサ11−0は、試験が終了していないことを表す情報をフラグB312としてメモリ12に書き込む(S3)。その後、プロセッサ11−0は、プロセッサ11−1及び11−2に試験プログラム20を起動させる(S4)。その起動により、各プロセッサ11−1及び11−2は、制御部21の実行を開始する。
図5では、フラグA311及びフラグB312のそれぞれの内容として「0」を表記している。フラグA311の内容として表記した「0」は、プロセッサ11−0に識別情報として割り当てられたプロセッサIDの値である。フラグB312の内容として表記の「0」は、試験の未終了を表している。フラグB312で試験の終了を表す値は「1」を想定する。
次にプロセッサ11−0は、テスト部22を起動する(S5)。他のプロセッサ11−1及び11−2は、試験プログラム20の起動によって実行が開始される制御部21によってテスト部22を自動的に起動する(S5’)。
テスト部22を起動させた各プロセッサ11−0〜11−2は、それぞれ、専用レジスタ111に格納されている専用データを、メモリ12上の対応するレジスタ退避領域32−0〜32−2内の専用レジスタ退避領域321に書き込む(S6)。更に各プロセッサ11−0〜11−2は、それぞれ、汎用レジスタ群112に格納されている汎用データを、メモリ12上の対応するレジスタ退避領域32−0〜32−2内の汎用レジスタ退避領域322に書き込む(S7)。図5中に表記の「00001111」「00110011」及び「01010101」は、それぞれ、各プロセッサ11−0〜11−2から退避される専用データの内容を表している。図5中に表記の「11110000」「11001100」及び「10101010」は、それぞれ、各プロセッサ11−0〜11−2から退避される汎用データの内容を表している。
テスト部22を実行している各プロセッサ11−0〜11−2は、次に試験を行い、その試験の終了後、フラグB312を参照する。その参照により、フラグB312の値が0であることを確認したプロセッサ11は、フラグB312の値を0から1に更新すると共に、更にフラグA311を参照し、汎用データを入れ替えるべきプロセッサ11(ここではプロセッサ11−0)を特定する(以上S8)。それにより、フラグA311の値が自プロセッサ11を表す値でないことを確認したプロセッサ11は、特定したプロセッサ11の汎用データと自プロセッサ11の汎用データとをメモリ12上で入れ替える(S9)。図5は、プロセッサ11−2が最初に試験を終了したことにより、プロセッサ11−2が、自身の汎用データとプロセッサ11−0の汎用データとを入れ替える様子を表している。フラグA311の値が自プロセッサ11を表す値であることを確認したプロセッサ11は、そのような入れ替えは行わない。
フラグB312の値が0であることを確認したプロセッサ11は、次に、フラグA311として、自プロセッサ11を表す値を書き込む(S10)。次に、そのプロセッサ11は、対応するレジスタ退避領域32内の専用レジスタ退避領域321に退避させた専用データを読み出し、専用レジスタ111に格納する(S11)。プロセッサ11は、更に、対応するレジスタ退避領域32内の汎用レジスタ退避領域322に退避させた汎用データを読み出し、汎用レジスタ群112に格納する(S12)。そのようにして、制御部21からテスト部22に制御を渡す前の状態を復元させたプロセッサ11は、テスト部22から制御部21に制御を渡す(S13)。
他のプロセッサ11は、試験の終了後、フラグB312を参照し、より早く試験を終了したプロセッサ11の存在を確認する(S8)。それにより、他のプロセッサ11は、退避させた専用データ、及び汎用データをそれぞれ専用レジスタ111、及び汎用レジスタ群112に戻し(S11、S12)、テスト部22から制御部21に制御を渡す(S13)。
図5に表すように、プロセッサ11−2が、自身の汎用データとプロセッサ11−0の汎用データとを入れ替えた場合、プロセッサ11−2は、プロセッサ11−0の汎用データを用いて復元を行う。他方のプロセッサ11−0は、プロセッサ11−2の汎用データを用いて復元を行う。その結果、プロセッサ11−2は、テスト部22から制御部21に制御を渡した後、第2の管理プロセッサ11として機能することとなる。図5には、汎用データの入れ替えにより、プロセッサ11−0及び11−2の各汎用データの内容が、退避前と復元後とで変化したことを表している。
図6は、試験プログラムの制御により各プロセッサが実行する処理を表すフローチャートである。図6に表す処理は、各プロセッサ11のうちの1つが試験プログラム20を起動することによって実現される。最後に図6を参照して、試験プログラム20の制御によって各プロセッサ11が実行する処理について具体的に説明する。各プロセッサ11が図4に表すような構成であった場合、図6に表す処理は、4つのプロセッサ・コア42の何れかが、SXユニット41を介して順次、供給される試験プログラム20の命令を実行することで実現される。
図6では、プロセッサ11−0が第1の管理プロセッサ11、及び第2の管理プロセッサ11と想定し、フローチャートを表している。S100、S120、及びS300は、制御部21によって実現される処理であり、S200はテスト部22によって実現される処理である。
S100、S120、及びS300において、S100及びS120は、テスト部22に制御を渡す前のプロセッサ11によって実現される処理である。より具体的には、S100は第1の管理プロセッサ11によって実現される処理であり、S120は他のプロセッサ11によって実現される処理である。S300は、テスト部22から制御部21に制御が渡された第2の管理プロセッサ11によって実現される処理である。テスト部22から制御部21に制御が渡された、第2の管理プロセッサ11以外のプロセッサ11によって実現される処理は省略している。
プロセッサ11−0は、インターフェース16、及びバス17を介して入力する入力装置15から試験者の指示に従って、I/O装置13上の試験プログラム20をメモリ12上にロードし、試験プログラム20を起動する。その起動によって、プロセッサ11−0は、制御部21によりS100を実行する。そのS100では、以下のような処理が行われる。
先ず、プロセッサ11−0は、自身が第1の管理プロセッサ11として動作した履歴として、自身のプロセッサIDを設定し、そのプロセッサIDをフラグA311としてメモリ12上に書き込む(S101)。次にプロセッサ11−0は、試験の未終了を表すフラグB312をメモリ12上に書き込む(図6では「試験終了フラグをリセット」と表記)(S102)。その後、プロセッサ11−0は、テスト部22を起動すると共に、他のプロセッサ11に試験プログラム20の起動を指示する(S103)。テスト部22の起動により、制御は制御部21からテスト部22に渡ることから、S100の一連の処理はここで終了する。
上記S101は、図2Aに表すフラグA設定部211によって実現される。S102は、フラグB設定部212によって実現される。S103は、テスト部起動部213によって実現される。
他のプロセッサ11で実行されるS120では、以下のような処理が行われる。
他のプロセッサ11は、プロセッサ11−0から試験プログラム20の起動指示を受信するのを待つ待機状態にある(S121)。その起動指示を受信した他のプロセッサ11は、起動指示を受信すると、テスト部22を起動する(S122)。そのテスト部22の起動により、S120の一連の処理はここで終了する。
他のプロセッサ11は、プロセッサ11−0から試験プログラム20の起動指示を受信するのを待つ待機状態にある(S121)。その起動指示を受信した他のプロセッサ11は、起動指示を受信すると、テスト部22を起動する(S122)。そのテスト部22の起動により、S120の一連の処理はここで終了する。
図6では、他のプロセッサ11には、試験プログラム20の起動指示の受信を待つ待機状態が存在することを明確にするために、S121を表している。他のプロセッサ11では、試験プログラム20の起動によって、制御部21→テスト部22と制御が渡ることから、実際にはS121は存在しない。しかし、他のプロセッサ11において、試験プログラム20の起動によって実行を開始する制御部21に、プロセッサ11−0(第1の管理プロセッサ11)からの起動指示によりテスト部22を起動させるようにしても良い。このこともあり、図6ではS121を表している。
テスト部22に制御が渡った各プロセッサ11は、S200を実行する。そのS200では、以下のような処理が行われる。ここでは、S200を実行するプロセッサ11としてプロセッサ11−0を想定する。
先ず、プロセッサ11−0は、専用レジスタ111のデータをメモリ12上の対応するレジスタ退避領域32内の専用レジスタ退避領域321に退避させる(S201)。次にプロセッサ11−0は、汎用レジスタ群112のデータをメモリ12上の対応するレジスタ退避領域32内の汎用レジスタ退避領域322に退避させる(S202)。そのような退避を行った後、プロセッサ11−0は、試験を実行する(S203)。S201及びS202は、図2Bに表すレジスタ退避部221によって実現される。S203は、試験実行部222によって実現される。
試験が終了したプロセッサ11−0は、メモリ12上のフラグB312を参照し、最初に試験を終了したか否か判定する(S204)。フラグB312が試験の未終了を表していた場合、つまりフラグB312の値が0であった場合、S204の判定はYESとなってS205に移行する。フラグBが試験の終了を表していた場合、S204の判定はNOとなってS207に移行する。このS204は、図2BのフラグB判定部223によって実現される。
S205を実行するプロセッサ11−0は、フラグB312の値を0から1に更新する。また、プロセッサ11−0は、フラグA311を参照して、汎用データの入れ替えを行うべきか否か判定し、その入れ替えを行うべきと判定した場合に、フラグA311から特定されるプロセッサ11と自身との間で汎用データの入れ替えをメモリ12上で行う。このS205は、図2Bの汎用レジスタ入れ替え部224によって実現される。
次にプロセッサ11−0は、自身が第2の管理プロセッサ11として動作する履歴として、自身のプロセッサIDを設定し、そのプロセッサIDをフラグA311としてメモリ12上に新たに書き込む(S206)。このS208は、図3BのフラグA再設定部225によって実現される。
S207を実行するプロセッサ11−0は、自身が退避させた専用データをメモリ12から読み出し、読み出した専用データを専用レジスタ111に格納する。続けてプロセッサ11−0は、メモリ12上の対応するレジスタ退避領域32内の汎用レジスタ退避領域322に格納されている汎用データを読み出し、読み出した汎用データを汎用レジスタ群112に格納する。そのようにして、制御部21からテスト部22に制御を渡す前の状態を復元した後、テスト部22から制御部21に制御が渡され、S200の一連の処理が終了する。S207及びS208は、図2Bに表すレジスタ復元部226によって実現される。
制御部21に制御が渡った各プロセッサ11のなかで第2の管理プロセッサ11として動作するプロセッサ11は、S300を実行する。そのS300では、以下のような処理が行われる。ここでも、S300を実行するプロセッサ11としてプロセッサ11−0を想定する。
第2の管理プロセッサ11以外のプロセッサ11は、第2の管理プロセッサ11に、例えば試験結果を送信することにより、試験の終了を通知した後、制御部21の実行を終了する。このことから、先ず、プロセッサ11−0は、他の全てのプロセッサ11から試験の終了が通知されるのを待つ(S301)。テスト部22の実行中にハングアップしたプロセッサ11が存在する可能性を想定し、試験の終了通知は、予め定められた時間の範囲内で待つ。それにより、他の全てのプロセッサから試験の終了が通知されるか、或いはその時間が経過した場合、S301からS302に移行する。このS301は、図2Aに表す終了監視部214によって実現される。
S302を実行するプロセッサ11−0は、自身の試験結果と、他のプロセッサ11から収集した試験結果とを、図1に表す表示装置14上に出力する。その後、例えば入力装置15を介した試験者の指示により、S300の一連の処理を終了する。S302は、図2Aに表す試験結果出力部215によって実現される。
図6では、S204の判定がNOとなった場合の移行先を表す矢印を一点鎖線で表している。この一点鎖線の矢印は、第2の管理プロセッサ11として動作しないケースでの処理の流れ、或いは試験の終了通知が行われるプロセッサ11を表している。プロセッサ11−0が第2の管理プロセッサ11として動作しない場合、プロセッサ11−0は、制御部21に制御が渡った後、他の何れかのプロセッサ11に試験の終了を通知する。その試験の終了の通知を含む試験結果の送信は、図2Aに表す試験結果出力部215によって実現される。
なお、本実施形態では、試験結果は表示装置14上に出力するようになっているが、出力結果は記憶装置、或いは通信ネットワークを介して接続可能な外部装置であっても良い。フラグ領域31は、各レジスタ退避領域32と同じメモリ12上に確保するようにしているが、複数のメモリを使用可能な環境では、フラグ領域31、及び各レジスタ退避領域32は任意のメモリに分けて確保するようにしても良い。
また、試験プログラム20は、1種類の試験のみを実施するようになっているが、試験プログラム20は、複種類の試験を任意の組み合わせ、順序で実施できる多機能のもの(例えば異なるテスト部22を複数、搭載したもの)であっても良い。そのような多機能の試験プログラム20では、1つの試験毎に、或いは順序と組み合わせが決定された複数の試験毎に、管理プロセッサ11を自律的に決定させれば良いことから、適用は容易である。このこともあり、試験の種類、その数等は特に限定されるものではない。
Claims (6)
- 複数の処理装置に、
処理装置の動作を確認するための試験を行う試験機能と、
前記試験機能を起動する制御機能と、を実現させ、
前記制御機能は、前記複数の処理装置のうちの1つである第1の処理装置に、該複数の処理装置に前記試験機能を起動させる起動機能、該複数の処理装置が該試験機能による試験を実行した結果を出力する出力機能、及び該第1の処理装置の識別情報を第1の記憶装置上に格納する格納機能、を実現させ、
前記試験機能は、前記複数の処理装置に、該試験機能が起動された処理装置である自処理装置から前記制御機能の動作に必要なデータを第2の記憶装置上に退避させる退避機能、前記試験が終了した場合に、該第1の処理装置として動作すべきか否か判定する判定機能、及び該第1の処理装置として動作すべきと該判定機能により判定した場合に、前記第1の記憶装置上の識別情報を参照し、該自処理装置に該第1の処理装置のデータを前記第2の記憶装置から取り込む復元機能、を実現させる、
ことを特徴とする試験プログラム。 - 請求項1記載の試験プログラムであって、
前記格納機能は、前記識別情報の他に、前記試験の未終了を表す状況情報を前記第1の記憶装置に格納させ、
前記判定機能は、前記第1の記憶装置上の前記状況情報が前記試験の未終了を表している場合に、前記第1の処理装置として動作すべきと判定し、該試験の終了を表す状況情報に該第1の記憶装置上の該状況情報を更新する。 - 請求項1、または2記載の試験プログラムであって、
前記復元機能は、前記第1の記憶装置上の識別情報が前記自処理装置を表していない場合に、該自処理装置のデータと前記第1の処理装置のデータとを前記第2の記憶装置上で入れ替え、該第1の処理装置のデータを該自処理装置に取り込む。 - 請求項3記載の試験プログラムであって、
前記退避機能は、前記データを、他の処理装置に取り込ませるべきでない専用データと、該他の処理装置に取り込ませても良い汎用データとに分けて退避させ、
前記復元機能は、前記汎用データのみを対象に、前記第2の記憶装置上での入れ替えを行う。 - 複数の処理装置の動作を確認するための試験に適用される試験方法であって、
前記複数の処理装置に、前記試験を並行して実行させ、
前記複数の処理装置のなかで前記試験を終了した処理装置に、該複数の処理装置がそれぞれ実行した試験の結果を出力する第1の処理装置として動作すべきか否かを判定させ、
前記試験を終了した処理装置のなかで前記第1の処理装置として動作すべきと判定した処理装置に、該第1の処理装置として動作させる、
ことを特徴とする試験方法。 - 接続された記憶装置にアクセス可能な処理装置において、
前記記憶装置にアクセス可能な1つ以上の他の処理装置と共に、動作を確認するための試験を行う試験手段と、
前記試験手段が前記試験を終了した場合に、所定の出力装置に該試験の結果を出力すべきか否かを判定する判定手段と、
前記試験の結果を出力すべきと前記判定手段が判定した場合に、前記試験手段による試験の結果、及び前記他の処理装置が行った試験の結果を前記所定の出力装置に出力する出力手段と、
を具備することを特徴とする処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013553138A JPWO2013105237A1 (ja) | 2012-01-11 | 2012-01-11 | 試験プログラム、試験方法、及び処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013553138A JPWO2013105237A1 (ja) | 2012-01-11 | 2012-01-11 | 試験プログラム、試験方法、及び処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2013105237A1 true JPWO2013105237A1 (ja) | 2015-05-11 |
Family
ID=53194554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013553138A Pending JPWO2013105237A1 (ja) | 2012-01-11 | 2012-01-11 | 試験プログラム、試験方法、及び処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPWO2013105237A1 (ja) |
-
2012
- 2012-01-11 JP JP2013553138A patent/JPWO2013105237A1/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10534616B2 (en) | Load-hit-load detection in an out-of-order processor | |
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
US10963248B2 (en) | Handling effective address synonyms in a load-store unit that operates without address translation | |
US10977047B2 (en) | Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
JP7118984B2 (ja) | ロード命令のメモリ・アクセスを回避するためのコンピュータ実装方法、システム、およびコンピュータ・プログラム | |
US20080307182A1 (en) | Efficient and flexible memory copy operation | |
US9116729B2 (en) | Handling of binary translated self modifying code and cross modifying code | |
JP6005392B2 (ja) | ルーティングのための方法及び装置 | |
US9740623B2 (en) | Object liveness tracking for use in processing device cache | |
US10572257B2 (en) | Handling effective address synonyms in a load-store unit that operates without address translation | |
US9804896B2 (en) | Thread migration across cores of a multi-core processor | |
US11748109B2 (en) | System and method for implementing strong load ordering in a processor using a circular ordering ring | |
JP5318197B2 (ja) | ホストデータ処理装置内におけるデバイスエミュレーションのサポート | |
JP2022549493A (ja) | リタイアキューの圧縮 | |
US20140229677A1 (en) | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses | |
CN111133421A (zh) | 在无地址转换的情况下操作的加载存储单元中处理有效地址同义词 | |
JP2013210853A (ja) | 情報処理装置、同期処理実行管理方法、及びプログラム | |
WO2013105237A1 (ja) | 試験プログラム、試験方法、及び処理装置 | |
US9710389B2 (en) | Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform | |
JPWO2013105237A1 (ja) | 試験プログラム、試験方法、及び処理装置 | |
US10133620B2 (en) | Detecting errors in register renaming by comparing value representing complete error free set of identifiers and value representing identifiers in register rename unit |