JP2004038404A - 圧縮コードを処理するマイクロコントローラ - Google Patents

圧縮コードを処理するマイクロコントローラ Download PDF

Info

Publication number
JP2004038404A
JP2004038404A JP2002192573A JP2002192573A JP2004038404A JP 2004038404 A JP2004038404 A JP 2004038404A JP 2002192573 A JP2002192573 A JP 2002192573A JP 2002192573 A JP2002192573 A JP 2002192573A JP 2004038404 A JP2004038404 A JP 2004038404A
Authority
JP
Japan
Prior art keywords
code
compression
compressed
address
information
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
JP2002192573A
Other languages
English (en)
Other versions
JP3749507B2 (ja
Inventor
Hiromichi Yamada
山田 弘道
Yuichi Abe
安部 雄一
Yasuhiro Nakatsuka
中塚 康弘
Takanaga Yamazaki
山崎 尊永
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.)
Renesas Technology Corp
Original Assignee
Renesas Technology 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 Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2002192573A priority Critical patent/JP3749507B2/ja
Priority to US10/611,315 priority patent/US7676651B2/en
Publication of JP2004038404A publication Critical patent/JP2004038404A/ja
Application granted granted Critical
Publication of JP3749507B2 publication Critical patent/JP3749507B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

【課題】マイコン等の組み込み機器に好適なコード圧縮技術を提供する。
【解決手段】プログラムのコードを可変長コードに変換した圧縮コードと、グループ化されたプログラムのコードについて、各グループの開始アドレスを特定するためのアドレス変換情報と、各グループごとに、グループに含まれる各圧縮コードのコード長を特定するための圧縮コードタイプ情報とをメモリに記憶し、CPUが出力するコードアドレスから対応する圧縮コードアドレスを直接計算できるように構成することで、マイコン等の組み込み機器に好適なコード圧縮が達成される。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、マイクロコントローラに係り、特に、メモリに記憶されている圧縮コードを処理するマイクロコントローラに関する。
【0002】
【従来の技術】
マイクロコントローラ(以下「マイコン」ともいう)は、家電製品、AV機器、携帯電話、自動車等の機器に組み込まれ、メモリに記憶されているプログラムコードにしたがって処理を行なうことで、それぞれの機器の制御を行なう装置である。
【0003】
マイコンは、機器に組み込まれて利用されるというその性質上、機器の制御を行なうために必要な性能を備え、かつ、安価であることが要求される。
【0004】
ところが、近年、マイコンが行なう処理は複雑化しており、処理に必要なプログラムの容量は増加している。このため、マイコンに占めるプログラムメモリの比率が高くなっており、この傾向は今後も続くと考えられている。一般に、プログラムメモリの容量が増えるとその分コストが上昇するため、安価なマイコンを提供するためには、プログラムメモリの容量をいかに抑えるかが重要な問題となっている。
【0005】
ところで、携帯情報端末等の汎用型の情報処理装置では、プログラムメモリの容量を抑えるために、プログラムコードを圧縮する技術が提案され、実装化も進んでいる。
【0006】
例えば、IBM社が提唱しているCodePackと呼ばれるコード圧縮技術は、元のコードを圧縮してプログラムメモリ等に格納する。このとき、圧縮率を高めるために、圧縮コードは出現頻度等に応じた可変長のビットパターンとしておく。そして、プログラムメモリ等からの読み出し時に、所定のブロック単位で伸長して、伸長後の元のコードをブロック単位でキャッシュメモリに格納するようにしている。
【0007】
圧縮コードは可変長のため、圧縮後の各コードのメモリアドレスは不規則になる。このため、圧縮コード中に自身のコード長に関する情報を含めるようにしておき、読み出し時には、この情報を元に、各圧縮コードのメモリアドレスを特定して、ブロックの先頭の圧縮コードから順番に伸長するようにしている。
【0008】
このコード圧縮技術は、ブロック単位で圧縮コードを伸長してキャッシュメモリに格納することから、キャッシュメモリのヒット率が高く、また、プログラムの平均的な実行性能を高くすることが重要とされる汎用の情報処理装置において特に有効と考えられる。
【0009】
【発明が解決しようとする課題】
しかしながら、従来提唱されているコード圧縮技術は、上述のように、キャッシュメモリの高いヒット率が期待でき、プログラムの平均的な実行性能を高くすることが重要な汎用の情報処理装置には適していても、マイコン等の組み込み機器には、必ずしも最適であるとはいえないと考えられる。
【0010】
これは以下のような理由による。すなわち、マイコン等の組込み機器では、一般に、プログラムのループ処理が少なく、キャッシュメモリのヒット率は、汎用の情報処理装置ほど高くはならない。このため、キャッシュメモリの書き換えが頻繁に発生することになる。キャッシュメモリの書き換えはブロック単位で行なわれることから、書き換えのたびに、目的のコードを含むブロックの伸長が行なわれる。このとき、目的コード以外のコードは、マイコン等の組込み機器では、必ずしも直後に使用されるとは限らないため、目的のコードを取得するためだけの余分な伸長処理となりかねず、コード伸張時のオーバヘッドが大きくなるからである。また、組み込み機器では、高いヒット率は期待できないことから、そもそも、キャッシュメモリを備えない場合もあるからである。さらに、マイコン等の組込み機器では、プログラムの平均的な実行性能よりも、制御周期内に決められた処理を確実に実行できるというリアルタイム性が重視されることが多いからである。
【0011】
したがって、マイコン等の組込み機器では、汎用型の情報処理装置に比べ、目的とする圧縮コードのアドレスをより高速に特定できることが重要となってくる。
【0012】
本発明の目的は、マイコン等の組み込み機器に好適なコード圧縮技術を提供することにある。
【0013】
【課題を解決するための手段】
上記課題を解決するため、本発明によれば、
プログラムにしたがって処理を行なうCPUを備えたマイクロコントローラであって、
プログラムのコードを可変長コードに変換した圧縮コードと、
グループ化されたプログラムのコードについて、各グループの開始アドレスを特定するためのアドレス変換情報と、
各グループごとに、グループに含まれる各圧縮コードのコード長を特定するための圧縮コードタイプ情報とを記憶するメモリと、
CPUが出力するコードアドレスから、参照すべきアドレス変換情報と圧縮コードタイプ情報とを特定し、特定されたアドレス変換情報と圧縮コードタイプ情報と用いて、対応する圧縮コードアドレスを求め、該当する圧縮コードを前記メモリから読み出す圧縮コード処理部と
を備えることを特徴とするマイクロコントローラが提供される。
【0014】
ここで、前記メモリは、圧縮コードを元のコードに伸張するための辞書情報をさらに記憶し、
前記圧縮コード処理部は、前記辞書情報を参照して、読み出した圧縮コードを元のコードに伸張することができる。
【作用】
プログラムのコードを可変長コードに変換した圧縮コードと、プログラムのコードをグループ化し、変換後の各グループの開始アドレスを特定するためのアドレス変換情報と、各グループごとに、変換後のグループに含まれる各圧縮コードのコード長を特定するための圧縮コードタイプ情報とをメモリに記憶し、CPUが出力するコードアドレスから対応する圧縮コードアドレスを直接計算できるように構成することで、マイコン等の組み込み機器に好適なコード圧縮が達成される。
【0015】
【発明の実施の形態】
本発明の実施の形態について図面を参照して説明する。
【0016】
図1は、本発明を適用したマイクロコントローラ(マイコン)の実施例の構成の要部を説明するためのブロック図である。
【0017】
マイコンは、プログラムを実行するCPU1と、プログラムをあらかじめ圧縮して記憶する領域を含むメモリ2と、CPU1からの命令フェッチまたはデータ読み出しの要求に対し、メモリ2から圧縮コードを読み出して元のコードに伸長し、これをCPU1に供給する圧縮コード伸長回路3とを備えて構成される。
【0018】
メモリ2は、プログラムのコードを1種以上のコード長の符号に変換した圧縮コードを記憶する圧縮コード領域23と、CPU1が出力するコードアドレスをこれに対応する圧縮コードアドレスに変換するためのアドレス変換情報および圧縮コードタイプ情報をそれぞれ記憶するアドレス変換情報領域21および圧縮コードタイプ情報領域22と、圧縮コードを元のコードに変換するための辞書を記憶する辞書領域24とを含んで構成されている。
【0019】
CPU1は、CPUアドレスバス1000にコードアドレスを出力し、CPUデータバス1001より伸長されたコードを読み込む。圧縮コード伸長回路3は、メモリバス3000にアドレスを出力してメモリ2をアクセスし、メモリデータバス3001より、アドレス変換情報、圧縮コードタイプ情報、圧縮コード、辞書を必要に応じて読み出し、CPUデータバス1001に伸長したコードを出力する。
【0020】
図2は、本発明の基本的な原理を示す第1の実施例における、圧縮コードのフォーマットを説明するための図である。ここでは、4種類のフォーマットの例で説明するが、本発明においては、圧縮コードの種類はこれに限定されるわけではない。また、圧縮する元のコードの単位を16ビットとして説明を行うが、本発明においてはこれに限定されるわけではない。現状、マイコンで処理される命令やデータのサイズとしては、8ビット、16ビット、32ビットが一般的であることから、本実施例における圧縮する元のコードの単位を16ビットとした。
【0021】
図2(a)は、コード長が4ビットのタイプ0フォーマットを示す。2進表記で0000から1111までの16種類の圧縮コードを定義でき、16ビットコードを4ビットへと25%に圧縮することができる。
【0022】
図2(b)は、コード長が8ビットのタイプ1フォーマットを示す。2進表記で00000000から11111111までの256種類の圧縮コードを定義でき、16ビットコードを8ビットへと50%に圧縮することができる。
【0023】
図2(c)は、コード長が10ビットのタイプ2フォーマットを示す。2進表記で0000000000から1111111111までの1024種類の圧縮コードを定義でき、16ビットコードを10ビットへと62.5%に圧縮することができる。
【0024】
図2(d)は、コード長が16ビットのタイプ3フォーマットを示す。このフォーマットは、タイプ0、1、2と異なり、圧縮前のコードをそのまま16ビットフィールドに持つ。このフォーマットではコードの圧縮は行われない。
【0025】
タイプ0、1、2のフォーマットの圧縮コードに対しては、これを元のコードに伸長するために辞書を参照することが必要である。
【0026】
圧縮率を最も高くするという目的のためには、プログラムごとにコードの出現頻度を調べ、出現頻度の高いものから、タイプ0、タイプ1、タイプ2、タイプ3の順に圧縮コードを定義するのが良い。しかしながら、タイプ3フォーマットは辞書を引用する必要がないため、他のタイプに比べて伸長を高速に行える。したがって、出現頻度が高いコードであっても、伸長を高速に行うために、タイプ3フォーマットに割り当てるということも考えられ、本発明においてはコードの出現頻度とタイプの割り当てについて、特に制限を設けるものではない。
【0027】
図3は、圧縮前のコードと圧縮コードとの対応を説明するための図である。図3(a)は、圧縮前のコードのメモリマップの一部を示す図である。図中、ブロックI、ブロックJ、ブロックKは、圧縮前コードのメモリマップを16ビット×16の256ビット(32バイト)単位に分割した領域の一部である。ブロックJの領域に示すa〜pは、それぞれ16ビットのコードで、ブロックの先頭からの順番を区別するためにアルファベット文字を割り当てたものであり、コードの値とは何ら関係は無い。また、本実施例では、1ブロックに含まれるコードの数を16として説明するが、本発明においては、この数を16に限定するものではない。ただし、後述するアドレス変換情報や圧縮コードタイプ情報のアドレス計算を容易にできるなどの理由のために、2のべき乗の数であるほうが望ましい。
【0028】
図3(b)は、ブロックI、ブロックJ、ブロックKに対応する圧縮コード領域23のメモリマップを示す。圧縮コードの各ブロックは、16ビット境界からコードが配置されている。ブロックJの領域については、圧縮コードa〜pの配置を示している。圧縮コードは、図2のフォーマットで説明したように、4ビット、8ビット、10ビット、16ビットのいずれかのサイズとなる。例えば、ブロックJの先頭の16ビットには圧縮コードa、b、cが収まっており、続く16ビットには圧縮コードdとeの一部が収まっている。このように、ブロックの先頭から圧縮コードを16個連続して配置するため、最後の圧縮コードpの後には隙間(コードが無い部分)が生じる場合がある。
【0029】
図3(a)圧縮前コードのアドレスと図3(b)圧縮コードのアドレスとの対応は、コード単位ではなく、ブロック単位で管理する。すなわち、圧縮コードの各ブロックの先頭アドレスを保持するようにする。図3では、圧縮前のブロックI、ブロックJ、ブロックKについて、それぞれの圧縮後のブロックの先頭のアドレスに変換される様子を示している。このブロック単位のアドレス変換情報(圧縮後のブロックの先頭アドレスを示す情報)は、図1に示したようにメモリ2上のアドレス変換情報領域21に記憶しておく。
【0030】
図4は、圧縮前コードのブロックとアドレス変換情報との対応を説明するための図である。ここで、圧縮の対象とするコードの容量を最大8メガバイトとして説明をする。図4(a)は、圧縮前のコード(最大8メガバイト)のメモリマップを示す。図3で説明したように、圧縮前コードの1ブロックには、16ビットコードが16個の32バイトが含まれるため、ブロックの数は最大で262144となる。
【0031】
図4(b)は、アドレス変換情報領域21のメモリマップを示す。アドレス変換情報は、1ブロックにつき32ビット(4バイト)の情報を持つものとする。アドレス変換情報領域21は、メモリ2上のアドレス変換情報ベースアドレスと呼ぶアドレスから、ブロックの順番にアドレス変換情報を連続して記憶するものとする。アドレス変換情報領域21は最大で、4バイト×262144の1メガバイトとなる。
【0032】
図5は、アドレス変換情報のメモリアドレスの計算方法を示す図である。すなわち、CPUアドレスから、参照すべきアドレス変換情報のアドレスを求めるための計算方法である。ここで、CPUアドレスは、CPU1が出力するコードアドレスである。CPU1は、圧縮前のコードアドレスをそのまま出力する。アドレス長は32ビットで、単位はバイトであるとし、最大で4ギガバイトのアドレス空間を指定することができる。
【0033】
本実施形態では、メモリ2上の任意の8メガバイト境界からはじまる8メガバイトの領域を、圧縮コード領域23として設定するするようにする。このため、CPUアドレスの10ビット目から続く18ビット(A22−A5フィールド)は、コードのブロック番号を示し、最後の5ビット(A4−A0フィールド)は、ブロック内のバイトアドレスを示すことになる。
【0034】
アドレス変換情報ベースアドレスは、上位12ビット(B31−B20フィールド)のみ値を設定可能で、下位20ビットは全て0固定とし、メモリ2上の1メガバイト境界を指定できるものとする。アドレス変換情報ベースアドレスは、圧縮コード伸長回路3内のレジスタ等に記憶しておく。
【0035】
アドレス変換情報のメモリアドレスは、アドレス変換情報ベースアドレスのB31−B20フィールドと、CPUアドレスのA22−A5フィールドを使い、本図に示す方法で生成する。すなわち、上位12ビットをアドレス変換情報ベースアドレスのB31−B20フィールドとし、続く18ビットをCPUアドレスのA22−A5フィールドとし、最後の2ビットを0とする。
【0036】
次に、図1のメモリ2の圧縮コードタイプ情報領域22に記憶される圧縮コードタイプ情報について説明する。圧縮コードタイプ情報は、図2で説明した圧縮コードのフォーマットのタイプを識別する情報である。本実施例では、4種類のタイプを識別するために、2ビットのコードを使い、タイプ0は“00”、タイプ1は“01”、タイプ2は“10”、タイプ3は“11”とそれぞれ定義するものとする。このように、本実施形態では、圧縮コードのタイプ情報を、圧縮コードとは別に管理するようにしている。
【0037】
図6は、圧縮コード1ブロックに対する圧縮コードタイプ情報のフォーマットを示す図である。図3と同様に、ブロックの先頭から16の圧縮コードにa〜pと名前を付けると、圧縮コードタイプ情報は、32ビットの上位から、a〜pというように、圧縮コードと同じ順番に圧縮コードタイプの識別情報を配置する。
【0038】
図7は、圧縮前コードと圧縮コードタイプ情報との対応を説明するための図である。図7(a)は、圧縮前のコード(最大8メガバイト)の仮想メモリマップを示す。圧縮前コードの1ブロックには、16ビットコードが16個の32バイトが含まれるため、ブロックの数は最大で262144となる。
【0039】
図7(b)は、圧縮コードタイプ情報領域22のメモリマップを示す図である。圧縮コードタイプ情報は、1ブロックにつき32ビット(4バイト)の情報を持つ。圧縮コードタイプ情報領域22は、メモリ2上の圧縮コードタイプ情報ベースアドレスと呼ぶアドレスから、ブロックの順番に圧縮コードタイプ情報を連続して記憶する。圧縮コードタイプ情報領域22は最大で、4バイト×262144の1メガバイトとなる。
【0040】
図8は、圧縮コードタイプ情報のメモリアドレスの計算方法を示す図である。前述のように、CPUアドレスのA22−A5フィールドは、コードのブロック番号を示す。
【0041】
圧縮コードタイプ情報ベースアドレスは、上位12ビット(B31−B20フィールド)のみ値を設定可能で、下位20ビットは全て0固定とし、メモリ2上の1メガバイト境界を指定できるものとする。
【0042】
圧縮コードタイプ情報のメモリアドレスは、アドレス変換情報ベースアドレスのB31−B20フィールドと、CPUアドレスのA22−A5フィールドを使い、本図に示す方法で生成する。すなわち、上位12ビットを圧縮コードタイプ情報ベースアドレスのB31−B20フィールドとし、続く18ビットをCPUアドレスのA22−A5フィールドとし、最後の2ビットを0とする。
【0043】
次に、図1のメモリ2の辞書領域24に記憶される辞書について説明する。辞書は、図2で説明した圧縮コードを元のコードに変換するためのテーブルである。コード長が4ビットであるタイプ0フォーマットの辞書は16ビット×16、コード長が8ビットであるタイプ1フォーマットの辞書は16ビット×256、コード長が10ビットであるタイプ2フォーマットの辞書は16ビット×1024のテーブルとなる。
【0044】
図9は、辞書領域24のメモリマップを示す図である。辞書領域24は、メモリ2上の辞書ベースアドレスと呼ぶアドレスから、タイプ2、タイプ1、タイプ0の順番に辞書を記憶するものとする。
【0045】
図10は、参照すべき辞書のメモリアドレスの計算方法を示す図である。図10(a)に示すように辞書ベースアドレスは、下位12ビットは全て0固定とし、メモリ上の4096バイト境界を指定できるものとする。図10(b)、図10(c)、図10(d)はそれぞれ、タイプ2、タイプ1、タイプ0の辞書アドレスである。辞書領域24には、それぞれのタイプごとに、圧縮コードの順番(タイプ0を例にすると、0000、0001、0010・・・の順)に元のコードが格納されている。このため、辞書のメモリアドレスは、辞書ベースアドレスのA31−A12フィールドと、タイプごとのオフセット値と、圧縮コードと、再開ビットの「0」とを結合することによって生成される。ここで、タイプごとのオフセット値は、タイプ2は「0」であり、タイプ1は「100」であり、タイプ0は、「1010000」となる。
【0046】
次に、圧縮コード伸長回路3が行なう圧縮コードアドレスの計算処理について説明する。図3に戻って、CPU1がブロックJの先頭から8番目のコードhを読み出すという例で説明する。まず、CPU1が出力したコードアドレスから図5で示したアドレス計算を行い、ブロックJのアドレス変換情報を読み出す。次に、図8で示したアドレス計算を行い、ブロックJの圧縮コードタイプ情報を読み出す。圧縮コードタイプ情報により、ブロック内の16の圧縮コードのそれぞれのサイズを知ることができる。すなわち、タイプ0は4ビット、タイプ1は8ビット、タイプ2は10ビット、タイプ3は16ビットである。ブロックJの先頭から8番目の圧縮コードhまでの距離(ビット数)は、ブロックJの圧縮コードの1番目から7番目まで(a〜g)のサイズを加算したものに等しい。
【0047】
図11は、ブロックの先頭から、目的の圧縮コードまでのビット数を計算する回路の例を示す図である。図中a〜oは、ブロックの先頭から15番目までの圧縮コードのタイプ情報であり、それぞれのタイプ情報を回路330において、圧縮コードサイズsa〜soに変換する。
【0048】
図12は、回路330の動作を示す図である。回路330は圧縮コードのタイプ情報i(2ビット)をサイズ情報o(4ビット)に変換する。サイズ情報oの値は、入力iが示すタイプのコード長を2で割った値である。すなわち、タイプ0は2、タイプ1は4、タイプ2は5、タイプ3は8となる。これは、圧縮コードのサイズが2ビットの整数倍であるため、あらかじめ、2で割った(下位方向に1ビットシフトした)データとしておくことにより、図11の回路全体の規模を小さく抑えることができるからである。
【0049】
図11に示した回路331は、圧縮コードサイズsa〜soと、CPUアドレスのビット4−1(A[4:1])を入力し、圧縮コードサイズのうち、目的の圧縮コードに対応する部分とこれ以降のデータとを0にマスクする。ma〜moをマスク後の圧縮コードサイズと呼ぶことにする。
【0050】
図13は、回路331の動作を示す図である。CPUアドレスのA[4:1]と、マスク後の圧縮コードサイズma〜moの値を示している。ここで、Zは4ビット全て0を意味する。ブロックの8番目のコードhの場合は、A[4:1]=0111となり、ma〜mgはそれぞれsa〜sg、mh〜moはZとなる。
【0051】
図11に示した回路332は、マスク後の圧縮コードサイズma〜moを加算する回路である。この回路の出力が、ブロックの先頭から目的の圧縮コードまでのブロック内アドレスとなる。
【0052】
図14は、回路332の例を示す図である。マスク後の圧縮コードサイズma〜moを桁上げ保存加算アレイ(CSAアレイ)332−1で加算し、桁上げ保存形式の出力s、rを桁上げ伝播加算器(CPA)332−2で加算し、ブロック内アドレス(単位は2ビット)を出力する。
【0053】
図15は、CSAアレイ332−1の構成例を示す図である。回路332−10は、3入力2出力の桁上げ保存加算器であり、その動作を図16に示す。i0,i1,i2は、それぞれ1ビットの入力で、rは桁上がり(キャリー)出力、sは和(サム)出力である。図15において、マスク後の圧縮コードサイズは、1つのコード(例えばa)に対して4ビットで表され、ma3,ma2,ma1,ma0のように表されている。図の上段から下段に向かって、各段ごとに1コード分のマスク後の圧縮コードサイズを入力し、出力を次の段に入力する構成となっている。また、図のなかで、桁上げ保存加算回路332−10の入力が0となっているのは、データ0を意味する。CSAアレイ332−1の出力は7ビットのサムs6〜s0と6ビットのキャリーr5〜r0となる。図14のCPA332−2で、s6〜s0と、r5〜r0を1ビット上位にシフトしたデータの加算を行うことにより、ブロック内アドレスが計算される。
【0054】
上記の構成において、圧縮コード伸長回路3が、CPU1が出力したコードアドレスに対応する圧縮コードのアドレスを特定し、伸長する処理の原理について説明する。
【0055】
圧縮コード伸長回路3は、CPU1が出力したコードアドレスに対して、図5に示した処理によりアドレス変換情報のアドレスを求めて、メモリ2のそのアドレスを参照することで、目的とする圧縮コードを含むブロックの先頭アドレスを取得する。
【0056】
そして、図8に示した処理により、圧縮コードタイプ情報のアドレスを求めて、メモリ2のそのアドレスを参照することで、目的とする圧縮コードを含むブロックの圧縮コードタイプ情報を取得する。
【0057】
取得した圧縮コードタイプ情報から、図11に示した回路により、目的とする圧縮コードのブロック内におけるアドレスが求められるため、取得したブロックの先頭アドレスを加算することで、目的とする圧縮コードのアドレスを求めることができる。また、圧縮コードタイプ情報から、目的とする圧縮コードの圧縮形式のタイプ(コード長)がわかるため、メモリ2から目的とする圧縮コードを取得することができる。
【0058】
そして、圧縮形式のタイプにより伸長が必要のない場合には、取得したコードをそのままCPU1に出力する。一方、伸長が必要な場合には、図10に示した処理により、辞書のアドレスを求めて、メモリ2のそのアドレスを参照することで、CPU1が要求するコードを取得することができる。そして、このコードをCPU1に出力する。
【0059】
このように、本実施形態によれば、目的とする圧縮コードのアドレスを直接指定して、その圧縮コードのみを伸長することにより、マイコン等の組み込み機器に好適な、高い圧縮率と、高速な伸長性能とを実現している。
【0060】
次に、実装上、圧縮コード伸長回路3が目的の圧縮コードを含む圧縮コード群をメモリ2から読み出す処理について説明する。ここで、圧縮コード群は、メモリ2から読み出すデータの単位(例えば、4バイト分のデータ)である。図17は、圧縮コードアドレスの計算方法を説明するための図である。図17(a)は、CPU1が読み出しを行うコードのアドレス変換情報、すなわち、目的の圧縮コードを含むブロックの先頭アドレスBA[31:0](単位はバイト)である。図17(b)は、目的の圧縮コードの、ブロック内アドレスIA[6:0](単位は2ビット)である。図17(c)は、目的の圧縮コードのアドレスCA[33:0](単位は2ビット)の計算方法を示している。図に示すように、BAに対し、IAを下位に2ビットシフトして加算を行う。結果アドレスの上位30ビットCA[33:4]が、目的の圧縮コードを含む4バイトデータのメモリアドレスを表し、下位4ビットCA[3:0]が、メモリより読み出した4バイトデータにおける目的の圧縮コードの位置を表す。
【0061】
図18は、圧縮コード伸長回路3が、メモリ2より読み出した圧縮コード群から、目的の圧縮コードを抽出する処理を説明するための図である。図17のCA[33:4]が示すアドレス(単位は4バイト)から読み出した圧縮コード群において、CA[3:0]が示すビット位置(単位は2ビット)から、圧縮コードのサイズ分を取り出すことにより、目的の圧縮コードhが得られる。
【0062】
ここで、メモリ2より読み出した圧縮コード群に、目的の圧縮コードが一部しか含まれていない場合が発生する。例えば、図18において、圧縮コードiは、コードの先頭2ビットであり、完全なコードではない。これは、圧縮コードiのサイズ情報を使うことで検出可能である。この場合には、メモリ2上の次のアドレスにある4バイト分の圧縮コード群を読み出すことにより、目的の圧縮コードを得ることができる。
【0063】
次に、圧縮コードの伸長に必要なメモリアクセスを効率的に行う方法について説明する。
【0064】
図19は、圧縮コードの伸長の処理の流れを説明するためのフロー図である。なお、圧縮コード伸張回路3は、直前に読み出したアドレス変換情報と圧縮コードタイプ情報と圧縮コードアドレスと圧縮コード群とをそれぞれ記憶するレジスタを備えているものとする。
【0065】
まず、圧縮コード伸長回路3は、CPU1が出力するコードアドレスに対し、前回と同じブロックであるかを確認する(S101)。同じブロックであれば、アドレス変換情報と圧縮コードタイプ情報とは、既にメモリ2から読み出し済みであるため次のステップへ移動する。ブロックが異なっていれば、アドレス変換情報と圧縮コードタイプ情報とをメモリ2から読み出す(S102、S103)。
【0066】
次に、前回読み出した圧縮コード群に目的の圧縮コードが完全に含まれるかどうかを確認する(S104)。含まれていれば次のステップへ移動し、含まれていなければ次の圧縮コード群をメモリ2から読み出す(S105)。このとき、読み出した4バイトの圧縮コード群に目的の圧縮コードが完全に含まれていない場合には、さらに次のアドレスの圧縮コード群も読み出す。
【0067】
次に、メモリ2から読み出した圧縮コード群から目的の圧縮コード(S106)を抽出する。
【0068】
そして、圧縮コードが非圧縮形式かどうかを確認する(S107)。非圧縮形式の場合は、コードをそのままCPU1に出力する。圧縮形式の場合には、辞書アドレスを計算し、メモリ2より辞書を読み出して元のコードに伸長してから(S108)、CPU1にコードを出力する。
【0069】
次に、本発明の第2の実施例について説明する。
【0070】
図20は、第1の実施例ではメモリ2に記憶していた辞書を、専用の記憶装置4に記憶するようにし、圧縮コード伸長回路3は、記憶装置4専用のアドレスバス4000とデータバス4001とを使用して、辞書をアクセスする構成を説明するためのブロック図である。例えば、メモリ2が低速、大容量メモリであるとし、メモリ2のアクセスにCPU1が動作するクロックの数サイクル分を要するとした場合に、小容量で高速な記憶装置4を辞書として使用することにより、圧縮コードの伸長に要する時間を短縮できる。命令フェッチの場合には、分岐や割り込みがない限り、連続したアドレスの命令がフェッチされることになる。アドレス変換情報21、圧縮コードタイプ情報22、圧縮コード23は、メモリから読み出されるデータに、複数コード分の情報が含まれるため、1命令のフェッチに対し、毎回読み出しを行うわけではない。しかし、辞書については、タイプ3以外のフォーマットの圧縮コードの伸長のために、多くの読み出しが必要になる。従って、容量が少なくて済む辞書を、小容量だが高速な記憶装置4に記憶することは、性能の面で有効であり、またハードウエアが多少増加するとしても、これよりはるかに大容量のメモリの削減効果を考えれば、十分実現性があると思われる。
【0071】
図21は、本発明の第3の実施例を示すブロック図である。第2の実施例に対して、辞書専用の記憶装置が、辞書1用の記憶装置4と、辞書2用の記憶装置5との2つになり、それぞれが独立したバスで圧縮コード伸長回路3と接続される。この構成は、圧縮の単位に対して、CPUデータバス1001の幅が大きい場合に有効になる。例えば、CPUデータバス1001が32ビットで、圧縮の単位が16ビットの場合を考える。圧縮コード伸長回路3が辞書を1式のみ持つ場合は、圧縮形式であるタイプ0、1、2のフォーマットの圧縮コードは、1サイクルに1つしか伸長できない。タイプ3フォーマットは辞書を引用する必要がないため、他のコードといっしょにCPUデータバス1001に出力するようにできる。辞書を2式使用すれば、1サイクルに2つの伸長が可能になるため、より伸長の性能が向上することになる。
【0072】
図22は、本発明の第4の実施例を示すブロック図である。ここで、BSC6はバスステートコントローラで、CPU1の外部へのアクセスを制御する回路である。7はマイコンの階層を表しており、その内部は本発明に関わる主要部のみを示している。外部メモリ8は、マイコン7と外部で接続されるメモリである。この構成では、圧縮コードを外部メモリ8にも記憶する。圧縮コードはメモリ2にも記憶されているが、内蔵メモリ2と外部メモリ8の両方に記憶することも可能であり、外部メモリ8のみに記憶することも可能である。マイコンの内蔵メモリ2だけでは容量が十分でない場合に、外部メモリ8を接続して使用することが考えられるが、外部メモリに圧縮コード83を記憶することにより、未圧縮のコードを記憶する場合に比べて、性能、消費電力を低減できる可能性がある。それは、マイコン7に読み込まれるコード量が、圧縮形式の方が少なくなるためである。特に、マイコン内部に比べて、外部バスの速度が遅い場合に効果が大きくなる。
【0073】
次に、圧縮の方法について説明する。図23は、マイコンプログラムの圧縮の流れを示す図である。圧縮はソースコード904、オブジェクトコード905の両方に対して行うことができる。プログラム開発環境900には、コンパイラ901、リンカ902、圧縮ツール903が含まれる。圧縮・非圧縮指定情報906とは、ソースコード904とオブジェクトコード905のどの部分を圧縮し、どの部分を非圧縮にするかの情報である。初期化ルーチン907は、マイコンのパワーオンリセット後に、圧縮コードの伸長に必要な情報、例えばアドレス変換情報ベースアドレス、圧縮コードサイズ情報ベースアドレスなどをレジスタ設定するプログラムである。コンパイラ901、リンカ902、圧縮ツール903の処理により、5種類のデータが出力される。圧縮・非圧縮指定情報906で、非圧縮に指定した部分は、非圧縮コード908として出力される。圧縮に指定した部分は、アドレス変換情報909、圧縮コードタイプ情報910、圧縮コード911、辞書912を生成する。これらの出力データをマイコンのメモリに書き込むことにより、非圧縮コード、圧縮コードを含むプログラムの実行が可能になる。
【0074】
図24は、非圧縮コードと圧縮コードを混在させる方法を説明するための図である。仮想アドレス空間920は、CPUのメモリマップで、例えば0番地から、内蔵メモリ、外部空間0、外部空間1などいくつかの空間が割り当てられている。これらの空間は非圧縮領域として使う。コンパイル、リンクの処理により、仮想アドレス空間の内蔵メモリ領域921の一部に非圧縮対象のコードがマッピングされる。仮想アドレス空間920の丁度半分のアドレスから、再び、内蔵メモリ、外部空間0、外部空間1などいくつかの空間が割り当てられており、これらは圧縮領域として使う。コンパイル、リンクの処理により、仮想アドレス空間の内蔵メモリ領域922の一部に圧縮対象のコードがマッピングされる。仮想アドレス空間の非圧縮部分921は、そのまま実メモリにマッピングされる。圧縮対象部分922は、圧縮ツールにより、アドレス変換情報924、圧縮コードタイプ情報925、圧縮コード926、辞書927として、実メモリ上にコードが生成される。プログラムの実行時には、CPUは仮想アドレス空間をアクセスするが、圧縮コード伸長回路は、CPUアドレスの最上位ビットを見て、これが0であればCPUアドレスをそのまま使って非圧縮コードをアクセスし、1であればアドレス変換を行い、必要に応じて、アドレス変換情報、圧縮コードタイプ情報、圧縮コード、辞書を読み出し、圧縮コードの伸長を行う。
【0075】
【発明の効果】
上述のように、本発明によれば、マイコン等の組み込み機器に好適なコード圧縮技術が提供される。
【図面の簡単な説明】
【図1】は、本発明を適用したマイクロコントローラの実施例の構成の要部を説明するためのブロック図である。
【図2】は、本発明の基本的な原理を示す第1の実施例における、圧縮コード23の4つのフォーマットである。(a)は、コード長が4ビットのタイプ0フォーマットである。(b)は、コード長が8ビットのタイプ1フォーマットである。(c)は、コード長が10ビットのタイプ2フォーマットである。(d)は、コード長が16ビットのタイプ3フォーマットである。
【図3】は、第1の実施例における、圧縮前のコードと圧縮コードとの対応を説明するための図である。
【図4】は、第1の実施例における、圧縮前のコードのブロックとアドレス変換情報のアドレスの対応を説明するための図である。
【図5】は、第1の実施例における、アドレス変換情報のメモリアドレスの計算方法を示す図である。
【図6】は、第1の実施例における、圧縮コード1ブロックに対する圧縮コードタイプ情報を示す図である。
【図7】は、第1の実施例における、圧縮前のコードと圧縮コードタイプ情報のアドレスの対応を説明するための図である。
【図8】は、第1の実施例における、圧縮コードタイプ情報のメモリアドレスの計算方法を示す図である。
【図9】は、第1の実施例における、辞書のメモリマップを示す図である。
【図10】は、第1の実施例における、辞書のメモリアドレスの計算方法を示す図である。
【図11】は、第1の実施例における、ブロックの先頭から目的の圧縮コードまでのビット数を計算する回路の例を示す図である。
【図12】は、第1の実施例における、ブロックの先頭から目的の圧縮コードまでのビット数を計算する回路において、圧縮コードタイプ情報を圧縮コードサイズに変換する回路330の動作を示す図である。
【図13】は、第1の実施例における、ブロックの先頭から目的の圧縮コードまでのビット数を計算する回路において、1ブロックの圧縮コードサイズを目的の圧縮コードに対応する部分とこれ以降を0にマスクする回路331の動作を示す図である。
【図14】は、第1の実施例における、ブロックの先頭から目的の圧縮コードまでのビット数を計算する回路において、マスク後の圧縮コードサイズを加算し、圧縮コードのブロック内アドレスを計算する回路332のブロック図である。
【図15】は、第1の実施例における、回路332の構成要素の1つである、桁上げ保存加算アレイ332−1の例である。
【図16】は、第1の実施例における、桁上げ保存加算アレイ332−1の構成要素である、桁上げ保存加算器の動作を示す図である。
【図17】は、第1の実施例における、圧縮コードのアドレス計算方法を示す図である。
【図18】は、第1の実施例における、メモリより読み出した圧縮コードから、目的の圧縮コードを抽出する方法を示す図である。
【図19】は、第1の実施例における、圧縮コードの伸長フローを示す図である。
【図20】は、本発明を適用したマイクロコントローラの第2の実施例の構成の要部を説明するためのブロック図である。
【図21】は、本発明を適用したマイクロコントローラの第3の実施例の構成の要部を説明するためのブロック図である。
【図22】は、本発明を適用したマイクロコントローラの第4の実施例の構成の要部を説明するためのブロック図である。
【図23】は、本発明におけるマイコンプログラムの圧縮の流れを示す図である。
【図24】は、本発明における非圧縮コードと圧縮コードを混在させる方法を説明するための図である。
【符号の説明】
1…CPU
2…メモリ
3…圧縮コード伸長回路

Claims (8)

  1. プログラムにしたがって処理を行なうCPUを備えたマイクロコントローラであって、
    プログラムのコードを可変長コードに変換した圧縮コードと、
    グループ化されたプログラムのコードについて、各グループの開始アドレスを特定するためのアドレス変換情報と、
    各グループごとに、グループに含まれる各圧縮コードのコード長を特定するための圧縮コードタイプ情報とを記憶するメモリと、
    CPUが出力するコードアドレスから、参照すべきアドレス変換情報と圧縮コードタイプ情報とを特定し、特定されたアドレス変換情報と圧縮コードタイプ情報と用いて、対応する圧縮コードアドレスを求め、該当する圧縮コードを前記メモリから読み出す圧縮コード処理部と
    を備えることを特徴とするマイクロコントローラ。
  2. 請求項1に記載のマイクロコントローラであって、
    前記メモリは、圧縮コードを元のコードに伸張するための辞書情報をさらに記憶し、
    前記圧縮コード処理部は、前記辞書情報を参照して、読み出した圧縮コードを元のコードに伸張することを特徴とするマイクロコントローラ。
  3. 請求項1に記載のマイクロコントローラであって、
    前記圧縮コード処理部は、前記メモリ中の圧縮コードを記憶した領域と、アドレス変換情報を記憶した領域と、圧縮コードタイプ情報を記憶した領域とを識別するための情報を記憶していることを特徴とするマイクロコントローラ。
  4. 請求項3に記載のマイクロコントローラであって、
    前記メモリは、プログラムのコードのブロックの順番に前記アドレス変換情報を記憶し、
    プログラムのコードの順番に圧縮コードタイプ情報を記憶することを特徴とするマイクロコントローラ。
  5. 請求項2に記載のマイクロコントローラであって、
    前記辞書情報は、対応する圧縮コードのコード長ごとに領域を分けて記憶され、それぞれの領域は、対応する圧縮コードの符号の順番に辞書情報が記憶されることを特徴とするマイクロコントローラ。
  6. 請求項5に記載のマイクロコントローラであって、
    前記圧縮コード処理部は、圧縮コードタイプ情報から参照すべき辞書情報が記憶されている領域を特定し、圧縮コードをもとに、特定された領域に含まれる参照すべき辞書情報を特定することを特徴とするマイクロコントローラ。
  7. 請求項1に記載のマイクロコントローラであって、
    前記圧縮コード処理部は、圧縮コードを読み出す際に、読み出すべき圧縮コードを含む所定のサイズの圧縮コード群を前記メモリから読み出すものであり、
    直前に用いたアドレス変換情報と、圧縮コードタイプ情報と、圧縮コード群とをそれぞれ一時的に記憶する領域を備え、
    CPUが出力したコードアドレスが、直前に読み出した圧縮コードと同一のブロックに含まれる場合には、前記領域に一時的に記憶しているアドレス変換情報と圧縮コードタイプ情報とを用い、
    さらに、CPUが出力したコードアドレスに対応する圧縮コードが、直前に読み出した圧縮コード群に含まれる場合には、前記領域に一時的に記憶している圧縮コード群から圧縮コードを読み出すことを特徴とするマイクロコントローラ。
  8. 請求項1に記載のマイクロコントローラにおいて、
    前記圧縮コードには、元のコードと同じコードが含まれることを特徴とするマイクロコントローラ。
JP2002192573A 2002-07-01 2002-07-01 圧縮コードを処理するマイクロコントローラ Expired - Fee Related JP3749507B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002192573A JP3749507B2 (ja) 2002-07-01 2002-07-01 圧縮コードを処理するマイクロコントローラ
US10/611,315 US7676651B2 (en) 2002-07-01 2003-06-30 Micro controller for decompressing and compressing variable length codes via a compressed code dictionary

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002192573A JP3749507B2 (ja) 2002-07-01 2002-07-01 圧縮コードを処理するマイクロコントローラ

Publications (2)

Publication Number Publication Date
JP2004038404A true JP2004038404A (ja) 2004-02-05
JP3749507B2 JP3749507B2 (ja) 2006-03-01

Family

ID=31701800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002192573A Expired - Fee Related JP3749507B2 (ja) 2002-07-01 2002-07-01 圧縮コードを処理するマイクロコントローラ

Country Status (2)

Country Link
US (1) US7676651B2 (ja)
JP (1) JP3749507B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511986A (ja) * 2008-02-11 2011-04-14 リニア アルジェブラ テクノロジーズ リミテッド プロセッサ

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070039563A (ko) * 2004-07-28 2007-04-12 미쓰비시덴키 가부시키가이샤 프로그래머블 컨트롤러용 프로그램 생성 장치,프로그래머블 컨트롤러용 프로그램 생성 방법 및 그 방법의프로그램을 기록한 기록매체
WO2012169124A1 (ja) * 2011-06-10 2012-12-13 パナソニック株式会社 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US10310984B2 (en) * 2014-10-09 2019-06-04 Hitachi, Ltd. Storage apparatus and storage control method
JP6517549B2 (ja) * 2015-03-13 2019-05-22 東芝メモリ株式会社 メモリコントローラ、記憶装置、データ転送システム、データ転送方法、及びデータ転送プログラム
US10162631B2 (en) * 2016-10-28 2018-12-25 Sanken Electric Co., Ltd. Micro controller unit

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US6199126B1 (en) * 1997-09-23 2001-03-06 International Business Machines Corporation Processor transparent on-the-fly instruction stream decompression
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511986A (ja) * 2008-02-11 2011-04-14 リニア アルジェブラ テクノロジーズ リミテッド プロセッサ

Also Published As

Publication number Publication date
JP3749507B2 (ja) 2006-03-01
US20050021929A1 (en) 2005-01-27
US7676651B2 (en) 2010-03-09

Similar Documents

Publication Publication Date Title
US6657562B2 (en) Data compression/decompression method and apparatus
US4558302A (en) High speed data compression and decompression apparatus and method
JP3556556B2 (ja) 命令コード変換装置及び情報処理システム
US20050198471A1 (en) Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein
RU2629440C2 (ru) Устройство и способ для ускорения операций сжатия и распаковки
KR950001485A (ko) 연산처리방법 및 마이크로 컴퓨터
JP3749507B2 (ja) 圧縮コードを処理するマイクロコントローラ
Kumar et al. Bitstream compression for high speed embedded systems using separated split look up tables (LUTs)
CN115955248A (zh) 一种数据压缩方法、装置及电子设备和存储介质
US6871274B2 (en) Instruction code conversion apparatus creating an instruction code including a second code converted from a first code
JP3201716B2 (ja) コンピュータ装置
US6237080B1 (en) Executable programs
Lin et al. Code compression techniques using operand field remapping
JPH04284551A (ja) 圧縮データを格納した読み出し専用メモリを備えた装置
JP3792633B2 (ja) マイクロコントローラ、及びマイクロコントローラ装置
JP2006155448A (ja) データ処理装置およびデータ処理装置の設計方法
Chen et al. A low power-consuming embedded system design by reducing memory access frequencies
JP2001297006A (ja) 半導体集積回路装置および情報処理システム
CN117113106A (zh) 一种数据压缩方法、装置及电子设备和存储介质
CN113454593A (zh) 保持多个机器生成上的复杂功能的兼容性
CN118012784A (zh) 内存的扩展访问方法、设备及存储介质
KR100353814B1 (ko) 확장된 램 억세스 명령어를 억세스하는 시간을 향상시킨램 억세스 장치
JPH08263263A (ja) データ処理装置および圧縮プログラム作成装置
Chen et al. Designing a high performance and low energy-consuming embedded system with considering code compressed environments
JPH09305399A (ja) 命令供給装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040514

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20040514

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051201

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091209

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101209

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101209

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20101209

Year of fee payment: 5

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

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111209

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121209

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121209

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131209

Year of fee payment: 8

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees