(57)【要約】【課題】  レジスタバンク切り替え機能によるスループットの低下を抑制できるマイクロプロセッサおよびその制御方法をを実現する。【解決手段】  本発明のマイクロプロセッサおよびその制御方法は、データをレジスタＲ０〜Ｒｎに格納した時のバンク番号Ｂ０〜ＢｎがＲ０〜Ｒｎごとに設定されているレジスタペア１２と、複数のレジスタペア１２を備えたＣＰＵレジスタ１１と、ＣＰＵレジスタ１１の情報がレジスタペア１２の単位で退避、回復されるレジスタファイル１３と、データを演算処理する前に、当該レジスタペア１２のＢ０〜Ｂｎと現在のバンク番号１９とを比較して入れ替え要求信号２４を出力する比較器１５と、入れ替え要求信号２４を受けて、当該レジスタペア１２の情報をレジスタファイル１３との間で退避、回復するレジスタ入れ替え回路１６を有する。【選択図】  図１
2008047054.tif 000002
【特許請求の範囲】
【請求項１】
データをレジスタに格納した時のバンク番号がレジスタごとに設定されているレジスタペアと、
複数の前記レジスタペアを備えたＣＰＵレジスタと、
前記ＣＰＵレジスタの情報が前記レジスタペアの単位で専用バスを介して退避、回復される記憶手段と、
前記レジスタに格納されているデータを演算処理する前に、当該レジスタペアに設定されている前記バンク番号と現在のバンク番号とを比較し、比較結果に基づいて入れ替え要求信号を出力する比較手段と、
前記入れ替え要求信号を受けて、当該レジスタペアの情報を前記記憶手段に退避し、かつ、現在のバンク番号に対応する前記レジスタペアの情報を前記記憶手段から当該レジスタペアへ回復する制御手段を有することを特徴とするマイクロプロセッサ。
【請求項２】
前記専用バスは、前記記憶手段から前記ＣＰＵレジスタへ情報を回復するための回復専用バスを備え、
前記レジスタに格納されているデータを演算処理し、演算結果を内部バスへ出力する演算手段と、
第１の入力に前記回復専用バスが接続され、第２の入力に前記内部バスが接続され、前記制御手段が前記記憶手段から現在のバンク番号に対応する前記レジスタペアの情報を回復する時に、前記制御手段からの選択信号を受けて前記第１の入力を選択して前記ＣＰＵレジスタへ出力する選択手段をさらに有することを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
第１の入力に前記ＣＰＵレジスタからのデータが入力され、第２の入力に前記回復専用バスが接続され、前記制御手段が現在のバンク番号に対応する前記レジスタペアの情報を前記記憶手段から回復する時に、前記制御手段からの別の選択信号を受けて前記第２の入力を選択して前記演算手段へ出力する別の選択手段をさらに有することを特徴とする請求項２に記載のマイクロプロセッサ。
【請求項４】
レジスタに格納されているデータの演算処理を実行する前に、前記レジスタごとに設定されているバンク番号と現在のバンク番号を比較する比較ステップと、
前記比較ステップでの比較結果に基づいて、当該レジスタおよび当該レジスタに対応して設定されているバンク番号からなるレジスタペアの情報を専用バスを介して記憶手段に退避し、かつ、現在のバンク番号に対応する前記レジスタペアの情報を前記記憶手段から当該レジスタペアへ回復する入れ替えステップと、
前記入れ替えステップで更新されたレジスタのデータに対して演算処理を実行する演算実行ステップを有することを特徴とするマイクロプロセッサの制御方法。
【請求項５】
前記演算実行ステップは複数に分割されたパイプラインステージで構成され、
前記入れ替えステップに先立って、前記比較ステップでの比較結果に基づいて、前記演算実行ステップの少なくとも一部の前記パイプラインステージを停止させるパイプライン停止ステップをさらに有することを特徴とする請求項４に記載のマイクロプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタバンク切り替え機能を有するマイクロプロセッサおよびその制御方法に関する。
【背景技術】
【０００２】
マイクロプロセッサにおけるレジスタバンク切り替えは、割り込みやサブルーチンコールの際に行われ、割り込み発生前後もしくはサブルーチンコール前後にＣＰＵ（Central Processing Unit）内部の汎用レジスタ（以下、「ＣＰＵレジスタ」という。）の内容を一時的に退避したり、退避しておいた内容をＣＰＵレジスタに回復したりするのに使用される。
【０００３】
従来のレジスタバンク切り替え機能は、ＣＰＵレジスタとレジスタ退避専用メモリ（以下、「レジスタファイル」という。）の２つの部分で構成され、割り込み処理ルーチン実行前後にＣＰＵレジスタとレジスタファイルとの間で必要なデータの入れ替え（退避および回復。）を行うことで実現されていた（例えば、「特許文献１」を参照。）。
【０００４】
しかしながら、このような従来のレジスタバンク切り替え機能には、割り込み処理前後のバンク切り替え時にＣＰＵのパイプライン動作を停止させるため、マイクロプロセッサのスループットが低下するという問題があった。
【０００５】
このスループットの低下を防ぐため、全バンクのＣＰＵレジスタが常にＣＰＵからアクセス可能となるように、ＣＰＵレジスタを全バンクに対応したポート数を備えたＲＡＭまたは必要な数のラッチ回路（以下、「ＦＦ」という。）で構成し、割り込み処理実行前後のバンク切り替えを行わないという方法も考えられる。しかし、ＲＡＭを実装する場合はＣＰＵ動作速度がＲＡＭのアクセスタイムに拘束されスループットの向上は望めない。また、ＦＦを実装する場合はレイアウト面積が非常に大きくなるという問題がある。さらに、いずれの場合も全バンクレジスタに対応したポートを接続させるため大きなレイアウト面積が必要になるという問題がある。特に、近年は、マイクロプロセッサにおけるＣＰＵレジスタのサイズ（ビット幅、およびレジスタ数。）や必要なバンク数が多くなる傾向にあり、全バンクのＣＰＵレジスタを常にＣＰＵからアクセス可能とする構成はごく限られた用途でしか採用できなくなっている。
【特許文献１】特開平６−３０９１６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、レジスタバンク切り替え機能によるスループットの低下を抑制できるマイクロプロセッサおよびその制御方法を提供する。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、データをレジスタに格納した時のバンク番号がレジスタごとに設定されているレジスタペアと、複数の前記レジスタペアを備えたＣＰＵレジスタと、前記ＣＰＵレジスタの情報が前記レジスタペアの単位で専用バスを介して退避、回復される記憶手段と、前記レジスタに格納されているデータを演算処理する前に、当該レジスタペアに設定されている前記バンク番号と現在のバンク番号とを比較し、比較結果に基づいて入れ替え要求信号を出力する比較手段と、前記入れ替え要求信号を受けて、当該レジスタペアの情報を前記記憶手段に退避し、かつ、現在のバンク番号に対応する前記レジスタペアの情報を前記記憶手段から当該レジスタペアへ回復する制御手段を有することを特徴とするマイクロプロセッサが提供される。
【０００８】
本発明の別の一態様によれば、レジスタに格納されているデータの演算処理を実行する前に、前記レジスタごとに設定されているバンク番号と現在のバンク番号を比較する比較ステップと、前記比較ステップでの比較結果に基づいて、当該レジスタおよび当該レジスタに対応して設定されているバンク番号からなるレジスタペアの情報を専用バスを介して記憶手段に退避し、かつ、現在のバンク番号に対応する前記レジスタペアの情報を前記記憶手段から当該レジスタペアへ回復する入れ替えステップと、前記入れ替えステップで更新されたレジスタのデータに対して演算処理を実行する演算実行ステップを有することを特徴とするマイクロプロセッサの制御方法が提供される。
【発明の効果】
【０００９】
本発明によれば、レジスタバンク切り替え機能によるスループットの低下を抑制できるので、割り込みまたはサブルーチンコールにおける高速処理を実現することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照しながら、本発明の実施例を説明する。
【実施例】
【００１１】
図１は、本発明の実施例に係わるマイクロプロセッサを示す回路ブロック図である。ここでは、主に、ＣＰＵレジスタ１１とそのバンク切り替えにかかわる部分を示した。
【００１２】
本発明の実施例に係わるマイクロプロセッサは、（ｎ＋１）個のレジスタペア１２を有するＣＰＵレジスタ１１、レジスタペア１２の情報を退避、回復するためのレジスタファイル１３、現在のバンク番号１９を保持するバンクポインタ１４、レジスタペア１２に設定されたバンク番号と現在のバンク番号１９を比較する比較器１５、レジスタペア１２とレジスタファイル１３の間の情報入れ替えを制御するカレントレジスタ入れ替え回路１６、バスを選択的に切り替えるための６個の選択回路（以下、「Ｓ０〜Ｓ５」という。）、ＣＰＵレジスタ１１のデータを演算する演算器１７、および命令コードを解釈する命令デコーダ１８を備えている。
【００１３】
ＣＰＵレジスタ１１の第１の出力は退避専用の入れ替え用バス２０を介してレジスタファイル１３の入力ポート（退避用ポート）に接続され、第２の出力はＳ１の第１の入力に接続され、第３の出力はＳ２の第１の入力に接続され、第４の出力はレジスタバンク番号２７として比較器１５の第１の入力に接続されている。
【００１４】
レジスタファイル１３の出力ポート（回復用ポート）は、回復専用の入れ替え用バス２１を介してＳ０の第１の入力に接続され、同時にバイパス専用の入れ替え用バス２２を介してＳ１の第２の入力およびＳ２の第２の入力に接続されている。Ｓ１の出力は演算器１７の第１の入力に接続され、Ｓ２の出力は演算器１７の第２の入力に接続され、演算器１７の出力は内部バス２３を介してＳ０の第２の入力に接続されている。
【００１５】
バンクポインタ１４の出力は現在のバンク番号１９として比較器１５の第２の入力に接続され、比較器１５の出力は入れ替え要求信号２４としてカレントレジスタ入れ替え回路１６の入力に接続されている。
【００１６】
カレントレジスタ入れ替え回路１６の第１の出力はストール要求信号２５として命令デコーダ１８の入力に接続され、第２の出力はＳ３の第１の入力に接続され、第３の出力はＳ４の第１の入力に接続され、第４の出力はＳ５の第１の入力に接続されている。
【００１７】
命令デコーダ１８の第１の出力はＳ３の第２の入力に接続され、第２の出力はＳ４の第２の入力に接続され、第３の出力はＳ５の第２の入力に接続されている。
【００１８】
Ｓ０の出力はＣＰＵレジスタ１１の第１の入力に接続され、Ｓ３の出力はＣＰＵレジスタ１１の第２の入力に接続され、Ｓ４の出力はＣＰＵレジスタ１１の第３の入力に接続され、Ｓ５の出力はＣＰＵレジスタ１１の第４の入力に接続されている。
【００１９】
カレントレジスタ入れ替え回路１６の第５〜第１０の出力は、それぞれ選択信号２６として、Ｓ０〜Ｓ５の制御入力に接続されている。
【００２０】
命令デコーダ１８は、プログラムの命令コードを解釈し、その命令を実行するために必要な信号をＣＰＵレジスタ１１、演算器１７、および比較器１５に対して出力する。
【００２１】
レジスタペア１２は、データレジスタ（以下、「Ｒ０〜Ｒｎ」という。）とバンクレジスタ（以下、「Ｂ０〜Ｂｎ」という。）とで構成され、Ｂ０〜Ｂｎには対応するＲ０〜Ｒｎにデータが格納された時のそれぞれのバンク番号が格納されている。  
Ｒ０〜ＲｎおよびＢ０〜Ｂｎは、複数のデータラッチ回路で構成されている。
【００２２】
Ｂ０〜Ｂｎは、命令デコーダ１８からの信号により演算の対象となるレジスタペア１２が指定されると、レジスタバンク番号２７として比較器１５へ出力される。
【００２３】
レジスタファイル１３は、入出力ポートをそれぞれ１つ備えたＲＡＭであり、ＣＰＵレジスタ１１から退避されるレジスタペア１２の情報を記憶すると同時に、現在のバンク番号１９に対応するレジスタペア１２の情報をＣＰＵレジスタ１１へ出力することができる。
【００２４】
バンクポインタ１４は、実行中のプログラムが使用する現在のバンク番号１９を常に保持している。
【００２５】
比較器１５は、バンクポインタ１４からの現在のバンク番号１９とＣＰＵレジスタ１１からのレジスタバンク番号２７を比較し、これらが異なる場合に、入れ替え要求信号２４を生成してカレントレジスタ入れ替え回路１６へ出力する。
【００２６】
演算器１７は、命令デコーダ１８の信号によって指定されたＲ０〜Ｒｎのデータを演算処理し、その演算結果を内部バス２３を介してＣＰＵレジスタ１１に出力する。演算結果が格納されるＲ０〜Ｒｎは命令デコーダ１８の信号によって指定される。
【００２７】
カレントレジスタ入れ替え回路１６は、入れ替え要求信号２４を受けて、命令デコーダ１８に対してパイプライン動作の停止を指示するストール要求信号２５を出力する。そして、ＣＰＵレジスタ１１およびレジスタファイル１３に対して、入れ替え要求信号２４のもとになったレジスタペア１２の情報を退避、回復するための信号を出力する。
【００２８】
これにより、ＣＰＵレジスタ１１にあるレジスタペア１２の情報はレジスタファイル１３に退避され、レジスタファイル１３にある現在のバンク番号１９に対応するレジスタペア１２の情報がＣＰＵレジスタ１１に回復される。必要なレジスタペア１２の退避、回復が終了すると、カレントレジスタ入れ替え回路１６は、命令デコーダ１８に対するストール要求信号２５を解除する。
【００２９】
Ｓ０〜Ｓ５は、複数の２入力１出力セレクタからなるバス切り替えスイッチであり、制御入力への信号に基づいて第１または第２の入力に接続されたバスからの信号を出力する。
【００３０】
例えば、Ｓ０は、入れ替え要求信号２４によってカレントレジスタ入れ替え回路１６がレジスタファイル１３からレジスタペア１２の情報を回復するよう指示している時は、カレントレジスタ入れ替え回路１６からの選択信号２６を受けて、回復専用の入れ替え用バス２１からの信号をＣＰＵレジスタ１１へ出力する。それ以外の時は、内部バス２３からの演算結果をＣＰＵレジスタ１１へ出力する。
【００３１】
また、Ｓ１およびＳ２は、カレントレジスタ入れ替え回路１６がレジスタファイル１３からのレジスタペア１２の情報をバイパス専用の入れ替え用バス２２を介して直接演算器１７へ送るよう指示している時は、カレントレジスタ入れ替え回路１６からの選択信号２６を受けて、バイパス専用の入れ替え用バス２２からの信号を演算器１７へ出力する。それ以外の時は、ＣＰＵレジスタ１１からのＲ０〜Ｒｎを演算器１７へ出力する。
【００３２】
次に、上述した構成を持つマイクロプロセッサの制御方法について説明する。  
図２は、本発明の実施例に係わるマイクロプロセッサの制御方法を示すフロー図である。ここでは、主に、割り込み発生時もしくはサブルーチンコール時のレジスタバンク切り替えにかかわる部分を示した。
【００３３】
本発明の実施例に係わるマイクロプロセッサの制御方法は、バンク番号を比較してＣＰＵレジスタ１１の入れ替えを判定するバンク番号判定ステップ（ＳＴ３１）、パイプライン動作を一時停止させるパイプライン停止ステップ（ＳＴ３２）、ＣＰＵレジスタ１１とレジスタファイル１３との間でレジスタペア１２の情報を退避、回復するレジスタ入れ替えステップ（ＳＴ３３）、および更新されたＲ０〜Ｒｎに基づいて演算処理を実行する演算実行ステップ（ＳＴ３４）を備えている。
【００３４】
ＳＴ３１では、比較器１５が、命令デコーダ１８からの信号に従って、バンクポインタ１４からの現在のバンク番号１９とＢ０〜Ｂｎからのレジスタバンク番号２７とを比較する。これらが異なる時（“ＮＧ”）は、比較器１５が入れ替え要求信号２４をカレントレジスタ入れ替え回路１６へ出力し、動作はＳＴ３２へ移行する。
【００３５】
比較結果が同じ（“ＯＫ”）であれば、動作はＳＴ３４へ移行し、通常のパイプライン動作で命令コードに相応する演算が実行される。
【００３６】
このように、命令コードを解釈するたびに現在のバンク番号１９とレジスタバンク番号２７とを比較することで、割り込み発生時またはサブルーチンコール時にＣＰＵレジスタ１１の全レジスタペア１２を退避、回復する必要がなく、命令コードごとに対象となるレジスタペア１２だけを退避、回復することができる。
【００３７】
ＳＴ３２では、カレントレジスタ入れ替え回路１６が、ＳＴ３１の比較結果に基づいてパイプライン動作を停止させるために、命令デコーダ１８に対してストール要求信号２５を出力する。このストール要求信号２５を受けて、命令デコーダ１８は、ＣＰＵレジスタ１１および演算器１７に対してパイプライン動作を停止させる。
【００３８】
ＳＴ３３では、カレントレジスタ入れ替え回路１６が、ＳＴ３１での入れ替え要求信号２４に基づいて命令コードで使用されるレジスタペア１２の情報を退避専用の入れ替え用バス２０を介してレジスタファイル１３へ退避し、同時に、現在のバンク番号１９に対応したレジスタペア１２の情報を回復専用の入れ替え用バス２１を介してレジスタファイル１３から回復する。
【００３９】
この入れ替えは、レジスタペア１２の単位で順次行われ、その命令コードで必要となるレジスタペア１２だけが更新される。そして、演算器１７のパイプライン動作が開始可能な状態になると、カレントレジスタ入れ替え回路１６が命令デコーダ１８に対するストール要求信号２５を解除し、動作は、ＳＴ３４へ移行する。
【００４０】
ＳＴ３４では、演算器１７が、ＳＴ３３で更新されたＲ０〜Ｒｎに対して演算処理を実行する。ＳＴ３３とＳＴ３４は一部並列処理される。すなわち、レジスタペア１２の退避、回復（ＳＴ３３３）をしながら、同時に、レジスタペア１２からのＲ０〜Ｒｎの読み出しと演算器１７での演算実行（ＳＴ３４）が行われる。
【００４１】
図３は、本発明の実施例に係わるマイクロプロセッサの制御方法におけるレジスタバンク切り替え動作の詳細を示す波形図である。ここでは、一例として、ＣＰＵが命令“ＡＤＤ  Ｒ５，Ｒ３，Ｒ４  （Ｒ３とＲ４のデータを加算して演算結果をＲ５へ格納する。）”を実行する場合の入れ替え要求信号２４、ストール要求信号２５、および入れ替え用バス２０〜２２の波形をシステムクロックと共に模式的に示した。
【００４２】
図３では、入れ替え用バス２０〜２２を１つの波形に縮約して示してある。また、パイプラインステージはシステムクロックに同期しており、Ｄステージ以降はＳＴ３３とＳＴ３４が並列動作している。
【００４３】
Ｆステージでは、命令デコーダ１８が命令コード（“ＡＤＤ  Ｒ５，Ｒ３，Ｒ４”）を解釈し、ＣＰＵレジスタ１１、演算器１７、および比較器１５へ必要な信号を出力する。
【００４４】
ＤＳステージは２システムクロックで構成され、最初のＤＳ(１)ステージでは、比較器１５が入れ替え要求信号２４をカレントレジスタ入れ替え回路１６へ出力する。これを受けて、カレントレジスタ入れ替え回路１６が、命令デコーダ１８へストール要求信号２５を出力し、命令デコーダ１８はパイプライン動作を停止させる。
【００４５】
後続のＤＳ(２)ステージでは、カレントレジスタ入れ替え回路１６がレジスタＲ３の入れ替えを指示する信号をＣＰＵレジスタ１１およびレジスタファイル１３へ出力し、Ｒ３およびＢ３が入れ替え用バス２０および２１を介して更新される。
【００４６】
すなわち、レジスタペア１２にある情報（Ｒ３およびＢ３）が退避専用の入れ替え用バス２０を介してレジスタファイル１３へ転送され、同時にレジスタファイル１３にある現在のバンク番号１９に対応した情報が回復専用の入れ替え用バス２１を介して同じレジスタペア１２へ転送される。
【００４７】
このデータ更新は、１システムクロック、つまり、ＤＳ(２)ステージ内で完了する。そして、ＤＳ(２)ステージの終了と共にカレントレジスタ入れ替え回路１６は、命令デコーダ１８へ出力していたストール要求信号２５を解除する。これは、次のＤステージ以降は、パイプライン動作が可能であることを示している。
【００４８】
Ｄステージでは、カレントレジスタ入れ替え回路１６が、レジスタＲ４の入れ替えを指示する信号をＣＰＵレジスタ１１およびレジスタファイル１３へ出力し、Ｒ４およびＢ４が入れ替え用バス２０〜２２を介して更新される。レジスタペア１２更新の詳細は、ＤＳ(２)ステージと同様である。
【００４９】
ＤＳ(２)ステージと異なるのは、Ｄステージでは、バイパス専用の入れ替え用バス２２を介して演算器１７にも直接Ｒ４が転送されることである。これは、演算器１７でのパイプライン動作を１システムクロック早く開始するためである。
【００５０】
Ｅステージでは、演算器１７がＲ３とＲ４の加算を実行すると同時に、カレントレジスタ入れ替え回路１６がレジスタＲ５の入れ替えを指示する信号をＣＰＵレジスタ１１およびレジスタファイル１３へ出力し、Ｒ５およびＢ５が入れ替え用バス２０および２１を介して更新される。
【００５１】
レジスタペア１２更新の詳細は、ＤＳ(２)ステージと同様である。ただし、Ｒ５の入れ替えはＷステージまでに終了していれば良く、また、今の例の場合は、演算結果をＲ５へ格納するので、実際にはＲ５およびＢ５を回復する必要はない。
【００５２】
上記実施例によれば、レジスタバンク切り替え時にレジスタペア１２の単位でレジスタファイル１３との間で退避、回復を行うので、パインライン動作を停止させる期間を２システムクロックに抑制できる。このため、レジスタバンク切り替えによるスループットの低下を抑制できるので、割り込みまたはサブルーチンコールにおける高速処理を実現することができる。
【００５３】
上述の実施例では、レジスタペア１２は、データ（Ｒ０〜Ｒｎ）とバンク番号（Ｂ０〜Ｂｎ）で構成されるとしたが、本発明はこれに限られるものではなく、例えば、レジスタペア１２における情報の変更履歴をダーティビットとしてさらに備えることにより、無駄なパイプラインストールを抑制するように構成することもできる。
【００５４】
また、上述の実施例では、レジスタファイル１３の入出力ポート（退避用および回復用）はそれぞれ１つであるとしたが、本発明はこれに限られるものではなく、入出力ポートの数を増やすことで、さらにパイプラインストールを抑制することもできる。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施例に係わるマイクロプロセッサを示す回路ブロック図。
【図２】本発明の実施例に係わるマイクロプロセッサの制御方法を示すフロー図。
【図３】本発明の実施例に係わるマイクロプロセッサの制御方法におけるレジスタバンク切り替え動作の詳細を示す波形図。
【符号の説明】
【００５６】
１１  ＣＰＵレジスタ
１２  レジスタペア
１３  レジスタファイル
１４  バンクポインタ
１５  比較器
１６  カレントレジスタ入れ替え回路
１７  演算器
１８  命令デコーダ
１９  現在のバンク番号
２０  退避専用の入れ替え用バス
２１  回復専用の入れ替え用バス
２２  バイパス専用の入れ替え用バス
２３  内部バス
２４  入れ替え要求信号
２５  ストール要求信号
２６  選択信号
２７  レジスタバンク番号
【図１】
2008047054.tif 000003
【図２】
2008047054.tif 000004
【図３】
2008047054.tif 000005