(57)【要約】【課題】キャッシュサイズバウンダリが異なるプロセッサで同じメモリをアクセスすると、キャッシュコヒーレンス不整合を発生させてしまうという課題を解決する。この課題はＯＳによるエミュレーションでも解決することができない。【解決手段】２つのプロセッサのキャッシュサイズバウンダリの最小公倍数に基づいてメモリにロードするモジュールのアドレスを決定するようにした。また、動的にメモリを確保する場合、前記最小公倍数を単位として同じ位置にくるように論理・物理マッピングを行うようにした。キャッシュコヒーレンス不整合が発生することがなくなり、かつメモリを効率的に使用することができる。【選択図】　　　　　　図１
2004094906.tif 000002
【特許請求の範囲】
【請求項１】
アーキテクチャの異なる複数のプロセッサからアクセスされるメモリのキャッシュコヒーレンス不整合を回避する方法において、
前記複数のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて、前記メモリにロードするモジュールのアドレスを決定するようにしたことを特徴とするキャッシュコヒーレンス不整合を回避する方法。
【請求項２】
前記キャッシュサイズバウンダリの公倍数の１つの領域内に複数の前記モジュールがロードされないように、前記モジュールのアドレスを決定するようにしたことを特徴とする請求項１記載のキャッシュコヒーレンス不整合を回避する方法。
【請求項３】
前記公倍数は最小公倍数であることを特徴とする請求項１または請求項２のいずれかに記載のキャッシュコヒーレンス不整合を回避する方法。
【請求項４】
前記プロッセッサのうちキャッシュインデックス機構がないプロセッサについては、キャッシュラインサイズを最小バウンダリサイズとするようにしたことを特徴とする請求項１ないし請求項３のいずれかに記載のキャッシュコヒーレンス不整合を回避する方法。
【請求項５】
アーキテクチャの異なる複数のプロセッサからアクセスされ、動的に割り付けが行われるメモリのキャッシュコヒーレンス不整合を回避する方法において、
前記複数のプロセッサのキャッシュサイズバウンダリの公倍数を単位として前記メモリのマッピングを行うようにしたことを特徴とするキャッシュコヒーレンス不整合を回避する方法。
【請求項６】
動的に割り付ける領域の論理アドレスと前記動的に割り付けが行われるメモリのアドレスが、前記キャッシュサイズバウンダリの公倍数の単位内で同じ位置にくるように、前記割り付けが行われるメモリのアドレスを決定するようにしたことを特徴とする請求項５記載のキャッシュコヒーレンス不整合を回避する方法。
【請求項７】
前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りを計算し、前記割り付けが行われるメモリのアドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りと、前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りが一致する部分に割り付けるようにしたことを特徴とする請求項５または請求項６のいずれかに記載のキャッシュコヒーレンスを回避する方法。
【請求項８】
前記公倍数は最小公倍数であることを特徴とする請求項５ないし請求項７のいずれかに記載のキャッシュコヒーレンスを回避する方法。
【請求項９】
制御側および待機側のプロセッサモジュールを有し、これらのプロセッサモジュールはプロセッサおよびメモリを内蔵し、前記プロセッサは互いに相手側のプロセッサモジュール内の前記メモリにアクセスできるようにされ、前記制御側のプロセッサモジュールに異常が発生したときに前記待機側のプロセッサモジュールに切り替えるように構成された２重化システムにおいて、
前記制御側および待機側のプロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて、前記メモリにロードするモジュールのアドレスを決定するようにしたことを特徴とする２重化システム。
【請求項１０】
前記キャッシュサイズバウンダリの公倍数の１つの領域内に複数の前記モジュールがロードされないように、前記モジュールのアドレスを決定するようにしたことを特徴とする請求項９記載の２重化システム。
【請求項１１】
前記公倍数は最小公倍数であることを特徴とする請求項９記載または請求項１０のいずれかに記載の２重化システム。
【請求項１２】
前記プロッセッサのうちキャッシュインデックス機構がないプロセッサについては、キャッシュラインサイズを最小バウンダリサイズとするようにしたことを特徴とする請求項９ないし請求項１１のいずれかに記載の２重化システム。
【請求項１３】
制御側および待機側のプロセッサモジュールを有し、これらのプロセッサモジュールはプロセッサおよびメモリを内蔵し、前記プロセッサは互いの相手側のプロセッサモジュール内の前記メモリにアクセスできるようにされ、前記制御側のプロセッサモジュールに異常が発生したときに前記待機側のプロセッサモジュールに切り替えるように構成された２重化システムにおいて、
前記メモリに動的に割付を行う際に、前記制御側および前記待機側プロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数を単位として、前記メモリのマッピングを行うようにしたことを特徴とする２重化システム。
【請求項１４】
動的に割り付ける領域の論理アドレスと前記動的に割り付けが行われるメモリのアドレスが、前記キャッシュサイズバウンダリの公倍数の単位内で同じ位置にくるように、前記割り付けが行われるメモリのアドレスを決定するようにしたことを特徴とする請求項１３記載の２重化システム。
【請求項１５】
前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りを計算し、前記割り付けが行われるメモリのアドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りと、前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りが一致する部分に割り付けるようにしたことを特徴とする請求項１３または請求項１４のいずれかに記載の２重化システム。
【請求項１６】
前記公倍数は最小公倍数であることを特徴とする請求項１３ないし請求項１５のいずれかに記載の２重化システム。
【請求項１７】
制御側および待機側のプロセッサモジュールを有し、これらのプロセッサモジュールはプロセッサおよびメモリを内蔵し、前記プロセッサは互いに相手側のプロセッサモジュール内の前記メモリにアクセスできるようにされ、前記制御側のプロセッサモジュールに異常が発生したときに前記待機側のプロセッサモジュールに切り替えるように構成された２重化システムにおいて、
前記制御側および待機側のプロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて、前記メモリにロードするモジュールのアドレスを決定し、決定したアドレスに従ってモジュールをメモリにロードしたことによりモジュール記憶領域の間に生じたメモリの不使用エリアをフリーメモリエリアとして利用することを特徴とする２重化システム。
【請求項１８】
フリーメモリエリアのアドレスを登録したリストに対して、前記不使用エリアのアドレスを追加したことを特徴とする請求項１７に記載の２重化システム。
【請求項１９】
前記公倍数は最小公倍数であることを特徴とする請求項１７または請求項１８に記載の２重化システム。
【発明の詳細な説明】
【発明の属する技術分野】
この発明は、キャッシュコヒーレンス不整合を回避する方法およびそれを用いた２重化システムに関し、特にアーキテクチャの異なるプロセッサが混在した２重化システムを構築することができるキャッシュコヒーレンス不整合を回避する方法およびそれを用いた２重化システムに関するものである。
【０００１】
【従来の技術】
プロセス制御装置で用いるＦＣＳ（Ｆｉｅｌｄ　Ｃｏｎｔｒｏｌ　Ｓｔａｔｉｏｎ）にはマイクロプロセッサと基本プログラムの実行イメージが格納された主記憶装置を有するＦＣＵ（Ｆｉｅｌｄ　Ｃｏｎｔｒｏｌ　Ｕｎｉｔ）が内蔵されている。このＦＣＵはまたネットワークノードとしての機能を有し、プロセス制御装置の専用ネットワークのインターフェイスを備えている。
【０００２】
この専用ネットワークを介して、他のノードからＦＣＵ内部の主記憶装置にアクセスすることができる。ＦＣＳの運用開始時には、エンジニアリング機能を有する他のネットワークノードから、上記専用ネットワークを介してＦＣＳの基本プログラムがＦＣＵのメインメモリにロードされる。
【０００３】
プロセス制御装置は２４時間稼働の装置であり、高信頼性が要求される。そのため、ＦＣＵを並列化して一方を制御側、他方を待機側とし、制御側ＦＣＵに障害が発生すると待機側に切り替える２重化システムを構成している。
【０００４】
プロセス制御装置自体は長期間使用される装置であるのに対して、マイクロプロセッサやメモリなどは進化が激しい部品である。そのため、実装部品の改廃等に伴って新しい部品を採用した新式のＦＣＵを旧式のＦＣＵと混在して使用しなければならない場合も発生する。
【０００５】
このことを図６を用いて説明する。ＦＣＳ６１には制御側ＦＣＵ６１１と待機側ＦＣＳ６１２が内蔵されている。これらＦＣＵ６１１と６１２はいずれも旧式のハードウエアであり、また旧式のＯＳ（Ｏｐｅｒａｔｉｏｎ　Ｓｙｓｔｅｍ）で動作している。
【０００６】
このＦＣＳ６１を制御動作を継続したままで、オンラインでレブアップおよび装置交換してＦＣＳ６２とすることを考える。そのため、待機側ＦＣＵを新しいハードウエアを有する新式ＦＣＵ６２２に交換する。そして、制御側、待機側の両ＦＣＵを新式のＯＳで動作させるようにする。このため、ＦＣＳ６２は新式と旧式の２つのＦＣＵが混在することになる。
【０００７】
一般に新式ＦＣＵと旧式ＦＣＵとではマイクロプロッセッサのハードウエア仕様が異なるので、そのままでは旧式と新式のＦＣＵを混在させることができない場合が多い。そのため、出願人は特願２００１―３５３１０１号明細書および特願２００１―３８９２８９号明細書において、異なるマイクロプロセッサが実装された２種類のＦＣＵを混在させることができる２重化装置を提案した。
【０００８】
この提案は、旧式のマイクロプロセッサのハードウエア仕様をＯＳによるエミュレーションで吸収するものである。すなわち、ＦＣＵの交換と同時にＯＳのバージョンアップを行うことにより、制御動作において実行するタスクやユーザーデータベースをメモリ上の同一イメージとしながら、異なるハードウエア仕様のＦＣＵを混在させた２重化システムを実現することができる。
【０００９】
【特許文献１】
特開平１１−３２４０号公報
【００１０】
【発明が解決しようとする課題】
しかしながら、このような２重化システムには次のような課題があった。
【００１１】
ＦＣＵはマルチタスクリアルタイムＯＳによって管理され、このリアルタイムＯＳ上で動作する制御動作を行う複数のタスクにはそれぞれ論理アドレスマッピングが用意されてメモリアクセスが管理されている。新式ＦＣＵ６２２と旧式ＦＣＵ６２１にはメモリのアクセス速度を向上させるためのメモリキャッシュが搭載されているが、その仕様は図７に示すように異なっているとする。
【００１２】
旧式ＦＣＵではプロセッサ外部にキャッシュメモリを有しており、プロセッサ内部で使用される論理アドレスによるキャッシュラインインデックスを決定する機構が存在しない。そのため、論理・物理マッピングによって決定された物理アドレスに従ってキャッシュアクセスが実行される。
【００１３】
それに対して新式ＦＣＵ６２２にはキャッシュラインインデックス機構があり、指定された論理アドレスから利用可能なキャッシュラインを特定し、キャッシュアクセスを実行する。そのため、ＦＣＵ６２１，６２２で実行される各タスク、ドライバおよびカーネルにおいて論理アドレスと物理アドレスのバウンダリを一致させておかないと、問題が発生する可能性がある。
【００１４】
図８にキャッシュサイズによるバウンダリを考慮しないで異なる論理・物理マッピングを行っているタスクＡとドライバＢの状態を示す。タスクＡは物理アドレスＰａに対して論理アドレスＬａをマッピングし、ドライバＢは物理アドレスＰｂに対して論理アドレスＬｂをマッピングしているとする。Ｐａ＝Ｐｂとすると、同じ物理アドレスに対して、タスクＡとドライバＢは異なる論理アドレスを与えることになる。
【００１５】
このタスクＡとドライバＢ間で下記のデータコピーを行う場合を考える。
（１）アドレスＬａにタスクＡがデータキャッシュ経由で書き込む。
（２）ドライバＢがタスクＡに呼ばれる。
（３）アドレスＬｂからドライバＢがデータをキャッシュ経由で読み込む。
【００１６】
図９にこのときのキャッシュの様子を示す。タスクＡはキャッシュラインＣａにデータを書き込み、ドライバＢはキャッシュラインＣｂ経由でメインメモリからデータを読み込む。そのため、キャッシュラインＣｂにメインメモリからデータが読み込まれてしまう。つまり、このようなキャッシュアクセスの結果、異なるキャッシュラインに同一物理アドレスを対応させてしまい、キャッシュコヒーレンスの不整合が発生してしまうという課題があった。
【００１７】
なお、キャッシュフラッシュが実行されるまではキャッシュラインＣａのデータはメインメモリに反映されない。そのため、キャッシュフラッシュが実行されるまでにドライバＢがデータを読み込むと、データコピーが正しく行われないという課題もあった。
【００１８】
図６のＦＣＳ６１では制御側、待機側共に旧式ＦＣＵであるので、論理アドレスによるキャッシュラインの特定が行われず、常に実メモリとキャッシュメモリが１対１に対応する。また、制御側、待機側のＦＣＵが両方とも新式であるとバウンダリが考慮されるので、やはりこのような問題は発生しない。
【００１９】
しかし、旧式と新式のＦＣＵが混在しているＦＣＳでは上記のキャッシュコヒーレンスの不整合が発生する可能性がある。この問題点はハードウエアに内包されるものであり、先に提案したＯＳによるエミュレーションでは吸収することができないという課題もあった。
【００２０】
従って本発明が解決しようとする課題は、複数マッピングを許しながらキャッシュコヒーレンスの不整合を防ぐ方法、およびこの方法を用いて新式と旧式のＦＣＵを混在させることが可能な２重化システムを提供することにある。
【００２１】
【課題を解決するための手段】
このような課題を解決するために、本発明のうち請求項１記載の発明は、アーキテクチャの異なる複数のプロセッサからアクセスされるメモリのキャッシュコヒーレンス不整合を回避する方法であって、前記複数のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて、前記メモリにロードするモジュールのアドレスを決定するようにしたものである。キャッシュコヒーレンス不整合を回避できる。
【００２２】
請求項２記載の発明は、請求項１記載の発明において、前記キャッシュサイズバウンダリの公倍数の１つの領域内に複数の前記モジュールがロードされないように、前記モジュールのアドレスを決定するようにしたものである。キャッシュコヒーレンス不整合を回避できる。
【００２３】
請求項３記載の発明は、請求項１または請求項２のいずれかに記載の発明において、前記公倍数は最小公倍数であることを特徴としたものである。メモリを効率的に使用できる。
【００２４】
請求項４記載の発明は、請求項１ないし請求項３のいずれかに記載の発明において、前記プロッセッサのうちキャッシュインデックス機構がないプロセッサについては、キャッシュラインサイズを最小バウンダリサイズとするようにしたものである。キャッシュインデックス機構がないプロセッサにも適用できる。
【００２５】
請求項５記載の発明は、アーキテクチャの異なる複数のプロセッサからアクセスされ、動的に割り付けが行われるメモリのキャッシュコヒーレンス不整合を回避する方法であって、前記複数のプロセッサのキャッシュサイズバウンダリの公倍数を単位として前記メモリのマッピングを行うようにしたものである。キャッシュコヒーレンス不整合を回避できる。
【００２６】
請求項６記載の発明は、請求項５記載の発明において、動的に割り付ける領域の論理アドレスと前記動的に割り付けが行われるメモリのアドレスが、前記キャッシュサイズバウンダリの公倍数の単位内で同じ位置にくるように、前記割り付けが行われるメモリのアドレスを決定するようにしたものである。キャッシュコヒーレンス不整合を回避できる。
【００２７】
請求項７記載の発明は、請求項５または請求項６のいずれかに記載の発明において、論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りを計算し、割り付けが行われるメモリのアドレスをキャッシュサイズバウンダリの公倍数で除算した余りと、前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りが一致する部分に割り付けるようにしたものである。メモリを効率的に使用できる。
【００２８】
請求項８記載の発明は、請求項５ないし請求項７のいずれかに記載の発明において、前記公倍数は最小公倍数であることを特徴としたものである。メモリを効率的に使用できる。
【００２９】
請求項９記載の発明は、制御側および待機側のプロセッサモジュールを有し、これらのプロセッサモジュールはプロセッサおよびメモリを内蔵し、前記プロセッサは互いに相手側のプロセッサモジュール内の前記メモリにアクセスできるようにされ、前記制御側のプロセッサモジュールに異常が発生したときに前記待機側のプロセッサモジュールに切り替えるように構成された２重化システムにおいて、前記制御側および待機側のプロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて、前記メモリにロードするモジュールのアドレスを決定するようにしたものである。キャッシュコヒーレンス不整合を回避することができる。
【００３０】
請求項１０記載の発明は、請求項９記載の発明において、前記キャッシュサイズバウンダリの公倍数の１つの領域内に複数の前記モジュールがロードされないように、前記モジュールのアドレスを決定するようにしたものである。キャッシュコヒーレンス不整合を回避することができる。
【００３１】
請求項１１記載の発明は、請求項９記載ないし請求項１０のいずれかに記載の発明において、前記公倍数は最小公倍数であることを特徴としたものである。メモリを効率的に使用できる。
【００３２】
請求項１２記載の発明は、請求項９ないし請求項１１のいずれかに記載の発明において、前記プロッセッサのうちキャッシュインデックス機構がないプロセッサについては、キャッシュラインサイズを最小バウンダリサイズとするようにしたものである。旧式のプロセッサにも適用できる。
【００３３】
請求項１３記載の発明は、制御側および待機側のプロセッサモジュールを有し、これらのプロセッサモジュールはプロセッサおよびメモリを内蔵し、前記プロセッサは互いの相手側のプロセッサモジュール内の前記メモリにアクセスできるようにされ、前記制御側のプロセッサモジュールに異常が発生したときに前記待機側のプロセッサモジュールに切り替えるように構成された２重化システムにおいて、前記メモリに動的に割付を行う際に、前記制御側および前記待機側プロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数を単位として、前記メモリのマッピングを行うようにしたものである。キャッシュコヒーレンス不整合を回避できる。
【００３４】
請求項１４記載の発明は、請求項１３記載の発明において、動的に割り付ける領域の論理アドレスと前記動的に割り付けが行われるメモリのアドレスが、前記キャッシュサイズバウンダリの公倍数の単位内で同じ位置にくるように、前記割り付けが行われるメモリのアドレスを決定するようにしたものである。キャッシュコヒーレンス不整合を回避できる。
【００３５】
請求項１５前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りを計算し、前記割り付けが行われるメモリのアドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りと、前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りが一致する部分に割り付けるようにしたものである。簡単に割り付けることができる。
【００３６】
請求項１６記載の発明は、請求項１３ないし請求項１５のいずれかに記載の発明において、前記公倍数は最小公倍数であることを特徴としたものである。メモリを効率的に使用できる。
【００３７】
請求項１７記載の発明は、制御側および待機側のプロセッサモジュールを有し、これらのプロセッサモジュールはプロセッサおよびメモリを内蔵し、前記プロセッサは互いに相手側のプロセッサモジュール内の前記メモリにアクセスできるようにされ、前記制御側のプロセッサモジュールに異常が発生したときに前記待機側のプロセッサモジュールに切り替えるように構成された２重化システムにおいて、
前記制御側および待機側のプロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて、前記メモリにロードするモジュールのアドレスを決定し、決定したアドレスに従ってモジュールをメモリにロードしたことによりモジュール記憶領域の間に生じたメモリの不使用エリアをフリーメモリエリアとして利用することを特徴とする２重化システムである。データベース等の修正なしに新式プロセッサを導入できる。
【００３８】
請求項１８記載の発明は、請求項１７に記載の発明において、フリーメモリエリアのアドレスを登録したリストに対して、前記不使用エリアのアドレスを追加したことを特徴とする２重化システムである。データベース等の修正なしに新式プロセッサを導入できる。
【００３９】
請求項１９記載の発明は、請求項１７または請求項１８において、前記公倍数は最小公倍数であることを特徴とする記載の２重化システムである。メモリを効率的に使用できる。
【発明の実施の形態】
以下に、図に基づいて本発明を詳細に説明する。
ＦＣＳの基本プログラムでは、タスク、ドライバ等の論理・物理マッピングは各実行モジュールがＦＣＵの実メモリにロードされたアドレスによって決定される。ＦＣＵの実メモリにロードされるイメージは、この他にシェアードセグメントとして利用されるデータベースがある。
【００４０】
そのために、本実施例では実行モジュールがロードされるメモリのアドレスを調整して、新式、旧式両方のＦＣＵのキャッシュバウンダリの差を吸収するようにする。モジュールをロードするアドレスの調整量は、両方のＦＣＵのキャッシュバウンダリの最小公倍数から計算する。
【００４１】
図１は本発明に係るキャッシュコヒーレンスの不整合を回避する方法の一実施例を説明するメモリマップ図である。図１において、１はＦＣＵの実メモリ、１１〜１５はそれぞれＯＳモジュール、タスクモジュールＡ、タスクモジュールＢ、タスクモジュールＣ、ユーザデータベースである。これらのモジュールおよびデータベースが表示されている位置は、実メモリにロードされているアドレスに対応している。なお、図１においてユーザデータベース１５もモジュールの１つと考えることができる。
【００４２】
すなわち、ＯＳモジュール１１の上端がＯＳモジュールのイメージの先頭アドレスであり、タスクモジュールＡ１２の上端がタスクモジュールＡの先頭アドレスになる。以下同様にタスクモジュールＢ１３，タスクモジュールＣ１４、ユーザデータベース１５の上端がそれぞれのモジュール等の先頭アドレスになる。
【００４３】
２はキャッシュサイズバウンダリを表す。図１に示すように、”｝”で示された領域がキャッシュサイズバウンダリになる。図１の例では９個のキャッシュサイズバウンダリが存在する。この図からわかるように、モジュール等１１〜１５の先頭アドレスはキャッシュサイズバウンダリの先頭から始まるようにロードされる。すなわち、複数のモジュール等が１つのキャッシュサイズバウンダリに配置されないようにそれらのロードアドレスが決定される。
【００４４】
キャッシュサイズバウンダリ２の大きさは、２つのＦＣＵのキャッシュサイズバウンダリの最小公倍数に決められる。なお、旧式ＦＣＵのようにキャッシュラインインデックス機構がないＦＣＵは、キャッシュラインサイズを最小バウンダリサイズとし、これを４バイト（１ワード）とする。従って、図４に示した旧式ＦＣＵのキャッシュサイズバウンダリは４，新式ＦＣＵのそれは１６ＫＢであるから、その最小公倍数の１６ＫＢ毎に論理・物理マッピングを行う。
【００４５】
前述したメモリマッピングはシステムが稼働する前に決まっている静的な割り付けであるが、この他にシステムが稼働した後に動的に割り付けが行われる場合がある。この割り付け処理では、フリーメモリエリアから必要なページメモリを確保すると同時に、必要な論理・物理マッピングも行われる。このときにキャッシュサイズバウンダリを考慮せずに割り付けを行うと、前述したキャッシュコヒーレンスの不整合が発生する。
【００４６】
そのため、図４の例でいうと割り付けの最小単位である論理・物理マッピングのページサイズの４ＫＢと、前述したキャッシュサイズバウンダリの最小公倍数である１６ＫＢの最小公倍数である１６ＫＢ毎に論理・物理マッピングを行うようにする。
【００４７】
この論理・物理マッピングの手順を図２に基づいて説明する。図２の３は論理・物理マッピングであり、ページサイズである４ＫＢを単位としてマッピングが行われる。３１が新たに割付を要求する部分である。この割付を要求する部分３１の論理アドレスをキャッシュバウンダリの最小公倍数である１６ＫＢで除して、その余りを４ＫＢを単位として表した数字を固有値として記憶する。３１内の［１］、［２］はこの固有値である。
【００４８】
４はフリーメモリエリアであり、ページサイズの４ＫＢ単位で割付が行われている。この各割付単位の先頭アドレスをキャッシュバウンダリの最小公倍数である１６ＫＢで除して、そ余りを４ＫＢ単位で表した数字が前記固有値と同じである部分を取り出す。３１の固有値が１と２であるから、４１と４２が余りと前記固有値が一致した部分である。５は取り出した部分である。
【００４９】
この操作を、割付を要求するサイズをページサイズである４ＫＢで除した値だけ繰り返す。図２の例では割付を要求するサイズは８ＫＢであるから、２度繰り返して４１と４２の部分を取り出す。このようにすることによりキャッシュバウンダリを考慮した割付を行うことができ、キャッシュコヒーレンスが発生することがなくなる。
【００５０】
なお、本実施例では２重化システムについて説明したが、メインメモリ上に実行プログラムを保持しながらプログラムを逐次実行するプロセッサを有する他の制御演算装置、特に制御演算動作開始時にシステムの初期化動作を実行なければならない制御演算装置に適用することもできる。
【００５１】
本実施例ではキャッシュサイズバウンダリの違いを対象にしたが、ＯＳとハードウエアのインターフェイスに関する仕様のうち、プロセッサ毎に異なるものは他にも多く考えられる。このような場合でも、ハードウエアリソースの割り当てを、管理単位の本実施例の最小公倍数に基づいて行うようにすることができる。特に、運用年数が長いシステムに適用すると効果が大きいと思われる。
【００５２】
上述した実施例では、複数のプロセッサのキャッシュサイズバウンダリの違いを吸収している。
図３はプロセッサがアクセスするメモリの記憶領域の占有状態（メモリイメージ）を示した図である。図３の（ａ）は、複数プロセッサのキャッシュサイズバウンダリの公倍数に基づいてメモリにロードするモジュールのアドレスを決定する（これをロードアドレス調整とする）前の占有状態を示した図である。（ｂ）はロードアドレス調整後の占有状態を示した図である。旧式プロセッサのメモリイメージは（ａ）、新式プロセッサのメモリイメージは（ｂ）になる。
【００５３】
図３で調整前と調整後のメモリイメージを比較すると、調整前に比べ調整後では、各モジュール毎に生じる冗長領域Ｎ１〜Ｎ４の合計サイズ分だけフリーメモリエリアが減少していることが分かる。冗長領域Ｎ１〜Ｎ４は不使用エリアである。
プロセッサの基本プログラムの起動処理内では、メモリ上のシステムプログラム、およびデータベースがロードされたエリアを除く残りのエリアをフリーメモリエリアとして扱い、同エリアからシステムオンライン時に必要なリソースを確保するようになっている。
このため、実装メモリサイズが制限される旧式プロセッサユニットの場合、システム起動時処理において確保されるシステムリソースが不足してしまうことになった。
【００５４】
フリーメモリエリアの不足サイズを図４に示す。システムリソースが不足した場合、制御動作の継続が不可能として、プロセッサの基本プログラムは起動時処理を中断し、動作停止に至るようになっている。
動作停止を回避する対策として、旧来のユーザデータベースを不足リソースサイズ分だけ減じることがあるが、それにはシステムオンライン時の制御動作の機能仕様が変更されることを意味し、著しいユーザデメリットとなってしまう。
【００５５】
このような不都合を解決するために、本発明ではＯＳプログラムの起動時に、不使用エリアＮ１〜Ｎ４をフリーメモリエリアとして利用することにした。
本発明が適用されるシステムでは、利用可能な全メモリ領域を以下のエリアに区別している。
（１）システムプログラムのイメージ領域
（２）複数タスクから使用するシェアードセグメントエリア
（３）カーネル・ドライバ用のリソース
（１）はＯＳモジュール及びタスクモジュールＡ〜Ｃの記憶領域、（２）はデータベースの記憶領域、（３）はフリーメモリエリアである。
（１）と（２）を取り分けた残りの領域（３）でフリーメモリエリアのリストを作成している。本発明では、その際に不使用エリアをフリーメモリエリアのリストに追加するようにした。
【００５６】
図５は不使用エリアをフリーメモリエリアのリストに追加する様子を示した図である。
ロードアドレス調整前のフリーメモリエリアのリストが旧フリーメモリエリアのリスト、調整後のフリーメモリエリアのリストが新フリーメモリエリアのリストである。
旧フリーメモリエリアのリストには、アドレスＢからアドレスＥまで連続ページのアドレスが登録されている。
新フリーメモリエリアのリストには、旧フリーメモリエリアのアドレスに加えて不使用エリアＮ１〜Ｎ４のアドレスが追加されている。これによって、不使用エリアＮ１〜Ｎ４がフリーメモリエリアとして利用される。
【００５７】
【発明の効果】
以上説明したことから明らかなように、本発明によれば、次の効果が期待できる。
請求項１記載の発明によれば、アーキテクチャの異なる複数のプロセッサからアクセスされるメモリのキャッシュコヒーレンス不整合を回避する方法であって、前記複数のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて、前記メモリにロードするモジュールのアドレスを決定するようにした。
【００５８】
キャッシュサイズバウンダリが異なるプロセッサからアクセスしてもキャッシュコヒーレンス不整合を回避することができるという効果がある。本発明により、従来エミュレーションでは吸収することができなかったハードウエアの差を吸収することができ、アーキテクチャの異なるプロセッサを混在させることができるという効果もある。
【００５９】
請求項２記載の発明によれば、請求項１記載の発明において、前記キャッシュサイズバウンダリの公倍数の１つの領域内に複数の前記モジュールがロードされないように、前記モジュールのアドレスを決定するようにした。簡単な手順でキャッシュコヒーレンス不整合を回避できるという効果がある。
【００６０】
請求項３記載の発明によれば、請求項１または請求項２のいずれかに記載の発明において、前記公倍数は最小公倍数であることを特徴とした。分割するサイズを小さくすることができるので、メモリを効率的に使用できるという効果がある。
【００６１】
請求項４記載の発明によれば、請求項１ないし請求項３のいずれかに記載の発明において、前記プロッセッサのうちキャッシュインデックス機構がないプロセッサについては、キャッシュラインサイズを最小バウンダリサイズとするようにした。キャッシュインデックス機構がない旧式のプロセッサにも適用できるという効果がある。
【００６２】
請求項５記載の発明によれば、アーキテクチャの異なる複数のプロセッサからアクセスされ、動的に割り付けが行われるメモリのキャッシュコヒーレンス不整合を回避する方法であって、前記複数のプロセッサのキャッシュサイズバウンダリの公倍数を単位として前記メモリのマッピングを行うようにした。
【００６３】
キャッシュサイズバウンダリが異なるプロセッサからアクセスしてもキャッシュコヒーレンス不整合を回避することができるという効果がある。本発明により、従来エミュレーションでは吸収することができなかったハードウエアの差を吸収することができ、アーキテクチャの異なるプロセッサを混在させることができるという効果もある。
【００６４】
請求項６記載の発明によれば、請求項５記載の発明において、動的に割り付ける領域の論理アドレスと前記動的に割り付けが行われるメモリのアドレスが、前記キャッシュサイズバウンダリの公倍数の単位内で同じ位置にくるように、前記割り付けが行われるメモリのアドレスを決定するようにした。メモリを効率的に使用することができるという効果がある。
【００６５】
請求項７記載の発明によれば、請求項５または請求項６のいずれかに記載の発明において、論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りを計算し、割り付けが行われるメモリのアドレスをキャッシュサイズバウンダリの公倍数で除算した余りと、前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りが一致する部分に割り付けるようにした。メモリを効率的に使用でき、かつ簡単に割付を行うことができるという効果がある。
【００６６】
請求項８記載の発明によれば、請求項５ないし請求項７のいずれかに記載の発明において、前記公倍数は最小公倍数であることを特徴とした。分割するサイズを小さくすることができるので、メモリを効率的に使用できるという効果がある。
【００６７】
請求項９記載の発明によれば、制御側および待機側のプロセッサモジュールを有し、これらのプロセッサモジュールはプロセッサおよびメモリを内蔵し、前記プロセッサは互いに相手側のプロセッサモジュール内の前記メモリにアクセスできるようにされ、前記制御側のプロセッサモジュールに異常が発生したときに前記待機側のプロセッサモジュールに切り替えるように構成された２重化システムにおいて、前記制御側および待機側のプロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて、前記メモリにロードするモジュールのアドレスを決定するようにした。
【００６８】
キャッシュサイズバウンダリが異なるプロセッサからアクセスしてもキャッシュコヒーレンス不整合を回避することができるという効果がある。本発明により、従来エミュレーションでは吸収することができなかったハードウエアの差を吸収することができ、アーキテクチャの異なるプロセッサを混在させることができるという効果もある。
【００６９】
また、２重化システムを構築するプロセッサモジュールについて、新旧のモジュールを混在して使用することができるので、製品寿命の長いプロセス制御装置に用いて特に好適である。
【００７０】
請求項１０記載の発明によれば、請求項９記載の発明において、前記キャッシュサイズバウンダリの公倍数の１つの領域内に複数の前記モジュールがロードされないように、前記モジュールのアドレスを決定するようにした。簡単な手順でキャッシュコヒーレンス不整合を回避できるという効果がある。
【００７１】
請求項１１記載の発明によれば、請求項９記載ないし請求項１０のいずれかに記載の発明において、前記公倍数は最小公倍数であることを特徴とした。分割するサイズを小さくすることができるので、メモリを効率的に使用できるという効果がある。
【００７２】
請求項１２記載の発明によれば、請求項９ないし請求項１１のいずれかに記載の発明において、前記プロッセッサのうちキャッシュインデックス機構がないプロセッサについては、キャッシュラインサイズを最小バウンダリサイズとするようにした。古いタイプのプロセッサを用いたモジュールを混在させることができるという効果がある。
【００７３】
請求項１３記載の発明によれば、制御側および待機側のプロセッサモジュールを有し、これらのプロセッサモジュールはプロセッサおよびメモリを内蔵し、前記プロセッサは互いの相手側のプロセッサモジュール内の前記メモリにアクセスできるようにされ、前記制御側のプロセッサモジュールに異常が発生したときに前記待機側のプロセッサモジュールに切り替えるように構成された２重化システムにおいて、前記メモリに動的に割付を行う際に、前記制御側および前記待機側プロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数を単位として、前記メモリのマッピングを行うようにした。
【００７４】
キャッシュサイズバウンダリが異なるプロセッサを使用しても、キャッシュコヒーレンス不整合を起こすことがないという効果がある。そのため、製品寿命が長いプロセス制御装置に用いて特に好適である。
【００７５】
請求項１４記載の発明によれば、請求項１３記載の発明において、動的に割り付ける領域の論理アドレスと前記動的に割り付けが行われるメモリのアドレスが、前記キャッシュサイズバウンダリの公倍数の単位内で同じ位置にくるように、前記割り付けが行われるメモリのアドレスを決定するようにした。メモリを効率的に使用できるという効果がある。
【００７６】
請求項１５記載の発明によれば、請求項１３または請求項１４のいずれかに記載の発明において、前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りを計算し、前記割り付けが行われるメモリのアドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りと、前記論理アドレスを前記キャッシュサイズバウンダリの公倍数で除算した余りが一致する部分に割り付けるようにしたものである。簡単名手順で割り付けを行うことができるという効果がある。
【００７７】
請求項１６記載の発明によれば、請求項１３ないし請求項１５のいずれかに記載の発明において、前記公倍数は最小公倍数であることを特徴とした。分割単位を小さくすることができるので、メモリを効率的に使用できるという効果がある。
【００７８】
請求項１７記載の発明によれば、制御側および待機側のプロセッサモジュール内のプロセッサのキャッシュサイズバウンダリの公倍数に基づいて決定したアドレスに従ってモジュールをメモリにロードしたときに、モジュール記憶領域の間に生じたメモリの不使用エリアをフリーメモリエリアとして利用する。
このため、新式プロセッサにおいて確保可能なフリーメモリエリアのサイズが旧式プロセッサのそれと変わることがない。これによって、ユーザデータベースに割り当てられる記憶領域のサイズが変わらない。このことにより、ユーザが従前より使用していたアプリケーションデータベース等を特別に修正することなく、既存システムにおいて新式プロセッサと新式ＯＳの導入が可能となる。
【００７９】
請求項１８記載の発明によれば、請求項１７に記載の発明において、フリーメモリエリアのアドレスを登録したリストに対して、前記不使用エリアのアドレスを追加したことを特徴とした。データベース等の修正なしに新式プロセッサを導入できる。
【００８０】
請求項１９記載の発明によれば、請求項１７または請求項１８に記載の発明において、前記公倍数は最小公倍数であることを特徴とした。分割単位を小さくすることができるので、メモリを効率的に使用できるという効果がある。
【図面の簡単な説明】
【図１】本発明の一実施例であるメモリの割付を示す構成図である。
【図２】本発明の他の実施例であるメモリの動的割付を示す構成図である。
【図３】プロセッサがアクセスするメモリの記憶領域の占有状態を示した図である。
【図４】フリーメモリエリアの不足サイズを示した図である。
【図５】不使用エリアをフリーメモリエリアのリストに追加する様子を示した図である。
【図６】２重化システムの構成図である。
【図７】旧式ＣＰＵと新式ＣＰＵの違いを示す図である。
【図８】メモリの割付手順を説明するための図である。
【図９】メモリの割付手順を説明するための図である。
【符号の説明】
１　実メモリ
１１　ＯＳモジュール
１２　タスクモジュールＡ
１３　タスクモジュールＢ
１４　タスクモジュールＣ
１５　ユーザデータベース
３　論理・物理マッピング
３１　割付を要求する部分
４　フリーメモリエリア
４１，４２　固有値が一致した部分
５　取り出した部分
【図１】
2004094906.tif 000003
【図２】
2004094906.tif 000004
【図３】
2004094906.tif 000005
【図４】
2004094906.tif 000006
【図５】
2004094906.tif 000007
【図６】
2004094906.tif 000008
【図７】
2004094906.tif 000009
【図８】
2004094906.tif 000010
【図９】
2004094906.tif 000011