(57)【特許請求の範囲】
【請求項１】
１クロック周期で複数の命令を同時に実行する並列プロセッサにおいて、
同時に入力された各機械命令をそれぞれアクセス命令と演算命令との少なくとも一方を含む複数のナノ命令に分離する命令変換部と、
この命令変換部で分離された各演算命令を実行する複数の演算ユニットと、
内部にそれぞれ複数のレジスタを有する複数のバンクが形成され、前記命令変換部で分離されたバンク及びレジスタを指定したアクセス命令が実行されるマルチバンクレジスタファイルと、
前記命令変換部と前記各演算ユニットとの間に介挿され、前記命令変換部から出力された演算命令の前記演算ユニットに対する出力クロック周期を調整する複数の演算調整部と、
前記命令変換部と前記マルチバンクレジスタファイルとの間に介挿され、前記命令変換部から同時に出力されたアクセス命令が同一バンク内で競合しないように、各アクセス命令のマルチバンクレジスタファイルに対する出力クロック周期を調整するアクセス調整部と、
前記マルチバンクレジスタファイルに対するアクセス結果及び前記演算ユニットにおける演算結果を各調整部に帰還させる実行結果バスと
を備えた並列プロセッサ。
【請求項２】
前記各機械命令から分離された演算命令における演算結果の格納レジスタを前記演算命令毎に異なる新たなレジスタに指定し直す使用レジスタ数拡張手段を備えた請求項１記載の並列プロセッサ。
【請求項３】
内部にそれぞれ複数のレジスタを有する複数のバンクが形成されたマルチバンクレジスタファイルを有し、このマルチバンクレジスタファイルに対してバンクアドレス及びバンク内のレジスタアドレスを指定した複数のアクセス命令を１クロック周期で同時に実行する並列プロセッサにおいて、
前記マルチバンクレジスタファイルは、
複数のバンクと、
前記バンクアドレスが指定する行に所属する各バンクに行バンク選択信号を出力するバンク行選択回路と、
前記バンクアドレスが指定する列に所属する各バンクに列バンク選択信号を出力するバンク列選択回路と、
前記行バンク選択信号及び列バンク選択信号で指定されたバンク内の前記レジスタアドレスの指定するレジスタに対するアクセスを実行するバンク読出／書込回路と
を有することを特徴とする並列プロセッサ。
【請求項４】
内部にそれぞれ複数のレジスタを有する複数のバンクが形成されたマルチバンクレジスタファイルを有し、このマルチバンクレジスタファイルに対してバンクアドレス及びバンク内のレジスタアドレスを指定した複数のアクセス命令を１クロック周期で同時に実行する並列プロセッサにおいて、
前記マルチバンクレジスタファイルは、
複数のバンクと、
前記バンクアドレスが指定する行に所属する各バンクに行バンク選択信号を出力するバンク行選択回路と、
前記バンクアドレスが指定する列に所属する各バンクに列バンク選択信号を出力するバンク列選択回路と、
前記行バンク選択信号及び列バンク選択信号で指定されたバンクに対して前記レジスタアドレスの指定するレジスタに対するアクセスを指示するバンク読出／書込指示回路とを有し、
かつ、前記各バンクは、
複数のレジスタと、
前記バンク読出／書込指示回路が指定したレジスタアドレスが指定する行に所属する各レジスタに行レジスタ選択信号を出力するレジスタ行選択回路と、
前記バンク読出／書込指示回路が指定したレジスタアドレスが指定する列に所属する各レジスタに列レジスタ選択信号を出力するレジスタ列選択回路と、
前記行レジスタ選択信号及び列レジスタ選択信号で指定されたレジスタに対する前記バンク読出／書込指示回路が指示したアクセスを実行するレジスタ読出／書込回路とを有する
ことを特徴とする並列プロセッサ。
【請求項５】
前記各バンクは、前記バンク読出／書込指示回路が指定した同一クロック周期で実施する複数のアクセスに対応する複数組のポートを前記行レジスタ選択信号及び列レジスタ選択信号で指定されたレジスタに対するアクセスに対応する１組のポートに変換するポート数変換回路を有することを特徴とする請求項４記載の並列プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１クロック周期で複数の命令を同時に実行する並列プロセッサに関する。
【０００２】
【従来の技術】
例えば、スーパースカラプロセッサ、ＶＬＩＷ（ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ）プロセッサに代表される１クロック周期で複数の命令を同時に実行する並列プロセッサにおいては、複数の命令を同時に実行するために、この複数の命令で使用される情報（データ）を演算素子に供給したり演算素子から受入れるために、これらの多数の情報を一時記憶するレジスタファイルが必要である。
【０００３】
例えば、ａ＋ｂ＝ｃ、ａ―ｂ＝ｃ等の加算、減算等の一つの命令を実行するためには、ａ、ｂ、ｃの３つのオペランド（ｏｐｅｒａｎｄ）が必要であるので、一つの命令に対して、前記レジスタファイルとして、３個のポート（入出力端子）を有するマルチポート・レジスタファイルが必要である。
【０００４】
したがって、４個の命令を同時に実行する並列プロセッサにおいては、前記マルチポート・レジスタファイルは１２個のポートが必要である。さらに、８個の命令を同時に実行する並列プロセッサにおいては、２４個のポートを有するマルチポート・レジスタファイルが必要である。
【０００５】
一般に、同一記憶容量を有するレジスタファイルにおけるこのレジスタファイルの必要実装面積は、ポート（入出力端子）数の２乗に比例して大きくなるので、このマルチポート・レジスタファイルが組込まれた並列プロセッサ全体が大型化して、製造費が上昇するのみならず、配線が長くなり、プロセッサの動作速度低下等の特性劣化を生じる懸念がある。したがって、同時に実行する命令数を簡単に増加できない問題がある。
【０００６】
このような課題を解消するために、並列プロセッサに組込むレジスタファイルとして、（ａ）レジスタファイルのコピーを複数採用することでポート数を増加する、（ｂ）マルチバンクレジスタファイルを採用する、等の対策が検討されてきた。
【０００７】
【発明が解決しようとする課題】
しかしながら、（ａ）レジスタファイルのコピーを複数採用する場合においては、ポート数は増加するが、実装面積も増加する等の問題が解消されない等の問題があった。
【０００８】
これに対して、（ｂ）マルチバンクレジスタファイルを採用する場合においては、情報（データ）が入出力されるポートの数は最小限に固定でき、情報（データ）が入出力される実際のレジスタはバンク切換で対処できるので、従来のマルチポート・レジスタファイルに比較して、実装面積を大幅に小さくできる。
【０００９】
しかしながら、並列プロセッサにおいては、同時に複数の命令を実行するので、同時に実行する命令が同一バンクに所属するレジスタをアクセスする可能性が高くなり、バンクアクセス競合に起因してアクセス遅延の増加が懸念される。したがって、同時に実行する命令数を簡単に増加できない問題があった。なお、バンクアクセス競合発生の頻度を低減するためには、バンク数を増加すればよいが、バンク数を増加すれば、マルチバンクレジスタファイル全体の必要記憶容量が増加する問題がある。
【００１０】
本発明はこのような事情に鑑みてなされたものであり、入力された命令の実行タイミングを調整したりマルチバンクレジスタファイルの構成を工夫することにより、マルチバンクレジスタファイルを組込み可能とし、装置全体の構成を増加することなく、簡単に同時に実行される命令数を増加でき、かつ、高い動作速度を維持でき、さらに製造費を低減できる並列プロセッサを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記課題を解消するために、本発明の１クロック周期で複数の命令を同時に実行する並列プロセッサにおいては、同時に入力された各機械命令をそれぞれアクセス命令と演算命令との少なくとも一方を含む複数のナノ命令に分離する命令変換部と、この命令変換部で分離された各演算命令を実行する複数の演算ユニットと、内部にそれぞれ複数のレジスタを有する複数のバンクが形成され、命令変換部で分離されたバンク及びレジスタを指定したアクセス命令が実行されるマルチバンクレジスタファイルと、命令変換部と各演算ユニットとの間に介挿され、命令変換部から出力された演算命令の演算ユニットに対する出力クロック周期を調整する複数の演算調整部と、命令変換部とマルチバンクレジスタファイルのと間に介挿され、命令変換部から同時に出力されたアクセス命令が同一バンク内で競合しないように、各アクセス命令のマルチバンクレジスタファイルに対する出力クロック周期を調整するアクセス調整部と、マルチバンクレジスタファイルに対するアクセス結果及び演算ユニットにおける演算結果を各調整部に帰還させる実行結果バスとを備えている。
【００１２】
このように構成された並列プロセッサにおいては、同時に入力された各機械命令は、アクセス命令と演算命令との少なくとの一方を含む複数のナノ命令に分離される。そして、各ナノ命令は、他の機械命令の各ナノ命令も含めた全部のナノ命令相互間で実行タイミングが調整される。したがって、一つの機械命令に所属する各ナノ命令を順番に実行していく過程で、ナノ命令の実行待ち時間が発生すると、他の機械命令に所属する各ナノ命令を実行することが可能である。
【００１３】
すなわち、マルチバンクレジスタファイルに対するアクセス命令と演算ユニットに対する演算命令とを同一の機能レベルと位置付けているので、結果的に、並列プロセッサ全体としての処理の高速化を実現できる。
【００１４】
さらに、命令変換部から同時に出力されたアクセス命令が同一バンク内で競合しないように、各アクセス命令のマルチバンクレジスタファイルに対する出力クロック周期を調整するアクセス調整部を設けているので、たとえ、同時に同一バンクに所属するレジスタをアクセスする命令が発生したとしても、これらの命令は実行時間が自動調整されるので、バンクアクセス競合が発生する確率を大幅に抑制せきる。
【００１５】
また、別の発明は、上述した発明の並列プロセッサにおいて、さらに、各機械命令から分離された演算命令における演算結果の格納レジスタを演算命令毎に異なる新たなレジスタに指定し直す使用レジスタ数拡張手段を付加している。
【００１６】
このように構成された並列プロセッサにおいては、結果的に、マルチバンクレジスタファイル内において多数のレジスタを使用して各命令が実行されるので、バンクアクセス競合が発生する確率をさらに抑制できる。
【００１７】
さらに、別の発明は、内部にそれぞれ複数のレジスタを有する複数のバンクが形成されたマルチバンクレジスタファイルを有し、このマルチバンクレジスタファイルに対してバンクアドレス及びバンク内のレジスタアドレスを指定した複数のアクセス命令を１クロック周期で同時に実行する並列プロセッサに適用される。
【００１８】
そして、上記課題を解消するために、本発明の並列プロセッサにおいては、マルチバンクレジスタファイルを、複数のバンクと、バンクアドレスが指定する行に所属する各バンクに行バンク選択信号を出力するバンク行選択回路と、バンクアドレスが指定する列に所属する各バンクに列バンク選択信号を出力するバンク列選択回路と、行バンク選択信号及び列バンク選択信号で指定されたバンク内のレジスタアドレスの指定するレジスタに対するアクセスを実行するバンク読出／書込回路とで構成している。
【００１９】
このように構成された並列プロセッサにおいては、同一クロック周期で複数回同時にアクセスが実施されるマルチバンクレジスタファイルの実装面積を小さくできる。
【００２０】
また、別の発明は、上述した並列プロセッサにおいて、マルチバンクレジスタファイルを、複数のバンクと、バンクアドレスが指定する行に所属する各バンクに行バンク選択信号を出力するバンク行選択回路と、バンクアドレスが指定する列に所属する各バンクに列バンク選択信号を出力するバンク列選択回路と、行バンク選択信号及び列バンク選択信号で指定されたバンクに対してレジスタアドレスの指定するレジスタに対するアクセスを指示するバンク読出／書込指示回路とで構成している。
【００２１】
さらに、各バンクを、複数のレジスタと、バンク読出／書込指示回路が指定したレジスタアドレスが指定する行に所属する各レジスタに行レジスタ選択信号を出力するレジスタ行選択回路と、バンク読出／書込指示回路が指定したレジスタアドレスが指定する列に所属する各レジスタに列レジスタ選択信号を出力するレジスタ列選択回路と、行レジスタ選択信号及び列レジスタ選択信号で指定されたレジスタに対するバンク読出／書込指示回路が指示したアクセスを実行するレジスタ読出／書込回路とで構成している。
【００２２】
このように、マルチバンクレジスタファイルを、各バンク及び各レジスタを階層的に配設する構造とすることにより、マルチバンクレジスタファイルの実装面積をより一層小さくできる。
【００２３】
さらに、別の発明は、上記発明の並列プロセッサにおいて、各バンクに対して、バンク読出／書込指示回路が指定した同一クロック周期で実施する複数のアクセスに対応する複数組のポートを行レジスタ選択信号及び列レジスタ選択信号で指定されたレジスタに対するアクセスに対応する１組のポートに変換するポート数変換回路を付加している。
【００２４】
このように、各バンクに対して、ポート数変換回路を付加することによって、各レジスタはアクセスに対応する１組のポートのみを設ければよいので、マルチバンクレジスタファイル全体のポート数を大幅に削減でき、マルチバンクレジスタファイルの実装面積をさらに小さくできる。
【００２５】
【発明の実施の形態】
以下、本発明の各実施形態を図面を用いて説明する。
（第１実施形態）
図１は本発明の第１実施形態に係る並列プロセッサの概略構成を示すブロック図である。この第１実施形態の並列プロセッサは、１クロック周期で外部から入力された８個の機械命令２を同時に実行する機能を有する。
【００２６】
並列プロセッサに外部から入力された各機械命令２は命令変換部１へ入力されて、それぞれアクセス命令と演算命令との少なくとも一方を含む複数のナノ命令３へ変換される。この命令変換部１で分離された各ナノ命令３のうち各アクセス命令３ａはアクセス調整部４へ入力され、各ナノ命令３のうち各演算命令３ｂは指定された演算調整部５へ入力される。
【００２７】
アクセス調整部４は、入力された各アクセス命令３ａをマルチバンクレジスタファイル９に対して命令実行８するが、この場合、アクセス命令３ａがこのマルチバンクレジスタファイル９における同一バンク１２内で競合しないように、各アクセス命令３ａの実行クロックタイミングを調整する機能を有する。また、アクセス調整部４は、入力されたアクセス命令３ａが書込命令の場合で、かつ書込むべき情報（データ）が演算の実行結果１４で与えられる場合に、この実行結果１４が実行結果バス１５から実行結果６としてまだ与えられていない場合に、このアクセス命令３ａの命令実行８の出力クロックタイミングを調整する機能を有する。
【００２８】
マルチバンクレジスタファイル９内には、図４に示すように、それぞれ４個のレジスタ１２ａからなる複数のバンク１２が形成されている。マルチバンクレジスタファイル９に対して実行された読出命令（ｒｅａｄ）又は書込命令（ｗｒｉｔｅ）の各アクセス命令３ａのうち、読出命令で各レジスタ１２ａから読出されたデータからなる実行結果１３は、実行結果バス１５へ出力される。
【００２９】
各演算調整部８は、自己に入力された演算命令３ｂを演算ユニット（ＡＬＵ）１１に対して命令実行１０するが、例えば演算命令３ｂがマルチバンクレジスタファイル９に対して実行されたアクセスの実行結果１３を使用する場合で、この実行結果１３が実行結果バス１５を介して、実行結果７として入力されていない場合等において、該当演算命令３ｂの命令実行１０の出力クロックタイミングを調整する機能を有する。
【００３０】
各演算ユニット（ＡＬＵ）１１は、演算命令３ｂの命令実行１０に基づいて演算を実行し、実行結果１４へ実行結果バス１５へ出力する。
【００３１】
このような構成の並列プロセッサにおける各部の詳細動作を説明する。
図２に命令変換部１が実行する機械命令３を複数のナノ命令に変換する場合の命令変換の一例を示す。
【００３２】
外部から入力された、レジスタｒ２のデータとレジスタｒ３のデータとを加算して加算結果を別のレジスタｒ３に格納する加算を示す機械命令２［ａｄｄ  ｒ１  ←ｒ２＋ｒ３］は、
レジスタｒ２のデータを読出して演算調整部５の左側入力端子０番へ取込むすアクセス命令３ａ［ｒｅａｄ  ＡＬＵｒｓＬ０←ｒ２］と、
レジスタｒ３のデータを読出して演算調整部５の右側入力端子０番へ取込むすアクセス命令３ａ［ｒｅａｄ  ＡＬＵｒｓＲ０←ｒ２］と、
演算調整部５の左右の入力端子０番の各データを加算して、アクセス調整部４の入力端子０番へ取込む演算命令３ｂ［ａｄｄ  ＲＥＧｒｓ０←ＡＬＵｒｓＬ０＋ＡＬＵｒｓＲ０］と、
アクセス調整部４の入力端子０番のデータをレジスタｒ１へ書込むアクセス命令３ａ［ｗｒｉｔｅ  ｒ１←ＲＥＧｒｓ０］と
の合計４個のナノ命令３とに分離される。
【００３３】
さらに、この命令変換部１は、演算命令３ｂにおける各演算結果（実行結果１４）の格納アドレスを、各演算命令３ｂ毎に異なる新たなレジスタに指定し直す使用レジスタ数拡張機能を有する。
【００３４】
すなわち、通常のプロセッサの命令セットで定義されたレジスタ数は非常に少ない。これは、各命令が同時に実行されることを想定していなくて、各命令が時系列に実施されるとしているからである。しかし、この状態を、並列プロセッサで採用される複数のレジスタ１２ａを有する複数のバンク１２を有すマルチバンクレジスタファイル９に適用すると、各演算命令の演算対象情報（データ）と演算結果が同一バンク１２に入る確率が高いので、バンクアクセス競合が発生しやすい。
【００３５】
そのため、各演算結果（実行結果１４）の格納アドレスを、各演算命令３ｂ毎に異なる新たなレジスタに指定し直す。
【００３６】
この例を図３を用いて説明する。
各レジスタ１２ａの各値（データ）を読出して加算して別のレジスタ１２ａへ書込む機械命令２［ａｄｄ  ｒ３＝ｒ２＋ｒ１］、［ａｄｄ  ｒ４＝ｒ４＋ｒ５］を、
（ａ）［ａｄｄ  ｒ３２＝ｒ２＋ｒ１］、［ａｄｄ  ｒ３３＝ｒ４＋ｒ５］
のように演算結果の格納レジスタｒ３、ｒ４を異なる新たなレジスタｒ３２、ｒ３３に指定し直すことで、マルチバンクレジスタファイル９の各レジスタ１２ａを有効に使用でき、かつ各演算命令の演算対象情報（データ）と演算結果が同一バンクに入る確率が低くなり、バンクアクセス競合の発生確率が低下する。
【００３７】
さらに、連続する命令は、同一クロック周期で実施される確率が高いので、各命令の演算結果の格納レジスタｒ３、ｒ４を、（ｂ）に示すように、少なくともバンク１２が異なるように大きき離れた新たなレジスタｒ３２、ｒ３６に指定し直すことで、バンクアクセス競合の発生確率をさらに低下させることが可能である。
【００３８】
（ｂ）［ａｄｄ  ｒ３２＝ｒ２＋ｒ１］、［ａｄｄ  ｒ３６＝ｒ４＋ｒ５］
次に、アクセス調整部４の具体的動作を図５を用いて説明する。前述したように、アクセス調整部４は、命令変換部１から同時に出力されたアクセス命令３ａがマルチバンクレジスタファイル９内の同一バンク１２内で競合しないように、各アクセス命令３ａのマルチバンクレジスタファイル９に対する出力クロック周期を調整する。
【００３９】
このアクセス調整部４内には、各クロック周期で実行すべき複数のアクセス命令３ａが待ち行列（キュー）の状態で一時記憶される。図５においては、第１行目にレジスタｒ０、ｒ１、ｒ５、ｒ７，…に対する各アクセス命令３ａが格納され、第２行目にレジスタｒ３、ｒ８、ｒ２、ｒ１２，…に対する各アクセス命令３ａが格納されている。この場合、第１行目には、同一の０番目のバンク１２に所属するレジスタｒ０、ｒ１が含まれる。さらに、同一の２番目のバンク１２に所属するレジスタｒ５、ｒ７が含まれる。このまま、第１行目の各アクセス命令３ａを実行すると、バンクアクセス競合が発生する。
【００４０】
そこで、１回目のクロック周期で実行するアクセス命令の一部を２行目の各アクセス命令３ａの一部と交換することによって、１回目のクロック周期で実行するアクセス命令にて、バンクアクセス競合が発生しないように調整する。具体的には、１回目のクロック周期で、１行目のレジスタｒ０、２行目のレジスタｒ８、１行目のレジスタｒ５、２行目のレジスタｒ１２の各アクセス命令を実行する。
【００４１】
次に、２回目のクロック周期で実行するアクセス命令は、先に、１回目のクロック周期で実行されなかった１行目の各アクセス命令を優先的に割付け、残りをバンクアクセス競合が発生しない条件で、２行目又は３行目お各アクセス命令から選択する。
【００４２】
このように、アクセス調整部４は、各アクセス命令３ａ相互間で実行タイミングの調整を行っているので、全体のアクセス命令３ａの待ち時間を増加することなく、アクセス命令３ａがマルチバンクレジスタファイル９内で競合する確率を大幅に低下させることができる。
【００４３】
このように構成された第１実施形態の並列プロセッサにおいては、外部から入力された機械命令２を命令変換部１でアクセス命令３ａと演算命令３ｂとの少なくとも一方を含む複数のナノ命令３に変換して、各ナノ命令３毎に自己の最良のタイミングで命令実行可能としている。
【００４４】
したがって、図６（ａ）に示すように、マルチバンクレジスタファイル９に対するアクセス命令３ａと演算ユニット１１に対する演算命令３ｂとを同一の機能レベルと位置付けているので、レジスタに対するアクセス命令３ａのない機械命令２、及びフォワーデングのみでオペランドを得ることとができる機械命令２の実行タイミングを早くでき、並列プロセッサの処理速度を上昇できる。
【００４５】
なお、図６（ｂ）は、機械命令２をアクセス命令３ａと演算命令３ｂとの各ナノ命令３に変換しない、従来の並列プロセッサにおける機械命令の実行手順を示す図である。全ての機械命令が、レジスタファイル（レジスタアクセス）、演算調整部、演算ユニットを経由して、その都度、実行の有無を判断している。したがって、無駄な判断処理が含まれ、処理効率が低下する。
【００４６】
さらに、この第１実施形態の並列プロセッサにおいては、前述したように、アクセス調整部４は、各アクセス命令３ａがマルチバンクレジスタファイル９内の同一バンク１２内で競合しないように、各アクセス命令３ａ相互間で、マルチバンクレジスタファイル９に対するアクスの実行タイミングの調整を行っている。その結果、アクセス命令３ａがマルチバンクレジスタファイル９内で競合する確率を大幅に低下でき、並列プロセッサの処理速度を上昇できる。
【００４７】
さらに、各演算命令３ｂにおける演算結果の格納レジスタを演算命令毎に異なる新たなレジスタに指定し直しているので、結果的に、マルチバンクレジスタファイル９内において多数のレジスタ１２ａを使用して各命令が実行されるので、バンクアクセス競合が発生する確率をさらに抑制でき、並列プロセッサの処理速度をさらに上昇できる。
【００４８】
このように、処理速度を低下することなく、ポート数が少なく実装面積が少ないマルチバンクレジスタファイル９をこの並列プロセッサに組込むことが可能であるので、並列プロセッサ全体を小型に形成できる。
【００４９】
図７は、ナノ命令に分離しかつアクセス競合（衝突）回避を実施した第１実施形態の並列プロセッサと、マルチバンクレジスタメモリ（バンク構成メモリ）のみを用いた従来の並列プロセッサとのベンチマークテスト結果を示す図である。Ａ〜Ｆまでの各ベンチマークプログラムを用いたテスト結果は、実装面積を考慮しない理想的（理論的）なマルチポートメモリを有した基準の並列プロセッサの処理時間を１とした場合の実行処理時間比で示す。なお、並列プロセッサは、４個の命令を同時に実行可能なＭＩＰＳ互換の命令セットを有し、基準の並列プロセッサは１２個のマルチポートを有するレジスタファイルを用いた。
【００５０】
図７の実験結果でも理解できるように、実施形態の並列プロセッサの処理速度は、アクセス調整を実施しない従来の並列プロセッサにおける処理速度に比較して大幅に向上できることは勿論のこと、理想的（理論的）なマルチポートメモリを有した基準の並列プロセッサの処理速度とほぼ同等を確保できる。
【００５１】
（第２実施形態）
図８は、本発明の第２実施形態に係わる並列プロセッサの概略構成を示すブロック図である。この第２実施形態の並列プロセッサは、１クロック周期で外部から入力されたＮ個の命令２０を同時に実行する機能を有する。
【００５２】
命令分類部２１は、入力されたＮ個の各命令２０をアクセス命令２２と演算命令２３とに分類して、それぞれアクセス命令実行部２４と演算命令実行部２５とに送出する。アクセス命令実行部２４は、入力された最大Ｎ個の各アクセス命令２２に基づいてマルチバンクメモリファイル２６に対するバンクアドレスＡＢｎ、バンク内のレジスタアドレスＡｎを指定したアクセスを実施する。演算命令実行部２５は、入力された最大Ｎ個の各演算命令２３を演算ユニット（ＡＬＵ）２７に対して実行する。アクセス結果及び演算結果はデータバス２８へ出力される。
【００５３】
マルチバンクレジスタファイル２６には、図９に示すように１番からＮ番までのＮ個のポート２９が設けられている。各ポート２９には、一つのアクセス命令２２の実行に必要なｍビットのバンクアドレスＡＢｎ、バンク内のレジスタアドレスＡｎ、読出し又は書込まれるデータＤｎが入出力される。
【００５４】
前記アクセス命令実行部２４は、前述したように、マルチバンクレジスタファイル２６の各バンク内の各レジスタに対して１番からＮ番までのＮ個のポート２９を介して１クロック周期で命令分類部２１からら入力される最大Ｎ個のアクセス命令２２を同時に実行するが、複数のアクセス命令２２が同一バンクを指定するとアクセス競合が発生する。この場合、アクセス命令実行部２４は、アクセス競合を回避するために、競合するアクセス命令２２のうちの選択されたアクセス命令２２以外のアクセス命令２２をアクセス禁止とし、次のクロック周期に同一のアクセス命令２２をマルチバンクレジスタファイル２６へ送出する。このように、アクセス命令実行部２４はアクセス競合回避機能をも有する。
【００５５】
図１０はマルチバンクレジスタファイル２６の概略構成を示すブロック図である。
このマルチバンクレジスタファイル２６内には、マトリックス状に配設された複数のバンク３０と、１〜Ｎの各ポート２９に入力されたＮ個の各バンクアドレスＡＢｎが指定する行に所属する各バンク３０に行バンク選択信号ＲＳｎを出力するバンク行選択回路３１と、同じく１〜Ｎの各ポート２９に入力されたＮ個の各バンクアドレスＡＢｎが指定する列に所属する各バンク３０に列バンク選択信号ＣＳｎを出力するバンク列選択回路３２とが組込まれている。行バンク選択信号ＲＳｎと列バンク選択信号ＣＳｎとで、各バンクアドレスＡＢｎが指定するそれぞれ１個のバンク３０が動作可能に特定される。
【００５６】
バンク列選択回路３２内に設けられたバンク読出／書込指示回路３３は、各バンク３０に対して、入力された１〜ＮのレジスタアドレスＡｎ、１〜ＮのデータＤｎ、１〜Ｎの読出／書込制御信号Ｒ／Ｗｎをアクセス指示として送出する。しかし、行バンク選択信号ＲＳｎと列バンク選択信号ＣＳｎとで指定されたバンク３０のみが動作可能であるので、バンク読出／書込指示回路３３は、結果的に、行バンク選択信号ＲＳｎと列バンク選択信号ＣＳｎとで指定されたバンク３０に対して該当レジスタに対するアクセス指示を送出する。
【００５７】
したがって、マトリックス状に配設された各バンク３０も、Ｎ個のレジスタアドレスＡｎ、Ｎ個のデータＤｎ、Ｎ個の読出／書込制御信号Ｒ／Ｗｎを入出力するためのＮ組のポートを有する。
【００５８】
図１０において、マトリックス状に配設された各バンク３０は、１ポートメモリ３７とポート数変換回路としての１ポート／Ｎポート変換回路３８とで形成されている。
【００５９】
そして、１ポートメモリ３７は、マトリックス状に配設された複数のレジスタ３９と、バンク読出／書込指示回路３３が１ポート／Ｎポート変換回路３８を介して指定した１個のレジスタアドレスＡが指定する行に所属する各レジスタ３９に行レジスタ選択信号ＲＳを出力するレジスタ行選択回路４０と、バンク読出／書込指示回路３３が１ポート／Ｎポート変換回路３８を介して指定した１個のレジスタアドレスＡが指定する列に所属する各レジスタ３９に列レジスタ選択信号ＣＳを出力するレジスタ列選択回路４１とが組込まれている。したがって、行レジスタ選択信号ＲＳと列レジスタ選択信号ＣＳとでアクセスすべき１個のレジスタ３９が特定される。
【００６０】
レジスタ列選択回路４１内に組込まれたレジスタ読出／書込回路４２は、行レジスタ選択信号ＲＳ及び列レジスタ選択信号ＣＳで指定された１個のレジスタ３９に対するバンク読出／書込指示回路３３が１ポート／Ｎポート変換回路３８を介して指示したアクセスを実行する。
【００６１】
次に、各バンク３０内に設けられた１ポート／Ｎポート変換回路３８について説明する。
この１ポート／Ｎポート変換回路３８は、バンク読出／書込指示回路３３が自己のバンク３０に指定した同一クロック周期で実施する複数のアクセスに対応するＮ組のポートを行レジスタ選択信号ＲＳ及び列レジスタ選択信号ＣＳで指定されたレジスタ３９に対するアクセスに対応する１組のポートに変換する機能を有する。
【００６２】
具体的には、図１１に示すように、この１ポート／Ｎポート変換回路３８は、大きく分けて、バンクアクセス制御回路４３と、アクティブアドレス選択回路４４と、アクティブデータ選択回路４５とで構成されている。
【００６３】
バンクアクセス制御回路４３は、自己のバンク３０に設けられたＮ組のポートに入力されているＮ個の行バンク選択信号ＲＳｎとＮ個の列バンク選択信号ＣＳｎとから自己のバンク３０を指定するポート２９のアドレスポート選択信号ＳＡｎ及び自己のバンク３０が選択されていることを示すバンク選択信号Ｓを作成して出力する。
【００６４】
アクティブアドレス選択回路４４は、自己のバンク３０に設けられたＮ組のポートに入力されているＮ個のレジスタアドレスＡｎのうち、バンクアクセス制御回路４３から出力されたアドレスポート選択信号ＳＡｎが指定する１個のレジスタアドレスＡを選択してレジスタ行選択回路４０とレジスタ列選択回路４１とへ送出する。前記バンク選択信号Ｓもレジスタ行選択回路４０とレジスタ列選択回路４１とへ印加される。
【００６５】
さらに、バンクアクセス制御回路４３は、自己のバンク３０に設けられたＮ組のポートに入力されているＮ個の行バンク選択信号ＲＳｎとＮ個の列バンク選択信号ＣＳｎとから自己のバンク３０を指定するポート２９を指定する読出ポート選択信号ＳＲｎ及び自己のバンク３０を指定するポート２９を指定する書込ポート選択信号ＳＷｎを作成して送出する。さらに、自己のバンク３０に設けられたＮ組のポートに入力されているＮ個の読出／書込制御信号Ｒ／Ｗｎのうち自己のバンク３０（１ポートメモリ３７）を指定した１個の読出／書込制御信号Ｒ／Ｗを抽出してレジスタ読出／書込回路４２へ送出する。
【００６６】
アクティブデータ選択回路４５は、自己のバンク３０に設けられたＮ組のポートに入力されているＮ個のデータＤｎのうち、バンクアクセス制御回路４３から出力された読出ポート選択信号ＳＲｎ及び書込ポート選択信号ＳＷｎが指定する１個のデータＤを選択して、レジスタ読出／書込回路４２に対して入出力させる。
【００６７】
しかして、レジスタ行選択回路４０とレジスタ列選択回路４１は入力された１個のレジスタアドレスＡを用いて１個のレジスタ３９を指定する。また、レジスタ読出／書込回路４２は、入力された１個のデータＤに対して１個の読出／書込制御信号Ｒ／Ｗに基づいて指定された１個のレジスタ３９に対するアクセスを実行する。
【００６８】
したがって、バンク３０を構成する各レジスタ３９は、１個の行レジスタ選択信号ＲＳ、１個の列レジスタ選択信号ＣＳ、１個の読出／書込制御信号Ｒ／Ｗ、１個のデータＤが入出力される１組のポートが設けられているのみである。
【００６９】
このように構成された第２実施形態の並列プロセッサにおいても、１クロック周期で入力されたＮ個のバンクアドレスＡＢとバンク内のレジスタアドレスＡとを指定したアクセス命令２２は、マルチバンクレジスタファイル２６のマトリックス状に配置された複数のバンク３０における各バンク３０内にさらにマトリックス状に形成された各レジスタ３９に対して同一クロック周期内に実行される。
【００７０】
さらに、この第２実施形態の並列プロセッサに組込まれたマルチバンクレジスタファイル２６は、図１０に示すように、各バンク３０、及び各バンク３０を構成する各レジスタ３９を階層的に配列して、行選択回路３１、４０及び列選択回路３２、４１で、バンク３０及びレジスタ３９の選択を実施している。このように階層的に配列したマルチポートを有するメモリ素子を「階層構造型マルチポートメモリ（Ｈｉｅｒａｒｃｈｉｃａｌ  Ｍｕｌｔｉ−ｐｏｒｔ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ＨＭＡメモリ）」と称する。
【００７１】
このように、マルチバンクレジスタファイル２６を階層構造型マルチポートメモリ構造とすることにより、このマルチバンクレジスタファイル２６の必要とする面積を従来の同一記憶容量を有するマルチポートセル方式のマルチバンクレジスタファイルの必要とする面積に比較して大幅に減少できる。
【００７２】
さらに、各バンク３０に１ポート／Ｎポート変換回路３８を組込んで、各バンク３０に設けられたＮ組のポートをこのバンク３０内で実際に１つのレジスタ３９をアクセスするために必要な１組のポートに変換している。したがって、各レジスタ３９には１組のポートのみを設ければよいので、マルチバンクレジスタファイル２６全体のポート数をさらに削減できる。
【００７３】
なお、本発明は上述した図１０に示す第２実施形態の並列プロセッサに組込まれたマルチバンクレジスタファイルに限定されるものではない。バンク３０内の各レジスタ３９を二次元配設せずに、バンク３０内に通常のレジスタアドレスＡ順に配列して、バンク読出／書込指示回路３３の代わりに、バンク読出／書込回路を設ける。そして、このバンク読出／書込回路で、バンク行・列選択回路３１、３２で指定されたバンク３０内のレジスタアドレスＡが指定するレジスタに対するアクセスを実施することも可能である。
【００７４】
さらに、マルチバンクレジスタファイルを一般のクロスバーメモリ構成とすることも可能である。
【００７５】
【発明の効果】
以上説明したように、本発明の並列プロセッサにおいては、入力された機械命令を複数のナノ命令に変換して、このナノ命令の単位で、同時に入力された複数の機械命令に含まれる各ナノ命令相互間の実行タイミングを調整している。
【００７６】
また、マルチバンクレジスタファイルとして、バンク及びレジスタを階層的に配列した階層構造型マルチポートメモリ（ＨＭＡメモリ）を採用している。
【００７７】
したがって、マルチバンクレジスタファイルを組込み可能とし、装置全体の構成を増加することなく、簡単に同時に実行される命令数を増加でき、かつ、高い動作速度を維持せき、さらに製造費を低減できる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係わる並列プロセッサの概略構成を示すブロック図
【図２】同実施形の並列プロセッサに組まれた命令変換部の命令分離処理を示す図
【図３】同実施形の並列プロセッサに組まれた命令変換部の使用レジスタ数拡張処理を示す図
【図４】同実施形の並列プロセッサに組まれたマルチバンキングファイルのバンク構成を示す図
【図５】同実施形の並列プロセッサに組まれたアクセス調整部のアクセス調整処理動作を示す図
【図６】同実施形の並列プロセッサにおける処理の高速化効果を説明するための図
【図７】同実施形の並列プロセッサに対するベンチマークテスト結果を示す図
【図８】本発明の第２実施形態に係わる並列プロセッサの概略構成を示すブロック図
【図９】同実施形の並列プロセッサに組まれたマルチバンキングファイルのポートを示す図
【図１０】同実施形の並列プロセッサに組まれたマルチバンキングファイルの概略構成を示す図
【図１１】同実施形の並列プロセッサのマルチバンキングファイルに組込まれた１ポート／Ｎポート変換回路の構成を示す図
【符号の説明】
１…命令変換部
２…機械命令
３…ナノ命令
３ａ、２２…アクセス命令
３ｂ…演算命令
４…アクセス調整部
５…演算調整部
６、７、１３、１４…実行結果
８、１０…命令実行
９、２６…マルチバンクレジスタファイル
１１、２７…演算ユニット
１２、３０…バンク
１２ａ、３９…レジスタ
１５…実行結果バス
２４…アクセス命令実行部
２９…ポート
３１…バンク行選択回路
３２…バンク列選択回路
３３…バンク読出／書込指示回路
３７…１ポートメモリ
３８…１ポート／Ｎポート変換回路
４０…レジスタ行選択回路
４１…レジスタ列選択回路
４２…レジスタ読出／書込回路
【図１】
0003576148.tif 000002
【図２】
0003576148.tif 000003
【図３】
0003576148.tif 000004
【図４】
0003576148.tif 000005
【図５】
0003576148.tif 000006
【図６】
0003576148.tif 000007
【図７】
0003576148.tif 000008
【図８】
0003576148.tif 000009
【図９】
0003576148.tif 000010
【図１０】
0003576148.tif 000011
【図１１】
0003576148.tif 000012