(57)【特許請求の範囲】
【請求項１】
複数のマスターコアプロセッサと、
複数のメモリバンクと、
１つまたは複数のコーディングバンクであって、前記１つまたは複数のコーディングバンクの各々が前記複数のメモリバンクの各々よりも小さい、１つまたは複数のコーディングバンクと、
前記メモリバンクに対する要求をキューイングする複数のバンクキューと、
前記マスターコアプロセッサおよび前記バンクキューの間に結合され、前記マスターコアプロセッサからの要求を受信し、前記要求を前記バンクキューに提供する、アービターと、
前記バンクキュー、前記メモリバンクおよび前記１つまたは複数のコーディングバンクの間に結合されて前記要求を処理し、前記１つまたは複数のコーディングバンクによってサービス可能な競合する要求が前記１つまたは複数のコーディングバンクに提供されるようにするアクセススケジューラと、
を含むシステム。
【請求項２】
前記要求を前記処理することは、前記要求を並行処理して、複数のコーディングバンクを介してメモリバンクからの情報への並列アクセスを許容することを含む、請求項１に記載のシステム。
【請求項３】
前記１つまたは複数のコーディングバンクにおけるデータは、第１の要求をサービスすることが、少なくとも１つの他のデータ片を前記メモリバンクから取得し、前記データを復号化するために前記少なくとも１つの他のデータ片を用いることにより、前記データを復号化することを含むように、符号化される、請求項１に記載のシステム。
【請求項４】
前記１つまたは複数のコーディングバンクのうちの一つにおける前記符号化されたデータは、排他的ＯＲ（ＸＯＲ）演算を介して符号化される、請求項３に記載のシステム。
【請求項５】
前記アービターは、前記バンクキューに格納された要求に対する先読み処理を用いて、データを前記１つまたは複数のコーディングバンクにロードするように構成されている、請求項１に記載のシステム。
【請求項６】
前記アービターはさらに、バックグラウンド処理を介して、書き込みに対してコードを記入および更新するように構成されている、請求項５に記載のシステム。
【請求項７】
前記１つまたは複数のコーディングバンクにおける前記データは、インターバンクコーディングスキームを用いて、前記コーディングバンクにおいて符号化される、請求項３に記載のシステム。
【請求項８】
前記１つまたは複数のコーディングバンクにおける前記データは、イントラバンクコーディングスキームを用いて、前記コーディングバンクにおいて符号化される、請求項３に記載のシステム。
【請求項９】
前記１つまたは複数のコーディングバンクにおける前記データは、イントラバンクおよびインターバンクコーディングスキームの組み合わせを用いて、前記コーディングバンクにおいて符号化される、請求項３に記載のシステム。
【請求項１０】
前記システムは無線基地局に配置される、請求項１に記載のシステム。
【請求項１１】
前記無線基地局はロングタームエボリューション（ＬＴＥ）基地局である、請求項１０に記載のシステム。
【請求項１２】
複数のメモリバンクの１つにおけるデータにアクセスする第１の要求を、第１のマスターコアから受信するステップと、
前記複数のメモリバンクの前記１つにおける前記データにアクセスするために、前記データへのアクセスが第２のマスターコアからの第２の要求を理由としてストールしているかを判定するステップであって、前記第２の要求は現在処理されている、ステップと、
前記データへの前記アクセスがストールしている旨の判定に対応して、複数のコーディングバンクの１つにおけるデータにアクセスすることにより前記第１の要求を処理するステップであって、各コーディングバンクは各メモリバンクよりもサイズにおいて小さい、ステップと、
を含む方法。
【請求項１３】
前記コーディングバンクの前記１つにおける前記データは、第１の要求を処理することが、少なくとも１つの他のデータ片を前記メモリバンクから取得し、前記データを復号化するために前記少なくとも１つの他のデータ片を用いることにより、前記データを復号化することを含むように、符号化される、
請求項１２に記載の方法。
【請求項１４】
前記複数のコーディングバンクの前記１つは、前記複数のコーディングバンクの前記１つにおけるデータをデータバンクからのデータとインタリーブすることによって、メモリバンクに格納される、請求項１２に記載の方法。
【請求項１５】
複数のバンクキューに格納された要求に対する先読み処理を用いて、データを前記複数のコーディングバンクにロードすることをさらに含む、請求項１２に記載の方法。
【請求項１６】
各バンクキューは異なるメモリキューに対応する、請求項１５に記載の方法。
【請求項１７】
マシンの少なくとも１つのプロセッサによって実行されると、
複数のメモリバンクの１つにおけるデータにアクセスする第１の要求を第１のマスターコアから受信することと、
前記複数のメモリバンクの前記１つにおける前記データにアクセスするために、前記データへのアクセスが第２のマスターコアからの第２の要求を理由としてストールしているかを判定することであって、前記第２の要求は現在サービスされている、ことと、
前記データへの前記アクセスがストールしている旨の判定に対応して、複数のコーディングバンクの１つにおけるデータにアクセスすることにより前記第１の要求をサービスすることであって、各コーディングバンクは各メモリバンクよりもサイズにおいて小さい、ことと、
を含む操作を前記マシンに行わせる命令を含むコンピュータ読み取り可能な記憶媒体。
【請求項１８】
前記複数のコーディングバンクの前記１つにおける前記データは、前記第１の要求をサービスすることが、少なくとも１つの他のデータ片を前記メモリバンクから取得し、前記データを復号化するために前記少なくとも１つの他のデータ片を用いることにより、前記データを復号化することを含むように、符号化される、請求項１７に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１９】
前記複数のコーディングバンクの前記１つにおける前記符号化されたデータは、排他的ＯＲ（ＸＯＲ）演算を介して符号化される、請求項１８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２０】
前記操作は、複数のバンクキューに格納された要求に対する先読み処理を用いて、データを前記複数のコーディングバンクにロードすることをさらに含む、請求項１７に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
本出願は、２０１５年７月２８日に出願され、発明の名称を「増大された効率のためのインテリジェントメモリアーキテクチャ」とする米国非仮特許出願第１４／８１０，８９５号による優先権を主張し、これはあたかもその全体において再現されているかのごとく参照により本明細書に組み込まれる。
【発明の概要】
【０００２】
メモリアクセスはコンピュータシステムにおけるプログラム実行の極めて重要な部分である。一般的には、１つまたは複数のプロセッサ（中央処理装置（ＣＰＵ）、グラフィックスプロセッシングユニット（ＧＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、ハードウェアアクセラレータ（ＨＡＣ）またはその他のプロセッサなど）は、メモリコントローラを介して様々なメモリバンクにアクセスする。近年マルチコアプロセッサの台頭がみられ、そこではメモリコントローラは複数の異なるプロセッサまたはコア（またマスタープロセッサともいわれる）からメモリバンクへのアクセスを制御する。プロセッサ速度およびプロセッサの数は増加しているが、しかしながら、メモリへのアクセス速度の比例的な増加はない。具体的には、複数のプロセッサが同時またはほぼ同時に同じメモリバンクへのアクセスを試みると、プロセッサの１つは、他のプロセッサからの要求がサービスされる間、待機する。プロセッサの数が増加するにつれて、アクセスの数および潜在的に競合するアクセスもまた増加し、メモリアクセス時間は悪化したままになる。
【図面の簡単な説明】
【０００３】
【図１】図１は、例示的実施形態に係る、メモリアクセスを制御するシステムを説明するブロック図である。
【図２】図２は、例示的実施形態に係る、インターバンクコーディングスキームを示すブロック図である。
【図３】図３は、例示的実施形態に係る、インターバンクコーディングスキームおよびイントラバンクコーディングスキームの組み合わせを示すブロック図である。
【図４】図４は、代替的な例示的実施形態に係る、インターバンクコーディングスキームを示すブロック図である。
【図５】図５は、別の代替的な例示的実施形態に係る、インターバンクコーディングスキームを示すブロック図である。
【図６】図６は、例示的実施形態に係る、アクセススケジューラを、より詳細に、説明するブロック図である。
【図７】図７は、例示的実施形態に係る、読み出し要求を処理する方法を説明する流れ図である。
【図８】図８は、例示的実施形態に係る、書き込み要求を処理する方法を説明する流れ図である。
【図９】図９は、例示的実施形態に係る、メモリ内にバッファを割り当てる方法を説明する流れ図である。
【図１０】図１０は、例示的実施形態に係る、コーディングバンクのグループをスケジューリングおよび準備する方法を説明する流れ図である。
【図１１】図１１は、例示的実施形態に係るモバイル装置を説明するブロック図である。
【図１２】図１２は、コンピュータシステムの例示的な形式におけるマシンであって、ここに論じた方法論の任意の１つまたは複数をマシンに行わせるために命令がその内部で実行されることができるマシンのブロック図である。
【発明を実施するための形態】
【０００４】
以下の記載においては、添付の図面が参照され、それらはこの一部であり、一例として、実施されてもよい具体的な実施形態が示されている。これらの実施形態は、当業者がここに開示された主題を実施することができるように十分詳細に記載されており、他の実施形態が利用されてもよいこと、および、本開示の範囲を逸脱することなく構造的、論理的または電気的変更がなされてもよいことが理解されるべきである。例示的実施形態の以下の記載は、したがって、限定的な意味でとらえられるべきではなく、本開示の範囲は添付の請求項によって画定される。
【０００５】
ここに開示された機能またはアルゴリズムは、１つの実施形態において、ソフトウェアまたはソフトウェアおよび人間により実現される手続きの組み合わせにおいて実装されてもよい。ソフトウェアは、１つまたは複数の非一時的メモリまたは、ローカルまたはネットワーク化された、他のタイプのハードウェアベースの記憶装置といったコンピュータにより読み取り可能な媒体またはコンピュータにより読み取り可能な記憶装置に格納されたコンピュータにより実行可能な命令からなるものであってもよい。さらに、そのような機能はモジュールに対応し、それらは、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組み合わせであってもよい。複数の機能が１つまたは複数のモジュールにおいて必要に応じて行われてもよく、記載された実施形態は単に例である。ソフトウェアは、デジタルシグナルプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、マイクロプロセッサ、または、パーソナルコンピュータ、サーバもしくはその他のコンピュータシステムといったコンピュータシステム上で動作する他のタイプのプロセッサで実行されてもよい。
【０００６】
例示的実施形態においては、複数のプロセッサのメモリアクセス効率は、追加的な冗長なメモリバンクを利用してパラレリズムを増加させることによって増加される。インテリジェントなメモリシステムは、符号化された形式にて格納されたデータの冗長性を付加することによって強化される。様々なプロセッサ（「マスター」ともいう）からのアクセス競合は、コーディングバンクとよばれる１つまたは複数の追加的なメモリバンクの利用によって低減されてもよい。格納された追加的なデータは、追加的なストレージスペースやアクセスオーバーヘッドを最小化しつつ格納されたデータについての冗長性を創出するために、圧縮された形式にてコーディングバンクに格納されてもよい。冗長なデータは、メモリバンクへのアクセスを正規化するために用いられてもよく、それにより、システム全体の効率性が増加される。
【０００７】
図１は、例示的実施形態に係る、メモリアクセスを制御するシステム１００を示すブロック図である。システム１００は、複数のマスターコア１０２Ａ〜１０２Ｎを含む。各マスターコア１０２Ａ〜１０２Ｎは、プロセッサであってもよい。例示的実施形態においては、各マスターコア１０２Ａ〜１０２Ｎは、マスターコアプロセッサ手段として実装される。幾つかの例示的実施形態においては、マスターコア１０２Ａ〜１０２Ｎのすべてが単一のチップの上で動作し、単一のプロセッサの複数のコアとして考えられてもよい。他の例示的実施形態においては、これらのマスターコア１０２Ａ〜１０２Ｎは、複数のチップまたは回路にわたって配置されていてもよい。アーキテクチャに関わらず、メモリバンク１０４Ａ〜１０４Ｎへのアクセスはメモリコントローラ１０６によって制御される。幾つかの例示的実施形態においては、実際には複数のメモリコントローラ１０６が存在し、そこでは各メモリコントローラ１０６が個々のメモリバンクを制御することに留意すべきである。
【０００８】
マスターコア１０２Ａ〜１０２Ｎは、インターコネクト１０８を介して共有メモリコントローラ１０６と通信する。インターコネクトは、１つまたは複数のバス、１つまたは複数のネットワーク（パケット交換網など）、または、バスおよびネットワークの何らかの組み合わせをもって実現されてもよい。インターコネクト１０８における様々なバスのバス幅は、他のバスと同じであってもなくてもよい。例えば、インターコネクトにおける幾つかのバスは１２８ビット幅であってもよく、これに対して他のものは２５６ビット幅である。このように、一例として１つのマスターコア１０２Ａ〜１０２Ｎが１２８バス上で通信してもよく、これに対して別のマスターは２５６ビットバス上で通信する。共有メモリコントローラ１０６は、１つの可能性として、マスターコア１０２Ａ〜１０２Ｎの１つまたは複数に直接的に接続されていてもよいことに留意されたい。また、インターコネクト１０８における様々なバスおよびネットワークは、同じまたは異なるプロトコルに準拠していてもよい。１つの例示的実施形態においては、マスターコア１０２Ａ〜１０２Ｎの１つまたは複数は、共有メモリコントローラ１０６へのポイントツーポイント直接接続にて構成されている。これが、ビートレベルアービトレーションの実施形態を利用した際に高いパフォーマンスを実現するのに役立つのが可能である。
【０００９】
図１においては、すべてのマスターコア１０２Ａ〜１０２Ｎ、データバンク１０４Ａ〜１０４Ｎおよびコーディングバンク１１０Ａ〜１１０Ｎを含む共有メモリならびに共有メモリコントローラ１０６は、共通の周波数でクロックされることができ、または、独立的にクロックされることができる。また、マスターコア１０２Ａ〜１０２Ｎ、データバンク１０４Ａ〜１０４Ｎおよびコーディングバンク１１０Ａ〜１１０Ｎを含む共有メモリならびに共有メモリコントローラ１０６は、同期的または非同期的にクロックされることができる。同期的にクロックされる場合、データバンク１０４Ａ〜１０４Ｎおよびコーディングバンク１１０Ａ〜１１０Ｎを含む共有メモリならびに共有メモリコントローラ１０６のクロック速度は、マスターコア１０２Ａ〜１０２Ｎに対するクロック速度に対して比例的である。追加的には、非同期的にクロックされる場合には、各々が、異なる周波数で異なるクロック位相にてクロックされることができる。例えば、１つの例示的実施形態において、マスターコア１０２Ａ〜１０２Ｎが周波数Ｆでクロックされていると仮定する。データバンク１０４Ａ〜１０４Ｎおよびコーディングバンク１１０Ａ〜１１０Ｎを含む共有メモリならびに共有メモリコントローラ１０６は、１／２Ｆでクロックされてもよい。別の例示的実施形態においては、データバンク１０４Ａ〜１０４Ｎを含む共有メモリは、１／４Ｆでクロックされてもよく、コーディングバンク１１０Ａ〜１１０Ｎは、１／２Ｆでクロックされてもよく、他方、共有メモリコントローラ１０６は１／４Ｆでクロックされてもよい。特定の実施形態のためのクロック速度は、パフォーマンスおよび電力の間でトレードオフとなりうるもので、デバイスをオーバークロッキングすることは概して電力の浪費であり、アンダークロッキングはレイテンシーをもたらす。
【００１０】
コマンド（読み取りおよび書き込み）スキャナおよびパーサー１１２は、すべてのマスターコア１０２Ａ〜１０２Ｎからのすべての読み取りおよび書き込みコマンドを取り、各コマンドをそれらの対象アドレスに基づいてアービター１１４内に置く。例示的実施形態においては、アービター１１４はアービター手段である。
【００１１】
メモリコントローラ１０６は、４つの部分、すなわち、前述したコマンドスキャナおよびパーサー１１２、前述したアービター１１４、複数のバンクキュー１１６Ａ〜１１６Ｎならびにアクセススケジューラ１１８に分けられる。アービター１１４は、マスターコア１０２Ａ〜１０２Ｎとのインタラクションの役割を担う。それは主として、マスターコア１０２Ａ〜１０２Ｎからの要求を調停し、マスターコア１０２Ａ〜１０２Ｎおよびメモリコントローラ１０６の間のハンドシェイキングの役割を担う。単一のアービター１１４が描かれているが、幾つかの例示的実施形態においては、バンク／キューの数に対応する複数のアービター１１４が存在し、他の例示的実施形態においては、読み取りのために１つのアービター１１４、および、書き込みのために別のアービター１１４が存在することに留意されたい。バンクキュー１１６Ａ〜１１６Ｎは、特定のメモリバンク１０４Ａ〜１０４Ｎに対する処理されるべき要求を保持するために用いられる。例示的実施形態においては、各バンクキュー１１６Ａ〜１１６Ｎは、特定のメモリバンク１０４Ａ〜１０４Ｎに対応する。特定のメモリバンク（例えばメモリバンク１０４Ｂ）へのアクセスが受信されると、それは、それがサービスされることができるまで対応するバンクキュー（例えばバンクキュー１１６Ｂ）に置かれる。本開示において用いられる用語「サービスされる」は、特定の要求がプロセッサによって処理されるプロセスを記述することを意図していることに留意すべきである。この処理は、典型的に、キューからの要求の除去（必要に応じて）、要求に対応するデータを判定すること、要求に対応するデータを取得すること、および、要求に対するレスポンスを形成および送信することを伴うであろう。
【００１２】
各バンクキュー１１６Ａ〜１１６Ｎに対応する単一のバンクキュー１１６Ａ〜１１６Ｎが本図には示されている一方、例示的実施形態においては、各バンクキュー１１６Ａ〜１１０Ｎは実際には読み出しキューおよび書き込みキューを含むことにも留意すべきである。読み出しキューは対応するメモリバンク１０４Ａ〜１０４Ｎから読み出すべき旨の要求を保持しており、他方、書き込みキューは、対応するメモリバンク１０４Ａ〜１０４Ｎへ書き込むべき旨の要求を保持している。
【００１３】
アクセススケジューラ１１８は、各メモリサイクルに対するアクセスパターンを形成する。それはまた、以下により詳細に説明されるであろう通り、メモリコントローラ１０６およびメモリバンク１０４Ａ〜１０４Ｎやコーディングバンク１１０Ａ〜１１０Ｎの間のハンドシェイクの役割を担う。例示的実施形態においては、アクセススケジューラ１１８は、アクセススケジューラ手段である。
【００１４】
コーディングバンク１１０Ａ〜１１０Ｎは、メモリバンク１０４Ａ〜１０４Ｎにおけるデータの幾つかのコピーを格納するために用いられる追加のバンクである。例示的実施形態においては、これらのコピーは、特化されたエンコーディングスキームを用いて圧縮された形式で格納されている。アクセススケジューラ１１８は、コーディングバンク１１０Ａ〜１１０Ｎを利用してアクセス効率を増大させる強化されたアクセススケジュールを作成するように設計されている。コードは一般的にコーディングバンク１１０Ａ〜１１０Ｎ（データバンクとは別個）に格納されることに留意すべきである、しかしながら、それらは、またコーディングスキームによって、データバンクに保持されることができる。換言すれば、例示的実施形態においては、コードがデータバンクに格納されてインタリーブされるコーディングスキームが存在する。このように、本開示の目的のため、コーディングバンクの概念は、正しいコーディングスキームを用いてデータバンクに包含させられることも可能であろうところの構成体である。
【００１５】
例示的実施形態においては、各コーディングバンク１１０Ａ〜１１０Ｎは、メモリバンク１０４Ａ〜１０４Ｎのいずれよりも小さい。これは、コーディングバンク１１０Ａ〜１１０Ｎを利用するのに必要な追加的なメモリの効率的な使用につながり、それにより、必要な追加的なメモリ量を最小化する。これは、例えば、各メモリバンク１０４Ａ〜１０４Ｎのフルコーディングカバレッジを単純に提供するような解決策とは対照的である。
【００１６】
例示的実施形態においては、各コーディングバンク１１０Ａ〜１１０Ｎは、メモリバンク１０４Ａ〜１０４Ｎからの既存のデータの効率的符号化のために予約されている。従来は、単一のメモリバンク１０４Ａ〜１０４Ｎへの複数のアクセスがマスターコア１０２Ａ〜１０２Ｎの１つまたは複数によって発行されると、ストールが生成される。これらのストールはバンク競合として知られ、特定のメモリバンク１０４Ａ〜１０４Ｎからの１つのみのアドレスが一度にアクセスできるという事実に起因する。例示的実施形態においては、コーディングバンク１１０Ａ〜１１０Ｎは、バンク競合からのストールを緩和するのを助けるために、対応するメモリバンク１０４Ａ〜１０４Ｎと同時的にアクセスされる。
【００１７】
コーディングバンク１１０Ａ〜１１０Ｎの符号化の精確な作用はメモリバンク１０４Ａ〜１０４Ｎのサイズおよびコーディングバンク１１０Ａ〜１１０Ｎのサイズに基づいて異なってもよい。
【００１８】
例示的実施形態においては、データをコーディングバンク１１０Ａ〜１１０Ｎに格納するために排他的ＯＲ（ＸＯＲ）関数が用いられる。これが、オーバーヘッドの複雑性を低減しコードの線形性を保持するように作用する。線形的なコードは機能性の最も広い範囲を提供する、なぜなら符号化または復号化のいずれについても、どのようなコードの順序であっても用いられてもよいからである。従属性の欠如は、設計がコーディングバンク１１０Ａ〜１１０Ｎを可能なかぎり最も柔軟な態様において用いることを許容する。追加的には、例示的実施形態においては、異なる重みが、ＸＯＲ関数のためにメモリ要素に付与されることができる。例えば、メモリ要素ａ0およびｂ0は、任意のガロア域に属する整数値αおよびβについてαａ0＋βｂ0として格納されることが可能であろう。別の設計検討は、コードを生成するための圧縮係数でありうるであろう。ＸＯＲは、２つ以上のメモリ要素に対して行われることができ、それにより、ＸＯＲが行われるメモリ要素の数が多いほど圧縮係数は大きい（そしてコードを復号化する際の複雑性も大きくなる）。例えば、それぞれ要素ａ0ないしａn、ｂ0ないしｂn、ｃ0ないしｃnおよびｄ0ないしｄnを保持する４つのメモリバンクＡ、Ｂ、ＣおよびＤがあると仮定する。コーディングバンクにおけるこれらの要素に対応する可能なコードは、
ａi＋ｂi、ｂi＋ｃi、ｃi＋ｄiおよびｃi＋ａi（ｉ＝０〜ｎ）
でありうるであろう。
ここに用いられている符号「＋」は、１つまたは複数の関係するデータにあわせて１つまたは複数の機能を行うことを意味することに留意すべきである。
【００１９】
このスキームは、コードを生成するために２つのメモリ要素の組み合わせを用いている。これは１００％追加のメモリオーバーヘッドを用いるが、それはまた、サイクルあたり１００％追加のメモリアクセス（すなわち、４つの追加のアクセス）を可能とする。別の設計は、コード：
ａi＋ｂi＋ｃi＋ｄi（ｉ＝０〜ｎ）
を生成するために４つのメモリ要素すべてを組み合わせることによってコードを圧縮することでありうるであろう。
【００２０】
この設計は、２５％メモリオーバーヘッドというコストでサイクルあたり１つの追加のアクセスを与える。しかしながら、デコーダはここで４番目の要素を復号化することができるために３つの要素を取得する必要がある。そうするとより多くのデータが単一のメモリロケーションにおいて圧縮されることができるであろうが、この圧縮は、追加的なアクセス時間および複雑性というコストを伴う。上述したスキームは異なるメモリバンク１０４Ａ〜１０４Ｎからの要素を用いてコーディングバンク１１０Ａ〜１１０Ｎを「符号化」する。これは、「インターバンクコーディング」とよばれてもよい。例示的実施形態においては、符号化の直交的な態様が提供され「イントラバンクコーディング」とよばれ、そこでは、同じバンクからのメモリ要素がコードを生成するために用いられる。追加的には、実施形態が予見され、そこではインターバンクおよびイントラバンクコーディング双方が用いられる。
【００２１】
図２ないし図５は、例示的実施形態に係る、異なるコーディングスキームを示すブロック図である。図２は、例示的実施形態に係る、インターバンクコーディングスキーム２００を示すブロック図である。この設計は、メモリバンク２０４Ａ〜２０４Ｈ内のメモリ２０２Ａ〜２０２Ｈの特定の行（row）を符号化し、これらのコードをコーディングバンク２０６Ａ〜２０６Ｌに格納するために、バッチコードの概念を用いる。これが、符号化された領域への複数のアクセスがコーディングバンク２０６Ａ〜２０６Ｌを用いて処理されることを許容する。このスキームをもって、所与の符号化された領域への最大で４つの読み出し要求が随時処理されることができる。図２に示すように、メモリバンク２０４Ａ〜２０４Ｈは、２つの領域２０８Ａおよび２０８Ｂに分けられる。各領域２０８Ａ、２０８Ｂは、メモリバンク２０４Ａ〜２０４Ｈの４つが割り当てられている。各領域２０８Ａ、２０８Ｂはまた、コーディングバンク２０６Ａ〜２０６Ｌの半分を割り当てられている。
【００２２】
このコーディングスキームは、符号化された領域への順次アクセスが発行された際に最大パフォーマンスを実現するように設計されている。最良のケースのアクセスの間は、１つのサイクルにおいて最大で１０個のパラレルアクセスが実現されることができる。メモリコントローラがａ1；ｂ1；ｃ1；ｄ1；ａ2；ｂ2；ｃ2；ｄ2；ｃ3；ｄ3へのアクセスを受信した場合のシナリオを考える。ここでは、ａ1；ｂ1；ｃ1；ｄ1は、メモリバンク２０４Ａからのａ1をコーディングバンク２０６Ａ、２０６Ｄ、２０６Ｂとともに用いて（それぞれａ1＋ｂ1；ｂ1＋ｃ1；ｃ1＋ｄ1）処理されることができ、ａ2；ｂ2；ｃ2；ｄ2は、メモリバンク２０４Ｂからのｂ2と、それぞれ、コーディングバンク２０６Ｃ、２０６Ｅおよび２０６Ｆからのａ2＋ｄ2；ｂ2＋ｄ2；ａ2＋ｃ2とを用いて処理されることができる。最後に、ｃ3およびｄ3は、それぞれ、メモリバンク２０４Ｃおよび２０４Ｄを用いて処理されることができる。
【００２３】
最悪の場合のシナリオでは、このコードスキームは、メモリバンク２０４Ａ〜２０４Ｈへの非順次的かつ非連続的アクセスがあるときにはサイクルにおいて４つのアクセスまで落ちる。例えば、ａ1、ｂ8、ｃ9、およびｄ15について要求があると仮定する。この組み合わせについてのコードはコーディングバンク２０６Ａ〜２０６Ｌには存在しないので、並列アクセスの利便性は利用されない。しかしながら、バンクキュー内を先読みして後続のアクセスのためにコーディングバンク２０６Ａ〜２０６Ｌからコードをプリフェッチするためにプリフェッチメカニズムが用いられることができる。
【００２４】
図３は、例示的実施形態に係る、インターバンクコーディングスキームおよびイントラバンクコーディングスキーム３００の組み合わせを示すブロック図である。この設計は、サイクルあたりのメモリバンクあたり、最大５つの読み出しアクセスを許容する。図２と同様に、図３は、メモリバンク３０４Ａ〜３０４Ｈ内のメモリ３０２Ａ〜３０２Ｈの特定の行を符号化し、これらのコードをコーディングバンク３０６Ａ〜３０６Ｊに格納するためにバッチコードの概念を用いる。注目すべきことに、この設計はまた、コーディングバンク３０６Ａ〜３０６Ｊのうち２つの領域３０８Ａ、３０８Ｂからのデータを混合し、その結果、コーディングバンク３０６Ａ〜３０６Ｊは領域に分割されない。このスキームにおけるデータは、インターバンクおよびイントラバンクコード双方を用いて符号化される。イントラバンクコードは、コーディングバンク３０６Ａ、３０６Ｂに格納される。これは、利用可能であれば、異なる領域３０８Ａ、３０８Ｂからのコーディングバンク３０６Ａ〜３０６Ｊの利用を許容する。
【００２５】
この設計は、符号化された領域への順次アクセスが発行された際に最大のパフォーマンスを提供する。最良の場合のシナリオにおいては、１サイクルにおいて最大１１個のパラレルアクセスが実現されることができる。メモリコントローラがａ１；ｂ１；ｃ１；ｄ１；ａ２；ｂ２；ｃ２；ｄ２；ａ３；ｂ３；ｃ３；ｄ３へのアクセスを受信した場合のシナリオを考える。ここでは、ａ１；ｂ１；ｃ１；ｄ１は、メモリバンク３０６Ｆからのａ１およびメモリバンク３０６Ｇからのｂ１をコーディングバンク３０６Ｄ、３０６Ｂ（ｂ１＋ｃ１；ｃ１＋ｄ１）とともに用いて処理されることができ、ａ２；ｂ２；ｄ２は、メモリバンク３０４Ｂからのｂ２をコーディングバンク３０６Ｃ（ａ２＋ｄ２）および３０６Ｅ（ｂ２＋ｄ２）とともに用いて処理されることができる。最後に、ａ３、ｃ２およびｄ３は、メモリバンク３０４Ａ、３０４Ｃおよび３０４Ｄを用いて処理されることができる。この場合に、１２個の要求のうちの１１個が、１クロックサイクル内で処理される。
【００２６】
このコードスキームは、符号化された領域における１つのデータバンクについてサイクルあたり最大で５つの読み出しアクセスを行うことができる。これらは、メモリバンク３０４Ａ〜３０４Ｈへの非順次的かつ非連続的なアクセスである。例えば、アクセスパターンがｄ1；ｄ6；ｄ9；ｄ15；ｄ20であるとき、それは、ｄ1をコード領域ＩＩにおける一番下のコーディングバンクから読み出してもよく、コード領域ＩＩでは、それは、コード領域Ｉ内の元のデータバンクからのｄ1、ｄ6を格納し、ａ9およびａ9＋ｄ9を読み出してｄ9を得、ｂ15およびｂ15＋ｄ15を読み出してｄ15を得、ｃ20およびｃ20＋ｄ20を読み出してｄ20を、すべてコード領域Ｉおよびその関連付けられたコーディングバンクから得る。プリフェッチメカニズムは、キューを先読みしてさらなるアクセスのためにコーディングバンク３０６Ａ〜３０６Ｊからコードをプリフェッチするために用いられることができる。
【００２７】
図４は、代替的な例示的実施形態に係るインターバンクコーディングスキーム４００を示すブロック図である。ここでは、９つのメモリバンク４０２Ａ〜４０２Ｉおよび９つのコーディングバンク４０４Ａ〜４０４Ｉが用いられる。コーディングスキーム４００はまた、比較的より高い３の局所性を有する。これは、メモリコントローラが３つのデータ要素のうち２つを取得して３番目を復号化してもよいことを意味する。これはまた、サイクルあたりのバンクあたりの同時的読み出しアクセスの最大数、および、サイクルあたりバンクあたりの２つの同時的書き込みアクセスを可能とする。メモリオーバーヘッドは、さきの設計よりは小さいが、増大された局所性を理由とした高い論理的複雑性が存在する。
【００２８】
幾つかの例示的実施形態においては、何らかの整数ｎについて２n個のバンク数を維持することが望ましいかもしれない。これに照らして、９バンク設計は望ましくないかもしれない。図５は、別の代替的な例示的実施形態に係るインターバンクコーディングスキーム５００を示すブロック図である。ここでは、９つではなく８つのメモリバンク５０２Ａ〜５０２Ｈが存在している。コードは、非バイナリコードを削減することによって実現されることができる。９つのコーディングバンク５０４Ａ〜５０４Ｉが存在する。コーディングバンクのうちの３つ、具体的にはコーディングバンク５０４Ｃ、５０４Ｆおよび５０４Ｇは、２の局所性を有し、他方、残りのコーディングバンク５０４Ａ、５０４Ｂ、５０４Ｄ、５０４Ｅ、５０４Ｈおよび５０４Ｉは３の局所性を有する。
【００２９】
図１を再度参照すると、アービター１１４は、マスターコア１０２Ａ〜１０２Ｎからの要求を処理する役割を担う。アクセススケジューラ１０８は、各サイクルについて最も効率的なアクセスをスケジューリングする。
【００３０】
アービター１１４は、マスターコア１０２Ａ〜１０２Ｎの各々に対してキューを維持する。各キューの深さは固定されてもよい（例えば８つの要求）。キューがいっぱいになると、メモリコントローラ１０６は、それぞれのマスターコア１０２Ａ〜１０２Ｎに対してそれがビジーであることをシグナリングし、その結果マスターコア１０２Ａ〜１０２Ｎは別のメモリ要求を発行することができず、したがってメモリコントローラ１０６が、キューが要求を収容する余地があることを示すまでストールする。アービター１１４はまた、マスターコア１０２Ａ〜１０２Ｎからの要求の間のアービトレーションの役割を担う。アービター１１４は、各キューのすべての要素を検討し、優先順位を決定する。それは２ステップの優先順位メカニズムを用いることができる。第一にそれはサービス品質（ＱｏＳ）の順に高いＱｏＳを高い優先度として要求を並べ、第二に、同じ優先度を有する要求については、それはそれらをラウンドロビンまたは類似の順序付けスキームを用いて並べる。アービター１１４について記載されたこれらの機能は、実際にはアービター１１４のコアアービター部分によって行われてもよいことに留意すべきである。別個のバンクアービターはまた、アービター１１４に含まれてもよい。
【００３１】
バンクアービターは、各メモリバンク１０４Ａ〜１０４Ｎのための読み出しおよび書き込みキューを含むユニットである。コアアービターは、マスターコア１０２Ａ〜１０２Ｎからの要求を調停し、それらをバンクキュー１１６Ａ−１１６Ｎの中に充填する。バンクキュー１１６Ａ〜１１６Ｎの深さはまた、固定されてもよい（例えば１０個の要求）。各バンクキュー１１６Ａ〜１１６Ｎは、メモリバンク１０４Ａ〜１０４Ｎに対応する。このように、８バンクシステムにおいて、合計で８つの書き込みキューおよび８つの読み出しキューが存在し、マスターかつバンクキューである。別個の読み出しおよび書き込みキューを有するまたは組み合わせられた読み出しおよび書き込みキューを有するためにシステムを設定することも可能であろう。
【００３２】
アクセススケジューラ１１８は、各サイクルについてメモリバンク１０４Ａ〜１０４Ｎへのアクセスのスケジューリングをする役割を担う。アクセススケジューラ１１８は、各メモリバンク１０４Ａ〜１０４Ｎのための読み出しおよび書き込みキューを見て最も効率的なアクセスパターンを形成する。アクセススケジューラ１１８は、各キューの先頭において要求を優先順位付けすることができるが、符号化されたメモリシステムの場合においては、アクセススケジューラ１１８は、サイクルあたりアクセスを最大化するためにキューを先読みすることができる。書き込みキューは、書き込みがいっぱいになるまで書き込みを保持してもよい。読み出しは、書き込みキューがいっぱいになるまで書き込みよりも高い優先度を与えられることができる。
【００３３】
図６は、例示的実施形態に係る、アクセススケジューラ１１８をより詳細に示すブロック図である。符号化ステータスマップ６００は、メモリバンクの行に対応する行およびメモリバンクに対応する列（column）を有していてもよい。コード値は、特定のメモリバンクにおける各行のためのコードのステータスを示す符号化ステータスマップ６００の各セルに置かれてもよい。例えば、各セルが２つのビットを保持する場合、００はコードが最新のものであることを示してもよく、０１は、コードは古いがフレッシュなデータがメモリバンクにあることを示してもよく、１０は、コードが古いがフレッシュなデータがコーディングバンクにあることを示してもよく、１１は予約されてもよい。
【００３４】
読み出し要求については、読み出しパターンビルダー６０２が要求をサービスするために用いられる。読み出しパターンビルダー６０２の焦点は、より多くのアクセスを処理するためにコーディングバンクにおける冗長性を利用することである。図７は、例示的実施形態に係る、読み出し要求を処理する方法７００を示す流れ図である。処理７０２において、変数ｉが１に設定される。処理７０４において、ｉが領域におけるメモリバンクの数以下であるかが判定される。ｉが領域におけるメモリバンクの数以下でないならば、方法７００は終了してもよい。ｉが領域におけるメモリバンクの数以下であるならば、処理７０６においてバンクｉについてメモリバンクからの読み出しが処理される。処理７０８において、別のバンク要求への読み出しがコーディングバンクを用いて可能であるかを判定する。 
そうでないならば、処理７１０においてｉは１でインクリメントされる。そうであるならば、処理７１２において読み出しはコーディングバンクを用いて処理される。そして処理７１４において、コーディングバンク利用可否が更新される。そして方法７００は処理７１０に進む。処理７１０の後で、方法７００は処理７０４にループする。
【００３５】
書き込み要求はアクセススケジューラ１１２における書き込みパターンビルダー６０４によって履行される。上述したように、例示的実施形態においては、符号化システムはコーディングバンクを用いることによりサイクルあたりのバンクあたり、２つの書き込みを行う。書き込みが特定のバンクについてスケジューリングされているときに、スケジューラは、２つの要求をキューの先頭からピックアップする。それは、第１の要求を対応するメモリバンクに書き込む。第２の書き込みは、この特定の書き込みデータがこのコーディングバンクにおいて用いられているそれぞれの行のコーディングバンクにコミットされる。図８は、例示的実施形態に係る、書き込み要求を処理する方法８００を示す流れ図である。処理８０２において、最初の２つの要求は、書き込みキューから読み出される。処理８０４において、第１の要求は、対応するメモリバンクによって処理され、他方、第２の要求は対応するコーディングバンクによって処理される。処理８０６において、コードステータスマップが更新される。メモリバンクに格納された要素については、コードは０１に更新されてもよく、他方、コーディングバンクに格納された要素については、コードは１０に更新されてもよい。
【００３６】
アクセススケジューラ１１２における動的符号化コントローラ６０６は、頻繁にアクセスされるメモリサブ領域のためのコードを維持する役割を担う。このブロックは主として、不使用メモリに対するコード格納の低減に役立つ。現在の頻繁にアクセスされる領域を特定し領域が符号化されるべき旨をコントローラに示すアルゴリズムが提供されてもよい。このようにして、全体のメモリの部分のみが符号化される必要がある。
【００３７】
様々なコアからのメモリアクセスにおける競合は、大抵はアクセスが共有メモリに対するものであるとき、特にそれらがあるメモリ領域に局所化されているときに発生する。ある期間におけるメモリアクセスの局所性は、コードを格納するためのメモリオーバーヘッドを低減するために探索されてもよい。マルチコアシステムにおいては、様々なコアが共有メモリロケーションから機能しようと試みるとき、コアは、メモリの局所化された領域に対するアクセスを生成する傾向がある。これが、重いアクセスの期間に局所化された領域を符号化しおよびメモリアクセスの局所性に変化があるときにいつでも領域を動的に変化させる、という考えを動機付ける。
【００３８】
例示的実施形態においては、アクセスパターンが変化したときに現在符号化されている領域が変化する。つまり、最も頻繁にアクセスされる局所化されたメモリ領域が変化することができ、そしてシステムは記録コントローラ６０８を用いて新たな局所化されたアクセス領域を記録する。例示的実施形態においては、動的符号化はメモリをサブ領域に分割してサブ領域におけるアクセスを追跡し続けることにより達成される。ひとたび特定のサブ領域へのアクセスの数が特定のスレッショルドに達すれば、このサブ領域は現在符号化されている領域として割り当てられる。ウィンドウ概念が用いられてもよい。システムは［Ｓｔａｒｔｉｎｇ  Ａｄｄｒｅｓｓ，Ｌｅｎｇｔｈ］のようなサブ領域のテーブルを維持する。各サブ領域はこのようにして開始アドレスおよび長さを与えられる。特定のサブ領域に対する任意のアクセスがヒットであるとみなされる。システムはサブ領域の各々と関連付けられ各ヒットについてインクリメントされるヒットカウンタを有している。
【００３９】
システムは、そのヒットカウンタ値に基づいて特定のサブ領域の符号化の決定をする。特定の時間における符号化されたサブ領域の数は、サブ領域サイズおよびコードストレージサイズに基づいている。符号化された領域の立ち退きはキャッシュについて用いられるのと同様のＬｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）ポリシに従う。ブロックは、特定の領域への重いアクセスを判定するためのシンプルなロジックを実装する。それは、全体のメモリをサブ領域に分割する。メモリは、以下のウィンドウパラメータ：［ＳｔａｒｔＡｄｄｒｅｓｓ，Ｌｅｎｇｔｈ］の提供により動的に分割されることができる。コントローラは、コードストレージのために利用可能なメモリ未満であるという制約とともに、複数のウィンドウパラメータを有することができる。これは、システム設計者が分散されたメモリの小さなチャンクを符号化することを許容する。記述されたコードは様々なメモリバンクにおける同じ行のデータ要素の線形的組み合わせによって取得される。アドレスのためのウィンドウパラメータは主として行の開始を示す。
【００４０】
動的符号化コントローラ６０６は、サブ領域の切り替えでサブ領域へのアクセスのカウントをリセットする。新たなカウントは符号化されたサブ領域の次の変化を決定する。
【００４１】
図９は、例示的実施形態に係る、バッファをメモリ内に割り当てる方法９００を示す流れ図である。処理９０２において、アクセススケジューラは、バッファを割り当てる要望を示すチップ‐レベルスケジューラからのメッセージを受信する。処理９０４において、バッファに対応するメモリ領域が複数のアクセスについてスケジューリングされているかが判定される。スケジューリングされていないならば、何も行われない。スケジューリングされているならば、処理９０６においてチップ‐レベルスケジューラが、使用されるべきアドレス領域をアクセススケジューラに対して通知する。処理９０８において、新たな領域を受け入れる余地があるかが判定される。余地があるならば、処理９１０においてコーディングバンクはバックグラウンドで構築され、構築されたとき、アクセススケジューラは通知される。新たなデータを受け入れる余地がないならば、処理９１２において、１つの符号化領域がＬＲＵポリシに基づいて取り除かれる。そして方法９００は処理９１０に進む。
【００４２】
処理９１６において、アクセススケジューラは、ひとたびアクセス要求がメモリコントローラによって受信されると然るべくコーディングバンクをスケジューリングする。
【００４３】
図１０は、例示的実施形態に係る、コーディングバンクのグループをスケジューリングおよび用意する方法１０００を示す流れ図である。処理１００２において、第１のマスターコアから、複数のメモリバンクの１つにおけるデータにアクセスする第１の要求が受信される。処理１００４において、現在サービスされるある複数のメモリバンクの１つにおけるデータにアクセスする第２のマスターコアからの第２の要求が原因で要求されたデータへのアクセスがストールしているかが判定される。アクセスがストールしているならば、処理１００６において、第１の要求が、複数のコーディングバンクの１つにおけるデータにアクセスすることによってサービスされ、各コーディングバンクは各メモリバンクよりもサイズにおいて小さい。アクセスがストールしていないならば、処理１００８において、メモリバンクの１つにおけるデータにアクセスすることによって第１の要求がサービスされる。
【００４４】
本開示は任意のタイプのコンピューティングデバイスにおいて用いられることができる実施形態を記載するものであるが、幾つかの例示的実施形態においては、ロングタームエボリューション（ＬＴＥ）、モバイル用途用グローバルシステム（ＧＳＭ）またはユニバーサル移動体通信システム（ＵＭＴＳ）基地局などの無線基地局での実装が利用される。ＬＴＥにおいては、これらの基地局はまたＥｖｏｌｖｅｄノードＢ（ｅＮＢ）として知られている。
【００４５】
モバイルデバイスおよび他のタイプのコンピューティングデバイスなどの他の実施形態がまた予見される。
【００４６】
例示的モバイルデバイス
図１１は、例示的実施形態に係る、モバイルデバイス１１００を示すブロック図である。モバイルデバイス１１００は、プロセッサ１１０２を含むことができる。プロセッサ１１０２は、モバイルデバイス１１００に適した様々な異なるタイプの市販されているプロセッサ１１０２の任意のものであることができる（例えば、ＸＳｃａｌｅアーキテクチャマイクロプロセッサ、インターロックされたパイプラインステージのないマイクロプロセッサ（ＭＩＰＳ）アーキテクチャプロセッサ、または他のタイプのプロセッサ１１０２）。ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、または他のタイプのメモリなどのメモリ１１０４は、典型的にプロセッサ１１０２にアクセス可能である。メモリ１１０４は、オペレーティングシステム（ＯＳ）１１０６やアプリケーションプログラム１１０８を格納するように適合させることができる。プロセッサ１１０２は、直接的にまたは適切な中間的ハードウェアを介して、ディスプレイ１１１０に、およびキーパッド、タッチパネルセンサ、マイクロフォン等の１つまたは複数の入力／出力（Ｉ／Ｏ）デバイス１１１２に結合されることができる。同様に、幾つかの実施形態においては、プロセッサ１１０２は、アンテナ１１１６とインタフェースする送受信機１１１４に結合されることができる。送受信機１１１４は、モバイルデバイス１１００の性質に応じてセルラーネットワーク信号、ワイヤレスデータ信号または他のタイプの信号を、アンテナ１１１６を介して送信しかつ受信するように構成されることができる。さらに、幾つかの構成においては、ＧＰＳ受信機１１１８はまた、ＧＰＳ信号を受信するためにアンテナ１１１６の利用をすることができる。
【００４７】
モジュール、コンポーネントおよびロジック
ある実施形態はロジックまたは多数のコンポーネント、モジュールもしくはメカニズムを含むものとしてここに記載される。モジュールはソフトウェアモジュール（例えば（１）非一時的マシン可読媒体に、または（２）送信信号に組み込まれたコード）またはハードウェア実装されたモジュールのいずれかを構成することができる。ハードウェア実装されたモジュールは、ある処理を行うことができる有形的ユニットであり何らかの態様にて構成または配置されることができる。例示的実施形態においては、１つまたは複数のコンピュータシステム（例えばスタンドアローン、クライアントまたはサーバコンピュータシステム）または１つまたは複数のプロセッサ１１０２は、ここに記載された何らかの処理を行うように動作するハードウェア実装モジュールとして、ソフトウェア（例えばアプリケーションまたはアプリケーション部分）によって構成されることができる。
【００４８】
様々な実施形態において、ハードウェア実装されたモジュールは、機械的にまたは電子的に実装されることができる。例えば、ハードウェア実装されたモジュールは、何らかの処理を行うように恒久的に構成されている専用の回路またはロジックを含むことができる（例えば特殊用途プロセッサとして、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）など）。ハードウェア実装されたモジュールはまた、何らかの処理を行うようにソフトウェアによって一時的に構成されたプログラマブルロジックまたは回路（例えば汎用プロセッサ１１０２または他のプログラマブルプロセッサ１１０２に包含されるように）を含むことができる。専用のかつ恒久的に構成された回路において、または、一時的に構成された回路（例えばソフトウェアによって構成された）において、のどちらでハードウェア実装されたモジュールを機械的に実装すべきかの判断は、費用および時間の考慮事項によって左右されることができることが理解されるであろう。
【００４９】
したがって、用語「ハードウェア実装されたモジュール」は、物理的に構成され、恒久的に構築された（たとえばハードワイヤードの）ものであれ、または、一時的または一時しのぎに構成された（例えばプログラムされた）ものであれ、何らかの態様にて動作しおよび／またはここに記載された何らかの処理を行うための有形的実体を包含するものと理解されるべきである。ハードウェア実装されたモジュールが一時的に構成されている（例えばプログラムされている）実施形態を考えると、ハードウェア実装されたモジュールの各々は、任意の一時点で構成または具現化される必要はない。例えば、ハードウェア実装されたモジュールがソフトウェアを用いて構成された汎用プロセッサ１１０２を含む場合、汎用プロセッサ１１０２は、異なる時間において異なるハードウェア実装されたモジュールとして構成されることができる。ソフトウェアは、例えば、特定のハードウェア実装されたモジュールを一時点において構成するためにおよび異なる時点においては異なるハードウェア実装されたモジュールを構成するために、プロセッサ１１０２を然るべく構成することができる。
【００５０】
ハードウェア実装されたモジュールは、他のハードウェア実装されたモジュールに情報を提供し、または、他のハードウェア実装されたモジュールから情報を受信することができる。したがって、記載されたハードウェア実装されたモジュールは、通信可能に結合されているとみなされることができる。かかるハードウェア実装されたモジュールの複数が同時的に存在する場合、通信は信号伝送（例えばハードウェア実装されたモジュールを接続する適切な回路およびバスを介して）により実現されることができる。複数のハードウェア実装されたモジュールが異なる時間において構成または具現化されている実施形態においては、かかるハードウェア実装されたモジュールの間の通信は、例えば、複数のハードウェア実装されたモジュールがアクセスを有するメモリ構造への／からの情報の格納および抽出によって実現されることができる。例えば、１つのハードウェア実装されたモジュールは、処理を行い、それが通信可能に結合されているメモリデバイスにその処理の出力を格納することができる。さらなるハードウェア実装されたモジュールは、その後、しばらく経って、格納された出力を抽出し処理するためにメモリデバイスにアクセスすることができる。ハードウェア実装されたモジュールはまた、入力または出力装置と通信を開始することができ、リソースに対して処理を行うことができる（例えば情報の収集）。
【００５１】
ここに記載された例示的方法の様々な処理は、少なくとも部分的に、関連する処理を行うように一時的に構成され（例えばソフトウェアにより）または恒久的に構成された１つまたは複数のプロセッサ１１０２によって、行われることができる。一時的にまたは恒久的に構成されるにせよ、かかるプロセッサ１１０２は、１つまたは複数の処理または機能を行うように動作するプロセッサ実装されたモジュールを構成することができる。ここに言及されるモジュールは、幾つかの例示的実施形態においては、プロセッサ実装されたモジュールを含むことができる。
【００５２】
同様に、ここに記載された方法は、少なくとも部分的にプロセッサ実装されることができる。例えば、方法の処理の少なくとも幾つかは、１つまたは複数のプロセッサ１１０２またはプロセッサ実装されたモジュールによって行われることができる。処理の幾つかのパフォーマンスは１つまたは複数のプロセッサ１１０２の間で分散されることができ、単一のマシンの中に存在するだけでなく、多数のマシンにわたって配置展開されることができる。幾つかの例示的実施形態においては、プロセッサ１１０２またはプロセッサ１１０２は、単一のロケーション（例えば自宅環境、職場環境またはサーバーファームの中）において配置されることができ、他方、他の実施形態においては、プロセッサ１１０２は、多数のロケーションにわたって分散されることができる。
【００５３】
１つまたは複数のプロセッサ１１０２はまた、「クラウドコンピューティング」環境におけるまたは「サービスとしてのソフトウェア」（ＳａａＳ）としての関連する処理のパフォーマンスをサポートするために動作することができる。例えば、処理の少なくとも幾つかは、コンピュータのグループ（プロセッサ１１０２を含むマシンの例として）によって行われることができ、これらの処理は、ネットワーク（例えばインターネット）を介しておよび１つまたは複数の適切なインタフェース（例えばアプリケーションプログラムインタフェース（ＡＰＩ））を介してアクセス可能である。
【００５４】
電子装置およびシステム
例示的実施形態は、コンピュータハードウェア、ファームウェアもしくはソフトウェアまたはそれららの組み合わせにおけるデジタル電子回路において実装されることができる。例示的実施形態は、コンピュータプログラム製品、例えば、データ処理装置、例えばプログラマブルプロセッサ１１０２、コンピュータまたは複数のコンピュータによる処理のため、または処理を制御するために、情報担体、例えばマシン読み取り可能な媒体、に有形的に具現化されたコンピュータプログラム、を用いて実装されることができる。
【００５５】
コンピュータプログラムは、コンパイル型またはインタープリタ型言語を含む任意の形式のプログラミング言語で書かれることができ、それは、スタンドアローンプログラムとしてまたはモジュール、サブルーチンまたはコンピューティング環境における使用に適した他のユニットとして、任意の形式で配置展開されることができる。コンピュータプログラムは、１つのコンピュータにまたは複数のコンピュータ上で実行されるために１つのサイトにまたは複数のサイトにまたがって通信ネットワークで相互接続されて配置展開されることができる。
【００５６】
例示的実施形態においては、処理は、入力されたデータに対して処理を行い、出力を生成することにより機能を実現するためにコンピュータプログラムを実行する１つまたは複数のプログラマブルプロセッサ１１０２によって行われることができる。方法における処理はまた、特殊用途向け論理回路、例えばＦＰＧＡまたはＡＳＩＣによって行われることができ、例示的実施形態の装置は特殊用途向け論理回路、例えばＦＰＧＡまたはＡＳＩＣとして実装されることができる。
【００５７】
コンピューティングシステムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは一般的に互いに離隔しており、典型的に通信ネットワークを介してやりとりする。クライアントおよびサーバの関係は、それぞれのコンピュータ上で動作し互いに対してクライアント‐サーバ関係を有するコンピュータプログラムが理由で生じる。プログラマブルコンピューティングシステムを配置展開する実施形態においては、ハードウェアおよびソフトウェアアーキテクチャ双方が考慮に値することが理解されるであろう。具体的には、何らかの機能性を恒久的に構成されたハードウェア（例えばＡＳＩＣ）においてまたは一時的に構成されたハードウェア（例えばソフトウェアおよびプログラマブルプロセッサ１１０２の組み合わせ）において、あるいは恒久的および一時的に構成されたハードウェアの組み合わせにおいて実装すべきかの選択肢は設計上の選択でありうることが理解されるであろう。以下では、様々な例示的実施形態において配置展開されることができるハードウェア（例えばマシン）およびソフトウェアアーキテクチャを提示している。
【００５８】
例示的マシンアーキテクチャおよびマシン可読媒体
図１２は、ここにおいて議論され方法論のいずれか１つまたは複数をマシンに行わせるために命令１２２４が実行されることができるコンピュータシステム１２００の例示的形式におけるマシンのブロック図である。代替的実施形態においては、マシンは、スタンドアローンデバイスとして動作しまたは他のマシンに接続され（例えばネットワーク化され）されることができる。ネットワーク化された配置展開においては、マシンは、サーバ‐クライアントネットワーク環境におけるサーバまたはクライアントマシンの立場で、または、ピアツーピア（または分散）ネットワーク環境におけるピアマシンとして、動作することができる。マシンは、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、ウェブアプライアンス、ネットワークルータ、スイッチもしくはブリッジまたはそのマシンによってなされるべきアクションを指定する命令を（逐次的またはその他）実行することができる任意のマシンでありうる。さらに、単一のマシンのみが示されている一方で、用語「マシン」はまた、ここにおいて議論された方法論のいずれか１つまたは複数を行うために命令１２２４の集合（または複数の集合）を個別的または共同的に実行するマシンの任意の集まりを含むものととらえられるべきものである。
【００５９】
例示的コンピュータシステム１２００は、プロセッサ１２０２（例えばＣＰＵ、グラフィックスプロセッシングユニット（ＧＰＵ）、または双方）、メインメモリ１２０およびスタティックメモリ１２０６を含み、それらはバス１２０８を介して互いに通信する。コンピュータシステム１２００はさらに、ビデオディスプレイ１２１０（例えば液晶ディスプレイ（ＬＣＤ）またはブラウン管（ＣＲＴ））を含むことができる。コンピュータシステム１２００はまた、英数字入力装置１２１２（例えばキーボードまたはタッチセンシティブ表示画面）、カーソル制御装置１２１４（例えばマウス）、ストレージユニット１２１６、信号発生装置１２１８（例えばスピーカ）およびネットワークインタフェース装置１２２０を備えている。
【００６０】
マシン可読媒体
ストレージユニット１２１６は、ここに記載された方法論または機能のいずれか１つまたは複数を具現化する、またはそれによって利用される命令１２２４（例えばソフトウェア）の１つまたは複数の集合が格納されているマシン読み取り可能な媒体１２２２を含む。命令１２２４はまた、完全にまたは少なくとも部分的に、コンピュータシステム１２００によるその実行の間、メインメモリ１２０４の中におよび／またはプロセッサ１２０２の中に存在することができ、メインメモリ１２０４およびプロセッサ１２０２はまたマシン読み取り可能な媒体１２２２を構成している。
【００６１】
マシン読み取り可能な媒体１２２２が例示的実施形態においては単一の媒体として示されているが、用語「マシン読み取り可能な媒体」は、１つまたは複数の命令１２２４またはデータ構造を格納する単一の媒体または複数の媒体（例えば集中化されたまたは分散されたデータベースおよび／または関連付けられたキャッシュおよびサーバ）を含むことができる。用語「マシン読み取り可能な媒体」はまた、マシンによる実行のための命令１２２４を格納し、符号化し、運び、または本開示の方法論のいずれか１つまたは複数をマシンに行わせる、あるいは、かかる命令１２２４によって利用されまたはそれと関連付けされたデータ構造を格納し、符号化し、または運ぶ能力のある、任意の有形的な媒体を含むものととらえられるべきものである。用語「マシン読み取り可能な媒体」は、ソリッドステートメモリおよび光または磁気媒体を含むものとして然るべくとらえられるべきであるが、これらに限定されるものではない。マシン読み取り可能な媒体１２２２の具体的な例は、一例として、半導体メモリデバイス、例えば消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）およびフラッシュメモリデバイスを含む不揮発性メモリ、内部ハードディスクリおよびムーバブルディスクなどの磁気ディスク、磁気光ディスクならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む。
【００６２】
伝送媒体
命令１２２４はさらに伝送媒体を用いて通信ネットワーク１２２６を介して送信または受信されることができる。命令１２２４は、ネットワークインタフェース装置１２２０および多数の周知の伝送プロトコル（例えばＨＴＴＰ）のいずれかを用いて送信されることができる。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、携帯電話ネットワーク、基本電話サービス（ＰＯＴＳ）ネットワークおよびワイヤレスデータネットワーク（例えばＷｉＦｉおよびＷｉＭａｘ（登録商標）ネットワーク）を含む。用語「伝送媒体」は、マシンによる実行のために命令１２２４を格納し、符号化し、または運ぶ能力を有する任意の無形的媒体を含むものととらえられるべきであり、デジタルもしくはアナログ通信信号またはかかるソフトウェアの通信を支援する他の無形的媒体を含む。
【００６３】
具体的例示的実施形態を参照して実施形態は説明されたが、開示のより広い趣旨および範囲を逸脱することなく様々な改変および変更がこれらの実施形態になされることができることは明らかであろう。したがって、明細書および図面は限定的ではなく説明的な意味におけるものとみなされるべきである。その一部を形成する添付の図面は説明により、かつ、限定されることなく、主題が実施されることができる具体的実施形態を示している。示された実施形態は当業者がここに開示された教示を実施することができるように十分詳細に記載されている。他の実施形態は、構造的および論理的置換および変更が本開示の範囲を逸脱することなくなされることができるように、利用されかつそこから派生されることができる。この詳細な説明は、したがって、限定的な意味でとらえられるべきではなく、様々な実施形態の範囲は、添付の請求項のみによって、かかる請求項が権原を有する均等物の完全な範囲とともに、画定されるものである。
【００６４】
発明主題のかかる実施形態はここにおいて個別的におよび／または集団的に、単に便宜上、１を超えるものが実際に開示されているならばこの出願の範囲を任意の単一の発明または発明的概念に自発的に限定する意図なしに、用語「発明」によって参照されることができる。このように、具体的実施形態がここにおいて示され記載されているが、同じ目的を実現するために計算された任意の配置が、示された具体的実施形態を代替することができることが理解されるべきである。本開示は、様々な実施形態の任意かつすべての改変または変形を包含することを意図している。上記実施形態の組み合わせ、およびここに具体的に記載されていない他の実施形態は、上記説明を検討することで技術分野における技能を有する者に明らかであろう。
【００６５】
メモリアクセスシステムの一実施形態は、第１のマスターコアから、複数のメモリバンクの１つにおけるデータにアクセスする第１の要求を受信するアクセス要求受信手段と、データへのアクセスが第２のマスターコアからの、複数のメモリバンクの１つにおけるデータにアクセスする第２の要求が理由でストールしているかを判定する判定手段と、を備え、第２の要求は現在サービス中である。システムはさらに、処理手段であって、判定手段によってなされた、データへのアクセスがストールした旨の判定に応答して、複数のコーディングバンクの１つにおけるデータにアクセスすることにより第１の要求を処理する処理手段を備え、各コーディングバンクは各メモリバンクよりもサイズにおいて小さい。一実施形態においては、メモリシステムはまた、第１の要求を処理することが、少なくとも１つの他のデータをメモリバンクから取得し、データを復号化するために少なくとも１つの他のデータを使用することによりデータを復号化することを含むように、コーディングバンクの１つにおけるデータが符号化される、符号化手段を含む。システムはまた、複数のコーディングバンクの１つにおけるデータをデータバンクからのデータとインタリーブするインタリーブ手段を含んでもよい。システムはまた、複数のバンクキューに格納された要求に対する先読み処理を用いて１つまたは複数のコーディングバンクにおけるデータをロードするロード手段を含んでもよい。
【００６６】
例
上述した特徴の様々な組み合わせが個別の例示的実施形態において実装されてもよい。例えば、上述した先読み処理は、要求が並行して処理されるシステムにおいて実装されてもよく、１つまたは複数のコーディングバンクにおけるデータは、第１の要求を処理することが少なくとも１つの他のデータをメモリバンクから取得し、データを復号化するために少なくとも１つの他のデータを用いることにより、データを復号化することを含むように、符号化され、コーディングバンクは、排他的ＯＲ（ＸＯＲ）演算を介して、またはその任意の組み合わせにより、符号化される。追加的には、これらの実施形態のいずれかにおけるシステムは、無線基地局として実装されてもよい。
【００６７】
さらに、複数のコーディングバンクの１つにおけるデータのデータバンクからのデータとのインタリーブに関して上述した実施形態は、データが、第１の要求を処理することが少なくとも１つの他のデータをメモリバンクから取得してデータを復号化するために少なくとも１つの他のデータを用いることによりデータを復号化することを含むように、符号化される実施形態と組み合わせられてもよい。追加的には、先読み処理は、これらの実施形態のいずれとも組み合わせられることができる。
【図１】
0006715920.tif 000002
【図２】
0006715920.tif 000003
【図３】
0006715920.tif 000004
【図４】
0006715920.tif 000005
【図５】
0006715920.tif 000006
【図６】
0006715920.tif 000007
【図７】
0006715920.tif 000008
【図８】
0006715920.tif 000009
【図９】
0006715920.tif 000010
【図１０】
0006715920.tif 000011
【図１１】
0006715920.tif 000012
【図１２】
0006715920.tif 000013