JP2002351656A - マイクロプロセッサ - Google Patents

マイクロプロセッサ

Info

Publication number
JP2002351656A
JP2002351656A JP2001163169A JP2001163169A JP2002351656A JP 2002351656 A JP2002351656 A JP 2002351656A JP 2001163169 A JP2001163169 A JP 2001163169A JP 2001163169 A JP2001163169 A JP 2001163169A JP 2002351656 A JP2002351656 A JP 2002351656A
Authority
JP
Japan
Prior art keywords
register
address
mode
value
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.)
Pending
Application number
JP2001163169A
Other languages
English (en)
Inventor
Ryuji Sakai
隆二 境
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001163169A priority Critical patent/JP2002351656A/ja
Publication of JP2002351656A publication Critical patent/JP2002351656A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 オブジェクト指向プログラムのバイナリプロ
グラムサイズを小さくすることができるマイクロプロセ
ッサを提供する。 【解決手段】 本発明は、命令コードのレジスタ指定フ
ィールド4b,4cの特定のビットMSBが所定の値に
なり、かつモードレジスタ1がオブジェクトプログラム
実行モードを示している場合に、レジスタファイル6で
はなく、メモリ7をアクセスして、オブジェクトインス
タンス変数の値を得るマイクロプロセッサである。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オブジェクト指向
プログラム等を実行するコンピュータのマイクロプロセ
ッサに関する。
【0002】
【従来の技術】オブジェクト指向プログラムでは、各オ
ブジェクトの状態や特性をインスタンス変数(またはデ
ータメンバ)に保持している。オブジェクトの実体(イ
ンスタンス)は、これらの変数の集まりである。プログ
ラムの実行は、オブジェクトを生成し(オブジェクトの
実体用のメモリ領域を確保し)、インスタンス変数を初
期化し、メソッドの実行を通してインスタンス変数を書
き換えながら進行する。したがって、オブジェクト指向
プログラムを高速に実行するためには、インスタンス変
数へのアクセスを効率よく行うことがポイントである。
【0003】オブジェクト指向プログラムの仮想メソッ
ド呼び出しは、オブジェクトへのメッセージの送信とい
われており、メッセージを受信したオブジェクトが主体
となって、仮想メソッドの実行を行う。つまり、仮想メ
ソッドは、特定のオブジェクトインスタンスを介して実
行される。仮想メソッドの実行において、メッセージを
受信したオブジェクトのことを、thisオブジェクト
という。
【0004】モジュール化とカプセル化によって、メソ
ッド実行におけるインスタンス変数へのアクセスの多く
は、thisオブジェクトのインスタンスへのアクセス
となる。
【0005】オブジェクトインスタンスの内部表現は、
クラスで定義されたインスタンス変数のテーブルを格納
するための領域を指すポインタと、そのオブジェクトが
属するクラスの内部表現のポインタと、メソッドのテー
ブルへのポインタなどによって実現される。この内部表
現には、さまざまな実現方法があるが、オブジェクトの
管理のしやすさとアクセス効率を考えて、インスタンス
変数のテーブルを指すポインタを最初にアクセスできる
ような構造にすることが多い。
【0006】以下では、インスタンス変数テーブルの先
頭アドレスを、オブジェクトベースアドレスと呼ぶこと
にする。図5にオブジェクトインスタンスの内部表現の
実現例を示す。
【0007】メソッドテーブルへのポインタは、図5の
ように、インスタンス変数のテーブルの最初にある実装
もあれば、最後にある実装もある。
【0008】メソッドの実行において、各オブジェクト
は、このオブジェクトベースアドレスによって特定さ
れ、オブジェクトのインスタンス変数にアクセスするに
は、ベースアドレスから変数に対応するオフセットによ
って位置づけられるアドレスによってアクセスされる。
【0009】RISCプロセッサの場合、このようなア
ドレスによって特定されるメモリへのアクセスは、ロー
ド・ストア命令によって行う。オフセットは、即値オペ
ランドとして命令コードの中に埋め込まれるため、変数
の読み出し(ロード)、書き込み(ストア)とも、それ
ぞれ1命令で実行される。
【0010】一方、オブジェクト指向プログラムでは、
プログラムの可読性や、メンテナンス性の向上、モジュ
ール化、部品としての再利用化のために、1つのメソッ
ドで多くの自動変数をつかうことは少なく、メソッドの
大きさもコンパクトに設計される。したがって、メソッ
ドの実行にあたって、CPU内のレジスタ全てを使うこ
とはまれである。
【0011】
【発明が解決しようとする課題】マイクロプロセッサに
おけるオブジェクト指向プログラムのメソッド実行にお
いて、多くの変数へのアクセスが、thisオブジェク
トのインスタンス変数へのアクセスである。
【0012】したがって、仮想メソッドの実行に際し
て、thisオブジェクトのベースアドレスをレジスタ
に保持することで、インスタンス変数へのアクセスを高
速におこなうことが可能であるが、RISCプロセッサ
の場合には、インスタンス変数へのアクセスのたびに、
その格納先であるメモリへのロード・ストア命令を実行
しなければならない。
【0013】しかも、そのときのロード・ストア命令の
ベースアドレスは、thisオブジェクトのインスタン
ス変数へのアクセスに関する限りは、メソッド内で同じ
値であり、プログラムのコード効率を考えると冗長であ
る。
【0014】本発明は、上記実情に鑑みてなされたもの
であり、オブジェクト指向プログラムのバイナリプログ
ラムサイズを小さくすることができ、かつ実行速度を向
上することができるマイクロプロセッサを提供すること
を目的とする。
【0015】
【課題を解決するための手段】したがって、上記目的を
達成するために、本発明の第1の発明は、仮想メソッド
の実行において、メッセージを受信したオブジェクトの
ベースアドレスを格納する専用レジスタと、オブジェク
トのインスタンス変数の値を格納するメモリと、オブジ
ェクト指向プログラムを実行するか否かのモードを指定
するモードレジスタと、マイクロプロセッサの命令コー
ドのレジスタ指定フィールドのうち特定のビット以外の
ビットと、前記専用レジスタに格納されているオブジェ
クトのベースアドレスとに基づいて、前記メモリをアク
セスするためのアドレスを生成するアドレス生成手段
と、前記マイクロプロセッサの命令コードのレジスタ指
定フィールドのうち、特定のビットの値が有効で、かつ
前記モードレジスタがオブジェクト指向プログラムの実
行モードを示している場合に、前記アドレス生成手段に
より生成されたアドレスに対応するオブジェクトのイン
スタンス変数を前記メモリから読み出す読み出し手段
と、前記読み出し手段で得られたインスタンス変数の演
算を行なう演算手段とを具備することを特徴とするマイ
クロプロセッサ、である。
【0016】このような発明によれば、命令コードにお
けるオペランドの読み出しをレジスタ指定フィールドの
特定のビットが有効で、かつモードレジスタがオブジェ
クトプログラムの実行モードを示している場合に、レジ
スタファイルではなく、メモリからオブジェクトインス
タンス変数の値を読み出すことができる。
【0017】また、本発明の第2の発明は、仮想メソッ
ドの実行において、メッセージを受信したオブジェクト
のベースアドレスを格納する専用レジスタと、データを
記憶するレジスタファイルと、データを格納するメモリ
と、オブジェクト指向プログラムを実行するか否かのモ
ードを指定するモードレジスタと、マイクロプロセッサ
の命令コードのレジスタ指定フィールドのうち特定のビ
ット以外のビットと、前記専用レジスタに格納されてい
るオブジェクトのベースアドレスとに基づいて、前記メ
モリをアクセスするためのアドレスを生成するアドレス
生成手段と、前記マイクロプロセッサの命令コードのレ
ジスタ指定フィールドのうち、前記特定のビットの値が
有効で、かつ前記モードレジスタがオブジェクト指向プ
ログラムの実行モードを示している場合に、前記アドレ
ス生成手段により生成されたアドレスによって指定され
る前記メモリの番地に演算結果を書き込み手段とを具備
することを特徴とするマイクロプロセッサ、である。
【0018】このような発明によれば、命令コードのレ
ジスタ指定フィールドのうち、特定のビットの値が有効
で、かつモードレジスタがオブジェクト指向プログラム
の実行モードを示している場合に、レジスタファイルで
はなく、メモリへデータを書き込むことができる。
【0019】さらに、本発明の第3の発明は、第1又は
第2の発明において、オペレーションコード、メッセー
ジを送る送り先のオブジェクトのベースアドレスを格納
するレジスタ番号、前記オブジェクトのメソッドテーブ
ルのアドレスを格納するレジスタ番号及び呼び出す仮想
メソッドのメソッドテーブルの位置を示すオフセットを
有する命令コードと、仮想メソッドの実行において、メ
ッセージを受信したオブジェクトのベースアドレスを格
納する専用レジスタと、レジスタファイルと、仮想メソ
ッドのエントリアドレスを格納するメモリと、オブジェ
クト指向プログラムを実行するか否かのモード指定する
モードレジスタと、前記命令コードのオペレーションコ
ードが特定のオペレーションコードであるか否かを判別
し、特定のオペレーションコードであると判別された場
合に、前記モードレジスタにオブジェクトプログラムを
実行するモードを設定する制御部と、前記命令コードの
前記ベースアドレスを格納するレジスタ番号を使用し
て、前記レジスタファイルから前記メッセージを送る送
り先のオブジェクトのベースアドレスを読み出し、前記
ベース専用レジスタに設定する設定手段と、前記命令コ
ードの前記メソッドテーブルのアドレスを格納するレジ
スタ番号を使用して前記レジスタファイルから前記オブ
ジェクトのメソッドテーブルのアドレスを読み出し、そ
の値と前記命令コードの前記オフセットとを加算して生
成した仮想メソッドのエントリアドレスをプログラムカ
ウンタにセットする手段とを具備することを特徴とする
マイクロプロセッサ、である。
【0020】このような発明によれば、命令コードに特
定のオペレーションコードが含まれている場合に、モー
ドレジスタにオブジェクトプログラムを実行するモード
を設定し、命令コードのベースアドレスを格納するレジ
スタ番号を使用して、レジスタファイルからメッセージ
を送る送り先のオブジェクトのベースアドレスを読み出
し、ベース専用レジスタに設定する。そして、命令コー
ドのメソッドテーブルのアドレスを格納するレジスタ番
号を使用してレジスタファイルからオブジェクトのメソ
ッドテーブルのアドレスを読み出し、その値と命令コー
ドの前記オフセットとを加算して生成した仮想メソッド
のエントリアドレスをプログラムカウンタにセットす
る。
【0021】
【発明の実施の形態】以下、図面を参照して、本発明の
実施の形態に係るマイクロプロセッサについて説明す
る。
【0022】<オペランドの読み出し>図1は、本発明
の実施の形態に係るマイクロプロセッサにおいて、オペ
ランドの読み出しを行なう場合を説明するための図であ
る。
【0023】同図において、1はモードレジスタであ
る。モードレジスタ1は、例えば、1ビット幅のレジス
タであり、オブジェクト指向プログラム実行モードと、
通常の解釈で実行するモードとのいずれのモードで実行
が行なわれるのかを示す値を格納する。
【0024】本実施の形態においては、モードレジスタ
1に「1」が設定され、かつ命令レジスタ2にセットさ
れる命令コードに含まれるオペレーションコード3、レ
ジスタ指定フィールド4a〜4cのうち、レジスタ指定
フィールド4bのソースコード(src1)の最上位ビ
ット(MSB)の値が「1」の場合、レジスタ指定フィ
ールド4cのソースコード(src2)の最上位ビット
(MSB)の値が「1」の場合にオブジェクトインスタ
ンス変数のメモリ読み出しモードとなる。
【0025】図4は、モードレジスタの値と、レジスタ
指定フィールドの最上位ビットと、モードとの関係を示
す図である。同図に示すように、モードレジスタ1及び
レジスタ指定フィールドの最上位ビットの値が「1」の
場合にのみ、オブジェクトインスタンス変数のメモリ読
み出しモードとなる。オブジェクトプログラム実行モー
ドでは、レジスタ指定フィールドの値によって、レジス
タアクセスと、オブジェクトインスタンスの実体(メモ
リ)アクセスとを混在させることが可能であり、効率の
良いコードを構成することが可能である。
【0026】なお、ここでは、命令レジスタ2の命令コ
ードに含まれるオペレーションコード3は、レジスタ指
定フィールド4bのソースコード(src1)によって
指定されたレジスタファイル6又はメモリ7から得られ
る値と、レジスタ指定フィールド4cのソースコード
(src2)によって指定されたレジスタファイル6又
はメモリ7から得られる値との演算処理を指定し、この
演算結果は目的レジスタ指定フィールド(dst)4a
によって指定される番地(レジスタファイル又はメモ
リ)に格納されることを意味しているものとする。
【0027】AND回路5aは、モードレジスタ1の値
と、レジスタ指定フィールド4bのソースコード(sr
c1)の最上位ビット(MSB)の値との論理積をと
り、その結果をマルチプレクサ−(MUX)11aに出
力する。
【0028】AND回路5bは、モードレジスタ1の値
と、レジスタ指定フィールド4cのソースコード(sr
c2)の最上位ビット(MSB)の値との論理積をと
り、その結果をマルチプレクサ−(MUX)11bに出
力する。
【0029】一方、レジスタ指定フィールド4bのソー
スコード(src1)の最上位ビット(MSB)以外の
残りのビット(ここでは、下位4ビット)は、シフト回
路8a及びレジスタファイル6に出力される。また、レ
ジスタ指定フィールド4cのソースコード(src2)
の最上位ビット(MSB)以外の残りのビット(ここで
は、下位4ビット)は、シフト回路8b及びレジスタフ
ァイル6に出力される。
【0030】シフト回路8aは、レジスタ指定フィール
ド4bのソースコード(src1)の最上位ビット(M
SB)以外の残りのビットにマイクロプロセッサのワー
ドサイズ(例えば、4バイト)を乗じて、加算器9aに
出力する。なお、ここで、ワードサイズを乗ずるのは、
メモリ7の領域を全体に渡って指定するためである。
【0031】同様に、シフト回路8bは、レジスタ指定
フィールド4bのソースコード(src1)の最上位ビ
ット(MSB)以外の残りのビットにマイクロプロセッ
サのワードサイズ(例えば、4バイト)を乗じて、加算
器9aに出力する。
【0032】加算器9aは、シフト回路8aから出力さ
れる最上位ビット(MSB)以外の残りのビットにマイ
クロプロセッサのワードサイズを乗じた値にベース専用
レジスタ10の値を加算した値を読み出しアドレスとし
て、メモリ7に出力する。
【0033】加算器9bは、シフト回路8bから出力さ
れる最上位ビット(MSB)以外の残りのビットにマイ
クロプロセッサのワードサイズを乗じた値にベース専用
レジスタ10の値を加算した値を読み出しアドレスとし
て、メモリ7に出力する。
【0034】専用レジスタ10には、仮想メソッドの実
行において、メッセージを受信したオブジェクトのベー
スアドレスが格納されている。なお、通常、専用ベース
レジスタ10は、メソッドのエントリで設定されるた
め、メソッド実行中に変更されることがなく、先読みが
可能である。
【0035】メモリ7には、オブジェクトのインスタン
ス変数の値が格納されており、加算器9a,9bから出
力される読み出しアドレスによってアドレス指定され、
対応するオブジェクトのインスタンス変数の値がそれぞ
れマルチプレクサ−11a,11bに出力される。
【0036】また、レジスタ指定フィールド4bのソー
スコード(src1)及びレジスタ指定フィールド4c
のソースコード(src2)は、マイクロプロセッサの
レジスタの内容を記憶するレジスタファイル6のレジス
タ番号を指定するためにそれぞれ使用される。
【0037】そして、レジスタ指定フィールド4bのソ
ースコード(src1)によって指定されたレジスタ番
号に対応するレジスタの内容がレジスタファイル6から
マルチプレクサ−11aに出力され、また、レジスタ指
定フィールド4cのソースコード(src2)によって
指定されたレジスタ番号に対応するレジスタの内容がレ
ジスタファイル6からマルチプレクサ−11bに出力さ
れる。
【0038】マルチプレクサ−11aは、AND回路5
aから出力される値が「1」の場合、すなわち、インス
タンス変数のメモリ読み出しモードである場合には、メ
モリ7からのオブジェクトのインスタンス変数の値を演
算部12に出力する。一方、AND回路5aから出力さ
れる値が「0」の場合、すなわち、通常モードである場
合には、レジスタファイル6からのレジスタの内容を演
算部12に出力する。
【0039】同様に、マルチプレクサ−11bは、AN
D回路5bから出力される値が「1」の場合、すなわ
ち、インスタンス変数のメモリ読み出しモードである場
合には、メモリ7からのオブジェクトのインスタンス変
数の値を演算部12に出力する。一方、AND回路5b
から出力される値が「0」の場合、すなわち、通常モー
ドである場合には、レジスタファイル6からのレジスタ
の内容を演算部12に出力する。
【0040】演算部12は、マルチプレクサ−11a.
11bからそれぞれ出力される値に基づいて、オペコー
ド3で指定された演算を行ない、その演算結果は目的レ
ジスタ指定フィールド(dst)4aで指定されるレジ
スタファイル6又はメモリ7に格納される。
【0041】すなわち、本実施の形態のマイクロプロセ
ッサにおけるオペランドの読み込みにおいては、レジス
タ指定フィールド4b,4cのうち最上位ビットが
「1」であり、かつモードレジスタ1が「1」の値の場
合には、レジスタファイル6ではなく、レジスタ指定フ
ィールドの下位4ビット及びベース専用レジスタ10に
よって指定される読み出しアドレスでオブジェクトイン
スタンス変数の値をメモリ7から読み出し、それ以外の
場合には、レジスタファイル6の内容が取り出される。
【0042】<オペランドの書き込み>次に、オペラン
ドの書き込みについて、図2を参照して説明する。な
お、図1と同一部分には、同一符号を付して説明する。
【0043】ここでは、図1に示した演算部12におい
て演算された結果(A)をレジスタファイル6又はメモ
リ7に書き込む場合について説明する。
【0044】同図において、命令レジスタ2にセットさ
れる命令コードの目的レジスタ指定フィールド4a(d
st)の下位4ビットは、シフト回路22によって、マ
イクロプロセッサのワードサイズ(図2では4バイト)
が乗じられ、その値が加算器23に出力される。
【0045】加算器23は、シフト回路22から出力さ
れた目的レジスタ指定フィールド4a(dst)の下位
4ビットにワードサイズが乗じられた値と、ベース専用
レジスタ10に格納されている仮想メソッドの実行にお
いて、メッセージを受信したオブジェクトのベースアド
レスとを加算した値を、メモリ7の書き込みアドレスと
して出力する。
【0046】また、命令コードの目的レジスタ指定フィ
ールド4a(dst)の全てのビットは、レジスタファ
イル6の書き込みレジスタ番号としてレジスタファイル
6へ出力される。
【0047】一方、命令コードの目的レジスタ指定フィ
ールド4a(dst)の最上位ビットは、モードレジス
タ1に格納された値とAND回路21によって論理積が
とられる。
【0048】例えば、モードレジスタ1に格納された値
が「1」、目的レジスタ指定フィールド4a(dst)
の最上位ビットが「1」の場合には、AND回路21か
ら「1」が出力され、それ以外の場合には「0」が出力
される。
【0049】AND回路21の出力は、ゲート回路24
aに出力されるとともに、NOT回路25を介してゲー
ト回路24bに出力される。ゲート回路24a又はゲー
ト回路24bに「1」の値が入力されると、演算結果
(A)がレジスタファイル6又はメモリ7に出力され
る。
【0050】すなわち、AND回路21から「1」が出
力されるとゲート回路24aが開き、加算器23から出
力される書き込みアドレスによって指定されるメモリ7
の番地に演算結果(A)が書き込まれる。また、AND
回路21から「0」が出力されるとゲート回路24bが
開き、目的レジスタ指定フィールド4aによって指定さ
れるレジスタファイル6の番地に演算結果(A)が書き
込まれる。
【0051】言い換えれば、モードレジスタ1が「1」
の値で、かつ命令コードの目的レジスタ指定フィールド
4aの最上位ビットが「1」の場合には、オブジェクト
インスタンス変数のメモリ6への書き込みとなり、演算
結果(A)はメモリ7に書き込まれる。それ以外の場合
には、演算結果(A)は、レジスタファイル6に書き込
まれる。
【0052】<ジャンプ アンド リンク アンド モ
ード切り替え命令>上述の説明においては、オペランド
の書き込み、読み出しについて説明した。
【0053】本実施の形態は、通常モードにおいてプロ
グラムが動作している場合に、モードレジスタ及びベー
ス専用レジスタに値をセットし、オブジェクトプログラ
ムを実行可能にするものである。
【0054】このような動作を行なうために、本実施の
形態においては、図3に示す命令レジスタ31の命令コ
ードのオペレーションコード32にジャンプアンドリン
クアンドモード切替命令をセットする。
【0055】この命令がセットされた時、レジスタ指定
フィールド(src1)33にはメッセージを送る先の
オブジェクトのベースアドレスを格納するレジスタ番
号、レジスタ指定フィールド(src2)34にはその
オブジェクトのメソッドテーブルのアドレスを格納する
レジスタ番号、オフセット(offset)35には呼
び出す仮想メソッドのメソッドテーブルの位置(オフセ
ット)が指定される。
【0056】制御部36は、マイクロプロセッサの命令
コードのオペレーションコード32がジャンプアンドリ
ンクアンドモード切替命令であると解読すると、モード
レジスタ1に「1」の値をセットする。
【0057】すると、命令コードのレジスタ指定フィー
ルド(src1)33に格納された「メッセージを送る
先のオブジェクトのベースアドレスのレジスタ番号」を
使用して、レジスタファイル6からメッセージを送る先
のオブジェクトのベースアドレスが読み出され、ベース
専用レジスタ10に格納される。
【0058】また、命令コードのレジスタ指定フィール
ド(src2)34に格納された「オブジェクトのメソ
ッドテーブルのアドレスを格納するレジスタ番号」を使
用して、レジスタファイル6からメソッドテーブルのア
ドレスが出力される。
【0059】そして、命令コードのオフセット(off
set)35に格納されている「仮想メソッドのメソッ
ドテーブルの位置(オフセット)」は、シフト回路37
によって、プロセッサのワードサイズが乗じられ(図3
では4バイト)、このワードサイズが乗じられたオフセ
ットと、レジスタファイル6から取り出されたメソッド
テーブルのアドレスが加算器38によって加算され、仮
想メソッドのエントリアドレスを取り出すためのアドレ
スを得る。
【0060】そして、この加算器38から出力される仮
想メソッドのエントリアドレスを取り出すためのアドレ
スを使用して、メモリ7から仮想メソッドのエントリア
ドレスを得て、得られた仮想メソッドのエントリアドレ
スをプログラムカウンタ39に設定する。
【0061】したがって、本実施の形態のマイクロプロ
セッサによれば、インスタンス変数アクセスに伴うロー
ド・ストア命令を行なうことなく、オブジェクトプログ
ラムの実行を行なうことができるので、バイナリプログ
ラムサイズを小さくすることができる。
【0062】なお、本実施の形態のジャンプアンドリン
クアンドモード切替命令は、ジャンプ命令の箇所のアド
レスを特定のレジスタに格納する点は、通常のジャンプ
アンドリンク命令と同じである。
【0063】また、本実施の形態においては、メモリ7
はマイクロプロセッサ内部のものを想定しているが、プ
ロセッサ外部のメモリであってもよい。ハードウェアの
構成としては、プロセッサ内部のメモリマップされたキ
ャッシュメモリでもよいし、キャッシュメモリにマップ
されたレジスタ群であってもよい。この場合のレジスタ
は、通常使用するレジスタファイルとは別のレジスタで
あり、そのレジスタ群のレジスタの個数は、通常のレジ
スタファイルのレジスタ数の1/2となる。また、マル
チプロセッサ構成などの場合の同期のためにキャッシュ
メモリとレジスタ群とのマップ同期機構が必要となる。
さらに、本実施の形態においては、レジスタ指定フィー
ルドのうち、最上位ビットによって、モードを切り替え
る場合について説明したが、最上位ビットである必要は
なく、いずれか特定のビットであればよい。
【0064】同様に、モードレジスタ1の値が「1」、
レジスタ指定フィールドの最上位ビッドが「1」の場合
に、オブジェクト指向プログラム実行モードに切り替わ
る場合について説明したが、この組み合わせに限るもの
ではない。
【0065】さらに、本実施の形態においては、ベース
専用レジスタをレジスタファイルとは別個に設けたが、
ベース専用レジスタはレジスタファイルに設けられてい
てもよい。
【0066】なお、本願発明は、上記各実施形態に限定
されるものでなく、実施段階ではその要旨を逸脱しない
範囲で種々に変形することが可能である。また、各実施
形態は可能な限り適宜組み合わせて実施してもよく、そ
の場合組み合わされた効果が得られる。さらに、上記各
実施形態には種々の段階の発明が含まれており、開示さ
れる複数の構成要件における適宜な組み合わせにより種
々の発明が抽出され得る。例えば実施形態に示される全
構成要件から幾つかの構成要件が省略されることで発明
が抽出された場合には、その抽出された発明を実施する
場合には省略部分が周知慣用技術で適宜補われるもので
ある。
【0067】
【発明の効果】以上詳記したように、本発明によれば、
オブジェクト指向プログラムのバイナリプログラムサイ
ズを小さくすることができ、かつ実行速度を向上するこ
とができるマイクロプロセッサを提供することができ
る。
【図面の簡単な説明】
【図1】本発明の実施の形態に係るマイクロプロセッサ
において、オペランドの読み出しを行なう場合を説明す
るための図である。
【図2】本発明の実施の形態に係るマイクロプロセッサ
において、オペランドの書き込みを説明するための図で
ある。
【図3】本発明の実施の形態に係るマイクロプロセッサ
において、ジャンプアンドリンクアンドモード切替命令
を説明するための図である。
【図4】モードレジスタの値と、レジスタ指定フィール
ドの最上位ビットと、モードとの関係を示す図である。
【図5】オブジェクトインスタンスの内部表現の実現例
を示す図である。
【符号の説明】
1…モードレジスタ、 2…命令レジスタ、 3…オペレーションコード、 4a〜4c…レジスタ指定フィールド、 5a,5b…AND回路、 6…レジスタファイル、 7…メモリ、 8a,8b…シフト回路、 9a,9b…加算回路、 10…ベース専用レジスタ、 11a,11b…マルチプレクサ−、 12…演算部、 21…AND回路、 22…シフト回路、 23…加算回路、 24a,24b…ゲート回路、 25…NOT回路、 31…命令コード、 32…オペレーションコード、 33〜34… 35…レジスタ指定フィールド、 36…制御部、 37…シフト回路、 38…加算器。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 仮想メソッドの実行において、メッセー
    ジを受信したオブジェクトのベースアドレスを格納する
    専用レジスタと、 オブジェクトのインスタンス変数の値を格納するメモリ
    と、 オブジェクト指向プログラムを実行するか否かのモード
    を指定するモードレジスタと、 マイクロプロセッサの命令コードのレジスタ指定フィー
    ルドのうち特定のビット以外のビットと、前記専用レジ
    スタに格納されているオブジェクトのベースアドレスと
    に基づいて、前記メモリをアクセスするためのアドレス
    を生成するアドレス生成手段と、 前記マイクロプロセッサの命令コードのレジスタ指定フ
    ィールドのうち、前記特定のビットの値が有効で、かつ
    前記モードレジスタがオブジェクト指向プログラムの実
    行モードを示している場合に、前記アドレス生成手段に
    より生成されたアドレスに対応するオブジェクトのイン
    スタンス変数を前記メモリから読み出す読み出し手段
    と、 前記読み出し手段で得られたインスタンス変数の演算を
    行なう演算手段とを具備することを特徴とするマイクロ
    プロセッサ。
  2. 【請求項2】 仮想メソッドの実行において、メッセー
    ジを受信したオブジェクトのベースアドレスを格納する
    専用レジスタと、 データを記憶するレジスタファイルと、 データを格納するメモリと、 オブジェクト指向プログラムを実行するか否かのモード
    を指定するモードレジスタと、 マイクロプロセッサの命令コードのレジスタ指定フィー
    ルドのうち特定のビット以外のビットと、前記専用レジ
    スタに格納されているオブジェクトのベースアドレスと
    に基づいて、前記メモリをアクセスするためのアドレス
    を生成するアドレス生成手段と、 前記マイクロプロセッサの命令コードのレジスタ指定フ
    ィールドのうち、前記特定のビットの値が有効で、かつ
    前記モードレジスタがオブジェクト指向プログラムの実
    行モードを示している場合に、前記アドレス生成手段に
    より生成されたアドレスによって指定される前記メモリ
    の番地に演算結果を書き込み手段とを具備することを特
    徴とするマイクロプロセッサ。
  3. 【請求項3】 オペレーションコード、メッセージを送
    る送り先のオブジェクトのベースアドレスを格納するレ
    ジスタ番号、前記オブジェクトのメソッドテーブルのア
    ドレスを格納するレジスタ番号及び呼び出す仮想メソッ
    ドのメソッドテーブルの位置を示すオフセットを有する
    命令コードと、 仮想メソッドの実行において、メッセージを受信したオ
    ブジェクトのベースアドレスを格納する専用レジスタ
    と、 レジスタファイルと、 仮想メソッドのエントリアドレスを格納するメモリと、 オブジェクト指向プログラムを実行するか否かのモード
    指定するモードレジスタと、 前記命令コードのオペレーションコードが特定のオペレ
    ーションコードであるか否かを判別し、特定のオペレー
    ションコードであると判別された場合に、前記モードレ
    ジスタにオブジェクトプログラムを実行するモードを設
    定する制御部と、 前記命令コードの前記ベースアドレスを格納するレジス
    タ番号を使用して、前記レジスタファイルから前記メッ
    セージを送る送り先のオブジェクトのベースアドレスを
    読み出し、前記ベース専用レジスタに設定する設定手段
    と、 前記命令コードの前記メソッドテーブルのアドレスを格
    納するレジスタ番号を使用して前記レジスタファイルか
    ら前記オブジェクトのメソッドテーブルのアドレスを読
    み出し、その値と前記命令コードの前記オフセットとを
    加算して生成した仮想メソッドのエントリアドレスをプ
    ログラムカウンタにセットする手段とを具備することを
    特徴とする請求項1又は請求項2記載のマイクロプロセ
    ッサ。
  4. 【請求項4】 前記アドレス生成手段は、 前記命令コードのレジスタ指定フィールドのうち、前記
    特定のビット以外のビットにマイクロプロセッサのワー
    ド数を乗じた値を算出する算出手段と、 前記算出手段によって算出された値と、前記専用レジス
    タに格納されているオブジェクトのベースアドレスとを
    加算し、前記メモリをアクセスするためのアドレスを生
    成する加算手段とを具備することを特徴とする請求項1
    又は請求項2記載のマイクロプロセッサ。
  5. 【請求項5】 レジスタファイルと、 前記命令コードのレジスタ指定フィールドのうち、前記
    特定のビットの値が有効でない場合、又は前記モードレ
    ジスタがオブジェクト指向プログラムを実行するモード
    でない場合には、前記レジスタ指定フィールドの値によ
    って前記レジスタファイルからデータを読み出すレジス
    タファイル読み出し手段とをさらに具備することを特徴
    とする請求項1記載のマイクロプロセッサ。
  6. 【請求項6】 レジスタファイルと、 前記命令コードのレジスタ指定フィールドのうち、前記
    特定のビットの値が特定の値が有効でない場合、又は前
    記モードレジスタがオブジェクト指向プログラムを実行
    するモードでない場合には、前記レジスタ指定フィール
    ドの値によって指定された前記レジスタファイルに前記
    演算結果を書き込むレジスタファイル書き込み手段とを
    さらに具備することを特徴とする請求項2記載のマイク
    ロプロセッサ。
JP2001163169A 2001-05-30 2001-05-30 マイクロプロセッサ Pending JP2002351656A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001163169A JP2002351656A (ja) 2001-05-30 2001-05-30 マイクロプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001163169A JP2002351656A (ja) 2001-05-30 2001-05-30 マイクロプロセッサ

Publications (1)

Publication Number Publication Date
JP2002351656A true JP2002351656A (ja) 2002-12-06

Family

ID=19006187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001163169A Pending JP2002351656A (ja) 2001-05-30 2001-05-30 マイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP2002351656A (ja)

Similar Documents

Publication Publication Date Title
US9092215B2 (en) Mapping between registers used by multiple instruction sets
US8738892B2 (en) Very long instruction word (VLIW) computer having efficient instruction code format
TWI403954B (zh) 具有指令集之電子系統、微控制器及其指令執行方法
JP3547139B2 (ja) プロセッサ
JP6849275B2 (ja) インデックスおよび即値を用いてベクトル置換を実行するための方法および装置
CN106547518A (zh) 用于加速器的低等待时间调用的装置和方法
JP2006146953A (ja) プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
JP2018500657A (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
JP2001092662A (ja) プロセッサコア及びこれを用いたプロセッサ
JPH10187661A (ja) コンピュータにおけるスカラ値をベクトルに記入する方法
JP3694531B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
US6687808B2 (en) Data processor using indirect register addressing
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
JP3805314B2 (ja) プロセッサ
US6378050B1 (en) Information processing apparatus and storage medium
JPH11272546A (ja) 可変長レジスタ装置
JP2004086837A (ja) データ処理装置
JP2551167B2 (ja) マイクロコンピュータ
JPH07239780A (ja) 1クロック可変長命令実行処理型命令読み込み電子計 算機
JP2002229778A (ja) 高速ディスプレースメント付きpc相対分岐方式
JP3570287B2 (ja) マイクロコンピュータ
JP2002351656A (ja) マイクロプロセッサ
JP3164915B2 (ja) データ処理装置及びそのデータ処理方法