(57)【特許請求の範囲】
【請求項１】
２つのＭＡＣプロセッサを含むマイクロプロセッサであって、各ＭＡＣプロセッサの入力が他のＭＡＣプロセッサの入力に交差接続され、各ＭＡＣプロセッサが複数のレジスタを有するアキュムレータに接続された加算器に接続された乗算器を有し、１つのＭＡＣプロセッサの乗算器の出力が他のＭＡＣプロセッサの加算器の入力に交差接続され、低減されたセットの構築されたインストラクションを有するマイクロプロセッサにおいて、該乗算器および加算器を制御するための、該低減されたセット中の構築されたインストラクションは、
該２つのＭＡＣプロセッサの特定の１つと関連づけられた唯一２つの単一２入力蓄積ステートメントと、
各々が所定の対のアキュムレータ・レジスタ上での作動に制限されている唯一４つの二重２入力蓄積ステートメントと、
唯一４つの３入力蓄積ステートメントと、
唯一１つの単一積ステートメントと、
唯一４つの二重積ステートメントであって、そのどの２つも対象対を形成しない唯一４つの二重積ステートメントと、から成ることを特徴とするマイクロプロセッサ。
【請求項２】
請求項１に記載のマイクロプロセッサにおいて、
該アキュムレータが、８つのアキュムレータ・レジスタから成り、
該所定の対のアキュムレータ・レジスタが４つの対の数値的に隣接するレジスタから成り、そしてアキュムレータ対を識別するために、２ビットが該二重２入力蓄積ステートメント内に保存されているマイクロプロセッサ。
【請求項３】
整合した２倍ワードのデータフェッチを維持するメモリシステムに接続されたマイクロプロセッサであって、
４つのオペランド・レジスタｘｈ，ｘｌ，ｙｈおよびｙｌと、
出力積レジスタＰ０およびＰ１を有する第１および第２の２入力が乗算器であって、該４つのオペランド・レジスタが該第１および第２の２入力乗算器の入力として接続されているような第１および第２の２入力乗算器と、
入力として、Ｐ０における値を受信する第１の加算器と、
アキュムレータ配列から選択されるレジスタの値が該第１の加算器に対する別の入力であるレジスタのアキュムレータ配列であって、該第１の加算器が該アキュムレータ配列に対する出力を与えるようになっているレジスタのアキュムレータ配列と、入力としてＰ０における値、Ｐ１における値、および該アキュムレータ配列のレジスタから選択されるデータ値を受信して、該アキュムレータ配列に対して出力を与える第２の加算器とを含み、
該マイクロプロセッサは、低減されたセットの構築されたインストラクションを有し、該低減されたセット中の該乗算器および加算器を制御するための構築されたインストラクションは、
ａＤおよびａＳが、それぞれ宛先アキュムレータ・レジスタおよびソース・アキュムレータ・レジスタを示すものとして、
【数１】
0003595171.tif 000002
の形式の唯一２つの２入力蓄積ステートメントと、
【数２】
0003595171.tif 000003
の形式の唯一の４つの３入力蓄積ステートメントと、
ａＤＰおよびａＳＰがそれぞれ宛先アキュムレータ・レジスタおよびソース・アキュムレータ・レジスタを示し、該宛先レジスタａＤおよびａＤＰならびに該ソース・レジスタａＳおよびａＳＰが各々所定の対のアキュムレータ・レジスタを示すものとして、
【数３】
0003595171.tif 000004
の形式の唯一の４つの二重２入力蓄積ステートメントと、
【数４】
0003595171.tif 000005
の形式の唯一１つの単一積ステートメントと、
【数５】
0003595171.tif 000006
の形式の唯一４つの二重積ステートメントと、から成ることを特徴とするマイクロプロセッサ。
【請求項４】
２つのＭＡＣプロセッサを含むマイクロプロセッサであって、各ＭＡＣプロセッサの入力が他のＭＡＣプロセッサの入力に交差接続され、各ＭＡＣプロセッサが複数のレジスタを有するアキュムレータに接続された加算器に接続された乗算器を有し、１つのＭＡＣプロセッサの乗算器の出力が他のＭＡＣプロセッサの加算器の入力に交差接続され、低減されたセットの構築されたインストラクションを有するマイクロプロセッサにおいて、該乗算器および加算器を制御するための該低減されたセット中の構築されたインストラクションは、ａＤおよびａＳがそれぞれ宛先アキュムレータ・レジスタおよびソース・アキュムレータ・レジスタを示すものとして
【数６】
0003595171.tif 000007
の形式の唯一２つの２入力蓄積ステートメントと、
ａＤＰおよびａＳＰがそれぞれ宛先アキュムレータ・レジスタおよびソース・アキュムレータ・レジスタを示し、該宛先レジスタａＤおよびａＤＰ、ならびに該ソースレジスタａＳおよびａＳＰが各々所定の対のアキュムレータ・レジスタを示すものとして、
【数７】
0003595171.tif 000008
の形式の唯一４つの３入力蓄積ステートメントと、
【数８】
0003595171.tif 000009
の形式の唯一４つの二重２入力蓄積ステートメントと、
【数９】
0003595171.tif 000010
の形式の唯一１つの単一積ステートメントと、
唯一４つの二重積ステートメントと、から成ることを特徴とするマイクロプロセッサ。
【請求項５】
整合した２倍ワードのデータフェッチを維持するマイクロプロセッサであって、
４つのオペランド・レジスタｘｈ，ｘｌ．ｙｈおよびｙｌと、
出力積レジスタＰ０およびＰ１を有する第１および第２の２入力乗算器であって、該４つのオペランド・レジスタが該第１および第２の２入力乗算器についての入力として接続されている第１および第２の２入力乗算器と、
入力としてＰ０における値を受信する第１の加算器と、
アキュムレータ配列から選択されるレジスタの値が該第１の加算器に対する別の入力であるレジスタのアキュムレータ配列であって、該第１の加算器が該アキュムレータ配列に対して出力を提供するようになっているレジスタのアキュムレータ配列と、
入力としてＰ０における値、Ｐ１における値、および該アキュムレータ配列におけるレジスタから選択されるデータ値を受信して、該アキュムレータ配列に対して出力を提供する第２の加算器とを含み、
該マイクロプロセッサ低減されたセットの構築されたインストラクションを有し、該低減されたセット中の該乗算器および加算器を制御するためのインストラクションは、
唯一２つの単一２入力蓄積ステートメントと、
唯一４つの３入力蓄積ステートメントと、
唯一４つの二重２入力蓄積ステートメントであって、その各々が所定の対のアキュムレータ・レジスタ上での作動に制限されている唯一４つの二重２入力蓄積ステートメントと、
唯一１つの単一積ステートメントと、
唯一４つの二重積ステートメントであって、そのどの２つも対称対を形成しない唯一４つの二重積ステートメントと、から成ることを特徴とするマイクロプロセッサ。
【請求項６】
２つの交差接続されたＭＡＣプロセッサを有するマイクロプロセッサであって、
少なくとも１つのオペランドレジスタ、該オペランドレジスタの出力に少なくとも１つの入力が接続された乗算器、および該乗算器の出力に入力が接続された積レジスタを有する第１のＭＡＣプロセッサと、
乗算器および加算器を有する第２のＭＡＣプロセッサであって、該乗算器の少なくとも１つの入力が該ＭＡＣプロセッサのオペランドレジスタの出力を受信し、そしてさらに該第１のＭＡＣプロセッサの積レジスタの出力が該第２のＭＡＣプロセッサの加算器の入力に接続されているような第２のＭＡＣプロセッサと、を含むことを特徴とするマイクロプロセッサ。
【請求項７】
２つのＭＡＣプロセッサを含むマイクロプロセッサであって、各ＭＡＣプロセッサの入力が他のＭＡＣプロセッサの入力に交差接続され、各ＭＡＣプロセッサが複数のレジスタを有するアキュムレータに接続された加算器に接続された乗算器を有し、１つのＭＡＣプロセッサの乗算器の出力が他のＭＡＣプロセッサの加算器の入力に交差接続され、低減されたセットの構築されたインストラクションを有するマイクロプロセッサにおいて、該乗算器および加算器を制御するための、該低減されたセット中の構築されたインストラクションは、
該２つのＭＡＣプロセッサのうちの特定の１つと関連する唯一２つの単一２入力蓄積ステートメントを含むことを特徴とするマイクロプロセッサ。
【請求項８】
２つのＭＡＣプロセッサを含むマイクロプロセッサであって、各ＭＡＣプロセッサの入力が他のＭＡＣプロセッサの入力に交差接続され、各ＭＡＣプロセッサが複数のレジスタを有するアキュムレータに接続された加算器に接続された乗算器を有し、１つのＭＡＣプロセッサの乗算器の出力が他のＭＡＣプロセッサの加算器の入力に交差接続され、低減されたセットの構築されたインストラクションを有するマイクロプロセッサにおいて、該乗算器および加算器を制御するための、該低減されたセット中の構築されたインストラクションは、
唯一１つの単一積ステートメントを含むことを特徴とするマイクロプロセッサ。
【請求項９】
２つのＭＡＣプロセッサを含むマイクロプロセッサであって、各ＭＡＣプロセッサの入力が他のＭＡＣプロセッサの入力に交差接続され、各ＭＡＣプロセッサが複数のレジスタを有するアキュムレータに接続された加算器に接続された乗算器を有し、１つのＭＡＣプロセッサの乗算器の出力が他のＭＡＣプロセッサの加算器の入力に交差接続され、低減されたセットの構築されたインストラクションを有するマイクロプロセッサにおいて、該乗算器および加算器を制御するための、該低減されたセット中の構築されたインストラクションは、
どの２つも対称対を形成しない唯一４つの二重積ステートメントを含むことを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、二重乗算アキュムレータ（ｄｕａｌ  ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｏｒ  −ＭＡＣ）ベースのデジタル信号プロセッサのインストラクションセットアーキテクチャに関する。
【０００２】
【従来の技術】
デジタル信号プロセッサ（ＤＳＰ）は、音声のようなアナログ信号ソースからの信号を解析し、デジタル処理するのに用いられる特殊目的のＣＰＵである。アナログ信号はデジタル信号に変換され、例えば高速フーリエ変換のような様々なアルゴリズムを用いて解析される。ＤＳＰは、例えば蓄積された値を乗算しシフトし蓄積する（アキュームレートする）ようなある種の数学的処理操作を特に高速で実行するためのものである。ＤＳＰ用に数学的操作を集約的に処理するアプリケーションは、特にこのような前述したような操作に主に基づいている。このためＤＳＰは乗算，蓄積，シフト操作を実行する特別なハードウェア回路を含んでいる。
【０００３】
ＤＳＰアーキテクチャの１つの一般的な形態は、乗算−蓄積（即ちＭＡＣ）プロセッサとして知られている。このＭＡＣプロセッサは、２つの値を乗算し、その結果を別の値に加算してさらにその結果を蓄積するような多くの共通したデータ処理動作を行うアーキテクチャである。これらの基本的な操作は、特別に構成された高速の乗算器と蓄積器を用いて効率的に実行されそれ故に「乗算−蓄積」と称される。
【０００４】
ＭＡＣプロセッサの処理能力を向上させるために、これらのプロセッサは異なる処理を同時に行えるよう設計される。このために複数のＭＡＣ構造体を有するＤＳＰアーキテクチャが開発されている。例えば二重ＭＡＣプロセッサは、２つの独立したＭＡＣ動作を同時に行うことができる。
【０００５】
従来の乗算−蓄積（ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｏｒ−ＭＡＣ）は、２入力乗算器Ｍを有し、これが積レジスタＰ内にその出力を記憶する。この積レジスタＰは、２入力加算器Ａの１つの入力に接続され、この加算器の出力は数個のアキュムレータ（蓄積器）レジスタの１つに記憶される。この加算器の第２の入力は、アキュムレータのアレイに接続され、連続する一連の蓄積操作が可能となる。
【０００６】
従来のベクトルプロセッサは、並列に動作する複数個のＭＡＣプロセッサから構成される。各ＭＡＣはそれ自身独立したデータストリーム上で動作し、並列に配置されたＭＡＣは、共通のアキュムレータによってのみ結合されている。各個別のＭＡＣに対するインストラクションの数は制限され、特に数個のＭＡＣが並列ベクトルプロセッサ内で結合されている場合にも制限されている。そして符号化しなければならないＭＡＣコマンドの全数は比較的少ない。
【０００７】
図１に示す本発明の二重ＭＡＣプロセッサのアーキテクチャは、従来の並列ベクトルプロセッサとは交差接続したデータラインを付加している点で異なるものである。図１の二重ＭＡＣアーキテクチャは、２個の３２ビット入力ｘ，ｙ（それぞれ１６ビットのハイデータは、ｘｈとｙｈと称し、１６ビットのローデータは、ｘｌとｙｌと称する）からなり、２つの乗算器Ｍ０，Ｍ１に対する演算子を保持する。
【０００８】
このｘレジスタとｙレジスタは、両方の乗算器に交差接続され、そのため各乗算器は４個の入力ファクタのうちの何れか２個のファクタで動作可能となる。積ｐ０，ｐ１は、２つの加算器Ａ０，Ａ１によりアキュムレータａ０〜ａ７のいずれかの内容と共に蓄積される。このｐ０積はＡ１加算器に交差して接続され、その結果Ａ１加算器は３個の入力を有する。好ましい実施例においては、この二重ＭＡＣプロセッサは、二倍ワード整合メモリアーキテクチャと共に実現され、このアーキテクチャが単一の３２ビットフェッチで、２個の二倍ワード（ｄｏｕｂｌｅ  ｗｏｒｄｓ）を戻す。
【０００９】
この交差接続された二重ＭＡＣアーキテクチャにより、単一のＦＩＲまたはＩＩＲのデジタルフィルタが並列で一時に２つの「タップ」を行う両方のＭＡＣにより処理されるべきシングルデータストリームにフィルタを加えることができる。ここで各「タップ」とは、「乗算−蓄積」操作を意味する。相互接続されていない従来の複数のベクトルプロセッサは、２個のＦＩＲフィルタを並列に計算できるが、各フィルタは一時に１つのタップを処理できるだけである。このため単一のＦＩＲまたはＩＩＲフィルタに対しては、この交差接続されたアーキテクチャは、従来のベクトルプロセッサよりも二倍早く動作することができる。
【００１０】
図２は、図１の交差接続された二重ＭＡＣアーキテクチャの全ての可能な指示コマンドのリストである。これらのコマンドは、蓄積ステートメントと積ステートメントに分けられる。各ステートメントは、一方のＭＡＣサイドまたは別のＭＡＣサイドで行われる単一操作あるいは両方のＭＡＣサイドで並列に行われる２つの操作のいずれかを表す。これらのコマンドが、アーキテクトされたインストラクションの一部として実行される場合には、各コマンドは蓄積ステートメント（加算）と、積ステートメント（乗算）あるいはこれらの加算と蓄積の組み合わせのいずれかである。
【００１１】
図２に示すように、直交する二重ＭＡＣインストラクションのセットには、１２個の蓄積の組み合わせと、２０個の積の組み合わせが存在する。かくしてコマンドプロセッサ内でアーキテクチトされ、コマンド内で符号化されるコマンドの全数は、１２＊２０＋１２＋２０＝２７２  個である。このアーキテクトされた交差接続は、アーキテクトされたコマンドとして符号化される可能な関数の数の組み合わせ乗算となる。
【００１２】
このアーキテクチャで発生する問題点は、コマンドコード内で２７２個の二重ＭＡＣ操作を符号化するには９ビット（２の９乗＝５１２）が必要である点である。得られる機能性に影響を与えることなく二重ＭＡＣインストラクションを符号化するのに必要なビット数を減らすことが好ましい。このことは特にコマンドを符号化するのに利用できるビット数が限られており、別のコマンドもまたこの限られた同一数のビット内で符号化しなければならない時に特にあてはまる。問題となっている特殊の二重ＭＡＣプロセッサにおいては、わずか７個のビット（２の７乗＝１２８）が二重ＭＡＣ操作の符号化コンマド専用である点である。
【００１３】
【発明が解決しようとする課題】
したがって本発明の目的は、二重ＭＡＣ操作用の符号化コマンドの数を減らすような二重ＭＡＣプロセッサを提供することである。
【００１４】
【課題を解決するための手段】
本発明によれば疑似直交（ｎｅａｒ−ｏｒｔｈｏｇｏｎａｌ）二重ＭＡＣインストラクションセットが、わずか６５個のコマンドを用いて２７２個のコンマドの直交インストラクションの全体の機能を実行できる。このようにインストラクションのセットを減らすことは、コマンドの結果の対称性に基づいてインストランクションの数を減らし、プログラマによるデータプレゼンテーションのオーダのようなアイテムに関連する単純な制限を課すことにより達成できる。
【００１５】
コマンドの特殊な選択も二重ＭＡＣアーキテクチャに関連する二倍ワード整合メモリアーキテクチャにより決定される。このように低減されたインストラクションセットのアーキテクチャは、コマンドセットの機能性と固有の平行性（ｐａｒａｌｌｅｌｉｓｍ）を維持し、完全な直交セットよりも実現すべきコマンドのビット数が少なくて済む。
【００１６】
【発明の実施の形態】
図２に示すように、図１の二重ＭＡＣプロセッサ用には１２個の蓄積ステートメントと、２０個の積ステートメントが存在する。そしてこれらは別個にあるいは組み合わされてアーキテクトされる。疑似直交インストラクションセットの数を減らすために直交インストラクションセットの数を減少させることは、各関数タイプについて以下議論する。
【００１７】
以下に示すように４個の単一の二入力蓄積ステートメントがある。
ａＤ＝ａＳ＋ｐ０
ａＤ＝ａＳ−ｐ０
ａＤ＝ａＳ＋ｐ１
ａＤ＝ａＳ−ｐ１
ここでａＤとａＳは図１の二重ＭＡＣプロセッサの８個のアキュムレータａ０〜ａ７のいずれかである。
【００１８】
二重ＭＡＣコマンドそのものを符号化することに加えて、各コマンドが向けられるＤとＳのアキュムレータのアイデンティティは、コマンドのｏｐコード内にストアしなければならない。これらのコマンドの１つが実行されると、２個のＭＡＣパスのうちの一方のパスのみが関連し、他のパスはアイドル状態となる。蓄積ステートメントの結果が、両方のＭＡＣパスに等しくアクセス可能なアキュムレータ内にストアされているために、両方のパスに対するコマンドを符号化する必要はない。デフォルトとしてｐ０パスが選択される。そのため低減したコマンドのセットは、ａＤ＝ａＳ±ｐ０である。
【００１９】
次に示すように４個の三入力蓄積ステートメントがある。
ａＤ＝ａＳ＋ｐ０＋ｐ１
ａＤ＝ａＳ＋ｐ０−ｐ１
ａＤ＝ａＳ−ｐ０＋ｐ１
ａＤ＝ａＳ−ｐ０−ｐ１
【００２０】
理論的にはこれらのコマンドの数の低減は、プログラマが乗算器への入力の順番を調整すると、ｐ０とｐ１をスワップ（入れ換える）してもよいということを認識することにより行われる。しかしこの方法は、蓄積ストランクションセットと積インストラクションセットの両方の数を低減するためには用いることができない。その理由は、後述するようにアキュムレータコマンドと積コマンドは、アキュムレート／積の対として符号化することができなければならないからである。
【００２１】
かくしてこれらの対の中の２個のコマンドのうちの一方のコマンドのみがこの方法により低減できる。この入力を入れ換える方法は、以下に述べるように積ステートメントに対する最大の低減が可能であり、そのため全ての４個の三入力蓄積ステートメントが実現できる。
【００２２】
次に示すような４個の二入力アキュムレートステートメントがあり、それらは並列に実行できる２個の二入力蓄積ステートメントから成り立っている。
ａＤ０＝ａＳ０＋ｐ０          ａＤ１＝ａＳ１＋ｐ１
ａＤ０＝ａＳ０＋ｐ０                    ａＤ１＝ａＳ１−ｐ１
ａＤ０＝ａＳ０−ｐ０                    ａＤ１＝ａＳ１＋ｐ１
ａＤ０＝ａＳ０−ｐ０                    ａＤ１＝ａＳ１−ｐ１
ここで、ａＤ０，ａＤ１，ａＳ０，ａＳ１は８個のアキュムレータのうちの１つを指している。
【００２３】
このセットにおけるコマンドの数は、三入力蓄積ステートメントについて上述した理由と同様な理由によりその数は減ってはいない。しかし、コマンドｏｐコードの他の場所にある符号化ビットの数の減少は、隣接するアキュムレータ対へのコマンド内で選択されたアキュムレータを制限することにより達成できる。好ましい実施例においては、ａＤ０は偶数のアキュムレータのアドレスに制限され、ａＤ１はアキュムレータａＤ０＋１として定義される。アキュムレータの連続する対は、ａＤとａＤＰとして指定されている。同様にアキュムレータ対ａＳ０とａＳ１もａＳとａＳＰに制限される。
【００２４】
このように数を減らすことにより、次に示されるように、修正したコマンドセットが得られる。
ａＤ＝ａＳ＋ｐ０          ａＤＰ＝ａＳＰ＋ｐ１
ａＤ＝ａＳ＋ｐ０                    ａＤＰ＝ａＳＰ−ｐ１
ａＤ＝ａＳ−ｐ０                    ａＤＰ＝ａＳＰ＋ｐ１
ａＤ＝ａＳ−ｐ０                    ａＤＰ＝ａＳＰ−ｐ１
【００２５】
４個のコマンドを符号化しなければならないが、アキュムレータ対の一方のアキュムレータのみを特定すればよく、その理由はコマンドは隣接するアキュムレータ対に制限されるからである。８個のアキュムレータがあるために、３個のビットがアキュムレータを特定するのに必要である。２個のアキュムレータ（４個ではなく）のみを指定する必要があるようにするために、アキュムレータを隣接する対に制限することにより、そして定義するアキュムレータ対の偶数のアキュムレータを選択することにより、ｏｐコードでアキュムレータを指定するのに必要なビットの全数は１２から４に減る。
【００２６】
乗算器へ表すことのできる４個のファクタがある。これらのファクタは２個の分割したレジスタ内に記憶される。ｘレジスタは、ｘｈとｘｌのファクタを保持し、ｙレジスタはｙｈとｙｌのファクタを保持する。交差接続されたアーキテクチャであるため４個のファクタのうちのいずれの２個も各乗算器Ｍ０，Ｍ１に入力される。
【００２７】
次に示す８個の単一積のステートメントがある。
ｐ０＝ｘｈ＊ｙｈ
ｐ０＝ｘｈ＊ｙｌ
ｐ０＝ｘｌ＊ｙｈ
ｐ０＝ｘｌ＊ｙｌ
ｐ１＝ｘｈ＊ｙｈ
ｐ１＝ｘｈ＊ｙｌ
ｐ１＝ｘｌ＊ｙｈ
ｐ１＝ｘｌ＊ｙｌ
ここで、ｐ０とｐ１は、それぞれ乗算器Ｍ０とＭ１から出力された積である。
【００２８】
上記したような単一の二入力蓄積ステートメントの場合と同様に、２個のＭＡＣパスのうちの一方のパスのみがこれらのコマンドの一方が実行された時に関係している。かくしてコマンドは、ｐ０側にのみ制限することができる。さらにｘレジスタとｙレジスタ内のファクタの位置は、プログラマの制御下にある。このセットは、さらに操作を任意に選択されたｘｈとｙｈとなるような２つのファクタ位置のみに制限することによりさらに減らすことができる。このようにして減らされたコマンドセットは、さらに単一のｐ０＝ｘｈ＊ｙｈ  だけである。
【００２９】
次に示すように１２個の二重積ステートメントがある。
１．  ｐ０＝ｘｈ＊ｙｈ                    ｐ１＝ｘｈ＊ｙｌ
２．  ｐ０＝ｘｈ＊ｙｈ                    ｐ１＝ｘｌ＊ｙｈ
３．  ｐ０＝ｘｈ＊ｙｈ                    ｐ１＝ｘｌ＊ｙｌ
４．  ｐ０＝ｘｈ＊ｙｌ                    ｐ１＝ｘｈ＊ｙｈ
５．  ｐ０＝ｘｈ＊ｙｌ                    ｐ１＝ｘｌ＊ｙｈ
６．  ｐ０＝ｘｈ＊ｙｌ                    ｐ１＝ｘｌ＊ｙｌ
７．  ｐ０＝ｘｌ＊ｙｈ                    ｐ１＝ｘｈ＊ｙｈ
８．  ｐ０＝ｘｌ＊ｙｈ                    ｐ１＝ｘｈ＊ｙｌ
９．  ｐ０＝ｘｌ＊ｙｈ                    ｐ１＝ｘｌ＊ｙｌ
１０．  ｐ０＝ｘｌ＊ｙｌ                    ｐ１＝ｘｈ＊ｙｈ
１１．  ｐ０＝ｘｌ＊ｙｌ                    ｐ１＝ｘｈ＊ｙｌ
１２．  ｐ０＝ｘｌ＊ｙｌ                    ｐ１＝ｘｌ＊ｙｈ
【００３０】
これらのコマンドのうち数個のコマンドは、同一の乗算となり、ＭＡＣプロセッサが使用され、そして積レジスタにその結果が現れる点で異なるだけである。その対称対は１−４，２−７，３−１０，５−８，６−１１，９−１２である。このためさらに数を減らすことはこの対称性を利用し、各対称対の１個のコマンドのみを符号化する。
【００３１】
このように数を減らすことにより得られた６個のコマンドを次に示す。
１．  ｐ０＝ｘｈ＊ｙｈ                    ｐ１＝ｘｈ＊ｙｌ
２．  ｐ０＝ｘｈ＊ｙｈ                    ｐ１＝ｘｌ＊ｙｈ
３．  ｐ０＝ｘｈ＊ｙｈ                    ｐ１＝ｘｌ＊ｙｌ
５．  ｐ０＝ｘｈ＊ｙｌ                    ｐ１＝ｘｌ＊ｙｈ
６．  ｐ０＝ｘｈ＊ｙｌ                    ｐ１＝ｘｌ＊ｙｌ
９．  ｐ０＝ｘｌ＊ｙｈ                    ｐ１＝ｘｌ＊ｙｌ
【００３２】
このセットはさらに「疑似対称」対をプログラマが必要に応じて、データをｘレジスタまたはｙレジスタに向けることにより削減できることを認識することによりさらに減らすことができる。アイテム１と２については、ｐ０操作は同一である。ｐ１操作は、ハイワードファクタとローワードファクタが選択されるレジスタが異なるだけである。
【００３３】
コマンド２内のｘレジスタとｙレジスタのデータを切り換えることにより、コマンド１と同様な結果が得られる。かくして、２個のコマンドのうちの一方のコマンドのみを実行する必要がある。機能性は失われているが、その理由はプログラマは、入力の順序を単に変えるだけだからである。アイテム６と９もほぼ対称である。
【００３４】
この実施例においては、二重ＭＡＣプロセッサは、整合した二倍ワードメモリアーキテクチャで実現できる。その結果この疑似対称性は、アイテム３と５については得られない。理論的には、プログラマはファクタデータがレジスタのどこに記録されるかそして二重ＭＡＣプロセッサにいかにそれを入力させるかについて絶対的な制御を有しているが、この整合した二倍ワードメモリアーキテクチャは、単一の二倍ワード操作内でフェチされ、ｘレジスタまたはｙレジスタにストアされる２個のデータ値を提供する。
【００３５】
２つのデータ値がどちらのレジスタにストアするか、切り換えることは性能の低下なしに行うことができる。しかし、データを分割することは余分のコマンドを必要とし、そのため性能の低下が発生する。このような状況を回避するためにコマンド３と５の両方が実行される。
【００３６】
最終的に数が減り得られた二重積コマンドは次の通りである。
ｐ０＝ｘｈ＊ｙｈ                    ｐ１＝ｘｈ＊ｙｌ
ｐ０＝ｘｈ＊ｙｈ                    ｐ１＝ｘｌ＊ｙｌ
ｐ０＝ｘｈ＊ｙｌ                    ｐ１＝ｘｌ＊ｙｈ
ｐ０＝ｘｌ＊ｙｈ                    ｐ１＝ｘｌ＊ｙｌ
【００３７】
このようにして完全に数が減らしたコマンドのセットを図３に示す。かくして１０個の異なる蓄積ステートメントと５個の異なる積ステートメントが得られ、その結果アーキテクトされたコマンドの全数は、１０*５＋１０＋５＝６５ となる。これらの操作をｏｐコードの７ビットで符号化すると、必要なビット数を増加させることなく６３個のコマンドが可能となる。
【図面の簡単な説明】
【図１】二重ＭＡＣプロセッサのブロック図
【図２】図１の二重ＭＡＣプロセッサ用の直交コマンドセットを表す表
【図３】図１の二重ＭＡＣプロセッサ用の本発明による疑似直交コマンドセットを表す表
【図１】
0003595171.tif 000011
【図２】
0003595171.tif 000012
【図３】
0003595171.tif 000013