JP3670801B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP3670801B2
JP3670801B2 JP15904997A JP15904997A JP3670801B2 JP 3670801 B2 JP3670801 B2 JP 3670801B2 JP 15904997 A JP15904997 A JP 15904997A JP 15904997 A JP15904997 A JP 15904997A JP 3670801 B2 JP3670801 B2 JP 3670801B2
Authority
JP
Japan
Prior art keywords
constant
register
instruction
stored
division
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.)
Expired - Lifetime
Application number
JP15904997A
Other languages
English (en)
Other versions
JPH117388A (ja
Inventor
秀一 高山
信生 桧垣
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP15904997A priority Critical patent/JP3670801B2/ja
Priority to US09/097,214 priority patent/US6219779B1/en
Priority to TW087109488A priority patent/TW393623B/zh
Priority to IL12490598A priority patent/IL124905A/en
Priority to EP98304702A priority patent/EP0897147A3/en
Priority to MYPI98002691A priority patent/MY126508A/en
Priority to SG1998001440A priority patent/SG66480A1/en
Priority to CNB981172768A priority patent/CN1269052C/zh
Priority to KR1019980022513A priority patent/KR100618247B1/ko
Publication of JPH117388A publication Critical patent/JPH117388A/ja
Application granted granted Critical
Publication of JP3670801B2 publication Critical patent/JP3670801B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサに関し、特に、命令中に生じる無駄領域や未使用領域を有効化させる技術に関する。
【0002】
【従来の技術】
近年のマイクロプロセッサ応用製品の高機能化及び高速化に伴い、コード効率の高いプログラムを実行することができるマイクロプロセッサ(以下、単に「プロセッサ」という。)が望まれている。つまり、プログラムを構成する各命令中には無駄なコードや未使用の領域が含まれないことが望ましい。
【0003】
ところが、特に、VLIW(Very Long Instruction Word)の如く固定長命令の場合には、命令中にノーオペレーションコード(nopコード)等の無駄なコードを置く必要が生じる。VLIWは複数のオペレーションフィールドからなり、各オペレーションフィールドにおいてプロセッサが備える複数の演算ユニットに対応したオペレーションが指定されるが、オペレーションの依存関係等により、常に並列実行可能な複数のオペレーションが存在するとは限らないからである。
【0004】
このようなnopコードの挿入に伴うコード効率の低下を回避する従来の技術として、例えば、特開平8−161169に開示されたVLIW方式の計算機システムがある。
図24は、上記従来技術における命令フォーマットを示す図である。
この従来技術では、例えば、オペレーションフィールド#2にnopコードを配置する必要がある場合に、そのオペレーションフィールド#2にはnopコードに代えて他の命令で用いられる定数を配置しておき、オペレーションフィールド#1の一部の箇所にその旨を示す命令有効化情報を配置する。そして、プロセッサは、その命令の実行時に、命令有効化情報を参照することによってオペレーションフィールド#2には定数だけが置かれていると解読し、それをオペランドとして演算に用いる。このようにして、命令中にnopコードを挿入することによる無駄領域の発生を回避している。
【0005】
【発明が解決しようとする課題】
しかしながら、上記従来技術では、無駄領域を埋めることができる定数の大きさが制限されるという問題がある。
例えば、32ビット長の1個のオペレーションフィールドにのみnopコードを置く必要がある場合に64ビットからなる数値定数を置くことはできない。また、例えば、32ビットの固定長命令中の8ビットのみが未使用領域である場合には、その8ビットを埋めることができる定数は8ビット以下で表現される定数に限定され、例えば32ビットで表現される絶対番地で埋めることはできない。
【0006】
つまり、上記従来技術は、比較的大きい桁数の無駄領域が生じる場合には効果を奏するものの、命令の桁数が例えば32ビットの如く小さい場合には、そこに生じる無駄領域も小さいために、多くの無駄領域が定数で埋められずにそのまま残ってしまうという問題がある。
そこで、本発明はかかる問題点に鑑みてなされたものであり、命令中の無駄領域を埋めるための定数の大きさがその命令の桁数によって制限されることがないプロセッサを提供することを目的とする。これによって、たとえ命令中の小さな桁数の領域であっても無駄領域として残ってしまうことが回避され、コード効率の高いプログラムの作成が支援されることをめざす。
【0007】
【課題を解決するための手段】
上記目的を達成するために本発明は、命令を解読し実行するプロセッサであって、定数を格納するための定数レジスタと、前記命令中に前記定数レジスタへ格納すべき定数が置かれていることを解読する解読手段と、前記解読手段により前記定数が置かれていると解読された場合には、前記定数レジスタに定数が格納されていないと判断すると前記定数を所定位置に格納し、前記定数レジスタに定数が既に格納されていると判断すると前記定数レジスタに既に格納されている定数を残したまま新たな定数を前記定数レジスタに格納する格納手段と、前記定数レジスタに格納されている全ての定数を読み出し、その定数をオペランドとするオペレーションを実行する実行手段とを備えることを特徴とする。
【0008】
これによって、複数の命令に跨って分割配置されていた定数の断片が定数レジスタに格納されて蓄積され、元の1個の定数に復元される。従って、命令中に小さな桁数の無駄領域が生じる場合であっても、その無駄領域を桁数の大きい定数の一部で埋めておくことが可能となり、コード効率の高いプログラムの作成が支援される。
【0009】
【発明の実施の形態】
以下、本発明に係るプロセッサの実施の形態について、図面を用いて詳細に説明する。なお、本明細書では、「命令」とは本プロセッサが同時並列に解読し実行するコード全体を意味し、「オペレーション」とは本プロセッサが並列に実行できる数値演算、論理演算、転送、分岐等の処理単位又はその処理単位を指定するためのコードを意味する。
(命令フォーマット)
まず、本プロセッサが解読実行する命令の構造について説明する。
【0010】
本プロセッサは、VLIWアーキテクチャを採るプロセッサ(以下、「VLIWプロセッサ」という。)であり、32ビット固定長の命令を解読実行する。
図1(a)は、本プロセッサが実行する命令50のフィールド構成を示す図である。
図1(b)〜図1(d)は16種類の命令フォーマットを示す図であり、そのうち、図1(b)は3オペレーション、図1(c)は2オペレーション、図1(d)は1オペレーションを同時に指定できる命令フォーマットである。
【0011】
この命令50は、32ビット固定長であり、4ビットずつに区切られた8個のフィールド(上位よりP0.0フィールド51、P1.0フィールド52、…、P3.2フィールド58)からなる。なお、P2.0フィールド53〜P2.2フィールド55のグループをまとめて第1演算フィールド59と呼び、P3.0フィールド56〜P3.2フィールド58のグループをまとめて第2演算フィールド60と呼ぶ。
【0012】
図1(b)〜図1(d)において、“const”は定数であり、これが用いられるオペレーションの種類によっては即値、絶対番地、ディスプレースメント等の数値定数や文字定数を意味する。“op”はオペレーションの種類を指定するオペコードを、“Rs”はソースオペランドとなるレジスタを、“Rd”はデスティネーションオペランドとなるレジスタを、“cc”は本プロセッサが備える専用の32ビットレジスタ(図3に示される定数レジスタ36)の格納値を分岐先の絶対番地又は相対番地(ディスプレースメント)とする分岐オペレーションを指定するオペコードを意味する。
【0013】
また、これらコードの直後に添付された数値は、第1演算フィールド59及び第2演算フィールド60のいずれのオペレーションのために用いられるものであるかを示す。例えば、フォーマットコードが“6”である命令フォーマットの場合であれば、P1.0フィールド52に置かれた4ビットの定数“const1”とP2.1フィールド54に置かれた4ビットの定数“const1”とは結合され、8ビットの定数として第1演算フィールド59のオペコード“op1”に対応するソースオペランドになることを意味する。
【0014】
また、数値を伴わない定数“const”は、本プロセッサが備える専用の32ビットレジスタ(図3に示される定数レジスタ36)に格納される定数を示す。例えば、フォーマットコードが“0”である命令フォーマットにおけるP1.0フィールド52に置かれた4ビットの定数“const”は、暗黙的に指定された定数レジスタ36に格納される定数である。
【0015】
図2は、図1で用いられている3種類のオペコード“cc”、“op1”及び“op2”それぞれによって指定される具体的なオペレーションを説明する図である。
4ビットのオペコード“cc”は、16種類の分岐オペレーションの中の一つを指定する。1つの分岐オペレーションは、分岐条件と分岐形式によって特定される。分岐条件には、等しい(“eq”)、等しくない(“neq”)、より大きい(“gt”)等がある。分岐形式には、上記定数レジスタ36の格納値を分岐先の絶対番地として分岐する形式(ニーモニック表示において“i”が添付されていないもの)と相対番地として分岐する形式(ニーモニック表示において“i”が添付されているもの)とがある。例えば、オペコード“eq”は、直前の比較結果が等しい場合に絶対番地指定による分岐を行なうオペレーションを意味し、オペコード“eqi”は、直前の比較結果が等しい場合に相対番地指定による分岐を行なうオペレーションを意味する。
【0016】
4ビットのオペコード“op1”は、“add”(加算)、“sub”(減算)、“mul”(乗算)、“and”(論理積)、“or”(論理和)等の算術論理演算に属するオペレーションの一つを指定する場合と、“mov”(ワード(32ビット)データの転送)、“movh”(ハーフワードデータの転送)、“movb”(バイトデータの転送)等のレジスタ・レジスタ間転送に属するオペレーションの一つを指定する場合とがある。
【0017】
4ビットのオペコード“op2”は、上記オペコード“op1”と同様の算術論理演算及びレジスタ・レジスタ間転送に加えて、“ld”(メモリからレジスタへの1ワードデータのロード)、“st”(レジスタからメモリへのワードデータのストア)等のレジスタ・メモリ間転送に属するオペレーションの一つを指定する場合がある。
【0018】
次に、図1(a)に示された各フィールド51、52、59、60の特徴を説明する。
P0.0フィールド51は、この命令50のフォーマットを特定する4ビットのフォーマットコードを置くためのフィールドであり、具体的には、図1(b)〜図1(d)に示された16種類の命令フォーマットの一つを特定する。
【0019】
P1.0フィールド52は、定数又は分岐用のオペコードを置くためのフィールドである。
このP1.0フィールド52に定数が置かれた場合(フォーマットコード=0、1、4〜9の場合)には、その定数は、定数レジスタ36に格納する対象となる場合(フォーマットコード=0、1、4、5の場合)と、第1演算フィールド59又は第2演算フィールド60のオペランドの一部を構成する場合(フォーマットコード=5、7、8、9、Bの場合)とがある。さらに、定数レジスタ36に格納する対象となる場合には、その4ビットの定数のみが格納される場合(フォーマットコード=0、1の場合)と、第1演算フィールド59又は第2演算フィールド60に置かれた12ビットの定数と共に格納される場合(フォーマットコード=4、5の場合)とがある。
【0020】
一方、このP1.0フィールド52に分岐用のオペコード“cc”が置かれた場合(フォーマットコード=2、3、Aの場合)には、定数レジスタ36に格納された定数を分岐先の絶対番地として、又は、相対番地(ディスプレースメント)として分岐することを意味する。
第1演算フィールド59は、本プロセッサと外部(メモリ)とのデータの転送を伴わないオペレーション(算術論理演算、レジスタ間転送)を指定するためのオペコードとオペランド(ソース及びデスティネーション)との組又は定数が置かれる。
【0021】
第2演算フィールド60は、上記第1演算フィールド59の場合に加えて、本プロセッサと外部(メモリ)とのデータの転送を伴うペレーション(レジスタ・メモリ間転送)を指定するためのオペコードとオペランドとの組が置かれることもある。
なお、以上のようなオペレーションの種類の各フィールドへの割当ては、ノイマン型の本プロセッサにおいては2つ以上の分岐オペレーションを同時に実行する必要がないこと、本プロセッサと外部(メモリ)とのオペランドの入出力ポート(図3におけるオペランドアクセス部40)を1つに限定していること等に基づく。
【0022】
ここで、図1(b)〜図1(d)に示された命令フォーマットには以下の特徴がある。
第1に、定数“const”に着目して判るように、定数レジスタ36に定数を格納させる命令フォーマットは次の3通りである。
(1)フォーマットコードが“0”又は“1”の場合:
この命令では、P1.0フィールド52に置かれた4ビットの定数が定数レジスタ36に格納される。
(2)フォーマットコードが“4”の場合:
この命令では、P1.0フィールド52〜P2.2フィールド55に置かれた16ビットの定数が定数レジスタ36に格納される。
(3)フォーマットコードが“5”の場合:
この命令では、P1.0フィールド52とP3.0フィールド56〜P3.2フィールド58に置かれた16ビットの定数が定数レジスタ36に格納される。
【0023】
第2に、本プロセッサでは、1個の命令に最大3つのオペレーションを指定することができるが、その場合には、図1(b)に示された3オペレーション用の命令フォーマットから判るように、それら3つのオペレーションの種類は次のいずれかの組み合わせになる。
(1)4ビットの定数を定数レジスタ36にセットするオペレーションと2個の汎用オペレーション(フォーマットコードが“0”、“1”の場合)
(2)定数レジスタ36にセットされた値を絶対番地又は相対番地として分岐するオペレーションと2個の汎用オペレーション(フォーマットコードが“2”、“3”の場合)
このように、本プロセッサの命令は、わずか32ビット長でありながら最大3つのオペレーションを同時に指定することができるコード効率の高いフィールド構成を有している。
(プロセッサのハードウェア構成)
次に、本プロセッサのハードウェア構成を説明する。
【0024】
図3は、本発明に係るプロセッサのハードウェア構成を示すブロック図である。
本プロセッサは、上述したように、最大3つのオペレーションを並列実行するVLIWプロセッサであり、大きく分けて、命令レジスタ10、解読部20及び実行部30から構成される。
【0025】
命令レジスタ10は、命令フェッチ部39から送られてきた1個の命令を保持する32ビットのレジスタである。
解読部20は、命令レジスタ10に保持された命令を解読し、その解読結果に応じた制御線を実行部30に出力するものであり、大きく分けて、フォーマットデコーダ21と命令デコーダ22とからなる。
【0026】
命令デコーダ22はさらに、P1.0フィールド12に保持されたオペコード“cc”を解読しその結果に基づいてPC部33を制御する分岐デコーダ23と、P2.0フィールド13に保持されたオペコードを解読しその結果に基づいて第1演算部37を制御する第1演算デコーダ24と、P3.0フィールド16に保持されたオペコードを解読しその結果に基づいて第2演算部38及びオペランドアクセス部40を制御する第2演算デコーダ25とからなる。
【0027】
フォーマットデコーダ21は、P0.0フィールド11に保持された4ビットのフォーマットコードをデコードすることによって命令レジスタ10に保持された命令のフォーマットが図1(b)〜図1(d)に示された16種類のうちのいずれであるかを特定し、その結果に応じて分岐デコーダ23、第1演算デコーダ24及び第2演算デコーダ25による解読動作を許可又は禁止したり、実行部30の定数レジスタ制御部32を動作させたりする。
【0028】
なお、上記デコーダ21、23〜25は、基本的には1サイクルに1つのオペレーションを解読し、実行部30に制御信号を与える。また、命令レジスタ10と実行部30を接続する26ビットの定数信号線26は、命令レジスタ10に置かれた定数やオペランドを実行部30に転送するためのバスである。
実行部30は、解読部20での解読結果に基づいて、最大3つのオペレーションを並列実行する回路ユニットであり、実行制御部31、PC部33、レジスタ群34、第1演算部37、第2演算部38、命令フェッチ部39及びオペランドアクセス部40からなる。なお、この実行部30のうち定数レジスタ制御部32、PC部33及び定数レジスタ36については、別の図面においてさらに詳細な構成を示している。
【0029】
実行制御部31は、解読部20での実行結果に基づいて実行部30の各構成要素33〜40を制御する制御回路や配線の総称であり、通常のプロセッサが備える構成要素(タイミング制御、動作許可禁止制御、ステータス管理、割り込み制御等の回路)の他に本プロセッサに特有の定数レジスタ制御部32を有する。定数レジスタ制御部32は、フォーマットデコーダ21からの指示に基づいて命令レジスタ10に保持された4ビット又は16ビットの定数(const)を定数レジスタ36に格納する制御を行なう。
【0030】
PC(プログラムカウンタ)部33は、分岐デコーダ23による制御の下で、次に解読実行すべき命令が置かれている図示されていない外部メモリ上のアドレスを命令フェッチ部39に出力する。
命令フェッチ部39は、32ビットのIA(インストラクションアドレス)バス及び32ビットのID(インストラクションデータ)バスを通じて図示されていない外部メモリから命令ブロックをフェッチし、内部の命令キャッシュに保持すると共に、PC部33から出力されたアドレスに相当する命令を命令レジスタ10に供給する。
【0031】
レジスタ群34は、15個の32ビット汎用レジスタ35と1個の32ビット定数レジスタ36から構成される。これら16個のレジスタ35、36に格納された値は、第1演算デコーダ24及び第2演算デコーダ25での解読結果に基づいて、第1演算部37及び第2演算部38に転送され、ここで演算が施され、又は、ここを単に通過した後に、レジスタ群34又はオペランドアクセス部40に送られる。なお、定数レジスタ36に格納された値は、第1演算部37及び第2演算部38での演算に用いられる他に、PC部33にも転送され、ここで分岐先となる有効アドレスを生成するために用いられる。
【0032】
第1演算部37は、2個の32ビットデータに対して算術論理演算を行なうALUと乗算を行う乗算器とを内部に有し、第1演算デコーダ24による制御の下で2種類のオペレーション(算術論理演算とレジスタ間転送)を実行する。
第2演算部38も、第1演算部37と同様に、2個の32ビットデータに対して算術論理演算を行なうALUと乗算を行う乗算器とを内部に有し、第2演算デコーダ25による制御の下で2種類のオペレーション(算術論理演算とレジスタ間転送)を実行する。
【0033】
オペランドアクセス部40は、第2演算デコーダによる制御の下でレジスタ群34と図示されていない外部メモリとの間でオペランドの転送を行なう回路であり、そのオペランドやオペランドアドレスを保持するバッファを内部に有する。具体的には、例えば、命令レジスタ10のP3.1フィールド16にオペコード“ld”が置かれていた場合には、外部メモリに置かれていた1ワードのデータがオペランドアクセス部40を経てレジスタ群34のいずれかのレジスタにロードされ、また、オペコード“st”が置かれていた場合には、レジスタ群34のいずれかのレジスタの格納値が外部メモリにストアされる。
【0034】
上記PC部33、レジスタ群34、第1演算部37、第2演算部38及びオペランドアクセス部40は、図示されるように、内部バス(L1バス、R1バス、L2バス、R2バス、D1バス、D2バス)で接続されている。なお、L1バス及びR1バスはそれぞれ第1演算部37の2つの入力ポートに、L2バス及びR2バスはそれぞれ第2演算部38の2つの入力ポートに、D1バス及びD2バスはそれぞれ第1演算部37及び第2演算部38の出力ポートに接続されている。(定数レジスタ36及びその周辺回路の詳細な構成)
次に、定数レジスタ36及びその周辺回路について詳細に説明する。
【0035】
図4は、定数レジスタ36及びその周辺回路の詳細な構成と接続関係を示すブロック図である。なお、図中の固定値(“0”)27は、定数“0”を示す4本の信号線の固定的な配線を意味する。
定数レジスタ制御部32は、5個の3入力セレクタ32a〜32eと3個の4入力セレクタ32f〜32hとからなり、定数レジスタ36は、8個の4ビット幅レジスタ36a〜36hからなる。なお、各入出力データは並列4ビットである。
【0036】
定数レジスタ制御部32は、フォーマットデコーダ21及び命令デコーダ22からの制御信号に従って上記8個の入力セレクタ32a〜32hを制御することで、以下に示す4通りの格納方法のいずれかの方法により、命令レジスタ10に保持された定数又はゼロを定数レジスタ36に格納させる。
図5(a)〜図5(d)は、その4通りの格納方法を説明する図である。
【0037】
図5(a)は、フォーマットデコーダ21によってP0.0フィールド11に保持された値が“0”又は“1”であると解読された場合の格納方法を示す。これは、P1.0フィールド12に置かれた4ビットの定数のみを定数レジスタ36に格納する場合に相当する。
具体的には、定数レジスタ36に保持されたデータを4ビット単位で上位にシフトさせると同時に、命令レジスタ10のP1.0フィールド12に保持された4ビットの定数を定数レジスタ36の最下位の4ビットレジスタ36hに格納する。
【0038】
図5(b)は、フォーマットデコーダ21によってP0.0フィールド11に保持された値が“4”であると解読された場合の格納方法を示す。これは、P1.0フィールド12〜P2.2フィールド15に置かれた16ビットの定数を定数レジスタ36に格納する場合に相当する。
具体的には、定数レジスタ36の下位16ビット36e〜36hに保持されたデータを上位16ビット36a〜36dにシフトさせると同時に、命令レジスタ10のP1.0フィールド12〜P2.2フィールド15に保持された16ビットの定数を定数レジスタ36の下位16ビット36e〜36hに格納する。
【0039】
図5(c)は、フォーマットデコーダ21によってP0.0フィールド11に保持された値が“5”であると解読された場合の格納方法を示す。これは、P1.0フィールド12とP3.0フィールド16〜P3.2フィールド18に置かれた16ビットの定数を定数レジスタ36に格納する場合に相当する。
具体的には、定数レジスタ36の下位16ビット36e〜36hに保持されたデータを上位16ビット36a〜36dにシフトさせると同時に、命令レジスタ10のP1.0フィールド12とP3.0フィールド16〜P3.2フィールド18に保持された16ビットの定数を定数レジスタ36の下位16ビット36e〜36hに格納する。
【0040】
図5(d)は、フォーマットデコーダ21によってP0.0フィールド11に保持された値が“2”、“3”及び“A”のいずれかであると解読された場合又は命令デコーダ22によってP2.1フィールド14、P2.2フィールド15、P3.2フィールド17及びP3.3フィールド18の少なくとも一つに定数レジスタ(R15)が指定されている場合の格納方法を示す。これは、P1.0フィールド12に置かれた分岐オペレーション、第1演算フィールド59及び第2演算フィールド60の少なくとも一つのオペレーションによって定数レジスタ36の格納値が使用された(読み出された)後に、定数レジスタ36にオールゼロを格納する(定数レジスタ36をクリアする)場合に相当する。
【0041】
具体的には、定数レジスタ36の格納値がPC部33、第1演算部37及び第2演算部38のいずれかに読み出された直後に、32ビットの定数“0”を定数レジスタ36に格納する。
なお、定数レジスタ36の使用後にクリアしておくのは、定数レジスタ36には常にゼロ拡張された値が格納されていることを保証するためである。ここで、ゼロ拡張とは、ある数値の有効桁数が一定の桁数に満たない場合に、その有効桁より上位の桁全てをゼロで埋める処理をいう。
【0042】
以上のように、命令レジスタ10のP0.0フィールド11の値が“0”、“1”、“4”、“5”の場合には、定数レジスタ36に既に格納された定数をシフトさせながら新たな定数が定数レジスタ36に格納される。また、定数レジスタ36は、その格納値が一旦読み出されて使用されると、その内容は消去される。このようにして、定数レジスタ36は、その内容が読み出されるまで、次々に格納される定数を蓄積していくことができる。
(PC部33の詳細な構成)
次に、PC部33の詳細な構成を説明する。
【0043】
図6は、PC部33の詳細な構成を示すブロック図である。
PC部33は、定数“4”を示す固定的な配線である固定値(“4”)33a、2入力セレクタ33b、加算器33c、次に解読実行すべき命令のアドレスを保持するPC33d及び4入力セレクタ33eから構成される。
このPC部33では、解読部20からの制御信号に従ってセレクタ33b、33eが動作することにより、以下の3通りの値のいずれかが有効アドレスとしてセレクタ33eから命令フェッチ部39に出力される。
(1)PC33dの内容に“4”を加算した値
これは、分岐しないで順次に実行する場合、即ち、解読実行された命令に分岐オペレーションが指定されていない場合に相当する。なお、“4”を加算するのは、1つの命令の長さが4バイト(32ビット)であることによる。
(2)PC33dの内容に定数レジスタ36の内容を加算した値
これは、定数レジスタ36の内容を相対番地として分岐する場合、例えば、P1.0フィールド12によって相対番地による分岐が指定されていると分岐デコーダ23が解読した場合が該当する。
(3)定数レジスタ36の内容
これは、定数レジスタ36の内容を絶対番地として分岐する場合、例えば、P1.0フィールド12によって絶対番地による分岐が指定されていると分岐デコーダ23が解読した場合が該当する。
【0044】
以上のように、このPC部33は、専用の加算器33cを備え、定数レジスタ36に保持された値を直接用いる構成となっているので、第1演算部37や第2演算部38での演算とは独立並行して、定数レジスタ36の格納値を絶対番地又は相対番地として分岐する実行制御を行なうことができる。
(プロセッサの動作)
次に、具体的な命令を解読実行した場合の本プロセッサの動作について説明する。
【0045】
図7は、32ビットの定数を扱う処理の一例を示すフローチャートである。
本図には、レジスタR0とR1との格納値の差を求め(ステップS80)、その結果にレジスタR2の格納値を掛け(ステップS81)、さらにその結果に32ビットの定数“0x87654321”(16進数の“87654321”)を加え(ステップS82、S83)、最後にレジスタR3をクリアしておく(ステップS85)という処理が示されている。
【0046】
図8は、図7に示された処理内容を本プロセッサに行なわせるプログラムの例を示す図である。
このプログラムは、3個の命令71〜73から構成されている。1行が1個の命令に相当し、各命令の内容は各フィールドに置かれたニーモニックで表現されている。なお、定数は全て16進数で表現されている。また、“fmtn(n=0〜F)”はフォーマットコード“n”を示し、“Rn(n=0〜15)”はレジスタ群34の中の1つのレジスタを示す。なお、“R15”は定数レジスタ36を意味する。
【0047】
図9は、図8に示されたプログラムを実行した場合の本プロセッサの動作を示すタイミングチャートである。
本図には、クロックサイクル、汎用レジスタR0〜R3及び定数レジスタR15の内容、4つのバスL1、R1,L2,R2を流れるデータが示されている。
上記図8及び図9を用いて、各命令71〜73ごとの本プロセッサの動作を説明する。
(命令71)
命令71が命令レジスタ10にロードされると、本プロセッサは図9のクロックサイクルt0〜t1に示された動作をする。
【0048】
フォーマットデコーダ21は、命令レジスタ10のP0.0フィールド11の値(“fmt4”)から、この命令はフォーマットコードが“4”の2オペレーション命令であると判断し、以下の2つのオペレーションが並列実行されるように実行部30を制御する。
(1)第1のオペレーション
定数レジスタ制御部32は、内部の8個のセレクタ32a〜32hを制御することで、図5(b)に示された格納方法により、P1.0フィールド12〜P2.2フィールド15に保持された16ビットの定数(0x8765)を定数レジスタ36の下位16ビットに格納する。その結果、図9のクロックサイクルt0〜t1に示されるように、定数レジスタR15の内容は、それまでの“0x00000000”から“0x00008765”に変化する。
(2)第2のオペレーション
第2演算部38は、汎用レジスタR0の内容(“0x33333333”)と汎用レジスタR1の内容(“0x22222222”)とを入力とし、ここで減算した後に、その結果を再び汎用レジスタR0に格納する。その結果、図9のクロックサイクルt0〜t1に示されるように、汎用レジスタR0の内容は、それまでの“0x33333333”から“0x11111111”に変化する。
(命令72)
次に、命令72が命令レジスタ10にロードされると、本プロセッサは図9のクロックサイクルt1〜t2に示された動作をする。
【0049】
フォーマットデコーダ21は、上記命令71の場合と同様に、命令レジスタ10のP0.0フィールド11の値(“fmt4”)から、この命令はフォーマットコードが“4”の2オペレーション命令であると判断し、以下の2つのオペレーションが並列実行されるように実行部30を制御する。
(1)第1のオペレーション
定数レジスタ制御部32は、内部の8個のセレクタ32a〜32hを制御することで、図5(b)に示された格納方法により、P1.0フィールド12〜P2.2フィールド15に保持された16ビットの定数(0x4321)を定数レジスタ36の下位16ビットに格納する。その結果、図9のクロックサイクルt1〜t2に示されるように、定数レジスタR15の内容は、それまでの“0x00008765”から“0x87654321”に変化する。
(2)第2のオペレーション
第2演算部38は、汎用レジスタR2の内容(“0x00000004”)と汎用レジスタR0の内容(“0x11111111”)とを入力とし、ここで乗算した後に、その結果を再び汎用レジスタR0に格納する。その結果、図9のクロックサイクルt1〜t2に示されるように、汎用レジスタR0の内容は、それまでの“0x11111111”から“0x44444444”に変化する。
(命令73)
最後に、命令73が命令レジスタ10にロードされると、本プロセッサは図9のクロックサイクルt2〜t3に示された動作をする。
【0050】
フォーマットデコーダ21は、命令レジスタ10のP0.0フィールド11の値(“fmt7”)から、この命令はフォーマットコードが“7”の2オペレーション命令であると判断し、以下の2つのオペレーションが並列実行されるように実行部30を制御する。
(1)第1のオペレーション
第1演算部37は、定数レジスタR15の内容(“0x87654321”))値と汎用レジスタR0の内容(“0x44444444)とを入力とし、それらを加算した後に、その結果を再び汎用レジスタR0に格納する。その結果、図9のクロックサイクルt2〜t3に示されるように、汎用レジスタR0の内容は、それまでの“0x44444444”から“0xCBA98765”に変化し、定数レジスタR15の内容はクリアされる。
(2)第2のオペレーション
第2演算部38は、P1.0フィールド12とP3.1フィールド17に分割して置かれた8ビットの定数(“0x00”)を入力とし、そのまま通過させて、汎用レジスタR3に格納する。その結果、図9のクロックサイクルt2〜t3に示されるように、汎用レジスタR3の内容は、それまでの“0xFEDCBA98”から“0x00000000”に変化する。
【0051】
以上のようにして、本プロセッサにおいて、32ビットの定数“0x87654321”は、2個の命令71、72に跨って分割配置され、順次定数レジスタ36にシフトされながら格納された後に、第3番目の命令73によって利用された。このようにして、図7のフローチャートに示された処理が3個の命令71〜73によって実行される。
次に、16ビットの定数を扱う別のプログラムを用いて本プロセッサの動作を説明する。
【0052】
図10は、16ビットの定数を扱うプログラムの例を示す図である。
このプログラムは、5個の命令74〜78から構成されている。
各命令71〜73ごとの本プロセッサの動作は以下の通りである。
(命令74)
命令74が命令レジスタ10にロードされると、フォーマットデコーダ21は、命令レジスタ10のP0.0フィールド11の値(“fmt0”)から、この命令はフォーマットコードが“0”の3オペレーション命令であると判断し、以下の3つのオペレーションが並列実行されるように実行部30を制御する。
(1)第1のオペレーション
定数レジスタ制御部32は、内部の8個のセレクタ32a〜32hを制御することで、図5(a)に示された格納方法により、P1.0フィールド12に保持された4ビットの定数(“0x8”)を定数レジスタ36の最下位の4ビットレジスタ36hに格納する。
(2)第2のオペレーション
第1演算部37は、汎用レジスタR6の値を入力とし、そのまま通過させて、汎用レジスタR1に格納する。
(3)第3のオペレーション
同様に、第2演算部38は、汎用レジスタR7の値を入力とし、そのまま通過させて、汎用レジスタR2に格納する。
(命令75)
同様にして、命令75が命令レジスタ10にロードされると、フォーマットデコーダ21は、この命令はフォーマットコードが“0”の3オペレーション命令であると判断し、以下の3つのオペレーションが並列実行されるように実行部30を制御する。
(1)第1のオペレーション
定数レジスタ制御部32は、内部の8個のセレクタ32a〜32hを制御することで、図5(a)に示された格納方法により、P1.0フィールド12に保持された4ビットの定数(“0x7”)を定数レジスタ36の最下位4ビットレジスタ36hに格納する。この結果、定数レジスタ36の下位8ビットには定数“0x87”がセットされる。
(2)第2のオペレーション
第1演算部37は、汎用レジスタR0とR1の値を入力とし、ここで加算した後に、その結果を再び汎用レジスタR1に格納する。
(3)第3のオペレーション
同様に、第2演算部38は、汎用レジスタR0とR2の値を入力とし、ここで加算した後に、その結果を再び汎用レジスタR2に格納する。
(命令76、命令77)
同様にして、命令76、77が実行されることにより、定数レジスタ36の下位16ビットには定数“0x8765”がセットされる。
(命令78)
命令78が命令レジスタ10にロードされると、本プロセッサは、図8に示された命令73の場合と同様の動作をする。
【0053】
以上のようにして、本プロセッサにおいては、16ビットの定数“0x8765”は、4個の命令74〜77に跨って分割配置され、順次定数レジスタ36にシフトされながら格納された後に、第5番目の命令78によって利用された。
(通常のプロセッサとの比較)
次に、上記図8及び図10に示されたプログラムと同一内容の処理を通常のプロセッサに行なわせた場合について説明し、本発明に係るプロセッサと比較する。なお、ここでいう通常のプロセッサとは、本発明に係るプロセッサの定数レジスタ36や定数レジスタ制御部32の如く、分割された定数を蓄積して格納する手段のみを有しないプロセッサをいい、32ビット固定長の命令を実行するものとする。
【0054】
図21(a)は、この通常のプロセッサが実行する命令のフィールド定義を示し、図21(b)は、その命令のフォーマットを示す。つまり、通常のプロセッサは、3種類の2オペレーション命令101〜103と1種類の1オペレーション命令104を実行するものとする。
図22は、図8に示されたプログラムと同一内容の処理、即ち、図7のフローチャートに示された処理を通常のプロセッサに行なわせるプログラムの例である。
【0055】
図22と図8とを比較して判るように、通常のプロセッサ用のプログラムは、本発明に係るプロセッサ用のものよりも2個の命令だけ多くなっている。
なお、命令105、106にnopコードが含まれるのは、命令106は命令105での演算結果を用いるので、これらの命令を並列に実行させることができないからである。また、1個の定数“0x87654321”を上位16ビットと下位16ビットの2つに分割して定数レジスタRiにセットしているのは(命令107、108)、32ビットの1個の命令の中に、セット命令のオペコードと32ビットの定数の両方を同時に配置することは不可能だからである。
【0056】
同様に、図23は、図10に示されたプログラムと同一内容の処理を通常のプロセッサに行なわせるプログラムの例である。
図23と図10とを比較して判るように、通常のプロセッサ用のプログラムは、本発明に係るプロセッサ用のものよりも1個の命令だけ多くなっている。
以上のように、本発明に係るプロセッサによれば、16ビットや32ビットの定数が複数の命令に跨って分割配置されていても、それらは定数レジスタ36に蓄積して格納されることで元の定数に復元され、分岐や算術演算等のオペレーションに使用される。つまり、命令中に生じた小さな領域であっても、定数を分割して埋めておくことができるので、通常のプロセッサに実行させる場合よりもプログラムのコードサイズは縮小される。
(定数レジスタ36の周辺回路の変形例)
次に、図4に示された定数レジスタ36の周辺回路についての変形例のいくつかを示す。
(第1の変形例)
図11は、第1の変形例に係る定数レジスタ36の周辺回路の構成及び接続関係を示すブロック図である。
【0057】
図4の定数レジスタ制御部32は定数レジスタ36をシフトレジスタとして機能させたが、図11の定数レジスタ制御部32は定数レジスタ36を並列入力のレジスタとして機能させている点で異なる。具体的には、定数レジスタ制御部90とフォーマットデコーダ21との接続及び定数レジスタ制御部90の構成要素が図4に示されたものと異なる。
【0058】
定数レジスタ制御部90は、格納桁カウンタ91と8個の8入力セレクタ90a〜90hとからなる。格納桁カウンタ91は、3ビットのカウンタであり、その時点において定数レジスタ36に蓄積されている定数の有効桁数をニブル(4ビット)単位で示すものである。
定数レジスタ制御部90は、命令レジスタ10に保持された定数を格納する旨の指示をフォーマットデコーダ21から受けると、その時点での格納桁カウンタ91の値を参照することで定数レジスタ36の適切な位置にその定数を格納し、その後に、格納桁カウンタ91を更新しておく。また、定数レジスタ36の格納値が何らかのオペレーションのために読み出されたした旨の通知をフォーマットデコーダ21又は命令デコーダ22から受けると、固定値(“0”)92からのオールゼロを定数レジスタ36に格納し、その後に、格納桁カウンタ91をリセットしておく。
【0059】
具体的には、定数レジスタ制御部90は、P0.0フィールド11の値が“0”又は“1”である旨の指示をフォーマットデコーダ21から受けると、その時の格納桁カウンタ91の値0〜7に対応して、それぞれ図12(a)〜図12(h)に示された格納方法によりP1.0フィールド12に置かれた1ニブルの定数を定数レジスタ36に格納するようセレクタ90a〜90hを制御し、その後に格納桁カウンタ91を1だけインクリメントする。
【0060】
同様に、定数レジスタ制御部90は、P0.0フィールド11の値が“4”である旨の指示をフォーマットデコーダ21から受けると、その時点での格納桁カウンタ91の値0〜7に対応して、それぞれ図13(a)〜図13(h)に示された格納方法により、P1.0フィールド12〜P2.2フィールド15に置かれた4ニブルの定数を定数レジスタ36に格納するようセレクタ90a〜90hを制御し、その後に格納桁カウンタ91を4だけインクリメントする。
【0061】
同様に、定数レジスタ制御部90は、P0.0フィールド11の値が“5”である旨の指示をフォーマットデコーダ21から受けると、その時点での格納桁カウンタ91の値0〜7に対応して、それぞれ図14(a)〜図14(h)に示された格納方法により、P1.0フィールド12とP3.0フィールド16〜P3.2フィールド18に置かれた4ニブルの定数を定数レジスタ36に格納するようセレクタ90a〜90hを制御し、その後に格納桁カウンタ91を4だけインクリメントする。
【0062】
さらに、定数レジスタ制御部90は、P0.0フィールド11の値が“2”、“3”及び“A”のいずれかである旨の指示をフォーマットデコーダ21からうけた場合又は定数レジスタ36の格納値をオペランドとするオペレーションである旨の指示を命令デコーダ22から受けた場合には、図15に示された定数レジスタ36のように、32ビットの定数“0”を定数レジスタ36に格納させ、その後、格納桁カウンタ91をゼロにクリアする。
【0063】
以上のように、この第1の変形例に係る定数レジスタ制御部90によって、上記定数レジスタ制御部32の場合と同様に、複数の命令に跨って分割配置されていた定数は定数レジスタ36に蓄積して格納されることで元の定数に復元される。
但し、上記定数レジスタ制御部32の場合と異なり、後で実行される命令に置かれた定数が定数レジスタ36の上位桁に格納される。従って、この変形例のプロセッサに図7のフローチャートに示された処理を実行させるためには、図8に示されたプログラムにおいて、命令71の定数“0x8765”と命令72の定数“0x4321”とを入れ替えておく必要がある。
(第2の変形例)
次に、第2の変形例を示す。
【0064】
図16は、第2の変形例に係る定数レジスタ36の周辺回路の構成及び接続関係を示すブロック図である。
この第2の変形例は、定数レジスタ36の格納値をシフトさせながら新たな定数を蓄積していく点で図4に示されたものと同じであるが、定数レジスタ36への格納に先立って定数を符号拡張している点及び定数レジスタ36の格納値が読み出された場合であっても定数レジスタ36をクリアしない点で異なる。
【0065】
なお、符号拡張とは、ある数値の有効桁数が一定の桁数に満たない場合に、その数値の最上位ビットを符号ビットとみなし、その符号ビットと同じ論理値で上位桁を埋める処理をいう。
符号拡張制御部191は、命令レジスタ10に置かれた定数が、定数レジスタ36の格納値が読み出された後の初めての格納に係るものである場合には、その定数を符号拡張した後に定数レジスタ36に格納するよう定数レジスタ制御部190を制御し、そうでない場合には、その定数を符号拡張することなく定数レジスタ36に格納するよう定数レジスタ制御部190を制御する。そのために、符号拡張制御部191は、内部に1ビットの読み出しフラグを記憶しておくための読み出しフラグ記憶部192を備え、フォーマットデコーダ21及び命令デコーダ22からの指示に基づいて読み出しフラグ記憶部192を更新する。
【0066】
図17は、読み出しフラグ記憶部192の値の変化を示す状態遷移図である。符号拡張制御部191は、定数レジスタ36の格納値が読み出された旨の通知をフォーマットデコーダ21又は命令デコーダ22から受けると、その読み出し後に読み出しフラグ記憶部192の値を“1”にセットし、命令レジスタ10に置かれた定数を定数レジスタ36に格納する旨の通知をフォーマットデコーダ21から受けると、その格納後に読み出しフラグ記憶部192の値を“0”にセットする。そして、符号拡張制御部191は、新たな定数を定数レジスタ36に格納させる際に読み出しフラグ記憶部192を参照し、その値が“1”である場合には、その定数を符号拡張した後に定数レジスタ36に格納させる。
【0067】
なお、図16において、セレクタ190h及びセレクタ190eの出力から分岐されて他のセレクタに配線されている信号線は、それぞれの出力4ビットのうちの最上位ビットに相当する信号線だけである。
図18(a)〜図18(f)は、この第2の変形例における定数レジスタ36及び読み出しフラグ記憶部192の値の変化を示す図である。
【0068】
図18(a)は、定数レジスタ36に格納されていた定数“0x87654321”が読み出された直後におけるそれらの内容を示し、図18(b)〜図18(e)は、その後に4ビットの定数“0x8”、“0x7”、“0x6”、“0x5”が順次に格納された直後におけるそれらの内容を示し、図18(f)は、図18(e)における定数“0xFFFF87657”が読み出された直後におけるそれらの内容を示す。
【0069】
このようにして、本第2の変形例において、符号拡張制御部191が読み出しフラグ記憶部192によって符号拡張の必要性の有無を管理することで、複数の命令に跨って分割配置されていた定数は、定数レジスタ36に蓄積して格納され、符号拡張された元の定数として復元される。
(第3の変形例)
次に、第3の変形例を示す。
【0070】
図19は、第3の変形例に係る定数レジスタ36の周辺回路の構成及び接続関係を示すブロック図である。
この第3の変形例は、上記第2の変形例と比較し、定数レジスタ36の格納値をシフトさせながら新たな定数を蓄積していく点及び符号拡張を行なう点において共通するが、定数レジスタ36に定数を格納する際に拡張処理を行なうのではなく、定数レジスタ36から定数を読み出す際に拡張処理を行なう点で異なる。
【0071】
また、図4に示された周辺回路及び接続関係と比較すると、この第3の変形例では、定数レジスタ36にオールゼロを格納するための構成は設けられておらず、新たに拡張制御部291及びゼロ/符号拡張部293が付加されている。
定数レジスタ制御部290は、定数レジスタ36をクリアすることがない点を除いて、図4に示された定数レジスタ制御部32と同様の動作を行なう。
【0072】
拡張制御部291は、定数レジスタ36に格納されていた定数が読み出される際に、その定数が適切にゼロ拡張又は符号拡張が行われるように、ゼロ/符号拡張部293を制御する。そのために、拡張制御部291は、内部に3ビットのカウンタからなる格納桁カウンタ292を有する。格納桁カウンタ292は、定数レジスタ36に蓄積されている定数の有効桁数をニブル単位で記憶しておくためのものである。拡張制御部291は、新たな定数が定数レジスタ36に格納された旨の通知をフォーマットデコーダ21から受けた場合には、その定数の桁数(ニブル単位の桁数)だけ格納桁カウンタ292をインクリメントし、定数レジスタ36の格納値が読み出された旨の通知をフォーマットデコーダ21又は命令デコーダ22から受けた場合には、格納桁カウンタ292をリセットする。
【0073】
この符号拡張制御部291は、命令デコーダ22からの指示に基づいて拡張形式(ゼロ拡張か符号拡張か)を指定する1ビットの制御信号と、格納桁カウンタ292の値を示す3ビットの制御信号とをゼロ/符号拡張部293に出力する。
ゼロ/符号拡張部293は、定数レジスタ36から出力された32ビットの格納値を入力とし、拡張制御部291から通知される拡張形式と有効桁数(ニブル単位の桁数)に基づいて、ゼロ拡張又は符号拡張を行なう。具体的には、符号拡張制御部291から指定された拡張形式が符号拡張の場合であれば、入力された格納値に対して、拡張制御部291から通知された有効桁数の最上位に相当するビットの論理値をその有効桁数より上位の全ての桁にコピーして得られる値を出力し、一方、ゼロ拡張の場合であれば、それら上位の全ての桁をゼロとする値を出力する。
【0074】
例えば、入力された格納値が“0x87654321”であり、拡張制御部291から通知された拡張形式が符号拡張であって有効桁数が4ニブルである場合には、ゼロ/符号拡張部293は“0x00004321”を出力する。
このように、本第3の変形例によって、複数の命令に跨って分割配置されていた定数は、定数レジスタ36に蓄積して格納されることで元の定数に復元され、ゼロ拡張又は符号拡張された後に分岐や演算等のオペレーションに利用される。
(第4の変形例)
次に、第4の変形例を示す。
【0075】
図20は、第4の変形例に係る定数レジスタ36の周辺回路の構成及び接続関係を示すブロック図である。
この第4の変形例は、図4に示されたものと比較し、定数レジスタ36の格納値をシフトさせながら新たな定数を蓄積していく点において共通するが、シフトさせる方向と定数レジスタ36への格納位置が異なる。具体的には、定数レジスタ36の格納値を上位桁から下位桁へシフトさせると共に、命令レジスタ10に置かれた新たな定数を定数レジスタ36の上位桁に格納する。なお、定数レジスタ36の格納値が読み出された直後に定数レジスタ36をクリアする点は図4のものと同じである。
【0076】
図10と図4を比較して判るように、これらは、接続関係が桁方向に対称的になっており、用いられている構成要素は同一である。
この第4の変形例によって、より少ない格納回数によって下位桁全てをゼロとする数値を定数レジスタ36にセットすることが可能となる。例えば、定数レジスタ36がクリアされた後に新たな32ビットの定数“0x87650000”をセットする場合に、図4に示された接続であれば、2個の16ビット定数“0x8765”と“0x0000”を格納する必要があるが、図20に示された接続であれば、1個の16ビット定数“0x8765”を格納するだけでよい。小数点以下を全てゼロとする固定小数点数値をセットする場合に便利である。
以上、本発明に係るプロセッサについて、実施形態及び変形例に基づいて説明したが、本発明はこれら実施形態及び変形例に限られないことは勿論である。即ち、
(1)定数レジスタ36に定数を格納する位置として、下位桁から埋めていく方式(例えば、図4に示された方式)と、上位桁から埋めていく方式(例えば、図20に示された方式)がある。
【0077】
また、新たな定数を定数レジスタ36に格納する際に、既に格納されている定数をシフトさせていく方式(例えば、図4に示された方式)と、シフトさせずに異なる桁位置に格納していく方式(例えば、図11に示された方式)とがある。
また、定数の上位桁の拡張方式として、ゼロ拡張を行なう方式(例えば、図4に示された方式)と、符号拡張を行なう方式(例えば、図16に示された方式)とがある。
【0078】
また、ゼロ拡張や符号拡張を行なうタイミングとして、定数レジスタ36への格納前に行なう方式(例えば、図16に示された方式)と、定数レジスタ36からの読み出し後に行なう方式(例えば、図19に示された方式)とがある。
また、ゼロ拡張を行なう具体的な実現方式として、定数レジスタ36の格納値が読み出された直後にオールゼロを定数レジスタ36に格納しておく方式(例えば、図4に示された方式)と、定数の格納時や読み出し時に固定値“0”を挿入する方式(例えば、図19に示された方式)とがある。
【0079】
従って、これら格納位置、シフトの有無、拡張方式、拡張のタイミング、読み出し後の自動クリアについての各方式を組み合わせることで、さらに多くのバリエーションを構築することは容易である。
さらに、上記実施形態では、上記各方式の一方だけを備える例が示されたが、これに限定されるものではない。例えば、定数のゼロ拡張を行なうための構成と符号拡張を行なうための構成の両方を備え、命令に置かれたオペコードによって、いずれかを選択的に動作させる方式であってもよい。
(2)また、上記実施の形態では、数値定数を扱う例が示されたが、文字定数であってもよいことは言うまでもない。複数の命令に跨って分割配置された文字定数であっても、定数レジスタ36への複数回の格納によって、桁数の長い元の文字定数が復元されるからである。
(3)また、上記実施の形態では、図1(b)〜図1(d)の命令フォーマットから判るように、1個の命令によって定数レジスタ36に格納させることができる定数の桁数は4ビット及び16ビットのいずれかであったが、本発明はこの桁数に限定されるものではない。例えば、12ビットや28ビットの定数を定数レジスタ36に格納するための命令フォーマットを定義してもよい。そのためには、定数レジスタ36の周辺回路の接続関係を変更すればよい。
(4)また、上記実施の形態のプロセッサは2個の演算部37、38を備えるVLIWプロセッサであったが、本発明は、1個の演算部のみを備え1個の命令中に1個のオペレーションだけを指定する単一オペレーション命令を実行するVLIWアーキテクチャを採らないプロセッサに対しても適用することができるのは言うまでもない。
【0080】
特に、固定長命令の場合には未使用領域を持つ命令が多く定義されることがある。例えば、MIPS社製のRISCプロセッサ“R2000”は32ビット固定長命令を実行するが、このプロセッサの命令セットには、未使用領域を持つ命令(例えば、ADD命令は5ビットの未使用領域を有する。)が定義されている。本発明によれば、このような単一オペレーション命令中に生じる無駄領域の発生が回避される。
(5)また、上記実施の形態では、4ビットのオペコード“cc”は、暗黙的に定数レジスタ36の格納値を参照する間接分岐オペレーションを意味したが、本発明はこれに限定されるものではなく、オペコード“cc”として、固定的なディスプレースメントの番地分だけ相対的に分岐するオペレーションや、汎用レジスタ35の格納値を用いた間接分岐オペレーション等を含ませることもできる。この場合には、定数レジスタ制御部32は、定数レジスタ36の格納値が読み出された直後に定数レジスタ36をクリアするだけでなく、オペコード“cc”に伴う分岐オペレーションが実行された直後にも定数レジスタ36をクリアすればよい。これらのことは、どのようなオペレーションを4ビットのオペコード“cc”に割り当てるかの設計事項であり、分岐デコーダ23と定数レジスタ制御部32の変更によって容易に実現できることは言うまでもない。
【0081】
【発明の効果】
以上の説明から明らかなように、本発明は、命令を解読し実行するプロセッサであって、定数を格納するための定数レジスタと、前記命令中に前記定数レジスタへ格納すべき定数が置かれていることを解読する解読手段と、前記解読手段により前記定数が置かれていると解読された場合には、前記定数レジスタに定数が格納されていないと判断すると前記定数を所定位置に格納し、前記定数レジスタに定数が既に格納されていると判断すると前記定数レジスタに既に格納されている定数を残したまま新たな定数を前記定数レジスタに格納する格納手段と、前記定数レジスタに格納されている全ての定数を読み出し、その定数をオペランドとするオペレーションを実行する実行手段とを備えることを特徴とする。
【0082】
これによって、コンパイラ等によって複数の命令に跨って分割配置されていた定数の断片が定数レジスタに格納されて蓄積され、元の1個の定数に復元される。従って、命令中に小さな桁数の無駄領域が生じる場合であっても、その無駄領域を桁数の大きい定数の一部で埋めておくことが可能となり、コード効率の高いプログラムの作成が支援される。
【0083】
ここで、前記格納手段は、前記定数レジスタに既に格納されている定数をシフトさせながら前記新たな定数を格納していくとすることもできる。
これによって、定数レジスタの同じ位置に定数を格納するだけで定数が蓄積されるので、次に格納すべき定数レジスタの位置を管理する必要がなくなる。
また、前記格納手段は、前記定数レジスタに既に格納されている定数を移動させることなく、その定数に隣接する位置に前記新たな定数を格納していくとすることもできる。
【0084】
これによって、一旦、定数レジスタに格納された定数はその桁位置が変動されることがないので、1個の定数を複数の命令の無駄領域に分割して配置するためのコンパイラにおけるスケジューリングが容易になる。
また、前記格納手段は、前記定数レジスタの下位桁から上位桁に向けて順次に定数を蓄積して格納していくとすることもできる。
【0085】
これによって、定数レジスタは下位桁から埋められていくので、有効桁が可変長の定数を定数レジスタにセットするのに好適なプロセッサが実現される。
また、前記格納手段は、前記定数レジスタの上位桁から下位桁に向けて順次に定数を蓄積して格納していくとすることもできる。
これによって、定数レジスタは上位桁から埋められていくので、下位の桁全てをゼロとする定数を定数レジスタにセットするのに好適なプロセッサが実現される。
【0086】
また、前記プロセッサはさらに、前記定数に対してゼロ拡張及び符号拡張の少なくとも一方の拡張処理を行なう拡張手段を備えるとすることもできる。
これによって、定数レジスタに格納された定数がオペランドとして利用される場合には、そのオペランドはゼロ拡張又は符号拡張が施された適切な定数となっていることが保証される。
【0087】
また、前記拡張手段は、前記定数レジスタに格納される前の定数に対して前記拡張処理を行なうとすることもできる。
これによって、定数レジスタに格納されている定数は常に拡張処理が行われた適切な定数であることが保証され、定数レジスタから定数を読み出した後に拡張処理を行なう必要がなくなるので、定数レジスタに格納された定数を用いたオペレーションに要する時間が短縮される。
【0088】
また、前記拡張手段は、前記定数レジスタから読み出された定数に対して前記拡張処理を行なうとすることもできる。
これによって、定数を定数レジスタに格納する際における拡張処理が不要となるので、定数レジスタへの格納に要する時間が短縮される。
また、前記格納手段は、前記実行手段によって前記定数レジスタに格納された定数が読み出された直後に前記定数レジスタにゼロを格納するとすることもできる。
【0089】
これによって、定数を定数レジスタに格納するだけで定数レジスタに格納されている定数は常にゼロ拡張された適切な定数であることが保証され、定数レジスタの格納値を使用する度に定数レジスタをクリアしておくための独立した消去命令は不要となる。
また、前記実行手段は、前記命令に従って分岐オペレーションを実行する分岐実行部を有し、前記格納手段は、前記分岐実行部により分岐オペレーションが実行された場合に前記定数レジスタにゼロを格納するとすることもできる。
【0090】
これによって、分岐オペレーションの実行に伴って定数レジスタの格納値はクリアされるので、定数レジスタに不要な格納値が残されることによる不具合が回避される。
また、並列実行する複数のオペレーションからなる命令を実行するVLIWプロセッサにおいて、並列実行できるオペレーションがない場合、オペレーションの代わりに後続の命令で使用する定数が配置された命令を実行するとすることもできる。
【0091】
これによって、単一オペレーションを指定する命令中に生じる無駄領域だけでなく、1個の命令中に2個以上のオペレーションを指定することができるVLIW中に生じる無駄領域に対しても、定数を埋めておくことが可能となる。
また、並列実行する複数のオペレーションからなる命令を実行するVLIWプロセッサにおいて、並列実行できるオペレーションがない場合、オペレーションの代わりに定数が配置された命令のうち前記定数以外のオペレーションを並列実行するとともに、前記定数は順に格納しておき後続の命令で使用するとすることもできる。
【0092】
これによって、VLIWの一部のオペレーションのみに定数が置かれている場合であっても、その定数の格納と他のオペレーションとは並列に実行される。そして、その定数は蓄積されて格納され、後続の命令で利用されるので、桁数の大きい定数であっても、それを分割して複数の命令に埋めておくことが可能となる。
【0093】
また、命令のフォーマットを指定するフォーマットコードが置かれるフォーマットフィールドと、並列実行させるオペレーションを指定する複数のオペレーションフィールドとを含む命令を解読し実行するVLIWプロセッサであって、定数を格納するための定数レジスタと、前記フォーマットコードを参照することにより、少なくとも1つの前記オペレーションフィールドに定数が置かれていることを解読する解読手段と、前記解読手段により前記定数が置かれていると解読された場合には、前記定数レジスタに定数が格納されていないと判断すると前記定数を所定位置に格納し、前記定数レジスタに定数が既に格納されていると判断すると前記定数レジスタに既に格納されている定数を残したまま新たな定数を前記定数レジスタに格納する格納手段と、前記定数レジスタに格納されている全ての定数を読み出し、その定数をオペランドとするオペレーションを実行する実行手段とを備えるとすることもできる。
【0094】
これによって、プロセッサに実行させるVLIW列を生成する際に桁数の大きい定数を複数のVLIWに跨って分割配置しておくことが可能となる。そして、定数が置かれている命令中の位置(オペレーションフィールド)はフォーマットコードによって明示的に指定されるが、定数の格納先(定数レジスタ)や格納位置(定数レジスタ上の桁位置)は暗黙的に指定されたものであるので、命令中に置かれた定数を定数レジスタの特定位置に格納するための明示的なオペコードは不要になる。
【0095】
以上のように、本発明によって、コンパイラ等によって機械語命令列を生成する際に、それら命令列中に小さな無駄領域を設ける必要が生じた場合であっても、後続の命令で使用される定数を予め分割して埋めておくという最適化スケジューリングが可能となるので、プログラムのコードサイズは縮小化され、特に組み込み用途のプロセッサとしてその実用的価値は大きい。
【図面の簡単な説明】
【図1】図1(a)は、本発明に係るプロセッサが実行する命令のフィールド構成を示す図である。
図1(b)〜図1(d)は、16種類の命令フォーマットを示す図である。
図1(b)は3オペレーション、図1(c)は2オペレーション、図1(d)は1オペレーションを同時に指定できる命令フォーマットである。
【図2】図1で用いられている3種類のオペコード“cc”、“op1”及び“op2”それぞれによって指定される具体的なオペレーションを説明する図である。
【図3】同プロセッサのハードウェア構成を示すブロック図である。
【図4】同プロセッサの定数レジスタ36及びその周辺回路の詳細な構成を示すブロック図である。
【図5】図4に示された定数レジスタ制御部32による定数の格納方法を示す図である。
図5(a)はフォーマットコードが“0”又は“1”である場合、図5(b)はフォーマットデコードが“4”である場合、図5(c)はフォーマットデコードが“5”である場合、図5(d)はフォーマットコードが“2”、“3”及び“A”のいずれかである場合又は定数レジスタ36の格納値がオペランドとして指定されている場合の格納方法を示す。
【図6】同プロセッサのPC部33の詳細な構成を示すブロック図である。
【図7】32ビットの定数を扱う処理の一例を示すフローチャートである。
【図8】図7に示された処理を同プロセッサに行なわせるプログラムの例を示す図である。
【図9】図9は、図8に示されたプログラムを実行した場合の本プロセッサの動作を示すタイミングチャートである。
【図10】16ビットの定数を扱う処理を同プロセッサに行なわせるプログラムの例を示す図である。
【図11】第1の変形例に係る定数レジスタ36の周辺回路の構成を示すブロック図である。
【図12】フォーマットコードが“0”又は“1”である場合の定数レジスタ制御部90による定数の格納方法を示す図である。
図12(a)〜図12(h)は、それぞれ格納桁カウンタ91の値が0〜7のときの格納方法を示す。
【図13】フォーマットコードが“4”である場合の定数レジスタ制御部90による定数の格納方法を示す図である。
図13(a)〜図13(h)は、それぞれ格納桁カウンタ91の値が0〜7のときの格納方法を示す。
【図14】フォーマットコードが“5”である場合の定数レジスタ制御部90による定数の格納方法を示す図である。
図14(a)〜図14(h)は、それぞれ格納桁カウンタ91の値が0〜7のときの格納方法を示す。
【図15】フォーマットコードが“2”、“3”及び“A”のいずれかである場合又は定数レジスタ36の格納値がオペランドとして指定されている場合の定数レジスタ制御部90による定数の格納方法を示す図である。
【図16】第2の変形例に係る定数レジスタ36の周辺回路の構成を示すブロック図である。
【図17】図16に示された読み出しフラグ記憶部192の値の変化を示す遷移図である。
【図18】同変形例における定数レジスタ36及び読み出しフラグ記憶部192の値の変化を示す図である。
図18(a)は、定数レジスタ36に格納されていた定数“0x87654321”が読み出された直後における内容を示し、図18(b)〜図18(e)は、その後に4ビットの定数“0x8”、“0x7”、“0x6”、“0x5”が順次に格納された直後における内容を示し、図18(f)は、図18(e)における定数“0xFFFF87657”が読み出された直後における内容を示す。
【図19】第3の変形例に係る定数レジスタ36の周辺回路の構成を示すブロック図である。
【図20】第4の変形例に係る定数レジスタ36の周辺回路の構成を示すブロック図である。
【図21】図21(a)は、通常のプロセッサが実行する命令のフィールド定義を示す図である。図21(b)は、同命令フォーマットを示す図である。
【図22】図8に示されたプログラムと同一内容の処理を上記通常のプロセッサに行なわせるプログラムの例を示す図である。
【図23】図10に示されたプログラムと同一内容の処理を上記通常のプロセッサに行なわせるプログラムの例を示す図である。
【図24】従来技術における命令フォーマットを示す図である。
【符号の説明】
10 命令レジスタ
20 解読部
21 フォーマットデコーダ
22 命令デコーダ
23 分岐デコーダ
24 第1演算デコーダ
25 第2演算デコーダ
30 実行部
31 実行制御部
32 定数レジスタ制御部
32a〜32h セレクタ
33 PC部
33a 固定値“4”
33b、33e セレクタ
33c 加算器
33d PC
34 レジスタ群
35 汎用レジスタR0〜R14
36 定数レジスタR15
36a〜36h 4ビット幅レジスタ
37 第1演算部
38 第2演算部
39 命令フェッチ部
40 オペランドアクセス部
41 セレクタ
50 命令
51〜58 命令フィールド
59 第1演算フィールド
60 第2演算フィルド
90、190、290、390 変形例に係る定数レジスタ制御部
91、292 格納桁カウンタ
191 符号拡張制御部
291 拡張制御部
192 読み出しフラグ記憶部
293 ゼロ/符号拡張部

Claims (11)

  1. 並列実行させるオペレーションを指定するための複数のオペレーションフィールドを1命令中に含む命令を解読し実行するVLIWプロセッサであって、
    定数を格納するための定数保持手段と、
    前記複数のオペレーションフィールドを並列に解読し、オペレーションを指定する代わりに、元の定数が分割された分割定数が置かれていることを検出する解読手段と、
    複数のオペレーションフィールドに跨って離れて配置されている複数の分割定数を、前記解読手段により分割定数が置かれていると検出される度前記定数保持手段順次格納することにより、元の定数を復元する定数格納制御手段と、
    前記定数格納制御手段により前記定数保持手段内に復元された元の定数を用いてオペレーションフィールドに指定されているオペレーションを実行する実行手段とを備え
    前記定数格納制御手段は、
    前記定数保持手段に、第1の分割定数を格納した後に、さらに第2の分割定数を格納する際に、
    (1)前記定数保持手段に格納されている第1の分割定数を、第2の分割定数の桁数分シフトするか、又は
    (2)前記定数保持手段に格納されている定数の有効桁数を示す値を参照することで、適切な位置に第2の分割定数を格納し、前記値を第2の分割定数の桁数だけ更新し、
    ここで、前記定数保持手段の桁数および前記元の定数の桁数は、前記第1の分割定数が置かれているオペレーションフィールドの桁数および前記第2の分割定数が置かれているオペレーションフィールドの桁数よりも大きく、前記第1の分割定数が置かれているオペレーションフィールドの桁数および前記第2の分割定数が置かれているオペレーションフィールドの桁数はいずれも前記実行手段において並列実行できる命令の桁数よりも小さいこと
    を特徴とするVLIWプロセッサ。
  2. 前記第1の分割定数が置かれているオペレーションフィールドと、前記第2の分割定数が置かれているオペレーションフィールドとの間のオペレーションフィールドに、当該第1の分割定数および当該第2の分割定数を利用しないオペレーションが、少なくとも1つ指定されていること
    を特徴とする請求項1記載のVLIWプロセッサ。
  3. 前記第1の分割定数と前記第2の分割定数は、1命令中に離れて配置されていること
    を特徴とする請求項1記載のVLIWプロセッサ。
  4. 前記第1の分割定数と前記第2の分割定数は、複数の命令に跨って配置されていること
    を特徴とする請求項に記載のVLIWプロセッサ。
  5. 前記定数格納制御手段は、前記定数保持手段の下位桁から上位桁に向けて順次に前記分割定数を蓄積して格納していくこと
    を特徴とする請求項1〜4のいずれか1項に記載のVLIWプロセッサ。
  6. 前記定数格納制御手段は、前記定数保持手段の上位桁から下位桁に向けて順次に前記分割定数を蓄積して格納していくこと
    を特徴とする請求項1〜4のいずれか1項に記載のVLIWプロセッサ。
  7. 前記VLIWプロセッサはさらに、前記元の定数又は前記分割定数に対してゼロ拡張及び符号拡張の少なくとも一方の拡張処理を行なう拡張手段を備えること
    を特徴とする請求項1〜4のいずれか1項に記載のVLIWプロセッサ。
  8. 前記拡張手段は、前記定数保持手段に格納される前の前記分割定数に対して前記拡張処理を行なうこと
    を特徴とする請求項7に記載のVLIWプロセッサ。
  9. 前記拡張手段は、前記定数保持手段から読み出された前記元の定数に対して前記拡張処理を行なうこと
    を特徴とする請求項7に記載のVLIWプロセッサ。
  10. 前記定数格納制御手段は、前記実行手段によって前記定数保持手段に格納された前記元の定数が読み出された直後に前記定数レジスタにゼロを格納すること
    を特徴とする請求項1〜4のいずれか1項に記載のVLIWプロセッサ。
  11. 前記実行手段は、前記命令に従って分岐オペレーションを実行する分岐実行部を有し、
    前記定数格納制御手段は、前記分岐実行部により分岐オペレーションが実行された場合に前記定数保持手段にゼロを格納すること
    を特徴とする請求項1〜4のいずれか1項に記載のVLIWプロセッサ。
JP15904997A 1997-06-16 1997-06-16 プロセッサ Expired - Lifetime JP3670801B2 (ja)

Priority Applications (9)

Application Number Priority Date Filing Date Title
JP15904997A JP3670801B2 (ja) 1997-06-16 1997-06-16 プロセッサ
US09/097,214 US6219779B1 (en) 1997-06-16 1998-06-12 Constant reconstructing processor which supports reductions in code size
IL12490598A IL124905A (en) 1997-06-16 1998-06-15 Processor that supports code size reduction
EP98304702A EP0897147A3 (en) 1997-06-16 1998-06-15 Constant reconstructing processor which supports reductions in code size
TW087109488A TW393623B (en) 1997-06-16 1998-06-15 Constant reconstructing processor which supports reductions in code size
MYPI98002691A MY126508A (en) 1997-06-16 1998-06-16 Constant reconstructing processor which supports reductions in code size.
SG1998001440A SG66480A1 (en) 1997-06-16 1998-06-16 Constant reconstructing processor which supports reductions in code size
CNB981172768A CN1269052C (zh) 1997-06-16 1998-06-16 支持缩小代码长度的常量还原型处理器
KR1019980022513A KR100618247B1 (ko) 1997-06-16 1998-06-16 코드크기의축소화를지원하는정수복원형프로세서

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15904997A JP3670801B2 (ja) 1997-06-16 1997-06-16 プロセッサ

Publications (2)

Publication Number Publication Date
JPH117388A JPH117388A (ja) 1999-01-12
JP3670801B2 true JP3670801B2 (ja) 2005-07-13

Family

ID=15685121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15904997A Expired - Lifetime JP3670801B2 (ja) 1997-06-16 1997-06-16 プロセッサ

Country Status (1)

Country Link
JP (1) JP3670801B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4916151B2 (ja) * 2005-09-29 2012-04-11 ルネサスエレクトロニクス株式会社 並列演算装置
EP2992796B1 (en) * 2013-05-28 2018-09-19 Uchino Co., Ltd. Towel product

Also Published As

Publication number Publication date
JPH117388A (ja) 1999-01-12

Similar Documents

Publication Publication Date Title
JP3790607B2 (ja) Vliwプロセッサ
CA1174370A (en) Data processing unit with pipelined operands
JP2816248B2 (ja) データプロセッサ
JPH09311786A (ja) データ処理装置
JP3414209B2 (ja) プロセッサ
USRE32493E (en) Data processing unit with pipelined operands
CN107851013B (zh) 数据处理装置和方法
KR100618247B1 (ko) 코드크기의축소화를지원하는정수복원형프로세서
JPH0810428B2 (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
JP3412462B2 (ja) プロセッサ
US20070101101A1 (en) Microprocessor
US20020116599A1 (en) Data processing apparatus
JP3670801B2 (ja) プロセッサ
JP3451921B2 (ja) プロセッサ
JP2004005733A (ja) Vliwプロセッサ
JP3472504B2 (ja) 命令解読方法、命令解読装置及びデータ処理装置
EP1113356B1 (en) Method and apparatus for reducing the size of code in a processor with an exposed pipeline
JP2004005738A5 (ja)

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050303

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050415

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130422

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130422

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 9

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term