JP3792633B2 - マイクロコントローラ、及びマイクロコントローラ装置 - Google Patents
マイクロコントローラ、及びマイクロコントローラ装置 Download PDFInfo
- Publication number
- JP3792633B2 JP3792633B2 JP2002302431A JP2002302431A JP3792633B2 JP 3792633 B2 JP3792633 B2 JP 3792633B2 JP 2002302431 A JP2002302431 A JP 2002302431A JP 2002302431 A JP2002302431 A JP 2002302431A JP 3792633 B2 JP3792633 B2 JP 3792633B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- memory
- instruction
- address
- compressed
- 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 - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime 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)
- Microcomputers (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、家電製品,AV機器,携帯電話,自動車などの電子機器に用いられるマイクロコントローラ,その制御方法及びマイクロコントローラ装置に関するものである。
【0002】
【従来の技術】
マイクロコントローラは、電子機器に組み込まれ該電子機器の動作など制御を行っている。近年マイクロコントローラは、高性能かつ安価であることが要求されている。マイクロコントローラの処理は益々複雑化しており、プログラム容量も増加している。特に32ビット命令は、16ビット命令と比べると1命令の語長が2倍であるため、1.5〜1.8倍程度の容量になる。従って、プログラム容量が増大し、チップに占めるプログラムROMの面積が全体の半分以上を占め、ROMの比率は今後さらに増大すると考えられている。
【0003】
プログラム容量を小さくするにはコード圧縮方法があげられ、高速な展開が可能な固定長の圧縮方法が従来より知られている(例えば、特許文献1)。
【0004】
上記技術は、プログラムに出現する命令コードとデータを、それより短い語長の圧縮コードに変換して圧縮コードメモリに持ち、圧縮コードを命令コードとデータに展開するためのデータを辞書メモリに持ち、圧縮コードを辞書メモリのアドレスとして、辞書メモリの読み出しを行っている。
【0005】
しかしながら、32bit 命令長のプログラムの圧縮には60%程度の良好な圧縮率を実現できるが、16bit 命令長のプログラムに対しては圧縮率が100%を超えてしまうこともあり現実的ではない。この理由は、32bit 命令では、取りうる最大のバリエーションが232であるのに対して、実際のプログラムに出てくる命令のバリエーションが極端に少ない。しかしながら16bit 命令では、取りうる最大のバリエーションが216と小さいにもかかわらず、実際のプログラムに出てくるバリエーションは32bit 命令と比べてあまり小さくならないためである。また、32bit 命令のプログラムを圧縮する場合でも、最適な圧縮を行おうとすると圧縮コードの語長がコンピュータで扱うのに都合の良い2のべき乗の形にはならず、中途半端な語長となるため、専用のROMが必要となり、圧縮されたプログラムを展開しながら実行する圧縮モードと、非圧縮のプログラムをそのまま実行する非圧縮モードの両方のモードをサポートすることが困難となる。
【0006】
【特許文献1】
特開平9−231071号公報
【0007】
【発明が解決しようとする課題】
高い圧縮率と高速な命令展開性を兼ね備え、圧縮コードの語長に制約がある場合でも、高い圧縮率のコード圧縮を行うマイクロコントローラ及びそれを用いたマイクロコントローラの制御方法及びマイクロコントローラ装置を提供する。
【0008】
【課題を解決するための手段】
上記課題を解決するために、プログラムメモリから命令コードを読み出して実行するマイクロコントローラにおいて、プログラム上連続した複数の命令コードを圧縮コードに変換して格納し、命令アドレスで圧縮コードを読み出す圧縮コードメモリと、圧縮コードから生成されるアドレスに従い命令コードを読み出す辞書メモリをプログラムメモリとして使用し、圧縮コードには複数の命令コードの辞書メモリ上のアドレス情報がアドレス長の総和より短いビット数で格納されているマイクロコントローラとする。
【0009】
【発明の実施の形態】
図1は本発明の一実施例であるマイクロコントローラ装置のブロック図である。
【0010】
マイクロコントローラ8で実行されるプログラムを格納するプログラムメモリ1は、圧縮コードメモリ10と辞書メモリ20を有している。圧縮コードメモリ10には、命令コードの替わりに、あらかじめプログラム中に現われる連続する複数の命令コードに割り当てられた固定語調の圧縮コードが格納されている。辞書メモリ20には、圧縮コードに含まれる複数のアドレスに、その圧縮コードに対応する複数の命令コードが格納されている。プログラムメモリ1に命令アドレス100が与えられると、圧縮コードメモリ10の命令アドレスから読み出された圧縮コードから複数の辞書メモリアドレス101が生成され、辞書メモリ20のアドレスとして与えられ、辞書メモリの出力200が読み出される。
【0011】
マイクロコントローラ8のプログラム実行を行うCPU(中央演算処理装置)2は、CPUバス1000を使って命令アドレス100をプログラムメモリ1に与え、辞書メモリの出力200を読み出し、CPUバス1000を使ってCPU2内部に取り込む。取り込まれた命令コードはCPU2で解読された後、実行される。
【0012】
RAM(ランダム・アクセス・メモリ)3は読み出し/書き込みが可能で、
CPU2が処理するデータの保持に使用される。
【0013】
BSC(バス・コントローラ)4は、マイクロコントローラ8の外部バスに接続された外部メモリにアクセスする。RAM3と外部メモリはアドレスで区別され、CPU2がメモリアクセス命令を実行すると、読み出しか書き込みか、アクセスのサイズを示すコマンド,アドレスがCPUバス1000に出力される。アドレスが外部バス空間である場合、BSC4は外部バスにメモリアクセスの情報を出力し、外部メモリからのデータ読み出し、外部メモリヘのデータ書き込みの制御を行う。
【0014】
DMA(ダイレクト・メモリ・アクセス・コントローラ)5は、RAM3,外部メモリなど、メモリアドレスでアクセスできる任意の2つのデバイス間データ転送を、CPU2に代わって高速に実行する。DMA5の起動は、例えばマイクロコントローラ8の外部からのDMA要求で行い、BSC4と連携してRAM3や外部メモリのアクセスを行う。INT(割込みコントローラ)6は、マイクロコントローラ内部や外部からの割込み要求を検出して、CPU2に割込みをかける。周辺モジュール7の種類としては、例えばタイマ,通信インタフェース,A/D変換などがあげられる。DMA5,INT6,周辺モジュール7は、周辺モジュールバス1001を介して接続されている。CPUバス1000と周辺モジュールバス1001を分離することにより、クロック周波数の低い周辺モジュールに関係無く、CPUバス1000を高速化できるようになる。また、周辺モジュール7と外部メモリ間のDMA転送を、CPUバス1000を経由せずに実行するように設計することも可能であり、CPU2のRAM3へのアクセスと並行してダイレクト・メモリ・アクセスが可能になるという効果も有している。
【0015】
図1において、マイクロコントローラ8は、周辺にメモリ,文字入力などを行うためのキー,表示装置などの外部デバイス群9を有している。マイクロコントローラ8と外部デバイス群9は、外部バス,ダイレクト・メモリ・アクセス要求,割込み要求,周辺インタフェースなどで接続されている。
【0016】
図2は、圧縮命令を実行する機能を有するマイクロコントローラおよびそれを用いた装置における、圧縮命令を実行するためのプログラムメモリ1の基本的な動作を模式化したものである。
【0017】
以下の説明ではCPUバス1000は32bit 、命令コードの語長は16bit としている。1つの圧縮コードは、プログラム上で連続する4命令コードに対して予め割り当てられた32bit のコードで、この中には4命令コードが格納されている辞書メモリ20の4つのアドレス情報が格納されている。
【0018】
圧縮コードメモリ10は、命令アドレス100を入力して、32bit の圧縮コードを読み出す機能を有している。辞書メモリ20は、圧縮コードに含まれるアドレスを用いて32bit の命令コードを読み出す機能を有している。圧縮コードメモリ10中の圧縮コードpnが辞書メモリ20中の命令コードc0,c1,c2,c3に対応する場合、圧縮コードpnのフィールドf0は辞書メモリ20中の命令コードc0が格納された絶対アドレスとなり、フィールドf1,f2,f3はc1,c2,c3が格納されたアドレスのf1からの相対アドレスとなっている。相対アドレスのビット数が限られているため、辞書メモリ20中でc1,c2,c3はc0の近く、具体的には相対アドレスの限られたビット数で表現できる範囲に配置されていなければならない。この制約のため、辞書メモリ20の中に同一の命令コードを複数配置しなければならない場合もあり、辞書の呑量が増えてしまうが、複数のアドレスを纏めて短い圧縮コードにできる効果のほうが大きいため圧縮率は改善される。
【0019】
図3はプログラムメモリ1の構成方法を示す。
【0020】
圧縮コードメモリ10には、圧縮コードが格納されている。命令アドレス100は、命令コードが16bit であるため、2byteを単位とする値(0,2,4,…)となる。圧縮コードメモリ10は、4byte単位のアドレスを入力して、32ビットデータを読み出す。
【0021】
命令のアドレス0,2,4,6に対する圧縮コードメモリ10のアドレスは0、命令のアドレス8,10,12,14に対する圧縮コードメモリ10のアドレスは8となる。命令アドレスは常に下位1bit が0であるため命令アドレス100にはこの下位1bit を除いたアドレスが入るものとする。命令アドレス100から更に下位2bit を除いたアドレスで圧縮コードメモリ10はアクセスされる。
【0022】
以下の説明では圧縮コードのフィールドf0は17bit 、フィールドf1,f2,f3はそれぞれ5bit とする。ただし、f1,f2,f3は−16から+15までの値を表すものとし負数は1の補数で表されているものとする。
【0023】
圧縮コードメモリ10から読み出された圧縮コードに対して加算器33,32,31はf0+f1,f0+f2,f0+f3を計算する。このときf1,f2,f3はf0と同じ17bit に符号拡張されて足される。f0,f0+f1,f0+f2,f0+f3の4値が圧縮コードに対応する4つの命令コードの辞書メモリ20におけるアドレスとなる。この4値は命令アドレス100の下位2bit にしたがってセレクタ40によって選択される。
【0024】
セレクタ40は、圧縮コードメモリ10に圧縮コードを置く場合に意味を持つもので、シフタの出力の下から2ビット名の信号を使って、圧縮コードメモリ10の出力に含まれる2つの圧縮コードから適切なコードを選択する。
【0025】
選択された値をアドレスとして、辞書メモリ20から所望の命令コードが読み出される。ここでは、命令アドレスとしてc0の命令アドレスが与えられた場合を考える。c0のアドレスによって辞書メモリ20からc0が読み出されるが、CPUバス1000は32bit なので、辞書メモリ20から出力される値は32bit アラインされたものである。したがって、辞書メモリアドレス101は実際には下位1bit を除いたものであり、この1bit は命令アドレス100の下位1bit と同じであれば、辞書メモリの出力はそのままCPUバス1000に出力されるが、異なる時は出力の下位16bit と上位16bit を入れ替える。
【0026】
なお、圧縮コードメモリ10と辞書メモリ20は別のメモリモジュールに置いても良いし、同じメモリモジュールにおいても良い。
【0027】
図4は、プログラムメモリ1の別の構成方法を示す。図4は図3に対し圧縮コードメモリ10の出力を受けるレジスタ50が追加されている。レジスタ50はCPUの動作クロックで動作する。これを追加することで圧縮コードメモリ10の読み出しと辞書メモリ20の読み出しをパイプラインの別のステージで実行することが可能となりクロック周波数を上げることが出来る。
【0028】
図5はプログラムメモリ1の別の構成方法を示す。図5は、図3に対しセレクタ201,202を追加して、辞書メモリ20からプログラム上連続している2命令を出力できるようにしたものである。これによって、辞書メモリの出力200はカラムセレクタを通さずにページ幅のデータを、そのままセレクタ201,202に出力するようにする。セレクタ40は、4つのアドレスのうち1つのみ出力するのではなく、プログラム上連続な2命令のアドレス2つを選択する。辞書メモリアドレス101には2つのアドレスの共通なローアドレスと、それぞれのカラムアドレスが出力され、ローアドレスは辞書メモリ20に、カラムアドレスはそれぞれセレクタ201,202に供給される。セレクタ201,202は、辞書メモリ20から出力されたページ幅のデータをカラムアドレスに基づき選択する。
【0029】
プログラム上連続している2命令を命令コードとすることで、CPU2は次に必要となる可能性の大きい命令コードを一緒に取得することができ、CPUバス1000をデータアクセスのために空けておくことができる。従って、CPU2の処理性能を向上することができる。
【0030】
図6は圧縮コードの別の構成方法を示す。プログラム中には、非常に頻繁に現われる頻出コードが存在する。この頻出コードは、先に述べた相対アドレスの制約により、辞書メモリ20中に数多く配置されてしまい、辞書の容量を増やす原因となる。このような頻出コードは辞書メモリ20とは別に、容量の小さい頻出コードテーブル60に登録しておく。圧縮コードに頻出コードが含まれている場合には、辞書メモリ20ではなく頻出コードテーブルを参照するようにすれば、辞書の容量が減り圧縮率が向上する。
【0031】
このように圧縮コードに頻出コードが含まれない場合と含まれる場合に分けて、含まれない場合は上記のように、含まれる場合は頻出コードテーブル60を参照できるように、場合によっては圧縮コードのフィールドの意味合いを変えられるようにしたのが図7の圧縮コードの構成である。
【0032】
先頭の1bit はタグであり、どちらの場合かを識別するためのものである。
【0033】
タグが0の時は、圧縮コードに頻出コードが含まれていない場合で、上記のように絶対アドレスと相対アドレスのみを使って辞書メモリ20にアクセスする。
【0034】
タグが1の時は圧縮コードに頻出コードが含まれている場合で、先頭のフィールドg0圧縮コードに含まれる4つの命令のうち、先頭の命令の辞書メモリ20における絶対アドレス、続く4bit のフィールドg1,g2は、頻出コード以外の命令の相対アドレスである。次の2bit のフィールドg3は、圧縮コードに含まれる4つの命令のうち何番目の命令が頻出コードであるかを表すフィールドである。最後のフィールドg4は、g3で表される頻出コードが頻出コードテーブルのどこに格納されているかを表す頻出コードテーブルアドレスである。もし4つの命令のうち、先頭の命令が頻出コードであった場合は、フィールドg0は2番目の命令の絶対アドレスを表すものとする。また、フィールドg1,g2には、g0で絶対アドレスを表した命令でも頻出コードでもない2つの命令の相対アドレスを、命令の順番に格納している。
【0035】
1つの圧縮コードの中に2つ以上の頻発コードが含まれる場合もあるが、このときは何れか1つを頻出コードとする。
【0036】
どの命令を頻出コードとするかについては、プログラム中に最も多く出現したコードからフィールドg4で表わすことのできる最大数、今の場合は2の5乗の32個を頻出コードとして頻出コードテーブル60に登録しても良いし、一度頻出コードなしの条件で辞書を作成して、辞書中に最も多く出てきたものから登録しても良い。
【0037】
図7は頻出コードテーブルを持ち、タグが1であった場合のプログラムメモリ1の動作を示す。
【0038】
加算器32,33の動作は、ビット数が4bit となり1bit 減った以外は上記と同様であるが、4つの命令のうち何番目が頻出コードであるかを示すフィールドg3の値をセレクタ41に反映させて、4つのうち何番目の命令のアドレスを辞書メモリ20に与えるかを判断している。また、フィールドg4の値をアドレスとして頻出コードテーブル60を参照した結果と、辞書メモリ20の出力のどちらを出力するか、選択するためにセレクタ201,202はフィールドg3を参照する。
【0039】
図8は、頻出コードテーブルを持った場合のプログラムメモリ1の構成方法を示す。
【0040】
タグが0の時と1の時の両方を動作させるためには、タグが0の時のモードのアドレス計算と、タグが1の時のモードのアドレス計算を平行して行い、タグの値に応じてその出力を切り替える必要がある。そのため、圧縮コードメモリ10の出力を、タグが0の時のモードのアドレス計算ユニット34と、タグが1の時のモードのアドレス計算ユニット35が共に受けて、それぞれ自分のモードであると思いアドレスを計算した後、その出力をタグの値を使って選択する。セレクタ201,202もタグの値を参照して選択方法を変える。
【0041】
図9は辞書の作成方法を示している。
【0042】
辞書はアドレスの小さいほうから順に作成して行く。4命令毎に並べた各行を辞書の既作成部分とマージすることで、順に辞書を大きくしていき、全ての行をマージし終えたところで終了する。
【0043】
最初は既作成部分が存在しないので、適当な行を辞書に登録する。既作成部分の末尾を注目位置とする。注目位置から相対アドレス範囲、今の場合32個だけさかのぼった領域内で相対アドレスの制約が満たされる配置で、各行に幾つこの領域と重複する命令が存在するかをカウントして、最も共通した命令が多かった行を次にマージする。共通する命令数が最も多い行が複数存在する場合には、次に別の行をマージしたら共通命令が減ってしまうような緊急度の高い行を優先的にマージする。マージの方法としては共通な命令がこの領域に存在しなかった、つまり共通化できなかった命令を注目位置の後に並べることにする。このようにして辞書を作成すれば、相対アドレスの制約を満たす形で辞書を作成することができる。
【0044】
また、辞書作成の段階で4つのうち先頭の命令がマージされたところのアドレスがフィールドf0となり、2番目から4番目までの命令がマージされたところのアドレスとの差がそれぞれf1,f2,f3となる。
【0045】
このように辞書を作成していくと、辞書の内アドレスの小さいほうに登録されている命令コードは多くの圧縮コードから参照され、逆にアドレスが大きくなるに連れあまり参照されない命令コードが多くなる。また、f1,f2,f3の相対アドレスについても、相対アドレスで表すことのできる範囲、今の場合−16から+15までが均等に出現するわけではなく、0近辺が多く使われる。0から離れているところは、あまり使われていないという偏りが生じる。この偏りも圧縮率の向上に利用するため、各フィールドのビット数を固定にするのではなく、可変とする。可変としたことで、頻繁に出てくる値にはより短いビット長を割り当て、頻繁に出てこない値に対してはもっと広い相対アドレスを割り振ることが可能となる。
【0046】
フィールドf0は値が小さいものが多く出てくる傾向にあるので、画一的に17bit を割り当てるのではなく、小さい値に対しては16bit 、大きい値に対しては18bit を割り当てるようにする。その結果、絶対アドレスが小さい時は、より範囲の広い相対アドレスを使用することができるので共通化し易くなる。実際には16bit 表示時には先頭に0、18bit 表示時には先頭に1をつけるなどすれば良い。また、フィールドf1,f2,f3は、0に近い値には短いビット長を、絶対値の大きい値には長いビット長を割り当てることで、全体としてはビット数を節約できる。余ったビットを、より広い範囲を指せる相対アドレスとして活用できる。代表的な可変長の符号としては、ハフマン符号やSSS符号などが知られているが、ここではGolomb−Rice符号を用いる方法を使う。これはGolomb−Rice符号がハードウェアで簡単にデコードできる特徴を持つためである。
【0047】
図10は、Golomb−Rice符号を使って相対アドレスを表す際の方法を示している。
【0048】
左の列が8次のGolomb−Rice符号であり、次の行に対応する10進表示と2進表示を書いている。8次のGolomb−Rice符号は、上位の3bit が0から7まで繰り返し変化し、一巡するたびにその後に続く0の数が1ずつ増えていく。最下位ビットは常に1である。従ってデコードの際は、上位3bit の値にその後に続く0の数の8倍を足すことで値が分かる。また、1つの符号の終了位置も明確である。即ち、上位3bit の次に出てきた1が終了位置である。
【0049】
8次のGolomb−Rice符号は0以上の値しか表せないので、そのデコード結果の2進表示にある変換を加える。即ち、最下位ビットを最上位に移動してできた数から、以前の最下位ビットの値を引くのである。こうしてできた変換後の値を10進表示したものが次の列である。最後の列には8次のGolomb−Rice符号のビット長が記されている。確かに、0近辺に短いビット長が、大きい絶対値の値には長いビット長が割り当てられている。
【0050】
図11は、各フィールドを可変長にした場合のプログラムメモリ1の構成方法を示す。
【0051】
このときは、圧縮コードメモリ10の出力に対して可変長符号のデコーダ51を設けている。図12は、大きなプログラムで辞書が大きくなり、アドレスが不足して辞書全体を指せなくなった場合のプログラムメモリ1の構成方法を示す。
【0052】
この場合は、圧縮コードメモリ10に複数の圧縮コードブロック11,12,13,…に区切り、それぞれの圧縮コードブロックが参照する辞書ブロック21,22,23,…を独立に設ける。つまり、各辞書ブロックを共通化することはしない。また、それぞれの辞書ブロックは、それ全体がアドレス指定できる大きさにする。そして、圧縮コードブロックの境目のアドレスを記憶するブロック境界レジスタ81,82,83,…を設け、入力される命令アドレス100に対してこれらのレジスタとアドレスの大小比較を行って、圧縮コードブロックを特定する。各圧縮コードブロックは独自の辞書ブロックを使って命令コードに展開する。辞書ブロックの境のアドレスは、圧縮コードブロックの境のアドレスと共にブロック境界レジスタに保持するようにしても良いし、多少の無駄が出るが特定の切りの良いアドレスから各辞書ブロックを配置するようにしても良い。
【0053】
図13はプログラムが圧縮する部分と、しない部分に分かれている場合のプログラムメモリ1の構成方法を示している。
【0054】
この場合には、圧縮コードメモリ10と非圧縮コードメモリ15の境界のアドレスを記憶する圧縮境界レジスタ91を設ける。
【0055】
入力された命令アドレス100と圧縮境界レジスタ91の保持するアドレスの大小比較によって、命令アドレスが圧縮コードメモリ10と非圧縮メモリ15のどちらを指しているのかを特定する。非圧縮コードメモリ15であれば通常のメモリ読み出し動作を、圧縮コードメモリ10であれば上記のように圧縮コードの指す辞書メモリ20のアドレスに格納された命令コードに展開する。
【0056】
非圧縮コードメモリ15を指す場合の物理アドレスは(命令アドレス−圧縮境界レジスタ値)+圧縮境界レジスタ値/2として計算される。
【0057】
圧縮コードメモリ10と非圧縮コードメモリ15は複雑に混じりあっても良いが、圧縮境界レジスタがたくさん必要であることと、物理アドレスの計算が煩雑になることを考えるとあまり現実的とは言えない。
【0058】
本発明によるコード圧縮方式は、プログラムに出現する命令コードとデータを、それより短い語長の圧縮コードに変換して圧縮コードメモリに持ち、圧縮コードを命令コードとデータに展開するためのデータを辞書メモリに持ち、圧縮コードを辞書メモリのアドレスとして辞書メモリの読み出しを行い、一つの圧縮コードにはプログラムコード上連続している命令コードに対応する複数の辞書メモリのアドレスが共通な情報を重複しないように保持されている。
【0059】
このため、圧縮していない命令コードやデータを読み出す場合に比べて、オーバヘッドは辞書メモリ読み出し時間のみとなる。マイクロコントローラの動作周波数を向上させるには、1クロック内の処理を少なくする必要があるが、本方式では圧縮コードメモリ読み出しと辞書メモリ読み出しのステージを分けることにより、命令コードを圧縮しない場合と同等の動作クロックを実現可能である。また、分岐や割込みなどにより命令アドレスが非連続となる場合の性能低下を少なく抑えることができる。
【0060】
圧縮コードメモリ領域にはマイクロコントローラが実行する命令以外に、メモリ参照命令で読み出すデータが格納されている場合がある。メモリ参照命令の実行により、圧縮コードメモリからのデータ読み出しが発生すると、後続の命令読み出しを止めなくてはならないため、命令の供給量が減り性能が低下する。これは、命令を圧縮する、しないに関わらず、同一のメモリを命令フェッチとデータ参照に使用する場合に発生する。本発明では、上記問題の発生確率を減らすために、圧縮コードメモリから圧縮コードを読み出し、その中に含まれる複数の辞書メモリのアドレスのうち連続した命令コードに対応する2つのアドレスを読み出し辞書メモリの2個所を参照する、予め1つの圧縮コードに含まれる辞書メモリのアドレスが近くなるように辞書を作っておき、辞書メモリの出力段のセレクタをページ内のコードならば不連続に配置されていてもアラインして出力するようにすれば多くの場合2つの圧縮コードを同時に展開できるようになる。
【0061】
1つの圧縮コードに4つのアドレス情報が含まれている場合を考えると、圧縮コードに含まれる2つの辞書メモリアドレスに対応する2コードを同時に展開できる場合には、圧縮コードメモリと辞書メモリの読み出しはそれぞれ2クロックに1回となる。これら2つの辞書メモリアドレスが同一ページに含まれていない場合には、辞書メモリの読み出しは1クロックに1回となる。ほとんどの場合これら2つの辞書メモリアドレスが同一ページに含まれていると考えられるので、4クロックに2回だけ命令を読み出せばよくなり、平均して4クロックにほぼ2回は命令の読み出しが発生しないことになる。この命令読み出し不要のサイクルを利用してデータを参照することにより、命令読み出しを止めることなく処理を進めることができる。
【0062】
【発明の効果】
本発明によれば、プログラムメモリの容量を削減し、命令実行を高速に行うマイクロコントローラを提供することができる。
【図面の簡単な説明】
【図1】本発明の実施例であるマイクロコントローラ装置のブロック図である。
【図2】本発明の実施例であるマイクロコントローラによる圧縮命令の動作を説明する模式図である。
【図3】本発明の実施例であるプログラムメモリの模式図である。
【図4】本発明の他の実施例であるプログラムメモリの模式図である。
【図5】本発明の他の実施例であるプログラムメモリの模式図である。
【図6】本発明の実施例である圧縮コードの模式図である。
【図7】本発明の他の実施例であるプログラムメモリの模式図である。
【図8】本発明の他の実施例であるプログラムメモリの模式図である。
【図9】本発明の実施例である辞書の作成方法を示す模式図である。
【図10】本発明の実施例である相対アドレスの説明図である。
【図11】本発明の他の実施例であるプログラムメモリの模式図である。
【図12】本発明の他の実施例であるプログラムメモリの模式図である。
【図13】本発明の他の実施例であるプログラムメモリの模式図である。
【符号の説明】
1…プログラムメモリ、2…CPU、3…RAM、4…BSC、5…DMA、6…INT、7…周辺モジュール、10…圧縮コードメモリ、20…辞書メモリ、100…命令アドレス、101…辞書メモリアドレス、200…辞書メモリの出力、1000…CPUバス、1001…周辺モジュールバス。
Claims (9)
- プログラムメモリを備え、前記プログラムメモリから命令コードを読み出して実行するマイクロコントローラにおいて、
連続した複数の前記命令コードを圧縮コードに変換して格納し、命令アドレスで前記圧縮コードを読み出す圧縮コードメモリと、
前記圧縮コードから生成されるアドレスに従って前記命令コードを読み出す辞書メモリを備え、前記圧縮コードメモリには、前記辞書メモリにおける前記複数の命令コードのアドレス情報がアドレス長の総和より短いビット数で格納されていることを特徴とするマイクロコントローラ。 - 前記圧縮コードは前記辞書メモリにおける連続する複数の命令コードのアドレス情報を有し、先頭の命令コードに対しては辞書メモリ上の絶対アドレスを、それに続く命令コードに対しては前記絶対アドレスからの相対アドレスとして保持することを特徴とする請求項1記載のマイクロコントローラ。
- クロックで動作するレジスタを備え、前記レジスタの出力から前記辞書メモリヘのアドレスを生成することを特徴とする請求項1記載のマイクロコントローラ。
- 前記圧縮コードから生成される複数のアドレスに従い、前記辞書メモリから連続した複数の命令コードを同時に読み出すことを特徴とする請求項1記載のマイクロコントローラ。
- プログラム中で頻繁に出現する命令コードを頻出コードとして格納する頻出コードテーブルを有し、前記圧縮コードは前記頻出コードを含む複数の命令コードが変換されたコードか否かを表すタグ情報を有し、前記頻出コードを含む複数の命令コードが変換された圧縮コードである場合には、圧縮コードの一部に前記頻出コードテーブル上のアドレスを有することを特徴とする請求項1記載のマイクロコントローラ。
- フィールドを有する前記圧縮コードにおいて、フィールドが可変長であることを特徴とする請求項1記載のマイクロコントローラ。
- 前記圧縮コードメモリは複数の圧縮コードブロックに分割でき、各圧縮コードブロックは前記アドレスに従い命令コードを出力する辞書メモリをそれぞれ個別に有し、各圧縮コードブロックの境界アドレスを保持するレジスタを備えたことを特徴とする請求項1記載のマイクロコントローラ。
- 前記圧縮コードメモリは圧縮コードを格納している領域と非圧縮の命令コードを格納している領域の両方を有する時、領域の境のアドレスを保持するレジスタを有することを特徴とする請求項1記載のマイクロコントローラ。
- プログラムメモリを備え、前記プログラムメモリから命令コードを読み出して実行するマイクロコントローラと、インターフェースを介して前記マイクロコントローラと接続された外部デバイスを有するマイクロコントローラ装置において、
前記マイクロコントローラは、連続した複数の前記命令コードを圧縮コードに変換して格納し、命令アドレスで前記圧縮コードを読み出す圧縮コードメモリと、前記圧縮コードから生成されるアドレスに従い前記命令コードを読み出す辞書メモリを備え、
前記圧縮コードメモリには、前記辞書メモリにおける前記複数の命令コードのアドレス情報がアドレス長の総和より短いビット数で格納されていることを特徴とするマイクロコントローラ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002302431A JP3792633B2 (ja) | 2002-10-17 | 2002-10-17 | マイクロコントローラ、及びマイクロコントローラ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002302431A JP3792633B2 (ja) | 2002-10-17 | 2002-10-17 | マイクロコントローラ、及びマイクロコントローラ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004139290A JP2004139290A (ja) | 2004-05-13 |
JP3792633B2 true JP3792633B2 (ja) | 2006-07-05 |
Family
ID=32450491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002302431A Expired - Fee Related JP3792633B2 (ja) | 2002-10-17 | 2002-10-17 | マイクロコントローラ、及びマイクロコントローラ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3792633B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320775A1 (en) * | 2010-06-27 | 2011-12-29 | Edson Borin | Accelerating execution of compressed code |
-
2002
- 2002-10-17 JP JP2002302431A patent/JP3792633B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004139290A (ja) | 2004-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050198471A1 (en) | Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein | |
US7616137B2 (en) | Method and apparatus for compression and decompression of an executable code with a RISC processor | |
US5964861A (en) | Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set | |
EP0614191A2 (en) | Instruction memory system for risc microprocessor capable of preforming program counter relative addressing | |
US6158046A (en) | Computer device and method for processing data utilizing pseudoinstruction words | |
US5265258A (en) | Partial-sized priority encoder circuit having look-ahead capability | |
JP2001005675A (ja) | プログラム変換装置及びプロセッサ | |
JP4921310B2 (ja) | 命令ビット長削減方法 | |
CN101911011B (zh) | 确定表内的元素的地址的系统和方法 | |
US6308249B1 (en) | Storing data in a grey code system | |
JP3792633B2 (ja) | マイクロコントローラ、及びマイクロコントローラ装置 | |
JP2009253514A (ja) | 可変長符号復号装置、可変長符号復号方法およびプログラム | |
US7676651B2 (en) | Micro controller for decompressing and compressing variable length codes via a compressed code dictionary | |
US7308553B2 (en) | Processor device capable of cross-boundary alignment of plural register data and the method thereof | |
US20040024992A1 (en) | Decoding method for a multi-length-mode instruction set | |
US6237080B1 (en) | Executable programs | |
EP0472025A2 (en) | A microprocessor | |
US6502179B2 (en) | Method and apparatus for compactly storing instruction codes | |
JPH11163736A (ja) | プロセッサ | |
JP2006155448A (ja) | データ処理装置およびデータ処理装置の設計方法 | |
JPH06149563A (ja) | データ処理装置 | |
US7472255B2 (en) | Method for addressing a symbol in a memory and device for processing symbols | |
US6684286B1 (en) | High-speed block transfer circuit | |
JP2003099250A (ja) | レジスタ読み出し回路及びマイクロプロセッサ | |
JP2006270330A (ja) | 可変長符号復号回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040315 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040315 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040510 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050901 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050906 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051104 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051206 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060123 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060215 |
|
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: 20060307 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060405 |
|
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: 20090414 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100414 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100414 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110414 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110414 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: 20110414 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: 20120414 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120414 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130414 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140414 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 |