JP2010536089A - エイリアスアドレス指定を用いる可変長命令コード化の実装 - Google Patents

エイリアスアドレス指定を用いる可変長命令コード化の実装 Download PDF

Info

Publication number
JP2010536089A
JP2010536089A JP2010519909A JP2010519909A JP2010536089A JP 2010536089 A JP2010536089 A JP 2010536089A JP 2010519909 A JP2010519909 A JP 2010519909A JP 2010519909 A JP2010519909 A JP 2010519909A JP 2010536089 A JP2010536089 A JP 2010536089A
Authority
JP
Japan
Prior art keywords
instruction
address space
mode
address
length
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
JP2010519909A
Other languages
English (en)
Other versions
JP5329541B2 (ja
Inventor
アビジート ギリ,
ラジブ ナディグ,
Original Assignee
アナログ デバイシス, インコーポレイテッド
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 アナログ デバイシス, インコーポレイテッド filed Critical アナログ デバイシス, インコーポレイテッド
Publication of JP2010536089A publication Critical patent/JP2010536089A/ja
Application granted granted Critical
Publication of JP5329541B2 publication Critical patent/JP5329541B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3802Instruction prefetching

Landscapes

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

Abstract

デジタルプロセッサおよび動作の方法は、エイリアスアドレス空間を利用し、レガシープロセッサ上で可変長命令コード化を実装する。方法は、メモリにコードシーケンスの命令を格納することと、コードシーケンスの命令アドレスを生成することと、命令アドレスにおける、第1のアドレス空間と第2のアドレス空間との間の移行に応答して、第1の動作モードと第2の動作モードとを自動的に切り替えることであって、第1のアドレス空間および第2のアドレス空間におけるアドレスは、共通のメモリ空間にアクセスする、ことと、第1の動作モードにおいて、第1のアドレス空間において命令にアクセスすることと、第2の動作モードにおいて、第2のアドレス空間において命令にアクセスすることと、コードシーケンスのアクセスされた命令を実行する、こととを包含する。第1および第2の動作モードにおいて、異なる命令長の命令が利用され得る。

Description

(発明の分野)
本発明は、レガシープロセッサ上の可変長命令コード化に関し、より詳細には、自動モード切替えを実装するためにエイリアスアドレス空間を利用する可変長命令コード化に関する。
(発明の背景)
最新の埋込み型プロセッサは、圧縮したコードサイズを達成するために、プロセッサの命令セットの可変長命令コード化を使用する。レガシープロセッサの存在に従って、2つのアプローチが取られた。
コードサイズが重要な設計基準であると考えられる、新しく設計された命令セットに対して、混合サイズのコード化が利用され得る。この場合、短い命令および長い命令が同じコード化空間を共用する。その結果、異なるサイズの命令をデコードし実行するために、モードスイッチは必要ない。
コードサイズ減少が行われる前に利用される命令セットに関して、コード化空間は既にぎっしり詰まり過ぎていいて、新演算コードが可能ではない場合がある。最初から命令セットを再設計するよりはむしろ、通常、プロセッサが新しく導入された命令をデコードし実行するような新動作モードが作成される。
第2の場合に関して、プロセッサが新命令タイプをデコードし実行し得る前に、プロセッサは新モードに入ることが必要である。通常、レガシーモードから新モードへのこのモード変更は、指定された構成レジスタにおいてモードビットを設定または再設定することによって達成される。このアプローチは欠点を有する。モードビットは、プロセッサが新命令をデコードし実行することを開始する前に設定されなければならない。レガシーモードでの命令は、新モードに切り替えるためにビットを設定しなければならず、逆もまた同様である。このことは、任意のレガシーコードモジュールが再使用される場合、それらのモジュールはこのモード変更を達成するために修正されなければならないことを意味する。このことは、例えば事前コンパイルのライブラリモジュールを用いるとき、実際上の制限を有し得る。モードビットはまた、追加のモード変更命令を実行するのに必要である周期の外に、コードサイズの点から特定のオーバヘッドも伴う。さらに、モードが変更されるたびに、パイプラインプロセッサは、異なるモードから命令をデコードすることを開始する前に、パイプラインがドレーンすることを可能にしなければならない。このことは、モードが頻繁に切り替えられる場合、性能に影響を与え得る。
従って、レガシープロセッサにおける可変長命令コード化のための改善された方法および装置に対するニーズがある。
(発明の概要)
本発明の第1の局面従って、メモリと、プログラムシーケンサと、実行ユニットとを含むデジタルプロセッサを動作させる方法が提供される。方法は、メモリにコードシーケンスの命令を格納することと、コードシーケンスの命令アドレスを生成することと、命令アドレスにおける、第1のアドレス空間と第2のアドレス空間との間の移行に応答して、第1の動作モードと第2の動作モードとを自動的に切り替えることであって、第1のアドレス空間および第2のアドレス空間におけるアドレスは、共通のメモリ空間にアクセスする、ことと、第1の動作モードにおいて、第1のアドレス空間において命令にアクセスすることと、第2の動作モードにおいて、第2のアドレス空間において命令にアクセスすることと、コードシーケンスのアクセスされた命令を実行する、こととを包含する。
第1の動作モードおよび第2の動作モードは、同じかまたは異なる命令長の命令を利用し得る。特に、第1の動作モードは1つ以上の命令長を利用し得、第2の動作モードは1つ以上の命令長を利用し得る。第1のモードおよび第2のモードにおける命令長は、任意の組み合わせにおいて同じであり得るかまたは異なり得る。一部の実施形態において、第1のモードは第1の命令長の命令を実行するように構成され、第2のモードは、第1の命令長、第2の命令長および第3の命令長の命令を実行するように構成される。
本発明の第2の局面に従って、デジタルプロセッサ装置は、コードシーケンスの命令を格納するように構成されたメモリと、コードシーケンスの命令アドレスを生成し、命令アドレスにおける、第1のアドレス空間と第2のアドレス空間との間の移行に応答して、第1の動作モードと第2の動作モードとを自動的に切り替えるように構成されたプログラムシーケンサであって、第1のアドレス空間および第2のアドレス空間におけるアドレスは共通のメモリ空間にアクセスし、第1の動作モードにおいて、命令は第1のアドレス空間においてアクセスされ、第2の動作モードにおいて、命令は第2のアドレス空間においてアクセスされる、プログラムシーケンサと、コードシーケンスのアクセスされた命令を実行するように構成された実行ユニットとを備えている。
本発明のよりよい理解のために添付の図面に参照がなされ、該添付の図面は本明細書に参考として援用される。
図1は、本発明の実施形態に従うデジタルプロセッサ装置の概略ブロック図である。 図2は、共通の物理メモリ空間にアクセスする、第1のアドレス空間および第2のアドレス空間を例示する概略図である。 図3は、本発明の実施形態に従う命令アドレス指定を例示する概略図である。 図4は、仮想メモリを例示する概略図である。 図5は、本発明の実施形態に従うプロセッサ動作の方法を例示するフロー図である。 図6は、本発明の実施形態に従う命令整列バッファを例示する概略ブロック図である。 図7は、本発明の実施形態に従う、レガシーモードおよびビザモードにおけるメモリアクセスを例示する概略図である。 図8は、本発明の実施形態に従う命令整列を例示する概略図である。
(詳細な説明)
本発明は、その適用において、以下の説明に述べられるかまたは図面に例示される構造の詳細および構成要素の配置に限定されない。本発明は、他の実施形態が可能であり、様々な方法で実施されるかまたは実行されることが可能である。また、本明細書において用いられる語法および術語は、説明の目的のためであり、限定することとして考えられるべきではない。「含む(including)」、「備えている、包含する(comprising)」、または「有する(having)」、「含んでいる(containing)」、「伴う(involving)」、および本明細書におけるこれらの変形を用いることは、以下に記載される項目および追加の項目の外にそれらの項目の均等物を包含する(encompass)ことが意図される。
本発明の実施形態に従うデジタルプロセッサ10の概略ブロック図が、図1に示される。デジタルプロセッサ装置10は、コアプロセッサ11とメモリ14とを含む。プログラムシーケンサ12は、アプリケーションプログラムを実行するための一連の命令アドレスを生成する。プログラムフローは、順次アドレスにアクセスし得るが、典型的には、非順次プログラムフローを生成する、ループ、サブルーチン、ジャンプおよび/または割込みなどの1つ以上のプログラム構造を含む。命令アドレスはプログラムシーケンサ12によってアドレス翻訳ユニット16に供給され、アドレス翻訳ユニット16は、論理命令アドレスを物理命令にアクセスするための物理アドレスに変換する。上記のように、エイリアスアドレス空間は自動モード切替えを実行するように用いられ得る。一部の実施形態において、ノーマルワードアドレス空間およびショートワードアドレス空間は、モードを区別するために用いられる。他の実施形態において、仮想アドレス空間の種々の仮想ページは、モードを区別するために用いられる。
物理アドレスはメモリ14に提供され、メモリ14は命令整列バッファ20に命令を戻す。以下に論議されるように、メモリ14は1クロック周期当り2つ以上の命令を戻し得、命令整列バッファ20は実行のための正しい命令を選択する。IABコントローラ22は、以下に説明されるように、命令整列バッファ20を制御する。デコーダ30は、命令をデコードし、現在の命令を実行する実行ユニット32に制御信号を提供する。図1の実施形態において、コアプロセッサ11は、プログラムシーケンサ12と、アドレス翻訳ユニット16と、命令整列バッファ20と、IABコントローラ22と、デコーダ30と、実行ユニット32とを含む。命令が必要とするオペランドは、別にアクセスされる。
図1に示されるように、プログラムシーケンサ12は、IABコントローラ22およびデコード30にMode信号を供給する。第1の動作モードおよび第2の動作モードは、デジタルプロセッサ装置10によって実行され得る異なる命令セットに対応する。第1の動作モードおよび第2の動作モードは、同じ命令長または異なる命令長の命令を利用し得る。特に、第1のオペレーティングモードは1つ以上の命令長を利用し得、第2のオペレーティングモードは1つ以上の命令長を利用し得る。第1のモードおよび第2のモードにおける命令長は、任意の組み合わせにおいて同じかまたは異なり得る。一部の実施形態において、第1のモードは、第1の命令長の命令を実行するように構成され、第2のモードは、第1の命令長、第2の命令長、および第3の命令長の命令を実行するように構成される。これらの実施形態において、第2の命令長および第3の命令長は第1の命令長より短い。
一部の実施形態において、「レガシー」モードとも呼ばれる第1のモードは既存の命令セットに対応し、「ビザ(visa)」モードと呼ばれる第2のモードは新命令セットに対抗する。新命令セットは、新命令の外に既存の命令セットの命令を含み得る。例えば、少なくとも一部の新命令は、コードサイズを減少させるために既存の命令よりも短い命令を有し得る。
デコーダ30は、各命令の長さを決定し、IABコントローラ22およびプログラムシーケンサ12にInstruction Length信号を提供するように構成される。実行ユニット32は、プログラムシーケンサ12に分岐アドレスを供給するように構成される。以下に論議されるように、成立した分岐(taken branch)はモード切替えをトリガし得る。
図1の実施形態において、第1のモードは48ビットの固定命令長を利用する。第2のモードは、48ビット命令と、32ビット命令と、16ビット命令とを含む可変長命令を利用する。プログラムシーケンサ12は、実行されている現在の命令のアドレスに基づいて、第1のモードおよび第2のモードに、そして第1のモードと第2のモードを自動的に切り替える。本発明の実施形態に従って、エイリアスアドレスは、第1のモードと第2のモードを区別するために用いられる。
メモリ14のエイリアスアドレス指定を例示する概略図は、図2に示される。図2において、物理メモリ14は、各2メガビットのブロック70および72に分割された4メガビットの容量を有する。メモリ14は、第1のアドレス空間74または第2のアドレス空間76を介してアクセスされ得る。この実施形態において、第1のアドレス空間74は「ノーマルワード」アドレス空間と呼ばれ、第2のアドレス空間76は「ショートワード」アドレス空間と呼ばれる。ノーマルワードアドレス指定において、48ビットワードは、0x0002 0000から0x0002 AAAAまでの範囲および0x0003 0000から0x0003 AAAAまでの範囲におけるアドレスおいてメモリ14から読み取られる。ショートワードアドレス指定において、16ビットワードは、0x0004 0000から0x0007 FFFFまでの範囲におけるアドレスおいてメモリ14から読み取られる。ショートワードアドレス指定において、2つ以上、典型的には3つの16ビットワードがメモリ14から読みとられ得る。図2に示されるように、第1のアドレス空間74および第2のアドレス空間76は、異なるアドレス範囲を用いるが、共通の物理メモリ空間にアクセスする。
図2の実施形態において、第1のアドレス空間におけるアドレスおよび第2のアドレス空間におけるアドレスは、物理メモリアドレスの同じ範囲にアクセスする。他の実施形態において、第1のアドレス空間におけるアドレスおよび第2の空間におけるアドレスは、物理メモリアドレスの、異なるがオーバラップする範囲にアクセスする。従って、第1のアドレス空間は、第2のアドレス空間より大きいかまたは小さいかのいずれかであり得る。しかしながら、第1のアドレス空間および第2のアドレス空間の少なくとも一部分は、同じ物理メモリ空間に対応する。第2のアドレス空間は、第1のアドレス空間に対してエイリアスアドレス空間として、またはその逆として、時々既知である。
本発明の実施形態に従うエイリアスアドレス指定を用いる、レガシーコード化およびビザコード化を示す概略図が、図3に示される。図2のブロック72は、図3に示される。アプリケーションプログラムのためのコード80は、物理メモリ14の指定されたアドレス空間に格納され得る。コード80は、レガシーコードセグメント82および84の命令と、ビザコードセグメント86および88の命令とを含む。示されるようにコードセグメント82、84、86および88は、物理メモリ14の、異なるが連続した領域を占有する。レガシーコードセグメント82および84はノーマルワードアドレス空間におけるアドレスを用いてアクセスされ、ビザコードセグメント86および88はショートワードアドレス空間におけるアドレスを用いてアクセスされる。その結果、プログラムシーケンサ12は、現在の命令アドレスがノーマルワードアドレス空間にあるか、またはショートワードアドレス空間にあるかどうかに従って動作モードを決定し得る。
仮想アドレス指定を例示する概略図は、図4に示される。物理アドレス空間100は、物理ページ102、104、106などを含む。コアプロセッサ110は、仮想アドレス空間120にアクセスすることによって動作し、仮想アドレス空間120は、典型的には物理アドレス空間100より大きい。仮想アドレス空間120は、仮想ページ130、131、132、133、134、135、136などを含み得る。コアプロセッサ110が仮想アドレス空間120における位置にアクセスするとき、仮想アドレスはアドレス翻訳ユニット16(図1)によって物理アドレスに変換され、対応する物理メモリ位置がアクセスされる。一部の場合において、必要とされるデータは、ディスク記憶装置などの低レベルメモリにおいてアクセスされ、物理メモリに転送される。仮想ページと物理ページとの間のマッピングは、ページテーブルにおいて維持される。ページテーブルがおおよそ構成された後に、図4の例において、仮想ページ131は物理ページ102を指し、仮想ページ133および136は物理ページ104を指し、仮想ページ135は物理ページ106を指す。示されるように、2つ以上の仮想ページが同じ物理ページを指し得る。
本発明の実施形態に従って、コードシーケンスの命令は、物理ページ104などの物理メモリの領域に格納され得る。コアプロセッサ110は、仮想アドレスとしてコードシーケンスの命令アドレスを生成する。第1の動作モードに対応するコードシーケンスの仮想アドレスは、仮想ページ133にあり得、第2の動作モードに対応するコードシーケンスの仮想アドレスは、仮想ページ136にあり得る。たとえば、仮想ページ133における命令は同じ命令長を有し得、仮想ページ136における命令は混合命令長を有し得る。コードシーケンスが仮想ページ133における命令アドレスから仮想ページ136における命令アドレスに分岐するとき、コアプロセッサ110は、分岐目標のアドレス空間における変化がもしあれば、その変化を検出し、第1の動作モードから第2の動作モードに自動的に切り替える。同様に、仮想ページ136におけるコードシーケンスが仮想ページ133における命令アドレスに分岐するとき、コアプロセッサ110は、分岐目標のアドレス空間における変化がもしあれば、その変化を検出し、第2の動作モードから第1の動作モードに自動的に切り替える。第1および第2の動作モードにおいて、命令は、異なる命令長のために、異なる仕方でアクセスされ得る。
本発明の実施形態に従うデジタルプロセッサ装置を動作する方法のフローチャートが、図5に示される。ステップ200において、コードシーケンスの命令は、図1に示されるメモリ14などのメモリに格納される。第1のオペレーティングモードの命令および第2のオペレーティングモードの命令は、物理メモリ14の連続領域に格納され得る。コードシーケンスが実行のために呼ばれるとき、命令アドレスがステップ202において生成される。
シーケンサが、リセット時、所定のモードで動作するように初期設定されるべきであることは明らかである。プロセッサは通常、後方互換性があるように設計されるので、この実施形態において、シーケンサはリセット時、レガシー動作モードで初期設定される。
ステップ204において、次の命令アドレスが第1のアドレス空間から第2のアドレス空間への移行を表すかどうかについて決定がなされる。次の命令アドレスが第1のアドレス空間から第2のアドレス空間への移行を表す場合、プログラムシーケンサ12(図1)は、ステップ206において第2の動作モードに自動的に切り替え、ステップ220に進む。次の命令アドレスが第1のアドレス空間から第2のアドレス空間への移行を表さない場合、次の命令アドレスが第2のアドレス空間から第1のアドレス空間への移行を表すかどうか、ステップ208において決定がなされる。次の命令アドレスが第2のアドレス空間から第1のアドレス空間への移行を表す場合、プログラムシーケンサ12は、ステップ210において第1の動作モードに自動的に切り替え、ステップ220に進む。次の命令アドレスが第2のアドレス空間から第1のアドレス空間への移行を表さない場合、プロセスはモード切替えなしにステップ220に進む。アドレススペース間の移行は、アドレス空間の間に分岐する分岐命令によって表示され得る。
ステップ220において、プログラムシーケンサ12は、適切な動作モードを用いて次の命令をフェッチし、実行のために実行ユニットに命令をディスパッチする。プロセスは次いでステップ202に戻り、次の命令アドレスを生成する。
上記の実施形態において、第1の動作モードすなわちレガシー動作モードは、48ビットに固定された第1の命令長の命令を実行するように構成され、第2の動作モードすなわちビザ動作モードは、48ビット命令、32ビット命令、および16ビット命令を含む可変の命令長を有する命令を実行するよう構成される。メモリ14は16ビットワードの4カラムとして編成され得る。レガシーモードにおいて、48ビット命令は各クロック周期でフェッチされ、デコードおよび実行のためにコアプロセッサ11に供給される。メモリ編成の理由で、メモリ14の種々の行に格納される48ビットの命令を整列するために命令整列バッファ20が用いられる。すべての命令は48ビットであるので、命令長情報は必要ではなく、プログラムカウンタは各クロック周期で48ビットに対応する値だけ増加させられる。
ビザモードにおいて、48ビット、32ビットおよび16ビットの命令は、メモリ14において混合させられる。混合した命令は、高コード密度を達成するために、メモリ14の連続位置に格納される。コードシーケンスを実行するとき、次の命令の命令長は既知ではない。従って図1を参照すると、命令がデコーダ30によって部分的にデコードされるとき、命令長が決定され、命令長情報がIABコントローラ22およびプログラムシーケンサ12に提供される。命令長情報は、デコーダ30に提供される次の命令の整列を制御するためにIABコントローラ22によって用いられる。命令長情報は、現在の命令のデコード長に従って、1つ、2つまたは3つの16ビットワードに対応する値によってプログラムカウンタを増加させるために、プログラムシーケンサ12によって用いられる。
次の命令長が既知ではないので、最大長の命令に対応する若干数のワードが、各クロック周期でメモリ14からフェッチされる。上記の例において、3つの16ビットワードは、ビザモードにおいて各クロック周期でメモリ14からフェッチされる。命令整列バッファ20は、各クロック周期で命令を整列させるためにデコーダ30からの命令長情報を用いる。次の命令長が既知ではないので、3つの16ビットワードが、各クロック周期で命令整列バッファ20によってデコーダ30に提供される。
命令整列バッファ20の実施形態のブロック図は、図6に示される。バッファ300は、5つの16ビットワードの容量を有し、16ビット位置の310と、311と、312と、313と、314とを含む。mux(マルチプレクサ)320は、バッファ300の各16ビット位置にデータを供給する。バッファ300への入力は、メモリから、バッファ300の出力から、または他の入力源からであり得る。1つの16ビット位置の出力は、異なる16ビット位置に書き込まれ得、バッファ300における命令を効果的にシフトさせ得る。
第1の動作モードすなわちレガシー動作モードにおいて、3つの16ビットワードが、メモリから読み取られ、各クロック周期でデコーダ30に供給される。各命令がレガシーモードにおいて48ビットであるので、命令整列は必要ない。
第2の動作モードすなわちビザ動作モードにおいて、3つの16ビットワードが、メモリから読み取られ、各クロック周期でバッファ300に書き込まれる。メモリから読み取られた48ビットは、任意のクロック周期において命令長の混合を含み得る。3つの16ビットワードの内容は既知ではないので、48ビットがデコーダ30に供給される。部分的なデコードの後に、命令長は、指定の命令コード化に基づいて決定される。バッファ300がメモリから読み取られた3つの新16ビットワードを収容し得ない場合、フェッチ動作は遅らされる。
レガシーモードにおける48ビット動作命令を含むメモリブロック400は、図7に示される。この実施形態において、メモリブロック400は、16ビットワードの4つのカラムを含む。ビザモードにおける混合長動作命令を含むメモリブロック410もまた、図7に示される。この実施形態において、高、中および低のオーダー16ビットワードが、レガシーモードおよびビザモードにおいてそれぞれに配置される(異なるローテーション)。命令は、命令長信号に応答して、図8に示されるように、バッファ300に配置され、バッファ300においてシフトされるメモリブロック410からフェッチされる。逐次的クロック周期上のバッファ300の内容は、図8に示される。混合長命令は、逐次的クロック周期上で実行される。
命令が48ビット命令としてデコードされる場合、命令の3つの16ビットワードは、バッファ300の位置312、313および314から削除される。次のクロック周期上のメモリから読み取られた3つの16ビットワードは、バッファ300の高オーダー位置312、313および314に書き込まれる(図8において周期nおよびn+1を参照されたい)。
命令が32ビット命令としてデコードされる場合、命令の2つの16ビットワードは、バッファ300の位置313および314から削除され、バッファ300における残りの16ビットワードは2位置だけ左にシフトされる(図8において周期n+1およびn+2を参照されたい)。
命令が16ビット命令としてデコードされる場合、バッファ300の高オーダー位置314における16ビットワードが削除され、バッファ300における残りの16ビットワードは1位置だけ左にシフトされる(図8の周期n+4およびn+5を参照されたい)。従って、命令整列バッファ20の動作は、現在の命令のデコードされた命令長に従う。
バッファ300がメモリからフェッチされた3つの16ビットワードを収容し得ないとき、命令のフェッチは、どの周期上においても減速されるかまたは停止される。例は、図8に示される。周期n+6において、バッファ300は、16ビットワード8H、8Mおよび8Lを収容することが出来なく(図7を参照されたい)、フェッチは減速される。
アセンブラは、レガシーモードまたはビザモードで動作するように構成され得る。ビザモードで動作するアセンブラを用いてアセンブルされたソースコードは、様々な長さの命令の混合を有し得る2進コードを生成する。すべての命令は、メモリ14のショートワードアドレス空間に配置される。レガシーモードでアセンブルされた同じコードは、48ビットの均一長の命令を有する2進コードを生成する。そのようにアセンブリされた全体のコードは、メモリ14のノーマルワードアドレス空間に配置される。2つのタイプのコードが一緒にリンクされ得る。実行可能なファイルは、ビザモードでアセンブルされた命令の外にレガシーモードでアセンブリされた命令を含み、レガシーモードで作成されたコードセクションへの分岐目標はノーマルワードアドレスであり、ビザモードで作成されたコードセクションへの分岐目標はショートワードアドレスであるように、分岐目標基準が分解される。前に言及されたように、プロセッサは、リセット時、レガシーモードに初期設定される。従って、リセット事象の直後にプロセッサによって実行されるリセットISR(割込みサブルーチン(Interrupt SubRoutine))は、レガシーモードでアセンブリされる。2つのアドレス空間は、プログラムシーケンサがコードのタイプを検出し、動的に動作モードを切り替え、種々の動作モードにおいて命令を正しくデコードすることを可能にする。
このようにして本発明の少なくとも1つの実施形態のいくつかの局面を説明したが、様々な変更、修正および改良が当業者に容易に思いつくことは理解されるべきである。そのような変更、修正および改良は、本開示の一部であることが意図され、本発明の精神および範囲内であることが意図される。従って、上記の説明および図面は、単に例示である。

Claims (29)

  1. メモリと、プログラムシーケンサと、実行ユニットとを含むデジタルプロセッサを動作させる方法であって、
    該メモリにコードシーケンスの命令を格納することと、
    該コードシーケンスの命令アドレスを生成することと、
    命令アドレスにおける、第1のアドレス空間と第2のアドレス空間との間の移行に応答して、第1の動作モードと第2の動作モードとを自動的に切り替えることであって、該第1のアドレス空間および第2のアドレス空間におけるアドレスは共通のメモリ空間にアクセスする、ことと、
    該第1の動作モードにおいて、該第1のアドレス空間において命令にアクセスすることと、
    該第2の動作モードにおいて、該第2のアドレス空間において命令にアクセスすることと、
    該コードシーケンスの該アクセスされた命令を実行することと
    を包含する、方法。
  2. 自動的に切り替えることは、命令アドレスにおける、前記第1のアドレス空間から前記第2のアドレス空間への移行に応答して、前記第1のモードから前記第2のモードに切り替えることと、命令アドレスにおける、該第2のアドレス空間から該第1のアドレス空間への移行に応答して、該第2のモードから該第1のモードに切り替えることとを包含する、請求項1に記載の方法。
  3. 前記第1のアドレス空間において命令にアクセスすることは、第1の命令長の命令にアクセスすることを包含し、前記第2のアドレス空間において命令にアクセスすることは、第2の命令長の命令にアクセスすることを包含する、請求項1に記載の方法。
  4. 前記第2のアドレス空間において命令にアクセスすることは、該第2のアドレス空間において前記第1の命令長の命令にアクセスすることをさらに包含する、請求項3に記載の方法。
  5. 前記第2のモードにおいて現在の命令長を決定することと、現在の命令長に基づいて次の命令を整列させることとをさらに包含する、請求項4に記載の方法。
  6. 命令を整列させることは、前記現在の命令長に応答して、命令整列バッファにおいて命令をシフトさせることを包含する、請求項5に記載の方法。
  7. 命令にアクセスすることは、各クロック周期で最長命令長に対応する若干数のビットにアクセスすることを包含する、請求項3に記載の方法。
  8. 前記第2のアドレス空間において命令にアクセスすることは、該第2のアドレス空間において前記第1の命令長の命令および第3の命令長の命令にアクセスすることをさらに包含する、請求項3に記載の方法。
  9. 前記第1の命令長は、前記第2の命令長および第3の命令長より大きい、請求項8に記載の方法。
  10. 自動的に切り替えることは、分岐命令の目標アドレスを検出することと、該分岐命令の該目標アドレスが前記第1のアドレス空間と前記第2のアドレス空間との間の移行を表すとき、前記第1のモードと前記第2のモードとを切り替えることとを包含する、請求項1に記載の方法。
  11. 前記第2のアドレス空間において命令にアクセスすることは、前記メモリの連続位置において混合命令長の命令にアクセスすることを包含する、請求項8に記載の方法。
  12. 前記第2のアドレス空間において命令にアクセスすることは、該第2のアドレス空間において第3の命令長の命令にアクセスすることをさらに包含する、請求項3に記載の方法。
  13. 前記第1の命令長は48ビットであり、前記第2の命令長は32ビットであり、前記第3の命令長は16ビットである、請求項8に記載の方法。
  14. 前記第1のアドレス空間はノーマルワードアドレス空間であり、前記第2のアドレス空間はショートワードアドレス空間である、請求項1に記載の方法。
  15. 前記第1のアドレス空間は仮想アドレス空間の第1の仮想ページであり、前記第2のアドレス空間は該仮想アドレス空間の第2の仮想ページである、請求項1に記載の方法。
  16. コードシーケンスの命令を格納するように構成されたメモリと、
    該コードシーケンスの命令アドレスを生成し、命令アドレスにおける、第1のアドレス空間と第2のアドレス空間との間の移行に応答して、第1の動作モードと第2の動作モードとを自動的に切り替えるように構成されたプログラムシーケンサであって、該第1のアドレス空間および該第2のアドレス空間におけるアドレスは共通のメモリ空間にアクセスし、該第1の動作モードにおいて、命令は該第1のアドレス空間においてアクセスされ、該第2の動作モードにおいて、命令は該第2のアドレス空間においてアクセスされる、プログラムシーケンサと、
    該コードシーケンスの該アクセスされた命令を実行するように構成された実行ユニットと
    を備えている、デジタルプロセッサ装置。
  17. 前記プログラムシーケンサは、命令アドレスにおける、前記第1のアドレス空間から前記第2のアドレス空間への移行に応答して、前記第1のモードから前記第2のモードに切り替えるように構成され、命令アドレスにおける、該第2のアドレス空間から該第1のアドレス空間への移行に応答して、該第2のモードから該第1のモードに切り替えるように構成される、請求項16に記載のデジタルプロセッサ装置。
  18. 前記プログラムシーケンサは、前記第1のアドレス空間において第1の命令長の命令にアクセスし、前記第2のアドレス空間において第2の命令長の命令にアクセスするように構成される、請求項16に記載のデジタルプロセッサ装置。
  19. 前記プログラムシーケンサは、前記第2のアドレス空間において前記第1の命令長の命令にアクセスするようにさらに構成される、請求項18に記載のデジタルプロセッサ装置。
  20. 前記プログラムシーケンサは、前記第2のアドレス空間において前記第1の命令長の命令および第3の命令長の命令にアクセスするようにさらに構成される、請求項18に記載のデジタルプロセッサ装置。
  21. 前記第1の命令長は、前記第2の命令長および前記第3の命令長より大きい、請求項20に記載のデジタルプロセッサ装置。
  22. 前記第1の命令長は48ビットであり、前記第2の命令長は32ビットであり、前記第3の命令長は16ビットである、請求項20に記載のデジタルプロセッサ装置。
  23. 前記プログラムシーケンサは、各クロック周期で最長命令長に対応するビット数をフェッチするように構成される、請求項18に記載のデジタルプロセッサ装置。
  24. 前記第2のモードにおいて現在の命令長を決定するデコーダと、該現在の命令長に応答して、次の命令を整列させる命令整列バッファとをさらに備えている、請求項18に記載のデジタルプロセッサ装置。
  25. 前記命令整列バッファは、前記現在の命令長に応答して、命令をシフトさせるように構成される、請求項24に記載のデジタルプロセッサ装置。
  26. 前記プログラムシーケンサは、分岐命令の目標アドレスを検出し、該分岐命令の該目標アドレスが前記第1のアドレス空間と前記第2のアドレス空間との間の移行を表すことを検出することに応答して、前記第1のモードと前記第2のモードとを切り替えるように構成される、請求項16に記載のデジタルプロセッサ装置。
  27. 前記第1のアドレス空間はノーマルワードアドレス空間であり、前記第2のアドレス空間はショートワードアドレス空間である、請求項16に記載のデジタルプロセッサ装置。
  28. 前記第1のアドレス空間は仮想アドレス空間の第1の仮想ページであり、前記第2のアドレス空間は該仮想アドレス空間の第2の仮想ページである、請求項16に記載のデジタルプロセッサ装置。
  29. メモリと、プログラムシーケンサと、実行ユニットとを含むデジタルプロセッサを動作させる方法であって、
    該メモリにコードシーケンスの命令を格納することと、
    該コードシーケンスの命令アドレスを生成することと、
    第1のアドレス空間と第2のアドレス空間との間の分岐に応答して、第1の動作モードと第2の動作モードとを自動的に切り替えることであって、該第1のアドレス空間および第2のアドレス空間におけるアドレスは共通のメモリ空間にアクセスする、ことと、
    該第1の動作モードにおいて、該第1のアドレス空間において第1の命令長の命令にアクセスすることと、
    該第2の動作モードにおいて、該第2のアドレス空間において該第1の命令長、第2の命令長および第3の命令長の命令にアクセスすることと、
    該コードシーケンスの該アクセスされた命令を実行することと
    を包含する、方法。
JP2010519909A 2007-08-08 2008-07-17 エイリアスアドレス指定を用いる可変長命令コード化の実装 Expired - Fee Related JP5329541B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/890,907 2007-08-08
US11/890,907 US7836285B2 (en) 2007-08-08 2007-08-08 Implementation of variable length instruction encoding using alias addressing
PCT/US2008/008725 WO2009020513A1 (en) 2007-08-08 2008-07-17 Implementation of variable length instruction encoding using alias addressing

Publications (2)

Publication Number Publication Date
JP2010536089A true JP2010536089A (ja) 2010-11-25
JP5329541B2 JP5329541B2 (ja) 2013-10-30

Family

ID=39940664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010519909A Expired - Fee Related JP5329541B2 (ja) 2007-08-08 2008-07-17 エイリアスアドレス指定を用いる可変長命令コード化の実装

Country Status (7)

Country Link
US (2) US7836285B2 (ja)
EP (1) EP2186001B1 (ja)
JP (1) JP5329541B2 (ja)
KR (1) KR101503554B1 (ja)
CN (1) CN101849222B (ja)
TW (2) TWI520059B (ja)
WO (1) WO2009020513A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018522335A (ja) * 2015-07-27 2018-08-09 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー アルゴリズム整合、機能無効化、または性能制限による後方互換性

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101449194B (zh) * 2006-06-20 2012-06-13 数据逻辑扫描公司 具有多个像场的成像扫描仪
US20100312991A1 (en) * 2008-05-08 2010-12-09 Mips Technologies, Inc. Microprocessor with Compact Instruction Set Architecture
CN102077195A (zh) * 2008-05-08 2011-05-25 Mips技术公司 具有紧凑指令集架构的微处理器
US9274796B2 (en) 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US8335910B2 (en) * 2009-05-19 2012-12-18 Via Technologies, Inc. Early release of cache data with start/end marks when instructions are only partially present
US8533343B1 (en) 2011-01-13 2013-09-10 Google Inc. Virtual network pairs
US8874888B1 (en) 2011-01-13 2014-10-28 Google Inc. Managed boot in a cloud system
US9135037B1 (en) 2011-01-13 2015-09-15 Google Inc. Virtual network protocol
US20120185688A1 (en) * 2011-01-13 2012-07-19 Google Inc. Processor mode locking
US8812586B1 (en) 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US8261295B1 (en) 2011-03-16 2012-09-04 Google Inc. High-level language for specifying configurations of cloud-based deployments
US9237087B1 (en) 2011-03-16 2016-01-12 Google Inc. Virtual machine name resolution
US9063818B1 (en) 2011-03-16 2015-06-23 Google Inc. Automated software updating based on prior activity
US8533796B1 (en) 2011-03-16 2013-09-10 Google Inc. Providing application programs with access to secured resources
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9075979B1 (en) 2011-08-11 2015-07-07 Google Inc. Authentication based on proximity to mobile device
US8966198B1 (en) 2011-09-01 2015-02-24 Google Inc. Providing snapshots of virtual storage devices
US9069616B2 (en) 2011-09-23 2015-06-30 Google Inc. Bandwidth throttling of virtual disks
US8958293B1 (en) 2011-12-06 2015-02-17 Google Inc. Transparent load-balancing for cloud computing services
US8800009B1 (en) 2011-12-30 2014-08-05 Google Inc. Virtual machine service access
US8983860B1 (en) 2012-01-30 2015-03-17 Google Inc. Advertising auction system
US9672052B1 (en) 2012-02-16 2017-06-06 Google Inc. Secure inter-process communication
US8996887B2 (en) 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US8677449B1 (en) 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
US9069806B2 (en) 2012-03-27 2015-06-30 Google Inc. Virtual block devices
US9430255B1 (en) 2013-03-15 2016-08-30 Google Inc. Updating virtual machine generated metadata to a distribution service for sharing and backup

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6273333A (ja) * 1985-09-26 1987-04-04 Nec Corp エミュレーション制御装置
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
JPH08339325A (ja) * 1995-06-07 1996-12-24 Internatl Business Mach Corp <Ibm> 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
JPH1173315A (ja) * 1997-08-28 1999-03-16 Saibaa Lab:Kk 可変長命令プロセサ
JP2000010863A (ja) * 1998-06-24 2000-01-14 Sony Computer Entertainment Inc 情報処理装置および方法、並びに提供媒体
US6571330B1 (en) * 2000-01-14 2003-05-27 Advanced Micro Devices, Inc. Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor
US7047394B1 (en) * 1999-01-28 2006-05-16 Ati International Srl Computer for execution of RISC and CISC instruction sets
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115500A (en) * 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5826074A (en) * 1996-11-22 1998-10-20 S3 Incorporated Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US5881258A (en) * 1997-03-31 1999-03-09 Sun Microsystems, Inc. Hardware compatibility circuit for a new processor architecture
US6189090B1 (en) * 1997-09-17 2001-02-13 Sony Corporation Digital signal processor with variable width instructions
US6167459A (en) * 1998-10-07 2000-12-26 International Business Machines Corporation System for reassigning alias addresses to an input/output device
US6820189B1 (en) * 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US7171543B1 (en) * 2000-03-28 2007-01-30 Intel Corp. Method and apparatus for executing a 32-bit application by confining the application to a 32-bit address space subset in a 64-bit processor
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
JP4073721B2 (ja) * 2002-06-28 2008-04-09 株式会社ルネサステクノロジ データ処理装置
US7149873B2 (en) * 2003-10-24 2006-12-12 Hewlett-Packard Development Company, L.P. Methods and apparatus for a dual address space operating system
US7421568B2 (en) * 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
GB2435116B (en) 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6273333A (ja) * 1985-09-26 1987-04-04 Nec Corp エミュレーション制御装置
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
JPH08339325A (ja) * 1995-06-07 1996-12-24 Internatl Business Mach Corp <Ibm> 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
JPH1173315A (ja) * 1997-08-28 1999-03-16 Saibaa Lab:Kk 可変長命令プロセサ
JP2000010863A (ja) * 1998-06-24 2000-01-14 Sony Computer Entertainment Inc 情報処理装置および方法、並びに提供媒体
US7047394B1 (en) * 1999-01-28 2006-05-16 Ati International Srl Computer for execution of RISC and CISC instruction sets
US6571330B1 (en) * 2000-01-14 2003-05-27 Advanced Micro Devices, Inc. Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018522335A (ja) * 2015-07-27 2018-08-09 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー アルゴリズム整合、機能無効化、または性能制限による後方互換性

Also Published As

Publication number Publication date
TWI451329B (zh) 2014-09-01
US20110078423A1 (en) 2011-03-31
KR20100061463A (ko) 2010-06-07
US7836285B2 (en) 2010-11-16
EP2186001A1 (en) 2010-05-19
JP5329541B2 (ja) 2013-10-30
WO2009020513A1 (en) 2009-02-12
CN101849222A (zh) 2010-09-29
CN101849222B (zh) 2014-01-29
TW200907796A (en) 2009-02-16
EP2186001B1 (en) 2018-06-13
US8332621B2 (en) 2012-12-11
TWI520059B (zh) 2016-02-01
TW201445442A (zh) 2014-12-01
KR101503554B1 (ko) 2015-03-17
US20090043990A1 (en) 2009-02-12

Similar Documents

Publication Publication Date Title
JP5329541B2 (ja) エイリアスアドレス指定を用いる可変長命令コード化の実装
EP2018609B1 (en) Pre-decoding variable length instructions
JP6591978B2 (ja) 命令セット変換システム及び方法
US6430674B1 (en) Processor executing plural instruction sets (ISA&#39;s) with ability to have plural ISA&#39;s in different pipeline stages at same time
US6275927B2 (en) Compressing variable-length instruction prefix bytes
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
EP0138419A2 (en) Central processing unit for a digital computer
JP2004506263A (ja) 拡張レジスタモードで拡張レジスタセットにアクセスするcpu
JPH04313121A (ja) インストラクションメモリ装置
KR20010050792A (ko) 2개의 서로 다른 고정 길이 명령 세트를 실행하기 위한프로세서 아키텍쳐
KR19980063936A (ko) 소규모의 하드웨어로 높은 적중률의 분기 예측을 하는 정보 처리 장치
US6145075A (en) Apparatus and method for executing a single-cycle exchange instruction to exchange contents of two locations in a register file
US6212621B1 (en) Method and system using tagged instructions to allow out-of-program-order instruction decoding
US6460116B1 (en) Using separate caches for variable and generated fixed-length instructions
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US5404471A (en) Method and apparatus for switching address generation modes in CPU having plural address generation modes
KR20030007480A (ko) 컴퓨터 시스템 및 컴퓨터 프로그램
CN108920188B (zh) 一种扩展寄存器堆的方法及装置
CN100356318C (zh) 用于指令对准的方法和设备
US20090300330A1 (en) Data processing method and system based on pipeline
JP3644892B2 (ja) 複数組の命令組を実行するためのデータ処理装置
CN114116007A (zh) 具有指令预取功能的微处理器
WO2001082059A2 (en) Method and apparatus to improve context switch times in a computing system
JPS617961A (ja) アドレス変換バツフア制御方式
KR19980083442A (ko) 분기예측회로

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130301

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130306

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130531

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130620

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130724

R150 Certificate of patent or registration of utility model

Ref document number: 5329541

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees