JP3958239B2 - マイクロコントローラ - Google Patents

マイクロコントローラ Download PDF

Info

Publication number
JP3958239B2
JP3958239B2 JP2003094686A JP2003094686A JP3958239B2 JP 3958239 B2 JP3958239 B2 JP 3958239B2 JP 2003094686 A JP2003094686 A JP 2003094686A JP 2003094686 A JP2003094686 A JP 2003094686A JP 3958239 B2 JP3958239 B2 JP 3958239B2
Authority
JP
Japan
Prior art keywords
frequency
instruction
clock
code
division ratio
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
Application number
JP2003094686A
Other languages
English (en)
Other versions
JP2004302827A (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 JP2003094686A priority Critical patent/JP3958239B2/ja
Priority to US10/804,143 priority patent/US7197653B2/en
Priority to CNB2004100342255A priority patent/CN100365567C/zh
Publication of JP2004302827A publication Critical patent/JP2004302827A/ja
Application granted granted Critical
Publication of JP3958239B2 publication Critical patent/JP3958239B2/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、システムクロックに同期して動作し、ROM等のメモリ上の命令プログラムに対し、パイプライン処理によりフェッチ、解読および実行するマイクロコントローラに関する。
【0002】
【従来の技術】
低消費電力化の観点でマイクロコントローラを用いたシステムを見直した場合、すべてのタスクにおいてマイクロコントローラの最高周波数での動作が必要とされるわけではない。要は、システムのパフォーマンスを落とさない最低限の動作周波数であればよい。
【0003】
一般的なマイクロコントローラにおいてはこのような場合を想定し、原発振からシステムクロックを生成する過程で分周比を変更できる構成としている。
【0004】
従来のマイクロコントローラでは、分周比の制御はアドレスマッピングされたレジスタへの任意データの設定によって行われることが多いが、このような構成の場合、消費電力、動作周波数を細やかな制御を試みても書き込みのための命令実行サイクル分の時間的ロスが発生してしまうことが障害になり、意図した周波数制御および電力制御の効果が得られない場合がある。これら課題の対策として、一方ではアクセスしたメモリ空間に応じて周波数を変更しているものもある(例えば特許文献1参照)。しかしながら、変更すべき周波数に割り当てられたメモリ空間へのジャンプ命令の実行が必要になるためいずれにしても完全な課題解決には至っていない。
【0005】
以上のような従来のマイクロコントローラについて、以下に説明する。図10、図11は、従来のマイクロコントローラの概略構成を示すブロック図であり、図10はその内部のクロックジェネレータの構成を詳細に示し、図11はその内部のCPUの構成を詳細に示したものである。
【0006】
図10において、1000はマイクロコントローラであり、100はCPUである。ROM700とはバスを介して接続され、クロックジェネレータ800とはバスを介した接続以外にクロックジェネレータ800からシステムクロックsysclkが入力されマイクロコントローラ1000はこのsysclkに同期して動作する。クロックジェネレータ800は原発振oscinを入力とし、クロック分周回路801、セレクタ802、クロック分周制御回路803、クロック分周制御レジスタ804から構成される。クロック分周回路801はoscinを分周し、1分周信号の他複数の分周信号を生成する。クロック分周制御レジスタ804はCPU100の処理する命令によってリード/ライト可能なレジスタで設定されるデータによってクロック分周回路801で生成される分周信号のうちひとつを選択する情報を保持する。クロック分周制御回路803はクロック分周制御レジスタ804に設定されたデータをもとにクロック切り替えのタイミングを調整し、セレクタ802の制御信号oscselを出力する。セレクタ802はoscselに従いクロック分周回路801から出力される分周信号の中からひとつを選択し、sysclkとしてCPU100に伝達する。
【0007】
図11において、CPU100は、命令デコーダ400、データパス300、データレジスタ500、アドレスレジスタ600、バスインターフェイス200から構成され、CPU内部でのデータのやり取りはバスインターフェイス200を介して行い、CPUの動作はマイクロコード(MIR)によって制御される。次に、上記のように構成されたマイクロコントローラについて、8ビットマイクロコントローラを例にその一般的な動作を以下に説明する。
【0008】
まず、ROM700から入力されたデータは、バスインターフェイス200を経由して、命令デコーダ400内のインストラクションフェッチバッファ(IFB)401に取り込まれ、インストラクションバッファ(IB)402を経由し、その後、オペレーションコードとオペランドに分割される。
【0009】
IB402から出力されたオペレーションコードは、インストラクションレジスタ(IR)403に入力された後、プログラマブルロジックアレイ(PLA)404に解読され、MIRとしてバスインターフェイス200、データパス300、命令デコーダ400の各構成ブロックへ供給され、各構成ブロックは、入力されたMIRに従った処理動作を実行する。
【0010】
またIB402から出力されたオペランドは、MIRに従って、データパス300あるいはデータレジスタ500やアドレスレジスタ600などへ伝達される。
【0011】
システムクロックsysclkの分周比を変更するにはアドレスマッピングされたクロック分周制御レジスタ804に対して各分周比に相当する設定値を書き込むことでクロック分周制御回路803で切り替えタイミングを調整し、選択信号oscselをセレクタ802に出力し、それに応じてセレクタ802では分周信号を選択し、sysclkとしてCPU100に伝達する。
【0012】
以上のような従来のマイクロコントローラの動作をプログラム例、タイミングチャートを用いて説明する。
【0013】
図12の(a)、(b)、(c)は、従来のマイクロコントローラの命令フォーマット、プログラム例、動作タイミングチャートである。
【0014】
命令フォーマットは、命令マップのページ数を示す4ビットの拡張コードと、8ビットのオペコード(オペレーションコード)と、4×nビット(n=1,2・・・)のオペランドとで構成される。
【0015】
プログラム例は▲1▼から▲7▼の命令を実行するものとし、sysclkをoscinの1分周で命令▲1▼を実行した後、命令▲2▼により分周比を1分周から2分周に切り替える。命令▲3▼および▲4▼を実行した後、命令▲5▼により再度1分周に戻し命令▲6▼および命令▲7▼を実行する。タイミングチャート中に示される記号で▲1▼−1はプログラム例の命令▲1▼の1ニブル目のマシンコードを示し、▲1▼μ−1は命令▲1▼の実行サイクル1サイクル目を表すものとする。T1、T2は各々sysclkの立下りエッジ、立ち上がりエッジのタイミングを示す。タイミングAにおいてoscselが‘L’であるためsysclkは1/1oscinの周期で動作する。IFB401、IB402はT1で命令▲1▼−1と▲1▼−2をROM700からフェッチする。命令▲1▼−1は拡張コード、▲1▼−2はオペコードの1ニブル目でありオペランドではないためいずれのデータもIR403に対して出力する。タイミングBにおいてIR403はT2で▲1▼−1,2をラッチし、PLA404に出力しPLA404はデコードを開始する。▲1▼−1は拡張コードであり、▲1▼−2はオペコードの2ニブル目がフェッチされるまで処理されないため、タイミングCにおいて次のT1では▲1▼−1に相当するMIR(▲1▼μ−1)のみを拡張コードの認識サイクルとして出力する。また同時にIFB401は命令▲1▼−3と▲2▼−1をフェッチする。タイミングDにおいてIR403は命令▲1▼の残り1ニブルのオペコード▲1▼−3を取り込み、処理待ちの▲1▼−2とともにPLA404にてデコードする。タイミングEにおいては▲1▼−2,3のMIR(▲1▼μ−2)を出力するとともに▲2▼−2,3をIFB401がフェッチする。また、タイミングDでIR403に取り込まれなかった▲2▼−1はタイミングEでIB402にシフトする。なお、▲3▼−1のように拡張コードがIFB401、IB402を経由した場合にはその間に認識されるためタイミングFではIR403には取り込まれず、オペコードである▲3▼−2,3がIR403に取り込まれる。
【0016】
命令▲2▼では実行サイクル▲2▼μ−3でのクロック分周制御レジスタ804への書き込みによってタイミングGでoscselが‘H’になり、sysclkの周期を1/1oscinから1/2oscinに変更する。同様に命令▲5▼によってsysclkの周期を1/2oscinから1/1oscinに戻す。
【0017】
以上のように従来のマイクロコントローラはクロック分周制御レジスタ804への書き込み命令によって周波数を制御することができる。
【0018】
【特許文献1】
特開平02−118811号公報
【0019】
【発明が解決しようとする課題】
しかしながら上記のような従来のマイクロコントローラにおいては、周波数の変更のためにレジスタへの書き込み命令実行のために数サイクル分が必要となる。これによって、周波数制御による消費電力の調整をシステムのパフォーマンスを維持したままきめ細かく行うことができないという問題点を有していた。
【0020】
本発明は、上記従来の問題点を解決するもので、周波数変更に要するタイムラグを解消することができ、タスクに応じた周波数制御を的確かつ迅速に実行することにより、消費電力を低減化することができるマイクロコントローラを提供する。
【0021】
本発明の請求項1記載のマイクロコントローラは、発振周波数の1/n(nは分周比で1以上の整数)の周波数であって異なる周波数の複数のクロック信号の中から周波数情報に応じたクロック信号をシステムクロックとして入力し、システムクロックに同期して動作し、メモリに格納された拡張コードとオペレーションコードとオペランドからなる命令プログラムに対して、パイプライン処理により拡張コードとオペレーションコードとオペランドをフェッチして解読し、その解読結果に基づいて命令プログラムを実行するプロセッサを備え、マシンコードによってオペレーションコードを各分周比に対応してページに分類された複数ページからなる命令マップとして構成し、オペレーションコードとともにパイプライン処理される拡張コードが命令マップのページを示し、プロセッサは、拡張コードをパイプライン処理によりフェッチ、解読することにより拡張コードが示す命令マップのページに対応する分周比に応じた周波数情報を出力することを特徴とする。
【0024】
この構成によれば、既存の拡張コードエリアが周波数制御情報をもつため、回路規模の増加はなく、オペレーションコードより先にデコードされることにより周波数変更すべき命令の実行サイクルと周波数変更タイミングを合わせやすく、より的確にプログラム開発者の意図に応じた低消費電力化が可能となる。
【0025】
また、請求項記載のマイクロコントローラのように、請求項1記載のマイクロコントローラにおいて、発振周波数の1/n(nは分周比で1以上の整数)の周波数であって異なる周波数の複数のクロック信号を生成し、その中からプロセッサから出力される周波数情報に応じたクロック信号を選択してプロセッサへシステムクロックとして出力するクロックジェネレータを設けてあってもよい。
【0026】
また、このクロックジェネレータは、請求項のように、発振周波数の1/n(nは分周比で1以上の整数)の周波数であって異なる周波数の複数のクロック信号を出力する分周手段と、分周手段の出力する複数のクロック信号の中から選択信号に基づいて1つのクロック信号を選択しシステムクロックとして出力する選択手段と、プロセッサから出力される周波数情報に対応する選択信号を選択手段に出力する制御手段とを有した構成とすることができる。
【0027】
また、請求項記載のマイクロコントローラは、請求項1記載のマイクロコントローラにおいて、ソースプログラムに記述されたシステムクロックの分周比を決定する分周比設定記述に従って分周比に対応する拡張コードを選択し、拡張コードが示す命令マップのページから分周比設定記述の後段の命令に相当するオペレーションコードを選択しROMコード化する手段を設けている。
【0028】
これにより、システムクロックの分周比の設定、その分周比に相当する命令コードの選択は固有の分周比設定記述によりプログラム開発者の負担なくコンパイラによって自動でマシンコード化が可能となる。
【0029】
また、請求項記載のマイクロコントローラは、発振周波数の1/n(nは分周比で1以上の整数)の周波数であって異なる周波数の複数のクロック信号の中から周波数情報に応じたクロック信号をシステムクロックとして入力し、システムクロックに同期して動作し、メモリに格納されたオペレーションコードとオペランドからなる命令プログラムに対して、パイプライン処理によりオペレーションコードとオペランドをフェッチして解読し、その解読結果に基づいて命令プログラムを実行するプロセッサを備え、オペレーションコードはシステムクロックの分周比を決定する周波数制御信号が付加されてメモリに格納されており、プロセッサは、周波数制御信号をオペレーションコードとともにパイプライン処理によりフェッチ、解読することにより周波数制御信号に応じた周波数情報を出力するマイクロコントローラにおいて、ソースプログラムに記述されたシステムクロックの分周比を決定する分周比設定記述に従って周波数制御信号を生成し、分周比設定記述の前段の命令の実行サイクル数が基準未満であれば周波数制御信号を分周比設定記述の前段の命令から生成されるオペレーションコードに付加し、基準以上であれば周波数制御信号を分周比設定記述の後段の命令から生成されるオペレーションコードに付加しROMコード化する手段を設けている。
【0030】
これにより、周波数制御信号がオペレーションコードとともにデコードされ実行されるまでの処理時間による周波数変更すべき命令の実行サイクルと周波数変更タイミングの誤差を削減することが可能となる。
【0033】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら具体的に説明する。
【0034】
(実施の形態1)
本発明の実施の形態1のマイクロコントローラについて説明する。図1、図2は、本実施の形態1のマイクロコントローラの概略構成を示すブロック図であり、図1はその内部のクロックジェネレータの構成を詳細に示し、図2はその内部のCPUの構成を詳細に示したものである。
【0035】
図1において、1000はマイクロコントローラであり、100はCPUである。CPU100とROM700とはバスを介して接続され、クロックジェネレータ800は原発振oscinを入力とし、クロック分周回路801、セレクタ802、クロック分周制御回路803から構成され、CPU100から出力されるマイクロコードMIRからシステムクロックsysclkの分周比を決定し、CPU100に伝達する。マイクロコントローラ1000はこのsysclkに同期して動作する。クロック分周回路801は原発振oscinを分周し、1分周信号の他複数の分周信号を生成する。クロック分周制御回路803はCPU100から出力されたMIRをもとにクロック切り替えのタイミングを調整し、セレクタ802の制御信号oscselを出力する。セレクタ802はoscselに従いクロック分周回路801から出力される分周信号の中からひとつを選択し、sysclkとしてCPU100に伝達する。
【0036】
図2において、CPU100は、命令デコーダ400、データパス300、データレジスタ500、アドレスレジスタ600、バスインターフェイス200から構成され、CPU内部でのデータのやり取りはバスインターフェイス200を介して行い、CPUの動作はマイクロコード(MIR)によって制御される。
【0037】
次に、上記のように構成された実施の形態1のマイクロコントローラの動作を説明する。
【0038】
まず、ROM700から入力されたデータは、バスインターフェイス200を介して命令デコーダ400内のインストラクションフェッチバッファ(IFB)401に取り込まれ、インストラクションバッファ(IB)402を経由し、その後オペレーションコードとオペランドに分割される。
【0039】
IB402から出力されたオペレーションコードは、インストラクションレジスタ(IR)403に入力された後、プログラマブルロジックアレイ(PLA)404に解読され、MIRとしてバスインターフェイス200、データパス300、命令デコーダ400の各構成ブロックへ供給され、各構成ブロックは、入力されたMIRに従った処理動作を実行する。
【0040】
また、IB402から出力されたオペランドは、MIRに従って、データパス300あるいはデータレジスタ500やアドレスレジスタ600などへ伝達される。
【0041】
システムクロックsysclkの分周比を変更するメカニズムは、オペレーションコードに付加された周波数制御信号をオペレーションコードとともに解読し、MIRとしてクロック分周制御回路803に伝達される。クロック分周制御回路803においては伝達されたMIRをもとに切り替えタイミングを調整し、選択信号oscselをセレクタ802に出力し、セレクタ802で分周信号を選択し、sysclkとしてCPU100に伝達する。
【0042】
以上のような本実施の形態1のマイクロコントローラの動作をプログラム例、タイミングチャートを用いて説明する。
【0043】
図3の(a)、(b)、(c)は、本実施の形態1のマイクロコントローラの命令フォーマット、プログラム例、動作タイミングチャートである。ここでは8ビットマイクロコントローラを例にsysclkの分周比をoscinの1分周から2分周そして再度1分周に切り替える動作を示している。
【0044】
命令フォーマットは、命令マップのページ数を示す4ビットの拡張コードと、8ビットのオペコード(オペレーションコード)と、オペコードに付加した1ビットの周波数制御信号と、4×nビット(n=1,2・・・)のオペランドとで構成される。
【0045】
プログラム例は▲1▼から▲7▼の命令を実行するものとし、命令▲3▼からsysclkの分周比をoscinの1分周から2分周に切り替え、命令▲6▼以降再度1分周に切り替える。オペコードに付加された周波数制御信号は*0または*1で表し、*0のとき1分周を、*1のとき2分周を選択するものとする。タイミングチャート中に示される記号で▲1▼−1はプログラム例の命令▲1▼の1ニブル目のマシンコードを示し、▲1▼μ−1は命令▲1▼の実行サイクルの1サイクル目を表すものとする。T1、T2は各々sysclkの立下りエッジ、立ち上がりエッジのタイミングを示す。
【0046】
タイミングAにおいてoscselが‘L’であるためsysclkは1/1oscinの周期で動作する。IFB401、IB402はT1で命令▲1▼−1と▲1▼−2をROM700からフェッチする。命令▲1▼−1は拡張コード、▲1▼−2はオペコードの1ニブル目でありオペランドではないためいずれのデータもIR403に対して出力する。タイミングBにおいてIR403はT2で▲1▼−1,2をラッチし、PLA404に出力しPLA404はデコードを開始する。▲1▼−1は拡張コードであり、▲1▼−2はオペコードの2ニブル目がフェッチされるまで処理されないため、タイミングCにおいて次のT1では▲1▼−1に相当するMIR(▲1▼μ−1)のみを拡張コードの認識サイクルとして出力する。また同時にIFB401は命令▲1▼−3と▲3▼−1をフェッチする。タイミングDにおいてIR403は命令▲1▼の残り1ニブルのオペコード▲1▼−3を取り込み、処理待ちの▲1▼−2とともにPLA404にてデコードする。タイミングEにおいては▲1▼−2,3のMIR(▲1▼μ−2)を出力するとともに▲3▼−2,3をIFB401がフェッチする。また、タイミングDでIR403に取り込まれなかった▲3▼−1はタイミングEでIB402にシフトする。なお、▲3▼−1のように拡張コードがIFB401、IB402を経由した場合にはその間に認識されるためタイミングFではIR403には取り込まれず、オペコードである▲3▼−2,3がIR403に取り込まれる。
【0047】
▲3▼−3は付加された周波数制御信号に2分周制御の情報(*1)を保有しているため▲3▼μ−1のサイクル中にMIRとしてクロックジェネレータ800に出力される。クロック分周制御回路803は切り替えタイミングを調整しタイミングGでoscselを‘H’としsysclkを1/2oscinに切り替える。同様に命令▲6▼に付加された周波数制御信号によって1/1oscinに戻す。
【0048】
なお、付加される周波数制御信号は1ビットに限らずマイクロコントローラの仕様によって数ビットになる場合もある。
【0049】
以上のように本実施の形態1によれば、オペレーションコードにシステムクロックの分周比を決定する周波数制御信号を付加することにより、オペレーションコードと同様にパイプラインの中で処理されるため、従来のように周波数制御レジスタ(804)へ設定データを書き込む時間を必要とせず、システムのパフォーマンスを落とさずマイクロコントローラの低消費電力化を効果的に実現することができる。また、本実施の形態では8ビットマイクロコントローラを例に説明しているが、ビット数が多くなれば付加するビットの回路規模への影響は極めて小さなものになり、本発明の効果はさらに大きくなる。
【0050】
(実施の形態2)
本発明の実施の形態2のマイクロコントローラについて説明する。
【0051】
図4は、本実施の形態2のマイクロコントローラの概略構成を示すブロック図である。実施の形態1との違いはIFB401、IB402、IR403、PLA404と伝達されるオペレーションコードに周波数制御信号を付加しないため8ビットで構成される点のみで、その他は実施の形態1のマイクロコントローラと同様である。したがって、クロックジェネレータ800の内部構成は図1と同じである。
【0052】
次に、上記のように構成された実施の形態2のマイクロコントローラの動作を説明する。
【0053】
図5の(a)、(b)は、本実施の形態2のマイクロコントローラの命令マップ例である。命令マップは複数ページで構成され、分周比ごとに各ページに分類されている。したがって、命令マップのページ数を示す拡張コードによって同じオペレーションコードであっても異なる周波数で実行されることになる。例えば命令マップAと命令マップBはそれぞれ1分周と2分周に対応しており拡張コード‘0011’および‘0101’で分類している。マップ中のMC1とMC2はともに同じ実行内容の命令で拡張コード以外のマシンコードも同一である。これらのコードをCPUで処理した場合、同じ動作をMC1は1分周で行い、MC2は2分周で行うことになる。このように分周比に対応した拡張コードはパイプライン処理の中でオペコードと同様に解読され、MIRとしてクロック分周制御回路803に伝達される。クロック分周制御回路803においては伝達されたMIRをもとに切り替えタイミングを調整し、選択信号oscselをセレクタ802に出力し、それに応じてセレクタ802では分周信号を選択し、sysclkとしてCPU100に伝達する。
【0054】
以上のような本実施の形態2のマイクロコントローラの動作をプログラム例、タイミングチャートを用いて説明する。
【0055】
図6の(a)、(b)、(c)は、本実施の形態2のマイクロコントローラの命令フォーマット、プログラム例、動作タイミングチャートである。ここでは実施の形態1のマイクロコントローラにおける動作説明と同様に8ビットマイクロコントローラを例にsysclkの分周比をoscinの1分周から2分周そして再度1分周に切り替える動作を示している。
【0056】
命令フォーマットは、命令マップのページ数を示す4ビットの拡張コードと、8ビットのオペコード(オペレーションコード)と、4×nビット(n=1,2・・・)のオペランドとで構成される。実施の形態1のマイクロコントローラとの違いは周波数制御信号を付加していない点のみである。
【0057】
プログラム例は▲1▼から▲7▼の命令を実行するものとし、命令▲3▼からsysclkの分周比をoscinの1分周から2分周に切り替え、命令▲6▼以降再度1分周に切り替える。拡張コードの‘0011’はsysclkをoscinの1分周に設定する命令であることを示し、‘0101’2分周であることを示す。
【0058】
タイミングAにおいてoscselが‘L’であるためsysclkは1/1oscinの周期で動作する。IFB401、IB402はT1で命令▲1▼−1と▲1▼−2をROM700からフェッチする。命令▲1▼−1は拡張コード、▲1▼−2はオペコードの1ニブル目でありオペランドではないためいずれのデータもIR403に対して出力する。タイミングBにおいてIR403はT2で▲1▼−1,2をラッチし、PLA404に出力しPLA404はデコードを開始する。▲1▼−1は拡張コードであり、▲1▼−2はオペコードの2ニブル目がフェッチされるまで処理されないため、タイミングCにおいて次のT1では▲1▼−1に相当するMIR(▲1▼μ−1)のみを拡張コードの認識サイクルとして出力する。また同時にIFB401は命令▲1▼−3と▲3▼−1をフェッチする。タイミングDにおいてIR403は命令▲1▼の残り1ニブルのオペコード▲1▼−3を取り込み、処理待ちの▲1▼−2とともにPLA404にてデコードする。タイミングEにおいては▲1▼−2,3のMIR(▲1▼μ−2)を出力するとともに▲3▼−2,3をIFB401がフェッチする。また、タイミングDでIR403に取り込まれなかった▲3▼−1はタイミングEでIB402にシフトする。なお、▲3▼−1のように拡張コードがIFB401、IB402を経由した場合にはその間に認識されるためタイミングFではIR403には取り込まれず、オペコードである▲3▼−2,3がIR403に取り込まれる。
【0059】
▲3▼−1は拡張コードであり2分周制御の情報‘0101’を保有しており、IFB401、IB402を経由する間に解読されMIRとしてクロックジェネレータ800に出力される。クロック分周制御回路803は切り替えタイミングを調整しタイミングGでoscselを‘H’としsysclkを1/2oscinに切り替える。同様に命令▲6▼の拡張コードによって1/1oscinに戻す。拡張コードはオペコードより先にフェッチ、デコードされるため本来2分周で動作させたい▲3▼μ−1、▲3▼μ−2、▲4▼μ−1、▲4▼μ−2、1分周で動作させたい▲6▼μ−1、▲7▼μ−1、▲7▼μ−2が想定どおりに実行することが可能である。
【0060】
以上のように本実施の形態2によれば、拡張コードにシステムクロックの分周比を決定する情報を持たせることにより、オペレーションコードより早いサイクルでデコードすることが可能となるため、周波数を変更するためのタイムラグを最小に抑えることが可能となり、プログラム開発者は周波数制御をより簡単に正確に実行することが可能となる。したがって、周波数変更に要するタイムラグを解消しタスクに応じた周波数制御を的確かつ迅速に実行することによりマイクロコントローラの消費電力を低減することができる。
【0061】
なお、命令は1分周と2分周の2種類に限らずマイクロコントローラの仕様によって数種類になる場合もある。また、命令数は分周比ごとに同数存在する必要はなく、例えばデフォルトの分周比に相当する命令に対してその他の分周比に相当する命令数は数個に限定することも可能である。
【0062】
上記の実施の形態1と実施の形態2におけるマイクロコントローラ1000では、一般的なほとんどのマイクロコントローラと同様に、システムクロックを生成するクロックジェネレータ800を内蔵している構成としたが、クロックジェネレータ800は外付けであっても構わない。
【0063】
(実施の形態3)
本発明の実施の形態3のマイクロコントローラについて説明する。
【0064】
図7(a)は本実施の形態3のマイクロコントローラにおけるマシンコードの生成およびROMへの配置手順を示すフローチャート、図7(b)は本実施の形態3においてプログラムソースからコンパイラによってマシンコードを生成する方法を示す図である。図7(a)に示すように、プログラム開発によって作成されたプログラムソースは、通常コンパイラ等により発生されたデータファイルをもとに、ROMコードに変換された後、レイアウトパターンとして生成されROM配置される。しかし、従来のマシンコード生成フローでは、実施の形態1におけるマイクロコントローラのようにマシンコードに周波数制御信号を付加することはできない。
【0065】
本実施の形態3のマシンコード生成フローでは、プログラムソース内に分周比設定記述を挿入することでマシンコードに周波数制御信号を付加することができる。例えば、図7(b)のプログラム例のように命令▲1▼、▲3▼、▲4▼、▲6▼、▲7▼の順にプログラミングし、命令▲1▼、▲6▼、▲7▼は1分周で実行し、命令▲3▼、▲4▼は2分周で実行させたい場合、命令▲1▼の前段に‘set fast’と記述し、命令▲3▼の前段に‘set slow’、命令▲6▼の前段に‘set fast’と記述する。コンパイラは命令とその前段の‘set fast’あるいは‘set slow’の情報を入力として、命令をマシンコードに変換し、さらに前段の分周設定記述が‘set fast’であれば‘0’をオペコードに付加し、‘set slow’であれば‘1’を付加する。また、命令の前段に何も記述がなければ前のマシンコードの付加信号を継続する。
【0066】
すなわち本実施の形態3のマイクロコントローラは、前述した実施の形態1の構成において、上述のコンパイラと、コンパイラで生成したマシンコードをROMコードに変換する手段と、ROM配置する手段とを備えたものである。
【0067】
以上のように本実施の形態3によれば、周波数制御信号のオペレーションコードへの付加は、プログラム開発者の負担なくコンパイラによって自動でマシンコード化が可能となり、実施の形態1のマイクロコントローラの特徴を活かすことができる。
【0068】
(実施の形態4)
本発明の実施の形態4のマイクロコントローラについて説明する。
【0069】
図8(a)は本実施の形態4のマイクロコントローラにおけるマシンコードの生成およびROMへの配置手順を示すフローチャート、図8(b)は本実施の形態4においてプログラムソースからコンパイラによってマシンコードを生成する方法を示す図、図8(c)は本実施の形態4のマイクロコントローラの動作タイミングチャートである。ROMへの配置手順に関しては実施の形態3と同様であるが、プログラムソースからコンパイラによってマシンコードを生成する過程において生成ルールが異なる。
【0070】
実施の形態3では‘set fast’、‘set slow’によってオペコードに付加する周波数制御信号を決定するが、実施の形態1のマイクロコントローラでは分周比を変更する場合、オペコードに周波数制御信号を付加しているため、フェッチからデコード、実行し、oscselが切り替わるまでにやや時間を必要とする。そのため本来分周比を切り替えたい命令の実行タイミングに間に合わなくなる場合があり、プログラム開発者による周波数制御の詳細検討が必要となる。
【0071】
本実施の形態のマシンコード生成フローでは、実施の形態3と同様に命令▲1▼から▲7▼までのマシンコードを生成した場合、分周比設定記述とその前段の命令の実行サイクルをもとに周波数制御信号を決定する。
【0072】
例えば命令▲3▼の前段の‘set slow’は本来命令▲3▼を2分周で動作させる目的で挿入されているが、実施の形態1においては図3のようにオペコードに付加されているためoscselの切り替わりが遅れ、実際には命令▲4▼の実行サイクル(▲4▼μ−1)から切り替わることになる。この場合の対策として、命令▲3▼を2分周で実行するためにはその前の命令▲1▼に2分周制御の付加信号をもたせることによってちょうど▲3▼μ−1の実行タイミングGで2分周に切り替わる。ただし、命令▲1▼の実行サイクルが長い場合には命令▲1▼の処理周波数が2分周となってしまう。本実施の形態4においては、‘set fast’、‘set slow’の前段の命令の実行サイクルが基準サイクル未満であれば前段の命令のマシンコードに付加し、基準サイクル以上であれば後段の命令のマシンコードに付加する。図8の例では、基準サイクルを3サイクルとし、‘set fast’、‘set slow’の前段の命令の実行サイクルが3サイクル未満(すなわち2サイクル以下)であれば前段の命令のマシンコードに付加し、3サイクル以上であれば後段の命令のマシンコードに付加するようにしている。
【0073】
すなわち本実施の形態4のマイクロコントローラは、前述した実施の形態1の構成において、上述のコンパイラと、コンパイラで生成したマシンコードをROMコードに変換する手段と、ROM配置する手段とを備えたものである。
【0074】
以上のように本実施の形態4によれば、周波数制御信号のオペレーションコードへの付加は、命令の実行サイクル数に応じて決定するため、より正確に意図するタイミングで周波数の制御が可能となり、プログラム開発者が実行サイクル数を考慮してプログラミングする必要がないためプログラム開発効率の向上が可能となる。
【0075】
(実施の形態5)
本発明の実施の形態5のマイクロコントローラについて説明する。
【0076】
図9(a)は本実施の形態5のマイクロコントローラにおけるマシンコードの生成およびROMへの配置手順を示すフローチャート、図9(b)は本実施の形態5においてプログラムソースからコンパイラによってマシンコードを生成する方法を示す図である。ROMへの配置手順に関しては実施の形態3と同様であるが、プログラムソースからコンパイラによってマシンコードを生成する過程において生成ルールが異なる。
【0077】
本実施の形態のマシンコード生成フローでは、プログラムソース内に分周比設定記述を挿入することで設定した分周比に対応する拡張コードを選択し、分周比設定記述の後段の命令はその拡張コードによって分類された命令マップの中から相当するマシンコードに変換される。例えば、図9(b)のプログラム例のように命令▲1▼、▲3▼、▲4▼、▲6▼、▲7▼の順にプログラミングし、命令▲1▼、▲6▼、▲7▼は1分周で実行し、命令▲3▼、▲4▼は2分周で実行させたい場合、命令▲1▼の前段に‘set fast’と記述し、命令▲3▼の前段に‘set slow’、命令▲6▼の前段に‘set fast’と記述する。命令マップは1分周で実行する命令群は拡張コードなし、拡張コード‘0010’、拡張コード‘0011’で、2分周で実行する命令群は拡張コード‘0100’、拡張コード‘0101’、拡張コード‘0110’で分類されるとする。本実施の形態5のマイクロコントローラで扱われる命令は実施の形態2で説明した図5の例のように1分周の命令群と2分周の命令群は拡張コード以外は同一のオペコードを持ち、同一の動作をするものとする。コンパイラは命令とその前段の‘set fast’あるいは‘set slow’の情報を入力として、前段が‘set fast’であれば1分周で実行する命令群のマップのマシンコードに変換し、‘set slow’であれば2分周で実行する命令群のマップのマシンコードに変換する。また、命令の前段に何も記述がなければ分周比の変更はないものとし、前段の命令と同じ分周比の命令群のマシンコードに変換する。
【0078】
すなわち本実施の形態5のマイクロコントローラは、前述した実施の形態2の構成において、上述のコンパイラと、コンパイラで生成したマシンコードをROMコードに変換する手段と、ROM配置する手段とを備えたものである。
【0079】
以上のように本実施の形態5によれば、分周比の設定は分周比設定記述の挿入のみでマシンコードに反映することが可能となり、実施の形態2のマイクロコントローラの特徴を最大限活かすプログラム開発環境を提供できる。
【0080】
【発明の効果】
以上のように、本発明によれば、周波数を制御するための情報をオペレーションコードに付加あるいは拡張コードに保有させることで、実行命令のパイプライン処理の中で周波数制御が可能となるため、周波数変更に要するタイムラグを解消しタスクに応じた周波数制御を的確かつ迅速に実行することによりマイクロコントローラの消費電力を低減することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1のマイクロコントローラの概略構成を示すブロック図
【図2】本発明の実施の形態1のマイクロコントローラの概略構成を示すブロック図
【図3】本発明の実施の形態1のマイクロコントローラの命令フォーマット、プログラム例および動作タイミングチャート
【図4】本発明の実施の形態2のマイクロコントローラの概略構成を示すブロック図
【図5】本発明の実施の形態2のマイクロコントローラの命令マップ説明図
【図6】本発明の実施の形態2のマイクロコントローラの命令フォーマット、プログラム例および動作タイミングチャート
【図7】本発明の実施の形態3のマイクロコントローラにおけるROMコード生成処理を示すフローチャートとその説明図
【図8】本発明の実施の形態4のマイクロコントローラにおけるROMコード生成処理を示すフローチャートとその説明図および動作タイミングチャート
【図9】本発明の実施の形態5のマイクロコントローラにおけるROMコード生成処理を示すフローチャートその説明図
【図10】従来のマイクロコントローラの一般的な概略構成を示すブロック図
【図11】従来のマイクロコントローラの一般的な概略構成を示すブロック図
【図12】従来のマイクロコントローラの命令フォーマット、プログラム例および動作タイミングチャート
【符号の説明】
100 CPU
200 バスインターフェイス
300 データパス
400 命令デコーダ
401 インストラクションフェッチバッファ(IFB)
402 インストラクションバッファ(IB)
403 インストラクションレジスタ(IR)
404 プログラマブルロジックアレイ(PLA)
500 データレジスタ
600 アドレスレジスタ
700 ROM
800 クロックジェネレータ
801 クロック分周回路
802 セレクタ
803 クロック分周制御回路
804 クロック分周制御レジスタ
1000 マイクロコントローラ

Claims (5)

  1. 発振周波数の1/n(nは分周比で1以上の整数)の周波数であって異なる周波数の複数のクロック信号の中から周波数情報に応じた前記クロック信号をシステムクロックとして入力し、前記システムクロックに同期して動作し、メモリに格納された拡張コードとオペレーションコードとオペランドからなる命令プログラムに対して、パイプライン処理により前記拡張コードと前記オペレーションコードと前記オペランドをフェッチして解読し、その解読結果に基づいて前記命令プログラムを実行するプロセッサを備え、
    マシンコードによって前記オペレーションコードを各分周比に対応してページに分類された複数ページからなる命令マップとして構成し、前記オペレーションコードとともにパイプライン処理される前記拡張コードが前記命令マップのページを示し、
    前記プロセッサは、前記拡張コードをパイプライン処理によりフェッチ、解読することにより前記拡張コードが示す前記命令マップのページに対応する分周比に応じた前記周波数情報を出力することを特徴とするマイクロコントローラ。
  2. 前記発振周波数の1/n(nは分周比で1以上の整数)の周波数であって異なる周波数の複数のクロック信号を生成し、その中から前記プロセッサから出力される前記周波数情報に応じたクロック信号を選択して前記プロセッサへ前記システムクロックとして出力するクロックジェネレータを設けた請求項1記載のマイクロコントローラ。
  3. 前記クロックジェネレータは、
    前記発振周波数の1/n(nは分周比で1以上の整数)の周波数であって異なる周波数の複数のクロック信号を出力する分周手段と、
    前記分周手段の出力する前記複数のクロック信号の中から選択信号に基づいて1つのクロック信号を選択し前記システムクロックとして出力する選択手段と、
    前記プロセッサから出力される前記周波数情報に対応する前記選択信号を前記選択手段に出力する制御手段とを有した請求項記載のマイクロコントローラ。
  4. ソースプログラムに記述された前記システムクロックの分周比を決定する分周比設定記述に従って分周比に対応する前記拡張コードを選択し、前記拡張コードが示す命令マップのページから前記分周比設定記述の後段の命令に相当する前記オペレーションコードを選択しROMコード化する手段を設けた請求項記載のマイクロコントローラ。
  5. 発振周波数の1/n(nは分周比で1以上の整数)の周波数であって異なる周波数の複数のクロック信号の中から周波数情報に応じた前記クロック信号をシステムクロックとして入力し、前記システムクロックに同期して動作し、メモリに格納されたオペレーションコードとオペランドからなる命令プログラムに対して、パイプライン処理により前記オペレーションコードと前記オペランドをフェッチして解読し、その解読結果に基づいて前記命令プログラムを実行するプロセッサを備え、前記オペレーションコードは前記システムクロックの分周比を決定する周波数制御信号が付加されて前記メモリに格納されており、前記プロセッサは、前記周波数制御信号を前記オペレーションコードとともにパイプライン処理によりフェッチ、解読することにより前記周波数制御信号に応じた前記周波数情報を出力するマイクロコントローラにおいて、
    ソースプログラムに記述された前記システムクロックの分周比を決定する前記分周比設定記述に従って前記周波数制御信号を生成し、前記分周比設定記述の前段の命令の実行サイクル数が基準未満であれば前記周波数制御信号を前記分周比設定記述の前段の命令から生成される前記オペレーションコードに付加し、基準以上であれば前記周波数制御信号を前記分周比設定記述の後段の命令から生成される前記オペレーションコードに付加しROMコード化する手段を設けたことを特徴とするマイクロコントローラ。
JP2003094686A 2003-03-31 2003-03-31 マイクロコントローラ Expired - Fee Related JP3958239B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003094686A JP3958239B2 (ja) 2003-03-31 2003-03-31 マイクロコントローラ
US10/804,143 US7197653B2 (en) 2003-03-31 2004-03-19 Microcontroller for fetching and decoding a frequency control signal together with an operation code
CNB2004100342255A CN100365567C (zh) 2003-03-31 2004-03-31 微控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003094686A JP3958239B2 (ja) 2003-03-31 2003-03-31 マイクロコントローラ

Publications (2)

Publication Number Publication Date
JP2004302827A JP2004302827A (ja) 2004-10-28
JP3958239B2 true JP3958239B2 (ja) 2007-08-15

Family

ID=32985436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003094686A Expired - Fee Related JP3958239B2 (ja) 2003-03-31 2003-03-31 マイクロコントローラ

Country Status (3)

Country Link
US (1) US7197653B2 (ja)
JP (1) JP3958239B2 (ja)
CN (1) CN100365567C (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7911817B2 (en) * 2008-09-18 2011-03-22 Dell Products L.P. Systems and methods for controlling energy consumption of AC-DC adapters
US8417985B2 (en) * 2010-05-18 2013-04-09 Plx Technology, Inc. Adjusting system clock to faster speed upon receiving mass storage command and back to lower speed upon completion of all commands
CN103970252A (zh) * 2013-01-31 2014-08-06 腾讯科技(深圳)有限公司 一种通过浏览器对终端设备进行省电的方法及系统
US20210093190A1 (en) * 2019-09-30 2021-04-01 Alcon Inc. Ocular aberrometer systems and methods

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS52109841A (en) 1976-03-12 1977-09-14 Hitachi Ltd Clock control system
JPS62249233A (ja) 1986-04-22 1987-10-30 Nippon Denso Co Ltd マイクロプロセツサ
JPH01293440A (ja) 1988-05-20 1989-11-27 Rohm Co Ltd マイクロコンピュータシステム
JPH02118811A (ja) 1988-10-28 1990-05-07 Nec Corp マイクロコンピュータ
US5745375A (en) * 1995-09-29 1998-04-28 Intel Corporation Apparatus and method for controlling power usage
JPH1091430A (ja) 1996-09-13 1998-04-10 Matsushita Electric Ind Co Ltd 命令解読装置
US5940602A (en) * 1997-06-11 1999-08-17 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations
JPH11184554A (ja) 1997-12-24 1999-07-09 Mitsubishi Electric Corp クロック制御タイプ情報処理装置
JP2001184208A (ja) * 1999-12-27 2001-07-06 Matsushita Electric Ind Co Ltd 低電力マイクロプロセッサおよびプログラム低電力化方法
US6625740B1 (en) * 2000-01-13 2003-09-23 Cirrus Logic, Inc. Dynamically activating and deactivating selected circuit blocks of a data processing integrated circuit during execution of instructions according to power code bits appended to selected instructions
JP3512707B2 (ja) * 2000-04-21 2004-03-31 Necマイクロシステム株式会社 マイクロコンピュータ
JP2002108490A (ja) * 2000-07-26 2002-04-10 Sony Corp クロック供給回路
US20020108064A1 (en) * 2001-02-07 2002-08-08 Patrick Nunally System and method for optimizing power/performance in network-centric microprocessor-controlled devices
JP2003029965A (ja) * 2001-07-10 2003-01-31 Sony Corp マイクロプロセッサ

Also Published As

Publication number Publication date
CN1542608A (zh) 2004-11-03
US20040193930A1 (en) 2004-09-30
JP2004302827A (ja) 2004-10-28
US7197653B2 (en) 2007-03-27
CN100365567C (zh) 2008-01-30

Similar Documents

Publication Publication Date Title
US5727194A (en) Repeat-bit based, compact system and method for implementing zero-overhead loops
EP0968463B1 (en) Vliw processor processes commands of different widths
US6611909B1 (en) Method and apparatus for dynamically translating program instructions to microcode instructions
US9329866B2 (en) Methods and apparatus for adapting pipeline stage latency based on instruction type
JP2006146953A (ja) プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
US20020042909A1 (en) Retargetable compiling system and method
US7313671B2 (en) Processing apparatus, processing method and compiler
US4954943A (en) Data processing system
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
JP3805314B2 (ja) プロセッサ
JP4574493B2 (ja) プロセッサシステム及びマルチスレッドプロセッサ
JP3958239B2 (ja) マイクロコントローラ
US20040024992A1 (en) Decoding method for a multi-length-mode instruction set
JPH1091430A (ja) 命令解読装置
JP2006053830A (ja) 分岐予測装置および分岐予測方法
JP2694948B2 (ja) マイクロプログラム処理装置
US6834339B2 (en) Microprocessor
US8924689B2 (en) Semiconductor device with instruction code and prefix code predecoders
WO2005036384A2 (en) Instruction encoding for vliw processors
US8255672B2 (en) Single instruction decode circuit for decoding instruction from memory and instructions from an instruction generation circuit
JP2001184209A (ja) 命令コード復号装置及びその復号方法
KR100345678B1 (ko) 설계의 변경이 용이한 제어 유닛
US20030093651A1 (en) Instruction sets and compilers
JP2005149297A (ja) プロセッサおよびそのアセンブラ
JP2543589B2 (ja) デ―タ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060308

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060829

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061027

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070509

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

Free format text: PAYMENT UNTIL: 20110518

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110518

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120518

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees