JP5340658B2 - コマンド選択のメモリ・コントローラ読み取りキュー動的最適化 - Google Patents

コマンド選択のメモリ・コントローラ読み取りキュー動的最適化 Download PDF

Info

Publication number
JP5340658B2
JP5340658B2 JP2008176616A JP2008176616A JP5340658B2 JP 5340658 B2 JP5340658 B2 JP 5340658B2 JP 2008176616 A JP2008176616 A JP 2008176616A JP 2008176616 A JP2008176616 A JP 2008176616A JP 5340658 B2 JP5340658 B2 JP 5340658B2
Authority
JP
Japan
Prior art keywords
memory
requests
request
read
read queue
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
Application number
JP2008176616A
Other languages
English (en)
Other versions
JP2009020883A (ja
Inventor
ジョセフ・アレン・キルシュト
ブライアン・ティー・バンダプール
ブライアン・デビット・アリソン
エリザベス・エー・マクグローン
ワイン・メルビン・バレー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US11/775,411 external-priority patent/US20090019238A1/en
Priority claimed from US11/775,459 external-priority patent/US7761669B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009020883A publication Critical patent/JP2009020883A/ja
Application granted granted Critical
Publication of JP5340658B2 publication Critical patent/JP5340658B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

関連出願への相互参照
本出願は、「Memory Controller ReadQueue Dynamic Optimization of Command Selection」と題された2007年7月10日提出の米国特許出願第11/775,411号、および「MemoryController Granular Read Queue Dynamic Optimization of Command Selection」と題された2007年7月10日提出の米国特許出願第11/775,459号に基づいている。
本発明は、コンピュータ・システムにおけるメモリ・コントローラに関する。より具体的には、本発明は、メモリ・フェッチ(memory fetch)が行われる順序を制御することに関する。
最新のコンピュータ・システムは、1つ以上のプロセッサからの高いスループットを達成するために、メモリ中に格納されたデータへの迅速なアクセスを必要とする1つ以上のプロセッサを含む。コンピュータ・システムは一般に、プロセッサとメモリと間にメモリ・コントローラを有する。要求は、プロセッサ・バス上を送られ、メモリ・コントローラ中の読み取りキュー(read queue)に送られて、待ち行列に並べられる。メモリ・コントローラは、メモリへの読み取りアクセスをスケジュール設定し、メモリから読み取られたデータを待ち行列に並べ、プロセッサへ伝送するためのデータを伝送する。
読み取りキューが満杯になると、さらなる要求はメモリ・コントローラにより全く受け入れられない。この状況はスループットを低下させ、従って望ましくない。
従って、読み取りキューが満杯になるという出来事を低減または排除するための方法および装置が必要である。
本発明は、読み取りキューが満杯になるというメモリ・コントローラにおける望ましくない状況の可能性を低減または回避することによりコンピュータ・システムにおけるメモリ・アクセスを改善するための方法および装置を提供する。
本発明の実施形態は、データが要求された順序と同じ順序でデータがメモリから返されることを要求するコンピュータ・システムにおいて特に有利である。本発明の実施形態は、メモリ・チップからデータを読み取った後、メモリ・チップ中のバンクを開いたままにしておくのではなく、バンクを閉じるコンピュータ・システムにおいても特に有利である。
1つの実施形態において、プロセッサは、メモリからのデータについての要求を発行する。メモリは、第1のメモリ・チップおよび第2のメモリ・チップを含み、各メモリ・チップは複数のバンクを有する。第1のメモリ・チップからの連続した読み取りは、メモリ・バス上でのデッド・サイクルを必要としない。第2のメモリ・チップからの連続した読み取りは、メモリ・バス上でのデッド・サイクルを必要としない。第2のメモリ・チップからの読み取りが続く第1のメモリ・チップからの読み取りは、メモリ・バス上でのデッド・サイクルを必要とする。要求のための最低待ち時間は、プロセッサにより発行された順序で要求がサービスされる場合に生じ、読み取りキューが比較的満杯になるまで、または読み取りキューが要求の第1のしきい値に満たされるまで、基本設定にされる。読み取りキューが比較的満杯になると、または読み取りキューが粒度ベースで徐々に満杯になるにつれ、第1のメモリ・チップまたは第2のメモリ・チップへの読み取りシーケンスが識別され、メモリ・バス上のデッド・サイクルを低減または除去するために順不同でサービスされる。
1つの方法実施形態において、プロセッサにより発行された読み取り要求を読み取りキュー中に受け入れる第1のステップ、および読み取りキュー中の待ち状態の要求の数に基づいて、メモリ・アクセス・モードを決定する、特に3つ以上のメモリ・モードのセットからメモリ・アクセス・モードを決定するステップを含む方法が記載される。
好ましい実施形態の以下の詳細な説明において、添付図面が参照され、添付図面は本明細書の一部を成し、添付図面の中では、本発明が実施され得る特定の実施形態が例示的に示される。他の実施形態が利用でき、構造的変更が本発明の範囲を逸脱することなく行えることが理解されるべきである。
イン・オーダー・モード(In-Order mode)(すなわち、データが、要求された順序と同じ順序で返される)で動作するプロセッサを備えるコンピュータ・システムにおいて、メモリ・コントローラが、より新しい読み取り要求が最も古い読み取り要求の待ち時間に影響しない場合に限り、より新しい読み取り要求を選択して、最も古い読み取り要求をより新しい読み取り要求に対して優先させることは非常に有利である。もしデータがメモリ・チップから順不同で取り出されると、プロセッサ・バスは、最も古いデータがメモリから取り出されるのを待たなければならず、それによってプロセッサ・バスを機能停止(stall)させる。しかしながら、この方式は、最適化されたメモリ・バス・スループットという結果にはならず、さらにメモリ・バス・スループットが最適化されないので、読み取りキューは満杯になることがあり、コンピュータ・システムがより多くの要求を発行することを妨げる。メモリ・バス上のスループットの最適化は、メモリ・コントローラから順不同でデータを受信するように構成されたプロセッサについてさえも有利である。
本発明は、コンピュータ・システムにおいて満杯になるメモリ・コントローラ中の読み取りキューの発生を低減または排除する方法および装置の実施形態を提供する。
1つの実施形態において、メモリ・バス上のメモリへのアクセスの2つのメモリ・アクセス・モードが実施される。低待ち時間モードは、メモリ・コントローラが読み取り要求を受信した時から、そのデータが要求プロセッサに送られる時までの最小時間間隔を提供する。高帯域幅モードは、メモリ・バス上のデータ・スループットを最大化する。メモリ・コントローラは低待ち時間モードで開始し、読み取りキュー中の待ち状態の要求の数が、その読み取りキューが満杯になりつつあることを示す第1のしきい値に達するまで低待ち時間モードで動作し続ける。第1のしきい値に到達すると、メモリ要求により迅速にサービスするために、メモリ・コントローラは高帯域幅モードに切り替わるが、いくつかの要求について、メモリ・コントローラによるそれらの要求の受信からそれらの要求のためのデータのプロセスへの返送までの間隔を増大するという犠牲を払う。読み取りキュー中の待ち状態の要求の数が、第1のしきい値よりも低い第2のしきい値まで下落すると、メモリ・コントローラは、低待ち時間モードに復帰する。
また、1つの実施形態において、メモリ・バス上のメモリへのアクセスの3つ以上のメモリ・アクセス・モードが実施される。第1のメモリ・アクセス・モードは、メモリ・コントローラが読み取り要求を受信した時から、そのデータが要求プロセッサに送られる時までの最小時間間隔を提供する。第2のメモリ・アクセス・モードは、もしそうすることによりメモリ・バス上の1つ以上のデッド・サイクルが除去されるのであれば、より古い要求にサービスする前に1つ以上のより新しい要求にサービスすることにより、メモリ・バス上のデータ・スループットを増大する。第3のメモリ・アクセス・モードは、高帯域幅モードであり、もし最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上のデッド・サイクルが除去されるのであれば、第2のメモリ・アクセス・モードにおいて行われるよりも、最も古い要求のまえにより多くのより新しい要求にサービスすることを優先して、最も古い要求がさらに遅延されることを可能にすることにより、第2のメモリ・アクセス・モードが行うよりもメモリ・バス上のスループットを増大することにより、メモリ・バス上のスループットを最大化する。
ここで図1を参照すると、コンピュータ・システム100が、ブロック図形状で示してある。理解を容易にするため、本発明の実施形態を理解するのに必要なコンピュータ・システム100の要素のみが示してある。コンピュータ・システムが多くの他の要素(例えば、ディスク、ネットワーク通信施設等)を含むことが理解される。
コンピュータ・システム100は、メモリからのデータについての要求を発行するように構成されたプロセッサ102を含む。
プロセッサ102は、プロセッサ・バス105によってメモリ・コントローラ106に結合されている。双方向バス、一方向バス、アドレス/制御部分がデータと共に時分割多重化されるバス、別個のアドレス/制御部分を有するバス等のような、プロセッサ・バスの多くの実施形態が知られている。様々な実装において、メモリ・コントローラ106およびプロセッサ・バス105が、プロセッサ102と同じ半導体チップ上に物理的に設置されることも理解される。
メモリ・コントローラ106は、メモリ・バス107によって複数のメモリ・チップ110(図1において、インスタンス110a〜110dとして示される)に結合されている。メモリ・コントローラ106は、後に説明される制御ロジック122をさらに含む。コンピュータ・システムの実装によっては、バッファ・チップがメモリ・コントローラ106とメモリ・チップ110と間に挿入されることが理解される。メモリ・コントローラ106は後により詳細に説明される。
図2はメモリ・チップ110のブロック図を示す。メモリ・チップ110からメモリ・バス107上へのデータ読み取りを駆動するようにドライバ126が構成される。メモリ・チップ110が、メモリ・バス107からデータまたはアドレス/コマンドあるいはその両方を受信するように構成された受信機124をさらに含むことが理解される。メモリ・チップ110は、バンク0〜バンク3としてされる複数のバンク111(111a、111b、111c、および111dと呼ばれるインスタンス)をさらに含む。4つのバンク111が示されているが、より多いまたはより少ないバンク111が考えられる。
図3は、メモリ・バス107と接続された2つのメモリ・チップ110(110aおよび110b)を示す。メモリ・チップ110aは、バンク0〜3 111a〜111d、マルチプレクサ125a、およびドライバ126aを含んでいる。メモリ・チップ110bは、バンク0〜3 111a〜111d、マルチプレクサ125b、およびドライバ126bを含んでいる。ドライバ126aが第1のサイクルにおいてメモリ・バス107上の「1」(例えば、高電圧)を駆動し、ドライバ126bが、直後の第2のサイクルにおいてメモリ・バス107上の「0」(例えば、低電圧)を駆動すると、ドライバ126aおよび126bにおける、瞬間的ではない切り換え遷移時間、またはメモリ・チップ110aおよび110bの間の通常のタイミング・スキュー(timing skew)あるいはそれら両方のために、いくらかのシュートスルー電流(shoot-through current)が生じる。シュートスルー電流127は、この図においてドライバ126aおよび126b双方を通り抜ける電流である。そのようなタイミング・スキューは、プロセス変動、メモリ・チップ110aおよび110bが取り付けされるプリント配線カード上の配線長さの差等に起因することがある。シュートスルー電流127は、望ましくない。第1に、シュートスルー電流127は、メモリ・チップ110aおよび110bの電力消費量を増大させる。第2に、シュートスルー電流127は、メモリ・チップ110aおよび110bにより用いられる電源において望ましくない電圧降下を引き超すことがある。第3に、シュートスルー電流127は、短時間、ドライバ126aおよび126b双方が部分的にオン(導電性)になり、不確定で信頼できないロジック・レベルがメモリ・バス107上で駆動されるという結果になることを意味する。これらの理由から、ギャップ、または「デッド・サイクル(deadcycle)」が、ドライバ126aがメモリ・バス107を駆動する第1のサイクルとドライバ126bがメモリ・バス107を駆動する第2のサイクルとの間に配置されることが必要である。
図4は、メモリ・バス107の許容される駆動をさらに例示する。4つの連続したデータ読み取りがメモリ・チップ110aから行われ、第1の読み取りはサイクル0の間にバンク0aから、第2の読み取りはサイクル1においてバンク1aから、第3の読み取りはサイクル3においてバンク2aから、そして第4の読み取りはサイクル3においてバンク3aから行われる。サイクル3におけるバンク3aからの読み取りに続いて、図3に関して説明されたシュートスルー電流127を回避するためにギャップ、または「デッド・サイクル」がサイクル4において必要とされる。サイクル5において、データはメモリ・チップ110bから読み取られる(任意のバンク)。次の読み取りが再びメモリ・チップ110aからなので、サイクル6において別のギャップが必要とされ、サイクル7においてメモリ・チップ110a上のメモリ・バンクからの読み取りが続く。連続した読み取りが同じメモリ・チップ110から、異なるメモリ・チップ110からデータを読み取る前に可能な程度行われる場合に、メモリ・チップ110からのデータの伝送が最大化されることが上記の説明から理解されるであろう。
最新のメモリ・チップは、特定のメモリ・チップからの連続した読み取りの数に関するさらなる制約を有することがある、例えば、特定のメモリ・チップ製品は、4つの連続した読み取りに限定されることがある。特定のバンクは連続的に読み取ることができない。なぜならば、その特定のバンクが再び読み取られるようになる前にそのバンクを閉じるために時間が必要とされるからである。例えば、DRAM(ダイナミック・ランダム・アクセス・メモリ)の場合、バンクから読み取られたデータは、ストレージ・セル中に再書き込みされなければならず、ビット線は、所定の電圧まで駆動されなければならない。多くのメモリ・チップにおいて、もしバンクが開いたままにされれば、同じバンクへの多くの連続した読み取りが実行され得ることが理解される。本発明の実施形態は、読み取り要求へのサービスが、バンクを開き、データをバンクから読み取り、バンクを閉じるメモリ・チップの使用に向けられている。
多くの最新のメモリ・チップ110は、読み取りに応答してメモリ・バス107上で複数ビートのデータを伝送する。例えば、特定のメモリ・バンクからの読み取りは、16ビットのデータを提供するが、特定のメモリ・チップ110は、8つのドライバ126を物理的に有することがある(図3のドライバ126を参照)。そのような実施において、2ビートのデータが読み取りに応答してメモリ・バス107上で駆動される(すなわち、8つのドライバは、第1のビートにおいてメモリ・バス107上で8ビットの第1のグループを駆動し、8つのドライバは、第2のビートにおいてメモリ・バス107上で8ビットの第2のグループを駆動する)。図4を再度参照すると、そのような実施において、データが駆動されるサイクル(すなわち、サイクル0、1、2、3、5、および7)の各々は、メモリ・バス107上に2つのバス駆動サイクルを含む。サイクル4および6は、「ギャップ」または「デッド・サイクル」である。特定のメモリ・チップ110の仕様に応じて、サイクル4および6は、持続して1つのバス駆動サイクルまたは2つのバス駆動サイクルであり得る。
図5は、メモリ・コントローラ106をより詳細に示す。メモリ・コントローラ106は、プロセッサ102からの要求115をバッファする読み取りキュー121を含んでいる。読み取りキュー121は、“n"個の要求115(すなわち、要求0〜要求n−1)をバッファする能力を有することが示してある。読み取りキュー121中の各要求115は、アドレス・フィールド116、要求115が受け取られた順序を常時監視する配列情報フィールド117および特定の要求が推論的でありかつプロセッサ102により実際に必要とされるまたは必要とされないことがあり得ることを示す推論的要求フィールド118を含み得る。プロセッサ102は、いくつかの実施形態において、もしプロセッサ102が推論的要求中のデータが必要とされ得ると予測すれば、推論的要求を作成するように構成される。1つの実施形態におけるアドレス・フィールド116は、どのメモリ・チップ110およびどのバンク111が要求によりアドレスされるかに関する情報を含む。別の実施形態において、制御ロジック122は、どのメモリ・チップ110およびどのバンク111がアドレス・フィールド116に基づいて読み取られるべきかを決定するように構成される。1つの実施形態において、読み取りキュー121は、配列情報フィールド117を有する代わりに、要求が受け取られた順序を読み取りキュー121中の位置により暗黙的に維持する。
メモリ・コントローラ106は制御ロジック122を含む。制御ロジック122は、読み取りキュー121中のどの要求115が特定の時にメモリ・バス107上で駆動されるかを制御する。制御ロジック122は、読み取りキュー121中に待ち状態の要求がいくつあるかを示す要求カウント132を含む。例えば、もし読み取りキュー121に待ち状態の要求が全くなければ、要求カウント132は、0の値を有するであろう。もし読み取りキュー121が完全に満杯であり、プロセッサ102からの要求をそれ以上受け入れることができなければ、要求カウント132は、「n」の値を有する(図5の例。要求カウント132は、待ち状態の要求が全くない場合を説明するために、「n−1」ではなく、「n」の最大値を有さなければならないことに留意されたい)。制御ロジック122は、要求カウント132の現在値に対して比較される複数のしきい値をさらに含むしきい値130を含み、要求カウント132の現在値に対する1つ以上のしきい値の値の比較は、メモリ・チップ110への要求のサービスの順序で制御するために用いられる。
第1の実施形態において、しきい値130は、プログラム可能である。例えば、しきい値130は、いくつかのレジスタを含むことができ、各レジスタは、各レジスタに書き込みまたは走査されるしきい値を有するように構成される。プログラム可能は、メモリ・コントローラ106を含むチップが製造されるまたはその後に電気的にプログラムされる時のヒューズまたはアンチヒューズのいずれかによるプログラミングも含む。第2の実施形態において、しきい値130は単に、メモリ・コントローラ106に「実配線(hard wired)」され得る。
メモリ・コントローラ106は、返送キュー(returnqueue)123も含み得る。データが要求されたのと同じ順序でそのデータが返送されることを要求するプロセッサ102の実施例において、返送キュー123は、プロセッサ・バス105をプロセッサ102により要求された順序でプロセッサに送られるデータをバッファする。すなわち、もし制御ロジック122が、(プロセッサ102により送られた順序に関して)順不動で要求にサービスすれば(メモリ・チップ110に対して読み取りを行えば)、制御ロジック122は、データをバッファし、要求された順序でデータをプロセッサ102に返送するために、返送キュー123を従来のやり方で管理する。
プロセッサ102が、メモリ・コントローラ106への書き込み要求も行うことが理解される。メモリ・コントローラ106は、書き込みキュー(図示せず)も有する。最新のコンピュータ・システムは、プロセッサ120がデータを迅速に取得し、さらに読み取り要求が全くない場合、読み取り要求が推測的読み取りについてのものである場合、あるいはいくつかの実施形態に置いて、書き込みキューがほぼ満杯である場合に、書き込みキューが満足させられるように、書き込みより読み取りを優先するメモリ・コントローラ106を有する。本発明の実施形態は、読み取り要求を扱うものであり、従って、書き込み要求、書き込みキュー、書き込み要求へのサービスの議論は、本明細書中で記載されない。
図6は、制御ロジック122の一部の第1の実施形態を示す。図6に示される実施形態は、上記の要求カウント132ならびに2つのしきい値、130aおよび130bを含む。第1の比較133aは、要求カウント132を「下限しきい値」130aと比較する。第2の比較133bは、要求カウント132を「上限しきい値」130bと比較する。比較133aは、ラッチ135の再設定入力に結合されている。比較133bは、ラッチ135の設定入力に結合されている。コンピュータ・システム100が初期化される場合、要求カウント132は0に初期化される(すなわち、待ち状態の要求が皆無)。プロセッサ102がプロセッサ・バス105上で要求を送ると、読み取りキュー121は、要求を列に並ばせ始め、要求カウント132は、要求が読み取りキュー121に入ると増分され、読み取りキュー121からの要求がサービスされると減分される。制御ロジック122は、図6の実施形態において、ラッチ135が再設定される時のメモリ・アクセス・モードである低待ち時間モードで開始する。低待ち時間モードにおいて、制御ロジック122は、待ち時間を最小化するように要求にサービスする。すなわち、最も古い要求の待ち時間に影響することなくより新しい要求にサービスできるのでない限り、最も古い要求が最初に処理される。もし最も古い要求が、特定のメモリ・チップ110の特定のバンクへの以前の要求を待っているのであれば、最も古い要求の待ち時間に影響することなく、より新しい要求にサービスすることが可能であろう。
しかしながら、待ち時間を最小化するように要求にサービスすることは、異なるメモリ・チップ110への読み取りを行うことを要求することがよくあり、これは、メモリ・バス107上の多くのギャップ(デッド・サイクル)という結果になり、従って、メモリ・バス107上のデータ・スループットを減少させる。メモリ・コントローラ106は遅れて開始すること、すなわち、プロセッサ102が要求を送るのと同じ早さで要求にサービスしないことがある。これが生じると、読み取りキュー121は満たされ始める。読み取りキュー121が満杯になると、さらなる要求は全く受け入れられなくなり、プロセッサ102は、読み取りキュー121がより多くの要求のための余地を再度有するまで、それ以上の要求を伝送することができない。
待ち時間の最小化を犠牲にして、メモリ・バス107上のギャップを排除することによりスループットを促進することは、満杯読み取りキュー121の条件を低減または排除し得る。要求カウント132中の値がしきい値130b(「上限しきい値」)の値を超えると、比較133bは、ラッチ135を「1」に設定して、メモリ・アクセス・モード136を、高帯域幅モードである「1」に変更する。メモリ・アクセス・モード136が「1」であることに応答して、制御ロジック122は、メモリ・バス107上のギャップを最小化するようなやり方で要求115にサービスする。制御ロジック122は、単一のメモリ110上の異なるバンクへの連続したアクセスを行う要求をできるだけ選択およびサービスすることによってこれを行い、それによって、メモリ・バス107上のギャップを排除する。さらなる例によってこれを例示するため、表1は、00〜15まで番号を付けられた、読み取りキュー中の16の要求を示しており、要求0は最も古い要求であり、要求15は最も新しい要求である。
Figure 0005340658
メモリ・コントローラ122は、メモリ・バス107上のスループットを最大化する「高帯域幅」モードにおいて、メモリ・バス107上の各サイクルについて、表1の読み取りキュー要求番号を与え、メモリ・バス107上のギャップ(デッド・サイクル)について「−」を与えることにより、要求にアクセスする。4つのメモリ・チップ110が仮定されており(0〜3)、各メモリ・チップ110は、4つのバンク111(0〜3)を有する。3つのギャップを含む19のサイクルのみがメモリ・バス107上で必要とされる。
00 13 14 15 - 01 10 11 12 - 02 07 08 09 - 03 04 05 06
上記の要求サービスのメモリ・チップ番号およびバンク番号が、選択されたメモリ・チップ上のメモリ・チップおよびバンクを表示するサイクルごとの番号と共に以下に示される。例えば、「00」は、メモリ・チップ0、バンク0を意味し、「23」は、メモリ・チップ2、バンク3を意味する。
00 01 02 03 - 10 11 12 13 - 20 21 22 23 - 30 31 32 33
表1の読み取りキュー状態、(最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでなければ、要求が「最も古い要求が最初に(oldest request first)サービスされる」)「低待ち時間」モードのメモリ・コントローラ106を再度用い、以下は、メモリ・バス107上の要求番号サービスを示す。
00 - 01 - 02 - 03 04 05 06 - 07 08 09 - 10 11 12 -13 14 15
メモリ・バス107上で22のサイクルが必要とされる。この「低待ち時間」モードにおいてメモリ・バス107上で6つのギャップが必要とされ、メモリ・バス107上のいくらかの潜在的な帯域幅が無駄になるが、要求に関する最小待ち時間が保証される。
以下は、「低待ち時間モード」の場合のメモリ・バス107上の各サイクルについてのチップ番号およびバンク番号を示す。
00 - 10 - 20 - 30 31 32 33 - 21 22 23 - 11 12 13- 01 02 03
異なるメモリ・チップ110への連続した読み取りを行うことは、メモリ・バス107上のスループットに大きく影響し、同じメモリ・チップ110上の異なるバンク111からの読み取りへの要求サービスを並べ替える能力は、メモリ・バス107上のスループットを向上することが上記の例から明らかである。
図7は、読み取りキュー121がどのくらい満杯になっているかに応じて要求がどのようにサービスされるかにおける粒度(granularity)を提供する制御ロジック122の第2の実施形態を示す。図7における制御ロジック122は要求カウント132を含み、これは、待ち状態の要求が読み取りキュー121中にいくつあるかを示す。4つのしきい値130、すなわち、「しきい値A」130a、「しきい値B」130b、「しきい値C」130c、および「しきい値D」130dが図7に示してある。要求カウント132における現在の値が、しきい値130の各々と、比較133a、133b、133cおよび133dを用いて比較される。例えば、16の要求を格納できる読み取りキュー121を仮定して、しきい値A130aが8に設定され、しきい値B130bが10に設定され、しきい値C130cが12に設定され、しきい値D130dが14にセットされると仮定する。読み取りキュー121がかなり空くと(8未満の要求)、上述の「低待ち時間」モードが実施される。すなわち、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでない限り、最も古い要求が最初にサービスされる。
要求カウント132中の値が、比較されているしきい値130と等しいかそれより大きければ、図7の比較133は各々「1」を出力する。従って図7の比較133は、「温度計コード(thermometer code)」を生成する。すなわち、要求カウント132中の値が増大するにつれて、モード136が「0000」から「0001」、「0011」、「0111」、そして最終的に「1111」へ移動する。比較133の他の実施形態が、例えば、図14に描かれるように考えられ、図14に関連して論じられる。
読み取りキュー121が満たされ始め、8つの待ち状態の要求が読み取りキュー121中にあるので、要求カウント132中の値は、しきい値A130a中の値に等しくなり、比較133aは、メモリ・アクセス・モード・ビット136aを作動させる。(メモリ・アクセス・モード136=「0001」であり、メモリ・アクセス・モード・ビット136aは、最下位ビットである)。メモリ・アクセス・モード136=「0001」に応答して、もしより古い要求から取り出されるより新しい要求がメモリ・バス107上のギャップの除去という結果になるのであれば、制御ロジック122は、最も古い要求へのサービスを犠牲にして、より新しい要求がサービスされることを可能にする。
読み取りキュー121が満たされ続け、10の待ち状態要求を有すれば、要求カウント132の値(10)は、しきい値Bにおける値と等しく、比較133bは、メモリ・アクセス・モード136bを作動させ、メモリ・アクセス・モード136を「0011」にする。制御ロジック122は、メモリ・アクセス・モード136=「0011」に応答して、1または2つのより新しい要求が、もしそうすることによってメモリ・バス107上の1つ以上のギャップが排除されるのであれば、最も古い要求の前にサービスされることを可能にする。
読み取りキュー121がさらに満たされ、12の待ち状態要求を有すると、要求カウント132の値(12)は、しきい値C130cと等しく、比較133cは、メモリ・アクセス・モード136cを作動させ、メモリ・アクセス・モード136を「0111」にする。メモリ・アクセス・モード136=「0111」に応答して、制御ロジック122は、もしそうすることによってメモリ・バス107上の1つ以上のギャップが排除されるのであれば、最も古い要求の前に、最高3つのより新しい要求がサービスされることを可能にする。
読み取りキュー121がなおいっそう満たされ、14の待ち状態要求に達すると、要求カウント132の値(14)は、しきい値D130dと等しく、比較133dは、メモリ・アクセス・モードビット136dを作動させ、メモリ・アクセス・モード136を「1111」にする。メモリ・アクセス・モード136=「1111」に応答して、制御ロジック122は、図6における上限しきい値130bが超えられた時に関連して説明されたのと同様に、メモリ・バス107上のギャップを最小化する順序で、読み取りキュー121中の要求にサービスする。いくつかのプロセッサ102は、推測的読み取り要求を行う。要求に応答して読み取られるべきデータが必要とされるとプロセッサ102が予測する場合に、推測的読み取り要求が行われる。すべての推測的読み取りがプロセッサ102により必要とされるわけではない。1つの実施形態において、メモリ・アクセス・モード136=「1111」である場合、もし非推測的要求がサービスされ得るのであれば、推測的な要求は制御ロジック122によりサービスされない。
本発明の実施形態は、方法としても表現され得る。図8は、方法200の非常に高レベルの流れ図を示す。方法200は、ステップ201から始まる。ステップ300、203、400、および205は、相互依存性を有する並行プロセスとして考えることができる。
方法300は、図6において単一ビットとして示されるメモリ・アクセス・モード136、または図7において、図7に関連して上記で説明されたような粒度を提供する複数のビットとして示されるメモリ・アクセス・モード136のようなメモリ・アクセス・モードの管理を提供する。簡単に言えば、方法300は、(要求カウント132(図6または図7のような)要求カウントの値を、(図6における下限しきい値130aおよび上限しきい値130b、または図7におけるしきい値130a、130b、130c、130dのような)1つ以上のしきい値と比較し、データについての要求がサービスされる順序を決定するために用い得るメモリ・アクセス・モードを決定する。
ステップ203は、メモリ・コントローラにより制御された複数のメモリ・チップ中に常駐するデータについて、プロセッサから要求を受信する。メモリ・コントローラは、その要求を読み取りキュー中に配置する。いくつかの実施形態において、メモリ・コントローラは、要求のアドレス値部分から、どのメモリ・チップおよびメモリ・チップ中のどのバンクが要求に応答して読み取られなければならないかを決定する。1つの実施形態において、メモリ・コントローラは、読み取りキュー中の位置により要求が受信された順序を追跡する。別の実施形態において、メモリ・コントローラは、要求がメモリ・コントローラにより受信された順序を決定するのに適した値を各要求に割り当てる。
ステップ400は、メモリにアクセスし、読み取りキューからの要求が受信される順序を決定するためにステップ300によって決定されるメモリ・アクセス・モードを用いて、読み取りキューからの要求にサービスする。
ステップ205は、メモリから読み取られたデータをバッファし、要求された順序でデータが返されることを要求するコンピュータ・システムにおいて、メモリ・コントローラによりプロセッサからデータが受信された順序で、データをプロセッサへ返す。
ステップ300(図8)のより詳細な方法実施形態が図9に示してある。図9の方法300は、図6において制御ロジック122として示されるものと同様な方法実施形態であり、低待ち時間モードか高帯域幅モードであるメモリ・アクセス・モードを生成する。方法300は、ステップ302から始まる。ステップ304において、メモリ・アクセス・モードは低待ち時間に設定される。最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでない限り、低待ち時間モードは、ステップ400(図8)において、読み取りキュー中の要求は、最も古い要求が最初にサービスされるべきであることを意味すると認識される。ステップ306において、読み取りキュー中の待ち状態の要求のカウントが、上限しきい値と比較される。もしそのカウントが上限しきい値を超えれば(同等または超過が考えられる)、制御はステップ308に渡され、そうでなければ、制御はステップ306に戻る。ステップ308において、メモリ・アクセス・モードは、高帯域幅モードに設定される。高帯域幅モードは、異なるメモリ・チップへの要求にサービスする前に単一のメモリ・チップの異なるバンクへの要求を行う順序で要求にサービスすることにより、ギャップをできるだけ排除することを意図している。ステップ310は、待ち状態要求の要求カウントを下限しきい値と比較し、下限しきい値は、上限しきい値より小さい。もし要求カウントが下限しきい値より小さくなければ、制御はステップ310に戻る。もし要求カウントが下限しきい値より小さければ、制御はステップ304に戻る。
方法300は、プロセッサ、メモリ・コントローラ、およびメモリを含むコンピュータ・システムが動作している限り継続する。
図10は、図6の制御ロジック122に対応する方法400の実施形態の高レベル流れ図を示す。方法400は、ステップ401から始まる。ステップ402において、メモリ・アクセス・モードの現在の状態(例えば、図6におけるメモリ・アクセス・モード136であり、上記の方法300に関連してさらに説明される)が問い合わせされる。もしメモリ・アクセス・モードが低待ち時間であれば、制御はステップ460へ進み、制御ロジック120は、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでない限り、読み取りキュー中の最も古い要求が常にサービスされるように、メモリ・チップへの読み取りを発行する。もしステップ402が、メモリ・アクセス・モードが低待ち時間ではないと決定すれば、制御はステップ480へ進み、制御ロジック122(図6)は、メモリ・バス上のスループットが最大化されるように、メモリ・チップへの読み取りを発行する。前に説明されたように、これは、メモリ・チップからメモリ・コントローラへのデータ伝送においてギャップを有する必要を回避するために、そうすることが可能な場合に、同じメモリ・チップの異なるバンクへのものである読み取りキューからの要求に連続してサービスすることによって行われる。
図11は、方法400(図10)のステップ460についてのさらなる詳細を提供する方法460を示す。方法460は、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでない限り、読み取りキュー中の最も古い要求が最初にサービスされる低待ち時間モードで要求にサービスする。
方法460は、ステップ462から始まる。ステップ463において、読み取りキュー中の最も古い要求が決定される。最も古い要求の決定は、読み取りキュー中の要求の物理的位置がその要求の古さであり、最も古い要求が、読み取りキュー中の最後の要素である実施形態において、最後の要素を選ぶことによりなされる。代わりに、読み取りキュー中の要求の古さを常時監視するためにポインタを用いることができる。別の選択肢は、要求の受信順序を示す値でメモリ・コントローラにより満たされ得るフィールドを要求に含めることである。
ステップ464において、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るかどうかを見るためのチェックがなされる。例えば、読み取りキュー中の最も古い要求は、前の要求によってアクセスされている特定のメモリ・チップ中の特定のバンクへのものであり得る。その特定のバンクを開き、その特定のバンクからデータを読み取り、その特定のバンクを閉じるために、かなりの時間が必要とされる。最も古い要求のために特定のメモリ・チップ中の特定のバンクがアクセスされ得る前に、同じメモリ・チップ中の異なるバンクまたは異なるメモリ・チップへのより新しい要求が開始され、メモリ・コントローラにデータを返すかもしれない。もし最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのであれば、より新しい要求は、ステップ466においてサービスされる。ステップ466は、制御をステップ464へ戻す。さもなければ、最も古い要求は、ステップ468においてサービスされる。ステップ468は、制御をステップ463へ戻す。
図12は、図10のステップ480における付加的なステップの実施形態を示す。ステップ480は、図5のメモリ・バス107のようなメモリ・バス上のスループットを最大化しようと努める。
ステップ481は、ステップ480の付加的なステップを開始する。ステップ482において、読み取りキュー中の要求は、特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求があるかどうかを見るために検査される。メモリ制御は、どのメモリ・チップおよびメモリ・チップ中のどのバンクに、各要求がアクセスする必要があるかを知る。同じメモリ・チップ中の異なるバンクに連続してアクセスすることにより、メモリ・バス上のギャップ(「デッド・サイクル」)の必要が排除され、従って、メモリ・バス上のスループットが最大化される。もしそのような一連の要求が存在すれば、制御はステップ484への移行し、その一連の要求がサービスされる。ステップ484は、制御をステップ482へ返す。もしそのような一連の要求が存在しなければ、読み取りキュー中の最も古い要求がサービスされる。
図13は、要求にサービスすることの方法実施形態を説明する。要求にサービスすることは以前いろいろな時に論じられており、メモリ・チップからデータを読み取ることを意味する。方法490は、ステップ491から始まる。ステップ492において、特定のメモリ・チップ中の特定のバンクが開かれ、バンク中の特定の位置についてアドレスがメモリ・チップにより受信される。ステップ493において、データは特定のバンクから読まれる。典型的なDRAM(ダイナミック・ランダム・アクセス・メモリ)チップにおいて、読み取りは、選択されたビット線が、「0」(低電圧)がそのビット線に結合されたキャパシタ中に格納されていたことを示すのに十分なだけ放電されたかどうかを検出することを意味する。もしそうであれば、「0」はラッチ・アップ(latch up)され、その後メモリ・バス上で駆動される。もしそうでなければ、「1」がラッチ・アップされ、その後メモリ・バス上で駆動される。ステップ494において、特定のバンクを閉じ異なるワード線における新しい読み取りに応答してビット線を再充電する必要なくそのバンクが迅速に再アクセスされるように、そのバンクが閉じられる(読み取られたデータは再書き込みされ、ビット線は再充填される)。いくつかのコンピュータ・システムは、ページをできる限り開いたままにしておこうと試みることが理解される。これは、読み取りの間、ワード線が多くのビット線を作動させ、そのワード線のすべてが特定の要求のために必要とされるわけではないので、行われる。もし付加的な要求が、読み取り中にラッチ・アップされたビットについてなされるが、メモリ・バスに駆動するために選択されなければ、そのようなプロトコルは有利である。例えば、ワード線の起動が128本のビット線の読み取りを引き起こし、ビット線のうちの8本が特定の要求によって用いられると仮定しよう。さらに、特定のプログラムがデータに直線的にアクセスしていると仮定しよう。すなわち、一度に8ビットを「またぎ越す(striding)」。そのような場合、バンクを開いたままにしておくことが有利である。しかしながら、もしメモリ・アクセスが比較的ランダムであれば、メモリ・チップ中のバンクを、そのバンク中の異なるワード線を作動させる前に閉じる必要が頻繁にあるため、性能は損なわれるであろう。
図14は、図7に示されるより粒状の制御ロジック122により実行されるやり方に対応するやり方でステップ300および400(図8)の実施形態を組み入れる方法500を示す。方法500において、読み取りキューが満杯になるにつれてメモリ・バス上のスループットを増大させるために、次第に積極的な試みがなされる。
方法500は、ステップ501から始まる。ステップ502、504、506、508および510は、「ケース文(case format)」形式で示してある。すなわち、これらのステップの各々は、読み取りキューが特定の時点でどれほど満たされているかを示す「要求カウント」(図7における要求カウント132に関する以前の議論を参照されたい)を比較する。これらのステップの各々は、要求カウントの値を1つ以上のしきい値と比較し、比較が「真」であるステップは、方法400中のステップを実行させる信号を作動させる。図14に示される「比較」が、図7における比較と異なり、これによって「温度計コード」メモリ・アクセス・モード136が生成されることが注目される。図14の比較は、要求カウントを、示されるような1つ以上のしきい値と比較する。
ステップ502は、要求カウントの値を「しきい値A」(図7の「しきい値A130a」を参照)と比較する。しきい値Aは、比較的低いしきい値、例えば、16の要求を保持できる読み取りキューについて8の値、であることを意図している。もしステップ502が、要求カウントの値が「しきい値A」の値より小さいと決定すれば、ステップ503が作動される。ステップ503は、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでなければ、読み取りキュー中の要求が、最も古い要求が最初にサービスされるようにする。
ステップ504は、要求カウントの値を「しきい値A」および「しきい値B」の値と比較する。もし要求カウントが、「しきい値A」以上かつ「しきい値B」未満であれば、ステップ505が作動される。ステップ505において、最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上のギャップ(「デッド・サイクル」)が排除されれば、メモリ・コントローラは、最も古い要求の待ち時間を犠牲にして1つのより新しい要求がサービスされることを可能にする。
ステップ506は、要求カウントの値を「しきい値B」および「しきい値C」と比較する。もし要求カウントが、「しきい値B」以上かつ「しきい値C」未満であれば、ステップ507が作動される。ステップ507において、最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上の1つ以上のギャップ(「デッド・サイクル」)が排除されれば、メモリ・コントローラは、最も古い要求の待ち時間を犠牲にして1つまたは2つのより新しい要求がサービスされることを可能にする。
ステップ508は、要求カウントの値を「しきい値C」および「しきい値D」と比較する。もし要求カウントが、「しきい値C」以上かつ「しきい値D」未満であれば、ステップ509が作動される。ステップ509において、最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上の1つ以上のギャップ(「デッド・サイクル」)が排除されれば、メモリ・コントローラは、最も古い要求の待ち時間を犠牲にして1つ、2つ、または3つのより新しい要求がサービスされることを可能にする。
ステップ510は、要求カウントの値を「しきい値D」と比較する。もし要求カウントが「しきい値D」以上であれば、ステップ511が起動される。ステップ511において、最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上の1つ以上のギャップ(「デッド・サイクル」)が排除されれば、メモリ・コントローラは、最も古い要求の待ち時間を犠牲にしてより新しい要求がサービスされることを可能にする。加えて、もしプロセッサが、推測的要求を行うように構成されていれば、ステップ511は、もし非推測的要求がサービスされ得るのであれば、推測的要求にサービスしない。
コンピュータ・システムのブロック図を示す。 図1のコンピュータ・システムにより用いられるメモリ・チップのブロック図を示す。 第1のメモリ・チップおよび第2のメモリ・チップからの連続的なアクセスがメモリ・バス上でのギャップ(「デッド・サイクル」)なしで発生する場合に生じ得る問題を例示する。 メモリ・バス上での必要とされるギャップを有する第2のメモリ・チップへのアクセスが続く第1のメモリ・チップの異なるバンクからの複数のアクセスを示す。 メモリ・コントローラのブロック図である。 メモリ・コントローラにおけるメモリ・アクセス・モード生成機能の実施形態のブロック図である。 メモリ・コントローラにおける第2のメモリ・アクセス・モード生成機能の実施形態のブロック図である。 本発明の実施形態に従ってメモリ・コントローラにより実行されるメモリ要求並べ替え機能を高レベルで例示する流れ図である。 メモリ・アクセス・モードの管理を例示する流れ図である。 異なるメモリ・アクセス方式間で切り替えるために、図8のメモリ・アクセス・モードがメモリ・コントローラによりどのように用いられるかを例示する流れ図である。 メモリ・アクセスの低待ち時間モードをより詳細に例示する。 メモリ・アクセスの高帯域幅モードをより詳細に例示する。 メモリにアクセスすることにより要求にサービスするためのステップを例示する。 要求へのサービスの並べ替えの粒度制御(granularcontrol)を提供するために使用されるステップを例示する。

Claims (16)

  1. データについての要求を発行するプロセッサと、
    メモリ・バスに結合された、各々が複数のバンクを有する第1のメモリ・チップおよび第2のメモリ・チップであって、前記メモリ・バス上で前記第1のメモリ・チップにより駆動される第1のサイクルと前記第2のメモリ・チップにより駆動される第2のサイクルとの間にデッド・サイクルが必要とされる、第1のメモリ・チップおよび第2のメモリ・チップと、
    前記メモリ・バスに結合されたメモリ・コントローラと含み、
    前記メモリ・コントローラは、
    前記プロセッサにより発行された要求を格納するように構成された読み取りキューをさらに含み、前記読み取りキュー中の待ち状態要求の数が上限しきい値を超える場合、前記メモリ・バス上の要求されるデッド・サイクルを最小限にする順序で前記読み取りキューの要求にサービスし、前記読み取りキュー中の待ち状態要求の前記数が下限しきい値未満になる場合、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得ることを条件に、該より新しい要求をサービスするように構成されている
    コンピュータ・システム。
  2. 前記メモリ・コントローラは、前記読み取りキュー中の待ち状態要求の数が上限しきい値を超える場合、
    特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求が前記読み取りキュー中にあることを条件に、前記一連の要求にサービスし、
    前記特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求が前記読み取りキュー中にないことを条件に、前記読み取りキュー中の前記最も古い要求にサービスする、請求項1に記載のコンピュータ・システム
  3. 前記上限しきい値がプログラム可能となるように構成され、または前記下限しきい値がプログラム可能となるように構成され、あるいはその両方である、請求項2に記載のコンピュータ・システム。
  4. 前記上限しきい値または前記下限しきい値あるいはその両方が、実配線により設定される、請求項2に記載のコンピュータ・システム。
  5. 前記メモリ・コントローラは、データをプロセッサに、前記プロセッサが前記データについての要求を発行した順序で返すように構成されている、請求項1に記載のコンピュータ・システム。
  6. コンピュータ・システムにおいて読み取り要求にサービスする方法であって、
    プロセッサにより発行された読み取り要求を読み取りキュー中に受信するステップと
    前記読み取りキュー中の待ち状態の要求の数に基づいてメモリ・アクセス・モードを決定するステップとを含み
    前記メモリ・アクセス・モードを決定するステップは、
    待ち状態の要求の前記数が上限しきい値を超えれば、前記メモリ・アクセス・モードを高帯域幅モードに設定し、
    待ち状態の要求の前記数が下限しきい値未満であれば、前記メモリ・アクセス・モードを低待ち時間モードに設定するステップを含み
    前記高帯域幅モードでは、前記メモリ・バス上の要求されるデッド・サイクルを最小限にする順序で前記読み取りキューの要求にサービスし
    前記低待ち時間モードでは、前記最も古い要求がより新しい要求によって決して遅延されないようにメモリ・チップへの読み取りを発行することにより、前記読み取りキュー中の要求にサービスする
    前記方法。
  7. 前記高帯域幅モードでは
    特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求が前記読み取りキュー中にある時にはいつも、前記一連の要求にサービス、前記特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求が前記読み取りキュー中にない時にはいつも、前記読み取りキュー中の前記最も古い要求にサービスする、請求項に記載の方法。
  8. 記メモリ・アクセス・モードが前記低待ち時間モードにあり、記最も古い要求が遅延されないことを条件に、より新しい要求にサービスするステップをさらに含む、請求項に記載の方法。
  9. 記メモリ・アクセス・モードが高帯域幅モードにあれば、前記読み取りキュー中に非推測的要求が全くない場合に限り、推測的要求にサービスするステップをさらに含む、請求項に記載の方法。
  10. データについての要求を発行するプロセッサと、
    メモリ・バスに結合された、各々が複数のバンクを有する第1のメモリ・チップおよび第2のメモリ・チップであって、前記メモリ・バス上で前記第1のメモリ・チップにより駆動される第1のサイクルと前記第2のメモリ・チップにより駆動される第2のサイクルとの間にデッド・サイクルが必要とされる、第1のメモリ・チップおよび第2のメモリ・チップと、
    前記メモリ・バスに結合されたメモリ・コントローラとを含み、
    前記メモリ・コントローラが、
    前記プロセッサにより発行された要求を格納するように構成された読み取りキューをさらに含
    前記読み取りキュー中の待ち状態要求の前記数が第1のしきい値の値より小さければ、最も古い要求の待ち時間を増大することなくより新しい要求がサービスされ得るのでない限り、前記最も古い要求にサービスする第1のメモリ・アクセス・モードを用い、前記読み取りキュー中の待ち状態要求の前記数が前記第1のしきい値の値以上かつ第2のしきい値の値未満であれば、1つ以上のより新しい要求にサービスすることによりメモリ・バス上の1つ以上のデッド・サイクルが除去されるときはいつも、前記最も古い要求にサービスする前に、前記1つ以上のより新しい要求にサービスすることにより、前記最も古い要求の待ち時間を第1の量だけ延長させる第2のメモリ・アクセス・モードを用い、前記読み取りキュー中の待ち状態要求の前記数が前記第2のしきい値よりも大きい第3のしきい値の値以上であれば、1つ以上のより新しい要求にサービスすることによりメモリ・バス上の1つ以上のデッド・サイクルが除去されるときはいつも、前記最も古い要求にサービスする前に、前記1つ以上のより新しい要求にサービスすることにより、前記最も古い要求の待ち時間を前記第1の量より大きい第2の量だけ延長させる第3のメモリ・アクセス・モードを用いる
    コンピュータ・システム。
  11. 前記第3のメモリ・アクセス・モードにおける前記メモリ・コントローラは、推測的要求にサービスすることにより非推測的要求の待ち時間が増大させられるのであれば、推的要求にサービスしないように構成されている、請求項10に記載のコンピュータ・システム。
  12. 前記第1、第2および第3のしきい値が、プログラム可能となるように構成される、請求項10に記載のコンピュータ・システム。
  13. 前記第1、第2および第3のしきい値が、実配線値により設定される、請求項10に記載のコンピュータ・システム。
  14. 前記メモリ・コントローラは、前記プロセッサがデータについての要求を発行した前記順序で、前記データを前記プロセッサに返すように構成される、請求項10に記載のコンピュータ・システム。
  15. コンピュータ・システムにおいて読み取り要求にサービスする方法であって、
    プロセッサにより発行された読み取り要求を読み取りキュー中に受信するステップと
    メモリ・アクセス・モードを、3つ以上のメモリ・アクセス・モードを有するメモリ・アクセス・モードのセットから、前記読み取りキュー中の待ち状態の要求の数の関数として決定するステップとを含み
    前記メモリ・アクセス・モードを決定する前記ステップが、
    待ち状態の要求の前記数が第1のしきい値未満であれば、前記メモリ・アクセス・モードを第1のメモリ・アクセス・モードに設定するステップと、
    待ち状態の要求の前記数が前記第1のしきい値以上かつ第2のしきい値未満であれば、前記メモリ・アクセス・モードを第2のメモリ・アクセス・モードに設定するステップ
    、 待ち状態の要求の前記数が前記第2のしきい値以上であれば、前記メモリ・アクセス・モードを第3のメモリ・アクセス・モードに設定するステップとをさらに含み
    前記第1のメモリ・アクセス・モードでは、最も古い要求がより新しい要求によって決して遅延されないようにメモリ・チップへの読み取りを発行することにより、前記読み取りキュー中の要求がサービスされ
    第2のメモリ・アクセス・モードでは、1つ以上のより新しい要求にサービスすることによりメモリ・バス上の1つ以上のデッド・サイクルが除去されるときはいつも、前記最も古い要求にサービスする前に、前記1つ以上のより新しい要求にサービスすることにより、前記最も古い要求が第1の量だけ遅延され
    第3のメモリ・アクセス・モードでは、1つ以上のより新しい要求にサービスすることにより前記メモリ・バス上の1つ以上のデッド・サイクルが除去されるときはいつも、前記最も古い要求にサービスする前に、前記1つ以上のより新しい要求にサービスすることにより、前記最も古い要求が前記第1の量より大きい第2の量だけ遅延される
    前記方法。
  16. 記第3のメモリ・アクセス・モードでは、推測的要求にサービスすることにより非推測的要求の待ち時間を遅延させるのであれば、推測的要求はサービスされない、請求項15に記載の方法。
JP2008176616A 2007-07-10 2008-07-07 コマンド選択のメモリ・コントローラ読み取りキュー動的最適化 Expired - Fee Related JP5340658B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/775,411 US20090019238A1 (en) 2007-07-10 2007-07-10 Memory Controller Read Queue Dynamic Optimization of Command Selection
US11/775,459 US7761669B2 (en) 2007-07-10 2007-07-10 Memory controller granular read queue dynamic optimization of command selection
US11/775411 2007-07-10
US11/775459 2007-07-10

Publications (2)

Publication Number Publication Date
JP2009020883A JP2009020883A (ja) 2009-01-29
JP5340658B2 true JP5340658B2 (ja) 2013-11-13

Family

ID=40360427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008176616A Expired - Fee Related JP5340658B2 (ja) 2007-07-10 2008-07-07 コマンド選択のメモリ・コントローラ読み取りキュー動的最適化

Country Status (2)

Country Link
JP (1) JP5340658B2 (ja)
TW (1) TW200912733A (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347020B2 (en) * 2009-03-20 2013-01-01 Qualcomm Incorporated Memory access controller, systems, and methods for optimizing memory access times
US8055816B2 (en) 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8688880B2 (en) * 2010-06-23 2014-04-01 International Business Machines Corporation Centralized serialization of requests in a multiprocessor system
JP6210743B2 (ja) 2013-06-10 2017-10-11 オリンパス株式会社 データ処理装置およびデータ転送制御装置
JP6210742B2 (ja) 2013-06-10 2017-10-11 オリンパス株式会社 データ処理装置およびデータ転送制御装置
CN113590563A (zh) * 2021-07-28 2021-11-02 深圳Tcl新技术有限公司 一种数据请求方法、系统及存储介质和服务器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799257B2 (en) * 2002-02-21 2004-09-28 Intel Corporation Method and apparatus to control memory accesses
US7650481B2 (en) * 2004-11-24 2010-01-19 Qualcomm Incorporated Dynamic control of memory access speed

Also Published As

Publication number Publication date
JP2009020883A (ja) 2009-01-29
TW200912733A (en) 2009-03-16

Similar Documents

Publication Publication Date Title
US7761669B2 (en) Memory controller granular read queue dynamic optimization of command selection
US7617368B2 (en) Memory interface with independent arbitration of precharge, activate, and read/write
US7051172B2 (en) Memory arbiter with intelligent page gathering logic
US7281110B1 (en) Random access memory controller with out of order execution
US7467277B2 (en) Memory controller operating in a system with a variable system clock
US8560796B2 (en) Scheduling memory access requests using predicted memory timing and state information
US6182177B1 (en) Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US6799257B2 (en) Method and apparatus to control memory accesses
US11755507B2 (en) Memory module threading with staggered data transfers
JP5340658B2 (ja) コマンド選択のメモリ・コントローラ読み取りキュー動的最適化
US10114560B2 (en) Hybrid memory controller with command buffer for arbitrating access to volatile and non-volatile memories in a hybrid memory group
US8356143B1 (en) Prefetch mechanism for bus master memory access
US6182192B1 (en) Memory interface device and method for accessing memories
TW200416535A (en) Method and apparatus for determining a dynamic random access memory page management implementation
US20090019238A1 (en) Memory Controller Read Queue Dynamic Optimization of Command Selection
US6836831B2 (en) Independent sequencers in a DRAM control structure
US20070186071A1 (en) Optimizing data bandwidth across a variable asynchronous clock domain
JP2016085515A (ja) 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム
US7035984B2 (en) Memory arbiter with grace and ceiling periods and intelligent page gathering logic

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110606

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130529

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: 20130723

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130807

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