(57)【要約】【課題】通信・情報処理システム内における主記憶装置（メモリー）の使用領域の初期化処理速度を上げ，効率よく初期化処理を行う方式を提供する。【解決手段】主記憶装置１０の使用領域の初期化処理を行う際に，ポインタを初期化対象領域１１の先頭に設定し，複数ワード単位の一度に初期化する領域１１１に初期値を代入し，その初期化したワード分だけポインタを先に進めて，次の複数ワード単位の一度に初期化する領域１１２に初期値を代入するという処理を，初期化対象領域１１の大きさ分だけ繰り返し，初期化対象領域１１の全領域を初期化する。【選択図】    図１
2004240532.tif 000002
【特許請求の範囲】
【請求項１】
通信・情報処理システム内にあるメモリーの使用領域を初期化する方式であって，
前記メモリーの初期化対象領域に対して，計算機言語を用いて作成された関数またはサブルーチンにより，複数ワード単位にまとめて初期値を代入する手段を備える
ことを特徴とするメモリー使用領域初期化方式。
【請求項２】
通信・情報処理システム内にあるメモリーの使用領域を初期化する方式をコンピュータによって実現するプログラムであって，
前記メモリーの初期化対象使用領域に対して，複数ワード単位にまとめて初期値を代入する処理を，コンピュータに実行させるための関数化またはサブルーチン化されたメモリー使用領域初期化プログラム。
【請求項３】
通信・情報処理システム内にあるメモリーの使用領域を初期化する方式をコンピュータによって実現するプログラムを記録した記録媒体であって，
前記メモリーの初期化対象使用領域に対して，複数ワード単位にまとめて初期値を代入する処理を，コンピュータに実行させるための関数化またはサブルーチン化されたメモリー使用領域初期化プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，メモリー使用領域初期化方式に関し，特に通信・情報処理システムにおいて使用されるメモリー初期化対象領域の初期化方式に関する。
【０００２】
【従来の技術】
従来，通信・情報処理システム内におけるメモリー初期化対象領域の初期化方式としては，例えば，Ｃ言語等での実現手段としてｍｅｍｓｅｔ関数等を使用し，初期化対象領域の初期化を行っていた。
【０００３】
図３は，従来の初期化方式を説明するための図である。図３において，２０は主記憶装置，２１は初期化対象領域，２１１〜２１６は１ワード毎の一度に初期化する領域である。従来の初期化方式では，例えばＣ言語のｍｅｍｓｅｔ関数を用いて，初期化対象領域２１の初期化を行っているが，ｍｅｍｓｅｔ関数等では，例えば１ワード単位の一度に初期化する領域２１１，２１２，…ごとに初期化する処理を繰り返し行っていた。
【０００４】
図４は，従来の初期化方式の処理手順を示すフローチャートである。まず，ステップＳ１１では，初期化するワードへのポインタを初期化対象領域２１の先頭に移動させる。ステップＳ１２では，移動したワードへのポインタに従って１ワードの初期化を実行する。次に，ステップＳ１３では，初期化するワードへのポインタを１ワード分先に進める。ステップＳ１４では，未処理の初期化対象領域２１が残っているか否かを判定し，残っていればステップＳ１２へ戻り，１ワード分ずつ順次ずらして初期化を行い，初期化対象領域２１の初期化がすべて終了するまで繰り返す。以上のように，全初期化対象領域を初期化するためには，１ワードずつの初期化処理を繰り返すことになる。
【０００５】
既存のｍｅｍｓｅｔ（ｓ，ｃ，ｎ）関数は，ｓから始まるメモリ上のｎバイトをバイトｃに設定することができ，バイト数ｎに大きな値を指定して，見かけ上，一度の初期化単位を大きくすることは可能である。しかし，プログラム実行上，コンパイル後のアセンブラ展開は，結局，初期化単位のバイト数ｎ分の初期化を繰り返したものになるから，後述する図５（Ａ）において説明するように，実行上の処理ステップ数は軽減せず高速な初期化とはならない。
【０００６】
なお，ｍｅｍｓｅｔ関数のパフォーマンスおよびプログラムテストに関して説明した文献として，下記の非特許文献１がある。
【０００７】
【非特許文献１】
紙名哲生，“外国語論文講読，Ｔｈｅ  Ｐｒａｃｔｉｃｅ  ｏｆ  Ｐｒｏｇｒａｍｍｉｎｇ，Ｃｈａｐｔｅｒ６−Ｔｅｓｔｉｎｇ−  ”，［ｏｎｌｉｎｅ］，２００２年６月２１日，［平成１５年１月２５日検索］，インターネット＜ＵＲＬ：ｈｔｔｐ／／ｗｗｗ．ｇｒａｃｏ．ｃ．ｕ−ｔｏｋｙｏ．ａｃ．ｊｐ／〜ｋａｍｉｎａ／ｊｕｇｙｏ／ｐｐ６．ｐｄｆ＞
【０００８】
【発明が解決しようとする課題】
上述した従来の初期化方式では，図４のステップＳ１２の初期化実行とステップＳ１３の移動を１ワードずつ何度も行わなければならず，処理効率が悪くなってしまう。このため，初期化対象領域が大きければ大きいほど，全ての領域を初期化し終わるまでの処理に時間がかかり，通信・情報処理システムにおいて大きな問題となることがある。なお，初期化実行ｆｏｒ文の操り返し数が多くなるため，処理ステップが多くなり処理時間がかかるほか，プログラムが占有するメモリー使用量も多くなるという欠点がある。
【０００９】
本発明の目的は，通信・情報処理システムなどのパソコンやワークステーション内における主記憶装置（メモリー）にて使用する領域を初期化する際に，処理速度を上げ，効率よく実行する初期化方式を提供することにある。
【００１０】
【課題を解決するための手段】
本発明は，前述の課題を解決して，初期化対象領域の初期化を効率よく実行することができるようにするため，通信・情報処理システム内にあるメモリーにおいて，初期化対象使用領域に対し，複数ワード単位にまとめて初期値を代入する手段を備えることを特徴とする。この手段は，例えばＣ言語やアセンブラ言語などのプログラムで呼び出すことができる関数もしくはサブルーチンによって実現される。
【００１１】
これによって，複数ワード単位にまとめてメモリー上の使用領域を初期化できるので，ｆｏｒ文の繰り返し回数が少なくなり，プログラム実行の処理ステップ数が削減される。したがって，通信・情報処理システム内にあるメモリーにおいて，初期化対象領域に対する初期化の処理速度を上げ，効率よく実行することが可能となる。
【００１２】
【発明の実施の形態】
次に，本発明の実施の形態について図面を参照して説明する。図１は，本発明に用いられるメモリー内における初期化対象領域を初期化する際の一例を示す説明図である。図１に示す初期化対象領域１１は，あるプログラム処理において使用するバッファーなどのデータを一時的に記憶するために利用する領域であり，そのバッファーなどに使用する領域においては，まずそのサイズ分の領域全体を初期化する必要がある。
【００１３】
バッファーなどに使用するために，使用するサイズ分確保する領域を初期化対象領域と呼ぶこととする。図１に示す初期化対象領域１１は，このような領域であり，バッファーなどのサイズにより変化する領域である。この初期化対象領域１１を初期化する際には，初期化プログラム（関数）を使って，初期化対象領域１１のサイズ分，一度に初期化を実行するサイズ単位（一度に初期化する領域１１１，１１２など）ごとに初期化実行を繰り返し行う。
【００１４】
すなわち，一度の初期化プログラム（関数）実行により，一度に初期化する領域１１１，１１２，１１３を順に一つずつ領域をずらして初期化を実施し，必要な初期化対象領域１１のサイズ分繰り返すことによって，初期化対象領域１１の全体の初期化を実施する。一度に初期化する領域１１１，１１２，１１３は，複数ワードの大きさである。
【００１５】
図２は，本発明の実施の形態におけるメモリー使用領域初期化処理動作の一例を示すフローチャートである。まずステップＳ１では，初期化する領域へのポインタを初期化対象領域１１の先頭に移動させる。ステップＳ２では，移動したポインタに従って１０ワードの初期化を実行する。ここでは，１０ワードでなくても１００ワードでも５００ワードでもよく，何ワードをまとめて初期化するかはプログラミングにより変更することができる。
【００１６】
次に，ステップＳ３では，初期化する領域へのポインタを１０ワード分（一度に初期化するワード分）先の領域に進める。ステップＳ４では，未処理の初期化対象領域１１が残っているか否かを判定し，残っていればステップＳ２へ戻り，１０ワード分ずつ順次ずらして初期化を行い，初期化対象領域１１の初期化がすべて終了するまで繰り返す。
【００１７】
このような１０ワード分（一度に初期化するワード分）の初期化を繰り返す処理において，未初期化対象領域として１０ワード（一度に初期化するワード）未満の端数が残る場合がある。このようなケースも初めから想定しており，初期化対象領域サイズを初期化単位で割った余りを求めて，その端数領域の初期化だけは，別途，従来通りの方法である汎用の１ワード単位の初期化処理（例えばＣ言語のｍｅｍｓｅｔ関数）を用いる。端数の領域だけは，従来通りの例えばｍｅｍｓｅｔ関数を用いることで，最小単位の１ワード分ずつ初期化ができるから，初期化対象領域に初期化されない部分が残ることはない。
【００１８】
次に，本発明の特徴的な動作について説明する。上述のように，初期化対象領域を１０ワード分（一度に初期化するワード分）まとめて初期化を行うことから，繰り返し数が少なくなり，初期化処理速度が上がり，効率よく初期化を実行できる。
【００１９】
図５に従来方式と本発明での初期化プログラムを比較した例を示す。初期化するバッファー領域（初期化対象領域）が，５万ｂｙｔｅｓ（１２，５００ワード）の時，図５（Ａ）に示す従来のバッファー初期化処理では，一度の初期化処理に２ステップかかり，初期化対象領域分操り返すと，２５，０００のステップ数を要する。既存のｍｅｍｓｅｔ（ｓ，ｃ，ｎ）関数を用いた場合では，ｓから始まるメモリ上のｎバイトをバイトｃに設定することができ，バイト数ｎに大きな値を指定して，見かけ上，一度の初期化単位を大きくすることは可能であるが，プログラム実行上，コンパイル後のアセンブラ展開は，結局，初期化単位のバイト数ｎ分を繰り返したものになるから，実行上の処理ステップ数は軽減せず高速な初期化とはならない。
【００２０】
これに対して，図５（Ｂ）に示す本発明による方式を用いたバッファー初期化処理によれば，一度の初期化処理に１ステップしかかからず，初期化対象領域分繰り返して全体の領域を初期化し終わるのに１２，５００のステップ数で済む。このことから初期化処理にかかる処理量は，半分に削減できる。初期化対象領域が更に大きければ大きいほど，初期化処理速度の差が大きくなり，本発明による効率のよさが歴然となる。
【００２１】
本発明によるメモリ使用領域の初期化のためのプログラムを，関数化（サブルーチン化）しておくことにより，初期化が必要なバッファーを使用するアプリケーションプログラム等は，簡易に処理速度を高速化することができる。その関数の例を以下に示す。
【００２２】
この例では，メモリ領域の初期化関数をＣ言語で記述しており，この関数の関数名は“ｍｅｍｉｎｉｔ１０  ”である。引数は，初期化対象領域の先頭アドレスと，初期化対象領域のサイズである。
【００２３】
以下のプログラムにおいて，ｓｔｒｕｃｔ１０＿ｔ  は，１０ワード分の一度に初期化する領域（１回のループで初期化する領域）を示している。この領域に対するポインタが，ｓｔｒｕｃｔ１０ｐ  である。ｗｏｒｄ＿ｓｉｚｅ１０は，１０ワードのバイト数（１ワードが３２ビットのシステムでは４０バイト），ｒｅｓｔは，初期化対象領域のサイズ（ｂｙｔｅ＿ｓｉｚｅ）をｗｏｒｄ＿ｓｉｚｅ１０で割ったときの余りである。
【００２４】
この関数では，最初に初期化対象領域のサイズ（ｂｙｔｅ＿ｓｉｚｅ）を，一度に初期化する領域（ｓｔｒｕｃｔ１０＿ｔ  ）のサイズで割り，ｗｏｒｄ＿ｓｉｚｅ１０を求め，その結果からｒｅｓｔを算出している。その後，１０ワード分を０に初期化し，初期化する領域へのポインタ（ｓｔｒｕｃｔ１０ｐ  ）をｓｔｒｕｃｔ１０＿ｔ  のサイズだけ進める初期化処理を，ｗｏｒｄ＿ｓｉｚｅ１０の回数だけ繰り返し行い，繰り返しが終了した時点で，残り（ｒｅｓｔ）の領域を，既存のｍｅｍｓｅｔ関数を用いて“０”に初期している。
【００２５】
2004240532.tif 000003
2004240532.tif 000004
以上の例では，Ｃ言語による関数によってメモリーの初期化を行う例を説明したが，アセンブラ言語や他の計算機言語等によって作成されるサブルーチン等によっても，本発明に係るメモリー使用領域初期化方式を同様に実現することができる。
【００２６】
【発明の効果】
以上説明したように本発明によれば，通信・情報処理システムなどのメモリー内にて，初期化対象使用領域を初期化する際に，複数ワード単位にまとめて初期値を代入する手段により，初期化処理の速度を上げ，効率よく初期化を実行することができるという効果がある。特に，大きなバッファーを扱う場合には，その分の大きなメモリー初期化対象領域を初期化する必要があるため，この初期化対象領域が大きければ大きいほど，本発明のメモリー使用領域初期化方式による効果が高くなる。
【図面の簡単な説明】
【図１】本発明の初期化方式を説明するための図である。
【図２】本発明の初期化処理動作の一例を示すフローチャートである。
【図３】従来の初期化方式を説明するための図である。
【図４】従来方式の初期化処理を示すフローチヤートである。
【図５】従来方式と本発明の初期化プログラムを比較した例を示す図である。
【符号の説明】
１０，２０  主記憶装置
１１，２１  初期化対象領域
１１１〜１１３  一度に初期化する領域（本発明）
２１１〜２１６  一度に初期化する領域（従来技術）
【図１】
2004240532.tif 000005
【図２】
2004240532.tif 000006
【図３】
2004240532.tif 000007
【図４】
2004240532.tif 000008
【図５】
2004240532.tif 000009