(57)【特許請求の範囲】
【請求項１】
ＳＩＭＤ演算を実行可能な演算器と、
前記演算器に供給する演算対象のデータを格納するレジスタファイルと、
前記レジスタファイルとは別個に設けられ、各データ列が複数個のデータ要素を含む整数ｎ個のデータ列を列毎に書き込み、前記ｎ個のデータ列の各々から同一位置のデータ要素を選択して得られるｎ個のデータ要素を並べて１つに纏めて読み出し可能なバッファと
を含み、
前記バッファは前記ＳＩＭＤ演算の並列数に等しい数の前記データ列を格納するだけの大きさであり、
前記バッファは２つのバッファであり、前記２つのバッファの一方のバッファから読み出した前記ｎ個のデータ要素を前記演算器に前記ＳＩＭＤ演算の対象として供給し、前記ＳＩＭＤ演算の演算結果を前記２つのバッファの他方のバッファに格納することを特徴とするプロセッサ。
【請求項２】
前記バッファは、前記レジスタファイルのデータ格納容量以下のデータ格納容量を有することを特徴とする請求項１記載のプロセッサ。
【請求項３】
第１の演算命令に応答して、前記レジスタファイルから読み出したデータを前記ＳＩＭＤ演算命令の対象として前記演算器に供給し、前記第１の演算命令とは異なる第２の演算命令に応答して、前記バッファから読み出した前記ｎ個のデータ要素を前記ＳＩＭＤ演算命令の対象として前記演算器に供給することを特徴とする請求項１又は２記載のプロセッサ。
【請求項４】
第１のストア命令に応答して、前記レジスタファイルから読み出したデータを外部に出力し、前記第１のストア命令とは異なる第２のストア命令に応答して、前記バッファから読み出したデータを外部に出力することを特徴とする請求項１乃至３の何れか一項記載のプロセッサ。
【請求項５】
レジスタ設定命令に応答して格納値が設定される制御レジスタと、
前記制御レジスタの前記格納値に応じて前記レジスタファイルから読み出したデータと前記バッファから読み出したデータとの何れか一方を選択して出力するセレクタ回路と
を更に含むことを特徴とする請求項１乃至４の何れか一項記載のプロセッサ。
【請求項６】
前記バッファが有効であるか否かを示す格納値を格納するバッファイネーブルレジスタと、
前記バッファイネーブルレジスタの前記格納値に応じて前記レジスタファイルから読み出したデータと前記バッファから読み出したデータとの何れか一方を選択して出力するセレクタ回路と
を更に含むことを特徴とする請求項１乃至４の何れか一項記載のプロセッサ。
【請求項７】
メモリと、
前記メモリに結合されるプロセッサと
を含み、前記プロセッサは、
ＳＩＭＤ演算を実行可能な演算器と、
前記演算器に供給する演算対象のデータを格納するレジスタファイルと、
前記レジスタファイルとは別個に設けられ、各データ列が複数個のデータ要素を含む整数ｎ個のデータ列を列毎に書き込み、前記ｎ個のデータ列の各々から同一位置のデータ要素を選択して得られるｎ個のデータ要素を並べて１つに纏めて読み出し可能なバッファと
を含み、
前記バッファは前記ＳＩＭＤ演算の並列数に等しい数の前記データ列を格納するだけの大きさであり、
前記バッファは２つのバッファであり、前記２つのバッファの一方のバッファから読み出した前記ｎ個のデータ要素を前記演算器に前記ＳＩＭＤ演算の対象として供給し、前記ＳＩＭＤ演算の演算結果を前記２つのバッファの他方のバッファに格納することを特徴とする情報処理システム。
【請求項８】
前記バッファは、前記レジスタファイルのデータ格納容量以下のデータ格納容量を有することを特徴とする請求項７記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に情報処理システムに関し、詳しくはＳＩＭＤ演算を実行可能なプロセッサに関する。
【背景技術】
【０００２】
一般的なＲＩＳＣ（Reduced Instruction Set Computer）プロセッサやＤＳＰ（Digital Signal Processor）は、演算対象の１つのデータに対して１つの演算処理を行なうために一つの命令を実行する。それに対してＳＩＭＤ（Single Instruction Multiple Data）命令を有するプロセッサの場合は、一つの命令を実行することにより、演算対象の複数のデータに対して同一の演算処理を並列に行うことができる。ＳＩＭＤ命令を実行する際、レジスタファイルの一つのエントリに格納されたデータは、一エントリのデータサイズよりも小さなサイズのデータを複数並べたものとして扱われ、これら複数のデータに対して並列に演算処理が実行される。例えば最初に、Ｌｏｎｇサイズ（４バイト）の１つのデータが、外部メモリからプロセッサに内蔵するレジスタファイルの１つのエントリに転送される。次にＳＩＭＤ命令により、レジスタファイルの１つのエントリに格納されているＬｏｎｇサイズの１つのデータを１バイトのサイズの４つのデータとして扱い、これら４つのデータに対して演算処理を並列に実行する。ＳＩＭＤ命令によって並列に処理された１バイトのサイズの４つのデータは、再び一纏まりのＬｏｎｇサイズのデータとして、レジスタファイルの一つのエントリに格納される。最後に、この処理結果をＬｏｎｇサイズのデータとして一括してデータ転送し、外部メモリに書き戻す。
【０００３】
ＤＣＴ（Discrete Cosine Transform）やフィルタ演算等ではＳＩＭＤ演算が有効である。しかしＳＩＭＤ演算機能を持つ従来のＲＩＳＣプロセッサやＤＳＰでは、ＳＩＭＤ演算を開始する前処理として、以下に説明するように、データの並び替えが必要になる。例えば画面の複数の水平ラインに対して水平方向にフィルタを掛けたい場合を考える。この場合、ＳＩＭＤ演算の並列処理の対象となる複数画素は画面の垂直方向に並んだ画素となる。しかしながら、外部メモリから一括してレジスタファイルの１つのエントリに転送することができる複数の画素は、メモリ空間で連続して格納されているデータであり、画像水平方向に並んだ複数の画素となる。例えばＬｏｎｇサイズのデータ転送の場合、外部メモリから一括してレジスタファイルの１つのエントリに転送するデータは、画像水平方向に並んだ各１バイトの４つの画素データとなってしまう。ＳＩＭＤ演算で並列処理したい対象の複数画素は画面の垂直方向に並んだ画素であるので、このＳＩＭＤ演算前の準備として、垂直方向に並んだ画素を水平方向に並び替えておく必要が生じる。これは画像を９０度回転させるコピー操作であり、数多くのメモリアクセスに加え、レジスタファイル上で数多くのシフト操作や論理演算等の処理を必要とする。その結果、数多くの処理サイクルを使用することになり、非常に大きなオーバーヘッドが発生してしまう。
【０００４】
このオーバーヘッドを解消するための手段として、レジスタファイルの複数のエントリに跨ったＳＩＭＤ演算の対象となる一組のデータ列を一度に読み出したり、書き込んだりすることが可能なプロセッサの構成が知られている（特許文献１）。このプロセッサでは、レジスタファイルを複数の部分に分割して、複数のメモリバンクにより構成している。この構成により、レジスタファイルの異なるエントリにある複数のデータを、一つのエントリにまとめることなしに、ＳＩＭＤ演算器との間で転送することが可能となる。即ち、ＳＩＭＤ演算前の前処理としてのデータ並び替え処理のオーバーヘッドが不要となり、大幅な性能向上が期待できる。
【０００５】
しかし上記の技術では、複数のメモリバンクを必要とし、更に複数のバンクに跨って書き込みや読み出しを行うためのアドレス生成回路及び各バンク用の制御回路が必要である。このため、通常のレジスタファイルを用いる構成に対して回路規模が大きくなり、またレジスタファイルに対する書き込み及び読み出しの遅延が大きくなる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３０９４９９号公報
【特許文献２】特開平１０−７４１４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以上を鑑みると、比較的小さな回路規模で且つレジスタファイルの遅延を増大させることなく、ＳＩＭＤ演算の前処理としてのデータ並び替えを実行可能なプロセッサが望まれる。
【課題を解決するための手段】
【０００８】
本発明の一観点によれば、ＳＩＭＤ演算を実行可能な演算器と、前記演算器に供給する演算対象のデータを格納するレジスタファイルと、前記レジスタファイルとは別個に設けられ、各データ列が複数個のデータ要素を含む整数ｎ個のデータ列を列毎に書き込み、前記ｎ個のデータ列の各々から同一位置のデータ要素を選択して得られるｎ個のデータ要素を並べて１つに纏めて読み出し可能なバッファとを含み、前記バッファは前記ＳＩＭＤ演算の並列数に等しい数の前記データ列を格納するだけの大きさであり、前記バッファは２つのバッファであり、前記２つのバッファの一方のバッファから読み出した前記ｎ個のデータ要素を前記演算器に前記ＳＩＭＤ演算の対象として供給し、前記ＳＩＭＤ演算の演算結果を前記２つのバッファの他方のバッファに格納するプロセッサが提供される。
【発明の効果】
【０００９】
開示のプロセッサによれば、書き込み単位と読み出し単位とが異なるバッファをレジスタファイルと別個に設け、このバッファによりＳＩＭＤ演算の前処理としてのデータ並び替えを実行する。これにより、比較的小さな回路規模で且つレジスタファイルの遅延を増大させることなく、ＳＩＭＤ演算の前処理としてのデータ並び替えが可能となる。
【図面の簡単な説明】
【００１０】
【図１】情報処理システムの構成の一例を示す図である。
【図２】図１のプロセッサによるデータ並べ替え及びＳＩＭＤ演算処理の流れを示すフローチャートである。
【図３】データ並べ替え及びＳＩＭＤ演算処理時のバッファのデータ内容を示す図である。
【図４】図２のデータ並べ替え及びＳＩＭＤ演算処理のパイプライン動作を示す図である。
【図５】バッファイネーブルレジスタの動作について説明するための図である。
【図６】プロセッサの変形例の構成を示す図である。
【図７】第１バッファ及び第２バッファの構成の一例を示す図である。
【図８】メディアプロセッサを用いた情報処理システムの構成の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１２】
図１は、情報処理システムの構成の一例を示す図である。図１の情報処理システムは、プロセッサ１０及び外部メモリ１００を含む。プロセッサ１０は外部メモリ１００に結合され、外部メモリ１００から命令及びデータを読み出す。外部メモリ１００には画素データＰ０、Ｐ１、Ｐ２、・・・を含む画像データが格納されている。以下の説明において、各画素データＰ０、Ｐ１、Ｐ２、・・・の各々は８ビットであるとして説明するが、各画素を構成するビットの数はこれに限られるものではない。また外部メモリ１００に格納されプロセッサ１０による処理の対象となるデータは画像データに限られるものではない。
【００１３】
プロセッサ１０は、演算器１１、レジスタファイル１２、バッファ１３、命令バッファ１４、命令デコーダ１５、ロードストア・アドレス生成部１６、制御レジスタ１７、バッファイネーブルレジスタ１８、及びパイプラインレジスタ１９を含む。プロセッサ１０は更に、セレクタ２５及びセレクタ２６を含む。プロセッサ１０は、プログラムカウンタ（図示せず）が示すアドレスに格納されている命令を外部メモリ１００から読み出して、命令バッファ１４に格納する。命令バッファ１４にフェッチされた命令は、命令デコーダ１５によりデコードされる。命令デコーダ１５はプロセッサ１０の動作シーケンスを制御するシーケンサを含み、命令デコード結果に応じて各種制御信号を生成する。この制御信号により、プロセッサ１０の各部の動作シーケンスが制御される。例えばデコードした命令がロード命令或いはストア命令である場合、ロードストア・アドレス生成部１６により、ロード対象或いはストア対象となるアドレスを生成する。ロード命令の場合、プロセッサ１０は、ロード対象アドレスに格納されているデータを外部メモリ１００から読み出す。ストア命令の場合、プロセッサ１０は、外部メモリ１００のストア対象アドレスにデータを格納する。
【００１４】
演算器１１は、命令デコーダ１５からの制御信号に基づいて、命令デコーダ１５の命令デコード結果に応じた演算処理を実行する。演算器１１は、ＳＩＭＤ演算を実行可能な演算器であり、ＳＩＳＤ（Single Instruction Single Data）の演算命令も実行可能であってよい。ＳＩＭＤ演算の場合、演算器１１は、レジスタファイル１２又はバッファ１３から供給される複数のデータ要素に対して同一の演算処理を並列に実行する。
【００１５】
レジスタファイル１２は、ｎ個のエントリとしてレジスタＲＥＧ０乃至ＲＥＧｎを含む。レジスタファイル１２は、演算器１１に供給する演算対象のデータを格納するとともに、演算器１１が実行した演算結果のデータを格納する。レジスタＲＥＧ０乃至ＲＥＧｎの各々は、例えば３２ビットのビット幅のデータを格納する。1つのエントリに格納される３２ビット（４バイト）のビット幅のデータがＳＩＭＤ演算の対象となる場合、例えば１バイトのサイズの４つのデータ要素に対して同一の演算処理が並列に実行される。以下の説明では、1つのレジスタに３２ビットのビット幅のデータが格納され、ＳＩＭＤ演算の並列処理の対象となる複数のデータ要素は各々が１バイトのサイズの４つのデータである場合を例として用いる。但し、レジスタＲＥＧ０乃至ＲＥＧｎのビット幅や、各データ要素のサイズ、複数のデータ要素の数は、この例に限定されるものではない。
【００１６】
バッファ１３は、複数のレジスタ要素２０、セレクタ２２、及びセレクタ２３を含む。複数のレジスタ要素２０の各々は、例えば８ビットのデータ要素を格納するように８個のフリップフロップを含んでよい。入力が信号線２１−０に接続される４つのレジスタ要素２０が１つのレジスタＲＥＧ０’を構成する。入力が信号線２１−１に接続される４つのレジスタ要素２０が１つのレジスタＲＥＧ１’を構成する。入力が信号線２１−２に接続される４つのレジスタ要素２０が１つのレジスタＲＥＧ２’を構成する。入力が信号線２１−１に接続される４つのレジスタ要素２０が１つのレジスタＲＥＧ３’を構成する。
【００１７】
外部メモリ１００からロード命令により一塊のデータとして読み出されたＬｏｎｇサイズ（４バイト）の画像データ（例えばＰ０，Ｐ１，Ｐ２，Ｐ３）は、レジスタＲＥＧ０’乃至ＲＥＧ３’のうちの指定された1つのレジスタに格納される。なおこのロード命令は、レジスタファイル１２の指定レジスタにロードする命令であってよい。例えばレジスタファイル１２のレジスタＲＥＧ０にロードするロード命令を実行すると、外部メモリ１００から読み出した４バイトの画像データがレジスタＲＥＧ０に格納されるとともに、セレクタ２２を介してバッファ１３のレジスタＲＥＧ０’にも格納される。レジスタファイル１２のレジスタＲＥＧ０乃至ＲＥＧ３は、それぞれバッファ１３のレジスタＲＥＧ０’乃至ＲＥＧ３’に対応している。即ち、ロード命令によりレジスタファイル１２の１つのレジスタＲＥＧｋ（ｋ＝０，１，２，又は３）に格納したデータは、バッファ１３の対応する１つのレジスタＲＥＧｋ’にも格納される。ロード命令により何れの１つのレジスタにデータが格納されるかは、命令デコーダ１５からの制御信号により制御される。
【００１８】
出力が信号線連結ユニット２４−Ａに接続される４つのレジスタ要素２０が１つのレジスタＲＥＧＡを構成する。出力が信号線連結ユニット２４−Ｂに接続される４つのレジスタ要素２０が１つのレジスタＲＥＧＢを構成する。出力が信号線連結ユニット２４−Ｃに接続される４つのレジスタ要素２０が１つのレジスタＲＥＧＣを構成する。出力が信号線連結ユニット２４−Ｄに接続される４つのレジスタ要素２０が１つのレジスタＲＥＧＤを構成する。信号線連結ユニット２４−Ａ乃至２４−Ｄの各々は、各レジスタ要素２０からの８ビットの出力を並べて纏めることで、３２ビットのデータを構成する。各３２ビットデータはセレクタ２３に供給される。セレクタ２３は、レジスタＲＥＧＡ乃至ＲＥＧＤの出力のうちの１つのレジスタの出力を選択して出力する。何れの１つのレジスタのデータが選択されるかは、命令デコーダ１５からの制御信号により制御される。
【００１９】
上記のようにしてバッファ１３は、各データ列が複数個のデータ要素を含む整数ｎ個のデータ列を列毎に書き込み、ｎ個のデータ列の各々から同一位置のデータ要素を選択してｎ個のデータ要素として読み出し可能なバッファとして機能する。図１の構成例では、各データ列が複数４個の画素データを含む整数４個のデータ列を列毎に書き込む。即ち、まず４個の画素データＰ０乃至Ｐ３を含むデータ列をレジスタＲＥＧ０’に格納する。次に４個の画素データＰ４乃至Ｐ７を含むデータ列をレジスタＲＥＧ１’に格納する。更に、４個の画素データＰ８乃至Ｐ１１を含むデータ列をレジスタＲＥＧ２’に格納し、４個の画素データＰ１２乃至Ｐ１５を含むデータ列をレジスタＲＥＧ３’に格納する。これにより４個のデータ列が４個のレジスタＲＥＧ０’乃至ＲＥＧ３’にそれぞれ格納される。
【００２０】
読み出し時には、４個のデータ列の各々から同一位置の画素データを選択して４個の画素データとして読み出す。例えば各データ列のうちで３番目の画素データ、即ちＬｏｎｇサイズの３２ビットのうち１５番目〜８番目のビット［１５：８］を選択するとする。この場合、４個のデータ列の各々のビット［１５：８］を信号線連結ユニット２４−Ｃにより纏めて４バイトのデータを構成し、この４バイトのデータをセレクタ２３により選択して出力する。これにより、４個の画素データＰ２、Ｐ６、Ｐ１０、Ｐ１４がセレクタ２３から出力される。同様に例えば、各データ列のうちで１番目の画素データ、即ちＬｏｎｇサイズの３２ビットのうち３１番目〜２４番目のビット［３１：２４］を選択するとする。この場合、４個のデータ列の各々のビット［３１：２４］を信号線連結ユニット２４−Ａにより纏めて４バイトのデータを構成し、この４バイトのデータをセレクタ２３により選択して出力する。これにより、４個の画素データＰ０、Ｐ４、Ｐ８、Ｐ１２がセレクタ２３から出力される。
【００２１】
演算器１１がＳＩＭＤ演算を行なう場合、ＳＩＭＤ演算の対象となるデータは、レジスタファイル１２又はバッファ１３から供給される。セレクタ２５が、レジスタファイル１２のデータ又はバッファ１３のデータの何れか一方を選択して演算器１１に供給する。セレクタ２５の選択動作は、実行する演算命令に応じた命令デコーダ１５からの制御信号により制御されてよい。例えば第１の演算命令に応答して、セレクタ２５は、レジスタファイル１２から読み出したデータをＳＩＭＤ演算命令の対象として演算器１１に供給する。また第１の演算命令とは異なる第２の演算命令に応答して、セレクタ２５は、バッファ１３から読み出したデータをＳＩＭＤ演算命令の対象として演算器１１に供給する。このように、レジスタファイル１２のデータを対象とするＳＩＭＤ演算命令とバッファ１３のデータを対象とするＳＩＭＤ演算命令とを、それぞれ別個に設け、実行する演算命令に応じて何れか一方のデータを選択してよい。
【００２２】
プロセッサ１０がデータストア命令を実行する場合、外部メモリ１００にストアする対象となるデータは、レジスタファイル１２又はバッファ１３から供給される。セレクタ２６が、レジスタファイル１２のデータ又はバッファ１３のデータの何れか一方を選択して外部メモリ１００に供給する。セレクタ２６の選択動作は、実行するストア命令に応じた命令デコーダ１５からの制御信号により制御されてよい。例えば第１のストア命令に応答して、セレクタ２６は、レジスタファイル１２から読み出したデータをストア命令の対象としてプロセッサ外部に出力する。また第１のストア命令とは異なる第２のストア命令に応答して、セレクタ２６は、バッファ１３から読み出したデータをストア命令の対象としてプロセッサ外部に出力する。このように、レジスタファイル１２のデータを対象とするストア命令とバッファ１３のデータを対象とするストア命令とを、それぞれ別個に設け、実行するストア命令に応じて何れか一方のデータを選択してよい。
【００２３】
また制御レジスタ１７によりセレクタ２５及び２６の選択動作を制御してもよい。実行するプログラム中にレジスタ設定命令を入れておき、命令デコーダ１５がこのレジスタ設定命令をデコードすると、このデコード結果に応じた格納値が制御レジスタ１７に設定される。セレクタ２５及び２６は、制御レジスタ１７の格納値に応じてレジスタファイル１２から読み出したデータとバッファ１３から読み出したデータとの何れか一方を選択して出力する。これにより、レジスタファイル１２のデータとバッファ１３のデータとの何れか一方の選択を、ソフトウェアにより制御してよい。
【００２４】
またバッファイネーブルレジスタ１８によりセレクタ２５及び２６の選択動作を制御してもよい。バッファイネーブルレジスタ１８は、バッファ１３の格納データが有効であるか否かを示す値を格納する。セレクタ２５及び２６は、バッファイネーブルレジスタ１８の格納値に応じてレジスタファイル１２から読み出したデータとバッファ１３から読み出したデータとの何れか一方を選択して出力する。
【００２５】
命令に応じた命令デコーダ１５による選択制御、制御レジスタ１７による選択制御、及びバッファイネーブルレジスタ１８による選択制御は、何れか１つを設けてもよいし、複数を同時に設けてもよい。複数を同時に設けた場合、適宜、選択動作の優先順位を設けてもよい。例えば、バッファイネーブルレジスタ１８による選択制御がバッファ１３の出力を選択していても、実行中の命令がレジスタファイル１２の出力を明示的に選択する命令である場合等があり得る。このような場合、例えば、命令に応じた命令デコーダ１５による選択制御を優先して、レジスタファイル１２の出力を選択するようにしてよい。
【００２６】
このようにして、列毎に順次データを格納し行毎に順次データを読み出し可能なバッファをレジスタファイルとは別個に設けることで、ＳＩＭＤ演算の準備としてのデータ並び替えを小規模な回路で実現する。ここで、メモリ空間上に不連続に配置されたデータ（例えばＰ０、Ｐ４、Ｐ８、Ｐ１２）をＳＩＭＤ演算の対象とする場合に用いるレジスタファイルのエントリ数は、ＳＩＭＤ演算の並列度に等しい。従って、並列演算に用いる数（図１の例では４個）のバッファ（ＲＥＧ０’乃至ＲＥＧ３’）を設け、ＳＩＭＤ演算の対象のデータ（例えばＰ０、Ｐ４、Ｐ８、Ｐ１２）をこれらバッファに格納し、上述のように並び替えて読み出せばよい。フリップフロップを縦横に並べてバッファ１３を構成することにより、単純な回路構成でＳＩＭＤ演算の前処理としての縦横のデータ並べ替えを行なうことができる。またレジスタファイル１２自体は、単一のメモリバンクで構成可能な通常の構成であり、例えば複数のメモリバンクで構成する場合のように回路規模が増大することもない。またレジスタファイル１２のデータ読み書きの速度についても、レジスタファイル１２の出力とバッファ１３の出力との何れかを選択するセレクタ２５及び２６の分だけの僅かな遅延が追加されるに過ぎない。またレジスタファイル１２と別個に設けるバッファ１３は、最低限ＳＩＭＤ演算の並列度に等しい数だけ設ければよいので、それ程大きな回路規模が必要とされるものではない。
【００２７】
図２は、図１のプロセッサ１０によるデータ並べ替え及びＳＩＭＤ演算処理の流れを示すフローチャートである。図３は、データ並べ替え及びＳＩＭＤ演算処理時のバッファ１３のデータ内容を示す図である。図２及び図３を参照しながら、データ並べ替え及びＳＩＭＤ演算処理について以下に説明する。
【００２８】
ステップＳ１において、ロード命令により、外部メモリ１００からレジスタファイル１２のレジスタＲＥＧ０に画像データＰ０、Ｐ１、Ｐ２、及びＰ３を格納する。このときバッファ１３のレジスタＲＥＧ０’にも同一のデータが格納される。図３（ａ）には、レジスタＲＥＧ０’に画像データＰ０、Ｐ１、Ｐ２、及びＰ３が格納されたバッファ１３の様子が示される。
【００２９】
ステップＳ２において、ロード命令により、外部メモリ１００からレジスタファイル１２のレジスタＲＥＧ１に画像データＰ４、Ｐ５、Ｐ６、及びＰ７を格納する。このときバッファ１３のレジスタＲＥＧ１’にも同一のデータが格納される。図３（ｂ）には、レジスタＲＥＧ１’に画像データＰ４、Ｐ５、Ｐ６、及びＰ７が格納されたバッファ１３の様子が示される。
【００３０】
ステップＳ３において、上記ステップＳ１及びＳ２と同様にして、レジスタＲＥＧ２に画像データＰ８、Ｐ９、Ｐ１０、及びＰ１１を格納するとともに、レジスタＲＥＧ３に画像データＰ１２、Ｐ１３、Ｐ１４、及びＰ１５を格納する。このときバッファ１３のレジスタＲＥＧ２’及びＲＥＧ３’にも同一のデータが格納される。図３（ｃ）には、レジスタＲＥＧ２’及びＲＥＧ３’に画像データＰ８乃至Ｐ１１及びＰ１２乃至Ｐ１５がそれぞれ格納されたバッファ１３の様子が示される。
【００３１】
ステップＳ４において、縦方向用ＳＩＭＤ演算命令によりレジスタＲＥＧＡ及びＲＥＧＢのデータを読み出してＳＩＭＤ演算を実行する。ここで縦方向用ＳＩＭＤ演算命令というのは、実行するＳＩＭＤ演算により並列処理される複数のデータが画像縦方向に並ぶ複数の画素だからである。図３（ｄ）において、画素データＰ０乃至Ｐ３は例えば画像中の第１水平ラインの一部のデータであり、画素データＰ４乃至Ｐ７は画像中の第２水平ラインの一部のデータである。同様に、画素データＰ８乃至Ｐ１１は画像中の第３水平ラインの一部のデータであり、画素データＰ１２乃至Ｐ１５は画像中の第４水平ラインの一部のデータである。この場合、縦方向用ＳＩＭＤ演算に並列処理される複数のデータは、例えば第１水平ラインの先頭画素Ｐ０、第２水平ラインの先頭画素Ｐ４、第３水平ラインの先頭画素Ｐ８、及び第４水平ラインの先頭画素Ｐ１２である。図３（ｄ）の例では、画素データＰ０、Ｐ４、Ｐ８、Ｐ１２をレジスタＲＥＧＡから読み出し、画素データＰ１、Ｐ５、Ｐ９、Ｐ１３をレジスタＲＥＧＢから読み出し、これらのデータを演算器１１に供給してＳＩＭＤ演算を実行する。この例では、ＳＩＭＤ演算として、Ｐ０＋Ｐ１、Ｐ４＋Ｐ５、Ｐ８＋Ｐ９、Ｐ１２＋Ｐ１３の４つの加算演算を並列に実行するものとする。即ちこの例のＳＩＭＤ演算は、画像の水平方向に２画素を加算するフィルタリング処理である。
【００３２】
ステップＳ５において、ＳＩＭＤ演算の演算結果（Ｐ０＝Ｐ０＋Ｐ１、Ｐ４＝Ｐ４＋Ｐ５、Ｐ８＝Ｐ８＋Ｐ９、Ｐ１２＝Ｐ１２＋Ｐ１３）であるフィルタ処理後の画素データＰ０、Ｐ４、Ｐ８、Ｐ１２を、レジスタファイル１２のレジスタＲＥＧ４に格納する。即ち、図１において、バッファ１３から読み出したデータに対して演算器１１によりＳＩＭＤ演算を実行し、その演算結果をレジスタファイル１２に格納する。このときバッファ１３には演算結果を書き込まない。
【００３３】
ステップＳ６において、ステップＳ４と同様に縦方向用ＳＩＭＤ演算命令により、レジスタＲＥＧＢ及びＲＥＧＣのデータを読み出してＳＩＭＤ演算を実行する。図３（ｅ）の例では、画素データＰ１、Ｐ５、Ｐ９、Ｐ１３をレジスタＲＥＧＢから読み出し、画素データＰ２、Ｐ６、Ｐ１０、Ｐ１４をレジスタＲＥＧＣから読み出し、これらのデータを演算器１１に供給してＳＩＭＤ演算を実行する。ＳＩＭＤ演算では、Ｐ１＋Ｐ２、Ｐ５＋Ｐ６、Ｐ９＋Ｐ１０、Ｐ１３＋Ｐ１４の４つの加算演算を並列に実行する。
【００３４】
ステップＳ７において、ＳＩＭＤ演算の演算結果（Ｐ１＝Ｐ１＋Ｐ２、Ｐ５＝Ｐ５＋Ｐ６、Ｐ９＝Ｐ９＋Ｐ１０、Ｐ１３＝Ｐ１３＋Ｐ１４）であるフィルタ処理後の画素データＰ１、Ｐ５、Ｐ９、Ｐ１３を、レジスタファイル１２のレジスタＲＥＧ５に格納する。このときバッファ１３には演算結果を書き込まない。
【００３５】
ステップＳ８において、ステップＳ４及びＳ６と同様に縦方向用ＳＩＭＤ演算命令により、レジスタＲＥＧＣ及びＲＥＧＤのデータを読み出してＳＩＭＤ演算を実行する。図３（ｆ）の例では、画素データＰ２、Ｐ６、Ｐ１０、Ｐ１４をレジスタＲＥＧＣから読み出し、画素データＰ３、Ｐ７、Ｐ１１、Ｐ１５をレジスタＲＥＧＤから読み出し、これらのデータを演算器１１に供給してＳＩＭＤ演算を実行する。
【００３６】
ステップＳ９において、演算結果（Ｐ２＝Ｐ２＋Ｐ３、Ｐ６＝Ｐ６＋Ｐ７、Ｐ１０＝Ｐ１０＋Ｐ１１、Ｐ１４＝Ｐ１４＋Ｐ１５）であるフィルタ処理後の画素データＰ２、Ｐ６、Ｐ１０、Ｐ１４を、レジスタファイル１２のレジスタＲＥＧ６に格納する。このときバッファ１３には演算結果を書き込まない。
【００３７】
ステップＳ１０において、ステップＳ１乃至ステップＳ９と同様の処理を後続する画像データに対して実行して、ＳＩＭＤ演算結果をレジスタファイル１２のレジスタＲＥＧ７乃至ＲＥＧ９に格納する。これにより、レジスタファイル１２のレジスタＲＥＧ７には、ＳＩＭＤ演算の演算結果であるフィルタ処理後の画素データＰ３、Ｐ７、Ｐ１１、Ｐ１５が格納される。
【００３８】
ステップＳ１１において、レジスタファイル１２のレジスタＲＥＧ４に格納されているＳＩＭＤ演算結果をバッファ１３のレジスタＲＥＧ０’に転送する。即ち、レジスタＲＥＧ４に格納されているフィルタ処理後の画素データＰ０、Ｐ４、Ｐ８、Ｐ１２を、バッファ１３のレジスタＲＥＧ０’に格納する。図３（ｇ）には、フィルタ処理後の画素データＰ０、Ｐ４、Ｐ８、Ｐ１２がレジスタＲＥＧ０’に格納されたバッファ１３の様子が示される。
【００３９】
ステップＳ１２において、ステップＳ１１と同様にして、レジスタファイル１２のレジスタＲＥＧ４乃至ＲＥＧ７に格納されているＳＩＭＤ演算結果をバッファ１３のレジスタＲＥＧ１’乃至ＲＥＧ３’に転送する。図３（ｈ）には、フィルタ処理後の画素データがレジスタＲＥＧ１’乃至ＲＥＧ３’に格納されたバッファ１３の様子が示される。
【００４０】
ステップＳ１３において、バッファ１３のレジスタＲＥＧＡの画像データを外部メモリ１００にストアする。即ち、図３（ｉ）に示されるように、レジスタＲＥＧＡの画像データＰ０、Ｐ１、Ｐ２、Ｐ３をバッファ１３から読み出して、読み出したデータをプロセッサ１０の外部のメモリ１００に書き込む。
【００４１】
ステップＳ１４において、ステップＳ１３と同様にして、バッファ１３のレジスタＲＥＧＢ乃至ＲＥＧＤの画像データを外部メモリ１００にストアする。即ち、図３（ｊ）に示されるように、レジスタＲＥＧＢ乃至ＲＥＧＤの画像データをバッファ１３から読み出して、読み出したデータをプロセッサ１０の外部のメモリ１００に書き込む。以下同様にして画像全体に対するＳＩＭＤ演算命令によるフィルタリング処理を実行する。
【００４２】
図４は、図２のデータ並べ替え及びＳＩＭＤ演算処理のパイプライン動作を示す図である。（ａ）に示すように、ロード命令を実行する際には、命令フェッチＦ、命令デコードＤ、ロードアドレス生成Ａ、及びメモリデータロードＭが、各ロード命令間で一サイクルずつずれてパイプライン動作する。これにより複数のロード命令を順次実行する際に、１つのロード命令を見かけ上１サイクルで実行することができる。またＳＩＭＤ命令を実行する際にも、命令フェッチＦ、命令デコードＤ、データリード及び演算Ｅ、及びデータライトＷが、各ＳＩＭＤ命令間で一サイクルずつずれてパイプライン動作する。これにより複数のＳＩＭＤ命令を順次実行する際に、１つのＳＩＭＤ命令を見かけ上１サイクルで実行することができる。
【００４３】
また（ｂ）に示すように、ムーブ命令（転送命令）を実行する際には、命令フェッチＦ、命令デコードＤ、レジスタリードＥ、及びレジスタライトＷが、各ロード命令間で一サイクルずつずれてパイプライン動作する。またストア命令を実行する際には、命令フェッチＦ、命令デコードＤ、ストアアドレス生成Ａ、及びメモリデータストアＭが、各ストア命令間で一サイクルずつずれてパイプライン動作する。これにより各命令を見かけ上１サイクルで実行することができる。
【００４４】
図５は、バッファイネーブルレジスタ１８の動作について説明するための図である。図５（ａ）に示すように、バッファイネーブルレジスタ１８は、イネーブルフラグ１８−１、レジスタ１８−２、及びＡＮＤ回路１８−３を含む。イネーブルフラグ１８−１は、バッファイネーブルレジスタ１８によるセレクタ２５及び２６の制御動作を有効にするか否かを示すために使用される。イネーブルフラグ１８−１が０の場合、バッファイネーブルレジスタ１８による制御動作は行なわない。イネーブルフラグ１８−１が１の場合、バッファイネーブルレジスタ１８による制御動作を行なう。レジスタ１８−２は、バッファ１３の４つの列（４つのレジスタＲＥＧ０’乃至ＲＥＧ３’）に対応して、各レジスタに有効値が格納されているか否かを示す４ビットの値を格納する。あるビットの値が１であるとき、対応するレジスタには有効値が格納されていることを示す。ビット値が０であるとき、対応するレジスタには有効値が格納されていないことを示す。ＡＮＤ回路１８−３は、レジスタ１８−２の４つのビット値のＡＮＤを演算し、演算結果を出力する。このＡＮＤ回路１８−３の出力が１の場合、バッファ１３の全体に有効なデータが格納されていることを示す。ＡＮＤ回路１８−３の出力が０の場合、バッファ１３には無効な部分があることを示す。このＡＮＤ回路１８−３の出力に応じて、セレクタ２５及び２６の選択動作を制御してよい。
【００４５】
図５（ａ）は、バッファ１３に何らデータが格納されていない状態を示す。この状態では、レジスタ１８−２の４つのビット値は全てゼロである。図５（ｂ）は、イネーブルフラグ１８−１を１に設定した後に、バッファ１３のレジスタＲＥＧ０’にデータが格納された状態を示す。この状態では、レジスタ１８−２の４つのビット値のうちレジスタＲＥＧ０’に対応するビット値のみが１であり、他は全てゼロである。従って、ＡＮＤ回路１８−３の出力は０となっている。図５（ｃ）は、図５（ｂ）の状態から更にバッファ１３のレジスタＲＥＧ１’にデータが格納された状態を示す。この状態では、ＡＮＤ回路１８−３の出力はまだ０となっている。図５（ｄ）は、図５（ｃ）の状態から更にバッファ１３のレジスタＲＥＧ２’及びＲＥＧ３’にデータが格納された状態を示す。この状態では、ＡＮＤ回路１８−３の出力は１となる。即ち、図５（ｄ）に示すようにバッファ１３の全てのレジスタ要素２０に有効値が格納されると、ＡＮＤ回路１８−３の出力は１となり、セレクタ２５及び２６はバッファ１３の出力を選択することができる。
【００４６】
図５（ｅ）は、図５（ｄ）の状態から一旦イネーブルフラグ１８−１を０に設定してレジスタ１８−２を０にリセットし、その後イネーブルフラグ１８−１を再度１に設定してからバッファ１３のレジスタＲＥＧ０’に新たなデータを格納した状態を示す。網掛けして示されているレジスタＲＥＧ１’乃至ＲＥＧ３’の部分は、その格納値が古い無効な値となっている。この状態では、レジスタ１８−２の４つのビット値のうちレジスタＲＥＧ０’に対応するビット値のみが１であり、他は全てゼロである。従って、ＡＮＤ回路１８−３の出力は０となっている。図５（ｆ）は、図５（ｅ）の状態から更にバッファ１３のレジスタＲＥＧ１’乃至ＲＥＧ３’に新たなデータが格納された状態を示す。この状態では、ＡＮＤ回路１８−３の出力は１となる。即ち、図５（ｆ）に示すようにバッファ１３の全てのレジスタ要素２０に新たな有効値が格納されると、ＡＮＤ回路１８−３の出力は再び１となり、セレクタ２５及び２６はバッファ１３の出力を選択することができる。
【００４７】
図６は、プロセッサの変形例の構成を示す図である。図６に示すプロセッサ１０Ａにおいては、バッファ１３の代りにバッファ１３Ａが設けられている。バッファ１３Ａは、第１バッファ１３−１、第２バッファ１３−２、セレクタ２２、及びセレクタ３３を含む。セレクタ３３は、第１バッファ１３−１のレジスタＲＥＧＡ乃至ＲＥＧＤ及び第２バッファ１３−２のレジスタＲＥＧＥ乃至ＲＥＧＨのうちから１つのレジスタのデータを選択して出力する。
【００４８】
図７は、第１バッファ１３−１及び第２バッファ１３−２の構成の一例を示す図である。（ａ）に示す第１バッファ１３−１は、複数のレジスタ要素４０を含む。複数のレジスタ要素４０の各々は、例えば８ビットのデータ要素を格納するように８個のフリップフロップを含んでよい。入力が信号線４１−０に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧ０’を構成する。入力が信号線４１−１に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧ１’を構成する。入力が信号線４１−２に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧ２’を構成する。入力が信号線４１−１に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧ３’を構成する。
【００４９】
（ｂ）に示す第２バッファ１３−２は、複数のレジスタ要素４０を含む。入力が信号線４１−４に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧ４’を構成する。入力が信号線４１−５に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧ５’を構成する。入力が信号線４１−６に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧ６’を構成する。入力が信号線４１−７に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧ７’を構成する。
【００５０】
Ｌｏｎｇサイズ（４バイト）のデータが、レジスタＲＥＧ０’乃至ＲＥＧ７’のうちの指定された1つのレジスタに格納される。何れの１つのレジスタにデータが格納されるかは、命令デコーダ１５からの制御信号により制御してよい。
【００５１】
（ａ）の第１バッファ１３−１及び（ｂ）の第２バッファ１３−２において、出力が信号線連結ユニット２４−Ｘ（Ｘ＝Ａ，Ｂ，Ｃ，又はＤ）に接続される４つのレジスタ要素４０が１つのレジスタＲＥＧＸを構成する。信号線連結ユニット４４−Ａ乃至４４−Ｈの各々は、各レジスタ要素４０からの８ビットの出力を並べて纏めることで、３２ビットのデータを構成する。各３２ビットデータはセレクタ３３（図６参照）に供給される。セレクタ３３は、レジスタＲＥＧＡ乃至ＲＥＧＨの出力のうちの１つのレジスタの出力を選択して出力する。何れの１つのレジスタのデータが選択されるかは、命令デコーダ１５からの制御信号により制御される。
【００５２】
上記のようにして第１バッファ１３−１は、各データ列が４個のデータ要素を含む整数４個のデータ列を列毎に書き込み、４個のデータ列の各々から同一位置のデータ要素を選択して４個のデータ要素として読み出し可能なバッファとして機能する。また第２バッファ１３−２も、各データ列が４個のデータ要素を含む整数４個のデータ列を列毎に書き込み、４個のデータ列の各々から同一位置のデータ要素を選択して４個のデータ要素として読み出し可能なバッファとして機能する。
【００５３】
図６のように、バッファ１３Ａとして第１バッファ１３−１及び第２バッファ１３−２を設けることで、演算器１１のＳＩＭＤ演算結果を直接にバッファ１３Ａに格納し、バッファ１３Ａに格納した演算結果を外部メモリ１００に書き込むことができる。図１に示す構成では、バッファ１３から読み出したデータに対してＳＩＭＤ演算した演算結果は、レジスタファイル１２に格納している。これは、ＳＩＭＤ演算の演算結果をバッファ１３に直接に書き込むと、バッファ１３に格納してある演算対象のデータが破壊されてしまうからである。また図１に示す構成では、レジスタファイル１２に格納したＳＩＭＤ演算結果をバッファ１３に転送し、その後、バッファ１３の演算結果を外部メモリ１００に書き込むように動作する。これは、ＳＩＭＤ演算の前処理として画素配列の縦横を入れ替えたので、外部メモリ１００に演算結果を書き込む前に、ＳＩＭＤ演算の後処理として画素配列の縦横を再度入れ替えて元に戻すことが好ましいからである。
【００５４】
それに対して図６に示す構成では、外部メモリ１００から読み出したデータを第１バッファ１３−１に格納し、その後、第１バッファ１３−１から読み出したデータをＳＩＭＤ演算し、その演算結果を第２バッファ１３−２に直接に書き込むことができる。この第２バッファ１３−２から読み出した演算結果を外部メモリ１００に書き込めばよい。第１バッファ１３−１に対する書き込み及び読み出しによりＳＩＭＤ演算の前処理としての画素配列の縦横入れ替えが実行され、第２バッファ１３−２に対する書き込み及び読み出しによりＳＩＭＤ演算の後処理としての画素配列の縦横入れ替えが実行される。これにより、元の画素配置に戻った画像データを外部メモリ１００に格納することができる。
【００５５】
図８は、メディアプロセッサを用いた情報処理システムの構成の一例を示す図である。図８に示す情報処理システムは、外部メモリ２００、命令キャッシュ２０１、データキャッシュ２０２、及びメディアプロセッサ２０３を含む。
【００５６】
メディアプロセッサ２０３は、命令フェッチ部２１１、実行制御部２１２、ロードストアユニット２１３、レジスタ部２１４、演算ユニット２１５、及びＳＩＭＤ演算器２１６を含む。命令フェッチ部２１１は、プログラムカウンタ（図示せず）が示すアドレスに格納されている命令を、命令キャッシュ２０１からフェッチする。命令キャッシュ２０１にフェッチ対象の命令が格納されていない場合には、外部メモリ２００から命令キャッシュ２０１に当該命令をロードし、その後命令キャッシュ２０１から当該命令を取得する。フェッチされた命令は、実行制御部２１２によりデコードされる。実行制御部２１２はメディアプロセッサ２０３の動作シーケンスを制御するシーケンサを含み、命令デコード結果に応じて各種制御信号を生成する。この制御信号により、メディアプロセッサ２０３の各部の動作シーケンスが制御される。例えばデコードした命令がロード命令或いはストア命令である場合、ロードストアユニット２１３により、ロード対象或いはストア対象となるアドレスを生成する。ロード命令の場合、ロードストアユニット２１３は、ロード対象アドレスに格納されているデータをデータキャッシュ２０２から読み出す。ロード対象のデータがデータキャッシュ２０２に格納されていない場合には、外部メモリ２００からデータキャッシュ２０２に当該データをロードし、その後データキャッシュ２０２から当該データを取得する。ストア命令の場合、ロードストアユニット２１３は、データキャッシュ２０２にデータを格納する。
【００５７】
レジスタ部２１４は、レジスタファイル１２、バッファ１３、制御レジスタ１７、及びバッファイネーブルレジスタ１８を含む。これらの各構成要素は、図１に示す同一の参照符号を有する構成要素と同一の構成及び機能を有する。
【００５８】
演算ユニット２１５は、命令デコーダ１５からの制御信号に基づいて、命令デコーダ１５の命令デコード結果に応じた演算処理を実行する。ＳＩＭＤ演算器２１６は、命令デコーダ１５からの制御信号に基づいて、命令デコーダ１５の命令デコード結果に応じたＳＩＭＤ演算処理を実行する。ＳＩＭＤ演算の場合、ＳＩＭＤ演算器２１６は、レジスタファイル１２又はバッファ１３から供給される複数のデータ要素に対して同一の演算処理を並列に実行する。
【００５９】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００６０】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
ＳＩＭＤ演算を実行可能な演算器と、
前記演算器に供給する演算対象のデータを格納するレジスタファイルと、
前記レジスタファイルとは別個に設けられ、各データ列が複数個のデータ要素を含む整数ｎ個のデータ列を列毎に書き込み、前記ｎ個のデータ列の各々から同一位置のデータ要素を選択してｎ個のデータ要素として読み出し可能なバッファと
を含み、前記バッファから読み出した前記ｎ個のデータ要素を前記演算器に前記ＳＩＭＤ演算の対象として供給することを特徴とするプロセッサ。
（付記２）
前記バッファは、前記レジスタファイルのデータ格納容量以下のデータ格納容量を有することを特徴とする付記１記載のプロセッサ。
（付記３）
前記バッファは、前記ＳＩＭＤ演算の並列数に等しい数の前記データ列を格納可能であることを特徴とする付記１又は２記載のプロセッサ。
（付記４）
第１の演算命令に応答して、前記レジスタファイルから読み出したデータを前記ＳＩＭＤ演算命令の対象として前記演算器に供給し、前記第１の演算命令とは異なる第２の演算命令に応答して、前記バッファから読み出した前記ｎ個のデータ要素を前記ＳＩＭＤ演算命令の対象として前記演算器に供給することを特徴とする付記１乃至３の何れか一項記載のプロセッサ。
（付記５）
第１のストア命令に応答して、前記レジスタファイルから読み出したデータを外部に出力し、前記第１のストア命令とは異なる第２のストア命令に応答して、前記バッファから読み出したデータを外部に出力することを特徴とする付記１乃至４の何れか一項記載のプロセッサ。
（付記６）
レジスタ設定命令に応答して格納値が設定される制御レジスタと、
前記制御レジスタの前記格納値に応じて前記レジスタファイルから読み出したデータと前記バッファから読み出したデータとの何れか一方を選択して出力するセレクタ回路と
を更に含むことを特徴とする付記１乃至５の何れか一項記載のプロセッサ。
（付記７）
前記バッファが有効であるか否かを示す格納値を格納するバッファイネーブルレジスタと、
前記バッファイネーブルレジスタレジスタの前記格納値に応じて前記レジスタファイルから読み出したデータと前記バッファから読み出したデータとの何れか一方を選択して出力するセレクタ回路と
を更に含むことを特徴とする付記１乃至５の何れか一項記載のプロセッサ。
（付記８）
メモリと、
前記メモリに結合されるプロセッサと
を含み、前記プロセッサは、
ＳＩＭＤ演算を実行可能な演算器と、
前記演算器に供給する演算対象のデータを格納するレジスタファイルと、
前記レジスタファイルとは別個に設けられ、各データ列が複数個のデータ要素を含む整数ｎ個のデータ列を列毎に書き込み、前記ｎ個のデータ列の各々から同一位置のデータ要素を選択してｎ個のデータ要素として読み出し可能なバッファと
を含み、前記バッファから読み出した前記ｎ個のデータ要素を前記演算器に前記ＳＩＭＤ演算の対象として供給することを特徴とする情報処理システム。
（付記９）
前記バッファは、前記レジスタファイルのデータ格納容量以下のデータ格納容量を有することを特徴とする付記８記載の情報処理システム。
（付記１０）
前記バッファは、前記ＳＩＭＤ演算の並列数に等しい数の前記データ列を格納可能であることを特徴とする付記８又は９記載の情報処理システム。
（付記１１）
第１の演算命令に応答して、前記レジスタファイルから読み出したデータを前記ＳＩＭＤ演算命令の対象として前記演算器に供給し、前記第１の演算命令とは異なる第２の演算命令に応答して、前記バッファから読み出した前記ｎ個のデータ要素を前記ＳＩＭＤ演算命令の対象として前記演算器に供給することを特徴とする付記８乃至１０の何れか一項記載の情報処理システム。
（付記１２）
第１のストア命令に応答して、前記レジスタファイルから読み出したデータを外部に出力し、前記第１のストア命令とは異なる第２のストア命令に応答して、前記バッファから読み出したデータを外部に出力することを特徴とする付記８乃至１１の何れか一項記載の情報処理システム。
（付記１３）
レジスタ設定命令に応答して格納値が設定される制御レジスタと、
前記制御レジスタの前記格納値に応じて前記レジスタファイルから読み出したデータと前記バッファから読み出したデータとの何れか一方を選択して出力するセレクタ回路と
を更に含むことを特徴とする付記８乃至１２の何れか一項記載の情報処理システム。
（付記１４）
前記バッファが有効であるか否かを示す格納値を格納するバッファイネーブルレジスタと、
前記バッファイネーブルレジスタレジスタの前記格納値に応じて前記レジスタファイルから読み出したデータと前記バッファから読み出したデータとの何れか一方を選択して出力するセレクタ回路と
を更に含むことを特徴とする付記８乃至１２の何れか一項記載の情報処理システム。
【符号の説明】
【００６１】
１０  プロセッサ
１１  演算器
１２  レジスタファイル
１３  バッファ
１４  命令バッファ
１５  命令デコーダ
１６  ロードストア・アドレス生成部
１７  制御レジスタ
１８  バッファイネーブルレジスタ
１９  パイプラインレジスタ
１００  外部メモリ
【図１】
0005633122.tif 000002
【図２】
0005633122.tif 000003
【図３】
0005633122.tif 000004
【図４】
0005633122.tif 000005
【図５】
0005633122.tif 000006
【図６】
0005633122.tif 000007
【図７】
0005633122.tif 000008
【図８】
0005633122.tif 000009