(57)【要約】【課題】  簡単な制御でデータの送信速度の高速化が図られた送信装置、簡単な制御でデータの受信速度の高速化が図られた受信装置、および簡単な制御でデータの送信速度およびデータの受信速度の高速化が図られたデータ送受信システムを提供する。【解決手段】  送信装置１０を構成する送信メインバッファ１１のオリジナルのデータをサブヘッダ追加回路１２で複数のパケットに分割して順番が付されたサブヘッダ付パケットを分担して送信するＵＳＢ１用，ＵＳＢ２用の送信ポート１３＿１，１３＿２の状態を転送監視回路１４で監視して、混雑している送信ポートに振り分けられていたサブヘッダ付パケットを空いている送信ポートに転送して、受信装置２０のＵＳＢ１用，ＵＳＢ２用の受信ポート２１＿１，２１＿２に向けて送信し、サブヘッダ確認回路２３でバッファ２１＿１ａ，２１＿２ａおよび退避バッファ２２＿１，２２＿２に格納された複数のサブヘッダ付パケットのサブヘッダに基づいてオリジナルのデータを受信メインバッファ２４に転送する。【選択図】        図１
2006109314.tif 000002
【特許請求の範囲】
【請求項１】
データの送信を担う送信装置において、
オリジナルのデータを複数のパケットに分割して各パケットにパケットどうしの順番を表わすサブヘッダを追加するサブヘッダ追加回路と、
前記サブヘッダ追加回路により得られたサブヘッダ付パケットを分担して送信する複数の送信ポートと、
前記複数の送信ポートの状態を監視して１つの送信ポートが混雑し他の送信ポートが空いている状態にあるときに、混雑している送信ポートに振り分けられていたサブヘッダ付パケットを空いている送信ポートに転送する転送監視回路とを備えたことを特徴とする送信装置。
【請求項２】
データの受信を担う受信装置において、
パケットどうしの順番を表わすサブヘッダが追加された複数のパケットを分担して受信する複数の受信ポートと、
前記複数の受信ポートそれぞれで受信したサブヘッダ付パケットを格納しておく複数のサブバッファと、
前記複数のサブバッファに格納された複数のサブヘッダ付パケットのサブヘッダに基づいてオリジナルのデータを復元するサブヘッダ確認回路とを備えたことを特徴とする受信装置。
【請求項３】
データの送信を担う送信装置とデータの受信を担う受信装置とを備えたデータ送受信システムにおいて、
前記送信装置が、
オリジナルのデータを複数のパケットに分割して各パケットにパケットどうしの順番を表わすサブヘッダを追加するサブヘッダ追加回路と、
前記サブヘッダ追加回路により得られたサブヘッダ付パケットを分担して送信する複数の送信ポートと、
前記複数の送信ポートの状態を監視して１つの送信ポートが混雑し他の送信ポートが空いている状態にあるときに、混雑している送信ポートに振り分けられていたサブヘッダ付パケットを空いている送信ポートに転送する転送監視回路とを備え、
前記受信装置が、
パケットどうしの順番を表わすサブヘッダが追加された複数のパケットを分担して受信する複数の受信ポートと、
前記複数の受信ポートそれぞれで受信したサブヘッダ付パケットを格納しておく複数のサブバッファと、
前記複数のサブバッファに格納された複数のサブヘッダ付パケットのサブヘッダに基づいてオリジナルのデータを復元するサブヘッダ確認回路とを備えたものであることを特徴とするデータ送受信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの送信を担う送信装置、データの受信を担う受信装置、およびそれら送信装置と受信装置とを備えたデータ送受信システムに関する。
【背景技術】
【０００２】
従来より、データの送信を担う送信装置とデータの受信を担う受信装置との間で、それら送信装置および受信装置に備えられたシリアルポートやパラレルポートを経由してデータを転送するということが行なわれている。また、上記送信装置と上記受信装置とを備えたデータ送受信システムどうしの間で、あるいは上記データ送受信システムと上記送信装置もしくは上記受信装置との間で、それら送信装置および受信装置に備えられたシリアルポートやパラレルポートを経由してデータを転送するということが行なわれている。
【０００３】
ここで、例えば、シリアルポートであるＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートを経由してデータを転送する場合であって、ＵＳＢ規格１．１を採用したＵＳＢポートを使用する場合は、データの転送速度は最大で１２Ｍｂｐｓ（メガビット／秒）までであり、ＵＳＢ規格２．０を採用したＵＳＢポートを使用する場合は、データの転送速度は最大で４８０Ｍｂｐｓまでである。このように、データの転送速度は、使用するポートの規格により決定される。このため、送信装置と受信装置との間でシリアルポートやパラレルポートを経由してデータ転送を行なう場合、使用するポートの規格で定められたデータ転送速度以上のデータ・レート（伝送帯域幅）でデータを転送することは出来ないという問題がある。
【０００４】
そこで、送信装置に備えられた複数のポートと受信装置に備えられた複数のポートとをケーブルで接続し、送信装置においてオリジナルデータを複数のパケットに分割して番号を付して複数のポートから同時に送信し、受信装置において複数のポートで同時に受信して得られた複数のパケットを番号順に並び替えることによりオリジナルデータに復元することにより、転送速度を高める技術が提案されている（特許文献１参照）。
【特許文献１】特開２０００−３０５８８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に提案された技術では、使用する複数のポートそれぞれのデータ転送速度が大きく異なる場合、送信装置と受信装置との間で、複数のパケットの順番を合わせこむ制御が困難であり、従ってデータの転送速度を高める点に欠けるという問題がある。
【０００６】
本発明は、上記事情に鑑み、簡単な制御でデータの送信速度の高速化が図られた送信装置、簡単な制御でデータの受信速度の高速化が図られた受信装置、および簡単な制御でデータの送信速度およびデータの受信速度の高速化が図られたデータ送受信システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成する本発明の送信装置は、データの送信を担う送信装置において、
オリジナルのデータを複数のパケットに分割して各パケットにパケットどうしの順番を表わすサブヘッダを追加するサブヘッダ追加回路と、
上記サブヘッダ追加回路により得られたサブヘッダ付パケットを分担して送信する複数の送信ポートと、
上記複数の送信ポートの状態を監視して１つの送信ポートが混雑し他の送信ポートが空いている状態にあるときに、混雑している送信ポートに振り分けられていたサブヘッダ付パケットを空いている送信ポートに転送する転送監視回路とを備えたことを特徴とする。
【０００８】
本発明の送信装置は、オリジナルのデータを複数のパケットに分割して各パケットにパケットどうしの順番を表わすサブヘッダを追加して得られたサブヘッダ付パケットを分担して複数の送信ポートで送信するにあたり、１つの送信ポートが混雑し他の送信ポートが空いている状態にあるときに、混雑している送信ポートに振り分けられていたサブヘッダ付パケットを空いている送信ポートに転送して送信するものであるため、簡単な制御でデータの送信速度を高めることができる。
【０００９】
また、上記目的を達成する本発明の受信装置は、データの受信を担う受信装置において、
パケットどうしの順番を表わすサブヘッダが追加された複数のパケットを分担して受信する複数の受信ポートと、
上記複数の受信ポートそれぞれで受信したサブヘッダ付パケットを格納しておく複数のサブバッファと、
上記複数のサブバッファに格納された複数のサブヘッダ付パケットのサブヘッダに基づいてオリジナルのデータを復元するサブヘッダ確認回路とを備えたことを特徴とする。
【００１０】
本発明の受信装置は、上記構成のため、複数の受信ポートで受信した複数のサブヘッダ付パケットを、それら複数のサブヘッダ付パケットの順番に関わりなく、複数のサブバッファに自在に格納しておき、最終的に複数のサブバッファに格納された複数のサブヘッダ付パケットのサブヘッダに基づいてオリジナルのデータを復元することができる。従って、簡単な制御でデータの受信速度を高めることができる。
【００１１】
さらに、上記目的を達成する本発明のデータ送受信システムは、データの送信を担う送信装置とデータの受信を担う受信装置とを備えたデータ送受信システムにおいて、
上記送信装置が、
オリジナルのデータを複数のパケットに分割して各パケットにパケットどうしの順番を表わすサブヘッダを追加するサブヘッダ追加回路と、
上記サブヘッダ追加回路により得られたサブヘッダ付パケットを分担して送信する複数の送信ポートと、
上記複数の送信ポートの状態を監視して１つの送信ポートが混雑し他の送信ポートが空いている状態にあるときに、混雑している送信ポートに振り分けられていたサブヘッダ付パケットを空いている送信ポートに転送する転送監視回路とを備え、
上記受信装置が、
パケットどうしの順番を表わすサブヘッダが追加された複数のパケットを分担して受信する複数の受信ポートと、
上記複数の受信ポートそれぞれで受信したサブヘッダ付パケットを格納しておく複数のサブバッファと、
上記複数のサブバッファに格納された複数のサブヘッダ付パケットのサブヘッダに基づいてオリジナルのデータを復元するサブヘッダ確認回路とを備えたものであることを特徴とする。
【００１２】
本発明のデータ送受信システムは、本発明の送信装置および本発明の受信装置を備えたものであるため、簡単な制御でデータの送信速度およびデータの受信速度を高めることができる。
【発明の効果】
【００１３】
本発明の送信装置によれば、簡単な制御でデータの送信速度を高めることができる。また、本発明の受信装置によれば、簡単な制御でデータの受信速度を高めることができる。さらに、本発明のデータ送受信システムによれば、簡単な制御でデータの送信速度およびデータの受信速度を高めることができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。
【００１５】
図１は、本発明のデータ送受信システムの一実施形態の構成を示す図である。
【００１６】
図１に示すデータ送受信システム１には、送信装置１０と受信装置２０とが備えられている。先ず、送信装置１０の構成について説明する。
【００１７】
送信装置１０は、本発明の送信装置の一実施形態に相当し、この送信装置１０には、送信メインバッファ１１と、サブヘッダ追加回路１２と、バッファ１３＿１ａを有するＵＳＢ１用の送信ポート１３＿１と、バッファ１３＿２ａを有するＵＳＢ２用の送信ポート１３＿２と、転送監視回路１４とが備えられている。ここで、上記送信ポート１３＿１，１３＿２が本発明にいう複数の送信ポートの一例に相当する。
【００１８】
送信メインバッファ１１には、オリジナルのデータが格納される。送信メインバッファ１１に格納されたオリジナルのデータはサブヘッダ追加回路１２に入力される。
【００１９】
サブヘッダ追加回路１２は、オリジナルのデータを複数のパケットに分割して各パケットにパケットどうしの順番を表わすサブヘッダを追加する。
【００２０】
ＵＳＢ１用送信ポート１３＿１およびＵＳＢ２用送信ポート１３＿２は、サブヘッダ追加回路１２で追加されたサブヘッダを有するサブヘッダ付パケットをバッファ１３＿１ａおよびバッファ１３＿２ａを経由して送信する。
【００２１】
転送監視回路１４は、ＵＳＢ１用送信ポート１３＿１およびＵＳＢ２用送信ポート１３＿２の状態を監視して１つの送信ポートが混雑し他の送信ポートが空いている状態にあるときに、混雑している送信ポートに振り分けられていたサブヘッダ付パケットを空いている送信ポートに転送する。
【００２２】
一方、受信装置２０は、本発明の受信装置の一実施形態に相当し、この受信装置２０には、バッファ２１＿１ａを有するＵＳＢ１用の受信ポート２１＿１と、バッファ２１＿２ａを有するＵＳＢ２用の受信ポート２１＿２が備えられている。ここで、これらの受信ポート２１＿１，２１＿２が本発明にいう複数の受信ポートの一例に相当する。
【００２３】
また、この受信装置２０には、ＵＳＢ１用の退避バッファ２２＿１と、ＵＳＢ２用の退避バッファ２２＿２が備えられている。ここで、上記バッファ２１＿１ａ，２１＿２ａおよび退避バッファ２２＿１，２２＿２が、本発明にいう複数のサブバッファの一例に相当する。
【００２４】
さらに、この受信装置２０には、上記バッファ２１＿１ａ，２１＿２ａおよび退避バッファ２２＿１，２２＿２に格納された複数のサブヘッダ付パケットのサブヘッダに基づいてオリジナルのデータを復元するサブヘッダ確認回路２３と、サブヘッダ確認回路２３で復元されたオリジナルデータを格納する受信メインバッファ２４が備えられている。
【００２５】
本実施形態のデータ送受信システム１を構成する送信装置１０は、オリジナルのデータを複数のパケットに分割して各パケットにパケットどうしの順番を表わすサブヘッダを追加して得られたサブヘッダ付パケットを分担してＵＳＢ１用の送信ポート１３＿１，ＵＳＢ２用の送信ポート１３＿２で送信するにあたり、これら２つの送信ポート１３＿１，１３＿２の状態を転送監視回路１４で監視して、一方の送信ポートが混雑し他方の送信ポートが空いている状態にあるときに、混雑している送信ポートに振り分けられていたサブヘッダ付パケットを空いている送信ポートに転送するものである。このため、例えば送信ポート１３＿１からのサブヘッダ付パケットが、受信装置２０の受信ポート２１＿１で受信されない状態が続いた場合、そのサブヘッダ付パケットを送信ポート１３＿２に転送して、受信装置２０の受信ポート２１＿２に向けて送信することができる。従って、簡単な制御でデータの送信速度の高速化が図られる。
【００２６】
また、本実施形態のデータ送受信システム１を構成する受信装置２０は、ＵＳＢ１用，ＵＳＢ２用の受信ポート２１＿１，２１＿２で受信した複数のサブヘッダ付パケットを、それらサブヘッダ付パケットの順番に関わりなく、バッファ２１＿１ａ，２１＿２ａや退避バッファ２２＿１，２２＿２に格納しておき、最終的にサブヘッダ確認回路２３でバッファ２１＿１ａ，２１＿２ａおよび退避バッファ２２＿１，２２＿２に格納された複数のサブヘッダ付パケットのサブヘッダに基づいてオリジナルのデータを受信メインバッファ２４に復元するものである。従って、簡単な構成でデータの受信速度を高めることができる。
【００２７】
ここで、送信装置１０および受信装置２０の、ＵＳＢ規格による転送方式の概略について説明する。送信ポート１３＿１と受信ポート２１＿１とのデータ転送、および送信ポート１３＿２と受信ポート２１＿２とのデータ転送には、ともにＵＳＢ２．０規格（データ転送速度：４８０Ｍｂｐｓ）が採用される。このため、最大で４８０Ｍｂｐｓ×２＝９６０Ｍｂｐｓの速度でデータ転送を行なうことができる。ここで、ＵＳＢのデータ転送の方式には、アイソクロナス転送方式，インタラプト転送方式，バルク転送方式，コントロール転送方式がある。通常は、バルク転送方式が用いられる。このバルク転送方式では、ホストからデバイスへのデータ転送は、バルクアウト転送により行なわれる。具体的には、ホストがトークン・パケットを送信して、デバイスに転送の種類とデバイスのアドレスを通知する。次いで、ホストがデータ・パケットを送信し、デバイスでは正常に受信された場合はＡＣＫ、ＣＲＣエラー等の異常があればＮＡＫのハンドシェイク・パケットで応答する。
【００２８】
一方、デバイスからホストへのデータ転送は、バルクイン転送により行なわれる。このバルクイン転送では、ホストからのトークン・パケットに対してデバイスがデータ・パケットを送信する。ホストでは正常に受信された場合はＡＣＫ、ＣＲＣエラー等の異常があればＮＡＫのハンドシェイク・パケットで応答する。
【００２９】
図２は、図１に示す送信装置におけるサブヘッダ付パケットの構造を示す図である。
【００３０】
図２には、パケットであることを示すＤＡＴＡとデータペイロード（５１２Ｂｙｔｅ）が示されている。データペイロードは、サブヘッダ（４Ｂｙｔｅ）と実データ（５０８Ｂｙｔｅ）で構成されている。このサブヘッダは、図１に示すサブヘッダ追加回路１２で追加された、パケットどうしの順番を表わすヘッダである。
【００３１】
図３は、送信装置および受信装置におけるサブヘッダ付パケットの流れを示す図である。
【００３２】
送信装置１０では、送信メインバッファ１１に格納されたオリジナルのデータがサブヘッダ追加回路１２で複数のパケットに分割され各パケットにパケットどうしの順番を表わすサブヘッダが追加されてなる複数のサブヘッダ付パケットＤａｔａ１，Ｄａｔａ２，Ｄａｔａ３，Ｄａｔａ４，Ｄａｔａ５，…が生成される。ここで、送信ポート１３＿１，１３＿２が混雑しない状態にある場合は、これらサブヘッダ付パケットＤａｔａ１，Ｄａｔａ２，Ｄａｔａ３，Ｄａｔａ４，Ｄａｔａ５，…は、転送監視回路１４で送信ポート１３＿１，１３＿２に交互に振り分けられて、送信ポート１３＿１，１３＿２から同時に送信される。受信装置２０では、送信ポート１３＿１からのサブヘッダ付パケットＤａｔａ１，Ｄａｔａ３，Ｄａｔａ５を受信ポート２１＿１で受信してバッファ２１＿１ａ，退避バッファ２２＿１に格納するとともに、送信ポート１３＿２からのサブヘッダ付パケットＤａｔａ２，Ｄａｔａ２，…を受信ポート２１＿２で受信してバッファ２１＿２ａ，退避バッファ２２＿２に格納し、さらにサブヘッダ確認回路２３でサブヘッダ付パケットＤａｔａ１，Ｄａｔａ２，Ｄａｔａ３，Ｄａｔａ４，Ｄａｔａ５，…の順に並べてオリジナルのデータに復元する。
【００３３】
図４は、送信装置における制御ルーチンのフローチャートである。
【００３４】
先ず、ステップＳ１において、全データの送信が終了したか否かが判定される。全データの送信が終了したと判定された場合はこのルーチンを終了する。一方、全データの送信が終了していないと判定された場合はステップＳ２に進む。ステップＳ２では、各パケット毎にサブヘッダを追加してサブヘッダ付パケット（便宜上、Ｎ番目のデータと称する）とし、ステップＳ３に進む。
【００３５】
ステップＳ３では、ＵＳＢ１用のバッファが空か否かが判定される。ＵＳＢ１用のバッファが空でないと判定された場合は後述するステップＳ７に進む。一方、ＵＳＢ１用のバッファが空であると判定された場合はステップＳ４に進む。
【００３６】
ステップＳ４では、ＵＳＢ２がタイムアウトであるか否か、即ちＵＳＢ２用の送信ポートが混雑して所定時間を超えているか否かが判定される。ＵＳＢ２が未だタイムアウトでないと判定された場合は、ステップＳ５に進む。ステップＳ５では、ＵＳＢ１用のバッファにＮ番目のデータを転送して送信し、ステップＳ１に戻る。一方、ＵＳＢ２がタイムアウトであると判定された場合は、ステップＳ６に進む。ステップＳ６では、ＵＳＢ２用のバッファのデータを、ＵＳＢ１用のバッファに格納して送信し、ＵＳＢ２用のバッファを空にしてステップＳ３に戻る。
【００３７】
ステップＳ７では、ＵＳＢ２用のバッファが空か否かが判定される。ＵＳＢ２用のバッファが空でないと判定された場合はステップＳ３に戻る。一方、ＵＳＢ２用のバッファが空であると判定された場合はステップＳ８に進む。
【００３８】
ステップＳ８では、ＵＳＢ１がタイムアウトであるか否か、即ちＵＳＢ１用の送信ポートが混雑して所定時間を超えているか否かが判定される。ＵＳＢ１が未だタイムアウトでないと判定された場合は、ステップＳ９に進む。ステップＳ９では、ＵＳＢ２用のバッファにＮ番目のデータを格納して送信し、ステップＳ１に戻る。一方、ＵＳＢ１がタイムアウトであると判定された場合は、ステップＳ１０に進む。ステップＳ１０では、ＵＳＢ１用のバッファのデータを、ＵＳＢ２用のバッファに格納して送信し、ＵＳＢ１用のバッファを空にしてステップＳ３に戻る。
【００３９】
このように、一方のバッファが空いている状態にあるときに、タイムアウトであると判定された他方のバッファのデータを、空いているバッファに転送して送信するものであるため、簡単な制御でデータの送信速度の高速化が図られる。
【００４０】
図５は、受信装置における制御ルーチンのフローチャートである。
【００４１】
先ず、ステップＳ２１において、全データの受信が終了したか否かが判定される。全データの受信が終了したと判定された場合はこのルーチンを終了する。一方、全データの受信が終了していないと判定された場合はステップＳ２２に進む。
【００４２】
ステップＳ２２では、ＵＳＢ１用のバッファが空か否かが判定される。ＵＳＢ１用のバッファが空でないと判定された場合はステップＳ２３に進む。ステップＳ２３では、バッファ内のデータのサブヘッダを確認してステップＳ２４に進む。一方、ＵＳＢ１用のバッファが空であると判定された場合はそのままステップＳ２４に進む。
【００４３】
ステップＳ２４では、ＵＳＢ１用の退避バッファが空か否かが判定される。ＵＳＢ１用の退避バッファが空でないと判定された場合はステップＳ２５に進む。ステップＳ２５では、退避バッファ内のデータのサブヘッダを確認してステップＳ２６に進む。一方、ＵＳＢ１用の退避バッファが空であると判定された場合はそのままステップＳ２６に進む。
【００４４】
ステップＳ２６では、今度はＵＳＢ２用のバッファが空か否かが判定される。ＵＳＢ２用のバッファが空でないと判定された場合はステップＳ２７に進み、ＵＳＢ２用のバッファ内のデータのサブヘッダを確認してステップＳ２８に進む。一方、ＵＳＢ２用のバッファが空であると判定された場合はそのままステップＳ２８に進む。
【００４５】
ステップＳ２８では、ＵＳＢ２用の退避バッファが空か否かが判定される。ＵＳＢ２用の退避バッファが空でないと判定された場合はステップＳ２９に進み、その退避バッファ内のデータのサブヘッダを確認してステップＳ３０に進む。一方、ＵＳＢ２用の退避バッファが空であると判定された場合はそのままステップＳ３０に進む。
【００４６】
ステップＳ３０では、全てのバッファ（ＵＳＢ１用のバッファ，退避バッファおよびＵＳＢ２用のバッファ，退避バッファ）が空か否かが判定される。全てのバッファが空でないと判定された場合はステップＳ３１に進む。ステップＳ３１では、サブヘッダを参照してデータ（パケット）の若い順に受信メインバッファに転送して、ステップＳ２１に戻る。一方、全てのバッファが空であると判定された場合はそのままステップＳ２１に戻る。
【００４７】
このように、ＵＳＢ１用，ＵＳＢ２用の受信ポートで受信された複数のサブヘッダ付パケットを、それら複数のサブヘッダ付パケットの順番に関わりなく、それらＵＳＢ１用，ＵＳＢ２用の受信ポートに対応するバッファや退避バッファに格納しておき、それらバッファや退避バッファに格納されたサブヘッダ付パケットのサブヘッダの若い順に受信メインバッファに転送してオリジナルのデータを復元するため、簡単な制御でデータの受信速度の高速化が図られる。
【図面の簡単な説明】
【００４８】
【図１】本発明のデータ送受信システムの一実施形態の構成を示す図である。
【図２】図１に示す送信装置におけるサブヘッダ付パケットの構造を示す図である。
【図３】送信装置および受信装置におけるサブヘッダ付パケットの流れを示す図である。
【図４】送信装置における制御ルーチンのフローチャートである。
【図５】受信装置における制御ルーチンのフローチャートである。
【符号の説明】
【００４９】
１  データ送受信システム
１０  送信装置
１１  送信メインバッファ
１２  サブヘッダ追加回路
１３＿１  ＵＳＢ１用の送信ポート
１３＿１ａ，１３＿２ａ，２１＿１ａ，２１＿２ａ  バッファ
１３＿２  ＵＳＢ２用の送信ポート
１４  転送監視回路
２０  受信装置
２１＿１  ＵＳＢ１用の受信ポート
２１＿２  ＵＳＢ２用の受信ポート
２２＿１  ＵＳＢ１用の退避バッファ
２２＿２  ＵＳＢ２用の退避バッファ
２３  サブヘッダ確認回路
２４  受信メインバッファ
【図１】
2006109314.tif 000003
【図２】
2006109314.tif 000004
【図３】
2006109314.tif 000005
【図４】
2006109314.tif 000006
【図５】
2006109314.tif 000007