(57)【特許請求の範囲】
【請求項１】
複数のデータ送信装置の何れかとデータ受信装置との間のデータ転送を行うデータ転送装置において、
前記複数のデータ送信装置の何れかからのデータを記憶する記憶部と、
前記記憶部がデータを記憶している旨を示す有効情報を保持する有効情報保持部と、
前記複数のデータ送信装置の何れかからのデータと、データを保持している旨を示すバイパス有効情報を保持するバイパス部と、
入力バスを介して前記複数のデータ送信装置の何れかが送信するデータを受信するとともに、前記バイパス部の獲得要求を出力する複数の受信部と、
前記複数の受信部の何れかからの前記バイパス部の獲得要求を受けた場合、前記記憶部がデータを記憶していない旨を前記有効情報保持部からの有効情報が示すとき、前記バイパス部の獲得要求に対応するデータを前記バイパス部に保持し、前記記憶部がデータを記憶している旨を前記有効情報保持部からの有効情報が示すとき、前記バイパス部の獲得要求に対応するデータを前記記憶部に保持する調停部と、
前記バイパス部にデータが保持されている旨を前記バイパス部からのバイパス有効情報が示す場合、前記バイパス部が保持するデータを読み出すとともに、前記記憶部に記憶されるデータが有効である旨を前記有効情報保持部からの有効情報が示す場合、前記バイパス部が保持するデータの読み出しの完了後に、前記記憶部が記憶するデータを読み出す制御部と、
前記制御部が読み出したデータを保持する保持部と、
前記保持部が保持するデータを、出力バスを介して前記データ受信装置に送信する送信部と、
を有することを特徴とするデータ転送装置。
【請求項２】
前記データ転送装置において、
前記入力バスの第１のデータ幅は、前記出力バスの第２のデータ幅よりも狭く、
前記制御部はさらに、
前記保持部が保持するデータが、前記バイパス部から読み出されたデータである旨を示す読み出し先情報を前記送信部に出力し、
前記送信部はさらに、
前記制御部が出力する前記読み出し先情報が前記バイパス部から読み出されたデータである旨を示す場合、前記保持部が保持するデータを前記出力バスの前記第１のデータ幅を用いて前記データ受信装置に送信するとともに、前記読み出し先情報が前記バイパス部から読み出されたデータではない旨を示す場合、前記保持部が保持するデータを前記出力バスの前記第２のデータ幅を用いて前記データ受信装置に送信することを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記データ転送装置において、
前記制御部はさらに、
前記保持部に保持されたデータの量を示すデータ量情報を、前記送信部に出力するとともに、
前記送信部はさらに、
前記保持部に保持されたデータの量が所定データ量未満である旨を前記データ量情報が示す場合、前記保持部が保持するデータを前記出力バスの前記第１のデータ幅を用いて前記データ受信装置に送信するとともに、前記保持部に保持されたデータの量が所定データ量以上である旨を前記データ量情報が示す場合、前記保持部が保持するデータを前記出力バスの前記第２のデータ幅を用いて前記データ受信装置に送信することを特徴とする請求項２に記載のデータ転送装置。
【請求項４】
複数のデータ送信装置の何れかとデータ受信装置との間のデータ転送を、前記複数のデータ送信装置の何れかからのデータを記憶する記憶部と、前記記憶部がデータを記憶している旨を示す有効情報を保持する有効情報保持部と、前記複数のデータ送信装置の何れかからのデータと、データを保持している旨を示すバイパス有効情報を保持するバイパス部とを用いて行うデータ転送装置の制御方法において、
前記データ転送装置が有する複数の受信部が、入力バスを介して前記複数のデータ送信装置の何れかが送信するデータを受信するステップと、
前記複数の受信部が、前記バイパス部の獲得要求を出力するステップと、
前記データ転送装置が有する調停部が、前記複数の受信部の何れかからの前記バイパス部の獲得要求を受けた場合、前記記憶部がデータを記憶していない旨を前記有効情報保持部からの有効情報が示すとき、前記バイパス部の獲得要求に対応するデータを前記バイパス部に保持し、前記記憶部がデータを記憶している旨を前記有効情報保持部からの有効情報が示すとき、前記バイパス部の獲得要求に対応するデータを前記記憶部に保持するステップと、
前記データ転送装置が有する制御部が、前記バイパス部にデータが保持されている旨を前記バイパス部からのバイパス有効情報が示す場合、前記バイパス部が保持するデータを読み出すとともに、前記記憶部に記憶されるデータが有効である旨を前記有効情報保持部からの有効情報が示す場合、前記バイパス部が保持するデータの読み出しの完了後に、前記記憶部が記憶するデータを読み出すステップと、
前記データ転送装置が有する保持部が、前記制御部が読み出したデータを保持するステップと、
前記データ転送装置が有する送信部が、前記保持部が保持するデータを、出力バスを介して前記データ受信装置に送信するステップと、
を有することを特徴とするデータ転送装置の制御方法。
【請求項５】
前記データ転送装置の制御方法において、
前記入力バスの第１のデータ幅は、前記出力バスの第２のデータ幅よりも狭く、
前記制御部はさらに、
前記保持部が保持するデータが、前記バイパス部から読み出されたデータである旨を示す読み出し先情報を前記送信部に出力し、
前記送信部はさらに、
前記制御部が出力する前記読み出し先情報が前記バイパス部から読み出されたデータである旨を示す場合、前記保持部が保持するデータを前記出力バスの前記第１のデータ幅を用いて前記データ受信装置に送信するとともに、前記読み出し先情報が前記バイパス部から読み出されたデータではない旨を示す場合、前記保持部が保持するデータを前記出力バスの前記第２のデータ幅を用いて前記データ受信装置に送信することを特徴とする請求項４に記載のデータ転送装置の制御方法。
【請求項６】
前記データ転送装置の制御方法において、
前記制御部はさらに、
前記保持部に保持されたデータの量を示すデータ量情報を、前記送信部に出力するとともに、
前記送信部はさらに、
前記保持部に保持されたデータの量が所定データ量未満である旨を前記データ量情報が示す場合、前記保持部が保持するデータを前記出力バスの前記第１のデータ幅を用いて前記データ受信装置に送信するとともに、前記保持部に保持されたデータの量が所定データ量以上である旨を前記データ量情報が示す場合、前記保持部が保持するデータを前記出力バスの前記第２のデータ幅を用いて前記データ受信装置に送信することを特徴とする請求項５に記載のデータ転送装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力バスから入力されたデータを当該入力バスよりも大きなバス幅を有する出力バスに出力するデータ入出力制御装置に関する。
【背景技術】
【０００２】
近年、バスを用いてデータの転送を行うシステムコントローラにおいて（例えば、特許文献１）、スループット向上のためにバス幅の拡張を行うため、データを受信する入力バスのバス幅とデータを送信する出力バスのバス幅とが異なる場合がある。このようなシステムコントローラでは、例えば、バス幅が狭い入力バスからバス幅が広い出力バスに対してデータを送信する場合に、受信したデータのフォーマットをバス幅が広い出力バスのフォーマットに変更する。つまり、システムコントローラは、入力バスから入力されたデータを蓄積して後続のデータの到着を待ち、出力バスに合わせたフォーマット分のデータが蓄積された後、出力バスから蓄積されたデータの送信を行う。
【０００３】
【特許文献１】特開平８−６３４２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術では、出力バスに合わせたフォーマット分のデータが蓄積されるまでデータの送信を待機する必要があるので、例えば、データが混雑していない場合には、出力バスに合わせたフォーマット分のデータが速やかに蓄積されず、後続データ待ちが生じ、レイテンシが悪化するという問題点があった。
【０００５】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、データの混雑状況に対応して常にレイテンシを向上させることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、複数のデータ送信装置の何れかとデータ受信装置との間のデータ転送を行うデータ転送装置において、前記複数のデータ送信装置の何れかからのデータを記憶する記憶部と、前記記憶部がデータを記憶している旨を示す有効情報を保持する有効情報保持部と、前記複数のデータ送信装置の何れかからのデータと、データを保持している旨を示すバイパス有効情報を保持するバイパス部と、入力バスを介して前記複数のデータ送信装置の何れかが送信するデータを受信するとともに、前記バイパス部の獲得要求を出力する複数の受信部と、前記複数の受信部の何れかからの前記バイパス部の獲得要求を受けた場合、前記記憶部がデータを記憶していない旨を前記有効情報保持部からの有効情報が示すとき、前記バイパス部の獲得要求に対応するデータを前記バイパス部に保持し、前記記憶部がデータを記憶している旨を前記有効情報保持部からの有効情報が示すとき、前記バイパス部の獲得要求に対応するデータを前記記憶部に保持する調停部と、前記バイパス部にデータが保持されている旨を前記バイパス部からのバイパス有効情報が示す場合、前記バイパス部が保持するデータを読み出すとともに、前記記憶部に記憶されるデータが有効である旨を前記有効情報保持部からの有効情報が示す場合、前記バイパス部が保持するデータの読み出しの完了後に、前記記憶部が記憶するデータを読み出す制御部と、前記制御部が読み出したデータを保持する保持部と、前記保持部が保持するデータを、出力バスを介して前記データ受信装置に送信する送信部と、を有することを特徴とする。
【０００７】
また、請求項２に係る発明は、前記データ転送装置において、前記入力バスの第１のデータ幅は、前記出力バスの第２のデータ幅よりも狭く、前記制御部はさらに、前記保持部が保持するデータが、前記バイパス部から読み出されたデータである旨を示す読み出し先情報を前記送信部に出力し、前記送信部はさらに、前記制御部が出力する前記読み出し先情報が前記バイパス部から読み出されたデータである旨を示す場合、前記保持部が保持するデータを前記出力バスの前記第１のデータ幅を用いて前記データ受信装置に送信するとともに、前記読み出し先情報が前記バイパス部から読み出されたデータではない旨を示す場合、前記保持部が保持するデータを前記出力バスの前記第２のデータ幅を用いて前記データ受信装置に送信することを特徴とする。
【０００８】
また、請求項３に係る発明は、前記データ転送装置において、前記制御部はさらに、前記保持部に保持されたデータの量を示すデータ量情報を、前記送信部に出力するとともに、前記送信部はさらに、前記保持部に保持されたデータの量が所定データ量未満である旨を前記データ量情報が示す場合、前記保持部が保持するデータを前記出力バスの前記第１のデータ幅を用いて前記データ受信装置に送信するとともに、前記保持部に保持されたデータの量が所定データ量以上である旨を前記データ量情報が示す場合、前記保持部が保持するデータを前記出力バスの前記第２のデータ幅を用いて前記データ受信装置に送信することを特徴とする。
また、請求項４に係る発明は、複数のデータ送信装置の何れかとデータ受信装置との間のデータ転送を、前記複数のデータ送信装置の何れかからのデータを記憶する記憶部と、前記記憶部がデータを記憶している旨を示す有効情報を保持する有効情報保持部と、前記複数のデータ送信装置の何れかからのデータと、データを保持している旨を示すバイパス有効情報を保持するバイパス部とを用いて行うデータ転送装置の制御方法において、前記データ転送装置が有する複数の受信部が、入力バスを介して前記複数のデータ送信装置の何れかが送信するデータを受信するステップと、前記複数の受信部が、前記バイパス部の獲得要求を出力するステップと、前記データ転送装置が有する調停部が、前記複数の受信部の何れかからの前記バイパス部の獲得要求を受けた場合、前記記憶部がデータを記憶していない旨を前記有効情報保持部からの有効情報が示すとき、前記バイパス部の獲得要求に対応するデータを前記バイパス部に保持し、前記記憶部がデータを記憶している旨を前記有効情報保持部からの有効情報が示すとき、前記バイパス部の獲得要求に対応するデータを前記記憶部に保持するステップと、前記データ転送装置が有する制御部が、前記バイパス部にデータが保持されている旨を前記バイパス部からのバイパス有効情報が示す場合、前記バイパス部が保持するデータを読み出すとともに、前記記憶部に記憶されるデータが有効である旨を前記有効情報保持部からの有効情報が示す場合、前記バイパス部が保持するデータの読み出しの完了後に、前記記憶部が記憶するデータを読み出すステップと、前記データ転送装置が有する保持部が、前記制御部が読み出したデータを保持するステップと、前記データ転送装置が有する送信部が、前記保持部が保持するデータを、出力バスを介して前記データ受信装置に送信するステップと、を有することを特徴とする。
また、請求項５に係る発明は、前記データ転送装置の制御方法において、前記入力バスの第１のデータ幅は、前記出力バスの第２のデータ幅よりも狭く、前記制御部はさらに、前記保持部が保持するデータが、前記バイパス部から読み出されたデータである旨を示す読み出し先情報を前記送信部に出力し、前記送信部はさらに、前記制御部が出力する前記読み出し先情報が前記バイパス部から読み出されたデータである旨を示す場合、前記保持部が保持するデータを前記出力バスの前記第１のデータ幅を用いて前記データ受信装置に送信するとともに、前記読み出し先情報が前記バイパス部から読み出されたデータではない旨を示す場合、前記保持部が保持するデータを前記出力バスの前記第２のデータ幅を用いて前記データ受信装置に送信することを特徴とする。
また、請求項６に係る発明は、前記データ転送装置の制御方法において、前記制御部はさらに、前記保持部に保持されたデータの量を示すデータ量情報を、前記送信部に出力するとともに、前記送信部はさらに、前記保持部に保持されたデータの量が所定データ量未満である旨を前記データ量情報が示す場合、前記保持部が保持するデータを前記出力バスの前記第１のデータ幅を用いて前記データ受信装置に送信するとともに、前記保持部に保持されたデータの量が所定データ量以上である旨を前記データ量情報が示す場合、前記保持部が保持するデータを前記出力バスの前記第２のデータ幅を用いて前記データ受信装置に送信することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、入力バスから入力されて出力バスから出力されるまでのデータの混雑状況を判定し、データが混雑していると判定された場合には、出力バスのバス幅に対応するようにデータのフォーマットを変更した上で出力バスから出力し、データが混雑していないと判定された場合には、データのフォーマットを変更することなく出力バスから出力するように制御するので、例えば、保持データの蓄積量が少ない場合には、フォーマットを変更せず、出力バスに合わせたフォーマット分のデータが蓄積されるまでデータの送信を待機しない結果、また、保持データの蓄積量が多い場合には、フォーマットを変更して、出力バスに合わせたフォーマット分のデータを蓄積し、出力バスのバス幅を有効に使える結果、データの混雑状況に対応して常にレイテンシを向上させることが可能となる。
【００１０】
また、本発明によれば、入力バスから入力されたデータがＲＡＭに一時記憶された後に出力用バッファに記憶される場合には、データが混雑していると判定し、入力バスから入力されたデータがＲＡＭバイパス回路を経由して出力用バッファに記憶される場合には、データが混雑していないと判定するので、ＲＡＭ内に保持されているデータの蓄積量を判定して、装置内の混雑状況を把握することが可能となる。
【００１１】
また、本発明によれば、出力用バッファに所定量のデータが既に記憶されている場合には、データが混雑していると判定し、出力用バッファに所定量のデータが未だ記憶されていない場合には、データが混雑していないと判定するので、出力用バッファ内に保持されているデータの蓄積量を判定して、バス内の混雑状況を把握することが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、この発明に係るシステムコントローラの実施例を詳細に説明する。
【実施例１】
【００１３】
以下の実施例では、実施例１に係るシステムコントローラの概要および特徴、システムコントローラの構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。
【００１４】
［実施例１に係るシステムコントローラの概要および特徴］
まず最初に、図１および図２を用いて、実施例１に係るシステムコントローラの概要および特徴を説明する。図１は、実施例１に係るシステムコントローラの概要および特徴を説明するための図であり、図２は、入力フォーマットおよび出力フォーマットを説明するための図である。
【００１５】
実施例１のシステムコントローラ１０では、入力バス１１から入力されたデータをその入力バス１１よりも大きなバス幅を有する出力バス１２に出力することを概要とする。そして、このシステムコントローラ１０では、データの混雑状況に対応して常にレイテンシを向上させる点に主たる特徴がある。
【００１６】
この主たる特徴について具体的に説明すると、システムコントローラ１０は、図１に示すように、入力バス１１、出力バス１２、判定部１３、出力フォーマット制御部１４およびデータ出力部１５を備える。また、この入力バス１１のバス幅（例えば、４Ｂ幅）は、出力バス１２のバス幅（例えば、５Ｂ幅）よりも小さいものとする。なお、判定部１３は、特許請求の範囲に記載の「判定手段」に対応し、出力フォーマット制御部１４は、特許請求の範囲に記載の「出力フォーマット制御手段」に対応する。
【００１７】
このシステムコントローラ１０において、判定部１３は、入力バス１１からデータが入力された場合には、入力バス１１から入力されて出力バス１２から出力されるまでのデータの混雑状況を判定する（図１の（１）参照）。具体的には、システムコントローラ１０は、後述するＲＡＭ３３内にデータが記憶されているか、さらに、保持ラッチ３７内にデータが蓄積されているかに基づいて、混雑状況を判定する（図３および図１０参照）。
【００１８】
そして、システムコントローラ１０において、出力フォーマット制御部１４は、判定されたデータの混雑状況に応じて、出力フォーマットを制御し（図１の（２）参照）、出力バス１２からデータを出力する（図１の（３）参照）。具体的には、データが混雑していると判定された場合には、出力バス１２のバス幅に対応するようにデータのフォーマットを変更した上で出力バス１２から出力する。具体的な例を挙げれば、システムコントローラ１０は、図２に示すように、データが混雑していると判定された場合には、入力バス１１によって４Ｂの入力フォーマットで入力されたデータを５Ｂの出力フォーマット（図２の「ＤＯＷ２」）に変更して出力バス１２から出力する。
【００１９】
一方、システムコントローラ１０は、データが混雑していないと判定された場合には、データのフォーマットを変更することなく出力バス１２から出力するように制御する。具体的な例を挙げれば、システムコントローラ１０は、図２に示すように、入力バス１１によって４Ｂの入力フォーマットで入力されたデータのフォーマットを変更することなく、そのまま４Ｂの出力フォーマット（図２の「ＤＯＷ１」）で出力バス１２から出力する。
【００２０】
このように、システムコントローラ１０は、上記した主たる特徴のごとく、例えば、保持データの蓄積量が少ない場合には、フォーマットを変更せず、出力バス１２に合わせたフォーマット分のデータが蓄積されるまでデータの送信を待機しない結果、また、保持データの蓄積量が多い場合には、フォーマットを変更して、出力バス１２に合わせたフォーマット分のデータを蓄積し、出力バス１２のバス幅を有効に使える結果、上記した主たる特徴のごとく、データの混雑状況に対応して常にレイテンシを向上させることが可能である。
【００２１】
［データ転送システム］
次に、図３を用いて、システムコントローラ１０が適用されるデータ転送システムについて説明する。図３は、システムコントローラ１０が適用されるデータ転送システムを説明するための全体図である。
【００２２】
かかるシステムコントローラ１０は、図３に示すように、入力バス１１および出力バス１２を介して自らのシステムボード内のＣＰＵ２０およびＭＡＣ３０や他のシステムボード内のシステムコントローラ１０に接続される。そして、システムコントローラ１０は、入力バス１１を介して入力されたデータを出力バス１２から転送する。例えば、システムコントローラ１０は、ＣＰＵ１、ＭＡＣ０、ＭＡＣ１といった複数の回路からそれぞれ入力バス１１を介してデータを受け取り、その受け取ったデータを出力バス１２からＣＰＵ０に転送する。
【００２３】
［システムコントローラの構成］
次に、図４〜図８を用いて、図１に示したシステムコントローラ１０の構成を説明する。図４は、実施例１に係るシステムコントローラ１０の回路構成を示すブロック図であり、図５は、実施例１に係るシステムコントローラ１０におけるパケットライトコントローラの状態遷移を説明するための図であり、図６は、実施例１に係るシステムコントローラ１０におけるパケットリードコントローラの処理を説明するためのフローチャートであり、図７は、実施例１に係るシステムコントローラ１０におけるパケットセンドコントローラの状態遷移を説明するための図であり、図８は、データ出力選択の論理を説明するための図である。
【００２４】
実施例１に係るシステムコントローラ１０は、以下に説明するように、一時保存用のＲＡＭ３３に既にデータが一時記憶されている場合には、入力バス１１から入力されたデータをそのＲＡＭ３３に一時記憶させた後に保持ラッチ３７に記憶させてから出力バス１２に出力する一方で、ＲＡＭ３３に未だデータが一時記憶されていない場合には、入力バス１１から入力されたデータをＲＡＭバイパス回路を経由して保持ラッチ３７に記憶させてから出力バス１２に出力するものである。
【００２５】
かかるシステムコントローラ１０は、図４に示すように、ＣＰＵ２０またはＭＡＣ３０から到着するデータを受信する受信ラッチ３１、ＲＡＭ３３の書き込み衝突時にデータを一時保持するバッファ３２、パケットを一時溜めておく８Ｂ幅のＲＡＭ３３、ＲＡＭ３３に対するデータの書き込み情報を保持する書込み情報ラッチ３４、ＲＡＭ３３又はバイパス回路３５からのデータを保持する保持ラッチ３７をそれぞれ記憶手段として備える。
【００２６】
また、システムコントローラ１０は、入力バス１１、出力バス１２、バイパス回路３５、パケットライトコントローラ３６、パケットリードコントローラ３８、パケットセンドコントローラ３９、ＲＡＭ調停回路４０、バイパス調停回路４１、送信調停回路４２を備える。以下にこれらの各部の処理を説明する。
【００２７】
このうち、入力バス１１は、ＭＡＣ２０およびＣＰＵ３０からの各種情報を受け付ける手段であり、具体的には、ＭＡＣ２０およびＣＰＵから４Ｂの入力フォーマット形式でデータ（図４参照）を受け付けた場合には、その受け付けたデータを受信ラッチ３１に記憶させる。なお、この入力バス１１のバス幅（例えば、４Ｂ幅）は、出力バス１２のバス幅（例えば、５Ｂ）よりも小さいものとする。
【００２８】
出力バス１２は、ＭＡＣ２０またはＣＰＵ３０へと各種情報を転送する手段であり、具体的には、保持ラッチ３７に記憶されたデータを受け取って、その受け取ったデータを４Ｂの出力フォーマット形式または５Ｂの出力フォーマット形式でデータＭＡＣ２０またはＣＰＵ３０へと転送する。
【００２９】
バイパス回路３５は、ＲＡＭ３３にデータが溜まっていない時にＲＡＭ３３への読み書きをバイパスする手段であって、具体的には、バイパス調停回路４１によってＲＡＭ３３にデータが記憶されていないと判定された場合には、受信ラッチ３１からデータを取得して、その取得したデータを保持ラッチ３７に記憶させる。
【００３０】
パケットライトコントローラ３６は、データの受信、解析、ＲＡＭ３３やバイパス回路３５への書き込みを制御する手段である。具体的には、パケットライトコントローラ３６は、受信ラッチ３１からデータを受信した場合には、バイパス調停回路４１に対してバイパス回路３５の使用権の要求（ｒｅｑ）を出す。そして、パケットライトコントローラ３６は、バイパス調停回路４１からバイパス回路の使用権（ｏｋ）を受け付けた場合には、バイパス回路３５にデータを送信する。また、パケットライトコントローラ３６は、バイパス調停回路４１からバイパス回路の使用不許可（ｎｏ）を受け付けた場合には、ＲＡＭ３３の領域を確保して、バッファ３２へデータの書き込みを行う。
【００３１】
ここで図５を用いて、パケットライトコントローラの状態遷移を説明する。パケットライトコントローラ３６は、図５に示すように、受信ラッチ３１からデータを受信した場合に（１ｓｔ受信）、「ｉｄｌｅ」から「１ｓｔＲＣＶ」に状態を遷移し、バイパス調停回路４１に対してバイパス回路３５の使用権の要求（ｒｅｑ）を出す。そして、使用権（ｏｋ）を受け付けた場合には、バイパスフラグを「１」にして、バイパス回路３５を更新する。また、パケットライトコントローラ３６は、バイパス調停回路４１からバイパス回路の使用不許可（ｎｏ）を受け付けた場合には、ＲＡＭ３３の領域を確保して、バッファ３２を更新する。その後、パケットライトコントローラ３６は、受信ラッチ３１からデータを受信（２ｎｄ受信〜９ｔｈ受信）するたびに状態（２ｎｄＲＣＶ〜９ｔｈＲＣＶ）を遷移させ、３ｒｄＲＣＶ、５ｔｈＲＣＶ、７ｔｈＲＣＶ、９ｔｈＲＣＶに状態が遷移すると、バイパスフラグが１である場合は、バイパス回路３５を更新し、それ以外の場合は、バッファ３２を更新する。
【００３２】
図４の説明に戻ると、パケットリードコントローラ３８は、ＲＡＭ３３またはバイパス回路３５からのデータの読み出しを制御する手段である。具体的には、パケットリードコントローラ３８は、処理対象データがＲＡＭ３３に記憶されている場合には、書き込み情報ラッチ３４に記憶されているＲＡＭ３３の書き込み情報を読み出し、その書き込み情報に従ってＲＡＭ３３からデータを読み出し、その読み出されたデータを保持ラッチ３７に記憶するように制御する。
【００３３】
一方、パケットリードコントローラ３８は、処理対象データをバイパス回路３５から受け付けた場合には、バイパス回路３５の書き込み情報（ｖａｌｉｄ）に従って受け付けたデータを保持ラッチ３７に記憶するように制御する。そして、パケットリードコントローラ３８は、データの送信可能な状態になったときに、パケットセンドコントローラ３９に対して、起動をかけるための起動情報（ｖａｌｉｄ）を通知する。そして、パケットリードコントローラ３８は、現在読み出し中のデータがバイパス回路３５からなのかＲＡＭ３３からなのかを示す読み出し情報と、保持ラッチ３７に対して何バイトまでデータを格納できたのかを示す保持情報（ＣＮＴ）とをパケットセンドコントローラ３９に通知する。
【００３４】
ここで図６を用いて、パケットリードコントローラの処理を説明する。パケットリードコントローラ３８は、図６に示すように、バイパス回路３５からの新規パケットが到着したか否かを判定する（ステップＳ１０１）。そして、パケットリードコントローラ３８は、バイパス回路３５からの新規パケットが到着したと判定された場合には（ステップＳ１０１肯定）、保持ラッチ３７を更新し（ステップＳ１０２）、以降バイパス回路３５から新規データが到着するたびに、保持ラッチ３７に記憶させて、更新する（ステップＳ１０３〜ステップＳ１１０）。また、パケットリードコントローラ３８は、バイパス回路３５からの新規パケットが到着していないと判定された場合には（ステップＳ１０１否定）、ＲＡＭ３３に未処理データが存在するのかを判定し（ステップＳ１１１）、未処理データが存在する場合には（ステップＳ１１１）、ＲＡＭ３３から新規データが到着するたびに、その新規データを保持ラッチ３７に記憶させて、更新する（ステップＳ１１２〜ステップＳ１２１）。
【００３５】
そして、パケットリードコントローラ３８は、保持ラッチ３７を更新した後（ステップＳ１１０、ステップＳ１２１）、またはＲＡＭ３３に未処理パケットが存在しないと判定した後（ステップＳ１１１否定）、パケットセンドコントローラ３８から「ｃｏｍｐｌｅｔｅ」信号を受信した場合は（ステップＳ１２２肯定）、処理を終了する。
【００３６】
図４の説明に戻ると、パケットセンドコントローラ３９は、パケットの送出を制御する手段である。具体的には、パケットセンドコントローラ３９は、パケットリードコントローラ３８から起動情報を受け付けて起動した後、パケットリードコントローラ３８から読み出し情報および保持情報を受け付ける。そして、パケットセンドコントローラ３９は、読み出し情報を用いて、データがＲＡＭ３３を経由して保持ラッチ３７に記憶されたものであると判定した場合には、出力フォーマットを５Ｂの出力フォーマット（図４に示す「ＤＯＷ１」）に変更するように制御する。
【００３７】
一方、パケットセンドコントローラ３９は、読み出し情報を用いて、データがバイパス回路３５を経由して保持ラッチ３７に記憶されたものであると判定した場合には、保持ラッチ３７にデータが溜まっているかを判定する。そして、パケットセンドコントローラ３９は、保持ラッチ３７にデータが溜まっていると判定した場合には、出力フォーマットを５Ｂの出力フォーマット（図４に示す「ＤＯＷ２」）に変更するように制御する。また、パケットセンドコントローラ３９は、保持ラッチ３７にデータが溜まっていないと判定した場合には、出力フォーマットを入力フォーマットと同じバイト数である４Ｂの出力フォーマット（図４に示す「ＤＯＷ１」）となるように制御する。
【００３８】
そして、パケットセンドコントローラ３９は、フォーマットを制御した後に、送信調停回路４２に対して、データ送出許可のための信号を発行し、データ送出不許可の信号（ｂｕｓｙ）の応答がなければ、保持ラッチ３７からデータを読み出し、読み出したデータを出力バス１２から出力する。
【００３９】
ここで図７を用いてパケットセンドコントローラの状態遷移を説明する。例えば、パケットセンドコントローラ３９は、図７に示すように、ｉｄｌｅ状態から、起動をかけるための起動情報の通知を受け（ｖａｌｉｄ＝１）、データがバイパス回路３５を経由して保持ラッチ３７に記憶されたものであると判定し（ｂｙｐａｓｓ＝１）、送信調停回路４２からデータ送出許可の信号を受け付け（ｂｕｓｙ＝０）、保持ラッチ３７が３２バイト未満のデータを格納していることを示す保持情報の通知（ＣＮＴ＜３２Ｂ）を受け付けた場合には、出力フォーマットを４Ｂの出力フォーマット（図４に示す「ＤＯＷ１」）を選択するように制御し、保持ラッチ３７にデータが４Ｂ格納されるごとに状態を遷移して（ＤＯＷ１−１ｓｔ〜ＤＯＷ１−９ｔｈ）、データを出力バス１２から出力し、ＤＯＷ１−９ｔｈに遷移して３２Ｂのデータを出力するとｉｄｌｅ状態に戻る。
【００４０】
また、パケットセンドコントローラ３９は、ｉｄｌｅ状態から、起動をかけるための起動情報の通知を受け（ｖａｌｉｄ＝１）、データがバイパス回路３５を経由して保持ラッチ３７に記憶されたものでないと判定し（ｂｙｐａｓｓ＝０）、送信調停回路４２からデータ送出許可の信号を受け付け（ｂｕｓｙ＝０）を受け付けた場合、または、ｉｄｌｅ状態から、起動をかけるための起動情報の通知を受け（ｖａｌｉｄ＝１）、データがバイパス回路３５を経由して保持ラッチ３７に記憶されたものであると判定し（ｂｙｐａｓｓ＝１）、送信調停回路４２からデータ送出許可の信号を受け付け（ｂｕｓｙ＝０）、保持ラッチ３７が３２バイトのデータを格納していることを示す保持情報の通知（ＣＮＴ＝３２Ｂ）を受け付けた場合には、出力フォーマットを入力フォーマットと同じバイト数である５Ｂの出力フォーマット（図４に示す「ＤＯＷ２」）を選択するように制御し、保持ラッチ３７にデータが５Ｂ格納されるごとに状態を遷移して（ＤＯＷ２−１ｓｔ〜ＤＯＷ２−８ｔｈ）、データを出力バス１２から出力し、ＤＯＷ２−８ｔｈに遷移して３２Ｂのデータを出力するとｉｄｌｅ状態に戻る。
【００４１】
ここで図８を用いてデータ出力選択の論理を説明する、パケットセンドコントローラ３９は、図８に例示するような「ｓｅｎｄ−ｄａｔａ―ｓｅｌｅｃｔｏｒ論理」で構成され、「ｓｅｎｄ−ｄａｔａ―ｓｅｌｅｃｔｏｒ論理」に従って、保持ラッチ３７から出力バス１２に出力する信号を選択している。例えば、パケットセンドコントローラ３９の状態が「ＤＯＷ１−１ｓｔ」である場合には、ＨＤ情報を保持ラッチ３７から出力バス１２へ出力する。
【００４２】
図４の説明に戻ると、バイパス調停回路４１は、ＲＡＭ３３にデータが記憶しているか判定する手段である。具体的には、バイパス調停回路４１は、パケットライトコントローラ３６から使用権の要求（ｒｅｑ）を受け付けた後に、ＲＡＭ３３にデータが記憶しているか判定し、ＲＡＭ３３にデータが記憶されている場合には、バイパス回路の使用権（ｏｋ）をパケットライトコントローラ３６に対して送信する。一方、バイパス調停回路４１は、ＲＡＭ３３にデータが記憶されている場合には、バイパス回路の使用不許可（ｎｏ）をパケットライトコントローラ３６に対して送信する。
【００４３】
ＲＡＭ調停回路４０は、バッファ３２からＲＡＭ３３への書き込みが衝突した場合の調停を行う。また、送信調停回路４２は、保持ラッチ３７から出力バスへのデータの出力が衝突した場合の調停を行う。
【００４４】
［システムコントローラのタイムチャート］
次に、システムコントローラ１０の実施時におけるタイムチャートを図９〜図１３を用いて説明する。図９は、バイパス回路使用、ＤＯＷ１フォーマット使用時（ＣＡＳＥ１）のシステムコントローラ１０の実施時におけるタイムチャートであり、図１０は、バイパス回路使用、応答用フォーマットがＤＯＷ２フォーマットしかない場合（ＣＡＳＥ２）のシステムコントローラ１０の実施時におけるタイムチャートであり、図１１は、バイパス回路およびＲＡＭを使用し、ＤＯＷ１フォーマットおよびＤＯＷ２フォーマットを併用した場合（ＣＡＳＥ３）のシステムコントローラ１０の実施時におけるタイムチャートであり、図１２は、バイパス回路を使用し、他経路使用のためパケットセンドコントローラが待たされる際に、ＤＯＷ２フォーマットに切り替えた場合（ＣＡＳＥ４）のシステムコントローラ１０の実施時におけるタイムチャートであり、図１３は、バイパス回路を使用し、他経路使用のためパケットセンドコントローラが待たされる際に、ＤＯＷ２に切り替えない場合（ＣＡＳＥ５）のシステムコントローラ１０の実施時におけるタイムチャートである。
【００４５】
以下の説明では、ＣＡＳＥ１、ＣＡＳＥ２の比較においてＤＯＷ１、ＤＯＷ２フォーマットを定義する事の有効性を示す。例えば、システムコントローラ１０は、図１および図２を示すように、ＣＡＳＥ１、ＣＡＳＥ２ではＭＡＣ２０からのパケットをバイパスしてＣＰＵ３０に送信するケースにおけるタイムチャートである。ＣＡＳＥ１はＤＯＷ１フォーマットで応答した場合、ＣＡＳＥ２はＤＯＷ２フォーマットで応答するケースである。なお、システムコントローラ１０は、ＣＡＳＥ１、ＣＡＳＥ２では他経路からのパケットも存在しない前提である。
【００４６】
そして、ＣＡＳＥ２のようにＤＯＷ２フォーマットしか定義されていない場合には、バス幅が５ＢあったとしてもＭＡＣ−ＩＦ以上のスループットでＣＰＵ３０に対してパケットを出す事ができず、後続データの待ち合わせがない分ＤＯＷ１フォーマットが有効である。
【００４７】
また、以下の説明では、ＣＡＳＥ３においてＤＯＷ１、ＤＯＷ２フォーマットを切り換える事の有効性を示す。ＣＡＳＥ３はＭＡＣ０、ＭＡＣ１から同時にパケットが送られて来るケースのタイムチャートである。ここで、システムコントローラ１０は、ＭＡＣ０から来たパケットはバイパス経路を利用して応答を行い、ＭＡＣ１から来たパケットは、バイパス経路がＭＡＣ０からのパケットによって使用されている為、一旦ＲＡＭ３３に書き込んだ後、ＲＡＭ３３から読み出してＣＰＵに送信する。このケースでは、システムコントローラ１０は、パイパス経路３５を使用して転送されるＭＡＣ０のパケットに関してはＤＯＷ１フォーマットで応答を行った後、ＲＡＭ経路を利用して読み出されるＭＡＣ１からのパケットをＤＯＷ２フォーマットで送信している。
【００４８】
このように、ＣＡＳＥ１、ＣＡＳＥ２に見られるように、ＲＡＭ３３をバイパスして、他にパケット送出を止める要因がないときはＤＯＷ１フォーマットが有効である。一方、システムコントローラ１０は、ＭＡＣ１からのパケットはＭＡＣ０からのパケットを送信する間ＲＡＭ３３に溜め込まれる。ＭＡＣ０からのパケットを送出した後ＭＡＣ１からのパケットを送出するが、システムコントローラ１０内部でＲＡＭ３３からのデータ読み出しのスループットが確保されていればＲＡＭから一気にデータを読み出し送信する事が出来るのでＤＯＷ２フォーマットを選択する事によりバス幅５Ｂを十分に生かす事が出来る。
【００４９】
また、以下の説明では、ＣＡＳＥ４において、保持ラッチ３７でのパケットの溜まり具合でＤＯＷ１、ＤＯＷ２フォーマットを切り変える事の有効性を示す。ＣＡＳＥ４は、ＣＡＳＥ１、ＣＡＳＥ２と同様にＲＡＭバイパスしてＣＰＵ０に送信するケースにおけるタイムチャートである。但し、システムコントローラ１０は、ＣＡＳＥ５では他経路からのパケットによってＣＰＵ０側のバスが使用されているため一定時間パケットの送出が待たされる状況を想定している。システムコントローラ１０は、ＣＡＳＥ５においてＲＡＭ３３のバイパスは使用されるが、パケットの送出が待たされる間に保持ラッチ３７にデータが溜まっていく。ＣＰＵ０に対するバスが解放された時に保持ラッチ３７に対して十分な数のパケットが溜まっていればＤＯＷ２フォーマットを選択する事によりバス幅５Ｂを生かす事が出来る。
【００５０】
［システムコントローラによる処理］
次に、図１４を用いて、実施例１に係るシステムコントローラ１０による処理を説明する。図１４は、実施例１に係るシステムコントローラ１０の処理動作を示すフローチャートである。
【００５１】
同図に示すように、システムコントローラ１０の入力バス１１は、ＭＡＣ２０およびＣＰＵから４Ｂの入力フォーマット形式でデータ（図４参照）を受け付けた場合には、その受け付けたデータを受信ラッチ３１に記憶させる（ステップＳ１０１肯定）。そして、パケットライトコントローラ３６は、受信ラッチ３１がデータを受信した場合には、バイパス調停回路４１に対してバイパス回路３５の使用権の要求（ｒｅｑ）を出す。そして、バイパス調停回路４１は、パケットライトコントローラ３６から使用権の要求（ｒｅｑ）を受け付けた後に、ＲＡＭ３３にデータが記憶しているか判定し（ステップＳ１０２）、ＲＡＭ３３にデータが記憶されている場合には、バイパス回路の使用権（ｏｋ）をパケットライトコントローラ３６に対して送信する。一方、バイパス調停回路４１は、ＲＡＭ３３にデータが記憶されていない場合には、バイパス回路の使用不許可（ｎｏ）をパケットライトコントローラ３６に対して送信する。
【００５２】
そして、パケットライトコントローラ３６は、バイパス調停回路４１からバイパス回路の使用権（ｏｋ）を受け付けた場合には（ステップＳ１０２肯定）、バイパス回路３５にデータを送信する。
【００５３】
また、パケットライトコントローラ３６は、バイパス調停回路４１からバイパス回路の使用不許可（ｎｏ）を受け付けた場合には（ステップＳ１０２否定）、ＲＡＭ３３の領域を確保して、ＲＡＭ３３へデータの書き込みを行う。
【００５４】
続いて、パケットセンドコントローラ３９は、パケットリードコントローラ３８から起動情報を受け付けて起動した後、パケットリードコントローラ３８から読み出し情報および保持情報を受け付ける。そして、パケットセンドコントローラ３９は、読み出し情報を用いて、データがＲＡＭ３３を経由して保持ラッチ３７に記憶されたものであると判定した場合には、出力フォーマットを５Ｂの出力フォーマット（図４に示す「ＤＯＷ１」）に変更するように制御する（ステップＳ１０５）。
【００５５】
一方、パケットセンドコントローラ３９は、読み出し情報を用いて、データがバイパス回路３５を経由して保持ラッチ３７に記憶されたものであると判定した場合には、保持ラッチ３７にデータが溜まっているかを判定する（ステップＳ１０３）。そして、パケットセンドコントローラ３９は、保持ラッチ３７にデータが溜まっていると判定した場合には（ステップＳ１０３肯定）、出力フォーマットを５Ｂの出力フォーマット（図４に示す「ＤＯＷ２」）に変更するように制御する（ステップＳ１０５）。また、パケットセンドコントローラ３９は、保持ラッチ３７にデータが溜まっていないと判定した場合には（ステップＳ１０３否定）、出力フォーマットを入力フォーマットと同じバイト数である４Ｂの出力フォーマット（図４に示す「ＤＯＷ１」）となるように制御する（ステップＳ１０４）。
【００５６】
そして、パケットセンドコントローラ３９は、フォーマットを制御した後に、送信調停回路４２に対して、パケット送出許可のための信号を発行し、「ｂｕｓｙ」応答がなければ、保持ラッチ３７からデータを読み出し、読み出したデータを出力バス１２から出力する（ステップＳ１０６）。
【００５７】
[実施例１の効果]
上述してきたように、入力バス１１から入力されて出力バス１２から出力されるまでのデータの混雑状況を判定し、データが混雑していると判定された場合には、出力バス１２のバス幅に対応するようにデータのフォーマットを変更した上で出力バス１２から出力し、データが混雑していないと判定された場合には、データのフォーマットを変更することなく出力バス１２から出力するように制御するので、例えば、保持データの蓄積量が少ない場合には、フォーマットを変更せず、出力バス１２に合わせたフォーマット分のデータが蓄積されるまでデータの送信を待機しない結果、また、保持データの蓄積量が多い場合には、フォーマットを変更して、出力バス１２に合わせたフォーマット分のデータを蓄積し、出力バス１２のバス幅を有効に使える結果、データの混雑状況に対応して常にレイテンシを向上させることが可能となる。
【００５８】
また、実施例１によれば、入力バス１１から入力されたデータがＲＡＭ３３に一時記憶された後に保持ラッチ３７に記憶される場合には、データが混雑していると判定し、入力バス１１から入力されたデータがバイパス回路３５を経由して保持ラッチ３７に記憶される場合には、データが混雑していないと判定するので、ＲＡＭ３３内に保持されているデータの蓄積量を判定して、装置内の混雑状況を把握することが可能となる。
【００５９】
また、実施例１によれば、保持ラッチ３７に所定量のデータが既に記憶されている場合には、データが混雑していると判定し、保持ラッチ３７に所定量のデータが未だ記憶されていない場合には、データが混雑していないと判定するので、保持ラッチ内に保持されているデータの蓄積量を判定して、バス内の混雑状況を把握することが可能となる。
【実施例２】
【００６０】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【００６１】
（１）処理負荷判定
また、上記の実施例１では、システムコントローラ１０は、ＲＡＭ３３内にデータが記憶されているかと保持ラッチ３７内にデータが蓄積されているかとを判定して混雑状況を判定する場合を説明したが、本発明はこれに限定されるものではなく、ＲＡＭ３３内にデータが記憶されているか、もしくは保持ラッチ３７内にデータが蓄積されているかを判定して混雑状況を判定するにしてもよい。
【００６２】
（２）システム構成等
また、図示したシステムコントローラ１０の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、システムコントローラの分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、判定部１３と出力フォーマット制御部１４を統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６３】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（例えば、４Ｂのフォーマット）については、特記する場合を除いて任意に変更することができる。
【００６４】
（３）プログラム
なお、本実施例で説明したデータ入出力制御方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【産業上の利用可能性】
【００６５】
以上のように、本発明に係るシステムコントローラは、入力バスから入力されたデータを当該入力バスよりも大きなバス幅を有する出力バスに出力するのに有用であり、特に、データの混雑状況に左右されることなく常にレイテンシを向上させるのに適する。
【図面の簡単な説明】
【００６６】
【図１】図１は、実施例１に係るシステムコントローラ１０の概要および特徴を説明するための図である。
【図２】図２は、入力フォーマットおよび出力フォーマットを説明するための図である。
【図３】図３は、システムコントローラ１０が適用されるデータ転送システムを説明するための全体図である。
【図４】図４は、実施例１に係るシステムコントローラ１０の回路構成を示すブロック図である。
【図５】図５は、実施例１に係るシステムコントローラ１０におけるパケットライトコントローラの状態遷移を説明するための図である。
【図６】図６は、実施例１に係るシステムコントローラ１０におけるパケットリードコントローラの処理を説明するためのフローチャートである。
【図７】図７は、実施例１に係るシステムコントローラ１０におけるパケットセンドコントローラの状態遷移を説明するための図である。
【図８】図８は、データ出力選択の論理を説明するための図である。
【図９】図９は、バイパス回路使用、ＤＯＷ１フォーマット使用時（ＣＡＳＥ１）のシステムコントローラ１０の実施時におけるタイムチャートである。
【図１０】図１０は、バイパス回路使用、応答用フォーマットがＤＯＷ２フォーマットしかない場合（ＣＡＳＥ２）のシステムコントローラ１０の実施時におけるタイムチャートである。
【図１１】図１１は、バイパス回路およびＲＡＭを使用し、ＤＯＷ１フォーマットおよびＤＯＷ２フォーマットを併用した場合（ＣＡＳＥ３）のシステムコントローラ１０の実施時におけるタイムチャートである。
【図１２】図１２は、バイパス回路を使用し、他経路使用のためパケットセンドコントローラが待たされる際に、ＤＯＷ２フォーマットに切り替えた場合（ＣＡＳＥ４）のシステムコントローラ１０の実施時におけるタイムチャートである。
【図１３】図１３は、バイパス回路を使用し、他経路使用のためパケットセンドコントローラが待たされる際に、ＤＯＷ２に切り替えない場合（ＣＡＳＥ５）のシステムコントローラ１０の実施時におけるタイムチャートである。
【図１４】図１４は、実施例１に係るシステムコントローラ１０の処理動作を示すフローチャートである。
【符号の説明】
【００６７】
１０  システムコントローラ
１１  入力バス
１２  出力バス
１３  判定部
１４  フォーマット制御部
１５  出力部
２０  ＭＡＣ
３０  ＣＰＵ
３１  受信ラッチ
３２  バッファ
３３  ＲＡＭ
３４  書き込み情報ラッチ
３５  バイパス回路
３６  パケットコントローラ
３７  保持ラッチ
３８  パケットコントローラ
３９  パケットセンドコントローラ
４０  ＲＡＭ調停回路
４１  バイパス調停回路
４２  送信調停回路
【図１】
0004724743.tif 000002
【図２】
0004724743.tif 000003
【図３】
0004724743.tif 000004
【図４】
0004724743.tif 000005
【図５】
0004724743.tif 000006
【図６】
0004724743.tif 000007
【図７】
0004724743.tif 000008
【図８】
0004724743.tif 000009
【図９】
0004724743.tif 000010
【図１０】
0004724743.tif 000011
【図１１】
0004724743.tif 000012
【図１２】
0004724743.tif 000013
【図１３】
0004724743.tif 000014
【図１４】
0004724743.tif 000015