(57)【要約】【課題】意図していた命令コードの動作とは異なる動作が実行されることによって、処理装置において発生したエラーを判定及び解決する。【解決手段】オペランドが命令コード本体として解釈されるなどのような処理装置におけるエラーを判定するために、処理装置のプログラムに付加された評価情報を用いて、実行すべき命令コードの情報をメモリから正しく得られているか否かを判定する。さらに、命令及び／又はタスクを実行する際にレジスタ又はメモリの情報をバックアップとして取得し、エラーが発生していた場合、そのバックアップを用いてエラーを解消する。【選択図】図１
2014219728.tif 000002
【特許請求の範囲】
【請求項１】
処理装置におけるエラーを判定する装置であって、
命令コード及び当該命令コードに関連付けされているオペランドを含む命令メモリ部と、当該命令コードに対応する評価情報と、前記オペランドに対応する評価情報とを少なくとも有する記憶装置と、
評価器と、
所定の情報と当該所定の情報に対応する評価情報とを前記記憶装置から読み出す処理装置と、
を備え、
前記命令コードに対応する評価情報は、当該評価情報が命令コードに対応していることを表しており、
前記評価器は、前記処理装置が前記命令コードを前記記憶装置から読み出すことを意図している場合、前記読み出された評価情報が命令コードに対応しているか否かを判定することを特徴とする装置。
【請求項２】
前記オペランドに対応する評価情報は、当該評価情報がオペランドに対応していることを表しており、
前記評価器は、前記処理装置が前記オペランドを前記記憶装置から読み出すことを意図している場合、前記読み出された評価情報がオペランドに対応しているか否かを判定することを特徴とする請求項１に記載の装置。
【請求項３】
前記記憶装置が前記命令コードに関連付けされている２以上のオペランドを有し、当該２以上のオペランドに対応する評価情報は、当該オペランドが読み出される順序を包含しており、
前記評価器は、前記処理装置が前記２以上のオペランドを前記記憶装置から読み出すことを意図している場合、前記読み出される順序が正しいか否かを判定することを特徴とする請求項１又は２に記載の装置。
【請求項４】
前記評価器は、前記処理装置に含まれていることを特徴とする請求項１ないし３のいずれか一つに記載の装置。
【請求項５】
前記評価情報は、コンパイラ又はアセンブラによって生成させることを特徴とする請求項１ないし４のいずれか一つに記載の装置。
【請求項６】
処理装置におけるエラーを判定する装置であって、
命令コード及び該命令コードに関連付けされているオペランドを含む命令メモリ部と、評価情報とを少なくとも有する記憶装置と、
評価器と、
所定の情報と当該所定の情報に対応する評価情報とを前記記憶装置から読み出す処理装置と、
を備え、
前記命令メモリ部の各評価情報は、当該評価情報が前記命令メモリ部に含まれている命令コード又はオペランドに対応していることを表しており、
前記評価器は、前記処理装置が前記記憶装置から命令コード又はオペランドを読み出すことを意図している場合、前記読み出された評価情報が命令コード又はオペランドに対応しているか否か、又は、当該評価情報が事前に定義されている情報であるか否かを判定することを特徴とする装置。
【請求項７】
処理装置におけるエラーを解決する装置であって、
命令コード及び該命令コードに関連付けされているオペランドについての情報を含む命令メモリ部と、当該命令コードに対応する評価情報と、前記のオペランドに対応する評価情報とを少なくとも有する記憶装置と、
評価器と、
所定の情報と当該所定の情報に対応する前記評価情報とを前記記憶装置から読み出し、当該命令コードを実行する時のレジスタの情報の一部又は全部をバックアップとして取得する処理装置と、
を備え、
前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、
前記評価器は、前記処理装置が前記命令コードを前記記憶装置から読み出すことを意図しているとき、前記読み出された評価情報が命令コードに対応しているか否かを判定し、当該評価情報が命令コードに対応していない場合、前記バックアップは、前記処理装置のレジスタにコピーされることを特徴とする装置。
【請求項８】
処理装置におけるエラーを解決する装置であって、
命令コード及び該命令コードに関連付けされているオペランドについての情報を含む命令メモリ部と、当該命令コードに対応する評価情報と、前記オペランドに対応する評価情報とを少なくとも有する記憶装置と、
評価器と、
所定の情報及び当該所定の情報に対応する前記評価情報を前記記憶装置から読み出し、タスクがディスパッチされる時の前記記憶装置の情報の一部又は全部及び／又はレジスタの情報の一部又は全部をバックアップとして取得する処理装置と、
を備え、
前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、
前記評価器は、前記処理装置が前記命令コードを前記記憶装置から読み出すことを意図しているとき、前記読み出された評価情報が命令コードに対応しているか否かを判定し、当該評価情報が命令コードに対応していない場合、前記バックアップは、前記記憶装置及び／又は前記レジスタにコピーされることを特徴とする装置。
【請求項９】
処理装置におけるエラーを判定する方法であって、
命令コード及び該命令コードに関連付けされているオペランドについての情報を含む命令メモリ部と、当該命令コードに対応する評価情報と、前記のオペランドに対応する評価情報とを少なくとも有する記憶装置から、所定の情報と当該所定の情報に対応する前記評価情報とを読み出すステップを有し、
前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、
方法は、さらに、
前記処理装置が前記命令コードを前記記憶装置から読み出すことを意図している場合、前記読み出された評価情報が命令コードに対応しているか否かを判定するステップを有することを特徴とする方法。
【請求項１０】
前記のオペランドに対応する評価情報は、オペランドに対応していることを表しており、
方法は、さらに、
前記処理装置が前記のオペランドを前記記憶装置から読み出すことを意図している場合、前記読み出された評価情報がオペランドに対応しているか否かを判定するステップを有することを特徴とする請求項９に記載の方法。
【請求項１１】
前記記憶装置が前記命令コードに関連付けされている２以上のオペランドを有し、当該２以上のオペランドに対応する評価情報は、当該オペランドが読み出される順序を包含しており、
方法は、さらに、
前記処理装置が前記２以上のオペランドを前記記憶装置から読み出すことを意図している場合、前記読み出される順序が正しいか否かを判定するステップを有することを特徴とする請求項９又は１０に記載の方法。
【請求項１２】
前記評価情報は、コンパイラ、又は、アセンブラによって生成させることを特徴とする請求項９ないし１１のいずれか一つに記載の方法。
【請求項１３】
処理装置におけるエラーを判定する方法であって、
命令コード及び該命令コードに関連付けされているオペランドを含む命令メモリ部と評価情報とを少なくとも有する記憶装置から、所定の情報と当該所定の情報に対応する前記評価情報とを読み出すステップを有し、
前記命令メモリ部の各評価情報は、当該評価情報が前記命令メモリ部に含まれている情報に対応していることを表しており、
方法は、さらに、
前記処理装置が前記メモリの前記命令メモリ部から情報を読み出すことを意図している場合、前記読み出された評価情報が前記命令メモリ部に含まれている情報に対応しているか否か、又は、前記評価情報が事前に定義されている情報であるか否かを判定するステップを有する方法。
【請求項１４】
処理装置におけるエラーを解決する方法であって、
命令コード及び該命令コードに関連付けされているオペランドを含む命令メモリ部と、当該命令コードに対応する評価情報と、前記のオペランドに対応する評価情報とを少なくとも有する記憶装置から、所定の情報と当該所定の情報に対応する評価情報とを読み出し、当該命令コードを実行する時のレジスタの情報の一部又は全部をバックアップとして取得するステップを有し、
前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、
方法は、さらに、
前記処理装置が前記命令コードを前記メモリから読み出すことを意図しているとき、前記読み出された評価情報が命令コードに対応しているか否かを判定し、当該評価情報が命令コードに対応していない場合、前記バックアップを前記処理装置のレジスタにコピーするステップを有する、方法。
【請求項１５】
処理装置におけるエラーを解決する方法であって、
命令コード及び該命令コードに関連付けされているオペランドを含む命令メモリ部と、当該命令コードに対応する評価情報と、前記のオペランドに対応する評価情報とを少なくとも有する記憶装置から、所定の情報と当該所定の情報に対応する前記評価情報とを読み出し、タスクがディスパッチされる時の前記記憶装置の情報の一部又は全部及び／又はレジスタの情報の一部又は全部をバックアップとして取得するステップを有し、
前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、
方法は、さらに、
前記処理装置が前記命令コードを前記メモリから読み出しているが、当該メモリから読み出された命令コードに対応する前記評価情報が命令コードに対応していない場合、前記バックアップを前記メモリ及び／又は前記レジスタにコピーするステップを有する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置におけるエラーを判定及び解決する装置及び方法に関する。
【背景技術】
【０００２】
処理装置などのＣＰＵは、メモリに置かれている命令語（命令コード）を読み込み、この命令コードを解釈して、情報の処理を行う。ここで、命令コードは、メモリの１つの場所（アドレス）にのみ置かれものもあるが、命令自体に組み合わされるデータ（一般に「オペランド」と称される）と組み合わせてメモリに置かれる場合が多い。そして、多くの命令コードは、複数のオペランドを有する。
【０００３】
命令コード及びオペランドがメモリに置かれると、特定の位置に有るデジタル情報が、命令コードの本体か、オペランドかを特定することは不可能である。ＣＰＵは、読み込もうとする命令コードそれ自体を読むとき、最初に、プログラム・カウンタ（ＰＣ）にアクセスし、プログラム・カウンタの値に基づいて、メモリの中の特定の１箇所を特定し、これを読み込む。ＣＰＵは、順次、増値式のカウンタであるプログラム・カウンタの値を用いて、オペランドの値を取得する。
【０００４】
ここで、ＣＰＵ内のプログラム・カウンタなどのレジスタの情報や、メモリの情報などは、ノイズなどに起因して、正しくない情報に書き換えられることがある。例えば、プログラム・カウンタは増値式のカウンタであるから、ノイズなどに起因して、意図しない加算が行われる場合がある。この加算が行われた場合、命令デコーダはオペランドを命令コード本体として解釈し、解釈された結果を実行する。したがって、意図していた命令コードの動作とは異なる動作が実行され、コンピュータにおいて、エラーが発生する。従来技術において、ＣＰＵにおけるエラーに起因して、いわゆるコンピュータの暴走、フリーズなどが発生していた。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施例は、実行すべき命令コードやオペランドの情報がメモリから正しく得られているか否かを判定する。これによって、本発明の実施例は、コンピュータの暴走などの原因となるコンピュータにおけるエラーを判定し、さらに、その判定結果に応じて、そのエラーを解決する。
【課題を解決するための手段】
【０００６】
本発明の実施例による装置は、命令コード及び当該命令コードに関連付けされているオペランドを含む命令メモリ部と、当該命令コードに対応する評価情報と、前記オペランドに対応する評価情報とを少なくとも有する記憶装置と、評価器と、所定の情報と当該所定の情報に対応する評価情報とを前記記憶装置から読み出す処理装置とを備え、前記命令コードに対応する評価情報は、当該評価情報が命令コードに対応していることを表しており、前記評価器は、前記処理装置が前記命令コードを前記記憶装置から読み出すことを意図している場合、前記読み出された評価情報が命令コードに対応しているか否かを判定することができる。
【０００７】
本発明の実施例において、前記オペランドに対応する評価情報は、当該評価情報がオペランドに対応していることを表しており、前記評価器は、前記処理装置が前記オペランドを前記記憶装置から読み出すことを意図している場合、前記読み出された評価情報がオペランドに対応しているか否かを判定することができる。
【０００８】
本発明の実施例において、前記記憶装置が前記命令コードに関連付けされている２以上のオペランドを有し、当該２以上のオペランドに対応する評価情報は、当該オペランドが読み出される順序を包含しており、前記評価器は、前記処理装置が前記２以上のオペランドを前記記憶装置から読み出すことを意図している場合、前記読み出される順序が正しいか否かを判定することができる。
【０００９】
本発明の実施例において、前記評価器は、前記処理装置に含まれている。
【００１０】
本発明の実施例において、前記評価情報は、コンパイラ又はアセンブラによって生成させることができる。
【００１１】
本発明の実施例による装置は、命令コード及び該命令コードに関連付けされているオペランドを含む命令メモリ部と、評価情報とを少なくとも有する記憶装置と、評価器と、所定の情報と当該所定の情報に対応する評価情報とを前記記憶装置から読み出す処理装置とを備え、前記命令メモリ部の各評価情報は、当該評価情報が前記命令メモリ部に含まれている命令コード又はオペランドに対応していることを表しており、前記評価器は、前記処理装置が前記記憶装置から命令コード又はオペランドを読み出すことを意図している場合、前記読み出された評価情報が命令コード又はオペランドに対応しているか否か、又は、当該評価情報が事前に定義されている情報であるか否かを判定することができる。
【００１２】
本発明の実施例による装置は、命令コード及び該命令コードに関連付けされているオペランドについての情報を含む命令メモリ部と、当該命令コードに対応する評価情報と、前記のオペランドに対応する評価情報とを少なくとも有する記憶装置と、評価器と、所定の情報と当該所定の情報に対応する前記評価情報とを前記記憶装置から読み出し、当該命令コードを実行する時のレジスタの情報の一部又は全部をバックアップとして取得する処理装置とを備え、前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、前記評価器は、前記処理装置が前記命令コードを前記記憶装置から読み出すことを意図しているとき、前記読み出された評価情報が命令コードに対応しているか否かを判定し、当該評価情報が命令コードに対応していない場合、前記バックアップは、前記処理装置のレジスタにコピーされるようにすることができる。
【００１３】
本発明の実施例による装置は、命令コード及び該命令コードに関連付けされているオペランドについての情報を含む命令メモリ部と、当該命令コードに対応する評価情報と、前記オペランドに対応する評価情報とを少なくとも有する記憶装置と、評価器と、所定の情報及び当該所定の情報に対応する前記評価情報を前記記憶装置から読み出し、タスクがディスパッチされる時の前記記憶装置の情報の一部又は全部及び／又はレジスタの情報の一部又は全部をバックアップとして取得する処理装置とを備え、前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、前記評価器は、前記処理装置が前記命令コードを前記記憶装置から読み出すことを意図しているとき、前記読み出された評価情報が命令コードに対応しているか否かを判定し、当該評価情報が命令コードに対応していない場合、前記バックアップは、前記記憶装置及び／又は前記レジスタにコピーされるようにすることができる。
【００１４】
本発明の実施例による方法は、命令コード及び該命令コードに関連付けされているオペランドについての情報を含む命令メモリ部と、当該命令コードに対応する評価情報と、前記のオペランドに対応する評価情報とを少なくとも有する記憶装置から、所定の情報と当該所定の情報に対応する前記評価情報とを読み出すステップを有し、前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、方法の実施例は、さらに、前記処理装置が前記命令コードを前記記憶装置から読み出すことを意図している場合、前記読み出された評価情報が命令コードに対応しているか否かを判定するステップを有することができる。
【００１５】
本発明の実施例において、前記のオペランドに対応する評価情報は、オペランドに対応していることを表しており、方法の実施例は、さらに、前記処理装置が前記のオペランドを前記記憶装置から読み出すことを意図している場合、前記読み出された評価情報がオペランドに対応しているか否かを判定するステップを有することができる。
【００１６】
本発明の実施例において、前記記憶装置が前記命令コードに関連付けされている２以上のオペランドを有し、当該２以上のオペランドに対応する評価情報は、当該オペランドが読み出される順序を包含しており、方法の実施例は、さらに、前記処理装置が前記２以上のオペランドを前記記憶装置から読み出すことを意図している場合、前記読み出される順序が正しいか否かを判定するステップを有することができる。
【００１７】
本発明の実施例において、前記評価情報は、コンパイラ、又は、アセンブラによって生成させることができる。
【００１８】
本発明の実施例による方法は、命令コード及び該命令コードに関連付けされているオペランドを含む命令メモリ部と評価情報とを少なくとも有する記憶装置から、所定の情報と当該所定の情報に対応する前記評価情報とを読み出すステップを有し、前記命令メモリ部の各評価情報は、当該評価情報が前記命令メモリ部に含まれている情報に対応していることを表しており、方法の実施例は、さらに、前記処理装置が前記メモリの前記命令メモリ部から情報を読み出すことを意図している場合、前記読み出された評価情報が前記命令メモリ部に含まれている情報に対応しているか否か、又は、前記評価情報が事前に定義されている情報であるか否かを判定するステップを有することができる。
【００１９】
本発明の実施例による方法は、命令コード及び該命令コードに関連付けされているオペランドを含む命令メモリ部と、当該命令コードに対応する評価情報と、前記のオペランドに対応する評価情報とを少なくとも有する記憶装置から、所定の情報と当該所定の情報に対応する評価情報とを読み出し、当該命令コードを実行する時のレジスタの情報の一部又は全部をバックアップとして取得するステップを有し、前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、方法の実施例は、さらに、前記処理装置が前記命令コードを前記メモリから読み出すことを意図しているとき、前記読み出された評価情報が命令コードに対応しているか否かを判定し、当該評価情報が命令コードに対応していない場合、前記バックアップを前記処理装置のレジスタにコピーするステップを有することができる。
【００２０】
本発明の実施例による方法は、命令コード及び該命令コードに関連付けされているオペランドを含む命令メモリ部と、当該命令コードに対応する評価情報と、前記のオペランドに対応する評価情報とを少なくとも有する記憶装置から、所定の情報と当該所定の情報に対応する前記評価情報とを読み出し、タスクがディスパッチされる時の前記記憶装置の情報の一部又は全部及び／又はレジスタの情報の一部又は全部をバックアップとして取得するステップを有し、前記命令コードに対応する評価情報は、命令コードに対応していることを表しており、方法の実施例は、さらに、前記処理装置が前記命令コードを前記メモリから読み出しているが、当該メモリから読み出された命令コードに対応する前記評価情報が命令コードに対応していない場合、前記バックアップを前記メモリ及び／又は前記レジスタにコピーするステップを有することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施例に係る装置を示した図である。
【図２】図１に示したメモリをより詳細に示した図である。
【図３】図１に示した装置の動作を示したフロー図である。
【図４】図２で示したメモリの変形例を示した図である。
【図５】図１に示した装置をさらに詳細に示した図である。
【図６】図５に示した装置の動作を示したフロー図である。
【図７】図５で示したＣＰＵの変形例を示した図である。
【発明を実施するための形態】
【００２２】
［実施例１］
図１は、本発明の実施例に係る装置１００を示した図である。装置１００は、ＣＰＵ１１０内に包含される評価器１１５、及び、メモリ１２５を含む。他の実施例において、評価器１１５は、ＣＰＵ１１０の外側に配置されていてもよい。
【００２３】
図２は、図１に示したメモリ１２５をより詳細に示した図である。メモリ１２５は、命令メモリ部を有する。命令メモリ部は、命令コード２１０の情報と命令コードに関連付けされているオペランドの情報とを含む。本実施例において、オペランドは、オペランド１  ２２０、オペランド２  ２３０を有する。メモリ１２５は、さらに、評価情報２１５、２２５、及び、２３５を有する。評価情報２１５、２２５、及び、２３５は、評価情報のそれぞれが命令コード２１０、オペランド１  ２２０、及び、オペランド２  ２３０に対応していることを表す。本実施例において、評価情報が命令コードに対応する場合、評価情報は「１」であり、評価情報がオペランドに対応する場合、評価情報は「０」である。これにより、装置１００は、評価情報を参照することによって、評価情報に対応する情報が、命令コードであるか、又は、オペランドであるかを判定することができる。
【００２４】
他の実施例において、評価情報「０」は、命令コード以外の情報に対応することを表すことができる。この場合、装置１００は、評価情報を参照することによって、評価情報に対応する情報が、命令コードであるか否かを判定することができる。
【００２５】
図３は、図１に示した装置１００の動作を示したフロー図である。ＣＰＵ１１０は、メモリ１２５の命令メモリ部に含まれている命令コード又はオペランドの情報、及び、その命令コード又はオペランドに対応する評価情報をメモリ１２５から読み出す（ステップ３１０）。ある命令が最初に実行される場合、ＣＰＵ１１０は、命令コードを読み出すことを意図して情報を読み出す。ＣＰＵ１１０は、その命令コードに基づいて、オペランドを読み出すこと、及び、オペランドを読み出す数、及び、オペランドを読み出す順序を特定する。
【００２６】
ここで、ＣＰＵ１１０は、ＣＰＵ１１０及び／又は装置１００への電気的ノイズなどに起因して、意図していた情報を読み出せない場合がある。例えば、ＣＰＵ１１０は、命令コードを読み出すことを意図していたが、オペランドを読み出す。したがって、従来技術において、オペランドが命令コードとして解釈されていた。この場合、ＣＰＵは、命令コードを正しく実行できず、エラーが発生していた。
【００２７】
ＣＰＵ１１０が命令コードを読み出す場合（この場合、意図していた情報を読み出せずに、オペランドが読み出される可能性がある）、評価器１１５は、その読み出した情報に対応する評価情報が命令コードに対応する情報であるか否かを判定する（ステップ３１５）。したがって、本実施例の装置１００は、ステップ３１５の判定によって、ＣＰＵ１１０にエラーが発生するであろうことを特定することができる。他の実施例において、ＣＰＵ１１０がオペランドを読み出す場合（この場合、意図していた情報を読み出せずに、命令コードが読み出される可能性がある）、評価器１１５は、その読み出した情報に対応する評価情報がオペランドに対応する情報であるか否かを判定することができる。
【００２８】
図４は、図２で示したメモリ１２５の変形例を示した図である。本実施例において、メモリ１２５は、プログラム・メモリ部４１５（４１０の集合体）、データ・メモリ部４２０（４２５の集合体）を有する。プログラム・メモリ部４１５は、命令コード及びオペランドを有する命令メモリ部４１０を有し、データ部４２５を有する。
【００２９】
命令メモリ部４１０に含まれている命令コード、及び、一又は二以上のオペランドは、それぞれ、対応する評価情報を有する。一実施例において、評価情報「１、０、０、０」（４５５及び４９５）は、それら評価情報が命令コード４５０及び４９０に対応していることを表す。評価情報「０、１、０、０」（４６５）は、その評価情報がオペランド１  ４６０に対応していることを表す。評価情報「０、０、１、０」（４７５）は、その評価情報がオペランド２  ４７０に対応していることを表す。評価情報「０、０、０、１」（４８５）は、その評価情報がオペランド３  ４８０に対応していることを表す。
【００３０】
本実施例において、評価情報は、オペランドが読み出される順序を表すことができる。例えば、評価情報の第２ビットが「１」である場合、その評価情報は、１番目に読み出されるオペランドを表し、評価情報の第３ビットが「１」である場合、その評価情報は、２番目に読み出されるオペランドを表し、評価情報の第４ビットが「１」である場合、その評価情報は、３番目に読み出されるオペランドを表す。これにより、ノイズ等による誤動作で、本来、オペランド４７５を読みだすはずが、４８５を読みだした際にも、ＣＰＵ１１０は、この評価情報の違いによりエラーを識別する事ができる。
【００３１】
また、命令メモリ部４１０以外の部分（例えば、データ部４２５）において、評価情報は、「０、０、０、０」（４９７）とすることができる。これにより、ＣＰＵ１１０又は評価器１１５は、メモリ１２５から読み出された情報が、命令メモリ部４１０の情報であるか、又は、命令メモリ部以外の部分の情報であるかを特定することができる。
【００３２】
図４のメモリ１２５が用いられる実施例において、図３のステップ３１５では、評価器１１５は、命令コードを読み出すことが意図されていた場合（この場合、意図していた情報を読み出せずに、オペランドが読み出される可能性がある）、読み出された情報に対応する評価情報が命令コードに対応する情報であるか否かを判定することができる。これにより、装置１００は、正しく命令コードが読み出されていることを確認することができる。
【００３３】
また、評価器１１５は、オペランドを読み出すことが意図されていた場合（この場合、意図していた情報を読み出せずに、命令コード、又は、別のオペランドが読み出される可能性がある）、評価情報が対象のオペランドに対応する情報であるか否かを判定することができる。これにより、装置１００は、正しくオペランドが読み出されていることを確認することができる。
【００３４】
さらに、評価器１１５は、ＣＰＵ１１０が読み出したオペランドの順序が、評価情報の順序と一致するか否かを判定することができる。これにより、装置１００は、オペランドが読み出される順序が正しいか否かを確認することができる。したがって、装置１００は、正しくオペランドが読み出されていることを確認でき、さらに、一又は二以上のオペランドを読み出す順序が正しいことを確認することができる。これにより、装置１００は、エラーを検出することができる。
【００３５】
他の実施例において、評価器１１５は、メモリから情報が読み出された場合、その情報の評価情報が命令メモリ部以外の部分（例えば、データ部など）に対応する情報であるか否かを判定することができる。例えば、評価情報が「０、０、０、０」（図４の４９７など）である場合、評価器１１５は、命令コード及びオペランド以外の情報が読み出されたことを確認することができる。これにより、装置１００は、エラーを検出することができる。
【００３６】
他の実施例において、評価器１１５は、メモリから命令コード、オペランド、データなどの情報が読み出された場合、その情報の評価情報が事前に定義されている情報であるか否かを判定することができる。例えば、事前に定義されていない情報である「１、１、１、１」や、「０、１、１、０」などが評価情報に設定されていた場合、評価器１１５は、メモリ１２５の情報が正しくないことを特定することができる。これにより、装置１００は、エラーを検出することができる。評価情報が事前に定義されていない情報である場合の例としては、メモリ１２５の情報がノイズなどの影響によって書き換えられることが考えられる。
【００３７】
図２おいて、評価情報は、１ビットの情報である。また、図４において、評価情報は、４ビットの情報である。しかしながら、これらの評価情報は例示であり、当業者であれば明らかなように、評価情報は、さらに多くのビット数を用いて表されていてもよい。さらに、評価情報は、ビット表現以外の表現方法を用いて表されていてもよい。
【００３８】
［実施例２］
図５は、図１に示した装置１００をさらに詳細に示した図である。ＣＰＵ１１０は、プログラム・カウンタ５１０、命令デコーダ５１５、シーケンサ５２０、及び、評価器１１５を有する。他の実施例において、評価器１１５は、ＣＰＵ１１０の外側に配置されていてもよい。この場合、評価器１１５は、バス５３０及び５３５に直接接続される。これにより、命令デコーダ、又は、シーケンサからの評価の為の情報は外部に出力され、評価器１１５は、これらの情報を使用することができる。ＣＰＵ１１０は、プログラム・カウンタ５１０からプログラム・カウンタ値をアドレス・バスへ出力し、メモリ１２５の特定の番地（アドレス）にアクセスする。メモリ１２５の前記の特定の番地に蓄積されていた情報は、データバスに出力され、その情報は、命令デコーダ５１５に与えられる。命令デコーダ５１５は、与えられた情報を命令コードとして解釈し、命令コードの処理及びその処理で用いられるオペランドの数を特定する。
【００３９】
ＣＰＵ１１０がプログラム・カウンタに示された特定の番地の情報を読み出すと、プログラム・カウンタ値は加算される。ＣＰＵ１１０は、加算されたプログラム・カウンタ値をアドレスバスに出力し、その値に基づいて、一又は二以上のオペランドを読み出す。これにより、ＣＰＵ１１０は、命令コード及びオペランドの読み出しを繰り返す。
【００４０】
シーケンサ５２０は、メモリの内容を、プログラム・カウンタ値を用いてメモリからバス５３０を介して読み出す処理を制御する。これにより、ＣＰＵ１１０は、読み出した情報が命令コードであること又はオペランドであること、並びに、オペランドを読み出す順序を特定することができる
【００４１】
ここで、プログラム・カウンタ５１０において、ノイズやソフトウエアプログラムの誤りなどの影響によって、プログラム・カウンタ値に意図しない加算が行われる可能性がある。例えば、ノイズがアドレス・バス５３０に入ることによって、プログラム・カウンタ値に意図しない加算が行われる。意図しない加算が行われた場合、プログラム・カウンタ値は、正しくない値となる。したがって、命令デコーダ５１５は、正しくないプログラム・カウンタ値に基づいて、メモリ１２５にアクセスする。これにより、ＣＰＵ１１０にエラーが発生する。
【００４２】
また、ノイズがデータバス５３０に入ることによって、取得したデータの一部又は全部が破壊され、データが正しくなくなった場合、ソフトウエアプログラムが正しく動作しなくなる。これにより、ＣＰＵ１１０にエラーが発生する。
【００４３】
ノイズなどの影響により、シーケンサ５２０は、命令コードを読み出せずに命令コード以外の情報であるオペランドなどを読み出す可能性がある。この場合、結果的に、メモリ１２５にソフトウエアプログラムとして定義されている処理とは異なる動作が引き起こされ、これにより、いわゆるコンピュータの暴走、フリーズなどが発生する。
【００４４】
図６は、図５に示した装置１００の動作を示したフロー図である。シーケンサ５２０は、プログラム・カウンタ５１０からプログラム・カウンタ値をアドレス・バスに出力する（ステップ６１０）。シーケンサ５２０は、プログラム・カウンタ値に基づいて、その値に対応する情報（命令コード、オペランド又はデータと、評価情報とを含む情報）をメモリ１２５から読み出す（ステップ６１５）。
【００４５】
評価器１１５は、読み出された情報の内、評価情報が命令コードを表しているか否かを判定する（ステップ６２０）。評価情報が命令コードを表していない場合、シーケンサ５２０は、エラー処理を実行する（ステップ６５５）。他の実施例において、ステップ６５５において、シーケンサ５２０は、処理を中止してもよい。
【００４６】
他の実施例において、ノイズなどの影響によって、プログラム・カウンタ値が大きく変更した場合、命令デコーダ５１５は、情報をメモリ１２５の命令メモリ部から読み出さずに、情報をデータ部などから読み出す可能性がある。この場合、命令メモリ部以外の評価情報を予め「０、０、０、０」などにしておき、命令メモリ部の評価情報と命令メモリ部以外の評価情報とを区別できるように評価情報を定義することによって、評価器１１５は、読み出された情報が命令メモリ部の情報であるか、又は、命令メモリ部以外の情報であるかを区別できる。これにより、読み出された情報が命令メモリ部以外の情報である場合、シーケンサ５２０は、処理の中止又はエラー処理を行うことができる。
【００４７】
評価情報が命令コードを表している場合、命令デコーダ５１５は、命令コードの処理で用いられるオペランドが存在するか否かを判定する（ステップ６３０）。オペランドが存在していない場合、フローはステップ６１０に進む。オペランドが存在している場合、シーケンサ５２０は、プログラム・カウンタ値をプログラム・カウンタ５１０からアドレス・バスに出力する（ステップ６３５）。シーケンサ５２０はは、プログラム・カウンタ値に基づいて、その値に対応する情報（オペランドと評価情報とを含む情報）を読み出す（ステップ６４０）。
【００４８】
評価器１１５は、読み出された情報の評価情報が正しいオペランドを表しているか否かを判定する（ステップ６４５）。評価情報が正しいオペランドを表していない場合、命令デコーダ５１５は、エラー処理を実行する（ステップ６５５）。他の実施例において、ステップ６５５において、シーケンサ５２０は、処理を中止してもよい。
【００４９】
シーケンサ５２０は、命令コードの処理において、次に読み出されるオペランドが存在するか否かを判定する（ステップ６５０）。オペランドが存在する場合、フローはステップ６３５に進む。オペランドが存在しない場合、フローはステップ６１０に進む。
【００５０】
上記の実施例において示した評価情報は、コンピュータ・プログラムがコンパイル、又は、アセンブルされる時にコンパイラやアセンブラによって生成されてもよい。
【００５１】
［実施例３］
図７は、図５で示したＣＰＵ１１０の変形例を示した図である。ＣＰＵ１１０は、さらに、レジスタ７１０及びバッファ・レジスタ７１５を有する。本実施例において、ＣＰＵ１１０は、所定の命令コードの処理を実行する時（より具体的には、所定の命令コードの処理を実行する直前）に、当該所定の命令コードの前に実行されていた命令コードが終了したときのレジスタ７１０に保存されている情報、又は、当該所定の命令コードの処理を実行する前のレジスタ７１０に保存されている情報をバックアップとして取得する。ＣＰＵ１１０は、バックアップをバッファ・レジスタ７１５（又はメモリ１２５）にコピー及び／又は保存することができる。
【００５２】
コピーされるレジスタ７１０の情報は、ＣＰＵのエラーを解消するために必要なレジスタの一部又は全部の情報であってもよい。レジスタの一部の情報としては、スタック・ポインタ、プログラム・カウンタ、又は、それらの組み合わせなどとすることができる。
【００５３】
ここで、１つの命令が終了し、次の命令を開始する前のタイミングは、割込み処理が実行できるタイミングである。このタイミングでは、実行していた命令は終了しており、命令が終了したことは、この命令が正常に実行されたことを意味すると推定される。
【００５４】
本実施例において、レジスタ７１０の情報は、命令コードを１つの単位としてバッファ・レジスタ７１５にコピーされる。他の実施例において、レジスタ７１０の情報は、２以上の命令コードを１つの単位としてバッファ・レジスタ７１５にコピーされてもよい。
【００５５】
第１の実施例及び第２の実施例で説明した通り、図３のステップ３１５及び図６のステップ６５５において、エラー処理が実行される。本実施例において、ＣＰＵ１１０において、エラーが発生した場合、エラーが発生した命令コードの処理を初期化し、バッファ・レジスタ７１５に保存されている情報をレジスタ７１０にコピーする。これにより、一部又は全てのレジスタの情報は、エラーが発生した命令コードの処理の実行直前の状態に戻せたので、この時点から再度、エラーが発生した命令を最初から実行する。この２度目の実行において、異常が起きない場合、エラーが解消される。
【００５６】
本実施例によって、一又は二以上の命令コードの情報を用いたエラー解消手段が達成される。
【００５７】
他の実施例において、ＣＰＵ１１０は、タスクが切り替わる（ディスパッチされる）時（より具体的には、タスクが切り替わる直前）に、レジスタ７１０の情報の一部又は全部をバックアップとして取得する。ＣＰＵ１１０は、バックアップをバッファ・レジスタ７１５（又はメモリ１２５）にコピー及び／又は保存することができる。この場合、ＣＰＵ１１０は、必要に応じて、メモリ１２５の内、書込み可能なメモリの一部又は全部をバックアップとしてメモリ１２５又は他の記憶装置（図示せず）にコピーすることもできる。
【００５８】
図３のステップ３１５及び図６のステップ６５５において、エラー処理が実行される。本実施例において、ＣＰＵ１１０において、エラーが発生した場合、エラーが発生したタスクの処理を初期化し、バッファ・レジスタ７１５に保存されている情報をレジスタ７１０にコピーし、及び／又は、メモリ１２５又は他の記憶装置に保存されている情報をメモリ１２５にコピーする。これにより、一部又は全てのレジスタの情報、及び／又は、一部又は全てのメモリ１２５の情報は、エラーが発生したタスクの処理の実行直前の状態に戻せたので、この時点から再度、エラーが発生したタスクを最初から実行する。この２度目の実行において、異常が起きない場合、エラーが解消される。
【００５９】
本実施例において、レジスタ７１０の情報及び／又はメモリ１２５の情報は、タスクを１つの単位としてコピーされる。他の実施例において、レジスタ７１０の情報及び／又はメモリ１２５の情報は、２以上のタスクを１つの単位としてコピーされてもよい。さらに、他の実施例において、コピーされるレジスタ７１０の情報は、ＣＰＵのエラーを解消するために必要なレジスタの一部又は全部の情報であってもよい。レジスタの一部の情報としては、スタック・ポインタ、プログラム・カウンタ、又は、それらの組み合わせなどとすることができる。コピーされるメモリ１２５の情報は、タスクを再実行することができる情報及び／又はＣＰＵのエラーを解消するために必要な情報である。
【００６０】
本実施例によって、一又は二以上のタスクの情報を用いたエラー解消手段が達成される。
【００６１】
本実施例において、タスクとは、オペレーティング・システムが処理する実行単位を意味する。タスクの例としては、タスク・ディスパッチ・ポイントから次のタスク・ディスパッチ・ポイントが発生するまでの間に実行される処理、割込み処理から次の割込み処理までの間に実行される処理、サブルーチン処理などが挙げられるが、これらは、例示であり、タスクは、他の単位で定義されていてもよい。
【００６２】
他の実施例において、一又は二以上の命令コードの情報を用いたエラー解消手段と一又は二以上のタスクの情報を用いたエラー解消手段とは、組み合わせることができる。例えば、一又は二以上の命令コードの情報を用いたエラー解消手段がエラーを解消できない場合、一又は二以上のタスクの情報を用いたエラー解消手段が、エラーを解消することができる。これにより、エラーの解消性能をより向上させることができる。
【００６３】
メカトロニクス、ロボット、パチンコ及びパチスロなどを含む遊技機、アーケードゲームなどを含むゲーム機器、エンジンのコントロール、車両ブレーキのコントロール、エレベーターのコントロールなどの分野において、ＣＰＵ１１０は、大電流及び高電圧が用いられることによって及び／又は静電気が発生することによって誤動作することがある。上記の実施例において示したＣＰＵ１１０は、大電流及び高電圧が用いられる及び／又は静電気が発生する分野の技術に適用することができる。これにより、本発明の実施例による発明は、事故又は損害の発生を大幅に削減することができる。
【００６４】
上記の実施例において、ＣＰＵ１１０は、８ビットＣＰＵなどの所定のビット数用ＣＰＵとすることができる。一実施例において、１つの命令コード又は１つのオペランドのビット数とこの命令コード又はオペランドに対応する評価情報のビット数とを加えた値は、所定のビット数と評価情報のビット数とを加えた値とすることができる。つまり、所定のビット数には、評価情報のビット数が含まれないようにすることができる。例えば、ＣＰＵ１１０が８ビットＣＰＵであり、評価情報が４ビットである場合、１つの命令コード又は１つのオペランドのビット数とこの命令コード又はオペランドに対応する評価情報のビット数とを加えた値は、１２ビットとすることができる。これにより、既存の所定のビット数用ＣＰＵに評価情報のための構成を容易に追加することができる。所定のビット数が８ビットであるＣＰＵについて説明したが、ＣＰＵ１１０は、１６ビット、３２ビット、６４ビットなどの他のビット数用ＣＰＵとすることができる。
【００６５】
上記の実施例において示したＣＰＵ１１０は、特許請求の範囲に記載した「処理装置」の一例である。処理装置は、プロセッサ、制御装置、マイクロ・プロセッサ、中央処理装置（CPU）、グラフィックス・プロセッシング・ユニット（GPU）などの情報処理を実行するためのあらゆる装置を含む。
【００６６】
上記の実施例において示したメモリ１２５は、特許請求の範囲に記載した「記憶装置」の一例である。記憶装置は、不揮発性メモリなどの記憶装置や、書き換えが行える記憶装置などを含む。特に、記憶装置は、主記憶装置として用いることが可能な記憶装置である。
【００６７】
上記の実施例において、ハードウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ソフトウェアで実現することができ、そして、ソフトウェアで実現するよう説明されたいくつかの要素の一部又は全ては、ハードウエアで実現することができることは理解されるであろう。
【００６８】
以上に説明した処理又は動作フローにおいて、あるステップにおいて、そのステップではまだ利用することができないはずのデータを利用しているなどの処理又は動作フロー上の矛盾が生じない限りにおいて、処理又は動作フローを自由に変更することができる。
【００６９】
以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【符号の説明】
【００７０】
１００  装置
１１０  ＣＰＵ
１１５  評価器
１２０  バス
１２５  メモリ
５１０  プログラム・カウンタ
５１５  命令デコーダ
５２０  シーケンサ
５３０  データ・バス
５３５  アドレス・バス
７１０  レジスタ
７１５  バッファ・レジスタ
【図１】
2014219728.tif 000003
【図２】
2014219728.tif 000004
【図３】
2014219728.tif 000005
【図４】
2014219728.tif 000006
【図５】
2014219728.tif 000007
【図６】
2014219728.tif 000008
【図７】
2014219728.tif 000009