JP2016537730A - 割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出すること - Google Patents
割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出すること Download PDFInfo
- Publication number
- JP2016537730A JP2016537730A JP2016533024A JP2016533024A JP2016537730A JP 2016537730 A JP2016537730 A JP 2016537730A JP 2016533024 A JP2016533024 A JP 2016533024A JP 2016533024 A JP2016533024 A JP 2016533024A JP 2016537730 A JP2016537730 A JP 2016537730A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- error correction
- data
- correction code
- processor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
実施形態は、割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出するためのデータ処理デバイス(1)であって、プロセッサ(2)と、メモリ・コントローラ(3)と、メモリ(4)とを備えており、プロセッサ(2)は、オペレーティング・システム(OS)と、コンピュータ・プログラム(P)とを実行するように構成されており、オペレーティング・システム(OS)は、前記コンピュータ・プログラム(P)のためのメモリを割り付け、また解放するように構成されており、メモリ・コントローラ(3)は、エラー訂正符号決定ユニット(5)を備えており、また− メモリ(4)に第1のデータ(D1)を記憶するためのライト・アクセス・コマンドに応答して、前記第1のデータ(D1)の関数の形で、第1のエラー訂正符号(ECC1)を決定し、また前記メモリ(4)に、関連して、前記第1のエラー訂正符号(ECC1)と、前記第1のデータ(D1)とを記憶し、− メモリから第2のデータ(D2)を読み取るためのリード・アクセス・コマンドに応答して、第2のデータ(D2)の関数の形で、第2のエラー訂正符号(ECC2)を決定し(T4)、メモリ(4)に前記第2のデータ(D2)に関連して記憶される第3のエラー訂正符号(ECC3)と第2のエラー訂正符号(ECC2)を比較し(T5)、また第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチする場合に、第2のデータ(D2)を出力し(T6)、または第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチしない場合に、リード・エラー信号を出力し(T6’)、− メモリ・コントローラ(3)のテスト・インターフェースに対するライト・アクセス・コマンドに応答して、メモリ(4)に、第3のデータ(D3)に関連して第4のエラー訂正符号(ECC4)を記憶し(U4)、第4のエラー訂正符号(ECC4)が前記第3のデータ(D3)に関して無効となる、ように構成されており、プロセッサは、オペレーティング・システム(OS)によるメモリ・エリアの開放すること(U1)に応答して、メモリ・コントローラ(3)の前記テスト・インターフェースに対してメモリ・エリアのためのライト・アクセス・コマンドを出力する(U2)ように構成されている、データ処理デバイス(1)に、関する。
Description
本発明は、メモリ管理の分野に関する。詳細には、本発明は、割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出するための方法およびデバイスに関する。
メモリ管理は、コンピュータ・プログラムに対するコンピュータ・メモリの割り付けに関する。オペレーティング・システムは、それらコンピュータ・プログラムの必要性と、メモリの使用可能性とに従って、コンピュータ・プログラムにメモリを割り付ける。
CやC++など、一般的に使用されるプログラミング言語は、ソフトウェア開発者が、メモリ割り付けと、メモリの初期化とについて気にかけることを必要としている。割り付けられていないメモリ、または初期化されていないメモリの使用、例えば、解放されているメモリからの読み取りに関連したソフトウェア・バグは、見分けることが難しく、またソフトウェア・システムの予測不可能な不正動作をもたらす可能性がある。したがって、様々な問題解決手法、すなわち、静的コード・チェッカと、ランタイム・ソフトウェアと、ハードウェアCPUエミュレータの使用とが、割り付けられていないメモリ、または初期化されていないメモリに対するアクセスを検出するために提案されている。
しかしながら、静的コード・チェッカは、初期化されていないメモリに対するアクセスを常に検出することができるというわけではなく、また解放されたメモリ・エリアの使用をほとんど検出することができない。ランタイム・ソフトウェアは、そのような失敗をよりよく検出することができるが、ただしランタイム・ペナルティという対償が生じる。最終的には、ハードウェアCPUエミュレータは、非常に高価であり、滅多に使用できるものではなく、使用するためには複雑であり、またソフトウェア・システムの実行スピードを変更してしまう。
したがって、割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出するための方法およびデバイスを提案することが、本発明の実施形態の一目的であり、これらの方法およびデバイスは、先行技術についての固有の短所を示すことはない。
したがって、実施形態は、割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出するためのデータ処理デバイスであって、プロセッサと、メモリ・コントローラと、メモリとを備えており、
プロセッサは、オペレーティング・システムと、コンピュータ・プログラムとを実行するように構成されており、オペレーティング・システムは、前記コンピュータ・プログラムのためのメモリを割り付け、また解放するように構成されており、
メモリ・コントローラは、エラー訂正符号決定ユニットを備えており、また
− メモリに第1のデータを記憶するためのライト・アクセス・コマンドに応答して、前記第1のデータの関数の形で、第1のエラー訂正符号を決定し、また前記メモリに、関連して、前記第1のエラー訂正符号と、前記第1のデータとを記憶し、
− メモリから第2のデータを読み取るためのリード・アクセス・コマンドに応答して、第2のデータの関数の形で、第2のエラー訂正符号を決定し、メモリに前記第2のデータに関連して記憶される第3のエラー訂正符号と第2のエラー訂正符号を比較し、また第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチする場合に、第2のデータを出力し、または第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチしない場合に、リード・エラー信号を出力し、
− メモリ・コントローラのテスト・インターフェースに対するライト・アクセス・コマンドに応答して、メモリに、第3のデータに関連して第4のエラー訂正符号を記憶し、第4のエラー訂正符号が前記第3のデータに関して無効となる
ように構成されており、
プロセッサは、オペレーティング・システムによるメモリ・エリアの開放することに応答して、メモリ・コントローラの前記テスト・インターフェースに対してメモリ・エリアのためのライト・アクセス・コマンドを出力するように構成されている、
データ処理デバイスに、関する。
プロセッサは、オペレーティング・システムと、コンピュータ・プログラムとを実行するように構成されており、オペレーティング・システムは、前記コンピュータ・プログラムのためのメモリを割り付け、また解放するように構成されており、
メモリ・コントローラは、エラー訂正符号決定ユニットを備えており、また
− メモリに第1のデータを記憶するためのライト・アクセス・コマンドに応答して、前記第1のデータの関数の形で、第1のエラー訂正符号を決定し、また前記メモリに、関連して、前記第1のエラー訂正符号と、前記第1のデータとを記憶し、
− メモリから第2のデータを読み取るためのリード・アクセス・コマンドに応答して、第2のデータの関数の形で、第2のエラー訂正符号を決定し、メモリに前記第2のデータに関連して記憶される第3のエラー訂正符号と第2のエラー訂正符号を比較し、また第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチする場合に、第2のデータを出力し、または第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチしない場合に、リード・エラー信号を出力し、
− メモリ・コントローラのテスト・インターフェースに対するライト・アクセス・コマンドに応答して、メモリに、第3のデータに関連して第4のエラー訂正符号を記憶し、第4のエラー訂正符号が前記第3のデータに関して無効となる
ように構成されており、
プロセッサは、オペレーティング・システムによるメモリ・エリアの開放することに応答して、メモリ・コントローラの前記テスト・インターフェースに対してメモリ・エリアのためのライト・アクセス・コマンドを出力するように構成されている、
データ処理デバイスに、関する。
したがって、実施形態は、割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出するための方法であり、プロセッサと、メモリ・コントローラと、メモリとを備えているデータ処理デバイスによって実行される方法であって、
− プロセッサにより、オペレーティング・システムと、コンピュータ・プログラムとを実行するステップであって、オペレーティング・システムは、前記コンピュータ・プログラムのためのメモリを割り付け、また解放するように構成されている、実行するステップと、
− メモリに第1のデータを記憶するためのライト・アクセス・コマンドに応答して、メモリ・コントローラが、前記第1のデータの関数の形で第1のエラー訂正符号を決定し、また前記メモリに、関連して、前記第1のエラー訂正符号と、前記第1のデータとを記憶するステップと、
− メモリから第2のデータを読み取るためのリード・アクセス・コマンドに応答して、メモリ・コントローラが、第2のデータの関数の形で、第2のエラー訂正符号を決定し、メモリに前記第2のデータに関連して記憶される第3のエラー訂正符号と第2のエラー訂正符号を比較し、また第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチする場合に、第2のデータを出力し、または第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチしない場合に、リード・エラー信号を出力するステップと、
− メモリ・コントローラのテスト・インターフェースに対するライト・アクセス・コマンドに応答して、メモリ・コントローラが、メモリに、第3のデータに関連して第4のエラー訂正符号を記憶し、第4のエラー訂正符号が前記第3のデータに関して無効となるステップと、
− オペレーティング・システムによるメモリ・エリアの開放することに応答して、プロセッサにより、メモリ・コントローラの前記テスト・インターフェースに対して解放されたメモリ・エリアのためのライト・アクセス・コマンドを出力するステップと
を含む方法に関する。
− プロセッサにより、オペレーティング・システムと、コンピュータ・プログラムとを実行するステップであって、オペレーティング・システムは、前記コンピュータ・プログラムのためのメモリを割り付け、また解放するように構成されている、実行するステップと、
− メモリに第1のデータを記憶するためのライト・アクセス・コマンドに応答して、メモリ・コントローラが、前記第1のデータの関数の形で第1のエラー訂正符号を決定し、また前記メモリに、関連して、前記第1のエラー訂正符号と、前記第1のデータとを記憶するステップと、
− メモリから第2のデータを読み取るためのリード・アクセス・コマンドに応答して、メモリ・コントローラが、第2のデータの関数の形で、第2のエラー訂正符号を決定し、メモリに前記第2のデータに関連して記憶される第3のエラー訂正符号と第2のエラー訂正符号を比較し、また第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチする場合に、第2のデータを出力し、または第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチしない場合に、リード・エラー信号を出力するステップと、
− メモリ・コントローラのテスト・インターフェースに対するライト・アクセス・コマンドに応答して、メモリ・コントローラが、メモリに、第3のデータに関連して第4のエラー訂正符号を記憶し、第4のエラー訂正符号が前記第3のデータに関して無効となるステップと、
− オペレーティング・システムによるメモリ・エリアの開放することに応答して、プロセッサにより、メモリ・コントローラの前記テスト・インターフェースに対して解放されたメモリ・エリアのためのライト・アクセス・コマンドを出力するステップと
を含む方法に関する。
プロセッサは、オペレーティング・システムの初期化プロセス中に、メモリ・コントローラの前記テスト・インターフェースに対してライト・アクセス・コマンドを出力するように構成されていることもある。
プロセッサは、前記リード・エラー信号に応答して、割り付けられていないメモリ、または初期化されていないメモリにアクセスしている1つのソフトウェアを識別するように構成されていることもある。
添付の図面と一緒に解釈される実施形態についての以下の説明を参照することにより、本発明の上記および他の目的と特徴とは、より明らかになり、また本発明それ自体は、最もよく理解されるであろう。
図1は、プロセッサ2と、メモリ・コントローラ3と、メモリ4とを備えているデータ処理デバイス1を示すものである。
プロセッサ2は、オペレーティング・システムOSと、コンピュータ・プログラムPとを実行するように構成されている。オペレーティング・システムOSは、コンピュータ・プログラム(すなわち、プロセッサ2によって実行可能な命令)と、データ処理デバイス1のコンピュータ・ハードウェア・リソースを管理し、またコンピュータ・プログラムPについての共通サービスを提供するデータとの集まりである。オペレーティング・システムOSのタスクは、コンピュータ・プログラムPのためのメモリを割り付け、また解放しているメモリ管理を含んでいる。
コンピュータ・プログラムPは、決定されたオペレーションを実行するための、プロセッサ2によって実行可能な命令を含んでいる。コンピュータ・プログラムPの実行は、メモリを割り付け、またメモリを解放するためのオペレーティング・システムOSと対話するステップを含むことができる。コンピュータ・プログラムPの実行はまた、メモリ4にデータを記憶するステップと、メモリ4からデータを読み取るステップとを含むこともできる。
メモリ・コントローラ3は、エラー訂正符号決定ユニット5を備えており、またプロセッサ2からのライト・アクセス・コマンドと、リード・アクセス・コマンドとを処理する役割を担っている。エラー訂正符号決定ユニット5は、メモリ4に記憶される、または記憶されるべきデータの関数の形で、エラー訂正符号を決定することができる。当業者なら、エラー訂正符号を決定するための異なる技法についてよく知っており、またこれは、詳細には説明されないであろう。メモリ・コントローラ3の機能は、図2から4を参照して、より詳細に説明されるであろう。
メモリ4は、データ記憶デバイスである。この実施形態においては、メモリ4は、RAMである。しかしながら、他の実施形態においては、メモリ4は、ハード・ディスク、フラッシュ・メモリなどとすることができる。
プロセッサ2と、メモリ・コントローラ3と、メモリ4とは、バス(例えば、データ・バス、アドレス・バスなど)によって接続された複数のICの中に含まれることもある。例えば、プロセッサ2と、メモリ・コントローラ3と、メモリ4とのうちのそれぞれは、異なるICに対応することができる。別の例においては、メモリ・コントローラ3は、メモリ4またはプロセッサ2として同じICの中に含まれることもある。
図2は、コンピュータ・プログラムPにより、メモリ4にデータを記憶することを示した流れ図である。
プロセッサ2によるコンピュータ・プログラムPの実行中に、メモリは、コンピュータ・プログラムPのために、オペレーティング・システムOSによって割り付けられる(ステップS1)。例えば、メモリは、コンピュータ・プログラムPの起動時に、またはコンピュータ・プログラムPの要求に応じて、割り付けられる。様々な技法が、メモリ割り付けのために存在している。
後で、コンピュータ・プログラムPは、データD1を記憶する必要がある。例えば、コンピュータ・プログラムPは、変数を初期化し、または既に割り当てられている変数に対して新しい値を再び割り当てる。したがって、コンピュータ・プログラムPは、メモリ・コントローラ3に対してライト・アクセス・コマンドを送信する(ステップS3)。ライト・アクセス・コマンドは、例えば、メモリ4に記憶されるべき、アドレスAと、データD1とを含む。アドレスAは、コンピュータ・プログラムPのために割り付けられているメモリ4の一部分に対応する。
ライト・アクセス・コマンドに応答して、メモリ・コントローラ3は、データD1の関数の形で、エラー訂正符号ECC1を決定し(ステップS4)、またメモリ4に、関連して、エラー訂正符号ECC1と、データD1とを記憶する。メモリ4に、関連して、エラー訂正符号と、データとを記憶することは、様々なやり方で実行されることもある。例えば、メモリ4は、ECC−部分と、データ−部分とを含んでおり、ECC−部分のそれぞれのメモリ・ブロックは、データ−部分の関連するメモリ・ブロックに対応している。
したがって、割り付けられ、また初期化されたメモリに記憶されるデータが、有効なエラー訂正符号に関連して記憶される。
図3は、メモリ4に無効なエラー訂正符号を記憶することを示す流れ図である。
プロセッサ2によるコンピュータ・プログラムPの実行中に、コンピュータ・プログラムPに割り付けられたメモリは、オペレーティング・システムOSによって解放されることもある(ステップU1)。例えば、メモリは、コンピュータ・プログラムPが、終了するときに、またはコンピュータ・プログラムPの要求に応じて、解放される。
メモリの解放に応答して、オペレーティング・システムOSは、メモリ・コントローラ3に対してライト・アクセス・コマンドを送信する(ステップU2)。ライト・アクセス・コマンドは、アドレスAを含んでいる。しかしながら、ステップU2のライト・アクセス・コマンドは、上記で説明されるステップS3のライト・アクセス・コマンドとは異なっており、ステップU2のライト・アクセス・コマンドは、メモリ・コントローラ3のテスト・インターフェースを対象としている。
そのテスト・インターフェースに対するライト・アクセス・コマンドに応答して、メモリ・コントローラ3は、無効なエラー訂正符号ECC4を決定し(ステップU3)、またメモリ4に、関連して、無効なエラー訂正符号ECC3と、データD3とを記憶する。無効なエラー訂正符号は、エラー訂正符号ECC3が、エラー訂正符号決定ユニット5がデータD3の関数の形で決定することになるエラー訂正符号とは異なっていることを意味している。
したがって、解放されたメモリ・エリアは、無効なエラー訂正符号を含んでいる。
同様に、初期化プロセスの一部分として、例えば、オペレーティング・システムOSの起動時に、オペレーティング・システムOSは、メモリ・コントローラ3のテスト・インターフェースに対して、ライト・アクセス・コマンドを送信する(図示されず)。したがって、オペレーティング・システムOSの起動の後のその初期状態において、メモリ4の割り付けられていない部分は、無効なエラー訂正符号を含んでいる。
言い換えれば、割り付けられていないメモリ、または初期化されていないメモリは、無効なエラー訂正符号を含んでいる。
無効なエラー訂正符号は、例えば、有効なエラー訂正符号を決定すること、および次いで少なくとも1つの所定のビットを反転することにより、決定されることもある。
図4は、コンピュータ・プログラムPにより、メモリ4からデータを読み取ることを示す流れ図である。
コンピュータ・プログラムPの実行中に、コンピュータ・プログラムPは、メモリ4に記憶されたデータD2を使用する必要がある可能性がある(ステップT1)。したがって、コンピュータ・プログラムPは、メモリ・コントローラ3に対してリード・アクセス・コマンドを送信する(ステップT2)。リード・アクセス・コマンドは、例えば、アドレスAを含んでいる。
リード・アクセス・コマンドに応答して、メモリ・コントローラ3は、アドレスAにおいてメモリ4に記憶されたデータD2を取得し(ステップT3)、またデータD2の関数の形で、エラー訂正符号ECC2を決定する(ステップT4)。次いで、メモリ・コントローラ3は、メモリ4にデータD2に関連して記憶されるエラー訂正符号ECC3と、決定されたエラー訂正符号ECC2を比較する(ステップT5)。
万一エラー訂正符号ECC2と、エラー訂正符号ECC3とが、マッチする(すなわち、等しい)場合には、メモリ・コントローラ3は、データD2を出力し(ステップT6)、このデータD2は、次いで、コンピュータ・プログラムPによって使用されることもある。
対照的に、エラー訂正符号ECC2と、エラー訂正符号ECC3とが、マッチしない(すなわち、等しくない)場合には、メモリ・コントローラ3は、オペレーティング・システムに対してリード・エラー信号を出力する(ステップT6’)。
以上で説明されるように、割り付けられ、また初期化されたメモリに記憶されるデータは、有効なエラー訂正符号に関連して記憶される。対照的に、割り付けられていないメモリ、または初期化されていないメモリは、無効なエラー訂正符号を含んでいる。したがって、リード・エラー信号は、割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスの記号である。割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスは、検出されている。それゆえに、リード・エラー信号に応答して、オペレーティング・システムOSは、割り付けられていないメモリ、または初期化されていないメモリに不法にアクセスしているその1つのソフトウェアを識別する(ステップT7)。識別情報は、例えば、スタック・トレース・バック(Stack−Trace−Back)およびプロセス情報に基づいたものとすることができ、このスタック・トレース・バックおよびプロセス情報は、プログラマが、調査することを可能とする。
メモリ・コントローラ3の機能は、テスト・インターフェースを備えている通常のECC−可能なメモリ・コントローラの機能であることに注意すべきである。したがって、データ処理デバイス1の中の割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスの検出は、さらなるハードウェア・コストなしで生じる。さらに、システムのランタイムに対する影響は、限られており、すなわち、プロセッサ2(オペレーティング・システムOS)は、メモリの解放することに応答して、または初期化プロセス中に、メモリ・コントローラ3のテスト・インターフェースに対してライト・アクセス・コマンドを送信するように構成されているが、これは、コンピュータ・プログラムPに対するスピード・ペナルティを伴うものではない。
図面の中に示される様々な要素についての機能は、専用のハードウェア、ならびに適切なソフトウェアに関連してソフトウェアを実行することができるハードウェアの使用を通して提供されてもよいことに注目すべきである。プロセッサによって提供されるときに、それらの機能は、単一の専用のプロセッサによって、単一の共用のプロセッサによって、またはそれらのうちのいくつかが、例えば、クラウド・コンピューティング・アーキテクチャにおいて、共用され得る複数の個別のプロセッサによって提供されてもよい。さらに、用語「プロセッサ」の明示的な使用は、ソフトウェアを実行することができるハードウェアだけを排他的に意味するように解釈されるべきではなく、また限定することなく、デジタル信号プロセッサ(DSP:digital signal processor)のハードウェアと、ネットワーク・プロセッサと、特定用途向け集積回路(ASIC:application specific integrated circuit)と、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)と、ソフトウェアを記憶するためのリード・オンリー・メモリ(ROM:read only memory)と、ランダム・アクセス・メモリ(RAM:random access memory)と、不揮発性ストレージとを暗黙のうちに含むことができる。他のハードウェアが、従来のものおよび/またはカスタムのものもまた、含められる可能性がある。それらの機能は、プログラム・ロジックのオペレーションを通して、専用のロジックを通して、プログラム制御と専用のロジックとの相互作用を通して、または手動によってさえも、実行される可能性があり、特定の技法は、文脈からもっと具体的に理解されるように、実装者によって選択可能である。
さらに、本明細書における任意のブロック図は、本発明の原理を実施する実例となる回路の概念図を表すことが、当業者によって理解されるべきである。同様に、任意のフロー・チャートは、コンピュータ読み取り可能媒体の形で実質的に表され、またそのようにしてコンピュータまたはプロセッサによって、そのようなコンピュータまたはプロセッサが明示的に示されているか否かにかかわらず、実行され得る様々なプロセスを表すことが、理解されるであろう。
本方法の実施形態は、専用のハードウェアおよび/またはソフトウェア、あるいはそれら両方の任意の組合せを用いて実行される可能性がある。
本発明の原理は、特定の実施形態に関連して上記で説明されているが、この説明は、添付の特許請求の範囲において規定されるように、例としてだけ、また本発明の範囲に対する限定としてではなく、行われることを明確に理解すべきである。
Claims (6)
- 割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出するためのデータ処理デバイス(1)であって、プロセッサ(2)と、メモリ・コントローラ(3)と、メモリ(4)とを備えており、
前記プロセッサ(2)は、オペレーティング・システム(OS)と、コンピュータ・プログラム(P)とを実行するように構成されており、前記オペレーティング・システム(OS)は、前記コンピュータ・プログラム(P)のためのメモリを割り付け、また解放するように構成されており、
前記メモリ・コントローラ(3)は、エラー訂正符号決定ユニット(5)を備えており、また
− 前記メモリ(4)に第1のデータ(D1)を記憶するためのライト・アクセス・コマンドに応答して、前記第1のデータ(D1)の関数の形で、第1のエラー訂正符号(ECC1)を決定し、また前記メモリ(4)に、関連して、前記第1のエラー訂正符号(ECC1)と、前記第1のデータ(D1)とを記憶し、
− 前記メモリから第2のデータ(D2)を読み取るためのリード・アクセス・コマンドに応答して、前記第2のデータ(D2)の関数の形で、第2のエラー訂正符号(ECC2)を決定し(T4)、前記メモリ(4)に前記第2のデータ(D2)に関連して記憶される第3のエラー訂正符号(ECC3)と前記第2のエラー訂正符号(ECC2)を比較し(T5)、また前記の第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチする場合に、前記第2のデータ(D2)を出力し(T6)、または前記の第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチしない場合に、リード・エラー信号を出力し(T6’)、
− 前記メモリ・コントローラ(3)のテスト・インターフェースに対するライト・アクセス・コマンドに応答して、前記メモリ(4)に第3のデータ(D3)に関連して第4のエラー訂正符号(ECC4)を記憶し(U4)、前記第4のエラー訂正符号(ECC4)が前記第3のデータ(D3)に関して無効となる、
ように構成されており、
前記プロセッサは、前記オペレーティング・システム(OS)によるメモリ・エリアの開放すること(U1)に応答して、前記メモリ・コントローラ(3)の前記テスト・インターフェースに対して前記メモリ・エリアのためのライト・アクセス・コマンドを出力する(U2)ように構成されている、データ処理デバイス(1)。 - 前記プロセッサ(2)は、前記オペレーティング・システム(OS)の初期化プロセス中に、前記メモリ・コントローラ(3)の前記テスト・インターフェースに対してライト・アクセス・コマンドを出力するように構成されている、請求項1に記載のデータ処理デバイス。
- 前記プロセッサ(2)は、前記リード・エラー信号に応答して、割り付けられていないメモリ、または初期化されていないメモリにアクセスしている1つのソフトウェアを識別する(T7)ように構成されている、請求項1または2に記載のデータ処理デバイス。
- 割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出するための方法であり、プロセッサ(2)と、メモリ・コントローラ(3)と、メモリ(4)とを備えているデータ処理デバイス(1)によって実行される方法であって、
− 前記プロセッサ(2)により、オペレーティング・システム(OS)と、コンピュータ・プログラム(P)とを実行するステップであって、前記オペレーティング・システムは、前記コンピュータ・プログラムのためのメモリを割り付け、また解放するように構成されている、実行するステップと、
− 前記メモリに第1のデータを記憶するためのライト・アクセス・コマンドに応答して、前記メモリ・コントローラが、前記第1のデータの関数の形で第1のエラー訂正符号を決定し(S4)、また前記メモリに関連して、前記第1のエラー訂正符号と、前記第1のデータとを記憶する(S5)ステップと、
− 前記メモリから第2のデータを読み取るためのリード・アクセス・コマンドに応答して、前記メモリ・コントローラが、前記第2のデータの関数の形で、第2のエラー訂正符号を決定し(T4)、前記メモリに前記第2のデータに関連して記憶される第3のエラー訂正符号と前記第2のエラー訂正符号を比較し(T5)、また前記の第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチする場合に、前記第2のデータを出力し(T6)、または前記の第2のエラー訂正符号と、第3のエラー訂正符号とが、マッチしない場合に、リード・エラー信号を出力する(T6’)ステップと、
− 前記メモリ・コントローラのテスト・インターフェースに対するライト・アクセス・コマンドに応答して、前記メモリ・コントローラが、前記メモリに第3のデータに関連して前記第4のエラー訂正符号を記憶し(U4)、第4のエラー訂正符号が前記第3のデータに関して無効となるステップと、
− 前記オペレーティング・システムによるメモリ・エリアの開放すること(U1)に応答して、前記プロセッサにより、前記メモリ・コントローラの前記テスト・インターフェースに対して前記解放されたメモリ・エリアのためのライト・アクセス・コマンドを出力する(U2)ステップと
を含む方法。 - 前記プロセッサにより、前記オペレーティング・システムの初期化プロセス中に、前記メモリ・コントローラの前記テスト・インターフェースに対してライト・アクセス・コマンドを出力するステップを含む、請求項4に記載の方法。
- 前記プロセッサにより、前記リード・エラー信号に応答して、割り付けられていないメモリ、または初期化されていないメモリにアクセスしている1つのソフトウェアを識別するステップ(T7)を含む、請求項4または5に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP13306599.5A EP2876557B1 (en) | 2013-11-22 | 2013-11-22 | Detecting a read access to unallocated or uninitialized memory |
EP13306599.5 | 2013-11-22 | ||
PCT/EP2014/075087 WO2015075105A2 (en) | 2013-11-22 | 2014-11-20 | Detecting a read access to unallocated or uninitialized memory |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016537730A true JP2016537730A (ja) | 2016-12-01 |
Family
ID=49766004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016533024A Pending JP2016537730A (ja) | 2013-11-22 | 2014-11-20 | 割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出すること |
Country Status (5)
Country | Link |
---|---|
US (1) | US20160292032A1 (ja) |
EP (1) | EP2876557B1 (ja) |
JP (1) | JP2016537730A (ja) |
TW (1) | TW201535106A (ja) |
WO (1) | WO2015075105A2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9733870B2 (en) * | 2015-05-06 | 2017-08-15 | International Business Machines Corporation | Error vector readout from a memory device |
US9734008B2 (en) * | 2015-05-06 | 2017-08-15 | International Business Machines Corporation | Error vector readout from a memory device |
US10976961B2 (en) | 2018-12-20 | 2021-04-13 | Intel Corporation | Device, system and method to detect an uninitialized memory read |
CN113254321B (zh) * | 2021-06-07 | 2023-01-24 | 上海恒为智能科技有限公司 | 一种评估处理器内存访问性能的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04182836A (ja) * | 1990-11-19 | 1992-06-30 | Hitachi Ltd | ブログラムの不定値参照検出方式 |
JPH06214814A (ja) * | 1993-01-20 | 1994-08-05 | Oki Electric Ind Co Ltd | イリーガルメモリアクセス検出方式 |
JP2002132528A (ja) * | 2000-10-26 | 2002-05-10 | Nec Corp | マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613063A (en) * | 1994-07-01 | 1997-03-18 | Digital Equipment Corporation | Method and apparatus for checking validity of memory operations |
US5581696A (en) * | 1995-05-09 | 1996-12-03 | Parasoft Corporation | Method using a computer for automatically instrumenting a computer program for dynamic debugging |
US6088736A (en) * | 1995-07-19 | 2000-07-11 | Fujitsu Network Communications, Inc. | Joint flow control mechanism in a telecommunications network |
US5841795A (en) * | 1996-02-12 | 1998-11-24 | Compaq Computer Corporation | Error correction codes |
US6634020B1 (en) * | 2000-03-24 | 2003-10-14 | International Business Machines Corporation | Uninitialized memory watch |
US7058877B2 (en) * | 2002-05-14 | 2006-06-06 | Sun Microsystems, Inc. | Method and apparatus for providing error correction within a register file of a CPU |
GB2455212B (en) * | 2008-01-30 | 2012-03-21 | Ibm | Method for identifying address faults of CPU status register files during read and write accesses |
US8001432B2 (en) * | 2008-11-20 | 2011-08-16 | Lsi Corporation | Uninitialized memory detection using error correction codes and built-in self test |
US9317408B2 (en) * | 2011-12-15 | 2016-04-19 | The Mathworks, Inc. | System and method for systematic error injection in generated code |
-
2013
- 2013-11-22 EP EP13306599.5A patent/EP2876557B1/en not_active Not-in-force
-
2014
- 2014-10-27 TW TW103137011A patent/TW201535106A/zh unknown
- 2014-11-20 US US15/038,243 patent/US20160292032A1/en not_active Abandoned
- 2014-11-20 WO PCT/EP2014/075087 patent/WO2015075105A2/en active Application Filing
- 2014-11-20 JP JP2016533024A patent/JP2016537730A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04182836A (ja) * | 1990-11-19 | 1992-06-30 | Hitachi Ltd | ブログラムの不定値参照検出方式 |
JPH06214814A (ja) * | 1993-01-20 | 1994-08-05 | Oki Electric Ind Co Ltd | イリーガルメモリアクセス検出方式 |
JP2002132528A (ja) * | 2000-10-26 | 2002-05-10 | Nec Corp | マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2876557B1 (en) | 2016-06-01 |
US20160292032A1 (en) | 2016-10-06 |
TW201535106A (zh) | 2015-09-16 |
WO2015075105A2 (en) | 2015-05-28 |
EP2876557A1 (en) | 2015-05-27 |
WO2015075105A3 (en) | 2015-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318311B2 (en) | Memory allocation techniques at partially-offloaded virtualization managers | |
US10353831B2 (en) | Trusted launch of secure enclaves in virtualized environments | |
US10853071B2 (en) | Simulation of exclusive instructions | |
JP6297715B2 (ja) | コンピューティングデバイスの初期化トレース | |
CN101375287A (zh) | 用于提供安全固件的技术 | |
US11544223B2 (en) | Write operation verification method and apparatus | |
US10067710B2 (en) | Detecting buffer overflows in general-purpose GPU applications | |
JP7058302B2 (ja) | アプリケーション・プログラムのための脆弱性により起動されるハイブリッド・テストシステム | |
JP5778296B2 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
JP2015530662A5 (ja) | ||
JP2016537730A (ja) | 割り付けられていないメモリ、または初期化されていないメモリに対するリード・アクセスを検出すること | |
US9037788B2 (en) | Validating persistent memory content for processor main memory | |
US7318218B2 (en) | System and method for processor thread for software debugging | |
US20150339145A1 (en) | Virtual machine service system and virtual machine service providing method thereof | |
WO2018010794A1 (en) | Device and method for preventing memory data leakage | |
US9384015B2 (en) | Techniques for dynamically redirecting device driver operations to user space | |
US7350109B2 (en) | System and method for testing a memory using DMA | |
US20170132025A1 (en) | Target process injection prior to execution of marker libraries | |
JP7236811B2 (ja) | 情報処理装置 | |
JP2011164972A (ja) | プログラムローダ、データ処理装置、プログラムロード方法及びロードプログラム | |
JP5565187B2 (ja) | 情報処理装置および割込み制御プログラム | |
JP5920509B2 (ja) | コントローラの制御プログラム、およびコントローラの制御方法 | |
US11768967B2 (en) | Address verification for direct memory access requests | |
JP2007272303A (ja) | メモリ破壊検出機能付きシミュレータ | |
JP2017208058A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160705 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170615 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20180206 |