JP2001014176A - 排他制御値装置及び方法 - Google Patents
排他制御値装置及び方法Info
- Publication number
- JP2001014176A JP2001014176A JP11188479A JP18847999A JP2001014176A JP 2001014176 A JP2001014176 A JP 2001014176A JP 11188479 A JP11188479 A JP 11188479A JP 18847999 A JP18847999 A JP 18847999A JP 2001014176 A JP2001014176 A JP 2001014176A
- Authority
- JP
- Japan
- Prior art keywords
- read
- register
- data
- index
- transaction
- 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
Abstract
(57)【要約】
【課題】プロセッサ側に排他制御の手段を具備すること
を不要とし共通の排他制御機能をもたない複数の装置や
ソフトウェア間でも排他制御を可能とする装置の提供。 【解決手段】内部レジスタと、ソフトウエアビジブルな
インデックスレジスタと、データレジスタと、データリ
ード用バッファとデータライト用バッファと、インデッ
クスレジスタの読出度に値が1加算されるトランザクシ
ョンカウンタと、リード/ライト制御回路とを備え、前
記インデックスレジスタを読出しトランザクション番号
を読出し、トランザクション番号と前記内部レジスタの
インデックス番号、および読出/書込の指定情報を加え
た内容をインデックスレジスタに書き込み、データアク
セス後、前記トランザクションカウンタの値を読出し、
最初のトランザクション番号より1つ大きい値であるこ
とが確認された場合、読み出し処理を終了し、そうでな
い場合、前記読み出したデータを無効とする。
を不要とし共通の排他制御機能をもたない複数の装置や
ソフトウェア間でも排他制御を可能とする装置の提供。 【解決手段】内部レジスタと、ソフトウエアビジブルな
インデックスレジスタと、データレジスタと、データリ
ード用バッファとデータライト用バッファと、インデッ
クスレジスタの読出度に値が1加算されるトランザクシ
ョンカウンタと、リード/ライト制御回路とを備え、前
記インデックスレジスタを読出しトランザクション番号
を読出し、トランザクション番号と前記内部レジスタの
インデックス番号、および読出/書込の指定情報を加え
た内容をインデックスレジスタに書き込み、データアク
セス後、前記トランザクションカウンタの値を読出し、
最初のトランザクション番号より1つ大きい値であるこ
とが確認された場合、読み出し処理を終了し、そうでな
い場合、前記読み出したデータを無効とする。
Description
【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理装置の排
他制御装置及び方法に関する。
他制御装置及び方法に関する。
【0002】
【従来の技術】複数のプロセス(タスク)、あるいはプ
ロセッサ装置間等で一つの資源を競合してアクセスする
場合、一時には一つのプロセス又は一つの装置が該資源
をアクセスすることを保証するために、従来より、例え
ばセマフォ等排他制御機機構が実装されている。プロセ
ッサで実行される命令の発行により、インデックスレジ
スタを用いた間接アドレスにより、バスに接続される装
置の内部レジスタ等のアクセスを行う場合、アクセスを
行う側の装置やソフトウェア(プロセス)が複数存在す
る場合には、複数の装置、プロセス間でアクセス権取得
を調整するため、これらの装置、プロセス間で、排他制
御を行う機構を実装することが必要とされる。
ロセッサ装置間等で一つの資源を競合してアクセスする
場合、一時には一つのプロセス又は一つの装置が該資源
をアクセスすることを保証するために、従来より、例え
ばセマフォ等排他制御機機構が実装されている。プロセ
ッサで実行される命令の発行により、インデックスレジ
スタを用いた間接アドレスにより、バスに接続される装
置の内部レジスタ等のアクセスを行う場合、アクセスを
行う側の装置やソフトウェア(プロセス)が複数存在す
る場合には、複数の装置、プロセス間でアクセス権取得
を調整するため、これらの装置、プロセス間で、排他制
御を行う機構を実装することが必要とされる。
【0003】そして、排他制御は、従来より、プロセッ
サ、バス、メモリシステム、あるいは、OS(オペレー
ティングシステム)等のソフトウェアに具備されている
排他占有機能が利用されている。
サ、バス、メモリシステム、あるいは、OS(オペレー
ティングシステム)等のソフトウェアに具備されている
排他占有機能が利用されている。
【0004】
【発明が解決しようとする課題】しかしながら、この従
来の方法では、排他制御を行う装置間で、共通のアクセ
ス権取得のための機構、手順が必要とされる。
来の方法では、排他制御を行う装置間で、共通のアクセ
ス権取得のための機構、手順が必要とされる。
【0005】また、優先順位や割り込み等の関係で、低
優先のソフトウェアがアクセス権を取得した状態でアク
セス権を解放せず、高優先のソフトウェアに移行した場
合、高優先のソフトウェアはアクセス権を取得出来ず
に、デッドロック状態となるという問題もある。
優先のソフトウェアがアクセス権を取得した状態でアク
セス権を解放せず、高優先のソフトウェアに移行した場
合、高優先のソフトウェアはアクセス権を取得出来ず
に、デッドロック状態となるという問題もある。
【0006】したがって、本発明は、上記問題点に鑑み
てなされたものであって、その目的は、プロセッサ側に
排他制御の手段を具備することを不要とし、共通の排他
制御機能をもたない複数の装置やソフトウェア間でも、
排他制御を行うことが出来るという装置及び方法を提供
することにある。
てなされたものであって、その目的は、プロセッサ側に
排他制御の手段を具備することを不要とし、共通の排他
制御機能をもたない複数の装置やソフトウェア間でも、
排他制御を行うことが出来るという装置及び方法を提供
することにある。
【0007】また、本発明は、アクセスを行なう側の優
先度の異なる装置、プロセス間でデッドロックとならず
排他制御を行うことができる装置及び方法を提供するこ
とにある。
先度の異なる装置、プロセス間でデッドロックとならず
排他制御を行うことができる装置及び方法を提供するこ
とにある。
【0008】
【課題を解決するための手段】前記目的を達成する本発
明は、ソフトウェア命令により所定のレジスタを介して
アクセスが行われる装置の排他制御方法において、前記
所定のレジスタの読み出しが行われる度にトランザクシ
ョン番号をインクリメントするトランザクションカウン
タにて前記装置へのアクセスを管理し、前記装置をアク
セスする側では、前記装置へのアクセス前後で、前記ト
ランザクションカウンタの値であるトランザクション番
号を読み出し、前記トランザクション番号が連番でない
場合には、前記装置へのアクセス中に他からの前記装置
へのアクセスが行われたものと判断し、前記トランザク
ション番号が連番でないアクセスを無効とする、ことを
特徴とする。
明は、ソフトウェア命令により所定のレジスタを介して
アクセスが行われる装置の排他制御方法において、前記
所定のレジスタの読み出しが行われる度にトランザクシ
ョン番号をインクリメントするトランザクションカウン
タにて前記装置へのアクセスを管理し、前記装置をアク
セスする側では、前記装置へのアクセス前後で、前記ト
ランザクションカウンタの値であるトランザクション番
号を読み出し、前記トランザクション番号が連番でない
場合には、前記装置へのアクセス中に他からの前記装置
へのアクセスが行われたものと判断し、前記トランザク
ション番号が連番でないアクセスを無効とする、ことを
特徴とする。
【0009】
【発明の実施の形態】本発明の実施の形態について説明
する。本発明のは、ソフトウェア命令により所定のレジ
スタを介して内部レジスタのアクセスが行われる装置の
排他制御において、ソフトウェア命令で前記所定のレジ
スタの読み出しが行われる度にトランザクション番号を
インクリメントするトランザクションカウンタを備え、
前記装置をアクセスする側では、前記装置へのアクセス
前後で、前記トランザクションカウンタの値であるトラ
ンザクション番号を読み出し、前記トランザクション番
号が連番でない場合には、前記アクセス中に他からの前
記装置へのアクセスが行われたものと判断し、前記トラ
ンザクション番号が連番でないアクセスを無効とする、
ことを特徴とする。
する。本発明のは、ソフトウェア命令により所定のレジ
スタを介して内部レジスタのアクセスが行われる装置の
排他制御において、ソフトウェア命令で前記所定のレジ
スタの読み出しが行われる度にトランザクション番号を
インクリメントするトランザクションカウンタを備え、
前記装置をアクセスする側では、前記装置へのアクセス
前後で、前記トランザクションカウンタの値であるトラ
ンザクション番号を読み出し、前記トランザクション番
号が連番でない場合には、前記アクセス中に他からの前
記装置へのアクセスが行われたものと判断し、前記トラ
ンザクション番号が連番でないアクセスを無効とする、
ことを特徴とする。
【0010】本発明は、その好ましい一実施の形態にお
いて内部レジスタ(8)と、ソフトウェア命令でアクセ
スされ前記内部レジスタを指定するインデックスレジス
タ(2)と、ソフトウェア命令でアクセスされるデータ
レジスタ(3)と、ソフトウェア命令で前記データレジ
スタのリード/ライトが行われた際にそれぞれデータの
リード/ライトが行われるデータリード用バッファ
(7)とデータライト用バッファ(6)と、前記インデ
ックスレジスタ(2)が読み出される度にトランザクシ
ョン番号をなす値がインクリメントされるカウンタであ
り、ソフトウェア側からはインクリメントされた値が見
えるトランザクションカウンタ(5)と、リード/ライ
ト制御回路(9)と、データライト用バッファ(6)の
内容の有効であることを意味するライトバッファ有効フ
ラグ(11)と、を備える。
いて内部レジスタ(8)と、ソフトウェア命令でアクセ
スされ前記内部レジスタを指定するインデックスレジス
タ(2)と、ソフトウェア命令でアクセスされるデータ
レジスタ(3)と、ソフトウェア命令で前記データレジ
スタのリード/ライトが行われた際にそれぞれデータの
リード/ライトが行われるデータリード用バッファ
(7)とデータライト用バッファ(6)と、前記インデ
ックスレジスタ(2)が読み出される度にトランザクシ
ョン番号をなす値がインクリメントされるカウンタであ
り、ソフトウェア側からはインクリメントされた値が見
えるトランザクションカウンタ(5)と、リード/ライ
ト制御回路(9)と、データライト用バッファ(6)の
内容の有効であることを意味するライトバッファ有効フ
ラグ(11)と、を備える。
【0011】内部レジスタ(8)からのデータの読み出
し時には以下の処理が行われる。
し時には以下の処理が行われる。
【0012】ステップS1:ソフトウェア命令により前
記インデックスレジスタを読み出すことで前記トランザ
クションカウンタのトランザクション番号を読み出す。
記インデックスレジスタを読み出すことで前記トランザ
クションカウンタのトランザクション番号を読み出す。
【0013】ステップS2:前記読み出したトランザク
ション番号と、アクセス対象の前記内部レジスタのイン
デックス番号、および読み出しの指定情報を加えた内容
のインデックスレジスタのフォーマットのデータ構造を
作成して前記インデックスレジスタに書き込む。
ション番号と、アクセス対象の前記内部レジスタのイン
デックス番号、および読み出しの指定情報を加えた内容
のインデックスレジスタのフォーマットのデータ構造を
作成して前記インデックスレジスタに書き込む。
【0014】ステップS3:前記トランザクションカウ
ンタと、前記インデックスレジスタのトランザクション
番号が一致している場合に、リード/ライト制御回路
(9)から、リードストローブ信号が出力され、前記イ
ンデックスレジスタのインデックス値で指定された内部
レジスタのデータがデータリード用バッファに転送さ
れ、前記データレジスタから前記データが読み出す。
ンタと、前記インデックスレジスタのトランザクション
番号が一致している場合に、リード/ライト制御回路
(9)から、リードストローブ信号が出力され、前記イ
ンデックスレジスタのインデックス値で指定された内部
レジスタのデータがデータリード用バッファに転送さ
れ、前記データレジスタから前記データが読み出す。
【0015】ステップS4:ソフトウェア命令で前記イ
ンデックスレジスタを読み出すことで、前記トランザク
ションカウンタの値を読み出す。
ンデックスレジスタを読み出すことで、前記トランザク
ションカウンタの値を読み出す。
【0016】ステップS5:前記ステップS4で読み出
したトランザクション番号が前記ステップS1で読み出
したトランザクション番号より1つ大きい値であること
が確認された場合、読み出し処理を終了する。
したトランザクション番号が前記ステップS1で読み出
したトランザクション番号より1つ大きい値であること
が確認された場合、読み出し処理を終了する。
【0017】ステップS6:前記ステップS4で読み出
したトランザクション番号が前記ステップS1で読み出
したトランザクション番号より1つ大きい値でない場
合、前記読み出したデータを無効とし、ランダムな時間
待ち合わせを行った後、再度前記ステップaに戻り読み
出し処理を行う。
したトランザクション番号が前記ステップS1で読み出
したトランザクション番号より1つ大きい値でない場
合、前記読み出したデータを無効とし、ランダムな時間
待ち合わせを行った後、再度前記ステップaに戻り読み
出し処理を行う。
【0018】内部レジスタへのデータの書き込み時には
以下の処理が行われる。
以下の処理が行われる。
【0019】ステップS11:前記インデックスレジス
タ(2)を読み出すことで前記トランザクションカウン
タ(5)のトランザクション番号を読み出す。
タ(2)を読み出すことで前記トランザクションカウン
タ(5)のトランザクション番号を読み出す。
【0020】ステップS12:前記データレジスタ
(3)を介してデータライト用バッファ(6)にデータ
を書き込む。
(3)を介してデータライト用バッファ(6)にデータ
を書き込む。
【0021】ステップS13:前記ステップS11で読
み出したトランザクション番号と、アクセス対象の前記
内部レジスタのインデックス番号、および書き込みの指
定情報を加えた内容のインデックスレジスタのフォーマ
ットのデータ構造を作成して前記インデックスレジスタ
(2)に書き込む。
み出したトランザクション番号と、アクセス対象の前記
内部レジスタのインデックス番号、および書き込みの指
定情報を加えた内容のインデックスレジスタのフォーマ
ットのデータ構造を作成して前記インデックスレジスタ
(2)に書き込む。
【0022】ステップS14:前記トランザクションカ
ウンタと、前記インデックスレジスタのトランザクショ
ン番号が一致しており、ライトバッファ有効フラグ(1
1)が有効を示す場合に、リード/ライト制御回路
(9)から、ライトストローブ信号が出力され、前記イ
ンデックスレジスタのインデックス値で指定された内部
レジスタに前記データライト用バッファから前記データ
を書き込む。
ウンタと、前記インデックスレジスタのトランザクショ
ン番号が一致しており、ライトバッファ有効フラグ(1
1)が有効を示す場合に、リード/ライト制御回路
(9)から、ライトストローブ信号が出力され、前記イ
ンデックスレジスタのインデックス値で指定された内部
レジスタに前記データライト用バッファから前記データ
を書き込む。
【0023】ステップS15:ソフトウェア命令で前記
インデックスレジスタを読み出すことで、前記トランザ
クションカウンタの値を読み出し、ステップS11で読
み出したトランザクション番号よりも1つ大きい値であ
ることが確認された場合、読み出し処理を終了する。
インデックスレジスタを読み出すことで、前記トランザ
クションカウンタの値を読み出し、ステップS11で読
み出したトランザクション番号よりも1つ大きい値であ
ることが確認された場合、読み出し処理を終了する。
【0024】ステップS16:前記ステップS14で読
み出したトランザクション番号が前記ステップS11で
読み出したトランザクション番号より1つ大きい値でな
い場合、前記読み出したデータを無効とし、ランダムな
時間待ち合わせを行った後、再度前記ステップS11に
戻り読み出し処理を行う。
み出したトランザクション番号が前記ステップS11で
読み出したトランザクション番号より1つ大きい値でな
い場合、前記読み出したデータを無効とし、ランダムな
時間待ち合わせを行った後、再度前記ステップS11に
戻り読み出し処理を行う。
【0025】このように、本発明の実施の形態において
は、インデックスレジスタを用いた間接アドレス方式で
内部レジスタのアクセスが行われる装置において、イン
デックスレジスタの設定と、データのリード/ライト
を、アクセスする度に異なるトランザクション番号で関
連付けして、同時に複数の装置からアクセスされた場
合、これを検出してアクセスを無効とすることで、排他
制御を行う。
は、インデックスレジスタを用いた間接アドレス方式で
内部レジスタのアクセスが行われる装置において、イン
デックスレジスタの設定と、データのリード/ライト
を、アクセスする度に異なるトランザクション番号で関
連付けして、同時に複数の装置からアクセスされた場
合、これを検出してアクセスを無効とすることで、排他
制御を行う。
【0026】
【実施例】上気した本発明の実施の形態について更に詳
細に説明すべく、本発明の実施例について図面を参照し
て以下に説明する。図1は、本発明の排他制御回路の一
実施例の構成を示す図である。
細に説明すべく、本発明の実施例について図面を参照し
て以下に説明する。図1は、本発明の排他制御回路の一
実施例の構成を示す図である。
【0027】図1を参照すると、この実施例の排他制御
回路は、ソフトウェアビジブルな(ソフトウェア命令で
アクセスできる)レジスタ2、3と、内部レジスタ8
と、内部レジスタ8をアクセスするための制御回路とを
備えて構成される。
回路は、ソフトウェアビジブルな(ソフトウェア命令で
アクセスできる)レジスタ2、3と、内部レジスタ8
と、内部レジスタ8をアクセスするための制御回路とを
備えて構成される。
【0028】ソフトウェアビジブルなレジスタは、イン
デックスレジスタ2とデータレジスタ3とからなり、バ
ス1を通してソフトウェア(I/O命令等)からアクセ
スされる。これらのソフトウェアビジブルなレジスタ
は、いずれも、ソフトウェア命令からのアクセス対象と
して見える仮想的なレジスタであり、ソフトウェアビジ
ブルなインデックスレジスタ2に対するライトは、実際
には、インデックスレジスタ4に対して行われ、逆に、
インデックスレジスタ2をリードすると、トランザクシ
ョンカウンタ5の値が読み出される。
デックスレジスタ2とデータレジスタ3とからなり、バ
ス1を通してソフトウェア(I/O命令等)からアクセ
スされる。これらのソフトウェアビジブルなレジスタ
は、いずれも、ソフトウェア命令からのアクセス対象と
して見える仮想的なレジスタであり、ソフトウェアビジ
ブルなインデックスレジスタ2に対するライトは、実際
には、インデックスレジスタ4に対して行われ、逆に、
インデックスレジスタ2をリードすると、トランザクシ
ョンカウンタ5の値が読み出される。
【0029】同様に、ソフトウェアビジブルなデータレ
ジスタ3のリード/ライトは、それぞれデータリード用
バッファ7、データライト用バッファ6に対して行われ
る。
ジスタ3のリード/ライトは、それぞれデータリード用
バッファ7、データライト用バッファ6に対して行われ
る。
【0030】内部レジスタ8は、ソフトウェアからの最
終的なアクセス対象となるレジスタの集合であり、デー
タリード用バッファ7、データライト用バッファ6を経
由して、ソフトウェアから、データのリードまたはライ
トが行われる。
終的なアクセス対象となるレジスタの集合であり、デー
タリード用バッファ7、データライト用バッファ6を経
由して、ソフトウェアから、データのリードまたはライ
トが行われる。
【0031】内部レジスタ8のどのレジスタをリード、
ライトするかは、インデックスレジスタ4のインデック
ス番号により指定し、データ転送の契機は、リード/ラ
イト制御回路9からのストローブ信号による。
ライトするかは、インデックスレジスタ4のインデック
ス番号により指定し、データ転送の契機は、リード/ラ
イト制御回路9からのストローブ信号による。
【0032】リード/ライト制御回路9から内部レジス
タ8へのリードストローブ信号は、インデックスレジス
タ4にライトされたタイミングで、インデックスレジス
タ4のトランザクション番号と、トランザクションカウ
ンタ5のカウント値を比較し、一致していれば出力され
る。
タ8へのリードストローブ信号は、インデックスレジス
タ4にライトされたタイミングで、インデックスレジス
タ4のトランザクション番号と、トランザクションカウ
ンタ5のカウント値を比較し、一致していれば出力され
る。
【0033】ライトストローブ信号は、この条件に加
え、ライトバッファ有効フラグ11がセットされている
場合に出力される。
え、ライトバッファ有効フラグ11がセットされている
場合に出力される。
【0034】ライトバッファ有効フラグ11は、データ
ライト用バッファ6の内容が有効であることを意味する
フラグであり、トランザクションカウンタ5がリードさ
れた時にリセットされ、その後、データライト用バッフ
ァ6へのライトが行われた時にセットされる。
ライト用バッファ6の内容が有効であることを意味する
フラグであり、トランザクションカウンタ5がリードさ
れた時にリセットされ、その後、データライト用バッフ
ァ6へのライトが行われた時にセットされる。
【0035】但し、データライト用バッファ6に2回以
上ライトが行われた場合には、ライトバッファ有効フラ
グ6はリセットされる。
上ライトが行われた場合には、ライトバッファ有効フラ
グ6はリセットされる。
【0036】トランザクションカウンタ5は、リードさ
れる度にインクリメントされるカウンタであり、ソフト
ウェア側からは、インクリメントされた値が見える。
れる度にインクリメントされるカウンタであり、ソフト
ウェア側からは、インクリメントされた値が見える。
【0037】図2は、本発明の一実施例の処理を説明す
るための流れ図である。図1及び図2を参照して、内部
レジスタ8のリード動作について説明する。
るための流れ図である。図1及び図2を参照して、内部
レジスタ8のリード動作について説明する。
【0038】まず全てのアクセスに先立ち、ステップS
1で、トランザクションカウンタ5をリードする。前述
したように、インデックスレジスタ2をリードすること
で、トランザクションカウンタ5のカウント値(トラン
ザクション番号)が読み出される。このトランザクショ
ン番号は、内部レジスタ8をアクセスする一連の手続き
を関連付けするための番号である。
1で、トランザクションカウンタ5をリードする。前述
したように、インデックスレジスタ2をリードすること
で、トランザクションカウンタ5のカウント値(トラン
ザクション番号)が読み出される。このトランザクショ
ン番号は、内部レジスタ8をアクセスする一連の手続き
を関連付けするための番号である。
【0039】次に、読み出したトランザクション番号
と、リードしたい内部レジスタのインデックス番号、お
よびR/Wフラグを加えた、インデックスレジスタ4の
フォーマットのデータ構造を作成し、インデックスレジ
スタ4にライトする(ステップS2)。
と、リードしたい内部レジスタのインデックス番号、お
よびR/Wフラグを加えた、インデックスレジスタ4の
フォーマットのデータ構造を作成し、インデックスレジ
スタ4にライトする(ステップS2)。
【0040】この時に、トランザクションカウンタ5
と、インデックスレジスタ4のトランザクション番号は
一致しており、リード/ライト制御回路9から、リード
ストローブ信号が出力される。これにより、インデック
スレジスタ4のインデックス値で指定された内部レジス
タ8の内容が、データリード用バッファ7に転送され
る。
と、インデックスレジスタ4のトランザクション番号は
一致しており、リード/ライト制御回路9から、リード
ストローブ信号が出力される。これにより、インデック
スレジスタ4のインデックス値で指定された内部レジス
タ8の内容が、データリード用バッファ7に転送され
る。
【0041】次に、ステップS3で、データリード用バ
ッファ7をリードすることで、目的とする内部レジスタ
8の内容を得ることが出来る。
ッファ7をリードすることで、目的とする内部レジスタ
8の内容を得ることが出来る。
【0042】最後に、ステップS4で、もう一度トラン
ザクションカウンタ5の値をリードし、最初にリードし
たトランザクション番号よりも1つ大きい値である(差
分=1)ことを確認して終了する。
ザクションカウンタ5の値をリードし、最初にリードし
たトランザクション番号よりも1つ大きい値である(差
分=1)ことを確認して終了する。
【0043】最後に読み出したトランザクション番号
が、最初にリードしたトランザクション番号に1加算し
た値よりも大きい場合には、一連の手続き中に、他の装
置などからアクセスされたことを意味しており、ステッ
プS3でリードした値が正しいか否かは保証されない。
が、最初にリードしたトランザクション番号に1加算し
た値よりも大きい場合には、一連の手続き中に、他の装
置などからアクセスされたことを意味しており、ステッ
プS3でリードした値が正しいか否かは保証されない。
【0044】この場合は、ステップS6で、待ち合わせ
を行った後、再度ステップS1からの手続きを繰り返
す。この待ち合わせ時間は、複数装置間で、繰り返して
競合することのないように、ランダムな時間とする。
を行った後、再度ステップS1からの手続きを繰り返
す。この待ち合わせ時間は、複数装置間で、繰り返して
競合することのないように、ランダムな時間とする。
【0045】次に、レジスタライト動作について説明す
る。レジスタライトの場合は、リードの場合と、ステッ
プS2、ステップS3の順序を逆にして、まず、データ
ライト用バッファ6にデータをライトしてから、インデ
ックスレジスタ4のライトを行う。
る。レジスタライトの場合は、リードの場合と、ステッ
プS2、ステップS3の順序を逆にして、まず、データ
ライト用バッファ6にデータをライトしてから、インデ
ックスレジスタ4のライトを行う。
【0046】インデックスレジスタ4へのライトを契機
として、先にデータライト用バッファ6に設定したデー
タが、内部レジスタ8へライトされる。
として、先にデータライト用バッファ6に設定したデー
タが、内部レジスタ8へライトされる。
【0047】次に、本発明の一実施例において、複数の
装置やソフトウェアからのアクセスが競合した場合に、
どの様に排他制御が行われ、また、アクセスの完全性が
保証されるかについて説明する。
装置やソフトウェアからのアクセスが競合した場合に、
どの様に排他制御が行われ、また、アクセスの完全性が
保証されるかについて説明する。
【0048】本発明の一実施例では、上述した通り、一
連のアクセスの最初と最後に、トランザクションカウン
タ5をプロセッサ等のソフトウェア命令でリードし、こ
れが続き番号であるか否かを判断する。
連のアクセスの最初と最後に、トランザクションカウン
タ5をプロセッサ等のソフトウェア命令でリードし、こ
れが続き番号であるか否かを判断する。
【0049】従って、一連のアクセスの最中に他の装置
やソフトウェアがアクセスを開始した場合、トランザク
ションカウンタ5のリードを行うため、トランザクショ
ンカウンタの値が余分にインクリメントされてしまい、
続き番号ではなくなってしまう。これにより、アクセス
が競合したことを把握でき、リトライする。
やソフトウェアがアクセスを開始した場合、トランザク
ションカウンタ5のリードを行うため、トランザクショ
ンカウンタの値が余分にインクリメントされてしまい、
続き番号ではなくなってしまう。これにより、アクセス
が競合したことを把握でき、リトライする。
【0050】また、レジスタライト時には、データライ
ト用バッファ6へのライト後、インデックスレジスタ4
へのライトを行う前に、他の装置からデータライト用バ
ッファ6への別の値をライトされてしまうことが考えら
れる。
ト用バッファ6へのライト後、インデックスレジスタ4
へのライトを行う前に、他の装置からデータライト用バ
ッファ6への別の値をライトされてしまうことが考えら
れる。
【0051】これを検出し、保証する為に、データライ
ト用バッファ6に2回以上のライトが行われた場合、ラ
イトバッファ有効フラグ11をリセットし、さらにトラ
ンザクションカウンタ5をインクリメントする。これに
より、誤ったアクセスを防止し検出することが出来る。
ト用バッファ6に2回以上のライトが行われた場合、ラ
イトバッファ有効フラグ11をリセットし、さらにトラ
ンザクションカウンタ5をインクリメントする。これに
より、誤ったアクセスを防止し検出することが出来る。
【0052】最後に、割り込みルーチンや、優先度の異
なるプロセス間での排他制御について説明する。
なるプロセス間での排他制御について説明する。
【0053】あるプロセスが一連のアクセス処理中に、
割り込みが発生した場合、その処理は一旦中断される。
しかし、プロセスはアクセス権を占有しているわけでは
ないため、割り込みルーチンの中で、上述した一連の手
続きに従ってアクセスすることも出来る。
割り込みが発生した場合、その処理は一旦中断される。
しかし、プロセスはアクセス権を占有しているわけでは
ないため、割り込みルーチンの中で、上述した一連の手
続きに従ってアクセスすることも出来る。
【0054】割り込みが解除され、もとのプロセスに戻
ってアクセスを継続した場合、割り込み処理の中で、ト
ランザクションカウンタ5の値がインクリメントされて
いるため、このアクセスは、失敗したことを認識し、リ
トライする。
ってアクセスを継続した場合、割り込み処理の中で、ト
ランザクションカウンタ5の値がインクリメントされて
いるため、このアクセスは、失敗したことを認識し、リ
トライする。
【0055】このように、レジスタインデックスによる
間接アドレスで内部レジスタがアクセスされる装置側
に、トランザクションカウンタを用いた排他制御機能を
持たせることで、プロセッサ側に排他制御の手段を不要
としている。
間接アドレスで内部レジスタがアクセスされる装置側
に、トランザクションカウンタを用いた排他制御機能を
持たせることで、プロセッサ側に排他制御の手段を不要
としている。
【0056】これにより、共通の排他制御機能をもたな
い複数の装置やソフトウェア間でも、排他制御を行うこ
とが出来る。
い複数の装置やソフトウェア間でも、排他制御を行うこ
とが出来る。
【0057】また、アクセス権を占有することが無いた
め、優先度の異なるプロセス間や、割り込みルーチンと
の間でも、デッドロックとならず排他制御を行うことが
できる。これは、アクセス権を取得した装置やソフトウ
ェアの障害でアクセス権を放棄出来ず、デッドロック等
が生じるいといった問題に対しても、有効である。
め、優先度の異なるプロセス間や、割り込みルーチンと
の間でも、デッドロックとならず排他制御を行うことが
できる。これは、アクセス権を取得した装置やソフトウ
ェアの障害でアクセス権を放棄出来ず、デッドロック等
が生じるいといった問題に対しても、有効である。
【0058】さらに、これらの機能は通常のリード/ラ
イト機能だけで実現しているため、バスを占有する特殊
なハードウェアも必要が無いという利点も併せ持つ。
イト機能だけで実現しているため、バスを占有する特殊
なハードウェアも必要が無いという利点も併せ持つ。
【0059】
【発明の効果】以上説明したように、本発明によれば、
レジスタインデックスによる間接アドレス方式で内部レ
ジスタをアクセスする装置側に、トランザクションカウ
ンタを用いた排他制御機能を具備することで、プロセッ
サ側に排他制御の手段を具備することを不要とするとと
もに、共通の排他制御機能をもたない複数の装置やソフ
トウェア間でも、排他制御を行うことが出来る、という
効果を奏する。
レジスタインデックスによる間接アドレス方式で内部レ
ジスタをアクセスする装置側に、トランザクションカウ
ンタを用いた排他制御機能を具備することで、プロセッ
サ側に排他制御の手段を具備することを不要とするとと
もに、共通の排他制御機能をもたない複数の装置やソフ
トウェア間でも、排他制御を行うことが出来る、という
効果を奏する。
【0060】また、本発明によれば、アクセス権を占有
することが無いため、優先度の異なるプロセス間や、割
り込みルーチンとの間でも、デッドロックとならず排他
制御を行うことができるという効果を奏する。
することが無いため、優先度の異なるプロセス間や、割
り込みルーチンとの間でも、デッドロックとならず排他
制御を行うことができるという効果を奏する。
【図1】本発明の一実施例の構成を示す図である。
【図2】本発明の一実施例の処理手順を示す流れ図であ
る。
る。
1 バス 2 ソフトウェアビジブルインデックスレジスタ 3 ソフトウェアビジブルデータレジスタ 4 インデックスレジスタ 5 トランザクションカウンタ 6 データライト用バッファ 7 データリード用バッファ 8 内部レジスタ群 9 リード/ライト制御回路 10 比較器
Claims (11)
- 【請求項1】ソフトウェアビジブルなレジスタを介して
アクセスが行われる装置の排他制御方法において、 前記レジスタの読み出しが行われる度にトランザクショ
ン番号をインクリメントするトランザクションカウンタ
にて前記装置へのアクセスを管理し、 前記レジスタを介して前記装置をアクセスする側では、
前記装置へのアクセス前後で、前記トランザクションカ
ウンタの値であるトランザクション番号を読み出し、前
記トランザクション番号が連番でない場合には、前記ア
クセス中に他からの前記装置へのアクセスが行われたも
のと判断し、前記トランザクション番号が連番でないア
クセスを無効とする、ことを特徴とする排他制御方法。 - 【請求項2】内部レジスタと、 ソフトウェア命令でアクセスされ前記内部レジスタを指
定するソフトウェアビジブルなインデックスレジスタ
と、 ソフトウェア命令でアクセスされるソフトウェアビジブ
ルなデータレジスタと、 インデックスレジスタの読み出し度に、値が1つ増加さ
れるトランザクションカウンタと、 リード/ライト制御回路と、を備えた装置の排他制御方
法において、 プロセス又はプロセッサが前記内部レジスタにアクセス
するに際して、まず前記インデックスレジスタを読み出
すことでトランザクション番号を読み出し、前記トラン
ザクション番号と前記内部レジスタのインデックス番
号、および読み出し/書き込みの指定情報を加えた内容
を前記インデックスレジスタに書き込んでデータのアク
セスを行った後、前記インデックスレジスタを読み出す
ことで前記トランザクションカウンタの値を再度読み出
し、読み出したトランザクション番号の値が最初に読み
出したトランザクション番号よりも1つ大きい値である
ことが確認された場合、アクセス処理を終了し、そうで
ない場合には、前記アクセス中の前記内部レジスタへ他
からのアクセスが行われたものと判断し、前記アクセス
結果を無効とする、ことを特徴とする排他制御方法。 - 【請求項3】前記アクセス結果を無効とした場合、ラン
ダムな時間待ち合わせを行った後、再度、前記インデッ
クスレジスタを読み出してトランザクション番号を読み
出し、前記トランザクション番号と前記内部レジスタの
インデックス番号、および読み出し/書き込みの指定情
報を加えた内容を前記インデックスレジスタに書き込ん
でデータのアクセス処理を行う、ことを特徴とする請求
項2記載の排他的制御方法。 - 【請求項4】内部レジスタと、 ソフトウェア命令でアクセスされ前記内部レジスタを指
定するソフトウェアビジブルなインデックスレジスタ
と、 ソフトウェア命令でアクセスされるソフトウェアビジブ
ルなデータレジスタと、 ソフトウェア命令で前記データレジスタのリード/ライ
トが行われた際にそれぞれデータのリード/ライトが行
われるデータリード用バッファとデータライト用バッフ
ァと、 前記インデックスレジスタが読み出される度にトランザ
クション番号をなす値がインクリメントされるカウンタ
であり、ソフトウェア側からはインクリメントされた値
が見えるトランザクションカウンタと、 リード/ライト制御回路と、 を備えた装置の排他制御方法において、 前記内部レジスタからのデータの読み出し時、 (a)ソフトウェア命令により前記インデックスレジス
タを読み出すことで前記トランザクションカウンタのト
ランザクション番号を読み出すステップと、 (b)前記読み出したトランザクション番号と、アクセ
ス対象の前記内部レジスタのインデックス番号、および
読み出しの指定情報を加えた内容のインデックスレジス
タのフォーマットのデータ構造を作成して前記インデッ
クスレジスタに書き込むステップと、 (c)前記トランザクションカウンタの値と、前記イン
デックスレジスタのトランザクション番号が一致してい
る場合に、前記リード/ライト制御回路から、リードス
トローブ信号が出力され、前記インデックスレジスタの
インデックス値で指定された内部レジスタのデータが前
記データリード用バッファに転送され、前記データレジ
スタから前記データを読み出すステップと、 (d)ソフトウェア命令で前記インデックスレジスタを
読み出すことで、前記トランザクションカウンタの値を
読み出すステップと、 (e)前記ステップ(d)で読み出したトランザクショ
ン番号が前記ステップ(a)で読み出したトランザクシ
ョン番号よりも1つ大きい値であることが確認された場
合、読み出し処理を終了し、 (f)前記ステップ(d)で読み出したトランザクショ
ン番号が前記ステップ(a)で読み出したトランザクシ
ョン番号よりも1つ大きい値でない場合、前記読み出し
たデータを無効とし、ランダムな時間待ち合わせを行っ
た後、再度前記ステップ(a)に戻り、再び前記インデ
ックスレジスタの読み出し処理からの処理を行うステッ
プと、 ことを特徴とする排他的制御方法。 - 【請求項5】内部レジスタと、 ソフトウェア命令でアクセスされ前記内部レジスタを指
定するソフトウェアビジブルなインデックスレジスタ
と、 ソフトウェア命令でアクセスされるソフトウェアビジブ
ルなデータレジスタと、 ソフトウェア命令で前記データレジスタのリード/ライ
トが行われた際にそれぞれデータのリード/ライトが行
われるデータリード用バッファとデータライト用バッフ
ァと、 前記インデックスレジスタが読み出される度にトランザ
クション番号をなす値がインクリメントされるカウンタ
であり、ソフトウェア側からはインクリメントされた値
が見えるトランザクションカウンタと、 前記データライト用バッファの内容の有効であることを
意味するライトバッファ有効フラグと、 リード/ライト制御回路と、 を備えた装置の排他制御方法において、 前記内部レジスタへのデータの書き込み時、 (a)前記インデックスレジスタを読み出すことで前記
トランザクションカウンタのトランザクション番号を読
み出すステップと、 (b)前記データレジスタを介して前記データライト用
バッファにデータを書き込むステップと、 (c)前記ステップ(a)で読み出したトランザクショ
ン番号と、アクセス対象の前記内部レジスタのインデッ
クス番号、および書き込みの指定情報を加えた内容のイ
ンデックスレジスタのフォーマットのデータ構造を作成
して前記インデックスレジスタに書き込むステップと、 (d)前記トランザクションカウンタの値と、前記イン
デックスレジスタのトランザクション番号が一致してお
り、前記ライトバッファ有効フラグが有効を示す場合
に、前記リード/ライト制御回路から、ライトストロー
ブ信号が出力され、前記インデックスレジスタのインデ
ックス値で指定された内部レジスタに前記データライト
用バッファから前記データを書き込むステップと、 (e)ソフトウェア命令で前記インデックスレジスタを
読み出すことで、前記トランザクションカウンタの値を
読み出し、最初に読み出したトランザクション番号より
も1つ大きい値であることが確認された場合、読み出し
処理を終了するステップと、 (f)前記ステップ(d)で読み出したトランザクショ
ン番号が前記ステップ(a)で読み出したトランザクシ
ョン番号よりも1つ大きい値でない場合、前記読み出し
たデータを無効とし、ランダムな時間待ち合わせを行っ
た後、再度前記ステップ(a)に戻り、再び前記インデ
ックスレジスタの読み出し処理からの処理を行うステッ
プと、 ことを特徴とする排他的制御方法。 - 【請求項6】ソフトウェアビジブルなレジスタを介して
アクセスが行われる装置の排他制御装置において、 前記レジスタの読み出しが行われる度にトランザクショ
ン番号をインクリメントするトランザクションカウンタ
を備え、 前記レジスタを介して前記装置をアクセスする側では、
前記装置へのアクセス前後で、前記トランザクションカ
ウンタの値であるトランザクション番号を読み出し、前
記トランザクション番号が連番でない場合には、前記ア
クセス中に他からの前記装置へのアクセスが行われたも
のと判断し、前記トランザクション番号が連番でないア
クセスを無効とする、ことを特徴とする排他制御装置。 - 【請求項7】内部レジスタと、 ソフトウェア命令でアクセスされ前記内部レジスタを指
定するソフトウェアビジブルなインデックスレジスタ
と、 ソフトウェア命令でアクセスされるソフトウェアビジブ
ルなデータレジスタと、 インデックスレジスタの読み出し度に、値が1つ増加さ
れるトランザクションカウンタと、 リード/ライト制御回路と、を備え、 プロセス又はプロセッサは、前記内部レジスタへのアク
セスに先立ち、前記インデックスレジスタを読み出して
トランザクション番号が読み出され、前記トランザクシ
ョン番号と前記内部レジスタのインデックス番号、およ
び読み出し/書き込みの指定情報を加えた内容を前記イ
ンデックスレジスタに書き込んで前記内部レジスタへの
アクセスを行った後、前記インデックスレジスタを読み
出すことで前記トランザクションカウンタの値を再度読
み出し、前記読み出したトランザクション番号の値が最
初に読み出したトランザクション番号よりも1つ大きい
値であることが確認された場合、アクセス処理を終了
し、そうでない場合、前記アクセス中の前記内部レジス
タへ他からのアクセスが行われたものと判断し、前記ア
クセス結果を無効とする、ことを特徴とする排他制御装
置。 - 【請求項8】内部レジスタと、 ソフトウェア命令でアクセスされ前記内部レジスタを指
定するソフトウェアビジブルなインデックスレジスタ
と、 ソフトウェア命令でアクセスされるソフトウェアビジブ
ルなデータレジスタと、 ソフトウェア命令で前記データレジスタのリード/ライ
トが行われた際にそれぞれデータのリード/ライトが行
われるデータリード用バッファとデータライト用バッフ
ァと、 前記インデックスレジスタが読み出される度にトランザ
クション番号をなす値がインクリメントされるカウンタ
であり、ソフトウェア側からはインクリメントされた値
が見えるトランザクションカウンタと、 リード/ライト制御回路と、 前記データライト用バッファの内容の有効であるか非有
効であるかを示すライトバッファ有効フラグと、 を備え、 前記内部レジスタからのデータの読み出し時、前記イン
デックスレジスタを読み出すことで前記トランザクショ
ンカウンタのトランザクション番号が読み出され、読み
出したトランザクション番号と、アクセス対象の前記内
部レジスタのインデックス番号、および読み出しの指定
情報を加えた内容のインデックスレジスタのフォーマッ
トのデータ構造を作成して前記インデックスレジスタに
書き込み、 前記トランザクションカウンタと、前記インデックスレ
ジスタのトランザクション番号が一致している場合に、
前記リード/ライト制御回路から、リードストローブ信
号が出力され、前記インデックスレジスタのインデック
ス値で指定された内部レジスタのデータがデータリード
用バッファに転送され、前記データレジスタから前記デ
ータが読み出され、 ソフトウェア命令で前記インデックスレジスタを読み出
すことで、前記トランザクションカウンタの値を読み出
し、最初に読み出したトランザクション番号よりも1つ
大きい値であることが確認された場合、読み出し処理を
終了する、ことを特徴とする排他的制御装置。 - 【請求項9】前記読み出したトランザクション番号が、
最初にリードしたトランザクション番号に1加算した値
よりも大きい場合には、前記読み出したデータを無効と
し、所定時間、待ち合わせを行った後、再度前記インデ
ックスレジスタの読み出しから開始する、ことを特徴と
する請求項8記載の排他的制御装置。 - 【請求項10】前記内部レジスタへのデータの書き込み
時、前記インデックスレジスタを読み出すことで前記ト
ランザクションカウンタのトランザクション番号が読み
出され、前記データレジスタを介してデータライト用バ
ッファにデータを書き込んでから、前記読み出したトラ
ンザクション番号と、アクセス対象の前記内部レジスタ
のインデックス番号、および書き込みの指定情報を加え
た内容のインデックスレジスタのフォーマットのデータ
構造を作成して前記インデックスレジスタに書き込み、 前記トランザクションカウンタと、前記インデックスレ
ジスタのトランザクション番号が一致しており、前記ラ
イトバッファ有効フラグが有効を示す場合に、前記リー
ド/ライト制御回路から、ライトストローブ信号が出力
され、前記インデックスレジスタのインデックス値で指
定された内部レジスタに前記データライト用バッファか
ら前記データが書き込まれ、 ソフトウェア命令で前記インデックスレジスタを読み出
すことで、前記トランザクションカウンタの値を読み出
し、最初に読み出したトランザクション番号よりも1つ
大きい値であることが確認された場合、読み出し処理を
終了する、ことを特徴とする請求項8記載の排他的制御
装置。 - 【請求項11】前記読み出したトランザクション番号
が、最初にリードしたトランザクション番号に1加算し
た値よりも大きい場合には、前記書き込みを無効とし、
所定時間、待ち合わせを行った後、再度、前記インデッ
クスレジスタの読み出しから開始する、ことを特徴とす
る請求項10記載の排他的制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11188479A JP2001014176A (ja) | 1999-07-02 | 1999-07-02 | 排他制御値装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11188479A JP2001014176A (ja) | 1999-07-02 | 1999-07-02 | 排他制御値装置及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001014176A true JP2001014176A (ja) | 2001-01-19 |
Family
ID=16224460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11188479A Pending JP2001014176A (ja) | 1999-07-02 | 1999-07-02 | 排他制御値装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2001014176A (ja) |
-
1999
- 1999-07-02 JP JP11188479A patent/JP2001014176A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7263572B2 (en) | Bus bridge and data transfer method | |
US5682551A (en) | System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto | |
JP4874165B2 (ja) | マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法 | |
JPH04306748A (ja) | 情報処理装置 | |
US8458411B2 (en) | Distributed shared memory multiprocessor and data processing method | |
US5978879A (en) | Bus bridge apparatus | |
JPS61114353A (ja) | 要求時ペ−ジングメモリを有するデジタルデ−タ処理システムのアクセス照合構成体 | |
JPH0532775B2 (ja) | ||
US5627968A (en) | Data transfer apparatus which allows data to be transferred between data devices without accessing a shared memory | |
JP3965784B2 (ja) | 共有メモリ排他アクセス制御方法 | |
JP2001014176A (ja) | 排他制御値装置及び方法 | |
JP2507071B2 (ja) | バスロック制御方式 | |
JP2587468B2 (ja) | ロツクデータ設定装置 | |
JP2854066B2 (ja) | マルチプロセッサシステム | |
JP3226557B2 (ja) | マルチプロセッサシステム | |
JP3371978B2 (ja) | 情報処理装置 | |
JP2679440B2 (ja) | 情報処理装置 | |
JPH06231032A (ja) | アクセス制御装置 | |
JP2001142840A (ja) | Dmaコントローラ回路およびメモリ制御方法 | |
JP2547329B2 (ja) | ロツクデータ設定装置 | |
JPH11203253A (ja) | 共有資源排他アクセス制御方式 | |
JPS5864688A (ja) | デ−タ処理装置 | |
JPS601656B2 (ja) | 緩衝記憶回路 | |
JPH04277845A (ja) | キャッシュエラー時の無効化方式 | |
JP2002269064A (ja) | メモリアクセスレイテンシ増加回避方式 |