以下、本発明の実施の形態について、図面を参照しながら説明する。
≪実施の形態1≫
<構成>
まず、実施の形態1に係る処理システム1000の構成について説明する。
図1は、実施の形態1に係る処理システム1000のシステム構成図である。
同図に示すとおり、処理システム1000は、共通バス101を介して相互に接続する計算機100A〜100Eと、各計算機と1対1に接続するメモリ110A〜110Eと、共通バス調停部102とから構成される。
なお、同図では、5つの計算機(100A〜100E)を図示しているが、これは一例であり、計算機の数は同図に示す例に限られず、2つ以上であればいくつでもよい。また、同図では各計算機は各メモリと1対1に接続する例を示しているが、2以上のメモリと接続していてもよい。これらの点については、以下の各実施の形態においても同様である。
ここで、共通バス101は、各計算機が共有データを授受するためのバスであり、共通バス調停部102は、共通バス101に共有データを出力しようとする各計算機からの共通バス101の使用要求を調停する機能を有する。
各メモリ(110A〜110E)は、接続先の計算機内の各プロセッサが用いるプログラムやデータを記憶するものであり、このデータには、接続先の計算機のみが使用するデータと、計算機間で共有する共有データとが含まれる。
各計算機(100A〜100E)は、1以上の他の計算機とデータを共有しながら所定の処理を実行する機能を有する。
各計算機は同様の構成を有するため、以下では、計算機100Aを例に説明する。
計算機100Aは、プロセッサ120A〜120Cと、調停部130と、出力管理部140と、入力管理部150と、選択部160と、メモリ制御部170とを備える。
ここで、各プロセッサ(120A〜120C)は、それぞれメモリ110Aに記憶されている既定のプログラムを実行することにより、メモリ110Aに記憶されているデータを用いて所定の処理を行うものであり、メモリ110Aにアクセスが必要な場合に、メモリアクセス要求信号を調停部130に送出する。
このメモリアクセス要求信号は、アクセス種別(読み出し又は書き込み)やアクセス対象となるメモリ110A上の格納領域のアドレスを指定する信号であり、特にアクセス種別が「書き込み」の場合には、書き込み対象データを含むものである。
調停部130は、各プロセッサによるメモリ110Aに対するアクセス要求を調停する機能を有し、具体的には、各プロセッサから受領した各メモリアクセス要求信号の中から1つのメモリアクセス要求信号を選んで出力管理部140に送出する。
なお、調停部130は、出力管理部140に送出するメモリアクセス要求信号が、メモリ110Aからデータを読み出すことを要求する読み出し要求信号(つまりアクセス種別が「読み出し」であるメモリアクセス要求信号)である場合には、その読み出し要求信号の送出と共に、その要求元であるプロセッサの識別情報を送出する。
以下、「メモリアクセス要求信号等」と表記する場合には、メモリアクセス要求信号が、読み出し要求信号である場合に、プロセッサの識別情報が含まれることを意味するものとして説明する。
出力管理部140は、調停部130から受領したメモリアクセス要求信号等を選択部160に送出すると共に、特に、このメモリアクセス要求信号が共有データに対する書き込みを要求する書き込み要求信号(つまりアクセス種別が「書き込み」であるメモリアクセス要求信号)である場合に、書き込み対象データ及びこのデータの識別情報等を共通バス101に出力する回路である。なお、この出力は、共通バス調停部102から共通バス101の使用権を得た後に行う。出力管理部140の構成(図2参照)については後に詳しく説明する。
入力管理部150は、他の計算機(100B〜100E)から共通バス101に出力された書き込み対象データの識別情報等に基づいて、出力された書き込み対象のデータが、自機が共有すべきデータであるか否かを判定し、判定結果に応じて、このデータのメモリ110Aに対する書き込み要求信号を選択部160に送出する回路である。なお、入力管理部150の構成(図3参照)については後に詳しく説明する。
選択部160は、出力管理部140から受領したメモリアクセス要求信号等と、入力管理部から受領した書き込み要求信号とを順次メモリ制御部170に送出する回路である。特に、両管理部から信号を受領した場合に、選択部160は、入力管理部150からのメモリアクセス要求信号を優先的にメモリ制御部170に送出する。つまり、この場合、プロセッサのメモリ110Aへのアクセスは待たされることになる。
メモリ制御部170は、選択部160から受領したメモリアクセス要求信号等、又は書き込み要求信号に基づいて、メモリ110Aにアクセスする機能を有する。
次に、出力管理部140の構成について説明する。
図2は、出力管理部140の機能ブロック図である。
同図に示すように、出力管理部140は、出力管理情報保持部141と、内部バス制御部142と、出力判定部143と、共通バス制御部144とを備える。
ここで、出力管理情報保持部141は、出力管理情報テーブル180(図4(a)参照)を記憶するためのメモリ領域である。出力管理情報テーブル180については後述する。
内部バス制御部142は、調停部130から受領したメモリアクセス要求信号を出力判定部143に送出する機能と、出力判定部143の指示に従って、受領しているメモリアクセス要求信号等を選択部160へ送出する機能と、このメモリアクセス要求信号に含まれる書き込み対象データを共通バス101に出力する機能とを有する。
出力判定部143は、出力管理情報保持部141の出力管理情報テーブル180に基づいて、内部バス制御部142から受領したメモリアクセス要求信号が共有データに対する書き込み要求信号であるか否かを判定し、判定結果に応じて、共通バス制御部144又は内部バス制御部142に所定の信号を送出する機能を有する。
より詳細には、メモリアクセス要求信号が共有データに対する書き込み要求信号である場合には、書き込み対象データの識別情報等を共通バス制御部144に送出し、共有データに対する書き込み要求信号でない場合には、メモリアクセス要求信号等の選択部160への送出を指示する信号を内部バス制御部142に送出する。
また、出力判定部143は、共通バス制御部144から後述する出力完了信号を受領した場合に、メモリアクセス要求信号の選択部160への送出及び書き込み対象データの共通バス101への出力を指示する信号を内部バス制御部142に送出する機能を有する。
共通バス制御部144は、出力判定部143から書き込み対象データの識別情報等を受領する毎に、共通バス調停部102から共通バス101の使用権を得て、この識別情報等を共通バス101に出力すると共に、この識別情報等を出力した旨の出力完了信号を出力判定部143に送出する機能を有する。
続いて、入力管理部150の構成について説明する。
図3は、入力管理部150の機能ブロック図である。
同図に示すように、入力管理部150は、入力管理情報保持部151と、入力判定部152と、内部バス制御部153とを備える。
ここで、入力管理情報保持部151は、入力管理情報テーブル190(図4(b)参照)を記憶するためのメモリ領域である。入力管理情報テーブル190については、後述する。
入力判定部152は、他の計算機(100B〜100E)から共通バス101に出力された書き込み対象データの識別情報等と、入力管理情報保持部151の入力管理情報テーブル190とに基づいて、共通バス101に出力された書き込み対象データが、自機が共有すべきデータであるか否かを判定する機能を有する。特に、書き込み対象データが、自機が共有すべきデータである場合に、入力判定部152は、アクセス種別(書き込み)及びこのデータを書き込むべきメモリ110A上のアドレスを指定するアクセスコマンド信号を生成し、内部バス制御部153に送出する。
内部バス制御部153は、入力判定部152からアクセスコマンド信号を受領すると、他の計算機から共通バス101に出力された書き込み対象データを受領し、この書き込み対象データと受領したアクセスコマンド信号とを含む書き込み要求信号を選択部160へ送出する機能を有する。
<データ>
各計算機により使用されるデータを、計算機100Aの場合を例に説明する。
<出力管理情報テーブル>
まず、出力管理情報テーブル180について説明する。
図4(a)は、出力管理情報テーブル180のデータ構成及び内容例を示す図である。
出力管理情報保持部141に記憶されている出力管理情報テーブル180は、同図に示すように、自機が他の計算機に対し送出すべき共有データ毎に、Valid181、Master ID182、Data ID183、Start Address184、End Address185を対応付けて構成される情報である。
以下、この相互に対応付けられたValidとMaster IDとData IDとStart AddressとStart Addressとをまとめて「出力管理情報」という。
出力管理情報テーブル180は、計算機内のプロセッサからのメモリアクセス要求信号が共有データに対するメモリアクセス要求信号であるか否かを出力判定部143が判定する際に用いられる。
ここで、Valid181は、そのValidを含む出力管理情報が有効か無効かを示す情報であり、この例では有効である場合を「1」、無効である場合を「0」としている。つまり、Validが「1」である出力管理情報に対応する共有データを共通バス101に送出することになる。
Master ID182は、対応する共有データを共通バス101へ送出する計算機の識別情報であり、以下では、一例として、計算機100A〜100EのMaster IDが「0」〜「4」であるものとして説明する。
ここでは、計算機100Aが保持する出力管理情報テーブル180の例を示しているため、全てのMaster IDが「0」になっている。他の計算機、例えば計算機100Bが保持する出力管理情報テーブル180では、全てMaster IDが「1」となる。
Data ID183は、対応する共有データの識別情報であり、他のData IDとは重複しないものである。
Start Address184とEnd Address185とはそれぞれ、対応する共有データが記憶されるメモリ110A上の格納領域の開始アドレスと終了アドレスを示す情報である。
同図は、例えば、メモリ110AにおいてStart Addressが「0x0000」で、End Addressが「0x00ff」である格納領域に格納されているデータは他の計算機に送出すべき共有データであり、そのData IDは「0」であり、このデータを共通バス101へ出力する計算機のMaster IDは「0」(つまり計算機100A)であることを示している。
以下、出力管理情報テーブル180へのデータの登録方法の一例を説明する。
出力管理情報テーブル180へのデータの登録は、まず、処理システム1000の運用開始前に行われる。
具体的には、処理システム1000における任意の計算機内の1つのプロセッサが、自機が接続するメモリに記憶されているプログラムを実行することにより、各計算機の出力管理情報テーブル180に登録すべき出力管理情報を生成し、各計算機を相互に接続するテーブル設定用のバス(不図示)を介して、各計算機の出力管理情報テーブル180に有効な出力管理情報(つまり、Validが「1」)を登録する。この出力管理情報の生成は、Master ID及びData IDの組み合わせが、他のMaster ID及びData IDの組み合わせと重複しないように行われる。
なお、各プロセッサ(120A〜120C)は、先に説明したように、メモリ110Aに記憶されている既定のプログラムを実行することで、このメモリ110Aに記憶されているデータを用いて所定の処理を行うものであるが、この既定のプログラムは、登録された有効な出力管理情報における格納領域(Start Address及びEnd Addressにより特定される)に格納されるデータを用いて所定の処理を行うように構成されている。
また、ある計算機において、何らかの要因により他の計算機との共有が不要になったデータが生じた場合には、その共有データに対応する登録済みの出力管理情報のValidを「0」に更新するだけで共有の設定を解除できる。また、再度そのデータの共有が必要になった場合には、対応する出力管理情報のValidを「1」に更新するだけで共有設定をすることができる。
<入力管理情報テーブル>
次に、入力管理情報テーブル190について説明する。
図4(b)は、入力管理情報テーブル190のデータ構成及び内容例を示す図である。
入力管理情報保持部151に記憶されている入力管理情報テーブル190は、同図に示すように、自機が他の計算機から受領すべき共有データ毎に、Valid191、Master ID192、Data ID193、Start Address194、End Address195を対応付けて構成される情報である。
以下、この相互に対応付けられたValidとMaster IDとData IDとStart AddressとStart Addressとをまとめて「入力管理情報」という。
入力管理情報テーブル190は、他の計算機によって共通バス101に出力された書き込み対象データを受領すべきか否かを入力判定部152が判定する際に用いられる。
なお、入力管理情報テーブル190と出力管理情報テーブル180とは同様のデータ構造を有しているため、各データの詳細な説明は省略するが、
他の計算機により共通バス101に出力された共有データのうち、Validが「1」である入力管理情報に対応する共有データが、メモリ110Aに記憶されることになる。
同図は、例えば、Master IDは「1」(つまり、計算機100B)であり、Data IDは「0」であるデータは、自機が他の計算機から受領すべき共有データであり、この共有データは、メモリ110AのStart Addressが「0x0000」で、End Addressが「0x007f」である格納領域に格納されることを示している。
なお、入力管理情報テーブル190へのデータの登録は、出力管理情報テーブル180と同様に行われるため詳細な説明は省略する。
<動作>
次に、上記構成を備え、上記データを取り扱う各計算機の動作を説明する。
<出力管理部の動作>
まず、出力管理部140による出力判定処理について説明する。
図5は、出力管理部140による出力判定処理を示すフローチャートである。
なお、以下のステップS100〜S108の処理は繰り返し実行されるものとする。
出力管理部140の出力判定部143は、内部バス制御部142を介して調停部130からメモリアクセス要求信号を受領したか否かを判定し(ステップS100)、受領していない場合には(ステップS100:NO)、何も行わず出力判定処理を終了する。
一方、メモリアクセス要求信号を受領した場合には(ステップS100:YES)、その信号が書き込み要求信号か否かを、その信号のアクセス種別に基づいて判定し(ステップS101)、書き込み要求信号である場合には(ステップS101:YES)、その書き込み要求が、他の計算機へ送出すべき共有データに対するものか否かを出力管理情報保持部141の出力管理情報テーブル180に基づいて判定する(ステップS102)。
より詳細には、受領した信号に含まれるメモリ110A上の書き込み先のアドレスが、出力管理情報テーブル180における有効(つまり、Validが「1」である)な出力管理情報のStart AddressとEndAddressとの範囲に含まれる場合にのみ肯定的な判定を行う。
例えば、書き込み先のアドレスが「0x0001」である場合に、このアドレスは、図4(a)に示す出力管理情報テーブル180において、Start Address「0x0000」とEndAddress「0x00ff」との範囲に含まれるので、肯定的な判定がなされることになる。また、書き込み先のアドレスが「0x0400」である場合には、このアドレスは、出力管理情報テーブル180における有効な出力管理情報のいずれのStart AddressとEndAddressとの範囲にも含まれないので、否定的な判定がなされることになる。
ステップS102において、書き込み要求が、他の計算機へ送出すべき共有データに対するものである場合には(ステップS102:YES)、出力判定部143は、出力管理情報テーブル180から、対応する共有データのMaster ID及びData IDを取得すると共に、その共有データのStart Addressに対する書き込み先のアドレスのオフセット(以下、単に「オフセット」という)を算出し、取得したMaster ID及びData IDと、算出したオフセットとを共通バス制御部144に送出する(ステップS103)。
例えば、上述の書き込み先のアドレスが「0x0001」である場合の例においては、Master ID「0」、Data ID「0」、オフセット「0x001」が共通バス制御部144に送出される。
続いて、Master ID等を受領した共通バス制御部144は、共通バス101の使用権を得るために、共通バス調停部102に共通バスアクセス要求信号を送出する(ステップS104)。この共通バスアクセス要求信号を受領した共通バス調停部102は、共通バス101に対しデータの送出を要求する各計算機からの要求を調停の上、この受領した共通バスアクセス要求信号の送信元である計算機に共通バス101の使用権を与える旨の共通バスアクセス許可信号を送信する。
ステップS104で共通バスアクセス要求信号を送出した共通バス制御部144は、共通バス調停部102から共通バスアクセス許可信号を受領したか否かを判定し(ステップS105)、受領していない場合には、再びステップS105の処理を行う。
一方、共通バスアクセス許可信号を受領した場合には(ステップS105:YES)、共通バス制御部144は、出力判定部143から受領しているMaster ID、Data ID、及びオフセットを共通バス101に出力すると共に、Master ID等を出力した旨の出力完了信号を出力判定部143に送出する(ステップS106)。
出力完了信号を受領した出力判定部143は、メモリアクセス要求信号の選択部160への送出及び書き込み対象データの共通バス101への出力を指示する信号を内部バス制御部142に送出する。この信号を受領した内部バス制御部142は、受領しているメモリアクセス要求信号に含まれる書き込み対象データを共通バス101に出力すると共に、選択部160にこのメモリアクセス要求信号を送出し(ステップS107)、出力判定処理を終了する。
一方、ステップS101において、読み出し要求信号である場合(ステップS101:NO)、又は、ステップS102において、書き込み要求が、他の計算機へ送出すべき共有データに対するものでない場合には(ステップS102:NO)、出力判定部143は、内部バス制御部142にメモリアクセス要求信号等の送出を指示する信号を送出し、これを受領した内部バス制御部142は、選択部160に受領しているメモリアクセス要求信号等を送出し(ステップS108)、出力判定処理を終了する。
<入力管理部の動作>
次に、入力管理部150による入力判定処理について説明する。
図6は、入力管理部150による入力判定処理を示すフローチャートである。
なお、以下のステップS110〜S115の処理は繰り返し実行されるものとする。
入力管理部150の入力判定部152は、他の計算機から共通バス101上にMaster ID等が出力されているか否かを判定し(ステップS110)、出力されていない場合には(ステップS110:NO)、何も行わず入力判定処理を終了する。
一方、Master ID等が出力されている場合には(ステップS110:YES)、入力判定部152は、出力されているMaster ID、Data ID、及びオフセットを受領する(ステップS111)。
入力判定部152は、受領したMaster ID及びData IDに基づいて、他の計算機から共通バス101に出力された書き込み対象のデータが、自機が受領すべき共有データであるか否かを判定する(ステップS112)。
より詳細には、入力管理情報保持部151の入力管理情報テーブル190を参照し、受領したMaster IDとData IDとを対応付けた入力管理情報が登録されている場合にのみ、肯定的な判定を行う。
例えば、受領したMaster IDが「1」、Data IDが「0」である場合には、図4(b)に示す入力管理情報テーブル190に該当の入力管理情報が登録されているので、肯定的な判定がなされることになる。また、例えば、受領したMaster IDが「1」でData IDが「2」である場合には、該当の入力管理情報が登録されていないので否定的な判定がなされることになる。
ステップS112において、自機が受領すべき共有データでない場合には(ステップS112:NO)、入力判定処理を終了し、自機が受領すべき共有データである場合には(ステップS112:YES)、入力判定部152は、アクセス種別(書き込み)及び書き込み先のアドレスを指定するアクセスコマンド信号を内部バス制御部153に送出する(ステップS113)。ここで、書き込み先のアドレスは、該当の入力管理情報に含まれるStart Addressに受領したオフセットを加えたものである。
アクセスコマンド信号を受領した内部バス制御部153は、共通バス101から、他の計算機により出力された書き込み対象データを受領し、この書き込み対象データと、受領しているアクセスコマンド信号とを含むメモリアクセス要求信号を選択部160に送出し(ステップS115)、入力判定処理を終了する。
<選択部及びメモリ制御部の動作>
次に、選択部160によるメモリアクセス要求信号の送出処理とメモリ制御部170によるメモリアクセス処理とについて説明する。
図7は、選択部160によるメモリアクセス要求信号の送出処理とメモリ制御部170によるメモリアクセス処理とを示すフローチャートである。
まず、選択部160の処理について説明する。
なお、以下のステップS120〜S124の処理は繰り返し実行されるものとする。
選択部160は、出力管理部140と入力管理部150との両方からメモリアクセス要求信号(入力管理部150については、特に書き込み要求信号である)を受領したか否かを判定し(ステップS120)、受領した場合には(ステップS120:YES)、まず、入力管理部150からのメモリアクセス要求信号をメモリ制御部170に送出する(ステップS121)。
次に、選択部160は、出力管理部140からのメモリアクセス要求信号等をメモリ制御部170に送出し(ステップS122)、メモリアクセス要求信号の送出処理を終了する。
一方、ステップS120において、出力管理部140と入力管理部150との両方からはメモリアクセス要求信号を受領していない場合には(ステップS120:NO)、選択部160は、出力管理部140と入力管理部150とのいずれか一方からメモリアクセス要求信号を受領しているか否かを判定する(ステップS123)。
いずれからもメモリアクセス要求信号を受領していない場合には(ステップS123:NO)、メモリアクセス要求信号の送出処理を終了し、いずれか一方からメモリアクセス要求信号を受領している場合には(ステップS123:YES)、受領したメモリアクセス要求信号等をメモリ制御部170に送出し(ステップS124)、メモリアクセス要求信号の送出処理を終了する。
次に、メモリ制御部170の処理について説明する。
なお、以下のステップS130、S131の処理は繰り返し実行されるものとする。
メモリ制御部170は、選択部160が送出したメモリアクセス要求信号(上述のステップS121、S122、S124で送出したもの)を受領したか否かを判定し(ステップS130)、受領していない場合には(ステップS130:NO)、何も行わずメモリアクセス処理を終了する。
一方、メモリアクセス要求信号を受領した場合には(ステップS130:YES)、そのメモリアクセス要求信号に従って、自機が接続するメモリに対してデータの読み出し又は書き込みを行い(ステップS131)、メモリアクセス処理を終了する。なお、ステップS131において、メモリアクセス要求信号が読み出し要求信号である場合には、メモリ制御部170は、受領しているプロセッサの識別情報に基づいて、該当するプロセッサに読み出したデータを送出する。
<適用例1>
まず、実施の形態1に係る処理システム1000を、MPEG(Moving Picture Experts Group)のデコード機能を有するデジタル放送受信器1000Aに適用した例を説明する。
<構成>
図8は、適用例1に係るデジタル放送受信器1000Aの構成図である。
同図に示すように、デジタル放送受信器1000Aは、処理システム1000のほか、アンテナ、チューナ、スピーカ、モニタ等を含んで構成される。
なお、以下では、説明を簡略化するために、各計算機は1つのプロセッサ120Aのみを備えるものとすると共に、共通バス調停部102による共通バス101の使用権の調停処理については、ここでは特に言及しないものとする(同図においても省略している)。
ここで、各計算機(100A〜100E)内のプロセッサ120Aが、自機が接続するメモリ(110A〜110E)の固有領域(共有データ以外が記憶された格納領域であって、同図の各メモリにおける網掛け部分がこの領域に該当する)に記憶されているプログラムを実行することにより、各計算機は、以下の機能を実現する。
即ち、計算機100Aは、アンテナからチューナを介して受信したMPEGストリーム(符号化ストリーム)から、AudioデータとVideoデータとを切り出し、Audioデータのデコード処理と、デコードされたAudioデータをスピーカに出力させる処理を行う機能を有する。
計算機100B〜100Dそれぞれは、計算機100Aが切り出したVideoデータのデコード処理を行う機能を有する。
一般的に、Videoデータのデコード処理は Audioデータのデコード処理と比較して演算量及び処理データ量が多い。従って、本適用例では、3つの計算機100B〜100Dが、Videoデータのデコード処理を分担して行うこととしている。具体的には、図9に示すように、1つの画像(フレーム)を垂直方向に3等分したV1領域を計算機100Bが、V2領域を計算機100Cが、V3領域を計算機100Dがそれぞれデコードする。
計算機100Eは、計算機100B〜100Dによるデコード済みのVideoデータをモニタに表示させる機能を有する。
<各メモリ上のデータ>
次に、図8に基づいて、各メモリに格納されるデータについて説明する。
同図の各メモリの左側に表記されている0及びアルファベットは、各メモリにおけるアドレス値を示している。例えば、メモリ110Aにおいては、StAの格納領域は0〜a−1番地であることを示している。なお、この適用例では、各メモリの「0」番地から各データを格納するものとして説明しているが、これは一例であり、任意のアドレスに各データを格納してもよい。これらの点については、以降の各適用例においても同様である。
メモリ110AにおけるStAは、計算機100Aが受信したMPEGストリームから切り出したAudioデータであり、DecAは、計算機100AがStAをデコードした結果であるデコード後のAudioデータである。
また、メモリ110AにおけるStV1、StV2、StV3それぞれは、計算機100Aが受信したMPEGストリームから切り出したVideoデータを各領域(V1〜V3領域)に対応するように分割した分割Videoデータである。
計算機100B〜100Dはこの分割Videoデータに対してデコード処理を行うので、計算機100B〜100Dは、自機が処理する分割Videoデータを計算機100Aと共有する必要がある。従って、同図に示すように、メモリ110BにはStV1が、メモリ110CにはStV2が、メモリ110DにはStV3が格納される。
また、メモリ110BにおけるDecV1は、計算機100Bがメモリ110BにおけるStV1をデコードした結果であるデコード後の分割Videoデータを示している。また、メモリ110CにおけるDecV2及びメモリ110DにおけるDecV3も、計算機100C、100DそれぞれがStV2、StV3をデコードした結果であるデコード後の分割Videoデータを示している。
計算機100Eは、これらのデコード後の分割Videoデータに基づいてモニタへの表示を行うので、これらの分割Videoデータを計算機100B〜100Dと共有する必要がある。従って、同図に示すように、メモリ110EにはDecV1、DecV2、DecV3が格納される。
また、一般的に、MPEGにおけるVideoストリームのデコード処理では、動き補償処理やデブロックフィルタ処理などのために、デコード済みの画像データの参照が必要になる。
従って、上述のように、1つの画像を3つの領域(V1〜V3領域)に分割して3つの計算機100B〜100Dが分担してデコードする場合には、他の計算機によるデコード済みの画像の参照が必要、つまり、3つの計算機100B〜100Dの間では、デコード済み画像のデータ共有が必要になることがある。
ここで、計算機100B〜100Dそれぞれが分担している領域(V1〜V3領域)をデコードする際に、どの範囲のデコード済み画像を参照する必要があるかは、一般的に、符号化の際に指定されたプロファイルとレベルで規定される動きベクトルの最大値により決定されるが、ここでは説明の簡略化のため、隣接する全ての領域の分割画像を参照すると仮定して説明を行う。
このため、同図に示すように、メモリ110BにはDecV2が、メモリ110CにはDecV1及びDecV3が、メモリ110CにはDecV2が格納される。
<管理情報テーブル>
次に、各計算機が保持する出力管理情報テーブル180と入力管理情報テーブル190の内容例を説明する。
図10は、適用例1に係る各計算機における出力管理情報テーブル180の内容例を示す図である。
例えば、同図に示す計算機100Aにおける出力管理情報テーブル180の出力管理情報186は、メモリ110Aにおいて、Start Addressが「a」で、End Addressが「b−1」である格納領域に格納されている共有データ(つまり、StV1)のData IDは「0」であり、この共有データを送信する計算機のMaster IDは「0」(つまり計算機100A)であることを示している。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100Aは、StV1、StV2、StV3それぞれをメモリ110Aに書き込む際に、これらのデータを、対応するMaster ID等と共に共通バス101に出力することになる。
また、計算機100Bは、DecV1をメモリ110Bに、計算機100CはDecV2をメモリ110Cに、計算機100DはDecV3をメモリ110Dにそれぞれ書き込む際に、これらのデータを、対応するMaster ID等と共に共通バス101に出力することになる。
図11は、適用例1に係る各計算機における入力管理情報テーブル190の内容例を示す図である。
例えば、同図に示す計算機100Bにおける入力管理情報テーブル190の入力管理情報196は、Master IDは「0」(つまり、計算機100A)であり、Data IDは「0」であるデータ(つまり、StV1)は自機が他の計算機から受領すべき共有データであり、この共有データは、メモリ110BのStart Addressが「0」で、End Addressが「f−1」である格納領域に格納されることを示している。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100Bは、共通バス101にStV1が出力されるとこれをメモリ110Bの対応する領域(0〜f−1番地)に書き込み、同様にDecV2が出力されると、メモリ110Bの対応する領域に書き込むことになる。
また、同様に、計算機100Cは、共通バス101にStV2、DecV1、DecV3が出力されると、計算機100Dは、StV3、DecV2が出力されると、計算機100Eは、DecV1、DecV2、DecV3が出力されるとこれらをそれぞれのメモリの対応する領域に書き込むことになる。
上述のように各計算機における出力管理情報テーブル180及び入力管理情報テーブル190を設定することにより、各計算機が処理に必要になる共有データのみを、共有データの同一性を保ちつつ、各メモリに保持することができる。
<従来との比較>
以下、従来の方法(特許文献1等の方法)により各計算機がデータを共有するデジタル放送受信器10Aにおいて、各メモリに保持されるデータを説明する。
図12は、従来の方法により各計算機がデータを共有するデジタル放送受信器10Aの構成図である。
同図に示す計算機6A〜6Eの機能は、上述の計算機100A〜100Eと同様であり、メモリ7A〜7Eも上述のメモリ110A〜110Eと同様のメモリである。
従来の方法では、システム全体で必要となる全ての共有データを全てのメモリに格納するので、同図に示すように、システム全体の共有データ(StV1、StV2、StV3、DecV1、DecV2、DecV3)が各メモリに格納される。
その結果、各メモリは、接続先の計算機が使用しないデータにより、格納領域が無駄に消費されることになる。例えば、メモリ7Bは、計算機6Bが使用しないStV2、StV3、DecV3により、格納領域が無駄に消費されている。
また、例えば、計算機6AがStV2をメモリ7Aに書き込む際に、このStV2が各メモリに書き込まれることになるので、各メモリに対する接続先の計算機からのアクセスと競合が生じる可能性が高まる。
一方、上述の適用例1に係るデジタル放送受信器1000Aにおいては、
各計算機は、必要なデータのみを各メモリに格納するので、領域が無駄に消費されることはなく(図8参照)、かつ無駄なアクセス競合も生じない。
<適用例2>
次に、実施の形態1で説明した各計算機間のデータ共有方法を、上述のデジタル放送受信器1000Aにおける各計算機の同期制御に適用した例を説明する。
ここでの同期制御とは、複数の計算機に対して一斉に特定の処理を行わせることにより、システム全体を制御することをいう。デジタル放送受信器1000Aにおける同期制御の例としては、各計算機にチャンネル切り替えに伴うデコードストリームの切り替え処理や、ストリームのエラーによるピクチャスキップ、バッファフラッシュ等のエラーコンシールメント処理などを一斉に行わせることが挙げられる。
<各メモリ上のデータ>
まず、各メモリに格納されるデータについて説明する。
図13(a)は、適用例2に係るデジタル放送受信器1000Aの各メモリにおけるデータ配置を示す図である。
なお、上述の適用例1に係るデジタル放送受信器1000Aは、5つの計算機(100A〜100E)を備えるものとして説明したが、以下では、4つの計算機100A〜100Dを備えるものとして説明する。
ここで、メモリ110B〜110DにおけるStatus flag1〜3はそれぞれ、接続先の計算機100B〜100Dにおける同期処理の実行状態を示すフラグであり、この例では、実行していない状態を「0」、実行中の状態を「1」として説明する。各計算機はそれぞれStatus flag1〜3が「0」から「1」に更新されることで同期処理を開始し、同期処理を完了すると、「1」から「0」に更新する。
また、メモリ110AにおけるStart flagは、各計算機に同期処理を開始させるための起動フラグであり、End flag1〜3それぞれは、計算機100B〜100Dにおける同期処理の実行状態を示すフラグであり、この例では、実行していない状態を「0」、実行中の状態を「1」として説明する。
なお、各フラグは「0」又は「1」の値を取るものとして説明しているが、これは一例であり、他の値であってもよい。
<管理情報テーブル>
次に、各計算機が保持する出力管理情報テーブル180と入力管理情報テーブル190の内容例を説明する。
図14(a)は、適用例2に係る各計算機における出力管理情報テーブル180の内容例を示す図である。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100Aは、Start flagを書き込む際に、このStart flagを、対応するMaster ID等と共に共通バス101に出力することになる。
また、計算機100B〜100Dは、それぞれStatus flag1〜3を書き込む際に、これらのデータを、対応するMaster ID等と共に共通バス101に出力することになる。
図14(b)は、適用例2に係る各計算機における入力管理情報テーブル190の内容例を示す図である。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100B、100C、100Dは、共通バス101にStart flagが出力されるとこれを受領し、メモリ110BのStatus flag1の領域に、メモリの110CのStatus flag2の領域に、メモリ110DのStatus flag3の領域にそれぞれ書き込むことになる。
また、計算機100Aは、計算機100B、100C、100DからそれぞれStatus flag1、2、3が出力されるとこれを受領し、それぞれをメモリ110AのEnd flag1、2、3の格納領域に書き込むことになる。
<動作>
以下、各計算機の動作を具体的に説明する。
図15は、適用例2に係る各計算機の動作を説明するための図である。
なお、同図では、データの流れを矢印で示し、各メモリ内のデータのうち、書き込まれたデータを太字で表記している。これは、以下の各適用例においても同様である。
計算機100Aは、計算機100B〜100Dに同期処理を実行させる必要が生じた場合に、まず、メモリ110Aに格納されているEnd flag1〜3が「0」であること、つまり、計算機100B〜100Dが同期処理を実行中でないことを確認する(同図(a)参照)。
続いて、計算機100Aは、計算機100B〜100Dに同期処理を開始させるために、メモリ110AのStart flagの格納領域に「1」を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にStart flag「1」を出力する(Master ID「0」、Data ID「0」等も共に出力する)。
なお、計算機100Aは、メモリ110AのEnd flag1〜3の各領域に「1」を書き込んでおく。
計算機100B〜100Dそれぞれは、共通バス101に出力されているMaster ID「0」、Data ID「0」と、自機が記憶する入力管理情報テーブル190とに基づいて、このStart flag「1」を受領する判定を行い、メモリ110B〜110DのStatus flag1〜3の各領域に「1」を書き込む(同図(b)参照)。
この書き込みにより、計算機100B〜100Dそれぞれは同期処理を開始する。計算機100B〜100Dそれぞれは同期処理が完了するとメモリ110B〜110DのStatus flag1〜3に「0」を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にそれぞれを出力する(上記同様に出力したデータに対応するMaster ID、DataID等が共に出力される)。
計算機100Aは、共通バス101に出力されているMaster ID、Data IDと、自機が記憶する入力管理情報テーブル190とに基づいて、このStatus flag1〜3を受領する判定を行い、メモリ110AのEnd flag1〜3の領域に書き込む(同図(c)参照)。
最後に計算機100Aは、メモリ110Aに格納されているEnd flag1〜3が「0」であること、つまり、計算機100B〜100Dが同期処理が完了したことを確認する。
<従来との比較>
図13(b)は、従来方式によりデータを共有するデジタル放送受信器10Aにおける各計算機に同期処理を行わせる場合の各メモリにおけるデータ配置を示す図である。
これと比較して、デジタル放送受信器1000Aは、同図(a)に示すように、各メモリの格納領域に無駄が生じておらず、また、無駄な書き込みが行われないので、無駄なアクセス競合が生じないといえる。
また、各計算機において、上述のように出力管理情報テーブル180及び入力管理情報テーブル190を設定することにより、計算機100AによるStart flag「1」のメモリ110Aへの書き込みにより、複数の計算機100B〜100Dにおいて同時に同期処理を開始することができ、かつ、計算機100B〜100Dそれぞれが出力するStatus flag1〜3によって、計算機100Aは各計算機における同期処理の完了を知ることができるので、容易に同期制御を実現できる。
なお、この適用例では、計算機100Aが、他の全ての計算機(100B〜100D)に同期処理を行わせる例を説明したが、一部の計算機のみに同期処理を行わせることも可能である。
例えば、計算機100Bと100Cのみに同期処理を行わせ、計算機100Dには行わせない場合には、計算機100Dが保持する入力管理情報テーブル190におけるStatus flag3についての入力管理情報を無効にすればよい(Validを「0」に設定する)。
また、この適用例では、計算機100Aが、他の全ての計算機(100B〜100D)に同じタイミングで同期処理を開始させる例を説明したが、異なるタイミングで開始させることも可能である。
例えば、計算機100Bと100Cとには同じタイミングT1で、計算機100Dはこれとは異なるタイミングT2で同期処理を開始させる場合に、計算機100Aは、タイミングT1用のStart flag1と、タイミングT2用のStart flag2をメモリ110Aに格納するようにし、それぞれを「1」に更新したときに共通バス101に出力するように、計算機100Aの出力管理情報テーブル180を設定しておく。
また、計算機100Bと100CとはStart flag1を受領するように、計算機100Dは、Start flag2を受領するようにそれぞれの入力管理情報テーブル190を設定しておく。なお、計算機100B〜100Dが行う同期処理の内容は同一であっても異なってもよいのはもちろんである。
<適用例3>
次に、実施の形態1に係る処理システム1000を、各計算機が他の計算機の処理結果を用いて処理を行う連携処理システムに適用した例を説明する。
なお、処理システム1000は、5つの計算機(100A〜100E)を備えるものとして説明したが、本適用例に係る連携処理システムは、4つの計算機100A〜100Dを備えるものとして説明する。
<連携処理の流れ>
図16は、適用例3における連携処理の流れを説明するための図である。
同図に示すように、本連携処理は、処理A、処理B、処理C、処理Dの順で行われる。ここで、処理B〜処理Dは、1つ前に行われた処理の結果(Data0〜2)を用いて行われる。
なお、以下では、処理A〜Dを、それぞれ計算機100A〜100Dが行うものとして説明する。また、計算機100Dによる処理Dが完了すると、計算機100Aは、次の処理Aを開始するものとする。
<各メモリ上のデータ>
図17(a)は、適用例3に係る各メモリのデータ配置を示す図である。
ここで、各メモリにおけるStatus0〜3は、各計算機に対応する処理を開始させるための起動フラグであり、各計算機は、このフラグが自機のMaster IDと一致する場合に対応する処理を開始し、その処理が完了すると次の処理を行う計算機のMaster IDを書き込む。
また、各メモリにおけるData0〜3はそれぞれ、処理A〜Dにより生成されるデータであり、図16に示す各データ(Data0〜3)に対応する。
<管理情報テーブル>
図18(a)は、適用例3に係る各計算機の出力管理情報テーブル180の内容例を示す図である。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100A〜100Dは、Status0〜3及びData0〜2を各メモリに書き込む際に、これらを、対応するMaster ID等と共に共通バス101に出力する。
図18(b)は、適用例3に係る各計算機の入力管理情報テーブル190の内容例を示す図である。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100A〜100Cは、自機が行う処理の前後の処理を行う計算機から出力されるStatusを、それぞれメモリ110A〜110CのStatus0〜2の領域に書き込むことになる。また、計算機100Dは、自機が行う処理Dの前の処理Cを行う計算機100Cから出力されるStatus2を、メモリ110DのStatus3の領域に書き込むことになる。
また、計算機100B〜100Dは、自機が行う処理の前に処理を行う計算機から出力されるDataをそれぞれメモリ110B〜110DのData1〜3の領域に書き込むことになる。
<動作>
図19は、適用例3に係る各計算機の動作を説明するための図である。
まず、計算機100Aは、メモリ110AのStatus0の領域を参照し、Status0が自機のMaster ID「0」と一致する場合に、処理Aを開始する(同図(a)参照)。
計算機100Aは、処理Aを完了すると、メモリ110Aの該当領域にData0を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にData0を出力する(Master ID「0」、Data ID「1」等も共に出力する)。
計算機100Bは、共通バス101に出力されているMaster ID「0」、Data ID「1」と、自機が記憶する入力管理情報テーブル190とに基づいて、このData0を受領する判定を行い、メモリ110BのData1の領域に、Data0を書き込む。
その後、計算機100Aは、メモリ110AのStatus0の領域に「1」を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にStatus0「1」を出力する(Master ID「0」、Data ID「0」等も共に出力する)。
計算機100Bは、共通バス101に出力されているMaster ID「0」、Data ID「0」と、自機が記憶する入力管理情報テーブル190とに基づいて、このStatus0「1」を受領する判定を行い、メモリ110BのStatus1の領域に「1」を書き込む(同図(b)参照)。
この結果、計算機100Bは、Status1が自機のMaster ID「1」と一致するので処理Bを開始し、処理Bが完了すると、メモリ110Bの該当領域にData1を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にData1を出力する(Master ID「1」、Data ID「1」等も共に出力する)。
計算機100Cは、共通バス101に出力されているMaster ID「1」、Data ID「1」と、自機が記憶する入力管理情報テーブル190とに基づいて、このData1を受領する判定を行い、メモリ110CのData2の領域に、Data1を書き込む。
その後、計算機100Bは、メモリ110BのStatus1の領域に「2」を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にStatus1「2」を出力する(Master ID「1」、Data ID「0」等も共に出力する)。
計算機100A及び100Cそれぞれは、共通バス101に出力されているMaster ID「1」、Data ID「0」と、自機が記憶する入力管理情報テーブル190とに基づいて、このStatus1「2」を受領する判定を行い、それぞれメモリ110AのStatus0の領域、メモリ110CのStatus2の領域に「2」を書き込む(同図(c)参照)。
同様にして、計算機100Cは処理Cを開始し、この処理Cが完了すると、メモリ110Cの該当領域にData2を書き込むと共に、これを共通バス101に出力し、計算機100Dは、メモリ110DのData3の領域に、Data2を書き込む。その後、計算機100Cは、メモリ110CのStatus2の領域に「3」を書き込むと共に、これを共通バス101に出力し、計算機100B及び100Dは、このStatus2「3」をそれぞれメモリ110BのStatus1の領域、メモリ110DのStatus3の領域に書き込む(同図(d)参照)。
同様に、計算機100Dは、処理Dを開始し、この処理Dが完了すると、メモリ110Dの該当領域にData3を書き込む。その後、計算機100Dは、メモリ110DのStatus3の領域に「0」を書き込むと共に、これを共通バス101に出力し、計算機100A及び100Cは、このStatus3「0」をそれぞれメモリ110AのStatus0の領域、メモリ110CのStatus2の領域に書き込む(同図(e)参照)。
以降、計算機100Aは、Status0が自機のMaster ID「0」と一致するので、再び処理Aを開始することになる。
<従来との比較>
図17(b)は、従来方式によりデータを共有して連携処理を行う連携処理システムにおける各メモリのデータ配置を示す図である。
同図(a)に示す適用例3に係る連携処理システムでは、同図(b)と比較して各メモリにおける共有データ用の格納領域を大幅に削減できており、各メモリの格納領域に無駄が生じておらず、また、無駄な書き込みによる計算機内のプロセッサとのメモリアクセス競合が生じないといえる。
なお、本適用例においては、説明を簡略化するために、処理A→処理B→処理C→処理Dといったように順番に連携処理を行うものとして、各メモリに1世代分のStatusとDataを格納する領域を設ける例を説明したが、複数世代分のStatusとDataとを格納するようにして各計算機が各処理を並列して行うようにすることも可能である。
また、本実施例では、各計算機のStatusを前後の処理を行う計算機が共有するものとして説明したが、全ての計算機が共有するように入力管理情報テーブル190を設定してもよい。これにより、各計算機は、自機が接続するメモリのStatusを参照することにより、現在処理している計算機を知ることができるので、システム全体での処理状況を容易に把握できるようになる。
<適用例4>
上述の適用例3に係る連携処理システムに、定常時においてアイドル状態である計算機100Eを加え、他の計算機100B〜100Dの処理負荷に応じて、その計算機の処理の一部をこの計算機100Eが分担する例を説明する。
図20は、適用例4に係る各計算機の動作を説明するための図である。
以下では、同図を用いて、計算機100Cが行う処理Cの負荷が高くなったときに、処理Cの一部をこの計算機100Eが分担する場合の動作例を説明する。
なお、同図は、計算機100Aが処理Aを完了し、Data0を共通バス101に出力した後の状態を示しており、計算機100Aの図示を省略している。
同図(a)に示すように、定常時においては、計算機100B〜100Dがそれぞれ処理B〜Dを行っており、計算機100Eはアイドル状態である。
なお、適用例3に係る各計算機は、Statusが自機のMaster IDと一致した場合に処理を開始するものとして説明したが、この適用例4では、1つの前の処理結果(Data0〜2)が書き込まれた場合に、処理を開始するものとし、また、1つ前の処理結果と自装置の処理結果とを異なる領域に書き込むものとしている。
図21(a)は、適用例4に係る定常時における各計算機の出力管理情報テーブル180との内容例を示す図である。
なお、同図においても、計算機100Aの出力管理情報テーブル180の記載を省略している。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100B、100Cは、それぞれData1、Data2を書き込む際に、このData1、Data2を、対応するMaster ID等と共に共通バス101に出力することになる。
また、図21(b)は、適用例4に係る定常時における各計算機の入力管理情報テーブル190との内容例を示す図である。
なお、同図においても、計算機100Aの入力管理情報テーブル190の記載を省略している。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100B〜100Dは、それぞれ共通バス101にData0〜Data2が出力されるとこれを受領し、メモリ110B〜110Dの対応する領域に書き込むことになる。
図20(a)の状態から、計算機100Cによる処理Cの処理負荷が高くなってくると(例えば、処理Cの開始から終了までの処理時間が所定時間以上になると)、アイドル状態の計算機100Eに処理Cの一部を実行させるために、図21(c)に示すように、任意の計算機内の1つのプロセッサ(例えば、計算機100Aのプロセッサ120A)は、計算機100Eの入力管理情報テーブル190に入力管理情報を登録する。なお、この登録は、例えば、計算機100Cから処理Cの負荷が高くなった旨の通知を受けて行う。
これにより、計算機100Eは、計算機100Bにより共通バス101に出力されたData1を受領し、メモリ110Eの対応する領域に書き込むことになる(図20(b)参照)。
その後、処理に必要なData1が、計算機100Eのメモリ110Eに蓄積されると、図21(d)、(e)に示すように、計算機100Dの入力管理情報テーブル190に入力管理情報197を登録し、また、計算機100Eの出力管理情報を登録する。
その後、計算機100Eは処理Cを開始し、メモリ110Eの該当領域にData2を書き込むと共に、共通バス101にData2を出力し、計算機100Dは、これを受領してメモリ110DのData2の領域に書き込む(図20(c)参照)。
なお、処理Cを計算機100Cと100Eが分担して行う際に、例えば、Data1を2等分した前半部分を用いて計算機100Cが処理Cを行ってData2の前半部分を出力し、Data1の後半部分を用いて計算機100Eが処理Cを行ってData2の後半部分を出力するものとする。つまり、計算機100Cから出力されるData2の前半部分と計算機100Eから出力されるData2の後半部分とをあわせてData2を構成するように、メモリ110Dの対応する領域に書き込まれることになる。
このように、各計算機は、出力管理情報テーブル180及び入力管理情報テーブル190に基づいて共有データの出入力を制御するため、このテーブルを必要に応じて更新することで、運用中においても、他の計算機に大きな影響を与えることなく、連携処理システムが備える計算機の数を容易に増減させることができる。このことは、特にリアルタイム性が要求される処理を実現するシステムにおいて、性能保証が容易に実現できることを意味する。
また、計算機の数を増やした場合に、その計算機用に別個にデータを出力する必要がないので、共通バス101上のデータ量の増加を防止できる。
また、定常時において計算機100Eは、他の計算機100A〜100Cが共通バス101に出力したデータをメモリ110Eに書き込むことはないので、定常時に、計算機100A〜100Dとのデータの授受を必要としないような処理を計算機100Eに実行させるようにした場合には、計算機100Eは、メモリ110Eの格納領域を専有し、かつアクセス競合を生じることなく効率的に処理を行うことができる。
なお、本適用例では、処理Cを計算機100Cと100Eとが分担して処理する際に、分担処理を行っている他の計算機が生成したData2の参照が必要ないものとして説明したが、他の計算機が生成したData2の参照が必要な場合にも、適用例1で説明したように、計算機100Cと100Eの入力管理情報テーブル190に、分担処理を行っている他の計算機が出力するData2を受領するような入力管理情報を登録することで実現可能である。
また、本適用例では、処理Cを計算機100Cと100Eとが分担して処理する場合を説明したが、例えば、計算機100Cが故障等により使用できなくなった場合においても、同様の方法で、計算機100Cによる処理Cの実行を、計算機100Eに代替させることが可能である。
また、本適用例では、計算機100Eは、定常時においては、他の計算機100A〜100CからのData0〜2を受領しないよう、計算機100Eの入力管理情報テーブル190を設定していたが、定常時においても受領するようにしておいてもよい。計算機100C、100Dにおいても、それぞれ計算機100EからData1、Data2及び3を受領するように、計算機100C、100Dの入力管理情報テーブル190を設定してもよい(図22(a)、(b)参照)。
この場合、各計算機間のデータの流れは、同図(c)に示すようになる。
これにより、計算機100A〜100Cが生成した最新のData0〜2が計算機100Eのメモリ110Eに常時反映されるため、計算機100Eが処理B〜Dのいずれの分担処理を開始する際にも、出力管理情報テーブル180及び入力管理情報テーブル190を設定しなおす必要がなく、より高速に分担処理を開始させることができる。
なお、図22(b)のように計算機100C、100Dにおいて、入力管理情報テーブル190を設定した場合でも、計算機100Eが分担処理を開始するまでは、計算機100Eから共通バス101にData1、Data2やData3が出力されることはないので、メモリ110BへのData1、メモリ110CへのData2やメモリ110DへのData3の書き込みは生じない。従って、上述のように設定した場合でも、計算機100Eが分担処理を開始するまでは、共通バス101におけるデータ量は、図20で説明した場合と変わらず、他の計算機に影響を与えることもない。
<適用例5>
実施の形態1で説明した各計算機間のデータ共有方法を、各計算機の初期化処理に適用した例を説明する。
<各メモリ上のデータ配置>
図23(a)は、適用例5に係る各メモリのデータ配置を示す図である。
ここで、各メモリにおけるInit allは、各計算機が共通して使用する初期データであり、Init0〜Init3は、それぞれ計算機100A〜100Dのみが使用する初期データであり、Init12は、計算機100Bと100Cとが、Init23は、計算機100Cと100Dとが、Init31は、計算機100Bと100Dとが使用する初期データである。
<管理情報テーブル>
図23(b)は、適用例5に係る各計算機の出力管理情報テーブル180との内容例を示す図である。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100Aは、Init all、Init1〜3、Init12、Init23、Init31をメモリ110Aに書き込む際に、これらを、対応するMaster ID等と共に共通バス101に出力することになる。
なお、他の計算機(100B〜100D)の出力管理情報テーブル180には有効な出力管理情報が登録されていない(つまり、Validは「0」であるが、同図における図示は省略している)ため、計算機100B〜100Dは、共通バス101にデータを出力することはない。
図23(c)は、適用例5に係る各計算機の入力管理情報テーブル190との内容例を示す図である。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100Bは、Init all、Init1、Init12、Init31を、計算機100Cは、Init all、Init2、Init12、Init23を、計算機100Dは、Init all、Init3、Init23、Init31を各メモリ(100B〜100D)のそれぞれ対応する領域に書き込むことになる。
なお、計算機100Aの入力管理情報テーブル190には有効な入力管理情報が登録されていない(つまり、Validは「0」であるが、同図における図示は省略している)ため、計算機100Aは、共通バス101に他の計算機(100B〜100D)により出力されているデータをメモリ110Aに書き込むことはない。
上述のように、各計算機の出力管理情報テーブル180及び入力管理情報テーブル190を設定することによって、計算機100Aが各初期データ(Init all、Init1〜3、Init12、Init23、Init31)をメモリ110Aに書き込むだけで、メモリ110B〜110Dに他の計算機(100B〜100D)が使用する初期データがそれぞれ書き込まれることになるため、システム全体の初期化を高速に行うことができる。
また、本適用例では、計算機100Aのみが初期データの書き込みを行うため、例えば、初期データを外部記憶装置で保持するようなシステムにおいては、計算機100Aのみをこの外部記憶装置と接続すれば足りる。
即ち、マルチプロセッサシステムにおいて、外部接続装置と接続するためのインタフェース部を計算機100Aのみに設ければ足りるため、システム全体のコストを削減することができる。
≪実施の形態2≫
実施の形態1に係る各計算機の選択部160は、出力管理部140からのメモリアクセス要求信号と入力管理部150からの書き込み要求信号との両方を受領した場合に、入力管理部150からの書き込み要求信号を優先的にメモリ制御部170に送出するものとして説明した。
従って、計算機内のプロセッサからのメモリアクセスが待たされ、処理効率が低下するようなことが生じ得る。
そこで、以下では、各計算機に、入力管理部150からの書き込み要求に係るデータ等を一時的に格納するためのバッファを設けることにより、計算機内のプロセッサからのメモリアクセスをより高速に行わせるように変えた一実施例を、上述の実施の形態1からの変更部分を中心に説明する。
<構成>
図24は、実施の形態2に係る処理システム1100のシステム構成図である。
処理システム1100は、同図に示すとおり、実施の形態1に係る処理システム1000における各計算機に代えて、計算機200A〜200Cを備える。
計算機200A〜200Cはそれぞれ、実施の形態1に係る各計算機の選択部160に代えて共有データ制御部220を備え、更にバッファ210を備える。
各計算機(200A〜200C)は、同様の構成を有するため、以下では、計算機200Aを例に説明する。なお、同図において太線で示す箇所は、特に、実施の形態1に係る計算機100Aと異なる箇所であることを示している。
ここで、バッファ210は、共有データ制御部220が入力管理部150を介して受領した書き込み要求信号に係るデータを一時的に記憶するためのメモリ領域である。より詳細には、共有データ制御部220により、書き込み対象データと、そのデータを書き込む先となるメモリ110Aのアドレスと、そのデータがメモリ110Aへの書き込みが完了しているか否かを示すフラグとが対応付けて記録される。
共有データ制御部220は、出力管理部140又は入力管理部150からメモリアクセス要求信号を受領した場合に、バッファ210、又はメモリ制御部170を介してメモリ110Aにアクセスする機能を有する。
<動作>
以下、共有データ制御部220の動作を説明する。
図25は、共有データ制御部220によるアクセス制御処理を示すフローチャートである。
なお、以下のステップS201〜S216の処理は繰り返し実行されるものとする。
共有データ制御部220は、出力管理部140からメモリアクセス要求信号を受領したか否かを判定し(ステップS201)、受領した場合には(ステップS201:YES)、そのアクセス要求に係るメモリ110A上のアドレスが一致し、かつ、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されているか否かを判定する(ステップS202)。より詳細には、アクセス要求に係るメモリ110A上のアドレスと一致するアドレス及びメモリ110Aへの書き込みが完了していない旨のフラグと対応付けられているデータがバッファ210に格納されている場合にのみ肯定的な判定を行う。
アドレスが一致し、かつ、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されていない場合には(ステップS202:NO)、共有データ制御部220は、出力管理部140からのメモリアクセス要求信号等をメモリ制御部170に送出する(ステップS203)。
続いて、共有データ制御部220は、入力管理部150から書き込み要求信号を受領したか否かを判定し(ステップS204)、受領していない場合には(ステップS204:NO)、アクセス制御処理を終了し、受領した場合には(ステップS204:YES)、入力管理部150からの書き込み要求信号に含まれる書き込み対象データと、対応するメモリ110Bのアドレスと、書き込みが完了していない旨を示すフラグとを対応付けてバッファに書き込み(ステップS205)、アクセス制御処理を終了する。
一方、ステップS202において、アドレスが一致し、かつメモリ110Aへの書き込みが完了していないデータがバッファ210に格納されている場合には(ステップS202:YES)、共有データ制御部220は、そのデータをバッファ210から読み出し(ステップS206)、出力管理部140からのメモリアクセス要求信号が書き込み要求信号であるか否かを判定する(ステップS207)。
出力管理部140からのメモリアクセス要求信号が読み出し要求信号である場合には(ステップS207:NO)、共有データ制御部220は、ステップS206で読み出したデータをプロセッサに送出すると共に、そのデータを、バッファ210に記憶されているアドレスに書き込むための書き込み要求信号を、メモリ制御部170に送出する(ステップS208)。
一方、出力管理部140からのメモリアクセス要求信号が書き込み要求信号である場合には(ステップS207:YES)、共有データ制御部220は、ステップS206で読み出したデータに、その書き込み要求信号に係るデータを反映させる処理(例えば、上書き処理)を行い、反映後のデータをバッファ210に記憶されているアドレスに書き込むための書き込み要求信号を、メモリ制御部170に送出する(ステップS209)。
ステップS208、又はステップS209において、書き込み要求信号を送出すると、共有データ制御部220は、バッファ210において、その書き込み要求に係るデータと対応付けて記憶されているフラグを書き込みが完了している旨を示すように更新し、上述のステップS204の処理に進む。
また、ステップS201において、出力管理部140からメモリアクセス要求信号を受領していない場合には(ステップS201:NO)、共有データ制御部220は、入力管理部150からメモリアクセス要求信号(書き込み要求信号)を受領したか否かを判定し(ステップS210)、受領していない場合には(ステップS210:NO)、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されているか否かを判定する(ステップS211)。より詳細には、メモリ110Aへの書き込みが完了していない旨のフラグと対応付けられているデータがバッファ210に格納されている場合に肯定的な判定を行う。
メモリ110Aへの書き込みが完了していないデータが存在しない場合には(ステップS211:NO)、そのままアクセス制御処理を終了し、メモリ110Aへの書き込みが完了していないデータが存在する場合には(ステップS211:YES)、共有データ制御部220は、そのデータをバッファ210から読み出し、読み出したデータを、バッファ210に記憶されているアドレスに書き込むための書き込み要求信号を、メモリ制御部170に送出し(ステップS212)、ステップS208等で説明したのと同様にフラグを更新し、アクセス制御処理を終了する。
一方、ステップS210において、入力管理部150からメモリアクセス要求信号(書き込み要求信号)を受領した場合には(ステップS210:YES)、その書き込み要求に係るメモリ110A上のアドレスが一致し、かつ、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されているか否かを上述のステップS202と同様に判定する(ステップS213)。
アドレスが一致し、かつ、メモリ110Aへの書き込みが完了していないデータがバッファ210に存在しない場合には(ステップS213:NO)、共有データ制御部220は、入力管理部150からのメモリアクセス要求信号(書き込み要求信号)をメモリ制御部170に送出し(ステップS214)、アクセス制御処理を終了する。
また、ステップS213において、アドレスが一致し、かつメモリ110Aへの書き込みが完了していないデータがバッファ210に格納されている場合には(ステップS213:YES)、共有データ制御部220は、そのデータをバッファ210から読み出す(ステップS215)。
また、共有データ制御部220は、読み出したデータに、その書き込み要求信号に係るデータを反映させる処理(例えば、上書き処理)を行い、反映後のデータをバッファ210に記憶されているアドレスに書き込むための書き込み要求信号を、メモリ制御部170に送出し(ステップS216)、ステップS208等で説明したのと同様にフラグを更新し、アクセス制御処理を終了する。
このように、共有データ制御部220は、他の計算機との共有データ(書き込み対象データ)をバッファ210に格納し、計算機内のプロセッサによるメモリアクセスがなされていないときにバッファ210に格納されている共有データを書き込むので、計算機内のプロセッサからのメモリアクセス要求と、他の計算機との共有データ(書き込み対象データ)に係る書き込み要求との競合を防ぐことができる。即ち、計算機内のプロセッサによるメモリアクセスを待たせることなく、高速に行わせることができる。
また、計算機内のプロセッサからのアクセス要求に係るデータが、未だメモリ110Aへの書き込みが完了していないデータとしてバッファ210に格納されている場合に、共有データ制御部220は、そのバッファ210内のデータに対してアクセス処理を行う。従って、計算機内のプロセッサは、他計算機との共有データ(書き込み対象データ)が、メモリ110Aに書き込まれる前の状態であっても、最新の共有データにアクセスできると共に、メモリ110Aへのアクセスが行われないので、この間にバッファ210内のデータを書き込むことが可能になり、バッファ210内のデータを比較的短時間でメモリ110Aに反映させることができる。
≪実施の形態3≫
以下では、各計算機内のプロセッサが処理に用いるデータを、このプロセッサのみが用いるデータと、共有データとに分け、物理的に異なる2つのメモリ(固有メモリと共有メモリ)にそれぞれのデータを格納することで、各計算機内のプロセッサからのメモリアクセスを待たせることなく、より高速に行わせるように変えた一実施例を、上述の実施の形態1からの変更部分を中心に説明する。
図26は、実施の形態3に係る処理システム1200のシステム構成図である。
処理システム1200は、同図に示すとおり、実施の形態1に係る処理システム1000における各計算機に代えて、計算機300A〜300Cを備える。
計算機300A〜300Cは、実施の形態1に係る各計算機の選択部160に代えてメモリ選択制御部330を、メモリ制御部170に代えて固有メモリ制御部340と共有メモリ制御部350とを備える。
また、各計算機はメモリ110A〜110Cに代えてそれぞれ固有メモリ310A〜310Cと共有メモリ320A〜320Cとに接続している。
各計算機(300A〜300C)は、同様の構成を有するため、以下では、計算機300Aを例に説明する。なお、同図において太線で示す箇所は、特に、実施の形態1に係る計算機100Aと異なる箇所であることを示している。
ここで、メモリ選択制御部330は、出力管理部140から受領したメモリアクセス要求信号及び入力管理部150から受領した書き込み要求信号を、固有メモリ制御部340と共有メモリ制御部350とのいずれかに送出する機能を有する。
より詳細には、出力管理部140から受領したメモリアクセス要求信号が、固有メモリ310Aに対するアクセス要求信号である場合には、この信号を固有メモリ制御部340に送出し、共有メモリ320Aに対するアクセス要求信号である場合には、この信号を共有メモリ制御部350に送出する。また、入力管理部150から受領した書き込み要求信号は、全て共有メモリ制御部350に送出する。特に、出力管理部140からの共有メモリ320Aに対するアクセス要求信号と、入力管理部150からの書き込み要求信号とを共に受領した場合には、入力管理部150からの書き込み要求信号を優先的に共有メモリ制御部350に送出する。つまり、この場合、プロセッサからの共有メモリ320Aへのアクセスは待たされることになる。
なお、メモリ選択制御部330は、出力管理部140から受領したメモリアクセス要求信号が、固有メモリ310Aと共有メモリ320Aのいずれに対するアクセス要求信号であるかを判断する必要がある。この判断のために、メモリ選択制御部330は、例えば論理アドレスと物理アドレスとを対応付けた情報を保持し、出力管理部140から受領したメモリアクセス要求信号に含まれるアドレス(論理アドレス)を、各メモリ(固有メモリ310A、共有メモリ320A)におけるアドレス(物理アドレス)に変換して、変換後のアドレスを指定する新たなメモリアクセス要求信号を生成して、対応するメモリに送出するようにしてもよい。
また、上述の論理アドレスと物理アドレスとを対応付けた情報を調停部130が保持するようにし、調停部130が出力管理部140にメモリアクセス要求信号を送出する際に、新たなメモリアクセス要求信号を生成して、出力管理部140に送出するようにしてもよい。
また、その他の方法として、各プロセッサが調停部130に送出するメモリアクセス要求信号を、固有メモリ310Aと共有メモリ320Aのいずれに対するアクセス要求信号であるかを指定する情報を含むように変更してもよい。
固有メモリ制御部340は、メモリ選択制御部330から受領したメモリアクセス要求信号等に基づいて、他の計算機と共有する必要のないデータ、つまり、計算機300A内の各プロセッサ(120A〜120C)のみが用いるデータを記憶する固有メモリ310Aにアクセスする機能を有する。この固有メモリ310Aに記憶するデータの例としては、各プロセッサ(120A〜120C)それぞれが実行すべきプログラムが挙げられる。
共有メモリ制御部350は、メモリ選択制御部330から受領したメモリアクセス要求信号等に基づいて、他の計算機との共有データを記憶する共有メモリ320Aにアクセスする機能を有する。
このように、他の計算機と共有する必要のないデータを固有メモリ310Aに記憶し、共有データを共有メモリ320Aに記憶させるようにしたので、固有メモリ310Aと共有メモリ320Aとに同時にアクセスすることが可能になる。つまり、計算機内のプロセッサからのアクセス要求が固有メモリ310Aに対するアクセス要求である場合には、このアクセス要求と、他の計算機との共有データ(書き込み対象データ)に係る共有メモリ320Aに対する書き込み要求との競合を防ぐことができる。
≪実施の形態4≫
以下では、実施の形態2及び実施の形態3における特徴的な構成を組み合わせた一実施例を、実施の形態3からの変更部分を中心に説明する。
図27は、実施の形態4に係る処理システム1300のシステム構成図である。
処理システム1300は、同図に示すとおり、実施の形態3に係る計算機300A〜300Cに代えて計算機400A〜400Cを備える。
計算機400A〜400Cは、実施の形態3に係る各計算機のメモリ選択制御部330に代えてメモリ選択制御部410を備えると共に、実施の形態2に係るバッファ210及び共有データ制御部220を備える。
各計算機(400A〜400C)は、同様の構成を有するため、以下では、計算機400Aを例に説明する。なお、同図において太線で示す箇所は、特に、実施の形態3に係る計算機300Aと異なる箇所であることを示している。
ここで、メモリ選択制御部410は、出力管理部140から受領した共有メモリ320Aに対するアクセス要求信号及び入力管理部150から受領した書き込み要求信号を、共有データ制御部220に送出する点で実施の形態3に係るメモリ選択制御部330と異なる。
共有データ制御部220は、メモリ選択制御部410を介して、出力管理部140又は入力管理部150からメモリアクセス要求信号を受領した場合に、バッファ210、又は共有メモリ制御部350を介して共有メモリ320Aにアクセスする機能を有する。具体的には、実施の形態2で説明したように、図25に示すフローチャートに従って、アクセス制御処理を行う。
これにより、実施の形態3の場合と比較し、計算機内のプロセッサからのアクセス要求が共有メモリ320Aに対するアクセス要求であっても、他の計算機との共有データ(書き込み対象データ)に係る共有メモリ320Aに対する書き込み要求との競合を防ぐことができる。つまり、計算機内のプロセッサによるメモリアクセスを待たせることなく、高速に行わせることができる。
また、共有データ制御部220は、計算機内のプロセッサによる共有メモリ320Aへのアクセスがなされていないときにバッファ210に格納されている共有データを共有メモリ320Aへ書き込むことになる。つまり、計算機内のプロセッサによる固有メモリ310Aへのアクセスがなされている場合にも、バッファ210に格納されている共有データを共有メモリ320Aへ書き込むことが可能になる。従って、実施の形態2の場合を比較し、バッファ210に格納されている共有データをより頻繁に共有メモリ320Aに書き込むことが可能になるので、より速やかにバッファ210内のデータを共有メモリ320Aに反映させることができる。この結果、実施の形態2よりも少ない容量のバッファ210を用いることが可能になる。
≪変形例≫
以下では、各計算機内の出力管理部140が自計算機内の特定のプロセッサからの書き込み要求信号を受領した場合にのみ共通バス101に書き込み対象のデータを出力するように変えた一変形例について説明する。
変形例に係る各計算機(500A〜500D)は、実施の形態1に係る各計算機の出力管理部140が保持する出力管理情報テーブル180のデータ構造と、調停部130の機能とを若干変更したものである。
具体的には、変形例に係る調停部は、各プロセッサによるメモリ110Aに対するアクセス要求を調停し、1つのメモリアクセス要求信号を変形例に係る出力管理部に送出する際に、その信号の送信元であるプロセッサの識別情報(後述するProcessor ID)も変形例に係る出力管理部に送出する。
以下では、変形例に係る処理システムを、上述の適用例3と同様に、計算機500A〜500Dがそれぞれ処理A〜Dを行う連携処理システムに適用した場合を例にして、実施の形態1からの変更部分を中心に説明する。
特に、この例では、各計算機内のプロセッサ120Aがそれぞれ処理A〜Dを行うものとすると共に、計算機100Bによる処理Bの負荷が高くなると、計算機100Aのプロセッサ120Bが処理Bを分担処理するものとして説明する。なお、この例に係る計算機500B〜500Dは、適用例5と同様に、1つの前の処理結果(Data0〜2)が書き込まれた場合に、これらのデータを用いた処理B〜Dを開始するものとする。
図28(a)は、変形例に係る各計算機の出力管理情報テーブルの内容例を示す図である。
同図に示すように、変形例に係る出力管理情報テーブルの出力管理情報には、実施の形態1に係る出力管理情報テーブル180の出力管理情報に含まれる各データに加え、Processor IDが含まれる。
ここで、Processor IDは、対応する共有データに対する書き込み要求信号を送出するプロセッサの識別情報であり、以下では、一例として、変形例に係る各計算機のプロセッサ120A〜120CのProcessor IDが「0」〜「2」であるものとする。
同図に示すように、各計算機における出力管理情報テーブルを設定することにより、計算機500Aは、Processor IDが「0」と「1」とである各プロセッサ(つまりプロセッサ120Aと120B)の書き込み要求信号に係るデータ(Data0とData1)をメモリ110Aに書き込む際に、これらを、対応するMaster ID等と共に共通バス101に出力する。
また、計算機500B、500Cは、それぞれProcessor IDが「0」であるプロセッサ(つまりプロセッサ120A)の書き込み要求信号に係るデータ(Data1、Data2)を各メモリ(110B、100C)に書き込む際に、これらを、対応するMaster ID等と共に共通バス101に出力する。
図28(b)は、変形例に係る各計算機の入力管理情報テーブル190の内容例を示す図である。
変形例においても、入力管理情報テーブル190のデータ構造は、実施の形態1と変更がなく、同図に示すように、各計算機における入力管理情報テーブルを設定することにより、計算機500Bは、計算機500Aが出力するData0を、計算機500Cは、計算機500A及び500Bが出力するData1を、計算機500Dは、計算機500Cが出力するData2をメモリ110B〜110Dのそれぞれ対応する領域に書き込む。
以下では、計算機500A〜500Dがそれぞれ処理A〜Dを行う連携処理システムの動作を説明する。
図29は、変形例に係る各計算機の動作を説明するための図である。
同図(a)〜(c)は、定常時における各計算機の動作を示している。これについては、上述の適用例3と同様であるため詳細な説明は省略する。
同図(d)は、計算機500Bによる処理Bの負荷が高まり、計算機500Aのプロセッサ120Bが処理Bを分担処理している状態を示している。
計算機500Bは、処理Bの負荷が一定以上(例えば、処理Bの開始から終了までの処理時間が所定時間以上)になると、計算機500Aに処理Bの分担処理を指示し、計算機500Aのプロセッサ120Bは、この指示を受けて処理Bの分担処理を開始する。
計算機500Aのプロセッサ120Bは、例えば、メモリ110Aに書き込まれた自機のプロセッサ120Aによる処理Aの処理結果(Data0)を2等分した後半部分を用いて処理Bを行って、この結果(Data1の後半部分)を、この処理Bに用いたData0の後半部分が格納されていた領域に書き込む。
また、計算機500Bは、計算機500Aのプロセッサ120Bによる処理Bの実行と並行して、例えば、メモリ110Bに格納されているData0の前半部分を用いて処理Bを行って、この結果(Data1の前半部分)を、この処理Bに用いたData0の前半部分が格納されていた領域に書き込む。
計算機500A、500Bはそれぞれ、Data1を書き込む際に、それぞれが記憶する出力管理情報テーブルに基づいて、共通バス101にData1を出力する(Master ID等も共に出力する)。
計算機500Cは、共通バス101に出力されているMaster ID等と自機が記憶する入力管理情報テーブル190とに基づいて、Data1を受領する判定を行い、メモリ110Cの対応する領域に書き込み、処理Cを開始することになる。
このように、変形例に係る出力管理情報テーブルには、Processor IDが含まれるため、上述のように、計算機500Aのプロセッサ120AがData0を書き込むメモリ110Aの領域と、計算機500Aのプロセッサ120BがData1を書き込むメモリ110Aの領域とが重複しても、異なるプロセッサからの書き込み要求信号に係る共有データを別個のデータとして管理することができる。つまり、上述のように、計算機500Aが共通バス101に出力するData0は、計算機500Bに受領させ、Data1は、計算機500Cに受領させるようなことが可能になる。
また、別個の共有データを格納するメモリ上の領域を重複して設定できるので、メモリ上の共有データ用の格納領域を節約することが可能になる。
なお、適用例3で説明したように、各メモリに複数世代分のDataを格納するようにすることで、各計算機が各処理を並列して行うようにすることも可能である。
<補足>
以上、本発明に係る処理システムについて、各実施の形態及び変形例に基づいて説明したが、以下のように変形することも可能であり、本発明は上述した各実施の形態及び変形例に示したとおりの処理システムに限られないことは勿論である。
(1)各実施の形態及び変形例においては、出力管理情報及び入力管理情報は、Validを含み、Validが「1」の場合に、出力管理情報及び入力管理情報は有効であるものとして説明したが、Validを省略し、有効な出力管理情報及び入力管理情報のみを、出力管理情報テーブル及び入力管理情報テーブルに登録するようにしてもよい。
(2)各実施の形態及び変形例においては、出力管理情報テーブルと入力管理情報テーブルとを別個に設けるものとして説明したが、1つの入出力管理テーブルに出力管理情報及び入力管理情報を登録するようにし、出力管理部の出力判定部143及び入力管理部の入力判定部152は、判定の際に、入出力管理テーブルを参照するようにしてもよい。この際、入出力管理テーブルには、出力管理情報及び入力管理情報を区別するためのフラグを登録しておく。
更に、各計算機間で相互に更新するデータを共有するようなシステムにおいては、出力管理情報及び入力管理情報を区別する必要もなく、入出力管理テーブルに登録されている入出力管理情報に従って、自機のプロセッサによる書き込み要求に係るデータを出力し、他の計算機から出力されたデータを受領すればよい。このように変形した場合には、出力管理情報テーブルと入力管理情報テーブルとを別個に設ける場合と比較し、テーブルを格納するためのメモリ容量が半分になる点で有効である。
(3)各実施の形態及び変形例においては、各計算機の出力管理情報テーブル及び入力管理情報テーブルへ登録するデータの生成及び各テーブルへの登録を、処理システムにおける任意の計算機内の1つのプロセッサが行うものとして説明したが、各計算機内のプロセッサが、自機が接続するメモリに記憶されているプログラムを実行することにより生成及び登録するようにしてもよい。
出力管理情報及び入力管理情報は、Master IDとData IDとを含み、両IDの組み合わせにより共有データを識別するため、各計算機は、他の計算機に出力すべき各共有データに、重複しないようにData IDを割り当てれば済み、他の計算機が割り当ているData IDと重複してもよいことから、各計算機は独自に出力管理情報テーブルを設定できる。
また、処理システムにおける任意の計算機内の1つのプロセッサが各計算機の出力管理情報テーブル及び入力管理情報テーブルへ登録するデータの生成のみを行い、テーブル設定用のバスを介して、各計算機に生成したデータを送信し、各計算機内のプロセッサが受領したデータを自機内のテーブルに登録するようにしてもよい。
また、既に登録済みの出力管理情報及び入力管理情報の有効又は無効の設定(つまり、Validの更新)を、各計算機内のプロセッサが行うようにしてもよい。
(4)各実施の形態及び変形例においては、出力管理情報及び入力管理情報は、Master IDとData IDとを含み、両IDの組み合わせにより共有データを識別する例を説明したが、システム全体を通じて各共有データを識別可能な識別情報を生成するようにしてもよい。
(5)各実施の形態及び変形例においては、各計算機の出力管理情報テーブルにおける各出力管理情報には、その計算機のMaster IDが含まれるものとして説明したが、各計算機は、自機のMaster IDを別途記憶しておくようにし、Master IDについては各出力管理情報には含めないようにしてもよい。
(6)各実施の形態及び変形例においては、書き込み先のアドレス(他の計算機が出力したオフセット+対応する入力管理情報のStart Address)は、その対応する入力管理情報のEnd Addressまでの範囲に収まるものとして説明した。しかしながら、必ずしもこのようにする必要はなく、対応する共有データの格納領域以外への書き込みを行わないように、例えば、以下のように制御すればよい。
(a)そのアクセスを共有領域外アクセスとして、その計算機のメモリに格納しない制御とする。
(b)算出した書き込み先のアドレスから、その格納領域のアドレス空間分を引いたアドレスを格納先として、その格納領域内で折り返す制御とする。
(c)特定の固定アドレスへのアクセスに変換する制御する。
(7)各実施の形態及び変形例においては、出力管理情報及び入力管理情報には、End Addressを含むものとして説明したが、End Addresssを含まないこととしてもよい。その場合、例えば、各共有データに対する格納領域を同一サイズにする必要がある。
(8)各実施の形態及び変形例では、出力管理情報及び入力管理情報における格納領域の指定をStart AddressとEnd Addresssとで行うものとして説明したが、これに限らず、例えば、End Addressの代わりに、領域サイズを用いてもよい。
(9)各実施の形態及び変形例では、共通バス101のバス幅を小さくするために、書き込み先アドレスを、Master IDとData IDとオフセットとで指定する方式を説明したが、これに限らず、例えば、書き込み先アドレスを、Master IDとData IDのみで指定し、対応する領域の全データを書き込み対象のデータとして送信するようにしてもよい。また、出力管理部は、調停部を介して受領したプロセッサからのメモリアクセス要求信号に含まれているアドレスの全ビットあるいは、一部のビットのみを出力してアドレスを特定するようにしてもよい。
(10)各実施の形態及び変形例においては、説明を簡単にするために、調停部から送出されるメモリアクセス要求信号におけるアクセス要求の転送単位を1サイクルで実行できる単位として説明を行ったが、これに限らず、例えば、複数サイクルで転送するバースト転送のアクセス要求であっても、同様に実装可能である。
この場合、バースト転送中に、出力管理情報テーブルにて設定されている格納領域の境界を跨るようなアクセスが発生した場合には、そのアクセス要求を、非共有データアクセスと、共有データアクセスに分割して、それぞれに対応した処理を行う制御や、共通バス調停部102において、調停単位を1バースト転送とするために、共通バス101へのデータ転送が完了したことを通知する信号を、出力管理部が共通バス調停部102に送出する制御を行う等、いくつか改良が必要であるが、これらは既存の実装技術を用いて対応できるため、ここでは詳細な説明を省略する。
(11)各実施の形態及び変形例においては、説明を簡単にするために、メモリ制御部170、固有メモリ制御部340、共有メモリ制御部350は、単に、書き込み要求信号に係るデータをメモリに書き込むものとして説明したが、この書き込み要求信号に、バイトマスク等、書き込み処理に特別な処理を施す制御情報を含めてもよく、メモリ制御部170等は、その制御情報に従ったデータの更新処理を行うこととしてもよい。
(12)実施の形態2では、バッファ210に格納されているメモリへの書き込みが完了していないデータを、計算機内のプロセッサからメモリへのアクセスが行われていない間に行うものとして説明したが、例えば、バッファ210内に未書込のデータが存在する場合に、共有データ制御部220は、そのデータをメモリに書き込むために、明示的に書き込み要求信号を調停部130に送出し、調停部130が調停の結果、この信号を選択したときに、バッファ210からメモリへ書き込むようにしてもよい。
これにより、調停部130において、バッファ210内の未書込のデータを確実にメモリに書き込むことが保証でき、例えば、バッファがフルになった結果、共通バス101上のデータ転送を停止したり、調停部130で選択されたプロセッサのメモリアクセス要求を共有データ制御部220で停止するといった処理を回避でき、システムの性能保証が容易となる。
(13)実施の形態2では、図25で説明したように、入力管理部150からの書き込み要求信号のみを受領し(ステップS201:NO、S210:YES)、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されているが、その書き込み要求に係るメモリ110A上のアドレスと一致しない場合に(ステップS213:NO)、共有データ制御部220は、入力管理部150からの書き込み要求信号をメモリ制御部170に送出する(ステップS214)ものとして説明した。
しかしながら、例えば、バッファ210内の未書込のデータのうち、最も早くバッファ210に書き込まれたデータをメモリに書き込む書き込み要求信号をメモリ制御部170に送出し、入力管理部150からの書き込み要求信号に係るデータをバッファ210に書き込むようにしてもよい。
これにより、他の計算機から受領した共有データのうち、更新が最も古いものから優先してメモリに反映できるため、他計算機から受領してからメモリに反映されるまでの期間を短くすることが可能となる。
(14)実施の形態2では、図25で説明したように、アクセス要求が競合した場合、バッファ210への読み出しと書き込みが同時に発生する場合があるが、バッファ210をデュアルポートメモリで構成するか、バッファ210のバスを広げる、バッファ210の動作周波数を上げる等によりバッファ210の転送帯域を上げることにより、バッファ210の転送待ちによる各メモリアクセス処理の性能劣化を回避することが可能である。
(15)実施の形態2では、メモリアクセス性能の高速化実現のため、共有データ制御部220が受領したメモリアクセス要求信号に係るデータが、バッファ210にメモリへの未書込データとして格納されていた場合には、このデータを読み出してプロセッサに送出した後にこのデータをメモリに書き込み、又はバッファ210から読み出したデータに書き込み要求信号に係るデータを反映させた後に、反映後のデータをメモリに書き込むものとして説明した。
しかしながら、処理を簡略化するために、以下のようにしてもよい。
即ち、プロセッサからの読み出し要求信号に係るデータが、バッファ210にメモリへの未書込データとして格納されていた場合には、この未書込データをメモリに書き込んだ後に、読み出し要求信号に係るデータをメモリから読み出すようにしてもよい。
また、入力管理部150からの書き込み要求信号に係るデータが、バッファ210にメモリへの未書込データとして格納されていた場合には、この未書込データをメモリに書き込む処理と、書き込み要求信号に係るデータをバッファ210に書き込む処理とを並行して行うようにしてもよい。
(16)実施の形態3においては、他の計算機との共有データを全て共有メモリ320Aに格納するものとして説明したが、より計算機内のプロセッサのメモリアクセス性能を向上させるために、他の計算機と共有するデータのうち、自計算機のみが更新するデータについては、固有メモリ310Aに格納し、他の計算機も更新するデータのみ共有メモリ320Aに格納するようにしてもよい。
この結果、他の計算機から受領した共有データを書き込むための共有メモリ320Aへのアクセスと、自機内のプロセッサから自機のみが更新する共有データを書き込むための固有メモリ310Aへのアクセスとを並行して行うことができるので、自機内のプロセッサによるメモリアクセスを待たせる必要がなく、アクセス性能の劣化を回避できるようになる。
(17)変形例においては、出力管理情報にProcessor IDを含める例を説明したが、これに代えて、タスクの識別情報であるTask IDを含めるようにしてもよい。つまり、プロセッサ単位ではなく、タスク単位で他の計算機に送出すべき共有データであるか否かを判断できるようにしてもよい。
(18)変形例に係る出力管理部は、Processor IDについては共通バス101に出力しないものとして説明したが、各入力管理情報にもProcessor IDを含めるように変形し、各計算機は、Processor IDにも基づいて自機が共有すべきデータか否かを判断するようにしてもよい。
(19)各実施の形態及び変形例においては、各計算機の構成は同様であるものとして説明したが、これに限定されるものではない。例えば、各計算機内のプロセッサの数は異なっていてもよいし、各計算機が備えるプロセッサの数は1つであってもよい。この場合、調停部は不要になる。すなわち1つのプロセッサに1つの専用メモリが割り当てられる構成の計算機を複数並列する場合にも、各実施の形態及び変形例で説明したのと同様に適用可能である。
また、プロセッサは、一部あるいは全部がDSP(Digital Signal Processor)、アクセラレータ(ワイヤードロジック)等の非プロセッサから構成されるものであってもよい。
(20)各実施の形態及び変形例において説明した各計算機の各機能ブロックは、典型的には集積回路であるLSI(Large Scale Integration)として実現される。これらは個別に1チップ化されてもよいし、一部、又は全てを含むように1チップ化されても良い。
また、各計算機を、それぞれ1つの半導体に集積されたLSIで構成されたものとし、複数のLSI間で、データ共有するデータ共有機構としても適応可能である。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路、又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩、又は派生する別技術により、LSIに置き換わる集積回路化の技術が登場すれば、当然その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適応等が可能性としてあり得る。
(21)各実施の形態及び変形例においては、各メモリは、各計算機の外部にあるものとして図示されているが、メモリは、各計算機の内部にあってもよい。また前述したように、LSIの構成単位としては、様々な形態が存在するが、それぞれの実装形態において、各計算機のメモリは、構成されるLSIの内部、外部どちらに存在してもよく、さらには、混在する形態であっても適用可能である。
(22)各実施の形態及び変形例において、共通バス調停部102は、各計算機の外部に独立して存在するものとして説明したが、全ての、あるいは一部の計算機の内部にあるものとしても良い。
(23)各実施の形態及び変形例において、出力管理部及び入力管理部は回路であるとして説明したが、例えば、各計算機に含まれる1つのプロセッサが所定のプログラムを実行することにより、出力管理部及び入力管理部の機能を実現するようにしてもよいし、別個のプロセッサが出力管理部と入力管理部の機能を実現するようにしてもよい。
(24)本発明に係る処理システムが備える各処理装置は、各実施の形態及び変形例に係る各計算機及び各メモリに相当する。
また、本発明に係る処理装置における共有データ記憶手段は、各実施の形態及び変形例に係るメモリ又は共有メモリに相当し、出力手段、入力手段、及び管理情報記憶手段は出力管理部及び入力管理部に相当し、共有データアクセス手段は選択部及びメモリ制御部に相当し、バッファメモリはバッファに相当し、アクセス制御手段は共有データ制御部及びメモリ制御部に相当し、固有データ記憶手段は固有メモリに相当し、データアクセス手段はメモリ選択制御部、固有メモリ制御部、及び共有メモリ制御部に相当し、第1メモリは固有メモリに相当し、第2メモリは共有メモリに相当し、メモリアクセス手段は、メモリ選択制御部、固有メモリ制御部、共有データ制御部、及び共有メモリ制御部に相当する。
以下、本発明の実施の形態について、図面を参照しながら説明する。
≪実施の形態1≫
<構成>
まず、実施の形態1に係る処理システム1000の構成について説明する。
図1は、実施の形態1に係る処理システム1000のシステム構成図である。
同図に示すとおり、処理システム1000は、共通バス101を介して相互に接続する計算機100A〜100Eと、各計算機と1対1に接続するメモリ110A〜110Eと、共通バス調停部102とから構成される。
なお、同図では、5つの計算機(100A〜100E)を図示しているが、これは一例であり、計算機の数は同図に示す例に限られず、2つ以上であればいくつでもよい。また、同図では各計算機は各メモリと1対1に接続する例を示しているが、2以上のメモリと接続していてもよい。これらの点については、以下の各実施の形態においても同様である。
ここで、共通バス101は、各計算機が共有データを授受するためのバスであり、共通バス調停部102は、共通バス101に共有データを出力しようとする各計算機からの共通バス101の使用要求を調停する機能を有する。
各メモリ(110A〜110E)は、接続先の計算機内の各プロセッサが用いるプログラムやデータを記憶するものであり、このデータには、接続先の計算機のみが使用するデータと、計算機間で共有する共有データとが含まれる。
各計算機(100A〜100E)は、1以上の他の計算機とデータを共有しながら所定の処理を実行する機能を有する。
各計算機は同様の構成を有するため、以下では、計算機100Aを例に説明する。
計算機100Aは、プロセッサ120A〜120Cと、調停部130と、出力管理部140と、入力管理部150と、選択部160と、メモリ制御部170とを備える。
ここで、各プロセッサ(120A〜120C)は、それぞれメモリ110Aに記憶されている既定のプログラムを実行することにより、メモリ110Aに記憶されているデータを用いて所定の処理を行うものであり、メモリ110Aにアクセスが必要な場合に、メモリアクセス要求信号を調停部130に送出する。
このメモリアクセス要求信号は、アクセス種別(読み出し又は書き込み)やアクセス対象となるメモリ110A上の格納領域のアドレスを指定する信号であり、特にアクセス種別が「書き込み」の場合には、書き込み対象データを含むものである。
調停部130は、各プロセッサによるメモリ110Aに対するアクセス要求を調停する機能を有し、具体的には、各プロセッサから受領した各メモリアクセス要求信号の中から1つのメモリアクセス要求信号を選んで出力管理部140に送出する。
なお、調停部130は、出力管理部140に送出するメモリアクセス要求信号が、メモリ110Aからデータを読み出すことを要求する読み出し要求信号(つまりアクセス種別が「読み出し」であるメモリアクセス要求信号)である場合には、その読み出し要求信号の送出と共に、その要求元であるプロセッサの識別情報を送出する。
以下、「メモリアクセス要求信号等」と表記する場合には、メモリアクセス要求信号が、読み出し要求信号である場合に、プロセッサの識別情報が含まれることを意味するものとして説明する。
出力管理部140は、調停部130から受領したメモリアクセス要求信号等を選択部160に送出すると共に、特に、このメモリアクセス要求信号が共有データに対する書き込みを要求する書き込み要求信号(つまりアクセス種別が「書き込み」であるメモリアクセス要求信号)である場合に、書き込み対象データ及びこのデータの識別情報等を共通バス101に出力する回路である。なお、この出力は、共通バス調停部102から共通バス101の使用権を得た後に行う。出力管理部140の構成(図2参照)については後に詳しく説明する。
入力管理部150は、他の計算機(100B〜100E)から共通バス101に出力された書き込み対象データの識別情報等に基づいて、出力された書き込み対象のデータが、自機が共有すべきデータであるか否かを判定し、判定結果に応じて、このデータのメモリ110Aに対する書き込み要求信号を選択部160に送出する回路である。なお、入力管理部150の構成(図3参照)については後に詳しく説明する。
選択部160は、出力管理部140から受領したメモリアクセス要求信号等と、入力管理部150から受領した書き込み要求信号とを順次メモリ制御部170に送出する回路である。特に、両管理部から信号を受領した場合に、選択部160は、入力管理部150からのメモリアクセス要求信号を優先的にメモリ制御部170に送出する。つまり、この場合、プロセッサのメモリ110Aへのアクセスは待たされることになる。
メモリ制御部170は、選択部160から受領したメモリアクセス要求信号等、又は書き込み要求信号に基づいて、メモリ110Aにアクセスする機能を有する。
次に、出力管理部140の構成について説明する。
図2は、出力管理部140の機能ブロック図である。
同図に示すように、出力管理部140は、出力管理情報保持部141と、内部バス制御部142と、出力判定部143と、共通バス制御部144とを備える。
ここで、出力管理情報保持部141は、出力管理情報テーブル180(図4(a)参照)を記憶するためのメモリ領域である。出力管理情報テーブル180については後述する。
内部バス制御部142は、調停部130から受領したメモリアクセス要求信号を出力判定部143に送出する機能と、出力判定部143の指示に従って、受領しているメモリアクセス要求信号等を選択部160へ送出する機能と、このメモリアクセス要求信号に含まれる書き込み対象データを共通バス101に出力する機能とを有する。
出力判定部143は、出力管理情報保持部141の出力管理情報テーブル180に基づいて、内部バス制御部142から受領したメモリアクセス要求信号が共有データに対する書き込み要求信号であるか否かを判定し、判定結果に応じて、共通バス制御部144又は内部バス制御部142に所定の信号を送出する機能を有する。
より詳細には、メモリアクセス要求信号が共有データに対する書き込み要求信号である場合には、書き込み対象データの識別情報等を共通バス制御部144に送出し、共有データに対する書き込み要求信号でない場合には、メモリアクセス要求信号等の選択部160への送出を指示する信号を内部バス制御部142に送出する。
また、出力判定部143は、共通バス制御部144から後述する出力完了信号を受領した場合に、メモリアクセス要求信号の選択部160への送出及び書き込み対象データの共通バス101への出力を指示する信号を内部バス制御部142に送出する機能を有する。
共通バス制御部144は、出力判定部143から書き込み対象データの識別情報等を受領する毎に、共通バス調停部102から共通バス101の使用権を得て、この識別情報等を共通バス101に出力すると共に、この識別情報等を出力した旨の出力完了信号を出力判定部143に送出する機能を有する。
続いて、入力管理部150の構成について説明する。
図3は、入力管理部150の機能ブロック図である。
同図に示すように、入力管理部150は、入力管理情報保持部151と、入力判定部152と、内部バス制御部153とを備える。
ここで、入力管理情報保持部151は、入力管理情報テーブル190(図4(b)参照)を記憶するためのメモリ領域である。入力管理情報テーブル190については、後述する。
入力判定部152は、他の計算機(100B〜100E)から共通バス101に出力された書き込み対象データの識別情報等と、入力管理情報保持部151の入力管理情報テーブル190とに基づいて、共通バス101に出力された書き込み対象データが、自機が共有すべきデータであるか否かを判定する機能を有する。特に、書き込み対象データが、自機が共有すべきデータである場合に、入力判定部152は、アクセス種別(書き込み)及びこのデータを書き込むべきメモリ110A上のアドレスを指定するアクセスコマンド信号を生成し、内部バス制御部153に送出する。
内部バス制御部153は、入力判定部152からアクセスコマンド信号を受領すると、他の計算機から共通バス101に出力された書き込み対象データを受領し、この書き込み対象データと受領したアクセスコマンド信号とを含む書き込み要求信号を選択部160へ送出する機能を有する。
<データ>
各計算機により使用されるデータを、計算機100Aの場合を例に説明する。
<出力管理情報テーブル>
まず、出力管理情報テーブル180について説明する。
図4(a)は、出力管理情報テーブル180のデータ構成及び内容例を示す図である。
出力管理情報保持部141に記憶されている出力管理情報テーブル180は、同図に示すように、自機が他の計算機に対し送出すべき共有データ毎に、Valid181、Master ID182、Data ID183、Start Address184、End Address185を対応付けて構成される情報である。
以下、この相互に対応付けられたValidとMaster IDとData IDとStart AddressとEnd Addressとをまとめて「出力管理情報」という。
出力管理情報テーブル180は、計算機内のプロセッサからのメモリアクセス要求信号が共有データに対するメモリアクセス要求信号であるか否かを出力判定部143が判定する際に用いられる。
ここで、Valid181は、そのValidを含む出力管理情報が有効か無効かを示す情報であり、この例では有効である場合を「1」、無効である場合を「0」としている。つまり、Validが「1」である出力管理情報に対応する共有データを共通バス101に送出することになる。
Master ID182は、対応する共有データを共通バス101へ送出する計算機の識別情報であり、以下では、一例として、計算機100A〜100EのMaster IDが「0」〜「4」であるものとして説明する。
ここでは、計算機100Aが保持する出力管理情報テーブル180の例を示しているため、全てのMaster IDが「0」になっている。他の計算機、例えば計算機100Bが保持する出力管理情報テーブル180では、全てMaster IDが「1」となる。
Data ID183は、対応する共有データの識別情報であり、他のData IDとは重複しないものである。
Start Address184とEnd Address185とはそれぞれ、対応する共有データが記憶されるメモリ110A上の格納領域の開始アドレスと終了アドレスを示す情報である。
同図は、例えば、メモリ110AにおいてStart Addressが「0x0000」で、End Addressが「0x00ff」である格納領域に格納されているデータは他の計算機に送出すべき共有データであり、そのData IDは「0」であり、このデータを共通バス101へ出力する計算機のMaster IDは「0」(つまり計算機100A)であることを示している。
以下、出力管理情報テーブル180へのデータの登録方法の一例を説明する。
出力管理情報テーブル180へのデータの登録は、まず、処理システム1000の運用開始前に行われる。
具体的には、処理システム1000における任意の計算機内の1つのプロセッサが、自機が接続するメモリに記憶されているプログラムを実行することにより、各計算機の出力管理情報テーブル180に登録すべき出力管理情報を生成し、各計算機を相互に接続するテーブル設定用のバス(不図示)を介して、各計算機の出力管理情報テーブル180に有効な出力管理情報(つまり、Validが「1」)を登録する。この出力管理情報の生成は、Master ID及びData IDの組み合わせが、他のMaster ID及びData IDの組み合わせと重複しないように行われる。
なお、各プロセッサ(120A〜120C)は、先に説明したように、メモリ110Aに記憶されている既定のプログラムを実行することで、このメモリ110Aに記憶されているデータを用いて所定の処理を行うものであるが、この既定のプログラムは、登録された有効な出力管理情報における格納領域(Start Address及びEnd Addressにより特定される)に格納されるデータを用いて所定の処理を行うように構成されている。
また、ある計算機において、何らかの要因により他の計算機との共有が不要になったデータが生じた場合には、その共有データに対応する登録済みの出力管理情報のValidを「0」に更新するだけで共有の設定を解除できる。また、再度そのデータの共有が必要になった場合には、対応する出力管理情報のValidを「1」に更新するだけで共有設定をすることができる。
<入力管理情報テーブル>
次に、入力管理情報テーブル190について説明する。
図4(b)は、入力管理情報テーブル190のデータ構成及び内容例を示す図である。
入力管理情報保持部151に記憶されている入力管理情報テーブル190は、同図に示すように、自機が他の計算機から受領すべき共有データ毎に、Valid191、Master ID192、Data ID193、Start Address194、End Address195を対応付けて構成される情報である。
以下、この相互に対応付けられたValidとMaster IDとData IDとStart AddressとEnd Addressとをまとめて「入力管理情報」という。
入力管理情報テーブル190は、他の計算機によって共通バス101に出力された書き込み対象データを受領すべきか否かを入力判定部152が判定する際に用いられる。
なお、入力管理情報テーブル190と出力管理情報テーブル180とは同様のデータ構造を有しているため、各データの詳細な説明は省略するが、
他の計算機により共通バス101に出力された共有データのうち、Validが「1」である入力管理情報に対応する共有データが、メモリ110Aに記憶されることになる。
同図は、例えば、Master IDは「1」(つまり、計算機100B)であり、Data IDは「0」であるデータは、自機が他の計算機から受領すべき共有データであり、この共有データは、メモリ110AのStart Addressが「0x0000」で、End Addressが「0x007f」である格納領域に格納されることを示している。
なお、入力管理情報テーブル190へのデータの登録は、出力管理情報テーブル180と同様に行われるため詳細な説明は省略する。
<動作>
次に、上記構成を備え、上記データを取り扱う各計算機の動作を説明する。
<出力管理部の動作>
まず、出力管理部140による出力判定処理について説明する。
図5は、出力管理部140による出力判定処理を示すフローチャートである。
なお、以下のステップS100〜S108の処理は繰り返し実行されるものとする。
出力管理部140の出力判定部143は、内部バス制御部142を介して調停部130からメモリアクセス要求信号を受領したか否かを判定し(ステップS100)、受領していない場合には(ステップS100:NO)、何も行わず出力判定処理を終了する。
一方、メモリアクセス要求信号を受領した場合には(ステップS100:YES)、その信号が書き込み要求信号か否かを、その信号のアクセス種別に基づいて判定し(ステップS101)、書き込み要求信号である場合には(ステップS101:YES)、その書き込み要求が、他の計算機へ送出すべき共有データに対するものか否かを出力管理情報保持部141の出力管理情報テーブル180に基づいて判定する(ステップS102)。
より詳細には、受領した信号に含まれるメモリ110A上の書き込み先のアドレスが、出力管理情報テーブル180における有効(つまり、Validが「1」である)な出力管理情報のStart AddressとEndAddressとの範囲に含まれる場合にのみ肯定的な判定を行う。
例えば、書き込み先のアドレスが「0x0001」である場合に、このアドレスは、図4(a)に示す出力管理情報テーブル180において、Start Address「0x0000」とEndAddress「0x00ff」との範囲に含まれるので、肯定的な判定がなされることになる。また、書き込み先のアドレスが「0x0400」である場合には、このアドレスは、出力管理情報テーブル180における有効な出力管理情報のいずれのStart AddressとEndAddressとの範囲にも含まれないので、否定的な判定がなされることになる。
ステップS102において、書き込み要求が、他の計算機へ送出すべき共有データに対するものである場合には(ステップS102:YES)、出力判定部143は、出力管理情報テーブル180から、対応する共有データのMaster ID及びData IDを取得すると共に、その共有データのStart Addressに対する書き込み先のアドレスのオフセット(以下、単に「オフセット」という)を算出し、取得したMaster ID及びData IDと、算出したオフセットとを共通バス制御部144に送出する(ステップS103)。
例えば、上述の書き込み先のアドレスが「0x0001」である場合の例においては、Master ID「0」、Data ID「0」、オフセット「0x001」が共通バス制御部144に送出される。
続いて、Master ID等を受領した共通バス制御部144は、共通バス101の使用権を得るために、共通バス調停部102に共通バスアクセス要求信号を送出する(ステップS104)。この共通バスアクセス要求信号を受領した共通バス調停部102は、共通バス101に対しデータの送出を要求する各計算機からの要求を調停の上、この受領した共通バスアクセス要求信号の送信元である計算機に共通バス101の使用権を与える旨の共通バスアクセス許可信号を送信する。
ステップS104で共通バスアクセス要求信号を送出した共通バス制御部144は、共通バス調停部102から共通バスアクセス許可信号を受領したか否かを判定し(ステップS105)、受領していない場合には(ステップS105:NO)、再びステップS105の処理を行う。
一方、共通バスアクセス許可信号を受領した場合には(ステップS105:YES)、共通バス制御部144は、出力判定部143から受領しているMaster ID、Data ID、及びオフセットを共通バス101に出力すると共に、Master ID等を出力した旨の出力完了信号を出力判定部143に送出する(ステップS106)。
出力完了信号を受領した出力判定部143は、メモリアクセス要求信号の選択部160への送出及び書き込み対象データの共通バス101への出力を指示する信号を内部バス制御部142に送出する。この信号を受領した内部バス制御部142は、受領しているメモリアクセス要求信号に含まれる書き込み対象データを共通バス101に出力すると共に、選択部160にこのメモリアクセス要求信号を送出し(ステップS107)、出力判定処理を終了する。
一方、ステップS101において、読み出し要求信号である場合(ステップS101:NO)、又は、ステップS102において、書き込み要求が、他の計算機へ送出すべき共有データに対するものでない場合には(ステップS102:NO)、出力判定部143は、内部バス制御部142にメモリアクセス要求信号等の送出を指示する信号を送出し、これを受領した内部バス制御部142は、選択部160に受領しているメモリアクセス要求信号等を送出し(ステップS108)、出力判定処理を終了する。
<入力管理部の動作>
次に、入力管理部150による入力判定処理について説明する。
図6は、入力管理部150による入力判定処理を示すフローチャートである。
なお、以下のステップS110〜S115の処理は繰り返し実行されるものとする。
入力管理部150の入力判定部152は、他の計算機から共通バス101上にMaster ID等が出力されているか否かを判定し(ステップS110)、出力されていない場合には(ステップS110:NO)、何も行わず入力判定処理を終了する。
一方、Master ID等が出力されている場合には(ステップS110:YES)、入力判定部152は、出力されているMaster ID、Data ID、及びオフセットを受領する(ステップS111)。
入力判定部152は、受領したMaster ID及びData IDに基づいて、他の計算機から共通バス101に出力された書き込み対象のデータが、自機が受領すべき共有データであるか否かを判定する(ステップS112)。
より詳細には、入力管理情報保持部151の入力管理情報テーブル190を参照し、受領したMaster IDとData IDとを対応付けた入力管理情報が登録されている場合にのみ、肯定的な判定を行う。
例えば、受領したMaster IDが「1」、Data IDが「0」である場合には、図4(b)に示す入力管理情報テーブル190に該当の入力管理情報が登録されているので、肯定的な判定がなされることになる。また、例えば、受領したMaster IDが「1」でData IDが「2」である場合には、該当の入力管理情報が登録されていないので否定的な判定がなされることになる。
ステップS112において、自機が受領すべき共有データでない場合には(ステップS112:NO)、入力判定処理を終了し、自機が受領すべき共有データである場合には(ステップS112:YES)、入力判定部152は、アクセス種別(書き込み)及び書き込み先のアドレスを指定するアクセスコマンド信号を内部バス制御部153に送出する(ステップS113)。ここで、書き込み先のアドレスは、該当の入力管理情報に含まれるStart Addressに受領したオフセットを加えたものである。
アクセスコマンド信号を受領した内部バス制御部153は、共通バス101から、他の計算機により出力された書き込み対象データを受領し、この書き込み対象データと、受領しているアクセスコマンド信号とを含むメモリアクセス要求信号を選択部160に送出し(ステップS115)、入力判定処理を終了する。
<選択部及びメモリ制御部の動作>
次に、選択部160によるメモリアクセス要求信号の送出処理とメモリ制御部170によるメモリアクセス処理とについて説明する。
図7は、選択部160によるメモリアクセス要求信号の送出処理とメモリ制御部170によるメモリアクセス処理とを示すフローチャートである。
まず、選択部160の処理について説明する。
なお、以下のステップS120〜S124の処理は繰り返し実行されるものとする。
選択部160は、出力管理部140と入力管理部150との両方からメモリアクセス要求信号(入力管理部150については、特に書き込み要求信号である)を受領したか否かを判定し(ステップS120)、受領した場合には(ステップS120:YES)、まず、入力管理部150からのメモリアクセス要求信号をメモリ制御部170に送出する(ステップS121)。
次に、選択部160は、出力管理部140からのメモリアクセス要求信号等をメモリ制御部170に送出し(ステップS122)、メモリアクセス要求信号の送出処理を終了する。
一方、ステップS120において、出力管理部140と入力管理部150との両方からはメモリアクセス要求信号を受領していない場合には(ステップS120:NO)、選択部160は、出力管理部140と入力管理部150とのいずれか一方からメモリアクセス要求信号を受領しているか否かを判定する(ステップS123)。
いずれからもメモリアクセス要求信号を受領していない場合には(ステップS123:NO)、メモリアクセス要求信号の送出処理を終了し、いずれか一方からメモリアクセス要求信号を受領している場合には(ステップS123:YES)、受領したメモリアクセス要求信号等をメモリ制御部170に送出し(ステップS124)、メモリアクセス要求信号の送出処理を終了する。
次に、メモリ制御部170の処理について説明する。
なお、以下のステップS130、S131の処理は繰り返し実行されるものとする。
メモリ制御部170は、選択部160が送出したメモリアクセス要求信号(上述のステップS121、S122、S124で送出したもの)を受領したか否かを判定し(ステップS130)、受領していない場合には(ステップS130:NO)、何も行わずメモリアクセス処理を終了する。
一方、メモリアクセス要求信号を受領した場合には(ステップS130:YES)、そのメモリアクセス要求信号に従って、自機が接続するメモリに対してデータの読み出し又は書き込みを行い(ステップS131)、メモリアクセス処理を終了する。なお、ステップS131において、メモリアクセス要求信号が読み出し要求信号である場合には、メモリ制御部170は、受領しているプロセッサの識別情報に基づいて、該当するプロセッサに読み出したデータを送出する。
<適用例1>
まず、実施の形態1に係る処理システム1000を、MPEG(Moving Picture Experts Group)のデコード機能を有するデジタル放送受信器1000Aに適用した例を説明する。
<構成>
図8は、適用例1に係るデジタル放送受信器1000Aの構成図である。
同図に示すように、デジタル放送受信器1000Aは、処理システム1000のほか、アンテナ、チューナ、スピーカ、モニタ等を含んで構成される。
なお、以下では、説明を簡略化するために、各計算機は1つのプロセッサ120Aのみを備えるものとすると共に、共通バス調停部102による共通バス101の使用権の調停処理については、ここでは特に言及しないものとする(同図においても省略している)。
ここで、各計算機(100A〜100E)内のプロセッサ120Aが、自機が接続するメモリ(110A〜110E)の固有領域(共有データ以外が記憶された格納領域であって、同図の各メモリにおける網掛け部分がこの領域に該当する)に記憶されているプログラムを実行することにより、各計算機は、以下の機能を実現する。
即ち、計算機100Aは、アンテナからチューナを介して受信したMPEGストリーム(符号化ストリーム)から、AudioデータとVideoデータとを切り出し、Audioデータのデコード処理と、デコードされたAudioデータをスピーカに出力させる処理を行う機能を有する。
計算機100B〜100Dそれぞれは、計算機100Aが切り出したVideoデータのデコード処理を行う機能を有する。
一般的に、Videoデータのデコード処理はAudioデータのデコード処理と比較して演算量及び処理データ量が多い。従って、本適用例では、3つの計算機100B〜100Dが、Videoデータのデコード処理を分担して行うこととしている。具体的には、図9に示すように、1つの画像(フレーム)を垂直方向に3等分したV1領域を計算機100Bが、V2領域を計算機100Cが、V3領域を計算機100Dがそれぞれデコードする。
計算機100Eは、計算機100B〜100Dによるデコード済みのVideoデータをモニタに表示させる機能を有する。
<各メモリ上のデータ>
次に、図8に基づいて、各メモリに格納されるデータについて説明する。
同図の各メモリの左側に表記されている0及びアルファベットは、各メモリにおけるアドレス値を示している。例えば、メモリ110Aにおいては、StAの格納領域は0〜a−1番地であることを示している。なお、この適用例では、各メモリの「0」番地から各データを格納するものとして説明しているが、これは一例であり、任意のアドレスに各データを格納してもよい。これらの点については、以降の各適用例においても同様である。
メモリ110AにおけるStAは、計算機100Aが受信したMPEGストリームから切り出したAudioデータであり、DecAは、計算機100AがStAをデコードした結果であるデコード後のAudioデータである。
また、メモリ110AにおけるStV1、StV2、StV3それぞれは、計算機100Aが受信したMPEGストリームから切り出したVideoデータを各領域(V1〜V3領域)に対応するように分割した分割Videoデータである。
計算機100B〜100Dはこの分割Videoデータに対してデコード処理を行うので、計算機100B〜100Dは、自機が処理する分割Videoデータを計算機100Aと共有する必要がある。従って、同図に示すように、メモリ110BにはStV1が、メモリ110CにはStV2が、メモリ110DにはStV3が格納される。
また、メモリ110BにおけるDecV1は、計算機100Bがメモリ110BにおけるStV1をデコードした結果であるデコード後の分割Videoデータを示している。また、メモリ110CにおけるDecV2及びメモリ110DにおけるDecV3も、計算機100C、100DそれぞれがStV2、StV3をデコードした結果であるデコード後の分割Videoデータを示している。
計算機100Eは、これらのデコード後の分割Videoデータに基づいてモニタへの表示を行うので、これらの分割Videoデータを計算機100B〜100Dと共有する必要がある。従って、同図に示すように、メモリ110EにはDecV1、DecV2、DecV3が格納される。
また、一般的に、MPEGにおけるVideoストリームのデコード処理では、動き補償処理やデブロックフィルタ処理などのために、デコード済みの画像データの参照が必要になる。
従って、上述のように、1つの画像を3つの領域(V1〜V3領域)に分割して3つの計算機100B〜100Dが分担してデコードする場合には、他の計算機によるデコード済みの画像の参照が必要、つまり、3つの計算機100B〜100Dの間では、デコード済み画像のデータ共有が必要になることがある。
ここで、計算機100B〜100Dそれぞれが分担している領域(V1〜V3領域)をデコードする際に、どの範囲のデコード済み画像を参照する必要があるかは、一般的に、符号化の際に指定されたプロファイルとレベルで規定される動きベクトルの最大値により決定されるが、ここでは説明の簡略化のため、隣接する全ての領域の分割画像を参照すると仮定して説明を行う。
このため、同図に示すように、メモリ110BにはDecV2が、メモリ110CにはDecV1及びDecV3が、メモリ110CにはDecV2が格納される。
<管理情報テーブル>
次に、各計算機が保持する出力管理情報テーブル180と入力管理情報テーブル190の内容例を説明する。
図10は、適用例1に係る各計算機における出力管理情報テーブル180の内容例を示す図である。
例えば、同図に示す計算機100Aにおける出力管理情報テーブル180の出力管理情報186は、メモリ110Aにおいて、Start Addressが「a」で、End Addressが「b−1」である格納領域に格納されている共有データ(つまり、StV1)のData IDは「0」であり、この共有データを送信する計算機のMaster IDは「0」(つまり計算機100A)であることを示している。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100Aは、StV1、StV2、StV3それぞれをメモリ110Aに書き込む際に、これらのデータを、対応するMaster ID等と共に共通バス101に出力することになる。
また、計算機100Bは、DecV1をメモリ110Bに、計算機100CはDecV2をメモリ110Cに、計算機100DはDecV3をメモリ110Dにそれぞれ書き込む際に、これらのデータを、対応するMaster ID等と共に共通バス101に出力することになる。
図11は、適用例1に係る各計算機における入力管理情報テーブル190の内容例を示す図である。
例えば、同図に示す計算機100Bにおける入力管理情報テーブル190の入力管理情報196は、Master IDは「0」(つまり、計算機100A)であり、Data IDは「0」であるデータ(つまり、StV1)は自機が他の計算機から受領すべき共有データであり、この共有データは、メモリ110BのStart Addressが「0」で、End Addressが「f−1」である格納領域に格納されることを示している。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100Bは、共通バス101にStV1が出力されるとこれをメモリ110Bの対応する領域(0〜f−1番地)に書き込み、同様にDecV2が出力されると、メモリ110Bの対応する領域に書き込むことになる。
また、同様に、計算機100Cは、共通バス101にStV2、DecV1、DecV3が出力されると、計算機100Dは、StV3、DecV2が出力されると、計算機100Eは、DecV1、DecV2、DecV3が出力されるとこれらをそれぞれのメモリの対応する領域に書き込むことになる。
上述のように各計算機における出力管理情報テーブル180及び入力管理情報テーブル190を設定することにより、各計算機が処理に必要になる共有データのみを、共有データの同一性を保ちつつ、各メモリに保持することができる。
<従来との比較>
以下、従来の方法(特許文献1等の方法)により各計算機がデータを共有するデジタル放送受信器10Aにおいて、各メモリに保持されるデータを説明する。
図12は、従来の方法により各計算機がデータを共有するデジタル放送受信器10Aの構成図である。
同図に示す計算機6A〜6Eの機能は、上述の計算機100A〜100Eと同様であり、メモリ7A〜7Eも上述のメモリ110A〜110Eと同様のメモリである。
従来の方法では、システム全体で必要となる全ての共有データを全てのメモリに格納するので、同図に示すように、システム全体の共有データ(StV1、StV2、StV3、DecV1、DecV2、DecV3)が各メモリに格納される。
その結果、各メモリは、接続先の計算機が使用しないデータにより、格納領域が無駄に消費されることになる。例えば、メモリ7Bは、計算機6Bが使用しないStV2、StV3、DecV3により、格納領域が無駄に消費されている。
また、例えば、計算機6AがStV2をメモリ7Aに書き込む際に、このStV2が各メモリに書き込まれることになるので、各メモリに対する接続先の計算機からのアクセスと競合が生じる可能性が高まる。
一方、上述の適用例1に係るデジタル放送受信器1000Aにおいては、
各計算機は、必要なデータのみを各メモリに格納するので、領域が無駄に消費されることはなく(図8参照)、かつ無駄なアクセス競合も生じない。
<適用例2>
次に、実施の形態1で説明した各計算機間のデータ共有方法を、上述のデジタル放送受信器1000Aにおける各計算機の同期制御に適用した例を説明する。
ここでの同期制御とは、複数の計算機に対して一斉に特定の処理を行わせることにより、システム全体を制御することをいう。デジタル放送受信器1000Aにおける同期制御の例としては、各計算機にチャンネル切り替えに伴うデコードストリームの切り替え処理や、ストリームのエラーによるピクチャスキップ、バッファフラッシュ等のエラーコンシールメント処理などを一斉に行わせることが挙げられる。
<各メモリ上のデータ>
まず、各メモリに格納されるデータについて説明する。
図13(a)は、適用例2に係るデジタル放送受信器1000Aの各メモリにおけるデータ配置を示す図である。
なお、上述の適用例1に係るデジタル放送受信器1000Aは、5つの計算機(100A〜100E)を備えるものとして説明したが、以下では、4つの計算機100A〜100Dを備えるものとして説明する。
ここで、メモリ110B〜110DにおけるStatus flag1〜3はそれぞれ、接続先の計算機100B〜100Dにおける同期処理の実行状態を示すフラグであり、この例では、実行していない状態を「0」、実行中の状態を「1」として説明する。各計算機はそれぞれStatus flag1〜3が「0」から「1」に更新されることで同期処理を開始し、同期処理を完了すると、「1」から「0」に更新する。
また、メモリ110AにおけるStart flagは、各計算機に同期処理を開始させるための起動フラグであり、End flag1〜3それぞれは、計算機100B〜100Dにおける同期処理の実行状態を示すフラグであり、この例では、実行していない状態を「0」、実行中の状態を「1」として説明する。
なお、各フラグは「0」又は「1」の値を取るものとして説明しているが、これは一例であり、他の値であってもよい。
<管理情報テーブル>
次に、各計算機が保持する出力管理情報テーブル180と入力管理情報テーブル190の内容例を説明する。
図14(a)は、適用例2に係る各計算機における出力管理情報テーブル180の内容例を示す図である。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100Aは、Start flagを書き込む際に、このStart flagを、対応するMaster ID等と共に共通バス101に出力することになる。
また、計算機100B〜100Dは、それぞれStatus flag1〜3を書き込む際に、これらのデータを、対応するMaster ID等と共に共通バス101に出力することになる。
図14(b)は、適用例2に係る各計算機における入力管理情報テーブル190の内容例を示す図である。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100B、100C、100Dは、共通バス101にStart flagが出力されるとこれを受領し、メモリ110BのStatus flag1の領域に、メモリの110CのStatus flag2の領域に、メモリ110DのStatus flag3の領域にそれぞれ書き込むことになる。
また、計算機100Aは、計算機100B、100C、100DからそれぞれStatus flag1、2、3が出力されるとこれを受領し、それぞれをメモリ110AのEnd flag1、2、3の格納領域に書き込むことになる。
<動作>
以下、各計算機の動作を具体的に説明する。
図15は、適用例2に係る各計算機の動作を説明するための図である。
なお、同図では、データの流れを矢印で示し、各メモリ内のデータのうち、書き込まれたデータを太字で表記している。これは、以下の各適用例においても同様である。
計算機100Aは、計算機100B〜100Dに同期処理を実行させる必要が生じた場合に、まず、メモリ110Aに格納されているEnd flag1〜3が「0」であること、つまり、計算機100B〜100Dが同期処理を実行中でないことを確認する(同図(a)参照)。
続いて、計算機100Aは、計算機100B〜100Dに同期処理を開始させるために、メモリ110AのStart flagの格納領域に「1」を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にStart flag「1」を出力する(Master ID「0」、Data ID「0」等も共に出力する)。
なお、計算機100Aは、メモリ110AのEnd flag1〜3の各領域に「1」を書き込んでおく。
計算機100B〜100Dそれぞれは、共通バス101に出力されているMaster ID「0」、Data ID「0」と、自機が記憶する入力管理情報テーブル190とに基づいて、このStart flag「1」を受領する判定を行い、メモリ110B〜110DのStatus flag1〜3の各領域に「1」を書き込む(同図(b)参照)。
この書き込みにより、計算機100B〜100Dそれぞれは同期処理を開始する。計算機100B〜100Dそれぞれは同期処理が完了するとメモリ110B〜110DのStatus flag1〜3に「0」を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にそれぞれを出力する(上記同様に出力したデータに対応するMaster ID、DataID等が共に出力される)。
計算機100Aは、共通バス101に出力されているMaster ID、Data IDと、自機が記憶する入力管理情報テーブル190とに基づいて、このStatus flag1〜3を受領する判定を行い、メモリ110AのEnd flag1〜3の領域に書き込む(同図(c)参照)。
最後に計算機100Aは、メモリ110Aに格納されているEnd flag1〜3が「0」であること、つまり、計算機100B〜100Dが同期処理を完了したことを確認する。
<従来との比較>
図13(b)は、従来方式によりデータを共有するデジタル放送受信器10Aにおける各計算機に同期処理を行わせる場合の各メモリにおけるデータ配置を示す図である。
これと比較して、デジタル放送受信器1000Aは、同図(a)に示すように、各メモリの格納領域に無駄が生じておらず、また、無駄な書き込みが行われないので、無駄なアクセス競合が生じないといえる。
また、各計算機において、上述のように出力管理情報テーブル180及び入力管理情報テーブル190を設定することにより、計算機100AによるStart flag「1」のメモリ110Aへの書き込みにより、複数の計算機100B〜100Dにおいて同時に同期処理を開始することができ、かつ、計算機100B〜100Dそれぞれが出力するStatus flag1〜3によって、計算機100Aは各計算機における同期処理の完了を知ることができるので、容易に同期制御を実現できる。
なお、この適用例では、計算機100Aが、他の全ての計算機(100B〜100D)に同期処理を行わせる例を説明したが、一部の計算機のみに同期処理を行わせることも可能である。
例えば、計算機100Bと100Cのみに同期処理を行わせ、計算機100Dには行わせない場合には、計算機100Dが保持する入力管理情報テーブル190におけるStatus flag3についての入力管理情報を無効にすればよい(Validを「0」に設定する)。
また、この適用例では、計算機100Aが、他の全ての計算機(100B〜100D)に同じタイミングで同期処理を開始させる例を説明したが、異なるタイミングで開始させることも可能である。
例えば、計算機100Bと100Cとには同じタイミングT1で、計算機100Dはこれとは異なるタイミングT2で同期処理を開始させる場合に、計算機100Aは、タイミングT1用のStart flag1と、タイミングT2用のStart flag2をメモリ110Aに格納するようにし、それぞれを「1」に更新したときに共通バス101に出力するように、計算機100Aの出力管理情報テーブル180を設定しておく。
また、計算機100Bと100CとはStart flag1を受領するように、計算機100Dは、Start flag2を受領するようにそれぞれの入力管理情報テーブル190を設定しておく。なお、計算機100B〜100Dが行う同期処理の内容は同一であっても異なってもよいのはもちろんである。
<適用例3>
次に、実施の形態1に係る処理システム1000を、各計算機が他の計算機の処理結果を用いて処理を行う連携処理システムに適用した例を説明する。
なお、処理システム1000は、5つの計算機(100A〜100E)を備えるものとして説明したが、本適用例に係る連携処理システムは、4つの計算機100A〜100Dを備えるものとして説明する。
<連携処理の流れ>
図16は、適用例3における連携処理の流れを説明するための図である。
同図に示すように、本連携処理は、処理A、処理B、処理C、処理Dの順で行われる。ここで、処理B〜処理Dは、1つ前に行われた処理の結果(Data0〜2)を用いて行われる。
なお、以下では、処理A〜Dを、それぞれ計算機100A〜100Dが行うものとして説明する。また、計算機100Dによる処理Dが完了すると、計算機100Aは、次の処理Aを開始するものとする。
<各メモリ上のデータ>
図17(a)は、適用例3に係る各メモリのデータ配置を示す図である。
ここで、各メモリにおけるStatus0〜3は、各計算機に対応する処理を開始させるための起動フラグであり、各計算機は、このフラグが自機のMaster IDと一致する場合に対応する処理を開始し、その処理が完了すると次の処理を行う計算機のMaster IDを書き込む。
また、各メモリにおけるData0〜3はそれぞれ、処理A〜Dにより生成されるデータであり、図16に示す各データ(Data0〜3)に対応する。
<管理情報テーブル>
図18(a)は、適用例3に係る各計算機の出力管理情報テーブル180の内容例を示す図である。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100A〜100Dは、Status0〜3及びData0〜2を各メモリに書き込む際に、これらを、対応するMaster ID等と共に共通バス101に出力する。
図18(b)は、適用例3に係る各計算機の入力管理情報テーブル190の内容例を示す図である。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100A〜100Cは、自機が行う処理の前後の処理を行う計算機から出力されるStatusを、それぞれメモリ110A〜110CのStatus0〜2の領域に書き込むことになる。また、計算機100Dは、自機が行う処理Dの前の処理Cを行う計算機100Cから出力されるStatus2を、メモリ110DのStatus3の領域に書き込むことになる。
また、計算機100B〜100Dは、自機が行う処理の前に処理を行う計算機から出力されるDataをそれぞれメモリ110B〜110DのData1〜3の領域に書き込むことになる。
<動作>
図19は、適用例3に係る各計算機の動作を説明するための図である。
まず、計算機100Aは、メモリ110AのStatus0の領域を参照し、Status0が自機のMaster ID「0」と一致する場合に、処理Aを開始する(同図(a)参照)。
計算機100Aは、処理Aを完了すると、メモリ110Aの該当領域にData0を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にData0を出力する(Master ID「0」、Data ID「1」等も共に出力する)。
計算機100Bは、共通バス101に出力されているMaster ID「0」、Data ID「1」と、自機が記憶する入力管理情報テーブル190とに基づいて、このData0を受領する判定を行い、メモリ110BのData1の領域に、Data0を書き込む。
その後、計算機100Aは、メモリ110AのStatus0の領域に「1」を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にStatus0「1」を出力する(Master ID「0」、Data ID「0」等も共に出力する)。
計算機100Bは、共通バス101に出力されているMaster ID「0」、Data ID「0」と、自機が記憶する入力管理情報テーブル190とに基づいて、このStatus0「1」を受領する判定を行い、メモリ110BのStatus1の領域に「1」を書き込む(同図(b)参照)。
この結果、計算機100Bは、Status1が自機のMaster ID「1」と一致するので処理Bを開始し、処理Bが完了すると、メモリ110Bの該当領域にData1を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にData1を出力する(Master ID「1」、Data ID「1」等も共に出力する)。
計算機100Cは、共通バス101に出力されているMaster ID「1」、Data ID「1」と、自機が記憶する入力管理情報テーブル190とに基づいて、このData1を受領する判定を行い、メモリ110CのData2の領域に、Data1を書き込む。
その後、計算機100Bは、メモリ110BのStatus1の領域に「2」を書き込むと共に、自機が記憶する出力管理情報テーブル180に基づいて、共通バス101にStatus1「2」を出力する(Master ID「1」、Data ID「0」等も共に出力する)。
計算機100A及び100Cそれぞれは、共通バス101に出力されているMaster ID「1」、Data ID「0」と、自機が記憶する入力管理情報テーブル190とに基づいて、このStatus1「2」を受領する判定を行い、それぞれメモリ110AのStatus0の領域、メモリ110CのStatus2の領域に「2」を書き込む(同図(c)参照)。
同様にして、計算機100Cは処理Cを開始し、この処理Cが完了すると、メモリ110Cの該当領域にData2を書き込むと共に、これを共通バス101に出力し、計算機100Dは、メモリ110DのData3の領域に、Data2を書き込む。その後、計算機100Cは、メモリ110CのStatus2の領域に「3」を書き込むと共に、これを共通バス101に出力し、計算機100B及び100Dは、このStatus2「3」をそれぞれメモリ110BのStatus1の領域、メモリ110DのStatus3の領域に書き込む(同図(d)参照)。
同様に、計算機100Dは、処理Dを開始し、この処理Dが完了すると、メモリ110Dの該当領域にData3を書き込む。その後、計算機100Dは、メモリ110DのStatus3の領域に「0」を書き込むと共に、これを共通バス101に出力し、計算機100A及び100Cは、このStatus3「0」をそれぞれメモリ110AのStatus0の領域、メモリ110CのStatus2の領域に書き込む(同図(e)参照)。
以降、計算機100Aは、Status0が自機のMaster ID「0」と一致するので、再び処理Aを開始することになる。
<従来との比較>
図17(b)は、従来方式によりデータを共有して連携処理を行う連携処理システムにおける各メモリのデータ配置を示す図である。
同図(a)に示す適用例3に係る連携処理システムでは、同図(b)と比較して各メモリにおける共有データ用の格納領域を大幅に削減できており、各メモリの格納領域に無駄が生じておらず、また、無駄な書き込みによる計算機内のプロセッサとのメモリアクセス競合が生じないといえる。
なお、本適用例においては、説明を簡略化するために、処理A→処理B→処理C→処理Dといったように順番に連携処理を行うものとして、各メモリに1世代分のStatusとDataを格納する領域を設ける例を説明したが、複数世代分のStatusとDataとを格納するようにして各計算機が各処理を並列して行うようにすることも可能である。
また、本実施例では、各計算機のStatusを前後の処理を行う計算機が共有するものとして説明したが、全ての計算機が共有するように入力管理情報テーブル190を設定してもよい。これにより、各計算機は、自機が接続するメモリのStatusを参照することにより、現在処理している計算機を知ることができるので、システム全体での処理状況を容易に把握できるようになる。
<適用例4>
上述の適用例3に係る連携処理システムに、定常時においてアイドル状態である計算機100Eを加え、他の計算機100B〜100Dの処理負荷に応じて、その計算機の処理の一部をこの計算機100Eが分担する例を説明する。
図20は、適用例4に係る各計算機の動作を説明するための図である。
以下では、同図を用いて、計算機100Cが行う処理Cの負荷が高くなったときに、処理Cの一部をこの計算機100Eが分担する場合の動作例を説明する。
なお、同図は、計算機100Aが処理Aを完了し、Data0を共通バス101に出力した後の状態を示しており、計算機100Aの図示を省略している。
同図(a)に示すように、定常時においては、計算機100B〜100Dがそれぞれ処理B〜Dを行っており、計算機100Eはアイドル状態である。
なお、適用例3に係る各計算機は、Statusが自機のMaster IDと一致した場合に処理を開始するものとして説明したが、この適用例4では、1つの前の処理結果(Data0〜2)が書き込まれた場合に、処理を開始するものとし、また、1つ前の処理結果と自装置の処理結果とを異なる領域に書き込むものとしている。
図21(a)は、適用例4に係る定常時における各計算機の出力管理情報テーブル180の内容例を示す図である。
なお、同図においても、計算機100Aの出力管理情報テーブル180の記載を省略している。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100B、100Cは、それぞれData1、Data2を書き込む際に、このData1、Data2を、対応するMaster ID等と共に共通バス101に出力することになる。
また、図21(b)は、適用例4に係る定常時における各計算機の入力管理情報テーブル190の内容例を示す図である。
なお、同図においても、計算機100Aの入力管理情報テーブル190の記載を省略している。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100B〜100Dは、それぞれ共通バス101にData0〜Data2が出力されるとこれを受領し、メモリ110B〜110Dの対応する領域に書き込むことになる。
図20(a)の状態から、計算機100Cによる処理Cの処理負荷が高くなってくると(例えば、処理Cの開始から終了までの処理時間が所定時間以上になると)、アイドル状態の計算機100Eに処理Cの一部を実行させるために、図21(c)に示すように、任意の計算機内の1つのプロセッサ(例えば、計算機100Aのプロセッサ120A)は、計算機100Eの入力管理情報テーブル190に入力管理情報を登録する。なお、この登録は、例えば、計算機100Cから処理Cの負荷が高くなった旨の通知を受けて行う。
これにより、計算機100Eは、計算機100Bにより共通バス101に出力されたData1を受領し、メモリ110Eの対応する領域に書き込むことになる(図20(b)参照)。
その後、処理に必要なData1が、計算機100Eのメモリ110Eに蓄積されると、図21(d)、(e)に示すように、計算機100Dの入力管理情報テーブル190に入力管理情報197を登録し、また、計算機100Eの出力管理情報を登録する。
その後、計算機100Eは処理Cを開始し、メモリ110Eの該当領域にData2を書き込むと共に、共通バス101にData2を出力し、計算機100Dは、これを受領してメモリ110DのData2の領域に書き込む(図20(c)参照)。
なお、処理Cを計算機100Cと100Eが分担して行う際に、例えば、Data1を2等分した前半部分を用いて計算機100Cが処理Cを行ってData2の前半部分を出力し、Data1の後半部分を用いて計算機100Eが処理Cを行ってData2の後半部分を出力するものとする。つまり、計算機100Cから出力されるData2の前半部分と計算機100Eから出力されるData2の後半部分とをあわせてData2を構成するように、メモリ110Dの対応する領域に書き込まれることになる。
このように、各計算機は、出力管理情報テーブル180及び入力管理情報テーブル190に基づいて共有データの出入力を制御するため、このテーブルを必要に応じて更新することで、運用中においても、他の計算機に大きな影響を与えることなく、連携処理システムが備える計算機の数を容易に増減させることができる。このことは、特にリアルタイム性が要求される処理を実現するシステムにおいて、性能保証が容易に実現できることを意味する。
また、計算機の数を増やした場合に、その計算機用に別個にデータを出力する必要がないので、共通バス101上のデータ量の増加を防止できる。
また、定常時において計算機100Eは、他の計算機100A〜100Cが共通バス101に出力したデータをメモリ110Eに書き込むことはないので、定常時に、計算機100A〜100Dとのデータの授受を必要としないような処理を計算機100Eに実行させるようにした場合には、計算機100Eは、メモリ110Eの格納領域を専有し、かつアクセス競合を生じることなく効率的に処理を行うことができる。
なお、本適用例では、処理Cを計算機100Cと100Eとが分担して処理する際に、分担処理を行っている他の計算機が生成したData2の参照が必要ないものとして説明したが、他の計算機が生成したData2の参照が必要な場合にも、適用例1で説明したように、計算機100Cと100Eの入力管理情報テーブル190に、分担処理を行っている他の計算機が出力するData2を受領するような入力管理情報を登録することで実現可能である。
また、本適用例では、処理Cを計算機100Cと100Eとが分担して処理する場合を説明したが、例えば、計算機100Cが故障等により使用できなくなった場合においても、同様の方法で、計算機100Cによる処理Cの実行を、計算機100Eに代替させることが可能である。
また、本適用例では、計算機100Eは、定常時においては、他の計算機100A〜100CからのData0〜2を受領しないよう、計算機100Eの入力管理情報テーブル190を設定していたが、定常時においても受領するようにしておいてもよい。計算機100C、100Dにおいても、それぞれ計算機100EからData1、Data2及び3を受領するように、計算機100C、100Dの入力管理情報テーブル190を設定してもよい(図22(a)、(b)参照)。
この場合、各計算機間のデータの流れは、同図(c)に示すようになる。
これにより、計算機100A〜100Cが生成した最新のData0〜2が計算機100Eのメモリ110Eに常時反映されるため、計算機100Eが処理B〜Dのいずれの分担処理を開始する際にも、出力管理情報テーブル180及び入力管理情報テーブル190を設定しなおす必要がなく、より高速に分担処理を開始させることができる。
なお、図22(b)のように計算機100C、100Dにおいて、入力管理情報テーブル190を設定した場合でも、計算機100Eが分担処理を開始するまでは、計算機100Eから共通バス101にData1、Data2やData3が出力されることはないので、メモリ110BへのData1、メモリ110CへのData2やメモリ110DへのData3の書き込みは生じない。従って、上述のように設定した場合でも、計算機100Eが分担処理を開始するまでは、共通バス101におけるデータ量は、図20で説明した場合と変わらず、他の計算機に影響を与えることもない。
<適用例5>
実施の形態1で説明した各計算機間のデータ共有方法を、各計算機の初期化処理に適用した例を説明する。
<各メモリ上のデータ配置>
図23(a)は、適用例5に係る各メモリのデータ配置を示す図である。
ここで、各メモリにおけるInit allは、各計算機が共通して使用する初期データであり、Init0〜Init3は、それぞれ計算機100A〜100Dのみが使用する初期データであり、Init12は、計算機100Bと100Cとが、Init23は、計算機100Cと100Dとが、Init31は、計算機100Bと100Dとが使用する初期データである。
<管理情報テーブル>
図23(b)は、適用例5に係る各計算機の出力管理情報テーブル180の内容例を示す図である。
同図に示すように、各計算機における出力管理情報テーブル180を設定することにより、計算機100Aは、Init all、Init1〜3、Init12、Init23、Init31をメモリ110Aに書き込む際に、これらを、対応するMaster ID等と共に共通バス101に出力することになる。
なお、他の計算機(100B〜100D)の出力管理情報テーブル180には有効な出力管理情報が登録されていない(つまり、Validは「0」であるが、同図における図示は省略している)ため、計算機100B〜100Dは、共通バス101にデータを出力することはない。
図23(c)は、適用例5に係る各計算機の入力管理情報テーブル190の内容例を示す図である。
同図に示すように、各計算機における入力管理情報テーブル190を設定することにより、計算機100Bは、Init all、Init1、Init12、Init31を、計算機100Cは、Init all、Init2、Init12、Init23を、計算機100Dは、Init all、Init3、Init23、Init31を各メモリ(100B〜100D)のそれぞれ対応する領域に書き込むことになる。
なお、計算機100Aの入力管理情報テーブル190には有効な入力管理情報が登録されていない(つまり、Validは「0」であるが、同図における図示は省略している)ため、計算機100Aは、共通バス101に他の計算機(100B〜100D)により出力されているデータをメモリ110Aに書き込むことはない。
上述のように、各計算機の出力管理情報テーブル180及び入力管理情報テーブル190を設定することによって、計算機100Aが各初期データ(Init all、Init1〜3、Init12、Init23、Init31)をメモリ110Aに書き込むだけで、メモリ110B〜110Dに他の計算機(100B〜100D)が使用する初期データがそれぞれ書き込まれることになるため、システム全体の初期化を高速に行うことができる。
また、本適用例では、計算機100Aのみが初期データの書き込みを行うため、例えば、初期データを外部記憶装置で保持するようなシステムにおいては、計算機100Aのみをこの外部記憶装置と接続すれば足りる。
即ち、マルチプロセッサシステムにおいて、外部記憶装置と接続するためのインタフェース部を計算機100Aのみに設ければ足りるため、システム全体のコストを削減することができる。
≪実施の形態2≫
実施の形態1に係る各計算機の選択部160は、出力管理部140からのメモリアクセス要求信号と入力管理部150からの書き込み要求信号との両方を受領した場合に、入力管理部150からの書き込み要求信号を優先的にメモリ制御部170に送出するものとして説明した。
従って、計算機内のプロセッサからのメモリアクセスが待たされ、処理効率が低下するようなことが生じ得る。
そこで、以下では、各計算機に、入力管理部150からの書き込み要求に係るデータ等を一時的に格納するためのバッファを設けることにより、計算機内のプロセッサからのメモリアクセスをより高速に行わせるように変えた一実施例を、上述の実施の形態1からの変更部分を中心に説明する。
<構成>
図24は、実施の形態2に係る処理システム1100のシステム構成図である。
処理システム1100は、同図に示すとおり、実施の形態1に係る処理システム1000における各計算機に代えて、計算機200A〜200Cを備える。
計算機200A〜200Cはそれぞれ、実施の形態1に係る各計算機の選択部160に代えて共有データ制御部220を備え、更にバッファ210を備える。
各計算機(200A〜200C)は、同様の構成を有するため、以下では、計算機200Aを例に説明する。なお、同図において太線で示す箇所は、特に、実施の形態1に係る計算機100Aと異なる箇所であることを示している。
ここで、バッファ210は、共有データ制御部220が入力管理部150を介して受領した書き込み要求信号に係るデータを一時的に記憶するためのメモリ領域である。より詳細には、共有データ制御部220により、書き込み対象データと、そのデータを書き込む先となるメモリ110Aのアドレスと、そのデータがメモリ110Aへの書き込みが完了しているか否かを示すフラグとが対応付けて記録される。
共有データ制御部220は、出力管理部140又は入力管理部150からメモリアクセス要求信号を受領した場合に、バッファ210、又はメモリ制御部170を介してメモリ110Aにアクセスする機能を有する。
<動作>
以下、共有データ制御部220の動作を説明する。
図25は、共有データ制御部220によるアクセス制御処理を示すフローチャートである。
なお、以下のステップS201〜S216の処理は繰り返し実行されるものとする。
共有データ制御部220は、出力管理部140からメモリアクセス要求信号を受領したか否かを判定し(ステップS201)、受領した場合には(ステップS201:YES)、そのアクセス要求に係るメモリ110A上のアドレスが一致し、かつ、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されているか否かを判定する(ステップS202)。より詳細には、アクセス要求に係るメモリ110A上のアドレスと一致するアドレス及びメモリ110Aへの書き込みが完了していない旨のフラグと対応付けられているデータがバッファ210に格納されている場合にのみ肯定的な判定を行う。
アドレスが一致し、かつ、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されていない場合には(ステップS202:NO)、共有データ制御部220は、出力管理部140からのメモリアクセス要求信号等をメモリ制御部170に送出する(ステップS203)。
続いて、共有データ制御部220は、入力管理部150から書き込み要求信号を受領したか否かを判定し(ステップS204)、受領していない場合には(ステップS204:NO)、アクセス制御処理を終了し、受領した場合には(ステップS204:YES)、入力管理部150からの書き込み要求信号に含まれる書き込み対象データと、対応するメモリ110Aのアドレスと、書き込みが完了していない旨を示すフラグとを対応付けてバッファ210に書き込み(ステップS205)、アクセス制御処理を終了する。
一方、ステップS202において、アドレスが一致し、かつメモリ110Aへの書き込みが完了していないデータがバッファ210に格納されている場合には(ステップS202:YES)、共有データ制御部220は、そのデータをバッファ210から読み出し(ステップS206)、出力管理部140からのメモリアクセス要求信号が書き込み要求信号であるか否かを判定する(ステップS207)。
出力管理部140からのメモリアクセス要求信号が読み出し要求信号である場合には(ステップS207:NO)、共有データ制御部220は、ステップS206で読み出したデータをプロセッサに送出すると共に、そのデータを、バッファ210に記憶されているアドレスに書き込むための書き込み要求信号を、メモリ制御部170に送出する(ステップS208)。
一方、出力管理部140からのメモリアクセス要求信号が書き込み要求信号である場合には(ステップS207:YES)、共有データ制御部220は、ステップS206で読み出したデータに、その書き込み要求信号に係るデータを反映させる処理(例えば、上書き処理)を行い、反映後のデータをバッファ210に記憶されているアドレスに書き込むための書き込み要求信号を、メモリ制御部170に送出する(ステップS209)。
ステップS208、又はステップS209において、書き込み要求信号を送出すると、共有データ制御部220は、バッファ210において、その書き込み要求に係るデータと対応付けて記憶されているフラグを書き込みが完了している旨を示すように更新し、上述のステップS204の処理に進む。
また、ステップS201において、出力管理部140からメモリアクセス要求信号を受領していない場合には(ステップS201:NO)、共有データ制御部220は、入力管理部150からメモリアクセス要求信号(書き込み要求信号)を受領したか否かを判定し(ステップS210)、受領していない場合には(ステップS210:NO)、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されているか否かを判定する(ステップS211)。より詳細には、メモリ110Aへの書き込みが完了していない旨のフラグと対応付けられているデータがバッファ210に格納されている場合に肯定的な判定を行う。
メモリ110Aへの書き込みが完了していないデータが存在しない場合には(ステップS211:NO)、そのままアクセス制御処理を終了し、メモリ110Aへの書き込みが完了していないデータが存在する場合には(ステップS211:YES)、共有データ制御部220は、そのデータをバッファ210から読み出し、読み出したデータを、バッファ210に記憶されているアドレスに書き込むための書き込み要求信号を、メモリ制御部170に送出し(ステップS212)、ステップS208等で説明したのと同様にフラグを更新し、アクセス制御処理を終了する。
一方、ステップS210において、入力管理部150からメモリアクセス要求信号(書き込み要求信号)を受領した場合には(ステップS210:YES)、その書き込み要求に係るメモリ110A上のアドレスが一致し、かつ、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されているか否かを上述のステップS202と同様に判定する(ステップS213)。
アドレスが一致し、かつ、メモリ110Aへの書き込みが完了していないデータがバッファ210に存在しない場合には(ステップS213:NO)、共有データ制御部220は、入力管理部150からのメモリアクセス要求信号(書き込み要求信号)をメモリ制御部170に送出し(ステップS214)、アクセス制御処理を終了する。
また、ステップS213において、アドレスが一致し、かつメモリ110Aへの書き込みが完了していないデータがバッファ210に格納されている場合には(ステップS213:YES)、共有データ制御部220は、そのデータをバッファ210から読み出す(ステップS215)。
また、共有データ制御部220は、読み出したデータに、その書き込み要求信号に係るデータを反映させる処理(例えば、上書き処理)を行い、反映後のデータをバッファ210に記憶されているアドレスに書き込むための書き込み要求信号を、メモリ制御部170に送出し(ステップS216)、ステップS208等で説明したのと同様にフラグを更新し、アクセス制御処理を終了する。
このように、共有データ制御部220は、他の計算機との共有データ(書き込み対象データ)をバッファ210に格納し、計算機内のプロセッサによるメモリアクセスがなされていないときにバッファ210に格納されている共有データを書き込むので、計算機内のプロセッサからのメモリアクセス要求と、他の計算機との共有データ(書き込み対象データ)に係る書き込み要求との競合を防ぐことができる。即ち、計算機内のプロセッサによるメモリアクセスを待たせることなく、高速に行わせることができる。
また、計算機内のプロセッサからのアクセス要求に係るデータが、未だメモリ110Aへの書き込みが完了していないデータとしてバッファ210に格納されている場合に、共有データ制御部220は、そのバッファ210内のデータに対してアクセス処理を行う。従って、計算機内のプロセッサは、他計算機との共有データ(書き込み対象データ)が、メモリ110Aに書き込まれる前の状態であっても、最新の共有データにアクセスできると共に、メモリ110Aへのアクセスが行われないので、この間にバッファ210内のデータを書き込むことが可能になり、バッファ210内のデータを比較的短時間でメモリ110Aに反映させることができる。
≪実施の形態3≫
以下では、各計算機内のプロセッサが処理に用いるデータを、このプロセッサのみが用いるデータと、共有データとに分け、物理的に異なる2つのメモリ(固有メモリと共有メモリ)にそれぞれのデータを格納することで、各計算機内のプロセッサからのメモリアクセスを待たせることなく、より高速に行わせるように変えた一実施例を、上述の実施の形態1からの変更部分を中心に説明する。
図26は、実施の形態3に係る処理システム1200のシステム構成図である。
処理システム1200は、同図に示すとおり、実施の形態1に係る処理システム1000における各計算機に代えて、計算機300A〜300Cを備える。
計算機300A〜300Cは、実施の形態1に係る各計算機の選択部160に代えてメモリ選択制御部330を、メモリ制御部170に代えて固有メモリ制御部340と共有メモリ制御部350とを備える。
また、各計算機はメモリ110A〜110Cに代えてそれぞれ固有メモリ310A〜310Cと共有メモリ320A〜320Cとに接続している。
各計算機(300A〜300C)は、同様の構成を有するため、以下では、計算機300Aを例に説明する。なお、同図において太線で示す箇所は、特に、実施の形態1に係る計算機100Aと異なる箇所であることを示している。
ここで、メモリ選択制御部330は、出力管理部140から受領したメモリアクセス要求信号及び入力管理部150から受領した書き込み要求信号を、固有メモリ制御部340と共有メモリ制御部350とのいずれかに送出する機能を有する。
より詳細には、出力管理部140から受領したメモリアクセス要求信号が、固有メモリ310Aに対するアクセス要求信号である場合には、この信号を固有メモリ制御部340に送出し、共有メモリ320Aに対するアクセス要求信号である場合には、この信号を共有メモリ制御部350に送出する。また、入力管理部150から受領した書き込み要求信号は、全て共有メモリ制御部350に送出する。特に、出力管理部140からの共有メモリ320Aに対するアクセス要求信号と、入力管理部150からの書き込み要求信号とを共に受領した場合には、入力管理部150からの書き込み要求信号を優先的に共有メモリ制御部350に送出する。つまり、この場合、プロセッサからの共有メモリ320Aへのアクセスは待たされることになる。
なお、メモリ選択制御部330は、出力管理部140から受領したメモリアクセス要求信号が、固有メモリ310Aと共有メモリ320Aのいずれに対するアクセス要求信号であるかを判断する必要がある。この判断のために、メモリ選択制御部330は、例えば論理アドレスと物理アドレスとを対応付けた情報を保持し、出力管理部140から受領したメモリアクセス要求信号に含まれるアドレス(論理アドレス)を、各メモリ(固有メモリ310A、共有メモリ320A)におけるアドレス(物理アドレス)に変換して、変換後のアドレスを指定する新たなメモリアクセス要求信号を生成して、対応するメモリに送出するようにしてもよい。
また、上述の論理アドレスと物理アドレスとを対応付けた情報を調停部130が保持するようにし、調停部130が出力管理部140にメモリアクセス要求信号を送出する際に、新たなメモリアクセス要求信号を生成して、出力管理部140に送出するようにしてもよい。
また、その他の方法として、各プロセッサが調停部130に送出するメモリアクセス要求信号を、固有メモリ310Aと共有メモリ320Aのいずれに対するアクセス要求信号であるかを指定する情報を含むように変更してもよい。
固有メモリ制御部340は、メモリ選択制御部330から受領したメモリアクセス要求信号等に基づいて、他の計算機と共有する必要のないデータ、つまり、計算機300A内の各プロセッサ(120A〜120C)のみが用いるデータを記憶する固有メモリ310Aにアクセスする機能を有する。この固有メモリ310Aに記憶するデータの例としては、各プロセッサ(120A〜120C)それぞれが実行すべきプログラムが挙げられる。
共有メモリ制御部350は、メモリ選択制御部330から受領したメモリアクセス要求信号等に基づいて、他の計算機との共有データを記憶する共有メモリ320Aにアクセスする機能を有する。
このように、他の計算機と共有する必要のないデータを固有メモリ310Aに記憶し、共有データを共有メモリ320Aに記憶させるようにしたので、固有メモリ310Aと共有メモリ320Aとに同時にアクセスすることが可能になる。つまり、計算機内のプロセッサからのアクセス要求が固有メモリ310Aに対するアクセス要求である場合には、このアクセス要求と、他の計算機との共有データ(書き込み対象データ)に係る共有メモリ320Aに対する書き込み要求との競合を防ぐことができる。
≪実施の形態4≫
以下では、実施の形態2及び実施の形態3における特徴的な構成を組み合わせた一実施例を、実施の形態3からの変更部分を中心に説明する。
図27は、実施の形態4に係る処理システム1300のシステム構成図である。
処理システム1300は、同図に示すとおり、実施の形態3に係る計算機300A〜300Cに代えて計算機400A〜400Cを備える。
計算機400A〜400Cは、実施の形態3に係る各計算機のメモリ選択制御部330に代えてメモリ選択制御部410を備えると共に、実施の形態2に係るバッファ210及び共有データ制御部220を備える。
各計算機(400A〜400C)は、同様の構成を有するため、以下では、計算機400Aを例に説明する。なお、同図において太線で示す箇所は、特に、実施の形態3に係る計算機300Aと異なる箇所であることを示している。
ここで、メモリ選択制御部410は、出力管理部140から受領した共有メモリ320Aに対するアクセス要求信号及び入力管理部150から受領した書き込み要求信号を、共有データ制御部220に送出する点で実施の形態3に係るメモリ選択制御部330と異なる。
共有データ制御部220は、メモリ選択制御部410を介して、出力管理部140又は入力管理部150からメモリアクセス要求信号を受領した場合に、バッファ210、又は共有メモリ制御部350を介して共有メモリ320Aにアクセスする機能を有する。具体的には、実施の形態2で説明したように、図25に示すフローチャートに従って、アクセス制御処理を行う。
これにより、実施の形態3の場合と比較し、計算機内のプロセッサからのアクセス要求が共有メモリ320Aに対するアクセス要求であっても、他の計算機との共有データ(書き込み対象データ)に係る共有メモリ320Aに対する書き込み要求との競合を防ぐことができる。つまり、計算機内のプロセッサによるメモリアクセスを待たせることなく、高速に行わせることができる。
また、共有データ制御部220は、計算機内のプロセッサによる共有メモリ320Aへのアクセスがなされていないときにバッファ210に格納されている共有データを共有メモリ320Aへ書き込むことになる。つまり、計算機内のプロセッサによる固有メモリ310Aへのアクセスがなされている場合にも、バッファ210に格納されている共有データを共有メモリ320Aへ書き込むことが可能になる。従って、実施の形態2の場合を比較し、バッファ210に格納されている共有データをより頻繁に共有メモリ320Aに書き込むことが可能になるので、より速やかにバッファ210内のデータを共有メモリ320Aに反映させることができる。この結果、実施の形態2よりも少ない容量のバッファ210を用いることが可能になる。
≪変形例≫
以下では、各計算機内の出力管理部140が自計算機内の特定のプロセッサからの書き込み要求信号を受領した場合にのみ共通バス101に書き込み対象のデータを出力するように変えた一変形例について説明する。
変形例に係る各計算機(500A〜500D)は、実施の形態1に係る各計算機の出力管理部140が保持する出力管理情報テーブル180のデータ構造と、調停部130の機能とを若干変更したものである。
具体的には、変形例に係る調停部は、各プロセッサによるメモリ110Aに対するアクセス要求を調停し、1つのメモリアクセス要求信号を変形例に係る出力管理部に送出する際に、その信号の送信元であるプロセッサの識別情報(後述するProcessor ID)も変形例に係る出力管理部に送出する。
以下では、変形例に係る処理システムを、上述の適用例3と同様に、計算機500A〜500Dがそれぞれ処理A〜Dを行う連携処理システムに適用した場合を例にして、実施の形態1からの変更部分を中心に説明する。
特に、この例では、各計算機内のプロセッサ120Aがそれぞれ処理A〜Dを行うものとすると共に、計算機100Bによる処理Bの負荷が高くなると、計算機100Aのプロセッサ120Bが処理Bを分担処理するものとして説明する。なお、この例に係る計算機500B〜500Dは、適用例5と同様に、1つの前の処理結果(Data0〜2)が書き込まれた場合に、これらのデータを用いた処理B〜Dを開始するものとする。
図28(a)は、変形例に係る各計算機の出力管理情報テーブルの内容例を示す図である。
同図に示すように、変形例に係る出力管理情報テーブルの出力管理情報には、実施の形態1に係る出力管理情報テーブル180の出力管理情報に含まれる各データに加え、Processor IDが含まれる。
ここで、Processor IDは、対応する共有データに対する書き込み要求信号を送出するプロセッサの識別情報であり、以下では、一例として、変形例に係る各計算機のプロセッサ120A〜120CのProcessor IDが「0」〜「2」であるものとする。
同図に示すように、各計算機における出力管理情報テーブルを設定することにより、計算機500Aは、Processor IDが「0」と「1」とである各プロセッサ(つまりプロセッサ120Aと120B)の書き込み要求信号に係るデータ(Data0とData1)をメモリ110Aに書き込む際に、これらを、対応するMaster ID等と共に共通バス101に出力する。
また、計算機500B、500Cは、それぞれProcessor IDが「0」であるプロセッサ(つまりプロセッサ120A)の書き込み要求信号に係るデータ(Data1、Data2)を各メモリ(110B、100C)に書き込む際に、これらを、対応するMaster ID等と共に共通バス101に出力する。
図28(b)は、変形例に係る各計算機の入力管理情報テーブル190の内容例を示す図である。
変形例においても、入力管理情報テーブル190のデータ構造は、実施の形態1と変更がなく、同図に示すように、各計算機における入力管理情報テーブルを設定することにより、計算機500Bは、計算機500Aが出力するData0を、計算機500Cは、計算機500A及び500Bが出力するData1を、計算機500Dは、計算機500Cが出力するData2をメモリ110B〜110Dのそれぞれ対応する領域に書き込む。
以下では、計算機500A〜500Dがそれぞれ処理A〜Dを行う連携処理システムの動作を説明する。
図29は、変形例に係る各計算機の動作を説明するための図である。
同図(a)〜(c)は、定常時における各計算機の動作を示している。これについては、上述の適用例3と同様であるため詳細な説明は省略する。
同図(d)は、計算機500Bによる処理Bの負荷が高まり、計算機500Aのプロセッサ120Bが処理Bを分担処理している状態を示している。
計算機500Bは、処理Bの負荷が一定以上(例えば、処理Bの開始から終了までの処理時間が所定時間以上)になると、計算機500Aに処理Bの分担処理を指示し、計算機500Aのプロセッサ120Bは、この指示を受けて処理Bの分担処理を開始する。
計算機500Aのプロセッサ120Bは、例えば、メモリ110Aに書き込まれた自機のプロセッサ120Aによる処理Aの処理結果(Data0)を2等分した後半部分を用いて処理Bを行って、この結果(Data1の後半部分)を、この処理Bに用いたData0の後半部分が格納されていた領域に書き込む。
また、計算機500Bは、計算機500Aのプロセッサ120Bによる処理Bの実行と並行して、例えば、メモリ110Bに格納されているData0の前半部分を用いて処理Bを行って、この結果(Data1の前半部分)を、この処理Bに用いたData0の前半部分が格納されていた領域に書き込む。
計算機500A、500Bはそれぞれ、Data1を書き込む際に、それぞれが記憶する出力管理情報テーブルに基づいて、共通バス101にData1を出力する(Master ID等も共に出力する)。
計算機500Cは、共通バス101に出力されているMaster ID等と自機が記憶する入力管理情報テーブル190とに基づいて、Data1を受領する判定を行い、メモリ110Cの対応する領域に書き込み、処理Cを開始することになる。
このように、変形例に係る出力管理情報テーブルには、Processor IDが含まれるため、上述のように、計算機500Aのプロセッサ120AがData0を書き込むメモリ110Aの領域と、計算機500Aのプロセッサ120BがData1を書き込むメモリ110Aの領域とが重複しても、異なるプロセッサからの書き込み要求信号に係る共有データを別個のデータとして管理することができる。つまり、上述のように、計算機500Aが共通バス101に出力するData0は、計算機500Bに受領させ、Data1は、計算機500Cに受領させるようなことが可能になる。
また、別個の共有データを格納するメモリ上の領域を重複して設定できるので、メモリ上の共有データ用の格納領域を節約することが可能になる。
なお、適用例3で説明したように、各メモリに複数世代分のDataを格納するようにすることで、各計算機が各処理を並列して行うようにすることも可能である。
<補足>
以上、本発明に係る処理システムについて、各実施の形態及び変形例に基づいて説明したが、以下のように変形することも可能であり、本発明は上述した各実施の形態及び変形例に示したとおりの処理システムに限られないことは勿論である。
(1)各実施の形態及び変形例においては、出力管理情報及び入力管理情報は、Validを含み、Validが「1」の場合に、出力管理情報及び入力管理情報は有効であるものとして説明したが、Validを省略し、有効な出力管理情報及び入力管理情報のみを、出力管理情報テーブル及び入力管理情報テーブルに登録するようにしてもよい。
(2)各実施の形態及び変形例においては、出力管理情報テーブルと入力管理情報テーブルとを別個に設けるものとして説明したが、1つの入出力管理テーブルに出力管理情報及び入力管理情報を登録するようにし、出力管理部の出力判定部143及び入力管理部の入力判定部152は、判定の際に、入出力管理テーブルを参照するようにしてもよい。この際、入出力管理テーブルには、出力管理情報及び入力管理情報を区別するためのフラグを登録しておく。
更に、各計算機間で相互に更新するデータを共有するようなシステムにおいては、出力管理情報及び入力管理情報を区別する必要もなく、入出力管理テーブルに登録されている入出力管理情報に従って、自機のプロセッサによる書き込み要求に係るデータを出力し、他の計算機から出力されたデータを受領すればよい。このように変形した場合には、出力管理情報テーブルと入力管理情報テーブルとを別個に設ける場合と比較し、テーブルを格納するためのメモリ容量が半分になる点で有効である。
(3)各実施の形態及び変形例においては、各計算機の出力管理情報テーブル及び入力管理情報テーブルへ登録するデータの生成及び各テーブルへの登録を、処理システムにおける任意の計算機内の1つのプロセッサが行うものとして説明したが、各計算機内のプロセッサが、自機が接続するメモリに記憶されているプログラムを実行することにより生成及び登録するようにしてもよい。
出力管理情報及び入力管理情報は、Master IDとData IDとを含み、両IDの組み合わせにより共有データを識別するため、各計算機は、他の計算機に出力すべき各共有データに、重複しないようにData IDを割り当てれば済み、他の計算機が割り当ているData IDと重複してもよいことから、各計算機は独自に出力管理情報テーブルを設定できる。
また、処理システムにおける任意の計算機内の1つのプロセッサが各計算機の出力管理情報テーブル及び入力管理情報テーブルへ登録するデータの生成のみを行い、テーブル設定用のバスを介して、各計算機に生成したデータを送信し、各計算機内のプロセッサが受領したデータを自機内のテーブルに登録するようにしてもよい。
また、既に登録済みの出力管理情報及び入力管理情報の有効又は無効の設定(つまり、Validの更新)を、各計算機内のプロセッサが行うようにしてもよい。
(4)各実施の形態及び変形例においては、出力管理情報及び入力管理情報は、Master IDとData IDとを含み、両IDの組み合わせにより共有データを識別する例を説明したが、システム全体を通じて各共有データを識別可能な識別情報を生成するようにしてもよい。
(5)各実施の形態及び変形例においては、各計算機の出力管理情報テーブルにおける各出力管理情報には、その計算機のMaster IDが含まれるものとして説明したが、各計算機は、自機のMaster IDを別途記憶しておくようにし、Master IDについては各出力管理情報には含めないようにしてもよい。
(6)各実施の形態及び変形例においては、書き込み先のアドレス(他の計算機が出力したオフセット+対応する入力管理情報のStart Address)は、その対応する入力管理情報のEnd Addressまでの範囲に収まるものとして説明した。しかしながら、必ずしもこのようにする必要はなく、対応する共有データの格納領域以外への書き込みを行わないように、例えば、以下のように制御すればよい。
(a)そのアクセスを共有領域外アクセスとして、その計算機のメモリに格納しない制御とする。
(b)算出した書き込み先のアドレスから、その格納領域のアドレス空間分を引いたアドレスを格納先として、その格納領域内で折り返す制御とする。
(c)特定の固定アドレスへのアクセスに変換する制御する。
(7)各実施の形態及び変形例においては、出力管理情報及び入力管理情報には、End Addressを含むものとして説明したが、End Addresssを含まないこととしてもよい。その場合、例えば、各共有データに対する格納領域を同一サイズにする必要がある。
(8)各実施の形態及び変形例では、出力管理情報及び入力管理情報における格納領域の指定をStart AddressとEnd Addresssとで行うものとして説明したが、これに限らず、例えば、End Addressの代わりに、領域サイズを用いてもよい。
(9)各実施の形態及び変形例では、共通バス101のバス幅を小さくするために、書き込み先アドレスを、Master IDとData IDとオフセットとで指定する方式を説明したが、これに限らず、例えば、書き込み先アドレスを、Master IDとData IDのみで指定し、対応する領域の全データを書き込み対象のデータとして送信するようにしてもよい。また、出力管理部は、調停部を介して受領したプロセッサからのメモリアクセス要求信号に含まれているアドレスの全ビットあるいは、一部のビットのみを出力してアドレスを特定するようにしてもよい。
(10)各実施の形態及び変形例においては、説明を簡単にするために、調停部から送出されるメモリアクセス要求信号におけるアクセス要求の転送単位を1サイクルで実行できる単位として説明を行ったが、これに限らず、例えば、複数サイクルで転送するバースト転送のアクセス要求であっても、同様に実装可能である。
この場合、バースト転送中に、出力管理情報テーブルにて設定されている格納領域の境界を跨るようなアクセスが発生した場合には、そのアクセス要求を、非共有データアクセスと、共有データアクセスに分割して、それぞれに対応した処理を行う制御や、共通バス調停部102において、調停単位を1バースト転送とするために、共通バス101へのデータ転送が完了したことを通知する信号を、出力管理部が共通バス調停部102に送出する制御を行う等、いくつか改良が必要であるが、これらは既存の実装技術を用いて対応できるため、ここでは詳細な説明を省略する。
(11)各実施の形態及び変形例においては、説明を簡単にするために、メモリ制御部170、固有メモリ制御部340、共有メモリ制御部350は、単に、書き込み要求信号に係るデータをメモリに書き込むものとして説明したが、この書き込み要求信号に、バイトマスク等、書き込み処理に特別な処理を施す制御情報を含めてもよく、メモリ制御部170等は、その制御情報に従ったデータの更新処理を行うこととしてもよい。
(12)実施の形態2では、バッファ210に格納されているメモリへの書き込みが完了していないデータの書き込みを、計算機内のプロセッサからメモリへのアクセスが行われていない間に行うものとして説明したが、例えば、バッファ210内に未書込のデータが存在する場合に、共有データ制御部220は、そのデータをメモリに書き込むために、明示的に書き込み要求信号を調停部130に送出し、調停部130が調停の結果、この信号を選択したときに、バッファ210からメモリへ書き込むようにしてもよい。
これにより、調停部130において、バッファ210内の未書込のデータを確実にメモリに書き込むことが保証でき、例えば、バッファがフルになった結果、共通バス101上のデータ転送を停止したり、調停部130で選択されたプロセッサのメモリアクセス要求を共有データ制御部220で停止するといった処理を回避でき、システムの性能保証が容易となる。
(13)実施の形態2では、図25で説明したように、入力管理部150からの書き込み要求信号のみを受領し(ステップS201:NO、S210:YES)、メモリ110Aへの書き込みが完了していないデータがバッファ210に格納されているが、その書き込み要求に係るメモリ110A上のアドレスと一致しない場合に(ステップS213:NO)、共有データ制御部220は、入力管理部150からの書き込み要求信号をメモリ制御部170に送出する(ステップS214)ものとして説明した。
しかしながら、例えば、バッファ210内の未書込のデータのうち、最も早くバッファ210に書き込まれたデータをメモリに書き込む書き込み要求信号をメモリ制御部170に送出し、入力管理部150からの書き込み要求信号に係るデータをバッファ210に書き込むようにしてもよい。
これにより、他の計算機から受領した共有データのうち、更新が最も古いものから優先してメモリに反映できるため、他計算機から受領してからメモリに反映されるまでの期間を短くすることが可能となる。
(14)実施の形態2では、図25で説明したように、アクセス要求が競合した場合、バッファ210への読み出しと書き込みが同時に発生する場合があるが、バッファ210をデュアルポートメモリで構成するか、バッファ210のバスを広げる、バッファ210の動作周波数を上げる等によりバッファ210の転送帯域を上げることにより、バッファ210の転送待ちによる各メモリアクセス処理の性能劣化を回避することが可能である。
(15)実施の形態2では、メモリアクセス性能の高速化実現のため、共有データ制御部220が受領したメモリアクセス要求信号に係るデータが、バッファ210にメモリへの未書込データとして格納されていた場合には、このデータを読み出してプロセッサに送出した後にこのデータをメモリに書き込み、又はバッファ210から読み出したデータに書き込み要求信号に係るデータを反映させた後に、反映後のデータをメモリに書き込むものとして説明した。
しかしながら、処理を簡略化するために、以下のようにしてもよい。
即ち、プロセッサからの読み出し要求信号に係るデータが、バッファ210にメモリへの未書込データとして格納されていた場合には、この未書込データをメモリに書き込んだ後に、読み出し要求信号に係るデータをメモリから読み出すようにしてもよい。
また、入力管理部150からの書き込み要求信号に係るデータが、バッファ210にメモリへの未書込データとして格納されていた場合には、この未書込データをメモリに書き込む処理と、書き込み要求信号に係るデータをバッファ210に書き込む処理とを並行して行うようにしてもよい。
(16)実施の形態3においては、他の計算機との共有データを全て共有メモリ320Aに格納するものとして説明したが、より計算機内のプロセッサのメモリアクセス性能を向上させるために、他の計算機と共有するデータのうち、自計算機のみが更新するデータについては、固有メモリ310Aに格納し、他の計算機も更新するデータのみ共有メモリ320Aに格納するようにしてもよい。
この結果、他の計算機から受領した共有データを書き込むための共有メモリ320Aへのアクセスと、自機内のプロセッサから自機のみが更新する共有データを書き込むための固有メモリ310Aへのアクセスとを並行して行うことができるので、自機内のプロセッサによるメモリアクセスを待たせる必要がなく、アクセス性能の劣化を回避できるようになる。
(17)変形例においては、出力管理情報にProcessor IDを含める例を説明したが、これに代えて、タスクの識別情報であるTask IDを含めるようにしてもよい。つまり、プロセッサ単位ではなく、タスク単位で他の計算機に送出すべき共有データであるか否かを判断できるようにしてもよい。
(18)変形例に係る出力管理部は、Processor IDについては共通バス101に出力しないものとして説明したが、各入力管理情報にもProcessor IDを含めるように変形し、各計算機は、Processor IDにも基づいて自機が共有すべきデータか否かを判断するようにしてもよい。
(19)各実施の形態及び変形例においては、各計算機の構成は同様であるものとして説明したが、これに限定されるものではない。例えば、各計算機内のプロセッサの数は異なっていてもよいし、各計算機が備えるプロセッサの数は1つであってもよい。この場合、調停部は不要になる。すなわち1つのプロセッサに1つの専用メモリが割り当てられる構成の計算機を複数並列する場合にも、各実施の形態及び変形例で説明したのと同様に適用可能である。
また、プロセッサは、一部あるいは全部がDSP(Digital Signal Processor)、アクセラレータ(ワイヤードロジック)等の非プロセッサから構成されるものであってもよい。
(20)各実施の形態及び変形例において説明した各計算機の各機能ブロックは、典型的には集積回路であるLSI(Large Scale Integration)として実現される。これらは個別に1チップ化されてもよいし、一部、又は全てを含むように1チップ化されても良い。
また、各計算機を、それぞれ1つの半導体に集積されたLSIで構成されたものとし、複数のLSI間で、データ共有するデータ共有機構としても適応可能である。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路、又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩、又は派生する別技術により、LSIに置き換わる集積回路化の技術が登場すれば、当然その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適応等が可能性としてあり得る。
(21)各実施の形態及び変形例においては、各メモリは、各計算機の外部にあるものとして図示されているが、メモリは、各計算機の内部にあってもよい。また前述したように、LSIの構成単位としては、様々な形態が存在するが、それぞれの実装形態において、各計算機のメモリは、構成されるLSIの内部、外部どちらに存在してもよく、さらには、混在する形態であっても適用可能である。
(22)各実施の形態及び変形例において、共通バス調停部102は、各計算機の外部に独立して存在するものとして説明したが、全ての、あるいは一部の計算機の内部にあるものとしても良い。
(23)各実施の形態及び変形例において、出力管理部及び入力管理部は回路であるとして説明したが、例えば、各計算機に含まれる1つのプロセッサが所定のプログラムを実行することにより、出力管理部及び入力管理部の機能を実現するようにしてもよいし、別個のプロセッサが出力管理部と入力管理部の機能を実現するようにしてもよい。
(24)本発明に係る処理システムが備える各処理装置は、各実施の形態及び変形例に係る各計算機及び各メモリに相当する。
また、本発明に係る処理装置における共有データ記憶手段は、各実施の形態及び変形例に係るメモリ又は共有メモリに相当し、出力手段、入力手段、及び管理情報記憶手段は出力管理部及び入力管理部に相当し、共有データアクセス手段は選択部及びメモリ制御部に相当し、バッファメモリはバッファに相当し、アクセス制御手段は共有データ制御部及びメモリ制御部に相当し、固有データ記憶手段は固有メモリに相当し、データアクセス手段はメモリ選択制御部、固有メモリ制御部、及び共有メモリ制御部に相当し、第1メモリは固有メモリに相当し、第2メモリは共有メモリに相当し、メモリアクセス手段は、メモリ選択制御部、固有メモリ制御部、共有データ制御部、及び共有メモリ制御部に相当する。