(57)【要約】【課題】排他処理を無くしてシステム全体の効率を向上させることを可能とした周辺装置へのアクセス制御方法及びそのような周辺装置を提供すること。【解決手段】ＣＰＵ１００による周辺装置３００からのデータの読み出しサイクルにおいて、周辺装置３００を特定するためのアドレスに加えて周辺装置３００のバッファ３０３に書き込む書き込みデータを、アドレスバス２０１を介して送信する。バッファ３０３への書き込みデータの書き込み結果を示す状態データを読み出しデータとしてデータバス２０２を介して読み出す。【選択図】図１
2012008960.tif 000002
【特許請求の範囲】
【請求項１】
アドレスバスとデータバスとを有するバスに接続された周辺装置に制御装置がアクセスするためのアクセス制御方法であって、
前記制御装置が前記周辺装置から読み出しデータを読み出すサイクルにおいて、
前記制御装置による前記読み出しデータの読み出し対象の周辺装置を特定するためのアドレスとともに該読み出しデータを読み出す周辺装置に書き込む書き込みデータを、前記制御装置から前記周辺装置に前記アドレスバスを介して送信し、
前記アドレスによって特定された前記周辺装置において前記書き込みデータを処理し、
前記アドレスによって特定された前記周辺装置から前記読み出しデータを読み出し、
前記読み出された読み出しデータを、前記周辺装置から前記制御装置に前記データバスを介して送信する、
ことを特徴とするアクセス制御方法。
【請求項２】
前記読み出しデータは、前記書き込みデータの処理結果を示すデータであることを特徴とする請求項１に記載のアクセス制御装置。
【請求項３】
前記書き込みデータの処理結果を示すデータは、前記サイクル内で前記書き込みデータが前記周辺装置に書き込まれたか否かを示すデータであることを特徴とする請求項２に記載のアクセス制御方法。
【請求項４】
前記書き込みデータの処理結果を示すデータは、前記サイクル内で前記書き込みデータを基にして演算された結果を示すデータであることを特徴とする請求項２に記載のアクセス制御方法。
【請求項５】
アドレスバスとデータバスとを有するバスに接続され、該バスを介して制御装置によってアクセスされる周辺装置であって、
前記制御装置による読み出しデータの読み出し対象の周辺装置を特定するためのアドレスとともに該読み出しデータを読み出す周辺装置に書き込む書き込みデータを保持する保持部と、
前記アドレスによって前記読み出し対象の周辺装置であると特定された場合に、前記保持部に保持された書き込みデータを処理する処理部と、
を具備し、
前記アドレスと前記書き込みデータとは前記制御装置の１つのサイクル内で前記制御装置から前記アドレスバスを介して送信され、前記読み出しデータは前記サイクルと同一サイクルにおいて前記データバスを介して送信されることを特徴とする周辺装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データバスとアドレスバスとを独立して有するバスに接続された周辺装置に対するアクセス制御方法及びそのような周辺装置に関する。
【背景技術】
【０００２】
ＣＰＵの周辺装置を制御する場合において、ＣＰＵは、周辺装置に内蔵されたレジスタに値を適宜書き込むことによって周辺装置の挙動を制御している。ここで、ＣＰＵ上では、単一のプログラムが動作することは少なく、複数のプログラムが複合的に動作することが多い。このような複数のプログラムの複合的な動作は、単純な割込み動作や、マルチスレッド、マルチタスク等の構成を採る。
【０００３】
あるデータ送信回路によるデータ送信動作を例にして従来の周辺装置へのアクセス制御動作を説明する。従来、データ送信回路を動作させる際にＣＰＵは、複数の周辺装置の中からデータ送信回路を特定するためのアドレスをアドレスバスを介して送信するとともに、該データ送信回路に実際に書き込むデータをデータバスを介して送信する。データ送信回路内のレジスタにはアドレス及びデータが書き込まれる。アドレス指定がなされた周辺装置においてはデータバスを介してレジスタに書き込まれたデータが、一旦、データ送信回路内のバッファ（ＦＩＦＯメモリ）に蓄積され、その後に所定の送信先に送信される。ここで、バッファは、ＣＰＵによるデータの書き込みとデータ送信回路によるデータの送信との間の時間差を吸収するために設けられている。
【０００４】
ところで、バッファは有限の容量しか持てないので、例えばデータの送信速度よりもＣＰＵからの書き込み速度のほうが速くなった場合にはバッファが満杯になることが起こり得る。バッファが満杯の状態でさらに書き込みレジスタにデータが書き込まれたとしても、バッファは書き込みレジスタに書き込まれたデータを蓄積することができない。この結果、書き込みレジスタに書き込まれたデータが欠落してしまうことになる。
【０００５】
このようなデータの欠落を防止するためには、データの書き込みに先立ってバッファにデータを受け入れるだけの空き容量があるのかを確認すれば良い。この場合、ＣＰＵは、バッファの空き容量の確認の結果、空き容量があればデータを書き込み、空き容量が無ければ空き容量ができるまでデータの書き込みを保留する。
【０００６】
ここで、複数のプログラムが同時に動作している状況を考える。例えば、複数のプログラムが同一の周辺装置にアクセスし得る構成では、２つのプログラムが入り乱れて同一の周辺装置にアクセスする場合がある。この場合、あるプログラムの動作に先立ってバッファの空きが確認されていても、そのプログラムによるデータの書き込みの前に別のプログラムの動作によってデータの書き込みがなされてしまうこともあり得る。この場合、バッファが満杯であるにもかかわらずにデータの書き込みが行われて上述したようなデータの欠落という不具合が生じる。
【０００７】
このような複数プログラムが同時動作した場合のデータの欠落を防ぐための手法の一つとして特許文献１等において開示された排他処理が知られている。排他処理とは、あるプログラムが動作している際に他のプログラムによるＣＰＵへの割込を禁止する処理である。このような排他処理によって、空き容量の確認からデータの書き込みまでの間、あるプログラムにＣＰＵを独占させてデータの欠落を防ぐことができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−００３３０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ここで、上述した排他処理においては、割り込みを禁止する処理自体や再度の割り込みを許可する処理自体にもＣＰＵの動作が必要となる。即ち、これらの処理においてもＣＰＵが独占されることになり、その結果、別のプログラムの動作が妨げされる恐れがある。さらに、割り込みが禁止されている区間では、特定のプログラムにのみＣＰＵが独占されるので、システム全体としての効率が低下するおそれもある。
【００１０】
本発明は、上記の事情に鑑みてなされたもので、排他処理を無くしてシステム全体の効率を向上させることを可能とした周辺装置へのアクセス制御方法及びそのような周辺装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成するために、本発明の第１の態様のアクセス制御方法は、アドレスバスとデータバスとを有するバスに接続された周辺装置に制御装置がアクセスするためのアクセス制御方法であって、前記制御装置が前記周辺装置から読み出しデータを読み出すサイクルにおいて、前記制御装置による読み出しデータの読み出し対象の周辺装置を特定するためのアドレスとともに該読み出しデータを読み出す周辺装置に書き込む書き込みデータを、前記制御装置から前記周辺装置に前記アドレスバスを介して送信し、前記アドレスによって特定された前記周辺装置において前記書き込みデータを処理し、前記アドレスによって特定された前記周辺装置から前記読み出しデータを読み出し、前記読み出された読み出しデータを、前記周辺装置から前記制御装置に前記データバスを介して送信する、ことを特徴とする。
【００１２】
また、上記の目的を達成するために、本発明の第２の態様の周辺装置は、アドレスバスとデータバスとを有するバスに接続され、該バスを介して制御装置によってアクセスされる周辺装置であって、前記制御装置による読み出しデータの読み出し対象の周辺装置を特定するためのアドレスとともに該読み出しデータを読み出す周辺装置に書き込む書き込みデータを保持する保持部と、前記アドレスによって前記読み出し対象の周辺装置であると特定された場合に、前記保持部に保持された書き込みデータを処理する処理部と、を具備し、前記アドレスと前記書き込みデータとは前記制御装置の１つのサイクル内で前記制御装置から前記アドレスバスを介して送信され、前記読み出しデータは前記サイクルと同一サイクルにおいて前記データバスを介して送信されることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、排他処理を無くしてシステム全体の効率を向上させることを可能とした周辺装置へのアクセス制御方法及びそのような周辺装置を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係るデータ処理システムの構成を示す図である。
【図２】本発明の第１の実施形態におけるアドレスバス及びデータバスのフィールドを示す図である。
【図３】本発明の第１の実施形態に係るデータ処理システムの動作を示すタイミングチャートである。
【図４】本発明の第１の実施形態に係るデータ処理システムのＣＰＵの動作を示すフローチャートである。
【図５】本発明の第２の実施形態に係るデータ処理システムの構成を示す図である。
【図６】本発明の第２の実施形態に係るデータ処理システムの動作を示すタイミングチャートである。
【図７】本発明の第２の実施形態に係るデータ処理システムのＣＰＵの動作を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。  
［第１の実施形態］
まず、本発明の第１の実施形態について説明する。図１は、本発明の第１の実施形態に係るデータ処理システムの構成を示す図である。図１に示すデータ処理システムは、ＣＰＵ１００と、バス２００と、周辺装置３００とを有している。ＣＰＵ１００は、バス２００を介して周辺装置３００にアクセス自在になされている。
【００１６】
制御装置としての機能を有するＣＰＵ１００は、周辺装置３００に種々のデータを書き込んだり、周辺装置３００から種々のデータを読み出したりすることで周辺装置３００の挙動を制御する。バス２００は、アドレスバス２０１と、データバス２０２とを有しており、ＣＰＵ１００と周辺装置３００との間で各種のデータ転送を行うために用いられるデータ経路である。周辺装置３００は、ＣＰＵ１００の制御に従って所定の処理を実行する。図１は、周辺装置３００が、ＣＰＵ１００によって書き込まれたデータを外部の所定の送信先に送信するデータ送信回路である例を示している。
【００１７】
本実施形態における周辺装置３００は、レジスタ３０１と、ゲート回路３０２，３０６と、バッファ３０３と、アドレスデコーダ３０４と、制御カウンタ３０５とを有している。保持部としての機能を有するレジスタ３０１は、ＣＰＵ１００からバス２００を介して送信された各種のデータを保持する。本実施形態におけるレジスタ３０１は、ＣＰＵ１００から送信されたアドレスを保持するレジスタと、ＣＰＵ１００から送信された書き込みデータを保持するレジスタと、ＣＰＵ１００への読み出しデータを保持するレジスタとを有している。ここで、アドレスは、ＣＰＵ１００によって読み出しデータを読み出す周辺装置を特定するための情報である。
【００１８】
ゲート回路３０２は、制御カウンタ３０５からの指令に従ってレジスタ３０１に保持されている書き込みデータを読み出してバッファ３０３に入力する。処理部としての機能を有するバッファ３０３は、例えばＦＩＦＯ（First-in First-Out）メモリから構成され、制御カウンタ３０５からの指令に応じて、ゲート回路３０２を介して入力されてきた書き込みデータを記憶する。また、バッファ３０３は、制御カウンタ３０５からの指令に応じて、それまで記憶していた書き込みデータを送信データとして周辺装置３００の外部の所定の送信先に出力する。
【００１９】
アドレスデコーダ３０４は、レジスタ３０１に保持されているアドレスの値をデコードし、デコードしたアドレスの値が周辺装置３００を示す値である場合に当該周辺装置３００をセレクト状態とすべく、制御カウンタ３０５とゲート回路３０６とに信号を入力する。周辺装置３００がセレクト状態となることにより、周辺装置３００とＣＰＵ１００とがデータバス２０２を介してデータ通信自在な状態となる。
【００２０】
制御カウンタ３０５は、アドレスデコーダ３０４からの信号を受けて、ゲート回路３０２による書き込みデータのバッファ３０３への出力を許可するための信号をゲート回路３０２に出力する。また、制御カウンタ３０５は、バッファ３０３の空き容量を監視しており、この監視結果に基づいて、書き込みデータの書き込みの成否を示すデータ（状態データ）を読み出しデータとしてゲート回路３０６に出力する。
【００２１】
ゲート回路３０６は、制御カウンタ３０５から入力された状態データを読み出しデータとしてレジスタ３０１に入力する。
以下、図１に示したデータ処理システムの動作について説明する。本実施形態では、レジスタからのデータの読み出しとレジスタへのデータの書き込みとを１回の読み出しサイクル中に行う。このために、読み出しサイクルにおいて、ＣＰＵ１００は、アドレスとともに周辺装置３００への書き込みデータを、アドレスバス２０１を介して送信する。図２は、本実施形態におけるアドレスバス及びデータバスのフィールドを示す。図２の上段がアドレスバスのフィールドを示し、図２の下段がデータバスのフィールドを示している。図２の上段に示すように、本実施形態では、アドレスバス２０１を介して送信するデータのうちの上位ビットをアドレスに割り当て、下位ビットを書き込みデータに割り当てる。なお、説明を簡単にするために、以下の説明ではアドレスの使用ビット数と書き込みデータの使用ビット数とはともに固定であるとする。また、アドレスと書き込みデータとは連続データとして良いが、アドレスと書き込みデータとの間に両者を区分けするためのデータを追加するようにしても良い。また、データバス２０２を介して送信される読み出しデータとしては書き込みデータの書き込みの可否を示すデータを割り当てる。
【００２２】
ＣＰＵ１００により送信されたアドレスと書き込みデータとは、レジスタ３０１内の対応するレジスタにそれぞれ保持される。アドレスデコーダ３０４は、レジスタ３０１に保持されたアドレスを読み出してデコードする。デコードしたアドレスが周辺装置３００を示す値であった場合に、アドレスデコーダ３０４は、周辺装置３００を選択状態とすべく、制御カウンタ３０５とゲート回路３０６とに信号を入力する。
【００２３】
アドレスデコーダ３０４からの信号を受けて制御カウンタ３０５は、バッファ３０３の空き容量を検出する。そして、バッファ３０３が書き込みデータを書き込める程度の空き容量を有している場合に、制御カウンタ３０５は、ゲート回路３０２とバッファ３０３とにそれぞれの動作を許可する信号を入力するとともに、バッファ３０３への書き込みデータの書き込みが完了した（ＯＫ）旨を示す値「０」を状態データとしてゲート回路３０６に入力する。この場合、レジスタ３０１に保持されていた書き込みデータがゲート回路３０２を介してバッファ３０３に記憶された後、所定の送信先に送信される。一方、バッファ３０３が十分な空き容量を有していない場合に、制御カウンタ３０５は、ゲート回路３０２とバッファ３０３とにそれぞれの動作を禁止する信号を入力するとともに、バッファ３０３への書き込みデータの書き込みが失敗した（ＮＧ）旨を示す値「１」を状態データとしてゲート回路３０６に入力する。この場合、レジスタ３０１に保持されていた書き込みデータはバッファ３０３に記憶されない。
【００２４】
制御カウンタ３０５からゲート回路３０６を介して入力された状態データはレジスタ３０１に保持される。ＣＰＵ１００はこのレジスタ３０１に記憶された状態データを読み出しデータとして読み出す。この読み出しデータにより、ＣＰＵ１００は書き込みデータが正しく送信されたか否かを判定する。
【００２５】
以上の動作を図３のタイミングチャートに示す。図３に示したように、本実施形態では、プログラムの動作に伴って実行されるＣＰＵ１００の１つの読み出しサイクル内で、データの書き込みとデータの読み出しとが同時に行われる。
ＣＰＵ１００の動作は図４に示すものとなる。図４に示すように、ＣＰＵ１００は、周辺装置３００のレジスタ３０１にアドレスと書き込みデータとを書き込むとともに、レジスタ３０１から読み出しデータを読み出す（ステップＳ１０１）。読み出しデータを読み出した後、ＣＰＵ１００は、読み出しデータとしての状態データの値から書き込みデータのバッファ３０３への書き込み（即ち書き込みデータの送信）が完了したか否かを判定する（ステップＳ１０２）。ステップＳ１０２の判定において、状態データがＮＧを示す値「１」である場合に、ＣＰＵ１００は、処理をステップＳ１０１に戻して、同一の書き込みデータの書き込み動作を再び実行する。一方、ステップＳ１０２の判定において、状態データがＯＫを示す値「０」である場合に、ＣＰＵ１００は、図４の処理を終了させる。このような処理を行うことにより、ＣＰＵ１００はバッファ３０３に空きができた時点でバッファ３０３に書き込みデータを書き込むことができる。
【００２６】
以上説明したように、本実施形態においては、アドレスバスを介してアドレスと書き込みデータとを処理対象の周辺装置に送信するようにすることで、書き込みデータの書き込みに先立ってバッファの空き容量の確認を必要とせずに、不具合を抑止して書き込みデータの書き込みを行うことが可能である。また、１つのアクセスサイクル内では他のプログラムが介入してくる恐れもなくなり、排他処理も必要としない。したがって、ＣＰＵ１００の処理も図４で示したような簡素な処理シーケンスとしてプログラムの実行速度を高めることができる。
【００２７】
［第２の実施形態］
次に、本発明の第２の実施形態について説明する。第１の実施形態は周辺装置をデータ送信装置とした例である。これに対し、第２の実施形態は周辺装置を演算装置とした例である。図５は、本発明の第２の実施形態にデータ処理システムの構成を示す図である。図７に示すデータ処理システムは、ＣＰＵ１００と、バス２００と、周辺装置３１０とを有している。
【００２８】
以下、図１で説明したものと同様の構成については図１で示したのと同様の参照符号を付すことで説明を省略する。以下では、周辺装置３１０の構成について特に説明する。
本実施形態における周辺装置３１０は、レジスタ３１１と、ゲート回路３１２，３１６と、演算器３１３と、アドレスデコーダ３１４と、メモリ３１７とを有している。保持部としての機能を有するレジスタ３１１は、ＣＰＵ１００からバス２００を介して送信された各種のデータを保持する。本実施形態におけるレジスタ３１１もレジスタ３０１と同様に、ＣＰＵ１００から送信されたアドレスを保持するレジスタと、ＣＰＵ１００から送信された書き込みデータを保持するレジスタと、ＣＰＵ１００への読み出しデータを保持するレジスタとを有している。ただし、本実施形態においては、書き込みデータが演算器３１３における演算を実行するための演算基データであり、読み出しデータが演算器３１３における演算の結果を示す演算結果データである。ゲート回路３１２は、アドレスデコーダ３１４からの信号に従ってレジスタ３１１に保持されている書き込みデータを読み出して演算器３１３に入力する。処理部としての機能を有する演算器３１３は、ゲート回路３１２を介して入力されてきた書き込みデータ（演算基データ）を用いて四則演算等の所定の演算を実行する。メモリ３１７は、演算器３１３による演算の途中結果等のデータを記憶する。
【００２９】
アドレスデコーダ３１４は、レジスタ３１１に保持されているアドレスの値をデコードし、デコードしたアドレスの値が周辺装置３１０を示す値である場合に周辺装置３１０をセレクト状態とすべく、演算器３１３、ゲート回路３１２、３１６に信号を入力する。周辺装置３１０がセレクト状態となることにより、周辺装置３１０とＣＰＵ１００とがデータバス２０２を介してデータ通信自在な状態となる。
【００３０】
ゲート回路３１６は、演算器３１３による演算結果データを読み出しデータとしてレジスタ３１１に入力する。
以下、図５に示したデータ処理システムの動作について説明する。本実施形態においても、レジスタからのデータの読み出しとレジスタへのデータの書き込みとを１回の読み出しサイクル中に行う。このために、読み出しサイクルにおいて、ＣＰＵ１００は、アドレスとともに周辺装置３１０への書き込みデータを、アドレスバス２０１を介して送信する。この際の割り当ては図２で示したものと同様であり、第２の実施形態ではアドレスバス２０１を介して送信するデータの下位ビットに書き込みデータとしての演算基データを割り当てる点のみが異なる。
【００３１】
ＣＰＵ１００により送信されたアドレスと書き込みデータとは、レジスタ３１１内の対応するレジスタにそれぞれ保持される。アドレスデコーダ３１４は、レジスタ３１１に保持されたアドレスを読み出してデコードする。デコードしたアドレスが周辺装置３１０を示す値であった場合に、アドレスデコーダ３１４は、周辺装置３１０を選択状態とすべく、演算器３１３と、ゲート回路３１２、３１６とに信号を入力する。
【００３２】
アドレスデコーダ３１４からの信号を受けて演算器３１３は、ゲート回路３１２に対して入力された演算基データを用いて所定の演算を実行する。また、演算器３１３は、必要に応じてメモリ３１７に演算の途中結果のデータを記憶させるとともに、この途中結果のデータを用いて演算を行う。演算の終了後、演算器３１３は、演算結果を示すデータをゲート回路３１６に入力する。
【００３３】
演算器３１３からゲート回路３１６を介して入力された演算結果データはレジスタ３１１に保持される。ＣＰＵ１００はこのレジスタ３１１に記憶された演算結果データを読み出しデータとして読み出す。
以上の動作を図６のタイミングチャートに示す。図６に示したように、本実施形態においても、プログラムの動作に伴って実行されるＣＰＵ１００の１つの読み出しサイクル内で、データの書き込みとデータの読み出しとが同時に行われる。
【００３４】
ＣＰＵ１００の動作は図７に示すものとなる。図７に示すように、ＣＰＵ１００は、周辺装置３１０のレジスタ３１１にアドレスと書き込みデータとを書き込むとともに、レジスタ３１１から読み出しデータを読み出す（ステップＳ２０１）。読み出しデータとしての演算結果データを読み出した後、ＣＰＵ１００は、図７の処理を終了させる。
【００３５】
以上説明したように、本実施形態においては、アドレスバスを介してアドレスと書き込みデータとを処理対象の周辺装置に送信するようにすることで、演算器３１３における演算結果が上書きされる等して誤った演算結果が生成されるようなことがない。また、第１の実施形態と同様に、１つのアクセスサイクル内では他のプログラムが介入してくる恐れがなくなり、排他処理を必要としない。したがって、ＣＰＵ１００の処理も図７で示したような簡素な処理シーケンスとしてプログラムの実行速度を高めることができる。
【００３６】
以上実施形態に基づいて本発明を説明したが、本発明は上述した実施形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形や応用が可能なことは勿論である。上述した各実施形態では単一のＣＰＵ１００上でのプログラム実行環境の例について説明しているが、複数のＣＰＵ１００で単一の周辺装置３００を共有するような構成についても上述した各実施形態の手法を適用できる。
【００３７】
さらに、上記した実施形態には種々の段階の発明が含まれており、開示される複数の構成要件の適当な組合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、上述したような課題を解決でき、上述したような効果が得られる場合には、この構成要件が削除された構成も発明として抽出され得る。
【符号の説明】
【００３８】
１００…ＣＰＵ、２００…バス、２０１…アドレスバス、２０２…データバス、３００，３１０…周辺装置、３０１，３１１…レジスタ、３０２，３０６，３１２，３１６…ゲート回路、３０３…バッファ、３０４，３１４…アドレスデコーダ、３０５…制御カウンタ、３０６…ゲート回路、３１７…メモリ
【図１】
2012008960.tif 000003
【図２】
2012008960.tif 000004
【図３】
2012008960.tif 000005
【図４】
2012008960.tif 000006
【図５】
2012008960.tif 000007
【図６】
2012008960.tif 000008
【図７】
2012008960.tif 000009