データ圧縮技術は、データ記憶システムに二つの主な利益を提供することができる。データ記憶装置の有効容量は、その装置に記憶すべきデータのボリュームが、その記憶システムに転送されるデータおよびその記憶システムから転送されるデータの論理ボリュームより小さいので、その物理的容量を超えて増大することができる。このデータの物理的ボリュームの減少により、記憶装置に出し入れするデータ転送時間が有効に短縮される。記憶装置の動作が比較的低速である場合、例えば磁気ディスクでは、これは特に有利である。
PCT特許出願第91/20076号(Storage Technology Corporation)には、動的にマップされた仮想メモリシステムを使用して、各データレコードがそのデータに必要な物理空間のみを占めるようにデータの記憶を可能にする方法が示されている。圧縮アルゴリズムは、マルチパス記憶ディレクタを使用して、記憶する前にデータを圧縮する。ヌルフィールドは仮想メモリマップにリストされ、物理媒体には記憶されない。
PCT特許出願第91/20025号(Storage Technology Corporation)には、削除されたデータセット空間が直ちに解放されて再利用される、動的にマップされた仮想メモリシステムが示されている。データ記憶サブシステムは、データファイルが仮想VTOCからスクラッチされていることを示す指標を受信する。追加のデータセキュリティは、キャッシュおよび記憶装置の両方にある、スクラッチされた記憶ファイルのデータへの無許可アクセスを防止することによって提供される。
ヨーロッパ特許第0682306号(IBM)には、データのブロックサイズとそれらの記憶に利用できる空間とを比較して最も効率的な位置決め配列を決定する、ログ構造ファイルシステムが示されている。これは、圧縮されたデータおよび圧縮されていないデータについて別々のバッファを有し、また小さい方のバイト数を選択的にディスクに書き込む制御装置を有する。
米国特許第4467421号(StorageTechnology)には、ホストCPUと(ディスクドライブ)記憶装置との間に挿入され、その記憶媒体がテープドライブと同様に機能し、連続的にデータを書き込むことができるようになされた仮想記憶システムが示されている。このシステムは、固体RAM、CCDメモリ、ディスクドライブ、テープなど、その構成要素が様々な応答時間を有する混合方式記憶システムに適用することができる。
磁気ディスク、光ディスク、磁気テープなど、多くのデータ記憶装置では、データは、データブロックと呼ばれる固定サイズの単位で記憶される。一般的なデータブロックのサイズは512バイトである。ホストがデータブロックに与えるアドレスは論理ブロックアドレスと呼ばれ、データブロックを実際に記憶するメモリ領域のアドレスは、物理ブロックと呼ばれる。論理ブロックアドレスおよび物理ブロックアドレスは、通常は同じ順序である(すなわち連続的な論理ブロックアドレスは通常は連続した物理ブロックアドレスに対応する)が、物理アドレス空間は連続的でないこともある。この不連続性は、記憶媒体の物理的特性、例えばその物理アドレス中のある特定のブロックが欠陥の存在によって使用不能になるといったことにより、生じる可能性がある。データブロックの論理アドレスは、アルゴリズムまたはルックアップテーブルを使用してブロックの物理的順序づけの不連続性を規定することにより、物理アドレスに変換することができる。
ただし、データ圧縮を使用するときには、いくつかのデータがその他のデータより圧縮しやすいので、圧縮後のデータサイズが各論理ブロックごとに一定でない可能性がある。したがって、各論理ブロックの圧縮により生じるデータの量は可変となる。
論理ブロックの圧縮によって生じるデータの量は、データの性質および使用する圧縮技術に依存する。圧縮データのブロックの物理的サイズは、データの読取り、修正、および再書込みの際に変化することもある。したがって、固定された論理ブロックのデータの圧縮によって生じる可変量のデータを管理するという問題が生じるので、磁気ディスクなどのランダムブロックアクセス記憶装置の即時制御構造内にデータの圧縮を組み込むことはかなり困難である。
したがって本発明は、記憶装置と、メモリと、ユーザインタフェースと、メモリ制御装置とを含み、メモリがユーザインタフェースと記憶装置との間で転送された全てのデータをバッファリングするために使用されるデータ記憶システムであって、メモリ制御装置が、記憶装置とメモリの間でデータを直接コピーし、メモリとユーザインタフェースの間でデータが転送されたときにデータを再編成することを特徴とするシステムを提供する。
メモリは、記憶装置のアクセス機構によって単一動作で好都合にアクセスすることができる記憶装置の一部分である記憶装置の領域と等しい容量を有することができる。
データは、メモリの全容量の単位で記憶装置に転送する、また記憶装置から転送することができる。
データ記憶システムは、それぞれがメモリへのデータ転送またはメモリからのデータ転送を実行することができる、複数の記憶装置を含むことができる。
データ記憶システムは、それそれが記憶装置の独立した領域からデータをロードされることができる、複数のメモリを含むことができる。
記憶装置からメモリへのデータ転送は、ユーザインタフェースでのトランザクションに必要なデータブロックがメモリ中に常駐する可能性が最も高くなるようにようにスケジュールされる。
記憶装置は磁気ディスクにすることができる。
メモリは、ランダムアクセス半導体メモリにすることができる。
データの圧縮および圧縮解除は、メモリとユーザインタフェースの間に組み込むことができる。
記憶装置の領域は、その領域中に永久に常駐する所定数の論理的に連続的なデータブロックと、その領域の利用可能な物理記憶空間に好都合に収容することができるだけの非連続的なデータブロックとを含むことができる。
永久に第一領域に常駐する一つまたは複数の論理的に連続的なデータブロックのサイズが増加する場合には、非連続的なデータブロックを第一領域から第二領域に再配置し、物理記憶空間を生み出すことができる。
非連続的なデータブロックを第一領域から第二領域に再配置し、永久に第二領域に常駐する一つまたは複数の論理的に連続的なデータブロックの物理的サイズの変化によって生じた物理記憶空間を満たすことができる。
領域間での比連続的なデータブロックの再配置は、一つのメモリから別のメモリへのブロックの転送によって実施することができる。
メモリは、領域間で再配置される全てのデータブロックのソースまたは宛先として指定することができる。
メモリ制御装置は、データブロックの再配置のための自由な物理メモリ空間を十分に提供する記憶装置の領域から、データがメモリにロードされることを保証することができる。
ある領域に永久に常駐する所定数の論理的に連続的なデータブロックの論理ページアドレスは、記憶装置内の領域の順次アドレスとの直接の対応を有することができる。
ある領域に永久には常駐しない独立したデータブロックの論理アドレスは、ルックアップテーブルによってある領域内の論理アドレスに変換することができる。
メモリは、一定数のデータワードを含むタイルで独立にアドレス可能にすることができる。
データの各論理ブロックは、リンクしたタイルのグループの連鎖中に記憶することができる。
各連鎖中のグループのサイズおよび数は、データのブロックのサイズに従って選択することができる。
アドレスは、ブロックのタイルの第一グループのメモリ内の物理アドレスを識別するデータの各論理ブロックについて記憶することができる。
メモリ中のタイルの未使用の任意のグループは、いくつかの自由空間連鎖中で互いにリンタすることができる。
主電源で故障が発生した場合に、電力ソースを十分な時間維持し、メモリから記憶装置への全てのデータの転送を可能にするバッテリを備えることもできる。
データの圧縮などによって生じる可能性のある可変ブロックサイズを有するデータの記憶を管理する配列を考案した。こうした配列の一つでは、データブロックを不可分の単位として扱い、メモリ内でデータブロックを再配置および再順序づけすることによって自由メモリの断片化を管理する。これは、異なる位置へのデータブロックの再書込み、および論理アドレスを物理アドレスにマップするルックアップテーブルの更新を必要とする。
この配列の一つの欠点は、データブロックの再配置を繰り返すことにより、データが破壊される機会が増加する可能性があることである。しかし、データブロックは物理メモリの物理的に連続な領域に記憶しなければならないので、再配置は必要である。この配列は、データの再配置を実行するためにメモリ全体への高速アクセスを必要とし、固体ディスクなどの大規模半導体メモリに最も適している。これが必要とする高速ランダムアクセス動作は、磁気ディスクメモリと両立しない。
可変ブロックサイズを有するデータを記憶する別の配列では、データブロックの分散記憶を使用する。データブロックは、物理メモリ中の様々な位置に記憶される個別セグメントに細分される。メモリは、タイルをメモリの基本単位とし、固定数のデータワードを含む、タイルの複数のグループに編成される。複数の様々なグループサイズが存在し、各グループサイズは様々な数のタイルを含む。データブロックは、記憶されるときに、タイルのグループを部分的に使用することによって生じる記憶空間の浪費を最小限に抑えるように、選択されたタイルのグループに分割される。データブロックの記憶に使用される個別セグメントは、各セグメントまたはグループと関連するグループのヘッダに記憶されたリンクポインタによって互いにリンタされる。データブロックの記憶に使用される第一セグメントの物理的位置は、別々に、ただし好ましくは同一媒体上に記憶され、論理ブロックアドレスから物理ブロックアドレスへのルックアップテーブルをコンパイルするために使用することができる。この配列は、複数の所定サイズを有する個別セグメントにメモリを事前フォーマットすることができ、これらは、その後で互いにリンクされ、ブロックが必要とする最小限の量の記憶空間が使用されることを保証することができる。自由データ空間を管理するために、記憶に使用されないセグメントをそれらのグループヘッダを介してリンクし、それにより自由メモリのセグメントの連鎖を与える。この配列は、各ブロックアクセスごとにメモリ装置への多重ランダムアクセスを必要とし、したがって高速半導体メモリとともに使用されるときに最も効率的になる。これは、固体ディスクメモリ中での使用に特に適している。ただし、一つの欠点は、高速ランダムアクセスを行うことができない磁気ディスクなどのメモリ装置とともに直接使用することに適していないことである。
可変ブロックサイズを有するデータの記憶を管理するための上述の二つの配列は、記憶媒体中で効率的に配置するためにデータブロックを区分化する原理、および記憶したデータブロックのサイズのいかなる変化も補償するようにデータブロックを再配置する原理に依拠している。両原理とも、データブロックの読取りおよび書込み動作のために記憶媒体への多重ランダムアクセスを必要とし、したがって記憶装置として高速メモリを使用する場合にしか高性能データ記憶システムを提供することができない。これらの方法は主として、ランダムアクセス半導体メモリを利用する固体ディスクシステムのためのものである。磁気ディスク上で行われるランダムアクセスは、機械的動作であり、比較的低速であるので、磁気ディスクなどの記憶装置とともにこうした方法を採用することは困難である。
本発明がよりよく理解されるように、また本発明がどのように実施されるかを示すために、次に例示的に添付の図面を参照する。
データブロックにデータ圧縮技術が適用されると、達成された圧縮、したがって圧縮後のブロックサイズは、データの特徴に応じて幅広く変化する。二進オブジェクトコードなどいくつかのタイプのデータは冗長度をほとんど含まず、わずかしか圧縮することができないが、画像データなどその他の形態は、元のボリュームの十分の一未満にまで圧縮することができる。したがって、圧縮前のブロックサイズは固定サイズであるが、データ圧縮後のデータ記憶システム中のブロックサイズは非常に幅広い範囲にわたって変化する可能性がある。効率的な記憶管理配列は、ブロックサイズ分布の動的な性質に対処することができなければならない。
第1図は、基本的なデータ記憶システムを示す図である。これは、この実施形態では磁気ディスクドライブ10への全てのデータ入出力動作のためのバッファとして働く高速メモリ12に接続された磁気ディスクドライブ10である記憶装置を含む。第1図のシステムは、データ圧縮などのデータ変換によって生じた可変ブロックサイズのデータを管理するために必要な区分化および再配置の原理を示す。磁気ディスクドライブ10は、一定の物理的サイズを有し、磁気ディスクドライブ10内で順次アドレスされる領域14に区分化される。領域14は、磁気ディスクドライブ10のアクセス機構による磁気ディスクドライブ10の本来の細区分である。データは、ディスクドライブ10の単一アクセス動作で、領域14に書き込む、または領域14から読み取ることができる。例えば、領域14は磁気ディスク10のトラックまたはシリンダ、あるいは磁気ディスクのアレイにすることができる。ディスクドライブ10は、磁気ディスクドライブ10を高速メモリ12に接続するデータポート16を介して独立にアクセスすることができる複数の領域14を含む。高速メモリ12はデータポート16に接続され、ディスクドライブ10に転送される、またはディスクドライブ10から転送される全てのデータをバッファリングする。高速メモリ12は、ディスクドライブ10の領域14と等しいメモリ容量を有するように配列される。データは、高速メモリ12および領域14の全データ内容が単一動作でデータポート16を介して転送されるように、高速メモリ12と領域14の間で転送される。このようなデータ転送は、高速メモリ12と領域14の間で直接ビットコピーとして行われる。
データは、高速メモリ装置12に接続されたデータ入出力チャネル18を介してデータ記憶システムに書き込まれ、これから読み取られる。データは、高速メモリ12と入出力チャネル18の間で再編成することができる。例えば、データの圧縮および圧縮解除を入出力チャネルにおいて組み込むことができる。データは通常は、入出力動作で転送されるデータのボリュームが高速メモリ12の容量を大幅に下回るように、データブロックまたは一連のデータブロックを単位として入出力チャネル18から転送される。
第2図は、複数の高速メモリ12、それと同数の記憶装置10、および管理機能を組み込むデータ記憶システムを示す図である。この実施形態の記憶装置10は磁気ディスクであるが、その他の実施形態では、光ディスクや磁気テープなどその他の形態の大容量記憶装置にすることができる。各ディスクドライブ10は、データポート16を介して、それを介して任意の記憶装置10上の任意の領域14からのデータにアクセスすることができる領域内バス20に接続される。領域内バス20は、メモリポート22を介して複数の高速メモリ12にも接続される。各高速メモリ12は、領域内バス20上で使用される任意のデータ転送配列の多重化制約しか受けずに、独立して任意の記憶装置10上の任意の領域14に、またこれからデータを転送することができる。各高速メモリ12は、メモリ記憶マネージャ24によって制御される。データ圧縮器26は、各高速メモリ12への圧縮器ポート28とデータ記憶システムへの入出力チャネル18との間に組み込まれる。
一定サイズのデータの論理ブロック(データブロック)は、インタフェースバス32およびインタフェースポート34を介して入出力チャネル18からブロックバッファメモリ30に転送される。次いでこのデータブロックはメモリ記憶マネージャ24の制御下のデータ圧縮器26を通過し、その結果生じた可変サイズブロックは高速メモリ12に書き込まれる。高速メモリ12から入出力チャネル18へのデータブロックの転送では、逆の一連の動作が適用される。インタフェースバス32により、使用される任意のデータ転送配列の多重化制約しか受けすに、任意の高速メモリ12とデータ入出力チャネル18の間でのデータブロックの転送が可能になる。データは、内部コピーポート36および内部コピーバス38によって、二つの高速メモリ12の間で直接転送することもできる。メモリ記憶マネージャ24は、高速メモリ12中のデータの編成および記憶を制御し、データ圧縮器26を通るデータフローを制御し、高速メモリ12へのデータ転送およびこれからのデータ転送を制御し、領域14内のデータの論理から物理へのアドレス変換を実行する。大域記憶マネージャ40は、入出力チャネル18上の動作を制御し、ディスクキャッシングアルゴリズムを実施し、大容量記憶装置上の領域14へのデータ転送およびこれからのデータ転送をスケジュールおよび制御し、領域14の間でブロックの再配置をスケジュールし、データブロックについて論理から物理への領域14のアドレス変換を実行する。
第2図に示すシステムは、高速ディスクキャッシュメモリとして高速メモリ12を使用することにより、磁気ディスクをベースとする高性能データ記憶システムを提供する。高速キャッシュメモリとディスクメモリの間のデータ転送が、入出力に必要とされるデータがキャッシュメモリ中に常駐する可能性を高くするようにスケジュールされている場合には、キャッシュメモリを使用することにより、高速データ記憶システムを提供することができることは知られている。圧縮されたデータのみが磁気ディスク10と高速メモリ12の間で転送されるので、高速メモリ12は非常に高速なキャッシュ動作を達成する。このようにして、データ転送時間を最小限に抑えることができる。記憶された全てのデータを圧縮することにより、高い論理記憶容量が生み出される。
第3図は、未圧縮論理データブロックの編成と、高速メモリ12内の、したがって磁気記憶装置10の領域14内の物理記憶空間との間の相関関係を示す図である。各領域14は、ページ50として指定される、永久に領域14に常駐する固定数m個の論理的に連続的なデータブロックを含む。データ記憶システム内の論理ページの数は、磁気ディスク10内の順次領域の数と等しくなるようになされ、論理ページアドレスと論理領域アドレスの間に直接の対応が存在するようになっている。ページ50中のデータブロックの数mは、アドレスの復号が単純なままとなるように2の累乗となることが好ましい。領域14の物理メモリ容量は、最小限のデータの圧縮しか達成されていないときに一つの論理ページ50を収容するのに十分に大きい。
通常は、論理ページ50を記憶した後で過剰な物理メモリ容量が存在することになり、これは、b個の独立したページ化されていない非連続的なデータブロック(未ページ化ブロック52)で占めることができる。この数bは、領域14内のデータについて達成された圧縮比に応じて可変である。
可変サイズの論理ブロックは区分化および分散され、物理領域14に効率的にパックされる。ページ化ブロック50のサイズの増大を収容するために領域14a内の追加の物理空間が必要となった場合には、未ページ化ブロック52を別の領域14bに再配置することができる。これは、第2図のアーキテクチャの高速メモリ12の間で直接データ転送することによって実施することができる。
第4図は、論理ブロック数とデータ記憶システム内の物理記憶空間の編成との間の相関関係を示す図である。論理ブロックは二つの別個の連続に編成される。第一の連続は、m個のブロックをそれそれ有するn個のページ50を有し、各ページ50は対応する論理数を有する領域14に記憶される。したがって、ページ50についてはアドレス変換は不要である。第二の連続はk個の未ページ化ブロック52からなる。これらk個の未ページ化ブロック52は、ページングなしで記憶される。kの値は、ページ化ブロック50を記憶した後で利用できるメモリ空間に依存する。未ページ化ブロック52は、物理メモリ空間内の任意の領域14に位置することができ、また領域14a内のページ化ブロック52のサイズの変化を収容するために一つの領域14aから別の領域14bに再配置することもできる。
ルックアップテーブル54は、未ページ化ブロック52についての論理ブロック数を、それが位置する論理領域の数に変換するために使用される。ルックアップテーブル54は、高速メモリの特殊な領域に記憶することができる。高速メモリの内容(ルックアップテーブル)は、高速メモリ12の内容の領域14への転送と同様の方法で、磁気ディスク10の対応する領域にコピーされる。
領域14の間での未ページ化ブロック52の再配置は、未ページ化ブロック52を、内部コピーバス38を介して一つの高速メモリ12aから別の高速メモリ12bに転送することによって実施される。一つの高速メモリ12bは、自由物理メモリ領域を有する領域14を保持するように指定することができ、また全てのブロックの再配置のソースまたは宛先として指定することができる。このように、領域14の間でのブロックの再配置は、磁気ディスクドライブへのアクセスを必要としない。
磁気ディスク10のあらゆる領域14中に自由メモリ空間が存在しないときには、記憶システムは容量が満杯に到達している。これ以上データブロックを書き込むことはできない。データブロックを削除することによって自由空間が生み出されるまで、既存データブロックの修正が不可能となることもある。
第5図は、高速メモリ12中に存在するメモリ構造を示す図である。データブロック、ならびに高速メモリ12および領域14内の自由メモリ空間は、本特許明細書の前半に記載したブロックの分散記憶用の配列にしたがって編成される。ワード60は、物理メモリのアドレス可能な最小の単位であり、メモリ装置の構造によって決定されるワード長を有することになる。これは通常は16または32ビットの長さにすることができる。タイル62は、メモリ中の一定数の連続ワード60である。これはメモリ空間のアドレッシングの基本単位であり、したがって記憶されたデータブロックのサイズの最小限の増分である。タイル62は、通常は8個または16個のワード60にすることができる。グループ64は、メモリ中の連続したタイル62のセットであり、一つのタイル62の最小限のサイズを有する任意のサイズにすることができるが、通常は一、二、四、または8個のタイル62を含むことになる。グループ64は、グループヘッダ66として割り振られた所定数のメモリ位置を含む。
第6図は、代表的なグループヘッダ66のフォーマットを示す図である。グループヘッダ66は、三つのフィールド、すなわち状態フィールド70、タイルフィールド72、およびリンクポインタ74を含む。状態フィールド70は、グループ64がデータブロックの一部分であるか、または領域14内の自由空間の一部分であるかを規定し、またグループ64aが後続のグループ64bにリンクされているかどうかを規定する。タイルフィールド72は、グループ64中のタイル62の数についての情報を含む。リンクポインタ74は、グループ64aがリンクされた別のグループ64bの開始のアドレスを規定する。このアドレスは、高速メモリ12の開始アドレスに対する一つのタイル62の増分で規定される。
第7図は、グループヘッダ66中のリンタポインタフィールド74が、どのようにしてグループ64a、b、cをリンクしてより大きなデータブロックを形成するかを示す図である。データブロックは、任意の物理順序でリンクすることができるグループ64を含むことができる。ブロックの第一グループ64aのグループヘッダ66への物理アドレスポインタ80は、領域14内のブロックの論理アドレスによって規定された高速メモリ12中の位置に位置する。このようにして、m+b個の論理ブロックを含む第3図の領域14について、高速メモリ12のm+b個の第一の位置は、データブロックについての物理開始アドレスを含む。
第7図のデータブロックは、タイル62の11個分の長さであり、グループヘッダ66中の情報によってリンタされて連鎖になった8個のタイル64a、二つのタイル64b、一つのタイル64cのグループを含む。構成グループ64a、b、cは、高速メモリ12の物理メモリ空間内の任意の位置に位置することができる。
この配列では任意長さのデータブロックを収容することができるが、タイル15個までのブロックサイズでは、タイル8個、4個、2個、および1個のサイズのグループの可用性が最大の効率を与える。データブロックは、高速メモリ12に書き込まれるときに、利用可能なグループサイズと等しいサイズの一つまたは複数のセグメントに区分化される。データは、適当なグループヘッダ情報66とともに、その時点で自由空間として存在する、別のデータブロックに割り当てられていないグループの位置に書き込まれる。リンクされた連鎖中の最後のグループヘッダ64cは、リンクポインタフィールド74中にブロック論理アドレスを含み、データのセキュリティと、任意のポインタまたはヘッダ66が破壊されたときにリンク情報を回復する能力とを提供する。
第8図に示すように、リンタされたグループ64の同様の連鎖を利用して、高速メモリ12中の自由空間を管理することができる。分離した自由空間連鎖90は、各グループサイズごとに維持することができる。開始ポインタ92aは第一グループ64eのヘッダのアドレスを規定するために使用され、末端ポインタ94aは各連鎖の最後のグループ64fのアドレスを規定するために使用される。これらのポインタ92、94は、グループ64が自由空間連鎖に添付される、またはこれから除去されるときに修正される。自由空間連鎖90を規定するポインタ92、94は、ブロック物理アドレスポインタ80と同様の方法で、高速メモリ12中の予約位置に記憶することができる。
データ記憶システムが最初に初期化された後で、キャッシュ領域14は、1個、2個、4個、および8個のタイル62のグループサイズにフォーマットされ、自由空間連鎖90は、それらと関連づけられたポインタ92、94とともに形成されなければならない。このフォーマットは、磁気ディスク10中のあらゆる領域14について同様にすることができ、高速メモリ12は同じサイズにすることができる。このフォーマットは、磁気ディスク10の予め空になっている領域14中の最後の宛先について高速メモリ12にデータを書き込む前に、自由空間連鎖ポインタ92、94およびリンクされたグループヘッダ66の標準パターンを高速メモリ12にロードすることによって、容易に達成することができる。したがって、磁気ディスク10は、本発明で使用するために、従来通り実行される磁気ディスクのフォーマット以外には、初期化後にいかなる特定のフォーマットも必要としない。
データブロック読取り動作は下記のように実行される。データブロックが既に高速メモリ12中に存在している場合には、読取り動作は直ちに開始される。そうでない場合には、ブロックが位置する磁気ディスク10の完全な領域14についてのデータを高速メモリ12にロードしなければならない。磁気ディスクのキャッシングアルゴリズムは、入出力チャネル18で要求される前にデータが高速キャッシュメモリに転送され、データを直ちに利用することができる最高の可能性を確保することで知られている。
領域14内のデータブロックの論理アドレスは、大域記憶マネージャ40によってメモリ記憶マネージャ24に供給される。物理アドレスポインタ80は、ブロック論理アドレスによって規定された高速メモリ12中の位置から読み取られ、グループ64はこの物理アドレスポインタ80によって規定された位置から読み取られる。グループヘッダ66が記憶され、任意の後続のグループについて物理アドレスを提供する。リンクされたグループは、このようにして、ブロックの最後のグループに到達するまでハードウェアの制御下で読み取られる。
データブロック書込み動作は下記のように実行される。データ読取り動作の場合と同様にこの動作を開始することができるようになる前に、ブロックを書き込もうとする領域についてのデータが、高速メモリ12中に存在していなければならない。メモリ記憶マネージャ24内の制御プロセッサは、データブロックを区分化し、適当な自由空間連鎖90からグループ64を割り振る。次いで制御プロセッサは、構成グループ64についての必要な全てのポインタ、ヘッダ、およびアドレス情報をメモリ記憶マネージャ24にロードし、アドレスポインタおよびデータグループは、メモリ記憶マネージャ24の制御下で高速メモリ12中の所定位置に書き込まれる。論理ブロックに関係する古くなったグループは、適当な自由空間連鎖90の末端に添付され、自由空間ポインタ92、94は更新される。データは、様々な領域14から高速メモリ12にデータをロードする必要がある場合、または所定の長さの時間の後で、高速メモリ12から磁気ディスク10上の領域14にロードすればよい。
メモリ記憶マネージャ24は、高速メモリ12中のデータの編成および記憶を制御し、データ圧縮器26を通るデータフローを制御し、高速メモリ12へのデータ転送およびこれからのデータ転送を制御し、領域14内のデータについて論理から物理へのアドレス変換を実行する。
第9図は、メモリ記憶マネージャおよびデータ圧縮器を含む領域内制御機能を示すブロック図である。領域内制御プロセッサ100は、データ転送のスケジューリングおよびアドレス制御機能を実行し、転送バス102を介してその他の制御要素と通信する。単一の領域内制御プロセッサ100は、複数のメモリ記憶マネージャ24と通信し、これらを制御することができる。
データブロックを高速メモリ12に書き込むときには、大域記憶マネージャ40は、ブロックが入出力チャネル18から転送される準備ができたことを領域内制御プロセッサ100に通知し、領域14内のブロックの論理アドレスについての情報を提供する。この動作は、複数の順次データブロックについて実行することもできる。領域内制御プロセッサ100は、転送バス102を介して、制御情報を入出力インタフェース104およびデータ圧縮器26にロードする。データ圧縮器26は、特定用途向け集積回路(ASIC)にすることができる。次いでデータブロックが、入出力インタフェース104およびインタフェースデータバス106を介してブロックバッファ30に転送される。このブロックバッファ30は、静的ランダムアクセスメモリ(SRAM)にすることができる。
ブロックバッファ30に常駐するデータブロックは未圧縮であり、一定サイズを有する。ブロックバッファ30は、複数のデータブロックを収容するのに十分な容量を有することができる。次いでデータブロックは、データ圧縮器26を通って先入れ先出しメモリ108に転送される。ブロックバッファ30に出入りする全てのデータ転送は、圧縮器バス110を介してデータ圧縮器26によって制御される。インタフェースバス106で時分割多重配列を使用する場合には、ブロックバッファ30に出入りするデータ転送を同時に行うこともできる。データ圧縮器26は、データブロックのサイズを減少させる任意のデータ圧縮配列を実施することができる。
領域内制御プロセッサ100は、データ圧縮器26から、先入れ先出しメモリ(FIFO)108中に常駐するデータブロックのサイズを通知される。次いで領域内制御プロセッサ100はブロックをセグメントに区分化し、セグメントを、高速メモリ12中の自由空間連鎖90中で利用可能なグループ64に割り当てる。グループヘッダアドレスおよびデータ情報、ならびに制御コードは、領域内制御プロセッサ100からメモリ記憶マネージャ24にロードされる。データは、メモリ記憶マネージャ24の制御下で、FIFOバス112およびドライバ114を介してFIFO108から高速メモリ12に転送される。メモリ記憶マネージャブロック24は、特定用途向け集積回路(ASIC)にすることができる。データを高速メモリ12に書き込む間に、メモリ記憶マネージャ24は、FIFOバス112を介してグループヘッダ66についてのデータを挿入し、管理バス116を介して高速メモリ12の全てのアクセスについてのアドレスを制御する。
高速メモリ12からデータブロックを読み取り、これを入出力チャネル18に転送する動作は、同様のパターンを逆方向にたどる。
高速メモリ12と、大容量記憶装置として働く磁気ディスク10上の領域14との間のデータの転送は、メモリドライバ118、FIFOバス112、ディスクインタフェース制御120、およびディスクインタフェースポート122を介して実施される。高速メモリ12の全データ内容は単一動作で転送され、高速メモリ12のアドレスのサイクリングはメモリ記憶マネージャ24によって実行される。ディスクインタフェース制御120は、磁気ディスク10のアクセスに必要な全ての制御機能を実行し、データ転送を磁気ディスク10と両立するように同期する。磁気ディスク以外の記憶装置を使用するその他の実施形態では、ディスクインタフェース制御120は、使用する特定の記憶装置専用の制御装置で置き換えられることになる。転送についての制御パラメータは、領域内制御プロセッサ100によってメモリ記憶マネージャ24およびディスクインタフェース120にロードされる。
二つの高速メモリ12の間のデータの転送は、メモリドライバ118、FIFOバス112、ドライバ114、および領域インタフェースポート124、ならびに第二の高速メモリ12のための領域内制御構造中のこれらに対応する要素を介して実施される。この経路を介したデータ転送は、通常は単一の未ページ化データブロック52または未ページ化データブロック52の小さなセットを再配置するために行われる。
第10図は、メモリ記憶マネージャ24の構造を示す図である。記憶マネージャポート126は、FIFOバスインタフェース128を介したメモリ記憶マネージャ24とFIFOバス112の間の通信を実現する。転送ポート130は、転送バスインタフェース132を介したメモリ記憶マネージャ24と転送バス102の間の通信を実現する。
メモリ記憶マネージャ24の内部では、内部データバス134はデータバスとして働き、内部プロセッサバス136はプロセッサバスとして働く。管理バス116は、高速メモリ12についてのアドレスおよび制御信号を供給する。ヘッダ書込みレジスタ138は、内部データバス134を介してグループヘッダ66として書き込まれる一つまたは複数のグループヘッダ66が領域内制御プロセッサ100からロードされるレジスタのバンクを含む。ヘッダ読取りレジスタ140は、内部データバス134上のデータから抽出された一つまたは複数のグループヘッダ66が後に領域内制御プロセッサ100によって読み取られるためにその中に記憶される、レジスタのバンクを含む。アドレスレジスタ142は、内部プロセッサバス136または内部データバス134のいずれかから一つまたは複数のアドレスがロードされるレジスタのバンクを含む。マルチプレクサ144は、アドレスレジスタのロードのためのソースを制御する。アドレスレジスタ142からのアドレスはアドレスカウンタ146にロードされ、メモリアクセスの開始点を規定する。グループの読取りまたは書込み動作と同様に、メモリアクセスが順次ワードアドレスのストリングを含む場合には、アドレスカウンタ146はアドレスシーケンスを生成する。制御ブロック148は、領域内制御プロセッサ100の指示の下で、全ての動作についての制御信号を生成する。ECC論理ブロック150は、各グループ64またはデータブロックに添付することができる誤り検査コード(ECC)を生成および検査する。