(57)【要約】【課題】レジスタの情報の退避をより簡単に実現する。【解決手段】複数のレジスタ群を有するプロセッサにおいて、主レジスタの内容を他のレジスタに送信し退避する。【選択図】図１
2019046138.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
第１のレジスタ群と、
第２のレジスタ群と、
前記第１のレジスタ群に記憶されている情報に基づいて演算を実行する演算部と、
前記第１のレジスタ群に記憶されている情報を前記第２のレジスタ群に送信するレジスタ退避制御部と、
を備えた、プロセッサ。
【請求項２】
請求項１に記載のプロセッサにおいて、前記レジスタ退避制御部は、前記第２のレジスタ群への情報の送信を第１の独立処理が実行されることに応じて行う、プロセッサ。
【請求項３】
請求項１又は２に記載のプロセッサにおいて、前記第２のレジスタ群は、前記第１のレジスタ群に記憶されている情報をストアする、プロセッサ。
【請求項４】
請求項３に記載のプロセッサにおいて、使用中レジスタ群を示すレジスタをさらに備え、
前記プロセッサは、前記第２のレジスタ群を示す情報を使用中レジスタ群を示すレジスタにストアする、プロセッサ。
【請求項５】
請求項４に記載のプロセッサにおいて、前記使用中レジスタ群を示すレジスタにストアされている前記第２のレジスタ群を示す情報に基づいて、前記レジスタ退避制御部は、前記第２のレジスタ群に記憶されている情報を前記第１のレジスタ群に送信する、プロセッサ。
【請求項６】
請求項５に記載のプロセッサにおいて、前記第１のレジスタ群は、前記第２のレジスタ群に記憶されている情報をストアする、プロセッサ。
【請求項７】
請求項４ないし６のいずれか一つに記載のプロセッサにおいて、第３のレジスタ群をさらに備え、
前記レジスタ退避制御部は、第２の独立処理が実行されることに応じて前記第１のレジスタ群に記憶されている情報を前記第３のレジスタ群に送信し、前記第３のレジスタ群を示す情報を前記使用中レジスタ群を示すレジスタにストアする、プロセッサ。
【請求項８】
請求項１ないし７のいずれか一つに記載のプロセッサは、レジスタ転送命令に少なくとも部分的に基づいて動作する。
【請求項９】
請求項１ないし８のいずれか一つに記載のプロセッサは遊技機用である。
【請求項１０】
コンピュータプログラムであって、
第１のレジスタ群に記憶されている情報に基づいて処理を実行するプロセッサに、
独立処理を実行するステップと、
前記独立処理が実行されたことに応じて、第１のレジスタ群に記憶されている情報を第２のレジスタ群に送信するステップと、
前記第２のレジスタ群を示す情報を使用中レジスタ群を示すレジスタにストアするステップと、
前記使用中レジスタ群を示すレジスタにストアされている前記第２のレジスタ群を示す情報に基づいて、前記第２のレジスタ群に記憶されている情報を前記第１のレジスタ群に送信するステップと、
を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のレジスタ群を有するプロセッサに関する。
【背景技術】
【０００２】
従来のプロセッサにおいて、実行している処理を中断し、サブルーチンや割込み処理等の独立した処理を実行する場合はレジスタの情報を退避することが求められている。
【０００３】
プロセッサを用いたプログラムの実行において、レジスタの情報を退避することを目的として、プロセッサの外部にあるワークメモリなどのＲＡＭにレジスタの情報を退避する技術が知られている。しかしながら、この技術を用いた場合、ＲＡＭへのスタック処理や、メモリ管理が必要となっていた。また、この技術は、プロセッサの外部に配置されるRAMなどの装置を用いるため、制御ソフト（ＯＳ）などのソフトウエアで実装されることから、処理速度が遅くなる問題を有している。
【０００４】
さらに、特許文献１の図１２や図２１などに記載されているように、複数のレジスタ群（レジスタバンク）を用いたプロセッサが知られている。本技術において、演算で用いられるレジスタである主レジスタは、セレクタによって切り替えられる。したがって、レジスタ群の数だけ、セレクタが必要となる。これは、セレクタを接続するための回路が複雑になることを意味する。レジスタ群が増えると、セレクタが多段になることから、処理速度が低下する。また、接続回路の数が増加することから、プロセッサの周波数を高くすることが難しくなる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１６１４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
レジスタの情報の退避をより簡単に実現する。
【課題を解決するための手段】
【０００７】
複数のレジスタ群を有するプロセッサにおいて、主レジスタの内容を他のレジスタに転送し退避する。
【０００８】
本発明の実施例によるプロセッサは、第１のレジスタ群と、第２のレジスタ群と、前記第１のレジスタ群に記憶されている情報に基づいて演算を実行する演算部と、前記第１のレジスタ群に記憶されている情報を前記第２のレジスタ群に送信するレジスタ退避制御部とを備えることができる。
【０００９】
本発明の実施例によるコンピュータプログラムは、第１のレジスタ群に記憶されている情報に基づいて処理を実行するプロセッサに、独立処理を実行するステップと、前記独立処理が実行されたことに応じて、第１のレジスタ群に記憶されている情報を第２のレジスタ群に送信するステップと、前記第２のレジスタ群を示す情報をＲＢレジスタにストアするステップと、前記ＲＢレジスタにストアされている前記第２のレジスタ群を示す情報に基づいて、前記第２のレジスタ群に記憶されている情報を前記第１のレジスタ群に送信するステップとを実行させることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施例による装置を示す。
【図２】図２は、本実施例によるメイン処理及びサブルーチン処理の処理フローを示す。
【図３】図３は、割込み処理の処理フローを示す。
【図４】図４は、処理の状態を示した状態図である。
【図５】図５は、各レジスタ群にストアされる情報の遷移を示す。
【発明を実施するための形態】
【００１１】
図１は、本発明の実施例による装置を示す。装置１００は、メモリ１０５、外部バス１１０及びプロセッサ１２０を少なくとも有する。メモリ１０５及びプロセッサ１２０は、外部バス１１０を介して互いに接続される。これにより、プロセッサ１２０は、メモリ１０５から情報を読み取り、メモリ１０５に情報を書き込むことができる。メモリ１０５は、ROM、RAMとも称され、プログラム格納やワークメモリとして機能することができる記憶装置である。
【００１２】
プロセッサ１２０は、命令フェッチ部１２２、命令デコード部１２４、実行制御部１２６、演算部１２８、内部バス１３０、レジスタ１３２、レジスタ退避制御部１７０、第１の退避レジスタ群１７５、第２の退避レジスタ群１８０、及び、第３の退避レジスタ群１８５を有する。
【００１３】
レジスタ１３２は、例えば、インタラプトレジスタであるIレジスタ１３４、リフレッシュレジスタであるＲレジスタ１３６、スタックポインタであるＳＰレジスタ１３８、プログラムカウンタであるＰＣレジスタ１４０、現在使用中のレジスタ群を示すＲＢレジスタ１４１、及び主レジスタ群１４２を有する。主レジスタ群１４２は、例えば、汎用レジスタなどとして、Ｑレジスタ１４４、Aレジスタ１４６、Ｆレジスタ１４８、Ｂレジスタ１５０、Ｃレジスタ１５２、Ｄレジスタ１５４、Ｅレジスタ１５６、Ｈレジスタ１５８及びＬレジスタ１６０を有し、インデックスレジスタとして、ＩＸレジスタ１６２及びＩＹレジスタ１６４を有する。言い換えると、主レジスタ群１４２は、演算部１２８が実行する演算に用いるための一又は二以上のレジスタと、演算に関して用いられる一又は二以上のインデックスレジスタとを少なくとも有する。
【００１４】
第１、２及び３の退避レジスタ群１７５、１８０、１８５は、主レジスタ群１４２と同様の要素を有することができる。第１、２及び３の退避レジスタ群１７５、１８０、１８５は、主レジスタ群１４２にストアされている情報を退避するために用いることができる。RBレジスタ１４１は、現在の主レジスタ群１４２にストアされている情報がいずれのレジスタ群にストアされていた情報であるかを示す情報をストアするレジスタである。いずれのレジスタ群にストアされていた情報であるかを示す情報は、言い換えると、主レジスタ群１４２の情報の退避先のレジスタ群を特定することができる。他の実施例において、ＲＢレジスタは、上記の情報以外をストアしてもよい。
【００１５】
いずれのレジスタ群にストアされていた情報であるかを示す情報は、例えば、現在の主レジスタ群１４２にストアされている情報が、当初から主レジスタ群１４２にストアされていた情報、第１の退避レジスタ群１７５にストアされていた情報、第２の退避レジスタ群１８０にストアされていた情報及び第３の退避レジスタ群１８５にストアされていた情報である場合、それぞれ、「０」、「１」、「２」及び「３」とすることができる。一実施例において、処理はメイン処理から通常開始されることから、ＲＢレジスタ１４１の初期値は「０」とすることができる。本実施例において、退避レジスタ群は３つ示したが、当業者であれば理解されるように、退避レジスタ群は１つ以上であればよい。
【００１６】
命令フェッチ部１２２は、ＰＣレジスタ１４０が示すアドレスに基づいて、メモリ１０５に格納されている命令をメモリ１０５からフェッチする。命令デコード部１２４は、フェッチした命令をデコードする。実行制御部１２６は、デコードされた命令に基づいて、演算部１２８を介してレジスタ１３２及びメモリ１０５などの情報の演算、ロード及びストア等を行う。実行制御部１２６は、各命令をクロックにしたがってステートマシーンとして実行する。
【００１７】
任意の処理を実行する命令は、１組の命令として規定することができ、各命令内における各サイクルごとに実行される。命令サイクルは、例えば、メモリ１０５から命令をフェッチする第一のサイクル、メモリ１０５からレジスタ１３２に情報をロードする第２のサイクル、ロードした情報を演算部１２８が演算を実行する第３のサイクル、割込みを検出する第４のサイクル等を含む命令とすることができる。
【００１８】
実行制御部１２６が割込みを検出する第４のサイクルにおいて、プロセッサ１２０の実行制御部１２６は、外部の割込み要求を監視し、割込みの発生を検出すると、次の命令を実行するプログラムカウンタ（ＰＣ）をメモリ１０５のスタック領域にセーブして、ＰＣレジスタ割込み制御プログラムの先頭アドレスをセットすることにより、プログラムの実行を割込み制御プログラムへと移す。
【００１９】
本プロセッサで定義されたレジスタ転送命令は、メモリ１０５から命令フェッチ部１２０によりフェチされ、命令デコード部１２４によりデコードされると、デコードされた命令に基づいて、実行制御部１２６によりＲＢレジスタへ、転送先の退避レジスタ群を示す転送先レジスタ群番号（０、１、２、３）をストアすると共に、レジスタ退避制御部１７０を動作させることによって、主レジスタ群と任意の退避レジスタ群との間でレジスタ内データの入れ替え転送を行うことができる。レジスタ転送命令は、コンピュータプログラムとして実行することができ、コンピュータプログラムは、メモリ１０５に記憶されている。一実施例において、メモリ１０５は、例えば、ＲＯＭ（図示せず）などの不揮発性記憶装置やＲＡＭなどのメモリ装置、又は、それらの組み合わせとすることができる。上記構成により、プロセッサ１２０は、メモリ１０５に記憶されたコンピュータプログラムに基づいて順次実行動作することができる。
【００２０】
レジスタ転送命令は、サブルーチン処理や、割込み処理などにおいて実行される。例えばプログラム実行中において、実行中に任意に処理が呼び出される処理（例えば、割込み処理）において、プロセッサ１２０は、レジスタ転送命令を用いて主レジスタ群１４２の情報を退避してもよい。退避されるべき退避レジスタ群は、例えば、シリアル入出力（ＳＩＯ）による割込み処理が実行される場合、第１の退避レジスタ群１７５であり、タイマによる割込み処理が実行される場合、第２の退避レジスタ群１８０であり、又は、サブルーチン処理が実行される場合、第３の退避レジスタ群１８５であるとして予め定めておくことができる。
【００２１】
本実施例のプロセッサ１２０において、複数の退避レジスタ群のうち、第１の退避レジスタ群１７５の一つのみが退避レジスタとして用いられてもよい。この場合、メイン処理の命令から移行される処理を所定の割込み処理やサブルーチン処理の内の一つに予め決めておくことができる。この場合、所定のサブルーチン処理又は割込み処理を実行するとき、プロセッサ１２０は、レジスタ転送命令により主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送し、退避する。その後、プロセッサ１２０は所定の割込み処理やサブルーチン処理を実行する。この処理の実行を終了したとき、呼び出し元の処理へ戻る復帰命令を実行する前に、レジスタ転送命令により呼び出し元の処理が使用していた情報を、当該情報をストア（退避）している第１の退避レジスタ群１７５から主レジスタ群１４２に転送し、移動する。これにより、呼び出し元の処理であるメイン処理の命令が実行（再開）される。
【００２２】
本実施例において、複数の退避レジスタ群を用いることもできる。上記のサブルーチン処理又は割込み処理を実行するとき、各処理の先頭でレジスタ転送命令を実行し、各レジスタ群の情報を所定のレジスタ群（主レジスタ群及び退避レジスタ群）に転送し、退避する。その後、プロセッサ１２０は、サブルーチン処理又は割込み処理を実行する。この処理の実行を終了したとき、プロセッサ１２０は、呼び出し元の処理へ戻る復帰命令を実行する前に、レジスタ転送命令を実行し、呼び出し元の処理が使用していた情報を、当該情報をストアしている退避レジスタ群から主レジスタ群１４２に転送し、移動する。
【００２３】
図５は、各レジスタ群にストアされる情報の遷移を示す。例えば、「現在の処理対象の主レジスタ群」にストアされている情報が主レジスタ群１４２の情報であり、「命令実行後の処理対象の主レジスタ群」にストアされる情報が第１の退避レジスタ群１７５の情報とする場合、実行制御部１２６は、レジスタ退避制御部１７０を用いて、主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送し、以前にあった第１の退避レジスタ群１７５の情報を主レジスタ群１４２に転送する（状態５１０）。ここで、「現在の処理対象の主レジスタ群」の情報は、現在主レジスタ群１４２にストアされている情報であって、その後、いずれかの退避レジスタに退避されるべき情報を意味する。「命令実行後の処理対象の主レジスタ群」の情報は、現在いずれかの退避レジスタ群にストアされている情報であって、その後、主レジスタ群に転送されるべき情報を意味する。
【００２４】
一実施例において、主レジスタ群１４２の情報を第１の退避レジスタ群に退避する場合、実行制御部１２５は、レジスタ退避制御部１７０を用いて、主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送するのみでもよい。すなわち、第１の退避レジスタ群１７５の情報は、主レジスタ群１４２に転送されなくてもよく、主レジスタ群１４２の情報のみが退避される。第２の退避レジスタ群１８０及び第３の退避レジスタ群１８５を用いた実施例においても同様とすることができる。
【００２５】
「現在の処理対象の主レジスタ群」にストアされている情報が当初の第１の退避レジスタ群１７５にストアされていた情報であり、「命令実行後の処理対象の主レジスタ群」にストアされる情報が当初の主レジスタ群１４２にストアされていた情報である場合、実行制御部１２５は、レジスタ退避制御部１７０を用いて、主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送し、以前にあった第１の退避レジスタ群１７５の情報を主レジスタ群１４２に転送する（状態５２５）。一実施例において、第１の退避レジスタ群の情報を主レジスタ群１４２の情報に転送（復帰）させる場合、実行制御部１２５は、レジスタ退避制御部１７０を用いて、退避レジスタ群１７５の情報を第１の主レジスタ群１４２に転送するのみでもよい。第２の退避レジスタ群１８０及び第３の退避レジスタ群１８５を用いた実施例においても同様とすることができる。
【００２６】
状態５１０及び状態５２５で示される状態の変化により、呼び出し元の処理の実行、その後、呼び出し先の処理から呼び出し元の処理への復帰が実現される。
【００２７】
上述の状態５１０及び５２５の動作と同様に、状態５１５及び５３０の動作、並びに、状態５２０及び５３５の動作が実行される。それらの状態の変化により、呼び出し元の処理の実行、その後、呼び出し先の処理から呼び出し元の処理への復帰が実現される。
【００２８】
「現在の処理対象の主レジスタ群」にストアされている情報が当初の第１の退避レジスタ群１７５にストアされていた情報であり、「命令実行後の処理対象の主レジスタ群」にストアされる情報が当初の第２の退避レジスタ群１８０にストアされている情報である場合、実行制御部１２５は、レジスタ退避制御部１７０を用いて、主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送し、以前にあった第１の退避レジスタ群１７５の情報を主レジスタ群１４２に転送し（状態５４０）、主レジスタ群１４２の情報を第２の退避レジスタ群１８０に転送し、以前にあった第２の退避レジスタ群１８０の情報を主レジスタ群１４２に転送する（状態５４５）。
【００２９】
同様に、「現在の処理対象の主レジスタ群」にストアされている情報が当初の第１の退避レジスタ群１７５にストアされていた情報であり、「命令実行後の処理対象の主レジスタ群」にストアされる情報が当初の第３の退避レジスタ群１８５にストアされている情報である場合の処理も状態５５０及び５５５のように実現される。
【００３０】
状態５６０及び５６５、５７０及び５７５、５８０及び５８５、並びに、５９０及び５９５に関し、上述の状態５４０及び５４５又は状態５５０及び５５５の動作と同様にレジスタ群の情報が転送される。
【００３１】
図２は、本実施例によるメイン処理及びサブルーチン処理の処理フローを示す。まず、プロセッサ１２０は、メイン処理の実行を開始する（ステップ２０３）。プロセッサ１２０は、レジスタ転送命令を実行しレジスタ群１４２を使用する初期化処理を行う（ステップ２０６）。ステップ２０６では、電源リセットや外部リセットによりＲＢレジスタは「０」にセットされるため、通常、レジスタ群の情報の転送は必要ないが、例えば、デバッグ時などに、レジスタ群の情報が入れ替えられているときなどに対応して、現在使用中レジスタ群を示すＲＢレジスタの情報初期化のための転送処理が行われる。プロセッサ１２０は、主レジスタ群１４２にストアされている情報を用いてメイン処理を実行する（ステップステップ２０９）。処理Ａは、メイン処理の一部である。プロセッサ１２０は、サブルーチン処理を呼び出し（ステップ２１２）、サブルーチン処理の実行を開始する（ステップ２３０）。プロセッサ１２０は、RBレジスタ１４１にストアされている情報（現在の主レジスタ群１４２がストアする情報が主レジスタ群１４２に当初からストアされていた情報であることを示す情報「０」）を呼出し時レジスタ群情報としてメモリ１０５（例えば、スタック領域）にセーブする（ステップ２３２）。プロセッサ１２０は、レジスタ転送命令を実行する(ステップ２３３)。ステップ２３３において、プロセッサ１２０は、主レジスタ群１４２にストアされている情報に転送先である第３の退避レジスタ群１８５を示す情報「３」をRBレジスタ１４１にストアする。さらに、プロセッサ１２０は、RBレジスタ１４１の情報に基づいて、主レジスタ群１４２の情報を第３の退避レジスタ群１８５に転送し、以前にあった第３の退避レジスタ群１８５の情報を主レジスタ群１４２に転送する。これにより、主レジスタ群１４２及び第３の退避レジスタ群１８５の情報が入れ替えられる。
【００３２】
プロセッサ１２０は、転送前に第３の退避レジスタ群１８５にストアされていた情報（転送後に主レジスタ群１４２にストアされている情報）を用いてサブルーチン処理を実行する（ステップ２３６、２３９）。ここで、処理Ｄ及びＥは、サブルーチン処理で定義される処理である。これにより、本実施例において、プロセッサ１２０は、処理を実行するとき、常に主レジスタ群１４２にストアされている情報のみを用いて処理を実行することから、プロセッサ１２０は、レジスタ群を切り替えるスイッチや、セレクタなどの要素を有する必要がない。
【００３３】
プロセッサ１２０は、ステップ２３２においてメモリ１０５にストアした呼出し時レジスタ群情報をロードする（ステップ２４０）。プロセッサ１２０は、レジスタ転送命令を実行する(ステップ２４２)。ステップ２４２において、プロセッサ１２０は、RBレジスタ１４１の情報及びステップ２４０においてロードしたメモリ１０５の情報に基づいて、主レジスタ群１４２及び第３の退避レジスタ群１８５の情報を入れ替える処理を実行する。プロセッサ１２０は、レジスタ転送命令により第３の退避レジスタ１８５の情報を主レジスタ群１４２に転送し、以前にあった主レジスタ群１４２の情報を第３の退避レジスタ群１８５に転送する。これにより、プロセッサ１２０は、サブルーチン処理実行前に第１の退避レジスタ群１７５にストアされていた情報を用いることができる。プロセッサ１２０は、レジスタ転送命令の実行により、現在の主レジスタ群１４２の情報が当初の主レジスタ群１４２にストアされていた情報であることを示す情報「０」をRBレジスタ１４１にストアする。
【００３４】
プロセッサ１２０は、サブルーチン処理を終了し（ステップ２４５）、制御をメイン処理に返す（ステップ２１２）。その後、プロセッサ１２０は、主レジスタ群１４２を用いて、メイン処理の一部である処理Ｂ及びＣを実行し、メイン処理を終了する（ステップ２１５、２１８、２２１）。
【００３５】
本実施例でのサブルーチン処理はメインルーチンから呼出されているが、割込み処理より呼出されても良い。
【００３６】
図３は、割込み処理の処理フローを示す。割込み処理は、図２で示したようなメイン処理のフロー２００及びサブルーチン処理及びその他の割込み処理のいずれかのステップにおいて呼び出されて実行される。
【００３７】
メイン処理又はサブルーチン処理又はその他の割込み処理中において、割込み処理が呼び出される（ステップ３０５）。プロセッサ１２０は、RBレジスタ１４１にストアされている情報を呼出し時レジスタ群情報としてメモリ１０５にセーブする(ステップ３１０)。ステップ３１０において、プロセッサ１２０は、まず、RBレジスタ１４１にストアされている情報である退避レジスタ群を示す情報（現在の主レジスタ群１４２がストアする情報がいずれのレジスタ群にストアされていたかを示す情報）を呼出し時レジスタ群情報としてメモリ１０５（例えば、スタック領域等）に保存する。ここで、呼出し時レジスタ群情報には、実行対象の割込み処理の呼び出し元の処理が、メイン処理である場合、「０」、サブルーチン処理である場合、「３」、ＳＩＯによる割込み処理である場合、「１」、タイマによる割込み処理である場合、「２」が設定されている。
【００３８】
さらに、プロセッサ１２０は、レジスタ転送命令を実行する（ステップ３１５）。例えば、以下の通り、転送を行うことができる。
【００３９】
１）割込み処理がＳＩＯによる割込み処理であるとき
１−１）メイン処理からＳＩＯによる割込み処理が呼び出される場合
プロセッサ１２０は、主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送し、以前にあった第１の退避レジスタ群１７５の情報を主レジスタ群１４２に転送する。これにより、主レジスタ群１４２及び第１の退避レジスタ群１７５の情報が入れ替えられる。
１−２）タイマによる割込み処理からＳＩＯによる割込み処理が呼び出される場合
プロセッサ１２０は、主レジスタ群１４２の情報を第２の退避レジスタ群１８０に転送し、以前にあった第２の退避レジスタ群１８０の情報を主レジスタ群１４２に転送し、その後、主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送し、以前にあった第１の退避レジスタ群１７５の情報を主レジスタ群１４２に転送する。すなわち、主レジスタ群１４２及び第２の退避レジスタ群１８０の情報が入れ替えられ、その後、主レジスタ群１４２及び第１の退避レジスタ群１７５の情報が入れ替えられる。
１−３）サブルーチン処理からＳＩＯによる割込み処理が呼び出される場合
プロセッサ１２０は、主レジスタ群１４２の情報を第３の退避レジスタ群１８５に転送し、以前にあった第３の退避レジスタ群１８５の情報を主レジスタ群１４２に転送し、その後、主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送し、以前にあった第１の退避レジスタ群１７５の情報を主レジスタ群１４２に転送する。すなわち、主レジスタ群１４２及び第３の退避レジスタ群１８５の情報が入れ替えられ、その後、主レジスタ群１４２及び第１の退避レジスタ群１７５の情報が入れ替えられる。
【００４０】
上記の１−１）、１−２）及び１−３）の各処理において、プロセッサ１２０は、レジスタ転送命令の実行により、主レジスタ群１４２には第１の退避レジスタ群１７５の情報がストアされていること示す情報「１」をRBレジスタ１４１にストアする。
【００４１】
２）割込み処理がタイマによる割込み処理であるとき
２−１）メイン処理からタイマによる割込み処理が呼び出される場合
プロセッサ１２０は、主レジスタ群１４２の情報を第２の退避レジスタ群１８０に転送し、以前にあった第２の退避レジスタ群１８０の情報を主レジスタ群１４２に転送する。これにより、主レジスタ群１４２及び第２の退避レジスタ群１８０の情報が入れ替えられる。
２−２）ＳＩＯによる割込み処理からタイマによる割込み処理が呼び出される場合
プロセッサ１２０は、主レジスタ群１４２の情報を第１の退避レジスタ群１７５に転送し、以前にあった第１の退避レジスタ群１７５の情報を主レジスタ群１４２に転送し、その後、主レジスタ群１４２の情報を第２の退避レジスタ群１８０に転送し、以前にあった第２の退避レジスタ１８０の情報を主レジスタ群１４２に転送する。すなわち、主レジスタ群１４２及び第１の退避レジスタ群１７５の情報が入れ替えられ、その後、主レジスタ群１４２及び第２の退避レジスタ群１８０の情報が入れ替えられる。
２−３）サブルーチン処理からタイマによる割込み処理が呼び出される場合
プロセッサ１２０は、主レジスタ群１４２の情報を第３の退避レジスタ群１８５に転送し、以前にあった第３の退避レジスタ群１８５の情報を主レジスタ群１４２に転送し、その後、主レジスタ群１４２の情報を第２の退避レジスタ群１８０に転送し、以前にあった第２の退避レジスタ群１８０の情報を主レジスタ群１４２に転送する。すなわち、主レジスタ群１４２及び第３の退避レジスタ群１８５の情報が入れ替えられ、その後、主レジスタ群１４２及び第２の退避レジスタ群１８０の情報が入れ替えられる。
【００４２】
上記の２−１）、２−２）及び２−３）の各処理において、プロセッサ１２０は、レジスタ転送命令の実行により、主レジスタ群１４２には第２の退避レジスタ群１８０の情報がストアされていること示す情報「２」をRBレジスタ１４１にストアする。
【００４３】
プロセッサ１２０は、転送後の主レジスタ群１４２にストアされている情報（転送前に第１の退避レジスタ群１７５又は第２の退避レジスタ群１８０にストアされていた情報）を用いて割込み処理を実行する（ステップ３２０）。ここで、処理Ｆは、割込み処理で定義される処理である。
【００４４】
処理Ｆを実行することで、割込み処理が完了する。その後、プロセッサ１２０は、ステップ３１０においてメモリ１０５にストアした呼出し時レジスタ群情報をロードする（ステップ３２５）。これにより、プロセッサ１２０は、ＲＢレジスタの情報及びロードした呼出し時レジスタ群情報に基づいて、現在主レジスタ群１４２にストアされている情報が当初いずれのレジスタ群にストアされているか、及び、当初主レジスタ群１４２にストアされていた情報がいずれのレジスタ群にストアされているかを検知することができる。
【００４５】
プロセッサ１２０は、レジスタ転送命令を実行する(ステップ３３０)。ステップ３３０において、ＲＢレジスタ１４１の情報及びステップ３２５においてメモリ１０５よりロードした呼出し時レジスタ群情報に基づいて、レジスタ群の情報の転送が行われる。まず、プロセッサ１２０は、主レジスタ群１４２の情報をＲＢレジスタ群１４１の情報が示す退避レジスタ群に転送し、以前にあったＲＢレジスタ１４１の情報が示す退避レジスタ群の情報を主レジスタ群１４２に転送する。これにより、主レジスタ群１４２の情報とＲＢレジスタ１４１の情報が示す退避レジスタ群の情報とが入れ替えられる。また、ステップ３２５においてメモリ１０５からロードした呼出し時レジスタ群情報が「０」では無い場合（割込み処理の呼び出し元がメイン処理では無い場合）、プロセッサ１２０は、主レジスタ群１４２の情報を呼出し時レジスタ群情報が示す退避レジスタ群に転送し、以前にあった呼出し時レジスタ群情報が示す退避レジスタ群の情報を主レジスタ群１４２に転送する。プロセッサ１２０は、レジスタ転送命令の実行により、呼出し時レジスタ群情報をRBレジスタ１４１にストアする。これにより、割込み処理がメイン処理以外から呼び出される場合、プロセッサ１２０は、処理を、割込み処理から他の割込み処理や、サブルーチン処理に復帰させることができる。プロセッサ１２０は、割込み処理を終了し（ステップ３３５）、他の割込み処理や、サブルーチン、やメイン処理を実行する。
【００４６】
他の実施例において、メイン処理及びサブルーチン処理が同じ主レジスタ群１４２の情報を用いており、かつ、割込み処理が１つの場合（１つの退避レジスタ群によって本実施例が実現される場合）、１つの退避レジスタ群が常に特定されていることから、使用中の主レジスタ群の情報がいずれの退避レジスタ群にストアされていた情報であるかを示す情報をRBレジスタにストアしなくてもよい。
【００４７】
図４は、処理の状態を示した状態図である。ｔ0において、メイン処理が実行され、主レジスタ群１４２の情報を用いて処理が実行される。ｔ1において、サブルーチン処理が実行され、第３の退避レジスタ群１８５にストアされていた情報を用いて処理が実行される。ｔ2において、SIOによる割込み処理が実行され、第１のレジスタ群１７５にストアされていた情報を用いて処理が実行される。ｔ3において、処理が割込み処理からサブルーチン処理に復帰し、サブルーチン処理の続きが実行され、ｔ2の直前に第３のレジスタ群１８５にストアされていた情報を用いて処理が実行される。ｔ4において、処理がサブルーチン処理からメイン処理に復帰し、メイン処理の続きが実行され、ｔ1の直前に主レジスタ群１４２に保存されていた情報を用いて処理が実行される。ｔ5において、タイマによる割込み処理が実行され、第２のレジスタ群１８０にストアされていた情報を用いて処理が実行される。ｔ6において、処理がタイマによる割込み処理からメイン処理に復帰し、メイン処理の続きが実行され、ｔ5の直前に主レジスタ群１４２に保存されていた情報を用いて処理が実行される。
【００４８】
本実施例において、サブルーチン処理の実行、及び、外部装置とのシリアル通信及びタイマによる割込み処理などのレジスタ退避と復帰は、プロセッサの外にあるRAMなどを用いて、実現されるのではなく、プロセッサ内のハードウエアによって実現される。したがって、処理がより高速に実行される。
【００４９】
本実施例において、３つの退避レジスタ群を用いて説明したが、他の実施例において、退避レジスタ群は１つであってもよい。さらに他の実施例において、退避レジスタ群は２以上であってもよい。本発明による実施例は、退避レジスタ群を増やすことによって、より柔軟なプロセッサを提供することができる。
【００５０】
本実施例において、ｔ１のサブルーチン処理が使用した第３の退避レジスタ群はｔ２のＳＩＯ割込み処理において第１の退避レジスタ群を使用した後にｔ３で再度サブルーチン処理が実行され第３の退避レジスタ群が使用される、そのことによりサブルーチン処理で使用される第３の退避レジスタ群は継続して使用することができる。サブルーチン処理のみでなく、第１の退避レジスタ群を使用するＳＩＯ割込み処理及び第２の退避レジスタ群を使用するタイマー割込み処理においても前回の割込み処理のレジスタ情報を継続的に使用できるため、一旦ワークエリアへストアして再度ワークエリアから取り出して使用する情報を退避レジスタ群のレジスタに保持し継続的に使用できるためワークエリアとしてのＲＡＭの使用量を削減できる。
【００５１】
本実施例において、特許文献１に記載されている技術のように、対象のレジスタ群を切り替えるのではなく、情報を転送退避することから、本実施例の演算部１２８は、主レジスタ群１４２のみを参照する。したがって、本実施例の構成はシンプルである。従来の演算対象のレジスタ群を切り替える技術では、演算部が参照すべきレジスタ群を切り替えるセレクタ回路が演算部とレジスタ群との間に必要であったが、本実施例ではこれを必要としない。本実施例に関し、セレクタなどに必要な回路を必要としないことから、回路構成が簡素化することができる。特許文献１に記載されている技術では、レジスタ群の数が増えると、レジスタ群を切り替えるセレクタの数も増えることとなる。これは、製造プロセス及びテストプロセスを複雑にする。本実施例は、特許文献１に記載されている技術のような、レジスタ群を切り替える構成は必要が無いことから、製造及びテスト工程を単純化することができ、製品のコスト削減に貢献する。
【００５２】
本実施例の装置１００は、パチンコやパチスロなどの遊技機に用いることができる。遊技機は、ホールなどに設置されると、パチンコ玉やパチスロ用のコインなどが用いられゲームが行われる。パチンコ玉やコインは、その摩擦などにより大きな電力を有する静電気などを発生させる。この静電気は、メモリ１０５の情報を破壊や、書き換えてしまうことがある。したがって、レジスタ群の情報の退避先をプロセッサ内に設けることは使用するＲＡＭの削減に効果的であり、各処理のレジスタ退避、復帰のプログラムステップが削減できる。したがって、本発明による実施例は、遊技機に特に有用である。また、本実施例では、レジスタ群の情報の保存に関し、メモリを用いないことからメモリ管理も必要としない。
【００５３】
メイン処理への復帰が実行される処理として挙げた割込み処理及びサブルーチン処理は、呼び出される処理の一例である。その他、呼び出される処理である独立処理として、サブルーチンや割込み処理を追加する処理毎に対応する目的で、退避レジスタ群を追加する構造のプロセッサとしてもよい。
【００５４】
上記の各実施例において、主レジスタ群１４２に既に退避レジスタ群（例えば、第１のレジスタ群１７５）の情報がストアされており、他の退避レジスタ群（例えば、第２のレジスタ群１８０）の情報を主レジスタ群１４２に転送する場合、主レジスタ群１４２の情報を第１の退避レジスタ群１７５の情報と入れ替えてから、主レジスタ群１４２の情報を第２の退避レジスタ群１８０の情報と入れ替えている。これに関し、他の実施例において、第１のレジスタ群１７５を用いることなく、主レジスタ群１４２にストアされている情報（当初第１のレジスタ群１７５にストアされていた情報）を第２の退避レジスタ群１８０の情報と入れ替えてもよい。これは、情報を入れ替えた対のレジスタ群番号の情報をメモリ１０５などに格納することにより、ソフトウエアによって格納場所を記憶管理することができる。
【００５５】
上記の実施例において、「主レジスタ群」、「第１の退避レジスタ群」、「第２の退避レジスタ群」及び「第３の退避レジスタ群」は、裏レジスタを有していてもよい。裏レジスタは、例えば、プロセッサがＺ８０プロセッサ、Ｚ８０に準拠したプロセッサ又はＺ８０から派生したプロセッサである場合、汎用レジスタと同じ構成のレジスタの組を有することができる。裏レジスタは、例えば、汎用レジスタと同じ構成として、Ｑレジスタ１４４、Aレジスタ１４６、Ｆレジスタ１４８、Ｂレジスタ１５０、Ｃレジスタ１５２、Ｄレジスタ１５４、Ｅレジスタ１５６、Ｈレジスタ１５８及びＬレジスタ１６０などと同じ構成のレジスタの組を有することができる。一実施例において、裏レジスタは、例えば、インデックスレジスタなどの、汎用レジスタ以外のレジスタを有していてもよい。他の実施例において、裏レジスタは、汎用レジスタ、及び／又は、インデックスレジスタなどの他のレジスタの一部から構成されていてもよい。他の実施例において、「第１の退避レジスタ群」、「第２の退避レジスタ群」及び「第３の退避レジスタ群」の裏レジスタは、「主レジスタ群」における裏レジスタの一部のレジスタから構成されていてもよい。
【００５６】
請求項に記載の「第１のレジスタ群」、「第２のレジスタ群」、「第３のレジスタ群」及び「使用中レジスタ群を示すレジスタ」は、それぞれ、明細書中の記載「主レジスタ群」、「第１の退避レジスタ群」、「第２の退避レジスタ群」及び「ＲＢレジスタ」に相当する。
【００５７】
請求項に記載の独立処理は、明細書中の記載「サブルーチン処理」及び／又は「割込み処理」に相当する。
【００５８】
上記の実施例において、ハードウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ソフトウエアで実現することができ、そして、ソフトウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ハードウエアで実現することができることは理解されるであろう。
【００５９】
以上に説明した処理又は処理順序において、ある処理において、その処理ではまだ利用することができないはずのデータを利用しているなどの処理又は処理順序上の矛盾が生じない限りにおいて、処理又は処理順序を自由に変更することができる。
【００６０】
以上に説明してきた各実施例に関し、各実施例の一部又は全部を組み合わせて一つの実施例として実現されてもよい。
【００６１】
以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【符号の説明】
【００６２】
１００  装置
１０５  メモリ
１１０  外部バス
１２０  プロセッサ
１２２  命令フェッチ部
１２４  命令デコード部
１２６  実行制御部
１２８  演算部
１３０  内部バス
１３２  レジスタ
１３４  Iレジスタ
１３６  Ｒレジスタ
１３８  ＳＰレジスタ
１４０  ＰＣレジスタ
１４１  ＲＢレジスタ
１４２  主レジスタ群
１４４  Ｑレジスタ
１４６  Aレジスタ
１４８  Ｆレジスタ
１５０  Ｂレジスタ
１５２  Ｃレジスタ
１５４  Ｄレジスタ
１５６  Ｅレジスタ
１５８  Ｈレジスタ
１６０  Ｌレジスタ
１６２  ＩＸレジスタ
１６４  ＩＹレジスタ
１７０  レジスタ退避制御部
１７５  第１の退避レジスタ群
１８０  第２の退避レジスタ群
１８５  第３の退避レジスタ群
【図１】
2019046138.tif 000003
【図２】
2019046138.tif 000004
【図３】
2019046138.tif 000005
【図４】
2019046138.tif 000006
【図５】
2019046138.tif 000007