(57)【要約】【課題】従来の情報処理システムでは、複数の演算ユニットにおける演算の組み合わせの自由度が低い問題があった。【解決手段】本発明の情報処理システムは、プログラムに応じた情報処理を行う情報処理システムであって、第１の入力値と第２の入力値とに対して第１の演算を行う第１の演算器と、第１の入力値と第２の入力値とに対して第２の演算を行う第２の演算器と、第１の演算器が出力する第１の出力値と第２の演算器が出力する第２の出力値とのいずれか一方を選択信号ＳＣ０に基づき選択して出力するセレクタと、をそれぞれ含む複数の演算ユニットを有する実行ユニットＥＸ１と、演算命令Ｓ１をデコードして演算ユニット毎の選択信号ＳＣ０の値を決定するデコーダ２１と、を有し、デコーダ２１は、プログラム毎に演算命令Ｓ１に対応する選択信号ＳＣ０の値を決定する。【選択図】図１
2011028543.tif 000002
【特許請求の範囲】
【請求項１】
プログラムに応じた情報処理を行う情報処理システムであって、
第１の入力値と第２の入力値とに対して第１の演算を行う第１の演算器と、前記第１の入力値と前記第２の入力値とに対して第２の演算を行う第２の演算器と、前記第１の演算器が出力する第１の出力値と前記第２の演算器が出力する第２の出力値とのいずれか一方を選択信号に基づき選択して出力するセレクタと、をそれぞれ含む複数の演算ユニットを有する実行ユニットと、
演算命令をデコードして前記演算ユニット毎の前記選択信号の値を決定するデコーダと、を有し、
前記デコーダは、プログラム毎に前記演算命令に対応する前記選択信号の値を決定する情報処理システム。
【請求項２】
前記演算命令に対応する前記選択信号の値を格納するオペコードテーブルを有し、前記オペコードテーブルはプログラム毎に前記演算命令に対応する前記選択信号の値が書き換えられる請求項１に記載の情報処理システム。
【請求項３】
前記オペコードテーブルに定義される前記演算命令の数は、前記複数の演算ユニットにおける前記第１、第２の演算器の組み合わせの数よりも少ない請求項２に記載の情報処理システム。
【請求項４】
前記オペコードテーブルは、所定の演算命令に対応する前記選択信号の値が予め固定された領域を有する請求項２又は３に記載の情報処理システム。
【請求項５】
前記演算命令に対応する前記選択信号の値は、前記プログラムにより指定され、前記デコーダは、当該プログラムが実行される期間において前記演算命令を指定された選択信号の値に基づきデコードする請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
前記第１、第２の入力値及び前記セレクタが出力する出力値を格納するデータレジスタを有し、
前記デコーダは、前記演算命令をデコードして前記第１、第２の入力値及び前記出力値が格納される前記データレジスタのアドレスを出力する請求項１乃至５のいずれか１項に記載の情報処理システム。
【請求項７】
前記プログラムの実行時間を計測し、前記実行時間に応じて前記デコーダにおける前記演算命令に対応する前記選択信号の値の切り替えを指示するタイマーを有する請求項１乃至６のいずれか１項に記載の情報処理システム。
【請求項８】
第１の入力値と第２の入力値とに対して第１の演算を行う第１の演算器と、前記第１の入力値と前記第２の入力値とに対して第２の演算を行う第２の演算器と、前記第１の演算器が出力する第１の出力値と前記第２の演算器が出力する第２の出力値とのいずれか一方を選択信号に基づき選択して出力するセレクタと、をそれぞれ含む複数の演算ユニットを有し、プログラムに応じた情報処理を行う情報処理システムにおける情報処理方法であって、
前記プログラムに応じて演算命令に対応する前記選択信号の値を決定し、
前記決定に従って前記演算命令をデコードして前記選択信号を生成し、
前記選択信号の値に基づき前記複数の演算ユニットの前記セレクタが出力する出力値を決定する情報処理システムにおける情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理システムに関し、特に、演算命令に応じて並列して処理される演算の組み合わせを切り替えるＳＩＭＤ（Single Instruction Multiple Data）演算器を備える情報処理システム及びその情報処理方法に関する。
【背景技術】
【０００２】
近年、プロセッサ等の情報処理システムでは、１クロックサイクル当たりの処理能力を向上させるためＳＩＭＤ（Single Instruction Multiple Data）方式の演算処理を行うＳＩＭＤ演算器が実装されている。ＳＩＭＤ演算器は、複数の演算ユニットを備える。そして、演算ユニットは、それぞれ第１の演算（例えば、加算）を行う第１の演算器と、第２の演算（例えば、減算）を行う第２の演算器と、第１の演算器が出力する第１の出力値と第２の演算器が出力する第２の出力値とのいずれか一方を選択信号に基づき選択して出力するセレクタとを有する。
【０００３】
ＳＩＭＤ演算器では、例えば、ｍ個の演算ユニットを備え、１クロックサイクル中に処理対象とする１個のデータのデータ幅がａビットであった場合、１つの演算ユニットに対してａ／ｍビットのデータ幅のデータを処理させる。このとき、ＳＩＭＤ演算器は、演算ユニット毎に第１の出力値と第２の出力値とのいずれを出力させるかを選択することができる。つまり、ＳＩＭＤ演算器では、演算ユニット毎に独立した演算を行うことが可能である。
【０００４】
このようなＳＩＭＤ演算器の一例が特許文献１及び非特許文献１に開示されている。特許文献１に記載のプロセッサでは、ＳＩＭＤ演算器に与える演算命令を拡張することで実際のデータ処理における性能を向上させる。より具体手的には、特許文献１では、出力ビットフィールドの自由度を向上させる演算命令を既存の演算命令に加える。
【０００５】
また、非特許文献１では、ＳＩＭＤ演算器の演算の組み合わせを決定するオペコード（演算命令中に含まれるもの）が予め決定されており、ＳＩＭＤ演算器に対して当該決められたオペコードを含む演算命令を与えることが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−２４１９６０号公報
【非特許文献】
【０００７】
【非特許文献１】Texas Instruments社、"TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide"、 Literature Number SPRU732C、August 2006
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＳＩＭＤ演算器に与えられる演算命令はデータ幅がハードウェアの仕様により決められている。また、演算命令は、ＳＩＭＤ演算器の演算の組み合わせを指定するオペコードの他、演算対象のデータの入出力先のレジスタアドレスを含む。つまり、オペコードのために許容されるビットフィールドのデータ幅には制限がある。このようなことから、ＳＩＭＤ演算器では、許容されるデータ幅で表現できる数の範囲内で使用される演算の組み合わせを予め決定しておくことが行われる。特許文献１及び非特許文献２においてもオペコードの数は予め決定されている。
【０００９】
しかしながら、ＳＩＭＤ演算器を含む情報処理システムで実行されるプログラムが予め準備されたオペコードによる演算の組み合わせ以外の組み合わせを用いる場合、従来のＳＩＤＭ演算器ではオペコードにより指定される演算の組み合わせの変更に対応できない問題があった。従来のＳＩＭＤ演算器では、オペコードにより指定される演算の組み合わせは、ハードウェアの設計時に決定されるものであり、設計後にこの組み合わせを変更できないためである。また、ソフトウェアによる演算の組み合わせの自由度を向上させるために全ての演算の組み合わせに対応したオペコードを準備しようとしても、上述したようにオペコードに許容されるデータ幅の制限のために演算の組み合わせの全てに対応したオペコードを準備できない問題がある。
【課題を解決するための手段】
【００１０】
本発明にかかる情報処理システムは、プログラムに応じた情報処理を行う情報処理システムであって、第１の入力値と第２の入力値とに対して第１の演算を行う第１の演算器と、前記第１の入力値と前記第２の入力値とに対して第２の演算を行う第２の演算器と、前記第１の演算器が出力する第１の出力値と前記第２の演算器が出力する第２の出力値とのいずれか一方を選択信号に基づき選択して出力するセレクタと、をそれぞれ含む複数の演算ユニットを有する実行ユニットと、演算命令をデコードして前記演算ユニット毎の前記選択信号の値を決定するデコーダと、を有し、前記デコーダは、プログラム毎に前記演算命令に対応する前記選択信号の値を決定する。
【００１１】
本発明にかかる情報処理システムにおける情報処理方法の一態様は、第１の入力値と第２の入力値とに対して第１の演算を行う第１の演算器と、前記第１の入力値と前記第２の入力値とに対して第２の演算を行う第２の演算器と、前記第１の演算器が出力する第１の出力値と前記第２の演算器が出力する第２の出力値とのいずれか一方を選択信号に基づき選択して出力するセレクタと、をそれぞれ含む複数の演算ユニットを有し、プログラムに応じた情報処理を行う情報処理システムにおける情報処理方法であって、前記プログラムに応じて演算命令に対応する前記選択信号の値を決定し、前記決定に従って前記演算命令をデコードして前記選択信号を生成し、前記選択信号の値に基づき前記複数の演算ユニットの前記セレクタが出力する出力値を決定する。
【００１２】
本発明にかかる情報処理システム及びその情報処理方法によれば、情報処理システムにおいて実行されるプログラムにより演算命令に対応する選択信号の値の組み合わせ（又は複数の演算ユニットにおける演算の組み合わせ）を任意に設定することができる。つまり、オペコードのために許容されるデータ幅が制限される場合であっても、その制限された範囲内でプログラムに必要な選択信号の値の組み合わせを実現できる。
【発明の効果】
【００１３】
本発明にかかる情報処理システム及びその情報処理方法によれば、限られたオペコードの個数でＳＩＭＤ演算器の演算の組み合わせの自由度を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかる情報処理システムのブロック図である。
【図２】実施の形態１にかかる実行ユニットのブロック図である。
【図３】実施の形態１にかかる情報処理システムにおいて扱われる演算命令のデータ構造を示す図である。
【図４】実施の形態１にかかるオペコードテーブルレジスタ及びデコーダのオペコードデコード部のブロック図である。
【図５】実施の形態１特許文献１にかかるコード設定値レジスタの回路図である。
【図６】実施の形態１にかかるオペコードテーブルの初期状態を示す図である。
【図７】第１のプログラムに対応したオペコードテーブルの状態を示す図である。
【図８】第２のプログラムに対応したオペコードテーブルの状態を示す図である。
【図９】実施の形態１に情報処理システムにおけるデータ処理のタイミングチャートの一例である。
【発明を実施するための形態】
【００１５】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。本発明は、ＳＩＭＤ（Single Instruction Multiple Data）演算器を含む情報処理システムにかかるものである。ここで、以下の実施の形態では、情報処理システムの一例としてマイコンについて説明する。このマイコンでは、ＳＩＭＤ演算器を主演算ユニットとは別に設けるが、ＳＩＭＤ演算器は、主演算ユニットに含まれても良く、また、主演算ユニットと別の半導体基板上に形成されていても良い。つまり、本発明は、ＳＩＭＤ演算器の実装形態を特に限定するものではない。また、情報処理システムは、システム全体で別途設けられた記憶装置に格納されたプログラムを読み出して実行するものとする。また、本実施の形態にかかる情報処理システムでは、主演算ユニットが主にプログラムを実行し、そのプログラムの一部の演算をＳＩＭＤ演算器が行うものとする。
【００１６】
図１に実施の形態１にかかる情報処理システム１のブロック図を示す。図１に示すように、情報処理システム１は、ＳＩＭＤ演算器１０、主演算ユニット１１、メモリ１２、タイマー１３、外部インタフェース（Ｉ／Ｆ）１４、システムバス１５を有する。まず、ＳＩＭＤ演算器１０、主演算ユニット１１、メモリ１２、タイマー１３、外部インタフェース１４は、システムバス１５を介して互いに接続されている。
【００１７】
主演算ユニット１１は、外部に設けられた記憶装置又はメモリ１２に格納されているプログラムを読み出し実行する。また、主演算ユニット１１は、プログラムを実行するに当たり、プログラムの一部の演算を実行させる指示をＳＩＭＤ演算器１０に出力する。
【００１８】
メモリ１２は、プログラムを実行している期間に生成される中間データの格納領域及びプログラムの一次記憶装置として機能する。タイマー１３は、情報処理システム１における一のプログラムの実行時間を計測し、当該実行時間が規定値に達した場合に割り込み通知信号Ｓ０を出力する。本実施の形態では、タイマー１３は、プログラムの実行時間を計測し、実行時間に応じてＳＩＭＤ演算器１０のデコーダ２１における演算命令に対応する選択信号の値の切り替えを割り込み信号Ｓ０により指示する。外部インタフェース１４は、情報処理システム１と外部に設けられた各種装置との入出力インタフェースである。
【００１９】
ＳＩＭＤ演算器１０は、ＳＩＭＤ方式の演算を行う演算器である。ＳＩＭＤ演算器１０は、フェッチユニット２０、デコーダ２１、オペコードテーブルレジスタ２２、データレジスタ２３、ロード・ストアユニット２４、割り込みコントローラ２５、実行ユニットＥＸ０〜ＥＸ３を有する。ＳＩＭＤ演算器１０は、本発明における特徴の１つである。そこで、以下では、ＳＩＭＤ演算器１０の各構成要素について詳細に説明する。
【００２０】
実行ユニットＥＸ０〜ＥＸ３は、それぞれ複数の演算ユニットを有する。また、実行ユニットＥＸ０〜ＥＸ３は、それぞれ異なる演算の組み合わせの演算ユニットを有するものとする。実行ユニットＥＸ０〜ＥＸ３において実現される演算の組み合わせは仕様に応じて任意に設定することができる。ここでは、実行ユニットの一例として実行ユニットＥＸ０の詳細について説明する。
【００２１】
図２に実行ユニットＥＸ０の詳細なブロック図を示す。図２に示すように、実行ユニットＥＸ０は、第１から第４の演算ユニットを有する。第１から第４の演算ユニットは同一の構成を有する。第１から第４の演算ユニットは、それぞれ第１の演算器（例えば、加算器ＡＤＤ）、第２の加算器（例えば、減算器ＳＵＢ）、セレクタＳＥＬを有する。なお、図２では、ＡＤＤ、ＳＵＢ、ＳＥＬの後ろに演算ユニットの番号を示す数字を付した。加算器ＡＤＤは、データレジスタ２３のアドレスａに格納されている第１の入力値と、データレジスタ２３のアドレスｂに格納されている第２の入力値とに対して第１の演算（例えば、加算）を行い、当該加算結果を第１の出力値として出力する。減算器ＳＵＢは、データレジスタ２３のアドレスａに格納されている第１の入力値と、データレジスタ２３のアドレスｂに格納されている第２の入力値とに対して第２の演算（例えば、減算）を行い、当該減算結果を第２の出力値として出力する。セレクタＳＥＬは、第１の出力値と第２の出力値とのいずれか一方を選択信号ＳＣ０に基づき選択して出力値として出力する。この出力値は、データレジスタ２３のアドレスｃに格納される。なお、セレクタＳＥＬは、選択信号ＳＣ０の値が０である場合は加算結果を出力し、１である場合は減算結果を出力するものとする。
【００２２】
図２に示す例では、選択信号ＳＣ０は４ビットのデータ幅を有しており、１ビット目の選択信号ＳＣ０［０］は、第１の演算ユニットのセレクタＳＥＬ０に入力され、２ビット目の選択信号ＳＣ０［１］は、第２の演算ユニットのセレクタＳＥＬ１に入力され、３ビット目の選択信号ＳＣ０［２］は、第３の演算ユニットのセレクタＳＥＬ２に入力され、４ビット目の選択信号ＳＣ０［３］は、第４の演算ユニットのセレクタＳＥＬ３に入力される。
【００２３】
また、実行ユニットＥＸ０は、３２ビットのデータ幅の入出力データを扱うものであって、第１の演算ユニットは０〜７ビット目のデータの処理に対応し、第２の演算ユニットは８〜１５ビット目のデータの処理に対応し、第３の演算ユニットは１６〜２３ビット目のデータの処理に対応し、第４の演算ユニットは２４〜３１ビット目のデータの処理に対応する。
【００２４】
実行ユニットＥＸ０では、選択信号ＳＣ０の値に基づき、第１から第４の演算ユニットにおける演算結果として加算結果と減算結果とのいずれを用いるかの組み合わせを決定する。つまり、実行ユニットＥＸ０では、入力値を４分割して、その部分毎に加算を行うのか減算を行うのかを選択することができる。
【００２５】
フェッチユニット２０は、メモリ１２から演算命令を読み出し、読み出した演算命令Ｓ１をデコーダ２１に出力する。また、フェッチユニット２０は、割り込みコントローラ２５が出力するアップデート信号ＵＰＤに基づき読み出す命令流を切り替える。ここで、本実施の形態における演算命令のデータ構造について説明する。図３に本実施の形態において扱われる演算命令のデータ構造の模式図を示す。図３に示す例では、演算命令Ｓ１は、３２ビットのデータ幅を有する。そして、演算命令Ｓ１は、６ビットのデータ幅を有するアドレス指定領域を３つ、５ビットのデータ幅を有するオペコード領域、９ビットのデータ幅を有する予約領域を有する。アドレス指定領域は、実行ユニットＥＸ０〜ＥＸ３で処理される第１の入力値が格納されるデータレジスタ２３のアドレスａを指定する領域と、実行ユニットＥＸ０〜ＥＸ３で処理される第２の入力値が格納されるデータレジスタ２３のアドレスｂを指定する領域と、実行ユニットＥＸ０〜ＥＸ３が処理結果として出力される出力値を格納するデータレジスタ２３のアドレスｃを指定する領域とを有する。また、オペコード領域は、実際に演算を行う実行ユニットを示すユニット番号領域と、指定された実行ユニットに含まれる複数の演算ユニットの演算の組み合わせを指定するオペコード番号領域を有する。指定領域は、例えば、情報処理システム内での処理を示す命令が格納される領域である。
【００２６】
デコーダ２１は、フェッチユニット２０から入力された演算命令Ｓ１をデコードしてアドレス指定信号ＡＤ及び選択信号ＳＣ０〜ＳＣ３を出力する。なお、デコーダ２１が出力する選択信号ＳＣ０〜ＳＣ３は、それぞれ実行ユニットＥＸ０〜ＥＸ３に対応するものである。また、選択信号ＳＣ０〜ＳＣ３は、オペコードのユニット番号に応じていずれか１つが有効になるものとする。さらに、選択信号ＳＣ０〜ＳＣ３は、それぞれ１つの実行ユニットに含まれる演算ユニットの数に対応するデータ幅を有する。本実施の形態では、選択信号ＳＣ０〜ＳＣ３は、それぞれ４ビットのデータ幅を有するものとする。
【００２７】
また、デコーダ２１は、演算命令に含まれるオペコードをデコードして選択信号ＳＣ０〜ＳＣ３を出力するオペコードデコーダ３０と、演算命令に含まれるアドレス部分をデコードしてアドレス指定信号ＡＤを出力するアドレスデコーダ４０と、を有する。
【００２８】
オペコードテーブルレジスタ２２は、オペコードとそれに対応する選択信号の値を定義したオペコードテーブルを保持するレジスタである。ここで、オペコードテーブルレジスタ２２及びオペコードデコーダ３０の詳細について説明する。
【００２９】
図４にオペコードテーブルレジスタ２２及びオペコードデコーダ３０のブロック図の一例を示す。図４に示すように、オペコードテーブルレジスタ２２は、オペコード番号に対応したコード設定値レジスタ２２０〜２２７を有する。このコード設定値レジスタは、実行ユニットＥＸ０〜ＥＸ３に含まれる演算ユニットの数に応じた数の値を保持する。本実施の形態では、コード設定値レジスタは、４つの値を保持する。コード設定値レジスタに格納される値は、ロード・ストアユニット２４を介してメモリ１２から与えられる設定値Ｓ２である。
【００３０】
オペコードデコーダ３０は、マルチプレクサ３１及びデマルチプレクサ３２を有する。マルチプレクサ３１は、コード設定値レジスタ２２０〜２２７からの出力を受けて、オペコード番号に対応するコード設定値レジスタの値を選択して出力する。デマルチプレクサ３２は、マルチプレクサ３１が出力する設定値をユニット番号に対応する実行ユニットに出力する。デマルチプレクサ３２が出力する値が選択信号となり、当該選択信号に含まれる設定値が選択信号の値となる。
【００３１】
ここで、コード設定値レジスタの一例を図５に示す。図５に示すように、コード設定値レジスタは、保持する値の数に応じた数のフリップフロップ回路を有する。図５に示す例ではフリップフロップ回路ＦＦ０〜ＦＦ３が示されている。フリップフロップ回路ＦＦ０〜ＦＦ３には、設定値Ｓ２が入力される。そして、フリップフロップ回路ＦＦ０〜ＦＦ３は、例えば、ＳＩＭＤ演算器１０に供給されるクロック信号ＣＬＫに応じて入力された設定値Ｓ２を保持して出力する。また、フリップフロップ回路ＦＦ０〜ＦＦ３には、パワーオンリセット信号ＰＯＲが入力されており、パワーオンリセット信号ＰＯＲに応じてリセット状態（例えば、出力を０とする状態）となる。なお、フリップフロップ回路ＦＦ０〜ＦＦ３の出力は、０番から３番の演算ユニットに対応する選択信号ＳＣ［０］〜ＳＣ［３］の値となる。
【００３２】
また、オペコードテーブルレジスタ２２において保持されるオペコードテーブルの例を図６〜図８に示す。なお、図６〜図８では、８個のオペコードに対応するものである。図６に示す例は、パワーオンリセット信号が有効になった後のオペコードテーブルの状態（オペコードテーブルの初期状態）を示すものである。図６に示すように、オペコードテーブルは初期状態において、選択信号ＳＣ［０］〜ＳＣ［３］の値が全て０となっている。なお、オペコードテーブルの初期状態は、選択信号ＳＣ［０］〜ＳＣ［３］の値が全て０である状態に限らず、初期状態においてオペコードテーブルの状態をどのような値に設定するかは任意に決定することができる。
【００３３】
図７は、第１のプログラムが情報処理システム１において実行されている場合のオペコードテーブルの状態を示すものである。また、図８は、第２のプログラムが情報処理システム１において実行されている場合のオペコードテーブルの状態を示すものである。図７及び図８に示すように、本実施の形態にかかるＳＩＭＤ演算器１０では、情報処理システム１において実行されるプログラム毎にオペコードテーブルの内容が異なる。図７及び図８に示す例では、０番から３番目のオペコード（オペコード０〜３）は、第１のプログラムと第２のプログラムで同じである。一方、４番から７番目のオペコード（オペコード３〜７）は、第１のプログラムと第２のプログラムとで異なる値となる。つまり、ＳＩＭＤ演算器１０のデコーダ２１は、第２のプログラムが実行されている状態でオペコード番号が４〜７番が指定された場合、第１のプログラムが実行されている状態と異なる値を有する選択信号ＳＣを出力する。
【００３４】
なお、オペコードテーブルは、全ての値をプログラム毎に指定するのではなく、一定のオペコードに対しては常に同じ選択信号の値としても良い。例えば、０番のオペコードに対してはプログラムによらず選択信号を全て０とし、１番のオペコードに対してはプログラムによらず選択信号を全て１としても良い。つまり、本実施の形態におけるオペコードテーブルは、プログラムにより任意の選択信号の値の組み合わせができる領域が確保されていれば良い。いずれかのオペコードに対応する選択信号の値の組み合わせを固定する場合、コード設定値レジスタにフリップフロップ回路を用いず、例えば、ＳＩＭＤ演算器１０の電源配線又は接地配線に短絡することで値を固定する構成とすることもできる。このような構成とすることで回路規模を削減することができる。
【００３５】
データレジスタ２３は、レジスタアドレスで指定される複数のデータ格納領域を有する。本実施の形態では、データレジスタ２３は、１つのデータ格納領域が３２ビットのデータ幅を有するものとする。
【００３６】
ロード・ストアユニット２４は、割り込みコントローラ２５からのロードストアコントロール信号ＬＳＣに応じて、オペコードテーブルレジスタ２２に格納されている設定値Ｓ２及びデータレジスタ２３に格納されているデータＳ３をメモリ１２等に退避させ、かつ、メモリ１２等に格納されている次のプログラムで用いられる設定値Ｓ２及びデータＳ３を読み出して当該データをオペコードテーブルレジスタ２２及びデータレジスタ２３に格納する。
【００３７】
割り込みコントローラ２５は、タイマー１３から割り込み信号Ｓ０を受信するとアップデート信号ＵＰＤ及びロードストアコントロール信号ＬＳＣを出力する。アップデート信号ＵＰＤは、フェッチユニット２０にメモリ１２から読み出す命令流の切り替えを指示するものである。ロードストアコントロール信号ＬＳＣは、ロード・ストアユニット２４にオペコードテーブルレジスタ２２に格納されている設定値Ｓ２及びデータレジスタ２３に格納されているデータＳ３の切り替えを指示するものである。
【００３８】
続いて、本実施の形態にかかる情報処理システム１の動作について説明する。情報処理システム１の動作の一例を示すタイミングチャートを図９に示す。図９に示す例は、情報処理システム１がＨ．２６４形式の動画を再生しているときのものである。Ｈ．２６４形式の動画では、映像部分の再生を行うＨ．２６４形式の映像再生用プログラム（例えば、第１のプログラムに相当するもの）と、ＡＡＣ形式の音声再生用プログラム（例えば、第２のプログラムに相当するもの）と、が実行される。このとき、映像再生用プログラムでは、８ビットのデータを１つの処理単位とするのに対して、音声再生用プログラムでは３２ビットのデータを１つの処理単位とする。そのため、２つのプログラムにおいてＳＩＭＤ演算器１０を用いる場合、２つのプログラムの間で実行ユニットにおける演算の組み合わせが異なる。そこで、図９に示す例では、映像再生用プログラムと音声再生用プログラムとで異なるオペコードテーブルを用いる。
【００３９】
図９に示すように、映像再生用プログラムが実行される第１の期間ＴＭ１においては、データレジスタ２３にはＨ．２６４形式の映像データが格納され、オペコードテーブルレジスタ２２には映像再生用プログラムに対応したオペコードテーブルが格納され、メモリ１２には、ＳＩＭＤ演算器１０において処理対象となっていないＡＡＣ形式の音声データ及び音声再生用プログラムに対応したオペコードテーブルが格納される。そして、第１の期間ＴＭ１では、フェッチユニット２０が映像再生用プログラムにより指定される命令流をフェッチする。また、デコーダ２１は、フェッチユニット２０がフェッチした演算命令をデコードする。これにより、第１の期間ＴＭ１では、Ｈ．２６４形式の画像データの演算が行われる。
【００４０】
一方、音声再生用プログラムが実行される第２の期間ＴＭ２においては、データレジスタ２３にはＡＡＣ形式の映像データが格納され、オペコードテーブルレジスタ２２には音声再生用プログラムに対応したオペコードテーブルが格納され、メモリ１２には、ＳＩＭＤ演算器１０において処理対象となっていないＨ．２６４形式の映像データ及び映像再生用プログラムに対応したオペコードテーブルが格納される。そして、第２の期間ＴＭ２では、フェッチユニット２０が音声再生用プログラムにより指定される命令流をフェッチする。また、デコーダ２１は、フェッチユニット２０がフェッチした演算命令をデコードする。これにより、第２の期間ＴＭ２では、ＡＡＣ形式の画像データの演算が行われる。
【００４１】
図９に示す例では、映像再生用プログラム及び音声再生用プログラムは、１フレーム毎に処理を行う。そのため、１フレーム分のデータの処理がＳＩＭＤ演算器１０で完了するタイミング毎にタイマー１３が割り込み信号Ｓ０を立ち上げ、この割り込み信号Ｓ０の立ち上がりに応じてフェッチユニット２０はフェッチする命令流を切り替える。また、割り込み信号Ｓ０の立ち上がりに応じてロード・ストアユニット２４は、オペコードテーブルレジスタ２２の設定値及びデータレジスタ２３のデータをメモリ１２に格納されている設定値及びデータと入れ替える。
【００４２】
上記説明より、本実施の形態にかかる情報処理システム１では、デコーダ２１が演算命令（より詳細にはオペコード番号）と選択信号ＳＣの値との対応関係をプログラム毎に切り替えることができる。これにより、プログラム毎に必要とする演算命令と選択信号ＳＣの値との対応関係を定義することができるため、限られたオペコード数であっても情報処理システム１の処理能力を最大限に活用することが可能になる。
【００４３】
また、情報処理システム１では、オペコードテーブル等の演算命令と選択信号ＳＣの値との対応関係がプログラム毎に任意に設定できる。つまり、プログラム作成者は、算命令と選択信号ＳＣの値との対応関係を任意に設定できる。これにより、情報処理システム１の設計完了後にプログラムで必要とする演算命令に対応する選択信号ＳＣの値の組み合わせに変更が生じた場合にもプログラムの変更のみで柔軟に対応することができる。つまり、本実施の形態にかかる情報処理システム１の設計変更が生じないため、情報処理システム１の設計期間及びプログラムの作成時間を短縮することができる。
【００４４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。オペコードテーブルレジスタ２２は、ＳＩＭＤ演算器１０とは別に設けられるものであっても良い。また、オペコードテーブルレジスタ２２に格納する設定値は、メモリ１２に格納されている必要はなく、データレジスタ２３に格納されている値の一部を用いても良く、情報処理システム１の外部に設けられた記憶装置から読み出されるものでも良い。
【符号の説明】
【００４５】
１    情報処理システム
１０    ＳＩＭＤ演算器
１１    主演算ユニット
１２    メモリ
１３    タイマー
１４    外部インタフェース
１５    システムバス
２０    フェッチユニット
２１    デコーダ
２２    オペコードテーブルレジスタ
２２０-２２７    コード設定値レジスタ
２３    データレジスタ
２４    ロード・ストアユニット
２５    割り込みコントローラ
３０    オペコードデコーダ
３１    マルチプレクサ
３２    デマルチプレクサ
４０    アドレスデコーダ
ＥＸ０〜ＥＸ３    実行ユニット
ＡＤＤ０〜ＡＤＤ３    加算器
ＳＥＬ０〜ＳＥＬ３    セレクタ
ＳＵＢ０〜ＳＵＢ３    減算器
ＦＦ０〜ＦＦ３    フリップフロップ回路
【図１】
2011028543.tif 000003
【図２】
2011028543.tif 000004
【図３】
2011028543.tif 000005
【図４】
2011028543.tif 000006
【図５】
2011028543.tif 000007
【図６】
2011028543.tif 000008
【図７】
2011028543.tif 000009
【図８】
2011028543.tif 000010
【図９】
2011028543.tif 000011