JPH06266610A - 処理の中断が可能な排他制御方式 - Google Patents

処理の中断が可能な排他制御方式

Info

Publication number
JPH06266610A
JPH06266610A JP5055278A JP5527893A JPH06266610A JP H06266610 A JPH06266610 A JP H06266610A JP 5055278 A JP5055278 A JP 5055278A JP 5527893 A JP5527893 A JP 5527893A JP H06266610 A JPH06266610 A JP H06266610A
Authority
JP
Japan
Prior art keywords
block
processor
task
bus
cache memory
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.)
Granted
Application number
JP5055278A
Other languages
English (en)
Other versions
JP3381080B2 (ja
Inventor
Tsunemichi Shiozawa
恒道 塩澤
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP05527893A priority Critical patent/JP3381080B2/ja
Publication of JPH06266610A publication Critical patent/JPH06266610A/ja
Application granted granted Critical
Publication of JP3381080B2 publication Critical patent/JP3381080B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 処理ユニットでの実効的な性能を向上させる
とともに、処理ユニットで実行させる処理の記述(プロ
グラム)の生産性を向上させる排他制御方式を提供する
こと。 【構成】 キャッシュメモリの各エントリは、アドレス
情報部211、ブロックデータ部212、各処理ユニッ
トのタスク識別バスの信号線と同一のビット数からな
り、アクセスを行ったタスクに対応するビットに値
「1」を設定するタスク識別情報部213、処理ユニッ
トで実行が終了(確定指示を出力)していないタスクが
アクセスしたことを示す中間状態情報部214、バリッ
ド部215、モディファイ部216、アドレスを比較す
る比較器217、タスク識別情報を比較する比較器21
8、比較器217から一致信号が出力し、かつバリッド
部の内容が「1(有効)」である場合に信号線21Bに
「オン」信号を出力するアンドゲート219から構成さ
れる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、処理ユニットのプロセ
ッサで実行する処理(タスク)を分割して実行する方法
において、各処理(タスク)が並列にアクセスするデー
タの無矛盾性保証制御を行うための排他制御方式に関す
るものである。
【0002】
【従来の技術】処理ユニットで複数の処理(以下、処理
の単位をタスクという)を交互に実行するマルチタスク
方式において、各タスクが共通にアクセスする共通デー
タの読みだしおよび書き換えを行う場合、他のタスクと
の間に矛盾が発生することがある。例えば、タスクAと
タスクBがメインメモリのアドレスXに格納している値
「x」にそれぞれ10、100を加算する場合を考え
る。本来、タスクAおよびタスクBの処理が矛盾なく行
われるとアドレスXの値は「x+110」となる。しか
し、タスクAがアドレスXの値「x」を読みだしてから
アドレスXに値「x+10」を書き込む前に、処理ユニ
ットで実行されるタスクがタスクBに切り替わると、タ
スクBがアドレスXの値「x」を読みだし、タスクBは
アドレスXを「x+100」に書き換え、タスクAが再
開されるとアドレスXを「x+10」に書き換える。こ
のような矛盾が生じないように、従来は、共通データに
アクセスする前に共通データへのアクセス権の獲得を行
い、共通データへのアクセス終了後にアクセス権を解放
するようにしている。この場合、アクセス権は共通デー
タ毎に設けられ、かつ、同時に1つのタスクにのみアク
セス権が与えられるように制御されている。
【0003】以上述べたように、マルチタスクにおける
排他制御においては、共通データにアクセスする前にア
クセス権を獲得し、他のタスクからの共通データへのア
クセスを抑止し、アクセス終了後にアクセス権を解放す
る排他制御、または共通データにアクセスしている間は
処理ユニットで実行中のタスクの切り替えを抑止する制
御が必要である。一般に、排他制御では、対象となるデ
ータを以下の3つの状態で管理している。 リードロック状態:1つ以上のタスクによって読みだし
中であり、他タスクからの書き換えアクセスを抑止する
必要がある状態。 ライトロック状態:1つのタスクによって書き換え中で
あり、他タスクからの読みだしアクセスおよび書き換え
アクセスを抑止する必要がある状態。 アンロック状態 :何れのタスクからも全てのアクセス
が可能である状態。
【0004】
【発明が解決しようとする課題】上記の方式では、タス
クが並列にアクセスする共通データについてアクセス権
の確保を行う必要があるため、以下の欠点が生じる。 (1)各タスクが並列にアクセスする全ての共通データ
へのアクセスの前後にアクセス権の確保/解放を行う処
理を予め組み込む必要があるため複雑になる。 (2)本来、矛盾が発生する確率が少ないにもかかわら
ず、共通データへのアクセスの前後にアクセス権の確保
/解放を行う処理を行う処理が必要となるため、処理ユ
ニットの実効的な処理能力が低下する。 (3)新規に追加した処理によって、従来は並列にアク
セスされなかったデータが複数のタスク間で並列にアク
セスされる共通データになった場合、既存のタスクに当
該データに対するアクセス権の確保/解放を行う処理を
追加する必要がある。
【0005】従来は、上記問題を解決するために、並列
にアクセスしないデータと共通データとを厳密に分けず
に、アクセス権の確保/解放を複数の共通データに対し
て一括して行うことによって、アクセス権の確保/解放
回数を減らす手法が採られていた。しかし、複数の共通
データに対して一括してアクセス権の確保/解放を行う
と、共通データのうちアクセス要求のないデータに対し
てまで不要な排他制御を行うことになり、アクセス権の
確保期間が必要以上に長くなるため、複数のタスクで並
列化が可能な処理の実行が阻害される確率が大きくなる
欠点が生じる。
【0006】また、タスクの切り替えを抑止する制御で
は、共通データへのアクセスを頻繁に行うタスクの実行
が優先される(タスクによっては、開始から終了まで切
り替えが行われなくなる)こととなり、タスクを分割す
ることによって、限られた処理ユニット数でタスクの割
り当てを行い、「より優先度の高いタスクに処理ユニッ
トを使用させる」という自由度が失われるとともに、タ
スクを相互に切り替えて分割処理することで、処理時間
の均一化を図るためのマルチタスク方式の制御が複雑に
なってしまう欠点が生じる。
【0007】さらに、本発明の発明者が先に出願した特
願平4−287245号「マルチプロセッサシステムに
おける排他制御方式」は、複数の処理ユニット間で必要
となる排他制御に関して、上記(1)ないし(3)の欠
点を解消するものであるが、各処理ユニットでの処理
(タスク)の中断は許されず、タスク間での排他制御を
可能とするものではない。本発明の目的は、上記の全て
の欠点を解消した排他制御方式を提供することにある。
【0008】
【課題を解決するための手段】本発明は、上記欠点を解
消するために、タスクが最初にアクセスしてから処理が
終了するまでにアクセスするデータを含むブロックを処
理ユニット内のキャッシュメモリで中間状態として管理
するとともに、当該ブロックに対するアクセス元のタス
クの識別情報を管理し、他のタスクが中間状態としたブ
ロックに対する抑止が必要なアクセスが発生した場合、
実行中のタスクまたは当該ブロックをロックしたタスク
を中断または無効化(中止)することによって排他制御
を行うものである。
【0009】
【作用】本発明は、上記の手段を設けたことによって、
タスクが分割して実行される場合、各タスクが並列にア
クセスする共通データのアクセス権の確保/解放の処理
を行うための処理量の増加による処理ユニットでの実効
的な処理性能の低下が生じることなく、また、新たにタ
スクを追加することによって共通データとなったデータ
に対する排他制御を行うために従来の処理を変更するこ
ともなく、タスクの切り替えを抑止する制御も不要にな
る。
【0010】
【実施例】図1は本発明の実施例を説明するための情報
処理装置の構成図である。図1において、1ないし3は
処理ユニット、4はシステムバス、5はメインメモリ、
6はバスマスタコントローラ、10、20および30は
プロセッサ、11、21および31はキャッシュメモ
リ、41はアドレスバス、42はデータバス、43はリ
ード/ライトバス、44はアクセス種別バス、45は転
送応答バス、46は矛盾応答バス、100、200およ
び300はプロセッサバス、1001、2001および
3001はタスク識別情報バスである。
【0011】タスク識別情報バス1001、2001お
よび3001は複数の信号線からなり、各信号線には、
処理ユニットで並列して実行するタスクが重複しないよ
うに予め割り当てられており、処理ユニットで実行中の
タスクはキャッシュメモリにアクセスする際に割り当て
られている信号線のみに値「1」を出力し、他の信号線
には値「0」を出力するものである。
【0012】メインメモリ5は同じ大きさに分割され、
キャッシュメモリ11、21および31との間ではブロ
ック単位にメモリ内容の転送を行う。キャッシュメモリ
11、21および31は、図2に示すように複数のエン
トリ#1、エントリ#2、・・・、エントリ#eから構
成されている。図2にはエントリ#1の内部構成だけを
詳細に示してあるが、他のエントリ#2、・・・、#e
も全て同一の構成を有している。エントリ#1、・・
・、エントリ#e(内部の詳細な構成は省略)は、ブロ
ックのアドレスを格納するアドレス情報部211、・・
・、2e1(図示せず)、ブロックを格納するブロック
データ部212、・・・、2e2(図示せず)、各処理
ユニットのタスク識別バス1001、2001、300
1の信号線と同一のビット数からなり、アクセスを行っ
たタスクが値「1」を出力した信号線に対応するビット
に値「1」を設定するタスク識別情報部213、・・
・、2e3(図示せず)、処理ユニットで実行が終了
(確定指示を出力)していないタスクがアクセスしたこ
とを示す中間状態(値「1」)を格納する中間状態情報
部214、・・・、2e4(図示せず)、エントリに格
納されている内容が有効(値「1」)であるか無効(値
「0」)であるかを示すバリッド部215、・・・、2
e5(図示せず)、メインメモリ5の内容は書き換えず
にキャッシュメモリのブロックデータ部の内容のみを書
き換えたことを示す(値「1」)モディファイ部21
6、・・・、2e6(図示せず)、各アドレス情報部の
内容と信号線2Aの内容とを比較する比較器217、・
・・、2e7(図示せず)、各タスク識別情報部の内容
と信号線2Bの内容を比較する比較器218、・・・、
2e8(図示せず)、比較器217、・・・、2e7
(図示せず)から一致信号が出力し、かつバリッド部の
内容が「1(有効)」である場合に信号線21B、・・
・、2eB(図示せず)に「オン」信号を出力するアン
ドゲート219、・・・、2e9(図示せず)から構成
される。なお、タスク識別情報部、中間状態情報部、バ
リッド部、モディファイ部はブロックの状態を表してお
り、これらをもとめてブロック状態情報部という。
【0013】確定指示信号2Eから確定が指示される
と、アンドゲート21E、・・・、2eE(図示せず)
はタスク識別情報部の内容と確定指示を行ったタスクの
タスク識別情報との比較結果およびモディファイ部の内
容を入力し、そのアンド出力により中間状態部の値を
「0」とする。無効化指示信号2Dを介して無効化が指
示されると、アンドゲート21D、・・・、2eD(図
示せず)はタスク識別情報部の内容と無効化を行ったタ
スクのタスク識別情報との比較結果信号、中間状態部の
内容およびモディファイ部の内容を入力し、そのアンド
出力によりバリッド部を「0(無効)」とする。
【0014】ここで、メインメモリ5のアドレスaで指
定されるデータを含むブロックをBaとし、プロセッサ
10がブロックBaをアクセスする場合の本発明の実施
例の動作を図3ないし図5を用いて説明する。図3ない
し図5は、自プロセッサからアクセスされた場合のキャ
ッシュメモリでの処理を、プロセッサ10からアクセス
された場合のキャッシュメモリ11の処理を例にして説
明するフローチャートであり、この処理の各部分は論理
回路を用いることによって同時並列的に実行することが
できる。
【0015】図3において、プロセッサ10が、プロセ
ッサバス100を介して、アドレスaで指定されるデー
タの読みだしまたは書き換えを要求する場合(ステップ
51)、タスク識別情報バス1001にはプロセッサ1
0で実行中のタスクに予め割り当てられたタスク識別情
報を出力する。処理ユニット1のキャッシュメモリ11
は、プロセッサ10が出力したアドレス情報aを信号線
2Aに、タスク識別情報を信号線2Bに入力し(ステッ
プ52)、ステップ53において、キャッシュメモリ1
1にプロセッサ10が出力したアドレス情報aで指定さ
れるデータを含むブロックBaが存在(信号線21B、
・・・、2eB(図示せず)の出力が「オン」となるエ
ントリが存在)するか否かを判定する。キャッシュメモ
リ11にブロックBaが存在しないときには下記(イ)
の処理を、キャッシュメモリ11にブロックBaが存在
するときには下記(ロ)の処理を行う。
【0016】(イ)キャッシュメモリ11にブロックB
aが存在しない(信号線21B、・・・、2eB(図示せ
ず)の出力が「オン」となるエントリが存在しない)場
合:キャッシュメモリ11はブロックBaを格納するエ
ントリを以下の方法で確保する。キャッシュメモリ11
はバリッド部が「0(無効)」または中間状態部21
4、・・・、2e4(図示せず)が「0(確定状態)」
であるエントリから予め定められた手続き(例えば、最
近最も使用されなかったものを選択するLRUアルゴリ
ズムなど)によってエントリ(このエントリをエントリ
Eと記述し、エントリEはアドレス情報部2x1、ブロ
ックデータ部2x2、タスク識別情報部2x3、中間状
態情報部2x4、バリッド部2x5、モディファイ部2
x6、・・・で構成されているとする)を選択する(ス
テップ54)。
【0017】つぎのステップ55で、エントリEのバリ
ッド部2x5が「1(有効)」かつモディファイ部2x
6が「1(ブロックデータ部のBaとメインメモリのB
aが不一致)」であるか否かをチェックする。チェック
の結果、YES、すなわちエントリEのバリッド部2x
5が「1(有効)」かつモディファイ部2x6が「1
(ブロックデータ部のBaとメインメモリのBaが不一
致)」であれば、キャッシュメモリ11は信号線101
を介してシステムバス4の使用要求をバスマスタコント
ローラ6に知らせる。バスマスタコントローラ6は、予
め定められた手続きにしたがって1つのキャッシュメモ
リにのみシステムバス4の使用許可を与える。信号線1
02を介してシステムバス4の使用許可がキャッシュメ
モリ11に与えられたとき、アドレスバス41上にアド
レス情報部2x1に格納されているアドレスを出力し、
リード/ライトバス43に書き換え指示を出力し、デー
タバス42にブロックデータ部2x2に格納されている
ブロックを出力する。メインメモリ5はアドレスバス4
1に出力されているアドレスで指定されるブロックの内
容をデータバス42に出力されている内容に書き換える
(以上ステップ56)。
【0018】ステップ55のチェックの結果、NO、す
なわちエントリEのバリッド部2x5が「1(有効)」
かつモディファイ部2x6が「1(ブロックデータ部の
BaとメインメモリのBaが不一致)」でなかった場
合、または、上記ステップ56の処理を終了した場合
に、キャッシュメモリ11はブロックBaをエントリE
に以下の方法で格納する。キャッシュメモリ11は信号
線101を介してシステムバス4の使用要求をバスマス
タコントローラ6に知らせる。バスマスタコントローラ
6は、予め定められた手続きにしたがって1つのキャッ
シュメモリにのみシステムバス4の使用許可を与える。
信号線102を介してシステムバス4の使用許可がキャ
ッシュメモリ11に与えられたとき、アドレスバス41
上にアドレスaを出力し、リード/ライトバス43に読
み出し指示を出力し、アクセス種別バス44にプロセッ
サ10が出力したアクセス種別(読みだしまたは書き換
え)を出力する(ステップ57)。
【0019】このときの他のプロセッサのキャッシュメ
モリ21および31の動作は図7に示されている。図7
は他の処理ユニットがシステムバス4に出力したアクセ
スをチェックする処理を説明するための図であり、この
処理の各部分は論理回路を用いることによって同時並列
的に実行することができる。処理ユニットが1台の場合
にはこの処理は不要である。図7において、キャッシュ
メモリ21および31は、アドレスバス41に出力され
ているアドレスaを入力し(ステップ82)、アドレス
aのデータを含むブロックBaが内部に格納されている
エントリ(このエントリをeとし、エントリeはアドレ
ス情報部2y1、ブロックデータ部2y2、タスク識別
情報部2y3、中間状態情報部2y4、バリッド部2y
5、モディファイ部2y6、・・・で構成されていると
する)が存在し、かつエントリeのバリッド部2y5が
「1」か否かのチェックを行う(ステップ83)。
【0020】ステップ83におけるチェックの結果、N
Oであれば下記(イ−a)の処理を行い、YESであれ
ばステップ84において、エントリeが中間状態情報部
2y4の値が「1(中間状態)」であるか否かチェック
し、その結果、YESであれば下記(イ−b)に、NO
であれば下記(イ−c)の処理を行う。
【0021】(イ−a)キャッシュメモリ21および3
1が有効なブロックBaを内部に格納していない場合:
キャッシュメモリ21、31はなにもせずに終了する。
メインメモリ5はブロックBaをデータバス42に出力
し、転送応答バス45を介してキャッシュメモリ11に
応答を出力したことを通知する(図示せず)。
【0022】(イーb)キャッシュメモリ21または3
1がブロックBaを格納するエントリeが存在し、かつ
ブロックBaを格納するエントリの中間状態情報部2y
4が「1(中間状態)」の場合:ブロックBaを格納す
るエントリのモディファイ部2y6が「1(ブロックデ
ータ部のBaとメインメモリのBaが不一致)」(ステ
ップ85)またはキャッシュメモリ11がアドレス種別
バス44に書き換えを出力していれば(ステップ8
6)、キャッシュメモリ11に矛盾応答バス46を介し
て矛盾が発生したことを通知する(ステップ87)。
【0023】このとき、キャッシュメモリ11は、処理
ユニット2または3のキャッシュメモリから矛盾応答バ
ス46を介して矛盾が発生した旨の通知を受ける(図4
のステップ58)と下記(ハ)に示す矛盾解消処理(ス
テップ64)を行う。メインメモリ5はキャッシュメモ
リ21または31が矛盾応答バス46に矛盾が発生した
旨の信号を出力しなければブロックBaをデータバス4
2に出力し、転送応答バス45を介してキャッシュメモ
リ11に応答を出力したことを通知する(図示せず)。
【0024】(イ−c)キャッシュメモリ21または3
1がブロックBaを格納するエントリeが存在し、かつ
ブロックBaを格納するエントリの中間状態部が「0
(確定状態)」の場合:ブロックBaを格納するエント
リのモディファイ部2y6が「1(ブロックデータ部の
BaとメインメモリのBaが不一致)」であるか否かを
チェックする(図7のステップ88)。ステップ88で
のチェックの結果、YESであればステップ89に進
み、NOであればステップ91に進む。YESの場合
は、ブロックBaの最新の内容はキャッシュメモリ21
または31に存在する(以下キャッシュメモリ21に存
在したと仮定して説明する)ので、キャッシュメモリ2
1はブロックBaをデータバス42に出力し、転送応答
バス45を介してキャッシュメモリ11に応答を出力し
たことを通知し(ステップ89)、モディファイ部を
「0(ブロックデータ部のBaとメインメモリのBaが
一致)」とする(ステップ90)。このとき、メインメ
モリ5はデータバス42にキャッシュメモリ21が出力
したブロックBaをキャッシュメモリ11とともに受信
してメインメモリ5に格納されている内容を最新の内容
に更新する(図示せず)。
【0025】ステップ89およびステップ90の処理が
終了するか、またはステップ88のチェックの結果、N
O、すなわちブロックBaを格納するエントリのモディ
ファイ部が「0(ブロックデータ部のBaとメインメモ
リのBaが一致)であれば、以下の処理を行う。キャッ
シュメモリ11がアクセス種別バス44に「書き換え」
を出力していれば(ステップ91)、ブロックBaを格
納するエントリのバリッド部2y5を「0(無効)」と
して当該エントリの無効化を行って(ステップ92)終
了する。これによって、プロセッサ10からのブロック
Baへのアクセスが書き換えの場合に、書き換え前の内
容が他のキャッシュメモリに存在することがなくなりデ
ータの無矛盾性を保証できる。なお、キャッシュメモリ
11がアクセス種別バス44に「書き換え」を出力して
いなければ(ステップ91)そのまま終了する。
【0026】再び図4に戻って説明する。キャッシュメ
モリ11は、以上のようにして、他の処理ユニットのキ
ャッシュメモリ(21、31)またはメインメモリ5か
ら、ブロック転送応答バス45を介して要求したブロッ
クBaがデータバス42上に出力されたことを知り、デ
ータバス42上に出力されたブロックBaをエントリE
のブロックデータ部2x2に格納し、アドレスaの情報
をアドレス情報部2x1に格納し、エントリEのバリッ
ド部2x5を「1(有効)」、中間状態部2x4を「1
(中間状態)」、タスク識別情報部2x3にタスク識別
バス1001に出力されている値を格納する(ステップ
59)。
【0027】ステップ60において、プロセッサ10か
らのブロックBaに対するアクセス種別が書き換えか読
みだしかを判定する。プロセッサ10からのブロックB
aに対するアクセス種別が書き換えであればエントリE
のモディファイ部2x6を「1(ブロックデータ部のB
aとメインメモリのBaが不一致)」とするとともにプ
ロセッサ10からプロセッサバス100を介して指示さ
れた内容でエントリEのブロックデータ部2x2に格納
されているブロックBaのアドレスaで指定されるデー
タを書き換える(ステップ61)。プロセッサ10から
のブロックBaに対するアクセス種別が読みだしであれ
ばエントリEのブロックデータ部2x2に格納されてい
るブロックBaのアドレスaで指定されるデータをプロ
セッサ10に転送する(ステップ62)。キャッシュメ
モリ11は信号線101を介してシステムバス4の使用
を終了したことをバスマスタコントローラ6に知らせる
(ステップ63)。
【0028】(ロ)ブロックBaを格納する有効なエン
トリEがキャッシュメモリ11に存在する(信号線21
B、・・・、2eB(図示せず)の出力が「オン」とな
るエントリが存在する)場合(図5参照):この場合、
確定状態(ロ−a)と中間状態(ロ−b)とに分けて説
明する(ステップ65)。 (ロ−a)エントリEの中間状態部2x4が「0(確定
状態)」の場合:ステップ66でエントリEのモディフ
ァイ部が「1(ブロックデータ部のBaとメインメモリ
のBaが不一致)」かどうかチェックする。その結果、
NO、すなわちモディファイ部が「0(ブロックデータ
部のBaとメインメモリのBaが一致)」であればエン
トリEの中間状態部を「1(中間状態)」とし(ステッ
プ67)、タスク識別情報部2x3にタスク識別バス1
001に出力されているタスク識別情報を設定し(ステ
ップ68)、キャッシュメモリ11は信号線101を介
してシステムバス4の使用要求をバスマスタコントロー
ラ6に知らせる。
【0029】バスマスタコントローラ6は、予め定めら
れた手続きに従い1つのキャッシュメモリにのみシステ
ムバス4の使用要求を与える。信号線102を介してシ
ステムバス4の使用許可がキャッシュメモリ11に与え
られたとき、アドレスバス41上にアドレスaを出力
し、リード/ライトバス43に読みだし指示を出力し、
アクセス種別バス44にプロセッサ10が出力している
アクセス種別を出力し(図6のステップ76)、矛盾応
答バス46に矛盾が発生した旨の出力が行われなければ
(ステップ77)、キャッシュメモリ11は、自ら、転
送応答バス45に応答を出力した旨の信号を出力し、メ
インメモリ5からのデータ転送を中止させる(ステップ
78;キャッシュメモリ11にブロックBaは既に存在
するので、ブロックをメインメモリ5から読み出す必要
はない)。
【0030】プロセッサ10が出力したアクセス種別が
「読みだし」の場合にはエントリEのモディファイ部2
x6を「0(ブロックデータ部のBaとメインメモリの
Baが一致)」に、エントリEのブロックデータ部2x
2に格納されているブロックBaのアドレスaで指定さ
れるデータをプロセッサ10に転送する(図4のステッ
プ62)。プロセッサ10からのブロックBaに対する
アクセス種別が「書き換え」であれば、エントリEのモ
ディファイ部2x6を「1(ブロックデータ部のBaと
メインメモリのBaが不一致)」とするとともにプロセ
ッサ10からプロセッサバス100を介して指示された
内容でエントリEのブロックデータ部2x2に格納され
ているブロックBaのアドレスaで指定されるデータを
書き換え(ステップ61)、プロセッサバス100を介
してアクセスが完了したことをプロセッサに通知し、信
号線101を介してシステムバス4の使用が終了したこ
とをバスマスタコントローラ6に通知する(ステップ6
3)。
【0031】図5のステップ66のチェックの結果、Y
ES、すなわちエントリEのモディファイ部が「1(ブ
ロックデータ部のBaとメインメモリのBaが不一
致)」であれば、キャッシュメモリ11は信号線101
を介してシステムバス4の使用要求をバスマスタコント
ローラ6に知らせる。バスマスタコントローラ6は、予
め定められた手続きに従い1つのキャッシュメモリにの
みシステムバス4の使用許可を与える。信号線102を
介してシステムバス4の使用許可がキャッシュメモリ1
1に与えられたとき、アドレスバス41上にアドレスa
を出力し、リード/ライトバス43に書き換え指示を出
力し、データバス42にエントリEのブロックデータ部
2x2に格納されているブロックBaを出力して、メイ
ンメモリ5のブロックBaをデータバス42に出力され
ている内容で更新する(ステップ69)。
【0032】エントリEの中間状態部2x4を「1(中
間状態)」に、エントリEのタスク識別情報部2x3に
タスク識別情報バス1001に出力されているタスク識
別情報を設定し、プロセッサ10が出力したアクセス種
別(ステップ70)が「読みだし」の場合にはエントリ
Eのモディファイ部2x6を「0(ブロックデータ部の
BaとメインメモリのBaが一致)」にして(ステップ
71)、エントリEのブロックデータ部2x2に格納さ
れているブロックBaのアドレスaで指定されるデータ
をプロセッサ10に転送(図4のステップ62)して、
ステップ63に進む。プロセッサ10からのブロックB
aに対するアクセス種別(ステップ70)が「書き換
え」であれば、エントリEのモディファイ部2x6を
「1(ブロックデータ部のBaとメインメモリのBaが
不一致)」とするとともにプロセッサ10からプロセッ
サバス100を介して指示された内容でエントリEのブ
ロックデータ部2x2に格納されているブロックBaの
アドレスaで指定されるデータを書き換えて(図4のス
テップ61)、ステップ63に進む。ステップ63でキ
ャッシュメモリ11は、プロセッサバス100を介して
アクセスが完了したことをプロセッサ10に通知し、信
号線101を介してシステムバス4の使用が終了したこ
とをバスマスタコントローラ6に通知する。
【0033】(ロ−b)エントリEの中間状態部2x4
が「1(中間状態)」の場合(図6参照):ステップ7
3でエントリEのタスク識別情報部2x3の値がタスク
識別バス1001に出力されている値と一致(信号線2
xCの出力が「オン」)かどうかチェックする。その結
果、NO、すなわちエントリEのタスク識別情報部2x
3の値がタスク識別バス1001に出力されている値と
不一致(信号線2xCの出力が「オフ」)のとき、プロ
セッサ10からのブロックBaに対するアクセス種別が
「書き換え」(ステップ79)、またはプロセッサ10
からのブロックBaに対するアクセス種別が「読みだ
し」かつエントリEのモディファイ部2x6が「1(ブ
ロックデータ部のBaとメインメモリのBaが不一
致)」であれば(ステップ80)、キャッシュメモリ1
1は下記(ハ)に示す矛盾解消処理を行い、プロセッサ
10で実行中の処理は中断または無効化(中止)され、
実行待ちのタスクから予め定められた方法で選択された
タスクが実行される。
【0034】ステップ73のチェックの結果、YES、
すなわちエントリEのタスク識別情報部2x3の値がタ
スク識別バス1001に出力されている値と一致(信号
線2xCの出力が「オン」)しているとき、プロセッサ
10からのブロックBaに対するアクセス種別が「書き
換え」(ステップ74)、かつエントリEのモディファ
イ部2x6が「0(ブロックデータ部のメインメモリの
Baが一致)」であれば(ステップ75)、キャッシュ
メモリ11は信号線101を介してシステムバス4の使
用要求をバスマスタコントローラ6に知らせる。バスマ
スタコントローラ6は、予め定められた手続きに従い1
つのキャッシュメモリにのみシステムバス4の使用許可
を与える。信号線102を介してシステムバス4の使用
許可がキャッシュメモリ11に与えられたとき、アドレ
スバス41上にアドレスaを出力し、リード/ライトバ
ス43に読みだし指示を出力し、アクセス種別バス44
にプロセッサ10が出力したアクセス種別「書き換え」
を出力する(ステップ76)。
【0035】キャッシュメモリ21および31は、アド
レスバス41に出力されているアドレスaを入力し、ア
ドレスaのデータを含むブロックBaが内部に格納され
ているか否かのチェックを図5に示したフローチャート
に従って行い、ステップ87の状態になった場合に矛盾
応答バス46を介して矛盾が発生した旨の通知を出力す
る。キャッシュメモリ11は、処理ユニット2または3
のキャッシュメモリから矛盾応答バス46を介して矛盾
が発生した旨の通知を受ける(ステップ77)と、下記
(ハ)に示す矛盾解消処理を行う。
【0036】矛盾応答バス46を介して矛盾が発生した
旨の通知がない場合には、キャッシュメモリ11は、自
ら、転送応答バス45に応答を出力した旨の信号を出力
し、メインメモリ5からのデータ転送を中止させ(ステ
ップ78;キャッシュメモリ11にブロックBaは既に
存在するので、ブロックをメインメモリ5から読み出す
必要はない)、図4に戻り、この場合は書き換えである
からステップ60からステップ61に進み、エントリE
のモディファイ部2x6を「1(ブロックデータ部のB
aとメインメモリのBaが不一致)」とし、プロセッサ
10からプロセッサバス100を介して指示された内容
でエントリEのブロックデータ部2x2に格納されてい
るブロックBaのアドレスaで指定されるデータを書き
換え、プロセッサバス100を介してアクセスが完了し
たことをプロセッサ10に通知し、信号線101を介し
てシステムバス4の使用を終了したことをバスマスタコ
ントローラ6に知らせる(ステップ63)。
【0037】エントリEのタスク識別情報部2x3の値
がタスク識別バス1001に出力されている値と不一致
(信号線2xCの出力が「オフ」)のとき、プロセッサ
10からのブロックBaに対するアクセス種別(図6の
ステップ79)が「読みだし」かつエントリEのモディ
ファイ部2x6が「0(ブロックデータ部のBaとメイ
ンメモリのBaが一致)」(ステップ80)であれば、
タスク識別情報部2x3にタスク識別情報部2x3の値
とタスク識別情報バス1001に出力されている値との
論理和を設定し(ステップ81:例えば、タスク識別情
報部2x3に値「01101010」が設定されてお
り、タスク識別バス1001に値「00000100」
が出力されている場合、タスク識別情報部2x3には値
「01101110」が設定される)、読みだしである
から図4のステップ60を通過し、エントリEのブロッ
クデータ部2x2に格納されているブロックBaのアド
レスaで指定されるデータをプロセッサ10に転送し
(ステップ62)、プロセッサバス100を介してアク
セスが完了したことをプロセッサ10に、信号線101
を介してシステムバス4の使用を終了したことをバスマ
スタコントローラ6に知らせる(ステップ63)。
【0038】プロセッサ10からのブロックBaに対す
るアクセス種別が「書き換え」またはエントリEのモデ
ィファイ部2x6が「1(ブロックデータ部のBaとメ
インメモリのBaが不一致)」であれば、キャッシュメ
モリ11は下記(ハ)に示す矛盾解消処理を行い、プロ
セッサ10で実行中の処理は中断または無効化(中止)
され、実行待ちのタスクから予め定められた方法で選択
されたタスクが実行される。
【0039】(ハ)他の処理ユニットから矛盾応答バス
46を介して矛盾が発生した旨の通知を受信した場合ま
たはプロセッサ10からのアクセスに対して矛盾が発生
した場合:キャッシュメモリ11はプロセッサ10で実
行中のタスクを中止し、実行中のタスクが書き換えたメ
インメモリの内容をタスクが実行を開始する以前の状態
にするために、図2の無効化指示信号2Cを「オン」と
し、キャッシュメモリ11の中間状態情報部に値「1
(中間状態)」がセットされ、かつモディファイ情報部
に値「1」がセットされている全てのエントリのバリッ
ド情報部を「0(無効)」とし、その後に図8に示す中
間状態解除処理を行い、キャッシュメモリ2への矛盾し
たアクセスを行ったタスクによって設定された中間状態
を解除する。これによって、プロセッサ10が書き換え
たブロックの内容は中断したタスクの実行を開始した時
点の内容になり、リードロック状態(中間状態であるが
モディファイ部は「0」である状態)も解除される。キ
ャッシュメモリ11はプロセッサ10で実行中のタスク
を中止させるとともに、プロセッサバス100を介して
矛盾が発生したことをプロセッサ10に通知する。プロ
セッサ10で実行中のタスクは無効化(中止)され、実
行待ちのタスクから予め定められた方法で選択されたタ
スクが実行される。上記では、矛盾発生時にアクセス元
で実行中のタスクを中止する方法について述べたが、実
行中のタスクを中断し、予め定められた時間が経過した
後に中断点から再開させる方法もある。
【0040】キャッシュメモリ11からの全てのアクセ
スに対して他の処理ユニットが矛盾の発生を通知するこ
となく、プロセッサ10からの全てのアクセスに対して
矛盾が発生せず、プロセッサ10で実行中の処理が正常
に終了したとき、プロセッサ10からの指示によって、
図2の確定指示信号2Dを「オン」とし、キャッシュメ
モリ11の中間状態情報部に値「1(中間状態)」がセ
ットされ、かつモディファイ情報部に値「1」がセット
されている全てのエントリの中間状態情報部を「0(確
定状態)」とし、その後に以下(ニ)に示す中間状態解
除処理を行い、キャッシュメモリ2の処理が終了したタ
スクによって設定された中間状態を解除する。これによ
って、プロセッサ10で実行したタスクの書き換えが確
定し、プロセッサ10で実行したタスクがアクセスした
全てのブロックは他のプロセッサで実行される処理から
読みだしおよび書き換えが可能になる。
【0041】(ニ)中間状態解除処理 プロセッサ10の指示またはプロセッサ10からの矛盾
したアクセスが行われた場合、キャッシュメモリ11
は、中間状態を解除するタスクのタスク識別情報(この
情報は、タスク識別情報バス1001を介して与えられ
るとする)を用いて以下の処理を行う。キャッシュメモ
リ11は図8に示すロック解除の処理を行う。ここで、
図8は処理ユニットからの中間状態解除指示に対するキ
ャッシュメモリでの処理を説明するための図であり、論
理回路を用いることによって、この処理の各部分を同時
並列的に実行することができる。キャッシュメモリ11
内にエントリを順次指定するためのカウンタ25を設
け、タスク識別情報を信号線2Bに入力する。カウンタ
25の値を初期値(ここでは「1」とする)に設定し
(ステップ93)、カウンタ値がキャッシュメモリ2内
のエントリの総数eになるまで(これはステップ99で
判断する)、カウンタ25の値が+1される毎に以下の
処理を繰り返す。ここで、カウンタ25の値「c]で指
定されるエントリをエントリEcとし、エントリEcは
アドレス情報部2c1、ブロックデータ部2c2、タス
ク識別情報部2c3、・・・で構成されているとする。
【0042】エントリEcのバリッド部2c5の値が
「0(無効)」(ステップ94)または中間状態情報部
2c4の値が「0(確定状態)」(ステップ95)の場
合、カウンタ25の値を+1する(ステップ100)。
エントリEcのバリッド部2c5の値が「1(有効)」
(ステップ94)かつ中間状態情報部2c4の値が「1
(中間状態)」(ステップ95)の場合、タスク識別情
報部2x3にタスク識別情報部2x3の値と中間状態を
解除するタスク識別情報の0/1を反転した値との論理
積(例えば、タスク識別情報部2x3に値「01101
110」が設定されており、中間状態情報を解除するタ
スク識別情報が「00000100」である場合、タス
ク識別情報部2x3には値「01101010」が設定
される。この中に1のビットがあるということは、中間
状態を解除しないタスクがあることを意味する)を設定
し(ステップ96)、その結果、タスク識別情報部2x
3の全てのビットが「0」(すなわち、「000000
00」)となったときには中間状態情報部2x4に値
「0(確定状態)」を設定し(ステップ98)、カウン
タ25の値を+1する(ステップ99)。ステップ99
において、カウンタ25の値がエントリ数eになってい
なければステップ94に戻り、エントリ数eになった
ら、中間状態解除処理を終了する。
【0043】これにより、処理ユニットで分割して実行
される複数のタスクおよび各処理ユニットが並列にアク
セスするブロックに対するアクセス権の確保/解放の処
理を各プロセッサで実行する処理に予め組み込む必要が
なく、処理ユニットで分割して実行される複数のタスク
および複数のプロセッサが同一のブロックに対して並列
にアクセスする際の無矛盾性を保証する排他制御が行わ
れる。
【0044】
【本発明の効果】以上説明したように、本発明は、各処
理ユニットで分割して実行されるタスクが並列にアクセ
スする共通データへのアクセスを行う際にアクセス権の
確保/解放の処理を各処理ユニットで実行する処理に予
め組み込むことが不要になり、アクセス権の確保および
解放による処理ユニットのオーバヘッドも生じず、新た
に処理を追加することによって共通データとなったデー
タに対する排他制御を行うために従来の処理を変更する
必要も不要になるため、処理ユニットでの実効的な性能
を向上させるとともに、処理ユニットで実行させる処理
の記述(プログラム)の生産性も大幅に向上させること
が可能になる。
【図面の簡単な説明】
【図1】本発明の一実施例を示すブロック図である。
【図2】本発明のキャッシュメモリのエントリの構成図
を説明するための図である。
【図3】本発明のプロセッサからのアクセスに対するキ
ャッシュメモリの動作を説明するためのフローチャート
(その1)である。
【図4】本発明のプロセッサからのアクセスに対するキ
ャッシュメモリの動作を説明するためのフローチャート
(その2)である。
【図5】本発明のプロセッサからのアクセスに対するキ
ャッシュメモリの動作を説明するためのフローチャート
(その3)である。
【図6】本発明のプロセッサからのアクセスに対するキ
ャッシュメモリの動作を説明するためのフローチャート
(その4)である。
【図7】本発明の他の処理ユニットによるアクセスをチ
ェックするためのフローチャートである。
【図8】本発明の中間状態を解除する処理を説明するた
めのフローチャートである。
【符号の説明】
1、2および3 処理ユニット 4 システムバス 5 メインメモリ 6 バスマスタコントローラ 10、20および30 プロセッサ 11、21および31 キャッシュメモリ 41 アドレスバス 42 データバス 43 リード/ライトバス 44 アクセス種別バス 45 転送応答バス 46 矛盾応答バス 100、200および300 プロセッサバス 101、102、201、202、301および302
信号線 1001、2001および3001 タスク識別情報バ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 1台以上の処理ユニット、メインメモリ
    およびシステムバスからなり、上記処理ユニットおよび
    上記メインメモリは上記システムバスで相互に接続され
    て構成される情報処理装置において、上記メインメモリ
    のアドレス空間は複数のブロックに分割され、上記処理
    ユニットはプロセッサおよびキャッシュメモリからな
    り、上記キャッシュメモリはそれぞれがブロックデータ
    部およびブロック状態情報部からなる複数のエントリか
    らなり、上記プロセッサは、ブロックにアクセスする際
    に、プロセッサで実行中の処理(タスク)を識別する情
    報であるタスク識別情報を出力する手段を有し、上記キ
    ャッシュメモリはプロセッサからのブロックへのアクセ
    スに対して、当該ブロックをブロックデータ部に格納す
    るエントリのブロック状態情報部に中間状態であること
    を示す情報、プロセッサからのアクセスに応じた状態お
    よびタスク識別情報を設定する手段を有し、プロセッサ
    からの指示によってエントリのブロック状態情報部に格
    納されている中間状態を解除する手段を有し、プロセッ
    サがブロックへアクセスを行ったとき、当該アドレスで
    指定されるブロックが格納されているエントリのブロッ
    ク状態情報部に中間状態であることを示す情報が設定さ
    れており、さらに、当該エントリのブロック状態情報部
    に設定されている状態およびタスク識別情報とプロセッ
    サが出力したアクセス種別およびタスク識別情報とが予
    め定められた組み合わせの場合、アクセスを行ったプロ
    セッサに対して中間状態のブロックに対してアクセスを
    行った旨を通知することを特徴とする処理の中断が可能
    な排他制御方式。
JP05527893A 1993-03-16 1993-03-16 処理の中断が可能な排他制御方式 Expired - Fee Related JP3381080B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP05527893A JP3381080B2 (ja) 1993-03-16 1993-03-16 処理の中断が可能な排他制御方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP05527893A JP3381080B2 (ja) 1993-03-16 1993-03-16 処理の中断が可能な排他制御方式

Publications (2)

Publication Number Publication Date
JPH06266610A true JPH06266610A (ja) 1994-09-22
JP3381080B2 JP3381080B2 (ja) 2003-02-24

Family

ID=12994131

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05527893A Expired - Fee Related JP3381080B2 (ja) 1993-03-16 1993-03-16 処理の中断が可能な排他制御方式

Country Status (1)

Country Link
JP (1) JP3381080B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009064462A (ja) * 2008-10-27 2009-03-26 Toshiba Corp マイクロプロセッサ
US7673155B2 (en) 2001-09-28 2010-03-02 Kabushiki Kaisha Toshiba Microprocessor with improved task management and table management mechanism

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673155B2 (en) 2001-09-28 2010-03-02 Kabushiki Kaisha Toshiba Microprocessor with improved task management and table management mechanism
JP2009064462A (ja) * 2008-10-27 2009-03-26 Toshiba Corp マイクロプロセッサ
JP4643702B2 (ja) * 2008-10-27 2011-03-02 株式会社東芝 マイクロプロセッサ

Also Published As

Publication number Publication date
JP3381080B2 (ja) 2003-02-24

Similar Documents

Publication Publication Date Title
US6122712A (en) Cache coherency controller of cache memory for maintaining data anti-dependence when threads are executed in parallel
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
US6708256B2 (en) Memory-to-memory copy and compare/exchange instructions to support non-blocking synchronization schemes
US5761734A (en) Token-based serialisation of instructions in a multiprocessor system
US4665484A (en) Shared memory multiprocessing system & method
JPH01303527A (ja) 共有資源の管理方法
JPH03196249A (ja) 多重プロセッサシステム
CA2182841C (en) Multi-processor system and method for synchronizing among processors
JPH03118649A (ja) メモリーサブシステム入力キュー
JP2708943B2 (ja) キャッシュメモリ制御装置
JP3550092B2 (ja) キャッシュ装置及び制御方法
JPH0567976B2 (ja)
JP2829115B2 (ja) ファイル共用方法
JP3381086B2 (ja) 排他制御可能なマルチプロセッサシステム
JP3381079B2 (ja) キャッシュメモリを用いた排他制御システム
JPH06266610A (ja) 処理の中断が可能な排他制御方式
JPH06139206A (ja) マルチプロセッサシステムにおける排他制御方式
JPH0944402A (ja) キャッシュメモリの記憶一致制御装置及び方法
JPS6153747B2 (ja)
JP2504323B2 (ja) システムバス制御方法
JPH03164964A (ja) 情報処理装置における排他制御処理装置
JPH04140860A (ja) マルチプロセッサにおけるバス制御方法
JPH0635866A (ja) マルチプロセッサシステム
CN116685958A (zh) 一种访问数据的方法和装置
JPH06175981A (ja) キャッシュメモリを用いた排他制御方法および排他制御システム

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees