(57)【要約】【課題】ＭＰＵの性能に応じた性能を出せるコントローラを得る。【解決手段】ＭＰＵ３と、デバイスメモリ４と、ＰＣパラメータ格納部２１と、アドレス範囲指定レジスタ８と、データ書込みに応じ対象アドレスを監視し設定範囲内のアドレスと判断すると指令信号を出力するデバイスメモリアクセスアドレス監視機構５と、該監視機構５からの指令信号に基き前記データを格納するデータバッファレジスタ６と、前記データの転送先であるインテリジェントユニットのスロット番号を格納するスロット番号レジスタ１０と、前記転送先ユニットのバッファメモリアドレスを格納するバッファメモリアドレスレジスタと、前記データ，スロット番号，バッファメモリアドレスを格納・出力するキュー１３と、キュー１３からのデータとスロット番号とバッファメモリアドレスに基きトランザクションを生成するトランザクション生成機構１２とを備えたコントローラ。【選択図】        図１
2004199132.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと、デバイスメモリと、ＰＣパラメータ格納部と、
先頭アドレス及び最終アドレスを格納するアドレス範囲指定レジスタと、
前記マイクロプロセッサによる前記デバイスメモリへのデータの書込みに応じてアクセスの対象アドレスを監視し前記アドレス範囲指定レジスタで設定された範囲内のアドレスであると判断した場合に指令信号を出力するデバイスメモリアクセスアドレス監視機構と、
このデバイスメモリアクセスアドレス監視機構から出力される指令信号に基き前記データを格納するデータバッファレジスタと、
前記データの転送先であるインテリジェントユニットのスロット番号を格納するスロット番号レジスタと、
前記転送先のインテリジェントユニットのバッファメモリアドレスを格納するバッファメモリアドレスレジスタと、
前記データと前記スロット番号と前記バッファメモリアドレスとを入力し一時格納するキューと、
このキューから出力されたデータとスロット番号とバッファメモリアドレスに基きトランザクションを生成しシステムバス上に発行するトランザクション生成機構
とを備えたことを特徴とするコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コントローラに関するものである。
【０００２】
【従来の技術】
一般的な、組み込まれた複数の機器間をシステムバスで接続しデータの授受を行うシステムとして、例えば、システムバス，コントローラ，コントローラのスレーブとして動作するインテリジェントユニットを含むものがある。
【０００３】
コントローラは内部にマイクロプロセッサ（以下適宜、「ＭＰＵ」と記す）とデバイスの情報を格納するデバイスメモリとを搭載し、ユーザの制御プログラムを実行し、システム全体を制御する。
【０００４】
インテリジェントユニットとは、内部に、ＭＰＵと、コントローラとデータをやりとりするためのバッファメモリとを搭載し、独自のソフトウェアを実行でき、コントローラとは独立し自律的に振る舞えるユニットのことを指す。ちなみにユニットは、このようなインテリジェントユニットと、ＭＰＵを内部に持たない非インテリジェントユニットとに大別される。
【０００５】
なお、より一般的な、複数の情報処理装置間のデータ通信の構成として、当該複数の情報処理装置と別に、外部に共有メモリを設け、当該共有メモリを介して、複数の情報処理装置間で、非同期にデータの授受を行うものもある（例えば、特許文献１）。
【０００６】
【特許文献１】
特開平１−２６１７６８号公報（図）
【０００７】
【発明が解決しようとする課題】
以上に述べた、従来の一般的なものでは、コントローラが、インテリジェントユニット側のメモリすなわちバッファメモリへアクセスするために、一旦、コントローラ内部のデバイスメモリにデータをセットし、その後、デバイスメモリにセットされたデータを、システムバスへ出力していた。そのため、処理が複雑であり、システム全体としての性能の低下の要因となってしまう、といった問題点があった。
【０００８】
さらに、システムバス上には複数のインテリジェントユニットが装着されている。そのため、複数のインテリジェントユニットのそれぞれのバッファメモリへ転送する場合、処理時間は、それぞれのバッファメモリへのアクセス回数分が累積され、処理時間の増大によるシステム全体の効率が低下してしまう、といった問題点があった。
【０００９】
この発明は、上述の問題点を解決するためになされたもので、ＭＰＵの本来の性能に応じたシステム全体の処理性能を発揮することが出来るコントローラを得るものである。
【００１０】
【課題を解決するための手段】
この発明に係るコントローラは、ＭＰＵと、デバイスメモリと、ＰＣパラメータ格納部と、先頭アドレス及び最終アドレスを格納するアドレス範囲指定レジスタと、前記ＭＰＵによる前記デバイスメモリへのデータの書込みに応じてアクセスの対象アドレスを監視し前記アドレス範囲指定レジスタで設定された範囲内のアドレスであると判断した場合に指令信号を出力するデバイスメモリアクセスアドレス監視機構と、このデバイスメモリアクセスアドレス監視機構から出力される指令信号に基き前記データを格納するデータバッファレジスタと、前記データの転送先であるインテリジェントユニットのスロット番号を格納するスロット番号レジスタと、前記転送先のインテリジェントユニットのバッファメモリアドレスを格納するバッファメモリアドレスレジスタと、前記データと前記スロット番号と前記バッファメモリアドレスとを入力し一時格納するキューと、このキューから出力されたデータとスロット番号とバッファメモリアドレスに基きトランザクションを生成し前記システムバス上に発行するトランザクション生成機構とを備えたものである。
【００１１】
【発明の実施の形態】
実施の形態１．
この発明の第一の実施の形態によるコントローラを、図１乃至図６を用いて説明する。
図１はこの実施の形態によるコントローラの回路ブロックを示したものである。
図において、１はシステムバス、２はコントローラ、３はＭＰＵ、４はデバイスメモリ、５は後述するアドレスバス１５を監視するデバイスメモリアクセスアドレス監視機構、６はデバイスメモリアクセスアドレス監視機構５から出力される指令信号５Ａにより、データバス１６上のデータをラッチ（保持）するデータバッファレジスタ、８はｎ個のアドレス範囲指定レジスタ、１０はｎ個のスロット番号レジスタ、１１はｎ個のバッファメモリアドレスレジスタ、１２は、後述するキュー１３から出力されたデータバッファレジスタ６に格納されているデータ，スロット番号，バッファメモリアドレスを元にシステムバス１上に発行するコマンド，アドレス，データを生成するトランザクション生成機構、１３は、データバッファレジスタ６に格納されているデータとスロット番号レジスタ１０に格納されているスロット番号とバッファメモリアドレスレジスタ１１に格納されているバッファメモリアドレスとを格納してそれらデータを先入れ先出しするキュー（ＦＩＦＯメモリ）、１４は、トランザクション生成機構が出力したコマンド、アドレス、データをシステムバス上に電気信号として駆動するバスＩ／Ｆ、１５はアドレスバス、１６はデータバス、２１はＰＣパラメータ格納部、２２はＩ／Ｏ割付テーブルである。
【００１２】
５Ａは指令信号線であり、６Ａ，８Ａ，１０Ａ，１１Ａ，１２Ａ，１３Ａはそれぞれの機能部間を接続するローカルバス、１２Ｂはトランザクションの完了を示すトランザクション完了信号である。
【００１３】
デバイスメモリアクセスアドレス監視機構５はＭＰＵ３から出力されたアドレスバス１５上の信号を監視し、アドレス範囲指定レジスタ８で指定されたアドレス範囲であるか診断する。ｎ個あるアドレス範囲指定レジスタ８のうち、どの指定レジスタにヒットしたかに応じて、ｎ本の指令信号５Ａの内の１本を出力する。
指令信号５Ａの信号により、データバッファレジスタ６はデータバス１６に出力されているデータをラッチする。
【００１４】
スロット番号レジスタ１０とバッファメモリアドレスレジスタ１１とは、出力データの対象となるインテリジェントユニット（図示せず）のスロット番号とバッファメモリのアドレスとをそれぞれ指定するレジスタである。
【００１５】
トランザクション生成機構１２はシステムバス１に出力するトランザクションを生成する。なお、トランザクションについては後で詳述する。
【００１６】
キュー１３は、データバッファレジスタ６，スロット番号レジスタ１０，バッファメモリアドレスレジスタ１１が出力するデータを、指令信号５Ａに従い、一時的に蓄えるＦＩＦＯメモリである。ＭＰＵ３が発行するバスサイクルと、トランザクション生成機構１２が発行するバスサイクルには、性能に違いがあり、一般的に、ＭＰＵ３が発行するバスサイクルの方が、サイクル時間が短く、性能が高い。キュー１３が存在しない構成において、ＭＰＵ３がインテリジェントユニットのバッファメモリにアクセスする場合、ＭＰＵ３のバスサイクル時間は、トランザクション生成機構１２が発行するバスサイクルが完了するまで待たされるため、トランザクション生成機構１２が発行するバスサイクル時間とほぼ同じとなり、その間、ＭＰＵ３は別の処理を行なうことができない。
【００１７】
キュー１３が存在する構成において、ＭＰＵ３が、インテリジェントユニットのバッファメモリにアクセスする場合、ＭＰＵ３が発行するバスサイクルの情報は、データバッファレジスタ６，スロット番号レジスタ１０，バッファメモリアドレスレジスタ１１を介し、キュー１３に蓄えられるため、ＭＰＵ３が発行するバスサイクル自体は、トランザクション生成機構１２が発行するバスサイクルの完了を待たずに終了することができる。ＭＰＵ３が発行するバスサイクル終了後、トランザクション生成機構１２は、キュー１３に蓄えられたＭＰＵ３のバスサイクルの情報に基づき、システムバス１にバスサイクルを発行する。従って、ＭＰＵ３は、キュー１３がフル状態になるまでトランザクション生成機構１２が発行するバスサイクルの完了を待たず、システムバス１上のトランザクションとは非同期に、ＭＰＵ３のバスサイクルを発行，完了できる。そのため、ＭＰＵ３の処理性能が向上する。
【００１８】
図２は、ＰＣパラメータ格納部２１内のＩ／Ｏ割付テーブル２２のデータ構成を示している。
構成ははじめにユニット枚数があり、次にユニット毎に装着スロット番号，種別，そのユニット用に使用するデバイスメモリ４の先頭アドレス，最終アドレス，データを書き込むインテリジェントユニット側のバッファメモリのアドレスを格納する。以下同様に各ユニットについて同じ構成でパラメータを設定する。
【００１９】
従来例のものでは装着スロットと種別のみが設定されていたのに対し、この実施の形態のものにおいては、新たに各々のインテリジェントユニットに対応して使用するデバイスメモリ４の先頭アドレス，最終アドレス，データを書きこむインテリジェントユニット側のバッファメモリのアドレスが含まれる。
【００２０】
図３は図１の回路と図２のパラメータとで実現されるデバイスメモリ４とバッファメモリ５２とのマッピングイメージを示したものである。
コントローラ２内のデバイスメモリ４にインテリジェントユニットのバファメモリ５２が写像されている。このようにデバイスメモリ４に記憶させたデータがバッファメモリ５２へ写像できれば、シーケンスプログラムも図１０のステップ１０４５に示す従来のもののような複雑な記述が不要になる。
【００２１】
図１の回路と、図２のパラメータから、どのようにして図３に示すようなバッファメモリ５２の更新が可能になるのか、すなわち、デバイスメモリの変更内容がどのようにバッファメモリ５２に反映されるのかを、図４乃至図７を用いて説明する。
図４はシステムバス１上を流れるトランザクションの詳細である。
コントローラ２はシステムバス１を介してインテリジェントユニットのバッファメモリにアクセスする。その際、バスコマンドとアドレスとデータとを一つに組み合わせて、トランザクションという単位でアクセスする。バスコマンドにはアクセス対象，形態，対象インテリジェントユニットがパッキングされている。「アクセス対象」にはインテリジェントユニットが持ちインテリジェントユニットとコントローラ２間のデータ受け渡しのための入れ物であるバッファメモリ，外部との入出力情報を格納するＩ／Ｏ，インテリジェントユニットの種別を格納するユニット情報がある。
「形態」は読み出し，書き込みといったアクセスの種別を格納する。「対象インテリジェントユニット」はアクセスするバス上のインテリジェントユニットの番号を格納する。
バッファメモリのアドレスは、インテリジェントユニットに内蔵されているバッファメモリの先頭を０とし、目的のデータまでの相対的な距離（オフセットアドレスと称する）が設定される。
【００２２】
次に、コントローラ２のイニシャル処理について説明する。
図５はこの実施の形態のコントローラ２のイニシャル処理を示す図である。
ステップ６０１でＰＣパラメータ格納部２１を読み出し、ステップ６０２でＩ／Ｏ割付テーブル２２を読み出し、ステップ６０３でインテリジェントユニットの枚数を読み出し、この値を便宜上ｍとする。
ステップ６０４でｍの値をチェックし、ｍ＝０と判断した場合は、インテリジェントユニットが装着されていない、或いはユーザがＩ／Ｏ割付テーブルを設定する意思がないと判断し、エンドステップへ移行する。ステップ６０４でｍ≠０と判断した場合は、ステップ６０５へ進み、変数ｎを０クリアして初期化する。
【００２３】
ステップ６０６で変更ｎを更新する。（はじめてステップ６０６に移行した場合は、ｎ＝１でユニットＮｏ．１をポイントすることになる。）ステップ６０６Ａで、ｎ＝ｍ＋１か否かを判定する。ｎ＝ｍ＋１であれば、全てのインテリジェントユニットに対するコントローラ２の初期化が終了していることになる。ｎ≠ｍ＋１であれば、ステップ６０７でインテリジェントユニットＮｏ．ｎの種別を読み出す。ユニットにはインテリジェントユニットと非インテリジェントユニットとの２種類があるため、ステップ６０８で種別を確認し、インテリジェントユニットでないと判断した場合はステップ６０６に移行する。
【００２４】
ステップ６０９でユニットＮｏ．ｎの装着スロットを読み出し、ステップ６１０でユニットＮｏ．ｎ用の対象スロット番号レジスタにセットする。ステップ６１１でユニットＮｏ．ｎのデバイスメモリ先頭アドレスを読み出し、ステップ６１２でユニットＮｏ．ｎ用の先頭アドレス指定レジスタにセットする。ステップ６１３でユニットＮｏ．ｎのデバイスメモリ最終アドレスを読み出し、ステップ６１４でユニットＮｏ．ｎ用の最終アドレス指定レジスタにセットする。ステップ６１５でユニットＮｏ．ｎのバッファメモリアドレスを読み出し、ステップ６１６でユニットＮｏ．ｎ用のバッファメモリアドレス指定レジスタにセットする。ステップ６１７で変数ｎ＝ユニット枚数ｍと判断した場合は、全てのユニットに対するレジスタ設定が終了したことになるため、エンドステップへ移行する。ステップ６１７で変数ｎ≠ユニット枚数ｍと判断した場合はステップ６０６へ移行する。
以上により、コントローラ２のイニシャル処理が完了する。
【００２５】
図６は、デバイスメモリアクセスアドレス監視機構５がアドレスの一致を検出してから、システムバス１のトランザクションが完了するまでのタイミングを示している。
【００２６】
はじめに各信号の内容について説明し、ついで信号の動きを説明する。
基準クロックとはクロック信号であり、全ての回路が基準クロックに同期して動作する。ＭＰＵアドレス１５は、ＭＰＵが出力するアドレス信号。指令信号５Ａは、ＭＰＵアドレス１５が、アドレス範囲指定レジスタ８で指定された範囲内にヒットした時に、デバイスメモリアクセスアドレス監視機構５から出力されるワンショットパルス信号である。ｎ個あるアドレス範囲指定レジスタ８のうち、どの指定レジスタにヒットしたかに応じて、ｎ本の指令信号のうちの１本を出力する。
スロット番号１０Ａは指令信号５Ａによって指定されたスロット番号レジスタの内容である。バッファメモリアドレス１１Ａは、指令信号５Ａによって指定されたバッファメモリアドレスレジスタの内容である。スロット番号１０Ａとバッファメモリアドレス１１Ａとにより、アクセス対象が、どのスロットに装着されているユニットの、どのアドレスであるかが識別できる。
【００２７】
データ６Ａは、ライトデータである。バスコマンド／アドレス／データ１２Ａは、スロット番号１０Ａとバッファメモリアドレス１１Ａとデータ６Ａとを元に、トランザクション生成機構１２が生成したシステムバス用のコマンド，アドレス，データ信号である。
キュー内部カウンタは、キュー１３の内部にあるカウンタであり、カウンタ値は、キューイングされている有効データ数を示す。
システムバス１は、コントローラ２と外部のインテリジェントユニットとを結ぶシステムバスである。
トランザクション完了信号１２Ｂは、トランザクションの最後クロック時、トランザクション生成機構１２から、１クロック分出力される。
【００２８】
次に動作を説明する。
基準クロックのタイミング（以下適宜、クロックと記す）▲１▼の立ち上がりエッジで、デバイスメモリアクセスアドレス監視機構５は、アドレスバス１５を監視し、ＭＰＵアドレスが、アドレス範囲指定レジスタ８で指定された範囲内にヒットした時に、ｎ個あるアドレス範囲指定レジスタのうち、どの指定レジスタにヒットしたかに応じて、指令信号５Ａを出力する。
クロック▲２▼の立ち上がりエッジで、スロット番号レジスタ１０，バッファメモリアドレスレジスタ１１は、それぞれｎ個のレジスタの内で指令信号５Ａで指定されることにより確定したレジスタの内容を、それぞれスロット番号１０Ａ、バッファメモリアドレス１１Ａに出力する。データバッファレジスタ６は、ＭＰＵのデータバス１６にアサートされているデータをラッチすると同時に、キュー１３に対して、データ６Ａを出力する。
クロック▲３▼の立ち上がりエッジで、キュー１３は内部カウンタの値を１インクリメントする。また、キュー１３に入力されるスロット番号１０Ａ，バッファメモリアドレス１１Ａ，データ６Ａをキューイングし、トランザクション生成機構１２に対し、ラッチされているスロット番号，バッファメモリアドレス，データを出力する。
【００２９】
クロック▲４▼の立ち上がりエッジで、トランザクション生成機構１２は、キュー１３の内部カウンタが０でないことから、キュー１３内にスロット番号，バッファメモリアドレス，データの確定データが格納されていると判断し、それらを元に、システムバス１に対しトランザクションを発行する。
トランザクションの発行完了、すなわち、インテリジェントユニットのバッファメモリへのライトが完了すると、その後、クロック▲５▼の立ち上がりエッジで、トランザクション生成機構１２は、キュー１３に対し、トランザクションの発行の完了信号を出力する。
【００３０】
クロック▲６▼の立ち上がりエッジで、キュー１３は、トランザクションの完了信号を受け、キュー１３の内部カウンタを１デクリメントする。システムバス１のトランザクション発行中に、さらに指令信号５Ａがアサートされた場合は、クロック▲６▼の立ち上がりエッジで、１デクリメントされても、キュー１３の内部カウンタの値が０にならない。その場合は、クロック▲６▼に続くクロックで、システムバス１に更にトランザクションが発行される。すなわち、キュー１３の内部のデータが全て出力され一掃されるまで（キュー１３の内部カウンタの値が０になるまで）、システムバス１のトランザクションは発行され続ける。
以上が、データライト時のバスアクセスの動作と、そのタイミングである。
上記により、図３で示したデバイスメモリ４の変更内容が、バッファメモリ２４へ反映される。
【００３１】
【発明の効果】
この発明は以上に述べたとおり、予め、パラメータにて設定しておいたデバイスを更新することにより、自動的にインテリジェントユニットのバッファメモリも更新されるため、『ＴＯ  Ａ  Ｂ  Ｃ  Ｄ』に相当する命令が不要となり、ユーザＳ／Ｗのプログラミングの負荷が軽減される、といった効果を奏する。
また、トランザクション生成機構が発行するバスサイクルの完了を待たず、システムバス上のトランザクションとは非同期に、ＭＰＵのバスサイクルを発行，完了できる。そのため、システム全体の処理性能が向上する。
【図面の簡単な説明】
【図１】この発明の第一の実施の形態によるコントローラの回路ブロック図。
【図２】この発明の第一の実施の形態によるＰＣパラメータ格納部内のデータ構成を示す図。
【図３】デバイスメモリとバッファメモリとのマッピングイメージを示す図。
【図４】バス上を流れるトランザクションの詳細を示す図。
【図５】この発明の第一の実施の形態によるコントローラのイニシャル処理を示す図。
【図６】バスアクセスタイミングを示す図。
【符号の説明】
１  システムバス
２  コントローラ
３  ＭＰＵ
４  デバイスメモリ
５  デバイスメモリアクセスアドレス監視機構
６  データバッファレジスタ
８  アドレス範囲指定レジスタ
１０  スロット番号レジスタ
１１  バッファメモリアドレスレジスタ
１２  トランザクション生成機構
１３  キュー
１４  バスＩ／Ｆ
１５  アドレスバス
１６  データバス
２１  ＰＣパラメータ格納部
２２  Ｉ／Ｏ割付テーブル
【図１】
2004199132.tif 000003
【図２】
2004199132.tif 000004
【図３】
2004199132.tif 000005
【図４】
2004199132.tif 000006
【図５】
2004199132.tif 000007
【図６】
2004199132.tif 000008