(57)【特許請求の範囲】
【請求項１】
第1のメモリと、
前記第1のメモリに結合された第1のメモリコントローラと、
前記第1のメモリコントローラに含まれ、システムバスを1回用いて、第2のメモリコントローラの制御下で、前記第1のメモリと第2のメモリの間の少なくとも1回のメモリ間データ転送を実現するための少なくとも1つのダイレクトメモリアクセス動作を実施するように構成されたマスタコントローラモジュールと、
を備え、
前記マスタコントローラモジュールを含む前記第1のメモリコントローラが、
送信元アドレスおよび宛先アドレスを受信することと、
前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断することと、
前記宛先アドレスが前記第1のメモリ内にあるかどうかを判断することと、
前記送信元アドレスが前記第1のメモリ内にあり前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記宛先アドレスと前記送信元アドレスに記憶されたデータとを、前記システムバスを1回用いて前記第2のメモリコントローラにコピーすることと
を含む動作を実行するように構成された、メモリシステム。
【請求項２】
前記第1のメモリコントローラが、ダブルデータレート(DDR)メモリコントローラであり、前記第1のメモリが、DDR同期型ダイナミックランダムアクセスメモリである、請求項1に記載のメモリシステム。
【請求項３】
前記第1のメモリコントローラが、ダイナミックランダムアクセスメモリ(DRAM)メモリコントローラである、請求項1に記載のメモリシステム。
【請求項４】
前記第2のメモリコントローラが、ダブルデータレート(DDR)メモリコントローラであり、前記第2のメモリが、DDR同期型ダイナミックランダムアクセスメモリである、請求項1に記載のメモリシステム。
【請求項５】
前記マスタコントローラモジュールを含む前記第1のメモリコントローラが、
前記送信元アドレスが前記第1のメモリ内にあり、前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記送信元アドレスに記憶されたデータを前記システムバス上にプッシュすることをさらに含む動作を実行するように構成された、請求項1に記載のメモリシステム。
【請求項６】
前記マスタコントローラモジュールを含む前記第1のメモリコントローラが、
前記送信元アドレスが前記第1のメモリ内にあり、前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記宛先アドレスを前記システムバス上にプッシュすることをさらに含む動作を実行するように構成された、請求項1に記載のメモリシステム。
【請求項７】
システムデータバスと、
前記システムデータバスに結合されたプロセッサと、
前記システムデータバスに結合されたメモリシステムと
を備えるコンピューティングデバイスであって、前記メモリシステムが、
第1のメモリと、
前記第1のメモリに結合された第1のメモリコントローラと、
前記第1のメモリコントローラに含まれ、システムバスを1回用いて、第2のメモリコントローラの制御下で、前記第1のメモリと第2のメモリの間の少なくとも1回のメモリ間データ転送を実現するための少なくとも1つのダイレクトメモリアクセス動作を実施するように構成されたマスタコントローラモジュールと、
を備え、
前記マスタコントローラモジュールを含む前記第1のメモリコントローラが、
送信元アドレスおよび宛先アドレスを受信することと、
前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断することと、
前記宛先アドレスが前記第1のメモリ内にあるかどうかを判断することと、
前記送信元アドレスが前記第1のメモリ内にあり前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記宛先アドレスと前記送信元アドレスに記憶されたデータとを、前記システムバスを1回用いて前記第2のメモリコントローラにコピーすることと
を含む動作を実行するように構成された、コンピューティングデバイス。
【請求項８】
前記第1のメモリコントローラが、ダブルデータレート(DDR)メモリコントローラであり、前記第1のメモリが、DDR同期型ダイナミックランダムアクセスメモリである、請求項7に記載のコンピューティングデバイス。
【請求項９】
前記第1のメモリコントローラが、ダイナミックランダムアクセスメモリ(DRAM)メモリコントローラである、請求項7に記載のコンピューティングデバイス。
【請求項１０】
前記第2のメモリコントローラが、ダブルデータレート(DDR)メモリコントローラであり、前記第2のメモリが、DDR同期型ダイナミックランダムアクセスメモリである、請求項7に記載のコンピューティングデバイス。
【請求項１１】
前記マスタコントローラモジュールを含む前記第1のメモリコントローラが、
前記送信元アドレスが前記第1のメモリ内にあり、前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記送信元アドレスに記憶されたデータを前記システムバス上にプッシュすることをさらに含む動作を実行するように構成された、請求項7に記載のコンピューティングデバイス。
【請求項１２】
前記マスタコントローラモジュールを含む前記第1のメモリコントローラが、
前記送信元アドレスが前記第1のメモリ内にあり、前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記宛先アドレスを前記システムバス上にプッシュすることをさらに含む動作を実行するように構成された、請求項7に記載のコンピューティングデバイス。
【請求項１３】
マスタコントローラモジュールを含む第1のメモリコントローラで送信元アドレスおよび宛先アドレスを受信するステップであって、前記マスタコントローラモジュールは、前記第1のメモリコントローラに含まれ、システムバスを1回用いて、第2のメモリコントローラの制御下で、前記第1のメモリコントローラの制御下にある第1のメモリと第2のメモリの間の少なくとも1回のメモリ間データ転送を実現するための少なくとも1つのダイレクトメモリアクセス動作を実施するように構成される、ステップと、
前記第1のメモリコントローラで、前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断するステップと、
前記第1のメモリコントローラで、前記宛先アドレスが前記第1のメモリ内にあるかどうかを判断するステップと、
前記送信元アドレスが前記第1のメモリ内にあり前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記宛先アドレスと前記送信元アドレスに記憶されたデータとを、前記システムバスを1回用いて前記第2のメモリコントローラにコピーするステップと、
を含む、1つまたは複数のメモリとの間でデータを転送する方法。
【請求項１４】
前記送信元アドレスが前記第1のメモリ内にあり、前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記送信元アドレスに記憶されたデータを前記システムバス上にプッシュするステップをさらに含む、請求項13に記載の方法。
【請求項１５】
前記送信元アドレスが前記第1のメモリ内にあり、前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記宛先アドレスを前記システムバス上にプッシュするステップをさらに含む、請求項13に記載の方法。
【請求項１６】
前記第1のメモリコントローラで前記送信元アドレスおよび前記宛先アドレスを受信するステップが、前記システムバスを介して周辺構成要素または処理ユニットから前記送信元アドレスおよび前記宛先アドレスを受信するステップを含む、請求項13に記載の方法。
【請求項１７】
前記第1のメモリコントローラで、前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断するステップが、ダイナミックランダムアクセスメモリ(DRAM)メモリコントローラで、前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断するステップを含む、請求項13に記載の方法。
【請求項１８】
前記第1のメモリコントローラで、前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断するステップが、ダブルデータレート(DDR)メモリコントローラで、前記送信元アドレスがDDR同期型ダイナミックランダムアクセスメモリ内にあるかどうかを判断するステップを含む、請求項13に記載の方法。
【請求項１９】
マスタコントローラモジュールを含む第1のメモリコントローラで送信元アドレスおよび宛先アドレスを受信するための手段であって、前記マスタコントローラモジュールは、前記第1のメモリコントローラに含まれ、システムバスを1回用いて、第2のメモリコントローラの制御下で、前記第1のメモリコントローラの制御下にある第1のメモリと第2のメモリの間の少なくとも1回のメモリ間データ転送を実現するための少なくとも1つのダイレクトメモリアクセス動作を実施するように構成される、手段と、
前記第1のメモリコントローラで、前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断するための手段と、
前記第1のメモリコントローラで、前記宛先アドレスが前記第1のメモリ内にあるかどうかを判断するための手段と、
前記送信元アドレスが前記第1のメモリ内にあり前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記宛先アドレスと前記送信元アドレスに記憶されたデータとを、前記システムバスを1回用いて前記第2のメモリコントローラにコピーするための手段と、
を備える、コンピューティングデバイス。
【請求項２０】
前記送信元アドレスが前記第1のメモリ内にあり、前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記送信元アドレスに記憶されたデータを前記システムバス上にプッシュするための手段をさらに備える、請求項19に記載のコンピューティングデバイス。
【請求項２１】
前記送信元アドレスが前記第1のメモリ内にあり、前記宛先アドレスが前記第1のメモリ内にないという判断に応答して、前記宛先アドレスを前記システムバス上にプッシュするための手段をさらに備える、請求項19に記載のコンピューティングデバイス。
【請求項２２】
前記第1のメモリコントローラで前記送信元アドレスおよび前記宛先アドレスを受信するための手段が、前記システムバスを介して周辺構成要素または処理ユニットから前記送信元アドレスおよび前記宛先アドレスを受信するための手段を備える、請求項19に記載のコンピューティングデバイス。
【請求項２３】
前記第1のメモリコントローラで、前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断するための手段が、ダイナミックランダムアクセスメモリ(DRAM)メモリコントローラで、前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断するための手段を備える、請求項19に記載のコンピューティングデバイス。
【請求項２４】
前記第1のメモリコントローラで、前記送信元アドレスが前記第1のメモリ内にあるかどうかを判断するための手段が、ダブルデータレート(DDR)メモリコントローラで、前記送信元アドレスがDDR同期型ダイナミックランダムアクセスメモリ内にあるかどうかを判断するための手段を備える、請求項19に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
セルラおよびワイヤレス通信技術は、過去数年にわたって爆発的に成長した。ワイヤレスサービスプロバイダは、現在、多岐にわたる機能およびサービスを提供し、自分のユーザに先例のないレベルの情報、リソース、および通信へのアクセスを提供する。これらのサービス強化に合わせるために、モバイル電子デバイス(例えば、携帯電話、タブレット、ラップトップ、など)は、これまでよりも機能豊富で複雑になっている。モバイル電子デバイスは、現在、一般的に、複数のプロセッサ、システムオンチップ(SoS:system-on-chip)、複数のメモリ、および他のリソース(例えば、電力レール、など)を含み、これらは、モバイルデバイスのユーザが、複雑で電力集中的なソフトウェアアプリケーション(例えば、ビデオストリーミング、マルチメディア処理、など)を自分のモバイルデバイス上で実行することを可能にする。モバイルデバイスおよび関連技術は、人気および用途において成長し続けているので、モバイルデバイスの性能および電力消費特性を改善することは、モバイルデバイスの設計者にとって重要で挑戦的な設計基準となることが予想される。
【発明の概要】
【課題を解決するための手段】
【０００２】
様々な態様は、メモリと、メモリに結合されたメモリコントローラと、メモリコントローラに直接結合されたダイレクトメモリアクセス(DMA:direct memory access)コントローラとを含むメモリシステムを含む。一態様では、ダイレクトメモリアクセス(DMA)コントローラは、ダイレクトメモリアクセス(DMA)コントローラおよびメモリコントローラがシステムデータバスの同じ側に位置するように、メモリコントローラに直接結合され得る。さらなる態様では、メモリコントローラは、ダイナミックランダムアクセスメモリ(DRAM:dynamic random-access memory)メモリコントローラであり得る。さらなる態様では、メモリコントローラは、ダブルデータレート(DDR:double data rate)メモリコントローラであり得、メモリは、DDR同期型ダイナミックランダムアクセスメモリであり得る。
【０００３】
さらなる態様では、ダイレクトメモリアクセスコントローラは、送信元アドレスおよび宛先アドレスを受信することと、送信元アドレスがメモリ内にあるかどうかを判断することと、送信元アドレスがメモリ内にあるという判断に応答して、宛先アドレスがメモリ内にあるかどうかを判断することと、宛先アドレスがメモリ内にあるという判断に応答して、いかなるデータもバス上にプッシュすることなく、送信元アドレスに記憶されたデータを宛先アドレスにコピーすることとを含む動作を実行するように構成され得る。さらなる態様では、ダイレクトメモリアクセスコントローラは、宛先アドレスがメモリ内にないという判断に応答して、送信元アドレスに記憶されたデータをバス上にプッシュすることを含む動作を実行するように構成され得る。さらなる態様では、ダイレクトメモリアクセスコントローラは、送信元アドレスがメモリ内にないという判断に応答して、読み出し要求、送信元アドレス、および宛先アドレスをバス上にプッシュすることを含む動作を実行するように構成され得る。
【０００４】
さらなる態様は、システムデータバスと、システムデータバスに結合されたプロセッサと、システムデータバスに結合されたメモリシステムとを含むコンピューティングデバイスを含む。メモリシステムは、メモリと、メモリに結合されたメモリコントローラと、メモリコントローラに直接結合されたダイレクトメモリアクセスコントローラとを含むことができる。一態様では、ダイレクトメモリアクセスコントローラは、ダイレクトメモリアクセスコントローラおよびメモリコントローラがシステムデータバスの同じ側に位置するように、メモリコントローラに直接結合され得る。さらなる態様では、メモリコントローラは、ダイナミックランダムアクセスメモリ(DRAM)メモリコントローラであり得る。さらなる態様では、メモリコントローラは、ダブルデータレート(DDR)メモリコントローラであり得、メモリは、DDR同期型ダイナミックランダムアクセスメモリであり得る。
【０００５】
さらなる態様では、ダイレクトメモリアクセスコントローラは、送信元アドレスおよび宛先アドレスを受信することと、送信元アドレスがメモリ内にある可能性があるかどうかを判断することと、送信元アドレスがメモリ内にある可能性があるという判断に応答して、宛先アドレスがメモリ内にある可能性があるかどうかを判断することと、宛先アドレスがメモリ内にある可能性があるという判断に応答して、いかなるデータもバス上にプッシュすることなく、送信元アドレスに記憶されたデータを宛先アドレスにコピーすることとを含む動作を実行するように構成され得る。さらなる態様では、ダイレクトメモリアクセスコントローラは、宛先アドレスがメモリ内にない可能性があるという判断に応答して、送信元アドレスに記憶されたデータをバス上にプッシュすることをさらに含む動作を実行するように構成され得る。さらなる態様では、ダイレクトメモリアクセスコントローラは、送信元アドレスがメモリ内にない可能性があるという判断に応答して、読み出し要求、送信元アドレス、および宛先アドレスをバス上にプッシュすることをさらに含む動作を実行するように構成され得る。
【０００６】
さらなる態様は、メモリコントローラに直接結合されたダイレクトメモリアクセスコントローラで送信元アドレスおよび宛先アドレスを受信するステップと、メモリコントローラで、送信元アドレスがメモリコントローラに結合されたメモリ内にある可能性があるかどうかを判断するステップと、メモリコントローラで、宛先アドレスがメモリ内にある可能性があるかどうかを判断するステップと、メモリコントローラが、送信元アドレスと宛先アドレスの両方がメモリ内にあると判断したとき、いかなるデータもバス上にプッシュすることなく、送信元アドレスに記憶されたデータを宛先アドレスにコピーするステップとを含む、1つまたは複数のメモリとの間でデータを転送する方法を含む。
【０００７】
一態様では、方法は、宛先アドレスがメモリ内にない可能性があるという判断に応答して、送信元アドレスに記憶されたデータをバス上にプッシュするステップを含むことができる。さらなる態様では、方法は、送信元アドレスがメモリ内にない可能性があるという判断に応答して、読み出し要求、送信元アドレス、および宛先アドレスをバス上にプッシュするステップを含むことができる。さらなる態様では、メモリコントローラに直接結合されたダイレクトメモリアクセスコントローラで送信元アドレスおよび宛先アドレスを受信するステップは、メモリコントローラと同じシステムデータバスの側に位置するダイレクトメモリアクセスコントローラで送信元アドレスおよび宛先アドレスを受信するステップを含むことができる。
【０００８】
さらなる態様では、メモリコントローラで、送信元アドレスがメモリコントローラに結合されたメモリ内にある可能性があるかどうかを判断するステップは、ダイナミックランダムアクセスメモリ(DRAM)メモリコントローラで、送信元アドレスがメモリ内にある可能性があるかどうかを判断するステップを含むことができる。さらなる態様では、メモリコントローラで、送信元アドレスがメモリコントローラに結合されたメモリ内にある可能性があるかどうかを判断するステップは、ダブルデータレート(DDR)メモリコントローラで、送信元アドレスがDDR同期型ダイナミックランダムアクセスメモリ内にある可能性があるかどうかを判断するステップを含むことができる。
【０００９】
さらなる態様は、メモリコントローラに直接結合されたダイレクトメモリアクセスコントローラで送信元アドレスおよび宛先アドレスを受信するための手段と、メモリコントローラで、送信元アドレスがメモリコントローラに結合されたメモリ内にある可能性があるかどうかを判断するための手段と、メモリコントローラで、宛先アドレスがメモリ内にある可能性があるかどうかを判断するための手段と、メモリコントローラが、送信元アドレスと宛先アドレスの両方がメモリ内にあると判断したとき、いかなるデータもバス上にプッシュすることなく、送信元アドレスに記憶されたデータを宛先アドレスにコピーするための手段とを有するコンピューティングデバイスを含む。
【００１０】
一態様では、コンピューティングデバイスは、宛先アドレスがメモリ内にない可能性があるという判断に応答して、送信元アドレスに記憶されたデータをバス上にプッシュするための手段を含むことができる。さらなる態様では、コンピューティングデバイスは、送信元アドレスがメモリ内にない可能性があるという判断に応答して、読み出し要求、送信元アドレス、および宛先アドレスをバス上にプッシュするための手段を含むことができる。さらなる態様では、メモリコントローラに直接結合されたダイレクトメモリアクセスコントローラで送信元アドレスおよび宛先アドレスを受信するための手段は、メモリコントローラと同じシステムデータバスの側に位置するダイレクトメモリアクセスコントローラで送信元アドレスおよび宛先アドレスを受信するための手段を含むことができる。
【００１１】
さらなる態様では、メモリコントローラで、送信元アドレスがメモリコントローラに結合されたメモリ内にある可能性があるかどうかを判断するための手段は、ダイナミックランダムアクセスメモリ(DRAM)メモリコントローラで、送信元アドレスがメモリ内にある可能性があるかどうかを判断するための手段を含むことができる。さらなる態様では、メモリコントローラで、送信元アドレスがメモリコントローラに結合されたメモリ内にある可能性があるかどうかを判断するための手段は、ダブルデータレート(DDR)メモリコントローラで、送信元アドレスがDDR同期型ダイナミックランダムアクセスメモリ内にある可能性があるかどうかを判断するための手段を含むことができる。
【００１２】
本明細書に組み込まれ、本明細の一部を構成する添付図面は、本発明の例示的な実施形態を示し、上記に与えた一般的な説明、および以下に与える詳細な説明とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１３】
【図１】様々な態様を実施する例示的なシステムオンチップ(SOC)アーキテクチャを示す構成要素ブロック図である。
【図２】様々な態様を実施する例示的なコンピュータシステム内の様々な構成要素を示す機能ブロック図である。
【図３】様々な態様を実施する例示的なコンピュータシステム内の様々な構成要素を示す機能ブロック図である。
【図４】メモリ間転送を実行する一態様のメモリコントローラ方法のプロセスフロー図である。
【図５】メモリ間転送を実行する一態様のメモリコントローラ方法のプロセスフロー図である。
【図６】様々な実施形態で使用するのに適した例示的なモバイルデバイスの図である。
【図７】様々な実施形態で使用するのに適した例示的なラップトップコンピュータの図である。
【発明を実施するための形態】
【００１４】
様々な実施形態は、添付図面を参照して詳細に説明される。可能な限り、同じ参照番号は、図面を通して、同じまたは同様の部分を指すために使用される。特定の例および実施対象に行われる参照は、例示目的のためであり、本発明の範囲または特許請求の範囲を
限定することを意図していない。
【００１５】
「コンピューティングデバイス」および「モバイルデバイス」という用語は、サーバ、パーソナルコンピュータ、スマートフォン、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、ウルトラブック、パームトップコンピュータ、携帯用情報端末(PDA:personal data assistant)、ワイヤレス電子メール受信機、マルチメディアインターネット対応携帯電話、全地球測位システム(GPS:Global Positioning System)受信機、ワイヤレスゲームコントローラ、および、プログラム可能なプロセッサを含む同様のパーソナル電子デバイスのうちの任意の1つまたはすべてを指すために互換的に使用される。様々な態様は、限定されたリソース(例えば、処理パワー、バッテリ、など)を有するモバイルデバイス(例えば、スマートフォン、ラップトップコンピュータ、など)において特に有用であるが、態様は、改善されたプロセッサ性能および低減したエネルギー消費から利益を得ることができる任意のコンピューティングデバイスにおいて一般的に有用である。
【００１６】
「マルチコアプロセッサ」という用語は、本明細書では、プログラム命令を読み出して実行するように構成された2つ以上の独立した処理ユニットまたはコア(例えば、CPUコア、など)を含む単一の集積回路(IC)チップまたはチップパッケージを指すために使用される。「マルチプロセッサ」という用語は、本明細書では、プログラム命令を読み出して実行するように構成された2つ以上の処理ユニットを含むシステムまたはデバイスを指すために使用される。
【００１７】
「システムオンチップ」(SOC)という用語は、本明細書では、単一の基板上に集積された複数のリソースおよび/またはプロセッサを含む単一の集積回路(IC)チップを指すために使用される。単一のSOCは、デジタル、アナログ、混合信号、および無線周波数機能のための回路網を含むことができる。単一のSOCは、また、任意の数の汎用および/または専用プロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサ、など)、メモリブロック(例えば、ROM、RAM、フラッシュ、など)、ならびにリソース(例えば、タイマ、電圧レギュレータ、発振器、など)を含むことができ、これらのいずれかまたはすべては、1つまたは複数のコアに含まれ得る。
【００１８】
いくつかの異なるタイプのメモリおよびメモリ技術が、利用可能であるか、将来に考えられ、これらのすべては、様々な態様で使用するのに適している。そのようなメモリ技術/タイプは、相変化メモリ(PRAM:phase change memory)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM:static random-access memory)、不揮発性ランダムアクセスメモリ(NVRAM:volatile random-access memory)、擬似スタティックランダムアクセスメモリ(PSRAM:pseudostatic random-access memory)、ダブルデータレート同期型ダイナミックランダムアクセスメモリ(DDR SDRAM:double data rate synchronous dynamic random-access memory)、ならびに、当該技術分野で公知の他のランダムアクセスメモリ(RAM)および読み出し専用メモリ(ROM)を含む。DDR SDRAMメモリは、DDR1型SDRAMメモリ、DDR2型SDRAM、DDR3型SDRAM、またはDDR4型SDRAMであり得る。上記のメモリ技術の各々は、例えば、コンピュータまたは他のデジタル電子デバイス内で、またはこれらによって使用するための、命令、プログラム、制御信号、および/またはデータを記憶するのに適した要素を含む。メモリ、インターフェース、規格、またはメモリ技術の個々のタイプに関連する用語法および/または技術的詳細へのいかなる参照も、説明の目的のみのためであり、請求項の文言に具体的に記載されない限り、特許請求の範囲を特定のメモリシステムまたは技術に限定することを意図していない。
【００１９】
近年、モバイルコンピューティングデバイスのアーキテクチャは、複雑さが増してきており、現在一般的に、複数のプロセッサコア、システムオンチップ(SOC)、コプロセッサ、専用プロセッサ(例えば、通信モデムチップ、GPS受信機、など)を含む機能モジュール、複雑なメモリシステム、複雑な電気的相互接続(例えば、バスおよび/またはファブリック)、ならびに、複雑で電力集中的なソフトウェアアプリケーション(例えば、ビデオストリーミングアプリケーション、など)を実行する多数の他のリソースを含む。複雑さのこの増大に伴い、モバイルデバイスの計算および電力管理性能を改善するために、新たなメモリ管理解決策が必要とされる。
【００２０】
現代のコンピューティングデバイスのアーキテクチャの複雑さのため、デバイス性能は、デバイスの通信バスの速度、幅、および帯域幅に依存する可能性がある。しかし、既存のメモリ管理システムは、メモリとの間でデータを読み書きするために、システムバスの大量使用を必要とし、これは、大量のバス帯域幅を消費し、電力を消費し、全体的なデバイス性能(例えば、応答性、など)を低下させる可能性がある。
【００２１】
様々な態様は、1つまたは複数のメモリとの間でデータを転送するとき、システムバス/ファブリックを介して通信される情報の量を低減し、デバイス性能を改善し、電力消費を低減する。
【００２２】
一般的には、メモリ動作(例えば、読み出し、書き込み、など)は、いくつかの簡単だが時間のかかる動作の実行を必要とする。処理速度は、メモリアクセス速度よりもはるかに高速であるので、プロセッサ(または、周辺構成要素)は、メモリ動作をダイレクトメモリアクセス(DMA)コントローラにオフロードすることができ、DMAコントローラがメモリ動作の実行を管理している間、処理タスクを実行し続けることができる。
【００２３】
DMAコントローラは、読み出し書き込み動作を実行するために物理メモリ(例えば、SDRAM、など)とインターフェースするスレーブメモリコントローラを駆動する外部マスタ構成要素(例えば、バスマスタ)である。従来のコンピュータアーキテクチャでは、外部マスタ(例えば、DMAコントローラ、など)は、システムバスを介してメモリコントローラを駆動する。システムバスは、2つの構成要素の間のデータ経路であるので、データを使用するためにメモリからプロセッサに移動するときのような多くの動作では、システムバスを介してメモリコントローラを駆動することが必要である。
【００２４】
しかしながら、システムバスは、限定された帯域幅を有し、したがって、命令およびデータを単にあるメモリ位置から別のメモリ位置に移動させるメモリ動作を実行することは、重要なデバイスリソースを不必要に消費する可能性がある。例えば、従来のアーキテクチャでメモリ間データ転送を実行するとき、外部マスタとして動作するDMAコントローラは、読み出しコマンドおよびメモリアドレスを、システムバスを介してメモリコントローラに送信する。これに応答して、メモリコントローラは、システムバスから読み出しコマンドおよびメモリアドレスをプルし、メモリアドレスに関連付けられた物理メモリ内の行および列の位置を突き止め、物理メモリからデータを取得し、取得したデータをシステムバス上にプッシュする。DMAコントローラは、次いで、バスからデータをプルし、データをバッファに記憶し、書き込みコマンド、新たなアドレス、およびデータを、システムバス上にプッシュし戻す。メモリコントローラは、次いで、書き込みコマンド、新たなアドレス、およびデータをバスからプルし、データを物理メモリ内の新たなアドレスに書き込む。したがって、物理メモリのある部分から同じ物理メモリの別の部分にデータを移動するために、データは、バスを2回介して伝送されなければならない。システムバスを介するこれらのデータ転送の各々は、重要なプロセッサ間データ経路を占有し、その間、命令およびデータは、他のプロセッサまたはモジュールにまたはこれらの間で渡され得ない。したがって、データが同じメモリチップ内のあるアドレス位置から別のアドレス位置に移動されているにもかかわらず、動作は、他のデバイスモジュール間のデータ通信を中断しなければならない。かなりの数のメモリ間データ転送を実行するシステムでは、そのような情報(読み出し/書き込みコマンド、アドレス、データ、など)をバス上で前後に送ることは、バス帯域幅を不必要に不通にし、電力を浪費し、コンピューティングデバイスの性能/応答性を低下させる。
【００２５】
様々な態様は、システムバスに情報をプッシュするおよび/またはシステムバスから情報をプルすることなしにメモリ間データ転送を実行するように構成されたマスタ構成要素を含むメモリコントローラを含む。一態様では、マスタ構成要素は、ダイレクトメモリアクセス(DMA)動作を実行するように構成され得る。一態様では、マスタ構成要素は、DMAコントローラであり得る。別の態様では、マスタ構成要素は、外部DMAコントローラと通信することができる。
【００２６】
様々な態様は、シングルプロセッサシステム、マルチプロセッサシステム、マルチコアプロセッサシステム、システムオンチップ(SOC)、またはこれらの任意の組み合わせを含む、多種多様なコンピューティングシステムで実施され得る。
【００２７】
図1は、様々な態様を実施するのに適したシステムオンチップ(SOC)100内の例示的な構成要素および相互接続を示す。SOC100は、デジタル信号プロセッサ(DSP:digital signal processor)102、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108のような、いくつかの異種のプロセッサを含むことができる。各プロセッサ102、104、106、108は、1つまたは複数のコアを含むことができ、各プロセッサ/コアは、他のプロセッサ/コアから独立して動作を実行することができる。プロセッサ102、104、106、108は、それらが、信号がチップ外に移動した場合に可能であるよりもはるかに高い周波数/クロックレートで動作することができるように、互いに近接して(例えば、単一の基板、ダイ、集積チップ、等の上に)編成され得る。コアの近接は、また、オンチップメモリおよびリソース(例えば、電圧レール)の共有、ならびに、コア間のより協調的な協働を可能にすることができる。
【００２８】
SOC100は、センサデータ、アナログ-デジタル変換、ワイヤレスデータ伝送を管理し、他の特別な動作(例えば、高精細ビデオの復号化、ビデオ処理、など)を実行するための、アナログ回路網およびカスタム回路網114を含むことができる。SOC100は、さらに、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、システムコントローラ、アクセスポート、タイマ、ならびに、コンピューティングデバイス上で動作するプロセッサおよびソフトウェアクライアントをサポートするために使用される他の同様の構成要素のような、様々なシステム構成要素およびリソース116を含むことができる。システム構成要素116およびカスタム回路網114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップ、などのような周辺デバイスとインターフェースするための回路網を含むこともできる。
【００２９】
SOC100は、さらに、ダイレクトメモリアクセス(DMA)コントローラ122、ユニバーサルシリアルバスコントローラ124、および1つまたは複数のメモリコントローラ126を含むことができる。SOC100は、各々が2つ以上の内部SOC構成要素によって共有され得るクロック118および電圧レギュレータ120のようなSOCの外部のリソースと通信するための入力/出力モジュール(図示せず)を含むこともできる。
【００３０】
プロセッサ102、104、106、108は、相互接続/バスモジュール130を介して、DMAコントローラ122、USBコントローラ124、メモリコントローラ126、リソース116、カスタム回路網114、および他のシステム構成要素と相互接続され得、相互接続/バスモジュール130は、再構成可能な論理ゲートのアレイを含むことができ、および/またはバスアーキテクチャ(例えば、CoreConnect、AMBA、など)を実装することができる。通信は、また、高性能ネットワークオンチップ(NoC)のような高度な相互接続によって提供され得る。
【００３１】
DMAコントローラ122は、メモリ動作の実行を管理するように構成された専用のハードウェアモジュールであり得る。プロセッサ102、104、106、108、および他のSOC構成要素は、メモリ動作をDMAコントローラ122にオフロードすることができ、DMAコントローラ122がメモリ動作の実行を管理している間、より高いレベルのまたはより複雑なタスクを実行することができる。
【００３２】
DDRメモリコントローラ126は、DDRメモリアレイ128との間のデータの流れを管理するように構成された専用のハードウェアモジュールであり得る。DDRメモリコントローラ126は、メモリ位置に対応する行および列を選択すること、データをメモリ位置に対して読み書きすること、などのような、DDRメモリアレイ128とインターフェースするためのロジックを含むことができる。
【００３３】
相互接続/バスモジュール130は、SOC構成要素(例えば、プロセッサ、周辺機器、など)に、設定期間、動作の数、バイト数、などのための(例えば、データを、バーストモード、ブロック転送モード、などで転送するために)バスの排他的制御を許可するように構成されたバスマスタリングシステムを含むまたは提供することができる。一態様では、バスモジュール130は、バスモジュール130に接続された構成要素がマスタ構成要素として動作し、メモリトランザクションを開始することを可能にするDMAコントローラを含むことができる。バスモジュール130は、複数のマスタ構成要素がバスを同時に駆動しようとすることを防止するために、仲裁スキームを実施することもできる。
【００３４】
既存のメモリコントローラは、「スレーブ専用」構成要素である。したがって、メモリ動作を達成するために、外部マスタ(例えば、DMAコントローラ122、USBコントローラ124、アプリケーションプロセッサ108、など)は、バス(例えば、バスモジュール130)を介してメモリコントローラ(例えば、DDRコントローラ126)を駆動しなければならない。例えば、メモリ間データ転送を実行するとき、DMAコントローラは、読み出しコマンドおよび送信元メモリアドレスを、バスを介してメモリコントローラに送信する必要がある可能性がある。メモリコントローラは、読み出しコマンドおよび送信元メモリアドレスを受信し、メモリ内の送信元メモリアドレスに関連付けられた行および列の位置を突き止め、データを取得し、取得したデータをバス上にプッシュすることができる。DMAコントローラは、データを受信し、バッファ(図示せず)に記憶することができ、書き込みコマンド、宛先アドレス、およびデータをバス上にプッシュすることができる。メモリコントローラは、書き込みコマンド、宛先アドレス、およびデータを受信し、データを宛先アドレスに書き込むことができる。したがって、既存の解決策を使用すると、移動されているデータは、バスを2回介して伝送されなければならない。前述のように、かなりの数のメモリ間データ転送を実行するシステムでは、そのような情報(読み出し/書き込みコマンド、アドレス、データ、など)をバス上で前後に送ることは、バス帯域幅を不必要に不通にし、電力を浪費し、SOCおよびコンピューティングデバイスの性能および応答性を低下させる。
【００３５】
DDRメモリコントローラ126は、システムバスの使用なしにメモリ間転送動作を実行するように構成されたマスタ構成要素132を含むことができる。一態様では、マスタ構成要素132は、DMA動作を実行するように構成され得る。一態様では、マスタ構成要素132は、DMAコントローラであり得る。
【００３６】
図2は、様々な態様に従って構成されたDDRメモリコントローラを有する例示的なコンピューティングシステム200における論理的構成要素および情報の流れを示す。図2に示す例では、コンピューティングシステム200は、周辺構成要素202と、処理ユニット204と、DDRメモリコントローラ206と、DDR SDRAMメモリ208と、第2のメモリコントローラ214と、第2のメモリ216とを含む。DDRメモリコントローラ208は、様々なDMAおよびメモリ動作を実行するように構成されたマスタコントローラモジュール212を含むことができる。様々な態様では、周辺構成要素202は、USBコントローラ、USBモジュール、またはUSBデバイスであり得る。一態様では、第2のメモリコントローラ214は、DDRメモリコントローラであり得る。
【００３７】
周辺構成要素202、処理ユニット204、およびDDRメモリコントローラ206は、システムバス210に結合され得る。DDRメモリコントローラ206は、DDR-PHYインターフェースおよび/またはメモリバスを介してDDR SDRAM208に結合され得る。
【００３８】
周辺構成要素202および/または処理ユニット204は、転送されるデータのメモリ位置を識別する送信元アドレスと、コピーされるバイト数と、データが転送されるメモリ位置を識別する宛先アドレスとをバス210上にプッシュすることによって、データ転送動作を開始するように構成され得る。DDRメモリコントローラ206のマスタコントローラモジュール212は、送信元アドレス、バイト数、および宛先アドレスをバス210からプルし、送信元および宛先アドレスがDDR SDRAM208内のメモリ位置を特定するかどうかを判断することができる。
【００３９】
マスタコントローラモジュール212が、送信元アドレスおよび宛先アドレスの両方がDDR SDRAM208の外部の位置を特定すると判断したとき、マスタコントローラモジュール212は、送信元アドレスから宛先アドレスへのデータの転送を管理するために、従来のDMA動作を実行することができる。例えば、マスタコントローラモジュール212は、バス210を介して第2のメモリコントローラ214に読み出しコマンドおよび送信元アドレスを送信し、バス210を介して第2のメモリコントローラ214からデータを受信し、データをバッファ(図示せず)に記憶し、バス210を介して第2のメモリコントローラ214に書き込みコマンド、宛先アドレス、およびデータを送信することができる。
【００４０】
マスタコントローラモジュール212が、送信元アドレスおよび宛先アドレスの両方がDDR SDRAM208の内部の位置を特定すると判断したとき、マスタコントローラモジュール212は、転送されたデータのいずれもバス上にプッシュすることなく、送信元アドレスから宛先アドレスにデータを自動的に転送することができる。このようにして、様々な態様は、情報(読み出し/書き込みコマンド、アドレス、データ、など)をバス210上で前後に送ることなく、メモリ間データ転送を達成することができ、これは、バス210上で利用可能な帯域幅を増大し、電力消費を低減し、コンピューティングデバイスの性能/応答性を改善する。
【００４１】
マスタコントローラモジュール212が、送信元アドレスがDDR SDRAM208の内部の位置を特定するが、宛先アドレスがDDR SDRAM208の外部の位置を参照すると判断したとき、マスタコントローラモジュール212は、(DDR SDRAM208内の)宛先アドレスからデータを取得し、取得したデータおよび宛先アドレスを、バス210を介して第2のメモリコントローラ214に送信することができる。
【００４２】
したがって、データをバス210上に2回(すなわち、データを取得した後の1回およびデータを書き込むための1回)プッシュすることを必要とする従来の解決策とは対照的に、様々な態様は、データをバス210上に1回のみプッシュすることによって、メモリ間転送動作を達成することができる。このようにして、様々な態様は、メモリ間データ転送の間にバス210を介して通信されるデータの量を低減し、バス帯域幅を増大し、電力消費を低減し、コンピューティングデバイスの性能/応答性を改善する。
【００４３】
図3は、一態様のDDRメモリコントローラおよび外部DMAコントローラを含む別の例示的なコンピューティングシステム300における論理的構成要素および情報の流れを示す。図3に示す例では、コンピューティングシステム300は、周辺構成要素202と、DMAコントローラ304と、処理ユニット204と、DDRメモリコントローラ206と、DDR SDRAMメモリ208とを含む。一態様では、コンピューティングシステム300は、複数のDDR SDRAMメモリ208と、複数のDDR SDRAMメモリ208の各々のための1つのDDRメモリコントローラ206とを含むことができる。
【００４４】
周辺構成要素202、DMAコントローラ304、および処理ユニット204は、システムネットワークオンチップ(NOC)312に結合され得る。DMAコントローラ304、処理ユニット204、およびDDRメモリコントローラ206は、システムバス314に結合され得る。DDRメモリコントローラ206は、DDR-PHYインターフェースおよび/またはメモリバスを介してDDR SDRAM208に結合され得る。
【００４５】
DMAコントローラ304は、メモリアドレスレジスタ316と、バイトカウントレジスタ318と、制御レジスタ320とを含むことができる。制御レジスタ320は、動作タイプ、送信元または目標構成要素、転送の方向、転送単位(例えば、一度に1バイト、一度に1ワード、など)、転送またはバーストモード、各バーストで転送するバイト数、などを識別するための情報のような、メモリ動作を達成するための様々な異なるタイプの情報を記憶することができる。
【００４６】
DDRメモリコントローラ206は、様々なDMAメモリ動作を実行するように構成されたマスタコントローラモジュール212を含むことができる。一態様では、マスタコントローラモジュール212は、DDRメモリコントローラ206の回路網と一体化された回路網を含むことができる。一態様では、マスタコントローラモジュール212は、DDRメモリコントローラ206の回路網に結合された回路網を含むことができる。
【００４７】
DDRメモリコントローラ206は、コントローラモジュール322と、信号モジュール324と、データモジュール336と、ローカルメモリ/バッファ338とを含むこともできる。コントローラモジュール322は、様々な制御信号(例えば、istate、cstate、など)を生成するように構成されたリフレッシュカウンタおよび状態機械ロジックを含むことができる。信号モジュール334は、制御信号に基づいてDDR SDRAMメモリ208のためのアドレスおよびコマンド信号を生成するように構成され得る。データモジュール336は、(例えば、DDR-PHYインターフェースおよび/またはメモリバスを介して)DDR SDRAMメモリ208に対してデータを読み書きするために、データラッチおよびディスパッチ動作を実行するように構成され得る。
【００４８】
周辺構成要素202は、DMAコントローラ304または処理ユニット204に、実行されるメモリ動作(読み出し、書き込み、転送、など)、関連するメモリアドレス、および、動作を実行するために必要なバイト(または、ワード、ビット、など)数を、システムNOC312を介して送信することによって、メモリ動作を開始するように構成され得る。DMAコントローラ204および/または処理ユニット306は、メモリ動作を開始する周辺構成要素202に応答して、DDRメモリコントローラ206の正しいインスタンスを識別する、および/または、関連するメモリアドレス(例えば、送信元アドレスおよび宛先アドレス)をDDRメモリコントローラ206に送信するように構成され得る。
【００４９】
DDRメモリコントローラ206のマスタコントローラモジュール212は、送信元アドレスおよび宛先アドレスをバス314からプルし、送信元および宛先アドレスがDDR SDRAM208の内部のメモリ位置を特定するかどうかを判断するように構成され得る。送信元アドレスと宛先アドレスの両方がDDR SDRAM208の内部の位置を特定するとき、マスタコントローラモジュール212は、転送されたデータのいずれもバス314上にプッシュすることなく、送信元アドレスから宛先アドレスにデータを自動的に転送することができる。一態様では、送信元アドレスから宛先アドレスにデータを転送することは、DDR SDRAM208内の第1の位置からデータを読み出すことと、データをローカルメモリ338に記憶することと、ローカルメモリ338に記憶されたデータをDDR SDRAM208内の第2の位置に書き込むこととを含むことができる。
【００５０】
一態様では、マスタコントローラモジュール212は、送信元アドレスと宛先アドレスの両方がDDR SDRAM208の境界の外側の位置を参照すると判断することに応答してDMA動作を実行するように構成され得る。別の態様では、マスタコントローラモジュール212は、送信元アドレスおよび/または宛先アドレスがDDR SDRAM208の境界の外側の位置を参照するとき、DMAコントローラ304がメモリ転送動作を実行することを可能にするように構成され得る。例えば、マスタコントローラモジュール212は、送信元および/または宛先アドレスの両方がDDR SDRAM208の境界の外側の位置を参照することをDMAコントローラ304に通知し、次のメモリ要求を待機するように構成され得る。このようにして、DDRメモリコントローラ206は、送信元アドレスおよび/または宛先アドレスが、DDRメモリコントローラ206が制御を有するDDR SDRAM208の境界の外側にあるとき、従来のメモリコントローラとして動作することができる。
【００５１】
図4は、一態様のメモリコントローラによってメモリ間転送動作を実行する一態様の方法400を示す。ブロック402では、メモリコントローラ(例えば、DDRメモリコントローラ206)は、システムバスを介して送信元アドレスおよび宛先アドレスを受信することができる。判断ブロック404では、メモリコントローラは、宛先アドレスが(例えば、メモリバス、PHYインターフェース、などを介して)メモリコントローラに直接アクセス可能なメモリ位置であるかどうかを判断することができる。例えば、メモリコントローラは、アドレスが、メモリコントローラが直接の制御および/または責任を有するメモリ(DRAM、DDR SDRAM、など)の境界内にある行および列データアドレスに変換され得るかどうかを判断することができる。
【００５２】
メモリコントローラが、送信元アドレスがメモリコントローラに直接アクセス可能なメモリ位置ではないと判断したとき(すなわち、判断ブロック404=「No」)、判断ブロック406で、メモリコントローラは、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置(例えば、メモリコントローラが直接の制御/責任などを有するメモリの境界内)であるかどうかを判断することができる。メモリコントローラが、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置であると判断したとき(すなわち、判断ブロック406=「Yes」)、ブロック416で、メモリコントローラは、DMA動作を実行することができる。上述したように、DMA動作は、読み出し命令および送信元アドレスをバス上にプッシュすることと、データを受信し、ローカルメモリに記憶することと、書き込みコマンド、記憶したデータ、および宛先アドレスをバス上にプッシュすることとを含むことができる。メモリコントローラが、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置ではないと判断したとき(すなわち、判断ブロック406=「No」)、ブロック418で、メモリコントローラは、エラーを生成し、報告することができる。
【００５３】
メモリコントローラは、送信元アドレスがメモリコントローラに直接アクセス可能なメモリ位置であると判断したとき(すなわち、判断ブロック404=「Yes」)、判断ブロック408で、メモリコントローラは、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置(例えば、メモリコントローラが直接の制御/責任などを有するメモリの境界内)であるかどうか判断することができる。メモリコントローラが、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置であると判断したとき(すなわち、判断ブロック408=「Yes」)、ブロック410で、メモリコントローラは、送信元アドレスに記憶されたデータを宛先アドレスにコピーすることができる。
【００５４】
メモリコントローラが、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置ではないと判断したとき(すなわち、判断ブロック408=「No」)、ブロック412で、メモリコントローラは、送信元アドレスに記憶されたデータを取得することができる。ブロック414で、メモリコントローラは、書き込みコマンド、宛先アドレス、および取得したデータを(例えば、情報をバス上にプッシュすることなどによって)第2のメモリコントローラに送信することができる。
【００５５】
図5は、一態様のメモリコントローラによってメモリ間転送動作を実行する別の態様の方法500を示す。ブロック502では、メモリコントローラ(例えば、DDRメモリコントローラ206)は、システムバスを介して送信元アドレスおよび宛先アドレスを受信することができる。判断ブロック504では、メモリコントローラは、送信元アドレスが(例えば、メモリバス、PHYインターフェース、などを介して)メモリコントローラに直接アクセス可能なメモリ位置であるかどうかを判断することができる。例えば、メモリコントローラは、アドレスが、メモリコントローラが直接の制御/責任を有するメモリ(DRAM、DDR SDRAM、など)の境界内にある行および列データアドレスに変換され得るかどうかを判断することができる。
【００５６】
メモリコントローラが、送信元アドレスがメモリコントローラに直接アクセス可能なメモリ位置ではないと判断したとき(すなわち、判断ブロック504=「No」)、ブロック506で、メモリコントローラは、通知(例えば、制御信号、メッセージ、など)を生成し、外部DMAコントローラに送信することができ、この通知は、外部DMAコントローラにメモリ間転送動作を実行させることができる。
【００５７】
メモリコントローラが、送信元アドレスがメモリコントローラに直接アクセス可能なメモリ位置であると判断したとき(すなわち、判断ブロック504=「Yes」)、ブロック508で、メモリコントローラは、送信元アドレスに記憶されたデータを取得することができる。ブロック501で、メモリコントローラは、データをローカルメモリに記憶することができる。
【００５８】
判断ブロック512では、メモリコントローラは、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置(例えば、メモリコントローラが直接の制御/責任などを有するメモリの境界内)であるかどうかを判断することができる。メモリコントローラが、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置であると判断したとき(すなわち、判断ブロック512=「Yes」)、ブロック514で、メモリコントローラは、ローカルメモリに記憶されたデータを宛先アドレスにコピーすることができる。メモリコントローラが、宛先アドレスがメモリコントローラに直接アクセス可能なメモリ位置ではないと判断したとき(すなわち、判断ブロック512=「No」)、ブロック516で、メモリコントローラは、書き込みコマンド、宛先アドレス、および、ローカルメモリに記憶されたデータを(例えば、情報をバスにプッシュすることなどによって)第2のメモリコントローラに送信することができる。
【００５９】
様々な実施形態は、また、そのいくつかの例が図6〜図7に示されている任意の商業的なコンピューティングデバイスを使用して実施され得る。典型的なモバイルコンピューティングデバイス600は、一般的に、図6に示す構成要素を有することになる。例えば、モバイルコンピューティングデバイス600は、内部メモリ604と、抵抗検知タッチスクリーン、静電容量検知タッチスクリーン、赤外線検知タッチスクリーン、音響/圧電検知タッチスクリーン、などのようなタッチ表面入力デバイス/ディスプレイ606とに結合されたプロセッサ602を含むことができる。コンピューティングデバイス600は、プロセッサ602に結合されたワイヤレスデータリンクおよび/またはセルラ電話トランシーバ608に接続された、電磁放射を送受信するための無線/アンテナ610を有することができる。コンピューティングデバイス600は、ユーザ入力を受信するための物理的なボタン612を含むこともできる。
【００６０】
パーソナルコンピュータおよびラップトップコンピュータを含むコンピューティングデバイスの他の形態は、様々な実施形態を実施するために使用され得る。そのようなコンピューティングデバイスは、典型的には、例示的なパーソナルラップトップコンピュータ700を示す図7に示されている構成要素を含む。そのようなパーソナルコンピュータ700は、一般的には、揮発性メモリ704と、ディスクドライブ706のような大容量不揮発性メモリとに結合されたプロセッサ702を含む。コンピュータ700は、プロセッサ702に結合されたコンパクトディスク(CD)および/またはDVDドライブ708を含むこともできる。コンピュータデバイス700は、データ接続を確立するための、または、プロセッサ702をネットワークに結合するためのネットワーク接続回路のような外部メモリデバイスを受けるための、プロセッサ702に結合された、いくつかのコネクタポートを含むこともできる。コンピュータデバイス700は、プロセッサ702に結合されたワイヤレスデータリンクに接続された、電磁放射を送受信するための無線/アンテナ710を有することができる。コンピュータ700は、さらに、コンピュータ技術分野では周知のように、キーボード716、マウス714のようなポインティングデバイス、およびディスプレイ712に結合され得る。
【００６１】
プロセッサ602、702は、本明細書に記載の様々な実施形態の機能を含む様々な機能を実行するためにソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラム可能なマイクロプロセッサ、マイクロコンピュータ、または多重プロセッサチップであり得る。ワイヤレス通信機能専用の1つのプロセッサ、および他のアプリケーションの実行専用の1つのプロセッサのように、複数のプロセッサが設けられ得る。典型的には、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ602、702にロードされる前に、内部メモリに記憶され得る。いくつかのデバイスでは、プロセッサ602、702は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含むことができる。いくつかのモバイルデバイスでは、セキュアメモリは、プロセッサ602、702に結合された別個のメモリチップであり得る。内部メモリは、揮発性もしくはフラッシュメモリのような不揮発性メモリ、または両方の混合物であり得る。この説明の目的のため、メモリへの一般的な参照は、内部メモリ、デバイスに差し込まれたリムーバブルメモリ、および、プロセッサ602、702自体の内部のメモリを含む、プロセッサによってアクセス可能なすべてのメモリを指す。
【００６２】
上記の方法の説明およびプロセスフロー図は、単に例示的な例として提供され、様々な実施形態のブロックが提示された順序で実行されなければならないことを必要とするまたは意味することを意図していない。当業者によって理解されるように、上記の実施形態でのブロックの順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの単語は、ブロックの順序を限定することを意図しておらず、これらの単語は、単に、方法の説明を通じて読者を導くために使用される。さらに、例えば、冠詞「a」、「an」、または「the」を使用する、単数形での請求項の要素へのどのような参照も、要素を単数に限定するものとして解釈されるべきではない。
【００６３】
本明細書で開示された実施形態に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムブロックは、電子ハードウェア、コンピュータソフトウェア、または両方の組み合わせとして実現され得る。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、それらの機能の観点から一般的に上記で説明してきた。このような機能がハードウェアとして実施されるかまたはソフトウェアとして実施されるかは、特定の用途、およびシステム全体に課される設計上の制約に依存する。当業者は、説明した機能を、それぞれの特定の用途に対して様々な方法で実施することができるが、そのような実施の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
【００６４】
本明細書に開示された実施形態に関連して説明した様々な例示的ロジック、論理ブロック、モジュール、および回路を実施するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、もしくは他のプログラマブル論理デバイス、ディスクリートゲートもしくはトランジスタロジック、ディスクリートハードウェア構成要素、または、本明細書に記載の機能を行うように設計されたこれらの任意の組み合わせを用いて、実装または実行され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組み合わせ、例えば、DSPおよびマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと組み合わされた1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として、実装され得る。代替的には、いくつかのステップまたは方法は、所与の機能に固有な回路網によって実行され得る。
【００６５】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実施され得る。ソフトウェアで実施される場合、機能は、非一時的なコンピュータ可読媒体または非一時的なプロセッサ可読媒体上に1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示された方法またはアルゴリズムのステップは、非一時的なコンピュータ可読またはプロセッサ可読記憶媒体上に存在することができるプロセッサ実行可能ソフトウェアモジュール内で具体化され得る。非一時的なコンピュータ可読またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。例として、限定ではなく、そのような非一時的なコンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROM、もしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、所望のプログラムコードを命令もしくはデータ構造の形態で記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含むことができる。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組み合わせも、非一時的なコンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る非一時的なプロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組み合わせもしくはセットとして存在することができる。
【００６６】
開示された実施形態の上記の説明は、当業者が本発明を作製または使用することができるようにするために提供される。これらの実施形態に対する様々な変更は、当業者には容易に明らかとなり、本明細書で定義された一般的な原理は、本発明の要旨または範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本発明は、本明細書に示した実施形態に限定されることを意図しておらず、以下の特許請求の範囲、ならびに、本明細書で開示された原理および新規な特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００６７】
100  システムオンチップ(SOC)
102  デジタル信号プロセッサ
104  モデムプロセッサ
106  グラフィックスプロセッサ
108  アプリケーションプロセッサ
114  アナログ回路およびカスタム回路網
116  システム構成要素およびリソース
118  クロック
120  電圧レギュレータ
122  ダイレクトメモリアクセス(DMA)コントローラ
124  USBコントローラ
126  メモリコントローラ、DDRメモリコントローラ
128  DDRメモリアレイ
130  相互接続/バスモジュール
132  マスタ構成要素
200  コンピューティングシステム
202  周辺構成要素
204  処理ユニット
206  DDRメモリコントローラ
208  DDR SDRAMメモリ
210  バス
212  マスタコントローラモジュール
214  第2のメモリコントローラ
216  第2のメモリ
300  コンピューティングシステム
304  DMAコントローラ
312  システムネットワークオンチップ(NOC)
314  システムバス
316  メモリアドレスレジスタ
318  バイトカウントレジスタ
330  制御レジスタ
332  コントローラモジュール
334  信号モジュール
336  データモジュール
338  ローカルメモリ/バッファ
【要約】
様々な実施形態は、1つまたは複数のメモリとの間でデータを転送するとき、システムバス/ファブリックを介して通信される情報の量を低減するように構成されたシステム、方法、およびデバイスを含む。システムマスタ構成要素は、送信元アドレスおよび宛先アドレスを、メモリコントローラの内部のまたはこれに隣接するダイレクトメモリアクセスコントローラに送信することができる。ダイレクトメモリアクセスコントローラおよび/またはメモリコントローラは、送信元および宛先アドレスがメモリの関連する部分の内部にあるかどうかを判断することができる。送信元と宛先の両方がメモリの関連する部分の内部にあるとき、メモリコントローラは、システムバスにアクセスすることなく、メモリ間データ転送を実行することができる。【図１】
0005866488.tif 000002
【図２】
0005866488.tif 000003
【図３】
0005866488.tif 000004
【図４】
0005866488.tif 000005
【図５】
0005866488.tif 000006
【図６】
0005866488.tif 000007
【図７】
0005866488.tif 000008