(57)【要約】  命令経過情報の出力信号を持ち、メモリ上のプログラムで動作可能な演算装置を有する半導体集積回路が開示される。本半導体集積回路は、演算装置からの命令経過情報に対応する命令コードと、メモリ上から読み出した命令コードとを比較することで、故障を検出するトレース判定回路を有する。
2008053723.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
命令経過情報の出力信号を持ち、前記メモリ上のプログラムで動作可能な演算装置と、
前記演算装置からの命令経過情報に対応する命令コードと、前記メモリ上から読み出した命令コードとを比較することで、故障を検出するトレース判定手段と
を有する半導体集積回路。
【請求項２】
前記トレース判定手段は前記演算装置に割り込み、前記演算装置が処理を再実行する、請求項１に記載の半導体集積回路。
【請求項３】
前記トレース判定手段は、前記演算装置からの命令経過情報を解釈するトレース解釈手段と、前記命令経過情報に対応する、メモリ上の命令アドレスの命令コードを読み出すメモリ読み出し手段と、前記命令経過情報に対応する命令コードと前記命令アドレスの命令コードを比較するトレース比較手段とを含む、請求項１に記載の半導体集積回路。
【請求項４】
前記トレース比較手段は、前記演算装置に割り込み、前記演算装置が処理を再実行する、請求項３に記載の半導体集積回路。
【請求項５】
演算装置の故障を検出する方法であって、
前記演算装置が実行した命令経過情報を抽出し、
あらかじめ前記演算装置の命令コードを保存するメモリから前記命令コードを抽出し、
前記命令経過情報に対応する命令コードと前記命令コードとを比較し、比較した結果、前記命令経過情報に対応すると前記命令コードとの一致度により、故障を検出する、
演算装置の故障検出方法。
【請求項６】
コンピュータに演算装置の故障を検出させるコンピュータプログラムプロダクトであって、
前記コンピュータに所定の動作を行わせるソフトウェア命令と、該ソフトウェア命令を記録した、コンピュータ読み取り可能な媒体とを有し、
前記所定の動作が
演算装置が実行した命令経過情報を抽出するステップと、
あらかじめ前記演算装置の命令コードを保存するメモリから前記命令コードを抽出するステップと、
前記命令経過情報に対応する命令コードと前記命令コードとを比較し、比較した結果、前記命令経過情報に対応すると前記命令コードとの一致度により、故障を検出するステップと、
を含む、コンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路において、特に、ＣＰＵに関して、ソフトエラーのような一時的故障に、低コストで対策することが可能な、耐一時的故障装置および方法に関する。
【背景技術】
【０００２】
半導体の微細化の進展により、ソフトエラーのような一時的故障の多発が予期されている。【０００３】
図１は、回路による対策を行った、耐一時的故障装置の構成の一例を模式的に示す図である。図１に示す例は、ＣＰＵ１０に含まれるフリップフロップ回路を、耐一時的故障フリップフロップ回路２００に置換した構成である。耐一時的故障フリップフロップ回路２００は、回路的に一時的故障を防ぐ実装がされている。これにより、ＣＰＵ１０は、一時的故障への対策が回路的に可能となる。【０００４】
しかしながら、図１に示した方式は、耐一時的故障フリップフロップ回路の面積が、従来のフリップフロップ回路に比して、非常に大きいため、ＣＰＵ１０の面積が大幅に増加してしまう、という問題点がある。【０００５】
この問題に対処する技術として、特許文献１に記載のような、パイポーラ型半導体によるフリップフロップ回路がある。特許文献１は、バイポーラ型半導体によって構成されたフリップフロップ回路に、ソフトエラー防止用抵抗を挿入した回路を開示している。したがって、特許文献１には、図１に示した方式と同じ問題があった。【０００６】
次に、図２は、複数の処理を活用することで、一時的故障に対処する構成の一典型例を示す図である。図２に示す例では、スレッド並列型ＣＰＵ１２に対して、先行スレッド１３と後続スレッド１４を生成し、その実行結果を比較することで、一時的故障を検出する。さらに、再度スレッドを実行することで、一時的故障へ対処する構成となっている。これにより、回路面積をそれほど増加させることなく、一時的故障への対処を実現できる。【０００７】
しかしながら、図２に示した方式は、スレッド並列型ＣＰＵが必要であり、また、スレッド並列処理を一時的故障検出に利用しているため、本来のＣＰＵ性能を引き出すことができない。また、複数のスレッドを実行するため、メモリ利用量が大幅に増加する。【０００８】
この問題に対処する技術として、特許文献２には、複数のスレッドの実行をサポートするＣＰＵ技術が開示されている。したがって、特許文献２には、図２の方式と同じ問題があった。
【特許文献１】特開平６−３５００３７号公報
【特許文献２】特開２００５−１４９４９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記で述べたように、ＣＰＵにおける一時的故障に対して、ハードウェアコストを抑えた対策は実現不可能であった。【００１０】
したがって、本発明の目的は、ＣＰＵにおける一時的故障に対して、低コストの半導体集積回路、演算装置の故障検出方法、およびコンピュータプログラムプロダクトを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の半導体集積回路は、命令経過情報の出力信号を持ち、メモリ上のプログラムで動作可能な演算装置を有する半導体集積回路において、演算装置からの命令経過情報に対応する命令コードと、前記メモリ上から読み出した命令コードとを比較することで、故障を検出するトレース判定手段を有する。【００１２】
本発明によれば、演算装置（ＣＰＵ）の一時的故障に対して、ＣＰＵからの命令経過情報に対応する命令コードと、命令メモリ上から読み出した命令とを比較することで、低コストの耐一時的故障対策を実現することができる。【００１３】
また、本発明を出荷前の選別試験に適用することで、ＣＰＵのプログラムでの実速度動作による、高速で、安価で、網羅率の高い選別試験を行うことも可能となる。すなわち、ＣＰＵで実際に実行された結果という、比較的長い信号パスと、メモリからの読み出しという、比較的短い信号パスとを比較することで、ハードウェアオーバヘッドを抑えたことに特徴がある。
【図面の簡単な説明】
【００１４】
【図１】従来のシステム構成の一例を示す図である。
【図２】従来のシステム構成の他の例を示す図である。
【図３】本発明の一実施形態の半導体集積回路の構成を示す図である。
【図４】本実施形態のトレース情報の構成を示す図である。
【図５】本実施形態のトレース情報の構成の変形例を示す図である。
【図６】トレース判定回路の構成例を示す図である。
【図７】トレース判定回路の動作例を示す図である。
【図８】トレース判定回路の他の動作例を示す図である。
【符号の説明】
【００１５】
１０  ＣＰＵ
１１  耐一時的故障ＣＰＵ
１２  スレッド並列型ＣＰＵ
１３  先行スレッド
１４  後続スレッド
２０  メモリ
２１  メモリバス
１００  トレース判定回路
１０１  ＣＰＵトレース信号
１０２  ＣＰＵ割込み信号
１１０  トレース解釈回路
１２０  メモリ読み出し回路
１３０  トレース比較回路
２００  耐一時的故障フリップフロップ回路
【発明を実施するための最良の形態】
【００１６】
次に、本発明を実施するための最良の形態について図面を参照して説明する。【００１７】
図３は、本発明の一実施形態の耐一時的故障装置の構成を示す図である。図３を参照すると、耐一時的故障装置は、演算装置であるＣＰＵ１０と、メモリ２０と、ＣＰＵトレース信号１０１を介してＣＰＵ１0に接続され、メモリバス２１を介して、プログラムやデータを含むメモリ２０に接続され、ＣＰＵ１０の実行経過情報（トレース情報）に対応する命令コードと、メモリ２０から読み出した命を比較すること一時的故障を検出し、それをＣＰＵ割込み信号１０２を介して、ＣＰＵ１０に通知することで、一時的故障の対策を行うトレース判定回路１００とを備える。【００１８】
本実施形態において、ＣＰＵ１０、メモリ２０、トレース判定回路１００は、それぞれ、別パッケージ構成だけでなく、ＳoＣ(Ｓｙｓｔｅｍ-ｏｎ−Ｃｈｉｐ)内部の回路構成あるいは別チップによるＳｉＰ(Ｓｙｓｔｅｍ−ｉｎ−Ｐａｃｋａｇe）構成、さらにその組み合わせからなる構成をとってもよい。【００１９】
また、ＣＰＵ１０は、信号処理プロセッサ、または、ＶＬＩＷプロセッサ、構成可能プロセッサ等の、プログラム動作が可能な演算装置であれば何でもよい。このＣＰＵは、実行した結果をトレース情報として取得可能なトレース信号１０１と、割り込み受理のためのＣＰＵ割り込み信号１０２とを備える。また、より強固に命令制御フローを守る観点から、プログラムカウントに耐一時的故障対策を行っていてもよい。【００２０】
また、トレース判定回路１００は、ハードウェア構成だけでなく、ソフトウェア的な構成で実現されてもよい。【００２１】
さらに、メモリ２０は、コスト的に見合うのであれば、マルチチップ構成やマルチバンク構成をとってもかまわない。また、それ自身にエラー修正コードのような一時的故障対策を行っていてもよい。【００２２】
図４は本実施形態におけるトレース情報の構成例を示す図である。この例では、トレース情報は、１命令トレース情報が原則として１パケットで表現される。例えば、１パケットは、実行された命令に関する、命令コード自身を表すｎビットと、アドレス自身を表すｎビットと、データ自身を表すｎビット含む。ここで、１命令によって、複数のメモリアクセスが実行される場合には、メモリアクセスについて、１パケットが出力される。【００２３】
図５は本実施形態におけるトレース情報の構成の変形例を示す図である。図４の例と異なり、１命令トレースが複数のパケットで表現されるため、ハードウェアコストを抑えることが可能となる。例えば、１パケットは、実行された命令に関する、種類を表すｋビットと、アドレスおよびデータの一部を表すｎビット含む。ここで、トレースの種類は、実行された命令が、条件付で実行されなかったかという示す条件付非実行、通常の実行を示す単純実行、アドレス出力が行われたことを示すアドレス出力実行、データ出力が行われたことを示すデータ出力実行、アドレスおよびデータ出力が行われたことを示すアドレス・データ出力実行、分岐が行われたことを示す分岐実行からなり、また、その他に、このパケットが事前のパケットの継続情報を示す継続種類、命令実行が待ち状態になっていることを示すＷａｉｔ種類からなる。【００２４】
図６はトレース判定回路１００の構成例を示す図である。トレース判定回路１００は、ＣＰＵ１０で実行された命令経過情報に対応する命令コードと、メモリ２０にある本来の命令コードとを比較し、かつ、ＣＰＵ１０に割り込む機能を有し、ＣＰＵトレース信号１０１を介して、ＣＰＵ１０と接続するトレース解釈回路１１０と、メモリバス２１を介して、メモリ２０に接続するメモリ読み出し回路１２０と、ＣＰＵ割込み信号１０２を介して、ＣＰＵ１０と接続するトレース比較回路１３０とを含む。【００２５】
トレース解釈回路１１０は、ＣＰＵトレース信号１０１からのトレース情報を解釈し、トレース情報を実際に実行された命令列（命令コード）へと変換する。この変換された命令列は、メモリ読み出し回路１２０とトレース比較回路１３０へ通知される。なお、トレース解釈回路１１０は、内部にバッファを備えて、命令列を保存しておいてもよい。【００２６】
メモリ読み出し回路１２０は、トレース解釈回路１１０からの通知を受けて、実行した命令に該当するメモリ２０上の命令を読み出す。その読み出された命令は、トレース比較回路１３０へ供給される。なお、このメモリ読み出し回路１２０は、プリフェッチのように事前に複数の命令を読み出す機能を備えていてもよい。また、ＣＰＵ１０が仮想アドレスを備えている場合には、その仮想アドレス変換に必要な情報をＣＰＵ１０から設定されることも可能である。【００２７】
トレース比較回路１３０は、トレース解釈回路１１０からの命令コードと、メモリ読み出し回路１２０からの命令コードとを比較する。もし不一致が起きた場合には、トレース比較回路１３０はその旨をＣＰＵ割込み信号１０２を介してＣＰＵ１０に通知する。ここで、例えば、ＣＰＵ１０は、一時的故障が起きた処理を再度実行することで、一時的故障に対策を行うことが可能となる。【００２８】
図７は、図６のトレース判定回路１００の動作例を説明するための図である。図７において、矢印脇のＳと数字からなる符号はステップ番号を表している。【００２９】
トレース解釈回路１１０は、ＣＰＵトレース信号１０１によって受理したトレース情報を解釈する（ステップＳ１）。トレース解釈回路１１０は、該トレース情報に相当する命令アドレスをメモリ読み出し回路１２０に通知する（ステップＳ２）。トレース解釈回路１１０は、実行した命令コードをトレース比較回路１３０に通知する（ステップＳ３）。ここで、トレース比較回路１３０は、メモリ読み出し回路１２０からの通知を待つ。メモリ読み出し回路１２０は、ステップＳ２で供給された命令アドレスに該当する命令コードをメモリ２０から読み出す（ステップＳ４）。
メモリ読み出し回路１２０は、ステップＳ４で読み出した命令コードをトレース比較回路１３０に通知する（ステップＳ４）。 トレース比較回路１３０は、該命令コードと、ステップＳ３で得られた命令コードと比較し、一致していることを認知する。この場合には、何も動作を行わない。【００３０】
図８は、図６のトレース判定回路１００の動作の他の動作例を説明するための図である。図８において、矢印脇のＳと数字からなる符号はステップ番号を表している。【００３１】
トレース解釈回路１１０は、ＣＰＵトレース信号１０１を介して、受理したトレース情報を解釈する（ステップＳ１）。トレース解釈回路１１０は、該トレース情報に相当する命令アドレスをメモリ読み出回路１２０に通知する（ステップＳ２）。トレース解釈回路１１０は、実行した命令コードをトレース比較回路１３０に通知する（ステップＳ３）。ここで、トレース比較回路１３０はメモリ読み出し回路１２０からの通知を待つ。メモリ読み出し回路１２０は、ステップＳ２で供給された命令アドレスに該当する命令コードをメモリ２０から読み出す（ステップＳ４）。
メモリ読み出し回路１２０は、ステップＳ４で読み出した命令コードをトレース比較回路１３０に通知する（ステップＳ５）。トレース比較回路１３０は、該命令コードと、ステップＳ３で得られた命令コードと比較し、そして、不一致であることを認知する（ステップＳ５）。トレース比較回路１３０は、ＣＰＵ割込み信号１０２を介して、ＣＰＵ１０に処理の再実行を依頼する（ステップＳ６）。【００３２】
なお、前記各実施形態では、複数のＣＰＵを有する半導体集積回路選別試験装置および方法を例に説明したが、本実施形態は、かかる選別試験装置および方法に限定されるものではなく、任意の選別試験装置及び方法に適用可能である。【００３３】
本実施形態によれば、ＣＰＵ１０の一時的故障に対して、ＣＰＵ１０からの命令経過情報に対応する命令コードと、メモリ２０上から読み出した命令とを比較することで、低コストの耐一時的故障対策を実現することができる。【００３４】
また、本実施形態を出荷前の選別試験に適用することで、ＣＰＵ１０のプログラムでの実速度動作による、高速で、安価で、網羅率の高い選別試験を行うことも可能となる。【００３５】
なお、以上説明した半導体集積回路の機能は、その機能を実現するためのプログラムを、コンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行するものであってもよい。コンピュータ読み取り可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記録媒体、コンピュータシステムに内蔵されるハードディスク装置等の記憶装置を指す。さらに、コンピュータ読み取り可能な記録媒体は、インターネットを介してプログラムを送信する場合のように、短時間、動的にプログラムを保持するもの（伝送媒体もしくは伝送波）、その場合のサーバとなるコンピュータ内の揮発性メモリのように、一定時間プログラムを保持しているものを含む。【００３６】
本願は２００６年１１月２日に出願された日本出願特願２００６−２９９０９０号を基礎とする優先権を主張し、その開示の全てをここに取り込む。【００３７】
以上、本発明の好ましい実施形態を特定の用語を用いて説明したが、そのような記載は例示のみを目的としており、種々の変形および修正が以下の特許請求の範囲から外れることなく可能であることが理解されるべきである。
【図１】
2008053723.tif 000003
【図２】
2008053723.tif 000004
【図３】
2008053723.tif 000005
【図４】
2008053723.tif 000006
【図５】
2008053723.tif 000007
【図６】
2008053723.tif 000008
【図７】
2008053723.tif 000009
【図８】
2008053723.tif 000010
【国際調査報告】
2008053723.tif 000011
2008053723.tif 000012