(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6169615
(24)【登録日】2017年7月7日
(45)【発行日】2017年7月26日
(54)【発明の名称】システムコントローラのFIFOコマンドキューを動的に管理する方法、集積回路およびシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20170713BHJP
【FI】
G06F12/00 571B
【請求項の数】20
【全頁数】14
(21)【出願番号】特願2014-553826(P2014-553826)
(86)(22)【出願日】2013年1月25日
(65)【公表番号】特表2015-505114(P2015-505114A)
(43)【公表日】2015年2月16日
(86)【国際出願番号】IB2013000521
(87)【国際公開番号】WO2013111019
(87)【国際公開日】20130801
【審査請求日】2015年12月10日
(31)【優先権主張番号】61/591,705
(32)【優先日】2012年1月27日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502188642
【氏名又は名称】マーベル ワールド トレード リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ジュウ、ジュン
(72)【発明者】
【氏名】カオ、ジョセフ、ジュン
(72)【発明者】
【氏名】ヤン、ツォン−ジュ
(72)【発明者】
【氏名】ル、ルオヤン
【審査官】
後藤 彰
(56)【参考文献】
【文献】
特開2001−217893(JP,A)
【文献】
国際公開第2007/099613(WO,A1)
【文献】
特開平09−198264(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
システムコントローラのファーストイン/ファーストアウト(FIFO)コマンドキューを動的に管理する方法であって、
それぞれ優先度パラメータが関連づけられた1または複数のコマンドを前記コマンドキューへと受信する段階と、
前記コマンドキュー内における1番初めに実行されるべき現コマンドであって、第1の優先度パラメータに関連付けられる前記現コマンドを決定する段階と、
前記1または複数のコマンドに関連付けられる優先度パラメータの中で最大である第2の優先度パラメータに関連付けられる第2のコマンドを決定する段階と、
前記現コマンドの待機時間および前記第2のコマンドの待機時間の少なくとも一方に基づいて、前記現コマンドに対する最終的な優先度パラメータを計算する段階と、
前記最終的な優先度パラメータが予め定められた条件を満たす場合に、前記現コマンドを実行のために選択するべく、前記最終的な優先度パラメータを出力する段階と
を含む方法。
【請求項2】
前記システムコントローラ内の、第2のFIFOコマンドキュー内の第2の現コマンドに対する第2の最終的な優先度パラメータを計算する段階をさらに含み、
前記最終的な優先度パラメータが前記第2の最終的な優先度パラメータよりも大きければ、前記最終的な優先度パラメータは前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項1に記載の方法。
【請求項3】
前記システムコントローラ内の、第2のFIFOコマンドキュー内の第2の現コマンドに対する第2の最終的な優先度パラメータを計算する段階と、
前記システムコントローラ内の、第3のFIFOコマンドキュー内の第3の現コマンドに対する第3の最終的な優先度パラメータを計算する段階と、をさらに含み、
前記最終的な優先度パラメータが、前記第2の最終的な優先度パラメータおよび前記第3の最終的な優先度パラメータの両方よりも大きければ、前記最終的な優先度パラメータは、前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項1に記載の方法。
【請求項4】
前記現コマンドは第1の待ち時間パラメータに関連付けられ、前記第1の待ち時間パラメータは前記コマンドキュー内の前記現コマンドの前記待機時間を示し、
前記第2のコマンドは第2の待ち時間パラメータに関連付けられ、前記第2の待ち時間パラメータは前記コマンドキュー内の前記第2のコマンドの前記待機時間を示す
請求項1から3のいずれか1項に記載の方法。
【請求項5】
前記第2の待ち時間パラメータが予め定められた閾値よりも大きい場合、前記最終的な優先度パラメータは第1の値に等しく計算され、
前記第2の待ち時間パラメータが前記予め定められた閾値より小さいかまたは等しい場合、前記最終的な優先度パラメータは、第2の値に等しく計算される
請求項4に記載の方法。
【請求項6】
前記第1の値は、前記第2の優先度パラメータに等しく、前記第2の値は、前記第2の優先度パラメータと前記第1の優先度パラメータとの合計の1/2に等しい
請求項5に記載の方法。
【請求項7】
前記第2の待ち時間パラメータが、第1の閾値よりも大きく、かつ前記第1の待ち時間パラメータが第2の閾値よりも大きい場合、前記最終的な優先度パラメータは第1の値に等しく計算され、
前記第2の待ち時間パラメータが、前記第1の閾値より小さいかまたは等しく、かつ前記第1の待ち時間パラメータが前記第2の閾値よりも大きい場合、前記最終的な優先度パラメータは、第2の値に等しく計算され、
前記第2の待ち時間パラメータが、前記第1の閾値よりも大きく、かつ前記第1の待ち時間パラメータが前記第2の閾値より小さいかまたは等しい場合、前記最終的な優先度パラメータは、第3の値に等しく計算され、
前記第2の待ち時間パラメータが、前記第1の閾値より小さいかまたは等しく、かつ前記第1の待ち時間パラメータが、前記第2の閾値より小さいかまたは等しい場合、前記最終的な優先度パラメータは、第4の値に等しく計算される
請求項4から6のいずれか1項に記載の方法。
【請求項8】
前記最終的な優先度パラメータは、前記第2の優先度パラメータに等しく計算される
請求項1から7のいずれか1項に記載の方法。
【請求項9】
システムコントローラのファーストイン/ファーストアウト(FIFO)コマンドキューを動的に管理する集積回路であって、
それぞれ優先度パラメータが関連づけられた1または複数のコマンドを、前記コマンドキューへと受信するインターフェース回路と、
前記コマンドキュー内における1番初めに実行されるべき現コマンドであって、第1の優先度パラメータに関連付けられる前記現コマンドを決定し、前記1または複数のコマンドに関連付けられる優先度パラメータの中で最大である第2の優先度パラメータに関連付けられる第2のコマンドを決定する監視回路と、
前記現コマンドの待機時間および前記第2のコマンドの待機時間の少なくとも一方に基づいて、前記現コマンドに対する最終的な優先度パラメータを計算し、前記最終的な優先度パラメータが予め定められた条件を満たす場合に、前記現コマンドを実行のために選択するべく前記最終的な優先度パラメータを出力する選択回路と
を備える集積回路。
【請求項10】
前記システムコントローラ内の第2のFIFOコマンドキュー内の第2の現コマンドに対する第2の最終的な優先度パラメータを計算する第2の選択回路をさらに備え、
前記最終的な優先度パラメータが前記第2の最終的な優先度パラメータよりも大きければ、前記最終的な優先度パラメータは、前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項9に記載の集積回路。
【請求項11】
前記システムコントローラ内の第2のFIFOコマンドキュー内の第2の現コマンドに対する第2の最終的な優先度パラメータを計算する第2の選択回路と、
前記システムコントローラ内の第3のFIFOコマンドキュー内の第3の現コマンドに対する第3の最終的な優先度パラメータを計算する第3の選択回路と、をさらに備え、
前記最終的な優先度パラメータが、前記第2の最終的な優先度パラメータおよび前記第3の最終的な優先度パラメータの両方よりも大きければ、前記最終的な優先度パラメータは前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項9に記載の集積回路。
【請求項12】
前記現コマンドは第1の待ち時間パラメータに関連付けられ、前記第1の待ち時間パラメータは前記コマンドキュー内の前記現コマンドの前記待機時間を示し、
前記第2のコマンドは第2の待ち時間パラメータに関連付けられ、前記第2の待ち時間パラメータは前記コマンドキュー内の前記第2のコマンドの前記待機時間を示す
請求項9から11のいずれか1項に記載の集積回路。
【請求項13】
前記第2の待ち時間パラメータが予め定められた閾値よりも大きい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第1の値に等しく計算し、
前記第2の待ち時間パラメータが前記予め定められた閾値より小さいかまたは等しい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第2の値に等しく計算する
請求項12に記載の集積回路。
【請求項14】
前記第2の待ち時間パラメータが第1の閾値よりも大きく、かつ前記第1の待ち時間パラメータが第2の閾値よりも大きい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第1の値に等しく計算し、
前記第2の待ち時間パラメータが前記第1の閾値より小さいかまたは等しく、かつ前記第1の待ち時間パラメータが前記第2の閾値よりも大きい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第2の値に等しく計算し、
前記第2の待ち時間パラメータが前記第1の閾値よりも大きく、かつ前記第1の待ち時間パラメータが前記第2の閾値より小さいかまたは等しい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第3の値に等しく計算し、
前記第2の待ち時間パラメータが前記第1の閾値より小さいかまたは等しく、かつ前記第1の待ち時間パラメータが前記第2の閾値より小さいかまたは等しい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第4の値に等しく計算する
請求項12または13に記載の集積回路。
【請求項15】
前記選択回路はさらに、前記最終的な優先度パラメータを前記第2の優先度パラメータに等しく計算する
請求項9から14のいずれか1項に記載の集積回路。
【請求項16】
システムコントローラ内のファーストイン/ファーストアウト(FIFO)コマンドキューを動的に管理するシステムであって、
1または複数のデータプロセッサと、
前記1または複数のデータプロセッサに命令して複数の段階を実行させるプログラミング命令が符号化されたコンピュータ可読メモリと、を含み、前記複数の段階は、
それぞれ優先度パラメータが関連づけられた1または複数のコマンドを、前記コマンドキューへと受信する段階と、
前記コマンドキュー内における1番初めに実行されるべき現コマンドであって、第1の優先度パラメータに関連付けられる前記現コマンドを決定する段階と、
前記1または複数のコマンドに関連付けられる優先度パラメータの中で最大である第2の優先度パラメータに関連付けられる第2のコマンドを決定する段階と、
前記現コマンドの待機時間および前記第2のコマンドの待機時間の少なくとも一方に基づいて、前記現コマンドに対する最終的な優先度パラメータを計算する段階と、
前記最終的な優先度パラメータが予め定められた条件を満たす場合に、前記現コマンドを実行のために選択するべく前記最終的な優先度パラメータを出力する段階と
を含むシステム。
【請求項17】
前記コンピュータ可読メモリに符号化された前記プログラミング命令は、前記1または複数のデータプロセッサに命令してさらなる複数の段階を実行させ、前記複数の段階は、
前記システムコントローラ内の第2のFIFOコマンドキュー内の第2の現コマンドに対する第2の最終的な優先度パラメータを計算する段階を含み、
前記最終的な優先度パラメータが前記第2の最終的な優先度パラメータよりも大きければ、前記最終的な優先度パラメータは前記予め定められた条件を満たし、前記現コマンドは実行のために選択される
請求項16に記載のシステム。
【請求項18】
前記コンピュータ可読メモリに符号化された前記プログラミング命令は、前記1または複数のデータプロセッサに命令してさらなる複数の段階を実行させ、前記複数の段階は、
前記システムコントローラ内の第2のFIFOコマンドキュー内の第2の現コマンドに対する第2の最終的な優先度パラメータを計算する段階と、
前記システムコントローラ内の第3のFIFOコマンドキュー内の第3の現コマンドに対する第3の最終的な優先度パラメータを計算する段階と、を含み、
前記最終的な優先度パラメータが、前記第2の最終的な優先度パラメータおよび前記第3の最終的な優先度パラメータの両方よりも大きければ、前記最終的な優先度パラメータは前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項16に記載のシステム。
【請求項19】
前記現コマンドは、第1の待ち時間パラメータに関連付けられ、前記第1の待ち時間パラメータは前記コマンドキュー内の前記現コマンドの前記待機時間を示し、
前記第2のコマンドは、第2の待ち時間パラメータに関連付けられ、前記第2の待ち時間パラメータは前記コマンドキュー内の前記第2のコマンドの前記待機時間を示す
請求項16から18のいずれか1項に記載のシステム。
【請求項20】
前記第2の待ち時間パラメータが、予め定められた閾値よりも大きい場合、前記最終的な優先度パラメータは第1の値に等しく計算され、
前記第2の待ち時間パラメータが、前記予め定められた閾値より小さいかまたは等しい場合、前記最終的な優先度パラメータは第2の値に等しく計算される
請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本開示は2012年1月27日出願の米国仮特許出願第61/591,705号の優先権と利益を主張しており、その開示全体をここに参照として組み込む。
【0002】
本特許文献で説明される技術は、概してデータ処理に関し、特にデータ処理における優先制御に関する。
【背景技術】
【0003】
メモリシステムはしばしば、ダイナミックランダムアクセスメモリ(DRAM)や、シンクロナスDRAM(SDRAM)や、ダブルデータレート(DDR、DDR2、DDR3など)SDRAMなどの半導体メモリデバイスを備える。プロセッサや、周辺デバイス(例えば、入出力デバイス)や、オーディオおよびビデオデバイスなどのさまざまなソースデバイスは、メモリデバイスからソースデバイスへデータを送るリードメモリオペレーションや、ソースデバイスからメモリデバイスへデータを送るライトメモリオペレーションを含む、メモリオペレーションコマンドを生成し得る。通常、メモリコントローラは、ソースデバイスからメモリオペレーションコマンドを受信し、そしてコマンドに応答して、メモリデバイスを制御し、メモリオペレーションを実行すべく実装される。メモリコントローラはしばしば、メモリオペレーションコマンドを取り込み保存するコマンドキューを備える。
【0004】
メモリオペレーションコマンドの優先度パラメータ(例えば、クオリティオブサービス(QoS)パラメータ)は、コマンドの一部としてメモリコントローラへ送信され得る。メモリコントローラは、複数の異なるコマンドキューからのメモリオペレーションコマンドを調停し、それぞれの優先度パラメータに基づきこれらのコマンドの実行をスケジュールし得る。
図1は、メモリオペレーションコマンドの実行をスケジュールするメモリコントローラの例である。メモリコントローラ100のアービタコンポーネント108は、複数のコマンドキュー102からのメモリオペレーションコマンド104の実行を、メモリオペレーションコマンド104の優先度パラメータ106に基づきスケジュールする。
図1に示すように、メモリコントローラ100は、複数のコマンドキュー102にそれぞれ対応する複数のシステムインターフェースポート(SIPs)110を有する。コマンドキューは、それぞれが優先度パラメータ106(例えば、QoS)を含む1または複数のメモリオペレーションコマンド104を格納する。各コマンドキューは、コマンドキューの最上部に位置し、ゆえに1番初めに処理されるべき現コマンドを有する。アービタコンポーネント108は、複数の異なるコマンドキューの現コマンドの優先度パラメータ(例えば、QoS)を比較して、最も高い優先度パラメータを有する、処理されるべき1つの現コマンドを選択する。例えば、コマンドキューはしばしば、ファーストイン/ファーストアウト(FIFO)方式で動作する。すなわち、コマンドキューの現コマンドは、このコマンドキュー内の他のコマンドよりも早く受信されたコマンドだということである。
【発明の概要】
【課題を解決するための手段】
【0005】
本明細書で説明される教示に従い、システムコントローラのファーストイン/ファーストアウト(FIFO)コマンドキューを動的に管理するシステムと方法が提供される。1または複数のコマンドが、コマンドキューへと受信される。それぞれのコマンドは優先度パラメータに関連付けられる。コマンドキュー内における1番初めに実行されるべき現コマンドが決定される。現コマンドは第1の優先度パラメータに関連付けられる。第2の優先度パラメータと関連付けられる第2のコマンドが決定される。第2の優先度パラメータは、1または複数のコマンドに関連付けられる優先度パラメータの中で最大である。現コマンドに対する最終的な優先度パラメータが、少なくとも一部は第2の優先度パラメータに基づき計算される。
【0006】
別の実施形態において、システムコントローラのファーストイン/ファーストアウト(FIFO)コマンドキューを動的に管理する集積回路は、それぞれ優先度パラメータが関連づけられた1または複数のコマンドを、コマンドキューへと受信すべく構成されるインターフェース回路と、コマンドキュー内における1番初めに実行されるべき現コマンドであって、第1の優先度パラメータと関連付けられる現コマンドを決定し、1または複数のコマンドと関連付けられる優先度パラメータの中で最大であるような第2の優先度パラメータに関連付けられる第2のコマンドを決定すべく構成される監視回路と、少なくとも一部は第2の優先度パラメータに基づいて、現コマンドに対する最終的な優先度パラメータを計算し、この最終的な優先度パラメータが予め定められた条件を満たす場合に、現コマンドを実行のために選択するべく、最終的な優先度パラメータを出力するように構成される選択回路と、を有する。
【0007】
さらに別の実施形態では、システムコントローラのファーストイン/ファーストアウト(FIFO)コマンドキューを動的に管理するシステムは、1または複数のデータプロセッサと、1または複数のデータプロセッサに命令して複数の段階を実行させるプログラミング命令が符号化されたコンピュータ可読メモリと、を有する。この段階は、それぞれ優先度パラメータが関連づけられた1または複数のコマンドをコマンドキューへと受信する段階と、コマンドキュー内における1番初めに実行されるべき現コマンドであって、第1の優先度パラメータに関連付けられる現コマンドを決定する段階と、1または複数のコマンドに関連付けられる優先度パラメータの中で最大である第2の優先度パラメータと関連付けられる第2のコマンドを決定する段階と、を含む。この段階はさらに、少なくとも一部は第2の優先度パラメータに基づいて、現コマンドに対する最終的な優先度パラメータを計算する段階と、この最終的な優先度パラメータが予め定められた条件を満たす場合に、現コマンドを実行のために選択するべく、最終的な優先度パラメータを出力する段階と、を含む。
【図面の簡単な説明】
【0008】
【
図1】メモリオペレーションコマンドの実行をスケジュールするメモリコントローラの例を示す。
【0009】
【0010】
【
図3】コマンドキュー内のコマンドに対する動的な優先度パラメータを生成する例を示す。
【0011】
【
図4】コマンドキュー内のコマンドに対する動的な優先度パラメータを生成する別な例を示す。
【0012】
【
図5】動的な優先度パラメータを生成するための、コマンドキュー内のコマンドのデータフィールドの例を示す。
【0013】
【
図6】コマンドキューに関連付けられる動的な優先度パラメータに基づいて、メモリオペレーションコマンドの実行をスケジュールするメモリコントローラの例を示す。
【発明を実施するための形態】
【0014】
再び
図1を参照すると、アービタコンポーネント108は、処理される最も高い優先度パラメータを有する複数の現コマンドのうちの1つを選択する。このように、特定のコマンドキュー内の現コマンドが低い優先度パラメータを有すれば、このような現コマンドは、処理され得るまで長時間待つ必要がある場合もある。このようなコマンドキュー内の他のコマンドは、たとえ高い優先度パラメータを有していたとしても、現コマンドによってブロックされる。
【0015】
図2に、FIFOコマンドキューの例を示す。高い優先度パラメータを有するコマンド(例えば、コマンド204)は、低い優先度パラメータを有する現コマンド202によってブロックされる。
図2に示すように、メモリオペレーションコマンドは、順序管理のための識別番号(「ID」)と、メモリ内のデータにアクセスするためのメモリ場所を示すアドレス(「Addr」)と、コマンドの緊急度を示す優先度パラメータ(「QoS」)を有する。低い優先度パラメータ「1」(例えば、QoS)を有するメモリオペレーションコマンド202は、コマンドキュー200の最上部にとどまり、コマンドキュー200の現コマンドである。現コマンド202は低い優先度パラメータを有するので、長時間処理され得ない。このように、たとえコマンドキュー200内の他のコマンドが高い優先度パラメータを有していたとしても、これらは処理されない場合もある。例えば、別のメモリオペレーションコマンド204は、極めて高い優先度パラメータ「15」(例えば、QoS)を有する。しかしながら、コマンド204はコマンドキュー200内の半ばに位置するので、コマンド204より前にあるすべてのコマンドが処理されるまで、処理されることはない。
【0016】
一例として、液晶表示制御デバイス(LCD)は、メモリのデータを読み出すコマンドを送信する。初めに、LCDバッファは表示される十分なデータを有しており、LCDコントローラは、低い優先度パラメータ(例えば、QoS)を有するリードコマンドを、このLCDに関連付けられるコマンドキューへ送信する。他のコマンドキューからのコマンドが、より高い優先度パラメータを有する可能性もあるので、メモリコントローラは直ぐにはこれらのリードコマンドを処理しない。後に、バッファが表示される十分なデータを有さない場合、LCDコントローラは、このLCDに関連付けられる同じコマンドキューへ、高い優先度パラメータを有するリードコマンドを送信する。低い優先度パラメータを有する以前のリードコマンドは、実行を待ちながらコマンドキュー内に留まり、高い優先度パラメータを有する後続のリードコマンドをブロックする。そして、バッファに表示されるデータが無くなった場合、エラーが起き得る。
【0017】
特定のシステムインターフェースポートにおける、仮想チャネル手法または、複数の物理的コマンドキューを用いるマルチチャネル手法は、この問題を改善する。異なる優先度パラメータを有するコマンドは、異なるコマンドキューへ取り込まれ、高い優先度パラメータを有するコマンドが、低い優先度パラメータを有するコマンドによってブロックされ得ないからである。しかしながら、仮想チャネル手法またはマルチチャネル手法を実装すると、非常に高価である。加えて、このような仮想チャネル手法またはマルチチャネル手法では、通常は異なる問題が生じる。
【0018】
しばしばソースデバイスは、メモリ内の連続する数カ所にアクセスする必要がある。各場所へ、ソースデバイスは通常、コマンドを送信する。ソースデバイスからのこれらコマンドは、同じ識別番号を共有する。通常、メモリ内の宛先位置を連続してアクセスできるよう、これらのコマンドは送信された順に実行するのが好ましい。特定のシステムインターフェースポートに対する単一のFIFOコマンドキューは、1番に受信されたコマンドは1番に処理されるので、しばしば何の問題もなくこれを達成できる。しかしながら、仮想チャネル手法またはマルチチャネル手法では、同じ識別番号を有するコマンドが、しばしば異なる物理的コマンドキューへ送信される。通常、メカニズムを追加して、同じ識別番号を有するコマンドを順に実行する必要があるが、これはシステムの複雑さとコストを増大させる。
【0019】
本開示は、コマンドキュー内のコマンドが、コマンドキューのステータスに従って、直ぐに処理され得る手法を提示する。
図3に、コマンドキュー内のコマンドに対する動的な優先度パラメータを生成する例を示す。アービタコンポーネント302は、コマンドキュー306のステータスに基づいて決定された動的な優先度パラメータ304(「QoS_arb」)を受信する。動的な優先度パラメータ304が、他のコマンドキューに関連付けられる他の優先度パラメータよりも高いならば、アービタコンポーネント302は、コマンドキュー306内の現コマンド308を処理すべく選択する。高い優先度パラメータを有するコマンドが、現コマンド308より遅れてコマンドキュー306へと受信される場合、動的な優先度パラメータ304の値が増加され、コマンドキュー306の処理を早める。高い優先度パラメータを有するコマンドが処理された場合、動的な優先度パラメータ304の値が低減され、コマンドキュー306の処理を遅くする。
【0020】
具体的には、あるアルゴリズムが実装され、コマンドキュー306内の最も高い優先度パラメータを動的に決定し得る。最も高い優先度パラメータを有するコマンドが、どの程度長くコマンドキュー306内に留まったかが、動的な優先度パラメータ 304を決定する上で考慮され得る。一例として、コマンド318が、コマンドキュー306内で、最も高い優先度パラメータ316(「QoS_Max」)を有するよう決定される。コマンド318が、待ち時間閾値より長くコマンドキュー306内に留まれば、動的な優先度パラメータ304は、最も高い優先度パラメータ316(「QoS_Max」)に等しく決定される。一方、コマンド318が待ち時間閾値より長くコマンドキュー306内に留まっていない場合、動的な優先度パラメータ304は、最も高い優先度パラメータ316(「QoS_Max」)と現コマンド308に対する現在の優先度パラメータ314との合計の1/2に等しく決定される。あるいは、いくつかの状況下では、動的な優先度パラメータ304は、コマンド318がどの程度長くコマンドキュー306内に留まったかには関わらず、最も高い優先度パラメータ316(「QoS_Max」)に等しく決定される。
【0021】
図4に、コマンドキュー内のコマンドに対する動的な優先度パラメータを生成する別の例を示す。
図4に示すように、選択コンポーネント610(例えば、プログラマブルレジスタ)は、コマンドキュー606に対する動的な優先度パラメータ604の生成のため、マルチプレクサ612へ信号622(「QoS_sel」)を出力して、3つのモードのうちの1つを選択する。第1のモード下において、動的な優先度パラメータ604は、常にコマンドキュー606内の現コマンド608の現在の優先度パラメータ614に等しく決定される。第2のモード下では、動的な優先度パラメータ604は、常にコマンドキュー606内の最も高い優先度パラメータ616に等しく決定される。さらに、第3のモード下では、マルチプレクサ612は変更された優先度パラメータ620(「QoS´」)を、動的な優先度パラメータ604として出力する。
【0022】
例えば、変更された優先度パラメータ620は、最も高い優先度パラメータ616を有するコマンド618が、どの程度長くコマンドキュー606内に留まったかに基づいて決定され得る。コマンド618が、第1の待ち時間閾値より長くコマンドキュー606内に留まった場合、変更された優先度パラメータ620は、最大の優先度パラメータ616に等しく決定される。一方で、コマンド618が、第1の待ち時間閾値より長くコマンドキュー606内に留まった場合、変更された優先度パラメータ620は、最大の優先度パラメータ616と現在の優先度パラメータ614との合計の1/2に等しく決定される。
【0023】
さらに、現コマンド608が、どの程度長くコマンドキュー606内に留まったかは、変更された優先度パラメータ620を決定する上で考慮される。例として、コマンド618が第1の待ち時間閾値より長くコマンドキュー606内に留まり、かつ現コマンド608が第2の待ち時間閾値より長くコマンドキュー606内に留まれば、変更された優先度パラメータ620は第1の値に等しく決定される。コマンド618が第1の待ち時間閾値より長くコマンドキュー606内に留まらず、かつ現コマンド608が第2の待ち時間閾値より長くコマンドキュー606内に留まれば、変更された優先度パラメータ620は第2の値に等しく決定される。コマンド618が第1の待ち時間閾値より長くコマンドキュー606内に留まり、かつ現コマンド608が第2の待ち時間閾値より長くコマンドキュー606内に留まらなければ、変更された優先度パラメータ620は第3の値に等しく決定される。加えて、コマンド618が、第1の待ち時間閾値より長くコマンドキュー606内に留まらず、かつ現コマンド608が第2の待ち時間閾値より長くコマンドキュー606内に留まらなければ、変更された優先度パラメータ620は第4の値に等しく決定される。例えば、第1の値および第3の値は、最大の優先度パラメータ616と等しく、第2の値および第4の値は、最大の優先度パラメータ616と現在の優先度パラメータ614との合計の1/2に等しい。
【0024】
図5に、動的な優先度パラメータを生成する、コマンドキュー内のコマンドのデータフィールドの例を示す。コマンドキュー400内の各コマンドは、動的な優先度パラメータ生成に関係する3つのデータフィールドを有する。この3つのデータフィールドは、コマンドが有効かどうかを示す有効性ファクタ(「V」)と、コマンドの待ち時間を示す待ち時間ファクタ(「WT」)(すなわち、どの程度長くコマンドがコマンドキュー400内に留まるか)と、元の優先度パラメータ(「QoS_org」)である。例えば、コマンドの有効性ファクタが1の場合、このコマンドは有効であり、有効性ファクタが0の場合、このコマンドは無効である。有効なコマンドがコマンドキュー400へと受信される場合、このコマンドの待ち時間ファクタは、最大値に達するまで増加し始め、このコマンドがコマンドキュー400からポップされる場合、クリアされる。リードポインタ410(「rd_ptr」)は現コマンド412を指し示し、現コマンド412がコマンドキュー400からポップされる場合、1増加する。ライトポインタ408(「wr_ptr」)は、新たなコマンドの受信に対し、コマンドキュー400内の次に利用可能な場所を指し示し、新たなコマンドが受信される場合、1増加する。例のように、コマンドキュー400は循環FIFOで管理される。
【0025】
2次元アレイ、QoS_info[Q_Size−1:0][Entry_Size−1:0]が定義され、動的な優先度パラメータを生成するための上記データフィールドの情報を格納する。Q_Sizeは、どれくらい多くのコマンドがコマンドキュー 400内に格納可能かを示し、Entry_Sizeは、有効性ファクタと待ち時間ファクタと元の優先度パラメータの大きさの合計を表す。
【0026】
コマンドキュー400内の有効なコマンドの最大の優先度パラメータは、次のように決定される:
【数1】
【0027】
最大の優先度パラメータを有するコマンドの待ち時間ファクタは、次のように決定される:
【数2】
現コマンドの待ち時間ファクタは、次のように決定される:
【数3】
【0028】
図4で議論された第1のモードに対して、動的な優先度パラメータは次のように決定される:
【数4】
第2のモードに対して、動的な優先度パラメータは次のように決定される:
【数5】
加えて、第3のモードに対しては、動的な優先度パラメータは第1の待ち時間閾値(「THR1」)および第2の待ち時間閾値(「THR2」)に基づいて、次のように決定される:
【表1】
【0029】
図6に、コマンドキューに関連付けられる動的な優先度パラメータに基づいて、メモリオペレーションコマンドの実行をスケジュールするメモリコントローラの例を示す。メモリコントローラ500内のアービタコンポーネント502は、複数のコマンドキュー504からのメモリオペレーションコマンドの実行を、各コマンドキュー504にそれぞれ関連付けられる動的な優先度パラメータ506(「QoS_arb」)に基づいてスケジュールする。アービタコンポーネント502は、複数のコマンドキュー504に関連付けられる動的な優先度パラメータ506(「QoS_arb」)同士を比較して、最も高い動的な優先度パラメータを有するコマンドキュー内の現コマンドを、マルチプレクサ510を通して選択する。選択された現コマンドは、メモリコマンドスケジューラ512(例えば、DDRコマンドスケジューラ)へ出力され、処理される。コマンドキュー504は、複数のシステムインターフェースポート(SIPs)508にそれぞれ対応する。
【0030】
ここに書かれた説明は、本発明を開示し、最適なモードを含み、また当業者が本発明を作り利用可能にする目的で、複数の例を用いる。本発明の特許性を有する範囲は、当業者が考え付く他の例も含み得る。例えば、本明細書で説明されるシステムおよび方法は、単一のコマンドキュー構造を有するどのようなシステムコントローラの優先制御に対しても実装され得る。例として、本明細書で説明されるシステムおよび方法は、システムオンチップ(SOC)のモジュールまたはコンポーネントに、優先制御用に実装され得る。このモジュールまたはコンポーネントは、SOCファブリック(バスインターコネクト)や、PCIeモジュールや、SOCのUSBモジュールなどである。
【0031】
例えば、本明細書で説明されるシステムおよび方法は、デバイス処理サブシステムによって実行可能なプログラム命令を有するプログラムコードにより、多くの異なる種類の処理デバイスに実装され得る。本明細書で説明される方法およびシステムを実行すべく構成されるファームウェアまたは適切に設計されたハードウェアなど、他の実装も使用され得る。別の例では、本明細書で説明されるシステムおよび方法は、コプロセッサとして、またはハードウェアアクセラレータとして、独立した処理エンジンに実装され得る。さらに別の例では、本明細書で説明されるシステムおよび方法は、本明細書で説明される方法のオペレーションを実行し、システムを実装するプロセッサによる実行に用いられる命令(例えば、ソフトウェア)を格納するコンピュータ記憶メカニズム(例えば、CD−ROMや、ディスケットや、RAMや、フラッシュメモリや、コンピュータのハードドライブなど)をはじめとする、多くの異なる種類のコンピュータ可読媒体に備えられ得る。