JPH06139206A - マルチプロセッサシステムにおける排他制御方式 - Google Patents
マルチプロセッサシステムにおける排他制御方式Info
- Publication number
- JPH06139206A JPH06139206A JP28724592A JP28724592A JPH06139206A JP H06139206 A JPH06139206 A JP H06139206A JP 28724592 A JP28724592 A JP 28724592A JP 28724592 A JP28724592 A JP 28724592A JP H06139206 A JPH06139206 A JP H06139206A
- Authority
- JP
- Japan
- Prior art keywords
- block
- intermediate state
- processor
- processing unit
- access
- 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.)
- Pending
Links
Landscapes
- Multi Processors (AREA)
Abstract
(57)【要約】
【目的】 共通データへのアクセスを複数の処理ユニッ
トが同時並列的に行う際にアクセス権の確保/解放を予
め組み込まなくてもよいようにし、プログラムの生産性
を向上する。 【構成】 各プロセッサのキャッシュメモリは複数のエ
ントリからなり、また各エントリはアドレス情報部7
1、ブロックデータ部72、及びブロック状態情報部
(中間状態部73、バリッド部74、モディファイ部7
5)からなっている。アクセスが同時並列的に行われる
場合、ブロック状態情報部の内容、プロセッサからのア
クセス種別の内容が予め定められた組み合わせの場合
に、当該ブロックへの処理を中断または中止するように
した排他制御を行っている。
トが同時並列的に行う際にアクセス権の確保/解放を予
め組み込まなくてもよいようにし、プログラムの生産性
を向上する。 【構成】 各プロセッサのキャッシュメモリは複数のエ
ントリからなり、また各エントリはアドレス情報部7
1、ブロックデータ部72、及びブロック状態情報部
(中間状態部73、バリッド部74、モディファイ部7
5)からなっている。アクセスが同時並列的に行われる
場合、ブロック状態情報部の内容、プロセッサからのア
クセス種別の内容が予め定められた組み合わせの場合
に、当該ブロックへの処理を中断または中止するように
した排他制御を行っている。
Description
【0001】
【産業上の利用分野】本発明は、マルチプロセッサシス
テムにおいて、各プロセッサが同時並列的にアクセスす
るデータの無矛盾性保証制御を行うための排他制御方式
に関するものである。
テムにおいて、各プロセッサが同時並列的にアクセスす
るデータの無矛盾性保証制御を行うための排他制御方式
に関するものである。
【0002】
【従来技術】複数の処理ユニットがメインメモリを共有
して使用するマルチプロセッサシステムにおいて、ある
処理ユニットが共通データに対して読みだし及び書き換
えを行う場合、他の処理ユニットとの間に矛盾が発生す
る。例えば、処理ユニットAと処理ユニットBがメイン
メモリのアドレスXに格納している値「x]に1を加算
する場合を考える。本来、処理ユニットA及び処理ユニ
ットBの処理が矛盾無く行われるとアドレスXの値は
「x+2」となる。しかし、処理ユニットAがアドレス
Xの値「x]を読みだしてからアドレスXに値「x+
1」を書き込む間に処理ユニットBがアドレスXの値
「x]を読み出すと処理ユニットBもアドレスXに値
「x+1」を書き込むことになり、正しい値「x+2」
が得られない。従来は、そうならないように、共通デー
タにアクセスする前に共通データへのアクセス権を要求
し、アクセス権の獲得が成功すると共通データへのアク
セスを行い、共通データへのアクセス終了後にアクセス
権を解放する。アクセス権は共通データ毎に設けられ、
同時に1台のプロセッサにのみアクセス権が与えられ
る。
して使用するマルチプロセッサシステムにおいて、ある
処理ユニットが共通データに対して読みだし及び書き換
えを行う場合、他の処理ユニットとの間に矛盾が発生す
る。例えば、処理ユニットAと処理ユニットBがメイン
メモリのアドレスXに格納している値「x]に1を加算
する場合を考える。本来、処理ユニットA及び処理ユニ
ットBの処理が矛盾無く行われるとアドレスXの値は
「x+2」となる。しかし、処理ユニットAがアドレス
Xの値「x]を読みだしてからアドレスXに値「x+
1」を書き込む間に処理ユニットBがアドレスXの値
「x]を読み出すと処理ユニットBもアドレスXに値
「x+1」を書き込むことになり、正しい値「x+2」
が得られない。従来は、そうならないように、共通デー
タにアクセスする前に共通データへのアクセス権を要求
し、アクセス権の獲得が成功すると共通データへのアク
セスを行い、共通データへのアクセス終了後にアクセス
権を解放する。アクセス権は共通データ毎に設けられ、
同時に1台のプロセッサにのみアクセス権が与えられ
る。
【0003】
【発明が解決しようとする課題】以上述べたように、従
来のマルチプロセッサシステムにおける排他制御におい
ては、共通データにアクセスする前に必ずアクセス権を
確保し、他の処理ユニットからの共通データへのアクセ
スを抑止し、アクセス終了後にはアクセス権を解放する
排他制御が必要であった。しかし、この従来の方式で
は、各処理ユニットが同時並列的にアクセスする共通デ
ータについてアクセス権を獲得を行う必要があるため、
以下のような問題が生じる。 (1)処理ユニットで実行中に同時並列的にアクセスす
る全ての共通データへのアクセスの前後にアクセス権の
確保/解放を行う処理を予め組み込む必要が生じ、複雑
になる。 (2)本来、矛盾が発生する確率が少ないにもかかわら
ず、共通データへのアクセスの前後にアクセス権の確保
/解放を行う必要があるため、処理ユニットの実効的な
処理能力が低下する。 (3)新規に追加した処理によって、従来同時並列的に
アクセスされなかったデータが同時並列的にアクセスさ
れる共通データとなった場合、従来の処理に当該データ
に対するアクセス権の確保/解放を行う処理を追加する
必要がある。
来のマルチプロセッサシステムにおける排他制御におい
ては、共通データにアクセスする前に必ずアクセス権を
確保し、他の処理ユニットからの共通データへのアクセ
スを抑止し、アクセス終了後にはアクセス権を解放する
排他制御が必要であった。しかし、この従来の方式で
は、各処理ユニットが同時並列的にアクセスする共通デ
ータについてアクセス権を獲得を行う必要があるため、
以下のような問題が生じる。 (1)処理ユニットで実行中に同時並列的にアクセスす
る全ての共通データへのアクセスの前後にアクセス権の
確保/解放を行う処理を予め組み込む必要が生じ、複雑
になる。 (2)本来、矛盾が発生する確率が少ないにもかかわら
ず、共通データへのアクセスの前後にアクセス権の確保
/解放を行う必要があるため、処理ユニットの実効的な
処理能力が低下する。 (3)新規に追加した処理によって、従来同時並列的に
アクセスされなかったデータが同時並列的にアクセスさ
れる共通データとなった場合、従来の処理に当該データ
に対するアクセス権の確保/解放を行う処理を追加する
必要がある。
【0004】従来、上記問題を解決するために、同時並
列的にアクセスしないデータと共通データを厳密に分け
ずに、アクセス権の確保/解放を複数の共通データに対
して一括して行うことによって、アクセス権の確保/解
放回数を減らす手法がとられていた。しかし、複数の共
通データに対して一括してアクセス権の確保/解放を行
うと共通データに対して不要な排他制御を行うことにな
り、アクセス権の確保期間が長くなるため、複数の処理
ユニットで同時並列的に可能な処理の実行が阻害される
確率が大きくなる欠点が生じる。
列的にアクセスしないデータと共通データを厳密に分け
ずに、アクセス権の確保/解放を複数の共通データに対
して一括して行うことによって、アクセス権の確保/解
放回数を減らす手法がとられていた。しかし、複数の共
通データに対して一括してアクセス権の確保/解放を行
うと共通データに対して不要な排他制御を行うことにな
り、アクセス権の確保期間が長くなるため、複数の処理
ユニットで同時並列的に可能な処理の実行が阻害される
確率が大きくなる欠点が生じる。
【0005】
【課題を解決するための手段】本発明はこれらの欠点を
除去するために、処理ユニットで実行中の処理が最初に
アクセスしてから処理が終了するまでにアクセスするデ
ータを含むブロックを処理ユニット内のキャッシュメモ
リで中間状態として管理し、他の処理ユニットから中間
状態のブロックへのアクセスが発生した場合、他の処理
ユニットで実行中の処理又は自処理ユニットで実行中の
処理を中断又は無効化(中止)することによって共通デ
ータへの排他制御を行うものである。なお、本発明にお
ける「中間状態」とは、“プロセッサ上で実行されるあ
るまとまった処理単位において、その処理単位での実行
中(処理中)のブロックに対して与えられる状態”のこ
とをいう。これによって、各処理ユニットが同時並列的
にアクセスする共通データへのアクセスを行う際にアク
セス権の確保/解放の処理を各処理ユニットで実行する
処理に予め組み込む必要がなくなり、アクセス権の確保
及び解放による処理ユニットの実効的な処理性能の低下
も生じず、新たに処理を追加することによって共通デー
タとなったデータに対する排他制御を行うために従来の
処理を変更することも不要となる。
除去するために、処理ユニットで実行中の処理が最初に
アクセスしてから処理が終了するまでにアクセスするデ
ータを含むブロックを処理ユニット内のキャッシュメモ
リで中間状態として管理し、他の処理ユニットから中間
状態のブロックへのアクセスが発生した場合、他の処理
ユニットで実行中の処理又は自処理ユニットで実行中の
処理を中断又は無効化(中止)することによって共通デ
ータへの排他制御を行うものである。なお、本発明にお
ける「中間状態」とは、“プロセッサ上で実行されるあ
るまとまった処理単位において、その処理単位での実行
中(処理中)のブロックに対して与えられる状態”のこ
とをいう。これによって、各処理ユニットが同時並列的
にアクセスする共通データへのアクセスを行う際にアク
セス権の確保/解放の処理を各処理ユニットで実行する
処理に予め組み込む必要がなくなり、アクセス権の確保
及び解放による処理ユニットの実効的な処理性能の低下
も生じず、新たに処理を追加することによって共通デー
タとなったデータに対する排他制御を行うために従来の
処理を変更することも不要となる。
【0006】
【実施例】図1は請求項1乃至請求項5に記載された本
発明の実施例を説明するためのマルチプロセッサシステ
ムの構成図である。図1において、1、2及び3は処理
ユニット、4はシステムバス、5はメインメモリ、6は
バスマスタコントローラ、10、20及び30はプロセ
ッサである。また11、21及び31はキャッシュメモ
リ、100、200及び300はプロセッサバスであ
る。システムバス4は、アドレスバス41、データバス
42、リード/ライトバス43、アクセス種別バス4
4、優先度バス45、転送応答バス46、矛盾応答バス
47からなっている。
発明の実施例を説明するためのマルチプロセッサシステ
ムの構成図である。図1において、1、2及び3は処理
ユニット、4はシステムバス、5はメインメモリ、6は
バスマスタコントローラ、10、20及び30はプロセ
ッサである。また11、21及び31はキャッシュメモ
リ、100、200及び300はプロセッサバスであ
る。システムバス4は、アドレスバス41、データバス
42、リード/ライトバス43、アクセス種別バス4
4、優先度バス45、転送応答バス46、矛盾応答バス
47からなっている。
【0007】メインメモリ5は同じ大きさに分割され、
キャッシュメモリ11、21及び31との間ではブロッ
ク単位にメモリ内容の転送を行う。キャッシュメモリ1
1、21及び31は複数のエントリからなり、図2にエ
ントリの一例を示す。各エントリは、ブロックのアドレ
スを格納するアドレス情報部71、ブロックデータを格
納するブロックデータ部72、中間状態であることを示
す中間状態部73、エントリに格納されている内容が有
効であるか無効であるかを示すバリッド部74、キャッ
シュメモリのみを書き換えたことを示すモディファイ部
75及びアンドゲート730からなる。確定指示信号7
10から確定が指示されると、中間状態部73の値は
「0」となり、アンドゲート730は中間状態部73の
内容を信号線721を介して、モディファイ部75の内
容を信号線722を介して入力し、無効化指示信号72
0を介して無効化が指示され、中間状態部73の値が
「1」かつモディファイ部75の内容が「1」である場
合、バリッド部リセット信号の意味を持つ信号線723
を介してバリッド部74の内容を「0」とする。
キャッシュメモリ11、21及び31との間ではブロッ
ク単位にメモリ内容の転送を行う。キャッシュメモリ1
1、21及び31は複数のエントリからなり、図2にエ
ントリの一例を示す。各エントリは、ブロックのアドレ
スを格納するアドレス情報部71、ブロックデータを格
納するブロックデータ部72、中間状態であることを示
す中間状態部73、エントリに格納されている内容が有
効であるか無効であるかを示すバリッド部74、キャッ
シュメモリのみを書き換えたことを示すモディファイ部
75及びアンドゲート730からなる。確定指示信号7
10から確定が指示されると、中間状態部73の値は
「0」となり、アンドゲート730は中間状態部73の
内容を信号線721を介して、モディファイ部75の内
容を信号線722を介して入力し、無効化指示信号72
0を介して無効化が指示され、中間状態部73の値が
「1」かつモディファイ部75の内容が「1」である場
合、バリッド部リセット信号の意味を持つ信号線723
を介してバリッド部74の内容を「0」とする。
【0008】次に、メインメモリ5のアドレスaで指定
されるデータを含むブロックをBaとし、プロセッサ1
0がブロックBaをアクセスする本発明の一実施例を説
明するフローチャートを図3及び図4に示す。ここで、
図3及び図4は自プロセッサからのアクセスに対するキ
ャッシュメモリでの処理を説明するための図であり、論
理回路を用いることによって、この処理の各部分を並列
的に実行できる。
されるデータを含むブロックをBaとし、プロセッサ1
0がブロックBaをアクセスする本発明の一実施例を説
明するフローチャートを図3及び図4に示す。ここで、
図3及び図4は自プロセッサからのアクセスに対するキ
ャッシュメモリでの処理を説明するための図であり、論
理回路を用いることによって、この処理の各部分を並列
的に実行できる。
【0009】プロセッサ10からアドレスaで指定され
るデータの読みだし又は書き換えが要求されたとき(ス
テップ311)、処理ユニット1のキャッシュメモリ1
1は以下のような処理を行う。 (イ)ステップ312において、プロセッサ10からプ
ロセッサバス100を介して要求されたアドレスaのデ
ータを含むブロックBaを格納する有効なエントリがキ
ャッシュメモリ11に存在しない場合:ステップ313
において、キャッシュメモリ11は信号線101を介し
てシステムバス4の使用要求をバスマスタコントローラ
6に知らせる。バスマスタコントローラ6は、予め定め
られた手続きに従い、1つのキャッシュメモリにのみシ
ステムバス4の使用許可を与える。信号線102を介し
てシステムバス4の使用許可がキャッシュメモリ11に
与えられたとき、アドレスバス41上にアドレスaを出
力し、リード/ライトバス43に読みだし指示を出力
し、アクセス種別バス44にプロセッサ10が出力した
アクセス種別(読みだし又は書き換え)を出力する。
るデータの読みだし又は書き換えが要求されたとき(ス
テップ311)、処理ユニット1のキャッシュメモリ1
1は以下のような処理を行う。 (イ)ステップ312において、プロセッサ10からプ
ロセッサバス100を介して要求されたアドレスaのデ
ータを含むブロックBaを格納する有効なエントリがキ
ャッシュメモリ11に存在しない場合:ステップ313
において、キャッシュメモリ11は信号線101を介し
てシステムバス4の使用要求をバスマスタコントローラ
6に知らせる。バスマスタコントローラ6は、予め定め
られた手続きに従い、1つのキャッシュメモリにのみシ
ステムバス4の使用許可を与える。信号線102を介し
てシステムバス4の使用許可がキャッシュメモリ11に
与えられたとき、アドレスバス41上にアドレスaを出
力し、リード/ライトバス43に読みだし指示を出力
し、アクセス種別バス44にプロセッサ10が出力した
アクセス種別(読みだし又は書き換え)を出力する。
【0010】キャッシュメモリ21及び31は、アドレ
スバス41に出力されているアドレスaを入力し、アド
レスaのデータを含むブロックBaが内部に格納されて
いるか否かのチェックを行う。他の処理ユニットがシス
テムバス4に出力したアクセスをチェックするためのフ
ローチャートを図5に示す。ここで、図5は他の処理ユ
ニットがシステムバス4に出力したアクセスをチェック
する処理を説明するための図であり、論理回路を用いる
ことによって、この処理の各部分を並列に実行すること
ができる。
スバス41に出力されているアドレスaを入力し、アド
レスaのデータを含むブロックBaが内部に格納されて
いるか否かのチェックを行う。他の処理ユニットがシス
テムバス4に出力したアクセスをチェックするためのフ
ローチャートを図5に示す。ここで、図5は他の処理ユ
ニットがシステムバス4に出力したアクセスをチェック
する処理を説明するための図であり、論理回路を用いる
ことによって、この処理の各部分を並列に実行すること
ができる。
【0011】(イ−a) ステップ412において、キ
ャッシュメモリ21及び31がブロックBaを内部に格
納していない場合:メインメモリ5がブロックBaをデ
ータバス42に出力し、転送応答バス46を介してキャ
ッシュメモリ11に応答を出力したことを通知する。 (イ−b) キャッシュメモリ21又は31がブロック
Baを内部に格納しておりかつバリッド部が「1」であ
る場合(ステップ412)で、ブロックBaを格納する
エントリの中間状態部が「1(中間状態)」の場合(ステ
ップ413):ブロックBaを格納するエントリのモデ
ィファイ部が「1(ブロックデータ部のBaとメインメ
モリのBaが不一致)」(ステップ414)、又はキャ
ッシュメモリ11がアクセス種別バス44に書き換えを
出力していれば(ステップ415)、キャッシュメモリ
11に矛盾応答バス47を介して矛盾が発生したことを
通知する(ステップ416)。このとき、処理ユニット
2又は3のキャッシュメモリから矛盾応答バス47を介
して矛盾が発生した旨の通知を受け取ると、キャッシュ
メモリ11は下記(ハ)に示す矛盾解消処理を行う。メ
インメモリ5はキャッシュメモリ21又は31が矛盾応
答バス47に矛盾が発生した旨の信号を出力しなければ
ブロックBaをデータバス42に出力し、転送応答バス
46を介してキャッシュメモリ11に応答を出力したこ
とを通知する。
ャッシュメモリ21及び31がブロックBaを内部に格
納していない場合:メインメモリ5がブロックBaをデ
ータバス42に出力し、転送応答バス46を介してキャ
ッシュメモリ11に応答を出力したことを通知する。 (イ−b) キャッシュメモリ21又は31がブロック
Baを内部に格納しておりかつバリッド部が「1」であ
る場合(ステップ412)で、ブロックBaを格納する
エントリの中間状態部が「1(中間状態)」の場合(ステ
ップ413):ブロックBaを格納するエントリのモデ
ィファイ部が「1(ブロックデータ部のBaとメインメ
モリのBaが不一致)」(ステップ414)、又はキャ
ッシュメモリ11がアクセス種別バス44に書き換えを
出力していれば(ステップ415)、キャッシュメモリ
11に矛盾応答バス47を介して矛盾が発生したことを
通知する(ステップ416)。このとき、処理ユニット
2又は3のキャッシュメモリから矛盾応答バス47を介
して矛盾が発生した旨の通知を受け取ると、キャッシュ
メモリ11は下記(ハ)に示す矛盾解消処理を行う。メ
インメモリ5はキャッシュメモリ21又は31が矛盾応
答バス47に矛盾が発生した旨の信号を出力しなければ
ブロックBaをデータバス42に出力し、転送応答バス
46を介してキャッシュメモリ11に応答を出力したこ
とを通知する。
【0012】(イ−c) キャッシュメモリ21又は3
1がブロックBaを内部に格納し、かつブロックBaを
格納するエントリの中間状態部が「0(確定状態)」の
場合(ステップ413):ブロックBaを格納するエン
トリのモディファイ部75が「1(ブロックデータ部の
BaとメインメモリのBaが不一致)」であれば(ステ
ップ417)、ブロックBaの最新の内容はキャッシュ
メモリ21又は31に存在する(この場合キャッシュメ
モリ21とする)ので、キャッシュメモリ21はブロッ
クBaをデータバス42に出力し、転送応答バス46を
介してキャッシュメモリ11に応答を出力したことを通
知し(ステップ418)、モディファイ部75を「0
(ブロックデータ部72のBaとメインメモリのBaが
一致)」とする(ステップ419)。このとき、メイン
メモリ5はデータバス42にキャッシュメモリ21が出
力したブロックBaをキャッシュメモリ11とともに受
信してメインメモリ5に格納されている内容を最新の内
容に更新する。
1がブロックBaを内部に格納し、かつブロックBaを
格納するエントリの中間状態部が「0(確定状態)」の
場合(ステップ413):ブロックBaを格納するエン
トリのモディファイ部75が「1(ブロックデータ部の
BaとメインメモリのBaが不一致)」であれば(ステ
ップ417)、ブロックBaの最新の内容はキャッシュ
メモリ21又は31に存在する(この場合キャッシュメ
モリ21とする)ので、キャッシュメモリ21はブロッ
クBaをデータバス42に出力し、転送応答バス46を
介してキャッシュメモリ11に応答を出力したことを通
知し(ステップ418)、モディファイ部75を「0
(ブロックデータ部72のBaとメインメモリのBaが
一致)」とする(ステップ419)。このとき、メイン
メモリ5はデータバス42にキャッシュメモリ21が出
力したブロックBaをキャッシュメモリ11とともに受
信してメインメモリ5に格納されている内容を最新の内
容に更新する。
【0013】キャッシュメモリ21は上記ステップ41
8、ステップ419の処理が終了するか、又はステップ
417でブロックBaを格納するエントリのモディファ
イ部が「0(ブロックデータ部72のBaとメインメモ
リのBaが一致)」であれば、以下の処理を行う。キャ
ッシュメモリ11がアクセス種別バス44に「書き換
え」を出力していれば(ステップ420)、ブロックB
aを格納するエントリのバリッド部を「0(無効)」と
して無効化を行う(ステップ421)。これによって、
プロセッサ10からのブロックBaへのアクセスが書き
換えの場合に、書き換え前の内容が他のキャッシュメモ
リに存在することがなくなり、データの無矛盾性を保証
する。
8、ステップ419の処理が終了するか、又はステップ
417でブロックBaを格納するエントリのモディファ
イ部が「0(ブロックデータ部72のBaとメインメモ
リのBaが一致)」であれば、以下の処理を行う。キャ
ッシュメモリ11がアクセス種別バス44に「書き換
え」を出力していれば(ステップ420)、ブロックB
aを格納するエントリのバリッド部を「0(無効)」と
して無効化を行う(ステップ421)。これによって、
プロセッサ10からのブロックBaへのアクセスが書き
換えの場合に、書き換え前の内容が他のキャッシュメモ
リに存在することがなくなり、データの無矛盾性を保証
する。
【0014】一方キャッシュメモリ11は、ブロック転
送応答バス46を介して要求したブロックBaがデータ
バス42上に出力されることを知り、データバス42上
に出力されたブロックBaを中間状態部73が「0(確
定状態)」であるエントリから予め定められた手続きに
よって選択したエントリ(選択したエントリをエントリ
Eと記述する)のブロックデータ部72に格納し、アド
レスaの情報をアドレス情報部に格納し、エントリEの
バリッド部を「1(有効)」、中間状態部を「1(中間
状態)」とする(ステップ315)。プロセッサ10か
らのブロックBaに対するアクセス種別が書き換えであ
れば(ステップ316)、エントリEのモディファイ部
75を「1(ブロックデータ部72のBaとメインメモ
リのBaが不一致)」とするとともに(ステップ31
7)、プロセッサ10からプロセッサバス100を介し
て指示された内容にでエントリEのブロックデータ部7
2に格納されているブロックBaのアドレスaで指定さ
れるデータを書き換える(ステップ326)。プロセッ
サ10からのブロックBaに対するアドレス種別が読み
だしであればエントリEのブロックデータ部72に格納
されているブロックBaのアドレスaで指定されるデー
タをプロセッサ10に転送する(ステップ326)。キ
ャッシュメモリ11は信号線101を介してシステムバ
ス4の使用を終了したことをバスマスタコントローラ6
に知らせる。
送応答バス46を介して要求したブロックBaがデータ
バス42上に出力されることを知り、データバス42上
に出力されたブロックBaを中間状態部73が「0(確
定状態)」であるエントリから予め定められた手続きに
よって選択したエントリ(選択したエントリをエントリ
Eと記述する)のブロックデータ部72に格納し、アド
レスaの情報をアドレス情報部に格納し、エントリEの
バリッド部を「1(有効)」、中間状態部を「1(中間
状態)」とする(ステップ315)。プロセッサ10か
らのブロックBaに対するアクセス種別が書き換えであ
れば(ステップ316)、エントリEのモディファイ部
75を「1(ブロックデータ部72のBaとメインメモ
リのBaが不一致)」とするとともに(ステップ31
7)、プロセッサ10からプロセッサバス100を介し
て指示された内容にでエントリEのブロックデータ部7
2に格納されているブロックBaのアドレスaで指定さ
れるデータを書き換える(ステップ326)。プロセッ
サ10からのブロックBaに対するアドレス種別が読み
だしであればエントリEのブロックデータ部72に格納
されているブロックBaのアドレスaで指定されるデー
タをプロセッサ10に転送する(ステップ326)。キ
ャッシュメモリ11は信号線101を介してシステムバ
ス4の使用を終了したことをバスマスタコントローラ6
に知らせる。
【0015】(ロ)プロセッサ10からプロセッサバス
100を介して要求されたアドレスaのデータを含むブ
ロックBaを格納する有効なエントリEがキャッシュメ
モリ11に存在する場合(ステップ312): (ロ−a) ステップ318でエントリEの中間状態部
73が「0(確定状態)」の場合:エントリEの中間状
態部73を「1(中間状態)」とし(ステップ31
9)、エントリEのモディファイ部75が「0(ブロッ
クデータ部のBaとメインメモリのBaが一致)」であ
れば以下(ロ−b)の処理を行う(ステップ320)。
エントリEのモディファイ部75が「1(ブロックデー
タ部のBaとメインメモリのBaが不一致)」であれ
ば、キャッシュメモリ11は信号線101を介してシス
テムバス4の使用要求をバスマスタコントローラ6に知
らせる。バスマスタコントローラ6は、予め定められた
手続きに従い1つのキャッシュメモリにのみシステムバ
ス4の使用要求を与える。信号線102を介してシステ
ムバス4の使用許可がキャッシュメモリ11に与えられ
たとき、アドレスバス41上にアドレスaを出力し、リ
ード/ライトバス43に書き換え指示を出力し、データ
バス42にエントリEのブロックデータ部72に格納さ
れているブロックBaを出力して、メインメモリ5に格
納されているブロックBaを最新の内容に更新する(ス
テップ321)。
100を介して要求されたアドレスaのデータを含むブ
ロックBaを格納する有効なエントリEがキャッシュメ
モリ11に存在する場合(ステップ312): (ロ−a) ステップ318でエントリEの中間状態部
73が「0(確定状態)」の場合:エントリEの中間状
態部73を「1(中間状態)」とし(ステップ31
9)、エントリEのモディファイ部75が「0(ブロッ
クデータ部のBaとメインメモリのBaが一致)」であ
れば以下(ロ−b)の処理を行う(ステップ320)。
エントリEのモディファイ部75が「1(ブロックデー
タ部のBaとメインメモリのBaが不一致)」であれ
ば、キャッシュメモリ11は信号線101を介してシス
テムバス4の使用要求をバスマスタコントローラ6に知
らせる。バスマスタコントローラ6は、予め定められた
手続きに従い1つのキャッシュメモリにのみシステムバ
ス4の使用要求を与える。信号線102を介してシステ
ムバス4の使用許可がキャッシュメモリ11に与えられ
たとき、アドレスバス41上にアドレスaを出力し、リ
ード/ライトバス43に書き換え指示を出力し、データ
バス42にエントリEのブロックデータ部72に格納さ
れているブロックBaを出力して、メインメモリ5に格
納されているブロックBaを最新の内容に更新する(ス
テップ321)。
【0016】エントリEの中間状態部73を「1(中間
状態)」とするとともに、プロセッサ10が出力したア
クセス種別が「読みだし」の場合にはエントリEのモデ
ィファイ部75を「0(ブロックデータ部のBaとメイ
ンメモリのBaが一致)」とするとともに、エントリE
のブロックデータ部72に格納されているブロックBa
のアドレスaで指定されるデータをプロセッサ10に転
送する。プロセッサ10からブロックBaに対するアク
セス種別が「書き換え」であれば、プロセッサ10から
プロセッサバス100を介して指示された内容でエント
リEのブロックデータ部72に格納されているブロック
Baのアドレスaで指定されるデータを書き換える(ス
テップ326)。
状態)」とするとともに、プロセッサ10が出力したア
クセス種別が「読みだし」の場合にはエントリEのモデ
ィファイ部75を「0(ブロックデータ部のBaとメイ
ンメモリのBaが一致)」とするとともに、エントリE
のブロックデータ部72に格納されているブロックBa
のアドレスaで指定されるデータをプロセッサ10に転
送する。プロセッサ10からブロックBaに対するアク
セス種別が「書き換え」であれば、プロセッサ10から
プロセッサバス100を介して指示された内容でエント
リEのブロックデータ部72に格納されているブロック
Baのアドレスaで指定されるデータを書き換える(ス
テップ326)。
【0017】(ロ−b) ステップ318でエントリE
の中間状態部73が「1(中間状態)」の場合:プロセ
ッサ10からのブロックBaに対するアクセス種別が
「書き換え」であり、かつエントリEのモディファイ部
75が「0(ブロックデータ部72のBaとメインメモ
リのBaが一致)」であれば(ステップ322)、キャ
ッシュメモリ11は信号線101を介してシステムバス
4の使用要求をバスマスタコントローラ6に知らせる。
バスマスタコントローラ6は、予め定められた手続きに
従い1つのキャッシュメモリにのみシステムバス4の使
用許可を与える。信号線102を介してシステムバス4
の使用許可がキャッシュメモリ11に与えられたとき、
アドレスバス41上にアドレスaを出力し(ステップ3
23)、リード/ライトバス43に読みだし指示を出力
し、アクセス種別バス44にプロセッサ10が出力した
アクセス種別「書き換え」を出力する。
の中間状態部73が「1(中間状態)」の場合:プロセ
ッサ10からのブロックBaに対するアクセス種別が
「書き換え」であり、かつエントリEのモディファイ部
75が「0(ブロックデータ部72のBaとメインメモ
リのBaが一致)」であれば(ステップ322)、キャ
ッシュメモリ11は信号線101を介してシステムバス
4の使用要求をバスマスタコントローラ6に知らせる。
バスマスタコントローラ6は、予め定められた手続きに
従い1つのキャッシュメモリにのみシステムバス4の使
用許可を与える。信号線102を介してシステムバス4
の使用許可がキャッシュメモリ11に与えられたとき、
アドレスバス41上にアドレスaを出力し(ステップ3
23)、リード/ライトバス43に読みだし指示を出力
し、アクセス種別バス44にプロセッサ10が出力した
アクセス種別「書き換え」を出力する。
【0018】他方キャッシュメモリ21及び31は、ア
ドレスバス41に出力されているアドレスaを入力し、
アドレスaのデータを含むブロックBaが内部に格納さ
れているか否かのチェックを図5に示したフローチャー
トに従って行う。このとき、処理ユニット2又は3のキ
ャッシュメモリから矛盾応答バス47を介して矛盾が発
生した旨の通知を受け取る(ステップ324)と、キャ
ッシュメモリ11は下記(ハ)に示す矛盾解消処理を行
う。矛盾応答バス47を介して矛盾が発生した旨の通知
がない場合には、キャッシュメモリは転送応答バス46
に応答を出力し、メインメモリ5からのデータ転送を中
止させ、(キャッシュメモリ11にブロックBaはすで
に存在するので、ブロックをメインメモリ5から読み出
す必要はない。)エントリEのモディファイ部75を
「1(ブロックデータ部72のBaとメインメモリのB
aが不一致)」とし(ステップ325)、プロセッサ1
0からプロセッサバス100を介して指示された内容で
エントリEのブロックデータ部72に格納されているブ
ロックBaのアドレスaで指定されるデータを書き換え
る(ステップ326)。キャッシュメモリ11は信号線
101を介してシステムバス4の使用を終了したことを
バスマスタコントローラ6に知らせる。
ドレスバス41に出力されているアドレスaを入力し、
アドレスaのデータを含むブロックBaが内部に格納さ
れているか否かのチェックを図5に示したフローチャー
トに従って行う。このとき、処理ユニット2又は3のキ
ャッシュメモリから矛盾応答バス47を介して矛盾が発
生した旨の通知を受け取る(ステップ324)と、キャ
ッシュメモリ11は下記(ハ)に示す矛盾解消処理を行
う。矛盾応答バス47を介して矛盾が発生した旨の通知
がない場合には、キャッシュメモリは転送応答バス46
に応答を出力し、メインメモリ5からのデータ転送を中
止させ、(キャッシュメモリ11にブロックBaはすで
に存在するので、ブロックをメインメモリ5から読み出
す必要はない。)エントリEのモディファイ部75を
「1(ブロックデータ部72のBaとメインメモリのB
aが不一致)」とし(ステップ325)、プロセッサ1
0からプロセッサバス100を介して指示された内容で
エントリEのブロックデータ部72に格納されているブ
ロックBaのアドレスaで指定されるデータを書き換え
る(ステップ326)。キャッシュメモリ11は信号線
101を介してシステムバス4の使用を終了したことを
バスマスタコントローラ6に知らせる。
【0019】(ハ)他の処理ユニットから矛盾応答バス
47を介して矛盾が発生した旨の通知を受信した場合
(ステップ327の矛盾解消処理):キャッシュメモリ
11はプロセッサ10で実行中の処理を中止し、実行中
の処理が書き換えたメインメモリの内容を処理が実行を
開始する以前の状態とするために、図2の無効化指示信
号720を「オン」とし、キャッシュメモリ11の中間
状態部73に値「1」がセットされ、かつモディファイ
部75に値「1」がセットされている全てのエントリの
バリッド部74を「0」とし、その後に確定指示信号2
10を「オン」とし、キャッシュメモリ2の全ての中間
状態部73を「0」とする。これによって、プロセッサ
10がキャッシュメモリ11を介してアクセスするメイ
ンメモリ5の内容は中断した処理の実行を開始した時点
の内容となる。キャッシュメモリ11はプロセッサ10
で実行中の処理を中止させるとともに、プロセッサバス
100を介して矛盾が発生したことをプロセッサ10に
通知する。プロセッサ10は実行中の処理を最初から再
実行する。上記では、矛盾発生時にアクセス元で実行中
の処理を中止(無効化)する方法について述べたが、実
行中の処理を中断し、予め定められた時間が経過した後
に中断点から再開させる方法もある。
47を介して矛盾が発生した旨の通知を受信した場合
(ステップ327の矛盾解消処理):キャッシュメモリ
11はプロセッサ10で実行中の処理を中止し、実行中
の処理が書き換えたメインメモリの内容を処理が実行を
開始する以前の状態とするために、図2の無効化指示信
号720を「オン」とし、キャッシュメモリ11の中間
状態部73に値「1」がセットされ、かつモディファイ
部75に値「1」がセットされている全てのエントリの
バリッド部74を「0」とし、その後に確定指示信号2
10を「オン」とし、キャッシュメモリ2の全ての中間
状態部73を「0」とする。これによって、プロセッサ
10がキャッシュメモリ11を介してアクセスするメイ
ンメモリ5の内容は中断した処理の実行を開始した時点
の内容となる。キャッシュメモリ11はプロセッサ10
で実行中の処理を中止させるとともに、プロセッサバス
100を介して矛盾が発生したことをプロセッサ10に
通知する。プロセッサ10は実行中の処理を最初から再
実行する。上記では、矛盾発生時にアクセス元で実行中
の処理を中止(無効化)する方法について述べたが、実
行中の処理を中断し、予め定められた時間が経過した後
に中断点から再開させる方法もある。
【0020】キャッシュメモリ11からの全てのアクセ
スに対して他の処理ユニットが矛盾の発生を通知するこ
となく、プロセッサ10で実行中の処理が正常に終了し
たとき、プロセッサ10は図2の確定指示信号710を
「オン」とし、キャッシュメモリ2の全てのエントリの
中間状態部73を「0」とする。これによって、プロセ
ッサ10で実行した処理が書き換えが確定し、プロセッ
サ10で実行した処理がアクセスした全てのブロックは
他のプロセッサで実行される処理から読みだし及び書き
換えが可能となる。
スに対して他の処理ユニットが矛盾の発生を通知するこ
となく、プロセッサ10で実行中の処理が正常に終了し
たとき、プロセッサ10は図2の確定指示信号710を
「オン」とし、キャッシュメモリ2の全てのエントリの
中間状態部73を「0」とする。これによって、プロセ
ッサ10で実行した処理が書き換えが確定し、プロセッ
サ10で実行した処理がアクセスした全てのブロックは
他のプロセッサで実行される処理から読みだし及び書き
換えが可能となる。
【0021】これにより、各処理ユニットが同時並列的
にアクセスするブロックへのアクセスを行う際にアクセ
ス権の確保/解放の処理を各プロセッサで実行する処理
に予め組み込んでおく必要がなく、複数のプロセッサが
同一のブロックに対して同時並列的にアクセスすると
き、当該ブロックに対する全てのプロセッサからのアク
セス種別が読みだしの場合以外には排他制御が行われ
る。以上が本発明の一実施例である。
にアクセスするブロックへのアクセスを行う際にアクセ
ス権の確保/解放の処理を各プロセッサで実行する処理
に予め組み込んでおく必要がなく、複数のプロセッサが
同一のブロックに対して同時並列的にアクセスすると
き、当該ブロックに対する全てのプロセッサからのアク
セス種別が読みだしの場合以外には排他制御が行われ
る。以上が本発明の一実施例である。
【0022】請求項2記載の実施例を以下に述べる。請
求項2では、上記請求項1記載の実施例において、プロ
セッサからのアクセス種別がデータの読みだし又は書き
換えの場合のみ中間状態部73の値を「1(中間状
態)」とし、プロセッサからのアクセス種別が命令の読
みだしの場合には中間状態部73の値は変更しないよう
にしたり、プロセッサがアクセスするアドレスaが予め
定められた範囲の場合のみ中間状態部73の値を「1
(中間状態)」したりするものである。一般に、メイン
メモリに格納されている命令は同時並列的に書き換えら
れることはなく、排他制御は不要である。また、各プロ
セッサに対して個別に割り当てられたメインメモリ上の
領域は同時並列的に書き換えられることはなく、排他制
御は不要である。これにより、アドレス情報部にブロッ
クBaのアドレスを格納し、かつバリッド部74が「1
(有効)」であるエントリがキャッシュメモリ2に存在
しない場合に、ブロックBaを格納するために選択可能
なエントリ数が増加し、少ないエントリ数でキャッシュ
メモリを実現することが可能となる。
求項2では、上記請求項1記載の実施例において、プロ
セッサからのアクセス種別がデータの読みだし又は書き
換えの場合のみ中間状態部73の値を「1(中間状
態)」とし、プロセッサからのアクセス種別が命令の読
みだしの場合には中間状態部73の値は変更しないよう
にしたり、プロセッサがアクセスするアドレスaが予め
定められた範囲の場合のみ中間状態部73の値を「1
(中間状態)」したりするものである。一般に、メイン
メモリに格納されている命令は同時並列的に書き換えら
れることはなく、排他制御は不要である。また、各プロ
セッサに対して個別に割り当てられたメインメモリ上の
領域は同時並列的に書き換えられることはなく、排他制
御は不要である。これにより、アドレス情報部にブロッ
クBaのアドレスを格納し、かつバリッド部74が「1
(有効)」であるエントリがキャッシュメモリ2に存在
しない場合に、ブロックBaを格納するために選択可能
なエントリ数が増加し、少ないエントリ数でキャッシュ
メモリを実現することが可能となる。
【0023】請求項3の一実施例を以下に述べる。請求
項3の実施例は上記請求項1記載の実施例において、図
1のシステムバス4の矛盾応答バス47を削除したもの
である。図3のステップ324及び図4のステップ31
4の「矛盾応答バス47がオン?」及びステップ327
の「矛盾解消処理」を削除する。図5のステップ416
を「矛盾解消処理」に変更する。プロセッサがブロック
をアクセスする場合の請求項3の実施例を説明するフロ
ーチャートを図6及び図7に、他の処理ユニットがシス
テムバス4に出力したアクセスをチェックするためのフ
ローチャートを図8に示す。請求項1の実施例におい
て、キャッシュメモリ21および31は、キャッシュメ
モリ11がアドレスバス41に出力したアドレスaを入
力し、アドレスaのデータを含むブロックBaが内部に
格納されているか否かのチェックを行う。図8は他の処
理ユニットがシステムバス4に出力したアクセスをチェ
ックする処理を説明するためのフローチャートであり、
論理回路を用いることによって、この処理の各部分を並
列に実行することができる。
項3の実施例は上記請求項1記載の実施例において、図
1のシステムバス4の矛盾応答バス47を削除したもの
である。図3のステップ324及び図4のステップ31
4の「矛盾応答バス47がオン?」及びステップ327
の「矛盾解消処理」を削除する。図5のステップ416
を「矛盾解消処理」に変更する。プロセッサがブロック
をアクセスする場合の請求項3の実施例を説明するフロ
ーチャートを図6及び図7に、他の処理ユニットがシス
テムバス4に出力したアクセスをチェックするためのフ
ローチャートを図8に示す。請求項1の実施例におい
て、キャッシュメモリ21および31は、キャッシュメ
モリ11がアドレスバス41に出力したアドレスaを入
力し、アドレスaのデータを含むブロックBaが内部に
格納されているか否かのチェックを行う。図8は他の処
理ユニットがシステムバス4に出力したアクセスをチェ
ックする処理を説明するためのフローチャートであり、
論理回路を用いることによって、この処理の各部分を並
列に実行することができる。
【0024】(a) キャッシュメモリ21及び31が
ブロックBaを内部に格納していない場合 メインメモリ5がブロックBaをデータバス42に出力
し、転送応答バス46を介してキャッシュメモリ11に
応答を出力したことを通知する。 (b) キャッシュメモリ21又は31がブロックBa
を内部に格納し、かつブロックBaを格納するエントリ
の中間状態部73が「1(中間状態)」の場合(ステッ
プ613):ブロックBaを格納するエントリEのモデ
ィファイ部75が「1(ブロックデータ部のBaとメイ
ンメモリのBaが不一致)」(ステップ614)または
キャッシュメモリ11がアクセス種別バス44に書き換
えを出力していれば(ステップ615)、請求項1の実
施例の(ハ)に示した矛盾解消処理を処理ユニット2ま
たは3で行う(ステップ616)。メインメモリ5はブ
ロックBaをデータバス42に出力し、転送応答バス4
6を介してキャッシュメモリ11に応答を出力したこと
を通知する。
ブロックBaを内部に格納していない場合 メインメモリ5がブロックBaをデータバス42に出力
し、転送応答バス46を介してキャッシュメモリ11に
応答を出力したことを通知する。 (b) キャッシュメモリ21又は31がブロックBa
を内部に格納し、かつブロックBaを格納するエントリ
の中間状態部73が「1(中間状態)」の場合(ステッ
プ613):ブロックBaを格納するエントリEのモデ
ィファイ部75が「1(ブロックデータ部のBaとメイ
ンメモリのBaが不一致)」(ステップ614)または
キャッシュメモリ11がアクセス種別バス44に書き換
えを出力していれば(ステップ615)、請求項1の実
施例の(ハ)に示した矛盾解消処理を処理ユニット2ま
たは3で行う(ステップ616)。メインメモリ5はブ
ロックBaをデータバス42に出力し、転送応答バス4
6を介してキャッシュメモリ11に応答を出力したこと
を通知する。
【0025】(c)キャッシュメモリ21または31が
ブロックBaを内部に格納し、かつブロックBaを格納
するエントリの中間状態部73が「0(確定状態)」の
場合(ステップ613):ブロックBaを格納するエン
トリのモディファイ部75が「1(ブロックデータ部の
BaとメインメモリのBaが不一致)」(ステップ61
7)であれば、ブロックBaの最新の内容はキャッシュ
メモリ21又は31に存在する(以下キャッシュメモリ
21に存在した場合で説明する)ので、キャッシュメモ
リ21はブロックBaをデータバス42に出力し、転送
応答バス46を介してキャッシュメモリ11に応答を出
力したことを通知し(ステップ618)、モディファイ
部75を「0(ブロックデータ部のBaとメインメモリ
のBaが一致)」とする(ステップ619)。このと
き、メインメモリ5はデータバス42にキャッシュメモ
リ21が出力したブロックBaをキャッシュメモリ11
とともに受信してメインメモリ5に格納されている内容
を最新の内容に更新する。
ブロックBaを内部に格納し、かつブロックBaを格納
するエントリの中間状態部73が「0(確定状態)」の
場合(ステップ613):ブロックBaを格納するエン
トリのモディファイ部75が「1(ブロックデータ部の
BaとメインメモリのBaが不一致)」(ステップ61
7)であれば、ブロックBaの最新の内容はキャッシュ
メモリ21又は31に存在する(以下キャッシュメモリ
21に存在した場合で説明する)ので、キャッシュメモ
リ21はブロックBaをデータバス42に出力し、転送
応答バス46を介してキャッシュメモリ11に応答を出
力したことを通知し(ステップ618)、モディファイ
部75を「0(ブロックデータ部のBaとメインメモリ
のBaが一致)」とする(ステップ619)。このと
き、メインメモリ5はデータバス42にキャッシュメモ
リ21が出力したブロックBaをキャッシュメモリ11
とともに受信してメインメモリ5に格納されている内容
を最新の内容に更新する。
【0026】キャッシュメモリ21は上記ステップ61
8、619の処理が終了するか、又はブロックBaを格
納するエントリのモディファイ部75が「0(ブロック
データ部72のBaとメインメモリのBaが一致)」
(ステップ617)であれば以下の処理を行う。キャッ
シュメモリ11がアクセス種別バス44に「書き換え」
を出力(ステップ620)していれば、ブロックBaを
格納するエントリのバリッド部74を「0(無効)」と
して無効化を行い(ステップ621)、プロセッサ10
からのブロックBaへのアクセスが書き換えの場合に、
書き換え前の内容が他のキャッシュメモリに存在するこ
とがなくなりデータの無矛盾性を保証する。これによ
り、システムバス4の矛盾応答バス47が不要になり、
ハード量を削減することが可能となる。
8、619の処理が終了するか、又はブロックBaを格
納するエントリのモディファイ部75が「0(ブロック
データ部72のBaとメインメモリのBaが一致)」
(ステップ617)であれば以下の処理を行う。キャッ
シュメモリ11がアクセス種別バス44に「書き換え」
を出力(ステップ620)していれば、ブロックBaを
格納するエントリのバリッド部74を「0(無効)」と
して無効化を行い(ステップ621)、プロセッサ10
からのブロックBaへのアクセスが書き換えの場合に、
書き換え前の内容が他のキャッシュメモリに存在するこ
とがなくなりデータの無矛盾性を保証する。これによ
り、システムバス4の矛盾応答バス47が不要になり、
ハード量を削減することが可能となる。
【0027】請求項4の実施例を以下に述べる。請求項
1の実施例において、各処理ユニットのキャッシュメモ
リにプロセッサが書き換え可能な優先度レジスタを設
け、プロセッサは実行開始時に上記優先度レジスタに実
行する処理の優先度を書き込む。バスマスタコントロー
ラ6からシステムバス4の使用許可を得てシステムバス
4にアドレスを出力するキャッシュメモリは優先度レジ
スタに書き込まれている値(優先度)を出力する。他の
処理ユニットがシステムバス4に出力したアクセスをチ
ェックする処理において、矛盾が発生した(図5のステ
ップ416)のとき、矛盾を検出した処理ユニットのキ
ャッシュメモリは、優先度バス45に出力されている値
(優先度)と優先度レジスタに書き込まれている値とを
比較する。優先度レジスタに書き込まれている値が優先
度バス45に出力されている値より大きいか又は同じで
ある場合、上記請求項1の実施例に示すように、矛盾応
答バス47に矛盾が発生した旨の信号を出力し、優先度
レジスタに書き込まれている値が優先度バス45に出力
されている値より小さい場合には、上記請求項3の実施
例に示すように、自プロセッサで実行中の処理を中止さ
せる。これにより、共通データに同時並列的にアクセス
する処理の中で、重要度が高く他の処理に比べて優先し
て実行させたい優先度の高い処理と優先度の低い処理と
の間で、共通データに対して競合が発生した場合、優先
度の低い処理を中止させ優先度の高い処理を優先して実
行させることが可能となる。
1の実施例において、各処理ユニットのキャッシュメモ
リにプロセッサが書き換え可能な優先度レジスタを設
け、プロセッサは実行開始時に上記優先度レジスタに実
行する処理の優先度を書き込む。バスマスタコントロー
ラ6からシステムバス4の使用許可を得てシステムバス
4にアドレスを出力するキャッシュメモリは優先度レジ
スタに書き込まれている値(優先度)を出力する。他の
処理ユニットがシステムバス4に出力したアクセスをチ
ェックする処理において、矛盾が発生した(図5のステ
ップ416)のとき、矛盾を検出した処理ユニットのキ
ャッシュメモリは、優先度バス45に出力されている値
(優先度)と優先度レジスタに書き込まれている値とを
比較する。優先度レジスタに書き込まれている値が優先
度バス45に出力されている値より大きいか又は同じで
ある場合、上記請求項1の実施例に示すように、矛盾応
答バス47に矛盾が発生した旨の信号を出力し、優先度
レジスタに書き込まれている値が優先度バス45に出力
されている値より小さい場合には、上記請求項3の実施
例に示すように、自プロセッサで実行中の処理を中止さ
せる。これにより、共通データに同時並列的にアクセス
する処理の中で、重要度が高く他の処理に比べて優先し
て実行させたい優先度の高い処理と優先度の低い処理と
の間で、共通データに対して競合が発生した場合、優先
度の低い処理を中止させ優先度の高い処理を優先して実
行させることが可能となる。
【0028】請求項5の実施例を実現するためのエント
リ構成を図9に示す。上記請求項1の実施例において、
キャッシュメモリ内に1つのモードレジスタ740とオ
アゲート750を設け、モードレジスタ740の値が
「1」である場合は請求項1、2、3及び4による排他
制御を行わず、値が「0」である場合には請求項1、
2、3及び4による排他制御を行い、オアゲート750
は確定指示信号710とモードレジスタ740との内容
741とを入力とし、確定指示又はモードレジスタ74
0の内容が「1」である場合信号線751を介して中間
状態部73の値を「0」とする。よって、モードレジス
タ740に値「1(排他制御を行わない)」がセットさ
れている場合、中間状態部73の値は常に「0」とな
る。
リ構成を図9に示す。上記請求項1の実施例において、
キャッシュメモリ内に1つのモードレジスタ740とオ
アゲート750を設け、モードレジスタ740の値が
「1」である場合は請求項1、2、3及び4による排他
制御を行わず、値が「0」である場合には請求項1、
2、3及び4による排他制御を行い、オアゲート750
は確定指示信号710とモードレジスタ740との内容
741とを入力とし、確定指示又はモードレジスタ74
0の内容が「1」である場合信号線751を介して中間
状態部73の値を「0」とする。よって、モードレジス
タ740に値「1(排他制御を行わない)」がセットさ
れている場合、中間状態部73の値は常に「0」とな
る。
【0029】また、図3のステップ320において、
「エントリEのモディファイ部75が「1」?」を「エ
ントリEのモディファイ部75が「1」かつモードレジ
スタ740の値が「0」?」とすることによって、請求
項1、2、3及び4による排他制御を行わない場合に不
要となる書き戻しを抑制することができる。これによ
り、処理ユニットで実行する処理に対する排他制御が不
要な場合(情報処理装置が1台の処理ユニットで構成さ
れる場合、又は従来のアクセス権の確保/解放を予め組
み込むことによって排他制御を実現している処理を実行
させる場合など)に、処理が正常に終了した時点でキャ
ッシュメモリへの確定の指示が不要となり、また、メイ
ンメモリへの不要な書き戻しも発生しないのでメインメ
モリへのアクセス回数を削減することが可能となる。
「エントリEのモディファイ部75が「1」?」を「エ
ントリEのモディファイ部75が「1」かつモードレジ
スタ740の値が「0」?」とすることによって、請求
項1、2、3及び4による排他制御を行わない場合に不
要となる書き戻しを抑制することができる。これによ
り、処理ユニットで実行する処理に対する排他制御が不
要な場合(情報処理装置が1台の処理ユニットで構成さ
れる場合、又は従来のアクセス権の確保/解放を予め組
み込むことによって排他制御を実現している処理を実行
させる場合など)に、処理が正常に終了した時点でキャ
ッシュメモリへの確定の指示が不要となり、また、メイ
ンメモリへの不要な書き戻しも発生しないのでメインメ
モリへのアクセス回数を削減することが可能となる。
【0030】
【発明の効果】以上説明したように、本発明を用いるこ
とによって、各処理ユニットが同時並列的にアクセスす
る共通データへのアクセスを行う際にアクセス権の確保
/解放の処理を各処理ユニットで実行する処理に予め組
み込むことが不要となり、アクセス権の確保及び解放に
よる処理ユニットのオーバヘッドも生じず、新たに処理
を追加することによって共通データとなったデータに対
する排他制御を行うために従来の処理を変更するするこ
とも不要となるため、処理ユニットの実効的な性能を向
上させるとともに処理ユニットで実行させる処理の記述
(プログラム)の生産性を大幅に向上させることが可能
となる。
とによって、各処理ユニットが同時並列的にアクセスす
る共通データへのアクセスを行う際にアクセス権の確保
/解放の処理を各処理ユニットで実行する処理に予め組
み込むことが不要となり、アクセス権の確保及び解放に
よる処理ユニットのオーバヘッドも生じず、新たに処理
を追加することによって共通データとなったデータに対
する排他制御を行うために従来の処理を変更するするこ
とも不要となるため、処理ユニットの実効的な性能を向
上させるとともに処理ユニットで実行させる処理の記述
(プログラム)の生産性を大幅に向上させることが可能
となる。
【図1】本発明の一実施例を説明するためのマルチプロ
セッサシステムの構成図である。
セッサシステムの構成図である。
【図2】本発明のキャッシュメモリ内のエントリの構成
図である。
図である。
【図3】本発明のプロセッサからのアクセスに対するキ
ャッシュメモリの動作を説明するフローチャートの一部
である。
ャッシュメモリの動作を説明するフローチャートの一部
である。
【図4】本発明のプロセッサからのアクセスに対するキ
ャッシュメモリの動作を説明するフローチャートの残り
の部分である。
ャッシュメモリの動作を説明するフローチャートの残り
の部分である。
【図5】本発明の他の処理ユニットによるアクセスをチ
ェックするためのフローチャートである。
ェックするためのフローチャートである。
【図6】本発明の他の実施例におけるプロセッサからの
アクセスに対するキャッシュメモリの動作を説明するフ
ローチャートの一部である。
アクセスに対するキャッシュメモリの動作を説明するフ
ローチャートの一部である。
【図7】本発明の他の実施例におけるプロセッサからの
アクセスに対するキャッシュメモリの動作を説明するフ
ローチャートの残りの部分である。
アクセスに対するキャッシュメモリの動作を説明するフ
ローチャートの残りの部分である。
【図8】本発明の他の実施例における他の処理ユニット
によるアクセスをチェックするためのフローチャートで
ある。
によるアクセスをチェックするためのフローチャートで
ある。
【図9】本発明の他の実施例におけるキャッシュメモリ
内のエントリの構成図である。
内のエントリの構成図である。
1、2、3 処理ユニット 4 システムバス 5 メインメモリ 6 バスマスタコントローラ 10、20、30 プロセッサ 11、21、31 キャッシュメモリ 71 アドレス情報部 72 ブロックデータ部 73 中間状態部 74 バリッド部 75 モディファイ部 730 アンドゲート 740 モードレジスタ 750 オアゲート
Claims (5)
- 【請求項1】 それぞれがプロセッサ及びキャッシュメ
モリからなる複数の処理ユニットとアドレス空間が複数
のブロックに分割されているメインメモリとがシステム
バスで接続されてなるマルチプロセッサシステムにおい
て、 上記キャッシュメモリは複数のエントリから構成され、 更に、上記各エントリは、ブロックの内容を格納するブ
ロックデータ部、及び該ブロックデータ部に格納されて
いるブロックと当該ブロックに対応するメインメモリ中
のブロックとの内容が一致しているか否かを示すモディ
ファイ情報と当該ブロックへのアクセスが中間状態であ
るか否かを示す中間状態情報を格納するブロック状態部
から構成されるとともに、 上記キャッシュメモリは自プロセッサからのブロックへ
のアクセスに応じて、当該ブロックをブロックデータ部
に格納するエントリのブロック状態部に、上記モディフ
ァイ情報、及び上記中間状態情報を設定するとともに、
当該ブロックへのアクセスの完了時に自プロセッサから
の指示によってエントリのブロック状態部に格納されて
いる上記中間状態情報を解除し、 他の処理ユニットが上記システムバスにアドレス及びア
クセス種別を出力したとき、当該アドレスで指定される
ブロックが格納されているエントリのブロック状態部の
上記中間状態情報が中間状態であることを示しており、
さらに、当該エントリのブロック状態部に格納されてい
る上記モディファイ情報と他の処理ユニットがシステム
バスに出力したアクセス種別が予め定められた組合せで
ある場合に、アドレス出力元の処理ユニットに対して処
理の中断又は中止(無効化)を指示することを特徴とす
る排他制御方式。 - 【請求項2】 請求項1記載の排他制御方式において、
自プロセッサからのアクセスが命令の読みだし又は当該
アクセスの対象となるアドレスが各プロセッサ個別領域
を指す場合、ブロック状態部に上記中間状態情報をセッ
トしないことを特徴とする排他制御方式。 - 【請求項3】 請求項1または請求項2記載の排他制御
方式において、他のプロセッサが上記システムバスに出
力したアドレスに対して中間状態情報のセットされたブ
ロックへのアクセスを行った場合、当該ブロックに対す
る処理の中断又は中止(無効化)を当該処理ユニット内
で行うことを特徴とする排他制御方式。 - 【請求項4】 請求項1又は請求項2記載の排他制御方
式において、上記処理ユニットはアクセス情報とともに
処理ユニットが実行中の優先度(処理レベル)をシステ
ムバスに出力し、他の処理ユニットが上記システムバス
に出力したアドレスに対して中間状態情報がセットされ
たブロックへのアクセスを行った場合、自プロセッサで
実行中の優先度がシステムバスに出力された優先度より
大きいか又は同じ場合、当該ブロックに対する処理を中
断又は中止(無効化)することを、アドレス出力元の処
理ユニット又は自プロセッサに通知することを特徴とす
る排他制御方式。 - 【請求項5】 請求項1乃至請求項4記載の排他制御方
式において、キャッシュメモリ内のブロック状態部に中
間状態情報をセットするか否かの動作モードを設定する
動作モードレジスタを設け、上記動作モードレジスタに
中間状態情報をセットする動作モードが設定されていな
い場合、ブロック状態部への中間状態情報のセットを行
わず、上記動作モードレジスタに中間状態情報をセット
する動作モードが設定されている場合、ブロック状態部
への中間状態情報のセットを行うことを特徴とする排他
制御方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28724592A JPH06139206A (ja) | 1992-10-26 | 1992-10-26 | マルチプロセッサシステムにおける排他制御方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28724592A JPH06139206A (ja) | 1992-10-26 | 1992-10-26 | マルチプロセッサシステムにおける排他制御方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06139206A true JPH06139206A (ja) | 1994-05-20 |
Family
ID=17714912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28724592A Pending JPH06139206A (ja) | 1992-10-26 | 1992-10-26 | マルチプロセッサシステムにおける排他制御方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06139206A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005181775A (ja) * | 2003-12-22 | 2005-07-07 | Kawai Musical Instr Mfg Co Ltd | データ処理用lsi |
JP2010049708A (ja) * | 1999-01-19 | 2010-03-04 | Arm Ltd | データ処理システムに於けるメモリ制御 |
JP2011040854A (ja) * | 2009-08-07 | 2011-02-24 | Canon Inc | ジョブ処理装置、ジョブ処理装置の制御方法、及びプログラム |
-
1992
- 1992-10-26 JP JP28724592A patent/JPH06139206A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049708A (ja) * | 1999-01-19 | 2010-03-04 | Arm Ltd | データ処理システムに於けるメモリ制御 |
JP2005181775A (ja) * | 2003-12-22 | 2005-07-07 | Kawai Musical Instr Mfg Co Ltd | データ処理用lsi |
JP4642348B2 (ja) * | 2003-12-22 | 2011-03-02 | 株式会社河合楽器製作所 | データ処理用lsi |
JP2011040854A (ja) * | 2009-08-07 | 2011-02-24 | Canon Inc | ジョブ処理装置、ジョブ処理装置の制御方法、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3550092B2 (ja) | キャッシュ装置及び制御方法 | |
CN112100093B (zh) | 保持多处理器共享内存数据一致性的方法和多处理器*** | |
JP2829115B2 (ja) | ファイル共用方法 | |
JPH06139206A (ja) | マルチプロセッサシステムにおける排他制御方式 | |
JP3381086B2 (ja) | 排他制御可能なマルチプロセッサシステム | |
JPH06309231A (ja) | キャッシュメモリ制御方法 | |
JP3187446B2 (ja) | キャッシュメモリ制御装置 | |
JPH06266620A (ja) | キャッシュメモリを用いた排他制御システム | |
JP2504323B2 (ja) | システムバス制御方法 | |
JPH04140860A (ja) | マルチプロセッサにおけるバス制御方法 | |
JP3381080B2 (ja) | 処理の中断が可能な排他制御方式 | |
JPH0744459A (ja) | キャッシュ制御方法およびキャッシュ制御装置 | |
JPH0635866A (ja) | マルチプロセッサシステム | |
JPH0628258A (ja) | マイクロプロセッサ | |
JPH03172943A (ja) | キャッシュメモリ制御方式 | |
JPS62226348A (ja) | 主記憶装置兼主記憶制御装置 | |
JPH06175981A (ja) | キャッシュメモリを用いた排他制御方法および排他制御システム | |
JPH08202622A (ja) | 分散型メモリ構成のキャッシュ制御方法 | |
JPH0241538A (ja) | キャッシュメモリ制御方法 | |
JP3219422B2 (ja) | キャッシュメモリ制御方式 | |
CN116685958A (zh) | 一种访问数据的方法和装置 | |
JPH0652049A (ja) | メモリ内容回復装置 | |
JPS6138504B2 (ja) | ||
JP2000076179A (ja) | システムバス最適化方式 | |
JPS6238743B2 (ja) |