(57)【特許請求の範囲】
【請求項１】
不均一な記憶容量を有するメモリ空間へのメモリアクセスを物理チャネルにわたって均一にインターリーブするための方法であって、
複数チャネルメモリアーキテクチャが、異なるデータ転送速度において動作する前記物理チャネルにわたって非対称な記憶容量を与えられる時点を特定するステップと、
前記メモリ空間において等しい記憶容量の複数の仮想セクタを規定するために、前記特定するステップに応答するロジックを使用するステップと、
前記非対称な記憶容量に前記仮想セクタにわたって均一にアクセスするために、前記物理チャネルのうちのメモリ空間アクセス要求を動的に分散させるようにインターリーバを介してインターリーブ機能を適用するステップと
を含む、方法。
【請求項２】
前記物理チャネルの数は偶数であり、前記等しい容量の仮想セクタの数は奇数である、請求項1に記載の方法。
【請求項３】
前記物理チャネルの数は奇数であり、前記等しい容量の仮想セクタの数は偶数である、請求項1に記載の方法。
【請求項４】
前記インターリーブ機能を適用するステップは、拡散機能を適用するステップを含む、請求項1に記載の方法。
【請求項５】
前記拡散機能は、前記メモリ空間にわたって物理チャネル間の規定された比においてメモリアクセスを動的に分散させる、請求項4に記載の方法。
【請求項６】
前記等しい容量の仮想セクタの数はプログラム可能である、請求項1に記載の方法。
【請求項７】
前記等しい容量の仮想セクタの数は前記メモリ空間をサポートするメモリモジュールの数より少ない、請求項1に記載の方法。
【請求項８】
前記等しい容量の仮想セクタの数は前記メモリ空間をサポートするメモリモジュールの数より多い、請求項1に記載の方法。
【請求項９】
前記メモリ空間は、同じ記憶容量の奇数のメモリモジュールによってサポートされる、請求項1に記載の方法。
【請求項１０】
前記メモリ空間は、残りのメモリモジュールの前記記憶容量とは異なる記憶容量を有する少なくとも1つのメモリモジュールを有する偶数のメモリモジュールによってサポートされる、請求項1に記載の方法。
【請求項１１】
前記メモリ空間にアクセスする動作は、非インターリーブデータ転送速度を超える、前記物理チャネルそれぞれへのデータ転送速度においてサポートされる、請求項1に記載の方法。
【請求項１２】
第1の物理チャネルを介して前記メモリ空間にアクセスする動作は第1のデータ転送速度においてサポートされ、第2の物理チャネルを介して前記メモリ空間にアクセスする動作は、前記第1のデータ転送速度とは異なる第2のデータ転送速度においてサポートされる、請求項1に記載の方法。
【請求項１３】
前記第1のデータ転送速度は前記第2のデータ転送速度の関数であり、前記第1のデータ転送速度および前記第2のデータ転送速度は、物理チャネルによってサポートされる仮想セクタの数に基づいて決定される、請求項12に記載の方法。
【請求項１４】
不均一な記憶容量を有するメモリ空間へのメモリアクセスを物理チャネルにわたって均一にインターリーブするためのコンピューティングデバイスであって、
複数チャネルメモリアーキテクチャが、異なるデータ転送速度において動作する前記物理チャネルにわたって非対称な記憶容量を与えられる時点を特定するための手段と、
前記メモリ空間において等しい記憶容量の複数の仮想セクタを規定するための手段と、
前記非対称な記憶容量に前記仮想セクタにわたって均一にアクセスするために、前記物理チャネルのうちのメモリ空間アクセス要求を動的に分散させるようにインターリーバを介してインターリーブ機能を適用するための手段と
を備える、コンピューティングデバイス。
【請求項１５】
コンピュータ上で実行されるとき、請求項1〜13のいずれか一項に記載の方法を実行するための命令を備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非対称な記憶容量を有する複数チャネルメモリアーキテクチャにわたってデータを均一にインターリーブするためのシステムおよび方法に関する。
【背景技術】
【０００２】
コンピューティングデバイスが至る所に存在する。これらのデバイスは、ポータブルコンピュータ、デスクトップコンピュータおよびサーバコンピュータ、ならびに種々のサイズの他のデバイスを含む場合がある。これらのデバイスの主要機能に加えて、多くは周辺機能を含む。たとえば、携帯電話は、携帯電話による通話を可能にし、サポートするという主要機能と、スチールカメラ、ビデオカメラ、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、電子メールの送受信、テキストメッセージの送受信、プッシュツートーク機能などの周辺機能とを含む場合がある。そのようなデバイスの機能が増加するにつれて、そのような機能をサポートするために必要な計算能力または処理能力、およびデータ記憶能力も増大する。
【０００３】
いくつかの従来のコンピューティングデバイス設計は、特定のコンピューティングデバイスに対して望まれる種々の主要機能および周辺機能をサポートするために、複数のプロセッサ、および/または複数のコアを備えるプロセッサを含む。高い計算能力および速いプロセッサ速度の場合に、プロセッサおよび/またはプロセッサコアとシステムメモリとの間で生じる可能性があるボトルネックを最小化するために、複数の技法が開発されてきた。1つの手法は、各クロックサイクル内でランダムアクセスメモリ要素と2回データを交換する集積回路アーキテクチャを含む。たとえば、ダブルデータレート(DDR)ランダムアクセスメモリ(RAM)モジュールは、これらのデータ交換をサポートする。この手法を用いる場合であっても、複数のプロセッサおよび/または複数のコアを備える今日のシステムは、従来のメモリモジュールのデータ転送速度を超えるクロック速度において動作する。他の手法は、付加的なメモリチャネルを追加することを含む。2つのメモリチャネルを含むシステムは、利用可能なメモリ帯域幅を2倍にすることによって問題を軽減するのを助けることができる。RAMモジュールにデータを書き込むとき、およびRAMモジュールからデータを読み出すときに生じる可能性があるデータ転送ボトルネックを軽減するために、2つのチャネルがメモリコントローラによって同時に使用される。
【０００４】
各メモリチャネルが、等しい記憶容量を有し、同様に構成された(すなわち、同等の能力を有する)メモリモジュールと通信するとき、コントローラは、メモリバスによってサポートされる最大データ速度においてメモリ空間に、およびメモリ空間からデータを転送できるだけでなく、メモリ空間内の任意の未使用および所望のロケーションにアプリケーションプログラムまたはデータファイルを配置するために、メモリコントローラがメモリ空間全体を利用することができる。したがって、利用可能なアドレス空間にわたってデータを均一にインターリーブすること、または分散させることが望ましい。
【０００５】
従来のデータインターリーブ方式の場合、インターリーバが、サポートされる最大データ転送速度においてメモリモジュールにアクセスするために、メモリモジュールの記憶容量は同じでなければならない。メモリモジュール製造業者が一定の記憶容量を有する集積回路を提供するとき、これは一般的に問題ではない。コンピューティングデバイスの製造業者が、メモリモジュールを対で展開し、各対が同じ記憶容量を有する限り、各メモリチャネルによってアクセス可能な記憶容量は同じである。
【０００６】
しかしながら、コンピューティングデバイス製造業者は、市販のメモリモジュールの最小記憶容量の倍数でないシステムメモリ容量を提供したいという望みを明らかにしている。これは、市販のメモリモジュールを使用するのを、および2つ以上のメモリチャネルにわたって対称な容量で同じものを配置するのを不可能にする。たとえば、製造業者が768Mバイトのシステムメモリ容量を望んでおり、利用可能な最も小さなメモリモジュール容量が256Mバイトである場合には、製造業者は、3つのメモリモジュールを配置することによって、望まれる全メモリ容量を達成することができる。しかしながら、3つのモジュールのうちの2つしか、別々のメモリチャネルにわたって対称に配置することができない。
【０００７】
非対称なメモリ容量は、全メモリ容量のうちの第1の部分が、従来のインターリーブ機能を用いてアクセスすることができる全メモリ容量の第2の部分のデータ速度より遅いデータ速度においてインターリーブすることなくアクセスすることしかできない構成を提示する。そのような構成は、どの機能およびアプリケーションが非インターリーブ(すなわち、遅い)データアクセスによって十分にサポートすることができるかを特定するために、オペレーティングシステムおよび/またはアプリケーションプロバイダに厄介な問題を提起する。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、非対称なメモリ容量をサポートする、メモリチャネル間のデータ転送速度を最適化するための改善された機構が必要とされている。
【課題を解決するための手段】
【０００９】
複数チャネルメモリアーキテクチャによってサポートされるメモリ空間が、複数のチャネルにわたって不均一なデータ記憶容量を登録される(populated)時点を特定するシステムおよび方法が開示される。それに応答して、等しい記憶容量の複数の仮想セクタが特定される。その後、メモリ空間へのデータアクセスを仮想セクタに分散させるために、インターリーブ機能が用いられる。
【００１０】
例示的な実施形態は、プロセッサおよびシステムメモリと通信するように配置されるインターリーバを備えるコンピューティングデバイスを含む。インターリーバは、システムメモリにおいてメモリ空間内のロケーションを特定する。メモリ空間は、少なくとも2つの物理チャネルによってサポートされ、各物理チャネルに結合される少なくとも1つのメモリモジュールを含む。メモリ空間は、物理チャネルにわたって分散する不均一な記憶容量を有する。インターリーバは、所望の記憶容量を有する仮想セクタを特定するロジックに応答する。動作時に、インターリーバは、メモリ空間へのアクセス要求に応答して、非対称な記憶容量に、仮想セクタにわたって均一にアクセスする。
【００１１】
1つの例示的な実施形態はコンピューティングデバイスであり、そのコンピューティングデバイスは、メモリ空間が複数チャネルメモリアクセスアーキテクチャにわたって不均一な記憶容量で構成される時点を特定し、メモリ空間内の所望の記憶容量の複数の仮想セクタをさらに特定し、メモリ空間へのアクセス要求に応答して、仮想セクタに均一にアクセスするインターリーブ機能を適用する機構を含む。
【００１２】
別の例示的な実施形態は、不均一な記憶容量を有するメモリ空間の物理チャネルにわたってメモリアクセスを均一にインターリーブするための方法である。本方法は、複数チャネルメモリアーキテクチャが、複数のチャネルにわたって非対称な記憶容量を与えられる時点を特定するステップと、等しい容量の複数の仮想セクタを特定するステップと、メモリ空間へのアクセス要求に応答して、非対称な記憶容量に、仮想セクタにわたって均一にアクセスするインターリーバを介してインターリーブ機能を適用するステップとを含む。
【００１３】
別の例示的な実施形態は、プロセッサ命令およびデータを記憶している非一時的コンピュータ可読媒体であり、その命令は、プロセッサに、複数チャネルメモリアーキテクチャが現在、複数のチャネルにわたって非対称な記憶容量を与えるメモリモジュールを登録されるという指示を受信し、指示に応答して、等しい容量の複数の仮想セクタを特定し、メモリ空間へのアクセス要求に応答して、非対称な記憶容量に、仮想セクタにわたって均一にアクセスするインターリーブ機能を適用するように指示する。
【００１４】
図面では、別段の指示がない限り、種々の図面全体を通して、同じ参照番号が同じ部分を指している。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図内に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することを意図するとき、参照番号に対する文字指定は省略される場合がある。
【図面の簡単な説明】
【００１５】
【図１】コンピューティングデバイスの例示的な実施形態を示す概略図である。
【図２】対称なメモリ容量を有する図1のコンピューティングデバイスの例示的な実施形態を示す概略図である。
【図３】非対称なシステムメモリ容量を有する図2のコンピューティングデバイスを示す概略図である。
【図４】2つの物理チャネルにわたって1:2の比で分散する仮想セクタのセットを有する、図1のコンピューティングデバイスの例示的な実施形態の概略図である。
【図５】異なるデータ転送速度において動作する2つの物理チャネルにわたって1:2の比で分散する仮想セクタのセットを有する、図1のコンピューティングデバイスの例示的な実施形態の概略図である。
【図６】異なるデータ転送速度において動作する2つの物理チャネルにわたって2:3の比で分散する相対的に大きな仮想セクタのセットを有する、図5のコンピューティングデバイスの例示的な実施形態の概略図である。
【図７】対称に登録されるメモリ空間の等価データ帯域幅を達成するために、異なる2つのデータ転送速度において動作する4つの物理チャネルにわたって1:2:2:2の比で分散する代替の仮想セクタのセットを有する、コンピューティングデバイスの例示的な実施形態の概略図である。
【図８】不均一な記憶容量を有するメモリ空間の物理チャネルにわたってメモリアクセスを均一にインターリーブするための方法の例示的な実施形態を示す流れ図である。
【発明を実施するための形態】
【００１６】
「例示的」という言葉は、「一例、事例、または例示として役立つ」ことを意味するように本明細書において使用される。「例示的な」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきではない。
【００１７】
本明細書において、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルも含むことができる。さらに、本明細書において参照される「アプリケーション」は、開くことが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含むことができる。
【００１８】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルも含む場合がある。さらに、本明細書において参照される「コンテンツ」は、開くことが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルやデータ値などの、本質的に実行可能ではないファイルも含むことができる。
【００１９】
本説明において使用されるときに、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連のエンティティを指すことを意図している。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータとすることができる。例として、コンピューティングデバイス上で実行されているアプリケーションとコンピューティングデバイスの両方を、構成要素とすることができる。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在する場合があり、構成要素は、1つのコンピュータに局在する場合があり、および/または、2つ以上のコンピュータ間に分散する場合がある。さらに、これらの構成要素は、そこに記憶される種々のデータ構造を有する種々のコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号を用いて、ローカルシステム内、分散システム内の別の構成要素とやりとりし、および/または、インターネットなどのネットワークにわたって他のシステムとやりとりする1つの構成要素からのデータ)を有する信号に従うなどして、ローカルプロセスおよび/またはリモートプロセスを用いて通信することができる。
【００２０】
本説明において、「ポータブルコンピューティングデバイス」(“PCD”)という用語は、バッテリおよび/またはキャパシタなどの、限られた容量の充電式電源で動作する任意のデバイスを説明するために使用される。充電式電源を備えるPCDは、数十年にわたって使用されてきたが、第3世代(“3G”)および第4世代(“4G”)のワイヤレス技術の出現に結び付けられる、充電式バッテリにおける技術的な進歩により、複数の能力を有する数多くのPCDが可能になった。したがって、PCDは、数ある中でも、携帯電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックすなわちリーダ、メディアプレーヤ、上述のデバイスの組合せ、ワイヤレス接続を有するラップトップコンピュータまたはタブレットコンピュータとすることができる。
【００２１】
インターリーブ機能は、複数の物理チャネルにわたって展開されるメモリモジュールの種々の構成をサポートするように構成することができる。均一にインターリーブされたメモリ空間は、各物理チャネルが同じ記憶容量に結合されるときにインターリーブすることなく可能であるデータ転送速度より、遅いデータ転送速度におけるメモリアクセスをサポートする。
【００２２】
特定の条件下で、遅いデータ転送速度または狭いメモリアクセス帯域幅でも、所望のシステム性能を満たすか、または超えるのに十分な場合がある。別の状況では、複数の物理チャネルにわたって均一な記憶容量の場合に可能であるメモリアクセス帯域幅を達成することが望まれるとき、対称に構成されるメモリ空間の等価メモリアクセス帯域幅を達成するために、あるアルゴリズム手法が、インターリーブ機能と組み合わせて実施される。
【００２３】
メモリ空間が、同じデータ記憶容量を有するN(整数)個のメモリモジュールを登録されるとき、拡散機能が、インターリーバに、仮想セクタにわたってデータアクセスを分散させるように指示する。MOD機能のような例示的なインターリーブ機能をインターリーバにおいて展開することができる。たとえば、全部で192メモリワードをマッピングするためアドレスA[7:0]を3チャネルにわたって拡散させるために、各チャネルが、それぞれ64メモリワードをマッピングする、6ビットアドレス範囲[5:0]を有する場合、A[7:0]MOD3の結果を用いて、チャネルを選択することができる。それゆえ、各チャネルは、A[7:0]の192の取り得る有効アドレスパターンの3分の1を、インターリーブされるようにして厳密に受信することになる。(アドレス193〜255は、メモリが登録されないので、無効アドレスパターンであることに留意されたい)。その際、5ビットチャネル内アドレス指定機能A0、A1、A2のセットを規定して、各チャネル内のメモリロケーションを選択することができる。各チャネル内で取り得るA[7:0]の64メモリロケーションのサブセットは既知であるので、標準的な論理設計および最小化技法を用いる当業者は、これらの64アドレスを各チャネル内の64の固有メモリロケーションにマッピングする類似のチャネル内アドレス指定機能を設計することができる。
【００２４】
実際のインターリーブ機能は、標準的な論理設計および最小化技法を用いる単一のステージとして設計することができるが、別の例では、複数の概念的な過程を介して仮想セクタにわたってデータを分散させるインターリーブ機能が適用される場合がある。4チャネルメモリアーキテクチャの単一のチャネルから取り出された2つのメモリモジュールを用いる例示的な構成では、所望の数のビット/バイトが、複数の世代にわたってラウンドロビン方式で、登録される3つのチャネルを介して記憶される。ビット/バイトの第1の部分は、第1のチャネルに結合されるメモリモジュール内の指定された記憶ロケーションに向けられる。記憶されることになるビット/バイトの第2の部分は、第2のチャネルに結合されるメモリモジュール内の指定された記憶ロケーションに向けられる。記憶されることになるビット/バイトの第3の部分は、第3のチャネルに結合されるメモリモジュール内の指定された記憶ロケーションに向けられる。状況が異なり、第4のチャネルがメモリモジュールに結合されるときには、第4のチャネルに結合されるメモリ要素に向けられることになっていた残りのビット/バイトは、第1のチャネルに結合されるメモリモジュール内の指定された記憶ロケーションに向けることができ、それ以降も同様である。したがって、記憶されるデータは、3つのチャネルに結合されるメモリモジュールによって与えられる利用可能なデータ記憶容量にわたって均等に拡散する。例示される実施形態は、複数のチャネルにわたって不均一なデータ記憶容量を有するメモリ空間の他の例示的な構成を含む。
【００２５】
PCD内の動作を特に参照しながら説明されるが、説明されるメモリ管理システムおよび方法は、それぞれのチャネルにわたって不均一なデータ記憶容量を登録される、複数チャネルメモリアーキテクチャを用いる任意のコンピューティングシステムに適用可能である。別の言い方をすると、そのメモリ管理システムおよび方法は、複数の物理チャネルに結合される不均一に分散したデータ記憶容量を有するデスクトップコンピュータ、サーバコンピュータまたは任意の電子デバイスに適用可能である。
【００２６】
ここで、図示される例が参照される。図1を参照すると、ポータブルコンピューティングデバイス(PCD)の例示的で非限定的な態様が示され、全体的に100で示される。図示されるように、PCD 100はマルチコアCPU 210を含むオンチップシステム120を含む。マルチコアCPU210は、第0のコア215と、第1のコア216と、第Nのコア217とを含む。
【００２７】
図1に示されるように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130がマルチコアCPU 210に結合される。次に、オンチップシステム120の外部にあるディスプレイ/タッチスクリーン132が、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。
【００２８】
図1は、ビデオエンコーダ134、たとえば位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM:sequential couleur a memoire)エンコーダまたは全米テレビジョン方式委員会(NTSC)エンコーダがマルチコアCPU 210に結合されることをさらに示す。さらに、ビデオ増幅器136が、ビデオエンコーダ134およびディスプレイ/タッチスクリーン132に結合される。また、ビデオポート138が、ビデオ増幅器136に結合される。図1に示されるように、ユニバーサルシリアルバス(USB)コントローラ140がマルチコアCPU 210に結合される。また、USBポート142がUSBコントローラ140に結合される。システムメモリ230および加入者識別モジュール(SIM)カード146もマルチコアCPU210に結合される場合があり、マルチコアCPU210とシステムメモリ230との間の接続219は、オンチップシステム120のこれらの要素間でデータを転送するための2つ以上の物理チャネルまたは経路からなる。さらに、図1に示されるように、デジタルカメラ148がマルチコアCPU 210に結合される場合がある。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
【００２９】
図1にさらに示されるように、ステレオオーディオコーデック150がマルチコアCPU 210に結合される場合がある。さらに、オーディオ増幅器152が、ステレオオーディオコーデック150に結合される場合がある。例示的な態様では、第1のステレオスピーカ154および第2のステレオスピーカ156が、オーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158もステレオオーディオコーデック150に結合される場合があることを示す。さらに、マイクロフォン116が、マイクロフォン増幅器158に結合される場合がある。特定の態様では、周波数変調(FM)ラジオチューナ162が、ステレオオーディオコーデック150に結合される場合がある。同様に、FMアンテナ164が、FMラジオチューナ162に結合される。さらに、ステレオポート166が、ステレオオーディオコーデック150に結合される場合がある。
【００３０】
図1は、高周波(RF)トランシーバ168がマルチコアCPU 210に結合されることも示す。RFスイッチ170が、RFトランシーバ168およびRFアンテナ172に結合される場合がある。図1に示されるように、キーパッド174がマルチコアCPU 210に結合される。また、マイクロフォンを備えたモノヘッドセット176が、マルチコアCPU 210に結合される場合がある。さらに、バイブレータデバイス178がマルチコアCPU 210に結合される場合がある。図1は、電源180がUSBコントローラ140を介してオンチップシステム120に結合される場合があることをさらに示す。特定の態様では、電源180は、電力を必要とするPCD100の種々の構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリ、または交流(AC)電源に接続された交流(AC)-DC変圧器から導出されるDC電源である。
【００３１】
図1は、PCD100がデータネットワーク、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用される場合があるネットワークカード188も含む場合があることをさらに示す。ネットワークカード188は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、または当技術分野でよく知られている任意の他のネットワークカードとすることができる。さらに、ネットワークカード188は集積回路に組み込まれる場合がある。すなわち、ネットワークカード188は、チップ内のフルソリューションとすることができ、個別のネットワークカード188でなくてもよい。
【００３２】
図1に示されるように、ディスプレイ/タッチスクリーン132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカ154、第2のステレオスピーカ156、マイクロフォン116、FMアンテナ164、ステレオポート166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178および電源180は、オンチップシステム120の外部にある。
【００３３】
RFトランシーバ168は、1つまたは複数のモデムを含む場合があり、モバイル通信用グローバルシステム(“GSM(登録商標)”)、符号分割多元接続(“CDMA”)、広帯域符号分割多元接続(“W-CDMA”)、時分割同期符号分割多元接続(“TDSCDMA”)、ロングタームエボリューション(“LTE”)、ならびに、限定はしないが、FDB/LTEおよびPDD/LTEワイヤレスプロトコルなどのLTEの変形形態のうちの1つまたは複数をサポートすることができる。
【００３４】
図示される実施形態では、マルチコアCPU210の単一の事例が示される。しかしながら、PCD100に関連付けられる種々の周辺デバイスおよび機能をサポートするために、任意の数の同様に構成されるマルチコアCPUを含むことができることは理解されたい。代替的には、望みに応じて、PCD100に関連付けられる種々の周辺デバイスおよび機能をサポートするために、PCDまたは他のコンピューティングデバイス内に、単一のプロセッサ、またはそれぞれが単一の算術論理ユニットもしくはコアを有する複数のプロセッサを配置することができる。
【００３５】
例示される実施形態は、完全集積オンチップシステム120内に構成されるシステムメモリ230を示す。しかしながら、Mバイトの対応するデータ記憶容量を有する、2つ以上のベンダーから提供されるメモリモジュールを、オンチップシステム120の外部に配置できることは理解されたい。オンチップシステム120の外部に配置されるとき、システムメモリ230をサポートする種々のメモリモジュールは、データおよび電力をメモリモジュールに転送するのに適した電気的接続を含む、修正された複数チャネルメモリバス(図示せず)によってCPU210に結合される。
【００３６】
特定の態様では、本明細書において説明される方法ステップのうちの1つまたは複数は、システムメモリ230に記憶されたデータおよびプロセッサ命令の組合せを介して使用可能にされる場合がある。これらの命令は、本明細書において説明される方法を実行するために、マルチコアCPU 210によって実行される場合がある。さらに、マルチコアCPU210、メモリ230、EEPROM(図示せず)またはその組合せが、インターリーバロジックを含むメモリ管理ロジック、および本明細書において説明される方法のステップのうちの1つまたは複数を実行するための構成パラメータの非一時的表現を記憶するための手段としての役割を果たすことができる。示されるように、メモリコントローラまたは他のメモリ管理ロジックが、CPU210とシステムメモリ230との間でデータを通信する複数のメモリアクセスチャネルに関して、システムメモリ230が非対称に登録される時点を特定する。また、示されるように、インターリーバロジックが、等しい記憶容量を有する仮想セクタを規定し、メモリ空間へのアクセス要求に応答して、データを仮想セクタにわたって均一に分散させるアルゴリズム解法を適用することによって、システムメモリ230をサポートする物理的なアーキテクチャに従って応答する。
【００３７】
図2は、CPU210と、システムメモリ230と、接続219との詳細を示す概略図であり、接続219は、メモリ空間290が2つの物理チャネルにわたって対称なメモリ容量をサポートされるときにCPU210とメモリ空間290との間のデータ転送を可能にする。図2に示されるように、メモリ空間290は、チャネル220(チャネル0)を介してCPU210に結合される第1のセットの2つのメモリモジュールと、チャネル222(チャネル1)を介してCPU210に結合される第2のセットの2つのメモリモジュールとによってサポートされる。第1のセットのメモリモジュールはメモリモジュール291およびメモリモジュール292を含む。メモリモジュール291およびメモリモジュール292は、ダイナミックランダムアクセスメモリ(DRAM)集積回路で実現される場合があり、それぞれMバイトのデータ記憶容量を提供する。第2のセットのメモリモジュールは、メモリモジュール293およびメモリモジュール294を含む。メモリモジュール293およびメモリモジュール294も、DRAM集積回路で実現される場合があり、同じくMバイトのデータ記憶容量を提供する。メモリモジュール291〜294がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、O/Sロジック213は、メモリコントローラ211を用いて、記憶されることになるデータを、メモリ空間290にわたって任意の所望のロケーションに配置することができる。記憶されるデータを、メモリコントローラ211によって望まれるように配置することができるだけでなく、データは、最大帯域幅で、均一なレイテンシで4Mバイトのメモリ空間290に転送することができる。
【００３８】
図2に示されるように、CPU210は、メモリコントローラ211と、インターリーバロジック212と、オペレーティングシステム(O/S)213と、キャッシュ214と、コア215とを含む。これらの要素は、CPU210内の1つまたは複数の内部接続またはデータバス(図示せず)に沿って互いに結合される。メモリコントローラ211は、システムメモリ230に入るデータおよびシステムメモリから出るデータの流れを管理するデジタル回路である。メモリコントローラ211は、インターリーバロジック212によって支援または強化される。インターリーバロジック212は、CPU210とシステムメモリ230との間の特定のI/O動作のために、利用可能なチャネルのうちのどのチャネルが使用されることになるかを特定するアドレス、ラベルまたは他の情報を与える。また、インターリーバロジックは通常、インターリーブ機能に適合するようにして、各チャネルに送信されるサブチャネルアドレスを再構成または再計算する(たとえば、32ビットアドレスA[31:0]を有するシステムの場合の普通の2チャネルインターリーバは、アドレスビットA[10]を用いて、チャネルを選択し、その後、チャネル0および1に対するチャネル内アドレスA0[A[31:11], A[9:0]]およびA1[31:11], A[9:0]]をそれぞれ生成することができる)。O/Sロジック213は、コア215によって実行されるときに、種々の周辺リソースを管理し、メモリ空間290内に記憶されるコンピュータプログラムのための共通サービスを提供する命令セットを含む。O/Sロジック213は、システムメモリに230に記憶され、必要に応じて、CPU210に読み込むことができる。代替的には、O/Sロジック213は、CPU210に結合されるか、または組み込まれる読取り専用メモリモジュールに記憶することができる。キャッシュ214は、頻繁に用いられるシステムメモリロケーションからのデータのコピーを記憶するためにCPU210によって用いられる、より小型で、高速のメモリである。キャッシュ214は、メモリにアクセスする平均時間を短縮する。いくつかのメモリアクセスが、キャッシュされたメモリロケーションからのものである限り、メモリアクセスの平均レイテンシは、システムメモリ230のレイテンシよりも、キャッシュレイテンシに近くなる。コア215は、プログラム命令を読み出し、バッファリングし、実行する回路のセットを含む。
【００３９】
図示される構成では、メモリコントローラ211はCPU210と同じダイ上に集積される。代替の構成では、メモリコントローラ211は、CPU210と通信する別の集積回路上に実装することができる。メモリコントローラ211は、フロントエンド部分およびバックエンド部分を用いて構成される。フロントエンド部分は、要求および応答をバッファリングし、コンピューティングデバイス200(図示せず)のCPU210および他の部分へのインターフェースを提供する。このフロントエンド部分は一般的に、メモリモジュールタイプから独立している。対照的に、バックエンド部分は、メモリモジュールへのインターフェースを提供し、メモリモジュール内のメモリ回路のタイプに依存する。
【００４０】
例示される構成では、インターリーバロジック212は、同じダイ上に集積され、コア215およびメモリコントローラ211のような別の回路または回路のセットとして表される。代替の実施形態では、インターリーバロジック212は、メモリコントローラ211またはO/Sロジック213のうちの一方を使用可能にする回路のサブ部分とすることができる。どのように具現されても、インターリーバロジック212は、十分な数量、または少なくともバランスのとれた数量のアドレス指定可能メモリモジュールを提示されるとき、チャネル220および222を用いて、メモリ空間290内に記憶されることになるデータを均一に分散させる。
【００４１】
図3は、非対称なシステムメモリ容量を有する、図2のコンピューティングデバイスを示す概略図である。非対称なシステムメモリ容量は、製造業者が十分な数量に満たないメモリモジュールを提供することに決めるとき、またはメモリモジュールが作動しなくなるときに生じる。図3に示される例示的な実施形態に示されるように、メモリ空間390は、チャネル220(チャネル0)を介してCPU210に結合される第1のメモリモジュール391と、チャネル222(チャネル1)を介してCPU210に結合される2つのメモリモジュールとによってサポートされる。メモリモジュール391、メモリモジュール393およびメモリモジュール394は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール391、393、394がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)はMバイトに結合されるのに対して、チャネル222(チャネル1)は2Mバイトに結合される。図3に示されるように、メモリモジュール391およびメモリモジュール393にわたる物理チャネル220と222との間に1:1のデータアクセス比がある。チャネル220に結合される第2のメモリモジュールが存在しない結果として、物理チャネル220と222との間に0:1のデータアクセス比が生じる。メモリモジュール394によってサポートされるメモリ空間390のその部分は、インターリーブされたデータを受信することはできず、それゆえ、2つのメモリモジュールがそれぞれのチャネルを介して同時にアクセスすることができるメモリ空間の部分より、単位時間あたり少ないデータを処理する。チャネル220に結合される第2のメモリモジュールが存在しないことは、メモリコントローラ211によって検出可能とすることができ、メモリコントローラは、インターリーバロジック212、またはCPU210にアクセス可能な他のロジックにそれを指示する信号を通信することができる。それに応じて、インターリーバロジック212または他のロジックは、1つまたは複数のシステムパラメータに基づいて、事前にプログラムされたように応答することができる。代替的には、コンピューティングデバイス300は、固定された方法で応答することができる。
【００４２】
物理チャネル220、222にわたって非対称な記憶容量で構成される複数チャネルメモリアクセスアーキテクチャ302は、部分的な、または不均一なインターリーブ機能によって機能を果たすようにすることができる。すなわち、メモリ空間390の第1の部分(例示される実施形態では、最下部分)は、メモリモジュール391および393によってサポートされる最大データ速度においてインターリーブすることができ、一方、メモリ空間390の第2の部分は、非インターリーブメモリアクセス要求しか処理することができない。したがって、インターリーバロジック212を用いて、全部で3Mの記憶容量のうちの2Mバイトにわたってメモリ空間に、そしてメモリ空間からデータを転送する。
【００４３】
サポート可能であるが、そのような構成は、すべてのメモリアクセスを非インターリーブデータ転送速度において十分にサポートできるとは限らない状況下で、O/Sロジック213に、および/またはO/Sロジック213によって提供されるサービスを使用するアプリケーションプログラム(図示せず)に、著しい負荷を導入する。これが当てはまるとき、どのメモリアクセスをメモリ空間390の非インターリーブ部分にアドレス指定することができるか特定することが、O/Sロジック213および/またはアプリケーションプログラムに課せられる。代替的には、コンピューティングデバイス300は、すべてのメモリI/Oを非インターリーブまたは低速のデータ転送速度において送信することができる。
【００４４】
図4は、2つの物理チャネルにわたって1:2の比で分散する仮想セクタのセットを有する、図1のコンピューティングデバイスの例示的な実施形態の概略図である。図4に示される例示的な実施形態に示されるように、メモリ空間440は、チャネル220(チャネル0)を介してCPU210に結合される第1のメモリモジュール441と、チャネル222(チャネル1)を介してCPU210に結合される2つのメモリモジュールとによってサポートされる。メモリモジュール441、メモリモジュール443およびメモリモジュール444は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール441、443、444がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)はMバイトに結合されるのに対して、チャネル222(チャネル1)は2Mバイトに結合される。しかしながら、3つの利用可能なメモリモジュールのうちの2つにわたってデータをインターリーブするために部分的インターリーブ機能を用いる代わりに、メモリ空間440は等しい容量の仮想セクタに分割される。図4に示されるように、1つの仮想セクタが、メモリモジュール441、メモリモジュール443およびメモリモジュール444のそれぞれに一致する。図4に示されるように、物理チャネル220と222との間に1:2のデータアクセス比がある。
【００４５】
図4において提示されるような、非対称な記憶容量を有する複数チャネルメモリアクセスアーキテクチャは、修正インターリーバロジック418によって使用可能にされる仮想インターリーブ機能を使用する。仮想セクタの数が奇数であるとき、修正インターリーバロジック418は奇数方向拡散機能を用いて、仮想セクタにわたってデータを分散させる。
【００４６】
プログラム可能パラメータに関する記憶と、仮想チャネルにわたってデータを分散させるときに、修正インターリーバロジック418に指示するか、または修正インターリーバロジック418を調整する所望の拡散機能とを提供するために、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)411がプロセッサCPU210と一体に構成される。たとえば、3方向拡散機能は、メモリアクセスをチャネル220とチャネル222との間で1:2の比で、メモリ空間440にわたって動的に分散させる。その結果として、メモリ空間440の利用可能な容量を均一にインターリーブすることができる。そのような構成では、メモリ空間440にわたるCPU210とメモリ空間440との間のデータ転送速度は、両方のチャネルにわたって、同等の能力を有するメモリモジュールによってサポートされる最大データ転送速度から低減されるが、図3に示される部分的インターリーブ方法によってサポートされる低速の非インターリーブデータ転送より高速であり、管理が容易である。すべてのメモリアクセスが同じデータ転送速度において実行されるので、O/Sロジック216、および/またはコア215において実行されるアプリケーションプログラムは、データをメモリ空間440内のどこにでも配置することができる。
【００４７】
代替の実施形態では、仮想セクタインターリーブ機能は、より多くの、またはより少ない仮想セクタを使用するようにプログラムまたは調整することができる。いくつかの構成では、修正インターリーバロジック418によって使用される仮想セクタの数は、メモリ空間440をサポートするメモリモジュールの数より少なくすることができる。いくつかの他の構成では、修正インターリーバロジック418によって使用される仮想セクタの数は、メモリ空間440をサポートするメモリモジュールの数より多くすることができる。メモリモジュールの数と、仮想セクタの数とがそのように一致しないことは、異なる容量を有するメモリモジュールを用いてメモリ空間をサポートするときに、利用可能な記憶容量を仮想セクタに均等に分割する複雑さを緩和することができる。複数のチャネルにわたってデータを分散させるプログラム可能仮想セクタ拡散機能によって、同じCPU210が、完全登録および部分登録の両方のメモリチャネルをサポートできるようになる。
【００４８】
例示的な拡散機能は、メモリアクセスチャネルを規定するためのコードを含むことができる。3つの利用可能なチャネルを有するシステムの場合、MOD機能のような例示的な拡散機能を展開することができる。たとえば、全部で192メモリワードをマッピングするために、アドレスA[7:0]を3チャネルにわたって拡散させるために、各チャネルが、それぞれ64メモリワードをマッピングする、6ビットアドレス範囲[5:0]を有する場合、A[7:0]MOD3の結果を用いて、チャネルを選択することができる。それゆえ、各チャネルは、A[7:0]の192の取り得る有効アドレスパターンの3分の1を、インターリーブされるようにして厳密に受信することになる。(アドレス193〜255は、メモリが登録されないので、無効アドレスパターンであることに留意されたい)。その際、5ビットチャネル内アドレス指定機能A0、A1、A2のセットを規定して、各チャネル内のメモリロケーションを選択することができる。各チャネル内で取り得るA[7:0]の64メモリロケーションのサブセットは既知であるので、標準的な論理設計および最小化技法を用いる当業者が、これらの64アドレスを各チャネル内の64の固有メモリロケーションにマッピングする好みのチャネル内アドレス指定機能を設計することができる。
【００４９】
図5は、異なるデータ転送速度において動作する2つの物理チャネルにわたって1:2の比で分散する仮想セクタのセットを有する、図1のコンピューティングデバイスの例示的な実施形態の概略図である。図5に示される例示的な実施形態に示されるように、メモリ空間540は、チャネル220(チャネル0)を介してCPU210に結合される第1のメモリモジュール541と、チャネル222(チャネル1)を介してCPU210に結合される2つのメモリモジュールとによってサポートされる。メモリモジュール541、メモリモジュール543およびメモリモジュール544は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール541、543、544がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)はMバイトに結合されるのに対して、チャネル222(チャネル1)は2Mバイトに結合される。しかしながら、図4に示されるように、3つの仮想セクタだけにわたってデータをインターリーブするために仮想インターリーブ機能を用いる代わりに、メモリ空間540は等しい容量の仮想セクタに分割され、修正インターリーバロジック518は、チャネル220を介して通信するときに第1のデータ転送速度を使用し、チャネル222を介して通信するときに、第2のデータ転送速度を使用する。例示的な実施形態では、メモリモジュール541は、256Mバイトのデータ容量を有する低電力ダブルデータレート2(LPDDR2)メモリ要素であり、266MHzのクロック周波数において動作することができる。この同じ例において、メモリモジュール543およびメモリモジュール544は同じデータ容量を有するLPDDR2メモリ要素であるが、533MHzのクロック周波数において動作することができる。その結果として、例示的な実施形態は、物理チャネルにわたる非対称なデータ記憶容量に関連付けられる潜在的なコストを削減できるようにしながら、メモリ空間540にわたって均一な帯域幅を達成する。例示的な実施形態は、チャネルにわたる1:2の容量比、チャネルにわたって分散する仮想セクタにおける1:2の比、およびクロック周波数における1:2の比を含むが、クロック周波数は、仮想セクタ比および各チャネルに結合される仮想セクタの数から独立している。
【００５０】
図5に示されるように、1つの仮想セクタが、メモリモジュール541、メモリモジュール543およびメモリモジュール544のそれぞれに一致する。図5にさらに示されるように、物理チャネル220と222との間に1:2のデータアクセス比がある。さらに、チャネル222と通信するメモリモジュール543、544は、修正インターリーバロジック518がメモリモジュールおよびチャネルによってサポートされる最も速い速度(または最大データ転送速度)において、または最大データ転送速度より遅い所望のデータ転送速度においてデータを均一にインターリーブすることができるメモリ空間540の領域を規定する。例示される実施形態では、チャネル222は、チャネル220によってサポートされるデータ転送速度の2倍であるデータ転送速度において、CPU210とデータを通信する。
【００５１】
プログラム可能パラメータに関する記憶と、仮想チャネルにわたってデータを分散させるときに、修正インターリーバロジック518に指示するか、または修正インターリーバロジック518を調整する所望の拡散機能とを提供するために、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)511がCPU210と一体に構成される。いくつかの構成では、EEPROM511が、仮想セクタの数、物理通信チャネルの数、メモリ空間540にわたってデータを拡散させるときに使用するデータ転送速度を特定する1つまたは複数のパラメータを含む。いくつかの構成では、CPU210とメモリ空間540との間のチャネルにわたってデータを通信するために使用されるデータ転送速度は、1つまたは複数の他のチャネルに応じて特定される場合がある。
【００５２】
図6は、異なるデータ転送速度において動作する2つの物理チャネルにわたって2:3の比で分散する相対的に大きな仮想セクタのセットを有する、図5のコンピューティングデバイスの例示的な実施形態の概略図である。図6に示される例示的な実施形態に示されるように、メモリ空間640は、チャネル220(チャネル0)を介してCPU210に結合されるメモリモジュール641およびメモリモジュール642と、チャネル222(チャネル1)を介してCPU210に結合されるメモリモジュール644、メモリモジュール645およびメモリモジュール646とによってサポートされる。メモリモジュール641、642、644、645、646は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール641、642、644、645、646がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)は2Mバイトの記憶容量に結合されるのに対して、チャネル222(チャネル1)は3Mバイトの記憶容量に結合される。ここでは、メモリ空間640は、等しい容量の5つの仮想セクタに分割され、修正インターリーバロジック618は、チャネル220を介して通信するときに第1のデータ転送速度を使用し、チャネル222を介して通信するときに第2のデータ転送速度を使用する。
【００５３】
図6に示されるように、第1のデータ転送速度および第2のデータ転送速度(f(0), f(1))は、完全にインターリーブされるシステムにおいて展開されるデータ転送速度ftと、チャネル内の仮想セクタの数(N0, N1)と、物理チャネルの数とメモリ空間640内の仮想セクタの総数との比(P/Vtot)との関数として求めることができる。具体的には、メモリ空間640が、同等の容量の完全にインターリーブされる記憶システムによって提供される帯域幅を達成できるようにする第1のデータ転送速度および第2のデータ転送速度は、完全にインターリーブされるシステムのデータ転送周波数と、チャネル内の仮想セクタの数と、物理チャネルの数とシステム600によって展開される仮想セクタの総数との比との積によって求めることができる。
【００５４】
例示的な実施形態では、メモリモジュール641およびメモリモジュール642は、それぞれが256Mバイトのデータ容量を有するDRAM要素であり、320MHzのクロック周波数において動作することができる。この同じ例において、メモリモジュール644、メモリモジュール645およびメモリモジュール646は256Mバイトの同じデータ容量を有するDRAM要素であるが、480MHzのクロック周波数において動作することができる。その結果として、例示的な実施形態は、物理チャネルにわたる非対称なデータ記憶容量に関連付けられる潜在的なコストを削減できるようにしながら、メモリ空間640にわたって均一な帯域幅を達成する。例示的な実施形態は、チャネルにわたる2:3の容量比、チャネルにわたって分散する仮想セクタにおける2:3の比、およびクロック周波数における2:3の比を含むが、クロック周波数は、仮想セクタ比および各チャネルに結合される仮想セクタの数から独立している。
【００５５】
図6に示されるように、1つの仮想セクタが、メモリモジュール641、642、644、645、646のそれぞれに一致する。さらに、チャネル222と通信するメモリモジュール644〜646は、修正インターリーバロジック618がメモリモジュールおよびチャネルによってサポートされる最も速い速度において、または最大データ転送速度より遅い所望のデータ転送速度において、データを均一にインターリーブすることができるメモリ空間640の領域を規定する。例示される実施形態では、チャネル222は、チャネル220によってサポートされるデータ転送速度の1.5倍であるデータ転送速度において、CPU210とデータを通信する。
【００５６】
プログラム可能パラメータに関する記憶と、仮想チャネルにわたってデータを分散させるときに、修正インターリーバロジック618に指示するか、または修正インターリーバロジック618を調整する所望の拡散機能とを提供するために、EEPROM611がプロセッサCPU210と一体に構成される。いくつかの構成では、EEPROM611が、仮想セクタの数、物理通信チャネルの数、メモリ空間640にわたってデータを拡散させるときに使用するデータ転送速度を特定する1つまたは複数のパラメータを含む。いくつかの構成では、CPU210とメモリ空間640との間のチャネルにわたってデータを通信するために使用されるデータ転送速度は、1つまたは複数の他のチャネルに応じて特定される場合がある。
【００５７】
図7は、対称に登録されるメモリ空間の等価データ帯域幅を達成するために、2つの異なるデータ転送速度において動作する4つの物理チャネルにわたって1:2:2:2の比で分散する代替の仮想セクタのセットを有するコンピューティングデバイスの例示的な実施形態の概略図である。図7に示される例示的な実施形態に示されるように、メモリ空間740は、チャネル220(チャネル0)を介してCPU210に結合されるメモリモジュール741と、チャネル222(チャネル1)を介してCPU210に結合されるメモリモジュール743およびメモリモジュール744と、チャネル224(チャネル2)を介してCPU210に結合されるメモリモジュール745およびメモリモジュール746と、チャネル226(チャネル3)を介してCPU210に結合されるメモリモジュール747およびメモリモジュール748とによってサポートされる。メモリモジュール741、743、744、745、746、747、748は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール741、743〜748がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)はMバイトの記憶容量に結合されるのに対して、チャネル222、224、226(チャネル1〜3)は2Mバイトの記憶容量に結合される。ここでは、メモリ空間740は、等しい容量の7つの仮想セクタに分割され、修正インターリーバロジック718は、チャネル220を介して通信するときに第1のデータ転送速度を、チャネル222、224、226を介して通信するときに第2のデータ転送速度を使用する。
【００５８】
図7に示されるように、第1のデータ転送速度および第2のデータ転送速度(f(0), f(1, 2, 3))は、完全にインターリーブされるシステムにおいて展開されるデータ転送速度ftと、チャネル内の仮想セクタの数(N0, N1, 2, 3)と、物理チャネルの数とメモリ空間740内の仮想セクタの総数との比(P/Vtot)との関数として求めることができる。具体的には、メモリ空間740が、同等の容量の完全にインターリーブされる記憶システムによって提供される帯域幅を達成できるようにする第1のデータ転送速度および第2のデータ転送速度は、完全にインターリーブされるシステムのデータ転送周波数と、チャネル内の仮想セクタの数と、物理チャネルの数とシステム700によって展開される仮想セクタの総数との比との積によって求めることができる。
【００５９】
例示的な実施形態では、メモリモジュール741は、256Mバイトのデータ容量を有するDRAM要素であり、約229MHzのクロック周波数において動作することができる。この同じ例において、メモリモジュール743〜748は256Mバイトの同じデータ容量を有するDRAM要素であるが、約457MHzのクロック周波数において動作することができる。その結果として、例示的な実施形態は、4つの物理チャネルにわたる非対称なデータ記憶容量に関連付けられる潜在的なコストを削減できるようにしながら、メモリ空間740にわたって均一な帯域幅を達成する。例示的な実施形態は、4つのチャネルにわたる1:2:2:2の容量比、チャネルにわたって分散する仮想セクタにおける1:2:2:2の比、およびクロック周波数における1:2の比を含むが、クロック周波数は、仮想セクタ比および各チャネルに結合される仮想セクタの数から独立して適用することができる。
【００６０】
図7に示されるように、1つの仮想セクタが、メモリモジュール741、743〜748のそれぞれに一致する。さらに、チャネル222、224、226と通信するメモリモジュール743〜748は、修正インターリーバロジック718がメモリモジュールおよびチャネルによってサポートされる最も速い速度において、または最大データ転送速度より遅い所望のデータ転送速度において、データを均一にインターリーブすることができるメモリ空間740の領域を規定する。例示される実施形態では、チャネル222、224、226はそれぞれ、チャネル220によってサポートされるデータ転送速度の約2倍であるデータ転送速度において、CPU210とデータ通信する。
【００６１】
プログラム可能パラメータに関する記憶と、仮想チャネルにわたってデータを分散させるときに、修正インターリーバロジック718に指示するか、または修正インターリーバロジック718を調整する所望の拡散機能とを提供するために、EEPROM711がプロセッサCPU210と一体に構成される。いくつかの構成では、EEPROM711が、仮想セクタの数(たとえば7)、物理通信チャネルの数(たとえば4)、メモリ空間740にわたってデータを拡散させるときに使用するデータ転送速度(229MHz, 457MHz)を特定する1つまたは複数のパラメータを含む。
【００６２】
例示される実施形態は偶数のチャネルと、奇数のメモリモジュールにわたって分散する奇数の仮想セクタとを含むが、結果として複数のチャネルにわたって非対称な記憶容量を生成する数多くの他の構成が可能である。たとえば、偶数のメモリモジュールを奇数のチャネルにわたって展開することができる。1つのそのような構成では、全部で4つのメモリモジュールを、3つのチャネル(1:1:2, 1:2:1, 2:1:1)にわたって分散させることができる。メモリモジュールが同じ記憶容量を共有するとき、仮想セクタの数は、メモリモジュールの記憶容量以下にすることができる。さらなる例として、チャネルにわたる記憶容量が非対称であることは、偶数チャネルにわたって異なる記憶容量を有するメモリモジュールを展開する結果とすることができる。1つのそのような構成では、1GBの記憶容量を有する第1のメモリモジュールが第1のチャネルに結合され、2GBの記憶容量を有する第2のメモリモジュールが第2のチャネルに結合される。この構成では、インターリーバ機能は、それぞれ1GBの3つの仮想セクタにわたってデータを均等に分散させることによって応答することができる。複数のチャネルにわたって分散する非対称な記憶容量を有するこれらの構成および他の構成は、仮想セクタを利用してコンピューティングデバイス内の利用可能な記憶装置にアクセスする上記のインターリーブ機能および他の機能によって改善することができる。
【００６３】
図8は、不均一なデータ記憶容量を有するメモリ空間の物理チャネルにわたってメモリアクセスを均一にインターリーブするための方法800の例示的な実施形態を示す流れ図である。ブロック802において、コンピューティングシステムに関連付けられるメモリコントローラまたは他のセンサが、メモリ空間がCPU210とシステムメモリとの間の複数の物理チャネルにわたって不均一なデータ記憶容量を含む時点を特定する。ブロック804において、プログラム可能インターリーバまたはインターリーバロジックが、メモリ空間内の所望の記憶容量の仮想セクタのセットを特定する。ブロック806において、インターリーバまたはインターリーバロジックは、メモリ空間内の仮想セクタまたは仮想セクタの一部にわたって、均一になるようにメモリ空間へのアクセス要求に応答する。判断ブロック808において、インターリーバまたはインターリーバロジックを用いて、メモリ空間へのアクセス要求を処理し続けるという判断が行われる。その応答が、“Yes”を付されたフロー制御矢印によって指示されるように肯定であるとき、ブロック806および808内の機能が繰り返される。“No”を付されたフロー制御矢印によって指示されるように、そうでない場合には、終了判断ブロック808において、方法800は終了する。
【００６４】
本発明が説明されたように機能するために、本明細書において説明されるプロセスまたはプロセスフローにおけるいくつかのステップが他のステップに先行するのは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変更しない場合には、本発明は、説明されたステップの順序に限定されない。すなわち、いくつかのステップが、本発明の範囲および趣旨から逸脱することなく、他のステップの前、後、またはそれと並行して(実質的に同時に)実行される場合があることは認識されたい。場合によっては、いくつかのステップは、本発明から逸脱することなく、省略される場合があるか、または実行されない場合がある。さらに、「それ以降」、「その後」、「次に」、「後に」などの語は、ステップの順序を制限することは意図していない。これらの言葉は、単に例示的な方法の説明を通して読者を導くために使用される。
【００６５】
さらに、プログラミングに関する当業者は、たとえば、本明細書における流れ図および関連する説明に基づいて、難なく、開示される発明を実施するコンピュータのコードを書くことができるか、または実施するのに適したハードウェアおよび/もしくは回路を特定することができる。したがって、特定のプログラムコード命令のセットまたは詳細なハードウェアデバイスの開示は、本発明の作製方法および使用方法を十分に理解するのに必要であるとはみなされない。特許請求されるプロセッサ実施プロセスの本発明の機能性は、種々のプロセスフローを例示する場合がある図面とともに、上述の説明において、より詳細に説明されている。
【００６６】
先に示されたような1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施することができる。ソフトウェアにおいて実施される場合には、その機能は、非一時的プロセッサ可読媒体のようなコンピュータ可読媒体上に1つまたは複数の命令またはコードとして記憶することができる。コンピュータ可読媒体は、データ記憶媒体を含む。
【００６７】
記憶媒体は、コンピュータまたはプロセッサによってアクセスすることができる任意の利用可能な媒体とすることができる。例であって、限定はしないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送または記憶するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。ディスク(diskおよびdisc)は、本明細書において使用されるときに、コンパクトディスク(disc)(“CD”)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(“DVD”)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、diskは通常、データを磁気的に再生し、一方、discは、レーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体の範囲内に含まれるべきである。
【００６８】
選択された態様が詳細に図示および説明されたが、以下の特許請求の範囲によって規定されるような本開示の概念から逸脱することなく、本明細書において様々な置換および改変がなされる場合があることは理解されよう。
【符号の説明】
【００６９】
100  ポータブルコンピューティングデバイス
116  マイクロフォン
120  オンチップシステム
128  ディスプレイコントローラ
130  タッチスクリーンコントローラ
132  ディスプレイ/タッチスクリーン
134  ビデオエンコーダ
136  ビデオ増幅器
138  ビデオポート
140  ユニバーサルシリアルバス(USB)コントローラ
142  USBポート
146  加入者識別モジュール(SIM)カード
148  デジタルカメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカ
156  第2のステレオスピーカ
158  マイクロフォン増幅器
162  周波数変調(FM)ラジオチューナ
164  FMアンテナ
166  ステレオポート
168  高周波(RF)トランシーバ
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  モノヘッドセット
178  バイブレータデバイス
180  電源
188  ネットワークカード
200  コンピューティングデバイス
210  マルチコアCPU
211  メモリコントローラ
212  インターリーバロジック
213  オペレーティングシステム(O/S)ロジック
214  キャッシュ
215  コア
215  第0のコア
216  第1のコア
217  第Nのコア
219  接続
220  チャネル
222  チャネル
224  チャネル
226  チャネル
230  システムメモリ
290  メモリ空間
291  メモリモジュール
292  メモリモジュール
293  メモリモジュール
294  メモリモジュール
300  コンピューティングデバイス
302  複数チャネルメモリアクセスアーキテクチャ
390  メモリ空間
391  第1のメモリモジュール
393  メモリモジュール
394  メモリモジュール
411  電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)
418  修正インターリーバロジック
440  メモリ空間
441  第1のメモリモジュール
443  メモリモジュール
444  メモリモジュール
511  EEPROM
518  修正インターリーバロジック
540  メモリ空間
541  第1のメモリモジュール
543  メモリモジュール
544  メモリモジュール
600  システム
611  EEPROM
618  修正インターリーバロジック
640  メモリ空間
641  メモリモジュール
642  メモリモジュール
644  メモリモジュール
645  メモリモジュール
646  メモリモジュール
700  システム
711  EEPROM
718  修正インターリーバロジック
740  メモリ空間
741  メモリモジュール
743  メモリモジュール
744  メモリモジュール
745  メモリモジュール
747  メモリモジュール
748  メモリモジュール
【図１】
0006378325.tif 000002
【図２】
0006378325.tif 000003
【図３】
0006378325.tif 000004
【図４】
0006378325.tif 000005
【図５】
0006378325.tif 000006
【図６】
0006378325.tif 000007
【図７】
0006378325.tif 000008
【図８】
0006378325.tif 000009