WO2014118910A1 - メモリ診断装置 - Google Patents
メモリ診断装置 Download PDFInfo
- Publication number
- WO2014118910A1 WO2014118910A1 PCT/JP2013/052043 JP2013052043W WO2014118910A1 WO 2014118910 A1 WO2014118910 A1 WO 2014118910A1 JP 2013052043 W JP2013052043 W JP 2013052043W WO 2014118910 A1 WO2014118910 A1 WO 2014118910A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- diagnosis
- data storage
- storage area
- ram
- blocks
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/26—Accessing multiple arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Abstract
CPU100は、診断の対象となる診断対象ブロックをシフトさせながらRAM200の複数のブロックを診断する。CPU100は、診断に先立ち、診断に用いられるデータが格納されるデータ格納領域を2個以上、診断対象ブロックがいずれのブロックになっても診断対象ブロックと重ならないデータ格納領域が1個以上存在するようにRAM200に設定する。そして、CPU100は、未診断のブロックの中から診断対象ブロックを指定する際に、診断対象ブロックと重ならないデータ格納領域を1個選択し、選択したデータ格納領域に格納されているデータを用いて、診断対象ブロックを診断する。
Description
本発明は、メモリの故障の有無を診断する技術に関する。
従来の診断方法では、メモリ(以下、RAM:Random Access Memoryともいう)全体を診断単位とし、メモリ全体に対して読み書きを実施し、メモリから読み出した値と期待値とを比較することでメモリの故障を検出していた(例えば、非特許文献1)。
R. Nair, S. M. Thatte and J. C. Abraham.: Efficient algorithms for testing semiconductor random-access memories. IEEE Transactions on Computers, C-27, pp.572-576 (1978).
非特許文献1の方法は、ソフトウェアによるRAM診断方法の1つである。
既存のRAM診断プログラムはアセンブラでのみ実装可能であり、C言語では実装できない。
そのため、新たなマイクロコンピュータが開発される度に、新たなマイクロコンピュータに対応させてRAM診断プログラムの再コーディングが必要となり、RAM診断プログラムの開発コストが余分にかかってしまうという課題がある。
RAM診断プログラムをC言語で実装できない理由は、RAM診断プログラムがRAM全体のデータを独自の手順で書き換えてしまうためである。
つまり、C言語で実装したRAM診断プログラムは、RAM診断に用いられるデータ(静的変数やスタック等)をRAM内の所定の領域に書き込むが、RAM診断の過程で当該領域のデータも書き換えてしまうため、静的変数やスタック等を破壊してしまい、この結果、RAM診断プログラムが正常に動作することができなくなってしまう。
既存のRAM診断プログラムはアセンブラでのみ実装可能であり、C言語では実装できない。
そのため、新たなマイクロコンピュータが開発される度に、新たなマイクロコンピュータに対応させてRAM診断プログラムの再コーディングが必要となり、RAM診断プログラムの開発コストが余分にかかってしまうという課題がある。
RAM診断プログラムをC言語で実装できない理由は、RAM診断プログラムがRAM全体のデータを独自の手順で書き換えてしまうためである。
つまり、C言語で実装したRAM診断プログラムは、RAM診断に用いられるデータ(静的変数やスタック等)をRAM内の所定の領域に書き込むが、RAM診断の過程で当該領域のデータも書き換えてしまうため、静的変数やスタック等を破壊してしまい、この結果、RAM診断プログラムが正常に動作することができなくなってしまう。
本発明は、上記の事情に鑑みたものであり、メモリ診断に用いられるデータを保持し、メモリ診断を正常に行うことができる構成を得ることを主な目的とする。
本発明に係るメモリ診断装置は、
n(nは3以上の整数)個のブロックに等分されたメモリを診断するメモリ診断装置であって、
診断の対象となる診断対象ブロックをシフトさせながら前記n個のブロックを診断する診断実行部と、
前記診断実行部の診断に先立ち、前記診断実行部の診断に用いられるデータが格納されるデータ格納領域を2個以上、診断対象ブロックがいずれのブロックになっても診断対象ブロックと重ならないデータ格納領域が1個以上存在するように、前記n個のブロックのうちのいずれかのブロックに設定する領域設定部と、
前記診断実行部が未診断のブロックの中から診断対象ブロックを指定する際に、診断対象ブロックと重ならないデータ格納領域を1個選択する選択部とを有し、
前記診断実行部は、
前記選択部により選択されたデータ格納領域である選択データ格納領域に格納されているデータを用いて、診断対象ブロックを診断することを特徴とする。
n(nは3以上の整数)個のブロックに等分されたメモリを診断するメモリ診断装置であって、
診断の対象となる診断対象ブロックをシフトさせながら前記n個のブロックを診断する診断実行部と、
前記診断実行部の診断に先立ち、前記診断実行部の診断に用いられるデータが格納されるデータ格納領域を2個以上、診断対象ブロックがいずれのブロックになっても診断対象ブロックと重ならないデータ格納領域が1個以上存在するように、前記n個のブロックのうちのいずれかのブロックに設定する領域設定部と、
前記診断実行部が未診断のブロックの中から診断対象ブロックを指定する際に、診断対象ブロックと重ならないデータ格納領域を1個選択する選択部とを有し、
前記診断実行部は、
前記選択部により選択されたデータ格納領域である選択データ格納領域に格納されているデータを用いて、診断対象ブロックを診断することを特徴とする。
本発明によれば、診断対象ブロックがいずれのブロックになっても診断対象ブロックと重ならないデータ格納領域が1個以上存在し、診断対象ブロックと重ならないデータ格納領域が選択され、選択されたデータ格納領域のデータを用いた診断対象ブロックの診断が行われる。
このため、メモリ診断に用いられるデータが保持され、正常にメモリ診断が行われる。
このため、メモリ診断に用いられるデータが保持され、正常にメモリ診断が行われる。
実施の形態1及び2では、ソフトウェアによるRAM診断をC言語で実装可能とするための構成を説明する。
RAM診断プログラムをC言語で実装可能であれば、新たなマイクロコンピュータが開発されても、新たなマイクロコンピュータに対応させた作業はコンパイルのみでよく、開発コストが削減できる。
RAM診断プログラムをC言語で実装可能であれば、新たなマイクロコンピュータが開発されても、新たなマイクロコンピュータに対応させた作業はコンパイルのみでよく、開発コストが削減できる。
より具体的には、実施の形態1及び2では、RAM診断プログラムが利用するデータ(静的変数やスタック等)を格納する領域(データ格納領域)を複数用意し、診断対象のRAM領域によって利用するデータ格納領域を切り替えてRAM診断プログラムを動作させる。
これにより、前述した、RAM診断プログラムが正常に動作できないという課題を解決することができる。
これにより、前述した、RAM診断プログラムが正常に動作できないという課題を解決することができる。
実施の形態1.
図1は、本実施の形態に係るシステム構成例を示す。
図1は、本実施の形態に係るシステム構成例を示す。
図1に示すように、本実施の形態では、CPU(Central Processing Unit)100とRAM200とRAM診断プログラム記憶装置300とがバス接続されている。
図1において、CPU100は、プロセッサ装置であり、RAM診断プログラムを用いてRAM200の診断を行う。
CPU100は、メモリ診断装置の例に相当する。
RAM200は、診断対象のメモリである。
RAM診断プログラム記憶装置300は、CPU100が用いるRAM診断プログラムが格納されている記憶装置であり、例えば、ROM(Read Only Memory)である。
すなわち、CPU100は、RAM診断プログラム記憶装置300からRAM診断プログラムを読み出し、CPU100内のレジスタに格納し、レジスタのRAM診断プログラムを実行して、RAM200の診断を行う。
図1において、CPU100は、プロセッサ装置であり、RAM診断プログラムを用いてRAM200の診断を行う。
CPU100は、メモリ診断装置の例に相当する。
RAM200は、診断対象のメモリである。
RAM診断プログラム記憶装置300は、CPU100が用いるRAM診断プログラムが格納されている記憶装置であり、例えば、ROM(Read Only Memory)である。
すなわち、CPU100は、RAM診断プログラム記憶装置300からRAM診断プログラムを読み出し、CPU100内のレジスタに格納し、レジスタのRAM診断プログラムを実行して、RAM200の診断を行う。
本実施の形態に係るCPU100と、RAM診断プログラムと、RAM200は、図2に示す関係にある。
本実施の形態では、CPU100は、2つのRAM診断プログラムを切り替えて実行する。
本実施の形態では、2つのRAM診断プログラムをRAM診断プログラム0(400)とRAM診断プログラム1(401)という。
RAM200には、2つのRAM診断プログラムが利用するデータが格納される2つのデータ格納領域(以下、単に、格納領域ともいう)が設けられる。
RAM診断プログラム0(400)が利用するデータが格納される格納領域をデータ格納領域0(250)といい、RAM診断プログラム1(401)が利用するデータが格納される格納領域をデータ格納領域1(251)という。
たとえば、for文にて演算をループさせる場合、「for(i=0;i<10;i++)」といったように記述し、変数iを利用する。
データ格納領域0(250)及びデータ格納領域1(251)には、このような変数が格納される。
本実施の形態では、2つのRAM診断プログラムをRAM診断プログラム0(400)とRAM診断プログラム1(401)という。
RAM200には、2つのRAM診断プログラムが利用するデータが格納される2つのデータ格納領域(以下、単に、格納領域ともいう)が設けられる。
RAM診断プログラム0(400)が利用するデータが格納される格納領域をデータ格納領域0(250)といい、RAM診断プログラム1(401)が利用するデータが格納される格納領域をデータ格納領域1(251)という。
たとえば、for文にて演算をループさせる場合、「for(i=0;i<10;i++)」といったように記述し、変数iを利用する。
データ格納領域0(250)及びデータ格納領域1(251)には、このような変数が格納される。
RAM診断プログラム0(400)及びRAM診断プログラム1(401)は、それぞれ、RAM200に値を書込み、また、RAM200から値を読み出し、読み出した値が期待値と一致するかどうかを確認することで、RAM200の故障を検出するプログラムである。
読み書きの仕方及び読み出した値と期待値との確認の仕方でさまざまなRAM診断のアルゴリズムが考えられている。
RAM診断プログラム0(400)及びRAM診断プログラム1(401)は、例えば、Abrahamアルゴリズム(非特許文献1に記載のアルゴリズム)やGalpadアルゴリズムを実現するプログラムである。
なお、本実施の形態に係るCPU100は、どのようなアルゴリズムに対応したRAM診断プログラムでも利用できる。
なお、RAM診断プログラム0(400)及びRAM診断プログラム1(401)は、同じプログラムである。
読み書きの仕方及び読み出した値と期待値との確認の仕方でさまざまなRAM診断のアルゴリズムが考えられている。
RAM診断プログラム0(400)及びRAM診断プログラム1(401)は、例えば、Abrahamアルゴリズム(非特許文献1に記載のアルゴリズム)やGalpadアルゴリズムを実現するプログラムである。
なお、本実施の形態に係るCPU100は、どのようなアルゴリズムに対応したRAM診断プログラムでも利用できる。
なお、RAM診断プログラム0(400)及びRAM診断プログラム1(401)は、同じプログラムである。
本実施の形態では、図3に示すように、RAM200をn個(nは3以上の整数)のサブ領域に等分割し、分割されたRAM200のサブ領域(以下、各サブ領域をブロックという)を診断の単位とし、CPU100は、診断対象のブロックをシフトさせて順に各ブロックの診断を実行していく。
このようにした理由は、RAM診断プログラムを正常に動作させるためである。
ブロックを単位として診断を実行することで、RAM200内に診断対象となっていないブロックを得ることができ、そのブロックにRAM診断に必要なデータを保存すればデータは破壊されずRAM診断プログラムを正常に動作させることができる。
なお、図3において、斜線のブロックが診断対象のブロックである。
また、以下、診断対象のブロックを診断対象ブロックともいう。
このようにした理由は、RAM診断プログラムを正常に動作させるためである。
ブロックを単位として診断を実行することで、RAM200内に診断対象となっていないブロックを得ることができ、そのブロックにRAM診断に必要なデータを保存すればデータは破壊されずRAM診断プログラムを正常に動作させることができる。
なお、図3において、斜線のブロックが診断対象のブロックである。
また、以下、診断対象のブロックを診断対象ブロックともいう。
そして、本実施の形態では、図4に示すように、RAM診断プログラムが利用するデータを格納するデータ格納領域を2個以上用意し、診断対象ブロックと重ならないデータ格納領域のデータを利用してRAM診断プログラムを動作させる。
このようにした理由は、RAM診断に用いるデータ(静的変数等)の破壊を防ぐためである。
データ格納領域が1つのみの場合は、診断対象ブロックをシフトさせていくと必ずデータ格納領域が診断対象となり、データ格納領域内のデータが破壊されてしまう。
そこで、データ格納領域を複数用意し、RAM診断プログラムが利用するデータ格納領域が診断対象にならないようにすることで、RAM診断プログラムが正常に動作するようにしている。
このようにした理由は、RAM診断に用いるデータ(静的変数等)の破壊を防ぐためである。
データ格納領域が1つのみの場合は、診断対象ブロックをシフトさせていくと必ずデータ格納領域が診断対象となり、データ格納領域内のデータが破壊されてしまう。
そこで、データ格納領域を複数用意し、RAM診断プログラムが利用するデータ格納領域が診断対象にならないようにすることで、RAM診断プログラムが正常に動作するようにしている。
このため、本実施の形態に係るCPU100は、診断対象ブロックによって、RAM診断プログラムを切り替える。
具体的には、CPU100は、2つのデータ格納領域のうち、診断対象ブロックと重ならないデータ格納領域を選択し、選択したデータ格納領域に対応するRAM診断プログラムを実行する。
例えば、診断対象ブロックにデータ格納領域0(250)が含まれる場合は、CPU100は、データ格納領域1(251)を選択し、データ格納領域1(251)を利用するRAM診断プログラム1(401)を実行する。
また、診断対象ブロックにデータ格納領域1(251)が含まれる場合は、CPU100は、データ格納領域0(250)を選択し、データ格納領域0(250)を利用するRAM診断プログラム0(400)を実行する。
なお、選択したデータ格納領域を、選択データ格納領域ともいう。
具体的には、CPU100は、2つのデータ格納領域のうち、診断対象ブロックと重ならないデータ格納領域を選択し、選択したデータ格納領域に対応するRAM診断プログラムを実行する。
例えば、診断対象ブロックにデータ格納領域0(250)が含まれる場合は、CPU100は、データ格納領域1(251)を選択し、データ格納領域1(251)を利用するRAM診断プログラム1(401)を実行する。
また、診断対象ブロックにデータ格納領域1(251)が含まれる場合は、CPU100は、データ格納領域0(250)を選択し、データ格納領域0(250)を利用するRAM診断プログラム0(400)を実行する。
なお、選択したデータ格納領域を、選択データ格納領域ともいう。
図9は、図1のCPU100(メモリ診断装置)のモジュール構成例を示す。
領域設定部101、選択部102及び診断実行部103は、それぞれ、以下に示す処理に対応するプログラムと、プログラムを実行するためのハードウェア(回路、素子等)とにより実現される論理的な機能モジュールである。
レジスタ104は、CPU100内の記憶領域である。
領域設定部101、選択部102及び診断実行部103は、それぞれ、以下に示す処理に対応するプログラムと、プログラムを実行するためのハードウェア(回路、素子等)とにより実現される論理的な機能モジュールである。
レジスタ104は、CPU100内の記憶領域である。
図9において、診断実行部103は、診断対象ブロックをシフトさせながらRAM200内の全ブロックを診断する。
具体的には、診断実行部103は、いずれかのブロックを診断対象ブロックに指定し、診断対象ブロックと重ならないデータ格納領域(選択データ格納領域)に対応するRAM診断プログラムを実行し、選択データ格納領域に格納されているデータを用いて、診断対象ブロックの診断を行い、診断が完了すると、次の順序のブロックを診断対象ブロックに指定する。
具体的には、診断実行部103は、いずれかのブロックを診断対象ブロックに指定し、診断対象ブロックと重ならないデータ格納領域(選択データ格納領域)に対応するRAM診断プログラムを実行し、選択データ格納領域に格納されているデータを用いて、診断対象ブロックの診断を行い、診断が完了すると、次の順序のブロックを診断対象ブロックに指定する。
領域設定部101は、診断実行部103の診断に先立ち、2個のデータ格納領域をRAM200内のいずれかのブロックに設定する。
具体的には、領域設定部101は、診断対象ブロックがいずれのブロックになっても診断対象ブロックと重ならないデータ格納領域が1個以上存在するように、2個のデータ格納領域を設定する。
具体的には、領域設定部101は、診断対象ブロックがいずれのブロックになっても診断対象ブロックと重ならないデータ格納領域が1個以上存在するように、2個のデータ格納領域を設定する。
選択部102は、診断実行部103が未診断のブロックの中から診断対象ブロックを指定する際に、診断対象ブロックと重ならないデータ格納領域を1個選択する。
レジスタ104には、各種情報が保持される。
例えば、レジスタ104には、RAM診断プログラム記憶装置300から読み出されたRAM診断プログラムのプログラムコードが保持される。
また、レジスタ104には、診断実行部103による診断において診断対象ブロックから読み出された値(期待値と比較される値)が保持される。
また、レジスタ104には、診断実行部103による診断において診断対象ブロックから読み出された値と比較する期待値が保持される。
例えば、レジスタ104には、RAM診断プログラム記憶装置300から読み出されたRAM診断プログラムのプログラムコードが保持される。
また、レジスタ104には、診断実行部103による診断において診断対象ブロックから読み出された値(期待値と比較される値)が保持される。
また、レジスタ104には、診断実行部103による診断において診断対象ブロックから読み出された値と比較する期待値が保持される。
以下、図8のフローチャートを用いて、CPU100の処理シーケンスを説明する。
なお、図8の処理シーケンスの開始前に、領域設定部101は、例えば、図4に示す位置にデータ格納領域0(250)及びデータ格納領域1(251)を設定しており、また、データ格納領域0(250)及びデータ格納領域1(251)には、それぞれ、RAM診断に用いられるデータが格納されているものとする。
なお、図8の処理シーケンスの開始前に、領域設定部101は、例えば、図4に示す位置にデータ格納領域0(250)及びデータ格納領域1(251)を設定しており、また、データ格納領域0(250)及びデータ格納領域1(251)には、それぞれ、RAM診断に用いられるデータが格納されているものとする。
RAM診断が開始された場合、まず、診断実行部103は、診断対象をRAM200の先頭位置(先頭のブロックの先頭アドレスと等しい)に設定する(S101)。
つまり、診断実行部103は、先頭のブロックを診断対象ブロックに指定する。
つまり、診断実行部103は、先頭のブロックを診断対象ブロックに指定する。
次に、選択部102が、診断対象ブロックにデータ格納領域0(250)が含まれるかどうかを確認する(S102)。
診断対象ブロックにデータ格納領域0(250)が含まれない場合(S102でNO)、選択部102は、データ格納領域0(250)を選択し、診断実行部103は、データ格納領域0(250)に対応するRAM診断プログラム0(400)を利用して診断対象ブロックの診断を行う(S103)。
一方、診断対象ブロックにデータ格納領域0(250)が含まれる場合(S102でYES)、選択部102は、データ格納領域1(251)を選択し、診断実行部103は、データ格納領域1(251)に対応するRAM診断プログラム1(401)を利用してRAMの診断を行う(S104)。
一方、診断対象ブロックにデータ格納領域0(250)が含まれる場合(S102でYES)、選択部102は、データ格納領域1(251)を選択し、診断実行部103は、データ格納領域1(251)に対応するRAM診断プログラム1(401)を利用してRAMの診断を行う(S104)。
次に、診断実行部103は、RAM200の末尾のブロックの診断が完了したかどうか、つまり、S103又はS104で診断した診断対象ブロックがRAM200の末尾のブロックかどうかを判断する(S105)。
末尾のブロックの診断が完了している場合(S105でYES)は、診断実行部103は、診断を完了する。
一方、末尾のブロックの診断が完了していない場合(S105でNO)は、診断実行部103は、診断対象ブロックを更新(具体的には、直近の診断対象ブロックの次の順序のブロックの先頭アドレスを診断対象とする)し、S102以降の処理を繰り返す。
末尾のブロックの診断が完了している場合(S105でYES)は、診断実行部103は、診断を完了する。
一方、末尾のブロックの診断が完了していない場合(S105でNO)は、診断実行部103は、診断対象ブロックを更新(具体的には、直近の診断対象ブロックの次の順序のブロックの先頭アドレスを診断対象とする)し、S102以降の処理を繰り返す。
なお、図4に示す診断タイミングtでは、データ格納領域1(251)に格納されているデータ(変数等)を用いて、データ格納領域0(250)が含まれるブロックの診断を行うが、この診断タイミングtの診断により、データ格納領域0(250)に格納されているデータ(変数等)が消失してしまう。
このため、診断タイミングt+1において、データ格納領域1(251)が含まれるブロックが診断対象ブロックになった際に、データ格納領域0(250)にはRAM診断用のデータ(変数等)が存在しておらず、このため、このブロックを診断できない事態が生じる。
このような事態を回避するために、診断実行部103は、例えば、診断タイミングtの時点で、データ格納領域0(250)に格納されているデータ(変数等)をレジスタ104に退避させた後に、データ格納領域0(250)が含まれるブロックの診断を行う。
そして、診断実行部103は、データ格納領域0(250)が含まれるブロックの診断の完了後に、レジスタ104に退避させたデータ(変数等)をデータ格納領域0(250)に書き戻す。
これにより、診断タイミングt+1の時点で、データ格納領域0(250)にRAM診断用のデータが格納されているため、診断実行部103は、データ格納領域0(250)のデータを用いて、データ格納領域1(251)が含まれるブロックの診断を行うことができる。
このため、診断タイミングt+1において、データ格納領域1(251)が含まれるブロックが診断対象ブロックになった際に、データ格納領域0(250)にはRAM診断用のデータ(変数等)が存在しておらず、このため、このブロックを診断できない事態が生じる。
このような事態を回避するために、診断実行部103は、例えば、診断タイミングtの時点で、データ格納領域0(250)に格納されているデータ(変数等)をレジスタ104に退避させた後に、データ格納領域0(250)が含まれるブロックの診断を行う。
そして、診断実行部103は、データ格納領域0(250)が含まれるブロックの診断の完了後に、レジスタ104に退避させたデータ(変数等)をデータ格納領域0(250)に書き戻す。
これにより、診断タイミングt+1の時点で、データ格納領域0(250)にRAM診断用のデータが格納されているため、診断実行部103は、データ格納領域0(250)のデータを用いて、データ格納領域1(251)が含まれるブロックの診断を行うことができる。
以上、実施の形態1では、
RAMを複数個に等分割し、分割されたRAM領域を単位として順にRAMの診断を実行していく処理方式において、
RAM診断に利用するデータのデータ格納領域を2つ以上用意し、RAM診断の対象となっていない領域を利用してRAM診断プログラムを動作させる構成を説明した。
RAMを複数個に等分割し、分割されたRAM領域を単位として順にRAMの診断を実行していく処理方式において、
RAM診断に利用するデータのデータ格納領域を2つ以上用意し、RAM診断の対象となっていない領域を利用してRAM診断プログラムを動作させる構成を説明した。
実施の形態2.
本実施の形態では、RAM診断プログラムをC言語で実装する場合のデータ格納領域のより有効な配置例を示す。
本実施の形態でも、システム構成例は図1に示したものと同様であり、また、CPU100のモジュール構成例も図9に示したものと同様である。
また、以下では、実施の形態1との差異を説明する。
本実施の形態では、RAM診断プログラムをC言語で実装する場合のデータ格納領域のより有効な配置例を示す。
本実施の形態でも、システム構成例は図1に示したものと同様であり、また、CPU100のモジュール構成例も図9に示したものと同様である。
また、以下では、実施の形態1との差異を説明する。
図5及び6は、RAM診断プログラムをC言語で実装する場合のデータ格納領域のより有効な配置例を示す。
図5は、実施の形態1で示した図2に対応し、図6は、実施の形態1で示した図4に対応する。
本実施の形態では、図5及び図6に示すように、2つのデータ格納領域250、251を用意するとともに、2つのデータ格納領域250、251を離間するための離間格納領域260を用意する。
離間格納領域260はデータ格納領域0(250)とデータ格納領域1(251)を離間するための領域であり、離間格納領域260には、RAM診断に用いられるデータを格納する必要はない。
データ格納領域0(250)、データ格納領域1(251)、離間格納領域260の領域サイズ(図6の矢印で示す、縦方向のサイズ)は同じである。
つまり、本実施の形態では、データ格納領域0(250)とデータ格納領域1(251)とが領域サイズ分離間して配置される。
このようにした理由は、診断によるデータの破壊を防ぐためである。
C言語で定数を定義すると、定数が割り当てられるアドレスが一意でない。
そのため、2つのデータ格納領域を定義するのみでは、診断対象ブロックが2つのデータ格納領域と被ってしまい、RAM診断に用いられるデータが破壊されてしまう可能性がある。
このため、各ブロックのブロックサイズ(図7のtest_size)よりも大きな領域サイズの2つのデータ格納領域250、251を設定するとともに、2つのデータ格納領域250、251を離間格納領域260により領域サイズ分離間すると、どのブロックが診断対象ブロックとなっても、データ格納領域0(250)及びデータ格納領域1(251)のうちの少なくとも一方が診断対象ブロックと被らずにすみ、RAM診断に用いられるデータが保持される。
図5は、実施の形態1で示した図2に対応し、図6は、実施の形態1で示した図4に対応する。
本実施の形態では、図5及び図6に示すように、2つのデータ格納領域250、251を用意するとともに、2つのデータ格納領域250、251を離間するための離間格納領域260を用意する。
離間格納領域260はデータ格納領域0(250)とデータ格納領域1(251)を離間するための領域であり、離間格納領域260には、RAM診断に用いられるデータを格納する必要はない。
データ格納領域0(250)、データ格納領域1(251)、離間格納領域260の領域サイズ(図6の矢印で示す、縦方向のサイズ)は同じである。
つまり、本実施の形態では、データ格納領域0(250)とデータ格納領域1(251)とが領域サイズ分離間して配置される。
このようにした理由は、診断によるデータの破壊を防ぐためである。
C言語で定数を定義すると、定数が割り当てられるアドレスが一意でない。
そのため、2つのデータ格納領域を定義するのみでは、診断対象ブロックが2つのデータ格納領域と被ってしまい、RAM診断に用いられるデータが破壊されてしまう可能性がある。
このため、各ブロックのブロックサイズ(図7のtest_size)よりも大きな領域サイズの2つのデータ格納領域250、251を設定するとともに、2つのデータ格納領域250、251を離間格納領域260により領域サイズ分離間すると、どのブロックが診断対象ブロックとなっても、データ格納領域0(250)及びデータ格納領域1(251)のうちの少なくとも一方が診断対象ブロックと被らずにすみ、RAM診断に用いられるデータが保持される。
なお、図6に「格納領域の記述例」として示しているプログラムコード例を実行することで、選択部102はRAM200にデータ格納領域0(250)、離間格納領域260、データ格納領域1(251)を設定する。
図6の「格納領域の記述例」では、格納領域の型と実体を定義している。
前述のように、本実施の形態では、データ格納領域0(250)、離間格納領域260、データ格納領域1(251)のように、格納領域を3つ定義する必要があるため、struct命令で3つの格納領域を定義している。
図6の「格納領域の記述例」では、格納領域の型と実体を定義している。
前述のように、本実施の形態では、データ格納領域0(250)、離間格納領域260、データ格納領域1(251)のように、格納領域を3つ定義する必要があるため、struct命令で3つの格納領域を定義している。
また、図7の「RAM診断の記述例」では、図8に示した処理シーケンスを実現するためのプログラムコードの例を示している。
なお、図7の「RAM診断の記述例」にあるg_variables[0]はデータ格納領域0(250)を意味し、g_variables[1]はデータ格納領域1(251)を意味し、g_variables[2]は離間格納領域260を意味する。
ここで注意すべきは、RAM診断プログラムは各格納領域でそれぞれ実装する必要(ソースコードを記述する必要)があり、ポインタなどで利用する格納領域を切り替えるのみではいけない。
理由は、ポインタなどで利用する格納領域を管理しようとしても、そのポインタのデータがRAM診断で破壊される恐れがあり、RAM診断プログラムが正常に動作できない可能性があるからである。
なお、本実施の形態でも、CPU100の処理シーケンスは、図8に示すものと同様である。
なお、図7の「RAM診断の記述例」にあるg_variables[0]はデータ格納領域0(250)を意味し、g_variables[1]はデータ格納領域1(251)を意味し、g_variables[2]は離間格納領域260を意味する。
ここで注意すべきは、RAM診断プログラムは各格納領域でそれぞれ実装する必要(ソースコードを記述する必要)があり、ポインタなどで利用する格納領域を切り替えるのみではいけない。
理由は、ポインタなどで利用する格納領域を管理しようとしても、そのポインタのデータがRAM診断で破壊される恐れがあり、RAM診断プログラムが正常に動作できない可能性があるからである。
なお、本実施の形態でも、CPU100の処理シーケンスは、図8に示すものと同様である。
なお、離間格納領域の個数を、診断対象ブロックの個数と同じにすることで、RAM診断プログラムを正常に動作させることができる。
診断対象ブロックの個数がm個(mは1以上の整数であって、RAM200の総ブロック数の約数)であれば、2つのデータ格納領域の間に配置される離間格納領域の個数をm個とする。
例えば、2個のブロックを診断対象ブロックとする場合、すなわち、2個のブロックを単位としてRAM診断を行う場合は、2個の離間格納領域をデータ格納領域0(250)とデータ格納領域1(251)の間に設ければ、RAM診断プログラムを正常に動作させることができる。
診断対象ブロックの個数がm個(mは1以上の整数であって、RAM200の総ブロック数の約数)であれば、2つのデータ格納領域の間に配置される離間格納領域の個数をm個とする。
例えば、2個のブロックを診断対象ブロックとする場合、すなわち、2個のブロックを単位としてRAM診断を行う場合は、2個の離間格納領域をデータ格納領域0(250)とデータ格納領域1(251)の間に設ければ、RAM診断プログラムを正常に動作させることができる。
なお、実施の形態1及び2では、2つのデータ格納領域をRAM200に設定する例を説明したが、3つ以上のデータ格納領域を設定するようにしてもよい。
また、実施の形態2の方法により3つ以上のデータ格納領域を設定する場合は、いずれか2つのデータ格納領域が離間格納領域によって離間されていればよい。
また、本発明は、実施の形態1及び2に限定されるものではなく、必要に応じて種々の変更が可能である。
また、実施の形態2の方法により3つ以上のデータ格納領域を設定する場合は、いずれか2つのデータ格納領域が離間格納領域によって離間されていればよい。
また、本発明は、実施の形態1及び2に限定されるものではなく、必要に応じて種々の変更が可能である。
以上、実施の形態2では、
RAMを複数個に等分割し、分割されたRAM領域を単位として順にRAMの診断を実行していく処理方式において、
RAM診断に利用するデータのデータ格納領域を2つ以上用意し、データ格納領域を離間する離間格納領域を用意し、また、データ格納領域の領域サイズは、各ブロックのブロックサイズよりも大きく設定する構成を説明した。
RAMを複数個に等分割し、分割されたRAM領域を単位として順にRAMの診断を実行していく処理方式において、
RAM診断に利用するデータのデータ格納領域を2つ以上用意し、データ格納領域を離間する離間格納領域を用意し、また、データ格納領域の領域サイズは、各ブロックのブロックサイズよりも大きく設定する構成を説明した。
100 CPU、101 領域設定部、102 選択部、103 診断実行部、104 レジスタ、200 RAM、250 データ格納領域0、251 データ格納領域1、260 離間格納領域、400 RAM診断プログラム0、401 RAM診断プログラム1、300 RAM診断プログラム記憶装置。
Claims (6)
- n(nは3以上の整数)個のブロックに等分されたメモリを診断するメモリ診断装置であって、
診断の対象となる診断対象ブロックをシフトさせながら前記n個のブロックを診断する診断実行部と、
前記診断実行部の診断に先立ち、前記診断実行部の診断に用いられるデータが格納されるデータ格納領域を2個以上、診断対象ブロックがいずれのブロックになっても診断対象ブロックと重ならないデータ格納領域が1個以上存在するように、前記n個のブロックのうちのいずれかのブロックに設定する領域設定部と、
前記診断実行部が未診断のブロックの中から診断対象ブロックを指定する際に、診断対象ブロックと重ならないデータ格納領域を1個選択する選択部とを有し、
前記診断実行部は、
前記選択部により選択されたデータ格納領域である選択データ格納領域に格納されているデータを用いて、診断対象ブロックを診断することを特徴とするメモリ診断装置。 - 前記領域設定部は、
それぞれに診断プログラムが対応付けられている2個以上のデータ格納領域を前記n個のブロックのうちのいずれかのブロックに設定し、
前記診断実行部は、
前記選択データ格納領域に対応付けられている診断プログラムを実行して、診断対象ブロックを診断することを特徴とする請求項1に記載のメモリ診断装置。 - 前記診断実行部は、
前記選択データ格納領域以外のデータ格納領域である非選択データ格納領域が診断対象ブロックと重なっている場合に、前記診断対象ブロックに対する診断の後に、診断に用いられるデータを前記非選択データ格納領域に格納することを特徴とする請求項1又は2に記載のメモリ診断装置。 - 前記領域設定部は、
同じ領域サイズのデータ格納領域を2個以上、いずれか2個のデータ格納領域が相互に前記領域サイズ以上離間して配置されるように、前記n個のブロックのうちのいずれかのブロックに設定することを特徴とする請求項1~3のいずれかに記載のメモリ診断装置。 - 前記診断実行部は、
m(mは1以上の整数であってnの約数)個のブロックを診断対象ブロックとして指定し、m個の診断対象ブロックをシフトさせながら前記n個のブロックを診断し、
前記領域設定部は、
前記データ格納領域を2個以上、いずれか2個のデータ格納領域が相互に前記領域サイズのm倍以上離間して配置されるように、前記n個のブロックのうちのいずれかのブロックに設定することを特徴とする請求項4に記載のメモリ診断装置。 - ブロックのブロックサイズよりも大きな領域サイズのデータ格納領域を2個以上、前記n個のブロックのうちのいずれかのブロックに設定することを特徴とする請求項4又は5に記載のメモリ診断装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/052043 WO2014118910A1 (ja) | 2013-01-30 | 2013-01-30 | メモリ診断装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/052043 WO2014118910A1 (ja) | 2013-01-30 | 2013-01-30 | メモリ診断装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014118910A1 true WO2014118910A1 (ja) | 2014-08-07 |
Family
ID=51261658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2013/052043 WO2014118910A1 (ja) | 2013-01-30 | 2013-01-30 | メモリ診断装置 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2014118910A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1153269A (ja) * | 1997-07-31 | 1999-02-26 | Nec Gumma Ltd | メモリ診断装置および方法 |
JP2007257271A (ja) * | 2006-03-23 | 2007-10-04 | Fujitsu Ltd | メモリ診断方法、マイクロコンピュータシステム及びプログラム |
JP2010092125A (ja) * | 2008-10-03 | 2010-04-22 | Fujitsu Ltd | コンピュータ装置、メモリ診断方法、及びメモリ診断制御プログラム |
JP2012064142A (ja) * | 2010-09-17 | 2012-03-29 | Sharp Corp | 画像処理装置および画像形成装置 |
-
2013
- 2013-01-30 WO PCT/JP2013/052043 patent/WO2014118910A1/ja active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1153269A (ja) * | 1997-07-31 | 1999-02-26 | Nec Gumma Ltd | メモリ診断装置および方法 |
JP2007257271A (ja) * | 2006-03-23 | 2007-10-04 | Fujitsu Ltd | メモリ診断方法、マイクロコンピュータシステム及びプログラム |
JP2010092125A (ja) * | 2008-10-03 | 2010-04-22 | Fujitsu Ltd | コンピュータ装置、メモリ診断方法、及びメモリ診断制御プログラム |
JP2012064142A (ja) * | 2010-09-17 | 2012-03-29 | Sharp Corp | 画像処理装置および画像形成装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104035843B (zh) | 用于提高锁步核可用性的系统和方法 | |
JP4734003B2 (ja) | ソフトエラー訂正方法、メモリ制御装置及びメモリシステム | |
US10496471B2 (en) | Register error detection system | |
JP5509568B2 (ja) | コンピュータ装置、プロセッサ診断方法、及びプロセッサ診断制御プログラム | |
US9009549B2 (en) | Memory diagnostic apparatus and memory diagnostic method and program | |
JP2010262432A (ja) | 安全制御装置 | |
US9443613B2 (en) | Advanced memory test diagnostics | |
JP6717059B2 (ja) | 制御システム | |
JP2017097633A (ja) | 車両制御装置 | |
JP5986474B2 (ja) | メモリ故障診断装置、メモリ故障診断方法 | |
WO2014118910A1 (ja) | メモリ診断装置 | |
JP7379932B2 (ja) | 制御装置、ユーザプログラムの実行制御方法、およびシステムプログラム | |
JP6900661B2 (ja) | 検証装置、方法およびプログラム | |
US9606732B2 (en) | Verification of serialization of storage frames within an address space via multi-threaded programs | |
US20210089310A1 (en) | Multiprocessor device | |
JP5469106B2 (ja) | コンピュータシステム、試験装置、試験方法、及び試験プログラム | |
JP2018156188A (ja) | メモリ制御装置、情報処理装置およびメモリ制御方法 | |
JP6405966B2 (ja) | 電子制御装置 | |
JP7102963B2 (ja) | 演算処理装置、及び制御方法 | |
JP6645467B2 (ja) | マイクロコンピュータ | |
JP6358122B2 (ja) | マイクロコンピュータ | |
WO2015147829A1 (en) | System and method of run-time continuous memory check for embedded systems | |
JP6042046B1 (ja) | メモリ診断装置及びメモリ診断プログラム | |
JP2010211391A (ja) | Cpuの動作監視方法および装置 | |
JP6201921B2 (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: 13873365 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 13873365 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |