JP5610636B2 - トラフィッククラスと関連するポートをもつマルチポートのメモリコントローラ - Google Patents

トラフィッククラスと関連するポートをもつマルチポートのメモリコントローラ Download PDF

Info

Publication number
JP5610636B2
JP5610636B2 JP2011221349A JP2011221349A JP5610636B2 JP 5610636 B2 JP5610636 B2 JP 5610636B2 JP 2011221349 A JP2011221349 A JP 2011221349A JP 2011221349 A JP2011221349 A JP 2011221349A JP 5610636 B2 JP5610636 B2 JP 5610636B2
Authority
JP
Japan
Prior art keywords
memory
operations
qos
read
write
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.)
Active
Application number
JP2011221349A
Other languages
English (en)
Other versions
JP2012074042A (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.)
Apple Inc
Original Assignee
Apple Inc
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 US12/883,878 external-priority patent/US8631213B2/en
Priority claimed from US12/883,888 external-priority patent/US8510521B2/en
Priority claimed from US12/883,848 external-priority patent/US20120072677A1/en
Priority claimed from US12/883,864 external-priority patent/US8314807B2/en
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2012074042A publication Critical patent/JP2012074042A/ja
Application granted granted Critical
Publication of JP5610636B2 publication Critical patent/JP5610636B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Logic Circuits (AREA)
  • Transceivers (AREA)
  • Dram (AREA)
  • Transmitters (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

本発明はメモリコントローラの分野に関する。
一般的に、デジタルシステムは半導体メモリデバイスから形成されるメモリシステムを含む。例えば、スタティック・ランダムアクセスメモリ(SRAM)、ダイナミック・ランダムアクセスメモリ(DRAM)、同期型ダイナミック・ランダムアクセスメモリ(SDRAM)、低パワーバージョン(LPDDR,LPDDR2等)SDRAMを含むダブルデータレート(DDR,DDR2,DDR3等)SDRAMなどがある。このメモリシステムはパワーOFFではなくパワーONのときにデータを保持する揮発性であるが、不揮発性メモリ(例えば、フラッシュメモリ、ディスクドライブなどの磁気記憶デバイス、コンパクトディスク(CD)などの光記憶デバイス、デジタルビデオディスク(DVD)、ブルーレイドライブ)と比較したとき、低い待ち時間アクセスを提供する。
メモリシステムを形成するメモリデバイスは、メモリデバイス固有のプロトコルに従いメモリを読み書きする低レベルインタフェースを有する。メモリオペレーションを生成するソースは、バス、ポイント・ツー・ポイントパケットインタフェース等の高レベルインタフェースを経由して通信するのが典型的である。ソースは、プロセッサ、入出力(I/O)デバイスなどの周辺デバイス、オーディオ及びビデオデバイスなどである。一般的に、メモリオペレーションは、メモリからデバイスへデータを変換させるメモリ読み出しオペレーションと、ソースからメモリへデータを変換させるメモリ書込みオペレーションとを含む。メモリ読み出しオペレーションは、ここではより簡潔に読み出しオペレーション若しくは読み出しと呼び、同様にしてメモリ書込みオペレーションは書込みオペレーション若しくは書込みと呼ぶことにする。
したがって、メモリコントローラは高レベルインタフェースからメモリオペレーションを受信し、受信したオペレーションを実行するメモリデバイスを制御することを含むのが典型的である。メモリコントローラもまた、メモリオペレーションをキャプチャーするキューを含み、そしてパフォーマンスを向上させる回路を含むことができる。例えば、あるメモリコントローラは、異なるアドレスに影響を及ぼす初期の段階のメモリ書込みオペレーションの前にメモリ読み出しオペレーションをスケジューリングする。
メモリコントローラは、ソースによって出される異なるタイプのトラフィックに対する可視性を制限してきた。したがって、メモリコントローラは細かな粒度レベルではトラフィックを分離することができていなかった。その結果、メモリコントローラにおけるパフォーマンスの改善は、書込みオペレーション前の読み出しオペレーションをスケジューリングするなどのより粗いメカニズムに制限されてきたのである。
一実施例において、メモリコントローラはメモリ要求を受け入れるために多重ポートを組み込む。各ポートは、リアルタイム(RT)、グラフィックス、及び非リアルタイム(NRT)などの特定タイプのトラフィックに関連する。各タイプのトラフィックは異なる要求及び振る舞いを有する。異なるポートを提供することによって、メモリコントローラは異なるタイプの要求を並行して露呈するかもしれないし、トラフィック最小に基づくインテリジェントなスケジュール決定をすることが可能である。
幾つかの実施例において、異なるポートはそれぞれの通信プロトコルを用いる。例えば、中央処理装置(CPU)インタフェースはプロセッサのために使用され、グラフィックインタフェースはグラフィックデバイスのために使用される。或る実施例の場合、サードパーティは1以上のインタフェースを開発し、そのインタフェースを用いて通信するデバイスを売ることができる。メモリコントローラにおいて異なるポートがサポートされるので、メモリコントローラとサードパーティデバイスの両方を合体するシステムは、媒介回路がサードパーティデバイスとメモリコントローラ間のプロトコルを変換することを回避する。システムは簡略化且つ廉価であるとともに、媒介回路によって加えられるであろう待ち時間を避けるものとなる。
或る実施例において、サービスの質(QoS)のパラメータは、メモリコントローラに対するメモリオペレーションにより転送される。メモリコントローラが関連QoSレベルを用いて、ポートからメモリチャンネルへのメモリ要求をスケジューリングする。各トラフィックタイプは各QoSレベル詳細を有し、そしてメモリコントローラは、スケジューリングに関する各QoSタイプ間のアービター(仲裁)を行なうように構成される。さらに、バンド幅共有コントローラはこのスケジューリングに影響を与える。
後述する詳細な説明は添付の図面を引用する。図面の簡単な説明は以下のとおりである。
図1は、メモリコントローラを含むシステムの一実施例のブロック図である。 図2は、RT(リアルタイム)及びNRT(非リアルタイム)クラスのトラフィックのために定義されるQoSレベルの一実施例のブロック図である。 図3は、図1に示すメモリコントローラの一実施例のブロック図である。 図4は、図3に示すエージェントインタフェースの一実施例に含まれ得るポートインタフェースの一実施例のブロック図である。 図5は、図3に示すエージェントインタフェースの一実施例に含まれ得るメモリチャンネルインタフェースユニットの一実施例のブロック図である。 図6は、図5に示すQoSアービターのオペレーションを例示したフローチャートである。 図7は、図3に示すメモリチャンネルに例示されたプリ・ソーティング・キュー(PSQ)の一実施例のブロック図である。 図8は、図7に示すエンキューコントローラユニットのオペレーションを例示したフローチャートである。 図9は、図7に示すスケジューラーの一実施例としてのオペレーションを例示したフローチャートであり、スケジュールされるであろう読み出し及び書込み間を選択する。 図10は、図7に示すスケジューラーのオペレーションを例示したフローチャートであり、スケジュールされるであろう読み出し及び書込み間を選択する。 図11は、図7に示すスケジューラーのオペレーションを例示したテーブルであり、スケジュールされるであろう読み出しを選択する。 図12は、図3に示すメモリインタフェースユニット(MIF)の一実施例のブロック図である。 図13は、図12に示すMIFエンキュー・コントロール・ユニットのオペレーションを例示したフローチャートである。 図14は、図12に示すアクティベート・スケジューラーのオペレーションを例示したフローチャートである。 図15は、図12に示すカラム・アドレス・ストロボ(CAS)のオペレーションを例示したフローチャートである。 図16は、図12に示す最終スケジューラーのオペレーションを例示したテーブルである。 図17は、高レベルでキュー(待ち行列)し、様々なレベルでスケジューリングすることにおいて比較的重要なQoSパラメータ及びメモリバンド幅の一実施例のブロック図である。 図18は、インバンドでQosのアップグレードをサポートするメモリコントローラ特徴の一実施例のブロック図である。 図19は、インバンドでQosをアップグレードするオペレーションを例示したフローチャートである。 図20は、サイドバンドでQosをアップグレードするインタフェースの一実施例のブロック図である。 図21は、オペレーションの老化によりQosをアップグレードするオペレーションを例示したフローチャートである。 図22は、図1に示す集積回路を含むシステムの一実施例のブロック図である。
本発明は様々な修正及び代替態様を受け入れる余地がある一方で、それらの特定の実施例は図面で例示する方法によって示され、詳細が記述されるであろう。しかしながら、図面及び詳細な説明は、ここでは本願発明を開示された特別な態様に限定する意図はなく、これとは反対に、あらゆる修正、均等、及び代替が添付の図面により定められる本願の精神及び範囲内に収まるようにカバーされることを理解されたい。ここで用いている見出しは記載を組織化する目的であり、記載の範囲を制限するために用いている意味ではない。本願全体を通して用いられている「できる(may)」は、義務の意味(すなわち、しなければならない(mustの意味)というよりは、許可の意味(すなわち、可能性を持つ意味)である。同様に、「含む(include, including, includes)」の語は、含むの意味であり、これに制限されることではないことを理解されたい。
様々な装置、回路、又は他の構成要素が、1以上のタスクを実行するよう「構成される」ものとして記載され得る。そのような意味で、「構成される(configured to)」は、オペレーション中のタスクを実行する「回路をもつ」一般的意味の構成である広い規定である。その結果、装置/回路/構成要素は、現時点では存在しないときでさえ当該タスクを実行するよう構成することができる。一般的に、「構成される」に対応する構成を形成する回路はハードウェア回路を含む。同様に、様々な装置/回路/構成要素は、記載の簡便さのためにタスクを実行するものとして記載されている。このような記載は「構成される」を含むものとして解釈されるべきである。1以上のタスクを実行するよう構成された装置/回路/構成要素を規定することは、装置/回路/構成要素の解釈である合衆国法典35編第112条第6パラグラフを行使しないよう明確に意図されている。
図1を参照すると、システム5の一実施例のブロック図が示されている。図1の実施例において、システム5は外部メモリ12A−12Bに接合された集積回路(IC)10を含む。例示の実施例の場合、集積回路10は中央処理装置(CPU)ブロック14を含み、CPUブロック14は1以上のプロセッサ16とレベル2(L2)キャッシュ18を含む。別の実施例はL2キャッシュ18を含まないか、付加的なレベルのキャッシュを含むの少なくとも何れかである。さらに、2以上のプロセッサ16を含む実施例、及び1つだけのプロセッサ16を含む実施例が検討される。集積回路10は更に1以上の非リアルタイム(NRT)周辺機器20のセットと、1以上のリアルタイム(RT)周辺機器22のセットを含む。例示の実施例の場合、RT周辺機器はイメージプロセッサ24、1以上のディスプレイパイプ26、及びポートアービター28を含む。他の実施例はイメージプロセッサ24、ディスプレイパイプ26、及び/又は必要であれば任意の追加のリアルタイム周辺機器を含む。システム5内の1以上のカメラからイメージデータを受信するためにイメージプロセッサ24と接合する。同様に、ディスプレイパイプ26は、システム内の1以上のディスプレイを制御する1以上のディスプレイコントローラ(不図示)と接合する。例示の実施例の場合、CPUブロック14は、ブリッジ/ダイレクト・メモリ・アクセス(DMA)コントローラ30と接合し、これは1以上の周辺デバイス32及び/又は1以上の周辺インタフェースコントローラ34に接合する。様々な実施例において、周辺デバイス32及び周辺インタフェースコントローラ34の数は、0から任意の所望の数まで変化する。図1に示したシステム5はG0 38A及びG1 38Bなどの1以上のグラフィックコントローラを含むグラフィックユニットを更に含む。グラフィックユニット当りのグラフィックコントローラの数、及びグラフィックユニットの数は、他の実施例では変わることがある。図1に示すように、システム5は1以上のメモリ物理インタフェース回路(PHY)42A−42Bに接合するメモリコントローラ40を含む。メモリ物理インタフェース回路(PHY)42A−42Bは、メモリ12A−12Bと集積回路10のピン上で通信するよう構成されている。また、メモリコントローラ40は、一組のポート44A−44Eを含む。ポート44A−44Bのそれぞれは、第1のタイプのインタフェース(I/face 1)経由でグラフィックコントローラ38A−38Bのそれぞれと接合する。CPUブロック14は、第2のタイプのインタフェース(I/face 2)経由でポート44Cと接合する。NRT(非リアルタイム)周辺機器20及びRT(リアルタイム)周辺機器22は、ポート44D−44Eと第2のタイプのインタフェース経由でそれぞれ接合する。メモリコントローラ40に含まれるポート数は、メモリコントローラの数であるので、他の実施例において変化し得る。メモリPHY42A−42Bの数及び対応するメモリ12A−12Bは、他の実施例においては1又は2以上である。
一実施例において、各ポート44A−44Eは、特定のタイプのトラフィックと関連する。例えば、トラフィックタイプはRTトラフィック、NRTトラフィック、及びグラフィックトラフィックを含む。別の実施例では、上述したトラフィックタイプのサブセットに加えて又は代わりに他のトラフィックを含む。トラフィックの各タイプは別個に特徴付けられ(例えば、要求及び振る舞いという面で)、そしてメモリコントローラがトラフィックタイプを別個に取り扱ってより高いパフォーマンスをこの特徴に基づき提供し得る。例えば、RTトラフィックは、特定の時間量内での各メモリオペレーションサービスを要求する。オペレーションの待ち時間が特定の時間量を超える場合、RT周辺機器においてエラーのあるオペレーションが生じ得る。例えば、イメージプロセッサ26内のイメージデータが失われたり、ディスプレイパイプ26を連結したディスプレイ上の表示イメージが可視上歪められてしまったりする。RTトラフィックは、例えば、等時間間隔で生じるものとして特徴付けられる。一方、グラフィックトラフィックは、比較的高いバンド幅であり、待ち時間に敏感ではない。プロセッサ16などからのNRTトラフィックは、パフォーマンスの理由からもっと待ち時間に敏感であるが、高い待ち時間を耐え抜いている。つまり、NRTトラフィックは、NRTトラフィックを生成するデバイスにおいてエラーのあるオペレーションを生じさせることなく任意の待ち時間でサービスされるのが通常である。同様に、少ない待ち時間で敏感ではあるが、高いバンド幅のグラフィックトラフィックは任意の待ち時間でサービスされるのが一般的である。他のNRTトラフィックは、音声トラフィックを含み、音声トラフィックは比較的低いバンド幅であって、一般的には合理的な待ち時間でサービスされる。また、殆どの周辺機器トラフィックはNRTである(例えば、磁気、光又は固体状態の記憶媒体などのストレージデバイスに対するトラフィックである)。
異なるトラフィックタイプに関連するポート44A−44Eを提供することによって、メモリコントローラ40は異なるトラフィックタイプに並行して露呈される。その結果、メモリコントローラ40は、他のよりも先だってどのメモリオペレーションがトラフィックタイプに基づきサービスされるかについての良好な決定をすることができる。幾つかの実施例において、RT又はNRTトラフィックの一方に排他的に各ポートを占有することができる。他の実施例では、そのポートは特別なトラフィックタイプに関連するが、他のトラフィックタイプはポートにサポートされる。一実施例において、グラフィックトラフィックはNRTトラフィックとみなされるが、グラフィックトラフィックに対する可視化を他のNRTトラフィックから離すことは、他のNRTソース及びRTソース間でバランスするバンド幅のために有益である。同様に、プロセッサトラフィックを他のNRTソースから離すことは、バンド幅バランスにおいて有益である。例示の実施例の場合、RTポート44EはRTトラフィックに関連し、そして残りのポート44A−44DはNRTトラフィックに関連する。
一般的に、ポートは、1以上のソースと通信するメモリコントローラ40上の通信ポイントである。或るケースにおいては、ポートはソース専用となる(例えば、ポート44A−44Bは、グラフィックコントローラ38A−38Bそれぞれに専用となる。)他のケースでは、多数のソース間でポートが共有される(例えば、プロセッサ16はCPUポート44Cを共有し、NRT周辺機器20はNRTポート44Dを共有し、ディスプレイパイプ26及びイメージプロセッサ24などのRT周辺機器はRTポート44Eを共有する。)1以上のソースと通信する単一インタフェースにポートを連結する。その結果、ソースがインタフェースを共有するとき、インタフェースのソース側にアービターがあり、ソース間で選択する。例えば、L2キャッシュ18はメモリコントローラ40に対するCPUポート44Cのためのアービターとして機能する。類似のポートアービター(不図示)は、NRTポート44Dのためのアービターである。ポート上の単一ソース又はポート上のソースの組み合わせは、エージェントと呼ばれる。
各ポート44A−44Bは、その各エージェントと通信するためにインタフェースと接合されている。インタフェースは、任意のタイプの通信媒体(例えば、バス、ポイント・ツー・ポイント相互接続など)であり、そして任意のプロトコルを実行する。幾つかの実施例において、ポート44A−44Bすべては、同一のインタフェース及びプロトコルをインプリメント(実装)することができる。他の実施例において、異なるポートがそれぞれのインタフェース及び/又はプロトコルをインプリメントする。例えば、図1に示す実施例は、あるタイプのインタフェース/プロトコルを用いたグラフィックコントローラ38A−38B及びCPUブロック14と、そして別のタイプのインタフェース/プロトコルを用いたNRT周辺機器20及びRT周辺機器22とを含む。インタフェースは信号定義及びインタフェースの電気特性を参照し、プロトコルはインタフェース上の通信の論理的な定義(例えば、必要に応じて、コマンド、命令ルール、コヒーレンスサポートなど)である。様々なポート44A−44Bで1以上のインタフェースをサポートすることは、ソース/エージェントによってサポートされた1つのインタフェース及びメモリコントローラ40によってサポートされたインタフェースから変換される必要を削除する。それは幾つかの実施例においてパフォーマンスを改善することができる。さらに、集積回路10の幾つかの実施例は、知的財産(IP)として産業界で呼ばれているパッケージされたユニットとしてサードパーティから購入される。IPは「ハード」(この場合は、それは配置される回路のネットリストとして特定され、1つのブロックとしてIC上で配置される)、又は「ソフト」(この場合は、それは、集積回路10に包含される他のブロックと共に合成され得る統合ブロックとして特定される)である。ソフトとハードのIP両方が特定のインタフェース及びプロトコルを含み、それは一般的には集積回路10の設計者によって変更されることができないものである(少なくともIPを所有するサードパーティへの料金の支払いなくしてはできない)。したがって、複数のインタフェース/プロトコルをサポートすることは、サードパーティIPの包含を容易にすることを許可するものである。
一実施例において、各ソースは、当該ソースによって送信される各メモリオペレーションに対するサービスの質(QoS)パラメータを割り当てる。QoSパラメータはメモリオペレーションに関する要求されたレベルのサービスを識別する。高いレベルのサービスを要求するQoSパラメータ値によるメモリオペレーションは、低いレベルのサービスを要求するメモリオペレーションを超える好み(preference)を与える。例えば、図1のポート44A−44Bに対するインタフェースのそれぞれは、コマンド(Cmd)、フロー識別子(FID)、及びQosパラメータ(Qos)を含んでいることが示されている。コマンドはメモリオペレーション(例えば、読み出し又は書込み)を識別する。読み出しコマンド/メモリオペレーションはメモリ12A−12Bからメモリへのデータ転送を生じさせるが、これに対して書込みコマンド/メモリオペレーションはソースからメモリ12A−12Bへのデータ転送を生じさせる。また、コマンドはメモリコントローラ40をプログラムするコマンドを含む。例えば、どのアドレス範囲がどのメモリチャンネル、バンド幅共有パラメータなどにマッピングされるのか、すべてがメモリコントローラ40内でプログラム可能なのかである。FIDはメモリオペレーションのフローの一部としてメモリオペレーションを識別する。メモリオペレーションのフローは一般的に関連するが、異なるフローからのメモリオペレーションは、同一ソースからであっても、関連しない。FIDの部分(例えば、ソースフィールド)はソースを識別して、FIDのリマインダーはフロー(例えば、フローフィールド)を識別する。その結果、FIDはトランザクションIDに類似し、或るソースはFIDとしてのトランザクションIDを単純に送信する。このようなケースの場合、トランザクションIDのソースフィールドはFIDのソースフィールドであり、トランザクションIDの(同一ソースからのトランザクション間でトランザクションを識別する)シーケンスナンバーは、FIDのフローフィールドである。しかしながら、フローとしてトランザクションをグループ化するソースは、FIDをそれぞれに使用することができる。或いはまた、フローはソースフィールドに相互に関係する(例えば、同一ソースからのオペレーションは同一フローであり、そして異なるソースからのオペレーションは異なるフローの一部である。)フローのトランザクションを識別する能力は後述する様々な方法で用いられている(例えば、QoSアップグレーディング、再順序付けなど)。
したがって、所与のソースはQoSパラメータを使用するように構成されていて、どのメモリオペレーションがそのソースにとってより重要であるか(及び同一ソースからの他のメモリオペレーションの前にサービスされるべきであるか)を識別する。特に、ソースからのアドレス送信に関する順序づけられていないデータ送信をサポートするソースに関して適用する。さらにQoSパラメータは、同一のポート上及び/又は異なるポート上の異なるソースよりも高いレベルのサービスを要求するソースを許可する。
或る実施例において、異なるトラフィックタイプがQoSパラメータの異なる定義を有する。つまり、異なるタイプが異なるセットのQoSパラメータを有している。所与のQoSパラメータ値の意味は、導き出されるQoSパラメータのセットに影響される。例えば、RTQoSパラメータのセットが定義され、NRT QoSパラメータのセットが定義される。したがって、RT QoSパラメータはRT QoSパラメータセット内の意味で割り当てられ、NRT QoSパラメータはNRT QoSパラメータセット内の意味で割り当てられる。他の実施例が全ての部分又はあらゆるトラフィックタイプ間の同一QoSパラメータセットをインプリメントする。
メモリコントローラ40は各ポート44A−44Eで受信されたQoSパラメータを処理するよう構成されており、そして関連QoSパラメータを使用して、そのポートからの他のメモリオペレーションに関連したポートと、他のポートで受信した他のメモリオペレーションに関連したポートとで受信した複数のモリオペレーションをスケジューリングする。詳しくいうと、メモリコントローラ40は、QoSパラメータ(例えば、RT QoSパラメータ及びNRT QoSパラメータ)の異なるセットから導き出されるQoSパラメータを比較するよう構成され、これらのQoSパラメータに基づきスケジューリング決定をするよう構成されている。
よって、QoSパラメータは、メモリオペレーションにより送信される値であり、要求されるQoSレベルを識別するためにメモリコントローラで使用される。QoSレベルは他のレベルに関係し、どのメモリオペレーションが低いQoSレベルを有する他のものよりも前に選択されることが好ましいかを特定する。したがって、他の要因によってプライオリティをバランスし得るのだけれども、異なるセットに定義されたQoSレベルを考慮するために、メモリコントローラによって解釈された後で、QoSレベルはプライオリティのように機能する。
幾つかの実施例の場合、メモリコントローラ40はペンディング・メモリオペレーションのQoSレベルをアップグレードするよう構成される。様々なアップグレードメカニズムがサポートされている。例えば、メモリコントローラ40は、高次のQoSレベルを特定するQoSパラメータを有する同じフローから別のメモリオペレーションを受信することに応じて、フローのペンディング・メモリオペレーションに関するQoSレベルをアップグレードするよう構成されている。このQoSアップグレードの態様は、インバンドアップグレードと呼ばれている。なぜなら、普通のメモリオペレーション伝送を用いて送信されたQoSパラメータは、同一フローにおけるメモリオペレーションに関して黙示のアップグレード要求として作用することもあるからである。メモリコントローラ40は、同じポート又はソースであるが、新たに受信したメモリオペレーションが高次のQoSレベルを特定するので、同じフローではないものからのペンディング・メモリオペレーションをプッシュするよう構成されている。別の例として、メモリコントローラ40は、1以上のエージェントからサイドバンド・インタフェースに接合されているよう構成され、サイドバンド・インタフェース上のアップグレード要求を受信することに応じたQoSレベルをアップグレードする。別の例においては、メモリコントローラ40は、ペンディング・メモリオペレーションの相対年次をトラックするよう構成される。メモリコントローラ40は、或る年次で、経年メモリオペレーションのQoSレベルをアップグレードするよう構成される。アップグレードが生じる年次は、経年メモリオペレーションの最新QoSパラメータに依存する。
メモリコントローラ40は、ポートで受信した各メモリオペレーションがアドレスするメモリチャンネルを決定するように、そしてメモリオペレーションを対応チャンネルのメモリ12A−12Bに送信するよう構成される。チャンネル数及びチャンネルへのアドレスマッピングは、様々な実施例で変化するとともに、メモリコントローラでプログラム可能である。メモリコントローラは、同じチャンネルにマップされたメモリオペレーションのQoSパラメータを用いて、チャンネル内に送信されたメモリオペレーションの順序を決定する。つまり、メモリコントローラはポートで受信した本来の順序からメモリオペレーションを再順序づけする。さらに、チャンネル内の処理中、メモリオペレーションは1以上のポイントで再び順序づけされる。再順序づけの各レベルで、QoSパラメータはメモリオペレーションパラメータに配置された強調の程度は減少し、そしてメモリバンド幅の効率性に影響を及ぼす要因が増加する。メモリオペレーションがメモリチャンネルパイプラインの終わりに行き着くと、そのオペレーションはQoSレベル及びメモリバンド幅効率性の組み合わせによって順序づけられる。高いパフォーマンスが幾つかの実施例で実現される。
プロセッサ16は、どんな命令セットアーキテクチャもインプリメントし、その命令セットアーキテクチャに定義されている命令を実行(演算)する。プロセッサ16はスケーラー、スーパー・スケーラ−、パイプライン、スーパー・パイプライン、順序外、順序どおり、推論、非推論等又はそれらの組み合わせを含む任意のマイクロ・アーキテクチャを用いる。プロセッサ16は、回路を含み、そしてマイクロコーディング テクニックを選択的にインプリメントする。プロセッサ16は1以上のレベル1 キャッシュを含み、そしてその結果、キャッシュ18はL2キャッシュである。他の実施例では、プロセッサ16内のマルチキャッシュレベルを含む。キャッシュ18は階層的に次のレベルに下降する。キャッシュ18は任意のサイズ及びコンフィグレーション(セット関連、ダイレクトマッピングなど)を適用する。
グラフィックコントロール38A−38Bは、グラフィック処理回路である。一般的に、グラフィックコントロール38A−38Bはフレームバッファに表示されるようオブジェクトをレンダーする。グラフィックコントロール38A−38Bは、一部又は全てのグラフィックオペレーションを実行するグラフィックソフトウェア、又は或るグラフィックオペレーションのハードウェア加速の少なくともいずれかを演算するグラフィックプロセッサを含む。ハードウェア加速の量及びソフトウェアインプリメンテーションは、各実施例で変化する。
NRT周辺機器20は、非リアルタイム周辺機器を含み、そのパフォーマンス及び/又はバンド幅の理由から、メモリ12A−12Bへの独立したアクセスを提供する。つまり、NRT周辺機器20によるアクセスは、CPUブロック14とは独立し、CPUブロックメモリオペレーションとは並行して進む。周辺機器34などの他の周辺機器及び/又は周辺インタフェースコントロール34によって制御された周辺インタフェースと接合する周辺機器も非リアルタイム周辺機器であるが、独立したメモリアクセスを要求していない。NRT周辺機器20の様々な実施例は、ビデオエンコーダ及びデコーダ、スケーラー(scaler)/ローテイター(rotator)回路、画像の圧縮/復元回路などを含む。
上述したように、RT周辺機器22はイメージプロセッサ24及びディスプレイパイプ26を含む。ディスプレイパイプ26は1以上のフレームをフェッチし、フレームをブレンドし、ディスプレイイメージを形成する回路を含む。ディスプレイパイプ26は1以上のビデオパイプラインを更に含む。ディスプレイパイプ26の結果は、ディスプレイスクリーン上のディスプレイスクリーンに表示されるべきピクセルストリームである。ディスプレイスクリーン上のディスプレイに関するディスプレイコントローラにピクセル値を送信する。イメージプロセッサ24はカメラデータを受信し、メモリに記憶されるイメージにデータを処理する。
ブリッジ/DMAコントローラ30は周辺機器32及びメモリ空間に対する周辺インタフェースコントローラ34にブリッジする回路を含む。例示の実施例の場合、ブリッジ/DMAコントローラ30は、ブロック14を介した、周辺インタフェースコントローラからCPUメモリコントローラ40へのメモリオペレーションをブリッジする。また、CPUブロック14は、ブリッジされたメモリオペレーション群、及びプロセッサ16/L2キャッシュ18からのメモリオペレーション群間のコヒーレンスを保持する。L2キャッシュ18は、CPUインタフェース上で送信されるプロセッサ16からCPUポート44Cまでのメモリオペレーションによりブリッジされたメモリオペレーションを仲介する。また、ブリッジ/DMAコントローラ30は、周辺機器32及び周辺インタフェースコントローラ34のためにDMAオペレーションを提供し、メモリから及びメモリへデータブロックを転送する。詳細にいうと、DMAコントローラは、周辺機器32及び周辺インタフェースコントローラ34のために、メモリコントローラ40を介して、メモリ12A−12Bから及びメモリ12A−12Bへの転送を実行するよう構成されている。DMAコントローラは、プロセッサ16によってプログラム化され、DMAコントローラは、オペレーションを実行する。例えば、DMAコントローラは、記述子を介してプログラム可能である。この記述子はDMA変換子(例えば、送信元アドレス及び宛先アドレス、サイズなど)を記述するメモリ12A−12Bに記憶されたデータ構造である。或いは又、DMAコントローラはDMAコントローラ(不図示)内のレジスタを介してプログラム化が可能である。
周辺機器32は、所望の入力/出力デバイス又は集積回路10に含まれる他のハードウェアデバイスを含む。例えば、周辺機器32は、イーサネット(登録商標)MAC(メディアアクセスコントローラ)又は無線フィデリティ(WiFi)などの1以上のネットワークMACといったネットワーク周辺機器を含む。様々なオーディオ処理デバイスを含むオーディオユニットが周辺機器32に含まれる。1以上のデジタル信号プロセッサが周辺機器32に含まれる。周辺機器32は、タイマー、onチップ シークレットメモリ、暗号エンジンやこれらの組み合わせなど他の任意の機能を含む。
周辺インタフェースコントローラ34は、任意のタイプの周辺インタフェースに関する任意のコントローラを含む。例えば、周辺インタフェースコントローラは、USBコントローラ、周辺コンポーネント相互接続高速(PCIe)コントローラ、フラッシュメモリインタフェース、汎用入出力(I/O)ピンなどの様々なインタフェースコントローラを含む。
メモリ12A−12Bは、ダイナミック・ランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、ダブルデータレート(DDR,FDDR2,DDR3など)、(mDDR3などの携帯バージョンのSDRAM、LPDDR2などの低パワーバージョンのSDRAMの少なくともいずれかを含む)SDRM、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)などの任意のタイプのメモリである。1以上のメモリデバイスがメモリモジュールを形成する回路基板上で接合される。ここで、メモリモジュールとは、単一インライン・メモリモジュール(SIMM)、デュアルインライン・メモリモジュール(DIMM)などである。あるいはまた、デバイスはチップonチップ構成、パッケージonパッケージ構成、又はマルチチップモジュール構成の集積回路10によりマウントされる。
メモリPHY42A−42Bは、メモリ12A−12Bに対して低レベル周辺インタフェースを扱う。例えば、メモリPHY42A−42Bは、同期DRAMメモリなどに正確なクロッキング(clocking)用の信号タイミングに責任を負う。一実施例において、メモリPHY42A−42Bは、集積回路10内に供給されるクロックをロックするよう構成され、そしてメモリ12により用いられるクロックを生成するよう構成される。
他の実施例は、図1で示すコンポーネント及び/又は他のコンポーネントのサブセット又はスーパーセットを含むコンポーネントの組み合わせを含むことに留意されたい。所与のコンポーネントの一実例が図1に示される一方で、他の実施例は所与のコンポーネントの1以上の実例を含む。同様に、発明の詳細な説明の全体を通して、所与のコンポーネントの1以上の実例は、たとえ1つしか示されていないとしても、1つの実例を含む実施例を含み、複数の実例が示される場合にも用いられる。
メモリコントローラ40の他の実施例が多重ポートをインプリメントしないことに留意されたい。しかし、それはQoSパラメータをインプリメントする。各QoSパラメータ/レベルは、NRT及びRT、並びにQoSアップグレーディングなどの異なるトラフィックタイプ又はクラスのそれぞれに存在する。
次の図2を参照すると、テーブル50及び52の組が、RT QoSレベルセット及びNRT QoSレベルセットのそれぞれの定義を示している。他の実施例は追加又は代替となるレベルを含み、そして他の実施例は図示したレベルのサブセットで組み合わせた追加のレベルを含む。図2においてテーブル50及び52の隣に存在する下方を指し示す矢印によって描画されているように、テーブルはプライオリティが高くなる集合内のQosレベルを示している。つまり、リアルタイム緑(RTG)Qosレベルは再下位のプライオリティRTQosレベルであり、リアルタイム黄(RTY)Qosレベルは中間プライオリティRTQosレベルであり、リアルタイム赤(RTR)Qosレベルは再上位のプライオリティRTQosレベルである。同様に、最大努力(BEF)Qosレベルは再下位のプライオリティRTQosレベルであり、低待ち時間(LLT)Qosレベルは再上位のプライオリティRTQosレベルである。図2において互いに隣合うRT QoSレベル及びNRT QoSレベルの例は、NRT QoSレベルに関するRT QoSレベルの相対プライオリティを示唆することを意図していない。むしろ、メモリコントローラ40は、そのような相対プライオリティを、様々なタイプ及びポートにわたってメモリコントローラ40が経験するトラフィックを示唆する他の要因に基づき決定する。
RTG、RTY、及びRTRのQosレベルは、RTソースからの緊急相対レベルを反映する。つまり、エラーを含んだオペレーションの減少を回避するため、RTソースによってデータが必要とされる前の時間量として、各メモリオペレーションに割り当てられたQoSレベルは高い緊急性を示唆するために増加する。高プライオリティによるより高い緊急性をもつオペレーションを扱うことによって、メモリコントローラ40はデータをRTソースにより迅速に戻し、その結果、RTソースの正確なオペレーションを手助けする。
例えば、ディスプレイパイプ26は、ディスプレイの仮想ブランク間隔で表示されるはずの次のフレームのために、メモリ12A−12Bからフレームデータを読み出すことを開始する。このフレームは実際には、仮想ブランク間隔の終了まで表示されず、ディスプレイパイプ26はこの時間期間中、RTGレベルを用いる。フレームが表示されることを開始するとき(すなわち、ステップコントローラがディスプレイパイプ26出力からフレームピクセルの読み出しを始めるとき)、ディスプレイパイプ26は、フレームデータ読み出しオペレーションのQoSレベルを、RTYレベルのメモリに生じさせる。例えば、表示されるカレントピクセルの前に読み出されるフレームデータの量が第1の閾値より下回って減少するならば、ディスプレイパイプ26はメモリオペレーションのQoSレベルをRTRにする。
BEF NRT QoSレベルは、他のフローのデータの必要性があったならば、メモリコントローラ40ができるだけ早くデータを戻す要求である。他方、LLT NRT Qosレベルは、低い待ち時間データの要求である。LLT QosレベルをもつNRTメモリオペレーションは、他のメモリトランザクションのプライオリティという観点で、(少なくとも幾つかのケースにおいて)BEF Qosレベルを持つものよりも、より接近して扱われる。他のケースでは、BEF及びLLTQoSレベルはメモリコントローラ40によって同一に扱われる。
次の図3を参照すると、メモリコントローラ40の一実施例のブロック図が示されている。図3の実施例の場合、メモリコントローラ40はエージェントインタフェースユニット(AIU)、及び1以上のメモリチャンネルユニット56A−56Bを含む。所与の実施例に含まれる各メモリチャンネルのために1つのメモリチャンネルユニット56A−56Bがあるかもしれない。そして他の実施例は第1のチャンネル又は2チャンネル以上を含む。図3に示すように、AIU54はマルチポートインタフェースユニット58A−58Eを含む。より詳細には、メモリコントローラ40上の各ポート44A−44Eに関するポートインタフェースユニット58A−58Eがある。AIU54は、さらにメモリチャンネルインタフェースユニット(MCIU)60A−60Bを含む(各メモリチャンネルユニット56A−56Bについて1つ)。AIU54は更に1以上のバンド幅共有レジスタ62を含み、それはどのようにしてバンド幅がポート間で共有されるかを示唆するためにプログラム化される。ポートインタフェースユニット58A−58Eは、メモリオペレーションを受信し、対応のポート上でのデータ及び応答を送受信するために接合され、MCIU60A−60Bに接合されてもいる。MCIU60A−60Bは更に、バンド幅共有レジスタ62及び対応のMCU56A−56Bに連結される。図3に示すとおり、MCU56A−56Bは、プリソーティング・キュー(PSQ)64及びメモリインタフェース回路(MIF)66をそれぞれ含む。PSQ64は、対応のMCIU60A−60Bに、そして同じMCU56A−56B内のMIF66に接合される。各MCU56A−56B内のMIF66は対応のメモリPHY42A−42Bに接合される。
AIU54は、ポート44A−44Eに関するメモリオペレーションを受信し、これらのメモリオペレーションによってアドレスされるチャンネルにそのメモリオペレーションをスイッチするよう構成される。このとき、同じMCU56A−56Bに対する別のメモリオペレーションの前に、どのメモリオペレーションがMCU56A−56Bの一つに送信されるかを特定することのファクターとして、メモリオペレーションのQoSパラメータを用いる。他のファクターにはバンド幅共有コントローラを含み、ポート間でのメモリチャンネルのバンド幅を分割する。
より詳細には、各ポートインタフェースユニット58A−58Eが、対応するポート44A−44Eからメモリオペレーションを受信するように構成され、どのメモリオペレーションにメモリチャンネルが向けられているかを決定するように構成されている。ポートインタフェースユニット58A−58Eは対応するMCIU60A−60Bにそのメモリオペレーションを送信し、例示の実施例においては書込みとは別個に読出しを送信する。したがって、例えば、ポートインタフェースユニット58Aは、読出しオペレーション及び書込みオペレーションそれぞれに関するMCIU60AへのRd0接続及びWr0接続を有する。同様に、ポートインタフェースユニット58AはMCIU60Bに対するRd1接続及びWr1接続を有する。他のポートインタフェースユニット58B−58Eは、MCIU60A−60Bへの同様の接続を有する。また、ポートインタフェースユニット58A−58BからMCIU60A−60Bへの読出しデータを送信するデータインタフェースもあり、これは、図3のMCIU 60Aのために点で描いた“D”インタフェースとして示されている。
MCIU60A−60Bは、ポートインタフェースユニット58A−58Eにより提供されるメモリオペレーションをキューして、メモリオペレーションの中からオペレーションを選択して仲裁し、対応するMCU56A−56Bに送信するよう構成される。所与のメモリチャンネルでターゲットされたオペレーション間の仲裁は、他のメモリチャンネルでターゲットされたオペレーション間での仲裁とは独立している。
MCIU60A−60Bはバンド幅共有レジスタ62に接合され、それはチャンネル上のメモリバンド幅が所与のチャンネル内のメモリオペレーションにどのように割り当てられるかを示すようにプログラムされている。例えば、一実施例において、MCIU60A−60Bは、高い優先度のトラフィック(例えば、RTトラフィックにおけるRTR又はRTYレベル)が存在しないとき、損失−重みづけラウンド・ロビンアルゴリズムを用いて、ポート間を選択する。RTR又はRTYトラフィックが存在するとき、ラウンド・ロビンメカニズムを使用してRTR/RTYトラフィックをもつポート間での選択をする。損失−重みづけラウンド・ロビンメカニズムにおける重みは、或るポートに対して他のものよりも比較的大きなバンド幅が割り当てられるようにプログラムされるものである。グラフィック及びNRTポートよりもプロセッサトラフィックを好んで、例えば、グラフィックポートを他のポートより好んで重みを選択する。様々な実施例において任意のセットの重みが使用される。他の実施例は、他の方法でバンド幅割り当てを行う。例えば、総バンド幅のパーセンテージが用いられる。他の実施例では、選択される各ポートからかなり多くのオペレーションを制御するためにクレジットシステムが用いられる。しかしながら、一般的に、オペレーションはQoSパラメータ及びバンド幅共有要求の両方に基づき選択されるものである。
MCU56A−56Bは、メモリチャンネルに送信されるキューからメモリオペレーションをスケジュールするよう構成される。MCUは読み出し及び書込みを別々にPSQ64にキューし、そして例えば、クレジットベースシステムを用いた読み出しと書込み間を仲裁するよう構成される。クレジットベースシステムにおいて、読み出しと書込みが或る数のクレジットに割り当てられる。書込みクレジット及び読み出しクレジットの数が等しくなる必要はない。スケジュールされた各メモリオペレーションはクレジットを消費する。書込みクレジット及び読み出しクレジットの両方がゼロよりも少なく減少し、且つ、スケジュールされる予定の未処理のトランザクションがあると、対応する割り当て数のクレジットによって両クレジットを増加させる。他の実施例は他のメカニズムを使用して、読み出しと書込み間を選択する。一実施例において、クレジットシステムは、(書込みキューが一杯になったことを測定するとともに)読み出しと書込み間で仲裁メカニズムの一部となる。つまり、書込みキューがもっと一杯になったとき、仲裁メカニズムの書込みの優先度が増加する。さらなる詳細は以下に述べる。
一実施例において、PSQ64へのエントリーで、書込みオペレーションのQoSパラメータを省略する。読出しオペレーションはQoSパラメータを保持し、QoSパラメータはPSQ64からの読み出しスケジュールに影響を及ぼす。
一実施例において、MCU56A−56Bは、爆発的なオペレーション(クレジットを一気に消費する各オペレーション)においてメモリオペレーションをスケジュールする。その爆発がクレジットカウントをゼロに減少させる場合、爆発は完了することが許可され、クレジットカウントを負の数にまで減少させる。クレジットカウントが後に増加するとき、負のクレジットが考慮され、その結果、後に増加するクレジットの総数が、割り当てられたクレジット量よりも少なくなることがある。
スケジュール用のメモリオペレーションの爆発を生成するため、MCU56A−56Bは、メモリオペレーションを仲裁グループにグルーピングする。オペレーションがメモリインタフェース上で効率的に実行されている場合、そのときはやがて極接近して実行されるのだが、メモリオペレーションは別のメモリオペレーションとの仲裁を示すと言われたりする(又は他のメモリオペレーションと密接な関係にあると言われたりする)。増加したバンド幅利用という観点で効率性が測定される。例えば、SDRAMメモリは、(ページアドレスとともに)アクティベートされたコマンドを用いてオープンされ得るページによって特徴づけられる。ページのサイズは実施例ごとに異なり、一般的にアクティベートコマンドが送信されるやいなや、アクセスするのに使用できる多数の連続ビッドを参照する。同様に非同期DRAMメモリは行アドレスのストロボ制御信号をアサートすることによって及び行アドレスを提供することによって、オープンされるページを有する。同じページ内のデータをアクセスする2以上のメモリオペレーションは密接に関係する。なぜなら、1つだけのアクティブ/RASがメモリオペレーションのインタフェースに必要とされるからである。SDRAMメモリもまた、独立したバンク及びランクを有する。バンクは、(検出されたそのページヒット内で)オープン行を有するSDRAMチップ内のメモリセルの集合体である。ランクはチップ選択を通じてメモリコントローラから選択され、1以上のSDRAMチップを含む。それぞれのランク又はバンクに対するメモリオペレーションは、オペレーションとも密接に関係する。というのも、それらはコンフリクトしないし、クローズされるページ及びオープンされる新たなページを要求しないからである。メモリオペレーションは、同じ方向にデータを送信するときのみ(すなわち、読み出しオペレーションが他の読み出しオペレーションと密接に関係し、同様に書込みオペレーションが他の書込みオペレーションと密接に関係するときのみ)、密接オペレーションとして閲覧(ビュー)される。同一ページ(又はオープンページ)に対するメモリオペレーションは、ページヒットとして呼ばれ、そしてそれぞれのバンク/ランクに対するメモリオペレーションは、それぞれバンクヒット、ランクヒットと呼ばれる。
MCU56A−56Bは、メモリインタフェース上のコマンドを、(メモリPHY42A−42Bを介して)メモリ12A−12Bにスケジュールし、スケジュールされたメモリオペレーションを実行するよう構成されている。特に、一実施例において、MCU56A−56Bは、各メモリオペレーションのコマンドをあらかじめ合成し、コマンドを待機状態にするよう構成されている。MCU56A−56Bは、メモリバンド幅の効率的な使用を提供するためにコマンドをスケジュールする。各MCU56A−56BのMIF66は、コマンドのあらかじめ合成すること、及びコマンドをスケジューリングすることを実行する。
いま、図4を参照すると、ポートインタフェースユニット58Cの一実施例のブロック図が示される。各インタフェースに結合するポートインタフェース回路の実装において相違点はあるのだが、他のポートインタフェース回路58A−58B及び58D−58Eは類似する。例示の実施例において、図4に示すとおり、ポートインタフェースユニット58Cは、読出し及び書込みオペレーションそれぞれに対する読出し(AR)及び書込み(AW)インタフェースに接合されたバッファ70A−70Bを含む。バッファ70A−70Bは読出し発生ジェネレータ72及び書込み発生ジェネレータ74とそれぞれ接合する。そしてそれらは、Rd0/Rd1インタフェース及びWr0/Wr1インタフェースとそれぞれ接合する。読出し発生ジェネレータ72は、読出し未処理トランザクションテーブル(ROTT)76に接合され、そして書込み発生ジェネレータ74は、書込み未処理トランザクションテーブル(WOTT)78に接合さる。ROTT76は、インタフェース上の読出し応答を生成する読出し応答ジェネレータ80に接合する。また、ROTTは、読出しバッファ84に接合し、読出しバッファ84は多重通信回路86を介してMCU56A−56Bのいずれかよりデータを受信し、そしてインタフェース上の読出しデータを提供する。WOTT78は、インタフェース上の書込み応答を生成する書込み応答ジェネレータ82に接合する。WOTT78は、また、書込みデータフォワードバッファ88に接合し、書込みデータフォワードバッファ88はMCU56A−56Bへデータを提供し、バッファ70Cからデータを受信するために接合され、バッファ70Cはインタフェースからの書込みデータを受信するために接合される。
読出しオペレーションのため、バッファ70Aはインタフェースからのオペレーションを受信する。バッファ70Aは読出しオペレーションをキャプチャーするために提供され、読出し発生ジェネレータ72が処理するために読出しオペレーションを保持する。一実施例において、バッファ70Aは、未利用のリソースの遅延イベントでキャプチャーされる第2オペレーションが利用可能になる(例えば、インタフェース上のソースにバックプレッシャー要求を伝搬するタイミングを容易化する)ことを許可する2つのエントリー“スキッド(skid)”バッファである。バッファ70B−70Cも同様に、2つのエントリースキッドバッファである。他の実施例は、必要に応じて、スキッドバッファに追加的エントリーを含む。
読出し発生ジェネレータ72は、読出しオペレーションのアドレスをデコードして、どのメモリチャンネルが読出しオペレーションによってアドレスされるかを決定する。読出し発生ジェネレータ72は、Rd0及びRd1インタフェース経由で、読出しオペレーションを、アドレスされたメモリチャンネルに送信する。各読出しオペレーションはサイズ(すなわち、オペレーションのアドレスで読出しが開始するバイト数)を特定する。サイズ及びアドレスの組み合わせが1以上のチャンネルからバイトを読出すことを示唆している場合、読出し発生ジェネレータ72はアドレスされたチャンネルに対する複数の読出しオペレーションを発生させる。複数の読出しオペレーションからの読出しデータはソースに戻される読出しバッファ84で加算される。
読出し発生ジェネレータ72はROTT76をアップデートし、読出しの仮定をトラックするためにROTT76内にエントリーを割り当てる。読出しバッファ84でデータが受信されると、ROTT76は読出し応答ジェネレータ80に信号を送って読出し応答を発生し、データをソースに転送する。もしも読出しデータがインタフェースの順序で(例えば、インタフェース上のプロトコルに従って)戻されるのならば、前回の読出しが戻され、その後ROTT76が読出し応答ジェネレータ80に信号を送出してデータを転送するまで、読出しバッファ84内にデータを残してバッファ化されるようにする。ROTT76は様々なステータス信号をMCUから受信し、未処理の読出しオペレーションのステータス(不図示)を更新(アップデート)するよう構成されている。
バッファ70B、書込み発生ジェネレータ74、及びWOTT78は、書込みオペレーションのために同様にオペレートする。しかしながら、データはインタフェースで送信されるよりはむしろ受信される。書込みデータは、書込みデータフォワードバッファ88で受信され、対応の書込みオペレーションの現在ロケーションへ転送される。予定よりもはやくインタフェース上での書込みを書込み応答により終了するといった書込み完了を保証するや否や、WOTT78は書込み応答の信号を送出する。
図4に示す実施例が、読出し及び書込みオペレーション(AR及びAW)をそれぞれに運ぶインタフェースを含む一方で、他の実施例が読出し及び書込みオペレーションの両方に関する一つの伝送媒体を含むことに留意されたい。そのような実施例の場合、単一のバッファ70はオペレーションを受信し、そして読出し発生ジェネレータ72及び書込み発生ジェネレータ74は、読出し及び書込みオペレーションを区別するために、インタフェースからのコマンドをデコードする。或いはまた、読出し及び書込みオペレーションの両方を発生させ、したがってROTT76及びWOTT78を更新する1つの発生ジェネレータがあってもよい。
いま、図5を参照すると、MCIU60Aの一実施例をあらわすブロック図を示されている。MCIU60Bは、各ポートからRd1及びWr1入力を受信するために結合し、MCU56Bに結合するという点を除いて、MCIU60Aと同じである。例示の実施例の場合、MCIUは図5に示すような、読出しキュー90A−90Bなどの読出しキューの集合と、書込みキュー92A−92Bなどの書込みキューの集合を含む。各ポートのための1つの読出しキューと1つの書込みキューがあってもよい。各読出しキューはポートインタフェースユニット58A−58Eの一つのRd0出力に接続すると共に、QoSアービエータ94Aに接続する。各書込みキューはポートインタフェースユニット58A−58Eの一つのWr0に接続するとともに、QoSアービエータ94Bに接続する。QoSアービエータ94A−94Bの出力は読出し及び書込み入力それぞれとしてMCU56Aに提供される。QoSアービエータ94A−94Bは、バンド幅共有レジスタ62からのデータを受信するために結合される。
2つの読出しキューエントリが読出しキュー90Aに示され、他の読出しキューも同様である。読出しキュー90AはメモリオペレーションのFID、オペレーションのQoSパラメータ、プッシュビッド(P)、及び他のフィールド(Oth)を含む。FID及びQoSパラメータは、メモリコントローラ40に対するインタフェース上のメモリオペレーションにより送信された同一値である。或いはまた、片方又は両方の値が便宜のために内部的にメモリコントローラ40によって記録される。プッシュビットはメモリオペレーションで高優先を強いるために用いられ、この場合第2のメモリオペレーションは、メモリオペレーションの背後で順序づけられ、そのメモリオペレーションよりも高いQoSレベルである。例えば、第2のメモリオペレーションをメモリオペレーションと同じポートで受信し、そしてポートのインタフェースはメモリオペレーションを送信するのと同じ順序でデータを返信することを要求する。高優先度を強要することによって、メモリオペレーションはより迅速に実行され、その結果、より高いQoSレベルをもつ第2のメモリオペレーションの迅速サービスを許可する。他のフィールドはメモリオペレーションに関する他の様々な情報(例えば、アドレス、サイズ情報など)を含む。同様に、2つの書込みキューエントリが書込みキュー92Aに示され、読出しキュー90Aと同様のフィールドを含む。必要に応じて、他のフィールドは読出しと比較して書込みのための異なる情報を記憶する。
QoSアービエータ94A−94Bは、読出しキュー90A−90B、及び書込みキュー92A−92Bそれぞれの間で仲裁する。QoSアービエータは、(キュー内のQoSパラメータによって示されるような)QoSレベル及びバンド幅共有レジスタからのバンド幅共有パラメータの両方を考慮する。選択された読出し及び書込みオペレーションは、(必要であれば)MCU56Aに送信される。
幾つかの実施例において、ポートインタフェースユニットからQoSアービエータ94A及び/又は94B(図5において不図示)までの1以上のバイパスパスがある。例えば、プロセッサに対する低い待ち時間読出しを許可するために、CPUポートインタフェースユニット58Cからの読出しはQoSアービエータ94Aへバイパスする。幾つかの実施例において、キュー90A−90B及び/又は92A−92Bにおける1以上のメモリオペレーションはQoSアービエータ94A−94Bからマスクされる。例えば、対応のデータがメモリコントローラ40に未だ到着していない書込みオペレーションは、QoSアービエータ94A−94Bからマスクされるが、それは対応のデータがメモリコントローラ40に到着した他のポートから書込みオペレーションをブロックすることを回避するためである。
図6は、QoSアービエータ94A−94Bの各実施例のオペレーションを示すフローチャートである。理解を容易にするため特定の順序でブロックを示しているが、他の順序が用いられ得る。QoSアービエータ94A−94Bの組み合わせロジックにおいては、並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。QoSアービエータ94A−94Bは、図6に示すオペレーションを実行するように構成される。
QoSアービエータが結合されるキューの一つにおいて少なくとも1つのメモリオペレーションがRTY又はRTRのRT QoSレベルをもつ場合、或いは、プッシュビットが少なくとも1つのメモリオペレーションのために設定される場合(判断ブロック100で“yes”)、QoSアービエータはRTY若しくはQoSレベル及び/又はセットプッシュビットをもつキューの間で仲裁する(ブロック102)。各キューは本実施例においてポートに対応するので、QoSアービエータはRTY若しくはRTR QoSレベル及び/又はセットプッシュビットをもつポート間で効率的に仲裁をする。その結果、AIU54は、RTG、BEF、及びLLT QoSレベルを本実施例では等しいものとして扱う。本実施例の場合、AIU54は、RTR及びRTY QoSレベル、並びにセットプッシュビット・オペレーションを、互いに等しく且つ他のレベルより高い優先度なものとして扱う。他の実施例は、追加的な粒度レベルを有する(例えば、RTRは高い優先度として扱われるということ、すなわちRTY、RTG及びLLTがBEFよりも高い優先度として扱われるということなど)。さらに、他の実施例はラウンドロビンとは異なるスキームを実装(インプリメント)してもよい。
他方、RTY若しくはRTR QoSレベルをもつメモリオペレーションがまったくなく、かつ、セットプッシュビットをもつメモリオペレーションがまったくない場合(判定ブロック100の“no”)、QoSアービエータはすべてのキュー(すべてのポート)間で仲裁する(ブロック104)。例えば、QoSアービエータはポート間で、損失−重みづけラウンド・ロビンスキームを実装し、その場合、この重みはバンド幅共有パラメータに基づく(又はバンド幅共有パラメータが重みである)。他の実施例では、すべてのポート間で他のアービエータスキームを実装する。
いま,図7を参照すると、PSQ64の一実施例のブロック図が示されている。例示の実施例の場合、PSQ64はキュー化制御ユニット110、トランザクションキューのセット112、スケジューラー114、バイパス多重通信回路116を含む。待機状態制御ユニット110は、読出し及び書込みオペレーションを対応のMCIU60A又は60Bから受信するために結合し、トランザクションキュー112と結合する。トランザクションキュー112はさらにスケジューラー114と結合し、その出力はバイパス多重通信回路116と結合する。バイパス多重通信回路116は読出しオペレーションを受信するために結合し、スケジューラー114及び読出しオペレーションによってスケジューリングされたメモリオペレーション間で選択するよう構成される。例えば、トランザクションキュー112内の読出しがなく、書込みの数が閾値レベルを下回っているならば、読出しオペレーションはトランザクションキュー112をバイパスする。他の実施例はバイパスを実装せず、バイパス多重通信回路116を省略することもある。
図7に示すとおり、トランザクションキュー112は、キュー118A−118Bなどの読出し密接キュー(affinity queues)のセット、及びキュー120A−120Bなどの書込み密接キューのセットを含む。読出し密接キューの数及び書込み密接キューの数は実施例ごとに異なり、読出し密接キューの数が書込み密接キューの数と等しくなる必要はない。各密接キューは、互いに親和性を提示するキュー制御ユニット110により決定した1以上のメモリオペレーションを記憶する。これにより、キュー制御ユニット110がメモリオペレーションを受信するので、キュー制御ユニット110は、(読出しオペレーション用の)密接キュー118A−118B、又は(書込みオペレーション用の)密接キュー120A−120Bに対してメモリオペレーションを比較する。メモリオペレーションが密接に関係する場合、対応の密接キューにおいて待機状態化となる。そうでない場合、メモリオペレーションは別の密接キューにおいて待機状態化となる。一実施例において、読出し密接キューは密接に関係していない読出しのために保留され、同様に、書込み密接キューは密接に関係していない書込みのために保留される。
スケジューラー114は、MIF66に送信されることになるメモリオペレーションをスケジューリングするよう構成される。読出しオペレーションのために、スケジューラー114は、読出し密接キュー118A−118BにおけるQoSレベルと、各読出し密接キュー118A−118Bにおける密接メモリオペレーションの数との両方を考慮する。その詳細については後述する。しかしながら、一般的に、スケジューラー114は、高いQoSレベルと多数の密接メモリオペレーションをもつ読出しオペレーションを好む。書込みオペレーションのために、QoSレベルはPSQ64において省略されてもよい。つまり、書込みオペレーションのQoSレベルは、書込みオペレーションがトランザクションキュー112に書込まれるときにドロップされる。キュー118A及び120Aのそれぞれにおける例示のエントリで示したように、読出しオペレーションはQoSを保持するが、書込みオペレーションは保持しない。スケジューラー114は、例えば、書込みキューの一杯さ、及び読出しキューにおけるQoSレベルに基づいて、読出しオペレーションと書込みオペレーションの間でスケジューリングする。追加の詳細はさらに後述する。
幾つかの実施例において、読出し密接キュー118A−118B及び書込み密接キュー120A−120Bは、(例えば、分離データ構造として、又はPSQ64の論理回路を介して分けられる及び/又はプログラム上で分離される1以上のデータ構造として)物理的にインスタンス化される。他の実施例においては、密接キューは仮想的である。つまり、読出しキュー及び書込みキューがあり、そして例えばタグが密接オペレーションを識別するのに用いられる。
図8は、メモリオペレーションを受信することに対応した、待機状態制御ユニット110の一実施例のオペレーションを示したフローチャートである。理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。待機状態制御ユニット110の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。待機状態制御ユニット110は、同時に受信する読出しオペレーション及びキューオペレーションのために並行して図8に示すオペレーションを実行するように構成される。
待機状態制御ユニット110は、受信したオペレーションを、対応する密接キュー118A−118B若しくは120A−120Bと比較し、受信したオペレーションが待機状態化されたオペレーションとの密接的な関係を提示するか否かを特定する(判断ブロック130)。密接度が検出されたことに応答して(及びオペレーション用の密接キューにスペースがあるならば)、待機状態制御ユニット110は、密接キュー内のオペレーションを待機状態化する(ブロック132)。密接度の検出がなかったことに応答して、待機状態制御ユニット110は、空の密接キュー内のオペレーションを待機状態化する(ブロック134)。
一実施例において、密接さの検出は図8の爆発ビュー(クレジットを一気に消費するビュー)で示される。或るオペレーションが密接キューの他のオペレーションを有するページヒットであれば(判断ブロック136の“yes”)又は他のオペレーションをもつバンク若しくはランクミスであれば(判断ブロック138及び140それぞれで“yes”)、そのオペレーションは密接に関連する。そうでなければ(判断ブロック136,138及び140で“no”)、そのオペレーションは待機状態化されたオペレーションと密接に関連しない。判断ブロック136,138及び140によって示された検出は、各密接キューに関して並行して実行される。
図9は、トランザクションキュー112における読出しオペレーションと書込みオペレーションとの間でスケジューリングするスケジューラー114のオペレーションを例示したフローチャートである。理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。スケジューラー114の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。スケジューラー114は、図9に示すオペレーションを実行するように構成される。
図9の実施例において、書込みキューの充満度(つまり、トランザクションキュー112における書込みオペレーションの数)として、高い、中間、低いという3つの閾値がある。高レベルは、中間レベルが示すよりも多い書込みオペレーションがトランザクションキュー112にあることを示し、そして中間レベルは、低レベルが示すよりも多い書込みオペレーションがトランザクションキュー112にあることを示す。様々な実施例において、閾値は固定化されたりプログラム化されたりする。
スケジューラー114は書込みをブロッキングすることを検出し(判断ブロックの“yes”)、ブロッキング書込みをスケジューリングする(ブロック152)。ブロッキング書込みは、(高いQoSレベルをもつメモリオペレーションが書込みオペレーションの後に順序づけられるということを示唆する)プッシュビットセットを有する書込みオペレーションである。また、ブロッキング書込みオペレーションは同じアドレスに対する読出しオペレーションをブロッキングしている書込みオペレーションである(又は、書込みオペレーションは、読出しオペレーションにより読出された少なくとも1つのバイトを更新する)。
ブロッキング書込みが無い場合、読出しオペレーションに対する書込みオペレーションのスケジューリングはクレジットシステムに基づくものとなる。すなわち、読出しオペレーション及び書込みオペレーションのそれぞれは、或る数のクレジットが割り当てられる。スケジューリングされたメモリオペレーションは、対応するクレジットカウントから1つのクレジットを消費する。例示の実施例の場合、読出しクレジットが使い尽くされ、読出しオペレーションがスケジューリングされると、読出し及び書込み両方のクレジットが、初期クレジット値を現在のカウントに加算することによってリロードされる。密接オペレーションは、読出し又は書込みオペレーションがスケジュールされるとき急にスケジューリングされるので、クレジットカウントはゼロより下に減少する。つまり、スケジューラー114は、オペレーションのクレジットカウントがゼロに減少する場合には、密接オペレーションの爆発を中断させない。簡潔さのため、図9に関する後述は、読出しキューにおける読出しオペレーション及び書込みキューにおける書込みオペレーションを参照する。読出しキューは読出し密接キュー118A−118Bの組み合わせを含み、書込みキューは書込み密接キュー120A−120Bの組み合わせを含む。
書込みキューが高い閾値に到達して、利用可能な少なくとも1つの書込みクレジットがあることを検出したとき(判断ブロック154の“yes”)の対応として、スケジューラー114は書込みキューからスケジューリングする(ブロック156)。書込みキューが高い閾値に到達せず、利用可能な書込みクレジットがないとき(判断ブロック154の“no”)、スケジューラー114は読出しキューからスケジューリングする(ブロック160)。読出しキューに読出しオペレーションがない又は利用可能な読出しクレジットがない(判断ブロック158の“no”)が、書込みキューが中間の閾値に到達し且つ利用可能な書込みクレジットがあることをスケジューラー114が特定した場合(判断ブロック162の“yes”)、スケジューラーは書込みキューからスケジューリングする(ブロック156)。書込みキューが中間の閾値に到達せず又は利用可能な書込みクレジットがないが(判断ブロック162の“no”)、少なくとも1つの読出しオペレーションが読出しキューにあって、かつ、利用可能な読出しクレジットがないことをスケジューラー114が特定した場合(判断ブロック164の“yes”)、スケジューラー114は読出しキューからスケジューリングする(ブロック160)。上述したように、スケジューラー114はこのインスタンスにおいて読出しクレジット及び書込みクレジットをリロードする。読出しキューに読出しオペレーションがなく(判断ブロック164の“no”)、かつ、書込みキューが低い閾値に到達したことをスケジューラー114が特定した場合(判断ブロック166の“yes”)、スケジューラーは書込みキューからスケジューリングする(ブロック156)。
図9のフローチャートは、書込みキューが低い閾値に到達するまで、書込みキューからスケジューリングしないことを示す一方で、スケジューラー114が一時期働いていなかったならば、幾つかの実施例は書込みキューからスケジューリングする。この一時期は固定的であったり、又はプログラム可能であったりする。
図10は、書込みキューからのスケジューリングを実行するためのスケジューラー114のオペレーションを示すブロック図である(ブロック156)。図10に示すとおり、スケジューラー114は最大数の書込みオペレーションをもつ書込み密接キュー120A−120Bをスケジューリングする(ブロック168)。
図11は、スケジューラー114が読出しキューからの読出しオペレーションをスケジューリングしている様々な状態を示すテーブルである(ブロック160)。状態は優先度の順序を上げる態様で示している。よって、図11のテーブルにおける1以上のエントリーが読出しキューのコンテンツに対応する場合、最高の優先度をもつエントリーはスケジューラー114の状態となる。スケジューラー114は、対応の状態に関し、図11の“スケジューリング”欄に示されるようなオペレーションをスケジューリングする。
図11のテーブルは読出しキューにおける読出し数を参照し、それはグリーン又はイエロー閾値の上か下である。グリーン又はイエロー閾値はRTG及びRTY QoSレベルとは異なっており、上述した書込みキューの閾値と類似する。グリーン又はイエロー閾値は固定的であるかプログラム可能である。さらに、密接グループはスケジューリングされたものとして参照される。密接グループは読出し密接キュー118A−118Bの一つにおけるオペレーションのグループである。
読出しキューの読出し数がイエロー閾値を下回る(かつ、グリーン状態が入力されなかったのでイエロー閾値を上回らなかった)場合、そしてRTY若しくはRTR読出しがキューにまったく無い場合、スケジューラー読出し状態はグリーンである。グリーン状態において、スケジューラー114は、必要であれば、LLT読出しオペレーションをスケジューリングする。LLT読出しオペレーションをもつ読出し密接キュー内のオペレーションも必要であればスケジューリングされる。LLT読出しオペレーションがまったく無い場合、最も古い読出しオペレーションをもつ密接グループがスケジューリングされる。
読出しキューの読出し数がグリーン閾値を上回り(又は、LLTイエロー状態が入力されなかったのでグリーン閾値を下回らなかった)場合、そしてRTR若しくはRTY読出しが読出しキューにまったく無い場合、スケジューラー読出し状態はLLTイエローである。LLTイエロー状態において、スケジューラー114は、必要であれば、LLT読出しオペレーションをスケジューリングする。LLT読出しオペレーションがまったく無い場合、スケジューラー114は読出しキュー内の最大密接グループをスケジューリングする。一実施例において、スケジューラー114は最も古い読出しオペレーションを含む密接グループをスケジューリングするが、この場合LLTイエロー状態にあるLLT読出しオペレーションはまったくなく、グリーン状態に類似するのである。
少なくとも1つのRTY読出しオペレーションがあるが、RTRオペレーションがない場合、スケジューラー読出し状態はイエローである。イエロー状態において、スケジューラー114は最も古いRTY読出しオペレーションを含む密接グループ若しくは最大の密接グループをスケジューリングする。
少なくとも1つのRTR読出しオペレーションがキューにあり、かつ、スケジューラー114が密接オペレーションをRTRオペレーションと関連づけるようにプログラムされている場合、スケジューラー読出し状態はレッド近似である。レッド近似状態において、スケジューラー114は最も古いオペレーションを含む密接グループをスケジューリングする。さもなければ、最大の密接グループをスケジューリングする。
少なくとも1つのRTR読出しオペレーションがキューにあり、かつ、スケジューラー114が密接オペレーションなしにRTR読出しオペレーションをスケジューリングするようにプログラムされている場合、スケジューラー読出し状態はレッドである。レッド状態において、スケジューラー114は最も古いRTR読出しオペレーション又は最大の密接グループをスケジューリングする。
上述した説明は、読出しキューにおける読出しを“最古(oldest)”として参照する。幾つかの実施例において、読出しオペレーションは、読出しキューで消費された時間に基づき最古としてビューされる。他の実施例において、他の方法で年齢(age)を測定する。例えば、読出しオペレーションが別の読出しオペレーションのためにスケジューリングされなかった回数という観点で、最古の読出しオペレーションが測定される。
密接グループがスケジューリングされるとき、密接グループからスケジューリングされたメモリオペレーションの数は、固定的若しくはプログラム可能な爆発サイズを最大とするグループ内のオペレーション数である。一実施例において、最新にスケジューリングされた密接グループが爆発サイズよりも少ないオペレーションを有する場合は、他のメモリオペレーションがスケジューリングされる。例えば、スケジューラー114は、最新にスケジューリングされた密接グループと深く関連する“ストラグラー(stragglers)”(例えば、以前にスケジューリングされたが爆発サイズのために転送された密接グループの一部であったメモリオペレーション)をスケジューリングする。あるいはまた、スケジューラー114は次に大きい密接グループを選択する。
いま図12を参照すると、MIF66の一実施例のブロック図が示されている。図12の実施例の場合、MIF66は、MIFキュー化制御ユニット170、MIFトランザクションキュー172、オープンページテーブル174、プリチャージスケジューラー176、モデルレジスタ(reg)スケジューラー178、リフレッシュスケジューラー180、アクティベート・スケジューラー182、共通アドレスストロボ(CAS)スケジューラー184、及び最終スケジューラー186を含む。MIF待機状態制御ユニット170はPSQ64からメモリオペレーションを受信するために接合し、そしてオープンページテーブル174及びMIFトランザクションキュー172に接合する。オープンページテーブル174はプリチャージスケジューラー176に接合する。MIFトランザクションキュー172は、アクティベート・スケジューラー182及び共通アドレスストロボ(CAS)スケジューラー184のそれぞれと接合するアクティベート・キュー188及びCASキュー190を含む。スケジューラー176,178,180,182,184は最終スケジューラー186に接合し、これはMIF66がMCU56A又は56Bにインスタンス化されるかどうかに依存してメモリPHY42A又は42Bの一つにコマンドを送信するために接合される。
MIF待機状態制御ユニット170は、受信したメモリオペレーションと、オープンページテーブル174及びMIFトランザクションキュー172を比較し、コマンドを事前に合成してメモリオペレーションを実行するよう構成されている。特に、受信したメモリオペレーションに対応するページがキューされたアクティベートコマンドによってオープンされる場合、その受信したメモリオペレーションはCASオペレーションとしてキューされる(待機状態となる)。受信したメモリオペレーションに対応するページがすでにオープンされ、キューされたページコンフリクトのアクティベートがない場合、その受信したメモリオペレーションはCASオペレーションとして待機状態となる。受信したメモリオペレーションに対応するページがオープンされない場合、その受信したメモリオペレーションはアクティベートコマンド及びCASコマンドとして待機状態となる。各コマンドは年齢カウンタ(アクティベート・キュー188及びCASキュー190内の年齢フィールド)を割り当てられる。年齢カウンタの値は読出しメモリオペレーションのQoSパラメータに基づき、そしてより低いQoSレベルのためよりも高いQoSレベルのために短い。書込みメモリオペレーションのために、年齢カウンタは読出しメモリオペレーションの最も低いQoSレベルと同じであるか、最も低いQoSレベルよりも長い。年齢はオペレーションをバイパスするオペレーション数として又はクロックサイクルとして様々な実施例においてカウントされる。年齢カウンタがゼロに減少されると、対応のオペレーションはMIF66がMCU56A又は56B66における最も高い優先度としてスケジューリングされる。
アクティベート・スケジューラー182及びCASスケジューラー184は、対応のキュー188及び190からのアクティベートコマンド及びCASコマンドをスケジューリングするよう構成される。アクティベートコマンドはメモリのページをオープンし、CASコマンドはページ内に読出し又は書込みデータを生じさせる。
プリチャージスケジューラー176は、オープンページテーブル174のページに関するアイドルタイマーが時間切れとなるとき、バンクのプリチャージコマンドをスケジューリングする。アイドルタイマーはオープンページ内の受信メモリオペレーションヒットの各時間でリロードされ、オープンページでヒットしない各メモリオペレーション又は各クロックサイクルで減少させられる。新たに受信したメモリオペレーションをもつページコンフリクトがページをクローズさせるというケースにおいて、前のページに対する最後のCASコマンドがバンクをプリチャージさせるために用いられる。
モードregスケジューラー178は、構成可能なタイマーに従い及び/又はメモリタイマー要求に応じて、メモリレジスタ読出し(MRR)及びメモリレジスタ書込み(MRW)を生成する。リフレッシュスケジューラー180は、リフレッシュが必要とされるとき、リフレッシュコマンドを生成する。
最終スケジューラー186はスケジューラー176,178,180,182,184の間で選択して、メモリPHY回路へのコマンドをスケジューリングする。また、スケジューラー186は、読出しオペレーション及び書込みオペレーション間のターンアラウンドサイクルなどの或るプロトコルを強化する。
アクティベート・キュー及びCASキュー188及び190は仮想であることに留意されたい。つまり、MIFトランザクションキュー172内の同一エントリーが所与のメモリオペレーションに関するアクティベート及びCASコマンドの両方のために用いられる。アクティベートは所与のメモリオペレーションのために必要とされる場合、アクティベートが発行されると、エントリーはアクティベートコマンドとして初期化され、そしてCASコマンドに変換される。所与のメモリオペレーションのためにアクティベートが必要でない場合、エントリーはCASコマンドとして初期化される。
図7及び12に示された回路に加えて、MCU56A−56B内にデータパスがあり、AIU54からメモリへ書込みデータを運び、メモリからAIU54へ読出しデータを運ぶことにさらに留意されたい。
図13は、PSQ64からのメモリオペレーションに応じて、MIFキュー化制御ユニット170の一実施例のオペレーションを示すフローチャートである。理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。MIFキュー化制御ユニット170の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。MIFキュー化制御ユニット170は、図13に示すオペレーションを実行するように構成される。
MIFキュー化制御ユニット170は、受信されたメモリオペレーションのためにアクティベートコマンドが必要とされるか否かを判断する(例えば、メモリオペレーションは、オープンページ又は前に待機状態にあるアクティベートコマンドがオープンされるであろうページをヒットしない)(判断ブロック196)。もし必要であれば(判断ブロック196の“Yes”)、MIF待機状態制御ユニット170はアクティベートコマンドを合成し、アクティベート・キュー188内にそのアクティベートコマンドを待機状態にする(ブロック192)。また、MIF待機状態制御ユニット170は、CASコマンドを合成し、CASキュー190内にそのCASコマンドを待機状態にする(ブロック194)。それぞれの場合において、(読出し用のQoSパラメータに基づき)年齢カウンタを初期化する。
図14は、アクティベート・スケジューラー182のオペレーションを示すフローチャートである。アクティベート・スケジューラー182は、古くなった(例えば、年齢カウンタがゼロである)アクティベートコマンド用のアクティベート・キュー188内のアクティベートコマンドをスキャンする。そのようなアクティベートコマンドが検出された場合、アクティベートは古くなったアクティベートコマンドを選択する(ブロック200)。そうでない場合、アクティベート・スケジューラー182は、殆ど未処理のオペレーションをもつバンク内のヘッドクラスターにあるアクティベートコマンドを選択する。ヘッドクラスターは、アクティベート・キュー188内で最古のアクティベートコマンドである、同一読出し/書込みタイプのアクティベートグループである。1よりも多いコマンドが適格であるならば、最古の適格アクティベートコマンドが選択される。
図15はCASスケジューラー184の一実施例のオペレーションを示すフローチャートである。理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。CASスケジューラー184の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。CASスケジューラー184は、図15に示すオペレーションを実行するように構成される。
アクティベート・スケジューラー182と同様に、CASスケジューラーは古くなったCASコマンドを検出し、送信第一のためにそれらを選択する(判断ブロック202の“yes”及びブロック204)。古くなったCASコマンドがまったく無く(判断ブロック202の“no”)、かつ、最新のCASコマンドが読出しであった(判断ブロック206の“yes”)場合、CASスケジューラー184は、最後のCASコマンドと同じランクの次の読出しCASコマンドを選択するか、又はページをクローズすることができるように完了するためのCASコマンドを待つ最もコンフリクトするオペレーションにより読出しCASコマンドを選択する(ブロック208)。同様に、最後のCASコマンドが書込みの場合(判断ブロック206の“no”及び判断ブロック210の“yes”)、CASスケジューラー184は、最後のCASコマンドと同じランクの次の書込みCASコマンドを選択するか、又はページをクローズすることができるように完了するためのCASコマンドを待つ最もコンフリクトするオペレーションにより書込みCASコマンドを選択する(ブロック212)。上記にどれもあてはまらない場合、CASスケジューラー184はCASキュー190内の最古のCASコマンドをスケジューリングするよう構成コマンドを選択する(ブロック214)。ブロック204,208、212、214において、1よりも多いCASコマンドが適格であるならば、最古のCASコマンドが選択される。
図16は、最後のスケジューラー186の一実施例のオペレーションを示すテーブルである。テーブルのエントリーは上から下へと優先度を下げる順序で示されている。バースト・ストップコマンド(BST)又は中断CASコマンドが送信される場合、最高の優先度でこれらのコマンドを与える。次は、モードレグスケジューラー178からのコマンドであり、そしてリフレッシュスケジューラー180からの自動リフレッシュコマンドが続く。CASスケジューラー184からのCASコマンドは、自動リフレッシュコマンドの次の優先度であり、次にアクティベート・スケジューラー182からのアクティベートコマンドである。プリチャージスケジューラー176からのプリチャージコマンドはアクティベートコマンドの次の優先度である。そして、図16において、最後の優先度は低パワーモードを入力するのに用いられるセルフ・リフレッシュコマンドである。
簡単に上述したように、メモリオペレーションは、メモリオペレーションのQoSレベル上に置かれた高い重要度をもつソースからメモリコントローラ40を入力する。メモリオペレーションはメモリコントローラ40で処理され、そしてメモリに対する送信信号にアプローチするので、QoSレベルの重要性は低下し、そしてメモリ(SDRAM)効率の重要性は増加する。図17はこのオペレーションを図式的にあらわしている。MCIU60(例えば、60A又は60B)、PSQ64、MIF66は各レベルで、スケジューリングコントロールを示すブロックに沿って示されている。MCIU60で、読出し及び書込みオペレーション双方のQoSレベルは、バンド幅共有パラメータとともに、PSQ64への送信に関する読出し及び書込みオペレーションの選択をコントロールする。メモリの効率性はこのレベルで考慮されない(ブロック222)。PSQ64で、書込みのQoSはドロップされる。アフィニティは書込み選択をコントロールし、そしてQoSとアフィニティの組み合わせは、読出しの選択を主にコントロールする(ブロック224)。したがって、QoS及びメモリ効率性の懸念事項は、このPSQ64で、一層バランスされる。MIF66で、QoSは、(年齢パラメータの反映されるのであるが)すべてのメモリオペレーションのためにドロップされる。そして、SDRAM効率性の懸念事項は、コマンドの選択を主にコントロールする(ブロック226)。
簡単に上述したように、メモリコントローラ40は未処理のメモリオペレーションのQoSレベルを更新することをサポートする。様々な実施例は、QoSレベルのアップグレードを信号で伝える1以上のメカニズム(すなわち、インバンド、サイドバンド、及び年齢)をサポートする。
図18は、インバンドのQoSアップグレードメカニズムの一実施例を示すブロック図である。このメカニズムの場合、前のメモリオペレーションと同じフローでメモリオペレーションを受信すると、前のメモリオペレーションよりも高いQoSレベルを有する新たに受信したメモリオペレーションは、メモリコントローラ40が前のメモリオペレーションのQoSレベルをアップグレードする。MCIU60Aの部分が、MCU56A内のPSQ64の部分に沿って示されている。MCU56B内のMCIU60B及びPSQ64は類似する。
MCIU60Aは、上述したように、各ポートからメモリオペレーションを受信し、新たに受信したメモリオペレーションを、読出し及び書込みのためのキュー90A−90B又は92A−92Bの一つにキューする。さらに図18に示すとおり、MCIU60Aは、新たに受信したメモリオペレーションのFIDの部分及びQoSパラメータと、同一ポートからのキューメモリオペレーションの対応する値とを比較する(例えば、RdQ0 90Aは、ポート0又はG0ポート44Aで新たに受信したメモリオペレーションのFID及びQoSパラメータと比較し、そしてRdQ4 90Bは、ポート4又はRTポート44Eで新たに受信したメモリオペレーションのFID及びQoSパラメータと比較する。)同一ポートから新たに受信したメモリオペレーション、及びキューメモリオペレーションより高いQoSレベルをもつフローに応じて、MCIU60Aは、キューメモリオペレーションのQoSレベルを高いQoSレベルにアップグレードする。幾つかの実施例において、QoSアップグレードは或るポートに制限される。例えば、一実施例は、QoSアップグレードをRTポート44Eに制限する。他の実施例は、QoSアップグレードを、RTトラフィックを受信したポートに制限する。このような実施例においては、アップグレードがサポートされるポートから新たに受信したメモリオペレーションだけが比較される。
同様に、FID及びQoSパラメータは、PSQ64における読出しアフィニティキュー118A−118Bによって受信される。PSQ64は、同一ポートから新たに受信したメモリオペレーション、及び高いQoSレベルをもつフローに応じて、キュー読出しオペレーションのQoSレベルを更新する。幾つかの実施例において、PSQ64により受信されたFID及びQoSパラメータは、MCIU60Aにより受信されたものと同じく新たに受信されたFID及びQoSパラメータである。つまり、PSQ64及びMCIU60Aは、それぞれの新たに受信したメモリオペレーションに関するQoSレベルを並行してアップグレードする。他の実施例では、MCIU60Aは新たに受信したメモリオペレーションに応じてQoSアップグレードを実行し、そしてPSQ64は、MCIU60AからPSQ64へ送信されたメモリオペレーションに応じてQoSアップグレードを実行する。
図18は、FID及びQoSパラメータと、読出しキュー90A−90Bとを比較することを示し、この比較はQoSパラメータをアップグレードするために書込みキュー92A−92Bに対して行なわれる。しかしながら、上述したように、書込みオペレーションのためのQoSパラメータは、PSQ66にドロップされ、その結果、書込みアフィニティキュー120A−120Bに対するどんな比較も存在しない。
図19は、インバンドアップグレードメカニズムのQoSレベルをアップグレードするメモリコントローラ40のオペレーションを示すフローチャートである。図19は理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。メモリコントローラ40は、図19に示すオペレーションを実行するように構成される。より詳細に言うと、PSQ64及びMCIU60A−60Bのそれぞれは、図19に示すオペレーションを実行するアップグレード回路を含む。
新たに受信したメモリオペレーションが、FIDが示す同一フローからの(判断ブロック232の“yes”)キューメモリオペレーションと同じポートからであって(判断ブロック230の“yes”)、しかもキューメモリオペレーションがRTメモリオペレーションである場合(判断ブロック234の“yes”)、メモリコントローラ40は、キューオペレーションのQoSレベルを、新たに受信したメモリオペレーションの高いQoSレベルにアップグレードする(ブロック236)。一実施例において、QoSアップグレードがサポートされるキューは比較を実行するコンテンツアドレス可能なメモリを含み、一致はマッチングキューエントリーに対する新たに受信したQoSパラメータの書込みを可能にする。
新たに受信したメモリオペレーションが、キューメモリオペレーションと同じポートからであって(判断ブロック230及び232の“yes”)であるが、キューメモリオペレーションがRTメモリオペレーションではない場合(判断ブロック234の“no”)、メモリコントローラ40は、キューメモリオペレーションのPビットをセットする(ブロック238)。同様に、新たに受信したメモリオペレーションが、キューメモリオペレーションと同じポートからであるが異なるフローである場合(判断ブロック230の“yes”及び判断ブロック232の“no”)であるが、メモリコントローラ40は、キューメモリオペレーションのPビットをセットする(ブロック238)。
図20は、QoSアップグレードを要求するサイドバンド・インタフェースの追加を示すブロック図である。図20の実施例において、RTポート44Eに関するサイドバンド・インタフェースが含まれる。他の実施例では、他のポートに関する1以上の追加のサイドバンド・インタフェースを実装する。名前があらわすとおり、サイドバンド・インタフェースは、メモリコントローラ40にメモリオペレーションを送信する“レギュラー”インタフェースに追加するものである。(図1に示すようなCmd、FID、及びQoSパラメータを含む)レギュラーインタフェースは矢印240を介して示される。サイドバンド・インタフェースは、サイドバンドQoSアップグレード要求信号(SbQoSUpgd)、サイドバンドQoSパラメータ(SbQoS)、サイドバンドFID(SbFID)、サイドバンドマスク(SbMask)、RT周辺機器22からRTポート44Eへのサイドバンド読出し指示(SbRd)、及びRTポート44EからRT周辺機器22へのサイドバンド了承信号(SbAck)を含む。
RT周辺機器22はサイドバンドアップグレードを要求するSbQoSUpgd信号をアサートし、SbQos上でアップグレードされたQoSレベルをあらわすQoSパラメータを供給する。SbFIDはフローを識別し、そしてSbFIDの部分及び比較においてマスクされるはずのキューFIDを許可することによって、SbMaskは一般性を備える。SbRdインジケータは、読出し又は書込みがアップグレードのために比較される場合に指示する。RTポート44EはSbAckを用いてアップグレード要求を承認する。一実施例において、サイドバンドアップグレードを実行するメモリコントローラ40内のハードウェアは図18に示すものと同様であり、そのプロセスは図19に示すものと同様である。新たに受信したメモリオペレーションは、上記記載において、受信したサイドバンド要求と置き換えられる。
図21は、年齢ベースのQoSアップグレードを実装するメモリコントローラ40の汎用オペレーションを示すフローチャートである。上述したように、MIFトランザクションキュー172は年齢に基づき優先度のアップグレードを実行する。他の実施例では、年齢ベースQoSアップグレードを同様に実行する。図21は理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。メモリコントローラ40の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。メモリコントローラ40は、図19に示すオペレーションを実行するように構成される。年齢カウンタをアップグレードすること、及び対応するメモリをアップグレードすることは、各オペレーションのために並行して実行される。
キュー(例えば、MCIUキュー90又は92、PSQトランザクションキュー112、及び/又はMIFトランザクションキュー172)の中にオペレーション入力があると、メモリコントローラ40は各メモリオペレーションに年齢カウンタを割り当てる(ブロック250)。年齢カウンタは各キューで異なり、キューからキューへ運ばれる必要はない。あるいはまた、年齢カウンタはMCIUで割り当てられ、他のキューを通じて運ばれる。年齢カウンタの初期値は各メモリオペレーションのQoSパラメータ(例えば、より高いQoS値に関する短い値)に基づいている。この初期値は固定的であるかプログラム可能である。
メモリコントローラ40は、所与の年齢カウンタをアップグレードするアップグレードイベントを検出する(判断ブロック252)。アップグレードイベントは年齢カウンタがどのように測定されるかによって変化する。例えば、幾つかの実施例では、より若いメモリオペレーションによってバイパスされるメモリオペレーションの回数という観点から年齢を測定する。このような実施例では、アップグレードイベントはメモリオペレーションのバイパスである。他の実施例では、年齢としてクロックサイクルをカウントする。そしてアップグレードイベントはクロックが生じたり又は落ちたりする年齢である。さらに他の実施例では、他の方法で年齢を定義し、アップグレードイベントはそれに従って検出される。アップグレードイベントを検出することに応じて(判断ブロック252の“yes”)、メモリコントローラ40は年齢カウンタを減少させる(ブロック254)。
メモリコントローラ40は、所与の年齢カウンタが期限切れであるか否かを検出する(判断ブロック256)。期限切れである場合(判断ブロック256の“yes”)、メモリコントロール40は同じセットのQoSレベルにある次に高いレベルにQoSレベルをアップグレードする(ブロック258)。アップグレードされたQoSレベルが最高のレベルでなければ(例えば、RTR、判断ブロック260の“No”)、メモリコントローラ40は年齢ベースアップグレードに関する新たなQoSレベルに基づき新たな年齢カウンタ値を割り当てる(ブロック262)。したがって、この実施例において、メモリオペレーションのQoSレベルは、各仲介QoSレベルを通じて、メモリオペレーション年齢として最高QoSレベルにアップグレードされる。
図22を参照すると、システム350の一実施例のブロック図が示されている。システム350は、外部メモリ12(例えば、図1のメモリ12A−12B)に結合された集積回路10の少なくとも1つのインスタンスを含む。集積回路10は1以上の周辺機器354及び外部メモリ12に結合する。電源供給356が提供され、集積回路10に電圧を供給するとともに、1以上のメモリ12及び/又は周辺機器354に電圧を供給する。幾つかの実施例において、1より多い集積回路10のインスタンスが含まれる(そして同様に、1より多い外部メモリ12のインスタンスが含まれる)。
周辺機器354はシステム350のタイプによって望しい回路を含む。例えば、一実施例において、システム350はモバイル機器(例えば、携帯情報端末(PDA)、スマートフォンなど)であり、そして周辺機器354は様々なタイプの無線通信(例えば、wifi、bluetooth、セルラー、GPSなど)を含む。また、周辺機器354はRAM記憶媒体、固体記憶媒体、ディスク記憶媒体を含む追加的ストレージを含む。周辺機器354はディスプレイスクリーンなど(例えば、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーン、キーボード若しくは他の入力デバイス、マイクロフォン、スピーカー)のユーザインタフェース機器を含む。他の実施例では、システム350は任意のタイプのコンピュータシステム(例えば、デスクトップPC、ラップトップ、ワークステーション、ネットトップなど)である。
上述したように開示が理解される場合、様々なバリエーション及び修正が当業者にとって明らかとなる。添付の図面はこのようなバリエーション及び修正をとらえるために解釈されることを意図している。

Claims (17)

  1. 複数のポートを有するメモリコントローラであって、
    前記各ポートはメモリオペレーションを1以上のソースから受信し、及び前記各ポートは特定タイプのメモリオペレーショントラフィックに対して専用に使用され、
    前記メモリオペレーションにとって関連するサービスの質(QoS)パラメータに応答して、前記メモリオペレーショントラフィックを、前記複数のポートから複数のメモリチャンネルへスイッチさせるエージェントインタフェースユニットを含み、
    前回のメモリオペレーションを送信した第1のソースから第1のメモリオペレーションを受信することに応答して、及び、前記前回のメモリオペレーション用の前回QoSパラメータよりも高レベルのサービスを示唆する前記第1のメモリオペレーション用の第1QoSパラメータに更に応答して、前記メモリオペレーションは、前回QoSパラメータを前記第1QoSパラメータが示唆するサービスレベルにアップグレードする、前記メモリコントローラ。
  2. 前記QoSパラメータの定義は各タイプのトラフィックで異なり、前記エージェントインタフェースユニットは、前記QoSパラメータを前記異なる定義と比較し、前記メモリオペレーショントラフィックをスイッチする、請求項1に記載のメモリコントローラ。
  3. 前記ポートの少なくとも1つはリアルタイムトラフィック専用であり、当該リアルタイムトラフィックに関するQoSパラメータは、前記ソースにおける異なるレベルの緊急性を反映する、請求項2に記載のメモリコントローラ。
  4. 前記ポートの他の一つはプロセッサからのトラフィック専用であり、前記プロセッサトラフィックは非リアルタイムであって、かつ、前記QoSパラメータは最大限の努力又は低待ち時間サービスの何れか一方を示唆している、請求項3に記載のメモリコントローラ。
  5. 前記ポートの他の一つはグラフィックユニットからのトラフィック専用であり、前記グラフィックユニットは非リアルタイムである、請求項4に記載のメモリコントローラ。
  6. 前記前回のメモリオペレーション内の読出しオペレーションに関するQoSパラメータを維持し、前記前回のメモリオペレーション内の書込みオペレーションに関するQoSパラメータを排除する複数のメモリチャンネルユニットを更に含み、
    前記複数のメモリチャンネルユニットは、前記第1のソースからの読出しオペレーションに関するQoSパラメータよりも高いレベルのサービスを示唆する前記第1QoSパラメータに応答して、前記第1のソースから読出しオペレーションに関するQoSパラメータをアップグレードする、請求項1に記載のメモリコントローラ。
  7. 前記エージェントインタフェースユニットに結合される複数のメモリチャンネルユニットを更に含み、
    前記複数のメモリチャンネルユニットのそれぞれは、あらかじめソートしているキューと、メモリと結合するメモリインタフェースユニットとを含み、
    前記エージェントインタフェースユニットは、前記メモリオペレーションのQoSパラメータに応答して、前記ポートからのメモリオペレーションを所与のメモリチャンネルに対してスケジューリングし、
    前記エージェントインタフェースユニットは、所与のメモリチャンネルに対するメモリオペレーションをQoSパラメータに基づき組み立てなおし、
    前記メモリチャンネルユニットは、メモリの効率上、どのメモリオペレーションが一緒に実行される筈であるかに従い、前記あらかじめソートしているキューにおいてメモリオペレーションをグループ化し、
    前記メモリチャンネルユニットは、各グループの最高レベルのQoSパラメータに基づきグループをスケジューリングし、
    前記メモリチャンネルユニットは、前記メモリオペレーションを、前記メモリのためのコマンドの中にあらかじめ合成し、
    前記メモリインタフェースユニットは、前記メモリへの効率的なアクセスに基づき前記コマンドを組み立てなおす、請求項1に記載のメモリコントローラ。
  8. 前記メモリオペレーションは、読出しオペレーションと書込みオペレーションとを含み、前記あらかじめソートしているキューは、読出しオペレーション及び書込みオペレーションを別個にキューし、
    前記あらかじめソートしているキューは、書込みオペレーションに関するQoSパラメータを排除し、及び、書込みキューの充満度に応じて読出しオペレーションと書込みオペレーションとの間でスケジューリングするよう構成される、請求項7に記載のメモリコントローラ。
  9. (i)複数の前記メモリオペレーションが前記メモリにおいて同一ページに対するものである、
    (ii)複数の前記メモリオペレーションが異なるランクのメモリに対するものである、
    (iii)複数の前記メモリオペレーションが前記メモリの異なるバンクに対するものである、のうち少なくとも1つが真であるならば、複数のメモリオペレーションが効率的に一緒に実行されるようにする、請求項8に記載のメモリコントローラ。
  10. 請求項1に記載のメモリコントローラと、
    1以上のリアルタイム(RT)周辺機器と、
    少なくとも1つのプロセッサと、
    1以上の非リアルタイム(NRT)周辺機器と、を含む集積回路であって、
    前記1以上のリアルタイム(RT)周辺機器は、前記複数のポートのうちのRTポートと結合し、
    前記少なくとも1つのプロセッサは、前記複数のポートのうちの第1のNRTポートに結合し、
    前記1以上のNRT周辺機器は、前記複数のポートのうちの第2のNRTポートに結合し、
    前記メモリコントローラは、前記複数のポートからメモリオペレーションをキャプチャーして、メモリに対する1以上のメモリチャンネル上で前記メモリオペレーションをスケジューリングし、
    それぞれのポートで受信したメモリオペレーション間での決定をスケジューリングすることは、前記メモリオペレーションを受信した特定のポートに部分的に影響を受ける、前記集積回路。
  11. メモリコントローラにおける複数のポートに関するメモリオペレーションを受信する処理であって、各ポートはメモリオペレーションを1以上のソースから受信するよう結合され、かつ、各ポートは特定タイプのメモリオペレーショントラフィック専用である当該処理と、
    前記メモリオペレーションに関係のあるサービス質(QoS)パラメータに応答して、前記複数のポートから、前記メモリコントローラ内の複数のメモリチャンネルユニットへ前記メモリオペレーショントラフィックを切替える処理と、
    1以上の前回メモリオペレーションを送信した第1のソースから第1のメモリオペレーションを受信する処理と、
    前記前回メモリオペレーション用の前回QoSパラメータよりも高いレベルのサービスを示唆する前記第1のメモリオペレーション用の第1QoSパラメータに応答して、前記メモリコントローラが前記前回QoSパラメータを前記第1QoSパラメータが示唆するサービスのレベルにアップグレードする処理と、
    を含む方法。
  12. 前記メモリオペレーションを受信する処理は、
    i)前記複数のポートのうちのリアルタイム(RT)ポートに関する第1のメモリオペレーションであって、RT QoSレベルのセットに従って定義された第1のサービス質(QoS)パラメータを有する当該第1のメモリオペレーションを受信すること、
    ii)前記複数のポートのうちの非リアルタイム(NRT)ポートに関する第2のメモリオペレーションであって、NRT QoSレベルのセットに従って定義された第2のサービス質(QoS)パラメータを有する当該第2のメモリオペレーションを前記第1のメモリオペレーションと並行して受信することを含み、
    前記メモリオペレーショントラフィックを切替える処理は、前記メモリコントローラにおいて、前記第1のQoSパラメータ及び前記第2のQoSパラメータに応じて、少なくとも一部が前記メモリにアクセスする前記第1のメモリオペレーション及び前記第2のメモリオペレーションをスケジューリングすることを含む、
    請求項11に記載の方法。
  13. 前記メモリコントローラが、前記前回のメモリオペレーション内の読出しオペレーションに関するQoSパラメータを維持する処理と、
    前記メモリコントローラが、前記前回のメモリオペレーション内の書込みオペレーションに関するQoSパラメータを排除する処理と、
    前記第1のソースからの読出しオペレーションに関するQoSパラメータよりも高いレベルのサービスを示唆する前記第1のメモリオペレーション用の第1QoSパラメータに応答して、前記メモリコントローラが、前記第1のソースからの読出しオペレーションに関するQoSパラメータをアップグレードする処理と、
    を更に含む請求項11に記載の方法。
  14. 前記メモリチャンネルユニットのそれぞれは、あらかじめソートしたキューと、メモリに接合したメモリインタフェースユニットとを含み、
    前記メモリオペレーショントラフィックを切替える処理が、
    i)前記メモリオペレーションのQoSパラメータに応答して、前記ポートから所与のメモリチャンネルユニットまでメモリオペレーションをスケジューリングすること、
    ii)前記QoSパラメータに基づいて所与のメモリチャンネルユニットへのメモリオペレーションを組み立てなおすこと、
    を更に含む請求項11に記載の方法。
  15. メモリの効率上、どのメモリオペレーションが一緒に実行されるかに従い、前記複数のメモリチャンネルユニットが、前記あらかじめソートしているキューにおいてメモリオペレーションをグループ化する処理と、
    前記複数のメモリチャンネルユニットが、各グループの最高レベルのQoSパラメータに基づきグループをスケジューリングする処理と、
    前記複数のメモリチャンネルユニットが、前記メモリオペレーションを前記メモリのためのコマンドの中にあらかじめ合成する処理と、
    前記メモリインタフェースユニットが、前記メモリへの効率的なアクセスに基づき前記コマンドを組み立てなおす処理と、
    を更に含む請求項14に記載の方法。
  16. 前記メモリオペレーションは読出しオペレーション及び書込みオペレーションを含み、 前記あらかじめソートしているキューは、読出しオペレーションと書込みオペレーションを別個にキューする処理と、
    前記あらかじめソートしているキューは、書込みオペレーションに関するQoSパラメータを排除し、及び、書込みキューの充満度に応じて読出しオペレーションと書込みオペレーションとの間でスケジュールする処理と、
    を更に含む請求項15に記載の方法。
  17. (i)複数の前記メモリオペレーションが前記メモリにおいて同一ページに対するものである、
    (ii)複数の前記メモリオペレーションが異なるランクのメモリに対するものである、
    (iii)複数の前記メモリオペレーションが前記メモリの異なるバンクに対するものである、のうち少なくとも1つが真であるならば、複数のメモリオペレーションが効率的に一緒に実行されるようにする、請求項15に記載の方法。
JP2011221349A 2010-09-16 2011-09-15 トラフィッククラスと関連するポートをもつマルチポートのメモリコントローラ Active JP5610636B2 (ja)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US12/883,878 US8631213B2 (en) 2010-09-16 2010-09-16 Dynamic QoS upgrading
US12/883,848 2010-09-16
US12/883,864 2010-09-16
US12/883,888 2010-09-16
US12/883,888 US8510521B2 (en) 2010-09-16 2010-09-16 Reordering in the memory controller
US12/883,878 2010-09-16
US12/883,848 US20120072677A1 (en) 2010-09-16 2010-09-16 Multi-Ported Memory Controller with Ports Associated with Traffic Classes
US12/883,864 US8314807B2 (en) 2010-09-16 2010-09-16 Memory controller with QoS-aware scheduling
USPCT/US2011/049940 2011-08-31
PCT/US2011/049940 WO2012036905A1 (en) 2010-09-16 2011-08-31 Multi-ported memory controller with ports associated with traffic classes

Publications (2)

Publication Number Publication Date
JP2012074042A JP2012074042A (ja) 2012-04-12
JP5610636B2 true JP5610636B2 (ja) 2014-10-22

Family

ID=44908227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011221349A Active JP5610636B2 (ja) 2010-09-16 2011-09-15 トラフィッククラスと関連するポートをもつマルチポートのメモリコントローラ

Country Status (13)

Country Link
EP (1) EP2431884B1 (ja)
JP (1) JP5610636B2 (ja)
KR (1) KR101270848B1 (ja)
CN (1) CN102402490B (ja)
AU (1) AU2011302452B2 (ja)
BR (1) BR112013006329B1 (ja)
GB (1) GB2483763B (ja)
HK (2) HK1168159A1 (ja)
MX (1) MX2013002773A (ja)
NL (1) NL2007411C2 (ja)
RU (1) RU2556443C2 (ja)
TW (1) TWI465903B (ja)
WO (1) WO2012036905A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9881657B2 (en) 2012-05-08 2018-01-30 Marvell World Trade Ltd. Computer system and method of memory management
CN102681946B (zh) * 2012-05-11 2015-03-11 龙芯中科技术有限公司 内存访问方法和装置
BR122016006765B1 (pt) 2013-03-15 2022-02-01 Intel Corporation Aparelho acoplado ao módulo de memória, sistema de memória e método
CN104156328B (zh) * 2013-05-15 2019-02-05 中兴通讯股份有限公司 一种识别操作系统类型的方法及usb设备
KR102114453B1 (ko) * 2013-07-19 2020-06-05 삼성전자주식회사 모바일 장치 및 그것의 제어 방법
WO2015067295A1 (en) 2013-11-05 2015-05-14 Huawei Technologies Co., Ltd. Method and arrangement for controlling requests to a shared electronic resource
US9563369B2 (en) 2014-04-14 2017-02-07 Microsoft Technology Licensing, Llc Fine-grained bandwidth provisioning in a memory controller
US10163508B2 (en) 2016-02-26 2018-12-25 Intel Corporation Supporting multiple memory types in a memory slot
US10222853B2 (en) 2016-03-03 2019-03-05 Qualcomm Incorporated Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
US11221971B2 (en) * 2016-04-08 2022-01-11 Qualcomm Incorporated QoS-class based servicing of requests for a shared resource
EP3270295A1 (en) * 2016-07-15 2018-01-17 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
TWI587145B (zh) * 2016-12-08 2017-06-11 群聯電子股份有限公司 通道切換裝置、記憶體儲存裝置及通道切換方法
US11709624B2 (en) * 2018-02-15 2023-07-25 Xilinx, Inc. System-on-chip having multiple circuits and memory controller in separate and independent power domains
US11237893B2 (en) * 2019-06-26 2022-02-01 Western Digital Technologies, Inc. Use of error correction-based metric for identifying poorly performing data storage devices
EP4211566A1 (en) * 2020-10-26 2023-07-19 Google LLC Modulating credit allocations in memory subsystems
CN112597080B (zh) * 2020-12-29 2022-10-21 联芸科技(杭州)股份有限公司 读请求控制装置及方法以及存储器控制器
CN115329016B (zh) * 2022-10-14 2023-04-25 深圳迅策科技有限公司 一种金融资产交易数据处理方法、系统及可读介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL116708A (en) * 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
US6859438B2 (en) * 1998-02-03 2005-02-22 Extreme Networks, Inc. Policy based quality of service
US6101613A (en) * 1998-07-06 2000-08-08 Intel Corporation Architecture providing isochronous access to memory in a system
US6651128B1 (en) * 2000-02-10 2003-11-18 Advanced Micro Devices, Inc. Systems and methods for arbitrating between asynchronous and isochronous data for access to data transport resources
TW513635B (en) * 2000-11-24 2002-12-11 Ibm Method and structure for variable-length frame support in a shared memory switch
US7606744B1 (en) * 2001-02-16 2009-10-20 Financial Systems Technology (Intellectual Property) Pty. Ltd. System and method for real-time pricing with volume discounting
US7054968B2 (en) * 2003-09-16 2006-05-30 Denali Software, Inc. Method and apparatus for multi-port memory controller
US8407433B2 (en) * 2007-06-25 2013-03-26 Sonics, Inc. Interconnect implementing internal controls
US20050138251A1 (en) * 2003-12-18 2005-06-23 Fanning Blaise B. Arbitration of asynchronous and isochronous requests
US7500045B2 (en) * 2005-03-23 2009-03-03 Qualcomm Incorporated Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system
EP1880296A1 (en) * 2005-05-04 2008-01-23 Nxp B.V. Memory controller and method for controlling access to a memory, as well as system comprising a memory controller
KR100784385B1 (ko) * 2005-08-10 2007-12-11 삼성전자주식회사 공유 자원에 대한 접근 요청을 중재하는 시스템 및 방법
US7802040B2 (en) * 2005-12-22 2010-09-21 Arm Limited Arbitration method reordering transactions to ensure quality of service specified by each transaction
CN100581172C (zh) * 2006-04-19 2010-01-13 杭州华三通信技术有限公司 一种对目的磁盘进行访问的方法和扩展磁盘容量的系统
US20080077720A1 (en) * 2006-09-27 2008-03-27 Blaise Fanning Isochronous memory access with variable channel priorities and timers
CN101026556B (zh) * 2007-01-10 2010-04-21 华为技术有限公司 一种支持服务质量的仲裁方法及装置
US7908440B2 (en) * 2007-08-09 2011-03-15 Intel Corporation Simultaneous personal sensing and data storage
US8209439B2 (en) * 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
CN101419579B (zh) * 2008-12-10 2011-11-16 中国科学院计算技术研究所 一种在动态随机存储器上提供服务质量的装置和方法

Also Published As

Publication number Publication date
NL2007411A (en) 2012-03-19
HK1168159A1 (en) 2012-12-21
EP2431884A1 (en) 2012-03-21
GB201115481D0 (en) 2011-10-26
GB2483763B (en) 2013-01-09
HK1168672A1 (en) 2013-01-04
RU2013117127A (ru) 2014-10-27
TWI465903B (zh) 2014-12-21
BR112013006329B1 (pt) 2020-12-01
AU2011302452A1 (en) 2013-03-28
TW201216056A (en) 2012-04-16
GB2483763A (en) 2012-03-21
CN102402490B (zh) 2015-12-02
NL2007411C2 (en) 2012-05-09
EP2431884B1 (en) 2015-03-11
JP2012074042A (ja) 2012-04-12
BR112013006329A2 (pt) 2016-06-21
CN102402490A (zh) 2012-04-04
MX2013002773A (es) 2013-04-05
KR101270848B1 (ko) 2013-06-05
WO2012036905A1 (en) 2012-03-22
RU2556443C2 (ru) 2015-07-10
KR20120029366A (ko) 2012-03-26
AU2011302452B2 (en) 2014-09-04

Similar Documents

Publication Publication Date Title
JP5610636B2 (ja) トラフィッククラスと関連するポートをもつマルチポートのメモリコントローラ
US8553042B2 (en) QoS-aware scheduling
US8762653B2 (en) Dynamic QoS upgrading
US8510521B2 (en) Reordering in the memory controller
US9141568B2 (en) Proportional memory operation throttling
US20120137090A1 (en) Programmable Interleave Select in Memory Controller
US20210073152A1 (en) Dynamic page state aware scheduling of read/write burst transactions
US11429281B2 (en) Speculative hint-triggered activation of pages in memory
CN111742305A (zh) 调度具有不统一等待时间的存储器请求
US20120072677A1 (en) Multi-Ported Memory Controller with Ports Associated with Traffic Classes
US10572389B2 (en) Cache control aware memory controller
US8458406B2 (en) Multiple critical word bypassing in a memory controller
US8706925B2 (en) Accelerating memory operations blocked by ordering requirements and data not yet received
US8856459B1 (en) Matrix for numerical comparison

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140703

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140901

R150 Certificate of patent or registration of utility model

Ref document number: 5610636

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250