(57)【要約】  【課題】メモリマップドＩ／Ｏ方式を利用するマイクロプロセッサであっても、デバッグ時に、想定していないＩ／Ｏポートの状態の遷移を生じることなく、そのデバッグ効率を向上させることができるマイクロプロセッサを提供する。  【解決手段】本発明のマイクロプロセッサは、Ｉ／Ｏポートがメモリのアドレス空間内に配置されているメモリマップドＩ／Ｏ方式を利用するもので、あらかじめ設定されている特定の命令が入力されると、その検出信号を活性化する手段と、マイクロプロセッサから出力されるアドレス信号が、Ｉ／Ｏポートが配置されているメモリのアドレス空間内に含まれる場合に、その判定信号を活性化する手段と、検出信号および判定信号がともに活性化された場合に、マイクロプロセッサから出力されるリード信号およびライト信号を非活性化する手段とを備える。【選択図】  図１
2005292899.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏポートがメモリのアドレス空間内に配置されているメモリマップドＩ／Ｏ方式を利用するマイクロプロセッサであって、
あらかじめ設定されている特定の命令が入力されると、その検出信号を活性化する手段と、当該マイクロプロセッサから出力されるアドレス信号が、前記Ｉ／Ｏポートが配置されている前記メモリのアドレス空間内に含まれる場合に、その判定信号を活性化する手段と、前記検出信号および前記判定信号がともに活性化された場合に、当該マイクロプロセッサから出力されるリード信号およびライト信号を非活性化する手段とを備えることを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｉ／Ｏポートがメモリのアドレス空間内に配置されているメモリマップドＩ／Ｏ方式を利用するマイクロプロセッサに関するものである。
【背景技術】
【０００２】
図４は、従来のマイクロプロセッサの内部構成を表すブロック図である。同図に示すマイクロプロセッサ４０は、命令デコーダ４２と、命令実行処理部１４と、プログラムカウンタ１６とを備えている。
【０００３】
マイクロプロセッサ４０において、命令実行処理部１４は、プログラムカウンタ１６に従って動作し、メモリから命令を読み出してフェッチする（取り込む）。フェッチされた命令は、命令デコーダ４２によってデコードされ、命令に対応するデコード信号が発生される。そして、命令実行処理部１４は、命令デコーダ４２から出力されるデコード信号に従って、命令に対応する処理を実行する。
【０００４】
例えば、データをメモリから読み出す場合、命令実行処理部１４から、アドレスバスを介して所定のアドレスが出力されるとともに、リード信号が出力される。これに応じて、メモリの所定のアドレスからデータが読み出される。
【０００５】
ここで、データが命令である場合、この命令は命令デコーダ４２によってデコードされ、命令に対応するデコード信号が発生される。そして、命令実行処理部１４により、命令デコーダ４２から出力されるデコード信号に従って、命令に対応する処理が実行される。また、データが命令ではない場合、このデータは命令実行処理部１４に入力され、処理される。
【０００６】
一方、データをメモリに書き込む場合、命令実行処理部１４から、アドレスバスを介して所定のアドレスが出力され、データバスを介してデータが出力されるとともに、ライト信号が出力される。これに応じて、メモリの所定のアドレスにデータが書き込まれる。
【０００７】
ところで、特許文献１に開示されているように、ＣＰＵ（セントラル・プロセッシング・ユニット）やＭＰＵ（マイクロ・プロセッシング・ユニット）などのマイクロプロセッサの内部には、プログラムの動作検証およびハードウェアの動作確認のために、デバッグ作業支援を目的としたデバッグ・サポート・ユニット（以下、ＤＳＵという）が搭載されているのが一般的である。
【０００８】
特許文献１のプロセッサ内蔵半導体集積回路装置においてデバッグを行う場合、その図１および図２に示されているように、外部のデバッガから、ＤＳＵ内部のステータスレジスタに、あらかじめ特定のアドレスが設定される。そして、デバッガからＤＳＵに対してデバッグ開始指示が与えられると、ＤＳＵが起動され、ＣＰＵはプログラムカウンタに従って順次命令を実行する。
【０００９】
そして、プログラムカウンタの値がステータスレジスタに設定されているアドレスに一致すると、ＣＰＵイベント通知情報がＤＳＵからデバッガに通知され、ＣＰＵはデバッガからの命令を実行するデバッグモードに移行する。上記の手順でデバッグモードに移行したＣＰＵに対してデバッガから命令を与え、所定のアドレスからデータを読み出す場合、例えば下記のコマンドが使用される。
【００１０】
Debugger> mem start_addr end_addr
【００１１】
上記のコマンドでは、メモリマップドＩ／Ｏ方式を利用するマイクロプロセッサの場合、通常、「start_addr」から「end_addr」の範囲に配置されているＩ／Ｏポートへのアクセス（リード／ライト）もメモリと同様に行われる。しかし、アクセスするアドレスの前後関係に意味を持つＩ／Ｏポートや、特定のアドレスへの読出し／書込み回数が意味を持つＩ／Ｏポートなどでは、このコマンドにより、デバッグをしている人が想定していない動作が行われてＩ／Ｏポートの状態が遷移する場合があり、デバッグ時に不具合が発生する。
【００１２】
また、上記の通り、メモリマップドＩ／Ｏ方式を利用するマイクロプロセッサの場合、メモリと同様にＩ／Ｏポートをアクセスすることが可能なので、デバッグ操作の途中で誤ってＩ／Ｏポートの読出しや書込みを行うと、想定していない動作が行われてＩ／Ｏポートの状態が遷移する。この場合、再び最初から手順をやり直す必要があり、Ｉ／Ｏポートの状態が遷移する前の時点に到達するまでに費やしたデバッグ操作の時間が完全に無駄になるという問題があった。
【００１３】
【特許文献１】特開２０００−３３２２０５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明の目的は、前記従来技術に基づく問題点を解消し、メモリマップドＩ／Ｏ方式を利用するマイクロプロセッサであっても、デバッグ時に、想定していないＩ／Ｏポートの状態の遷移を生じることなく、そのデバッグ効率を向上させることができるマイクロプロセッサを提供することにある。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明は、Ｉ／Ｏポートがメモリのアドレス空間内に配置されているメモリマップドＩ／Ｏ方式を利用するマイクロプロセッサであって、
あらかじめ設定されている特定の命令が入力されると、その検出信号を活性化する手段と、当該マイクロプロセッサから出力されるアドレス信号が、前記Ｉ／Ｏポートが配置されている前記メモリのアドレス空間内に含まれる場合に、その判定信号を活性化する手段と、前記検出信号および前記判定信号がともに活性化された場合に、当該マイクロプロセッサから出力されるリード信号およびライト信号を非活性化する手段とを備えることを特徴とするマイクロプロセッサを提供するものである。
【発明の効果】
【００１６】
本発明によれば、デバッグ時に、あらかじめ設定されている特定命令を使用することによって、デバッグ操作の途中で誤ってＩ／Ｏポートにアクセスすることを防止することができる。このため、メモリマップドＩ／Ｏ方式を利用するマイクロプロセッサであっても、デバッグ時に、デバッグをしている人が想定していないＩ／Ｏポートの状態の遷移を生じることはなく、そのデバッグ効率を向上させることができる。
【発明を実施するための最良の形態】
【００１７】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のマイクロプロセッサを詳細に説明する。
【００１８】
図１は、本発明のマイクロプロセッサの内部構成を表す一実施形態のブロック図である。同図に示すマイクロプロセッサ１０は、Ｉ／Ｏポートがメモリのアドレス空間内に配置されているメモリマップドＩ／Ｏ方式を利用するもので、命令デコーダ１２と、命令実行処理部１４と、プログラムカウンタ１６と、特定範囲識別部１８と、リード／ライト信号生成部２０とを備えている。
【００１９】
ここで、命令実行処理部１４、およびプログラムカウンタ１６は、図４に示す従来のマイクロプロセッサ４０が備えるものと同じものであるから、同一の構成要素には同一の符号を付し、その詳細な説明は省略する。すなわち、マイクロプロセッサ１０は、マイクロプロセッサ４０において、命令デコーダ４２の代わりに命令デコーダ１２を備え、さらに、特定範囲識別部１８と、リード／ライト信号生成部２０とを備えている。
【００２０】
マイクロプロセッサ１０において、命令デコーダ１２は、データバスを介して入力される命令をデコードし、そのデコード信号を出力するとともに、あらかじめ設定されている特定の命令を検出し、その検出信号を出力する。
【００２１】
検出信号は、本実施形態の場合、命令デコーダ１２によって、データバスを介して入力された命令が特定命令であることが検出された場合に活性化され、論理「１」が出力される。
【００２２】
なお、上記の特定命令は新たに追加される命令であり、マイクロプロセッサ１０が本来備えている命令（特定命令の元になる命令）と同等の処理（リード／ライト）を行う命令であるが、この特定命令によってＩ／Ｏポートをアクセスすることはできない。特定命令は、例えば代表的なマイクロプロセッサの１つである「Ｚｉｌｏｇ  Ｚ８０」における命令「ＬＤ  Ａ，（ＨＬ）」に対して、「ＬＤｘ  Ａ，（ＨＬ）」などのサブセット命令であり、好ましくは、その命令語長が同一のものとする。
【００２３】
ここで、「ＬＤ  Ａ，（ＨＬ）」は、「ＨＬ」レジスタに保持されているデータによって表されるアドレスからデータをリードし、「Ａ」レジスタに格納する命令である。「ＬＤｘ  Ａ，（ＨＬ）」は、「ＬＤ  Ａ，（ＨＬ）」と同等の処理を行う命令であるが、「ＨＬ」レジスタに保持されているデータによって表されるアドレスがＩ／Ｏポートである場合、このＩ／Ｏポートからのデータのリードは行われない。
【００２４】
続いて、特定範囲識別部１８は、命令実行処理部１４（すなわち、マイクロプロセッサ１０）から出力されるアドレスが、Ｉ／Ｏポートが配置されているメモリのアドレス空間内に含まれるかどうかを識別し、その判定信号を出力するもので、図２に一例を示すように、上限アドレスレジスタ２２と、下限アドレスレジスタ２４と、比較器２６とを備えている。
【００２５】
上限アドレスレジスタ２２および下限アドレスレジスタ２４は、Ｉ／Ｏポートが配置されているアドレス空間の上限および下限を格納する。上限アドレスレジスタ２２および下限アドレスレジスタ２４には、マイクロプロセッサ１０（すなわち、命令実行処理部１４が実行する命令により）、もしくはデバッガから、データバスを介して、Ｉ／Ｏポートが配置されているメモリのアドレス空間の上限および下限が設定される。
【００２６】
比較器２６は、命令実行処理部１４から出力されるアドレスと、上限アドレスレジスタ２２および下限アドレスレジスタ２４に設定されているＩ／Ｏポートのアドレス空間の上限および下限とを比較して、命令実行処理部１４から出力されるアドレスが、上限アドレスレジスタ２２および下限アドレスレジスタ２４に設定されているＩ／Ｏポートのアドレス空間の上限および下限で指定される特定範囲内に含まれているかどうかを識別し、その判定信号を出力する。
【００２７】
判定信号は、本実施形態の場合、命令実行処理部１４から出力されるアドレスが、Ｉ／Ｏポートのアドレス空間内に含まれている場合に活性化され、論理「１」となる。
【００２８】
続いて、リード／ライト信号生成部２０は、検出信号および判定信号がともに活性化された場合、すなわち特定命令によってＩ／Ｏポートがアクセスされた場合に、命令実行処理部１４から出力されるリード信号およびライト信号を非活性化し、リード信号’およびライト信号’として出力するもので、図３に一例を示すように、ＡＮＤ回路２８および２つのＯＲ回路３０，３２により構成される。
【００２９】
ＡＮＤ回路２８には、命令デコーダ１２から出力される検出信号、および特定範囲識別部１４から出力される判定信号が入力されている。ＯＲ回路３０，３２の一方の入力端子には、ＡＮＤ回路２８の出力信号が入力され、その他方の入力端子には、それぞれ命令実行処理部１４から出力されるリード信号およびライト信号が入力されている。また、ＯＲ回路３０，３２からは、それぞれリード信号’およびライト信号’が出力されている。
【００３０】
リード／ライト信号生成部２０は、検出信号および判定信号としてともに論理「１」が入力されると、ＡＮＤ回路２８から「１」が出力される。この場合、ＯＲ回路３０，３２の出力信号、すなわちリード信号’およびライト信号’はともに論理「１」となる。本実施形態の場合、リード信号’およびライト信号’はともにローアクティブであり、その出力がともに論理「１」になると、リードもライトも行われない。
【００３１】
なお、検出信号および判定信号の少なくとも一方が論理「０」の場合、ＡＮＤ回路２８の出力信号は論理「０」となり、ＯＲ回路３０，３２からは、リード信号’およびライト信号’として、命令実行処理部１４から供給されるリード信号およびライト信号がそのまま出力される。リード信号’およびライト信号’は、リード信号およびライト信号の代わりにマイクロプロセッサ１０から出力される。
【００３２】
以下、マイクロプロセッサ１０の作用を説明する。
【００３３】
マイクロプロセッサ１０の通常使用時には、前述の特定命令は使用されない。すなわち、マイクロプロセッサ１０の通常使用時の作用は、図４に示す従来のマイクロプロセッサ４０と同じである。すなわち、マイクロプロセッサ１０の通常使用時には、特定命令の元となっている、マイクロプロセッサ１０が本来備えている命令が使用され、これにより、Ｉ／Ｏポートにアクセス（リード／ライト）することができる。
【００３４】
次に、マイクロプロセッサ１０のデバッグ時、例えばメモリ内容のダンプ等を行う場合には特定命令が使用される。この場合、命令デコーダ１２から特定命令に対応するデコード信号が出力され、命令実行処理部１４は、このデコード信号に従って、特定命令に対応する処理を実行する。この処理は、特定命令の元となっている、本来マイクロプロセッサ１０が備えている命令と同様である。また、特定命令が使用されると、命令デコーダ１２から論理「１」の検出信号が出力される。
【００３５】
命令実行処理部１４において特定命令に対応する処理が実行されると、命令実行処理部１４からアドレス、データ（ライトの場合のみ）、およびリード信号もしくはライト信号が出力される。
【００３６】
続いて、特定範囲識別部１８において、命令実行処理部１４から出力されるアドレスが、上限アドレスレジスタ２２および下限アドレスレジスタ２４に設定されているＩ／Ｏポートのアドレス空間の上限および下限で指定される特定範囲内に含まれる場合、すなわち命令実行処理部１４から出力されるアドレスが、Ｉ／Ｏポートが配置されているアドレス空間内のアドレスである場合、特定範囲識別部１８から論理「１」の判定信号が出力される。
【００３７】
上記のように、マイクロプロセッサ１０のデバッグ時、例えばメモリ内容のダンプ等を行う場合には、命令デコーダ１２から出力される検出信号が論理「１」となり、かつ特定範囲識別部１８から出力される判定信号も論理「１」になると、リード／ライト信号生成部２０から、リード信号’およびライト信号’として、ともに非活性化された論理「１」が出力される。すなわち、処理実行処理部１４から出力されるアドレスに対してリードもライトも行われない。
【００３８】
従って、マイクロプロセッサ１０では、デバッグ時に、特定命令を使用することによって、デバッグの操作の途中で誤ってＩ／Ｏポートにアクセスすることを防止することができる。このため、メモリマップドＩ／Ｏ方式を利用するマイクロプロセッサであっても、デバッグ時に、デバッグをしている人が想定していないＩ／Ｏポートの状態の遷移を生じることはなく、そのデバッグ効率を向上させることができる。
【００３９】
また、マイクロプロセッサ１０のデバッグ時であっても、Ｉ／Ｏポートを意図してアクセスする場合には、特定命令ではなく、特定命令の元となっている、マイクロプロセッサ１０が本来備えている命令を使用することによって、従来通り、Ｉ／Ｏポートをアクセス（リード／ライト）することができる。
【００４０】
なお、命令デコーダ１２において特定命令を検出する手段、特定範囲識別部１８、およびリード／ライト信号生成部２０の具体的な回路構成は何ら限定されず、同様の機能を果たす他の回路構成によっても実現することができる。また、特定命令を検出する手段は必ずしも命令デコーダ１２内部に設ける必要はなく、命令デコーダ１２とは別に設けてもよい。
【００４１】
また、上記実施形態では、説明を簡単にするために、本発明に関係のある構成要素だけしか示していないが、本発明のマイクロプロセッサは、図示の構成要素以外の各種の構成要素を含んでいても良い。また、上記実施形態では、検出信号、判定信号、リード信号、ライト信号なども具体的な極性を挙げて説明したが、これらの信号の極性は何ら限定されず、必要に応じて適宜変更してもよい。
【００４２】
本発明は、基本的に以上のようなものである。
以上、本発明のマイクロプロセッサについて詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【図面の簡単な説明】
【００４３】
【図１】本発明のマイクロプロセッサの内部構成を表す一実施形態のブロック図である。
【図２】図１に示す特定範囲識別部の内部構成を表すブロック図である。
【図３】図１に示すリード／ライト信号生成部の内部構成を表す回路図である。
【図４】従来のマイクロプロセッサの内部構成を表すブロック図である。
【符号の説明】
【００４４】
１０，４０  マイクロプロセッサ
１２，４２  命令デコーダ
１４  命令実行処理部
１６  プログラムカウンタ
１８  特定範囲識別部
２０  リード／ライト信号生成部
２２  上限アドレスレジスタ
２４  下限アドレスレジスタ
２６  比較器
２８  ＡＮＤ回路
３０，３２  ＯＲ回路
【図１】
2005292899.tif 000003
【図２】
2005292899.tif 000004
【図３】
2005292899.tif 000005
【図４】
2005292899.tif 000006