(57)【要約】  データは、メモリバスが帯域幅の制限を受けている旨の判定が行われた場合は、圧縮モードで、メモリバスが帯域幅の制限を受けていない場合は、非圧縮モードでシステムメモリから取得される。帯域幅制限された状態の存在の判定は、メモリバスの使用率に基づいてもよく、またはメモリアクセス要求のキューの深さに従ってもよい。【選択図】図３
2013529813.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムが帯域幅制限状態で動作しているかどうかを判定することと、
前記帯域幅制限状態で動作している前記メモリシステムに応答して、圧縮アクセスモードでメモリからデータにアクセスすることと、
前記帯域幅制限状態で動作していない前記メモリシステムに応答して、非圧縮アクセスモードで前記メモリからデータにアクセスすることと、を含む、方法。
【請求項２】
所定のしきい値を超える前記メモリバス上のトラフィックに従って前記帯域幅制限状態が存在することを判定することをさらに含む、請求項１に記載の方法。
【請求項３】
所定のしきい値を超えるメモリアクセス要求のキューの深さに従って前記帯域幅制限状態が存在することを判定することをさらに含む、請求項１に記載の方法。
【請求項４】
前記圧縮アクセスモードでのデータ取得は、データブロックに対する各要求に応答して、前記メモリから縮小サイズのデータブロックを取得することを含み、前記非圧縮アクセスモードでのデータ取得は、データブロックに対する各要求に応答して、前記メモリからフルサイズのデータブロックを取得することを含む、請求項１に記載の方法。
【請求項５】
前記縮小サイズのデータブロックを取得後、前記縮小サイズのデータブロックが、前記縮小サイズのデータブロックと共に取得された情報から圧縮されているかどうかを調べるためにチェックすることと、圧縮されていない場合は、フルサイズのブロックを形成するために前記メモリから残りのデータを取得することとをさらに含む、請求項４に記載の方法。
【請求項６】
前記縮小サイズのデータブロックと関連がないメモリ要求を発行し、前記縮小サイズのデータブロックを取得することと、前記残りのデータを取得して前記フルサイズのデータブロックを形成することとの間に関連がないデータを取得することをさらに含む、請求項５に記載の方法。
【請求項７】
前記メモリ内のデータのブロックが前記メモリにおいて圧縮されているか、または圧縮されていないかに関する情報を格納することをさらに含む、請求項１に記載の方法。
【請求項８】
１つ以上のメモリシステム状態に応答して、帯域幅制限された動作状態が存在するかどうかを判定し、その表示を供給するための帯域幅制限判定論理と、
前記帯域幅制限判定論理に応答して、前記帯域幅制限判定論理によって、前記帯域幅制限された動作状態が存在すると判定された場合、圧縮モードで前記メモリからデータを取得し、前記帯域幅制限判定論理によって、前記帯域幅制限された動作状態が存在しないと判定された場合、フルアクセスモードで前記メモリからデータを取得するための、メモリアクセス制御論理と、を備える、装置。
【請求項９】
前記メモリアクセス制御論理は、要求されたそれぞれのデータブロックに対して縮小サイズのデータブロックにアクセスすることにより、圧縮モードでメモリ内の前記データを取得する、請求項８に記載の装置。 
【請求項１０】
前記帯域幅制限判定論理と前記メモリアクセス制御論理とを含むメモリコントローラが、前記縮小サイズのデータブロックが取得後に実際に圧縮されているかどうかをチェックし、前記縮小サイズのデータブロックが圧縮されていないことを前記チェックが示した場合、フルサイズのデータブロックを形成する残りのデータにアクセスするように構成される、請求項８に記載の装置。
【請求項１１】
前記メモリコントローラは、前記メモリに連結されたメモリバスの使用に基づいて、前記帯域幅制限された動作状態の存在を判定するように構成される、請求項１０に記載の装置。
【請求項１２】
前記メモリアクセス制御論理は、要求されたそれぞれのデータブロックに対するフルサイズのデータブロックにアクセスすることにより、前記フルアクセスモードでメモリ内のデータにアクセスするように構成される、請求項８に記載の装置。
【請求項１３】
メモリバス要求を含む要求キューをさらに備え、前記帯域幅判定論理は、前記要求キューの深さに従って、前記帯域幅制限された動作状態の存在を判定するように動作可能である、請求項８に記載の装置。
【請求項１４】
前記メモリアクセス制御論理と、前記帯域幅判定論理と、中央演算処理装置および前記メモリに連結された画像処理装置のうちの少なくとも１つとを含む、メモリコントローラをさらに備える、請求項８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータメモリおよびこのメモリに関連する帯域幅の利用に関する。
【背景技術】
【０００２】
メインメモリ圧縮構想の１つの一般的な目標は、メインメモリへのオフチップアクセスの帯域幅要件を軽減することである。任意のこのような方式では、メモリコントローラは、所与のデータ要求に対して、フルサイズのブロックを読み出す必要があるかどうか、また、ブロックが圧縮されている場合には縮小サイズを読み出す必要があるかどうかを知る必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
種々のメモリ圧縮手法が存在する。多くの構想では、種々のメインメモリブロックの「圧縮された、または圧縮されていない」状態を格納（またはキャッシュ）するために潜在的に大きなオンチップデータ構造が用いられている。メインメモリアクセスが、フルのメモリ要求サイズ、または縮小したメモリ要求サイズのどちらを使用すべきかを判定する前に、これらのオンチップ構造に対する問い合わせが行われる。このため、大きなメモリ量を圧縮する場合、大きなオンチップ構造が要求される。
【０００４】
別の解決策は、メインメモリ内のブロックの圧縮／非圧縮状態それ自体を問題のデータと共に符号化することである。例えば、この状態を符号化するために追加データビットを設けてもよく、あるいは、ＥＣＣビットの反転によりデータをタグ付けしてもよい。まずデータは、それが圧縮されているものと想定してアクセスされ、次いで、返されたデータが圧縮されていないことを示した場合、データの残り部分がアクセスされる。この手法は、非圧縮のデータへのアクセスに対する良好でない遅延を結果として生じることになる。なぜなら、この手法は、第２の要求が発行される前に第１の（想定された圧縮）データが返されるのを待機するメモリ要求を必要とするからである。
【課題を解決するための手段】
【０００５】
したがって、本発明の実施形態において、メモリへのアクセス時に帯域幅の制限状態が存在するかどうかに従って、圧縮されたアクセスモードおよびフルの（非圧縮の）アクセスモードのうちの１つでメモリからデータを取得することを含む方法が提供される。帯域幅が制限された状態の存在の判定は、例えばメモリバスの利用に基づいてまたはメモリアクセス要求のキューの深さに従って行ってもよい。
【０００６】
別の実施形態では、装置は、１つ以上のメモリシステム状態に応答して、帯域幅制限された動作状態が存在するかどうかを判定し、判定の表示を供給するための帯域幅制限判定論理を含む。メモリアクセス制御論理は、帯域幅制限判定論理に応答して、帯域幅制限された動作状態が存在することが帯域幅判定論理により判定されたとき、圧縮モードでメモリからデータを取得し、帯域幅制限された動作状態が存在しないことが帯域幅判定論理により判定されたとき、フル（非圧縮）アクセスモードでメモリからデータを取得する。圧縮モードでは、要求された個々のデータブロックに対して縮小サイズのブロックデータにまずアクセスすることによりデータが取得される。この最初の縮小サイズブロックがフルサイズのブロックに対する圧縮データを含まなければ、第２の縮小サイズのブロックデータが要求され、第１および第２の要求が一緒に受け取られて、フルサイズのデータブロックが結果的にもたらされることになる。フルアクセスモードでは、要求された個々のデータブロックに対してフルサイズのデータブロックが取得される。
【０００７】
別の実施形態では、メモリシステムが帯域幅制限モードで動作しているかどうかを判定することを含む方法が提供される。帯域幅制限モードで動作しているメモリシステムに応答して、メモリコントローラは、メモリシステムに応答して、圧縮されたアクセスモードでメモリからデータにアクセスする。帯域幅制限モードで動作していないメモリシステムに応答して、メモリコントローラは非圧縮のアクセスモードでメモリからデータにアクセスする。
【図面の簡単な説明】
【０００８】
本発明は、添付の図面を参照することにより、より完全に理解され、その多数の目的、機能、および利点が当業者に明らかになるかもしれない。
【図１】本発明の実施形態に係る帯域幅適応型メモリコントローラを組み込むシステムのブロック図を示す。
【図２】図１の帯域幅適応型メモリコントローラの部分の例示的な高レベルブロック図を示す。
【図３】本発明の実施形態の高レベルのフロー図を示す。
【０００９】
異なる図面における同じ参照記号の使用は同様のまたは同一の品目を示す。
【発明を実施するための形態】
【００１０】
図１を参照すると、本発明の実施形態を組み込んだコンピュータシステムのブロック図が示されている。このコンピュータシステムは、例えば、中央演算処理装置（ＣＰＵ）および／または画像処理装置（ＧＰＵ）１０１のようなプロセッサを備える。本システムは帯域幅適応型メモリコントローラ１０５とメモリ１０７を備える。動作状態で、メモリの要求率が十分に低く、したがって、多量の使用可能なメモリ帯域が存在する場合、メインメモリの圧縮を使用して帯域幅を節約することにより、最小限のパフォーマンス上の利点が得られることになる。また、メインメモリの要求率がメモリ帯域幅によって制限されるほど十分に高い場合の動作状態では、メモリ要件が経験する待ち時間も（待合せ遅延に起因して）きわめて高いものとなる。代替の実施形態では、デジタル信号プロセッサ、マイクロコントローラ等のような他のプロセッサの形で、（ＣＰＵおよび／またはＧＰＵとして例示的な実施形態に示されている）プロセッサを具現化してもよい。図１のコンピュータシステムは、ハンドヘルド型デバイス、ＰＤＡ、ノート型パソコン、デスクトップ型コンピュータ、サーバ、あるいはプロセッサおよびメモリを必要とする他の任意のシステムにおいて具現化されてもよい。
【００１１】
したがって、一実施形態は、問題のデータと共にメインメモリそれ自体にブロックの圧縮／非圧縮状態を符号化する。この符号化は、例えば追加データビットにより達成することが可能あり、または、ＥＣＣビットの反転により、もしくは何らかの他の適当なメカニズムにより圧縮されたものとしてこのデータはタグ付けされてもよい。メモリコントローラは、帯域幅制限を受けている動作領域に存在していないことを検出すると、常に非圧縮のフルデータサイズにアクセスする。したがって、圧縮済みのまたは非圧縮のデータにアクセスする待ち時間はほとんど同じになる。一方、メモリコントローラが帯域幅制約モードにあることをメモリコントローラが検出した場合、このコントローラは、データが圧縮されているものと想定して、まずデータにアクセスすることになり、返されたデータが圧縮されていないことを示した場合、データの残り部分へのアクセスが行われる。この手法は、非圧縮データへのアクセスに対する待ち時間の増加を結果としてもたらすことになるが、データが圧縮されている場合には帯域幅が節約される。この追加帯域幅は、他の要求に対しても利用可能であり、潜在的に待合せ遅延を減らすことになるため、待ち時間全体の影響を緩和する場合がある。帯域幅制限されたケースではメモリコントローラの有効な帯域幅を増加させることにより、メインメモリ圧縮から得られるパフォーマンス上の利点の大部分を得るはずである。
【００１２】
図２を参照すると、帯域幅制限されたメモリコントローラの部分のブロック図が示されている。メモリコントローラは、メモリバス１０９が帯域幅制限されているかどうか、および帯域幅判定論理２０１を使用するかどうかを判定する必要がある。１つの実施形態では、帯域幅判定論理２０１は、メモリバスの使用率を監視し、何らかの直近の処理ウィンドウ内で設定可能な時間の部分未満で、メモリバスが使用されている時間を検出する。この使用は時間ウィンドウにわたって採取したサンプルの平均値であってもよい。バスから、または、メモリアクセス制御論理２０５内の制御論理から直接バスの利用を監視してもよい。帯域幅判定論理は、メモリバスがそれを越えて帯域幅制限されていると考えられる使用率、および、メモリバスがそれ未満で帯域幅制限されていないと考えられる使用率を特定するプログラム可能なしきい値レジスター２０２を含んでもよい。時間ウィンドウもまたプログラム可能であってもよい。帯域幅判定論理２０１は、メモリアクセス制御論理２０５に対して、帯域幅制限された状態の存在を示す表示２０６を提供する。メモリアクセス制御論理２０５には、適切な制御信号と、メインメモリ１０７からデータを取得するためのインタフェース論理とを提供する周知の機能が含まれている。
【００１３】
代替的に、帯域幅判定論理２０１は、帯域幅制限された状態の存在を判定するための要求キュー２０３を監視する。要求キュー２０３は、メインメモリ１０７に対するメモリアクセス要求をキューに入れる。このキューの深さはメモリバスの使用率を示す。キューが深ければ深いほど、バスの利用率は高く、帯域幅制限された状態でメモリバスが動作している可能性が高い。ある実施形態では、帯域幅判定を評価する際に、要求キューおよび／またはバス利用率監視装置において読出しと書込みが区別されていない。他の実施形態、特に、メモリインタフェース上で一方向シグナリングを用いる実施形態では、読出しデータインタフェースが書込みデータインタフェースとは別個のものになっている場合がある。そのようなシステムでは、バス帯域幅監視装置またはキューの深さ監視装置は読出しのチェックのみを行う必要がある場合がある。
【００１４】
バスを監視する実施形態の場合のように、帯域幅制限状態を非帯域幅制限状態と区別するキューの深さのしきい値レベルは、しきい値レジスター２０２においてプログラム可能である場合がある。所定のまたはプログラム可能な時間ウィンドウにわたってキューの深さの平均値をとるようにしてもよい。実施形態によっては、帯域幅制限されたオペレーション状態の存在に関する追加的な保証を提供するために２つの手法を利用する場合もある。
【００１５】
本説明では、データブロックＤａｔａ１は、圧縮データブロックのサイズに対応する縮小サイズのデータブロックを表す。データブロックＤａｔａ１とデータブロックＤａｔａ２との組み合わせは、フルサイズの非圧縮データブロックを表す。帯域幅適応型メモリコントローラが、非帯域幅制限モードで動作している場合、例えば、キューの深さがしきい値レベルを下回り、帯域幅判定論理２０１はメモリアクセス制御論理２０５にその表示を提供する場合、一実施形態では、メモリアクセス制御論理は、フルサイズの非圧縮データブロック（Ｄａｔａ１およびＤａｔａ２）にアクセスするフルアクセスモードを示すように設定された制御論理のブロックサイズインジケータ２０７を有する。メモリコントローラがフルサイズのブロックにアクセスする（すなわち、メモリコントローラが帯域幅制限状態にない）とき、この結果得られるフルサイズのブロックはチェックされて、ブロックが圧縮または非圧縮のいずれの状態にあるかが調べられる。ブロックが圧縮されていなければ、メインメモリから返されたフルサイズのブロック（Ｄａｔａ１＋Ｄａｔａ２）は要求元へ返される。一方、ブロックが圧縮されたものであれば、メインメモリから返されたフルサイズのデータブロックの「Ｄａｔａ１」の部分は解凍され、要求元へ返されるが、これに対して、メインメモリから返されたＤａｔａ２の部分は破棄される。
【００１６】
帯域幅適応型メモリコントローラが帯域幅制限モードで動作しているとき、例えば、キューの深さがしきい値レベルを超えているとき、ブロックサイズインジケータ２０７は圧縮されたブロックサイズを示すように設定され、そして、メモリコントローラは、例えばＤａｔａ１のみなどの縮小サイズのデータブロックがメモリ要求の実行に応答してアクセスされる圧縮アクセスモードで動作する。圧縮チェック論理２０９は、ＥＣＣビット（または別の圧縮タグ）をチェックして、縮小サイズの取得されたブロックが実際に圧縮され、かつ、縮小サイズのブロックがＤａｔａ１の一時的なストレージ２１３に格納されているかどうかを判定する。ブロックが実際には圧縮されていなかった場合、圧縮チェックブロックは、要求をＤａｔａ２の要求キュー２１５に入れることによって、フルサイズのブロックの残り部分にアクセスする必要がある旨を伝える。メモリ要件は、Ｄａｔａ２の要求キューからメモリアクセス制御論理２０５により処理される。これらの要求は現在のブロックサイズ設定に関係なく固定サイズである。メインメモリから取得されたＤａｔａ２のデータ値は圧縮チェック論理へ戻されて、Ｄａｔａ１の一時記憶域から得られる関連データと、例えば図示されていない別の記憶域で、マージされ、完全な非圧縮データが結果として形成される。なお、Ｄａｔａ２の要求キュー２１５は図２において別個の要求キューとして示されてはいるが、いくつかの実施形態では、キュー２１５は要求キュー２０３の中へ組み込まれてもよい。
【００１７】
なお、本明細書に記載の手法は、メインメモリ内にデータと共に格納された「圧縮／非圧縮」のタグ情報を保持することに係る待ち時間についての欠点の制限を試みるものである（この試みによって圧縮状態を示すこれらのタグを保持したり、キャッシュしたりするための大きなオンチップ構造が不要になる）が、その一方で、メモリ圧縮を行うことが最も有利である場合に、メインメモリ圧縮の帯域幅の節約性能の利点を最大にする。
【００１８】
図３は、図１および２に示した実施形態に関連する例示的なフローチャートを示す。３０１において、帯域幅判定論理２０１は、メモリシステムが帯域幅制限モードで動作しているかどうかを判定する。動作していなければ、３０３でデータが非圧縮モード（フルサイズのブロック）で取得される。メモリコントローラがフルサイズのブロックにアクセスすると、この結果得られるフルサイズのブロックは３１５でチェックされて、ブロックが、圧縮されているか、圧縮されていないかが調べられる。３１５でのチェックによりブロックが圧縮されていないことが示された場合、３１９でメインメモリから返されたフルサイズのブロック（Ｄａｔａ１＋Ｄａｔａ２）が要求元へ返され、フローは３０１へ戻る。一方、ブロックが圧縮されたものであれば、３２１において、メインメモリから返されたフルサイズのデータブロックの「Ｄａｔａ１」の部分は、解凍されて、要求元へ返される一方で、メインメモリから返されたＤａｔａ２の部分は破棄され、システムは３０１へ戻って、次のメモリアクセスを待機する。システムが帯域幅制限モード（３０１のはい）で動作している場合、メモリコントローラは圧縮モードで作動して、３０５において縮小サイズのメモリブロックを取得する。このブロックを取得した後、メモリコントローラはメモリブロックに関連するタグ情報を読み出し（例えばＥＣＣビットをチェックし）、ブロックが実際に圧縮されたものであるかの判定を３０９において行う。圧縮されたものであれば、メモリコントローラはＤａｔａ１ブロックを解凍し、次いで、３１０において解凍済みブロックを要求元へ返し、次のメモリアクセスを求めて３０１へ戻る。ブロックが非圧縮のものであれば、メモリコントローラは、３１１においてフルサイズの非圧縮ブロックを形成するように求められる残りのデータを取得するために別のメモリアクセスの実行をする必要があり、３１９においてフルサイズのブロックを要求元へ返し、次いで、次のメモリアクセスを求めて３０１へ戻る。なお、図３のフローにおいて、任意の特定の読出し要求のために複数のデータブロックを読み出してもよい。なお、読出し要求が複数のデータブロック（このデータブロックのなかには圧縮されているものもある）を要求することも可能な場合がある。ある実施形態では、帯域幅制限モードの場合、いくつかのフルサイズのブロックの要求を行うために、メモリコントローラは、まず要求されたブロックのそれぞれに対して第１の縮小サイズのブロック（Ｄａｔａ１）を読み出し、次いで、非圧縮ブロックのそれぞれに対して条件付きの第２の縮小サイズのブロック（Ｄａｔａ２）を読み出す。
【００１９】
ある実施形態では、帯域幅制限モードで作動する場合、第１のアクセスによりブロックが圧縮されていないことが示されたたとき、縮小サイズのデータブロック（Ｄａｔａ１）に対する第１のアクセスと、第２の縮小サイズのデータブロック（Ｄａｔａ２）に対する（条件付きの）第２のアクセスとの間で、他の関連性のないメモリ要件を発行することが可能であると共に、この発行が望ましい場合がある。したがって、例えば、１つ以上の要求が第２の縮小サイズのブロックに対する要求キュー２１５の入力を要求する前に要求キュー２０３を入力したとき、要求キュー２１５内の要求が発行される前に１つ以上の要求を発行してもよい。
【００２０】
本発明の実施形態の説明に際して、回路および物理的な構造体が一般的に想定されてきたが、最新の半導体設計および製造において、物理的な構造体および回路が、この後に続く設計、シミュレーション、テストあるいは製造段階での使用に適したコンピュータ読取可能な記述的形態で具現化される場合があることは十分に認識される。構成例の個別の構成要素として示された構造および機能性を、組み合わされた構造または構成要素として実装してもよい。本発明の種々の実施形態は、回路、回路のシステム、関連する方法、および、本明細書に記載のような回路、システム、および方法についての、媒体上に符号化されたデータ（このような回路のＨＤＬ、ＶＥＲＩＬＯＧ、ＧＤＳＩＩデータなど）を有するコンピュータで読み取り可能な媒体を含むものとして考慮されている。コンピュータで読み取り可能な媒体としては、例えばディスク、テープ、または別の磁気的、光学的、もしくは電子的記憶媒体などの有形のコンピュータ読取可能な媒体が挙げられる。回路、システム、および方法についての、媒体上に符号化されたデータを有するコンピュータで読み取り可能な媒体に加えて、コンピュータで読取可能な媒体は実行命令ならびに本発明を実現するための利用可能なデータを格納してもよい。本明細書で説明した構造はプロセッサ上で実行するソフトウェア、ハードウェア上で実行するファームウェアを用いて、またはソフトウェア、ファームウェア、およびハードウェアの組み合わせにより実装されてもよい。
【００２１】
本明細書に記載の本発明の説明は例示的であり、以下の特許請求の範囲に記載のように、本発明の範囲を限定することを意図しない。例えば、メモリコントローラの機能を示すために種々の別個のブロックが図２に示されてはいるが、実際の実施構成は別様に機能を分散してもよく、また、機能のいくつかはメモリコントローラ以外の場所に常駐させることができる。本明細書に開示される実施形態の変形および変更は、以下の特許請求の範囲に記載される本発明の範囲を逸脱することなく、本明細書に記載の説明に基づいて行うことができる。
【図１】
2013529813.tif 000003
【図２】
2013529813.tif 000004
【図３】
2013529813.tif 000005
【国際調査報告】
2013529813.tif 000006
2013529813.tif 000007