JP3561502B2 - 改良されたメモリシステムおよび方法 - Google Patents
改良されたメモリシステムおよび方法 Download PDFInfo
- Publication number
- JP3561502B2 JP3561502B2 JP2001511559A JP2001511559A JP3561502B2 JP 3561502 B2 JP3561502 B2 JP 3561502B2 JP 2001511559 A JP2001511559 A JP 2001511559A JP 2001511559 A JP2001511559 A JP 2001511559A JP 3561502 B2 JP3561502 B2 JP 3561502B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- data storage
- row
- columns
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Dram (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
【0001】
(関連出願とのクロスレファレンス)
本願は1998年7月21日に出願された米国仮特許出願第60/093,741号に対する優先権を主張するものである。
【0002】
(発明の分野)
本発明は、一般的にはコンピュータのメモリシステムの分野に関し、より詳細には、ディスクドライブコントローラ用バッファメモリシステムに関する。
【0003】
(発明の背景)
バッファメモリシステムはホストコンピュータと大容量記憶デバイス、例えばディスクドライブとを結合するためのインターフェースとして一般に使用されている。かかるインターフェースの1つの問題は、大容量記憶デバイスとの間でやりとりされるデータがシリアルフォーマットであり、例えばディスクドライブの読み出し/書き込みヘッドとの間でやりとりされるデータであり、一方、コンピュータではデータがパラレルデータバスに沿って送られるようになっていることである。別の問題は、大容量記憶デバイスがデータを記憶したり検索したりできる速度よりも、より高速でコンピュータがデータを処理することである。従って、バッファメモリシステムはデータをパラレルフォーマットからシリアルフォーマットに変換しなければならず、かつコンピュータと大容量記憶デバイスとの間で転送されるデータを一時的に記憶することにより、大容量記憶デバイスにデータを書き込んだり、読み出したりするレートをコンピュータのより高いレートのほうに合わせなければならない。代表的なバッファメモリシステムはデータを一時的に記憶するためのバッファメモリと、データのブロックをコンピュータ内の中央処理ユニット(CPU)によって使用される論理ブロックアドレスからバッファメモリ内の対応する物理アドレスに変換するための、すなわちマッピングするためのコントローラとを含む。バッファメモリは一般に1つ以上の一時的データ記憶デバイス(例えばランダムアクセスメモリまたはメモリチップ(RAMチップ))を含む。RAMチップとは集積回路メモリチップのことであり、これらメモリチップは行と列に配列されたメモリセルのアレイを有する。図1は一対のアレイ100、105を有する従来のバッファメモリを略図で示し、各アレイは256の列アドレス×4096の行アドレスを有する。列アドレスは更に各々が16のコラムから成る16のグループに分割されており、各グループは各々16ビットの16ワードから成るパラグラフとして知られているデータのブロック内にデータを記憶できる。例えば、0の論理アドレスを有する第1パラグラフ(PARA0)106は、列の第1グループ(列0〜15)内の第1行(行0)にマッピングされ、第2パラグラフ(PARA1)107は、列0〜15の行1にマッピングされ、次々に同様のマッピングが行われる。列の第1グループ内の最終行に達した後、例えば4096番目のパラグラフ(PARA4095)108が行4095にマッピングされた後に、行アドレスは行0にループバックし、列アドレスは列の第2グループ、すなわち列16〜31にインクリメントされる。
【0004】
一般に、コントローラはディスクドライブに記憶され、このディスクドライブから再生されたデータの完全性をチェックするための方式も含む。かかる1つの方式では、コンピュータから受信したデータのパラグラフ内の各ワードに対し、ビットごとの排他的OR(XOR)演算を実行する。バッファメモリに記憶されたパラグラフにパリティワードとして知られるこのXOR演算の結果を添付し、大容量記憶デバイスに転送する。大容量記憶デバイスから、データの先に記憶されたパラグラフが再生されると、XOR演算を繰り返し、この結果と記憶されていたパリティワードとを比較する。この比較の結果が同じであれば、再生したデータを有効と見なし、同一でなければ、エラービットを識別し、訂正するために誤り訂正ルーチンを呼び出すことができる。このデータ完全性方式の1つの問題は、パリティワードがRAMチップ内の物理アドレスを占有するので、パリティワードにより対応する論理アドレスをデータのアドレス指定に利用できなくなり、よってデータのシーケンシャルなブロックに対する論理アドレスが不連続となることである。このような不連続な論理アドレスが生じると、コンピュータのCPUがある1論理アドレスから次の不連続な論理アドレスに進むのに必要な時間(コンピュータのクロックのサイクル数によって測定される)が長くなり、CPUの動作を妨げるので、このような論理アドレスが不連続となることは好ましいことではない。更に、論理アドレスが不連続になることによって、マッピングプロセスが複雑となり、バッファメモリシステムのバンド幅が狭くなってしまう。このバンド幅なる用語は、所定の時間中にバッファメモリとの間でどれだけ多くの情報を転送できるかを示すための、コンピュータメモリの技術分野で一般に使用されている。
【0005】
図1に示された1つの部分的解決方法は、水平冗長コード(LRC)として知られる方式を使用する方法である。先に述べたデータ完全性方式と同じように、パラグラフに対するパリティワード(この分野ではLRCワードとして知られている)を生成するように、パラグラフ内の各ワードに対し、ビットごとにXOR演算を実行する。しかしながら、先のデータ完全性方式とは異なり、このLRCワードはパラグラフに添付されず、パリティ情報用に専ら保留された列の最終グループ、すなわち列241〜256内に別個に記憶される。コントローラが1つの命令を実行するのに必要な処理時間であるコマンドオーバーヘッドを短縮するために、パラグラフに対するLRCワードは同じ行内に記憶することが好ましい。コマンドオーバーヘッドを短縮することにより、有効なタスクに対するシステムの利用可能なバンド幅が広くなる。同じ行内にLRCワードを記憶することにより、ある行アドレスから別の行アドレスに移動するのに必要な時間を節約できる。一般に、約7クロックサイクルが節約できる。次に図1を参照し、この方式を実行するためのプロセス例について説明する。まず、列241からスタートし、同じ行内の各パラグラフに対してLRCワードに対する列アドレスをインクリメントする。例えば行0、列241に第1パラグラフ106に対するLRCワードを記憶し、一方、行1、列241に第2パラグラフ107に対するLRCワードを記憶し、行0、列242に4097番目のパラグラフ109に対するLRCワードを記憶する。こうしてLRCワードは論理アドレスの範囲の上端部まで移動され、データをアドレス指定するのに利用できる論理アドレスの連続的ブロックが残る。
【0006】
上記解決案は単一の一時的記憶デバイス、例えば単一RAMチップを有するバッファメモリシステムに対しては正しく作動する。しかしながら、コンピュータプログラムのサイズおよびこのプログラムによって操作されるデータの双方が近年急速に増大したことにより、より大きい容量の大容量記憶デバイスが開発された。このような開発により、より高速のバッファメモリシステムとインターフェースするための、より多数のバッファメモリを有するバッファメモリシステムが求められている。これまでRAMチップの容量を増すか、またはバッファメモリにより多数のRAMチップを増設するかのいずれかにより、バッファメモリを増加していた。不幸なことにこれら解決案のいずれも完全に満足できるとは言えない。容量の増大と共にRAMのコストが劇的に増加するので好ましいものではなく、競争の激しいコンピュータメモリの市場にあっては、より高価な、より容量の大きいRAMを使用することは望ましくないので、第1の解決案は満足できるものではない。
【0007】
同様に、第2の解決案による問題、すなわちより多数のRAMチップを増設することによる問題は、従来のバッファメモリシステムで使用されている比較的安価で複雑でないコントローラが、単一コントローラによってアドレス指定できるRAMチップの数を1つまたは2つに一般に限定することである。RAMチップの数を増すことによる別の問題は、列の最終グループのすべての行をLRCワードのために保留する、上記データ完全性方式を使用するバッファメモリシステムでは、より多数のRAMチップを増設することにより、チップの境界を横断する際に再び論理アドレスが不連続となることである。チップの境界を横断するということは、第1RAMチップ上のデータに対して利用できる最終物理アドレスから第2RAMチップ上の第1の利用可能な物理アドレスに変化することを意味する。第2RAM15に移動する際にLRCワードに対し、第1RAM10の列241〜256内のすべての行が保留されるので、コントローラはこれら領域の物理アドレスに対応する論理アドレス上をスキップしなければならず、この結果、データのシーケンシャルなブロックに対する論理アドレスが不連続となる。
【0008】
従って、より多数のバッファメモリを有するより高速のバッファメモリシステムが求められている。また、異なる一時的記憶デバイス、例えば多数のRAMチップに対しマッピングされるデータのシーケンシャルなブロックに対し、連続的な論理アドレスを提供するバッファメモリシステムも求められている。また、大容量記憶デバイスに記憶され、このデバイスから再生されるデータの完全性をチェックするための方式を含むバッファメモリシステムも求められている。更に、バッファメモリシステムのバンド幅を広くするアドレス指定およびデータ完全性方式を含むバッファメモリシステムも求められている。最後に、商業的に可能性のあるものとするには、より安価でより少ない容量のRAMチップおよび現在のコントローラによって、バッファメモリの増加を実現することが望ましい。
【0009】
本発明は、上記およびそれ以外の問題に対する解決案を提供するものであり、従来技術に対する別の利点を提供するものである。
【0010】
(発明の概要)
本発明は上記問題を解決するメモリシステムおよびこのシステムを作動させる方法に関する。このメモリシステムは1つのコラムアドレスを有する複数の列のグループおよび1つの行アドレスを有する複数の行に配置されたいくつかのアレイを含む。本システムを作動させるには、データのブロックに対し連続する論理アドレスを提供するようにアレイにデータのブロックを記憶する。アレイ内の複数の列の1つのグループのうちの1つの行にデータの1ブロックを記憶し、行アドレスをインクリメントし、行の限界に達するまでこのプロセスを繰り返す。行の限界に達した後は、アレイ内の複数の列の対応するグループのすべての行にデータのブロックが記憶されるまで、別のアレイでこのプロセスを繰り返す。次に、例アドレスをインクリメントし、行アドレスをリセットし、列の限界に達するまでこのプロセスを繰り返す。好ましくは、このシステムを作動させる方法は、アレイから再生されたデータの完全性をチェックするために、データの各ブロックに対しパリティワードを生成することも含む。より好ましくは、この方法はアレイ内に記憶されたデータブロックに対し生成されたパリティワードに対し、アレイ内の列の最終グループ内のすべての行を保留し、よってパリティワードの物理アドレスに関連した論理アドレスの範囲の頂端部までシフトすることを含む。
【0011】
一実施例では、本発明はデータを記憶できるいくつかのアレイを含むバッファメモリシステムを有するディスクドライブを作動させる方法に関する。アレイは複数の行と複数の列のグループに分割されており、列の1グループのうちの各行は1つの物理アドレスを有する。データは所定サイズのブロックに分割されており、複数の行および複数の列のグループの物理アドレスは(i)データの第1ブロックが第1アレイ内の列の1グループのうちの最終行に記憶され、(ii)データの第1ブロックの論理アドレスに連続する論理アドレスを有するデータの第2ブロックが第2アレイ内の列の対応するグループの第1行に記憶されるように、論理アドレスと関連している。オプションとして、データの第3ブロックは第2アレイ内の列の対応するグループの最終行に記憶され、データの第3ブロックの論理アドレスに連続する論理アドレスを有するデータの第4ブロックは第1アレイの列の第2グループの第1行に記憶される。
【0012】
別の特徴では、本発明はデータを記憶できるいくつかのアレイを有するメモリシステムに関する。アレイの各々はある範囲の物理アドレスによって識別されるセルに分割されている。コントローラは論理アドレスと物理アドレスとを関連付け、セルにアクセスするようになっている。更にこのコントローラは異なるアレイ内のセルに対する物理アドレスと隣接する論理アドレスとを関連付けるようになっている。好ましくはコントローラはいくつかの出力端を含み、これら出力端の各々は二進数の1つのビットを示す。これら出力端は、出力端に論理アドレスを示す二進数が与えられると、対応する物理アドレスを有するセルにアクセスされるようにアレイに結合される。より好ましくはこれら出力端はアレイのうちの1つを選択するための少なくとも1つの出力端を含む。
【0013】
このメモリシステムは、データを記憶するためのデータ記憶デバイスを有するデバイス記憶システムに対し特に有効である。このデータ記憶デバイスは磁気ディスクドライブ、光ディスクドライブまたは磁気光ディスクドライブとすることができる。
【0014】
次の詳細な説明を読み、関連する図を検討すれば、本発明を特徴付ける上記およびそれ以外の種々の特徴だけでなく利点も明らかとなろう。
【0015】
(詳細な説明)
図2は、ホストコンピュータ110のブロック図であり、このホストコンピュータ110はバッファメモリシステム120によって大容量記憶デバイス115、例えば光ディスクドライブ、磁気−光ディスクドライブまたは磁気ディスクドライブに結合されている。バッファメモリシステム120はコンピュータ110または大容量記憶デバイス115の一部でもよいし、また別のハウジング内に収納されたディスクリートアセンブリでもよい。一般に、図2に示すように、バッファメモリシステム120は大容量記憶デバイス115と共に共通ハウジング130内に収納されている。バッファメモリシステム120は大容量記憶デバイス115との間で転送されるデータを一時的に記憶するためのバッファメモリ125と、データを論理アドレスからバッファメモリ125内の物理アドレスへ変換、すなわちマッピングするためのコントローラ135とを含む。
【0016】
バッファメモリ125は複数の一時的データ記憶デバイス140、例えばランダムアクセスメモリまたはメモリチップ(RAMチップ)を含み、RAMチップは行と列に配列されたデータを記憶するためのメモリセルのアレイを有する集積回路のメモリチップであり、各メモリセルは行と別の番号を含むユニークな物理アドレスによって識別できる。本発明で使用するのに適したRAMチップには数種類のタイプがあり、これらRAMチップとしてはダイナミックランダムアクセスメモリ(DRAM)タイプI、DRAMタイプIIとしても知られる高速ページモードのDRAM、同期DRAM(SDRAM)、拡張データ出力DRAM(EDO DRAM)およびスタティックランダムアクセスメモリ(SRAM)とが挙げられるが、これらのみに限定されるものではない。これらメモリのうち、SDRAMが好ましい。その理由は、DRAMタイプおよびEDO DRAMのいずれのタイプよりも高速であり、SRAMよりも安価であるからである。
【0017】
図3を参照すると、SDRAM145はメモリセル(図示せず)のアレイ150と、列デコーダ160と、行デコーダ165と、データ入力バッファ170と、センスアンプ175とを一般に含む。チップイネーブル180に信号を印加することにより、読み出し動作または書き込み動作のためにバッファメモリ125内の特定のSDRAM145が選択される。一部のアドレスラインが行デコーダ165に印加され、行アドレスストローブ(RAS)185によりラッチされ、残りのラインの信号が列デコーダ160に印加されており、列アドレスストローブ(CAS)190によってラッチされるようにコントローラ135からのアドレスバス(図示せず)が分割されている。書き込みイネーブル信号195はSDRAM145へのデータの書き込みをイネーブルし、出力イネーブル200はこのSDRAMからのデータの読み出しを可能にする。更にSDRAM145は、その他の種々の電圧入力端および/または制御信号も有するが、これら電圧入力端および制御信号は、当技術分野で公知であり、図3の実施例では示されておらず、また説明を簡潔にするため、また発明を不明確にしないように、本発明では説明しない。
【0018】
図4を参照し、本発明の一実施例を要約する。図4は、本発明に係わるバッファメモリシステム120の好ましい実施例の機能ブロック図である。図に示されるように、コントローラ135はメモリ制御ユニット(MCU)205によって構成されており、この制御ユニット205はマイクロプロセッサインターフェース210、システムインターフェース215および大容量記憶デバイス105に対するインターフェース、例えばディスクドライブ(図示せず)に対するフォーマッター220のインターフェースを含む種々のインターフェースに信号バスによって接続されている。フォーマッター220は信号バス225により大容量記憶デバイス105に接続されており、信号バス225は種々の信号ラインを有する。これら信号ラインは当技術分野で周知であるので、図4の実施例では図示されておらず、また本明細書では説明しない。
【0019】
システムインターフェース215はコンピュータ110内のシステムバス230とMCU205との間の通信を可能にするものである。システムインターフェース215に対する外部信号ラインは多数のデータライン(図示せず)を有する双方向のデータバス235を含む。データラインの正確な数はシステムバス230のアーキテクチャによってほぼ決まる。小型コンピュータシステムインターフェース(SCSI)アーキテクチャを有するシステムバス230との通信をするために、データバス235は、同時に16ビットのデータを通過させるように一般に16本の入出力データラインD<15:0>を有する。このシステムインターフェース215は信号バス240を介し、MCU205に結合されている。
【0020】
マイクロプロセッサ用インターフェース210はデータをアドレス指定するための、コンピュータ110内の中央処理ユニット(CPU)256で使用される論理ブロックアドレス(LBA)をMCU205で使用するための仮想的アドレス、すなわち論理アドレスに変換するためのハードウェアおよび/またはソフトウェアプロトコルを一般に含む。これら論理アドレスはマイクロプロセッサ用インターフェース210内の論理アドレスレジスタ255(仮想線で示されている)内にシーケンシャルに記憶され、双方向の多重化されたアドレス/データバス260によってMCU205へ送られる。ここで、「多重化された」なる用語はバス260内のラインの一部またはすべてがデータとアドレスとを別の時間に伝送することを意味する。マイクロプロセッサ用インターフェース210は双方向の多重化された別のアドレス/データバス265によりCPU245に結合されている。信号ライン270上のチップ選択信号は、読み出し動作または書き込み動作のためにコントローラ135をイネーブルする。信号ライン280上の読み出しデータ信号はチップ選択信号と共に大容量記憶デバイス115からMCU205を介し、コンピュータ110へデータを移動させる。信号ライン285上の書き込みデータ信号はチップ選択信号と共にMCU205へデータを移動させ、その後、データをバッファメモリ125にマッピングする。
【0021】
MCU205はローカルプロセッサ290(仮想線で示されている)を含み、このローカルプロセッサは命令レジスタ(図示せず)およびこのレジスタ内に埋め込まれたアキュムレータ(図示せず)と共に、第1キャッシュ(図示せず)を有する。MCU205はコンピュータ110からマイクロプロセッサ用インターフェース210およびシステムインターフェース215を介し、命令および論理アドレスを含むデータのブロックを取り込み、これらを命令レジスタおよびアドレスアキュムレータ内に記憶する。MCU205はデータを所定サイズのブロック、すなわちパラグラフに分割し、論理アドレスをバッファメモリ125内の物理アドレスに変換するためのマッピングプログラムを実行する。これらパラグラフはバッファメモリのアーキテクチャによって決まる1ビット〜数千バイトまでの任意の数のビットのデータを含むことができる。例えば、各々16コラムの16のグループにグループ分けされた4096の行および256の列のアレイを有する16MビットのSDRAMでは、データは各々16ビットの16ワードのパラグラフに分割される。列の1グループの各行には1つのパラグラフが記憶される。オプションとしてMCU205は大容量記憶デバイス115内に記憶され、これから再生されるデータの完全性をチェックするために、内部に記憶されたコンピュータプログラム製品と共に、コンピュータで読み出し可能な媒体を含む。例えば好ましい実施例では、MCU205はパラグラフに対するパリティワードを生成するためにパラグラフ内の各ワードに対しビットごとの排他的OR演算を実行する。単一SDRAMに記憶されるデータに対し、連続的なアドレス指定をするために、パラグラフに対するパリティワードをLRC領域300の同じ行に記憶することが好ましく、この行は、列の最終グループ、すなわち上記列241〜256内のすべての行を含む。
【0022】
図4を参照する。MCU205は種々の信号ラインを介し、バッファメモリ125内の第1SDRAM305および第2SDRAM310に結合されている。これら信号ラインは上記多重化された双方向のアドレス/データバス315と、チップ選択ライン320と、行アドレスストローブ(RAS)185と、列アドレスストローブ(CAS)190とを含む。アドレス/データバス315は各々1本以上のラインから成る3つのグループに分割されており、各グループはMCU205上のアドレス出力端の3つの組のうちの1つに接続されている。アドレス出力端の各組は1つ以上の個々のアドレス出力端を有することができる。本発明によれば、信号ライン325の第1グループはアドレス出力端330の第1の組を第2のSDRAM310のチップイネーブル180に結合し、その後のSDRAM(図示せず)が設けられている場合にはこのSDRAMに結合する。図4に示される実施例では、出力端330は信号ライン325により第2SDRAM310に結合されている。信号ライン335の第2グループはX個のアドレス出力端340の第2の組をSDRAM305、310のコラムデコーダ160にパラレルに結合している。ここで、XはSDRAM内の列のグループの数に等しい二進数の数字を示す整数である。Y本の信号ライン345の第3グループはY個のアドレス出力端350の第3の組を行デコーダ165にパラレルに結合している。ここでYはSDRAM305、310内の行の数に等しい二進数の数字を示す整数である。従って、総アドレス出力端およびアドレス/データバス315内の信号ラインの特定の数Nはバッファメモリ125内のSDRAM305、310の数および容量に応じて決まる。
【0023】
例えば、上記のように2個の16MビットのSDRAMを有するバッファメモリ125の場合、アドレス/データバス315内の信号ラインの本数は21に等しい。12桁の二進数を提供し、4096の行のうちの16を選択するために、これら信号ライン345のうちの12本が使用される。列の16グループのうちの1つを選択するのにX本の信号ライン335の第2グループ内の信号ラインのうちの4本が使用され、列のグループ内の16ワードのうちの1つを選択するのに他の4本の信号ラインが使用される。アドレス出力端330を第2SDRAM310のチップイネーブル180に結合するのに残りの信号ライン325が使用される。このアドレス出力端330はMCU205からのアドレス出力信号のうちの1つでよく、多重化したり、また双方向にする必要はない。更に、アドレス出力端330は図4に示されるように信号ライン325を介し、第2SDRAM310に直接結合してもよいし、またメモリインターフェース(図示せず)を介して第2SDRAM310に結合してもよい。
【0024】
本発明によれば、MCU205は論理アドレスを物理アドレスに変換する際に特殊なマッピング方式を利用しており、このマッピング方式により、バッファメモリ125内の異なるSDRAMにマッピングされるデータのシーケンシャルなブロックに対し、連続的な論理アドレスが得られる。図5は、垂直方向にスタックされた2つのメモリアレイを有する、本発明に係わるバッファメモリ125の好ましい実施例の一例の図である。この図5を参照すると、上記のような16Mビットの第1のSDRAM305および16Mビットの第2のSDRAM310を有するバッファメモリ125の場合、各々16ビットの16ワードから成る第1パラグラフ355、すなわちPARA0が第1SDRAM305上の行0および列0〜15に記憶される。この行アドレスはインクリメントされ、同じSDRAMの行1および列0〜15に第2のパラグラフ360、すなわちPARA1が記憶され、次々に同様な記憶が行われる。行の限界、すなわち行4096に達すると、第1SDRAM305の行4095および列0〜15に4096番目のパラグラフ365、すなわちPARA4096が記憶される。次に、この行アドレスがインクリメントされ、第2SDRAM310の行0および列0〜15に次のパラグラフ307、すなわちPARA4090が記憶される。最終SDRAMの最終行、すなわち第2SDRAM310の行4095に達するまで、このことが続く。次に列アドレスが列の次のグループ、すなわち列16〜31にインクリメントされ、行アドレスは第1の行、すなわち第1のSDRAM305の行0にループバックし、上記と同じような操作が続けられる。このように、LRC領域300は論理アドレスの範囲の頂部または端部まで有効に移動され、データをアドレス指定するのに利用できる論理アドレスの中断されていない大きいブロックが残る。
【0025】
次に図6を参照し、マッピング方式を実行するためのプロセス例のステップについて説明する。第1のステップ360にてアレイを上記行と列のグループに分割する。アドレス指定ステップ365にて列のグループの各行に行アドレスおよび列アドレスを有する物理アドレスが割り当てられる。次に、ステップ370にてデータは所定サイズのブロックに分割される。各ブロックは単一列のうちの単一行内に記憶できる大きさとなっている。ステップ375にて、アレイ内の列のグループのうちの行内にデータの1ブロックが記憶される。次の判断ステップ380にて行の限界に達したかどうか、すなわち最後にアドレス指定された行がアレイ内の最終行に対応するかどうかが判断される。行の限界に達していない場合、ステップ385にて行アドレスがインクリメントされ、ステップ375および380を繰り返す。行の限界に達している場合、ステップ392にてアレイの限界に達しているかどうか、すなわちすべてのアレイ内の列の対応するグループのすべての行内にデータが記憶されたかどうかが判断される。アレイの限界に達していない場合、プロセスはステップ395にて次のアレイまで進み、ステップ375から390が繰り返される。アレイの限界に達している場合、ステップ400にて列の限界に達しているかどうか、すなわちすべてのアレイ内の列のすべてのグループ内にデータが記憶されたかどうかが判断される。列の限界に達していない場合、ステップ405にてプロセスは列の次のグループに進み、ステップ375〜400が繰り返される。列の限界に達している場合、プロセスは終了する。
【0026】
上記マッピング方式はハードウェアプロトコル、ソフトウェアプロトコルまたはハイブリッドハードウェア/ソフトウェアプロトコルを含む、いくつかの異なる方法で実現できる。好ましい実施例では、コントローラは論理アドレスを物理アドレスに直接マッピングし、よってバッファメモリシステム120の速度および効率を改良するようになっているハードウェアアーキテクチャを有する。より詳細には、アドレス出力端に論理アドレスを示す二進数を与えることにより、適当な対応する物理アドレスが選択されるよう、バッファメモリ125にMCU205のアドレス出力端330、340、350が結合されている。例えば、二進のゼロ、すなわち論理低レベル信号をアドレス出力端に提供することにより、0の論理アドレスを有するデータがPARA0の第1ワードにマッピングされ、65,536に均等な二進数「1111111111111111」をアドレス出力端に与えることにより、65,536の論理アドレスを有するデータがPARA4095の最終ワードにマッピングされる。
【0027】
上記直接マッピング方法を示すため、次に2つの16MビットSDRAMを有するバッファメモリシステム120に必要な接続について説明する。16Mビットの1つのSDRAMが4096個の行と256個の列のアレイを有し、256個の列は各々16列から成る16個のグループにグループ分けされている。従って、本発明に係わる16Mビットの2つのSDRAMを有するバッファメモリシステム120は次のように接続され、A20〜A0(以下、A<20:0>とする)までの番号が付けられた21個のアレイ出力端を有するMCU205を必要とする。列の1グループ内の16ワードのうちの1つのワードを選択するのに、列デコーダ160のうちの4つの最小位ビット(LSD)、すなわちC<3:0>にアドレス出力端A<3:0>がパラレルに結合される。SDRAM内の4096個の行のうちの1つを選択するのに、SDRAM305、310のうちの行デコーダ165、すなわちR<11:0>にアドレス出力端A<15:4>が結合される。第2SDRAM310を選択するために、第2のSDRAM310のチップイネーブル180にアドレス出力端の次の最大位ビット(MSB)、すなわちA16が結合されている。列の16個のグループのうちの1つを選択するために、SDRAM305、310の列デコーダ160の4つのMSB、すなわちC<7:4>にアドレス出力端A<20:17>が結合されている。
【0028】
次に、上記アーキテクチャ例が本発明のマッピング方式をどのように実行するかを示すよう、図5を参照して書き込み動作について説明する。第1のSDRAM240のうちの行0、列0を選択するために、すべてのアドレス出力端A<20:0>に二進のゼロ、すなわち論理低レベル信号を与えることにより、バッファメモリ125に0の論理アドレスを有する第1パラグラフ(PARA0)内の第1ワードがマッピングされる。次に、RAS185およびCAS190を印加することにより、行アドレスおよび列アドレスがラッチされ、多重化されたアドレス出力端を通して第1のSDRAM305にデータの16ビットが書き込まれる。次に、列1を選択するよう、アドレス出力端A<3:0>に1に等しい二進数、すなわち0001を与えることにより、バッファメモリ125に1の論理アドレスを有する次のワードがマッピングされる。列15を選択するよう、アドレス出力端A<3:0>に15に等しい二進数、すなわち1111を与えることにより、バッファメモリ125に15の論理アドレスを有するPARA0内の最終ワードがマッピングされるまで、上記の操作が続けられる。論理アドレスを1だけインクリメントすると、アドレス出力端A<4:0>に10000が与えられ、第2パラグラフ(PARA1)の第1ワードを選択する。アドレス出力端A<15:0>に二進数「1111111111111111」を与えることにより、第1SDRAM305上の列15、行4095に65,536の論理アドレスを有する最終パラグラフ(PARA4095)内の最終ワードが書き込まれるまで、上記の操作が続けられる。シーケンシャルな次の論理アドレス65,537はアドレス出力端A<15:0>のすべてにゼロを与え、アドレス出力端A16に1を与え、第2SDRAM310上の第1パラグラフ(PARA4096)の第1ワードを選択する。このようなマッピングはアドレス出力端A<16:0>に二進数「11111111111111111」を与えることにより、131,071の論理アドレスを有する最終パラグラフ(PARA8091)内の最終ワードが書き込まれる直前まで続けられる。論理アドレスを1だけインクリメントし、論理アドレスを131,072とすると、アドレス出力端A<16:0>のすべてに0が与えられ、アドレス出力端A17に1が与えられ、これにより物理アドレスは第1SDRAM305上の列16〜31内の第1パラグラフ(PARA8092)の第1ワードまでループバックされる。
【0029】
オプションとして、コントローラ135はSDRAM305、310のLRC領域300内の物理アドレスにLRCワードをマッピングするよう、MCU205への別個の接続部を有する増設回路(図示せず)を含む。一般的にこのことは列デコーダ160の4つのMSBに適当な信号を印加し、列の最終グループを選択し、MCU205からの適当なアドレス出力端を行デコーダ165およびチップイネーブル180に結合し、次の4つの最大位出力端を列デコーダの4つのLSBに結合し、列を選択することによりSDRAMのうちの1つの行を選択することによって達成される。例えば上記1対の16MビットのSDRAM305、310を有するバッファメモリ125に対し、回路は次のように接続される。第1に列デコーダ160の4つのMSB、すなわちC<7:4>に16に等しい二進数が印加され、SDRAM305、310内の列の最終グループ、すなわち列241〜256を選択する。次に、上記のように行デコーダ165にアドレス出力端A<15:4>が結合され、第2SDRAM310のチップイネーブル180にアドレス出力端A16が結合され、LRCワードを発生した対象のパラグラフと同じ行が選択される。最後に、列のグループを選択するために使用されたアドレス出力端A<20:17>が列デコーダ160の4つのLSB、すなわちC<3:0>に結合され、LRCワードを記憶するための列の最終グループ内の適当な列を選択する。これとは異なり、MCU205のアドレス出力信号を内部で変換するソフトウェアプロトコルを使ってこのようなパリティマッピングを行うことができる。すなわちアドレス出力端A<3:0>およびA<20:17>の出力信号が切り替えられ、次にA<20:17>に1111が出力される。
【0030】
当業者が本明細書の説明を検討すれば容易に明らかとなるように、上記方式は別のサイズのSDRAMを有するバッファメモリシステム120にも適応できる。例えば1個の64MビットのSDRAMは8192個の行と256個の列のアレイを有し、256個の列は各々16個の列から成る16個のグループにグループ分けされる。従って、本発明に係わる2つの64MビットのSDRAMを有するバッファメモリシステム120は、次のように結合された23のアドレス出力端A<22:0>を有するMCU205を必要とする。アドレス出力端A<3:0>は列の1グループ内の16ワードのうちの1つを選択するよう、列デコーダ160の4つのLSB、すなわちC<3:0>に結合される。アドレス出力端A<22:19>は列の16個のグループのうちの1つを選択するよう、列デコーダ160の4つのMSB、すなわちC<7:4>に結合される。アドレス出力端A<17:4>は16384個の行のうちの1つを選択するように、行デコーダ165、すなわちR<13:0>に結合される。アドレス出力端A18は行アドレスが8091よりも大となった時に第2SDRAM310をイネーブルするよう、第2SDRAM310のチップイネーブル180に結合される。同様に、2つの4MビットのSDRAMを有するバッファメモリシステム120は、19のアドレス出力端、すなわちA<18:0>を有するMCU205を必要とする。アドレス出力端A<18:15>およびA<3:0>は列デコーダ160に結合され、それぞれグループ内の列のグループおよびワードを選択し、アドレス出力端A<13:4>は行デコーダ165に結合され、1024個の行のうちの1つを選択する。アドレス出力端A14は行アドレスが1023よりも大となった時に第2のSDRAM310をイネーブルするように、第2のSDRAM310のチップイネーブル180に結合される。
【0031】
図示していない別の実施例では、バッファメモリシステム120は増設SDRAMを含むように拡張でき、このシステムはMCU205から利用できるアドレス出力端の数およびRAS185、CAS190およびアドレス/データバス315にパラレルに接続される多数のSDRAMによって課される負荷に対応するMCUの出力ドライバーの能力によってしか制限されない。この拡張バッファメモリシステム120に対するマッピングはハードウェアまたはソフトウェアプロトコルおよびその他の使用されていないアドレス出力端を使用することによって達成できる。従って、このシステムの構造および方法は複数のRAMチップを含む任意の数のメモリデバイスに使用できる。
【0032】
本バッファメモリの方法およびシステムは従来の構造よりもいくつかの利点を有する。本バッファメモリ方法およびシステムの利点の1つは、より大きい容量のバッファメモリ125を提供でき、更に単一SDRAMおよび異なるSDRAM内に記憶されるデータのシーケンシャルなブロックに対する論理アドレスが連続的となるために、データに迅速にアクセスできるようにする、データの完全性を保証する方式を提供できることである。更に、本発明はデータのシーケンシャルブロック間の論理アドレスをスキップする必要性をなくしたことにより、コマンドオーバーヘッドを減少し、バッファメモリシステム120のバンド幅を広げ、CPU245の動作を簡素化している。
【0033】
次に、検討しながら本発明のいくつかの実施例の特徴について説明する。本発明はメモリシステム120および上記問題を解決する、システムの作動方法に関するものである。メモリシステム120は列アドレスを有する列のグループおよび行アドレスを有する行に配置されたいくつかのアレイ150を含む。システム120の作動方法は、データのブロックに対し連続的な論理アドレスを提供するように、アレイ150内にデータのブロックを記憶することを含む。アレイ150内の列の1グループのうちの行にデータの1ブロックを記憶し、次に行アレイをインクリメントし、行の限界に達するまでこのプロセスを繰り返す。行の限界に達した後に、アレイ150内の列の対応するグループのうちのすべての行にデータのブロックが記憶されるまで、別のアレイ150でプロセスを繰り返す。列アドレスをインクリメントし、行アドレスをリセットし、列の限界に達するまでこのプロセスを繰り返す。システム120の作動方法はアレイから再生されたデータの完全性をチェックするように、データの各ブロックに対しパリティワードを生成することも含む。より好ましくは、この方法はアレイ150内に記憶されたデータのブロックに対し生成されたパリティワードに対し、アレイ内の列の最終グループ内のすべての行を保留し、よってパリティワードの物理アドレスに関連する論理アドレスを論理アドレスの範囲の頂端部までシフトすることを含む。パリティワードを生成する工程は、水平冗長コードワードを生成するようにデータの各ブロックに対しビットごとの排他的OR演算を実行することを含むことができる。
【0034】
一実施例では、本発明はデータを記憶できるいくつかのアレイ150を含むバッファメモリシステム120を有するディスクドライブ(図示せず)を作動させる方法に関する。アレイ150は複数の行と複数の列のグループに分割されており、列の1グループのうちの各行は1つの物理アドレスを有する。データは所定サイズのブロックに分割されており、複数の行および複数の列のグループの物理アドレスは(i)データの第1ブロックが第1アレイ150内の列の1グループのうちの最終行に記憶され、(ii)データの第1ブロックの論理アドレスに連続する論理アドレスを有するデータの第2ブロックが第2アレイ150内の列の対応するグループの第1行に記憶されるように、論理アドレスと関連している。オプションとして、データの第3ブロックは第2アレイ150内の列の対応するグループの最終行に記憶され、データの第3ブロックの論理アドレスに連続する論理アドレスを有するデータの第4ブロックが第1アレイ150の列の第2グループの第1行に記憶される。
【0035】
別の特徴では、本発明はデータを記憶できるいくつかのアレイ150を有するメモリシステム120に関する。アレイの各々はある範囲の物理アドレスによって識別されるセル(図示せず)に分割されている。コントローラ135は論理アドレスと物理アドレスとを関連付け、セルにアクセスするようになっている。更にこのコントローラ135は異なるアレイ150内のセルに対する物理アドレスと連続する論理アドレスとを関連付けるようになっている。好ましくはコントローラ135はいくつかの出力330、340および350を含み、これら出力の各々は二進数の1つのビットを示す。より好ましくは、アレイ150はいくつかのランダムアクセスメモリ145を含み、出力端に論理アドレスを示す二進数を与えると、対応する物理アドレスを有するセルにアクセスされるように、アレイ150に出力端330、340および350が結合される。一実施例では、アレイ150は複数の行および複数の列のグループを含み、出力端330、340および350はランダムアクセスメモリを選択するように、ランダムアクセスメモリ145のうちの1つのチップイネーブル180に結合された少なくとも1つの出力端の第1の組330を含む出力端の組に分割されている。好ましくは、出力端は列の1つのグループを選択するためのX個の出力端340の第2の組と、1つの行を選択するためのY個の出力端350の第3の組を含む。より好ましくは、出力端330の第1の組は出力端350の第3の組によって表示された二進数の後の二進数の次の最大位ビットを示す出力端を含む。コントローラ135はアレイ150内に記憶されたデータの完全性をチェックするための、内部にコンピュータプログラム製品(図示せず)が記憶された、コンピュータで読み取り可能な媒体(図示せず)を含むことができる。
【0036】
更に別の特徴によれば、本発明はデータを記憶するためのデータ記憶デバイス115およびデータ記憶デバイスのためのデータを一時的に記憶できる数個のアレイ150を有するデータ記憶システム130に関するものである。アレイ150の各々はある範囲の物理アドレスによって識別されるセルに分割されている。コントローラ135は論理アドレスと物理アドレスとを関連付け、セルにアクセスする。コントローラ135は異なるアレイ150内のセルに対する物理アドレスと連続する論理アドレスとを関連付けるようになっている。データ記憶デバイス115は磁気ディスクドライブ(図示せず)、光ディスクドライブ(図示せず)または磁気光ディスクドライブ(図示せず)とすることができる。
【0037】
更に別の特徴によれば、本発明はある範囲の物理アドレスによって識別されるセルに分割されたいくつかのアレイ150および論理アドレスとセルの物理アドレスとを関連付けるための手段を有するデータ記憶システム130に関するものであり、上記手段は異なるアレイにおけるセルに対する物理アドレスと連続する論理アドレスとを関連付けるようになっている。オプションとして、論理アドレスと物理アドレスとを関連付ける手段は更にセルにアクセスするようになっている。好ましくはこの論理アドレスと物理アドレスとを関連付けるための手段はコントローラ135を含む。より好ましくはこのコントローラ135はいくつかの出力端330、340および350を有し、各出力端は二進数の1ビットを示し、これら出力端はアレイ150に結合されており、これら出力端に論理アドレスを示す二進数が与えられると、論理アドレスに関連した物理アドレスを有するセルにアクセスされるようになっている。
【0038】
以上で本発明の種々の実施例の構造および細部と共に、これまでの説明において本発明の種々の実施例のいくつかの特徴および利点について説明したが、これら開示は単に説明のためのものであり、細部、特に本発明の要旨内の部品の構造および配置に関し、添付した特許請求の範囲が示す用語の広義の一般的な意味が示す全範囲までに変更を行うことが可能であると理解すべきである。例えば本明細書に説明した好ましい実施例は、大容量記憶デバイス用のバッファメモリシステムに関するものであるが、当業者であれば本発明の要旨は本発明の要旨および範囲から逸脱することなく、コンピュータと他の周辺デバイス、例えばプリンタ、モデム、ネットワークアダプタまたはビデオインターフェースとを結合するよう実施できると理解されよう。
【図面の簡単な説明】
【図1】2つのメモリアレイを有する従来のバッファメモリの図である。
【図2】本発明の一実施例に係わるバッファメモリシステムにより大容量記憶デバイスに結合されたコンピュータのブロック図である。
【図3】アレイ、行デコーダ、列デコーダを有するSDRAMの一例の機能ブロック図である。
【図4】本発明に係わるバッファメモリシステムの好ましい実施例の機能ブロック図である。
【図5】本発明に係わる、2つの垂直方向にスタックされたメモリアレイを有するバッファメモリシステムの好ましい実施例のバッファメモリの図である。
【図6】連続する論理アドレスを多数のアレイにマッピングするための、本発明に係わるバッファメモリシステムの一実施例を作動させる方法のプロセスフローを示すフローチャートである。
(関連出願とのクロスレファレンス)
本願は1998年7月21日に出願された米国仮特許出願第60/093,741号に対する優先権を主張するものである。
【0002】
(発明の分野)
本発明は、一般的にはコンピュータのメモリシステムの分野に関し、より詳細には、ディスクドライブコントローラ用バッファメモリシステムに関する。
【0003】
(発明の背景)
バッファメモリシステムはホストコンピュータと大容量記憶デバイス、例えばディスクドライブとを結合するためのインターフェースとして一般に使用されている。かかるインターフェースの1つの問題は、大容量記憶デバイスとの間でやりとりされるデータがシリアルフォーマットであり、例えばディスクドライブの読み出し/書き込みヘッドとの間でやりとりされるデータであり、一方、コンピュータではデータがパラレルデータバスに沿って送られるようになっていることである。別の問題は、大容量記憶デバイスがデータを記憶したり検索したりできる速度よりも、より高速でコンピュータがデータを処理することである。従って、バッファメモリシステムはデータをパラレルフォーマットからシリアルフォーマットに変換しなければならず、かつコンピュータと大容量記憶デバイスとの間で転送されるデータを一時的に記憶することにより、大容量記憶デバイスにデータを書き込んだり、読み出したりするレートをコンピュータのより高いレートのほうに合わせなければならない。代表的なバッファメモリシステムはデータを一時的に記憶するためのバッファメモリと、データのブロックをコンピュータ内の中央処理ユニット(CPU)によって使用される論理ブロックアドレスからバッファメモリ内の対応する物理アドレスに変換するための、すなわちマッピングするためのコントローラとを含む。バッファメモリは一般に1つ以上の一時的データ記憶デバイス(例えばランダムアクセスメモリまたはメモリチップ(RAMチップ))を含む。RAMチップとは集積回路メモリチップのことであり、これらメモリチップは行と列に配列されたメモリセルのアレイを有する。図1は一対のアレイ100、105を有する従来のバッファメモリを略図で示し、各アレイは256の列アドレス×4096の行アドレスを有する。列アドレスは更に各々が16のコラムから成る16のグループに分割されており、各グループは各々16ビットの16ワードから成るパラグラフとして知られているデータのブロック内にデータを記憶できる。例えば、0の論理アドレスを有する第1パラグラフ(PARA0)106は、列の第1グループ(列0〜15)内の第1行(行0)にマッピングされ、第2パラグラフ(PARA1)107は、列0〜15の行1にマッピングされ、次々に同様のマッピングが行われる。列の第1グループ内の最終行に達した後、例えば4096番目のパラグラフ(PARA4095)108が行4095にマッピングされた後に、行アドレスは行0にループバックし、列アドレスは列の第2グループ、すなわち列16〜31にインクリメントされる。
【0004】
一般に、コントローラはディスクドライブに記憶され、このディスクドライブから再生されたデータの完全性をチェックするための方式も含む。かかる1つの方式では、コンピュータから受信したデータのパラグラフ内の各ワードに対し、ビットごとの排他的OR(XOR)演算を実行する。バッファメモリに記憶されたパラグラフにパリティワードとして知られるこのXOR演算の結果を添付し、大容量記憶デバイスに転送する。大容量記憶デバイスから、データの先に記憶されたパラグラフが再生されると、XOR演算を繰り返し、この結果と記憶されていたパリティワードとを比較する。この比較の結果が同じであれば、再生したデータを有効と見なし、同一でなければ、エラービットを識別し、訂正するために誤り訂正ルーチンを呼び出すことができる。このデータ完全性方式の1つの問題は、パリティワードがRAMチップ内の物理アドレスを占有するので、パリティワードにより対応する論理アドレスをデータのアドレス指定に利用できなくなり、よってデータのシーケンシャルなブロックに対する論理アドレスが不連続となることである。このような不連続な論理アドレスが生じると、コンピュータのCPUがある1論理アドレスから次の不連続な論理アドレスに進むのに必要な時間(コンピュータのクロックのサイクル数によって測定される)が長くなり、CPUの動作を妨げるので、このような論理アドレスが不連続となることは好ましいことではない。更に、論理アドレスが不連続になることによって、マッピングプロセスが複雑となり、バッファメモリシステムのバンド幅が狭くなってしまう。このバンド幅なる用語は、所定の時間中にバッファメモリとの間でどれだけ多くの情報を転送できるかを示すための、コンピュータメモリの技術分野で一般に使用されている。
【0005】
図1に示された1つの部分的解決方法は、水平冗長コード(LRC)として知られる方式を使用する方法である。先に述べたデータ完全性方式と同じように、パラグラフに対するパリティワード(この分野ではLRCワードとして知られている)を生成するように、パラグラフ内の各ワードに対し、ビットごとにXOR演算を実行する。しかしながら、先のデータ完全性方式とは異なり、このLRCワードはパラグラフに添付されず、パリティ情報用に専ら保留された列の最終グループ、すなわち列241〜256内に別個に記憶される。コントローラが1つの命令を実行するのに必要な処理時間であるコマンドオーバーヘッドを短縮するために、パラグラフに対するLRCワードは同じ行内に記憶することが好ましい。コマンドオーバーヘッドを短縮することにより、有効なタスクに対するシステムの利用可能なバンド幅が広くなる。同じ行内にLRCワードを記憶することにより、ある行アドレスから別の行アドレスに移動するのに必要な時間を節約できる。一般に、約7クロックサイクルが節約できる。次に図1を参照し、この方式を実行するためのプロセス例について説明する。まず、列241からスタートし、同じ行内の各パラグラフに対してLRCワードに対する列アドレスをインクリメントする。例えば行0、列241に第1パラグラフ106に対するLRCワードを記憶し、一方、行1、列241に第2パラグラフ107に対するLRCワードを記憶し、行0、列242に4097番目のパラグラフ109に対するLRCワードを記憶する。こうしてLRCワードは論理アドレスの範囲の上端部まで移動され、データをアドレス指定するのに利用できる論理アドレスの連続的ブロックが残る。
【0006】
上記解決案は単一の一時的記憶デバイス、例えば単一RAMチップを有するバッファメモリシステムに対しては正しく作動する。しかしながら、コンピュータプログラムのサイズおよびこのプログラムによって操作されるデータの双方が近年急速に増大したことにより、より大きい容量の大容量記憶デバイスが開発された。このような開発により、より高速のバッファメモリシステムとインターフェースするための、より多数のバッファメモリを有するバッファメモリシステムが求められている。これまでRAMチップの容量を増すか、またはバッファメモリにより多数のRAMチップを増設するかのいずれかにより、バッファメモリを増加していた。不幸なことにこれら解決案のいずれも完全に満足できるとは言えない。容量の増大と共にRAMのコストが劇的に増加するので好ましいものではなく、競争の激しいコンピュータメモリの市場にあっては、より高価な、より容量の大きいRAMを使用することは望ましくないので、第1の解決案は満足できるものではない。
【0007】
同様に、第2の解決案による問題、すなわちより多数のRAMチップを増設することによる問題は、従来のバッファメモリシステムで使用されている比較的安価で複雑でないコントローラが、単一コントローラによってアドレス指定できるRAMチップの数を1つまたは2つに一般に限定することである。RAMチップの数を増すことによる別の問題は、列の最終グループのすべての行をLRCワードのために保留する、上記データ完全性方式を使用するバッファメモリシステムでは、より多数のRAMチップを増設することにより、チップの境界を横断する際に再び論理アドレスが不連続となることである。チップの境界を横断するということは、第1RAMチップ上のデータに対して利用できる最終物理アドレスから第2RAMチップ上の第1の利用可能な物理アドレスに変化することを意味する。第2RAM15に移動する際にLRCワードに対し、第1RAM10の列241〜256内のすべての行が保留されるので、コントローラはこれら領域の物理アドレスに対応する論理アドレス上をスキップしなければならず、この結果、データのシーケンシャルなブロックに対する論理アドレスが不連続となる。
【0008】
従って、より多数のバッファメモリを有するより高速のバッファメモリシステムが求められている。また、異なる一時的記憶デバイス、例えば多数のRAMチップに対しマッピングされるデータのシーケンシャルなブロックに対し、連続的な論理アドレスを提供するバッファメモリシステムも求められている。また、大容量記憶デバイスに記憶され、このデバイスから再生されるデータの完全性をチェックするための方式を含むバッファメモリシステムも求められている。更に、バッファメモリシステムのバンド幅を広くするアドレス指定およびデータ完全性方式を含むバッファメモリシステムも求められている。最後に、商業的に可能性のあるものとするには、より安価でより少ない容量のRAMチップおよび現在のコントローラによって、バッファメモリの増加を実現することが望ましい。
【0009】
本発明は、上記およびそれ以外の問題に対する解決案を提供するものであり、従来技術に対する別の利点を提供するものである。
【0010】
(発明の概要)
本発明は上記問題を解決するメモリシステムおよびこのシステムを作動させる方法に関する。このメモリシステムは1つのコラムアドレスを有する複数の列のグループおよび1つの行アドレスを有する複数の行に配置されたいくつかのアレイを含む。本システムを作動させるには、データのブロックに対し連続する論理アドレスを提供するようにアレイにデータのブロックを記憶する。アレイ内の複数の列の1つのグループのうちの1つの行にデータの1ブロックを記憶し、行アドレスをインクリメントし、行の限界に達するまでこのプロセスを繰り返す。行の限界に達した後は、アレイ内の複数の列の対応するグループのすべての行にデータのブロックが記憶されるまで、別のアレイでこのプロセスを繰り返す。次に、例アドレスをインクリメントし、行アドレスをリセットし、列の限界に達するまでこのプロセスを繰り返す。好ましくは、このシステムを作動させる方法は、アレイから再生されたデータの完全性をチェックするために、データの各ブロックに対しパリティワードを生成することも含む。より好ましくは、この方法はアレイ内に記憶されたデータブロックに対し生成されたパリティワードに対し、アレイ内の列の最終グループ内のすべての行を保留し、よってパリティワードの物理アドレスに関連した論理アドレスの範囲の頂端部までシフトすることを含む。
【0011】
一実施例では、本発明はデータを記憶できるいくつかのアレイを含むバッファメモリシステムを有するディスクドライブを作動させる方法に関する。アレイは複数の行と複数の列のグループに分割されており、列の1グループのうちの各行は1つの物理アドレスを有する。データは所定サイズのブロックに分割されており、複数の行および複数の列のグループの物理アドレスは(i)データの第1ブロックが第1アレイ内の列の1グループのうちの最終行に記憶され、(ii)データの第1ブロックの論理アドレスに連続する論理アドレスを有するデータの第2ブロックが第2アレイ内の列の対応するグループの第1行に記憶されるように、論理アドレスと関連している。オプションとして、データの第3ブロックは第2アレイ内の列の対応するグループの最終行に記憶され、データの第3ブロックの論理アドレスに連続する論理アドレスを有するデータの第4ブロックは第1アレイの列の第2グループの第1行に記憶される。
【0012】
別の特徴では、本発明はデータを記憶できるいくつかのアレイを有するメモリシステムに関する。アレイの各々はある範囲の物理アドレスによって識別されるセルに分割されている。コントローラは論理アドレスと物理アドレスとを関連付け、セルにアクセスするようになっている。更にこのコントローラは異なるアレイ内のセルに対する物理アドレスと隣接する論理アドレスとを関連付けるようになっている。好ましくはコントローラはいくつかの出力端を含み、これら出力端の各々は二進数の1つのビットを示す。これら出力端は、出力端に論理アドレスを示す二進数が与えられると、対応する物理アドレスを有するセルにアクセスされるようにアレイに結合される。より好ましくはこれら出力端はアレイのうちの1つを選択するための少なくとも1つの出力端を含む。
【0013】
このメモリシステムは、データを記憶するためのデータ記憶デバイスを有するデバイス記憶システムに対し特に有効である。このデータ記憶デバイスは磁気ディスクドライブ、光ディスクドライブまたは磁気光ディスクドライブとすることができる。
【0014】
次の詳細な説明を読み、関連する図を検討すれば、本発明を特徴付ける上記およびそれ以外の種々の特徴だけでなく利点も明らかとなろう。
【0015】
(詳細な説明)
図2は、ホストコンピュータ110のブロック図であり、このホストコンピュータ110はバッファメモリシステム120によって大容量記憶デバイス115、例えば光ディスクドライブ、磁気−光ディスクドライブまたは磁気ディスクドライブに結合されている。バッファメモリシステム120はコンピュータ110または大容量記憶デバイス115の一部でもよいし、また別のハウジング内に収納されたディスクリートアセンブリでもよい。一般に、図2に示すように、バッファメモリシステム120は大容量記憶デバイス115と共に共通ハウジング130内に収納されている。バッファメモリシステム120は大容量記憶デバイス115との間で転送されるデータを一時的に記憶するためのバッファメモリ125と、データを論理アドレスからバッファメモリ125内の物理アドレスへ変換、すなわちマッピングするためのコントローラ135とを含む。
【0016】
バッファメモリ125は複数の一時的データ記憶デバイス140、例えばランダムアクセスメモリまたはメモリチップ(RAMチップ)を含み、RAMチップは行と列に配列されたデータを記憶するためのメモリセルのアレイを有する集積回路のメモリチップであり、各メモリセルは行と別の番号を含むユニークな物理アドレスによって識別できる。本発明で使用するのに適したRAMチップには数種類のタイプがあり、これらRAMチップとしてはダイナミックランダムアクセスメモリ(DRAM)タイプI、DRAMタイプIIとしても知られる高速ページモードのDRAM、同期DRAM(SDRAM)、拡張データ出力DRAM(EDO DRAM)およびスタティックランダムアクセスメモリ(SRAM)とが挙げられるが、これらのみに限定されるものではない。これらメモリのうち、SDRAMが好ましい。その理由は、DRAMタイプおよびEDO DRAMのいずれのタイプよりも高速であり、SRAMよりも安価であるからである。
【0017】
図3を参照すると、SDRAM145はメモリセル(図示せず)のアレイ150と、列デコーダ160と、行デコーダ165と、データ入力バッファ170と、センスアンプ175とを一般に含む。チップイネーブル180に信号を印加することにより、読み出し動作または書き込み動作のためにバッファメモリ125内の特定のSDRAM145が選択される。一部のアドレスラインが行デコーダ165に印加され、行アドレスストローブ(RAS)185によりラッチされ、残りのラインの信号が列デコーダ160に印加されており、列アドレスストローブ(CAS)190によってラッチされるようにコントローラ135からのアドレスバス(図示せず)が分割されている。書き込みイネーブル信号195はSDRAM145へのデータの書き込みをイネーブルし、出力イネーブル200はこのSDRAMからのデータの読み出しを可能にする。更にSDRAM145は、その他の種々の電圧入力端および/または制御信号も有するが、これら電圧入力端および制御信号は、当技術分野で公知であり、図3の実施例では示されておらず、また説明を簡潔にするため、また発明を不明確にしないように、本発明では説明しない。
【0018】
図4を参照し、本発明の一実施例を要約する。図4は、本発明に係わるバッファメモリシステム120の好ましい実施例の機能ブロック図である。図に示されるように、コントローラ135はメモリ制御ユニット(MCU)205によって構成されており、この制御ユニット205はマイクロプロセッサインターフェース210、システムインターフェース215および大容量記憶デバイス105に対するインターフェース、例えばディスクドライブ(図示せず)に対するフォーマッター220のインターフェースを含む種々のインターフェースに信号バスによって接続されている。フォーマッター220は信号バス225により大容量記憶デバイス105に接続されており、信号バス225は種々の信号ラインを有する。これら信号ラインは当技術分野で周知であるので、図4の実施例では図示されておらず、また本明細書では説明しない。
【0019】
システムインターフェース215はコンピュータ110内のシステムバス230とMCU205との間の通信を可能にするものである。システムインターフェース215に対する外部信号ラインは多数のデータライン(図示せず)を有する双方向のデータバス235を含む。データラインの正確な数はシステムバス230のアーキテクチャによってほぼ決まる。小型コンピュータシステムインターフェース(SCSI)アーキテクチャを有するシステムバス230との通信をするために、データバス235は、同時に16ビットのデータを通過させるように一般に16本の入出力データラインD<15:0>を有する。このシステムインターフェース215は信号バス240を介し、MCU205に結合されている。
【0020】
マイクロプロセッサ用インターフェース210はデータをアドレス指定するための、コンピュータ110内の中央処理ユニット(CPU)256で使用される論理ブロックアドレス(LBA)をMCU205で使用するための仮想的アドレス、すなわち論理アドレスに変換するためのハードウェアおよび/またはソフトウェアプロトコルを一般に含む。これら論理アドレスはマイクロプロセッサ用インターフェース210内の論理アドレスレジスタ255(仮想線で示されている)内にシーケンシャルに記憶され、双方向の多重化されたアドレス/データバス260によってMCU205へ送られる。ここで、「多重化された」なる用語はバス260内のラインの一部またはすべてがデータとアドレスとを別の時間に伝送することを意味する。マイクロプロセッサ用インターフェース210は双方向の多重化された別のアドレス/データバス265によりCPU245に結合されている。信号ライン270上のチップ選択信号は、読み出し動作または書き込み動作のためにコントローラ135をイネーブルする。信号ライン280上の読み出しデータ信号はチップ選択信号と共に大容量記憶デバイス115からMCU205を介し、コンピュータ110へデータを移動させる。信号ライン285上の書き込みデータ信号はチップ選択信号と共にMCU205へデータを移動させ、その後、データをバッファメモリ125にマッピングする。
【0021】
MCU205はローカルプロセッサ290(仮想線で示されている)を含み、このローカルプロセッサは命令レジスタ(図示せず)およびこのレジスタ内に埋め込まれたアキュムレータ(図示せず)と共に、第1キャッシュ(図示せず)を有する。MCU205はコンピュータ110からマイクロプロセッサ用インターフェース210およびシステムインターフェース215を介し、命令および論理アドレスを含むデータのブロックを取り込み、これらを命令レジスタおよびアドレスアキュムレータ内に記憶する。MCU205はデータを所定サイズのブロック、すなわちパラグラフに分割し、論理アドレスをバッファメモリ125内の物理アドレスに変換するためのマッピングプログラムを実行する。これらパラグラフはバッファメモリのアーキテクチャによって決まる1ビット〜数千バイトまでの任意の数のビットのデータを含むことができる。例えば、各々16コラムの16のグループにグループ分けされた4096の行および256の列のアレイを有する16MビットのSDRAMでは、データは各々16ビットの16ワードのパラグラフに分割される。列の1グループの各行には1つのパラグラフが記憶される。オプションとしてMCU205は大容量記憶デバイス115内に記憶され、これから再生されるデータの完全性をチェックするために、内部に記憶されたコンピュータプログラム製品と共に、コンピュータで読み出し可能な媒体を含む。例えば好ましい実施例では、MCU205はパラグラフに対するパリティワードを生成するためにパラグラフ内の各ワードに対しビットごとの排他的OR演算を実行する。単一SDRAMに記憶されるデータに対し、連続的なアドレス指定をするために、パラグラフに対するパリティワードをLRC領域300の同じ行に記憶することが好ましく、この行は、列の最終グループ、すなわち上記列241〜256内のすべての行を含む。
【0022】
図4を参照する。MCU205は種々の信号ラインを介し、バッファメモリ125内の第1SDRAM305および第2SDRAM310に結合されている。これら信号ラインは上記多重化された双方向のアドレス/データバス315と、チップ選択ライン320と、行アドレスストローブ(RAS)185と、列アドレスストローブ(CAS)190とを含む。アドレス/データバス315は各々1本以上のラインから成る3つのグループに分割されており、各グループはMCU205上のアドレス出力端の3つの組のうちの1つに接続されている。アドレス出力端の各組は1つ以上の個々のアドレス出力端を有することができる。本発明によれば、信号ライン325の第1グループはアドレス出力端330の第1の組を第2のSDRAM310のチップイネーブル180に結合し、その後のSDRAM(図示せず)が設けられている場合にはこのSDRAMに結合する。図4に示される実施例では、出力端330は信号ライン325により第2SDRAM310に結合されている。信号ライン335の第2グループはX個のアドレス出力端340の第2の組をSDRAM305、310のコラムデコーダ160にパラレルに結合している。ここで、XはSDRAM内の列のグループの数に等しい二進数の数字を示す整数である。Y本の信号ライン345の第3グループはY個のアドレス出力端350の第3の組を行デコーダ165にパラレルに結合している。ここでYはSDRAM305、310内の行の数に等しい二進数の数字を示す整数である。従って、総アドレス出力端およびアドレス/データバス315内の信号ラインの特定の数Nはバッファメモリ125内のSDRAM305、310の数および容量に応じて決まる。
【0023】
例えば、上記のように2個の16MビットのSDRAMを有するバッファメモリ125の場合、アドレス/データバス315内の信号ラインの本数は21に等しい。12桁の二進数を提供し、4096の行のうちの16を選択するために、これら信号ライン345のうちの12本が使用される。列の16グループのうちの1つを選択するのにX本の信号ライン335の第2グループ内の信号ラインのうちの4本が使用され、列のグループ内の16ワードのうちの1つを選択するのに他の4本の信号ラインが使用される。アドレス出力端330を第2SDRAM310のチップイネーブル180に結合するのに残りの信号ライン325が使用される。このアドレス出力端330はMCU205からのアドレス出力信号のうちの1つでよく、多重化したり、また双方向にする必要はない。更に、アドレス出力端330は図4に示されるように信号ライン325を介し、第2SDRAM310に直接結合してもよいし、またメモリインターフェース(図示せず)を介して第2SDRAM310に結合してもよい。
【0024】
本発明によれば、MCU205は論理アドレスを物理アドレスに変換する際に特殊なマッピング方式を利用しており、このマッピング方式により、バッファメモリ125内の異なるSDRAMにマッピングされるデータのシーケンシャルなブロックに対し、連続的な論理アドレスが得られる。図5は、垂直方向にスタックされた2つのメモリアレイを有する、本発明に係わるバッファメモリ125の好ましい実施例の一例の図である。この図5を参照すると、上記のような16Mビットの第1のSDRAM305および16Mビットの第2のSDRAM310を有するバッファメモリ125の場合、各々16ビットの16ワードから成る第1パラグラフ355、すなわちPARA0が第1SDRAM305上の行0および列0〜15に記憶される。この行アドレスはインクリメントされ、同じSDRAMの行1および列0〜15に第2のパラグラフ360、すなわちPARA1が記憶され、次々に同様な記憶が行われる。行の限界、すなわち行4096に達すると、第1SDRAM305の行4095および列0〜15に4096番目のパラグラフ365、すなわちPARA4096が記憶される。次に、この行アドレスがインクリメントされ、第2SDRAM310の行0および列0〜15に次のパラグラフ307、すなわちPARA4090が記憶される。最終SDRAMの最終行、すなわち第2SDRAM310の行4095に達するまで、このことが続く。次に列アドレスが列の次のグループ、すなわち列16〜31にインクリメントされ、行アドレスは第1の行、すなわち第1のSDRAM305の行0にループバックし、上記と同じような操作が続けられる。このように、LRC領域300は論理アドレスの範囲の頂部または端部まで有効に移動され、データをアドレス指定するのに利用できる論理アドレスの中断されていない大きいブロックが残る。
【0025】
次に図6を参照し、マッピング方式を実行するためのプロセス例のステップについて説明する。第1のステップ360にてアレイを上記行と列のグループに分割する。アドレス指定ステップ365にて列のグループの各行に行アドレスおよび列アドレスを有する物理アドレスが割り当てられる。次に、ステップ370にてデータは所定サイズのブロックに分割される。各ブロックは単一列のうちの単一行内に記憶できる大きさとなっている。ステップ375にて、アレイ内の列のグループのうちの行内にデータの1ブロックが記憶される。次の判断ステップ380にて行の限界に達したかどうか、すなわち最後にアドレス指定された行がアレイ内の最終行に対応するかどうかが判断される。行の限界に達していない場合、ステップ385にて行アドレスがインクリメントされ、ステップ375および380を繰り返す。行の限界に達している場合、ステップ392にてアレイの限界に達しているかどうか、すなわちすべてのアレイ内の列の対応するグループのすべての行内にデータが記憶されたかどうかが判断される。アレイの限界に達していない場合、プロセスはステップ395にて次のアレイまで進み、ステップ375から390が繰り返される。アレイの限界に達している場合、ステップ400にて列の限界に達しているかどうか、すなわちすべてのアレイ内の列のすべてのグループ内にデータが記憶されたかどうかが判断される。列の限界に達していない場合、ステップ405にてプロセスは列の次のグループに進み、ステップ375〜400が繰り返される。列の限界に達している場合、プロセスは終了する。
【0026】
上記マッピング方式はハードウェアプロトコル、ソフトウェアプロトコルまたはハイブリッドハードウェア/ソフトウェアプロトコルを含む、いくつかの異なる方法で実現できる。好ましい実施例では、コントローラは論理アドレスを物理アドレスに直接マッピングし、よってバッファメモリシステム120の速度および効率を改良するようになっているハードウェアアーキテクチャを有する。より詳細には、アドレス出力端に論理アドレスを示す二進数を与えることにより、適当な対応する物理アドレスが選択されるよう、バッファメモリ125にMCU205のアドレス出力端330、340、350が結合されている。例えば、二進のゼロ、すなわち論理低レベル信号をアドレス出力端に提供することにより、0の論理アドレスを有するデータがPARA0の第1ワードにマッピングされ、65,536に均等な二進数「1111111111111111」をアドレス出力端に与えることにより、65,536の論理アドレスを有するデータがPARA4095の最終ワードにマッピングされる。
【0027】
上記直接マッピング方法を示すため、次に2つの16MビットSDRAMを有するバッファメモリシステム120に必要な接続について説明する。16Mビットの1つのSDRAMが4096個の行と256個の列のアレイを有し、256個の列は各々16列から成る16個のグループにグループ分けされている。従って、本発明に係わる16Mビットの2つのSDRAMを有するバッファメモリシステム120は次のように接続され、A20〜A0(以下、A<20:0>とする)までの番号が付けられた21個のアレイ出力端を有するMCU205を必要とする。列の1グループ内の16ワードのうちの1つのワードを選択するのに、列デコーダ160のうちの4つの最小位ビット(LSD)、すなわちC<3:0>にアドレス出力端A<3:0>がパラレルに結合される。SDRAM内の4096個の行のうちの1つを選択するのに、SDRAM305、310のうちの行デコーダ165、すなわちR<11:0>にアドレス出力端A<15:4>が結合される。第2SDRAM310を選択するために、第2のSDRAM310のチップイネーブル180にアドレス出力端の次の最大位ビット(MSB)、すなわちA16が結合されている。列の16個のグループのうちの1つを選択するために、SDRAM305、310の列デコーダ160の4つのMSB、すなわちC<7:4>にアドレス出力端A<20:17>が結合されている。
【0028】
次に、上記アーキテクチャ例が本発明のマッピング方式をどのように実行するかを示すよう、図5を参照して書き込み動作について説明する。第1のSDRAM240のうちの行0、列0を選択するために、すべてのアドレス出力端A<20:0>に二進のゼロ、すなわち論理低レベル信号を与えることにより、バッファメモリ125に0の論理アドレスを有する第1パラグラフ(PARA0)内の第1ワードがマッピングされる。次に、RAS185およびCAS190を印加することにより、行アドレスおよび列アドレスがラッチされ、多重化されたアドレス出力端を通して第1のSDRAM305にデータの16ビットが書き込まれる。次に、列1を選択するよう、アドレス出力端A<3:0>に1に等しい二進数、すなわち0001を与えることにより、バッファメモリ125に1の論理アドレスを有する次のワードがマッピングされる。列15を選択するよう、アドレス出力端A<3:0>に15に等しい二進数、すなわち1111を与えることにより、バッファメモリ125に15の論理アドレスを有するPARA0内の最終ワードがマッピングされるまで、上記の操作が続けられる。論理アドレスを1だけインクリメントすると、アドレス出力端A<4:0>に10000が与えられ、第2パラグラフ(PARA1)の第1ワードを選択する。アドレス出力端A<15:0>に二進数「1111111111111111」を与えることにより、第1SDRAM305上の列15、行4095に65,536の論理アドレスを有する最終パラグラフ(PARA4095)内の最終ワードが書き込まれるまで、上記の操作が続けられる。シーケンシャルな次の論理アドレス65,537はアドレス出力端A<15:0>のすべてにゼロを与え、アドレス出力端A16に1を与え、第2SDRAM310上の第1パラグラフ(PARA4096)の第1ワードを選択する。このようなマッピングはアドレス出力端A<16:0>に二進数「11111111111111111」を与えることにより、131,071の論理アドレスを有する最終パラグラフ(PARA8091)内の最終ワードが書き込まれる直前まで続けられる。論理アドレスを1だけインクリメントし、論理アドレスを131,072とすると、アドレス出力端A<16:0>のすべてに0が与えられ、アドレス出力端A17に1が与えられ、これにより物理アドレスは第1SDRAM305上の列16〜31内の第1パラグラフ(PARA8092)の第1ワードまでループバックされる。
【0029】
オプションとして、コントローラ135はSDRAM305、310のLRC領域300内の物理アドレスにLRCワードをマッピングするよう、MCU205への別個の接続部を有する増設回路(図示せず)を含む。一般的にこのことは列デコーダ160の4つのMSBに適当な信号を印加し、列の最終グループを選択し、MCU205からの適当なアドレス出力端を行デコーダ165およびチップイネーブル180に結合し、次の4つの最大位出力端を列デコーダの4つのLSBに結合し、列を選択することによりSDRAMのうちの1つの行を選択することによって達成される。例えば上記1対の16MビットのSDRAM305、310を有するバッファメモリ125に対し、回路は次のように接続される。第1に列デコーダ160の4つのMSB、すなわちC<7:4>に16に等しい二進数が印加され、SDRAM305、310内の列の最終グループ、すなわち列241〜256を選択する。次に、上記のように行デコーダ165にアドレス出力端A<15:4>が結合され、第2SDRAM310のチップイネーブル180にアドレス出力端A16が結合され、LRCワードを発生した対象のパラグラフと同じ行が選択される。最後に、列のグループを選択するために使用されたアドレス出力端A<20:17>が列デコーダ160の4つのLSB、すなわちC<3:0>に結合され、LRCワードを記憶するための列の最終グループ内の適当な列を選択する。これとは異なり、MCU205のアドレス出力信号を内部で変換するソフトウェアプロトコルを使ってこのようなパリティマッピングを行うことができる。すなわちアドレス出力端A<3:0>およびA<20:17>の出力信号が切り替えられ、次にA<20:17>に1111が出力される。
【0030】
当業者が本明細書の説明を検討すれば容易に明らかとなるように、上記方式は別のサイズのSDRAMを有するバッファメモリシステム120にも適応できる。例えば1個の64MビットのSDRAMは8192個の行と256個の列のアレイを有し、256個の列は各々16個の列から成る16個のグループにグループ分けされる。従って、本発明に係わる2つの64MビットのSDRAMを有するバッファメモリシステム120は、次のように結合された23のアドレス出力端A<22:0>を有するMCU205を必要とする。アドレス出力端A<3:0>は列の1グループ内の16ワードのうちの1つを選択するよう、列デコーダ160の4つのLSB、すなわちC<3:0>に結合される。アドレス出力端A<22:19>は列の16個のグループのうちの1つを選択するよう、列デコーダ160の4つのMSB、すなわちC<7:4>に結合される。アドレス出力端A<17:4>は16384個の行のうちの1つを選択するように、行デコーダ165、すなわちR<13:0>に結合される。アドレス出力端A18は行アドレスが8091よりも大となった時に第2SDRAM310をイネーブルするよう、第2SDRAM310のチップイネーブル180に結合される。同様に、2つの4MビットのSDRAMを有するバッファメモリシステム120は、19のアドレス出力端、すなわちA<18:0>を有するMCU205を必要とする。アドレス出力端A<18:15>およびA<3:0>は列デコーダ160に結合され、それぞれグループ内の列のグループおよびワードを選択し、アドレス出力端A<13:4>は行デコーダ165に結合され、1024個の行のうちの1つを選択する。アドレス出力端A14は行アドレスが1023よりも大となった時に第2のSDRAM310をイネーブルするように、第2のSDRAM310のチップイネーブル180に結合される。
【0031】
図示していない別の実施例では、バッファメモリシステム120は増設SDRAMを含むように拡張でき、このシステムはMCU205から利用できるアドレス出力端の数およびRAS185、CAS190およびアドレス/データバス315にパラレルに接続される多数のSDRAMによって課される負荷に対応するMCUの出力ドライバーの能力によってしか制限されない。この拡張バッファメモリシステム120に対するマッピングはハードウェアまたはソフトウェアプロトコルおよびその他の使用されていないアドレス出力端を使用することによって達成できる。従って、このシステムの構造および方法は複数のRAMチップを含む任意の数のメモリデバイスに使用できる。
【0032】
本バッファメモリの方法およびシステムは従来の構造よりもいくつかの利点を有する。本バッファメモリ方法およびシステムの利点の1つは、より大きい容量のバッファメモリ125を提供でき、更に単一SDRAMおよび異なるSDRAM内に記憶されるデータのシーケンシャルなブロックに対する論理アドレスが連続的となるために、データに迅速にアクセスできるようにする、データの完全性を保証する方式を提供できることである。更に、本発明はデータのシーケンシャルブロック間の論理アドレスをスキップする必要性をなくしたことにより、コマンドオーバーヘッドを減少し、バッファメモリシステム120のバンド幅を広げ、CPU245の動作を簡素化している。
【0033】
次に、検討しながら本発明のいくつかの実施例の特徴について説明する。本発明はメモリシステム120および上記問題を解決する、システムの作動方法に関するものである。メモリシステム120は列アドレスを有する列のグループおよび行アドレスを有する行に配置されたいくつかのアレイ150を含む。システム120の作動方法は、データのブロックに対し連続的な論理アドレスを提供するように、アレイ150内にデータのブロックを記憶することを含む。アレイ150内の列の1グループのうちの行にデータの1ブロックを記憶し、次に行アレイをインクリメントし、行の限界に達するまでこのプロセスを繰り返す。行の限界に達した後に、アレイ150内の列の対応するグループのうちのすべての行にデータのブロックが記憶されるまで、別のアレイ150でプロセスを繰り返す。列アドレスをインクリメントし、行アドレスをリセットし、列の限界に達するまでこのプロセスを繰り返す。システム120の作動方法はアレイから再生されたデータの完全性をチェックするように、データの各ブロックに対しパリティワードを生成することも含む。より好ましくは、この方法はアレイ150内に記憶されたデータのブロックに対し生成されたパリティワードに対し、アレイ内の列の最終グループ内のすべての行を保留し、よってパリティワードの物理アドレスに関連する論理アドレスを論理アドレスの範囲の頂端部までシフトすることを含む。パリティワードを生成する工程は、水平冗長コードワードを生成するようにデータの各ブロックに対しビットごとの排他的OR演算を実行することを含むことができる。
【0034】
一実施例では、本発明はデータを記憶できるいくつかのアレイ150を含むバッファメモリシステム120を有するディスクドライブ(図示せず)を作動させる方法に関する。アレイ150は複数の行と複数の列のグループに分割されており、列の1グループのうちの各行は1つの物理アドレスを有する。データは所定サイズのブロックに分割されており、複数の行および複数の列のグループの物理アドレスは(i)データの第1ブロックが第1アレイ150内の列の1グループのうちの最終行に記憶され、(ii)データの第1ブロックの論理アドレスに連続する論理アドレスを有するデータの第2ブロックが第2アレイ150内の列の対応するグループの第1行に記憶されるように、論理アドレスと関連している。オプションとして、データの第3ブロックは第2アレイ150内の列の対応するグループの最終行に記憶され、データの第3ブロックの論理アドレスに連続する論理アドレスを有するデータの第4ブロックが第1アレイ150の列の第2グループの第1行に記憶される。
【0035】
別の特徴では、本発明はデータを記憶できるいくつかのアレイ150を有するメモリシステム120に関する。アレイの各々はある範囲の物理アドレスによって識別されるセル(図示せず)に分割されている。コントローラ135は論理アドレスと物理アドレスとを関連付け、セルにアクセスするようになっている。更にこのコントローラ135は異なるアレイ150内のセルに対する物理アドレスと連続する論理アドレスとを関連付けるようになっている。好ましくはコントローラ135はいくつかの出力330、340および350を含み、これら出力の各々は二進数の1つのビットを示す。より好ましくは、アレイ150はいくつかのランダムアクセスメモリ145を含み、出力端に論理アドレスを示す二進数を与えると、対応する物理アドレスを有するセルにアクセスされるように、アレイ150に出力端330、340および350が結合される。一実施例では、アレイ150は複数の行および複数の列のグループを含み、出力端330、340および350はランダムアクセスメモリを選択するように、ランダムアクセスメモリ145のうちの1つのチップイネーブル180に結合された少なくとも1つの出力端の第1の組330を含む出力端の組に分割されている。好ましくは、出力端は列の1つのグループを選択するためのX個の出力端340の第2の組と、1つの行を選択するためのY個の出力端350の第3の組を含む。より好ましくは、出力端330の第1の組は出力端350の第3の組によって表示された二進数の後の二進数の次の最大位ビットを示す出力端を含む。コントローラ135はアレイ150内に記憶されたデータの完全性をチェックするための、内部にコンピュータプログラム製品(図示せず)が記憶された、コンピュータで読み取り可能な媒体(図示せず)を含むことができる。
【0036】
更に別の特徴によれば、本発明はデータを記憶するためのデータ記憶デバイス115およびデータ記憶デバイスのためのデータを一時的に記憶できる数個のアレイ150を有するデータ記憶システム130に関するものである。アレイ150の各々はある範囲の物理アドレスによって識別されるセルに分割されている。コントローラ135は論理アドレスと物理アドレスとを関連付け、セルにアクセスする。コントローラ135は異なるアレイ150内のセルに対する物理アドレスと連続する論理アドレスとを関連付けるようになっている。データ記憶デバイス115は磁気ディスクドライブ(図示せず)、光ディスクドライブ(図示せず)または磁気光ディスクドライブ(図示せず)とすることができる。
【0037】
更に別の特徴によれば、本発明はある範囲の物理アドレスによって識別されるセルに分割されたいくつかのアレイ150および論理アドレスとセルの物理アドレスとを関連付けるための手段を有するデータ記憶システム130に関するものであり、上記手段は異なるアレイにおけるセルに対する物理アドレスと連続する論理アドレスとを関連付けるようになっている。オプションとして、論理アドレスと物理アドレスとを関連付ける手段は更にセルにアクセスするようになっている。好ましくはこの論理アドレスと物理アドレスとを関連付けるための手段はコントローラ135を含む。より好ましくはこのコントローラ135はいくつかの出力端330、340および350を有し、各出力端は二進数の1ビットを示し、これら出力端はアレイ150に結合されており、これら出力端に論理アドレスを示す二進数が与えられると、論理アドレスに関連した物理アドレスを有するセルにアクセスされるようになっている。
【0038】
以上で本発明の種々の実施例の構造および細部と共に、これまでの説明において本発明の種々の実施例のいくつかの特徴および利点について説明したが、これら開示は単に説明のためのものであり、細部、特に本発明の要旨内の部品の構造および配置に関し、添付した特許請求の範囲が示す用語の広義の一般的な意味が示す全範囲までに変更を行うことが可能であると理解すべきである。例えば本明細書に説明した好ましい実施例は、大容量記憶デバイス用のバッファメモリシステムに関するものであるが、当業者であれば本発明の要旨は本発明の要旨および範囲から逸脱することなく、コンピュータと他の周辺デバイス、例えばプリンタ、モデム、ネットワークアダプタまたはビデオインターフェースとを結合するよう実施できると理解されよう。
【図面の簡単な説明】
【図1】2つのメモリアレイを有する従来のバッファメモリの図である。
【図2】本発明の一実施例に係わるバッファメモリシステムにより大容量記憶デバイスに結合されたコンピュータのブロック図である。
【図3】アレイ、行デコーダ、列デコーダを有するSDRAMの一例の機能ブロック図である。
【図4】本発明に係わるバッファメモリシステムの好ましい実施例の機能ブロック図である。
【図5】本発明に係わる、2つの垂直方向にスタックされたメモリアレイを有するバッファメモリシステムの好ましい実施例のバッファメモリの図である。
【図6】連続する論理アドレスを多数のアレイにマッピングするための、本発明に係わるバッファメモリシステムの一実施例を作動させる方法のプロセスフローを示すフローチャートである。
Claims (10)
- 複数のデータ記憶デバイスのうちの各々がアレイを有し、これらアレイが列のグループおよび行に配置されており、行が行アドレスを有し、列のグループが列アドレスを有し、異なるデータ記憶デバイスに記憶されたデータのシーケンシャルなブロックの間に連続する論理アドレスを提供するよう、前記複数のデータ記憶デバイス内にデータのブロックを記憶する方法であって、
(a)前記データ記憶デバイスに位置するアレイ内の列のグループのうちの行内にデータのブロックを記憶する工程と、
(b)特定のデータ記憶デバイスに対して、行の限界に達するまで行アドレスをインクリメントすると共に、前記工程(a)を繰り返す工程と、
(c)次ぎのアレイを有する次ぎのデータ記憶デバイスに進むと共に、前記工程(a)の列のグループに対応するグループのすべての行にデータブロックが記憶されるまで、該次ぎのデータ記憶デバイスに対して前記工程(a)および(b)を繰り返す工程と、
(d)前記複数のデータ記憶デバイス内に対応するアレイの限界に達するまで、前記工程(a)から(c)を繰り返す工程と、
(e)列アドレスをインクリメントし、行アドレスをリセットする工程と、
(f)列の限界に達するまで前記工程(a)から(e)までを繰り返す工程とを備えた、複数のデータ記憶デバイスにデータのブロックを記憶する方法。 - 複数のデータ記憶デバイスを含み、該データ記憶デバイスの各々がデータを記憶できるアレイを有する、バッファメモリシステムを有するディスクドライブを作動させる方法において、
(a)列のグループのうちの各行が行アドレスおよび列アドレスを含む1つの物理アドレスを有するように、アレイを列のグループおよび行に分割する工程と、
(b)列のグループの行にデータの各ブロックを記憶できるよう、データを所定サイズのブロックに分割する工程と、
(c)(i)前記データ記憶デバイスに位置するアレイ内の列のグループのうちの行内にデータのブロックを記憶する工程と、
(ii)特定のデータ記憶デバイスに対して、行の限界に達するまで行アドレスをインクリメントすると共に、前記工程(i)を繰り返す工程と、
(iii)次ぎのアレイを有する次ぎのデータ記憶デバイスに進むと共に、前記工程 (i) の列のグループに対応するグループのすべての行にデータブロックが記憶されるまで、該次ぎのデータ記憶デバイスに対して前記工程(i)および(ii)を繰り返す工程と、
(iv)前記複数のデータ記憶デバイス内に対応するアレイの限界に達するまで、前記工程(i)から(iii)を繰り返す工程と、
(v)列アドレスをインクリメントすると共に行アドレスをリセットする工程と、
(vi)列の限界に達するまで前記工程(i)〜(v)を繰り返す工程により、列のグループおよび行の物理アドレスと論理アドレスとを関連付ける工程とを備え、よって異なるデータ記憶デバイス内に記憶されたデータのシーケンシャルなブロック内に連続する論理アドレスを設ける、ディスクドライブを作動させる方法。 - データの各ブロックに対し、パリティワードを生成する工程を更に含む、請求項2記載の方法。
- アレイに記憶されたデータのブロックに対し生成されたパリティワードのために、アレイ内の列の最終グループ内のすべての行を保留し、よってパリティワードが論理アドレスのある範囲の頂端部における論理アドレスと関連付けられた物理アドレスを有するようにする工程を更に含む、請求項3記載の方法。
- (a)複数のデータ記憶デバイスであって、該データ記憶デバイスの各々がデータのブロックを記憶できるアレイを有し、これらアレイの各々がセルを識別するためのある範囲の物理アドレスを有するセルを形成するよう列のグループおよび行に分割されており、物理アドレスの各々が行アドレスおよび列アドレスを含む、該複数のデータ記憶デバイスと、
(b)前記セルにアクセスするためのコントローラとを備え、該コントローラは、異なるデータ記憶デバイスに記憶されるデータのシーケンシャルなブロックの間に連続的な論理アドレスを提供するよう、論理アドレスと物理アドレスとを関連付けるようになっており、前記コントローラは更に、
(i)前記データ記憶デバイスに位置するアレイ内の列のグループのうちの行内にデータのブロックを記憶する工程と、
(ii)特定のデータ記憶デバイスに対して、行の限界に達するまで行アドレスをインクリメントすると共に、前記工程(i)を繰り返す工程と、
(iii)次ぎのアレイを有する次ぎのデータ記憶デバイスに進むと共に、前記工程 (i) の列のグループに対応するグループのすべての行にデータブロックが記憶されるまで、該次ぎのデータ記憶デバイスに対して前記工程(i)および(ii)を繰り返す工程と、
(iv)前記複数のデータ記憶デバイス内に対応するアレイの限界に達するまで、前記工程(i)から(iii)を繰り返す工程と、
(v)列アドレスをインクリメントすると共に行アドレスをリセットし、 (vi)列の限界に達するまで前記工程(i)〜(v)を繰り返すようになっているメモリシステム。 - 前記コントローラが複数の出力端を含み、各出力端が二進数の1ビットを表示し、前記出力端が複数のデータ記憶デバイスに結合されており、よって前記複数の出力端に論理アドレスを示す二進数を与えると、この論理アドレスに関連する物理アドレスを有するセルにアクセスされる、請求項5記載のメモリシステム。
- 前記複数のデータ記憶デバイスが複数のランダムアクセスメモリを含み、前記複数の出力端の少なくとも1つが前記ランダムアクセスメモリのうちの1つのチップイネーブルに結合されている、請求項6記載のメモリシステム。
- 前記コントローラは、前記アレイ内に記憶されたデータの完全性をチェックするためのコンピュータプログラムが内部に記憶された、コンピュータで読み取り可能な媒体を含む、請求項5記載のメモリシステム。
- 前記データ記憶システムが、前記コントローラに接続され、データを記憶するための大容量記憶デバイスを更に含み、該大容量記憶デバイスは前記コントローラとの間でデータ転送を行う、請求項5記載のメモリシステムを含むデータ記憶システム。
- 前記大容量記憶デバイスが磁気ディスクドライブと、光ディスクドライブと、磁気光ディスクドライブとから成る群から選択されたものである、請求項9記載のデータ記憶システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US60/093,741 | 1998-07-21 | ||
PCT/US1999/016469 WO2001006371A1 (en) | 1998-07-21 | 1999-07-20 | Improved memory system apparatus and method |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003505762A JP2003505762A (ja) | 2003-02-12 |
JP3561502B2 true JP3561502B2 (ja) | 2004-09-02 |
JP3561502B6 JP3561502B6 (ja) | 2004-12-08 |
Family
ID=
Also Published As
Publication number | Publication date |
---|---|
JP2003505762A (ja) | 2003-02-12 |
DE19983410T1 (de) | 2001-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6125072A (en) | Method and apparatus for contiguously addressing a memory system having vertically expanded multiple memory arrays | |
JP3307579B2 (ja) | データ記憶システム | |
US5864568A (en) | Semiconductor memory device for mass storage block access applications | |
US5394541A (en) | Programmable memory timing method and apparatus for programmably generating generic and then type specific memory timing signals | |
US7035993B2 (en) | Flash memory data access method and configuration employing logical-to-virtual and virtual-to-physical sector mapping | |
JP4317166B2 (ja) | データを転送するインタフェースを有する光記憶システム | |
US5280601A (en) | Buffer memory control system for a magnetic disc controller | |
WO2010051621A1 (en) | Bridge device having a virtual page buffer | |
JP4199658B2 (ja) | 読出及び書込動作でバースト順序が異なるアドレッシングを行うメモリデバイス | |
US5765182A (en) | Interleaving memory on separate boards | |
JPH0412859B2 (ja) | ||
US5404454A (en) | Method for interleaving computer disk data input-out transfers with permuted buffer addressing | |
US7840744B2 (en) | Rank select operation between an XIO interface and a double data rate interface | |
JP2005512262A5 (ja) | ||
JP2002312232A (ja) | 半導体記憶装置 | |
JPH1198462A (ja) | データ再生装置 | |
US8402199B2 (en) | Memory management system and method thereof | |
US11842266B2 (en) | Processing-in-memory (PIM) device, controller for controlling the PIM device, and PIM system including the PIM device and the controller | |
JP3561502B2 (ja) | 改良されたメモリシステムおよび方法 | |
JP3561502B6 (ja) | 改良されたメモリシステムおよび方法 | |
JP2001250386A (ja) | 半導体メモリ | |
KR20190035392A (ko) | 데이터 다중 기록을 수행하는 메모리 장치, 메모리 장치의 동작방법 및 메모리 컨트롤러의 동작방법 | |
TWI721660B (zh) | 控制資料讀寫裝置與方法 | |
US20230195327A1 (en) | Memory system and method of operating the same | |
JP4629198B2 (ja) | 演算装置及び演算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040409 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040528 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |