(57)【要約】【課題】SMBusプロトコルを用いてハードウェア構成を複雑にすることなく通信を行う。【解決手段】ステップＳ１で、マスタデバイスは、WriteByteまたはSendByteプロトコルを用いて、データ記憶命令の送信通知をスレーブデバイスに供給する。スレーブデバイスは、ステップＳ２でデータ記憶命令の送信通知を受信し、ステップＳ３でコマンドや引数などを解釈し、ステップＳ４でコマンドや引数などに基づいてデータの記憶準備を実行する。ステップＳ５で、マスタデバイス７１は、BlockWriteプロトコルを用いて、データおよびデータ記憶命令をスレーブデバイスに供給する。スレーブデバイス８１は、ステップＳ６でデータおよびデータ記憶命令を受信し、ステップＳ７でプロトコルのコマンドや引数などを解釈し、ステップＳ８でデータの記憶処理を実行する。本発明は、マスタデバイスおよびスレーブデバイスに適用できる。【選択図】図１０
2008009804.tif 000002
【特許請求の範囲】
【請求項１】
他の装置とSMBusプロトコルを用いて通信を行う情報処理装置において、
前記他の装置とSMBusプロトコルを用いて通信を行う通信手段と、
前記通信手段により実行される、前記他の装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御する制御手段と
を備え、
前記第１のプロトコルを用いて授受される情報は、前記第２のプロトコルを用いた情報の授受を予告するための情報を含む
情報処理装置。
【請求項２】
前記第１のプロトコルは、前記他の装置への情報の供給または書き込みを指令するコマンドを含むプロトコルである
請求項１に記載の情報処理装置。
【請求項３】
前記第１のプロトコルは、前記第２のプロトコルを用いた情報の授受を予告するために必要な情報量に基づいて決定される
請求項１に記載の情報処理装置。
【請求項４】
他の装置とSMBusプロトコルを用いて通信を行う情報処理装置の情報処理方法において、
前記他の装置との、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し、
前記他の装置との、前記第２のプロトコルを用いた情報の授受を制御する
ステップを含む情報処理方法。
【請求項５】
他の装置との、SMBusプロトコルを用いた通信を制御する処理をコンピュータに実行させるためのプログラムであって、
前記他の装置との、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し、
前記他の装置との、前記第２のプロトコルを用いた情報の授受を制御する
ステップを含む処理をコンピュータに実行させるプログラム。
【請求項６】
請求項５に記載のプログラムが記録されている記録媒体。
【請求項７】
SMBusプロトコルを用いて通信を行う第１の情報処理装置と第２の情報処理装置とを含む情報処理システムにおいて、
前記第１の情報処理装置は、
前記第２の情報処理装置とSMBusプロトコルを用いて通信を行う第１の通信手段と、
前記第１の通信手段により実行される、前記第２の情報処理装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御する第１の制御手段と
を備え、
前記第１のプロトコルを用いて授受される情報は、前記第２のプロトコルを用いた情報の授受を予告するための情報を含み、
前記第２の情報処理装置は、
前記第１の情報処理装置とSMBusプロトコルを用いて通信を行う第２の通信手段と、
前記第２の通信手段により実行される、前記第１の情報処理装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御するとともに、前記第１のプロトコルを用いて授受された情報を基に、前記第２のプロトコルを用いた情報の授受の準備処理を実行する第２の制御手段と
を備える情報処理システム。
【請求項８】
SMBusプロトコルを用いて通信を行う第１の情報処理装置と第２の情報処理装置とを含む情報処理システムの情報処理方法において、
前記第１の情報処理装置と前記第２の情報処理装置とが、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し、
前記第２の情報処理装置が、前記第１のプロトコルを用いて授受された情報を基に、前記第２のプロトコルを用いた情報の授受の準備処理を実行し、
前記第１の情報処理装置と前記第２の情報処理装置とが、前記第２のプロトコルを用いた情報の授受を制御する
ステップを含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理方法、情報処理システム、プログラム、並びに、記録媒体に関し、特に、SMBus（System Management Bus）プロトコルを用いて情報を通信する場合に用いて好適な、情報処理装置および情報処理方法、情報処理システム、プログラム、並びに、記録媒体に関する。
【背景技術】
【０００２】
SMBus（System Management Bus）は、I2C（Inter Integrated Circuit）のサブセットであり、当初は、バッテリとコミュニケーションを行なうためのインターフェイスとして用いられたが、その後、ノート型のパーソナルコンピュータ向けのバッテリー管理規格SBS(Smart Battery System)や、デスクトップ型のパーソナルコンピュータなどにも広く採用されている電源管理機構ACPI(Advanced Configuration And Power Interface)の物理インターフェイスにも応用されている。
【０００３】
物理的には、クロック信号とデータ信号から成る2線式のシリアルバスで、バスに接続された個々のデバイスが固有のアドレスを持ち、このアドレスを使ってピアツーピアのコミュニケーションが行えるようになっている。転送速度も最大100kbpsと低速ではあるが、例えば、Ethernet(登録商標)などと同様に、デバイス間の汎用的なネットワークとして利用できるようになっている。上述したSBSやACPIは、このネットワークを使って、実際に管理や制御に必要なやりとりを規定した、アプリケーションプロトコルということになる(非特許文献１参照)。
【０００４】
【非特許文献１】“System Management Bus (SMBus) Specification, version 2.”、［平成１８年６月２３日検索］、インターネット、<URL: http://www.smbus.org/specs/>
【０００５】
SMBusプロトコルの従来の用い方の例として、BlockReadプロトコルを図１に示す。
【０００６】
マスタデバイスは、スレーブデバイスとの間で通信を開始する場合、まずスタートコンディション、スレーブアドレス、Ｒ／Ｗインジケータの順に、スレーブデバイスに送信する。次に、スレーブアドレスに該当するスレーブデバイスは、ＡＣＫをマスタデバイスに送信する。マスタデバイスは、ＡＣＫを確認すると、コマンドを送信する。コマンドを受信したスレーブデバイスは、ＡＣＫを送信し、かつ、コマンドをデコードし、ただちに以降のデータ送信を行う。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図１を用いて説明したように、コマンドを受信したスレーブデバイスは、ＡＣＫを送信し、かつ、コマンドをデコードし、ただちに以降のデータ送信を実行する必要がある。したがって、スレーブデバイスは、ＳＭＢｕｓ通信完了前にコマンドをデコードする機構を備える必要があった。
【０００８】
すなわち、図２に示されるように、従来のスレーブデバイス１１においては、SMBusI/F２１によるＳＭＢｕｓ通信中に、コマンドをデコードする処理を実行させるために、割り込み線２３を用意し、SMBusI/F２１によるＳＭＢｕｓ通信中に、ＣＰＵ２２に割り込みを入れる必要があった。もしくは、図３に示されるように、従来のスレーブデバイス３１においては、SMBusI/F４１によるＳＭＢｕｓ通信中に、通信処理とは別に独立してコマンドのデコードを行うため、ＣＰＵ４２とは別にコマンドデコーダ４３を備える必要があった。
【０００９】
このように、図１を用いて説明したBlockReadプロトコルを処理するためには、図２に示される割り込み線２３、または、図３に示されるコマンドデコーダ４３などの特別な機構を備える必要があり、これらの機構を備えないスレーブデバイスは、正常に通信を完了させることができなかった。
【００１０】
また、SMBusプロトコルには、WriteByteプロトコルやReadByteプロトコルなどの複数のプロトコルが定義されているが、これらが組み合わせて用いられることは無かった。また、コマンドは８ビットしかないため、最大２５６通りのコマンドしか用意できず、増やすこともできなかった。
【００１１】
本発明はこのような状況に鑑みてなされたものであり、特別なハードウェア機構を用いることなく、SMBusプロトコルを用いて、マスタデバイスとスレーブデバイスとの間でコマンドを授受することが出来るようにするものである。
【課題を解決するための手段】
【００１２】
本発明の第１の側面の情報処理装置は、他の装置とSMBusプロトコルを用いて通信を行う情報処理装置であって、前記他の装置とSMBusプロトコルを用いて通信を行う通信手段と、前記通信手段により実行される、前記他の装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御する制御手段とを備え、前記第１のプロトコルを用いて授受される情報は、前記第２のプロトコルを用いた情報の授受を予告するための情報を含む。
【００１３】
前記第１のプロトコルは、前記他の装置への情報の供給または書き込みを指令するコマンドを含むプロトコルであるものとすることができる。
【００１４】
前記第１のプロトコルは、前記第２のプロトコルを用いた情報の授受を予告するために必要な情報量に基づいて決定されるものとすることができる。
【００１５】
本発明の第１の側面の情報処理方法は、他の装置とSMBusプロトコルを用いて通信を行う情報処理装置の情報処理方法であって、前記他の装置との、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し、前記他の装置との、前記第２のプロトコルを用いた情報の授受を制御するステップを含む。
【００１６】
本発明の第１の側面のプログラムまたは記録媒体に記録さているプログラムは、他の装置との、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し、前記他の装置との、前記第２のプロトコルを用いた情報の授受を制御するステップを含む処理をコンピュータに実行させる。
【００１７】
本発明の第１の側面においては、他の装置と、SMBusプロトコルのうちの第１のプロトコルを用いて、第２のプロトコルによる情報の授受を予告する情報が授受され、前記他の装置と、前記第２のプロトコルを用いた情報の授受が制御される。
【００１８】
本発明の第２の側面の情報処理システムは、SMBusプロトコルを用いて通信を行う第１の情報処理装置と第２の情報処理装置とを含む情報処理システムであって、前記第１の情報処理装置は、前記第２の情報処理装置とSMBusプロトコルを用いて通信を行う第１の通信手段と、前記第１の通信手段により実行される、前記第２の情報処理装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御する第１の制御手段とを備え、前記第１のプロトコルを用いて授受される情報は、前記第２のプロトコルを用いた情報の授受を予告するための情報を含み、前記第２の情報処理装置は、前記第１の情報処理装置とSMBusプロトコルを用いて通信を行う第２の通信手段と、前記第２の通信手段により実行される、前記第１の情報処理装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御するとともに、前記第１のプロトコルを用いて授受された情報を基に、前記第２のプロトコルを用いた情報の授受の準備処理を実行する第２の制御手段とを備える。
【００１９】
本発明の第２の側面の情報処理方法は、SMBusプロトコルを用いて通信を行う第１の情報処理装置と第２の情報処理装置とを含む情報処理システムの情報処理方法であって、前記第１の情報処理装置と前記第２の情報処理装置とが、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し、前記第２の情報処理装置が、前記第１のプロトコルを用いて授受された情報を基に、前記第２のプロトコルを用いた情報の授受の準備処理を実行し、前記第１の情報処理装置と前記第２の情報処理装置とが、前記第２のプロトコルを用いた情報の授受を制御するステップを含む。
【００２０】
本発明の第２の側面においては、第１の情報処理装置と第２の情報処理装置とで、SMBusプロトコルのうちの第１のプロトコルを用いて、第２のプロトコルによる情報の授受を予告する情報が授受され、前記第２の情報処理装置で、前記第１のプロトコルを用いて授受された情報を基に、前記第２のプロトコルを用いた情報の授受の準備処理が実行され、前記第１の情報処理装置と前記第２の情報処理装置とで、前記第２のプロトコルを用いた情報が授受される。
【００２１】
ネットワークとは、少なくとも２つの装置が接続され、ある装置から、他の装置に対して、情報の伝達をできるようにした仕組みをいう。ネットワークを介して通信する装置は、独立した装置どうしであっても良いし、１つの装置を構成している内部ブロックどうしであっても良い。
【００２２】
また、通信とは、無線通信および有線通信は勿論、無線通信と有線通信とが混在した通信、即ち、ある区間では無線通信が行われ、他の区間では有線通信が行われるようなものであっても良い。さらに、ある装置から他の装置への通信が有線通信で行われ、他の装置からある装置への通信が無線通信で行われるようなものであっても良い。
【００２３】
情報処理装置は、独立した装置であっても良いし、記録再生装置などの通信処理を行うブロックであっても良い。
【発明の効果】
【００２４】
以上のように、本発明の第１の側面によれば、他の装置にコマンドを送信することができ、特に、SMBusプロトコルのうちの第１のプロトコルを用いて、第２のプロトコルによる情報の授受を予告する情報を送信した後、第２のプロトコルによって情報を授受するようにしたので、スレーブ装置のハードウェア構成を単純にすることができる。
【００２５】
また、本発明の第２の側面によれば、２つの装置間でコマンドを授受することができ、特に、スレーブ装置で第２のプロトコルによる情報の授受を準備するようにしたので、スレーブ装置のハードウェア構成を単純にすることができる。
【発明を実施するための最良の形態】
【００２６】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２７】
本発明の第１の側面の情報処理装置は、他の装置（例えば、スレーブデバイス８１）とSMBusプロトコルを用いて通信を行う情報処理装置（例えば、マスタデバイス７１）であって、前記他の装置とSMBusプロトコルを用いて通信を行う通信手段（例えば、SMBusI/F１０１）と、前記通信手段により実行される、前記他の装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御する制御手段（例えば、マスタCPU１０２）とを備え、前記第１のプロトコルを用いて授受される情報は、前記第２のプロトコルを用いた情報の授受を予告するための情報を含む。
【００２８】
前記第１のプロトコルは、前記他の装置への情報の供給または書き込みを指令するコマンドを含むプロトコル（例えば、WriteByte,SendByte,WriteWord,BlockWrite）であるものとすることができる。
【００２９】
本発明の第１の側面の情報処理方法は、他の装置（例えば、スレーブデバイス８１）とSMBusプロトコルを用いて通信を行う情報処理装置（例えば、マスタデバイス７１）の情報処理方法であって、前記他の装置との、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し（例えば、図１０のステップＳ１、図１１のステップＳ３１、または、図１２のステップＳ６１の処理）、前記他の装置との、前記第２のプロトコルを用いた情報の授受を制御する（例えば、図１０のステップＳ５、図１１のステップＳ３５、または、図１２のステップＳ６５の処理）ステップを含む。
【００３０】
本発明の第１の側面のプログラムは、他の装置（例えば、スレーブデバイス８１）との、SMBusプロトコルを用いた通信を制御する処理をコンピュータに実行させるためのプログラムであって、前記他の装置との、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し（例えば、図１０のステップＳ１、図１１のステップＳ３１、または、図１２のステップＳ６１の処理）、前記他の装置との、前記第２のプロトコルを用いた情報の授受を制御する（例えば、図１０のステップＳ５、図１１のステップＳ３５、または、図１２のステップＳ６５の処理）ステップを含む処理をコンピュータに実行させる。
【００３１】
本発明の第２の側面の情報処理システムは、SMBusプロトコルを用いて通信を行う第１の情報処理装置（例えば、マスタデバイス７１）と第２の情報処理装置（例えば、スレーブデバイス８１）とを含む情報処理システムであって、前記第１の情報処理装置は、前記第２の情報処理装置とSMBusプロトコルを用いて通信を行う第１の通信手段（例えば、SMBusI/F１０１）と、前記第１の通信手段により実行される、前記第２の情報処理装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御する第１の制御手段（例えば、マスタCPU１０２）とを備え、前記第１のプロトコルを用いて授受される情報は、前記第２のプロトコルを用いた情報の授受を予告するための情報を含み、前記第２の情報処理装置は、前記第１の情報処理装置とSMBusプロトコルを用いて通信を行う第２の通信手段（例えば、SMBusI/F１１１）と、前記第２の通信手段により実行される、前記第１の情報処理装置とのSMBusプロトコルのうちの第１のプロトコルを用いた情報の授受、および、第２のプロトコルを用いた情報の授受を制御するとともに、前記第１のプロトコルを用いて授受された情報を基に、前記第２のプロトコルを用いた情報の授受の準備処理を実行する第２の制御手段（例えば、スレーブCPU１１２）とを備える。
【００３２】
本発明の第２の側面の情報処理方法は、SMBusプロトコルを用いて通信を行う第１の情報処理装置（例えば、マスタデバイス７１）と第２の情報処理装置（例えば、スレーブデバイス８１）とを含む情報処理システムの情報処理方法であって、前記第１の情報処理装置と前記第２の情報処理装置とが、SMBusプロトコルのうちの第１のプロトコルを用いた、第２のプロトコルによる情報の授受を予告する情報の授受を制御し（例えば、図１０のステップＳ１およびステップＳ２、図１１のステップＳ３１およびステップＳ３２、または、図１２のステップＳ６１およびステップＳ６２の処理）、前記第２の情報処理装置が、前記第１のプロトコルを用いて授受された情報を基に、前記第２のプロトコルを用いた情報の授受の準備処理を実行し（例えば、図１０のステップＳ４、図１１のステップＳ３４、または、図１２のステップＳ６４の処理）、前記第１の情報処理装置と前記第２の情報処理装置とが、前記第２のプロトコルを用いた情報の授受を制御する（例えば、図１０のステップＳ５およびステップＳ６、図１１のステップＳ３５およびステップＳ３６、または、図１２のステップＳ６５およびステップＳ６６の処理）ステップを含む。
【００３３】
以下、図を参照して、本発明の実施の形態について説明する。
【００３４】
SMBus通信路を用いてシリアル通信を行うシステムの構成例を図３に示す。
【００３５】
SMBus６１には、マスタデバイス７１−１乃至７１−ｎを接続することが出来るとともに、スレーブデバイス８１−１乃至８１−ｍを接続することが出来る。
【００３６】
以下の説明においては、マスタデバイス７１−１乃至７１−ｎを個々に区別する必要がない場合、単に、マスタデバイス７１と称し、スレーブデバイス８１−１乃至８１−ｍを個々に区別する必要がない場合、単に、スレーブデバイス８１と称する。
【００３７】
マスタデバイス７１とスレーブデバイス７１の最も簡単な構成例(必要最低限の構成例)を図４に示す。
【００３８】
マスタデバイス７１は、SMBus６１とのインタフェースであるSMBusI/F１０１と、マスタデバイス７１の動作を制御するマスタCPU１０２とを備えている。
【００３９】
スレーブデバイス８１は、SMBus６１とのインタフェースであるSMBusI/F１１１と、スレーブデバイス８１の動作を制御するスレーブCPU１１２とを備えている。
【００４０】
図５に、マスタデバイス７１とスレーブデバイス８１の具体的な構成例を示す。
【００４１】
マスタデバイス７１とストレージシステム（スレーブデバイス）８１とは、主にデータを授受するストレージI/F１５１と、上述したSMBus６１で接続されている。ストレージI/F１５１には、例えば、PCI（Peripheral Components Interconnect）Expressなどの高速バスが用いられると好適である。
【００４２】
ストレージシステム８１は、SMBusI/F１１１、コントローラ（スレーブCPU)１１２、レジスタ１６１、DMAコントローラ１６２、バッファメモリ１６３、内部バス１６４、ストレージメモリコントローラ１６５、および、ストレージメモリ１６６−１乃至１６６−ｐを含んで構成される。
【００４３】
コントローラ（スレーブCPU)１１２は、ストレージシステム８１の動作を制御するものであり、例えば、ストレージメモリコントローラ１６５を制御して、ストレージメモリ１６６−１乃至１６６−ｐへのデータの書き込みまたは読み出しを実行させたり、マスタデバイス７１から供給され、コマンドに基づいて、ＤＭＡコントローラ１６２の設定を行うなどの処理を実行する。
【００４４】
内部バス１６４には、コントローラ（スレーブCPU)１１２、レジスタ１６１、DMAコントローラ１６２、バッファメモリ１６３が接続される。
【００４５】
レジスタ１６１は、複数のレジスタを含むことができ、マスタデバイス７１から、ストレージI/F１５１を介してマスタデバイス７１から供給されたコマンドやその他の処理に必要な情報や引数などを保持する。
【００４６】
DMAコントローラ１６２は、ストレージシステム８１のバッファメモリ１６３とマスタデバイス７１のマスタメモリ１４１とのデータの授受を制御するものである。
【００４７】
バッファメモリ１６３は、ストレージI/F１５１を介して、マスタデバイス７１から供給されたデータを一時バッファリングしたり、ストレージメモリコントローラ１６５の制御によりストレージメモリ１６６−１乃至１６６−ｐのうちのいずれかから読み出されて、ストレージI/F１５１およびストレージI/Fバス６８を介して、マスタデバイス７１に供給されるデータを一時バッファリングする。
【００４８】
ストレージメモリコントローラ１６５は、コントローラ（スレーブCPU)１１２の制御に基づいて、ストレージメモリ１６６−１乃至１６６−ｐへのデータの書き込みおよび読み出しを制御する。
【００４９】
ストレージメモリ１６６−１乃至１６６−ｐは、ストレージメモリコントローラ１６５により、データが書き込まれ、また、読み出される。
【００５０】
以下の説明においては、ストレージメモリ１６６−１乃至１６６−ｐを個々に区別する必要がない場合、単に、ストレージメモリ１６６と称する。
【００５１】
マスタＣＰＵ１０２は、マスタデバイス７１の動作を制御するものであり、例えば、図示しない操作入力部により入力されたユーザの操作入力に基づいて、マスタメモリ１４１に記憶されているデータをストレージシステム８１のストレージメモリ１６６に書き込むためのコマンドや、ストレージシステム８１のストレージメモリ１６６に記憶されているデータを読み込んで、マスタメモリ１４１に記憶させるためのコマンドなどのストレージシステム８１とのデータの授受に関するコマンド、または、これ以外に、例えば、ストレージメモリ１６６に記憶されているデータの消去などを指令するなど、ストレージメモリ１６６を制御するためのコマンドを発生し、SMBus６１を介して、ストレージシステム８１に供給する。
【００５２】
マスタメモリ１４１は、マスタＣＰＵ１０２の制御に基づいて、所定のデータを記憶するものである。
【００５３】
また、必要に応じて、ドライブ１４３が内部バス１４２に接続される。ドライブ１４３は、例えば、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア１７１が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータはマスタメモリ１４１に転送され、記録されたり、マスタCPU１０２にインストールされる。
【００５４】
マスタデバイス７１は、複数のプロトコルを組み合わせてスレーブデバイス８１にコマンドを供給する。
【００５５】
その組み合わせの第１の例として、図６に、WriteByteプロトコルとBlockReadプロトコルとを組み合わせた場合を示す。
【００５６】
図中、スタートコンディションはＳ、ストップコンディションはＰ、応答（Acknowledge）はＡ、コマンドはCommand、データはByteと記載されているものとする。
【００５７】
SMBusが起動すると、スレーブデバイス８１は、マスタデバイス７１からの所定のプロトコルによるコマンド入力待ちの状態になる。図６において、最初のスタートコンディションからストップコンディションの間のパケットは、WriteByteプロトコルを構成している。すなわち、WriteByteプロトコルは、マスタデバイス７１からのスタートコンディション、および、スレーブアドレス7bit+ライトインジケータ[W]、スレーブアドレスに対応するスレーブ８１からのACK[A]、マスタデバイス７１からのコマンド1バイト、スレーブ８１からのACK[A]、マスタデバイス７１からのライトデータ1バイト、スレーブ８１からのACK[A]、マスタデバイス７１からのストップコンディション[P]で構成される。
【００５８】
通信を開始するマスタデバイス７１は、通信対象としたいスレーブデバイス８１のスレーブアドレスを、WriteByteプロトコルのスレーブアドレスにセットし、通信を開始する。マスタデバイス７１はコマンドおよびデータを送信すると、ストップコンディションにより、一旦SMBus通信を終了させる。すなわち、SMBus６１を開放する。なお、ここでは、コマンドとして、次のBlockReadプロトコルにより所定のデータを要求することを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１に供給することが出来る。データはコマンドの引数として用いることができる。したがって、例えば、この例ではスレーブデバイスへの要求の識別に２バイト用いることができる。
【００５９】
そして、WriteByteプロトコルが終了すると、スレーブデバイス８１は、受信したコマンドおよびデータをデコードし、例えば、マスタデバイス７１が要求している送信データを準備したり、マスタデバイス７１から供給されるデータを受信する準備を行い（ここでは、WriteByteプロトコルによって、次にBlockReadプロトコルによりデータの読み出しが要求されることが通知されているので、マスタデバイス７１が要求している送信データが準備される）、次に、マスタデバイス７１から供給される所定のプロトコルによる通信要求を待つ。
【００６０】
次に、マスタデバイス７１は、スタートコンディションで開始し、ストップコンディションで終了するBlockReadプロトコルにより、スレーブデバイス８１から指定するデータを読み出すことができる。
【００６１】
BlockReadプロトコルは、マスタデバイス７１からのスタートコンディション[S]、および、スレーブアドレス7bit+ライトインジケータ[W]、スレーブアドレスに対応するスレーブ８１からのACK[A]、マスタデバイス７１からのコマンド1バイト、スレーブ８１からのACK[A]、マスタデバイス７１からのスタートコンディション、および、スレーブアドレス7bit（再送）+リードインジケータ[R]、スレーブ８１からのACK[A]、スレーブ８１からのデータカウント1バイト、マスタデバイス７１からのACK[A]、スレーブ８１からのリードデータ1バイト、マスタデバイス７１からのACK[A]・・・スレーブ８１からの最終リードデータ1バイト、マスタデバイス７１からのNACK[N]、マスタデバイス７１からのストップコンディション[P]で構成される。
【００６２】
ここでは、データの読み出しを指令するためのBlockReadプロトコルが２番目にスレーブデバイス８１に供給される場合について説明されているが。マスタデバイス７１からスレーブデバイス７１にデータが送信される（例えば、スレーブデバイス７１が内部に有する記憶部にデータが供給されて記憶される場合など）には、BlockReadプロトコルに代わって、例えば、BlockWriteプロトコルなどのデータの書き込みを指令するためのプロトコルが用いられることはいうまでもない。
【００６３】
このように、マスタデバイス７１は、WriteByteプロトコルを用いて、次のプロトコル（例えば、BlockReadプロトコル）により所定のデータを要求するまたは所定のデータを書き込むことを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１に供給し、一旦SMBus通信を終了させる。そして、その間に、スレーブデバイス８１は、受信したコマンドおよびデータをデコードし、マスタデバイス７１が要求している送信データを準備するか、または、データの書き込みの準備を行って、次のプロトコル（例えば、BlockReadプロトコル）を用いて供給されるコマンドにより、スレーブデバイス８１とプロトコルにのっとった所定のデータの授受が行われるようになされている。これにより、図２または図３を用いて説明した従来における場合とは異なり、SMBus通信中に、コマンドおよびデータをデコードする必要がなくなる。このため、SMBus通信中に、コマンドのデコードが必要だということを割り込みして通知する必要や、コマンド用のデコーダを別途用意する必要がなく、スレーブデバイス８１のハードウェアを簡素化することができる。
【００６４】
具体的な動作例として、マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合に、マスタデバイス７１がスレーブデバイス８１から所定のデータを要求する（読み出し処理が実行される）場合について説明する。
【００６５】
マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合、SMBusが起動すると、スレーブデバイス８１は、マスタデバイス７１からの所定のプロトコルによるコマンド入力待ちの状態になる。マスタデバイス７１のマスタＣＰＵ１０２は、WriteByteプロトコルを用いて、次のBlockReadプロトコルにより所定のデータを要求することを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１のレジスタ１６１に供給する。コントローラ（スレーブCPU）１１２は、レジスタ１６１に蓄積されたコマンドおよびデータを認識して、DMAコントローラ１６２を設定し、マスタデバイス７１が要求する送信データを、ストレージメモリコントローラ１６５によりストレージメモリ１６６から読み出させて、バッファメモリ１６３に書き込ませなどの準備を行うとともに、次に、マスタデバイス７１から供給されるBlockReadプロトコルによる通信要求を待つ。
【００６６】
そして、その後、マスタデバイス７１のマスタＣＰＵ１０２は、スレーブデバイス８１に対して、BlockReadプロトコルのコマンドにおいて、データの読み出しを指令するので、スレーブデバイス８１のＤＭＡコントローラ１６２は、バッファメモリ１６３に予め蓄積されているデータを、ストレージI/F６１を介して、マスタデバイス７１のマスタメモリ１４１に供給する。
【００６７】
次に、組み合わせの第２の例として、図７に、SendByteプロトコルとBlockReadプロトコルとを組み合わせた場合を示す。
【００６８】
スレーブデバイス８１に送信する要求を識別するのに１バイトの情報があれば十分であるならば、図６を用いて説明したWriteByteプロトコルに代わって、SendByteプロトコルを用いることができる。
【００６９】
SMBusが起動すると、スレーブデバイス８１は、マスタデバイス７１からの所定のプロトコルによるコマンド入力待ちの状態になる。図７において、最初のスタートコンディションからストップコンディションの間のパケットは、SendByteプロトコルを構成している。すなわち、SendByteプロトコルは、スタートコンディション、スレーブアドレス7bit+ライトインジケータ[W]、ACK[A]、ライトデータ1バイト、ACK[A]、ストップコンディション[P]で構成される。したがって、例えば、この例ではスレーブデバイスへの要求の識別に１バイトの情報を用いることができる。
【００７０】
そして、SendByteプロトコルが終了すると、スレーブデバイス８１は、図６を用いて説明した場合と同様にして、受信したコマンドおよびデータをデコードし、例えば、マスタデバイス７１が要求している送信データを準備したり、マスタデバイス７１から供給されるデータを受信する準備を行い（ここでは、SendByteプロトコルによって、次にBlockReadプロトコルによりデータの読み出しが要求されることが通知されているので、マスタデバイス７１が要求している送信データが準備される）、次に、マスタデバイス７１から供給される所定のプロトコルによる通信要求を待つ。
【００７１】
次に、マスタデバイス７１は、図６を用いて説明した場合と同様にして、スタートコンディションで開始し、ストップコンディションで終了するBlockReadプロトコルにより、スレーブデバイス８１から指定するデータを読み出すことができる。
【００７２】
このように、マスタデバイス７１は、SendByteプロトコルを用いて、次の所定のプロトコル（ここでは、BlockReadプロトコル）により所定のデータを要求するまたは所定のデータを書き込むことを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１に供給し、一旦SMBus通信を終了させる。そして、その間に、スレーブデバイス８１は、受信したコマンドおよびデータをデコードし、マスタデバイス７１が要求している送信データを準備するか、または、データの書き込みの準備を行って、次のプロトコルのコマンドにより、スレーブデバイス８１とプロトコルにのっとった所定のデータの授受が行われるようになされている。これにより、図２または図３を用いて説明した従来における場合とは異なり、SMBus通信中に、コマンドおよびデータをデコードする必要はないため、SMBus通信中に、コマンドのデコードが必要だということを割り込みして通知する必要や、コマンド用のデコーダを別途用意する必要がなく、スレーブデバイス８１のハードウェアを簡素化することができる。
【００７３】
次に、組み合わせの第３の例として、図８に、WriteWordプロトコルとBlockReadプロトコルとを組み合わせた場合を示す。
【００７４】
スレーブデバイス８１に送信する要求を識別するのに３バイトの情報が必要であるならば、図６を用いて説明したWriteByteプロトコルに代わって、WriteWordプロトコルを用いることができる。
【００７５】
SMBusが起動すると、スレーブデバイス８１は、マスタデバイス７１からの所定のプロトコルによるコマンド入力待ちの状態になる。図８において、最初のスタートコンディションからストップコンディションの間のパケットは、WriteWordプロトコルを構成している。すなわち、WriteWordプロトコルは、スタートコンディション、スレーブアドレス7bit+ライトインジケータ[W]、ACK[A]、コマンド1バイト、ACK[A]、ライトデータLow1バイト、ACK[A]、ライトデータHigh1バイト、ACK[A]、ストップコンディション[P]で構成される。したがって、例えば、この例ではスレーブデバイスへの要求の識別に３バイト用いることができる。
【００７６】
そして、WriteWordプロトコルが終了すると、スレーブデバイス８１は、図６を用いて説明した場合と同様にして、受信したコマンドおよびデータをデコードし、例えば、マスタデバイス７１が要求している送信データを準備したり、マスタデバイス７１から供給されるデータを受信する準備を行い（ここでは、WriteWordプロトコルによって、次にBlockReadプロトコルによりデータの読み出しが要求されることが通知されているので、マスタデバイス７１が要求している送信データが準備される）、次に、マスタデバイス７１から供給される所定のプロトコルによる通信要求を待つ。
【００７７】
次に、マスタデバイス７１は、図６を用いて説明した場合と同様にして、スタートコンディションで開始し、ストップコンディションで終了するBlockReadプロトコルにより、スレーブデバイス８１から指定するデータを読み出すことができる。
【００７８】
このように、マスタデバイス７１は、WriteWordプロトコルを用いて、次の所定のプロトコル（ここでは、BlockReadプロトコル）により所定のデータを要求するまたは所定のデータを書き込むことを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１に供給し、一旦SMBus通信を終了させる。そして、この場合においても、上述した場合と同様に、その間に、スレーブデバイス８１は、受信したコマンドおよびデータをデコードし、マスタデバイス７１が要求している送信データを準備するか、または、データの書き込みの準備を行うので、マスタデバイス７１とスレーブデバイス８１とでは、プロトコルにのっとった所定のデータの授受を行うことが可能である。また、WriteWordプロトコルを用いて、次の所定のプロトコルの送信を予告するようにした場合、WriteByteプロトコルやSendByteプロトコルを用いた場合よりも多くの情報を先行してスレーブデバイス８１に通知することができるので、通信の自由度が高くなる。そして、上述した場合と同様にして、これにより、図２または図３を用いて説明した従来における場合とは異なり、SMBus通信中に、コマンドおよびデータをデコードする必要はがなくなり、SMBus通信中に、コマンドのデコードが必要だということを割り込みして通知する必要や、コマンド用のデコーダを別途用意する必要がなく、スレーブデバイス８１のハードウェアを簡素化することができる。
【００７９】
次に、組み合わせの第４の例として、図９に、BlockWriteプロトコルとBlockReadプロトコルとを組み合わせた場合を示す。
【００８０】
スレーブデバイス８１に送信する要求を識別するのに３バイト以上の情報が必要であったり、コマンドの引数を可変にしたい場合には、図６を用いて説明したWriteByteプロトコルに代わって、WriteWordプロトコルを用いることができる。
【００８１】
SMBusが起動すると、スレーブデバイス８１は、マスタデバイス７１からの所定のプロトコルによるコマンド入力待ちの状態になる。図９において、最初のスタートコンディションからストップコンディションの間のパケットは、BlockWriteプロトコルを構成している。すなわち、BlockWriteプロトコルは、スタートコンディション、スレーブアドレス7bit+ライトインジケータ[W]、ACK[A]、コマンド1バイト、ACK[A]、そして、N個のライトデータ1バイトと、これに対するACK[A]、および、ストップコンディション[P]で構成される。したがって、この例ではスレーブデバイスへの要求の識別に所望のバイト数のデータを用いることができる。
【００８２】
そして、BlockWriteプロトコルが終了すると、スレーブデバイス８１は、図６を用いて説明した場合と同様にして、受信したコマンドおよびデータをデコードし、例えば、マスタデバイス７１が要求している送信データを準備したり、マスタデバイス７１から供給されるデータを受信する準備を行い（ここでは、BlockWriteプロトコルによって、次にBlockReadプロトコルによりデータの読み出しが要求されることが通知されているので、マスタデバイス７１が要求している送信データが準備される）、次に、マスタデバイス７１から供給される所定のプロトコルによる通信要求を待つ。
【００８３】
次に、マスタデバイス７１は、図６を用いて説明した場合と同様にして、スタートコンディションで開始し、ストップコンディションで終了するBlockReadプロトコルにより、スレーブデバイス８１から指定するデータを読み出すことができる。
【００８４】
このように、マスタデバイス７１は、BlockWriteプロトコルを用いて、次の所定のプロトコル（ここでは、BlockReadプロトコル）により所定のデータを要求するまたは所定のデータを書き込むことを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１に供給し、一旦ＳMBus通信を終了させ、その間に、スレーブデバイス８１において、受信したコマンドおよびデータをデコードし、マスタデバイス７１が要求している送信データを準備するか、または、データの書き込みの準備を行うことができるようにしたので、マスタデバイス７１とスレーブデバイス８１とでプロトコルにのっとった所定のデータの授受うを可能としている。これにより、図２または図３を用いて説明した従来における場合とは異なり、ＳＭＢｕｓ通信中に、コマンドおよびデータをデコードする必要はないため、SMBus通信中に、コマンドのデコードが必要だということを割り込みして通知する必要や、コマンド用のデコーダを別途用意する必要がなく、スレーブデバイス８１のハードウェアを簡素化することができる。
【００８５】
また、BlockWriteプロトコルを用いて、次の所定のプロトコルの送信を予告するようにした場合、WriteByteプロトコルやSendByteプロトコルを用いた場合よりも多くの情報を先行してスレーブデバイス８１に通知することができるので、通信の自由度が高くなる。
【００８６】
このように、複数用いられるプロトコルのうちの１つ目のプロトコルは、スレーブデバイス８１への情報の供給または書き込みを指令するコマンドを含むプロトコルであるものとすることができる。
【００８７】
なお、図６乃至図９を用いて説明した４つの組み合わせにおいては、２つ目のプロトコルとして、BlockReadプロトコルに代わって、スレーブデバイス８１に送信する要求に応じて、任意のSMBusプロトコルを用いることができる。
【００８８】
次に、図１０のフローチャートを参照して、マスタデバイス７１とスレーブデバイス８１とが実行する第１の処理例について説明する。ここでは、マスタデバイス７１からスレーブデバイス８１にデータが供給されて、スレーブデバイス８１に記憶される（書き込まれる）ことが要求される場合であって、最初にマスタデバイス７１からスレーブデバイス８１に供給されるデータ記憶命令の送信通知には、１または２バイト必要である場合の処理について説明する。
【００８９】
ステップＳ１において、マスタデバイス７１のマスタＣＰＵ１０２は、WriteByteプロトコル、または、SendByteプロトコルを用いて、データ記憶命令の送信通知、すなわち、次に、BlockWriteプロトコルでコマンドが送信されることを予告する情報を、SMBusI/F１０１およびSMBus６１を介して、スレーブデバイス８１に供給する。
【００９０】
ステップＳ２において、スレーブデバイス８１のスレーブＣＰＵ１１２は、SMBusI/F１１１を介して、WriteByteプロトコル、または、SendByteプロトコルのデータ記憶命令の送信通知を受信する。
【００９１】
ステップＳ３において、スレーブデバイス８１のスレーブＣＰＵ１１２は、WriteByteプロトコル、または、SendByteプロトコルのコマンドやその引数などを解釈する。
【００９２】
ステップＳ４において、スレーブデバイス８１のスレーブＣＰＵ１１２は、コマンドやその引数などに基づいて、データの記憶準備を実行する。例えば、マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合、スレーブデバイス８１のスレーブＣＰＵ（コントローラ）１１２は、ＤＭＡコントローラ１６２を設定したり、バッファメモリ１６３に、新たに書き込まれるデータの分のバッファリング領域を確保する処理を実行する。また、SMBus６１が開放されるため、スレーブデバイス８１は、マスタデバイス７１からの要求待ち状態となり、次に、マスタデバイス７１から供給されるBlockWriteプロトコルによる通信要求を待つ。
【００９３】
ステップＳ５において、マスタデバイス７１のマスタＣＰＵ１０２は、BlockWriteプロトコルを用いて、データおよびデータ記憶命令を、SMBusI/F１０１およびSMBus６１を介して、スレーブデバイス８１に供給する。
【００９４】
ステップＳ６において、スレーブデバイス８１のスレーブＣＰＵ１１２は、SMBusI/F１１１を介して、BlockWriteプロトコルのデータおよびデータ記憶命令を受信する。
【００９５】
ステップＳ７において、スレーブデバイス８１のスレーブＣＰＵ１１２は、BlockWriteプロトコルのコマンドやその引数などを解釈する。
【００９６】
ステップＳ８において、スレーブデバイス８１のスレーブＣＰＵ１１２は、コマンドやその引数などに基づいて、データの記憶処理を実行し、処理が終了される。例えば、マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合、スレーブデバイス８１のＤＭＡコントローラ１６２は、ストレージI/F１５１を介して、マスタメモリ１４１から、記憶が指令された（書き込まれる）データを読み込み、バッファメモリ１６３に書き込む。そして、スレーブCPU（コントローラ）１１２は、ストレージメモリコントローラ１６５を制御し、バッファメモリ１６３からストレージメモリ１６６にデータを供給して記憶させる。
【００９７】
このような処理により、マスタデバイス７１は、WriteByteプロトコル、または、SendByteプロトコルにより、次のBlockWriteプロトコルにより所定のデータを書き込むことを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１に供給し、一旦ＳＭＢｕｓ通信を終了させる。そして、その間に、スレーブデバイス８１は、受信したコマンドおよびデータをデコードし、データの書き込みの準備を行う。その後、マスタデバイス７１は、BlockWriteプロトコルにより、スレーブデバイス８１にデータを供給して記憶させることができる。これにより、図２または図３を用いて説明した従来における場合とは異なり、ＳＭＢｕｓ通信中に、コマンドおよびデータをデコードする必要はない。このため、SMBus通信中に、コマンドのデコードが必要だということを割り込みして通知する必要や、コマンド用のデコーダを別途用意する必要がなく、スレーブデバイス８１のハードウェアを簡素化することができる。
【００９８】
次に、図１１のフローチャートを参照して、マスタデバイス７１とスレーブデバイス８１とが実行する第２の処理例について説明する。ここでは、マスタデバイス７１からスレーブデバイス８１にデータが供給されて、スレーブデバイス８１に記憶され、最初にマスタデバイス７１からスレーブデバイス８１に供給されるデータ記憶命令の送信通知には、３バイト以上必要である場合の処理について説明する。
【００９９】
ステップＳ３１において、マスタデバイス７１のマスタＣＰＵ１０２は、WriteWordプロトコル、または、BlockWriteプロトコルを用いて、データ記憶命令の送信通知、すなわち、次に、BlockWriteプロトコルでコマンドが送信されることを予告する情報を、SMBusI/F１０１およびSMBus６１を介して、スレーブデバイス８１に供給する。
【０１００】
ステップＳ３２において、スレーブデバイス８１のスレーブＣＰＵ１１２は、SMBusI/F１１１を介して、WriteWordプロトコル、または、BlockWriteプロトコルのデータ記憶命令の送信通知を受信する。
【０１０１】
ステップＳ３３において、スレーブデバイス８１のスレーブＣＰＵ１１２は、WriteWordプロトコル、または、BlockWriteプロトコルのコマンドやその引数などを解釈する。
【０１０２】
ステップＳ３４において、スレーブデバイス８１のスレーブＣＰＵ１１２は、コマンドやその引数などに基づいて、データの記憶準備を実行する。例えば、マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合、スレーブデバイス８１のスレーブＣＰＵ（コントローラ）１１２は、ＤＭＡコントローラ１６２を設定したり、バッファメモリ１６３に、新たに書き込まれるデータの分のバッファリング領域を確保する処理を実行するとともに、次に、マスタデバイス７１から供給されるBlockWriteプロトコルによる通信要求を待つ。
【０１０３】
ステップＳ３５において、マスタデバイス７１のマスタＣＰＵ１０２は、BlockWriteプロトコルを用いて、データおよびデータ記憶命令を、SMBusI/F１０１およびSMBus６１を介して、スレーブデバイス８１に供給する。
【０１０４】
ステップＳ３６において、スレーブデバイス８１のスレーブＣＰＵ１１２は、SMBusI/F１１１を介して、BlockWriteプロトコルのデータおよびデータ記憶命令を受信する。
【０１０５】
ステップＳ３７において、スレーブデバイス８１のスレーブＣＰＵ１１２は、BlockWriteプロトコルのコマンドやその引数などを解釈する。
【０１０６】
ステップＳ３８において、スレーブデバイス８１のスレーブＣＰＵ１１２は、コマンドやその引数などに基づいて、データの記憶処理を実行し、処理が終了される。例えば、マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合、スレーブデバイス８１のＤＭＡコントローラ１６２は、ストレージI/F１５１を介して、マスタメモリ１４１から、記憶が指令された（書き込まれる）データを読み込み、バッファメモリ１６３に書き込む。そして、スレーブCPU（コントローラ）１１２は、ストレージメモリコントローラ１６５を制御し、バッファメモリ１６３からストレージメモリ１６６にデータを供給して記憶させる。
【０１０７】
このような処理により、マスタデバイス７１はWriteWordプロトコル、または、BlockWriteプロトコルにより、次のBlockWriteプロトコルにより所定のデータを書き込むことを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１に供給し、一旦SMBus通信を終了させる。そして、その間に、スレーブデバイス８１は、受信したコマンドおよびデータをデコードし、データの書き込みの準備を行う。その後、マスタデバイス７１は、BlockWriteプロトコルにより、スレーブデバイス８１にデータを供給して記憶させることができる。これにより、図２または図３を用いて説明した従来における場合とは異なり、SMBus通信中に、コマンドおよびデータをデコードする必要はない。このため、SMBus通信中に、コマンドのデコードが必要だということを割り込みして通知する必要や、コマンド用のデコーダを別途用意する必要がなく、スレーブデバイス８１のハードウェアを簡素化することができる。
【０１０８】
また、WriteWordプロトコル、または、BlockWriteプロトコルを用いて、次の所定のプロトコルの送信を予告するようにした場合、WriteByteプロトコルやSendByteプロトコルを用いた場合よりも多くの情報を先行してスレーブデバイス８１に通知することができるので、通信の自由度が高くなる。
【０１０９】
また、図１０および図１１においては、２番目に供給されるプロトコルとしてBlockWriteが用いられる場合について説明したが、書き込まれるデータの情報量などに基づいて、例えば、WriteWordプロトコル、または、WriteByteプロトコルなど、異なるプロトコルを用いてもよいことは言うまでもない。
【０１１０】
次に、図１２のフローチャートを参照して、マスタデバイス７１とスレーブデバイス８１とが実行する第３の処理例について説明する。ここでは、スレーブデバイス８１に記憶されているデータがマスタデバイス７１から読み出される処理が実行される場合であって、最初にマスタデバイス７１からスレーブデバイス８１に供給されるデータ読み出し命令の送信通知には、３バイト以上必要である場合の処理について説明する。
【０１１１】
ステップＳ６１において、マスタデバイス７１のマスタＣＰＵ１０２は、WriteWordプロトコル、または、BlockWriteプロトコルを用いて、データ読み出し命令の送信通知を、SMBusI/F１０１およびSMBus６１を介して、スレーブデバイス８１に供給する。
【０１１２】
ステップＳ６２において、スレーブデバイス８１のスレーブＣＰＵ１１２は、SMBusI/F１１１を介して、WriteWordプロトコル、または、BlockWriteプロトコルのデータ読み出し命令の送信通知を受信する。
【０１１３】
ステップＳ６３において、スレーブデバイス８１のスレーブＣＰＵ１１２は、WriteWordプロトコル、または、BlockWriteプロトコルのコマンドやその引数などを解釈する。
【０１１４】
ステップＳ６４において、スレーブデバイス８１のスレーブＣＰＵ１１２は、コマンドやその引数などに基づいて、データの読み出し準備を実行する。例えば、マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合、スレーブデバイス８１のスレーブＣＰＵ（コントローラ）１１２は、ＤＭＡコントローラ１６２を設定したり、マスタデバイス７１から読み出されるデータを、ストレージメモリコントローラ１６５の処理によりバッファメモリ１６３に書き出しておくとともに、次に、マスタデバイス７１から供給されるBlockReadプロトコルによる通信要求を待つ。
【０１１５】
ステップＳ６５において、マスタデバイス７１のマスタＣＰＵ１０２は、BlockReadプロトコルを用いて、データ読み出し命令を、SMBusI/F１０１およびSMBus６１を介して、スレーブデバイス８１に供給する。
【０１１６】
ステップＳ６６において、スレーブデバイス８１のスレーブＣＰＵ１１２は、SMBusI/F１１１を介して、BlockReadプロトコルのデータ読み出し命令を受信する。
【０１１７】
ステップＳ６７において、スレーブデバイス８１のスレーブＣＰＵ１１２は、BlockReadプロトコルのコマンドやその引数などを解釈する。
【０１１８】
ステップＳ６８において、スレーブデバイス８１のスレーブＣＰＵ１１２は、コマンドやその引数などに基づいて、データの読み出し処理を実行し、処理が終了される。例えば、マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合、スレーブデバイス８１のＤＭＡコントローラ１６２は、ストレージＩ/Ｆ１５１を介して、読み出しが指令されたデータをバッファメモリ１６３からマスタメモリ１４１に供給する。
【０１１９】
このような処理により、マスタデバイス７１はWriteWordプロトコル、または、BlockWriteプロトコルにより、次のBlockReadプロトコルにより所定のデータを読み出すことを通知する(換言すれば、そのための準備を指令する)コマンドをスレーブデバイス８１に供給し、一旦SMBus通信を終了させる。そして、その間に、スレーブデバイス８１は、受信したコマンドおよびデータをデコードし、データの読み出しの準備を行う。その後、マスタデバイス７１は、BlockReadプロトコルにより、スレーブデバイス８１から所定のデータを読み出すことができる。これにより、図２または図３を用いて説明した従来における場合とは異なり、SMBus通信中に、コマンドおよびデータをデコードする必要はない。このため、SMBus通信中に、コマンドのデコードが必要だということを割り込みして通知する必要や、コマンド用のデコーダを別途用意する必要がなく、スレーブデバイス８１のハードウェアを簡素化することができる。
【０１２０】
また、図１２においては、２番目に供給されるプロトコルとしてBlockReadが用いられる場合について説明したが、書き込まれるデータの情報量などに基づいて、例えば、ReadWordプロトコル、または、ReadByteプロトコルなど、異なるプロトコルを用いてもよいことは言うまでもない。
【０１２１】
なお、図１０を用いて説明したWriteByteプロトコル、または、SendByteプロトコルと、図１２を用いて説明したBlockReadプロトコルとを組み合わせて、データの読み出し処理を実行することも可能であることはいうまでもない。
【０１２２】
このように、２つのSMBusプロトコルを連続して用いて、最初のプロトコルで、次のプロトコルの予告通知をすることにより、コマンドを受信する装置において、SMBus通信中に割り込みを行ったり、コマンドを個別にデコードする必要がなくなる。これにより、コマンド用のデコーダを別途用意する必要がなくなる。すなわち、スレーブデバイスのハードウェアを簡素化しつつ、SMBusプロトコルを用いて、マスタデバイスとスレーブデバイスとの間でコマンドを授受することが出来る。
【０１２３】
このような構成を有することにより、例えば、マスタデバイス７１およびスレーブデバイス８１が図５を用いて説明した構成を有している場合、マスタデバイス７１およびスレーブデバイス８１の間で、ストレージＩ/Ｆ１５１を介して授受されるデータ以外に、SMBus６１を用いて情報やコマンドを授受することができる。これにより、例えば、スレーブデバイス８１のバッテリ残量、ストレージメモリ１６６に記録されているデータの名称や記録時間などのメタデータ、または、ストレージメモリ１６６に記録されているデータのデータ量もしくはストレージメモリ１６６の残量など、即時応答性を特に必要としない（低速なインタフェースで授受しても問題がない）情報や、データ量の少ない情報などを、例えば起動に複雑な処理が必要なPCIExpressなどのインタフェースを用いることなく、容易にマスタデバイス７１に通知することができる。
【０１２４】
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０１２５】
この記録媒体は、図５に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disk-Read Only Memory），DVD（Digital Versatile Disk）を含む）、光磁気ディスク（ＭＤ(Mini-Disk)（商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア１７１などにより構成される。
【０１２６】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１２７】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１２８】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１２９】
【図１】BlockReadプロトコルを示す図である。
【図２】従来のスレーブデバイスの構成例を示すブロック図である。
【図３】SMBus通信路を用いてシリアル通信を行うシステムの構成例について説明するための図である。
【図４】図３のマスタデバイスとスレーブデバイスの最も簡単な構成例を示すブロック図である。
【図５】図３のマスタデバイスとスレーブデバイスの具体的な構成例を示すブロック図である。
【図６】WriteByteプロトコルとBlockReadプロトコルとを組み合わせた場合について説明するための図である。
【図７】SendByteプロトコルとBlockReadプロトコルとを組み合わせた場合について説明するための図である。
【図８】WriteWordプロトコルとBlockReadプロトコルとを組み合わせた場合について説明するための図である。
【図９】BlockWriteプロトコルとBlockReadプロトコルとを組み合わせた場合について説明するための図である。
【図１０】マスタデバイスとスレーブデバイスの処理について説明するためのフローチャートである。
【図１１】マスタデバイスとスレーブデバイスの処理について説明するためのフローチャートである。
【図１２】マスタデバイスとスレーブデバイスの処理について説明するためのフローチャートである。
【符号の説明】
【０１３０】
７１  マスタデバイス，  ８１  スレーブデバイス，  １０１  SMBusI/F，  １０２  マスタCPU，  １１１  SMBusI/F，  １１２  スレーブCPU，  １４１  マスタメモリ，  １６２  DMAコントローラ，  １６３  バッファメモリ，  １６６  ストレージメモリ
【図１】
2008009804.tif 000003
【図２】
2008009804.tif 000004
【図３】
2008009804.tif 000005
【図４】
2008009804.tif 000006
【図５】
2008009804.tif 000007
【図６】
2008009804.tif 000008
【図７】
2008009804.tif 000009
【図８】
2008009804.tif 000010
【図９】
2008009804.tif 000011
【図１０】
2008009804.tif 000012
【図１１】
2008009804.tif 000013
【図１２】
2008009804.tif 000014