(57)【要約】【課題】メモリにデータを記憶するメモリ装置で、メモリの割当て処理や解放処理を効率化する。【解決手段】メモリ使用状況管理手段２が、メモリ１の記憶領域が分割されて生成される複数のブロック＃１〜＃Ｘのそれぞれがデータを記憶するために使用中であるか否かを管理する。データ記憶制御手段３が、記憶対象となるデータが発生した場合に、複数である所定数の連続したブロックの中で当該データを記憶するために使用するブロックを特定するパターンである使用ブロック特定パターンを生成し、メモリ使用状況管理手段２の管理内容に基づいて当該生成した使用ブロック特定パターンのデータを記憶することが可能なメモリ１の記憶領域の位置を検出し、当該検出したメモリ１の記憶領域の位置に当該データを記憶する。【選択図】　　　図１
2004021544.tif 000002
【特許請求の範囲】
【請求項１】
メモリにデータを記憶するメモリ装置において、
メモリの記憶領域が分割されて生成される複数のブロックのそれぞれがデータを記憶するために使用中であるか否かを管理するメモリ使用状況管理手段と、
記憶対象となるデータが発生した場合に、複数である所定数の連続したブロックの中で当該データを記憶するために使用するブロックを特定するパターンである使用ブロック特定パターンを生成し、メモリ使用状況管理手段の管理内容に基づいて当該生成した使用ブロック特定パターンのデータを記憶することが可能なメモリの記憶領域の位置を検出し、当該検出したメモリの記憶領域の位置に当該データを記憶するデータ記憶制御手段と、
を備えたことを特徴とするメモリ装置。
【請求項２】
請求項１に記載のメモリ装置において、
データ記憶制御手段は、メモリに記憶されたデータを消去する場合に、当該データの使用ブロック特定パターンに基づいて当該データを記憶するために使用されたブロックを特定し、当該特定したブロックから当該データを消去する、
ことを特徴とするメモリ装置。
【請求項３】
請求項１又は請求項２に記載のメモリ装置において、
メモリ使用状況管理手段は、複数である所定数の連続したブロックから構成されるパターンである使用状況管理パターンを単位としてそれぞれのブロックがデータを記憶するために使用中であるか否かを管理するレジスタであるメモリ使用状況確認レジスタを用いて構成され、
データ記憶制御手段は、メモリに記憶されたデータの使用ブロック特定パターンと、当該データが記憶されたブロックのアドレスと、当該データが記憶されたブロックを含むメモリ使用状況確認レジスタの使用状況管理パターンのアドレスとを対応付けて管理するレジスタであるメモリ制御レジスタを用いて構成された、
ことを特徴とするメモリ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリにデータを記憶するメモリ装置に関し、特に、メモリの割当て処理や解放処理を効率化するメモリ装置に関する。
【０００２】
【従来の技術】
例えばコンピュータなどの種々な装置では、メモリを備えて、当該メモリにデータを記憶することや、当該メモリに記憶されたデータを消去することなどが行われる。
従来技術の例として、特開昭６１−２９０５５１号公報に記載の「オペレーティングシステム」では、主記憶装置と補助記憶装置とから構成される仮想記憶装置を有する計算機システムで動作して、特定のプログラムで発生した割り込みに対してのみ主記憶枠を割り当てることが行われる。このようなメモリ割当て方法では、メモリ割当てを許可するプロセスをあらかじめ登録しておき、当該プロセスからの要求にはメモリを割り当てることが行われ、このように、メモリが使用用途と対になっており、メモリ割当ての使用用途が制限されている。
【０００３】
また、従来技術の例として、特開平６−３０９１９７号公報に記載の「記憶領域管理方式」や、特開平１０−４９４３３号公報に記載の「メモリ管理方式」や、特開２０００−１８１７８５号公報に記載の「メモリ管理方式」では、メモリを複数の領域（例えば、ブロック）に分割して、各領域毎に使用中であるか否かを管理することなどが行われる。なお、後述する本発明と比較すると、これらの文献では、本発明に言う使用ブロック特定パターンが用いられない点などで、本発明の構成とは相違する。
【０００４】
また、従来技術の例として、特開平６−２１４８７４号公報に記載の「メモリ管理方式」や、特開２００１−２１６１９２号公報に記載の「メモリ管理装置及び方法」や、特開２００１−３５６９２０号公報に記載の「メモリ割当て方式」や、特許第３１８３９０１号の「メモリ管理方法」がある。
【０００５】
【発明が解決しようとする課題】
しかしながら、メモリの割当て処理やメモリの解放処理については、未だ、効率化を図るために新たな技術が開発されることが望まれている。
本発明は、このような従来の事情に鑑みなされたもので、メモリにデータを記憶するに際して、メモリの割当て処理を効率化することができるメモリ装置を提供することを目的とする。また、本発明は、メモリからデータを消去するに際して、メモリの解放処理を効率化することができるメモリ装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明に係るメモリ装置では、次のようにして、メモリにデータを記憶する。
すなわち、メモリ使用状況管理手段が、メモリの記憶領域が分割されて生成される複数のブロックのそれぞれがデータを記憶するために使用中であるか否かを管理する。そして、データ記憶制御手段が、記憶対象となるデータが発生した場合に、複数である所定数の連続したブロックの中で当該データを記憶するために使用するブロックを特定するパターンである使用ブロック特定パターンを生成し、メモリ使用状況管理手段の管理内容に基づいて当該生成した使用ブロック特定パターンのデータを記憶することが可能なメモリの記憶領域の位置を検出し、当該検出したメモリの記憶領域の位置に当該データを記憶する。
【０００７】
従って、それぞれのブロックが使用中であるか否かが管理されて、記憶対象となるデータが発生した場合には、当該データに関する使用ブロック特定パターンが生成され、当該使用ブロック特定パターンのデータを記憶することが可能な記憶領域の位置が検出され、当該検出された位置に当該データが記憶される構成であり、このように記憶対象となるデータを使用ブロック特定パターンとして扱って記憶可能な記憶領域の位置を検索する構成により、記憶対象となるデータを記憶するためのメモリの記憶領域の位置を割り当てる処理（メモリの割当て処理）を効率化することができる。
【０００８】
ここで、メモリとしては、種々なものが用いられてもよく、例えばコンピュータなどの内部に備えられるメインメモリなどの記憶装置（内部記憶装置）ばかりでなく、例えばコンピュータなどの外部に備えられるハードディスクなどの記憶装置（外部記憶装置）が用いられてもよい。
【０００９】
また、メモリの記憶領域を分割することにより生成される複数のブロックの数や大きさとしては、種々なものが用いられてもよい。
また、メモリ使用状況管理手段は、例えばそれぞれのブロック毎にデータを記憶するために使用中であるか否かを管理する。なお、通常は、データを記憶しているブロックは使用中であるとみなされ、データを記憶していないブロックは不使用中（使用中ではない）とみなされる。
また、メモリ使用状況管理手段は、例えばレジスタやテーブルなどを用いて構成することができる。
【００１０】
また、記憶対象となるデータとしては、種々なデータが用いられてもよい。
また、使用ブロック特定パターンを構成する連続したブロックの数（複数である所定数）としては、種々な数が用いられてもよい。なお、連続したブロックとしては、例えばメモリアドレスが連続したブロックが用いられる。
また、メモリの記憶領域の位置としては、例えば当該メモリのアドレスにより特定される。
【００１１】
また、メモリ使用状況管理手段の管理内容に基づいて、生成した使用ブロック特定パターンのデータを記憶することが可能なメモリの記憶領域の位置を検出する仕方としては、種々な仕方が用いられてもよく、例えば、生成した使用ブロック特定パターンを当てはめた場合に当該使用ブロック特定パターン中でデータを記憶するために使用するブロックの位置が不使用中であるメモリの記憶領域の位置を検出する仕方を用いることができる。一例として、記憶対象となるデータを記憶するために使用するブロックと不使用の（使用しない）ブロックとを特定する使用ブロック特定パターンと、メモリの記憶領域に関して現在においてデータを記憶するために使用中であるブロックと不使用中であるブロックとを特定するパターン（ここで、メモリ使用状況パターンと言う）とを比較して、両者のパターン中の使用ブロックが重複しないようなメモリ使用状況パターンの位置を検索し、当該検索したメモリ使用状況パターンの位置に当該使用ブロック特定パターンを当てはめるような仕方を用いることができる。
【００１２】
また、本発明に係るメモリ装置では、次のようにして、メモリからデータを消去する。
すなわち、データ記憶制御手段は、メモリに記憶されたデータを消去する場合に、当該データの使用ブロック特定パターンに基づいて当該データを記憶するために使用されたブロックを特定し、当該特定したブロックから当該データを消去する。
【００１３】
従って、消去対象となるデータを使用ブロック特定パターンとして扱って当該データが記憶されたブロックを特定する構成により、データを記憶するために割り当てられたメモリの記憶領域を解放する処理（メモリの解放処理）を効率化することができる。
【００１４】
また、本発明に係るメモリ装置では、一構成例として、メモリ使用状況管理手段は、複数である所定数の連続したブロックから構成されるパターンである使用状況管理パターンを単位としてそれぞれのブロックがデータを記憶するために使用中であるか否かを管理するレジスタであるメモリ使用状況確認レジスタを用いて構成される。また、データ記憶制御手段は、メモリに記憶されたデータの使用ブロック特定パターンと、当該データが記憶されたブロックのアドレスと、当該データが記憶されたブロックを含むメモリ使用状況確認レジスタの使用状況管理パターンのアドレスとを対応付けて管理するレジスタであるメモリ制御レジスタを用いて構成される。
【００１５】
この構成において、メモリにデータを記憶する場合には、例えば、メモリ使用状況確認レジスタを用いて、生成した使用ブロック特定パターンと使用状況管理パターンとを比較して両者のパターンの使用ブロックが重複しないような使用状況管理パターンを検索し、当該検索した使用状況管理パターンに当該使用ブロック特定パターンを当てはめる。なお、使用ブロックが重複しない使用状況管理パターンが見つからないような場合には、例えば使用ブロック特定パターンを変更することが行われてもよい。また、最終的に生成した使用ブロック特定パターンと、これを当てはめた使用状況管理パターンのアドレスと、データを記憶したメモリのブロックのアドレスとを対応付けてメモリ制御レジスタに記憶する。
【００１６】
また、この構成において、メモリからデータを消去する場合には、例えば、メモリ制御レジスタを用いて、上記のようにして当てはめた使用ブロック特定パターンのデータが記憶されたメモリのブロックを特定し、当該特定したブロックに記憶されたデータを消去する。
【００１７】
ここで、使用状況管理パターンを構成するブロックの数（複数である所定数）としては、種々な数が用いられてもよく、例えば使用ブロック特定パターンを構成するブロックの数と同数や倍数を用いることができる。
また、メモリ制御レジスタに記憶されるブロックのアドレスとしては、例えば使用ブロック特定パターンのデータが記憶された全てのブロックのアドレスが記憶されてもよいが、例えば当該全てのブロックの中の一部のブロックのアドレスのみを記憶すると記憶する情報量が少なくなって好ましく、一例として、当該全てのブロックの中の先頭ブロックのアドレスのみを記憶すると好ましい。
【００１８】
【発明の実施の形態】
本発明に係る実施例を図面を参照して説明する。
まず、本実施例に係るメモリ装置を説明する。
図１には、本実施例に係るメモリ装置の構成例として、メモリ装置に備えられたメモリ１と、メモリ使用状況確認レジスタ２と、メモリ制御レジスタ３とを示してある。なお、メモリ使用状況確認レジスタ２やメモリ制御レジスタ３は、例えばメモリ１の記憶領域の一部を用いて構成されてもよく、或いは、他の記憶装置などを用いて構成されてもよい。
【００１９】
メモリ１としては、一般的なメモリが用いられている。
本実施例では、メモリ１の記憶領域がＸ個のブロック（Ｂｌｏｃｋ）＃１〜＃Ｘに分割されており、総ブロック数がＸ［ｂｌｏｃｋ］となっている。なお、メモリ１は、任意のサイズに細分化されてもよい。
本実施例では、単位ブロック当たりの総ワード数［ｗｏｒｄ／ｂｌｏｃｋ］がＹ［ｗｏｒｄ／ｂｌｏｃｋ］となっており、単位ワード当たりの総ビット数［ｂｉｔ／ｗｏｒｄ］がＡ［ｂｉｔ／ｗｏｒｄ］となっている。
そして、本実施例のメモリ１のサイズは、Ａ［ｂｉｔ／ｗｏｒｄ］×Ｙ［ｗｏｒｄ／ｂｌｏｃｋ］×Ｘ［ｂｌｏｃｋ］＝Ａ×Ｙ×Ｘ［ｂｉｔ］となる。
【００２０】
メモリ使用状況確認レジスタ２は、メモリ１を構成する各ブロック＃１〜＃Ｘの使用状況を確認するためのレジスタである。
本実施例のメモリ使用状況確認レジスタ２は、Ａ［ｂｉｔ／ｗｏｒｄ］×Ｂ［ｗｏｒｄ］＝Ａ×Ｂ［ｂｉｔ］のサイズを有している。
本実施例のメモリ使用状況確認レジスタ２では、単位ワード毎にマスクパターン（Ｍａｓｋ＃１、Ｍａｓｋ＃２、・・・）が構成されており、各単位ワードを構成するＡ個のビットはＡ個のブロックに対応している。
【００２１】
具体的には、本実施例のメモリ使用状況確認レジスタ２のビット＃ｚ（ｚ＝１〜Ｘ）はメモリ１のブロック＃ｚと対応しており、当該ブロック＃ｚの使用状況を識別する。本実施例では、メモリ使用状況確認レジスタのビット＃ｚが例えば“１”値に設定されている場合には当該ビット＃ｚに対応したメモリ１のブロック＃ｚにデータが記憶されていて使用状態であることを示し、一方、メモリ使用状況確認レジスタ２のビット＃ｚが例えば“０”値にクリアされている場合には当該ビット＃ｚに対応したメモリ１のブロック＃ｚにデータが記憶されていなくて不使用状態（解放状態）であることを示す。
【００２２】
メモリ制御レジスタ３は、任意のサイズのデータに対してメモリ１を割り当てるための制御レジスタである。
本実施例のメモリ制御レジスタ３では、一回のメモリ割当てで割り当てることができる最大の総ブロック数がｍ［ｂｌｏｃｋ］であり、メモリ割当てを行うことができるデータの最大の総数がｎ［ｂｌｏｃｋ］である。
【００２３】
メモリ制御レジスタ３では、メモリ１に記憶される各データに関する情報が当該各データに対応したメモリ割当て情報部Ｃｏｎｔ＃ｋ（ｋ＝１〜ｎ）により保持される。それぞれのメモリ割当て情報部Ｃｏｎｔ＃ｋでは、メモリアドレス（Ｍｅｍｏｒｙ　Ａｄｄｒｅｓｓ）１１と、マスクアドレス（Ｍａｓｋ　Ａｄｄｒｅｓｓ）１２と、マスクデータ１３とが対応付けられて記憶される。
【００２４】
メモリアドレス１１は、データを記憶するために割り当てたメモリ１の先頭アドレスであり、本実施例では、データを記憶するために割り当てた先頭のブロック＃ｉ（ｉ＝１〜Ｘ）のアドレスが用いられる。
マスクアドレス１２は、データを記憶するために割り当てたメモリ１の記憶領域に対応したメモリ使用状況確認レジスタ２のアドレスであり、本実施例では、単位ワード毎のマスクパターン（Ｍａｓｋ＃１、Ｍａｓｋ＃２、・・・）のアドレスが用いられる。
マスクデータ１３は、マスクアドレス１２に対応したマスクパターンの先頭ブロックから割当てを行うサイズ数分の複数のブロックの中でいずれのブロックにデータを記憶するかを示すマスクパターンである。
【００２５】
なお、Ｘ［ｂｌｏｃｋ］や、Ａ［ｂｉｔ／ｗｏｒｄ］や、Ｙ［ｗｏｒｄ／ｂｌｏｃｋ］や、Ｂ［ｗｏｒｄ］や、ｍ［ｂｌｏｃｋ］や、ｎ［ｂｌｏｃｋ］の値としては、任意に設定することが可能であり、例えば、それぞれ複数値が用いられる。
【００２６】
次に、第１実施例として、本実施例に係るメモリ装置により行われるメモリ割当て処理を説明する。
図２には、メモリ１に２つのデータ（それぞれデータ１、データ２と言う）を記憶した場合において、メモリ１とメモリ使用状況確認レジスタ２とメモリ制御レジスタ３の状況の一例を示してある。なお、同図の例では、Ａ＝８［ｂｉｔ／ｗｏｒｄ］、ｍ＝２×Ａ［ｂｌｏｃｋ］＝１６［ｂｌｏｃｋ］としてある。
【００２７】
メモリ１では、ブロック＃１からブロック＃１０までの１０個のブロックにデータ１が記憶されており、ブロック＃１１からブロック＃１３までの３個のブロックにデータ２が記憶されている。
【００２８】
メモリ使用状況確認レジスタ２では、データ１が記憶されたブロック＃１〜＃１０に対応したビット＃１からビット＃１０までの１０個のビットが使用状態であるとして設定され、また、データ２が記憶されたブロック＃１１〜＃１３に対応したビット＃１１からビット＃１３までの３個のビットが使用状態であるとして設定され、また、他のビット（ビット＃１４以降）については解放状態であることが示される。この場合、メモリ使用状況確認レジスタ２では、マスクパターンＭａｓｋ＃１を構成するビットは全て使用状態を示し、マスクパターンＭａｓｋ＃２を構成するビットの中の初めから５個のビットが使用状態を示す。
【００２９】
メモリ制御レジスタ３では、データ１に関する情報がメモリ割当て情報部Ｃｏｎｔ＃１に記憶され、データ２に関する情報がメモリ割当て情報部Ｃｏｎｔ＃２に記憶される。
メモリ割当て情報部Ｃｏｎｔ＃１では、メモリアドレス１１としてブロック＃１のアドレス（“ｂｌｏｃｋ＃１”）が記憶され、マスクアドレス１２としてマスクパターンＭａｓｋ＃１に対応したマスクアドレス（“Ｍａｓｋ＃１”）が記憶され、マスクデータ１３として連続した１６個のブロックの中で先頭のブロックから連続した１０個のブロックが使用状態となるマスクパターンが記憶される。
【００３０】
また、メモリ割当て情報部Ｃｏｎｔ＃２では、メモリアドレス１１としてブロック＃１１のアドレス（“ｂｌｏｃｋ＃１１”）が記憶され、マスクアドレス１２としてマスクパターンＭａｓｋ＃２に対応したマスクアドレス（“Ｍａｓｋ＃２”）が記憶され、マスクデータ１３として連続した１６個のブロックの中で先頭から３番目のブロックから連続した３個のブロックが使用状態となるマスクパターンが記憶される。
なお、他のメモリ割当て情報部（Ｃｏｎｔ＃３以降）については、メモリ１に対するデータの割当てに関する情報は記憶されず、例えば初期的に設定される初期値（ｉｎｉｔｉａｌ）の情報が記憶される。
【００３１】
次に、図３を参照して、本例のメモリ装置により行われるメモリ割当ての処理の手順の一例を示す。
本例のメモリ装置では、記憶対象となるデータが発生した場合に、まず、メモリ制御レジスタ３のメモリアドレス１１が初期値であるメモリ割当て情報部Ｃｏｎｔ＃ｋを選択する（ステップＳ１）。
【００３２】
次に、メモリ装置では、割当てを行うメモリサイズに合わせたサイズを有するマスクパターンを作成する（ステップＳ２）。ここで、割当てを行うメモリサイズとしては、例えばメモリ制御レジスタ３のマスクデータ１３と同じサイズや、或いは、メモリ使用状況確認レジスタ２のマスクパターンＭａｓｋ＃ｊ（ｊ＝１〜Ｂ）と同じサイズなどが用いられる。また、作成されるマスクパターンでは、当該マスクパターンを構成する複数のブロックの中で記憶対象となるデータを記憶するために使用する１又は連続した複数のブロックが特定される。
【００３３】
次いで、メモリ装置では、作成したマスクパターンとメモリ使用状況確認レジスタ２のマスクパターンとを比較して、各々のマスクパターン中の使用ブロックが互いに重ならないようなメモリ使用状況確認レジスタ２の位置（マスクアドレス）を検出して、当該検出した位置に対応したメモリ１のブロックに当該作成したマスクパターンのデータを記憶する（ステップＳ３）。
そして、メモリ装置では、検出したメモリ使用状況確認レジスタ２のマスクアドレス（“Ｍａｓｋ＃ｊ”）、作成したマスクパターン、及び当該マスクパターンのデータを記憶するために使用するメモリ１の先頭ブロックのアドレスを、メモリ制御レジスタ３の選択したメモリ割当て情報部Ｃｏｎｔ＃ｋのマスクアドレス１２、マスクデータ１３、及びメモリアドレス１１にそれぞれ設定して保持する（ステップＳ４）。
【００３４】
このようにしてメモリ制御レジスタ３に設定されるメモリアドレス１１は、記憶対象となるデータを記憶するために動的に割り当てられたメモリ１の先頭ブロックのアドレスとなる。また、メモリ制御レジスタ３のマスクデータ１３として作成したマスクパターンを設定して管理することにより、データを記憶するブロックとして設定したメモリ１のブロックに記憶されるデータを保護することができる。
【００３５】
次に、本例のメモリ装置により行われるメモリ割当ての処理の具体的な一例を示す。なお、本例では、メモリ構成がＡ＝１０［ｂｉｔ／ｗｏｒｄ］、Ｘ＝１００［ｂｌｏｃｋ］、Ｙ＝１０［ｗｏｒｄ／ｂｌｏｃｋ］であるとする。この場合、単位ブロックのビット数は１００［ｂ　ｉｔ／ｂｌｏｃｋ］となる。
【００３６】
また、本例では、記憶対象となるデータのマスクパターンを作成して当該作成したマスクパターンとメモリ使用状況確認レジスタ２のマスクパターンとを比較する処理の一例として、作成したマスクパターンとメモリ使用状況確認レジスタ２のマスクパターンとで使用ブロックが重複しなくなるまで、予め定められた規則に従って記憶対象となるデータのマスクパターンを順次作成し直していくような処理を行う。
【００３７】
また、本例では、記憶対象となるデータのマスクパターンとして１０桁のビット（１０個のブロック）のパターンである“ｘｘｘｘｘｘｘｘｘｘ”を用いる。ここで、ｘ＝１又はｘ＝０であり、ｘ＝１のときは当該ビットに対応するブロックが使用状態（Ｕｓｅ）であることを示し、ｘ＝０のときは当該ビットに対応するブロックが不使用状態（Ｕｎｕｓｅ）であることを示す。
【００３８】
例えば、割り当てたいデータのサイズが１９２［ｂｉｔ］であった場合、割り当てるブロックの数は２［ｂｌｏｃｋ］となり、本例では、まず、“１１００００００００”というマスクパターンを作成する。
ここで、図４（ａ）にはメモリ使用状況確認レジスタ２の状態の一例を示してあり、メモリ割当て前のメモリ使用状況確認レジスタ２の状態が同図（ａ）に示されるものであるとする。同図（ａ）の例では、１０行のマスクパターン＃１〜＃１０について、メモリ１を構成するそれぞれのブロック＃１〜＃１００の使用状態が設定されている。
【００３９】
次に、作成したマスクパターン“１１００００００００”とメモリ使用状況確認レジスタ２のマスクパターン＃１“１１１１１１１１１０”とを比較する。すると、これらのパターンの使用ブロック（“１”の位置）は重複部分を有することから、作成したマスクパターンを１ビット右へシフトさせて“０１１０００００００”というマスクパターンを作成する。すると、これらのパターンの使用ブロック（“１”の位置）は重複部分を有することから、作成したマスクパターンを１ビット右へシフトさせて“００１１００００００”というマスクパターンを作成する。
【００４０】
このように作成したマスクパターン中の連続した“１”の位置を右へシフトさせてメモリ使用状況確認レジスタ２のマスクパターン＃１と比較していくと、当該マスクパターン＃１との間で使用ブロックの重複部分をなくすことができないことが検出される。
次に、メモリ使用状況確認レジスタ２のマスクパターン＃２は“１１１１１１１１１１”であることから、上記したマスクパターン＃１の場合と同様に、マスクパターン＃２と作成したマスクパターンとの間で使用ブロックの重複部分をなくすことができないことが検出される。
【００４１】
次に、作成したマスクパターン“１１００００００００”とメモリ使用状況確認レジスタ２のマスクパターン＃３“１１００００００００”とを比較する。すると、これらのパターンの使用ブロック（“１”の位置）は重複部分を有することから、作成したマスクパターンを１ビット右へシフトさせて“０１１０００００００”というマスクパターンを作成する。すると、これらのパターンの使用ブロック（“１”の位置）は重複部分を有することから、作成したマスクパターンを１ビット右へシフトさせて“００１１００００００”というマスクパターンを作成する。
【００４２】
すると、これらのパターンの使用ブロック（“１”の位置）は重複部分を有しないことから、作成したマスクパターン“００１１００００００”をメモリ使用状況確認レジスタ２のマスクパターン＃３に対応したメモリ１のブロック位置に記憶することが可能であることが検出され、当該作成したマスクパターンのデータを当該ブロック位置に記憶することを行う。
【００４３】
また、メモリ制御レジスタ３では、このようにして記憶するデータに関するメモリ割当て情報部Ｃｏｎｔ＃ｋを設けて、例えばメモリアドレス１１である“＃２３”と、マスクアドレス１２である“＃３”と、マスクデータ１３である“００１１００００００”とを対応付けて記憶する。
なお、図４（ｂ）には、このようにしてデータを記憶した後におけるメモリ使用状況確認レジスタ２の状態の一例を示してあり、上記図４（ａ）に示した状態と比較して、マスクパターン＃３が“１１１１００００００”となっている。
【００４４】
次に、第２実施例として、本実施例に係るメモリ装置により行われるメモリ解放処理を説明する。
図５には、上記図２を用いて示したデータの記憶処理によりメモリ１に記憶したデータ１を当該メモリ１から消去した場合において、メモリ１とメモリ使用状況確認レジスタ２とメモリ制御レジスタ３の状況の一例を示してある。
【００４５】
メモリ１では、データ１が記憶されていた１０個のブロック＃１〜＃１０が解放されており、メモリ使用状況確認レジスタ２ではデータ１が記憶されていた１０個のブロック＃１〜＃１０に対応した１０個のビット＃１〜＃１０がクリアされており、メモリ制御レジスタ３ではデータ１に割り当てられたメモリ割当て情報部Ｃｏｎｔ＃１の情報がクリアされて初期値となっている。
【００４６】
次に、図６を参照して、本例のメモリ装置により行われるメモリ解放の処理の手順の一例を示す。
本例のメモリ装置では、消去対象となるデータが発生した場合に、まず、メモリ制御レジスタ３に記憶されたメモリアドレス１１の中から解放するメモリアドレスを選択する（ステップＳ１１）。ここで、本例では、メモリ制御レジスタ３に設定された当該データに関するメモリ割当て情報部Ｃｏｎｔ＃ｋのメモリアドレス１１が選択される。
【００４７】
次に、メモリ装置では、選択したメモリアドレス１１に対応付けられてメモリ制御レジスタ３に記憶されているマスクアドレス１２により示されるメモリ使用状況確認レジスタ２のアドレス（マスクパターン）を選択する（ステップＳ１２）。
次いで、メモリ装置では、選択したメモリアドレス１１に対応付けられてメモリ制御レジスタ３に記憶されているマスクパターンを用いて、当該マスクパターンのデータを、選択したメモリ使用状況確認レジスタ２のアドレスに対応したメモリ１のブロックから消去する（ステップＳ１３）。
【００４８】
そして、メモリ装置では、選択したメモリアドレス１１に係るメモリ制御レジスタ３のメモリ割当て情報部Ｃｏｎｔ＃ｋの情報として初期値を設定する（ステップＳ１４）。
このようにして、データが記憶されていたメモリ１のブロックを解放することができ、解放したブロックを再び利用することができる。
【００４９】
次に、本例のメモリ装置により行われるメモリ解放の処理の具体的な一例を示す。
本例では、メモリ使用状況確認レジスタ２が上記図４（ｂ）に示した状態であるとし、マスクパターン＃３から“００１１００００００”というパターンのデータを解放する場合を示す。
この場合、解放するデータに関してメモリ制御レジスタ３のメモリ割当て情報部Ｃｏｎｔ＃ｋにより管理されている情報では、メモリアドレス１１が“＃２３”であり、マスクアドレス１２が“＃３”であり、マスクデータ１３が“００１１００００００”である。
【００５０】
これに基づいて、メモリ使用状況確認レジスタ２のマスクアドレス“＃３”のマスクパターン“１１１１００００００”に対して解放するマスクパターン“００１１００００００”を排他的論理和すると、メモリ使用状況確認レジスタ２の当該マスクアドレス“＃３”のマスクパターンは“１１００００００００”となって、２個のブロック＃２３、＃２４が解放される。なお、当該解放後におけるメモリ使用状況確認レジスタ２は上記図４（ａ）に示した状態となる。また、解放したデータに関するメモリ制御レジスタ３の管理情報（メモリ割当て情報部Ｃｏｎｔ＃ｋの情報）をクリアして初期値とする。
【００５１】
以上のように、本実施例に係るメモリ装置では、記憶領域が任意のブロックに細分化されたメモリ１と、当該メモリ１を構成する各ブロックの使用状況を示すメモリ使用状況確認レジスタ２と、当該メモリ使用状況確認レジスタ２を制御するメモリ制御レジスタ３とを用いて構成されている。
そして、本実施例に係るメモリ装置では、動的なメモリ割当て方式を用いており、具体的には、割り当てを行うメモリサイズに基づいてマスクパターンを生成し、メモリ使用状況確認レジスタ２とメモリ制御レジスタ３を用いて、当該生成したマスクパターンをメモリ１のいずれかの位置に割り当てる。
また、本実施例に係るメモリ装置では、動的なメモリ割当て方式に対応したメモリ解放方式を用いており、具体的には、任意のサイズのデータに割り当てられたメモリ１の領域（１又は複数のブロック）を、メモリ制御レジスタ３に記憶しているマスクパターンを用いて解放する。
【００５２】
このように、本実施例に係るメモリ装置では、メモリ１を任意のサイズのブロックに分割して管理し、メモリ１に割り当てようとするデータに関するマスクパターンと割当て先となるメモリ１の空きに関するマスクパターンとを比較してメモリ割当てを行い、具体的には、記憶対象となる任意のサイズのデータに対して記憶に使用するブロックと使用しないブロックとを考慮したパターン（マスクパターン）を生成し、当該生成したマスクパターンとメモリ１の使用状況を示すマスクパターンとを比較して、両者のマスクパターンの使用ブロックが重ならないようにメモリ割当てを行う。
【００５３】
従って、本実施例に係るメモリ装置では、記憶対象となるデータに関するマスクパターンとメモリ１の使用状況に関するマスクパターンを用いてメモリ割当ての処理が行われることから、例えば比較的簡易なパターンの管理によりメモリ割当てを行うことができ、また、高速に且つ動的にメモリ割当てを行うことができる。
また、本実施例に係るメモリ装置では、メモリ１に記憶したデータに関するマスクパターンを用いてメモリ解放の処理が行われるため、例えば比較的簡易なパターンの管理によりメモリ解放を行うことができ、また、高速にメモリ解放を行うことができる。
【００５４】
ここで、本実施例に係るメモリ装置では、記憶対象となるデータに関して生成されるマスクパターンにより使用ブロック特定パターンが構成されており、メモリ使用状況確認レジスタ２のマスクパターン（Ｍａｓｋ＃ｊ）により使用状況管理パターンが構成されている。
また、本実施例に係るメモリ装置では、メモリ使用状況確認レジスタ２によりメモリ使用状況管理手段が構成されており、メモリ使用状況確認レジスタ２やメモリ制御レジスタ３を用いてメモリ１にデータを記憶する機能やメモリ１からデータを消去する機能によりデータ記憶制御手段が構成されている。
【００５５】
なお、本実施例に係るメモリ装置の特徴点を示しておく。
本実施例に係るメモリ装置では、メモリのマスクパターンを制御する場合に、記憶対象となるデータのマスクパターンを用いてメモリのマスクパターンを制御することが行われる。
【００５６】
ここで、例えば単純にメモリの空きブロックの数と使用ブロックの数のみを管理する方式（以下で、方式Ａと言う）も考えられるが、以下に示すように、この方式Ａでは不具合が生じる。
このような方式Ａでは、例えば、アドレス＃１０〜＃２０、＃３０〜＃４０が使用中である状態（以下で、状態Ａと言う）では、２０ブロック分のデータをメモリに記憶する場合に、２０ブロック分のうちの９ブロック分のデータをアドレス＃２１〜＃２９に記憶し、残りの１１ブロック分のデータをアドレス＃４１〜＃５１に記憶する。このように、記憶対象となる一連のデータが途中で分割されてしまうと、当該データを連続したデータとして扱う処理が煩雑となってしまう。
【００５７】
これに対して、本実施例に係るメモリ装置では、記憶対象となる一連のデータを連続したブロックで記憶するようにメモリの割当てを行うため、当該データを連続したままのデータとして扱う処理が容易に可能となる。
【００５８】
具体的に、Ａ＝１０［ｂｉｔ／ｗｏｒｄ］、Ｘ＝１００［ｂｌｏｃｋ］、Ｙ＝１０［ｗｏｒｄ／ｂｌｏｃｋ］としたメモリ構成であるとする。
例えば、２０ブロック分のデータを割り当てる前における上記状態Ａでは、メモリの空きブロック数が７８［ｂｌｏｃｋ］であり、メモリの使用ブロック数が２２［ｂｌｏｃｋ］である。
【００５９】
この状態Ａにおいて、２０ブロック分のデータを割り当てる場合、単純にメモリの空きブロック数と使用ブロック数のみを管理する方式Ａでは、いずれのブロックが空いているのかを検出することができない。このため、方式Ａでは、更に、例えば、メモリを構成するブロックの中でいずれのブロックが空いているのかという情報や、或いは、以前に割り当てたデータ毎に、割り当てたブロックのアドレス、使用ブロックの数、飛び飛びのブロックに割り当てているのかなどの情報を管理することが必要となると考えられる。
【００６０】
次に、上記した２０ブロック分のデータを割り当てた場合におけるメモリの状態では、空きブロック数が５８［ｂｌｏｃｋ］となり、使用ブロック数が４２［ｂｌｏｃｋ］となる。
この状態において、割り当てた２０ブロック分のデータを解放する場合には、例えば単純にメモリの空きブロック数と使用ブロック数のみを管理した方式Ａでは、どれくらいのサイズのブロックをどこから解放すればよいのかなどを把握することができない。このため、方式Ａでは、更に、例えば、解放対象となるデータを記憶するときに割り当てたブロックのアドレス、割り当てたブロックの数、飛び飛びのブロックが割り当てられたのかなどの情報を管理することが必要となると考えられる。
【００６１】
そこで、上記した方式Ａにおいて不足した情報を補う良好な手段として、本実施例に係るメモリ装置では、連続した複数のブロックの中でデータを記憶するために使用されるブロックと使用されないブロックとを識別するパターンを用いている。なお、本実施例に係るメモリ装置で用いられるパターンにより特定される情報は、必ずしも上記した方式Ａにおいて不足しているとみなした情報と一致しなくともよい。
【００６２】
また、本実施例に係るメモリ装置では、上述のように記憶対象となるデータを連続したブロックに記憶するが、記憶対象となるデータのサイズについては特に限定はない。
具体的には、例えば５ブロック分のデータ（以下で、データＡと言う）をブロック＃１〜＃５に記憶するとともに、他の５ブロック分のデータ（以下で、データＢと言う）をブロック＃６〜＃１０に記憶するようなことは可能である。
【００６３】
また、メモリに記憶されるそれぞれのデータに関する情報を管理するために用いるメモリ制御レジスタのメモリ割当て情報部Ｃｏｎｔ＃ｋの割り当ての仕方としては、特に限定はなく、例えば一方のデータＡに関する情報をメモリ制御レジスタのメモリ割当て情報部Ｃｏｎｔ＃１により管理するとともに他方のデータＢに関する情報をメモリ制御レジスタのメモリ割当て情報部Ｃｏｎｔ＃２により管理することや、或いは、例えば一方のデータＡに関する情報をメモリ制御レジスタのメモリ割当て情報部Ｃｏｎｔ＃５により管理するとともに他方のデータＢに関する情報をメモリ制御レジスタのメモリ割当て情報部Ｃｏｎｔ＃３により管理するなどのように、使用状況に応じてそれぞれのデータに関する情報を任意のメモリ割当て情報部Ｃｏｎｔ＃ｋにより管理するようにしてもよい。
【００６４】
ここで、本発明に係るメモリ装置などの構成としては、必ずしも以上に示したものに限られず、種々な構成が用いられてもよい。なお、本発明は、例えば本発明に係る処理を実行する方法や、このような方法を実現するためのプログラムなどとして提供することも可能である。
また、本発明の適用分野としては、必ずしも以上に示したものに限られず、本発明は、例えばメモリにデータを記憶する種々な装置に適用することが可能なものであり、種々な分野に適用することが可能なものである。
【００６５】
また、本発明に係るメモリ装置などにおいて行われる各種の処理としては、例えばプロセッサやメモリ等を備えたハードウエア資源においてプロセッサがＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）に格納された制御プログラムを実行することにより制御される構成が用いられてもよく、また、例えば当該処理を実行するための各機能手段が独立したハードウエア回路として構成されてもよい。
また、本発明は上記の制御プログラムを格納したフロッピー（登録商標）ディスクやＣＤ（Ｃｏｍｐａｃｔ　Ｄｉｓｃ）−ＲＯＭ等のコンピュータにより読み取り可能な記録媒体や当該プログラム（自体）として把握することもでき、当該制御プログラムを記録媒体からコンピュータに入力してプロセッサに実行させることにより、本発明に係る処理を遂行させることができる。
【００６６】
【発明の効果】
以上説明したように、本発明に係るメモリ装置によると、メモリにデータを記憶するに際して、メモリの記憶領域が分割されて生成される複数のブロックのそれぞれがデータを記憶するために使用中であるか否かを管理し、記憶対象となるデータが発生した場合に、複数である所定数の連続したブロックの中で当該データを記憶するために使用するブロックを特定するパターンである使用ブロック特定パターンを生成し、当該生成した使用ブロック特定パターンのデータを記憶することが可能なメモリの記憶領域の位置を検出し、当該検出したメモリの記憶領域の位置に当該データを記憶するようにしたため、記憶対象となるデータを使用ブロック特定パターンとして扱って記憶可能な記憶領域の位置を検索することから、記憶対象となるデータを記憶するためのメモリの記憶領域の位置を割り当てる処理（メモリの割当て処理）を効率化することができる。
【００６７】
また、本発明に係るメモリ装置によると、メモリに記憶されたデータを消去する場合に、当該データの使用ブロック特定パターンに基づいて当該データを記憶するために使用されたブロックを特定し、当該特定したブロックから当該データを消去するようにしたため、消去対象となるデータを使用ブロック特定パターンとして扱って当該データが記憶されたブロックを特定することから、データを記憶するために割り当てられたメモリの記憶領域の位置を解放する処理（メモリの解放処理）を効率化することができる。
【図面の簡単な説明】
【図１】本発明の実施例に係るメモリ、メモリ使用状況確認レジスタ、及びメモリ制御レジスタの構成例を示す図である。
【図２】本発明の第１実施例に係るメモリ割り当て処理の状況の一例を示す図である。
【図３】本発明の第１実施例に係るメモリ割り当て処理の手順の一例を示すフローチャート図である。
【図４】メモリ使用状況確認レジスタの状態の一例を示す図である。
【図５】本発明の第２実施例に係るメモリ解放処理の状況の一例を示す図である。
【図６】本発明の第２実施例に係るメモリ解放処理の手順の一例を示すフローチャート図である。
【符号の説明】
１・・メモリ、　２・・メモリ使用状況確認レジスタ、
３・・メモリ制御レジスタ、　１１・・メモリアドレス、
１２・・マスクアドレス、　１３・・マスクデータ、
【図１】
2004021544.tif 000003
【図２】
2004021544.tif 000004
【図３】
2004021544.tif 000005
【図４】
2004021544.tif 000006
【図５】
2004021544.tif 000007
【図６】
2004021544.tif 000008