(58)【調査した分野】(Int.Cl.,DB名)
前記フラグ構成器は、前記ホストコンピュータから受信されたインカミングメモリトランザクション要求が前記トランザクションキュー内のペンディングメモリトランザクション要請のチャンネルID、ランクID、バンクID、及び行IDを含む場合、前記メモリ装置の活性化されたページがオープンされるようにするために前記要求プリチャージフラグを設定することを特徴とする請求項3に記載のメモリシステム。
前記スレーブコントローラは、前記複数のフラグに基づいて前記コマンドキュー内の前記メモリコマンドを変更して再整理し、前記変更して再整理されたメモリコマンドに基づいて前記メモリ装置のリフレッシュ動作を処理するリフレッシュハンドラーを更に含むことを特徴とする請求項1に記載のメモリシステム。
前記ホストコンピュータから受信されたインカミングメモリトランザクション要求が前記トランザクションキュー内のペンディングメモリトランザクション要請のチャンネルID、ランクID、バンクID、及び行IDを含む場合、前記メモリ装置の活性化されたページがオープンされるようにするために前記要求プリチャージフラグを設定するステップを更に含むことを特徴とする請求項11に記載の方法。
【発明を実施するための形態】
【0014】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
【0015】
本発明を具現する多様な新規の詳細及びイベントの組合せを含む上記及び他の望ましい特徴は、図面を参照しながらより詳細に説明し、特許請求の範囲内で示される。ここで説明する特別なシステム及び方法は、制限されるものではなく、図示するために示す。本分野の通常の知識を有する者によって理解されることであって、ここに開示する原理及び特徴は、本開示の範囲を逸脱せずに、多様で数多くの実施形態に適用される。
【0016】
図面は必ずしも一定の比率で図示したものではなく、類似の構造又は機能の構成要素は図面全体に亘って図示するために同様の参照符号で一般的に示す。図面は明細書で説明する多様な実施形態の説明を容易にするためのみに示す。図面は本明細書に開示する技術的思想の全ての側面を説明するものではなく、特許請求の範囲を制限しない。
【0017】
本明細書に開示する特徴及び教示(teaching)は、各々個別的に活用されるか、或いはトランザクション基盤メモリシステム及びその動作方法を提供するために他の特徴及び教示と共に活用される。追加の特徴及び教示は別途に或いは組合せて多くで活用される代表的な例について図面を参照しながらより詳細に説明する。詳細な説明は単なる本分野の熟練された者に本教示の態様を実施するための追加的な詳細を教えるための意図のみであり、特許請求の範囲を限定しようとする意図ではない。従って、詳細な説明において開示する特徴の組合せは最も広い意味での教示を実施するために必要としないこともあり、代わりに本教示の特に代表的な例のみを説明する。
【0018】
以下の説明で、説明の目的のみに、特定名称を本発明の完全な理解を提供するために説明する。しかし、特定細部事項は本発明の開示の教示を実施するために要求されないことは当業者に明らかである。
【0019】
詳細な説明の一部はアルゴリズム及びコンピュータメモリ内のデータビットに対する動作のシンボル表現の態様で提供される。これらのアルゴリズムの説明及び表現は効果的に他の当業者に作業の実体を伝達するためにデータ処理分野の当業者によって使用される。アルゴリズムは、ここで及び一般的に望む結果に至る段階の自らの一貫性シークェンス(self−consistent sequence)であるとして案出される。アルゴリズムの各段階は物理量の物理的操作が必要である。一般的に必須的でないが、これらの量は格納、伝達、結合、比較、及び異なって操作される電気又は磁気信号の形態を取る。この信号に対してビット、値、エレメント、シンボル、キャラクター、用語、数字等として指称することは、主に共通的な使用の理由の下でしばしば便利である。
【0020】
しかし、これら及び類似な用語の全ては、適切な物理量に関連し、単なる物理量に適用される便利なラベルであることに留意しなければならない。特別に以下の説明で明確に異なって言及しない限り、説明の全体を通じて“処理”、“コンピューティング”、“計算”、“決定”、“表示”等のような用語を活用する説明は、コンピュータシステムや同様の電子コンピューティング装置の作用及び処理を指称する。ここで、作用及び処理はコンピュータシステムのレジスター及びメモリ内で物理的(電子的)量として表れるデータを他のデータに操作及び変換することを意味する。他のデータはコンピュータシステムのメモリ又はレジスター、他の情報ストレージ、又は伝送、或いは表示装置内で物理量として同様に現れるデータである。
【0021】
このような多様なシステムに必要な構造は以下の説明で示す。多様なプログラミング言語がここに開示するような発明の教示を具現するために使用される。
【0022】
また、代表的な実施形態の多様な特徴と従属請求項は本教示の追加的な有用な実施形態を提供するために特別に明示的に列挙しない方式で結合される。また、全ての値の範囲又は個体グループの表示(indications)は、元の開示の目的のためのことは勿論、特許請求の範囲に記載した発明の思想を特定する意図として全ての可能な中間値又は中間個体を示すことを特に言及する。そして、図面内に示す構成要素の次元及び形状は本発明の教示がどのようにして実施されるかに対する理解を助けるために設計されただけであり、また実施形態に示した次元及び形状に限定されないことを特に言及する。
【0023】
本発明は高性能なトランザクション基盤メモリシステム(transaction−based memory system)及びその動作動方法を提供する。本発明のトランザクション基盤メモリシステムは緩く結合されたマスター及びスレーブコントローラの設計に対する限界を克服する。即ち、緩く結合された設計に対する限界はメモリ装置のアドレスマッピング情報がマスターコントローラに伝達されないことである。本発明のトランザクション基盤メモリシステムのマスターコントローラは、従来スレーブコントローラによって取り扱われるスケジューリング及び行バッファ管理(scheduling and row buffer management)に深く関連する。マスターコントローラは、より深いバッファ及びより複雑なロジックを有し、スレーブコントローラのみに依存する場合に比べ、より優れたスケジューリング及びメモリ管理を決定する。特に、本発明のトランザクション基盤メモリシステムは、より優れたチャンネル/ランク/バンクインタリービング(例えば、より高い並列性)、及びより効率的な行バッファ管理(例えば、より多くのページヒット数)を、以下の例及び実施形態でより詳細に説明する。
【0024】
図1は、従来のトランザクション基盤メモリシステムのブロック図である。トランザクション基盤メモリシステム100は、マスターコントローラ110(例えば、ホストコントローラ)、スレーブコントローラ120(例えば、DRAMコントローラ)、及びメモリ装置130(例えば、DRAM)を含む。マスターコントローラ110は、メモリ装置130にアクセスするためにCPUから要請(request)を受信し、要請に対応するCPUに応答する。マスターコントローラ110は、エンコーダ111、スケジューラ112、デコーダ113、トランザクションキュー115、及びリードリターンキュー116を含む。
【0025】
エンコーダ111は、CPUの要請をエンコーディングし、エンコーディングされた要請をトランザクションキュー115内に配置する。エンコーディングされた要請はメモリ装置130のアドレスやアドレスブロックに対するメモリリード及びメモリライトを含む。マスターコントローラ110のスケジューラ112はCPUの要請をトランザクションキュー115内に配置された順にパケット化し、パケット化された要請を、マスターコントローラ110とスレーブコントローラ120との間のリンクバス中の要請リンクを通じてスレーブコントローラ120に送信する。
【0026】
スレーブコントローラ120は、デコーダ121、スケジューラ122、パケタイザ123、コマンドキュー125、及びリードリターンキュー126を含む。デコーダ121は、要請リンクを通じてマスターコントローラ110から受信されたパケットをデコーディングし、対応するメモリコマンドを生成してコマンドキュー125に配置する。スケジューラ122は、メモリコマンド及び関連するメモリアドレスをメモリ装置130に送信し、メモリ装置130からデータを受信する。スレーブコントローラ120はメモリ装置130からのリードデータをリードリターンキュー126に配置する。パケタイザ123は、メモリ装置130から受信された応答(例えば、メモリアドレスからリードされたデータ)をパケット化し、パケット化された応答をマスターコントローラ110とスレーブコントローラ120との間のリンクバス中の応答リンクを通じてマスターコントローラ110に送信する。
【0027】
マスターコントローラ110のデコーダ113は、応答リンクを通じてスレーブコントローラ120から受信されたパケットをデコーディングし、デコーディングされたパケットをリードリターンキュー116に配置する。デコーダ113は、データを、リードデータがリードリターンキュー116に配置された順にCPUに送信する。マスターコントローラ110とスレーブコントローラ120との間の通信はリンクバスを通じたパケットの交換に対して制限される。スレーブコントローラ120はメモリ装置(DRAM)130のアドレスマッピング情報をマスターコントローラ110と共有しないため、マスターコントローラ110のスケジューラ112は、要請パケットをスレーブコントローラ120に伝送する時に、トランザクションキュー115内のペンディング要請(pending requests)をプリスケジューリングすることができない。
【0028】
図2Aは、マスターバッファとスレーブバッファとの間のメモリマッピングの比較例を示す図である。
図1の従来のトランザクション基盤メモリシステム100の例を参照すると、マスターコントローラ110はエンコーディングされたCPUの要請(リクエスト)をトランザクションキュー115に単純に配置する。例えば、トランザクションキュー115内の要請及び関連するメモリアドレス及び/又はデータはFIFO(first−infirst−out)バッファに格納される。スケジューラ112はエンコーディングされたCPU要請をメモリアドレス及び/又はデータと共にスレーブコントローラ120に送信する。この時、送信はFIFOバッファ内に要請が配置された順に行われる。マスターコントローラ110はメモリ装置(DRAM)130のアドレスマッピング情報を有しないため、マスターコントローラ110はCPUの要請をトランザクションキュー115内に配置された順に、バンクインタリービング無しでスレーブコントローラ120に送信する。
【0029】
マスターコントローラ110はマスターバッファ201を有し、スレーブコントローラ120はマスターバッファ201よりも小さいスレーブバッファ202を有する。本実施例において、マスターバッファ201は、8エントリディープ(eight−entries deep)で示し、1回に8つの要請キューのみを格納するのに比べて、スレーブバッファ202は、4エントリディープであり、4つの要請キューのみを格納する。しかし、マスターバッファ201とスレーブバッファ202とは本発明の技術的思想の範囲を逸脱せずに、任意のバッファサイズになる。
【0030】
マスターバッファ201内の幾つかの要請は同一のバンクに対するマッピングを含む。本実施例で、マスターバッファ201内の要請は4つの連続的なバンク0の要請及び後続するバンク1、バンク2、バンク3、及びバンク4の要請を含む。ここで、バンクの要請はリード要請或いはライト要請である。マスターコントローラ110のスケジューラ112はマスターバッファ201に配置された要請をスレーブバッファ202内の可用エントリ(entries)の個数に基づいてスレーブバッファ202に送信し、残りのエントリをマスターバッファ201内の図に示す上方に押す。初期にスレーブバッファ202は空いているため、4つの連続的なバンク0の要請を含むマスターバッファ201の第1の4つバッファエントリは、スレーブコントローラ120に送信されてスレーブバッファ202に配置される。スレーブバッファ202に到着した要請は4つの連続的なバンク0の要請のみを含むため、スレーブコントローラ120はバンクインタリービングを遂行することができない。従って、スレーブコントローラ120の1つのコア(one core)は1行で4回に亘ってバンク0にアクセス(リード又はライト)する。一方、スレーブコントローラ120の他のコアは他のバンクにアクセスすることができない所謂アイドリング(idling)状態になる。アイドリング状態は遅い応答タイムを発生させるバンク衝突をもたらす。
【0031】
マスターコントローラ110が、アドレスマッピング情報と、例えばメモリ装置のインカミング要請のチャンネルID、ランクID、バンクID、及び行IDのようなメモリ構成情報とを有する場合、マスターコントローラ110は、CPUの要請を再整理(re−order)し、再整理された(又はインターリーブされた)要請をスレーブコントローラ120に送信する。
図2Aを参照すると、マスターバッファ201はバンクID情報を有しない。なぜならば、マスターコントローラ110がアドレスマッピング情報を有しないためである。従って、マスターコントローラ110は要請がマスターバッファ201内に格納されていることによって要請を単純に伝送する。本発明の一実施形態によるアドレスマッピング情報に基づくマスターコントローラ110による再整理は、より効率的なバンクインタリービングを獲得する。
【0032】
図2Bは、本発明の一実施形態によるマスターバッファとスレーブバッファとの間のメモリマッピングの一例を示す図である。
図2Aの例と同様に、マスターバッファ251は4つの連続的なバンク0の要請及び後続するバンク1、バンク2、バンク3、及びバンク4の要請を含む。初期にスレーブバッファ252は空いているため、マスターコントローラ110はマスターバッファ251の4つの要請をスレーブコントローラ120に送信することを許諾する。メモリ装置のアドレスマッピング情報が分かると、マスターコントローラ110はマスターバッファ251内の第1の4つの要請の代わりに第1バンク0の要請、及びバンク1、バンク2、バンク3の要請を含むようにマスターバッファ251内で要請を再整理する。この場合、スレーブコントローラ120はスレーブコントローラ120の可用コアを利用してバンク0、バンク1、バンク2、及びバンク3に同時にアクセスすることによってバンクインタリービングを遂行する。
【0033】
一実施形態において、マスターコントローラとスレーブコントローラとはシステムブーティング時にアドレスマッピングの選択を交換し、使用者はどのアドレスマッピングスキームを使用するかを決定する。アドレスマッピングスキームは、システムがリブーティングされるか、或いは使用者がアドレスマッピングスキームをその場で(on the fly)再構成する時まで変更されないこともある。システムブーティング時にアドレスマッピングスキームを選択する場合、メモリシステムはメモリコントローラ内にハードウェアデコーダを構成する。ハードウェアデコーダはインカミングアドレスをDRAM内のチャンネル、ランク、バンク、及び行IDsに対応する物理アドレスにデコーディングする。
【0034】
クローズ(close)ページは毎メモリアクセス(例えば、リード及びライト)の後にプリチャージコマンドによって開始される。クローズページは、行バッファミス(misses)に対するレイテンシ(latency)を減らすが、行バッファヒット(hits)に対するレイテンシを増加させる。なぜならば、クローズされたページは行バッファヒットの場合に再びオープンされなければならないためである。オープンページはミスする時までプリチャージを遅延する。オープンページは、行バッファヒットに対するレイテンシを減らすが、行バッファミスに対するレイテンシを増加させる。行バッファミス及びヒットの率に依存して、スレーブコントローラは、クローズ、オープン、及びプリチャージを決定する。
【0035】
本発明のトランザクション基盤メモリシステムは成熟するオープンページポリシー(mature open page policy)を提供する。従来のメモリシステムで、スレーブコントローラは、スレーブバッファをスキャンし、位置関係(locality)が不明の場合、ページをクローズする。即ち、ページオープン及びクローズは、オープンページから利益を得られるペンディング要請であっても、スレーブバッファの位置関係のみによって決定される。スレーブコントローラは一般的に小規模のスレーブバッファを有するため、スレーブコントローラは、マスターコントローラからのその後の要請を予見して成熟するオープンページポリシーを適用することができない。このような意味で、スレーブコントローラのみによって具現され、スレーブバッファの大きさに制限されるオープンページポリシーはオープンページの早計な(premature)クローズを頻繁にもたらす。
【0036】
一実施形態において、マスターコントローラは、マスターバッファ251をスキャンし、ページオープン及びクローズに関する情報をスレーブコントローラに提供する。マスターコントローラは位置関係がマスターバッファ251内で確認されない場合にスレーブコントローラがオープンページをクローズするようにする。マスターコントローラはより深い(deeper)バッファを有し、その後のより多い要請を予見するため、マスターコントローラはより効率的なオープンページポリシー及び行バッファ管理を提供する。
【0037】
図3Aは、スレーブコントローラのページオープンポリシーの比較例を示す図である。各要請をバンク番号及び行バッファ番号で示す。例えば、Bn:Rmはバンク番号nの行バッファ番号mを示す。各バンクは専用の行バッファを有する。1つのバンク内に多数の行がある。行をオープンすることによって、データは行のバンクに関連する行バッファに置かれる。行バッファはDRAM内で速いキャッシュ(cache)として機能する。行アクセスは、DRAMのバンクの一行(ページ)を活性化し、活性化された行(オープンページ)からのデータを行バッファ内にコピーする。カラムアクセスは、活性化された行のカラムを選択し、活性化された行及び選択されたカラムに対応するブロックのデータを返還する。プリチャージは活性化された行にアクセスする前にDRAMのバンクをチャージ(charge)する。リフレッシュは、DRAM内のデータを維持するために周期的にDRAMをリードし、ライトする。
【0038】
マスターコントローラはマスターバッファ201内のトランザクションキューの一部をスレーブコントローラに送り、スレーブコントローラは受信されたキューをスレーブバッファ202内に配置する(格納する)。一例として、初期に4エントリディープを有するスレーブバッファ202が空いているため、マスターバッファ201内の4つのキューはスレーブバッファ202にコピーされる。スレーブバッファ202にコピーされたキューはB0:R0に対する1つのキューのみを含むため、スレーブコントローラはB0:R0に対するページをオープンし、B0:R0に対するキューが完了した後にオープンされたページをクローズする。マスターコントローラはスレーブコントローラと情報(例えば、マスターバッファ201内のキュー)を共有しないため、スレーブコントローラは、オープンされたページに対する更に多いキューがスレーブバッファ202内に待機しない場合、オープンされたページをクローズする。この場合、ページオープンを維持する決定及びページをクローズする決定は、スレーブバッファ202内に可用されるキューに基づいてスレーブコントローラのロジックによって単独に決定される。
【0039】
図3Bは、本発明の一実施形態によるトランザクション基盤メモリシステムのページオープンポリシーの一例を示す図である。本実施形態のトランザクション基盤メモリはマスターバッファ251内のキューを参照してページオープンポリシーを拡張する。初期にスレーブバッファ252は空いているため、マスターバッファ251内の4つのキューはスレーブバッファ252内にコピーされる。スレーブバッファ252にコピーされたキューはB0:R0のページに対する1つのキューのみを含む。しかし、マスターバッファ251はB0:R0に対するページのペンディング(pending)キューを含む。従って、マスターコントローラはB0:R0に対するページオープンを維持するために命令(例えば、フラグ)をスレーブコントローラに送る。なぜならば、同一のページに対するペンディングキューが後続するためである。マスターコントローラの命令に応答して、スレーブコントローラは同一のページに対する待機キューが到着する時までページオープンを維持し、対応するメモリトランザクションは完了する。拡張されたページオープンポリシーのためにマスターコントローラとスレーブコントローラとの間で交換されるフラグを
図4を参照して更に具体的に説明する。
【0040】
図4は、本発明の一実施形態によるトランザクション基盤メモリシステムの一例を示すブロック図である。
図1のメモリシステム100と同様に、トランザクション基盤メモリシステム400は、マスターコントローラ410(例えば、メモリコントローラ)、スレーブコントローラ420、(例えば、DRAMコントローラ)、及びメモリ装置430(例えば、DRAM)を含む。マスターコントローラ410は、メモリ装置430にアクセスするためにCPUから要請を受信し、要請に対応するCPUに応答する。
【0041】
マスターコントローラ410、スレーブコントローラ420、及びメモリ装置430を分離されたブロックで示しているが、マスターコントローラ410、スレーブコントローラ420、及びメモリ装置430は多様な方法で具現されて構成される。一実施形態において、スレーブコントローラ420はメモリ装置430内に常駐(reside)し、メモリ装置430はホストコンピュータのメモリスロット内に挿入される。他の実施形態として、スレーブコントローラ420はホストコンピュータのマスターコントローラ410内に常駐する。
【0042】
マスターコントローラ410は、エンコーダ411、スケジューラ412、デコーダ413、アドレスマッピングデコーダ414、及びフラグ構成器415を含む。アドレスマッピングデコーダ414はメモリ装置430のアドレスマッピング情報を格納する。アドレスマッピング情報は、チャンネル、ランク、バンク、及び行情報を含む。アドレスマッピングデコーダ414は、アドレスマッピング情報をチャンネルID、ランクID、バンクID、及び行IDを有するエンコーディングされたトランザクションキュー417に格納する。アドレスマッピングデコーダ414は、
図2Bの例で示したようにアドレスマッピング情報に基づいてエンコーディングされたトランザクションキューを再整理するため、マスターコントローラ410はスレーブコントローラ420のようなアドレスマッピングを維持する。例えば、新しいメモリ装置430が挿入されると、スレーブコントローラ420は新しいメモリ装置430のアドレスマッピング情報をシステムブーティングタイムの間にマスターコントローラ410に送る。アドレスマッピングデコーダ414はインタリービング及び行バッファ管理の両方に対する要請をデコーディングする。
【0043】
スケジューラ412は、バンク、ランク、DIMM、及びXORインタリービングを最適化するために多様なスケジューリングスキームを用いる。スケジューリングの例としては、限定されるものではないが、チャンネルラウンドロビン(round robin)、ランクラウンドロビン、及びバンクラウンドロビンを含む。フラグ構成器415は、マスターコントローラ410とスレーブコントローラ420との間の情報交換を促進するために追加フラグを設定する。これらのフラグは、
図3Bの例を参照して説明したように、拡張されたページオープンポリシーに基づいてページオープンを維持するために使用される。追加フラグの例としては、限定されるものではないが、要求活性化(requireACT)フラグ及び要求プリチャージ(requirePRE)フラグを含む。これらのフラグはトランザクションキュー417内で要請と共にパケット化される。
【0044】
スレーブコントローラ420は、デコーダ421、スケジューラ422、パケタイザ423、及びリフレッシュハンドラー424を含む。デコーダ421は、簡単な要請パケット(straight forward request packets)をrequireACT及びrequirePREフラグ(flags)に基づいてメモリコマンドに変換する。リフレッシュハンドラー424は、必要に応じて、requireACT及びrequirePREフラグに基づいて簡単なリフレッシュハンドリングを遂行する。スレーブコントローラ420のリフレッシュコントローラ(図示せず)はリフレッシュ動作の遂行を継続する。リフレッシュハンドラー424はリフレッシュ状況の処理を担当する。例えば、リフレッシュハンドラー424はフラグに基づいて標準リフレッシュ動作を中断(インタラプト)し、リフレッシュ状況処理の後、リフレッシュ動作前の状態からリフレッシュ動作を再開する。
【0045】
表1は2つの追加フラグ、即ちフラグ構成器415によって構成されたrequireACT及びrequirePREを示す。requireACTフラグは、パケットがフルアドレス(行及び列アドレス)を必要とする時に真(true)として設定される。パケットのフルアドレスを利用して、スレーブコントローラ420は、受信されたパケットを行アドレス選択(RAS)−列アドレス選択(CAS)(又はRAS−CASライト:CASW)にデコーディングする。一方、requirePREフラグは、パケットが部分アドレス、例えばカラムアドレスのみを必要とする時に偽(false)として設定される。この場合、スレーブコントローラ420は、アクティブ行(RAS)を有し、パケットをCAS(又はCASW)にデコーディングする。
【0046】
requirePREフラグは、マスターコントローラ410が行空間の位置関係(row spatial locality)がマスターバッファ内に存在しないことを決定した時に真(true)として設定される。スレーブコントローラ420は、オープンページをクローズし、新しいページのオープンを準備するようにプリチャージコマンドを以前のコマンドに追加する。一方、requirePREフラグは、行空間の位置関係(row spatial locality)が存在した時に偽として設定される。この場合、スレーブコントローラ420はプリチャージコマンドを以前のコマンドに追加せず、オープンページは、requirePREフラグがオープンページをクローズするように真として設定される時までオープンに維持される。
【0048】
以下の擬似コード(pseudo−code)は、マスターコントローラ410がrequireACT及びrequirePREフラグをどのようにして構成し、管理するかを一例として示す。マスターコントローラ410は、擬似コード内でinputBufferと称するトランザクションキュー417を含む。requireACT及びrequirePREフラグは初期に真として設定される。マスターコントローラ410はトランザクションキュー417内でインカミング要請をスキャンする。インカミング要請がトランザクションキュー417内のペンディング要請のような同一チャンネル、ランク、バンク、及び行を有する場合、ペンディング要請のrequirePREフラグは偽として設定される。偽requirePREフラグは、インカミング要請が処理される時まで対応するページオープンをそのまま配置する。一方、インカミング要請のrequireACTフラグ及びrequirePREフラグは偽及び真として各々設定される。キュー内でテール(tail)からマッチ(match)が発見されると、スキャニング過程は中止される。なぜならば、これはマッチが発見された後、スキャニング過程を継続することが他のペンディング要請に対して望まない変更になることがあり、ペンディング要請のフラグを変更するためである。マッチがない場合、requireACTフラグ及びrequirePREフラグは変更されず、スレーブコントローラ420がオープンページを自由にクローズすることができる真(true)として設定される。
【0050】
スレーブコントローラ420は、マスターコントローラ410によって提供されるフラグを有し、requireACT及びrequirePREフラグの状態に基づいてインカミングパケットをメモリコマンドに変換する。表2はスレーブコントローラ420のデコーダ421がrequireACT及びrequirePREフラグの状態に基づいてマスターコントローラ410のインカミングパケットから生成するメモリコマンドの一例を示す。requireACTフラグ及びrequirePREフラグが両方真である場合、デコーダ421はRAS−CAS−PRE或いはRAS−CASW−PREコマンドを発行する。requireACTフラグが真であるが、requirePREフラグが偽である場合、デコーダ421はPREコマンドの追加無しにRAS−CAS或いはRAS−CASWコマンドを発行する。requireACTフラグ及びrequirePREフラグが両方偽である場合、デコーダ421は行活性化又はPREコマンドの追加無しにCAS或いはCASWコマンドを発行する。requireACTフラグが偽であるが、requirePREフラグが真である場合、デコーダ421は行活性化無しにCAS−PRE或いはCASW−PREコマンドを発行する。
【0052】
スレーブコントローラ420は、特に2つの追加フラグ、即ちrequireACT及びrequirePREの具現によるマスターコントローラ410の変更を収容するためにリフレッシュを差別的に取り扱う。以下の擬似コード(pseudo−code)の一例は、スレーブコントローラ420のリフレッシュハンドラー424がリフレッシュコマンドをどのようにして取り扱っているかを示す。ページオープンの時、リフレッシュハンドラー424はプリチャージコマンドをどれくらい早く施行するかを決定する。現在のバンク状態がアクティブロー状態ではなく、最後のコマンドがプリチャージコマンドである場合、リフレッシュハンドラー424は強制的にプリチャージを決定する。プリチャージを施行するために活性化コマンド及びプリチャージコマンドが挿入される。プリチャージコマンドが先ず発行され、リフレッシュコマンドが暗黙のうちに発行され、その後に活性化コマンドが発行される。活性化コマンドは、リフレッシュコマンドが完了すると、行を再びオープンする。リフレッシュカウンターが0(ゼロ)に到達し、全てのバンクがアイドル状態である場合、リフレッシュコマンドが発行される。
【0054】
一実施形態において、スケジューラ412は、インターリーブされたメモリトランザクションを最適化するために、マスターコントローラ410のトランザクションキュー417及びスレーブコントローラ420のコマンドキュー425をスケジューリングする。スケジューラ412は、マスターコントローラ410及びスレーブコントローラ420によって要請された従属性を維持する。スケジューラ412は、メモリ装置430のアクセス時にタイミング制約を守りながら、スレーブコントローラ420によってメモリコマンドの従属性を更に維持する。スケジューラ412は、マスターコントローラ410のトランザクションキュー417内のペンディング要請を再整理することによってメモリ性能を最適化する。マスターコントローラ410は、並列性が最大化されるようにできるだけ速やかに要請を送ることを試みる。従って、メモリシステム400の性能が改善される。
【0055】
スレーブコントローラ420におけるペンディングコマンドは、スレーブコントローラ420が性能を最適化するためにコマンドをできるだけ速やかに発行できる方法で再整理される。要請された従属性が維持され(例えば、リードライトシークェンス)、コマンド従属性が維持され(例えば、RAS CASシークェンス)、可用資源が(バンクがビジー状態ではない)ある限り、スケジューラ412はインカミング要請に関連するコマンドの発行を維持する。一例として、スケジューラ412は、バンク1、1、1、及び2にアクセスするためのコマンドのシークェンスを受信する。スケジューラ412は、バンクシークェンスが1、2、1、及び1になるようにコマンドを再整理する。即ち、スケジューラ412は、バンク2にアクセスするコマンドに対して、以前の全てのコマンドを終了するために待機する必要は無い。要請及びコマンドの従属性が充足される限り資源は可用され、スケジューラ412は、インカミング要請を再スケジューリングし、再スケジューリングされた要請を性能の最適化のためにできる限り速やかに発行する。
【0056】
一実施形態において、メモリシステムは、マスターコントローラ、ホストコンピュータに対するインターフェイス、及びスレーブコントローラに連結されたリンクバスを備える。マスターコントローラは、アドレスマッピングデコーダ、トランザクションキュー、及びスケジューラを含む。アドレスマッピングデコーダは、スレーブコントローラに連結されたメモリ装置のアドレスマッピング情報をデコーディングする。マスターコントローラのスケジューラは、メモリ装置のアドレスマッピング情報を利用してトランザクションキュー内のホストコンピュータから受信されたメモリトランザクション要請を再整理する。メモリシステムはマスターコントローラのトランザクションキュー内のペンディングメモリトランザクション要請に基づいて拡張オープンページポリシーを用いる。
【0057】
アドレスマッピング情報は、チャンネルID、ランクID、バンクID、及び行IDを含む。
【0058】
マスターコントローラは、フラグ構成器を更に含み、リンクバスを通じてフラグ構成器によって構成された複数のフラグをスレーブコントローラに送信する。
【0059】
複数のフラグは、要求活性化フラグ及び要求プリチャージフラグを含む。
【0060】
フラグ構成器は、ホストコンピュータから受信されたインカミングメモリトランザクション要求がトランザクションキュー内のペンディングメモリトランザクション要請(request)のチャンネルID、ランクID、バンクID、及び行IDを含む場合、メモリ装置の活性化されたページがオープンされるようにするために要求プリチャージフラグを設定する。
【0061】
一実施形態において、メモリモジュールは、デコーダ、スケジューラ、コマンドキュー、及びリードリターンキューを含むスレーブコントローラを備え、またメモリ装置を備える。デコーダは、メモリトランザクション要請を受信し、メモリトランザクション要請に基づいてメモリコマンドを生成し、コマンドキュー内にメモリコマンドを配置する。更に、デコーダは、複数のフラグを受信し、複数のフラグに基づいてコマンドキュー内のメモリコマンドを再整理する。
【0062】
スレーブコントローラは、複数のフラグに基づいてコマンドキュー内のメモリコマンドを変更して再整理し、変更して再整理されたメモリコマンドに基づいてメモリ装置のリフレッシュ動作を処理するリフレッシュハンドラーを更に含む。
【0063】
スケジューラは、コマンドキュー内のメモリコマンドに基づいてメモリコマンド及びメモリコマンドに関連するアドレスをメモリ装置に送信する。
【0064】
メモリモジュールは、パケタイザ及びリードリターンキューを更に含む。メモリ装置から受信されたデータは、リードリターンキュー内に配置され、パケタイザは、データを含むパケットを生成し、リンクバスを通じてパケットをマスターコントローラに送信する。
【0065】
スレーブコントローラは、メモリコマンド及びメモリコマンドに関連するアドレスを、メモリコマンドがコマンドキューに配置された順にメモリ装置に送信する第2スケジューラを更に含む。
【0066】
一実施形態において、メモリシステムにおけるマスターコントローラの動作方法は、リンクバスを通じてスレーブコントローラからメモリ装置のアドレスマッピング情報を受信するステップと、ホストコンピュータからメモリトランザクション要請を受信するステップと、トランザクションキュー内にメモリトランザクション要請を配置するステップと、メモリ装置のアドレスマッピング情報を利用してトランザクションキュー内のメモリトランザクション要請を再整理するステップと、を有する。
【0067】
上記方法において、アドレスマッピング情報は、チャンネルID、ランクID、バンクID、及び行IDを含む。
【0068】
上記方法は、複数のフラグを構成し、リンクバスを通じて複数のフラグをスレーブコントローラに送信するステップを更に含む。
【0069】
上記方法において、複数のフラグは、要求活性化フラグ及び要求プリチャージフラグを含む。
【0070】
上記方法は、ホストコンピュータから受信されたインカミングメモリトランザクション要求がトランザクションキュー内のペンディングメモリトランザクション要請のチャンネルID、ランクID、バンクID、及び行IDを含む場合、メモリ装置の活性化されたページがオープンされるようにするために要求プリチャージフラグを設定するステップを更に含む。
【0071】
一実施形態において、メモリシステムにおけるスレーブコントローラの動作方法は、リンクバスを通じてメモリ装置のアドレスマッピング情報をマスターコントローラに送信するステップと、メモリトランザクション要請を受信するステップと、メモリトランザクション要請をデコーディングし、デコーディングされたメモリトランザクション要請に基づいてメモリコマンドを生成するステップと、コマンドキュー内にメモリコマンドを配置するステップと、複数のフラグを受信するステップと、複数のフラグに基づいてコマンドキュー内のメモリコマンドを再整理するステップと、を有する。
【0072】
上記方法は、複数のフラグに基づいてコマンドキュー内のメモリコマンドを変更して再整理し、変更して再整理されたメモリコマンドに基づいてメモリ装置のリフレッシュ動作を処理するステップを更に含む。
【0073】
上記方法は、コマンドキュー内のメモリコマンドに基づいてメモリコマンドとメモリコマンドに関連するアドレスをメモリ装置に送信するステップを更に含む。
【0074】
上記方法は、メモリ装置から受信されたデータをリードリターンキュー内に配置し、データを含むパケットを生成し、リンクバスを通じてパケットをマスターコントローラに送信するステップを更に含む。
【0075】
上記方法は、メモリコマンド及びメモリコマンドに関連するアドレスを、メモリコマンドがコマンドキューに配置された順にメモリ装置に送信するステップを更に含む。
【0076】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。