JP2007052811A - マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法 - Google Patents

マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法 Download PDF

Info

Publication number
JP2007052811A
JP2007052811A JP2006287961A JP2006287961A JP2007052811A JP 2007052811 A JP2007052811 A JP 2007052811A JP 2006287961 A JP2006287961 A JP 2006287961A JP 2006287961 A JP2006287961 A JP 2006287961A JP 2007052811 A JP2007052811 A JP 2007052811A
Authority
JP
Japan
Prior art keywords
instruction
register
bank
processor
register bank
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006287961A
Other languages
English (en)
Other versions
JP4528993B2 (ja
Inventor
Sukenori Matsumoto
祐教 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tops Systems Corp
Original Assignee
Tops Systems Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tops Systems Corp filed Critical Tops Systems Corp
Priority to JP2006287961A priority Critical patent/JP4528993B2/ja
Publication of JP2007052811A publication Critical patent/JP2007052811A/ja
Application granted granted Critical
Publication of JP4528993B2 publication Critical patent/JP4528993B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file

Abstract

【課題】命令長を長くせずに多くのレジスタを扱えて、パイプライン処理においてストールが発生しにくくすることを課題とする。
【解決手段】プロセッサ(100)が、命令デコーダと、演算器(12)と、外部メモリ(19)との間でデータ入出力を行なうメモリアクセス手段(13等)と、該演算器および該メモリアクセス手段からアクセス可能なレジスタをそれぞれ備えた複数のレジスタバンク(11)と、レジスタバンク指定命令に基づく該命令デコーダからのレジスタバンク指定制御信号により、該演算器が該レジスタバンクのいずれにアクセスするか、および、該メモリアクセス手段が該レジスタバンクのいずれにアクセスするかを制御するものであるバンクスイッチ手段とを備えている。またこのプロセッサ(100)を用いたマルチプロセッサシステムや、プロセッサ(100)の制御方法を提供する。
【選択図】図1

Description

本発明は、コンピュータ機器の演算装置であるCPU(中央演算装置)やDSP(デジタルシグナルプロセッサ)などのプロセッサのアーキテクチャに関し、特に命令セットアーキテクチャを実装するマイクロプロセッサ及びその制御方法に関する。
様々な機器に用いられているプロセッサ、特にマイクロプロセッサは、近年の半導体微細加工技術の進歩を背景に、クロック周波数を高める等の手法によって演算処理能力の向上が図られている。一方、主記憶装置として働く外部メモリとプロセッサの間の転送速度も各種の技術を利用することにより向上しているが、接続ピンの数やメモリの応答速度などの物理的な制約があり、プロセッサの性能向上には追いついていない。このため、プロセッサは、メモリへのアクセス時には、内部レジスタへのアクセスに比べて余分なクロック数(通常、レイテンシーと呼ばれている)を消費してしまう。プロセッサの内部バスとメモリ間のバスとの間にあるこのようなデータ転送バンド幅のギャップを埋めるために、最近のプロセッサではキャッシュメモリがよく用いられている。
また、複数のプロセッサを連携動作させて、全体として高い演算処理能力を得る手法として、マルチプロセッサシステムが知られている。このマルチプロセッサシステムにおいては、各プロセッサの演算を連携させるために、それぞれに内蔵されるキャッシュメモリ間のデータにコヒーレンシー(一貫性)を保証しなければならない。
キャッシュメモリをそれぞれ備えた複数のプロセッサによりマルチプロセッサシステムを構築する場合には、各プロセッサのメモリへのアクセスを他のプロセッサが監視するスヌーピング(バススヌープ)によって上記コヒーレンシーを保証する方法が知られている。しかし、このスヌーピングは、プロセッサとメモリ間のバスのデータ転送バンド幅を低下させてしまう作用を有している。したがって、マルチプロセッサシステムを用いても、使用するプロセッサ数に比例してシステム全体での演算性能を向上させることは困難である。
マルチプロセッサシステムでは、プロセッサ間でメモリを共有する共有メモリシステムを用いてデータのコヒーレンシーを保証する方法もある。しかし共有メモリシステムでは、共有メモリとプロセッサ間のバスのデータ転送バンド幅が、マルチプロセッサシステムの性能を制限する要因となる。
プロセッサ単体での演算処理能力の向上を並列処理を用いて高める手法として、スーパーパイプラインやスーパースケーラ、VLIW(Very Long Instruction Word)といった方法が知られている。スーパーパイプラインやスーパースケーラはインプリメンテーション(実装)レベルで並列処理を行なうことにより演算処理能力を向上させる手法である。VLIWは、内部に演算器を複数備えたプロセッサにおいて命令レベルで並列処理を行なうことにより、演算処理能力を向上させる手法である。いずれの並列処理方法においても、本来順次実行するプログラムを並列して処理させるために、必然的に、命令、オペランド、制御といった面からの依存関係が避けられない。例えば、メモリからレジスタへのデータ転送命令であるロード命令と、そのデータがロードされている当該レジスタをオペランドとする演算命令との間には、強い依存関係が生じてしまう。このロード命令においては、キャッシュにロードされるデータが無い場合(キャッシュミスが発生した場合)には外部メモリへのアクセスを伴う。この例のように、前述の依存関係は大きなレイテンシーを伴う可能性がある。その場合には、命令実行パイプラインがストールし、並列処理本来の演算性能が得られなくなってしまうという問題がある。
この並列処理の問題を解決するためには、実行する命令を動的にスケジューリングするリオーダリングバッファを用いたダイナミックスケジューリングが用いられる場合もある。しかし、この場合であっても、その効果があるのは、一般的には、10数命令の範囲に限定されてしまう。したがって、キャッシュミスが発生した場合には、命令実行パイプラインがストールを埋め切れず、並列処理の利点が十分には発揮されない。また、ダイナミックスケジューリングにはハードウエアが複雑で回路規模が膨大になってしまうという問題もある。
プロセッサが所望のソフトウエアを実行する際に必要とする変数は、プロセッサ内のレジスタあるいはシステム上のメモリに置かれる。メモリへのアクセスは、前述のキャッシュミスの場合はもとより、キャッシュメモリにアクセスする変数が存在している場合であっても、レジスタへのアクセスに比べて遅い。
1つのプログラムに必要とされる変数の数は、プログラムに依存するものの、一般的には、数十から百数十程度である。従来のプロセッサでは、物理的な実装上の制限や、プロセッサを動作させる命令セットアーキテクチャ上での命令長の制限から、8〜32個のレジスタを実装する例が多い。例えば、レジスタを32個用いて演算の対象を2つ用いる2オペランドの命令セットアーキテクチャとした場合には、一命令を構成するビットのうち、各レジスタやオペランドの特定に5ビット、計10ビットを必要とする。同じくレジスタを32個用いて演算結果を演算の対象と異なるレジスタに格納する3オペランドの場合には、オペランドの特定に計15ビットを必要とする。これらに、演算のタイプなどを示すオペコードを示すビットを加えたものが命令長となる。
ここで、命令長が長くなるとプログラム用のメモリサイズ、およびメモリとプロセッサの間においてプログラムの実行に用いるバスバンド幅をともに増やす必要が生じる。したがって、一般に、プロセッサ内部のインプリメンテーションの点からは、命令長を短くすることが演算性能を向上させるために有効である。
一方、レジスタ数を増やすと、キャッシュメモリや外部メモリへのアクセスを減らすことが可能となる。さらに、外部メモリとレジスタとのデータ転送を行なうロード命令やストア命令を削減することができるので、プログラムのステップの数が減少する。これらから、扱えるレジスタ数を増加させると、演算性能の低下が防止できるという側面もあるが、レジスタを指定するために、命令長は長くなってしまう。
実際のプロセッサのアーキテクチャにおいては、これらの相反する関係と使用目的等を考慮して、命令長が適宜設定されている。典型的には、レジスタ数を少なく設定する場合には、命令長は16ビットとされ、レジスタ数を多く設定する場合には、命令長は32ビットとされる。
また、命令セット上のレジスタ数はそのままで仮想的なレジスタ数を増やすテクニックとして「レジスタリネーミング」が知られている。
さらに、レジスタの有効活用を目的として、個々のレジスタごとに切り換えを行なう手法が、例えば特許文献1に開示されている。
特開平7−84785号公報
本発明は、プロセッサ単体で使用する際には、命令長を可能な限り短くして演算性能を高めつつ、メモリアクセスによるレイテンシーの発生を抑えることができるプロセッサアーキテクチャを提供することにより、上記問題の少なくともいくつかを解決することを課題とする。
これに加えて、本発明は、マルチプロセッサ構成においても、メモリのコヒーレンシーを保証しつつ、プロセッサとメモリ間のデータ転送バンド幅がスヌーピングによって低下することを防止することができるプロセッサアーキテクチャを提供することにより、上記問題の少なくともいくつかを解決することを課題とする。
本発明では、プロセッサ内のレジスタが複数のレジスタバンクに構成される。そして、そのプロセッサに備えられた演算装置およびメモリアクセス装置が、それぞれ異なる上記レジスタバンクに動的に接続される機構を実現することにより、上記プロセッサアーキテクチャを実現する。本発明では、全般に、レジスタバンクのスイッチ手段と、レジスタバンク設定命令、またはレジスタバンク設定修飾命令などからなるレジスタバンク指定命令とを用いることにより、例えば16ビット等の短い命令長で、数多くのレジスタを扱うことを可能にしている。
具体的には、本発明では、レジスタバンク指定命令と通常の命令とを含む命令をデコードして制御信号を生成する命令デコーダと、該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、該演算器の信号に基づいて外部メモリとの間でデータ入出力を行なうメモリアクセス手段と、該演算器および該メモリアクセス手段からアクセス可能なレジスタをそれぞれ備えた複数のレジスタバンクと、前記レジスタバンク指定命令に基づいて前記命令デコーダが生成するレジスタバンク指定制御信号により制御されるバンクスイッチ手段であって、該演算器がどのレジスタバンクにアクセスするかを定め、かつ、該メモリアクセス手段がどのレジスタバンクにアクセスするかを定めるバンクスイッチ手段とを備えてなり、該レジスタバンク指定命令は、該バンクスイッチ手段を制御することにより、該レジスタバンク指定命令より後にある通常の命令をオペランドを用いて実行するために、該オペランドが用いるレジスタに割り当てるレジスタバンクを切り換える命令である、マルチバンクレジスタを有するプロセッサが提供される。
命令デコーダは、本プロセッサの外部に備えられている命令記憶装置からフェッチされた命令を受け取りデコードして制御信号を生成する。また、メモリアクセス手段とは、外部メモリとのアクセスを提供する手段であり、外部バス、キャッシュメモリ、アドレス生成器等の当分野で周知の手段によってメモリとプロセッサのアクセスを提供し、データの転送が可能な任意の技術とすることができる。このメモリアクセス手段は、プロセッサのレジスタと外部メモリとのアクセスを提供する。
それぞれのレジスタバンクは、適当な単位のバンクにまとめられている複数のレジスタを含んでいる。各レジスタバンクは、例えば適当なビット数の数字であるようなバンク識別子によって区別される。本発明では複数のレジスタバンクが含まれているプロセッサが用いられるため、任意のレジスタを特定するには、バンク識別子とレジスタアドレスとを指定する。しかし、本プロセッサで実行される各命令においては、詳細を後述するように、バンクを切り換えるためのバンク設定命令やバンク設定修飾命令を用いることにより、それら以外の命令(通常の命令)においては、バンク識別子を指定する必要が無い。
レジスタバンク指定命令は、明示的にバンクを指定するバンク識別子を何らかの形で含むものである。例えば、このレジスタバンク指定命令は、オペランド数2の命令のソースオペランドやデスティネーションオペランドのバンクを指定するバンク識別子をオペランドとして持つような命令(本明細書において「バンク設定命令」という)とすることができる。このレジスタバンク指定命令は、例えば汎用レジスタのあるもの、といった個々のレジスタのみを指定するものではなく、オペコードと共に用いられるソースオペランドやデスティネーションオペランドといったオペランドの位置ごとにレジスタバンクの割り当てを指定するものとすることができる。このレジスタバンク指定命令は命令デコーダによりレジスタバンク指定制御信号となって演算器を動作させる。
本プロセッサで実行される命令のうち、レジスタバンク指定命令以外のものは、バンク識別子を含まない。このような命令をレジスタバンク指定命令と区別して、「通常の命令」と呼ぶ。通常の命令は、オペランドを用いるものとすることができる。本プロセッサで実行される通常の命令のオペランドには、基本的には、その命令に到達するまでにレジスタバンク指定命令によって明示的に指定されたレジスタバンクが割り当てられているものとすることができる。例えば、ソースオペランドにはバンク0、デスティネーションオペランドにはバンク3、というように割り当てられる。このため、通常の命令の命令長は、レジスタバンクを用いるからといって特に長くする必要はない。
このレジスタバンクの割り当ては、バンクスイッチ手段によって実現される。バンクスイッチ手段は、レジスタバンク指定命令に基づくレジスタバンク指定制御命令によって制御される。このバンクスイッチ手段は、例えば、それ以降の全ての命令に用いられるソースオペランドやデスティネーションオペランドのバンクを指定するレジスタである。この指定は、オペランドごとに変更しても良く、同じであっても良い。なお、レジスタバンク指定命令が明示的に含まれていない際のバンクスイッチ手段の動作は、適当な既定値に基づいているものとすることができる。また、レジスタバンク指定命令は、サブルーチン単位でレジスタバンクを指定するような命令には限られない。
本発明のようにして、必要に応じて付加的な命令による切り換えを行って複数のレジスタバンクを用いると、通常の命令に用いる命令長を短く保ったまま、多数のレジスタを使用することができる。このようにして多数のレジスタを使用できるために、これまでキャッシュメモリを用いて行なわれてきたように、データの局所性を利用したメモリアクセス頻度の抑制も可能になる。しかも、キャッシュメモリに比べてレジスタのほうが転送バンド幅を大きくとることができる。レジスタをより多く利用した方が、キャッシュメモリを多用するより高速な演算が可能となる。
本発明において、前記バンクスイッチ手段は、前記レジスタバンク指定制御信号により制御され、前記演算器が前記レジスタバンクのいずれかへアクセスするかを定めるとともに、前記メモリアクセス手段が他のいずれかの前記レジスタバンクへアクセスするかを定めるものであり、前記演算器によるレジスタへのアクセスと前記メモリアクセス手段によるレジスタへのアクセスとの同時アクセスが可能とすることができる。
この構成により、演算装置に接続されるレジスタバンクと異なるレジスタバンクをメモリアクセス装置に接続することができる。このように構成すれば、演算命令とメモリアクセス命令によるメモリとレジスタ間のデータ転送を並行して行うことが可能となる。プロセッサがあるレジスタバンクのレジスタを用いる演算の処理中に、別のレジスタバンクに対するメモリからのデータを読込んだり、演算結果が格納されているレジスタバンク内のデータをメモリに格納する、という処理をソフトウエアから明示的に行うことができる。その結果、ロード命令と演算命令とのデータの依存関係に起因するパイプラインのストールによるプロセッサの処理性能の低下を、簡便なハードウエア構成で容易に押さえることができる。なお、メモリアクセス手段は命令デコーダからの命令に基づいて外部メモリとレジスタとのアクセスを提供するものとすることができる。
本発明のプロセッサにおいて、前記レジスタバンク指定命令は、レジスタバンク設定修飾命令であり、前記レジスタバンク設定修飾命令は、前記バンクスイッチ手段を制御することにより、該レジスタバンク設定修飾命令の直後にある通常の命令をオペランドを用いて実行するために、該直後にある通常の命令の該オペランドについてのレジスタに割り当てるレジスタバンクを切り換える命令とすることができる。
この場合、レジスタバンク設定修飾命令がそれに後続する直後の命令のみのオペランドについてのレジスタに割り当てるレジスタバンクを切り換える。つまり、レジスタバンク設定修飾命令とは、直後の命令にのみ影響する修飾する作用を有するようなレジスタバンクを指定するための命令である。このレジスタバンク設定修飾命令は、レジスタバンク設定プリフィクスとも呼ぶ。レジスタバンク設定修飾命令により、プログラム中で柔軟にレジスタバンクの指定をすることが可能となり、命令長を抑えつつプログラミングの自由度を確保することができる。
本発明では、前記レジスタバンク設定修飾命令が直前にある場合には命令長が通常の命令の命令長から延長されて、該レジスタバンク設定修飾命令と直後の該通常の命令とが該延長された命令長を有する一命令になるようにするものとできる。ここで、レジスタバンク指定命令がレジスタバンク設定修飾命令であるときには、そのレジスタバンク設定修飾命令と通常の命令とが組み合わせて構成されて命令の一単位となる。レジスタバンク設定修飾命令のみでは一単位にはならない。なぜなら、レジスタバンク設定修飾命令は直後にある通常の命令のオペランドについてのレジスタを修飾するもので、それのみでは実行可能な命令ではないからである。
命令長を延長することとは、レジスタバンク設定修飾命令の直後の命令の動作を、そのレジスタバンク設定修飾命令に従って修飾して実行する動作を実行可能な一命令として認識させることの出来る命令セットアーキテクチャを構成すること、あるいはそういう命令セットアーキテクチャをデコードし得るデコーダを構成することであり、単に形式的に命令の区切りを変更するだけではない。また、アセンブラコードを一行に記載することと直接に対応するものでもない。
これら本発明のプロセッサにおいて、前記レジスタバンク指定命令がレジスタバンク設定命令であり、該レジスタバンク設定命令より後にある通常の命令においては、明示的なレジスタバンクの指定を必要とせずに、前記オペランドが用いるレジスタに対して該レジスタバンク指定命令に基づくレジスタバンクの割り当てが適用されることができる。レジスタバンク設定命令は、レジスタバンク指定命令の一種であり、その後の通常の命令におけるオペランドのバンクの割り当てを指定する。それより後にある通常の命令においては、レジスタバンクを特に指定することなく、レジスタバンク設定命令によって割り当てられたレジスタバンクが用いられる。
このようなレジスタバンク設定命令を用いると、通常の命令の命令長を、レジスタがレジスタバンクに構成されていないプロセッサアーキテクチャと同様の短い命令長としておいて、必要に応じてレジスタバンク設定命令を用いることができる。これにより、複数の命令から構成されるプログラム全体の平均命令長を短く保ちつつ、多数のレジスタを扱うことが可能となる。
本発明の別の態様として、命令記憶手段と、第1のプロセッサと、第2のプロセッサと、外部メモリとを少なくとも備えてなるマルチプロセッサシステムであって、該第1のプロセッサおよび該第2のプロセッサは、該命令記憶手段からのレジスタバンク指定命令と、通常の命令とを含む命令をデコードして制御信号を生成する命令デコーダと、該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、該演算器の信号に基づいて該外部メモリとの間でデータ入出力を行なうメモリアクセス手段と、該演算器および該メモリアクセス手段からアクセス可能なレジスタをそれぞれ備えた複数のレジスタバンクと、前記レジスタバンク指定命令に基づいて前記命令デコーダが生成するレジスタバンク指定制御信号により制御されるバンクスイッチ手段であって、該演算器がどのレジスタバンクにアクセスするかを定め、かつ、該メモリアクセス手段がどのレジスタバンクにアクセスするかを定めるバンクスイッチ手段とをそれぞれ備えてなり、該レジスタバンク指定命令は、該バンクスイッチ手段を制御することにより、該レジスタバンク指定命令より後にある通常の命令をオペランドを用いて実行するために、該オペランドが用いるレジスタに割り当てるレジスタバンクを切り換える命令であり、該外部メモリは、該第1のプロセッサの該メモリアクセス手段と、該第2のプロセッサの該メモリアクセス手段とのいずれからもアクセス可能に接続されている、マルチプロセッサシステムが提供される。
この外部メモリは、マルチプロセッサシステムを構成する少なくとも二つ含まれるプロセッサからアクセスされる。これにより、例えば、SMP(Symmetrical Multiprocessor)構成のマルチプロセッサシステム、CPUコアとDSPコアとを連携させるマルチプロセッサの構成を実現することができる。本特徴により、マルチプロセッサシステムを構成する各プロセッサにおいてレジスタバンクを用いることが可能となる。プロセッサとメモリ間のバスによるデータ転送バンド幅のギャップを数多くのローカルレジスタで補うことを可能としている。また、各バンクのレジスタは、ソフトウエアから観測および制御可能であるため、データのコヒーレンシーの問題は発生しない。従って、プロセッサとメモリ間のバスのデータ転送バンド幅は、スヌーピングのために失われることは無い。このため、SMP構成でプロセッサ数を増やして演算性能を向上させることや、特定目的の信号処理用演算回路を内蔵するDSPとCPUとの連携処理の能力を高めることが可能となる。
このようなマルチプロセッサシステムにおいて、前記バンクスイッチ手段は、前記レジスタバンク指定制御信号により制御され、前記演算器が前記レジスタバンクのいずれかへアクセスするかを定めるとともに、前記メモリアクセス手段が他のいずれかの前記レジスタバンクへアクセスするかを定めるものであり、前記演算器によるレジスタへのアクセスと前記メモリアクセス手段によるレジスタへのアクセスとの同時アクセスが可能であるものとすることができる。
同時アクセスを用いると、マルチプロセッサシステムを構成する各プロセッサの処理能力が向上するだけでなく、複数のプロセッサを連携させて演算処理を行なう場合にしばしば問題となる、プロセッサ間のデータ転送に起因するストールが減少する。
本発明では、このようなマルチプロセッサシステムであって、前記外部メモリにおいて前記第1のプロセッサがアクセスするメモリ領域と、前記第2のプロセッサがアクセスするメモリ領域との少なくとも一部が共有されているものとすることができる。
いわゆる共有メモリを用いた場合であっても、レジスタ数を増やすことにより、データの局所性を用いたデータのキャッシングと同様の効果で、プロセッサとメモリ間に必要とされるデータ転送を少なくすることができる。これにより、マルチプロセッサシステムで共有メモリを用いた場合であっても、メモリバンクを用いない場合に比べて演算性能が向上する。
本発明の他の態様として、レジスタバンク指定命令と通常の命令とを含む命令をデコードして制御信号を生成する命令デコーダと、該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、該演算器の信号に基づいて外部メモリとの間でデータ入出力を行なうメモリアクセス手段と、該演算器および該メモリアクセス手段からアクセス可能なレジスタをそれぞれ備えた複数のレジスタバンクと、該演算器および該メモリアクセス手段がそれぞれどのレジスタバンクにアクセスするかを定めるバンクスイッチ手段とを備えてなるプロセッサの制御方法であって、該命令デコーダが該レジスタバンク指定命令に基づいてレジスタバンク指定制御信号を生成するステップと、該レジスタバンク指定制御信号により該バンクスイッチ手段を制御することにより、該レジスタバンク指定命令より後にある通常の命令のオペランドが用いるレジスタに割り当てるレジスタバンクを切り換えて、該演算器がどのレジスタバンクにアクセスするかを制御するステップと、該レジスタバンク指定制御信号により該バンクスイッチ手段を制御することにより、該オペランドが用いるレジスタに割り当てるレジスタバンクを切り換えて、該メモリアクセス手段がどのレジスタバンクにアクセスするかを制御するステップと、該通常の命令をオペランドを用いて実行するステップとを含むマルチバンクレジスタを有するプロセッサの制御方法が提供される。
本発明のプロセッサは、レジスタバンク指定制御信号により、演算器やメモリアクセス手段がアクセスするレジスタバンクを切り換え、その命令を実行する。これを適切に行なうには、上記各ステップを含む制御方法を行なうことができる。これにより、その後の命令のオペランドのレジスタに割り当てられるレジスタバンクが定められるので、このような制御方法によって命令長を短く保って多くのレジスタを扱うことが可能となる。
なお、上記の各ステップは、必ずしもこの順序を保って行なう必要はない。プログラムの各命令の配列等の結果として、様々な順序で実行されることができる。また、同時に行なわれるステップがあったり、各ステップの実行頻度が大きく異なっていても良い。
この制御方法において、該通常の命令を、オペランドを用いて実行する前記ステップが、あるレジスタバンクのレジスタへの前記演算器によるアクセスと、他のレジスタバンクのレジスタへの前記メモリアクセス手段によるアクセスとが同時に行なわれるステップを含むものとすることができる。
演算器があるレジスタバンクにアクセスする際に、メモリアクセス手段は、他のレジスタバンクにアクセスすることができる。これらのアクセスはともに命令の実行ステップに含まれている。この実行ステップの範囲は、例えば、プロセッサが動作するクロックを単位として、通常の命令を実行するのに要する最初のクロックから最後のクロックまでというように、時間によって定めることが出来る。この範囲において、演算器とメモリアクセス手段は、別々のレジスタバンクのそれぞれが用いるレジスタに並行してアクセスすることができる。従来のプロセッサにおいては、この演算器がレジスタにアクセスすることと、メモリにアクセスすることとを並行して行なうために、マルチポートのレジスタファイルを用いる必要があった。しかし、本発明の特徴であるレジスタをバンクに分けることによって、通常のレジスタファイルでこのように並行にアクセスすることが可能となる。これにより、メモリアクセスのレイテンシーが命令実行を一時停止させる時間においても他の演算を行なうことが可能となり、演算処理能力が向上する。また、パイプライン処理のストールの頻度や時間が減少する。
本発明のプロセッサの制御方法において、前記レジスタバンク指定命令は、レジスタバンク設定修飾命令であり、前記レジスタバンク設定修飾命令は、前記バンクスイッチ手段を制御することにより、該レジスタバンク設定修飾命令の直後にある通常の命令をオペランドを用いて実行するために、該直後にある通常の命令の該オペランドについての該オペランドのレジスタに割り当てるレジスタバンクを切り換える命令とすることができる。
レジスタバンク設定修飾命令は、直後の命令にのみ影響する修飾する作用を有するようなレジスタバンクを指定するための前述した命令である。プロセッサの制御方法においても、レジスタバンク設定修飾命令により、プログラム中で柔軟にレジスタバンクの指定をすることが可能となり、命令長を抑えつつプログラミングの自由度を確保することができる。
本発明のプロセッサの制御方法は、前記レジスタバンク設定修飾命令が直前にある場合には命令長が通常の命令の命令長から延長されて、該レジスタバンク設定修飾命令と直後の該通常の命令とが該延長された命令長を有する一命令になるものであってもよい。
また、この制御方法において、前記レジスタバンク指定命令がレジスタバンク設定命令であり、前記レジスタバンク指定命令より後にある通常の命令においては、明示的なレジスタバンクの指定を必要とせずに、前記オペランドが用いるレジスタに対して該レジスタバンク指定命令に基づくレジスタバンクの割り当てが適用される制御方法が提供される。
レジスタバンク指定命令を有することで、通常の命令にはバンク識別子を含めずに、短い命令長を保つことが可能となる。レジスタバンク指定命令もこの命令長に合わせることで、アーキテクチャ全体の最大命令長を短く保って多くのレジスタを取り扱うことが可能となる。
本発明のプロセッサの制御方法は、別の態様として、判定条件によって後にある命令を実行するかしないかの動作を制御する条件付実行切り換え修飾命令を有する制御方法とすることができる。
この条件付実行切り換え修飾命令とは、コンディショナルエグゼキューションプリフィクスということもある。この条件付実行切り替え修飾命令とは、分岐命令を伴わずに、判定条件に応じてその後の命令を実行するかしないかを切り換えることの出来る修飾命令(プリフィクス)である。この修飾命令を用いると、プログラム自体の分岐を削減することができ、並列処理時の分岐命令に伴うストールを回避できる効果がある。
また、本発明のプロセッサの制御方法は、レジスタバンク指定命令と、前記条件付実行切り換え修飾命令とを用いる制御方法とすることができる。
コンディショナルエグゼキューションプリフィクスと本発明のレジスタバンク指定命令を組み合わせて用いると、ほとんどストールなく並列処理することが出来るプログラムを記述することが出来るので、命令長を抑えつつ、処理速度が速いプロセッサを実現することが出来る。
さらに、本発明の制御方法でレジスタバンク指定修飾命令や条件付実行切り換え修飾命令は、命令デコーダにより実行される命令を先読みするプリフィクスデコーダによってデコードされ、該修飾命令に基づいて該プリフィクスデコーダが生成する命令デコーダ制御信号に応じて、該命令デコーダのデコード動作が変更されるものとすることが出来る。各修飾命令はそれ自身のみでは命令デコーダが命令として認識する一命令を構成するものではない。先読みした修飾命令がその修飾命令の直後の命令と組み合わされて一命令として命令の実行ステップを行なえば、命令の実行ステップを増やさずに目的とする動作が可能となる。この動作は、命令を先読みするプリフィクスデコーダを用いることで適切に実行することが出来る。
なお、本出願全体を通じて、「同時」という表現を用いているが、これは、コンピュータ分野で通常用いられるクロックパルスによる時刻の単位や数クロックからなるステップにおいて実質的に同時刻といい得る範囲内で2以上の事象が起きたり重なったりしているという意味である。ずれたタイミングで行なわれても次のクロックパルスまでに対象となっている二つの事象が行われること、あるステップ開始から終了までに対象となっている二つの事象が起きて終了すること、対象となっている事象同士の期間に重なりがあること、などが含まれる。これらの意味で両事象が実質的に同時であると認められれば「同時」に該当するものとする。
[アーキテクチャの実施の形態]
以下、図面を参照して本発明の実施の形態を説明する。
図1に本発明のプロセッサの概略を示す。演算器が使用するレジスタは、本発明では、例えばバンク0からバンクn−1までのn個のレジスタバンクと呼ばれる複数の単位にまとめられている。このレジスタバンクのいずれのバンクであるかを指定するには、バンク識別子を用いる。バンク識別子は適当なビット数を有している数字であり、例えば、nを表現するのに十分なビット数を有している。プロセッサ内にある任意のレジスタを特定するには、バンク識別子とレジスタアドレスとを指定する。
演算器は、命令デコーダ(図示せず)によってデコードされた命令に基づいて演算を実行する。この命令には、大別して2種類の命令が含まれている。
命令の第1の種類は、通常のプロセッサにおける命令と同様の命令である。例えば、外部メモリからデータをロードするロード命令(ニーモニック:LD)、加算を行なう加算(ADD)や減算(SUB)等、プロセッサの分野で周知の命令が含まれる。本明細書ではこの命令を「通常の命令」と呼ぶ。
命令の第2の種類は、アクセスするレジスタバンクを切り換える為の命令である。これらは、本発明に特有の命令であり、レジスタバンク指定命令と呼んでいる。この命令によって、それ以降の通常の命令に基づいて演算器がアクセスするレジスタバンクがいずれであるか、を決定することができる。例えば、プロセッサのアーキテクチャがオペランドを2つ用いるものである場合において、第1のオペランドと第2のオペランドがいずれのレジスタをアクセスするものであるかを独立して指定することができる。このレジスタバンクを切り換えるためのレジスタバンク指定命令は、特にその形式を問うものではない。通常のストアードプログラム方式の命令として、例えば、明示的なバンク識別子をオペランドとして有する命令(バンク設定命令)や、直後に後続する命令のオペランドが示すバンクを切り換えるプリフィクス(バンク設定修飾命令)とすることもできる。
このバンク切り換えのためのアセンブラコードにおける命令の例を図2に示す。行202は、バンク設定命令の一つであり、それ以降のプログラムで用いるバンクを指定するバンクセット命令(ニーモニック:BS)である。このバンクセット命令の第1および第2オペランドであるB0およびB1は、それぞれバンク0とバンク1を表わす。つまり、行202は、以降のプログラムにおいて、第1オペランド(デスティネーションオペランド)を「バンク0」とし、かつ、第2オペランド(ソースオペランド)を「バンク1」に設定する命令である。このように、行202に例示されるバンクセット命令は、このニーモニックBSに対応するオペコードと、上記オペランドによって構成される命令である。このバンクセット命令を代表とするバンク設定命令は、次にバンク設定命令が明示的に指定されるまでのレジスタバンクを割り当てる。なお、バンク設定命令が明示的にプログラムに現れるまでの命令行においてどのようなレジスタバンクの設定が行なわれるかは任意である。バンクが不定であるとしてそのような命令を受け付けないようにすること、バンクに何らかの既定値を割り当てるたり(例えば全てバンク0とする)、全てのバンクに対して並列して処理することや、デスティネーションオペランドとソースオペランドをそれぞれ別に割り当てること、などが可能である。
図2の行204は、直後に後続する命令に対してのみ有効なバンク設定プリフィクス(ニーモニック:BP)である。この例に記載のバンク設定プリフィクスは、オペランドとしてではなく、オペコードそれ自体にバンク識別子を内包している。バンク設定プリフィクス「BP10」は、その直後に後続する命令(行206)にのみ影響し、デスティネーションオペランドをバンク1に、ソースオペランドをバンク0にする命令である。つまり、i,jをバンク識別子を表わす添え字とすると、「BPij」は、後続する命令のデスティネーションオペランドをバンクiに、ソースオペランドをバンクjに設定する。もちろん、前述のバンクセット命令のように、オペコードと、バンク識別子を表わすオペランドとを用いるようなものであって直後の命令行のみに影響するものでも良い。このバンク設定プリフィクスは、直後の命令にしか影響しないため、前述のバンク設定命令で指定されたバンクの割り当てを一時的にのみ上書きする。そして、バンク設定プリフィクスが影響しなくなる命令行(行208)では、バンク指定命令の指定が再び有効となる。
なお、バンク設定命令においては、その時点でのバンクの設定を保持しているバンクセレクトレジスタ(図示せず)というレジスタを用意しておいて、B0およびB1をそれらのレジスタとすることができる。そしてバンクセレクトレジスタの値は、明示的な命令によってプログラムの指定により参照することが可能である。バクセレクトレジスタの内容は、例えばサブルーチン構成のプログラムにおいては、グローバル変数としてサブルーチン間で共有されていても、ローカル変数としてサブルーチンごとに書き換えられても良い。ローカル変数である場合には、適当なデータ転送命令によって、メモリバンクに構成されたいずれかの汎用レジスタや外部メモリ等に書き出して保持されることができる。本発明のアーキテクチャにおいては、この転送を実現する命令を含んでいることができる。
図3に、図2に示したプログラムにおけるレジスタバンク指定命令の動作を模式的に示す。行206の命令(ADD)は、直前の行204におけるバンク設定プリフィクスBP10の影響を受けるため、ソースオペランドとしてバンク1にあるR1を用い、デスティネーションオペランドとしてバンク0にあるR21を用いて、R1とR21の和の結果をR21に書き戻す。行208の命令(SUB)は、行202におけるバンク設定命令で指定されているように、ソースオペランドとしてバンク0にあるR2を用い、デスティネーションオペランドとしてバンク1にあるR19を用いて、R2からR19を減算してその結果をR19に書き戻す。行208には、行204のバンク設定プリフィクスは影響しない。なお、図3ではソースオペランドを示す「ソースレジスターバンク」と「デスティネーションレジスターバンク」とを理解のために図の左右に分けて記載しているが、同じレジスタ識別子のレジスタバンクは、同じレジスタバンクを指し示しているものとすることができる。
以上のように、バンク指定命令を用いて、一連の命令のシーケンスから構成される任意のプログラムにおいて、少ない命令数でソースオペランドやデスティネーションオペランドのポイントするバンクを切り換えることが可能となる。また、直後の命令にのみ有効なバンク設定プリフィクス等を用いることで、柔軟にバンクを切り換えることが可能となる。
また、オペランドが2つの2オペランド命令である場合を例としているが、オペランドが1つのみの場合にはデスティネーションオペランドのみを利用することができる。また、オペランドを3つ用いる3オペランドのアーキテクチャであっても同様にバンク設定命令やバンク設定プリフィクスを定義することが可能である。
このようにして切り換えられるバンクは、図1における演算器からはアクセスするバンクを切り換えることにより、また、外部メモリとはメモリアクセス手段であるデータ転送装置13、内部バス14、外部バス15によってアクセスすることができる。データ転送装置13の動作は、命令に基づく制御信号によって変更することができる。
次に、本発明の命令長について説明する。以下、16ビットを特に1ワードと呼ぶことがある。
図4に本発明の命令構成をビット配列にして示す。図4の通常の命令402とは、例えば、図2に説明した加算(ADD)や減算(SUB)等の命令であり、先に第1の種類の命令として説明した通常の命令であり、図2における行208に対応している。例えば、この命令412は、8ビットのオペコードと各4ビットの二つのオペランドによって構成され、16ビットの命令長を有している。
また、図4のバンク設定修飾つき命令404は、バンク設定修飾命令であるバンク設定プリフィクス414と、それに後続する命令415から構成される。命令415は通常の命令である。図2においては、バンク設定修飾つき命令404は行204と行206の2行で表現されている。命令長は、バンク設定プリフィクス414、命令415ともに16ビットであり、バンク設定修飾つき命令404は全体としては32ビット(2ワード)である。このバンク設定修飾つき命令404に基づいて、バンク指定命令が命令デコーダで発行される。
また、図4のバンク設定命令406とは、例えば16ビットのバンク設定命令416であり、図2における行202に対応する。例えば、通常の命令と同様に、4ビットのバンク設定命令オペコードと、各6ビットのバンク識別子オペランド2つを含む。バンク設定命令406に基づいて、バンク指定命令が命令デコーダで発行される。
以上に示したようなバンク設定命令やバンク設定修飾命令の命令長の設定は、バンク指定命令が必要でない演算が大部分を占める場合に特に好適である。つまり、バンク指定命令が発行されるときは命令長を2ワード等に長くして、通常は1ワード(16ビット)等の短い命令を実行することにすれば、レジスタバンクの切り換えを要する場合以外の命令長を短くできる。これにより、プログラムコードの短縮や、プロセッサの実装における面積の縮小が可能としつつ、多数のレジスタが扱える。
なお、バンク設定命令が明示的に現れるまでに何らかの命令が実行される場合にどのようなバンクの割り当てを行なうかは、特に限定されない。バンクは不定であるとしてそのような命令を受け付けないようにすることや、既定のバンクの割り当てを用いて例えば全てバンク0を割り当てること、全てのバンクに対して並列して処理すること、デスティネーションオペランドとソースオペランドをそれぞれ別々に割り当てること、などが可能である。
本発明は、以上のような1ワードと2ワードの命令のみで構成されるものに限られない。例えば、最大命令長を3ワードとすることができる。この場合、第2ワードがバンク設定プリフィクス、第3ワードが通常の命令とすることができるが、第1ワードは他のプリフィクスとすることが出来る。このプリフィクスとしては、例えばコンディショナルエグゼキューションプリフィクスとすることができる。このコンディショナルエグゼキューションプリフィクスとは、分岐命令を伴わずに、判定条件に応じてその後の命令を実行するかしないかを切り換えることの出来るプリフィクスである。このプリフィクスは、これのみで、分岐命令を削減することができ、並列処理時の分岐命令に伴うストールを回避できる効果がある。また、コンディショナルエグゼキューションプリフィクスと本発明のレジスタバンク指定命令を組み合わせて用いると、ほとんどストールなく並列処理することが出来るプログラムを記述することが出来るので、命令長を抑えつつ、処理速度が速いプロセッサを実現することが出来る。なお、最大命令長が2ワードや3ワードであるときに最終ワードがレジスタ設定プリフィクスであると、一般不当命令であると認識されて演算処理されない。
以上のように、本発明により、プログラム全体の命令長を短く保ちつつ、レジスタ指定命令にかかわる命令にのみより長い命令長を割り当てて、多くのレジスタを扱うことできる。
[プロセッサ構成例]
図5〜8に、本発明のアーキテクチャを実装するプロセッサの構成例101を、機能ブロックレベルの構成図を各部分ごとに示す。図5は、命令フェッチステージ、図6は命令デコードステージと命令実行ステージ、図7はライトバックステージとその中に含まれるメモリアクセスステージをそれぞれ表わしている。
図5の命令フェッチステージは、命令記憶手段(図示せず)から命令フェッチブバッファ54を含み、命令をロードする命令フェッチユニット52と、進行するプログラムのカウントをしているプログラムカウンタ58の値に基づいて、命令記憶手段をアクセスするアドレスを生成するフェッチアドレスユニット56とからなる。
図6の命令デコードステージは、命令フェッチブバッファ54としてロードされる命令を制御信号であるマイクロコード(マイクロ命令)へとデコードするメインデコーダ62と、そのメインデコーダ62に対してプリフィクスをデコードして出力するプリフィクスデコーダ60とを含むデコーダを有する。本構成例では、16ビットの命令長を有する各命令が96ビット単位でデコーダに送られる。メインデコーダがある命令をデコードしている時に、その命令の後に続く命令はプリフィクスデコーダ60でデコードされる。つまり、プリフィクスデコーダ60は、事前に命令の先読みを行なうことにより、プリフィクスデコーダ60は命令がプリフィクスを含むものかどうかを検出する。このプリフィクスデコーダ60がプリフィクスを検出すると、そのプリフィクスの内容に応じて、メインデコーダ62に制御信号を出力する。この制御信号により、メインデコーダ60は、当該プリフィクスの後の命令についてのデコードの動作を切り換える。このように、プリフィクスデコーダとメインデコーダは、協働してプリフィクスの動作を実現する。そして、このプリフィクスが本発明のバンク設定プリフィクスであれば、メインデコーダ62は直後にデコードする命令に含まれるオペランドに用いられるレジスタのバンクを切り換える。その結果、レジスタファイルのバンク割り当てを保持しているレジスタ(バンクセレクトレジスタ66、図8)が変更される。このレジスタが本発明のバンクスイッチ手段となる。このように、バンク設定プリフィクスを用いることにより、後続する命令のオペランドのポイントするレジスタバンクが切り換えられる。つまり、プリフィクスデコーダとメインデコーダは、バンク指定命令となるマイクロ命令を生成することができる。
バンク設定プリフィクスではなくバンクセット命令等のバンク設定命令による場合には、メインデコーダでそのバンク設定命令がデコードされて、バンクセレクトレジスタを書き換えて、レジスタファイルのバンク割り当てを変更する。これにより、以後の命令におけるデスティネーションオペランドとソースオペランドが指し示すレジスタバンクが切り換わる。
命令デコードステージにはさらに、本発明の複数のレジスタバンクを含むレジスタファイル64が含まれている。本実施の形態では、レジスタバンクは4個のバンクに整理されているデータ処理用レジスタとして記載されている。各レジスタバンクは、通常の命令において6ビットのフィールドで指定可能な64ビット長を有するデータレジスタを16本備えている。
命令デコードステージには、前述のように、バンクセレクトレジスタ66が含まれている(図8)。このバンクセレクトレジスタは、例えばバンクセット命令による現在のバンク割り当てのステータスを保持している。
命令実行ステージには、命令デコードステージでデコードされた命令を具体的に実行するマイクロコード(マイクロ命令)制御装置610と、演算論理ユニット(ALU)と、積和演算ユニット(MAU)と、データプロセスユニット(DPU)とを含んでなる演算器68が含まれている。演算器68は、マイクロ命令に基づいて、イミディエイト値、いずれかのレジスタバンク内のレジスタ値等に指定された演算処理を実行して、ライトバックステージに受け渡す。
命令デコードステージと命令実行ステージには、さらに、本発明の特徴的な要素が含まれている。レジスタファイルからの出力は信号601の一部であるソースレジスタSRC0とSRC1、デスティネーションレジスタDST0とDST1が用いられる。このうち、レジスタSRC0およびDST0に接続されたレジスタファイルの各ポートは、通常のプロセッサにおいて用いられるものであり、レジスタSRC0およびDST0を介して演算器と接続されている。一方、レジスタSRC1およびDST1に接続されたレジスタファイルのポートは本発明の特徴的なポートであり、レジスタSRC1およびDST1を介して外部メモリ(図示せず)への出力となるストア命令実行装置620に接続されている。本構成例ではSRC1およびDST1の二つのレジスタを記載しているが、本発明は、このようなレジスタを少なくとも一つ有していれば良い。このストア命令実行装置620は、後述するメモリ出力装置74(図7)と協働して本発明のメモリアクセス装置の一部をなすものである。これにより、レジスタバンク構成を有するレジスタファイルの一部のレジスタバンクに対してレジスタSRC0およびDST0を介して演算器がアクセスし、同時に、他の一部のレジスタバンクに対しては、レジスタSRC1およびDST1を介して外部メモリがアクセスすることができる。なお、以上の記載ではマイクロ命令を用いるプロセッサ構成を説明したが、ハードワイアード構成としても実現可能である。
図7のライトバックステージは、演算器68の出力をレジスタファイルへとライトバックするライトバック装置72や、演算器68の出力をデータとして外部メモリ(図示せず)に書き出す3状態ドライバーを含むメモリ出力装置74、当該外部メモリ内からデータを読み出してレジスタファイル64にロードするメモリ入力装置76を有している。この時、バンクが異なるので、メモリ入力装置76は、ライトバックステージと並行してレジスタファイル64にデータを書き込むことが出来る。
図8に、図5〜7に記載されていないが本発明のプロセッサで用いられるバンクスイッチ手段の構成例を示す。本構成例のバンクスイッチ手段は、バンクセレクトレジスタ66と、SSR(システムステータスレジスタ)82中に含まれている、ソースオペランドのレジスタに割り当てられるレジスタバンクを保持するレジスタSRCB(84)と、デスティネーションオペランドのレジスタに割り当てられるレジスタバンクを保持するレジスタDSTB(86)とから構成されている。バンクセレクトレジスタ66は、命令デコードステージにおけるソースオペランドとデスティネーションオペランドのそれぞれのレジスタに割り当てられるレジスタバンクを保持するレジスタID.SRCB(84a)とID.DSTB(86a)からなる。
まず、バンク指定命令がバンク設定命令である場合についてこれらのバンクスイッチ手段の動作について説明する。メインデコーダ62からの直接書き換えられるレジスタID.SRCB(84a)とID.DSTB(86a)は、命令実行ステージを経ることなく書き換えられる。このため、これらは最新のレジスタバンクを保持しており、レジスタ・リード時に使用される。同じレジスタバンクの割り当ては、制御レジスタのレジスタファイル中のSSR82の中にあるSRCB(84)とDSTB(86)にもその後に書き込まれる。このように動作させると、命令デコードステージの終了時には既にその命令に含まれるレジスタバンクの割り当てが反映されるため、例えば1クロックといった短時間でレジスタバンクの割り当てが可能となり、直後の命令についてもこのレジスタバンクの割り当てが有効となり、レジスタファイル64にあるどのレジスタバンクのレジスタにアクセスするかを、ソースオペランド、デスティネーションオペランドごとに定めることができる。また、ライトバックステージの終了とともにレジスタファイル中のSSR82にもこれが書き込まれるので、システムステータスとしてのレジスタバンクの割り当ての保持が可能となる。
次に、バンク指定命令がバンク設定修飾命令であり、直後の通常の命令と組み合わせて一命令となる場合について説明する。この場合には、その直後の命令にしかバンク設定修飾命令の作用が及ばないので、SSR82にレジスタバンクの一時的な割り当てを書き込む必要が無い。そこで、命令デコードステージでバンクセレクトレジスタ66を書き換えるが、その書き込まれた内容は命令実行ステージ、ライトバックステージと伝えられることは無い。このようにして、バンク設定修飾命令の直後にある通常の命令にのみ有効な一時的なバンクの割り当てが実現する。
以上のようなプロセッサの構成によって、本発明のレジスタバンク構成されたレジスタバンクを用いることができる。つまり、レジスタバンク設定命令によるレジスタ切り換え動作や、レジスタバンク設定プリフィクスにより後続命令のオペランドポイント先のレジスタを切り換える動作を実装し得るプロセッサが、具体的なハードウエアとして提供される。また、演算器の演算中であっても外部メモリにアクセスすることができ、メモリのレイテンシーに起因する処理の停滞を防止することができる。
なお、図には示していないが、メモリ出力装置74やメモリ入力装置76には、周知のキャッシュメモリを用いて、外部メモリに起因するレイテンシーを削減することができる。
[マルチプロセッサシステム構成例]
図1〜図7を用いて説明した単体のプロセッサを複数用いて、マルチプロセッサ構成を実現することができる。この際、協働させる個々のプロセッサは命令記憶手段に接続されている。この命令記憶手段はそれぞれのマルチプロセッサを協働させる命令を記憶している。各プロセッサは、個々のプロセッサの持つプログラムカウンタに応じて、フェッチステージでそれぞれのプロセッサ自身が必要とする命令のみをフェッチする。この各プロセッサの命令には、本発明の単体のプロセッサで用いられるのと同様のレジスタバンク設定命令や、レジスタバンク修飾命令とすることができる。
また、外部メモリは、いくつかのプロセッサからアクセスされるものでも良い。すなわち、外部メモリを共有メモリシステムとして構成し、外部メモリ中のあるデータ領域を複数のプロセッサで共有してプロセッサ間でレジスタを共有することができる。この構成では、レイテンシーが大きい外部メモリにアクセスするため、例えば、各プロセッサのレジスタうち他のプロセッサと値を共有するレジスタ(以下「共有レジスタ」という)と、各プロセッサのみで用いるレジスタとを別々のレジスタバンクに割り当てることができる。各プロセッサは、例えば、共有レジスタに対する演算をするときのみ、その共有レジスタを含むレジスタバンクをデスティネーションオペランドまたはソースオペランドとしてアクセスし、他の演算ではそれ以外のレジスタバンクにアクセスする。そして、共有レジスタが書き換えられたときのみ、共有メモリにアクセスする。このようにマルチプロセッサを構成する各プロセッサが動作すると、各プロセッサで共有すべきレジスタの書き換え結果のみが、レイテンシーの大きな共有メモリを介してアクセスされる。そして、その共有メモリへのアクセスの間も、各プロセッサの演算器は、共有レジスタを扱わない命令を実行できる。このように、本発明における複数のプロセッサからなるマルチプロセッサシステムでは、データのコヒーレンシーを保証しつつ、各プロセッサにおける演算が外部メモリアクセスによるレイテンシーの影響を受けにくいマルチプロセッサシステムが実現する。
また、以下に本発明の各実施態様の例を示す。
[実施態様1]
レジスタバンク指定命令と通常の命令とを含む命令をデコードして制御信号を生成する命令デコーダと、該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、該演算器の信号に基づいて外部メモリとの間でデータ入出力を行なうメモリアクセス手段と、該演算器および該メモリアクセス手段からアクセス可能なレジスタをそれぞれ備えた複数のレジスタバンクと、前記レジスタバンク指定命令に基づいて前記命令デコーダが生成するレジスタバンク指定制御信号により制御されるバンクスイッチ手段であって、該演算器がどのレジスタバンクにアクセスするかを定め、かつ、該メモリアクセス手段がどのレジスタバンクにアクセスするかを定めるバンクスイッチ手段とを備えてなり、該レジスタバンク指定命令は、該バンクスイッチ手段を制御することにより、該レジスタバンク指定命令より後にある通常の命令をオペランドを用いて実行するために、該オペランドが用いるレジスタに割り当てるレジスタバンクを切り換える命令である、マルチバンクレジスタを有するプロセッサ。
[実施態様2]
前記バンクスイッチ手段は、前記レジスタバンク指定制御信号により制御され、前記演算器が前記レジスタバンクのいずれかへアクセスするかを定めるとともに、前記メモリアクセス手段が他のいずれかの前記レジスタバンクへアクセスするかを定めるものであり、前記演算器によるレジスタへのアクセスと前記メモリアクセス手段によるレジスタへのアクセスとの同時アクセスが可能である、実施態様1に記載のプロセッサ。
[実施態様3]
前記レジスタバンク指定命令は、レジスタバンク設定修飾命令であり、前記レジスタバンク設定修飾命令は、前記バンクスイッチ手段を制御することにより、該レジスタバンク設定修飾命令の直後にある通常の命令をオペランドを用いて実行するために、該直後にある通常の命令の該オペランドについてのレジスタに割り当てるレジスタバンクを切り換える命令である、実施態様1または2に記載のプロセッサ。
[実施態様4]
前記レジスタバンク設定修飾命令が直前にある場合には命令長が通常の命令の命令長から延長されて、該レジスタバンク設定修飾命令と直後の該通常の命令とが該延長された命令長を有する一命令になる、実施態様3に記載のプロセッサ。
[実施態様5]
前記レジスタバンク指定命令はレジスタバンク設定命令であり、該レジスタバンク設定命令より後にある通常の命令においては、明示的なレジスタバンクの指定を必要とせずに、前記オペランドが用いるレジスタに対して該レジスタバンク指定命令に基づくレジスタバンクの割り当てが適用される、実施態様1または2に記載のプロセッサ。
[実施態様6]
命令記憶手段と、第1のプロセッサと、第2のプロセッサと、外部メモリとを少なくとも備えてなるマルチプロセッサシステムであって、該第1のプロセッサおよび該第2のプロセッサは、該命令記憶手段からのレジスタバンク指定命令と、通常の命令とを含む命令をデコードして制御信号を生成する命令デコーダと、該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、該演算器の信号に基づいて該外部メモリとの間でデータ入出力を行なうメモリアクセス手段と、該演算器および該メモリアクセス手段からアクセス可能なレジスタをそれぞれ備えた複数のレジスタバンクと、前記レジスタバンク指定命令に基づいて前記命令デコーダが生成するレジスタバンク指定制御信号により制御されるバンクスイッチ手段であって、該演算器がどのレジスタバンクにアクセスするかを定め、かつ、該メモリアクセス手段がどのレジスタバンクにアクセスするかを定めるバンクスイッチ手段とをそれぞれ備えてなり、該レジスタバンク指定命令は、該バンクスイッチ手段を制御することにより、該レジスタバンク指定命令より後にある通常の命令をオペランドを用いて実行するために、該オペランドが用いるレジスタに割り当てるレジスタバンクを切り換える命令であり、該外部メモリは、該第1のプロセッサの該メモリアクセス手段と、該第2のプロセッサの該メモリアクセス手段とのいずれからもアクセス可能に接続されている、マルチプロセッサシステム。
[実施態様7]
前記バンクスイッチ手段は、前記レジスタバンク指定制御信号により制御され、前記演算器が前記レジスタバンクのいずれかへアクセスするかを定めるとともに、前記メモリアクセス手段が他のいずれかの前記レジスタバンクへアクセスするかを定めるものであり、前記演算器によるレジスタへのアクセスと前記メモリアクセス手段によるレジスタへのアクセスとの同時アクセスが可能である、実施態様6に記載のマルチプロセッサシステム。
[実施態様8]
実施態様6または7に記載のマルチプロセッサシステムであって、前記外部メモリにおいて前記第1のプロセッサがアクセスするメモリ領域と、前記第2のプロセッサがアクセスするメモリ領域との少なくとも一部が共有されているマルチプロセッサシステム。
[実施態様9]
レジスタバンク指定命令と通常の命令とを含む命令をデコードして制御信号を生成する命令デコーダと、該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、該演算器の信号に基づいて外部メモリとの間でデータ入出力を行なうメモリアクセス手段と、該演算器および該メモリアクセス手段からアクセス可能なレジスタをそれぞれ備えた複数のレジスタバンクと、該演算器および該メモリアクセス手段がそれぞれどのレジスタバンクにアクセスするかを定めるバンクスイッチ手段とを備えてなるプロセッサの制御方法であって、該命令デコーダが該レジスタバンク指定命令に基づいてレジスタバンク指定制御信号を生成するステップと、該レジスタバンク指定制御信号により該バンクスイッチ手段を制御することにより、該レジスタバンク指定命令より後にある通常の命令のオペランドが用いるレジスタに割り当てるレジスタバンクを切り換えて、該演算器がどのレジスタバンクにアクセスするかを制御するステップと、該レジスタバンク指定制御信号により該バンクスイッチ手段を制御することにより、該オペランドが用いるレジスタに割り当てるレジスタバンクを切り換えて、該メモリアクセス手段がどのレジスタバンクにアクセスするかを制御するステップと、該通常の命令をオペランドを用いて実行するステップとを含むマルチバンクレジスタを有するプロセッサの制御方法。
[実施態様10]
該通常の命令をオペランドを用いて実行する前記ステップは、あるレジスタバンクのレジスタへの前記演算器によるアクセスと、他のレジスタバンクのレジスタへの前記メモリアクセス手段によるアクセスとが同時に行なわれるステップを含むものである、実施態様9に記載のマルチバンクレジスタを有するプロセッサの制御方法。
[実施態様11]
前記レジスタバンク指定命令は、レジスタバンク設定修飾命令であり、前記レジスタバンク設定修飾命令は、前記バンクスイッチ手段を制御することにより、該レジスタバンク設定修飾命令の直後にある通常の命令をオペランドを用いて実行するために、該直後にある通常の命令の該オペランドについての該オペランドのレジスタに割り当てるレジスタバンクを切り換える命令である、実施態様9または10に記載のプロセッサの制御方法。
[実施態様12]
前記レジスタバンク設定修飾命令が直前にある場合には命令長が通常の命令の命令長から延長されて、該レジスタバンク設定修飾命令と直後の該通常の命令とが該延長された命令長を有する一命令になる、実施態様11に記載のプロセッサの制御方法。
[実施態様13]
前記レジスタバンク指定命令は、レジスタバンク設定命令であり、前記レジスタバンク指定命令より後にある通常の命令においては、明示的なレジスタバンクの指定を必要とせずに、前記オペランドが用いるレジスタに対して該レジスタバンク指定命令に基づくレジスタバンクの割り当てが適用される、実施態様9または10に記載のプロセッサの制御方法。
産業上の利用の可能性
本発明のプロセッサ構成によって、命令長を短く保ったまま、多数のレジスタを用いることができる。また、メモリのレイテンシーに起因する処理の停滞を防止することができる。
本発明における複数のプロセッサからなるマルチプロセッサシステムでは、データのコヒーレンシーを保証しつつ、各プロセッサにおける演算が外部メモリアクセスによるレイテンシーの影響を受けにくいマルチプロセッサシステムを実現することができる。
本発明の実施の形態のプロセッサの概略を示す構成図である。 本発明の実施の形態のバンク指定命令を含むアセンブラコードを示す説明図である。 図2のアセンブラコードによるバンク切り換えの様子を示す説明図である。 本発明の実施の形態のバンク指定命令の実現例を表わす説明図である。 本発明の実施の形態によるプロセッサ構成例における命令フェッチステージの構成を示す機能ブロックレベルの構成図である。 本発明の実施の形態によるプロセッサ構成例における命令デコードステージおよび命令実行ステージの構成を示す機能ブロックレベルの構成図である。 本発明の実施の形態によるプロセッサ構成例におけるライトバックステージの構成を示す機能ブロックレベルの構成図である。 本発明の実施の形態によるプロセッサ構成例におけるバンクスイッチ手段の構成を示す機能ブロックレベルの構成図である。
符号の説明
11 レジスタバンク
12 演算器
13 データ転送装置
14 内部バス
15 外部バス
19 外部メモリ
100 プロセッサ
101 プロセッサの構成例

Claims (3)

  1. 命令記憶手段と、第1のプロセッサと、第2のプロセッサと、外部メモリとを少なくとも備えてなるマルチプロセッサシステムであって、
    該第1のプロセッサおよび該第2のプロセッサは、
    該命令記憶手段からのレジスタバンク指定命令と、通常の命令とを含む命令をデコードして制御信号を生成する命令デコーダと、
    該命令デコーダからの該制御信号に基づいて演算処理を行なう演算器と、
    該演算器の信号に基づいて該外部メモリとの間でデータ入出力を行なうメモリアクセス手段と、
    該演算器および該メモリアクセス手段からアクセス可能なレジスタをそれぞれ備えた複数のレジスタバンクと、
    前記レジスタバンク指定命令に基づいて前記命令デコーダが生成するレジスタバンク指定制御信号により制御されるバンクスイッチ手段であって、該演算器がどのレジスタバンクにアクセスするかを定め、かつ、該メモリアクセス手段がどのレジスタバンクにアクセスするかを定めるバンクスイッチ手段と
    をそれぞれ備えてなり、
    前記演算器と前記メモリアクセス手段とは互いに独立して前記レジスタにアクセス可能であり、
    前記レジスタバンク指定命令は、前記バンクスイッチ手段を制御することにより、該レジスタバンク指定命令より後にある通常の命令をオペランドを用いて実行するために、該オペランドが用いるレジスタに割り当てるレジスタバンクを切り換える命令であり、
    該外部メモリは、該第1のプロセッサの該メモリアクセス手段と、該第2のプロセッサの該メモリアクセス手段とのいずれからもアクセス可能に接続されている、マルチプロセッサシステム。
  2. 前記バンクスイッチ手段は、前記レジスタバンク指定制御信号により制御され、前記演算器が前記レジスタバンクのいずれかへアクセスするかを定めるとともに、前記メモリアクセス手段が他のいずれかの前記レジスタバンクへアクセスするかを定めるものであり、
    前記演算器によるレジスタへのアクセスと前記メモリアクセス手段によるレジスタへのアクセスとの同時アクセスが可能である、請求の範囲第6項に記載のマルチプロセッサシステム。
  3. 請求の範囲第6項または第7項に記載のマルチプロセッサシステムであって、前記外部メモリにおいて前記第1のプロセッサがアクセスするメモリ領域と、前記第2のプロセッサがアクセスするメモリ領域との少なくとも一部が共有されているマルチプロセッサシステム。
JP2006287961A 2006-10-23 2006-10-23 マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法 Expired - Lifetime JP4528993B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006287961A JP4528993B2 (ja) 2006-10-23 2006-10-23 マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006287961A JP4528993B2 (ja) 2006-10-23 2006-10-23 マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004544709A Division JP3958320B2 (ja) 2002-10-18 2002-10-18 マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法

Publications (2)

Publication Number Publication Date
JP2007052811A true JP2007052811A (ja) 2007-03-01
JP4528993B2 JP4528993B2 (ja) 2010-08-25

Family

ID=37917159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006287961A Expired - Lifetime JP4528993B2 (ja) 2006-10-23 2006-10-23 マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法

Country Status (1)

Country Link
JP (1) JP4528993B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154534A (ja) * 2010-01-27 2011-08-11 Fujitsu Semiconductor Ltd リコンフィギュラブル回路および半導体集積回路

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5696353A (en) * 1979-12-12 1981-08-04 Mitsubishi Electric Corp Multiprocessor control device
JPH03141434A (ja) * 1989-06-19 1991-06-17 Nec Corp マイクロコンピュータ
JPH04195226A (ja) * 1990-11-22 1992-07-15 Toshiba Corp 並列処理マイクロプロセッサ
JPH0535472A (ja) * 1990-10-31 1993-02-12 Hitachi Ltd マイクロコンピユータ
JPH06103068A (ja) * 1992-09-18 1994-04-15 Toyota Motor Corp データ処理装置
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
JP2002259119A (ja) * 2001-03-06 2002-09-13 National Institute Of Advanced Industrial & Technology 階層型命令を実行する計算機

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5696353A (en) * 1979-12-12 1981-08-04 Mitsubishi Electric Corp Multiprocessor control device
JPH03141434A (ja) * 1989-06-19 1991-06-17 Nec Corp マイクロコンピュータ
JPH0535472A (ja) * 1990-10-31 1993-02-12 Hitachi Ltd マイクロコンピユータ
JPH04195226A (ja) * 1990-11-22 1992-07-15 Toshiba Corp 並列処理マイクロプロセッサ
JPH06103068A (ja) * 1992-09-18 1994-04-15 Toyota Motor Corp データ処理装置
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
JP2002259119A (ja) * 2001-03-06 2002-09-13 National Institute Of Advanced Industrial & Technology 階層型命令を実行する計算機

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TOM HALFHILL: "VLIW技術に新風,米Sun社のMAJC登場", 日経エレクトロニクス, vol. 第753号, JPN6010005161, 1 October 1999 (1999-10-01), pages 55 - 66, ISSN: 0001528767 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154534A (ja) * 2010-01-27 2011-08-11 Fujitsu Semiconductor Ltd リコンフィギュラブル回路および半導体集積回路

Also Published As

Publication number Publication date
JP4528993B2 (ja) 2010-08-25

Similar Documents

Publication Publication Date Title
JP6708335B2 (ja) ユーザレベルの分岐及び結合を行うプロセッサ、方法、システム、及び命令
JP2550213B2 (ja) 並列処理装置および並列処理方法
JP4837305B2 (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
JP6143872B2 (ja) 装置、方法、およびシステム
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
JP5653762B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
US20190004810A1 (en) Instructions for remote atomic operations
US20140189316A1 (en) Execution pipeline data forwarding
US10241810B2 (en) Instruction-optimizing processor with branch-count table in hardware
US10929296B2 (en) Zero latency prefetching in caches
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
JP7410186B2 (ja) Gpuにおける明示的な個別マスクレジスタのマスク操作方法
US7877578B2 (en) Processing apparatus for storing branch history information in predecode instruction cache
JP2007102333A (ja) データ処理装置およびデータ処理方法
JP5128382B2 (ja) 複数のロード命令を実行するための方法および装置
JP2004145454A (ja) 情報処理装置及び情報処理方法
JP7048612B2 (ja) ベクトル生成命令
JP4528993B2 (ja) マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
JP3958320B2 (ja) マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
US20080005545A1 (en) Dynamically shared high-speed jump target predictor
US11449336B2 (en) Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof
JP5105359B2 (ja) 中央処理装置、選択回路および選択方法
JPH1091434A (ja) クイック・デコード命令を用いるための方法およびデータ処理システム
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP4151497B2 (ja) パイプライン処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100331

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100416

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100514

R150 Certificate of patent or registration of utility model

Ref document number: 4528993

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130618

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term