JP2001147902A - マイクロプロセッサシステム - Google Patents

マイクロプロセッサシステム

Info

Publication number
JP2001147902A
JP2001147902A JP33196099A JP33196099A JP2001147902A JP 2001147902 A JP2001147902 A JP 2001147902A JP 33196099 A JP33196099 A JP 33196099A JP 33196099 A JP33196099 A JP 33196099A JP 2001147902 A JP2001147902 A JP 2001147902A
Authority
JP
Japan
Prior art keywords
instruction
coprocessor
stack
main processor
data
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
JP33196099A
Other languages
English (en)
Other versions
JP3621315B2 (ja
Inventor
Kazumasa Mine
一雅 峰
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP33196099A priority Critical patent/JP3621315B2/ja
Priority to US09/716,378 priority patent/US7200741B1/en
Priority to EP00125496A priority patent/EP1102164A3/en
Publication of JP2001147902A publication Critical patent/JP2001147902A/ja
Application granted granted Critical
Publication of JP3621315B2 publication Critical patent/JP3621315B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

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

Abstract

(57)【要約】 【課題】 回路規模の増大を抑えつつ、特定の命令セッ
トを高速に実行することが可能なマイクロプロセッサシ
ステムを提供すること。 【解決手段】 プログラムに記述された命令を実行する
マイクロプロセッサシステムにおいて、第1の命令セッ
トをハードウェア上で実行すると共に第2の命令セット
をソフトウェア上で実行するメインプロセッサ100
と、前記メインプロセッサの管理下で動作して前記第2
の命令セットをハードウェア上で実行するコプロセッサ
200とを備える。前記コプロセッサ200は、前記第
2の命令セットのうち、前記メインプロセッサ100の
管理下にあるデータを操作する必要を生ずる特定の命令
に遭遇した場合、前記メインプロセッサ100に通知を
発行して当該命令の実行を依頼する。この場合、コプロ
セッサ200は、ハードウェア上でスタックポインタお
よびプログラムカウンタを自ら更新する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、プログラムに記
述された命令を実行するマイクロプロセッサに関し、特
にメインプロセッサとコプロセッサとから構成されるマ
イクロプロセッサシステムに関する。
【0002】
【従来の技術】従来、各種の命令セットを実行するため
の汎用のマイクロプロセッサがある。この汎用のマイク
ロプロセッサは、ハードウェア上での処理に加えて、ソ
フトウェア上で適応的に処理する機能を有しているの
で、Javaなどインタプリタ言語を実行するための命
令セットや、他のCPUをエミュレートするための命令
セットなどのように、異なる体系の各種の命令セットに
柔軟に対応することができる。
【0003】また、上述のような汎用のマイクロプロセ
ッサをメインプロセッサとし、このメインプロセッサの
管理下で動作するマイクロプロセッサをコプロセッサと
して備えるマイクロプロセッサシステムがある。この種
のマイクロプロセッサシステムでは、コプロセッサは、
メインプロセッサの処理の一部を高速化するためのもの
ものであって、例えばメインプロセッサ側のソフトウェ
ア上で行われる特定の命令セットを実行するための専用
のハードウェアを備えて構成されている。
【0004】
【発明が解決しようとする課題】ところで、上述の汎用
のマイクロプロセッサによれば、柔軟に各種の命令セッ
トを実行することができるものの、例えばJava言語
などの特定のインタプリタ言語の命令を実行する場合、
処理に時間を要するという問題がある。つまり、汎用の
マイクロプロセッサは、各種の命令セットに柔軟に対応
する必要上、ハードウェアのアーキテクチャとして、汎
用レジスタアーキテクチャや、アキュムレータアーキテ
クチャを採用しているのが通例である。このため、ハー
ドウェアとの親和性の観点では、C言語などの高級言語
の処理に適している反面、Java言語などのインタプ
リタ言語についてはソフトウェア上で対処する必要があ
り、したがって処理に時間を要していた。
【0005】また、メインプロセッサとコプロセッサと
から構成された上述のマイクロプロセッサシステムによ
れば、Java言語などの特定のプログラム言語の命令
セットのすべての命令を専用に処理するものとしてコプ
ロセッサのハードウェアを構成すれば、この特定の命令
セットについては、専用のハードウェア上で実行され
る。このため、その特定の命令セットを高速に実行する
ことができるものの、コプロセッサの回路規模が大きく
なり、したがって全体としてチップ面積が増大するとい
う問題がある。
【0006】この発明は、上記事情に鑑みてなされたも
ので、回路規模の増大を抑えつつ、特定の命令セットを
高速に実行することが可能なマイクロプロセッサシステ
ムを提供することを目的とする。
【0007】
【課題を解決するための手段】この発明は、上記課題を
解決するため、以下の構成を有する。すなわち、この発
明にかかるマイクロプロセッサシステムは、プログラム
に記述された命令を実行するマイクロプロセッサシステ
ムであって、第1の命令セット(例えば後述するプログ
ラムメモリ300に格納されているプログラムの命令)
をハードウェア上で実行すると共に第2の命令セット
(例えば後述するプログラムメモリ400に格納されて
いるプログラムの命令)をソフトウェア上で実行するメ
インプロセッサ(例えば後述するメインプロセッサ10
0に相当する構成要素)と、前記メインプロセッサの管
理下で動作して前記第2の命令セットを自発的にフェッ
チしてハードウェア上で実行するコプロセッサ(例えば
後述するコプロセッサ200に相当する構成要素)と、
を備えたことを特徴とする。
【0008】この構成によれば、第2の命令セットにつ
いては、メインプロセッサまたはコプロセッサにより適
応的に処理することができる。したがって、例えば、原
則として第2の命令セットの処理をコプロセッサのハー
ドウェア上で処理することとし、例外として第2の命令
セットの内のソフトウェアによる処理に適した命令のみ
をメインプロセッサで実行するようにすれば、マイクロ
プロセッサシステムに要求される処理能力に対して、全
体としてハードウェアの規模を縮小される。したがっ
て、回路規模の増大を抑えつつ、特定の命令セット(第
2の命令セット)を高速に実行することが可能となる。
【0009】また、前記コプロセッサは、命令フェッチ
回路とプログラムカウンタと命令キューとを有し、命令
フェッチ回路が、プログラムカウンタの値を受け取り、
この値をアドレスとして使用してプログラムメモリにア
クセスし、得られたデータを命令キューにセットするこ
とを特徴とする。
【0010】この構成によれば、コプロセッサが自発的
に命令をフェッチして実行することができ、コプロセッ
サが、第2の命令セットをハードウェアで実行すること
ができる。こうすることで、メインプロセッサがプログ
ラムメモリから第2の命令セットをデータとしてフェッ
チし、コプロセッサの命令キューにセットする、という
動作を実行せずにすみ、メインプロセッサの負担を軽減
できるとともに、フェッチの動作に要する時間が短くな
り、第2の命令の実行速度の向上が実現でき、システム
全体の処理性能の向上が実現可能となる。
【0011】また、前記コプロセッサは、例えば、前記
第2の命令セットのうち、前記メインプロセッサの管理
下にあるデータ(例えば後述するデータメモリ500に
格納されているデータ)を操作する必要を生ずる特定の
命令に遭遇した場合、前記メインプロセッサに通知を発
行して当該命令の実行を依頼することを特徴とする。
【0012】この構成によれば、メインプロセッサの管
理下にあるデータを操作する必要を生ずる特定の命令に
ついては、メインプロセッサのソフトウェア上で、この
メインプロセッサの管理下にあるデータを操作して処理
される。換言すれば、ソフトウェアによる処理に適した
命令や、コプロセッサでは処理不能な命令については、
メインプロセッサのソフトウェア上で処理される。これ
により、メインプロセッサのソフトウエアが有効に活用
されると共にコプロセッサのハードウェアの規模を必要
最小限に抑えることが可能となり、したがって全体とし
てハードウェアの規模を有効に抑えることが可能とな
る。
【0013】さらに、前記コプロセッサは、例えば、前
記第2の命令セットのうち、実行頻度の高い所定の複数
の命令に対して予め割り付けられた専用割り込みベクタ
(例えば後述する専用割り込み要求信号S290A〜S
290Fにより指定される専用割り込みベクタに相当す
る要素)を用いて前記通知を発行することを特徴とす
る。
【0014】この構成によれば、第2の命令セットのう
ち、実行頻度の高い命令に遭遇した場合、この命令に割
り付けられた専用割り込み要求信号を用いてメインプロ
セッサへの通知が行われる。メインプロセッサは、この
専用割り込み要求信号により、コプロセッサからの通知
に加えて、コプロセッサが遭遇した命令が把握される。
したがって、メインプロセッサ側において、コプロセッ
サからの依頼により処理すべき命令を識別するための処
理を省くことが可能となる。
【0015】さらにまた、前記コプロセッサは、例え
ば、前記第2の命令セットに属する命令を実行する過程
で発生するデータを保持するためのスタックメモリ(例
えば後述するスタックメモリ270に相当する構成要
素)と、該スタックメモリ内の最新データのアドレスを
保持するスタックポインタ(例えば後述するスタックポ
インタ260Aに相当する構成要素)とを有し、前記特
定の命令を実行する過程で発生する処理のうち、前記ス
タックメモリのスタックポインタを更新するための処理
を実行するハードウエア資源(例えば後述するデコーダ
240A、処理手順制御信号発生回路240B、SP用
増減値発生回路240C、加算器250Aに相当する構
成要素)を備えたことを特徴とする。
【0016】この構成によれば、メインプロセッサに処
理を依頼する命令であっても、この命令を実行する過程
で発生する処理のうち、スタックポインタを更新するた
めの処理については、コプロセッサのハードウェア上で
行われる。したがって、メインプロセッサが依頼を受け
てこの命令を処理する過程において、スタックポインタ
を更新するための処理を省くことができる。このため、
メインプロセッサのソフトウエア上での処理が簡略化さ
れると共に、コプロセッサのハードウェアが有効に活用
され、メインプロセッサでのソフトウェアによる処理時
間を短縮することができる。
【0017】さらにまた、前記コプロセッサは、例え
ば、現在処理中の前記第2の命令セットに属する命令の
アドレスを保持するためのプログラムカウンタ(例えば
後述するプログラムカウンタ260Bに相当する構成要
素)を有し、前記特定の命令を実行する過程で発生する
処理のうち、前記プログラムカウンタを更新するための
処理を実行するハードウエア資源(例えば後述するデコ
ーダ240A、処理手順制御信号発生回路240B、P
C用増減値発生回路240D、加算器250Bに相当す
る構成要素)を備えたことを特徴とする。
【0018】この構成によれば、メインプロセッサに処
理を依頼する命令であっても、この命令を実行する過程
で発生する処理のうち、プログラムカウンタを更新する
ための処理については、コプロセッサのハードウェア上
で行われる。したがって、メインプロセッサが依頼を受
けてこの命令を処理する過程において、プログラムカウ
ンタを更新するための処理を省くことができる。このた
め、メインプロセッサのソフトウエア上での処理が簡略
化されると共に、コプロセッサのハードウェアが有効に
活用され、メインプロセッサでのソフトウェアによる処
理時間を短縮することができる。
【0019】さらにまた、前記コプロセッサは、例え
ば、前記通知を行う必要が発生したことを表す情報を保
持するための状態レジスタを有し、前記メインプロセッ
サは、前記状態レジスタを定期的にアクセスして、該状
態レジスタの内容から前記コプロセッサが前記特定の命
令に遭遇したことを把握して、前記特定の命令を実行す
ることを特徴とする。この構成によれば、メインプロセ
ッサが定期的に状態レジスタをアクセスして、コプロセ
ッサが特定の命令に遭遇したことを把握するので、メイ
ンプロセッサに対し、割り込み要求信号を用いて割り込
み処理を行う必要がなくなる。したがって、コプロセッ
サからメインプロセッサへの通知を簡略化することが可
能となる。
【0020】さらにまた、前記メインプロセッサは、例
えば、前記コプロセッサからの前記専用割り込みベクタ
をエンコードして、処理すべき前記特定の命令に対応す
る割り込みハンドラを特定する割り込み要求受付回路
(例えば後述する割り込み要求受付回路190に相当す
る構成要素)を備えたことを特徴とする。この構成によ
れば、メインプロセッサにおいて、コプロセッサから入
力する専用割り込みベクタに基づいて、直接的に割り込
みハンドラが特定される。したがって、メインプロセッ
サ側で起動すべき割り込みハンドラを特定するためのソ
フトウエア上の処理が不要となり、メインプロセッサで
の処理時間を短縮することが可能となる。
【0021】さらにまた、前記メインプロセッサは、例
えば、前記コプロセッサの命令キューを参照して、処理
すべき前記特定の命令に対応する割り込みハンドラを特
定することを特徴とする。この構成によれば、メインプ
ロセッサにおいて、コプロセッサの命令キューを参照し
てコプロセッサが遭遇した命令が把握され、直接的に割
り込みハンドラが特定される。したがって、メインプロ
セッサ側で起動すべき割り込みハンドラを特定するため
のソフトウエア上の処理が簡略化され、メインプロセッ
サでの処理時間を短縮することが可能となる。
【0022】さらにまた、前記コプロセッサは、スタッ
クアーキテクチャ(例えば後述するコプロセッサ20
0,200A,200Bが採用するアーキテクチャに相
当する要素)を有することを特徴とする。この構成によ
れば、コプロセッサにおいて、サブルーチンの頻繁な使
用を伴う命令や、ゼロオペランドのアドレッシングを伴
う命令の処理が効率的に行われる。したがってJava
などのスタックアーキテクチャのインタプリタ言語の命
令を効率的に実行することが可能となる。
【0023】さらにまた、スタックアーキテクチャを採
用する前記コプロセッサは、例えば、スタックデータの
うち、先頭側の所定数のデータを保持するスタックトッ
プレジスタ(例えば後述するスタックトップレジスタ2
70Aに相当する構成要素)と、外部に設けられたスタ
ックメモリと前記スタックトップレジスタとの間に設け
られ、前記スタックメモリに保持されたデータの一部を
キャッシュするキャッシュメモリ(例えば後述すキャッ
シュメモリ270Cに相当する構成要素)と、を含むこ
とを特徴とする。この構成によれば、スタックデータの
うち、先頭側の所定数のデータをアクセスする頻度の高
いプログラム言語の命令を効率的に実行することができ
ると共に、スタックメモリの容量を適応的に拡大するこ
とが可能となる。
【0024】さらにまた、プログラムに記述された複数
の処理内容に対応づけて、複数の前記コプロセッサ(例
えば後述するコプロセッサ200X〜200Zに相当す
る構成要素)を備えたことを特徴とする。この構成によ
れば、プログラム中の複数の処理を並列処理することが
可能となり、処理を高速化することができる。
【0025】
【発明の実施の形態】次に、この発明の実施の形態につ
いて、図面を参照して詳細に説明する。 <実施の形態1>図1に、この発明の実施の形態1にか
かるマイクロプロセッサシステムの構成を示す。このマ
イクロプロセッサシステムは、異なるプログラム言語で
記述された複数種類の命令セットを実行可能なように構
成されたものであって、いわゆる汎用レジスタ・アーキ
テクチャを採用する汎用のマイクロプロセッサ100
と、スタック・アーキテクチャを採用するコプロセッサ
200とを主要な構成要素として備える。
【0026】メインプロセッサ100は、C言語やアセ
ンブラなどのプログラム言語で記述された第1の命令セ
ットをハードウェア上で実行し、Java言語などの特
定のプログラム言語で記述された第2の命令セットをソ
フトウェア上で実行するものである。また、コプロセッ
サ200は、メインプロセッサ100の管理下で協調動
作するものであって、上述の第1の命令セットとは異な
るJavaなどの第2の命令セットをハードウェア上で
実行するものである。
【0027】プログラムメモリ300は、メインプロセ
ッサ100の一連の動作を制御するためのプログラムで
あって第1の命令セットの機械語を格納する。プログラ
ムメモリ400は、Javaなどの第2の命令セットの
中間コードを格納する。データメモリ500は、メイン
プロセッサ100に入力される演算データやその演算結
果など、メインプロセッサ100で操作されるデータを
格納する。この実施の形態1では、プログラムメモリ3
00には、C言語で記述されたプログラムの機械語であ
ってメインプロセッサの動作手順が記述された機械語が
展開されているものとし、プログラムメモリ400に
は、Java言語などのインタプリタ言語の中間コード
が展開されているものとする。
【0028】これらプログラムメモリ300,400、
およびデータメモリ500は、外部バス600を介して
互いに接続されると共にメインプロセッサ100に接続
される。上述のメインプロセッサ100、コプロセッサ
200、プログラムメモリ300,400、データメモ
リ500、および外部バス600は、同一プリント基板
上に実装されてマイクロプロセッサシステムを構成す
る。もしくは、これらの一部あるいは全部を1つのシス
テムLSI上に集積してもよい。
【0029】ここで、メインプロセッサ100は、プロ
グラム中の第2の命令セットを解読してプログラムの進
行を制御するための回路系として、プログラムメモリ3
00をアクセスして第1の命令セットに属する命令(以
下、単に第1の命令と称す)をフェッチする命令フェッ
チ回路110、フェッチされた第1の命令を一時的に保
持する命令キュー120、第1の命令を解読する命令デ
コーダ130、メインプロセッサ側が現在処理中の命令
のアドレス(即ちプログラムカウンタの値、以下PC値
と称す)を更新する加算器140、PC値を保持するプ
ログラムカウンタ150を有する。
【0030】また、このメインプロセッサ100は、命
令デコーダ130の解読結果に応じた演算を実行するた
めの回路系として、この演算の入力データや演算結果
(出力データ)を一時的に保持する汎用レジスタ16
0、この入力データに対して演算処理を施す算術論理ユ
ニット(ALU)170、この算術論理ユニット170
により生成されたアドレスを使用して汎用レジスタ16
0と外部のデータバス600との間でデータをロードま
たはストアするデータアクセス回路180、および後述
のコプロセッサ200からの割り込み要求を受け付ける
ための割り込み要求受付回路190を有する。さらに、
この汎用のメインプロセッサ100は、第1の命令セッ
トをハードウェア上で実行することにより、第2の命令
セットをソフトウェア上で間接的に実行可能なように構
成されている。
【0031】一方、コプロセッサ200は、第2の命令
セットのうち、メインプロセッサ100の管理下にある
データを操作する必要を生ずる特定の命令に遭遇した場
合、メインプロセッサ100に通知して、この命令の実
行を依頼するものである。具体的には、コプロセッサ2
00は、プログラム中の第2の命令セットを解読してプ
ログラムの進行を制御するための回路系として、このコ
プロセッサ自体の特定の基本動作を制御するための制御
データ(例えば動作開始や動作停止を指示するデータ)
を一時的に保持するの制御レジスタ210、制御レジス
タ210に保持された制御データに応じてプログラムメ
モリ400から第2の命令セットに属する命令(以下、
単に第2の命令と称す)をフェッチするための命令フェ
ッチ回路220、フェッチされた第2の命令を一時的に
保持する命令キュー230、フェッチされた第2の命令
を解読する命令デコーダ240、スタックされたデータ
の先頭アドレス(即ちスタックポインタの値、以下、S
P値と称す)を命令デコーダの指示により更新するため
の加減算器250A、SP値を保持するスタックポイン
タ260A、現在処理中の命令のアドレス(即ちプログ
ラムカウント値、以下PC値と称す)を命令デコーダの
指示により更新するための加算器250B、PC値を保
持するプログラムカウンタ260Bを有する。なお、こ
の発明において、「スタックされたデータの先頭アドレ
ス」、すなわち「SP値」は、スタックされた最新デー
タのアドレスを意味するものとする。
【0032】また、このコプロセッサ200は、命令デ
コーダ240の解読結果に応じた演算を実行するための
回路系として、第2の命令セットに属する命令を実行す
る過程で発生する各種のデータ(第2の命令の演算オペ
ランド、ローカル変数、手続オペランド等)を保持する
スタックメモリ270、このスタックメモリ上のオペラ
ンドに演算処理を施す算術論理ユニット(ALU)28
0、および命令デコーダ240の解読結果に応じてメイ
ンプロセッサ100に対し割り込み要求を発生する割り
込み要求発生回路290を有する。なお、スタックメモ
リ270でのスタックは、アドレスの小さい方から大き
い方に成長するものとし、スタックのデータ幅は例えば
32ビット(4バイト)である。
【0033】これら、制御レジスタ210、スタックポ
インタ260A、プログラムカウンタ260B、および
スタックメモリ270は、コプロセッサ200の内部バ
ス201を介して外部のデータバス600に接続されて
おり、メインプロセッサ100によりコプロセッサ側の
制御レジスタ210やスタックポインタ260Aの内容
を直接的に設定可能なように構成されている。
【0034】ここで、図2を参照して、スタックメモリ
270の動作概念を補足説明しておく。このスタックメ
モリ270は、LIFO(後入れ先出し)方式のメモリ
であって、プログラムの実行中にデータを順々に積み重
ねるようにして一時的に保持するものである。図2に示
す例は、スタックポインタが示す先頭アドレスおよびそ
の前のアドレスにそれぞれ収納された二つのデータに対
して二項演算を施す場合におけるスタックメモリの内容
の変化の様子を示す。
【0035】演算に先だって、同図(a)に示すよう
に、アドレス「0x1004」〜「0x1014」に
は、データD1〜D5が順次積み重ねられるように収納
される。この場合、最後に収納されたデータD5のアド
レス「0x1014」が先頭アドレスとなり、スタック
ポインタの値とされる。この状態から、二項演算(例え
ば二項の加算演算)が実行されると、スタックポインタ
で示されるアドレス「0x1014」のデータD5とア
ドレス「0x1010」のデータD4とに対して演算が
行われる。
【0036】具体的には、この演算の内容が加算演算で
あれば、データD4とデータD5とを加算して、その演
算結果が算出される。この時点で、データD4,D5は
不要となる。そこで、図2(b)に示すように、演算結
果として算出されたデータD6は、後続のデータD3の
次のアドレス「0x1010」に保存され、スタックポ
インタの値がアドレス「0x1010」に更新される。
このように、スタックメモリには、演算を処理する過程
で一時的にデータが保持され、スタックポインタにより
その時々で有効なデータの先頭アドレスが指定されるよ
うになっている。
【0037】図3に、命令デコーダ240の詳細な構成
とその周辺を示す。整列回路221は、命令フェッチ回
路220の一部機能として構成されたもので、フェッチ
された第2の命令から、オペレーションコードとオペラ
ンドコードとを抽出し、これらを整列して命令キュー2
30に出力する。命令デコーダ240は、命令キュー2
30に保持されたオペレーションコードを解読するため
のデコーダ240A、オペレーションコードの解読結果
に応じた処理手順制御信号S240Bを発生する処理手
順制御信号発生回路240B、SP値の増減値を発生す
るSP用増減値発生回路240C、およびPC値の増減
値を発生するPC用増減値発生回路240Dから構成さ
れる。
【0038】図4に、メインプロセッサ100内の割り
込み要求受付回路190の詳細と、コプロセッサ200
内の割り込み要求発生回路290の詳細を示す。割り込
み要求発生回路290は、割り込み処理用デコーダ29
1と、複数のフリップフロップ292とから構成され
る。割り込み処理用デコーダ291は、命令デコーダ2
40からの割り込み要求信号S241Aに基づき、複数
の専用割り込み要求信号S290A〜S290Fと、共
用の割り込み要求信号S290Gとから構成される割り
込みベクタS290を出力する。以下の説明において、
適宜、複数の専用割り込み要求信号S290A〜S29
0Fを「専用割り込みベクタ」と称す。
【0039】ここで、専用割り込み要求信号S290A
〜S290Fは、第2の命令セットのうち、コプロセッ
サが単独で処理不能な命令であって、比較的実行頻度の
高い特定の1つ又は複数の命令に対して予め割り付けら
れている。つまり、コプロセッサがこの特定の命令に遭
遇した場合、この遭遇した命令に割り付けられた専用割
り込み要求信号が活性化されることにより、メインプロ
セッサは、この活性化された専用割り込み要求信号か
ら、遭遇した命令を直接的に把握可能なようになってい
る。また、共用の割り込み要求信号S290Gは、コプ
ロセッサが単独で処理不能な命令であって上述の特定の
命令以外の命令に共通に割り付けられている。このよう
に、コプロセッサ200は、第2の命令セットのうち、
実行頻度の高い1つ又は複数の命令に対して予め割り付
けられた1つ又は複数の専用割り込み要求信号を用いて
「通知」を発行するように構成されている。
【0040】この実施の形態1では、コプロセッサ側で
単独処理可能か否かの判断は、命令を処理(実行)する
過程で、メインプロセッサ100の管理下にあるデータ
(例えばデータメモリ500に格納されたデータ)を操
作する必要を生ずるか否かを基準として行われる。つま
り、コプロセッサ200は、メインプロセッサ側の管理
下にあるデータを操作する必要を生じる命令について
は、単独処理不能と判断し、これ以外の命令については
単独処理可能と判断する。コプロセッサ200側で単独
処理不能な特定の命令については、予め命令デコーダ2
40の内部に定義されている。
【0041】これら専用割り込み要求信号S290A〜
S290Fおよび共用の割り込み要求信号S290G
は、複数のフリップフロップ(F/F)292に保持さ
れた後、割り込みベクタS290としてメインプロセッ
サ100側に出力される。この図4に示す例では、命令
デコーダ240からの3種類の割り込み要求信号S24
1Aの論理値の組み合わせにより第2の命令が特定さ
れ、この命令の内容に応じて専用割り込み要求信号S2
90A〜S290Gの何れかが選択的に活性化されて出
力される。
【0042】なお、専用割り込み要求信号S290A〜
S290Fにプライオリティを設定してもよい。この場
合、例えば、プライオリティの高い割り込み要求信号に
は、一つの命令が割り付けられ、プライオリティの低い
割り込み要求信号には、複数の命令が割り付けられる。
これにより、高いプライオリティを有する割り込み要求
信号に割り付けられた命令については、即座に専用のハ
ンドラが特定される。また、プライオリティの低い割り
込み要求信号に割り付けられた命令については、後述す
るように、この割り込み要求信号に割り付けられた複数
の命令で共有されるハンドラによって、実際にフェッチ
された命令を特定するための処理が行われた後、この命
令の割り込みを処理するためのルーチンが特定される。
【0043】一方、メインプロッセッサ側の割り込み要
求受付回路190は、複数のフリップフロップ191
と、割り込みハンドラアドレス発生回路192と、割り
込みアドレスレジスタ193とから構成される。コプロ
セッサ側からの専用割り込み要求信号S290A〜S2
90Fおよび共用の割り込み要求信号S290Gは、複
数のフリップフロップ191にそれぞれ保持される。割
り込みハンドラアドレス発生回路192は、コプロセッ
サ側からの専用割り込み要求信号S290A〜S290
Gをエンコードして割り込みハンドラのアドレスを発生
する。この割り込みハンドラのアドレスは、割り込みア
ドレスレジスタ193に保持された後に、上述の命令フ
ェッチ回路110に出力される。
【0044】このように、割り込み要求受付回路190
は、コプロセッサ200からの専用割り込み要求信号S
290A〜S290F(専用割り込みベクタ)をエンコ
ードして、処理すべき特定の命令に対応する割り込みハ
ンドラを特定するように構成される。なお、メインプロ
セッサ100は、コプロセッサ200に対し、その動作
を管理するための各種の操作を行う。この操作は、プロ
グラムメモリ300に格納されたプログラムをメインプ
ロセッサ100で実行することにより、ソフトウェア上
で行われる。
【0045】以下、図5および図6に示すフローチャー
トに沿って、Java言語などのスタック・アーキテク
チャ命令で記述されたプログラムを実行する場合を例と
し、この実施の形態1にかかるマイクロプロセッサシス
テムの動作を説明する。 ステップST10:最初に、このマイクロプロセッサシ
ステムのリセットが行われる。これにより、各部の動作
が初期化され、このリセット後にメインプロセッサ10
0が動作を開始し、コプロセッサ200が停止状態に置
かれる。
【0046】ステップST11:続いて、メインプロセ
ッサ100は、ソフトウェア上での操作により、スタッ
クの先頭アドレスをコプロセッサ200内のスタックポ
インタ260Aに設定し、コプロセッサ200が実行す
べきプログラムの先頭アドレスをプログラムカウンタ2
60Bに設定する。これにより、コプロセッサ200の
スタックポインタ260Aおよびプログラムカウンタ2
60Bに初期値がそれぞれ設定される。
【0047】ステップST12:続いて、メインプロセ
ッサ100は、ソフトウェア上での操作により、コプロ
セッサ200内の制御レジスタ210に、「動作開始」
を指示するための制御データ(例えばデータ「0」)を
設定し、このコプロセッサ200の動作を開始させる。
【0048】ステップST13:続いて、動作を開始し
たコプロセッサ200は、ハードウェア上での操作によ
り、プログラムカウンタ260Bに設定されたアドレス
(PC値)を参照して、第2の命令セットの中間コード
が展開されたプログラムメモリ400をアクセスし、こ
のアドレスから命令フェッチ回路220により自発的に
第2の命令をフェッチする。フェッチされた命令は命令
キュー230に一旦保持される。
【0049】ステップST14:続いて、コプロセッサ
200は、フェッチされた第2の命令を命令デコーダ2
40にて解読(デコード)する。 ステップST15:続いて、コプロセッサ200は、フ
ェッチされた第2の命令がコプロセッサ側で単独処理可
能か否かを判断する。
【0050】ここで、コプロセッサ200が遭遇した第
2の命令が、例えばJava仮想マシンの「iadd」
(整数のデータ同士を加算する命令)のように、メイン
プロセッサの管理下に有るデータを操作する必要のない
命令、すなわちコプロセッサ側で処理可能な命令である
場合(ステップST15:YES)、コプロセッサ20
0は、この命令を処理するための以下のステップST1
6〜ST19を実行する。
【0051】ステップST16:コプロセッサ200
は、ハードウェア上での操作により、スタックメモリ2
70から、演算処理の対象とされるデータを読み出す。
上述の「iadd」命令の場合、SP値が表すアドレス
と、このSP値が表すアドレスから「4」を減算したア
ドレス(すなわち「SP値−4」)から、演算処理の対
象とされるデータをそれぞれ読み出す。
【0052】ステップST17:続いて、コプロセッサ
200は、ハードウェア上での操作により、スタックメ
モリ270から読み出したデータの演算を実行する。具
体的には、上述の「iadd」命令の場合、SP値が表
すアドレスから読み出したデータと、「SP値−4」が
表すアドレスから読み出したデータとを加算する。
【0053】ステップST18:続いて、コプロセッサ
200は、ハードウェア上での操作により、スタックメ
モリ270に演算結果を書き戻す。上述の「iadd」
命令の場合、演算結果は、SP値が表すアドレスから
「4」を減算したアドレス(すなわち「SP値−4」)
に書き戻される。
【0054】ステップST19:続いて、コプロセッサ
200は、ハードウェア上での操作により、現在処理の
対象とされている命令の種類に応じて、スタックポイン
タ260A内のSP値と、プログラムカウンタ260B
内のPC値とを更新する。
【0055】具体的には、命令デコーダ240内のデコ
ーダ240Aの解読結果に応じて、SP用増減値発生回
路240Cは、現在のSP値に対する増減値を算出す
る。加減算器250Aは、算出された増減値を現在のS
P値に加算してSP値を更新し、これをスタックポイン
タ260Aに設定する。また、命令デコーダ240内の
デコーダ240Aの解読結果に応じて、PC用増減値発
生回路240Dは、現在のPC値に対する増減値を算出
する。加算器250Bは、算出された増減値を現在のP
C値に加算してPC値を更新し、これをプログラムカウ
ンタ260Bに設定する。
【0056】上述の「iadd」命令の場合、プログラ
ムカウンタ260Bの現在のPC値に「1」を加算し、
スタックポインタ260Aの現在のSP値から「4」を
減算して、PC値とSP値を更新する。この後、上述の
ステップST13に戻り、次の第2の命令をフェッチし
て、この命令の内容に応じた処理が同様に行われる。
【0057】次に、フェッチされた第2の命令が、コプ
ロセッサ200側で処理不能な命令である場合の処理を
説明する。コプロセッサ200は、遭遇した第2の命令
が、例えばJava仮想マシンの「iaload」命令
(整数の配列からデータをロードする命令)のように、
メインプロセッサの管理下に有るデータを操作する必要
のある命令、即ちコプロセッサが単独では処理不能な命
令である場合、上述のステップST15において否定的
な判断を下す(ステップST15:NO)。この場合、
メインプロセッサ100またはコプロセッサ200にお
いて、この命令を処理するための以下のステップST2
0〜ST26が実行される。
【0058】ステップST20:コプロセッサ200
は、当該命令は専用のハンドラを持つか否か、すなわち
当該命令に対して割り込み処理用のハンドラ(割り込み
ハンドラ)を特定するための専用割り込み要求信号が割
り付けられているか否かを判断する。この実施の形態で
は、「iaload」命令に対して、専用割り込み要求
信号S290Aが割り付けられており、「ialoa
d」命令は専用のハンドラを持つものとする。
【0059】ステップST21:この場合(ステップS
T20:YES)、コプロセッサ200は、当該命令に
割り付けられた専用割り込み要求信号S290Aにより
割り込みを発生させ、単独では処理不能な「ialoa
d」命令に遭遇したことをメインプロセッサ100側に
通知する。 ステップST22:続いて、コプロセッサ200は、ハ
ードウェア上での操作により、制御レジスタ210に
「動作停止」を指示するための制御データ(例えばデー
タ「1」)を設定し、動作を一旦停止する。
【0060】ステップST23:続いて、専用割り込み
要求信号S290Aによりコプロセッサ200から通知
を受けたメインプロセッサ100は、処理すべき命令に
対応する割り込みハンドラの特定を行う。具体的には、
割り込みハンドラアドレス発生回路192によりコプロ
セッサ200からの割り込み要求信号S290(S29
0A〜S290G)をエンコードして割り込みハンドラ
のアドレス(割り込みアドレス)を発生する。
【0061】ステップST24:命令が特定されると、
続いて、メインプロセッサ100は、ソフトウェア上で
の操作により、スタックメモリ270またはデータメモ
リ500から命令の実行(演算)に必要なデータを読み
出して、命令の内容に応じた演算処理を実行する。例え
ば上述の「iaload」命令の場合、SP値が表すア
ドレスで指定されるデータ(インデックス)と、このS
P値が表すアドレスから「4」を減算したアドレス(す
なわち「SP値−4」)で指定されるデータ(配列リフ
ァレンス)を、スタックメモリ270からそれぞれ読み
出す。そして、読み出された配列リファレンスで示され
る配列中のデータであって、インデックスに該当するデ
ータをデータメモリ500から読み出す。
【0062】ステップST25:続いて、メインプロセ
ッサ100は、ソフトウェア上での操作により、コプロ
セッサ200内のスタックメモリ270またはデータメ
モリ500に演算結果を書き戻す。上述の「ialoa
d」命令の場合、メインプロセッサは、SP値から
「4」を減算したアドレス(すなわち「SP値−4」)
を指定して、スタックメモリ270に、データメモリ5
00から読み出した上述のデータを書き込む。
【0063】ステップST26:続いて、メインプロセ
ッサ100は、ソフトウェア上での操作により、コプロ
セッサ200内の制御レジスタ210に、「動作開始」
を指示するための制御データ(例えばデータ「0」)を
設定し、コプロセッサ200の動作を再開させる。この
後、上述のステップST19に移行してPC値とSP値
とを更新した後、ステップST13に戻り、次の命令を
フェッチして同様の処理が行われる。
【0064】次に、フェッチされた命令が、専用のハン
ドラを持たない場合の処理を説明する。この場合、コプ
ロセッサ200は、上述のステップST20において否
定的判断を下す(ステップST20:NO)。この場
合、共用の割り込み要求信号S290Gにより通知が行
われるが、複数の命令に共有される割り込み要求信号S
290Gから、命令の種類を一義的に特定することはで
きない。そこでこの場合、メインプロセッサ100また
はコプロセッサ200において、この命令を処理するた
めの以下のステップST30〜ST34,ST24〜S
T26が実行され、命令を特定するための処理が行われ
る。
【0065】ステップST30:この場合、コプロセッ
サ200は、ハードウェア上での操作により、共用の割
り込み要求信号S290Gを活性化して、これをメイン
プロセッサ100に出力する。 ステップSY31:続いて、コプロセッサ200は、ハ
ードウェア上での操作により、制御レジスタ210に、
「動作停止」を指示するための制御データ(例えばデー
タ「1」)を設定し、その動作を停止する。
【0066】ステップST32:続いて、共用割り込み
要求信号S290Gによりコプロセッサ200から通知
を受けたメインプロセッサ100は、共用の割り込みハ
ンドラを特定し、割り込み処理を行う。すなわち、メイ
ンプロセッサ100は、ソフトウェア上での操作によ
り、プログラムカウンタ260BのPC値を読み出し、
現在処理中の命令のアドレスを把握する。 ステップST33:続いて、メインプロセッサ100
は、PC値から把握されたアドレスを指定して、プログ
ラムメモリ400から命令のコードを読み出し、このコ
ードから現在処理中の命令の種類を特定する。
【0067】ステップST34:続いて、メインプロセ
ッサ100は、特定された命令の種類から、この命令に
対応する共用の割り込みハンドラ中の処理ルーチンを特
定する。 ステップST24〜ST26:この後、メインプロセッ
サ100は、上述と同様に、特定された割り込みハンド
ラにより割り込み処理を行い、特定された命令に応じた
演算を実行して結果を必要に応じてデータメモリ500
等に書き戻し、コプロセッサ200の動作を再開させ
る。そして、上述のステップST19に処理を移行させ
てPC値およびSP値を更新した後、処理を上述のステ
ップST13に戻し、次の命令に対する処理を同様に実
行する。
【0068】以上のように、この実施の形態1では、コ
プロセッサ200が、フェッチされた命令が単独で処理
可能か否かを自ら判断する。そして、コプロセッサが単
独では処理不能な命令に遭遇した場合、この命令の演算
がメインプロセッサ100のソフトウェア上で処理さ
れ、この命令の実行に伴って発生するPC値およびSP
値の更新処理がコプロセッサ200のハードウェア上で
処理される。これにより、メインプロセッサ100側で
は、メインプロセッサがコプロセッサから依頼された命
令をソフトウェア上で処理する際、PC値やSP値の更
新処理を行う必要がなくなるので、インプロセッサ側の
ソフトウェアによる処理の負荷を軽減することができ
る。
【0069】また、この実施の形態では、コプロセッサ
200が、単独では処理不能な命令に遭遇した場合、こ
の命令に専用に割り付けられた割り込みベクタを用いて
メインプロセッサ100に通知する。これにより、メイ
ンプロセッサ100において、割り込みベクタから直接
的に命令の種類を把握することができる。したがって、
割り込みハンドラを特定する際、ソフトウェア上の処理
の負荷を軽減することができる。
【0070】ここで、1命令あたりの動作クロック数が
40クロックと仮定すると、その内の10数クロック
が、命令の種類を特定するための処理に費やされ、命令
を特定するための処理が、大きな負荷となる。したがっ
て、上述のように、専用の割り込みベクタを設けること
により、割り込み処理の際に行われるインタプリタのデ
コードやプログラムカウンタの読み出しなど、命令の種
類を特定するための処理が不要となり、メインプロセッ
サの処理上の負荷が大幅に軽減される。
【0071】上述の実施の形態1では、専用割り込み要
求信号S290A〜S290Fが、コプロセッサ側で単
独処理不能な命令であって比較的実行頻度の高い特定の
複数の命令に対して予め割り付けられるものとしたが、
これに限定されることなく、ひとつの専用割り込み要求
信号を2以上の命令に割り付けるようにしてもよい。
【0072】ここで、例えば専用割り込み要求信号S2
90Aを「iadd」命令および「iaload」命令
に割り付けた場合、この専用割り込み要求信号S290
Aから、コプロセッサが遭遇した命令を一義的に特定す
ることはできない。そこで、この場合、共用の割り込み
要求信号S290Gにより割り込み要求がなされた場合
と同様に、コプロセッサ200からプログラムカウンタ
のPC値を読み取って命令の種類を特定する処理(ステ
ップST31〜ST34)を行えばよい。このようにひ
とつの専用割り込み要求信号を2以上の命令に割り付け
ると、PC値から命令を特定するための処理が必要とな
るが、より多くの種類の命令に対して専用割り込み要求
信号を割り付けることができる。
【0073】また、この実施の形態1では、コプロセッ
サ200が単独で処理できない命令として、メインプロ
セッサの管理下にあるデータを操作する必要が生じる命
令を例としたが、これに限定されることなく、ソフトウ
ェアで処理した方が効率的な命令に遭遇した場合に、メ
インプロセッサ側に処理を依頼するようにしてもよい。
この種の命令の例として、上述のメインプロセッサの管
理下にあるデータの操作を伴う命令の他に、スタックフ
レーム(プログラム上で定義された一群のスタックデー
タの集合)の入れ替えが発生する命令、浮動小数点演算
を実行する命令などがある。
【0074】さらに、スタックアーキテクチャを採用す
るRISCプロセッサで処理可能な命令をコプロセッサ
で実行し、それ以外の複雑な処理を必要とする命令をメ
インプロセッサで実行するように、メインプロセッサお
よびコプロセッサがそれぞれ処理対象とする命令を区分
けしてもよい。
【0075】図1に示した実施の形態1では、半導体集
積回路のチップサイズ上の制限により、内蔵するスタッ
クメモリ270の記憶容量が十分に確保できない場合が
ある。この場合、スタックメモリ270に書き込まれる
データのオーバーフロー及びアンダーフローを検出する
ための、ハードウェア手段もしくはソフトウェア手段を
設ける必要がある。
【0076】ハードウェア手段としては、例えば、スタ
ックポインタ260Aが取り得る上限のアドレスと下限
のアドレスとを値として保有するレジスタを設ければよ
い。このように構成すれば、スタックポインタの値が更
新される度に、このレジスタの値と比較して、データの
オーバーフロー及びアンダーフローを検出することがで
きる。メインプロセッサ100への検出の通知は、実行
不能な命令に遭遇した場合と同様、割り込みを発生する
か、あるいは、制御レジスタの特定のビットを変化させ
ることによって実行することができる。
【0077】ソフトウェア手段としては、例えば、Ja
va言語では、バイトコードと呼ばれる中間コードを格
納するファイル中に、プログラムの個々の実行単位毎
に、スタック上で使用されるデータの量すなわちスタッ
クフレームの大きさが予め明示されているので、各プロ
グラムの実行前にメインプロセッサ上のソフトウェアに
よりこれをチェックするようにしておけばよい。
【0078】スタックのオーバーフローを検出した場合
には、メインプロセッサ上のソフトウェアにより、スタ
ックメモリ270中のデータを、データメモリ500に
待避させる。また、アンダーフローを検出した場合に
は、データメモリ500に待避させたデータをスタック
メモリ270に復元する。データの待避あるいは復元
は、スタックメモリの全てのデータに対して一括して行
うこともできるし、一部ずつ分割して行うこともでき
る。
【0079】この実施の形態1によれば、容量の制限さ
れた高速なスタックメモリ270をコプロセッサの内部
に集積したことによって、スタック上のデータをオペラ
ンドとする演算を算術論理ユニット280により高速に
実行することが可能となる。さらに、データメモリ50
0は、メインプロセッサ100ともコプロセッサ200
とも異なる半導体集積回路上に実現すれば、オーバーフ
ローの発生しない十分な記憶容量を確保することが容易
に可能となる。
【0080】<実施の形態2>次に、この発明の実施の
形態2を説明する。Java言語の命令体系では、スタ
ックデータの先頭(上位)の4つのデータをレジスタ内
に持つことにより、命令を効率的に実行し得るものとな
っている。逆に言えば、先頭の4つのデータ以外のスタ
ックデータについては、あえてレジスタに保持する必要
はなく、外部のメモリに保持させておいても、命令の実
行には支障がない。このように、スタックデータを外部
のメモリに保持させることにより、スタックデータの容
量を飛躍的に拡大することができる。この実施の形態2
では、上述のようにスタックデータの先頭の4つのデー
タのみをレジスタ内に保持し、Java言語の処理に適
したマイクロプロセッサシステムについて説明する。
【0081】図7に、この実施の形態2に係るプロセッ
サシステムの構成を示す。このプロセッサシステムは、
前述の図1に示す実施の形態1にかかるプロセッサシス
テムの構成において、スタックメモリ270に代えてス
タックトップレジスタ270Aとスタックメモリ270
Bとを有するコプロセッサ200Aを備える。また、こ
の実施の形態では、命令キュー230は内部バス201
にも接続され、メインプロセッサ100側から、命令キ
ュー230の内容を直接的に読み出すことが可能なよう
になっている。
【0082】ここで、スタックトップレジスタ270A
は、算術論理ユニット280に接続され、スタックデー
タのうち、先頭側の4つのデータ(所定数のデータ)を
保持するものである。このスタックトップレジスタ27
0Aは、リードとライトが同時に且つ高速に行い得るよ
うに構成されたものである。また、スタックメモリ27
0Bは、上述の実施の形態1にかかるスタックメモリ2
70に相当するものであって、外部バス600とスタッ
クトップレジスタ270Aとに接続されて、コプロセッ
サ200Aの外部に設けられ、スタックデータの上位の
4つのデータの下位側のデータを保持する。この構成の
場合、スタックポインタ260AのSP値は、スタック
メモリ270Bの先頭アドレスを示す。
【0083】ここで、図8を参照して、スタックトップ
レジスタとスタックメモリの一般的な動作概念を補足説
明しておく。スタックトップレジスタおよびスタックメ
モリは、上述のスタックメモリ270と同様にLIFO
方式でデータの書き込みと読み出しが行われるものであ
って、同図(a)に示す例では、スタックデータD11
〜D15のうち、先頭の2つのデータD14,D15が
スタックトップレジスタに保持される。
【0084】以下、2項演算を行う場合を例として、ス
タックトップレジスタおよびスタックメモリの内容の変
化の様子を示す。演算に先だって、図8(a)に示すよ
うに、アドレス「0x1004」〜「0x1014」に
は、データD11〜D15が順次積み重ねられるように
収納される。この場合、スタックメモリに最後に収納さ
れたデータD13のアドレス「0x100C」が先頭ア
ドレスとなり、スタックポインタの値とされる。この状
態から、二項演算(例えば二項の加算演算)が実行され
ると、スタックトップレジスタ内のデータD14とデー
タD15とに対して演算がなされる。
【0085】具体的には、この演算が「加算」であれ
ば、データD14とデータD15とが加算され、その演
算結果としてデータD16が得られる。この時点で、デ
ータD14,D15は不要となる。そこで、図8(b)
に示すように、演算結果として算出されたデータD16
は、空いたアドレスの下位側、すなわち後続のデータD
13の次のアドレス「0x1014」に保存される。こ
のとき先頭側のデータD16およびその後続のデータD
13の2つのデータは、スタックトップレジスタ側に保
持される。このように、スタックトップレジスタには、
演算を処理する過程で、スタックデータの先頭側の所定
数のデータが一時的に保持される。
【0086】なお、図8による補足説明では、スタック
トップレジスタは、先頭側の2つのデータを保持するも
のとしたが、図7に示すこの実施の形態2に係る構成で
は、スタックデータのうち、先頭の4つのデータをスタ
ックトップレジスタ270Aに保持するものである。た
だし、この発明は、これに限定されるものではなく、ス
タックトップレジスタのデータ数は、必要に応じた任意
の数に設定される。
【0087】以下、図9に示すフローチャートに沿っ
て、スタックフレーム(プログラム上で定義された一群
のスタックデータの集合)を入れ替える場合を含む動作
を例として、この実施の形態2の動作を説明する。最初
に、このマイクロプロセッサシステムがリセットされ
る。これにより、各部の動作が初期化され、このリセッ
ト後にメインプロセッサ100が、動作を開始し、コプ
ロセッサ200Aが停止状態に置かれる。
【0088】ステップST101:この状態から、メイ
ンプロセッサ100は、ソフトウェア上での操作によ
り、スタックの先頭アドレスをコプロセッサ200A内
のスタックポインタ260Aに設定し、コプロセッサ2
00Aが実行すべきプログラムの先頭アドレスをプログ
ラムカウンタ260Bに設定する。これにより、コプロ
セッサ200Aのスタックポインタ260Aおよびプロ
グラムカウンタ260Bに初期値がそれぞれ設定され
る。
【0089】ステップST102:続いて、メインプロ
セッサ100は、ソフトウェア上での操作により、コプ
ロセッサ200A内の制御レジスタ210に、「動作開
始」を指示するための制御データ(例えばデータ
「0」)を設定し、コプロセッサ200Aの動作を開始
させる。
【0090】ステップST103:続いて、動作を開始
したコプロセッサ200Aは、ハードウェア上での操作
により、プログラムカウンタ260Bに設定されたアド
レスを参照して、第2の命令セットの中間コードが展開
されたプログラムメモリ400をアクセスし、このアド
レスから自発的に第2の命令をフェッチする。フェッチ
された命令は命令キュー230に保持される。そして、
コプロセッサ200Aは、フェッチされた命令を命令デ
コーダ240にて解読(デコード)する。 ステップST104:続いて、コプロセッサ200A
は、フェッチされた命令がスタックフレームを変更する
命令か否かを判断する。
【0091】ここで、スタックトップレジスタが先頭側
の2つのデータを保持するものである場合を例とし、図
10を参照して、スタックフレームの変更の概念を補足
説明しておく。この例では、フレーム変更前において、
スタックメモリ270Bには、引数データD21、ロー
カル変数D22、コンテキストD23、演算データD2
4、および引数データD25の一部(引数データd25
−n)が保持されている。一方、スタックトップレジス
タ270Aには、引数データD25の残り(引数データ
d25−1,d25−2)が保持されている。これら先
頭側のデータD21〜D25が、1つのスタックフレー
ムを構成する。
【0092】フレーム変更を行うと、変更前のフレーム
に新たなデータが積み重ねられ、この先頭側のデータ群
が新たなスタックフレームを構成する。この図に示す例
では、それまでのデータD25に積み重ねるようにし
て、ローカル変数D26、コンテキストD27が保持さ
れ、その先頭側の引数データD25〜コンテキストD2
7が新たなスタックフレームを構成する。
【0093】フレーム変更後では、スタックメモリ27
0Bには、引数データD21〜引数データD25に加
え、新たなデータとして、ローカル変数D26、および
コンテキストD27の一部(コンテキストd27−n)
が保持される。一方、スタックトップレジスタ270A
には、コンテキストD27の残り(コンテキストd27
−1,d27−2)が保持される。この一連のスタック
フレームの変更処理は、メインプロセッサ100のソフ
トウェア上で行われる。
【0094】上述のように、スタックフレームを変更す
る場合、スタックポインタの値が大きく変わる。この処
理を行う場合、スタックトップレジスタ270Aとスタ
ックメモリ270Bとにわたってスタックデータを操作
する必要が生じ、メインプロセッサ100での処理が複
雑化する。そこで、以下のステップで説明するように、
スタックフレームの変更処理を実行する前に、スタック
トップレジスタ270Aの全ての内容を、予めスタック
メモリ270Bに移しておく。これにより、スタックフ
レームを変更するための処理では、スタックメモリ27
0Bのみを参照すればよく、この処理の負荷を軽減する
ことができる。
【0095】ここで、再び説明を図9に示すフローチャ
トに戻す。 ステップST105:上述のステップST104におい
て、フェッチされた命令がスタックフレームを変更する
命令であると判断された場合(ステップST104:Y
ES)、コプロセッサ200Aは、スタックトップレジ
スタ270Aに保持されている全ての内容をスタックメ
モリ270Bに書き込む。そして、コプロセッサ200
Aは、この書き込みによるスタックメモリ270Aのデ
ータの増分に応じて、スタックポインタ260AのSP
値を更新する。
【0096】ステップST106:続いて、コプロセッ
サ200Aは、フェッチされた命令が専用の割り込みハ
ンドラを持つか否かを判断して、割り込み要求を発生
し、メインプロセッサ側において割り込みハンドラの特
定が行われる。このステップST106での処理は、上
述の実施の形態1にかかるステップST20〜ST2
3,ST30〜ST34(図6参照)による処理と同様
に行われる。
【0097】ステップST107:続いて、スタックフ
レームを変更するための演算処理を行う。具体的には、
メインプロセッサ100は、全てのスタックデータが保
持されたスタックメモリ270Bまたはデータメモリ5
00から処理に必要なデータを読み出し、新たなスタッ
クフレームを準備する。続いて、コプロセッサ200A
内のスタックポインタ260AのSP値(アドレス)お
よびプログラムカウンタ260BのPC値(アドレス)
を読み出して保存する。続いて、このスタックポインタ
260Aおよびプログラムカウンタ260Bに新たな値
(アドレス)を書き込む。そして、スタックメモリ27
0Bまたはデータメモリ500に演算結果を書き戻す。
続いて、コプロセッサ200Aの制御レジスタ210に
「操作開始」指示する制御データを設定し、コプロセッ
サ200Aに動作を再開させる。
【0098】ステップST108:動作を再開したコプ
ロセッサ200Aは、メインプロセッサ100の演算結
果が収納されたスタックメモリ270Bから、スタック
トップレジスタ270Aのデータ数分のデータを読み込
み、これをスタックトップレジスタ270Aに保持す
る。そして、この読み込みによるスタックメモリ270
Bのデータの減少分に応じて、スタックポインタ260
AのSP値を更新する。 ステップST109:この後、コプロセッサ200A
は、プログラムカウンタ260BのPC値を、「0」を
加算したものとして更新して、処理を上述のステップS
T103に戻し、次の命令を処理対象とする。
【0099】ステップST110:次に、上述のステッ
プST104において、スタックフレームを変更する命
令でない場合(ステップST104:NO)、コプロセ
ッサ200Aは、フェッチされた命令が、スタックを増
加させる命令か否かを判断する。つまり、スタックメモ
リにスタックされるデータが発生する場合には、スタッ
クメモリに空き領域を確保する必要が生じる。
【0100】このステップでの判断は、換言すれば、演
算に先だって、この空き領域を予め確保するか否かを判
断するものである。なお、スタックが減少する場合に
は、演算を実行する前に、スタックポインタを減少させ
ることは許されない。なぜなら、スタックポインタを減
少させることにより、演算に必要なデータが無効とされ
る場合が発生し得るからである。
【0101】ステップST111:ここで、スタックを
増加させる命令である場合(ステップST110:YE
S)、コプロセッサ200Aは、必要分のスタックトッ
プレジスタ270Aの内容をスタックメモリ270Bに
書き込み、スタックポインタ260Aの値を更新する。
また、スタックを増加させる命令でない場合(ステップ
ST110:NO)、このステップST111をパスす
る。
【0102】ステップST112:続いて、コプロセッ
サ200Aは、フェッチされた命令が単独で処理可能な
命令か否かを判断し、この判断結果に応じて、コプロセ
ッサ200Aのハードウェア上での処理、またはメイン
プロセッサ100のソフトウェア上での処理が行われ、
この命令に対する処理が適応的に行われる。このステッ
プST112での処理は、具体的には、上述の実施の形
態1にかかるステップST15〜18,ST20〜ST
26,ST30〜ST34(図5参照)による処理と同
様である。
【0103】 この実施の形態2では、メインプロセッ
サ100は、コプロセッサ200Aの命令キュー230
を直接的にアクセスできるので、メインプロセッサ10
0がコプロセッサから依頼された命令を処理する場合、
コプロセッサ200Aの命令キュー230を参照して、
処理すべき命令の種類を特定し、この命令に対応する割
り込みハンドラを特定することができる。これにより、
専用の割り込みベクタが割り付けられていない命令であ
っても、即座に命令の種類が特定される。
【0104】ステップST113:続いて、コプロセッ
サ200Aは、フェッチされた命令がスタックを減少さ
せる命令であるか否かを判断する。 ステップST115:ここで、スタックを減少させる命
令である場合(ステップSt113:YES)、コプロ
セッサ200Aは、必要分のスタックトップレジスタの
内容をスタックメモリから読み込み、スタックポインタ
260Aの値を更新する。また、スタックを減少させる
命令でない場合(ステップST113:NO)、このス
テップST114をパスする。この後、処理は上述のス
テップST109に移行し、プログラムカウンタ260
BのPC値が更新される。そして、上述のステップST
103に戻され、次の命令が処理の対象とされる。
【0105】以上のように、この実施の形態2によれ
ば、コプロセッサ200Aにおいて、命令デコーダによ
り解読された命令がスタックポインタを非連続的な領域
に変更する場合(例えば上述のスタックフレームを変更
するような場合)、メインプロセッサ100に通知する
前に、スタックトップレジスタ270Aの全てのスタッ
クデータをスタックメモリに書き出し、メインプロセッ
サ100での処理が終了して動作が復帰した後に、スタ
ックメモリ270Bからスタックトップレジスタ270
Aに先頭側のデータを読み出す。
【0106】これにより、メインプロセッサ100は、
割り込みハンドラ内にて、スタックデータを単一のメモ
リ空間上で取り扱うことができ、スタックトップレジス
タ270Aのデータを扱う場合の処理が簡略化される。
したがって、スタックトップレジスタ270Aを有する
アーキテクチャと親和性が高いJavaなどのプログラ
ム言語の命令を効率的に実行することが可能となる。
【0107】また、この実施の形態2によれば、コプロ
セッサ200Aは、スタックメモリ270Bを外部に持
つので、スタックメモリ270Bの記憶容量を大きくす
ることができる。可能であれば、このスタックメモリ2
70Bをコプロセッサ200Aの内部に持つようにして
もよい。
【0108】<実施の形態3>次に、この発明の実施の
形態3を説明する。図11に、この実施の形態3にかか
るマイクロプロセッサシステムの構成を示す。このマイ
クロプロセッサシステムは、上述の図7に示す実施の形
態2に係る構成において、スタックトップレジスタ27
0Aとスタックメモリ270Bとの間に、キャッシュメ
モリ270Cを有するコプロセッサ200Bを備える。
このキャッシュメモリ270Cは、スタックメモリ27
0Bに保持されたデータの一部をキャッシュするもので
ある。なお、この実施の形態3では、スタックメモリ2
70Bと外部バス600との間の接続は切り離されてい
る。
【0109】このように、キャッシュメモリ270Cを
備えることにより、見かけ上、外部のスタックメモリ2
70Bを高速にアクセスすることが可能となり、処理の
高速化が図れる。この場合、スタックメモリ270Bと
キャッシュメモリ270Cとの間のデータの整合を保つ
必要上、スタックメモリ270Bは、必ずキャッシュメ
モリ270Cを介してアクセスされる。このため、スタ
ックメモリ270Bは外部バス600からの直接アクセ
スが不能なように、この外部バス600との接続が切り
離されている。すなわち、メインプロセッサ100から
スタックメモリ270Bに格納されるべきデータにアク
セスするためには、外部バス600とコプロセッサ20
0の内部バス201とを経由し、さらにキャッシュメモ
リ270Cを通してアクセスしなければならない。
【0110】この実施の形態3によれば、キャッシュメ
モリ270Cを介してスタックメモリ270Bがアクセ
スされるので、スタックメモリ270Bを高速にアクセ
スすることができ、仮にスタックメモリ270Bが高速
にアクセスできないものであっても、見かけ上の処理を
高速化することができる。また、この実施の形態3によ
れば、コプロセッサ200Bは、スタックメモリ270
Bを外部に持つので、スタックメモリ270Bの記憶容
量を大きくすることができる。
【0111】さらに、この実施の形態3によれば、キャ
ッシュメモリ270C自体にキャッシュの対象となるデ
ータを管理する機能が付加されているので、外部に接続
されたスタックメモリ270Bの記憶容量を十分大きく
してオーバーフローに対する対策を講じる必要がない。
すなわち、実施の形態1では、ハードウェア手段または
ソフトウェア手段により、オーバーフローあるいはアン
ダーフローの検出を行っているが、この実施の形態3で
は、オーバーフロー検出手段、アンダーフロー検出手段
が不要であり、また、オーバーフローまたはアンダーフ
ローの検出に伴うメモリ入れ換え作業が不要となるの
で、チップサイズの縮小および制御用ソフトウェアのプ
ログラムコードサイズの縮小が実現可能となる。
【0112】<実施の形態4>次に、この発明の実施の
形態4を説明する。図12に、この実施の形態4にかか
るマイクロプロセッサシステムの構成を示す。同図に示
すように、このプロセッサシステムは、1つのメインプ
ロセッサ100に対して、複数のコプロセッサ200
X,200Y,200Zが設けられている。コプロセッ
サ200X,200Y,200Zは、前述の実施の形態
1にかかるスタックメモリ270に相当する専用のスタ
ックメモリ270XM,270YM,270ZMをそれ
ぞれ持つ。
【0113】これらコプロセッサ200X,200Y,
200Zは、外部バス600を介してメインプロセッサ
100に接続されると共に、外部バス600Bを介して
プログラムメモリ400に接続される。また、プログラ
ムメモリ400およびデータメモリ500は外部バス6
00を介してメインプロセッサ100に接続される。各
コプロセッサからの割り込み要求S290Hはメインプ
ロセッサ100に直接入力される。
【0114】この実施の形態4では、各コプロセッサの
スタックメモリ270XM,270YM,270ZMに
は、それぞれのコプロセッサに固有のローカルなデータ
(例えばローカル変数、ローカルな演算データ、ローカ
ルなワーキングデータ)が格納される。このローカルな
データとしては、例えばJava言語の場合、プログラ
ムに記述されたタスクの単位である「スレッド」に相当
するデータの集合が格納される。
【0115】この実施の形態4では、メインプロセッサ
100が処理すべき命令とコプロセッサ200X,20
0Y,200Zが処理すべき命令は、データメモリ50
0上に設けられたヒープ領域(オブジェクトが書き込ま
れる領域)を操作する必要があるか否かにより区別され
る。すなわち、ヒープ領域を操作する必要のある命令に
ついては、メインプロセッサ100で処理を行い、ヒー
プ領域を操作する必要のない命令については、コプロセ
ッサ200X,200Y,200Zで処理を行う。
【0116】また、メインプロセッサ100は、データ
メモリ500上のヒープ領域に作成されたオブジェクト
へのアクセスが複数のコプロセッサのスレッドで発生し
たときに、各スレッド間の排他制御を行う。具体的に
は、各コプロセッサは、固有のローカルデータが格納さ
れたスタックメモリ270XM,270YM,270Z
Mをアクセスして実行可能な命令のみを処理の対象とす
る。
【0117】また、メインプロセッサ100は、各コプ
ロセッサ間の調整を伴う命令を処理の対象とする。例え
ば、Java言語の「invokevirtual」命
令は、ヒープ領域中のオブジェクトに対し複数の処理が
記述されたプログラム中の特定の処理を選択的に実行す
る。このとき、実行の対象となるオブジェクトが他のス
レッドによって排他的に使用されている場合には、その
使用が終了するまでプログラムの実行を待たなければな
らない。メインプロセッサ100は、実行中のスレッド
の終了を待ち、次の要求のあったコプロセッサにアクセ
スして、プログラムカウンタに実行すべき処理が記述さ
れたアドレスを設定後、該当するコプロセッサの制御レ
ジスタを動作開始に設定する。
【0118】ただし、Java言語の「ガベージコレク
ション」すなわち、ヒープ領域上のオブジェクトを操作
して、不要となったデータを廃棄する処理については、
コプロセッサによる割り込みとは無関係に、メインプロ
セッサ100が実行する。なお、メインプロセッサ10
0は、「ガベージコレクション」の処理中に各コプロセ
ッサからの割り込みを受け付けないように、予めこの割
り込みをマスクすることにより、ガベージコレクション
に伴う格納場所の移動中のオブジェクトの書き換えを防
止する。
【0119】この実施の形態4によれば、複数のコプロ
セッサ200X,200Y,200Zにより、マルチタ
スクの処理が可能となり、Java言語などのようにマ
ルチスレッドの概念を有するプログラムを高速に実行す
ることが可能となる。また、各コプロセッサでの処理と
並行して、メインプロセッサ100がガベージコレクシ
ョンなどの処理を行うことができ、したがって全体の処
理時間を有効に短縮することができる。
【0120】さらに、メインプロセッサ100は、各コ
プロセッサからの割り込み処理をマスクすることによ
り、オブジェクト操作要求を容易に制御することがで
き、このため、ガベージコレクションを容易に且つリア
ルタイムに行うことができる。さらにまた、データメモ
リ500上のヒープ領域に作成されたオブジェクトへの
アクセスが複数のコプロセッサのスレッドで発生したと
きに、各スレッド間の排他制御をメインプロセッサ上で
一括処理するので、コプロセッサ側に排他制御のための
手段やプログラムを用意しなくてもよく、また、メイン
プロセッサ上の排他制御処理プログラムが簡略化でき
る。
【0121】以上、この発明の実施の形態1ないし4を
説明したが、この発明は、これらの実施の形態に限られ
るものではなく、この発明の要旨を逸脱しない範囲の設
計変更等があっても本発明に含まれる。例えば、上述の
各実施の形態では、コプロセッサ側からメインプロセッ
サ側に割り込みを発生させることにより、通知するもの
としたが、これに限定されることなく、たとえばコプロ
セッサ側に状態レジスタを設け、この状態レジスタに割
り込み要求を通知するためのデータを書き込んでおき、
この状態レジスタをメインプロセッサが定期的にアクセ
スすること(ポーリング)により、コプロセッサが処理
不能な特定の命令に遭遇したことをメインプロセッサ側
で把握するものとしてもよい。これにより、結果的に、
メインプロセッサ側に「通知」が行われ、メインプロセ
ッサでその処理が実行される。
【0122】なお、この発明は、見方を変えれば、コプ
ロセッサが遭遇した命令の内容に応じて、命令の処理形
態を選択するものとして把握することができる。例え
ば、コプロセッサが持つスタックデータのみで処理が可
能な命令についてはコプロセッサ自身で処理を行い、ま
たデータメモリ上のヒープ領域を操作する必要のある命
令についてはメインプロセッサで処理を行い、さらにス
タックフレームを変更する必要のある命令についてもメ
インプロセッサで処理を行うように、処理の主体を選択
する。
【0123】
【発明の効果】以上説明したように、この発明によれ
ば、プログラムに記述された命令を実行するマイクロプ
ロセッサシステムであって、第1の命令セットをハード
ウェア上で実行すると共に第2の命令セットをソフトウ
ェア上で実行するメインプロセッサと、前記メインプロ
セッサの管理下で動作して前記第2の命令セットをハー
ドウェア上で実行するコプロセッサとを備えたので、回
路規模の増大を抑えつつ、特定の命令セット(第2の命
令セット)を高速に実行することが可能となる。
【0124】また、前記コプロセッサが、前記第2の命
令セットのうち、前記メインプロセッサの管理下にある
データを操作する必要を生ずる特定の命令に遭遇した場
合、前記メインプロセッサに通知を発行して当該命令の
実行を依頼するようにしたので、メインプロセッサのソ
フトウエアが有効に活用されると共にコプロセッサのハ
ードウェアの規模を必要最小限に抑えることが可能とな
り、したがって全体としてハードウェアの規模を有効に
抑えることが可能となる。
【0125】さらに、前記コプロセッサが、前記第2の
命令セットのうち、実行頻度の高い所定の複数の命令に
対して予め割り付けられた専用割り込みベクタを用いて
前記通知を発行するようにしたので、メインプロセッサ
において、コプロセッサが遭遇した命令が即座に特定さ
れる。したがって、メインプロセッサ側において、コプ
ロセッサからの依頼により処理すべき命令を識別するた
めの処理を省くことが可能となる。
【0126】さらにまた、前記コプロセッサが、前記第
2の命令セットに属する命令を実行する過程で発生する
データを保持するためのスタックメモリと、該スタック
メモリ内の最新データのアドレスを保持するスタックポ
インタとを有し、前記特定の命令を実行する過程で発生
する処理のうち、前記スタックメモリのスタックポイン
タを更新するための処理を実行するハードウエア資源を
備えたので、メインプロセッサが依頼を受けてこの命令
を処理する過程において、スタックポインタを更新する
ための処理を省くことができる。したがって、メインプ
ロセッサのソフトウエア上での処理が簡略化されると共
に、コプロセッサのハードウェアが有効に活用され、メ
インプロセッサでのソフトウェアによる処理時間を短縮
することができる。
【0127】さらにまた、前記コプロセッサが、現在処
理中の前記第2の命令セットに属する命令のアドレスを
保持するためのプログラムカウンタを有し、前記特定の
命令を実行する過程で発生する処理のうち、前記プログ
ラムカウンタを更新するための処理を実行するハードウ
エア資源を備えたので、メインプロセッサに処理を依頼
する場合であっても、プログラムカウンタを更新するた
めの処理については、コプロセッサのハードウェア上で
行われ、メインプロセッサがプログラムカウンタを更新
するためのソフトウェア上の処理を省くことができる。
したがって、メインプロセッサのソフトウエア上の処理
が簡略化されると共に、コプロセッサのハードウェアが
有効に活用され、メインプロセッサでのソフトウェアに
よる処理時間を有効に短縮することができる。
【0128】さらにまた、前記コプロセッサが、前記通
知を行う必要が発生したことを表す情報を保持するため
の状態レジスタを有し、前記メインプロセッサが、前記
状態レジスタを定期的にアクセスして、該状態レジスタ
の内容から前記コプロセッサが前記特定の命令に遭遇し
たことを把握して、前記特定の命令を実行するようにし
たので、メインプロセッサにより、コプロセッサが特定
の命令に遭遇したか否かが定期的に把握され、メインプ
ロセッサに対して割り込みベクタを用いて割り込み処理
を行う必要がなくなる。したがって、コプロセッサから
メインプロセッサへの通知を簡略化することが可能とな
る。
【0129】さらにまた、前記メインプロセッサが、前
記コプロセッサからの前記専用割り込みベクタをエンコ
ードして、処理すべき前記特定の命令に対応する割り込
みハンドラを特定する割り込み要求受付回路を備えたの
で、メインプロセッサにおいて、コプロセッサから入力
する専用割り込みベクタに基づき直接的に割り込みハン
ドラが特定される。したがって、メインプロセッサ側で
起動すべき割り込みハンドラを特定するためのソフトウ
エア上の処理が不要となり、メインプロセッサでの処理
時間を短縮することが可能となる。
【0130】さらにまた、前記メインプロセッサが、前
記コプロセッサの命令キューを参照して、処理すべき前
記特定の命令に対応する割り込みハンドラを特定するよ
うにしたので、メインプロセッサにおいて、コプロセッ
サの命令キューを参照してコプロセッサが遭遇した命令
が把握され、直接的に処理ルーチンが特定される。した
がって、メインプロセッサ側で起動すべき割り込みハン
ドラを特定するためのソフトウエア上の処理が簡略化さ
れ、メインプロセッサでの処理時間を短縮することが可
能となる。
【0131】さらにまた、前記コプロセッサが、スタッ
クアーキテクチャを有するようにしたので、コプロセッ
サにおいて、サブルーチンの頻繁な使用を伴う命令や、
ゼロオペランドのアドレッシングを伴う命令の処理が効
率的に行われる。したがってJavaなどのスタックア
ーキテクチャに基づくインタプリタ言語の命令を効率的
に実行することが可能となる。
【0132】さらにまた、スタックアーキテクチャを採
用する前記コプロセッサが、スタックデータのうち、先
頭側の所定数のデータを保持するスタックトップレジス
タと、外部に設けられたスタックメモリと前記スタック
トップレジスタとの間に設けられ、前記スタックメモリ
に保持されたデータの一部をキャッシュするキャッシュ
メモリと、を含むようにしたので、スタックデータのう
ち、先頭側の所定数のデータをアクセスする頻度の高い
プログラム言語の命令を効率的に実行することができる
と共に、スタックメモリの容量を適応的に拡大すること
が可能となる。
【0133】さらにまた、プログラムに記述された複数
の処理内容に対応づけて、複数の前記コプロセッサを備
えたので、プログラム中の複数の処理を並列処理するこ
とが可能となり、処理を高速化することが可能となる。
【図面の簡単な説明】
【図1】 この発明の実施の形態1にかかるマイクロプ
ロセッサシステムの構成を示すブロック図である。
【図2】 この発明の実施の形態1にかかるスタックメ
モリの動作概念を説明するための説明図である。
【図3】 この発明の実施の形態1にかかる命令デコー
ダの詳細とその周辺の構成を示すブロック図である。
【図4】 この発明の実施の形態1にかかる割り込み要
求発生回路と割り込み要求受付回路の詳細な構成を示す
ブロック図である。
【図5】 この発明の実施の形態1にかかるマイクロプ
ロセッサシステムの動作(命令がコプロセッサで処理可
能な場合)の流れを示すフローチャートである。
【図6】 この発明の実施の形態1にかかるマイクロプ
ロセッサシステムの動作(命令がコプロセッサで処理不
能な場合)の流れを示すフローチャートである。
【図7】 この発明の実施の形態2にかかるマイクロプ
ロセッサシステムの構成を示すブロック図である。
【図8】 この発明の実施の形態2にかかるスタックト
ップレジスタの動作概念を説明するための説明図であ
る。
【図9】 この発明の実施の形態2にかかるマイクロプ
ロセッサシステムの動作の流れを示すフローチャートで
ある。
【図10】 この発明の実施の形態2にかかるスタック
トップレジスタの動作概念(スタックフレームを変更す
る場合)を説明するための説明図である。
【図11】 この発明の実施の形態3にかかるマイクロ
プロセッサシステムの構成を示すブロック図である。
【図12】 この発明の実施の形態4にかかるマイクロ
プロセッサシステムの構成を示すブロック図である。
【符号の説明】
100:メインプロセッサ 110:命令フェッチ回路 120:命令キュー 130:命令デコーダ 140:加算器 150:プログラムカウンタ 160:汎用レジスタ 170:算術論理ユニット 180:データアクセス回路 190:割り込み要求受付回路 191:フリップフロップ 192:割り込みハンドラアドレス発生回路 193:割り込みアドレスレジスタ 200:コプロセッサ 200X〜200Z:コプロセッサ 201:内部バス 210:制御レジスタ 220:命令フェッチ回路 221:整列回路 230:命令キュー 240:命令デコーダ 240A:デコーダ 240B:処理手順制御信号発生回路 240C:SP用増減値発生回路 240D:PC用増減値発生回路 250A:加減算器 250B:加算器 260A:スタックポインタ 260B:プログラムカウンタ 270:スタックメモリ 270A:スタックトップレジスタ 270B:スタックメモリ 270C:キャッシュメモリ 280:算術論理ユニット 290:割り込み要求発生回路 291:割り込み処理用デコーダ 292:フリップフロップ 300:プログラムメモリ(メインプロセッサ用) 400:プログラムメモリ(コプロセッサ用) 500:データメモリ 600,600B:外部バス ST10〜ST26,ST30〜ST34,ST101
〜ST114:ステップ

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 プログラムに記述された命令を実行する
    マイクロプロセッサシステムであって、 第1の命令セットをハードウェア上で実行すると共に第
    2の命令セットをソフトウェア上で実行するメインプロ
    セッサと、 前記メインプロセッサの管理下で動作して前記第2の命
    令セットを自発的にフェッチしてハードウェア上で実行
    するコプロセッサと、 を備えたことを特徴とするマイクロプロセッサシステ
    ム。
  2. 【請求項2】 前記コプロセッサは、 前記第2の命令セットのうち、前記メインプロセッサの
    管理下にあるデータを操作する必要を生ずる特定の命令
    に遭遇した場合、前記メインプロセッサに通知を発行し
    て当該命令の実行を依頼することを特徴とする請求項1
    に記載されたマイクロプロセッサシステム。
  3. 【請求項3】 前記コプロセッサは、 前記第2の命令セットのうち、実行頻度の高い所定の複
    数の命令に対して予め割り付けられた専用割り込みベク
    タを用いて前記通知を発行することを特徴とする請求項
    2に記載されたマイクロプロセッサシステム。
  4. 【請求項4】 前記コプロセッサは、 前記第2の命令セットに属する命令を実行する過程で発
    生するデータを保持するためのスタックメモリと、該ス
    タックメモリ内の最新データのアドレスを保持するスタ
    ックポインタとを有し、前記特定の命令を実行する過程
    で発生する処理のうち、前記スタックメモリのスタック
    ポインタを更新するための処理を実行するハードウエア
    資源を備えたことを特徴とする請求項2に記載されたマ
    イクロプロセッサシステム。
  5. 【請求項5】 前記コプロセッサは、 現在処理中の前記第2の命令セットに属する命令のアド
    レスを保持するためのプログラムカウンタを有し、前記
    特定の命令を実行する過程で発生する処理のうち、前記
    プログラムカウンタを更新するための処理を実行するハ
    ードウエア資源を備えたことを特徴とする請求項2に記
    載されたマイクロプロセッサシステム。
  6. 【請求項6】 前記コプロセッサは、 前記通知を行う必要が発生したことを表す情報を保持す
    るための状態レジスタを有し、 前記メインプロセッサは、 前記状態レジスタを定期的にアクセスして、該状態レジ
    スタの内容から前記コプロセッサが前記特定の命令に遭
    遇したことを把握して、前記特定の命令を実行すること
    を特徴とする請求項2に記載されたマイクロプロセッサ
    システム。
  7. 【請求項7】 前記メインプロセッサは、 前記コプロセッサからの前記専用割り込みベクタをエン
    コードして、処理すべき前記特定の命令に対応する割り
    込みハンドラを特定する割り込み要求受付回路を備えた
    ことを特徴とする請求項2に記載されたマイクロプロセ
    ッサシステム。
  8. 【請求項8】 前記メインプロセッサは、 前記コプロセッサの命令キューを参照して、処理すべき
    前記特定の命令に対応する割り込みハンドラを特定する
    ことを特徴とする請求項2に記載されたマイクロプロセ
    ッサシステム。
  9. 【請求項9】 前記コプロセッサは、 スタックアーキテクチャを有することを特徴とする請求
    項1ないし8の何れかに記載されたマイクロプロセッサ
    システム。
  10. 【請求項10】 前記コプロセッサは、 スタックデータのうち、先頭側の所定数のデータを保持
    するスタックトップレジスタと、 外部に設けられたスタックメモリと前記スタックトップ
    レジスタとの間に設けられ、前記スタックメモリに保持
    されたデータの一部をキャッシュするキャッシュメモリ
    と、 を含むことを特徴とする請求項9に記載されたマイクロ
    プロセッサシステム。
  11. 【請求項11】 プログラムに記述された複数の処理内
    容に対応づけて、複数の前記コプロセッサを備えたこと
    を特徴とする請求項1ないし10の何れかに記載された
    マイクロプロセッサシステム。
JP33196099A 1999-11-22 1999-11-22 マイクロプロセッサシステム Expired - Fee Related JP3621315B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP33196099A JP3621315B2 (ja) 1999-11-22 1999-11-22 マイクロプロセッサシステム
US09/716,378 US7200741B1 (en) 1999-11-22 2000-11-21 Microprocessor having main processor and co-processor
EP00125496A EP1102164A3 (en) 1999-11-22 2000-11-21 Microprocessor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP33196099A JP3621315B2 (ja) 1999-11-22 1999-11-22 マイクロプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2001147902A true JP2001147902A (ja) 2001-05-29
JP3621315B2 JP3621315B2 (ja) 2005-02-16

Family

ID=18249578

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33196099A Expired - Fee Related JP3621315B2 (ja) 1999-11-22 1999-11-22 マイクロプロセッサシステム

Country Status (3)

Country Link
US (1) US7200741B1 (ja)
EP (1) EP1102164A3 (ja)
JP (1) JP3621315B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003085153A (ja) * 2001-09-13 2003-03-20 Mitsubishi Electric Corp 制御レジスタ及びプロセッサ
JP2008507020A (ja) * 2004-07-15 2008-03-06 イマジネイション テクノロジーズ リミテッド マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御
JP2008077625A (ja) * 2006-09-18 2008-04-03 Samsung Electronics Co Ltd ユーザ定義の拡張演算を処理する演算システムおよび方法
JP2008135940A (ja) * 2006-11-28 2008-06-12 Toshiba Corp 携帯端末
JP2011146077A (ja) * 2005-12-29 2011-07-28 Intel Corp 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信
JP2011197774A (ja) * 2010-03-17 2011-10-06 Renesas Electronics Corp プロセッサシステム
WO2012035699A1 (ja) * 2010-09-15 2012-03-22 日本電気株式会社 情報処理装置、情報処理方法、設計支援システム、及びプログラムが格納された非一時的なコンピュータ可読媒体

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5090591B2 (ja) 2000-04-12 2012-12-05 ソニー株式会社 電子装置の制御方法,電子装置及び電子装置の機能の認識方法
GB2367652B (en) * 2000-10-05 2004-08-11 Advanced Risc Mach Ltd Scheduling control within a system having mixed hardware and software based instruction execution
JP3561506B2 (ja) * 2001-05-10 2004-09-02 東京エレクトロンデバイス株式会社 演算システム
EP1387259B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Inter-processor control
US7752427B2 (en) * 2005-12-09 2010-07-06 Atmel Corporation Stack underflow debug with sticky base
EP1840734A1 (en) * 2006-03-24 2007-10-03 Telefonaktiebolaget LM Ericsson (publ) Processor with address generator
US7797514B2 (en) * 2006-11-16 2010-09-14 Texas Instruments Incorporated Scalable multi-threaded sequencing/synchronizing processor architecture
US8006068B1 (en) * 2007-04-18 2011-08-23 Xilinx, Inc. Processor access to data cache with fixed or low variable latency via instructions to an auxiliary processing unit
US7809970B2 (en) * 2007-08-27 2010-10-05 International Business Machines Corporation System and method for providing a high-speed message passing interface for barrier operations in a multi-tiered full-graph interconnect architecture
US8185896B2 (en) 2007-08-27 2012-05-22 International Business Machines Corporation Method for data processing using a multi-tiered full-graph interconnect architecture
US8108545B2 (en) 2007-08-27 2012-01-31 International Business Machines Corporation Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture
US7958182B2 (en) 2007-08-27 2011-06-07 International Business Machines Corporation Providing full hardware support of collective operations in a multi-tiered full-graph interconnect architecture
US7769892B2 (en) 2007-08-27 2010-08-03 International Business Machines Corporation System and method for handling indirect routing of information between supernodes of a multi-tiered full-graph interconnect architecture
US7840703B2 (en) * 2007-08-27 2010-11-23 International Business Machines Corporation System and method for dynamically supporting indirect routing within a multi-tiered full-graph interconnect architecture
US8014387B2 (en) * 2007-08-27 2011-09-06 International Business Machines Corporation Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture
US7822889B2 (en) * 2007-08-27 2010-10-26 International Business Machines Corporation Direct/indirect transmission of information using a multi-tiered full-graph interconnect architecture
US7904590B2 (en) 2007-08-27 2011-03-08 International Business Machines Corporation Routing information through a data processing system implementing a multi-tiered full-graph interconnect architecture
US8140731B2 (en) 2007-08-27 2012-03-20 International Business Machines Corporation System for data processing using a multi-tiered full-graph interconnect architecture
US7958183B2 (en) 2007-08-27 2011-06-07 International Business Machines Corporation Performing collective operations using software setup and partial software execution at leaf nodes in a multi-tiered full-graph interconnect architecture
US7769891B2 (en) * 2007-08-27 2010-08-03 International Business Machines Corporation System and method for providing multiple redundant direct routes between supernodes of a multi-tiered full-graph interconnect architecture
US7793158B2 (en) * 2007-08-27 2010-09-07 International Business Machines Corporation Providing reliability of communication between supernodes of a multi-tiered full-graph interconnect architecture
US7827428B2 (en) 2007-08-31 2010-11-02 International Business Machines Corporation System for providing a cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US7921316B2 (en) 2007-09-11 2011-04-05 International Business Machines Corporation Cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US8359462B1 (en) 2007-11-21 2013-01-22 Marvell International Ltd. Method and apparatus for programmable coupling between CPU and co-processor
US8077602B2 (en) * 2008-02-01 2011-12-13 International Business Machines Corporation Performing dynamic request routing based on broadcast queue depths
US20090198956A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B System and Method for Data Processing Using a Low-Cost Two-Tier Full-Graph Interconnect Architecture
US7779148B2 (en) 2008-02-01 2010-08-17 International Business Machines Corporation Dynamic routing based on information of not responded active source requests quantity received in broadcast heartbeat signal and stored in local data structure for other processor chips
GB0816319D0 (en) * 2008-09-05 2008-10-15 Palmer Charles G Network communication
US8417778B2 (en) * 2009-12-17 2013-04-09 International Business Machines Corporation Collective acceleration unit tree flow control and retransmit
US8407444B2 (en) * 2009-12-23 2013-03-26 International Business Machines Corporation Hardware off-load garbage collection acceleration for languages with finalizers
US8943108B2 (en) * 2009-12-23 2015-01-27 International Business Machines Corporation Hardware off-load memory garbage collection acceleration
US8751655B2 (en) * 2010-03-29 2014-06-10 International Business Machines Corporation Collective acceleration unit tree structure
US8677050B2 (en) * 2010-11-12 2014-03-18 International Business Machines Corporation System, method and computer program product for extending a cache using processor registers
US9494926B2 (en) 2011-10-05 2016-11-15 Opteon Corporation Methods and apparatus employing an action engine for monitoring and/or controlling dynamic environments
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9542193B2 (en) 2012-12-28 2017-01-10 Intel Corporation Memory address collision detection of ordered parallel threads with bloom filters
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9817670B2 (en) 2013-12-13 2017-11-14 International Business Machines Corporation Framework to provide time bound execution of co-processor commands
US10838893B2 (en) * 2014-05-30 2020-11-17 Apple Inc. Methods for mitigating system interrupts for an electronic device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2546202A1 (de) * 1975-10-15 1977-04-28 Siemens Ag Rechnersystem aus mehreren miteinander verbundenen und zusammenwirkenden einzelrechnern und verfahren zum betrieb des rechnersystems
US4870614A (en) 1984-08-02 1989-09-26 Quatse Jesse T Programmable controller ("PC") with co-processing architecture
DE3538214C2 (de) * 1984-10-30 1994-06-16 Mitsubishi Electric Corp Multiprozessorsystem
US4695945A (en) * 1985-02-28 1987-09-22 International Business Machines Corporation Processor I/O and interrupt filters allowing a co-processor to run software unknown to the main processor
US4860200A (en) * 1985-07-03 1989-08-22 Tektronix, Inc. Microprocessor interface device for coupling non-compatible protocol peripheral with processor
JPH0687221B2 (ja) 1986-04-02 1994-11-02 日本電気株式会社 情報処理装置
US5109514A (en) * 1988-07-28 1992-04-28 Sun Microsystems, Inc. Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions
JPH02311948A (ja) 1989-05-26 1990-12-27 Nec Corp コプロセッサの誤り修正方式
US5768613A (en) * 1990-07-06 1998-06-16 Advanced Micro Devices, Inc. Computing apparatus configured for partitioned processing
JP2908096B2 (ja) 1992-01-22 1999-06-21 富士通株式会社 コプロセッサ制御方式
JP3451595B2 (ja) 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5727227A (en) * 1995-11-20 1998-03-10 Advanced Micro Devices Interrupt coprocessor configured to process interrupts in a computer system
US5715439A (en) * 1996-12-09 1998-02-03 Allen-Bradley Company, Inc. Bi-directional co-processor interface
US6021273A (en) 1997-06-30 2000-02-01 Sun Microsystems, Inc. Interpreter generation and implementation utilizing interpreter states and register caching
US5923892A (en) * 1997-10-27 1999-07-13 Levy; Paul S. Host processor and coprocessor arrangement for processing platform-independent code

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4717291B2 (ja) * 2001-09-13 2011-07-06 ルネサスエレクトロニクス株式会社 制御レジスタ及びプロセッサ
JP2003085153A (ja) * 2001-09-13 2003-03-20 Mitsubishi Electric Corp 制御レジスタ及びプロセッサ
JP2008507020A (ja) * 2004-07-15 2008-03-06 イマジネイション テクノロジーズ リミテッド マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御
JP2014059920A (ja) * 2005-12-29 2014-04-03 Intel Corp 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信
JP2011146077A (ja) * 2005-12-29 2011-07-28 Intel Corp 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信
US9588771B2 (en) 2005-12-29 2017-03-07 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US9459874B2 (en) 2005-12-29 2016-10-04 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
JP2008077625A (ja) * 2006-09-18 2008-04-03 Samsung Electronics Co Ltd ユーザ定義の拡張演算を処理する演算システムおよび方法
JP2008135940A (ja) * 2006-11-28 2008-06-12 Toshiba Corp 携帯端末
US8295875B2 (en) 2006-11-28 2012-10-23 Fujitsu Toshiba Mobile Communications Limited Apparatus and method for mobile communication by using non-volatile memory device
JP2011197774A (ja) * 2010-03-17 2011-10-06 Renesas Electronics Corp プロセッサシステム
JPWO2012035699A1 (ja) * 2010-09-15 2014-01-20 日本電気株式会社 情報処理装置、情報処理方法、設計支援システム、及びプログラム
WO2012035699A1 (ja) * 2010-09-15 2012-03-22 日本電気株式会社 情報処理装置、情報処理方法、設計支援システム、及びプログラムが格納された非一時的なコンピュータ可読媒体

Also Published As

Publication number Publication date
EP1102164A3 (en) 2002-09-04
JP3621315B2 (ja) 2005-02-16
EP1102164A2 (en) 2001-05-23
US7200741B1 (en) 2007-04-03

Similar Documents

Publication Publication Date Title
JP3621315B2 (ja) マイクロプロセッサシステム
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
JP3875738B2 (ja) ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置
JP4837305B2 (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
US7650602B2 (en) Parallel processing computer
US8850168B2 (en) Processor apparatus and multithread processor apparatus
JP3548616B2 (ja) 情報処理装置
KR100243100B1 (ko) 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
US5796971A (en) Method for generating prefetch instruction with a field specifying type of information and location for it such as an instruction cache or data cache
EP0752645B1 (en) Tunable software control of Harvard architecture cache memories using prefetch instructions
KR100407013B1 (ko) 1차 및 2차 송출큐를 갖는 마이크로프로세서
JP2677202B2 (ja) マイクロプロセッサ
KR20170076564A (ko) 레지스터 리네이밍을 사용한 무브 명령어 처리
EP0751458A1 (en) Method and system for tracking resource allocation within a processor
KR100404672B1 (ko) 슈퍼스칼라프로세서의로드버퍼와저장버퍼우선순위동적전환방법및장치
JPH0242569A (ja) ベクター処理システムに用いる文脈スイッチング方法及び装置
JP3683808B2 (ja) 命令履歴情報を持つ基本キャッシュ・ブロック・マイクロプロセッサ
JPS62221036A (ja) 計算装置
JPH0782438B2 (ja) コンピュータ・システム
KR20060002031A (ko) 명령들을 스케줄링 및 실행하는 방법
JP2008107983A (ja) キャッシュメモリ
KR20020088063A (ko) 정보 처리 시스템에서 병렬 처리되는 작업들간의 데이터종속성의 대략적인 결정
JP4130465B2 (ja) メモリ転送処理サイズが異なるプロセッサに関してアトミックな処理を実行するための技術
US6256725B1 (en) Shared datapath processor utilizing stack-based and register-based storage spaces
JP3880942B2 (ja) プロセッサ、計算機及び優先度決定方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040120

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20040219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040322

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040331

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041117

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20071126

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081126

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081126

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091126

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091126

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101126

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101126

Year of fee payment: 6

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20101126

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20111126

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111126

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121126

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121126

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees