(57)【要約】【課題】  ＭＬＳを行うための条件を満たすアドレスの割当方法を提供すること。【解決手段】  領域ごとにアドレスが割り当てられた、少なくとも２つの領域からなるメモリにおいて、データを各アドレスに割り当てるアドレス割当方法であって、１つの命令によりデータを伝送可する少なくとも１つのブロックを生成し、データを少なくとも１つのブロックに組み込むように命令するステップと、ブロックに組み込まれたデータを互いに連結し、少なくとも１つのブロックについて、２つのデータを連結するパスの数を算出するステップと、算出したパスの数に基づく最小パスでデータを連結するステップと、最小パスを用いて、データをアドレスごとに割り当てるステップとから構成されるアドレスの割当方法。【選択図】      図２
2006040290.tif 000002
【特許請求の範囲】
【請求項１】
領域ごとにアドレスが割り当てられた、少なくとも２つの領域からなるメモリにおいて、データを各アドレスに割り当てるアドレス割当方法であって、
１つの命令によりデータを伝送する少なくとも１つのブロックを生成し、データを前記少なくとも１つのブロックに組み込むように命令するステップと、
前記ブロックに組み込まれたデータを互いに連結し、前記少なくとも１つのブロックについて、２つのデータを連結するパスの数を算出するステップと、
前記算出したパスの数に基づく最小パスで、前記データを連結するステップと、
前記最小パスを用いて、前記データをアドレスごとに割り当てるステップと、
とを含むことを特徴とするアドレス割当方法。
【請求項２】
前記パスの数がより多いパスを用いて前記データを連結すること、
を特徴とする請求項１に記載のアドレス割当方法。
【請求項３】
前記１つのブロックに組み込まれたデータは、特定アドレスから連続して割り当てられること、
を特徴とする請求項１に記載のアドレス割当方法。
【請求項４】
前記ブロックごとに組み込まれたデータを伝送する時間を決定し、前記少なくとも１つのブロックに組み込まれたデータを共通の時間で伝送すること、
を特徴とする請求項３に記載のアドレス割当方法。
【請求項５】
前記メモリから伝送されたデータは、レジスタに伝送されること、
を特徴とする請求項１に記載のアドレス割当方法。
【請求項６】
前記メモリから伝送されたデータは、レジスタの特定アドレスから連続して書き込まれること、
を特徴とする請求項５に記載のアドレス割当方法。
【請求項７】
少なくとも２つのデータユニット間の関連度を特定するステップと、
前記特定した関連度に基づいて、少なくとも１つのブロックに前記少なくとも２つのデータユニットを関連付けるステップと、
処理部と保存部との間で、前記少なくとも１つのブロックを伝送するステップと、
を含むことを特徴とするアドレス割当方法。
【請求項８】
前記関連度は、パス値を含むこと、
を特徴とする請求項７に記載のアドレス割当方法。
【請求項９】
前記処理部は、中央処理装置であり、前記保存部はレジスタであること、
を特徴とする請求項７に記載のアドレス割当方法。
【請求項１０】
処理部と保存部との間で移動した少なくとも２つのデータ間のパスの加重値（weight）を算出するステップと、
前記算出した加重値に従って、前記少なくとも２つのデータを連結するステップと、
を含むことを特徴とするデータ伝送方法。
【請求項１１】
前記算出した加重値に従って、前記少なくとも２つのデータを連結するステップは、
より大きなパスの加重値を有する経路に従って前記少なくとも２つのデータを連結すること、
を特徴とする請求項１０に記載のデータ伝送方法。
【請求項１２】
前記処理部は中央処理装置であり、前記保存部はレジスタであること、
を特徴とする請求項１０に記載のデータ伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コードサイズを減少する方法に係り、特に、メモリに記録されているデータのレジスタへの伝送およびレジスタに記録されているデータのメモリへの伝送の回数を最小化するアドレス割当方法およびデータ伝送方法に関する。
【背景技術】
【０００２】
一般に、中央処理装置（ＣＰＵ：Central Processing Unit）は、メモリに記録されているデータを用いて、演算などの既定の処理動作を行う。中央処理装置は、メモリに記録されているデータを直接使用して既定の処理動作を行うものでなく、中央処理装置に接続されたレジスタに記録されているデータを用いて既定の処理動作を行う。即ち、中央処理装置がメモリに記録されているデータを使用するためには、メモリに記録されているデータをレジスタに書き込む過程を先に行う必要がある。また、レジスタに記録されているデータを使用して既定の処理動作を行った中央処理装置は、その処理動作結果である結果データをレジスタに記録する。このレジスタに記録された結果データは、与えられる命令に従ってメモリに記録される。このように、中央処理装置がメモリに記録されているデータを使用するためには、レジスタを活用しなければならない。
【０００３】
メモリとレジスタは、複数の領域に分けられ、領域ごとにアドレスが割り当てられる。図１は、メモリとレジスタの構造を示す図面である。図１に示したレジスタは、１６個の領域に分けられ、領域ごとにアドレスが割り当てられていることが分かる。このレジスタの各領域は、ｒ０〜ｒ１５のアドレスが順次割り当てられる。また、メモリに対してもレジスタと同様に、領域ごとにアドレスが割り当てられる。メモリの大きさは、ユーザの設定によって異なるので、区分される領域数もそれに対応して変更される。図１に示すように、１つのメモリが複数の領域に分けられ、領域ごとに０ｘ００、０ｘ０４、０ｘ０８、０ｘ０ｃ、・・・とアドレスが割り当てられている。
【０００４】
以下、メモリに記録されているデータを、レジスタに伝送する過程について説明する。１つの命令でメモリに記録されているデータの中で１つの領域（アドレス）に記録されているデータが、レジスタの特定の領域（アドレス）に伝送される。
例えば、まず、第１の命令によって、メモリのアドレス０ｘ００に記録されているデータが、レジスタのアドレスｒ０に伝送されて記録される。次に、第２の命令によって、メモリのアドレス０ｘ０４に記録されているデータがレジスタのアドレスｒ１に伝達され記録される。そして、第３の命令によってメモリのアドレス０ｘ０８に記録されているデータがレジスタのアドレスｒ２に伝送され記録される。
このように、１つの命令に対して１つのデータがレジスタに伝送される。
【０００５】
中央処理装置は、レジスタに記録されているデータを用いて既定の処理動作を行った後、この処理動作により出力される結果データをレジスタに再記録する。このレジスタに記録された結果データも、１つの命令で１つのデータのみがメモリに伝送される。
この、１つの命令で、１つのデータしか伝送できないという問題点を解決するために、１つの命令で少なくとも２つのデータを伝送する方法が議論された。このように、１つの命令で少なくとも２つのデータを伝送する方法を多重ロードストア（Multiple Load-Store：ＭＬＳ）と言う。
【０００６】
次に、ＭＬＳについて説明する。ＭＬＳは、１つの命令でメモリに記録されている少なくとも２つのデータをレジスタに伝送する。しかし、ＭＬＳを行うためには、伝送側のメモリから読み込まれるデータのアドレスが連続して配置されていなければならない。たとえば、アドレス０ｘ０８に記録されているデータから、３つのデータを読み込む場合、読み込まれるデータのアドレスは、０ｘ０８、０ｘ０９、０ｘ１０である。そして、読み込まれたデータは、連続して配列されているレジスタのアドレスに記録される。たとえば、読み込まれたデータがｒ１より記録される場合、データが記録されるアドレスはｒ１、ｒ２、ｒ３となる。
【０００７】
このように、ＭＬＳを行うためには前記した要件を満たす必要がある。ところが、メモリに記録されているデータの中で、連続して記録されているデータを読み込める場合は極めて稀である。そこで、演算過程によりこのような要件を満たすようにメモリとレジスタのアドレスとに割り当てられるデータを再配置する方法も考えられが、この方法は演算量が大き過ぎるという短所がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、前記のような従来技術の問題点を解決するためになされたものであって、その目的は、ＭＬＳを行うための条件を満たすアドレスの割当方法を提供することである。
また、前記の問題点を解決するための本発明の他の目的は、データ伝送の回数を最小化するために、ＭＬＳを行うための条件を満たしたデータの伝送方法を提供することである。
【課題を解決するための手段】
【０００９】
前記の目的を達成するためになされた本発明は、領域ごとにアドレスが割り当てられた、少なくとも２つの領域からなるメモリにおいて、データを各アドレスに割り当てるアドレス割当方法であって、１つの命令によりデータを伝送可する少なくとも１つのブロックを生成し、データを少なくとも１つのブロックに組み込むように命令するステップと、ブロックに組み込まれたデータを互いに連結し、少なくとも１つのブロックについて、２つのデータを連結するパスの数を算出するステップと、算出したパスの数に基づく最小パスでデータを連結するステップと、最小パスを用いて、データをアドレスごとに割り当てるステップとから構成されることを特徴とする。
【００１０】
また、前記の他の目的を達成するためになされた本発明に係るデータ伝送方法は、処理部と記録部との間で移動した少なくとも２つのデータ間のパスの加重値（weight）を算出するステップと、算出したパスの加重値に従って、少なくとも２つのデータを連結するステップとを含むことを特徴とする。
【発明の効果】
【００１１】
本発明は、１つの命令で複数のデータを効率的に伝送できる方法を提供する。即ち、１つの命令で伝送できるように、データは、メモリの各アドレスに連続して割り当てられる。このように、１つの命令で複数のデータを伝送することで、データ伝送を命令するコードサイズが減少し、コードを記録するメモリサイズも減少する。
【発明を実施するための最良の形態】
【００１２】
以下、添付した図面を参照しつつ、本発明の好適な実施形態を詳説する。
【００１３】
図２は、本実施形態によるコードサイズを減少させる過程を示すフローチャートである。図２を参照しつつ、本実施形態によるコードサイズを減少させる過程について概略的に説明する。
ステップＳ２００では、領域Ｌおよび領域Ｓを測定する。ここで、領域Ｌとは、ロード（Load）領域であり、伝送先のデータか記録される領域であり、領域Ｓとは、ストア（Store）領域であり、伝送元のデータが記録された領域である。
ステップＳ２０２では、メモリからレジスタまたはレジスタからメモリに伝送するデータを連結するパスごとの加重値（weight）を算出する。ここで、加重値とは、２つのデータを１つの命令で伝送できる回数を示す。なお、図１では、レジスタの個数が１６個である場合を示しているが、これに限定されるものではない。即ち、レジスタの個数は、ユーザの設定によって任意に変更される。
【００１４】
ステップＳ２０４では、パス別の加重値の中で、最も小さな加重値を有する経路を削除する。各データは、いずれも最小のパス数で連結される必要があり、最小パスで連結するために不要であるパスは、加重値を考慮し削除する。
ステップＳ２０６では、削除されなかったパスを用いて各アドレスにデータを割り当てる。このデータを割り当てる過程を行うことによって、ＭＬＳを満たすことになる。以下、図２に示した過程についてより詳細に説明する。
中央処理装置の既定の処理動作が、次に示す「プログラム１」による演算であると仮定する。
【００１５】
【表１】
2006040290.tif 000003
【００１６】
この「プログラム１」は、レジスタ（レジスタアドレス）と対応させて、次に示す「プログラム２」のように表すことができる。
【００１７】
【表２】
2006040290.tif 000004
【００１８】
この「プログラム２」を用いて演算を行う場合に、データがレジスタに記録される時間について説明する。
「プログラム２」はＢ１〜Ｂ４から構成される。
まず、Ｂ１について説明する。「プログラム２」に示した演算のためにデータａがレジスタに記録される時間は、Ｂ１−０〜Ｂ１−２である。即ち、Ｂ１−２以内にデータａがレジスタに記録されれば、中央処理装置は演算を行うことができる。また、演算のためにデータｂがレジスタに記録される時間は、Ｂ１−０〜Ｂ１−２である。また、演算のためにデータｃがレジスタに記録される時間は、Ｂ１−０〜Ｂ１−３である。さらに、演算のためにデータｄがレジスタに記録される時間は、Ｂ１−０〜Ｂ１−５である。
従って、データａ〜データｄをメモリからレジスタに１つの命令で伝送される時間はＢ１−０〜Ｂ１−２である。また、中央処理装置から伝送された結果データａは、メモリに伝送するために、Ｂ１−７でレジスタに記録される。
【００１９】
次に、Ｂ２について説明する。「プログラム２」に示した演算のためにデータｆがレジスタに記録される時間はＢ２−０〜Ｂ２−３である。また、演算のためにデータｄがレジスタに記録される時間もＢ２−０〜Ｂ２−３である。従って、データｆおよびデータｄをメモリからレジスタに１つの命令で伝送される時間は、Ｂ２−０〜Ｂ２−３である。また、中央処理装置から伝送された結果データｆは、メモリに伝達するため、Ｂ２−５でレジスタに記録される。
【００２０】
次に、Ｂ３について説明する。「プログラム２」に示した演算のためにデータａがレジスタに記録される時間はＢ３−０〜Ｂ３−３である。また、演算のためにデータｂがレジスタに記録される時間もＢ３−０〜Ｂ３−３である。さらに、演算のためにデータｄがレジスタに記録される時間はＢ３−０〜Ｂ３−６である。従って、データａ、データｂおよびデータｄをメモリからレジスタに１つの命令で伝送される時間はＢ３−０〜Ｂ３−３である。
また、中央処理装置から伝送された結果データｆは、メモリに伝送するためＢ３−５でレジスタに記録される。中央処理装置から伝送された結果データｅは、Ｂ３−８でレジスタに記録される。また、中央処理装置から伝送された結果データｄは、Ｂ３−９でレジスタに記録される。従って、結果データｆ、結果データｅおよび結果データｄをレジスタからメモリに１つの命令で伝送される時間はＢ３−９である。
【００２１】
次に、Ｂ４について説明する。「プログラム２」に示した演算のためデータｄがレジスタに記録される時間はＢ４−０〜Ｂ４−１である。また、演算のためにデータａがレジスタに記録される時間もＢ４−０〜Ｂ４−１である。従って、データｄおよびデータａをメモリからレジスタに１つの命令で伝送される時間はＢ４−０〜Ｂ４−１である。
【００２２】
前記した過程を通じて、ブロックごとに１つの命令でデータを伝送される時間について説明した。次に、データをメモリまたはレジスタのアドレスに割り当てる過程について説明する。前記したように、１つの命令でデータを伝送するためには、データを記録しているメモリまたはレジスタのアドレスが連続して配列されなければならない。
【００２３】
図３は、本実施形態による１つの命令で伝送できるデータと、このデータを互いに連結したパスを示す。以下、ブロックごとにデータを互いに連結したパスについて説明する。
まず、Ｂ１に関して、Ｂ１はデータａ、データｂ、データｃおよびデータｄを１つの命令で伝送する。データａ、データｂ、データｃおよびデータｄを連結するパスは、図３のＢ１のとおりである。また、図３に示したＢ１には、中央処理装置から伝送された結果データａが示されている。
Ｂ２に関して、Ｂ２はデータｆ、データｄを１つの命令で伝送する。このデータｆ、データｄを連結するパスは、図３のＢ２のとおりである。また、図３に示したＢ２には、中央処理装置から伝送された結果データｆが示されている。
Ｂ３に関して、Ｂ３はデータａ、データｂおよびデータｄを１つの命令で伝送する。このデータａ、データｂおよびデータｄを連結するパスは、図３のＢ３のとおりである。また、図３に示したＢ３には、中央処理装置から伝送された結果データｆ、結果データｄおよび結果データｅを連結するパスが示されている。
Ｂ４に関して、Ｂ４はデータａおよびデータｄを１つの命令で伝送する。データａおよびデータｄを連結するパスは、図３のＢ４のとおりである。また、図３に示したＢ４には、中央処理装置から伝送された結果データｆ、結果データｄおよび結果データｅを連結するパスが示されている。
【００２４】
図４Ａは、図３に示したパスごとの加重値（weight）を示す。以下、結果データとデータとを混用して使用する。
データａとデータｂを連結するパスは、図３のＢ１およびＢ３にそれぞれ示され、加重値は２である。また、データａおよびデータｃを連結するパスは、図３のＢ１に示され、加重値は１である。また、データａおよびデータｄを連結するパスは、図３のＢ１、Ｂ３およびＢ４にそれぞれ示され、加重値は３である。
また、データｄおよびデータｆを連結するパスは、図３のＢ２、Ｂ３およびＢ４にそれぞれ示され、加重値は３である。このような過程を順次に行うことによって図４Ａに示すパスごとの加重値が得られる。
【００２５】
図４Ｂは、最小パスを用いて各データをすべて連結した例を示す。従って、図４Ｂで選択されたパスを除くその他の図４Ａに示したパスは削除される。このようにパスごとの加重値を考慮して、一部のパスを削除する。即ち、加重値が小さなパスをまず削除する。このようにして、使用頻度が高いパスのみが残される。図４Ｂによれば、データａおよびデータｃを連結するパスと、データｃおよびデータｄを連結するパスと、データｂおよびデータｄを連結するパスと、データｄおよびデータｅを連結するパスとが削除されている。
【００２６】
図５は、図４Ｂに示したパスを用いて図３に示されたデータを連結した例を示す。
Ｂ１は、データａおよびデータｂを連結するパスと、データｂおよびデータｃを連結するパスと、データａおよびデータｄを連結するパスと、単独のデータａとから構成される。Ｂ２は、データｆおよびデータｄを連結するパスと、単独のデータｆとから構成される。Ｂ３は、データａおよびデータｂを連結するパスと、データａおよびデータｄを連結するパスとから構成される。また、図５に示したＢ３は、データｆおよびデータｄを連結するパスと、データｆおよびデータｅを連結するパスとを含んで構成される。Ｂ４は、データａおよびデータｄを連結するパスと、データｄおよびデータｆを連結するパスとから構成される。
図５に示したパスを用いて、メモリの各アドレスに割り当てられるデータを次の表３に示す。
【００２７】
【表３】
2006040290.tif 000005
【００２８】
メモリの各アドレスに表３に示すようなデータを割り当てることで、１つの命令で複数のデータを伝送できるようになる。すなわち、Ｂ１で必要なデータａ〜データｄは、メモリアドレス０ｘ００〜０ｘ０ｃから、１つの命令で読み込むことができる。また、Ｂ２〜Ｂ４で必要なデータも各アドレスから、１つの命令で読み込むことができる。
【００２９】
以上、本発明の好適な実施形態について図面を参照しつつ説明したが、本発明は、前記した特定の実施形態に限定されるものではなく、当該発明の属する技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された本発明の趣旨を逸脱することなく、種々の変形した実施例を具現可能である。そのような変更例は、本発明の特許請求の範囲に含まれることは自明である。
【図面の簡単な説明】
【００３０】
【図１】従来技術によるメモリおよびレジスタにアドレスを割り当てた状態を示す図面である。
【図２】メモリおよびレジスタの各アドレスにデータを割り当てる過程を示すフローチャートである。
【図３】ブロックごとに１つの命令で伝送できるデータを示す図面である。
【図４Ａ】１つの命令で伝送できるデータを互いに連結したパス別の加重値を示す図面である。
【図４Ｂ】最小パスを用いて各データをすべて連結した状態を示す図面である
【図５】図４Ｂに示したパスを用いて、１つの命令で伝送できるデータを最小パスで連結した状態を示す図面である。
【図１】
2006040290.tif 000006
【図２】
2006040290.tif 000007
【図３】
2006040290.tif 000008
【図４Ａ】
2006040290.tif 000009
【図４Ｂ】
2006040290.tif 000010
【図５】
2006040290.tif 000011