JPH10161985A - プロセッサ割付方法およびマルチプロセッサ計算機システム - Google Patents
プロセッサ割付方法およびマルチプロセッサ計算機システムInfo
- Publication number
- JPH10161985A JPH10161985A JP8317496A JP31749696A JPH10161985A JP H10161985 A JPH10161985 A JP H10161985A JP 8317496 A JP8317496 A JP 8317496A JP 31749696 A JP31749696 A JP 31749696A JP H10161985 A JPH10161985 A JP H10161985A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- lock
- instruction
- data
- mutual exclusion
- 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
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 キャッシュ間での無駄なデータ転送をなく
し、システム全体の実行効率を向上させる。 【解決手段】 共有データにアクセスする命令列505
をロック獲得手続き404とロック解放手続き406と
で挟むと共にロック獲得手続き404の第2引数flagで
プロセッサを指定する。マルチプロセッサ計算機システ
ムは、ロック獲得手続き404とロック解放手続き40
6とで挟まれた命令列505を実行するプロセスを、ロ
ック獲得手続き404の第2引数flagで指定したプロセ
ッサに割り付ける。 【効果】 共有データにアクセスする複数のプロセスを
同一のプロセッサに割り付けるため、キャッシュ間の無
駄なデータ転送がなくなり、システム全体の実行効率を
向上させることができる。
し、システム全体の実行効率を向上させる。 【解決手段】 共有データにアクセスする命令列505
をロック獲得手続き404とロック解放手続き406と
で挟むと共にロック獲得手続き404の第2引数flagで
プロセッサを指定する。マルチプロセッサ計算機システ
ムは、ロック獲得手続き404とロック解放手続き40
6とで挟まれた命令列505を実行するプロセスを、ロ
ック獲得手続き404の第2引数flagで指定したプロセ
ッサに割り付ける。 【効果】 共有データにアクセスする複数のプロセスを
同一のプロセッサに割り付けるため、キャッシュ間の無
駄なデータ転送がなくなり、システム全体の実行効率を
向上させることができる。
Description
【0001】
【発明の属する技術分野】本発明は、プロセッサ割付方
法およびマルチプロセッサ計算機システムに関し、更に
詳しくは、キャッシュ間のデータ転送回数を減らし、シ
ステム全体の実行効率を向上させることができるプロセ
ッサ割付方法およびマルチプロセッサ計算機システムに
関する。
法およびマルチプロセッサ計算機システムに関し、更に
詳しくは、キャッシュ間のデータ転送回数を減らし、シ
ステム全体の実行効率を向上させることができるプロセ
ッサ割付方法およびマルチプロセッサ計算機システムに
関する。
【0002】
【従来の技術】複数のプロセッサとそれらプロセッサに
それぞれ対応するキャッシュとを有するマルチプロセッ
サ計算機システムにおいて、異なるプロセッサに割り付
けられた複数のプロセスが共有データにアクセスすると
き、共有データの一貫性を保つため、前記異なるプロセ
ッサのキャッシュ間で共有データを移動させる制御が行
われている。かかる制御の詳細は「UNIXカーネル内
部解析 キャッシュとマルチプロセッサの管理、C.Sc
himmel著、前川守監訳、岩本信一訳、ソフトバンク株式
会社、293〜327頁」に記載されている。
それぞれ対応するキャッシュとを有するマルチプロセッ
サ計算機システムにおいて、異なるプロセッサに割り付
けられた複数のプロセスが共有データにアクセスすると
き、共有データの一貫性を保つため、前記異なるプロセ
ッサのキャッシュ間で共有データを移動させる制御が行
われている。かかる制御の詳細は「UNIXカーネル内
部解析 キャッシュとマルチプロセッサの管理、C.Sc
himmel著、前川守監訳、岩本信一訳、ソフトバンク株式
会社、293〜327頁」に記載されている。
【0003】
【発明が解決しようとする課題】異なるプロセッサのキ
ャッシュ間で共有データを移動させる制御を行う場合、
例えば、異なるプロセッサに割り付けられた各プロセス
が交互に共有データに書き込み動作を行なうと、キャッ
シュ間のデータ転送回数が増え、計算機システム全体の
実行効率が下がる問題点がある。そこで、本発明の目的
は、キャッシュ間のデータ転送回数を減らし、システム
全体の実行効率を向上させることができるプロセッサ割
付方法およびマルチプロセッサ計算機システムを提供す
ることにある。
ャッシュ間で共有データを移動させる制御を行う場合、
例えば、異なるプロセッサに割り付けられた各プロセス
が交互に共有データに書き込み動作を行なうと、キャッ
シュ間のデータ転送回数が増え、計算機システム全体の
実行効率が下がる問題点がある。そこで、本発明の目的
は、キャッシュ間のデータ転送回数を減らし、システム
全体の実行効率を向上させることができるプロセッサ割
付方法およびマルチプロセッサ計算機システムを提供す
ることにある。
【0004】
【課題を解決するための手段】第1の観点では、本発明
は、複数のプロセッサとそれらプロセッサにそれぞれ対
応するキャッシュとを有するマルチプロセッサ計算機シ
ステムにおけるプロセッサ割付方法であって、複数のプ
ロセスが共有データにアクセスするとき、それらプロセ
スを同一のプロセッサに割り付けることを特徴とするプ
ロセッサ割付方法を提供する。上記プロセッサ割付方法
では、共有データにアクセスする複数のプロセスを同一
のプロセッサに割り付けるため、キャッシュ間の無駄な
データ転送がなくなり、システム全体の実行効率を向上
させることができる。また、複数の共有データがある場
合には、各共有データごとに別々のプロセッサを対応さ
せれば、負荷を分散することができる。
は、複数のプロセッサとそれらプロセッサにそれぞれ対
応するキャッシュとを有するマルチプロセッサ計算機シ
ステムにおけるプロセッサ割付方法であって、複数のプ
ロセスが共有データにアクセスするとき、それらプロセ
スを同一のプロセッサに割り付けることを特徴とするプ
ロセッサ割付方法を提供する。上記プロセッサ割付方法
では、共有データにアクセスする複数のプロセスを同一
のプロセッサに割り付けるため、キャッシュ間の無駄な
データ転送がなくなり、システム全体の実行効率を向上
させることができる。また、複数の共有データがある場
合には、各共有データごとに別々のプロセッサを対応さ
せれば、負荷を分散することができる。
【0005】第2の観点では、本発明は、複数のプロセ
ッサとそれらプロセッサにそれぞれ対応するキャッシュ
とを有するマルチプロセッサ計算機システムにおけるプ
ロセッサ割付方法であって、ある命令列の前に、プロセ
ッサを指定しうる相互排除開始命令を配置し、前記命令
列の後に、プロセッサの指定を解除しうる相互排除終了
命令を配置し、前記相互排除開始命令でプロセッサが指
定されている場合、その指定されたプロセッサにより前
記相互排除開始命令と前記相互排除終了命令で挟まれた
前記命令列を実行し、前記相互排除開始命令でプロセッ
サが指定されていない場合、任意のプロセッサにより前
記相互排除開始命令と前記相互排除終了命令で挟まれた
前記命令列を実行することを特徴とするプロセッサ割付
方法を提供する。上記プロセッサ割付方法では、共有デ
ータにアクセスする命令列を相互排除開始命令と相互排
除終了命令とで挟むと共に相互排除開始命令でプロセッ
サを指定することにより、共有データにアクセスするプ
ロセスを同一のプロセッサに割り付けることが出来る。
このため、キャッシュ間の無駄なデータ転送がなくな
り、システム全体の実行効率を向上させることができ
る。また、共有データにアクセスする命令列が複数ある
場合には、各命令列ごとに別々のプロセッサを指定すれ
ば、負荷を分散することができる。なお、上記構成にお
いて、プロセッサの指定は、プロセッサ番号を明示して
行ってもよいし、マルチプロセッサ計算機システムに一
つのプロセッサを選択させることにより行ってもよい。
後者の場合、マルチプロセッサ計算機システムは、例え
ば、相互排除開始命令を実行したプロセッサの番号に基
づいてプロセッサを選択したり、共有データが現時点で
存在しているキャッシュに対応するプロセッサを選択す
る。
ッサとそれらプロセッサにそれぞれ対応するキャッシュ
とを有するマルチプロセッサ計算機システムにおけるプ
ロセッサ割付方法であって、ある命令列の前に、プロセ
ッサを指定しうる相互排除開始命令を配置し、前記命令
列の後に、プロセッサの指定を解除しうる相互排除終了
命令を配置し、前記相互排除開始命令でプロセッサが指
定されている場合、その指定されたプロセッサにより前
記相互排除開始命令と前記相互排除終了命令で挟まれた
前記命令列を実行し、前記相互排除開始命令でプロセッ
サが指定されていない場合、任意のプロセッサにより前
記相互排除開始命令と前記相互排除終了命令で挟まれた
前記命令列を実行することを特徴とするプロセッサ割付
方法を提供する。上記プロセッサ割付方法では、共有デ
ータにアクセスする命令列を相互排除開始命令と相互排
除終了命令とで挟むと共に相互排除開始命令でプロセッ
サを指定することにより、共有データにアクセスするプ
ロセスを同一のプロセッサに割り付けることが出来る。
このため、キャッシュ間の無駄なデータ転送がなくな
り、システム全体の実行効率を向上させることができ
る。また、共有データにアクセスする命令列が複数ある
場合には、各命令列ごとに別々のプロセッサを指定すれ
ば、負荷を分散することができる。なお、上記構成にお
いて、プロセッサの指定は、プロセッサ番号を明示して
行ってもよいし、マルチプロセッサ計算機システムに一
つのプロセッサを選択させることにより行ってもよい。
後者の場合、マルチプロセッサ計算機システムは、例え
ば、相互排除開始命令を実行したプロセッサの番号に基
づいてプロセッサを選択したり、共有データが現時点で
存在しているキャッシュに対応するプロセッサを選択す
る。
【0006】第3の観点では、本発明は、複数のプロセ
ッサとそれらプロセッサにそれぞれ対応するキャッシュ
とを有するマルチプロセッサ計算機システムにおいて、
相互排除開始命令によりプロセッサが指定されている場
合は、その指定されたプロセッサにより、前記相互排除
開始命令から後の命令を実行させ、相互排除終了命令を
実行すると、任意のプロセッサにより、前記相互排除終
了命令から後の命令を実行させるプロセッサ割付制御手
段を具備することを特徴とするマルチプロセッサ計算機
システムを提供する。上記マルチプロセッサ計算機シス
テムでは、プログラムにおいて共有データにアクセスす
る命令列を相互排除開始命令と相互排除終了命令とで挟
むと共に相互排除開始命令でプロセッサを指定すること
により、共有データにアクセスするプロセスを同一のプ
ロセッサに割り付けることが出来る。このため、キャッ
シュ間の無駄なデータ転送がなくなり、システム全体の
実行効率を向上させることができる。また、共有データ
にアクセスする命令列が複数ある場合には、各命令列ご
とに別々のプロセッサを指定すれば、負荷を分散するこ
とができる。なお、上記構成において、プロセッサの指
定は、プロセッサ番号を明示して行ってもよいし、マル
チプロセッサ計算機システムに一つのプロセッサを選択
させることにより行ってもよい。後者の場合、プロセッ
サ割付制御手段は、例えば、相互排除開始命令を実行し
たプロセッサの番号に基づいてプロセッサを選択した
り、共有データが現時点で存在しているキャッシュに対
応するプロセッサを選択する。
ッサとそれらプロセッサにそれぞれ対応するキャッシュ
とを有するマルチプロセッサ計算機システムにおいて、
相互排除開始命令によりプロセッサが指定されている場
合は、その指定されたプロセッサにより、前記相互排除
開始命令から後の命令を実行させ、相互排除終了命令を
実行すると、任意のプロセッサにより、前記相互排除終
了命令から後の命令を実行させるプロセッサ割付制御手
段を具備することを特徴とするマルチプロセッサ計算機
システムを提供する。上記マルチプロセッサ計算機シス
テムでは、プログラムにおいて共有データにアクセスす
る命令列を相互排除開始命令と相互排除終了命令とで挟
むと共に相互排除開始命令でプロセッサを指定すること
により、共有データにアクセスするプロセスを同一のプ
ロセッサに割り付けることが出来る。このため、キャッ
シュ間の無駄なデータ転送がなくなり、システム全体の
実行効率を向上させることができる。また、共有データ
にアクセスする命令列が複数ある場合には、各命令列ご
とに別々のプロセッサを指定すれば、負荷を分散するこ
とができる。なお、上記構成において、プロセッサの指
定は、プロセッサ番号を明示して行ってもよいし、マル
チプロセッサ計算機システムに一つのプロセッサを選択
させることにより行ってもよい。後者の場合、プロセッ
サ割付制御手段は、例えば、相互排除開始命令を実行し
たプロセッサの番号に基づいてプロセッサを選択した
り、共有データが現時点で存在しているキャッシュに対
応するプロセッサを選択する。
【0007】
【発明の実施の形態】図1は、本発明の一実施形態にか
かるマルチプロセッサ計算機システム101のブロック
図である。このマルチプロセッサ計算機システム101
は、複数のプロセッサ102(1)〜102(N)と、各プ
ロセッサごとのキャッシュメモリ103(1)〜103
(N)と、命令列やデータを格納するための磁気ディスク
等の2次記憶装置104と、メインメモリ106と、シ
ステム・バス105とを具備して構成されている。
かるマルチプロセッサ計算機システム101のブロック
図である。このマルチプロセッサ計算機システム101
は、複数のプロセッサ102(1)〜102(N)と、各プ
ロセッサごとのキャッシュメモリ103(1)〜103
(N)と、命令列やデータを格納するための磁気ディスク
等の2次記憶装置104と、メインメモリ106と、シ
ステム・バス105とを具備して構成されている。
【0008】前記メインメモリ106には、プロセッサ
102が実行するプログラム格納領域120(1)〜(L)
と、プロセスを管理するためのプロセス管理表117
と、プロセッサ102(1)〜102(N)で実行中のプロ
セスを管理するための実行中プロセス管理表116と、
プロセッサ102(1)〜102(N)には未だ割り付けら
れていないが実行可能な状態にあるプロセスをリスト構
造で管理する実行可能プロセスリスト118と、プロセ
ッサ102(1)〜102(N)に割り付けるプロセスを切
り替える手続を格納するプロセス切り替え手続き格納領
域119と、複数のプロセスで共有するデータの一貫性
を保つために他のプロセスが当該共有データを読み書き
することを禁止する相互排除の際に使用する情報を格納
するためのロック用データ格納領域110(1)〜(M)
と、それらロック用データ格納領域110(1)〜(M)を
初期化する手続を格納するロック初期化手続き格納領域
107と、共有データにアクセスする命令列の前で相互
排除を指示する手続を格納するロック獲得手続き格納領
域108と、共有データにアクセスする命令列の後で相
互排除の解除を指示する手続を格納するロック解放手続
き格納領域109とがある。
102が実行するプログラム格納領域120(1)〜(L)
と、プロセスを管理するためのプロセス管理表117
と、プロセッサ102(1)〜102(N)で実行中のプロ
セスを管理するための実行中プロセス管理表116と、
プロセッサ102(1)〜102(N)には未だ割り付けら
れていないが実行可能な状態にあるプロセスをリスト構
造で管理する実行可能プロセスリスト118と、プロセ
ッサ102(1)〜102(N)に割り付けるプロセスを切
り替える手続を格納するプロセス切り替え手続き格納領
域119と、複数のプロセスで共有するデータの一貫性
を保つために他のプロセスが当該共有データを読み書き
することを禁止する相互排除の際に使用する情報を格納
するためのロック用データ格納領域110(1)〜(M)
と、それらロック用データ格納領域110(1)〜(M)を
初期化する手続を格納するロック初期化手続き格納領域
107と、共有データにアクセスする命令列の前で相互
排除を指示する手続を格納するロック獲得手続き格納領
域108と、共有データにアクセスする命令列の後で相
互排除の解除を指示する手続を格納するロック解放手続
き格納領域109とがある。
【0009】前記ロック用データ格納領域110(1)〜
(M)には、対応するデータが相互排除中か否かを示すロ
ック用変数格納領域111と、対応するデータにアクセ
ス中のプロセスがあるか否かを示すロック獲得フラグ格
納領域112と、対応するデータにアクセスするプロセ
スが割り付けられたプロセッサの番号を格納する割付プ
ロセッサ番号格納領域113と、対応するデータにアク
セスできる時を待っているプロセスをリストで管理して
いる待機プロセスリスト114とがある。
(M)には、対応するデータが相互排除中か否かを示すロ
ック用変数格納領域111と、対応するデータにアクセ
ス中のプロセスがあるか否かを示すロック獲得フラグ格
納領域112と、対応するデータにアクセスするプロセ
スが割り付けられたプロセッサの番号を格納する割付プ
ロセッサ番号格納領域113と、対応するデータにアク
セスできる時を待っているプロセスをリストで管理して
いる待機プロセスリスト114とがある。
【0010】図2は、前記プロセス管理表117の構成
図である。プロセス管理表117の各行は、それぞれ一
つのプロセスに対応している。各行は、行番号を格納す
るインデックス201と、当該行に対応するプロセスの
番号を格納するプロセス番号202と、当該行に対応す
るプロセスの状態を格納する実行状態203と、当該行
に対応するプロセスの実行を中断した時にプログラムカ
ウンタ等のレジスタ情報を退避した記憶領域を格納する
レジスタ退避領域204と、実行可能プロセスリスト1
18のようなリスト構造を作るために使用するリンク先
プロセスの行番号(またはリスト構造の末尾を示す識別
子END)を格納する次プロセスインデックス205
と、当該行に対応するプロセスを割り付けるプロセッサ
が決まっている場合にその番号を格納する割付プロセッ
サ番号206とから構成される。
図である。プロセス管理表117の各行は、それぞれ一
つのプロセスに対応している。各行は、行番号を格納す
るインデックス201と、当該行に対応するプロセスの
番号を格納するプロセス番号202と、当該行に対応す
るプロセスの状態を格納する実行状態203と、当該行
に対応するプロセスの実行を中断した時にプログラムカ
ウンタ等のレジスタ情報を退避した記憶領域を格納する
レジスタ退避領域204と、実行可能プロセスリスト1
18のようなリスト構造を作るために使用するリンク先
プロセスの行番号(またはリスト構造の末尾を示す識別
子END)を格納する次プロセスインデックス205
と、当該行に対応するプロセスを割り付けるプロセッサ
が決まっている場合にその番号を格納する割付プロセッ
サ番号206とから構成される。
【0011】図3は、前記実行中プロセス管理表116
の構成図である。実行中プロセス管理表116の各行
は、それぞれプロセッサ102(1)〜102(N)に対応
している。各行は、当該行に対応するプロセッサ102
(1)〜102(N)の番号(1〜N)を格納するプロセッ
サ番号301と、当該行に対応するプロセッサ102が
実行しているプロセスの番号を格納するプロセス番号3
02とから構成される。
の構成図である。実行中プロセス管理表116の各行
は、それぞれプロセッサ102(1)〜102(N)に対応
している。各行は、当該行に対応するプロセッサ102
(1)〜102(N)の番号(1〜N)を格納するプロセッ
サ番号301と、当該行に対応するプロセッサ102が
実行しているプロセスの番号を格納するプロセス番号3
02とから構成される。
【0012】図4は、相互排除を実行するためにオペレ
ーティング・システムが呼び出す手続きであるロック初
期化402と、ロック獲得404と、ロック解放406
の説明図である。
ーティング・システムが呼び出す手続きであるロック初
期化402と、ロック獲得404と、ロック解放406
の説明図である。
【0013】ロック初期化(手続き名init_lock)40
2は、ロック用データ識別子idを返すための変数格納
領域のアドレスidpを引数とする。そして、ロック用
データ格納領域110を初期化し、その初期化したロッ
ク用データ格納領域110に与えたロック用データ識別
子idを前記アドレスidpが指す変数格納領域に格納
する機能を有する。
2は、ロック用データ識別子idを返すための変数格納
領域のアドレスidpを引数とする。そして、ロック用
データ格納領域110を初期化し、その初期化したロッ
ク用データ格納領域110に与えたロック用データ識別
子idを前記アドレスidpが指す変数格納領域に格納
する機能を有する。
【0014】ロック獲得(手続き名lock)404は、前
記ロック初期化402で得たロック用データ識別子id
を第1引数とし、機能の種類を指定する識別子flagを第
2引数とする。そして、ロック用データ識別子idに対
応するデータに以後アクセスするプロセスを、第2引数
の識別子flagの値がプロセッサ番号(1〜N)なら当該
プロセッサ番号(1〜N)に割り付け、識別子flagの値
が−1ならシステム側で選択した一つのプロセッサに割
り付け、さらに、識別子flagの値が−2なら従来技術で
提供されているセマフォと同様な相互排除とプロセスス
ケジューリング(プロセッサに割り付けるプロセスを選
択する処理)を提供するように制御する機能を有する。
なお、セマフォは、P命令とV命令とを使って相互排除
を実現する。P命令とV命令の詳細は「オペレーティン
グ・システムの機能と構成、高橋他、岩波書店、198
3、147〜150頁」や「UNIXカーネルの設計、
Maurice 著/坂本他訳、共立出版、1990、334〜
341頁」に記載されている。また、プロセススケジュ
ーリングの詳細は「UNIXカーネルの設計、Maurice
著、坂本他訳、共立出版、1990、211〜219
頁」に記載されている。
記ロック初期化402で得たロック用データ識別子id
を第1引数とし、機能の種類を指定する識別子flagを第
2引数とする。そして、ロック用データ識別子idに対
応するデータに以後アクセスするプロセスを、第2引数
の識別子flagの値がプロセッサ番号(1〜N)なら当該
プロセッサ番号(1〜N)に割り付け、識別子flagの値
が−1ならシステム側で選択した一つのプロセッサに割
り付け、さらに、識別子flagの値が−2なら従来技術で
提供されているセマフォと同様な相互排除とプロセスス
ケジューリング(プロセッサに割り付けるプロセスを選
択する処理)を提供するように制御する機能を有する。
なお、セマフォは、P命令とV命令とを使って相互排除
を実現する。P命令とV命令の詳細は「オペレーティン
グ・システムの機能と構成、高橋他、岩波書店、198
3、147〜150頁」や「UNIXカーネルの設計、
Maurice 著/坂本他訳、共立出版、1990、334〜
341頁」に記載されている。また、プロセススケジュ
ーリングの詳細は「UNIXカーネルの設計、Maurice
著、坂本他訳、共立出版、1990、211〜219
頁」に記載されている。
【0015】ロック解放(手続き名unlock)406は、
前記ロック初期化402で得たロック用データ識別子i
dを引数とする。そして、ロック用データ識別子idに
対応するデータに以後アクセスするプロセスを任意のプ
ロセッサに割り付けることを可能にする機能を有する。
前記ロック初期化402で得たロック用データ識別子i
dを引数とする。そして、ロック用データ識別子idに
対応するデータに以後アクセスするプロセスを任意のプ
ロセッサに割り付けることを可能にする機能を有する。
【0016】図5は、ロック初期化402、ロック獲得
404、ロック解放406の各手続きを含むプログラム
命令列の例示図である。共有データにアクセスする複数
のプロセス間で相互排除を行うべき命令列505の前に
ロック獲得404を置き、後にロック解放406を置
く。そして、ロック獲得404より前にロック初期化4
02を置く。なお、ロック獲得404とロック解放40
6に挟まれた命令列505を危険領域という。
404、ロック解放406の各手続きを含むプログラム
命令列の例示図である。共有データにアクセスする複数
のプロセス間で相互排除を行うべき命令列505の前に
ロック獲得404を置き、後にロック解放406を置
く。そして、ロック獲得404より前にロック初期化4
02を置く。なお、ロック獲得404とロック解放40
6に挟まれた命令列505を危険領域という。
【0017】図6は、ロック初期化402の処理を示す
PAD図である。ステップ601では、ロック用データ
格納領域110を確保し、これを構造体lock_dataとす
る。ロック用データ格納領域110のロック用変数格納
領域111、ロック獲得フラグ格納領域112、割付プ
ロセッサ番号格納領域113および待機プロセスリスト
114は、それぞれ構造体lock_dataのメンバlock、an
ybody、processor、listとなる。ステップ602では、
構造体lock_dataのメンバlock、anybody、processor、
listに初期値を設定する。メンバlockの初期値FALSE
は、対応するデータが相互排除されていないことを意味
する。メンバanybody の初期値NO_PROCESSは、対応する
データにアクセス中のプロセスがないことを意味する。
メンバprocessor の初期値−1は、対応するデータにア
クセスするプロセスがプロセッサに割り付けられていな
いことを意味する。メンバlistの初期値は、空(待機プ
ロセスがない)を意味する識別子とする。ステップ60
3では、ロック用データ構造体lock_dataにロック用デ
ータ識別子idを与える。ステップ604では、引数の
アドレスidpが指す変数格納領域にロック用データ識
別子idを格納する。ステップ605では、ロック初期
化402の呼び出し元に戻る。
PAD図である。ステップ601では、ロック用データ
格納領域110を確保し、これを構造体lock_dataとす
る。ロック用データ格納領域110のロック用変数格納
領域111、ロック獲得フラグ格納領域112、割付プ
ロセッサ番号格納領域113および待機プロセスリスト
114は、それぞれ構造体lock_dataのメンバlock、an
ybody、processor、listとなる。ステップ602では、
構造体lock_dataのメンバlock、anybody、processor、
listに初期値を設定する。メンバlockの初期値FALSE
は、対応するデータが相互排除されていないことを意味
する。メンバanybody の初期値NO_PROCESSは、対応する
データにアクセス中のプロセスがないことを意味する。
メンバprocessor の初期値−1は、対応するデータにア
クセスするプロセスがプロセッサに割り付けられていな
いことを意味する。メンバlistの初期値は、空(待機プ
ロセスがない)を意味する識別子とする。ステップ60
3では、ロック用データ構造体lock_dataにロック用デ
ータ識別子idを与える。ステップ604では、引数の
アドレスidpが指す変数格納領域にロック用データ識
別子idを格納する。ステップ605では、ロック初期
化402の呼び出し元に戻る。
【0018】図7は、ロック獲得404の処理を示すP
AD図である。ステップ701では、第1引数のロック
用データ識別子idに対応するロック用データ構造体lo
ck_dataを得る。ステップ702では、第2引数のフラ
グflagの値を判定し、値が1〜N(プロセッサ番号)か
又は−1(プロセスを一定のプロセッサに割り付ける識
別子)ならステップ703へ進み、値が−2ならステッ
プ704へ進む。ステップ703では、新規ロック獲得
703の手続きを実行する。この新規ロック獲得703
の詳細な内容は図8を参照して後述する。
AD図である。ステップ701では、第1引数のロック
用データ識別子idに対応するロック用データ構造体lo
ck_dataを得る。ステップ702では、第2引数のフラ
グflagの値を判定し、値が1〜N(プロセッサ番号)か
又は−1(プロセスを一定のプロセッサに割り付ける識
別子)ならステップ703へ進み、値が−2ならステッ
プ704へ進む。ステップ703では、新規ロック獲得
703の手続きを実行する。この新規ロック獲得703
の詳細な内容は図8を参照して後述する。
【0019】ステップ704,705では、一命令でメ
モリに対する読み書きを不可分に実行できるTS(Test
and Set)命令を使用して、ロック用データ構造体lock
_dataのメンバlockの値をtrueにする。なお、ステップ
705は、他プロセッサが危険領域の命令列を実行して
いる場合には、その危険領域の実行が終了するまで待つ
処理である。TS命令の詳細は「オペレーティング・シ
ステムの機能と構成、高橋他、岩波書店、1983、1
47頁」に記載されている。TS命令により、ステップ
706からステップ707の処理2またはステップ70
9の処理2までの処理は、ただ一つのプロセッサで実行
されることが保証される。
モリに対する読み書きを不可分に実行できるTS(Test
and Set)命令を使用して、ロック用データ構造体lock
_dataのメンバlockの値をtrueにする。なお、ステップ
705は、他プロセッサが危険領域の命令列を実行して
いる場合には、その危険領域の実行が終了するまで待つ
処理である。TS命令の詳細は「オペレーティング・シ
ステムの機能と構成、高橋他、岩波書店、1983、1
47頁」に記載されている。TS命令により、ステップ
706からステップ707の処理2またはステップ70
9の処理2までの処理は、ただ一つのプロセッサで実行
されることが保証される。
【0020】ステップ706では、ロック用データ構造
体lock_dataのメンバanybody の値がNO_PROCESSか否か
を判定し、値がNO_PROCESSなら(すなわち、危険領域の
命令列5を他プロセスが実行していないなら)ステップ
707へ進み、値がNO_PROCESSでないなら(すなわち、
危険領域の命令列を他プロセスが実行しているなら)ス
テップ709へ進む。
体lock_dataのメンバanybody の値がNO_PROCESSか否か
を判定し、値がNO_PROCESSなら(すなわち、危険領域の
命令列5を他プロセスが実行していないなら)ステップ
707へ進み、値がNO_PROCESSでないなら(すなわち、
危険領域の命令列を他プロセスが実行しているなら)ス
テップ709へ進む。
【0021】ステップ707では、処理1で、ロック用
データ構造体lock_dataのメンバanybody の値をEXIST
_PROCESSにする。また、処理2で、ロック用データ構
造体lock_dataのメンバlockの値をFALSE にする。ステ
ップ708では、ロック獲得404の呼び出し元に戻
る。
データ構造体lock_dataのメンバanybody の値をEXIST
_PROCESSにする。また、処理2で、ロック用データ構
造体lock_dataのメンバlockの値をFALSE にする。ステ
ップ708では、ロック獲得404の呼び出し元に戻
る。
【0022】ステップ709では、処理1で、ロック用
データ構造体lock_dataのメンバlistに自プロセスを登
録し、他プロセスの実行終了を待つ。処理2で、ロック
用データ構造体lock_dataのメンバlockの値をFALSE に
する。ステップ710では、処理1で、プロセス管理表
117の自プロセスの実行状態203を“中断”にす
る。処理2で、自プロセスを実行していたプロセッサの
レジスタの内容を退避し、その退避した領域のアドレス
をプロセス管理表117のレジスタ退避領域204に格
納する。処理3で、実行中プロセス管理表116から自
プロセスのプロセス番号を削除する。ステップ711で
は、自プロセスを実行していたプロセッサに他の“実行
可能”状態にあるプロセスを割り付けるために、プロセ
ス切り替え711の手続きを実行する。このプロセス切
り替え711の詳細な内容は図11を参照して後述す
る。ステップ712では、ロック獲得404の呼び出し
元に戻る。
データ構造体lock_dataのメンバlistに自プロセスを登
録し、他プロセスの実行終了を待つ。処理2で、ロック
用データ構造体lock_dataのメンバlockの値をFALSE に
する。ステップ710では、処理1で、プロセス管理表
117の自プロセスの実行状態203を“中断”にす
る。処理2で、自プロセスを実行していたプロセッサの
レジスタの内容を退避し、その退避した領域のアドレス
をプロセス管理表117のレジスタ退避領域204に格
納する。処理3で、実行中プロセス管理表116から自
プロセスのプロセス番号を削除する。ステップ711で
は、自プロセスを実行していたプロセッサに他の“実行
可能”状態にあるプロセスを割り付けるために、プロセ
ス切り替え711の手続きを実行する。このプロセス切
り替え711の詳細な内容は図11を参照して後述す
る。ステップ712では、ロック獲得404の呼び出し
元に戻る。
【0023】図8は、新規ロック獲得703の処理を示
すPAD図である。ステップ801,802では、一命
令でメモリに対する読み書きを不可分に実行できるTS
命令を使用して、ロック用データ構造体lock_dataのメ
ンバlockの値をtrueにする。なお、ステップ802は、
他プロセッサが危険領域の命令列を実行している場合に
は、その危険領域の実行が終了するまで待つ処理であ
る。TS命令により、ステップ801からステップ80
8の処理3またはステップ812の処理3までの処理
は、ただ一つのプロセッサで実行されることが保証され
る。
すPAD図である。ステップ801,802では、一命
令でメモリに対する読み書きを不可分に実行できるTS
命令を使用して、ロック用データ構造体lock_dataのメ
ンバlockの値をtrueにする。なお、ステップ802は、
他プロセッサが危険領域の命令列を実行している場合に
は、その危険領域の実行が終了するまで待つ処理であ
る。TS命令により、ステップ801からステップ80
8の処理3またはステップ812の処理3までの処理
は、ただ一つのプロセッサで実行されることが保証され
る。
【0024】ステップ803では、第1引数で指定され
たロック用データ構造体lock_dataのメンバprocessor
の値が−1か否かを判定し、−1(プロセスがプロセッ
サに割り付けられていない)ならステップ804に進
み、−1でないならステップ807へ進む。ステップ8
04では、第2引数のフラグflagの値がプロセッサ番号
(1〜N)か否かを判定し、プロセッサ番号(1〜N)
ならステップ805へ進み、フラグflagの値がプロセッ
サ番号でない(−1)ならステップ806へ進む。ステ
ップ805では、フラグflagの値であるプロセッサ番号
(1〜N)をロック用データ構造体lock_dataのメンバ
processor の値に設定する。そして、ステップ807へ
進む。
たロック用データ構造体lock_dataのメンバprocessor
の値が−1か否かを判定し、−1(プロセスがプロセッ
サに割り付けられていない)ならステップ804に進
み、−1でないならステップ807へ進む。ステップ8
04では、第2引数のフラグflagの値がプロセッサ番号
(1〜N)か否かを判定し、プロセッサ番号(1〜N)
ならステップ805へ進み、フラグflagの値がプロセッ
サ番号でない(−1)ならステップ806へ進む。ステ
ップ805では、フラグflagの値であるプロセッサ番号
(1〜N)をロック用データ構造体lock_dataのメンバ
processor の値に設定する。そして、ステップ807へ
進む。
【0025】ステップ806では、自プロセスが割り付
けられているプロセッサ番号を実行中プロセス管理表1
16から調べて、そのプロセッサ番号をロック用データ
構造体lock_dataのメンバprocessor の値に設定する。
なお、共有データが現時点で存在しているキャッシュに
対応するプロセッサの番号を調べて、そのプロセッサ番
号をロック用データ構造体lock_dataのメンバprocesso
r の値に設定してもよい。そして、ステップ807へ進
む。
けられているプロセッサ番号を実行中プロセス管理表1
16から調べて、そのプロセッサ番号をロック用データ
構造体lock_dataのメンバprocessor の値に設定する。
なお、共有データが現時点で存在しているキャッシュに
対応するプロセッサの番号を調べて、そのプロセッサ番
号をロック用データ構造体lock_dataのメンバprocesso
r の値に設定してもよい。そして、ステップ807へ進
む。
【0026】ステップ807では、ロック用データ構造
体lock_dataのメンバanybody の値がNO_PROCESSか否か
を判定し、値がNO_PROCESSなら(すなわち、危険領域の
命令列を他プロセスが実行していないなら)ステップ8
08へ進み、値がNO_PROCESSでないなら(すなわち、危
険領域の命令列を他プロセスが実行しているなら)ステ
ップ812へ進む。
体lock_dataのメンバanybody の値がNO_PROCESSか否か
を判定し、値がNO_PROCESSなら(すなわち、危険領域の
命令列を他プロセスが実行していないなら)ステップ8
08へ進み、値がNO_PROCESSでないなら(すなわち、危
険領域の命令列を他プロセスが実行しているなら)ステ
ップ812へ進む。
【0027】ステップ808では、処理1で、ロック用
データ構造体lock_dataのメンバanybody の値をEXIST
_PROCESSにする。また、処理2で、ロック用データ構
造体lock_dataのメンバprocessor の値をプロセス管理
表117の割付プロセッサ番号206に設定する。ま
た、処理3で、ロック用データ構造体lock_dataのメン
バlockの値をFALSE にする。ステップ809では、ロッ
ク用データ構造体lock_dataのメンバprocessor の値と
自プロセスが割り付けられているプロセッサ番号とが不
一致か否かを判定し、不一致ならステップ810へ進
み、一致ならステップ811へ進む。ステップ810で
は、処理1で、プロセス管理表117の自プロセスの実
行状態203を“実行可能”にする。処理2で、自プロ
セスを実行していたプロセッサのレジスタの内容を退避
し、その退避した領域のアドレスをプロセス管理表11
7のレジスタ退避領域204に格納する。処理3で、実
行可能プロセスリスト118に自プロセスのプロセス番
号を登録する。処理4で、実行中プロセス管理表116
から自プロセスのプロセス番号を削除する。ステップ7
11では、自プロセスを実行していたプロセッサに他の
“実行可能”状態にあるプロセスを割り付けるために、
プロセス切り替え711の手続きを実行する。このプロ
セス切り替え711の詳細な内容は図11を参照して後
述する。そして、ステップ811へ進む。ステップ81
1では、新規ロック獲得703の呼び出し元に戻る。
データ構造体lock_dataのメンバanybody の値をEXIST
_PROCESSにする。また、処理2で、ロック用データ構
造体lock_dataのメンバprocessor の値をプロセス管理
表117の割付プロセッサ番号206に設定する。ま
た、処理3で、ロック用データ構造体lock_dataのメン
バlockの値をFALSE にする。ステップ809では、ロッ
ク用データ構造体lock_dataのメンバprocessor の値と
自プロセスが割り付けられているプロセッサ番号とが不
一致か否かを判定し、不一致ならステップ810へ進
み、一致ならステップ811へ進む。ステップ810で
は、処理1で、プロセス管理表117の自プロセスの実
行状態203を“実行可能”にする。処理2で、自プロ
セスを実行していたプロセッサのレジスタの内容を退避
し、その退避した領域のアドレスをプロセス管理表11
7のレジスタ退避領域204に格納する。処理3で、実
行可能プロセスリスト118に自プロセスのプロセス番
号を登録する。処理4で、実行中プロセス管理表116
から自プロセスのプロセス番号を削除する。ステップ7
11では、自プロセスを実行していたプロセッサに他の
“実行可能”状態にあるプロセスを割り付けるために、
プロセス切り替え711の手続きを実行する。このプロ
セス切り替え711の詳細な内容は図11を参照して後
述する。そして、ステップ811へ進む。ステップ81
1では、新規ロック獲得703の呼び出し元に戻る。
【0028】ステップ812では、処理1で、ロック用
データ構造体lock_dataのメンバlistに自プロセスを登
録し、他プロセスの実行終了を待つ。処理2で、ロック
用データ構造体lock_dataのメンバprocessor の値をプ
ロセス管理表117の割付プロセッサ番号206に設定
する。処理3で、ロック用データ構造体lock_dataのメ
ンバlockの値をFALSE にする。ステップ813では、処
理1で、プロセス管理表117の自プロセスの実行状態
203を“中断”にする。処理2で、自プロセスを実行
していたプロセッサのレジスタの内容を退避し、その退
避した領域のアドレスをプロセス管理表117のレジス
タ退避領域204に格納する。処理3で、実行中プロセ
ス管理表116から自プロセスのプロセス番号を削除す
る。ステップ711では、自プロセスを実行していたプ
ロセッサに他の“実行可能”状態にあるプロセスを割り
付けるために、プロセス切り替え711の手続きを実行
する。このプロセス切り替え711の詳細な内容は図1
1を参照して後述する。ステップ814では、新規ロッ
ク獲得703の呼び出し元に戻る。
データ構造体lock_dataのメンバlistに自プロセスを登
録し、他プロセスの実行終了を待つ。処理2で、ロック
用データ構造体lock_dataのメンバprocessor の値をプ
ロセス管理表117の割付プロセッサ番号206に設定
する。処理3で、ロック用データ構造体lock_dataのメ
ンバlockの値をFALSE にする。ステップ813では、処
理1で、プロセス管理表117の自プロセスの実行状態
203を“中断”にする。処理2で、自プロセスを実行
していたプロセッサのレジスタの内容を退避し、その退
避した領域のアドレスをプロセス管理表117のレジス
タ退避領域204に格納する。処理3で、実行中プロセ
ス管理表116から自プロセスのプロセス番号を削除す
る。ステップ711では、自プロセスを実行していたプ
ロセッサに他の“実行可能”状態にあるプロセスを割り
付けるために、プロセス切り替え711の手続きを実行
する。このプロセス切り替え711の詳細な内容は図1
1を参照して後述する。ステップ814では、新規ロッ
ク獲得703の呼び出し元に戻る。
【0029】図9は、ロック解放406の処理を示すP
AD図である。ステップ901では、新規ロック解放9
01の手続きを実行する。この新規ロック解放911の
詳細な内容は図10を参照して後述する。ステップ90
2では、引数のロック用データ識別子idに対応するロ
ック用データ構造体lock_dataを得る。ステップ90
3,904では、一命令でメモリに対する読み書きを不
可分に実行できるTS命令を使用して、ロック用データ
構造体lock_dataのメンバlockの値をtrueにする。な
お、ステップ904は、危険領域の命令列を実行してい
る場合には、その危険領域の実行が終了するまで待つ処
理である。TS命令により、ステップ905からステッ
プ906の処理2またはステップ908の処理2までの
処理は、ただ一つのプロセッサで実行されることが保証
される。
AD図である。ステップ901では、新規ロック解放9
01の手続きを実行する。この新規ロック解放911の
詳細な内容は図10を参照して後述する。ステップ90
2では、引数のロック用データ識別子idに対応するロ
ック用データ構造体lock_dataを得る。ステップ90
3,904では、一命令でメモリに対する読み書きを不
可分に実行できるTS命令を使用して、ロック用データ
構造体lock_dataのメンバlockの値をtrueにする。な
お、ステップ904は、危険領域の命令列を実行してい
る場合には、その危険領域の実行が終了するまで待つ処
理である。TS命令により、ステップ905からステッ
プ906の処理2またはステップ908の処理2までの
処理は、ただ一つのプロセッサで実行されることが保証
される。
【0030】ステップ905では、ロック用データ構造
体lock_dataのメンバlistが空か否かを判定し、空なら
(すなわち、他プロセスが待機していないなら)ステッ
プ906へ進み、空でないなら(すなわち、他プロセス
が待機しているなら)ステップ908へ進む。
体lock_dataのメンバlistが空か否かを判定し、空なら
(すなわち、他プロセスが待機していないなら)ステッ
プ906へ進み、空でないなら(すなわち、他プロセス
が待機しているなら)ステップ908へ進む。
【0031】ステップ906では、処理1で、ロック用
データ構造体lock_dataのメンバflagの値にNO_PROCESS
を設定する。処理2で、ロック用データ構造体lock_da
taのメンバlockの値をFALSE にする。ステップ907で
は、ロック解放406の呼び出し元に戻る。
データ構造体lock_dataのメンバflagの値にNO_PROCESS
を設定する。処理2で、ロック用データ構造体lock_da
taのメンバlockの値をFALSE にする。ステップ907で
は、ロック解放406の呼び出し元に戻る。
【0032】ステップ908では、処理1で、ロック用
データ構造体lock_dataのメンバlistから待機している
プロセスを一つ取り出す。処理2で、ロック用データ構
造体lock_dataのメンバlockの値をFALSE にする。ステ
ップ909では、処理1で、プロセス管理表117の前
記取り出したプロセスの実行状態203を“中断”から
“実行可能”に変更する。処理2で、実行可能プロセス
リスト118に前記取り出したプロセスのプロセス番号
を登録する。処理3で、ロック解放406の呼び出し元
に戻る。
データ構造体lock_dataのメンバlistから待機している
プロセスを一つ取り出す。処理2で、ロック用データ構
造体lock_dataのメンバlockの値をFALSE にする。ステ
ップ909では、処理1で、プロセス管理表117の前
記取り出したプロセスの実行状態203を“中断”から
“実行可能”に変更する。処理2で、実行可能プロセス
リスト118に前記取り出したプロセスのプロセス番号
を登録する。処理3で、ロック解放406の呼び出し元
に戻る。
【0033】図10は、新規ロック解放901の処理を
示すPAD図である。ステップ901aでは、ロック獲
得404のステップ808の処理2またはステップ81
2の処理2で設定したプロセス管理表117の割付プロ
セッサ番号206の値をクリアする。割付プロセッサ番
号206の値がクリアされると、対応するプロセスを任
意のプロセッサに割り付け可能となる。ステップ901
bでは、新規ロック解放901の呼び出し元に戻る。
示すPAD図である。ステップ901aでは、ロック獲
得404のステップ808の処理2またはステップ81
2の処理2で設定したプロセス管理表117の割付プロ
セッサ番号206の値をクリアする。割付プロセッサ番
号206の値がクリアされると、対応するプロセスを任
意のプロセッサに割り付け可能となる。ステップ901
bでは、新規ロック解放901の呼び出し元に戻る。
【0034】図11は、プロセス切り替え711の処理
を示すPAD図である。ステップ1003では、実行可
能プロセスリスト118からプロセスを一つ選択する。
このとき、実行可能プロセスリストの先頭のプロセスを
選択してもよいし、優先度を導入してその優先度の一番
高いプロセスを選択してもよい。なお、ステップ100
7から戻ってきてステップ1003を再実行したとき
は、先に選択したプロセス以外のプロセスを選択する。
を示すPAD図である。ステップ1003では、実行可
能プロセスリスト118からプロセスを一つ選択する。
このとき、実行可能プロセスリストの先頭のプロセスを
選択してもよいし、優先度を導入してその優先度の一番
高いプロセスを選択してもよい。なお、ステップ100
7から戻ってきてステップ1003を再実行したとき
は、先に選択したプロセス以外のプロセスを選択する。
【0035】ステップ1004では、選択したプロセス
のプロセス管理表117の割付プロセッサ番号206が
設定されているか否かを判定し、設定されている場合は
ステップ1005へ進み、設定されていない場合はステ
ップ1009へ進む。ステップ1005では、設定され
ている割付プロセッサ番号206と自プロセッサ(プロ
セス切り替え711を実行しているプロセッサ)の番号
が一致するか否かを判定し、一致した場合にはステップ
1009へ進み、一致しない場合にはステップ1007
へ進む。ステップ1007では、前記ステップ1003
に戻り、先に選択したプロセス以外のプロセスを選択す
る。
のプロセス管理表117の割付プロセッサ番号206が
設定されているか否かを判定し、設定されている場合は
ステップ1005へ進み、設定されていない場合はステ
ップ1009へ進む。ステップ1005では、設定され
ている割付プロセッサ番号206と自プロセッサ(プロ
セス切り替え711を実行しているプロセッサ)の番号
が一致するか否かを判定し、一致した場合にはステップ
1009へ進み、一致しない場合にはステップ1007
へ進む。ステップ1007では、前記ステップ1003
に戻り、先に選択したプロセス以外のプロセスを選択す
る。
【0036】ステップ1009では、処理1で、前記選
択したプロセスを実行可能プロセスリスト118から削
除する。処理2で、プロセス管理表117の前記選択し
たプロセスの実行状態203を“実行可能”から“実行
中”に変更する。処理3で、プロセス管理表117の前
記選択したプロセスのレジスタ退避領域204により自
プロセッサのレジスタに内容を復帰する。処理4で、前
記選択したプロセスの番号を実行中プロセス管理表11
6に登録する。処理5で、プロセス切り替え711の呼
び出し元に戻る。
択したプロセスを実行可能プロセスリスト118から削
除する。処理2で、プロセス管理表117の前記選択し
たプロセスの実行状態203を“実行可能”から“実行
中”に変更する。処理3で、プロセス管理表117の前
記選択したプロセスのレジスタ退避領域204により自
プロセッサのレジスタに内容を復帰する。処理4で、前
記選択したプロセスの番号を実行中プロセス管理表11
6に登録する。処理5で、プロセス切り替え711の呼
び出し元に戻る。
【0037】なお、上記プロセス切り替え711は、タ
イマー割り込み等が発生した時も呼び出される。その
時、タイマー割り込み発生を受け取ったプロセッサは、
実行中であったプロセスのレジスタ内容を退避し、その
プロセスの実行状態を“実行中”から“実行可能”に変
更し、そのプロセスを実行可能プロセスリストに登録し
た後、プロセス切り替え711を呼び出す。
イマー割り込み等が発生した時も呼び出される。その
時、タイマー割り込み発生を受け取ったプロセッサは、
実行中であったプロセスのレジスタ内容を退避し、その
プロセスの実行状態を“実行中”から“実行可能”に変
更し、そのプロセスを実行可能プロセスリストに登録し
た後、プロセス切り替え711を呼び出す。
【0038】以上のマルチプロセッサ計算機システム1
01によれば、共有データにアクセスする命令列505
をロック獲得404とロック解放406とで挟むと共に
ロック獲得404の第2引数でプロセッサ102(1)〜
102(N)を指定することにより、共有データにアクセ
スするプロセスを指定したプロセッサに割り付けること
が出来る。このため、キャッシュ103(1)〜103
(N)間での無駄なデータ転送がなくなり、システム全体
の実行効率を向上させることができる。
01によれば、共有データにアクセスする命令列505
をロック獲得404とロック解放406とで挟むと共に
ロック獲得404の第2引数でプロセッサ102(1)〜
102(N)を指定することにより、共有データにアクセ
スするプロセスを指定したプロセッサに割り付けること
が出来る。このため、キャッシュ103(1)〜103
(N)間での無駄なデータ転送がなくなり、システム全体
の実行効率を向上させることができる。
【0039】
【発明の効果】本発明のプロセッサ割付方法およびマル
チプロセッサ計算機システムによれば、共有データにア
クセスする複数のプロセスを同一のプロセッサに割り付
けるため、キャッシュ間の無駄なデータ転送がなくな
り、システム全体の実行効率を向上させることができ
る。
チプロセッサ計算機システムによれば、共有データにア
クセスする複数のプロセスを同一のプロセッサに割り付
けるため、キャッシュ間の無駄なデータ転送がなくな
り、システム全体の実行効率を向上させることができ
る。
【図1】本発明の一実施形態にかかるマルチプロセッサ
計算機システムのブロック図である。
計算機システムのブロック図である。
【図2】図1のマルチプロセッサ計算機システムのプロ
セス管理表の構成図である。
セス管理表の構成図である。
【図3】図1のマルチプロセッサ計算機システムの実行
中プロセス管理表の構成図である。
中プロセス管理表の構成図である。
【図4】ロック初期化、ロック獲得、ロック解放の各手
続きの説明図である。
続きの説明図である。
【図5】ロック初期化、ロック獲得、ロック解放の各手
続きを含むプログラム命令列の例示図である。
続きを含むプログラム命令列の例示図である。
【図6】ロック初期化手続きの処理を示すPAD図であ
る。
る。
【図7】ロック獲得手続きの処理を示すPAD図であ
る。
る。
【図8】新規ロック獲得手続きの処理を示すPAD図で
ある。
ある。
【図9】ロック解放手続きの処理を示すPAD図であ
る。
る。
【図10】新規ロック解放手続きの処理を示すPAD図
である。
である。
【図11】プロセス切り替え手続きの処理を示すPAD
図である。
図である。
101:マルチプロセッサ計算機システム、102:プ
ロセッサ、103:キャッシュ、104:2次記憶装
置、105:システム・バス、106:メインメモリ、
107:ロック初期化手続き格納領域、108:ロック
獲得手続き格納領域、109:ロック解放手続き格納領
域、110:ロック用データ格納領域、111:ロック
用変数格納領域、112:ロック獲得フラグ格納領域、
113:割付プロセッサ番号格納領域、114:待機プ
ロセスリスト、116:実行中プロセス管理表、11
7:プロセス管理表、118:実行可能プロセスリス
ト、119:プロセス切り替え手続き格納領域、40
2:ロック初期化手続き(命令)、404:ロック獲得
手続き(命令)、406:ロック解放手続き(命令)。
ロセッサ、103:キャッシュ、104:2次記憶装
置、105:システム・バス、106:メインメモリ、
107:ロック初期化手続き格納領域、108:ロック
獲得手続き格納領域、109:ロック解放手続き格納領
域、110:ロック用データ格納領域、111:ロック
用変数格納領域、112:ロック獲得フラグ格納領域、
113:割付プロセッサ番号格納領域、114:待機プ
ロセスリスト、116:実行中プロセス管理表、11
7:プロセス管理表、118:実行可能プロセスリス
ト、119:プロセス切り替え手続き格納領域、40
2:ロック初期化手続き(命令)、404:ロック獲得
手続き(命令)、406:ロック解放手続き(命令)。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 堀川 和雄 神奈川県川崎市幸区鹿島田890番地の12 株式会社日立製作所情報・通信開発本部内 (72)発明者 林 剛久 神奈川県川崎市幸区鹿島田890番地の12 株式会社日立製作所情報・通信開発本部内 (72)発明者 山田 公稔 神奈川県横浜市戸塚区戸塚町5030番地 株 式会社日立製作所ソフトウエア開発本部
Claims (3)
- 【請求項1】 複数のプロセッサとそれらプロセッサに
それぞれ対応するキャッシュとを有するマルチプロセッ
サ計算機システムにおけるプロセッサ割付方法であっ
て、 複数のプロセスが共有データにアクセスするとき、それ
らプロセスを同一のプロセッサに割り付けることを特徴
とするプロセッサ割付方法。 - 【請求項2】 複数のプロセッサとそれらプロセッサに
それぞれ対応するキャッシュとを有するマルチプロセッ
サ計算機システムにおけるプロセッサ割付方法であっ
て、 ある命令列の前に、プロセッサを指定しうる相互排除開
始命令を配置し、前記命令列の後に、プロセッサの指定
を解除しうる相互排除終了命令を配置し、前記相互排除
開始命令でプロセッサが指定されている場合、その指定
されたプロセッサにより前記相互排除開始命令と前記相
互排除終了命令で挟まれた前記命令列を実行し、前記相
互排除開始命令でプロセッサが指定されていない場合、
任意のプロセッサにより前記相互排除開始命令と前記相
互排除終了命令で挟まれた前記命令列を実行することを
特徴とするプロセッサ割付方法。 - 【請求項3】 複数のプロセッサとそれらプロセッサに
それぞれ対応するキャッシュとを有するマルチプロセッ
サ計算機システムにおいて、 相互排除開始命令によりプロセッサが指定されている場
合は、その指定されたプロセッサにより、前記相互排除
開始命令から後の命令を実行させ、相互排除終了命令を
実行すると、任意のプロセッサにより、前記相互排除終
了命令から後の命令を実行させるプロセッサ割付制御手
段を具備することを特徴とするマルチプロセッサ計算機
システム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8317496A JPH10161985A (ja) | 1996-11-28 | 1996-11-28 | プロセッサ割付方法およびマルチプロセッサ計算機システム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8317496A JPH10161985A (ja) | 1996-11-28 | 1996-11-28 | プロセッサ割付方法およびマルチプロセッサ計算機システム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10161985A true JPH10161985A (ja) | 1998-06-19 |
Family
ID=18088886
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8317496A Pending JPH10161985A (ja) | 1996-11-28 | 1996-11-28 | プロセッサ割付方法およびマルチプロセッサ計算機システム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH10161985A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7500036B2 (en) | 2000-12-28 | 2009-03-03 | International Business Machines Corporation | Quad aware locking primitive |
| WO2010137233A1 (ja) * | 2009-05-28 | 2010-12-02 | パナソニック株式会社 | マルチプロセッサシステムにおける省電力制御装置およびモバイル端末 |
-
1996
- 1996-11-28 JP JP8317496A patent/JPH10161985A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7500036B2 (en) | 2000-12-28 | 2009-03-03 | International Business Machines Corporation | Quad aware locking primitive |
| US7979617B2 (en) | 2000-12-28 | 2011-07-12 | International Business Machines Corporation | Quad aware locking primitive |
| WO2010137233A1 (ja) * | 2009-05-28 | 2010-12-02 | パナソニック株式会社 | マルチプロセッサシステムにおける省電力制御装置およびモバイル端末 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5502840A (en) | Method and apparatus for advising a requesting process of a contention scheme to employ to access a shared resource | |
| US5088031A (en) | Virtual machine file control system which translates block numbers into virtual addresses then into real addresses for accessing main storage | |
| US4914570A (en) | Process distribution and sharing system for multiple processor computer system | |
| US5239643A (en) | Method for reducing disk I/O accesses in a multi-processor clustered type data processing system | |
| JP3102495B2 (ja) | 仮想記憶管理方法 | |
| JP2633488B2 (ja) | 並列処理を実行する方法およびシステム | |
| JPH11505653A (ja) | 単一アドレス空間で保護ドメインと共に用いるためのオペレーティングシステム | |
| JPH05210637A (ja) | 同時アクセス管理方法 | |
| JPH05127995A (ja) | ローカルキヤツシユに共通のページ間の一貫性を確保する方法 | |
| US5317749A (en) | Method and apparatus for controlling access by a plurality of processors to a shared resource | |
| JPH01188965A (ja) | データ処理方法 | |
| JP2002268933A (ja) | クラスタシステム | |
| EP0319148A2 (en) | Method of operating a multi-processor system for the transfer of data between processor units | |
| JP2829115B2 (ja) | ファイル共用方法 | |
| JP2002202960A (ja) | データ処理方法および装置 | |
| JP3965784B2 (ja) | 共有メモリ排他アクセス制御方法 | |
| JPS5818708B2 (ja) | 共用アクセス多重プログラム型デ−タ処理システムにおいて情報を記憶しアクセスするための方法及び装置 | |
| WO2007088582A1 (ja) | 共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体 | |
| JP2003248620A (ja) | 動的メモリ管理方法及び動的メモリ管理情報処理装置 | |
| JP2787107B2 (ja) | バッファ制御方式及び装置 | |
| JP2517859B2 (ja) | 並列プロセス管理方法 | |
| CN118779126A (zh) | 一种进程间通信方法、装置、存储介质及电子设备 | |
| JP2535584B2 (ja) | 実記憶固定処理計算機 | |
| JP3978848B2 (ja) | データテーブルアクセス制御装置 | |
| JPH09218795A (ja) | 並列プログラム処理方法及びその装置 |