JP2006502491A - Usbおよび類似用途向けのdmaコントローラ - Google Patents
Usbおよび類似用途向けのdmaコントローラ Download PDFInfo
- Publication number
- JP2006502491A JP2006502491A JP2004542728A JP2004542728A JP2006502491A JP 2006502491 A JP2006502491 A JP 2006502491A JP 2004542728 A JP2004542728 A JP 2004542728A JP 2004542728 A JP2004542728 A JP 2004542728A JP 2006502491 A JP2006502491 A JP 2006502491A
- Authority
- JP
- Japan
- Prior art keywords
- dma
- control circuit
- data
- usb
- circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
Abstract
様々な強化策をDMAコントローラ(34)に施し、ユニバーサル・シリアル・バス(USB)アプリケーションなど多様なDMAアプリケーションで使用するためにDMAコントローラ(34)を最適化することができる。まず、DMAチャネル(24)を介したデータ転送の長さを制御するカウント値を格納するために使用されるDMAカウント・レジスタ(54)は、選択的にディセイブルにされ、したがってDMAカウント・レジスタ(54)がディセイブルにされているとき、DMA制御回路(38)は、DMAカウント・レジスタ(54)とは独立にデータ転送を実行することができる。エンドポイント・ウォッチドッグ・タイマ(40)は、DMA制御回路(38)に接続され、所定の時間内にDMAチャネル(24)が1つもデータを受け取らなかったとき、割込みを発生するように構成することもできる。さらに、最終ワードが部分的なワードである場合、DMA制御回路(38)に、データ・パケットからのデータの最終ワードの伝送を遅延させるための部分的ワード遅延機能を組み込むことができる。さらに、USBプロフィール回路(26)は、DMA制御回路(38)に接続され、USBプロフィール回路(26)によってサポートされている複数のUSBプロトコルのうちから選択されたUSBプロトコルと共に使用するために、少なくとも1つのDMA制御回路(38)の動作パラメータを制御し、選択的にDMA制御回路(38)を最適化することができる。
Description
本発明は、一般にメモリのアクセスおよび転送に関し、詳細にはダイレクト・メモリ・アクセス(DMA)コントローラに関する。
コンピュータまたは他の電子システム内でのデータ転送は、そのシステムの性能における不可欠な要因であることがしばしばである。コンピュータまたは他の電子システムの中央処理装置(CPU)が、いかに速くデータを処理できるかにかかわらず、CPUとの間で十分速くデータを通信できない場合、システム性能は、必ず影響を受けることになる。
データ転送性能を向上させるために使用されてきた一技法は、ダイレクト・メモリ・アクセス(DMA)として知られている。DMAは、CPUとは独立してデータ転送を扱うための専用のコントローラまたは回路を利用し、したがってCPUを開放してデータ転送動作中他のタスクを扱うことができるようにする。通常、DMAを使用してメモリと、拡張カード、ネットワーク用ポート、記憶装置など周辺または入出力(I/O)装置との間でデータを転送する。
従来のDMAコントローラは、データ転送動作を扱うためのCPUの働きをほとんど必要としないことがしばしばである。通常、たとえば動作のソースおよび宛先、ならびに転送するデータ量を指定することによって、特定の転送動作を処理するためにDMAコントローラを初期化することがCPUに要求される。DMA制御ロジックには、従来、所与の動作で転送するデータの全バイト数でCPUによって初期化されるバイト・カウンタが含まれる。
一度CPUがデータ転送動作を開始すると、DMA制御ロジックは、もうそれ以上CPUの介在なしで、データの転送を開始することになる。データ転送動作中、DMA制御ロジックは、データ・バイトを転送する毎に、バイト・カウンタがゼロになるまで、バイト・カウンタを1だけ減らす。ゼロになったとき、DMA制御ロジックは、CPUに割込み信号を送り、CPUにデータ転送動作が完了したことを通知することができる。
DMAがしばしば共に使用される多くの周辺装置は、比較的簡単なプロトコルに依拠している。いくつかの装置として、たとえば、利用可能なキャラクタを有する場合はいつでもDMA制御ロジックに信号を送るキャラクタ・ベースの装置がある。このような例では、転送する入力キャラクタ数は、通常ルール・ベース(すなわち、定数またはプロトコルによって動的に定義される数)である。他の装置として、固定ブロック・サイズを使用して、DMA制御ロジック中のバイト・カウンタをプログラムするブロック装置がある。
他の周辺装置は、そのように簡単ではない。たとえば、ユニバーサル・シリアル・バス(USB)仕様書は、周辺装置をコンピュータに接続するためのシリアル・データ転送プロトコルを定義している。USB仕様書は、表示装置、オーディオ・スピーカ、プリンタ、キーボード、マウス、ネットワーク・アダプタ、モデムなどを含め、広範囲の周辺装置をサポートするために開発された。これらの装置は、すべて異なる機能およびデータ伝送特性を有し、したがってUSB仕様書は、標準化してデータを包むようにパケット・ベースのインターフェースを定義しており、実際どんなタイプの周辺装置もサポートする。しかし、USBバスによって送受信されるすべてのデータ・パケット内に含まれた情報量は、首尾一貫したものでないし予測可能でもないことに留意されたい。
さらに、基礎をなすUSBプロトコルは、簡単ではない。USB仕様書2.0によると、たとえば、制御、バルク、割込みおよびアイソクロナスとして呼ばれる、4つの通信プロトコルがある。制御プロトコルは、双方向データ転送をサポートする。割込みプロトコルおよびアイソクロナス・プロトコルは、本質的に周期的であり、保証付き送出スケジュールを有し、アイソクロナス・プロトコルは、転送速度を落とすことができない(すなわち、リアルタイム・プロトコルである)。個々のエンドポイント上で192Mb/sのデータ転送速度を持続することが可能である。
USB仕様書のいくつかの特定のニュアンスに起因して、従来のDMA制御ロジック設計は、USB装置用のコントローラ中に組み込むには十分適していない。
第1に、USB装置は、DMAバイト・カウンタ中にバイト・カウントをロードし、次いで、バイト・カウントがゼロになったとき、自動的にDMA制御ロジックをオフにし、データ転送動作を完了させるというパラダイムに容易に適応しない。USB仕様書では、単一データ・パケット中で受け取ることになるバイト数は、保証されていない。さらに、リアルタイムのアイソクロナス・プロトコルでは、メッセージ長は、無関係であり、周期的な割込みプロトコルまたは非周期的なバルク・プロトコルおよび制御プロトコルでは、メッセージ長は、データが受信されつつあるとき既知でないことがしばしばである。
メッセージ中のデータ・バイトの全数も、メッセージの単一パケット中のバイト数も一貫して予測可能でなく、従来のUSB実装形態では、通常パケット・ベースでDMA制御ロジックをターン・オフするという単純化した仮定を行う。しかし、そうすることによって、CPUが要求する監視量が、しばしば増加し、したがってシステム性能が低下する。
第2に、多数のCPUは、いくつかのUSB関連DMA転送に介在するには、あまりにも遅い。上記で述べたように、リアルタイムのアイソクロナス・プロトコルは、転送速度を落とすことができず、192Mb/sまでの持続したデータ転送速度をサポートする。単一USBデータ・パケット中で転送できるバイトの最大数は、1024バイトであり、したがって最大持続速度において、USBコントローラ内の従来のDMA制御ロジックは、それが転送サービスを実施する高バンド幅のエンドポイント毎に、平均して43μs毎にターン・オフすることができる。一方、リナックス・オペレーティング・システムの組み込み型リアルタイム版は、割込み処理ルーチンにプログラム制御を渡しそれから戻るために、約100命令およびスタックへの50アクセスを実行する。プロセッサおよびメモリのバス速度およびキャッシュ・サイズに依存して、このシステム・オーバーヘッドは、通常2μs〜5μsの範囲にあり、実際に割込みハンドラが実行するための時間を含んでさえいない。このオーバーヘッドは、一エンドポイントだけを表し、ダブル・バッファのエンドポイントの場合でさえ、従来のDMA制御ロジックは、17μs以内に再スタートし、1024バイトの転送を完了できることが必要になり、そうできない場合、データが、失われることがある。その結果、多数のCPUは、確実には高バンド幅アイソクロナス転送中に介在することができない。
第3に、現在のバス・アーキテクチャは、USB関連DMAデータ・コンテンツをしばしば損なうことがある。具体的には、従来のDMAコントローラは、バイト指向型であり、一方大部分の現在のバス・アーキテクチャは、ワード指向型である。その結果、データ・パケット中で受け取ったバイト数が、バス・ワード・サイズの倍数でない場合、従来のDMAコントローラは、一部が有効なだけのデータによって最終ワードの転送を行う。最終ワード転送の残りのデータは、無効であり、したがってデータが、大容量記憶装置などのブロック装置宛である場合、CPU上で実行するソフトウェアは、データ転送動作が完了したとき、受け取ったパケットのサイズをセーブし、ワードを部分的に調整し(非常に重荷になることがある)、必要になるすべてのブロック・オーバーフロー調整を実施し、DMAコントローラを再使用可能にすることが必要になるはずである。そのようなオーバーヘッドは、DMAが対処しようと企図するまさにそのようなCPUオーバーヘッドのタイプであり、したがってUSB関連DMA転送を扱うために必要なCPU監視のその度合いは、望ましくない。
したがって、従来のDMAコントローラ設計が有する前述の限界に対処し、具体的には、そのようなDMA制御ロジックが、USB関連データ転送および他に関して利用されるときいつも生じる欠点に対処する、DMA制御ロジックが、当業界に大いに必要である。
本発明は、DMAコントローラをいくつか強化するための従来の技術に関連したこれらおよび他の問題に対処し、USB互換用途などの多様なDMA用途で使用する目的で、独立してまたは協同でDMAコントローラを最適化するために使用することができる。これから述べる様々な方法でDMA制御ロジックを強化することによって、CPUに要求する監視の量とその程度が、実質的に減少し、それによってCPUを開放してDMA転送動作と同時に他の動作を実行させ、したがってシステム性能の全体が向上する。
本発明の一態様によれば、例えばDMAチャネルを介するデータ転送の長さを制御するカウント値を格納するために使用されるDMAカウント・レジスタは、DMAカウント・レジスタがディセイブルにされているとき、DMA制御回路がDMAカウント・レジスタとは独立にデータ転送を実施できるように、選択的にディセイブルにされうる。本発明の他の態様によれば、エンドポイント・ウォッチドッグ・タイマは、DMA制御回路に結合され、所定の時間内にDMAチャネルによって1つもデータが受信されていない場合、割込みを発生するように構成することができる。さらに、本発明の他の態様によれば、DMA制御回路は、部分的にしか有効でないワードを遅延させる機能を組み込み、最終ワードが部分的なワードである場合、データ・パケットからのデータの最終ワードの転送を遅らせることができる。
さらに、DMA制御回路がUSB用途で利用される場合、USBプロフィール回路は、DMA制御回路に結合され、USBプロフィール回路によってサポートされている複数のUSBプロトコルのうちから選択されたUSBプロトコルと共に使用するために、少なくとも1つのDMA制御回路の動作パラメータを制御し、選択的にDMA制御回路を最適化するように構成することができる。
これらおよび他の利点および特徴は、本発明を特徴づけるもので、本明細書に添付の特許請求の範囲中に述べてあり、さらにその一部分を形成する。しかし、本発明を、ならびにそれを使用することによって達成される利点および目的をよりよく理解するために、本発明の例示的実施形態が説明された図面、および添付の説明資料を参照されたい。
本明細書で説明する実施形態は、DMAコントローラに対して1つまたは複数の強化策を活用して、USB関連用途および具体的にはUSB仕様書2.0と互換性のある用途など多様なDMA用途において、DMA転送動作の性能を最適化する。しかし、以降に述べる様々な強化策は、互いに別々に利用することができることを理解されたい。さらに、本明細書に述べる強化策は、USB互換の用途ではない用途に利用することができる。したがって、本発明は、本明細書に議論される具体的な実装形態に限定されるものでない。
ここで、図面を参照すると、いくつかの図面を通して同じ参照番号は、同じ構成部品を表し、図1に、本発明によるDMAコントローラを組み込んだ装置10用の例示的なハードウェアおよびソフトウェアの環境が示されている。本発明の目的のために、装置10は、クライアント・コンピュータ、サーバ・コンピュータ、可搬型コンピュータ、携帯型コンピュータ、組み込み型コントローラなど含め、USBホスト装置として働くことができる、実際すべてのタイプのコンピュータ、コンピュータ・システムまたは他のプログラム可能な電子装置を代表することができる。装置10は、以降「コンピュータ」として呼ぶこともあるが、用語「装置」は、本発明による適切な他のプログラム可能な電子装置も含むことがあることを理解されたい。
さらに、本発明によるDMAコントローラは、USBスレーブ装置内で利用することもできることを理解されたい。さらに、本明細書に述べる多数の特徴は、他のUSB仕様書版を含む他のメモリ転送用途、ならびに多数の非USB用途で利用されるDMAコントローラ中に実装することもできる。したがって、本発明は、以降に述べる具体的なUSBホストの実施に限定されるものでない。
通常、コンピュータ10は、メモリ16に結合された1つまたは複数のマイクロプロセッサを含む中央処理装置(CPU)14に結合されたシステム・バス12を含む。メモリ16は、コンピュータ10のメイン・メモリを含むランダム・アクセス・メモリ(RAM)装置、ならびに例えばキャッシュ・メモリ、不揮発性メモリまたはバックアップ・メモリ(例えば、プログラム可能なメモリまたはフラッシュ・メモリ)、リード・オンリー・メモリなど、どんな補助的なレベルのメモリも代表することができる。さらに、メモリ16は、コンピュータ10中のどこにでも物理的に位置するメモリ装置、例えばCPU14中のプロセッサ中のすべてのキャッシュ・メモリ、ならびに、例えば大容量記憶装置上に、またはコンピュータ10に結合された他のコンピュータ上に格納するようなバーチャル・メモリとして使用されるすべての記憶機能を含むと考えることができる。
USB接続性を提供するために、USBコントローラ18は、システム・バス12に追加して結合される。さらに、コンピュータ10中で利用できる他の入出力(I/O)機能、たとえば大容量記憶装置、ネットワーク・アダプタ、ワークステーション・アダプタ、マウスおよびキーボードなどの周辺入力装置、ビデオ表示装置およびアダプタなどは、総称的にI/Oブロック20によって代表され、それらもシステム・バス12に結合されていることが示されている。
USBコントローラ18は、USB仕様書2.0と互換性があるものとして示され、一般にシステム・バスとインターフェースし、USBワイヤ22を有する、1つまたは複数のUSBネットワークを代表する。USBコントローラ18は、通常1つまたは複数のUSBチャネル24(チャネル0からNとしても示される)をサポートするデバイス・ポートを定義する。さらに、各チャネル24と関連付けられるのは、プロフィール・レジスタ26であり、それは、以降議論するように、チャネルを介して転送される具体的なデータ・タイプに依存して最適な性能を引き出すように、各チャネルを構成するために使用される。
各チャネル24は、エンドポイント28を含み、そのなかに制御ロジック回路32の制御下にある先入れ先出し(FIFO)バッファ30が、組み込まれている。各チャネル24は、DMA制御ロジック回路38の制御下にあるFIFOバッファ36を含むDMAコントローラ34も含む。制御ロジック回路38は、関連付けられたウォッチドッグ・タイマ40の動作も制御し、ウォッチドッグ・タイマ40は、タイムアウト条件の結果としてシステム・バス12上に割込み(割込み0)を発行するように構成される。
各チャネル中の制御ロジック回路32、38の動作は、チャネル24と関連付けられたプロフィール・レジスタ26中に格納されたプロフィール情報に基づき、カスタマイズされる。一度構成されると、回路32、38は、転送経路42によって示されているように、USB仕様書2.0に一致する方法で、USBワイヤ22と、システム・バス12を介してアクセス可能なレジスタまたはメモリとの間でデータを転送する。
USBコントローラ20は、通常、1つまたは複数の集積回路デバイス、ならびに追加のサポートする電子構成要素を組み込んだ回路装置で実装されることを理解されよう。たとえば、各DMAコントローラ34は、各エンドポイント28と同じまたは異なる集積回路デバイス中に実装でき、各チャネルの制御回路は、同じまたは異なる集積回路上に実装することができる。USBコントローラは、たとえばシステム・オン・チップ(SOC)実装の形で、追加の回路、たとえばシステム・バス12、CPU14、メモリ16および/またはI/Oブロック18と集積化することもできる。
さらに、各チャネル24のDMAコントローラは、別々のDMAコントローラまたは単一DMAコントローラ内のロジック回路と考えることができる。
当業界では周知のように、集積回路デバイスは、通常、1つまたは複数のコンピュータ・データ・ファイルを使用して設計され、製作され、このデータ・ファイルは、本明細書でデバイス上の回路装置のレイアウトを画定するハードウェア定義プログラムとして呼ばれる。このプログラムは、通常、設計ツールによって生成され、その後製造中に使用されて、回路装置を画定し半導体ウェハに適用されるレイアウト・マスクを作成する。通常、プログラムは、VHDL、verilog、EDIFなどのハードウェア定義言語(HDL)を使用して所定のフォーマットで提供される。本発明について、完全に機能する集積回路デバイスおよびそのようなデバイスを使用したデータ処理システムの形で実装された回路装置の文脈で述べてきたし以降も述べるが、本発明による回路装置は、様々な形のプログラム製品として流通させることもでき、本発明を実際に流通に供するために使用する具体的なタイプの信号記憶媒体がどうであろうとも、等しく適用できることを、当業者は理解されたい。信号記憶媒体の例に含まれるものには、ただしこれに限定されるものではないが、数あるなかで、揮発性および不揮発性のメモリ装置、フロッピー・ディスクおよび他の取り外し可能なディスク、ハード・ディスク装置、磁気テープ、光ディスク(たとえば、CD−ROM、DVDなど)など記録可能な媒体と、ディジタルまたはアナログの通信リンクなど伝送タイプの媒体とがある。
ソフトウェアの観点から、USBデバイス機能をサポートするものは、通常、USBドライバ44内に実装され、オペレーティング・システム46の構成要素としてメモリ16に常駐していることを示してある。USBデータは、通常、当業者に周知のように、様々なアプリケーション・ソフトウェア48が使用する。他の機能の中で、USBドライバ44は、様々なタイプのUSBデータの転送に使用するために、最適の性能を発揮させるように各DMAコントローラ34を構成することを含め、USBコントローラ20の各チャネル24を構成することができる。
本発明の様々な実施形態中に使用される任意の機能を実装するために実行される任意のルーチンは、オペレーティング・システムの一部、または特定のアプリケーション、構成要素、プログラム、オブジェクト、モジュールあるいは一連の命令、あるいはさらにそのサブセットのいずれとして実装されているかにかかわらず、本明細書では「コンピュータ・プログラム・コード」または簡単に「プログラム・コード」として呼ぶこととする。プログラム・コードは、通常、コンピュータ内の様々なメモリおよび記憶装置内に様々な時間常駐し、コンピュータ中の1つまたは複数のプロセッサ、またはプログラム可能な電子装置中の他のどんなプログラム可能なロジックによって読み出され実行されたとき、本発明の様々な態様を実施するためのステップまたは要素を実行するのに必要なステップをそのコンピュータまたは装置に行わせる、1つまたは複数の命令を含む。さらに、本発明は、完全に機能するコンピュータおよび電子装置の文脈で述べてきたし以降も述べるが、本発明の様々な実施例は、様々な形のプログラム製品として流通させることができ、本発明を実際に流通させるために使用する具体的なタイプの信号記録媒体にかかわりなく、等しく適用できることを当業者は理解されよう。
さらに、ルーチン、手順、方法、モジュール、オブジェクトおよびその他にプログラム機能を編成できる通常無数の方法、ならびに典型的なコンピュータまたは電子装置内に常駐する様々なソフトウェア・レイヤ(たとえば、オペレーティング・システム、ライブラリ、API、アプリケーション、アプレット他)内にプログラム機能を割り当てることができる様々な方法を考えると、本発明は、本明細書で述べるプログラム機能の具体的な構成および割り当てに限定されるものでないことを理解されたい。さらに、異なる割り当てが他の実装形態中で使用できるので、ハードウェアとソフトウェアの間で本明細書に述べるプログラム機能の明確な割り当ては、本発明を限定するものでない。
図1に示す例示的環境は、本発明を限定するように企図されていないことを当業者は認識されよう。実際に、代替の他のハードウェアおよび/またはソフトウェアの環境は、本発明の範囲から逸脱せずに使用することができることを当業者は認識されよう。
USB環境中で最適の性能を発揮するために、USBコントローラ、具体的にはその中にある各DMA制御ロジックが、高帯域幅のデータ転送速度(たとえば、USB仕様書2.0でサポートする192Mb/sの帯域幅)を容易に実現し、それのみならずソフトウェアのオーバーヘッドの単純化および最小化をともに行うためのいくつかの強化策をサポートする。いくつかのこれらの強化策は、図1のDMAチャネルの1つについてのDMAコントローラ制御ロジック38の例示的構成を示す図2に、非常に詳細に示してある。FIFOおよびDMAチャネルを通るデータ・フロー全体は、図2から省略されていることに留意されたい。
具体的には、各DMA制御ロジック回路は、そのDMAチャネル用に関連付けられたプロフィール・レジスタ26からプロフィール識別子を供給されるプロフィール・デコーダ52によって、動的に構成可能な状態機械50を含む。プロフィール・デコーダは、イネーブル・カウント・レジスタ信号、イネーブル・パケット・エンド信号、イネーブル・バイト・カウント信号、イネーブル・エラー・カウント信号、イネーブル・ウォッチドッグ信号および部分的ワード遅延信号を含め、複数の構成信号を発生する。代替では、デコーダが提供する様々な信号は、プロフィール・レジスタ26中の個々のビットに直接マッピングでき、それによってプロフィール・デコーダ52は、必要でなくなる。その場合、プロフィール・レジスタ26中に適切なビットを設定することは、USBドライバの責任となるはずである。
従来のDMAコントローラへの1つの強化策は、たとえばデコーダ52からのイネーブル・カウント・レジスタ信号に応答して、選択的にディセイブルにすることができるDMAカウント・レジスタ54である。別の強化策は、上記で述べたように、たとえばデコーダ52からのイネーブル・ウォッチドッグ信号に応答して、選択的にイネーブルにすることができるエンドポイント・ウォッチドッグ・タイマ40である。イネーブルにされたとき(たとえば、状態機械50からのイネーブル信号によって)、エンドポイント・ウォッチドッグ・タイマは、関連付けられたDMAチャネルを介してのデータ・パケットを受け取ったことに応答してリセットされ(たとえば、状態機械50が発生したリセット信号に応答して)、指定時間経過してもパケットを受け取らなかった場合、割込みを起動し、保留されていた部分的なワードが、もしあれば任意選択で転送するようにさせる。代替の実装形態では、ウォッチドッグ・タイマ40は、デコーダ52からのイネーブル・ウォッチドッグ信号によって直接イネーブルにすることができ、タイマが、直接DMAチャネルのデータ・トラフィックを監視することができる。
さらに、選択的にディセイブルにされるカウント・レジスタ、エンドポイント・ウォッチドッグ・タイマおよび状態機械50中のパケット・エンド検出回路の組み合わせによって、各DMA制御ロジック回路が複数のDMA動作モードをサポートすることができる。さらに、動作モードは、たとえばイネーブル・カウント・レジスタ、デコーダ52からのイネーブル・パケット・エンド信号および/またはイネーブル・ウォッチドッグ信号によって、選択することができる。利用できるモードは、以下の通りである。
レガシー・モード:DMAカウント・レジスタ54が、転送するバイト数をロードされる。カウントがゼロになったとき、DMA制御ロジック回路が、自動的にディセイブルにされる。
パケット・エンド・モード:DMA制御ロジック回路が、一度イネーブルにされると、入力データ・パケットの全コンテンツを転送する。DMAカウント・レジスタ54は、ディセイブルにされ、したがって実質的に無視される。パケット・エンド信号をUSBバス上から受け取ったとき、パケット・エンド検出回路(たとえば、状態機械50中にある)を使用して割込み信号を送る。
連続モード:一度DMA制御ロジック回路が、イネーブルにされると、それは、ソフトウェアによってディセイブルにされるまで入力データを転送する。やはりDMAカウント・レジスタは、ディセイブルにされる。さらに、データ転送の完了は、エンドポイント・ウォッチドッグ・タイマ40の時間切れによって検出することができる。
各DMA制御ロジック回路によってサポートされている別の機能は、デコーダ52からの部分的ワード遅延信号によってイネーブルにされ、入力データ・パケット中のバイト数がDMAワード長の倍数であるかどうかを判定する部分的ワード遅延機能である。倍数でない場合、この機能によって、さらにデータを受け取るまで最後の1ワードのDMA転送が延ばされ、したがって無効なデータを、DMA転送動作の最終ワード中で転送することが防止される。
サポートできる追加の機能には、パケット間境界バイト・カウンタ、条件付停止およびエラー・カウンタ・レジスタが含まれる。具体的には、各DMAチャネルは、ソフトウェア制御のもとでリセットすることができ、受信データ・パケット毎に受信されたバイト数を累積するために使用される関連付けられたパケット間境界バイト・カウンタ56を含むことができる。このカウンタは、ソフトウェアによってリセットされるまで累積をし続け、たとえば複数パケットのメッセージ長を常時監視できるようにするはずである。バイト・カウンタ56は、デコーダ52が発生したイネーブル・バイト・カウント信号によってイネーブルにすることができる。
各DMA制御ロジック回路は、条件付停止もサポートし、それによって、条件付停止機能を設定すると(たとえば、状態機械50が受け取った条件付停止信号を介して)DMAチャネルをソフトウェア制御で動的にオフにすることができる。しかし、ソフトウェアが条件付停止機能を設定したときDMA転送が進行中の場合、制御ロジックがシャット・オフされる前に、活動中の転送機能によって現在のパケットが完了されることになる。そのような機能は、例えば連続動作モードとあいまって役立つことができ、それによってDMAチャネル用のエンドポイント・ウォッチドッグ・タイマが割込みを発生した場合、ソフトウェアがその割込みを処理してDMA制御回路をシャット・オフすることができる前に到着した、どんな新しいデータ・パケットもすべて転送されることになる。
エラー・カウンタ・レジスタ58は、各DMAチャネルと関連付けることもできる。そのレジスタは、DMA制御ロジックがエラーを検出したときはいつも、更新されるように構成される。カウンタをリセットするためにソフトウェアを使用でき、カウンタは、リセットされるまでカウントし続けることができる。検出されるエラーには、たとえばUSBアイソクロナス・プロトコルと関連して起こり得るオーバーラン・エラーを含め、データのDMA転送に関するどんな問題もすべて含まれる。エラー・カウンタ58は、デコーダ52が発生するイネーブル・エラー・カウント信号によってイネーブルにされる。
さらに、各DMA制御ロジック回路は、前述のUSBプロフィール・レジスタ26を含むUSBプロフィール回路によって構成されることが望ましい。各プロフィール・レジスタに格納されたプロフィール情報は、主に、関連付けられたDMAチャネルが処理することになるUSBプロトコルに基づいており、それによってDMAチャネル全体は、そのレジスタに格納されたプロフィール・データに基づき適切に構成することができる。
したがって、通常、DMAチャネル中のDMA制御ロジックを利用するソフトウェアは、USB仕様書によってサポートされている様々な通信プロトコルを設定し処理する複雑な事項を理解する必要がない。ソフトウェアは、装置のインターフェースのタイプ(メモリ・ベースまたはレジスタ・ベース)に加えて、エンドポイントによってサポートされているプロトコルに適合するプロフィールだけを指定する必要がある。次いで、ハードウェアを、このある選択によって自動的に構成することができる。
例えば、プロフィール・レジスタは、以下の表Iに示すプロフィールをサポートすることができる。他のプロフィールのマッピングも代替として使用することができることを理解されたい。さらに、レジスタ中にプロフィール情報を符号化する様々な方法を使用することができることを理解されたい。たとえば、11個のサポートされたプロフィールは、4ビット・レジスタで符号化することができる。代替としては、各任意選択の機能は、レジスタ中の1つまたは複数のビットに割り当てることができ、それによってソフトウェアが、符号化された値をプロフィール・レジスタ中に書き込むことができ、それによって上記で述べたような必要なプロフィールの任意選択をすべて設定することになるはずである。
各プロフィールに関して、「エラー・カウンタ」は、エラー・カウンタがイネーブルにされていることを示し、「エラー・カウンタ・レジスタ割込み」は、エラー・カウンタがイネーブルにされ、エラー・カウンタが更新されたときはいつも、割込みが起動されることを示す。
例示している実施形態では、必要なとき、DMAアドレス・レジスタおよびDMAカウント・レジスタは、プロフィール・レジスタとは別にプログラムされる。さらに、いくつかの実装形態では、DMAチャネル・スペース中の任意またはすべてのレジスタは、ソフトウェア制御によって具体的なプロフィールがカスタマイズできるように、プロフィール・レジスタによるプロフィール印加後、上書きが可能になることが望ましい。他の実装形態では、特定のUSBプロトコルに適するように設定された各関連付けられた機能およびレジスタに関して、プロフィール・レジスタを使用しないことがある。
上記の表から、DMA連続モードは、エンドポイントがアイソクロナス・プロトコルをサポートし、データがエンドポイントFIFOと装置FIFOの間を直接行き来するとき、主に使用される。このモードでは、DMAカウント・レジスタは、ディセイブルにされ、どんなエラーもエラー・カウンタ・レジスタ中に累積される。ソフトウェアは、周期的にエラー・カウンタ・レジスタをポーリングする、またはそのレジスタが1増加されたとき、割込みを発生させるかどちらかを行うことができる。しかし、このモードでは、エラーによってDMA制御ロジック回路がターン・オフされないことが望ましい。装置のFIFOが部分的なワードの転送に適応することができない場合、部分的ワード遅延機能が使用されることも望ましい。さらに、モード9で述べているように、エンドポイント・ウォッチドッグ・タイマを使用してリアルタイムのトラフィック中の切断を検出することが望ましいことがある。
上記から、DMAパケット・エンド・モードは、制御プロトコルをサポートするために、主に使用されることもお分かりになろう。この環境では、長さがしばしば不確かな非リアルタイム情報の小さいパケットを散発的に受け取る。DMA制御ロジック回路は、任意の長さの単一パケットを受け取った後、シャット・オフする。部分的ワード遅延機能、またはエンドポイント・ウォッチドッグ・タイマ、あるいはDMAカウント・レジスタも、どれも必要でないまたは使用されない。パケット間境界バイト・カウンタは、受け取ったパケット中のバイト数を判定するために任意選択で使用することができ、エラー・カウンタ・レジスタは、周期的にポーリングされる、またはデータ・パケットの伝送中に受け取ったエラーに応答して割込みを発生することができる。
他のすべてのモードには、DMAレガシー・モードを使用することができる。たとえば、DMAレガシー・モードは、大容量記憶(ブロック)装置が、バルク転送プロトコルをサポートするエンドポイントからデータを受け取ったとき、役立つことができる。DMAカウント・レジスタにブロック・サイズの倍数をロードすることができ、個々のパケットからのデータがそのメモリ・ブロックに書き込まれる。しかし、メモリ・ブロックを満たすのに必要なパケット数は、トランスペアレントである。ブロックの指定された数が満たされたとき(すなわち、カウンタ・レジスタがゼロになったとき)、DMA制御ロジック回路は、シャット・オフすることができる。部分的ワード遅延機能を使用して、無効データ・ギャップがメモリ・ブロック中に発生しないように保証することが望ましいことがある。さらに、エンドポイント・ウォッチドッグ・タイマを使用して、データの受け取りが不十分であったことを検出するのが望ましいことがある。
本明細書で述べる、DMA制御ロジック内の強化策を実施することは、本実施例の開示のおかげを被ることになる普通のどんな当業者の能力範囲にも十分入るはずである。
本明細書で述べる、強化されるDMAコントローラのソフトウェア制御は、通常、しかし必ずしもそうでないが、上記のようにUSBドライバによって管理される。例えば、図2に、USBドライバによって実行され、USB装置に最適なプロトコルを使用して、各USBコントローラのエンドポイントがその特定のUSB装置と対話するように、各エンドポイントを適切に構成することができる、例示的エンドポイント初期化ルーチン60を示す。
ブロック62で、ルーチン60は、コントローラによってサポートされている第1のエンドポイントを選択するために、エンドポイント変数をリセットすることによって開始される。次いでブロック64で、そのエンドポイントに関連付けられたUSBプロフィール・レジスタを選択するために、インデックス変数を初期化する。
次にブロック66で、第1のエンドポイントを制御エンドポイントとして構成すべきかどうか、例えばUSB制御プロトコルを使用してそのエンドポイントを介してデータを転送することが予想されるかどうかに基づき、判定する。その場合、ブロック68にプログラムが進み、そのエンドポイント用のプロフィール・レジスタ(インデックス変数によって選択された)に、適切なプロフィールを識別する制御識別値をセットする。一度セットされると、次いで、ブロック70および72にプログラムが進み、インデックス変数およびエンドポイント変数を1だけ増加する。次いで、ブロック74にプログラムが進み、USBコントローラ用の最後のエンドポイントが処理されたかどうかを判定する。そうでない場合、ブロック66にプログラムが戻り、さらにエンドポイントを処理する。最後のエンドポイントが処理されていた場合、ルーチン60は、完了する。
ブロック66に戻り、次のエンドポイントが制御エンドポイントとして構成すべきでないと判定されると、ブロック76にプログラムが進み、エンドポイントをバルク・エンドポイントとして構成すべきかどうか、たとえばUSBバルク・プロトコルを使用してそのエンドポイントを介してデータを転送することが予想されるかどうかに基づき、判定する。その場合、ブロック78にプログラムが進み、そのエンドポイント用のプロフィール・レジスタに、適切なプロフィールを識別するバルク識別値をセットする。一度セットされると、次いで、ブロック70および72にプログラムが進み、インデックス変数およびエンドポイント変数を1だけ増加し、次いでブロック74にプログラムが進み、まだあれば残りのエンドポイントをすべて処理する。
次に、ブロック76に戻り、次のエンドポイントがバルク・エンドポイントとして構成すべきでないと判定されると、ブロック80にプログラムが進み、エンドポイントを割込みエンドポイントとして構成すべきかどうか、たとえばUSB割込みプロトコルを使用してそのエンドポイントを介してデータを転送することが予想されるかどうかに基づき、判定する。その場合、ブロック82にプログラムが進み、そのエンドポイント用のプロフィール・レジスタに、適切なプロフィールを識別する割込み識別値をセットする。一度セットされると、次いで、ブロック70および72にプログラムが進み、インデックス変数およびエンドポイント変数を1だけ増加し、次いでブロック74にプログラムが進み、まだあれば残りのエンドポイントをすべて処理する。
次に、ブロック80に戻り、次のエンドポイントが割込みエンドポイントとして構成すべきでないと判定されると、ブロック84にプログラムが進み、エンドポイントをアイソクロナス・エンドポイントとして構成すべきかどうか、例えばUSBアイソクロナス・プロトコルを使用してそのエンドポイントを介してデータを転送することが予想されるかどうかに基づき、判定する。その場合、ブロック86にプログラムが進み、そのエンドポイント用のプロフィール・レジスタに、適切なプロフィールを識別するアイソクロナス識別値をセットする。一度セットされると、次いで、ブロック70および72にプログラムが進み、インデックス変数およびエンドポイント変数を1だけ増加し、次いでブロック74にプログラムが進み、まだあれば残りのエンドポイントをすべて処理する。
DMA転送用のエンドポイントをさらに初期化するために、上記で述べたように、USBドライバは、DMAアドレス・レジスタを別々に構成し、DMAチャネルを介してDMA転送する適切なソースおよび/または宛先を識別する。さらに、レガシー・モードが選択されている場合、DMAカウント・レジスタも適切にセットされる。一度構成されると、DMAチャネル用のDMAコントローラが、従来のDMAコントローラと同様に、ソフトウェアから独立してデータの転送を管理する。
次に、図4に、USBコントローラ中の個々のエンドポイントが発生した割込みに応答して、USBドライバが処理できる例示的割込み処理ルーチン100を示す。ブロック102で、ルーチン100は、割込みを発生したエンドポイントの識別情報を得ることによって開始される。次に、ブロック104で、エラーが検出されたかどうか、たとえばDMAコントローラ中のエラー・カウンタ・レジスタをポーリングすることによって、判定する。その場合、プログラムはブロック106に進み、エラーが適切に処理されるようにエラーを報告する。次いで、ルーチン100は、終了する。
ブロック104に戻り、エラーが検出されていない場合、プログラムはブロック108に進み、USBメッセージの最後のデータ・パケットが受け取られているかどうかを判定する。詳しくいうと、ルーチン100は、DMAコントローラ中の適切なバイト・カウンタをポーリングして、USBメッセージのデータがすべて受け取られているかどうか(例えば、ドライバが入力メッセージを監視した結果として)判定することができる。最後のパケットが受け取られていない場合、ルーチン100は、終了する。最後のパケットが受け取られている場合、プログラムはブロック108からブロック110に進み、エンドポイント用のDMAコントローラがまだイネーブルになっているかどうかを判定する。その場合、プログラムはブロック110からブロック112に進み、DMAコントローラをターン・オフする(たとえば、条件付停止信号をアサートすることによって)。次いで、プログラムはブロック114に進み、USBドライバ中の他のプログラム・コードが、メッセージの従来の方法による処理に着手するように「メッセージ完了」ステータスを通知する。次いで、ルーチン100は、終了する。ブロック110に戻り、エンドポイント用のDMAコントローラが現在イネーブルになっていない場合、プログラムは直接ブロック114に進み、「メッセージ完了」ステータスを通知し、ルーチン100を終了させる。
本発明の精神および範囲から逸脱せずに、例示した実施形態に様々な修正を加えることができる。したがって、本発明は、添付の特許請求の範囲の記載中にある。
Claims (53)
- (a)少なくとも1つのダイレクト・メモリ・アクセス(DMA)チャネルを介してデータを通信するように構成されたDMA制御回路と、
(b)前記DMAチャネルを介したデータ転送の長さを制御するカウント値を格納するように構成されたDMAカウント・レジスタと
を含み、
前記DMA制御回路が、前記DMAカウント・レジスタを選択的にディセイブルにし、前記DMAカウント・レジスタとは独立にデータ転送を実施するように構成されることを特徴とする回路装置。 - 前記DMA制御回路に結合され、前記DMAチャネルによって所定の時間内に1つもデータが受信されない場合、割込みを発生するように構成されたエンドポイント・ウォッチドッグ・タイマをさらに含むことを特徴とする請求項1記載の回路装置。
- 前記DMA制御回路は、前記DMAチャネルを介してデータ・パケットを通信するとき、最終ワードが部分的なワードである場合、前記データ・パケットからのデータの前記最終ワードの伝送を遅延させるように構成されることを特徴とする請求項1記載の回路装置。
- 前記DMA制御回路は、前記DMA制御回路に部分的ワード遅延モードが選択されているときだけ、データの前記最終ワードの伝送を遅延させるように構成されることを特徴とする請求項3記載の回路装置。
- 前記DMAチャネルを介したデータ転送中に検出されたエラーをロギングするように構成されたエラー・カウンタ・レジスタをさらに含むことを特徴とする請求項1記載の回路装置。
- 前記DMA制御回路は、前記DMAチャネルのシャット・オフ要求の受信に応答して前記DMAチャネルをシャット・オフするのに先立ち、前記DMAチャネルを介したデータ・パケットからのデータの進行中の転送を完了するように構成されることを特徴とする請求項1記載の回路装置。
- 前記DMAチャネルのシャット・オフ要求は、条件付停止要求であることを特徴とする請求項6記載の回路装置。
- 前記DMAチャネルを介して伝送されるデータ量を累積するように構成されたバイト・カウンタをさらに含むことを特徴とする請求項1記載の回路装置。
- 前記DMA制御回路は、カウント・モードおよび連続モードで選択的に動作可能であり、
前記カウント・モードでは、前記DMA制御回路は、前記DMAカウント・レジスタをイネーブルにし、
前記連続モードでは、前記DMA制御回路は、前記DMAカウント・レジスタをディセイブルにすることを特徴とする請求項1記載の回路装置。 - 前記DMA制御回路は、パケット・エンド・モードで選択的に動作可能であり、
前記パケット・エンド・モードでは、前記DMA制御回路は、前記DMAカウント・レジスタをディセイブルにし、データ・パケット・エンドの検出に応答して前記DMAチャネルを介したデータ転送を完了することを特徴とする請求項9記載の回路装置。 - 前記DMA制御回路に結合されたユニバーサル・シリアル・バス(USB)プロフィール回路をさらに含み、前記USBプロフィール回路はこのUSBプロフィール回路によってサポートされている複数のUSBプロトコルのうちから選択されたUSBプロトコルと共に使用するために、少なくとも1つの前記DMA制御回路の動作パラメータを制御し、選択的に前記DMA制御回路を最適化するように構成されたことを特徴とする請求項1記載の回路装置。
- 前記DMA制御回路に結合されたユニバーサル・シリアル・バス(USB)エンドポイントをさらに含み、
前記DMA制御回路が、前記USBエンドポイントとプログラム可能な電子装置の間のデータ転送を制御するように構成されることを特徴とする請求項1記載の回路装置。 - 前記DMA制御回路は、複数のDMAチャネルを介してデータを通信するように構成され、
前記回路装置が、それぞれ前記複数のDMAチャネルと関連付けられた複数のDMAカウント・レジスタを含み、
前記DMAカウント・レジスタのそれぞれが、前記関連付けられたDMAチャネルを介したデータ転送の実行中、前記DMA制御回路によって選択的にディセイブルにされるように構成されることを特徴とする請求項1記載の回路装置。 - 請求項1記載の前記回路装置を含むことを特徴とするDMAコントローラ。
- 請求項1記載の前記回路装置を含むことを特徴とするUSBコントローラ。
- 請求項1記載の前記回路装置を含むことを特徴とする集積回路。
- 請求項1記載の前記回路装置を定義するためのハードウェア定義プログラムと、
前記ハードウェア定義プログラムを記録するための信号記録媒体とを含み、
前記信号記録媒体が、少なくとも1つの記録可能な媒体と、伝送媒体とを含むことを特徴とするプログラム製品。 - ダイレクト・メモリ・アクセス(DMA)制御回路を有するDMAチャネルを介してデータを転送する方法であって、
(a)第1のデータ転送動作の長さを制御するDMAカウント・レジスタにカウント値を格納することによって、前記DMAチャネルを介した前記第1のデータ転送動作を実行するステップと、
(b)第2のデータ転送動作が、前記DMAカウント・レジスタとは独立に実行されるように前記DMAカウント・レジスタをディセイブルにすることによって、前記DMAチャネルを介した前記第2のデータ転送動作を実行するステップと、
を含むことを特徴とする方法。 - 前記第2のデータ転送動作を実行するステップは、前記DMAチャネルによって所定の時間内に1つもデータが受信されなかったとき、前記DMA制御回路に結合されたエンドポイント・ウォッチドッグ・タイマを用いて割込みを発生するステップを含むことを特徴とする請求項18記載の方法。
- 前記第2のデータ転送動作を実行することが、前記DMAチャネルを介してデータ・パケットを転送し、最終ワードが部分的なワードである場合、前記データ・パケットからのデータの前記最終ワードの伝送を遅延させることを含むことを特徴とする請求項18記載の方法。
- 前記第2のデータ転送動作を実行するステップは、前記DMAチャネルを介したデータ転送中に検出されたエラーをエラー・カウンタ・レジスタにロギングするステップを含むことを特徴とする請求項18記載の方法。
- 前記第2のデータ転送動作を実行するステップは、データ・パケットのデータ転送の完了に先立ち、受け取った前記DMAチャネルのシャット・オフ要求の受信に応答して前記DMAチャネルをシャット・オフするのに先立ち、前記DMAチャネルを介した前記データ・パケットからのデータの転送を完了するステップを含むことを特徴とする請求項18記載の方法。
- 前記第1および第2のデータ転送動作の実行中、前記DMAチャネルを介して転送されるデータ量をバイト・カウンタに累積するステップをさらに含むことを特徴とする請求項18記載の方法。
- 前記第1のデータ転送動作を実行するステップは、カウント・モードで動作するように前記DMA制御回路を構成するステップを含み、
前記第2のデータ転送動作を実行するスッテプは、連続モードで動作するように前記DMA制御回路を構成するステップを含むことを特徴とする請求項18記載の方法。 - パケット・エンド・モードで動作するように前記DMA制御回路を構成するステップと、
データ・パケット・エンドの検出に応答して第3のデータ転送動作を完了するステップとを含む、第3のデータ転送動作を実行するステップをさらに含むことを特徴とする請求項24記載の方法。 - 前記第1および第2のデータ転送動作を実行するステップは、それぞれUSBエンドポイントとの間でユニバーサル・シリアル・バス(USB)データを転送するステップを含み、
USBプロフィール回路によってサポートされている複数のUSBプロトコルのうちから選択されたUSBプロトコルと共に使用するために、前記USBプロフィール回路を使用して少なくとも1つの前記DMA制御回路の動作パラメータを制御し、選択的に前記DMA制御回路を最適化するステップをさらに含むことを特徴とする請求項18記載の方法。 - (a)少なくとも1つのダイレクト・メモリ・アクセス(DMA)チャネルを介してデータを通信するように構成されたDMA制御回路と、
(b)前記DMA制御回路に結合され、前記DMAチャネルによって所定の時間内に一つもデータが受信されない場合、割込みを発生するように構成されたエンドポイント・ウォッチドッグ・タイマと、
を含むことを特徴とする回路装置。 - 前記エンドポイント・ウォッチドッグ・タイマは、前記DMA制御回路がデータの受信に応答してリセットされるように構成されることを特徴とする請求項27記載の回路装置。
- 前記DMA制御回路は、前記エンドポイント・ウォッチドッグ・タイマを選択的にイネーブルにするように構成されることを特徴とする請求項27記載の回路装置。
- ダイレクト・メモリ・アクセス(DMA)制御回路を有するDMAチャネルを介してデータを転送する方法であって、
(a)前記DMAチャネルを介してデータを転送するステップと、
(b)前記DMAチャネルのデータ受け取りに応答して、エンドポイント・ウォッチドッグ・タイマをリセットするステップと、
(c)前記DMAチャネルによって所定の時間内に1つもデータが受信されていない場合、前記エンドポイント・ウォッチドッグ・タイマを用いて割込みを発生するステップと、
を含むことを特徴とする方法。 - 前記エンドポイント・ウォッチドッグ・タイマの時間切れに応答して、データの部分的なワードの転送を完了するステップをさらに含むことを特徴とする請求項30記載の方法。
- 少なくとも1つのダイレクト・メモリ・アクセス(DMA)チャネルを介してデータを通信するように構成されたDMA制御回路を含み、
前記DMA制御回路は、前記DMAチャネルを介してデータ・パケットを通信するとき、最終ワードが部分的なワードである場合、前記データ・パケットからのデータの前記最終ワードの伝送を遅延させるように構成されることを特徴とするダイレクト・メモリ・アクセス回路装置。 - 前記DMA制御回路は、前記DMA制御回路に部分的ワード遅延モードが使用可能にされている場合だけ、データの前記最終ワードの伝送を遅延させるように構成されることを特徴とする請求項32記載の回路装置。
- 前記DMA制御回路は、前記DMAチャネルを介した前記最終ワードの伝送に先立ち、その後のデータ・パケットからのデータを前記最終ワード中に格納するように構成されることを特徴とする請求項32記載の回路装置。
- ダイレクト・メモリ・アクセス(DMA)制御回路を有するDMAチャネルを介してデータを転送する方法であって、
(a)前記DMAチャネルを介してデータ・パケットを転送するステップと、
(b)最終ワードが部分的なワードである場合、前記データ・パケットからのデータの前記最終ワードの伝送を遅延させるステップと、
を含むことを特徴とする方法。 - (a)少なくとも1つのダイレクト・メモリ・アクセス(DMA)チャネルを介してデータを通信するように構成されたDMA制御回路と、
(b)前記DMA制御回路に結合されたユニバーサル・シリアル・バス(USB)プロフィール回路と、
を含み、前記USBプロフィール回路は、このUSBプロフィール回路によってサポートされている複数のUSBプロトコルのうちから選択されたUSBプロトコルと共に使用するために、少なくとも1つの前記DMA制御回路の動作パラメータを制御し、選択的に前記DMA制御回路を最適化するように構成されたことを特徴とする回路装置。 - 前記DMAチャネルを介したデータ転送の長さを制御するカウント値を格納するように構成されたDMAカウント・レジスタをさらに含み、
前記USBプロフィール回路によって制御される前記少なくとも1つの動作パラメータが、前記DMAカウント・レジスタについてのイネーブル/ディセイブル状況を含むことを特徴とする請求項36記載の回路装置。 - 前記DMA制御回路は、選択的にカウント・モードおよび連続モードで動作可能であり、
前記カウント・モードでは、前記DMA制御回路は、前記DMAカウント・レジスタをイネーブルにし、
前記連続モードでは、前記DMA制御回路は、前記DMAカウント・レジスタをディセイブルにし、
前記USBプロフィール回路によって制御される前記少なくとも1つの動作パラメータは、前記カウント・モードと前記連続モードの間で選択することを特徴とする請求項37記載の回路装置。 - 前記DMA制御回路は、選択的にパケット・エンド・モードで動作可能であり、
前記パケット・エンド・モードでは、前記DMA制御回路は、前記DMAカウント・レジスタをディセイブルにし、データ・パケット・エンドの検出に応答して前記DMAチャネルを介したデータ転送を完了し、
前記USBプロフィール回路によって制御される前記少なくとも1つの動作パラメータは、前記パケット・エンド・モード、前記カウント・モードと前記連続モードの間で選択することを特徴とする請求項38記載の回路装置。 - 前記DMA制御回路に結合され、前記DMAチャネルによって所定の時間内に1つもデータが受信されていない場合、割込みを発生するように構成されたエンドポイント・ウォッチドッグ・タイマをさらに含み、
前記USBプロフィール回路によって制御される前記少なくとも1つの動作パラメータは、前記エンドポイント・ウォッチドッグ・タイマについてのイネーブル/ディセイブル状況を含むことを特徴とする請求項36記載の回路装置。 - 前記USBプロフィール回路によって制御される前記少なくとも1つの動作パラメータは、前記DMA制御回路用の部分的ワード遅延モードについてのイネーブル/ディセイブル状況を含み、
前記部分的ワード遅延モードが使用可能にされているとき、前記DMA制御回路は、前記DMAチャネルを介してデータ・パケットを通信するときに最終ワードが部分的なワードである場合、データ・パケットからのデータの前記最終ワード伝送を遅延させるように構成されることを特徴とする請求項36記載の回路装置。 - 前記DMAチャネルを介したデータ転送中に検出されたエラーをロギングするように構成されたエラー・カウンタ・レジスタをさらに含み、
前記USBプロフィール回路によって制御される前記少なくとも1つの動作パラメータは、前記エラー・カウンタ・レジスタについてのイネーブル/ディセイブル状況を含むことを特徴とする請求項36記載の回路装置。 - 前記DMAチャネルを介して伝送されるデータ量を累積するように構成されたバイト・カウンタをさらに含み、
前記USBプロフィール回路によって制御される前記少なくとも1つの動作パラメータは、前記バイト・カウンタについてのイネーブル/ディセイブル状況を含むことを特徴とする請求項36記載の回路装置。 - 前記USBプロフィール回路によってサポートされている複数のUSBプロトコルは、制御プロトコル、割込みプロトコル、アイソクロナス・プロトコルおよびバルク・プロトコルのうちの少なくとも1つを含むことを特徴とする請求項36記載の回路装置。
- 前記USBプロフィール回路は、少なくとも1つの前記DMA制御回路の動作パラメータを制御し、選択されたアプリケーション・インターフェースと共に使用するために選択的に前記DMA制御回路を最適化するようにさらに構成され、
前記選択されたアプリケーション・インターフェースが、メモリ・インターフェースおよびレジスタ・インターフェースのうちから選択されることを特徴とする請求項36記載の回路装置。 - 前記DMA制御回路に結合されたユニバーサル・シリアル・バス(USB)エンドポイントをさらに含み、
前記DMA制御回路は、前記USBエンドポイントとプログラム可能な電子装置の間のデータ転送を制御するように構成され、
前記USBプロフィール回路は、前記USBエンドポイントを最適化するように構成されることを特徴とする請求項36記載の回路装置。 - 前記DMA制御回路は、複数のDMAチャネルを介してデータを通信するように構成され、
前記USBプロフィール回路は、複数のプロフィール・レジスタを含み、
各前記プロフィール・レジスタは、前記複数のDMAチャネルのうちの関連付けられたDMAチャネルと関連付けられた少なくとも1つの動作パラメータを制御するように構成されることを特徴とする請求項36記載の回路装置。 - 前記USBプロフィール回路は、プロフィール・レジスタを含むことを特徴とする請求項36記載の回路装置。
- 請求項36記載の前記回路装置を含むDMAコントローラ。
- 請求項36記載の前記回路装置を含むUSBコントローラ。
- 請求項36記載の前記回路装置を含む集積回路。
- 請求項36記載の前記回路装置を定義するためのハードウェア定義プログラムと、
前記ハードウェア定義プログラムを記録するための信号記録媒体とを含み、
前記信号記録媒体は、少なくとも1つの記録可能な媒体と、伝送媒体とを含むことを特徴とするプログラム製品。 - DMA制御回路を有するダイレクト・メモリ・アクセス(DMA)チャネルを介してデータを転送する方法であって、
(a)前記DMA制御回路に結合されたユニバーサル・シリアル・バス(USB)プロフィール回路を用いて、少なくとも1つの前記DMA制御回路の動作パラメータを動的に構成し、複数のUSBプロトコルのうちから選択されたUSBプロトコルと共に使用するために前記DMA制御回路を最適化するステップと、
(b)前記USBプロフィール回路は前記DMAチャネルを動的に構成しながら、前記DMAチャネルを介してUSBデータを転送するためのデータ転送動作を実行するステップと
を含むことを特徴とする方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/268,408 US20040073721A1 (en) | 2002-10-10 | 2002-10-10 | DMA Controller for USB and like applications |
PCT/IB2003/004373 WO2004034175A2 (en) | 2002-10-10 | 2003-10-04 | Dma controller for usb and like applications |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006502491A true JP2006502491A (ja) | 2006-01-19 |
Family
ID=32068558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004542728A Withdrawn JP2006502491A (ja) | 2002-10-10 | 2003-10-04 | Usbおよび類似用途向けのdmaコントローラ |
Country Status (6)
Country | Link |
---|---|
US (1) | US20040073721A1 (ja) |
JP (1) | JP2006502491A (ja) |
CN (1) | CN100576192C (ja) |
AU (1) | AU2003265086A1 (ja) |
TW (1) | TW200428219A (ja) |
WO (1) | WO2004034175A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011065514A (ja) * | 2009-09-18 | 2011-03-31 | Renesas Electronics Corp | データ処理装置及びデータ処理システム |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004227501A (ja) * | 2003-01-27 | 2004-08-12 | Yamaha Corp | データ転送制御装置および方法 |
JP4211698B2 (ja) * | 2004-07-09 | 2009-01-21 | ソニー株式会社 | コンテンツデータ再生装置 |
US20060026308A1 (en) * | 2004-07-29 | 2006-02-02 | International Business Machines Corporation | DMAC issue mechanism via streaming ID method |
DE602005015632D1 (de) * | 2005-06-30 | 2009-09-03 | Freescale Semiconductor Inc | Einrichtung und verfahren zur steuerung mehrerer dma-tasks |
DE602005017948D1 (de) | 2005-06-30 | 2010-01-07 | Freescale Semiconductor Inc | Einrichtung und verfahren zum arbitrieren zwischen direktspeicherzugriffs-task-anforderungen |
DE602005023542D1 (de) * | 2005-06-30 | 2010-10-21 | Freescale Semiconductor Inc | Einrichtung und verfahren zum ausführen einer dma-task |
DE602005027003D1 (de) * | 2005-06-30 | 2011-04-28 | Freescale Semiconductor Inc | Einrichtung und verfahren zur steuerung einer ausführung einer dma-task |
US7496695B2 (en) * | 2005-09-29 | 2009-02-24 | P.A. Semi, Inc. | Unified DMA |
WO2007083197A1 (en) | 2006-01-18 | 2007-07-26 | Freescale Semiconductor Inc. | Device having data sharing capabilities and a method for sharing data |
US7657684B2 (en) * | 2006-04-28 | 2010-02-02 | Qualcomm Incorporated | USB interrupt endpoint sharing |
US7506098B2 (en) * | 2006-06-08 | 2009-03-17 | Bitmicro Networks, Inc. | Optimized placement policy for solid state storage devices |
US8190698B2 (en) * | 2006-06-30 | 2012-05-29 | Microsoft Corporation | Efficiently polling to determine completion of a DMA copy operation |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
CN101587462B (zh) * | 2008-05-21 | 2012-02-08 | 上海摩波彼克半导体有限公司 | 高速数据通信链路中的usb数据传输装置及其数据传输方法 |
DE102008051861A1 (de) * | 2008-10-16 | 2010-04-22 | Deutsche Thomson Ohg | Verfahren zum Betreiben einer Mehrport-MAC-Brücke mit abschaltbaren Ports abhängig von einem isochronen Datenstrom an einem Port oder Port-Paar in Ethernet-LANs |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9916213B1 (en) | 2013-03-15 | 2018-03-13 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US10120694B2 (en) | 2013-03-15 | 2018-11-06 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US9811461B1 (en) | 2014-04-17 | 2017-11-07 | Bitmicro Networks, Inc. | Data storage system |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US9721625B2 (en) * | 2014-06-18 | 2017-08-01 | Qualcomm Incorporated | Time-constrained data copying between storage media |
US10417164B2 (en) | 2016-12-29 | 2019-09-17 | Asmedia Technology Inc. | Synchronous transmission device and synchronous transmission method |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
CN111090601A (zh) * | 2019-12-07 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 基于bmc芯片的多功能usb控制方法、系统、终端及存储介质 |
CN111813727B (zh) * | 2020-08-21 | 2020-12-08 | 南京沁恒微电子股份有限公司 | 一种实时高效的usb数据传输方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU568977B2 (en) * | 1985-05-10 | 1988-01-14 | Tandem Computers Inc. | Dual processor error detection system |
DE69127851T2 (de) * | 1990-05-22 | 1998-04-30 | Nec Corp | Direktspeicherzugriffübertragungssystem und Benutzung |
US6745264B1 (en) * | 2002-07-15 | 2004-06-01 | Cypress Semiconductor Corp. | Method and apparatus for configuring an interface controller wherein ping pong FIFO segments stores isochronous data and a single circular FIFO stores non-isochronous data |
-
2002
- 2002-10-10 US US10/268,408 patent/US20040073721A1/en not_active Abandoned
-
2003
- 2003-10-04 AU AU2003265086A patent/AU2003265086A1/en not_active Abandoned
- 2003-10-04 JP JP2004542728A patent/JP2006502491A/ja not_active Withdrawn
- 2003-10-04 WO PCT/IB2003/004373 patent/WO2004034175A2/en active Application Filing
- 2003-10-04 CN CN200380101117A patent/CN100576192C/zh not_active Expired - Fee Related
- 2003-10-07 TW TW092127801A patent/TW200428219A/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011065514A (ja) * | 2009-09-18 | 2011-03-31 | Renesas Electronics Corp | データ処理装置及びデータ処理システム |
Also Published As
Publication number | Publication date |
---|---|
AU2003265086A8 (en) | 2004-05-04 |
WO2004034175A3 (en) | 2004-07-01 |
AU2003265086A1 (en) | 2004-05-04 |
CN100576192C (zh) | 2009-12-30 |
CN1703687A (zh) | 2005-11-30 |
WO2004034175A2 (en) | 2004-04-22 |
US20040073721A1 (en) | 2004-04-15 |
TW200428219A (en) | 2004-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006502491A (ja) | Usbおよび類似用途向けのdmaコントローラ | |
EP1896965B1 (en) | Dma descriptor queue read and cache write pointer arrangement | |
US7249202B2 (en) | System and method for DMA transfer of data in scatter/gather mode | |
TWI447650B (zh) | 中斷分佈方案 | |
US8131895B2 (en) | Interrupt management for multiple event queues | |
TWI772279B (zh) | 用於具有可重配置多端口的快捷外設互聯標準儲存系統的服務品質感測輸入輸出管理的方法、系統及設備 | |
US8516163B2 (en) | Hardware-based concurrent direct memory access (DMA) engines on serial rapid input/output SRIO interface | |
US5802546A (en) | Status handling for transfer of data blocks between a local side and a host side | |
US6898751B2 (en) | Method and system for optimizing polling in systems using negative acknowledgement protocols | |
US6993602B2 (en) | Configuring queues based on a given parameter | |
US20120254492A1 (en) | Traffic class based adaptive interrupt moderation | |
US7860120B1 (en) | Network interface supporting of virtual paths for quality of service with dynamic buffer allocation | |
US20110238869A1 (en) | Autonomous Multi-Packet Transfer for Universal Serial Bus | |
US20040100900A1 (en) | Message transfer system | |
US7177913B2 (en) | Method, system, and program for adding operations identifying data packets to structures based on priority levels of the data packets | |
US5794069A (en) | Information handling system using default status conditions for transfer of data blocks | |
US20050165938A1 (en) | Method, system, and program for managing shared resources | |
US20030061414A1 (en) | Controlling data flow between processor systems | |
US9137167B2 (en) | Host ethernet adapter frame forwarding | |
US20040111537A1 (en) | Method, system, and program for processing operations | |
CN117312202B (zh) | 片上系统和用于片上系统的数据传输方法 | |
US8769164B2 (en) | Methods and apparatus for allocating bandwidth for a network processor | |
US7769922B2 (en) | Processing system streaming data handling system and stream register | |
EP1195685B1 (en) | A process for interfacing a microprocessor with a packet based device and respective system | |
CN115622958A (zh) | 一种zynq系统及虚拟mac实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061002 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080703 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090925 |