JP2008282105A - マイクロプロセッサおよびレジスタ退避方法 - Google Patents

マイクロプロセッサおよびレジスタ退避方法 Download PDF

Info

Publication number
JP2008282105A
JP2008282105A JP2007123900A JP2007123900A JP2008282105A JP 2008282105 A JP2008282105 A JP 2008282105A JP 2007123900 A JP2007123900 A JP 2007123900A JP 2007123900 A JP2007123900 A JP 2007123900A JP 2008282105 A JP2008282105 A JP 2008282105A
Authority
JP
Japan
Prior art keywords
register
data
save
memory
microprocessor
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
JP2007123900A
Other languages
English (en)
Other versions
JP5186802B2 (ja
Inventor
Yoshimasa Takebe
好正 竹部
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007123900A priority Critical patent/JP5186802B2/ja
Priority to US12/076,857 priority patent/US8484446B2/en
Publication of JP2008282105A publication Critical patent/JP2008282105A/ja
Application granted granted Critical
Publication of JP5186802B2 publication Critical patent/JP5186802B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/30134Register stacks; shift registers
    • 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
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】マイクロプロセッサにおいて、サブルーチンの呼び出しに伴うレジスタの退避・復元を高速に実行すると共に、プログラムの規模の増大を抑制する。
【解決手段】レジスタファイル20は、演算処理に用いるデータを格納する1以上のレジスタを備える。退避メモリ30は、レジスタから退避されたデータを格納する。退避制御部40は、サブルーチン内でのレジスタへの書き込み命令の実行時に、書き込み先のレジスタに格納されているデータを退避メモリ30に退避させる。また、退避制御部40は、サブルーチンからの復帰命令の実行時に、退避メモリ30に退避されたデータを対応するレジスタに書き戻す。
【選択図】図1

Description

本発明はマイクロプロセッサおよびレジスタ退避方法に関し、特にサブルーチンの呼び出しを含むプログラムを実行可能なマイクロプロセッサおよびそのようなマイクロプロセッサによるレジスタ退避方法に関する。
現在、一般的なマイクロプロセッサは、内部に多数のレジスタを備えている。レジスタには、外部メモリから読み込んだデータや演算処理の結果が一時的に格納される。また、外部メモリにアクセスする際に用いる各種アドレスも格納される。レジスタは外部メモリと比べて高速に動作するため、レジスタを活用することで演算処理を高速化できる。特に、プログラムから多目的に使用可能なレジスタは、汎用レジスタと呼ばれる。
ところで、マイクロプロセッサに実行させるプログラムでは、逐次的な命令の実行に加えて、サブルーチンの呼び出しが行われることも多い。サブルーチンは、呼び出し元の命令とはプログラム内で不連続であり、サブルーチンの中でのみ使用される変数(自動変数)も存在する。このため、サブルーチンの呼び出し時には、サブルーチンが使用予定のレジスタに格納されているデータを退避する必要がある。また、サブルーチンからの復帰時には、退避したデータを元のレジスタに戻す必要がある。
このようなレジスタの退避・復元は、一般的には、プログラムが明示的にレジスタと外部メモリとの間でデータを移動させることで実現される。すなわち、プログラムはレジスタの退避時には、レジスタのデータを外部メモリ内のスタック領域に移動させると共に、これに併せてレジスタ内の各種アドレスを更新する。また、プログラムはレジスタの復元時には、スタック領域から元のレジスタにデータを移動させると共に、レジスタ内の各種アドレスを退避前の状態に戻す(例えば、特許文献1,2参照)。
特開平03−191426号公報 特開昭59−135551号公報
しかし、従来のレジスタの退避・復元方法では、サブルーチンが使用するレジスタの数に比例して、退避・復元のコストも大きくなるという問題がある。すなわち、プログラムが低速な外部メモリに逐次的にアクセスする必要があるため、退避・復元処理に要する時間が増大する。また、1つのレジスタのデータを移動させるために1つの命令が必要であるため、プログラムの規模が増大する。特に、マイクロプロセッサが備える汎用レジスタが増加し、より多くの汎用レジスタが演算処理に用いられる傾向にある近年では、この問題は顕著となる。
本発明はこのような点に鑑みてなされたものであり、サブルーチンの呼び出しに伴うレジスタの退避・復元を高速に実行すると共に、プログラムの規模の増大を抑制できるマイクロプロセッサおよびそのようなマイクロプロセッサによるレジスタ退避方法を提供することを目的とする。
本発明では上記課題を解決するために、図1に示すマイクロプロセッサが提供される。本発明に係るマイクロプロセッサは、サブルーチンの呼び出しを含むプログラムを実行可能なものである。マイクロプロセッサ1は、レジスタファイル20、退避メモリ30および退避制御部40を有する。レジスタファイル20は、演算処理に用いるデータを格納する1以上のレジスタを備える。退避メモリ30は、レジスタから退避されたデータを格納する。退避制御部40は、サブルーチン内でのレジスタへの書き込み命令の実行時に、書き込み先のレジスタに格納されているデータを退避メモリ30に退避させると共に、サブルーチンからの復帰命令の実行時に、退避メモリ30に退避されたデータを対応するレジスタに書き戻す。
このようなマイクロプロセッサ1によれば、サブルーチン内でのレジスタへの書き込み命令の実行時に、退避制御部40により書き込み先のレジスタに格納されているデータが退避メモリ30に退避される。また、サブルーチンからの復帰命令の実行時に、退避制御部40により退避メモリ30に退避されたデータが対応するレジスタに書き戻される。
また、上記課題を解決するために、演算処理に用いるデータを格納する1以上のレジスタを有し、サブルーチンの呼び出しを含むプログラムを実行可能なマイクロプロセッサによるレジスタ退避方法において、サブルーチン内でのレジスタへの書き込み命令の実行時に、書き込み先のレジスタに格納されているデータをマイクロプロセッサが有する退避メモリに退避させ、サブルーチンからの復帰命令の実行時に、退避メモリに退避されたデータを対応するレジスタに書き戻すことを特徴とするレジスタ退避方法が提供される。
このようなレジスタ退避方法によれば、サブルーチン内でのレジスタへの書き込み命令の実行時に、書き込み先のレジスタに格納されているデータが退避メモリに退避される。また、サブルーチンからの復帰命令の実行時に、退避メモリに退避されたデータが対応するレジスタに書き戻される。
本発明では、マイクロプロセッサ内に退避メモリを設け、サブルーチン内でのレジスタへの書き込み命令の実行時に自動的にデータを退避メモリに退避させ、サブルーチンからの復帰命令の実行時に自動的に退避メモリのデータをレジスタに書き戻すこととした。これにより、退避・復元処理に要する時間が大きく減少する。また、データを移動するための明示的な命令が不要となり、プログラムの規模が縮小する。
以下、本発明の実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、マイクロプロセッサの概要を示すブロック図である。図1に示すマイクロプロセッサ1は、サブルーチンの呼び出しを含むプログラムを実行可能なものである。マイクロプロセッサ1は、外部メモリ2と接続されている。外部メモリ2は、メインメモリやキャッシュメモリとして機能するメモリであり、RAM(Random Access Memory)やフラッシュメモリなどである。マイクロプロセッサ1は、命令実行部10、レジスタファイル20、退避メモリ30および退避制御部40を有する。
命令実行部10は、外部メモリ2から命令コードを順次読み込み、デコードする。そして、命令実行部10は、デコードの結果に応じて命令を実行する。命令としては、外部メモリ2からのデータの読み込み命令(ストア命令)、外部メモリ2へのデータの書き込み命令(セーブ命令)、算術論理演算命令、サブルーチンの呼び出し命令(コール命令)、サブルーチンからの復帰命令(リターン命令)などがある。命令実行部10は、レジスタファイル20の汎用レジスタに各種データを格納して利用する。
レジスタファイル20は、1以上の汎用レジスタを備えている。汎用レジスタは、所定のデータ長のデータを保持することができる。個々の汎用レジスタは、一意な識別番号によって識別される。本実施の形態では、レジスタファイル20は、32ビットのデータを格納する汎用レジスタを32個備えているものとする。また、本実施の形態では、3つの汎用レジスタからの読み出しと1つの汎用レジスタへの書き込みとが同時に実行可能であるとする。
退避メモリ30には、レジスタファイル20の汎用レジスタから退避されたデータが格納される。なお、サブルーチンが階層的に呼び出された場合には、各階層における退避データが退避メモリ30に積み上げられる。
退避制御部40は、命令実行部10からデコードされた命令の内容を取得する。ここで、命令がレジスタファイル20のいずれかの汎用レジスタにデータを書き込むものである場合には、退避制御部40は、命令の実行と並行して、書き込み先の汎用レジスタのデータを退避メモリ30に退避させる。また、命令がリターン命令である場合には、退避メモリ30に退避されているデータを、元の汎用レジスタに復元する。
なお、退避制御部40は、レジスタの退避状態を示すマップデータを保持しておき、マップデータに基づいてデータの復元を行う。また、サブルーチンが階層的に呼び出されることで退避メモリ30の記憶領域が不足すると、退避制御部40は、退避メモリ30に格納されたデータを外部メモリ2に移動させ、記憶領域を確保する。
図2は、マイクロプロセッサの回路構成例を示す図である。図2に示す回路構成は、命令実行部10および退避制御部40を詳細化したものである。命令実行部10は、命令デコーダ11、算術論理演算器(ALU:Arithmetic and Logical Unit)12、セレクタ13a〜13dおよび遅延回路14a〜14eを有する。退避制御部40は、マップレジスタ41、デコーダ42、エンコーダ43、ポインタ44、加算器45、シーケンサ46、チェッカー47およびセレクタ48a〜48dを有する。なお、図2では、セレクタ13a〜13dおよびセレクタ48a〜48dを制御する回路の記載は省略している。
命令デコーダ11は、外部メモリ2から読み込み済みの命令コードを、図示しない命令レジスタから取得してデコードする。そして、命令デコーダ11は、ALU12への指令(opc)、入力データが格納されている汎用レジスタの番号(rs1,rs2)および命令の実行結果を書き込む汎用レジスタの番号(rd)を出力する。ALU12への指令は、遅延回路14aに一時的に保持される。実行結果を書き込む汎用レジスタの番号は、遅延回路14bに一時的に保持される。汎用レジスタから読み出したデータは、遅延回路14c,14dに一時的に保持される。
ALU12は、算術演算および論理演算を実行可能な演算回路である。ALU12は、命令デコーダ11が出力する指令に従って、レジスタファイル20の汎用レジスタから読み出されたデータに対して演算を行う。そして、指定された汎用レジスタに演算の結果を書き込む。
マップレジスタ41は、マップデータを保持している。マップデータは、レジスタファイル20の汎用レジスタに1対1に対応するフラグの集合である。マップレジスタ41は、汎用レジスタへの書き込みの命令の実行時、すなわち、データの退避時に、マップデータ中のその汎用レジスタに対応するフラグを“1”に設定する。また、マップレジスタ41は、コール命令の実行時に、マップデータを退避メモリ30に退避させ、保持するマップデータを初期化する。その後、リターン命令時の実行時に、退避メモリ30に退避されたマップデータを取得して保持する。
デコーダ42は、5ビットで表されるレジスタ番号を、いずれか1桁のみが“1”となる32ビットのビットパターンにデコードする。例えば、デコーダ42は、“00111”(7)を“00000000000000000000000010000000”にデコードする。デコーダ42がデコードしたビットパターンを用いて、マップレジスタ41が保持するマップデータが更新される。
エンコーダ43は、マップレジスタ41が保持するマップデータにおいてフラグが“1”に設定されている汎用レジスタの番号を、番号の大きい順に順次出力する。このとき出力されるレジスタ番号は5ビットで表される。すなわち、エンコーダ43は、デコーダ42と逆の処理を行う。
ポインタ44は、退避メモリ30内の位置を示すアドレスであって、現在実行中のサブルーチンのために確保した記憶領域の先頭を示すアドレスを保持している。ポインタ44は、コール命令の実行時に、呼び出されるサブルーチンのために確保した記憶領域の先頭を示すアドレスを設定する。その後、リターン命令時の実行時に、呼び出し元のサブルーチンまたはメインルーチンのために確保されている記憶領域の先頭を示すアドレスを設定する。
また、ポインタ44は、退避メモリ30と外部メモリ2との間のデータの移動時には、アドレスを順次インクリメントすることで、次にアクセスすべき退避メモリ30内の位置を示すようにする。その後、データの移動が完了すると、現在実行中のサブルーチンのための記憶領域の先頭を示すアドレスを設定する。
加算器45は、退避メモリ30へのアクセスに用いるアドレスを計算するための演算回路である。加算器45は、コール命令の実行時に、呼び出されるサブルーチンのために確保した記憶領域の先頭を示すアドレスを計算し、ポインタ44に供給する。
また、加算器45は、汎用レジスタへの書き込みの命令の実行時に、ポインタ44が保持するアドレスと書き込み先を示すレジスタ番号とから、退避データを格納すべき位置を示すアドレスを計算し、退避メモリ30に供給する。また、加算器45は、リターン命令の実行時に、ポインタ44が保持するアドレスと復元すべき汎用レジスタの番号とから、退避データが格納されている位置を示すアドレスを計算し、退避メモリ30に供給する。
シーケンサ46は、退避メモリ30と外部メモリ2との間のデータの移動時に、退避メモリ30の先頭から順次データを移動させるための制御の信号を加算器45に供給する。
チェッカー47は、加算器45から退避メモリ30へ供給されるアドレスを監視し、退避メモリ30の空き領域が不足していると判断すると、シーケンサ46にその旨を通知する。これにより、シーケンサ46の制御のもと、退避メモリ30から外部メモリ2にデータが移動される。また、チェッカー47は、退避メモリ30が空であると判断すると、シーケンサ46にその旨を通知する。これにより、シーケンサ46の制御のもと、外部メモリ2から退避メモリ30にデータが戻される。
図3は、マップデータのデータ構造例を示す図である。マップデータ41aは、マップレジスタ41によって保持されている。マップデータ41aは、32ビットのビット列である。ビット列の最下位ビットが0番の汎用レジスタに対応し、最上位ビットが31番の汎用レジスタに対応する。マップデータ41aの全てのビットは、初期状態として“0”が設定されている。その後、汎用レジスタへの書き込みの命令が実行される毎に、書き込み先の汎用レジスタに対応するビットが“1”に設定される。
図4は、第1の実施の形態の退避データのデータ構造例を示す図である。図4では、1行が32ビットのデータを表し、縦の数値は行数を表している。図4に示すようなデータが退避メモリ30に格納される。
退避メモリ30では、サブルーチンの呼び出し時に、レジスタファイル20の全ての汎用レジスタ分の記憶領域が確保される。すなわち、32ビット×32個分の記憶領域がサブルーチンの呼び出し毎に確保される。汎用レジスタからの退避時には、その汎用レジスタの番号に対応する位置に退避データが格納される。また、サブルーチンの呼び出し時には、マップレジスタ41が保持するマップデータも退避メモリ30に退避される。これにより、階層的なサブルーチンの呼び出しにも対応することができる。
例えば、退避メモリ30の31行目まで使用されている状態でサブルーチンの呼び出しが行われると、まず、32行目に現在のマップデータが格納される。そして、33行目から64行目までに新たなサブルーチンのための記憶領域が確保される。このとき、ポインタ44の値は、確保された記憶領域の先頭である33行目を指し示している。これにより、0番の汎用レジスタの退避データが33行目に、31番の汎用レジスタの退避データが64行目に格納されることになる。
次に、以上のような構成のマイクロプロセッサにおいて実行される処理の流れについて説明する。なお、以下に述べる処理の流れは、主に図2に示したセレクタ13a〜13dおよびセレクタ48a〜48dを制御することで実現できる。
図5は、命令実行処理の手順を示すフローチャートである。以下、図5に示す処理をステップ番号に沿って説明する。
[ステップS11]命令実行部10は、外部メモリ2から読み込んだ命令コードをデコードする。そして、命令実行部10は、デコード結果を退避制御部40に通知する。
[ステップS12]退避制御部40は、命令実行部10が実行しようとする命令がコール命令であるか否か判断する。コール命令である場合には、処理がステップS13に進められる。コール命令でない場合には、処理がステップS14に進められる。
[ステップS13]退避制御部40は、マップデータを初期化する処理を実行する。初期化処理の詳細は後で説明する。なお、この処理はステップS18と同時に実行することができる。
[ステップS14]退避制御部40は、命令実行部10が実行しようとする命令が汎用レジスタへの書き込みを伴う命令であるか否か判断する。書き込みを伴う命令である場合には、処理がステップS15に進められる。書き込みを伴う命令でない場合には、処理がステップS16に進められる。
[ステップS15]退避制御部40は、書き込み先の汎用レジスタに格納されたデータを退避メモリ30に退避させる処理を実行する。退避処理の詳細は後で説明する。なお、この処理はステップS18と同時に実行することができる。
[ステップS16]退避制御部40は、命令実行部10が実行しようとする命令がリターン命令であるか否か判断する。リターン命令である場合には、処理がステップS17に進められる。リターン命令でない場合には、処理がステップS18に進められる。
[ステップS17]退避制御部40は、復帰前のサブルーチンにおいて退避メモリ30に退避されたデータを復元する処理を実行する。復元処理の詳細は後で説明する。なお、この処理はステップS18と同時に実行することができる。
[ステップS18]命令実行部10は、ステップS11のデコード結果に従って、演算処理を実行する。
[ステップS19]命令実行部10は、プログラムに含まれる命令を最後まで実行したか否か判断する。最後まで実行した場合には、処理が終了する。最後まで実行していない場合には処理がステップS11に進められる。
このようにして、退避制御部40は、コール命令、汎用レジスタへの書き込みを伴う命令、リターン命令を命令実行部10が実行する際に、所定の処理を自動的に実行する。以下、ステップS13の初期化処理、ステップS15の退避処理、ステップS17の復元処理の詳細について説明する。
図6は、第1の実施の形態の初期化処理の手順を示すフローチャートである。以下、図6に示す処理をステップ番号に沿って説明する。
[ステップS21]退避制御部40は、マップデータおよび次のサブルーチンに対応する退避データを格納するための記憶領域が、退避メモリ30に不足しているか否か判断する。これは、チェッカー47からシーケンサ46に通知が送られているか否かに基づいて判断される。記憶領域が不足している場合には、処理がステップS22に進められる。不足していない場合には処理がステップS24に進められる。
[ステップS22]退避制御部40は、退避メモリ30に格納されているデータを先頭から順に外部メモリ2に移動させる。これは、シーケンサ46による制御のもと、ポインタ44が保持するアドレスを順次インクリメントし、退避メモリ30に供給することで実現される。
[ステップS23]退避制御部40は、ポインタ44が保持するアドレスを退避メモリ30の先頭、すなわち、“0”に初期化する。
[ステップS24]退避制御部40は、マップレジスタ41が保持するマップデータを、退避メモリ30に退避させる。
[ステップS25]退避制御部40は、マップレジスタ41が保持するマップデータを初期化する。すなわち、マップデータの全てのビットを“0”に設定する。
[ステップS26]退避制御部40は、ポインタ44が保持するアドレスを0番の汎用レジスタの退避データを格納すべき位置のアドレスに設定する。
このようにして、退避制御部40は、コール命令の実行時に、マップデータを退避メモリ30に退避させて初期化する。また、次のサブルーチンのための記憶領域の先頭にポインタの値を設定する。ここで、退避メモリ30の空き領域が不足していると、退避制御部40は、退避メモリ30のデータを外部メモリ2に移動させ、空き領域を確保する。
図7は、第1の実施の形態の退避処理の手順を示すフローチャートである。以下、図7に示す処理をステップ番号に沿って説明する。
[ステップS31]退避制御部40は、マップデータ内の書き込み先の汎用レジスタに対応するビットを“1”に設定する。これは、デコーダ42によって得られる書き込み先の汎用レジスタの番号に対応するビットパターンと、現在のマップデータとの論理和を計算することで実現できる。
[ステップS32]退避制御部40は、退避データを格納すべき退避メモリ30内のアドレスを計算する。これは、ポインタ44が保持するアドレスと書き込み先の汎用レジスタの番号とに基づいて、加算器45によって計算される。計算されたアドレスは、退避メモリ30に供給される。
[ステップS33]退避制御部40は、汎用レジスタに格納されているデータを上書きされる前に読み出し、退避メモリ30に供給する。退避メモリ30は、ステップS32で供給されたアドレスで示される位置にこのデータを書き込む。
このようにして、退避制御部40は、汎用レジスタへの書き込みを伴う命令の実行時に、格納されているデータを読み込んで退避メモリ30に退避させる。また、退避制御部40は、退避が行われたことをマップデータに記録する。
図8は、第1の実施の形態の復元処理の手順を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
[ステップS41]退避制御部40は、マップレジスタ41が保持するマップデータに基づいて、退避が行われた汎用レジスタをレジスタ番号の大きい方から1つ選択する。
[ステップS42]退避制御部40は、ステップS41で選択した汎用レジスタに対応する退避データが格納されている退避メモリ30内のアドレスを計算する。これは、ポインタ44が保持するアドレスと汎用レジスタの番号とに基づいて、加算器45によって計算される。計算されたアドレスは、退避メモリ30に供給される。
[ステップS43]退避制御部40は、ステップS42で計算したアドレスに対応するデータを退避メモリ30から読み出す。そして、退避制御部40は、ステップS41で選択した汎用レジスタに読み出したデータを格納する。これは、エンコーダ43が汎用レジスタのレジスタ番号をレジスタファイル20に供給することで実現される。
[ステップS44]退避制御部40は、退避が行われた全ての汎用レジスタをステップS41で選択したか否か判断する。全て選択した場合には、処理がステップS45に進められる。未選択の汎用レジスタがある場合には、処理がステップS41に進められる。
[ステップS45]退避制御部40は、退避メモリ30に退避されている直前のマップデータを取得し、マップレジスタ41に供給する。
[ステップS46]退避制御部40は、退避メモリ30が空か否か判断する。これは、チェッカー47からシーケンサ46に通知が送られているか否かに基づいて判断される。退避メモリ30が空である場合には、処理がステップS47に進められる。空でない場合には、処理がステップS49に進められる。
[ステップS47]退避制御部40は、外部メモリ2に退避メモリ30から移動させたデータが存在するか否か判断する。存在する場合には、処理がステップS48に進められる。存在しない場合には、処理がステップS49に進められる。
[ステップS48]退避制御部40は、過去に移動させたデータを外部メモリ2から退避メモリ30に戻す。これは、シーケンサ46による制御のもと、ポインタ44が保持するアドレスを順次インクリメントし、退避メモリ30に供給することで実現される。
[ステップS49]退避制御部40は、ポインタ44が保持するアドレスを0番の汎用レジスタの退避データを格納すべき位置のアドレスに設定する。
このようにして、退避制御部40は、リターン命令の実行時に、現在のマップデータに基づいて、退避メモリ30に退避されたデータを汎用レジスタに書き戻す。その後、退避メモリ30に退避された直前のマップデータも、マップレジスタ41に書き戻す。ここで、退避メモリ30が空になり、退避メモリ30から外部メモリ2に移動させたデータがある場合には、退避制御部40は、外部メモリ2から退避メモリ30にデータを戻す。
次に、このようなマイクロプロセッサ1に実行させるプログラムについて説明する。
図9は、プログラムのソースコードの例を示す図である。図9に示すソースコード60は、プログラムの開発者が作成するものである。ソースコード60には、引数として入力される1000個の整数値の平均を求める関数“average”が記述されている。この関数に含まれる文は、コード範囲61〜64の4つの範囲に区分できる。
コード範囲61には、整数型の変数“i”と“sum”とを宣言する文が記述されている。また、変数“sum”の初期値として“0”を設定する処理が記述されている。コード範囲62には、1000個の整数値の合計を計算する処理が記述されている。コード範囲63には、合計を個数で割ることで平均を計算する処理が記述されている。コード範囲64には、計算された平均を関数の戻り値として出力する処理が記述されている。
図10は、プログラムのアセンブリコードの例を示す図である。図10に示すアセンブリコード70は、図9のソースコード60を、マイクロプロセッサ1に対応したコンパイラでコンパイルすることによって得られるものである。アセンブリコード70には、関数“average”に対応するサブルーチンが記述されている。アセンブリコード70は、コード範囲71〜76の6つの範囲に区分できる。
コード範囲71には、サブルーチン内で一時的に使用する汎用レジスタr12,r13,r14(レジスタファイル20の12番、13番、14番の汎用レジスタ)に格納されているデータを外部メモリ2のスタック領域に移動させる処理が記述されている。また、スタック領域のトップを示すスタックポインタの値を更新する処理が記述されている。
ただし、コード範囲71のコードはコメントアウトされている。すなわち、マイクロプロセッサ1は、実際には、これらの処理を実行しない。マイクロプロセッサ1では、汎用レジスタの退避は自動的に行われ、プログラムによる明示の指示は不要だからである。なお、既存の一般的なマイクロプロセッサに同様の処理を実行させる場合は、これらのコードが必要となる。
コード範囲72には、汎用レジスタr12,r13に初期値“0”を設定する処理が記載されている。コード範囲72は、ソースコード60のコード範囲61に対応する。ここで、汎用レジスタr12が変数“i”の値を保持し、汎用レジスタr13が変数“sum”の値を保持する。
コード範囲73には、外部メモリ2から整数値を読み込み、汎用レジスタr13に加算することを1000回繰り返す処理が記述されている。コード範囲73は、ソースコード60のコード範囲62に対応する。これにより、汎用レジスタr13に1000個の整数値の合計が格納される。
コード範囲74には、1000個の整数値の合計を1000で割ることで平均を計算する処理が記述されている。コード範囲74は、ソースコード60のコード範囲63に対応する。
コード範囲75には、コード範囲71で退避した汎用レジスタr12,r13,r14のデータを、外部メモリ2のスタック領域から取得して書き戻す処理が記述されている。また、スタック領域のトップを示すスタックポインタの値を更新する処理が記述されている。
ただし、コード範囲71と同様、コード範囲75のコードはコメントアウトされている。すなわち、マイクロプロセッサ1は、実際には、これらの処理を実行しない。マイクロプロセッサ1では、汎用レジスタの復元は自動的に行われ、プログラムによる明示の指示は不要だからである。なお、既存の一般的なマイクロプロセッサに同様の処理を実行させる場合は、これらのコードが必要となる。
コード範囲76には、このサブルーチンから復帰するためのリターン命令が記述されている。コード範囲76は、ソースコード60のコード範囲64に対応する。
ここで、アセンブリコード70で示されるプログラムを命令実行部10が実行すると、退避制御部40は、レジスタファイル20の12番、13番、14番の汎用レジスタのデータを書き込み時に自動的に退避メモリ30に退避させる。また、退避制御部40は、リターン命令の実行時に、12番、13番、14番の汎用レジスタのデータを、自動的に退避メモリ30から書き戻す。
なお、図10の例では、コード範囲71,75をコメントアウトしているが、これらのコードは完全に削除して構わない。これにより、プログラムの規模を圧縮できる。
このようなマイクロプロセッサを用いることで、演算処理と並行して退避・復元処理を実行することができ、処理効率を大きく向上させることができる。また、プログラム中にデータを移動するための明示的な命令を記述する必要がなくなり、プログラムの規模を大きく圧縮できる。
また、退避データとマップデータとを退避メモリに積み上げるため、階層的なサブルーチンの呼び出しにも柔軟に対応することができる。また、退避メモリの空き領域が不足すると、自動的にデータが外部メモリに移動されるため、退避メモリは過度に大きな記憶容量を必要とすることがない。
また、サブルーチンの呼び出し時に、各汎用レジスタに対応する退避メモリ内の退避位置が決定するため、退避・復元の制御が簡潔となり、回路構成が複雑化することを防止できる。
[第2の実施の形態]
次に、第2の実施の形態について説明する。第2の実施の形態は、第1の実施の形態における退避メモリ内の退避データの管理方法を変更したものである。前述の第1の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。なお、第2の実施の形態のマイクロプロセッサの構成の概要は、図1に示した第1の実施の形態のものと同様であるため、以下、図1で用いた符号と同じ符号を用いて説明する。
図11は、順序付きマップデータのデータ構造例を示す図である。図11に示す順序付きマップデータ41bは、退避制御部40が管理するデータであり、図3に示した第1の実施の形態のマップデータ41aに対応する。
順序付きマップデータ41bは、32個の0以上の整数値の列である。列の最下位の値が0番の汎用レジスタに対応し、最上位の値が31番の汎用レジスタに対応する。順序付きマップデータ41bの全ての整数値は、初期状態として“0”が設定されている。その後、汎用レジスタへの書き込みの命令が実行される毎に、書き込み先の汎用レジスタに対応する欄に、そのサブルーチン内で退避が行われた順序を示す値が設定される。
例えば、コール命令の実行後、最初に29番の汎用レジスタが退避され、次に1番の汎用レジスタが退避された場合、29番に対応する欄に“1”が設定され、1番に対応する欄に“2”が設定される。
図12は、第2の実施の形態の退避データのデータ構造例を示す図である。図12に示すデータ構造は、図4に示した第1の実施の形態のデータ構造に対応するものである。すなわち、図12に示すようなデータが退避メモリ30に格納される。
サブルーチンの呼び出し時には、退避制御部40が管理する現在の順序付きマップデータが退避メモリ30に退避される。そして、ポインタの値が、次にデータを書き込むべき位置、すなわち、空き領域の先頭を指し示す。ここで、ポインタの値が示す位置に退避データが書き込まれると、ポインタの値がインクリメントされる。また、退避したデータの復元時には、後に退避されたデータから順に復元が行われ、ポインタの値が順次デクリメントされる。
第2の実施の形態の命令実行処理の全体的な流れは、図5に示した第1の実施の形態のものと同様である。以下、初期化処理、退避処理、復元処理の詳細について説明する。
図13は、第2の実施の形態の初期化処理の手順を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS51]退避制御部40は、マップデータおよび次のサブルーチンに対応する退避データを格納するための記憶領域が、退避メモリ30に不足しているか否か判断する。記憶領域が不足している場合には、処理がステップS52に進められる。不足していない場合には処理がステップS54に進められる。
[ステップS52]退避制御部40は、退避メモリ30に格納されているデータを先頭から順に外部メモリ2に移動させる。
[ステップS53]退避制御部40は、ポインタの値を退避メモリ30の先頭、すなわち、“0”に初期化する。
[ステップS54]退避制御部40は、現在の順序付きマップデータを退避メモリ30に退避させる。
[ステップS55]退避制御部40は、現在の順序付きマップデータを初期化する。すなわち、順序付きマップデータの全ての欄の整数値を“0”に設定する。
[ステップS56]退避制御部40は、ポインタの値を退避メモリ30内の次の書き込み位置、すなわち、空き領域の先頭のアドレスとする。
このようにして、退避制御部40は、コール命令の実行時に、順序付きマップデータを退避メモリ30に退避させて初期化する。また、退避メモリ30の空き領域の先頭にポインタの値を設定する。ここで、退避メモリ30の空き領域が不足していると、退避制御部40は、退避メモリ30のデータを外部メモリ2に移動させ、空き領域を確保する。
図14は、第2の実施の形態の退避処理の手順を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS61]退避制御部40は、順序付きマップデータ内の書き込み先の汎用レジスタに対応する欄に、退避順序を示す整数値を設定する。
[ステップS62]退避制御部40は、汎用レジスタに格納されているデータを上書きされる前に読み出し、退避メモリ30に供給する。退避メモリ30は、ポインタが指し示す位置に、このデータを書き込む。
[ステップS63]退避制御部40は、ポインタの値をインクリメントし、ポインタが退避メモリ30内の空き領域の先頭を指し示すようにする。
このようにして、退避制御部40は、汎用レジスタへの書き込みを伴う命令の実行時に、格納されているデータを読み込んで退避メモリ30に退避させる。また、退避制御部40は、そのサブルーチン内で退避が行われた順序を順序付きマップデータに記録する。
図15は、第2の実施の形態の復元処理の手順を示すフローチャートである。以下、15に示す処理をステップ番号に沿って説明する。
[ステップS71]退避制御部40は、退避順序が遅い順、すなわち、順序付きマップデータの整数値が大きい順に汎用レジスタを1つ選択する。
[ステップS72]退避制御部40は、ポインタの値をデクリメントし、最後に退避されたデータの格納位置をポインタが指し示すようにする。ポインタの値は、退避メモリ30に供給される。
[ステップS73]退避制御部40は、ポインタが指し示す位置のデータを退避メモリ30から読み出す。そして、退避制御部40は、ステップS71で選択した汎用レジスタに読み出したデータを格納する。
[ステップS74]退避制御部40は、退避が行われた全ての汎用レジスタをステップS71で選択したか否か判断する。全て選択した場合には、処理がステップS75に進められる。未選択の汎用レジスタがある場合には、処理がステップS71に進められる。
[ステップS75]退避制御部40は、退避メモリ30に退避されている直前の順序付きマップデータを取得し、現在の順序付きマップデータとして保持する。
[ステップS76]退避制御部40は、退避メモリ30が空か否か判断する。退避メモリ30が空である場合には、処理がステップS77に進められる。空でない場合には、処理がステップS79に進められる。
[ステップS77]退避制御部40は、外部メモリ2に退避メモリ30から移動させたデータが存在するか否か判断する。存在する場合には、処理がステップS78に進められる。存在しない場合には、処理がステップS79に進められる。
[ステップS78]退避制御部40は、過去に移動させたデータを外部メモリ2から退避メモリ30に戻す。
[ステップS79]退避制御部40は、ポインタの値を退避メモリ30内の次の書き込み位置、すなわち、空き領域の先頭のアドレスとする。
このようにして、退避制御部40は、リターン命令の実行時に、現在の順序付きマップデータに基づいて、退避メモリ30に退避されたデータを汎用レジスタに書き戻す。その後、退避メモリ30に退避された直前の順序付きマップデータを取得し、現在の順序付きマップレジスタとして保持する。ここで、退避メモリ30が空になり、退避メモリ30から外部メモリ2に移動させたデータがある場合には、退避制御部40は、外部メモリ2から退避メモリ30にデータを戻す。
このようなマイクロプロセッサを用いることで、演算処理と並行して退避・復元処理を実行することができ、処理効率を大きく向上させることができる。また、プログラム中にデータを移動するための明示的な命令を記述する必要がなくなり、プログラムの規模を大きく圧縮できる。
また、退避データとマップデータとを退避メモリに積み上げるため、階層的なサブルーチンの呼び出しにも柔軟に対応することができる。また、退避メモリの空き領域が不足すると、自動的にデータが外部メモリに移動されるため、退避メモリは過度に大きな記憶容量を必要とすることがない。
また、退避メモリをスタックとして用いて退避データを順次積み上げるため、退避メモリの利用効率が向上し、空き領域が不足する確率を抑制できる。
なお、本実施の形態では、コール命令の実行時に退避メモリの空き領域の不足を検知することとしたが、常時監視するようにしてもよい。また、本実施の形態では、退避メモリと外部メモリとの間のデータの移動をハードウェアで行うこととしたが、OS(Operating System)上の割り込みを発生させ、ソフトウェアで行うようにしてもよい。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) サブルーチンの呼び出しを含むプログラムを実行可能なマイクロプロセッサにおいて、
演算処理に用いるデータを格納する1以上のレジスタを備えるレジスタファイルと、
前記レジスタから退避されたデータを格納する退避メモリと、
前記サブルーチン内での前記レジスタへの書き込み命令の実行時に、書き込み先のレジスタに格納されているデータを前記退避メモリに退避させると共に、前記サブルーチンからの復帰命令の実行時に、前記退避メモリに退避されたデータを対応するレジスタに書き戻す退避制御部と、
を有することを特徴とするマイクロプロセッサ。
(付記2) 前記退避制御部は、各レジスタの退避状態を示すマップデータを格納するマップ記憶部を有しており、前記レジスタのデータを退避させる際に前記マップデータを更新し、前記復帰命令の実行時には、前記マップデータに基づいて書き戻すデータを特定することを特徴とする付記1記載のマイクロプロセッサ。
(付記3) 前記退避制御部は、前記サブルーチンの呼び出し命令の実行時に、前記マップ記憶部に格納されている前記マップデータを前記退避メモリに退避させてから初期化すると共に、前記復帰命令の実行時に、退避されたデータを前記レジスタに書き戻した後に、退避された前記マップデータを前記マップ記憶部に書き戻すことを特徴とする付記2記載のマイクロプロセッサ。
(付記4) 前記退避制御部は、各レジスタを識別番号によって識別しており、前記レジスタのデータを退避させる際には、前記レジスタの識別番号に基づいて前記退避メモリ内のアドレスを生成し、生成したアドレスが示す位置にデータを格納することを特徴とする付記2記載のマイクロプロセッサ。
(付記5) 前記退避制御部は、前記レジスタのデータを退避させる際に退避の順序を前記マップデータに記録し、前記復帰命令の実行時には、前記マップデータに記録された順序に応じてデータを前記退避メモリから読み込んで対応するレジスタに書き戻すことを特徴とする付記2記載のマイクロプロセッサ。
(付記6) 前記退避制御部は、前記レジスタのデータを退避させる前に前記退避メモリの空き領域の不足を検知すると、前記退避メモリに格納されているデータを前記マイクロプロセッサに接続された外部メモリに移動させて空き領域を確保することを特徴とする付記1記載のマイクロプロセッサ。
(付記7) 演算処理に用いるデータを格納する1以上のレジスタを有し、サブルーチンの呼び出しを含むプログラムを実行可能なマイクロプロセッサによるレジスタ退避方法において、
前記サブルーチン内での前記レジスタへの書き込み命令の実行時に、書き込み先のレジスタに格納されているデータを前記マイクロプロセッサが有する退避メモリに退避させ、
前記サブルーチンからの復帰命令の実行時に、前記退避メモリに退避されたデータを対応するレジスタに書き戻す、
ことを特徴とするレジスタ退避方法。
(付記8) 前記レジスタのデータを退避させる際に、前記マイクロプロセッサが有するマップ記憶部に格納された、各レジスタの退避状態を示すマップデータを更新し、
前記復帰命令の実行時には、前記マップ記憶部に格納されている前記マップデータに基づいて書き戻すデータを特定する、
ことを特徴とする付記7記載のレジスタ退避方法。
(付記9) 前記サブルーチンの呼び出し命令の実行時に、前記マップ記憶部に格納されている前記マップデータを前記退避メモリに退避させて初期化し、
前記復帰命令の実行時に、退避されたデータを前記レジスタに書き戻した後に、退避された前記マップデータを前記マップ記憶部に書き戻す、
ことを特徴とする付記8記載のレジスタ退避方法。
(付記10) 前記レジスタのデータを退避させる際には、前記レジスタに予め対応付けられた識別番号に基づいて前記退避メモリ内のアドレスを生成し、生成したアドレスが示す位置にデータを格納することを特徴とする付記8記載のレジスタ退避方法。
(付記11) 前記レジスタのデータを退避させる際に、退避の順序を前記マップデータに記録し、
前記復帰命令の実行時には、前記マップデータに記録された順序に応じてデータを前記退避メモリから読み込んで対応するレジスタに書き戻す、
ことを特徴とする付記8記載のレジスタ退避方法。
(付記12) 前記レジスタのデータを退避させる前に前記退避メモリの空き領域の不足を検知すると、前記退避メモリに格納されているデータを前記マイクロプロセッサに接続された外部メモリに移動させて空き領域を確保することを特徴とする付記7記載のレジスタ退避方法。
マイクロプロセッサの概要を示すブロック図である。 マイクロプロセッサの回路構成例を示す図である。 マップデータのデータ構造例を示す図である。 第1の実施の形態の退避データのデータ構造例を示す図である。 命令実行処理の手順を示すフローチャートである。 第1の実施の形態の初期化処理の手順を示すフローチャートである。 第1の実施の形態の退避処理の手順を示すフローチャートである。 第1の実施の形態の復元処理の手順を示すフローチャートである。 プログラムのソースコードの例を示す図である。 プログラムのアセンブリコードの例を示す図である。 順序付きマップデータのデータ構造例を示す図である。 第2の実施の形態の退避データのデータ構造例を示す図である。 第2の実施の形態の初期化処理の手順を示すフローチャートである。 第2の実施の形態の退避処理の手順を示すフローチャートである。 第2の実施の形態の復元処理の手順を示すフローチャートである。
符号の説明
1 マイクロプロセッサ
2 外部メモリ
10 命令実行部
11 命令デコーダ
12 算術論理演算器
20 レジスタファイル
30 退避メモリ
40 退避制御部
41 マップレジスタ
42 デコーダ
43 エンコーダ
44 ポインタ
45 加算器
46 シーケンサ
47 チェッカー

Claims (7)

  1. サブルーチンの呼び出しを含むプログラムを実行可能なマイクロプロセッサにおいて、
    演算処理に用いるデータを格納する1以上のレジスタを備えるレジスタファイルと、
    前記レジスタから退避されたデータを格納する退避メモリと、
    前記サブルーチン内での前記レジスタへの書き込み命令の実行時に、書き込み先のレジスタに格納されているデータを前記退避メモリに退避させると共に、前記サブルーチンからの復帰命令の実行時に、前記退避メモリに退避されたデータを対応するレジスタに書き戻す退避制御部と、
    を有することを特徴とするマイクロプロセッサ。
  2. 前記退避制御部は、各レジスタの退避状態を示すマップデータを格納するマップ記憶部を有しており、前記レジスタのデータを退避させる際に前記マップデータを更新し、前記復帰命令の実行時には、前記マップデータに基づいて書き戻すデータを特定することを特徴とする請求項1記載のマイクロプロセッサ。
  3. 前記退避制御部は、前記サブルーチンの呼び出し命令の実行時に、前記マップ記憶部に格納されている前記マップデータを前記退避メモリに退避させてから初期化すると共に、前記復帰命令の実行時に、退避されたデータを前記レジスタに書き戻した後に、退避された前記マップデータを前記マップ記憶部に書き戻すことを特徴とする請求項2記載のマイクロプロセッサ。
  4. 前記退避制御部は、各レジスタを識別番号によって識別しており、前記レジスタのデータを退避させる際には、前記レジスタの識別番号に基づいて前記退避メモリ内のアドレスを生成し、生成したアドレスが示す位置にデータを格納することを特徴とする請求項2記載のマイクロプロセッサ。
  5. 前記退避制御部は、前記レジスタのデータを退避させる際に退避の順序を前記マップデータに記録し、前記復帰命令の実行時には、前記マップデータに記録された順序に応じてデータを前記退避メモリから読み込んで対応するレジスタに書き戻すことを特徴とする請求項2記載のマイクロプロセッサ。
  6. 前記退避制御部は、前記レジスタのデータを退避させる前に前記退避メモリの空き領域の不足を検知すると、前記退避メモリに格納されているデータを前記マイクロプロセッサに接続された外部メモリに移動させて空き領域を確保することを特徴とする請求項1記載のマイクロプロセッサ。
  7. 演算処理に用いるデータを格納する1以上のレジスタを有し、サブルーチンの呼び出しを含むプログラムを実行可能なマイクロプロセッサによるレジスタ退避方法において、
    前記サブルーチン内での前記レジスタへの書き込み命令の実行時に、書き込み先のレジスタに格納されているデータを前記マイクロプロセッサが有する退避メモリに退避させ、
    前記サブルーチンからの復帰命令の実行時に、前記退避メモリに退避されたデータを対応するレジスタに書き戻す、
    ことを特徴とするレジスタ退避方法。
JP2007123900A 2007-05-08 2007-05-08 マイクロプロセッサ Expired - Fee Related JP5186802B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007123900A JP5186802B2 (ja) 2007-05-08 2007-05-08 マイクロプロセッサ
US12/076,857 US8484446B2 (en) 2007-05-08 2008-03-24 Microprocessor saving data stored in register and register saving method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007123900A JP5186802B2 (ja) 2007-05-08 2007-05-08 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2008282105A true JP2008282105A (ja) 2008-11-20
JP5186802B2 JP5186802B2 (ja) 2013-04-24

Family

ID=39970608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007123900A Expired - Fee Related JP5186802B2 (ja) 2007-05-08 2007-05-08 マイクロプロセッサ

Country Status (2)

Country Link
US (1) US8484446B2 (ja)
JP (1) JP5186802B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9238852B2 (en) 2013-09-13 2016-01-19 Ametek, Inc. Process for making molybdenum or molybdenum-containing strip
US11010192B2 (en) * 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
JP7433931B2 (ja) * 2020-01-27 2024-02-20 キヤノン株式会社 情報処理装置及びその制御方法及びプログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57200983A (en) * 1981-06-02 1982-12-09 Fujitsu Ltd Stacker control system
JPH01217635A (ja) * 1988-02-26 1989-08-31 Fujitsu Ltd レジスタ退避方式
JPH0353327A (ja) * 1989-07-21 1991-03-07 Nec Corp マイクロコンピュータ
JPH04260930A (ja) * 1991-01-21 1992-09-16 Mitsubishi Electric Corp データ処理装置
JPH04338825A (ja) * 1991-05-16 1992-11-26 Fuji Electric Co Ltd 演算処理装置
JPH11167494A (ja) * 1997-12-03 1999-06-22 Toshiba Corp 演算処理装置、及び演算処理装置のレジスタ管理方法
JP2003256277A (ja) * 2002-03-04 2003-09-10 Fujitsu Ltd マイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3566369A (en) * 1969-05-01 1971-02-23 Bell Telephone Labor Inc Information processing system utilizing repeated selective execution of in-line instruction sets
US3781810A (en) * 1972-04-26 1973-12-25 Bell Telephone Labor Inc Scheme for saving and restoring register contents in a data processor
US4241399A (en) * 1978-10-25 1980-12-23 Digital Equipment Corporation Calling instructions for a data processing system
US4338663A (en) * 1978-10-25 1982-07-06 Digital Equipment Corporation Calling instructions for a data processing system
US4562537A (en) * 1984-04-13 1985-12-31 Texas Instruments Incorporated High speed processor
JPS63245529A (ja) * 1987-03-31 1988-10-12 Toshiba Corp レジスタ退避復元装置
JPH0337723A (ja) * 1989-07-05 1991-02-19 Hitachi Ltd 情報処理装置
JPH0353328A (ja) * 1989-07-20 1991-03-07 Hitachi Ltd レジスタ退避回復方法ならびに処理装置
EP0676691A3 (en) * 1994-04-06 1996-12-11 Hewlett Packard Co Device for saving and restoring registers in a digital computer.
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US6157999A (en) * 1997-06-03 2000-12-05 Motorola Inc. Data processing system having a synchronizing link stack and method thereof
US6314513B1 (en) * 1997-09-30 2001-11-06 Intel Corporation Method and apparatus for transferring data between a register stack and a memory resource
US6212630B1 (en) * 1997-12-10 2001-04-03 Matsushita Electric Industrial Co., Ltd. Microprocessor for overlapping stack frame allocation with saving of subroutine data into stack area
US6449709B1 (en) * 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
JP2000172505A (ja) * 1998-12-11 2000-06-23 Hitachi Ltd レジスタ番号変換を行うプロセッサ
US6442751B1 (en) * 1998-12-14 2002-08-27 International Business Machines Corporation Determination of local variable type and precision in the presence of subroutines
US6487630B2 (en) * 1999-02-26 2002-11-26 Intel Corporation Processor with register stack engine that dynamically spills/fills physical registers to backing store
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US6996677B2 (en) * 2002-11-25 2006-02-07 Nortel Networks Limited Method and apparatus for protecting memory stacks
US7127592B2 (en) * 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
JP2005038203A (ja) * 2003-07-15 2005-02-10 Denso Corp メモリ制御方法及び装置
US20050102494A1 (en) * 2003-11-12 2005-05-12 Grochowski Edward T. Method and apparatus for register stack implementation using micro-operations
US20050138340A1 (en) * 2003-12-22 2005-06-23 Intel Corporation Method and apparatus to reduce spill and fill overhead in a processor with a register backing store
US7962731B2 (en) * 2005-10-20 2011-06-14 Qualcomm Incorporated Backing store buffer for the register save engine of a stacked register file
US7844804B2 (en) * 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57200983A (en) * 1981-06-02 1982-12-09 Fujitsu Ltd Stacker control system
JPH01217635A (ja) * 1988-02-26 1989-08-31 Fujitsu Ltd レジスタ退避方式
JPH0353327A (ja) * 1989-07-21 1991-03-07 Nec Corp マイクロコンピュータ
JPH04260930A (ja) * 1991-01-21 1992-09-16 Mitsubishi Electric Corp データ処理装置
JPH04338825A (ja) * 1991-05-16 1992-11-26 Fuji Electric Co Ltd 演算処理装置
JPH11167494A (ja) * 1997-12-03 1999-06-22 Toshiba Corp 演算処理装置、及び演算処理装置のレジスタ管理方法
JP2003256277A (ja) * 2002-03-04 2003-09-10 Fujitsu Ltd マイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法

Also Published As

Publication number Publication date
US20080282071A1 (en) 2008-11-13
US8484446B2 (en) 2013-07-09
JP5186802B2 (ja) 2013-04-24

Similar Documents

Publication Publication Date Title
JP2505086B2 (ja) アドレス生成機構及びデ―タの事前取り出し方法
US9043806B2 (en) Information processing device and task switching method
JPH0855028A (ja) マイクロプロセッサ
US20230084523A1 (en) Data Processing Method and Device, and Storage Medium
JP5186802B2 (ja) マイクロプロセッサ
JPS593642A (ja) 制御レジスタ処理方式
KR20150035161A (ko) 그래픽 처리 장치 및 이의 동작 방법
JP3863544B1 (ja) 演算処理装置及び演算処理方法
JP2002229778A (ja) 高速ディスプレースメント付きpc相対分岐方式
JP2008305246A (ja) 情報処理装置、キャッシュフラッシュ制御方法及び情報処理制御装置
JP5233078B2 (ja) プロセッサ及びその処理方法
KR100861896B1 (ko) 데이터 프로세싱 장치 및 데이터 프로세싱 방법
JP3768516B1 (ja) マルチプロセッサシステムとそのシステムにおけるプログラム実行方法
JP2009230479A (ja) マイクロプロセッサ
JP5303943B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2004103012A (ja) プロセッサの動作速度を向上させるキャッシュ構造及びキャッシュ管理方法を有するプロセッサ
US11681527B2 (en) Electronic device and multiplexing method of spatial
US10817288B2 (en) Combined instruction for addition and checking of terminals
KR20080044652A (ko) Cpu에서의 스택을 이용한 디버깅 방법
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JP2007058256A (ja) プログラマブルコントローラ
KR100773800B1 (ko) 반도체 장치
JP2011150636A (ja) マイクロプロセッサ及びその制御方法
KR101538425B1 (ko) 프로세서 및 프로세서에서의 명령 처리방법
JP2522564B2 (ja) プログラマブルコントロ―ラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120202

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120904

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121130

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121207

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: 20121225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130107

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

Free format text: PAYMENT UNTIL: 20160201

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees