JP5463565B2 - レジスタ診断装置及びレジスタ診断方法 - Google Patents

レジスタ診断装置及びレジスタ診断方法 Download PDF

Info

Publication number
JP5463565B2
JP5463565B2 JP2009125793A JP2009125793A JP5463565B2 JP 5463565 B2 JP5463565 B2 JP 5463565B2 JP 2009125793 A JP2009125793 A JP 2009125793A JP 2009125793 A JP2009125793 A JP 2009125793A JP 5463565 B2 JP5463565 B2 JP 5463565B2
Authority
JP
Japan
Prior art keywords
register
data
write
read
address
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.)
Expired - Fee Related
Application number
JP2009125793A
Other languages
English (en)
Other versions
JP2010272089A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009125793A priority Critical patent/JP5463565B2/ja
Publication of JP2010272089A publication Critical patent/JP2010272089A/ja
Application granted granted Critical
Publication of JP5463565B2 publication Critical patent/JP5463565B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Description

本発明は、レジスタ診断装置、及びレジスタ診断方法に関する。特に集積回路内に設けられたレジスタの記憶状態の診断を、ソフトウェアで動作する中央処理装置と、集積回路内に設けられたレジスタライト及びレジスタリード診断回路で実施するレジスタ診断処理技術に関する。
情報処理装置を構成する集積回路内には、アドレスデータやライトデータ等の複数のデータを一時的に記憶するレジスタと呼ばれる記憶部がある。CPU(Central Processing Unit)は、このレジスタに必要なデータを適宜格納し、その後適宜読み出して処理を進めている。
ところが、集積回路内に障害が発生した場合は、障害原因を究明する上で、レジスタを診断する必要がある。そこで、従来のレジスタを診断する方法は、レジスタ診断部を診断したい装置に接続し、スキャンパステストによりレジスタのデータを順次に読み出して、レジスタ診断部で各データのパリティチェックを行っている。
なお、スキャンパステストは、テスト容易化設計手法の1つで、順序回路の状態を外部端子から容易に設定/読み出すことができることである。そして、パリティチェックは、通信処理で用いられる単純な誤り検出方法で、データ中の“1”の個数を常に奇数(奇数パリティ)または偶数(偶数パリティ)になるように、検査用のビット(パリティビット)を付加して送信する。受信側において“1”の個数を数えることにより、受信したデータが正しいか検証できることである。
特許文献1には、レジスタの出力データに対してパリティチェックを行い、そのチェック結果を保持し、その保持した結果スキャンパステストにより読み出して診断を行うという技術についての記載がある。そして、特許文献2には、レジスタに入出力するデータの入力時と出力時との比較チェックすることについての技術についての記載がある。
特開平04−107747号公報 特開昭61−228536号公報
一般的な集積回路のレジスタ診断方式は、CPU(Central Processing Unit)からレジスタに対して設定値を書き込み、その後CPUから同レジスタを読み込んで、その値と設定値とが同じであるかをレジスタごとに確認する方式である。そのため、レジスタ数分の比較処理が必要になり、診断に多くの時間がかかっている。さらに、現在の集積回路はより複雑になってきており、それに伴ってデータの設定を必要とするレジスタの数が増大、あわせて設定されるデータをも複雑化しているために、より診断に時間が掛かるようになってきている。
また、設定値(期待値)をレジスタ数分記憶しなくてはならないため、診断用にメモリエリアを確保する必要があるため、処理速度が遅くなってしまう。また、アドレスを誤って他のレジスタを読み込んでも、同じ設定値のレジスタであれば、レジスタの故障を検出できないという可能性がある。
本発明はかかる点に鑑みてなされたものであり、情報処理装置のレジスタ診断の効率及び性能を高めることを目的にする。
上記課題を解決するための本発明は、CPUからレジスタに対する、ライトデータ及びリードデータのアドレスをアドレスバスから取り出して記憶するアドレス記憶と、ライトデータ及びリードデータをデータバスから取り出して記憶するデータ記憶とを有している。そして、アドレス記憶で記憶したアドレス及びデータ記憶で記憶したデータをCRC演算するCRC演算器と、そのCRC演算器の結果を記憶するレジスタE、Gとを持つ。さらに、レジスタE、Gに記憶するライトデータ及びリードデータを比較する診断部とを備えている。診断部は、演算部でのチェック演算結果が一致しないとき、各レジスタへのデータのライトとリードを行い、各レジスタのライト値とリード値とが不一致のとき、ハードウェア故障と判断し、各レジスタのライト値とリード値とが一致したとき、ソフトウェア故障と判断するようにした。
このようにしたことで、レジスタライト診断処理でレジスタのアドレス値及びライトデータからライト時のCRC値を生成し、レジスタリード診断処理でレジスタのアドレス値及びリードデータからリード時のCRC値を生成する。そして、そのライト時のCRC値及びリード時のCRC値が同一であるかどうかの診断を行える。
本発明により、診断するレジスタの中に同じ設定値のレジスタがいくつかあっても、ライト時のCRC値及びリード時のCRC値が同一である場合はレジスタ正常、同一でない場合はレジスタの故障とわかる。これにより、レジスタ診断やマイクロプログラムの正当性を検証することができる。
本発明の一実施の形態の例の情報処理装置の内部構成を示すブロック図である。 本発明の一実施の形態の例の情報処理装置のレジスタA回路を示す回路図である。 本発明の一実施の形態の例の情報処理装置のレジスタライトタイミングを示す説明図である。 本発明の一実施の形態の例の情報処理装置のレジスタリードタイミングを示す説明図である。 本発明の一実施の形態の例の情報処理装置のライト診断用アドレス記憶及びデータ記憶回路を示す説明図である。 本発明の一実施の形態の例の情報処理装置のリード診断用アドレス記憶及びデータ記憶回路を示す説明図である。 本発明の一実施の形態の例の情報処理装置のCRC演算器回路を示す説明図である。 本発明の一実施の形態の例の情報処理装置のレジスタD、E回路を示す説明図である。 本発明の一実施の形態の例の情報処理装置のレジスタF、G回路を示す説明図である。 本発明の一実施の形態の例の情報処理装置のライト診断制御状態遷移を示す説明図である。 本発明の一実施の形態の例の情報処理装置のライト診断制御動作タイミングを示す説明図である。 本発明の一実施の形態の例の情報処理装置のリード診断制御状態遷移を示す説明図である。 本発明の一実施の形態の例の情報処理装置のリード診断制御動作タイミングを示す説明図である。 本発明の一実施の形態の例の情報処理装置のCPUのレジスタ診断処理を示すフローチャートである。 本発明の一実施の形態の例の情報処理装置のレジスタ診断異常時の故障原因調査処理を示すフローチャートである。 本発明の一実施の形態の例の情報処理装置のCPUのCRC演算器診断処理を示すフローチャートである。
以下、本発明の一実施の形態の例について、以下の順序で説明する。
1.情報処理装置の内部構成(図1〜図13)
2.レジスタ診断処理動作(図14〜図15)
3.CRC演算器の診断処理動作(図16)
4.変形例の説明
[1.情報処理装置の内部構成]
図1は、一実施の形態の例を示すブロック図で、本実施の形態の情報処理装置において必要な一部分の構成を示すものである。
図1において、ソフトウェアで動作するCPU1と、集積回路6内の動作制御用設定レジスタA〜J(603〜612)(以下レジスタ)が、バス(アドレスバス2、ライト信号3、リード信号4、データバス5)で接続されている。そして、CPU1からレジスタA〜J(603〜612)に対し、ライトまたはリードアクセスできる情報処理装置である。
まず、基本構成である、アドレスデコーダ601、データセレクタ602、論理和素子613、レジスタA〜C(603〜605)の説明を行う。
アドレスデコーダ601は、CPU1からのアドレスを解読して、レジスタを選択するレジスタセレクト信号624A〜624Jを生成する回路である。
データセレクタ602は、ライト時にCPU1からのデータバス5をライトデータ625方向に出力し、リード時はレジスタ出力であるリードデータ626をデータバス5方向に入力する機能を持つ。
論理和素子613は、レジスタA〜C、E、G〜J(603〜605、607、609〜612)からのレジスタ出力データA〜C、E、G〜J(643〜645、650、649、646〜648)を論理和してリードデータ626を生成している。
レジスタA〜C(603〜605)は、集積回路6の動作モード等を設定する設定レジスタであり、CPU1からの設定値を記憶する記憶部で、CPU1はこのレジスタA〜C(603〜605)に必要なデータを適宜格納し、その後適宜読出して処理を進める。
なお、レジスタライト回路653及びレジスタリード回路654については、後述する。
ここで、レジスタA(603)の回路図について、図2を用いて説明する。レジスタA(603)は、クロック74が供給されるフリップフロップ72と、セレクタ71と、論理積素子70及び73とでデータ記憶回路を構成している。フリップフロップ72はDフリップフロップであり、1ビットの情報をクロックに同期して一時的に“0”または“1”の状態として保持する(記憶する)ことができる論理回路である。
レジスタセレクトA(624A)及びライト信号3を論理積素子70にて論理積することで、信号75が生成される。その信号75は、データを記憶するかライトデータ625を記憶するかを選択するセレクト信号となる。
そして、セレクタ71に信号75が入力し、セレクタ71で選択された信号がフリップフロップ72に入力されることで、レジスタ内Aデータ76が生成される。レジスタ内Aデータ76は、論理積素子73に供給する。
そして、リード信号4と、レジスタセレクトA(624A)と、レジスタ内Aデータ76とを論理積素子73にて論理積することで、レジスタA出力データ643が生成されて出力される。レジスタA出力データ643は、自分のレジスタが選択されかつリードされた時のみデータを出力する。
図2の回路図は、レジスタA(603)を示したが、レジスタB(604)及びレジスタC(605)も同様な構成である。レジスタB(604)及びレジスタC(605)は、それぞれレジスタB出力データ644、レジスタC出力データ645が生成されて出力される。
次に、CPU1からレジスタへのライトタイミングを図3で示す。ここではレジスタA〜C(603〜605)への連続ライトアクセスとする。
まず、CPU1からアドレスバス2(図3(b))、データバス5(図3(c))、ライト信号3(図3(e))を、図3(a)に示したクロックの1クロック期間アサートさせる。そして、アドレスデコーダ601は、アドレスバス2からレジスタを判定し、レジスタセレクトA(624A)(図3(f))をアサートさせる。その後、データセレクタ602はライトアクセスなので、図3(c)のデータバス5をライトデータ625方向に出力する。
これにより、レジスタA(603)の記憶回路は、次のクロックでライト信号3とレジスタセレクトA(624A)により、ライトデータ625(図3(d))をレジストA内データ76に“D0”を記憶する(図3(i))。なお、他のレジスタB(604)及びレジスタC(605)へのライトアクセスも同一タイミングとするので、順にレジストB内データ77に“D1”を、レジストC内データ78に“D2”を記憶する(図3(j)及び(図3(k))。ちなみに、アサートとは、システムバスの信号線などにおいて、それが有効な状態にあることを言う。
CPU1からレジスタへのリ−ドタイミングを図4で示す。ここではレジスタA、B、Cへの連続リードアクセスとする。
まず、CPU1からアドレスバス2(図4(b))をアサートさせ、次サイクルでリード信号4(図4(e))を、図4(a)に示したクロックの1クロック期間アサートさせる。そして、アドレスデコーダ601は、アドレスバス2からレジスタを判定し、レジスタセレクトA(624A)(図4(f))をアサートする。その後、レジスタA(603)は自分のレジスタが選択されかつリードされたため、レジスタA出力データ643(図4(i))に出力する。そして、データセレクタ602はリードアクセスなので、レジスタ出力であるリードデータ626(図4(d))をデータバス5方向に入力し、次のクロックでCPU1がリードデータを記憶する。他のレジスタB(604)及びレジスタC(605)へのリードアクセスも同一タイミングで、レジスタB出力データ644(図4(j))及びレジスタB出力データ645(図4(k))を出力する。
次に、図1に示した診断回路であるレジスタライト診断回路653について説明する。図1に示したように、レジスタライト診断回路653は、アドレス記憶614と、データ記憶615と、アドレス/データセレクタ616と、CRC演算器617と、レジスタD(606)と、レジスタE(607)と、ライト診断制御618とで構成されている。
まず、アドレス記憶614及びデータ記憶615を、図5を用いて説明する。図5(a)はアドレス記憶614、図5(b)はデータ記憶615の回路図を示す。
図5(a)のアドレス記憶614は、クロック74で同期したフリップフロップ110と、セレクタ111と、論理積素子112と、論理和素子113とでデータ記憶回路を構成している。
レジスタセレクト624A〜624C、624H〜624Jが論理和素子113にて論理和することで、信号82が生成される。そして、この信号82と、レジスタライト診断のスタート指示(診断スタート631)と、レジスタA〜C、H〜J(603〜605、610〜612)へのライトアクセス(ライト信号3)を、論理積素子112で論理積することで、信号83が生成される。その信号83は、データを記憶するかアドレスバス2を記憶するかを選択するセレクト信号となり、セレクタ111に供給する。
そして、信号83の入力により、セレクタ111で選択された信号がフリップフロップ110に入力されることで、アドレス記憶出力627が生成される。
図5(b)のアドレス記憶615は、クロック74で同期したフリップフロップ114と、セレクタ115と、論理積素子116と、論理和素子117とでデータ記憶回路を構成している。
レジスタセレクト624A〜624C、624H〜624Jが論理和素子117にて論理和することで、信号84が生成される。そして、この信号84と、レジスタライト診断のスタート指示(診断スタート631)と、レジスタA〜C、H〜J(603〜605、610〜612)へのライトアクセス(ライト信号3)を、論理積素子116で論理積することで、信号85が生成される。その信号85は、データを記憶するかライトデータ625を記憶するかを選択するセレクト信号となり、セレクタ115に供給する。
そして、信号85の入力により、セレクタ115で選択された信号がフリップフロップ114に入力されることで、データ記憶出力628が生成される。
なお、レジスタD〜G(606〜609)は、レジスタ診断回路用レジスタであるので、アクセスが発生してもアドレス記憶614及びデータ記憶615は行わず、レジスタ診断の対象としない。このアドレス記憶614及びデータ記憶615は、アドレス及びデータを取り出しているだけなので、CPU1からのレジスタアクセスに影響を与えることはない。
レジスタD(606)について、図8(a)を用いて説明する。レジスタD(606)は、クロック74で同期したフリップフロップ129と、セレクタ130と、論理積素子131とでデータ記憶回路を構成している。レジスタセレクトD(624D)及びライト信号3を論理積素子131にて論理積することで、信号92が生成される。その信号92は、データを記憶するかライトデータ625を記憶するかを選択するセレクト信号となる。
そして、セレクタ130への信号92の入力により、セレクタ130で選択された信号がフリップフロップ129に入力されることで、診断スタート631が生成される。ただし、ライトアクセス不可のレジスタである。
次に、図1に示したレジスタライト診断回路653内のライト診断制御618について、図10を用いて説明する。図10は、ライト診断制御618の状態遷移図を示す。ライト診断制御618の入力信号は、CPU1からのライト信号3と、アドレスデコーダ601からのレジスタセレクト624と、レジスタD(606)からの診断スタート631である。そして、出力信号は、アドレス/データセレクタ616を制御するデータセレクト632と、CRC演算器617のCRC初期化651信号及びCRC演算イネーブル633と、CRC演算結果格納イネーブル634である。
この状態遷移は、アイドル(S0)、初期化(S1)、アドレスCRC演算(S2)、データCRC演算(S3)、ウエイト(S4)、CRC結果格納(S5)がある。図中「&」は論理積記号を示し、「|」は論理和記号を示す。また、線上の入力信号名が遷移条件を示し、ステート上の枠内が出力信号を示す。このライト診断制御動作は、後述の図11のレジスタライト診断制御動作タイミングの中で説明する。
アドレス/データセレクタ616は、上記で記憶したアドレス記憶出力627かデータ記憶出力628を選択するセレクタである。ライト診断制御618からのデータセレクト632によりセレクト制御を行う。
次に、図1に示したレジスタライト診断回路653内のCRC演算器617を、図7を用いて説明する。CRC演算器617は、クロック74で同期したフリップフロップ126と、セレクタ127及び128と、CRC演算回路81とで構成している。CRC演算イネーブル633がアサートされた時のみCRC(Cyclic Redundancy Check:巡回冗長検査)演算を行う。アドレス/データセレクタ616からのセレクタ出力629をCRC演算回路81に入力してCRC演算を行って、信号90を生成する。ここでのCRC演算は、例えば8ビットCRC生成多項式=x+x+x+1を使用する。
次に、CRC演算イネーブル633の入力により、セレクタ128で選択された信号91が、セレクタ127に入力される。そして、ライト診断制御618からのCRC初期化651アサートにより、セレクタ127で選択された信号がフリップフロップ126に入力されることで、CRC演算結果630が生成される。そのCRC初期化651は、データを記憶するか初期値(0xFF)80を記憶するかを選択するセレクト信号となる。
次に、図1に示したレジスタライト診断回路653内のレジスタE(607)について、図8(b)を用いて説明する。まず、レジスタE(607)は、クロック74で同期したフリップフロップ132と、セレクタ133と、論理積素子134とでデータ記憶回路を構成している。
ライト診断制御618からのCRC演算結果格納イネーブル634がアサートされた時にCRC演算結果630を格納する。ただし、ライトアクセス不可のレジスタである。そして、セレクタ133で選択された信号がフリップフロップ132に入力されることで、信号93が生成され、論理積素子134に供給する。
そして、リード信号4と、レジスタセレクトE(624E)と、信号93とを論理積素子134にて論理積することで、レジスタE出力データ650が生成されて出力される。なお、レジスタE出力データ650は、自分のレジスタが選択されかつリードされた時のみデータを出力する。
ここから、レジスタライト診断回路653の制御動作について、図10及び図11を用いて説明する。制御動作タイミングは、以下の手順に従って動作する。
[手順1]
開始直後は、図10に示すようにライト診断制御618のアイドル(S0)は、CRC初期化<=“0”、CRC演算イネーブル<=“0”、データセレクト<=”0”、CRC演算結果格納イネーブル<=“0”となっている。そのため、何も動作しないアイドル状態となっている。
[手順2]
CPU1からレジスタD(606)に対して、診断スタート631の指示を行う。診断スタート631がアサートされると、図10が示すようにライト診断制御618は初期化(S1)に遷移し、CRC初期化<=“1”にする。CRC初期化651のアサートにより、CRC演算器617は演算回路に初期値を設定する。
[手順3]
CPU1からレジスタA(603)に対し、データ“D0”をライトアクセスする。その時のアドレス記憶614とデータ記憶615は、レジスタライト診断のスタート指示があり、かつ、レジスタA、B、C、H、I、Jへのライトアクセスが発生しているので、その時のアドレス及びライトデータを記憶する。そして、ライト診断制御618は、レジスタA、B、C、H、I、Jへのライトアクセスが発生すると、図10が示すようにアドレスCRC演算(S2)に遷移している。それから、CRC初期化<=“0”、CRC演算イネーブル<=“1”、データセレクト<=“0”にする。次に、CRC演算イネーブル633により、CRC演算器617は初期値とアドレス記憶出力627の“A”をCRC演算し、CRC演算結果値630は“CRC00”を算出する。
[手順4]
続いて、ライト診断制御618は、図10が示すようにデータCRC演算(S3)に遷移し、データセレクト<=“1”にする。アドレス/データセレクタ616は、データセレクト632のアサートにより、記憶したデータ記憶出力628を出力する。そして、CRC演算イネーブル633により、CRC演算器617は“CRC00”とデータ記憶出力628の“D0”をCRC演算し、CRC演算結果値630は“CRC01”を算出する。
[手順5]
レジスタのライトアクセスが連続して行われる場合、[手順4]を繰り返す。ここでは、以下のようになる。
CRC演算器617は“CRC01”とアドレス記憶出力627の“B”をCRC演算し、CRC演算結果値630は“CRC10”を算出する。
CRC演算器617は“CRC10”とデータ記憶出力628の“D1”をCRC演算し、CRC演算結果値630は“CRC11”を算出する。
CRC演算器617は“CRC11”とアドレス記憶出力627の“C”をCRC演算し、CRC演算結果値630は“CRC20”を算出する。
CRC演算器617は“CRC20”とデータ記憶出力628の“D2”をCRC演算し、CRC演算結果値630は“CRC21”を算出する。
これで、CRC演算結果値630のリード値は“CRC21”となる。
[手順6]
レジスタのライトアクセスの間隔が2クロック以上空いた場合は、ライト診断制御618は、図10が示すようにウエイト(S4)に遷移し、データセレクト<=“0”、CRC演算イネーブル<=“0”にし、待ち状態になる。
[手順7]
CPU1からレジスタD(606)(レジスタライト診断制御レジスタ)に対し、レジスタライト診断のストップ指示を行う。診断スタート631がデアサートされるとライト診断制御618は図10が示すようにCRC結果格納(S5)に遷移し、CRC演算結果格納イネーブル<=“1”にする。CRC演算結果格納イネーブル634により、レジスタE(607)(ライトCRC演算結果格納レジスタ)に算出したCRC演算結果値630“CRC21”を格納する。
[手順8]
そして、ライト診断制御618は、アイドル(S0)に遷移し、レジスタライト診断を終了する。
[手順9]
CPU1からレジスタE(607)(ライトCRC演算結果格納レジスタ)に対し、ライトCRC演算結果値をリードする。
次に、図1に示した診断回路であるレジスタリード診断回路654について説明する。レジスタリード診断回路654は、アドレス記憶619と、データ記憶620と、アドレス/データセレクタ621と、CRC演算器622と、レジスタF(608)と、レジスタG(609)と、リード診断制御623とで構成されている。
まず、アドレス記憶619及びデータ記憶620を、図6を用いて説明する。図6(a)はアドレス記憶619、図6(b)はデータ記憶620の回路図を示す。
図6(a)のアドレス記憶619は、クロック74で同期したフリップフロップ118と、セレクタ119と、論理積素子120と、論理和素子121とでデータ記憶回路を構成している。
レジスタセレクト624A〜624C、624H〜624Jが論理和素子121にて論理和することで、信号86が生成される。そして、この信号86と、レジスタライト診断のスタート指示(診断スタート639)と、レジスタA〜C、H〜J(603〜605、610〜612)へのリードアクセス(リード信号4)を論理積素子120で論理積することで、信号87が生成される。その信号87は、データを記憶するかアドレスバス2を記憶するかを選択するセレクト信号となり、セレクタ119に供給する。
そして、信号87の入力により、セレクタ119で選択された信号がフリップフロップ118に入力されることで、アドレス記憶出力635が生成される。
図6(b)のアドレス記憶620は、クロック74で同期したフリップフロップ122と、セレクタ123と、論理積素子124と、論理和素子125とでデータ記憶回路を構成している。
レジスタセレクト624A〜624C、624H〜624Jが論理和素子125にて論理和することで、信号88が生成される。そして、この信号88と、レジスタライト診断のスタート指示(診断スタート639)と、レジスタA〜C、H〜J(603〜605、610〜612)へのリードアクセス(リード信号4)を論理積素子124で論理積することで、信号89が生成される。その信号89は、データを記憶するかリードデータ626を記憶するかを選択するセレクト信号となり、セレクタ123に供給する。
そして、信号89の入力により、セレクタ123で選択された信号がフリップフロップ122に入力されることで、データ記憶出力636が生成される。
なお、レジスタD〜G(606〜609)は、レジスタ診断回路用レジスタであるので、アクセスが発生してもアドレス記憶(619)及びデータ記憶(620)は行わず、レジスタ診断の対象としない。このアドレス記憶(619)及びデータ記憶(620)は、アドレス及びデータを取り出しているだけなので、CPU1からのレジスタアクセスに影響を与えることはない。
レジスタF(608)について、図9(a)を用いて説明する。レジスタF(608)は、クロック74で同期したフリップフロップ135と、セレクタ136と、論理積素子137とでデータ記憶回路を構成している。レジスタセレクトF(624F)及びライト信号3を論理積素子137にて論理積することで、信号94が生成される。その信号94は、データを記憶するかライトデータ625を記憶するかを選択するセレクト信号となり、セレクタ135に供給する。
そして、信号94の入力により、セレクタ136で選択された信号がフリップフロップ135に入力されることで、診断スタート639が生成される。ただし、ライトアクセス不可のレジスタである。
次に、図1に示したリード診断制御623について、図12を用いて説明する。図12は、リード診断制御623の状態遷移図を示す。リード診断制御623の入力信号は、CPU1からのリード信号4と、アドレスデコーダ601からのレジスタセレクト624と、レジスタF(608)からの診断スタート639である。そして、出力信号は、アドレス/データセレクタ621を制御するデータセレクト640と、CRC演算器622のCRC初期化652信号及びCRC演算イネーブル641と、CRC演算結果格納イネーブル642である。
この状態遷移は、アイドル(S6)、初期化(S7)、アドレスCRC演算(S8)、データCRC演算(S9)、ウエイト(S10)、CRC結果格納(S11)がある。図中「&」は論理積記号を示し、「|」は論理和記号を示す。また、線上の入力信号名が遷移条件を示し、ステート上の枠内が出力信号を示す。このリード診断制御動作は、図13のレジスタリード診断制御動作タイミングの中で説明する。
アドレス/データセレクタ621は、上記で記憶したアドレス記憶出力635かデータ記憶出力636を選択するセレクタである。リード診断制御623からのデータセレクト640によりセレクト制御を行う。
CRC演算器622は、図7を用いて説明する。CRC演算器622は、クロック74で同期したフリップフロップ126と、セレクタ127及び128と、CRC演算回路81とで構成している。CRC演算イネーブル633がアサートされた時のみCRC演算を行う。アドレス/データセレクタ621からのセレクタ出力637をCRC演算回路81に入力してCRC演算を行って、信号90を生成し、セレクタ91に供給する。ここでのCRC演算は、例えば8ビットCRC生成多項式=x+x+x+1を使用する。
CRC演算イネーブル641の入力により、セレクタ128で選択された信号91が、セレクタ127に入力される。そして、ライト診断制御623からのCRC初期化652アサートにより、セレクタ127で選択された信号がフリップフロップ126に入力されることで、CRC演算結果638が生成される。CRC演算結果638は、CRC演算回路81とセレクタ128に戻される。なお、そのCRC初期化652は、データを記憶するか初期値(0xFF)80を記憶するかを選択するセレクト信号となる。
レジスタG(609)について、図9(b)を用いて説明する。まず、レジスタG(609)は、クロック74で同期したフリップフロップ138と、セレクタ139と、論理積素子140とでデータ記憶回路を構成している。
リード診断制御623からのCRC演算結果格納イネーブル642がアサートされた時にCRC演算結果638を格納する。ただし、ライトアクセス不可のレジスタである。そして、セレクタ139で選択された信号がフリップフロップ138に入力されることで、信号95が生成される。
次に、リード信号4、レジスタセレクトG(624G)、信号95とを論理積素子140にて論理積することで、レジスタG出力データ649が生成されて出力される。なお、レジスタG出力データ649は、自分のレジスタが選択されかつリードされた時のみデータを出力する。
ここから、レジスタリード診断回路654の制御動作について、図12及び図13を用いて説明する。制御動作タイミングは、以下の手順に従って動作する。
[手順1]
開始直後は、図12が示すようにリード診断制御623のアイドル(S6)は、CRC初期化<=“0”、CRC演算イネーブル<=“0”、データセレクト<=”0”、CRC演算結果格納イネーブル<=“0”となっている。そのため、何も動作しないアイドル状態となっている。
[手順2]
CPU1からレジスタF(608)(レジスタリード診断制御レジスタ)に対して、レジスタリード診断のスタート指示を行う。診断スタート639がアサートされると、図12が示すようにリード診断制御623は初期化(S7)に遷移し、CRC初期化<=“1”にする。CRC初期化652のアサートにより、CRC演算器622は演算回路に初期値を設定する。
[手順3]
CPU1からレジスタA(603)に対し、データ「D0」をリードアクセスする。その時のアドレス記憶619とデータ記憶620は、レジスタリード診断のスタート指示があり、かつ、レジスタA、B、C、H、I、Jへのリードアクセスが発生しているので、その時のアドレス及びリードデータを記憶する。そして、リード診断制御623は、レジスタA、B、C、H、I、Jへのライトアクセスが発生すると、図12が示すようにアドレスCRC演算(S8)に遷移している。それから、CRC初期化<=“0”、CRC演算イネーブル<=“1”、データセレクト<=“0”にする。次に、CRC演算イネーブル641により、CRC演算器622は初期値とアドレス記憶出力635の“A”をCRC演算し、CRC演算結果値638は“CRC00”を算出する。
[手順4]
続いて、リード診断制御623は、図12が示すようにデータCRC演算(S9)に遷移し、データセレクト<=“1”にする。アドレス/データセレクタ621は、データセレクト640のアサートにより、記憶したデータ記憶出力636を出力する。そして、CRC演算イネーブル641により、CRC演算器622は“CRC00”とデータ記憶出力636の“D0”をCRC演算し、CRC演算結果値638は“CRC01”を算出する。
[手順5]
レジスタのリードアクセスが連続して行われる場合、[手順4]を繰り返す。ここでは、以下のようになる。
CRC演算器622は“CRC01”とアドレス記憶出力635の“B”をCRC演算し、CRC演算結果値638は“CRC10”を算出する。
CRC演算器622は“CRC10”とデータ記憶出力636の“D1”をCRC演算し、CRC演算結果値638は“CRC11”を算出する。
CRC演算器622は“CRC11”とアドレス記憶出力635の“C”をCRC演算し、CRC演算結果値638は“CRC20”を算出する。
CRC演算器622は“CRC20”とデータ記憶出力636の“D2”をCRC演算し、CRC演算結果値630は“CRC21”を算出する。
これで、CRC演算結果値638のリード値は“CRC21”となる。
[手順6]
レジスタのリードアクセスの間隔が1クロック以上空いた場合は、リード診断制御623は、図12が示すようにウエイト(S10)に遷移し、データセレクト<=“0”、CRC演算イネーブル<=“0”にし、待ち状態になる。
[手順7]
CPU1からレジスタF(608)(レジスタリード診断制御レジスタ)に対し、レジスタリード診断のストップ指示を行う。診断スタート639がデアサートされるとリード診断制御623は図12が示すようにCRC結果格納(S11)に遷移し、CRC演算結果格納イネーブル<=“1”にする。CRC演算結果格納イネーブル642により、レジスタG(609)(リードCRC演算結果格納レジスタ)に算出したCRC演算結果値638は“CRC21”を格納する。
[手順8]
そして、リード診断制御623は、アイドル(S0’)に遷移し、レジスタリード診断を終了する。
[手順9]
CPU1からレジスタG(609)(リードCRC演算結果格納レジスタ)に対し、リードCRC演算結果値をリードする。
そして、診断部655では、レジスタE(607)及びレジスタF(609)に格納したデータを用いて、比較診断を行う。また、CRC演算器の診断処理では、レジスタH(610)、レジスタI(611)、レジスタJ(612)のデータを用いて、CPUで演算したCRC値、ライトCRC演算結果値、リードCRC演算結果値が演算し、その値をレジスタごとに比較診断を行う。
[2.レジスタ診断処理動作]
図14のフローチャートを参照して、本発明の一実施の形態の例による情報処理装置のレジスタ診断処理についての動作を説明する。この図14のフローチャートの処理は、本発明の一実施の形態の例による情報処理装置のレジスタ診断を行う場合に実行される。
まず、レジスタライト診断制御レジスタ(レジスタD(606))にスタート指示を行って(ステップF101)、順に、レジスタA、B、Cにライトアクセスを行う(ステップF102−F104)。そして、レジスタライト診断制御レジスタ(レジスタD(606))にストップ指示を行う(ステップF105)。その後、ライトCRC演算結果レジスタ(レジスタE(607))にリードを行い(ステップF106)、ライトCRC演算結果値を保管する(ステップF107)。
次に、レジスタリード診断制御レジスタ(レジスタF(608))にスタート指示を行って(ステップF108)、順に、レジスタA、B、Cにリードアクセスを行う(ステップF109−F111)。そして、レジスタライト診断制御レジスタ(レジスタF(608))にストップ指示を行う(ステップF112)。その後、リードCRC演算結果レジスタ(レジスタG(609))にリードを行う(ステップF113)。
ライトCRC演算結果値とリードCRC演算結果値が一致するか判定する(ステップF114)。一致しいていれば、レジスタ正常と判定する(ステップF115)。しかし、不一致であれば、レジスタ診断異常と判定する(ステップF116)。
なお、ステップF101〜F107はレジスタライト診断手順を示し、ステップF108〜F113はレジスタリード診断手順を示している。
このレジスタ異常は、ライトCRC演算結果値とリードCRC演算結果値が不一致な場合の2通りの故障が考えられる。ハードウェア的にレジスタが故障した時と、レジスタのライトまたはリードする順番が違うというソフトウェア異常故障である。そこで、故障原因を特定するための処理を、図15のフローチャートを用いて説明する。このフローチャートの処理は、図14のステップF116を検出した場合に実行される。
まず、ライトCRC演算結果値とリードCRC演算結果値が不一致のためレジスタ診断異常と判定される(ステップF201)。そして、ハードウェア本体を停止する(オフライン)。
それから、レジスタA−Cまでをライト又はリード作業を繰り返す。
CPU1からレジスタA(603)にライトアクセスを行い(ステップF203)、CPU1からレジスタA(603)にリードアクセスを行う(ステップF204)。
CPU1からレジスタB(604)にライトアクセスを行い(ステップF205)、CPU1からレジスタB(604)にリードアクセスを行う(ステップF206)。
CPU1からレジスタC(605)にライトアクセスを行い(ステップF207)、CPU1からレジスタC(605)にリードアクセスを行う(ステップF208)。
そして、レジスタA-Cそれぞれのライト値及びリード値が一致するかどうかを判断する(ステップF209)。一致していれば、レジスタのライトまたはリードする順番が異常であるというソフトウェア異常となる(ステップF210)。不一致であれば、レジスタ故障というハードウェア故障となる。
このようにして、本発明の一実施の形態の例によると、診断するレジスタの中に同じ設定値のレジスタがいくつかあっても、ライト時のCRC値及びリード時のCRC値が同一である場合はレジスタ正常、同一でない場合はレジスタの故障とわかる。これにより、レジスタ診断やマイクロプログラムの正当性を検証することができる。
そして、レジスタ異常の場合、ハード本体をオフラインさせて、レジスタA〜Cにライト/リードアクセスを繰り返す。これにより、各レジスタのライト値及びリード値が不一致である場合はレジスタ故障、一致している場合レジスタのライトまたはリードする順番が違っていると判断することができる。
また、CRC診断回路をハードで実現することで、より高速になり、マイクロプログラムの複雑化を抑えることも出来る。そして、ライト用とリード用で、別の診断回路も持つことでライトアクセスとリードアクセスが混在していても、独立に診断することができる。
さらに、CRCは、診断スタート指示からストップ指示があるまでのレジスタアクセスをすべて累積する構造とすることで、最終的な照合を1度にすることが出来る。
[3.CRC演算器の診断処理動作]
本発明の一実施の形態の例による情報処理装置内にあるCRC演算器が故障していないかの診断処理動作を、図16のフローチャートを用いて説明する。この図16のフローチャートの処理は、CPU1からライトおよびリードアクセスしても情報処理に影響を与えないCRC演算器診断用ダミーレジスタH〜J(610〜612)を用いて処理する。
まず、レジスタライト診断制御レジスタ(レジスタD(606))にスタート指示を行って(ステップF301)、順に、レジスタH、I、Jにライトアクセスを行う(ステップF302−F304)。そして、レジスタライト診断制御レジスタ(レジスタD(606))にストップ指示を行う(ステップF305)。その後、ライトCRC演算結果レジスタ(レジスタE(607))にリードを行い(ステップF306)、ライトCRC演算結果値を保管する(ステップF307)。
次に、レジスタリード診断制御レジスタ(レジスタF(608))にスタート指示を行って(ステップF308)、順に、レジスタH、I、Jにリードアクセスを行う(ステップF309−F311)。そして、レジスタリード診断制御レジスタ(レジスタF(608))にストップ指示を行う(ステップF312)。その後、リードCRC演算結果レジスタ(レジスタG(609))にリードを行い(ステップF113)、リードCRC演算結果値を保管する(ステップF314)。
そして、CPU1の中で、レジスタH、I,JごとにアドレスとライトデータをCRC演算する(ステップF315-F317)。それらのCRC演算結果値を保管する(ステップF318)
CPU1で演算したCRC値とライトCRC演算結果値とリードCRC演算結果値が一致するかどうかを判定する(ステップF319)。一致しいていれば、CRC演算器は正常と判定する(ステップF320)。不一致であれば、CRC演算器故障と判定する(ステップF321)。
これにより、CRC演算器が故障していないか診断を行うことができるため、レジスタ診断の信頼性を上げることができる。
[4.変形例の説明]
なお、上述した実施の形態では、診断回路であるレジスタライト回路及びレジスタリード回路を別々に存在しており、専用として用いるようになっている。しかし、これらのレジスタライト回路及びレジスタリード回路の回路構成及び動作は同等である。そのため、これらのレジスタライト回路とレジスタリード回路をハードウェア的にひとつの回路にするようにしてもよい。これにより、低コストで生産が可能となる効果を有する。
また、演算処理には、CRC演算を利用しているが、より仕組みが単純なチェックサム演算を使用してもよい。このチェックサム演算を用いることで、CRC演算より早い演算処理が可能となる。
1…CPU、2…アドレスバス、3…ライト信号、4…リード信号、5…データバス、6…集積回路、70…論理積素子、71…セレクタ、72…フリップフロップ、73…論理積素子、74…クロック、75…信号、76…レジスタA内データ、77…レジスタB内データ、78…レジスタC内データ、80…初期値、81…CRC演算回路、82〜95…信号、110…フリップフロップ、111…セレクタ、112…論理積素子、113…論理和素子、114…フリップフロップ、115…セレクタ、116…論理積素子、117…論理和素子、118…フリップフロップ、119…セレクタ、120…論理積素子、121…論理和素子、122…フリップフロップ、123…セレクタ、124…論理積素子、125…論理和素子、126…フリップフロップ、127…セレクタ、128…セレクタ、129…フリップフロップ、130…セレクタ、131…論理積素子、132…フリップフロップ、133…セレクタ、134…論理積素子、135…レジスタF(608)用フリップフロップ、136…セレクタ、137…論理積素子、138…フリップフロップ、139…セレクタ、140…論理積素子、601…アドレスデコーダ、602…データセレクト、603…レジスタA、604…レジスタB、605…レジスタC、606…レジスタD(レジスタライト診断制御レジスタ)、607…レジスタE(ライトCRC演算結果格納レジスタ)、608…レジスタF(レジスタリード診断制御レジスタ)、609…レジスタG(リードCRC演算結果格納レジスタ)、610…レジスタH(CRC演算器診断用ダミーレジスタ)、611…レジスタI(CRC演算器診断用ダミーレジスタ)、612…レジスタJ(CRC演算器診断用ダミーレジスタ)、613…論理和素子、614…アドレス記憶、615…データ記憶、616…アドレス/データセレクタ、617…CRC演算器、618…ライト診断制御、619…アドレス記憶、620…データ記憶、621…アドレス/データセレクタ、622…CRC演算器、623…リード診断制御、624,624A〜624J…レジスタセレクト信号、625…ライトデータ、626…リードデータ、627…アドレス記憶出力、628…データ記憶出力、629…セレクタ出力、630…CRC演算結果値、631…診断スタート、632…データセレクト、633…CRC演算イネーブル、634…CRC演算結果格納イネーブル、635…アドレス記憶出力、636…データ記憶出力、637…セレクタ出力、638…CRC演算結果値、639…診断スタート、640…データセレクト、641…CRC演算イネーブル、642…CRC演算結果格納イネーブル、643…レジスタA出力データ、644…レジスタB出力データ、645…レジスタC出力データ、646…レジスタH出力データ、647…レジスタI出力データ、648…レジスタJ出力データ、649…レジスタG出力データ、650…レジスタE出力データ、651…CRC初期化、652…CRC初期化、653…レジスタライト診断回路、654…レジスタリード診断回路、655…診断部

Claims (5)

  1. データの処理を実行する中央処理部と、
    前記中央処理部とバスで接続している複数のレジスタと、
    前記中央処理部からレジスタに対する、ライトデータ及びリードデータのアドレスを、アドレスバスから取り出して記憶するアドレス記憶部と、
    前記中央処理部から前記レジスタに対する、ライトデータ及びリードデータを、データバスから取り出して記憶するデータ記憶部と、
    前記アドレス記憶部で記憶したアドレス、及び前記データ記憶部で記憶したデータをチェック演算する演算部と、
    前記演算部の結果を記憶する格納部と
    前記格納部に記憶するライトデータ及びリードデータを比較する診断制御部とを備え、
    前記診断制御部は、前記演算部でのチェック演算結果が一致しないとき、各レジスタへのデータのライトとリードを行い、各レジスタのライト値とリード値とが不一致のとき、ハードウェア故障と判断し、各レジスタのライト値とリード値とが一致したとき、ソフトウェア故障と判断するようにしたレジスタ診断装置。
  2. さらに、前記アドレス記憶部で記憶したアドレス及び前記データ記憶部で記憶したデータを選択する選択部を備えた請求項1記載のレジスタ診断装置。
  3. 前記演算部でのチェック演算処理に、CRC符号によるチェックサム演算を用いる請求項1記載のレジスタ診断装置。
  4. さらに、前記中央処理部からライトアクセスおよびリードアクセスしても、情報処理に影響を与えないダミーレジスタを備え、
    前記ダミーレジスタのライトデータ及びリードデータを、前記演算部でチェック演算する他に、前記中央処理部でもチェック演算を行い、双方のチェック演算結果が不一致のとき、前記演算部が故障であると判断する請求項1記載のレジスタ診断装置。
  5. データの処理を実行するデータ処理と、
    前記データ処理とバスで接続している複数のレジスタと、
    前記データ処理からレジスタに対する、ライトデータ及びリードデータのアドレスを、アドレスバスから取り出して記憶するアドレス記憶処理と、
    前データ処理から前記レジスタに対する、ライトデータ及びリードデータを、データバスから取り出して記憶するデータ記憶処理と、
    前記アドレス記憶処理で記憶したアドレス、及び前記データ記憶処理で記憶したデータをチェック演算する演算処理と、
    前記演算処理の結果を記憶する格納処理と
    前記格納処理に記憶するライトデータ及びリードデータを比較する診断制御処理とを有し、
    前記診断制御処理での判断として、前記演算処理でのチェック演算結果が一致しないとき、各レジスタへのデータのライトとリードを行い、各レジスタのライト値とリード値とが不一致のとき、ハードウェア故障と判断し、各レジスタのライト値とリード値とが一致したとき、ソフトウェア故障と判断するようにしたレジスタ診断方法。
JP2009125793A 2009-05-25 2009-05-25 レジスタ診断装置及びレジスタ診断方法 Expired - Fee Related JP5463565B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009125793A JP5463565B2 (ja) 2009-05-25 2009-05-25 レジスタ診断装置及びレジスタ診断方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009125793A JP5463565B2 (ja) 2009-05-25 2009-05-25 レジスタ診断装置及びレジスタ診断方法

Publications (2)

Publication Number Publication Date
JP2010272089A JP2010272089A (ja) 2010-12-02
JP5463565B2 true JP5463565B2 (ja) 2014-04-09

Family

ID=43420029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009125793A Expired - Fee Related JP5463565B2 (ja) 2009-05-25 2009-05-25 レジスタ診断装置及びレジスタ診断方法

Country Status (1)

Country Link
JP (1) JP5463565B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5632804B2 (ja) 2011-08-08 2014-11-26 オークマ株式会社 バス診断機能を備えた制御装置
JP6396873B2 (ja) * 2015-10-26 2018-09-26 日立オートモティブシステムズ株式会社 電子制御装置及び診断方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03186956A (ja) * 1989-12-15 1991-08-14 Nec Corp Cpuバスデータ診断装置
JP2002182991A (ja) * 2000-12-12 2002-06-28 Nec Corp 電子ディスク装置とそのアドレス線故障検出方法
JP2006277133A (ja) * 2005-03-28 2006-10-12 Fujitsu Ltd 半導体集積回路及びメモリデータチェック方法
JP2009093393A (ja) * 2007-10-09 2009-04-30 Nec Electronics Corp データ処理装置及びデータ処理装置の自己診断方法

Also Published As

Publication number Publication date
JP2010272089A (ja) 2010-12-02

Similar Documents

Publication Publication Date Title
US5392302A (en) Address error detection technique for increasing the reliability of a storage subsystem
KR960001948B1 (ko) 에러 조정 및 테스트 기능을 가진 프로그램 가능 메모리 제어 방법 및 장치
JPH052654A (ja) マイクロコンピユータの故障検知方法および回路
JPH0799498B2 (ja) 誤りのあるマイクロ命令を訂正する装置
US20150262706A1 (en) Combined rank and linear address incrementing utility for computer memory test operations
JP5463565B2 (ja) レジスタ診断装置及びレジスタ診断方法
JP2006318115A (ja) 半導体記憶装置及び半導体記憶装置機能検査方法並びに半導体記憶装置を有する電子機器
JPH11111000A (ja) 半導体メモリの故障自己診断装置
US7484147B2 (en) Semiconductor integrated circuit
US4982403A (en) Electrical circuit testing device and circuit comprising the said device
US6311298B1 (en) Mechanism to simplify built-in self test of a control store unit
US7383492B2 (en) First-in/first-out (FIFO) information protection and error detection method and apparatus
JPH05165734A (ja) 主記憶装置の固定障害診断装置
JP3036442B2 (ja) メモリ監視方式
JP2551601B2 (ja) メモリチェック回路
JP3173648B2 (ja) 故障検出方式
JP3212979B2 (ja) タイミング信号誤動作検出回路
JPH05127933A (ja) 故障検出回路
JPH0997194A (ja) フェイルメモリのデータ取得装置
JPH04341998A (ja) メモリ回路
JPH11282763A (ja) 記憶装置監視装置および方法
JPH02207355A (ja) メモリ読出し方式
JP3125950B2 (ja) 特定用途向け集積回路
JPH0429075A (ja) 半導体集積回路装置
JPH02126344A (ja) プログラム処理時間測定システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131202

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131226

R150 Certificate of patent or registration of utility model

Ref document number: 5463565

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees