Comments
Description
Transcript
USB と DDP 間のデータ転送の実装
平成 19 年度 学士学位論文 USB と DDP 間のデータ転送の実装 Implementation Data Transfer between USB and DDP 1080379 田内 一吏 指導教員 酒居 敬一 2008 年 3 月 7 日 高知工科大学 情報システム工学科 要 旨 USB と DDP 間のデータ転送の実装 田内 一吏 近年、プロセッサは音楽、ビデオ、画像のよう大量のマルチメデ ィアデータを処理に使用 されている。プロセッサは解決策として並列処理を採用する傾向にある。データ駆動型プロ セッサ (DDP) は並列処理に適したプロセッサであり、データフローで実行するため大量の 演算命令を並行に処理が可能である。これらの特徴はマルチメディア処理に適している。 現在研究室にある実験評価ボード には DDP が実装されている。 PC と評価ボード 間の データ転送は現在シリアルポートが実装されている。しかし 、シリアルポートではマルチメ ディアデータを転送する際に時間がかかってしまう問題がある。評価ボードは DDP のほか に USB コントローラ、MCU が搭載されている。本研究では USB 通信はシリアルポート 通信より高速なため、USB を解決方法として採用した。USB プロトコル処理は MCU に実 装さているが 、USB コントローラと DDP 間が実装さていない。従って 、本研究の目的は USB コントローラと DDP 間のデータ転送の実装である。DMA は CPU を必要としないた め、本研究では DMA 転送を採用した。 本稿では USB コントローラと DDP 間のデータ転送の実装を述べ、動作確認と性能評価 を示す。 キーワード データ駆動型プロセッサ、DMA 、USB コントローラ –i– Abstract Implementation Data Transfer between USB and DDP Kazushi Tanouchi Recently, the processor is used to process a large amount of the multimedia data such as a sound, a video and an image. The processor tend to adopt parallel processing as a way of the solution. The data-driven processor(DDP) is a processor which is suitable for parallel processing, and DDP can concurrently treat a large amount of operation at a time because DDP is executed by the data-flow. This characteristics are suitable for the multimedia data processing. There is an evaluation board of DDP in the laboratory now. It is implement a serial port as data path between a PC and the evaluation board now. However, the serial port have a problem which it takes long time when it transfer multimedia data. The evaluation board has USB controller and MCU besides DDP. This study have adopted USB as a way of solution, because the USB communication is faster than the serial port communication. A data transfer between USB controller and DDP is not implemented. Although USB protocol processing is implemented in MCU. Therefor, the purpose of this study is to implement a data path between USB controller and DDP. This study adopt DMA transfer as data transfer, because DMA need no CPU processing power. This paper describes the implementation data transfer between USB controller and DDP, and show operation check and performance evaluation. key words data-driven processor, DMA, USB controller – ii – 目次 第1章 序論 1 第2章 実験評価ボード とデータ転送 4 2.1 諸言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 別研究との連動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 実験評価ボード USB-DDMP . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3.1 DDP(データ駆動型プロセッサ) . . . . . . . . . . . . . . . . . . . . 7 2.3.2 自己同期回路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3.3 インタフェース . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 USB と DDP 間のデータ転送方式 . . . . . . . . . . . . . . . . . . . . . . 12 2.4.1 プログラム転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4.2 DMA 転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4.3 バスマスタ DMA 転送 . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4.4 USB コントローラ . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4.5 本研究でのデータ転送 . . . . . . . . . . . . . . . . . . . . . . . . . 14 結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 USB 通信のアーキテクチャとプロト コル処理 16 3.1 諸言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2 USB 通信のアーキテクチャ . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3 USB の転送モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3.1 コントロール転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.2 バルク転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.3 インタラプト転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4 2.5 第3章 – iii – 目次 アイソクロナス転送 . . . . . . . . . . . . . . . . . . . . . . . . . . 19 結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 DDP と USB 間のデータ転送の実装と評価 20 4.1 諸言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 設計の全体像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 USB コントローラと DDP 間のデータ転送 . . . . . . . . . . . . . . . . . 21 4.3.1 EP 設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3.2 DDP への書き込み . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3.3 DDP への読み込み . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3.4 実装環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.4.1 動作確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.4.2 性能評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.5 考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.6 結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 まとめ 30 3.3.4 3.4 第4章 4.4 第5章 謝辞 32 参考文献 33 – iv – 図目次 2.1 別研究と複合された全体図 . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 実験評価ボード USB-DDMP . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 実験評価ボード USB-DDMP の概略図 . . . . . . . . . . . . . . . . . . . . 6 2.4 データ駆動方式の原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 パケットのデータ形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 DDP の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.7 ナノ PE の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.8 自己タイミング型データ転送機構の構造 . . . . . . . . . . . . . . . . . . . 10 2.9 DDP の全体図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.10 USB コントローラと DDP 間のデータ転送 . . . . . . . . . . . . . . . . . . 14 3.1 コンフィグレ イション完了前 . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2 コンフィグレ イション完了後 . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.1 全体的なデータの流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 DDP への書き込み時のシーケンス図 . . . . . . . . . . . . . . . . . . . . . 22 4.3 DDP への読み込み時のシーケンス図 . . . . . . . . . . . . . . . . . . . . . 24 4.4 実装環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.5 コンフィグレーションの動作確認 . . . . . . . . . . . . . . . . . . . . . . . 26 4.6 データ転送の動作確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 二値化処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.8 モノトーン処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.9 プログラム転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.10 DMA 転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.6 4.7 –v– 表目次 2.1 DDP と USB 間のデータ転送方法 . . . . . . . . . . . . . . . . . . . . . . 12 3.1 USB の転送モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.1 EP 設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 – vi – 第1章 序論 近年、演算量の増大や処理の複雑化により、画像をはじめとするマルチメディア処理が大 規模化している。マルチメディア処理を行うプロセッサは、現在ではノイマン型アーキテク チャが採用されている場合が多い。一方、ノイマン型以外のプロセッサも提案されており、そ の中でも原理的に自然な並列処理方式を実現可能なデータ駆動型プロセッサ (Data-Driven Processor, DDP) がある [1]。これは 、ノイマン型プロセッサにおけるプログラムカウンタ を用いる機構ではなく、パケット 形式のデータに依存した待ち合わせ機構によって動作す る [2]。この動作原理によって 、高速化や低消費電力のような処理の効率化を図ることがで きる。特に、画像や音声などのマルチメディア処理の高速化が期待でき、画像処理専用プロ セッサのような形で一部商用化もされている [3]。そこで 、本研究では DDP の利点を活か し 、有効活用できるシステムの構築を目指す。 マルチメディア処理は、複雑な処理を要求するため、あらゆる処理に柔軟に対応できなけ ればいけない。DDP は並列処理により複雑な処理に特化しているが 、ノイマン型から制御 することで柔軟に対応することができる。そのためには 、DDP を使い易い環境の整備が必 要であり、そのための DDP 利用手段機能化が考えられる。その方法の一つとして、ライブ ラリをインタフェースに用いる方法がある [4]。ライブラリとすることによって 、以下のよ うな利点を持つ。 • ハード ウェアとして意識せずに DDP のリソースを利用可能 • 内部処理抽象化によるアプリケーション開発効率化 これらの利点から、ホストコンピュータ上で DDP をソフトウェアコプロセッサとして容易 –1– にアプリケーション開発が可能となる。従って、ホストコンピュータ上のアプリケーション が DDP のライブラリ機能として割り当てられている関数を用いることでコンピュータから の DDP の利用を目指す。そして 、本研究では DDP を利用するための根幹部分を実装し 、 DDP を有効利用できることの確認と利用方法の確立を目的とする。最終的なシステムとし て、関連研究 [5, 6] との連携により、ホストコンピュータから容易にデータ駆動型プロセッ サ上で画像処理を行うテストベンチを構築する。 現在 、研究室では DDP の一種であるデ ータ駆動型マルチ メデ ィアプ ロセッサ (Data- Driven Multimedia Processor, DDMP) について研究を行っている [4, 7, 8]。研究にはそ の評価ボードである USB-DDMP ボード を実験器材として使用しているが 、現状では DDP を有効利用する方法が未実装な段階である。その問題点を解消するために必要となる実装に は以下のようなものがある。 i) DDP を利用するためのホストコンピュータ上のアプリケーション ii) USB-DDMP ボードに対する DDP 利用のための制御ソフトウェア iii) USB-DDMP ボード 上の制御ファームウェア この中で 、本研究では iii) を担当する。USB-DDMP ボード には DDP のほかに USB コン トローラや MCU が搭載されている。現状ではホストコンピュータと USB-DDMP ボード 間のデータ転送はシリアルポートを採用しているが 、画像や動画像の転送が考えられること から時間がかかってしまう問題がある。従って、ホストコンピュータと評価ボード 間のデー タ転送はより高速な転送が可能な USB 通信を採用し 、USB 接続によるホストコンピュータ 上のアプ リケーションから USB-DDMP ボード にある DDP 操作を目指す。さらにシリア ルポートのようなポイントツーポイントとは異なり、USB はツリー構造を持っていること から USB-DDMP ボード を USB 接続による複数ある周辺デバイスの一つとして、PC に提 供することができる [9]。 DDP に対する演算要求内容の作成や USB-DDMP ボードに対するデータ転送は別研究で 実装され 、本研究では USB-DDMP ボード 側の USB コントローラと DDP 間のデータ転送 を実装する。 –2– 本章では研究の背景と目的について述べた。本稿は 、本章を含めて 5 章から構成される。 第 2 章では、DDMP 並びに USB-DDMP ボードに関して概説を行う。第 3 章では、現状の USB-DDMP ボード のデータ転送における問題点を挙げ、本研究での解決手法について説明 する。第 4 章では、本研究で実装するデータ転送インタフェースについて具体的な説明を行 う。第 5 章では、本研究の全体をまとめ、本研究の発展として今後解決されるべき課題につ いて考察する。 –3– 第2章 実験評価ボード とデータ転送 2.1 諸言 本章では本研究での目的を述べた後、研究室にある実験評価ボード USB-DDMP の構成 を述べた上で、USB コントローラと DDP 間のデータ転送方式を示す。 2.2 別研究との連動 別研究と複合させることにより USB 接続によるホストコンピュータのアプ リケーション から実験評価ボード USB-DDMP に搭載されている DDP を操作可能にすることを目指し 、 本研究では USB と DDP 間のデータ転送の実装をする。別研究と複合された全体図を図 2.1 に示す。 図 2.1 別研究と複合された全体図 –4– 2.3 実験評価ボード USB-DDMP 別研究でアプリケーション [6] 、インタフェースとデバイスド ライバの実装 [5] を担当して いる。アプリケーションにより DDP に対しての演算内容 (プログラムソース、データ) を作 成され 、インタフェースで対評価ボード 用データに変換し 、デバイスド ライバが評価ボード へデータ転送する。そして評価ボード 内で受信したデータを DDP へ転送を行い、演算結果 をアプリケーションに返すことでアプ リケーションからの DDP 操作を可能にする。本研究 では実験評価ボード USB-DDMP 側の実装となる 2.3 実験評価ボード USB-DDMP 実験評価ボード USB-DDMP を図 2.2 に示す。 図 2.2 実験評価ボード USB-DDMP 実験評価ボード USB-DDMP は DDP を活用したシステムの構築やアーキテクチャの研 究を行うためのボード である。本研究では主に実験評価ボード USB-DDMP を用いて実験 –5– 2.3 実験評価ボード USB-DDMP を行う。 USB コントローラは TD243 、ISP1761 の二つが実装されており、両者の違いはサポート している転送速度と DACK 信号の有無にある。ISP1761 が DACK 信号を持ち転送速度も 一段階速い High speed を一つ多くサポートしている。なお、TD234 の USB プロトコル処 理は MCU に実装済みだが 、ISP1761 は実装されていない。MCU にはほかに DMAC やモ ニタープログラム処理が実装されている。そのため、実験評価ボード USB-DDMP 内での 処理は MCU が管理する形をとっており、SR232C を介して MCU から各チップへのデータ 転送や初期化を行うことができる。FPGA では接続されたチップ 間の中継を設定すること ができる。実験評価ボード USB-DDMP の概略図を図 2.3 に示す。 図 2.3 実験評価ボード USB-DDMP の概略図 このように実験評価ボード USB-DDMP はホストコンピュータから DDP に対する実験 評価を行えるようになっている。 –6– 2.3 実験評価ボード USB-DDMP 2.3.1 DDP(データ駆動型プロセッサ) DDP はデータ駆動方式で処理を行う自己同期回路を持ったプロセッサである。データに タグを付加したものをパケットと呼び 、DDP ではこのパケットを元に演算処理が行われる。 パケットを用いたデータ駆動型方式の原理を図 2.4 に示す。また、パケットの形式は図 2.5 に示す。各ノードが演算処理機能でトークンはパケットとなり、(a) がトークンの動作内容 を、(b) には各ノード における演算内容を示している。データ駆動型方式はノード にトーク ンが到達することによって処理される。この時複数のトークンが演算対象となるが 、各ノー ドでの演算対象の識別にはタグが使用される。タグ内にある世代番号が同じパケット同士が 各ノードでの演算対象となり、演算処理後はまた次のノードにパケットが転送され 、再度タ グに基づき演算される。このようにプログラムカウンタやレジスタを使用することなくパ ケットを用いることで局所的な処理を行うことができ、省電力を実現している。 図 2.4 データ駆動方式の原理 –7– 2.3 実験評価ボード USB-DDMP 図 2.5 パケットのデータ形式 DDP を構成するマルチプロセッサシステムを図 2.6 に示す。 各ナノ PE の内部は 5 つのモジュールにわかれており、図 2.7 に示す。各モジュールの内 容を次の通りである。 • Matching Memory タグの一致するパケットが二つ到着すると一つのパケットにまとめ 、Functional Pro- cessing Unit に転送する。 • Functional Processing Unit Matching Memory で一つにまとめられたパケットに格納されている演算命令に従って 処理を行う。 • Cache Program Storage 処理が行われたパケットに対し 、次の命令とノード の行き先をパケットのタグに上書き する。 • Flow Merging Module パイプラインの結合と、Matching Memory へのパケット転送を行う。 • Flow Diverting Module パイプラインの分岐と次の目的地へのパケットの転送を行う。 –8– 2.3 実験評価ボード USB-DDMP 図 2.6 DDP の構成 図 2.7 ナノ PE の構成 –9– 2.3 実験評価ボード USB-DDMP 2.3.2 自己同期回路 DDP の自己同期回路はデータを一時的に保存するデータラッチを用いて、C 素子により データ転送を制御している。このような自己タイミング型データ転送機構の構造を図 2.8 に 示す。 図 2.8 自己タイミング型データ転送機構の構造 DL 、C 素子を合わせてステージと呼び 、ステージ間のデータ転送を C 素子によるシェー クハンドにより行われている。そして、パケットの流れは次の通りである。 1. C 素子 C2 は 、C1 からの Send1 信号と C3 からの Ack2 信号を共に受けた場合に限っ て、自分のステージの DL のゲートを開放する。 2. DL2 のゲートが開放したと同時に、DL1 のパケットは DL2 への転送が完了する。 3. C2 は、C1 に Ack1 信号を、C3 に Send2 信号を送る。 さらに DDP はパケットの衝突により、過負荷状態に陥ってもデータ転送速度を自立的に調 整する緩衝動作をとることができる。 – 10 – 2.3 実験評価ボード USB-DDMP 2.3.3 インタフェース DDP のインタフェースを含んだ全体の概略図を図 2.9 に示す。 図 2.9 DDP の全体図 DDP のインタフェースには Host I/F, Packet I/F, SDRAM I/F が実装されおり、各イ ンタフェースからパケットの読み書きが行われる。転送されたパケットは Mega-Engins 内 で処理され 、処理結果となるパケットがいずれかのインタフェースに転送される。Host I/F は CPU 、Packet I/F は別の DDP, SDRAM I/F は SDRAM に接続することを目的とし て実装されており、USB-DDMP ボード 上では Host I/F は MCU 、Packet I/F は FPGA 、 SDRAM I/F は SDRAM に接続している。これらの I/F を介して USB コントローラとの データ転送を行う。 FPGA には Packet I/F に対するパケットの読み書き機能を備えた Packet Queue(PQ) が実装されている。 PQ はほかにキューイング機能やタグ付与機能といった独自の機能が実 装されている。 – 11 – 2.4 USB と DDP 間のデータ転送方式 2.4 USB と DDP 間のデータ転送方式 USB-DDMP ボード 上で可能な DDP と USB コントローラ間のデータ転送方式を表 2.1 に示す。 表 2.1 2.4.1 DDP と USB 間のデータ転送方法 転送方法 ホスト 要求元 速度 プログラム転送 MCU MCU 低 DMA 転送 DMAC MCU 中 DMA 転送 DMAC FPGA 中 DMA 転送 DMAC USB(ISP1761 のみ) 中 バスマスタ DMA 転送 FPGA USB(ISP1761 のみ) 高 バスマスタ DMA 転送 FPGA FPGA 高 プログラム転送 MCU 内の CPU による mov 命令でのデータ転送。もっとも低速なデータ転送である。 2.4.2 DMA 転送 MCU 内には DMAC が実装されており、DMAC に対して仕様と目的にそって設定した 後に転送要求を出すことで DMA 転送で開始され 、CPU を介さずに行われるデータ転送。 そのため、プログラム転送とは異なり転送元、転送先の情報をあらかじめ設定されるため、 高速な転送が可能である。 – 12 – 2.4 USB と DDP 間のデータ転送方式 2.4.3 バスマスタ DMA 転送 バスマスタ DMA 転送は別デバイスが MCU からバス権を取得することで DMA 転送を 行う方式、FPGA に実装することで使用することができ、FPGA 内にある PQ を用いるこ とで DDP へのパケット転送を可能とする。また、FPGA がバスマスタとなるため、USB プロトコル処理を実装する必要がある。 2.4.4 USB コント ローラ USB コントローラには TD243 、ISP1761 の二つがあり、両者の違いはサポートしてい る転送速度と DACK 信号の有無にある。TD243 は hight speed/low speed を ISP1761 は full speed/hight speed/low speed と DACK 信号をサポートしている。TD243 は MCU に すでに USB プロトコル処理が実装済みであるが 、ISP1761 は実装されていない。MCU 内 に実装されている USB プロトコル処理は C 言語で約 1500 行、アセンブ リ言語で約 1200 行近くのプログラム構成となっている。アセンブ リ言語は USB コントローラ内にあるメモ リー操作や割込み処理のようなスピード が要求される処理に対して用いている。 TD243 の USB プロトコル処理を例にしても、ISP1761 の USB プロトコル処理の実装は容易ではな いことが考えられる。さらに仕様の違いから同様の実装とは異なる実装方法となってくる。 また、別研究で活用しているデバイスド ライバーは TD243 との通信を想定した実装となっ ているため、新たに ISP1761 に対する通信を可能とするデバイスド ライバーを実装する必 要があり、カーネル空間での 1000 行近いプログラム実装が想定される。さらに DACK 信 号は DMAC に転送要求を出すために必要な信号であるが 、世に出ているほとんどのデバイ スが DACK 信号を持っているとは言えない。これらのことから 、本研究では DACK 信号 をサポートしていない TD243 を採用し 、汎用性のある実装を目指す。 – 13 – 2.4 USB と DDP 間のデータ転送方式 2.4.5 本研究でのデータ転送 USB コントローラと DDP 間のデータ転送は USB プロトコル処理を介して実装する必要 があるが。別研究で実装されるアプリケーションでは画像処理を行うために設計されている が 、将来的には Web カメラを使用して取得した画像や動画像に対して画像処理を行うため、 速度が要求されている。そのため、データ転送はプログラム転送より高速とされる DMA 転 送が適していると考えられる。また、DMA 転送やバスマスタ転送のような CPU 以外がホ ストとなるデータ転送を行うことで CPU を USB プロトコル処理に専念させ、負担を減ら すことができる。候補としては MCU 内にある DMAC と FPGA によるバスマスタ DMA 転送の実装がある。バスマスタ DMA 転送の方がより高速なデータ転送が可能であるが 、限 られた配線の中で FPGA に対する要求信号やプロトコル処理を実装するのは困難であるた め、本研究では DMAC による DMA 転送を採用する。また、PQ では実装を行うことが困 難なため転送を行うことを優先するためホスト インタフェースを使用する。 本研究では MCU 内にある DMAC をホストとして USB コントローラと DDP 間のデー タ転送を行う。また、USB コントローラと DDP 間のデータ転送を図 2.10 に示す。 図 2.10 USB コントローラと DDP 間のデータ転送 – 14 – 2.5 結言 2.5 結言 本章では研究室にある実験評価ボード USB-DDMP の構成を述べた上で 、本研究で採用 したデータ転送方式を述べた。次章では USB 通信のアーキテクチャとプロトコル処理につ いて述べる。 – 15 – 第3章 USB 通信のアーキテクチャとプロ ト コル処理 3.1 諸言 本章では基本的な USB 通信のアーキテクチャを述べた上でデータ転送実装に必要な USB の転送モード と各モード のプロトコルを述べる。 3.2 USB 通信のアーキテクチャ 本研究では USB 接続において PC 側がホスト、ボード 側がターゲットとなる。そのため すべての通信の制御は PC が制御する形になる。USB 通信は物理レベル、システムレベル、 アプリケーションレベルの三段階のレベルにわけることができる [10]。 • 物理レベル 実際のケーブル接続時に行われ 、使う側からは物理的な通信に知らなくても USB を使 うことが可能になる。 • システムレベル 物理レベルの通信終了後に開始され 、ホストとデバイス間にデフォルトパイプという通 信の論理接続を用意する。このパイプをコントロール転送と呼び 、各種の設定制御を行 うための通信に使用される。そして、コントロール転送を用いてコンフィギュレーショ ンを行い 、ターゲットの設定情報をホストとターゲット 間でやりとりする。この時に – 16 – 3.2 USB 通信のアーキテクチャ ターゲットの転送モード やパイプの本数などの設定情報をホストはターゲットから得る ことができ、それを元に通信を行う。コンフィグレ イション前のホストとターゲットの 状態を図 3.1 に示す。EP(エンドポイント ) は USB コントローラ内にあるバッファを指 し 、EP に対して USB パケットを送受信することでホストとターゲットで通信を行う。 また、複数存在し 、各パイプにごとに割り当てられており、EP0 はコントロール転送と 決められているが 、それ以降の EP は設定可能である。 • アプリケーションレベル システムレベルの通信終了後に開始され 、論理的な通信路パイプを必要に応じて複数設 定することができる。このパイプを使った通信はホストから転送する OUT とデバイス 側から転送する IN のど ちらか一方方向だけの通信となり、複数の USB 転送モード に 割り振られ使用される。 USB 通信はホスト中心のため、ホストへの入力を IN 、ホスト からの出力を OUT と定義することができる。一方、コントロール転送を行うデフォル トパイプでは双方向通信が可能となっている。コンフィグレ イション完了後のホストと ターゲットの状態を図 3.2 に示す。 図 3.1 コンフィグレ イション完了前 – 17 – 3.3 USB の転送モード 図 3.2 コンフィグレ イション完了後 3.3 USB の転送モード USB の転送モード を表 3.1 に示す。ど のパイプをど の転送モード に使うかの情報はター ゲット側が保持しており、コンフィグレーションによりホストは取得できる。USB を接続し た時にホストはその情報を元に USB 通信を行う。転送モード にはコントロール転送、バル ク転送、インタラプト転送、アイソクロナス転送がある。 表 3.1 USB の転送モード 転送モード 転送速度 転送周期 データ量 再送 コントロール転送 1.5Mbps 不定 8 Byte あり バルク転送 12Mbps 不定 8/16/32/64 Byte あり インタラプト転送 1.5Mbps Nmsec(N=1∼255) 8 Byte あり アイソクロナス転送 12Mbps 1ms/フレーム 1∼1023 Byte なし – 18 – 3.4 結言 3.3.1 コント ロール転送 コントロール転送は半二重通信が可能な双方向通信パイプを使用する。用途はセットアッ プ、設定パラメータ転送に使用される。 3.3.2 バルク転送 バルク転送は片方通信となり、ターゲット間とハンドシェークで制御することでデータ転 送を行う。ACK なら転送可能な状態、NAK ならターゲットが受信できない状態、さらに ターゲット側が動作不能な状態なら STALL を返信する。NAK を返信した場合は再度同じ USB パケットを送信する。用途は大容量データの転送に使用される。 3.3.3 インタラプト 転送 バルク転送と同じハンドシェークによる制御でデータ転送を行う。バルク転送の相違点と しては一度に送受信するデータ量が少ない点と任意のタイミングで送受信することが可能で ある点がある。用途は計測やマンマシン機器のデータ転送に使用される。 3.3.4 アイソクロナス転送 アイソクロナス転送はエラーがあっても良いので、一定時間以内に一定の量のデータを送 受信する転送である。用途は音声などのリアルタイムな転送に使用される。 3.4 結言 本章では USB コントローラが採用している USB 通信のアーキテクチャを述べることで データ転送方法と過程を示した。また、各転送モード のプロトコル処理を述べた。次章では これらをふまえた上でのデータ転送の設計を述べる。 – 19 – 第4章 DDP と USB 間のデータ転送の実 装と評価 4.1 諸言 本章ではまず全体像を述べた後に USB 通信を述べ 、前章で述べた本研究での採用した データ転送方法の設計方法を述べる。また、実装の評価を述べる。 4.2 設計の全体像 全体のデータ流れを図 4.1 に示す。 図 4.1 全体的なデータの流れ – 20 – 4.3 USB コントローラと DDP 間のデータ転送 図 4.1 の上部が実験評価ボード USB-DDMP 、下部がホストコンピュータとなる。 USB 通信において PC がホスト、USB-DDMP ボードがターゲットとなる。DDP へのデータ転 送の流れはホストコンピュータで DDP パケットを作成し 、次に USB 通信により DDP パ ケットを USB パケットとして USB-DDMP ボード 側の USB コントローラ内の EP に転 送、次に DDP パケットを USB-DDMP ボード 側の USB コントローラから DMAC によ る DMA 転送で DDP へ転送され 、DDP パケットを元に演算、となる。また、DDP から ホストコンピュータに対してのデータ転送の流れは逆となり、データ転送の際に用いられる DDP パケットと USB パケットはサイズ、内容ともに同等として扱う。 本研究では USB コントローラと DDP 間の DMAC による DMA 転送を実装する。必要 となる実装は本研究で使用する EP の設定、DMAC への設定と USB パケットを受信した 際に出す DMA 転送要求 (DDP へのパケット書き込みと読み込み) となる。 4.3 4.3.1 USB コント ローラと DDP 間のデータ転送 EP 設定 本研究では EP0 、EP4 、EP5 を使用する。EP0 はコンフィグレ ーションやほか EP の セットアップ (DMAC のコントロールレジスタなど の初期化) に使用、EP4 は DDP への パケット書き込み (OUT パイプ ) に 、EP5 は DDP への演算処理結果パケットの読み込み (IN パイプ ) に用いる。EP を用いるには転送の向きが OUT(PC → USB-DDMP ボード ) か IN(USB-DDMP ボード → PC) 、USB パケットサイズ、転送モード を選択する必要があ る。DDP が用いる DDP パケットは 16Byte のため、USB パケットも 16Byte とする。転 送モード は一度に 16Byte の大きさを的確に転送する必要があるため 、ハンド シェークを 用いて一度に大量なデータ転送が可能なバルク転送を採用した。本研究では EP4 、EP5 は OUT/IN バルク転送として使用する。EP4 が受信した USB パケットをそのまま DDP へ 転送し演算開始、演算結果となる DDP パケットを DDP から EP5 へ転送、となる。本研究 のデータ転送実装用の EP 設定を表 4.1 に示す。 – 21 – 4.3 USB コントローラと DDP 間のデータ転送 表 4.1 EP 設定 EP 転送モード データ量 用途 EP0(IN/OUT) コントロール転送 8 Byte コンフィグレーション (EP4 と EP5 の設定情報取得) セットアップ (DMAC 初期化) EP4(OUT) バルク転送 16 Byte ホストコンピュータからの DDP への書き込みに使用 EP5(IN) バルク転送 16 Byte ホストコンピュータからの DDP への読み込みに使用 4.3.2 DDP への書き込み DDP への書き込み時のシーケンス図を図 4.2 に示す。 図 4.2 DDP への書き込み時のシーケンス図 まず、OUT バルク転送により PC からパケットが転送され EP4 にパケットが格納され – 22 – 4.3 USB コントローラと DDP 間のデータ転送 る。次に MCU に割り込みをかけ、MCU が DMAC に対し て転送要求を出す。そし て 、 DMA 転送により USB コントローラから DDP へパケットが転送され 、パケットに沿って 演算が開始される。また、EP4 の中身が空になると PC から次のパケットが転送される。な お、EP 内にパケットが存在する場合は EP 内のパケットが空になるまで PC を行う。 4.3.3 DDP への読み込み DDP への読み込みではいつ DDP が演算を終了したか 、を確認する必要があるためポー リングを行う必要がある。本研究ではホストとなる PC から IN パケットが転送される度に DDP 内に演算処理結果となるパケットの有無の確認を行うことで DDP からパケットを読 み込む。 DDP への読み込み時のシーケンス図を図 4.3 に示す。PC からの IN パケットから始ま り、EP5 内にパケットがあれば ACK を返し 、USB コントローラから PC へと EP5 内の パケットが転送される。この時、EP5 内が空になった時、新たにパケットを格納するために USB コントローラは MCU に対して割り込みをかける。MCU は DDP 内に演算処理結果 となるパケットの有無を確認する。演算結果があれば 、DMAC に DDP から EP5 へのデー タ転送要求を行う。演算結果がなければ 、EP5 には空のパケットを転送する。ホストはパ ケットを読み込んだ際、演算結果であるか空のパケットであるかを判別し 、演算結果となる パケットを取得する。データ読み取らせることで CPU に対して割込みを発生させることが でき、再度演算結果を確認することができる。また、無ければ空のパケットを、有れば演算 結果を転送することでポーリングをおこなっている。 なお、PC では空のデータを受信した時は演算結果として格納はしない。また、EP5 の初 期値は空のデータが格納されている。 – 23 – 4.3 USB コントローラと DDP 間のデータ転送 図 4.3 4.3.4 DDP への読み込み時のシーケンス図 実装環境 本研究では実験評価ボード USB-DDMP 、PC 、USB プロトコルアナライザ、モニター プログラムを用いて実装した。それらの実験環境を図 4.4 に示す。USB 通信において実験 評価ボード USB-DDMP をターゲット、PC がホストとなる。USB プロトコルアナライザ は USB プロトコル処理中に送受信される USB パケットのデータ内容を確認することがで きる。 – 24 – 4.4 評価 図 4.4 4.4 4.4.1 実装環境 評価 動作確認 DMAC の動作、コンフィグレーション動作、データ転送の動作と別研究との全体動作の 確認をした。これにより EP の設定情報を取得し 、それを元に USB 通信を行い 、さらに DDP への演算処理を行わせ処理結果が正常に返ってくるかがわかる。 • DMAC の動作確認 MCU に実装されているモニタープログラムを使用して転送内容を画面表示されること で確認した。 – 25 – 4.4 評価 • コンフィグレーションの動作確認 ホストコンピュータが EP の設定情報を取得するために行うコンフィグレーションを USB プロトコルアナライザを用いて確認した。図 4.5 に動作確認結果を示す。赤枠で囲 んだトランザクションが使用する EP4 、EP5 の設定情報が含まれたパケットである。 図 4.5 コンフィグレーションの動作確認 • データ転送の動作確認 データ転送の動作確認として USB プロトコルアナライザを用いた DDP への読み書き 込みの確認をした。また、ホストコンピュータ側は OUT や IN バルク転送を行うだけ の簡単なプログラムを使用する。図 4.6 に動作確認結果を示す。 – 26 – 4.4 評価 図 4.6 データ転送の動作確認 • 別研究との全体動作確認 ホストコンピュータと実験評価ボード USB-DDMP を USB 接続した後、DDP へ演算 処理をさせ、期待する処理結果が返すかで判断した。別研究で設計したアプリケーショ ンでの動作確認が全体の動作確認となり、図 4.7 と図 4.8 にそれを示す。図 4.7 が二値 化処理、図 4.8 がモノトーン処理を DDP に要求し 、得た演算結果である。 図 4.7 二値化処理 図 4.8 モノトーン処理 – 27 – 4.4 評価 4.4.2 性能評価 本研究では DMA 転送の性能評価として、DDP に対してのデータ転送をプログラム転送 と DMA 転送で行うことで速度測定し 比較した。評価方法はデジタルストレージオシロス コープを用いて、アドレス線、チップセレクト、ライトストローブの三つの信号線を観測す ることで測定した。アドレ ス線が DDP の書き込み先レジスタのアドレ スの一部を示す信 号、チップセレクトが転送先のチップに送る信号、ライトストローブが書き込む際に送信さ れる信号である。これらの信号が同時に送信にされることは 1 回の書き込みを意味し 、波形 の幅を測定することで速度を計ることができる。 プログラム転送の速度測定結果を図 4.9 に 、DMA 転送の速度測定結果を図 4.10 に示す。 4 回の書き込み速度の場合、プログラム転送が 376ns 、DMA 転送が 298ns となったことか ら DMA 転送の方が高速であることがわかった。 図 4.9 プログラム転送 – 28 – 4.5 考察 図 4.10 DMA 転送 4.5 考察 動作確認により USB と DDP 間のデータ転送として DMA 転送を実装できたことを示し 、 性能評価により DMA 転送の有効性を示した。しかし 、DMA 転送要求を行う度に DMAC の設定を行う必要があり、オーバーヘッドが生じてしまう問題がある。解決策としてはより 高速な転送を可能にするバスマスタ DMA 転送の実装が最も効果的な解決策だと考えられ る。さらにホストコンピュータと DDP 間のデータ転送時間を減らすためには USB 通信の 転送速度向上を計るため 、full speed による USB 通信が可能な ISP1761 の実装が考えら れる。 4.6 結言 前章で述べた USB 通信のアーキテクチャとプロトコル処理を踏まえて、DDP と USB コ ントローラ間のデータ転送の実装と評価を述べた。従って本研究での実装が完成した。 – 29 – 第5章 まとめ 本研究ではマルチメディアデータのような大量のデータを処理することに適した並列処理 をアーキテクチャレベルで可能とする DDP を着目した。本研究では研究室の実験評価ボー ド USB-DDMP に実装されている DDP を PC 上のアプ リケーションから利用可能にする ため、PC と実験評価ボード USB-DDMP 間のデータ通信を目指した。使用用途としては データフローアーキテクチャに対する動画像や画像処理のアルゴ リズムの検証実験が挙げら れるため、現状で使用されているシリアルポートより高速な USB 通信によるデータ転送を 採用した。PC 側では別研究で実装されるため、本研究では USB-DDMP ボード 側を担当 した。 実験評価ボード USB-DDMP には TD243 、ISP1761 の二つの USB コントローラがあ り、DACK 信号を使用しない汎用性のある実装を目指すため TD243 を採用した。TD243 は USB プロトコル処理が MCU に実装済みである。実装内容としては実験評価ボード 上の MCU に USB プロトコル処理を専念させ、USB と DDP 間のデータ転送は別のデバイスが ホストとなる DMA 転送を採用した。CPU への負担を減らすことで効率的なデータ転送が 可能になり、転送速度の高速化が期待できるためである。 USB 通信でのデータ転送は一度に大量のデータ転送が可能なバルク転送を採用し 、USB パケットと DDP パケットを同等の扱いとして転送を行った。EP は EP4 を DDP への書き 込み時に、EP5 を DDP への読み込み時に使用した。 DDP の演算結果の有無を毎回確認す る必要があるため、読み込みはポーリングを行っている。PC 側は別研究で実装されたイン タフェースと本研究で実装したデータ転送を複合させることで 、PC から DDP に対して演 算処理をさせ、結果が得られるかの動作確認を行なった。そして、期待通りの結果を得られ – 30 – た。これにより、実験評価ボード USB-DDMP が PC をホストとした複数ある USB 接続 による周辺デバイスの一つとして利用可能となり、USB 通信を活用した PC 上でのアプ リ ケーションから DDP に演算処理を行うことができるようになった。 今後の課題としてさらなる高速化を視野に入れた実装が挙げられる。性能評価によりプ ログ ラム転送より DMA 転送が 有効であることを示し たが 、動作時の 1 パケット 転送お きに DMAC の設定の更新が必要であるため 、その部分がオーバーヘッド となる問題があ る。解決策として更新のコード 量を減らすための設計や FPGA 内により高速なバスマスタ DMA の実装がある。また、PC と実験評価ボード USB-DDMP 間の転送速度向上を狙った ISP1761 の実装がある。 – 31 – 謝辞 本研究のみならず、多岐に渡りご指導くださった酒居敬一助教に深く感謝致します。そし て、本研究を遂行するにあたり、副査をご担当いただきました岩田誠教授と高田喜朗助教に 深く感謝致します。 本研究の基礎であるデータ駆動型アーキテクチャを提唱された寺田浩詔教授に深く感謝致 します。 酒居研究室において日頃から多くの御助言、御支援を頂いた大学院修士課程の小糸啓介 氏に心から感謝致します。また、関連研究として助言や協力をいただいた酒居研究室学部 4 回生の高橋浩太朗 氏と渡辺直貴 氏に深く感謝致します。 日頃から暖かいご 支援、ご 協力を頂きました学部 4 回生 高橋格之進 氏、柴田淳一郎 氏、 大崎史裕 氏、田所光平 氏に感謝致します。 最後に 、日頃から暖かいご 支援、ご 協力を頂きました学部 3 回生 川又悠 氏、柴田昌典 氏、西尾花織 氏、宮元裕樹 氏に感謝致します。 – 32 – 参考文献 [1] H. Terada, S. Miyata, M. Iwata, “DDMP’s: Self-Timed Super-Pipelined DataDriven Multimedia Processors,” Proc.of IEEEi Vol.87, 1999. [2] 岡本 俊弥, データ駆動型メディアプロセッサ, 会誌「情報処理」 Vol.39 No.2, 1998. [3] 弓場 敏嗣・山口 喜教 共著, データ駆動型並列計算機, オーム社, 1993. [4] K. Takahashi, K. Koito and K. Sakai “A Design of Device Driver which Emulate Data-Driven Processor as Library Function,” NEINE’07, 432-433, Sep.2007. [5] 高橋 浩太朗, “USB-DDMP ボードに対するデータ転送インタフェースの実装,” 高知工 科大学 情報システム工学科 学士学位論文, 2008(掲載予定). [6] 渡辺 直貴, “画像処理のためのクライアント側ソフトウェアの設計と実装,” 高知工科大 学 情報システム工学科 学士学位論文, 2008(掲載予定). [7] N. Watanabe, K. Koito and K. Sakai “Design and Implementation of Client Software for Image Data Processing,” NEINE’07 , 434-435, Sep.2007. [8] K. Tanouchi, K. Koito and K. Sakai “A data path design DDP and USB,” NEINE’07 , 436-437, Sep.2007. [9] ジャン・アクセルソン , USB コンプ リート 第 3 版-USB2.0 を含むカスタム USB デバ イス開発のすべて , インサイト インターナショナル 訳, エスアイビー・アクセス, 2006. [10] 後閑 哲也, ” 電子工作の実験室 USB 通信プログラミングテクニック,” http://www.picfun.com/usbframe.html, (2008 年 2 月 5 日). – 33 –