Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4770664B2 - マイクロプロセッサおよびそれを用いたマイクロコンピュータ - Google Patents
[go: Go Back, main page]

JP4770664B2 - マイクロプロセッサおよびそれを用いたマイクロコンピュータ - Google Patents

マイクロプロセッサおよびそれを用いたマイクロコンピュータ Download PDF

Info

Publication number
JP4770664B2
JP4770664B2 JP2006254188A JP2006254188A JP4770664B2 JP 4770664 B2 JP4770664 B2 JP 4770664B2 JP 2006254188 A JP2006254188 A JP 2006254188A JP 2006254188 A JP2006254188 A JP 2006254188A JP 4770664 B2 JP4770664 B2 JP 4770664B2
Authority
JP
Japan
Prior art keywords
program
periodic
instruction
address
execution
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
JP2006254188A
Other languages
English (en)
Other versions
JP2008077294A (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2006254188A priority Critical patent/JP4770664B2/ja
Priority to US11/902,365 priority patent/US7991986B2/en
Publication of JP2008077294A publication Critical patent/JP2008077294A/ja
Application granted granted Critical
Publication of JP4770664B2 publication Critical patent/JP4770664B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

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

Description

本発明は、マイクロプロセッサおよびそれを用いたマイクロコンピュータに関し、特に、正確な時間で起動しなければならない周期プログラムと時間に依存しない非周期プログラムとが混在する環境において、周期プログラムを開始する際のプログラム開始/停止手法に関するものである。
従来より、マイクロプロセッサ(いわゆるCPU)外部にタイマ回路を設け、当該タイマ回路を用いたプログラムの割り込みによって周期処理を開始させる方法が知られている。具体的には、タイマ回路から一定周期で割り込み信号をマイクロプロセッサに入力し、単独最高レベルの割り込みをマイクロプロセッサに発生させる。これにより、マイクロプロセッサにおいて割り込みルーチン内で周期処理を周期的に実行することができるようになっている。
しかしながら、最高レベルの割り込みであっても、マイクロプロセッサが直ちにこの割り込みを受け付けるとは限らない。すなわち、例えば、複数のバスサイクルを必要とするメモリ転送命令においてメモリ転送を行っている最中や、分岐命令の処理シーケンス中や、他の割り込みの起動・復帰シーケンス中等では、これら各処理が完了するまで一切の割り込みが禁止される。つまり、上記のような割り込み禁止区間中にタイマ回路からの割り込みが発生した場合、上記各処理が終了するまで割り込みの開始が待たされるため、周期処理の周期性を完全に確保できないという問題が生じる。
そこで、各処理の実行時間を一定に保つ時間調整手段をマイクロプロセッサに備えることで、プログラム実行の周期性を確保する方法が、例えば特許文献1で提案されている。具体的に、特許文献1では、命令コードを実行する処理ユニットと、処理ユニットで実行される命令コード間の時間調整を行う時間調整手段と、外部バスとのインタフェースの役割を担うバッファとを備えたマイクロプロセッサが提案されている。
また、時間調整手段は、命令コード間の時間を計測する時間計測手段と、特定時間(所望の同期時間)を設定する特定時間設定手段と、時間計測手段で計測された時間と特定時間設定手段で設定された特定時間との差分を演算する差分演算手段と、差分演算手段で得られた差分に見合う時間だけアイドル状態を挿入するアイドル状態挿入手段とを備えている。
上記構成を有するマイクロプロセッサでは、時間計測手段にて命令コード間の時間が計測され、差分演算手段にて時間計測手段で計測された時間と特定時間設定手段で設定された特定時間との差分が演算される(同期化命令)。そして、アイドル状態挿入手段にて差分演算手段で得られた差分に見合う時間だけアイドル状態が挿入される。
このように、周期プログラムを実行した後、マイクロプロセッサの時間調整手段において同期化命令を行ってアイドル状態を設けることにより、処理ユニットで実行される各命令コード間の時間調整が行なわれる。これにより、周期処理の周期性が確保されるようになっている。
特開平5−233277号公報
しかしながら、上記従来の技術では、周期処理を周期的に実行しているものの、マイクロプロセッサにアイドル状態を設けているため、マイクロプロセッサの処理能力の低下や処理能力の無駄が生じている。
そこで、本発明者らは、マイクロプロセッサに周期処理を周期的に実行させると共に、マイクロプロセッサが上記アイドル状態の場合には、マイクロプロセッサに非周期処理を実行させることで、マイクロプロセッサの処理能力の有効利用を図ることを考えた。
しかしながら、アイドル状態で非周期処理を実行させようとすると、マイクロプロセッサで処理されるプログラムにあらかじめ同期化命令を記述しなければならない。このため、周期処理と非周期処理とが混在する環境に マイクロプロセッサを適用することを考えた場合、非周期処理を周期処理の周期に合わせるようにする同期化命令を挿入しなければならない。このようなプログラム実行環境では、非周期処理を作成するプログラマが周期処理の周期や同期化命令の挿入タイミングを熟慮してアプリケーションを設計しなければならないため、プログラム開発が煩雑になるという問題がある。
したがって、周期処理と非周期処理とが混在する環境にマイクロプロセッサを適用する場合、上記のように、マイクロプロセッサにタイマ回路から周期的に割り込み信号を入力することで、マイクロプロセッサに周期処理を周期的に実行させ、周期処理の間に非周期処理を実行させるようにすることが考えられる。
しかし、上述のように、マイクロプロセッサの処理状態によっては割り込みが後回しにされてしまい、周期処理の実行タイミングに遅れが生じてしまう。これにより、この遅れが時間経過と共に蓄積されることで、周期処理が周期的に実行されなくなってしまう。
本発明は、上記点に鑑み、周期処理と非周期処理とを混在させた環境でマイクロプロセッサを作動させる際、周期処理を時間のずれを生じさせずに周期的に実行させることができるマイクロプロセッサおよびそれを用いたマイクロコンピュータを提供することを目的とする。
上記目的を達成するため、本発明の第1の特徴では、プログラムカウンタ制御ユニット(312)は、周期プログラム実行中に設定されたカウント数の初期値に基づいて一周期に相当するサイクル数をカウントする時間計測手段(326)から当該時間計測手段(326)がカウントするカウント数を入力すると共に、停止タイミングレジスタ(327)から非周期プログラムの実行を停止させる停止タイミングを示すサイクル数を入力する。
そして、プログラムカウンタ制御ユニット(312)は、時間計測手段(326)がカウントするカウント数と停止タイミングを示すサイクル数とを比較し、それぞれが一致したときには、プログラムカウンタ(323)を停止して非周期プログラムの実行を中断させる。
この後、プログラムカウンタ制御ユニット(312)は、時間計測手段(326)から入力されるカウント数が一周期の終わりを示すカウント数に一致した場合、周期プログラムレジスタ(325)に格納された周期プログラムの先頭アドレスをプログラムカウンタ(323)に格納させることで、周期プログラムの実行を開始させることを特徴とする。
このように、時間計測手段(326)のカウント数が停止タイミングを示すサイクル数と一致したとき、非周期プログラムの実行を中断させることで、周期プログラムの開始タイミングの際に非周期プログラムが実行されていない状態とすることができる。すなわち、周期プログラムの実行タイミングで非周期プログラムが実行中にならないようにすることができ、周期プログラムを周期的に実行させることができる。
また、周期プログラムを周期的に実行させる場合、上記のように周期プログラム開始前に非周期プログラムの実行を中断させるため、マイクロプロセッサの外部から割り込み信号を入力する必要はなく、周期プログラムを時間のずれを生じさせずに周期的に実行させることができる。
本発明の第2の特徴では、プログラムカウンタ制御ユニット(312)は、上記と同様に非周期プログラムの実行を中断させた後、時間計測手段(326)から入力されるカウント数が一周期の終わりを示すカウント数に一致した場合、周期プログラムレジスタ(325)に格納された周期プログラムの先頭アドレスをプログラムカウンタ(323)に格納させることで、周期プログラムの実行を開始させることを特徴とする。
このように、時間計測手段(326)のカウント数が停止タイミングを示すサイクル数と一致したとき、非周期プログラムの実行を中断させ、周期プログラムを実行させることで、周期プログラムを時間のずれを生じさせずに周期的に実行させることができる。
また、命令を実行することで次の命令がストールする場合、非周期プログラムの実行を停止させる停止タイミングを示すサイクル数を規定することで、時間計測手段(326)が一周期分のカウント数をカウントしてしまう前に命令を完了できるようにすることができる。したがって、周期プログラムを周期的に実行させようとしたとき、非周期プログラムを確実に終了させておくことができ、周期プログラムを確実に周期的に実行させることができる。
ここで、最大実行サイクル数を、パイプラインストールが起こった場合の命令の最大サイクル数であると定義することができる。これにより、マイクロプロセッサがパイプライン処理を行う場合でも最大サイクル数を持つ処理(すなわち非周期プログラム)を確実に停止することができる。
また、プログラムカウンタ制御ユニット(312)は、停止させたプログラムカウンタ(323)のフェッチプログラムアドレスを外部(例えば後述する第2記憶手段(200))に退避させる。そして、周期プログラムの実行終了後、プログラムカウンタ制御ユニット(312)は、外部に退避させた非周期プログラムのフェッチプログラムアドレスをプログラムカウンタ(323)に入力させることで、中断した非周期プログラムの実行を再開させる。これにより、一周期の終わりと共に中断させた非周期プログラムについて、中断した命令から再開させることができる。
上記マイクロプロセッサの構成においては、プログラムカウンタ(323)から当該プログラムカウンタ(323)が示すフェッチプログラムアドレスの履歴を格納するプログラムカウンタバッファ(314)を備えるようにすることもできる。
これにより、プログラムカウンタ制御ユニット(312)は、プログラムカウンタバッファ(314)から選び出したフェッチプログラムアドレスを外部に退避させるようになっており、周期プログラムの実行が終了した後、外部に退避させたフェッチプログラムアドレスをプログラムカウンタ(323)に格納させることで、中断した非周期プログラムの実行を再開させることができる。
本発明の第3の特徴では、マイクロプロセッサに、プログラムカウンタ(323)からフェッチプログラムアドレスの履歴を格納するプログラムカウンタバッファ(314)を備えるようにする。
また、プログラムカウンタ制御ユニット(312)は、時間計測手段(326)から入力されるカウント数が一周期の終わりを示すカウント数に一致する場合に実行中となる非周期プログラムの命令を実行しないと判定する。
この後、プログラムカウンタ制御ユニット(312)は実行しないと判定した命令の開始について一周期の終わりを示すカウント数から遡ったサイクル数を取得し、プログラムカウンタバッファ(314)から当該サイクル数に対応したフェッチプログラムアドレスを選び出す。
そして、プログラムカウンタ制御ユニット(312)は、時間計測手段(326)から入力されるカウント数が一周期の始まりを示すカウント数になった場合、周期プログラムの実行を開始させることを特徴とする。
このように、一周期が終了する際、非周期プログラムの命令が完了しないその命令のフェッチプログラムアドレスをプログラムカウンタバッファ(314)から選び出し、非周期プログラムを中断して再び一周期のカウントを開始することで、周期プログラムを一周期の始まりから確実に実行させることができる。
また、非周期プログラムにおいて実行を完了できない命令のフェッチプログラムアドレスをプログラムカウンタバッファ(314)から選び出しているので、上記のような非周期プログラムの中断後周期プログラムの開始までのサイクル数を削減することができる。これにより、一周期内で非周期プログラムを実行できる期間をより長くすることができる。
さらに、プログラムカウンタ制御ユニット(312)は、外部にデータを読み書きするために必要な最大のサイクル数一周期の終わりを示すカウント数一致する場合に実行中となる非周期プログラムの命令を実行しないと判定するようにすることもできる。
上記プログラムカウンタ制御ユニット(312)は、プログラムカウンタバッファ(314)から選び出したフェッチプログラムアドレスを外部に退避させることができる。そして、周期プログラムの実行終了後、プログラムカウンタ制御ユニット(312)は外部に退避させたフェッチプログラムアドレスをプログラムカウンタ(323)に格納させることで、中断した非周期プログラムの実行を再開させることができる。
これにより、上記と同様に、中断させた非周期プログラムについて、中断した命令から非周期プログラムの実行を再開させることができる。
また、マイクロプロセッサに、プログラムカウンタバッファ(314)から入力されるフェッチプログラムアドレスを格納する保存用レジスタ(328)を備える。そして、プログラムカウンタ制御ユニット(312)は、プログラムカウンタバッファ(314)から選び出したフェッチプログラムアドレスを前記保存用レジスタ(328)に退避させる。周期プログラムの実行終後、プログラムカウンタ制御ユニット(312)は、保存用レジスタ(328)に退避させたフェッチプログラムアドレスをプログラムカウンタ(323)に格納させることで、中断した非周期プログラムの実行を再開させることができる。このようにしても、中断させた非周期プログラムの実行を再開させることができる。
上記マイクロプロセッサと、周期プログラムおよび非周期プログラムを格納する第1記憶手段(100)と、マイクロプロセッサによってデータが書き込まれる第2記憶手段(200)と、を備えたマイクロコンピュータを構成することもできる。
このうち、第1記憶手段(100)に、周期プログラムを周期的に実行させるための前記一周期に相当する一定数のカウント数を時間計測手段(326)に設定する開始タイミング設定命令を格納することができる。そして、マイクロプロセッサに開始タイミング設定命令を実行させることで、時間計測手段(326)に一周期に相当する一定数のサイクル数を設定することができる。
これにより、周期プログラムの実行を開始する際、一周期を一定数のサイクル数として規定することができる。そして、周期プログラムの実行を開始する際、常に上記開始タイミング設定命令を行って一周期に相当するカウント数を設定することで、周期プログラムを周期的に実行させることができる。
また、第1記憶手段(100)に、周期プログラムの実行が終了した後、非周期プログラムへ分岐する非周期プログラム開始命令を格納することができる。そして、マイクロプロセッサに、周期プログラムの実行後、非周期プログラム開始命令を実行させることで、非周期プログラムの実行を開始することができる。
さらに、第1記憶手段(100)に、周期プログラムの先頭アドレスを周期プログラムレジスタ(325)に書き込む周期プログラムレジスタ設定命令を格納することができる。そして、マイクロプロセッサに、当該マイクロプロセッサのリセット後、開始タイミング設定命令の実行前に、周期プログラムレジスタ設定命令を実行させることができる。これにより、一周期の始まりにおいて周期プログラムレジスタ(325)に格納されたアドレスに従って周期プログラムが実行されるようにすることができる。
さらに、第1記憶手段(100)に、停止タイミングレジスタ(327)に非周期プログラムの実行を停止させる停止タイミングを示すサイクル数を書き込む停止タイミングレジスタ設定命令を格納することができる。そして、マイクロプロセッサ、当該マイクロプロセッサのリセット後、開始タイミング設定命令の実行前に停止タイミングレジスタ設定命令の実行させることができる。
なお、上記各手段の括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示すものである。
以下、本発明の実施形態について図に基づいて説明する。なお、以下の各実施形態相互において、互いに同一もしくは均等である部分には、図中、同一符号を付してある。
(第1実施形態)
以下、本発明の第1実施形態について図を参照して説明する。本実施形態に係るマイクロプロセッサは、いわゆるマイクロコンピュータを構成するCPUに該当するものであり、周期処理(以下、周期プログラムという)と非周期処理(以下、非周期プログラムという)とを実行することにより、所望の処理を行うものである。
具体的に、マイクロプロセッサは、周期プログラムを周期的に実行すると共に、周期プログラムと周期プログラムとの間に非周期プログラムを実行する。周期プログラムとしては、例えばPWM制御の周期パルスの生成、タイマのカウント、通信処理を行うものが採用され、非周期プログラムとしては、例えば周期的な実行を必要としないアプリケーションを実行するためのものが採用される。
図1は、本発明の第1実施形態に係るマイクロコンピュータのブロック構成図である。この図に示されるように、マイクロコンピュータM1(以下、マイコンという)は、ROM100(本発明の第1記憶手段に相当)と、RAM200(本発明の第2記憶手段に相当)と、CPU300とを備えて構成されており、各々がプログラムのアドレスを転送するために用いられるアドレスバス400、データを転送するために用いられるデータバス500に接続されている。
ROM100は、読み出し専用の記録媒体である。このROM100には、マイコンM1が搭載された製品に上記に示したような周期的な処理を実行させる周期プログラムと、マイコンM1が搭載された製品の製品機能等を実現させるアプリケーションとしての非周期プログラムと、が書き込まれており、それぞれCPU300にて読み出されて実行されるようになっている。
RAM200は、データの書き換えが可能である記憶媒体であり、CPU300が周期プログラムや非周期プログラムを実行する上でデータの書き込み・読み出しを行う際に用いられる。
CPU300は、ROM100に記憶された周期プログラムを周期的に実行すると共に、周期プログラムの処理の間に非周期プログラムを実行するものである。すなわち、CPU300は、アドレスバス400およびデータバス500を介してROM100に内蔵された各プログラムを読み出すと共に、読み出した命令を解釈し、解釈した命令に従ってデータの移動や演算、加工等を行う。
図2は、本発明の第1実施形態に係るCPU300のブロック構成図である。このCPU300は、プログラムの実行状況を制御する制御ユニット310と、データの格納や算術・論理演算を実行するデータパス320と、を備えて構成されている。
このうち、制御ユニット310は、命令デコード311と、プログラムカウンタ制御ユニット312と、を備えている。命令デコード311は、ROM100から取り込んだプログラムが示す命令コードをデータパス320を介して格納すると共に、取り込んだ命令コードを解読する。また、プログラムカウンタ制御ユニット312は、命令デコード311にて解読された命令に基づいて演算制御信号を出力することによってデータパス320を制御する。
データパス320は、ロードストアユニット321と、実行ユニット322と、プログラムカウンタ323(以下、PCという)と、レジスタファイル324と、を備えて構成されている。
ロードストアユニット321は、CPU300の外部(例えばROM100)からのデータ読み込み、および外部(例えばRAM200)へのデータ書き込みを制御するものである。実行ユニット322は、命令デコード311で解読された命令コードに従い、プログラムカウンタ制御ユニット312から入力される演算制御信号に応じて算術・論理演算を実行するものである。
PC323は、次に実行する命令が格納されているROM100のフェッチプログラムアドレスを示すものである。すなわち、CPU300がROM100から命令(プログラム)の読み込みを行なう際、その命令を読み出すためのフェッチプログラムアドレスがPC323からロードストアユニット321を介してアドレスバス400に出力される。また、CPU300がROM100から命令を読み込む度に読み取った命令の分だけPC323のフェッチプログラムアドレスの値が増加するようになっている。
また、レジスタファイル324は、実行ユニット322により実行された結果のデータもしくはCPU300の外部より取り込まれたデータを格納するものである。このようなレジスタファイル324は、プログラムの実行タイミングの精度が要求される周期プログラムの先頭アドレスを格納する周期プログラムレジスタ325と、マシンサイクルに同期してカウントダウンするカウンタ326(本発明の時間計測手段に相当)と、プログラムの実行タイミングの精度が要求されない非周期プログラムの停止タイミングを格納する停止タイミングレジスタ327とを備えて構成されている。
以上が、本実施形態に係るマイコンM1の構成である。このような構成を有するマイコンM1において、CPU300は、メモリから命令を読み込むIF(フェッチ)ステージと、命令を解読するDEC(デコード)ステージと、解読された命令に従って算術・演算やメモリアクセス等のアドレス演算を行うEXE(実行)ステージと、データのメモリ(例えばRAM200)への読み書きを行うMA(メモリアクセス)ステージと、メモリから読み込んだ結果や算術演算の結果をレジスタ(例えばレジスタファイル324)に書き込むWB(ライトバック)ステージからなるパイプライン処理を行うようになっている。このパイプライン処理について、図3を参照して説明する。
図3は、CPU300が実行するパイプライン処理の一例を示した図である。まず、本実施形態では、CPU300で実行される命令を以下の3種類とする。
(1)論理・算術命令A:RAM200もしくはROM100へのアクセスを必要とせず、レジスタファイル324から格納データを読み込み演算し、演算結果をレジスタファイル324に書き込む動作をする命令
(2)ロードストア命令B:CPU300の外部メモリ(RAM200もしくはROM100)からレジスタファイル324へデータを書き込むためのロードデータを読み込むロード命令、レジスタファイル324から外部メモリへストアデータを書き込むストア命令
(3)分岐命令C:レジスタファイル324の格納データから分岐先アドレスを取得してPC323に書き込み、分岐先アドレスが書き込まれる前のPC323のアドレスを退避PCとしてレジスタファイル324に格納する動作を行う命令(つまり、PC323のアドレスを変更してプログラムの命令順序を変更する命令)
上記各命令のうち、命令Aおよび命令Cは4サイクル、命令Bは5サイクルで1つの命令を処理するようになっている。プログラムは、これら各命令に従って構成され、ROM100に格納される。そして、上記各命令によって構成されたプログラムは、図3に示されるようにCPU300にて処理されていく。
具体的に、図3に示されるサイクル0において、PC323のアドレスが0x00である場合、IFステージが実行される。すなわち、アドレス0x00を示すフェッチプログラムアドレスがPC323からロードストアユニット321、アドレスバス400を介してROM100に入力される。そして、ROM100に記憶されたプログラムのアドレス0x00の命令がデータパス320を介してCPU300に入力される。なお、CPU300がROM100からアドレス0x00の命令Aを読み込んだ際、PC323のフェッチプログラムアドレスの値が0x01に増加される。
次に、サイクル1では、アドレス0x00の命令AについてはDECステージが実行される。すなわち、図2に示されるCPU300の命令デコード311にて命令が解読され、解読された命令がプログラムカウンタ制御ユニット312に入力される。また、PC323のアドレス0x01について上記と同様に命令AのIFステージが実行される。
続いて、サイクル2では、アドレス0x00の命令AについてはEXEステージが実行される。すなわち、プログラムカウンタ制御ユニット312から実行ユニット322に演算制御信号が入力され、命令に従った演算が実行される。また、アドレス0x01の命令Aについては上記と同様に命令AのDECステージが実行される。さらに、PC323のアドレス0x02について上記と同様に命令AのIFステージが実行される。
この後、サイクル3では、アドレス0x00の命令AについてはWBステージが実行される。すなわち、実行ユニット322にて実行された演算の結果がレジスタファイル324に書き込まれる。また、アドレス0x01の命令Aについては上記と同様に命令AのEXEステージが実行され、アドレス0x02の命令Aについては上記と同様に命令AのDECステージが実行される。さらに、PC323のアドレス0x03について命令BのIFステージが実行される。以後、サイクル数の増加に伴い、上記各アドレスの各ステージが順を追って実行されていくこととなる。
ここで、上記アドレス0x03の命令Bが実行される場合、EXEステージの後、MAステージが実行されることとなる。この場合、アドレス0x03のMAステージと同じサイクル(サイクル6)で実行される下位のアドレスの各ステージ(図3に示される例では、アドレス0x04の命令AのEXEステージ、アドレス0x05の命令AのDECステージ、アドレス0x07の命令C(0xA0への分岐)のIFステージ)はストールされ、実行されない。
具体的には、アドレス0x03の命令BのMAステージ実行中(サイクル6)は、プログラムカウンタ制御ユニット312からPC323にプログラムカウンタストール信号が入力され、PC323のアドレスの更新が停止される。また、制御ユニット310からロードストアユニット321にフェッチ/ロードストア許可信号が入力されることでロードストアが許可されるように制御が行われることで、他命令のパイプラインがストールされる。これにより、2サイクル必要となるが、メモリアクセスが必要な命令のみ、IFステージとMAステージとの競合を避けることができる。
このようにIFステージとMAステージとの競合を避ける理由としては、CPU300からRAM200にデータが書き込まれるためにMAステージによってデータパス320が占有されるからであり、他の命令ステージがデータパス320を使用できなくなるからである。上記のようにしてストールされたサイクル6の各ステージは、次のサイクル7で実行されることとなる。
すなわち、アドレス0x07の命令CのIFステージがサイクル7で実行される。この場合、アドレス0x03のWBステージ時にPC323の値が分岐先アドレス0xA0に書き換えられて分岐が行われる。このため、図3においてアドレス0x08、0x09の各命令Aを破棄するため、プログラムカウンタ制御ユニット312にてWB停止信号が生成されてレジスタファイル324に入力されることで実行ユニット322からレジスタファイル324に対するデータの書き込みが停止される。また、制御ユニット310からロードストアユニット321にフェッチ/ロードストア許可信号が入力され、ロードストアユニット321にてIFステージのみ許可するように制御される。こうして分岐されたアドレス0xA0以降の各命令が実行されていくこととなる。
以上が、サイクルを追うごとにCPU300でプログラムの各命令が実行されていくパイプライン処理の一例である。
次に、上記のようにパイプライン処理を行うCPU300にて、実行サイクルのズレなく周期プログラムを周期的に実行する作動について説明する。本実施形態では、50サイクルごとに演算を行う必要がある周期プログラムを周期的に実行する場合について説明する。
図4は、周期プログラムを周期的に実行する内容を示した図である。この図に示されるように、本実施形態では、周期プログラムレジスタ325の設定を行うプログラム、停止タイミングレジスタ327の設定を行うプログラム、周期プログラム、非周期プログラムが実行されるようになっている。このうち、周期プログラムレジスタ325の設定を行うプログラムおよび停止タイミングレジスタ327の設定を行うプログラムはCPU300の起動時に実行されるのみであり、その後は周期プログラムおよび非周期プログラムが繰り返し実行されていく。これら各プログラムは、それぞれROM100に記憶されている。
すなわち、周期プログラムおよび非周期プログラムを実行するに際し、まず、CPU300のリセット直後(もしくはCPU300に電源が供給された直後)に実行するプログラムのアドレス(CPU300からROM100にアクセスするアドレス)により周期プログラムレジスタ325の設定を行うプログラムが実行される。この周期プログラムレジスタ325の設定を行うプログラムは、周期プログラムを周期的に実行すべく、周期プログラムの先頭アドレスを周期プログラムレジスタ325に書き込む周期プログラムレジスタ設定命令を実行するためのプログラムである。
上述のように、周期プログラムレジスタ325の設定を行うプログラムは、そのアドレスが例えば0x00とされ、CPU300がROM100にアクセスすることにより読み出されて実行される。
続いて、停止タイミングレジスタ327の設定を行うプログラムが実行される。この停止タイミングレジスタ327の設定を行うプログラムは、停止タイミングレジスタ327に周期プログラム起動準備期間を書き込む停止タイミングレジスタ設定命令を実行するためのプログラムである。周期プログラム起動準備期間とは、非周期プログラムを停止させてから周期プログラムが開始するまでの期間である。
また、本実施形態では、停止タイミングを「最大の処理サイクル数+非周期処理の再開アドレスを退避するために必要なサイクル数」と定義する。このうち、最大の処理サイクル数とは、DECステージからMAステージまでのサイクル数に相当する。
このような定義に従い、本実施形態では、周期プログラム起動準備期間が例えば6サイクルとされ、この周期プログラム起動準備期間が停止タイミングとしてプログラムカウンタ制御ユニット312に入力される。なお、この周期プログラムレジスタ325の設定を行うプログラムは、そのアドレスが例えば0x02とされる。
この後、周期プログラムが実行される。この周期プログラムは、カウンタ設定を行う命令と、カウンタ設定後に実行される周期プログラムを実行する命令と、周期プログラムの実行が完了した後、非周期処理へ分岐する命令と、により構成されている。
カウンタ設定を行う命令は、周期プログラムを行う周期をカウントするためのカウント数をカウンタ326に設定する開始タイミング設定命令であり、当該命令が実行されることでレジスタファイル324のカウンタ326にカウント数(本実施形態では50)が書き込まれると共に、カウントダウンが開始され、カウント値がプログラムカウンタ制御ユニット312に入力される。
上記カウンタ設定を行う命令が実行された後、周期プログラムを実行する命令により周期プログラムが実行される。この周期プログラムは、上述のように、PWM制御の周期パルスの生成やタイマのカウントを行うプログラムである。この周期プログラムが実行されていく間、カウンタ326にてカウントダウンが行われる。
そして、周期プログラムの実行が終了した後、非周期プログラムへ分岐する非周期プログラム開始命令が実行される。これにより、非周期プログラムの実行が開始される。この非周期プログラムは、上述のように、アプリケーションを実行するプログラムである。カウンタ326のカウントダウンと共に非周期プログラムが実行され、停止タイミングレジスタ327の値(本実施形態では6)とカウンタ326の値とが一致したサイクルから、周期プログラム起動準備期間が開始される。
このプログラム起動準備期間における処理シーケンスを、図5を参照して説明する。図5は、非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。この図に示されるように、周期プログラム起動準備期間の第1サイクル(図5のカウント値6、停止タイミング)において、プログラムカウンタ制御ユニット312からPC323にPCストール信号が入力されてPC323の値の更新が停止され、命令フェッチ動作が停止される。これにより、周期プログラム起動準備期間の第1サイクルの時点でDECステージ以降が実行中となっている命令はWBステージまで通常通り実行される。
非周期処理停止シーケンス中に分岐命令のWBステージが実行された場合、通常の分岐命令を実行する場合と同様にPC323の値がPCストール信号より優先して分岐先アドレスに書き換えられる。そして、以後の命令が破棄され、プログラムカウンタ制御ユニット312からレジスタファイル324にWB停止信号が入力され、制御ユニット310からロードストアユニット321にフェッチ/ロードストア停止信号が入力されることで、メモリ書き込み・WBステージが禁止される。
カウンタ326のカウント値が1のとき、プログラムカウンタ制御ユニット312から実行ユニットに対して開始プログラム読み込みトリガ信号が発行され、実行ユニットでは周期プログラムレジスタの値がPC323にロードされる。また、カウント値が1の時点でPC323に書き込まれていたアドレス(非周期プログラムの最終アドレス;退避PC)は、実行ユニット322およびロードストアユニット321を通じて、RAM200に書き込まれる(PCMA)。そして、カウント0のとき、周期プログラムレジスタ325に書き込まれているアドレスと同じアドレスからプログラムが開始される。
このようにして1周期が確実に終了し、再び周期プログラムが実行されることとなる。そして、非周期プログラムへの分岐が行われた場合、先に実行された非周期プログラムAの最終アドレスがRAM200からロードストアユニット321を介してレジスタファイル324に書き込まれ、格納データとして実行ユニット322を介してPC323に書き込まれる。これにより、図4に示される非周期プログラムBが非周期プログラムAの続きとして実行される。以後、上記周期プログラムおよび非周期プログラムが周期ごとに繰り返し実行される。
以上説明したように、本実施形態では、一定のカウント数で構成される1周期内で周期プログラムと非周期プログラムとをCPU300に実行させる場合、周期プログラムが終了した後は直ちに非周期プログラムを実行させる。また、非周期プログラムを実行させた後、上記1周期の残りカウントが非周期プログラムを停止させるカウント値(停止タイミング)になった場合、当該残りカウントを周期プログラム起動準備期間としてこの期間内で非周期プログラムを中断させることで周期プログラムを周期的に実行することが特徴となっている。
このようにすることで、プログラム開発の煩雑さを低減させることができる。すなわち、非周期プログラムの実行を停止タイミングで停止させることで、周期プログラムを周期的に実行させるための割り込み信号を必要とせずとも、周期プログラムを周期的に実行させることができる。これにより、周期プログラムの周期的実行に遅れを生じさせることはなく、周期処理を確実に周期的に実行させることができる。
また、周期プログラム終了後に直ちに非周期プログラムを実行させることができるので、CPU300がアイドル状態になる時間をなくすことができると共に、CPU300の処理能力の有効利用を図ることができる。
(第2実施形態)
本実施形態では、第1実施形態と異なる部分についてのみ説明する。本実施形態では、非周期プログラムを構成する命令にMAステージが含まれているものがある場合における周期プログラム起動準備期間の処理について説明する。
図6は、本実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。第1実施形態と同様に、周期プログラム起動準備期間の第1サイクル(図6のカウント値6、停止タイミング)において、プログラムカウンタ制御ユニット312からPC323にPCストール信号が入力されてPC323の値の更新が停止され、命令フェッチ動作が停止される。これにより、命令にMAステージが含まれていたとしても、すなわち、周期プログラム起動準備期間にDECステージが実行されている命令については、WBステージまで通常通り実行される。
しかしながら、周期プログラム起動準備期間にIFステージが実行される命令については、カウンタ326のカウント値が1のときにPC323に書き込まれていた当該命令のアドレス(退避PC)が、PCMAサイクルにて実行ユニット322およびロードストアユニット321を通じて、RAM200に書き込まれることで退避される。これにより、次の周期において非周期プログラムが実行される際、退避されたアドレスの命令から実行させるようにすることができる。
このように、命令にMAステージが含まれていたとしても、周期プログラム起動準備期間で非周期プログラムを中断させ、その後に周期プログラムを周期的に実行させることができる。
(第3実施形態)
本実施形態では、第1、第2実施形態と異なる部分についてのみ説明する。本実施形態では、周期プログラム起動準備期間に非周期プログラムの分岐命令が実行される場合における周期プログラム起動準備期間の処理について説明する。
図7は、本実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。この図に示されるように、分岐命令C(0x53へ分岐)が実行された場合、当該分岐命令のEXEステージは周期プログラム起動準備期間の第1サイクル(カウント値=6)で実行されるが、分岐命令C後の命令Aは当然実行されない。
このような場合、分岐命令CのEXEステージが実行されることで、周期プログラム起動準備期間の第2サイクル(カウント値=5)のPC323のアドレスが分岐先のアドレスに変更される。そして、カウンタ326のカウント値が1のときにPC323に書き込まれていた分岐先のアドレス(退避PC)が、PCMAサイクルにて実行ユニット322およびロードストアユニット321を通じて、RAM200に書き込まれることで退避される。これにより、次の周期において非周期プログラムが実行される際、分岐先のアドレスの命令から実行させるようにすることができる。
このように、周期プログラム起動準備期間に分岐命令が実行されたとしても、次の周期にて非周期プログラムを実行させる際、分岐先のアドレスから命令を実行させることができる。
(第4実施形態)
本実施形態では、上記各実施形態と異なる部分についてのみ説明する。上記各実施形態では、周期プログラムを開始する前に停止タイミングを設定している。当該停止タイミングはプログラム開発者にて任意に設定可能であるので、例えば3に設定された場合、カウンタ326のカウント値が1になったときに実行中である命令のWBステージが終了する前にカウント値が0となり、正常に非周期プログラムが停止できないという状況が予想される。そこで、本実施形態では、非周期プログラムを正常に停止させる停止タイミング生成ユニットを設けることが特徴となっている。
図8は、本実施形態に係るCPUのブロック構成図である。第1実施形態の図1で示されたCPU300に対して、本実施形態では、図8に示されるように、制御ユニット310に停止タイミング生成ユニット313が備えられており、当該停止タイミング生成ユニット313にカウンタ326からカウント値が入力されるようになっている。
また、データパス320のレジスタファイル324から停止タイミングレジスタ327をなくし、レジスタファイル324が周期プログラムレジスタ325およびカウンタ326にて構成されている。
本実施形態では、停止タイミングを、CPU300で実行される処理の最大サイクル数と定義し、当該停止タイミングを停止タイミング生成ユニット313に格納する。これにより、カウンタ326のカウント値とCPU300で実行される処理の最大サイクル数を比較することで、カウント値が0になる前に最大サイクル数をもつ処理を完了できることを保証する。
例えば、図6に示されるパイプライン処理を実行する場合、メモリアクセスなどによるパイプラインストールなどを考慮すると、CPU300で実行される処理の最大サイクル数を、(マイコンM1で実行する命令の中で最大の実行サイクル数を持つ)ロードストア命令がDECステージからMAステージまで実行完了するまでにかかる最大のサイクル数5にPCMAサイクルを加えた合計のサイクル数6とすることができる。しかしながら、図6に示される場合ではMAステージを含んだ命令が実行される可能性があるため、このことを考慮した最大サイクル数を設定する必要がある。
そこで、この最大サイクル数に最大ウェイトサイクルを加える。最大ウェイトサイクルとは、MAステージで実行中止されるサイクルを含めたときのサイクル数であり、図6に示される場合では2である。すなわち、ロードストアステージにかかるサイクル数は2であることを意味する。したがって、CPU300で実行される処理の最大サイクル数を、最大ウェイトサイクルを考慮した8とすることにより、カウンタ326のカウント値が0になる前に処理を完了することができる。
上記最大ウェイトサイクルは、CPU300を製造する際に停止タイミング生成ユニット313にハード的に格納することができる他、CPU300の外部端子として与えることもできる。
また、停止タイミングはあらかじめ停止タイミング生成ユニット313に格納されているため、停止タイミングレジスタ327を不要とすると共に、図4に示される停止タイミングレジスタ設定も行わなくても良い。
以上のように、MAステージによってストールされる他の命令のステージを考慮した停止タイミングを設定することにより、非周期プログラムを確実に完了することができる。
(第5実施形態)
本実施形態では、上記各実施形態と異なる部分についてのみ説明する。上記各実施形態では、停止タイミングで命令フェッチを終了してしまう。例えば、図5に示されるように、周期プログラム起動準備期間において、IFステージとなるアドレス0x24の命令は、周期プログラム実行サイクル前に実行することが可能な命令であっても実行されない。そこで、本実施形態では、周期プログラム実行サイクルまでにできるだけ多くの命令を実行することが特徴となっている。
図9は、本実施形態に係るCPUのブロック構成図である。第1実施形態の図1で示されたCPU300に対して、本実施形態では、図9に示されるように、制御ユニット310にプログラムカウンタバッファ314(以下、PCバッファという)が備えられている。また、データパス320は図8に示されるものと同様の構成になっている。
上記PCバッファ314は、PC323から当該PC323が示すアドレスをPC値として随時入力することにより、PC323のアドレスを履歴として格納するものである。
また、本実施形態では、プログラムカウンタ制御ユニットはカウンタ326のカウント値とパイプラインの実行状態をモニタし、カウント値が1になるPCMAサイクル以前に完了できる命令を全て実行し、実行できない命令のPC323のアドレスを退避PC(非周期プログラム退避用)としてRAM200に書き込む。具体的に、図9および図10を参照して説明する。
図10は、本実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。この図に示されるように、カウンタ326のカウント値が4のときにIFステージを実行する命令Aは、カウント値が1のときにWBステージを実行することができ、命令を完了することができる。しかし、カウンタ326のカウント値が3のときにIFステージを実行する命令は、カウント値が0になってもWBステージを実行することができず、命令を完了することができない。
したがって、本実施形態では、プログラムカウンタ制御ユニット312では、カウント値が1のときにPCMAが実行される際にEXEステージが実行される命令を実行しないという判定がなされ、その命令が何サイクル前のアドレスのものかという情報が取得される。図10に示される場合では、PC323のアドレスが0x26の命令が実行されない場合に該当し、PCMAの「2サイクル前」であるという情報が取得される。つまり、0x26のアドレスが退避されるアドレスとなる。
そして、カウンタ326のカウンタ値が1になり、PCMAサイクルに移行したとき、PCMAから2サイクル前まで遡ったPC323の値(0x26)を選び出すべく、退避PC選択信号がプログラムカウンタ制御ユニット312からPCバッファ314に入力される。これにより、PCバッファ314に格納されたPC323のアドレスの履歴のうち、退避PC選択信号に応じたアドレス(図10の場合0x26)が実行ユニット322に入力され、ロードストア命令のアドレスとしてロードストアユニット321、データバス500を介してRAM200に記憶される。
すなわち、本実施形態では、PCMAサイクルである1カウント分が周期プログラム起動準備期間に相当し、上記各実施形態の場合と比較して短縮されている。したがって、周期プログラム実行サイクルまでにできるだけ多くの命令を実行することができる。
なお、図9に示されるように、プログラムカウンタ制御ユニット312に最大ウェイトサイクルが入力されるようにし、プログラムカウンタ制御ユニット312が外部にデータを読み書きするために必要な最大のサイクル数を示す最大ウェイトサイクル数を見積もることで一周期の終わりを示すカウント数に一致する場合に実行中となる非周期プログラムの命令を実行しないと判定するようにしても良い。
(第6実施形態)
本実施形態では、第5実施形態と異なる部分についてのみ説明する。本実施形態では、非周期プログラムを構成する命令にMAステージが含まれているものがある場合について説明する。
図11は、本実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。例えば、カウンタ326のカウント値が7(PC323のアドレス0x22)にIFステージが実行される命令は、カウント値が1のときにWBステージが実行され、命令が完了する。しかし、PC323のアドレスが0x24のときに実行される命令は、当該命令よりも前に実行された命令に含まれるMAステージによってカウンタ326のカウンタ値が1になるまでにWBステージまでを完了することができない。
したがって、本実施形態では、プログラムカウンタ制御ユニット312にてPCMAサイクルから4サイクル前のPC323のアドレス0x24からスタートする命令が実行されないと判定され、当該判定によってPCMAの「4サイクル前」であるという情報が退避PC選択信号としてPCバッファ314に入力される。
これにより、上述のように、カウンタ326の値が1になるまでに完了できない命令のアドレスがPCバッファ314から選び出され、RAM200に退避される。そして、次の周期において周期プログラムが終了した後、退避されたアドレスが示す命令から再び非周期プログラムが実行されることとなる。
このように、命令にMAステージが含まれていたとしても、カウンタ326のカウンタ値が1になるまでに完了できない命令を退避させることができる。
(第7実施形態)
本実施形態では、第5、第6実施形態と異なる部分についてのみ説明する。本実施形態では、周期プログラム起動準備期間に非周期プログラムの分岐命令が実行される場合について説明する。
図12は、本実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。この図に示されるように、分岐命令C(0x53へ分岐)が実行された後、PC323のアドレス0x53が示す命令のIFステージが実行される。当該アドレス0x53が示す命令はカウント値が1になるまでに完了するが、PC323のアドレス0x54が示す命令はカウント値が1になるまでにWBステージを完了できないため問題となる。
このような場合も、上記第5、第6実施形態と同様に、プログラムカウンタ制御ユニット312にてPCMAサイクルから何サイクル前にスタートした命令が実行できないかが判定され、そのサイクル数に応じたアドレス(図12では0x54)がPCバッファ314から選び出され、RAM200に記憶されることとなる。
このように、分岐命令後の命令が周期プログラム起動準備期間内で終了できなくても、その命令のアドレスを退避させることで、次の周期にて非周期プログラムを実行させる際、分岐先のアドレスから命令を実行させることができる。
(第8実施形態)
本実施形態では、上記各実施形態と異なる部分についてのみ説明する。上記各実施形態では、カウンタ326のカウント値が1のときにPCMAサイクルとなり、1サイクル使用して退避PCをRAM200に退避させているが、本実施形態ではPCMAサイクルそのものを無くしてしまうことが特徴となっている。
図13は、本実施形態に係るCPUのブロック構成図である。制御ユニット310は、図9に示される構成と同様である。また、データパス320のうちレジスタファイル324に退避プログラムカウンタレジスタ328(本発明の保存用レジスタに相当、以下、退避PCレジスタという)が設けられている。当該退避PCレジスタ328は、PCバッファ314から入力される退避PC(非周期プログラム退避用)を格納するレジスタである。なお、データパス320においてレジスタファイル324を除くその他の構成は図9に示されるものと同様である。
図14は、本実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。この図に示されるように、PC323のアドレス0x27の命令は、カウント値が1になるまでにEXEステージを実行できないため、退避される。
このような場合、図14に示されるように、カウンタ326のカウント値が1から0に切り替わる瞬間に周期プログラムレジスタ325から周期プログラムの先頭アドレスがPC323にロードされると共に、退避PCがPCバッファ314から退避PCレジスタ328に格納される。
このように、退避PCレジスタ328に非周期プログラムのうち次回実行すべき命令のPC323のアドレスを保存している。このため、周期プログラムの終了時に実行される非周期処理へサブルーチン分岐させる際、当該分岐命令として非周期プログラム開始命令を設けることで、退避PCレジスタ328に格納されたアドレスをPC323にロードさせる。これにより、RAM200へのアクセスを行わずに1命令で非周期プログラムを再開することができる。
以上説明したように、本実施形態では、上記各実施形態のように周期プログラム起動準備期間に相当するものが存在せず、カウンタ326のカウンタ値のみによって非周期プログラムから周期プログラムへの切り替えをスムーズに行うことができる。このような場合であっても、非周期プログラムを確実に中断させ、周期プログラムを周期的に実行させることができる。
(他の実施形態)
上記各実施形態では、退避させるPC323のアドレスをRAM200に記憶させているが、ハードディスクや不揮発性メモリ等の他の記憶媒体に記憶させるようにしても構わない。
上記各実施形態で示された一周期を示すサイクル数(50)は一例であって、他のサイクル数(例えば100)であっても構わない。また、カウンタ326にサイクル数をカウントさせるに際し、カウントアップ、カウントダウンのいずれのカウント方法を採用しても構わない。
第1、第2実施形態で示されたマイクロプロセッサの各構成において、制御ユニット310にPC323から当該PC323が示すフェッチプログラムアドレスを入力することで当該フェッチプログラムアドレスの履歴を格納するPCバッファ314を備える。そして、プログラムカウンタ制御ユニット312が、PCバッファ314から選び出したフェッチプログラムアドレスを外部に退避させると共に、周期プログラムの実行が終了した後、外部に退避させたフェッチプログラムアドレスをPC323に格納させることで、中断した非周期プログラムの実行を再開させるようにしても良い。
本発明の第1実施形態に係るマイクロコンピュータのブロック構成図である。 本発明の第1実施形態に係るCPUのブロック構成図である。 CPUが実行するパイプライン処理の一例を示した図である。 周期プログラムを周期的に実行する内容を示した図である。 非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。 第2実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。 第3実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。 第4実施形態に係るCPUのブロック構成図である。 第5実施形態に係るCPUのブロック構成図である。 第5実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。 第6実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。 第7実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。 第8実施形態に係るCPUのブロック構成図である。 第8実施形態に係る非周期プログラムから周期プログラムに切り替わる処理シーケンスを示した図である。
符号の説明
100…ROM、200…RAM、300…CPU、312…プログラムカウンタ制御ユニット、313…停止タイミング生成ユニット、314…プログラムカウンタバッファ、323…プログラムカウンタ、325…周期プログラムレジスタ、326…カウンタ、327…停止タイミングレジスタ、328…保存用レジスタ。

Claims (14)

  1. 一定数のサイクル数を一周期とし、前記一周期の始まりと共に実行される周期プログラムと当該周期プログラムが終了した後に実行される非周期プログラムとを前記一周期内で前記各プログラムを構成する各命令を実行するようになっており、前記一周期を繰り返し実行することによって前記周期プログラムを周期的に実行するマイクロプロセッサであって、
    前記非周期プログラムの実行を停止させる停止タイミングを示すサイクル数を格納する停止タイミングレジスタ(327)と、
    前記周期プログラム実行中に設定されたカウント数の初期値に基づいて前記一周期に相当するサイクル数をカウントする時間計測手段(326)と、
    前記周期プログラムの先頭アドレスを格納する周期プログラムレジスタ(325)と、 前記周期プログラムもしくは前記非周期プログラムを実行すべくフェッチする命令のフェッチプログラムアドレスを格納すると共に、前記フェッチする命令を読み出す度に前記フェッチプログラムアドレスを更新するプログラムカウンタ(323)と、
    前記時間計測手段(326)から当該時間計測手段(326)がカウントするカウント数と前記停止タイミングレジスタ(327)から前記停止タイミングを示すサイクル数とをそれぞれ入力すると共に、前記時間計測手段(326)がカウントするサイクル数と前記停止タイミングを示すサイクル数とが一致したとき、前記プログラムカウンタ(323)を停止することで前記非周期プログラムの実行を中断させるようになっており、この後、前記時間計測手段(326)から入力されるカウント数が前記一周期の終わりを示すカウント数に一致した場合、前記周期プログラムレジスタ(325)に格納された前記周期プログラムの先頭アドレスを前記プログラムカウンタ(323)に格納させることで、前記周期プログラムの実行を開始させるプログラムカウンタ制御ユニット(312)と、を備えていることを特徴とするマイクロプロセッサ。
  2. 一定数のサイクル数を一周期とし、前記一周期の始まりと共に実行される周期プログラムと当該周期プログラムが終了した後に実行される非周期プログラムとを前記一周期内で前記各プログラムを構成する各命令を実行するようになっており、前記一周期を繰り返し実行することによって前記周期プログラムを周期的に実行するマイクロプロセッサであって、
    前記周期プログラム実行中に設定されたカウント数の初期値に基づいて前記一周期に相当するサイクル数をカウントする時間計測手段(326)と、
    前記周期プログラムの先頭アドレスを格納する周期プログラムレジスタ(325)と、 前記周期プログラムもしくは前記非周期プログラムを実行すべくフェッチする命令のフェッチプログラムアドレスを格納すると共に、前記フェッチする命令を読み出す度に前記フェッチプログラムアドレスを更新するプログラムカウンタ(323)と、
    前記命令を実行してから完了するまでに必要な最大サイクル数を前記非周期プログラムの実行を停止させるための最大実行サイクル数とし、外部にデータを読み書きするために必要な最大のサイクル数を示す最大ウェイトサイクル数を前記最大実行サイクル数に加えた数を停止タイミングを示すサイクル数として設定する停止タイミング生成ユニット(313)と、
    前記時間計測手段(326)から当該時間計測手段(326)がカウントするカウント数と前記停止タイミング生成ユニット(313)から前記停止タイミングを示すサイクル数とをそれぞれ入力すると共に、前記時間計測手段(326)がカウントするサイクル数と前記停止タイミングを示すサイクル数とが一致したとき、前記プログラムカウンタ(323)を停止することで前記非周期プログラムの実行を中断させるようになっており、この後、前記時間計測手段(326)から入力されるカウント数が前記一周期の終わりを示すカウント数に一致した場合、前記周期プログラムレジスタ(325)に格納された前記周期プログラムの先頭アドレスを前記プログラムカウンタ(323)に格納させることで、前記周期プログラムの実行を開始させるプログラムカウンタ制御ユニット(312)と、を備えていることを特徴とするマイクロプロセッサ。
  3. 前記最大実行サイクル数は、パイプラインストールが起こった場合の命令の最大サイクル数を示すことを特徴とする請求項2に記載のマイクロプロセッサ。
  4. 前記プログラムカウンタ制御ユニット(312)は、停止させた前記プログラムカウンタ(323)のフェッチプログラムアドレスを外部に退避させるようになっており、前記周期プログラムの実行が終了した後、前記外部に退避させた前記非周期プログラムのフェッチプログラムアドレスを前記プログラムカウンタ(323)に入力させることで、中断した非周期プログラムの実行を再開させるようになっていることを特徴とする請求項1ないし3のいずれか1つに記載のマイクロプロセッサ。
  5. 前記プログラムカウンタ(323)から当該プログラムカウンタ(323)が示す前記フェッチプログラムアドレスの履歴を格納するプログラムカウンタバッファ(314)を備えており、
    前記プログラムカウンタ制御ユニット(312)は、前記プログラムカウンタバッファ(314)から選び出した前記フェッチプログラムアドレスを外部に退避させるようになっており、前記周期プログラムの実行が終了した後、外部に退避させた前記フェッチプログラムアドレスを前記プログラムカウンタ(323)に格納させることで、中断した非周期プログラムの実行を再開させるようになっていることを特徴とする請求項1ないし3のいずれか1つに記載のマイクロプロセッサ。
  6. 一定数のサイクル数を一周期とし、前記一周期の始まりと共に実行される周期プログラムと当該周期プログラムが終了した後に実行される非周期プログラムとを前記一周期内で前記各プログラムを構成する各命令を実行するようになっており、前記一周期を繰り返し実行することによって前記周期プログラムを周期的に実行するマイクロプロセッサであって、
    前記周期プログラム実行中に設定されたカウント数の初期値に基づいて前記一周期に相当するサイクル数をカウントする時間計測手段(326)と、
    前記周期プログラムの先頭アドレスを格納する周期プログラムレジスタ(325)と、 前記周期プログラムもしくは前記非周期プログラムを実行すべくフェッチする命令のフェッチプログラムアドレスを格納すると共に、前記フェッチする命令を読み出す度に前記フェッチプログラムアドレスを更新するプログラムカウンタ(323)と、
    前記プログラムカウンタ(323)から当該プログラムカウンタ(323)が示す前記フェッチプログラムアドレスの履歴を格納するプログラムカウンタバッファ(314)と、
    前記時間計測手段(326)から入力されるカウント数が前記一周期の終わりを示すカウント数に一致する場合に実行中となる前記非周期プログラムの命令を実行しないと判定すると共に、その命令の開始について前記一周期の終わりを示すカウント数から遡ったサイクル数を取得し、前記プログラムカウンタバッファ(314)から当該サイクル数に対応したフェッチプログラムアドレスを選び出すようになっており、前記時間計測手段(326)から入力されるカウント数が前記一周期の始まりを示すカウント数になった場合、前記周期プログラムレジスタ(325)に格納された前記周期プログラムの先頭アドレス
    を前記プログラムカウンタ(323)に格納させることで、前記周期プログラムの実行を開始させるプログラムカウンタ制御ユニット(312)と、を備えていることを特徴とするマイクロプロセッサ。
  7. 前記プログラムカウンタ制御ユニット(312)は、外部にデータを読み書きするために必要な最大のサイクル数前記一周期の終わりを示すカウント数一致する場合に実行中となる前記非周期プログラムの命令を実行しないと判定することを特徴とする請求項6に記載のマイクロプロセッサ。
  8. 前記プログラムカウンタ制御ユニット(312)は、前記プログラムカウンタバッファ(314)から選び出した前記フェッチプログラムアドレスを外部に退避させるようになっており、前記周期プログラムの実行が終了した後、外部に退避させた前記フェッチプログラムアドレスを前記プログラムカウンタ(323)に格納させることで、中断した非周期プログラムの実行を再開させるようになっていることを特徴とする請求項6に記載のマイクロプロセッサ。
  9. 前記プログラムカウンタバッファ(314)から入力されるフェッチプログラムアドレスを格納する保存用レジスタ(328)が備えられており、
    前記プログラムカウンタ制御ユニット(312)は、前記プログラムカウンタバッファ(314)から選び出した前記フェッチプログラムアドレスを前記保存用レジスタ(328)に退避させるようになっており、前記周期プログラムの実行が終了した後、前記保存用レジスタ(328)に退避させた前記フェッチプログラムアドレスを前記プログラムカウンタ(323)に格納させることで、中断した非周期プログラムの実行を再開させるようになっていることを特徴とする請求項6に記載のマイクロプロセッサ。
  10. 請求項1ないし9のいずれか1つに記載のマイクロプロセッサと、
    前記周期プログラムおよび前記非周期プログラムを格納する第1記憶手段(100)と、
    前記マイクロプロセッサによってデータが書き込まれる第2記憶手段(200)と、を備えていることを特徴とするマイクロコンピュータ。
  11. 前記第1記憶手段(100)には、前記周期プログラムを周期的に実行させるための前記一周期に相当する一定数のカウント数を前記時間計測手段(326)に設定する開始タイミング設定命令が格納されており、
    前記マイクロプロセッサは、前記周期プログラムを実行するに際し、前記開始タイミング設定命令を実行することで、前記時間計測手段(326)に前記一周期に相当する一定数のサイクル数を設定するようになっていることを特徴とする請求項10に記載のマイクロコンピュータ。
  12. 前記第1記憶手段(100)には、前記周期プログラムの実行が終了した後、前記非周期プログラムへ分岐する非周期プログラム開始命令が格納されており、
    前記マイクロプロセッサは、前記周期プログラムの実行後、前記非周期プログラム開始命令を実行することにより、前記非周期プログラムの実行を開始するようになっていることを特徴とする請求項10または11に記載のマイクロプロセッサ。
  13. 前記第1記憶手段(100)には、前記周期プログラムの先頭アドレスを前記周期プログラムレジスタ(325)に書き込む周期プログラムレジスタ設定命令が格納されており、
    前記マイクロプロセッサは、当該マイクロプロセッサのリセット後、前記開始タイミング設定命令の実行前に前記周期プログラムレジスタ設定命令を実行するようになっていることを特徴とする請求項10ないし12のいずれか1つに記載のマイクロコンピュータ。
  14. 前記第1記憶手段(100)には、前記停止タイミングレジスタ(327)に前記非周期プログラムの実行を停止させる前記停止タイミングを示すサイクル数を書き込む停止タイミングレジスタ設定命令が格納されており、
    前記マイクロプロセッサは、当該マイクロプロセッサのリセット後、前記開始タイミング設定命令の実行前に前記停止タイミングレジスタ設定命令の実行するようになっていることを特徴とする請求項11ないし13のいずれか1つに記載のマイクロコンピュータ。
JP2006254188A 2006-09-20 2006-09-20 マイクロプロセッサおよびそれを用いたマイクロコンピュータ Expired - Fee Related JP4770664B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006254188A JP4770664B2 (ja) 2006-09-20 2006-09-20 マイクロプロセッサおよびそれを用いたマイクロコンピュータ
US11/902,365 US7991986B2 (en) 2006-09-20 2007-09-20 Microprocessor starting to execute a computer program at a predetermined interval

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006254188A JP4770664B2 (ja) 2006-09-20 2006-09-20 マイクロプロセッサおよびそれを用いたマイクロコンピュータ

Publications (2)

Publication Number Publication Date
JP2008077294A JP2008077294A (ja) 2008-04-03
JP4770664B2 true JP4770664B2 (ja) 2011-09-14

Family

ID=39190051

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006254188A Expired - Fee Related JP4770664B2 (ja) 2006-09-20 2006-09-20 マイクロプロセッサおよびそれを用いたマイクロコンピュータ

Country Status (2)

Country Link
US (1) US7991986B2 (ja)
JP (1) JP4770664B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4947027B2 (ja) * 2008-10-08 2012-06-06 株式会社デンソー マイクロコンピュータ
US9003414B2 (en) * 2010-10-08 2015-04-07 Hitachi, Ltd. Storage management computer and method for avoiding conflict by adjusting the task starting time and switching the order of task execution
US9983905B2 (en) 2012-12-06 2018-05-29 White Eagle Sonic Technologies, Inc. Apparatus and system for real-time execution of ultrasound system actions
US10499884B2 (en) 2012-12-06 2019-12-10 White Eagle Sonic Technologies, Inc. System and method for scanning for a second object within a first object using an adaptive scheduler
US9529080B2 (en) 2012-12-06 2016-12-27 White Eagle Sonic Technologies, Inc. System and apparatus having an application programming interface for flexible control of execution ultrasound actions
US10076313B2 (en) 2012-12-06 2018-09-18 White Eagle Sonic Technologies, Inc. System and method for automatically adjusting beams to scan an object in a body
US9530398B2 (en) 2012-12-06 2016-12-27 White Eagle Sonic Technologies, Inc. Method for adaptively scheduling ultrasound system actions
US9908027B2 (en) 2014-04-22 2018-03-06 Nike, Inc. Article of apparel with dynamic padding system
JP6859922B2 (ja) * 2017-10-24 2021-04-14 オムロン株式会社 制御装置、制御装置の制御方法、情報処理プログラム、および記録媒体
US10705843B2 (en) * 2017-12-21 2020-07-07 International Business Machines Corporation Method and system for detection of thread stall
JP7024679B2 (ja) * 2018-10-05 2022-02-24 オムロン株式会社 開発支援プログラム、開発支援装置、および開発支援方法
JP7091986B2 (ja) * 2018-10-05 2022-06-28 オムロン株式会社 制御システム、制御方法、および開発支援プログラム
CN110262349A (zh) * 2019-06-28 2019-09-20 中国航空工业集团公司雷华电子技术研究所 一种c8051f系列单片机的远程在线编程方法及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63314648A (ja) * 1987-05-30 1988-12-22 Nec Corp デ−タ通信用プロセッサ
JPH05233277A (ja) 1992-02-21 1993-09-10 Fujitsu Ltd マイクロプロセッサ
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
JP2000330785A (ja) 1999-05-18 2000-11-30 Sharp Corp 実時間プロセッサおよび命令実行方法
JP2001022600A (ja) * 1999-07-06 2001-01-26 Matsushita Electric Ind Co Ltd ディジタル信号処理装置
US6823517B1 (en) * 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
JP2003067201A (ja) * 2001-08-30 2003-03-07 Hitachi Ltd コントローラとオペレーティングシステム
JP4327008B2 (ja) * 2004-04-21 2009-09-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
JP2008077294A (ja) 2008-04-03
US7991986B2 (en) 2011-08-02
US20080072013A1 (en) 2008-03-20

Similar Documents

Publication Publication Date Title
JP4770664B2 (ja) マイクロプロセッサおよびそれを用いたマイクロコンピュータ
US20020069402A1 (en) Scheduling control within a system having mixed hardware and software based instruction execution
US20080141013A1 (en) Digital processor with control means for the execution of nested loops
CN105988400B (zh) 微控制器单元
CN104978284A (zh) 处理器子程序高速缓冲存储器
US7793296B2 (en) System and method for scheduling a multi-threaded processor
CN112579162A (zh) 异构isa平台上硬件和软件协调的对高级特征选入的方法
JPH1196004A (ja) データプロセッサにおける条件分岐実行を制御するための方法および装置
US11216278B2 (en) Multi-thread processing
JP3790626B2 (ja) デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置
JP2005521937A (ja) コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置
US7831979B2 (en) Processor with instruction-based interrupt handling
KR100321745B1 (ko) 외부메모리액세스를위한마이크로컨트롤러유닛
US7904703B1 (en) Method and apparatus for idling and waking threads by a multithread processor
JP2002508562A (ja) ジッターのない命令の実行
US20170255467A1 (en) Apparatus for Information Processing with Loop Cache and Associated Methods
JP4889235B2 (ja) プログラム制御プロセッサ
JP5209390B2 (ja) 情報処理装置及び命令フェッチ制御方法
JP2008269390A (ja) プロセッサ
JP2001014161A (ja) プログラマブルコントローラ
JP2009199424A (ja) マイクロコンピュータ
JP2005100017A (ja) プロセッサシミュレータおよび割込遅延カウントプログラム、並びにプロセッサのシミュレート方法
JPH05216721A (ja) 電子計算機
JPWO2000073863A1 (ja) プログラマブルコントローラ
JP7276755B2 (ja) 処理速度整合回路およびマイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081016

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110412

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110606

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

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4770664

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

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

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

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