JP3689463B2 - アービトレーション装置 - Google Patents

アービトレーション装置 Download PDF

Info

Publication number
JP3689463B2
JP3689463B2 JP28615795A JP28615795A JP3689463B2 JP 3689463 B2 JP3689463 B2 JP 3689463B2 JP 28615795 A JP28615795 A JP 28615795A JP 28615795 A JP28615795 A JP 28615795A JP 3689463 B2 JP3689463 B2 JP 3689463B2
Authority
JP
Japan
Prior art keywords
neb
access
printer
network
microprocessor
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
JP28615795A
Other languages
English (en)
Other versions
JPH08227401A (ja
Inventor
オザイ オクタイ オズマン
エー. サミット エドワード
エフ. ベック グレゴリー
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 Inc
Original Assignee
Canon 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 Inc filed Critical Canon Inc
Publication of JPH08227401A publication Critical patent/JPH08227401A/ja
Application granted granted Critical
Publication of JP3689463B2 publication Critical patent/JP3689463B2/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
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)

Description

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

Claims (5)

  1. 第1クロックを有する第1プロセッサーが発行した第1アクセスリクエストと、前記第1クロックと異なる第2クロックを有する第2プロセッサーからの第2アクセスリクエストとの間のアービトレーションを行う、共有RAMの為のアービトレーション装置であって、
    前記第1アクセスリクエストを前記第2クロックに同期させる同期手段と、
    前記第2クロックに同期させた第1及び第2アクセスリクエストのいづれか一方を、前記第2クロックの1クロックに満たない断片部分で遅延させる遅延手段と、
    前記第2クロックに同期させ、前記遅延手段により一方を遅延させた第1及び第2アクセスリクエストに基づいて、前記第1アクセスリクエストが前記第2アクセスリクエストより先に到着したときは、前記第1アクセスリクエストに対する第1アクセス許可信号をアクティブにし、前記第2アクセスリクエストは前記第1アクセスリクエストの処理が終了するまで延期し、前記第2アクセスリクエストが前記第1アクセスリクエストより先に到着したときは、前記第2アクセスリクエストに対する第2アクセス許可信号をアクティブにし、前記第1アクセスリクエストは前記第2アクセスリクエストの処理が終了するまで延期する延期手段と、
    前記第1アクセス許可信号を前記第1クロックに再同期する再同期手段と、
    前記第1アクセス許可信号が前記延期手段から出力されたときは前記第1プロセッサーを前記共有RAMにアクセスさせ、前記第2アクセス許可信号が前記延期手段から出力されたときは前記第2プロセッサーを前記共有RAMにアクセスさせるように、前記第1及び第2アクセス許可信号に応答する共有RAMインターフェースとを有することを特徴とするアービトレーション装置。
  2. 前記第1及び第2プロセッサーは第1及び第2の個別のバスにそれぞれ接続されており、
    前記第1及び第2のバス上のアドレスをそれぞれラッチするための第1及び第2アドレスラッチを更に有し、
    前記共有RAMインターフェースは、前記第1アクセス許可信号がアクティブであるときは、前記第1アドレスラッチでラッチされたアドレスで前記共有RAMへのアクセスを提供し、前記第2アクセス許可信号がアクティブであるときは、前記第2アドレスラッチでラッチされたアドレスで前記共有RAMへのアクセスを提供することを特徴とする請求項1に記載のアービトレーション装置。
  3. 前記第1及び第2バスのどちらか一方が、前記共有RAMのバスと異なるバス幅を有し、前記共有RAMインターフェースは、第1及び第2バスのどちらか一方の上位及び下位部分を前記共有RAM上へストローブするための上位及び下位ストローブ信号を生成する、ストローブ発生手段を含むことを特徴とする請求項2に記載のアービトレーション装置。
  4. 前記第1アドレスラッチ上のアドレス情報を復号するための第1復号手段と、前記第2アドレスラッチ上のアドレス情報を復号するための第2復号手段とを更に有し、
    ラッチされたアドレス情報が前記共有RAMのアドレスに対応する場合は、前記第1及び第2復号手段はそれぞれ前記第1及び第2アクセスリクエストを生成することを特徴とする請求項2に記載のアービトレーション装置。
  5. 前記延期手段は、アクセスリクエストが延期されている間、アクティブにされる、第1及び第2準備未完了信号を生成し、前記第1及び第2プロセッサーは待機状態信号を生成することで、前記第1及び第2準備未完了信号に応答することを特徴とする請求項1に記載のアービトレーション装置。
JP28615795A 1994-11-04 1995-11-02 アービトレーション装置 Expired - Fee Related JP3689463B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/336,056 US5557783A (en) 1994-11-04 1994-11-04 Arbitration device for arbitrating access requests from first and second processors having different first and second clocks
US08/336056 1994-11-04

Publications (2)

Publication Number Publication Date
JPH08227401A JPH08227401A (ja) 1996-09-03
JP3689463B2 true JP3689463B2 (ja) 2005-08-31

Family

ID=23314378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28615795A Expired - Fee Related JP3689463B2 (ja) 1994-11-04 1995-11-02 アービトレーション装置

Country Status (4)

Country Link
US (1) US5557783A (ja)
EP (1) EP0710911B1 (ja)
JP (1) JP3689463B2 (ja)
DE (1) DE69524846T2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805871A (en) * 1995-07-21 1998-09-08 Ricoh Company Ltd. System and method for phase-synchronous, flexible-frequency clocking and messaging
US5805882A (en) * 1996-07-19 1998-09-08 Compaq Computer Corporation Computer system and method for replacing obsolete or corrupt boot code contained within reprogrammable memory with new boot code supplied from an external source through a data port
JP3524337B2 (ja) * 1997-07-25 2004-05-10 キヤノン株式会社 バス管理装置及びそれを有する複合機器の制御装置
US6035360A (en) * 1997-10-29 2000-03-07 International Business Machines Corporation Multi-port SRAM access control using time division multiplexed arbitration
US6401176B1 (en) * 1997-11-14 2002-06-04 Agere Systems Guardian Corp. Multiple agent use of a multi-ported shared memory
US6314499B1 (en) * 1997-11-14 2001-11-06 Lucent Technologies Inc. Non-preemptive memory locking mechanism in a shared resource system
GB9802096D0 (en) * 1998-01-30 1998-03-25 Sgs Thomson Microelectronics Shared memory access
US6205522B1 (en) * 1998-04-15 2001-03-20 Diamond Multimedia Systems, Inc. DSP code swapping with continuous DSP execution
US6456628B1 (en) * 1998-04-17 2002-09-24 Intelect Communications, Inc. DSP intercommunication network
US6363492B1 (en) 1998-04-30 2002-03-26 Compaq Computer Corporation Computer method and apparatus to force boot block recovery
US6240519B1 (en) 1998-04-30 2001-05-29 Compaq Computer Corporation Computer method and apparatus to prompt for administrative password to flash a corrupted non-volatile memory
US6188249B1 (en) 1998-06-30 2001-02-13 Sun Microsystems, Inc. Asymmetric arbiter with fast signal path
JP2001034530A (ja) * 1999-07-16 2001-02-09 Mitsubishi Electric Corp マイクロコンピュータおよびメモリアクセス制御方法
US6640275B1 (en) * 1999-12-22 2003-10-28 Nortel Networks Limited System and method for data transfer between buses having different speeds
US6629253B1 (en) * 1999-12-30 2003-09-30 Intel Corporation System for efficient management of memory access requests from a planar video overlay data stream using a time delay
US6920572B2 (en) * 2000-11-15 2005-07-19 Texas Instruments Incorporated Unanimous voting for disabling of shared component clocking in a multicore DSP device
JP2004171411A (ja) * 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
TWI350451B (en) * 2007-09-06 2011-10-11 Ite Tech Inc Integrated memory control apparatus
KR102285749B1 (ko) * 2014-11-10 2021-08-05 삼성전자주식회사 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4764865A (en) * 1982-06-21 1988-08-16 International Business Machines Corp. Circuit for allocating memory cycles to two processors that share memory
JPS63316153A (ja) * 1987-06-18 1988-12-23 Nec Corp 同期式バス制御装置
US5005151A (en) * 1988-05-13 1991-04-02 Dallas Semiconductor Corporation Interleaved arbitration scheme for interfacing parallel and serial ports to a parallel system port
US5193193A (en) * 1988-09-14 1993-03-09 Silicon Graphics, Inc. Bus control system for arbitrating requests with predetermined on/off time limitations
US5179667A (en) * 1988-09-14 1993-01-12 Silicon Graphics, Inc. Synchronized DRAM control apparatus using two different clock rates
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5144692A (en) * 1989-05-17 1992-09-01 International Business Machines Corporation System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system
US5696899A (en) 1992-11-18 1997-12-09 Canon Kabushiki Kaisha Method and apparatus for adaptively determining the format of data packets carried on a local area network
US5611046A (en) 1992-11-18 1997-03-11 Canon Kabushiki Kaisha Method and apparatus for interfacing a peripheral to a local area network
JPH06161870A (ja) * 1992-11-26 1994-06-10 Nec Corp デュアルポートram回路

Also Published As

Publication number Publication date
DE69524846D1 (de) 2002-02-07
DE69524846T2 (de) 2002-07-11
US5557783A (en) 1996-09-17
EP0710911A1 (en) 1996-05-08
EP0710911B1 (en) 2002-01-02
JPH08227401A (ja) 1996-09-03

Similar Documents

Publication Publication Date Title
JP3651987B2 (ja) 再プログラム可能ネットワーク通信装置及びネットワーク通信装置の再プログラム方法
JP3796282B2 (ja) ネットワーク通信装置
JP3535634B2 (ja) ネットワークプロトコル判断方法、ネットワークボード、及び周辺機器
US5548728A (en) 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
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
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
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
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041108

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050107

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050613

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130617

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees