トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 レジスタ制御装置
【発明者】 【氏名】我妻 秀治

【要約】 【課題】複数のCPUが、同一のレジスタに対して夫々異なるタイミングで指定したビットのデータ値だけを変更しようとする場合でも、そのレジスタのデータ値が期待値通りになるように制御できるレジスタ制御装置を提供する。

【解決手段】CPU11が、TIERレジスタ14の指定ビットのデータ値を“0”にセットする場合は、その対象ビットのみを“0”にした“0”セット用データを書き込むライトサイクルを“0”セット用アドレスTIER0Wを出力して行う。すると、マルチプレクサ15は、TIERレジスタ14のマスタラッチ16に対して、CPU11によりデータ値が“0”にセットされたビットについてはそのデータ値“0”を出力し、それ以外のビットについてはスレーブラッチ17の保持データを出力するように選択する。
【特許請求の範囲】
【請求項1】 複数のCPUによってアクセスされるレジスタのデータ値を制御するためのレジスタ制御装置において、CPUが出力するアドレスをデコードしてデコード信号を出力するアドレスデコーダと、前記レジスタの入力側に配置され、前記アドレスデコーダが出力するデコード信号及びCPUの出力データに基づいて、前記マスタラッチに対する各ビット毎の出力データを以下の条件に従って選択するマルチプレクサとを備え、{(デコード信号が“0”セット用アドレス)且つ(CPUの出力データが“0”)}
又は{(デコード信号が“1”セット用アドレス)且つ(CPUの出力データが“1”)}
ならば、(出力データはCPUの出力データ),(上記以外の条件)ならば、(出力データはレジスタの保持データ)
前記レジスタには、前記CPUが前記“0”セット用アドレスまたは前記“1”セット用アドレスの何れかのアドレスを出力して書き込みを行う場合に、データが書き込まれるように構成されていることを特徴とするレジスタ制御装置。
【請求項2】 前記マルチプレクサが、前記レジスタに対し、CPUの出力データを選択して出力する条件に、又は(デコード信号がレジスタ)を加え、前記レジスタは、前記CPUが該レジスタのアドレスを出力して書き込みを行う場合も、データが書き込まれるように構成されていることを特徴とする請求項1記載のレジスタ制御装置。
【請求項3】 請求項1また2記載のレジスタ制御装置を備えて構成されることを特徴とするマルチCPUシステム。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、複数のCPUによってアクセスされるレジスタのデータ値を制御するためのレジスタ制御装置、及びそのレジスタ制御装置を備えてなるマルチCPUシステムに関する。
【0002】
【従来の技術】複数のCPUを備えて高度な機能を実現するように構成されるマルチCPUシステムにおいては、各CPUがリードサイクルやライトサイクルを実行しようとする場合、常に1つのCPUだけが排他的にバスを使用するように、アービタによってバスの使用権が調停されるようになっている。
【0003】また、このようなシステムでは、コントロールレジスタ等の周辺回路を共用したり、セマフォの値をチェックした後セットを行う場合などに、CPUが、あるレジスタから読み出した(リード)データにビット操作を行い(モディファイ)、そのビット操作を行った結果のデータ値を同じレジスタに書き戻す(ライト)というリード・モディファイ・ライトサイクルを実行することがある。
【0004】そして、CPUの種類によっては、リード・モディファイ・ライトサイクルを不可分な1つのサイクルとして、バスを占有し続けて実行するように各信号が出力されるものがある。しかし、そのような機能を有していないCPUを用いてマルチCPUシステムを構成することを想定すると、以下のような問題が生じることが考えられる。
【0005】
【発明が解決しようとする課題】図4は、上記マルチCPUシステムの一構成例である。CPU1,2は、アドレスバス3及びデータバス4に接続されており、何れもレジスタ5に対してアクセスが可能となっている。データバス4のサイズは例えば8ビットであるとする。レジスタ5は、例えば、8チャネルのタイマによるタイマ割り込みについて、各々の割り込みの可否を設定するためのコントロールレジスタ(TIER:Timer Interruput Enable Register) であり、ビット0〜3はCPU1が設定を行い、ビット4〜7はCPU2が設定を行うようになっている。
【0006】アドレスバス3に接続されているアドレスデコーダ6は、CPU1または2が出力するアドレスをデコードして、例えばTIERレジスタ5に対してアクセスが行われる場合のデコード信号TIERを、TIERレジスタ5に出力するようになっている。また、CPU1または2がバスサイクルを実施する場合には、上述のように、図示しないアービタによってバス3及び4の使用権が調停されるようになっている。
【0007】TIERレジスタ5は、図5に示すCKA,CKBの二相クロック信号によってラッチ動作を行うダブルラッチ構成であり、マスタラッチ5M及びスレーブラッチ5Sを備えて構成されている。データバス4はマスタラッチ5Mの入力側に接続されており、マスタラッチ5Mの出力側はスレーブラッチ5Sの入力側に接続されている。そして、スレーブラッチ5Sの出力側は、出力バッファ7を介してデータバス4に接続されている。
【0008】ANDゲート8は、デコード信号TIER,CPU1または2が出力するライト信号及びクロック信号CKBの論理積信号をマスタラッチ5Mにラッチ信号として出力するようになっている。スレーブラッチ5Sのラッチ信号には、クロック信号CKAが直接与えられている。そして、一方、ANDゲート9は、デコード信号TIER及びCPU1または2が出力するリード信号の論理積信号を出力バッファ7にイネーブル信号(レベル)として出力するようになっている。
【0009】以上のマルチCPUシステムにおいて、図6に示すタイミングチャートに従ってTIERレジスタ5にアクセスが行われた場合を説明する。尚、CPU1及び2は、クロック信号CKAに同期して動作するようになっている。TIERレジスタ5の初期値が“00h(HEX)”であるとする。先ず、CPU1が時刻T1においてリード・モディファイ・ライトサイクル(以下、RMWサイクルと称す)を開始し、TIERレジスタ5(スレーブラッチ5S)のデータ値を読み出してビット操作(第0ビットを“1”にセット)を行い、その操作結果のデータ値“01h”を時刻T3においてTIERレジスタ5書き込むとする。すると、マスタラッチ5Mには時刻T3後のクロック信号CKBのタイミングでデータが書き込まれる。
【0010】この時、もう1つのCPU2が時刻T2においてRMWサイクルを開始すると、CPU2は、時刻T2において、その時点ではCPU0によるビット操作結果が未だ反映されていないTIERレジスタ5のデータ値“00h”を読み出してビット操作(第4ビットを“1”にセット)を行い、その操作結果のデータ値“10h”を時刻T4においてTIERレジスタ5に書き込む。
【0011】つまり、CPU2が時刻T4においてRMWサイクルを開始すれば、CPU1は、CPU1によるビット操作結果が反映されたTIERレジスタ5のデータ値“01h”を読み出してビット操作を行うことになり、その結果、TIERレジスタ5に書き込まれるデータ値は“11h”となるはずである。しかしながら、上記のようにCPU1によるRMWサイクルの実行途中においてCPU2がサイクルを実行すると、TIERレジスタ5のデータは期待値通りにならず、以降の制御に支障を来す結果となってしまう。
【0012】本発明は上記事情に鑑みてなされたものであり、その目的は、複数のCPUが、同一のレジスタに対して夫々異なるタイミングで指定したビットのデータ値だけを変更しようとする場合でも、そのレジスタのデータ値が期待値通りになるように制御できるレジスタ制御装置、及びそのレジスタ制御装置を備えてなるマルチCPUシステムを提供することにある。
【0013】
【課題を解決するための手段】請求項1記載のレジスタ制御装置によれば、例えば、何れかのCPUが、レジスタの任意のビットのデータ値を“0”にセットする場合は、その対象ビットのみを“0”にした即値データを書き込むライトサイクルを“0”セット用アドレスを出力して行うようにする。例えば、データバスサイズが8ビットであり、その第0ビットのみを“0”にセットする場合は、即値データFEhを書込むライトサイクルを実行する。すると、マルチプレクサは、レジスタに対して、CPUによりデータ値が“0”にセットされたビットについてはそのデータ値“0”を出力し、それ以外のビットについては当該レジスタの保持データを出力するように選択する。
【0014】また、何れかのCPUがレジスタの任意のビットのデータ値を“1”にセットする場合は、その対象ビットのみを“1”にした即値データを書き込むライトサイクルを“1”セット用アドレスを出力して行うようにする。例えば、データバスサイズが8ビットであり、その第4ビットのみを“1”にセットする場合は、即値データ10hを書込むライトサイクルを実行する。すると、マルチプレクサは、レジスタに対して、CPUによりデータ値が“1”にセットされたビットについてはそのデータ値“1”を出力し、それ以外のビットについては当該レジスタの保持データを出力するように選択する。
【0015】即ち、レジスタの任意のビットのデータ値だけを“0”または“1”にセットする場合は、その時点でのレジスタの値を読み出さずとも、上述した特定のデータパターンにより“0”または“1”セット用アドレスに対してライトサイクルを行えば、レジスタにおける“0”または“1”のセット対象以外のビットには、当該書き込みが行われる前の状態にあるレジスタの保持データが書き込まれることになる。
【0016】従って、RMWサイクルを行わなくともセット対象以外のビットデータを書き換えてしまうことがない。そして、従来とは異なり、CPUが変更している途中の状態にあるデータが他のCPUによって読み出され、以降の制御に支障を来すような事態を防止することができるので、予めマルチCPUシステムに適用することを想定した設計が行われていない複数のCPUによってレジスタがアクセスされる場合でも、そのレジスタのデータ値が常に期待値通りとなるように制御することができる。また、ビット操作命令を持たない低機能のCPUであっても、データ転送命令によって変更したいビットのデータ値のみを操作することが可能となる。
【0017】請求項2記載のレジスタ制御装置によれば、マルチプレクサが、レジスタに対し、CPUの出力データを選択して出力する条件に、又は(デコード信号がレジスタ)を加える。従って、CPUは、レジスタに対してビット操作により設定を行うだけでなく、レジスタに割り当てられているアドレスを出力して通常の書き込み(即ち、全ビットの同時書き込み)を行うこともできる。
【0018】請求項3記載のマルチCPUシステムによれば、請求項1また2記載のレジスタ制御装置を備えることで、予めマルチCPUシステムに適用することを想定した設計が行われていないCPUを用いて、レジスタ等の周辺回路を共用するシステムを構成することが可能となる。
【0019】
【発明の実施の形態】以下、本発明の一実施例について図1乃至図3を参照して説明する。尚、図4と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。本実施例では、2つのCPU1,2がCPU11,12に置き換わっている。また、アドレスバス3にはアドレスデコーダ6に代わるアドレスデコーダ13が接続されており、データバス4には、TIERレジスタ5に代わるTIERレジスタ14が接続されている。
【0020】図1において、TIERレジスタ14は、1ビット分(第iビット,i=0〜7)に対応する構成のビットセル14B(i)を1つだけ図示しており、実際には8個のビットセル14B(0)〜14B(7)によって構成されている。各ビットセル14Bは、データバス4側から、マルチプレクサ15のデータ選択部15a,マスタラッチ16,スレーブラッチ17及び出力バッファ18を直列に接続したものを中心として構成されている。出力バッファ18の出力端子はデータバス4に接続されており、また、スレーブラッチ17の出力端子はデータ選択部15aの他の入力端子に接続されている。データ選択部15aは、選択信号生成回路15bより出力される選択信号に基づいて、2つの入力端子の内から1つを選択してマスタラッチ16に出力するように構成されている。
【0021】選択信号生成回路15bには、アドレスデコーダ13が出力する3つのデコード信号TIER,TIER0W,TIER1Wとデータバス4の第iビットデータD(i)が与えられており、これらの入力信号に基づき、データ選択部15aが以下のように入力データを選択してマスタラッチ16に出力するように内部論理が構成されている。
(デコード信号TIER)
又は{(デコード信号TIER0W)且つ(データD(i)が“0”)}
又は{(デコード信号TIER1W)且つ(データD(i)が“1”)}
ならば、(出力データ:データD(i)),上記以外の条件 ならば、(出力データ:スレーブラッチ17の保持データ)選択信号生成回路15bは、データ選択部15aに例えば上記2つの条件に対応する選択信号(例えば、前者が成立している場合はハイレベル,後者が成立してい場合るはロウレベル)を出力し、データ選択部15aはその選択信号に応じて2つの入力端子の内の一方を選択するようになっている。
【0022】マスタラッチ16のラッチ信号は、3入力のANDゲート19によって与えられるようになっている。ANDゲート19の入力端子には、CPU11または12がライトサイクルの実行時にアクティブ(ハイ)にするライト信号と、二相クロック信号のB相信号CKBと、ORゲート20の出力信号とが与えられている。3入力のORゲート20には、アドレスデコーダ13が出力する3つのデコード信号TIER,TIER0W,TIER1Wが夫々与えられている。
【0023】また、スレーブラッチ17のラッチ信号には、二相クロック信号のA相信号CKAが直接与えられており、出力バッファ18には、ANDゲート21の出力信号がイネーブル信号として与えられている。ANDゲート21の入力端子には、アドレスデコーダ13が出力するデコード信号TIERと、CPU11または12のリード信号とが与えられている。
【0024】尚、TIERレジスタ14は、レジスタ部(レジスタ)14aとレジスタ制御部14bとに分類される。レジスタ部14aは、マスタラッチ16,スレーブラッチ17,出力バッファ18,及びANDゲート19及び21からなる部分であり、レジスタ制御部14bは、マルチプレクサ15,ANDゲート19及びORゲート20からなる部分である。
【0025】そして、レジスタ制御部14bにアドレスデコーダ13を加えたものが、レジスタ制御装置22を構成している。更に、レジスタ部14aとレジスタ制御装置22にCPU11及び12を加えたものが、マルチCPUシステム23を構成している。
【0026】次に、本実施例の作用について図2及び図3をも参照して説明する。図2は、CPU11または12がTIERレジスタ14に対して書込み(ライトサイクル)を行う場合を示すフローチャートであり、図3は、CPU11または12がTIERレジスタ14の指定ビットに“1”をセットする場合のタイミングチャートである。
【0027】■<任意のデータを8ビット一括で書込む場合>例えば、CPU11が、TIERレジスタ14に任意のデータを8ビット一括で書込む場合には(ステップS1,「YES」)、通常通りTIERレジスタ14に対してライトサイクルを行うようにする(ステップS2)。この場合、アドレスデコーダ13はデコード信号TIERを出力するので、全てのビットセル14Bの選択信号生成回路15bがハイレベルの選択信号を出力する。従って、データ選択部15aは、CPU11がデータバス4上に出力したデータを選択してマスタラッチ16に出力する。
【0028】そして、ORゲート20の出力端子がハイレベルになり、クロック信号CKBの立上がりタイミングでANDゲート19の出力端子もハイレベルとなるので、TIERレジスタ14のマスタラッチ16にCPU11が出力したデータが書き込まれる。
【0029】■<指定ビットに“1”をセットする場合>例えば、CPU11が、TIERレジスタ14の第0ビットを“1”にセットする場合は(ステップS1,「NO」:ステップS3,「YES」)、“1”セット用のアドレスTIER1Wを出力して“1”セット用データの書き込みを行う(ステップS4)。ここで、“1”セット用データとは、“1”をセットするビットのデータ値だけを“1”にして、その他のビットのデータ値を全て“0”にしたデータである。例えば、第0ビットだけを“1”にセットする場合の“1”セット用データは、“01h”となる。
【0030】そして、時刻T1においてアドレスTIER1Wに対する書き込みを行うと、アドレスデコーダ13がデコード信号TIER1Wを出力するので、ORゲート20の出力端子がハイレベルになることから、クロック信号CKBの立上がりタイミングでANDゲート19の出力端子もハイレベルとなって、TIERレジスタ14のマスタラッチ16にデータが書き込まれる。
【0031】また、各ビットセル14B(0)〜14B(7)においては、デコード信号TIER1Wが出力されているので、データバス4上にデータ値“1”が出力されているビットセル14B(0)のデータ選択部15aは、選択信号生成回路15bが出力する選択信号(ハイレベル)に応じてマスタラッチ16にデータバス4(D(0))のデータ値“1”を選択して出力する。
【0032】それ以外のビットセル14B(1)〜14B(7)においては、選択信号生成回路15bが選択信号をロウレベルにするので、データ選択部15aはマスタラッチ16にスレーブラッチ17の保持データを選択して出力する。
【0033】即ち、CPU11によって“1”がセットされるビット以外のビットデータはスレーブラッチ17の保持データが選択されて書き込まれることになる。結果として、マスタラッチ16には、データ00hの第0ビットだけが“1”にセットされたデータ01hが書き込まれる。そして、スレーブラッチ17のデータは、時刻T1後のクロック信号CKAの立上がりタイミング(時刻T2)で、マスタラッチ16に書きまれているデータと同じデータ01hに更新される。
【0034】従って、もう1つのCPU12が時刻T2においてTIERレジスタ14の第4ビットを“1”にするためデータ10hのライトサイクルを開始したとすると、上記と同様のプロセスによって、データバス4上にデータ値“1”が出力されているビットセル14B(4)のデータ選択部15aは、マスタラッチ16にデータ値“1”を選択して出力し、それ以外のビットセル14B(0)〜14B(3),14B(5)〜14B(7)のデータ選択部15aは、マスタラッチ16にスレーブラッチ17の保持データ01hを選択して出力する。その結果、TIERレジスタ14のマスタラッチ16(8ビット分)には、01hデータの第4ビットを“1”に変更したデータ11hが書き込まれることになる。尚、上記のプロセスを、CPU11と12とのアクセス順序を入れ替えて行ったとしても、全く同様の結果になることは言うまでもない。
【0035】■<指定ビットに“0”をセットする場合>また、例えば、CPU11が、TIERレジスタ14の第0ビットを“0”にセットする場合には(ステップS3,「NO」)、“0”セット用のアドレスTIER0Wを出力して“0”セット用データの書き込みを行う。ここで、“0”セット用データとは、“0”をセットするビットのデータ値だけを“0”にして、その他のビットのデータ値を全て“1”にしたデータである。例えば、第0ビットだけを“0”にセットする場合の“0”セット用データは、“FEh”となる。
【0036】そして、アドレスTIER0Wに対する書き込みを行うと、アドレスデコーダ13がデコード信号TIER0Wを出力するのでORゲート20の出力端子がハイレベルになり、クロック信号CKBの立上がりタイミングでTIERレジスタ14のマスタラッチ16にデータが書き込まれる。
【0037】また、各ビットセル14B(0)〜14B(7)においては、デコード信号TIER0Wが出力されているので、データバス4上にデータ値“0”が出力されているビットセル14B(0)のデータ選択部15aは、選択信号生成回路15bが出力する選択信号(ハイレベル)に応じてマスタラッチ16にデータバス4(D(0))のデータ値“1”を選択して出力する。
【0038】それ以外のビットセル14B(1)〜14B(7)においては、選択信号生成回路15bが選択信号をロウレベルにするので、データ選択部15aはマスタラッチ16にスレーブラッチ17の保持データを選択して出力する。
【0039】従って、この場合も、CPU11によって“0”がセットされるビット以外のビットデータは、スレーブラッチ17の保持データが選択されて書き込まれることになる。例えば、TIERレジスタ14の初期値が77hであったとすると、マスタラッチ16には、データ77hの第0ビットだけが“0”に変更されたデータ76hが書き込まれる。
【0040】■<リードサイクルによってデータを読み出す場合>例えば、CPU11が、TIERレジスタ14のデータを単に読出す場合には、通常通りTIERレジスタ14に対してリードサイクルを行うようにする。すると、アドレスデコーダ13がデコード信号TIERを出力するのでANDゲート21の出力端子がハイレベルとなる。そして、出力バッファ18がイネーブルとなるので、スレーブラッチ17に保持されているデータがデータバス4上に出力される。
【0041】以上のように本実施例によれば、CPU11が、TIERレジスタ14の指定ビットのデータ値を“0”にセットする場合は、その対象ビットのみを“0”にした“0”セット用データを書き込むライトサイクルを“0”セット用アドレスTIER0Wを出力して行うと、マルチプレクサ15は、TIERレジスタ14のマスタラッチ16に対して、CPU11によりデータ値が“0”にセットされたビットについてはそのデータ値“0”を出力し、それ以外のビットについてはスレーブラッチ17の保持データを出力するように選択する。
【0042】また、CPU11がTIREレジスタ14の指定ビットのデータ値を“1”にセットする場合は、その対象ビットのみを“1”にした“1”セット用データを書き込むライトサイクルを“1”セット用アドレスTIER1Wを出力して行うと、マルチプレクサ15は、マスタラッチ16に対して、データ値が“1”にセットされたビットについてはそのデータ値“1”を出力し、それ以外のビットについてはスレーブラッチ17の保持データを出力するように選択する。
【0043】従って、CPU11がRMWサイクルを行わなくとも、セット対象以外のビットデータを書き換えてしまうことがない。そして、従来とは異なり、CPU11が変更している途中の状態にあるデータが他のCPU12によって読み出され、以降の制御に支障を来すような事態を防止することができるので、予めマルチCPUシステムに適用することを想定した設計が行われていない複数のCPU11,12によってTIERレジスタ14がアクセスされる場合でも、そのTIERレジスタ14のデータ値が常に期待値通りとなるように制御することができる。また、ビット操作命令を持たない低機能のCPU11,12であっても、データ転送命令によって変更したいビットのデータ値のみを操作することが可能となる。
【0044】また、本実施例によれば、選択信号生成回路15bにおいて、データ選択部15aが出力データにデータD(i)を選択する条件に、“又は(デコード信号がレジスタ)”をも加えたので、CPU11または12は、TIERレジスタ14に対してビット操作により設定を行うだけでなく、TIERレジスタ14に割り当てられているアドレスを出力して通常の任意データの書き込み(全ビットの同時書き込み)を行うこともできる。
【0045】そして、レジスタ制御装置22を備えたことで、予めマルチCPUシステムに適用することを想定した設計が行われていないCPU11,12を用いても、TIERレジスタ14等の周辺回路を共用するマルチCPUシステム23を構成することが可能となる。
【0046】本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、次のような変形または拡張が可能である。単一ビットのビット操作に限ることなく、複数ビットのビット操作(所謂ビットフィールド操作)を行う場合でも、同様に適用することができる。データバスサイズは8ビットに限ることなく,4ビット,16ビットや32ビットでも良い。レジスタはコントロールレジスタに限らず、データレジスタでも良い。また、ダブルラッチ構成のTIERレジスタ14に限ることなく、CPUの動作クロックに同期して動作するDフリップフロップなどを用いてレジスタを構成しても良い。リード信号とライト信号とを、例えばハイレベルの場合にリードサイクル,ロウレベルの場合にライトサイクルであることを示す1つの信号(リード/ライト信号)にしても良い。この場合、ANDゲート21の対応する入力端子には、インバータゲートを介してリード/ライト信号を与えたり、或いは、当該入力端子は負論理とすれば良い。
【0047】CPUが3つ以上存在するシステムに適用しても良い。例えば、TIERレジスタ14が指定ビットのセットのみによって設定を行うように規定されているレジスタである場合には、選択信号生成回路17bにおいて、出力データにデータD(i)を選択する条件より“又は(デコード信号TIER)”を削除しても良い。マルチCPUシステム全体を、半導体基板上の集積回路装置として構成しても良いし、各個別のディスクリート素子をプリント基板に搭載した回路装置として構成しても良い。
【出願人】 【識別番号】000004260
【氏名又は名称】株式会社デンソー
【出願日】 平成12年10月20日(2000.10.20)
【代理人】 【識別番号】100071135
【弁理士】
【氏名又は名称】佐藤 強
【公開番号】 特開2002−132579(P2002−132579A)
【公開日】 平成14年5月10日(2002.5.10)
【出願番号】 特願2000−321071(P2000−321071)