(57)【特許請求の範囲】
【請求項１】
複数の演算ユニットを有するデータ処理手段であって、各演算ユニットが各データを受信し、かつ各データに基づいて各データ処理演算を実行するデータ処理手段と；
該データ処理手段に結合され、かつ該データ処理手段にデータを供給する前にデータを格納すべく作動するレジスタファイル手段であって、複数のレジスタファイルを具えているレジスタファイル手段と；
を具え、各特定の演算ユニットが特定のレジスタファイルに結合されるようにしたデータプロセッサにおいて、
少なくとも１つのレジスタファイルが少なくとも２つの演算ユニットに結合される１つの出力端を有するようにしたことを特徴とするデータプロセッサ。
【請求項２】
前記複数の演算ユニットが相互に非一様であることを特徴とする請求項１に記載のデータプロセッサ。
【請求項３】
前記演算ユニットのうちの少なくとも２つの演算ユニットが、ダイアディック演算を実行すべく作動する第１演算ユニットと、モナディック演算を実行すべく作動する第２演算ユニットとを具えていることを特徴とする請求項１に記載のデータプロセッサ。
【請求項４】
前記第１演算ユニットがメモリを具え、かつ前記第２演算ユニットがアドレス計算ユニットを具え、前記レジスタファイルのうちの、第１レジスタファイルの出力端が前記メモリと前記アドレス計算ユニットとの双方に第１アドレスを供給し、前記メモリが前記第１アドレスを用いてデータを検索し、前記アドレス計算ユニットが、前記第１アドレスから前記メモリがその後に使用する第２アドレスを計算するようにしたことを特徴とする請求項３に記載のデータプロセッサ。
【請求項５】
集積回路チップで実現した請求項１に記載のデータプロセッサ。
【発明の詳細な説明】
【０００１】
【技術分野】
本発明は、各演算ユニットがそれぞれのデータを受信し、かつ各データに基づいて各データ処理演算を実行する、複数の演算ユニットを有するデータ処理手段を具えているデータプロセッサに関するものである。このデータプロセッサはさらに、前記データ処理手段に結合され、かつ該データ処理手段にデータを供給する前にデータを格納すべく作動するレジスタファイル手段も具え、このレジスタファイル手段は複数のレジスタファイルを有する。各特定の演算ユニットは特定のレジスタファイルに結合される。
【０００２】
【背景技術】
データプロセッサは殆どのコンピュータの心臓部を成す周知のデバイスである。データプロセッサは予め特定したアルゴリズムを実行することにより入力データを操作して出力データを生成する。一般的に、プロセッサは次ぎのような１つ以上の演算ユニット、すなわち、加算、減算、桁上げを行う算術演算ユニット（例えばＡＬＵ）、２つのデータ項目を乗算する乗算器（ＭＵＬ）、データを読取ったり、書込んだりするランダムアクセスメモリ（ＲＡＭ）、データの読取りのみを行う読取専用メモリ（ＲＯＭ）、メモリアクセス用のアドレスを与えるアドレス計算ユニット、あるいはアプリケーション特有のユニット（ＡＳＵ ）を機能的に含んでいる。ＡＳＵは専用ユニットで、これは一般に他の演算ユニット用に特定された限定数の命令サイクル内で他の演算ユニットの命令セットには適合しない演算を実行するのに用いられる。ＡＳＵに余剰演算をマップすることは、他の演算ユニットに対する命令サイクル数を増やしたり、あるいは他の演算ユニットと同じ種類の追加の演算ユニットを設けたりすることよりも有効である。
【０００３】
冒頭にて述べたようなプロセッサは、R. Woudsma、F. P. M. Beenker、J.L. Van Meerbergen 及びC. Niessenの論文、“PIRAMID ：An Architecture-Driven Silicon Compiler for Complex  DSP Applications”  （１９９０年５月１〜３日に米国、ルイジアナ州ニューオルレアンで開催された回路とシステムに関する１９９０年のアイイーイーイー国際シンポジウムでの論文の第2596−2600頁）に開示されている。この従来の文献の図２及び図３は、プロセッサ用のモジュラーアーキテクチャを示している。このアーキテクチャはプロセッサ用の機能明細に基づいてシリコンコンパイラ（ＰＩＲＡＭＩＤ）により自動的に生成される。シリコン内に凍結され、従って汎用の目的用に構成しなければならない通常のデータプロセッサとは違って、ＰＩＲＡＭＩＤ法により生成されるプロセッサは想定するアプリケーションに対して最適化する。
【０００４】
前記従来の文献の図２は、データバスにより相互接続され、かつコントローラ内に格納されたマイクロコードプログラムにより制御される複数の実行ユニットを有するプロセッサのモジュラーアーキテクチャを示している。実行ユニットの一般的な構成は前記文献の図３に示されている。実行ユニットはアルゴリズムを実施するのに必要とされる１つ以上の演算を行う機能的で、かつ物理的なエンティティである。従って、各実行ユニットは、実際に演算を行う上述した種類の演算ユニットと、演算ユニットによりオペランドとして使用される入力データを格納し、かつこのデータを必要な場合に演算ユニットに供給するレジスタファイルを具えている。
【０００５】
一般に、レジスタファイルは「Ａ」レジスタファイルセクションと「Ｂ」レジスタファイルセクションを具えている。「Ａ」レジスタファイルセクションは「Ａ」オペランドを演算ユニットに供給し、「Ｂ」レジスタファイルセクションは「Ｂ」オペランドを演算ユニットに供給する。演算ユニットはその際双方のオペランドに演算する。例えば、演算ユニットは「Ａ」及び「Ｂ」オペランドの双方を論理演算もしくは算術演算すべきデータとして解釈する。演算ユニットがＲＡＭを含む場合には、それは「Ａ」オペランドを、「Ｂ」オペランドにより特定されたアドレスに格納すべきデータとして受信する。「Ａ」オペランドと「Ｂ」オペランドの双方を含む演算は「ダイアディック」演算と称され、一方、単一オペランドのみを含む演算は「モナディック」演算と称される。後者の例として、ＲＯＭを含む演算ユニットは単一オペランド、すなわちＲＯＭのアドレスだけを必要とする。従って、ＲＯＭレジスタファイルは「Ａ」レジスタファイルセクションを具えるだけである。
【０００６】
レジスタファイルは単一命令サイクルで読取り操作と書込み操作を実行すべく作動するデュアルポートデバイスである。レジスタファイルは演算ユニットに接続される高速フォアグラウンドメモリとして作用する。バックグラウンドメモリは単一ポートデバイスであり、これは単一命令サイクルで１つの読取り操作か、あるいは１つの書込み操作だけを行うことができる。従って、バックグラウンドメモリはフォアグラウンドメモリと比較すると遅く、個別実行ユニット（例えばＲＡＭ，ＲＯＭ）の演算ユニットとして取り扱われる。レジスタファイルはコントローラにより命令レジスタを介してアドレスされ、一方、バックグラウンドメモリは他の実行ユニットにて実施されるアドレス計算ユニットを介してアドレスされる。なお、各個別の実行ユニットはそれ固有のレジスタファイルを有している。
【０００７】
【発明の目的】
ＰＩＲＡＭＩＤ法はプロセッサアーキテクチャをかなり最適化するけれども、そのモジュール性は依然としてプロセッサシステムを比較的大型化しており、しかもプロセセッサ能力の使用効率も比較的不充分である。このことは、とりわけ、実行ユニットが直面する特定のアプリケーションに対して実行ユニット同士間で機能的相互依存性を考慮しないで実行ユニットを個々に最適化していることに起因している。
従って、本発明の目的は従来のものよりも小型で、より効率的であり、かつ従来のプロセセッサと少なくとも同じ能力を有する冒頭にて述べた種類のデータプロセッサを提供することにある。
【０００８】
【発明の開示】
上記目的を達成するために、本発明は、複数の演算ユニットを有するデータ処理手段であって、各演算ユニットがそれぞれのデータを受信し、かつ各データに基づいて各データ処理演算を実行するデータ処理手段と；このデータ処理手段に結合され、かつ該データ処理手段にデータを供給する前にデータを格納すべく作動するレジスタファイル手段であって、複数のレジスタファイルを具えているレジスタファイル手段と；を具え、各特定の演算ユニットが特定のレジスタファイルに結合されるようにしたデータプロセッサにおいて、少なくとも１つのレジスタファイルが少なくとも２つの演算ユニットに結合される出力端を有するようにしたことを特徴とする。
【０００９】
本発明では、いくつかの演算ユニットが同じレジスタファイルを共有するのに対し、他の演算ユニットは他のレジスタファイルを共有するか、あるいは他の演算ユニットにより共有されない別のレジスタファイルを有する。本発明は、演算ユニットのレジスタファイルが、関連する演算ユニットに記憶位置の内容（すなわちオペランド）を供給した際に、そのレジスタファイルがしばらくの間、空きのレジスタ位置を有するという識見と、同じオペランドは同時にあるいは時間的に分散していくつかの演算ユニットにて使用できるという識見とに基づいている。従って、２つ以上の演算ユニットに対するレジスタファイルは、プロセッサのアプリケーションに応じて、物理的かつ機能的に互いに併合させることができる。
【００１０】
例えば、反復演算において、第１演算ユニットと第２演算ユニットは共有レジスタファイルから同じオペランドを受け取る。第１演算ユニットは所定の態様でオペランドを処理して、その処理結果を第３の演算ユニットに供給するが、一方、第２演算ユニットは、受信したオペランドに基づいて、次の反復演算で第１演算ユニットに供給すべき次ぎのオペランドを計算する。
【００１１】
利点は多岐にわたっている。共有レジスタファイルは個別に用いられるレジスタファイルの集合よりも小さくなる。レジスタの記憶位置の共有使用は実際に必要とされるレジスタの記憶能力を低減する。命令レジスタのような、レジスタのＩ／Ｏ機能を実現する周辺回路もまた共有され、これにより寸法がさらに低減する。
【００１２】
併合レジスタに対するアドレス空間は増大されるために、この併合レジスタの記憶位置のアドレスに関連するマイクロコードのデータフィールドは本質的に長くなるが、単一のアドレスデータフィールドが従来の２つ以上のアドレスデータフィールドに取って代わることになる。従って、マイクロコードワードの幅が低減され、小さいコントローラを使用することができる。マイクロコード命令は再スケジューリングする必要があり、また命令セットも多少拡張する必要がある。しかし、これは得られる利点の観点からして十分に見合うことである。
【００１３】
さらに、複数の小型回路ブロックは通常、集積回路での具体化に当り、同じ機能を持つ単一の大きな回路ブロックよりも大きな基板面積を必要とする。これは回路ブロックの要素が、概して、使用されるＩＣ技術における安全マージンと解像度の観点で、回路ブロック用に取っておくべき基板面積を完全に占有しないということによるものである。さらに、コンピュータ援用設計環境において、チップに使用する回路形成ブロックのレイアウトは、パラメータフォーマットの明細に基づいて自動的に生成される。概して、回路形成ブロック用の生成レイアウトは、後に追加すべき簡単な相互接続線の観点でチップ領域上に用意しておく長方形に構成される。チップの占有されないごく僅かな空間部分は、長方形の数が増えるにつれて増大する。さらに、レイアウトの自動生成は、特定のパラメータ値、あるいはパラメータ値の範囲に対して、例えば、メモリサイズまたはメモリ容量に対して最適化することができる。最適化した範囲を越えると、関連するレイアウトはチップの面積を余り効率的に使用していないことになる。従って、単一回路ブロックあるいは数ブロック内の複数のブロックの同じ機能を併合することは、それに比例して非占有面積の大きさを低減することになる。
【００１４】
本発明のプロセッサでは、複数の演算ユニットを非一様のものとすることができる。すなわち、演算ユニットは相対的に異なる機能、従って、非一様のアーキテクチャを有するものとすることができる。異なる演算ユニット間でレジスタファイルをグループ的に共有することは全体としてプロセッサにとって有利である。
【００１５】
本発明の他の例では、演算ユニットのうちの少なくとも２つの演算ユニットが、ダイアディック演算を実行すべく作動する第１演算ユニットと、モナディック演算を実行すべく作動する第２演算ユニットとを具えるようにする。概して、第１演算ユニットはメモリ（例えばＲＡＭ）を具え、第２演算ユニットは、例えばアドレスを反復的に計算すべき場合に有利であるアドレス計算ユニット（ＡＣＵ）を具えるようにする。
【００１６】
なお、上述したＰＩＲＡＭＩＤプロセッサのようなモジュラーアーキテクチャを有するもの以外の通常のデータプロセッサは、結合させるすべての機能に対して必要以上に大きな単一のレジスタファイルを具えている。しかし、本発明は専用のデータプロセッサに関し、ここでは、寸法、速度及びコストを最適化するためにモジュラーアプローチを局所的に僅かに変更するだけである。特に集積回路での具体化にとって、本発明は多くの魅力的な特徴を提供する。
【００１７】
【実施例】
添付図面を参照して本発明を実施例により説明する。
プロセッサアーキテクチャ
図１はプロセッサ10のアーキテクチャの概略例を示す。プロセッサ10は、とりわけ、実行ユニット12, 14, 16及び18を具えており、これらは１つ以上のデータバス20を介して相互接続されて実行ユニット間でデータ通信を行い、またその動作はコントローラ22により制御される。コントローラ22は、場合により、分岐のようなデータ依存処理を可能にするために、状態バス26を介して実行ユニット12及び14から受信されるフラグのような状態情報に依存して、命令バス24を介して実行ユニット12−18に命令を供給する。実行ユニット12は算術演算ユニット機能（ＡＬＵ）を果たす。実行ユニット14は、ＲＡＭを含む実行ユニット16と、ＲＯＭを含む実行ユニット18に対するような、メモリ用の最適化アドレスシーケンスを生成するためのアドレス計算ユニット（ＡＣＵ）を具えている。
【００１８】
従来の実行ユニット
図２は従来の代表的な実行ユニット40のブロック図を示している。この実行ユニット40は、適用の際に入力端にて時間多重するマルチプレクサ42及び44を具えている。マルチプレクサ42及び44は、「Ａ」オペランドセクション48と「Ｂ」オペランドセクション50を含むレジスタファイル46にバス20のデータライン（図示せず）を選択的に連結する。マルチプレクサ42及び44は、それぞれ命令レジスタ52及び54を介して適当な選択信号ＳＥＬを供給するコントローラ22の制御の下で動作する。レジスタファイル46はマルチプレクサ42及び44から受信したデータを格納し、かつそのデータを演算ユニット56に転送し、この演算ユニット56がデータをオペランドとして受信する。セクション48及び50は、それぞれ命令レジスタ58及び60を介してコントローラ22から読取り及び書込みアドレス（ＡＤＤＲ）を受信する。演算ユニット56は命令レジスタ62を介してコントローラ22から受信される命令の制御下でレジスタファイル46から受信したデータの演算を実行する。この演算の結果はバッファ64を介してデータバス20に供給され、バッファ64はコントローラ22により命令レジスタ66を介して選択的にイネーブルまたはディスエーブル（Ｅ／Ｄ）にされる。
ＲＯＭ機能が実行ユニット40にて実行される場合には、マルチプレクサ44、セクション50及び命令レジスタ54と60は存在しない。
【００１９】
本発明のビルディンクブロック
図３は図１のプロセッサ10のアーキテクチャを実現する本発明によるビルディンクブロックを図式的に示している。ブロック100 はレジスタファイル108及び110 からそれぞれの入力データを受信する演算ユニット102 ,104 及び106 を具えている。レジスタファイル108 はマルチプレクサ112及び113 を介して入力データを受信し、レジスタファイル110 はマルチプレクサ114 及び115 を介して入力データを受信する。マルチプレクサ112 −115 はバス116 に接続されている。演算ユニット102 ,104 及び106 により与えられた結果はバッファ118, 120及び122をそれぞれ介してバス116 に供給される。マルチプレクサ112 −115 は、命令レジスタ126 ,127,128及び129 を介して選択信号ＳＥＬを供給するコントローラ124によりそれぞれ制御される。アドレス（ＡＤＤＲ）はコントローラ124 により命令レジスタ130及び132 を介してレジスタファイル108 及び110 に供給される。演算ユニット102 ,104及び106 の動作モードは命令レジスタ134 ,136及び138 を介して命令（ＩＮＳＴ）を供給するコントローラ124 により決定される。バッファ118 ,120及び122 はコントローラ124により選択的にイネーブル及びディスエーブル（Ｅ／Ｄ）にされる。
【００２０】
なお、図３のブロックは、これと同じ種類か、あるいは図２に示した種類の別の実行ユニットと協働させる高レベルの実行ユニットとして使用すべく適用される。また、図面中、単一のラインはデータあるいは他の信号を受信するための入力を示すため、あるいは相互接続を示すために描いたのであって、これらのラインはいくつかの信号導線幅のバスを表すこともある。
【００２１】
図示の例では、レジスタファイル108 はコントローラ124 の制御の下で演算ユニット102 及び104 にオペランドを選択的に供給するのに使用され、一方、レジスタファイル110 は演算ユニット106 にオペランドを供給する。レジスタファイル108 は、例えば２つ以上のそれぞれの演算ユニット（102 , 104 及び106 のみを図示）にそれぞれのオペランドを供給するための２つ以上並列に配置した単一入力レジスタファイル（図示せず）で構成することができることは当業者に明らかである。一般に、少なくともいくつかのレジスタファイルの出力端と、いくつかの演算ユニットの入力端との間に、オペランドの適当な配分をスケジュールするために別のマルチプレクサ（図示せず）を挿入できることも明らかである。
【００２２】
演算ユニット102 −106 は、この例ではダイヤディック（２項）命令を実行するものとする。従来のものと比較するに、演算ユニット102 と104用のレジスタファイルは単一のレジスタファイルに併合されている。
【００２３】
代表実施例
図４は共用レジスタファイルの代表例の必要なものだけを示している。制御構成とＩ／Ｏ構成は図３のものに類似しているものとする。ＲＡＭ180 はレジスタファイル182 を介して受信したデータを、レジスタファイル182 を介して受信したアドレスに格納し、かつそのデータをバス116 に与える。アドレス計算ユニット（ＡＣＵ）184 はＲＡＭ180と同じアドレスを受信し、次のアドレスを反復計算する。すると次のアドレスがバス116 に供給されて、再びレジスタファイル182 に径路指定される。図４の中断された相互接続部は、ここでは簡単のために制御及びＩ／Ｏ構成の残りの部分が省略されていることを示している。
【００２４】
いくつかの演算ユニットに対するレジスタファイルを併合できるかどうかは、実行すべき実際の演算に依存する。どんな態様で命令セットがレジスタファイルの併合に影響するかについて以下説明する。併合戦略を達成するために、設計者は基本としてどの演算ユニットをどの命令サイクルで作動させるかを示すために演算ユニットの初期スケジュールを立てる。同時、すなわち同じ命令サイクル中は作動しない演算ユニットのレジスタファイルは併合させることができる。しかし、そのような状況は希である。もっとありそうなことは、ごく僅かな命令サイクルに対しても同時に作動する演算ユニットが存在することである。このような場合でもレジスタファイルを併合させることができるが、しかし衝突を回避するために追加の命令サイクルの導入を犠牲にする。命令サイクル数の僅かな増加は併合レジスタファイルの利点に十分引き合う。設計者は、１つ以上の演算ユニットで使用されるオペランドが同時か、あるいは異なる命令サイクルのいずれかで使用されるのかを考慮することもできる。そのようなオペランドは単一のレジスタ位置のみを必要とし、このレジスタ位置は長引く命令サイクルで占有されることになる。ハードウエアの節約が、本発明のプロセッサを実行させるプログラムに依存することは当業者に明らかである。本発明のプロセッサを集積回路で具体化した場合に、基板面積を15％〜20％程度節約できることを確かめた。
【図面の簡単な説明】
【図１】データプロセッサのモジュラーアーキテクチャの一例を示す図である。
【図２】図１の構成を実現する従来のビルディングブロックを示す図である。
【図３】図１のデータプロセッサを実現する本発明のビルディングブロックの一例を示す図である。
【図４】同じレジスタファイルを共有する演算ユニットの代表的な組合せを示す図である。
【符号の説明】
10  プロセッサ
12〜１８  実行ユニット
20  データバス
22  コントローラ
24  命令バス
26  ステータスバス
40  実行ユニット
42，４４  マルチプレクサ
46  レジスタファイル
48  「Ａ」オペランドセクション
50  「Ｂ」オペランドセクション
52，５４  命令レジスタ
56  演算ユニット
58〜６２  命令レジスタ
64  バッファ
66  命令レジスタ
100   ブロック
102〜１０６   演算ユニット
108，１１０   レジスタファイル
112〜１１５   マルチプレクサ
116   バス
118〜１２２   バッファ
124   コントローラ
126〜１３８   命令レジスタ
180   ＲＡＭ
182   レジスタファイル
184   アドレス計算ユニット（ＡＣＵ）
【図１】
0003595562.tif 000002
【図２】
0003595562.tif 000003
【図３】
0003595562.tif 000004
【図４】
0003595562.tif 000005