JP3828040B2 - マイクロコンピュータの制御方法 - Google Patents

マイクロコンピュータの制御方法 Download PDF

Info

Publication number
JP3828040B2
JP3828040B2 JP2002109908A JP2002109908A JP3828040B2 JP 3828040 B2 JP3828040 B2 JP 3828040B2 JP 2002109908 A JP2002109908 A JP 2002109908A JP 2002109908 A JP2002109908 A JP 2002109908A JP 3828040 B2 JP3828040 B2 JP 3828040B2
Authority
JP
Japan
Prior art keywords
register
code
pipeline
address
instruction
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
JP2002109908A
Other languages
English (en)
Other versions
JP2003316593A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2002109908A priority Critical patent/JP3828040B2/ja
Publication of JP2003316593A publication Critical patent/JP2003316593A/ja
Application granted granted Critical
Publication of JP3828040B2 publication Critical patent/JP3828040B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)
  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、ROM(Read Only Memory)に記憶されたコードのバグやパイプラインハザードを回避するマイクロコンピュータに関する。
【0002】
【従来の技術】
従来、マイクロコンピュータが実行するコードは、外部記憶装置に記憶されている。マイクロコンピュータは、外部記憶装置にアクセスして処理をおこなう。このため、コードにバグが発見された場合、外部記憶装置に記憶されたコードを修正、いわゆるデバッグをおこなうことによって、マイクロコンピュータを正常に動作させることが可能であった。
【0003】
現在、マイクロコンピュータ内に不揮発性記憶装置を設けることは、技術的、またコスト的に可能である。マイクロコンピュータの記憶装置へのアクセス速度の向上や製造コストの低減から、マイクロコンピュータ内部に記憶装置を設けることが増えると思われる。
【0004】
しかし、不揮発性記憶装置がROMの場合、ROMに記憶されたコードにバグがあると、デバッグ用コードをROMに挿入または上書きするのは不可能である。デバッグは、マイクロコンピュータの製造からやり直す、またはICE(Incircuit Emulator)などの大規模回路を追加する必要が生じ、コスト増加および開発期間の延長を生じさせる。したがって、マイクロコンピュータ内にコードを記憶した記憶装置を設けることはリスクを伴う。
【0005】
マイクロコンピュータは、パイプラインでデータ処理をおこなうことによって、処理速度を向上させることができる。しかし、図14aに示すように、4段のステージを考えた場合、*で示す箇所のメモリの値を読み出す読み出しステージとメモリに結果を書き込む書き込みステージに、メモリ上の同一アドレスにアクセスする可能性があり、パイプラインハザードが発生する。また、iの命令の処理結果をメモリに書き込んだ後、i+1の命令で、その処理結果を使用する場合も、i+1が命令を実行するときに処理結果が無いため、パイプラインハザードが発生する。
【0006】
パイプラインハザードを防ぐ方法としては、図14bに示すように、時間的に後から発生した命令(i+1やi+2)を数サイクルストールさせることが最も効果的である。これにより、パイプラインで処理する命令の厳しい条件は緩和され、パイプラインハザードが回避される。
【0007】
マイクロコンピュータがパイプラインハザードを回避するためには、(1)ハードウェアによりパイプラインハザードの発生を防ぐ構造にする、または(2)ソフトウェアによりパイプラインハザードの発生するコードを回避する構造にする。
【0008】
しかし、(1)は、ハードウェアにバグが存在すれば、ハードウェアを再制作する必要がある。また、(2)は、コンパイラやアセンブラコードにバグがある場合は、それらを修正する必要がある。
【0009】
これらの不都合を回避するために、パイプラインハザードの発生しにくいコードを記述する、もしくは既存のコードを修正する必要がある。これには、ハードウェア構造の知識が必要不可欠となり、コードを作成する者に負担となる。
【0010】
【発明が解決しようとする課題】
本発明の目的は、ROMに記憶されたコードのバグやパイプラインハザードを回避するマイクロコンピュータを提供することにある。
【0011】
【課題を解決するための手段】
本発明のマイクロコンピュータの要旨は、コードが記憶されたROMと、前記コードを実行するマイクロプロセッサーと、デバッグ用コードを挿入、またはデバッグ用コードに上書きする前記コードのアドレスを記憶する第1レジスタと、前記アドレスのコードに対して上書きする命令を記憶する第2レジスタと、前記マイクロプロセッサーが実行するコードのアドレスと第1レジスタに記憶されたアドレスとを比較する回路と、前記コードにおいて、第1レジスタに記憶されたアドレスのコードを前記命令に上書きする回路と、前記第1レジスタに記憶させるアドレス、第2レジスタに記憶させる命令、およびデバッグ用コードを記憶するメモリと、を含むことにある。
【0012】
他のマイクロコンピュータの要旨は、コードが記憶されたROMと、前記コードを実行するマイクロプロセッサーと、前記コードをデバッグ用コードに上書きするアドレスを監視し、監視の結果によって切り替え信号を発生するアドレスコントローラーと、前記デバッグ用コードを記憶するメモリと、前記切り替え信号を受信し、前記コードとデバッグ用コードを選択する選択手段と、を含むことにある。
【0013】
さらに他のマイクロコンピュータの要旨は、パイプライン処理をおこなうパイプラインコントローラーと、前記パイプライン処理をストールさせるアドレスまたは命令を記憶する第1レジスタと、前記ストールのサイクル数を記憶する第2レジスタと、前記パイプラインコントローラーが、前記アドレスまたは命令のパイプライン処理のストールを開始した後、該パイプラインコントローラーにストールを解除させるための信号を送るストールコントローラーと、を含むことにある。
【0014】
【発明の実施の形態】
本発明のマイクロコンピュータの実施形態について図面を用いて説明する。なお、本明細書においてコードは、プログラムや命令などをいう。
【0015】
先ず、第1実施形態について説明する。第1実施形態は、図1に示すように、マイクロプロセッサーが、ROM12にアクセスした際、第1レジスタ16に記憶されたアドレスにアクセスをすると、ROM12に記憶された命令を実行せずに、メモリ24に記憶されたデバッグ用コードを実行するものである。
【0016】
図2に示すように、マイクロコンピュータ10は、コードが記憶されたROM12と、コードを実行するマイクロプロセッサー14と、デバッグ用コードを挿入、またはデバッグ用コードに上書きするコードのアドレスを記憶する第1レジスタ16と、そのアドレスの命令またはコードに対して上書きする命令を記憶する第2レジスタ18と、マイクロプロセッサー14が実行するコードのアドレスと第1レジスタ16に記憶されたアドレスとを比較するコンパレーター20と、第1レジスタ16に記憶されたアドレスのコードを第2レジスタ18に記憶された命令に上書きするマルチプレクサー22と、第1レジスタ16に記憶させるアドレス、第2レジスタ18に記憶させる命令、およびデバッグ用コードを記憶するメモリ24と、を含む。
【0017】
ROM12は、マイクロコンピュータ10内に設けられるOnChipROMである。ROMであるので、記憶されたコードは読み出し専用であって、書き換えることはできない。
【0018】
コンパレーター20は、マイクロプロセッサー14がROM12にアクセスするとき、アクセスするアドレスを受け取り、そのアドレスと第1レジスタ16に記憶されたアドレスとを比較する回路である。コンパレーター20は、双方のアドレスが一致した場合に、マルチプレクサー22に所定信号を送る手段を含む。
【0019】
マルチプレクサー22は、コンパレーター20からの信号を受け取ると、第2レジスタ18の命令を選択することによって、ROM12から受け取った命令を第2レジスタ18に記憶された命令に上書きする回路である。したがって、マルチプレクサー22がコンパレーター20からの信号を受け取ると、第2レジスタ18に記憶された命令がマイクロプロセッサー14に送られる。
【0020】
メモリ24は、上述したアドレス、命令、デバッグ用コードを記憶させるため、データの書き換えが可能であるRAM(Random Access Memory)を用いるのが好ましい。バグが発見されるたびにデバッグ用コードを追加していくことが可能である。メモリ24は、マイクロコンピュータ10の内部以外に、外部に設けても良い。外部にメモリ24を設けた場合、マイクロコンピュータ10とメモリ24は、任意のバスによって接続される。
【0021】
また、ROM12のアドレスとメモリ24のアドレスとは、ロジック的に同一のアドレスが存在しないようにアドレスを割り振る。同一のアドレスが存在しないので、ROM12からメモリ24に、マイクロプロセッサー24がアクセスを変更することができる。
【0022】
第1および第2レジスタ16,18に記憶されるアドレスと命令は、データ・バス28を介して入力され、記憶される。また、図2中の点線部は、命令を上書きするための回路ブロック26となっている。
【0023】
次に、ROM12およびメモリ24のコードの一例を示しながら、マイクロコンピュータ10の動作について説明する。
【0024】
マイクロプロセッサー14は、ROM12の先頭アドレスから順番にアクセスする。図3に示すように、ROM12に記憶されたコードの初期化ルーチンは、マイクロプロセッサー14に、ROM12からメモリ24へのアクセス変更を実現させるためのコードを含む。コードとしては、指定されたアドレスのコードを呼び出すCALL命令を使用する。このCALL命令で指定されたメモリ24のアドレス、例えば2000h番地に、マイクロプロセッサー14はアクセスを変更する。
【0025】
メモリ24の2000h番地には、マイクロプロセッサー14が、所定内容を第1レジスタ16と第2レジスタ18のそれぞれに転送するための命令が記憶されている。所定内容は、ROM12に記憶されたコードにおいて、デバッグが必要なアドレスと、デバッグ用コードが記載されたメモリ24のアドレスへアクセスを変更する命令である。例えば、「MOV regA, #0100h」と「MOV regB, “CALL #2100h”」である。なお、regAは第1レジスタ16で、regBは第2レジスタ18である。MOV命令はデータなどを転送する命令であり、上記の命令によって、マイクロプロセッサー14は、データ・バス28を介して第1レジスタ16に#0100hを転送し、第2レジスタ18にCALL #2100hを転送する。実際、CALL #2100hは、マイクロプロセッサー14が処理をおこなうために、16ビット、32ビットまたは64ビットの2進数で示されるコードとなっている。なお、図2中の各レジスタ16,18に向かう矢印は、データ・バス28からの上記アドレスや命令の入力を示す。転送後、RETURN命令によって、マイクロプロセッサー14は、メモリ24からROM12にアクセスをもどす。
【0026】
それぞれのレジスタ16,18にデバッグが必要なアドレスとアクセスを変更する命令を転送することによって、マイクロプロセッサー14は、ROM12のそのアドレスにアクセスをおこなうとき、ROM12ではなくメモリ24にアクセスを変更する。アクセスの変更先には、デバッグ用コードが記憶されているため、マイクロプロセッサー14は、そのデバッグ用コードを実行することによって、デバッグが行える。
【0027】
また、デバッグ用コードの挿入であるので、デバッグ用コードの後には、ROM12に記憶されていた命令またはコードを記憶しておく。さらに、その命令やコードの後には、次にデバッグが必要なROM12のアドレスとデバッグ用コードが記憶されたメモリ24のアドレスへアクセスを変更する命令を、それぞれ第1レジスタ16と第2レジスタ18に転送する命令も記載されている。上記と同じように、マイクロプロセッサー14は、第1レジスタ16と第2レジスタ18に、アドレスと命令を転送する。例えば、第1レジスタ16に#0200h、第2レジスタ18にCALL #2200hを転送する。次に、マイクロプロセッサー14が、ROM12の0200h番地にアクセスするとき、上記と同じようにデバッグする。
【0028】
メモリ24のデバッグ用コードの後に、次にデバッグをおこなうアドレスおよびデバッグ用コードのアドレスを記憶させておくことによって、複数のデバッグが必要であっても、マイクロプロセッサー14は、順次、ROM12のコードをデバッグする。コードの最後のデバッグをおこなうとき、次にデバッグをおこなう必要がないので、最後のデバッグ用コードが記憶されたアドレスには、デバッグをおこなうアドレスおよびデバッグ用コードが記憶されたアドレスは記憶されない。
【0029】
メモリ24のデバッグ用コードの後には、マイクロプロセッサー14が、アクセスをメモリ24からROM12にもどすためのRETURN命令が記憶されている。したがって、マイクロプロセッサー14は、メモリ24のデバッグ用コードでデバッグをおこなった後、RETURN命令によって、ROM12にアクセスをもどす。アクセスをもどすアドレスは、CALL命令によってメモリ24にアクセスした次のアドレスである。ROM12にアクセスが戻った後、マイクロプロセッサー14は、コードを最後まで実行する。
【0030】
図3の例は、ROM12の命令またはコードにデバッグ用コードを挿入している。デバッグ用コードの挿入以外に、ROM12のコードをデバッグ用コードに上書きすることも可能である。その例を、図4を用いて説明する。
【0031】
ROM12に記憶されたコードの初期化ルーチンは、メモリ24にアクセスを変更するコードを含む。メモリ24の2000h番地には、図3の例と同じように、第1レジスタ16と第2レジスタ18にアドレスとアクセス変更の命令を転送するコードが記憶されている。図3と異なるのは、CALL命令ではなく、分岐命令であるJUMP命令が記憶されている。マイクロプロセッサー14が第1レジスタ16に記憶されたアドレスにアクセスすると、JUMP命令によって、マイクロプロセッサー14はROM12からメモリ24にアクセスを変更する。
【0032】
メモリ24のデバッグ用コードの最後に、ROM12のコードにアクセスを変更するコードを含める。この場合、図3のRETURN命令ではなくJUMP命令を用いる。例えば、JUMP #0200hとすると、ROM12の0200h番地にアクセスが変更される。したがって、図4に示すように、ROM12の0100h番地から0200h番地までのコードが処理されずに、メモリ24のコードが処理される。すなわち、ROM12に記憶されたコードのバグをメモリ24のコードに上書きすることができる。
【0033】
さらに、図5に示すように、CALL命令とJUMP命令を組み合わせてデバッグをおこなうこともできる。2つの命令を組み合わせることによって、ROM12に記憶されたコードのデバッグを柔軟におこなうことができる。CALL命令やJUMP命令を用いて、デバッグが必要な箇所にメモリ24のデバッグ用コードを挿入したり上書きしたりすることができるため、マイクロプロセッサー14がデバッグをおこなうに当たって、余分な動作は入っていない。
【0034】
以上のように、ROM12に記憶されたコードのデバッグが必要な箇所だけ、メモリ24にアクセスすることによって、バグを回避することができる。メモリ24にデバッグの必要なアドレスやデバッグ用コードなどを記憶させてバグを回避しているため、マイクロコンピュータ10の制作のやり直しやICEの追加は必要ない。また、メモリ24が書き換え可能であれば、柔軟にデバッグをおこなうことができる。
【0035】
次に、第2実施形態について説明する。図6に示すように、第2実施形態の概念は、ROM32の一部に変わるレジスタまたはRAMなどの書き換え可能なメモリ38を備えている。マイクロプロセッサーは、図中の矢印で示すように、デバッグを必要とされるROM32のコードにアクセスが生じた場合、メモリ38にアクセスをおこない、コードの処理をおこなう。これにより、第1実施形態と同様に、ROM32のコードをデバッグすることができる。
【0036】
図7に示すように、マイクロコンピュータ30を構成するブロックは、コードが記憶されたROM32と、コードを実行するマイクロプロセッサー34と、コードのデバッグ用コードを挿入するアドレスを監視し、監視の結果によって切り替え信号を発生するアドレスコントローラー36と、デバッグ用コードを記憶するメモリ38と、切り替え信号を受信し、コードとデバッグ用コードを選択する選択手段40と、を含む。
【0037】
アドレスコントローラー36は、図8に示すように、デバッグ用コードに上書きするアドレスを記憶するレジスタ42と、レジスタ42に記憶されたアドレスとマイクロプロセッサー34がアクセスするアドレスとを減算する減算機44と、減算機44の結果より切り替え信号を発生するデコーダー46と、を含む。デバッグが必要なコードが複数のアドレスにまたがる領域であった場合、レジスタ42に記憶されるアドレスをデバッグが必要なコードの先頭アドレスとすることによって、デバッグが必要なアドレス全てをレジスタ42に記憶する必要はない。
【0038】
また、減算機44は、減算結果の上位ビットをデコーダー46に送り、かつ下位ビットをメモリ38に送る手段を含む。メモリ38は、下位ビットの値がメモリ38のアドレスと同一になっている場合、そのアドレスのコードを選択手段40に送る。
【0039】
デコーダー46は、上位ビットを受け取ると、上述したように切り替え信号を発生する手段である。切り替え信号は、上位ビットをデコードした信号である。また、切り替え信号は、上位ビットが0であればメモリ38のコード、0以外であればROM32のコードを、選択手段40が選択する信号である。
【0040】
デバッグをおこなうコードの先頭アドレス、およびデバッグ用コードを記憶する記憶手段(図示せず)を含む。
【0041】
マイクロコンピュータ30の動作について説明する。マクロコンピュータ30の起動時もしくはコード実行中に記憶手段などにアドレスが変化した際に、記憶手段からレジスタ42に要修正個所の先頭アドレスを、かつメモリ38にデバッグ用コードを、MOV命令もしくはDMA(Direct Memory Access)により書き込む。すなわち、ROM32のコードの初期化ルーティンまたは途中のコードに記憶手段にアクセスを変更する命令を挿入しておく。この時、メモリ38は、図9のメモリマップに示すように、ロジック的に、コードの読み出し時と書き込み時に異なるアドレスを持っており、書き込みアドレスは固定となるように設計しておく。これにより、メモリ38への書き込みが可能となる。
【0042】
マイクロプロセッサー34がコードを処理中は、常にレジスタ42に記憶されたアドレスと実際にアクセスするアドレスとを減算機44に入力する。その計算結果の下位ビットをメモリ38のアドレスとして使用する。また、デコーダー46が上位ビットをデコード後、選択手段40がデコードされた上位ビット、すなわち切り替え信号によって、現在アクセスしているアドレスが、デバッグの必要個所か否かを判断する。その結果、マイクロプロセッサー34に送るコードが、ROM32かメモリ38のコードとなる。
【0043】
マイクロコンピュータ30により、読み出しアドレスは可変となり任意の場所のコード修正が可能となる。さらに、レジスタ42の値をデバッグ用コードの書き込みアドレスの先頭値、この例では、EFF0hに設定することで、ROM32内部に要修正個所がない場合は、コード修正以外の用途にも有効活用可能である。図8,9では、アドレスを、レジスタはFFFEh、デバッグ用コードは5000h−500Fh、ROMエリアは000h−EFFFhを想定している。
【0044】
例えば、図8では、レジスタ42に5000h番地が記憶され、メモリ38の000h番地から順にデバッグ用コードが記憶されるとする。マイクロプロセッサー34が、5100h番地にアクセスしようとすると、減算機44での減算結果は、上位ビットは0、下位ビットは100になる。メモリ38の100h番地にアクセスされ、100h番地のコードが選択手段40に送られる。また、ROM32からも5100h番地のコードが選択手段40に送られる。さらに、デコーダー46は切り替え信号として、0をデコードした信号を選択手段40に送る。この0をデコードした信号は、選択手段40がメモリ38のコードを選択する信号になる。したがって、選択手段40は、メモリ38のコードを選択する。
【0045】
また、上記の例において、マイクロプロセッサー34が6100h番地にアクセスする場合、減算機44での減算結果は、上位ビットが1になり、下位ビットが100になる。メモリ38から選択手段40に、100h番地のコードが送られる。ROM32から選択手段40には、6100h番地のコードが送られる。さらに、デコーダー46は切り替え信号として、1をデコードした信号を選択手段40に送る。この1をデコードした信号は、選択手段40がROM32のコードを選択する信号である。したがって、選択手段40は、ROM32のコードを選択する。
【0046】
以上のように、メモリ38から同じアドレスのコードが選択手段40に送られても、切り替え信号によって、メモリ38のコードかROM32のコードが選択される。
【0047】
本発明は、ROM32にあるコードのデバッグを容易におこなうことができ、マイクロコンピュータ30の再マスク処理からの製造コスト、開発期間を短縮できる。また、アドレスが変更されないことから要修正以外のコード内に修正領域のアドレスを使用したものがある場合に有効である。また、本発明の構成であれば、要修正個所の任意の場所にアクセスしてもメモリ38を参照可能であるため、ROM32内部にはコードではなくデータであるような場合も有効である。さらに、内部で処理を全ておこなう構成であるため、パフォーマンスの劣化は最小限で済むことや、マイクロプロセッサー側から見ても、単に同じアドレスを使用するため、特別な処理が必要ないことが有利な点である。また、回路も単純であり、容易に実現可能である。さらに、コード修正をおこなう必要のない場合は、メモリ38を拡張メモリとして活用可能である。
【0048】
次に第3実施形態について説明する。第3実施形態は、ある条件がととのったことをきっかけとして、その条件が発生する箇所のパイプライン処理をストールさせるマイクロコンピュータである。
【0049】
図10に示すように、第3実施形態を構成するマイクロコンピュータ50のブロックは、パイプライン処理をおこなうパイプラインコントローラー52と、パイプライン処理をストールさせるアドレスまたは命令を記憶する第1レジスタ54と、ストールのサイクル数を記憶する第2レジスタ56と、パイプラインコントローラー52が、所定のアドレスまたは命令のパイプライン処理のストールを開始した後、パイプラインコントローラー52にストールを解除させるための信号を送るストールコントローラー58と、を含む。
【0050】
命令やアドレスなどを特定条件として、第1レジスタ54に設定する。マイクロプロセッサー(図示せず)は、特定条件を常に把握しており、それを実命令と常に比較しながら、本来の処理をおこなう。この条件が成立した場合、マイクロプロセッサーは、パイプラインコントローラー52へ情報を送り、パイプラインコントローラー52は数サイクルストールされる。
【0051】
第3実施形態を実施するための回路図を図11に示す。パイプラインハザードの起こりうるアドレスを第1レジスタ54に、ストールコントローラー58の機能を有効とするか、またはストールのサイクル数などを第2レジスタ56に、イニシャライズルーチンを利用して設定する。
【0052】
ストールコントローラー58は、パイプラインコントローラー52のパイプライン処理のストール数をカウントする手段と、第2レジスタ56のサイクル数とカウントする手段でカウントされたストール数を比較する第1比較回路64と、を含む。カウントする手段は、ストール数をカウントするために、ストール数を記憶するカウントレジスタ60と、クロックが入力されるたびに、カウントレジスタ60に記憶されたストール数に1を加算する加算回路62と、を含む。カウントレジスタ60のストール数は、第1比較回路64と加算回路62に送られる。加算回路62は、ストール数に1を加算し、カウントレジスタ60に送り、カウントレジスタ60は新たなストール数を記憶する。なお、クロックは、パイプラインコントローラー52が、パイプライン処理の同期を取るための信号でもある。
【0053】
第1比較回路64は、カウントレジスタ60のストール数と、第2レジスタ56に記憶されたサイクル数とを比較する回路と、一致したときにストール終了信号を発生する回路と、を含む。
【0054】
さらに、ストールコントローラー58は、第1レジスタ54に記憶されたアドレスと後述するプログラムカウンタ70からのアドレスとを比較する第2比較回路66と、第2比較回路66からの信号とストール終了信号とを同時に受信したときに、パイプラインコントローラー52にストールを解除する信号としてenable信号を送るAND回路68と、を含む。
【0055】
以上のように、ストールが発生したときだけ、ストール数をカウントすることによって、マイクロコンピュータ50の制作後であっても、柔軟にパイプライン処理のストールを制御することができる。
【0056】
パイプラインコントローラー52は、図12に示すように、ストールする条件が一致したときに信号が入力されるOR回路72を含む。OR回路72の入力側を1本空けておき、その1本にストールコントローラー58のenable信号を入力する。OR回路72から信号が出力されることによって、パイプラインコントローラー52は、パイプライン処理をストールする。なお、OR回路72の他の入力は、マイクロコンピュータ50の初期製作段階で発見されたストールの条件、例えば所定の命令が入力される。
【0057】
プログラムカウンタ70は、パイプラインコントローラー58がパイプライン処理をおこなっているコードのアドレスを第2比較回路66に送る手段である。
【0058】
マイクロコンピュータ50の動作は、図13のフローチャートに示すように、第1レジスタ54に記憶されたアドレスとプログラムカウンタ70のアドレスとを比較する(ステップ1)。アドレスが一致した場合、パイプラインコントローラー52はストールを開始し、カウントレジスタ60および加算回路62は、ストール数をカウントする(ステップ2)。カウントは、カウントレジスタ60のストール数に1の加算を繰り返すことによっておこなう。第2レジスタ56に記憶されたストール数とカウンタレジスタ60に記憶されたストール数とを比較する(ステップ3)。ストール数が一致した場合、ストール数のカウントを中止し、ストールも中止する(ステップ4)。カウントレジスタ60に記憶されたストール数をリセットする(ステップ5)。
【0059】
第1レジスタ54に記憶するデータとしてストールを開始するアドレスとしたが、命令でも良い。この場合、プログラムカウンタ70から第2比較回路66に送られるのは、アドレスではなく、処理中の命令である。
【0060】
第3実施形態によると、パイプラインハザードを最も効果的に回避するパイプラインストールを容易に発生可能である。特定条件は、プログラム可能であり、任意の場所にストールを発生可能である。さらに、レジスタの設定のみでパイプラインストールを発生可能であることから、ハードウェア修正、コード修正、コンパイラの修正と言ったものを必要とせず、開発期間の延長を抑えることができる。ストールを発生させるアドレスを変化させることにより、ハードウェアのデバッグにも有効である。また、実現させる回路も単純で容易に実現可能である。
【0061】
上記のように、第1から第3実施形態のいずれにおいても、ROMに記憶されたコードを処理するとき、柔軟にデバッグしたりストールしたりすることができ、ROMの再設計などはおこなわなくても良い。
【0062】
以上、本発明の実施形態について説明したが、本発明は上記の実施形態に減退されることはない。例えば、第1実施形態や第2実施形態では、メモリ24,38にデバッグ用コードを記憶したが、ROM12,32に記憶されなかった新たなコードを記憶しても良い。この新たなコードによって、マイクロコンピュータがおこなう処理を増やすことができる。
【0063】
第1および第2実施形態において、メモリ24,38を複数にすることも可能である。
【0064】
その他、本発明は、主旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変更を加えた態様で実施できるものである。
【0065】
【発明の効果】
本発明によると、ROMに記憶されたコードのデバッグを簡単におこなうことができ、マイクロコンピュータの製造コストの増加や開発期間の延長を抑えることができる。
【0066】
また、パイプラインハザードの起こるアドレスや命令を指定するだけでパイプラインハザードを回避することができる。したがって、最初からパイプラインハザードが発生しにくいコードを記述する必要はなく、コードの開発者の負担が減る。
【図面の簡単な説明】
【図1】本発明のマイクロコンピュータがおこなう処理の概念を示す図である。
【図2】本発明のマイクロコンピュータの構成を示す図である。
【図3】 ROMおよびメモリのコードと、マイクロコンピュータがおこなうコードの挿入を示す図である。
【図4】 ROMおよびメモリの他のコードと、マイクロコンピュータがおこなうコードの上書きを示す図である。
【図5】 ROMおよびメモリの他のコードと、マイクロコンピュータがおこなうコードの挿入と上書きを示す図である。
【図6】本発明のマイクロコンピュータがおこなう処理の概念を示す図である。
【図7】本発明のマイクロコンピュータの構成を示す図である。
【図8】本発明のマイクロコンピュータの回路を示す図である。
【図9】本発明のROMおよび予備記憶装置のメモリマップを示す図である。
【図10】本発明のマイクロコンピュータの構成を示す図である。
【図11】本発明のマイクロコンピュータの回路を示す図である。
【図12】本発明のマイクロコンピュータに含まれるパイプラインコントローラーの回路の一部の図である。
【図13】本発明のマイクロコンピュータがおこなう処理のフローチャートのである。
【図14】パイプライン処理の一例を示す図であり、(a)はパイプラインハザードの危険性があるパイプライン処理であり、(b)は一部の命令をストールさせたパイプライン処理を示す図である。
【符号の説明】
10,30,50:マイクロコンピュータ
12:ROM
14,34:マイクロプロセッサー
16,54:第1レジスタ
18,56:第2レジスタ
20:コンパレーター
22:マルチプレクサー
24,38:メモリ
26:命令を上書きする回路ブロック
28:データ・バス
36:アドレスコントローラー
40:選択手段
42:レジスタ
44:減算機
46:デコーダー
52:パイプラインコントローラー
58:ストールコントローラー
60:カウントレジスタ
62:加算回路
64:第1比較回路
66:第2比較回路
68:AND回路
70:プログラムカウンタ
72:OR回路

Claims (4)

  1. 処理中の命令を示すプログラムカウンタを有するパイプラインコントローラと、
    パイプラインハザードを起こす命令を記憶する第1レジスタと、
    ストールのサイクル数を記憶する第2レジスタと、
    前記パイプラインコントローラのパイプライン処理の同期をとるクロックに応答して前記パイプラインコントローラのストール数をカウントするカウント手段を有するストールコントローラとを備えるマイクロコンピュータの制御方法であって、
    (イ)前記第1レジスタに記憶された前記パイプラインハザードを起こす命令と前記プログラムカウンタからの前記処理中の命令とが一致したか否かを調べるステップと、
    (ロ)前記ステップ(イ)における前記一致に応答して、前記パイプラインコントローラにパイプライン処理のストールを開始させると共に、前記カウント手段によるカウントを開始させるステップと、
    (ハ)前記ステップ(ロ)に続いて、前記第2レジスタからの前記ストールのサイクル数と前記カウント手段からの前記パイプラインコントローラのストール数とが一致したか否かを調べるステップと、
    (ニ)前記ステップ(ハ)における前記一致に応答して、前記カウント手段のカウントを終了すると共に、前記パイプラインコントローラによるストールを終了させるステップと、
    (ホ)前記ステップ(ニ)に続いて、前記カウント手段をリセットするステップとを含む前記マイクロコンピュータの制御方法。
  2. 前記カウント手段は、カウントレジスタ並びに該カウントレジスタの出力及び入力の間に接続された加算回路を有し、該加算回路が前記クロックに応答して前記カウントレジスタのカウントに1を加算して前記カウントレジスタの入力に戻す、請求項1に記載のマイクロコンピュータの制御方法。
  3. 処理中の命令を示すプログラムカウンタを有するパイプラインコントローラと、
    第1レジスタと、
    第2レジスタと、
    前記パイプラインコントローラのパイプライン処理の同期をとるクロックに応答して前記パイプラインコントローラのストール数をカウントするカウント手段を有するストールコントローラとを備えるマイクロコンピュータの制御方法であって、
    (a)前記第1レジスタにパイプラインハザードを起こす命令を記憶させると共に、前記第2レジスタにストールのサイクル数を記憶させるステップと、
    (b)前記ステップ(a)に続いて、前記第1レジスタに記憶された前記パイプラインハザードを起こす命令と前記プログラムカウンタからの前記処理中の命令とが一致したか否かを調べるステップと、
    (c)前記ステップ(b)における前記一致に応答して、前記パイプラインコントローラにパイプライン処理のストールを開始させると共に、前記カウント手段によるカウントを開始させるステップと、
    (d)前記ステップ(c)に続いて、前記第2レジスタからの前記ストールのサイクル数と前記カウント手段からの前記パイプラインコントローラのストール数とが一致したか否かを調べるステップと、
    (e)前記ステップ(d)における前記一致に応答して、前記カウント手段のカウントを終了すると共に、前記パイプラインコントローラによるストールを終了させるステップと、
    (f)前記ステップ(e)に続いて、前記カウント手段をリセットするステップとを含む前記マイクロコンピュータの制御方法。
  4. 前記カウント手段は、カウントレジスタ並びに該カウントレジスタの出力及び入力の間に接続された加算回路を有し、該加算回路が前記クロックに応答して前記カウントレジスタのカウントに1を加算して前記カウントレジスタの入力に戻す、請求項3に記載のマイクロコンピュータの制御方法。
JP2002109908A 2002-04-12 2002-04-12 マイクロコンピュータの制御方法 Expired - Fee Related JP3828040B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002109908A JP3828040B2 (ja) 2002-04-12 2002-04-12 マイクロコンピュータの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002109908A JP3828040B2 (ja) 2002-04-12 2002-04-12 マイクロコンピュータの制御方法

Publications (2)

Publication Number Publication Date
JP2003316593A JP2003316593A (ja) 2003-11-07
JP3828040B2 true JP3828040B2 (ja) 2006-09-27

Family

ID=29533400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002109908A Expired - Fee Related JP3828040B2 (ja) 2002-04-12 2002-04-12 マイクロコンピュータの制御方法

Country Status (1)

Country Link
JP (1) JP3828040B2 (ja)

Also Published As

Publication number Publication date
JP2003316593A (ja) 2003-11-07

Similar Documents

Publication Publication Date Title
US5228131A (en) Data processor with selectively enabled and disabled branch prediction operation
US20030014736A1 (en) Debugger breakpoint management in a multicore DSP device having shared program memory
JPH10228421A (ja) メモリアクセス制御回路
US5148529A (en) Pipelined multi-stage data processor including an operand bypass mechanism
US5515521A (en) Circuit and method for reducing delays associated with contention interference between code fetches and operand accesses of a microprocessor
JP4226085B2 (ja) マイクロプロセッサ及びマルチプロセッサシステム
JP3563768B2 (ja) Romプログラム変更装置
JP2875842B2 (ja) プログラマブルコントローラ
EP1770507A2 (en) Pipeline processing based on RISC architecture
JP3790626B2 (ja) デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置
US6385714B1 (en) Data processing apparatus
JP3828040B2 (ja) マイクロコンピュータの制御方法
US6981109B2 (en) Digital signal processor system having programmable random access memory that executes processing during downloading of a program
JP2556268B2 (ja) プログラムダウンロード方式
US20010052114A1 (en) Data processing apparatus
JP2002157115A (ja) データ処理装置
US5557772A (en) Data processing apparatus including a register storing a parameter and a microinstruction execution arrangement including a correction arrangement for causing a first value of the parameter to be change to a second, correct value
US20040103267A1 (en) Data processor having cache memory
JPWO2004025468A1 (ja) 半導体装置
JP3097602B2 (ja) データ処理装置
JP2000029508A (ja) プログラマブルコントローラ
JP3127737B2 (ja) ディジタル信号処理装置
JP3139310B2 (ja) ディジタル信号処理装置
JP3168845B2 (ja) ディジタル信号処理装置
JP2002268876A (ja) パイプライン処理方法、及び情報処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060314

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060530

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060705

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees