トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 メモリチェック手段内蔵コンピュータメモリ
【発明者】 【氏名】稲熊 勝宏

【氏名】斉藤 圭民

【要約】 【課題】アクセスするアドレスを特定するデコード回路の異常を効率よく検知することができるメモリチェック手段を有するコンピュータメモリの提供。

【解決手段】ROM1と、デコード回路5と、デコード回路5の異常を検知するROMSUM201〜218(メモリチェック手段)とを有するコンピュータメモリにおいて、ROMSUMは、昇順加算処理ルーチン202〜209(昇順加算手段)と、降順加算処理ルーチン210〜217(降順加算手段)とを有し、昇順加算処理ルーチン202〜209と降順加算処理ルーチン210〜217とを交互に行い、昇順加算処理ルーチン202〜209による演算結果又は降順加算処理ルーチン210〜217による演算結果が、ROM1の各アドレス内のデータを全て加算した加算データROM_SUMと一致しないときデコード回路5を異常と判断することとした。
【特許請求の範囲】
【請求項1】 複数のアドレスを有し各アドレス内にデータが格納されているリードオンリーメモリと、複数の論理素子にて構成されるとともにアクセスするアドレスを特定するデコード回路と、前記リードオンリーメモリ内に格納されているデータを順次読み出し前記デコード回路の異常を検知するメモリチェック手段とを有し、前記リードオンリーメモリは各アドレス内のデータを全て加算した加算データを予め記憶した加算データ記憶手段を備えたコンピュータメモリにおいて、前記メモリチェック手段は、前記リードオンリーメモリの各アドレス内に格納されているデータを最下位アドレス内のデータから最上位アドレス内のデータまで前記デコード回路によりアクセスするアドレスを特定しながら順次加算する昇順加算手段と、前記リードオンリーメモリの各アドレス内に格納されているデータを最上位アドレス内のデータから最下位アドレス内のデータまで前記デコード回路によりアクセスするアドレスを特定しながら順次加算する降順加算手段とを有し、前記昇順加算手段による演算と前記降順加算手段による演算とを交互に行い、前記昇順加算手段による演算結果又は前記降順加算手段による演算結果が前記加算データ記憶手段が記憶している加算データと一致しないとき前記デコード回路を異常と判断することを特徴とするコンピュータメモリ。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、アクセスするアドレスを特定するデコード回路の異常を検知するメモリチェック手段を備えたコンピュータメモリに関する。
【0002】
【従来の技術】従来より、アクセスするアドレスを特定するデコード回路の異常を検知するメモリチェック手段を備えたコンピュータメモリが知られている。すなわち、例えば車両制御用コンピュータシステムにおいては、車両を制御する制御プログラムを中央演算処理装置(以下、「CPU」という。)内のリードオンリーメモリ(以下、「ROM」という。)に記憶させてあり、かかる制御プログラムを読み出す際には、CPUから指令されたアドレスをデコード回路が特定し、デコード回路により特定されたアドレス内に格納されている制御プログラムデータをCPUが順次読み出すことにより適切な順序で制御プログラムが実行されるようになっている。
【0003】従って、アクセスするアドレスを特定するデコード回路に異常があり、デコード回路がCPUから指令されたアドレスとは異なるアドレスを特定してしまうと、制御プログラムデータが適切な順序でCPUに読み出されなくなり、適切な順序で制御プログラムが実行されなくなってしまう。
【0004】そこで、車両制御中においてデコード回路に異常が発生した場合には、即座にその異常を検知し、かかる制御の中止等を行なう手段が必要であり、コンピュータメモリには、デコード回路の異常を検知するメモリチェック手段が設けられている。
【0005】かかるメモリチェック手段は、プログラムデータが記憶されているROMの各アドレス内に格納されているプログラムデータを、最下位アドレス内のデータから最上位アドレス内のデータまでデコード回路によりアクセスするアドレス値を1つづつ加算して特定しながら一方向にのみ順次加算して、その演算結果と、ROMが有する加算データ記憶手段により予め記憶されている各アドレス内のデータを全て加算した加算データとを比較し、両者が一致しないときに、デコード回路がCPUから指令されたアドレスとは異なるアドレスを特定した段階があると判断し、デコード回路を異常と判断するものであった。
【0006】
【発明が解決しようとする課題】ところで、このデコード回路は、複数の論理素子にて構成されており、複数の論理素子を互いに様々な組み合わせでON−OFF(HIGHーLOW)に切り替えることによりアクセスするアドレスを特定している。具体的には、デコード回路は、CPUにより指令されたアドレスを2進数にて表現したときの各ビットごとに対応する信号線を有しており、各信号線の情報(1(HIGH)か0(LOW))を入力したとき対応する論理素子が全てONとなる唯一のアドレスを指定することによりCPUが指令したアドレスを特定している。
【0007】ここで、このような複数の論理素子にて構成されるデコード回路は、あるひとつの論理素子に着目すると、当該論理素子がONからOFF又はOFFからONに切り替わるタイミングが、隣接する他の論理素子の状態(ONかOFFか)によって一時的に遅れ、制御周期内に切り替わらず、誤ったアドレスを特定してしまうといった誤動作の問題が発生しやすいことが知られている。かかる誤動作の問題は、SPUの製造上のミス(例えば、隣接する論理素子同士が互いに接近しすぎている場合)、論理素子へのゴミの付着、使用する環境温度によるものである。従って、デコード回路は、ある特定のアドレスを特定する際に、前述のあるひとつの論理素子が切り替わる必要がある場合を考えると、そのひとつ前に既に特定しているアドレスの値によっては、当該論理素子に隣接する論理素子がONになっている場合とOFFになっている場合とが存在し、当該論理素子の切り替えが正常に切り替わる場合と一時的に遅れて制御周期内に切り替わらない場合とが発生する。すなわち、デコード回路は、上記誤動作の問題が内在している場合には、CPUにより指令されたあるアドレスを特定する際に、そのひとつ前に既に特定しているアドレスの値によっては、正常にアドレスを特定することができる場合とできない場合とが発生することがある。
【0008】従って、従来のようなメモリチェック手段のように、プログラムデータが記憶されているROMの各アドレス内に格納されているプログラムデータを、最下位アドレス内のデータから最上位アドレス内のデータまでデコード回路によりアクセスするアドレス値を1つづつ加算して特定しながら一方向にのみ順次加算してデコード回路の異常をチェックする方式では、メモリチェック手段がチェックする過程において、デコード回路がアドレスを特定するひとつ前に特定されているアドレスの値は毎回一定(ひとつ小さい値)であり、たとえデコード回路が上述した誤動作の問題を内在している状態にあるとしても、上述した誤動作が発生せずその異常を検知することができない場合もある。特に、ROM内に記憶されている制御プログラムを実行する際には、制御プログラムによっては、例えばジャンプ命令等により次に読み出すアドレスが毎回異なる場合も存在し、メモリチェック手段はデコード回路が正常であると判断している場合であっても、デコード回路には上記誤動作の問題が内在している場合がある。その結果、次に読み出すべき制御プログラムが格納されているアドレスをデコード回路が誤って特定してしまう事態が発生し、不適切な順序で制御プログラムが実行されてしまうという事態が発生するという問題がある。
【0009】本発明は、上記問題を解決するためになされたものであり、アクセスするアドレスを特定するデコード回路の異常を効率よく検知することができるメモリチェック手段を有するコンピュータメモリを提供することを課題とする。
【0010】
【課題を解決するための手段】上記課題を解決するため、本発明は、複数のアドレスを有し各アドレス内にデータが格納されているリードオンリーメモリと、複数の論理素子にて構成されるとともにアクセスするアドレスを特定するデコード回路と、リードオンリーメモリ内に格納されているデータを順次読み出しデコード回路の異常を検知するメモリチェック手段とを有し、リードオンリーメモリは各アドレス内のデータを全て加算した加算データを予め記憶した加算データ記憶手段を備えたコンピュータメモリにおいて、メモリチェック手段は、リードオンリーメモリの各アドレス内に格納されているデータを最下位アドレス内のデータから最上位アドレス内のデータまでデコード回路によりアクセスするアドレスを特定しながら順次加算する昇順加算手段と、リードオンリーメモリの各アドレス内に格納されているデータを最上位アドレス内のデータから最下位アドレス内のデータまでデコード回路によりアクセスするアドレスを特定しながら順次加算する降順加算手段とを有し、昇順加算手段による演算と降順加算手段による演算とを交互に行い、昇順加算手段による演算結果又は降順加算手段による演算結果が加算データ記憶手段が記憶している加算データと一致しないときデコード回路を異常と判断することを特徴とするコンピュータメモリとした。
【0011】本発明によれば、メモリチェック手段は、昇順加算手段による演算と降順加算手段による演算とを交互に行い、デコード回路の異常を判断するので、以下の効果を奏する。すなわち、メモリチェック手段がROMの各アドレス内に格納されているデータをデコード回路によりアクセスするアドレスを特定しながら順次加算する段階において、デコード回路が特定したある特定のアドレス値に着目すると、そのひとつ前に既に特定しているアドレスの値が、昇順加算手段による演算を行なっているとき(ひとつ小さい値)と降順加算手段による演算を行なっているとき(ひとつ大きい値)とでは異なる。従って、前述した従来技術のような、デコード回路がアドレスを特定するひとつ前に特定されているアドレスの値が毎回一定(ひとつ小さい値)となる場合に比して、本発明にかかるメモリチェック手段によれば、前述した誤動作の問題が内在している場合には、少なくともかかる誤動作の異常を発見することができる可能性が増加することになる。従って、本発明によれば、デコード回路の異常を効率よく検知することができるメモリチェック手段を有するコンピュータメモリを提供することができる。
【0012】
【発明の実施の形態】以下、本発明の実施の形態を図面を用いて説明する。図1は、本発明に係るコンピュータメモリの概念図である。図1において、メモリアドレスは、最下位アドレスの00000Hから最上位アドレスのFFFFFHまで割り当てられている(「H」は16進数表記であることを示す。)。これらのうち、00000HからDFFFFHまでは、リードアクセスメモリ(以下、「RAM」という。)領域3であり、E0000HからFFFFFHまではROM領域1である。ROM領域1には、図示しないCPUから指令されたアドレスを特定するデコード回路を駆動するプログラム、デコード回路の異常を検知するプログラムであるROMSUM(メモリチェック手段)、及び、例えば、本コンピュータメモリを搭載したCPUを車両制御に用いる場合には、そのメインの車両制御プログラム等が格納されている。また、ROM領域1内のROM_SUM番地9(加算データ記憶手段)には、ROM領域1内の各アドレス内に格納されているデータを1バイトごと(又は1ワードごと)に全て加算した合計値の最下位バイトデータ値(又は最下位ワードデータ値)であるROM_SUMが格納されている。
【0013】図2は、本コンピュータメモリのROMの概念図である。デコード回路5は、図示しない複数の論理素子にて構成されており、ROM領域1内に格納されているデコード回路駆動プログラムにより駆動されるとともに、複数の論理素子を互いに様々な組み合わせでON−OFF(HIGHーLOW)に切り替えることによりアクセスするアドレス7を特定している。具体的には、デコード回路は、CPUにより指令されたアドレスを2進数にて表現したときの各ビットごとに対応する信号線を有しており、各信号線の情報(1(HIGH)か0(LOW))を入力したとき対応する論理素子が全てONとなる唯一のアドレス7を指定することにより図示しないCPUが指令したアドレスを特定している。デコード回路の詳細な構成及び作動については周知であるので、ここではその詳細な説明を省略する。
【0014】図3は、図示しないCPUが処理するメインルーチンのフローチャートを示す。まずステップ101では、初期化処理を行なう。具体的には、以下に示す各メモリのクリア・初期値代入を行なう。すなわち、RAMには、ROMSUMがROM内に格納されているデータを順次読み出す際にデコード回路5が特定するアドレス値を一時保管しておくためのROM_ADRS、ROMSUMがROM内に格納されているデータを順次読み出す過程において加算されていくデータの合計値を一時保管しておくためのSUM_DATA、ROMSUMがROM内に格納されているデータを順次読み出す過程において最下位アドレス内のデータから最上位アドレス内のデータまで順次加算する昇順加算手段を行なうタイミングなのか、最上位アドレス内のデータから最下位アドレス内のデータまで順次加算する降順加算手段を行なうタイミングなのかを決定するフラグであるUP_FLAG(=1:降順,=0:昇順)、図示しないCPUがメインルーチンのフローチャートに沿って処理を実行している過程においてROMSUM処理を行なってよいか否かを決定する判断時刻を一時保管しておくためのROMCHKTM、ROMSUM処理を行なうにあたり途中の計算過程にて使用する一時的な値を保管しておくワークメモリであるREGA,REGD等が割り当てられている。
【0015】ここで、ステップ101では、これらのメモリのうち、ROM_ADRSにはROM領域1の最下位アドレスであるE0000Hが、SUM_DATAには0が、UP_FLAGにも0が、そして、ROMCHKTMには現在の時刻に5msを加算した時刻がそれぞれ初期値として代入される。現在の時刻の読み込みは、図示しないCPUに内蔵されているクロック回路を用いて行なう。
【0016】ステップ101にて初期値代入等の処理が終了したら、次にステップ102へ進み、後述する本発明のポイントとなるROMSUM処理が実行される。ROMSUM処理が終了しデコード回路に異常がないと判断されたら、次にステップ103へ進み、現在の時刻が読み込まれる。次のステップ104では、ステップ103にて読み込まれた現在の時刻がROMCHKTMに格納されている時刻を越えているか否かが判断される。現在の時刻がROMCHKTMに格納されている時刻を越えていなければステップ102へ戻り、現在の時刻がROMCHKTMに格納されている時刻を越えるまで繰り返しROMSUM処理が行なわれる。ステップ104にて現在の時刻がROMCHKTMに格納されている時刻を越えていたら、次のステップ105へ進みROMCHKTMに格納されている時刻に5msを加算した時刻をROMCHKTMに格納する。そして次のステップ106にてメインの車両制御プログラムが実行され、車両の各種制御が行なわれる。車両制御プログラムの1制御周期が終了したら、再度ステップ102へ戻り、上記処理が繰り返し実行される。
【0017】以上のように図示しないCPUはメインのフローチャートを処理する。すなわち、ROMSUM処理は、基本的にはメインの車両制御プログラムの1制御周期ごとに1回行なわれる。しかし、車両制御プログラムの1制御周期は、5msを基本としているものの、車両の状態に応じては1制御周期が5msより短くなることもあり、このような場合には、余った時間をROMSUM処理に当てて、少しでもROMSUM処理の実行回数を増やし、より効率よくデコード回路5の異常を検知することができるようにしている。
【0018】図4は、本発明のポイントであるROMSUM処理のフローチャートを示す。図4において、ステップ202〜ステップ209までは昇順加算処理ルーチン(昇順加算手段)、ステップ210〜ステップ217までは降順加算処理ルーチン(降順加算手段)である。ROMSUM処理の第1ステップ201では、UP_FLAGが0か1かによって、昇順加算処理ルーチンを選択するか降順加算処理ルーチンを選択するかが判断されるが、図3におけるメインルーチンのステップ101の初期値代入段階にてUP_FLAGには0が代入されており、また、昇順加算処理ルーチンの最終ステップであるステップ209ではUP_FLAGに1が代入され、降順加算処理ルーチンの最終ステップであるステップ217ではUP_FLAGに0が代入される。従って、ROMSUM処理は、図3のメインルーチン処理開始の当初は昇順加算処理ルーチンが実行されるが、その後は、降順加算処理ルーチンと昇順加算処理ルーチンとが交互に実行されることになる。
【0019】以下、ROMSUM処理の詳細を図4のフローチャートに従って詳述する。まず、ステップ201にてUP_FLAGが0か1かが判断される。UP_FLAGが1であれば後述する降順加算処理ルーチンが実行され、UP_FLAGが0であれば以下に説明する昇順加算処理ルーチンが実行される。
【0020】昇順加算処理ルーチンでは、まずステップ202にて、ROMSUMがROM内に格納されているデータを順次読み出す際にデコード回路5が特定するアドレス値が一時保管されているROM_ADRSの値を一時保管メモリREGAに代入し、REGA番地内に格納されているデータをデコード回路5が特定し一時保管メモリREGDに代入する。すなわち、デコード回路5が特定するアドレスに格納されているデータが、REGAを介してREGDに代入されることになる。なお、ROM_ADRSの初期値は、メインルーチンのステップ101にてROM領域1の最下位アドレスであるE0000Hが代入されている。
【0021】ステップ203では、SUM_DATAにREGDを加算し、加算後の値をSUM_DATAに代入する。すなわち、SUM_DATAには、ROMSUMがROM内に格納されているデータを順次読み出す過程において加算されていくデータの合計値が順次一時保管されていくことになる。
【0022】ステップ204では、REGAに1(又は1ワード単位ごとの値)を加算した値がROM_ADRSに代入される。すなわち、ROM_ADRSの値が1(又は1ワード単位ごとに)増加する。これにより、デコード回路5が特定するアドレス値がE0000Hから順次1づつ(又は1ワード単位ごとに)加算されていくことになる。
【0023】ステップ205では、順次1づつ(又は1ワード単位ごとに)加算されていくROM_ADRSがFFFFFHになったか否かが判断される。すなわち、ROM_ADRSがROM領域1の最上位アドレスであるFFFFFHになっていれば、現在実行中の昇順加算処理ルーチンを終了させ次の降順加算処理ルーチンを開始させるための処理を行なう(ステップ206〜ステップ209)。そうでなければ、まだ昇順加算処理ルーチンの途中であるので、昇順加算処理ルーチンを一時中断し、図3に示すメインルーチンに戻り、その後ステップ102に進んだ段階にて、中断されていた昇順加算処理ルーチンが再開される。
【0024】ステップ205にてROM_ADRSがFFFFFHになっていれば、ステップ206,ステップ207へ進み、前述のステップ202,ステップ203と同様の処理を行う。ステップ207が実行された段階にて、SUM_DATAには、ROM領域1の各アドレス内のデータを全て加算した値が格納されていることになる。
【0025】次のステップ208では、ROM領域1内のROM_SUM番地9(加算データ記憶手段)に格納されている加算データであるROM_SUMと、SUM_DATAとが比較されることになる。具体的には、ROM_SUMには、ROM領域1内の各アドレス内に格納されているデータを1バイトごとに全て加算した合計値の最下位バイトデータ値であるが格納されているので、このROM_SUMと、SUM_DATAの最下位バイトデータ値とが比較される。その結果、両者の値が一致していれば、デコード回路5は正常に作動していたと判断し、ステップ209へ進む。ステップ209では、次の降順加算処理ルーチンを開始させるための準備として、UP_FLAGに1を代入するとともにSUM_DATAをクリアした後、図3のメインルーチンに復帰する。ステップ208にて両者の値が一致していなければ、デコード回路5は、少なくとも、昇順加算処理ルーチンの処理の途中のステップ202又はステップ206の段階で誤ったアドレスのデータを読み出した段階があると判断され、図示しないCPUは、デコード回路5を異常と判断し、ステップ218にて所定の異常処置を行なう。
【0026】次に、降順加算処理ルーチンについて説明する。降順加算処理ルーチンは、ステップ201にてUP_FLAGが1であった場合に実行される。まずステップ210にて、ROM_ADRSの値を一時保管メモリREGAに代入し、REGA番地内に格納されているデータをデコード回路5が特定し一時保管メモリREGDに代入する。すなわち、デコード回路5が特定するアドレスに格納されているデータが、REGAを介してREGDに代入されることになる。なお、ROM_ADRSの初期値は、既実行済みの昇順加算処理ルーチン内のステップ204にて、ROM領域1の最上位アドレスであるFFFFFHとなっている。
【0027】ステップ211では、SUM_DATAにREGDを加算し、加算後の値をSUM_DATAに代入する。すなわち、SUM_DATAには、ROMSUMがROM内に格納されているデータを順次読み出す過程において加算されていくデータの合計値が順次一時保管されていくことになる。
【0028】ステップ212では、REGAから1(又は1ワード単位ごとの値)を減算した値がROM_ADRSに代入される。すなわち、ROM_ADRSの値が1(又は1ワード単位ごとに)減少する。これにより、デコード回路5が特定するアドレス値がFFFFFHから順次1づつ(又は1ワード単位ごとに)減算されていくことになる。
【0029】ステップ213では、順次1づつ減算されていくROM_ADRSがE0000Hになったか否かが判断される。すなわち、ROM_ADRSがROM領域1の最下位アドレスであるE0000Hになっていれば、現在実行中の降順加算処理ルーチンを終了させ次の昇順加算処理ルーチンを開始させるための処理を行なう(ステップ214〜ステップ217)。そうでなければ、まだ降順加算処理ルーチンの途中であるので、降順加算処理ルーチンを一時中断し、図3に示すメインルーチンに戻り、その後ステップ102に進んだ段階にて、中断されていた降順加算処理ルーチンが再開される。
【0030】ステップ213にてROM_ADRSがE0000Hになっていれば、ステップ214,ステップ215へ進み、前述のステップ211,ステップ212と同様の処理を行う。ステップ215が実行された段階にて、SUM_DATAには、ROM領域1の各アドレス内のデータを全て加算した値が格納されていることになる。
【0031】次のステップ216では、ROM領域1内のROM_SUM番地9(加算データ記憶手段)に格納されている加算データであるROM_SUMと、SUM_DATAとが比較されることになる。具体的には、ROM_SUMには、ROM領域1内の各アドレス内に格納されているデータを1バイトごと(又は1ワードごと)に全て加算した合計値の最下位バイトデータ値(又は最下位ワードデータ値)が格納されているので、このROM_SUMと、SUM_DATAの最下位バイトデータ値(又は最下位ワードデータ値)とが比較される。その結果、両者の値が一致していれば、デコード回路5は正常に作動していたと判断し、ステップ217へ進む。ステップ217では、次の昇順加算処理ルーチンを開始させるための準備として、UP_FLAGに0を代入するとともにSUM_DATAをクリアした後、図3のメインルーチンに復帰する。ステップ216にて両者の値が一致していなければ、デコード回路5は、少なくとも、降順加算処理ルーチンの処理の途中のステップ210又はステップ214の段階で誤ったアドレスのデータを読み出した段階があると判断され、図示しないCPUは、デコード回路5を異常と判断し、ステップ218にて所定の異常処置を行なう。
【0032】以上のように、ROMSUM処理は、図3のメインルーチン処理開始の当初は昇順加算処理ルーチンが実行されるが、その後は、降順加算処理ルーチンと昇順加算処理ルーチンとが交互に実行され、その都度デコード回路の異常を判断する。従って、ROMSUM処理段階において、デコード回路が特定したある特定のアドレス値に着目すると、そのひとつ前に既に特定しているアドレスの値が、昇順加算手段による演算を行なっているとき(ひとつ小さい値)と降順加算手段による演算を行なっているとき(ひとつ大きい値)とでは異なる。従って、前述した従来技術のような、デコード回路がアドレスを特定するひとつ前に特定されているアドレスの値が毎回一定(ひとつ小さい値)となる場合に比して、本発明にかかるROMSUM処理(メモリチェック手段)によれば、前述した誤動作の問題が内在している場合には、少なくともかかる誤動作の異常を発見することができる可能性が増加することになる。従って、本発明によれば、デコード回路の異常を効率よく検知することができるメモリチェック手段を有するコンピュータメモリを提供することができる。
【0033】
【発明の効果】以上説明したように、本発明によれば、アクセスするアドレスを特定するデコード回路の異常を効率よく検知することができるメモリチェック手段を有するコンピュータメモリを提供することが可能となる。
【出願人】 【識別番号】000000011
【氏名又は名称】アイシン精機株式会社
【出願日】 平成12年10月26日(2000.10.26)
【代理人】
【公開番号】 特開2002−132589(P2002−132589A)
【公開日】 平成14年5月10日(2002.5.10)
【出願番号】 特願2000−327552(P2000−327552)