WO2012172682A1 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

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

Info

Publication number
WO2012172682A1
WO2012172682A1 PCT/JP2011/063925 JP2011063925W WO2012172682A1 WO 2012172682 A1 WO2012172682 A1 WO 2012172682A1 JP 2011063925 W JP2011063925 W JP 2011063925W WO 2012172682 A1 WO2012172682 A1 WO 2012172682A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit
command
instruction
state information
control unit
Prior art date
Application number
PCT/JP2011/063925
Other languages
English (en)
French (fr)
Inventor
正典 土居
充治 原
山崎 巌
砂山 竜一
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to EP11868012.3A priority Critical patent/EP2722761A1/en
Priority to PCT/JP2011/063925 priority patent/WO2012172682A1/ja
Publication of WO2012172682A1 publication Critical patent/WO2012172682A1/ja
Priority to US14/097,371 priority patent/US20140095841A1/en

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers

Abstract

 本願の開示するCPU(100)は、命令制御部(121)とI2Cコマンド制御部(112)とI2Cコマンド実行部(122)とを有する。命令制御部(121)は、プログラムに含まれる、制御命令を生成するための制御命令生成命令をデコードする。I2Cコマンド制御部(112)は、命令制御部(121)がデコードした制御命令生成命令が、故障フラグラッチ(123)からの状態情報を読み出す状態情報読出命令を生成する制御命令生成命令である場合に、状態情報読出命令を生成する。I2Cコマンド実行部(122)は、I2Cコマンド制御部(112)が生成した状態情報読出命令に基づき、故障フラグラッチ(123)から状態情報を読出して、プログラムから読出し可能なI2Cレシーブレジスタ(115)に格納する。

Description

演算処理装置及び演算処理装置の制御方法
 本発明は、演算処理装置及び演算処理装置の制御方法に関する。
 従来、演算処理装置であるCPU(Central Processing Unit)内部のハードウェア情報は、サービスプロセッサがCPUにアクセスすることによって読み出される。図10を用いて、従来技術に係るCPU内部のハードウェア情報の読み出し動作を説明する。
 図10は、従来技術に係るCPU内部のハードウェア情報の読み出し動作を示す図である。図10に示すように、CPU900は、コア部901、コア部902、共通部903、メモリ制御部904、テスト制御回路905を有する。また、CPU900は、サービスプロセッサ(Service Processor)910とバス920を介して接続されている。
 コア部901は、内部に記憶回路であるFF(Flip Flop)901a、901b、901c、901dを有する。コア部902は、内部にFF902a、902b、902c、902dを有する。共通部903は、内部にFF903a、903b、903c、903dを有する。また、メモリ制御部904は、内部にFF904a、904b、904c、904dを有する。これらのFFは、シリアルに接続されてスキャンチェーンを形成する。
 また、CPU900の内部に故障が発生した場合、FFには故障箇所を示す故障フラグが格納される。そして、テスト制御回路905は、サービスプロセッサ910からアクセスされた場合、スキャンチェーンを使用して、FFに格納される故障フラグを読み出し、読み出した故障フラグをサービスプロセッサ910に出力する。そして、サービスプロセッサ910は、読み出した故障フラグを用いて故障箇所の解析を実行する。
特開2005-44361号公報 特開2009-236879号公報 特開平6-139112号公報 特開2010-218367号公報
 しかしながら、上述した従来の技術では、OS(Operating System)などのプログラムからCPU内部のハードウェア情報にアクセスすることができないという課題があった。
 具体的には、CPU内部のハードウェア情報は、サービスプロセッサを介して取得される。しかし、CPUのユーザは、サービスプロセッサへのアクセスを許可されていない。このため、OSなどのソフトウェアは、CPU内部のハードウェア情報にアクセスすることができない。
 1つの側面では、サービスプロセッサを用いずに、プログラムからCPU内部のハードウェア情報にアクセスすることができる演算処理装置及び演算処理装置の制御方法を提供することを目的とする。
 第1の案では回路部を有する演算処理装置である。演算処理装置は、回路部の状態を示す状態情報を保持する。また、演算処理装置は、プログラムに含まれる、制御命令を生成するための制御命令生成命令をデコードする。また、演算処理装置は、デコードした制御命令生成命令が、状態情報を読み出す状態情報読出命令を生成する制御命令生成命令である場合に、状態情報読出命令を生成する。そして、演算処理装置は、生成した状態情報読出命令に基づき、状態情報を読出して、プログラムから読出し可能なレジスタ部に格納する。
 サービスプロセッサを用いずに、プログラムからCPU内部のハードウェア情報にアクセスすることができる。
図1は、実施例1に係るCPUの構成を示すブロック図である。 図2は、I2Cコマンド実行部の構成を示すブロック図である。 図3は、故障フラグラッチの構成を示すブロック図である。 図4Aは、ASIコマンド『ASI_CMD_ACCESS_REG』のデータパターンを示す図である。 図4Bは、ASIコマンド『ASI_CMD_RECEIVE_REG』のデータパターンを示す図である。 図5は、CPUにおける故障フラグの読み出し動作を示す図である。 図6は、故障フラグラッチにおける動作を説明する図である。 図7は、シフトレジスタの動作を説明する図である。 図8は、命令制御部によるASIコマンド発行処理の処理手順を示すフローチャートである。 図9は、I2Cコマンド実行部による故障フラグ読み出し処理の処理手順を示すフローチャートである。 図10は、従来技術に係るCPU内部のハードウェア情報の読み出し動作を示す図である。
 以下に、本願の開示する演算処理装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
 実施例1では、図1から図9を用いて、CPUの構成、処理動作、処理手順、効果などについて説明する。
[CPUの構成]
 図1を用いて、実施例1に係るCPUの構成を説明する。図1は、実施例1に係るCPUの構成を示すブロック図である。図1に示すように、CPU100は、サービスプロセッサ10とI2C(Inter-Integrated Circuit、登録商標、以下同様)101を介して接続されている。なお、CPU100とサービスプロセッサ10との接続はI2Cに限定されるものではなく、SPI(Serial Peripheral Interface、登録商標)、MicroWire(登録商標)、IEEE1149.1で規定されるJTAG(Joint Test Architecture Group)などの他のバスであってもよい。
 サービスプロセッサ10は、CPU100とは独立に動作し、CPU100の制御を行うシステム制御装置である。例えば、サービスプロセッサ10は、CPU100内の動作状況を監視したり、CPU100内の動作履歴を取得したりして、CPU100の動作が正常であるか否かを診断する。
 CPU100は、共通部110と、コア部120と、L2キャッシュ制御部130と、入出力制御部140と、メモリ制御部150とを有する。また、以下の説明では、コア部120、L2キャッシュ制御部130、入出力制御部140、メモリ制御部150のそれぞれを一般化して称する場合には、機能ブロックと適宜記載する。また、共通部110、コア部120、L2キャッシュ制御部130、入出力制御部140、メモリ制御部150のそれぞれを一般化して称する場合には、回路と適宜記載する。なお、CPU100が有するコア部の数はこれに限定されるものではなく、任意に変更可能である。
 共通部110は、I2C101によって、サービスプロセッサ10と接続されている。また、共通部110は、I2C102によって、コア部120、L2キャッシュ制御部130、入出力制御部140、メモリ制御部150と接続されている。すなわち、共通部110は、I2C101及びI2C102によってサービスプロセッサ10と各機能ブロックとを接続する。
 そして、共通部110は、コア部120から受信した代替メモリ空間であるASI(Address Space Identifier)空間をアクセスするメモリアクセス命令であるASI(Address Space Identifier)コマンドを解釈し、制御コマンドを生成する。そして、共通部110は、生成した制御コマンドを用いて、共通部110や各機能ブロックが有するハードウェア情報にアクセスする。また、共通部110は、サービスプロセッサ10からもアクセスを受付け、共通部110や各機能ブロックが有するハードウェア情報にアクセスする。なお、ASIコマンドについては後述する。
 次に、共通部110の構成について説明する。図1に示すように、共通部110は、I2Cコマンド解釈部111とI2Cコマンド制御部112とI2Cコマンド実行部113と故障フラグラッチ114とI2Cレシーブレジスタ115とフラグフリーズレジスタ116とを有する。
 I2Cコマンド解釈部111は、後述する命令制御部121から受信したASIコマンドを解釈し、アクセスする機能ブロックやアクセスするレジスタなどのデータを生成して、I2Cコマンド制御部112に送信する。
 例えば、I2Cコマンド解釈部111は、後述する故障フラグラッチ114が保持する状態情報を指定された情報に書き換えるASIコマンドを命令制御部121から受信した場合、以下の処理を実行する。すなわち、I2Cコマンド解釈部111は、故障フラグラッチ114が保持する状態情報を指定された情報に書き換えるデータを生成する。そして、I2Cコマンド解釈部111は、生成したデータをI2Cコマンド制御部112に送信する。
 また、I2Cコマンド解釈部111は、故障フラグラッチ114が保持する状態情報を読み出すASIコマンドを命令制御部121から受信した場合、故障フラグラッチ114から状態情報を読み出すデータを生成する。そして、I2Cコマンド解釈部111は、生成したデータをI2Cコマンド制御部112に送信する。
 I2Cコマンド制御部112は、I2Cコマンド解釈部111からデータを受信し、受信したデータに基づいて制御コマンドを生成する。そして、I2Cコマンド制御部112は、後述するI2Cコマンド実行部113や各機能ブロックのI2Cコマンド実行部のうち指定されたI2Cコマンド実行部に生成した制御コマンドを送信する。なお、以降の説明では、I2Cコマンド制御部112が生成する制御コマンドをI2Cコマンドと適宜記載する。なお、I2Cコマンドは、データバスを介して接続される回路に対して送信される制御命令の一例である。
 例えば、I2Cコマンド制御部112は、I2Cコマンドを発行し、各機能ブロックのI2Cコマンド実行部に送信して、それぞれの設定レジスタの値の書き換え及び読み出しを行う。一例を挙げると、I2Cコマンド制御部112は、I2Cコマンドを発行して、後述するシフトレングスレジスタ113bにシフト数を設定する。
 また、I2Cコマンド制御部112は、命令制御部121によって故障フラグを回収するASIコマンドが発行された場合、故障フラグを回収するI2Cコマンドを生成し、指定されたI2Cコマンド実行部に対して生成したI2Cコマンドを送信する。
 I2Cコマンド実行部113は、I2Cコマンド制御部112からI2Cコマンドを受信し、受信したI2Cコマンドに基づいて動作を実行する。例えば、I2Cコマンド実行部113は、I2Cコマンド制御部112によって指示されたレジスタを読み出し、読み出した結果をI2Cコマンド制御部112に転送する。一例を挙げると、I2Cコマンド実行部113は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ114から故障フラグを読み出す。そして、I2Cコマンド実行部113は、読み出した故障フラグを後述するI2Cレシーブレジスタ115に転送する。
 また、I2Cコマンド実行部113は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ114が保持する情報を指定された情報に書き換える。
 図2を用いて、I2Cコマンド実行部113の構成を説明する。図2は、I2Cコマンド実行部の構成を示すブロック図である。図2に示すように、I2Cコマンド実行部113は、shift-enb113a、シフトレングスレジスタ113b、シフトレジスタ113cを有する。
 shift-enb113aは、シフトレジスタ113cに保持されるデータをシフトさせることを許可するI2Cコマンド「READ-SHIFT-REG」をI2Cコマンド制御部112から受信する。そして、shift-enb113aは、受信したI2Cコマンド「READ-SHIFT-REG」をshift-enb信号に変換してシフトレジスタ113cに出力する。この結果、シフトレジスタ113cは、保持するデータをシフトさせる。
 シフトレングスレジスタ113bは、シフトレジスタ113cによるスキャンシフトのシフト数を保持する。ここで、シフトレングスレジスタ113bが保持するシフト数は、I2Cコマンド制御部112により送信されるI2Cコマンドによって設定される。例えば、故障フラグラッチ114から故障フラグを読み出す場合、シフトレングスレジスタ113bに設定された値は、故障フラグを読み出す故障フラグラッチ114が有するビット数と同数に設定される。言い換えると、故障フラグラッチ114に64ビットのデータが保持されている場合、シフトレングスレジスタ113bの値は64ビットに設定される。そして、シフトレングスレジスタ113bに設定された値は、シフトレジスタ113cに故障フラグをスキャンシフトにより1ビット読み出すごとに1つずつ減算される。
 シフトレジスタ113cは、ビット0~ビット63の64ビットの故障フラグ専用のシフトレジスタであり、shift-enb113a、シフトレングスレジスタ113bと接続されている。また、シフトレジスタ113cのビット0は、故障フラグラッチ114の出力端と接続され、シフトレジスタ113cのビット63は、故障フラグラッチ114の入力端と接続されている。
 シフトレジスタ113cは、shift-enb113aからデータをシフトさせることを許可する信号であるshift-enb信号を受信した場合に、故障フラグラッチ114から故障フラグを読み出し、読み出した故障フラグを保持する。そして、シフトレジスタ113cに格納されたデータは、I2Cレシーブレジスタ115に転送される。
 また、シフトレジスタ113cには、サービスプロセッサ10から指定された値を保持するようにしてもよい。
 図1に戻り、故障フラグラッチ114は、回路の状態を示す状態情報を保持する。例えば、故障フラグラッチ114は、共通部110の故障状態を示す故障フラグを保持する。図3を用いて故障フラグラッチの構成を説明する。図3は、故障フラグラッチの構成を示すブロック図である。
 例えば、図3に示すように、故障フラグラッチ114は、複数のFF(Flip Flop)から形成されるloop、ERR_LV1_loop1、ERR_LV2_loop1、ERR_LV2_loop2を有する。
 ここで、故障フラグラッチ114が有する各loopは、障害の程度に応じて使い分けられる。例えば、ERR_LV1は、システムの動作に影響をきたす重大な障害を示す障害に用いられ、ERR_LV2は、システムの動作に影響をきたさないマイナーエラーに用いられる。また、各FFは、障害の種類に対応付けて用いられる。なお、障害を記憶するFFの数に応じてloopの数は決定され、ここでは、ERR_LV2は、ERR_LV2_loop1及びERR_LV2_loop2の2つのloopを有するものとして説明する。
 例えば、ERR_LV1_loop1は、FF114a‐1、FF114a‐2、FF114a‐3、・・・、FF114a‐nを有する。また、ERR_LV2_loop1は、FF114b‐1、FF114b‐2、FF114b‐3、・・・、FF114b‐nを有し、ERR_LV2_loop2は、FF114c‐1、FF114c‐2、FF114c‐3、・・・、FF114c‐nを有する。なお、ここで、nは、任意の自然数である。
 I2Cレシーブレジスタ115は、I2Cコマンド実行部113のスキャンシフト制御によって読み出された64ビットのデータを保持するレジスタである。I2Cレシーブレジスタ115に保持されるデータは、後述する命令制御部121がASIコマンドを発行することによってOS等のプログラムに読み出すことができる。すなわち、I2Cレシーブレジスタ115は、ソフトウェアからアクセス可能なレジスタである。
 フラグフリーズレジスタ116は、故障フラグラッチ114や各機能ブロックが有する故障フラグラッチに保持される値の変更を許可するか否かを示す情報を保持する。フラグフリーズレジスタ116には、故障フラグラッチ114に保持される故障フラグの値の更新を抑制することを示す「1」、故障フラグラッチに保持される故障フラグの値の更新を許可することを示す「0」が格納される。すなわち、故障フラグラッチ114や各機能ブロックが有する故障フラグラッチは、フラグフリーズレジスタ116に「1」が格納されている間は、保持する状態情報を更新せずに保持し続ける。
 図1に戻り、コア部120は、命令制御部121と、I2Cコマンド実行部122と、故障フラグラッチ123とを有し、例えば、図示しないL1キャッシュから命令を読み出して実行する。
 命令制御部121は、コア部120が有する図示しないL1キャッシュから読み出した実行中のプログラムの命令をデコードし、デコードした命令を実行する。ここで、命令制御部121は、読み出した命令がI2Cコマンドの発行を指示するものであった場合、ASIコマンドを発行する。
 ここでは、ASIコマンドについて説明する。なお、ASIコマンドの詳細は、特開2010-218367号公報に詳細に記載されているので、ここでは、ASIコマンドについて簡潔に説明する。
 ASIコマンドは、ASI空間を識別する8ビットのASI空間番号とよばれる識別子を指定するコマンドである。また、このASI空間番号は、仮想アドレスを物理アドレスに変換する動作を指定したり、CPU100が有するレジスタの読み書きを指定したりすることができる。
 本実施例において、ASI空間番号を一つ新たに定義し、この新たに定義したASI空間番号に対して2つの仮想アドレスを割り当てる。ASIコマンドは、この新たに割り当てたASI空間番号と仮想アドレスとを指定することで、共通部110がI2Cコマンドを、指定された仮想アドレスへのアクセスをとして実行する。
 本実施例において、ASIコマンドは、『ASI_CMD_ACCESS_REG』、『ASI_CMD_RECEIVE_REG』の2つの仮想アドレスを有する。『ASI_CMD_ACCESS_REG』は、I2Cコマンドを発行する命令であり、『ASI_CMD_RECEIVE_REG』は、発行したI2Cコマンドによる結果を読み出す命令である。以下では、ASIコマンドのデータパターンについて説明する。
(ASI_CMD_ACCESS_REG)
 図4Aを用いて、ASIコマンド『ASI_CMD_ACCESS_REG』のデータパターンについて説明する。図4Aは、ASIコマンド『ASI_CMD_ACCESS_REG』のデータパターンを示す図である。図4Aに示すように、『ASI_CMD_ACCESS_REG』は、64ビットデータのデータパターンを有しており、I2Cコマンドを発行する。
 ビット63は、LOCKビットであり、I2Cコマンドが実行中であることを示す。すなわち、ビット63は、I2Cコマンドの競合を回避するための排他制御の指定を示す。
 ビット62からビット56は、LOCK_IDを示す。LOCK_IDは、I2Cコマンドを実行している機能ブロックを示す情報であり、各機能ブロックにあらかじめ指定されている値が格納される。
 ビット55からビット49は、I2Cコマンドのコードを示す。ビット48は、Read/Writeであり、レジスタの読みまたはレジスタへの書き込みを指定する情報が格納される。ビット47からビット32は、本実施例では未使用であるものとする。ビット31からビット0は、I2Cコマンドへの引数を示す。
 なお、以下の説明で、例えば、ビット62からビット56のデータを示す場合、data[62:56]として適宜記載する。
 また、以下の説明では、『ASI_CMD_ACCESS_REG』コマンドのデータパターンの一部をasi_cmd_access_reg.LOCK、asi_cmd_access_reg.LOCK_IDのように適宜記載する。
(ASI_CMD_RECEIVE_REG)
 次に、図4Bを用いて、ASIコマンド『ASI_CMD_RECEIVE_REG』のデータパターンについて説明する。図4Bは、ASIコマンド『ASI_CMD_RECEIVE_REG』のデータパターンを示す図である。図4Bに示すように、『ASI_CMD_RECEIVE_REG』は、I2Cコマンドによる結果を読み出すコマンドであり、読み出しに伴う64ビットデータのデータパターンは次のように定義される。
 ビット63は、LOCKビットを示す。このLOCKビットには、排他制御の結果、I2Cコマンドの実行権を取得できたか否かを示す情報が格納される。
 ビット62からビット56は、LOCK_IDを示す。このLOCK_IDフィールドには、どの機能ブロックにアクセス中であるかを示す情報が格納される。
 ビット55からビット54は、BUSY/NACKを示す。BUSYは、I2Cコマンドが実行中であることを示す。また、NACK(Negative ACKnowledgement)は、I2Cコマンドが実行できなかったことを示す。また、data[55:54]の値が「01」の場合、ビット31からビット28には、ASI_CMDの実行でエラーが生じたことを示すエラーコードが設定される。
 ビット53からビット32は、本実施例では未使用であるものとする。ビット31からビット0は、I2Cコマンドの返り値であり、読み出されたデータになる。
 なお、以下の説明では、『ASI_CMD_RECEIVE_REG』コマンドのデータパターンの一部をasi_cmd_receive_reg.LOCK、asi_cmd_receive_reg.LOCK_IDのように適宜記載する。
 このようなASIコマンドを発行することによって、命令制御部121は、以下に示す処理を実行する。すなわち、命令制御部121は、ASIコマンドを発行することによって、共通部110にI2Cコマンドを生成させ、生成されたI2CコマンドをI2Cコマンド実行部に実行させる。また、この場合、命令制御部121は、ASIデータ[63:0]をI2Cコマンド解釈部111に転送する。
 また、命令制御部121は、予め特定のASI空間番号を指定することによって、CPU100内のレジスタの読み書きを実行することができる。
 図1に戻り、例えば、I2Cコマンド実行部122は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ123から故障フラグを読み出す。そして、I2Cコマンド実行部122は、読み出した故障フラグをI2Cレシーブレジスタ115に転送する。なお、I2Cコマンド実行部122の構成は、I2Cコマンド実行部113の構成と同様であるので、説明を省略する。また、故障フラグラッチ123の構成は、故障フラグラッチ114の構成と同様であるので、説明を省略する。
 L2キャッシュ制御部130は、図示しないL2キャッシュを有し、コア部120から要求されたデータや命令がL2キャッシュに存在するか否かを判定する。ここで、L2キャッシュ制御部130は、要求されたデータや命令がL2キャッシュに存在していると判定した場合、要求されたデータや命令をL2キャッシュから読み出して、L1キャッシュへ転送する。
 また、L2キャッシュ制御部130は、I2Cコマンド実行部131、故障フラグラッチ132を有する。例えば、I2Cコマンド実行部131は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ132から故障フラグを読み出す。そして、I2Cコマンド実行部131は、読み出した故障フラグをI2Cレシーブレジスタ115に転送する。なお、I2Cコマンド実行部131の構成は、I2Cコマンド実行部113の構成と同様であるので、説明を省略する。また、故障フラグラッチ132の構成は、故障フラグラッチ114の構成と同様であるので、説明を省略する。
 入出力制御部140は、CPUと図示しない入出力装置とを接続するインターフェースを有し、CPUと入出力装置との間のデータのやり取りを制御する。また、入出力制御部140は、I2Cコマンド実行部141、故障フラグラッチ142を有する。例えば、I2Cコマンド実行部141は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ142から故障フラグを読み出す。そして、I2Cコマンド実行部141は、読み出した故障フラグをI2Cレシーブレジスタ115に転送する。なお、I2Cコマンド実行部141の構成は、I2Cコマンド実行部113の構成と同様であるので、説明を省略する。また、故障フラグラッチ142の構成は、故障フラグラッチ114の構成と同様であるので、説明を省略する。
 メモリ制御部150は、図示しない主記憶装置との間のデータのやり取りを制御する。また、メモリ制御部150は、I2Cコマンド実行部151、故障フラグラッチ152を有する。例えば、I2Cコマンド実行部151は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ152から故障フラグを読み出す。そして、I2Cコマンド実行部151は、読み出した故障フラグをI2Cレシーブレジスタ115に転送する。なお、I2Cコマンド実行部151の構成は、I2Cコマンド実行部113の構成と同様であるので、説明を省略する。また、故障フラグラッチ152の構成は、故障フラグラッチ114の構成と同様であるので、説明を省略する。
[処理動作]
 次に、図5から図7を用いて、CPUにおける処理動作を説明する。
(I2Cコマンドによる故障フラグの読み出し動作)
 次に、図5を用いて、CPU100における故障フラグの読み出し動作を説明する。図5は、CPUにおける故障フラグの読み出し動作を示す図である。なお、図5では、コア部120の故障フラグの読み出し動作について説明するが、この動作は共通部110、L2キャッシュ制御部130、入出力制御部140、メモリ制御部150の故障フラグ読み出し動作でも同様である。
 図5に示すように、CPU100が有する命令制御部121は、故障フラグの読み出しを指示する『ASI_CMD_ACCESS_REG』を発行し、ASIデータ[63:0]をI2Cコマンド解釈部111に送信する(S1)。そして、I2Cコマンド解釈部111は、受け取ったASIデータをデコードし、アクセスをする機能ブロックやアクセスを行うレジスタなどのデータを生成し、I2Cコマンド制御部112に送信する(S2)。
 I2Cコマンド制御部112は、受信したデータをI2Cコマンドに変換して、I2Cコマンド実行部122に送信する(S3)。続いて、I2Cコマンド実行部122は、故障フラグラッチ123から指示された故障フラグの読み出しを開始し(S4)、故障フラグを取得する(S5)。そして、I2Cコマンド実行部122は、読み出した結果をI2Cレシーブレジスタ115に送信する(S6)。I2Cレシーブレジスタ115は、data[63:0]にI2Cコマンド実行部122から受信した故障フラグを保持する。
 その後、命令制御部121は、『ASI_CMD_RECEIVE_REG』命令を発行することによって、I2Cレシーブレジスタ115のdata[31:0]を読み出して、I2Cレシーブレジスタ115の下位側の32ビットに格納する。続いて、命令制御部121は、CODE「02」を指定して『ASI_CMD_ACCESS_REG』を発行することで、I2Cレシーブレジスタ115のdata[63:32]を読み出して、I2Cレシーブレジスタ115の上位側の32ビットに格納する。すなわち、命令制御部121は、ASIコマンドを実行することにより、プログラムからアクセス可能なI2Cレシーブレジスタ115に故障フラグを格納する。このようにして、命令制御部121は、ASIコマンドの実行により取得した故障フラグをプログラムから利用可能なI2Cレシーブレジスタ115に保持する。
(故障フラグラッチにおける処理動作)
 次に、図6を用いて故障フラグラッチ114における動作を説明する。図6は、故障フラグラッチにおける動作を説明する図である。なお、ここでは、共通部110が有する故障フラグラッチ114のERR_LV1_loop1を例にして説明するが、各機能ブロックが有する故障フラグラッチにおいても処理動作は同様である。
 図6に示すように、故障フラグラッチ114のERR_LV1_loop1は、FF114a‐1、・・・FF114a‐nを有する。FF114a‐1は、AND回路(論理積回路)201‐1、AND回路202‐1、AND回路203‐1、OR回路(論理和回路)204‐1、FF205‐1を有する。
 AND回路201‐1は、反転させたフラグフリーズ信号と反転させたloop_0_shift-enb信号とエラー信号とを受付けて、受付けた値の論理積をOR回路204‐1に出力する。また、AND回路202‐1は、loop_0_shift-enb信号とシフトレジスタ113cからのデータとを受付け、受付けた値の論理積をOR回路204‐1に出力する。また、AND回路203‐1は、反転させたloop_0_shift-enb信号と反転させたクリアエラーフラグ信号とFF205‐1からの出力とを受付け、受付けた値の論理積をOR回路204‐1に出力する。
 OR回路204‐1は、AND回路201‐1、AND回路202‐1、AND回路203‐1のいずれか2つからの出力を受付け、受付けた値の論理和を出力する。そして、OR回路204‐1は、出力した論理和と、残るAND回路からの出力とを受付け、受付けた値の論理和をFF205‐1に出力する。FF205‐1は、受付けた値をAND回路203‐1と隣接するFFのAND回路202とに出力する。
 なお、FF114a‐nの構成は、FF114a‐1の構成と同様であるので、説明は省略する。
 このような、故障フラグラッチ114において、データをシフトさせることを許可する信号を受信していない場合の動作について説明する。なお、ここでは、FF205‐1には「1」、FF205‐nには「0」が格納されており、フラグフリーズ信号及びクリアエラーフラグ信号が故障フラグラッチ114には入力されていないとする。
 この場合、AND回路201‐1は、反転させたフラグフリーズ信号「1」、反転させたloop_0_shift-enb信号「1」、エラー信号「1」を受付けて、OR回路204‐1に「1」を出力する。AND回路202‐1は、いずれの信号も受付けず、OR回路204‐1に「0」を出力する。また、AND回路203‐1は、反転させたloop_0_shift-enb「1」、反転させたクリアエラーフラグ信号「1」、FF205‐1の出力「1」を受付け、OR回路204‐1に「1」を出力する。
 そして、OR回路204‐1は、AND回路201‐1から「1」、AND回路202‐1から「0」、AND回路203‐1から「1」を受付け、FF205‐1に「1」を出力する。なお、FF205‐1が受付けた「1」は、FF205‐1がAND回路203‐1に「1」を出力することで維持される。
 このような状況の故障フラグラッチ114において、シフトレジスタ113cからデータをシフトさせることを許可する信号を受信した場合の動作について説明する。なお、ここでは、シフトレジスタ113cには「0」が格納されていると仮定する。
 この場合、AND回路201‐1は、反転させたフラグフリーズ信号「0」、反転させたloop_0_shift-enb信号「0」、エラー信号「0」を受付けて、OR回路204‐1に「0」を出力する。AND回路202‐1は、loop_0_shift-enb信号「1」とシフトレジスタ113cに格納されていた「0」とを受付けて、OR回路204‐1に「0」を出力する。また、AND回路203‐1は、反転させたloop_0_shift-enb信号「0」、反転させたクリアエラーフラグ信号「1」、FF205‐1の出力「1」を受付け、OR回路204‐1に「0」を出力する。
 そして、OR回路204‐1は、AND回路201‐1、AND回路202‐1、AND回路203‐1のすべてから「0」を受付け、FF205‐1に「0」を出力する。また、FF205‐1に格納されていた「1」は、隣接するFF114a‐2が有するAND回路202‐2に出力され、FF205‐2にシフトする。
 このように、故障フラグラッチ114は、シフトレジスタ113cからデータをシフトさせることを許可する信号を受信した場合、シフトレングスレジスタ113bに保持される数だけデータをシフトさせる。この結果、シフトレジスタ113cには、故障フラグラッチ114に保持されていたデータがシフトする。
(シフトレジスタにおける処理動作)
 次に、図7を用いてシフトレジスタ113cの動作を説明する。図7は、シフトレジスタの動作を説明する図である。なお、ここでは、共通部110が有するシフトレジスタ113cを例にして説明するが、各機能ブロックが有するシフトレジスタにおいても処理動作は同様である。
 図7に示すように、シフトレジスタ113cは、AND回路401‐1、AND回路402‐1、AND回路403‐1、OR回路404‐1、FF405‐1を有する。また、シフトレジスタ113cは、同様に、AND回路401‐n、AND回路402‐n、AND回路403‐n、OR回路404‐n、FF405‐nを有する。
 AND回路401‐1は、I2C_WRITE_VAL信号とI2C_WRITE_DATA[0]信号と反転させたshift-enb信号とを受付けて、受付けた値の論理積をOR回路404‐1に出力する。また、AND回路402‐1は、shift-enb信号と選択されたloopからのデータとを受付け、受付けた値の論理積をOR回路404‐1に出力する。また、AND回路403‐1は、反転させたshift-enb信号と反転させたI2C_WRITE_VAL信号とFF405‐1からの出力とを受付け、受付けた値の論理積をOR回路404‐1に出力する。
 OR回路404‐1は、AND回路401‐1、AND回路402‐1、AND回路403‐1のいずれか2つからの出力を受付け、受付けた値の論理和を出力する。そして、OR回路404‐1は、出力した論理和と、残るAND回路からの出力とを受付け、受付けた値の論理和をFF405‐1に出力する。FF405‐1は、受付けた値をAND回路403‐1と隣接するAND回路402‐2に出力する。
 このような、シフトレジスタ113cにおいて、shift-enb113aからデータをシフトさせることを許可する信号を受信していない場合の動作について説明する。なお、ここでは、FF405‐1には「0」が格納されており、I2C_WRITE_VAL信号及びI2C_WRITE_DATA[0]信号がシフトレジスタ113cには入力されていないとする。
 この場合、AND回路401‐1は、反転させたshift-enb信号「1」を受付けて、OR回路404‐1に「0」を出力する。AND回路402‐1は、いずれの信号も受付けず、OR回路404‐1に「0」を出力する。また、AND回路403‐1は、反転させたshift-enb信号「1」、反転させたI2C_WRITE_VAL信号「1」、FF405‐1の出力「0」を受付け、OR回路404‐1に「0」を出力する。
 そして、OR回路404‐1は、AND回路401‐1、AND回路402‐1、AND回路403‐1のすべてから「0」を受付け、FF405‐1に「0」を出力する。なお、FF405‐1が受付けた「0」は、FF405‐1がAND回路403‐1に「0」を出力することで維持される。
 このような状況のシフトレジスタ113cにおいて、shift-enb113aからデータをシフトさせることを許可する信号を受信した場合の動作について説明する。なお、ここでは、故障フラグラッチが有するFF114a-nに「1」が格納されていると仮定する。
 この場合、AND回路401‐1は、反転させたshift-enb信号「0」を受付けて、OR回路404‐1に「0」を出力する。AND回路402‐1は、shift-enb信号「1」とFF114a-nに格納されていた「1」とを受付けて、OR回路404‐1に「1」を出力する。また、AND回路403‐1は、反転させたshift-enb信号「0」、反転させたI2C_WRITE_VAL信号「1」、FF405‐1の出力「0」を受付け、OR回路404‐1に「0」を出力する。
 そして、OR回路404‐1は、AND回路401‐1から「0」、AND回路402‐1から「1」、AND回路403‐1から「0」を受付け、FF405‐1に「1」を出力する。また、FF405‐1に格納されていた「0」は、隣接するAND回路402‐2に出力され、FF405‐2にシフトする。
 このように、シフトレジスタ113cは、shift-enb113aからデータをシフトさせることを許可する信号を受信した場合、シフトレングスレジスタ113bに保持される数だけデータをシフトさせる。この結果、シフトレジスタ113cには、故障フラグラッチ114に保持されていたデータがシフトする。
[故障フラグ取得処理の処理手順]
 次に図8及び図9を用いて、実施例1に係るCPU100における故障フラグ取得処理の処理手順を説明する。図8では、命令制御部によるASIコマンド発行処理の処理手順を説明し、図9では、I2Cコマンド実行部による故障フラグの読み出し処理の処理手順を説明する。
(命令制御部によるASIコマンド発行処理)
 図8は、命令制御部によるASIコマンド発行処理の処理手順を示すフローチャートである。図8に示すように、命令制御部121は、『ASI_CMD_RECEIVE_REG』命令を発行する(ステップS101)。そして、命令制御部121は、asi_cmd_receive_reg.LOCKビットを読み出し、読み出した値が「0」であるか否かを判定する(ステップS102)。
 ここで、命令制御部121は、読み出した値が「0」でないと判定した場合(ステップS102、No)、ステップS101に移行する。すなわち、命令制御部121は、他のプロセッサ部、またはサービスプロセッサ100がI2Cコマンドを実行中である。したがって、命令制御部121は、読み出した値が「0」でない場合には、他のプロセッサ部、またはサービスプロセッサ100によるI2Cコマンドの完了を待つ。そして、命令制御部121は、他のプロセッサ部あるいはサービスプロセッサ100によるI2Cコマンドの完了後に、I2Cコマンドを発行する。そのために、命令制御部121は、読み出した値が「0」になるまで所定の間隔を置いて、『ASI_CMD_RECEIVE_REG』命令の発行を繰り返す。
 一方、命令制御部121は、読み出した値が「0」であると判定した場合(ステップS102、Yes)、ASIコマンド経由のI2Cコマンドの実行が可能であると判定し、以下の処理を実行する。すなわち、命令制御部121は、LOCK=1、制御したい機能ブロックのLOCK_ID、実行コマンドを指定して、『ASI_CMD_ACCESS_REG』命令を発行する(ステップS103)。
 続いて、命令制御部121は、『ASI_CMD_RECEIVE_REG』命令を発行する(ステップS104)。そして、命令制御部121は、asi_cmd_receive_reg.LOCKビット及びLOCK_IDを読み出し、読み出した値が「1」であり、かつ、指定したLOCK_IDであるか否かを判定する(ステップS105)。
 ここで、命令制御部121は、読み出した値が「1」、指定したLOCK_IDの2つの条件のいずれかが満たされていないと判定した場合(ステップS105、No)、ステップS101に移行する。この場合、ステップS103で発行した『ASI_CMD_ACCESS_REG』の実行権の獲得が失敗し、命令が実行されなかったことを意味する。
 一方、命令制御部121は、2つの条件が満たされていると判定した場合(ステップS105、Yes)、『ASI_CMD_RECEIVE_REG』命令を発行する(ステップS106)。
 そして、命令制御部121は、asi_cmd_receive_reg.BUSY=「0」であるか否かを判定する(ステップS107)。ここで、命令制御部121は、BUSY=「0」でないと判定した場合(ステップS107、No)、ステップS106に移行し、BUSY=「0」になるまで処理を繰り返す。この場合、命令制御部121は、ステップS103で発行したI2CコマンドがI2Cコマンド実行部によって実行中であると判定する。
 一方、命令制御部121は、BUSY=「0」であると判定した場合(ステップS107、Yes)、asi_cmd_receive_reg.NACK=「0」であるか否かを判定する(ステップS108)。ここで、命令制御部121は、NACK=「0」であると判定した場合(ステップS108、Yes)、ステップS103において発行したコマンドが機能ブロックの状態を読み出すReadコマンドであるか否かを判定する(ステップS109)。
 ここで、命令制御部121は、Readコマンドであると判定した場合(ステップS109、Yes)、data[31:0]を読み出し(ステップS110)、ステップS111に移行する。一方、命令制御部121は、Readコマンドでないと判定した場合(ステップS109、No)、ステップS111に移行する。
 ステップS111において、命令制御部121は、連続して新たなコマンドを発行するか否かを判定する(ステップS111)。命令制御部121は、連続して新たなコマンドを発行しないと判定した場合(ステップS111、No)、asi_cmd_access_reg.LOCK=「0」で『ASI_CMD_ACCESS_REG』命令を発行する(ステップS112)。この命令により、命令制御部121は、ASIコマンドによるI2Cコマンドの排他制御権を開放し、一連のI2Cコマンド処理を終了する。一方、命令制御部121は、連続して新たなコマンドを発行すると判定した場合(ステップS111、Yes)、ステップS114に移行する。
 命令制御部121は、ステップS108において、NACK=「0」でないと判定した場合(ステップS108、No)、asi_cmd_receive_reg.NACK=「1」であるか否かを判定する(ステップS113)。ここで、命令制御部121は、NACK=「1」でないと判定した場合(ステップS113、No)、ステップS114に移行する。
 一方、命令制御部121は、NACK=「1」であると判定した場合(ステップS113、Yes)、ソフトエラーが生じていると判定し(ステップS115)、処理を終了する。なお、この場合、命令制御部121は、ソフトエラーが生じたことをサービスプロセッサ10に通知する。
 ステップS114において、命令制御部121は、LOCK=1、LOCK_ID=7Fを指定して、『ASI_CMD_ACCESS_REG』命令を発行し(ステップS114)、ステップS106に移行する。
(I2Cコマンド実行部による故障フラグの読み出し処理)
 図9は、I2Cコマンド実行部による故障フラグ読み出し処理の処理手順を示すフローチャートである。例えば、I2Cコマンド実行部は、I2Cコマンド制御部112からアクセスを受付けたことを契機に処理を実行する。
 図9に示すように、故障フラグを読み出す機能ブロックのI2Cコマンド実行部は、フラグフリーズレジスタ116が「1」に設定される(ステップS201)。そして、I2Cコマンド実行部は、シフトレングスレジスタにシフト数を決定し(ステップS202)、SHIFT_enb信号を「1」にする(ステップS203)。
 ここで、I2Cコマンド実行部において、SHIFT_enb信号が「1」になった場合、LOOP0に接続された故障フラグが選択されて、シフトレジスタに64ビットのデータとして読み出される。また、64ビットのデータをシフトレジスタに読み出した場合、SHIFT_enb信号が「0」になる。
 続いて、I2Cコマンド実行部は、読み出したデータをI2Cコマンド制御部が有する、プログラムからアクセス可能なI2Cレシーブレジスタに転送する(ステップS204)。また、I2Cコマンド実行部は、さらに別のloopから故障フラグを読み出すアクセスを受付けたか否かを判定する(ステップS205)。ここで、I2Cコマンド実行部は、さらに別のloopから故障フラグを読み出すアクセスを受付けたと判定した場合(ステップS205、Yes)、ステップS202に移行し、故障フラグの読み出し処理を実行する。
 一方、I2Cコマンド実行部は、別のloopから故障フラグを読み出すアクセスを受付けていないと判定した場合(ステップS205、No)、フラグフリーズレジスタ116が「0」に設定され(ステップS206)、処理を終了する。
[実施例1の効果]
 上述してきたように、実施例1では、共通部110及び各機能ブロックがI2Cコマンド実行部を有する。そして、I2Cコマンド制御部112は、命令制御部121によって故障フラグを回収するASIコマンドが発行された場合、故障フラグを回収するI2Cコマンドを生成し、生成したI2Cコマンドを共通部110及び各機能ブロックに送信する。これによって、I2Cコマンド実行部は、故障フラグラッチに保持される故障フラグを読み出すことができる。すなわち、実施例1に係るCPU100において、サービスプロセッサ10からスキャンチェーンを用いて故障フラグをスキャンアウトしなくても、CPU100の故障フラグを読み出すことができる。
 これまで記述してきたような回路を各機能ブロックにI2Cコマンド実行部を組み込むことで、1つの機能ブロックの故障フラグを読み出している間に、他の機能ブロックで起きたエラーを漏れることなく故障フラグラッチに取り込むことが可能となる。なお、各機能ブロックは、決定は、asi_cmd_access_reg.LOCK_IDに各機能ブロックにあらかじめ指定されている値を書き込むことで制御可能である。
 また、近年、SoC(System on Chip)化によってCPUが大規模になってきている。このため、CPU全体のシミュレーションモデルを作成し、システム制御のテストベンチを走行するシミュレーションを行う場合、コンパイル時間、テストベンチの走行時間が長くなる。すなわち、CPU全体でシミュレーションを実行することは、非常に困難になってきている。しかし、本発明によりエミュレータを使用したCPUの検証を行う場合、ASIコマンドを使用したテストプログラムを作成することで、CPU全体のモデルでのシステム制御レジスタの検証を行うことが可能になる。
 CPUのシステム制御の検証においても、CPU全体でエミュレートすることが可能となり、CPUの品質向上が可能となる。
 本発明のI2Cコマンド制御部及びI2Cコマンド実行部を組み込むことでサービスプロセッサがなくても、ソフトウェアからI2C制御部を介してI2Cコマンド実行部にアクセスし、ハードウェア情報が読み出せる。このため、サービスプロセッサを用いず、CPU100単独でCPU100の設定が可能となる。また、CPUの設定を変えることができるので、ソフトウェアにあったCPUの構成に変更することができる。この結果、CPUの処理性能を向上させることができる。
 また、ソフトウェアは、CPUのハードウェア情報が読み出せるために、得られた故障情報から致命的な故障を回避することが可能になる。
 また、サービスプロセッサが必要なシステムであっても、CPUのハードウェアの設定を制御する機能を削減できるため、サービスプロセッサの簡易化によりコストの削減が可能である。
 ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例2では、本発明に含まれる他の実施例について説明する。
(エラー制御論理のデバッグ)
 また本発明は、このエラー制御論理のデバッグにも用いることでこの回路の品質を保証することが可能である。
 機能ブロックが有するシフトレジスタのdata[63:0]に、サービスプロセッサがある値、例えば、「0×123456789abcdef」を書き込んでおく。また、I2Cコマンド実行部に接続されている故障フラグラッチのラッチ数をシフトレングスレジスタにも書き込む。
 そして、I2Cコマンド制御部112は、フラグフリーズレジスタに「1」を設定し、故障フラグが更新されないようする。続いて、I2Cコマンド制御部112は、シフトレングスレジスタの値が「0」になるまで故障フラグラッチを読み出すコマンドを発行する。
 ここで、シフトレジスタに書き込んだ値が故障フラグレジスタを伝播して再度シフトレジスタに格納される場合、故障フラグレジスタの制御回路が正常であると判定できる。一方、正しい値がシフトレジスタに戻ってこなければ、制御回路または故障フラグレジスタの接続を誤っていることが検出できる。
(擬似故障によるCPUの動作シミュレーション)
 また、このシフトレジスタへの書き込み方法を利用してシフトレジスタに接続されている故障フラグラッチを「1」にセットすることで、CPUに擬似故障を起こした場合の動作をシミュレーションすることも可能である。
 例えば、サービスプロセッサがシフトレジスタのいずれかのビットに「1」を書き込んでおく。そして、I2Cコマンド制御部112は、故障フラグレジスタが更新されないようにフリーズ信号を「1」にする。続いて、故障フラグラッチの擬似故障を起こす対象となるFFに個別に割り振られている番号をシフトレングスレジスタに書き込み、読み出しコマンドを発行する。この結果、シフトレジスタに書き込んだ値は、故障フラグレジスタの擬似故障を起こす対象となるFFまでシフトされて、擬似故障を起こす対象となるFFの値が「1」に変化する。この方法によって、CPUの故障時の動作のシミュレーションをおこなうことが可能となる。
(システム構成等)
 本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
 また、図示した記憶部が格納する情報は一例に過ぎず、必ずしも図示のごとく情報が格納される必要はない。
 また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更してもよい。
 また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、共通部110において、I2Cコマンド解釈部111とI2Cコマンド制御部112とが統合されてもよい。
 10 サービスプロセッサ
 100 CPU
 110 共通部
 111 I2Cコマンド解釈部
 112 I2Cコマンド制御部
 113、122、131、141、151 I2Cコマンド実行部
 113a shift-enb
 113b シフトレングスレジスタ
 113c シフトレジスタ
 114、123、132、142、152 故障フラグラッチ
 115 I2Cレシーブレジスタ
 116 フラグフリーズレジスタ
 120 コア部
 121 命令制御部
 130 L2キャッシュ制御部
 140 入出力制御部
 150 メモリ制御部

Claims (10)

  1.  回路部を有する演算処理装置において、
     前記回路部の状態を示す状態情報を保持する状態情報保持部と、
     プログラムに含まれる、制御命令を生成するための制御命令生成命令をデコードする命令制御部と、
     前記命令制御部がデコードした制御命令生成命令が、前記状態情報保持部からの状態情報を読み出す状態情報読出命令を生成する制御命令生成命令である場合に、状態情報読出命令を生成する命令生成部と、
     前記命令生成部が生成した状態情報読出命令に基づき、前記状態情報保持部から状態情報を読出して、プログラムから読出し可能なレジスタ部に格納する命令実行部と
     を有することを特徴とする演算処理装置。
  2.  前記命令生成部は、前記命令制御部がデコードした制御命令生成命令が、前記状態情報保持部が保持する状態情報を指定された情報に書き換える状態情報書換命令を生成する制御命令生成命令である場合に、前記状態情報書換命令を生成し、
     前記命令実行部は、前記命令生成部が生成した状態情報書換命令に基づき、前記状態情報保持部が保持する状態情報を、指定された情報に書き換えることを特徴とする請求項1記載の演算処理装置。
  3.  前記演算処理装置はさらに、
     前記状態情報保持部が保持する状態情報の更新を抑止するロック情報を保持するロック情報保持部を有し、
     前記状態情報保持部は、前記ロック情報保持部がロック情報を保持している間は、保持する状態情報を更新せずに保持し続けることを特徴とする請求項1記載の演算処理装置。
  4.  前記演算処理装置が、
     命令を読み出して実行するコア部、L2キャッシュの制御を実行するL2キャッシュ制御部、自装置と接続される入出力装置との情報の入出力を制御する入出力制御部、メモリの制御を実行するメモリ制御部及び、前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部それぞれに接続される共通部を前記回路部として有し、
     前記コア部は、前記命令制御部と前記レジスタ部とを有し、
     前記共通部は、前記命令生成部を有し、
     前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部、前記共通部それぞれは、前記命令実行部と前記状態情報保持部とを有する
     ことを特徴とする請求項1に記載の演算処理装置。
  5.  前記命令生成部は、前記状態情報読出命令を生成するとともに、前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部、前記共通部のいずれの命令実行部に前記状態情報読出命令を送信するかを決定し、決定した命令実行部に前記生成した状態情報読出命令を送信することを特徴とする請求項4に記載の演算処理装置。
  6.  回路部を有する演算処理装置の制御方法において、
     前記演算処理装置が有する命令制御部が、プログラムに含まれ、前記回路部の状態を示す状態情報を読み出す制御命令を生成する制御命令生成命令をデコードし、
     前記演算処理装置が有する命令生成部が、前記命令制御部がデコードした制御命令生成命令に基づき、状態情報読出命令を生成し、
     前記演算処理装置が有する命令実行部が、前記命令生成部が生成した状態情報読出命令に基づき、前記回路部の状態を示す状態情報を保持する状態情報保持部から状態情報を読出して、プログラムから読出し可能なレジスタ部に格納する
     ことを特徴とする演算処理装置の制御方法。
  7.  前記演算処理装置の制御方法はさらに、
     前記命令生成部が、前記命令制御部がデコードした制御命令生成命令に基づき、前記状態情報保持部が保持する情報を、指定された情報に書き換える状態情報書換命令を生成し、
     前記命令実行部が、前記命令生成部が生成した状態情報書換命令に基づき、前記前記状態情報保持部が保持する情報を、指定された情報に書き換える
     ことを特徴とする請求項6記載の演算処理装置の制御方法。
  8.  前記演算処理装置の制御方法において、
     前記演算処理装置はさらに、
     前記状態情報保持部が保持する状態情報の更新を抑止するロック情報を保持するロック情報保持部を有し、
     前記状態情報保持部は、前記ロック情報保持部がロック情報を保持している間は、保持する状態情報を更新せずに保持し続ける
     ことを特徴とする請求項6記載の演算処理装置の制御方法。
  9.  前記演算処理装置の制御方法において、
     前記演算処理装置はさらに、
     命令を読み出して実行するコア部、L2キャッシュの制御を実行するL2キャッシュ制御部、自装置と接続される入出力装置との情報の入出力を制御する入出力制御部、メモリの制御を実行するメモリ制御部及び、前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部それぞれに接続される共通部を前記回路部として有し、
     前記コア部が有する前記命令制御部が、制御命令生成命令をデコードし、
     前記共通部が有する前記命令生成部が、前記命令制御部がデコードした制御命令生成命令に基づき、状態情報読出命令を生成し、
     前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部、前記共通部それぞれが有する命令実行部が、前記状態情報読出命令に基づき、自身を含む回路部が有する前記状態情報保持部から状態情報を読出して、前記コア部が有する前記レジスタ部に格納する
     ことを特徴とする請求項6に記載の演算処理装置の制御方法。
  10.  前記演算処理装置の制御方法において、
     前記命令生成部は、前記状態情報読出命令を生成するとともに、前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部、前記共通部のいずれの命令実行部に前記状態情報読出命令を送信するかを決定し、決定した命令実行部に前記生成した状態情報読出命令を送信することを特徴とする請求項9に記載の演算処理装置の制御方法。
PCT/JP2011/063925 2011-06-17 2011-06-17 演算処理装置及び演算処理装置の制御方法 WO2012172682A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP11868012.3A EP2722761A1 (en) 2011-06-17 2011-06-17 Arithmetic processing device and control method for arithmetic processing device
PCT/JP2011/063925 WO2012172682A1 (ja) 2011-06-17 2011-06-17 演算処理装置及び演算処理装置の制御方法
US14/097,371 US20140095841A1 (en) 2011-06-17 2013-12-05 Processor and control method of processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/063925 WO2012172682A1 (ja) 2011-06-17 2011-06-17 演算処理装置及び演算処理装置の制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/097,371 Continuation US20140095841A1 (en) 2011-06-17 2013-12-05 Processor and control method of processor

Publications (1)

Publication Number Publication Date
WO2012172682A1 true WO2012172682A1 (ja) 2012-12-20

Family

ID=47356708

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/063925 WO2012172682A1 (ja) 2011-06-17 2011-06-17 演算処理装置及び演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US20140095841A1 (ja)
EP (1) EP2722761A1 (ja)
WO (1) WO2012172682A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6828271B2 (ja) * 2016-05-18 2021-02-10 ソニー株式会社 通信装置、通信方法、プログラム、および、通信システム
US10289473B2 (en) * 2017-03-23 2019-05-14 Netscout Systems, Inc. Situation analysis

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6229820B2 (ja) * 1982-05-10 1987-06-29 Hitachi Ltd
JPS62192824A (ja) * 1986-02-20 1987-08-24 Fujitsu Ltd 処理装置アクセス方式
JPH08235073A (ja) * 1995-02-28 1996-09-13 Nec Kyushu Ltd マイクロコンピュータ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4228061B2 (ja) * 2000-12-07 2009-02-25 富士通マイクロエレクトロニクス株式会社 集積回路の試験装置および試験方法
US6675334B2 (en) * 2001-05-31 2004-01-06 Texas Instruments Incorporated Apparatus and method for multi-cycle memory access mapped to JTAG finite state machine with external flag for hardware emulation
JP2005309867A (ja) * 2004-04-22 2005-11-04 Fujitsu Ltd マルチコア・プロセサ試験方法
US7568138B2 (en) * 2006-07-26 2009-07-28 International Business Machines Corporation Method to prevent firmware defects from disturbing logic clocks to improve system reliability
US8650437B2 (en) * 2010-06-29 2014-02-11 International Business Machines Corporation Computer system and method of protection for the system's marking store

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6229820B2 (ja) * 1982-05-10 1987-06-29 Hitachi Ltd
JPS62192824A (ja) * 1986-02-20 1987-08-24 Fujitsu Ltd 処理装置アクセス方式
JPH08235073A (ja) * 1995-02-28 1996-09-13 Nec Kyushu Ltd マイクロコンピュータ

Also Published As

Publication number Publication date
US20140095841A1 (en) 2014-04-03
EP2722761A1 (en) 2014-04-23

Similar Documents

Publication Publication Date Title
US20050268195A1 (en) Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems
EP0453394A2 (en) Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs
US20110145643A1 (en) Reproducible test framework for randomized stress test
US6732297B2 (en) Pipeline testing method, pipeline testing system, pipeline test instruction generation method and storage method
US7047464B2 (en) Method and system for use of a field programmable function within an application specific integrated circuit (ASIC) to access internal signals for external observation and control
CN107451025B (zh) 控制存储芯片的测试方法及系统
US7447966B2 (en) Hardware verification scripting
JPH0548494B2 (ja)
US8626965B2 (en) Using a DMA engine to automatically validate DMA data paths
KR100607023B1 (ko) 프로그램 처리 장치
WO2012172682A1 (ja) 演算処理装置及び演算処理装置の制御方法
KR20050021241A (ko) 프로그램 처리 장치
US9702933B1 (en) System and method for concurrent interconnection diagnostics field
JP2878503B2 (ja) 標準セルとアプリケーションセルと試験セルとを含む集積回路
JP5309938B2 (ja) 要求処理装置、要求処理システムおよびアクセス試験方法
US20220308892A1 (en) Processing system, related integrated circuit, device and method
JP2007058450A (ja) 半導体集積回路
JPWO2012172682A1 (ja) 演算処理装置及び演算処理装置の制御方法
CN113704040A (zh) 一种微处理器内存可靠性测试方法
JPS63193237A (ja) 半導体集積回路装置
Grosso et al. A software-based self-test methodology for system peripherals
US9721048B1 (en) Multiprocessing subsystem with FIFO/buffer modes for flexible input/output processing in an emulation system
JP2004094451A (ja) オンチップjtagインタフェース回路およびシステムlsi
CN113742198B (zh) 测试方法、装置、电子设备及存储介质
JP7172155B2 (ja) 電子制御装置及びソフトウエア生成方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11868012

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013520386

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2011868012

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE