(57)【要約】【課題】マイクロプロセッサの処理速度を向上させること。【解決手段】マイクロプロセッサは、データを格納する第１のレジスタセットと、第１のレジスタセットから退避させたデータを格納するとともに、格納したデータを第１のレジスタセットに復帰させる第２のレジスタセットと、第１のレジスタセットから第２のレジスタセットにデータを退避させるとともに、第２のレジスタセットから前記第１のレジスタセットにデータを復帰させるレジスタＩ／Ｆと、スタックメモリに退避させるレジスタの情報を退避レジスタ情報として生成する退避レジスタ情報生成部と、第２のレジスタセットに格納されたデータ及び退避レジスタ情報をスタックメモリに退避させるとともに、退避レジスタ情報を読み出してスタックメモリに退避させたデータを第２のレジスタセットに復帰させるスタックＩ／Ｆと、を有する。【選択図】図１
2011150636.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する第１のレジスタセットと、
前記第１のレジスタセットから退避させたデータを格納するとともに、格納したデータを前記第１のレジスタセットに復帰させる第２のレジスタセットと、
前記第１のレジスタセットから前記第２のレジスタセットにデータを退避させるとともに、前記第２のレジスタセットから前記第１のレジスタセットにデータを復帰させるレジスタＩ／Ｆと、
スタックメモリに退避させるレジスタの情報を退避レジスタ情報として生成する退避レジスタ情報生成部と、
前記第２のレジスタセットに格納されたデータ及び前記退避レジスタ情報を前記スタックメモリに退避させるとともに、前記退避レジスタ情報を読み出して前記スタックメモリに退避させたデータを前記第２のレジスタセットに復帰させるスタックＩ／Ｆと、を備えていることを特徴とするマイクロプロセッサ。
【請求項２】
前記レジスタＩ／Ｆは、デコードされた命令が所定の命令である場合には、前記第１のレジスタセットから前記第２のレジスタセットにデータを複製することを特徴とする、請求項１に記載のマイクロプロセッサ。
【請求項３】
前記所定の命令は、手続き呼び出し命令であることを特徴とする、請求項２に記載のマイクロプロセッサ。
【請求項４】
前記退避レジスタ情報生成部は、所定の個数のビットから成る退避要求情報レジスタを有し、
前記スタックＩ／Ｆは、前記所定の個数と同一数のビットから成る退避実行情報レジスタを有し、前記退避要求情報レジスタと該退避実行情報レジスタとを比較して、前記スタックメモリに退避させるデータ又は前記スタックメモリから復帰させるデータを決定することを特徴とする、請求項１乃至３のいずれか１項に記載のマイクロプロセッサ。
【請求項５】
請求項１乃至４のいずれか１項に記載のマイクロプロセッサを備えていることを特徴とするコンピュータ。
【請求項６】
第１のレジスタセットと第２のレジスタセットとを備えたマイクロプロセッサの制御方法であって、
前記第１のレジスタセットから前記第２のレジスタセットにデータを退避させる工程と、
前記第２のレジスタセットに格納されたデータを前記第１のレジスタセットに復帰させる工程と、
スタックメモリに退避させるレジスタの情報を退避レジスタ情報として生成する工程と、
前記第２のレジスタセットに格納されたデータ及び前記退避レジスタ情報を前記スタックメモリに退避させる工程と、
前記退避レジスタ情報に基いて、前記スタックメモリに退避させたデータを前記第２のレジスタセットに復帰させる工程と、を含むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ及びその制御方法に関し、特に、レジスタ退避、復帰機能を備えたマイクロプロセッサ及びその制御方法に関する。
【背景技術】
【０００２】
近年、電子機器の多機能化に応じて、ソフトウェアも複雑化し、ＯＳ等の機能の切り替えやタスク等の処理が複雑になってきている。マイクロプロセッサに内蔵されている複数の汎用レジスタのみでは処理しきれず、汎用レジスタの内容をメモリへ格納／読み出しをする場合が増えると、処理時間のオーバーヘッドにより、システム全体のパフォーマンスが低下する。したがって、マイクロプロセッサの処理能力の向上が必要とされている。
【０００３】
特許文献１は、マイクロプロセッサの手続き、呼び出し時の処理を効率化して処理速度を向上させることを目的としており、レジスタ退避時間を削減するためにレジスタのセットを複数装備し、レジスタ退避の必要があるときに使用するレジスタを他方のレジスタに切り替えるレジスタ退避方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−０３０２２４号公報（第６〜１０頁、図１〜３）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以下の分析は、本発明者によってなされたものである。
【０００６】
特許文献１に記載されたレジスタ退避方法によると、手続き実行の際におけるレジスタ退避処理の待ち時間が必要となり、マイクロプロセッサの処理速度を向上させることができないという問題がある。
【０００７】
その理由として、特許文献１の図３を参照すると、２つの汎用レジスタを交互に切り替えることでレジスタ退避を行っており、データ復帰動作が行われる前にデータ退避の必要が生じたとき、すでに退避動作が行われた汎用レジスタ２２１ａに格納された値をスタックに退避させた後でなくては、当該汎用レジスタ２２１ａに対して新たなデータの書き込みを行うことができないからである。
【０００８】
手続き呼び出しによるデータ退避が１回だけの場合は、スタックにデータを退避する必要がないためスタック退避待ち時間は発生しないが、手続き呼び出しによるデータ退避が複数回行われる場合は、データ退避を行う度にスタック退避処理の待ち時間が発生してしまう。
【０００９】
特許文献１の図１〜図３を参照すると、例えば、スタックへのデータ退避にプロセッサ１の動作クロックの１０クロック分を要するプロセッサ１で、手続き呼び出し直後にスタックにデータ退避すべき汎用レジスタ２２１ａへの書き込みがある場合、プロセッサ１は汎用レジスタ２２１ａへの書き込みを行うために、プロセッサ１の動作クロックの１０クロック分だけ待たされることになる。スタックに複数のデータを退避させる必要がある場合には、待ち時間はさらに長くなる。
【００１０】
そこで、手続き実行の際におけるレジスタ退避処理の待ち時間を短縮し、マイクロプロセッサの処理速度を向上させることが課題となる。本発明の目的は、かかる課題を解決するマイクロプロセッサ及びその制御方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の視点に係るマイクロプロセッサは、
データを格納する第１のレジスタセットと、
前記第１のレジスタセットから退避させたデータを格納するとともに、格納したデータを前記第１のレジスタセットに復帰させる第２のレジスタセットと、
前記第１のレジスタセットから前記第２のレジスタセットにデータを退避させるとともに、前記第２のレジスタセットから前記第１のレジスタセットにデータを復帰させるレジスタＩ／Ｆと、
スタックメモリに退避させるレジスタの情報を退避レジスタ情報として生成する退避レジスタ情報生成部と、
前記第２のレジスタセットに格納されたデータ及び前記退避レジスタ情報を前記スタックメモリに退避させるとともに、前記退避レジスタ情報を読み出して前記スタックメモリに退避させたデータを前記第２のレジスタセットに復帰させるスタックＩ／Ｆと、を備えている。
【００１２】
本発明の第２の視点に係るマイクロプロセッサの制御方法は、
第１のレジスタセットと第２のレジスタセットとを備えたマイクロプロセッサの制御方法であって、
前記第１のレジスタセットから前記第２のレジスタセットにデータを退避させる工程と、
前記第２のレジスタセットに格納されたデータを前記第１のレジスタセットに復帰させる工程と、
スタックメモリに退避させるレジスタの情報を退避レジスタ情報として生成する工程と、
前記第２のレジスタセットに格納されたデータ及び前記退避レジスタ情報を前記スタックメモリに退避させる工程と、
前記退避レジスタ情報に基いて、前記スタックメモリに退避させたデータを前記第２のレジスタセットに復帰させる工程と、を含む。
【発明の効果】
【００１３】
本発明に係るマイクロプロセッサ及びその制御方法によると、手続き実行の際におけるレジスタ退避処理の待ち時間を短縮し、マイクロプロセッサの処理速度を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係るマイクロプロセッサの構成を示すブロック図である。
【図２】本発明の実施形態に係るマイクロプロセッサの動作を示す状態遷移図である。
【図３】本発明の実施形態に係るマイクロプロセッサの動作を示す状態遷移図である。
【図４】本発明の実施形態に係るマイクロプロセッサの動作を示す状態遷移図である。
【発明を実施するための形態】
【００１５】
本発明の第１の展開形態によると、上記第１の視点に係るマイクロプロセッサが提供される。
【００１６】
本発明の第２の展開形態によると、前記レジスタＩ／Ｆは、デコードされた命令が所定の命令である場合には、前記第１のレジスタセットから前記第２のレジスタセットにデータを複製する、マイクロプロセッサが提供される。
【００１７】
本発明の第３の展開形態によると、前記所定の命令は、手続き呼び出し命令であるマイクロプロセッサが提供される。
【００１８】
本発明の第４の展開形態によると、
前記退避レジスタ情報生成部は、所定の個数のビットから成る退避要求情報レジスタを有し、
前記スタックＩ／Ｆは、前記所定の個数と同一数のビットから成る退避実行情報レジスタを有し、前記退避要求情報レジスタと該退避実行情報レジスタとを比較して、前記スタックメモリに退避させるデータ又は前記スタックメモリから復帰させるデータを決定する、マイクロプロセッサが提供される。
【００１９】
本発明の第５の展開形態によると、第１乃至第４のいずれかの展開形態に記載のマイクロプロセッサを備えている、コンピュータが提供される。
【００２０】
本発明の第６の展開形態によると、上記第２の視点に係るマイクロプロセッサ制御方法が提供される。
【００２１】
本発明に係るマイクロプロセッサによると、手続き呼び出しの際にすべてのレジスタを退避復帰用レジスタセット（第２のレジスタセット）に複製し、以降のレジスタ退避命令実行の際には退避復帰用レジスタセットからスタックメモリへの退避を行っているため、手続きとレジスタのスタック退避の並行実行が可能となり、さらに、手続きからの復帰の際には、次の手続きからの復帰の際に復帰させるレジスタを事前にスタックメモリから退避復帰用レジスタセットに読み込んでいるため、レジスタ復帰の処理待ち時間を削減することができる。
【００２２】
したがって、本発明に係るマイクロプロセッサ及びその制御方法によると、手続き実行の際におけるレジスタ退避処理の待ち時間を短縮し、マイクロプロセッサの処理速度を向上させることができる。
【００２３】
（実施形態）
本発明の実施形態に係るマイクロプロセッサについて、図面を参照して説明する。図１は、本実施形態に係るマイクロプロセッサ１０１の構成を示すブロック図である。
【００２４】
図１を参照すると、マイクロプロセッサ１０１は、スタックＲＡＭ１１０と接続されている。マイクロプロセッサ１０１は、レジスタセット１０２、レジスタＩ／Ｆ１０３、退避復帰用レジスタセット１０４、スタックＩ／Ｆ１０５、退避レジスタ情報生成部１０６、命令デコーダ１０７、バス１０８及びメモリコントローラ１０９を有する。
【００２５】
レジスタセット１０２は、複数のレジスタを含む。
【００２６】
スタックＩ／Ｆ１０５は、退避実行情報レジスタ１１８を有する。
【００２７】
退避レジスタ情報生成部１０６は、退避要求情報レジスタ１１７を有する。
【００２８】
手続き呼び出し命令検出信号１１１は、命令デコーダ１０７から出力され、レジスタＩ／Ｆ１０３、スタックＩ／Ｆ１０５及び退避レジスタ情報生成部１０６に入力される。
【００２９】
レジスタ退避命令検出信号１１２は、命令デコーダ１０７から出力され、スタックＩ／Ｆ１０５及び退避レジスタ情報生成部１０６に入力される。
【００３０】
レジスタ復帰命令検出信号１１３は、命令デコーダ１０７から出力され、レジスタＩ／Ｆ１０３に入力される。
【００３１】
手続き復帰命令検出信号１１４は、命令デコーダ１０７から出力され、スタックＩ／Ｆ１０５に入力される。
【００３２】
退避復帰対象レジスタ識別信号１１５は、命令デコーダ１０７から出力され、レジスタＩ／Ｆ１０３と退避レジスタ情報生成部１０６に入力される。信号１１５は、退避復帰対象とするレジスタの数と同一のビット幅の信号とすることが好ましい。
【００３３】
レジスタセット１０２は、レジスタＩ／Ｆ１０３を介して退避復帰用レジスタセット１０４に接続される。
【００３４】
レジスタＩ／Ｆ１０３は、レジスタ退避を行う場合には、レジスタセット１０２からレジスタデータを入力し、退避復帰用レジスタセット１０４にレジスタデータを出力する。また、レジスタＩ／Ｆ１０３は、レジスタ復帰を行う場合には、退避復帰用レジスタセット１０４からレジスタデータを入力し、レジスタセット１０２にレジスタデータを出力する。
【００３５】
退避復帰用レジスタセット１０４は、スタックＩ／Ｆ１０５、バス１０８及びメモリコントローラ１０９を介して、スタックＲＡＭ１１０に接続される。
【００３６】
スタックＩ／Ｆ１０５は、レジスタ退避を行う場合には、退避復帰用レジスタセット１０４からレジスタデータを入力し、バス１０８とメモリコントローラ１０９を介してスタックＲＡＭ１１０にレジスタデータを出力する。また、スタックＩ／Ｆ１０５は、レジスタ復帰を行う場合には、スタックＲＡＭ１１０からレジスタデータを入力し、退避復帰用レジスタセット１０４にレジスタデータを出力する。
【００３７】
スタックＩ／Ｆ１０５は、退避レジスタ情報生成部１０６から退避レジスタ情報信号１１６を受信して、レジスタデータの入出力を行なう。
【００３８】
退避レジスタ情報信号１１６は、退避要求情報レジスタ１１７の値を含む信号であり、退避復帰対象レジスタ識別信号１１５と同一のビット幅で構成され、スタックＩ／Ｆ１０５に入力される。
【００３９】
バス１０８は、スタックＩ／Ｆ１０５とメモリコントローラ１０９に接続され、レジスタデータの入出力を行なう。
【００４０】
メモリコントローラ１０９は、バス１０８とスタックＲＡＭ１１０に接続され、レジスタデータの入出力を行なう。
【００４１】
スタックＲＡＭ１１０は、メモリコントローラ１０９に接続され、レジスタデータの入出力を行なう。
【００４２】
次に、本実施形態に係るマイクロプロセッサ１０１の動作について説明する。
【００４３】
命令デコーダ１０７は、手続き呼び出し命令をデコードしたときに、手続き呼び出し命令検出信号１１１をアクティブにする。
【００４４】
命令デコーダ１０７は、レジスタ退避命令をデコードしている期間、レジスタ退避命令検出信号１１２をアクティブにする。退避復帰対象レジスタ識別信号１１５の各ビットは、退避復帰対象となる個々のレジスタと１対１に対応している。命令デコーダ１０７がレジスタ退避命令をデコードしている期間、命令デコーダ１０７は退避対象となるレジスタに対応した退避復帰対象レジスタ識別信号１１５のビットをアクティブにする。退避レジスタ情報信号１１６、退避要求情報レジスタ１１７及び退避実行情報レジスタ１１８は、退避復帰対象レジスタ識別信号１１５と同一のビット配置になっている。
【００４５】
命令デコーダ１０７は、レジスタ復帰命令をデコードしている期間、レジスタ復帰命令検出信号１１３をアクティブにする。命令デコーダ１０７がレジスタ復帰命令をデコードしている期間、命令デコーダ１０７が復帰対象となるレジスタに対応した退避復帰対象レジスタ識別信号１１５のビットをアクティブにする。
【００４６】
命令デコーダ１０７は、手続き復帰命令をデコードしている期間、手続き復帰命令検出信号１１４をアクティブにする。
【００４７】
退避レジスタ情報生成部１０６の動作について説明する。
【００４８】
退避レジスタ情報生成部１０６は、手続き呼び出し命令検出信号１１１がアクティブになったとき、退避要求情報レジスタ１１７のすべてのビットをインアクティブにする。なお、マイクロプロセッサ１０１の起動時、すなわち初期状態においても、退避要求情報レジスタ１１７のすべてのビットはインアクティブである。
【００４９】
退避レジスタ情報生成部１０６は、レジスタ退避命令検出信号１１２がアクティブになったとき、アクティブになっている退避復帰対象レジスタ識別信号１１５のビットと同じ退避要求情報レジスタ１１７のビットをアクティブにする。退避要求情報レジスタ１１７は、一度アクティブになったビットはアクティブの状態を保ち続ける。
【００５０】
退避レジスタ情報信号１１６は、退避要求情報レジスタ１１７の値が出力されるため、手続き呼び出し後に退避要求されたすべてのレジスタの情報が出力される。
【００５１】
次に、レジスタＩ／Ｆ１０３の動作について説明する。
【００５２】
レジスタＩ／Ｆ１０３は、手続き呼び出し命令検出信号１１１がアクティブになったとき、レジスタセット１０２の全レジスタを退避復帰用レジスタセット１０４に退避させる。
【００５３】
レジスタＩ／Ｆ１０３は、レジスタ復帰命令検出信号１１３がアクティブになったとき、アクティブになっている退避復帰対象レジスタ識別信号１１５に対応するレジスタを、退避復帰用レジスタセット１０４からレジスタセット１０２に復帰させる。
【００５４】
次に、スタックＩ／Ｆ１０５の動作について説明する。
【００５５】
スタックＩ／Ｆ１０５は、退避レジスタ情報信号１１６をつねに監視し、新たにアクティブになった退避レジスタ情報信号１１６に対応するレジスタを、退避復帰用レジスタセット１０４からスタックＲＡＭ１１０に退避させる。スタックＩ／Ｆ１０５は、退避復帰用レジスタセット１０４からスタックＲＡＭ１１０への退避完了後、退避したレジスタに対応する退避実行情報レジスタ１１８のビットをアクティブにする。
【００５６】
退避要求情報レジスタ１１７と退避実行情報レジスタ１１８の値が異なる場合には、退避が完了していないレジスタが存在する。一方、退避要求情報レジスタ１１７と退避実行情報レジスタ１１８の値が等しい場合には、退避要求のあったレジスタはすべてスタックＲＡＭ１１０に退避されている。
【００５７】
スタックＩ／Ｆ１０５によるスタックＲＡＭ１１０へのレジスタ退避は、手続き呼び出し命令検出信号１１１がアクティブになったときにレジスタＩ／Ｆ１０３がレジスタセット１０２の全レジスタを退避した退避復帰用レジスタセット１０４に対して行われている。したがって、スタックＲＡＭ１１０への退避終了を待つことなく、手続き実行を進めることができる。手続き呼び出しが繰り返し行われたときも、同様に、スタックＲＡＭ１１０への退避終了を待つことなく、手続き実行を進めることができる。
【００５８】
スタックＩ／Ｆ１０５は、手続き呼び出し命令検出信号１１１がアクティブになったとき、退避実行情報レジスタ１１８の値をスタックＲＡＭ１１０に退避し、退避実行情報レジスタ１１８のすべてのビットをインアクティブにする。なお、マイクロプロセッサ１０１の起動時、すなわち初期状態においても、退避実行情報レジスタ１１８のすべてのビットはインアクティブである。
【００５９】
スタックＩ／Ｆ１０５は、手続き復帰命令検出信号１１４がアクティブになったとき、スタックＲＡＭ１１０に退避されていた退避実行情報レジスタ１１８の値を退避実行情報レジスタ１１８に読み出し、読み出された退避実行情報レジスタ１１８の情報を元に退避されていたレジスタをスタックＲＡＭ１１０から退避復帰用レジスタセット１０４に復帰させる。
【００６０】
スタックＩ／Ｆ１０５が退避復帰用レジスタセット１０４に復帰させたレジスタは、手続き復帰後に実行されている手続きが更にレジスタ復帰するときに使用するレジスタをスタックＩ／Ｆ１０５が事前に読み出したものである。
【００６１】
本実施形態に係るマイクロプロセッサ１０１は、レジスタセット１０２を退避／復帰することのできる退避復帰用レジスタセット１０４と、レジスタセット１０２から退避復帰用レジスタセット１０４にデータ退避又は退避復帰用レジスタセットからレジスタセットにデータ復帰させるレジスタＩ／Ｆ１０３と、スタックＲＡＭ１１０への退避対象となるレジスタの情報を生成する退避レジスタ情報生成部１０６と、退避復帰対象レジスタを選択して退避復帰用レジスタセット１０４からスタックＲＡＭ１１０へのデータ退避及び退避レジスタ情報の退避、又は退避レジスタ情報を読み出してスタックＲＡＭ１１０から退避復帰用レジスタセット１０４に退避したレジスタのデータを復帰させるスタックＩ／Ｆ１０５と、を有する。
【００６２】
このとき、手続き呼び出しの際にすべてのレジスタを退避復帰用レジスタセット１０４に複製し、以降のレジスタ退避命令実行の際には退避復帰用レジスタセット１０４からスタックＲＡＭ１１０への退避を行っているため、手続きとレジスタのスタック退避の並列実行が可能となる。さらに、手続きからの復帰の際には、次の手続きからの復帰の際に復帰させるレジスタを事前にスタックＲＡＭ１１０から退避復帰用レジスタセット１０４に読み込んでいるため、レジスタ復帰処理の待ち時間を削減することができる。
【００６３】
図２〜図４は、本実施形態に係るマイクロプロセッサ１０１の動作を示す状態遷移図である。図２〜図４を参照して、マイクロプロセッサ１０１の動作について説明する。
【００６４】
図２〜図４は、スタックＲＡＭ１１０、並びに、マイクロプロセッサ１０１の構成要素であるレジスタセット１０２、退避復帰用レジスタセット１０４、退避要求情報レジスタ１１７及び退避実行情報レジスタ１１８の状態を示す。
【００６５】
ここでは、マイクロプロセッサ１０１は、一例として、レジスタ１０２１とレジスタ１０２２の２つのレジスタから成るレジスタセット１０２を有するものとする。また、退避復帰用レジスタセット１０４は、レジスタセット１０２と同様に、退避復帰用レジスタ１０４１と退避復帰用レジスタ１０４２の２つのレジスタを有するものとする。
【００６６】
図２（ａ）は、手続き呼び出し前の状態を表す。図２（ａ）において、レジスタ１０２１の値を１１Ｈとし、レジスタ１０２２の値を２２Ｈとし、退避要求情報レジスタ１１７及び退避実行情報レジスタ１１８の初期値を００Ｈとし、スタックＲＡＭ１１０の初期状態を退避しているレジスタがない状態とし、退避復帰用レジスタ１０４１及び退避復帰用レジスタ１０４２の値を任意とする。
【００６７】
図２（ｂ）は、命令デコーダ１０７が手続き呼び出し命令をデコードしたときの状態を表す。レジスタＩ／Ｆ１０３は、手続き呼び出し命令検出信号１１１がアクティブになったとき、レジスタセット１０２の全レジスタを退避復帰用レジスタセット１０４に退避させる。図２（ｂ）を参照すると、レジスタセット１０２のレジスタ１０２１、１０２２の値は、それぞれ、退避復帰用レジスタセット１０４の退避復帰用レジスタ１０４１、１０４２に格納される。
【００６８】
スタックＩ／Ｆ１０５は、手続き呼び出し命令検出信号１１１がアクティブになったとき、退避実行情報レジスタ１１８の値をスタックＲＡＭ１１０へ退避する。図２（ｂ）を参照すると、退避実行情報レジスタ１１８の値である００Ｈは、スタックＲＡＭ１１０に格納される。
【００６９】
退避レジスタ情報生成部１０６は、手続き呼び出し命令検出信号１１１がアクティブになったとき、退避要求情報レジスタ１１７のすべてのビットをインアクティブにする。なお、図２（ａ）の初期状態において、退避要求情報レジスタ１１７の値は００Ｈであるため、図２（ｂ）において値は変化しない。
【００７０】
図２（ｃ）は、命令デコーダ１０７がレジスタ退避命令をデコードしたときの状態を表す。図２（ｃ）では、レジスタ１０２１を退避し、退避復帰対象レジスタ識別信号１１５には０１Ｈが出力される。
【００７１】
退避レジスタ情報生成部１０６は、レジスタ退避命令検出信号１１２がアクティブになったとき、アクティブになっている退避復帰対象レジスタ識別信号１１５のビットと同じ退避要求情報レジスタ１１７のビットをアクティブにする。図２（ｃ）を参照すると、退避要求情報レジスタ１１７には０１Ｈが格納される。また、退避要求情報レジスタ１１７に０１Ｈが格納されたことで、退避レジスタ情報信号１１６からも０１Ｈが出力される。
【００７２】
図２（ｄ）は、図２（ｃ）で開始されたスタックＩ／Ｆ１０５による退避復帰用レジスタ１０４１からスタックＲＡＭ１１０への退避動作が完了したときの状態を表す。図２（ｄ）を参照すると、スタックＲＡＭ１１０には、退避復帰用レジスタ１０４１の値１１Ｈが格納される。
【００７３】
スタックＩ／Ｆ１０５は、退避復帰用レジスタ１０４１からスタックＲＡＭ１１０への退避完了後、退避したレジスタに対応する退避実行情報レジスタ１１８のビットをアクティブにする。図２（ｄ）を参照すると、退避実行情報レジスタ１１８には０１Ｈが格納される。
【００７４】
なお、図２（ｄ）においては、手続き実行処理中に、レジスタ１０２１に３３Ｈが書き込まれ、レジスタ１０２２に４４Ｈが書き込まれる。
【００７５】
図３（ａ）は、命令デコーダ１０７が再び手続き呼び出し命令をデコードしたときの状態を表す。レジスタＩ／Ｆ１０３、スタックＩ／Ｆ１０５及び退避レジスタ情報生成部１０６の動作は、図２（ｂ）と同様である。
【００７６】
図３（ｂ）は、命令デコーダ１０７が再びレジスタ退避命令をデコードしたときの状態を表す。図３（ｂ）では、レジスタ１０２２を退避し、退避復帰対象レジスタ識別信号１１５には０２Ｈが出力される。レジスタＩ／Ｆ１０３、スタックＩ／Ｆ１０５及び退避レジスタ情報生成部１０６の動作は、図２（ｃ）と同様である。
【００７７】
図３（ｃ）は、図３（ｂ）にて開始されたスタックＩ／Ｆ１０５による退避復帰用レジスタ１０４１からスタックＲＡＭ１１０への退避動作が完了したときの状態を表す。
【００７８】
本実施形態のマイクロプロセッサ１０１は、図２（ｃ）、（ｄ）に示した１回目のデータ退避動作においても、図３（ｂ）、（ｃ）に示したデータ復帰動作が行われる前のデータ退避動作においても同様の動作を行う。したがって、繰り返しデータ退避動作をする必要が生じた場合であっても、スタック退避の待ち時間が発生することなく、手続き実行を行うことができ、マイクロプロセッサにおけるレジスタ復帰処理の待ち時間を削減することができる。
【００７９】
なお、図３（ｃ）においては、手続き実行処理中に、レジスタ１０２１に５５Ｈが書き込まれ、レジスタ１０２２に６６Ｈが書き込まれる。
【００８０】
図４（ａ）は、命令デコーダ１０７がレジスタ復帰命令をデコードしたときの状態を表す。図４（ａ）では、レジスタ１０２２を復帰し、退避復帰対象レジスタ識別信号１１５には０２Ｈが出力される。
【００８１】
レジスタＩ／Ｆ１０３は、レジスタ復帰命令検出信号１１３がアクティブになったとき、アクティブになっている退避復帰対象レジスタ識別信号１１５に対応するレジスタを退避復帰用レジスタセット１０４からレジスタセット１０２に復帰させる。図４（ａ）を参照すると、レジスタ１０２２には４４Ｈが格納される。
【００８２】
図４（ｂ）は、命令デコーダ１０７が手続き復帰命令をデコードしたときの状態を表す。スタックＩ／Ｆ１０５は、手続き復帰命令検出信号１１４がアクティブになったとき、スタックＲＡＭ１１０へ退避されていた退避実行情報レジスタ１１８の値を退避実行情報レジスタ１１８に読み出す。図４（ｂ）を参照すると、退避実行情報レジスタ１１８には０１Ｈが格納される。
【００８３】
また、スタックＩ／Ｆ１０５は、読み出された退避実行情報レジスタ１１８の情報を元に退避されていたレジスタをスタックＲＡＭ１１０から退避復帰用レジスタセット１０４に復帰させる。図４（ｂ）を参照すると、スタックＲＡＭ１１０から退避復帰用レジスタ１０４２に１１Ｈが格納される。
【００８４】
図４（ｃ）は、命令デコーダ１０７がレジスタ復帰命令をデコードしたときの状態を表す。図４（ｃ）では、レジスタ１０２１を復帰し、退避復帰対象レジスタ識別信号１１５には０１Ｈが出力される。
【００８５】
レジスタＩ／Ｆ１０３は、レジスタ復帰命令検出信号１１３がアクティブになったとき、アクティブになっている退避復帰対象レジスタ識別信号１１５に対応するレジスタを退避復帰用レジスタセット１０４からレジスタセット１０２に復帰させる。図４（ｃ）を参照すると、レジスタ１０２１には１１Ｈが格納される。
【００８６】
図４（ｄ）は、命令デコーダ１０７が手続き復帰命令をデコードしたときの状態を表す。スタックＩ／Ｆ１０５は、手続き復帰命令検出信号１１４がアクティブになったとき、スタックＲＡＭ１１０へ退避されていた退避実行情報レジスタ１１８の値を退避実行情報レジスタ１１８に読み出す。図４（ｄ）を参照すると、退避実行情報レジスタ１１８には００Ｈが格納される。
【００８７】
スタックＩ／Ｆ１０５は、読み出された退避実行情報レジスタ１１８の情報を元に退避されていたレジスタをスタックＲＡＭ１１０から退避復帰用レジスタセット１０４に復帰させる。しかし、図４（ｄ）において、退避実行情報レジスタ１１８に格納された値は００Ｈであるため、スタックＲＡＭ１１０からのレジスタ復帰は行わない。
【００８８】
本実施形態のマイクロプロセッサ１０１は、図４（ｂ）に示した手続き復帰の際に、次の手続きからの復帰の際に復帰されるレジスタを事前にスタックＲＡＭ１１０から退避復帰用レジスタセット１０４に読み込んでいる。したがって、図４（ａ）、図４（ｃ）に示したレジスタ復帰の際には、スタック退避待ち時間が発生しない。
【００８９】
本実施形態のマイクロプロセッサ１０１によると、手続き実行の際のレジスタ退避処理待ち時間が削減でき、マイクロプロセッサ１０１の処理速度を向上させることができる。手続き呼び出しの際にすべてのレジスタを退避復帰用レジスタセット１０４に複製し、レジスタ退避命令実行の際には退避復帰用レジスタセット１０４からスタックＲＡＭ１１０への退避を行うため、手続きとレジスタのスタック退避の並列実行が可能となるからである。
【００９０】
また、本実施形態のマイクロプロセッサ１０１によると、手続きからの復帰の際のレジスタ復帰処理待ち時間を削減することができる。手続きからの復帰の際に、次の手続きからの復帰の際に復帰されるレジスタを事前にスタックＲＡＭ１１０から退避復帰用レジスタセット１０４に読み込んでいるからである。
【００９１】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００９２】
１０１  マイクロプロセッサ
１０２  レジスタセット
１０３  レジスタＩ／Ｆ
１０４  退避復帰用レジスタセット
１０５  スタックＩ／Ｆ
１０６  退避レジスタ情報生成部
１０７  命令デコーダ
１０８  バス
１０９  メモリコントローラ
１１０  スタックＲＡＭ
１１１  手続き呼び出し命令検出信号
１１２  レジスタ退避命令検出信号
１１３  レジスタ復帰命令検出信号
１１４  手続き復帰命令検出信号
１１５  退避復帰対象レジスタ識別信号
１１６  退避レジスタ情報信号
１１７  退避要求情報レジスタ
１１８  退避実行情報レジスタ
１０２１、１０２２  レジスタ
１０４１、１０４２  退避復帰用レジスタ
【図１】
2011150636.tif 000003
【図２】
2011150636.tif 000004
【図３】
2011150636.tif 000005
【図４】
2011150636.tif 000006