(57)【要約】【課題】データの並び替えを効率よく、かつ、回路規模の増大を抑えるように構成したＳＩＭＤ型マイクロプロセッサおよびＳＩＭＤ型マイクロプロセッサのデータ整列方法を提供する。【解決手段】ＧＰ２が、読み出し処理Ａを行い、リードレジスタ１７のレジスタ１７ａに読み出したデータを格納し、読み出し処理Ｂを行い、リードレジスタ１７のレジスタ１７ｂに読み出したデータを格納し、レジスタ１７ａに格納したデータを組み合せ回路１８で並び替えてライトレジスタ１９を介してレジスタファイル３に書き戻し、レジスタ１７ｂに格納したデータを組み合せ回路１８で並び替えてライトレジスタ１９を介してレジスタファイル３に書き戻す。【選択図】図３
2011134042.tif 000002
【特許請求の範囲】
【請求項１】
２次元配列状に配置され、予め付与されたアドレスに応じて２ワードのデータのリードライトが行える複数のレジスタから構成されたレジスタファイルと、前記レジスタを一度に複数列分指定して複数列分のデータを前記レジスタファイルの外部とデータ転送するデータバスと、を備えたＳＩＭＤ型マイクロプロセッサにおいて、
前記データバスが、前記レジスタに格納される２ワードのデータを一方側と他方側に分割してデータ転送可能に構成され、
前記レジスタファイルの列数をＮ（Ｎは２以上の自然数）とし、ｎ列目（ｎは１以上の自然数）の前記レジスタ内の一方側ワードのデータと（ｎ＋Ｎ／２）列目の前記レジスタ内の他方側ワードのデータとを同時に前記ｎを１ずつ増加させながらＭワード分（Ｍは２以上の偶数）順次読み出す第一の読み出し手段と、
ｎ列目の前記レジスタ内の他方側ワードのデータと（ｎ＋Ｎ／２）列目のレジスタ内の一方側ワードのデータとを同時に前記ｎを１ずつ増加させながら前記Ｍワード分順次読み出す第二の読み出し手段と、
前記レジスタファイルから前記第一の読み出し手段が読み出した前記Ｍワード分のデータを格納するための第一のリードレジスタと、
前記レジスタファイルから前記第二の読み出し手段が読み出した前記Ｍワード分のデータを格納するための第二のリードレジスタと、
前記第一のリードレジスタのデータと前記第二のリードレジスタのデータとを交互に並べて前記Ｍワード分のデータを形成し前記レジスタファイルに書き戻す書き戻し手段と、
を備えていることを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項２】
前記書き戻し手段が、並べ替え前のデータが格納されていた行の前記レジスタとは異なる行の前記レジスタに書き戻すことを特徴とする請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項３】
前記書き戻し手段が生成したデータを記憶する記憶手段を備え、
前記書き戻し手段が、生成した前記Ｍワード分のデータを前記記憶手段に記憶させるとともに、前記Ｎ列分のデータが記憶された後に前記記憶手段から前記レジスタファイルに書き戻すことを特徴とする請求項１または２に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項４】
２次元配列状に配置され、予め付与されたアドレスに応じて２ワードのデータのリードライトが行える複数のレジスタから構成されたレジスタファイルと、前記レジスタを一度に複数列分指定して複数列分のデータを前記レジスタファイルの外部とデータ転送するデータバスと、を備えたＳＩＭＤ型マイクロプロセッサのデータ整列方法において、
前記レジスタファイルの列数をＮ（Ｎは２以上の自然数）とし、ｎ列目（ｎは１以上の自然数）の前記レジスタ内の一方側ワードのデータと（ｎ＋Ｎ／２）列目の前記レジスタ内の他方側ワードのデータとを同時に前記ｎを１ずつ増加させながらＭワード分（Ｍは２以上の偶数）順次読み出す第一の工程と、
前記レジスタファイルから前記第一の工程で読み出した前記Ｍワード分のデータを第一のリードレジスタに格納する第二の工程と、
ｎ列目の前記レジスタ内の他方側ワードのデータと（ｎ＋Ｎ／２）列目のレジスタ内の一方側ワードのデータとを同時に前記ｎを１ずつ増加させながら前記Ｍワード分順次読み出す第三の工程と、
前記レジスタファイルから前記第二の工程で読み出した前記Ｍワード分のデータを第二のリードレジスタに格納する第四の工程と、
前記第一のリードレジスタのデータと前記第二のリードレジスタのデータとを交互に並べて前記Ｍワード分のデータを形成し前記レジスタファイルに書き戻す第五の工程と、
を備えていることを特徴とするＳＩＭＤ型マイクロプロセッサのデータ整列方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つの演算命令により複数の画像データ等を並列処理するＳＩＭＤ（Single Instruction-stream Multiple Data-stream）型マイクロプロセッサに関する。
【背景技術】
【０００２】
ＳＩＭＤ型マイクロプロセッサでは、複数のデータに対して１つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理（例えばデジタル複写機などにおける画像処理）に係る用途において頻用される（例えば、特許文献１参照）。
【０００３】
ＳＩＭＤ型マイクロプロセッサにおける通常の画像処理では、複数の演算ユニット（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ  ［ＰＥ］；プロセッサエレメント）を主走査方向に並べ、同一の演算を同時に複数のデータに対して実行することによって高速な演算処理が可能となっている。従って、ＳＩＭＤ型マイクロプロセッサが有するＰＥ数は画像処理の処理速度を決定する最も重要な要素の１つである。
【０００４】
一方、画像処理装置への要求性能には、出力画像の品質向上ということも挙げられ、これは各ＰＥで一度に処理可能な演算データのビット幅に依存する。つまり、ＰＥに含まれる演算回路、データ記憶回路のビット幅が大きく、演算精度が高ければ出力画像の品質を向上させる一助となる。
【０００５】
そのため、演算速度を高めるためのＰＥ数増と、演算精度を高めるための演算回路、データ記憶回路のビット幅増は、回路規模の観点からトレードオフの関係にあり、対象とする画像処理の処理内容を分析し、適切に対応する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来から、上述した点を踏まえ、各ＰＥに演算可能な要素群を複数存在させ、状況に応じて、演算可能な要素群を独立、もしくは連動して動作させることで、実質のＰＥ数、演算ビット幅を変更することが可能である構成のＳＩＭＤ型マイクロプロセッサが提案されている。
【０００７】
このような構成のＳＩＭＤ型マイクロプロセッサにおいて、各ＰＥで複数の独立した演算を行わせる場合、演算データを格納するレジスタにも複数の独立したデータを格納しておく必要がある。
【０００８】
例えばレジスタの最大ビット幅を１６ビットとすると、各ＰＥで１つの演算を行わせる場合には、レジスタには１つの１６ビットデータを格納しておき、各ＰＥで２つの演算を行わせる場合には、レジスタには２つの８ビットデータを格納しておく必要がある。このように各ＰＥが備える一つずつのレジスタに２つのデータを格納する場合、ＰＥを１次元アレイ状、つまり、１列に配置しているとすると、図６、図７のような代表的な２つのデータの並べ方が考えられる（図中、ＰＥの総数は１６としている）。
【０００９】
図６および図７では“００”から“３１”までの昇順データの並べ方を例にとり、２通りの並べ方を図示している。以降、ＰＥ番号をｎ（ｎは０以上の自然数とする）とし、各ＰＥ内レジスタのＬｏｗ側、Ｈｉｇｈ側の８ビットデータを、それぞれＰＥ［ｎ］（Ｌ）、ＰＥ［ｎ］（Ｈ）のように表記すると、図６では、ＰＥ［０］（Ｌ）、ＰＥ［０］（Ｈ）、ＰＥ［１］（Ｌ）、ＰＥ［１］（Ｈ）、の順にＰＥ１５［Ｈ］まで３２個のデータをジグザグ状に並べている。図７では、ＰＥ［０］（Ｌ）からＰＥ［１５］（Ｌ）までレジスタのＬｏｗ側にすべてデータを並べた後、次にＰＥ［０］（Ｈ）からＰＥ１５［Ｈ］までレジスタのＨｉｇｈ側に最後までデータを並べている。以降、本明細書中において、図６の並べ方をパックド配置と呼び、図７をセパレート配置と呼ぶこととする。
【００１０】
パックド配置あるいはセパレート配置のどちらのデータ配置を採用するかは、後述する、レジスタファイルに対してデータのリード／ライトが可能な外部データ処理装置の構成に依存し、必要に応じてデータの並べ替えを行う必要がある。
【００１１】
このようなデータの整列処理の多くは、ＳＩＭＤ型マイクロプロセッサの並列性を十分に生かせず、プロセッサの処理性能を落とす要因となってしまう。また、レジスタを含むＰＥ内に並べ替え処理のための専用経路を持たせるということも考えられるが、ＰＥ総数に応じて長配線化、あるいは配線の複雑さといった実装面における問題が大きくなることが多い。
【００１２】
本発明はかかる問題を解決することを目的としている。
【００１３】
すなわち、本発明は、データの並び替えを効率よく、かつ、回路規模の増大を抑えるように構成したＳＩＭＤ型マイクロプロセッサおよびＳＩＭＤ型マイクロプロセッサのデータ整列方法を提供することを目的としている。
【課題を解決するための手段】
【００１４】
請求項１に記載された発明は、２次元配列状に配置され、予め付与されたアドレスに応じて２ワードのデータのリードライトが行える複数のレジスタから構成されたレジスタファイルと、前記レジスタを一度に複数列分指定して複数列分のデータを前記レジスタファイルの外部とデータ転送するデータバスと、を備えたＳＩＭＤ型マイクロプロセッサにおいて、前記データバスが、前記レジスタに格納される２ワードのデータを一方側と他方側に分割してデータ転送可能に構成され、前記レジスタファイルの列数をＮ（Ｎは２以上の自然数）とし、ｎ列目（ｎは１以上の自然数）の前記レジスタ内の一方側ワードのデータと（ｎ＋Ｎ／２）列目の前記レジスタ内の他方側ワードのデータとを同時に前記ｎを１ずつ増加させながらＭワード分（Ｍは２以上の偶数）順次読み出す第一の読み出し手段と、ｎ列目の前記レジスタ内の他方側ワードのデータと（ｎ＋Ｎ／２）列目のレジスタ内の一方側ワードのデータとを同時に前記ｎを１ずつ増加させながら前記Ｍワード分順次読み出す第二の読み出し手段と、前記レジスタファイルから前記第一の読み出し手段が読み出した前記Ｍワード分のデータを格納するための第一のリードレジスタと、前記レジスタファイルから前記第二の読み出し手段が読み出した前記Ｍワード分のデータを格納するための第二のリードレジスタと、前記第一のリードレジスタのデータと前記第二のリードレジスタのデータとを交互に並べて前記Ｍワード分のデータを形成し前記レジスタファイルに書き戻す書き戻し手段と、を備えていることを特徴とするＳＩＭＤ型マイクロプロセッサである。
【００１５】
請求項２に記載された発明は、請求項１に記載された発明において、前記書き戻し手段が、並べ替え前のデータが格納されていた行の前記レジスタとは異なる行の前記レジスタに書き戻すことを特徴とする。
【００１６】
請求項３に記載された発明は、請求項１または２に記載された発明において、前記書き戻し手段が生成したデータを記憶する記憶手段を備え、前記書き戻し手段が、生成した前記Ｍワード分のデータを前記記憶手段に記憶させるとともに、前記Ｎ列分のデータが記憶された後に前記記憶手段から前記レジスタファイルに書き戻すことを特徴とする。
【００１７】
請求項４に記載された発明は、２次元配列状に配置され、予め付与されたアドレスに応じて２ワードのデータのリードライトが行える複数のレジスタから構成されたレジスタファイルと、前記レジスタを一度に複数列分指定して複数列分のデータを前記レジスタファイルの外部とデータ転送するデータバスと、を備えたＳＩＭＤ型マイクロプロセッサのデータ整列方法において、前記レジスタファイルの列数をＮ（Ｎは２以上の自然数）とし、ｎ列目（ｎは１以上の自然数）の前記レジスタ内の一方側ワードのデータと（ｎ＋Ｎ／２）列目の前記レジスタ内の他方側ワードのデータとを同時に前記ｎを１ずつ増加させながらＭワード分（Ｍは２以上の偶数）順次読み出す第一の工程と、前記レジスタファイルから前記第一の工程で読み出した前記Ｍワード分のデータを第一のリードレジスタに格納する第二の工程と、ｎ列目の前記レジスタ内の他方側ワードのデータと（ｎ＋Ｎ／２）列目のレジスタ内の一方側ワードのデータとを同時に前記ｎを１ずつ増加させながら前記Ｍワード分順次読み出す第三の工程と、前記レジスタファイルから前記第二の工程で読み出した前記Ｍワード分のデータを第二のリードレジスタに格納する第四の工程と、前記第一のリードレジスタのデータと前記第二のリードレジスタのデータとを交互に並べて前記Ｍワード分のデータを形成し前記レジスタファイルに書き戻す第五の工程と、を備えていることを特徴とするＳＩＭＤ型マイクロプロセッサのデータ整列方法である。
【発明の効果】
【００１８】
請求項１に記載の発明によれば、第一の読み出し手段でｎ列目のレジスタの一行目側データと（ｎ＋Ｎ／２）列目のレジスタの二行目側データとを同時にｎを１ずつ増加させながらＭワード分順次読み出し第一のリードレジスタに格納し、第二の読み出し手段でｎ列目のレジスタの二行目側データと（ｎ＋Ｎ／２）列目のレジスタの一行目側データとを同時にｎを１ずつ増加させながらＭワード分順次読み出し第二のリードレジスタに格納し、書き戻し手段で第一のリードレジスタの２ｍ番目のデータと第二のリードレジスタのデータとを交互に並べてＭワード分のデータを形成しレジスタファイルに書き戻しているので、ＰＥのレジスタにパックド配置されたデータをセパレート配置に並べ替える際に、物理的に離れたＰＥのデータを効率的に読み出すことができ、置き換え処理全体にかかるハードウェア追加を少なく抑えることができる。また、複数ワード同時に読み出しているので、処理の高速化にも寄与できる。
【００１９】
請求項２に記載の発明によれば、書き戻し手段が、並べ替え前のデータが格納されていた行のレジスタとは異なる行のレジスタに書き戻しているので、並べ替え前の元データを格納するレジスタと、並べ替え後のデータを書き戻すレジスタを別々にすることとなり、並べ替え後のデータによって、まだ並べ替え処理が終わっていない元データを書き潰すことがなくなる。
【００２０】
請求項３に記載の発明によれば、書き戻し手段が生成したデータを記憶する記憶手段を備え、書き戻し手段が、生成したＭワード分のデータを記憶手段に記憶させるとともに、Ｎ列分のデータが記憶された後に記憶手段からレジスタファイルに書き戻しているので、並べ替え後のデータをレジスタファイルに書き戻す前にメモリ等に退避することで、並べ替え後のデータがすべて揃ってからレジスタファイルに順に書き戻していくことができるため、並べ替え前の元データを格納するレジスタと、並べ替え後のデータを書き戻すレジスタを同一にすることができる。
【００２１】
請求項４に記載の発明によれば、第一の工程でｎ列目のレジスタの一行目側データと（ｎ＋Ｎ／２）列目のレジスタの二行目側データとを同時にｎを１ずつ増加させながらＭワード分順次読み出し、第二の工程で第一のリードレジスタに格納し、第三の工程でｎ列目のレジスタの二行目側データと（ｎ＋Ｎ／２）列目のレジスタの一行目側データとを同時にｎを１ずつ増加させながらＭワード分順次読み出し、第四の工程で第二のリードレジスタに格納し、第五の工程で第一のリードレジスタの２ｍ番目のデータと第二のリードレジスタのデータとを交互に並べてＭワード分のデータを形成しレジスタファイルに書き戻しているので、ＰＥのレジスタにパックド配置されたデータをセパレート配置に並べ替える際に、物理的に離れたＰＥのデータを効率的に読み出すことができ、置き換え処理全体にかかるハードウェア追加を少なく抑えることができる。また、複数ワード同時に読み出しているので、処理の高速化にも寄与できる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態にかかるＳＩＭＤ型マイクロプロセッサの構成図である。
【図２】図１に示されたＳＩＭＤ型マイクロプロセッサのレジスタファイルとＧＰへデータ転送用のデータバスの部分を抜き出した概略図である。
【図３】図２に示されたデータバスの書き戻し部分を加えた概略図である。
【図４】図２に示されたＳＩＭＤ型マイクロプロセッサのデータ並べ替え動作を示したフローチャートである。
【図５】本発明の他の実施形態にかかるＳＩＭＤ型マイクロプロセッサの概略図である。
【図６】パックド配置を示した説明図である。
【図７】セパレート配置を示した説明図である。
【発明を実施するための形態】
【００２３】
以下、本発明の一実施形態を、図１ないし図４を参照して説明する。図１は、本発明の一実施形態にかかるＳＩＭＤ型マイクロプロセッサの構成図である。図２は、図１に示されたＳＩＭＤ型マイクロプロセッサのレジスタファイルとＧＰへデータ転送用のデータバスの部分を抜き出した概略図である。図３は、図２に示されたデータバスの書き戻し部分を加えた概略図である。図４は、図２に示されたＳＩＭＤ型マイクロプロセッサのデータ並べ替え動作を示したフローチャートである。
【００２４】
図１に本発明の一実施形態にかかるＳＩＭＤ型マイクロプロセッサ１を示す。図１に示したＳＩＭＤ型マイクロプロセッサ１は、グローバルプロセッサ２と、レジスタファイル３と、演算アレイ６と、を備えている。
【００２５】
第一の読み出し手段、第二の読み出し手段、書き戻し手段としてのグローバルプロセッサ（ＧＰ）２は、ＳＩＭＤ型マイクロプロセッサ１のプログラム格納用のプログラムＲＡＭ（Ｐｒｏｇｒａｍ−ＲＡＭ）と、演算データ格納用のデータＲＡＭ（Ｄａｔａ−ＲＡＭ）が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ１５レジスタ、レジスタ退避、復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）が内蔵されている。
【００２６】
レジスタファイル３は、各ＰＥごとにＲ０からＲ３１の３２本１６ビットのレジスタが内蔵されており、ＰＥ数分の組みが並べられたアレイ構成になっている。なお、これらの１６本のレジスタを総称して以降Ｒレジスタと呼ぶこととする。また、それぞれのレジスタは演算アレイ６に対してポートを備えており、１６ビットのリード／ライト兼用のバス（以下レジスタバス４）で演算アレイ６からアクセスできる。なお、図１で図示しているレジスタは、紙面の関係で各ＰＥで６本としている。即ち、レジスタファイル３は、２次元配列状に配置され、予め付与されたアドレスに応じてデータのリードライトが行える複数のレジスタから構成されている。
【００２７】
レジスタファイル３の図１中上段２つのレジスタ（実際は２４個のレジスタ）は、図示していない外部データ処理装置によって内容の読み出し／書き込みが可能なレジスタである。そのため、プロセッサ外に設けられる外部データ処理装置からデータバスと制御信号線５を用いて、任意のレジスタの読み出し／書き込みが可能である。また、外部データ処理装置からアクセス可能なレジスタは、それぞれ固有のアドレスが割り振られており、外部データ処理装置はアクセスするレジスタのアドレスを制御信号に含めて出力する。このデータバスと制御信号線５に接続されたレジスタにおいては、外部データ処理装置が出力するアドレスと自身のアドレスを比較し、一致していればアクセスに対応する。
【００２８】
演算アレイ６は、７ｔｏ１マルチプレクサ（７ｔｏ１ＭＵＸ）７と、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）８と、下位用１６ｂｉｔＡＬＵ９と、上位用１６ｂｉｔＡＬＵ１０と、下位用Ａレジスタ１１と、上位用Ａレジスタ１２と、下位用Ｆレジスタ１３と、上位用Ｆレジスタ１４と、を備えている。
【００２９】
７ｔｏ１マルチプレクサ７は、レジスタファイル３と演算部１５との接続に設けられており、ＰＥの並んだ方向で左に１、２、３つ離れたＰＥのレジスタバス４、右に１、２、３つ離れたＰＥのレジスタバス４、自ＰＥのレジスタバス４に接続し、演算対象として選択することを可能としている。
【００３０】
シフタ８は、７ｔｏ１マルチプレクサ７の出力のビットシフトと拡張を行う。シフタ８の制御はＰＥ命令のオプション指定により行われる。
【００３１】
下位用１６ｂｉｔＡＬＵ９は、算術論理演算器であり、ＰＥ命令により演算が制御される。下位用１６ｂｉｔＡＬＵ９は、基本的にレジスタファイルから読み出されシフタ８を経たデータを片側の入力として、もう片側には下位用Ａレジスタ１１の内容を入力として、結果を下位用Ａレジスタ１１に格納する。
【００３２】
上位用１６ｂｉｔＡＬＵ１０は、算術論理演算器であり、ＰＥ命令により演算が制御される。上位用１６ｂｉｔＡＬＵ１０は、基本的にレジスタファイルから読み出されシフタ８を経たデータを片側の入力として、もう片側には上位用Ａレジスタ１２の内容を入力として、結果を上位用Ａレジスタ１２に格納する。
【００３３】
下位用１６ｂｉｔＡＬＵ９と上位用１６ｂｉｔＡＬＵ１０は、それぞれ独立して１６ビットの演算が可能であるとともに、連動して動作し合わせて３２ビットの演算も可能である。また、それぞれの動作はＧＰ２からの制御による。なお、下位用１６ｂｉｔＡＬＵ９と上位用１６ｂｉｔＡＬＵ１０が連動する場合のため、両ＡＬＵ間にキャリーなどの情報伝達経路を備えている。
【００３４】
そして、７ｔｏ１マルチプレクサ（７ｔｏ１ＭＵＸ）７と、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）８と、下位用１６ｂｉｔＡＬＵ９と、上位用１６ｂｉｔＡＬＵ１０と、下位用Ａレジスタ１１と、上位用Ａレジスタ１２と、下位用Ｆレジスタ１３と、上位用Ｆレジスタ１４と、それぞれ１組ずつ備えたものが演算部１５であり、演算アレイ６は、演算部１５が複数並べて設けられている。
【００３５】
さらに、Ｒレジスタが１組と、演算部１５が１組で１つのＰＥを構成する。
【００３６】
次に、上述した構成のＳＩＭＤ型マイクロプロセッサ１の動作を説明する。
【００３７】
図２は、上述した構成のＳＩＭＤ型マイクロプロセッサ１のレジスタファイル３とＧＰ２へデータ転送用のデータバス１６の部分を抜き出した概略図である。図２では説明を簡単にするために、ＰＥはＰＥ［０］からＰＥ［１５］までの１６ＰＥで構成していることとする。また、図２では、レジスタファイル３中の１つのレジスタ（例えばＲ０レジスタ）を抜き出して図示している。
【００３８】
そして、図２には、データバス１６以外に、リードレジスタ１７と、組み合せ回路１８と、ライトレジスタ１９と、が図１に対して追加されている。
【００３９】
データバス１６は、図１には図示していなかったが、複数ＰＥ分のデータをＧＰ２が備えるデータＲＡＭ等に転送するための経路として従来から設けられているものである。また、データバス１６は、データバスと制御信号線５と同様にレジスタファイル３のレジスタごとに設けられている。つまり、データバス１６は、全Ｒ０レジスタを接続するものだけでなく、Ｒ１レジスタやＲ２レジスタにも設けられている。但し、どの行のレジスタまで設けるかは、適用する処理や必要とする性能に合わせて適宜設定すればよい。
【００４０】
リードレジスタ１７は、８ワード分のデータを格納する第一のリードレジスタとしてのレジスタ１７ａと、第二のリードレジスタとしてのレジスタ１７ｂの２組を有し、データバス１６に読み出されてきたレジスタファイル３のデータが格納される。
【００４１】
書き戻し手段としての組み合せ回路１８は、リードレジスタ１７に格納されたデータを並び替えて後述するライトレジスタ１９へ出力する。
【００４２】
ライトレジスタ１９は、組み合せ回路１８で並べ替えられたデータを格納するレジスタであり、その後レジスタファイル３へデータバス１６を介して書き戻す。
【００４３】
なお、リードレジスタ１７、組み合せ回路１８、ライトレジスタ１９は、本発明を実施するに際して追加されたものである。
【００４４】
図２の場合、最大４ＰＥ分のデータを一度に転送可能となっており、ＳＩＭＤ型マイクロプロセッサ１が備える転送命令によって、例えばＰＥ［０］からＰＥ［３］までの４ＰＥ分のデータ転送を指示すると、ＰＥ［０］からＰＥ［３］までのデータを順に並べた６４ビットデータをＧＰ２側に送る。なお、図２のレジスタ内に記載された“００”や“０１”などがデータの並びを示す番号である。即ち、データバス１６は、レジスタを一度に複数列分指定して複数列分のデータをレジスタファイル３の外部とデータ転送する。
【００４５】
また、例えばＰＥ［０］からＰＥ［１５］までの１６ＰＥ分のデータ転送を指示すると、
（１）ＰＥ［０］、ＰＥ［４］、ＰＥ［８］、 ＰＥ［１２］のデータを論理和演算した１６ビット分のデータ
（２）ＰＥ［１］、ＰＥ［５］、ＰＥ［９］、 ＰＥ［１３］のデータを論理話演算した１６ビット分のデータ
（３）ＰＥ［２］、ＰＥ［６］、ＰＥ［１０］、ＰＥ［１４］のデータを論理和演算した１６ビット分のデータ
（４）ＰＥ［３］、ＰＥ［７］、ＰＥ［１１］、ＰＥ［１５］のデータを論理和演算した１６ビット分のデータ
の（１）から（４）を順に並べた６４ビットデータをＧＰ２側に送る。つまり、ＰＥ［０］からＰＥ［３］のように連続して並んでいるＰＥに限らず、例えば、ＰＥ［０］、ＰＥ［５］、ＰＥ［１０］、ＰＥ［１５］といった並びのデータを送ることもできる。
【００４６】
そして、このように構成されたデータバス１６を、各ＰＥのＲレジスタの一方側としてのＬｏｗ側、他方側としてのＨｉｇｈ側の８ビットずつのデータを別々に制御することで、Ｒレジスタから読み出し可能な６４ビット分のデータを、パックド配置からセパレート配置へ並べ替えを容易に行っている。つまり、１つのレジスタには２ワード分のデータが格納されている。以下に具体的な動作を説明する。なお、以下の動作制御はＧＰ２が行う。
【００４７】
まず、１回目の読み出し処理として、ＰＥ［０］（Ｌ）、ＰＥ［８］（Ｈ）、ＰＥ［１］（Ｌ）、ＰＥ［９］（Ｈ）、ＰＥ［２］（Ｌ）、ＰＥ［１０］（Ｈ）、ＰＥ［３］（Ｌ）、ＰＥ［１１］（Ｈ）を順に並べた６４ビットデータを読み出し、リードレジスタ１７のレジスタ１７ａに格納する。この時点で、レジスタ１７ａには図２に示すように、“００” “１７” “０２” “１９” “０４” “２１” “０６” “２３”番目のデータが順に格納されている。
【００４８】
次に、２回目の読み出し処理として、ＰＥ［８］（Ｌ）、ＰＥ［０］（Ｈ）、ＰＥ［９］（Ｌ）、ＰＥ［１］（Ｈ）、ＰＥ［１０］（Ｌ）、ＰＥ［２］（Ｈ）、ＰＥ［１１］（Ｌ）、ＰＥ［３］（Ｈ）を順に並べた６４ビットデータを読み出し、リードレジスタ１７のレジスタ１７ｂに格納する。この時点で、レジスタ１７ａには図２に示すように、“１６” “０１” “１８” “０３” “２０” “０５” “２２” “０７”番目のデータが順に格納されている。
【００４９】
次に、１つ目の書き戻しデータとして、ＰＥ［０］（Ｌ）、ＰＥ［８］（Ｌ）、ＰＥ［０］（Ｈ）、ＰＥ［８］（Ｈ）、ＰＥ［１］（Ｌ）、ＰＥ［９］（Ｌ）、ＰＥ［１］（Ｈ）、ＰＥ［９］（Ｈ）を順に組み合せ回路１９が並べた６４ビットデータをライトレジスタ１９に格納する。つまり、ライトレジスタ１９には、“００” “１６” “０１” “１７” “０２” “１８” “０３” “１９”番目のデータが順に格納されている。即ち、レジスタ１７ａ、１７ｂ、１７ｂ、１７ａ、１７ａ、１７ｂ、…といった形でレジスタ１７ａのデータとレジスタ１７ｂのデータとを交互に並べて８ワード分のデータを形成している。
【００５０】
次に、ライトレジスタ１９に格納された１つ目の書き戻しデータを、異なる行（例えばＲ１レジスタ）のＰＥ［０］（Ｌ）、ＰＥ［０］（Ｈ）、ＰＥ［１］（Ｌ）、ＰＥ［１］（Ｈ）、ＰＥ［２］（Ｌ）、ＰＥ［２］（Ｈ）、ＰＥ［３］（Ｌ）、ＰＥ［３］（Ｈ）に書き戻す。つまり、ＰＥ［０］（Ｌ）に“００” 番目のデータ、ＰＥ［０］（Ｈ）に“１６” 番目のデータ、ＰＥ［１］（Ｌ）に“０１” 番目のデータ、ＰＥ［１］（Ｈ）に“１７” 番目のデータ、ＰＥ［２］（Ｌ）に“０２” 番目のデータ、ＰＥ［２］（Ｈ）に“１８” 番目のデータ、ＰＥ［３］（Ｌ）に“０３” 番目のデータ、ＰＥ［３］（Ｈ）に“１９” 番目のデータがそれぞれ格納される。この書き戻しもデータバス１６を用いて行う。
【００５１】
次に、２つ目の書き戻しデータとして、ＰＥ［２］（Ｌ）、ＰＥ［１０］（Ｌ）、ＰＥ［２］（Ｈ）、ＰＥ［１０］（Ｈ）、ＰＥ［３］（Ｌ）、ＰＥ［１１］（Ｌ）、ＰＥ［３］（Ｈ）、ＰＥ［１１］（Ｈ）を順に組み合せ回路１９が並べた６４ビットデータをライトレジスタ１９に格納する。つまり、ライトレジスタ１９には、“０４” “２０” “０５” “２１” “０６” “２２” “０７” “２３”番目のデータが順に格納されている。
【００５２】
次に、ライトレジスタ１９に格納された２つ目の書き戻しデータを、異なる行（例えばＲ１レジスタ）のＰＥ［４］（Ｌ）、ＰＥ［４］（Ｈ）、ＰＥ［５］（Ｌ）、ＰＥ［５］（Ｈ）、ＰＥ［６］（Ｌ）、ＰＥ［６］（Ｈ）、ＰＥ［７］（Ｌ）、ＰＥ［７］（Ｈ）に書き戻す。つまり、ＰＥ［４］（Ｌ）に“０４” 番目のデータ、ＰＥ［４］（Ｈ）に“２０” 番目のデータ、ＰＥ［５］（Ｌ）に“０５” 番目のデータ、ＰＥ［５］（Ｈ）に“２１” 番目のデータ、ＰＥ［６］（Ｌ）に“０６” 番目のデータ、ＰＥ［６］（Ｈ）に“２２” 番目のデータ、ＰＥ［７］（Ｌ）に“０７” 番目のデータ、ＰＥ［７］（Ｈ）に“２３” 番目のデータがそれぞれ格納される。
【００５３】
次に、３回目の読み出し処理として、ＰＥ［４］（Ｌ）、ＰＥ［１２］（Ｈ）、ＰＥ［５］（Ｌ）、ＰＥ［１３］（Ｈ）、ＰＥ［６］（Ｌ）、ＰＥ［１４］（Ｈ）、ＰＥ［７］（Ｌ）、ＰＥ［１５］（Ｈ）を順に並べた６４ビットデータを読み出しリードレジスタ１７のレジスタ１７ａに格納する。この時点で、レジスタ１７ａには “０８” “２５” “１０” “２７” “１２” “２９” “１４” “３１”番目のデータが順に格納されている。
【００５４】
次に、４回目の読み出し処理として、ＰＥ［１２］（Ｌ）、ＰＥ［４］（Ｈ）、ＰＥ［１３］（Ｌ）、ＰＥ［５］（Ｈ）、ＰＥ［１４］（Ｌ）、ＰＥ［６］（Ｈ）、ＰＥ［１５］（Ｌ）、ＰＥ［７］（Ｈ）を順に並べた６４ビットデータを読み出しリードレジスタ１７のレジスタ１７ｂに格納する。この時点で、レジスタ１７ａには “０９” “２４” “１１” “２６” “１３” “２８” “１５” “３０”番目のデータが順に格納されている。
【００５５】
次に、３つ目の書き戻しデータとして、ＰＥ［４］（Ｌ）、ＰＥ［１２］（Ｌ）、ＰＥ［４］（Ｈ）、ＰＥ［１２］（Ｈ）、ＰＥ［５］（Ｌ）、ＰＥ［１３］（Ｌ）、ＰＥ［５］（Ｈ）、ＰＥ［１３］（Ｈ）を順に組み合せ回路１９が並べた６４ビットデータをライトレジスタ１９に格納する。つまり、ライトレジスタ１９には、“０８” “２４” “０９” “２５” “１０” “２６” “１１” “２７”番目のデータが順に格納されている。
【００５６】
次に、ライトレジスタ１９に格納された３つ目の書き戻しデータを、異なる行（例えばＲ１レジスタ）のＰＥ［８］（Ｌ）、ＰＥ［８］（Ｈ）、ＰＥ［９］（Ｌ）、ＰＥ［９］（Ｈ）、ＰＥ［１０］（Ｌ）、ＰＥ［１０］（Ｈ）、ＰＥ［１１］（Ｌ）、ＰＥ［１１］（Ｈ）に書き戻す。つまり、ＰＥ［８］（Ｌ）に“０８” 番目のデータ、ＰＥ［８］（Ｈ）に“２４” 番目のデータ、ＰＥ［９］（Ｌ）に“０９” 番目のデータ、ＰＥ［９］（Ｈ）に“２５” 番目のデータ、ＰＥ［１０］（Ｌ）に“１０” 番目のデータ、ＰＥ［１０］（Ｈ）に“２６” 番目のデータ、ＰＥ［１１］（Ｌ）に“１１” 番目のデータ、ＰＥ［１１］（Ｈ）に“２７” 番目のデータがそれぞれ格納される。
【００５７】
次に、４つ目の書き戻しデータとして、ＰＥ［６］（Ｌ）、ＰＥ［１４］（Ｌ）、ＰＥ［６］（Ｈ）、ＰＥ［１４］（Ｈ）、ＰＥ［７］（Ｌ）、ＰＥ［１５］（Ｌ）、ＰＥ［７］（Ｈ）、ＰＥ［１５］（Ｈ）を順に組み合せ回路１９が並べた６４ビットデータをライトレジスタ１９に格納する。つまり、ライトレジスタ１９には、“１２” “２８” “１３” “２９” “１４” “３０” “１５” “３１”番目のデータが順に格納されている。
【００５８】
次に、ライトレジスタ１９に格納された４つ目の書き戻しデータを、異なる行（例えばＲ１レジスタ）のＰＥ［１２］（Ｌ）、ＰＥ［１２］（Ｈ）、ＰＥ［１３］（Ｌ）、ＰＥ［１３］（Ｈ）、ＰＥ［１４］（Ｌ）、ＰＥ［１４］（Ｈ）、ＰＥ［１５］（Ｌ）、ＰＥ［１５］（Ｈ）に書き戻す。つまり、ＰＥ［１２］（Ｌ）に“１２” 番目のデータ、ＰＥ［１２］（Ｈ）に“２８” 番目のデータ、ＰＥ［１３］（Ｌ）に“１３” 番目のデータ、ＰＥ［１３］（Ｈ）に“２９” 番目のデータ、ＰＥ［１４］（Ｌ）に“１４” 番目のデータ、ＰＥ［１４］（Ｈ）に“３０” 番目のデータ、ＰＥ［１５］（Ｌ）に“１５” 番目のデータ、ＰＥ［１５］（Ｈ）に“３１” 番目のデータがそれぞれ格納される。
【００５９】
以上のように動作させることにより、図３に示したようにＲレジスタの異なる行にパックド配置からセパレート配置への並べ替え処理を完了させることができる。
【００６０】
ここで、１回目の読み出し処理から見た３回目の読み出し処理、２回目の読み出し処理から見た４回目の読み出し処理は、それぞれＰＥ番号を４だけインクリメントした違いであり、これらは、１回目の読み出し処理と３回目の読み出し処理を読み出し処理Ａ、２回目の読み出し処理と４回目の読み出し処理を読み出し処理Ｂの２パターンの処理に分類することができる。
【００６１】
パックド配置からセパレート配置に変換する際には、ＰＥ［０］のＬｏｗ側及びＨｉｇｈ側データ、ＰＥ［８］のＬｏｗ側及びＨｉｇｈ側データのようにＰＥ総数のちょうど折り返し位置にあたるＰＥ同士のデータを組み合せて配置する必要がある。これは、ＰＥ番号をｎ、ＰＥ総数をＮとすると、“ＰＥ［ｎ］とＰＥ［ｎ＋Ｎ／２］のデータを組み合せる”、と表現することができる。
【００６２】
即ち、読み出し処理Ａは、レジスタファイル３の列数をＮ（Ｎは２以上の自然数）とし、ｎ列目（ｎは１以上の自然数）のレジスタ内の一方側ワードのデータと（ｎ＋Ｎ／２）列目のレジスタ内の他方側ワードのデータとを同時にｎを１ずつ増加させながらＭワード分（Ｍは本実施形態では８）順次読み出し、読み出し処理Ｂは、ｎ列目のレジスタ内の他方側ワードのデータと（ｎ＋Ｎ／２）列目のレジスタ内の一方側ワードのデータとを同時にｎを１ずつ増加させながらＭワード分順次読み出している。そして、レジスタ１７ａは、レジスタファイル３から読み出し処理Ａで読み出したＭワード分のデータを格納し、レジスタ１７ｂは、レジスタファイル３から読み出し処理Ｂで読み出したＭワード分のデータを格納している。
【００６３】
ここで、上述した動作を図４のフローチャートにまとめる。まず、ステップＳ１において、読み出し処理Ａを行い８ワード分のデータを読み出し、リードレジスタの１つ目（レジスタ１７ａ）に格納してステップＳ２に進む。
【００６４】
次に、ステップＳ２において、読み出し処理Ｂを行い８ワード分のデータを読み出し、リードレジスタの２つ目（レジスタ１７ｂ）に格納してステップＳ３に進む。
【００６５】
次に、ステップＳ３において、２つのリードレジスタに格納された１６ワード（８ワード×２）のデータから最初の８ワード分の並べ替え後のデータを形成し書き戻してステップＳ４に進む。
【００６６】
次に、ステップＳ４において、２つのリードレジスタに格納された１６ワード（８ワード×２）のデータから次の８ワード分の並べ替え後のデータを形成しに書き戻してステップＳ５に進む。
【００６７】
次に、ステップＳ５において、ＰＥ番号を４インクリメント（＋４）してステップＳ６に進む。
【００６８】
次に、ステップＳ６において、全てのＰＥについて処理が終了したか否かを判断し、終了している場合（Ｙｅｓの場合）は終了し、終了していない場合（Ｎｏの場合）はステップＳ１に戻る。
【００６９】
本実施形態によれば、ＧＰ２が、読み出し処理Ａを行い、リードレジスタ１７のレジスタ１７ａに読み出したデータを格納し、読み出し処理Ｂを行い、リードレジスタ１７のレジスタ１７ｂに読み出したデータを格納し、レジスタ１７ａに格納したデータを組み合せ回路１８で並び替えてライトレジスタ１９を介してレジスタファイル３に書き戻し、レジスタ１７ｂに格納したデータを組み合せ回路１８で並び替えてライトレジスタ１９を介してレジスタファイル３に書き戻しているので、ＰＥのＲレジスタにパックド配置されたデータをセパレート配置に並べ替える際に、物理的に離れたＰＥのデータを効率的に読み出すことができ、置き換え処理全体にかかるハードウェア追加を少なく抑えることができる。また、複数ワード同時に読み出しているので、処理の高速化にも寄与できる。
【００７０】
また、本実施形態では説明を簡単にするためにＰＥ総数を１６としたが、実際は５１２、あるいは１０２４といった大規模なものが主流であるため、折り返し位置にあたるＰＥ同士の距離が遠く、配線の複雑さ等の観点からしてレジスタファイル３内部に専用経路を持たせることは得策でなく、本実施形態のように元々プロセッサが備えていた経路を再利用することで、回路や配線の増大を抑えることができる。
【００７１】
また、Ｒレジスタの異なる行に書き戻しているので元データを書き潰すことがない。
【００７２】
なお、Ｒレジスタの異なる行に書き戻しているので、ライトレジスタ１９は、必ずしも必要ではなく、組み合せ回路１８から直接書き戻してもよい。
【００７３】
また、リードレジスタ１７を４組設ければ、４回分の読み出し処理のデータを格納することができるため、４回分の読み出し処理の後、Ｒレジスタの同じ行に書き戻すことができる。リードレジスタ１７を４組設けた場合は、ライトレジスタ１９を設けなくとも並び替えたデータを直接Ｒレジスタの同じ行に書き戻すことができる。つまり、読み出し処理を読み出し処理Ａに対応する第一のリードレジスタと、読み出し処理を読み出し処理Ｂに対応する第二のリードレジスタがそれぞれ２組ずつ設けられていれば良い。
【００７４】
また、図５に示すようにライトレジスタ１９をＧＰ２のデータＲＡＭ２０に出力し、全ての並べ替えデータをＧＰ２のデータＲＡＭに格納した後にデータＲＡＭ２０からレジスタファイル３への書き戻しを行ってもよい。このようにすることで、すべての元データについての並べ替え後のデータが記憶手段としてのデータＲＡＭ２０に揃っているため、元データを格納している読み出しレジスタと、並べ替え後のデータを格納する書き戻しレジスタにＲレジスタの同じ行を使用することができる。また、記憶手段としてＧＰ２のデータＲＡＭ２０を用いているので新たにメモリを追加する必要が無くハードウェアの追加を抑えることができる。また、この場合もライトレジスタ１９を必要とせず組み合せ回路１８の出力をデータＲＡＭ２０に出力すれば元データを書き潰すことがない。
【００７５】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【００７６】
１          ＳＩＭＤ型マイクロプロセッサ
２          グローバルプロセッサ（第一の読み出し手段、第二の読み出し手段、書き戻し手段）
３          レジスタファイル
１６        データバス
１７        リードレジスタ
１７ａ      レジスタ（第一のリードレジスタ）
１７ｂ      レジスタ（第二のリードレジスタ）
１８        組み合せ回路（書き戻し手段）
２０        データＲＡＭ（記憶手段）
Ｒ０〜Ｒ３１       レジスタ
【先行技術文献】
【特許文献】
【００７７】
【特許文献１】特開２００２−２９８１３５号公報
【図１】
2011134042.tif 000003
【図２】
2011134042.tif 000004
【図３】
2011134042.tif 000005
【図４】
2011134042.tif 000006
【図５】
2011134042.tif 000007
【図６】
2011134042.tif 000008
【図７】
2011134042.tif 000009