(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023058030
(43)【公開日】2023-04-24
(54)【発明の名称】自動ダイレクトメモリアクセスデータフォーマットのためのハードウェアシステム
(51)【国際特許分類】
G06F 13/12 20060101AFI20230417BHJP
G06F 13/28 20060101ALI20230417BHJP
G06F 13/36 20060101ALI20230417BHJP
【FI】
G06F13/12 340G
G06F13/28 310A
G06F13/36 310E
G06F13/12 340C
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022163626
(22)【出願日】2022-10-12
(31)【優先権主張番号】17/499,522
(32)【優先日】2021-10-12
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【弁護士】
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】ガイ シュベリ
(72)【発明者】
【氏名】バラク チェルチェス
(72)【発明者】
【氏名】ウリ ウェインリブ
(57)【要約】 (修正有)
【課題】データ転送の前にダイレクトメモリアクセス(DMA)チャネルを適切に構成するハードウェアDMAコントローラを提供する。
【解決手段】ハードウェアDMAコントローラの処理回路要素は、入力ポートを介して電子デバイスからヘッダー及びペイロードを含むデータを受信し、ヘッダーを解析してレジスタ長と入力データフォーマットとを含むデータパラメータを判定し、データパラメータに基づきデータのためのターゲット宛先を選択する。処理回路要素はまた、トランザクション長に基づきターゲット宛先内のメモリを割り当て、データパラメータに基づきダイレクトメモリアクセスのためにペイロードをフォーマットし、フォーマットされたペイロードをダイレクトメモリアクセスを用いて出力ポートを介しターゲット宛先内の割り当てられたメモリ内に格納するために転送する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
ハードウェアダイレクトメモリアクセスコントローラであって、
ダイレクトメモリアクセスのために電子デバイスからデータを受け取るように構成される入力ポートと、
ダイレクトメモリアクセス転送のためのデータを提供するように構成される出力ポートと、
前記入力ポート及び前記出力ポートと結合される処理回路要素と、
を含み、
前記処理回路要素が、
前記入力ポートを介して前記電子デバイスからヘッダー及びペイロードを含むデータを受け取り、
トランザクション長と入力データフォーマットとを含むデータパラメータを判定するために前記ヘッダーを解析し、
前記データパラメータに少なくとも部分的に基づいて前記データのためのターゲット宛先を選択し、
前記トランザクション長に少なくとも部分的に基づいて前記ターゲット宛先内でメモリを割り当て、
前記データパラメータに少なくとも部分的に基づいてダイレクトメモリアクセスのために前記ペイロードをフォーマットし、
ダイレクトメモリアクセスを用いて、前記出力ポートを介して前記ターゲット宛先内の前記割り当てられたメモリ内に格納するために前記フォーマットされたペイロードを転送する、
ように構成される、
ハードウェアダイレクトメモリアクセスコントローラ。
【請求項2】
請求項1に記載のハードウェアダイレクトメモリアクセスコントローラであって、前記処理回路要素が、前記データに対してビットスウィズリングを実施するように更に構成される、ハードウェアダイレクトメモリアクセスコントローラ。
【請求項3】
請求項1に記載のハードウェアダイレクトメモリアクセスコントローラであって、前記処理回路要素が、スキャッタギャザーモードを用いて、前記ターゲット宛先内でメモリを割り当てるように更に構成される、ハードウェアダイレクトメモリアクセスコントローラ。
【請求項4】
請求項3に記載のハードウェアダイレクトメモリアクセスコントローラであって、前記処理回路要素が、複数のデータペイロードに対してデータアグリゲーションを実施するように更に構成される、ハードウェアダイレクトメモリアクセスコントローラ。
【請求項5】
請求項3に記載のハードウェアダイレクトメモリアクセスコントローラであって、前記処理回路要素が、
前記ペイロードを複数のデータパーティションに区分することと、
各データパーティションを別々に処理することと、
前記複数のデータパーティションに対応する前記ターゲット宛先内の複数のメモリロケーションを割り当てることと、
前記複数のデータパーティションの各々を前記複数のメモリロケーションのうちの1つに格納することと、
によって、前記ペイロードに対してデータフラグメンテーションを実施するように更に構成される、
ハードウェアダイレクトメモリアクセスコントローラ。
【請求項6】
請求項1に記載のハードウェアダイレクトメモリアクセスコントローラであって、前記処理回路要素が、前記入力データフォーマットに少なくとも部分的に基づいて、前記ターゲット宛先内でメモリを割り当てるように更に構成される、ハードウェアダイレクトメモリアクセスコントローラ。
【請求項7】
請求項1に記載のハードウェアダイレクトメモリアクセスコントローラであって、前記入力ポート及び前記出力ポートが共に入力/出力ポートを含む、ハードウェアダイレクトメモリアクセスコントローラ。
【請求項8】
ハードウェアダイレクトメモリアクセスコントローラを動作させるための方法であって、
ヘッダーとペイロードを含むデータを電子デバイスから入力ポートを介して受け取ることと、
トランザクション長と入力データフォーマットとを含むデータパラメータを判定するため前記ヘッダーを解析することと、
前記データパラメータに少なくとも部分的に基づいて前記データのためのターゲット宛先を選択することと、
前記トランザクション長に少なくとも部分的に基づいて、前記ターゲット宛先内でメモリを割り当てることと、
前記データパラメータに少なくとも部分的に基づいて、ダイレクトメモリアクセスのために前記ペイロードをフォーマットすることと、
ダイレクトメモリアクセスを用いて出力ポートを介して前記ターゲット宛先内の前記割り当てられたメモリ内に格納するために前記フォーマットされたペイロードを転送することと、
を含む、方法。
【請求項9】
請求項8に記載の方法であって、前記処理回路要素が、前記データに対してビットスウィズリングを実施するように更に構成される、方法。
【請求項10】
請求項8に記載の方法であって、前記処理回路要素が、スキャッタギャザーモードを用いて前記ターゲット宛先内でメモリを割り当てるように更に構成される、方法。
【請求項11】
請求項10に記載の方法であって、前記処理回路要素が、複数のデータペイロードに対してデータアグリゲーションを実施するように更に構成される、方法。
【請求項12】
請求項10に記載の方法であって、前記処理回路要素が、
前記ペイロードを複数のデータパーティションに区分することと、
各データパーティションを別々に処理することと、
前記複数のデータパーティションに対応する前記ターゲット宛先内の複数のメモリロケーションを割り当てることと、
前記複数のデータパーティションの各々を前記複数のメモリロケーションのうちの1つに格納することと、
によって、前記ペイロードに対してデータフラグメンテーションを実施するように更に構成される、
方法。
【請求項13】
請求項8に記載の方法であって、前記処理回路要素が、前記入力データフォーマットに少なくとも部分的に基づいて、前記ターゲット宛先内でメモリを割り当てるように更に構成される、方法。
【請求項14】
請求項8に記載の方法であって、前記入力ポート及び前記出力ポートが共に入力/出力ポートを含む、方法。
【請求項15】
電子デバイスであって、
前記電子デバイスと外部電子デバイスとの間でデータを転送するように構成される入力/出力ポートと、
前記外部電子デバイスから受け取ったデータを格納するように構成されるメモリと、
前記入力/出力ポートと結合されるハードウェアダイレクトメモリアクセスコントローラと、
を含み、
前記ハードウェアダイレクトメモリアクセスコントローラが、
ヘッダーとペイロードとを含むデータを前記入力/出力ポートを介して前記外部電子デバイスから受け取り、
トランザクション長と入力データフォーマットとを含むデータパラメータを判定するために前記ヘッダーを解析し、
前記データパラメータに少なくとも部分的に基づいて、前記データのための前記メモリ内のターゲット宛先を選択し、
前記トランザクション長に少なくとも部分的に基づいて前記ターゲット宛先内の格納場所を割り当て、
前記データパラメータに少なくとも部分的に基づいてダイレクトメモリアクセスのために前記ペイロードをフォーマットし、
ダイレクトメモリアクセスを用いて前記入力/出力ポートを介して前記メモリ内に格納するために前記フォーマットされたペイロードを転送する、
ように構成される、
電子デバイス。
【請求項16】
請求項15に記載の電子デバイスであって、前記ハードウェアダイレクトメモリアクセスコントローラが、前記データに対してビットスウィズリングを実施するように更に構成される、電子デバイス。
【請求項17】
請求項15に記載の電子デバイスであって、前記ハードウェアダイレクトメモリアクセスコントローラが、スキャッタギャザーモードを用いて前記ターゲット宛先内でメモリを割り当てるように更に構成される、電子デバイス。
【請求項18】
請求項17に記載の電子デバイスであって、前記ハードウェアダイレクトメモリアクセスコントローラが、複数のデータペイロードに対してデータアグリゲーションを実施するように更に構成される、電子デバイス。
【請求項19】
請求項17に記載の電子デバイスであって、前記ハードウェアダイレクトメモリアクセスコントローラが、
前記ペイロードを複数のデータパーティションに区分することと、
各データパーティションを別々に処理することと、
前記複数のデータパーティションに対応する前記ターゲット宛先内の複数のメモリロケーションを割り当てることと、
前記複数のメモリ位置の各々を前記複数のデータパーティションの1つに格納することと、
によって、前記ペイロードに対してデータフラグメンテーションを実施するように更に構成される、電子デバイス。
【請求項20】
請求項15に記載の電子デバイスであって、前記ハードウェアダイレクトメモリアクセスコントローラが、前記入力データフォーマットに少なくとも部分的に基づいて、前記ターゲット宛先内でメモリを割り当てるように更に構成される、電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
ダイレクトメモリアクセス(DMA)は、中央処理装置(CPU)を介さずに直接データを転送するために用いられる。この転送が正しく機能するためには、データ転送の前にDMAチャネルを適切に構成する必要がある。
【0002】
典型的には、或るプロトコルが入力データに適用されるとき、CPU上で実行されるソフトウェアは、そのプロトコルのヘッダーを解析し、入力データのペイロードを抽出し、データをトランスコードし、必要なデータ操作を実施し、入力データを宛先メモリ内の適切な場所に転送する。
【0003】
入力データの長さ又は量は、典型的には、ソフトウェアに事前に知られておらず、そのため、ソフトウェアは、典型的には割り込み要求(IRQ)ルーチンにおいて、それを解析し、それに応じてジョブを設定し及び実行しなければならない。
【0004】
解析、トランスコーディング、及びデータ操作のこのプロセスは、ハードウェア物理インタフェースとソフトウェアとの間の多数の相互作用を必要とする。これには、データのリアルタイム処理が必要となり、CPU処理時間が消費され、データを失うことなく物理インタフェースデータフローを維持するために大きなハードウェア先入れ先出し(FIFO)メモリを使用する必要がある。
【発明の概要】
【0005】
一実装において、ハードウェアダイレクトメモリアクセスコントローラが提供される。ハードウェアダイレクトメモリアクセスコントローラは、ダイレクトメモリアクセスのために電子デバイスからデータを受け取るように構成される入力ポートと、データをダイレクトメモリアクセス転送のために提供するように構成される出力ポートと、入力ポート及び出力ポートに結合される処理回路要素とを含む。
【0006】
処理回路要素は、ヘッダー及びペイロードを含むデータを入力ポートを介して電子デバイスから受け取り、トランザクション長及び入力データフォーマットを含むデータパラメータを判定するためにヘッダーを解析し、データパラメータに少なくとも部分的に基づいてデータのためのターゲット宛先を選択するように構成される。
【0007】
処理回路要素はまた、トランザクション長に少なくとも部分的に基づいて、ターゲット宛先内でメモリを割り当てるように、及び、データパラメータに少なくとも部分的に基づいて、ダイレクトメモリアクセスのためにペイロードをフォーマットするように構成される。処理回路要素は更に、フォーマットされたペイロードを、ダイレクトメモリアクセスを用いて出力ポートを介してターゲット宛先内の割り当てられたメモリ内のストレージのために転送するように構成される。
【0008】
別の実装において、ハードウェアダイレクトメモリアクセスコントローラを動作させるための方法が提供される。この方法は、入力ポートを介して電子デバイスからヘッダー及びペイロードを含むデータを受け取ることと、トランザクション長及び入力データフォーマットを含むデータパラメータを判定するためにヘッダーを解析することと、データパラメータに少なくとも部分的に基づいてデータのためのターゲット宛先を選択することとを含む。
【0009】
この方法は、トランザクション長に少なくとも部分的に基づいて、ターゲット宛先内のメモリを割り当てることと、データパラメータに少なくとも部分的に基づいて、ダイレクトメモリアクセスのためにペイロードをフォーマットすることと、フォーマットされたペイロードを、ダイレクトメモリアクセスを用いて出力ポートを介してターゲット宛先内の割り当てられたメモリ内のストレージのために転送することとを更に含む。
【0010】
更なる実装において、電子デバイスが提供される。電子デバイスは、電子デバイスと外部電子デバイスとの間でデータを転送するように構成される入力/出力ポートと、外部電子デバイスから受け取ったデータを格納するように構成されるメモリと、入力/出力ポート及びメモリに接続されるハードウェアダイレクトメモリアクセスコントローラとを含む。
【0011】
ハードウェアダイレクトメモリアクセスコントローラは、入力/出力ポートを介して外部電子デバイスからヘッダー及びペイロードを含むデータを受け取り、トランザクショトランザクション長及び入力データフォーマットを含むデータパラメータを判定するためにヘッダーを解析し、データパラメータに少なくとも部分的に基づいて、データのためのメモリ内のターゲット宛先を選択するように構成される。
【0012】
ハードウェアダイレクトメモリアクセスコントローラは更に、トランザクション長に少なくとも部分的に基づいてターゲット宛先内でメモリを割り当て、データパラメータに少なくとも部分的に基づいてダイレクトメモリアクセスのためのペイロードをフォーマットし、ダイレクトメモリアクセスを用いて、入力/出力ポートを介して、メモリ内に格納するためのフォーマットされたペイロードを転送するように構成される。
【図面の簡単な説明】
【0013】
本開示の多くの態様は、以下の図面を参照すればより良く理解することができる。これらの図面に関連して幾つかの実装について説明するが、本開示は、本明細書で開示する実装に限定されない。そうではなく、あらゆる代替、変形、及び均等物を網羅することを意図している。
【0014】
【
図1】ハードウェアDMAデータコントローラを含むデータを転送するためのシステムの例示の実施例を図示する。
【0015】
【
図2】ハードウェアDMAデータコントローラを含むデータを転送するためのシステムの別の例示の実施例を図示する。
【0016】
【
図3】ハードウェアDMAデータコントローラを含むデータを転送するためのシステムの別の例示の実施例を図示する。
【0017】
【
図4】2つの異なるデータフォーマットの例示のデータフォーマットを図示する。
【0018】
【
図5】ハードウェアDMAコントローラを動作させるための例示の方法を図示する。
【0019】
【
図6】電子デバイス内のハードウェアDMAコントローラの例示の実施例を図示する。
【発明を実施するための形態】
【0020】
システムオンチップ(SoC)デバイスなどの現在の複雑な電子デバイスにおいて、デバイス内の任意のダイレクトメモリアクセス(DMA)動作を管理するために、マイクロコントローラ(MCU)が用いられる。MCUは、データペイロード及びメモリ内の位置を記述するDMA動作のためのジョブ記述子を生成して、格納動作においてデータを格納するか、又は読み出し動作においてデータを読み出す。周辺機器と内部メモリアクセスとの間のジッタバッファとしてFIFOが用いられる。
【0021】
送信動作の場合、DMA又はMCUは、データをFIFOに複製し、周辺機器は、データをFIFOから複製し、それをインタフェース(例えば、シリアルペリフェラルインタフェース(SPI)、セキュアデジタル入出力(SDIO)、ユニバーサル非同期レシーバトランスミッタ(UART)など)を介して転送する。受信動作の場合、周辺機器は、データをインタフェースから受け取り、それをFIFOに格納する。MCU又はDMAモジュールは、データをストレージメモリに複製する。FIFOのこの動作は、ジッタを克服し、MCU又はDMAモジュールが、間隔をおいて機能することを可能にする。
【0022】
MCUからデバイス内の専用ハードウェアDMAモジュールへ必要なDMA管理動作を転送することによって、MCUは、DMAルーチンに関与しない他の命令を処理するために利用可能となり、結果として、MCU効率が向上する。
【0023】
図1は、ハードウェアDMAデータコントローラ140を含むデータを転送するためのシステム100の例示の実施例を図示する。本発明のこの例示の実施例では、電子システム100が、ホストマイクロコントローラ110と、システムオンチップ120とを含む。ここで、ホストマイクロコントローラ110及びシステムオンチップ120はいずれも、全体的な電子システム内で動作する電子デバイスの特定の例である。他の例示の実施例にはその他の電子デバイスが含まれ、これらはすべて本開示の範囲内である。
【0024】
この例示の実施例では、マイクロコントローラ130、ハードウェアDMAコントローラ140、シリアルインタフェース150、RAMメモリ160、及びバス121が、システムオンチップ(SoC)120を構成する。この例示の実施例では、シリアルインタフェース150は更に、送信FIFO152と受信FIFO154を含む。
【0025】
シリアルインタフェース150は、物理インタフェース122を介してホストマイクロコントローラ110と通信する。マイクロコントローラ130、ハードウェアDMAコントローラ140、シリアルインタフェース150、及びRAMメモリ160は、バス121を介して互いに通信する。この例示の実施例では、バス121に結合されるモジュールは、イニシエータモジュール又はターゲットモジュールである。イニシエータモジュールは、トランザクションを開始することができるバス上のノードである。マイクロコントローラ130は、イニシエータであり、一方、シリアルインタフェース150はターゲットである。これは、マイクロコントローラ130は、シリアルインタフェース150にアクセスし、そこからデータを読み書きすることができることを意味する。
【0026】
ハードウェアDMAコントローラ140は、イニシエータ及びターゲットの両方として動作する。それは、マイクロコントローラ130がジョブを制御及び設定することを可能にするためのターゲットとして動作し、シリアルインタフェース150内の受信FIFO154からデータを読み出し、そのデータをRAMメモリ160に複製するために、イニシエータとして動作する。それはまた、RAMメモリ160からデータを読み出し、そのデータをシリアルインタフェース150内の送信FIFO152に複製するために、イニシエータとして動作する。
【0027】
図1は、システムオンチップ120の非常に単純化された図であることに留意されたい。実際には、チップシステムオンチップ120は、様々なモジュールと周辺機器との間のデータバス及び制御インタフェースを含む、はるかに複雑なものであり、
図1に図示されていない多数のモジュール及び周辺機器を含む。
【0028】
この例示の実施例では、ハードウェアDMAコントローラ140は、マイクロコントローラ130からの直接制御を必要とすることなく、オンザフライDMAトランザクションデータ解析及び実行を実施する。ハードウェアDMAコントローラ140がシリアルインタフェース150から入力データを受け取ると、ハードウェアDMAコントローラ140は、入力データのヘッダーを解析して、トランザクション長及びデータフォーマットを検出し、RAMメモリ160内のターゲット宛先を設定し、RAMメモリ160内の正しいメモリプール内の空間を割り当て、入力データの任意の必要なビットスウィズリング(swizzling)及びトランスコーディングを実施する。
【0029】
ハードウェアDMAコントローラ140内のこれらの動作により、事前定義された構成が必要とされなくなり、MCU処理要件及びそれに関連するソフトウェアフットプリントが低減され、冗長なソフトウェア割り当てが排除され、FIFOオーバーフローの可能性が回避される。
【0030】
この例示の実施例では、ハードウェアDMAコントローラ140は、周辺機器からメモリ、メモリから周辺機器、及びメモリからメモリへのDMAトランザクションを実施するように構成される。
【0031】
動作において、システムオンチップが、物理インタフェース122を介してホストマイクロコントローラ110からヘッダー及びペイロードを含む入力データを受け取る。物理インタフェース122は、シリアルペリフェラルインタフェース(SPI)、セキュアデジタル入力出力(SDIO)、汎用非同期レシーバ-トランスミッタ(UART)などを含むが、これらに限定されない、多種多様なデータインタフェースの任意のものを含む。入力物理データフォーマットは、大抵、データを受け取る前は、システムオンチップに既知ではない。ハードウェアDMAコントローラ140は、受信されるあり得る物理データフォーマットのリストから、入力データがどのフォーマットを含むかを判定する。
【0032】
物理データフォーマットが判定されると、ハードウェアDMAコントローラ140は、入力データのヘッダーを解析して、RAMメモリ160にデータを格納する際に使用するための正しいデータパラメータを判定する。例えば、ハードウェアDMAコントローラ140は、格納されるデータのトランザクション長又は量、及び入力データのデジタルフォーマットを判定する。
【0033】
ヘッダーに基づいて、ハードウェアDMAコントローラ140は、データのターゲット宛先を判定する。ハードウェアDMAコントローラ140は、入力データのヘッダーから抽出されたデータパラメータに基づいて、ターゲット宛先内でメモリを割り当てる。
【0034】
これらのデータパラメータは、データフォーマット、データ量などを含む。ハードウェアDMAコントローラ140は、これらのデータパラメータに少なくとも部分的に基づいて、ターゲット宛先内のどこにデータを格納するかを判定する。メモリ割り当ては、データタイプに従ってメモリが区分されるターゲット宛先内のメモリパーティション間の選択を含む。
【0035】
次いで、ハードウェアDMAコントローラ140は、データがRAMメモリ160に格納される前に、必要なビットスウィズリング又は要求されるデータトランスコーディングを判定し、ペイロードに対して必要なビットスウィズリング及び/又はデータトランスコーディングを実施する。
【0036】
ビットスウィズリングは、特にコンピュータグラフィックス内で、他のベクトルの成分を任意に並べ替えて組み合わせることによってベクトルを構成するプロセスを説明するために用いられる用語又は技術である。また、トランスコーディングは、或るデータフォーマットから別のデータフォーマットにデータを変換するプロセスを説明するために用いられる技術用語である。
図4は、ビッグエンディアンデータフォーマットとリトルエンディアンデータフォーマットとの間でデータをトランスコードする例を図示する。
【0037】
データフォーマット、ビットスウィズリング、及びトランスコーディングは、ハードウェアDMAコントローラ140によってオンザフライで行われ、その結果、ハードウェアDMAコントローラ140は、依然として、入力データを受け取り、フォーマットし、ビットスウィズリング、及びトランスコーディングする一方で、ダイレクトメモリアクセスを用いて出力ポートを介して、ターゲット宛先内の割り当てられたメモリ内のストレージのために、フォーマットされたペイロードを転送する。これらのデータフォーマット、ビットスウィズリング、及びトランスコーディング動作は、典型的には、1ワード毎に、一度に32ビット又は64ビットで実施される。
【0038】
図2は、ハードウェアDMAデータコントローラ220を含むデータを転送するためのシステム200の別の例示の実施例を図示する。本発明のこの例示の実施例では、電子システム200は、ホストプラットフォーム/マイクロコントローラ230と電子デバイス210を含む。この例示の実施例では、入力/出力(I/O)ポート222、ハードウェアDMAコントローラ220、メモリ224、及びネットワークプロセッサ/MCU226が、電子デバイス210を構成する。この例示の実施例では、電子システム200は更に、Wi-Fiアンテナ228を介して他の外部システムと通信するように構成される。
【0039】
I/Oポート222は、物理インタフェース242を介してホスト230と通信する。I/Oポート222は、リンク241を介してハードウェアDMAコントローラ220とデータを交換し、ハードウェアDMAコントローラ220は、トランスコードされたデータを、リンク240を介してメモリ224と交換する。ハードウェアDMAコントローラ220はまた、リンク243を介してネットワークプロセッサ/MCU226にデータフォーマットを提供する。
【0040】
図2は、電子デバイス210の非常に簡略化された図であることに留意されたい。実際には、電子デバイス210は、様々なモジュールと周辺機器との間のデータバス及び制御インタフェースを含んだ、はるかに複雑なものであり、
図2に図示されていない多数のモジュール及び周辺機器を含む。
【0041】
この例示の実施例では、ハードウェアDMAコントローラ220は、ネットワークプロセッサ/MCU226からの直接的な制御を必要とすることなく、オンザフライDMAトランザクションデータの解析及び実行を実施する。ハードウェアDMAコントローラ220は、I/Oポート222から入力データを受け取ると、入力データのヘッダーを解析して、トランザクション長及びデータフォーマットを検出し、メモリ224内のターゲット宛先を設定し、メモリ224内の正しいメモリプール内の空間を割り当て、入力データの任意の必要なビットスウィズリング及びトランスコーディングを実施し、任意選択で、データフラグメンテーション及びアグリゲーションのための拡張スキャッタギャザーモードを実施する。
【0042】
ハードウェアDMAコントローラ220内のこれらの動作により、事前定義された構成が必要とされなくなり、MCU処理要件及びそれに関連するソフトウェアフットプリントが低減され、冗長なソフトウェア割り当てが排除され、FIFOオーバーフローの可能性が回避される。
【0043】
この例示の実施例では、ハードウェアDMAコントローラ220は、周辺機器からメモリ、メモリから周辺機器、及びメモリからメモリへのDMAトランザクションを実施するように構成される。
【0044】
動作において、電子デバイス210は、ホスト230からヘッダー及びペイロードを含む入力データを物理インタフェース242を介して受け取る。物理インタフェース242は、シリアルペリフェラルインタフェース(SPI)、セキュアデジタル入力出力(SDIO)、汎用非同期レシーバ-トランスミッタ(UART)などを含むがこれらに限定されない、多種多様なデータインタフェースの任意のものを含む。入力物理データフォーマットは、大抵、データを受け取る前に電子デバイス210に既知ではない。ハードウェアDMAコントローラ220は、受信されるあり得る物理データフォーマットのリストから、入力データがどのフォーマットを含むかを判定する。
【0045】
物理データフォーマットが判定されると、ハードウェアDMAコントローラ220は、入力データのヘッダーを解析して、メモリ224にデータを格納する際に使用するための正しいデータパラメータを判定する。例えば、ハードウェアDMAコントローラ220は、格納されるデータのトランザクション長又は量、及び、入力データのデジタルフォーマットを判定する。
【0046】
ヘッダーに基づいて、ハードウェアDMAコントローラ220は、データのターゲット宛先を判定する。このターゲット宛先は、メモリ224、外部メモリ(図示せず)、Wi-Fiアンテナ228を介してリンクされた外部デバイスなどであってもよい。ハードウェアDMAコントローラ220は、入力データのヘッダーから抽出されたデータパラメータに基づいて、ターゲット宛先内のメモリを割り当てる。
【0047】
これらのデータパラメータは、データフォーマット、データ量などを含む。ハードウェアDMAコントローラ220は、これらのデータパラメータに少なくとも部分的に基づいて、ターゲット宛先内のどこにデータを格納するかを判定する。メモリ割り当ては、データタイプに従ってメモリが区分される、ターゲット宛先内のメモリパーティション間の選択を含む。任意選択で、ハードウェアDMAコントローラ220は、メモリからデータを受け取るときにデータアグリゲーションを実施し、メモリにデータを割り当てるときにデータフラグメンテーションを実施する。本発明の幾つかの例示の実施例において、このアグリゲーション及びフラグメンテーションは、ターゲット宛先とインタフェースするためのスキャッタギャザーモードとして実行される。
【0048】
次いで、ハードウェアDMAコントローラ220は、データがメモリ224に格納される前に、必要なビットスウィズリング又はデータトランスコーディングを判定し、必要なビットスウィズリング及び/又はデータトランスコーディングをペイロードに対して実施する。
【0049】
ビットスウィズリングは、特にコンピュータグラフィックス内で、他のベクトルの成分を任意に並べ替えて組み合わせることによってベクトルを構成するプロセスを説明するために用いられる用語又は技術である。また、トランスコーディングは、或るデータフォーマットから別のデータフォーマットにデータを変換するプロセスを説明するために用いられる技術用語である。
図4は、ビッグエンディアンデータフォーマットとリトルエンディアンデータフォーマットとの間でデータをトランスコードする例を図示する。
【0050】
データフォーマット、ビットスウィズリング、及びトランスコーディングは、ハードウェアDMAコントローラ220によってオンザフライで行われ、その結果、ハードウェアDMAコントローラ220は、依然として、入力データを受け取り、フォーマットし、ビットスウィズリング、及びトランスコーディングする一方で、ダイレクトメモリアクセスを用いて出力ポートを介してターゲット宛先内の割り当てられたメモリ内のストレージのために、フォーマットされたペイロードを転送する。これらのデータフォーマット、ビットスウィズリング、及びトランスコーディング動作は、典型的には、1ワード毎に、一度に32ビット又は64ビットで実施される。
【0051】
図3は、ハードウェアDMAデータコントローラ340を含むデータを転送するためのデバイス300の別の例示の実施例を図示する。本発明のこの例示の実施例では、電子システム300が、外部コントローラ/デバイス310と電子デバイス320とを含む。電子デバイス320は、物理インタフェース312を介して外部コントローラ/デバイス310からデータを受け取るように構成される。この例示の実施例では、電子デバイス320は、ハードウェアDMAコントローラ340及びメモリ360を含む。ハードウェアDMAコントローラ340は、ヘッダー解析モジュール344及びデータ処理モジュール346~352を含む。
【0052】
この例示の実施例では、ヘッダー処理モジュール344及びデータ処理モジュール346~352は、本明細書で説明するように動作するようにハードウェアDMAコントローラ340内の処理回路要素に指示するように構成される命令モジュールである。幾つかのデータ処理モジュール346~352は、任意選択であり、ハードウェアDMAコントローラ340によって実施されるすべてのDMA動作において用いられるわけではない。
図3は、物理インタフェース312を介して外部コントローラ/デバイス310から電子デバイス320によって受け取られたデータに対してハードウェアDMAコントローラ340によって実施されるデータ操作を図示する。ハードウェアDMAコントローラ340は、
図2に関して上述したようなDMA動作に必要な他の機能も実施することに留意されたい。
【0053】
ヘッダー解析モジュール344は、ハードウェアDMAコントローラ340内の処理回路要素に、入力データのヘッダー342を解析して、メモリ360にデータを格納する際に使用するための正しいデータパラメータを判定するように指示する。例えば、ヘッダー解析モジュール344は、格納されるデータのトランザクション長、又は量、及び、入力データのデジタルフォーマットを判定する。
【0054】
ヘッダー解析モジュール344によって判定されたデータパラメータに少なくとも部分的に基づいて、ハードウェアDMAコントローラ340は、データがメモリ360に格納される前に必要な任意のビットスウィズリング又は必要とされるデータトランスコーディングを判定し、ペイロードに対して必要なビットスウィズリング及び/又はデータトランスコーディングを実施する。
【0055】
ビットスウィズリングは、特にコンピュータグラフィックス内で、他のベクトルの成分を任意に並べ替えて組み合わせることによってベクトルを構成するプロセスを記述する用語又は技術である。また、トランスコーディングは、或るデータフォーマットから別のデータフォーマットにデータを変換するプロセスを記述する技術の用語である。
図4は、ビッグエンディアンデータフォーマットとリトルエンディアンデータフォーマットとの間でデータをトランスコードする例を図示する。
【0056】
必要に応じて、データビットスウィズリングモジュール346は、ハードウェアDMAコントローラ340内の処理回路要素に、必要なビットスウィズリングを実施するように指示する。また、必要に応じて、データトランスコーディングモジュール348は、ハードウェアDMAコントローラ340内の処理回路要素に、必要なデータトランスコーディングを実施するように指示する。データアグリゲーションモジュール350は、ハードウェアDMAコントローラ340内の処理回路要素に、任意のタイプのスキャッタギャザーメモリ動作における任意の必要なデータアグリゲーションを実施するように指示する。データフラグメンテーションモジュール352は、ハードウェアDMAコントローラ340内の処理回路要素に、任意のタイプのスキャッタギャザーメモリ動作において任意の必要なデータフラグメンテーションを実施するように指示する。
【0057】
ペイロードがストレージのために適切にフォーマットされると、ハードウェアDMAコントローラ340は、ダイレクトメモリアクセスを用いて出力ポートを介してターゲット宛先360内の割り当てられたメモリ内のストレージのために、フォーマットされたペイロードを転送する。
【0058】
図4は、2つの異なるデータフォーマットの例示のデータフォーマットを図示する。
図4は、ハードウェアDMAコントローラ340内の処理回路要素によって実施されるデータフォーマット400の例を図示する。
【0059】
この例では、ペイロード内のデータは、ビッグエンディアンフォーマット又はリトルエンディアンフォーマットのいずれかであり得る。
図4は、バイト[0xAA]、短い[0xAABB]、及び長い[0xAABBCCDD]長を有するデータのためのこれらの2つのフォーマットを図示する。バイト長のデータの場合、ビッグエンディアン402とリトルエンディアン404のデータに差はない。しかしながら、長さの短い及び長さの長いデータでは、データフォーマットは、データの個々のバイトを格納する順序が異なる。
【0060】
短い長さのデータの場合、データ[0xAABB]は、ビッグエンディアン406データとしてメモリ位置順[AA]、[BB]に格納され、同じデータが、リトルエンディアンデータ408としてメモリ位置順[BB]、[AA]に格納される。同様に、長さの長いデータの場合、データ[0xAABBCCDD]は、ビッグエンディアン410データとしてメモリ位置順[AA]、[BB]、[CC]、[DD]に格納され、同じデータが、リトルエンディアン412データとしてメモリ位置順[DD]、[CC]、[BB]、[AA]に格納される。
【0061】
ハードウェアDMAコントローラ340は、入力データのフォーマット及びメモリ360内のデータのフォーマットに基づいて、必要に応じてビッグエンディアンフォーマットとリトルエンディアンフォーマットとの間のデータをフォーマットする。
図4はデータフォーマットの一例を図示する。ハードウェアDMAコントローラ340は、必要に応じて、データフォーマット間で他の異なるデータフォーマット方法を実施するように構成される。
【0062】
図5は、ハードウェアDMAコントローラ340を動作させるための例示の方法を図示する。この例示の方法において、ハードウェアDMAコントローラ340内の処理回路要素が、以下の動作を実施するために様々なモジュールによって制御される。
【0063】
この例示の実施例では、ハードウェアDMAコントローラ340は、電子デバイス310から、ヘッダー及びペイロードを含むデータを入力ポートを介して受け取る(動作500)。ハードウェアDMAコントローラ340は、ヘッダーを解析して、トランザクション長及び入力データフォーマットを含むデータパラメータを判定する(動作502)
【0064】
ハードウェアDMAコントローラ340は、データパラメータに少なくとも部分的に基づいて、データのターゲット宛先360を選択する(動作504)。ハードウェアDMAコントローラ340は、データのターゲット宛先360内のメモリを割り当てる(動作506)。
【0065】
ハードウェアDMAコントローラ340は、データパラメータに少なくとも部分的に基づいてダイレクトメモリアクセスのためのペイロードをフォーマットする(動作508)。例示の実施例において、このフォーマット動作は、チャンク単位又は単語単位で実施され、ペイロード全体が受信されるまで繰り返される。次いで、ハードウェアDMAコントローラ340は、ダイレクトメモリアクセスを用いて出力ポートを介してターゲット宛先360内の割り当てられたメモリ内のストレージのために、フォーマットされたペイロードを転送する(動作510)。例示の実施例において、この転送動作は、チャンク又はワード単位でも実施され、ペイロード全体が格納されるまで繰り返される。
【0066】
図6は、電子デバイス320内のハードウェアDMAコントローラ600の例示の実施例を図示する。上述のように、ハードウェアDMAコントローラ600は、多種多様な構成のうちの任意のものをとることができる。ここで、ASICとして実装される電子デバイス320内のハードウェアDMAコントローラ600のための例示の構成が提供される。幾つかの実施例において、ハードウェアDMAコントローラ600は、システムオンチップ(SoC)内のモジュールである。
【0067】
この例示の実施例では、ハードウェアDMAコントローラ600は、入力ポート610と、処理回路要素620と、出力ポート630と、内部ストレージシステム640とを含む。1つの例示の構成において、入力ポート610は、メモリに格納するために電子デバイス310から入力を受け取るように構成される回路要素を含む。出力ポート630は、ストレージシステム又はメモリ360にデータ及び命令を送るように構成される回路要素を含む。幾つかの実施例において、入力ポート610及び出力ポート630は、単一の入力/出力(I/O)ポートに組み合わされる。
【0068】
処理回路要素620は、上述のようにハードウェアDMAコントローラ340のタスクを実施するように構成される電子回路要素を含む。幾つかの実施例において、処理回路要素620は、複合電子デバイス320に埋め込まれてもよい。処理回路要素620の例は、汎用中央処理装置、特定用途向けプロセッサ、及び論理デバイス、並びに、任意の他のタイプの処理デバイス、それらの組み合わせ又は変形を含む。処理回路要素620は、単一の処理デバイス内に実装することができるが、プログラム命令を実行する際に協働する複数の処理デバイス又はサブシステムにわたって分散させることもできる。
【0069】
例示の実施例において、ハードウェアDMAコントローラ600は、特定用途向けモジュールとして実装され、カスタム処理回路要素620が、ヘッダー解析モジュール621、データビットスウィズリングモジュール622、データトランスコーディングモジュール623、データアグリゲーションモジュール624、データフラグメンテーションモジュール625、及びメモリ割り当てモジュール626を含む1つ又は複数のハードウェアモジュールを介して、本明細書で説明される機能を実施するように提供される。
【0070】
内部ストレージシステム640は、データを格納することができる任意の非一時的コンピュータ可読ストレージ媒体を含む。内部ストレージシステム640はまた、処理回路要素620によって用いられる物理データフォーマット、デジタルデータフォーマット、データバッファなどのリストを含む、1つ又は複数のデータベース、表、リスト、又は他のデータ構造を含む、様々なデータ構造650を含む。内部ストレージシステム640は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、又は他のデータなどの情報を格納するための任意の方法又は技術において実装される、揮発性及び不揮発性の、取外し可能及び取外し不可能な媒体を含むことができる。
【0071】
内部ストレージシステム640は、単一のストレージデバイスとして実装することができるが、複数のストレージデバイス、サブシステム、又は相互に共同配置又は分散されたモジュールにわたって実装することもできる。内部ストレージシステム640は、処理回路要素620と通信することができるコントローラなどの付加的な要素を含むことができる。ストレージ媒体の例は、ランダムアクセスメモリ、読み出し専用メモリ、磁気ディスク、光ディスク、フラッシュメモリ、仮想メモリ及び非仮想メモリ、磁気カセット、磁気テープ、磁気ディスクストレージシステム又は他の磁気ストレージシステム、又は所望の情報を格納するために用いられ得、命令実行システムによってアクセスされ得る、任意の他の媒体、並びにそれらの任意の組合せ又は変形を含む。
【0072】
この例示の実施例では、内部ストレージシステム640は、
図1からの送信FIFO152及び受信FIFO154などの、1つ又は複数のFIFO660も含む。これらのFIFO660は、ジッタを克服し、ハードウェアDMAコントローラ600が間隔をおいて動作することを可能にするために用いられる。
【0073】
処理回路要素620内のヘッダー処理モジュール621は、トランザクション長及び入力データフォーマットを含むデータパラメータを判定するために、データヘッダーを解析する。処理回路要素620内のデータビットスウィズリングモジュール622は、任意の必要なデータビットスウィズリングを実施する。処理回路要素620内のデータトランスコーディングモジュール623は、任意の必要なデータトランスコーディングを実施する。幾つかの例において、データトランスコーディングモジュール623は、
図4に図示されるような任意のデータフォーマットも実施する。
【0074】
処理回路要素620内のデータアグリゲーションモジュール624は、スキャッタギャザータイプモードで任意の必要なデータアグリゲーションを実施する。例えば、データアグリゲーションモジュール624は、複数のデータペイロードに対してデータアグリゲーションを実施する。
【0075】
処理回路要素620内のデータフラグメンテーションモジュール625は、スキャッタギャザータイプモードで任意の必要なデータフラグメンテーションを実施する。例えば、データフラグメンテーションモジュール665は、ペイロードを複数のデータパーティションに区分することと、各データパーティションを別々に処理することと、複数のデータパーティションに対応するターゲット宛先内の複数のメモリ位置を割り当てることと、複数のデータパーティションの各々を複数のメモリ位置のうちの1つに格納することとによって、ペイロードに対してデータフラグメンテーションを実施する。
【0076】
処理回路要素620内のメモリ割り当てモジュール626は、データのストレージのためにメモリを割り当てる。
【0077】
含まれる説明及び図は、ベストモードをどのようにつくり、用いるかを当業者に教示するための特定の実施例を示す。本発明の原理を教示する目的で、幾つかの従来の態様は、単純化されるか又は省略されている。当業者であれば、本発明の範囲内にあるこれらの実施例からの変形を理解するであろう。また、当業者であれば、上述の特徴を様々な方式で組み合わせて複数の実施例を形成することができることを理解するであろう。その結果、本発明は、上述の特定の実施例に限定されるものではなく、特許請求の範囲及びその均等物によってのみ限定される。
【外国語明細書】