(57)【要約】【課題】マルチプロセッサにて共有メモリを共有するシステムの性能の向上を図ること。【解決手段】複数のプロセッサと、共有メモリと、上記プロセッサから発行された占有要求／占有解除要求を受け付けて、上記プロセッサ毎の上記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、上記プロセッサから発行された上記共有メモリに対する占有要求／占有解除要求を上記メモリ制御手段に通知するプロセッサ制御手段と、を備えたメモリ制御装置であって、上記メモリ制御手段は、上記プロセッサによる上記共有メモリの占有状態を上記プロセッサ制御手段に通知し、上記プロセッサ制御手段は、上記メモリ制御手段からの通知に基づいて上記共有メモリの占有状態を管理すると共に、当該共有メモリが所定の上記プロセッサに占有されている場合に、他の上記プロセッサから発行された上記共有メモリに対する占有要求の上記メモリ制御手段に対する通知を停止する。【選択図】図１
2010146431.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサと、
当該複数のプロセッサにて共有される共有メモリと、
前記プロセッサから発行された占有要求／占有解除要求を受け付けて、前記プロセッサ毎の前記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、
前記プロセッサから発行された前記共有メモリに対する占有要求／占有解除要求を前記メモリ制御手段に通知するプロセッサ制御手段と、を備え、
前記メモリ制御手段は、前記プロセッサによる前記共有メモリの占有状態を前記プロセッサ制御手段に通知し、
前記プロセッサ制御手段は、前記メモリ制御手段からの通知に基づいて前記共有メモリの占有状態を管理すると共に、当該共有メモリが所定の前記プロセッサに占有されている場合に、他の前記プロセッサから発行された前記共有メモリに対する占有要求の前記メモリ制御手段に対する通知を停止する、
メモリ制御装置。
【請求項２】
請求項１記載のメモリ制御装置であって、
前記メモリ制御手段は、前記共有メモリが前記所定のプロセッサに占有されているときに前記他のプロセッサから発行された占有要求が通知された場合に、当該他のプロセッサによる占有要求を却下して、前記プロセッサ制御手段に通知し、
前記プロセッサ制御手段は、前記メモリ制御手段からの通知に基づいて前記共有メモリが占有されている状態である場合に、占有要求が却下されている前記他のプロセッサから発行された占有要求の前記メモリ制御手段に対する通知を停止する、
メモリ制御装置。
【請求項３】
請求項２記載のメモリ制御装置であって、
前記メモリ制御手段は、前記プロセッサによる前記共有メモリの占有を解除したときに当該占有解除を前記プロセッサ制御手段に通知し、
前記プロセッサ制御手段は、前記メモリ制御手段からの通知に基づいて前記共有メモリの占有状態が解除されたときに、占有要求が却下されている前記他のプロセッサから発行された占有要求の前記メモリ制御手段に対する通知の停止を解除する、
メモリ制御装置。
【請求項４】
請求項３記載のメモリ制御装置であって、
前記メモリ制御手段は、前記各プロセッサから発行された占有要求の通知の有無を管理して、当該管理内容を表す占有要求管理情報を前記プロセッサ制御手段に通知し、
前記プロセッサ制御手段は、前記メモリ制御手段から通知された前記占有要求管理情報に基づいて、前記プロセッサ毎に当該プロセッサから発行された占有要求の前記メモリ制御手段に対する通知を行うか否か決定する、
メモリ制御装置。
【請求項５】
請求項４記載のメモリ制御装置であって、
前記メモリ制御手段は、占有要求が通知された前記プロセッサに対応するフラグをセットすると共に、前記共有メモリの占有解除を行った前記プロセッサに対応するフラグをリセットして、前記プロセッサ毎に設定された前記フラグを管理し、このフラグのセット合計数を前記占有要求管理情報として、前記プロセッサからの占有要求を却下したときに前記プロセッサ制御手段に通知し、
前記プロセッサ制御手段は、前記フラグのセット合計数を前記占有要求が却下されたプロセッサに対応して設定すると共に、前記メモリ制御手段から占有解除通知を受けたときに前記各プロセッサに対応して設定された前記フラグのセット合計数を減算し、当該フラグのセット合計数が少ない前記プロセッサから発行された占有要求を優先して前記メモリ制御手段に通知する、
メモリ制御装置。
【請求項６】
請求項５記載のメモリ制御装置であって、
前記プロセッサ制御手段は、前記メモリ制御手段から占有解除通知を受けたときに、前記フラグのセット合計数が「１」である前記プロセッサから発行された占有要求を優先して前記メモリ制御手段に通知する、
メモリ制御装置。
【請求項７】
データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサと、
当該複数のプロセッサにて共有される共有メモリと、
前記プロセッサから発行された占有要求／占有解除要求を受け付けて、前記プロセッサ毎の前記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、
前記プロセッサから発行された前記共有メモリに対する占有要求／占有解除要求を前記メモリ制御手段に通知するプロセッサ制御手段と、
を備えたメモリ制御装置の前記プロセッサ制御手段に、
前記メモリ制御手段から通知された前記プロセッサによる前記共有メモリの占有状態に基づいて当該共有メモリの占有状態を管理すると共に、当該共有メモリが所定の前記プロセッサに占有されている場合に、他の前記プロセッサから発行された前記共有メモリに対する占有要求の前記メモリ制御手段に対する通知を停止する処理、
を実現させるためのプログラム。
【請求項８】
請求項７記載のプログラムであって、
前記プロセッサ制御手段に、
前記メモリ制御手段が、前記共有メモリが前記所定のプロセッサに占有されているときに前記他のプロセッサから発行された占有要求が通知された場合に、当該他のプロセッサによる占有要求を却下して、占有失敗を通知してきた場合に、当該通知に基づいて、前記共有メモリが占有されている状態である場合に、前記占有要求が却下されている他のプロセッサから発行された占有要求の前記メモリ制御手段に対する通知を停止する処理、
を実現させるためのプログラム。
【請求項９】
データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサと、
当該複数のプロセッサにて共有される共有メモリと、
前記プロセッサから発行された占有要求／占有解除要求を受け付けて、前記プロセッサ毎の前記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、
前記プロセッサから発行された前記共有メモリに対する占有要求／占有解除要求を前記メモリ制御手段に通知するプロセッサ制御手段と、を備えたメモリ制御装置にて、
前記メモリ制御手段が、前記プロセッサによる前記共有メモリの占有状態を前記プロセッサ制御手段に通知し、
前記プロセッサ制御手段が、前記メモリ制御手段からの通知に基づいて前記共有メモリの占有状態を管理すると共に、当該共有メモリが所定の前記プロセッサに占有されている場合に、他の前記プロセッサから発行された前記共有メモリに対する占有要求の前記メモリ制御手段に対する通知を停止する、
メモリ制御方法。
【請求項１０】
請求項９記載のメモリ制御方法であって、
前記メモリ制御手段が、前記共有メモリが前記所定のプロセッサに占有されているときに前記他のプロセッサから発行された占有要求が通知された場合に、当該他のプロセッサによる占有要求を却下して、占有失敗を当該他のプロセッサを制御する前記プロセッサ制御手段に通知し、
前記プロセッサ制御手段が、前記メモリ制御手段からの通知に基づいて前記共有メモリが占有されている状態である場合に、前記占有要求が却下されている他のプロセッサから発行された占有要求の前記メモリ制御手段に対する通知を停止する、
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置にかかり、特に、マルチプロセッサにて共有する共有メモリを備えたメモリ制御装置に関する。
【背景技術】
【０００２】
システム性能の向上を図るべく、演算処理を行うプロセッサを複数装備したシステムがある。このようなマルチプロセッサシステムでは、各プロセッサがメモリを共有して使用している。そして、プロセッサが共有メモリを使用する際には、当該プロセッサが共有メモリを占有し、排他制御（占有：ロック）を行う。すると、この間、他のプロセッサが共有メモリにアクセスしても、当該共有メモリにはアクセスすることができない。このような制御を行う技術が、特許文献１，２に開示されている。
【０００３】
特許文献１，２では、共有メモリ内に排他制御フラグを格納する領域を設け、共有メモリを占有しているプロセッサの情報を記憶している。そして、この排他制御フラグの格納状況に応じて、プロセッサからの共有メモリのロック要求を制御している。
【０００４】
【特許文献１】特開平５−２５６９号公報
【特許文献２】特開平１１−２５９４３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献に開示の技術では、共有メモリのロック状態を制御するために参照する排他制御フラグが共有メモリ内に存在しているため、各プロセッサは、常に共有メモリに対してロック要求を発行する必要がある。つまり、共有メモリが所定のプロセッサに占有されている場合であっても、他のプロセッサが共有メモリを占有するには、定期的に共有メモリにロック要求を発行して当該共有メモリ内の排他制御フラグを参照しなければならず、メモリロックが実行可能となるよう待ち合わせなければならない。すると、このような状態ですでに共有メモリを占有している所定のプロセッサからアンロック要求が発行された場合であっても、他のプロセッサからのロック要求と競合する。そして、このような場合に、アンロック要求が調停で負けると、ロック取得期間が延長してしまい、他のプロセッサのロック取得が遅延しうる。その結果、システム性能が低下する、という問題が生じる。
【０００６】
このため、本発明の目的は、上述した課題である、マルチプロセッサにて共有メモリを共有するシステムの性能の向上を図ることができるメモリ制御を実現する、ことにある。
【課題を解決するための手段】
【０００７】
かかる目的を達成するため本発明の一形態であるメモリ制御装置は、
データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサと、
当該複数のプロセッサにて共有される共有メモリと、
上記プロセッサから発行された占有要求／占有解除要求を受け付けて、上記プロセッサ毎の上記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、
上記プロセッサから発行された上記共有メモリに対する占有要求／占有解除要求を上記メモリ制御手段に通知するプロセッサ制御手段と、を備え、
上記メモリ制御手段は、上記プロセッサによる上記共有メモリの占有状態を上記プロセッサ制御手段に通知し、
上記プロセッサ制御手段は、上記メモリ制御手段からの通知に基づいて上記共有メモリの占有状態を管理すると共に、当該共有メモリが所定の上記プロセッサに占有されている場合に、他の上記プロセッサから発行された上記共有メモリに対する占有要求の上記メモリ制御手段に対する通知を停止する、
という構成を採る。
【０００８】
また、本発明の他の形態であるプログラムは、
データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサと、
当該複数のプロセッサにて共有される共有メモリと、
上記プロセッサから発行された占有要求／占有解除要求を受け付けて、上記プロセッサ毎の上記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、
上記プロセッサから発行された上記共有メモリに対する占有要求／占有解除要求を上記メモリ制御手段に通知するプロセッサ制御手段と、
を備えたメモリ制御装置の上記プロセッサ制御手段に、
上記メモリ制御手段から通知された上記プロセッサによる上記共有メモリの占有状態に基づいて当該共有メモリの占有状態を管理すると共に、当該共有メモリが所定の上記プロセッサに占有されている場合に、他の上記プロセッサから発行された上記共有メモリに対する占有要求の上記メモリ制御手段に対する通知を停止する処理、
を実現させるためのプログラムである。
【０００９】
また、本発明の他の形態であるメモリ制御方法は、
データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサと、
当該複数のプロセッサにて共有される共有メモリと、
上記プロセッサから発行された占有要求／占有解除要求を受け付けて、上記プロセッサ毎の上記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、
上記プロセッサから発行された上記共有メモリに対する占有要求／占有解除要求を上記メモリ制御手段に通知するプロセッサ制御手段と、を備えたメモリ制御装置にて、
上記メモリ制御手段が、上記プロセッサによる上記共有メモリの占有状態を上記プロセッサ制御手段に通知し、
上記プロセッサ制御手段が、上記メモリ制御手段からの通知に基づいて上記共有メモリの占有状態を管理すると共に、当該共有メモリが所定の上記プロセッサに占有されている場合に、他の上記プロセッサから発行された上記共有メモリに対する占有要求の上記メモリ制御手段に対する通知を停止する、
という構成を採る。
【発明の効果】
【００１０】
本発明は、以上のように構成されることにより、共有メモリを占有しているプロセッサの占有解除を迅速に実行して、他のプロセッサによる共有メモリの占有遅延を抑制でき、システム性能の向上を図ることができる。
【発明を実施するための最良の形態】
【００１１】
＜実施形態１＞
本発明の第１の実施形態を、図１を参照して説明する。図１は、メモリ制御装置１の構成を示す機能ブロック図である。なお、本実施形態では、メモリ制御装置１の概略を説明する。
【００１２】
図１に示すように、本実施形態におけるメモリ制御装置１は、データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサ２，３と、当該複数のプロセッサ２，３にて共有される共有メモリ４と、上記プロセッサ２，３から発行された占有要求／占有解除要求を受け付けて、上記プロセッサ２，３毎の上記共有メモリ４に対する占有／占有解除を制御するメモリ制御手段５と、上記プロセッサ２，３から発行された上記共有メモリ４に対する占有要求／占有解除要求を上記メモリ制御手段５に通知するプロセッサ制御手段６と、を備えている。
【００１３】
そして、上記メモリ制御手段５は、上記プロセッサ２，３による上記共有メモリ４の占有状態を上記プロセッサ制御手段６に通知する機能を有している。さらに、上記プロセッサ制御手段６は、上記メモリ制御手段５からの通知に基づいて上記共有メモリ４の占有状態を管理すると共に、当該共有メモリ４が所定の上記プロセッサ２に占有されている場合に、他の上記プロセッサ３から発行された上記共有メモリ４に対する占有要求の上記メモリ制御手段に対する通知を停止する機能を有している。
【００１４】
また、上記メモリ制御装置１では、上記メモリ制御手段５は、上記共有メモリが上記所定のプロセッサに占有されているときに上記他のプロセッサから発行された占有要求が通知された場合に、当該他のプロセッサによる占有要求を却下して、上記プロセッサ制御手段に通知する、という機能を有している。そして、上記プロセッサ制御手段６は、上記メモリ制御手段からの通知に基づいて上記共有メモリが占有されている状態である場合に、占有要求が却下されている上記他のプロセッサから発行された占有要求の上記メモリ制御手段に対する通知を停止する、という機能を有している。
【００１５】
また、上記メモリ制御装置１では、上記メモリ制御手段５は、上記プロセッサによる上記共有メモリの占有を解除したときに当該占有解除を上記プロセッサ制御手段に通知する機能を有している。そして、上記プロセッサ制御手段６は、上記メモリ制御手段からの通知に基づいて上記共有メモリの占有状態が解除されたときに、占有要求が却下されている上記他のプロセッサから発行された占有要求の上記メモリ制御手段に対する通知の停止を解除する、という機能を有している。
【００１６】
また、上記メモリ制御装置１では、上記メモリ制御手段５は、上記各プロセッサから発行された占有要求の通知の有無を管理して、当該管理内容を表す占有要求管理情報を上記プロセッサ制御手段に通知する、という機能を有している。そして、上記プロセッサ制御手段６は、上記メモリ制御手段から通知された上記占有要求管理情報に基づいて、上記プロセッサ毎に当該プロセッサから発行された占有要求の上記メモリ制御手段に対する通知を行うか否か決定する、という機能を有している。
【００１７】
より具体的に、上記メモリ制御装置１では、上記メモリ制御手段５は、占有要求が通知された上記プロセッサに対応するフラグをセットすると共に、上記共有メモリの占有解除を行った上記プロセッサに対応するフラグをリセットして、上記プロセッサ毎に設定された上記フラグを管理し、このフラグのセット合計数を上記占有要求管理情報として、上記プロセッサからの占有要求を却下したときに上記プロセッサ制御手段に通知する、という機能を有している。そして、上記プロセッサ制御手段６は、上記フラグのセット合計数を上記占有要求が却下されたプロセッサに対応して設定すると共に、上記メモリ制御手段から占有解除通知を受けたときに上記各プロセッサに対応して設定された上記フラグのセット合計数を減算し、当該フラグのセット合計数が少ない上記プロセッサから発行された占有要求を優先して上記メモリ制御手段に通知する、という機能を有している。
【００１８】
そして、上記メモリ制御装置１では、上記プロセッサ制御手段６は、上記メモリ制御手段から占有解除通知を受けたときに、上記フラグのセット合計数が「１」である上記プロセッサから発行された占有要求を優先して上記メモリ制御手段に通知する、という機能を有している。
【００１９】
上記構成のメモリ制御装置１によると、まず、所定のプロセッサが共有メモリを占有することを要求する際には、占有要求をプロセッサ制御手段に発行する。そして、プロセッサ制御手段は、占有要求をメモリ制御手段に通知し、これを受けたメモリ制御手段は、先行する占有要求がないので、所定のプロセッサに共有メモリを占有させるよう制御する。その後、他のプロセッサから共有メモリの占有要求が発行されると、上記同様に、プロセッサ制御手段が占有要求をメモリ制御手段に通知する。このとき、メモリ制御手段は、先行する所定のプロセッサの占有要求があるので、他のプロセッサによる占有を行わず、占有失敗をプロセッサ制御手段及び他のプロセッサに通知する。つまり、メモリ制御手段は、共有メモリは占有されていることをプロセッサ制御手段に通知する。これに応じて、プロセッサ制御手段は、この通知に基づいて共有メモリが占有されていることを管理する。
【００２０】
その後、上述したように占有に失敗した他のプロセッサが、再度、共有メモリへの占有要求を発行すると、プロセッサ制御手段は、共有メモリが占有されているため、占有要求をメモリ制御手段に対して通知しない。一方で、所定のプロセッサから占有解除要求が発行されると、この占有解除要求をプロセッサ制御手段がメモリ制御手段に通知する。すると、メモリ制御手段は所定のプロセッサによる共有メモリの占有を解除し、プロセッサ制御手段に通知する。そして、プロセッサ制御手段は、共有メモリの占有が解除されているので、これまでメモリ制御手段に通知することを停止していた他のプロセッサから発行された占有要求の通知の停止を解除する。これにより、プロセッサ制御手段は、他のプロセッサからの占有要求をメモリ制御手段に通知し、これを受けたメモリ制御手段は、他のプロセッサが共有メモリを占有できるよう制御する。
【００２１】
以上のように、本発明によると、メモリ制御手段に占有要求が頻繁に通知されることを抑制することができ、先行して共有メモリを占有しているプロセッサから占有解除要求が発行された場合に、当該占有解除要求が他の要求と競合することを抑制することができる。その結果、迅速に共有メモリの占有解除を実行することができ、他のプロセッサによる共有メモリの占有遅延を抑制でき、システム性能の向上を図ることができる。
【００２２】
また、上述したメモリ制御装置のプロセッサ制御手段６は、メモリ制御用プログラムが組み込まれることで実現できる。
【００２３】
具体的に、本発明の他の形態であるメモリ制御用プログラムは、
データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサと、
当該複数のプロセッサにて共有される共有メモリと、
上記プロセッサから発行された占有要求／占有解除要求を受け付けて、上記プロセッサ毎の上記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、
上記プロセッサから発行された上記共有メモリに対する占有要求／占有解除要求を上記メモリ制御手段に通知するプロセッサ制御手段と、
を備えたメモリ制御装置の上記プロセッサ制御手段に、
上記メモリ制御手段から通知された上記プロセッサによる上記共有メモリの占有状態に基づいて当該共有メモリの占有状態を管理すると共に、当該共有メモリが所定の上記プロセッサに占有されている場合に、他の上記プロセッサから発行された上記共有メモリに対する占有要求の上記メモリ制御手段に対する通知を停止する処理、
を実現させるためのプログラムである。
【００２４】
そして、上記プログラムは、
上記プロセッサ制御手段に、
上記メモリ制御手段が、上記共有メモリが上記所定のプロセッサに占有されているときに上記他のプロセッサから発行された占有要求が通知された場合に、当該他のプロセッサによる占有要求を却下して、占有失敗を通知してきた場合に、当該通知に基づいて、上記共有メモリが占有されている状態である場合に、上記占有要求が却下されている他のプロセッサから発行された占有要求の上記メモリ制御手段に対する通知を停止する処理、
を実現させるためのプログラムである。
【００２５】
また、上述したメモリ制御装置１の作動により実行されるメモリ制御方法は、
データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサと、
当該複数のプロセッサにて共有される共有メモリと、
上記プロセッサから発行された占有要求／占有解除要求を受け付けて、上記プロセッサ毎の上記共有メモリに対する占有／占有解除を制御するメモリ制御手段と、
上記プロセッサから発行された上記共有メモリに対する占有要求／占有解除要求を上記メモリ制御手段に通知するプロセッサ制御手段と、を備えたメモリ制御装置にて、
上記メモリ制御手段が、上記プロセッサによる上記共有メモリの占有状態を上記プロセッサ制御手段に通知し、
上記プロセッサ制御手段が、上記メモリ制御手段からの通知に基づいて上記共有メモリの占有状態を管理すると共に、当該共有メモリが所定の上記プロセッサに占有されている場合に、他の上記プロセッサから発行された上記共有メモリに対する占有要求の上記メモリ制御手段に対する通知を停止する、
という構成を有する。
【００２６】
そして、上記メモリ制御方法では、
上記メモリ制御手段が、上記共有メモリが上記所定のプロセッサに占有されているときに上記他のプロセッサから発行された占有要求が通知された場合に、当該他のプロセッサによる占有要求を却下して、占有失敗を当該他のプロセッサを制御する上記プロセッサ制御手段に通知し、
上記プロセッサ制御手段が、上記メモリ制御手段からの通知に基づいて上記共有メモリが占有されている状態である場合に、上記占有要求が却下されている他のプロセッサから発行された占有要求の上記メモリ制御手段に対する通知を停止する、
という構成を有する。
【００２７】
上述した構成を有する、プログラム、又は、メモリ制御方法、の発明であっても、上記メモリ制御装置と同様の作用を有するために、上述した本発明の目的を達成することができる。
【００２８】
＜実施形態２＞
本発明の第２の実施形態を、図２乃至図１０を参照して説明する。図２は、マルチプロセッサシステムの構成を示すブロック図である。図３は、マルチプロセッサシステム内で設定されるフラグのデータ構造を示す図である。図４乃至図７は、マルチプロセッサシステムの動作を示す説明図である。図８乃至図１０は、マルチプロセッサシステムの動作を示すシーケンス図である。なお、本実施形態は、上述した実施形態１にて開示したメモリ制御装置の具体的な一例を示すものである。
【００２９】
［構成］
図２に示すように、本実施形態におけるマルチプロセッサシステムは、ＣＥＬＬカード１０，２０を１つ備えている。そして、一方のＣＥＬＬカード１０は、データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサ１４，１５，１６，１７と、当該複数のプロセッサ１４〜１７にて共有される共有メモリである記憶装置１０１と、を備えている。また、複数のプロセッサ１４〜１７にシステムバス１３を介して接続されたプロセッサ制御ユニット１２（プロセッサ制御手段）と、このプロセッサ制御ユニット１２に接続されたメモリ制御ユニット１１（メモリ制御手段）と、を備えている。そして、上記メモリ制御ユニット１１は、ロック要求管理フラグ１０２と上記記憶装置１０１とを備えている。また、上記プロセッサ制御ユニット１２は、再ロック発行管理フラグ１０３を備えている。
【００３０】
また、他方のＣＥＬＬカード２０も、上記一方のＣＥＬＬカード１０とほぼ同様の構成を採っている。つまり、ＣＥＬＬカード２０は、データを格納するメモリ領域を利用して演算処理を行う複数のプロセッサ２４，２５，２６，２７と、当該複数のプロセッサ２４〜２７にて共有される共有メモリである記憶装置２０１と、を備えている。また、複数のプロセッサ２４〜２７にシステムバス２３を介して接続されたプロセッサ制御ユニット２２（プロセッサ制御手段）と、このプロセッサ制御ユニット２２に接続されたメモリ制御ユニット２１（メモリ制御手段）と、を備えている。そして、上記メモリ制御ユニット２１は、ロック要求管理フラグ２０２と上記記憶装置２０１とを備えている。また、上記プロセッサ制御ユニット２２は、再ロック発行管理フラグ２０３を備えている。
【００３１】
また、上記２つのＣＥＬＬカード１０，２０は、それぞれが装備しているプロセッサ制御ユニット１２，２２同士を専用インタフェースで接続することで、相互に接続している。以下、各構成についてさらに詳述する。なお、ＣＥＬＬカード１０，２０は、それぞれほぼ同一の構成を採っているため、以下では、ＣＥＬＬカード１０の構成についてのみ説明し、ＣＥＬＬカード２０の構成についてはその説明を省略する。
【００３２】
まず、上記プロセッサ１４〜１７は、それぞれいずれかの記憶装置１０１，２０１に対して、メモリアクセスリクエストを発行する。例えば、プロセッサ１４は、記憶装置１０１のメモリ領域を使用して所定の処理を実行する際には、当該記憶装置１０１を占有することを要求するロック命令（占有要求）を発行する。また、プロセッサ１４は、記憶装置１０１を使用して所定の処理が終了した後には、当該記憶装置１０１の占有を解除するアンロック命令（占有解除要求）を発行する。さらに、プロセッサ１４は、後述するように記憶装置１０１に対するロック命令を発行したものの、メモリ制御ユニット１１からロック失敗が通知された場合には、その後、一定の間隔にてロック命令を発行し続けることとなる。
【００３３】
なお、各プロセッサ１４〜１７，２４〜２７は、いずれも自身が装備されていない他のＣＥＬＬカード１０，２０に装備されている記憶装置１０１，２０１に対しても、上述したロック命令及びアンロック命令を発行することができる。
【００３４】
上記プロセッサ制御ユニット１２は、プロセッサ１４〜１７からロック命令あるいはアンロック命令が発行されると、ロックあるいはアンロック対象となっている記憶装置１０１を装備したメモリ制御ユニット１１に通知する。また、プロセッサ制御ユニット１２は、他のＣＥＬＬカード２０に装備されたプロセッサ制御ユニット２２と接続し、カード１０，２０間におけるデータの送受信を可能としている。例えば、プロセッサ１４から発行されるロック／アンロック命令が他のカード２０に装備された記憶装置２０１に対する命令である場合には、当該他のカード２０に装備されたプロセッサ制御ユニット２２を経由してメモリ制御ユニット２１にロック／アンロック命令の送信を実行する。同様に、カード１０に装備されたメモリ制御ユニット１１からプロセッサ制御ユニット２２やプロセッサ２４に対して送信されるデータがある場合には、プロセッサ制御ユニット１２は、かかるデータを、プロセッサ制御ユニット２２に対して送信する。
【００３５】
また、上記メモリ制御ユニット１１は、上述したように、各プロセッサ１４〜１７，２４〜２７から発行されたロック／アンロック命令を受け付けて、当該各プロセッサ１４〜１７，２４〜２７に対する記憶装置１０１のロック（占有）／アンロック（占有解除）を制御する。このとき、システム全体で複数のプロセッサ１４からロック命令やアンロック命令が競合した場合には、これら命令の調停を行う。そして、メモリ制御ユニット１１は、ロック命令の競合を管理するために、ロック要求管理フラグ１０２を利用している。このロック要求管理フラグ１０２は、システム全体において競合対象となるプロセッサ１４〜１７，２４〜２７を判別できるフラグを保持するよう構成されている。
【００３６】
具体的に、ロック要求管理フラグ１０２は、図３（Ａ）に示すように、各プロセッサ単位で管理するよう構成されている。例えば、図３（Ａ）に示す例では、上段にはプロセッサの符号を設定しており、下段には上段のプロセッサに対応するフラグを設定可能となっている。そして、メモリ制御ユニット１１は、ロック命令が発行されるとそのプロセッサのフラグをセットし、アンロック命令が発行されるとリセットする。つまり、ロック要求管理フラグ１０２には、メモリ制御ユニット１１にて、ロック要求してきたプロセッサのフラグがセットされる。
【００３７】
そして、上記メモリ制御ユニット１１は、ロック命令を受け付けたときに、ロック要求管理フラグ１０２内のどのプロセッサのフラグも「０」である場合には、先行するロック命令がなく、記憶装置１０１がいずれかのプロセッサにロックされていない、と判断できる。この場合には、メモリ制御ユニット１１は、受け付けたロック命令に従って、かかる命令を要求してきたプロセッサに記憶装置１０１を占有させるようロック制御し、当該プロセッサのフラグを「１」にセットする。そして、その後、このプロセッサからアンロック命令を受け付けた場合には、メモリ制御ユニット１１は、アンロック命令を実行し、当該プロセッサのフラグを「０」にリセットする。さらに、メモリ制御ユニット１１がロック命令を受けた場合に、すでに他のプロセッサのフラグが「１」である場合には、記憶装置１０１がすでにセット（占有）されているため、ロック失敗を返却する。このとき、メモリ制御ユニット１１は、ロックは失敗したが、このロック要求をしてきたプロセッサのフラグを「１」にセットする。
【００３８】
また、メモリ制御ユニット１１は、上述したロック／アンロック制御の結果、つまり、記憶装置１０１のロック／アンロック状態（占有状態）を、各プロセッサ制御ユニット１２，２２に通知する。例えば、ロック成功時には、ロック要求してきたプロセッサに接続されたプロセッサ制御ユニットを介して、当該プロセッサにロック成功の旨を通知する。また、メモリ制御ユニット１１は、ロック失敗時には、ロック要求してきたプロセッサに接続されたプロセッサ制御ユニットを介して、当該プロセッサにロック失敗の旨を通知する。これに加えて、メモリ制御ユニット１１は、ロック要求管理フラグ１０２内でセットされているフラグの合計数（セット合計数）をプロセッサ制御ユニット１２，２２に通知する。つまり、メモリ制御ユニット１１は、上記ロック要求管理フラグ１０２を用いて、各プロセッサから発行された占有要求の通知の有無を管理して、当該管理内容を表すフラグ合計数つまりセット要求してきたプロセッサの台数、を占有要求管理情報として、プロセッサ制御ユニット１２，２２に通知する。
【００３９】
一方で、メモリ制御ユニット１１は、アンロック命令実行時には、アンロック要求してきたプロセッサに接続されたプロセッサ制御ユニットを介して、当該プロセッサにアンロック命令実行の旨を通知する。これに加えて、メモリ制御ユニット１１は、上述したフラグの合計数を減算する指令をプロセッサ制御ユニット１２，２２に通知する。
【００４０】
そして、上記プロセッサ制御ユニット１２，２２は、上述したように、再ロック発行管理フラグ１０３を備えている。このフラグ１０３は、プロセッサ１４〜１７が発行するロック命令が１度失敗した後、２回目のロック命令を発行するタイミングを管理するために用いられる。ここで、図３（Ｂ）に、再ロック発行管理フラグ１０３の構成の一例を示す。この図に示すように、再ロック発行管理フラグ１０３は、同一カード１０内に装備されたプロセッサ毎にデータを設定可能なよう構成されている。そして、この各プロセッサ毎のフラグ１０３には、対応するプロセッサがロック要求を行ったがロックが失敗したときにメモリ制御ユニット１１から通知される上記フラグ合計数が格納される。なお、図３（Ｃ）には、ＣＥＬＬカード２０に装備された再ロック発行管理フラグ２０３の構成を示しているが、この図に示すように、当該カード２０に装備されたプロセッサ２４〜２７毎に設定可能な構成となっている。
【００４１】
そして、上記プロセッサ制御ユニット１２は、上述したように、プロセッサのロック失敗の通知と共にメモリ制御ユニット１１からフラグの合計数を通知された場合には、このフラグの合計数を当該ロックが失敗したプロセッサに対応する再ロック発行管理フラグに設定する。また、メモリ制御ユニット１１からアンロック命令実行の旨及びフラグ合計数の減算通知があった場合には、全てのプロセッサに対応する再ロック発行管理フラグをそれぞれ「１」減算する。
【００４２】
さらに、プロセッサ制御ユニット１２は、上記再ロック発行管理フラグ１０３内の各プロセッサに対応するフラグ合計数の値に応じて、一度ロック要求が失敗しているプロセッサから発行された再ロック要求を、メモリ制御ユニット１１，１２に通知するか否かを制御している。具体的に、プロセッサ制御ユニット１２は、一度ロック要求に失敗しているプロセッサに設定されているフラグ合計数の値が「１」より大きい場合、つまり、「２」以上である場合には、当該フラグ合計数から記憶装置１０１が占有状態であることがわかるため、当該プロセッサから再ロック命令が発行されたとしても、メモリ制御ユニット１１，２１には通知しない。一方で、プロセッサ制御ユニット１２は、一度ロック要求に失敗しているプロセッサに設定されているフラグ合計数の値が「１」である場合には、当該フラグ合計数から記憶装置１０１が占有状態ではないことがわかるため、当該プロセッサから発行された再ロック命令をメモリ制御ユニット１１，２１に通知する。
【００４３】
なお、上述したメモリ制御ユニット１１及びプロセッサ制御ユニット１２が有する機能は、それぞれに所定のプログラムが組み込まれることによって実現される。また、上記では、主に一方のＣＥＬＬカード１０に装備された構成についてのみ説明したが、他方のＣＥＬＬカード２０も同様の構成を備えている。
【００４４】
［動作］
次に、上述した構成のマルチプロセッサシステムの動作を、図４乃至図１０を参照して説明する。以下では、ＣＥＬＬカード１０の記憶装置１０１に対して、ＣＥＬＬカード１０のプロセッサ１４と、ＣＥＬＬカード２０のプロセッサ２４と、からロック命令が発行され、メモリロック対象が記憶装置１０１であり、ロック命令が競合する場合の動作を説明する。
【００４５】
まず、プロセッサ１４からメモリロック命令が発行されると（図８のステップＳ１）、これを受けたプロセッサ制御ユニット１２は、メモリ制御ユニット１１にロック命令を発行する（図４の矢印Ｙ１、図８のステップＳ２）。これを受け付けたメモリ制御ユニット１１は、ロック要求管理フラグ１０２が全て「０」であるので、先行するメモリロック命令が無く、ロック成功とし、ロック成功時の処理を実施する（図８のステップＳ３）。このとき、ロック要求管理フラグ１０２のプロセッサ１４のフラグを、「１」にセットする（図８のステップＳ４）。また、プロセッサ制御ユニット１２及びプロセッサ１４には、ロック成功が返却される（図８のステップＳ５）。
【００４６】
続いて、プロセッサ１４からメモリロック命令が発行されると（図８のステップＳ６）、これを受けたプロセッサ制御ユニット２２は、プロセッサ制御ユニット１２を介してメモリ制御ユニット１１にロック命令を発行する（図４の矢印Ｙ２、図８のステップＳ７）。これを受け付けたメモリ制御ユニット１１は、ロック要求管理フラグ１０２を調べると、すでにフラグが「１」にセットされたプロセッサ１４が存在するため、先行のプロセッサ１４から発行されたロック命令があり、記憶装置１０１はロック状態であることが分かる。従って、プロセッサ２４からのロック命令は失敗とする（図８のステップＳ８）。このとき、プロセッサ２４からロック命令があったため、ロック要求管理フラグ１０２のプロセッサ２４に対応するフラグを、「１」にセットする（図８のステップＳ９）。さらに、メモリ制御ユニット１１は、プロセッサ制御ユニット１２を介してプロセッサ制御ユニット２２及びプロセッサ２４に、ロック失敗を返却すると共に、ロック要求管理フラグ１０２に設定されているフラグ合計数である値「２」を通知する（図４の矢印Ｙ３、図８のステップＳ１０）。
【００４７】
そして、これを受けたプロセッサ制御ユニット２２は、上記フラグ合計数である値「２」を、再ロック発行管理フラグ２０３内にプロセッサ２４に対応して設定する（図８のステップＳ１１）。これにより、プロセッサ制御ユニット２２は、２台のプロセッサからロック要求があったことがわかり、プロセッサ２４がロック要求を行う前に先行してロック要求を行ったプロセッサが１台存在して、ロック状態にある、ということがわかる。
【００４８】
その後、プロセッサ１４にて記憶装置１０１が占有状態にある場合であっても（図５の矢印Ｙ４）、ロック失敗の通知を受けたプロセッサ２４は、一定の間隔にて、記憶装置１０１に対する再ロック命令を発行する（図９のステップＳ２１）。ところが、これを受けたプロセッサ制御ユニット２２は、再ロック発行管理フラグ２０３のプロセッサ２４用のフラグに値「２」がセットされているため、再ロック命令を阻止する（図５の矢印Ｙ５、図９のステップＳ２２）。つまり、プロセッサ制御ユニット２２は、プロセッサ２４から発行された再ロック命令を、ＣＥＬＬカード１０のメモリ制御ユニット１１に通知することを停止する。この再ロック命令の阻止は、後述するように、フラグの値が「１」となるまで続くこととなる。
【００４９】
その後、記憶装置１０１とロック状態にあったプロセッサ１４が、ロック成功時の処理が完了すると、アンロック命令を発行する（図９のステップＳ３１）。これを受けたプロセッサ制御ユニット１２は、メモリ制御ユニット１１にアンロック命令を発行する（図６の矢印Ｙ６、図９のステップＳ３２）。このとき、上述したようにプロセッサ２４からの再ロック命令がメモリ制御ユニット１１に対して発行されていないので、アンロック命令は他の命令と競合せず、メモリ制御ユニット１１は、他の命令の処理を待つことなくアンロック命令を実行することができる（図９のステップＳ３３）。
【００５０】
そして、メモリ制御ユニット１１は、アンロック命令を実行すると、プロセッサ１４による記憶装置１０１の占有状態を解除し、ロック要求管理フラグ１０２のプロセッサ１４用のフラグを「０」にリセットする（図９のステップＳ３４）。また、メモリ制御ユニット１１は、プロセッサ制御ユニット１２及びプロセッサ１４、さらには、プロセッサ制御ユニット２２にアンロック通知を行う（図６の矢印Ｙ７、図９のステップＳ３５）。
【００５１】
続いて、プロセッサ制御ユニット２２は、メモリ制御ユニット１１からアンロック通知を受けたため、再ロック発行管理フラグ２０３に設定されている全てのプロセッサ用のフラグ合計数を、それぞれ「１」だけ減算する（図９のステップＳ３６）。すると、再ロック発行管理フラグ２０３のプロセッサ２４用のフラグの値は「１」となる。これにより、プロセッサ２４のみがロック要求を行っていることとなり、記憶装置１０１は他のプロセッサに占有されていない、ということがわかる。従って、プロセッサ制御ユニット２２は、プロセッサ２４からの再ロック命令の発行抑止を解除する。
【００５２】
その後、プロセッサ２４からロック命令が発行されると（図１０のステップＳ４１）、プロセッサ制御ユニット２２は、プロセッサ制御ユニット１２を経由してメモリ制御ユニット１１にロック命令を発行する（図７の矢印Ｙ８、図１０のステップＳ４２）。すると、すでに先行するメモリロック命令が完了した（無い）状態なので、記憶装置１０１に対するプロセッサ２４のロックが成功し、ロック成功時の処理を実施することになる（図１０のステップＳ４３）。このとき、既にロック要求管理フラグ１０２のプロセッサ２４のフラグは「１」のままである。また、プロセッサ制御ユニット１２及びプロセッサ１４に、ロック成功を返却する（図１０のステップＳ４４）。
【００５３】
その後、記憶装置１０１とロック状態にあったプロセッサ２４が、ロック成功時の処理が完了すると、アンロック命令を発行する（図１０のステップＳ４５）。これを受けたプロセッサ制御ユニット２２は、プロセッサ制御ユニット１２を介してメモリ制御ユニット１１にアンロック命令を発行する（図１０のステップＳ４６）。
【００５４】
そして、メモリ制御ユニット１１は、アンロック命令を実行して（図１０のステップＳ４７）、プロセッサ２４による記憶装置１０１の占有状態を解除し、ロック要求管理フラグ１０２のプロセッサ２４用のフラグを「０」にリセットする（図１０のステップＳ４８）。また、メモリ制御ユニット１１は、プロセッサ制御ユニット１２，２２及びプロセッサ２４にアンロック通知を行う（図１０のステップＳ４９）。
【００５５】
続いて、プロセッサ制御ユニット２２は、メモリ制御ユニット１１からアンロック通知を受けたため、再ロック発行管理フラグ２０３に設定されている全てのプロセッサ用のフラグ合計数を、それぞれ「１」だけ減算する（図１０のステップＳ５０）。
【００５６】
以上のように、本発明によると、メモリ制御ユニットに一度ロックを失敗しているプロセッサからの再ロック命令が、頻繁に通知されることを抑制することができる。従って、先行して記憶装置をロックしているプロセッサからアンロック命令が発行された場合であっても、当該アンロック命令が他の要求と競合することを抑制することができる。その結果、迅速に記憶装置のアンロックを実行することができ、他のプロセッサによる記憶装置のロック遅延を抑制でき、システム性能の向上を図ることができる。
【００５７】
なお、上記では、２つのプロセッサからロック命令が競合した場合を説明したが、３台以上のプロセッサからロック命令が発行された場合も同様である。このとき、ロック要求を行ったプロセッサの台数が増えるため、再ロック発行管理フラグ１０３，２０３に記憶される各プロセッサ毎の値は、ロック要求が遅くプロセッサほど大きな値となる。
【００５８】
例えば、プロセッサ１４，２４，２５の順にロック命令を発行した場合を考える。まず、プロセッサ１４がロックに成功すると、その後にロック命令を発行したプロセッサ２４，２５はロックに失敗する。そして、プロセッサ２４がロックに失敗した段階では、プロセッサ１４，２４といった２台のプロセッサがロック要求した状態であるため、プロセッサ２４用の再ロック発行管理フラグ２０３の値は、上述したように「２」となる。一方、プロセッサ２５がロックに失敗した段階では、プロセッサ１４，２４，２５といった３台のプロセッサがロック要求した状態であるため、プロセッサ２５用の再ロック発行管理フラグ２０３の値は、「３」となる。このような状態では、プロセッサ２４，２５からのロック命令は、メモリ制御ユニット１１には発行されない。
【００５９】
その後、プロセッサ１４がアンロックを行うと、各プロセッサ２４，２５用の再ロック発行管理フラグ２０３の値が「１」ずつ減算される。つまり、プロセッサ２４のフラグが「１」となり、プロセッサ２５のフラグが「２」となる。すると、次にプロセッサ２４からの再ロック要求が発行されると、このロック要求はメモリ制御ユニット１１に発行される。一方、プロセッサ２５からの再ロック命令は、メモリ制御ユニット１１には発行されない。その後、プロセッサ２４がアンロックを行うと、プロセッサ２５の再ロック発行管理フラグ２０３が「１」となるため、その後、プロセッサ２５がロックを行うことができる。
【００６０】
以上のように、上述した再ロック発行管理フラグの値を利用することで、プロセッサのロックの優先順位も管理することができる。
【産業上の利用可能性】
【００６１】
本発明は、複数のプロセッサで記憶装置を共有するマルチプロセッサシステムに利用することができ、産業上の利用可能性を有する。
【図面の簡単な説明】
【００６２】
【図１】実施形態１におけるメモリ制御装置の構成を示すブロック図である。
【図２】実施形態２におけるマルチプロセッサシステムの構成を示すブロック図である。
【図３】マルチプロセッサに格納される各種フラグのデータ構造を示す図である。
【図４】マルチプロセッサシステムの動作を示す説明図である。
【図５】マルチプロセッサシステムの動作を示す説明図である。
【図６】マルチプロセッサシステムの動作を示す説明図である。
【図７】マルチプロセッサシステムの動作を示す説明図である。
【図８】マルチプロセッサシステムの動作を示すシーケンス図である。
【図９】マルチプロセッサシステムの動作を示すシーケンス図である。
【図１０】マルチプロセッサシステムの動作を示すシーケンス図である。
【符号の説明】
【００６３】
１  メモリ制御装置
２，３  プロセッサ
４  共有メモリ
５  メモリ制御手段
６  プロセッサ制御手段
１０，２０  ＣＥＬＬカード
１１，２１  メモリ制御ユニット
１２，２２  プロセッサ制御ユニット
１４，１５，１６，１７，２４，２５，２６，２７  プロセッサ
１０１，２０１  記憶装置
１０２，２０２  ロック要求管理フラグ
１０３，２０３  再ロック発行管理フラグ
【図１】
2010146431.tif 000003
【図２】
2010146431.tif 000004
【図３】
2010146431.tif 000005
【図４】
2010146431.tif 000006
【図５】
2010146431.tif 000007
【図６】
2010146431.tif 000008
【図７】
2010146431.tif 000009
【図８】
2010146431.tif 000010
【図９】
2010146431.tif 000011
【図１０】
2010146431.tif 000012