JP3791742B2 - Pciバス制御システム - Google Patents

Pciバス制御システム Download PDF

Info

Publication number
JP3791742B2
JP3791742B2 JP14927999A JP14927999A JP3791742B2 JP 3791742 B2 JP3791742 B2 JP 3791742B2 JP 14927999 A JP14927999 A JP 14927999A JP 14927999 A JP14927999 A JP 14927999A JP 3791742 B2 JP3791742 B2 JP 3791742B2
Authority
JP
Japan
Prior art keywords
pci bus
function
pci
data
master
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 - Fee Related
Application number
JP14927999A
Other languages
English (en)
Other versions
JP2000339267A (ja
Inventor
日出夫 須藤
Original Assignee
株式会社沖データ
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 株式会社沖データ filed Critical 株式会社沖データ
Priority to JP14927999A priority Critical patent/JP3791742B2/ja
Priority to US09/579,173 priority patent/US6678770B1/en
Publication of JP2000339267A publication Critical patent/JP2000339267A/ja
Application granted granted Critical
Publication of JP3791742B2 publication Critical patent/JP3791742B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control

Description

【0001】
【発明の属する技術分野】
本発明は、PCI(Peripheral Component Interconnect)バス制御を行うPCIバス制御システムに関するものである。
【0002】
【従来の技術】
従来、パーソナルコンピュータ(PC)等で採用しているPCIバス制御システムでは、デバイスは全てPCIバス制御をしないノン−インテリジェントデバイスで構成されている。よって、PCIバスマスタ(PC側)が全てのPCI通信の制御を行っていた。
【0003】
【発明が解決しようとする課題】
しかしながら、上記従来のように、PCIバスマスタ側が全てのPCI通信の制御を行う場合、次のような問題点があった。即ち、PCIバスマスタが全てのデバイスに対してアクセスする必要があり、このため、PCIバスマスタが全てのデバイスに対してアクセスするためのドライバを持つ必要があった。
【0004】
【課題を解決するための手段】
本発明は、前述の課題を解決するため次の構成を採用する。
〈構成1〉
PCIバスマスタと、単独ではPCIのバストランザクションを開始する機能を持たない複数のノン−インテリジェントデバイスと、PCIバスを経由した通信を自ら行う機能を持つインテリジェントデバイスとが接続されるPCIバス制御システムであって、前記PCIバスマスタは、所定の前記ノン−インテリジェントデバイスの仮オーナを決定するために、前記インテリジェントデバイスに仮オーナ要求を示すコマンドを送信する機能と、サービス情報送信要求を仮オーナの承諾した前記インテリジェントデバイスに送信する機能とを備え、前記インテリジェントデバイスは、前記PCIバスマスタからの仮オーナ要求を示すコマンドに対して承諾及び拒否のいずれかの受信応答を示すコマンドを前記PCIバスマスタに送信する機能と、前記PCIバスマスタから受信した前記サービス情報送信要求に対し前記ノン−インテリジェントデバイスから対応するサービス情報を収集し、該サービス情報を前記PCIバスマスタに送信する機能と、を備えることを特徴とするPCIバス制御システム。
【0005】
<構成2>
構成1に記載のPCIバス制御システムにおいて、前記インテリジェントデバイスおよび前記ノン−インテリジェントデバイスは、前記PCIバスマスタが各デバイスを初期化する際に参照するコンフィグレーションレジスタを備え、該レジスタの予め決められた先頭の数ビットを、インテリジェントデバイスかノン−インテリジェントデバイスかを識別するための値とすることを特徴とするPCIバス制御システム。
【0006】
<構成3>
構成1または2に記載のPCIバス制御システムにおいて、記インテリジェントデバイスおよび前記ノン−インテリジェントデバイスのメモリに、PCIデバイスドライバの初期化時に使用する通信用作業領域を設け、かつ、当該通信用作業領域をメモリ領域の先頭に設けたことを特徴とするPCIバス制御システム。
【0007】
<構成4>
構成2に記載のPCIバス制御システムにおいて、前記先頭の数ビットは、各機能にマッピングする領域の先頭に設けた、PCIデバイスドライバの初期化時に使用する通信用作業領域を有するか否かを示す値であることを特徴とするPCIバス制御システム。
【0008】
〈構成5〉
構成1に記載のPCIバス制御システムにおいて、送信側デバイスから受信側デバイスへの送信データの先頭に、次の送信データのPCIヘッダの先頭アドレスを示すネクストポインタと、当該送信データにおけるデータエリアのアドレスを示すデータエリアポインタとを示すPCIヘッダを備え、かつ、前記ネクストポインタの最下位ビットを、送信データが連続するか否かを示すフラグとしたことを特徴とするPCIバス制御システム。
【0009】
<構成6>
構成1または2に記載のPCIバス制御システムにおいて、前記PCIバスマスタおよび前記インテリジェントデバイスは、全システム内に存在する機能と一意に対応づけられ、各機能毎に設けられたデバイスプロファイルを有し、各デバイスプロファイルは、送信先のメールボックスのアドレスを示すメールボックスポインタと、送信先の処理に割り込みを発生させる割り込み要求レジスタのアドレスを示す割り込み要求レジスタポインタと、自分宛のコマンドとその引数を格納するメールボックスとを備え、機能XのデバイスプロファイルYのメールボックスポインタは、機能YのデバイスプロファイルXのメールボックスのアドレスを示し、各機能のデバイスプロファイルXの割り込み要求レジスタポインタは、機能Xの割り込み要求レジスタのアドレスを示すよう構成されていることを特徴とするPCIバス制御システム。
【0010】
<構成7>
構成6に記載のPCIバス制御システムにおいて、前記PCIバスマスタは、前記インテリジェントデバイスの機能に対して、配布するデバイスプロファイルのサイズと個数とを通知することによりコピーする先頭アドレスを入手するコピー先アドレス問い合わせ処理部と、コピーする先頭アドレスに基づき、配布するデバイスプロファイルのメールボックスポインタを求めるメールボックスポインタ計算処理部とを備えたことを特徴とするPCIバス制御システム。
【0011】
<構成8>
構成6または7に記載のPCIバス制御システムにおいて、割り込み要求レジスタの各ビットは、それぞれ、各機能と一意に対応づけられ、かつ、各機能が他の機能に対して割り込みを要求する場合は、相手自身のビットに書き込みを行うよう構成されていることを特徴とするPCIバス制御システム。
【0012】
〈構成9〉
構成1に記載のPCIバス制御システムにおいて、送信側デバイスから受信側デバイスへの送信データの先頭に、次の送信データのPCIヘッダの先頭アドレスを示すネクストポインタと、送信データにおけるデータエリアのアドレスを示すデータエリアポインタと、送信データのデータサイズとを示すPCIヘッダを備えたことを特徴とするPCIバス制御システム。
【0013】
<構成10>
構成1、5または9のいずれかに記載のPCIバス制御システムにおいて、前記PCIバスマスタおよび前記インテリジェントデバイスは、階層処理構造における自層の処理を行うヘッダ情報中に、ヘッダのサイズを示す情報を含むと共に、ヘッダ情報の総データ量が特定の値の倍数となるように可変長のデータであるパディングを付加するようにしたことを特徴とするPCIバス制御システム。
【0014】
<構成11>
構成1、2、3、6、7、10のいずれかに記載のPCIバス制御システムにおいて、前記インテリジェントデバイスは、予め決められた初期化時暫定マスタよりデバイスマスタ募集があった場合、自身がデバイスマスタになれる条件を備えていた場合はデバイスマスタに応募し、デバイスマスタが自身に決定した場合は他のデバイスの初期化処理を行うよう構成されていることを特徴とするPCIバス制御システム。
【0015】
【発明の実施の形態】
以下、本発明の実施の形態を具体例を用いて詳細に説明する。
《具体例1》
具体例1は、PCIバス上のPCIバスを経由した通信を自ら行う機能(Initiator機能)を持たないデバイス(ノン−インテリジェントデバイス)をオーナとして管理するインテリジェントデバイスを備えるようにしたものである。
【0016】
〈構成〉
図1は本発明のPCIバス制御システムの具体例1を示す構成図である。
図のシステムは、PCIバス(PCI BUS)1上に接続されたプリンタ(Printer)2、インテリジェントデバイス(PCI Device (Intelligent)またはMFP(Intelligent))3、ノン−インテリジェントデバイス(PCI Device (Non Intelligent))4からなる。
【0017】
プリンタ2は、PCIバスマスタ(PCI BUS Master)としての機能を有するデバイスである。インテリジェントデバイス3は、自身にCPUを持ち、PCIバス1を経由した通信を自ら行う機能(Initiator機能)を持っているデバイスである。ノン−インテリジェントデバイス4は、PCIバス1を経由した通信を行う機能を持たないデバイスである。
【0018】
即ち、インテリジェントデバイス3は、ノン−インテリジェントデバイス4をオーナとして管理するデバイスであり、オーナとして管理するノン−インテリジェントデバイス4のデバイスドライバを備え、かつ、そのノン−インテリジェントデバイス4へアクセスする機能と、他のデバイスからそのノン−インテリジェントデバイス4へのアクセス要求を取りまとめる(中継する)機能とを有している。
【0019】
図2は、本発明のPCIバス制御システムのソフトウェア階層構造を示す説明図である。
図示のように、PCIバス1を経由する二つのデバイス間通信は、PCIデバイスドライバ(PCI Device Driver)の上位層としてゲート(Gate)層を、ゲート層の上位層としてIEEE1284.4(プロトコル層)とサービスマネージャ(Service Maneger)を使用する。ここで、PCIデバイスドライバは、PCIバスのデバイスドライバ、ゲート層は、それぞれのデバイスを識別するPCIバスに接続されるボードレベルの制御を行う部分、サービスマネージャは、例えば、印刷といったサービスを制御する部分である。
【0020】
動作的には、送信元PCIデバイスドライバが作成する送信データは送信先PCIデバイスドライバが処理する。送信元ゲートが作成する送信データは送信先ゲートが処理する。送信元IEEE1284.4が作成する送信データは送信先IEEE1284.4が処理する。送信元IEEE1284.4の上位層が作成する送信データは送信先IEEE1284.4の上位層が処理する。以上のような階層構造により構成される。
【0021】
〈動作〉
インテリジェントデバイス3が、先ず自身を初期化し、ノン−インテリジェントデバイス4は、インテリジェントデバイス(オーナ)3による初期化待ちとなる。
【0022】
図3は、ノン−インテリジェントデバイス4の初期化の説明図である。
具体例のPCIの初期化処理(拡張PCI初期化処理、拡張Gate初期化処理)では、ノン−インテリジェントデバイス4に対してアクセス可能な仮のオーナを決定するプロセスを実行する。また、サービスマネージャの初期化では、仮サービスの認識、オーナの募集を行う。
【0023】
デバイスマスタ(PCI BUS Master:PCIバスマスタ)は、仮オーナ決定処理を行う。よって、本仕様ではPCIバスマスタ上に存在する各ノン−インテリジェントデバイス4は、仮オーナになれる機能をもったインテリジェントデバイス3が必要である。仮オーナの役割は、オーナとなっているノン−インテリジェントデバイス4の関連情報に対して、PCIバスマスタからの問い合わせに回答することである。例えば、後述するサービスマネージャの初期化で必要となる情報の収集が行われるが、その際に、ノン−インテリジェントデバイス4は、その要求に対応できないため、仮オーナとなったインテリジェントデバイス3は代わりにそのデバイスの情報を収集し送信する。
【0024】
仮オーナを決定するため、PCIバスマスタは先ず一つのノン−インテリジェントデバイス4に対する仮オーナ要求を、存在する全インテリジェントデバイス3に順番に送信する。
【0025】
図4は、仮オーナ決定処理の説明図である。
図示のように、PCIバスマスタは、ノン−インテリジェントデバイス4が複数存在する場合には、図4に示すような処理を、そのノン−インテリジェントデバイス4の数分繰り返す。例えばノン−インテリジェントデバイス4が5個ある場合は、図4に示す処理を5回繰り返す。尚、PCIバスマスタは、ノン−インテリジェントデバイス4が存在しない場合には、仮オーナ要求を送信しない。
【0026】
ここで、各デバイス(インテリジェントデバイス3)は、PCIバスマスタから送信される「仮オーナ要求」を示すコマンドを受信すると、以下のいずれかの応答をしなければならない。
(1)仮オーナ受諾:自デバイスが「仮オーナ」機能を有している場合
(2)仮オーナ拒否:自デバイスが「仮オーナ」機能を有していない場合
【0027】
図5は、仮オーナ決定シーケンスの説明図である。
仮オーナ決定シーケンスにおいて、「仮オーナ決定」を示すコマンドの送信は仮オーナ決定シーケンスの最後に行われる。各仮オーナ決定シーケンスはPCIバス1上に存在するノン−インテリジェントデバイス4の数に対応している。よって、PCIバスマスタはPCIバス1上に存在するノン−インテリジェントデバイス4の数と同数の仮オーナ決定コマンドを発行する。「仮オーナ決定」を示すコマンドを受信したインテリジェントデバイス3は「受信応答」を示すコマンドを返信する。
【0028】
また、いずれかの仮オーナとなったインテリジェントデバイス3であっても、PCIバスマスタからの次の「仮オーナ要求」を示すコマンドに対して「仮オーナ受諾」を示すコマンドを返すことも可能とする。これにより、複数のノン−インテリジェントデバイス4の仮オーナになることが可能である。
以上が、図3における拡張PCI初期化処理および拡張Gate初期化処理の内容である。
【0029】
次に、図3におけるサービスマネージャ(Service Manager)初期化処理について説明する。
サービスマネージャの初期化はデバイスマスタとなったデバイスを中心に行う。一般にデバイスマスタはPCIバスマスタとなっているデバイスが担当し、PCIデバイスドライバおよびゲートの初期化以降の初期化を受け持つ。
【0030】
図6は、サービスマネージャの初期化時における仮サービスの認識処理の説明図である。
デバイスマスタの他システムのディスカバリ処理として、各システムが持つサービスの情報収集が行われる。この時に、仮オーナは、デバイスマスタから「Pre-Service Profile送信要求」コマンドを受信すると、仮オーナとなっているノン−インテリジェントデバイス4のサービス情報もまとめてデバイスマスタに連絡しなければならない。仮オーナは、仮オーナとなっているノン−インテリジェントデバイス4のサービス内容については判断できないため、仮オーナがデバイスマスタに通知する(「Pre-Service Profile送信」コマンドを送信する)サービスは仮サービスと定義する。
【0031】
デバイスマスタは、全システム中に仮サービスが存在することを認識すると、その仮サービスを正式なサービスにするために、その仮サービスに対するオーナを唯一割り当てる処理を行う。
【0032】
図7は、サービス整合処理の説明図である。
デバイスマスタは、全ノン−インテリジェントデバイス4に対しオーナの割り当てが終了(成功・不成功不問)すると、オーナからのサービスの更新を待つ。オーナからサービスの更新があった場合は、再びサービスプロファイル(Service Profile)を更新してサービスの整合を行う。尚、サービスプロファイルとは、どのデバイスがどのようなサービスを提供するかを示す情報である。
【0033】
オーナは、その仮サービスに対する全権利を持っているので自由な対応が可能である。以下に対応例を示す。
【0034】
対応例(1)
仮サービスを独占使用する場合は、「サービスの削除」を行い、他の処理からアクセスできないようにする。そのサービス専用のデバイスドライバでアクセスする必要がある。
【0035】
対応例(2)
共有サービスの配布役をする場合は、サービスプロファイルに新サービスとして「サービスの変更」を行い、他の処理からの要求に対して仮サービスの使用権を配布する。
【0036】
対応例(3)
共有サービスのアクセスマスタを行う場合は、サービスプロファイルに新サービスとして「サービスの変更」を行い、他の処理からの要求に対して新サービスを提供する。
【0037】
〈効果〉
以上のように具体例1によれば、PCIバスを介して通信する機能を持たないノン−インテリジェントデバイスのオーナとなるインテリジェントデバイスを設けたので、以下のような効果が期待できる。
【0038】
(1)PCIバスマスタが、必ず、接続されるデバイス全てにアクセスする機能(デバイスドライバ)を持つ必要がなくなる。例えば、PCIバス経由のSCSIボードが接続されていた場合、本具体例の仕様により、PCIバスマスタはSCSIドライバを装備することなくSCSIボードの提供するサービスを使用することができる。同一のPCIバスに接続されているPCIバスマスタ以外のデバイスについても同様の効果が期待できる。
【0039】
(2)本システムでは、インテリジェントデバイスの接続をサポートしているため、PCIバスマスタのPCI通信における負荷を減少させることができる。
【0040】
《具体例2》
具体例2は、具体例1の構成において、PCIバス上に接続されているデバイスが拡張PCI仕様を有しているか、また、インテリジェントデバイス/ノン−インテリジェントデバイスであるかを識別するようにしたものである。尚、拡張PCI仕様とは、PCIデバイスドライバの初期化時に使用する通信用作業領域を、各機能にマッピングする領域の先頭に設けている仕様を意味するが、これについては、具体例3で説明する。
【0041】
〈構成〉
図8は、具体例2におけるコンフィグレーションレジスタと拡張PCI初期化処理の説明図である。
コンフィグレーションレジスタ(Configuration Register)のフォーマットは、図示のように、その先頭にはデバイスID(Device ID)を格納するよう構成されている。本具体例では、このデバイスIDの先頭4ビットを、そのコンフィグレーションレジスタを有するデバイスが拡張PCI仕様であるか、インテリジェントデバイス/ノン−インテリジェントデバイスかを識別するための値としている。
【0042】
図9は、本具体例で設定するデバイスIDの説明図である。
本具体例では、PCIコンフィグレーション空間に設けるコンフィグレーションレジスタのデバイスIDに、図9に示す拡張PCI仕様を設ける。即ち、上位4ビットが16進数のA(1010)である場合は、拡張PCI仕様のインテリジェントデバイスであり、16進数の5(0101)である場合は、拡張PCI仕様のノン−インテリジェントデバイスである。また、それ以外の値の場合は、拡張PCI仕様ではないデバイスであることを示している。尚、図中、×××は、Don't Careを示している。
【0043】
また、図中のDevice IDやVender ID等、コンフィグレーションレジスタのフォーマット自体は従来と同様であるため、ここでの各用語の説明は省略する。
【0044】
更に、本具体例では、PCIバスマスタが、標準のPCI初期化処理に加えて、拡張PCI仕様であるか、インテリジェントデバイス/ノン−インテリジェントデバイスであるかの識別処理を行うよう構成されている。
【0045】
先ず、標準のPCI初期化処理を行うためのPCIバスマスタの処理構造について説明する。
標準のPCI初期化処理は、図8に示すように、大きく分けて、デバイスボード発見処理81、発見したデバイスの有効化処理82、メモリ・I/O空間割当て処理83、割り込み設定処理84の四つから構成されている。
【0046】
本具体例では、PCIバスマスタが行う標準のPCI初期化処理に加え、以下の処理を追加する。
デバイスボード発見処理で、各デバイスのコンフィグレーションレジスタのデバイスIDと、ベンダID(Vender ID)を確認する処理があるが、その部分に拡張PCI仕様がサポートされているかを判断する処理85と、確認したデバイスがインテリジェントデバイス3であるか、ノン−インテリジェントデバイス4であるかを判断する処理86を追加する。
【0047】
即ち、32ビットからなるデバイスIDのうち、先頭4ビットを用いて、拡張PCI仕様サポート判断処理85とインテリジェントデバイス/ノン−インテリジェントデバイス識別処理86を行う。
【0048】
〈動作〉
PCIコンフィグレーション空間に設けるコンフィグレーションレジスタのデバイスIDに、図9に示す拡張PCI仕様の識別データを格納する。
【0049】
PCIバスマスタは、各デバイスのコンフィグレーションレジスタのデバイスIDを読み出し、その上位4ビットにより、読み出しているコンフィグレーションレジスタが対応する機能がインテリジェントデバイス3であるかノン−インテリジェントデバイス4であるかを識別する。
【0050】
図10は、具体例2の動作フローチャートである。
先ず、PCIバスマスタは、PCIコンフィグレーションレジスタのデバイスIDを読込み(ステップS101)、その先頭4ビットが16進数のA(1010)であるか比較する(ステップS102)。
【0051】
ステップS102において、16進数のA(1010)であった場合は、以降、そのデバイスをインテリジェントデバイスとして扱う(ステップS103)。一方、ステップS102において、16進数のA(1010)でなかった場合は、16進数の5(0101)であるかを比較する(ステップS104)。
【0052】
ステップS104において、16進数の5(0101)であった場合は、以降、そのデバイスをノン−インテリジェントデバイスとして扱う(ステップS105)。また、ステップS102において16進数のA(1010)でなく、かつ、ステップS104において16進数の5(0101)でもない場合、拡張PCI仕様をサポートしていないデバイスであるとし、以降、システムからアクセスできないよう切り離し処理を行う(ステップS106)。
【0053】
〈効果〉
以上説明したように、具体例2によれば、各デバイスを初期化する際に参照するコンフィグレーションレジスタの予め決められた先頭ビット数を、拡張PCI仕様であるか、インテリジェントデバイスかノン−インテリジェントデバイスかを識別するための値としたので、以下のような効果が期待できる。
【0054】
(1)PCIバスに接続されるデバイスがインテリジェントデバイスかノン−インテリジェントデバイスかが固定されていない場合でも容易に判別することができる。
(2)コマンド等のレスポンスの有無によって、インテリジェントデバイス/ノン−インテリジェントデバイスを識別する場合に比べて判断に要する時間が短い。
(3)標準のPCI初期化処理と同一の処理において、拡張PCI仕様のデバイスであるかの判定が可能である。
【0055】
《具体例3》
具体例3は、PCIデバイスドライバの初期化時に使用する通信用作業領域を、デバイス側に設け、かつ、各機能にマッピングする領域の先頭に設けたものである。
【0056】
〈構成〉
図11は、具体例3の説明図である。
コミュニケーションエリア(Communication Area:通信用作業領域)は、拡張PCIの初期化時にPCIバスマスタと各デバイスの機能間で通信するために使用する領域である。このコミュニケーションエリアは、PCIバスマスタと各デバイスの機能に対し各々一つ用意する。
【0057】
ここで、本具体例では、PCIバスマスタ用には、PCI空間の(00000000H)番地に固定的に割り付ける。一方、各デバイスの機能毎には、各機能をマッピングするPCI空間の先頭アドレスに割り当てる。
【0058】
即ち、コミュニケーションエリアは、コミュニケーションエリアを持つPCI機能に対して割り込みを発生させる割り込み要求レジスタ(PCIInterrupt Register(図中、PIRで示す))と、コミュニケーションエリアを持つPCI機能に対しての要求であるコマンドを格納するエリア1(Area1)と、エリア1に格納するコマンドの引数を格納するエリア2(Area2)、エリア3(Area3)からなる。
【0059】
〈動作〉
図12は、具体例3のPCIバスマスタからデバイスへのコマンド送信動作の説明図である。
PCIバスマスタは、送信先デバイスのコミュニケーションエリアのエリア1に、拡張PCIコマンドを、エリア2、エリア3にコマンドの引数をそれぞれ格納する(図中、▲1▼で示す)。
【0060】
図13および図14は、コマンドの説明図である。
図示のように、PCIバスマスタからの、受信要求、受信応答、受信否定応答といったコマンドに対する設定値が決められている。尚、“H→S”がPCIバスマスタから各デバイスへの送信可能なデータ、“S→H”が各デバイスからPCIバスマスタへの送信可能なデータである。また、ノン−インテリジェントデバイス4に対して使用するコマンドは、リセット要求とファクトリーリセット要求のみとなる。
【0061】
図12に戻り、PCIバスマスタは、送信先デバイスのコミュニケーションエリアのPIRに(OOOOOOO1H)を書き込む(図中▲2▼で示す)。これにより、送信先デバイスに対して割り込みが発生する(図中、▲3▼で示す)。送信先デバイスは、割り込み中でコミュニケーションエリアのエリア1から拡張PCIコマンドを、エリア2、エリア3からコマンドに対応する引数を読み出す(図中▲4▼)。尚、PCIバスマスタは、各コマンドの送信に対するレスポンスを2秒間でタイムアウトとする。タイムアウトとなった場合は原則として再送は行わない。このため、コマンドを受けたデバイスは2秒以内に応答する必要がある。
【0062】
図15は、各インテリジェントデバイスがPCIバスマスタに拡張PCIコマンドを送信する場合の説明図である。
送信元デバイスは、送信元デバイスのコミュニケーションエリアのエリア1に拡張PCIコマンドを、エリア2、エリア3にコマンドの引数をそれぞれ格納する(図中、▲1▼)。この場合のコマンドは、図13、図14中の“S→H”に示した通りである。
【0063】
送信元デバイスは、送信元デバイスのコミュニケーションエリアのPIRに(OOOOOOO0H)以外の値を書き込む(図中、▲2▼)。図示例では(00000001H)を書き込んでいる。これにより、PCIバスマスタでは割り込みが発生する(図中、▲3▼)。PCIバスマスタは、割り込み中でコミュニケーションエリアのエリア1から拡張PCIコマンドを、エリア2、エリア3からコマンドに対応する引数を読み出す(図中、▲4▼)。
【0064】
各デバイスは各コマンドの送信に対するレスポンスを2秒間をタイムアウトとする。タイムアウトとなった場合は原則として再送は行わない。コマンドの受信を受けたPCIバスマスタは、2秒以内に応答する必要がある。
【0065】
〈効果〉
以上説明したように、具体例3によれば、PCIデバイスドライバの初期化時に使用する通信用作業領域をデバイス側に設け、かつ、各機能にマッピングする領域の先頭に設けるようにしたので、以下のような効果が期待できる。
【0066】
(1)初期化通信のために使用する領域が、共有メモリの先頭に集中しているため共有メモリを使用しないデバイス(I/O空間のみ使用するデバイス)が有っても最小限のメモリ領域を確保することで使用可能となる。
【0067】
(2)初期化通信のために使用する領域が、共有メモリの先頭に集中しているため、各デバイスのメモリ空間の初期化がし易くなる。即ち、先頭領域を無条件に通信用作業領域として認識すればよいため、初期化処理においてPCIバスマスタ側の、各デバイスとやり取りするための通信用作業領域を決定する処理を簡素化することができる。
【0068】
(3)コマンド書き込み領域エリア1〜エリア3が各デバイス側にあるため、PCIバスマスタは各デバイスを独立して初期化することができる。即ち、PCIバスマスタ側は、各デバイスの応答を待たずに初期化処理を進めることができる。
【0069】
《具体例4》
具体例4は、送信データのPCIヘッダ中に、次の送信データが連続するか否かを示す連続フラグ(Continue Flag)を設定するようにしたものである。
【0070】
〈構成〉
図16は、具体例4の説明図である。
各デバイスには、送信側データ処理部の構成として、送信データ受付部161、連続フラグ設定部(Continue Flag設定部)162、コマンド送信処理部163を、受信側データ処理部の構成として、コマンド判断処理部164、連続フラグ判断処理部(Continue Flag判断処理部)165、データコピー処理部166を備えている。
【0071】
送信データ受付部161は、上位層から送信されるデータを受け取るための機能部である。連続フラグ設定部162は、本具体例で新規に追加した機能部であり、後述する連続フラグを設定する機能を有している。
【0072】
図17は、本具体例のPCIヘッダの構成図である。
PCIヘッダ(PCI Header)は、PCIヘッダ同士をアドレスでつなぎ、リンク構造で管理する場合に使用するネクストポインタ(Next Pointer)と、送信するデータの先頭アドレスを示すデータエリアポインタ(Data Area Pointer)と、送信するデータのサイズを示すデータサイズ(Data Size)の各領域から構成される。そして、本具体例では、ネクストポインタの下位1ビットを、そのデータが連続してコピーされる必要があるのか否かを示すための識別フラグF(連続フラグ)として使用するよう構成されている。
【0073】
連続フラグは、0にセットしてある場合、特に意味を持たないが、1にセットしてある場合、そのPCIヘッダが持つデータ領域と、ネクストポインタでリンクするPCIヘッダの持つデータ領域は連続アドレス空間にコピーされる必要があることを示している。
【0074】
図16に戻り、コマンド送信処理部163は、上位層から指定されたデバイスに対してデータを送信するためのコマンドを送信する機能部である。
【0075】
受信側データ処理部におけるコマンド判断処理部164は、送信側から送られたコマンドを受信し、その内容を解析する機能部である。連続フラグ判断処理部165は、本具体例で新規に追加した機能部であり、送信側データ処理部の連続フラグ設定部162に対応する受信側の構成である。データコピー処理部166は、受信するデータをコピーする処理を行うための機能部である。
【0076】
〈動作〉
PCIバスを経由して通信する上位層は、通常プロトコル層を使用する。プロトコル層は、データを送信する場合に上位層の用意したデータの前にプロトコル層独自のヘッダ情報を添付する。この時、上位層が用意したデータ領域の前の部分は必ずしも未使用領域ではないため、プロトコル層のヘッダが挿入できないという問題点が発生する。
【0077】
図18は、この問題の説明図である。
図示のように、プロトコル層がデータを送信する際にヘッダ情報の領域が空いていない場合、上位層の送信データを他の空きエリアにコピーし、その領域にヘッダ情報を付与する。ところが、このような手段を取る場合、上位層の送信データは概して大量である場合が多いため、大量であることを前提とする設計が必要である。これに対して、本具体例では、以下に示すような処理を行うことにより、このような上位層の大量のデータをコピーすることなくヘッダ情報を挿入することが可能である。
【0078】
図19は、具体例4の動作を示す説明図である。
図20は、具体例4におけるデータ送信の概念を示す説明図である。
【0079】
図19に示すように送信側が受信側に対して「受信要求」を示すコマンドを送信し、受信側は指定されたデータをコピーする。コピー後、送信側に対して「受信応答」を示すコマンドを送信する。
【0080】
送信側が受信側に対して受信を要求する場合に、指定するデータの先頭アドレスとサイズを通知する必要がある。そこで、本具体例では、図17に示したようなPCIヘッダを使用し、送信するデータを受信側に通知する。
【0081】
連続フラグは、0にセットしてある場合、特に意味を持たないが、1にセットしてある場合、そのPCIヘッダが持つデータ領域と、ネクストポインタでリンクするPCIヘッダの持つデータ領域は連続アドレス空間にコピーされる必要があることを示している。
【0082】
図20に示した例では、プロトコル層のヘッダ情報がデータ領域(A)、上位層の送信データがデータ領域(B)となる。ここで、連続フラグがON(=1)であるため、受信側では、連続アドレスにコピーする。
【0083】
一方、連続アドレスにコピーする必要のないものは、連続フラグをOFF(=0)とする。これにより受信側では、所定のアドレスにデータをコピーする。
【0084】
また、上位層が送信するデータサイズには通常制限は存在しないが、プロトコル層の1回の送信サイズには制限があることが多い。よって、上位層の送信データを複数に分割して送信する必要がある。このような場合でも受信側としては受信データが分割せず、連続した領域に一つの固まりとして受信できることが必要な場合も多い。従って、このような場合においても、本具体例により上位層の大量なデータをコピーすることなく受信側へ効率のよい転送を行うことが可能となる。
【0085】
例えば、図示例では、データ領域(B)の連続フラグをON(=1)にし、更に、ネクストポインタにデータ領域(C)を管理するPCIヘッダをリンクさせ、更にデータ領域(D)を管理するPCIヘッダをリンクさせる(データ領域(C)とデータ領域(D)は図示省略している)。送信する上位層のデータを前半部と後半部の二つに分割して送付すると仮定した場合、データ領域(D)を管理するPCIヘッダの連続フラグはOFF(=0)となり、データ領域(A)とデータ領域(C)がプロトコルヘッダ情報で、データ領域(B)が上位層データ前半部、データ領域(D)が上位層データ後半部となる。
【0086】
尚、図19に示すように、本具体例では、受信側が送信側から「受信要求」コマンドを受信し、データブロックをコピーするが、コピーに失敗し、何回かリトライしてもコピーが成功しない場合、受信側から「受信否定応答」コマンドを送信する。送信側からこの「受信応答」コマンドを受信した場合、データを修復できない場合は、送信を断念する。
【0087】
〈効果〉
以上説明したように、具体例4によれば、PCIヘッダ情報としてネクストポインタの下位ビットを連続データの識別を行うビットとしたので、以下のような効果が期待できる。
【0088】
(1)PCIバスを経由して通信する上位層は通常プロトコル層を使用する。この場合において、上位層の大量なデータをコピーすることなく、プロトコル層のヘッダ情報を上位層データの前の領域に挿入することが可能となる。
【0089】
(2)上位層の大量なデータをコピーすることなく、送信側の連続したデータを受信側へ連続した一つのデータとして転送することができ、受信側の効率のよい処理を助けることが可能となる。
【0090】
(3)本具体例のPCIヘッダを使用することにより、受信側はネクストポインタを先行して辿ることにより、受信用の連続空間として必要なサイズをコピー前に知ることができる。
【0091】
《具体例5》
具体例5は、各機能間の通信を共通の手順で行うためのデバイス管理用テーブルの構造に関するものである。
【0092】
〈構成〉
図21は、具体例5の構成および処理の説明図である。
PCIバスを経由して接続している複数のデバイス上に機能(Func)0〜機能(Func)5までの6個の機能が搭載されているとする。そのそれぞれの機能に対して、次に示すような構造を持つデバイスプロファイルを配列構造で機能数分だけ割り当てる。
【0093】
図22は、デバイスプロファイルの構造図である。
図示のように、デバイスプロファイルは、各機能の種類を識別するためのClassCodeと、デバイスプロファイルのバージョンを特定するRev.と、送信先のメールボックス(Mail Box)の先頭アドレスを特定するメールボックスポインタ(&Mail Box)と、送信先処理に割り込みを発生させる割り込み要求レジスタの先頭アドレスである割り込み要求レジスタポインタ(&PIR:以下、PIRポインタという)と、自分宛のコマンドとその引数を格納するメールボックス(Mail Box)と、コンフィグ アドレス フォーマット(CONFIG_ADDRESS Farmat)と、フリーエリア(FREE Area)で構成されている。
【0094】
次に、メールボックスポインタ(&Mail Box)の構造について説明する。
図23は、メールボックスポインタの構造を示す説明図である。
図示のように、各機能に対して割り当てられたデバイスプロファイルの配列は、全システム内に存在する機能(Func)の数と同数であり、配列の添え字(0〜5)は機能番号(Func0〜Func5)に対応している。
【0095】
従って、例えば、機能4に割り当てられたデバイスプロファイルの配列を例に取ると、デバイスプロファイル[0]のメールボックスポインタ(&Mail Box)は、機能0のデバイスプロファイル[4]のメールボックス(Mail Box)の先頭アドレスを指す。
【0096】
以下、同様に、
デバイスプロファイル[1]のメールボックスポインタは、機能1のデバイスプロファイル[4]のメールボックスの先頭アドレスを指す。
デバイスプロファイル[2]のメールボックスポインタは、機能2のデバイスプロファイル[4]のメールボックスの先頭アドレスを指す。
デバイスプロファイル[3]のメールボックスポインタは、機能3のデバイスプロファイル[4]のメールボックスの先頭アドレスを指す。
デバイスプロファイル[4]のメールボックスポインタは、機能4のデバイスプロファイル[4]のメールボックスの先頭アドレスを指す。
デバイスプロファイル[5]のメールボックスポインタは、機能5のデバイスプロファイル[4]のメールボックスの先頭アドレスを指す。
【0097】
即ち、機能Xのデバイスプロファイル[Y]のメールボックスポインタは、機能Yのデバイスプロファイル[X]のメールボックスの先頭アドレスを示している。つまり、各機能は、お互いに他の機能に対するメールボックスを持つよう構成されている。
【0098】
次に、PIRポインタ(&PIR)の構造を説明する。
図24は、PIRポインタの構造を示す説明図である。
機能4に割り当てられたデバイスプロファイルの配列を例に取ると、デバイスプロファイル[0]のPIRポインタは、機能0のPIRの先頭アドレスを指す。
【0099】
以下、同様に、
デバイスプロファイル[1]のPIRポインタは、機能1のPIRの先頭アドレスを指す。
デバイスプロファイル[2]のPIRポインタは、機能2のPIRの先頭アドレスを指す。
デバイスプロファイル[3]のPIRポインタは、機能3のPIRの先頭アドレスを指す。
デバイスプロファイル[4]のPIRポインタは、機能4のPIRの先頭アドレスを指す。
デバイスプロファイル[5]のPIRポインタは、機能5のPIRの先頭アドレスを指す。
【0100】
即ち、いずれかの機能のデバイスプロファイル[X]のPIRポインタは、機能XのPIRの先頭アドレスを示している。つまり、各機能はお互いに他の機能に対するPIRポインタを持つよう構成されている。
【0101】
次にメールボックスの構造について説明する。
図25は、メールボックスの構造を示す説明図である。
機能4に割り当てられたデバイスプロファイルの配列を例に取ると、機能0から機能4へのコマンド通知は、デバイスプロファイル[0]のメールボックスに対して行われる。尚、図中、デバイス1(Device1)中のデバイスプロファイル(Device Profile)は、機能4のデバイスプロファイルを示している。
【0102】
以下、同様に、
機能1から機能4へのコマンド通知は、デバイスプロファイル[1]のメールボックスに対して行われる。
機能2から機能4へのコマンド通知は、デバイスプロファイル[2]のメールボックスに対して行われる。
機能3から機能4へのコマンド通知は、デバイスプロファイル[3]のメールボックスに対して行われる。
機能4から機能4へのコマンド通知は、通常発生しないが、デバイスプロファイル[4]のメールボックスに対して行われる。
機能5から機能4へのコマンド通知は、デバイスプロファイル[5]のメールボックスに対して行われる。
【0103】
即ち、機能Xから機能Yへのコマンド通知は、機能Yのデバイスプロファイル[X]のメールボックスに対して行われる。つまり、各機能は、お互いに自身に持つ他の機能宛のメールボックスにコマンド通知を行うよう構成されている。
【0104】
〈動作〉
図26は、具体例5の動作フローチャートである。
送信側デバイスの機能は、送信先デバイスの機能が持つメールボックスのアドレスを調べる(ステップS261)。調べたメールボックスアドレスに対してメールを投函する(ステップS262)。次に、メールボックスのMBArea1にPCIコマンドを格納し、MBArea2にMBArea1に格納したPCIコマンドに対応する第一引数を格納し、MBArea3に第二引数を格納する処理をメールボックスにメールを投函すると定義する。
【0105】
次に、送信先に割り込みを発生させ、メールボックスに格納したコマンドを受信させるために、送信先のPIR先頭アドレスを調べる(ステップS263)。調べたPIRアドレスに対して0以外の数値を書き込む(ステップS264)。このオペレーションにより、送信先に対して割り込みが発生する。
【0106】
受信側では、割り込みが発生すると送信元の機能を識別する(ステップS265)。通常、デバイスプロファイルのメールボックスをデバイスプロファイル[0]から順にチェックする等の処理を行う。
【0107】
次に、メールボックスに書き込まれているPCIコマンドを解析し、コマンドの内容に沿った処理に分岐する(ステップS266)。仮に、データの受信要求であった場合は、MBArea2より第一引数としてデータの先頭アドレスを読み出し、MBArea3より第二引数としてデータのサイズを読み出し、自分のワークエリアに対してコピーする(ステップS267)。
【0108】
次に、上記ステップS261の送信先デバイス上の機能に対応するメールボックスアドレスの調べ方を説明する。
【0109】
図27は、送信先デバイス上の機能に対応するメールボックスアドレスの調べ方の説明図である。
通信先のメールボックスアドレスは、通信元が持っているデバイスプロファイル一式の中に存在している。通信元のデバイスプロファイル一式中で、送信先に対応するデバイスプロファイル中に、送信先のデバイスプロファイル一式中で送信元に対応するデバイスプロファイルのメールボックスアドレスが格納されている。
【0110】
例えば、機能4から機能0に対してPCIコマンドを送信する場合を例とすると、機能0に割り当てられているデバイスプロファイル配列のデバイスプロファイル[4]中のメールボックスの先頭アドレスを格納している。よって、機能4は機能0に対してPCIコマンドを送信する場合は、自分に割り当てられているデバイスプロファイル[0]のメールボックスポインタを参照することにより、目的のメールボックスアドレスを得ることができる。
【0111】
次に、上記ステップS262のメールボックスへのメールを投函する処理を説明する。
図28は、そのメールボックスへのメール投函処理の説明図である。
【0112】
ここで、機能4が機能3に対してデータを送信するためにメールを送信する場合を例とする。
機能4は機能3が割り当てられたデバイスプロファイル配列のデバイスプロファイル[4]中のメールボックスに対して、MBArea1に「受信要求」を示すコマンドを、MBArea2に送信データ先頭アドレスを、MBArea3に送信データサイズを格納する。
【0113】
次に、上記ステップS263の送信先デバイス上の機能に対応するPIRアドレスの調べ方を説明する。
図29は、その送信先デバイス上の機能に対応するPIRアドレスの調べ方の説明図である。
【0114】
通信先のPIRアドレスは、通信元が持っているデバイスプロファイル一式の中に存在している。通信元のデバイスプロファイル一式中で、送信先に対応するデバイスプロファイル中にPIRアドレスは格納されている。
【0115】
機能4から機能0に対してPCIコマンドを送信する場合を例とすると、機能0が割り当てられているデバイスプロファイル配列のデバイスプロファイル[0]中のPIRポインタ(&PIR)を参照することにより、機能4は機能0に対して割り込みを発生させることが可能となる。
【0116】
〈効果〉
以上のように、具体例5によれば、各機能間の通信を共通の手順で行うためのデバイス管理用テーブルを備えるようにしたので、以下のような効果が期待できる。
【0117】
図30は、具体例5の効果の説明図である。
(1)図30に示すような接続環境において任意の機能からPCIバスマスタ上の機能への通信、複数機能を搭載するデバイス上のそれぞれの機能への通信、単一機能を搭載するデバイス上の機能への通信、そして、自デバイス上の他の機能への通信を共通の手順で実現することが可能となる。
【0118】
(2)デバイス間の通信において必ずPCIバスマスタを経由しなければならない必要がないため、PCIバスマスタの通信における負荷を減少させることができる。
【0119】
《具体例6》
具体例6は、具体例5におけるデバイス管理用テーブルの作成手段に関するものである。
【0120】
〈構成〉
図31は、具体例6の構成および処理を示す説明図である。
図示のように、PCIバスマスタは、コピー先アドレス問い合わせ処理部311と、メールボックスポインタ計算処理部312を備えている。
【0121】
コピー先アドレス問い合わせ処理部311は、各インテリジェントデバイスの機能に対して、配布するデバイスプロファイルのサイズと個数とを通知することによりコピーする先頭アドレスを入手する機能を有している。また、メールボックスポインタ計算処理部312は、コピー先アドレス問い合わせ処理部311で求めたコピーする先頭アドレスに基づき、配布するデバイスプロファイルのメールボックスポインタを求める機能を有している。
【0122】
〈動作〉
本具体例では、具体例5で説明したデバイスプロファイル配列の作成をより効率的に行うようにしたものである。
【0123】
デバイスプロファイル配列一式の作成は、全てPCIバスマスタで行う。PCIバスマスタは、各デバイスプロファイル配列作成後に、各インテリジェントデバイスに対してデバイスプロファイル配列を割り当てる。
【0124】
以下、メールボックスポインタの決定方法についてその手順を説明する。メールボックスポインタの決定は以下の手順で行う。
(1)デバイスプロファイル配列のコピー先アドレス問い合わせ処理
(2)メールボックスポインタ計算処理
【0125】
先ず、コピー先アドレス問い合わせ処理部311が行うデバイスプロファイル配列コピー先アドレス問い合わせ処理について説明する。
図32は、デバイスプロファイル配列のコピー先アドレス問い合わせ処理の説明図である。
図33は、デバイスプロファイル配列のコピー先アドレス回答処理の説明図である。
【0126】
PCIバスマスタは、自分の管理するPCIバス上に存在する全てのインテリジェントデバイスに対して図32に示す手順でデバイスプロファイル配列のコピー先アドレスを問い合わせる。
【0127】
PCIバスマスタは、割り当てるべきデバイスプロファイル配列中のデバイスプロファイルの個数と、デバイスプロファイル配列全体のサイズを割当先インテリジェントデバイスへ通知する。この通信手順は、具体例3で説明した方法を使用した例である。
【0128】
次に、PCIバスマスタよりデバイスプロファイルに関する情報を受け取ったインテリジェントデバイスは、図33に示す手順で、デバイスプロファイル配列のコピー先アドレスを回答する。本通信手順も具体例3で説明したものを使用した例である。
【0129】
図34は、メールボックスポインタ計算処理の説明図である。
先ず、図34において、PCIバスマスタが全てのデバイスプロファイル配列のメールボックスポインタを求める概念について説明する。
【0130】
PCIバスマスタは、PCIバスに接続している全機能に対してデバイスプロファイル配列を作成する。例として、機能1(Func1)用のデバイスプロファイル配列を作成する場合を想定する。
【0131】
先ず、デバイスプロファイル[0]のメールボックスポインタを、デバイスプロファイル[1]は自分用なので省略し、次にデバイスプロファイル[2]のメールボックスポインタを、そして全機能分のメールボックスポインタを決定する。
【0132】
例として、デバイスプロファイル[2]のメールボックスポインタを設定する場合を想定する。
先ず、デバイスプロファイル[2]は、機能2(Func2)に送信する場合のメールボックスのアドレスでなければならないため、デバイスプロファイル配列を機能2にコピーしたと仮定する(図中、▲1▼で示す)。次に、機能1が各機能にPCIコマンドを送信する場合は、各機能が持つデバイスプロファイル配列の1番に書き込むわけなので、デバイスプロファイル[1]が対象となる(図中、▲2▼で示す)。
【0133】
機能2にコピーした場合のデバイスプロファイル[1]中のメールボックスポインタのアドレスを求める(図中、▲3▼で示す)。求めたアドレスは作成中の機能1用に割り当てるデバイスプロファイル[2]におけるメールボックスポインタに格納する(図中、▲4▼で示す)。
【0134】
本具体例では、図中の▲1▼で示す「デバイスプロファイル配列を機能2にコピーしたと仮定する」処理を、デバイスプロファイル配列コピー先アドレスを問い合わせることにより求めている。
【0135】
次に、PCIバスマスタの具体的なメールボックスポインタの設定手順を説明する。
図35は、PCIバスマスタの具体的なメールボックスポインタの設定手順を示す説明図である。
先ず、作成するデバイスプロファイル配列を割り当てる機能番号をカレント番号としてXに設定する(ステップS351)。次に、最後の機能分の作成が終了したかを判断する(ステップS352)。ここで、全機能分のデバイスプロファイル配列の作成が終了した場合は本処理を終了する。
【0136】
現在カレントになっている機能のデバイスプロファイル配列が全て作成終了しているかを判断する(ステップS353)。ここで、デバイスプロファイル配列の作成が終了している場合は、ステップS357に移行する。
【0137】
作成するデバイスプロファイルが対応する機能が、インテリジェントデバイスであるかノン−インテリジェントデバイスであるかを判断する。即ち、機能1に対応するデバイスプロファイルはデバイスプロファイル[1]、機能2に対応するデバイスプロファイルはデバイスプロファイル[2]である。
【0138】
ステップS354において、対応する機能がノン−インテリジェントデバイスである場合はステップS356に移行する。一方、ステップS354において、対応する機能がインテリジェントデバイスである場合は、メールボックスアドレスを算出し、デバイスプロファイルのメールボックスポインタに格納する(ステップS355)。現在カレントになっている機能番号をX、デバイスプロファイルのサイズをZ、デバイスプロファイルの先頭からメールボックスまでのオフセットをM、現在処理しているデバイスプロファイル配列の添え字をyとし、前工程で機能yから受信したデバイスプロファイル配列コピー先アドレスをYとすると、メールボックスアドレスは以下の式で求められる。
【0139】
&Mail Box=XZ+Y+M
そして、次のデバイスプロファイルへと移動し(ステップS356)、その後、ステップS353に戻る。ここで、移動は、同一の機能用に作成しているデバイスプロファイル配列中で一つ増加する方向へ移る。
【0140】
ステップS353において、デバイスプロファイルの残りがなかった場合、作成しているデバイスプロファイル配列を割り当てる機能を次に移動する(ステップS357)。移動は、デバイスプロファイルの添え字を0に戻し、機能番号を一つ増加する方向へ移る。その後、ステップS352に移行する。
【0141】
〈効果〉
以上のように、具体例6によれば、PCIバスマスタがデバイス管理用テーブルを作成して各インテリジェントデバイスに配布するようにしたので、次のような効果が期待できる。
【0142】
(1)全てのデバイスプロファイルの初期化をPCIバスマスタが行うため、各々のデバイスの開発が容易となる。
(2)デバイスプロファイルの構造に項目が追加された場合でも、PCIバスマスタ以外のデバイスの処理を変更する必要がない。
【0143】
《具体例7》
具体例7は、具体例5における割り込み要求レジスタ(PIR)のビットを各機能に割り当てるようにしたものである。
【0144】
〈構成〉
図36は、具体例7の割り込み要求レジスタの構成図である。
具体例7は、具体例5の構成に加えて、図36に示すような割り込み要求レジスタを備えたものである。
【0145】
割り込み要求レジスタ(PIR)は、最上位ビット31がセット・クリアを示すフラグとなっており、ビット0〜ビット30のいずれかに1をセットし、最上位ビット31に1をセットすることによりビット0〜ビット30に対してセットした1が反映され、このPIRが持つシステムに対して割り込みを発生させるよう構成されている。
【0146】
一度、ビット0〜ビット31に対して反映された1は、反映されたビットを1にし、最上位ビット31に0をセットすることにより、0にクリアすることができるよう構成されている。このような仕様を持つ割り込み要求レジスタを各インテリジェントデバイスに対して一つ設ける。
【0147】
〈動作〉
具体例5で説明したメールボックスを使用する通信方法を使用した場合を例として以下に説明する。
図37は、送信側が行うPCIの割り込み要求レジスタの使用方法の説明図である。
図示例では、機能4(Func4)が機能3(Func3)にコマンドを通知する処理を例としている。
【0148】
先ず、機能4を持つインテリジェントデバイスは、送信するデータの情報(「受信要求」を示すコマンド、データの先頭アドレス、データのサイズ)を規定されたメールボックスに対して格納する。
【0149】
次に、格納したことを機能3に通知するために機能3が持つPIRに対して決められた値を書き込む。PIRに0以外の値が書き込まれたことにより機能3に割り込みが発生する。
【0150】
図38は、PIRの各ビットにおける意味づけの説明図である。
PIRの各ビットは、同一PCIバス上に接続された各機能にそれぞれ対応している。ビット0が機能0に、ビット1が機能1に、ビット2が機能2にといったように、以下同様にしてビット30が機能30の機能に対応する。但し、この対応は、ハードウェア的な結線とは関係なくソフトウェア上で対応させている状態を示す。
【0151】
更に、PIRの仕様として、ビット0〜ビット30は各機能に対応しているが、ビット31は〈構成〉の項で説明したように、ビット0〜ビット30に対してセットされた1のデータが割り込みを要求するものか、解除するものかを指定するビットとなっている。ビット0〜ビット30に対する0の書き込みは何の意味もなさない。よって、このレジスタが、(00000000 00000000 00000000 10010000)である時に、(10000000 00000000 00000000 00000001)を書き込んだ時には(00000000 00000000 00000000 10010001)となる構造を持つ。即ち、セット時は各ビットのORとなる。
【0152】
尚、クリア時はビット0〜ビット30のうち、1のデータのビットがクリアされる。例えば、図示のように、(X0000000 00001000 10001000 10001000)である時に、(00000000 00000000 00000000 11111111)を書き込んだ時には、ビット0〜ビット7の値がクリアされるため、(X0000000 00001000 10001000 00000000)となる。
【0153】
次に、送信先のPIRに書き込む決められた値を説明する。
図39は、送信先のPIRに書き込む決められた値を示す説明図である。
機能1が他の機能に対して割り込みを入れる場合は、固定的にビット1とビット31のみを1にしたデータを割り込み先のPIRに対して書き込む。このことにより、受信側で割り込み要求を出した機能を特定することが可能となる。
【0154】
機能の番号は、初期化時にPCIバスマスタより配布されたデバイスプロファイル配列とした時の添え字に該当する。よって、ダイナミックに割り当てられる数値である。
【0155】
受信側が行うPCIの割り込み要求レジスタの使用方法を説明する。
図40は、その受信側が行うPCIの割り込み要求レジスタの使用方法の説明図である。
【0156】
図40では、割り込みが発生するとPIRの値を読み込む。PIR中のデータは、図39に示すように割り込みの要求元を示している。機能4により割り込みが要求された場合は、PIRのビット4が1にセットされている。機能3は、PIRのビット4が1にセットされていることにより、割り込みの要求元が機能4であることを知ることができる。
【0157】
機能3は、割り込みの要求元が機能4と分かることにより、機能4が対応するデバイスプロファイル[4]のメールボックスにコマンドを格納していることを知り、コマンドを読み出し、コマンドの解析処理へ移行する。
【0158】
また、機能3の割り込み処理が起動した時点で、複数の機能から割り込み要求が極めて短い時間に発生した場合に複数のビットが1にセットされている可能性がある。このような場合にも本具体例は対応することができる。
【0159】
〈効果〉
以上のように、具体例7によれば、PIRの各ビットを、それぞれ各機能と一意に対応づけるようにしたので、以下のような効果が期待できる。
【0160】
(1)コマンドを受信したデバイス(機能)は、PIRをチェックするだけでコマンド送信元のデバイス(機能)を特定することができる。
(2)複数の機能から割り込み要求が極めて短い時間に発生した場合に複数のビットが1にセットされている可能性があるが、特別な対応なく同じ手順で対応することができる。
【0161】
《具体例8》
具体例8は、PCIヘッダ中に、次の送信データの情報と、データエリアのポインタと、データサイズとを備えるようにしたものである。
【0162】
〈構成〉
図41は、具体例8におけるPCIヘッダの構成図である。
PCIヘッダ(PCI Header)は、PCIヘッダ同士をアドレスでつなぎ、リンク構造で管理する場合に使用するネクストポインタ(Next Pointer)と、送信するデータの先頭アドレスを示すデータエリアポインタ(Data Area Pointer)と、送信するデータのサイズを示すデータサイズ(Data Size)の各領域から構成される。尚、このPCIヘッダの構造は具体例4で説明したPCIヘッダと基本的に同様である。
【0163】
〈動作〉
図42は、本具体例の動作の基本的概念を示す説明図である。
データ送信側のインテリジェントデバイスは、受信側のインテリジェントデバイスに対して送信するデータの情報(データ先頭アドレス、データサイズ)と共にデータ「受信要求」を示すコマンドを送信する。
【0164】
受信側は、「受信要求」を示すコマンドを認識すると、データの情報(データ先頭アドレス、データサイズ)を元にデータのコピーを行う。データのコピー後、受信側は受信完了を送信側に対して連絡するため「受信応答」を示すコマンドを送信する。
【0165】
以上のようなコマンドによる逐次転送が基本となっている。よって、送信側は、送信したコマンドに対する応答が受信側より来る前に次のコマンドを送信することができない仕組みになっている。この仕組みの長所は確実なデータ転送ができる点にあるが、データの高速転送には不向きである。
【0166】
そこで、本具体例では、上記の長所を失うことなく高速な転送手段を提供する。先ず、本具体例で使用するPCIデータの構造を図41を用いて説明する。
【0167】
本具体例のPCI通信では、直接データを扱わず、図に示すPCIヘッダを使用しデータを管理する。PCIヘッダは、データを先頭アドレスとデータサイズにより管理する。更に、上述したように、PCIヘッダ同士をリンクするネクストポインタを含む構造を持っている。
【0168】
以上説明したデータ管理方法を使用し、高速転送を行う手順を以下に説明する。
送信側は、一つの「受信要求」を示すコマンドに対する「受信応答」を示すコマンドを受信するまでは、上位層より送信要求が来ても同一の受信側に対しては「受信要求」を発信することはできない。
【0169】
図43は、このような連続送信時の送信側のシーケンスを示す説明図である。
送信元PCIデバイスドライバは、最初の送信データ(1)を上位層から受け付けると、PCIヘッダをデータ(1)にリンクさせる(図中、▲1▼で示す)。この時点でPCIヘッダには0を代入する。
【0170】
送信元PCIデバイスドライバは、受信側デバイスドライバに対して「受信要求」コマンドを送信する(図中▲2▼で示す)。送信元デバイスドライバは、受信側デバイスドライバからの「受信応答」コマンドを受信する前に次の送信データ(2)を上位層より受け付けると、PCIヘッダをデータ(2)にリンクさせ(図中、▲3▼で示す)、データ(1)を管理しているPCIヘッダのネクストポインタをデータ(2)を管理しているPCIヘッダの先頭にリンクさせる(図中、▲4▼で示す)。送信元デバイスドライバは、受信側デバイスドライバから「受信応答」コマンドを受信する前に更に次の送信データ(3)を上位層より受け付けると、PCIヘッダをデータ(3)にリンクさせ、データ(2)を管理しているPCIヘッダのネクストポインタをデータ(3)を管理しているPCIヘッダの先頭にリンクさせる(図中、▲6▼で示す)。以上のように、受信側PCIデバイスドライバからの「受信応答」コマンドを受信するまでこのような操作を繰り返す。
【0171】
以上の処理では、受信側がネクストポインタを見るタイミングにより、リンクしたことが受信側に認識されない場合が発生する。このような場合を次に説明する。
【0172】
図44は、リンクしたことが受信側に認識されない場合の説明図である。
図において、▲6▼のタイミングと前後して受信側からデータ(2)まで受信完了したことを示す「受信応答」コマンドを受信すると(図中、▲7▼で示す)、送信側インテリジェントデバイスは、データ(3)からの「受信要求」コマンドを送信する(図中、▲8▼で示す)。送信側は以上の処理が全てとなる。
【0173】
次に、連続送信時の受信側のシーケンスを説明する。
図45は、連続送信時の受信側のシーケンスを示す説明図である。
受信側のPCIデバイスドライバは、送信側PCIデバイスドライバから「受信要求」コマンドを受信すると(図中、▲1▼で示す)、コマンドの引数であるPCIヘッダの先頭アドレスと、PCIヘッダのサイズからPCIヘッダのコピーを行う(ステップS451)。送信側上位層からの送信データの情報(先頭アドレス、データサイズ)は、PCIヘッダ中で管理されているため、PCIデバイスドライバ間でやり取りするコマンドの引数はPCIヘッダの情報となる。
【0174】
次に、受信側のPCIデバイスドライバは受信したPCIヘッダの管理する情報からデータの(1)の先頭アドレスとデータサイズを読み出す(ステップS452)。そして、その情報に従いデータをコピーする(ステップS453)。
【0175】
受信側のPCIデバイスドライバは、受信したPCIヘッダの管理する情報からネクストポインタを読み出しNULLであるか判断する(ステップS454)。NULLである場合は後続のデータが存在しないことを意味するので、ステップS458に移行する。NULLでない場合は、後続のデータが存在することを意味するので、ステップS455に移行する。受信側のPCIデバイスドライバは、受信したPCIヘッダの管理する情報からデータ(2)の先頭アドレスとデータサイズを読み出す(ステップS456)。そして、その情報に従いデータをコピーする(ステップS457)。
【0176】
受信側のデバイスドライバは、以上の工程で「受信要求」コマンドを受信してから一定時間内に「受信応答」コマンドを送信する必要がある。図では、データ(2)を受信したところでタイムアウトが迫ったため、データ(3)の受信をあきらめ、応答を送信側PCIデバイスドライバへ返している(ステップS458)。
【0177】
また、ステップS454と同様の判断を各データコピーの完了時に行い、PCIヘッダのネクストポインタがNULLである場合も応答の送信を行う。
【0178】
また、PCIヘッダのネクストポインタを次々に先読みし、予め受信するデータの総容量を見積り、その後にデータをコピーする手段をとることもできる。
【0179】
図46は、予め受信するデータの総容量を見積り、その後にデータをコピーする場合の説明図である。
即ち、図示のように、受信側PCIデバイスドライバでは、ネクストポインタが0となるまでPCIヘッダをコピーし(ステップS461〜ステップS464)、その後データをコピーする(ステップS465〜ステップS468)。尚、ネクストポインタが0か、コマンド受信から2秒以内に受信応答を行う(ステップS469)のは、上記の連続送信時の受信側のシーケンスと同様である。
【0180】
また、受信側の都合により、一つのコマンド・レスポンスに対して一つのデータを送受信することも問題なくできる。
つまり、本具体例の通信方式では受信側の受信方法を柔軟に作成することができる。これは、様々なデバイスを接続しなければならないPCIバス間の通信方法としては重要な項目である。
【0181】
〈効果〉
以上のように、具体例8によれば、PCIヘッダ中に、次の送信データの情報と、データエリアのポインタと、データサイズとを備えるようにしたので、以下に示すような効果が期待できる。
【0182】
(1)一つのデータブロック転送において、一組のコマンド・レスポンスを必要としないため、高速なデータ転送を実現することができる。
(2)一定時間毎にレスポンスを出すことのみが決まっているだけであるため、受信側の受信方法を柔軟に作成することができる。これは、様々なデバイスを接続しなければならないPCIバス間の通信方法としては重要な項目である。
【0183】
《具体例9》
具体例9は、自層の処理を行うヘッダ情報中に、ヘッダのサイズを示す情報と、ヘッダ情報のバイト数が特定の値の倍数となるような可変長のデータであるパディングとを付加するようにしたものである。
【0184】
〈構成〉
具体例1の構成において、PCIデバイスドライバの上位層としてゲート層を定義する。
【0185】
図47は、ゲートヘッダの説明図である。
ゲートヘッダ(Gate Header)が付いたデータをゲートパケット(Gate Packet)として図示の構成をとる。ゲートヘッダは、ヘッダテールに上位層データの境界を調節するパディング(Padding)領域と、そのパディング領域を含めたゲートヘッダサイズを示すヘッダサイズ(Header Size)領域を持つことを特徴とする。
【0186】
図48は、ヘッダサイズ領域の説明図である。
図示のように、ゲートヘッダは、ヘッダテールに上位層データの境界を調節するパディング領域と、このパディング領域を含めたゲートヘッダサイズを示すヘッダサイズ領域を持つ。
【0187】
〈動作〉
通常、階層構造で構成されている通信システムでは、送信データは、上位層データと、プロトコル層のヘッダ情報と、下位層(デバイスドライバ等)ヘッダとがアドレス的に接した構造をとっている。
【0188】
図49は、パディング無しとパディングありの場合の説明図であり、(a)はパディング無し、(b)はパディングありの場合である。
図の(a)に示すような階層構造で構成されている場合、プロトコル層で選択されるプロトコルによってヘッダのサイズが4バイト境界に揃わない場合が多い。これにより、上位層データが4バイト境界に揃わなくなり、このようなデータを受信した上位層は、DMA等の高速データ転送手段が使用できなくなる。
【0189】
本具体例では、下位層と上位層(プロトコル層)との通信経路を制御するゲート層をデバイスドライバとプロトコル層の間に設け、そのヘッダ構造にパディング領域を設ける。このパディング領域を使用することにより、プロトコル層のヘッダ情報部のサイズに関係なく、全データ若しくは上位層データの開始位置を4バイト境界に揃えることができる。
【0190】
送信側動作について以下に説明する。
通常の送信手順では、4バイト境界に沿って上位層が送信データを作成する。次に上位層データの前部に接するようにプロトコル層のヘッダ情報を作成する。
【0191】
図50は、上位層のデータがゲート層に来た時点の動作を示すフローチャートである。
ゲート層は、プロトコル層からの送信データを受信すると(ステップS501)。受信した送信データの先頭アドレスを4で割り、その余りを計算する(ステップS502)。その余りが0であった場合は、パディングの添付は行わず、ヘッダサイズにゲートヘッダのサイズである12を格納する(ステップS503)。
【0192】
ステップS502において、余りが1であった場合、送信データの先頭アドレスの最後の数値は1、5、9、Dのどれかであるから、パディングを一つ添付する(ステップS504)。そして、ヘッダサイズにゲートヘッダのサイズである12+1を格納する(ステップS505)。
【0193】
ステップS502において、余りが2であった場合、送信データの先頭アドレスの最後の数値は2、6、A、Eのどれかであるから、パディングを二つ添付する(ステップS506)。そして、ヘッダサイズにゲートヘッダのサイズである12+2を格納する(ステップS507)。
【0194】
ステップS502において、余りが3であった場合、送信データの先頭アドレスの最後の数値は3、7、B、Fのどれかであるから、パディングを三つ添付する(ステップS508)。そして、ヘッダサイズにゲートヘッダのサイズである12+3を格納する(ステップS509)。
【0195】
次に、受信側の処理において、デバイスドライバ(PCIデバイスドライバ)から受信データを受け取った時点の動作について説明する。
【0196】
図51は、受信側の動作を示すフローチャートである。
ゲート層は、デバイスドライバが受信したデータを受け取ると(ステップS511)、ゲートヘッダ中のヘッダサイズをチェックする(ステップS512)。その値が12である時、ゲートヘッダにパディングは付いていないと判断し、プロトコル層へ渡すアドレスを受信データ先頭アドレスにゲートヘッダ分を加えた位置に移動させる。
【0197】
ステップS512でチェックした結果、その値が13である時、ゲートヘッダにパディングが一つ付いていると判断し、プロトコル層に渡すアドレスを受信データ先頭アドレスにゲートヘッダ+2を加えた位置に移動させる(ステップS514)。
【0198】
ステップS512でチェックした結果、その値が14である時、ゲートヘッダにパディングが二つ付いていると判断し、プロトコル層に渡すアドレスを受信データ先頭アドレスにゲートヘッダ+3を加えた位置に移動させる(ステップS515)。
【0199】
ステップS512でチェックした結果、その値が15である時、ゲートヘッダにパディングが三つ付いていると判断し、プロトコル層に渡すアドレスを受信データ先頭アドレスにゲートヘッダ+3を加えた位置に移動させる(ステップS516)。
【0200】
ゲート層は、上記ステップS513〜ステップS516で求めた先頭アドレスをプロトコル層へ通知する(ステップS517)。
【0201】
〈効果〉
以上のように、具体例9によれば、自層の処理を行うヘッダ情報中に、ヘッダのサイズを示す情報と、ヘッダ情報のバイト数が特定の値の倍数となるような可変長のデータであるパディングとを付加するようにしたので、以下のような効果が期待できる。
【0202】
(1)プロトコル層のヘッダ情報部のサイズに関係なく、上位層データの開始位置を4バイト境界に揃えることができる。
(2)プロトコル層のヘッダ情報部に関係なく、全データの開始位置を4バイト境界に揃えることができる。
【0203】
《具体例10》
具体例10は、各インテリジェントデバイスに、システムの初期化を行う機能を備えるようにしたものである。
【0204】
〈構成〉
図52は、具体例10の構成および処理の説明図である。
具体例10は、具体例1の構成に対し、PCIバスマスタが唯一の初期化時に暫定的に初期化の主導権を持つ初期化時暫定マスタの機能を持つ点と、その他デバイスが他のデバイスを初期化する機能を持つ点とを付加している。
【0205】
図示のように、初期化時暫定マスタ側は、ゲートID振り分け処理と、マスタ募集処理とを行うよう構成され、デバイス側は、ゲートID入手処理と、マスタへの立候補処理とを行うよう構成されている。また、デバイス側は、デバイスマスタが自身に決定した場合は、他のデバイスの初期化処理を行うよう構成されている。
【0206】
〈動作〉
本具体例では、PCIデバイスドライバレベルの初期化をPCIバスマスタが行った後に、暫定的に初期化の主導権を持つ初期化時暫定マスタ機能がPCIバスマスタの上位層として動作する。
【0207】
本処理は、先ず上位層同士でお互いを認識するためのIDを割り当てる処理を実行する。次に暫定初期化以降の初期化の主導権を持つマスタの募集処理を実行する。この時に、PCIバスマスタ以外のデバイスはマスタになるための機能を有している場合は初期化時暫定マスタからのマスタ募集に対して立候補することができる。そして、初期化時暫定マスタからマスタ権を譲られた場合には、今後マスタとなり、全システム間の初期化を取りまとめる。初期化時暫定マスタは、他のデバイスにマスタ権を譲った場合は、以降一般のデバイスとして動作する。
【0208】
マスタとして動作するための機能をデバイスマスタと定義し、新しいデバイスマスタを決定するまでの手順を以下に説明する。
【0209】
図53は、デバイスマスタの決定処理の説明図である。
先ず、PCIバスマスタが持つ初期化時暫定マスタの処理について説明する。
初期化時暫定マスタは、各インテリジェントデバイスに対してマスタを募集することを示す「デバイスマスタ募集」コマンドを送信する(ステップS531a)。そのコマンドの応答としてマスタになることができる/またはできないことを意味する「デバイスマスタ応募」コマンドを受信する(ステップS532a)。
【0210】
「デバイスマスタ募集」コマンドを送信した全てのインテリジェントデバイスより、「デバイスマスタ応募」コマンドを受信すると、その中から一つマスタとなるインテリジェントデバイスを選定する(ステップS533a)。
【0211】
初期化時暫定マスタは、マスタと選定したインテリジェントデバイスに対しては、以降のデバイス間初期化を依頼することを示す「デバイスマスタ決定」コマンドを、それ以外のインテリジェントデバイスに対しては、マスタとして選定しなかったことを示す「デバイスマスタ不採用」コマンドを送信する(ステップS534a)。
【0212】
次に、PCIバスマスタ以外のデバイスの処理について説明する。
各インテリジェントデバイスは、初期化時暫定マスタからの「デバイスマスタ募集」コマンドを受信すると(ステップS531b)、自機能の中にデバイスマスタ機能が含まれているかを確認する(ステップS532b)。含まれていない場合は引数でマスタに立候補しないことを示して初期化時暫定マスタに対して「デバイスマスタ応募」コマンドを送信する(ステップS533b)。引数を使用する代わりにマスタに応募しないことを示す「デバイスマスタ非応募」コマンドを使用してもよい。
【0213】
「デバイスマスタ応募」コマンド、若しくは「デバイスマスタ非応募」コマンドを、初期化時暫定マスタに送信した後に、初期化時暫定マスタより「デバイスマスタ決定」コマンドまたは、「デバイスマスタ不採用」コマンドを受信する(ステップS534b)。「デバイスマスタ決定」コマンドを受信した場合は、以降マスタとなり、システム間初期化の主導権を取る。「デバイスマスタ不採用」コマンドを受信した場合は、引き続き一般のデバイスとして動作する。
【0214】
ところで、本具体例の構成では、PCIデバイスドライバの上位にゲート層を設けている。ゲート層は主に複数の上位層(プロトコル層)と複数の下位層(デバイスドライバ)間の経路選択、経路制御を行う階層である。
【0215】
よって、デバイスマスタは、ゲートの初期化後、ゲートの通信機能を使用して各システム間のその他のイニシャルの主導権を握る。組み込み上、ゲート自身がデバイスマスタとしての機能を持つ必要はないが、以下のデバイスマスタの動作例ではデバイスマスタ機能がゲートに存在するものとして説明する。
【0216】
図54は、デバイスマスタになるための条件を示す説明図である。
デバイスマスタは自システムの上位層が各システム間で初期化を行う時のキック(起動)をかける処理を受け持つ。各システム上の全ての上位層は、システム間で初期化開始を行う場合、デバイスマスタからの初期化開始要求を使用することにより他のシステム上の同一上位層との同期を取ることができ、双方で初期化を開始してしまう等の問題を回避できる。
【0217】
図55は、デバイスマスタの初期化概要の説明図である。
本具体例では、上位層間初期化を行う上位層の例としてXXXマネージャ、YYYマネージャを使用する(XXXマネージャ、YYYマネージャは任意の上位層)。
【0218】
デバイスマスタは上位層に対して「(主導権付き)初期化要求」を発信する。ここでは、XXXマネージャとYYYマネージャに対して行っている。スレーブゲートは、上位層に対して「(主導権なし)初期化要求」を出す(出す/出さないは各システムのプログラム仕様による)。
【0219】
図示例では、デバイスマスタにより「(主導権付き)初期化要求」を受信したXXXマネージャ、YYYマネージャはそれぞれ他システムのXXXマネージャ、YYYマネージャに対して主導権を持ち初期化を行っている。
【0220】
〈効果〉
以上のように、具体例10によれば、システムの初期化を行うデバイスをPCIバスマスタ固定ではなく、各デバイス間とのやり取りで決定し、他のデバイスが受け持つことができるようにしたので、以下の効果が期待できる。
【0221】
(1)PCIバスマスタを持つシステムと対等の関係にあるシステムを開発し、バスに接続する場合にそのシステムにデバイスマスタを持たせる構造で開発することができるため、開発単位としてまとまる効果がある。よって、そのシステムの開発が容易になり、アウトソーシング等の戦略が取りやすい。
【0222】
(2)PCIバスマスタの初期化機能が正常に動作しない場合のバックアップ機能となる。よって、全システムの信頼性、保全性が向上する。
【図面の簡単な説明】
【図1】本発明のPCIバス制御システムの具体例1を示す構成図である。
【図2】本発明のPCIバス制御システムのソフトウェア階層構造を示す説明図である。
【図3】ノン−インテリジェントデバイス4の初期化の説明図である。
【図4】仮オーナ決定処理の説明図である。
【図5】仮オーナ決定シーケンスの説明図である。
【図6】サービスマネージャの初期化時における仮サービスの認識処理の説明図である。
【図7】サービス整合処理の説明図である。
【図8】具体例2におけるコンフィグレーションレジスタと拡張PCI初期化処理の説明図である。
【図9】具体例2で設定するデバイスIDの説明図である。
【図10】具体例2の動作フローチャートである。
【図11】具体例3の説明図である。
【図12】具体例3のPCIバスマスタからデバイスへのコマンド送信動作の説明図である。
【図13】コマンドの説明図(その1)である。
【図14】コマンドの説明図(その2)である。
【図15】各インテリジェントデバイスがPCIバスマスタに拡張PCIコマンドを送信する場合の説明図である。
【図16】具体例4の説明図である。
【図17】具体例4のPCIヘッダの構成図である。
【図18】具体例4に関する問題の説明図である。
【図19】具体例4の動作を示す説明図である。
【図20】具体例4におけるデータ送信の概念を示す説明図である。
【図21】具体例5の構成および処理の説明図である。
【図22】デバイスプロファイルの構造図である。
【図23】メールボックスポインタの構造を示す説明図である。
【図24】PIRポインタの構造を示す説明図である。
【図25】メールボックスの構造を示す説明図である。
【図26】具体例5の動作フローチャートである。
【図27】送信先デバイス上の機能に対応するメールボックスアドレスの調べ方の説明図である。
【図28】メールボックスへのメール投函処理の説明図である。
【図29】送信先デバイス上の機能に対応するPIRアドレスの調べ方の説明図である。
【図30】具体例5の効果の説明図である。
【図31】具体例6の構成および処理を示す説明図である。
【図32】デバイスプロファイル配列のコピー先アドレス問い合わせ処理の説明図である。
【図33】デバイスプロファイル配列のコピー先アドレス回答処理の説明図である。
【図34】メールボックスポインタ計算処理の説明図である。
【図35】PCIバスマスタの具体的なメールボックスポインタの設定手順を示す説明図である。
【図36】具体例7の割り込み要求レジスタの構成図である。
【図37】送信側が行うPCIの割り込み要求レジスタの使用方法の説明図である。
【図38】PIRの各ビットにおける意味づけの説明図である。
【図39】送信先のPIRに書き込む決められた値を示す説明図である。
【図40】受信側が行うPCIの割り込み要求レジスタの使用方法の説明図である。
【図41】具体例8におけるPCIヘッダの構成図である。
【図42】具体例8の動作の基本的概念を示す説明図である。
【図43】連続送信時の送信側のシーケンスを示す説明図である。
【図44】リンクしたことが受信側に認識されない場合の説明図である。
【図45】連続送信時の受信側のシーケンスを示す説明図である。
【図46】予め受信するデータの総容量を見積り、その後にデータをコピーする場合の説明図である。
【図47】具体例9におけるゲートヘッダの説明図である。
【図48】ヘッダサイズ領域の説明図である。
【図49】パディング無しとパディングありの場合の説明図である。
【図50】上位層のデータがゲート層に来た時点の動作を示すフローチャートである。
【図51】具体例9の受信側の動作を示すフローチャートである。
【図52】具体例10の構成および処理の説明図である。
【図53】デバイスマスタの決定処理の説明図である。
【図54】デバイスマスタになるための条件を示す説明図である。
【図55】デバイスマスタの初期化概要の説明図である。
【符号の説明】
1 PCIバス
2 プリンタ(PCIバスマスタ)
3 インテリジェントデバイス
4 ノン−インテリジェントデバイス

Claims (11)

  1. PCIバスマスタと、単独ではPCIのバストランザクションを開始する機能を持たない複数のノン−インテリジェントデバイスと、PCIバスを経由した通信を自ら行う機能を持つインテリジェントデバイスとが接続されるPCIバス制御システムであって、
    前記PCIバスマスタは、
    所定の前記ノン−インテリジェントデバイスの仮オーナを決定するために、前記インテリジェントデバイスに仮オーナ要求を示すコマンドを送信する機能と、
    サービス情報送信要求を仮オーナの承諾した前記インテリジェントデバイスに送信する機能とを備え、
    前記インテリジェントデバイスは、
    前記PCIバスマスタからの仮オーナ要求を示すコマンドに対して承諾及び拒否のいずれかの受信応答を示すコマンドを前記PCIバスマスタに送信する機能と、
    前記PCIバスマスタから受信した前記サービス情報送信要求に対し前記ノン−インテリジェントデバイスから対応するサービス情報を収集し、該サービス情報を前記PCIバスマスタに送信する機能と、
    を備えることを特徴とするPCIバス制御システム。
  2. 請求項1に記載のPCIバス制御システムにおいて、
    前記インテリジェントデバイスおよび前記ノン−インテリジェントデバイスは、
    前記PCIバスマスタが各デバイスを初期化する際に参照するコンフィグレーションレジスタを備え、該レジスタの予め決められた先頭の数ビットを、インテリジェントデバイスかノン−インテリジェントデバイスかを識別するための値とすることを特徴とするPCIバス制御システム。
  3. 請求項1または2に記載のPCIバス制御システムにおいて、
    記インテリジェントデバイスおよび前記ノン−インテリジェントデバイスのメモリに、PCIデバイスドライバの初期化時に使用する通信用作業領域を設け、かつ、当該通信用作業領域をメモリ領域の先頭に設けたことを特徴とするPCIバス制御システム。
  4. 請求項2に記載のPCIバス制御システムにおいて、
    前記先頭の数ビットは、各機能にマッピングする領域の先頭に設けた、PCIデバイスドライバの初期化時に使用する通信用作業領域を有するか否かを示す値であることを特徴とするPCIバス制御システム。
  5. 請求項1に記載のPCIバス制御システムにおいて、
    送信側デバイスから受信側デバイスへの送信データの先頭に、次の送信データのPCIヘッダの先頭アドレスを示すネクストポインタと、当該送信データにおけるデータエリアのアドレスを示すデータエリアポインタとを示すPCIヘッダを備え、かつ、前記ネクストポインタの最下位ビットを、送信データが連続するか否かを示すフラグとしたことを特徴とするPCIバス制御システム。
  6. 請求項1または2に記載のPCIバス制御システムにおいて、
    前記PCIバスマスタおよび前記インテリジェントデバイスは、
    全システム内に存在する機能と一意に対応づけられ、各機能毎に設けられたデバイスプロファイルを有し、
    各デバイスプロファイルは、送信先のメールボックスのアドレスを示すメールボックスポインタと、送信先の処理に割り込みを発生させる割り込み要求レジスタのアドレスを示す割り込み要求レジスタポインタと、自分宛のコマンドとその引数を格納するメールボックスとを備え、
    機能XのデバイスプロファイルYのメールボックスポインタは、機能YのデバイスプロファイルXのメールボックスのアドレスを示し、各機能のデバイスプロファイルXの割り込み要求レジスタポインタは、機能Xの割り込み要求レジスタのアドレスを示すよう構成されていることを特徴とするPCIバス制御システム。
  7. 請求項6に記載のPCIバス制御システムにおいて、
    前記PCIバスマスタは、
    前記インテリジェントデバイスの機能に対して、配布するデバイスプロファイルのサイズと個数とを通知することによりコピーする先頭アドレスを入手するコピー先アドレス問い合わせ処理部と、
    前記コピーする先頭アドレスに基づき、配布するデバイスプロファイルのメールボックスポインタを求めるメールボックスポインタ計算処理部とを備えたことを特徴とするPCIバス制御システム。
  8. 請求項6または7に記載のPCIバス制御システムにおいて、
    割り込み要求レジスタの各ビットは、それぞれ、各機能と一意に対応づけられ、かつ、各機能が他の機能に対して割り込みを要求する場合は、相手自身のビットに書き込みを行うよう構成されていることを特徴とするPCIバス制御システム。
  9. 請求項1に記載のPCIバス制御システムにおいて、
    送信側デバイスから受信側デバイスへの送信データの先頭に、次の送信データのPCIヘッダの先頭アドレスを示すネクストポインタと、当該送信データにおけるデータエリアのアドレスを示すデータエリアポインタと、当該送信データのデータサイズとを示すPCIヘッダを備えたことを特徴とするPCIバス制御システム。
  10. 請求項1、5または9のいずれかに記載のPCIバス制御システムにおいて、
    前記PCIバスマスタおよび前記インテリジェントデバイスは、
    階層処理構造における自層の処理を行うヘッダ情報中に、ヘッダのサイズを示す情報を含むと共に、当該ヘッダ情報の総データ量が特定の値の倍数となるように可変長のデータであるパディングを付加するようにしたことを特徴とするPCIバス制御システム。
  11. 請求項1、2、3、6、7、10のいずれかに記載のPCIバス制御システムにおいて、
    前記インテリジェントデバイスは、
    予め決められた初期化時暫定マスタよりデバイスマスタ募集があった場合、自身がデバイスマスタになれる条件を備えていた場合はデバイスマスタに応募し、デバイスマスタが自身に決定した場合は他のデバイスの初期化処理を行うよう構成されていることを特徴とするPCIバス制御システム。
JP14927999A 1999-05-28 1999-05-28 Pciバス制御システム Expired - Fee Related JP3791742B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP14927999A JP3791742B2 (ja) 1999-05-28 1999-05-28 Pciバス制御システム
US09/579,173 US6678770B1 (en) 1999-05-28 2000-05-25 PCI bus control system having intelligent devices that own and manage non-intelligent devices for relaying information from non-intelligent devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14927999A JP3791742B2 (ja) 1999-05-28 1999-05-28 Pciバス制御システム

Publications (2)

Publication Number Publication Date
JP2000339267A JP2000339267A (ja) 2000-12-08
JP3791742B2 true JP3791742B2 (ja) 2006-06-28

Family

ID=15471742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14927999A Expired - Fee Related JP3791742B2 (ja) 1999-05-28 1999-05-28 Pciバス制御システム

Country Status (2)

Country Link
US (1) US6678770B1 (ja)
JP (1) JP3791742B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100612003B1 (ko) * 2000-02-26 2006-08-11 삼성전자주식회사 통신망에서 비트 스트림 송수신 장치 및 그 방법
GB0028353D0 (en) * 2000-11-21 2001-01-03 Aspex Technology Ltd Improvements relating to digital data communications
KR100391170B1 (ko) * 2000-12-28 2003-07-12 엘지전자 주식회사 메인 프로세싱 회로 데이터 보드
US20020178316A1 (en) * 2001-05-23 2002-11-28 Schmisseur Mark A. System and method for defining private functions of a multi-function peripheral device
US7243167B2 (en) * 2003-09-19 2007-07-10 Intel Corporation Managing peripheral device address space resources using a tunable bin-packing/knapsack algorithm
US7853742B2 (en) * 2004-04-26 2010-12-14 Intel Corporation System and method to conditionally shrink an executable module
KR100599112B1 (ko) * 2004-05-08 2006-07-13 삼성전자주식회사 Pci 시스템에서 에이전트간 통신 방법 및 통신 장치
CN1877537A (zh) * 2005-06-10 2006-12-13 鸿富锦精密工业(深圳)有限公司 外围部件互连设备信息识别系统及方法
KR101172885B1 (ko) * 2008-12-18 2012-08-10 한국전자통신연구원 디바이스 식별자를 이용한 디바이스 프로파일 제공 시스템 및 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE149713T1 (de) * 1992-11-04 1997-03-15 Siemens Ag Anordnung mit mehreren aktiven und passiven busteilnehmern
US5515516A (en) * 1994-03-01 1996-05-07 Intel Corporation Initialization mechanism for symmetric arbitration agents
US5838935A (en) * 1995-06-15 1998-11-17 Intel Corporation Method and apparatus providing programmable decode modes for secondary PCI bus interfaces
US5848249A (en) * 1995-06-15 1998-12-08 Intel Corporation Method and apparatus for enabling intelligent I/O subsystems using PCI I/O devices
US5790811A (en) * 1996-05-17 1998-08-04 Advanced Micro Devices, Inc. System and method for performing data transfers during PCI idle clock cycles
US5842025A (en) * 1996-08-27 1998-11-24 Mmc Networks, Inc. Arbitration methods and apparatus
US5815731A (en) * 1996-10-31 1998-09-29 International Business Machines Corporation Method and system for providing device driver configurations on demand
US6041364A (en) * 1996-12-19 2000-03-21 Intel Corporation Method and system for adding a device entry to a device tree upon detecting the connection of a device
US5983024A (en) * 1997-11-26 1999-11-09 Honeywell, Inc. Method and apparatus for robust data broadcast on a peripheral component interconnect bus
US6023736A (en) * 1997-12-19 2000-02-08 International Business Machines Corporation System for dynamically configuring I/O device adapters where a function configuration register contains ready/not ready flags corresponding to each I/O device adapter
JPH11238030A (ja) * 1998-02-20 1999-08-31 Mitsubishi Electric Corp Pci−pciブリッジおよびそのための先入れ先出しメモリ
US6073198A (en) * 1998-03-31 2000-06-06 Micron Electronics, Inc. System for peer-to-peer mastering over a computer bus
US6266770B1 (en) * 1998-04-14 2001-07-24 Micron Technology, Inc. Method for autonomous configuration of peer devices
US6119191A (en) * 1998-09-01 2000-09-12 International Business Machines Corporation Performing PCI access cycles through PCI bridge hub routing
US6230216B1 (en) * 1999-01-28 2001-05-08 Vlsi Technology, Inc. Method for eliminating dual address cycles in a peripheral component interconnect environment
US6223232B1 (en) * 1999-02-22 2001-04-24 Vlsi Technology, Inc. System and method to predict configuration of a bus target
US6493777B1 (en) * 1999-09-15 2002-12-10 Lucent Technologies Inc. Method for dynamically reconfiguring data bus control

Also Published As

Publication number Publication date
US6678770B1 (en) 2004-01-13
JP2000339267A (ja) 2000-12-08

Similar Documents

Publication Publication Date Title
US7822908B2 (en) Discovery of a bridge device in a SAS communication system
CN101115054B (zh) 用于网络接口控制器的存储器映射的缓冲器
US7581015B2 (en) Communication device having transmitting and receiving units supports RDMA communication
KR100449807B1 (ko) 호스트 버스 인터페이스를 갖는 데이터 전송 프로토콜제어 시스템
US4768150A (en) Application program interface to networking functions
US6185607B1 (en) Method for managing network data transfers with minimal host processor involvement
US10044796B2 (en) Method and system for transmitting an application message between nodes of a clustered data processing system
CN101937406B (zh) 一种VxWorks操作系统中实现驱动1394设备的方法和系统
JP2002541554A (ja) ユニバーサル・シリアル・バスに基づくpcフラッシュディスクのためのアーキテクチャ
US5987530A (en) Method for caching data and generating only one read request to read the requested data and additional data in universal serial bus system
US9268490B2 (en) Storage system
JP3791742B2 (ja) Pciバス制御システム
US8250260B2 (en) Method, arrangement, data processing program and computer program product for exchanging message data in a distributed computer system
CN102033840A (zh) 总线协议转换装置和总线协议转换方法
US7069305B2 (en) Computer system and a data transfer method thereof using remote direct memory access
CN1331070C (zh) 数据通信的方法及设备
US7043603B2 (en) Storage device control unit and method of controlling the same
JP4208506B2 (ja) 高性能記憶装置アクセス環境
US6714994B1 (en) Host bridge translating non-coherent packets from non-coherent link to coherent packets on conherent link and vice versa
US7240167B2 (en) Storage apparatus
KR100653178B1 (ko) 전송제어프로토콜 오프로드 엔진 기반의 전송제어프로토콜전송정보 생성 및 관리 장치 및 그 방법
US6678722B1 (en) Interprocessor communication system for parallel processing
JP5482263B2 (ja) エンドポイント共有システムおよびデータ転送方法
CN113220238B (zh) 一种通用sas控制器接口实现方法
JP3644158B2 (ja) 並列計算機におけるデータ送受信方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060110

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: 20060228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060330

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: 20100414

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140414

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees