(57)【要約】      （修正有）【課題】記憶装置とメモリの間で直接データをコピーし、メモリとユーザインタフェースの間でデータが転送されたときにデータを再編成すること。【解決手段】システムは、記憶装置１０と、メモリ１２と、ユーザインタフェース３２と、メモリ制御装置２４とを含み、メモリがユーザインタフェースと記憶装置の間で転送された全てのデータをバッファリングするために使用されるデータ記憶システムであって、メモリ制御装置が、記憶装置とメモリの間で直接データをコピーし、メモリとユーザインタフェースの間でデータが転送されたときにデータを再編成する。【選択図】図２
2004240985.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置（１４）と、バッファメモリ（１２）と、ユーザインタフェース（１８）と、メモリ制御装置（４０）とを含み、メモリが、ユーザインタフェースと記憶装置の間で転送された全てのデータをバッファリングするために使用されるデータ記憶システムであって、メモリ制御装置（４０）が、記憶装置（１４）とメモリ（１２）の間で転送するためにデータを直接コピーし、メモリ（１２）とユーザインタフェース（１８）の間でデータが転送されたときにデータを再編成するように構成されていることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ記憶装置に関する。これは、データの変換または圧縮技術を使用することによって生じる可能性のある様々なブロックサイズでデータを記憶することができるシステムに特に適用される。
【背景技術】
【０００２】
データ圧縮技術は、データ記憶システムに二つの主な利益を提供することができる。データ記憶装置の有効容量は、その装置に記憶すべきデータのボリュームが、その記憶システムに転送されるデータおよびその記憶システムから転送されるデータの論理ボリュームより小さいので、その物理的容量を超えて増大することができる。このデータの物理的ボリュームの減少により、記憶装置に出し入れするデータ転送時間が有効に短縮される。記憶装置の動作が比較的低速である場合、例えば磁気ディスクでは、これは特に有利である。
【０００３】
ＰＣＴ特許出願第９１／２００７６号（Ｓｔｏｒａｇｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ｃｏｒｐｏｒａｔｉｏｎ）には、動的にマップされた仮想メモリシステムを使用して、各データレコードがそのデータに必要な物理空間のみを占めるようにデータの記憶を可能にする方法が示されている。圧縮アルゴリズムは、マルチパス記憶ディレクタを使用して、記憶する前にデータを圧縮する。ヌルフィールドは仮想メモリマップにリストされ、物理媒体には記憶されない。
【０００４】
ＰＣＴ特許出願第９１／２００２５号（Ｓｔｏｒａｇｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ｃｏｒｐｏｒａｔｉｏｎ）には、削除されたデータセット空間が直ちに解放されて再利用される、動的にマップされた仮想メモリシステムが示されている。データ記憶サブシステムは、データファイルが仮想ＶＴＯＣからスクラッチされていることを示す指標を受信する。追加のデータセキュリティは、キャッシュおよび記憶装置の両方にある、スクラッチされた記憶ファイルのデータへの無許可アクセスを防止することによって提供される。
【０００５】
ヨーロッパ特許第０６８２３０６号（ＩＢＭ）には、データのブロックサイズとそれらの記憶に利用できる空間とを比較して最も効率的な位置決め配列を決定する、ログ構造ファイルシステムが示されている。これは、圧縮されたデータおよび圧縮されていないデータについて別々のバッファを有し、また小さい方のバイト数を選択的にディスクに書き込む制御装置を有する。
【０００６】
米国特許第４４６７４２１号（ＳｔｏｒａｇｅＴｅｃｈｎｏｌｏｇｙ）には、ホストＣＰＵと（ディスクドライブ）記憶装置との間に挿入され、その記憶媒体がテープドライブと同様に機能し、連続的にデータを書き込むことができるようになされた仮想記憶システムが示されている。このシステムは、固体ＲＡＭ、ＣＣＤメモリ、ディスクドライブ、テープなど、その構成要素が様々な応答時間を有する混合方式記憶システムに適用することができる。
【０００７】
磁気ディスク、光ディスク、磁気テープなど、多くのデータ記憶装置では、データは、データブロックと呼ばれる固定サイズの単位で記憶される。一般的なデータブロックのサイズは５１２バイトである。ホストがデータブロックに与えるアドレスは論理ブロックアドレスと呼ばれ、データブロックを実際に記憶するメモリ領域のアドレスは、物理ブロックと呼ばれる。論理ブロックアドレスおよび物理ブロックアドレスは、通常は同じ順序である（すなわち連続的な論理ブロックアドレスは通常は連続した物理ブロックアドレスに対応する）が、物理アドレス空間は連続的でないこともある。この不連続性は、記憶媒体の物理的特性、例えばその物理アドレス中のある特定のブロックが欠陥の存在によって使用不能になるといったことにより、生じる可能性がある。データブロックの論理アドレスは、アルゴリズムまたはルックアップテーブルを使用してブロックの物理的順序づけの不連続性を規定することにより、物理アドレスに変換することができる。
【０００８】
ただし、データ圧縮を使用するときには、いくつかのデータがその他のデータより圧縮しやすいので、圧縮後のデータサイズが各論理ブロックごとに一定でない可能性がある。したがって、各論理ブロックの圧縮により生じるデータの量は可変となる。
【０００９】
論理ブロックの圧縮によって生じるデータの量は、データの性質および使用する圧縮技術に依存する。圧縮データのブロックの物理的サイズは、データの読取り、修正、および再書込みの際に変化することもある。したがって、固定された論理ブロックのデータの圧縮によって生じる可変量のデータを管理するという問題が生じるので、磁気ディスクなどのランダムブロックアクセス記憶装置の即時制御構造内にデータの圧縮を組み込むことはかなり困難である。
【発明の開示】
【課題を解決するための手段】
【００１０】
したがって本発明は、記憶装置と、メモリと、ユーザインタフェースと、メモリ制御装置とを含み、メモリがユーザインタフェースと記憶装置との間で転送された全てのデータをバッファリングするために使用されるデータ記憶システムであって、メモリ制御装置が、記憶装置とメモリの間でデータを直接コピーし、メモリとユーザインタフェースの間でデータが転送されたときにデータを再編成することを特徴とするシステムを提供する。
【００１１】
メモリは、記憶装置のアクセス機構によって単一動作で好都合にアクセスすることができる記憶装置の一部分である記憶装置の領域と等しい容量を有することができる。
【００１２】
データは、メモリの全容量の単位で記憶装置に転送する、また記憶装置から転送することができる。
【００１３】
データ記憶システムは、それぞれがメモリへのデータ転送またはメモリからのデータ転送を実行することができる、複数の記憶装置を含むことができる。
【００１４】
データ記憶システムは、それそれが記憶装置の独立した領域からデータをロードされることができる、複数のメモリを含むことができる。
【００１５】
記憶装置からメモリへのデータ転送は、ユーザインタフェースでのトランザクションに必要なデータブロックがメモリ中に常駐する可能性が最も高くなるようにようにスケジュールされる。
【００１６】
記憶装置は磁気ディスクにすることができる。
【００１７】
メモリは、ランダムアクセス半導体メモリにすることができる。
【００１８】
データの圧縮および圧縮解除は、メモリとユーザインタフェースの間に組み込むことができる。
【００１９】
記憶装置の領域は、その領域中に永久に常駐する所定数の論理的に連続的なデータブロックと、その領域の利用可能な物理記憶空間に好都合に収容することができるだけの非連続的なデータブロックとを含むことができる。
【００２０】
永久に第一領域に常駐する一つまたは複数の論理的に連続的なデータブロックのサイズが増加する場合には、非連続的なデータブロックを第一領域から第二領域に再配置し、物理記憶空間を生み出すことができる。
【００２１】
非連続的なデータブロックを第一領域から第二領域に再配置し、永久に第二領域に常駐する一つまたは複数の論理的に連続的なデータブロックの物理的サイズの変化によって生じた物理記憶空間を満たすことができる。
【００２２】
領域間での比連続的なデータブロックの再配置は、一つのメモリから別のメモリへのブロックの転送によって実施することができる。
【００２３】
メモリは、領域間で再配置される全てのデータブロックのソースまたは宛先として指定することができる。
【００２４】
メモリ制御装置は、データブロックの再配置のための自由な物理メモリ空間を十分に提供する記憶装置の領域から、データがメモリにロードされることを保証することができる。
【００２５】
ある領域に永久に常駐する所定数の論理的に連続的なデータブロックの論理ページアドレスは、記憶装置内の領域の順次アドレスとの直接の対応を有することができる。
【００２６】
ある領域に永久には常駐しない独立したデータブロックの論理アドレスは、ルックアップテーブルによってある領域内の論理アドレスに変換することができる。
【００２７】
メモリは、一定数のデータワードを含むタイルで独立にアドレス可能にすることができる。
【００２８】
データの各論理ブロックは、リンクしたタイルのグループの連鎖中に記憶することができる。
【００２９】
各連鎖中のグループのサイズおよび数は、データのブロックのサイズに従って選択することができる。
【００３０】
アドレスは、ブロックのタイルの第一グループのメモリ内の物理アドレスを識別するデータの各論理ブロックについて記憶することができる。
【００３１】
メモリ中のタイルの未使用の任意のグループは、いくつかの自由空間連鎖中で互いにリンタすることができる。
【００３２】
主電源で故障が発生した場合に、電力ソースを十分な時間維持し、メモリから記憶装置への全てのデータの転送を可能にするバッテリを備えることもできる。
【００３３】
データの圧縮などによって生じる可能性のある可変ブロックサイズを有するデータの記憶を管理する配列を考案した。こうした配列の一つでは、データブロックを不可分の単位として扱い、メモリ内でデータブロックを再配置および再順序づけすることによって自由メモリの断片化を管理する。これは、異なる位置へのデータブロックの再書込み、および論理アドレスを物理アドレスにマップするルックアップテーブルの更新を必要とする。
【００３４】
この配列の一つの欠点は、データブロックの再配置を繰り返すことにより、データが破壊される機会が増加する可能性があることである。しかし、データブロックは物理メモリの物理的に連続な領域に記憶しなければならないので、再配置は必要である。この配列は、データの再配置を実行するためにメモリ全体への高速アクセスを必要とし、固体ディスクなどの大規模半導体メモリに最も適している。これが必要とする高速ランダムアクセス動作は、磁気ディスクメモリと両立しない。
【００３５】
可変ブロックサイズを有するデータを記憶する別の配列では、データブロックの分散記憶を使用する。データブロックは、物理メモリ中の様々な位置に記憶される個別セグメントに細分される。メモリは、タイルをメモリの基本単位とし、固定数のデータワードを含む、タイルの複数のグループに編成される。複数の様々なグループサイズが存在し、各グループサイズは様々な数のタイルを含む。データブロックは、記憶されるときに、タイルのグループを部分的に使用することによって生じる記憶空間の浪費を最小限に抑えるように、選択されたタイルのグループに分割される。データブロックの記憶に使用される個別セグメントは、各セグメントまたはグループと関連するグループのヘッダに記憶されたリンクポインタによって互いにリンタされる。データブロックの記憶に使用される第一セグメントの物理的位置は、別々に、ただし好ましくは同一媒体上に記憶され、論理ブロックアドレスから物理ブロックアドレスへのルックアップテーブルをコンパイルするために使用することができる。この配列は、複数の所定サイズを有する個別セグメントにメモリを事前フォーマットすることができ、これらは、その後で互いにリンクされ、ブロックが必要とする最小限の量の記憶空間が使用されることを保証することができる。自由データ空間を管理するために、記憶に使用されないセグメントをそれらのグループヘッダを介してリンクし、それにより自由メモリのセグメントの連鎖を与える。この配列は、各ブロックアクセスごとにメモリ装置への多重ランダムアクセスを必要とし、したがって高速半導体メモリとともに使用されるときに最も効率的になる。これは、固体ディスクメモリ中での使用に特に適している。ただし、一つの欠点は、高速ランダムアクセスを行うことができない磁気ディスクなどのメモリ装置とともに直接使用することに適していないことである。
【００３６】
可変ブロックサイズを有するデータの記憶を管理するための上述の二つの配列は、記憶媒体中で効率的に配置するためにデータブロックを区分化する原理、および記憶したデータブロックのサイズのいかなる変化も補償するようにデータブロックを再配置する原理に依拠している。両原理とも、データブロックの読取りおよび書込み動作のために記憶媒体への多重ランダムアクセスを必要とし、したがって記憶装置として高速メモリを使用する場合にしか高性能データ記憶システムを提供することができない。これらの方法は主として、ランダムアクセス半導体メモリを利用する固体ディスクシステムのためのものである。磁気ディスク上で行われるランダムアクセスは、機械的動作であり、比較的低速であるので、磁気ディスクなどの記憶装置とともにこうした方法を採用することは困難である。
【００３７】
本発明がよりよく理解されるように、また本発明がどのように実施されるかを示すために、次に例示的に添付の図面を参照する。
【発明を実施するための最良の形態】
【００３８】
データブロックにデータ圧縮技術が適用されると、達成された圧縮、したがって圧縮後のブロックサイズは、データの特徴に応じて幅広く変化する。二進オブジェクトコードなどいくつかのタイプのデータは冗長度をほとんど含まず、わずかしか圧縮することができないが、画像データなどその他の形態は、元のボリュームの十分の一未満にまで圧縮することができる。したがって、圧縮前のブロックサイズは固定サイズであるが、データ圧縮後のデータ記憶システム中のブロックサイズは非常に幅広い範囲にわたって変化する可能性がある。効率的な記憶管理配列は、ブロックサイズ分布の動的な性質に対処することができなければならない。
【００３９】
第１図は、基本的なデータ記憶システムを示す図である。これは、この実施形態では磁気ディスクドライブ１０への全てのデータ入出力動作のためのバッファとして働く高速メモリ１２に接続された磁気ディスクドライブ１０である記憶装置を含む。第１図のシステムは、データ圧縮などのデータ変換によって生じた可変ブロックサイズのデータを管理するために必要な区分化および再配置の原理を示す。磁気ディスクドライブ１０は、一定の物理的サイズを有し、磁気ディスクドライブ１０内で順次アドレスされる領域１４に区分化される。領域１４は、磁気ディスクドライブ１０のアクセス機構による磁気ディスクドライブ１０の本来の細区分である。データは、ディスクドライブ１０の単一アクセス動作で、領域１４に書き込む、または領域１４から読み取ることができる。例えば、領域１４は磁気ディスク１０のトラックまたはシリンダ、あるいは磁気ディスクのアレイにすることができる。ディスクドライブ１０は、磁気ディスクドライブ１０を高速メモリ１２に接続するデータポート１６を介して独立にアクセスすることができる複数の領域１４を含む。高速メモリ１２はデータポート１６に接続され、ディスクドライブ１０に転送される、またはディスクドライブ１０から転送される全てのデータをバッファリングする。高速メモリ１２は、ディスクドライブ１０の領域１４と等しいメモリ容量を有するように配列される。データは、高速メモリ１２および領域１４の全データ内容が単一動作でデータポート１６を介して転送されるように、高速メモリ１２と領域１４の間で転送される。このようなデータ転送は、高速メモリ１２と領域１４の間で直接ビットコピーとして行われる。
【００４０】
データは、高速メモリ装置１２に接続されたデータ入出力チャネル１８を介してデータ記憶システムに書き込まれ、これから読み取られる。データは、高速メモリ１２と入出力チャネル１８の間で再編成することができる。例えば、データの圧縮および圧縮解除を入出力チャネルにおいて組み込むことができる。データは通常は、入出力動作で転送されるデータのボリュームが高速メモリ１２の容量を大幅に下回るように、データブロックまたは一連のデータブロックを単位として入出力チャネル１８から転送される。
【００４１】
第２図は、複数の高速メモリ１２、それと同数の記憶装置１０、および管理機能を組み込むデータ記憶システムを示す図である。この実施形態の記憶装置１０は磁気ディスクであるが、その他の実施形態では、光ディスクや磁気テープなどその他の形態の大容量記憶装置にすることができる。各ディスクドライブ１０は、データポート１６を介して、それを介して任意の記憶装置１０上の任意の領域１４からのデータにアクセスすることができる領域内バス２０に接続される。領域内バス２０は、メモリポート２２を介して複数の高速メモリ１２にも接続される。各高速メモリ１２は、領域内バス２０上で使用される任意のデータ転送配列の多重化制約しか受けずに、独立して任意の記憶装置１０上の任意の領域１４に、またこれからデータを転送することができる。各高速メモリ１２は、メモリ記憶マネージャ２４によって制御される。データ圧縮器２６は、各高速メモリ１２への圧縮器ポート２８とデータ記憶システムへの入出力チャネル１８との間に組み込まれる。
【００４２】
一定サイズのデータの論理ブロック（データブロック）は、インタフェースバス３２およびインタフェースポート３４を介して入出力チャネル１８からブロックバッファメモリ３０に転送される。次いでこのデータブロックはメモリ記憶マネージャ２４の制御下のデータ圧縮器２６を通過し、その結果生じた可変サイズブロックは高速メモリ１２に書き込まれる。高速メモリ１２から入出力チャネル１８へのデータブロックの転送では、逆の一連の動作が適用される。インタフェースバス３２により、使用される任意のデータ転送配列の多重化制約しか受けすに、任意の高速メモリ１２とデータ入出力チャネル１８の間でのデータブロックの転送が可能になる。データは、内部コピーポート３６および内部コピーバス３８によって、二つの高速メモリ１２の間で直接転送することもできる。メモリ記憶マネージャ２４は、高速メモリ１２中のデータの編成および記憶を制御し、データ圧縮器２６を通るデータフローを制御し、高速メモリ１２へのデータ転送およびこれからのデータ転送を制御し、領域１４内のデータの論理から物理へのアドレス変換を実行する。大域記憶マネージャ４０は、入出力チャネル１８上の動作を制御し、ディスクキャッシングアルゴリズムを実施し、大容量記憶装置上の領域１４へのデータ転送およびこれからのデータ転送をスケジュールおよび制御し、領域１４の間でブロックの再配置をスケジュールし、データブロックについて論理から物理への領域１４のアドレス変換を実行する。
【００４３】
第２図に示すシステムは、高速ディスクキャッシュメモリとして高速メモリ１２を使用することにより、磁気ディスクをベースとする高性能データ記憶システムを提供する。高速キャッシュメモリとディスクメモリの間のデータ転送が、入出力に必要とされるデータがキャッシュメモリ中に常駐する可能性を高くするようにスケジュールされている場合には、キャッシュメモリを使用することにより、高速データ記憶システムを提供することができることは知られている。圧縮されたデータのみが磁気ディスク１０と高速メモリ１２の間で転送されるので、高速メモリ１２は非常に高速なキャッシュ動作を達成する。このようにして、データ転送時間を最小限に抑えることができる。記憶された全てのデータを圧縮することにより、高い論理記憶容量が生み出される。
【００４４】
第３図は、未圧縮論理データブロックの編成と、高速メモリ１２内の、したがって磁気記憶装置１０の領域１４内の物理記憶空間との間の相関関係を示す図である。各領域１４は、ページ５０として指定される、永久に領域１４に常駐する固定数ｍ個の論理的に連続的なデータブロックを含む。データ記憶システム内の論理ページの数は、磁気ディスク１０内の順次領域の数と等しくなるようになされ、論理ページアドレスと論理領域アドレスの間に直接の対応が存在するようになっている。ページ５０中のデータブロックの数ｍは、アドレスの復号が単純なままとなるように２の累乗となることが好ましい。領域１４の物理メモリ容量は、最小限のデータの圧縮しか達成されていないときに一つの論理ページ５０を収容するのに十分に大きい。
【００４５】
通常は、論理ページ５０を記憶した後で過剰な物理メモリ容量が存在することになり、これは、ｂ個の独立したページ化されていない非連続的なデータブロック（未ページ化ブロック５２）で占めることができる。この数ｂは、領域１４内のデータについて達成された圧縮比に応じて可変である。
【００４６】
可変サイズの論理ブロックは区分化および分散され、物理領域１４に効率的にパックされる。ページ化ブロック５０のサイズの増大を収容するために領域１４ａ内の追加の物理空間が必要となった場合には、未ページ化ブロック５２を別の領域１４ｂに再配置することができる。これは、第２図のアーキテクチャの高速メモリ１２の間で直接データ転送することによって実施することができる。
【００４７】
第４図は、論理ブロック数とデータ記憶システム内の物理記憶空間の編成との間の相関関係を示す図である。論理ブロックは二つの別個の連続に編成される。第一の連続は、ｍ個のブロックをそれそれ有するｎ個のページ５０を有し、各ページ５０は対応する論理数を有する領域１４に記憶される。したがって、ページ５０についてはアドレス変換は不要である。第二の連続はｋ個の未ページ化ブロック５２からなる。これらｋ個の未ページ化ブロック５２は、ページングなしで記憶される。ｋの値は、ページ化ブロック５０を記憶した後で利用できるメモリ空間に依存する。未ページ化ブロック５２は、物理メモリ空間内の任意の領域１４に位置することができ、また領域１４ａ内のページ化ブロック５２のサイズの変化を収容するために一つの領域１４ａから別の領域１４ｂに再配置することもできる。
【００４８】
ルックアップテーブル５４は、未ページ化ブロック５２についての論理ブロック数を、それが位置する論理領域の数に変換するために使用される。ルックアップテーブル５４は、高速メモリの特殊な領域に記憶することができる。高速メモリの内容（ルックアップテーブル）は、高速メモリ１２の内容の領域１４への転送と同様の方法で、磁気ディスク１０の対応する領域にコピーされる。
【００４９】
領域１４の間での未ページ化ブロック５２の再配置は、未ページ化ブロック５２を、内部コピーバス３８を介して一つの高速メモリ１２ａから別の高速メモリ１２ｂに転送することによって実施される。一つの高速メモリ１２ｂは、自由物理メモリ領域を有する領域１４を保持するように指定することができ、また全てのブロックの再配置のソースまたは宛先として指定することができる。このように、領域１４の間でのブロックの再配置は、磁気ディスクドライブへのアクセスを必要としない。
【００５０】
磁気ディスク１０のあらゆる領域１４中に自由メモリ空間が存在しないときには、記憶システムは容量が満杯に到達している。これ以上データブロックを書き込むことはできない。データブロックを削除することによって自由空間が生み出されるまで、既存データブロックの修正が不可能となることもある。
【００５１】
第５図は、高速メモリ１２中に存在するメモリ構造を示す図である。データブロック、ならびに高速メモリ１２および領域１４内の自由メモリ空間は、本特許明細書の前半に記載したブロックの分散記憶用の配列にしたがって編成される。ワード６０は、物理メモリのアドレス可能な最小の単位であり、メモリ装置の構造によって決定されるワード長を有することになる。これは通常は１６または３２ビットの長さにすることができる。タイル６２は、メモリ中の一定数の連続ワード６０である。これはメモリ空間のアドレッシングの基本単位であり、したがって記憶されたデータブロックのサイズの最小限の増分である。タイル６２は、通常は８個または１６個のワード６０にすることができる。グループ６４は、メモリ中の連続したタイル６２のセットであり、一つのタイル６２の最小限のサイズを有する任意のサイズにすることができるが、通常は一、二、四、または８個のタイル６２を含むことになる。グループ６４は、グループヘッダ６６として割り振られた所定数のメモリ位置を含む。
【００５２】
第６図は、代表的なグループヘッダ６６のフォーマットを示す図である。グループヘッダ６６は、三つのフィールド、すなわち状態フィールド７０、タイルフィールド７２、およびリンクポインタ７４を含む。状態フィールド７０は、グループ６４がデータブロックの一部分であるか、または領域１４内の自由空間の一部分であるかを規定し、またグループ６４ａが後続のグループ６４ｂにリンクされているかどうかを規定する。タイルフィールド７２は、グループ６４中のタイル６２の数についての情報を含む。リンクポインタ７４は、グループ６４ａがリンクされた別のグループ６４ｂの開始のアドレスを規定する。このアドレスは、高速メモリ１２の開始アドレスに対する一つのタイル６２の増分で規定される。
【００５３】
第７図は、グループヘッダ６６中のリンタポインタフィールド７４が、どのようにしてグループ６４ａ、ｂ、ｃをリンクしてより大きなデータブロックを形成するかを示す図である。データブロックは、任意の物理順序でリンクすることができるグループ６４を含むことができる。ブロックの第一グループ６４ａのグループヘッダ６６への物理アドレスポインタ８０は、領域１４内のブロックの論理アドレスによって規定された高速メモリ１２中の位置に位置する。このようにして、ｍ＋ｂ個の論理ブロックを含む第３図の領域１４について、高速メモリ１２のｍ＋ｂ個の第一の位置は、データブロックについての物理開始アドレスを含む。
【００５４】
第７図のデータブロックは、タイル６２の１１個分の長さであり、グループヘッダ６６中の情報によってリンタされて連鎖になった８個のタイル６４ａ、二つのタイル６４ｂ、一つのタイル６４ｃのグループを含む。構成グループ６４ａ、ｂ、ｃは、高速メモリ１２の物理メモリ空間内の任意の位置に位置することができる。
【００５５】
この配列では任意長さのデータブロックを収容することができるが、タイル１５個までのブロックサイズでは、タイル８個、４個、２個、および１個のサイズのグループの可用性が最大の効率を与える。データブロックは、高速メモリ１２に書き込まれるときに、利用可能なグループサイズと等しいサイズの一つまたは複数のセグメントに区分化される。データは、適当なグループヘッダ情報６６とともに、その時点で自由空間として存在する、別のデータブロックに割り当てられていないグループの位置に書き込まれる。リンクされた連鎖中の最後のグループヘッダ６４ｃは、リンクポインタフィールド７４中にブロック論理アドレスを含み、データのセキュリティと、任意のポインタまたはヘッダ６６が破壊されたときにリンク情報を回復する能力とを提供する。
【００５６】
第８図に示すように、リンタされたグループ６４の同様の連鎖を利用して、高速メモリ１２中の自由空間を管理することができる。分離した自由空間連鎖９０は、各グループサイズごとに維持することができる。開始ポインタ９２ａは第一グループ６４ｅのヘッダのアドレスを規定するために使用され、末端ポインタ９４ａは各連鎖の最後のグループ６４ｆのアドレスを規定するために使用される。これらのポインタ９２、９４は、グループ６４が自由空間連鎖に添付される、またはこれから除去されるときに修正される。自由空間連鎖９０を規定するポインタ９２、９４は、ブロック物理アドレスポインタ８０と同様の方法で、高速メモリ１２中の予約位置に記憶することができる。
【００５７】
データ記憶システムが最初に初期化された後で、キャッシュ領域１４は、１個、２個、４個、および８個のタイル６２のグループサイズにフォーマットされ、自由空間連鎖９０は、それらと関連づけられたポインタ９２、９４とともに形成されなければならない。このフォーマットは、磁気ディスク１０中のあらゆる領域１４について同様にすることができ、高速メモリ１２は同じサイズにすることができる。このフォーマットは、磁気ディスク１０の予め空になっている領域１４中の最後の宛先について高速メモリ１２にデータを書き込む前に、自由空間連鎖ポインタ９２、９４およびリンクされたグループヘッダ６６の標準パターンを高速メモリ１２にロードすることによって、容易に達成することができる。したがって、磁気ディスク１０は、本発明で使用するために、従来通り実行される磁気ディスクのフォーマット以外には、初期化後にいかなる特定のフォーマットも必要としない。
【００５８】
データブロック読取り動作は下記のように実行される。データブロックが既に高速メモリ１２中に存在している場合には、読取り動作は直ちに開始される。そうでない場合には、ブロックが位置する磁気ディスク１０の完全な領域１４についてのデータを高速メモリ１２にロードしなければならない。磁気ディスクのキャッシングアルゴリズムは、入出力チャネル１８で要求される前にデータが高速キャッシュメモリに転送され、データを直ちに利用することができる最高の可能性を確保することで知られている。
【００５９】
領域１４内のデータブロックの論理アドレスは、大域記憶マネージャ４０によってメモリ記憶マネージャ２４に供給される。物理アドレスポインタ８０は、ブロック論理アドレスによって規定された高速メモリ１２中の位置から読み取られ、グループ６４はこの物理アドレスポインタ８０によって規定された位置から読み取られる。グループヘッダ６６が記憶され、任意の後続のグループについて物理アドレスを提供する。リンクされたグループは、このようにして、ブロックの最後のグループに到達するまでハードウェアの制御下で読み取られる。
【００６０】
データブロック書込み動作は下記のように実行される。データ読取り動作の場合と同様にこの動作を開始することができるようになる前に、ブロックを書き込もうとする領域についてのデータが、高速メモリ１２中に存在していなければならない。メモリ記憶マネージャ２４内の制御プロセッサは、データブロックを区分化し、適当な自由空間連鎖９０からグループ６４を割り振る。次いで制御プロセッサは、構成グループ６４についての必要な全てのポインタ、ヘッダ、およびアドレス情報をメモリ記憶マネージャ２４にロードし、アドレスポインタおよびデータグループは、メモリ記憶マネージャ２４の制御下で高速メモリ１２中の所定位置に書き込まれる。論理ブロックに関係する古くなったグループは、適当な自由空間連鎖９０の末端に添付され、自由空間ポインタ９２、９４は更新される。データは、様々な領域１４から高速メモリ１２にデータをロードする必要がある場合、または所定の長さの時間の後で、高速メモリ１２から磁気ディスク１０上の領域１４にロードすればよい。
【００６１】
メモリ記憶マネージャ２４は、高速メモリ１２中のデータの編成および記憶を制御し、データ圧縮器２６を通るデータフローを制御し、高速メモリ１２へのデータ転送およびこれからのデータ転送を制御し、領域１４内のデータについて論理から物理へのアドレス変換を実行する。
【００６２】
第９図は、メモリ記憶マネージャおよびデータ圧縮器を含む領域内制御機能を示すブロック図である。領域内制御プロセッサ１００は、データ転送のスケジューリングおよびアドレス制御機能を実行し、転送バス１０２を介してその他の制御要素と通信する。単一の領域内制御プロセッサ１００は、複数のメモリ記憶マネージャ２４と通信し、これらを制御することができる。
【００６３】
データブロックを高速メモリ１２に書き込むときには、大域記憶マネージャ４０は、ブロックが入出力チャネル１８から転送される準備ができたことを領域内制御プロセッサ１００に通知し、領域１４内のブロックの論理アドレスについての情報を提供する。この動作は、複数の順次データブロックについて実行することもできる。領域内制御プロセッサ１００は、転送バス１０２を介して、制御情報を入出力インタフェース１０４およびデータ圧縮器２６にロードする。データ圧縮器２６は、特定用途向け集積回路（ＡＳＩＣ）にすることができる。次いでデータブロックが、入出力インタフェース１０４およびインタフェースデータバス１０６を介してブロックバッファ３０に転送される。このブロックバッファ３０は、静的ランダムアクセスメモリ（ＳＲＡＭ）にすることができる。
【００６４】
ブロックバッファ３０に常駐するデータブロックは未圧縮であり、一定サイズを有する。ブロックバッファ３０は、複数のデータブロックを収容するのに十分な容量を有することができる。次いでデータブロックは、データ圧縮器２６を通って先入れ先出しメモリ１０８に転送される。ブロックバッファ３０に出入りする全てのデータ転送は、圧縮器バス１１０を介してデータ圧縮器２６によって制御される。インタフェースバス１０６で時分割多重配列を使用する場合には、ブロックバッファ３０に出入りするデータ転送を同時に行うこともできる。データ圧縮器２６は、データブロックのサイズを減少させる任意のデータ圧縮配列を実施することができる。
【００６５】
領域内制御プロセッサ１００は、データ圧縮器２６から、先入れ先出しメモリ（ＦＩＦＯ）１０８中に常駐するデータブロックのサイズを通知される。次いで領域内制御プロセッサ１００はブロックをセグメントに区分化し、セグメントを、高速メモリ１２中の自由空間連鎖９０中で利用可能なグループ６４に割り当てる。グループヘッダアドレスおよびデータ情報、ならびに制御コードは、領域内制御プロセッサ１００からメモリ記憶マネージャ２４にロードされる。データは、メモリ記憶マネージャ２４の制御下で、ＦＩＦＯバス１１２およびドライバ１１４を介してＦＩＦＯ１０８から高速メモリ１２に転送される。メモリ記憶マネージャブロック２４は、特定用途向け集積回路（ＡＳＩＣ）にすることができる。データを高速メモリ１２に書き込む間に、メモリ記憶マネージャ２４は、ＦＩＦＯバス１１２を介してグループヘッダ６６についてのデータを挿入し、管理バス１１６を介して高速メモリ１２の全てのアクセスについてのアドレスを制御する。
【００６６】
高速メモリ１２からデータブロックを読み取り、これを入出力チャネル１８に転送する動作は、同様のパターンを逆方向にたどる。
【００６７】
高速メモリ１２と、大容量記憶装置として働く磁気ディスク１０上の領域１４との間のデータの転送は、メモリドライバ１１８、ＦＩＦＯバス１１２、ディスクインタフェース制御１２０、およびディスクインタフェースポート１２２を介して実施される。高速メモリ１２の全データ内容は単一動作で転送され、高速メモリ１２のアドレスのサイクリングはメモリ記憶マネージャ２４によって実行される。ディスクインタフェース制御１２０は、磁気ディスク１０のアクセスに必要な全ての制御機能を実行し、データ転送を磁気ディスク１０と両立するように同期する。磁気ディスク以外の記憶装置を使用するその他の実施形態では、ディスクインタフェース制御１２０は、使用する特定の記憶装置専用の制御装置で置き換えられることになる。転送についての制御パラメータは、領域内制御プロセッサ１００によってメモリ記憶マネージャ２４およびディスクインタフェース１２０にロードされる。
【００６８】
二つの高速メモリ１２の間のデータの転送は、メモリドライバ１１８、ＦＩＦＯバス１１２、ドライバ１１４、および領域インタフェースポート１２４、ならびに第二の高速メモリ１２のための領域内制御構造中のこれらに対応する要素を介して実施される。この経路を介したデータ転送は、通常は単一の未ページ化データブロック５２または未ページ化データブロック５２の小さなセットを再配置するために行われる。
【００６９】
第１０図は、メモリ記憶マネージャ２４の構造を示す図である。記憶マネージャポート１２６は、ＦＩＦＯバスインタフェース１２８を介したメモリ記憶マネージャ２４とＦＩＦＯバス１１２の間の通信を実現する。転送ポート１３０は、転送バスインタフェース１３２を介したメモリ記憶マネージャ２４と転送バス１０２の間の通信を実現する。
【００７０】
メモリ記憶マネージャ２４の内部では、内部データバス１３４はデータバスとして働き、内部プロセッサバス１３６はプロセッサバスとして働く。管理バス１１６は、高速メモリ１２についてのアドレスおよび制御信号を供給する。ヘッダ書込みレジスタ１３８は、内部データバス１３４を介してグループヘッダ６６として書き込まれる一つまたは複数のグループヘッダ６６が領域内制御プロセッサ１００からロードされるレジスタのバンクを含む。ヘッダ読取りレジスタ１４０は、内部データバス１３４上のデータから抽出された一つまたは複数のグループヘッダ６６が後に領域内制御プロセッサ１００によって読み取られるためにその中に記憶される、レジスタのバンクを含む。アドレスレジスタ１４２は、内部プロセッサバス１３６または内部データバス１３４のいずれかから一つまたは複数のアドレスがロードされるレジスタのバンクを含む。マルチプレクサ１４４は、アドレスレジスタのロードのためのソースを制御する。アドレスレジスタ１４２からのアドレスはアドレスカウンタ１４６にロードされ、メモリアクセスの開始点を規定する。グループの読取りまたは書込み動作と同様に、メモリアクセスが順次ワードアドレスのストリングを含む場合には、アドレスカウンタ１４６はアドレスシーケンスを生成する。制御ブロック１４８は、領域内制御プロセッサ１００の指示の下で、全ての動作についての制御信号を生成する。ＥＣＣ論理ブロック１５０は、各グループ６４またはデータブロックに添付することができる誤り検査コード（ＥＣＣ）を生成および検査する。
【図面の簡単な説明】
【００７１】
【図１】第１図は、記憶装置のある領域へのデータアクセスをバッファリングするために高速メモリを使用することを示す概略図である。
【図２】第２図は、領域内バッファアーキテクチャを利用するシステムを示す図である。
【図３】第３図は、領域内記憶管理のための論理から物理へのマッピングを示す図である。
【図４】第４図は、大域記憶管理のための論理から物理へのマッピングを示す図である。
【図５】第５図は、領域内バッファ内のメモリ構造を示す図である。
【図６】第６図は、領域内バッファ内の各グループメモリ構造と関連するグループヘッダのフォーマットを示す図である。
【図７】第７図は、領域内バッファ内のデータブロック構造を示す図である。
【図８】第８図は、領域内バッファ内の自由空間構造を示す図である。
【図９】第９図は、本発明の一実施形態における領域内記憶装置を制御する配置を示す図である。
【図１０】第１０図は、本発明を実施するシステム中の領域内バッファメモリを制御する配置を示す図である。
【図１】
2004240985.tif 000003
【図２】
2004240985.tif 000004
【図３】
2004240985.tif 000005
【図４】
2004240985.tif 000006
【図５】
2004240985.tif 000007
【図６】
2004240985.tif 000008
【図７】
2004240985.tif 000009
【図８】
2004240985.tif 000010
【図９】
2004240985.tif 000011
【図１０】
2004240985.tif 000012