(57)【要約】【解決手段】システムおよび方法が、システムコントローラ内のファーストイン／ファーストアウト（ＦＩＦＯ）コマンドキューを動的に管理すべく提供される。１または複数のコマンドが、コマンドキューへと受信される。それぞれのコマンドは、優先度パラメータに関連付けられる。コマンドキュー内における1番初めに実行されるべき現コマンドが決定される。現コマンドは、第１の優先度パラメータに関連付けられる。第２の優先度パラメータに関連付けられる第２のコマンドが決定される。第２の優先度パラメータは、１または複数のコマンドに関連付けられる優先度パラメータの中で最大である現コマンドに対する最終的な優先度パラメータが、少なくとも一部は第２の優先度パラメータに基づいて計算される。【選択図】図３
2015505114.tif 000002
【特許請求の範囲】
【請求項１】
システムコントローラのファーストイン／ファーストアウト（ＦＩＦＯ）コマンドキューを動的に管理する方法であって、
それぞれ優先度パラメータが関連づけられた１または複数のコマンドを前記コマンドキューへと受信する段階と、
前記コマンドキュー内における1番初めに実行されるべき現コマンドであって、第１の優先度パラメータに関連付けられる前記現コマンドを決定する段階と、
前記１または複数のコマンドに関連付けられる優先度パラメータの中で最大である第２の優先度パラメータに関連付けられる第２のコマンドを決定する段階と、
少なくとも一部は前記第２の優先度パラメータに基づいて、前記現コマンドに対する最終的な優先度パラメータを計算する段階と、
前記最終的な優先度パラメータが予め定められた条件を満たす場合に、前記現コマンドを実行のために選択するべく、前記最終的な優先度パラメータを出力する段階と
を含む方法。
【請求項２】
前記システムコントローラ内の、第２のＦＩＦＯコマンドキュー内の第２の現コマンドに対する第２の最終的な優先度パラメータを計算する段階をさらに含み、
前記最終的な優先度パラメータが前記第２の最終的な優先度パラメータよりも大きければ、前記最終的な優先度パラメータは前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項１に記載の方法。
【請求項３】
前記システムコントローラ内の、第２のＦＩＦＯコマンドキュー内の第２の現コマンドに対する第２の最終的な優先度パラメータを計算する段階と、
前記システムコントローラ内の、第３のＦＩＦＯコマンドキュー内の第３の現コマンドに対する第３の最終的な優先度パラメータを計算する段階と、をさらに含み、
前記最終的な優先度パラメータが、前記第２の最終的な優先度パラメータおよび前記第３の最終的な優先度パラメータの両方よりも大きければ、前記最終的な優先度パラメータは、前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項１に記載の方法。
【請求項４】
前記現コマンドは第１の待ち時間パラメータに関連付けられ、前記第１の待ち時間パラメータは前記コマンドキュー内の前記現コマンドの待機時間を示し、
前記第２のコマンドは第２の待ち時間パラメータに関連付けられ、前記第２の待ち時間パラメータは前記コマンドキュー内の前記第２のコマンドの待機時間を示す
請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記第２の待ち時間パラメータが予め定められた閾値よりも大きい場合、前記最終的な優先度パラメータは第１の値に等しく計算され、
前記第２の待ち時間パラメータが前記予め定められた閾値より小さいかまたは等しい場合、前記最終的な優先度パラメータは、第２の値に等しく計算される
請求項４に記載の方法。
【請求項６】
前記第１の値は、前記第２の優先度パラメータに等しく、前記第２の値は、前記第２の優先度パラメータと前記第１の優先度パラメータとの合計の１／２に等しい
請求項５に記載の方法。
【請求項７】
前記第２の待ち時間パラメータが、第１の閾値よりも大きく、かつ前記第１の待ち時間パラメータが第２の閾値よりも大きい場合、前記最終的な優先度パラメータは第１の値に等しく計算され、
前記第２の待ち時間パラメータが、前記第１の閾値より小さいかまたは等しく、かつ前記第１の待ち時間パラメータが前記第２の閾値よりも大きい場合、前記最終的な優先度パラメータは、第２の値に等しく計算され、
前記第２の待ち時間パラメータが、前記第１の閾値よりも大きく、かつ前記第１の待ち時間パラメータが前記第２の閾値より小さいかまたは等しい場合、前記最終的な優先度パラメータは、第３の値に等しく計算され、
前記第２の待ち時間パラメータが、前記第１の閾値より小さいかまたは等しく、かつ前記第１の待ち時間パラメータが、前記第２の閾値より小さいかまたは等しい場合、前記最終的な優先度パラメータは、第４の値に等しく計算される
請求項４から６のいずれか１項に記載の方法。
【請求項８】
前記最終的な優先度パラメータは、前記第２の優先度パラメータに等しく計算される
請求項１から７のいずれか１項に記載の方法。
【請求項９】
システムコントローラのファーストイン／ファーストアウト（ＦＩＦＯ）コマンドキューを動的に管理する集積回路であって、
それぞれ優先度パラメータが関連づけられた１または複数のコマンドを、前記コマンドキューへと受信するインターフェース回路と、
前記コマンドキュー内における1番初めに実行されるべき現コマンドであって、第１の優先度パラメータに関連付けられる前記現コマンドを決定し、前記１または複数のコマンドに関連付けられる優先度パラメータの中で最大である第２の優先度パラメータに関連付けられる第２のコマンドを決定する監視回路と、
少なくとも一部は前記第２の優先度パラメータに基づいて、前記現コマンドに対する最終的な優先度パラメータを計算し、前記最終的な優先度パラメータが予め定められた条件を満たす場合に、前記現コマンドを実行のために選択するべく前記最終的な優先度パラメータを出力する選択回路と
を備える集積回路。
【請求項１０】
前記システムコントローラ内の第２のＦＩＦＯコマンドキュー内の第２の現コマンドに対する第２の最終的な優先度パラメータを計算する第２の選択回路をさらに備え、
前記最終的な優先度パラメータが前記第２の最終的な優先度パラメータよりも大きければ、前記最終的な優先度パラメータは、前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項９に記載の集積回路。
【請求項１１】
前記システムコントローラ内の第２のＦＩＦＯコマンドキュー内の第２の現コマンドに対する第２の最終的な優先度パラメータを計算する第２の選択回路と、
前記システムコントローラ内の第３のＦＩＦＯコマンドキュー内の第３の現コマンドに対する第３の最終的な優先度パラメータを計算する第３の選択回路と、をさらに備え、
前記最終的な優先度パラメータが、前記第２の最終的な優先度パラメータおよび前記第３の最終的な優先度パラメータの両方よりも大きければ、前記最終的な優先度パラメータは前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項９または１０に記載の集積回路。
【請求項１２】
前記現コマンドは第１の待ち時間パラメータに関連付けられ、前記第１の待ち時間パラメータは前記コマンドキュー内の前記現コマンドの待機時間を示し、
前記第２のコマンドは第２の待ち時間パラメータに関連付けられ、前記第２の待ち時間パラメータは前記コマンドキュー内の前記第２のコマンドの待機時間を示す
請求項９から１１のいずれか１項に記載の集積回路。
【請求項１３】
前記第２の待ち時間パラメータが予め定められた閾値よりも大きい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第１の値に等しく計算し、
前記第２の待ち時間パラメータが前記予め定められた閾値より小さいかまたは等しい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第２の値に等しく計算する
請求項１２に記載の集積回路。
【請求項１４】
前記第２の待ち時間パラメータが第１の閾値よりも大きく、かつ前記第１の待ち時間パラメータが第２の閾値よりも大きい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第１の値に等しく計算し、
前記第２の待ち時間パラメータが前記第１の閾値より小さいかまたは等しく、かつ前記第１の待ち時間パラメータが前記第２の閾値よりも大きい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第２の値に等しく計算し、
前記第２の待ち時間パラメータが前記第１の閾値よりも大きく、かつ前記第１の待ち時間パラメータが前記第２の閾値より小さいかまたは等しい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第３の値に等しく計算し、
前記第２の待ち時間パラメータが前記第１の閾値より小さいかまたは等しく、かつ前記第１の待ち時間パラメータが前記第２の閾値より小さいかまたは等しい場合、前記選択回路はさらに、前記最終的な優先度パラメータを第４の値に等しく計算する
請求項１２または１３に記載の集積回路。
【請求項１５】
前記選択回路はさらに、前記最終的な優先度パラメータを前記第２の優先度パラメータに等しく計算する
請求項９から１４のいずれか１項に記載の集積回路。
【請求項１６】
システムコントローラ内のファーストイン／ファーストアウト（ＦＩＦＯ）コマンドキューを動的に管理するシステムであって、
１または複数のデータプロセッサと、
前記１または複数のデータプロセッサに命令して複数の段階を実行させるプログラミング命令が符号化されたコンピュータ可読メモリと、を含み、前記複数の段階は、
それぞれ優先度パラメータが関連づけられた１または複数のコマンドを、前記コマンドキューへと受信する段階と、
前記コマンドキュー内における1番初めに実行されるべき現コマンドであって、第１の優先度パラメータに関連付けられる前記現コマンドを決定する段階と、
前記１または複数のコマンドに関連付けられる優先度パラメータの中で最大である第２の優先度パラメータに関連付けられる第２のコマンドを決定する段階と、
少なくとも一部は前記第２の優先度パラメータに基づいて、前記現コマンドに対する最終的な優先度パラメータを計算する段階と、
前記最終的な優先度パラメータが予め定められた条件を満たす場合に、前記現コマンドを実行のために選択するべく前記最終的な優先度パラメータを出力する段階と
を含むシステム。
【請求項１７】
前記コンピュータ可読メモリに符号化された前記プログラミング命令は、前記１または複数のデータプロセッサに命令してさらなる複数の段階を実行させ、前記複数の段階は、
前記システムコントローラ内の第２のＦＩＦＯコマンドキュー内の第２の現コマンドに対する第２の最終的な優先度パラメータを計算する段階を含み、
前記最終的な優先度パラメータが前記第２の最終的な優先度パラメータよりも大きければ、前記最終的な優先度パラメータは前記予め定められた条件を満たし、前記現コマンドは実行のために選択される
請求項１６に記載のシステム。
【請求項１８】
前記コンピュータ可読メモリに符号化された前記プログラミング命令は、前記１または複数のデータプロセッサに命令してさらなる複数の段階を実行させ、前記複数の段階は、
前記システムコントローラ内の第２のＦＩＦＯコマンドキュー内の第２の現コマンドに対する第２の最終的な優先度パラメータを計算する段階と、
前記システムコントローラ内の第３のＦＩＦＯコマンドキュー内の第３の現コマンドに対する第３の最終的な優先度パラメータを計算する段階と、を含み、
前記最終的な優先度パラメータが、前記第２の最終的な優先度パラメータおよび前記第３の最終的な優先度パラメータの両方よりも大きければ、前記最終的な優先度パラメータは前記予め定められた条件を満たし、前記現コマンドを実行のために選択する
請求項１６または１７に記載のシステム。
【請求項１９】
前記現コマンドは、第１の待ち時間パラメータに関連付けられ、前記第１の待ち時間パラメータは前記コマンドキュー内の前記現コマンドの待機時間を示し、
前記第２のコマンドは、第２の待ち時間パラメータに関連付けられ、前記第２の待ち時間パラメータは前記コマンドキュー内の前記第２のコマンドの待機時間を示す
請求項１６から１８のいずれか１項に記載のシステム。
【請求項２０】
前記第２の待ち時間パラメータが、予め定められた閾値よりも大きい場合、前記最終的な優先度パラメータは第１の値に等しく計算され、
前記第２の待ち時間パラメータが、前記予め定められた閾値より小さいかまたは等しい場合、前記最終的な優先度パラメータは第２の値に等しく計算される
請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本開示は２０１２年１月２７日出願の米国仮特許出願第６１／５９１，７０５号の優先権と利益を主張しており、その開示全体をここに参照として組み込む。
【０００２】
本特許文献で説明される技術は、概してデータ処理に関し、特にデータ処理における優先制御に関する。
【背景技術】
【０００３】
メモリシステムはしばしば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）や、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）や、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３など）ＳＤＲＡＭなどの半導体メモリデバイスを備える。プロセッサや、周辺デバイス（例えば、入出力デバイス）や、オーディオおよびビデオデバイスなどのさまざまなソースデバイスは、メモリデバイスからソースデバイスへデータを送るリードメモリオペレーションや、ソースデバイスからメモリデバイスへデータを送るライトメモリオペレーションを含む、メモリオペレーションコマンドを生成し得る。通常、メモリコントローラは、ソースデバイスからメモリオペレーションコマンドを受信し、そしてコマンドに応答して、メモリデバイスを制御し、メモリオペレーションを実行すべく実装される。メモリコントローラはしばしば、メモリオペレーションコマンドを取り込み保存するコマンドキューを備える。
【０００４】
メモリオペレーションコマンドの優先度パラメータ（例えば、クオリティオブサービス（ＱｏＳ）パラメータ）は、コマンドの一部としてメモリコントローラへ送信され得る。メモリコントローラは、複数の異なるコマンドキューからのメモリオペレーションコマンドを調停し、それぞれの優先度パラメータに基づきこれらのコマンドの実行をスケジュールし得る。図１は、メモリオペレーションコマンドの実行をスケジュールするメモリコントローラの例である。メモリコントローラ１００のアービタコンポーネント１０８は、複数のコマンドキュー１０２からのメモリオペレーションコマンド１０４の実行を、メモリオペレーションコマンド１０４の優先度パラメータ１０６に基づきスケジュールする。図１に示すように、メモリコントローラ１００は、複数のコマンドキュー１０２にそれぞれ対応する複数のシステムインターフェースポート（ＳＩＰｓ）１１０を有する。コマンドキューは、それぞれが優先度パラメータ１０６（例えば、ＱｏＳ）を含む１または複数のメモリオペレーションコマンド１０４を格納する。各コマンドキューは、コマンドキューの最上部に位置し、ゆえに１番初めに処理されるべき現コマンドを有する。アービタコンポーネント１０８は、複数の異なるコマンドキューの現コマンドの優先度パラメータ（例えば、ＱｏＳ）を比較して、最も高い優先度パラメータを有する、処理されるべき１つの現コマンドを選択する。例えば、コマンドキューはしばしば、ファーストイン／ファーストアウト（ＦＩＦＯ）方式で動作する。すなわち、コマンドキューの現コマンドは、このコマンドキュー内の他のコマンドよりも早く受信されたコマンドだということである。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書で説明される教示に従い、システムコントローラのファーストイン／ファーストアウト（ＦＩＦＯ）コマンドキューを動的に管理するシステムと方法が提供される。１または複数のコマンドが、コマンドキューへと受信される。それぞれのコマンドは優先度パラメータに関連付けられる。コマンドキュー内における1番初めに実行されるべき現コマンドが決定される。現コマンドは第１の優先度パラメータに関連付けられる。第２の優先度パラメータと関連付けられる第２のコマンドが決定される。第２の優先度パラメータは、１または複数のコマンドに関連付けられる優先度パラメータの中で最大である。現コマンドに対する最終的な優先度パラメータが、少なくとも一部は第２の優先度パラメータに基づき計算される。
【０００６】
別の実施形態において、システムコントローラのファーストイン／ファーストアウト（ＦＩＦＯ）コマンドキューを動的に管理する集積回路は、それぞれ優先度パラメータが関連づけられた１または複数のコマンドを、コマンドキューへと受信すべく構成されるインターフェース回路と、コマンドキュー内における１番初めに実行されるべき現コマンドであって、第１の優先度パラメータと関連付けられる現コマンドを決定し、１または複数のコマンドと関連付けられる優先度パラメータの中で最大であるような第２の優先度パラメータに関連付けられる第２のコマンドを決定すべく構成される監視回路と、少なくとも一部は第２の優先度パラメータに基づいて、現コマンドに対する最終的な優先度パラメータを計算し、この最終的な優先度パラメータが予め定められた条件を満たす場合に、現コマンドを実行のために選択するべく、最終的な優先度パラメータを出力するように構成される選択回路と、を有する。
【０００７】
さらに別の実施形態では、システムコントローラのファーストイン／ファーストアウト（ＦＩＦＯ）コマンドキューを動的に管理するシステムは、１または複数のデータプロセッサと、１または複数のデータプロセッサに命令して複数の段階を実行させるプログラミング命令が符号化されたコンピュータ可読メモリと、を有する。この段階は、それぞれ優先度パラメータが関連づけられた１または複数のコマンドをコマンドキューへと受信する段階と、コマンドキュー内における1番初めに実行されるべき現コマンドであって、第１の優先度パラメータに関連付けられる現コマンドを決定する段階と、１または複数のコマンドに関連付けられる優先度パラメータの中で最大である第２の優先度パラメータと関連付けられる第２のコマンドを決定する段階と、を含む。この段階はさらに、少なくとも一部は第２の優先度パラメータに基づいて、現コマンドに対する最終的な優先度パラメータを計算する段階と、この最終的な優先度パラメータが予め定められた条件を満たす場合に、現コマンドを実行のために選択するべく、最終的な優先度パラメータを出力する段階と、を含む。
【図面の簡単な説明】
【０００８】
【図１】メモリオペレーションコマンドの実行をスケジュールするメモリコントローラの例を示す。
【０００９】
【図２】ＦＩＦＯコマンドキューの例を示す。
【００１０】
【図３】コマンドキュー内のコマンドに対する動的な優先度パラメータを生成する例を示す。
【００１１】
【図４】コマンドキュー内のコマンドに対する動的な優先度パラメータを生成する別な例を示す。
【００１２】
【図５】動的な優先度パラメータを生成するための、コマンドキュー内のコマンドのデータフィールドの例を示す。
【００１３】
【図６】コマンドキューに関連付けられる動的な優先度パラメータに基づいて、メモリオペレーションコマンドの実行をスケジュールするメモリコントローラの例を示す。
【発明を実施するための形態】
【００１４】
再び図１を参照すると、アービタコンポーネント１０８は、処理される最も高い優先度パラメータを有する複数の現コマンドのうちの１つを選択する。このように、特定のコマンドキュー内の現コマンドが低い優先度パラメータを有すれば、このような現コマンドは、処理され得るまで長時間待つ必要がある場合もある。このようなコマンドキュー内の他のコマンドは、たとえ高い優先度パラメータを有していたとしても、現コマンドによってブロックされる。
【００１５】
図２に、ＦＩＦＯコマンドキューの例を示す。高い優先度パラメータを有するコマンド（例えば、コマンド２０４）は、低い優先度パラメータを有する現コマンド２０２によってブロックされる。図２に示すように、メモリオペレーションコマンドは、順序管理のための識別番号（「ＩＤ」）と、メモリ内のデータにアクセスするためのメモリ場所を示すアドレス（「Ａｄｄｒ」）と、コマンドの緊急度を示す優先度パラメータ（「ＱｏＳ」）を有する。低い優先度パラメータ「１」（例えば、ＱｏＳ）を有するメモリオペレーションコマンド２０２は、コマンドキュー２００の最上部にとどまり、コマンドキュー２００の現コマンドである。現コマンド２０２は低い優先度パラメータを有するので、長時間処理され得ない。このように、たとえコマンドキュー２００内の他のコマンドが高い優先度パラメータを有していたとしても、これらは処理されない場合もある。例えば、別のメモリオペレーションコマンド２０４は、極めて高い優先度パラメータ「１５」（例えば、ＱｏＳ）を有する。しかしながら、コマンド２０４はコマンドキュー２００内の半ばに位置するので、コマンド２０４より前にあるすべてのコマンドが処理されるまで、処理されることはない。
【００１６】
一例として、液晶表示制御デバイス（ＬＣＤ）は、メモリのデータを読み出すコマンドを送信する。初めに、ＬＣＤバッファは表示される十分なデータを有しており、ＬＣＤコントローラは、低い優先度パラメータ（例えば、ＱｏＳ）を有するリードコマンドを、このＬＣＤに関連付けられるコマンドキューへ送信する。他のコマンドキューからのコマンドが、より高い優先度パラメータを有する可能性もあるので、メモリコントローラは直ぐにはこれらのリードコマンドを処理しない。後に、バッファが表示される十分なデータを有さない場合、ＬＣＤコントローラは、このＬＣＤに関連付けられる同じコマンドキューへ、高い優先度パラメータを有するリードコマンドを送信する。低い優先度パラメータを有する以前のリードコマンドは、実行を待ちながらコマンドキュー内に留まり、高い優先度パラメータを有する後続のリードコマンドをブロックする。そして、バッファに表示されるデータが無くなった場合、エラーが起き得る。
【００１７】
特定のシステムインターフェースポートにおける、仮想チャネル手法または、複数の物理的コマンドキューを用いるマルチチャネル手法は、この問題を改善する。異なる優先度パラメータを有するコマンドは、異なるコマンドキューへ取り込まれ、高い優先度パラメータを有するコマンドが、低い優先度パラメータを有するコマンドによってブロックされ得ないからである。しかしながら、仮想チャネル手法またはマルチチャネル手法を実装すると、非常に高価である。加えて、このような仮想チャネル手法またはマルチチャネル手法では、通常は異なる問題が生じる。
【００１８】
しばしばソースデバイスは、メモリ内の連続する数カ所にアクセスする必要がある。各場所へ、ソースデバイスは通常、コマンドを送信する。ソースデバイスからのこれらコマンドは、同じ識別番号を共有する。通常、メモリ内の宛先位置を連続してアクセスできるよう、これらのコマンドは送信された順に実行するのが好ましい。特定のシステムインターフェースポートに対する単一のＦＩＦＯコマンドキューは、１番に受信されたコマンドは１番に処理されるので、しばしば何の問題もなくこれを達成できる。しかしながら、仮想チャネル手法またはマルチチャネル手法では、同じ識別番号を有するコマンドが、しばしば異なる物理的コマンドキューへ送信される。通常、メカニズムを追加して、同じ識別番号を有するコマンドを順に実行する必要があるが、これはシステムの複雑さとコストを増大させる。
【００１９】
本開示は、コマンドキュー内のコマンドが、コマンドキューのステータスに従って、直ぐに処理され得る手法を提示する。図３に、コマンドキュー内のコマンドに対する動的な優先度パラメータを生成する例を示す。アービタコンポーネント３０２は、コマンドキュー３０６のステータスに基づいて決定された動的な優先度パラメータ３０４（「ＱｏＳ＿ａｒｂ」）を受信する。動的な優先度パラメータ３０４が、他のコマンドキューに関連付けられる他の優先度パラメータよりも高いならば、アービタコンポーネント３０２は、コマンドキュー３０６内の現コマンド３０８を処理すべく選択する。高い優先度パラメータを有するコマンドが、現コマンド３０８より遅れてコマンドキュー３０６へと受信される場合、動的な優先度パラメータ３０４の値が増加され、コマンドキュー３０６の処理を早める。高い優先度パラメータを有するコマンドが処理された場合、動的な優先度パラメータ３０４の値が低減され、コマンドキュー３０６の処理を遅くする。
【００２０】
具体的には、あるアルゴリズムが実装され、コマンドキュー３０６内の最も高い優先度パラメータを動的に決定し得る。最も高い優先度パラメータを有するコマンドが、どの程度長くコマンドキュー３０６内に留まったかが、動的な優先度パラメータ ３０４を決定する上で考慮され得る。一例として、コマンド３１８が、コマンドキュー３０６内で、最も高い優先度パラメータ３１６（「ＱｏＳ＿Ｍａｘ」）を有するよう決定される。コマンド３１８が、待ち時間閾値より長くコマンドキュー３０６内に留まれば、動的な優先度パラメータ３０４は、最も高い優先度パラメータ３１６（「ＱｏＳ＿Ｍａｘ」）に等しく決定される。一方、コマンド３１８が待ち時間閾値より長くコマンドキュー３０６内に留まっていない場合、動的な優先度パラメータ３０４は、最も高い優先度パラメータ３１６（「ＱｏＳ＿Ｍａｘ」）と現コマンド３０８に対する現在の優先度パラメータ３１４との合計の１／２に等しく決定される。あるいは、いくつかの状況下では、動的な優先度パラメータ３０４は、コマンド３１８がどの程度長くコマンドキュー３０６内に留まったかには関わらず、最も高い優先度パラメータ３１６（「ＱｏＳ＿Ｍａｘ」）に等しく決定される。
【００２１】
図４に、コマンドキュー内のコマンドに対する動的な優先度パラメータを生成する別の例を示す。図４に示すように、選択コンポーネント６１０（例えば、プログラマブルレジスタ）は、コマンドキュー６０６に対する動的な優先度パラメータ６０４の生成のため、マルチプレクサ６１２へ信号６２２（「ＱｏＳ＿ｓｅｌ」）を出力して、３つのモードのうちの１つを選択する。第１のモード下において、動的な優先度パラメータ６０４は、常にコマンドキュー６０６内の現コマンド６０８の現在の優先度パラメータ６１４に等しく決定される。第２のモード下では、動的な優先度パラメータ６０４は、常にコマンドキュー６０６内の最も高い優先度パラメータ６１６に等しく決定される。さらに、第３のモード下では、マルチプレクサ６１２は変更された優先度パラメータ６２０（「ＱｏＳ´」）を、動的な優先度パラメータ６０４として出力する。
【００２２】
例えば、変更された優先度パラメータ６２０は、最も高い優先度パラメータ６１６を有するコマンド６１８が、どの程度長くコマンドキュー６０６内に留まったかに基づいて決定され得る。コマンド６１８が、第１の待ち時間閾値より長くコマンドキュー６０６内に留まった場合、変更された優先度パラメータ６２０は、最大の優先度パラメータ６１６に等しく決定される。一方で、コマンド６１８が、第１の待ち時間閾値より長くコマンドキュー６０６内に留まった場合、変更された優先度パラメータ６２０は、最大の優先度パラメータ６１６と現在の優先度パラメータ６１４との合計の１／２に等しく決定される。
【００２３】
さらに、現コマンド６０８が、どの程度長くコマンドキュー６０６内に留まったかは、変更された優先度パラメータ６２０を決定する上で考慮される。例として、コマンド６１８が第１の待ち時間閾値より長くコマンドキュー６０６内に留まり、かつ現コマンド６０８が第２の待ち時間閾値より長くコマンドキュー６０６内に留まれば、変更された優先度パラメータ６２０は第１の値に等しく決定される。コマンド６１８が第１の待ち時間閾値より長くコマンドキュー６０６内に留まらず、かつ現コマンド６０８が第２の待ち時間閾値より長くコマンドキュー６０６内に留まれば、変更された優先度パラメータ６２０は第２の値に等しく決定される。コマンド６１８が第１の待ち時間閾値より長くコマンドキュー６０６内に留まり、かつ現コマンド６０８が第２の待ち時間閾値より長くコマンドキュー６０６内に留まらなければ、変更された優先度パラメータ６２０は第３の値に等しく決定される。加えて、コマンド６１８が、第１の待ち時間閾値より長くコマンドキュー６０６内に留まらず、かつ現コマンド６０８が第２の待ち時間閾値より長くコマンドキュー６０６内に留まらなければ、変更された優先度パラメータ６２０は第４の値に等しく決定される。例えば、第１の値および第３の値は、最大の優先度パラメータ６１６と等しく、第２の値および第４の値は、最大の優先度パラメータ６１６と現在の優先度パラメータ６１４との合計の１／２に等しい。
【００２４】
図５に、動的な優先度パラメータを生成する、コマンドキュー内のコマンドのデータフィールドの例を示す。コマンドキュー４００内の各コマンドは、動的な優先度パラメータ生成に関係する３つのデータフィールドを有する。この３つのデータフィールドは、コマンドが有効かどうかを示す有効性ファクタ（「Ｖ」）と、コマンドの待ち時間を示す待ち時間ファクタ（「ＷＴ」）（すなわち、どの程度長くコマンドがコマンドキュー４００内に留まるか）と、元の優先度パラメータ（「ＱｏＳ＿ｏｒｇ」）である。例えば、コマンドの有効性ファクタが１の場合、このコマンドは有効であり、有効性ファクタが０の場合、このコマンドは無効である。有効なコマンドがコマンドキュー４００へと受信される場合、このコマンドの待ち時間ファクタは、最大値に達するまで増加し始め、このコマンドがコマンドキュー４００からポップされる場合、クリアされる。リードポインタ４１０（「ｒｄ＿ｐｔｒ」）は現コマンド４１２を指し示し、現コマンド４１２がコマンドキュー４００からポップされる場合、１増加する。ライトポインタ４０８（「ｗｒ＿ｐｔｒ」）は、新たなコマンドの受信に対し、コマンドキュー４００内の次に利用可能な場所を指し示し、新たなコマンドが受信される場合、１増加する。例のように、コマンドキュー４００は循環ＦＩＦＯで管理される。
【００２５】
２次元アレイ、ＱｏＳ＿ｉｎｆｏ［Ｑ＿Ｓｉｚｅ−１：０］［Ｅｎｔｒｙ＿Ｓｉｚｅ−１：０］が定義され、動的な優先度パラメータを生成するための上記データフィールドの情報を格納する。Ｑ＿Ｓｉｚｅは、どれくらい多くのコマンドがコマンドキュー ４００内に格納可能かを示し、Ｅｎｔｒｙ＿Ｓｉｚｅは、有効性ファクタと待ち時間ファクタと元の優先度パラメータの大きさの合計を表す。
【００２６】
コマンドキュー４００内の有効なコマンドの最大の優先度パラメータは、次のように決定される： 
【数１】
2015505114.tif 000003
【００２７】
最大の優先度パラメータを有するコマンドの待ち時間ファクタは、次のように決定される： 
【数２】
2015505114.tif 000004
現コマンドの待ち時間ファクタは、次のように決定される： 
【数３】
2015505114.tif 000005
【００２８】
図４で議論された第１のモードに対して、動的な優先度パラメータは次のように決定される： 
【数４】
2015505114.tif 000006
第２のモードに対して、動的な優先度パラメータは次のように決定される： 
【数５】
2015505114.tif 000007
加えて、第３のモードに対しては、動的な優先度パラメータは第１の待ち時間閾値（「ＴＨＲ１」）および第２の待ち時間閾値（「ＴＨＲ２」）に基づいて、次のように決定される：
【表１】
2015505114.tif 000008
【００２９】
図６に、コマンドキューに関連付けられる動的な優先度パラメータに基づいて、メモリオペレーションコマンドの実行をスケジュールするメモリコントローラの例を示す。メモリコントローラ５００内のアービタコンポーネント５０２は、複数のコマンドキュー５０４からのメモリオペレーションコマンドの実行を、各コマンドキュー５０４にそれぞれ関連付けられる動的な優先度パラメータ５０６（「ＱｏＳ＿ａｒｂ」）に基づいてスケジュールする。アービタコンポーネント５０２は、複数のコマンドキュー５０４に関連付けられる動的な優先度パラメータ５０６（「ＱｏＳ＿ａｒｂ」）同士を比較して、最も高い動的な優先度パラメータを有するコマンドキュー内の現コマンドを、マルチプレクサ５１０を通して選択する。選択された現コマンドは、メモリコマンドスケジューラ５１２（例えば、ＤＤＲコマンドスケジューラ）へ出力され、処理される。コマンドキュー５０４は、複数のシステムインターフェースポート（ＳＩＰｓ）５０８にそれぞれ対応する。
【００３０】
ここに書かれた説明は、本発明を開示し、最適なモードを含み、また当業者が本発明を作り利用可能にする目的で、複数の例を用いる。本発明の特許性を有する範囲は、当業者が考え付く他の例も含み得る。例えば、本明細書で説明されるシステムおよび方法は、単一のコマンドキュー構造を有するどのようなシステムコントローラの優先制御に対しても実装され得る。例として、本明細書で説明されるシステムおよび方法は、システムオンチップ（ＳＯＣ）のモジュールまたはコンポーネントに、優先制御用に実装され得る。このモジュールまたはコンポーネントは、ＳＯＣファブリック（バスインターコネクト）や、ＰＣＩｅモジュールや、ＳＯＣのＵＳＢモジュールなどである。
【００３１】
例えば、本明細書で説明されるシステムおよび方法は、デバイス処理サブシステムによって実行可能なプログラム命令を有するプログラムコードにより、多くの異なる種類の処理デバイスに実装され得る。本明細書で説明される方法およびシステムを実行すべく構成されるファームウェアまたは適切に設計されたハードウェアなど、他の実装も使用され得る。別の例では、本明細書で説明されるシステムおよび方法は、コプロセッサとして、またはハードウェアアクセラレータとして、独立した処理エンジンに実装され得る。さらに別の例では、本明細書で説明されるシステムおよび方法は、本明細書で説明される方法のオペレーションを実行し、システムを実装するプロセッサによる実行に用いられる命令（例えば、ソフトウェア）を格納するコンピュータ記憶メカニズム（例えば、ＣＤ−ＲＯＭや、ディスケットや、ＲＡＭや、フラッシュメモリや、コンピュータのハードドライブなど）をはじめとする、多くの異なる種類のコンピュータ可読媒体に備えられ得る。
【図１】
2015505114.tif 000009
【図２】
2015505114.tif 000010
【図３】
2015505114.tif 000011
【図４】
2015505114.tif 000012
【図５】
2015505114.tif 000013
【図６】
2015505114.tif 000014
【国際調査報告】
2015505114.tif 000015
2015505114.tif 000016