(57)【要約】【課題】  電源をＯＦＦにしなくとも、プログラムの暴走なくプログラムの配置変更を可能とし、正常に動作を継続できるＣＰＵメモリ装置及びプログラム配置変更方法を提供する。【解決手段】  ＣＰＵメモリ空間に第１プログラムが配置されると共に、残るメモリ空間のサイズよりも大きいサイズの第２プログラムを前記第１プログラムと配置変更するＣＰＵメモリ装置において、  前記ＣＰＵメモリ空間の第１プログラム及び前記第２プログラムを同一個数の複数領域に分割する手段と、  ＣＰＵがアクセスしていない前記第１プログラムの分割領域のプログラムデータを、前記第２プログラムの対応する分割領域のプログラムデータにより配置変更する手段と、を備える。【選択図】                    図１
2005182106.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵメモリ空間に第１プログラムが配置されると共に、残るメモリ空間のサイズよりも大きいサイズの第２プログラムを前記第１プログラムと配置変更するＣＰＵメモリ装置において、
前記ＣＰＵメモリ空間の第１プログラム及び前記第２プログラムを同一個数の複数領域に分割する手段と、
ＣＰＵがアクセスしていない前記第１プログラムの分割領域のプログラムデータを、前記第２プログラムの対応する分割領域のプログラムデータにより配置変更する手段と、
を備えたことを特徴とするＣＰＵメモリ装置。
【請求項２】
前記第１プログラム及び前記第２プログラムは、共に２分割されていることを特徴とする請求項１に記載のＣＰＵメモリ装置。
【請求項３】
前記第１プログラム及び前記第２プログラムの各分割領域のプログラムは、夫々独自の機能を有するプログラムであることを特徴とする請求項１又は２に記載のＣＰＵメモリ装置。
【請求項４】
前記配置変更が実行される対象となる前記第１プログラム及び第２プログラムの分割領域には、配置変更実行中は一切のアクセスが禁止されることを特徴とする請求項１乃至３のいずれかに記載のＣＰＵメモリ装置。
【請求項５】
前記第１プログラムと前記第２プログラムの配置変更は、システム停止又は再起動することなく、連続的に実行されることを特徴とする請求項１乃至４のいずれかに記載のＣＰＵメモリ装置。
【請求項６】
ＣＰＵメモリ空間に配置された第１プログラムの分割領域の一つにアクセスする第１ステップと、
アクセス中ではない第１プログラムの分割領域に配置されたプログラムデータを、複数領域に分割された第２プログラムの対応領域に配置されたプログラムデータにより配置変更する第２ステップと、
を有し、これらステップを前記分割数分繰り返することを特徴とするプログラム配置変更方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵメモリ空間に第１プログラムが配置されると共に、残るメモリ空間のサイズよりも大きいサイズの第２プログラムを前記第１プログラムと配置変更するＣＰＵメモリ装置に関する。
【背景技術】
【０００２】
ＣＰＵメモリ装置及びプログラム配置変更方法に関連する先行技術文献としては次のようなものがある。
【０００３】
【特許文献１】特開２０００−３５０５０４号公報
【０００４】
図２は、従来のＣＰＵメモリ空間とプログラムを記憶保持している実在するメモリとの関係を説明する機能ブロック図である。１は、イメージとして表示されたＣＰＵの論理的なメモリ空間である。２は実在する不揮発性メモリで構成される第１メモリ、３は同じく実在する不揮発性メモリで構成される第２メモリであり、夫々第１プログラムＡ及び第２プログラムＢを記憶保持する。
【０００５】
４はＣＰＵであり、ＣＰＵメモリ空間１に配置されたプログラムにアクセスするために、ゲートアレイ５を介して実在する第１メモリ２のプログラムＡ及び第２メモリ３のプログラムＢにアクセスする。
【０００６】
フィールド機器のように、許容されている消費電流が制限されているシステムの場合、使用可能なマイクロプロセッサの機能制限のため、十分なＣＰＵメモリ空間の確保が困難となる。そのため、メモリ空間上にＲＯＭやＲＡＭで代表される広い領域を複数分設置することが不可能な状況に陥ることがある。
【０００７】
図２は、例えば第１メモリ２が記憶保持するサイズＳ１のプログラムＡが、ＣＰＵメモリ空間１に配置されている状態を示している。Ｓ２は、ＣＰＵメモリ空間１の空き領域のサイズである。
【０００８】
この状態で、第２メモリ３が記憶保持するサイズＳ３のプログラムＢをＣＰＵメモリ空間１に追加配置しようとした場合、プログラムＢのサイズＳ３がＣＰＵメモリ空間の空き領域のサイズＳ２より大きい場合には、サイズＳ４（＝Ｓ３−Ｓ２）のメモリ不足が発生するので、プログラムＢ全体の追加配置ができない。従って、プログラムＢの機能の一部が利用不可能となったり、場合によればプログラムＢの機能全てが利用不可能となる。
【０００９】
図３は、このような問題を回避し、従来のメモリ空間の機能構成で追加配置したいプログラムＢの全機能を利用可能とする対応策を示す機能ブロック図である。主としてアクセスするサイズＳ１のプログラムＡは、図２と同様に全体をＣＰＵメモリ空間１に配置する。
【００１０】
サイズＳ２の空き領域の一部にサイズＳ２Ａのウィンドウ領域Ｗのメモリ空間を形成し、このウィンドウ領域にプログラムＢの一部を配置して利用する。第２メモリ３に記憶保持されているサイズＳ３のプログラムＢは、複数の小さいサイズＳ３Ａ，Ｓ３Ｂ，…の領域Ｂ１，Ｂ２，…に分割され、分割された領域のプログラムが選択されてＣＰＵメモリ空間１のウィンドウ領域Ｗに選択配置される。
【００１１】
ＣＰＵ４は、ウィンドウ領域Ｗに配置したプログラムＢへアクセスする際には、アクセス前に利用したい機能を持つプログラムがある分割先領域を指定し、この領域のプログラムをウィンドウ領域Ｗに設定した上で、第２メモリ３の指定分割領域にアクセスを行う。
【００１２】
例えば、分割領域Ｂ１のプログラムにアクセスした後に、分割領域Ｂ２のプログラムにアクセスするという動作を行う場合には、
（１）ウィンドウ領域Ｗに分割領域Ｂ１のプログラムを設定。
（２）分割領域Ｂ１のプログラムにアクセス。
（３）ウィンドウ領域Ｗに分割領域Ｂ２のプログラムを設定。 
（４）分割領域Ｂ２のプログラムにアクセス。
という作業を行う。
【００１３】
上記の場合、アクセス毎に領域の設定を必要とするため、頻繁にアクセスを行うプログラムを保持するメモリ（プログラムＡ１を保持する第１メモリ２）は、全体をＣＰＵメモリ空間１に配置することとなる。
【００１４】
ここで、仮にシステム動作中において、頻繁にアクセスするプログラムをプログラムＡからプログラムＢへ配置変更したい場合には、ＣＰＵメモリ空間１に配置されているプログラムＡの領域に、第２メモリ３に記憶保持されているプログラムＢを配置するように、プログラム配置変更を実行すればよい。
【００１５】
例えば、第１メモリ２に現在動作中のプログラムデータ（Ｒｅｖ１）が保持され、第２メモリ３に同プログラムデータのＲｅｖ２が保持されていると仮定する。このような場合、機器をＲｅｖ２に更新するためには、プログラムの配置変更を実行すれば十分対応可能である。
【００１６】
しかし、システム動作中頻繁にアクセスするメモリ領域全体の内容を瞬時にかつ強制的に配置変更させることは、ＣＰＵが使用しているメモリ空間を壊されることと同様の現象を起こす危険性がある。
【００１７】
したがって、プログラムの暴走を回避するためには、メモリの配置は起動直後に決定していることが望ましく、プログラム配置変更を実施する際には一度電源ＯＦＦにし、システム動作を停止させてマッピングをし直し、その上でシステムを再起動させるという作業が必要となる。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
頻繁にアクセスするプログラムを第１プログラムから第２プログラムへ配置変更する場合には、ＣＰＵメモリ空間に配置された第１プログラムＡを第２プログラムＢとする配置変更を実行することが望ましい。しかし、このようなメモリシステムを搭載した機器では、動作中にメモリ配置の変更を試みると、使用しているメモリ空間が壊されることと同じ状況に陥るため、プログラムの暴走が予想される。
【００１９】
そのため、本システム搭載の機器は、一度電源をＯＦＦに（若しくはマイクロプロセッサのソフトリスタート機能を利用）し、動作を停止した上でプログラムの配置変更を実施する必要がある。
【００２０】
しかしながら、プラントに配置した工業計器のように継続したシステムの稼動が要求される状況下では、一度工業計器の電源をＯＦＦするということは、プラント内のシステム動作を停止させてしまうこととなり、好ましくない。
【００２１】
従って本発明が解決しようとする課題は、電源をＯＦＦにしなくとも、プログラムの暴走なくプログラムの配置変更を可能とし、正常に動作を継続できるＣＰＵメモリ装置及びプログラム配置変更方法を提供することにある。
【課題を解決するための手段】
【００２２】
このような課題を達成するために、本発明の構成は次の通りである。
（１）ＣＰＵメモリ空間に第１プログラムが配置されると共に、残るメモリ空間のサイズよりも大きいサイズの第２プログラムを前記第１プログラムと配置変更するＣＰＵメモリ装置において、
前記ＣＰＵメモリ空間の第１プログラム及び前記第２プログラムを同一個数の複数領域に分割する手段と、
ＣＰＵがアクセスしていない前記第１プログラムの分割領域のプログラムデータを、前記第２プログラムの対応する分割領域のプログラムデータにより配置変更する手段と、
を備えたことを特徴とするＣＰＵメモリ装置。
【００２３】
（２）前記第１プログラム及び前記第２プログラムは、共に２分割されていることを特徴とする（１）に記載のＣＰＵメモリ装置。
【００２４】
（３）前記第１プログラム及び前記第２プログラムの各分割領域のプログラムは、夫々独自の機能を有するプログラムであることを特徴とする（１）又は（２）に記載のＣＰＵメモリ装置。
【００２５】
（４）前記配置変更が実行される対象となる前記第１プログラム及び第２プログラムの分割領域には、配置変更実行中は一切のアクセスが禁止されることを特徴とする（１）乃至（３）のいずれかに記載のＣＰＵメモリ装置。
【００２６】
（５）前記第１プログラムと前記第２プログラムの配置変更は、システム停止又は再起動することなく、連続的に実行されることを特徴とする（１）乃至（４）のいずれかに記載のＣＰＵメモリ装置。
【００２７】
（６）ＣＰＵメモリ空間に配置された第１プログラムの分割領域の一つにアクセスする第１ステップと、
アクセス中ではない第１プログラムの分割領域に配置されたプログラムデータを、複数領域に分割された第２プログラムの対応領域に配置されたプログラムデータにより配置変更する第２ステップと、
を有し、これらステップを前記分割数分繰り返することを特徴とするプログラム配置変更方法。
【発明の効果】
【００２８】
以上説明したことから明らかなように、本発明によりＣＰＵメモリ空間に配置された第１プログラム領域を独立した複数領域に分割し、プログラムの配置変更をＣＰＵがアクセスしていない分割領域毎に実施すれば、以下のような条件を保持した配置変更が可能となる。
（１）配置変更中は固定の領域（プログラム）へアクセスを行うため、システムは動作中の状態を維持する。
（２）配置変更中の不確かな領域へのアクセスは回避されるため、システムの暴走はなくなる。
（３）領域を分割して順に配置交換を完了させるため、配置交換中、および交換後もシステムを停止する必要はなくなる。
（４）従って、システム更新の際にも電源をＯＦＦすることなく、半永久的に動作を継続する機器を実現することができるので、工業計器のような継続したシステムの稼動が要求される状況下でも、動作を停止することなく機器のプログラムの変更や更新に対応できる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明を図面により詳細に説明する。図１は本発明を適用したメモリ装置の一実施形態を示す機能ブロック図である。図２及び図３で説明した従来装置と同一要素には同一符号を付し、説明を省略する。以下、本発明の特徴部につき説明する。
【００３０】
システムは、主にプログラムＡへのアクセスを中心に動作中であると仮定する。そのため、ＣＰＵメモリ空間１には第１メモリ２のプログラムＡを配置しており、交換変更対象のプログラムＢはＣＰＵメモリ空間１には配置せず、第２メモリ２に記憶保持されているものとする。
【００３１】
頻繁にアクセスするプログラムを、プログラムＡからプログラムＢへ変更する場合、ＣＰＵメモリ空間１に配置するプログラムを、プログラムＡからプログラムＢへ配置変更しなければならない。
【００３２】
システム動作中はプログラムＡへ頻繁にアクセスをしていることを考慮すると、システム動作中におけるプログラムＡとプログラムＢのメモリ空間１での配置変更の実施は、システムの暴走が予想される。
【００３３】
そのため、プログラムＡを、プログラムＡ−１とプログラムＡ−２の２つの独立した領域に分割し、第２メモリ３のプログラムＢも同様にプログラムＢ−１とプログラムＢ−２の２つの独立した領域に分割する。簡単のため、プログラムＡと配置変更対象のプログラムＢは同一サイズであり、分割は１／２の等分割であるとする。
【００３４】
ＣＰＵ４がプログラムＡ−１領域にアクセスしている際に、アクセスしていないプログラムＡ−２領域のプログラムデータを、第２メモリ３のメモリのプログラムＢ−２領域のプログラムデータで置き換えて部分的な（１／２）配置変更を実行する。
【００３５】
次に、ＣＰＵ４がプログラムＡ−２領域にアクセスしている際に、アクセスしていないプログラムＡ−１領域のプログラムデータを、第２メモリ３のメモリのプログラムＢ−１領域のプログラムデータで置き換えて残りの部分１／２の配置変更を実行する。
【００３６】
次に、レビジョンアップのためのプログラム配置変更を想定した動作手順を説明する。
例えば、第１メモリ２にはメモリ空間１に配置されて現在動作中のプログラムＡのＲｅｖ１のデータが、第２メモリ３には同プログラムのＲｅｖ２データがプログラムＢとして記憶保持されていると仮定する。
【００３７】
ここで、頻繁にアクセスをするプログラムＡの領域は、２つの独立した領域をもつプログラムＡ−１及びＡ−２として存在させ、これをＣＰＵメモリ空間１に配置する。この場合、プログラムＡ−１及びＡ−２は、予め決められた固定アドレス先に配置をしておく必要がある。
【００３８】
同様に、第２メモリ３に保持されたプログラムＢも、２つの独立した領域をもつプログラムＢ−１及びＢ−２として存在させる。この場合、プログラムＢ−１及びＢ−２は、予め決められた固定アドレス先に配置をしておく必要がある。
【００３９】
ＣＰＵ４のアクセス手順は、
（１）メモリ空間１に配置されたプログラムＡ−１を実行する。
尚、この時点では、メモリ空間１には、Ａ−１及びＡ−２が配置されている。
【００４０】
（２）プログラムＡ−１を実行中に、メモリ空間１のプログラムＡ−２に配置されたプログラムデータを、第２メモリ３のプログラムＢ−２で置き換える配置変更を実施する。ただし、このプログラムの配置変更中は、ＣＰＵはプログラムＡ−１にアクセス中であることが前提であり、プログラムＡ−２領域へのアクセスは一切不可とする。
【００４１】
（３）プログラムＡ−２の配置変更完了後、メモリ空間１に配置されたプログラムＡ−２を実行する。尚、この時点でメモリ空間１には、プログラムＡ−１及びＢ−２が配置されている。
【００４２】
（４）プログラムＡ−２を実行中に、メモリ空間１のプログラムＡ−１に配置されたプログラムデータを、第２メモリ３のプログラムＢ−１で置き換える配置変更を実施する。ただし、このプログラムの配置変更中は、ＣＰＵはプログラムＡ−２にアクセス中であることが前提であり、プログラムＡ−１領域へのアクセスは一切不可とする。
【００４３】
上記のような手順を踏むと、システムの再起動なくプログラムＡからプログラムＢへと更新することが可能となり、半永久的にシステムが動作中の状況を維持しながら、最新な状態でのシステム動作が可能となる。
【００４４】
分割された領域のプログラムは、関連プログラムであっても夫々独立した独自の機能を有するプログラムであってもよい。独立したプログラムであった場合、図1に示すように、プログラムＡ−２をプログラムＢ−２で配置変更した部分変更状態で、プログラムＡ−１の機能とプログラムＢ−２の機能を用いて動作が可能となる。図１の２分割形態では、４種の機能の組み合わせでシステムの動作が可能となる。
【００４５】
この場合、プログラムの分割領域を増やせば、より多種の組み合わせのもとでシステムの動作が可能となり、ユーザ要求に応じた機能の組み合わせができる工業計器を実現することも可能となる。
【００４６】
以上説明した実施形態では、プログラム領域の分割は２等分割の例を説明したが分割数は任意個数であってもよい。更に、配置変更の対象となるプログラムＢサイズは、プログラムＡと同一サイズである必要はなく、プログラムＡの分割領域のサイズが配置変更対象のプログラムＢの分割領域のサイズと一致していればよい。
【００４７】
又、プログラムＡとプログラムＢは夫々独立した不揮発性の第１メモリ２及び第２メモリ３に記憶保持された例を説明したが、これらプログラムは1個のメモリ上に記憶保持されるものであってもよい。
【図面の簡単な説明】
【００４８】
【図１】本発明を適用したメモリ装置の一実施形態を示す機能ブロック図である。
【図２】従来のＣＰＵメモリ空間とプログラムを記憶保持している実在するメモリとの関係を説明する機能ブロック図である。
【図３】空き領域の一部にウィンドウ領域を形成し、このウィンドウ領域にプログラムの一部を配置して利用する従来のＣＰＵメモリ装置の機能ブロック図である。
【符号の説明】
【００４９】
１  ＣＰＵメモリ空間
２  第１メモリ
３  第２メモリ
４  ＣＰＵ
５  ゲートアレイ
【図１】
2005182106.tif 000003
【図２】
2005182106.tif 000004
【図３】
2005182106.tif 000005