(57)【特許請求の範囲】
【請求項１】
第１の命令と第２の命令とを並列的に実行するマイクロプロセッサであって、
データを格納する複数の記憶素子を有するレジスタファイルと、
前記複数の記憶素子に対応して設けられ、各々が、前記レジスタファイルから供給されたデータを前記第１の命令に従って処理する第１のビットスライス回路と、前記レジスタファイルから供給されたデータを前記第２の命令に従って処理する第２のビットスライス回路とを有する複数のビットスライス回路群とを備え、
前記第１のビットスライス回路は前記レジスタファイルの一方側に配置され、前記第２のビットスライス回路は前記レジスタファイルの反対側に配置され、各ビットスライス回路群の前記第１および第２のビットスライス回路は前記記憶素子のうち対応する１つに結合され、
前記マイクロプロセッサはさらに、
前記複数のビットスライス回路群に対応して設けられ、各々が対応するビットスライス回路群をなす前記第１のビットスライス回路で処理されたデータを対応する第２のビットスライス回路に供給する複数のバイパス回路を備え、
前記バイパス回路の各々は、対応するビットスライス回路群に隣接して配置されることを特徴とするマイクロプロセッサ。
【請求項２】
前記バイパス回路の各々は、前記レジスタファイル上および対応するビットスライス回路群をなす前記第１および第２のビットスライス回路の間に配置されることを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記バイパス回路は、供給バスを含み、その供給バスは前記レジスタファイル上に配置されることを特徴とする請求項１または請求項２に記載のマイクロプロセッサ。
【請求項４】
プログラム中の第１および第２の命令を実行するデータプロセッサであって、
データを格納する複数の記憶素子を有するレジスタファイルと、
前記複数の記憶素子に対応して接続され、各々が対応する記憶素子から供給されたデータを前記第１の命令に従って処理する複数の第１の処理回路と、
前記複数の記憶素子に対応して接続され、各々が対応する記憶素子から供給されたデータを前記第２の命令に従って処理する複数の第２の処理回路とを備え、
前記複数の第２の処理回路は前記複数の第１の処理回路と並列的に動作し、
前記複数の第１の処理回路は前記レジスタファイルの一方側に配置され、前記複数の第２の処理回路は前記レジスタファイルの反対側に配置され、
前記データプロセッサはさらに、
前記複数の第１の処理回路に対応して設けられ、各々が対応する第１の処理回路における処理結果を前記複数の第２の処理回路のうち１つに供給する複数のバイパス回路を備え、
前記バイパス回路の各々は、対応する第１および第２の処理回路の少なくとも一方に隣接して配置されることを特徴とするデータプロセッサ。
【請求項５】
前記バイパス回路は、前記レジスタファイル上および対応する前記第１の処理回路と第２の処理回路との間に配置されることを特徴とする請求項４に記載のデータプロセッサ。
【請求項６】
前記バイパス回路は、供給バスを含み、その供給バスは前記レジスタファイル上に配置されることを特徴とする請求項４または５に記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マイクロプロセッサおよびデータプロセッサに関し、さらに詳しくは、複数の処理を対応する複数の命令に応答して並列的に行なうマイクロプロセッサおよびデータプロセッサのレイアウトに関する。
【背景技術】
【０００２】
図９は、従来のマイクロプロセッサの一例を示すレイアウト図である。図９を参照して、このマイクロプロセッサは、３２ビットのデータを処理する１つの機能ユニット１と、３２ビットのレジスタファイル５とを備える。レジスタファイル５は、３２ビットのデータを格納することができる。機能ユニット１は、レジスタファイル５に格納された３２ビットのデータを処理し、その３２ビットの結果データをレジスタファイル５へ書戻す。
【０００３】
この機能ユニット１は、３２個の処理回路１００〜１３１から構成されている。レジスタファイル５は、３２個の記憶素子５００〜５３１から構成されている。各記憶素子は、１ビットのデータを記憶することができる。一方、各処理回路は、対応する記憶素子に格納された１ビットのデータを処理し、その１ビットの結果データをその対応する記憶素子へ書戻す。たとえば機能ユニット１の第０ビット部１００は、レジスタファイル５の第０ビット部５００に格納された１ビットのデータを処理し、その１ビットの結果データをレジスタファイル５の第０ビット部５００に書戻す。また、機能ユニット１の第１ビット部１０１は、レジスタファイル５の第１ビット部５０１に格納された１ビットのデータを処理し、その１ビットの結果データをレジスタファイル５の第１ビット部５０１に書戻す。その他、第２ビット部１０２，５０２ないし第３１ビット部１３１，５３１についても上記ビット部１００，５００および１０１，５０１と同様である。
【０００４】
また、この機能ユニット１はパイプライン化され、１つの命令を処理し終える前に、その次の命令を処理し始めることができる。この機能ユニット１においては、各ビット部は３つのパイプラインステージ１０，２０および３０に分割されている。
【０００５】
たとえば、第２ビット部１０２は、実行ステージ１０と、メモリステージ２０と、書戻しステージ３０とから構成されている。実行ステージ１０は、レジスタファイル５の第２ビット部５０２からトライステートバッファ４１を介して与えられた１ビットのデータを格納できるレジスタ１１と、レジスタファイル５の第２ビット部５０２からトライステートバッファ４２を介して与えられた１ビットのデータを格納できるレジスタ１２と、レジスタ１１および１２に格納されたデータを論理演算するＡＬＵ（arithmetic and logic unit)からなる論理回路１３とを備える。メモリステージ２０は、実行ステージ１０における論理回路１３からの結果データを格納できるレジスタ２１と、そのレジスタ２１に格納されたデータを論理演算する論理回路２２とを備える。書戻しステージ３０は、メモリステージ２０における論理回路２２からの結果データを格納できるレジスタ３１を備える。なお、図９では第２ビット部１０２のパイプラインステージのみが図示されているが、他のビット部もこの第２ビット部１０２と同様にパイプライン化されている。
【０００６】
図１０は、図９に示されたマイクロプロセッサのパイプライン動作を示すタイムチャートである。このマイクロプロセッサにおいては、１つの命令は５つのパイプラインステージで逐次的に処理される。
【０００７】
図９および図１０を参照して、第１番目の命令フェッチステージＩＦにおいては、１つの命令がメモリ（図示せず）から命令デコーダ（図示せず）にフェッチされる。第２番目の命令デコードステージＩＤにおいては、そのフェッチされた命令が命令デコーダによってデコードされ、さらにそのデコードされた命令に応答してデータがレジスタファイル５からトライステートバッファ４１，４２を介してレジスタ１１，１２へ読出される。第３番目の実行ステージＥＸＣ，１０においては、論理回路１３によってその命令が実行され、レジスタ１１，１２に格納されたデータが論理演算される。その論理演算の結果データはレジスタ２１に格納される。第４番目のメモリステージＭＥＭ，１０においては、レジスタ２１に格納されたデータが論理回路２２によって論理演算される。命令によってはメモリからデータを読み出す。その論理回路２２の結果データはレジスタ３１に格納される。第５番目の書戻しステージＷＢ３０においては、レジスタ３１に格納されたデータが結果バス４５を介してレジスタファイル５へ書戻される。
【０００８】
図１０を参照して、たとえば命令ｉ１は、第ｎサイクルにおいてフェッチされる。続いて第（ｎ＋１）サイクルにおいて、そのフェッチされた命令ｉ１はデコードされると同時に、その次の命令ｉ２がフェッチされる。続いて第（ｎ＋２）サイクルにおいて、命令ｉ１が実行されると同時に、命令ｉ２がデコードされる。さらにこれと同時に、さらにその次の命令ｉ３がフェッチされる。続いて第（ｎ＋３）サイクルにおいて、命令ｉ１に応答してメモリから対応するデータが読出される。これと同時に、命令ｉ２が実行されかつ命令ｉ３がデコードされる。さらにこれと同時に、さらにその次の命令ｉ４がフェッチされる。
【０００９】
続いて第（ｎ＋４）サイクルにおいて、命令ｉ１の結果データがレジスタファイル５へ書戻される。これと同時に、命令ｉ２に応答してメモリから対応するデータが読出され、命令ｉ３が実行され、さらに命令ｉ４がデコードされる。続いて第（ｎ＋５）サイクルにおいて、命令ｉ２の結果データがレジスタファイル５に書戻される。これと同時に、命令ｉ３に応答してメモリから対応するデータが読出され、かつ命令ｉ４が実行される。続いて第（ｎ＋６）サイクルにおいて、命令ｉ３の結果データがレジスタファイル５に書戻されると同時に、命令ｉ４に応答してメモリから対応するデータが読出される。続いて第（ｎ＋７）サイクルにおいて、命令ｉ４の結果データがレジスタファイル５に書戻される。
【００１０】
ここで、書戻しステージＷＢにおいて、レジスタファイル５への結果データの書戻しは１サイクルの前半で行なわれる。また、命令デコードステージＩＤにおいて、レジスタファイル５からのデータの読出は１サイクルの後半で行なわれる。たとえば命令ｉ１が実行されたときの結果データは第（ｎ＋４）サイクルの前半でレジスタファイル５へ書戻される。この結果データを命令ｉ４が使用する場合、第（ｎ＋４）サイクルの後半でその結果データは命令ｉ４に従ってレジスタファイル５から読出される。この場合、命令ｉ４の実行は一時的に停止されることなく、次の第（ｎ＋５）サイクルにおいて実行される。
【００１１】
しかしながら、命令ｉ２が命令ｉ１の実行結果を使用する場合は、命令ｉ２がレジスタファイルからデータを読出す第（ｎ＋２）サイクルにおいては命令ｉ１の結果データはレジスタファイル５に書込まれていない。したがって、たとえこのときレジスタファイル５からデータが読出されたとしても、その結果データが書込まれる前のデータが読出され、正しい処理が行なわれない。
【００１２】
同様に命令ｉ３が命令ｉ１の実行結果を使用する場合は、命令ｉ３がレジスタファイル５からデータを読出す第（ｎ＋３）サイクルにおいては、命令ｉ１の結果データはレジスタファイル５へ書込まれていないので、たとえレジスタファイル５からデータが読出されたとしてもその結果データが書込まれる前のデータが読出され、正しい処理は行なわれない。
【００１３】
このため、命令ｉ１の実行結果がレジスタファイル５に書込まれるまで命令ｉ２，ｉ３の実行が停止されれば正しい処理が行なわれることになるが、命令の処理速度が低下することになる。この場合、命令ｉ２の処理は２サイクルの間停止されなければならず、命令ｉ３は１サイクルの間停止されなければならない。
【００１４】
このような処理速度の低下を防止するため、図９のパイプライン化されたマイクロプロセッサにおいては、命令の実行結果をパイプラインの途中から引出すバイパス回路が設けられている。バイパス回路は、トライステートバッファ１４，１５，２３，２４と、供給バス４３，４４とから構成されている。供給バス４３は、実行ステージ１０に第１のソースオペランドを与える。供給バス４４は、実行ステージ１０に第２のソースオペランドを与える。
【００１５】
次に、このバイパス回路の動作について説明する。命令ｉ４が命令ｉ１の実行結果を使用する通常の場合は、レジスタファイル５に書込まれたデータが読出されればよいので、トライステートバッファ４１が導通状態にされ、トライステートバッファ１４および２３が非導通状態にされる。これによりレジスタファイル５のデータがトライステートバッファ４１を介して供給バス４３に読出され、さらに実行ステージ１０におけるレジスタ１１に格納される。
【００１６】
ところで、命令ｉ２が命令ｉ１の実行結果を使用する場合は、実行ステージ１０にあるデータが使用されればよいので、トライステートバッファ１４が導通状態にされ、トライステートバッファ４１および２３が非導通状態にされる。これにより論理回路１３の結果データがトライステートバッファ１４を介して供給バス４３に読出され、さらに実行ステージ１０におけるレジスタ１１に格納される。このように、バイパス回路は命令ｉ１の実行ステージ１０での実行結果を命令ｉ２の実行ステージ１０へ転送することができる。
【００１７】
また、命令ｉ３が命令ｉ１の実行結果を使用する場合は、メモリステージ２０にあるデータが使用されればよいので、トライステートバッファ２３が導通状態にされ、トライステートバッファ４１および１４が非導通状態にされる。これにより論理回路２２の結果データはトライステートバッファ２３を介して供給バス４３へ読出され、さらに実行ステージ１０におけるレジスタ１１に格納される。このように、バイパス回路は命令ｉ１のメモリステージ２０にあるデータを命令ｉ３の実行ステージ１０に転送することができる。
【００１８】
なお、供給バス４４も供給バス４３と同様に、トライステートバッファ１５を介して実行ステージ１０から引出されたデータを実行ステージ１０におけるレジスタ１２へ転送する。供給バス４４はまた、トライステートバッファ２４を介してメモリステージ２０から引出されたデータを実行ステージ１０へ転送する。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
以上、１つの機能ユニット１を備えたマイクロプロセッサについて詳述したが、以下に複数の機能ユニットを備えたマイクロプロセッサについて詳述する。
【００２０】
複数の機能ユニットを備えたマイクロプロセッサとして、たとえばスーパスカラプロセッサ、ＶＬＩＷ（Very Long Instruction Word) マシンが挙げられる。複数の機能ユニットを備えたマイクロプロセッサは、複数の命令を同時に処理することができる。このような複数の機能ユニットを備えたマイクロプロセッサにおいて１つのレジスタファイルと複数の機能ユニットとを結合する配線のレイアウトとしては、次の図１１および図１２に示されたものが考えられる。なお、図１１および図１２に示されたものは、本発明の目的を明確にするためのものであって、本出願人が先行技術と認めたわけではない。
【００２１】
図１１は、１つのレジスタファイルと、パイプライン化されていない複数の機能ユニットとを結合する配線の考えられるレイアウトを示す。
【００２２】
図１１を参照して、このマイクロプロセッサは、１つのレジスタファイル５と、４つの機能ユニット１〜４とを備える。各機能ユニットは、３２個の処理回路から構成されている。機能ユニット１は、第０ないし第３１ビット部１００〜１３１から構成されている。機能ユニット２は、第０ないし第３１ビット部２００〜２３１から構成されている。機能ユニット３は、第０ないし第３１ビット部３００〜３３１から構成されている。機能ユニット４は、第０ないし第３１ビット部４００〜４３１から構成されている。
【００２３】
各ビット部は、レジスタファイル５の対応する１ビットのデータを処理するため、そのデータが格納されているレジスタファイル５のビット部と結合されている。レジスタファイル５の第０ビット部５００は、供給バス４３，４４を介して４つの機能ユニット１〜４の第０ビット部１００，２００，３００，４００と接続されている。レジスタファイル５の第１ビット部５０１は、供給バス４３，４４を介して４つの機能ユニット１〜４の第１ビット部１０１，２０１，３０１，４０１と接続されている。レジスタファイル５の第３１ビット部５３１は、供給バス４３，４４を介して４つの機能ユニット１〜４の第３１ビット部１３１，２３１，３３１，４３１と接続されている。レジスタファイル５の第２ないし第３０ビット部（図示せず）についても上記ビット部と同様である。なお、図１１では２ビットの供給バス４３，４４のみが示され、図１０の結果バス４５に対応するものは図示を省略されている。この図１１から明らかなように、このような配線方法をとると、配線数が膨大になるとともに、配線レイアウトが複雑になるであろう。
【００２４】
図１２は、パイプライン化されたマイクロプロセッサにおいて、１つのレジスタファイルと複数の機能ユニットとを接続する配線の考えられるレイアウトを示す。
【００２５】
図１２を参照して、このマイクロプロセッサは、１つのレジスタファイル５と、４つの機能ユニット１〜４と、レジスタファイル５および機能ユニット１〜４の間ならびに機能ユニット１〜４相互の間を接続するためのバイパス回路５０ａ，ｂ〜５３ａ，ｂ、５４〜５７、５８ａ，ｂ〜６１ａ，ｂ、６２〜６５、および６６ａ，ｂ〜８１ａ，ｂを備える。
【００２６】
レジスタファイル５の第０ビット５００と機能ユニット１〜４の第０ビット１００〜４００とは、供給バス５０ａ，ｂ〜５３ａ，ｂを介して接続されている。機能ユニット１〜４相互間は、引出しバス５８ａ，ｂ〜６１ａ，ｂ、転送バス５４〜５７、および供給バス５０ｂ〜５３ｂを介して接続されている。
【００２７】
たとえばレジスタファイル５から機能ユニット１〜４へデータが転送される場合は、トライステートバッファ６２〜６５が導通状態となる。これにより、レジスタファイル５の第０ビット部５００のデータは、供給バス５０ａ、トライステートバッファ６２、および供給バス５０ｂを介して機能ユニット１の第０ビット部１００に転送される。また、第０ビット部５００のデータは、供給バス５１ａ、トライステートバッファ６３、および供給バス５１ｂを介して機能ユニット２の第０ビット部２００へ転送される。他の機能ユニット３，４への転送も上記と同様である。
【００２８】
また、たとえば機能ユニット１の実行ステージから機能ユニット２へデータが転送される場合は、トライステートバッファ６７ａのみが導通状態となり、これにより第０ビット部１００における実行ステージのデータが引出しバス５８ａ、トライステートバッファ６７ａ、転送バス５５および供給バス５１ｂを介して機能ユニット２の第０ビット部２００へ転送される。
【００２９】
機能ユニット２の第０ビット部２００における実行ステージから機能ユニット１の第０ビット部１００へデータが転送される場合は、トライステートバッファ７０ａのみが導通状態となり、これにより機能ユニット２の第０ビット部２００における実行ステージから引出しバス５９ａ、トライステートバッファ７０ａ、転送バス５４および供給バス５０ｂを介して機能ユニット１の第０ビット部１００へ転送される。
【００３０】
機能ユニット１の第０ビット部１００におけるメモリステージから機能ユニット３の第０ビット部３００へデータが転送される場合は、トライステートバッファ６８ｂのみが導通状態となり、これにより機能ユニット１の第０ビット部１００におけるメモリステージから引出しバス５８ｂ、トライステートバッファ６８ｂ、転送バス５６および供給バス５２ｂを介して機能ユニット３の第０ビット部３００へ転送される。
【００３１】
また、機能ユニット１の第０ビット部１００における実行ステージから同じ第０ビット部１００へデータが転送される場合は、トライステートバッファ６６ａのみが導通状態となり、第０ビット部１００における実行ステージから引出しバス５８ａ、トライステートバッファ６６ａ、転送バス５４および供給バス５０ｂを介して第０ビット部１００へデータが転送される。
【００３２】
なお、図１２ではレジスタファイル５の第１ビット部５０１から機能ユニット１〜４の第１ビット部１０１，２０１，３０１，４０１へデータを転送するための配線は省略されている。また、機能ユニット１〜４の第１ビット部１０１，２０１，３０１，４０１相互間でデータを転送するための配線も省略されている。さらに、レジスタファイル５の他のビット部から機能ユニット１〜４の他のビット部へデータを転送するための配線、ならびに機能ユニット１〜４の他のビット部相互間でデータを転送するための配線も省略されている。また、各ビット部へ第１のソースオペランドを供給するための配線のみが示され、第２のソースオペランドを供給するための配線は省略されている。さらに、ビット部１００〜１３１，２００〜２３１，３００〜３３１，４００〜４３１の幅は部分的に不均等に示されているが、すべての幅は均等である。
【００３３】
ここで、バイパス回路に必要なシリコン面積Ｓは、次の式（１）で表わされる。
【００３４】
Ｓ＝（機能ユニット数×ソースオペランド数×ビット数）×１配線当りの占有面積 …（１）
このシリコン面積Ｓを１配線当りの占有面積で割った値を「配線コスト」と定義すると、このマイクロプロセッサでは、機能ユニット数が４、ソースオペランド数が２、さらにビット数が３２であるので、配線コストは２５６となる。
【００３５】
一方、１つの機能ユニットを備えたマイクロプロセッサにおいては、レジスタファイル５と機能ユニット１とを結合するため供給バス４３，４４が必要とされるが、これらの供給バス４３，４４は１つのビット部の幅よりも十分に小さいので、ＬＳＩの多層配線技術を用いれば他の回路上に形成することができ、配線コストは０となる。
【００３６】
この発明は上記のような問題を解決するためになされたもので、複数の機能ユニットを備えたマイクロプロセッサのレイアウト面積を低減することを目的とする。
【００３７】
この発明の他の目的は、レジスタファイルと複数の機能ユニットとを結合する配線に必要な面積を低減することである。
【００３８】
この発明のさらに他の目的は、上記配線の配線コストを低減することである。この発明のさらに他の目的は、複数の機能ユニットを備えかつパイプライン化されたマイクロプロセッサのレイアウト面積を低減することである。
【課題を解決するための手段】
【００３９】
本発明は、第１の命令と第２の命令とを並列的に実行するマイクロプロセッサであって、データを格納する複数の記憶素子を有するレジスタファイルと、複数の記憶素子に対応して設けられ、各々が、レジスタファイルから供給されたデータを第１の命令に従って処理する第１のビットスライス回路と、レジスタファイルから供給されたデータを第２の命令に従って処理する第２のビットスライス回路とを有する複数のビットスライス回路群とを備え、第１のビットスライス回路はレジスタファイルの一方側に配置され、第２のビットスライス回路はレジスタファイルの反対側に配置され、各ビットスライス回路群の第１および第２のビットスライス回路は記憶素子のうち対応する１つに結合され、マイクロプロセッサはさらに、複数のビットスライス回路群に対応して設けられ、各々が対応するビットスライス回路群をなす第１のビットスライス回路で処理されたデータを対応する第２のビットスライス回路に供給する複数のバイパス回路を備え、バイパス回路の各々は、対応するビットスライス回路群に隣接して配置されることを特徴とする。
【００４０】
好ましくは、バイパス回路の各々は、レジスタファイル上および対応するビットスライス回路群をなす第１および第２のビットスライス回路の間に配置されることを特徴とする。
【００４１】
好ましくは、バイパス回路は、供給バスを含み、その供給バスはレジスタファイル上に配置されることを特徴とする。
【００４２】
また、本発明は、プログラム中の第１および第２の命令を実行するデータプロセッサであって、データを格納する複数の記憶素子を有するレジスタファイルと、複数の記憶素子に対応して接続され、各々が対応する記憶素子から供給されたデータを第１の命令に従って処理する複数の第１の処理回路と、複数の記憶素子に対応して接続され、各々が対応する記憶素子から供給されたデータを第２の命令に従って処理する複数の第２の処理回路とを備え、複数の第２の処理回路は複数の第１の処理回路と並列的に動作し、複数の第１の処理回路はレジスタファイルの一方側に配置され、複数の第２の処理回路はレジスタファイルの反対側に配置され、データプロセッサはさらに、複数の第１の処理回路に対応して設けられ、各々が対応する第１の処理回路における処理結果を複数の第２の処理回路のうち１つに供給する複数のバイパス回路を備え、バイパス回路の各々は、対応する第１および第２の処理回路の少なくとも一方に隣接して配置されることを特徴とする。
【００４３】
好ましくは、バイパス回路は、レジスタファイル上および対応する第１の処理回路と第２の処理回路との間に配置されることを特徴とする。
【００４４】
好ましくは、バイパス回路は、供給バスを含み、その供給バスはレジスタファイル上に配置されることを特徴とする。
【００４５】
（作用）
本発明においては、記憶回路に格納されている複数のデータのうち１つのデータを複数の命令に応答して並列的に処理する複数の処理回路がまとめて配置されているため、記憶回路に格納されている複数のデータのうち１つのデータを対応する複数の処理回路へ転送するための配線が単純になる。そのため、配線の占有面積が低減され、その結果、レイアウト面積が低減される。また、配線が短くなるため、信号の遅延時間も短くなる。
【００４６】
また、本発明においては、各処理回路がパイプライン化されているため、多数の命令がより短時間で処理されるにもかかわらず、そのためのバイパス回路の占有面積は小さく、その結果、レイアウト面積も小さい。
【００４７】
また、本発明においては、複数の処理回路が記憶回路の一方側に配置されかつ記憶回路の長手方向と同じ方向に配置されているため、記憶回路と処理回路を接続するための配線の占有面積はさらに低減され、その結果、レイアウト面積はさらに低減される。
【００４８】
また、本発明においては、バイパス回路が記憶回路と処理回路との間に配置されているため、バイパス回路の占有面積はさらに低減され、その結果、レイアウト面積がさらに低減される。
【００４９】
また、本発明においては、バイパス回路が処理回路上に配置されているため、バイパス回路を形成するために特段の領域は必要とされない。その結果、レイアウト面積はさらに低減される。
【００５０】
また、本発明においては、処理回路が記憶回路の両側に半数ずつ配置されているため、記憶回路と処理回路とを接続するための配線をより効率的に形成することができ、レイアウト面積はさらに低減される。
【００５１】
また、本発明においては、バイパス回路が両側に配置された処理回路の間であって記憶回路上に配置されているため、バイパス回路を形成するために特段の領域を必要としない。その結果、レイアウト面積はさらに低減される。
【００５２】
また、本発明においては、バイパス回路は処理回路および記憶回路上に配置されているため、バイパス回路を形成するための特段の領域を必要としない。その結果、レイアウト面積はさらに低減される。
【００５３】
また、本発明においては、処理回路が記憶回路の長手方向とその垂直方向に配置されているため、記憶回路と処理回路とを接続するための配線の占有面積がさらに低減され、その結果、レイアウト面積がさらに低減される。
【発明の効果】
【００５４】
本発明によれば、同一ビットのデータを処理する複数の処理回路がまとめて配置されているため、記憶回路と処理回路とを接続する配線に必要な面積を低減することができる。しかも、その配線の長さを十分に短くすることができるので、記憶回路と処理回路との間のデータ転送速度をさらに速くすることができる。
【００５５】
また、本発明によれば、同一ビットのデータを処理する複数の処理回路がまとめて配置されているため、バイパス回路に必要な面積を低減することができる。しかも、各処理回路がパイプライン化されているため、命令の処理速度がさらに速くなる。また、バイパス回路が設けられているため、ある１つの命令が処理され終わるのを待つことなく、その次の命令あるいはさらにその次の命令を順次処理することができる。また、ある１つの命令の結果データをその命令と並列的に処理されている命令の処理に利用することもできる。
【００５６】
また、本発明によれば、複数の処理回路が記憶回路の一方側に配置されているため、処理回路のレイアウトが容易で、さらにこのマイクロプロセッサのレイアウト面積を低減することができる。しかも、複数の処理回路は記憶回路の長手方向と同じ方向に配置されているため、記憶回路と処理回路とを接続するいずれの配線の長さも同じにすることができ、記憶回路と処理回路との間のデータ転送速度をすべて同じにすることができる。
【００５７】
また、本発明によれば、各バイパス回路が記憶回路と対応する処理回路群との間に配置されているため、各バイパス回路に必要な面積を十分に低減することができる。しかも、バイパス回路の長さを短くすることができるので、記憶回路と処理回路との間のデータ転送速度を十分に速くすることができる。
【００５８】
また、本発明によれば、各バイパス回路が対応する複数の処理回路上に配置されているため、バイパス回路のためにのみ必要な面積はほとんどなくなる。
【００５９】
また、本発明によれば、記憶回路の両側にその長手方向と同一方向に処理回路が同数ずつ配置されているため、記憶回路に対してさらに効率的に処理回路を配置することができる。そのため、このマイクロプロセッサのレイアウト面積をさらに低減することができる。
【００６０】
また、本発明によれば、記憶回路の両側に配置された処理回路の間に配置されかつその記憶回路の上に配置されているため、バイパス回路に必要な面積を十分に低減することができる。
【００６１】
また、本発明によれば、各バイパス回路が対応する複数の処理回路および記憶回路上に配置されているため、バイパス回路に必要な面積をほとんどなくすことができる。
【００６２】
また、本発明によれば、処理回路が記憶回路の長手方向と垂直方向に配置されているため、その処理回路の数が多い場合であっても効率的に処理回路を配置することができる。
【発明を実施するための最良の形態】
【００６３】
以下、この発明の実施例について図面を参照して詳しく説明する。なお、図中同一符号は同一または相当部分を示す。
【００６４】
［実施例１］
図１は、この発明の実施例１によるマイクロプロセッサを示すレイアウト図である。図１を参照して、このマイクロプロセッサは、３２ビットのデータを格納するレジスタファイル５と、３２個の処理回路群Ｇ０〜Ｇ３１とを備える。レジスタファイル５は、３２個の記憶素子５００〜５３１から構成されている。たとえば第０ビット部５００には、３２ビットのデータのうち第０ビット（ＭＳＢ）が格納される。第１ビット部５０１には、３２ビットのデータのうち第１ビットが格納される。第３１ビット部５３１には、３２ビットのデータのうち第３１ビット（ＬＳＢ）が格納される。第２ビット部ないし第３０ビット部（図示せず）についても上記ビット部５００，５０１，５３１と同様である。
【００６５】
３２個の処理回路群Ｇ０〜Ｇ３１は、３２個の記憶素子５００〜５３１に対応して設けられている。すなわち、３２個の処理回路群Ｇ０〜Ｇ３１は、レジスタファイル５に格納された３２ビットのデータに対応して設けられている。たとえば第０ビット群Ｇ０は、レジスタファイル５の第０ビット部５００に対応して設けられている。第１ビット群Ｇ１は、レジスタファイル５の第１ビット部５０１に対応して設けられている。第３１ビット群Ｇ３１は、レジスタファイル５の第３１ビット部５３１に対応して設けられている。第２ないし第３０ビット群（図示せず）についても、上記ビット群Ｇ０，Ｇ１，Ｇ３１と同様である。
【００６６】
また、３２個の処理回路群Ｇ０〜Ｇ３１はレジスタファイル５の一方側に配置され、かつレジスタファイル５の長手方向と同一方向に配置されている。各処理回路群は、４つの処理回路から構成されている。たとえば第０処理回路群（第０ビット群）Ｇ０は、４つの処理回路（第０ビット部）１００，２００，３００，４００から構成されている。第１処理回路群（第１ビット群）Ｇ１は、４つの処理回路（第１ビット部）１０１，２０１，３０１，４０１から構成されている。第３１処理回路群（第３１ビット群）Ｇ３１は、４つの処理回路（第３１ビット部）１３１，２３１，３３１，４３１から構成されている。第２ないし第３０処理回路群（第２ないし第３０ビット群）（図示せず）についても、上記処理回路群Ｇ０，Ｇ１，Ｇ３１と同様である。
【００６７】
なお、図１ではビット部１００〜１３１，２００〜２３１，３００〜３３１，４００〜４３１の幅が一部不均等に示されているが、すべての幅は互いに等しくされている。
【００６８】
第０ないし第３１ビット部１００〜１３１により、１つの機能ユニットが構成されている。第０ないし第３１ビット部２００〜２３１により、他の１つの機能ユニットが構成されている。第０ないし第３１ビット部３００〜３３１により、さらに他の１つの機能ユニットが構成されている。第０ないし第３１ビット部４００〜４３１により、さらに他の１つの機能ユニットが構成されている。したがって、このマイクロプロセッサは４つの機能ユニットを備え、それにより４つの命令を並列的に処理することができる。
【００６９】
すなわち、各処理回路群を構成する４つの処理回路は、４つの命令に対応して設けられ、３２ビットのデータのうち対応する１ビットのデータを４つの命令に応答して並列的に処理することができる。たとえば第０ビット部１００は、第１の命令に対応して設けられ、レジスタファイル５の第０ビット部５００に格納されている１ビットのデータをその第１の命令に応答して処理する。第０ビット部２００は、第２の命令に対応して設けられ、レジスタファイル５の第０ビット部５００に格納されている１ビットのデータをその第２の命令に応答して処理する。第０ビット部３００は、第３の命令に対応して設けられ、レジスタファイル５の第０ビット部５００に格納されている１ビットのデータをその第３の命令に応答して処理する。第０ビット部４００は、第４の命令に対応して設けられ、レジスタファイル５の第０ビット部５００に格納されている１ビットのデータをその第４の命令に応答して処理する。
【００７０】
第１ビット部１０１は第１の命令に対応して設けられ、第１ビット部５０１に格納されている１ビットのデータを第１の命令に応答して処理する。第１ビット部２０１は第２の命令に対応して設けられ、第１ビット部５０１に格納されている１ビットのデータを第２の命令に応答して処理する。第１ビット部３０１は第３の命令に対応して設けられ、第１ビット部５０１に格納されている１ビットのデータを第３の命令に応答して処理する。第１ビット部４０１は第４の命令に対応して設けられ、第１ビット部５０１に格納されている１ビットのデータを第４の命令に応答して処理する。
【００７１】
第３１ビット部１３１は第１の命令に対応して設けられ、第３１ビット部５３１に格納されている１ビットのデータを第１の命令に応答して処理する。第３１ビット部２３１は第２の命令に対応して設けられ、第３１ビット部５３１に格納されている１ビットのデータを第２の命令に応答して処理する。第３１ビット部３３１は第３の命令に対応して設けられ、第３１ビット部５３１に格納されている１ビットのデータを第３の命令に応答して処理する。第３１ビット部４３１は第４の命令に対応して設けられ、第３１ビット部５３１に格納されている１ビットのデータを第４の命令に応答して処理する。
【００７２】
第２ないし第３０ビット部についても、上記第０、第１および第３１ビット部と同様である。
【００７３】
図１に示された第０ビット部１００は、図１１に示された機能ユニット１の第０ビット部１００に対応する。図１に示された第０ビット部２００は、図１１に示された機能ユニット２の第０ビット部２００に対応する。図１に示された第０ビット部３００は、図１１に示された機能ユニット３の第０ビット部３００に対応する。図１に示された第０ビット部４００は、図１１に示された機能ユニット４の第０ビット部４００に対応する。したがって、この第０ビット群Ｇ０は、図１１に示された４つの機能ユニット１〜４がビットごとにスライスされ、そのスライスされたビット部のうち４つの第０ビット部１００，２００，３００，４００だけが集められたものである。第１ビット群Ｇ１は、そのスライスされたビット部のうち４つの第１ビット部１０１，２０１，３０１，４０１のみが集められたものである。第３１ビット群Ｇ３１は、そのスライスされたビット部のうち４つの第３１ビット部１３１，２３１，３３１，４３１のみが集められたものである。第２ないし第３０ビット群についても、上記ビット群Ｇ０，Ｇ１，Ｇ３１と同様である。
【００７４】
各処理回路（ビット部）は、図９に示された各処理回路と同様にパイプライン化され、３つのパイプラインステージ１０，２０，３０から構成されている。なお、図１では第１ビット群Ｇ１の第１ビット部３０１だけのパイプラインステージが示されているが、他のビット部もこの第１ビット部３０１と同様にパイプライン化されている。
【００７５】
第１ビット部３０１は、命令を実行する実行ステージ１０と、メモリからデータを読出すメモリステージ２０と、結果データをレジスタファイル５へ書戻す書戻しステージ３０とから構成されている。実行ステージ１０は、レジスタ１１および１２と、ＡＬＵからなる論理回路１３と、トライステートバッファ１４および１５とを備える。レジスタ１１は、レジスタファイル５の第１ビット部５０１からトライステートバッファ４１および供給バス４３を介して与えられた１ビットの第１ソースオペランドデータを格納する。レジスタ１２は、レジスタファイル５の第１ビット部５０１からトライステートバッファ４２および供給バス４４を介して与えられた１ビットの第２ソースオペランドデータを格納する。論理回路１３は、レジスタ１１，１２に格納されているデータを論理演算する。トライステートバッファ１４は論理回路１３からの結果データを供給バス４３へ与える。トライステートバッファ１５は、論理回路１３からの結果データを供給バス４４へ与える。
【００７６】
メモリステージ２０は、レジスタ２１と、論理回路２２と、トライステートバッファ２３および２４とを備える。レジスタ２１は、実行ステージ１０における論理回路１３からの１ビットの結果データを格納する。論理回路２２はレジスタ２１に格納されているデータを演算処理する。トライステートバッファ２３は、論理回路２２からの結果データを供給バス４３へ与える。トライステートバッファ２４は、論理回路２２からの結果データを供給バス４４へ与える。
【００７７】
書戻しステージ３０はレジスタ３１を備える。レジスタ３１は、メモリステージ２０における論理回路２２からの１ビットの結果データを格納する。レジスタ３１に格納されているデータは結果バス４５を介してレジスタファイル５の第１ビット群５０１へ書戻される。
【００７８】
ある命令に従った実行ステージ１０からの結果データが次の命令の実行に必要なときは、たとえばトライステートバッファ１４のみが導通状態となり、トライステートバッファ４１および２３は非導通状態となる。これにより、論理回路１３からの結果データはトライステートバッファ１４および供給バス４３を介してレジスタ１１へ供給される。
【００７９】
また、ある命令に従ったメモリステージ２０からの結果データがその後の命令の実行に必要なときは、たとえばトライステートバッファ２３のみが導通状態となり、トライステートバッファ４１および１４は非導通状態となる。これにより、論理回路２２からの結果データはトライステートバッファ２３および供給バス４３を介してレジスタ１１へ供給される。すなわち、トライステートバッファ１４および供給バス４３は、メモリステージ２０、書戻しステージ３０、およびレジスタファイル５をバイパスする。トライステートバッファ１５および供給バス４４は、メモリステージ２０、書戻しステージ３０、およびレジスタファイル５をバイパスする。トライステートバッファ２３および供給バス４３は、書戻しステージ３０、およびレジスタファイル５をバイパスする。トライステートバッファ２４および供給バス４４は、書戻しステージ３０、およびレジスタファイル５をバイパスする。
【００８０】
上記のようにこの実施例１によれば、４つの機能ユニットがビットごとにスライスされ、そのスライスされたビット部が特定ビットごとに集められているため、レジスタファイル５とビット部１００〜１３１，２００〜２３１，３００〜３３１，４００〜４３１を接続するための配線が、図１１に示されたもののように複雑にならない。たとえば、４つの第０ビット部１００，２００，３００，４００はレジスタファイル５の第０ビット部５００の一方側にまとめて配置されているため、その第０ビット部５００と第０ビット部１００，２００，３００，４００とを接続するトライステートバッファ４１，４２、供給バス４３，４４、および結果バス４５によって占有されるシリコン面積は小さい。この実施例１では、すべての配線がレジスタファイル５の長さ以内に収まっているので、配線コストはほぼ０である。そのため、このマイクロプロセッサが搭載されたＬＳＩチップのサイズは小さいものになる。
【００８１】
しかも、レジスタファイル５といずれのビット部とを結合する配線もその長さが等しくなっているため、いずれのビット部へも同じ時間でデータが転送され得る。また、特定のビット部がまとめて配置されているため、レジスタファイル５とその特定のビット部とを接続する配線の長さは短くなる。そのため、レジスタファイル５とビット部との間のデータ転送速度が速くなる。
【００８２】
なお、上記ビット部１００〜１３１，２００〜２３１，３００〜３３１，４００〜４３１はパイプライン化されているが、されていなくてもよい。この場合、レジスタファイルの各ビット部は各処理回路のレジスタと直接接続される。
【００８３】
［実施例２］
図２は、この発明の実施例２によるマイクロプロセッサを示すレイアウト図である。この実施例２が上記実施例１と異なるところは、各処理回路群を構成する４つの処理回路がレジスタファイル５の両側に２つずつ配置されている点である。たとえば、第０ビット群（第０処理回路群）の第０ビット部１００および２００はレジスタファイル５の第０ビット部５００の図上左側に配置され、第０ビット部３００および４００はレジスタファイル５の第０ビット部５００の図上右側に配置されている。第１ビット群Ｇ１の第１ビット部１０１および２０１はレジスタファイル５の第１ビット部５０１の図上左側に配置され、第１ビット部３０１および４０１はレジスタファイル５の第１ビット部５０１の図上右側に配置されている。第２ないし第３１ビット群Ｇ２〜Ｇ３１についても、上記ビット群Ｇ０，Ｇ１と同様である。
【００８４】
一般に、機能ユニットの各ビット部に含まれるトランジスタの数は、レジスタファイル５の各ビット部に含まれるトランジスタの数よりも多い。したがって、図１の実施例１においては、各ビット群を構成する４つのビット部の幅をレジスタファイル５の各ビット部の幅に等しくすることは容易ではない。各ビット群を構成する４つのビット部の幅がレジスタファイル５の各ビット部の幅よりも広くなるのが通常である。
【００８５】
この実施例２によれば、レジスタファイル５の各ビット部の幅に、対応するビット群の幅を等しくすることはできるので、より効率的にレジスタファイル５とビット部１００〜１３１，２００〜２３１，３００〜３３１，４００〜４３１を配置することができる。しかも、レジスタファイル５といずれのビット部とを結合する配線もその長さが等しくなっているため、いずれのビット部へも同じ時間でデータが転送され得る。
【００８６】
［実施例３］
図３は、この発明の実施例３によるマイクロプロセッサを示すレイアウト図である。この実施例３が上記実施例１と異なるところは、各ビット群を構成する４つのビット部がレジスタファイル５の長手方向と垂直方向に配置されている点である。
【００８７】
３２個のビット群Ｇ０〜Ｇ３１はレジスタファイル５の長手方向と同じ方向に配置されているが、各ビット群を構成する４つのビット部はレジスタファイル５の長手方向と垂直方向に配置されている。たとえば、第０ビット群Ｇ０の４つの第０ビット部１００，２００，３００，４００は、レジスタファイル５の第０ビット部５００の図上左側にレジスタファイル５の長手方向と垂直方向に配置されている。第１ビット群Ｇ１の４つの第１ビット部１０１，２０１，３０１，４０１は、レジスタファイル５の第１ビット部５０１の図上左側にレジスタファイル５の長手方向と垂直方向に配置されている。第３１ビット群Ｇ３１の４つの第３１ビット部１３１，２３１，３３１，４３１は、レジスタファイル５の第３１ビット部５３１の図上左側にレジスタファイル５の長手方向と垂直方向に配置されている。第２ないし第３０ビット群（図示せず）についても、上記ビット群Ｇ０，Ｇ１，Ｇ３１と同様である。
【００８８】
第０ビット部１００と第０ビット部５００とを接続するための供給バス４３および４４と結果バス４５とは、第０ビット部２００、３００および４００上と第０ビット部５００および第０ビット群Ｇ０の間に形成されている。第０ビット部２００と第０ビット部５００とを接続するためのバス４３ないし４５は、第０ビット部３００および４００の上と、第０ビット部５００および第０ビット群Ｇ０の間に形成されている。第０ビット部３００と第０ビット部５００とを接続するためのバス４３ないし４５は、第０ビット部４００の上と、第０ビット部５００および第０ビット群Ｇ０の間に形成されている。第０ビット部４００と第０ビット部５００とを接続するためのバス４３ないし４５は、第０ビット部５００および第０ビット群Ｇ０の間に形成されている。第１ないし第３１ビット群Ｇ１〜Ｇ３１におけるバス４３ないし４５についても、上記第０ビット群Ｇ０におけるバス４３ないし４５と同様に形成されている。
【００８９】
この実施例３においては、レジスタファイル５の各ビット部の長さと、機能ユニットの各ビット部の長さとが等しければ、すべてのビット部１００〜１３１，２００〜２３１，３００〜３３１，４００〜４３１を効率的に配置することができる。したがって、このようなマイクロプロセッサが搭載されたＬＳＩチップのサイズは小さいものとなる。また、５つ以上の機能ユニットを備えたマイクロプロセッサの場合は、各ビット群が５つのビット部から構成され、その５つのビット部がレジスタファイルの長手方向と垂直方向に配置されていればよい。したがって、何個の機能ユニットを備えたマイクロプロセッサの場合でもそのレイアウトは容易である。
【００９０】
さらに、レジスタファイル５の各ビット部と各ビット群とを接続するバス４３ないし４５の幅が、レジスタファイル５の各ビット部の長さ以内であるため、バス４３ないし４５による占有面積は十分に小さい。しかも、これらのバス４３ないし４５はビット群のビット部上に形成されているため、配線コストはほぼ０である。
【００９１】
［実施例４］
図４は、この発明の実施例４によるマイクロプロセッサの一部を示すレイアウト図である。この実施例４が上記実施例１と異なるところは、レジスタファイル５と３２個のビット群との間にバイパス回路６が設けられている点である。
【００９２】
すなわち、このマイクロプロセッサは複数のバイパス回路を備える。各バイパス回路は、レジスタファイル５の対応するビット部と、対応するビット群との間に形成されている。なお、図４ではレジスタファイル５の３２個のビット部のうち第１ビット部５０１のみが示されている。また、３２個のビット群のうち第１ビット群Ｇ１のみが示されている。したがって、バイパス回路６はレジスタファイル５の第１ビット部５０１と第１ビット群Ｇ１との間に配置されている。レジスタファイル５の第０ビット部（図示せず）と第０ビット群（図示せず）との間にもバイパス回路（図示せず）が形成されている。レジスタファイルの第２ないし第３１ビット部（図示せず）と第２ないし第３１ビット群（図示せず）との間にもバイパス回路（図示せず）がそれぞれ形成されている。
【００９３】
なお、図４では第１ビット部１０１の幅だけが他の幅よりも若干広く示されているが、すべての幅は互いに等しくされている。
【００９４】
このバイパス回路６は、８本の転送バス６００〜６０７と、８本の引出しバス６０８〜６２１と、８本の供給バス６１０〜６２３と、供給バス内に設けられた８つのトライステートバッファ６２５〜６３２と、転送バスと引出しバスとの交点に設けられた６４個のトライステートバッファ６３３〜６９６とを備える。
【００９５】
転送バス６００は、第１ビット部１０１のレジスタ１１に第１ソースオペランドを与える。転送バス６０１は、第１ビット部１０１のレジスタ１２に第２ソースオペランドを与える。転送バス６０２は、第１ビット部２０１のレジスタ（図示せず）に第１ソースオペランドを与える。転送バス６０３は、第１ビット部２０１のレジスタ（図示せず）に第２ソースオペランドを与える。転送バス６０４は、第１ビット部３０１のレジスタ（図示せず）に第１ソースオペランドを与える。転送バス６０５は、第１ビット部３０１のレジスタ（図示せず）に第２ソースオペランドを与える。転送バス６０６は、第１ビット部４０１のレジスタ（図示せず）に第１ソースオペランドを与える。転送バス６０７は、第１ビット部４０１のレジスタ（図示せず）に第２ソースオペランドを与える。
【００９６】
引出しバス６０８の一端は第１ビット部１０１のメモリステージ２０における論理回路２２の出力ノードに接続され、その他端は８つのトライステートバッファ６３３〜６４０のうちいずれかを介して８本の転送バス６００〜６０７のうち対応するいずれかと選択的に接続される。
【００９７】
図５は、図４に示されたトライステートバッファ６３３と、転送バス６００と、引出しバス６０８とを具体的に示したものである。図５を参照して、トライステートバッファ６３３の入力ノードは引出しバス６０８に接続され、その出力ノードは転送バス６００に接続されている。したがって、このトライステートバッファ６３３が活性化されると、引出しバス６０８の論理レベルはトライステートバッファ６３３を介して転送バス６００へ与えられる。さらに具体的には、引出しバス６０８の電位がＨレベルになると、転送バス６００の電位もＨレベルになる。引出しバス６０８の電位がＬレベルになると、転送バス６００の電位もＬレベルになる。
【００９８】
一方、トライステートバッファ６３３が不活性化されると、その出力ノードは高インピーダンス状態になる。トライステートバッファが不活性状態の間に引出しバス６０８の電位が変化しても転送バス６００の電位は変化しない。
【００９９】
図５にはトライステートバッファ６３３のみが示されているが、他のトライステートバッファ６３４〜６９６もこのトライステートバッファ６３３と同様に構成されている。
【０１００】
引出しバス６０９の一端は第１ビット部１０１の実行ステージ１０における論理回路１３の出力ノードと接続され、その他端は８つのトライステートバッファ６４１〜６４８のうちいずれかを介していずれかの転送バスと選択的に接続される。引出しバス６１２の一端は第１ビット部２０１のメモリステージ（図示せず）における論理回路（図示せず）の出力ノードと接続され、その他端は８つのトライステートバッファ６４９〜６５６のうちいずれかを介していずれかの転送バスと選択的に接続される。
【０１０１】
引出しバス６１３の一端は第１ビット部２０１の実行ステージ（図示せず）における論理回路（図示せず）の出力ノードと接続され、その他端は８つのトライステートバッファ６５７〜６６４のうちいずれかを介していずれかの転送バスと選択的に接続される。引出しバス６１６の一端は第１ビット部３０１のメモリステージ（図示せず）における論理回路（図示せず）の出力ノードと接続され、その他端は８つのトライステートバッファ６６５〜６７２のうちいずれかを介していずれかの転送バスと選択的に接続される。
【０１０２】
引出しバス６１７の一端は第１ビット部３０１の実行ステージ（図示せず）における論理回路（図示せず）の出力ノードと接続され、その他端は８つのトライステートバッファ６７３〜６８０のうちいずれかを介していずれかの転送バスと選択的に接続される。引出しバス６２０の一端は第１ビット部４０１のメモリステージ（図示せず）における論理回路（図示せず）の出力ノードと接続され、その他端は８つのトライステートバッファ６８１〜６８８のうちいずれかを介していずれかの転送バスと選択的に接続される。
【０１０３】
引出しバス６２１の一端は第１ビット部４０１の実行ステージ（図示せず）における論理回路（図示せず）の出力ノードと接続され、その他端は８つのトライステートバッファ６８９〜６９６のうちいずれかを介していずれかの転送バスと選択的に接続される。
【０１０４】
供給バス６１０はレジスタファイル５の第１ビット部５０１と、第１ビット部１０１の実行ステージ１０における一方のレジスタ１１との間に接続されている。供給バス６１０は転送バス６００にも接続されている。供給バス６１１はレジスタファイル５の第１ビット部５０１と、第１ビット部１０１の実行ステージ１０における他方のレジスタ１２との間に接続されている。供給バス６１１は転送バス６０１にも接続されている。
【０１０５】
供給バス６１４は、第１ビット部５０１と、第１ビット部２０１の実行ステージ（図示せず）における一方のレジスタ（図示せず）との間に接続されている。供給バス６１４は転送バス６０２にも接続されている。供給バス６１５は、第１ビット部５０１と、第１ビット部２０１の実行ステージ（図示せず）における他方のレジスタ（図示せず）との間に接続されている。供給バス６１５は転送バス６０３にも接続されている。
【０１０６】
供給バス６１８は、第１ビット部５０１と、第１ビット部３０１の実行ステージ（図示せず）における一方のレジスタ（図示せず）との間に接続されている。供給バス６１８は転送バス６０４にも接続されている。供給バス６１９は、第１ビット部５０１と、第１ビット部３０１の実行ステージ（図示せず）における他方のレジスタ（図示せず）との間に接続されている。供給バス６１９は転送バス６０５にも接続されている。
【０１０７】
供給バス６２２は、第１ビット部５０１と、第１ビット部４０１の実行ステージ（図示せず）における一方のレジスタ（図示せず）との間に接続されている。供給バス６２２は転送バス６０６にも接続されている。供給バス６２３は、第１ビット部５０１と、第１ビット部４０１の実行ステージ（図示せず）における他方のレジスタ（図示せず）との間に接続されている。供給バス６２３は転送バス６０７にも接続されている。
【０１０８】
このマイクロプロセッサにおいて、たとえば第１ビット部１０１の実行ステージ１０の結果データを第１ビット部３０１へ第２ソースオペランドとして転送するためには、転送バス６０５を駆動する８つのトライステートバッファ６３８，６４６，６５４，６６２，６７０，６７８，６８６，６９４のうち引出しバス６０９と接続されているトライステートバッファ６４６のみが導通状態にされる。これにより、第１ビット部１０１の実行ステージ１０の結果データは、引出しバス６０９、トライステートバッファ６４６、転送バス６０５、および供給バス６１９を介して第１ビット部３０１の実行ステージ（図示せず）における他方のレジスタ（図示せず）へ供給される。このとき、他の７つのトライステートバッファ６３８，６５４，６６２，６７０，６７８，６８６，６９４は非導通状態にされているので、対応する引出しバス６０８，６１２，６１３，６１６，６１７，６２０，６２１の電位が変化してもその変化によって転送バス６０５の電位が変化することはない。
【０１０９】
また、第１ビット部の実行ステージ１０の結果データを同じ第１ビット部１０１の実行ステージ１０へ第２ソースオペランドとして転送するためには、転送バス６０１を駆動する８つのトライステートバッファのうち引出しバス６０９と接続されているトライステートバッファ６４２だけが導通状態にされる。これにより、第１ビット部１０１の実行ステージ１０の結果データは、引出しバス６０９、トライステートバッファ６４２、転送バス６０１、および引出しバス６１１を介して、第１ビット部１０１の実行ステージ１０における他方のレジスタ１２へ供給される。
【０１１０】
レジスタファイル５の第１ビット部５０１におけるデータを第１ビット部１０１の実行ステージ１０における一方のレジスタ１１へ転送するためには、トライステートバッファ６２５が導通状態にされる。これにより、第１ビット部５０１のデータはトライステートバッファ６２５および供給バス６１０を介してレジスタ１１へ供給される。また、第１ビット部５０１のデータを第１ビット部１０１の実行ステージ１０における他方のレジスタ１２へ転送するためには、トライステートバッファ６２６が導通状態にされる。これにより、第１ビット部５０１のデータはトライステートバッファ６２６および供給バス６１１を介してレジスタ１２へ供給される。
【０１１１】
その他、第１ビット部１０１〜４０１の相互間でのデータ転送動作、各第１ビット部（第１処理回路）自身内でのデータ転送動作、およびレジスタファイル５の第１ビット部５０１と第１ビット部１０１，２０１，３０１，４０１との間でのデータ転送動作については、上記のデータ転送動作と同様であるのでその詳細は省略する。
【０１１２】
この実施例４を示す図４を図１２と比較すれば明らかなように、バイパス回路６（図示されていないバイパス回路を含む）の占有面積は図１２よりも小さい。すなわち、図１２では４本の転送バス５４〜５７からなる群が３２個並列に設けられているのに対し、図４では８本の転送バス６００〜６０７からなる群が３２個直列に設けられている。
【０１１３】
したがって、この実施例４では、機能ユニット数が４で、総数オペランド数が２で、ビット数が１であるので、上記式（１）により配線コストは８である。このため、このようなマイクロプロセッサが搭載されたＬＳＩチップのサイズは十分に小さいものとなる。また、バイパス回路の各バスの長さが短いため、短時間でデータが転送され得る。
【０１１４】
［実施例５］
図６は、この発明の実施例５によるマイクロプロセッサの一部を示すレイアウト図である。この実施例５が上記実施例２と異なるところは、複数のバイパス回路が設けられている点である。なお、複数のバイパス回路は複数のビット群に対応して設けられているが、図６では第１ビット群Ｇ１に対応して設けられたバイパス回路６のみが示されている。また、第１ビット部１０１および３０１の幅が他の幅よりも若干広く示されているが、すべての幅は互いに等しくされている。
【０１１５】
図６を参照して、このバイパス回路６は図上左側の２つの第１ビット部１０１，２０１と、図上右側の２つの第１ビット部３０１，４０１との間に配置されている。このバイパス回路６は、８本の転送バス６００〜６０７と、８本の引出しバス６０８〜６２１と、８本の供給バス６１０〜６２３と、供給バス内に設けられた８つのトライステートバッファ６２５〜６３２と、転送バスと引出しバスとの交点に設けられた６４個のトライステートバッファ６３３〜６９６とを含む。
【０１１６】
転送バス６００〜６０３は、レジスタファイル５の第１ビット部５０１と、左側の２つの第１ビット部１０１，２０１との間に配置されている。転送バス６０４〜６０７は、レジスタファイル５の第１ビット部５０１と、右側の２つの第１ビット部３０１，４０１との間に配置されている。引出しバス６０８〜６２１は、転送バス６００〜６０７と交差して配置されている。したがって、引出しバス６０８〜６２１の一部分は、レジスタファイル５の第１ビット部５０１の上に形成されている。レジスタファイル５に含まれるトランジスタの数は一般に、機能ユニットの各ビット部に含まれるトランジスタの数よりも少ないため、引出しバス６０８〜６２１をレジスタファイル５上に形成することは容易である。
【０１１７】
このマイクロプロセッサにおいて、第１ビット部１０１の実行ステージ１０の結果データを第１ビット部３０１の実行ステージ１０におけるレジスタ１２へ第２ソースオペランドとして転送するためには、転送バス６０５を駆動する８つのトライステートバッファ６３８，６４６，６７８，６７０，６５４，６６２，６９４，６８６のうち引出しバス６０９と接続されているトライステートバッファ６４６のみが導通状態にされる。これにより、第１ビット部１０１の実行ステージ１０の結果データは、引出しバス６０９、トライステートバッファ６４６、供給バス６１９を介して、第１ビット部３０１の実行ステージ１０におけるレジスタ１２へ供給される。
【０１１８】
また、第１ビット部１０１の実行ステージ１０の結果データを同じ第１ビット部１０１の実行ステージ１０へ転送するためには、トライステートバッファ６４２のみが導通状態にされる。これにより、第１ビット部１０１の実行ステージ１０の結果データは、引出しバス６０９、トライステートバッファ６４２、転送バス６０１、および供給バス６１１を介して、第１ビット部１０１の実行ステージ１０におけるレジスタ１２へ供給される。
【０１１９】
また、レジスタファイル５の第１ビット部５０１のデータを第１ビット部１０１、２０１、３０１および４０１へ転送するためには、トライステートバッファ６２５〜６３２が導通状態にされる。これにより、レジスタファイル５の第１ビット部５０１のデータは、トライステートバッファ６２５〜６３２、および供給バス６１０〜６２３を介して第１ビット部１０１、２０１、３０１および４０１へそれぞれ供給される。
【０１２０】
この実施例５においては、レジスタファイル５の各ビット部の両側に２つずつ対応するビット部（処理回路）が配置されているため、レジスタファイル５の各ビット部の長さに対応する２つのビット部の幅を整合することができる。したがって、この実施例５のマイクロプロセッサが占有するシリコン面積は、上記実施例４よりも小さい。
【０１２１】
また、この実施例５においては、機能ユニット数が４で、ソースオペランド数が２で、ビット数が１であるため、配線コストは上記式（１）により８である。このように、バイパス回路の占有面積が小さいため、このマイクロプロセッサが搭載されたＬＳＩチップのサイズは小さい。また、バイパス回路の各バスの長さは短いため、短時間でデータは転送され得る。
【０１２２】
［実施例６］
図７は、この発明の実施例６によるマイクロプロセッサの一部を示すレイアウト図である。この実施例６が上記実施例１と異なるところは、複数のバイパス回路が配置されている点である。この実施例６が上記実施例４と異なるところは、バイパス回路がビット群（処理回路群）の上に形成されている点である。
【０１２３】
この実施例６では複数のバイパス回路は複数のビット群に対応して設けられているが、図７では第１ビット群Ｇ１に対応して設けられたバイパス回路７のみが示されている。
【０１２４】
バイパス回路７は、８本の転送バス７００〜７０７と、８本の供給バス７８０〜７８７と、転送バスと供給バスとの交点に設けられた６４個のトライステートバッファ７１０〜７７３とを含む。
【０１２５】
転送バス７００〜７０７は、４つの第１ビット部１０１，２０１，３０１，４０１を横断してかつ４つの第１ビット部１０１，２０１，３０１，４０１の上に多層配線技術により形成されている。転送バス７００〜７０３は、実行ステージ１０の上に形成されている。転送バス７０４〜７０７は、メモリステージ２０の上に形成されている。
【０１２６】
転送バス７００は第１ビット部１０１の実行ステージ１０における論理回路１３の出力ノードに接続されている。転送バス７０１は、第１ビット部２０１の実行ステージ１０における論理回路１３の出力ノードに接続されている。転送バス７０２は、第１ビット部３０１の実行ステージ１０における論理回路１３の出力ノードに接続されている。転送バス７０３は、第１ビット部４０１の実行ステージ１０における論理回路１３の出力ノードに接続されている。
【０１２７】
転送バス７０４は、第１ビット部４０１のメモリステージ２０における論理回路２２の出力ノードに接続されている。転送バス７０５は、第１ビット部２０１のメモリステージ２０における論理回路２２の出力ノードに接続されている。転送バス７０６は、第１ビット部３０１のメモリステージ２０における論理回路２２の出力ノードに接続されている。転送バス７０７は、第１ビット部４０１のメモリステージ２０における論理回路２２の出力ノードに接続されている。
【０１２８】
供給バス７８０〜７８７は、転送バス７００〜７０７と交差して配置されている。供給バス７８０および７８１は、第１ビット部１０１の中に配置されている。供給バス７８２および７８３は、第１ビット部２０１の中に配置されている。供給バス７８４および７８５は、第１ビット部３０１の中に配置されている。供給バス７８６および７８７は、第１ビット部４０１の中に配置されている。
【０１２９】
トライステートバッファ７１０〜７７３は、図５に示されたものと同様に構成されている。たとえば、トライステートバッファ７１０は転送バス７００と供給バス７８０との交点に配置されている。トライステートバッファ７１０の入力ノードは転送バス７００に接続され、その出力ノードは供給バス７８０に接続されている。このトライステートバッファ７１０は選択的に活性化され、活性化されると転送バス７００の電位を供給バス７８０へ与える。他のトライステートバッファ７１１〜７７３についても、このトライステートバッファ７１０と同様に構成されている。
【０１３０】
このマイクロプロセッサにおいて、第１ビット部１０１の実行ステージ１０の結果データを第１ビット部３０１の実行ステージへ第２ソースオペランドとして供給するためには、供給バス７８５を駆動する８つのトライステートバッファ７５０〜７５７のうち転送バス７００に接続されているトライステートバッファ７５０が導通状態にされる。また、この供給バス７８５を駆動するトライステートバッファ４２は非導通状態にされる。これにより、第１ビット部１０１の実行ステージ１０の結果データは、転送バス７００、トライステートバッファ７５０、供給バス７８５を介して、第１ビット部３０１の実行ステージ１０におけるレジスタ１２へ供給される。
【０１３１】
また、第１ビット部１０１の実行ステージ１０の結果データを同じ第１ビット部１０１の実行ステージ１０へ供給するためには、トライステートバッファ７１０のみが導通状態にされる。これにより、第１ビット部１０１の実行ステージ１０の結果データはトライステートバッファ７１０および供給バス７８０を介して第１ビット部１０１の実行ステージ１０におけるレジスタ１１へ供給される。
【０１３２】
また、レジスタファイル５の第１ビット部５０１のデータを第１ビット部１０１、２０１、３０１および４０１へ供給するためには、トライステートバッファ４１および４２が導通状態にされる。これにより、レジスタファイル５の第１ビット部５０１のデータは、たとえば第１ビット部１０１においては、トライステートバッファ４１および供給バス７８０を介して実行ステージ１０におけるレジスタ１１へ供給されるとともに、トライステートバッファ４２および供給バス７８１を介してレジスタ１２へ供給される。他の第１ビット部２０１，３０１，４０１においてもこの第１ビット部１０１と同様に、第１ビット部５０１のデータはレジスタ１１および１２へ供給される。
【０１３３】
この実施例６においては、バイパス回路７が第１ビット部１０１，２０１，３０１および４０１の上に多層配線技術などによって形成されているため、このマイクロプロセッサによる占有面積は上記実施例１と等しいか、あるいは僅かに大きい程度である。また、このマイクロプロセッサによる占有面積は上記実施例４よりも小さい。この実施例６の配線コストは０か、あるいはほとんど０に近い値となる。したがって、このマイクロプロセッサが搭載されたＬＳＩチップのサイズは十分に小さいものとなる。
【０１３４】
［実施例７］
図８は、この発明の実施例７によるマイクロプロセッサの一部を示すレイアウト図である。この実施例７が上記実施例２と異なるところは、バイパス回路が設けられている点である。また、この実施例７が上記実施例５と異なるところは、バイパス回路がレジスタファイルの両側に配置されたビット部の間ではなく、それらビット部の上に形成されている点である。また、この実施例７が上記実施例６と異なるところは、各ビット群を構成する４つのビット部がレジスタファイルの一方側に配置されているのではなく、レジスタファイルの両側に２つずつ配置されている点である。
【０１３５】
このマイクロプロセッサは、複数のビット群に対応して設けられた複数のバイパス回路を備える。図８では、第１ビット群Ｇ１に対応して設けられたバイパス回路７のみが示されている。このバイパス回路７は、８本の転送バス７００〜７０７と、８本の供給バス７８０〜７８７と、転送バスと供給バスとの交点に設けられた６４個のトライステートバッファ７１０〜７７３とを含む。
【０１３６】
転送バス７００および７０１は、第１ビット部１０１および２０１の実行ステージ１０の上に形成され、かつレジスタファイル５の長手方向と同じ方向に延びている。転送バス７００は、第１ビット部１０１の実行ステージ１０における論理回路１３の出力ノードと接続されている。転送バス７０１は、第１ビット部２０１の実行ステージ１０における論理回路１３の出力ノードと接続されている。
【０１３７】
転送バス７０２および７０３は、第１ビット部３０１および４０１の実行ステージ１０の上に形成され、かつレジスタファイル５の長手方向と同じ方向に延びている。転送バス７０２は、第１ビット部３０１の実行ステージ１０における論理回路１３の出力ノードに接続されている。転送バス７０３は、第１ビット部４０１の実行ステージ１０における論理回路１３の出力ノードと接続されている。
【０１３８】
転送バス７０４および７０５は、第１ビット部１０１および２０１の上に形成され、かつレジスタファイル５の長手方向と同じ方向に延びている。転送バス７０４は、第１ビット部１０１のメモリステージ２０における論理回路２２の出力ノードと接続されている。転送バス７０５は、第１ビット部２０１のメモリステージ２０における論理回路２２の出力ノードと接続されている。
【０１３９】
転送バス７０６および７０７は、第１ビット部３０１および４０１のメモリステージ２０の上に形成され、かつレジスタファイル５の長手方向と同じ方向に延びている。転送バス７０６は、第１ビット部３０１のメモリステージ２０における論理回路２２の出力ノードと接続されている。転送バス７０７は、第１ビット部４０１のメモリステージ２０における論理回路２２の出力ノードと接続されている。
【０１４０】
供給バス７８０、７８１、７８４および７８５は、第１ビット部１０１および３０１とレジスタファイル５との上に形成され、かつレジスタファイル５の長手方向と垂直方向に延びている。供給バス７８２、７８３、７８６および７８７は、第１ビット部２０１および４０１とレジスタファイル５との上に形成され、かつレジスタファイル５の長手方向と垂直方向に延びている。
【０１４１】
トライステートバッファ７１０〜７７３は、図５に示されたものと同様に構成されている。たとえばトライステートバッファ７１０の入力ノードは転送バス７００に接続され、その出力ノードは供給バス７８０に接続されている。他のトライステートバッファ７１１〜７７３もこのトライステートバッファ７１０と同様に構成されている。
【０１４２】
なお、図示はされていないが、他のビット群に対応して設けられたバイパス回路も、このバイパス回路７と同様に構成されている。
【０１４３】
このマイクロプロセッサにおいて、たとえば第１ビット部１０１の実行ステージ１０の結果データを第１ビット部３０１の実行ステージ１０におけるレジスタ１１へ供給するためには、供給バス７８４を駆動する８つのトライステートバッファ７４２〜７４９のうち転送バス７００と接続されているトライステートバッファ７４２が導通状態にされる。これにより、第１ビット部１０１の実行ステージ１０の結果データは、転送バス７００、トライステートバッファ７４２、供給バス７８４を介して、第１ビット部３０１の実行ステージ１０におけるレジスタ１１へ供給される。
【０１４４】
また、第１ビット部１０１の実行ステージ１０の結果データを同じ第１ビット部１０１の実行ステージ１０におけるレジスタ１１へ供給するためには、トライステートバッファ７１０のみが導通状態にされる。これにより、第１ビット部１０１の実行ステージ１０の結果データは、トライステートバッファ７１０および供給バス７８０を介して、第１ビット部１０１の実行ステージ１０におけるレジスタ１１へ供給される。
【０１４５】
また、レジスタファイル５の第１ビット部５０１のデータを第１ビット部１０１，２０１，３０１，４０１へそれぞれ供給するためには、トライステートバッファ４１および４２が導通状態にされる。たとえば第１ビット部１０１においては、レジスタファイル５の第１ビット部５０１のデータは、トライステートバッファ４１および供給バス７８０を介してレジスタ１１へ供給されるとともに、トライステートバッファ４２および供給バス７８１を介してレジスタ１２へ供給される。他の第１ビット部２０１，３０１，４０１においても、この第１ビット部１０１と同様にレジスタファイル５の第１ビット部５０１のデータはレジスタ１１および１２へそれぞれ供給される。
【０１４６】
この実施例７においては、各ビット群を構成する４つのビット部がレジスタファイル５の両側に２つずつ配置されているため、レジスタファイル５の各ビット部の長さに対応する２つのビット部の幅が整合され得る。したがって、レジスタファイル５および複数のビット部は、たとえば上記実施例６よりも効率的に配置され得る。
【０１４７】
また、各バイパス回路が、対応するビット群を構成する４つのビット部ならびにレジスタファイル５の上に形成されているため、バイパス回路に必要な面積はたとえば上記実施例５よりも小さくなる。この実施例７の配線コストは０か、あるいはほとんど０に近い値となる。したがって、この実施例７によるマイクロプロセッサが搭載されたＬＳＩチップのサイズは十分小さいものとなる。
【図面の簡単な説明】
【０１４８】
【図１】この発明の実施例１による並列処理マイクロプロセッサを示すレイアウト図である。
【図２】この発明の実施例２による並列処理マイクロプロセッサを示すレイアウト図である。
【図３】この発明の実施例３による並列処理マイクロプロセッサを示すレイアウト図である。
【図４】この発明の実施例４による並列処理マイクロプロセッサの一部を示すレイアウト図である。
【図５】図４に示された並列処理マイクロプロセッサにおけるトライステートバッファを具体的に示す回路図である。
【図６】この発明の実施例５による並列処理マイクロプロセッサの一部を示すレイアウト図である。
【図７】この発明の実施例６による並列処理マイクロプロセッサの一部を示すレイアウト図である。
【図８】この発明の実施例７による並列処理マイクロプロセッサの一部を示すレイアウト図である。
【図９】１つの機能ユニットを備えた従来のマイクロプロセッサを示すレイアウト図である。
【図１０】図９に示されたマイクロプロセッサのパイプライン動作を示すタイムチャートである。
【図１１】この発明が解決しようとする課題を明らかにするため、複数の機能ユニットを備えた並列処理マイクロプロセッサの考えられ得るレイアウト図である。
【図１２】この発明が解決しようとする課題を明らかにするため、図１１のマイクロプロセッサに機能ユニット相互間のデータ転送を可能にするバイパス回路が加えられた並列処理マイクロプロセッサの考えられ得るレイアウト図である。
【符号の説明】
【０１４９】
Ｇ０〜Ｇ３１ 第０〜第３１ビット群、１００，２００，３００，４００ 第０ビット部、１０１，２０１，３０１，４０１ 第１ビット部、１０２，２０２，３０２，４０２ 第２ビット部、１０３，２０３，３０３，４０３ 第３ビット部、１３０，２３０，３３０，４３０ 第３０ビット部、１３１，２３１，３３１，４３１ 第３１ビット部、５ レジスタファイル、５００〜５３１ 第０〜第３１ビット部、６，７ バイパス回路、６００〜６０７，７００〜７０７転送バス、６０８，６０９，６１２，６１３，６１６，６１７，６２０，６２１引出しバス、４３，４４，６１０，６１１，６１４，６１５，６１８，６１９，６２２，６２３，７８０〜７８７ 供給バス、４５ 結果バス、４１，４２，６２５〜６９６，７１０〜７７３ トライステートバッファ、１０ 実行ステージ、２０ メモリステージ、３０ 書戻しステージ。
【図１】
0003701296.tif 000002
【図２】
0003701296.tif 000003
【図３】
0003701296.tif 000004
【図４】
0003701296.tif 000005
【図５】
0003701296.tif 000006
【図６】
0003701296.tif 000007
【図７】
0003701296.tif 000008
【図８】
0003701296.tif 000009
【図９】
0003701296.tif 000010
【図１０】
0003701296.tif 000011
【図１１】
0003701296.tif 000012
【図１２】
0003701296.tif 000013