(57)【特許請求の範囲】
【請求項１】
通信バスを介して受信され、ヘッダデータフィールド及び選択的なペイロードデータフィールドを含み、少なくとも上記ヘッダデータフィールドが複数のマルチバイトデータワードで編成されているデータパケットをバスインタフェースユニットにおいて前処理する方法であって、
アプリケーションデータ処理ユニットでのデータパケット処理の準備のため、上記データパケットの送り先である上記アプリケーションデータ処理ユニットがビッグエンディアンタイプ若しくはリトルエンディアンタイプのいずれのタイプであるかを明らかにする情報項目に依存して、上記ヘッダデータフィールドの上記マルチバイトデータワードのバイト順序を並べ替える段階、又は、上記ペイロードデータフィールドのバイト順序を並べ替える段階を有し、
付加ヘッダが、上記バスインタフェースユニット内で上記データパケットに追加され、
２ビットのバイト順序検出ビットが、上記付加ヘッダのマルチバイトデータワードの中の２バイトに収容される、ことを特徴とする方法。
【請求項２】
上記ペイロードデータフィールドのバイト順序を並べ替える段階は、上記ヘッダデータフィールド及び上記ペイロードデータフィールド内のバイト順序を並べ替える更なる段階が付け加えられる、請求項１記載の方法。
【請求項３】
上記ヘッダデータフィールド及び上記ペイロードデータフィールド内のバイト順序を並べ替える更なる段階は、上記バスインタフェースユニットから上記アプリケーションデータ処理ユニットのメモリに上記データパケットを転送するデータバスに持続的な配線式クロスコネクションを作製することによって行なわれる、請求項２記載の方法。
【請求項４】
上記情報項目は上記アプリケーションデータ処理ユニットの初期化中に上記バスインタフェースユニットに書き込まれる、請求項１乃至３のうちいずれか一項記載の方法。
【請求項５】
上記通信バスはIEEE1394バスであり、バイト順序が並べ替えられる上記データパケットは非同期データパケットである、請求項１乃至４のうちいずれか一項記載の方法。
【請求項６】
初期化中に設定されるリトルエンディアン若しくはビッグエンディアンを支援すフラグを含む状態レジスタと、
上記フラグ内のエントリーの制御下で、データパケットのヘッダデータフィールドのマルチバイトデータワードのバイト、又は、ペイロードデータフィールドのバイトのバイト順序を並べ替える回路とを有する、請求項１乃至５のうちいずれか一項記載の方法において使用されるバスインタフェースユニット。
【請求項７】
ビッグエンディアンタイプであるか、リトルエンディアンタイプであるかを明らかにする情報項目が格納されたメモリと、
初期化中に上記情報項目をバスインタフェースユニットに転送する手段とを含む、請求項１乃至４のうちいずれか一項記載の方法において使用されるアプリケーションデータ処理ユニット。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信バスを介して受信されたデータパケットをバスインタフェースユニットにおいて前処理する方法、この方法で使用するためのバスインタフェースユニット、及び、この方法で使用するためのアプリケーションデータ処理ユニットに関する。
【０００２】
【従来の技術】
非常に精巧な通信バスであるIEEE1394バスは、低コストかつ高性能の直列バスである。IEEE1394バスは、リード／ライトメモリアーキテクチャと、非常に洗練された通信プロトコルとを有する。100Mbit/s、200Mbit/s、若しくは、400Mbit/sのデータレートで略実時間的に伝送することが可能である。同時に、データは双方向伝送され得る。伝送アドレス値の中の最初の１０ビットは、最大で１０２３個の実現可能なIEEE1394バスクラスタの中の一つのクラスタを指定する。伝送アドレス値の中の次の６ビットは、特定のクラスタ内の最大６３ノード中でアプリケーション若しくは装置が割り当てられる１ノードを指定する。ノード間のデータはホストコントローラとの相互作用を行なうことなく交換可能である。装置は、いつでもネットワークに接続し、ネットワークから切断することが可能であり、プラグ・アンド・プレイ規格に準拠できる。
【０００３】
通信プロトコルは、物理レイヤと、データリンクレイヤと、トランザクションレイヤとからなる３レイヤを有する。典型的に、トランザクションレイヤは、ファームウェア、すなわち、アプリケーションデータ処理ユニット若しくはバスステーションの制御プロセッサ内のソフトウェアによって実現され、その他のレイヤは、チップセットを用いてバスインタフェース内に実装される。
【０００４】
物理レイヤは、アナログトランシーバーと、デジタル状態機械とを含む。物理レイヤは、バス自動コンフィギュレーション及びホットプラグを取り扱う。物理レイヤは、全てのパケットを再同期、再生成、再現し、全てのデータパケットをローカルデータリンクレイヤに転送する。物理レイヤは、パケットフレーミング、たとえば、スピードコード、プリフィックス、及び、パケットエンドの組立を行なう。物理レイヤは、ローカルリンクレイヤからのパケットを調停し、伝送する。入手可能なＩＣタイプは、たとえば、Texas Instruments製のTSB11C01、TSB11LV01、TSB21LV03及びTSB41LV03と、富士通製のMB86611と、IBM製の21S750である。
【０００５】
データリンクレイヤは、データパケットをその宛先に配信する全ての段階を実行する。データリンクレイヤは、アドレス認識によって、ノードにアドレス指定されたパケットを認識し、パケットヘッダを復号する。データリンクレイヤは、パケットを上位レイヤに送出し、上位レイヤからのパケットを生成する。データリンクレイヤは、AVデータ用途には同期的に働き、制御データ用途には非同期的に働く。
【０００６】
同期モードにおいて、保証帯域幅を有するチャネルが確立される。この場合、明確な待ち時間が存在する。伝送は、125μsのタイムスロット若しくはサイクルで行なわれる。このモードは非同期データ転送モードよりも高優先度を有する。
【０００７】
非同期モードは、時間的な制約が厳しくないが、安全である。非同期モードは、ビジー・アンド・リトライ・プロトコルを備えた承認付きサービスとして機能する。伝送は、バスがアイドル状態であるときに行なわれる。非同期モードは、リード要求／応答と、ライト要求／応答と、ロック要求／応答とを取り扱う。非同期モードは、巡回制御、CRC生成、及び、検証を行なう。入手可能なデータリンクレイヤ用のＩＣタイプは、たとえば、Texas Instruments製のTSB12C01A、TSB12LV21、TSB12LV31及びTSB12LV41と、Philips製のPDI1394L11とである。
【０００８】
トランザクションレイヤは、以下の非同期バストランザクションを実現する。
・リード要求／リード応答
・ライト要求／ライト応答
・ロック要求／ロック応答
上記の通り、トランザクションレイヤは、たとえば、SpacLite i960のようなマイクロコントローラ上で動くソフトウェアによって実現され得る。また、装置制御、コネクション管理、タイムスタンプ、及び、パケット化を行なうAV（オーディオ  ビデオ）レイヤが設けられる場合がある。
【０００９】
IEEE1394システムにおいて、データリンクレイヤは、（物理レイヤを介して）外部アプリケーションとIEEE1394バスの間のインタフェースとして作用する。外部アプリケーションは、たとえば、待ち時間に関して厳しい同期データ及び待ち時間に厳しくない非同期データを送信／受信するセットトップボックス、VCR、若しくは、DVDプレーヤーのような消費者電子装置でもよい。ここで、非同期データパケットは、動作を制御し、或いは、レジスタのリード／ライト／ロック動作を制御するため使用される。同期データパケットは、ビデオデータ／オーディオデータのような情報項目を収容する。外部アプリケーションは、非同期データパケットだけを送受信するハードディスクドライブ装置のようなパーソナルコンピュータに関連した装置でもよい。以下の説明で、非同期データパケットは、オーディオ／データパケットを含むあらゆる種類のデータを包含する。
【００１０】
IEEE1394バス規格において、データパケットは、クワッドレット単位で配置される（１クワッドレットは、３２ビットに対応する４バイトにより構成される）。この規格では、さらに、バスインタフェースユニット自体が「ビッグエンディアン」タイプからなることが要求される。ここで、「ビッグエンディアン」とは、最上位バイトが最も低いアドレスに格納され、以下同様に続くようにクワッドレット内のバイト順序が決められることを意味する。この表現のより詳細な定義は後述される。コンピュータ技術において、２通りのバイト順序スキームが知られている。一方は、ビッグエンディアンタイプであり、他方は、リトルエンディアンタイプである。リトルエンディアンタイプのマイクロプロセッサの場合に、マルチバイトデータワードのバイトは、小さい方が端になる順序に、すなわち、最下位バイトが最も低いアドレスに格納され、以下同様に続くように格納される。両方のタイプは超小型電子技術において非常に頻繁に使用される。ビッグエンディアンタイプとリトルエンディアンタイプの両方のタイプのマイクロコントローラ若しくはマイクロプロセッサを入手可能である。
【００１１】
【発明が解決しようとする課題】
IEEE1394バスインタフェースを用いてバスステーションを設計する場合、ターゲットマイクロコントローラのバイト順序に従って非同期データパケットヘッダ内のクワッドレットのバイト順序を並べる問題が生ずる。なぜならば、ヘッダデータ評価はトランザクションレイヤに属するので、このヘッダデータはターゲットマイクロコントローラ内で評価されなければならないからである。一つの解決法は、ターゲットマイクロコントローラ内で、バスインタフェースユニットからデータを読み出した後に、ソフトウェアによってバイト順序の並べ替えを行なうことである。しかし、この解決法は、ターゲットマイクロコントローラがリトルエンディアンタイプである場合に、ターゲットマイクロコントローラ側での性能を低下させるバイト順序の並べ替え作業を行なわなければならないという欠点がある。
【００１２】
【課題を解決するための手段】
上記の従来技術の問題点に鑑み、本発明は、最初に、ハードウェア形式のデータリンクレイヤユニット内で、アプリケーションデータ処理ユニットがビッグエンディアンタイプ若しくはリトルエンディアンタイプのどちらのタイプであるかを明らかにする情報項目に依存して非同期データパケットのヘッダクワッドレットのバイト順序の変更を行なうというアイデアによって構成される。
【００１３】
データリンクレイヤユニットが、マルチバイト型データワードエントリーを有する多数のレジスタを具備したレジスタファイルを有する場合、この解決法には、これらのレジスタ内のエントリーのバイトは、制御プロセッサがリンクレイヤユニットとは異なるタイプであるならば、制御プロセッサ内で翻訳される際に、並べ替えをされなければならないという欠点がある。
【００１４】
そこで、本発明は、ヘッダデータフィールド内のバイト順序を変更するのではなく、ペイロードデータフィールド内のバイト順序の変更を行なうという2番目のアイデアにより構成される。このようなペイロードデータフィールド内のバイト順序の変更を行なうことによって、バイト順序を並べ替えるための多重化装置は非常に簡単に構成できるようになる。その理由は、多重化装置の制御がレジスタファイルエントリーのような他のデータ成分を考慮しなくてもよいからである。
【００１５】
両方の解決法は、アプリケーションデータ処理ユニットの処理能力がバイト順序の並べ替えのために必要とされない点が有利である。また、アプリケーションデータ処理ユニットのソフトウェアが簡単化されるという利点が得られる。
【００１６】
有利的には、本発明の方法の他の実施例は従属請求項に開示される。
【００１７】
たとえば、ペイロードデータフィールドのバイトの順序を並べ替える段階は、請求項２に記載されているように、ヘッダデータフィールド及びペイロードデータフィールド内のバイトの順序を並べ替える更なる段階が後に続けられる。これは、別の多重化装置を用いて行なわれ、、或いは、インタフェースユニット（２０）からアプリケーションデータ処理ユニット（３０）用のメモリ（３３）にデータパケットを転送するデータバスに持続的な配線式クロスコネクションを作製することによって非常に簡単に行なわれ得る。
【００１８】
請求項４によれば、アプリケーションデータ処理ユニットが初期化中にビッグエンディアンタイプ若しくはリトルエンディアンタイプのいずれのタイプであるかを明らかにする情報項目をバスインタフェースユニットに書き込むことは、初期化中に、いずれにしても多数のパラメータをバスインタフェースユニットに設定する必要があり、エントリーはその後の動作中に変更される必要がないので、有利な実施例である。
【００１９】
請求項５によれば、付加ヘッダ内にバイト順序検出ビットを設けることによって、アプリケーションデータ処理ユニット内のバイト順序を評価及びテスト中に容易に検証できるようになる。これは、上記情報項目をバスインタフェースユニットに完全に自動的に転送するための基礎となり得る。このようなソフトウェアは、ビッグエンディアンタイプ及びリトルエンディアンタイプの両方のタイプの装置に使用され得る。これにより、アプリケーションデータ処理ユニットにおけるソフトウェア適合が簡単化される。ソフトウェアは、１回だけコンパイルされ、ビッグエンディアンタイプ若しくはリトルエンディアンタイプの機械で簡単に動く。
【００２０】
本発明は、請求項１乃至６に記載された方法に使用するためのバスインタフェースユニットの有利な実施例と、請求項1乃至６に記載された方法に使用するためのアプリケーションデータ処理ユニットの有利な実施例とを含む。
【００２１】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施例を詳細に説明する。
【００２２】
最初に、「ビッグエンディアン」及び「リトルエンディアン」という用語の意味を説明する。
【００２３】
ビッグエンディアン及びリトルエンディアンは、バイトの系列がコンピュータメモリに格納される順序を記述する用語である。ビッグエンディアンとは、「ビッグエンド（大きい方の端）」、すなわち、系列内の最上位値が最初に（最も低い記憶アドレスに）格納されるというタイプの順序である。リトルエンディアンとは、「リトルエンド（小さい方の端）」、すなわち、系列内の最下位値が最初に格納されるというタイプの順序である。たとえば、ビッグエンディアンタイプのコンピュータの場合に、１６進数0x4Ｆ52に対し必要な2バイトは、記憶装置に0x4Ｆ52として格納される（たとえば、0x4Ｆが記憶アドレス1000に格納されるとき、0x52はアドレス1001に格納される）。リトルエンディアンタイプのシステムの場合に、同じ１６進数は、0x524Ｆとして格納される（0x52がアドレス1000に格納され、0x4Fがアドレス１００１に格納される）。
【００２４】
上述の通り、屡々、マルチバイトデータワードが電子装置に存在する。その一例は、４バイト、すなわち、３２ビットからなるクワッドレットデータワードである。たとえば、IEEE1394バスのデータパケットは、後で詳述されるクワッドレット単位で編成される。コンピュータのメモリ空間は、非常に多くの場合、８ビットメモリワードで編成され、クワッドレットは、４個の記憶場所／アドレスに格納されるべきである。装置のメモリ空間が２３ビットワード（クワッドレット）形式で編成されているとしても、これらの装置は、８ビットメモリアクセスが行なわれる処理モード／プロセッサコマンドを有する場合が非常に多い。以下に説明する実施例の場合に、メモリは８ビットワードで編成されていることに注意する必要がある。
【００２５】
リトルエンディアンモードとビッグエンディアンモードの原理は、３２ビットワードかつ８ビットメモリアクセスを例として、図１及び２に示されている。図１には、２個のクワッドレットが示されている。第１のクワッドレットは、ビッグエンディアンタイプであるソースシステム内の８ビット編成されたメモリに格納される。第２のクワッドレットは、ビッグエンディアンタイプであるターゲットシステムの８ビット編成されたメモリに格納される。
【００２６】
リトルエンディアンシステムにおけるバイト順序は、３２ビットワードかつ8ビットメモリアクセスを例として、図２に示される。リトルエンディアン装置は、ビッグエンディアン装置上のクワッドレットとは逆の端からクワッドレットを組み立てる。リトルエンディアン装置は、メモリ内のクワッドレットの最上位バイト（MSB）が４個のアドレスの中で最も高いアドレスであるとみなし、クワッドレットは、最上位バイトが最も高いアドレスに格納され、以下順番に格納されるような形でメモリに格納される。得られた翻訳後のクワッドレットは、図２に示されるように誤ったバイト順序をもつ。
【００２７】
IEEE1394規格については、高性能直列バス用IEEE規格であるStandard IEEE 1394-1995，New York, 30 August 1996を引用する。この規格には、コンピュータ技術及びコンピュータ電子製品において普及し始めている通信プロトコルが定義されている。
【００２８】
この通信プロトコルは、同期データパケット及び非同期データパケットの転送が可能である。このデータパケットの構造は、IEEE1394規格に規定されている。同期データパケットは、オーディオ／ビデオデータの転送用に設けられている。その理由は、この種類のデータがソース装置内でかなり安定した量で規則的な時間間隔で発生するからである。典型的なアプリケーションは、セットトップボックスからビデオレコーダのような記録装置への符号化オーディオ及びビデオデータの転送、または、衛星受信機からミニディスクプレーヤーへの符号化オーディオデータの転送である。
【００２９】
同期データパケットを用いて転送されたMPEG2方式符号化オーディオデータ及びビデオデータの場合、IEC国際規格61883−1と呼ばれる別の規格Consumer Audio/video equipment-Digital interface, 1st Edition 1998-02が存在する。この規格では、同期データパケットの構造と、パケットがヘッダデータ、タイムスタンプデータ等で埋める際に守られるべき規則とが定義されている。このようなパケット内のヘッダ（1394ヘッダ及びCIPヘッダ）は、IEEE1394インタフェースのデータリンクレイヤ用ＩＣで評価される。これは、ヘッダデータをバスインタフェース外部のマイクロコントローラやＣＰＵに転送する必要がないということを意味する。
【００３０】
同期パケットのペイロードデータは、マルチバイトデータ形式の場合には一般的に翻訳する必要がないビットストリームデータに関係する。データバイトは、データリンクレイヤ用ＩＣ内のメモリから直接メモリアクセスによってアプリケーションデータ処理ユニットに移される。対応したＤＭＡユニットは、これらの装置に設けられる。ＤＭＡユニットは、インタフェースユニットのメモリに書き込まれた順序と同じ順序でデータを読み、同じ順序でアプリケーションデータ処理ユニットのメモリにデータを書き込むように設計される。すなわち、同期データパケットの場合に、データをアプリケーションデータ処理ユニットに転送する際に、バイト順序問題は発生しない。
【００３１】
非同期データパケットの場合、状況は異なる。非同期データパケットを用いて、MPEG2方式符号化オーディオ及びビデオデータ以外のあらゆる種類のデータが転送される。典型的な消費者電子機器以外のアプリケーションの場合に、符号化オーディオ及びビデオデータが非同期データパケットによって転送されるべきである。その一例は後述される。殆どのIEEE1394インタフェース設計によれば、トランザクションレイヤに属する非同期データパケットヘッダの評価は、データリンクレイヤ用ＩＣでは行なわれない。これらの非同期データパケットヘッダは、アプリケーションのデータ処理ユニットで評価され、一方のアプリケーションではマイクロコントローラがビッグエンディアンタイプであり、他方の装置はリトルエンディアンタイプであるという事実に起因してバイト順序の問題が生ずる。
【００３２】
非同期パケットの構造は図３に示されている。同図には、ペイロードデータを含まない非同期パケット１０及び１２が示される。これらのパケットは、付加ヘッダ及び非同期1394ヘッダを含む。付加ヘッダは、選択的であるが、アプリケーソン装置若しくはデータリンクレイヤユニット内の制御目的のため使用され、本発明の具体的な実施例では、２個のバイト順序検出ビット１３を搬送するため使用される。これについては後述する。非同期パケット１１はデータフィールドを含む。同図に示された非同期ヘッダ及び付加ヘッダの構成要素を以下に列挙する。
【００３３】
【表１】
0004467714.tif 000002
非同期1394ヘッダの構成要素の意味は、上述のIEC61883−1規格に完全に規定されている。非同期ヘッダは、たとえば、非同期データパケットのタイプに依存して、３乃至４個のクワッドレットにより構成されることに注意する必要がある。図３からは、非同期ヘッダのエントリーがクワッドレットのバイト境界とは同期しないので、評価中のバイト順序による影響を受けることが容易にわかる。データフィールドを含まない非同期パケットは、たとえば、承認メッセージ、子供の視聴を禁止する機能を備えたTVセットに対するロック要求のようなある種の具体的な制御メッセージなどのハンドシェークプロトコルのため使用され得る。
【００３４】
非消費者アプリケーション装置の一例は、図４に示される。これは、IEEE1394インタフェース２０を具備したハードディスクドライブ装置の例である。アプリケーションデータ処理ユニット３０は、たとえば、SCSIプロトコルに従ってハードディスクドライブ装置４０を制御するため使用される。アプリケーションデータ処理ユニット３０は、トランザクションレイヤサービスに従って非同期ヘッダデータを評価する役割がある。この目的のため、アプリケーションデータ処理ユニットがリトルエンディアンタイプである場合には、バイト順序の並べ替えを行なう必要がある。その理由は、IEEE1394データリンク用ＩＣはIEEE1394規格のビッグエンディアンタイプとして規定されているからである。アプリケーション処理ユニットがビッグエンディアンタイプである場合、バイト順序の並べ替えを行なう必要はない。
【００３５】
本発明によれば、バイト順序の並べ替えは、状態レジスタ２２内のリトルエンディアンフラグ２３の制御下で対応した多重化装置２４を用いて行なわれる。このフラグは、データリンクレイヤ用ＩＣ２１の初期化中に設定される。このＩＣの初期化は、アプリケーション処理ユニット３０上で動く特定のプログラムを用いてパワーオン後に行なわれる。このプログラムには、アプリケーション処理ユニットがリトルエンディアンタイプである場合に、リトルエンディアンフラグを”１”にセットする段階を挿入する必要がある。このフラグは、アプリケーションデータ処理ユニットがビッグエンディアンタイプである場合に、”０”にセットされる。
【００３６】
バイト順序の並べ替え段階は図５に示されている。同図では、非同期1394ヘッダデータの１個のクワッドレット２５に対するバイト順序の並べ替えが行なわれる。この並べ替えは、非同期1394パケットの受信直後に自動的に行なわれる。アプリケーションデータ処理ユニットがこのデータパケットにアクセスするとき、正しいバイト順序でヘッダのクワッドレット２５を受信し、評価中に誤った結果が回避される。リトルエンディングフラグがエントリー”０”を含む場合に、ヘッダクワッドレットに対する自動バイト順序並べ替えは停止され、クワッドレットは、ビット順序を変えずにアプリケーションデータ処理ユニットに転送される。データフィールドクワッドレットは、本実施例の場合に再配置されない。その理由は、ペイロードデータワードは８ビットデータワードであり、マルチバイトデータワードを直ちに翻訳する必要がないからである。ペイロードデータバイトは、最も低いアドレスから始めて上位アドレスまで８ビットアクセスを用いてメモリから読み出される。
【００３７】
たとえば、4個若しくは５個のクワッドレットの順序を並べ替える多重化装置を制御する問題は、異なるパケットに対し付加ヘッダを用いることによって容易に解決される。付加ヘッダの構造はIEEE1394規格に定義されていない。これは、選択的なヘッダであり、アプリケーション装置内若しくはデータリンクレイヤユニットで制御目的のため使用され得る。データパケットがIEEE1394バスから受信されるモードの場合に、付加ヘッダは1394インタフェース内のデータリンクレイヤ用ＩＣで生成される。図３では、付加ヘッダは、ヘッダサイズへのエントリーとデータフィールドサイズへのエントリーとを含む。ヘッダサイズ若しくはデータサイズエントリーは、バイト順序の並べ替えを行なう前に評価される必要がある。これは、クワッドレットが再配置される都度にセットされ２個のフリップフロップの組を用いて容易に行なわれ、順序の並べ替えは４乃至５個のフリップフロップがセットされた後に停止される。４個と５個の値の間の選択は、付加ヘッダ内でヘッダサイズに対するエントリーを用いることによって行なわれる。この目的のためには数個の論理ゲートしか必要とされない。
【００３８】
多重化装置の構造は図６に示されている。多重化装置は多重化段２４１を含み、多重化段２４１には、交換されるべきバイトの対応したビットが入力として供給される。これらの多重化段の出力は出力レジスタ２６の対応したビットに供給される。各多重化段、すなわち、マルチプレクサ２４１は、リトルエンディアンフラグ２３で制御される。
【００３９】
図３を参照するに、付加ヘッダは、バイト順序検出ビットと称される２個のエントリー１３を有する。全ての付加ヘッダにおいて、第１のバイト順序検出ビットは”０”にセットされ、第２のバイト順序検出ビットは”１”にセットされる。これらの二つのビットを用いることにより、アプリケーションデータ処理ユニットに転送された後のパケットヘッダバイト順序を容易に検出できるようになる。これは、最上位から２番目のバイトが最上位ビットに”０”エントリーを有し、最上位から３番目のバイトが最上位ビットに”１”エントリーを有するときに、正しいバイト順序が示されるからである。
【００４０】
これらのバイト順序検出ビットを用いることにより、アプリケーションデータ処理ユニット上で動くソフトウェアを、アプリケーションデータ処理ユニットのバイト順序翻訳に完全自動で動的に適合し得るように改良することが可能である。第１回目の初期化中に、ソフトウェアは非同期パケットを要求し、バイト順序検出ビットを評価する。この結果によって、ビッグエンディアン装置若しくはリトルエンディアン装置のいずれであるかが判明し、次の初期化のために対応したパラメータがセットされ得る。ソフトウェア技術者は、この非常に汎用的なソフトウェアを用いることにより、ビッグエンディアンとリトルエンディアンの問題を意識しなくてもよい。
【００４１】
次に、図７を参照して本発明の別の実施例を詳細に説明する。図７のａ）において、４個のヘッダバイトＨＢ０からＨＢ３までの伝送順序と、４個のペイロードデータバイトＤＢ０からＤＢ３までの伝送順序とが示される。受信されたバイトは、この順序でIEEE1394インタフェースユニットの内部メモリに書き込まれる。ここで、$A000から$A001は、３２ビットに編成された内部メモリのアドレスを示す。ヘッダクワッドレットの最上位バイトMSBはＨＢ３であり、最下位バイトLSBはＨＢ０である。受信されたデータワードは外部メモリ３３に転送される。これは、アプリケーションマイクロプロセッサ３０を用いることなく、直接メモリアクセスユニット３２を用いて行なわれる。外部メモリ３３とインタフェースユニット２０の間のデータバスは、３２ビットのバスであると考えられる。外部メモリ３２は８ビットに編成される。かくして、２個の受信されたクワッドレットは、外部メモリ３３内の$D000から＄D007までのアドレス空間を占める。ヘッダクワッドレットの最上位バイトMSBであるＨＢ３は、第１番目の記憶場所$D000に記憶され、ヘッダクワッドレットの最下位バイトLSBであるＨＢ０はアドレス$D003に基づいて格納される。ペイロードデータフィールドの先頭のデータバイトＤＢ０は、アドレス$D004に格納され、最後のデータバイトＤＢ３はアドレス$D007に格納される。これは、バイト順序の並べ替えが行なわれていないときの格納順序である。図７のａ）では、ＣＰＵ３０がビッグエンディアンタイプである場合が想定されている。ＣＰＵ３０は、正しい順序でアドレス$D000から$D003にヘッダクワッドレットの翻訳を行なう。ＣＰＵ３０は、記憶場所$D000内のバイトをヘッダクワッドレットの最上位バイトとして翻訳し、記憶場所$D003内のバイトをヘッダクワッドレットの最下位バイトとして翻訳する。ペイロードデータフィールドのデータバイトを復号化するため、データバイトは図示されるような読み出し順序ＲＯでメモリから読み出される。アプリケーションマイクロプロセッサ３０内の復号化順序ＤＯは正しい。
【００４２】
図７のｂ）では、マイクロプロセッサ３０はリトルエンディアンタイプであると仮定されている。この場合、ヘッダクワッドレットの翻訳は誤りである。リトルエンディアン装置は、ヘッダバイトＨＢ０を最上位バイトＭＳＢとして翻訳し、ヘッダバイトＨＢ３を最下位バイトＬＳＢとして翻訳する。メモリ内のペイロードデータバイトの復号化順序は間違いがなく、図７のｂ）からわかるように、先の図７のａ）の場合と同じである。
【００４３】
図７のｃ）では、マイクロプロセッサ３０がリトルエンディアンタイプである場合を考える。正しいヘッダクワッドレット翻訳を行なうため、以下の処理が行なわれる。
【００４４】
メモリ３３とIEEE1394インタフェース２０との間の３２ビットデータバスコネクション内のバイト順序は、対応した配線接続を行なうことによって簡単に変更される。勿論、このバイト順序は、装置の全動作時間に亘って固定され、動作中の変更は許可されない。この固定したバイト順序交換は、図７のｃ）に、IEEE1394インタフェースユニット２０とメモリ３３との間の交差した記号によって示されている。これにより、ユニット２０の内部メモリからの全てのクワッドレットは、バイト順序が入れ替えられる。これは、受信パケットのヘッダとペイロードデータフィールドに対して有効である。図７のｂ）から、ペイロードデータフィールドのデータバイトがリトルエンディアン装置において正しい順序で復号化されることがわかる。かくして、復号化誤りを回避するため、インタフェースユニット２０内でペイロードデータフィールドクワッドレットの並べ替えが行なわれる。これは、図６に示されたような多重化装置によってパケットの受信直後に自動的に行なわれる。このように、インタフェースユニット２０の内部メモリにおけるペイロードデータフィールドクワッドレットのバイト順序が変更される。このバイト順序変更は図７のｃ）に示されている。その結果として、メモリ３３内のペイロードデータフィールドに対するバイト順序は、図７のａ）及びｂ）に示された場合のバイト順序と一致するが、ヘッダクワッドレットのバイト順序は異なる。これにより、リトルエンディアンタイプのマイクロプロセッサ３０におけるヘッダクワッドレットの正しい翻訳と、ペイロードデータバイトの正しい復号化順序とが得られる。
【００４５】
たとえば、IEEE1394インタフェースユニット２０と外部メモリ３３との間のデータバスコネクションの幅が１６ビット又は８ビットのように異なるような種々の実施形態に対し変更が必要である。しかし、本発明の原理は全ての実施形態を通じて適用可能である。
【図面の簡単な説明】
【図１】ビッグエンディアンタイプ装置に接続された別のビッグエンディアンタイプ装置におけるバイト順序翻訳を説明する図である。
【図２】ビッグエンディアンタイプ装置に接続されたリトルエンディアンタイプ装置におけるバイト順序翻訳を説明する図である。
【図３】  IEEE1394バス用の非同期パケット構造を示す図である。
【図４】  IEEE1394インタフェースを備えたハードディスクドライブ装置のブロック構成図である。
【図５】  IEEE1394バスインタフェースのデータリンクレイヤ用ＩＣ内でのバイト順序変更処理を説明する図である。
【図６】  IEEE1394バスインタフェースのデータリンクレイヤ用ＩＣ内のバイト順序変更を行なうハードウェアユニットのブロック構成図である。
【図７】本発明の第２実施例を説明する図である。
【符号の説明】
２０    IEEE1394インタフェース
３０    マイクロプロセッサ
３２    直接メモリアクセスユニット
３３    外部メモリ
【図１】
0004467714.tif 000003
【図２】
0004467714.tif 000004
【図３】
0004467714.tif 000005
【図４】
0004467714.tif 000006
【図５】
0004467714.tif 000007
【図６】
0004467714.tif 000008
【図７】
0004467714.tif 000009