JP3993893B2 - バスを介したデータ転送及びバス管理に用いるアプリケーションプログラミングインターフェイス - Google Patents
バスを介したデータ転送及びバス管理に用いるアプリケーションプログラミングインターフェイス Download PDFInfo
- Publication number
- JP3993893B2 JP3993893B2 JP52789497A JP52789497A JP3993893B2 JP 3993893 B2 JP3993893 B2 JP 3993893B2 JP 52789497 A JP52789497 A JP 52789497A JP 52789497 A JP52789497 A JP 52789497A JP 3993893 B2 JP3993893 B2 JP 3993893B2
- Authority
- JP
- Japan
- Prior art keywords
- application
- buffer
- data transfer
- bus
- data
- 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.)
- Expired - Lifetime
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/10—Program control for peripheral devices
-
- 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/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40052—High-speed IEEE 1394 serial bus
- H04L12/40058—Isochronous transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40052—High-speed IEEE 1394 serial bus
- H04L12/40065—Bandwidth and channel allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40052—High-speed IEEE 1394 serial bus
- H04L12/40123—Interconnection of computers and peripherals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9031—Wraparound memory, e.g. overrun or underrun detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
- Communication Control (AREA)
Description
本発明は、バスを介してデータ転送を行うためのアプリケーションプログラミングインタフェースに関する。より詳しくは、本発明は、非同期データ転送及びアイソクロナスデータ転送のいずれにも対応するバスを介したデータ転送におけるバス管理及びデータ転送の制御に関する。
背景技術
1995年6月16日に作成されたIEEE1394規格「P1394高性能シリアルバスのための規格」ドラフト8.01vl(The IEEE 1394 standard,"P1394 Standard For A High Performance Serial Bus,"Draft 8.01vl,June 16,1995)は、非同期データ転送及びアイソクロナスデータ転送をサポートし、比較的安価に高速シリアルバスアーキテクチャを実現した国際規格である。アイソクロナスデータ転送は、リアルタイムデータ転送の一種であり、このアイソクロナスデータ転送では、送信側アプリケーションと受信側アプリケーションとにおいて、特定のデータの転送間隔が等しい。アイソクロナスデータ転送においては、各パケットは、それぞれ固有の周期で転送される。アイソクロナスデータ転送の理想的なアプリケーションとしては、例えばビデオ記録装置とテレビジョン受信機がある。ビデオ記録装置は、映像と音声を記録し、記録したデータを個別の塊、すなわちパケットに分割する。そして、ビデオ記録装置は、映像と音声の各パケットを一定の周期で送信し、テレビジョン受信機において映像と音声が再生される。IEEE1394規格に準拠したバスアーキテクチャにより、マルチチャンネルによるアプリケーション間のアイソクロナスデータ転送が実現される。これによれば、データと共に6ビットのチャンネル番号が報知され、このチャンネル番号に基づいて適切なアプリケーションがパケットを受信することを保証している。また、マルチチャンネルにより、バスを介して複数のアプリケーションが同時にアイソクロナスデータを送受信することができる。非同期データ転送は、比較的古くから用いられているデータ転送方式であり、非同期データ転送では、できるだけ速く、可能な限り多くのデータが送信側から受信側に転送される。
IEEE1394規格は、デジタル装置を汎用入出力接続により相互接続する高速シリアルバスを提供するものである。IEEE1394規格は、デジタルインタフェースを規定しており、これにより、アプリケーションは、デジタルデータをアナログデータに変換する必要がなく、バスを介してデータをデジタルフォーマットのまま送信することができる。したがって、受信側のアプリケーションが受信するデータは、アナログデータではなく、デジタルデータであり、受信側のアプリケーションでは、アナログデータをデジタルデータに変換する手間が省かれる。IEEE1394規格で要求されているケーブルは、このようなデジタル装置間の接続に用いられている他の太いケーブルに比べて、かなり細い。また、IEEE1394バスが動作中であっても、新たな装置をバスに接続したり、切り離したりすることができる。バスに新たな装置が接続され、あるいは切り離された場合には、IEEE1394バスは、現ノード間でデータの送受信ができるように、自動的にバス環境を再設定する。ノードは、バスにおいて固有のアドレスを有する論理的なエンティティとみなされる。各ノードは、識別ROMと、制御レジスタの標準セットと、ノード自身のアドレス空間とを有している。
IEEE1394規格で規定されているプロトコルを図1に示す。このプロトコルは、シリアルバス管理ブロック10と、このシリアルバス管理ブロック10にそれぞれ接続されたトランザクションレイヤ12と、リンクレイヤ14と、物理レイヤ16とを有する。物理レイヤ16は、装置又はアプリケーションとIEEE1394ケーブルとを電気的且つ機械的に接続する。さらに、物理レイヤ16は、アービトレーション機能を有し、IEEE1394バスに接続されている全ての装置が実際にデータの送信及び受信を行うアクセス経路を有することを保証する。リンクレイヤ14は、非同期データ転送及びアイソクロナスデータ転送の両方に対応したパケットの配信を行う。リンクレイヤ14は、確認応答プロトコル(acknowledgement protocol)を用いて、非同期データ転送をサポートし、さらに、ジャストインタイムデータ配信(just-in-time data delivery)を行うリアルタイム帯域保証プロトコル(real-time guaran teed bandwidth protocol)を用いて、アイソクロナスデータ転送をサポートしている。トランザクションレイヤ12は、読出、書込及びロックを含む非同期データ転送を行うために必要なコマンドをサポートしている。シリアルバス管理ブロック10は、アイソクロナスデータ転送動作を管理するアイソクロナスリソースマネージャを備えている。さらに、シリアルバス管理ブロック10は、アービトレーションのタイミングを最適化し、バス上の全ての装置に供給される電力が適切な値となるような調整を行い、サイクルマスタの割当を行い、アイソクロナスチャンネル及び帯域リソースの割当を行い、及びエラーの基本通知を行うことにより、シリアルバス全体の環境を制御する。
IEEE1394規格のシリアルバスを用いるアプリケーションのアプリケーションプログラミングインタフェース(API)は、スキップストーン社(Skipstone)によって開発されており、アプリケーションは、このAPIを用いてIEEE1394バスをデータ転送バスとして用いることができる。スキップストーン社のAPIについては、アメリカ合衆国テキサス州78759オースチン#425ウェストブレーカーレーン3925のスキップストーン社(Skipstone,Inc.,3925 West Braker Lane,#425,Austin,Texas 78759)から入手可能な説明書「シリアルソフトIEEE1394開発ツールキット」("The SerialSoft IEEE 1394 Developer Toolkit")に記載されている。スキップストーン社は、このAPIを、IEEE1394バス上の装置に書き込むデータ及びから読み出すデータを管理するアプリケーションによって用いられるプログラミングコールの集まりと定義している。アイソクロナスデータ転送を初期化するためには、何回かの非同期データ転送が必要とされ、これにより、アプリケーションを設定し、データの転送に用いられる特定のチャンネルを決定することができる。チャンネルが一旦決定されると、送信側のアプリケーションは、バッファを用いてデータを一時的に記憶した後、送信し、受信側のアプリケーションは、バッファを用いてデータを一時的に記憶した後、処理する。送信側のアプリケーションにおいて、スキップストーン社のAPIは、データの送信を能動的に管理する。すなわち、このAPIは、適切な周期で、適切なバッファの適切な部分からデータをバスに送信する。受信側のアプリケーションにおいて、スキップストーン社のAPIは、データの受信を能動的に管理する。すなわち、APIは、適切な周期で、バスからデータを受信し、適切なバッファの適切な部分にデータを一時的に記憶した後、データを処理する。
非同期データ転送においては、スキップストーン社のAPIは、データ転送を行うのに必要なトランザクションを能動的に管理する。非同期入力書込トランザクションが行われている間、アプリケーションは、1394バスのアドレス空間の適切な領域にマッピングされたバッファをAPIに提供する。非同期入力書込トランザクションがAPIに到着すると、それらのデータがバッファに書き込まれる。非同期入力読出トランザクションが行われている間、アプリケーションは、バッファに有用な情報が格納されていることを確認しなければならない。そして、1394バスドライバは、非同期入力読出トランザクションが到着すると、バッファの要求されたアドレスからデータを読み出す。非同期入力書込トランザクション及び読出トランザクションの両方において、スキップストーン社のAPIは、必要なトランザクションを能動的に生成し、管理する。例えば、データブロックをアプリケーションに転送するとき、そのデータ量が複数のトランザクションを必要とする場合、スキップストーン社のAPIは、アプリケーションに、データブロックの転送を行うのに必要な複数の1394トランザクションのそれぞれを記述させる。この処理は、非同期データ転送動作中のAPIがデータを落とさないように注意するだけではなく、アプリケーションのプロセッサにとって大きなオーバヘッドとなる。
スキップストーン社のAPIは、同様な手法によりアイソクロナスデータ転送をサポートしている。具体的には、アプリケーションは、スキップストーン社のAPIに対して各アイソクロナスデータのパケットを記述しなくてはならない。そして、スキップストーン社のAPIは、各パケットを適切な周期で送信する。このような処理は、アプリケーションのプロセッサのオーバヘッドが増え、このために、アプリケーションは、アイソクロナスデータを効率的に処理することができない。
そこで、API及びアプリケーションのプロセッサによる監視を必要とすることなく、データ転送を行うのに必要なトランザクションを自動的に生成するAPIの実現が望まれている。また、アプリケーションの要求に従ってハードウェアを高度に自動化でき、IEEE1394規格に準拠したバスにおけるアイソクロナスデータ転送を効率的に行うAPIの実現が望まれている。
発明の開示
本発明は、アプリケーションとバス間の非同期データ転送及びアイソクロナスデータ転送を実行及び管理するアプリケーションプログラミングインタフェース(API)を提供する。APIは、非同期データ転送において、1つ以上の非同期データ転送トランザクションを用いて、アプリケーション内の1つ以上のローカルバッファとバス上の様々なアドレスとの間において、あらゆる量のデータを転送する能力を有する。自動トランザクション発生器は、直接的なプロセッサの制御又はAPIによる監視を必要とすることなく、非同期データ転送動作を行うのに必要なトランザクションを自動的に生成する。また、APIは、アプリケーションとバス上の他のノードとの間で、専用チャンネルを介してアイソクロナスデータ転送を行う機能を有する。アイソクロナスデータ転送においては、アプリケーションから提供されるデータバッファの記述子のリンクリストを管理するバッファ管理方式が用いられる。バッファ記述子のリンクリストは、アイソクロナスデータの連続したストリームの流れが途切れないことを保証するために、APIによって維持される。このバッファ記述子のリンクリストは、例えばバッファの循環リストとして構成され、リンクリスト内の次のバッファに対するフォワードポインタと、リンクリスト内の前のバッファに対するバックワードポインタとを含んでいる。また、バッファ記述子のリンクリストを線形リストとして構成してもよく、この場合、アプリケーションは、いつでもリンクリストに新規のバッファを追加したり、リンクリストから既存のバッファを削除したりすることができる。アイソクロナスデータ転送におてい、APIは、データストリーム中に再同期イベントを挿入し、アプリケーションとデータ転送動作の所定の時点とを再同期させることができる。また、リンクリスト内の各バッファは、データ転送の所定の時点でアプリケーションを呼び出すコールバックルーチンを有する。
【図面の簡単な説明】
図1は、IEEE1394規格で規定されるプロトコルを説明する図である。
図2は、バスを備えるシステム内のアプリケーションプログラミングインタフェースを示すブロック図である。
図3は、ビデオカメラ50と、ビデオカセットレコーダ52と、コンピュータ54と、それらを接続するI/Oバス56、58とを備えるシステムを示す図である。
図4は、本発明のアプリケーションプログラミングインタフェースを実現する各システム内に設けられたハードウェア装置のブロック図である。
図5は、アプリケーションによりAPI20に割り当てられたバッファに対応するバッファ記述子のリンクリストを示す図である。
図6は、APIバッファのアイソクロナスデータ送受信動作を示すフローチャートである。
発明を実施するための好ましい実施の形態
図3に示すシステムは、ビデオカメラ50と、ビデオカセットレコーダ52と、コンピュータ54と、それぞれの装置を接続する入出力(I/O)バス56、58とを備えている。I/Oバス56は、ビデオカメラ50とビデオカセットレコーダ52を接続し、これにより、ビデオカメラ50からビデオカセットレコーダ52にデータを送信し、記録することができる。I/Oバス58は、ビデオカセットレコーダ52とコンピュータ54を接続し、これにより、ビデオカセットレコーダ52からコンピュータ54にデータを送信し、このデータに基づく映像を表示させる。
本発明を適用したアプリケーションプログラミングインタフェース(API)は、ビデオカメラ50、ビデオカセットレコーダ52及びコンピュータ54等の相互に接続されたサブシステムのうちのいずれか又は全てに実装されており、APIは、I/Oバス56、58を介して行われるデータ転送動作を制御する。本発明の好ましい実施の形態では、I/Oバス56、58にはIEEE1394規格に準拠したケーブルを用いている。
各サブシステムに設けられた、本発明を適用したAPIを実現するハードウェア装置のブロック図を、図4に示す。図4に示すハードウェア装置において、プリント回路基板60には、ユーザインタフェース70が接続されている。このプリント回路基板60には、中央処理装置(CPU)62が実装されており、このCPU62には、システムバス68を介して、システムメモリ64と、I/Oバスインタフェース66とが接続されている。システムバス68は、ユーザインタフェース70にも接続されている。ユーザインタフェース70は、特定のサブシステムであり、ユーザと情報のやりとりを行うための、例えばキーボードやディスプレイ、他の入出力機器からなる。
図3に示すビデオカメラ50、ビデオカセットレコーダ52、コンピュータ54の各サブシステムは、本発明のAPIを実現するために、例えば図4に示すようなハードウェア装置を備える。各サブシステム内のCPU62は、アプリケーションプログラムのインストラクションを実行する。そして、本発明のAPIは、I/Oバス56、58を介して、そのAPIが存在するサブシステムと他のサブシステム間のアイソクロナスデータ転送及び非同期データ転送動作を管理する。
本発明を適用したAPIは、バスを介したアプリケーションへの及びからのアイソクロナスデータ転送と非同期データ転送を実行する。ここで用いられるアプリケーションを、以下ではアプリケーション又はデバイスドライバと呼ぶ。データ転送動作が行われるバスとしては、例えばIEEE1394規格に準拠したバスが適している。なお、当業者にとって明らかなように、本発明に係るAPIは、他の種類のバス上でのデータ転送の管理にも用いることができる。このAPIは、1つ以上の非同期テータ転送トランザクションを用いて、アプリケーションによって提供されるローカルバッファとバス上の様々なアドレスとの間において、あらゆる量のデータを転送する能力を有する。データブロックの非同期転送が開始されると、APIは、自動トランザクション発生器にコマンドを送る。そして、自動トランザクション発生器は、直接的なプロセッサの制御又はAPIによる監視を必要とすることなく、完全なデータブロックを非同期転送するのに必要な書込又は読出トランザクションを自動的に生成する。
また、APIは、アプリケーションとバス上の他のノードとの間で、専用チャンネルを介してアイソクロナスデータ転送を行う機能を有する。アイソクロナスデータ転送においては、アプリケーション内のデータバッファを管理するバッファ管理方式が用いられる。アプリケーションは、転送するデータの種類及びデータ量に応じて、1つのバッファ、2つ以上のバッファ、あるいはバッファのリンクリストを用いる。バッファを指示するバッファ記述子のリンクリストは、アイソクロナスデータの連続したストリームの流れが途切れないことを保証するために、APIによって維持される。このバッファ記述子のリンクリストは、バッファの線形又は循環リストとして実現できるとともに、各バッファについて、リンクリスト内の次のバッファの記述子を指示するフォワードポインタと、リンクリスト内の前のバッファの記述子を指示するバックワードポインタとを含んでいる。リンクリストが線形リストのときは、アプリケーションは、処理するデータに応じて、動的に、新たなバッファをリンクリストに追加し、又はリンクリストから既存のバッファを削除することができる。
アイソクロナスデータ転送においては、本発明を適用したAPIは、データ内の所定の位置で再同期が行えるようにする再同期イベントを、データストリーム中に挿入する。また、このAPIは、データ転送動作中の所定の時点でアプリケーションを呼び出す各バッファ用のコールバックルーチンを提供する。再同期イベント及びコールバックルーチンは、共にIEEE1394規格でサポートされているものである。
また、本発明を適用したAPIは、必要に応じて、バス上でバス管理動作を実行する機能を有する。このようなバス管理動作には、アイソクロナスチャンネル番号の割当及びその解除、及び必要に応じて行われるアイソクロナスデータ転送用の帯域幅の割当及びその解除が含まれる。バスがIEEE1394規格のバスである場合、APIは、また、IEEE1394規格で定められている他のバス管理動作を実行する。
本発明を適用したAPIとバスとを備えるシステムを図2に示す。API20は、アプリケーション22、24とバス28間のインタフェースとして機能し、アプリケーション22、24とバス28間のデータ転送動作を管理する。図2に示すように、1つのAPI20は、複数のアプリケーションとバス28間のインタフェースとして機能することができる。例えば、図3に示すコンピュータ54においては、1つのAPI20は、コンピュータ54で実行される1つ以上のアプリケーション間のインタフェースとして機能することができる。
API20とバス28間には、ハードウェア及び物理的インタフェース26が設けられている。ハードウェア及び物理的インタフェース26は、アプリケーション22、24の1つとバス28上の他のノード間の非同期データ転送を行うのに必要なトランザクションを自動的に生成する自動トランザクション発生器38を備える。また、ハードウェア及び物理的インタフェース26は、バス28への及びからのデータの流れを監視及び管理するバスインタフェース40を備えいている。ハードウェア及び物理的インタフェース26は、API20によって制御され、1組のメモリバッファ30に接続されている。1組のメモリバッファ30は、複数のメモリバッファ32、34、36を備えている。メモリバッファ32、34、36は、後述するように、アプリケーション22への及びからのアイソクロナスデータ転送を維持するために、アプリケーション22により、API20に専用とされている。
アイソクロナスデータ転送
アプリケーションは、アイソクロナスデータ転送動作を初期化するために、最初に、API20にアイソクロナスチャンネルを要求する。このとき、アプリケーションは、特定のチャンネル番号又は利用可能なチャンネル番号のどちらかを要求することができる。そして、API20は、要求毎に、IEEE1394規格のアイソクロナスデータ転送のためのチャンネルを獲得する。IEEE1394規格は、6ビットのチャンネル番号をサポートしており、このチャンネル番号は、バス28全体に対してデータストリームとして報知される。アプリケーションとバス28上の他のノード間に、一旦アイソクロナスデータ転送のチャンネルが割り当てられると、他のノードは、その特定のチャンネル番号を使用することができない。そして、チャンネルが割り当てられた後は、アプリケーションは、データ転送用のメモリバッファをAPI20に割り当てなければならない。アプリケーションは、アイソクロナスデータの受信又は送信に用いられる1つのメモリバッファ、2つ以上のメモリバッファ、あるいはメモリバッファのリンクリストをAPI20に割り当てることができる。API20に割り当てられるメモリバッファは、連続的なものでも断片的なものでもよく、及び論理的なものでも物理的なものでもよい。メモリバッファのリンクリストは、循環的なものでも、線形的なものでもよい。API20に割り当てられたメモリバッファのリンクリストが線形的なものである場合、アプリケーション22は、処理するデータに応じて、新たなメモリバッファをリンクリストに追加し、又はリンクリストから既存のメモリバッファを削除することができる。
図2に示すシステムでは、アプリケーション22は、アイソクロナスデータ転送のために、3つのメモリバッファ32、34、36からなる1組のメモリバッファ30をAPI20に割り当てている。また、アプリケーション22は、各メモリバッファ32、34、36のそれぞれに1つの合計3つのバッファ記述子のリンクリストをAPI20に割り当てている。API20は、リンクリスト内の各メモリバッファに対する記述子を維持し、アプリケーション22と、割り当てられたメモリバッファ32、34、36と、バス28との間のアイソクロナスデータの流れを管理する。API20によって維持されているリンクリスト内においては、各メモリバッファは、バッファ記述子によって表され、リンクリストは、リンクリスト内における次のメモリバッファの記述子に対するフォワードポインタと、リンクリスト内における前のメモリバッファの記述子に対するバックワードポインタとを含んでいる。API20に割り当てられたメモリバッファに対応するバッファ記述子のリンクリストを図5に示す。バッファ記述子1〜nは、それぞれメモリバッファ1〜nに対応している。具体的には、バッファ記述子80は、メモリバッファ84に対応し、バッファ記述子82は、メモリバッファ86に対応している。
各バッファ記述子は、対応するメモリバッファのアドレス及び長さを含んでいる。また、バッファ記述子は、メモリバッファが一杯又は空になった後、現在のデータ転送動作の方向に従って呼び出すコールバック完了ルーチンを含んでいる。さらに、バッファ記述子は、オプションの同期イベントを含んでおり、この同期イベントは、メモリバッファがどのように特定のイベント又は時刻に同期されるかを、アプリケーションによってプログラムされるものである。具体的には、メモリバッファ84に対応するバッファ記述子80は、メモリバッファ84のアドレス80a及びバッファ長80bを含んでいる。また、バッファ記述子80は、必要に応じて、完了ルーチン80c及び同期イベント80dを含んでいる。
バッファ記述子及びメモリバッファを上述のように用いることにより、バッファ記述子、メモリバッファ、完了ルーチン及び同期イベントの全ては、アプリケーションによって、その特定の要求に従って設定されるので、本発明のAPIを用いたアプリケーションは、高い柔軟性を得ることができる。例えば、デジタルビデオカメラ内で実行され、デジタルビデオモニタにアイソクロナスデータを転送するアプリケーションでは、データがメモリバッファにロードされ、それに対して、APIは、バッファ記述子を維持する。そして、APIは、メモリバッファからビデオモニタに対するデータの各パケットの転送動作を管理する。ビデオカメラは、1対のバッファ記述子が同一のメモリバッファを指示するようにすることにより、垂直方向において2倍の圧縮を行うことができる。すなわち、記述子1、2がメモリバッファ1を指示し、記述子3、4がメモリバッファ2を指示するようにする。各対の第2の記述子内の完了ルーチンは、ビデオモニタに、メモリバッファからデータを読み出す準備ができたことを通知する。これは、ビデオカメラが第1及び第2の走査線のデータを出力するとき、第2の走査線のデータは、メモリバッファ内の第1の走査線のデータを上書きすることを意味する。ビデオモニタは、第2の走査線のデータが書き込まれるまで、メモリバッファからデータを読み出さないので、ビデオモニタには第1の走査線は決して表示されない。このように、走査線が1つ置きに飛び越される。
バッファ記述子のリンクリストは、循環的なものとすることができ、これにより、メモリバッファ32、34、36への又はからのデータの連続した流れが維持される。アプリケーション22からバス28を介した他のノードへのアイソクロナスデータ転送では、アプリケーション22は、メモリバッファ32、34、36を順番に、データで満たす。そして、API20は、適切なメモリバッファからバス28への適切な周期のデータ転送動作を管理する。ハードウェア及び物理的インタフェース26内のバスインタフェース40は、メモリバッファ32、34、36からバス28へのデータ転送を制御する。他のノードからバス28を介したアプリケーション22へのアイソクロナスデータ転送では、API20は、バス28からバスインタフェース40を介した適切なメモリバッファ32、34、36へのデータ転送動作を管理する。割り当てられたメモリバッファが一杯になると、データは、リンクリスト内の次のメモリバッファに記憶される。そして、アプリケーション22は、メモリバッファ32、34、36のうちの適切な1つからデータを適切な周期で読み出す。アプリケーション22が一旦1つのメモリバッファからのデータの読出を終了すると、そのメモリバッファは、API20に戻され、アプリケーション22は、次のメモリバッファからのデータの読出を開始する。
また、バッファ記述子のリンクリストは、線形的なものとすることができ、この場合、アプリケーションは、データ転送動作に応じて、API20に対するメモリバッファの割当及び解除を行う。例えば、アイソクロナスデータの受信では、アプリケーションは、各メモリバッファの処理を終了すると、更なるデータを受信させるために、それらをAPI20に再び割り当てることができる。また、データ転送動作を行うために、更なるメモリバッファが必要な場合、アプリケーションは、API20に更なるメモリバッファを割り当てることができる。
API20は、アイソクロナスデータ転送においては、アプリケーション22の要求に応じて、再同期イベント及び/又はコールバックルーチンを実行する。再同期イベントにより、アプリケーションは、転送中のデータ内の所定の位置に再同期される。データは、アイソクロナス的に転送されるので、この再同期イベントは、また、アプリケーションを、関連するデータの流れにおける適切な時点に同期させる。再同期イベントを実行する理想的な例としては、例えばビデオデータの転送がある。例えば、ビデオレコーダ等のアプリケーションからビデオデータを転送する場合、データは、モニタ又はテレビジョン受信機の画面の1本の水平走査線を表すブロックとして転送される。モニタは、各水平走査線を表示した後は、次の水平走査線を表示するために、それ自身をリセットしなければならない。モニタは、各水平走査線の最後のデータの位置で再同期イベントを用いることにより、それ自身を、次の水平走査線のデータの開始位置に同期させることができる。
本発明に係るAPIの好ましい実施の形態では、特定のバス時間、すなわち、アイソクロナスデータのブロックのヘッダに特定の値が現れたとき、あるいは、バスの特定のチャンネルに、動作を開始するアイソクロナスデータ又は動作を停止するアイソクロナスデータが現れたとき、アイソクロナスデータ転送動作は、同期が取られ、又は直ちに実行されるようにスケジュールされる。
API20に割り当てられた各メモリバッファは、再同期イベント及びコールバックルーチンを有する。コールバックルーチンは、ビデオデータの転送において、1フレームを表すデータブロックの転送の最後で用いることができる。モニタ又はテレビジョン受信機は、複数の水平走査線を1つのフレームにグループ化し、画面の最上部から次のフレームの表示が開始するように、各フレームの最後においてそれ自身をリセットする。コールバックルーチンは、各フレームを表すデータストリームの最後で用いられる。このような方式により、バス28に接続されたソース機器からのビデオフレームを表すデータを、メモリバッファに記憶することができる。ビデオフレームを表すデータを転送した後、コールバックルーチンを用いて、処理のための次のフレームを表すデータが転送されてくることを、アプリケーションに通知することができる。そして、アプリケーションは、次のフレームを表すデータが次のメモリバッファに記憶されている間に、現フレームのデータを処理することができる。
アイソクロナスデータの送信及び受信動作におけるAPI20及びメモリバッファの処理のフローチャートを図6に示す。ステップ102において、アイソクロナスデータの受信動作が開始され、アプリケーションは、バッファ記述子、完了ルーチンの呼出及び同期イベントを設定する。フローチャート100のステップ102において、バスシステムで処理を必要とする各アイソクロナスデータのストリームが入力される。API20は、入力データを処理するために現在の記述子を追跡し続ける。換言すると、API20は、次のメモリバッファのポインタ、及び次のメモリバッファ内のデータを記憶することができる位置を維持する。
ステップ104において、次のバッファ記述子が、リンクリストから取得される。ステップ106において、リンクリスト内に、更なるバッファ記述子が存在するか否かが判定される。リンクリストに更なるバッファ記述子が存在しない場合、ステップ108において処理は停止される。更なるバッファ記述子が存在する場合、処理は、ステップ112に進み、現在のメモリバッファに対する同期イベントが到着されるまで待機する。同期イベントが一旦到着すると、ステップ114において、受信動作の場合には、入力データがメモリバッファに記憶され、あるいは送信動作の場合には、メモリバッファからのデータが送信される。メモリバッファの処理が終了すると、ステップ116において、このメモリバッファにコールバックルーチンが含まれているか否かが判定される。コールバックルーチンが含まれている場合、ステップ118において、コールバックルーチンが呼び出される。一方、コールバックルーチンが含まれていない場合、処理は、ステップ104に戻り、次の記述子が取得される。コールバックルーチンの有無に関わらず、API20及びハードウェア及び物理的インタフェース26により、次のバッファ記述子が得られることが保証され、アイソクロナスデータは失われない。
フローチャート100に示す各ステップは、CPU及び関連したサブシステム、例えば図3及び図4を用いて説明した典型的なパーソナルコンピュータ、組込プロセッサ装置等において実行することができる。ここで説明したフローチャート100の各ステップは、あらゆる適切なプログラミング言語、例えば、C、PASCAL、FORTRAN、BASIC、アセンブラ言語等、あるいはそれらの言語の組合せで実現することができる。上述したステップを実現するソフトウェア設計において、あらゆる適切なコンピュータプログラミング技術、例えば、手続又はオブジェクト指向プログラミング、並列又は分散処理、割込駆動又はポーリングイベント処理等を用いることができる。フローチャート100に示すステップは、この明細書及び特許請求の範囲に記載している方法及び装置の要件を満たす範囲内で、変更、追加又は削除することができる。また、1つのステップ内の処理を2つの以上のステップに分割することができる。また、実施の形態によっては、2以上のステップを同時に行うこともでき、あるいは各ステップのタスクをインターリーブすることもできる。さらに、各ステップの順序又はルーチンを変更することもできる。すなわち、フローチャート100は、本発明の実施の形態における機能を実現するためのロジックの一例に過ぎない。
説明の便宜上、フローチャートにおける連続したステップを単一の「ルーチン」又はプログラムと呼んでいるが、各ステップを複数のルーチン、複数のプログラム、あるいは複数の処理等によって実現することができる。また、フローチャートの各ステップは、同じ又は異なる装置内の複数のプロセスで分散して実行することができる。
アイソクロナスデータ転送動作の一具体例において、アプリケーション22が、バス28に接続されたノードにおけるビデオレコーダからアイソクロナスデータを受信するビデオモニタ(以下、ビデオモニタ22ともいう。)である場合、API20は、バス28から、リンクリスト内のバッファ記述子によって表されるメモリバッファ32、34、36へのデータの流れを管理する。1番目のメモリバッファ32に、ビデオカメラから受信されるデータが記憶される。1番目のメモリバッファ32が一杯になると、そのデータは、リンクリスト内の次のメモリバッファ34にデータが記憶されている間に、処理されて、ビデオモニタ22で表示される。1番目のメモリバッファ32に記憶された1フレーム分のデータの最後にコールバックルーチンが存在する場合、このコールバックルーチンを用いて、1番目のメモリバッファ32に記憶されている1番目のフレームを表すデータが処理可能なことを、ビデオモニタ22に通知することができる。ビデオモニタ22が1番目のメモリバッファ32内のデータの処理を終了すると、ビデオモニタ22は、バス28から受信される更なるデータを記憶させるために、メモリバッファ32をAPI20に戻す。
アプリケーション22が、バス28に接続された他のノードにデータを送信するビデオレコーダである場合、アプリケーション22は、メモリバッファ32、34、36に順次データを記憶する。そして、API20は、メモリバッファ32、34、36からのデータが適切なチャンネル及び適切な時刻にバス28上に送信されるように管理する。以上のように、本発明を適用したAPI20は、アプリケーション22への又はからのアイソクロナスデータ転送動作を管理する。
非同期データ転送
アプリケーション24とバス28上の他のノード間で非同期データ転送を行うために、API20は、基本的に、ダイレクトメモリアクセス(DMA)モデルを設定し、ハードウェアレベルの自動化を用いて、転送に必要な要求を自動的に生成し、アプリケーション24及びAPI20は、データ転送動作が行われている間、他の機能を実行することができる。API20は、非同期データ転送のためのメモリマッピングされたインタフェースを、アプリケーションに提供する。非同期データ転送を開始するために、アプリケーション24は、アプリケーションのアドレス空間内におけるメモリバッファのアドレスと、バス28のアドレス空間における転送が開始されるスタートアドレスと、転送されるデータブロックの長さと、転送が読出又は書込動作かを示すコードとを含む記述子を、API20に送る。API20は、必要なデータを自動トランザクション発生器38に供給し、そして、自動トランザクション発生器38は、バス28を介して全てのデータブロックの転送を行うのに必要な1つ以上のトランザクションを生成する。そして、自動トランザクション発生器38は、アプリケーション24に割り当てられたメモリバッファとバス28上の適切なアドレスとの間のデータ転送を行うのに必要な読出又は書込トランザクションを生成する。この自動化により、API20及びアプリケーション24は、非同期データ転送を監視することを必要としない。本発明の好ましい実施の形態においては、自動トランザクション発生器38は、ハードウェアによって実現されているが、当業者にとって、自動トランザクション発生器38をAPI20内のソフトウェアでも実現できることは明らかである。アプリケーション24が、このハードウェアレベルの自動化を必要としない場合、API20は、また、自動トランザクション38を用いることなく、データ転送動作を行うのに必要なトランザクションを生成することができる。
当業者には明らかなように、各読出又は書込トランザクションでは、バス28の方式及び能力に基づいたあるデータ量しか転送することができない。したがって、データブロックを転送するには、複数の読出又は書込トランザクションが必要となる。従来のシステムとは対照的に、API20は、単一のコマンドを自動トランザクション発生器38に送る。そして、自動トランザクション発生器38は、API20にこれ以上の処理を要求することなく、バス28上でデータブロックを転送するのに必要な読出又は書込トランザクションを生成する。これにより、API20とアプリケーション24は、転送が行われている間、他のタスクを実行することができ、システムをより効率的にすることができる。この実施の形態では、非同期データ転送であるので、データブロック全体の転送が一旦終了すると、API20は、それをアプリケーション24に通知する。
上述したように、本発明の好ましい実施の形態では、バス28は、IEEE1394規格のバスである。したがって、非同期データ転送では、バス28は、64ビットのアドレス空間を提供する。自動トランザクション発生器38に供給される記述子内において、データ転送が開始される相手のアドレスは、64ビットのスタートアドレスで特定される。
非同期読出動作を開始するために、アプリケーション24は、アプリケーションのアドレス空間内のそこにデータが転送されるメモリバッファのアドレスと、バス28のアドレス空間のそこからデータが読み出される64ビットのスタートアドレスと、転送されるデータブロックの長さと、転送が読出動作であることを示すコードとを含む記述子を、API20に送る。そして、API20は、必要な情報を自動トランザクション発生器38に供給する。そして、自動トランザクション発生器38は、バス28上の適切なノードからアプリケーションのバッファにデータを転送するのに必要な読出コマンドを生成する。アプリケーション24は、読出トランザクションが生成される前に、指定されたメモリバッファが利用可能であることを保証しなければならない。そして、データが、自動トランザクション発生器38により生成されたトランザクションに応じて、周知の方法で読み出される。
非同期書込動作を開始するために、アプリケーション24は、アプリケーションのアドレス空間内のそこからデータが転送されるメモリバッファのアドレスと、バス28のアドレス空間のそこにデータが書き込まれる64ビットのスタートアドレスと、転送されるデータブロックの長さと、転送が書込動作であることを示すコードとを含む記述子をAPI20に送る。そして、API20は、必要な情報を自動トランザクション発生器38に供給する。そして、自動トランザクション発生器38は、アプリケーションのメモリバッファからバス28上の適切なノードにデータを転送するのに必要な書込コマンドを生成する。そして、データが、自動トランザクション発生器38により生成されたトランザクションに応じて、アプリケーションのメモリバッファから送信される。メモリバッファからデータが送信されるとき、アプリケーション24は、それが通知される。
APIの規約及びバス管理動作
アプリケーションは、API20内のルーチンを同期的又は非同期的に呼び出す。アプリケーションがルーチンを同期的に呼び出す場合、ルーチンがアプリケーションに戻されるときに、API20は、要求された動作を完了しているか、そうでない場合は、要求された動作を完了できなかったことを示す完了状態を返す。一方、アプリケーションがルーチンを非同期的に呼び出す場合、ルーチンが制御をクライアントに返す時点では、要求された動作は完了していない可能性が高い。アプリケーションは、ルーチンを非同期的に呼び出すために、完了コールバックルーチンを有している。API20は、元の呼出から返る前に、この完了コールバックルーチンを呼び出すことができる。しかしながら、多くの場合、API20は、動作を開始させた元の呼出から返る前に、要求された動作を完了し、そして、動作が完了したことを示すアプリケーションの完了コールバックルーチンを呼び出す。
APIによって提供される機能を用いる前に、アプリケーションは、最初にAPIを初期化する必要がある。各アプリケーションは、別々にAPIを初期化しなければならない。例えば、あるアプリケーションは、ActivateSonyAPIルーチンを呼び出すことによって、APIを初期化する。このActivateSonyAPIルーチンにより、APIとアプリケーション間の接続が確立される。ActivateSonyAPIルーチンの呼出においては、アプリケーションは、バスのリセット又は他のバスイベントが発生したときにAPIが呼び出す指示ルーチン(indication routine)を指定する。ActivateSonyAPIルーチンは、アプリケーションがその後のAPIのルーチンの呼出に用いる値を、アプリケーションに返す。
その動作中に多数の指示を行うアプリケーションは、専用に使用する追加の指示バッファをAPIに渡すために、AddIndBuffersルーチンを呼び出すことができる。クライアントは、APIが現在有するバッファの数を確認するために、まず、CountIndBuffersルーチンを呼び出すことができる。アプリケーションは、APIを終了する前に、RelIndBuffersルーチンを呼び出して、APIに与えている指示バッファを解放することができる。
アプリケーションは、APIの使用を終わると、DeactiveateSonyAPIルーチンを呼び出す。このDeactiveateSonyAPIルーチンにより、アプリケーションとAPI間の接続が切断され、全ての指示バッファ及びAPIがアプリケーションに代わって用いていた全てのリソースが解放される。なお、アプリケーションのバッファの一部が現在APIによって使用されている場合は、所定のアプリケーションからAPIを直ちに解放できない場合もある。所定のアプリケーションに対してAPIが動作している間は、そのアプリケーションは、APIが備える全ての機能を使用することができる。
アプリケーションは、APIを初期化した後、IEEE1394規格書第8節に規定されている、及び以下に説明するIEEE1394規格の様々なバス管理機能を動作させることができる。アプリケーションは、MGMTAllocateChannelルーチン及びMGMTDeAllocateChannelルーチンをそれぞれ用いて、現在動作中のアイソクロナスリソースマネージャからアイソクロナスチャンネル番号を割り当てる及び解除することができる。これらのルーチンを用いて、アプリケーションは、利用可能であれば、特定のチャンネル番号の割当を要求することができる。あるいは、アプリケーションは、現在利用可能なチャンネル番号の割当を要求することができる。これらのAPIルーチンは、アイソクロナスデータのチャンネルの割当及び解除に関して、IEEE1394規格の規定に準拠している。アイソクロナスチャンネル番号を用いるとき、アプリケーションは、IEEE1394規格の規定又は他の準拠(governing)プロトコル書に適用できる他の規定に従わなければならない。
アプリケーションは、MGMTAllocateBandwidthルーチン及びMGMTDeAllocateBandwidthルーチンをそれぞれ用いて、現在動作中のアイソクロナスリソースマネージャからアイソクロナス帯域を割り当てる及び解除することができる。これらのルーチンは、アイソクロナス帯域の割当及び割当の解除に関して、IEEE1394規格に規定に準拠している。これらのルーチンを用いるとき、アプリケーションは、必要なアイソクロナス帯域の正しい幅を算出して、非常に正確に割り当てなければならない。また、アプリケーションは、アイソクロナス帯域の割当、解除又は占有に関して、IEEE1394規格又は他の準拠プロトコル書に文書化された適用可能な規則に従わなければならない。
アプリケーションがAPIの動作を止めるとき、APIは、アプリケーションが以前に割り当てたあらゆるバスリソースを解除しようとはしない。これにより、アプリケーションは、IEC AVプロトコル規格において要求されるように、これらのリソースの所有を容易に放棄することができる。なお、これにより、アプリケーションは、アイソクロナスバスリソースを割り当てる及び解除するときに、準拠プロトコルに従わなければならない。
アプリケーションは、MGMTBusInfoルーチンを用いて、動作中のバスマネージャの現在のトポロジーマップ情報やスピードマップ情報、及び利用可能な他のバス情報を検索する。このルーチンは、アプリケーションが動作しているノードが動作中のバスマネージャであるか否かに関わらず、最近の情報をバスマネージャから検索する。なお、現在動作中のバスマネージャが存在しない場合、このルーチンは、機能しない。トポロジマップ及びスピードマップのフォーマット及びバスマネージャが存在する、あるいは存在しない条件については、IEEE1394規格書第8節に記載されている。
アプリケーションは、APIを初期化した後、ASYNDataRequestルーチンを呼び出し、IEEE1394バスに非同期データ転送の要求を開始する。このルーチンによりアプリケーションは、例えばデータブロックの読出及び書込要求、クワドレットの読出及び書込要求及びロック要求等、IEEE1394規格に規定されているあらゆる非同期データ転送トランザクションを実行することができる。アプリケーションがASYNDataRequestルーチンを呼び出すと、このルーチンは、アプリケーションのバッファのアドレス空間に、64ビットのIEEE1394アドレス空間内のスタートアドレスと、データ長及びトランザクションコードが書き込まれている記述子を渡す。そして、ASYNDataRequestルーチンは、要求された動作を行うために、1つ以上のIEEE1394トランザクションを生成する。APIが要求されたデータ転送動作を完了すると、あるいは処理にエラーが発生すると、APIは、アプリケーションにコールバックルーチンを戻すか、あるいはアプリケーションのコールバックルーチンを呼び出す。いずれの処理が行われるかは、アプリケーションがコールバックルーチンを同期的に呼び出しているか、非同期的に呼び出しているかにより決定される。
IEEE1394バスにおいてロックトランザクションを実行するために、アプリケーションはASYNDataRequestルーチンを呼び出し、引数とデータ値と処理コードを渡す。APIは、要求されたロック処理を行うためのロックトランザクションを生成し、コールバックルーチンをアプリケーションに戻すか、あるいはアプリケーションのコールバックルーチンを呼び出す。いずれの処理が行われるかは、アプリケーションの呼出の種類、すなわち呼出が同期的か非同期的かに基づいて決定される。
アプリケーションは、APIを初期化した後に、IEEE1394シリアルバスのチャンネルにアイソクロナスデータを送信し、IEEE1394シリアルバスのチャンネルからアイソクロナスデータを受信する。アイソクロナスデータの転送を開始する前に、アプリケーションは、ISOCHOpenルーチンを用いて、アイソクロナスポートを開設するする必要がある。アプリケーションは、このルーチンを呼び出して、アプリケーションは転送を行おうとするアイソクロナスデータのストリームの方向及び他の情報を特定する。ISOCHOpenルーチンは、必要なシステムリソースが利用可能であるか否かを判定し、その結果をアプリケーションに返す。このルーチンが問題なく完了すると、アプリケーションは、アイソクロナスデータ転送に必要な全てのシステムリソースを取得する。
アプリケーションがアイソクロナスチャンネルを介してデータの送受信を行う場合、ホストシステム内のアイソクロナスデータの供給源又は供給先は、アプリケーションに設けられ、データ構造に記述された1つ以上のデータバッファである。アプリケーションは、ISOCHAttachルーチンを呼び出して、これらのバッファをAPIに渡す。このルーチンにより、アプリケーションのバッファは、アイソクロナスデータストリーム用のアプリケーションバッファが準備され、アプリケーションデータがバッファを介して送受信される。APIのバッファ処理が完了する以前に、アプリケーションがバッファを使用する必要が生じた場合、アプリケーションは、ISOCHDetachルーチンを呼び出し、アプリケーションが使用するバッファを特定する。
アプリケーションがアイソクロナスデータの記述のために用いたバッファ記述子に規定されているAPIにより、アプリケーションは、1つ以上のデータバッファ、あるいはデータバッファのリンクリストを特定することができ、これを用いてアイソクロナスデータの送受信を行うことができる。各バッファは、連続的なものでも断片的なものでもよく、及び論理的なものでも物理的なものでもよく、アプリケーションは、バッファ毎にコールバックルーチンを指定するようにしてもよい。このため、APIは、アプリケーションに代わって非常に柔軟にバッファを管理することができ、したがってアプリケーションの要求に広く対応することができる。
アプリケーションは、アイソクロナスポートを開設し、このポートにバッファを接続して、アイソクロナスデータを制御する。この制御は、ISOCHControlルーチンを呼び出して行われる。このルーチンにより、アプリケーションは、アプリケーションのバッファにおいて送受信されるアイソクロナスデータのストリームの送受信の開始及び停止を制御できる。さらに、アプリケーションは、このルーチンを呼び出して、特定のアイソクロナスサイクル又は他のイベントに、データの送受信を開始又は停止するイベントを直ちに挿入する。アプリケーションは、アイソクロナスデータ転送を完了すると、ISOCHCloseルーチンを呼び出して、開設ポートに接続されているシステムリソースを解放する。
ActivateSonyAPIルーチン及びDeactivateSonyAPIルーチンは、システムの初期化を行い、これにより、アプリケーションは、APIが有するIEEE1394規格に準拠した特定の機能を呼び出すことができる。ActivateSonyAPIルーチンは、APIにより提供される機能との接続を確立する。DeactivateSonyAPIルーチンは、APIにより提供される機能との接続を切断する。起動により、妥当なactivateRecデータ構造が構築される。アプリケーションに対するAPIの起動処理の一部として、アプリケーションは、指示ルーチンを提供し、APIはこれを用いて、IEEE1394バスにおいて発生する情報、例えばバスリセットや、リモートノードからの要求指示等を呼出側に報知する。終了により、起動時に登録された全ての指示ルーチンの登録が抹消される。API終了後は、APIが再び起動されるまで、呼出側は、APIの機能を使用できない。
以下に示す関数により、APIを起動し、機能させることができる。
STATUS ActivateSonyAPI(ActivateReqPtr activateReq);
このルーチンは1つのパラメータをとり、1つの状態値を返す。後述するように、avtivateReqデータ構造に呼出側が代入され、ポインタがActivateSonyAPIルーチンに渡される。このルーチンが状態値としてGOODを返すと、呼出側は、得られたactivateReqデータ構造を保存する。このデータ構造は、アプリケーションとAPIの接続を示すものである。この接続を識別するために、呼出側は、次のAPIの呼出において、activateReqデータ構造にポインタを渡す。これにより返される可能性のある状態値は、APIが起動し、activeteReqデータ構造を更なる処理に使用することができることを示すGOOD、APIが要求を受け取ったが、現在動作されていないことを示すPENDING、APIの起動処理中に予期せぬエラーが発生し、APIを起動できなかったことを示すUNDEFINEDERROR等である。状態値としてPENDINGが返されると、APIはAsyncCompletionルーチンを呼び出して起動要求に対する処理を完了する。このとき、要求状態フィールドは、起動リクエストのための完了状態を格納する。
上述の1つのパラメータは、activateReqデータ構造のアドレスを示す。このデータ構造は、例えば以下の表1に示すような、APIを起動するのに必要な情報を提供する。
BusResetHandlerフィールドは、空白であるか、あるいはバスリセットイベントを受信したときに呼び出すルーチンのアドレスを格納する。IEEE1394バスにおいてバスリセットが行われる場合、APIはBusResetHandlerルーチンを呼び出し、バスリセット情報を含むデータ構造のアドレスを渡す。IndicationHandlerフィールドが空白ではない場合、このフィールドには、APIが受け持たない指示が発生した場合に呼び出すルーチンのアドレスが書き込まれている。APIがリモートノードからサブアクション要求を受け取ると、APIは、IndicationHandlerルーチンを呼び出し、要求があったデータ構造のアドレスを渡す。APIは、起動処理の一部としてSonyAPIPrivateフィールドに書込を行う。APIは、このフィールドの値を、次の呼出に用いる。呼出側のアプリケーションは、このフィールドの値は、呼出側のアプリケーションによっては、変更されない。AsyncCompletionフィールドは、空白であるか、あるいはAPIが起動されてアプリケーションを呼び出すルーチンルーチンのアドレスが書き込まれている。なお、呼出側のアプリケーションは、要求が同期的か非同期的かに基づいて、完了ルーチンを指定する。UserPtrフィールドは、アプリケーションの完了ルーチンの呼出に使用される。このフィールドは、APIによっては変更されない。Statusフィールドには、起動要求の状態が書き込まれている。
下記の関数により、要求されたAPIの処理が終了する。
status DeactivateSonyAPI(ActivateReqPtr request);
この関数に対して返される可能性のある状態値は、APIが終了され、activateReqデータ構造が更なる処理に使用できなくなったことを示すGOOD、APIが終了要求を受け取ったが、その時点ではまだ動作中であることを示すINVALIDCONNECTION又はPENDING、APIの終了処理中に予期せぬエラーが発生し、APIの終了処理が完了できなかったことを示すUNDEFINEDERROR等である。PENDINGが返されたときは、APIは、AsyncCompletionルーチンを呼び出し、終了処理を完了する。このとき、要求状態フィールドには、終了要求のための完了ルーチンが格納される。
1つのパラメータは、以前にAPIを起動するために用いられたactivateReqデータ構造のアドレスを示す。上述の節では、このデータ構造を定義し、そのフィールドが記述されている。なお、呼出側を終了するためには、以前に行われたAPIの起動に用いたデータ構造と同じデータ構造を用いる必要がある。呼出側は、AsyncCompletionフィールドとUserPtrフィールド内の値を変更する。呼出側は、ActivateSonyAPIルーチンの呼出を行って以後、DeactivateSonyAPIルーチンの呼出を行うまでの間、activateReqデータ構造の他のフィールドに変更を加えることができない。特定のアプリケーションに対しAPIを終了することに加え、このルーチンは、以前にアプリケーションがAPIに渡した全ての指示バッファを解放する。アプリケーションが使用している指示バッファが存在し、同時にアプリケーションがこのルーチンを呼び出そうとすると、このルーチンはエラーを示す値をアプリケーションに返す。この場合、アプリケーションは、完了ルーチンを指定してこのルーチンを再び呼び出す。APIがこの終了要求を完了し、アプリケーションの指示ルーチンを呼び出すと、アプリケーションの全ての指示バッファが解放される。
APIは、非同期的に、指示ハンドリングルーチン、すなわちBusResetHandlerルーチン及びIndicationHandlerルーチンを呼び出す。これらのルーチンは、システムが利用可能機能の一部を有している。環境及び、状況に応じて、APIは割込レベルでこれらのルーチンを呼び出す。BusResetHandlerルーチンにおいて、ハンドラは、ポインタをリセット情報に渡す。IndicationHandlerルーチンにおいては、ハンドラは、ポインタを指示情報に渡す。アプリケーションは、これら指示ルーチンのうちの1又は両方のアドレスをAPIに渡し、これによりAPIが起動される。なお、アプリケーションは、これらのハンドラのいずれか1を供給するようにしてもよく、両方を供給するようにしてもよく、いずれも供給しないとしてもよい。
バスリセットハンドリングルーチンを呼び出すステートメントは、下記のとおりである。
void BusResetHandler(BusResetBlockPtr busResetBlock);
busResetBlockデータ構造は、下記の表2に示すようなバスリセットイベントを記述するデータ構造のアドレスを含んでいる。
バスリセットハンドリングルーチンを提供するアプリケーションに対してAPIが起動している間に、IEEE1394バスにバスリセットが発生すると、APIは、いつでもバスリセットハンドリングルーチンを呼び出す。バスの接続あるいは切断等の物理的原因によりリセットのクラスタが発生すると、一度ハンドラが呼び出される。ハンドラは再実行されないが、連続して何度も呼び出される。バスリセットの結果、バスリセット実行時に実行中の全ての非同期データ転送トランザクションは、エラー状態で完了する。アイソクロナスデータ転送は、IEEE1394規格に基づいて再開され、バスリセットハンドラ実行中に指示を作成する。
非同期データ転送トランザクション要求指示ルーチンを呼び出すステートメントは、以下のとおりである。
void IndicationHandler(IndicationBlockPtr indicationBlockPtr)
IndicationBlockPtrデータ構造は、下記の表3に示すように、指示ブロックのアドレスを含んでいる。
APIは、API自身又はIEEE1394インタフェースハードウェアが機能を有していないような非同期サブアクションの要求を受け取ったとき、指示ルーチンを呼び出す。そのような各イベントに対し、APIは各アプリケーションの指示ルーチンを呼び出し、最初のアプリケーションからAPIの起動処理を開始し、指示ハンドラを供給する。各指示ハンドラは、そのハンドラがその指示をハンドリングしたか否かを示す値をAPIに返す。APIは、指示ルーチンからその指示をハンドリングしたことを示す状態を受け取った場合、その指示については、他の指示ルーチンの呼出を行わない。
幾つかの要求サブアクションは、API自身がハンドリングする。これらのトランザクションについては、APIは、指示ハンドラルーチンの呼出を行わない。APIは、指示を発生させる全てのIEEE1394トランザクション情報及び指示ハンドラルーチンに必要な追加情報を渡し、APIにおいて、応答サブアクションが生成される。
アプリケーションは、指示ハンドラにバッファを提供する。これにより、アプリケーションは、指示バッファのデフォルトの組を拡張し、特定の要求にアプリケーションを対応させることができる。指示バッファの組を拡張することにより、IEEE1394インタフェースにビジーACK信号を発生させることなく、より多くの特別な指示を行うことができる。なお、アプリケーションは、APIから指示を受け取ったときに、アプリケーションに所属するバッファを必ずしも受け取らない。APIは、必要であれば、アプリケーションの指示バッファを他のアプリケーションに渡して、指示の報告を行う。
Current Indication Buffer Count関数は、指示バッファプール内の指示バッファの総数を返す。返された値は、現在の指示バッファの数を示す。
Add Indication Buffers関数は、バッファプールにバッファを追加する。バッファの要素は、LocalBufferとして記述される。この関数の呼出側は、要求に示されたバッファの所有権をAPIに譲り、バッファの配列を行う前の所有権を再び獲得しなくてはならない。
このAdd Indication Buffers関数に返される可能性のある値は、APIが要求を受け取り、後に要求を完了するであろうことを示すGOOD、APIが要求を受け取ったことを示すINVALIDCONNECTION,PENDING、このプラットフォームには、バッファを追加できないことを示すUNSUPPORTEDOP、データ転送動作を行っている最中に予期せぬエラーが発生したことを示すUNDEFINEDERROR等である。この値が返されると、APIは、AsyncCompletionルーチンを呼び出し、要求された動作が完了される。このとき、BufMgmtBlockの状態フィールドは、要求に対する完了状態を格納する。
AddIndBuffers関数の第1のパラメータは、有効なActivateReqデータ構造のアドレスを示す。第2のパラメータは、BufMgmtBlockデータ構造のアドレスを示す。このデータ構造は、以下の表4に示すように、バッファを記述する。
APIprivateフィールドは、要求を管理するためのプライベートデータを有する。LocalBufferPtrフィールドは、与えられるバッファの記述子を有している。これらのバッファは、如何なる容量のものでもよい。APIは、API自身の判断に基づいて、与えられたバッファの全てを使用してもよく、一部を使用してもよく、全く使用しなくてもよい。AsyncCompletionフィールドが空白ではない場合、このフィールドには処理を完了するために呼び出すルーチンのアドレスを格納している。UserPtrフィールドは、完了ルーチンの呼出に使用される。このフィールドは、APIによっては変更されない。Statusフィールドは、要求されたデータ転送動作の状態を有する。Statusフィールドは、非同期処理が完了するまで、保留(pending)状態を格納する。完了ルーチンが呼び出されると、Statusフィールドは、完了状態を格納する。
Release Indication Buffers関数は、以前に追加された追加されたバッファを呼出側に返す。バッファの要素は、LocalBufferとして記述される。この関数の呼出側は、AddIndBuffers関数要求により追加されたバッファのサブセットを特定する。要求されたバッファが全て解放されると、完了ルーチンが呼び出される。
RelIndBuffers関数に対して返される可能性のある状態値は、APIが要求を受け取り、後に要求を完了するであろうことを示すPENDING、このプラットフォームには、バッファを追加できないことを示すINVALIDCONNECTION,UNSUPPORTEDOP、要求に応じた処理を行っている最中に予期せぬエラーが発生したことを示すUNDEFINEDERROR等である。
Release Indication Bufferの第1のパラメータは、有効なactivateReqデータ構造のアドレスを示す。第2のパラメータは、BufMgmtBlockデータ構造のアドレスを示す。このデータ構造は、上述のとおり、バッファを記述する。アプリケーションがAPIにバッファを解放するように要求するとき、最初にAPIにバッファが与えられたときと同じ記述を用いなくてはならない。
Bus Managementルーチンは、IEEE1394バス管理動作を実行する。この機能には、アイソクロナスバスリソースの割当及び解除、及びIEEE1394バスの位相又は環境に関する情報の読込等の処理が含まれる。
MGMTAllocateChannelルーチンは、IEEE1394規格書第8節に規定されているプロトコルを用い、単一のアイソクロナスチャンネル番号を割り当てる。MGMTAllocateChannelルーチンを呼び出すステートメントは以下のとおりである。
MGMTAllocateChannelルーチンに返される可能性のある状態値は、チャンネルが無事に割り当てられたことを示すGOOD、コンテクストパラメータが現在動作中のAPIへの接続点のアドレスを含んでいないことを示すINVALIDCONNECTION、APIが要求を受け取っていることを示すPENDING、要求されたチャンネル番号が現在使用不可能であることを示すCHUNAVAILABLE、予期せぬエラーが発生したことを示すUNDEFINEDERROR等である。PENDINGが返されたときは、APIは、MGMTCompletionルーチンを呼び出し、割当要求処理が完了され、このとき状態フィールドは、この要求の状態を格納する。
MGMTAllocateChannelルーチンの第1の呼出パラメータは、動作中のActivateReqデータ構造のアドレスである。第2のパラメータは、下記の表5に示すように、データ構造のアドレスを示す。
チャンネルフィールドには、割り当てられるチャンネル番号が書き込まれる。チャンネル番号が0から63の範囲である場合、ルーチンは、特定のチャンネル番号の割当を行う。チャンネルフィールドに全ての番号が格納されている場合、ルーチンは、割り当てる番号を自ら選択する。チャンネル番号がそれ以外の値である場合、ルーチンは、chAvailableフィールドを埋め、chUnavailable状態を返す。これにより、現在アイソクロナスリソースマネージャ(Isochronous Resource Manager)から取得できるチャンネル番号が確認される。allocatedChフィールドは、このルーチンを呼び出した結果として実際に割り当てられるチャンネル番号か、チャンネルの割当が行われていない場合には、全ての番号を格納している。chAvailableフィールドは、アイソクロナスリソースマネージャのchannels_CSRの現在の値が格納される。なお、このCSRの値は、随時変化し、したがって、このフィールドの値も一時的なものであり、続いて行われる呼出によって変更されることもある。MGMTCompletionフィールドがNULLではない場合、このフィールドには、完了のために呼び出されるルーチンのアドレスが格納されている。UserPtrフィールドは、アプリケーションの完了ルーチンに用いられる。このフィールドは、APIによっては変更されない。Statusフィールドは、この呼出のための完了状態を格納している。アプリケーションがこのルーチンを非同期的に呼び出すと、このフィールドには、完了ルーチンが呼び出されるまでの間、PENDING状態が格納される。
MGMTAllocateBandwidthルーチンは、IEEE1394規格書第8節に規定されているプロトコルを用い、アイソクロナス帯域の割当を行う。MGMTAllocateBandwidthルーチンを呼び出すステートメントは、以下のとおりである。
MGMTAllocateBandwidthルーチンに返される可能性のある状態値は、帯域が無事に割り当てられたことを示すGOOD、コンテクストパラメータが現在動作中のAPIとの接続点のアドレスを格納していないことを示すINVALIDCONNECTION、要求された帯域が現在使用不可能であることを示すBWUNAVAILABLEは、予期せぬエラーが発生したことを示すUNDEFINEDERROR等である。PENDINGが値として返された場合、APIは、MGMTCompletionルーチンを呼び出し、割当要求処理を完了し、このとき状態フィールドにはこの要求の完了状態が格納される。
MGMTAllocateBandwidthルーチンの第1の呼出パラメータは、動作中のActivateReqデータ構造のアドレスを示す。第2のパラメータは、下記の表6に示すように、データ構造のアドレスを示す。
bandwidthフィールドは、割り当てられる帯域を示す値を格納する。この値が全ての帯域を示している場合、ルーチンは、bwAvailableを埋め、BWUNAVAILABLEの値を返す。なお、これにより、現在動作中のアイソクロナスリソースマネージャからbwavailableの現在の値を知ることができる。bwAvailableフィールドは、アイソクロナスリソースマネージャのbandwidth/availabel CSRの現在の値を格納している。なお、このCSRの値は、随時変化し、したがって、このフィールドの値も一時的なものであり、次の呼出によって変更されることもある。MGMTCompletionフィールドの値が空白(NULL)ではない場合、このフィールドには、完了のために呼び出されるルーチンのアドレスが格納されている。UserPtrフィールドは、アプリケーションの完了ルーチンに用いられる。このフィールドは、APIによっては、変更されない。Statusフィールドは、この呼出の完了状態を格納する。アプリケーションがこのルーチンを非同期的に呼び出すと、このフィールドは、完了ルーチンが呼び出されるまでの間、PENDING状態を格納する。
MGMTDeAllocateChannelルーチンは、IEEE1394規格の第8節に規定されているプロトコルを用い、アイソクロナスチャンネルの割当の解除を行う。MGMTDeAllocateChannelルーチンを呼び出すステートメントは以下のとおりである。
このルーチンは、2つのパラメータを有し、状態値を返す。返される可能性のある状態値は、チャンネルの割当が無事に解除されたことを示すGOOD、コンテクストパラメータが現在動作中のAPIとの接続点のアドレスを有していないことを示すINVALIDCONNECTION、APIが要求を受け取ったことを示すPENDING、要求されたチャンネル番号は、割り当てられていないことを示すCHUNAVAILABLE、予期せぬエラーが発生したことを示すUNDEFINEDERROR等である。状態値としてPENDINGが返された場合、APIは、MGMTCompletionルーチンを呼び出し、割当要求処理を完了し、そのときstatusフィールドは、この要求の完了状態を格納する。
MGMTAllocateChannelルーチンの第1のパラメータは、動作中のActivateReqデータ構造のアドレスを示す。第2のパラメータは、MGMTAllocateChBlockデータ構造のアドレスを示す。このルーチンは、データ構造のチャンネルフィールドに特定されたチャンネルの割当の解除を行い、chAvailableフィールドに、現在動作中のアイソクロナスリソースマネージャから取得されるchannels_availableの値を埋め込む。
MGMTDeAllocateBandwidthルーチンは、IEEE1394規格の第8節に規定されているプロトコルを用い、アイソクロナス帯域の割当の解除を行う。MGMTDeAllocateBandwidthルーチンを呼び出すステートメントは、以下のとおりである。
このルーチンは、2つのパラメータを有し、状態値を返す。返される可能性のある値は、帯域の割当が無事に解除されたことを示すGOOD、コンテクストパラメータが現在動作中のAPIとの接続手点のアドレスを有していないことを示すINVALIABLECONNECTION、APIが要求を受け取ったことを示すPENDING、この要求を完了することにより、アイソクロナスリソースマネージャのbandwidth_availableレジスタの値が不適切なものとなるため、要求は遂行されなかったことを示すBWUNAVAILABLE、予期せぬエラーが発生したことを示すUNDEFINEDERROR等である。状態値としてPENDINGが返された場合、APIは、MGMTCompletionルーチンを呼び出し、割当要求処理を完了し、このときstatusフィールドは、この要求の完了状態を格納する。
MGMTAllocateBandwidthルーチンの第1のパラメータは、動作中のActivateReqデータ構造のアドレスを示す。第2のパラメータは、MGMTAllocateBWBlockデータ構造のアドレスを示す。このルーチンは、bandwidthフィールドに格納されている帯域の割当を解除し、bwAvailableフィールドに、現在動作中のアイソクロナスリソースマネージャから取得されるbandwidth_availableレジスタの値を埋め込む。
MGMTBusInfoルーチンは、IEEE1394バスに接続され、アプリケーションが実行されているノードに関する情報を返す。この情報には、IEEE1394規格に規定されているとおり、PHYギャップカウントの現在の設定、IEEE1394バスに接続されているノードの数、バスのトポロジマップのポインタ、及びバスのスピードマップのポインタ等を含む。
ASYNDataRequestルーチンは、IEEE1394非同期読出又は書込トランザクションを生成し、これによりアプリケーションのデータバッファと64ビットのIEEE1394アドレス空間内の連続的なアドレスとの間でデータ転送が行われる。ASYNDataRequestルーチンを呼び出すステートメントは、以下のとおりである。
ASYNDataRequestルーチンに返される可能性のある状態値は、APIが無事にデータ転送要求を遂行したことを示すGOOD、APIが要求を受け取り、以後に要求を遂行するであろうことを示すPENDING、flags.opCodeフィールドに未知のコードが格納されていることを示すINVALIDOPCODE、activateReqPtrフィールドが動作中の接続点を示していないことを示すINVALIDCONNECTION、ある程度データの転送を行ったが、この要求の遂行の途中に予期せぬエラーが発生したことを示すUNDEFINEDERROR等である。
ASYNDataRequestルーチンの第1のパラメータは、有効なactivateReqデータ構造のアドレスを示す。第2のパラメータは、asyncTransportデータ構造のアドレスを示す。このデータ構造は、例えば下記の表7に示すように、要求されたデータ転送動作を記述する。
ASYdataフィールドは、要求の管理に用いるプライベートデータを格納する。OpCodeフィールドは、要求された動作を記述するコードを格納し、このコードは、asyncOpCodeコード表で定義されているもののうちの1つである。NonIncrフィールドは、1に設定すると、remoteBufPtrフィールド内の同じIEEE1394アドレスに全てのデータを転送するようにルーチンに指示し、0に設定すると、remoteBufPtrフィールド内のアドレスから広範囲にわたるIEEE1394アドレスにデータを転送するようにルーチンに指示する。BlockSizeフィールドには、ブロック読出又は書込サブアクションに用いるブロックの最大のデータ量がバイト単位で示されている。0の値は、選択されたバススピードにおける要求サイズの最大値を用いることを示す。APPLBufPtrフィールドは、アプリケーションのデータバッファの記述子を格納している。RemoteBufPtrは、IEEE1394リモートノードのデータバッファのリモートアドレスを格納している。Lengthフィールドは、転送されるバイト数を示し、これは、アプリケーションのデータバッファのバッファ長と同等あるいはそれ以下とされる。AsyncCompletionフィールドは、空白であるか、あるいはデータ転送の完了に用いるルーチンのアドレスを格納する。UserPtrフィールドは、アプリケーションの完了ルーチンの呼出に用いられ、APIによっては、変更されない。Statusフィールドは、要求されたデータ転送動作の状態を格納する。このフィールドは、非同期処理が完了するまで、PENDING状態を格納する。完了ルーチンが呼び出されると、このフィールドは完了状態を格納する。
ASYNLockRequestルーチンは、IEEE1394バスをロックするロックトランザクションを生成する。このASYNLockRequestルーチンのステートメントは、下記とおりである。
ASYNLockRequestルーチンに返される値は、APIがロックトランザクションを無事に完了し、その結果がAsyncLockBlockに格納されたことを示すGOOD、APIが要求を受け取り、その要求を以後に遂行するであろうことを示すPENDING、AsyncLockBlockデータ構造のOpCodeフィールドに未知のコードが存在することを示すINVALIDOPCODE、activateReqPtrが動作中の接続点を示していないことを示すINVALIDCONNECTION、幾らかのデータ転送を行ったが、要求された動作中に予期せぬエラーが発生したことを示すUNDEFINEDERROR等である。
ASYNLockRequestルーチンの第1のパラメータは、有効なactivateReqデータ構造のアドレスを示す。第2のパラメータは、AsyncLockBlockデータ構造のアドレスを示す。このデータ構造は、下記の表8に示すように、要求されたデータ転送を記述する。
APIPrivateフィールドは、要求を管理するためのプライベートデータを格納する。OpCodeフィールドは、要求された動作のコードを格納し、このコードは、asyncOpCodesコード表に規定されている値の内の1つである。ArgData structフィールドは、このロックトランザクションの引数及びデータを格納する。AsyncCompletionフィールドは、64ビットで示される送り先のアドレスを格納する。AsyncCompletionフィールドは、空白であるか、あるいはロックトランザクションを完了するためのルーチンのアドレスを格納する。UserPtrフィールドは、アプリケーションの完了ルーチンの呼出に用いられ、APIによっては変更されない。Statusフィールドは、要求されたデータ転送動作の状態を格納する。非同期処理が完了するまでの間、このフィールドには、PENDING状態が格納される。完了ルーチンが呼び出されると、このフィールドは完了状態を格納する。
アイソクロナスリソース管理ルーチンは、IEEE1394インタフェースとアプリケーションデータバッファとの間で送受信されるアイソクロナスデータの転送に必要なリソースの割当及びその解除を行う。割当及び解除を行う際、システム内で競合する可能性のあるアイソクロナスデータアプリケーションの衝突を避ける必要がある。IEEE1394バスを介してアイソクロナスデータの転送を行う場合は、必要なバスリソースのエンティティ、すなわちチャンネル番号及び帯域がIEEE1394バス上に必ず存在する。アイソクロナスデータを使用する各アプリケーションは、いつ、何によって割当及び解除が行われるかを規定する1組の規則を有している。APIのバス管理ルーチンにより、アプリケーションは、IEEE1394規格に則ってこれらのリソースの割当を行うことができる。なお、ここでいうルーチンは、IEEE1394バスリソースに割り当てられるわけではなく、アプリケーションバッファとアイソクロナスデータを送受信するのに必要なシステムレベルのリソースにのみ割り当てられる。これらのリソースには、DMAチャンネル及びそれを維持するリソース、例えば下のレベルの割込ハンドラやディスパッチャ等が含まれる。
ISOCHOpenルーチンは、アイソクロナスポートを開設及び初期化する。アイソクロナスポートは、APIのアプリケーション及びAPIが動作するローカルノードのハードウェア及びソフトウェアの複数のリソースを組み合わせたものである。この1組のリソースは、ローカルノードにおいて送受信されるアイソクロナスデータの単一のストリームの転送に必要とされるもの全てを当該ノードに構成する。また、IEEE1394規格書第8節の規定に従い、及びアプリケーションの規約及び要求に従い、この1組のリソースには、アプリケーションが別個に割り当てる必要のあるIEEE1394バスリソースは、含まれていない。APIにIEEE1394バスリソースの割当及び解除を行わせるルーチンについては、上述のとおりである。
ポート開設ルーチンのステートメントは、以下のとおりである。
ポート開設ルーチンの第1のパラメータは、有効なactivateReqデータ構造のアドレスを示す。第2のパラメータは、ISOCHOpenBlockデータ構造のアドレスを示す。このルーチンが無事に完了すると、アプリケーションは、以後この開設されたポートに関わる呼出を行う際に、このアイソクロナスポートを参照するためにISOCHOpenBlockデータ構造を使用する。ポート開設ルーチンによって返される可能性のある値は、ポート開設処理が無事に完了したことを示すGOOD、APIが要求を受け取り、以後に処理が行われるであろうことを示すPENDING、アイソクロナスポート又は他の必要なリソースが現在利用不可能であり、そのため要求が拒否されたことを示すNONRESOURCES、要求されたバススピードがサポートされていないことを示すINVALIDREQUEST、ActivateReqPtrフィールドが示すAPI接続が動作中でないことを示すINVALIDCONNECTION、要求された動作が完了できなかったが、発生したエラーの原因が不明であることを示すUNDEFINEDERROR等である。
ポート開設ルーチンの呼出パラメータは、ISOCHOpenBlockデータ構造のアドレスを示す。このデータ構造は、下記表9に示すように、要求を記述する。
directionフィールドは、アイソクロナスデータ転送の転送方向を示す。AsyncCompletionフィールドは、空白であるか、あるいは完了のために呼び出されるルーチンのアドレスを格納している。UserPtrフィールドは、アプリケーションの完了ルーチンの呼出に用いられ、APIによっては変更されない。Statusフィールドは、要求されたデータ転送動作の状態を格納する。非同期データ転送動作が完了するまでは、このフィールドにはPENDINGが格納される。完了ルーチンが呼び出されると、このフィールドは完了状態を格納する。アプリケーションがアイソクロナスポートを用いた処理を終わると、アプリケーションは、isochPortPtrをISOCHCloseルーチンに渡す。
ISOCHCloseルーチンは、以前にISOCHOpenルーチンにより開設されたポートを閉鎖する。このルーチンは、下記のようなステートメントを有する。
このルーチンは1つのパラメータをとり、1つの状態値を返す。このルーチンは非同期的に実行され、完了時にISOCHOpenBlockに規定されている完了ルーチンを呼び出す。返される可能性のある状態値は、処理が無事に完了したことを示すGOOD、APIが要求を受け取り、追って処理が実行されるであろうことを示すPENDING、connectionPtrが示すAPI接続が動作中でない、又は、openBlockが現在開設されているアイソクロナスポートを示していないことを示すINVALIDCONNECTION、予期せぬエラーが発生したため要求された動作を完了できなかったことを示すUNDEFINEDERROR等である。
ISOCHCloseルーチンの第1の呼出パラメータは、有効なactivateReqデータ構造のアドレスを示す。第2のパラメータは、ISOCHOpenルーチンに用いられるISOCHOpenBlockのアドレスを示す。
アイソクロナスデータ制御ルーチンは、アプリケーションのデータバッファに出入りするアイソクロナスデータのストリームを制御する。アプリケーションがアイソクロナスデータを受信する側である場合、これらの制御ルーチンは、アプリケーションに受信されるアイソクロナスデータの流れのみに影響し、IEEE1394バス自身に存在するアイソクロナスデータには影響を及ぼさない。アプリケーションがアプリケーションデータバッファからデータを送信する場合、これらの制御は、IEEE1394バス上のデータにも影響を及ぼす。
ISOCHControlルーチンのステートメントは、以下のとおりである。
ISOCHControlルーチンに返される可能性のある状態値は、処理が無事に完了したことを示すGOOD、openBlockフィールドが動作中のアイソクロナスポートを示していないことを示すINVALIDCONNECTION、処理が現在保留されていることを示すPENDING、ISOCHControleBlockのopCodeフィールドの値が適切でないことを示すINVALIDOPCODE、IEEE1394インタフェースハードウェアの制約又はソフトウェアの制約、又は環境の制約により、処理がサポートされていないことを示すUNSUPPORTEDOP、予期せぬエラーの発生により処理が実行できないことを示すUNDEFINEDERROR等である。コールバックルーチンを呼び出したとき、状態値としてPENDINGが返された場合、ISOCHCOntroleBlockの状態フィールドが制御要求の完了ステイタスを格納する。
ISOCHControlルーチンは、有効なISOCHOpenBlockデータ構造のアドレスを示す。第2のパラメータはISOCHCtlBlockデータ構造のアドレスを示す。このデータ構造は、表10に示すように、要求された制御処理を記述する。
APIPrivateフィールドは、この要求を管理するためにAPIに用いられるプライベートメモリを有する。IsoOPCodeは、要求された制御処理を記述するIsoOpCodeコード表から得られる値を格納する。IsoEventフィールドは、要求された動作を実行するトリガとなるトリガイベントを特定する。IsoEventフィールドが「SYFIELD」を値として格納している場合、Syフィールドがアイソクロナスチャンネルにおける処理の開始又は終了をトリガする値を格納する。IsoOpCodeフィールドの値が「START」である場合、Tagフィールドの値がアイソクロナスデータブロックのパケットのヘッダのタグ値として用いられる。同じく、IsoOpCodeフィールドの値が「START」である場合、Channelフィールドの値がアイソクロナスデータブロックのパケットのヘッダのチャンネル値として用いられる。IsoEventフィールドの値が「TIME」である場合、Timeフィールドは、要求された動作が開始された時刻を格納する。AsyncCompletionフィールドは、空白であるか、あるいはデータ転送の完了に用いられるルーチンのアドレスを格納している。UserPtrフィールドは、アプリケーションの完了ルーチンの呼出に用いられる。このフィールドは、APIによっては、変更されない。Statusフィールドは、要求されたデータ転送動作の状態を格納する。非同期データ転送動作が完了するまでは、このフィールドは「pending」を格納する。完了ルーチンが呼び出されると、このフィールドは完了状態を格納する。
アイソクロナス添付ルーチンは、APIソフトウェアにアプリケーションデータバッファの記述子を渡す。IEEE1394インタフェースハードウェア及び関連するさらに下層のソフトウェアがバッファを利用できるようにするために、アプリケーションは、このルーチンをいつでも呼び出すことができる。このルーチンのステートメントは以下のとおりである。
アイソクロナス添付ルーチンに返される状態値は、処理が完了し、アプリケーションデータバッファが受け取られたことを示すGOOD、openBlockフィールドが動作中のアイソクロナスポートを指定していないことを示すINVALIDCONNECTION、ハードウェア環境、ソフトウェア環境又は他のシステム環境の制約により、バッファ記述子に特定されている再同期イベントがサポートされていないことを示すUNSUPPORTEDOP、アプリケーションのバッファの循環リンクリストの引き渡しの処理を行おうとしたとき、アイソクロナスデータ転送動作中であった、又は、既存の循環リンクリストに新たなバッファを追加しようとしたとき、アイソクロナスデータ転送動作中であったことを示すINVALIDREQUEST、予期せぬエラーの発生により処理が完了できなかったことを示すUNDEFINEDERROR等である。
ISOCHAttachルーチンの第1のパラメータは、有効なISOCHOpenBlockデータ構造のアドレスを示す。第2のパラメータは、ISOCHAppendBlockデータ構造のアドレスを示す。このデータ構造は、表11に示すように、アプリケーションデータバッファのリンクリストを記述する。
APIPrivateフィールドは、要求を管理するためにAPIに用いられるプライベートストレージを格納する。IsochBuffListフィールドは、特定のポートに付与されたリンクリストの第1のアイソクロナスバッファのアドレスを格納する。現在のバッファリスト又は付与されるバッファリストが循環的である場合、付与処理は、ポートにおける処理が停止してから実行され、付与処理は、以前に付与されたバッファの置き換えも行うことができる。既存のバッファリストが循環的でない場合、バッファの追加は、いつでも行うことができる。AsyncCompletionフィールドは、空白であるか、あるいは完了のために呼び出されるルーチンのアドレスを格納している。UserPtrフィールドは、アプリケーションの完了ルーチンの呼出に用いられ、APIによっては変更されない。Statusフィールドは、要求された動作の状態を格納する。非同期処理が完了するまでの間、このフィールドは「PENDING」を格納する。完了ルーチンが呼び出されると、このフィールドは、完了状態を格納する。
IsochBuffListフィールドは、isochBufferのアドレスを格納する。isochBufferデータ構造は、1つのデータバッファを記述する。isochBufferデータ構造は、二重のリンクリストに存在する。表12は、このデータ構造を示す。
Nextフィールドは、リンクリスト中の次のバッファのアドレスを格納する。Previousフィールドは、リンクリスト中の前のバッファのアドレスを格納する。Circularフィールドは、バッファの組が循環構造を有しているか否かを示す値を格納する。ResynchEventフィールドは、再同期イベントを任意に格納する。このフィールドの値が「IMMEDIATE」であるとき、再同期は行われない。ResyncEventフィールドの値が「SYFIELD」であるとき、Syフィールドは、このアプリケーションデータバッファへの、あるいはアプリケーションデータバッファからのデータ転送を休止させる。ResyncEventフィールドに格納される値が「TIME」の場合、Timeフィールドは、アプリケーションデータバッファにおいて送受信されるデータの転送の待ち時間を格納する。ApplBufPtrフィールドは、アプリケーションデータバッファのアドレスを格納する。このアドレスは、論理的アドレスでも物理的アドレスでもよく、離散的でも連続的でもよく、これらは、動作環境の能力に応じて決定される。IsochCompletionフィールドは、完了ルーチンのアドレスを格納する。このフィールドが空白ではない場合、バッファへのデータ転送が完了すると、完了ルーチンが呼び出される。UserPtrフィールドは、アプリケーションの完了ルーチンに使用され、このフィールドは、APIによっては変更されない。
ISOCHDetachルーチンは、アプリケーションデータバッファをAPIから解放してアプリケーションに返却する。アプリケーションは、IEEE1394インタフェースハードウェア及び関連する下層のソフトウェアからバッファを解放するために、いつでもこのルーチンを呼び出すことができる。要求されたバッファは、完了ルーチンが呼び出されたときに解放される。このルーチンの呼出のステートメントは、以下のとおりである。
ISOCHDetachルーチンに返される状態値は、処理が完了し、バッファが解放されたことを示すGOOD、処理が保留中であることを示すPENDING、openBlockフィールドが動作中のアイソクロナスポートを指示していないことを示すINVALIDCONECTION、ISOCHAppendBlockに記述されているバッファが見つからない、又はISOCHOpenBlock構造に記述されているアイソクロナスポートがそれらのバッファを使用する権利を有していないことを示すINVALIDREQUEST、予期せぬエラーが発生したため、処理が終了できなかったことを示すUNDEFINEDERROR等である。コールバックルーチンが呼び出されたとき、PENDINGが返された場合、ISOCHAppendBlockの状態フィールドは、解放処理の完了状態を格納する。
ISOCHDetachルーチンの第1のパラメータは、有効なISOCHOpenBlockデータ構造のアドレスを示す。第2のパラメータは、ISOCHAppendBlockデータ構造のアドレスを示す。このデータ構造は、上述したように、アプリケーションデータバッファリストを記述する。
本発明に係るアプリケーションプログラミングインタフェースは、アプリケーションにインタフェースを提供し、これによりアプリケーションがバスを介して行うデータ転送は、同期式にも非同期式にも対応できる。このアプリケーションプログラミングインタフェースは、アイソクロナスデータ転送動作中に、バス28を介して行われる非同期データ転送にも対応する。バス28を介してアイソクロナスデータが転送されている間、非同期データでギャップを埋めることができる。IEEE1394では、アイソクロナスデータにおける最悪のジッタが特定されており、これに基づいてアイソクロナスデータのパケットの最大待ち時間が定められている。したがって、API20によれば、アイソクロナスデータは、適切な周期で、確実に転送される。さらに、アイソクロナスデータのパケット間に生じるギャップに非同期データパケットを挿入して転送することができる。
本発明に係るAPIは、従来のシステムを改善し、メモリマッピングされたバス28を介して非同期データ転送を行うのに必要なトランザクションを自動的に生成する自動トランザクション発生器38を用いることにより、非同期データ転送を自動化することができる。アイソクロナスデータ転送動作中に、各バッファに対応するバッファ記述子のリンクリストは、維持され、アプリケーションとバス28間のデータの送受信に使用される。各バッファには、コールバックルーチンや再同期イベントを格納することもできる。
本発明の原理、構造、動作が容易に理解されるように、本発明の実施の形態を、特定の用語を用いて詳細に説明した。上述の特定の実施の形態の説明で用いた具体例及びその詳細により、特許請求の範囲を限定してはならない。本発明の趣旨を逸脱することなく、実施の形態を様々に変更できることは、当業者には明らかである。
Claims (63)
- バスを介したアプリケーションへの及びからのデータ転送を制御する該アプリケーションとバス間のインタフェースにおいて、
上記アプリケーションからの非同期データ転送動作の要求により、該アプリケーションに、メモリマッピングされたインタフェースを提供し、上記バスを介した非同期データ転送動作を行うのに必要な要求を自動的に生成し、該アプリケーションとバス間の非同期データ転送を制御する非同期データ転送制御手段と、
上記アプリケーションからのアイソクロナスデータ転送動作の要求により、該要求されたアイソクロナスデータ転送を、連続したストリームの流れが途切れないように維持するために用いられるバッファのリンクリストを管理し、該アプリケーションとバス間のアイソクロナスデータ転送を制御するアイソクロナスデータ転送制御手段とを備えるインタフェース。 - 上記非同期データ転送制御手段は、送信先の識別子と、アドレスと、データ長とを含むヘッダを有するパケットのデータを、上記バスに送信し又は該バスから受信することを特徴とする請求の範囲第1項記載のインタフェース。
- 上記非同期データ転送手段は、上記バスを介した非同期データ転送を行うのに必要な要求を自動的に生成する自動ハードウェアインタフェースを備えることを特徴とする請求の範囲第2項記載のインタフェース。
- 上記バスは、IEEE1394規格に準拠したバスであることを特徴とする請求の範囲第3項記載のインタフェース。
- 上記リンクリスト内の各バッファは、前のバッファを指示するバックワードポインタと次のバッファを指示するフォワードポインタとを含んでいることを特徴とする請求の範囲第1項記載のインタフェース。
- 上記リンクリスト内の各バッファは、データ転送動作中の所定の時点で上記アプリケーションを呼び出すコールバックルーチンを有することを特徴とする請求の範囲第5項記載のインタフェース。
- 上記リンクリスト内の各バッファは、上記アプリケーションをデータ転送に再同期させる再同期イベントを有することを特徴とする請求の範囲第6項記載のインタフェース。
- 上記アプリケーションは、上記リンクリストにバッファを追加することを特徴とする請求の範囲第7項記載のインタフェース。
- 上記アプリケーションは、上記リンクリストからバッファを削除することを特徴とする請求の範囲第8項記載のインタフェース。
- アプリケーションとバス間のデータ転送動作を制御する該アプリケーションとバス間のインタフェースにおいて、
上記アプリケーションと通信し、該アプリケーションから要求を受信し、該アプリケーションにインストラクションを送るアプリケーションプログラミングインタフェースと、
上記アプリケーションによって割り当てられたバッファと上記バス上のノード間の非同期データ転送動作を行うのに必要なトランザクションを自動的に生成する自動トランザクション発生器と、
上記バスに物理的インタフェースを提供し、該バスを介してデータパケットを送信及び受信するバスインタフェースとを備え、
上記アプリケーションプログラミングインタフェースは、上記アプリケーションからのアイソクロナスデータ転送動作の要求により、該要求されたアイソクロナスデータ転送を、連続したストリームの流れが途切れないように維持するために用いられるバッファのリンクリストを管理し、該アイソクロナスデータ転送を制御するアイソクロナスデータ制御手段を備えることを特徴とするインタフェース。 - 上記バッファのリンクリストは、各バッファについて、前のバッファを指示するバックワードポインタと次のバッファを指示するフォワードポインタとを含んでいることを特徴とする請求の範囲第10項記載のインタフェース。
- 上記各バッファは、データ転送動作中の所定の時点で起動されて上記アプリケーションを呼び出すコールバックルーチンを有することを特徴とする請求の範囲第11項記載のインタフェース。
- 上記各バッファは、起動されて上記アプリケーションを転送中のデータの所定の位置に再同期させる再同期イベントを有することを特徴とする請求の範囲第12項記載のインタフェース。
- 上記アプリケーションは、上記リンクリストにバッファを追加することを特徴とする請求の範囲第13項記載のインタフェース。
- 上記アプリケーションは、上記リンクリストからバッファを削除することを特徴とする請求の範囲第14項記載のインタフェース。
- 上記自動トランザクション発生器は、ハードウェア論理回路によって実現されていることを特徴とする請求の範囲第10項記載のインタフェース。
- 上記自動トランザクション発生器は、ソフトウェアによって実現されていることを特徴とする請求の範囲第10項記載のインタフェース。
- メモリマッピングされたインタフェースをアプリケーションに提供し、該アプリケーションとバス間の非同期データ転送動作を管理するデータ転送管理方法において、
上記アプリケーションから非同期データ転送動作の要求を受信するステップと、
上記バスを介した非同期データ転送動作を行うのに必要なトランザクションを自動的に生成するように自動トランザクション発生器に命令するステップと、
非同期データ転送動作の完了をアプリケーションに通知するステップとを有するデータ転送管理方法。 - 上記要求は、アプリケーションバッファのアドレスと、上記バスのアドレス空間のスタートアドレスと、転送されるデータの長さと、データ転送の方向とを含むことを特徴とする請求の範囲第18項記載のデータ転送管理方法。
- 上記スタートアドレスは、64ビットのアドレスであることを特徴とする請求の範囲第19項記載のデータ転送管理方法。
- 上記バスは、IEEE1394規格に準拠したバスであることを特徴とする請求の範囲第20項記載のデータ転送管理方法。
- 上記自動トランザクション発生器は、ハードウェア論理回路によって実現されていることを特徴とする請求の範囲第18項記載のデータ転送管理方法。
- 上記自動トランザクション発生器は、ソフトウェアによって実現されていることを特徴とする請求の範囲第18項記載のデータ転送管理方法。
- アプリケーションとバス間のデータ転送動作を管理する該アプリケーションとバス間のインタフェースにおいて、
上記アプリケーションと通信し、該アプリケーションから要求を受信し、該アプリケーションにインストラクションを送る通信手段と、
上記アプリケーションのバッファと上記バス上のノード間の非同期データ転送動作を行うのに必要なトランザクションを自動的に生成する自動トランザクション発生器と、
上記バスを介して転送されるデータパケットを、該バスに送信し、該バスから受信するとともに、監視する手段とを備えるインタフェース。 - 上記アプリケーションが上記通信手段に要求を送ったときに、上記データ転送動作が開始されることを特徴とする請求の範囲第24項記載のインタフェース。
- 上記要求は、上記アプリケーションのバッファのアドレスと、上記バスのスタートアドレスと、転送されるデータの長さと、転送方向とを含むことを特徴とする請求の範囲第25項記載のインタフェース。
- 上記バスは、IEEE1394規格に準拠したバスであることを特徴とする請求の範囲第26項記載のインタフェース。
- 上記アプリケーションとバス間のアイソクロナスデータ転送を制御するアイソクロナスデータ転送制御手段を更に備える請求の範囲第24項記載のインタフェース。
- 上記アイソクロナスデータ転送制御手段は、上記アプリケーションからのアイソクロナスデータ転送動作の要求により、該要求されたアイソクロナスデータ転送を、連続したストリームの流れが途切れないように維持するために用いられるバッファのリンクリストを管理し、該アプリケーションとバス間のアイソクロナスデータ転送を制御することを特徴とする請求の範囲第28項記載のインタフェース。
- 上記リンクリストは、前のバッファを指示するバックワードポインタと次のバッファを指示するフォワードポインタとを含んでいることを特徴とする請求の範囲第29項記載のインタフェース。
- 上記リンクリスト内の各バッファは、データ転送動作中の所定の時点で起動されて上記アプリケーションを呼び出すコールバックルーチンを有することを特徴とする請求の範囲第29項記載のインタフェース。
- 上記リンクリスト内の各バッファは、起動されて上記アプリケーションを転送中のデータの所定の位置に再同期させる再同期イベントを有することを特徴とする請求の範囲第31項記載のインタフェース。
- アプリケーションとIEEE1394規格に準拠したバス間のインタフェースであって、該アプリケーションとバス間のデータ転送動作を管理するインタフェースにおいて、
上記アプリケーションと通信し、該アプリケーションから要求を受信し、該アプリケーションにインストラクションを送るアプリケーションプログラミングインタフェースと、
上記アプリケーションによって割り当てられたバッファと上記バス上のノード間の非同期データ転送動作を行うのに必要なトランザクションを、自動的に生成する自動トランザクション発生器と、
上記バスに物理的インタフェースを提供し、該バスを介してデータパケットを送信及び受信するバスインタフェース回路とを備えるインタフェース。 - 上記アプリケーションが上記アプリケーションプログラミングインタフェースに要求を送ったときに、上記データ転送動作が開始されることを特徴とする請求の範囲第33項記載のインタフェース。
- 上記要求は、上記アプリケーションのバッファのアドレスと、上記バスのスタートアドレスと、転送されるデータの長さと、転送方向とを含むことを特徴とする請求の範囲第34項記載のインタフェース。
- 上記自動トランザクション発生器は、ハードウェア論理回路によって実現されていることを特徴とする請求の範囲第33項記載のインタフェース。
- 上記自動トランザクション発生器は、ソフトウェアによって実現されていることを特徴とする請求の範囲第33項記載のインタフェース。
- アプリケーションにインタフェースを提供し、該アプリケーションとバス間のアイソクロナスデータ転送動作を管理するデータ転送管理方法において、
上記アプリケーションからアイソクロナスデータ転送動作の要求を受信するステップと、
上記アプリケーションからのアイソクロナスデータ転送動作の要求により、該要求されたアイソクロナスデータ転送を、連続したストリームの流れが途切れないように維持するために用いられる複数のバッファにそれぞれ対応するバッファ記述子のリンクリストを管理し、該アプリケーションが別のバッファを処理する間に、1つのバッファとバス間でデータを転送するステップとを有するデータ転送管理方法。 - 上記アプリケーションは、アイソクロナスデータ送信動作中に、1つのバッファにデータを書き込むことを特徴とする請求の範囲第38項記載のデータ転送管理方法。
- 上記アプリケーションは、アイソクロナスデータ受信動作中に、1つのバッファからデータを読み出すことを特徴とする請求の範囲第38項記載のデータ転送管理方法。
- 上記リンクリストは、前のバッファを指示するバックワードポインタと次のバッファを指示するフォワードポインタとを含んでいることを特徴とする請求の範囲第38項記載のデータ転送管理方法。
- 上記リンクリスト内の各バッファは、データ転送動作中の所定の時点で起動されて上記アプリケーションを呼び出すコールバックルーチンを有することを特徴とする請求の範囲第38項記載のデータ転送管理方法。
- 上記リンクリスト内の各バッファは、起動されて上記アプリケーションを転送中のデータの所定の位置に再同期させる再同期イベントを有することを特徴とする請求の範囲第38項記載のデータ転送管理方法。
- 上記リンクリストにバッファを追加するステップを更に有する請求の範囲第41項記載のデータ転送管理方法。
- 上記リンクリストからバッファを削除するステップを更に有する請求の範囲第41項記載のデータ転送管理方法。
- アプリケーションとバスの間のデータ転送動作を管理する該アプリケーションとバス間のインタフェースにおいて、
上記アプリケーションと通信し、該アプリケーションから要求を受信し、該アプリケーションにインストラクションを送る通信手段と、
上記アプリケーションからのアイソクロナスデータ転送動作の要求により、該要求されたアイソクロナスデータ転送を、連続したストリームの流れが途切れないように維持するために用いられる複数のバッファにそれぞれ対応するバッファ記述子のリンクリストを管理し、上記アプリケーションとバス間のアイソクロナスデータ転送を制御するアイソクロナスデータ転送制御手段と、
上記バスを介して転送されるデータパケットを、該バスに送信し、該バスから受信するとともに、監視する手段とを備えるインタフェース。 - 上記バッファは、上記アプリケーションによって提供されることを特徴とする請求の範囲第46項記載のインタフェース。
- 上記リンクリストは、該リンクリスト内の各バッファについて、次のバッファを指示するフォワードポインタを含んでいることを特徴とする請求の範囲第47項記載のインタフェース。
- 上記リンクリストは、該リンクリスト内の各バッファについて、前のバッファを指示するバックワードポインタを含んでいることを特徴とする請求の範囲第48項記載のインタフェース。
- 上記リンクリスト内の各バッファ記述子は、データ転送動作中の所定の時点で起動されて上記アプリケーションを呼び出すコールバックルーチンを有することを特徴とする請求の範囲第46項記載のインタフェース。
- 上記リンクリスト内の各バッファ記述子は、起動されて上記アプリケーションを転送中のデータの所定の位置に再同期させる再同期イベントを有することを特徴とする請求の範囲第46項記載のインタフェース。
- 上記アプリケーションによって割り当てられたバッファと上記バス間の非同期データ転送動作を行うのに必要なトランザクションを、自動的に生成する自動トランザクション発生器(38)を更に備える請求の範囲第46項記載のインタフェース。
- 上記バス(28)は、IEEE1394規格に準拠したバスであることを特徴とする請求の範囲第52項記載のインタフェース。
- 上記リンクリストは、該リンクリスト内の各バッファについて、前のバッファを指示するバックワードポインタと次のバッファを指示するフォワードポインタとを含み、該リンクリストは線形リストとして構成されていることを特徴とする請求の範囲第47項記載のインタフェース。
- 上記アプリケーションは、上記リンクリストにバッファを追加することを特徴とする請求の範囲第54項記載のインタフェース。
- 上記アプリケーションは、上記リンクリストからバッファを削除することを特徴とする請求の範囲第55項記載のインタフェース。
- アプリケーションとIEEE1394規格に準拠したバス間のインタフェースであって、該アプリケーションとバス間のデータ転送動作を管理するインタフェースにおいて、
上記アプリケーションと通信し、該アプリケーションから要求を受信し、該アプリケーションにインストラクションが送るアプリケーションプログラミングインタフェースと、
上記アプリケーションからのアイソクロナスデータ転送動作の要求により、該要求されたアイソクロナスデータ転送を、連続したストリームの流れが途切れないように維持するために用いられるバッファのリンクリストを管理し、該アプリケーションとバス間のアイソクロナスデータ転送を制御する制御手段と、
上記バスに物理的インタフェースを提供し、該バスを介して転送されるデータパケットを送信及び受信するバスインタフェース回路とを備えるインタフェース。 - 上記リンクリストは、該リンクリスト内の各バッファについて、前のバッファを指示するバックワードポインタと次のバッファを指示するフォワードポインタとを含み、該リンクリストは循環リストとして構成されていることを特徴とする請求の範囲第57項記載のインタフェース。
- 上記リンクリスト内の各バッファは、データ転送動作中の所定の時点で起動されて上記アプリケーションを呼び出すコールバックルーチンを有することを特徴とする請求の範囲第58項記載のインタフェース。
- 上記リンクリスト内の各バッファは、起動されて上記アプリケーションを転送中のデータの所定の位置に再同期させる再同期イベントを備えることを特徴とする請求の範囲第59項記載のインタフェース。
- 上記リンクリストは、上記リンクリスト内の各バッファについて、前のバッファを指示するポインタと次のバッファを指示するポインタとを含み、該リンクリストは線形リストとして構成されていることを特徴とする請求の範囲第57項記載のインタフェース。
- 上記アプリケーションは、上記リンクリストにバッファを追加することを特徴とする請求の範囲第61項記載のインタフェース。
- 上記アプリケーションは、上記リンクリストからバッファを削除することを特徴とする請求の範囲第62項記載のインタフェース。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/594,651 US5991520A (en) | 1996-02-02 | 1996-02-02 | Application programming interface for managing and automating data transfer operations between applications over a bus structure |
US08/594,651 | 1996-02-02 | ||
PCT/US1997/001742 WO1997028504A1 (en) | 1996-02-02 | 1997-01-29 | Application programming interface for data transfer and bus management over a bus structure |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000510659A JP2000510659A (ja) | 2000-08-15 |
JP3993893B2 true JP3993893B2 (ja) | 2007-10-17 |
Family
ID=24379801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52789497A Expired - Lifetime JP3993893B2 (ja) | 1996-02-02 | 1997-01-29 | バスを介したデータ転送及びバス管理に用いるアプリケーションプログラミングインターフェイス |
Country Status (10)
Country | Link |
---|---|
US (2) | US5991520A (ja) |
EP (4) | EP2284713A3 (ja) |
JP (1) | JP3993893B2 (ja) |
KR (1) | KR100472908B1 (ja) |
AT (2) | ATE245837T1 (ja) |
AU (1) | AU1855797A (ja) |
CA (1) | CA2244713C (ja) |
DE (2) | DE69723726T2 (ja) |
TW (1) | TW317623B (ja) |
WO (1) | WO1997028504A1 (ja) |
Families Citing this family (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631435B1 (en) | 1996-02-02 | 2003-10-07 | Sony Corporation | Application programming interface for data transfer and bus management over a bus structure |
US5991520A (en) * | 1996-02-02 | 1999-11-23 | Sony Corporation | Application programming interface for managing and automating data transfer operations between applications over a bus structure |
US6233637B1 (en) | 1996-03-07 | 2001-05-15 | Sony Corporation | Isochronous data pipe for managing and manipulating a high-speed stream of isochronous data flowing between an application and a bus structure |
US6519268B1 (en) * | 1996-03-07 | 2003-02-11 | Sony Corporation | Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure |
US5940600A (en) * | 1996-04-01 | 1999-08-17 | Apple Computer, Inc. | Isochronous channel having a linked list of buffers |
JP3783363B2 (ja) * | 1996-10-03 | 2006-06-07 | ソニー株式会社 | データ通信方法、電子機器、及び物理層集積回路 |
US7383341B1 (en) * | 1996-10-15 | 2008-06-03 | Kabushiki Kaisha Toshiba | Data transfer control device, relay device and control device suitable for home network environment |
DE69836771T2 (de) * | 1997-02-14 | 2007-10-31 | Canon K.K. | Vorrichtung, System und Verfahren zur Datenübertragung und Vorrichtung zur Bildverarbeitung |
US6131119A (en) * | 1997-04-01 | 2000-10-10 | Sony Corporation | Automatic configuration system for mapping node addresses within a bus structure to their physical location |
JP3927647B2 (ja) * | 1997-04-21 | 2007-06-13 | キヤノン株式会社 | 情報処理装置、情報処理方法及び情報処理システム |
SE521494C2 (sv) * | 1997-09-24 | 2003-11-04 | Telia Ab | Transmissionssystem för hemnätverk |
JPH11168524A (ja) * | 1997-12-05 | 1999-06-22 | Canon Inc | 通信制御装置および通信制御装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体 |
JPH11177588A (ja) * | 1997-12-10 | 1999-07-02 | Sony Corp | 電子機器及びデータ通信方法 |
EP0932103A1 (en) * | 1998-01-27 | 1999-07-28 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for transferring bi-directionally data between an IEEE 1394 bus and device |
EP0932104B1 (en) * | 1998-01-27 | 2004-10-06 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for transferring bi-directionally data between an IEEE 1394 bus and a device |
US6292844B1 (en) | 1998-02-12 | 2001-09-18 | Sony Corporation | Media storage device with embedded data filter for dynamically processing data during read and write operations |
US6134625A (en) * | 1998-02-18 | 2000-10-17 | Intel Corporation | Method and apparatus for providing arbitration between multiple data streams |
GB2336743B (en) * | 1998-04-24 | 2003-07-09 | Sony Uk Ltd | Digital multi-media device and method relating thereto |
GB2336744B (en) * | 1998-04-24 | 2003-03-26 | Sony Uk Ltd | Digital multi-media device and method relating thereto |
GB2336745B (en) * | 1998-04-24 | 2003-07-09 | Sony Uk Ltd | Digital multi-media device and method relating thereto |
US6230201B1 (en) * | 1998-05-29 | 2001-05-08 | Ip Net Solutions, Inc. | Configurable transaction routing system and method |
US6404771B1 (en) * | 1998-06-17 | 2002-06-11 | Advanced Micro Devices, Inc. | Clock lead/lag extraction in an isochronous data bus |
US6212171B1 (en) * | 1998-06-22 | 2001-04-03 | Intel Corporation | Method and apparatus for gap count determination |
US6496509B1 (en) * | 1998-08-03 | 2002-12-17 | Advanced Micro Devices, Inc. | System for transmitting data packets between computers via an IEEE-1394 network medium |
US6499036B1 (en) * | 1998-08-12 | 2002-12-24 | Bank Of America Corporation | Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation |
US6496862B1 (en) | 1998-08-25 | 2002-12-17 | Mitsubishi Electric Research Laboratories, Inc. | Remote monitoring and control of devices connected to an IEEE 1394 bus via a gateway device |
US6505255B1 (en) | 1999-04-29 | 2003-01-07 | Mitsubishi Electric Information Technology Center America, Inc. (Ita) | Method for formatting and routing data between an external network and an internal network |
US6292842B1 (en) * | 1998-08-28 | 2001-09-18 | Hewlett-Packard Company | Method for transferring data to an application |
KR100316650B1 (ko) * | 1998-08-29 | 2002-01-12 | 윤종용 | 상위 계층 데이터 전송을 위한 상위 프로토콜과 ieee 1394버스 정합 방법 |
US6513085B1 (en) * | 1998-10-13 | 2003-01-28 | Texas Instruments Incorporated | Link/transaction layer controller with integral microcontroller emulation |
US6243778B1 (en) * | 1998-10-13 | 2001-06-05 | Stmicroelectronics, Inc. | Transaction interface for a data communication system |
US6167471A (en) | 1998-10-14 | 2000-12-26 | Sony Corporation | Method of and apparatus for dispatching a processing element to a program location based on channel number of received data |
JP3325839B2 (ja) * | 1998-10-15 | 2002-09-17 | パイオニア株式会社 | 情報送信装置及び方法、情報受信装置及び方法並びに情報送受信装置及び方法 |
US6185632B1 (en) * | 1998-10-19 | 2001-02-06 | Hewlett-Packard Company | High speed communication protocol for IEEE-1394 including transmission of request and reply writes to a datagram-FIFO-address to exchange commands to end a job |
US7362381B1 (en) * | 1998-11-20 | 2008-04-22 | Thomson Licensing | Device interoperability utilizing bit-mapped on-screen display menus |
US6539450B1 (en) * | 1998-11-29 | 2003-03-25 | Sony Corporation | Method and system for adjusting isochronous bandwidths on a bus |
US6327637B1 (en) * | 1998-12-18 | 2001-12-04 | Cirrus Logic, Inc. | Interface tap for 1394-enabled serial bus device |
US6456714B2 (en) * | 1999-03-18 | 2002-09-24 | Sony Corporation | Apparatus and method for interfacing between multimedia network and telecommunications network |
US6631415B1 (en) | 1999-03-19 | 2003-10-07 | Sony Corporation | Method and system for providing a communication connection using stream identifiers |
US6374316B1 (en) | 1999-03-19 | 2002-04-16 | Sony Corporation | Method and system for circumscribing a topology to form ring structures |
US6810452B1 (en) | 1999-03-19 | 2004-10-26 | Sony Corporation | Method and system for quarantine during bus topology configuration |
JP3417872B2 (ja) | 1999-04-07 | 2003-06-16 | 日本電気株式会社 | 交換方法 |
US6421745B1 (en) | 1999-04-12 | 2002-07-16 | Sony Corporation | Asynchronous connections with scattering page tables for transmitting data from a producer device to a consumer device over an IEEE 1394 serial data bus |
US6445711B1 (en) | 1999-04-23 | 2002-09-03 | Sony Corporation | Method of and apparatus for implementing and sending an asynchronous control mechanism packet used to control bridge devices within a network of IEEE STD 1394 serial buses |
US6502158B1 (en) | 1999-04-23 | 2002-12-31 | Sony Corporation | Method and system for address spaces |
US6523064B1 (en) | 1999-04-29 | 2003-02-18 | Mitsubishi Electric Research Laboratories, Inc | Network gateway for collecting geographic data information |
US6378000B1 (en) | 1999-04-29 | 2002-04-23 | Mitsubish Electric Research Laboratories, Inc | Address mapping in home entertainment network |
US6633547B1 (en) | 1999-04-29 | 2003-10-14 | Mitsubishi Electric Research Laboratories, Inc. | Command and control transfer |
US6600756B1 (en) * | 1999-06-14 | 2003-07-29 | Hewlett-Packard Development Company, Lp. | Method of improving the performance of a bus which is asynchronous-traffic intensive |
US6519654B1 (en) * | 1999-07-07 | 2003-02-11 | Sharp Laboratories Of America, Incorporation | Method of designing an interface for a real-time messaging system |
KR100644559B1 (ko) * | 1999-07-26 | 2006-11-13 | 삼성전자주식회사 | 디지털 인터페이스를 갖는 기기의 채널 할당방법 |
US7032024B1 (en) * | 1999-07-29 | 2006-04-18 | Samsung Electronics Co., Ltd. | Connection management method for devices connected digital interface and command structure therefor |
EP1208523A1 (en) * | 1999-08-09 | 2002-05-29 | Cross Match Technologies, Inc. | System and method for sending a packet with position address and line scan data over an interface cable |
KR100662484B1 (ko) * | 1999-08-23 | 2007-01-02 | 엘지전자 주식회사 | 디지털 인터페이스에서의 버스 제어방법 |
KR100611998B1 (ko) * | 1999-08-27 | 2006-08-11 | 삼성전자주식회사 | 상위 프로토콜과 고속 시리얼 버스의 정합방법 |
US7130315B1 (en) | 1999-09-10 | 2006-10-31 | Sony Corporation | Method of and apparatus for utilizing extended AV/C command and response frames including transaction label and common result/error code |
US6754185B1 (en) * | 1999-09-27 | 2004-06-22 | Koninklijke Philips Electronics N.V. | Multi link layer to single physical layer interface in a node of a data communication system |
US6247071B1 (en) * | 1999-10-04 | 2001-06-12 | B2C2, Inc. | System for receiving an isochronous data stream at a computer using a main memory buffer |
US6721859B1 (en) | 1999-10-21 | 2004-04-13 | Sony Corporation | Multi-protocol media storage device implementing protocols optimized for storing and retrieving both asynchronous and isochronous data |
US6711181B1 (en) | 1999-11-17 | 2004-03-23 | Sony Corporation | System and method for packet parsing and data reconstruction in an IEEE 1394-1995 serial bus network |
US6523108B1 (en) | 1999-11-23 | 2003-02-18 | Sony Corporation | Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string |
US6728821B1 (en) | 1999-11-29 | 2004-04-27 | Sony Corporation | Method and system for adjusting isochronous bandwidths on a bus |
US7023801B1 (en) * | 1999-12-07 | 2006-04-04 | Lsi Logic Corporation | Speculative packet selection for transmission of isochronous data |
US7062779B1 (en) * | 1999-12-10 | 2006-06-13 | Sun Microsystems, Inc. | Methods and apparatus for accessing synchronized broadcast data |
DE69940781D1 (de) * | 1999-12-30 | 2009-06-04 | Sony Deutschland Gmbh | Schnittstellenverbindungsschicht- Einrichtung zum Aufbau eines verteilten Netzwerks |
US7895610B1 (en) * | 2000-01-18 | 2011-02-22 | Koninklijke Philips Electronics N.V. | System and method for displaying information on the screen of a user interface device under the control of a digital audio playback device |
US6647446B1 (en) | 2000-03-18 | 2003-11-11 | Sony Corporation | Method and system for using a new bus identifier resulting from a bus topology change |
US7006515B1 (en) * | 2000-04-07 | 2006-02-28 | Omneon Video Networks | Isochronous queue and buffer management |
US6795854B1 (en) * | 2000-04-21 | 2004-09-21 | Polarlake Limited | Operating system for structured information processing |
US6647448B1 (en) | 2000-06-29 | 2003-11-11 | Sony Corporation | Method and apparatus for managing resource schedules in a peer to peer distributed networking environment |
US6757773B1 (en) | 2000-06-30 | 2004-06-29 | Sony Corporation | System and method for determining support capability of a device coupled to a bus system |
US6901444B1 (en) * | 2000-06-30 | 2005-05-31 | Sony Corporation | Method of and apparatus for communicating data structures between devices in a networking environment |
US7720821B1 (en) | 2000-06-30 | 2010-05-18 | Sony Corporation | Method of and apparatus for writing and reading time sensitive data within a storage device |
US6725311B1 (en) * | 2000-09-14 | 2004-04-20 | Microsoft Corporation | Method and apparatus for providing a connection-oriented network over a serial bus |
US6687699B1 (en) * | 2000-09-15 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | System and method for tracking computer data |
US6647447B1 (en) * | 2000-12-29 | 2003-11-11 | Sony Corporation | Allocating isochronous channel numbers to devices on an IEEE-1394 bus |
US6977939B2 (en) * | 2001-01-26 | 2005-12-20 | Microsoft Corporation | Method and apparatus for emulating ethernet functionality over a serial bus |
US6820150B1 (en) * | 2001-04-11 | 2004-11-16 | Microsoft Corporation | Method and apparatus for providing quality-of-service delivery facilities over a bus |
US7028132B2 (en) * | 2001-09-29 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | Distributed peer-to-peer communication for interconnect busses of a computer system |
US6871248B2 (en) * | 2001-09-29 | 2005-03-22 | Hewlett-Packard Development Company, L.P. | Isochronous transactions for interconnect busses of a computer system |
US7003604B2 (en) * | 2001-10-04 | 2006-02-21 | Sony Corporation | Method of and apparatus for cancelling a pending AV/C notify command |
US6944704B2 (en) * | 2001-10-04 | 2005-09-13 | Sony Corporation | Method and apparatus for utilizing extended AV/C command frames including status inquiry, notify inquiry and control inquiry command types |
US20030125993A1 (en) * | 2001-12-27 | 2003-07-03 | Ho Chi Fai | Method and system for event distribution |
US20040015539A1 (en) * | 2002-07-16 | 2004-01-22 | Andrew Alegria | Content exporting from one application to another |
US20040034710A1 (en) * | 2002-08-13 | 2004-02-19 | Frank Rau | Data transfer operations |
US7308517B1 (en) * | 2003-12-29 | 2007-12-11 | Apple Inc. | Gap count analysis for a high speed serialized bus |
US20050172241A1 (en) * | 2004-01-08 | 2005-08-04 | International Business Machines Corporation | System and method for improved direct system clipboard |
US7334056B2 (en) * | 2004-08-09 | 2008-02-19 | Lsi Logic Corporation | Scalable architecture for context execution |
US7185123B2 (en) * | 2004-09-15 | 2007-02-27 | Qualcomm Incorporated | Method and apparatus for allocating bandwidth on a transmit channel of a bus |
KR100677143B1 (ko) * | 2004-10-15 | 2007-02-02 | 삼성전자주식회사 | 등시성 스트림 전송 방법 및 장치 |
US7774304B2 (en) * | 2005-01-31 | 2010-08-10 | International Business Machines Corporation | Method, apparatus and program storage device for managing buffers during online reorganization |
US20060224766A1 (en) * | 2005-03-31 | 2006-10-05 | Malackowski Donald W | Operating room communication bus and method |
US7831624B2 (en) | 2005-06-24 | 2010-11-09 | Seagate Technology Llc | Skip list with address related table structure |
CN100456262C (zh) * | 2005-12-05 | 2009-01-28 | 迈普(四川)通信技术有限公司 | 一种主动回收数据缓冲区的方法 |
US7739422B2 (en) * | 2006-03-21 | 2010-06-15 | International Business Machines Corporation | Method to improve system DMA mapping while substantially reducing memory fragmentation |
FR2925190B1 (fr) * | 2007-12-18 | 2009-11-20 | Alcatel Lucent | Procede et dispositif de communication entre plusieurs interfaces de connexion |
US8612637B2 (en) * | 2011-09-25 | 2013-12-17 | National Instruments Corportion | Configuring buffers with timing information |
US9268621B2 (en) * | 2011-11-02 | 2016-02-23 | Red Hat, Inc. | Reducing latency in multicast traffic reception |
US8869168B2 (en) * | 2012-05-14 | 2014-10-21 | International Business Machines Corporation | Scheduling synchronization in association with collective operations in a parallel computer |
US9288163B2 (en) * | 2013-03-15 | 2016-03-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Low-latency packet receive method for networking devices |
JP6090751B2 (ja) * | 2013-09-27 | 2017-03-08 | サイレックス・テクノロジー株式会社 | デバイスサーバとその制御方法 |
CN110765138B (zh) * | 2019-10-31 | 2023-01-20 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2221629C3 (de) | 1972-05-03 | 1978-04-27 | Siemens Ag, 1000 Berlin Und 8000 Muenchen | Verfahren zur Synchronisierung in Zeitmultiplex-Übertragungssystemen |
US3906484A (en) | 1972-09-13 | 1975-09-16 | Westinghouse Electric Corp | Decoder input circuit for receiving asynchronous data bit streams |
US4218756A (en) | 1978-06-19 | 1980-08-19 | Bell Telephone Laboratories, Incorporated | Control circuit for modifying contents of packet switch random access memory |
US4409656A (en) | 1980-03-13 | 1983-10-11 | Her Majesty The Queen, In Right Of Canada As Represented By The Minister Of National Defense | Serial data bus communication system |
US4395710A (en) | 1980-11-26 | 1983-07-26 | Westinghouse Electric Corp. | Bus access circuit for high speed digital data communication |
US4379294A (en) | 1981-02-12 | 1983-04-05 | Electric Power Research Institute, Inc. | Data highway access control system |
US4493021A (en) * | 1981-04-03 | 1985-01-08 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Multicomputer communication system |
US4633392A (en) | 1982-04-05 | 1986-12-30 | Texas Instruments Incorporated | Self-configuring digital processor system with logical arbiter |
GB8304950D0 (en) | 1983-02-22 | 1983-03-23 | Int Computers Ltd | Data communication systems |
US4897783A (en) | 1983-03-14 | 1990-01-30 | Nay Daniel L | Computer memory system |
US4857910A (en) * | 1983-12-19 | 1989-08-15 | Pitney Bowes Inc. | Bit-map CRT display control |
US4739323A (en) | 1986-05-22 | 1988-04-19 | Chrysler Motors Corporation | Serial data bus for serial communication interface (SCI), serial peripheral interface (SPI) and buffered SPI modes of operation |
EP0267974B1 (en) * | 1986-11-14 | 1992-02-19 | International Business Machines Corporation | Control interface for transferring data between a data processing unit and input/output devices |
US4972470A (en) | 1987-08-06 | 1990-11-20 | Steven Farago | Programmable connector |
US4998245A (en) * | 1987-12-17 | 1991-03-05 | Matsushita Electric Industrial Co., Ltd. | Information transmission system having collective data transmission and collection devices |
US5008879B1 (en) | 1988-11-14 | 2000-05-30 | Datapoint Corp | Lan with interoperative multiple operational capabilities |
US5359713A (en) * | 1989-06-01 | 1994-10-25 | Legato Systems, Inc. | Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system |
JPH03123232A (ja) | 1989-10-06 | 1991-05-27 | Matsushita Electric Ind Co Ltd | データ伝送制御処理方法 |
JPH03156554A (ja) * | 1989-11-14 | 1991-07-04 | Hitachi Ltd | データ転送制御方式 |
EP0447145B1 (en) * | 1990-03-12 | 2000-07-12 | Hewlett-Packard Company | User scheduled direct memory access using virtual addresses |
US5546553A (en) | 1990-09-24 | 1996-08-13 | Texas Instruments Incorporated | Multifunctional access devices, systems and methods |
US5307491A (en) * | 1991-02-12 | 1994-04-26 | International Business Machines Corporation | Layered SCSI device driver with error handling circuit providing sense data from device directly to the driver on the occurrence of an error |
US5369773A (en) * | 1991-04-26 | 1994-11-29 | Adaptive Solutions, Inc. | Neural network using virtual-zero |
JP3243803B2 (ja) | 1991-08-28 | 2002-01-07 | ソニー株式会社 | Av機器 |
US5487153A (en) * | 1991-08-30 | 1996-01-23 | Adaptive Solutions, Inc. | Neural network sequencer and interface apparatus |
US5471632A (en) * | 1992-01-10 | 1995-11-28 | Digital Equipment Corporation | System for transferring data between a processor and a system bus including a device which packs, unpacks, or buffers data blocks being transferred |
US5475860A (en) * | 1992-06-15 | 1995-12-12 | Stratus Computer, Inc. | Input/output control system and method for direct memory transfer according to location addresses provided by the source unit and destination addresses provided by the destination unit |
US5497466A (en) | 1992-07-17 | 1996-03-05 | Texas Instruments Inc. | Universal address generator |
EP0588046A1 (en) * | 1992-08-14 | 1994-03-23 | International Business Machines Corporation | IEEE standard 802.2 virtual device driver |
US5647057A (en) * | 1992-08-24 | 1997-07-08 | Texas Instruments Incorporated | Multiple block transfer mechanism |
US5499344A (en) | 1992-10-07 | 1996-03-12 | Texas Instruments Incorporated | Programmable dual port data unit for interfacing between multiple buses |
KR100305268B1 (ko) * | 1992-11-02 | 2001-11-22 | 아담 씨. 스트리겔 | 스위칭메카니즘에서의등시(等時)데이타의국부루프백 |
US5550802A (en) * | 1992-11-02 | 1996-08-27 | National Semiconductor Corporation | Data communication network with management port for isochronous switch |
EP0596648A1 (en) | 1992-11-02 | 1994-05-11 | National Semiconductor Corporation | Network link endpoint capability detection |
EP0596651A1 (en) * | 1992-11-02 | 1994-05-11 | National Semiconductor Corporation | Network for data communication with isochronous capability |
US5544324A (en) * | 1992-11-02 | 1996-08-06 | National Semiconductor Corporation | Network for transmitting isochronous-source data using a frame structure with variable number of time slots to compensate for timing variance between reference clock and data rate |
KR940017376A (ko) | 1992-12-21 | 1994-07-26 | 오오가 노리오 | 송신 방법, 수신 방법, 통신 방법 및 쌍방향 버스 시스템 |
GB2275852B (en) * | 1993-03-05 | 1997-02-26 | Sony Broadcast & Communication | Signal synchroniser with resynchronise control |
US5509126A (en) * | 1993-03-16 | 1996-04-16 | Apple Computer, Inc. | Method and apparatus for a dynamic, multi-speed bus architecture having a scalable interface |
US5559967A (en) * | 1993-03-18 | 1996-09-24 | Apple Computer, Inc. | Method and apparatus for a dynamic, multi-speed bus architecture in which an exchange of speed messages occurs independent of the data signal transfers |
DE4323405A1 (de) | 1993-07-13 | 1995-01-19 | Sel Alcatel Ag | Zugangskontrollverfahren für einen Pufferspeicher sowie Vorrichtung zum Zwischenspeichern von Datenpaketen und Vermittlungsstelle mit einer solchen Vorrichtung |
US5887145A (en) | 1993-09-01 | 1999-03-23 | Sandisk Corporation | Removable mother/daughter peripheral card |
US5444709A (en) | 1993-09-30 | 1995-08-22 | Apple Computer, Inc. | Protocol for transporting real time data |
CA2134061A1 (en) * | 1993-10-28 | 1995-04-29 | Aaron William Ogus | Frame buffering of network packets |
US5835726A (en) | 1993-12-15 | 1998-11-10 | Check Point Software Technologies Ltd. | System for securing the flow of and selectively modifying packets in a computer network |
US5659780A (en) * | 1994-02-24 | 1997-08-19 | Wu; Chen-Mie | Pipelined SIMD-systolic array processor and methods thereof |
DE69520378T2 (de) * | 1994-03-09 | 2001-10-31 | Matsushita Electric Industrial Co., Ltd. | Datenübertragungssystem und Verfahren |
US5465402A (en) | 1994-03-23 | 1995-11-07 | Uniden America Corp. | Automatic frequency transfer and storage method |
JP3129143B2 (ja) | 1994-05-31 | 2001-01-29 | 松下電器産業株式会社 | データ転送方法 |
US5689244A (en) | 1994-06-24 | 1997-11-18 | Sony Corporation | Communication system and electronic apparatus |
JP3458469B2 (ja) * | 1994-07-15 | 2003-10-20 | ソニー株式会社 | 信号受信装置及び通信方法 |
US5687316A (en) | 1994-07-29 | 1997-11-11 | International Business Machines Corporation | Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data |
US5586264A (en) * | 1994-09-08 | 1996-12-17 | Ibm Corporation | Video optimized media streamer with cache management |
US5603058A (en) * | 1994-09-08 | 1997-02-11 | International Business Machines Corporation | Video optimized media streamer having communication nodes received digital data from storage node and transmitted said data to adapters for generating isochronous digital data streams |
US5548587A (en) * | 1994-09-12 | 1996-08-20 | Efficient Networks, Inc. | Asynchronous transfer mode adapter for desktop applications |
US5617419A (en) * | 1994-09-20 | 1997-04-01 | International Business Machines Corporation | Adapting switch port and work station communication adapters to data frame types with disparate formats and data rates |
JP3371174B2 (ja) * | 1994-09-22 | 2003-01-27 | ソニー株式会社 | パケット受信装置 |
US5619646A (en) | 1994-09-27 | 1997-04-08 | International Business Machines Corporation | Method and system for dynamically appending a data block to a variable length transmit list while transmitting another data block over a serial bus |
US5632016A (en) | 1994-09-27 | 1997-05-20 | International Business Machines Corporation | System for reformatting a response packet with speed code from a source packet using DMA engine to retrieve count field and address from source packet |
US5640592A (en) | 1994-09-30 | 1997-06-17 | Mitsubishi Kasei America, Inc. | System for transferring utility algorithm stored within a peripheral device to a host computer in a format compatible with the type of the host computer |
WO1996013776A1 (en) | 1994-10-31 | 1996-05-09 | Intel Corporation | M & a for exchanging data, status, and commands over a hierarchical serial bus assembly using communication packets |
US5602853A (en) * | 1994-11-03 | 1997-02-11 | Digital Equipment Corporation | Method and apparatus for segmentation and reassembly of ATM packets using only dynamic ram as local memory for the reassembly process |
US5704052A (en) * | 1994-11-06 | 1997-12-30 | Unisys Corporation | Bit processing unit for performing complex logical operations within a single clock cycle |
US5664124A (en) * | 1994-11-30 | 1997-09-02 | International Business Machines Corporation | Bridge between two buses of a computer system that latches signals from the bus for use on the bridge and responds according to the bus protocols |
KR0138964B1 (ko) | 1994-12-14 | 1998-06-15 | 김주용 | 데이타 포멧 변화기를 포함한 차분 펄스 코드 변조기 |
US5526353A (en) | 1994-12-20 | 1996-06-11 | Henley; Arthur | System and method for communication of audio data over a packet-based network |
US5533018A (en) | 1994-12-21 | 1996-07-02 | National Semiconductor Corporation | Multi-protocol packet framing over an isochronous network |
US5835733A (en) | 1994-12-22 | 1998-11-10 | Texas Instruments Incorporated | Method and apparatus for implementing a single DMA controller to perform DMA operations for devices on multiple buses in docking stations, notebook and desktop computer system |
US5781780A (en) | 1994-12-22 | 1998-07-14 | Texas Instruments Incorporated | Power management supply interface circuitry, systems and methods |
US5559796A (en) * | 1995-02-28 | 1996-09-24 | National Semiconductor Corporation | Delay control for frame-based transmission of data |
US5594732A (en) | 1995-03-03 | 1997-01-14 | Intecom, Incorporated | Bridging and signalling subsystems and methods for private and hybrid communications systems including multimedia systems |
JP3249334B2 (ja) | 1995-04-06 | 2002-01-21 | 株式会社東芝 | ディジタルインターフェース装置及びディジタルインターフェース方法 |
FI98028C (fi) | 1995-05-03 | 1997-03-25 | Nokia Mobile Phones Ltd | Datasovitin |
US5793953A (en) | 1995-07-07 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for allowing packet data to be separated over multiple bus targets |
US5815678A (en) | 1995-07-14 | 1998-09-29 | Adaptec, Inc. | Method and apparatus for implementing an application programming interface for a communications bus |
US5787298A (en) | 1995-08-18 | 1998-07-28 | General Magic, Inc. | Bus interface circuit for an intelligent low power serial bus |
US5692211A (en) * | 1995-09-11 | 1997-11-25 | Advanced Micro Devices, Inc. | Computer system and method having a dedicated multimedia engine and including separate command and data paths |
US5970236A (en) | 1995-11-14 | 1999-10-19 | Compaq Computer Corporation | Circuit for selectively performing data format conversion |
US5812883A (en) | 1995-11-22 | 1998-09-22 | Mitsubishi Chemical America, Inc. | System for reading and storing formatting information after formatting a first storage medium and using the stored formatting information to format a second storage medium |
US5991520A (en) * | 1996-02-02 | 1999-11-23 | Sony Corporation | Application programming interface for managing and automating data transfer operations between applications over a bus structure |
US5828416A (en) | 1996-03-29 | 1998-10-27 | Matsushita Electric Corporation Of America | System and method for interfacing a transport decoder to a elementary stream video decorder |
US5761430A (en) | 1996-04-12 | 1998-06-02 | Peak Audio, Inc. | Media access control for isochronous data packets in carrier sensing multiple access systems |
WO1998002881A1 (fr) | 1996-07-15 | 1998-01-22 | Kabushiki Kaisha Toshiba | Appareil comportant une interface numerique, systeme de reseau mettant en oeuvre cet appareil et procede de protection contre la copie |
US5761457A (en) | 1996-10-21 | 1998-06-02 | Advanced Micro Devices Inc. | Inter-chip bus with fair access for multiple data pipes |
US5938752C1 (en) | 1997-05-20 | 2002-02-05 | Microsoft Corp | System and method for encapsulating legacy data transport protocols for ieee 1394 serial bus |
US6085270A (en) | 1998-06-17 | 2000-07-04 | Advanced Micro Devices, Inc. | Multi-channel, multi-rate isochronous data bus |
-
1996
- 1996-02-02 US US08/594,651 patent/US5991520A/en not_active Expired - Lifetime
-
1997
- 1997-01-22 TW TW086100682A patent/TW317623B/zh not_active IP Right Cessation
- 1997-01-29 EP EP10009998.5A patent/EP2284713A3/en not_active Ceased
- 1997-01-29 EP EP97904203A patent/EP0877983B1/en not_active Expired - Lifetime
- 1997-01-29 DE DE69723726T patent/DE69723726T2/de not_active Expired - Lifetime
- 1997-01-29 WO PCT/US1997/001742 patent/WO1997028504A1/en active IP Right Grant
- 1997-01-29 KR KR10-1998-0705954A patent/KR100472908B1/ko not_active IP Right Cessation
- 1997-01-29 EP EP00119272A patent/EP1056016A3/en not_active Ceased
- 1997-01-29 CA CA002244713A patent/CA2244713C/en not_active Expired - Lifetime
- 1997-01-29 AT AT99112447T patent/ATE245837T1/de not_active IP Right Cessation
- 1997-01-29 EP EP99112447A patent/EP0952526B1/en not_active Expired - Lifetime
- 1997-01-29 JP JP52789497A patent/JP3993893B2/ja not_active Expired - Lifetime
- 1997-01-29 AT AT97904203T patent/ATE199987T1/de not_active IP Right Cessation
- 1997-01-29 AU AU18557/97A patent/AU1855797A/en not_active Abandoned
- 1997-01-29 DE DE69704344T patent/DE69704344T2/de not_active Expired - Lifetime
-
1999
- 1999-06-21 US US09/337,057 patent/US6243783B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69723726T2 (de) | 2004-04-22 |
DE69723726D1 (de) | 2003-08-28 |
EP2284713A3 (en) | 2013-12-18 |
ATE199987T1 (de) | 2001-04-15 |
TW317623B (ja) | 1997-10-11 |
AU1855797A (en) | 1997-08-22 |
WO1997028504A1 (en) | 1997-08-07 |
DE69704344T2 (de) | 2001-10-31 |
EP1056016A2 (en) | 2000-11-29 |
ATE245837T1 (de) | 2003-08-15 |
KR19990082226A (ko) | 1999-11-25 |
EP0877983A1 (en) | 1998-11-18 |
EP0952526A2 (en) | 1999-10-27 |
KR100472908B1 (ko) | 2005-07-21 |
EP0877983B1 (en) | 2001-03-21 |
CA2244713C (en) | 2003-04-15 |
EP0952526B1 (en) | 2003-07-23 |
DE69704344D1 (de) | 2001-04-26 |
US5991520A (en) | 1999-11-23 |
EP2284713A2 (en) | 2011-02-16 |
JP2000510659A (ja) | 2000-08-15 |
US6243783B1 (en) | 2001-06-05 |
CA2244713A1 (en) | 1997-08-07 |
EP0952526A3 (en) | 2001-10-04 |
EP1056016A3 (en) | 2002-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3993893B2 (ja) | バスを介したデータ転送及びバス管理に用いるアプリケーションプログラミングインターフェイス | |
US6901474B2 (en) | Application programming interface for data transfer and bus management over a bus structure | |
JP4155413B2 (ja) | アプリケーションとバス間の非同期データ転送を自動的に管理する非同期データパイプ | |
US5940600A (en) | Isochronous channel having a linked list of buffers | |
US7590133B2 (en) | Data communication system, data communication method, and data communication apparatus | |
US6651119B2 (en) | Method for allocating priorities to plurality of DMA engines for processing data packets based on bus phase and transactions status | |
US7577782B2 (en) | Application programming interface for data transfer and bus management over a bus structure | |
JP4181688B2 (ja) | データ通信システム及びデータ通信装置 | |
JP2001521356A (ja) | Ieee1394シリアルバスのノード内におけるバスパケットの伝送方向の検出及び制御の方法及び装置 | |
US6728834B2 (en) | System and method for effectively implementing isochronous processor cache | |
JPH10229410A (ja) | データ処理装置、電子機器および通信システム | |
JP2003501892A (ja) | 電子ネットワークにおけるコンテクストを切り換える装置及び方法 | |
KR100311707B1 (ko) | 데이타 통신 시스템, 데이타 통신 방법, 데이타 통신 장치 및 디지탈 인터페이스 | |
JP3385899B2 (ja) | リアルタイム通信方法 | |
WO2000062179A1 (en) | Asynchronous data transmission with scattering page tables | |
JP2000032005A (ja) | デ―タ通信システム、デ―タ通信方法、デ―タ通信装置、デジタルインタフェ―ス及び記憶媒体 | |
JPH11252153A (ja) | データ通信システム、データ通信装置及びデータ通信方法 | |
JP2000284977A (ja) | ポート接続制御装置 | |
JPH11177589A (ja) | データ転送装置およびデータ転送装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体 | |
JP2001237861A (ja) | データ通信装置、データ通信システムおよびデータ通信方法 | |
JP2002051048A (ja) | データ転送システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060221 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060522 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060703 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060821 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070220 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070330 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070521 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070525 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070710 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070730 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100803 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110803 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110803 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120803 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130803 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |