(57)【特許請求の範囲】
【請求項１】
コントローラおよび少なくとも２つのメモリデバイスを有するデジタルメモリシステムであって、少なくとも１つのデータバスが、該コントローラをそれぞれの該メモリデバイスに接続し、該コントローラは、自身の操作時間を測るためのシステムクロックを有しており、
それぞれの前記メモリデバイスにおけるバッファであって、データ出力を遅らせる時間量に対応する数を格納するようそれぞれが適合されたバッファと、
前記コントローラにより実行されるルーチンであって、該ルーチンにより、該コントローラが、
それぞれの前記メモリデバイスについて、該メモリデバイスに応答をプロンプトし、該メモリデバイスへの該プロンプトと該メモリデバイスからの該応答の受信との間、該コントローラにおいてクロックパルス数をカウントし、
前記少なくとも２つのメモリデバイスのうちの前記応答に必要とされたクロックパルス数の最大値によって測定された最大遅延時間を求め、
それぞれの前記メモリデバイスのバッファに、該メモリデバイスからのデータが前記最大遅延時間で前記コントローラに受け取られるようにするための数を格納する、ルーチンと、
それぞれの前記メモリデバイスにおける回路であって、前記バッファに格納された数に応じてデータ出力を遅らせる、回路と、
を備える、デジタルメモリシステム。
【発明の詳細な説明】
発明の分野
この開示は、メモリシステムおよび装置、より具体的には、メモリチップからの応答の同期を取る方法を提供する。
発明の背景
コンピュータおよびそれらの中央処理装置（「ＣＰＵ」）が、より高速に命令を実行することができるようになるにつれ、この能力は、増大したメモリサイズ、速度、およびバスサイズを必要とする。この要求は、現在および未来のメモリデバイス設計の最適化に向けて多くの設計努力を生じさせ、高速なメモリ応答を提供してきた。メモリデバイスの一般に認識される現在の例は、ＣＤ−ＲＯＭのような機械的および光学的なデバイスだけでなく、ダイナミックランダムアクセスメモリ（「ＤＲＡＭ」）、リードオンリーメモリ（「ＲＯＭ」）およびシンクロナスランダムアクセスメモリ（「ＳＲＡＭ」）を有する。
典型的なデータ読出し操作を実行する際に、メモリコントローラ（通常、ＣＰＵ、または、より大きいシステムでは専用のメモリコントローラ）は、読み出しコマンドを特定のメモリチップに送る。このコマンドは、１本または複数本のコマンドバスに沿って、チップに伝えられる。特定のチップにより受けとられるとき、コマンドにより、チップは、メモリコントローラのためのリターンデータ信号として、その内部のメモリアレイからデータバス上へ、出力を見つけて送り出す。その後、出力はデータバスに沿って伝わり、これは、コマンドバスと同じ経路を伝わってもよいし、同じ経路でなくてもよい。この与えられた例では、コントローラからチップへの読み出しコマンドの伝搬時間、チップの内部レジスタに電力を供給し適切な出力をデータバスに伝えるのにチップに必要な時間、およびコントローラへ出力を戻す伝搬に必要な時間も含めて、時間遅延の４つの源がある。時間遅延の４番目の源は、分割データバスを持つシステムにあり（たとえば、異なる有意性のビットグループを運ぶ別個の並列データバス）、並列データバスの１つに沿った遅い検索によって引き起こされるコントローラの遅延である。典型的に、設計努力は、これらの時間のうち２番目を減らすことのみ、たとえば、メモリチップ内の命令の内部的な経路および処理を改良することのみに集中されてきた。また、より大きいシステムのための設計努力は、たとえば、欧州特許番号第0 339 224 A2号で説明され、そこで引用される技術分野のように、複数のメモリバンクを効率的に管理することができるメモリコントローラを目指して行われてきた。
しかし、上記述べた設計努力は、より応答性に優れたメモリデバイスを継続的に提供する一方で、複数バスにわたって同期をイネーブルしないし、複数のメモリチップ間で同時に起こるバス競合の可能性を取り除きもしない（この問題を、図１および図２を参照して説明する）。
バス競合
図１は、ＣＰＵ２２によりアクセスされる仮定的なメモリシステム２１を示す。メモリシステム２１は、メモリコントローラ２３、コマンドバス２５、データバス２７および２つのメモリデバイス２９と３１を備え、メモリデバイス２９および３１は、図１の例ではＲＡＭチップである。コマンドバスは、システムクロック信号３３（コントローラにより発行される）、データ読出し信号３５およびアドレスバス３７を有する。ＲＡＭチップ２９および３１のそれぞれは、バス配線の見地から、コントローラ２３から異なる距離にあると推定されるので、コマンドがそれぞれのチップに達するのにかかる時間は、わずかに異なる。図２は、同時に起こるバス競合の問題を説明するためのタイミング図を示す。
メモリシステム２１ができるだけ高速に動作するのが望ましいので、コントローラ２３は、連続したクロックサイクルで、３つのデータの読み出しコマンドを発行する。これらのコマンドの第１および第３が、前述のＲＡＭチップ２９および３１のそれぞれに送られ、第２のコマンドは、この発明の説明には重要でないのでダッシュ（−）で示されている。システムクロックが２５０メガヘルツの周波数を持つので、図２の（ａ）のそれぞれの方形パルスの幅は、関連した２ナノ秒の「ハイ(high)」時間を持つ。図２の（ｂ）は、メモリコントローラによる２つのデータ読み出し操作３９および４１の発行を示し、それぞれ「Ｘ」および「Ｙ」で示されており、これらは、それらの目当てのＲＡＭチップ宛先に向かってコマンドバスに沿って伝わる。
図２の（ｃ）は、第１のＲＡＭチップ２９によるコマンド「Ｘ」の応答のタイミングを示すのに対し、図２の（ｄ）は、第２のＲＡＭチップ３１によるコマンド「Ｙ」の応答のタイミングを示す。第１のチップ２９は、図２の（ｃ）により示されるように、それが伝えられた後８クロックサイクルを経て、９番目のクロックサイクルの始まりで、そのコマンド「Ｘ」を受け取り、その出力「Ｄ−Ｘ」を検索してデータバス上に位置づけるのに２０ナノ秒かかっている。対称的に、第２のチップ３１は、図２の（ｄ）に示されるように、それが伝えられた後７クロックサイクルのみで、そのコマンド「Ｙ」を受け取り、その出力「Ｄ−Ｙ」をデータバス上に置くのに２０ナノ秒かかっている。それぞれのＲＡＭチップ２９および３１の出力がコントローラに戻るのに、最初にＲＡＭチップに達するコマンドの場合と同じ伝搬時間がかかるならば、出力「Ｄ−Ｘ」および「Ｄ−Ｙ」の両方とも、同時にコントローラ２３に到達する（図２の（ｅ）の斜線をつけたブロック４３に示されるように）。この例では、アドレスバスおよびデータバスが、それらに関連する同様の伝搬時間を持つよう示されていることに注意すべきである（コマンドバスとデータバスが別々の経路をもつメモリシステムの設計では、この結果は必ずしも生じないけれども）。さらに、２つのメモリデバイスだけが上記に示され、メモリデバイスの数が増大するにつれ、また、ＣＰＵがますます効率的になり、数百メガヘルツの周波数およびそれより大きい周波数で動作するようになるにつれ、バス競合の問題が、特に複雑化することが容易にわかるであろう。
複数の並列データバスに沿って同時応答を可能にするメモリシステムが明らかに必要である。また、１つのデータバスに沿った複数のメモリデバイス間で同時に起こるバス競合を回避するシステムが、明らかに必要である。このようなシステムは、個々のチップに達する伝搬時間が、１つのクロックサイクル全体またはそれより大きく異なることがある状況に対処するのが好ましい。複数デバイスのバス競合を避けることにより、ＣＰＵおよび専用メモリコントローラのようなメモリコントローラが、連続したクロックサイクルでデータの読み出しおよび書き込み操作を実行でき、それにより、ＣＰＵ設計および増大したコンピュータ速度とメモリ容量に向かう傾向に歩調を合わせることができる。この発明はこれらの必要性を解決し、さらに関連した利点を提供する。
発明の概要
この発明は、上記述べた必要性を満たすメモリシステムおよびデバイスを提供する。この発明は、データの要求が行われた後予め決められた時間、ＣＰＵまたはメモリコントローラのようなコントローラにデータ出力を提供する操作において、個々のメモリデバイス（マイクロチップのような）を遅延させることができるメモリシステムを提供する。したがって、ＣＰＵまたはメモリコントローラは、第２のデータ読み出しを始めるに先だって、第１のデータ読み出しが完了するまで待つ必要がない。また、並列な８ビットまたは他のサイズのデータバスを供給するメモリチップを、配線およびバス・ルーチング(routing)の違いに妨げられることなく、ＣＰＵへの同時応答を提供するよう遅らせることができるので、システムは、スケーラブル(scalable)なデータバスの使用を容易にする。したがって、明らかなように、この発明は、実質的な有用性をメモリシステムに提供する。
この発明の第１の形は、システムクロック、コントローラおよび少なくとも２つのメモリデバイスを持つメモリシステムを提供し、少なくとも１つのデータバスは、コントローラをそれぞれのメモリデバイスに連結する。メモリシステムは、それぞれのメモリデバイスのバッファにより特徴づけられ、バッファは、メモリデバイスが出力を遅らせることになる時間を格納するよう適合される。さらに、ルーチンがコントローラにより実行され、コントローラは、メモリデバイスのそれぞれをプロンプト(prompt)し、その応答が受け取られるまでクロックパルス数をカウントする。両方のメモリデバイスについてこれが行われると、コントローラは最大トラベル時間(travel time)を判断し、２つのメモリデバイスのうちの少なくとも１つの応答時間を調整し、メモリ要求が、最大の応答時間を持つ応答同期となるようにする。
このようにして、この発明に従って作られるデバイスは、（１）並列データバスにわたって、たとえば、６４ビットデータバスを構成する４つの個々の１６ビットバスにわたって、確実に同時応答し、（２）直列に、１つのデータバスに沿って、同じデータバスに沿った複数のデバイス間のバス競合を回避して、データ読み出しを連続クロックサイクルで実行できるようにし、または（３）上記両方を行い、メモリデバイスの応答の同期をとることができる。
この趣旨で、この発明の第２の形は、バッファを持つメモリデバイスを提供し、メモリデバイスの動作を遅延させる。この発明のこの形によると、メモリデバイスはシステムクロックを受け取り、デバイスの出力が遅れることになるクロックサイクル数をバッファに格納する。その後、データ読み出しコマンドが受け取られるとき、デバイスは、最初に、バッファにより示される数に達するまでカウントし始め、その後データの取り出し操作を開始する。代わりに、デバイスは、内部のメモリ記憶領域からデータを即座に取り出すことができ、バッファの内容に応答する量だけ、対応するデータバス上へのその出力のラッチを遅らせることができる。
この発明のより具体的な側面では、メモリデバイスは構成モードを備え、デバイスは、システムコントローラにより、このモードに入るよう命令されることができる。コントローラは、構成コマンドをメモリデバイスのモードレジスタに書き込むのが好ましく、これにより、デバイスは、デバイスをコントローラに接続するデータバスを監視するようになる。デバイスはバスを監視し、コントローラからの入力ストローブおよび予め決められたデータ語の両方を検出する。メモリデバイスがこのデータ語を検出するとき、メモリデバイスは、好ましくはシステムクロックからデバイスにより局所的に導き出される出力ストローブと一緒に、応答語をデータバス上に取り込む。コントローラは出力ストローブを使用し、データバス上の入って来るデータが有効であって、その結果経過時間を判断するのに用いることができるということを認識する。この経過時間から、コントローラは、特定のデバイスに適切な遅延時間を判断し、それをデバイスのバッファにロードする。すべての応答時間のうち最大のものを検出することにより、およびその最大時間に応答を同期させるよう、対応するチップの出力のラッチを遅らせるクロックサイクル数を、それぞれのバッファにロードすることにより、この結果が実行されるのが好ましい。
この発明のさらにより具体的な特徴では、デバイスは、コントローラからの書き込みコマンドを受け取ることにより、書き込みコマンド自身の到着時間と書き込みデータの到着時間との間の差をカウントすることにより、およびデバイスのバッファの内容（遅延時間）を調整することにより、バッファの内容に対する訂正を実行することができ、これにより、コマンドバスおよびデータバス間のトラベル時間における差を訂正する。
この発明は、図と共に理解される以下の詳細な説明を参照することにより、より良く理解することができる。以下に示され、この発明のある特定の実現を形成して使用することができるようにする特定の好ましい実施形態の詳細な説明は、特許請求の範囲を制限するものではなく、それらの特定の例として説明される。
【図面の簡単な説明】
図１は、従来技術を示すのに使用される仮定的な１つのメモリシステムのブロック図であり、破線により、その線の上部にあるＣＰＵ（中央処理装置）および下部にあるメモリシステムに分けられる。
図２は、図１の仮定的な従来技術のシステムにおいて、複数のメモリデバイス間のバス競合の問題を示すのに使用される一連のタイミング図である。
図３は、並列データバス（「ベビーバス」といい、これらが一緒になって広いシステムバスを構成し、６４、１３２またはそれ以上のビット長の語の同時取り出しをする）、および複数のメモリデバイス間における共用データバスの両方を使用する好ましい実施形態のブロック図である。
図４は、図３の１つのメモリデバイスのブロック図であり、デバイスはＤＲＡＭであるのが好ましい。
図５は、図３のシステムの一部に対応する一連のタイミング図であり、特に、２つのメモリデバイスからの応答の同期を示す。
好ましい態様の詳細な説明
上記要約され、および列挙された特許請求の範囲により定義されるこの発明を、図と共に読まれるべき以下の詳細な説明を参照することにより、より良く理解することができる。以下に試みられた特定の好ましい実施形態の詳細な説明は、この発明のある特定の実現を形成して使用することを可能にし、列挙された特許請求の範囲を制限するものではないが、それらの特定の例を示すためのものである。以下に試みられた特定の例は、メモリシステムの具体的で明確な実現であり、特に、複数のメモリデバイスが１つのデータバスに沿って配置されようと、並列データバスを横切って配置されようと、またはその両方であろうと、複数のメモリデバイスからの応答の同期をとるために使用される。
この発明による好ましい実施形態は、図３に示されるメモリシステム１０１である。ＣＰＵまたは専用のメモリコントローラのどちらでもよいメモリコントローラ１０３は、直列および並列に配置される多数のメモリチップ１０５にアクセスする。言い換えると、システムは、好ましくは１６ビットデータバスである複数の並列データバス１０７（「ベビーバス」という）を備え、いくつかのメモリデバイスがそれぞれのベビーバス上にある。この構成は、それ自身をスケーラブルなバスシステムにする。たとえば、ここでは、システムのデータバスは６４ビットまたは１２３ビット幅、またはそれ以上であり、データの最下位ビットが、あるベビーバス１０７−１に沿って検索されており、データの最上位ビットが、他のベビーバス１０７−２に沿って検索されている。
この発明の特徴を実現することにより、コントローラは、複数のベビーバスにわたってメモリ検索の同期をとるだけでなく、それぞれの１つのベビーバス１０７に沿った複数のチップ１０５間においても、メモリ検索の同期をとる。並列バスを横切り、かつ直列に配置されたチップを横切るという両方を組み合わせた同期は、以下の特許請求により定義される発明を実行するのに必ずしも必要ではなく、直列または並列のいずれかのメモリデバイスの同期も実行することができる。複数のベビーバス１０７にわたる同期は、好ましい実施形態において実行され、コントローラ１０３が、確実に、ベビーバス１０７のうちの１つに沿った遅い応答により遅延されないようにする。それぞれの１つのベビーバス１０７に沿った同期は、複数チップ１０５によるバス競合の可能性を減らすよう実行され、それぞれのベビーバス１０７に沿った伝搬時間における差に妨げられることなく、コントローラが、連続サイクルで異なるチップ１０５から複数のデータ読み出しを実行するのを可能にする。
コントローラ１０３が専用メモリコントローラならば、コントローラ１０３は、自身をシステムＣＰＵ（図示せず）に接続するマスターバス１０９に沿ってメモリ要求を受け取る。これらの要求は、ベビーバス１０７のすべてにまたがるコントローラ１０３により管理され、ベビーバスのそれぞれは、１６本のデータ線および１本のストローブ線１１２から構成することができる（以下にさらに説明する）。また、コントローラ１０３は、１つのコマンドバス１１１を使用し、これは、コントローラ１０３をすべてのメモリチップ１０５に接続する。典型的に、コマンドバス１１１は、アドレスバス１１３、システムクロック１１５、データ読み出し信号１１７、データ書き込み信号１１９のそれぞれを有し、さらに様々な割り込み線、チップ選択回路およびそれらに類する他の線（図示せず）をも有する。それぞれのメモリチップ１０５は、ランダムアクセスメモリであるのが好ましく、より具体的には、周期的なリフレッシュを必要とするダイナミックＲＡＭであるのが好ましい。メモリデバイスは温度により影響されることがあるので、それぞれのデバイス１０５は、メモリ検索の同期をとるため、システムのパワーアップ時および周期的な間隔の両方で、「構成」されるのが好ましい。
それぞれのチップ１０５は入力バッファを備え（図３には示されない）、これは、コントローラ１０３がメモリチップのすべてをポーリングした後に、ある数がロードされる。この数は、コントローラがカウントした経過したシステムクロックサイクル数から導き出され、システム１０１において応答するのが一番遅いチップに対応する。構成モード中のコントローラ１０３は、構成コマンドをチップのモードレジスタにプログラムすることにより、それぞれのメモリチップ１０５を別々にイネーブルし（図５および以下に示されるように）、これにより、そのチップのみがアクティブされ、その対応するベビーバスに耳をかたむけるモードに確実に入るようにさせるのが好ましい。このモードにおいてチップ１０５が入力ストローブを検出する時（データバスに沿った、チップへの予め決められたデータ転送を含めて）、チップ１０５は応答して、予め決められた応答語を、出力ストローブ１１２と一緒にデータバス上に送り返す。その後、出力ストローブ１１２は、予め決められた応答語をコントローラ１０３に取り込む（latch：ラッチ）のに使用される。出力ストローブ１１２および予め決められた応答語の受信は、コントローラ１０３の比較メカニズム１１８に、内部タイマーを凍結すべきことを示す。内部タイマーは、コントローラが入力ストローブを発行してから経過したそれぞれのシステムクロックパルスで歩進（インクリメンタル）されている。さらに、カウンタの内容をコントローラの内部にあるメモリ、すなわち最大カウントを表すメモリスポット１１４（カウンタが最大を示すならば）および特定のチップ１０５に専用のスロット１１６の両方にロードすべきことを示す。コントローラがメモリチップ１０５のすべてをポーリングすると、コントローラは、それぞれのチップのオフセットを計算し、その分だけそれぞれのチップがその出力を遅らせられ、データ読み出し操作が、最大の応答時間でメモリコントローラにデータを提供するようにする。言い換えると、コントローラ１０３は、最大の応答時間からそれぞれのチップの応答時間を減算し、オフセットを得て、それぞれのチップ１０５を適切なオフセットでプログラムする。
図４は、図３の１つのチップ１０５のブロック図である。特に、チップはＤＲＡＭ１２３であるのが好ましく、ＤＲＡＭ１２３は、内部遅延メカニズム１２１を備え、他のチップとのメモリ応答の同期をとる。この遅延メカニズムは、出力ラッチ、内部カウンタおよび内部バッファを有するのが好ましい。ＤＲＡＭ１２３は、いくつかの通信経路を介してメモリコントローラ１０３に接続される。この通信経路には、（ａ）コマンドバス１１１、（ｂ）１６ビットのベビーバス１０７、（ｃ）ストローブ信号１１７、（ｄ）コマンドストローブ１２５、（ｅ）システムクロック１１５、および図４に示されていないが（ｆ）チップ選択信号が含まれる。システムクロック１１５がＤＲＡＭ１２３により受け取られるとき、内部位相ロックメカニズム１２７が使用されて局所的に導き出されたクロック信号１２９を提供し、ＤＲＡＭの内部動作の時間を測り、メモリ操作を連携するためローカル時間のゼロを定義する。
特定のチップを構成したいときには（たとえばＤＲＡＭ１２３）、構成モード中に、コントローラ１０３は固有のＤＲＡＭをイネーブルし、同時に同じベビーバス１０７に沿ったすべての他のメモリチップをディスエーブルする。このイネーブルすることは、コントローラ１０３が、コマンドストローブと一緒に、構成コマンドをコマンドバス１１１を介してＤＲＡＭに送ることにより達成され、ＤＲＡＭが、このコマンドを「内部タイミングおよび制御論理」１３１に取り込むようにする。図４に示されるように、構成コマンドが、内部タイミングおよび制御論理１３１に達する前に、第２のラッチ１３３を通過しなければならないので、その到着は、ＤＲＡＭ１２３のローカルクロック信号１２９と同期する。たとえば、構成コマンドを、アドレスバスの最上位ビットのみで示すことができ、これは、ベビーバス１０７に沿ったデータの転送を必要としない。これらの最上位ビットは、内部タイミングおよび制御論理１３１によりモードレジスタ１３２に連結され、ＤＲＡＭ１２３に構成モードに入るよう指示するのに使用される。
構成モードでは、ＤＲＡＭは、予め決められたデータ語（このデータ語は入力ストローブにより伴われる）についてベビーバス１０７を単に監視し、データ語を同期検出レジスタ１５９にストローブする。データ語の検出に応答して、タイミングおよび制御論理は、予め決められた応答語が、メモリ空間１４１から出力ラッチ１３９に即座に送られるようにし、タイミングおよび制御論理は、同期制御線１４３を介して出力ラッチ１３９をイネーブルする。それにより、通常は出力ラッチ１３９への応答語の提示のすぐ次のローカルクロックパルスで、予め決められた応答語は、即座にゲートされてベビーバス１０７上に戻り、コントローラに送られる。出力ストローブにより伴われた、予め決められた応答語は、受信時に即座にコントローラに取り込まれ、コントローラの比較メカニズム１１８の内部タイマーを停止するのに使用される。
図５は、図３のチップ１０５のすべてにわたる最大遅延時間のコントローラの判断の結果を示すのに使用される。特に図２に関連する場合のように、図３のコントローラは、連続クロックサイクルでデータ読み出しを実行するのが望ましい。この点において、コントローラは、データ読み出し「Ｘ」および「Ｙ」（図５の（ｂ）の１４５および１４７で示される）を、コントローラに直列に接続された２つの異なるメモリデバイスに送る。これらのデバイスは、１つのベビーバス１０７−１に沿った複数の単一チップ１０５から構成されることができ、代わりに、異なるベビーバス１０７を介してコントローラに接続される複数チップから構成されることもできる。データ読み出し１４５および１４７は、３つの連続したデータ読み出しの連なりのうちの第１および第３の読み出しであり、中間のデータ読み出しは「−」で示される（図５の（ｂ））。図２のように、それぞれのデータ読み出し操作は、それに関連する伝搬時間を持ち、この操作は、対応する伝搬時間に従って対応するメモリデバイスに到着する。しかし、この発明の原則の実現では、コマンド「Ｙ」に関連するメモリデバイスは、２クロックサイクル遅延を表すオフセット１４９でプログラムされる。このように、メモリデバイスは、そのローカルクロックを使用して、出力ラッチ（図４の１３９）に２クロックサイクルの遅延を課す。オフセットは、すべてのチップの最大応答時間に従って応答するよう、それぞれの個々のチップを訂正する。たとえば、それぞれのチップは、一番遅いチップと同期がとれるよう、その応答を遅くさせられる。したがって、すべての３つのメモリデバイスが、この発明に従って構成されると考えると、３つのデータ読み出しのそれぞれは、図５の（ｅ）の参照番号１５１で示されるように、連続クロックサイクルで受け取られる。
図４を再び参照すると、コントローラは、ＤＲＡＭ１２３にオフセットをロードすることにより遅延をプログラムする。コントローラは、ＤＲＡＭの内部バッファ１５３にクロックパルス数を書き込むことによりこのプログラム設定を行う。次に、ＤＲＡＭ１２３が、構成モード外でデータ読み出しコマンドを受け取るとき、ＤＲＡＭ１２３は、通常のやり方でそのコマンドを処理する。しかし、読み出しコマンドによる結果が出力ラッチにあるとき、その結果物は、次のローカルクロックパルスで、すぐにはデータバス上にゲートされない。逆に、内部タイミングおよび制御論理１３１は、同時制御線１４３のイネーブルを差し控え、バッファにより示される量だけ出力を遅くさせる。このため、バッファはタイマーと組み合わされるのが好ましく、タイマーは、チップにより受け取られるそれぞれの読み出しコマンドの検出時にカウントダウンを始める。
当該技術分野の当業者には容易に明らかなように、この遅延構造のいくつかの等価な実現があるということは重要である。たとえば、予め決められたクロックサイクルで出力を提供するけれど、バッファの内容に応答して「早期に」入手可能な出力を作る「ある数」をプログラムするよう、それぞれのメモリデバイスおよびシステムを設計することにより、オフセットを達成することができる。代わりに、それぞれのメモリデバイスは、いくつかのモードのうちの１つを選択することで達成される遅延で、複数のモードを持つことができる。さらに、遅延は、それぞれのメモリデバイスの外部の回路により実現することもできる。メモリシステム設計における技術を持つ当業者に明らかな他の改良と同様に、これらの実施形態は、この発明の精神の範囲内にあるよう意図されている。
ＤＲＡＭ１２３がオフセットでプログラムされた後、コントローラは、オフセットを改善するのに使用される訂正を計算するのが好ましい。具体的には、図３のシステムでは、それぞれのデータバス（それぞれのベビーバス１０７）および対応するコマンドバス１１１は、異なるパス長を持つことがある。オフセットが、データバス（ベビーバス１０７）上のみのポーリングおよび応答を使用してそもそも計算されたので、また、読み出しコマンドがコマンドバスに沿って通常は発行されるので、オフセットは、所望の遅延を正確には反映しないことがある。したがって、それぞれのチップの訂正は、それぞれのチップ１０５に関連する遅延時間を改善するのに使用され、この不一致を訂正し、この訂正は、チップごとに異なることができる。
訂正を計算するため、コントローラ１０３は、追従する書き込みコマンドをそれぞれのＤＲＡＭに送る。書き込みコマンドは、対応するベビーバス１０７に沿って転送されたデータだけでなく、コマンドバス１１１に沿って転送された実際のコマンドの両方を含む。図４を参照すると、ＤＲＡＭ１２３によりコマンドが受け取られるとき、コマンドは、第１の同期検出回路１５５に提供される。同期検出回路１５５は、受け取ったコマンドの表示をコマンド状況カウンタ１５７に提供する。その後、コマンド状況カウンタ１５７は、それぞれのローカルクロックパルスでカウントを始める。また、対応するベビーバス１０７から受け取ったコマンドに対応するデータは、第２の同期検出回路１５９に提供され、これは、同様に、受け取ったデータの表示をデータ状況カウンタ１６１に提供する。このデータ状況カウンタ１６１も、それぞれのローカルクロックパルスでカウントし始める。こうして、いずれかの書き込みコマンドの受信、またはその対応する書き込みデータの受信は、カウンタ１５７または１６１がカウントし始めるトリガとなる。同期検出回路１５５および１５９からの両方の表示の受信は、減算回路１６３を介して、コマンド受信とデータ受信との間のクロックサイクル数の差をゲート制御するのに使用され、その差を反映する出力は、ＤＲＡＭ１２３のタイミングおよび制御論理１３１に提供される。この差は、クロックサイクル数におけるオフセットに対する訂正を表す。このように、伝搬時間の観点から、コマンドバスがデータバスに比べて遅いか速いかに依存して、タイミングおよび制御論理１３１は、内部バッファ１５３の内容をそれに応じて訂正する。したがって、オフセットおよび訂正が計算されると、その後、内部バッファ１５３の内容は、所望のオフセットのクロックサイクル数を正確に反映し、複数のメモリデバイスにわたって同期を達成する。
説明してきたのは、ＤＲＡＭチップのような多くのメモリデバイスから、コントローラにおいて、同期データ応答を達成するためのメモリシステムおよびデバイスである。上記述べた好ましい実施形態を使用して、例えば、複数のベビーバス１０７にわたって接続され、１つのデータ語の取り出しについて異なる有意性のビットグループを提供する（たとえば、６４ビット語の取り出し）ような、並列メモリデバイスのうちどれからも、実質的に同期的なメモリ応答を達成することができる。または、図２および図４を参照して説明したように、同じデータバスに接続される複数のメモリデバイス間のバス競合を回避する。ここで述べたシステムが、整数のクロックサイクルのみについての訂正を実行し、異なるメモリチップ間の位相の訂正を達成しないということは重要である。しかし、ここで述べたシステムは、米国特許第4,998,262号（ここで、参照により取り入れる）で説明されるような位相同期を達成するシステムと互換性がある。
【図１】
0003860842.tif 000002
【図２】
0003860842.tif 000003
【図３】
0003860842.tif 000004
【図５】
0003860842.tif 000005
【図４】
0003860842.tif 000006