(57)【特許請求の範囲】
【請求項１】
メモリ領域のグループへのアクセスを監視するステップであって、前記グループ内の各メモリ領域は、複数のデータバンクの夫々における部分を含む、ステップと、
前記グループ内のいずれかのメモリ領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出するステップと、
前記閾値を超えるアクセスのメモリ領域である前記高アクセスメモリ領域は、前記複数のデータバンクの夫々における前記部分にわたって分散されるデータ値を含み、該データ値に基づき符号化値を生成するステップと、
前記符号化値を符号化バンクに記憶するステップであり、前記符号化値が記憶されている前記符号化バンク内の符号化領域は、前記高アクセスメモリ領域に対応する、ステップと、
第１のメモリ要求及び第２のメモリ要求を受信するステップと、
前記第１のメモリ要求及び前記第２のメモリ要求について、前記複数のデータバンクのうちの第１のデータバンクに対するバンク競合が検出される場合に、前記第２のメモリ要求と、前記バンク競合に関連付けられたメモリ領域に対応する前記符号化バンク内の符号化領域に記憶されている符号化値とに基づいて、前記複数のデータバンクのうちの第２のデータバンクを決定するステップと、
１サイクルにおいて、（ｉ）前記第１のメモリ要求を満たすための前記第１のデータバンクへのアクセスと、（ｉｉ）前記第２のメモリ要求を満たすための前記第２のデータバンク及び前記符号化バンクへのアクセスとを含むアクセスをスケジューリングするステップと
を含む方法。
【請求項２】
前記複数のデータバンクは、前記第１のデータバンク及び前記第２のデータバンクを含む少なくとも２つのデータバンクを含み、前記高アクセスメモリ領域は、前記少なくとも２つのデータバンクの夫々における部分を含み、前記符号化バンクは前記少なくとも２つのデータバンクの夫々よりも小さく、
前記符号化値を生成するステップは、前記高アクセスメモリ領域に含まれる前記部分のうちの少なくとも２つの部分からのデータ値の線形結合を生成するステップを含む、
請求項１に記載の方法。
【請求項３】
前記符号化バンクを用いて、１サイクルにおいてサービス可能である前記高アクセスメモリ領域への並列メモリアクセスの数を、前記符号化バンクを用いない場合に可能な第１のアクセス数から第２のより大きいメモリアクセス数まで増やすステップ
を含む、請求項１又は２に記載の方法。
【請求項４】
前記符号化バンク内の符号化領域をエビクションするステップ
を含み、前記符号化値を前記符号化バンクに記憶するステップは、前記符号化値をエビクションされた前記符号化領域に記憶するステップを含む、
請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記第２のデータバンク及び前記符号化バンクへのアクセスによって得られた前記第２のデータバンクからのデータ及び前記符号化バンクからのデータに基づいて、データを再構築するステップと、
前記第２のメモリ要求に応答して前記再構築されたデータを返すステップと
を含む、請求項１乃至４のうちいずれか一項に記載の方法。
【請求項６】
前記第１のメモリ要求及び前記第２のメモリ要求について、前記複数のデータバンクのうちの前記第１のデータバンクに対する前記バンク競合を検出するステップと、
前記バンク競合に関連付けられたメモリ領域に対応する符号化領域が前記符号化バンク内に存在するか否かを決定するステップと
を更に含む、請求項１乃至５のうちいずれか一項に記載の方法。
【請求項７】
複数のデータバンクと、
符号化バンクと、
前記複数のデータバンク及び前記符号化バンクと結合されたメモリコントローラと、
を備えるシステムであって、
前記メモリコントローラは、（ｉ）メモリ領域のグループへのアクセスを監視するように構成され、前記グループ内の各メモリ領域は前記複数のデータバンクの夫々における部分を含み、各メモリ領域に含まれる前記部分は、各メモリ領域で異なり、（ｉｉ）前記グループ内のいずれかのメモリ領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出するように構成され、（ｉｉｉ）前記閾値を超えるアクセスのメモリ領域である前記高アクセスメモリ領域は、前記複数のデータバンクの夫々における前記部分にわたって分散されるデータ値を含み、該データ値に基づき符号化値を生成するよう構成され、（ｉｖ）前記符号化値を前記符号化バンクに記憶するように構成され、前記符号化値が記憶されている前記符号化バンク内の符号化領域は、前記高アクセスメモリ領域に対応し、
前記メモリコントローラは、
第１のメモリ要求及び第２のメモリ要求を受信するように構成され、
前記第１のメモリ要求及び前記第２のメモリ要求について、前記複数のデータバンクのうちの第１のデータバンクに対するバンク競合が検出される場合に、前記第２のメモリ要求と、前記バンク競合に関連するメモリ領域に対応する前記符号化バンク内の符号化領域に記憶されている符号化値とに基づいて、前記複数のデータバンクのうちの第２のデータバンクを決定するように構成され、
１サイクルにおいて、（ｉ）前記第１のメモリ要求を満たすための前記第１のデータバンクからのデータへのアクセスと、（ｉｉ）前記第２のメモリ要求を満たすための前記第２のデータバンク及び前記符号化バンクへのアクセスとを含むアクセスをスケジューリングするように構成される、
システム。
【請求項８】
前記複数のデータバンクは、前記第１のデータバンク及び前記第２のデータバンクを含む少なくとも２つのデータバンクを含み、前記高アクセスメモリ領域は、前記少なくとも２つのデータバンクの夫々における部分を含み、前記符号化バンクは前記複数のデータバンクの夫々よりも小さく、
前記メモリコントローラは、前記高アクセスメモリ領域に含まれる前記部分のうちの少なくとも２つの部分の線形結合を生成するよう構成される、
請求項７に記載のシステム。
【請求項９】
前記メモリコントローラは、前記符号化バンクを用いて、１サイクルにおいてサービス可能である前記高アクセスメモリ領域への並列メモリアクセスの数を、前記符号化バンクを用いない場合に可能な第１のアクセス数から第２のより大きいメモリアクセス数まで増やすように構成される、
請求項７又は８に記載のシステム。
【請求項１０】
前記メモリコントローラは、前記符号化バンク内の符号化領域をエビクションして、エビクションされた符号化領域を生成するように構成され、前記符号化値は前記エビクションされた符号化領域に記憶される、
請求項７乃至９のいずれか一項に記載のシステム。
【請求項１１】
前記メモリコントローラは、
前記第２のデータバンクからのデータ及び前記符号化バンクからのデータに基づいてデータを再構築して、再構築データを生成するように構成され、
前記第２のメモリ要求に応答して前記再構築データを返すように構成される、
請求項７乃至１０のうちのいずれか一項に記載のシステム。
【請求項１２】
前記メモリコントローラは、
前記第１のメモリ要求及び前記第２のメモリ要求について、前記複数のデータバンクのうちの前記第１のデータバンクに対する前記バンク競合を検出するように構成され、
前記バンク競合に関連付けられたメモリ領域に対応する符号化領域が前記符号化バンク内に存在するか否かを決定するように構成される、
請求項７乃至１１のうちいずれか一項に記載のシステム。
【請求項１３】
前記符号化バンクは２つ以上の符号化バンクを含む、
請求項７乃至１２のいずれか一項に記載のシステム。
【請求項１４】
符号化バンク及び複数のデータバンクと結合されたインタフェースと、
前記インタフェースと結合されたメモリコントローラと、
を備える装置であって、
前記メモリコントローラは、請求項１乃至６のいずれか一項に記載の方法を実行するように構成される、
装置。
【請求項１５】
請求項１乃至６のいずれか一項に記載の方法をコンピュータに実行させるプログラムが記憶された、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願との相互参照
本願は、“Dynamic  Coding  Algorithm  For  Intelligent  Coded  Memory  System”と題される米国特許出願第１４／８１１，３５７号（出願日：２０１５年７月２８日）に対する優先権を主張し、その全体が再現されているかのように参照により本明細書に組み込まれる。
【０００２】
本特許文書は、一般に、メモリアクセスのための技術及びシステムに関する。
【背景技術】
【０００３】
コンピュータシステムは、プログラムを実行し、入出力（Ｉ／Ｏ）デバイスとの間でデータ転送を容易にする、ランダムアクセスメモリ（ＲＡＭ）などのメモリを備えることができる。プログラムは、メモリからデータを読み込み、メモリにデータを書き込むための、ロード命令及びストア命令を含むことができる。
【０００４】
一部のシステムは、中央演算処理装置（ＣＰＵ）、ダイレクトメモリアクセス（ＤＭＡ）、ハードウェアアクセラレータ（ＨＡＣ）、デジタル信号プロセッサ（ＤＳＰ）など、１つ以上のソースからのメモリ要求を処理するためのメモリコントローラを含む。一部のシステムは、メモリアクセスを高速化するために、１つ以上のキャッシュを含む。要求されたデータがキャッシュにない場合、システムはメインメモリからデータにアクセスすることができる。メインメモリは複数のバンクを含むことができる。
【発明の概要】
【０００５】
本文書では、特に、メモリ領域の動的符号化に関連する技術が説明される。一態様では、記載される技術は、メモリ領域グループのアクセスを監視するステップであって、各領域はデータバンクグループの２つ以上の部分を含む、ステップと、メモリ領域グループの領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出するステップと、高アクセスメモリ領域に対応する符号化領域の符号化値を生成するステップであって、高アクセスメモリ領域は、バンクグループにわたって分散されるデータ値を含む、ステップと、符号化領域の符号化値を符号化バンクに記憶するステップと、を含む。
【０００６】
別の態様では、メモリ領域の動的符号化のためのシステムは、第１のデータバンク及び第２のデータバンクを含むデータバンクグループと、符号化バンクと、データバンク及び符号化バンクと結合されたメモリコントローラとを備えることができる。メモリコントローラは、メモリ領域グループへのアクセスを監視するように構成され、各領域はデータバンクの異なる部分を表わし、メモリ領域グループの領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出するように構成され、高アクセスメモリ領域に対応する符号化領域の符号化値を生成するように構成され、高アクセスメモリ領域は、データバンクにわたって分散されるデータ値を含み、符号化領域の符号化値を符号化バンクに記憶するように構成されることができる。
【０００７】
別の態様では、メモリ領域の動的符号化のための装置は、符号化バンク及びデータバンクグループと結合されたインタフェースと、インタフェースと結合されたメモリコントローラとを備えることができる。メモリコントローラは、メモリ領域グループへのアクセスを監視するように構成され、各領域はデータバンクの異なる部分を表わし、メモリ領域グループの領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出するように構成され、高アクセスメモリ領域に対応する符号化領域の符号化値を生成するように構成され、高アクセスメモリ領域は、データバンクグループにわたって分散されるデータ値を含み、符号化領域の符号化値を符号化バンクに記憶するように構成されることができる。インタフェースは、１以上のメモリバスと通信する回路を含むことができる。メモリコントローラは、符号化バンクを用いて、１サイクルにおいてサービス可能である高アクセスメモリ領域への並列メモリアクセスの数を、第１のアクセス数から第２以降のメモリアクセス数まで増やすように構成されることができる。
【０００８】
本文書に記載される主題の１つ以上の実施形態の詳細は、添付の図面及び以下の説明に記載される。主題の他の特徴、態様及び利点は、説明、図面及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】動的符号化のためのコンピュータシステムの例示的アーキテクチャである。
【図２】符号化ベース代替メモリアクセスロジックを有するメモリシステムの例のアーキテクチャである。
【図３】図２のメモリシステムに基づく符号化ベースの代替メモリの例である。
【図４】動的符号化生成プロセスの例のフローチャートである。
【図５】動的符号化生成プロセスの別の例のフローチャートである。
【図６】符号化ベース代替アクセスに関連付けられた要求競合解決及びメモリアクセスプロセスの例のフローチャートである。
【図７】コンピュータシステムの別の例のアーキテクチャである。
【発明を実施するための形態】
【００１０】
デスクトップコンピュータ、サーバ、スマートフォン、タブレット、ラップトップその他のデバイスなどのコンピューティングシステムは、頻繁にアクセスされるメモリ領域の日和見的な符号化のために、有効なメモリ帯域幅を増やすように構成することができる。メモリ（その構成要素であるデータバンクを含む）は、異なる領域に分割することができる。符号化ベース代替アクセス技術を可能にするために、頻繁にアクセスされる領域が決定され、オンザフライで符号化される。複数のコアで実行されるプログラムなどのプログラムは、高度にローカライズされたメッセージ要求を生成する可能性がある。このような要求は、バンク競合などのメモリリソースの競合を引き起こす可能性がある。高度にローカライズされたメモリ要求に対応するメモリ領域は、検出されると符号化される可能性があり、結果として生じる符号化領域は、１つ以上の符号化バンクに格納される。具体的にはメモリ要求の１つ以上についてデータバンクにアクセスするのではなく、符号化ベース代替アクセス技術は、データバンクからいくつかの要求を迂回させ、１つ以上の符号化バンクにアクセスし、符号化値と他の要求から得られた値とに基づいてデータを再構築することにより、それらをサービス提供することができる。
【００１１】
本明細書に記載の技術の具体的な実施形態は、以下の利点のうちの１つ以上を実現するように実施することができる。１つ以上の符号化バンクにおける高アクセスメモリ領域など、メモリの部分を動的に符号化することは、全体的な物理メモリの増加を最小限にして達成することができる。例えば、符号化バンクのサイズは、データバンクのサイズよりもかなり小さくすることができる。バンク競合は、同じ周期で符号化バンクを介して解決して、メモリ帯域幅を増加させることができる。更に、符号化領域を介して追加要求がサービスされて、メモリ帯域幅を増やすことができる。高頻度アクセス領域を動的に符号化することにより、未使用の符号化データの格納を低減又は排除することができる。
【００１２】
図１は、動的符号化のためのコンピュータシステム１０１の例示的アーキテクチャを示す。コンピュータシステム１０１は、プロセッサ１０５ａ〜ｂ、ダイレクトメモリアクセス（ＤＭＡ）ユニット１０７、デジタル信号プロセッサ（ＤＳＰ）１０９などの「メモリクライアント」を含むことができる。他の異なる種類のメモリクライアントも可能である。このようなメモリクライアントは、インターコネクト１１０と結合される。インターコネクト１１０は、共有メモリコントローラ１１５と結合することができる。共有メモリコントローラ１１５は、コマンドスキャナ及びパーサ１３０と、アービタ１３５と、コンバイナ及びスケジューラ１４０とを含むことができる。このようなメモリクライアントは、読出し要求や書込み要求などのメモリ要求を独立して生成することができる。この例では、コンピュータシステム１０１は、並行して最大Ｐ個のメッセージ要求を処理するように構成することができる。
【００１３】
メモリ要求は、コマンドスキャナ及びパーサ１３０を介してファンネルされる。走査及び構文解析の後、アービタ１３５は、データバンク１４５ａ〜ｎへのアクセスとの競合を低減又は最小化するための調停規則を適用する。調停規則は、データバンク１４５ａ〜ｎを含むシステム１０１の物理的限界に基づくことができる。例えば、このような規則は、バンクがクロックサイクル毎に１つの要求のみを処理できることを指定することができる。アービタ１３５は、キュー管理や調停などの低レベルのサービスを提供することができる。場合によっては、データバンク４５ａ〜ｎのうちの１つにアクセスすることによって、メモリ要求をサービス提供することができる。他の場合には、２つ以上のデータバンク１４５ａ〜ｎにアクセスすることによって、メモリ要求をサービス提供することができる。読取りについて、コンバイナ及びスケジューラ１４０は、異なるデータバンク１４５ａ〜ｎからのデータを連結するように構成することができる。書込みについて、コンバイナ及びスケジューラ１４０は、異なるデータバンク１４５ａ〜ｎにデータを分散するように構成することができる。
【００１４】
一部の実施では、プロセッサ１０５ａは、スケジューラ１２０を介して高レベルのメモリアクセスをスケジューリングすることができる。一部の実施では、プロセッサ１０５ａやスケジューラ１２０などのコンポーネントは、スーパーバイザ１２５、動的符号化コントローラ１０２、コマンドスキャナ及びパーサ１３０、アービタ１３５、コンバイナ及びスケジューラ１４０などの、様々なメモリサブシステムコンポーネントを制御することができる。一部の実施では、解決不可能なメモリ競合やメモリの読み書きエラーなどのイベントを、スーパーバイザ１２５を介してプロセッサ１０５ａに報告することができる。一部の実施において、スーパーバイザ１２５は、１つ以上の調停規則でアービタ１３５を構成することができる。
【００１５】
コンピュータシステム１０１は、効果的なメモリ帯域幅を増加させるために、頻繁にアクセスされるメモリ領域の日和見的な符号化のために構成することができる。メモリは異なる領域に分割することができる。動的符号化コントローラ１０２により、頻繁にアクセスされる「ホット領域」を決定し、オンザフライで符号化することができる。動的符号化コントローラ１０２は、符号化バンク１５０ａ〜ｍ内で一度に１つ又は複数の符号化領域を維持することができる。符号化領域は、同じメモリ領域に対応する異なるデータバンク１４５ａ〜ｎに格納された値のペアの線形結合を含むことができる。線形結合は、符号化値、例えば１つ以上の符号化ビットのグループとして格納することができる。メモリ領域が符号化領域１５０ａ〜ｍ内に格納された符号化領域を有する場合、複数の要求の間のバンク競合は、要求の１つを変更することによって解決して、代替データバンク及び符号化領域を使用することができる。一部の実施では、１つのデータバンクからの要求をサービスするために得られたデータは、符号化バンク１５０ａ〜ｍ内で１つ以上の符号化ビットを用いることにより、他のデータバンクに対する要求をサービスするために用いることができる。一部の実施では、コンバイナ及びスケジューラ１４０は、符号化ビットからデータ値を抽出するための符号化再構築ロジックを含むことができる。一部の実施では、符号化領域は、同じメモリ領域に対応する異なるデータバンク１４５ａ〜ｎに格納された３つ以上の値の線形結合を含むことができる。一部の実施では、符号化領域は、同じメモリ領域に対応する異なるデータバンク１４５ａ〜ｎに格納された２つ以上の値の非線形結合を含むことができる。
【００１６】
プロセッサ１０５ａ〜ｂ、ＤＭＡユニット１０７、ＤＳＰ１０９のようなメモリクライアント（マスタと呼ぶことができる）は、インターコネクト１１０を介して共有メモリコントローラ１１５と通信することができる。インターコネクト１１０は、１つ以上のバス、１つ以上のネットワーク（例えばパケット交換ネットワーク）又はそれらの組合わせなどの技術を含むことができる。一部の実施では、インターコネクト１１０における１つ以上のバスのバス幅は、他のバスと同じであっても異なってもよい。例えば、１つ以上のインターコネクト１１０のバスが１２８ビット幅であり、他のバスが２５６ビット幅であってよい。更に、１つのマスタは、インターコネクト１１０の１２８ビット幅のバス上で通信することができ、別のマスタはインターコネクト１１０の２５６ビット幅のバス上で通信することができる。一部の実施では、共有メモリコントローラ１１５は、マスタ（例えばプロセッサ１０５ａ〜ｂ、ＤＭＡユニット１０７、ＤＳＰ１０９）のうちの１つ以上に直接接続することができる。インターコネクト１１０は、データを転送するための１つ以上のプロトコルを用いることができる。一部の実施では、１つ以上のマスタは、高性能を達成するために共有メモリコントローラ１１５へのポイントツーポイント直接接続で構成することができる。
【００１７】
コンピュータシステム１０１内の１つ以上のコンポーネントは、共通の周波数でクロックされてもよく、独立してクロックされてもよく、又はそれらの組合わせであってもよい。一部の実施では、インターコネクト１１０に結合されたコンポーネントは同期してクロックすることができる。メモリ（例えばデータバンク１４５ａ〜ｎ、符号化バンク１５０ａ〜ｍ）及び共有メモリコントローラ１１５のクロック速度は、インターコネクト１１０に結合されたマスタのクロック速度に比例することができる。一部の実施では、インターコネクト１１０と結合されたコンポーネントは、非同期でクロックされることができる。このようなコンポーネントは異なる周波数でクロックすることができ、非同期でクロックされる場合は異なるクロック位相でクロックすることができる。例えば、一部の実施では、マスタは周波数Ｆでクロックすることができ、メモリ（例えばデータバンク１４５ａ〜ｎ、符号化バンク１５０ａ〜ｍ）及び共有メモリコントローラ１１５はＦ／２でクロックすることができる。Ｆは、整数や分数成分を含む数など、ゼロより大きい数であり得ることが理解される。或いは、一部の実施では、共有メモリはＦ／２でクロックすることができ、共有メモリコントローラはＦ／４でクロックすることができる。特定の実施のクロック速度は、様々な性能及び電力目標を満たすように調整することができる。一部の実施では、コマンドスキャナ及びパーサ１３０は、全てのマスタから読出し及び書込みのコマンドを受け取り、それらのターゲットアドレスに基づいてコマンドをアービタ１３５に配置する。
【００１８】
図２は、符号化に基づく代替メモリアクセスロジック２１４を有するメモリサブシステム２０１の例示的アーキテクチャを示す。メモリサブシステム２０１は、複数のデータバンク２４５ａ〜ｄを有するメモリ２４０へのアクセスを制御することができる。メモリ２４０は異なる領域に分割することができる。各領域はアドレス範囲に対応する。この例では、領域２６０のような領域は、データバンク２４５ａ〜ｄにわたってストリップされる。例えば、領域２６０は、データバンクＡ２４５ａの部分、データバンクＢ２４５ｂの部分、データバンクＣ２４５ｃの部分及びデータバンクＤ２４５ｄの部分を含む。データバンクの部分のサイズは全体のサイズよりも小さいことに留意されたい。一部の実施では、部分は、異なるアドレスサブ範囲に対応する。例えば、メモリアドレスの連続した範囲に対応する値は、それぞれのデータバンク２４５ａ〜ｄにわたって、線形又はインターリーブ形式で分散することができる。一部の実施では、メモリの複数の領域が存在してよく、その符号は符号化バンクを占有することができる。例えば、サイズが等しくない４つの不連続なメモリ領域が存在してよく、その符号は符号化バンクに格納される。符号のサイズは、符号化バンクのサイズ以下にすることができる。
【００１９】
メモリサブシステム２０１は、メモリ２４０に対するメモリサイクル毎に、最大Ｐ個のメモリアクセス、例えば読出しアクセス、書込みアクセス又は組合わせをサポートすることができる。Ｐは、０より大きい整数であってよい。一部の実施では、Ｐは、より多くのバンク、例えば、より多くのデータバンク２４５ａ〜ｄ、符号化バンク２５０ａ〜ｆ又はその両方を追加することにより、増加させることができる。場合によっては、メモリアクセスの最大数Ｐに達すると、競合のないメモリアクセスが要求されることがある。例えば、同じデータバンクにアクセスすることはできず、或いは、同じサイクル内で他のメモリ要求が満たされるか否かを先行して決定することができる。いくつかの実行環境では、メモリへのアクセスは、しばらくの間、個別のアドレス領域に高度にローカライズすることができる。これにより、データバンクへの同時アクセス数に物理的な制限がある場合、競合が発生することがある。しかしながら、この例では、競合するメモリアクセスは、メモリアクセスの最大数Ｐが達成できるような符号化ベースの代替メモリアクセス技術によって解決することができる。更に、メモリサブシステム２０１は、符号化ベースの代替メモリアクセス技術を採用することにより、他のメモリ要求が同じサイクル内で満たされ得るか否かを決定することができる。
【００２０】
メモリサブシステム２０１は符号化バンク２５０ａ〜ｆを含み、符号化バンク２５０ａ〜ｆは、データバンク２４５ａ〜ｄの高度にアクセスされるホット領域２６０内のデータに関連付けられた符号化領域を提供する。符号化領域の符号化値は、データバンク２４５ａ〜ｄ内の同じ行のデータ値の線形結合に基づくことができる。符号化バンク２５０ａ〜ｆの符号化領域は、符号化ベースの代替のメモリアクセス技術を可能にする。ここで、第１の符号化バンク２５０ａは、ホット領域２６０に属するデータバンクＡ２４５ａ及びデータバンクＢ２４５ｂ（例えばＡ＋Ｂ）におけるデータ値をカバーする符号化値を提供し、第２の符号化バンク２５０ｂは、ホット領域２６０に属するデータバンクＢ２４５ｂ及びデータバンクＣ２４５ｃ（例えばＢ＋Ｃ）におけるデータ値をカバーする符号化値を提供し、図示のように以下同様である。データバンク２４５ａ〜ｄと符号化値との間の他のマッピングも可能である。一部の実施は、符号化ビットのセットは、２つの異なるデータバンク２４５ａ〜ｄ内のデータビットの符号化関数（排他的論理和（ＸＯＲ）など）の出力である。
【００２１】
アービタ２１０は、メモリアドレスに基づいてデータバンク２４５ａ〜ｄへのトラフィックを調停することができる。コントローラ２３０は、符号化ベース代替アクセス技術に基づいて競合を検出し、且つ／又は追加要求にサービス提供する可能性を決定する、アドレススキャンロジック２１２を含む。符号化ベース代替アクセスロジック２１４は、符号化バンク２５０ａ〜ｆを介して競合を解決し、又は追加要求にサービス提供するための、変更された要求を生成することができる。符号化ベース代替アクセスロジック２１４は、代替データバンク２４５ａ〜ｄ及び符号化バンク２５０ａ〜ｆへの要求を生成することにより、競合するメモリ要求をターゲットデータバンク２４５ａ〜ｂに変更することができる。競合するメモリ要求の１つが未変更のターゲットのデータバンクに向かう一方、他の変更されたメモリ要求は、代替データバンク２４５ａ〜ｄ及び符号化バンク２５０ａ〜ｆに向かう。それにより、要求を同時に処理することができる。変更された要求に対してデータを返すために、データ値が再構築される。例えば、コントローラ２３０は、代替データバンク２４５ａ〜ｄ及び符号化バンク２５０ａ〜ｆからのデータを組み合わせることにより、変更されたメモリ要求の出力を再構築するための符号化再構築ロジック２３５を含む。
【００２２】
この例では、符号化バンク２５０ａ〜ｆは、ホット領域２６０についてのみ符号化値を格納する。したがってこの例では、メモリシステム２０１は、メモリ領域の全てについて符号化ビットを提供しない。一部の実施では、メモリシステム２０１は単一のホット領域２６０を管理する。メモリサブシステム２０１は、どの領域がホット領域２６０とみなされるかを動的に切り替えることができる。一部の実施では、メモリサブシステム２０１は、データバンク２４５ａ〜ｄのホット領域２６０を検出し、その後、符号化バンク２５０ａ〜ｆに格納するための符号化値を生成することができる。メモリサブシステム２０１は、ホット領域２６０が異なる領域に変更されることを検出することに基づいて、その新しい領域の符号化値を生成し、符号化バンク２５０ａ〜ｆの古い値を新しい値に置き換えることができる。一部の実施では、メモリサブシステム２０１は、２つ以上のホット領域２６０を管理し、２つ以上の対応する符号化領域の符号化値を符号化バンク２５０ａ〜ｆに格納する。符号化バンク２５０ａ〜ｆのサイズは、データバンク２４５ａ〜ｄのサイズよりもかなり小さくすることができる。一部の実施では、符号化記憶容量は、データメモリ容量の１０％、１５％又は２０％の割合であり、他の割合も可能である。一部の実施では、符号化バンク２５０ａ〜ｆは等しいサイズとすることができる。一部の実施では、符号化バンク２５０ａ〜ｆは、等しくないサイズとすることができる。
【００２３】
図３は、図２のメモリサブシステム２０１に基づく符号化ベースの代替メモリアクセスの例を示す。コントローラ２３０は、１つ以上のプロセッサから複数のメモリ要求３０５，３０６，３０７を受信することができる。例えば、２つのメモリ要求３０５，３０６がデータバンクＡ２４５ａに対してレディ状態である場合、コントローラ２３０のアドレススキャンロジック２１２はこの競合を検出することができる。メモリ競合イベントを引き起こす代わりに、コントローラ２３０内の符号化ベース代替アクセスロジック２１４は、符号化構成に基づいて、データバンクＡ２４５ａに対するメモリ要求３０６の１つを、変更されたメモリ要求３１０に変換することができる。符号化構成は、符号化バンク２５０ａ〜ｆのうちの少なくとも１つを用いることにより、データにアクセスする別の方法を指定することができる。この例では、符号化構成は、データバンクＡ２４５ａのデータがデータバンクＢ２４５ｂ及び符号化バンクＡ＋Ｂ２５０ａのデータにアクセスすることから再構築可能であることを指定することができる。一部の実施では、Ａ＋Ｂの＋演算子はＸＯＲを参照する。したがって、変更されたメモリ要求３１０は、データバンクＢ２４５ｂのためのメモリ要求３１２ａと、符号化バンクＡ＋Ｂ２５０ａのためのメモリ要求３１２ｂとを含む。
【００２４】
未変更のメモリ要求３０５のためのデータ３３０が返される。しかしながら、第２のメモリ要求３０６に対する戻りデータ３３１は、変更されたメモリ要求３１０に応答するデータから再構築することができる。コントローラ２３０の符号化再構築ロジック２３５は、Ｂデータ（データバンク２４５ｂから）及びＡ＋Ｂ符号化データ（符号化バンク２５０ａから）からＡデータを再構築して、メモリ要求３０６に対する戻りデータ３３１を形成することにより、変更されたメモリ要求３１０に応答するデータを出力することができる。
【００２５】
更に、追加要求３０７は、要求３０５，３０６と並行してサービス提供されてよい。ここで、追加要求３０７は、データバンクＣ２４５ｃのデータに対するものである。コントローラ２３０の符号化ベース代替アクセスロジック２１４は、符号化構成に基づいて、追加要求３０７を、変更された追加要求３１４に変換することができる。符号化構成は、符号化バンク２５０ａ〜ｆのうちの少なくとも１つを用いることにより、データにアクセスする別の方法を指定することができる。この例では、符号化構成は、データバンクＣ２４５ｃのデータが、符号化バンクＡ＋Ｃ２５０ｄと、要求３０５についてデータバンクＡ２４５ａからアクセスされたデータとから再構築可能であることを指定することができる。これはアクセス３０５に基づき、アクセス３０７はバンクＡの同じ行に対するものである。符号化再構築ロジック２３５は、Ａデータ（データバンクＡ２４５ａから）およびＡ＋Ｃ符号化データ（符号化バンク２５０ｄから）を再構築して追加要求３０７に対する戻りデータ３３４を形成することによって、変更された追加要求に応答してデータを出力することができる。なお、データバンクではなく符号化バンクを介して追加要求３０７にサービス提供することにより、コントローラ２３０は、他の要求３０５，３０６，３０７と同じサイクルでバンクＣ（図示なし）に対する更なる別の要求をスケジュールすることができる。
【００２６】
図４は、動的符号化生成プロセスの一例のフローチャートを示す。４０５において、プロセスは、メモリ領域グループへのアクセスを監視し、領域アクセスカウンタを更新することができる。メモリ領域へのアクセスは、カウンタをインクリメントすることができる。このプロセスは、メモリ領域のタプル、例えば［Start  Address，Length］を維持することができる。各領域は、開始アドレスと領域長又は終了アドレスによって定義される。特定のメモリ領域へのアクセスはヒットとみなされる。各ヒットは、対応するメモリ領域のアクセスカウンタをインクリメントすることができる。４１０において、プロセスは、メモリ領域のアクセスカウンタが閾値を超えているか否かを決定することができる。閾値を超えたカウンタがない場合、プロセスは４０５の監視に進む。メモリ領域のアクセスカウンタが閾値を超える場合、メモリ領域は「ホット領域」と呼ぶことができる。一部の実施では、閾値はプログラム可能である。一部の実施では、閾値は、メモリ領域のサイズの一部、例えば１／１６で定義することができる。一部の実施では、閾値は、領域への所定のアクセス数、例えばサイズ２，０４８バイトの領域への１０回のアクセスである。４１５において、プロセスは、ホット領域が既に格納された符号化領域を有するか否かを決定することができる。既に格納されている場合、プロセスは４０５の監視に進む。まだ格納されていない場合、プロセスは、４２０において、ホット領域に格納されたデータに基づいて、新しい符号化領域の符号化値を生成することができる。符号化値は、１つ以上の符号化ビットを含むことができる。符号化値の生成は、同じホット領域に対応する異なるデータバンクに格納された値のペアの線形結合を計算することを含むことができる。一部の実施では、メモリ領域は、２つ以上のデータバンクにわたって分散される少なくとも１つの行（例えば２つ以上のシーケンシャルなメモリ要素のグループ化）を含むことができる。一部の実施では、メモリ領域は２つ以上の行を含むことができる。行の線形結合を計算することは、その行に対応する異なるデータバンクに格納された値のペアを用いて、ＸＯＲ値などの符号化値を計算することを含むことができる。
【００２７】
４２５において、プロセスは、符号化バンクのどの符号化領域をエビクション（例えば除去や上書き）するかを決定することができる。この例では、符号化バンクは、２つ以上のホットメモリ領域に対応する２つ以上の符号化領域の符号化値を格納することができる。一部の実施では、プロセスは、ＬＲＵ（least  recently  use）ポリシー又はＦＩＦＯ（first-in  first-out）ポリシーを用いて、どの符号化領域をエビクションするかを決定することができる。一部の実施では、符号化バンクは、一度に１つのメモリ領域に対して１つの符号化領域を格納するので、４２５での決定は不要である。
【００２８】
４３０において、プロセスは、エビクションされた符号化領域に対応する領域に符号化値を格納することができる。符号化値を格納することは、エビクションされた符号化領域にデータを上書きすることを含むことができる。更に、プロセスは、メモリ領域に対するアクセスカウンタを調整することができる。一部の実施では、アクセスカウンタは、エビクションに基づいてリセットされる。一部の実施では、新しい符号化領域が選択されていることに基づいて、アクセスカウンタがリセットされる。このプロセスでは、符号化バンクを用いて、１サイクルにおいてサービス可能である高アクセスメモリ領域への並列メモリアクセスの数を、第１のアクセス数から第２以降のメモリアクセス数まで増やすことができる。
【００２９】
図５は、動的符号化生成プロセスの別の例のフローチャートを示す。コンピュータシステムは、チップレベルスケジューラやメモリコントローラ（ＭＣ）スケジューラなどのスケジューラを含むことができる。５０５において、ＭＣスケジューラはチップレベルスケジューラからメッセージを受信する。５１０において、プロセスは、符号化ベース代替アクセスを可能にする動的符号化のためにメモリ領域を選択するか否かを決定する。一部の実施では、動的符号化のためにメモリ領域を選択するか否かを決定することは、メモリ領域が他のメモリ領域と比較して高アクセスメモリ領域であるか否かを決定することを含むことができる。領域が選択されない場合、プロセスは５０５のメッセージ受信に進む。
【００３０】
メモリ領域が選択された場合、５１５で、１つ以上のスケジューラは、選択されたメモリ領域について通知される。５２０において、プロセスは、新しい符号化領域を収容する余地があるか否かを決定する。新しい符号化領域を収容する余地があるか否かを決定することは、符号化バンクに関連付けられたデータ構造をチェックして、未使用の符号化領域があるか否かを決定することを含むことができる。余地がない場合、プロセスは５２５において、ＬＲＵやＦＩＦＯなどのポリシーに基づいて符号化領域を除去する。
【００３１】
余地がある場合、又は符号化領域が除去された後、プロセスは、５３０において、符号化技術及び選択されたメモリ領域に基づいて、新しい符号化領域をバックグラウンドで生成する。符号化技術は、異なるデータバンクに格納された、メモリ要素（例えばバイトやワード）の異なるペア間のＸＯＲ値などの符号化値を生成することを含むことができる。他のタイプの符号化値も可能である。５３５において、プロセスは、符号化領域が生成されたことをＭＣスケジューラに通知する。５４０において、ＭＣスケジューラは、符号化ベース代替アクセスのためのアクセスを含むアクセスのスケジューリングを開始する。
【００３２】
ＭＣスケジューラは、符号化ベース代替アクセスを介して、選択されたメモリ領域内のデータバンクとの競合の解決を開始する。更に、ＭＣスケジューラは、符号化ベース代替アクセスを介して他のメモリ要求を満たすことができるか否かを決定することができる。例えば、ＭＣスケジューラは、データバンクグループの第１のデータバンクに対する第１のメモリ要求と、データバンクグループの第２のデータバンクに対する第２のメモリ要求とを受信することができる。ＭＣスケジューラは、第１のメモリ要求によって生成されたデータと、符号化バンクからの符号化値とに基づいて、第２の要求が満足できるか否かを決定することができる。満足できる場合、ＭＣスケジューラは、１サイクルにおいて、第１のデータ要求を満たすための第１のデータバンクからのデータへのアクセスと、第２のメモリ要求を満たすための第２のデータバンクの代わりの符号化バンクからのデータへのアクセスとをスケジューリングすることができる。
【００３３】
図６は、符号化ベース代替アクセスに関連付けられた要求競合解決及びメモリアクセスプロセスの例のフローチャートを示す。６０５において、プロセスは、第１の要求及び第２の要求を含むメモリ要求の中の、ターゲットバンクに対するバンク競合を検出する。競合を検出することは、要求のためのバンク識別子を決定することと、バンク識別子のいずれかが一致するか否かを決定することと含むことができる。６１０において、プロセスは、競合に関連付けられたメモリ領域が、符号化バンクの対応する符号化領域を有するか否かを決定する。一部の実施では、メモリ領域識別子は、符号化バンクに格納されている１つ以上の符号化領域に関連付けられた１つ以上の識別子のリストと照合される。存在しない場合、プロセスは６１５において、異なるサイクルの要求をスケジューリングし、名目上進行する。しかしながら、符号化領域が存在する場合、プロセスは、符号化ベースのメモリアクセス技術を用いて、メモリ要求のうち少なくとも１つを代替データバンク及び符号化領域に迂回させることにより、バンク競合を解決することができる。例えば、プロセスは、６２０において、第２の要求と符号化バンクの符号化構成とに基づいて、メモリ領域内の代替データバンクを決定する。一部の実施では、符号化構成は、２つ以上の符号化グループを指定し、各符号化グループは、データバンクグループ内の少なくとも２つのバンクをカバーする。一部の実施では、符号化構成は、所与の入力バンク識別子のための代替データバンク識別子及び符号化バンク識別子を出力するルックアップテーブルによって表される。
【００３４】
６２５において、プロセスは、代替データバンクへのアクセスと符号化バンクへのアクセスとを含む、変更された第２の要求を生成する。６３０において、プロセスは、第１の要求と変更された第２の要求とを同じサイクルでスケジューリングする。６３５において、プロセスは、同じサイクルで、要求を満たすためにメモリ及び符号化バンクにアクセスする。メモリ及び符号化バンクにアクセスすることは、第１の要求を満たすためにターゲットデータバンクにアクセスすることと、変更された第２の要求を満たすために代替データバンクと符号化バンク内の符号化領域とにアクセスすることと、を含むことができる。６４０において、プロセスは、第２の要求のためのデータを提供するために、代替データバンク及び符号化バンクからのデータに基づく再構築されたデータを含むデータを返す。
【００３５】
図７は、コンピュータシステム７０１の別の例示的アーキテクチャを示す。コンピュータシステム７０１は、コア７１０ａ〜ｎなどの複数のプロセッサ、符号化メモリコントローラ７１５、データバンク７２０ａ〜ｍ及び符号化バンク７３０ａ〜ｐを含むことができる。符号化メモリコントローラ７１５は、コア７１０ａ〜ｍ間のメモリアクセスを調停するためのコアアービトレータ７４０と、要求を格納するための各データバンク７２０ａ〜ｍに対するデータバンクキュー７４５ａ〜ｍと、データバンク７２０ａ〜ｍと符号化バンク７３０ａ〜ｐの間のアクセスを調整するアクセススケジューラ７５０とを含むことができる。コアアービトレータ７４０は、コア７１０ａ〜ｎから要求を受信し、それらの間で調停し、対応するデータバンク７２０ａ〜ｍを決定し、対応するキュー７４５ａ〜ｍに要求を挿入する。
【００３６】
アクセススケジューラ７５０は、各サイクルでデータバンク７２０ａ〜ｍへのアクセスをスケジューリングすることができる。アクセススケジューラ７５０は、各バンクの読出しキュー及び書込みキューを含むデータバンクキュー７４５ａ〜ｍを検査し、所与のサイクルで最も効率的な（例えばメモリ帯域幅を最大化する）アクセスパターンを形成することができる。アクセススケジューラ７５０は、キューの最下部で要求を優先順位付けすることができる。なお、要求は上部に挿入され、下部から削除される。アクセススケジューラ７５０は、キュー７４５ａ〜ｍを先読みして、サイクル当たりのアクセス数を最大にすることができるように、符号化ベース代替アクセス技術によって任意の要求がサービス提供され得るか否かを決定することができる。アクセススケジューラ７５０は、符号化バンク７３０ａ〜ｐを用いて、他のバンク７２０ａ〜ｍへの読出しをサービス提供することができる。例えば、アクセススケジューラ７５０は、データバンクＡ７２０ａから読み出される要求「ａ１」をマークすることができる。スケジューラ７５０は、他のバンク７２０ａ〜ｍ（例えばバンクＢ、Ｃ及びＤ）のキュー７４５ａ〜ｍを繰り返して、任意の読出し要求が、符号化バンク７３０ａ〜ｐの１つ以上から、ａ１の読取りからのデータを用いて、サービス提供され得るか否かを決定することができる。バンクＢに「ｂ１」に対する要求があり、ａ１＋ｂ１の線形結合を含む符号化バンクがある場合、アクセススケジューラ７５０は、「ｂ１」要求を「ａ１＋ｂ１」符号化バンク要求に置き換え、それから「ａ１＋ｂ１」値及び「ａ１」値からｂ１を再構築することができる。同様に、バンクＣの「ｃ１」に対する要求があり、ａ１＋ｃ１の線形結合を含む符号化バンクがある場合、アクセススケジューラ７５０は、「ｃ１」要求を「ａ１＋ｃ１」符号化バンク要求に置き換え、それから「ａ１＋ｃ１」値及び「ａ１」値からｃ１を再構築することができる。
【００３７】
メモリ領域の動的符号化の１つ以上の技術は、メモリ領域グループのアクセスを監視するステップであって、各領域はデータバンクグループの２つ以上の部分を含む、ステップと、メモリ領域グループの領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出するステップと、高アクセスメモリ領域に対応する符号化領域の符号化値を生成するステップであって、高アクセスメモリ領域は、バンクグループにわたって分散されるデータ値を含む、ステップと、符号化領域の符号化値を符号化バンクに記憶するステップと、を含むことができる。データバンクグループは、第１のデータバンク及び第２のデータバンクを含むことができる。高アクセス領域には、第１のデータバンクの第１の部分と、第２のデータバンクの第２の部分とを含むことができる。符号化バンクは、第１のデータバンクよりも小さくすることができる。符号化値の生成は、データ値のペアを生成するステップであって、各ペアは、第１の部分からのデータ値及び第２の部分からのデータ値を含む、ステップ、を含むことができる。一部の実施では、符号化バンクは２つ以上の符号化バンクを含む。技術は、符号化バンクを用いて、第１のアクセス数から第２のより多くのメモリアクセスへの１サイクルでサービス可能な高メモリ領域への並列メモリアクセスの数を増加させる技術は、符号化バンク内の符号化領域をエビクションすることを含むことができる。符号化値を符号化バンクに格納することは、符号化値をエビクションされた符号化領域に格納することを含むことができる。
【００３８】
技術は、データバンクグループの第１のデータバンクに対する第１のメモリ要求を受信するステップと、データバンクグループの第２のデータバンクに対する第２のメモリ要求を受信するステップと、第１のメモリ要求によって生成されたデータと、符号化バンクからの符号化値とに基づいて、第２の要求が満足できるか否かを決定するステップと、１サイクルにおいて、（ｉ）第１のメモリ要求を満たすための第１のデータバンクからのデータへのアクセスと、（ｉｉ）第２のメモリ要求を満たすための第２のデータバンクの代わりの符号化バンクからのデータへのアクセスとを含むアクセスをスケジューリングするステップと、を含むことができる。技術は、第１のデータバンクからのデータ及び符号化バンクからのデータに基づいて、データを再構築するステップと、第２のメモリ要求に応答して再構築されたデータを提供するステップとを含むことができる。
【００３９】
技術は、データバンクグループの第１のデータバンクに対するメモリ要求の間でバンク競合を検出するステップであって、メモリ要求は第１のメモリ要求及び第２のメモリ要求を含む、ステップと、第２のメモリ要求と符号化バンクの符号化構成とに基づいて、データバンクグループの第２のデータバンクを決定するステップと、サイクルにおいて、第１のメモリ要求を満たすために第１のデータバンクにアクセスするステップと、該サイクルにおいて、第２のメモリ要求を満たすために、第２のデータバンクと第１のデータバンクの代わりの符号化バンクとにアクセスするステップと、を含むことができる。技術は、第２のデータバンク及び符号化バンクからのデータに基づいて、データを再構築するステップと、第２のメモリ要求に応答して再構築されたデータを提供するステップと、を含むことができる。符号化構成は２つ以上の符号化グループを指定することができ、各符号化グループは、データバンクグループ内の少なくとも２つのバンクをカバーする。技術は、データバンクグループの第１のデータバンクに対するメモリ要求のグループにおいて、バンク競合を検出するステップと、バンク競合に関連付けられたメモリ領域に対応する符号化バンクに符号化領域が存在するか否かを決定するステップと、符号化ベース代替メモリアクセス技術を用いて、メモリ要求のうち少なくとも１つを代替データバンク及び符号化領域に転向させることにより、バンク競合を解決するステップと、を含むことができる。
【００４０】
システムは、第１のデータバンク及び第２のデータバンクを含むデータバンクグループと、符号化バンクと、データバンク及び符号化バンクと結合されたメモリコントローラとを含むことができる。メモリコントローラは、メモリ領域グループへのアクセスを監視するように構成され、各領域はデータバンクの異なる部分を表わし、メモリ領域グループの領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出するように構成され、高アクセスメモリ領域に対応する符号化領域の符号化値を生成するように構成され、高アクセスメモリ領域は、データバンクにわたって分散されるデータ値を含み、符号化領域の符号化値を符号化バンクに記憶するように構成されることができる。高アクセス領域は、第１のデータバンクの第１の部分と、第２のデータバンクの第２の部分とを含むことができる。符号化バンクは第１のデータバンクよりも小さくてよい。メモリコントローラは、データ値のペアを生成するように構成されることができ、各ペアは、第１の部分からのデータ値及び第２の部分からのデータ値を含む。メモリコントローラは、専用ロジック、プロセッサ、又はその両方などの回路を含むことができる。一部の実施では、符号化バンクは２つ以上の符号化バンクを含むことができる。
【００４１】
一部の実施では、メモリコントローラは、符号化バンクを用いて、１サイクルにおいてサービス可能である高アクセスメモリ領域への並列メモリアクセスの数を、第１のアクセス数から第２以降のメモリアクセス数まで増やすように構成される。一部の実施では、メモリコントローラは、符号化バンク内の符号化領域をエビクションして、エビクションされた符号化領域を生成するように構成される。符号化値はエビクションされた符号化領域に格納される。
【００４２】
一部の実施では、メモリコントローラは、データバンクグループの第１のデータバンクに対する第１のメモリ要求を受信するように構成され、データバンクグループの第２のデータバンクに対する第２のメモリ要求を受信するように構成され、第１のメモリ要求によって生成されたデータと、符号化バンクからの符号化値とに基づいて、第２の要求が満足できるか否かを決定するように構成され、１サイクルにおいて、（ｉ）第１のメモリ要求を満たすための第１のデータバンクからのデータへのアクセスと、（ｉｉ）第２のメモリ要求を満たすための第２のデータバンクの代わりの符号化バンクからのデータへのアクセスとを含むアクセスをスケジューリングするように構成される。一部の実施では、メモリコントローラは、第１のデータバンクからのデータ及び符号化バンクからのデータに基づいてデータを再構築するように構成され、第２のメモリ要求に応答して再構築データを提供するように構成される。
【００４３】
一部の実施では、メモリコントローラは、データバンクグループの第１のデータバンクに対するメモリ要求の間でバンク競合を検出するように構成され、メモリ要求は第１のメモリ要求及び第２のメモリ要求を含み、第２のメモリ要求と符号化バンクの符号化構成とに基づいて、データバンクグループの第２のデータバンクを決定するように構成され、サイクルにおいて、第１のメモリ要求を満たすために第１のデータバンクにアクセスするように構成され、該サイクルにおいて、第２のメモリ要求を満たすために、第２のデータバンクと第１のデータバンクの代わりの符号化バンクとにアクセスするように構成される。メモリコントローラは、第２のデータバンク及び符号化バンクからのデータに基づいてデータを再構築するように構成され、第２のメモリ要求に応答して再構築データを提供するように構成されることができる。一部の実施では、メモリコントローラは、データバンクグループの第１のデータバンクに対するメモリ要求のグループにおいて、バンク競合を検出するように構成され、バンク競合に関連付けられたメモリ領域に対応する符号化バンクに符号化領域が存在するか否かを決定するように構成され、符号化ベース代替メモリアクセス技術を用いて、メモリ要求のうち少なくとも１つを代替データバンク及び符号化領域に転向させることにより、バンク競合を解決するように構成される。
【００４４】
一実施形態では、メモリアクセスシステムは、メモリ領域グループのアクセスを監視する監視手段であって、各領域はデータバンクグループの２つ以上の部分を含む、監視手段と、メモリ領域グループの領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出する検出手段と、を備える。本システムは更に、高アクセスメモリ領域に対応する符号化領域の符号化値を生成する符号化値生成手段であって、高アクセスメモリ領域は、データバンクグループにわたって分散されるデータ値を含む、符号化値生成手段と、符号化領域の符号化値を符号化バンクに記憶する記憶手段と、を備える。
【００４５】
メモリアクセス手段は、一実施形態では、データバンクグループが、第１のデータバンク及び第２のデータバンクを含むように構成される。高アクセス領域は、第１のデータバンクの第１の部分と、第２のデータバンクの第２の部分とを含む。符号化バンクは第１のデータバンクよりも小さい。符号化値を生成することは、データ値のペアを生成することであって、各ペアは、第１の部分からのデータ値と第２の部分からのデータ値とを含むことを含む。
【００４６】
装置は、符号化バンク及びデータバンクグループと結合されたインタフェースと、インタフェースと結合されたメモリコントローラとを備えることができる。メモリコントローラは、メモリ領域グループへのアクセスを監視するように構成され、各領域はデータバンクの異なる部分を表わし、メモリ領域グループの領域へのアクセスが閾値を超えるか否かに基づいて、高アクセスメモリ領域を検出するように構成され、高アクセスメモリ領域に対応する符号化領域の符号化値を生成するように構成され、高アクセスメモリ領域は、データバンクグループにわたって分散されるデータ値を含み、符号化領域の符号化値を符号化バンクに記憶するように構成されることができる。インタフェースは、１以上のメモリバスと通信する回路を含むことができる。メモリコントローラは、符号化バンクを用いて、１サイクルにおいてサービス可能である高アクセスメモリ領域への並列メモリアクセスの数を、第１のアクセス数から第２以降のメモリアクセス数まで増やすように構成されることができる。メモリコントローラは、データバンクグループの第１のデータバンクに対する第１のメモリ要求を受信するように構成され、データバンクグループの第２のデータバンクに対する第２のメモリ要求を受信するように構成され、第１のメモリ要求によって生成されたデータと、符号化バンクからの符号化値とに基づいて、第２の要求が満足できるか否かを決定するように構成され、１サイクルにおいて、（ｉ）第１のメモリ要求を満たすための第１のデータバンクからのデータへのアクセスと、（ｉｉ）第２のメモリ要求を満たすための第２のデータバンクの代わりの符号化バンクからのデータへのアクセスとを含むアクセスをスケジューリングするように構成され、第１のデータバンクからのデータ及び符号化バンクからのデータに基づいてデータを再構築するように構成され、第２のメモリ要求に応答して再構築データを提供するように構成されることができる。
【００４７】
この文書は多くの具体的な実施の詳細を含むが、これらは、任意の発明の範囲又は請求可能なものの限定ではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。この文書において別個の実施形態の文脈で説明された特定の機能は、単一の実施形態において組み合わせて実施することもできる。逆に、単一の実施形態の文脈で記載された様々な特徴も、別々に、或いは任意の適切なサブコンビネーションで、複数の実施形態において実施することができる。更に、特徴は、特定の組合わせで動作するものとして上述され、更にそのようなものとして最初に請求されることがあるが、特許請求された組合わせからの１つ以上の特徴は、いくつかの場合において、組合わせから切り取られることができ、請求された組合わせは、サブコンビネーションのサブコンビネーション又はサブコンビネーションの変形を対象とすることがある。
【図１】
0006754827.tif 000002
【図２】
0006754827.tif 000003
【図３】
0006754827.tif 000004
【図４】
0006754827.tif 000005
【図５】
0006754827.tif 000006
【図６】
0006754827.tif 000007
【図７】
0006754827.tif 000008