(57)【要約】  選択的な電力または性能の最適化を伴うメモリチャネルインターリービングを提供するためのシステムおよび方法が開示される。1つのそのような方法は、インターリーブ領域および線形領域を有する2つ以上のそれぞれのメモリチャネルを介してアクセスされる2つ以上のメモリデバイスについてメモリアドレスマップを構成するステップを含む。インターリーブ領域は、比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備える。線形領域は、比較的低い電力のユースケースのための線形アドレス空間を備える。メモリ要求は、1つまたは複数のクライアントから受信される。メモリ要求は、電力節約または性能に対する選好を備える。受信されたメモリ要求は、電力節約または性能に対する選好に従って、線形領域またはインターリーブ領域に割り当てられる。
2016529618.tif 000002
【特許請求の範囲】
【請求項１】
選択的な電力または性能の最適化を伴うメモリチャネルインターリービング方法であって、
インターリーブ領域および線形領域を有する2つ以上のそれぞれのメモリチャネルを介してアクセスされる2つ以上のメモリデバイスについてメモリアドレスマップを構成するステップであって、前記インターリーブ領域が比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備え、前記線形領域が比較的低い電力のユースケースのための線形アドレス空間を備える、ステップと、
1つまたは複数のクライアントからメモリ要求を受信するステップであって、前記メモリ要求が電力節約または性能に対する選好を備える、ステップと、
電力節約または性能に対する前記選好に従って、前記メモリ要求を前記線形領域または前記インターリーブ領域に割り当てるステップと
を備える方法。
【請求項２】
前記線形アドレス空間が前記メモリデバイスのうちの第1のメモリデバイスに関連付けられ、前記メモリチャネルのうちの第1のメモリチャネルを介してアクセスされる第1のアドレス範囲と、前記メモリデバイスのうちの第2のメモリデバイスに関連付けられ、前記メモリチャネルのうちの第2のメモリチャネルを介してアクセスされる第2のアドレス範囲とを備える、請求項1に記載の方法。
【請求項３】
前記メモリ要求を前記線形領域に前記割り当てるステップが、前記第2のメモリデバイスが電力節約モードに置かれている間に、前記第1のメモリデバイスに関連付けられた前記第1のアドレス範囲を使用するステップを備える、請求項2に記載の方法。
【請求項４】
前記線形領域の前記第1のアドレス範囲における最終メモリアドレスに達したときに、
前記第1のメモリデバイスを前記電力節約モードに置くステップと、
前記第2のメモリデバイスをアクティブ化するステップと、
前記電力節約選好を有する次の受信されたメモリ要求を、前記第2のメモリデバイスに関連付けられた前記第2のアドレス範囲に対応する第1のメモリアドレスに割り当てるステップと
をさらに備える、請求項3に記載の方法。
【請求項５】
前記メモリ要求が前記線形領域に割り当てられ、前記メモリデバイスのうちの第1のメモリデバイスがアクティブ化され、前記メモリデバイスのうちの第2のメモリデバイスが電力節約モードに置かれる、請求項1に記載の方法。
【請求項６】
電力節約または性能に対する前記選好がオペレーティングシステムへのシステムコールを介して指定される、請求項1に記載の方法。
【請求項７】
電力節約または性能に対する前記選好がメモリヒープのタイプを指定するパラメータを備える、請求項1に記載の方法。
【請求項８】
前記メモリデバイスがダイナミックランダムアクセスメモリ(DRAM)デバイスを備える、請求項1に記載の方法。
【請求項９】
チャネルインターリーバがシステムオンチップ(SOC)バスを介して前記メモリ要求を受信する、請求項1に記載の方法。
【請求項１０】
メモリ帯域幅の履歴ログを備えるデータベースに対して、性能に対する前記選好を有するメモリ要求を有効にするステップと、
有効にされない場合、性能に対する前記選好を無効にし、前記有効にされなかったメモリ要求を前記線形領域に割り当てるステップと
をさらに備える、請求項1に記載の方法。
【請求項１１】
前記メモリ要求を前記線形領域または前記インターリーブ領域に前記割り当てるステップが、動的なメモリ割振りまたは所定の静的なメモリ割振りを備える、請求項1に記載の方法。
【請求項１２】
選択的な電力または性能の最適化を伴うメモリチャネルインターリービングを提供するためのシステムであって、
インターリーブ領域および線形領域を有する2つ以上のそれぞれのメモリチャネルを介してアクセスされる2つ以上のメモリデバイスについてメモリアドレスマップを構成するための手段であって、前記インターリーブ領域が比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備え、前記線形領域が比較的低い電力のユースケースのための線形アドレス空間を備える、手段と、
1つまたは複数のクライアントからメモリ要求を受信するための手段であって、前記メモリ要求が電力節約または性能に対する選好を備える、手段と、
電力節約または性能に対する前記選好に従って、前記メモリ要求を前記線形領域または前記インターリーブ領域に割り当てるための手段と
を備えるシステム。
【請求項１３】
前記線形アドレス空間が前記メモリデバイスのうちの第1のメモリデバイスに関連付けられ、前記メモリチャネルのうちの第1のメモリチャネルを介してアクセスされる第1のアドレス範囲と、前記メモリデバイスのうちの第2のメモリデバイスに関連付けられ、前記メモリチャネルのうちの第2のメモリチャネルを介してアクセスされる第2のアドレス範囲とを備える、請求項12に記載のシステム。
【請求項１４】
前記メモリ要求を前記線形領域に前記割り当てるための手段が、前記第2のメモリデバイスが電力節約モードに置かれている間に、前記第1のメモリデバイスに関連付けられた前記第1のアドレス範囲を使用するための手段を備える、請求項13に記載のシステム。
【請求項１５】
前記線形領域の前記第1のアドレス範囲における最終メモリアドレスに達したときに、
前記第1のメモリデバイスを前記電力節約モードに置くための手段と、
前記第2のメモリデバイスをアクティブ化するための手段と、
前記電力節約選好を有する次の受信されたメモリ要求を、前記第2のメモリデバイスに関連付けられた前記第2のアドレス範囲に対応する第1のメモリアドレスに割り当てるための手段と
をさらに備える、請求項14に記載のシステム。
【請求項１６】
前記メモリ要求が前記線形領域に割り当てられ、前記メモリデバイスのうちの第1のメモリデバイスがアクティブ化され、前記メモリデバイスのうちの第2のメモリデバイスが電力節約モードに置かれる、請求項12に記載のシステム。
【請求項１７】
電力節約または性能に対する前記選好がオペレーティングシステムへのシステムコールを介して指定される、請求項12に記載のシステム。
【請求項１８】
電力節約または性能に対する前記選好がメモリヒープのタイプを指定するパラメータを備える、請求項12に記載のシステム。
【請求項１９】
前記メモリデバイスがダイナミックランダムアクセスメモリ(DRAM)デバイスを備える、請求項12に記載のシステム。
【請求項２０】
前記メモリ要求を前記受信するための手段が、システムオンチップ(SOC)バスと通信しているチャネルインターリービング手段を備える、請求項12に記載のシステム。
【請求項２１】
メモリ帯域幅の履歴ログを備えるデータベースに対して、性能に対する前記選好を有するメモリ要求を有効にするための手段と、
有効にされなかったメモリ要求についての性能に対する前記選好を無効にし、前記有効にされなかったメモリ要求を前記線形領域に割り当てるための手段と
をさらに備える、請求項12に記載のシステム。
【請求項２２】
前記メモリ要求を前記線形領域または前記インターリーブ領域に前記割り当てるための手段が、動的なメモリ割振り手段または所定の静的なメモリ割振り手段を備える、請求項12に記載のシステム。
【請求項２３】
コンピュータプログラムであって、選択的な電力または性能の最適化を伴うメモリチャネルインターリービングのための方法を実施するために実行されるように適合され、前記方法が、
インターリーブ領域および線形領域を有する2つ以上のそれぞれのメモリチャネルを介してアクセスされる2つ以上のメモリデバイスについてメモリアドレスマップを構成するステップであって、前記インターリーブ領域が比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備え、前記線形領域が比較的低い電力のユースケースのための線形アドレス空間を備える、ステップと、
1つまたは複数のクライアントからメモリ要求を受信するステップであって、前記メモリ要求が電力節約または性能に対する選好を備える、ステップと、
電力節約または性能に対する前記選好に従って、前記メモリ要求を前記線形領域または前記インターリーブ領域に割り当てるステップと
を備える、コンピュータプログラム。
【請求項２４】
前記線形アドレス空間が前記メモリデバイスのうちの第1のメモリデバイスに関連付けられ、前記メモリチャネルのうちの第1のメモリチャネルを介してアクセスされる第1のアドレス範囲と、前記メモリデバイスのうちの第2のメモリデバイスに関連付けられ、前記メモリチャネルのうちの第2のメモリチャネルを介してアクセスされる第2のアドレス範囲とを備える、請求項23に記載のコンピュータプログラム。
【請求項２５】
前記メモリ要求を前記線形領域に前記割り当てるステップが、前記第2のメモリデバイスが電力節約モードに置かれている間に、前記第1のメモリデバイスに関連付けられた前記第1のアドレス範囲を使用するステップを備える、請求項24に記載のコンピュータプログラム。
【請求項２６】
前記線形領域の前記第1のアドレス範囲における最終メモリアドレスに達したときに、前記方法が、
前記第1のメモリデバイスを前記電力節約モードに置くステップと、
前記第2のメモリデバイスをアクティブ化するステップと、
前記電力節約選好を有する次の受信されたメモリ要求を、前記第2のメモリデバイスに関連付けられた前記第2のアドレス範囲に対応する第1のメモリアドレスに割り当てるステップと
をさらに備える、請求項25に記載のコンピュータプログラム。
【請求項２７】
前記メモリ要求が前記線形領域に割り当てられ、前記メモリデバイスのうちの第1のメモリデバイスがアクティブ化され、前記メモリデバイスのうちの第2のメモリデバイスが電力節約モードに置かれる、請求項23に記載のコンピュータプログラム。
【請求項２８】
電力節約または性能に対する前記選好がオペレーティングシステムへのシステムコールを介して指定される、請求項23に記載のコンピュータプログラム。
【請求項２９】
電力節約または性能に対する前記選好がメモリヒープのタイプを指定するパラメータを備える、請求項23に記載のコンピュータプログラム。
【請求項３０】
前記メモリデバイスがダイナミックランダムアクセスメモリ(DRAM)デバイスを備える、請求項23に記載のコンピュータプログラム。
【請求項３１】
チャネルインターリーバがシステムオンチップ(SOC)バスを介して前記メモリ要求を受信する、請求項23に記載のコンピュータプログラム。
【請求項３２】
前記方法が、
メモリ帯域幅の履歴ログを備えるデータベースに対して、性能に対する前記選好を有するメモリ要求を有効にするステップと、
有効にされない場合、性能に対する前記選好を無効にし、前記有効にされなかったメモリ要求を前記線形領域に割り当てるステップと
をさらに備える、請求項23に記載のコンピュータプログラム。
【請求項３３】
前記メモリ要求を前記線形領域または前記インターリーブ領域に前記割り当てるステップが、動的なメモリ割振りまたは所定の静的なメモリ割振りを備える、請求項23に記載のコンピュータプログラム。
【請求項３４】
選択的な電力または性能の最適化を伴うメモリチャネルインターリービングを提供するためのシステムであって、
システムオンチップ(SoC)に接続され、2つ以上のそれぞれのメモリチャネルを介してアクセスされる、2つ以上の外部メモリデバイスにアクセスするためのメモリ要求を生成するための1つまたは複数の処理ユニットを備えるシステムオンチップ(SOC)であって、前記メモリ要求が電力節約または性能に対する選好を備える、システムオンチップ(SOC)と、
インターリーブ領域および線形領域を備える、前記外部メモリデバイスに関連付けられたメモリアドレスマップであって、前記インターリーブ領域が比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備え、前記線形領域が比較的低い電力のユースケースのための線形アドレス空間を備える、メモリアドレスマップと、
前記SoC上にあり、電力節約または性能に対する前記選好に従って、前記メモリ要求を前記線形領域または前記インターリーブ領域に割り当てるように構成されたメモリチャネルインターリーバと
を備えるシステム。
【請求項３５】
前記線形アドレス空間が前記メモリデバイスのうちの第1のメモリデバイスに関連付けられ、前記メモリチャネルのうちの第1のメモリチャネルを介してアクセスされる第1のアドレス範囲と、前記メモリデバイスのうちの第2のメモリデバイスに関連付けられ、前記メモリチャネルのうちの第2のメモリチャネルを介してアクセスされる第2のアドレス範囲とを備える、請求項34に記載のシステム。
【請求項３６】
前記メモリチャネルインターリーバが、前記第2のメモリデバイスが電力節約モードに置かれている間に、前記第1のメモリデバイスに関連付けられた前記第1のアドレス範囲を使用して、前記メモリ要求を前記線形領域に割り当てる、請求項35に記載のシステム。
【請求項３７】
前記線形領域の前記第1のアドレス範囲における最終メモリアドレスに達したときに、
前記第1のメモリデバイスが前記電力節約モードに置かれ、
前記第2のメモリデバイスがアクティブ化され、
前記電力節約選好を有する次の受信されたメモリ要求が、前記第2のメモリデバイスに関連付けられた前記第2のアドレス範囲に対応する第1のメモリアドレスに割り当てられる、
請求項36に記載のシステム。
【請求項３８】
前記メモリ要求が前記線形領域に割り当てられ、前記メモリデバイスのうちの第1のメモリデバイスがアクティブ化され、前記メモリデバイスのうちの第2のメモリデバイスが電力節約モードに置かれる、請求項34に記載のシステム。
【請求項３９】
電力節約または性能に対する前記選好がオペレーティングシステムへのシステムコールを介して指定される、請求項34に記載のシステム。
【請求項４０】
電力節約または性能に対する前記選好がメモリヒープのタイプを指定するパラメータを備える、請求項34に記載のシステム。
【請求項４１】
前記メモリデバイスがダイナミックランダムアクセスメモリ(DRAM)デバイスを備える、請求項34に記載のシステム。
【請求項４２】
前記SOCがポータブル通信デバイス上にある、請求項34に記載のシステム。
【請求項４３】
前記メモリチャネルインターリーバが、
メモリ帯域幅の履歴ログを備えるデータベースに対して、性能に対する前記選好を有するメモリ要求を有効にし、
有効にされない場合、性能に対する前記選好を無効にし、前記有効にされなかったメモリ要求を前記線形領域に割り当てる
ようにさらに構成される、請求項34に記載のシステム。
【請求項４４】
前記メモリチャネルインターリーバが、動的なメモリ割振りまたは所定の静的なメモリ割振りを使用して、前記メモリ要求を前記線形領域または前記インターリーブ領域に割り当てるようにさらに構成される、請求項34に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、選択的な電力または性能の最適化を伴うメモリチャネルインターリービングのためのシステムおよび方法に関する。
【背景技術】
【０００２】
携帯電話などのポータブルコンピューティングデバイスを含む多くのコンピューティングデバイスは、システムオンチップ("SoC")を含む。SoCは、電力性能と、ダブルデータレート(DDR)メモリデバイスなどのメモリデバイスからの容量との向上を要求している。これらの要求はより速いクロック速度と幅広いバスの両方につながり、その場合、バスは、効率的であり続けるために、通常は複数のより狭いメモリチャネルに区分される。メモリデバイスにわたってメモリトラフィックを均一に分散し、性能を最適化するために、複数のメモリチャネルは一緒にアドレスインターリーブされ得る。メモリデータは、アドレスを交互のメモリチャネルに割り当てることによって均一に分散される。この技法は通常、対称チャネルインターリービングと呼ばれる。
【０００３】
既存の対称メモリチャネルインターリービング技法は、チャネルのすべてがアクティブ化されることを必要とする。高性能のユースケースの場合、これは意図的なものであり、所望のレベルの性能を達成する必要がある。しかしながら、低性能のユースケースの場合、これは電力の浪費および非効率につながる。したがって、当技術分野において、メモリチャネルインターリービングを提供するための改善されたシステムおよび方法が依然として必要とされている。
【発明の概要】
【課題を解決するための手段】
【０００４】
選択的な電力または性能の最適化を伴うメモリチャネルインターリービングを提供するためのシステムおよび方法が開示される。1つの実施形態は、選択的な電力または性能の最適化を伴うメモリチャネルインターリービング方法である。1つのそのような方法は、インターリーブ領域および線形領域を有する2つ以上のそれぞれのメモリチャネルを介してアクセスされる2つ以上のメモリデバイスについてメモリアドレスマップを構成するステップであって、インターリーブ領域が比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備え、線形領域が比較的低い電力のユースケースのための線形アドレス空間を備える、ステップと、1つまたは複数のクライアントからメモリ要求を受信するステップであって、メモリ要求が電力節約または性能に対する選好を備える、ステップと、電力節約または性能に対する選好に従って、メモリ要求を線形領域またはインターリーブ領域に割り当てるステップとを備える。
【０００５】
別の実施形態は、選択的な電力または性能の最適化を伴うメモリチャネルインターリービングを提供するためのシステムである。1つのそのようなシステムは、システムオンチップ(SOC)と、メモリアドレスマップと、メモリチャネルインターリーバとを備える。SoCは、SoCに接続されるとともに2つ以上のそれぞれのメモリチャネルを介してアクセスされる、2つ以上の外部メモリデバイスにアクセスするためのメモリ要求を生成するための1つまたは複数の処理ユニットを備える。メモリ要求は、電力節約または性能に対する選好を備える。メモリアドレスマップは、外部メモリデバイスに関連付けられ、インターリーブ領域および線形領域を備える。インターリーブ領域は、比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備える。線形領域は、比較的低い電力のユースケースのための線形アドレス空間を備える。メモリチャネルインターリーバはSoC上にあり、電力節約または性能に対する選好に従って、メモリ要求を線形領域またはインターリーブ領域に割り当てるように構成される。
【０００６】
図中、別段に規定されていない限り、同様の参照番号は、様々な図の全体を通じて、同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図に存在する2つの同様の部分または要素を区別し得る。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することが意図されるとき、参照番号の文字指定は省略される場合がある。
【図面の簡単な説明】
【０００７】
【図１】選択的な電力または性能の最適化を伴うメモリチャネルインターリービングを提供するためのシステムの一実施形態のブロック図である。
【図２】選択的な電力または性能の最適化を伴うメモリチャネルインターリービングを提供するための図1のシステムで実施される方法の一実施形態を示すフローチャートである。
【図３】図1のシステムにおける例示的なメモリアドレスマップの構造および動作を示すデータ/流れ図である。
【図４】図1のメモリチャネルインターリーバの一実施形態を示すブロック/流れ図である。
【図５】高性能のメモリ要求を有効にするまたは無効にするための方法の一実施形態を示すフローチャートである。
【図６】4つのメモリチャネルおよび2つのランクを使用した、線形領域およびインターリーブ領域を有するメモリアドレスマップの別の実施形態を示す図である。
【図７】図1のシステムを備えるポータブルコンピューティングデバイスの一実施形態のブロック図である。
【発明を実施するための形態】
【０００８】
「例示的な」という言葉は、本明細書では「一例、事例、または例示として役立つ」ことを意味するように使用される。「例示的な」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるわけではない。
【０００９】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルも含み得る。加えて、本明細書で言及する「アプリケーション」は、開かれる必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含み得る。
【００１０】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルも含み得る。加えて、本明細書で言及する「コンテンツ」は、開かれる必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含み得る。
【００１１】
本明細書で使用する場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連のエンティティを指すものとする。たとえば、構成要素は、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、これらに限定されない。例として、コンピューティングデバイス上で実行されているアプリケーションとコンピューティングデバイスの両方が、構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在してもよく、構成要素は、1つのコンピュータに局在化されてもよく、および/または、2つ以上のコンピュータ間で分散されてもよい。加えて、これらの構成要素は、様々なデータ構造を記憶している様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号によって、ローカルシステム、分散システム中の別の構成要素と、および/または、インターネットなどのネットワークにわたって他のシステムと対話する、1つの構成要素からのデータ)を有する信号に従うなどして、ローカルプロセスおよび/またはリモートプロセスによって通信することができる。
【００１２】
本明細書では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語は、互換的に使用される。第3世代("3G")ワイヤレス技術および第4世代("4G")が出現したことによって、利用可能な帯域幅が拡大されたので、より多様なワイヤレス機能を備えた、より携帯が容易なコンピューティングデバイスが利用可能になっている。したがって、ポータブルコンピューティングデバイスは、セルラー電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、またはワイヤレス接続もしくはワイヤレスリンクを有するハンドヘルドコンピュータを含み得る。
【００１３】
図1は、選択的な性能または電力の最適化を伴うメモリチャネルインターリービングを提供するためのシステム100を示す。システム100は、パーソナルコンピュータと、ワークステーションと、サーバと、セルラー電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、またはタブレットコンピュータなどのポータブルコンピューティングデバイス(PCD)とを含む任意のコンピューティングデバイスにおいて実装されてもよい。
【００１４】
図1の実施形態に示すように、システム100は、様々なオンチップ構成要素を備えるシステムオンチップ(SoC)102と、SoC102に接続された様々な外部構成要素とを備える。SoC102は、SoCバス107によって相互接続される、1つまたは複数の処理ユニットと、メモリチャネルインターリーバ106と、ストレージコントローラ124と、オンボードメモリ(たとえば、スタティックランダムアクセスメモリ(SRAM)128と、読取り専用メモリ(ROM)130など)とを備える。ストレージコントローラ124は、外部ストレージデバイス126に電気的に接続され、外部ストレージデバイス126と通信する。当技術分野で知られているように、メモリチャネルインターリーバ106は、CPU104(または他のメモリクライアント)に関連付けられた読取り/書込みメモリ要求を受信し、専用メモリチャネルを介してそれぞれの外部メモリデバイスに接続される2つ以上のメモリコントローラ間でメモリデータを分散する。図1の例では、システム100は2つのメモリデバイス110および118を備える。メモリデバイス110はメモリコントローラ108に接続され、第1のメモリチャネル(CH0)を介して通信する。メモリデバイス118はメモリコントローラ116に接続され、第2のメモリチャネル(CH1)を介して通信する。
【００１５】
メモリの任意の望ましいタイプ、サイズ、および構成(たとえば、ダブルデータレート(DDR)メモリ)を用いて、任意の数のメモリデバイス、メモリコントローラ、およびメモリチャネルがシステム100において使用され得ることを了解されたい。図1の実施形態では、チャネルCH0を介してサポートされるメモリデバイス110は、2つのダイナミックランダムアクセスメモリ(DRAM)デバイス、すなわち、DRAM112およびDRAM114を備える。チャネルCH1を介してサポートされるメモリデバイス118も、2つのDRAMデバイス、すなわち、DRAM120およびDRAM122を備える。
【００１６】
メモリチャネルインターリーバ106は、性能および電力節約の最適化を選択的に提供するための特殊構成のメモリチャネルインターリーバを備える。メモリチャネルインターリーバ106は、高性能の(インターリーブされた)メモリ領域と低性能の(線形)メモリ領域の両方を選択的に提供するように構成される。図3は、メモリチャネルインターリーバ106によって制御される例示的なメモリアドレスマップ300を示す。メモリアドレスマップ300は、システム100およびメモリチャネルインターリーバ106の全体的な動作、アーキテクチャ、および機能を説明するように記載される。メモリアドレスマップ300は、(メモリチャネルCH0を介してアクセスされる)DRAM112および114を備えるメモリデバイス110と、(メモリチャネルCH1を介してアクセスされる)DRAM120および122を備えるメモリデバイス118とを有する、図1に示す例示的なシステム100に対応する。
【００１７】
メモリアドレスマップ300は、線形領域302と、インターリーブ領域304とを備える。線形領域302は比較的低い電力のユースケースおよび/またはタスクのために使用されてもよく、インターリーブ領域304は比較的高い性能のユースケースおよび/またはタスクのために使用されてもよい。各領域は別個の割り振られたメモリアドレス空間を備え、対応するアドレス範囲は2つのメモリチャネルCH0およびCH1間で分割される。インターリーブ領域304はインターリーブされたアドレス空間を備え、線形領域302は線形アドレス空間を備える。
【００１８】
図3の例を参照すると、インターリーブされたアドレス空間について、第1のアドレス(アドレス0)は、DRAM114およびメモリチャネルCH0に関連付けられたより低いアドレスに割り当てられてもよい。インターリーブされたアドレス範囲(アドレス32)内の次のアドレスは、DRAM122およびメモリチャネルCH1に関連付けられたより低いアドレスに割り当てられてもよい。このようにして、交互のアドレスのパターンは、インターリーブ領域304と線形領域302との間の境界を定義するDRAM112およびDRAM120に関連付けられた先頭アドレスまたは最終アドレスに上がって、メモリチャネルCH0およびCH1にわたって「ストライプ」またはインターリーブされてもよい。インターリーブ領域304において、チャネルCH0とチャネルCH1との間の水平方向の破線矢印は、メモリチャネル間でどのようにアドレスが「ピンポン」するかを示している。データアドレスはランダムであると想定される場合があり、したがって、チャネルCH0とチャネルCH1の両方にわたって均一に分散される場合があるので、データをメモリデバイスから読み取る/データをメモリデバイスに書き込むためのメモリリソース(たとえば、CPU104)を要求するクライアントは、メモリチャネルCH0とメモリチャネルCH1の両方によってサービスされることがある。
【００１９】
線形領域302は、同じチャネル内に別個の連続したメモリアドレス範囲を備える。図3の実施形態に示すように、連続したメモリアドレスの第1の範囲はCH0中のDRAM112に割り当てられてもよく、連続したアドレスの第2の範囲はCH1中のDRAM120に割り当てられてもよい。インターリーブされた/線形の境界の上のDRAM112中の次のアドレスには、線形アドレス空間における第1のアドレス((2N-3)*64)が割り当てられてもよい。垂直方向の矢印は、DRAM112中の先頭アドレスまたは最終アドレスに達する(アドレス(2N-2*64))まで、連続したアドレスがCH0内で割り当てられることを示している。CH0中の利用可能な最終アドレスに達すると、線形アドレス空間における次のアドレスがインターリーブされた/線形の境界の上のDRAM120中の利用可能な次のアドレス(アドレス(2N-2)*64+32)に割り当てられてもよい。次いで、割振り方式は、先頭アドレス(アドレス(2N-1)*64+32)に達するまで、CH1中の連続したメモリアドレスに続く。
【００２０】
このようにして、低性能のユースケースデータはチャネルCH0またはチャネルCH1のいずれかに完全に含まれる場合があることを了解されたい。動作時、チャネルCH0およびチャネルCH1のうちの1つのみがアクティブであってもよく、他方のチャネルはメモリ電力を保存するために非アクティブまたは「セルフリフレッシュ」モードに置かれる。これは任意の数Nのメモリチャネルに拡張されてもよい。
【００２１】
図2は、選択的な性能または電力の最適化を伴うメモリチャネルインターリービングを提供するためのシステム100(図1)によって実施される方法200を示す。ブロック202において、メモリアドレスマップ300は、インターリーブ領域304および線形領域302を有する2つ以上のメモリチャネル(たとえば、メモリチャネルCH0およびCH1)を介してアクセスされる利用可能なメモリデバイス(たとえば、DRAM112、114、120、および122)用に構成される。メモリアドレスマップ300は、予想されるメモリフットプリントまたはサイズの高性能および低性能のユースケースに基づいて構成されてもよい。起動時に、プラットフォームプロファイルに基づいて、メモリチャネルインターリーバ106は所定の量のインターリーブされたメモリ空間および線形メモリ空間を提供することができる。実行時に、オペレーティングシステムは、グラフィックス処理ユニット(GPU)、ディスプレイ、マルチメディアリソース、カメラなどの高性能のクライアント要求のためにインターリーブ領域304を割り振ることができる。オペレーティングシステムは、比較的低い性能および/またはすべての他のクライアント要求のために線形メモリを割り振ることができる。たとえば、オペレーティングシステムリソース、一般的な低性能のアプリケーション、サービスなどのために線形領域302が割り振られてもよい。GPUのためにメモリがインターリーブ領域304に動的に割り振られてもよいことを了解されたい。静的な割振りと呼ばれる他の実施形態では、GPUは、たとえば、高性能を達成するために起動時にインターリーブ領域304を使用するために、あらかじめ決定されたメモリを使用することができる。
【００２２】
一実施形態では、線形領域302およびインターリーブ領域304に対するメモリ割振りは、望ましいユースケースに基づいて構成されてもよい。異なる線形領域上でのメモリ割振りは、ユースケースに基づいてグループ化されてもよい。たとえば、第1の「電力節約」ユースケースはCH0に関連付けられた第1の線形アドレス空間にアクセスするために許可されてもよく、第2の「電力節約」ユースケースはCH1に関連付けられた第2の線形アドレス空間にアクセスするために許可されてもよい。このようにして、他方のメモリチャネルがアクティブである間に、一方のメモリチャネル上でメモリ電力節約を実現することができる。
【００２３】
再び図2を参照すると、ブロック204において、メモリチャネルインターリーバ106はメモリリソースを要求する1つまたは複数のクライアント(たとえば、CPU104)からメモリ要求を受信することができる。メモリ要求は「ヒント」、パラメータ、または電力節約もしくは性能に対する選好を示す他のデータを含み得る。一実施形態では、電力/性能の選好はオペレーティングシステムへのシステムコールを介して指定されてもよい。この点において、システム100は、メモリ割振りのサポートを提供するオペレーティングシステム(図示せず)を含み得る。オペレーティングシステムは、呼出し元によって示された特定のヒープからメモリを割り振る機能を有してもよい。メモリチャネルインターリーバ106およびシステム100は、たとえば、電力節約対性能に対する選好の程度に従ってメモリタイプ(すなわち、インターリーブ対線形)を指定する能力を提供し、それにより、メモリ電力節約および/または高帯域幅スループットを達成する。
【００２４】
たとえば、マルチプロセッシングにおいて使用される不均一なメモリアクセス(NUMA:non-uniform memory access)は、プロセッサ(たとえば、CPU104)に対して、メモリノードに基づいてメモリ割振りを実行することができる。NUMAでは、プロセッサは異なるメモリノードの性能差の情報を有し、好適なノードからメモリをインテリジェントに割り振ることが可能である場合がある。システム100は、最良の性能をもたらすノードからまたは電力消費特性に基づいてメモリを割り振るために、利用可能なノードのリストからメモリをインテリジェントに割り振るこの機構を実装することができる。さらに、いくつかのオペレーティングシステム(たとえば、Linux(登録商標) Android(登録商標))では、メモリアロケータは、起動中にどのメモリヒープがコールを介して最初に追加されたかに従って順序付けられたフォールバックを用いて割り振るべき1つまたは複数のメモリヒープを示す入力引数を有してもよい。メモリチャネルインターリーバ106は、クライアントによって要求された性能または電力消費のいずれかに基づいて特定のヒープタイプからメモリを割り振る、そのような機構をサポートすることができる。
【００２５】
ブロック206において、メモリチャネルインターリーバ106は、メモリ要求(またはその他の方法)において指定された選好およびメモリアドレスマップ300に従って、受信されたメモリ要求を線形領域302またはインターリーブ領域304に割り当てる。
【００２６】
図5の方法500に示すように、メモリチャネルインターリーバ106は、特定のタイプのタスク、プロセスなどに対するメモリ帯域幅使用の履歴ログを備えるデータベースに対して高性能のメモリ要求を有効にするための機構を提供することもできる。ブロック502において、メモリチャネルインターリーバ106は、新しいプロセスに関連付けられた高性能のメモリ要求を受信することができる。ブロック504において、履歴ログは、プロセスによって以前に使用されたメモリ帯域幅を判断するためにアクセスされることがある。
【００２７】
このようにして、メモリ要求は、各実行中のタスクに対する帯域幅需要の履歴追跡に従って割り振られ得る。一実施形態では、トランザクションカウンタは、システム100上の実行中のタスクの各々に対する需要帯域幅をログ記録し、ファイルシステムまたは他のメモリに記憶され得る各プロセス名の履歴を蓄積するために使用されてもよい。メモリマネージャは、メモリを新しいタスクに割り振るときに、データベースにアクセスすることができる。上記で説明したように、タスクは、そのタスクが高性能であるかまたは低性能であるかのヒントを提供することができる。タスクは、バッファが共有可能であるかどうかを指定することもできる。メモリマネージャは、要求を有効にするためにデータベースにアクセスすることができる。高性能が経験的にログ記録され、正当化されていない場合、メモリアロケータはヒントを却下し、電力を節約するために低性能のメモリしか割り振らないことがある。メモリアロケータはバッファが共有可能として宣言されたかどうかを調べることもでき、バッファが共有可能である場合、同じ共有バッファを使用する異なるタスクは高帯域幅を必要とする可能性があるので、元のヒントに従う。
【００２８】
再び図5を参照すると、決定ブロック506において、メモリチャネルインターリーバ106は、高性能のメモリ要求が有効にされるかどうかを判断する。以前の帯域幅がインターリーブ領域304に割り当てるための所定のしきい値を満たさない場合、メモリ要求は却下され、代わりに線形領域302に割り当てられ得る(ブロック508)。しかしながら、高性能のメモリ要求が有効にされる場合、メモリ要求はインターリーブ領域304に割り当てられ得る(ブロック510)。
【００２９】
図4は、メモリチャネルインターリーバ106の一実施形態のアーキテクチャ、動作、および/または機能を示す概略/流れ図である。メモリチャネルインターリーバ106はSoCバス107上で入力を受信し、別個のメモリコントローラバスを介して出力をメモリコントローラ108および116(それぞれ、メモリチャネルCH0およびCH1)に与える。メモリコントローラバスは、実データスループットが整合する、SoCバス107のレートの半分で動作してもよい。アドレスマッピングモジュール450は、SoCバス107を介してプログラムされてもよい。アドレスマッピングモジュール450は、上記で説明したように、線形領域302およびインターリーブ領域304を有するアドレスメモリマップ300を構成し、アドレスメモリマップ300にアクセスしてもよい。SoCバス107上の入ってくるデータトラフィックはデータセレクタ470にルーティングされ、データセレクタ470は、アドレスマッピングモジュール450によって与えられた選択信号464に基づいて、データをメモリコントローラ108および116に、それぞれマージ構成要素472および474を介して転送する。各トラフィックパケットについて、ハイアドレス456はアドレスマッピングモジュール450に入る。アドレスマッピングモジュール450はハイアドレス456を事前プログラムされた線形領域アドレスおよびインターリーブ領域アドレスと比較し、アドレスビット位置再配列を行い、次いで、インターリーブパラメータに基づいてハイアドレス456をCH0ハイアドレス460またはCH1ハイアドレス462に出力する。選択信号464は、CH0またはCH1が選択されたかどうかを指定する。マージ構成要素472および474は、ハイアドレス460および462と、ローアドレス458と、CH0データ466およびCH1データ468との再結合を備えてもよい。
【００３０】
図6は、4つのメモリチャネル用に適合され、複数のランクを使用する、メモリアドレスマップ600の別の実施形態を示す。メモリアドレスマップ600は、上記で説明したメモリアドレスマップ300(図3)と比較して、2つの追加のメモリチャネルCH2およびCH3を追加する。メモリチャネルCH2は、追加のDRAM602および604に関連付けられる。メモリチャネルCH3は、追加のDRAM606および608に関連付けられる。図6に示すように、メモリアドレスマップ600は、各ランクが性能と電力消費との間の所望のバランスを実現するためのカスタマイズされたインターリーブ設定を有する、ランク付け方式(ランク1およびランク0)を提供する。線形領域302はランク1にあり、たとえば、電力節約を実現するためのBank-Row-Column(BRC) DRAMインターリーブ機構を使用してもよい。(DRAM112、120、602、および606上にある)インターリーブ領域304の第1の部分610もランク1にあり、性能のためにRow-Bank-Column DRAMインターリーブ機構を使用してもよい。(DRAM114、122、604、および608上で利用可能なメモリ全体を包含する)インターリーブ領域304の第2の部分612は異なるランク(すなわち、ランク0)にあってもよい。DRAM114、122、604、および608は、性能のためRBC DRAMインターリーブ機構を使用してランク0に入ってもよい。
【００３１】
上述のように、システム100は、任意の望ましいコンピューティングシステムに組み込まれる場合がある。図7は、例示的なポータブルコンピューティングデバイス(PCD)700に組み込まれたシステム100を示す。システム100は、マルチコアCPU402Aを含み得るSoC322上に含まれ得る。マルチコアCPU402Aは、第0のコア410、第1のコア412、および第Nのコア414を含み得る。コアのうちの1つは、たとえばグラフィックス処理ユニット(GPU)を備え、その他のコアのうちの1つまたは複数は、CPU104(図1)を備える場合がある。代替の例示的な実施形態によれば、CPU402Aは、複数のコアを有するCPUではなく、単一コアのタイプのCPUを備える場合もあり、その場合、CPU104およびGPUは、システム100で示すような専用プロセッサであり得る。
【００３２】
ディスプレイコントローラ328およびタッチスクリーンコントローラ330は、CPU402Aに結合される場合がある。一方、オンチップシステム322の外部にあるタッチスクリーンディスプレイ103は、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合される場合がある。
【００３３】
図7はさらに、ビデオエンコーダ334、たとえば位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM)エンコーダ、または全米テレビジョン方式委員会(NTSC)エンコーダがマルチコアCPU402Aに結合されることを示す。さらに、ビデオ増幅器336は、ビデオエンコーダ334およびタッチスクリーンディスプレイ103に結合される。また、ビデオポート338は、ビデオ増幅器336に結合される。図7に示すように、ユニバーサルシリアルバス(USB)コントローラ340は、マルチコアCPU402Aに結合される。また、USBポート342は、USBコントローラ340に結合される。メモリ404Aおよび加入者識別モジュール(SIM)カード346も、マルチコアCPU402Aに結合される場合がある。メモリ404Aは、上記で説明したように、メモリデバイス110および118(図1)を備えてもよい。システム100(図1)は、CPU402Aに結合される場合がある。
【００３４】
さらに、図7に示すように、デジタルカメラ348は、マルチコアCPU402Aに結合される場合がある。例示的な態様では、デジタルカメラ348は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
【００３５】
図7にさらに示すように、ステレオオーディオコーダ-デコーダ(コーデック)350は、マルチコアCPU402Aに結合される場合がある。さらに、オーディオ増幅器352は、ステレオオーディオコーデック350に結合される場合がある。例示的な態様では、第1のステレオスピーカー354および第2のステレオスピーカー356は、オーディオ増幅器352に結合される。図7は、マイクロフォン増幅器358もステレオオーディオコーデック350に結合される場合があることを示す。加えて、マイクロフォン360は、マイクロフォン増幅器358に結合される場合がある。特定の態様では、周波数変調(FM)ラジオチューナ362は、ステレオオーディオコーデック350に結合される場合がある。同様に、FMアンテナ364は、FMラジオチューナ362に結合される。さらに、ステレオヘッドフォン366は、ステレオオーディオコーデック350に結合される場合がある。
【００３６】
図7はさらに、無線周波(RF)トランシーバ368がマルチコアCPU402Aに結合される場合があることを示す。RFスイッチ370は、RFトランシーバ368およびRFアンテナ372に結合される場合がある。図7に示すように、キーパッド374は、マルチコアCPU402Aに結合される場合がある。また、マイクロフォン付きモノヘッドセット376は、マルチコアCPU402Aに結合される場合がある。さらに、バイブレータデバイス378は、マルチコアCPU402Aに結合される場合がある。
【００３７】
図7は、電源380がオンチップシステム322に結合される場合があることも示す。特定の態様では、電源380は電力を必要とするPCD700の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリー、または交流(AC)電源に接続されたAC-DC変換器から得られるDC電源である。
【００３８】
図7はさらに、PCD700がデータネットワーク、たとえば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用され得るネットワークカード388も含み得ることを示す。ネットワークカード388は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、パーソナルエリアネットワーク超低電力技術(PeANUT)ネットワークカード、テレビジョン/ケーブル/衛星チューナ、または当技術分野でよく知られている任意の他のネットワークカードであってもよい。さらに、ネットワークカード388は、チップに組み込まれることがあり、すなわち、ネットワークカード388は、チップ内のフルソリューションであってもよく、個別のネットワークカード388でなくてもよい。
【００３９】
図7に示すように、タッチスクリーンディスプレイ103、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカー354、第2のステレオスピーカー356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノヘッドセット376、バイブレータ378、および電源380は、オンチップシステム322の外部にあってもよい。
【００４０】
本明細書で説明する方法ステップのうちの1つまたは複数は、上記で説明したモジュールなどのコンピュータプログラム命令としてメモリに記憶される場合があることを了解されたい。これらの命令は、本明細書で説明する方法を実行するために、対応するモジュールと組み合わせてまたは協働して、任意の適切なプロセッサによって実行される場合がある。
【００４１】
本発明が説明通りに機能するように、本明細書で説明するプロセスまたはプロセスフローにおけるいくつかのステップが他のステップよりも前に行われるのは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変えない場合、本発明は、説明したステップの順序に限定されない。すなわち、いくつかのステップは、本発明の範囲および趣旨から逸脱することなく、他のステップの前に実行されるか、後に実行されるか、または他のステップと並行して(実質的に同時に)実行される場合があることを認識されたい。場合によっては、いくつかのステップは、本発明から逸脱することなく、省略されてもよく、または実行されなくてもよい。さらに、「その後」、「次いで」、「次に」などの言葉は、ステップの順序を限定するものではない。これらの言葉は、単に例示的な方法の説明を通じて読者を導くために使用されている。
【００４２】
さらに、プログラミングにおける当業者は、たとえば、本明細書のフローチャートおよび関連する説明に基づいて、開示する発明を容易に実施するために、コンピュータのコードを書くこと、または適切なハードウェアおよび/もしくは回路を識別することができる。
【００４３】
したがって、特定の1組のプログラムコード命令または詳細なハードウェアデバイスの開示は、本発明をどのように製作および使用すべきかについて適切に理解するために必要であるとは見なされない。特許請求されるコンピュータで実施されるプロセスの発明性のある機能は、上記の説明において、かつ、様々なプロセスフローを示し得る図面とともに、より詳細に説明される。
【００４４】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体上で送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、NANDフラッシュ、NORフラッシュ、M-RAM、P-RAM、R-RAM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは記憶するために使用されてよく、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。
【００４５】
また、任意の接続は、適切にコンピュータ可読媒体と呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線("DSL")、または、赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または、赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【００４６】
本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)("CD")、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)("DVD")、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【００４７】
代替実施形態は、本発明の趣旨および範囲から逸脱することなく、本発明が関係する当業者に明らかとなろう。したがって、選択した態様が図示され詳細に説明されたが、以下の特許請求の範囲によって定義されるように、本発明の趣旨および範囲から逸脱することなく、各態様において様々な置換および改変を実施できることが理解されよう。
【符号の説明】
【００４８】
100  システム
102  システムオンチップ(SoC)、SoC
103  タッチスクリーンディスプレイ
104  CPU
106  メモリチャネルインターリーバ、GPU
107  SoCバス
108  メモリコントローラ
110  メモリデバイス
112  DRAM
114  DRAM
116  メモリコントローラ
118  メモリデバイス
120  DRAM
122  DRAM
124  ストレージコントローラ
126  外部ストレージデバイス
128  スタティックランダムアクセスメモリ(SRAM)
130  読取り専用メモリ(ROM)
200  方法
300  メモリアドレスマップ
302  線形領域
304  インターリーブ領域
322  SoC、オンチップシステム
328  ディスプレイコントローラ
330  タッチスクリーンコントローラ
334  ビデオエンコーダ
336  ビデオ増幅器
338  ビデオポート
340  ユニバーサルシリアルバス(USB)コントローラ、USBコントローラ
342  USBポート
346  加入者識別モジュール(SIM)カード
348  カメラ
350  ステレオオーディオコーダ-デコーダ(コーデック)、ステレオオーディオコーデック
352  オーディオ増幅器
354  第1のステレオスピーカー
356  第2のステレオスピーカー
358  マイクロフォン増幅器
360  マイクロフォン
362  周波数変調(FM)ラジオチューナ、FMラジオチューナ
364  FMアンテナ
366  ステレオヘッドフォン
368  無線周波(RF)トランシーバ、RFトランシーバ
370  RFスイッチ
372  RFアンテナ
374  キーパッド
376  マイクロフォン付きモノヘッドセット
378  バイブレータデバイス、バイブレータ
380  電源
388  ネットワークカード
402A  マルチコアCPU、CPU
404A  メモリ
410  第0のコア
412  第1のコア
414  第Nのコア
450  アドレスマッピングモジュール
456  ハイアドレス
458  ローアドレス
460  ハイアドレス
462  ハイアドレス
464  選択信号
466  CH0データ
468  CH1データ
470  データセレクタ
472  マージ構成要素
474  マージ構成要素
500  方法
600  モリアドレスマップ
602  DRAM
604  DRAM
606  DRAM
608  DRAM
610  第1の部分
612  第2の部分
700  ポータブルコンピューティングデバイス(PCD)、PCD
【図１】
2016529618.tif 000003
【図２】
2016529618.tif 000004
【図３】
2016529618.tif 000005
【図４】
2016529618.tif 000006
【図５】
2016529618.tif 000007
【図６】
2016529618.tif 000008
【図７】
2016529618.tif 000009
【手続補正書】
【提出日】平成27年10月12日(2015.10.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
選択的な電力または性能の最適化を伴うメモリチャネルインターリービング方法であって、
少なくとも第1のメモリデバイスおよび第2のメモリデバイスについてメモリアドレスマップを構成するステップであって、前記第1のメモリデバイスが第1のメモリコントローラおよび第1のメモリチャネルに一意に関連付けられ、前記第2のメモリデバイスが第2のメモリコントローラおよび第2のメモリチャネルに一意に関連付けられ、前記第1のメモリデバイスおよび前記第2のメモリデバイスの各々がインターリーブ領域の一部分と線形領域の一部分とを備え、前記インターリーブ領域が比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備え、前記線形領域が比較的低い電力のユースケースのための線形アドレス空間を備える、ステップと、
メモリチャネルインターリーバにおいて、1つまたは複数のクライアントからメモリ要求を受信するステップであって、前記メモリ要求が電力節約または性能に対する選好を備える、ステップと、
前記メモリチャネルインターリーバによって、電力節約に対する選好を備える前記メモリ要求を前記線形領域に割り当て、性能に対する選好を備える前記メモリ要求を前記インターリーブ領域に割り当てるステップであって、電力節約に対する選好を備える前記メモリ要求を前記線形領域に割り当てるステップが、前記第1のメモリコントローラに、前記第1のメモリデバイス内の前記線形領域の前記一部分に対応する第1のアドレス範囲に書き込むように命令し、前記第2のメモリコントローラに、前記第2のメモリデバイスを電力節約モードに遷移させるように命令するステップを備える、ステップと
を備える方法。
【請求項２】
前記第1のメモリデバイス内の前記線形領域の前記一部分に対応する前記第1のアドレス範囲における最終メモリアドレスに達したときに、
前記第1のメモリデバイスを前記電力節約モードに置くステップと、
前記第2のメモリデバイスをアクティブ化するステップと、
電力節約に対する選好を備える次の受信されたメモリ要求を、前記第2のメモリデバイス内の前記線形領域の前記一部分に対応する第2のアドレス範囲に書き込むステップと
をさらに備える、請求項1に記載の方法。
【請求項３】
電力節約または性能に対する前記選好がオペレーティングシステムへのシステムコールを介して指定される、請求項1に記載の方法。
【請求項４】
電力節約または性能に対する前記選好がメモリヒープのタイプを指定するパラメータを備える、請求項1に記載の方法。
【請求項５】
前記メモリデバイスがダイナミックランダムアクセスメモリ(DRAM)デバイスを備える、請求項1に記載の方法。
【請求項６】
前記メモリチャネルインターリーバがシステムオンチップ(SOC)バスを介して前記メモリ要求を受信する、請求項1に記載の方法。
【請求項７】
前記メモリチャネルインターリーバにおいて、メモリ帯域幅の履歴ログを備えるデータベースに対して、性能に対する前記選好を有するメモリ要求を有効にするステップと、
有効にされない場合、前記メモリチャネルインターリーバにおいて、性能に対する前記選好を無効にし、前記有効にされなかったメモリ要求を前記線形領域に割り当てるステップと
をさらに備える、請求項1に記載の方法。
【請求項８】
前記メモリ要求を前記線形領域または前記インターリーブ領域に前記割り当てるステップが、動的なメモリ割振りまたは所定の静的なメモリ割振りを備える、請求項1に記載の方法。
【請求項９】
コンピュータプログラムであって、選択的な電力または性能の最適化を伴うメモリチャネルインターリービングのための方法を実施するために実行されるように適合され、前記方法が、
少なくとも第1のメモリデバイスおよび第2のメモリデバイスについてメモリアドレスマップを構成するステップであって、前記第1のメモリデバイスが第1のメモリコントローラおよび第1のメモリチャネルに一意に関連付けられ、前記第2のメモリデバイスが第2のメモリコントローラおよび第2のメモリチャネルに一意に関連付けられ、前記第1のメモリデバイスおよび前記第2のメモリデバイスの各々がインターリーブ領域の一部分と線形領域の一部分とを備え、前記インターリーブ領域が比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備え、前記線形領域が比較的低い電力のユースケースのための線形アドレス空間を備える、ステップと、
1つまたは複数のクライアントからメモリ要求を受信するステップであって、前記メモリ要求が電力節約または性能に対する選好を備える、ステップと、
電力節約に対する選好を備える前記メモリ要求を前記線形領域に割り当て、性能に対する選好を備える前記メモリ要求を前記インターリーブ領域に割り当てるステップであって、電力節約に対する選好を備える前記メモリ要求を前記線形領域に割り当てるステップが、前記第1のメモリコントローラに、前記第1のメモリデバイス内の前記線形領域の前記一部分に対応する第1のアドレス範囲に書き込むように命令し、前記第2のメモリコントローラに、前記第2のメモリデバイスを電力節約モードに遷移させるように命令するステップを備える、ステップと
を備える、コンピュータプログラム。
【請求項１０】
前記第1のメモリデバイス内の前記線形領域の前記一部分に対応する前記第1のアドレス範囲における最終メモリアドレスに達したときに、前記方法が、
前記第1のメモリデバイスを前記電力節約モードに置くステップと、
前記第2のメモリデバイスをアクティブ化するステップと、
電力節約に対する選好を備える次の受信されたメモリ要求を、前記第2のメモリデバイス内の前記線形領域の前記一部分に対応する第2のアドレス範囲に書き込むステップと
をさらに備える、請求項9に記載のコンピュータプログラム。
【請求項１１】
電力節約または性能に対する前記選好がオペレーティングシステムへのシステムコールを介して指定される、請求項9に記載のコンピュータプログラム。
【請求項１２】
電力節約または性能に対する前記選好がメモリヒープのタイプを指定するパラメータを備える、請求項9に記載のコンピュータプログラム。
【請求項１３】
前記メモリデバイスがダイナミックランダムアクセスメモリ(DRAM)デバイスを備える、請求項9に記載のコンピュータプログラム。
【請求項１４】
チャネルインターリーバがシステムオンチップ(SOC)バスを介して前記メモリ要求を受信する、請求項9に記載のコンピュータプログラム。
【請求項１５】
前記方法が、
メモリ帯域幅の履歴ログを備えるデータベースに対して、性能に対する前記選好を有するメモリ要求を有効にするステップと、
有効にされない場合、性能に対する前記選好を無効にし、前記有効にされなかったメモリ要求を前記線形領域に割り当てるステップと
をさらに備える、請求項9に記載のコンピュータプログラム。
【請求項１６】
前記メモリ要求を前記線形領域または前記インターリーブ領域に前記割り当てるステップが、動的なメモリ割振りまたは所定の静的なメモリ割振りを備える、請求項9に記載のコンピュータプログラム。
【請求項１７】
選択的な電力または性能の最適化を伴うメモリチャネルインターリービングを提供するためのシステムであって、
システムオンチップ(SoC)に接続された少なくとも第1のメモリデバイスおよび第2のメモリデバイスにアクセスするためのメモリ要求を生成するための1つまたは複数の処理ユニットを備えるシステムオンチップ(SOC)であって、前記第1のメモリデバイスが第1のメモリコントローラおよび第1のメモリチャネルに一意に関連付けられ、前記第2のメモリデバイスが第2のメモリコントローラおよび第2のメモリチャネルに一意に関連付けられ、
前記第1のメモリデバイスおよび前記第2のメモリデバイスの各々が、メモリアドレスマップによって定義されたインターリーブ領域の一部分と線形領域の一部分とを備え、前記インターリーブ領域が比較的高い性能のユースケースのためのインターリーブされたアドレス空間を備え、前記線形領域が比較的低い電力のユースケースのための線形アドレス空間を備える、システムオンチップ(SOC)と、
前記SoC上にあり、
電力節約に対する選好を備える前記メモリ要求を前記線形領域に割り当て、性能に対する選好を備える前記メモリ要求を前記インターリーブ領域に割り当てるように構成されたメモリチャネルインターリーバであって、電力節約に対する選好を備える前記メモリ要求を前記線形領域に割り当てることが、前記第1のメモリコントローラに、前記第1のメモリデバイス内の前記線形領域の前記一部分に対応する第1のアドレス範囲に書き込むように命令し、前記第2のメモリコントローラに、前記第2のメモリデバイスを電力節約モードに遷移させるように命令することを備える、メモリチャネルインターリーバと
を備えるシステム。
【請求項１８】
前記第1のメモリデバイス内の前記線形領域の前記一部分に対応する前記第1のアドレス範囲における最終メモリアドレスに達したときに、
前記第1のメモリデバイスが前記電力節約モードに置かれ、
前記第2のメモリデバイスがアクティブ化され、
電力節約に対する選好を備える次の受信されたメモリ要求が、前記第2のメモリデバイス内の前記線形領域の前記一部分に対応する第2のアドレス範囲に書き込まれる、
請求項17に記載のシステム。
【請求項１９】
電力節約または性能に対する前記選好がオペレーティングシステムへのシステムコールを介して指定される、請求項17に記載のシステム。
【請求項２０】
電力節約または性能に対する前記選好がメモリヒープのタイプを指定するパラメータを備える、請求項17に記載のシステム。
【請求項２１】
前記メモリデバイスがダイナミックランダムアクセスメモリ(DRAM)デバイスを備える、請求項17に記載のシステム。
【請求項２２】
前記SOCがポータブル通信デバイス上にある、請求項17に記載のシステム。
【請求項２３】
前記メモリチャネルインターリーバが、
メモリ帯域幅の履歴ログを備えるデータベースに対して、性能に対する前記選好を有するメモリ要求を有効にし、
有効にされない場合、性能に対する前記選好を無効にし、前記有効にされなかったメモリ要求を前記線形領域に割り当てる
ようにさらに構成される、請求項17に記載のシステム。
【請求項２４】
前記メモリチャネルインターリーバが、動的なメモリ割振りまたは所定の静的なメモリ割振りを使用して、前記メモリ要求を前記線形領域または前記インターリーブ領域に割り当てるようにさらに構成される、請求項17に記載のシステム。
【国際調査報告】
2016529618.tif 000010
2016529618.tif 000011
2016529618.tif 000012