JPH08227402A - 共用メモリのバス競合の削減方法 - Google Patents

共用メモリのバス競合の削減方法

Info

Publication number
JPH08227402A
JPH08227402A JP28616095A JP28616095A JPH08227402A JP H08227402 A JPH08227402 A JP H08227402A JP 28616095 A JP28616095 A JP 28616095A JP 28616095 A JP28616095 A JP 28616095A JP H08227402 A JPH08227402 A JP H08227402A
Authority
JP
Japan
Prior art keywords
data
neb
printer
pointer
processor
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.)
Withdrawn
Application number
JP28616095A
Other languages
English (en)
Inventor
Daniel A Danknick
エー. ダンクニック ダニエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Information Systems Inc
Original Assignee
Canon Information Systems Inc
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 Canon Information Systems Inc filed Critical Canon Information Systems Inc
Publication of JPH08227402A publication Critical patent/JPH08227402A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 所定の位置で送信側プロセッサーにメモリ
への書き込みをやめさせ、受信側プロセッサーが送信側
プロセッサーが書き込んだデータを読み込む間、送信側
プロセッサーを待機させることによって、共有メモリに
データを書き込む送信側プロセッサーと、共有メモリか
らデータを読み出す受信側プロセッサー間の共有メモリ
の競合を削減する方法を提供すること。 【解決手段】 共有メモリを介してプットポインタ及び
ゲットポインタを使用して、送信側プロセッサーから受
信側プロセッサーへデータを送るデータ送信方法であっ
て、プットポインタの値は共有メモリ中で送信側プロセ
ッサーが書き込むべき次の位置を示し、ゲットポインタ
の値は共有メモリから受信側プロセッサーが読み込むべ
き次の位置を示す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、共有メモリを介し
て通信を行う2つのプロセッサー間の、バス競合を削減
する方法に関する。特に、所定の位置で送信側プロセッ
サーにメモリへの書き込みをやめさせ、受信側プロセッ
サーが送信側プロセッサーが書き込んだデータを読み込
む間、送信側プロセッサーを待機させることによって、
共有メモリにデータを書き込む送信側プロセッサーと、
共有メモリからデータを読み出す受信側プロセッサー間
の共有メモリの競合を削減する方法に関する。
【0002】
【従来の技術】近年、マルチプロセッサーシステムにお
いて、それぞれのプロセッサーが、共有RAMを介して互
いに通信を行うことが一般的になっている。例えば、2
つのプロセッサーを用いたシステムで通信を行う場合、
第1プロセッサーが情報を共有RAMに書き込み、そし
て、共有RAM内に情報があることを第2プロセッサーに
通知する。そして、第2プロセッサーは共有RAMから情
報を読み出して、共有RAMに応答を書き込み、そして応
答があることを第1プロセッサーに通知する。片方のプ
ロセッサーによるアクセスが完了するまで、もう一方の
アクセスは延期される。この往復の読み込み及び書き込
みサイクルを繰り返すことにより、2つのプロセッサー
間で通信が行われる。
【0003】共有RAMのメモリは、一般的にリングバッ
ファとして構成さる。このバッファにおいては、最後に
達したときに、アドレス付与が自動的に最初から再スタ
ートするように、線形メモリーアレイは巡回してアドレ
ス付与される。このようなメモリ構造は2つのポインタ
を必要とする。一つは「プット」ポインタで、次にデー
タを書き込むアドレスをマークし、もう一つは「ゲッ
ト」ポインタで、次のデータを読み込むアドレスをマー
クする。これらのポインターの値は、共有RAM中に記憶
されている。送信側のプロセッサーは、リングバッファ
に新しいデータを書き込む度にプットポインタの値を進
めることによって、プットポインタの値を制御する。ま
た、受信側のプロセッサーは、データをコピーして取り
出す度に、ゲットポインタの値を進めることによって、
ゲットポインタの値を制御する。
【0004】従来の共有メモリシステムでは、データブ
ロックを共有RAM中に書き込む前に、送信側プロセッサ
ーは、プットポインタ及びゲットポインタの値を読み込
み、リングバッファ中に使用可能な領域があるか否かを
判断するために、これらの値を比較する。同様に、受信
側プロセッサーは、プットポインタ及びゲットポインタ
の値を読み込み、読み込むべきデータがあるか否かを判
断するためにこれらの値を比較する。従って、一方のプ
ロセッサーから他方のプロセッサに、リングバッファを
使用してデータを送信する場合において、受信側のプロ
セッサーは送信側のプロセッサーを「リングをまわりな
がら」追跡し、書き込まれたデータを読み出す。
【0005】従来のシステムにおいてよく見られるケー
スであるが、送信側のプロセッサーが、受信側のプロセ
ッサーが読み出しするよりも速い速度でデータを書き込
む場合、プットポインターがリングを回って、後にある
ゲットポインタに追い付いてしまう傾向がある。このよ
うな場合、送信側プロセッサーは、リングバッファのメ
モリー空間が使用可能になるまで待つ。この待機時間
に、送信側のプロセッサーは、空間が使用可能になった
か否かを判断するために、プットポインター及びゲット
ポインターを周期的に読み込み、比較する。送信側のプ
ロセッサーによるこのようなポーリングは、送信側のプ
ロセッサーが共有メモリにアクセスしてポインターの値
を読み込まなければならないために、受信側プロセッサ
ーの処理速度を低下させる。これによって受信側プロセ
ッサーによるアクセスが妨害され、システム全体の機能
を低下させてしまう。
【0006】
【発明が解決しようとする課題】本発明は上記従来例に
鑑みてなされたもので、所定の位置で送信側プロセッサ
ーにメモリへの書き込みをやめさせ、受信側プロセッサ
ーが送信側プロセッサーが書き込んだデータを読み込む
間、送信側プロセッサーを待機させることによって、共
有メモリにデータを書き込む送信側プロセッサーと、共
有メモリからデータを読み出す受信側プロセッサー間の
共有メモリの競合を削減する方法を提供することを目的
とする。受信側プロセッサーは、割り込み信号を発行す
ることによって共有RAMからのデータ読み込みが済んだ
ことを示し、これにより、送信側プロセッサーが、読み
込みが済んだときを判断するための共有RAMへのポーリ
ングをする必要がなくなる。
【0007】
【課題を解決するための手段】上記目的を達成するため
に本発明におけるデータ送信処理は送信側プロセッサー
によって以下の方法で実行される。即ち、(1)共有RA
M中に、データの為の使用可能なスペースがあるか否か
を決定し、(2)使用可能なスペースがある場合はゲッ
トポインタ及びプットポインタを読み出し、プットポイ
ンタが、リングバッファを分割して得られた部分の数に
対応する複数の部分インデックスのうちの一つと等しい
か否かを判断し、(3)ゲットポインタの値が、予め設
定された複数のインデックスの内の一つと等しい場合
に、割り込み信号を発行するように受信側プロセッサー
にリクエストするコマンドを書き込み、(4)共有メモ
リのプットポインタの位置に、印刷データブロックを書
き込み、(5)プットポインタの値を更新する。受信通
知を発行するように受信側プロセッサーにリクエストす
るコマンドを書いたときに、受信通知の受信予定カウン
ターに1を加えることによって、受信することが期待さ
れる受信通知の数が更新される。このように、リングバ
ッファに使用可能なスペースがあるか否かを判断するた
めに、受信通知の受信予定数と、リングバッファを分割
して得られた部分の数とを比較する。受信通知の受信予
定数が、分割部分の数以上ならば、リングバッファは満
杯であり、NEB101は印刷情報をリングバッファに追
加で書き込まない。その代わりに、送信側プロセッサー
は、受信側プロセッサーがリングバッファの一部分をク
リアし、新しい情報を記憶できる部分ができたことを示
す割り込み信号が受信されるまで待機する。反対に、受
信通知の受信予定数が、分割部分の数より少なければ、
リングバッファ内に使用可能なスペースがまだあること
を示す。
【0008】この構成により、送信側プロセッサーは、
使用可能なスペースがあるか否かを判断するために共有
RAMにポーリングする必要がなくなり、従って、共有R
AMへのバス競合が削減される。本発明の別の形態で
は、受信側プロセッサーは、ゲットポインタの値及びプ
ットポインタの値を読み込み、共有メモリ内にリトリー
ブするべきデータがあるか否かを判断し、共有メモリ内
にデータがある場合は、共有メモリのゲットポインタが
示す位置からデータブロックを読み込み、そして、ゲッ
トポインタの値を更新することによって、データリトリ
ーブ処理を実行する。受信側プロセッサーは、送信側プ
ロセッサーによって発行された、データブロックに組み
込まれたコマンドを実行し、そして、データリトリーブ
処理を再実行する。特に、受信側プロセッサーは割り込
みを発行するコマンドを、送信側プロセッサーへ割り込
み信号を発行することによって実行する。
【0009】上記の問題を解決するための手段は、本発
明が迅速に理解されるように提供されたものである。本
発明に関する更に詳しい理解は、添付図面を参照して説
明された、下記の好適な実施例の詳細を参照することに
より、明かになるであろう。
【0010】
【発明の実施の形態】以下添付図面を参照して本発明の
好適な実施の形態を詳細に説明する。最も好適な例とし
ては、本発明はネットワークボード(NEB)の形態を取
る。このNEBは、プリンターや対話型インテリジェント
・ネットワーク・メンバー等のネットワーク周辺機器
を、ネットワークからデータを受信して処理するだけで
はなく、詳細な状態情報や演算パラメーター等の周辺機
器に関する多量のデータをネットワークに送信すること
ができるようにする、ハードウエアやソフトウエア、又
はファームウエアを用いた解決法を提供する。また、本
発明をスキャナーやファクシミリ、コピー機、画像処理
装置等の、ネットワークに接続された他の周辺機器に使
用してもよい。このようなハードウエア、ソフトウエ
ア、ファームウエアを周辺機器と融合することで、パー
ソナルコンピューターを周辺機器のサーバーとして使用
する必要がなくなる。 [ネットワーク構成]図1は、ネットワークボード(NE
B)101を、開放型アーキテクチャを持つプリンター
102へつなげた場合を示す図である。NEB101はロ
ーカルエリアネットワーク(LAN)100へ、例えば、
同軸コネクタをもつEthernetインターフェース10Base
-2や、RJ−45を持つ10Base-T等のLANインターフ
ェースを介してつながれている。
【0011】PC103やPC104等の複数のパーソ
ナルコンピューター(PC)もまた、100に接続され
ており、ネットワークオペレーティングシステムの制御
の下、これらのPCはNEB101と通信することができ
る。PCの一つ、例えばPC103を、ネットワーク管
理部として使用するように指定することができる。PC
に、PC104に接続されているプリンター105のよ
うなプリンターを接続してもよい。
【0012】また、LAN100にファイルサーバー10
6が接続されており、これは大容量(例えば100億バ
イト)のネットワークディスク107に記憶されたファ
イルへのアクセスを管理する。プリントサーバー108
は、接続されたプリンター109a及び109b、又は遠
隔地にあるプリンター105などのプリンターに印刷を
行わせる。また他の図示しない周辺機器をLAN100に
接続してもよい。
【0013】更に詳しくは、図1に示すネットワーク
は、様々なネットワークメンバー間で効率良く通信を行
うために、NovellやUNIXのソフトウエアなどのネットワ
ークソフトウエアを使用することができる。どのネット
ワークソフトウエアを使用することも可能であるが、本
実施の形態においては、Novell社のNetWare(Novell社
の商標。以下省略) ソフトウエアを使用したLANに基づ
いて説明する。このソフトウエアパッケージに関する詳
細な説明は、1990年に著作権登録されたM&Tブック
ス社発行の「NetWareユーザーガイド」及び「NetWareス
ーパーバイザーガイド」に示されている。また、Novell
社発行の1991年3月版「NetWareプリントサーバ
ー」(Novell Part第100−000892−001)
も参照されたい。
【0014】簡潔に説明すると、ファイルサーバー10
6は、LANメンバー間でデータのファイルの受信や、記
憶、キューイング、キャシング、及び送信を行う、ファ
イル管理部としての役割を果たす。例えば、PC103
及びPC104それぞれによって作られたデータファイ
ルは、ファイルサーバー106へ送られ、ファイルサー
バー106はこれらのデータファイルを順に並べ、そし
てプリントサーバー108からのコマンドに従って、並
べられたデータファイルをプリンター109aへ送信す
る。
【0015】PC103とPC104はそれぞれ、デー
タファイルの生成や、生成したデータファイルのLAN1
00への送信や、また、LAN100からのファイルの受
信や、更にそのようなファイルの表示及び/又は処理を
行うことのできる、通常のPCで構成される。図1にパ
ーソナルコンピューター機器が示されているが、ネット
ワークソフトウエアを実行するのに適切であるような、
他のコンピューター機器を含んでもよい。例えば、UNIX
のソフトウエアを使用している場合に、UNIXワークステ
ーションをネットワークに含んでもよく、これらのワー
クステーションは、適切な状況下で、図示されているP
Cと共に使用することができる。
【0016】通常、LAN100などのLANは、一つの建物
内の一つの階又は連続した複数の階でのユーザーグルー
プ等の、幾分ローカルなユーザーグループにサービスを
提供する。例えば、ユーザーが他の建物や他県に居るな
ど、あるユーザーが他のユーザーから離れるに従って、
ワイドエリアネットワーク(WAN)を作ってもよい。WAN
は、基本的には、いくつかのLANを高速度サービス総合
デジタルネットワーク(ISDN)電話線等の高速度デジタ
ルラインで接続して形成された集合体である。従って、
図1に示すように、LAN100と、LAN110と、LAN1
20とは変調/復調(MODEM)/トランスポンダー13
0及びバックボーン140を介して接続されWANを形成
する。これらの接続は、数本のバスによる単純な電気的
接続である。それぞれのLANは専用のPCを含み、ま
た、必ずしも必要なわけではないが、通常はファイルサ
ーバー及びプリントサーバーを含む。
【0017】従って図1に示すように、LAN110は、
PC111と、PC112と、ファイルサーバー113
と、ネットワークディスク114と、プリントサーバー
115と、プリンター116及びプリンター117とを
含む。対象的に、LAN120はPC121とPC122
のみを含む。LAN100と、LAN110と、LAN130と
に接続されている機器は、WAN接続を介して、他のLANの
機器の機能にアクセスすることができる。
【0018】PC104には、例えばRPINTERソフトウ
エアプログラムが搭載されており、これによりネットワ
ーク周辺機器の制限された制御を行うことができる。RP
INTERプログラムは、MS-DOSターミネート・アンド・ス
テイ・レジデント(TSR)プログラムである。このプロ
グラムにより、ユーザーがPC104に接続されたプリ
ンター105を共有していても、PC104は印刷以外
の他のアプリケーションを実行することができる。RPIN
TERは、ワークのためのプリンターキューを検索する機
能を持たない、比較的非インテリジェントなプログラム
である。RPINTERはネットワーク上のどこかで稼働して
いるプリントサーバー108からワークを受ける。PC
104で実行されているRPINTERは、接続されたプリン
ターと、プリンターのパラレルポートを介して通信を行
うため、プリンター105から限られた状態情報のみを
手に入れ、その状態情報をプリントサーバー108へLA
N100を介して返すことができる。制御の点から見る
と、RPINTERは印刷ジョブの中止や(例えば、プリンタ
ーの用紙切れや、接続されていない場合に行われる)、
他のいくつかの制御を行うことができる。プリンターに
よっては、パーソナルコンピューターで実行されてい
る、RPINTER TSRプログラムの特長機能のいくつかを供
給する、内部又は外部回路ボードを提供することによ
り、RPINTERと同様の機能を持つことができる。
【0019】プリントサーバー108はLAN周辺機器に
対して、更に多くの制御を行なうことができるが、他の
タスクに使用することのできない専用のPCを必要とす
る。プリントサーバー108はPCであってもよく、多
数のユーザー定義のプリントキューをサービスし、ダイ
ナミック検索キューの更新を行い、例外(失敗)条件及
び状態・制御性能についての、定義された通知手順を提
供することができる。また、プリントサーバー108
は、ローカルプリンター109aおよび109b(つま
り、物理的にプリントサーバー108に接続されている
プリンター)と、遠隔地にあるプリンターとの両方を制
御することができる。ローカルプリンター109aおよ
び109bはシリアルポート又はパラレルポートのどち
らにも接続することができ、プリンター105のような
遠隔地にあるプリンターは、RPRINTERソフトウエアを介
してプリントサーバー108が制御する、システムの何
処かで稼働しているプリンタである。
【0020】プリントサーバー108は、多数のローカ
ル又は遠隔地のプリンターを制御したり、多数のファイ
ルサーバーキューから印刷情報をリクエストすることが
できる。しかし、ネットワークプリントサービスを制御
するためにプリントサーバー108に頼ることに関し
て、いくつかの欠点がある。第1の欠点は、複数のプリ
ンターストリームが単一のネットワークノードを介して
集められなければならないことである。これは障害とな
りうる。第2の欠点は、最も効率的な操作のためには、
プリンター109a及び109bのように、プリンターを
プリントサーバーにローカルに接続しなけらばならない
ことである。このため、プリンターがプリントサーバー
108の周辺に集まっていなければならず、ユーザーが
プリンターの集まっている場所までわざわざ行かなけれ
ばならないということから、ユーザーにとって不便であ
る。第3の欠点は、RPRINTERによってサービスされてい
るプリンター105のように、制御されているプリンタ
ーが遠隔地にある場合、プリントデータは、先ずファイ
ルサーバー106からプリントサーバー108へ、次に
プリントサーバー108からRPRINTERを稼働しいるプリ
ンターへと、いくつかの経路を辿らなければならないこ
とである。これは非効率である。
【0021】第4の欠点は、限られた量のプリンター状
態及び制御情報しか、プリントサーバー108を通して
供給されないことである。既に説明したとおり、RPRINT
ERは、「用紙切れ」及び「オフライン」等の基本的な状
態情報以上のものを供給しないことである。パーソナル
コンピューターパラレルポートの制限を鑑みて設計され
ているため、プリントサーバー108は、これ以上の情
報を提供しないのである。 [ネットワークボード]NEB101をプリンター102
にインストールすることによって、上記のネットワーク
周辺機器制御に多くの利点をもたらす。そのうちの一つ
は、プリンター102をインテリジェントな対話式ネッ
トワークメンバーにすることである。
【0022】図2に示すように、好ましくは、NEB10
1は、プリンター102の内部拡張I/Oスロットに内蔵
されており、本発明の実施の形態においては、プリンタ
ーはキヤノン社のLBP1260レーザープリンターを
用いている。これにより、NEB101は、下に示す処理
及びデータ記憶機能を持つ、「埋め込まれた」ネットワ
ークノードとなる。
【0023】このNEB101の構成により、大きなマル
チエリアWANネットワークを統括及び管理するための、
特徴的な補助機能を持つという利点をもたらす。これら
の補助機能は、例えば、ネットワーク上の遠隔地(ネッ
トワーク統括者の事務所など)からのプリンター制御及
び状態観察や、各印刷ジョブ後の次のユーザーのための
保証初期環境を提供するためのプリンター構成の自動管
理、及びプリンターの負荷量を特徴付け、あるいはトナ
ーカートリッジの交換スケジュールを組むためにネット
ワークを通してアクセスできる、プリンターログ又は使
用統計を含む。
【0024】NEB設計において重要な要因は、共有メモ
リ等の両方向インターフェースを介して、NEB101か
らプリンター制御状態にアクセスする機能である。共有
メモリ以外に、SCSIインターフェース等のインターフェ
ースを使用することもできる。これにより、多数の便利
な補助機能のプログラムができるように、プリンター操
作情報をNEB101又は外部ネットワークノードへ送出
することができる。印刷画像データ及び制御情報のブロ
ックは、NEB101上にあるマイクロプロセッサーによ
って構成され、共有メモリに記述され、そして、プリン
ター102によって読み込まれる。同様に、プリンター
状態情報は、プリンター102から共有メモリへ送ら
れ、そこからNEBプロセッサーによって読み込まれる。
【0025】図2は、NEB101をプリンター102に
インストールした状態を示す断面図である。図2に示す
ように、NEB101はネットワーク接続の為のフェース
プレート101bを設置した印刷回路ボード101aから
構成されており、コネクタ170を介してプリンターイ
ンターフェースカード150に接続されている。後で説
明するが、プリンターインターフェースカード150
は、プリンター102のプリンターエンジンを直接制御
する。印刷データ及びプリンター状態コマンドは、NEB
101からコネクタ170を介して、プリンターインタ
ーフェースカード150へ入力され、また、プリンター
状態情報はプリンターインターフェースカード150か
らやはりコネクター170を介して得られる。NEB10
1はこの情報を、フェースプレート101bのネットワ
ークコネクタを介して、LAN100上で通信する。同時
に、プリンター102は、従来のシリアルポート102
a及びパラレルポート102bから、印刷データを受信す
ることもできる。
【0026】図3は、NEB101とプリンター102とL
AN100との電気的接続を示すブロック図である。NEB
101は、LAN100へはLANインターフェースを介し
て、プリンター102へはプリンターインターフェース
カード150を介して直接接続されている。本発明の実
施の形態においては、このプリンターインターフェース
カード150は、Peerless System社から販売されてい
る、PeerlessLBP−860/1260−エクスターナ
ル・スタンダードI/Oボードインターフェースである。
この詳細は、1994年3月10日付けPeerless Syste
m社PeerlessスタンダードI/Oインターフェース設計仕様
書、改訂版2.07aに記されている。このボードはイ
ンテル80960KB−20マイクロプロセッサー15
1を搭載している。これは32ビット機であるが、マイ
クロプロセッサー151はNEB101とのデータのアク
セスを2バイト幅(16ビット)で、NEB101に設置
されている共有メモリ200を介して行う。マイクロプ
ロセッサー151は、実際に印刷機構を動かす、プリン
ターエンジン160とも通信する。 [NEBの物理的配列]図4は、好ましいNEB101の構成
要素の大小、及びその主要な構成要素の物理的配列を示
す図である。NEBカードは縦3.93インチ、横5.6
インチである。NEB101は、プリンターインターフェ
ースに接続するプリンターインターフェースカードコネ
クタ170(Peerlessプリンターインターフェースカー
ドの場合、80ピンコネクタ)と、LAN100に接続可
能なコネクター301及び302を持つフェースプレー
ト300とを含む。また、このフェースプレートは、4
状態発光ダイオード(LED)303乃至306を含む。N
EBカード上には、トランシーバー171と、水晶発振器
172と、マイクロプロセッサー173と、アービター
制御論理回路400と、フラッシュ消去可能プログラム
可能ROM(EPROM)174と、ダイナミックRAM(DRAM)
175と、第1スタティックRAM(SRAM)(共有メモ
リ)200と、第2SRAM176と、ネットワーク及びNE
B制御論理回路500と、シリアルポートコネクタ60
0とが配置されている。これらの構成要素それぞれにつ
いては、後で詳細に説明する。
【0027】図5は、大きさが縦4.56インチ、横
1.28インチのフェースプレート300を更に詳しく
示す図である。上記のとおり、NEB101はLAN100に
コネクタ301及び302を介してつながれている。好
ましくは、コネクタ301は10Base-Tを接続すること
ができるRJ−45コネクタであり、コネクタ302は
10Base-2を接続することができる簡易同軸コネクタで
ある。状態LED303は、NEB101がLAN100上にデ
ータを送信しているときに点灯し、状態LED304は、N
EB101がLAN100からデータを受信しているときに
点灯する。状態LED305は、RJ−45コネクタ30
1がLAN100に接続しているときに点灯し、また、状
態LED306は、NEB101の自己診断中に点灯する。搭
載穴307は、NEB101をプリンター102へ固定す
るためのねじを受けるためのものである。 [NEBの構成]NEB101の構成を図6に示す。+5V電
源177からNEB101へ電気を供給することによっ
て、すべての回路に電気が供給される。+5Vの電圧
は、電圧変換装置178及び179へも供給される。電
圧変換装置178は、−9Vの電圧をトランシーバー1
71へ供給し、また電圧変換装置179は、+12Vの
電圧をフラッシュEPROM174へ「フラッシュするため
に」(つまり、EPROMを再プログラムするために)供給
する。
【0028】ネットワーク・NEB制御論理回路500は、
ネットワーク制御部510及びNEB制御論理回路520
を含む、単一の144ピンアプリケーション用集積回路
(ASIC)であることが好ましい。ネットワーク制御部5
10はナショナルDP83902A「ST-NIC」Ethernet
コントローラーと互換性のある、NCRマクロセルであ
り、このコントローラーの詳細はナショナルセミコンダ
クター社の1993年版ローカルエリアネットワークデ
ータブック(Local Area Network Data Book)、ナショ
ナルセミコンダクターp/n400055に示されるとお
りである。ネットワーク制御部510は、CSMA/CD-タイ
プ(キャリア検知多重アクセス/衝突検出)ローカルエ
リアネットワークとインターフェースするように設計さ
れている。
【0029】ネットワーク制御部510は、RJ−45
コネクタ301に直接接続し、同軸コネクタ302へ
は、トランシーバー171を介して接続する。同軸コネ
クタ302は、ナショナル半導体DP8392同軸トラ
ンシーバーインターフェースであることが好ましく、そ
の詳細は、ナショナルセミコンダクター社のローカルエ
リアネットワークデータブックに示されている。ネット
ワーク制御部510はまた、Ethernetデータのための入
出力パケットバッファとして利用される、8KBのSRAM
176につながれている。このメモリのアクセス時間
は、約70ns以下であることが好ましい。
【0030】NEB制御論理回路520は、ネットワーク
制御部510と、マイクロプロセッサー173と、メモ
リ装置であるEPROM174およびDRAM175との間のイ
ンターフェースを提供する。また、NEB制御論理回路5
20は、不揮発性RAM(NVRAM)180とインターフェー
スする。このNVRAM180は、NEB101を内蔵するプリ
ンター102のパワーサイクリング中の初期化データの
記憶部のために使用される、256バイトの電気的に消
去可能プログラム可能シリアルメモリである。プリンタ
ーが最初にネットワークにインストールされたときに、
プリンターがオフ・オンの一巡をした後に、NEBソフト
ウエアがインストール用のパラメーターをリカバーする
ために、ネットワーク及びプリンター構成パラメーター
がNVRAM180へ書き込まれる。
【0031】また、NEB制御論理回路520は、デバッ
グを行うためにシリアルデータ列を送受信するためのデ
ータ受信ピン601(RX)とデータ送信ピン602
(TX)とを持つ、シリアルポートコネクタ600へつ
ながれている。NEB制御論理回路520は、現在受信デ
ータ線上にあるデータを感知し、定間隔でシリアルビッ
トをサンプリングする。この方法は、後に詳しく説明す
る。
【0032】NEB101の中央処理部はマイクロプロセ
ッサー173であり、好ましくは、インテル80C18
8EA−208−ビットプロセッサーである。このプロセ
ッサーの詳細は、インテル社の80C186EA/801
88EAユーザーマニュアル、インテルp/n270950
−001に記されている。このプロセッサーは、8ビッ
トプロセッサーで、ダイレクトメモリアクセス(DM
A)、割り込み機能、タイマー、及びDRAMリフレッシュ
制御機能を持つ。AMD80C188−208−ビットマイ
クロプロセッサーのような、他のプロセッサーを代わり
に使用してもよい。256KBのフラッシュEPROM17
4及び512KBのDRAM175は、NEB制御論理回路5
20を介してマイクロプロセッサー173につながれて
おり、32KBのSRAM200(プリンターインターフェ
ースカード150と共有されている)は、アービター制
御論理回路400を介してマイクロプロセッサー173
につながれている。40MHz、50ppmの水晶発振
器172は、プリンターインターフェースカード150
のマイクロプロセッサー151へ供給されるクロック信
号と、非同期で完全に異なるクロック信号を、マイクロ
プロセッサー173に供給する。
【0033】マイクロプロセッサー173は、制御ファ
ームウエアと印刷アプリケーションソフトウエアを記憶
するフラッシュEPROM174に記憶された命令を実行す
る。電源投入時の自己診断(POST)を終えると、コード
は選択的に高性能512KBDRAM175へ移動する。こ
のDRAM175は、実際の実行では、約80nsのアクセス
時間を持つことが好ましい。後述するように、LAN10
0からフラッシュEPROM174を、再プログラム、つま
り、「フラッシュ」することが可能である。
【0034】図7は、フラッシュEPROM174に記憶さ
れているコードブロック、つまりモジュールの数例を示
す図である。XPLモジュールは、プリンター102とNEB
101間に標準化されたインターフェースを供給する。
MLID(マルチリンクインターフェースドライバ)は、ネ
ットワーク接続の最下層である専用コード(ハードウエ
ア補助モジュール、又はHSM)の一部と共にリンクす
る、Novellコード(メディア補助モジュール、又はMS
M)の一部である。また、LSL(リンク補助層)は、下層
のMLIDとその上層にあるいくつかのプロトコルスタック
間のマルチプレクサとして機能する、Novellコードの一
部である。CNETXは、ローカルDOSのような機能呼び出し
を、OPEN、READ、WRITE、CLOSEのようなファイル機能を
提供するネットワーク機能呼び出しへ変える、専用コー
ドである。
【0035】PRETASKモジュールは、以下に示すよう
に、いかなるフレームタイプが上記の様々なプロトコル
スタックのどれに関連するかを識別する。MEB101は
複数のプロトコルスタックを補助するため、このモジュ
ールはNEB101が作動しているかぎり存在する。Novel
lのIPX/SPXプロトコルスタックは、フラッシュEPROM1
74に含まれており、SAPつまりサービスアドバタイジ
ングプロトコルによって補助されている。SAPは、アク
ティブ及び非アクティブなネットワーク要素をリストに
するファイルサーバーのバインダリー(bindery)へ、
機器がそれ自身を登録できるようにした、Novellのコン
セプトである。プリントサーバーはある特殊なバインダ
リー項目であるため、SAPはNEB101をCPSOCKETを介し
て登録し、また、NEB101がプリントサーバーとして
構成されている場合には、SAPはプリントサーバーをNet
Wareバインダリーにも登録する。
【0036】CPRINTSERVERは、Novellプリントサーバー
アプリケーションが専用に実行する。このモジュールは
自己発生印刷バナー(banner)と、ユーザーへの完了及
び例外状態の通知と、印刷データ及び情報コマンドのプ
リンターエンジンへの送信とを提供する。これは、CPRI
NTSERVERがローカルプリンター(つまり、NEB101が
内蔵されているプリンター102)の作動のみを行い、
遠隔地のRPRINTERを動かすことができないという点で、
Novellのプリントサーバーとは異なる。このプログラム
は、印刷ジョブを継続するための印刷データチャンネル
を所有している。RPRINTERは、NovellのRPRINTERプリン
トアプリケーションが専用実行する。このモジュール
は、Novellプリントサーバーアプリケーションによって
データをLAN100の何処かへ送信する、従属アプリケ
ーションである。
【0037】TCP/IPプロトコルスタックは、その内部に
ユーザーデータグラムプロトコル(UDP)と、逆アドレ
ス分解プロトコル(RARP)と、BootP補助とを持つ。INT
ERRUPTは、TCP/IPタスクの為の割り込み取り扱い部であ
り、TIMERTICKはUNIXのTCP/IPネットワークタスクのた
めのタイマーチック(timer tick)である。LPRINTSERV
ERはTCP/IPプリントサーバーアプリケーションであり、
印刷ジョブを継続するための印刷データチャンネルを所
有している。
【0038】CPSOCKETプログラムは、全てのプロトコル
スタックのために動作する。プログラムは接続リクエス
トや、データダウンロードリクエストや、遠隔地の装置
からのサービスのリクエスト等に応答し、中間処理通信
を介して他のタスクへ状態及び制御を供給する。典型的
なCPSOCKETは、NEB101とプリンター102間の状態
及び制御チャンネルを持っているため、状態チャンネル
を介してプリンター状態を得る機能を持つのは、このタ
スクだけである。CPSOCKETは、Novellオリエントの状態
と制御機器(CPNET)間、又はUNIXオリエントの状態と
制御機器(cpnet)間の、ネットワーク接続及びパケッ
トの内容を取り扱う。MONITORは、タスクの生成と、タ
スクの終了と、マイクロプロセッサーディスパッチ(mi
croprocessor dispatch)とを行う、専用マルチタスク
モニターである。MONITOR はまた、メモリ管理サブモジ
ュールMEMGET及びMEMFREEを持つ。RESIDENTは、NVRAM読
み込み及び書き込み、FLASHコード、ROMベースのデバッ
ガー、ハードウエアタイマーチック、及び他の基本的な
機能などの、一般的なサービスを提供する、ルーチンの
ブロックである。POSTは起動時の自己診断モジュール
で、電源供給開始時のNEBハードウエア及びソフトウエ
アの保全度を確認する。
【0039】フラッシュEPROM174は、ネットワーク
ボードや、ハードウエア構成や、ボード修正番号などに
独特の、メディアアクセス制御(MAC)アドレスのよう
なボード不変の情報及びソフトウエアバージョン番号の
ような可変情報を記憶する、ネットワーク識別ファイル
(NIF)ブロックも記憶する。NIFブロックの情報は、フ
ラッシュEPROM174が互換性の無いイメージデータで
再プログラムされていないことを確認する為に使用され
る。このNIFブロックは、後で図13を参照して詳しく
説明する。
【0040】NEB101とプリンターインターフェース
回路150間の全ての通信は、32KBの共有SRAM20
0を介して行われる。アービター制御論理回路400
は、好ましくは単一の100ピンASICであり、プリンタ
ーインターフェースマイクロプロセッサー151による
2バイト幅のメモリアクセスと、NEBマイクロプロセッ
サー173による1バイト幅のメモリアクセスとの調整
を行う。なお、それぞれのメモリアクセスは、完全に独
立したものである。
【0041】一般的に言えば、マイクロプロセッサー1
73の8ビットデータバスが搭載されたNEB101は、
バス制御論理回路410と通信し、また、マイクロプロ
セッサー151の32ビットデータバスが搭載されたプ
リンターインターフェースカード150はバス制御論理
回路420と通信する。それぞれのバスからのメモリア
クセスは、共有メモリアービター430を経由しておこ
なわれ、この共有メモリアービター430はどちらのバ
スが優先されるべきかを判断し(後で説明するアービト
レーション技術による)、優先権のあるバスがSRAMイン
ターフェース440を介してSRAM200へアクセスする
ことを許可する。割り込み制御レジスタ450は共有メ
モリアービター430を介してアクセスされ、一方のマ
イクロプロセッサーが他方のマイクロプロセッサーへ割
り込めるようにする。 [NEBの機能性]大まかに言えば、NEB101は、プリン
ター102をLAN100へつなぎ、プリンター102を
応答可能でインタラクティブなネットワークメンバーに
する、通話型ネットワーク回路ボードである。NEB10
1は、印刷ジョブ情報及び状態リクエストをLAN100
から受信し、印刷データ及び状態コマンドを実行するた
めにプリンター102へ送信し、状態情報をプリンター
102から受信し、更に、その状態情報をLAN100へ
返す。
【0042】従って、NEB101はRPRINTER遠隔プリン
ターサービス及びPSERVERプリントサーバー機能を実行
するだけでなく、様々な種類の情報及び制御特性をネッ
トワークのメンバーに提供することができる。NEB10
1を介して、ネットワークメンバーは、印刷ジョブの数
や、1つのジョブ当たりのページ数、1分当たりのペー
ジ数、1つのジョブ当たりの時間、1日当たりの全ペー
ジ数、1日当たりのジョブの数など、NEBに記憶されて
いる非常に多くの状態情報にアクセスすることができ
る。更に、例えば、ネットワークに接続されたPCから
プリンターのフロントパネル機能を試験するなど、ネッ
トワークからプリンター102へ、多量の制御情報が供
給されることもある。
【0043】ネットワークトラフィック(network traf
fic)の全ては、トランシーバー171を介してネット
ワーク制御部510とインターフェースするBNCコネク
タ302もしくは、ネットワーク制御部510に直接イ
ンターフェースするRJ−45コネクタ301のどちら
かを介して、NEB101に入出力される。ユーザーがス
イッチの位置を動かす必要性を省くために、NEB101
は、上記2つのうちのどちらのコネクタがネットワーク
につながれているかを自動的に検出する、ハードウエア
及びソフトウエアを含む。ネットワーク通信は、選択さ
れたコネクタとボードの残りとの間で、ネットワーク制
御部510と、選択されたコネクタ上のネットワークト
ラフィックとマイクロプロセッサー173のデータバス
との間のデータの流れを制御する、NEB制御論理回路5
20とを用いて行われる。
【0044】マイクロプロセッサー173によって実行
される全てのソフトウエアモジュールは、フラッシュEP
ROM174に格納されている。タイマーチックやNVRAM読
み込み等のように、常に必要とされる下層モジュールの
いくつかはEPROM174から直接実行することもできる
が、ほとんどの部分について、マイクロプロセッサー1
73はソフトウエアモジュールをフラッシュEPROM17
4から直接実行することはせず、これら必要なモジュー
ルをDRAMから実行する為に、選択的にDRAM175へロー
ドする。こうすることにより、NEB101の構成を柔軟
性のあるものにするために、DRAM175から実行するよ
うにフラッシュEPROM174からリトリーブされるこれ
ら特定のモジュールを選択することができる。
【0045】例えば、多くの通信プロトコルタイプがLA
N100でブロードキャストされているため、NEB101
はそのフラッシュEPROM174中に、多重プロトコルを
補助するためのソフトウエアモジュールを持つ。NEB1
01は、使用されているプロトコルのタイプを判定する
ために、異種ネットワーク上のネットワークトラフィッ
クを観察し、判定したプロトコルに対応するプロトコル
スタックをDRAM175へロードする。
【0046】新しいプロトコルスタックを含む可能性の
ある新しいイメージデータでフラッシュEPROM174を
再プログラムすることは、DRAM175を介しても行われ
る。ネットワーク又はシリアルポートコネクタ600か
ら受信されるコマンドなどの、再プログラムの為の新し
いイメージデータ及びコマンドが受信されると、ソフト
ウエア再プログラムモジュールがEPROM174からDRAM
175へロードされる。マイクロプロセッサー173
は、このモジュールをDRAM175から実行し、新しいフ
ァームウエアイメージデータがNEB101の構成と互換
性があることを確認し、互換性があると判断すると、EP
ROM174を以下に詳しく示すように、再プログラムす
る。
【0047】DRAM175からロードされたプロトコルス
タックを実行するマイクロプロセッサー173は、その
プロトコルを使用している他のLANメンバーと、ネット
ワーク通信を行うことができる。印刷ジョブデータはネ
ットワーク制御部510によって受信され、NEB制御論
理回路520を介してマイクロプロセッサー173へ送
られる。マイクロプロセッサー173は、その印刷ジョ
ブデータを共有メモリSRAM200へ書き込み、プリンタ
ーマイクロプロセッサー151はその共有メモリSRAM2
00からデータを読み出し、そのデータに従ってプリン
ターエンジン160を操作する。更に、マイクロプロセ
ッサー173及び151は、それぞれお互いのマイクロ
プロセッサーの共有メモリの他の部分に、メッセージデ
ータを書き込むことができる。
【0048】上記に説明したとおり、共有SRAM200へ
のアクセスは、調停優先順位技術に基づいて、アービタ
ー制御論理回路400によって調停される。アービター
制御論理回路400は、マイクロプロセッサーが共有SR
AMに先着順にアクセスすることを許可し、また、高優先
プロセッサーがアクセスを行っている間に待機状態を低
優先プロセッサーに示すことにより、2つのマイクロプ
ロセッサーの同時アクセスを互いにインターリーブす
る。2つのマイクロプロセッサーが全く同時にアクセス
した場合には、NEB101のマイクロプロセッサー17
3が任意に優先される。
【0049】共有SRAM200の大部分はリングバッファ
として構成され、NEBマイクロプロセッサー173はそ
こに印刷データを書き込み、プリンターインターフェー
スマイクロプロセッサー151はそこから印刷データを
読み込む。それぞれのプロセッサーがデータブロックを
書き込み又は読み込む度に、プロセッサーがアクセスす
べき次の場所を示すために、SRAM200の他の場所に記
憶されている「プット(put)」ポインターまたは「ゲ
ット(get)」ポインタをそれぞれ更新する。
【0050】この構成により、プットポインタ及びゲッ
トポインタをお互いに比較することにより、書き込みプ
ロセッサーは書き込み可能な領域がメモリ中にあるか否
かを判断することができ、読み込みプロセッサーは読み
込むべき残りのデータが存在しているか否かを判断する
ことができる。この2つのプロセッサー間の共有メモリ
の競合の回数を減らすために、NEBマイクロプロセッサ
ー173は所定の時間、メモリへの書き込みを停止し
(これに伴い、読み込み及びポインターの更新を停止す
る)、プリンターインターフェースマイクロプロセッサ
ー151が追い付くまで、プロセッサー151が単独で
メモリにアクセスするようにする。この動作は後で詳し
く説明する。
【0051】シリアルポートコネクタ600は、NEB1
01を外部コンピューターからデバッグできるようにす
るために設置される。シリアルポートコネクタ600
は、NEB制御論理回路520につながれており、シリア
ルポートコネクタ600のデータ受信ピン601からシ
リアルデータを受け付け、マイクロプロセッサー173
とビット単位でシリアルデータを通信する。また、シリ
アルデータの最初のビットが、そのマイクロプロセッサ
ー173のマスク不可能な割り込みを作動させるよう
に、マイクロプロセッサー173はNEB制御論理回路5
20を構成する。そして、マイクロプロセッサー173
はシリアルデータのデータビットを8ビットのワードに
組み立てる。更に、NEB制御論理回路520はマイクロ
プロセッサー173のデータバスを監視し、そのデータ
バス上に存在するデータのシリアル列を、シリアルポー
トコネクタ600のデータ送信ピン602へ渡す。この
動作は後に詳しく説明する。 [ネットワークハードウエア接続の自動検出]ネットワ
ークインターフェースカードは、一般的に、ネットワー
クケーブルをLANへ接続する為の、数種の異なるタイプ
の物理的接続手段を提供する。例えばNEB101は、1
0BASE−2同軸ケーブルをつなぐことのできるBNCコネ
クタ302及び、10BASE-T非シールドツイストペア
(UTP)線をつなぐことのできるRJ−45コネクタ3
01を有する。シールドツイストペア(STP)線の為のI
BMデータコネクタや光ファイバーケーブルの為のST光
ファイバーコネクタ等、他の物理的接続も可能である。
【0052】典型的には、ネットワークインターフェー
スカードが数個のコネクタの一つを介してLANに接続さ
れたときは、LANとの接続を設定又は変更するユーザー
は、データが適切なコネクタを通してやり取りされるよ
うに、LANケーブルを適切なコネクタに挿入しなければ
ならないだけでなく、ハードスイッチ、又は「ジャンパ
ー(jumpers)」の位置を物理的に変更しなければなら
ない。
【0053】しかし、ユーザーの手違いによって、ジャ
ンパーを変更することを忘れる可能性や、設定された接
続にそぐわない状態にジャンパーを変えてしまう可能性
がある。そのような場合、言うまでもなく、カードはネ
ットワークと全く会話することができない。これらの問
題を弁別して訂正するために、時間や、人力や、コンピ
ュータ資源を無駄に費やす結果となる。どのコネクタが
LANに接続されているかを自動的に感知し、そのコネク
タを通してデータをやり取りするネットワークインター
フェースカードは、接続の設定及び/又は変更処理を大
幅に能率的にする。
【0054】本発明は、テストによって上記のようにハ
ードウエアを自動検出し、コネクターそれぞれのネット
ワークへの接続性を調べ、そして一つのコネクターを選
択することにより、ネットワーク通信がその選択された
コネクタとボード上のプロセッサ間で行われるようにす
る。概略としては、ネットワーク制御部は、第1のコネ
クタがネットワークに電気的に接続されていることを検
出する第1検出部と、第2のコネクタが不適切に終端し
ていることを示す「ジャバー(jabber)」ビットを記憶
する、プロセッサーが読み出すことのできる第1レジス
ターとを含む。やはりプロセッサーが読み出すことので
きる第2レジスターは、前記第1検出部が第1のコネク
タがネットワークに電気的に接続されていることを検出
したことを示す、「リンク良好(good-link)」ビット
を記憶する。また、プロセッサーが書き込むことのでき
る制御レジスタは、選択ビットを記憶する。この制御レ
ジスタは、記憶されている選択ビットに応じて選択信号
を出力する。
【0055】マイクロプロセッサーはソフトウエアによ
って制御される選択処理を次の方法によって実行する。
即ち、(1)第1のコネクタ(ここではRJ−45、コ
ネクタ301)を選択する選択信号を出力させるよう
に、制御レジスタに選択ビットを書き込み、(2)リン
ク良好ビットを第2レジスタから読み出し、(3)リン
ク良好ビットがネットワークへの電気的な接続を示す時
に選択ビットの状態を保持し、(4)リンク良好ビット
がネットワークへの電気的な接続を示さない時に、第2
のコネクタ(ここではUTP、コネクタ302)を選択す
る選択信号を出力させるように、制御レジスタに選択ビ
ットを書き込み、(5)ジャバービットを第1レジスタ
から読み込み、(6)ジャバービットが第2コネクタの
電気的に不適切な終端であることを示さない場合に、選
択ビットの状態を保持し、(7)ジャバービットが第2
コネクタが電気的に不適切な終端状態にあることを示す
場合に、選択処理を繰り返す。この手順により、それは
ボードの電源が投入されてしばらくたった後に、選択処
理を行なうことができる。一度選択されると、ボードに
電力が供給されている間中保持される。
【0056】具体的には、図8を参照して説明すると、
BNCコネクタ302(トランシーバー171を介して)
と、RJ−45コネクタ301は、それぞれネットワー
ク制御部510のセレクタ511につながれている。ネ
ットワークトラフィックは、セレクタ511の状態に応
じて、バス181及びBNCコネクタ302又はRJ−4
5コネクタ301を介して、マイクロプロセッサー17
3に入出力される。セレクタ511の位置は、制御レジ
スタ521の出力によって判断される。
【0057】RJ−45コネクタ301がLANに接続す
ると、電流がコネクターに供給される。従って、ネット
ワーク制御部510は、RJ−45コネクタ301が電
気的にLAN100に接続されていることをRJ−45コ
ネクタ301が判断するところを監視する、リンク良好
検出部512を含む。83902ネットワーク制御部に
おいては、リンク良好検出部512は、開放ドレイン型
(open drain)のN−チャンネルデバイスとして構成さ
れている。電流がRJ−45コネクタ301で検出され
ると、リンク良好検出部512からの出力は低くなり、
状態LED305が点灯することにより、電気的に接続し
ていることを示す。反対に、RJ−45コネクタ301
に電流がない場合、リンク良好検出部512からの出力
は高くなり、状態LED305は消灯する。リンク良好ビ
ットは、NEB制御論理回路520のリンク良好レジスタ
522にも入力される。これにより、マイクロプロセッ
サー173はリンク良好信号の状態を読み込めるように
なる。
【0058】BNCコネクタ302などのBNCコネクタは、
例えば、LANにT−タイプの同軸アダプタを用いてつなが
れたときなど、コネクタが適切に終端するまでジャバー
し続ける。ネットワーク制御部510は、当業者に知ら
れる方法でBNCコネクタ302でジャバリングがあるか
どうかを検出するジャバー検出回路513を含み、その
検出結果をジャバーレジスター514に書き込む。従っ
て、ジャバーレジスタ514は、BNCコネクタ302が
適切に終了したか否かを示すビットを含む。そして、こ
のジャバービットはソフトウエアによって読み込まれ
る。
【0059】マイクロプロセッサー173は、フラッシ
ュEPROM174に格納されているソフトウエアモジュー
ルを実行することによって、セレクタ511の状態を制
御する。制御の方法は、以下に図9のフローチャートを
参照にして説明する。NEB101が投入された後(ステ
ップS900)、マイクロプロセッサー173は、0を
制御レジスタ521にバス181を介して書き込むこと
により、セレクタ511をRJ−45の位置へ設定する
(ステップS901)。プログラムはリンク良好レジス
タ522の状態を読み込み(ステップS902)、そし
て、リンク良好レジスタ522に記憶されたビットが低
レベルならば(電流を示唆する)、プログラムはRJ−
45コネクタ301がLAN100に接続され、処理を抜
けて、セレクタ511をRJ−45の位置に残しておく
(ステップS903、S904)。
【0060】リンク良好検出部512を構成するN−チ
ャンネルデバイスのスイッチングにおいて、固有の遅れ
があるために、電気的接続を検出するための充分な時間
をリンク良好検出部512に与えることが必要である。
従って、リンク良好レジスタ522に記憶されているビ
ットが高レベルならば(電気的接続がないことを示
す)、プログラムはリンク良好レジスタ522を繰り返
し読み込み、読み出した内のどれかが低レベルならば、
処理を抜けて、セレクタをRJ−45の位置に留めてお
く(ステップS905−S906−S902)。しか
し、読み込みを500回繰り返してもリンク良好レジス
タ522に記憶されているビットが高レベルである場合
は、プログラムは1を制御レジスタ521へ書き込むこ
とによって、セレクタ511をBNCの側に設定する(ス
テップS907)。
【0061】そして、プログラムはジャバーレジスタ5
14を読み込む(ステップS908)。ジャバーレジス
タ514の状態が低レベルならば(BNCコネクタ302
が適切に終端し、BNC接続があることを示す)、プログ
ラムは処理を抜けて、セレクタ511をBNCの側に残し
ておく(ステップS909及びS910)。ジャバービ
ットの状態が高レベルの場合(BNCコネクタ302が不
適切に終端し、LAN100に接続されていないことを示
す)、プログラムはステップS901へ戻り、セレクタ
511をRJ−45の位置へリセットする。そして、R
J−45又はBNC接続が設定されるまで、プログラムは
定期的に再実行される。
【0062】このように、NEB101はBNCコネクタ30
2とRJ−45コネクタ301の間を断続し続け、特定
のコネクタがLAN100に接続されたことをトグルする
度に確認する。この構成により、電源投入時(及び接続
がなされるまで)に、NEB101は、操作者が実際にス
イッチを変えることを必要とせずに、そのBNCコネクタ
302又はRJ−45コネクタ301がネットワークに
接続されたか否かを判断することができる。従って、NE
B101が、LAN100につながれていないコネクタを通
してLAN100と通信しようとする可能性がなくなる。
【0063】本実施の形態において、電力が供給されて
いる現サイクル中、選択されたハードウエア接続は保持
される。電力が供給されている現サイクル中において選
択がなされた後に、ハードウエア接続が有効でなくなっ
たときを感知し、選択処理を繰り返し、コネクタを変更
することを許可するソフトウエアを実行することは可能
である。これにより、一つの接続から他の接続へのダイ
ナミックな切り換えを可能にする。 [ネットワークプロトコルセンサー]マルチプロトコル
システムにおける適切な操作を確実にし、またネットワ
ーク上で使用されるプロトコル及びフレームタイプに関
する不適切な前提を作らせないようにするために、NEB
101は、ネットワークトラフィックで使用されるフレ
ームタイプを決定し、NEB101が使用することのでき
る数種の異なるプロトコルのうちのある一つにこれらの
フレームタイプを関連させるための自動プロトコル判断
を使用する。特に、フラッシュEPROM174に格納され
ているPRETASKモジュールの使用を通じて、NEBマイクロ
プロセッサー173は、どのフレームタイプがネットワ
ークトラフィックのために使用されているかを判断し、
そのフレームタイプを数種の異なるプロトコルの一つに
関連づけ、そのプロトコル及び検出されたフレームタイ
プを使用したネットワーク通信を続けるために、フラッ
シュEPROM174からプロトコルスタック(IPX/SPX又は
TCP/IP等)をロードすることができる。
【0064】図10乃至図14は、この処理を説明する
為の図である。図10は、フラッシュEPROM174にロ
ードされたPRETASKソフトウエアモジュールに基づい
て、NEBマイクロプロセッサー173によって実行され
る処理ステップを示すフローチャートである。PRETASK
は、異なってはいるが、PRESCANソフトウエアモジュー
ルに似ている。PRESCANソフトウエアモジュールは、審
査中の特許出願番号第07/978,409の、「ロー
カルエリアネットワーク上で扱われるデータパケットの
形式を適応判断する方法及び装置(Method And Apparat
us For Adaptively Determining The Format Of Data P
ackets Carried On A Local Area Network)」に示され
ている通りである。
【0065】ステップS1001で、マイクロプロセッ
サー173はMLID(マルチリンクインターフェースドラ
イバ)をフラッシュEPROM174からDRAM175へロー
ドし、MLIDを実行開始する。上記のとおり、MLIDはネッ
トワークと通信する、最下層ソフトウエアである。した
がって、MLIDはネットワーク線上で扱われるネットワー
クフレームパケットへの直接のソフトウエアインターフ
ェースとして振る舞う。
【0066】ステップS1002において、マイクロプ
ロセッサー173はMLIDの上層にLSL(リンク補助層)
をロードし、LSLを実行開始する。LSLは、下層のMLIDと
その上層にロードされる様々なプロトコルスタックとの
間の、マルチプレクサとして機能する。特に、LSLは、
ネットワーク上でフレームパケットを運ぶ、様々なフレ
ームタイプの登録を受け入れる。従って、例えばEthern
et環境では、LSLは802.2、802.3、Ethernet_
II、Ethernet_Snap等の登録を受け入れ、またToken-rin
g環境では、LSLは802.5、及びToken_Ring_Snapの
登録を受け入れる。フレームタイプをLSLに登録するこ
とにより、LSLより上層のソフトウエアモジュールは登
録されたフレームタイプに適合する全てのフレームパケ
ットをモジュールに供給するように、LSLに命令する。
【0067】ステップS1003において、マイクロプ
ロセッサー173はLSLより上層にPRETASKをロードす
る。上記のとおり、PRETASKは、NEB101が通信を受け
入れられた様々なプロトコルに、どのフレームタイプが
関連するかを識別する。ステップS1004で、LSLか
ら受信するために、PRETASKはMLIDにサポートされた全
てのフレームタイプを登録する。従って、本実施の形態
におけるEthernet環境では、PRETASKは802.2、8
02.3、Ethernet_II、Ethernet_SnapをLSLに登録
し、これにより、登録されたフレームパケットに適合す
る全てのフレームパケットをPRETASKに供給するよう
に、LSLに命令する。
【0068】処理はステップS1005へ進み、MLIDと
LSLはネットワークのトラフィックを監視する。特に、
ステップS1005では、ネットワークはブロードキャ
ストトラフィック手段を監視して、トラフィックの行き
先が決定されていない(つまり、行き先はどこでもよ
い)ことを観察する。通常、ブロードキャストトラフィ
ックは、行き先のMACアドレス、例えば16進法のFが
12並んでいるアドレスなどのグローバルな特定によっ
て識別される。LANブロードキャストトラフィックが検
出されるまでは、PRETASKは何もしない。
【0069】PRETASKを実行中のこの時点では、様々な
ソフトウエアモジュールの関係は図11に示すとおりで
ある。図から分かるように、それぞれが異なるフレーム
タイプを用いる異なるプロトコルを起動している機器1
82、183、184、及び185などの複数のネット
ワーク機器全てが、一つのLAN100に接続する可能性
がある。図11において、機器182はNovelタイプの
機器で802.2フレームタイプを使用するIPX/SPXプ
ロトコルを起動しており、機器183はUNIXタイプのネ
ットワーク機器でEthernet_IIフレームタイプを使用す
るTCP/IPプロトコルを起動しており、機器184はMaci
ntoshタイプの機器でEthernet_Snapフレームタイプを使
用するEtherTalkプロトコルを起動しており、機器18
5は不明のフレームで、802.3フレームタイプを使
用するプロトコル機器である。言うまでもなく、図11
に示す組み合わせは図示のためだけのものであり、これ
に限られるものではなく、例えば、NovellのIPX/SPXが
802.3フレームタイプ又は他のフレームタイプを使
用することも可能である。ただし、それぞれのプロトコ
ルが唯一のフレームタイプにのみ、関連づけられなけれ
ばならない。
【0070】NEB101はまたLAN100に接続されてお
り、MLID186の上層にロードされたLSL187を含
む。PRETASK188は、LAN100上にブロードキャスト
される異なるフレームタイプをそれぞれ登録したものと
して示されている。従って、図11に示すように、PRET
ASK188は、802.2を189に、Ethernet_IIを1
90に、Ethernet_Snapを191に、そして802.3
を192に登録している。
【0071】LANブロードキャストトラフィックが検出
されると、ステップS1006へ進み、LSLはPRETASKへ
フレームパケットを供給する。ステップS1007で、
そのフレームパケットで使用されているプロトコルを識
別するために、PRETASKはフレームのプロトコルのヘッ
ダを復号する。このヘッダへのオフセットは、プロトコ
ルが使用しているフレームタイプによって異なる。下記
のテーブルは16進法による値と、異なるプロトコルを
識別するためのプロトコルのヘッダの数例を含む。 16進法値 プロトコルタイプ 0800 IP 0806 ARP 809B EtherTalk 8137 IPX/SPX 図12はこの手順を示す。図12から分かるように、ネ
ットワーク機器182は、802.2フレームタイプを
使用するブロードキャストフレームパケットを発する。
図11の189にPRETASKはLSLに802.2を登録して
いるため、LSLはそのフレームパケットをPRETASKに提供
する。そのフレームタイプで使用されているプロトコル
を判定するために、PRETASKは上記のテーブルを使用し
てそのフレームのプロトコルのヘッダーを復号する。
【0072】図10のステップS1008において、PR
ETASKは、LSLから受信したばかりのフレームタイプの登
録を取り消す。従って、図12の189aに示すとお
り、PRETASKは802.2の登録を取り消す。ステップ
S1008では、全ての場合に登録を取り消す場合を示
しているが、登録を取り消さないほうがより好ましい場
合もある。特に、それぞれ異なるプロトコルがそれに関
して、受け入れ可能なフレームタイプのリストを持つ場
合である。IPX/SPX及びTCP/ITの受け入れ可能なフレー
ムタイプの例を以下に示す。 IPX/SPX TCP/IP Ethernet_II Ethernet_II Ethernet_Snap Ethernet_Snap 802.2 802.3 上記のリストから、2つのフレームタイプ(Ethernet_I
IとEthernet_Snap)が、異なるプロトコルで使用可能で
あることが分かる。なお、同じフレームタイプを同じLA
N上の異なるプロトコルで使用してもよい。従って、好
ましいモードでは、ステップS1006でPRETASKによ
って受信されたフレームタイプがLSLに登録されていな
いプロトコルで使用可能な場合は、ステップS1008
の登録取消は行われない(後に示すステップS1010
を参照)。後で受信されたプロトコルをロードするため
に、先に登録されたものと異なる、後で受信されたプロ
トコルのフレームタイプをPRETASKによって適切に検出
し、処理することができるため、この好ましいモードで
は、LANで使用することのできる全てのプロトコルの検
索及び操作をすることができる。
【0073】ステップS1009において、PRETASK
は、ステップS1007で復号したプロトコルに対応す
るプロトコルスタックをロードする。図12の例では、
IPX/SPXプロトコルが復号されたので、PRETASKはフラッ
シュEPROM174からIPX/SPXプロトコルスタックをロー
ドする。ロードする前に、プロトコルスタックは、LSL
から受信したばかりのフレームタイプ、ここでは80
2.2で初期化される。
【0074】ステップS1010では、新たにロードさ
れたプロトコルスタックは、例えば図13に示すよう
に、LSLに登録される。図に示すように、IPX/SPXプロト
コルスタックは802.2をLSLに登録する。上記のよ
うに登録することによって、登録されたフレームタイプ
(ここでは802.2)に適合する全てのフレームパケ
ットを新たにロードされたプロトコルスタックに提供す
るように、IPX/SPXは、LSLに通知する。
【0075】そして、ブロードキャストトラフィックの
ために引き続きネットワークを観察するために、PRETAS
KはステップS1005へ戻る。LSLが、PRETASKによっ
て登録された残りのフレームタイプに適合するフレーム
パケットを見つけると、LSLは、図10に示す処理を行
うためにこれらのフレームタイプをPRETASKに供給す
る。このように、例えばTCP/IPプロトコルに関連するフ
レームタイプのような追加フレームタイプが見つかる度
に、フラッシュEPROM174から適切なプロトコルスタ
ックがロードされるように、これらのフレームはPRETAS
Kによって処理される。
【0076】また、図14に示すように、プロトコルス
タックは既にロードされているため、ネットワーク上で
の操作を開始する。特に、PRETASKが完全に受け身で、
ネットワーク通信をブロードキャストしないのに対し、
IPX/SPXはそれに関するSAPリクエストをブロードキャス
トする。PRETASKによってロードされた他のプロトコル
タスクは、それらに関連するリクエストをブロードキャ
ストしてもよい。例えば、TCP/IPプロトコルスタックが
ロードされた場合、最も近くのネットワークサーバーか
らそのアドレスを得るために、RARPSをブロードキャス
トする。 [スマートフラッシュ]ローカルエリアネットワークが
より複雑になるにつれて、NEB101のようなネットワ
ークインターフェースカードを、最新の技術を用いてグ
レードアップする必要性が出てきた。従って、NEB10
1は操作用ソフトウエアに組み込まれているため、その
ソフトウエアを後でLAN100から再プログラムするこ
とができる。例えば、ネットワーク統括者は、統括者の
PC103から新しいデータをダウンロードすることに
よって、フラッシュEPROM174のROMファームウエアイ
メージデータを遠隔操作で変更することができる。その
新しいデータは、例えば、パッチコードと、製造テスト
ルーチンと、ファームウエア全体の更新と、異なる言語
バージョンとを含む。
【0077】典型的なPCは、2つ以上のLANに接続さ
れている。例えば、図15に示すように、PC103は
EthernetのLANであるLAN100と、Token-ringLANであ
るLAN193とに接続しており、実際に両ネットワーク
のネットワーク統括者用PCとして機能してもよい。そ
れぞれのLANはまた、独立したNEBをそれぞれ内蔵する複
数のプリンターに接続されていてもよい。また、他の再
プログラム可能な機器を、これらのLANの一方又は両方
に接続することもできる。従って、ネットワーク統括者
が潜在的に再プログラムすることができる、複数のNEB
や他の機器がある。
【0078】ある特定のNEBを再プログラムする場合、
ネットワーク統括者はPC103から、ネットワークに
接続されている全てのネットワーク機器から適切なフラ
ッシュターゲットを識別するために、そのネットワーク
のバインダリーをスキャンするためのプログラムを稼働
する。適するフラッシュターゲットは、フラッシュ機能
を持ち、Ethernet機器及びToken-ring機器を含む、NEB
のような機器を全て含む。ネットワーク統括者は、再プ
ログラムのために機器の一つを選択し、その機器とのネ
ットワーク通信を確立する。そしてボード上のフラッシ
ュEPROMは、新しいイメージデータでそれ自身を再プロ
グラムする。
【0079】ネットワーク統括者が、ネットワークに接
続されたいくつかの再プログラム可能ボードをそれぞれ
含む、2つ以上のネットワークを統括している場合があ
るため、統括者は適切なイメージデータが目的のNEBに
送られたことを確認しなければならない。従って、ネッ
トワーク統括者が、NEB101上のフラッシュEPROM17
4を再プログラムしたい場合(NEBはEthernet LANに接
続されている)、送信するイメージデータがEthernetイ
メージデータであることを確認し、NEB101の他の機
能と互換性があることを確認しなければならない。
【0080】互換性がないイメージデータをダウンロー
ドした結果は、破壊的なものでありうる。例えば、ネッ
トワーク統括者が誤ってToken-ringイメージデータをNE
B101にダウンロードし、その後にNEB101がフラッ
シュEPROM174をそのイメージデータで再プログラム
した場合、フラッシュEPROM174はEthernet LAN10
0上で通信を行うことが全くできなくなる。これはつま
り、NEB101がLAN100から再プログラムすることさ
えできないことを意味する。Ethernet LANに関しては全
く「役立たず」のボードとなるわけである。例えば、ホ
ストインターフェース構成(NEBとそれが内蔵されてい
る周辺機器間のインターフェースのタイプ)や、製品構
成(NEBのボードのタイプ)や、プロセッサー構成(ボ
ード上のプロセッサーのタイプ及び速度)や、メモリ構
成(ボードメモリ上の様々な部品のサイズ及び消去性)
における非互換性は、問題となる可能性がある。従っ
て、ある製品の前世代のものがある場合、新しい世代の
ものでしか動かないフラッシングソフトウエアはやはり
「役立たず」のボードとなってしまうのである。
【0081】互換性のないイメージデータがダウンロー
ドされた場合にこのような悲惨な結果を招かないように
するために、NEB101は、実際に再プログラムが行わ
れる前に、ダウンロードされたイメージデータが互換性
のあるものであるかを確認するソフトウエアコードを含
む。具体的には、NEB101のフラッシュEPROM174
は、NEB101のための構成情報を含むネットワーク情
報ファイル(NIF)ブロックを含む、現プログラムイメ
ージデータと、フラッシュEPROM174を再プログラム
するためのソフトウエアモジュールとを記憶する。マイ
クロプロセッサー173はネットワーク通信を送受信
し、そして新しいプログラムイメージデータをネットワ
ークから受信した時に、マイクロプロセッサー173は
その新しいプログラムイメージデータをDRAM175へダ
ウンロードし、その新しいプログラムイメージデータが
NIFブロック中の構成情報と互換性があることを確認
し、そして、互換性が確認された場合に限ってフラッシ
ュEPROM174を再プログラムする。
【0082】更に詳しくは、NIFブロックは、恒常的な
アダプタ特有の構成情報を含み、それぞれの個別のNEB
に特有のものである。一例としては、NIFブロックはフ
ラッシュEPROM413中のメモリスペースのうち32バ
イトを占め、それぞれ8バイトの4バンクに分けられ
る。図16に示すように、NIFブロックは、MACアドレス
情報バンクと、ボードバージョン及び識別情報バンク
と、構成要素識別情報バンクと、一般情報バンクとを含
む。MACアドレス情報バンクは、その名が示すとおり、
ボードに特有のMACアドレスを記憶する。ボードバージ
ョン及び識別情報バンクは、4つのバンクに更に分割さ
れる。NEB以外のネットワークインターフェースカード
をLANにつなぐことも可能なため、製品カテゴリーバン
クはLANにつながれた製品のタイプを識別し、そしてボ
ード修正バンクは製品の修正番号を識別する。
【0083】ネットワーク物理的媒体バンクは更に2つ
のバンクに分割される。これらは、ボードが使用されて
いる物理的媒体(例えば、Ethernet、Token-ring、FDDI
など)を識別する物理的ネットワークバンクと、ボード
が補助する物理的コネクタ(例えば、Ethernetネットワ
ークの場合は10baseTと、10base2と、10base
5、そしてToken-ringの場合はUTP及びSTP)のタイプを
識別する補助接続バンクである。ホストインターフェー
ス方法バンクでは、ボードを内蔵する周辺機器(NEB1
01の場合は、プリンター102等)へのインターフェ
ースのタイプを識別する。これらのインターフェースタ
イプの例としては、共用RAMや、小型コンピューターシ
ステムインターフェース(SCSI)や、標準パラレルイン
ターフェースや、RS−232Cシリアルインターフェ
ースや、セントロニクスパラレルインターフェース等が
ある。
【0084】構成要素識別情報バンクもまた、いくつか
の更に小さいバンクに分けられている。これらのバンク
は、ボード上のROMや、DRAM及びNVRAMのサイズ及び細か
さと、ROMの消去性を識別する。また、ネットワーク制
御部(Ethernetの場合はDP83902チップ、Token-
ringの場合はTI389C25)及びホスト制御部(調停
された共用RAM、NCR53C90A SCSIコントローラ
ー又はNCR53C80 SCSIコントローラー)が識別
される。CPU識別バンクには、プロセッサーのタイプと
クロックスピードが記憶される。最後に、一般情報バン
クは、ハードウエア修正レベル等、ボードに関する追加
構成属性を識別するための他のデータを記憶する。
【0085】次に図17のフローチャートを参照して説
明する。ネットワーク統括者のPC上のCPFLASHプログ
ラムがバインダリーをスキャンしたときに、NEB101
のフラッシュEPROM174の再プログラミングが開始さ
れ(ステップS1401)、潜在的なフラッシュターゲ
ットのリストを統括者に表示する。統括者はターゲット
を選択し(ステップS1402)、CPFLASHはそのター
ゲットとの通信を確立して、新しいフレームウエアイメ
ージデータをLANへダウンロードし、NEBのDRAM175に
記憶する(ステップS1403)。
【0086】一度新しいイメージデータがDRAM175に
ダウンロードされると、現在実行されているプロトコル
スタックはプログラムされようと(少なくとも潜在的
に)しているので、プログラムされている間はネットワ
ーク通信を行うことができないので、NEBマイクロプロ
セッサー173は、そのプロトコルスタックをインアク
ティブにする(ステップS1404)。マイクロプロセ
ッサー173は次に、現在のNIFブロックをフラッシュE
PROM174からDRAM175にコピーし(ステップS14
05)、ソフトウエア再プログラミングモジュールを実
行する。
【0087】そして、ソフトウエア再プログラミングモ
ジュールは、新しいイメージデータが互換性があること
を確認するために、現イメージデータNIFブロックに記
憶されている情報(DRAM175にコピーされた情報)を
参照して、その情報を新しいフレームウエアイメージNI
Fブロックに記憶されている情報と比較して、イメージ
データが互換性チェックを行う(ステップS140
6)。NIFブロックはNEB101に関する多量の情報を持
っているため、様々なチェックを行うことによってこの
ような互換性を判断することができる。
【0088】最初の互換性チェックは、NIFブロックの
物理的ネットワークバンクに記憶されたデータを参照す
ることによって行う、新しいイメージデータが正しいネ
ットワーク媒体のタイプか否かを判断するためのネット
ワーク媒体構成チェックを含む。同様に、2番目の互換
性チェックは、NIFブロックのホストインターフェース
方法バンクとホストインターフェース制御部バンクに記
憶されたデータと新しいイメージデータとを比較するこ
とによって行う、新しいイメージデータが適切なホスト
(例えば、共有RAM又はSCSI)にインターフェースする
ためのイメージデータであるか否かを判断するためのホ
ストインターフェース構成チェックを含む。
【0089】3番目の互換性チェックは、NIFブロック
の製品カテゴリーバンクとボード修正バンクを参照し、
そのデータを新しいイメージデータと比較することによ
って行われる、新しいイメージデータがEPROMが内蔵さ
れたボードのタイプの為のものであるか否かを判断する
ための製品構成チェックを含む。また、プロセッサー構
成チェックは、新しいイメージデータがボード上のプロ
セッサーと互換性があるか否かを判断するために、NIF
ブロックのCPUバンクを参照することによって行なうこ
とができる。更に、メモリ構成チェックは、新しいイメ
ージデータがボードのメモリと互換性があるか否かを判
断するために、NIFブロックのROMバンク、DRAMバンク、
及び/又はNVRAMバンクに記憶されているデータを新し
いイメージデータと比較することによって行なうことが
できる。NIFブロックに記憶された他の情報を使用する
ことによって、他の互換性チェックを行うこともでき
る。
【0090】新しいイメージデータが互換性が無いと判
断された場合、現プロトコルスタックは再度アクティブ
にされ(ステップS1407、S1408)、LAN10
0を通して、ネットワーク統括者のPC103にエラー
を告げ、互換性が無いイメージデータを用いてNEB10
1を再プログラムする試みがなされたことを知らせる
(ステップS1409)。
【0091】反対に、新しいイメージデータが互換性が
ある場合、ボード特有の情報(MACアドレスやボード修
正番号等)を保持するために、新しいイメージデータの
NIFブロックのボード不変部分が、現イメージデータのN
IFブロックの対応する部分で置き換えられる(ステップ
S1407とS1410)。そしてプログラムは現イメ
ージデータをフラッシュEPROM174から消去し、上記
の処理によってオリジナルのNIFブロックを含んでい
る、DRAM175に記憶された新しいイメージデータでフ
ラッシュEPROM174を再プログラムする。
【0092】この構成により、互換性の無いイメージデ
ータが誤ってLAN100からダウンロードされた場合で
も、マイクロプロセッサー173が、互換性の無いイメ
ージデータでフラッシュEPROM174を再プログラムす
ることがなくなる。そればかりか、ネットワーク統括者
が互換性の無いイメージデータでNEB101を再プログ
ラムしようとした場合、NEB101は、互換性の無いこ
とを知らせるメッセージをネットワーク統括者に送る。
従って、このような人的なエラーに対応する、失敗する
ことのないメジャーが、安価で効率的な方法で供給され
る。 [アービトレーション機器]図18乃至図20は、プリ
ンターインターフェースカード150又はボード上のNE
Bマイクロプロセッサー173からのアクセスリクエス
トに応答した、共有SRAM200のアービトレーションを
説明する図である。
【0093】図18は、プリンターアドレス/データバ
ス(A/Dバス)701と、印刷アドレスラッチイネーブ
ル(ALE)信号702と、プリンターデータイネーブル
(DEN)信号704と、プリンタークロック線705
と、プリンター準備完了信号706とを示す。これらの
信号は全て、プリンターインターフェースコネクタ17
0を介して、プリンターインターフェースカード150
から受信される。具体的には、例えば、A/Dバス701
は、プリンターインターフェースカード150に搭載さ
れたプリンターマイクロプロセッサー151の為のA/D
バスである。プリンターALE信号702は、有効なアド
レス情報がA/Dバス701上で運ばれた時を示す信号で
あり、そして、プリンターDEN信号704は、有効デー
タ情報がA/Dバス701上で運ばれた時を示す信号であ
る。プリンタークロック705はプリンターマイクロプ
ロセッサー151の為の主要クロック信号で、プリンタ
ー準備完了信号706は、それが「偽」である場合に、
メモリアクセスが完了していないことと、メモリアクセ
スが完了するまで続けるように、マイクロプロセッサー
151が待機状態を挿入しなければならないことを示す
信号である。
【0094】また、図15には、NEBアドレス/データ
バス(A/Dバス)711と、NEB ALE信号712と、読み
込み及び書き込み信号(WR及びRD)714と、NEB
クロック715と、NEB準備完了信号716とが示され
ている。NEB A/Dバス711は、マイクロプロセッサー
173のための主要アドレスバスであり、NEB101に
搭載された全ての構成要素のアドレス及びデータ情報を
運ぶ。NEB ALE信号712は、有効なアドレス情報がA/D
バス711上に現われた時を示す信号であり、読み込み
及び書き込み信号714は有効データ情報がA/Dバス7
11上に現われた時を示し、さらに、そのデータを読み
込むか書き込むかを示す信号であり、NEBクロック71
5は水晶発振機172によって供給される主要クロック
信号であり、NEB準備完了信号716は、それが「偽」
である場合に、メモリアクセスがまだ行うことができな
いことと、メモリアクセスを行えるようになるまでマイ
クロプロセッサー173が待機状態を挿入するように、
NEBマイクロプロセッサー173に知らせる信号であ
る。
【0095】上記のとおり、プリンターマイクロプロセ
ッサー151とNEBマイクロプロセッサー173は、共
有SRAM200を介して通信する。共有SRAM200へのア
クセスリクエストは、プリンターマイクロプロセッサー
151とNEBマイクロプロセッサー173によって、A/D
バス701及び711上にそれぞれ発行される。そして
上記のとおり、アービター制御論理回路400によって
調停される。更に詳しくは、図6を参照して説明したと
おり、アービター制御論理回路400は、NEB A/Dバス
711上のバスアクセスを制御するためのバス制御論理
回路410と、プリンターA/Dバス701上のバストラ
フィックを制御するためのバス制御論理回路420と、
A/Dバス701およびA/Dバス711上のアクセスリクエ
ストの調停を行うための共有メモリアービター430
と、プリンターA/Dバス701とNEB A/Dバス711を、
それぞれSRAMのためのアドレス及びデータバスにインタ
ーフェースするためのSRAMインターフェース440とを
含む。これらの部分のそれぞれは、以下に詳しく説明す
る。
【0096】バス制御論理回路410は、ラッチされた
アドレス情報719を提供するために、NEB ALE信号7
12に応答してNEB A/Dバス711上のアドレス情報を
ラッチする、ラッチ717を含む。復号部720は、読
み込み及び書き込み信号714がアクティブであるとき
に、NEB A/Dバス上のアドレス情報が共有SRAM200の
アドレス空間に対応している場合に、NEBリクエスト信
号(NREQ信号)721を提供するために、ラッチされた
アドレス情報を復号する。
【0097】同様に、バス制御論理回路420は、プリ
ンターALE信号702が高レベルであるときに、ラッチ
されたアドレス情報724を提供するために、プリンタ
ー A/Dバス701上のアドレス情報をラッチするラッチ
722を含む。復号部725は、プリンターDEN信号7
04がアクティブであって、ラッチされたアドレス情報
が共有SRAM200のアドレス空間に対応している場合
に、ラッチされたアドレス情報に応答し、プリンターリ
クエスト信号(PREQ)726を出力する。
【0098】共有メモリアービター430は、PREQアク
セスリクエスト信号とNREQアクセスリクエスト信号を共
通のクロック(ここではNEBクロック715)に同期さ
せるための同期回路と、上記リクエスト信号のどちらか
に断片的なクロックディレイを鋏み込む遅延回路と、最
初に受信したリクエスト信号にアクセスを許可し、後で
受信されたアクセスリクエストを延期する延期回路と、
再同期回路とを含む。特に、NREQ721とPREQ726は
共に、共通のクロックに同期させるためにNEBクロック
715に同期させる同期回路に入力する。ここで示す一
例では、プリンタークロック信号705に固有に同期さ
れたPREQは、NEBクロック信号715に同期される。遅
延信号729は、オフセットリクエスト信号を生成する
ために、アクセスリクエスト信号のどちらか一方(ここ
ではプリンターからのアクセスリクエスト信号)に挿入
される。遅延回路は、2つのアクセスリクエストが共に
全く同時に発行された場合でも、一方のアクセスリクエ
ストが延期回路730に他より必ず先に到着するよう
に、2分の1クロック遅延の様な、断片的なクロック遅
延信号を挿入する。
【0099】延期回路730は、第1及び第2のアクセ
スリクエスト信号に応じて、第1及び第2アクセス許可
信号、PACK及びNACKを出力する。第1及び第2オフセッ
トリクエスト信号で先に受信された順番に応じて、第1
及び第2アクセス許可信号の厳密に一方がアクティブに
される。他の(つまり、後で受信された)オフセットリ
クエスト信号は、先に受信されたアクセスリクエスト信
号の処理が終了するまで延期される。延期されたマイク
ロプロセッサーにアクセスが拒否されたことを示すため
に、準備未完了信号が発行される。例えば、NEBアクセ
スリクエストが、プリンターアクセスリクエストより後
に受信された場合、延期回路730はプリンターにアク
セス許可を与え、NEBからのアクセスを延期する。この
場合、NEB準備完了信号716は取り下げられ、アクセ
ス許可がおりるまで待機状態を挿入するように、マイク
ロプロセッサー173に示す。反対に、NEBアクセスリ
クエストが、プリンターアクセスリクエストより先に受
信された場合、延期回路730はNEBにアクセス許可を
与え、プリンターのアクセスを延期する。この場合、延
期回路730はプリンター準備完了信号を遅らし、マイ
クロプロセッサー151にアクセス許可がおりるまで待
機状態を挿入するように指示する。
【0100】プリンターのためのPACKアクセス許可信号
は、同期しないように制御された信号をそれ自身のクロ
ックに再同期するように、再同期回路731へ入力され
る。この再同期された信号はFPACKとして指示される。
再同期されたアクセス許可信号FPACK及びNACKは、アク
セス許可を受けたマイクロプロセッサーと共用SRAM20
0との間の適切なインターフェースを提供する、SRAMイ
ンターフェース440に入力される。
【0101】共用メモリアービター430は、Dタイプ
フリップフロップ及び標準の論理回路で構成することが
好ましい。好ましい構成の一つを図19に示す。図19
に示されるように、プリンターからのアクセスリクエス
ト信号726は、NEBクロック信号715にクロックさ
れる、同期するDタイプフリップフロップ728aに入
力され、その後、第2のDタイプフリップフロップ72
8bに入力する。同時に、NEBからのアクセスリクエスト
信号721は、Dタイプフリップフロップ727aに入
力され、その後、第2のDタイプフリップフロップ72
7bに入力する。これら2つのフリップフロップ727a
及びフリップフロップ727bは、アクセスリクエスト
信号721に適した同期及び遅延を確認するために提供
される。立下がり制動Dタイプフリップフロップ729
は、プリンターからのアクセスリクエスト信号726
に、1.5クロックの遅延を挿入するために供給されて
いる。フリップフロップ729の出力は、アクセス許可
信号がNEBに既に供給されている場合(つまり、NACK信
号が高レベル)に供給されるリセット信号732によっ
て、低レベルに保たれる。反対に、NEBに対してアクセ
ス許可が下りていない場合、プリンターからのアクセス
リクエスト信号は、PACK信号を形成するために、クロッ
クスルー(clocked through)される。このPACK信号
は、プリンタークロック705によってクロックされる
再同期フリップフロップ731へ送られる。同時に、PA
CK信号は、クロックされたNEBアクセスリクエスト信号
に連動するNANDゲート734に供給される。プリンター
にアクセス許可が下りると、NANDゲート734は、アク
セスリクエストがあったとしても、PACKが低レベルに変
わるまで、NEBのアクセスが拒絶されたことを確認す
る。
【0102】図19に示す構成により、延期回路730
が第1及び第2の許可信号を出力したとしても、一時
に、これら2つの許可信号のうちのどちらか一方のみが
アクティブにされる。つまり、プリンターにアクセス許
可が下りると、NEBのアクセスは延期される。逆に、NEB
にアクセス許可が下りると、プリンターのアクセスは延
期される。
【0103】図18に戻ると、SRAMインターフェース4
40は再同期されたプリンターアクセス許可信号FPACK
と、NEBアクセス許可信号NACKとを受信し、この信号の
うちどちらがアクティブにされているかに基づいて、プ
リンターマイクロプロセッサー151とNEBマイクロプ
ロセッサー173の間での、共有SRAM200へのアクセ
スを調整する。
【0104】更に詳しくは、図18に示すとおり、NEB
アクセス許可信号NACKはマルチプレクサ735へ供給さ
れる。このマルチプレクサ735は、ラッチされたNEB
アドレス情報719又はラッチされたプリンターアドレ
ス情報724のどちらかを、NACK信号に基づいて選択
し、選択されたアドレス情報を内部アドレスバス736
へ供給する。NACKがアクティブである場合、マルチプレ
クサ735は、ラッチされたNEBアドレス情報719の
13ビット全てを、内部アドレスバス736へ供給す
る。反対に、NACKがアクティブでない場合(つまり、プ
リンターがアクセス権を持つ)、マルチプレクサ735
は、ラッチされたプリンターアドレス情報724の13
ビットの内、12ビットを内部アドレスバス736へ供
給する。第13番目のビット、ここではAOは、ジェネレ
ーター747によって、以下に示す方法で供給される。
【0105】バッファ737は、内部アドレスバス73
6からのアドレス情報をSRAMアドレスバス740にバッ
ファする。バッファ737はORゲート739の出力によ
り、アクティブにされる。ORゲート739は、NEBアク
セス許可信号NACKを入力の一つとして受け付ける。これ
により、NACKが高レベルになるとすぐに、バッファ73
7は、内部アドレスバス736上のアドレス情報をSRAM
アドレスバス740にバッファする。
【0106】読み込み又は書き込みのどちらがリクエス
トされたかによって、つまり、読み込み又は書き込み信
号714の状態に応じて、SRAM200はデータ情報を、
データバス741から受信またはデータバス741へ送
出する。このデータ情報は、両方向バッファ742を介
して内部データバス744へ送信される。両方向バッフ
ァ742は、NEBアクセス許可信号NACKを入力の一つと
して受け付ける、ORゲート745からの出力によってア
クティブにされる。従って、NACKが高レベルになると、
ORゲート745の出力も高レベルになり、SRAMデータバ
ス741から内部データバス744へのデータ情報の送
信を許可することになる。内部データバス744上のデ
ータ情報は、NEBアクセス許可信号NACKによってアクテ
ィブにされる両方向バッファ746を介して、NEB A/D
バス711へ送出される。NEBアクセス許可信号NACK
は、読み込み又は書き込み信号714によって起動され
る復号部720から最終的に導き出されるため、バス7
11が有効なアドレスデータが出現することを期待せ
ず、有効なデータ情報が出現することを期待するので、
NEB A/Dバス711上のデータ情報のタイミングは適切
である。
【0107】従って、まとめると、NEBが共有SRAM20
0にアクセスする許可を受けると、ラッチ717からの
ラッチされたアドレス情報は、マルチプレクサ735及
びバッファ737を介して、SRAMアドレスバス740に
バッファされ、データ情報は、両方向バッファ742及
び746を介して、NEB A/Dバス711へ(から)SRAM
データバス741から(へ)バッファされる。NEBのた
めのアクセス操作が終了すると、プリンターからの延期
されたアクセスリクエストが処理される。
【0108】プリンターマイクロプロセッサー151
が、共有SRAM200にアクセスする許可を受けている場
合には、NEBマイクロプロセッサー173が使用するの
と同じ13ビット幅のアドレスを、プリンターマイクロ
プロセッサー151が使用していたとしても、プリンタ
ーマイクロプロセッサー151はSRAM200のデータバ
ス幅と異なるものを持っているため、これらのビット幅
の差を解決するために、上位又は下位バイトバッファが
必要とされる。詳しくは、上記のとおり、プリンターマ
イクロプロセッサー151は、規則に基づいて16ビッ
ト幅の共有RAMデータアクセスを通して外部機器と通信
する、32ビットのインテル80960KBRISCマイク
ロプロセッサーである。プリンターマイクロプロセッサ
ー151の内部32ビットフォーマットへの16ビット
アクセスの問題解決は、プリンターマイクロプロセッサ
ーに依存する。しかし、8ビット幅の共有SRAM200へ
の、プリンターマイクロプロセッサー151からの16
ビットデータアクセスの問題解決は、SRAMインターフェ
ース440及び上記の上位又は下位バイトバッファに依
存する。この構造を以下に更に詳しく説明する。
【0109】具体的には、ラッチ722でラッチされた
アドレス情報については、マルチプレクサ735は13
ビット中の12ビットを、内部アドレスバス736へ送
信する。第13番目のビット、ここではAOは、ジェネレ
ーター747から供給される。ジェネレーター747
は、ストローブ(strobe)ジェネレーター751からの
下位ストローブ出力750及び上位ストローブ出力75
2によってアクティブにされる。ストローブジェネレー
ター751は、共有メモリアービター430からのFPAC
Kアクセス許可信号の受信に応じて、2つの連続する信
号、つまり下位ストローブ750及び上位ストローブ7
52を供給するように構成されている。下位ストローブ
信号750はジェネレーター747へ供給され、ジェネ
レーター747は二値の0ビットを第13番目のアドレ
スビットのために、マルチプレクサ735へ供給する。
マルチプレクサ735は、これらの13のアドレスビッ
トを選択し、内部アドレスバス736へ出力する。内部
アドレスバス736に関するアドレス情報は、上述した
とおり、バッファ737を介してSRAMアドレスバス74
0へラッチされる。バッファ737は下位ストローブ7
50及び上位ストローブ752をその入力として含む、
ORゲート739の出力によってアクティブにされる。従
って、続く下位ストローブ750及び上位ストローブ7
52に応じて、ORゲート739はバッファ737へ信号
を出力し、これにより、内部アドレスバス736上のア
ドレス情報が、SRAMアドレスバス740へ送信されるこ
とになる。
【0110】上位アドレスストローブ752は、ジェネ
レーター747へも供給され、ジェネレーター747は
二値の1を第13番目のアドレスビットとして生成し、
マルチプレクサ735へ供給する。マルチプレクサ73
5は、内部アドレスバス736へ出力する、これらの1
3ビットを選択する。ORゲート739による上位ストロ
ーブ752の受信に続いて、この更新されたアドレス情
報は、SRAM200のアドレスバス740へ送出される。
【0111】データ情報の取り扱いは、プリンターマイ
クロプロセッサー151によって読み込み、書き込みの
どちらがリクエストされたかによって変わる。書き込み
の場合、ストローブジェネレーター751は、バッファ
754へ下位ストローブ信号750を供給する。バッフ
ァ754はプリンターA/Dバス701に関するデータ情
報の下位バイトを内部データバス744にバッファす
る。そしてプリンターアクセス許可信号FPACKをその入
力の一つとして受け入れるORゲート745の出力によっ
てアクティブにされる両方向バッファ742を介して、
このデータ情報はSRAMデータバス741にバッファされ
る。従って、プリンターA/Dバス701上にあるデータ
情報の下位バイトはバッファ754を介して、内部デー
タバス744、それからSRAMデータバス741にバッフ
ァされる。
【0112】プリンターA/Dバス701上にあるデータ
情報の上位バイトは、ストローブジェネレーター751
からの上位ストローブ752によってアクティブにされ
るバッファ755によってバッファされる。上記と同様
に、データ情報の上位バイトは両方向バッファ742を
介して、内部データバス744、それからSRAMデータバ
ス741に送信される。
【0113】プリンターマイクロプロセッサー151が
SRAMデータの読み込みをリクエストした場合、下位スト
ローブ信号750と上位ストローブ信号752はそれぞ
れ遅延回路756及び757によって遅延され、遅延さ
れたストローブはそれぞれラッチ758及び759を制
御する。これらのラッチは、SRAM200のデータバス7
41から供給された、それぞれ下位及び上位バイトをラ
ッチし、上位及び下位バイトをプリンターA/Dバス70
1へアセンブルし、アセンブルされたデータ情報をプリ
ンターマイクロプロセッサー151に供給する。
【0114】従って、要約すると、プリンターマイクロ
プロセッサー151が共有SRAM200へのアクセスを許
可されると、ラッチ722にラッチされたアドレス情報
はSRAM200のアドレスバスに供給され、また、SRAM2
00へ書き込まれた(または、SRAM200から読み込ま
れた)データ情報は、下位及び上位バッファ754及び
755によって、SRAMデータバス741用のデータ情報
へ分解される(または、ラッチ758と759によっ
て、データバス741からのデータ情報からアセンブル
される)。プリンターマイクロプロセッサー151によ
るアクセスが終了すると、NEBからの延期されていたア
クセスリクエストが処理される。
【0115】ORゲート760は、チップ選択信号761
を共有SRAM200へ出力する。ORゲート760への入力
は、下位アドレスストローブ750と、上位アドレスス
トローブ752と、NEBアクセス許可信号NACKである。
従って、これらの信号のどれかに対応して、チップ選択
信号761は発行される。図20は、アービター制御論
理回路400に入力される信号のタイミングを示す、タ
イミング図である。詳しくは、プリンター側では、上記
のとおり、アービター制御論理回路400には、プリン
タークロック705と、プリンターALE信号702と、
プリンターA/Dバス701と、プリンターDEN信号704
と、プリンター準備完了信号706とが供給される。共
用SRAM200のアドレス空間に対応し、プリンターALE
信号702が高レベルになったときに有効でありラッチ
され、プリンターDEN信号704が低レベルになったと
きにプリンターリクエスト信号726(図18)を生成
する、プリンターA/Dバス701上のアドレス情報に対
応して、アービター制御論理回路400の延期回路73
0は、プリンター準備完了信号706を生成する。これ
により、SRAM200へのアクセスが許可され、プリンタ
ーDEN信号が高レベルになることによって示される有効
データがプリンターA/Dバス701上に現われるまで、
プリンターマイクロプロセッサー151は待機状態を発
行するようになる。
【0116】NEB側では、共用SRAM200のアドレス空
間に対応し、NEB ALE信号712が低レベルになったと
きに有効でありラッチされ、NEB書き込み信号714
(不図示)が低レベルになったときにNEBリクエスト信
号721を生成する、NEB A/Dバス711上のアドレス
情報に応答して、SRAM200へのアクセスが許可され、
有効データがNEB A/Dバス711上に現われるまで、NEB
準備完了信号716は生成される。 [共有メモリ内のバス競合の削減]上記のとおり、アー
ビター制御論理回路400は、NEB101の設計に欠く
ことのできないものであり、その内部で、ある与えられ
た時点で一つのプロセッサーのみが、共有SRAM200へ
アクセスすることを許可する。これにより、同じメモリ
セルへの同時アクセスは回避され、データ破壊を防ぐこ
とができる。しかし、この調停は、必要上、メモリー列
全体について行われ、個々のメモリセルについて行われ
るわけではない。従って、2つの参照されたアドレスが
お互いに異なっていたとしても、一方のプロセッサー
は、他方のプロセッサーがメモリにアクセスしている
間、待たなければならない。これはメモリアクセス時間
を非常に遅くすることとなり、特に、印刷データがネッ
トワークから、NEBマイクロプロセッサー173によっ
て、プリンターマイクロプロセッサー151へ、共有SR
AM200を介して送信されているときは顕著である。
【0117】図21は、SRAM200中の使用可能なメモ
リが、どのように論理スペースに分割されているかを示
す図である。印刷ジョブデータや、コマンドや、状態リ
クエストを含む、NEB101からプリンター102へ送
信された全てのデータは、NEBマイクロプロセッサー1
73によって、プリンターデータ領域201へ書き込ま
れる。この領域からは、プリンターマイクロプロセッサ
ー151によってデータが読み込まれている。反対に、
プリンター102からNEB101へ送信された全てのデ
ータは、プリンターマイクロプロセッサー151によっ
て、メッセージデータ領域202へ書き込まれる。この
領域からは、NEBマイクロプロセッサー173によって
データが読み込まれる。
【0118】図21に示すように、プリンターデータ領
域201は、リングバッファとして構成されている。こ
の領域においては、最後に達したときに、アドレス付与
が自動的に最初から再スタートするように、線形メモリ
ーアレイは巡回してアドレス付与される。このようなメ
モリ構造は2つのポインタを必要とする。一つは「プッ
ト」ポインタで、次にデータを書き込むアドレスをマー
クし、もう一つは「ゲット」ポインタで、次のデータを
読み込むアドレスをマークする。これらのポインターの
値は、SRAM200中の状態メッセージ領域203に記憶
されている。送信側のプロセッサーは、リングバッファ
に新しいデータを書き込む度にプットポインタの値を進
めることによって、プットポインタの値を制御する。ま
た、受信側のプロセッサーは、データをコピーして取り
出す度に、ゲットポインタの値を進めることによって、
ゲットポインタの値を制御する。
【0119】データは、リングバッファに256バイト
のブロック単位で、次のブロックの始まる場所を示すプ
ットポインタ及びゲットポインタと共に書き込まれる。
例えば、図21において、プットポインタはブロック2
011を示し、そのブロックが、NEBマイクロプロセッ
サー173が書き込むことのできる次のメモリ領域であ
ることを示す。また、ゲットポインタはブロック201
2を示し、そのブロックが、プリンターマイクロプロセ
ッサー151が次に読み込むべきメモリ領域であること
を示す。データブロックをメモリに書き込む前に、NEB
マイクロプロセッサー173は、プットポインタ及びゲ
ットポインタの値を状態メッセージ領域203から読み
込み、リングバッファ中に使用可能な領域があるか否か
を判断するために、これらの値を比較する。同様に、プ
リンターマイクロプロセッサー151は、プットポイン
タ及びゲットポインタの値を状態メッセージ領域203
から読み込み、読み込むべきデータがあるか否かを判断
するためにこれらの値を比較する。
【0120】従って、一方のプロセッサーから他方のプ
ロセッサに、リングバッファを使用してデータを送信す
る場合において、受信側のプロセッサーは送信側のプロ
セッサーを「リングをまわりながら」追跡し、書き込ま
れたデータを読み出す。受信側のプロセッサーは運転し
ているプリンターの速さによって制限を受け、送信側の
プロセッサーは、通常、受信側のプロセッサーが読み出
しするよりも速い速度で書き込むため、従来のシステム
においては、プットポインターがリングを回って、後に
あるゲットポインタに追い付いてしまう傾向がある。こ
のような場合、送信側プロセッサーは、リングバッファ
のメモリー空間が使用可能になるまで待つ。この待機時
間に、従来のシステムにおいて、送信側のプロセッサー
は、空間が使用可能になったか否かを判断するために、
プットポインター及びゲットポインターを周期的に読み
込み、比較する。送信側のプロセッサーによるこのよう
なポーリングは、送信側のプロセッサーが共有メモリに
アクセスしてポインターの値を読み込まなければならな
いために、受信側プロセッサーの処理速度を低下させ
る。これによってプリンターによるアクセスが妨害さ
れ、システム全体の機能を低下させる。
【0121】NEB101では、プットポインタをゲット
ポインタよりも一定量以上先にならないようにし、ゲッ
トポインタが追い付くまで待機することによって、バス
の競合は削減される。NEBは、ゲットポインタがプット
ポインタに追い付いた時を判断するたの共有SRAM200
のポーリングせず、他の機器に依存する。ここでは割り
込み制御レジスタ450が、ゲットポインタが追い付い
た時の通知をする。特に、プリンターインターフェース
の特徴として、印刷データは、プリンターが受信通知
を、割り込み制御レジスタ450を介してNEBへ発行す
るように命令するコマンドを含んでもよい。NEBは、プ
リンターへ送信する印刷データの最終ブロックにこのコ
マンドを挿入し、割り込み制御レジスタ450からの受
信通知をポーリングの変わりに使用する。具体的には、
NEBは印刷データをプリンターに以下の方法によって送
信する。即ち、(1)共有RAM中に、印刷データの為の
使用可能なスペースがあるか否かを、受信通知の受信予
定カウンターを参照することによって決定し、(2)使
用可能なスペースがある場合はゲットポインタ及びプッ
トポインタを読み出し、プットポインタが、リングバッ
ファを分割して得られた部分の数に対応する複数の部分
インデックスのうちの一つと等しいか否かを判断し、
(3)プットポインタの値が、予め設定された複数のイ
ンデックスの内の一つと等しい場合に、受信通知を発行
するように受信プロセッサー(プリンター)にリクエス
トするコマンドを書き込み、(4)共有メモリのプット
ポインタの位置に、印刷データブロックを書き込み、
(5)プットポインタの値を更新する。NEB101が、
受信通知を発行するようにプリンターにリクエストする
コマンドを書いたときに、受信通知の受信予定カウンタ
ーに1を加えることによって、プリンターから受信する
ことが期待される受信通知の数が更新される。プリンタ
ーから受信通知を受信すると、受信通知の受信予定カウ
ンターは、1減少する。このカウンターは共有SRAM20
0には記憶されておらず、バス競合の問題の無い、NEB
マイクロプロセッサー173が持つDRAM175中に記憶
されている。このように、NEB101は、カウンター中
に記憶されている受信通知の受信予定数と、リングバッ
ファを分割して得られた部分の数とを比較することによ
って、リングバッファに使用可能なスペースがあるか否
かを判断する。受信通知の受信予定数が、分割部分の数
以上ならば、リングバッファは満杯であり、NEB101
は印刷情報をリングバッファに追加で書き込まない。そ
の代わりに、プリンターがリングバッファの一部分をク
リアし、新しい印刷情報を記憶できる部分ができたこと
を示す受信通知が受信されるまで待機する。反対に、受
信通知の受信予定数が、分割部分の数より少なければ、
リングバッファ内に使用可能なスペースがまだあること
を示す。図22は、NEB101の送信側プロセッサー
(つまり、NEBマイクロプロセッサー173)が、共有S
RAM200にデータを書き込む手順を示す。この処理
は、印刷ジョブがLANから受信されたときに開始する
(ステップS1902)。印刷ジョブを受信すると、NE
Bマイクロプロセッサー173は、印刷データのために
使用可能なスペースが、リングバッファにあるか否かを
判断する。この判断は、プリンターからの受信通知の受
信予定数を数えることによって行われる。具体的には、
上記のとおり、NEBマイクロプロセッサー173は、割
り込み制御レジスタ450を介してプリンターからNEB
マイクロプロセッサー173へ送られる受信通知をプリ
ンターに発行させるコマンドを、印刷データに挿入する
ことができる。NEBマイクロプロセッサー173は、受
信通知の受信予定数、つまり、受信通知のために発行さ
れたコマンドの数から、実際に受信された受信通知の数
を引いた数を追跡する。受信通知の受信予定数が、リン
グバッファを分割して得られた部分の数よりも少いなら
ば(ここではリングバッファは2つに分割されてい
る)、印刷データのために更に使用可能なスペースがリ
ングバッファに存在することになる。反対に、未処理の
受信通知の数が、リングバッファを分割して得られた部
分の数以上ならば、使用可能なスペースは無く、NEBマ
イクロプロセッサー173は、受信通知を受信するまで
待機する。
【0122】従って、ステップS1903において、NE
Bマイクロプロセッサー173は、プリンターから受信
通知を受信したか否かを判断する。受信通知が受信され
た場合、処理はステップS1904へ分岐し、受信通知
の受信予定数を更新する。そしていづれの場合もステッ
プS1905へ進み、NEBマイクロプロセッサー173
は、ステップS1902で受信された印刷データの為の
スペースが、リングバッファ中にあるか否かを判断す
る。上述したように、NEBマイクロプロセッサー173
は、プットポインタ及びゲットポインタにアクセスする
ことによってスペースがあいているか否かを判断するこ
とはしない。なぜなら、このようなアクセスは、不必要
なバスの競合を招くからである。そのかわりに、NEBマ
イクロプロセッサー173は、受信通知の受信予定数
と、リングバッファを分割して得られた部分の数とを比
較することによって、使用可能なスペースがあるか否か
を判断する。受信通知の受信予定数が、リングバッファ
を分割して得られた部分の数よりも少なくなければ、リ
ングバッファに使用可能なスペースがなく、処理は、追
加の受信通知が受信されるまで、ステップS1903へ
戻る。反対に、受信通知の受信予定数が、リングバッフ
ァを分割して得られた部分の数よりも少いならば、リン
グバッファに使用可能なスペースがあり、処理はステッ
プS1906へ進む。
【0123】ステップS1906ではプットポインタ及
びゲットポインタが、共有SRAM200の状態メッセージ
領域203から読み込まれる。ステップS1907で
は、プットポインタが分割されたインデックスと等しい
場合、つまり、プットポインタが、図21のインデック
スA及びインデックスBのように、リングバッファの一
部分の最後を示す場合、NEBマイクロプロセッサー17
3は、プリンターに受信通知を発行させるようにコマン
ドを挿入する。具体的には、プットポインタが分割され
たインデックスの一つに等しいならば、処理はステップ
S1908に分岐し、NEBマイクロプロセッサー173
は、印刷データの次のブロックをプットポインタが指定
するメモリ位置に書き込み、そのブロックに、受信側の
プロセッサー(つまり、プリンターマイクロプロセッサ
ー151)に受信通知を発行させるコマンドを入れる。
NEBマイクロプロセッサー173は、次に、プットポイ
ンタの値を更新し(ステップS1909)、そして、受
信通知の受信予定数を更新する(ステップS191
0)。処理はステップS1911へ進み、印刷データを
更にプリンターへ送る必要があるか否かを判断する。デ
ータを更に送信する必要がある場合、処理はステップS
1903へ戻り、NEBマイクロプロセッサー173は、
受信通知の受信予定数を参照することによって、リング
バッファ内に使用可能なスペースがあるか否かを判断す
る。
【0124】反対に、ステップS1907で、プットポ
インタが分割されたインデックスのどれにも等しくない
場合は、ステップS1912へ進み、NEBマイクロプロ
セッサー173は、プットポインタに指定されたメモリ
へ、印刷データの次のブロックを単純に書き込み、プッ
トポインタの値を更新し(ステップS1913)、ステ
ップS1911へ進み、プリントデータを更にプリンタ
ーへ送る必要があるか否かを判断する。
【0125】受信側のプロセッサーは、共有メモリから
通知受信の発行コマンドを含むデータブロックを読み込
むと、受信通知を発行する。具体的には、図23を参照
すると、受信側のプロセッサーは、ゲットポインタ及び
プットポインタの値を共有メモリから読み込むことによ
って、データのリトリーブを開始する(ステップS20
01)。リトリーブするべきデータがある場合は(ステ
ップS2002)、受信側のプロセッサーは、ゲットポ
インタによって指定されているメモリ位置からデータブ
ロックを読み込み(ステップS2002からS200
4)、ゲットポインタの値を更新する(ステップS20
05)。
【0126】そして、受信側プロセッサーは、例えば受
信通知発行コマンドなどの、そのデータブロックに含ま
れているコマンドを全て実行する(ステップS200
6)。受信側プロセッサーは、アービター制御論理回路
400の一部である割り込み制御レジスタ450に1ビ
ットを書き込むことによって、この受信通知を送信側プ
ロセッサーへの割り込みとして発行する。送信側のプロ
セッサーは、この割り込みを受信すると、上述したよう
に、受信通知の受信予定数を更新する。
【0127】これにより、リングバッファが2つの部分
に分割されると、送信側のプロセッサーは、一回にリン
グバッファの半分だけにブロックを書き込み、受信側の
プロセッサーが残り半分を読み終えたかを確認し、それ
ぞれのインデックス毎に、受信側のプロセッサーが追い
付くまで、共有メモリへのアクセスをやめる。別の例で
は、2つのリングセグメントでは不充分な場合に、リン
グを更に細かく分割することができる。これらの場合、
図24の(a)から(c)に示すように、追加のインデッ
クスを使用することができる。
【0128】この構成により、NEBマイクロプロセッサ
ー173は待機中、共有SRAM200に全くアクセスしな
いので、NEBマイクロプロセッサー173の待機は、プ
リンターマイクロプロセッサー151の読み込み処理を
妨害しない。これにより、非常に多くのデータ処理を達
成できるだけでなく、プリンターインターフェースマイ
クロプロセッサー151がより速くそのタスクを達成す
ることができるので、NEBマイクロプロセッサー173
をプットポインタ及びゲットポインタのポーリングから
開放することができ、これにより共有SRAM200を使用
しない他のワークを行なうことができるようになる。 [シリアルポート]上述のとおり、シリアルポートコネ
クタ600は、外部プロセッサー、特にNEB101のた
めのデバッグサービスに関連して使用されるプロセッサ
ーとのシリアル通信を行うために、供給されている。具
体的には、NEB101がデバッグ状態にセットされたと
きに、シリアルポートコネクタ600を介して、外部プ
ロセッサーはNEB101によって送信されるデバッグ情
報をリトリーブすることができる。この情報は、例え
ば、内部NEBレジスタの状態や、ネットワークインター
フェース301(又は302、割り込み可能にされた
方)のネットワークブロードキャスト及びトラフィック
の状態や、印刷情報の状態や、共有SRAM200に書き込
まれた印刷情報の状態などを含む。
【0129】シリアルポートコネクタ600が、デバッ
クサービスに関連して使用されるために、NEBマイクロ
プロセッサー173の割り込み能力に関わらず、そのポ
ートを介してのシリアル通信をNEBマイクロプロセッサ
ー173によって応答することを避けることができな
い。例えば、プリンター102が受信通知を発行するま
で、新しい印刷データのSRAM200への書き込みを待つ
ことによってバスの競合を減らす場合、上記のとおり、
プリンターが間違えてそのような受信通知を発行しない
可能性がある。こういう場合、NEBマイクロプロセッサ
ー173は、受信通知が受信されるまでループを実行し
続ける。通常、そのような状態にあるプロセッサーは
「ロックアップ(錠を掛けられた;locked-up)」され
たことになる。ロックアップとはどのような割り込みに
も応じない状態を示す。ロックアップされた状態では、
通常、電力を一旦止めて再度投入する必要がある。しか
し、このようなエラーのある動作が、シリアルポートコ
ネクタ600上でデバッグ情報が望まれる動作の種類そ
のものであるため、NEBマイクロプロセッサー173
が、そのようなシリアル通信に応答できるようにするこ
とを避けることはできない。
【0130】図25は、受信チャンネルの信号が、NEB
マイクロプロセッサー173のマスク不可能な割り込み
(NMI)ピンに送信される、シリアルポートの構成を示
す。マスク不可能な割り込み特性は、インテルプロセッ
サー80X86ライン等の、最新のプロセッサーに搭載
されており、現状の処理状態に関わらず、プロセッサー
に割り込みを掛ける手段を有している。つまり、NMIピ
ンがアクティブにされた時には、プロセッサーは、現在
行っている動作の如何に関わらず、その割り込みに応答
しなければならない。
【0131】更に具体的には、図25に示すように、本
発明におけるシリアルポート構成は、上述の通り、マス
ク不可能な割り込み(NMI)ピン1731を含みNEB制御
論理回路520へバス181を介して接続されている、
NEBマイクロプロセッサー173を含む。NEB制御論理回
路520は、アドレス復号論理回路523を含む。この
アドレス復号論理回路523は、バス181上のアドレ
ス信号を復号し、NEB制御論理回路520の内部レジス
タへの接続を提供する。特に、ここでは、3つのレジス
タを考慮する。それらは、送信レジスタ524と、受信
レジスタ525と、NMIイネーブルレジスタ526とで
ある。
【0132】送信レジスタ524は、シリアルポートの
送信ピン602に接続されている送信ビットを含む。具
体的には、送信ビットは、その二値の1又は0に応じ
て、NEBマイクロプロセッサー173によって、バス1
81及びアドレス復号論理回路523を介して書き込み
可能となる。二値の1又は0は、+5ボルト又は0ボル
トの電圧として、送信ターミナル602に現れる。
【0133】受信レジスタ524は、ソフトウエアシリ
アルポートの受信ピン601に接続されている受信ビッ
トを含む。更に詳しくは、受信ターミナル601に現れ
る電圧のレベルに従って、受信ビットは二値の1又は0
にセットされ、この受信ビットは、バス181及びアド
レス復号論理回路523を介して、NEBマイクロプロセ
ッサー173によって読み込まれる。
【0134】NMIイネーブルレジスタ526は、NEBマイ
クロプロセッサー173によって制御されるスイッチ
で、受信ターミナル601とNMIピン1731との間に
接続されている。NEBマイクロプロセッサー173の制
御下で、バス181及びアドレス復号論理回路523を
介して、NMIイネーブルレジスタ526は、受信ターミ
ナル601上の信号をNMIピン1731へ接続する割り
込み可能状態又は、受信ターミナル601上の信号をブ
ロックする割り込み禁止状態を、スイッチで選択する。
【0135】送信レジスタ524と、受信レジスタ52
5と、NMIイネーブルレジスタ526は、物理的に、一
つのレジスタから構成することもできるが、通常は、図
25に示すように、別個にアドレスすることのできるレ
ジスタとして供給される。図26は、シリアル受信モー
ドでのシリアルポート処理を示すフローチャートであ
る。図26における処理ステップは、DRAM175に記憶
されたソフトウエアの命令に応じて、NEBマイクロプロ
セッサー173によって実行される。
【0136】ステップS2301において、受信ターミ
ナル601上の信号を直接NMIピン1731へ送信でき
るように、NEBマイクロプロセッサー173は、NMIイネ
ーブルレジスタ526を割り込み可能にする。そしてス
テップS2302で、NEBマイクロプロセッサー173
は、NMI信号が現われるのを確認のためにNMIピン173
1を観察する。マスク不可能な割り込みを受信すると、
NEBマイクロプロセッサー173は、コンピューターに
よって制御されたLANとプリンター間のネットワークを
介した印刷処理のような、進行中の処理を続行する(ス
テップS2303)。
【0137】反対に、NMI信号がNMIピン1731で受信
されると、処理はステップS2304へ進み、NEBマイ
クロプロセッサー173は、進行中の処理を中断する。
図27は、シリアル受信モードでの信号のタイミングを
示す図である。図27に示すように、NMIイネーブルレ
ジスタ526は割り込み可能にされているため、NMI信
号は、受信ターミナル601の開始ビットに対応して受
信される。従って、図27にあるとおり、最初のビット
に対応する電圧レベル610が受信ターミナル601に
現れると、NMIイネーブルレジスタ526が割り込み可
能状態であるために、最初のビットはNMIピン1731
へ送信される。同時に、最初のビットの電圧レベル61
0のために、受信レジスタ525の受信ビットは二値の
1にスイッチされる。
【0138】再び図26に戻って説明を続ける。NEBマ
イクロプロセッサー173が進行中の処理を中断した後
(ステップS2304)、マイクロプロセッサー173
は、ステップS2305で、NMI割り込み取り扱い処理
を実行開始し、受信ターミナル601からNMIピン17
31への信号の送信を遮るために、NMIイネーブルレジ
スタ526を割り込み禁止にする。そして、この割り込
み取り扱い処理は、受信ターミナル601に最初のデー
タビットが現れることのできるように、シリアル送信期
間中、待機する。シリアル送信が19.2KHzで行わ
れた場合、あらかじめ設定されたシリアル送信周期は、
1/19.2KHz、つまり52msである。あらかじめ
設定されたシリアル送信周期が過ぎると、処理はステッ
プS2307へ進み、受信レジスタ525の受信ビット
が読み込まれる。これは図27において、表現上、最初
データビットは受信ターミナル601の高電圧値に対応
して、二値の1である。受信ビットは受信レジスタ52
5からリトリーブされ、8データビットが受信されるま
で、ステップS2306及びS2307の処理を繰り返
す(ステップS2308)。送信された停止ビット(例
えば図27の611)はどれも無視される。
【0139】8ビットのデータが受信されると、処理は
ステップS2309へ進み、割り込み取り扱い処理は、
受信ターミナル601で受信された8ビットバイトデー
タを記憶する。次に、ステップS2310で、次のシリ
アル通信の受信に備えるために、NEBマイクロプロセッ
サー173は、NMIイネーブルレジスタ526を割り込
み可能にする。1バイトのシリアルデータを受信するた
めの、このシリアル通信サイクルは、これで完了する。
【0140】ステップS2311では、NEBマイクロプ
ロセッサー173は、ステップS2309で記憶された
8ビットバイトが、処理中のソフトウエアタスクに非同
期に割り込みのリクエストをしているか否かを判断す
る。詳しくは、上記のNMI割り込み取り扱い処理が中断
されると、処理は通常、CPSOCKET等の、MONITORによっ
て制御されている、進行中の処理へもどる。しかし、NM
Iによって動かされるシリアルポートの利点は、問題が
起きている最中に、実行中のプログラムへ割り込むこと
ができることである。例えば、NEBが、予期しないソフ
トウエアの問題によってクラッシュしたときは、NEBの
状態はしばしばわからないままである。デバッグメッセ
ージを送信することができないほど、非常にタイトなマ
イクロプロセッサーループ中にある可能性もある。NEB
をリセットすることが、しばしば唯一、マイクロセッサ
ーループに割り込む方法であるが、そうすることによっ
て、現状を失ってしまい、また、クラッシュの原因など
の情報が全く供給されないこともある。このような場
合、NMIによって動作するシリアルポートを介して割り
込む機能と、システムを検査する機能は、非常に価値の
あるものである。
【0141】従って、ステップS2311において、シ
リアルポートコネクタで受信されるバイトが非同期の割
り込みをリクエストするものであるか否かを判断する。
例えば、すでに設定されている規則を用いると、感嘆符
(「!」)の送信が非同期の割り込みを特定することを
判断することができる。この場合、NEBマイクロプロセ
ッサー173は、進行中の処理の一時停止を続け、イン
タラクティブデバッガーに入る。このインタラクティブ
デバッガーは、ROMに保存されているプログラムで、ユ
ーザーがメモリアドレスや、CPUレジスタ及びI/Oポート
を観察したり、変更したりすることができる。更に、こ
のインタラクティブデバッガーではコード中に2つの中
断点を設定することができ、このようなどの中断点から
も実行開始する機能を持つ。このすべては、シリアルポ
ートコネクタ600を介して、達成される。
【0142】従って、非同期の割り込みにより、トラブ
ルがおこった場合に、トラブルシューターがNEBの現在
の状態を分析することができる。シリアル通信の最初の
ビットによりNMI信号が生成されるので、非同期の割り
込みにより、システム状態を分析することを許可するた
めに非常にタイトに結ばれたマイクロプロセッサールー
プにさえも割り込むことのできる、インタラクティブデ
バッグのセッションを開始することができる。
【0143】反対に、ステップS2309で記憶された
8ビットバイトが、非同期な割り込みをリクエストして
いない場合は、NEBマイクロプロセッサー173は、受
信したバイトを単純に記憶し、ステップS2303へ戻
り、ステップS2304で一時停止された進行中の処理
の実行を再開する。典型的には、CPSOCKETなどの、NEB
マイクロプロセッサー173でアクティブな他のソフト
ウエアモジュールは、8ビットバイトが記憶されたデー
タバッファを観察する。例えば、新しいソフトウエアモ
ジュールをシリアルポートコネクタ600上にダウンロ
ードする、ダウンロードサービスのリクエストを、すで
に設定されている規則によって、文字列「DNLD」の送信
が特定することを判断することができる。このような場
合、CPSOCKETは、「DNLD」のそれぞれ文字が受信される
度に反応し、その後にダウンロードモードに入るように
構成してもよい。
【0144】図28は、ソフトウエアシリアルポートの
送信モードにおける処理の流れを示す図であり、図29
は、送信レジスタ524に書き込まれた送信ビットに関
連して、送信ターミナル602に現われる信号を示す図
である。ステップS2401において、NEBマイクロプ
ロセッサー173は二値の1の開始ビットを、送信レジ
スタ524の送信ビットに書き込む。この送信ビット
は、送信ターミナル602に接続しているため、送信タ
ーミナル602は+5ボルトの電圧を表すことになる。
【0145】処理はステップS2402へ進み、NEBマ
イクロプロセッサー173は、あらかじめ設定されたシ
リアル送信期間待機する。この送信期間は、19.2K
Hzのシリアルレートで、1/19.2KHzであるの
で、52msである(1インタービット時間)。必要期間
待機した後、NEBマイクロプロセッサー173は送信ワ
ードの最初のビットを、送信レジスタ524の送信ビッ
トへ書き込む(ステップS2403)。送信されたワー
ドの8ビットすべてが書き込まれるまで(ステップS2
404)、NEBマイクロプロセッサー173は、シリア
ル通信期間は待機し、次のデータビットを送信レジスタ
524の送信ビットへ書き込む、ステップS2402及
びS2403の処理を繰り返す。8ビットのすべてが書
き込まれると、処理はステップS2405へ進み、イン
タービット送信期間中待機した後、送信レジスタ524
へ停止ビットを書き込む。そしてステップS2406へ
進み、ポイントシリアル通信は終了する。
【0146】上記の説明は、特定の例を参照してなされ
たが、本発明は上記の実施の形態によって限定されるも
のではない。関係分野の当業者には、発明の精神と範囲
を越えない程度で、上記の説明から多数の変形例が可能
であることは明らかであろう。
【0147】
【発明の効果】以上述べた様に本発明によれば、所定の
位置で送信側プロセッサーにメモリへの書き込みをやめ
させ、受信側プロセッサーが送信側プロセッサーが書き
込んだデータを読み込む間、待機させることによって、
共有メモリにデータを書き込む送信側プロセッサーと、
共有メモリからデータを読み出す受信側プロセッサー間
の競合を削減する方法を提供することができるという効
果がある。
【図面の簡単な説明】
【図1】ネットワークボードがつながれたローカルエリ
アネットワークとワイドエリアネットワークを示す図で
ある。
【図2】キャノンLBP1260レーザープリンターに
嵌め込まれたネットワークボードを示す断面図である。
【図3】プリンターとローカルエリアネットワーク間に
つながれたネットワークボードを示すブロック図であ
る。
【図4】ネットワークボード上の構成要素の配置を示す
図である。
【図5】ネットワークボードのフェースプレートを示す
図である。
【図6】ネットワークボードの機能を示すブロック図で
ある。
【図7】フラッシュEPROMに記憶されるソフトウエアモ
ジュールの例を示す図である。
【図8】どのコネクタがネットワークに接続しているか
を判断するための構成を示すブロック図である。
【図9】どのコネクタがネットワークに接続しているか
を判断するための方法を示すフローチャートである。
【図10】PRETASKソフトウエアモジュールの動作を示
すフローチャートである。
【図11】様々なネットワークモジュール間で可能な関
係を示す図である。
【図12】様々なネットワークモジュール間で可能な関
係を示す図である。
【図13】様々なネットワークモジュール間で可能な関
係を示す図である。
【図14】様々なネットワークモジュール間で可能な関
係を示す図である。
【図15】Ethernetローカルエリアネットワーク及びTo
ken-ringローカルエリアネットワークに接続したPCを
示すブロック図である。
【図16】構造情報を記憶するための、ネットワーク情
報ファイルブロックの内容を示す図である。
【図17】フラッシュEPROMの再プログラミングを示す
フローチャートである。
【図18】メモリアービトレーション機器のブロック図
である。
【図19】メモリアービトレーション機器の共有メモリ
アービターの好ましい構成の一例を示すブロック図であ
る。
【図20】メモリアービトレーション機器に供給される
信号のタイミングを示す図である。
【図21】共有メモリの構成を示す図である。
【図22】共有メモリへの書き込みに関する手順を示す
フローチャートである。
【図23】共有メモリからの読み込みに関する手順を示
すフローチャートである。
【図24】共有メモリの構成の別の例を示す図である。
【図25】シリアルポートのブロック図である。
【図26】シリアルポートを介してシリアル通信の送受
信に関する手順を示すフローチャートである。
【図27】シリアル送受信モードにおける信号のタイミ
ングを示す図である。
【図28】シリアルポートを介してシリアル通信の送受
信に関する手順を示すフローチャートである。
【図29】シリアル送受信モードにおける信号のタイミ
ングを示す図である。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 共有メモリを介してプットポインタ及び
    ゲットポインタを使用して、送信側プロセッサーから受
    信側プロセッサーへデータを送るデータ送信方法であっ
    て、前記プットポインタの値は前記共有メモリ中で前記
    送信側プロセッサーが書き込むべき次の位置を示し、前
    記ゲットポインタの値は前記共有メモリから前記受信側
    プロセッサーが読み込むべき次の位置を示し、前記送信
    方法は、 (1)共有RAM中に、印刷データの為の使用可能なスペ
    ースがあるか否かを、受信通知の受信予定カウンターを
    参照することによって決定し、(2)使用可能なスペー
    スがある場合は前記ゲットポインタ及び前記プットポイ
    ンタを読み出し、前記プットポインタが、前記共有メモ
    リを分割して得られた部分の数に対応する複数の部分イ
    ンデックスのうちの一つと等しいか否かを判断し、
    (3)前記ゲットポインタの値が、予め設定された複数
    の部分インデックスの内の一つと等しい場合に、受信通
    知を発行するように前記受信側プロセッサーにリクエス
    トするコマンドを書き込み、前記受信通知の受信予定カ
    ウンターを1加算することによって更新し、(4)前記
    共有メモリの前記プットポインタの位置に、データブロ
    ックを書き込み、(5)前記プットポインタの値を更新
    するステップを含むデータ送信処理を前記送信側プロセ
    ッサーによって実行する工程と、 前記受信通知の受信予定カウンターが、共有メモリ中に
    不十分なスペースしか空いていないことを示す場合は、
    前記データ送信処理を延期する工程と、 前記受信側プロセッサーから受信通知を受信して前記受
    信通知の受信予定カウンターを1減少することによって
    更新する工程と、 前記受信側プロセッサーが受信通知を発行した後に、前
    記データ送信処理を再実行する工程とを含むことを特徴
    とする、データ送信方法。
  2. 【請求項2】 前記受信側プロセッサーは、 前記ゲットポインタの値及び前記プットポインタの値を
    読み込み、 前記共有メモリ内にリトリーブするべきデータがあるか
    否かを判断し、 前記共有メモリ内にデータがある場合は、前記共有メモ
    リの前記ゲットポインタが示す位置からデータブロック
    を読み込み、そして、前記ゲットポインタの値を更新
    し、 受信通知を発行するコマンドを含む、前記送信側プロセ
    ッサーが発行したコマンドを実行し、 データリトリーブ処理を再実行することによって、デー
    タリトリーブ処理を実行することを特徴とする請求項1
    に記載のデータ送信方法。
  3. 【請求項3】 前記受信側プロセッサーは、割り込み信
    号を前記送信側プロセッサーに送信することにより、受
    信通知を発行するコマンドを実行することを特徴とする
    請求項2に記載のデータ送信方法。
  4. 【請求項4】 前記ゲットポインタの値及び前記プット
    ポインタの値は、前記共有メモリに記憶されていること
    を特徴とする請求項3に記載のデータ送信方法。
  5. 【請求項5】 前記共有メモリは、前記送信側プロセッ
    サーと前記受信側プロセッサー間でデータを通信するた
    めのデータを記憶するための第1領域と、前記ゲットポ
    インタの値及び前記プットポインタの値とを記憶するた
    めの第2領域に分割されていることを特徴とする請求項
    4に記載のデータ送信方法。
  6. 【請求項6】 前記第1領域はリングバッファとして構
    成されていることを特徴とする請求項5に記載のデータ
    送信方法。
  7. 【請求項7】 前記予め設定された複数の部分インデッ
    クスは、前記リングバッファの最初にある第1インデッ
    クスと、前記リングバッファの半ばにある第2インデッ
    クスとを含むことを特徴とする請求項6に記載のデータ
    送信方法。
  8. 【請求項8】 前記予め設定された複数の部分インデッ
    クスは、少なくとも3つのインデックスを含むことを特
    徴とする請求項6に記載のデータ送信方法。
  9. 【請求項9】 前記予め設定された複数の部分インデッ
    クスは、少なくとも4つのインデックスを含むことを特
    徴とする請求項6に記載のデータ送信方法。
  10. 【請求項10】 前記予め設定された複数の部分インデ
    ックスは、少なくとも10のインデックスを含むことを
    特徴とする請求項6に記載のデータ送信方法。
JP28616095A 1994-11-04 1995-11-02 共用メモリのバス競合の削減方法 Withdrawn JPH08227402A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/336,641 US5548728A (en) 1994-11-04 1994-11-04 System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory
US08/336641 1994-11-04

Publications (1)

Publication Number Publication Date
JPH08227402A true JPH08227402A (ja) 1996-09-03

Family

ID=23317015

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28616095A Withdrawn JPH08227402A (ja) 1994-11-04 1995-11-02 共用メモリのバス競合の削減方法

Country Status (4)

Country Link
US (1) US5548728A (ja)
EP (1) EP0710906B1 (ja)
JP (1) JPH08227402A (ja)
DE (1) DE69520819T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005513610A (ja) * 2001-12-14 2005-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 複数のプロセッサを有するデータ処理システムおよび複数のプロセッサを有するデータ処理システムにおける通信手段

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802295A (en) * 1994-09-12 1998-09-01 Canon Kabushiki Kaisha Information processing method and system therefor
JPH0887390A (ja) * 1994-09-20 1996-04-02 Fujitsu Ltd 印刷装置を有するネットワークシステム,ネットワークシステム用印刷装置,ネットワークシステム用サーバ装置およびネットワークシステム用端末装置
US5664075A (en) * 1995-10-17 1997-09-02 Xerox Corporation Print job identification and synchronization between NetWare PServer and atlas RPrinter protocol gateway
US6058448A (en) * 1995-12-19 2000-05-02 Micron Technology, Inc. Circuit for preventing bus contention
US6065052A (en) * 1996-07-01 2000-05-16 Sun Microsystems, Inc. System for maintaining strongly sequentially ordered packet flow in a ring network system with busy and failed nodes
US6064672A (en) * 1996-07-01 2000-05-16 Sun Microsystems, Inc. System for dynamic ordering support in a ringlet serial interconnect
US5938747A (en) * 1997-03-13 1999-08-17 Adapter, Inc. Hardware command block delivery queue for host adapters and other devices with onboard processors
US6115756A (en) 1997-06-27 2000-09-05 Sun Microsystems, Inc. Electro-optically connected multiprocessor and multiring configuration for dynamically allocating time
US6122464A (en) * 1997-06-30 2000-09-19 Canon Kabushiki Kaisha Controller for controlling image formation apparatus
US5919268A (en) * 1997-09-09 1999-07-06 Ncr Corporation System for determining the average latency of pending pipelined or split transaction requests through using two counters and logic divider
US6353927B1 (en) * 1997-10-14 2002-03-05 Lucent Technologies Inc. Data download technique into installed memory
US6298421B1 (en) * 1998-01-12 2001-10-02 Brother Kogyo Kabushiki Kaisha Data storage device
US6205522B1 (en) * 1998-04-15 2001-03-20 Diamond Multimedia Systems, Inc. DSP code swapping with continuous DSP execution
US6148300A (en) 1998-06-19 2000-11-14 Sun Microsystems, Inc. Hybrid queue and backoff computer resource lock featuring different spin speeds corresponding to multiple-states
US6622164B1 (en) * 1998-09-11 2003-09-16 Quantum Corp. Mass storage device with network interface
FR2784478B1 (fr) * 1998-10-09 2000-11-17 Bull Sa Architecture de verrou pour grand systeme
US6434716B1 (en) * 1999-01-29 2002-08-13 Psiber Data Systems Inc. Network link tester device configured to selectively and automatically couple to a network transmit pair line or a node transmit pair line of a LAN port and determine available operational modes
US6356929B1 (en) * 1999-04-07 2002-03-12 International Business Machines Corporation Computer system and method for sharing a job with other computers on a computer network using IP multicast
US7552440B1 (en) * 1999-09-28 2009-06-23 Rockwell Automation Technologies, Inc. Process communication multiplexer
US7640315B1 (en) 2000-08-04 2009-12-29 Advanced Micro Devices, Inc. Implementing locks in a distributed processing system
DE10038779A1 (de) * 2000-08-09 2002-03-07 Schneider Automation Gmbh Verfahren zur Übertragung von Daten in ein oder aus einem Steuerungsgerät wie speicherprogrammierbare Steuerung sowie Steuerungsgerät
US6738852B1 (en) * 2000-09-27 2004-05-18 Palm Source, Inc. Palmtop computer expansion using shared memory access
US6988160B2 (en) * 2001-02-12 2006-01-17 P-Cube Ltd. Method and apparatus for efficient messaging between memories across a PCI bus
US7552216B2 (en) 2001-03-27 2009-06-23 Lexmark International, Inc. Method of sharing a printer
US7024414B2 (en) * 2001-08-06 2006-04-04 Sensage, Inc. Storage of row-column data
US7376956B2 (en) * 2002-09-10 2008-05-20 Toshiba Tec Kabushiki Kaisha System for performing multiple functions in parallel time
JP2004171411A (ja) * 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US7644288B2 (en) * 2003-03-19 2010-01-05 Ricoh Company, Ltd. Image forming apparauts that checks authenticity of an update program
US7665126B2 (en) * 2003-12-17 2010-02-16 Microsoft Corporation Mesh networks with exclusion capability
US20050272489A1 (en) * 2004-05-19 2005-12-08 Lee Steven K Strap with antenna and battery power
US20050265235A1 (en) * 2004-05-27 2005-12-01 International Business Machines Corporation Method, computer program product, and data processing system for improving transaction-oriented client-server application performance
JP2005352839A (ja) * 2004-06-11 2005-12-22 Matsushita Electric Ind Co Ltd データ通信装置
US7545272B2 (en) 2005-02-08 2009-06-09 Therasense, Inc. RF tag on test strips, test strip vials and boxes
US20060236011A1 (en) * 2005-04-15 2006-10-19 Charles Narad Ring management
US7689800B2 (en) 2005-05-12 2010-03-30 Microsoft Corporation Partition bus
US20060277126A1 (en) * 2005-06-06 2006-12-07 Intel Corporation Ring credit management
US20070078894A1 (en) * 2005-09-30 2007-04-05 Rothman Michael A System and method for unified SKU (stock keeping unit) enablement
US7926013B2 (en) * 2007-12-31 2011-04-12 Intel Corporation Validating continuous signal phase matching in high-speed nets routed as differential pairs
JP5012628B2 (ja) * 2008-04-04 2012-08-29 日本電気株式会社 メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法
US8555292B2 (en) * 2008-06-27 2013-10-08 Microsoft Corporation Synchronizing communication over shared memory
US8635412B1 (en) * 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US8863141B2 (en) 2011-12-14 2014-10-14 International Business Machines Corporation Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history
US8694995B2 (en) 2011-12-14 2014-04-08 International Business Machines Corporation Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment
US8903994B2 (en) * 2012-03-20 2014-12-02 Drw Technologies Llc Read-throttled input/output scheduler
JP6310260B2 (ja) * 2014-01-20 2018-04-11 株式会社荏原製作所 基板処理装置内の複数の処理ユニットを調整するための調整装置、および該調整装置を備えた基板処理装置
US10198397B2 (en) * 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Flow control in remote direct memory access data communications with mirroring of ring buffers
CN115437798A (zh) * 2021-06-23 2022-12-06 北京车和家信息技术有限公司 共享内存的数据处理方法、装置、设备和介质
CN115442317B (zh) * 2021-12-17 2023-10-10 北京罗克维尔斯科技有限公司 报文处理方法、装置、系统、设备及介质
CN117407148A (zh) * 2022-07-08 2024-01-16 华为技术有限公司 数据写入方法、读取方法、装置、电子设备以及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4884197A (en) * 1985-02-22 1989-11-28 Intergraph Corporation Method and apparatus for addressing a cache memory
DE3689151D1 (de) * 1986-12-30 1993-11-11 Ibm Nicht-sperrender Warteschlangenmechanismus.
FR2625392B1 (fr) * 1987-12-24 1993-11-26 Quinquis Jean Paul Circuit de gestion de pointeurs d'ecriture de files tampons notamment pour commutateur temporel de paquets auto-acheminables
US5148536A (en) * 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
US5053945A (en) * 1988-10-06 1991-10-01 Alphatronix System and method for performing a multi-file transfer operation
US4920487A (en) * 1988-12-12 1990-04-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Method of up-front load balancing for local memory parallel processors
US5036459A (en) * 1989-03-09 1991-07-30 U.S. Philips Corporation Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism
DE69029995T2 (de) * 1989-11-09 1997-08-21 Ibm Multiprozessor mit relativ atomaren Befehlen
JPH0619759B2 (ja) * 1990-05-21 1994-03-16 富士ゼロックス株式会社 マルチプロセッサシステムにおける相互通信方法
US5276896A (en) * 1990-06-11 1994-01-04 Unisys Corporation Apparatus for implementing data communications between terminal devices and user programs
US5457793A (en) * 1992-03-30 1995-10-10 International Business Machines Corporation Software cache management of a shared electronic store in a supplex
US5299313A (en) * 1992-07-28 1994-03-29 3Com Corporation Network interface with host independent buffer management
US5455924A (en) * 1993-02-09 1995-10-03 Intel Corporation Apparatus and method for partial execution blocking of instructions following a data cache miss

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005513610A (ja) * 2001-12-14 2005-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 複数のプロセッサを有するデータ処理システムおよび複数のプロセッサを有するデータ処理システムにおける通信手段

Also Published As

Publication number Publication date
EP0710906B1 (en) 2001-05-02
DE69520819D1 (de) 2001-06-07
EP0710906A1 (en) 1996-05-08
US5548728A (en) 1996-08-20
DE69520819T2 (de) 2001-10-25

Similar Documents

Publication Publication Date Title
JP3535634B2 (ja) ネットワークプロトコル判断方法、ネットワークボード、及び周辺機器
JP3651987B2 (ja) 再プログラム可能ネットワーク通信装置及びネットワーク通信装置の再プログラム方法
JPH08227402A (ja) 共用メモリのバス競合の削減方法
JP3796282B2 (ja) ネットワーク通信装置
JP3689463B2 (ja) アービトレーション装置
EP0835485B1 (en) Network board which responds to status changes of its installed peripheral by generating a testpage
US5828863A (en) Interface device connected between a LAN and a printer for outputting formatted debug information about the printer to the printer
US5935262A (en) Outputting a network device log file
JP2539614B2 (ja) ポインタアドレスを発生するための装置および方法
US5606671A (en) Serial port using non-maskable interrupt terminal of a microprocessor
US5852746A (en) System for transmitting a message using status button to system administrator by using a signal comprising predetermined number of changes effected over a period
CN115827524A (zh) 一种数据传输方法以及装置
EP1234235B1 (en) Method and apparatus for remotely debugging computer software over a serial bus
JPH08278953A (ja) 計算機システムにおける排他制御方式
WO2001040945A2 (en) Method and apparatus for providing secure remote debugging of computer software over a serial bus
Carboney USB97C102 Programmers Reference Guide
Carboney APPLICATION NOTE 8.19 USB97C102 Programmers Reference Guide

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20030107