(57)【要約】【課題】  プロセッサが非常に短い実行サイクル数でＩ／Ｏポートに対する所定の処理を実現できる。【解決手段】  指定した汎用レジスタ或いはフラグレジスタにＩ／Ｏポートをマップすることにより、Ｉ／Ｏポートからの読み出し又は書き込みにかかるサイクル数を短縮する。更に、割り込み時と非割り込み時とでマップを変化させることにより、通常処理時或いは割り込み処理時の両方でレジスタを有効に活用できるようにする。【選択図】      図５
2007058330.tif 000002
【特許請求の範囲】
【請求項１】
制御回路と、数値演算ユニットと、所定のレジスタと、Ｉ／Ｏポートとを含むマイクロプロセッサであって、
前記Ｉ／Ｏポートが置き換えられる前記所定のレジスタを指定する指定手段と、
前記Ｉ／Ｏポートを前記指定手段で指定された前記所定のレジスタに置き換えるか否かを許可するか許可手段と、
前記許可手段で許可された場合、前記Ｉ／Ｏポートを前記所定のレジスタに置き換える置換手段とを有し、
前記指定手段の指定及び前記許可手段の許可は、前記制御回路を制御するソフトウェアにより変更可能であることを特徴とするマイクロプロセッサ。
【請求項２】
前記置換手段は、割り込み処理時と通常処理時とで異なる置き換えを行うことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
前記所定のレジスタは、少なくとも汎用レジスタの１つであることを特徴とする請求項２記載のマイクロプロセッサ。
【請求項４】
前記汎用レジスタにおける１つのレジスタを特定する特定手段を有し、
前記置換手段は、前記許可手段で許可された場合、前記Ｉ／Ｏポートを前記特定されたレジスタに置き換えることを特徴とする請求項２記載のマイクロプロセッサ。
【請求項５】
前記所定のレジスタは、少なくともフラグレジスタの１つであることを特徴とする請求項２記載のマイクロプロセッサ。
【請求項６】
前記フラグレジスタにおける１つのフラグを特定する特定手段を有し、
前記置換手段は、前記許可手段で許可された場合、前記Ｉ／Ｏポートを前記特定されたフラグに置き換えることを特徴とする請求項５記載のマイクロプロセッサ。
【請求項７】
制御回路と、数値演算ユニットと、所定のレジスタと、Ｉ／Ｏポートとを含むマイクロプロセッサにおけるＩ／Ｏポート置換方法であって、
前記Ｉ／Ｏポートが置き換えられる前記所定のレジスタを指定する指定工程と、
前記Ｉ／Ｏポートを前記指定工程で指定された前記所定のレジスタに置き換えるか否かを許可するか許可工程と、
前記許可工程で許可された場合、前記Ｉ／Ｏポートを前記所定のレジスタに置き換える置換工程とを有し、
前記指定工程の指定及び前記許可工程の許可は、前記制御回路を制御するソフトウェアにより変更可能であることを特徴とするＩ／Ｏポート置換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御回路と、数値演算ユニットと、所定のレジスタと、Ｉ／Ｏポートとを含むマイクロプロセッサに関する。
【背景技術】
【０００２】
一般に、プロセッサはＩ／Ｏポートを備え、Ｉ／Ｏポートにより外部との間でデータを入出力している。そして、Ｉ／Ｏポートによってデータを入出力する方式として、Ｉ／Ｏ専用命令を用いる方式と、Ｉ／Ｏポートをメモリ空間にマップして（メモリマップドＩ／Ｏ）メモリアクセス命令を用いる方式とがある。
【０００３】
ここで、Ｉ／Ｏ専用命令を用いる方式では、Ｉ／Ｏポートへの入出力を行う際にＩ／Ｏポートと汎用レジスタとの間でデータの転送を行う、Ｉ／Ｏ転送命令を用いるか、或いはＩ／Ｏポートの値を直接制御する、Ｉ／Ｏ直接制御命令を使用している。
【０００４】
例えば、ATMEL社のAT90S4414マイクロプロセッサでは、Ｉ／Ｏ転送命令として、Ｉ／Ｏポートから汎用レジスタへの転送を行うＩＮ命令と、汎用レジスタからＩ／Ｏポートへの転送を行うＯＵＴ命令が用意されている。
【０００５】
また、Ｉ／Ｏ直接制御命令として、Ｉ／Ｏポートのビット値に応じて次命令をスキップするSBIC/SBIS命令、Ｉ／Ｏポートのビット値を直接「１」又は「０」にするSBI/CBI命令が用意されている。
【０００６】
一方、メモリアクセス命令を用いる方式では、メモリ上の一部の領域をＩ／Ｏポートとして使用する。これを「メモリマップドＩ／Ｏ」と呼ぶ。このメモリマップドＩ／Ｏでは、Ｉ／Ｏをマップしたメモリアドレスに対してメモリアクセスを行うと、Ｉ／Ｏポートへの入出力が行われる。
【０００７】
例えば、Zilog社のＺ８０マイクロプロセッサでは、AND A,（HL）命令によりＡレジスタとＨＬレジスタが示すメモリアドレスの内容とのＡＮＤ演算が行われる。ここで、メモリアドレスの0xff00番地がＩ／Ｏポートにマップされており、ＨＬレジスタが0xff00の場合にAND A,（HL）を実行すると、ＡレジスタとＩ／ＯポートをＡＮＤした結果がＡレジスタに代入される。
【０００８】
この例に示すように、メモリマップドＩ／Ｏでは、メモリからの読み出しを行う命令をＩ／Ｏポートからの読み出しを行う命令として使用することができる。また同様に、メモリへの書き込みを行う命令をＩ／Ｏポートへの書き込みを行う命令として使用することができる。
【特許文献１】特開平11-045223号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述したＩ／Ｏ専用命令を用いる方式では、プロセッサがＩ／Ｏポートによってデータを処理する場合、汎用レジスタのデータやフラグを処理するよりも、実行サイクル数が多くなる。例えば、Ｉ／Ｏ専用命令を持つATMEL社のAT90S4414マイクロプロセッサでは、汎用レジスタ間で加算を行うＡＤＤ命令が用意されているが、Ｉ／Ｏポートについては用意されていない。このため、Ｉ／Ｏ転送命令を用いて、一旦汎用レジスタへ転送を行う必要があり、汎用レジスタの演算命令に比べてＩ／Ｏ転送命令を実行する分、実行サイクル数が多くなる。
【００１０】
また、マイクロプロセッサでは、データに応じて処理を変更しようとする場合、条件分岐命令を用いるが、Ｉ／Ｏポートに対する条件分岐命令は汎用レジスタやフラグに対する条件分岐命令が限られている。このため、一旦Ｉ／Ｏポートから汎用レジスタへと転送を行う必要があり、実行サイクル数が多くなる。
【００１１】
一方、メモリマップドＩ／Ｏ方式でも、メモリ或いはキャッシュメモリへのアクセスは汎用レジスタへのアクセスよりも時間が掛かる。そのため、メモリアクセス命令を用いてＩ／Ｏポートへの入出力を行うと、汎用レジスタ間の演算命令よりも、実行サイクル数が増加してしまう。
【００１２】
このように、従来、プロセッサが処理を行う際に、入力データ又は出力データがＩ／Ｏポートにあると、入力データ又は出力データが汎用レジスタにあるよりも実行サイクル数が増える。特に、非常に短いサイクル数によりＩ／Ｏポートの入出力を含む処理が必要な場合、実行サイクル数を十分小さくすることができなかった。
【００１３】
また、特に非常に短いサイクル数によりＩ／Ｏポートへの入出力を含む割り込み処理が必要な場合にも、上述の場合と同様に、実行サイクル数を小さくすることができなかった。
【００１４】
本発明は、上述の課題を解決するためになされたもので、プロセッサが非常に短い実行サイクル数でＩ／Ｏポートに対する所定の処理を実現できることを目的とする。
【００１５】
また、割り込み処理時にも、非常に短い実行サイクル数でＩ／Ｏポートに対する所定の処理を実現できることを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、制御回路と、数値演算ユニットと、所定のレジスタと、Ｉ／Ｏポートとを含むマイクロプロセッサであって、前記Ｉ／Ｏポートが置き換えられる前記所定のレジスタを指定する指定手段と、前記Ｉ／Ｏポートを前記指定手段で指定された前記所定のレジスタに置き換えるか否かを許可するか許可手段と、前記許可手段で許可された場合、前記Ｉ／Ｏポートを前記所定のレジスタに置き換える置換手段とを有し、前記指定手段の指定及び前記許可手段の許可は、前記制御回路を制御するソフトウェアにより変更可能であることを特徴とする。
【００１７】
また、本発明は、制御回路と、数値演算ユニットと、所定のレジスタと、Ｉ／Ｏポートとを含むマイクロプロセッサにおけるＩ／Ｏポート置換方法であって、前記Ｉ／Ｏポートが置き換えられる前記所定のレジスタを指定する指定工程と、前記Ｉ／Ｏポートを前記指定工程で指定された前記所定のレジスタに置き換えるか否かを許可するか許可工程と、前記許可工程で許可された場合、前記Ｉ／Ｏポートを前記所定のレジスタに置き換える置換工程とを有し、前記指定工程の指定及び前記許可工程の許可は、前記制御回路を制御するソフトウェアにより変更可能であることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、プロセッサが非常に短い実行サイクル数でＩ／Ｏポートに対する所定の処理を実現することができる。
【００１９】
また、割り込み処理時にも、非常に短い実行サイクル数でＩ／Ｏポートに対する所定の処理を実現することができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００２１】
本実施形態は、プロセッサにおけるＩ／Ｏポートをメモリ上にマップするのではなく、数値演算などに用いられるレジスタやフラグにマップすることにより、プロセッサの実行サイクル数を減少させるものである。
【００２２】
図１は、本実施形態におけるＩ／Ｏポートを汎用レジスタにマップ可能なプロセッサの構成の一例を示す図である。図１に示すプロセッサは、従来のプロセッサと同様な構成のレジスタ間演算ブロックと、Ｉ／Ｏポート１０２と、本実施形態におけるＩ／Ｏポートを汎用レジスタにマップ可能にするＩ／Ｏポートマップブロックと、各種制御信号とで構成されている。
【００２３】
上述のレジスタ間演算ブロックは、レジスタファイル１００と、フラグレジスタ１０１と、数値演算ユニット（ALU）１０８と、制御回路１０９とから構成されている。
【００２４】
また、Ｉ／Ｏポートマップブロックは、レジスタ１０３、ビットレジスタ１０４、比較器１０５ａ、１０５ｂ、判定器１０６ａ、１０６ｂ、選択回路（マルチプレクサ）１０７ａ、１０７ｂ、及びゲート１１０、１１１から構成されている。
【００２５】
ここで、レジスタ１０３には、制御回路１０９からのＩ／Ｏポートマップレジスタ番号書き込み信号１４１によりＩ／Ｏポートを汎用レジスタにマップするためのＩ／Ｏポートマップレジスタ番号が書き込まれる。ビットレジスタ１０４には、制御回路１０９からのＩ／Ｏポートマップ有効ビット書き込み信号１４２によりＩ／Ｏポートマップ有効ビットが書き込まれる。比較器１０５ａ、１０５ｂは、レジスタ１０３からＩ／Ｏポートマップレジスタ番号と制御回路１０９からのオペランドレジスタ番号制御信号１２１ａ、１２１ｂとを比較する。判定器１０６ａ、１０６ｂは、Ｉ／Ｏポートマップ有効ビット１０４が「１」の場合に比較器１０５ａ、１０５ｂの結果を出力する。
【００２６】
選択回路１０７ａ、１０７ｂは、Ｉ／Ｏポートマップ有効判定１２６ａ、１２６ｂに基づいてレジスタファイル１００か、Ｉ／Ｏポート１０２かを選択し、オペランドレジスタを読み出す。ゲート１１０、１１１は、Ｉ／Ｏポートマップ有効判定１２６ａ、１２６ｂと制御回路１０９からのレジスタファイル書き込み制御信号１２０とに基づいてデータをレジスタファイル１００か、Ｉ／Ｏポート１０２のどちらに書き込むかを選択する。
【００２７】
尚、ALU機能選択制御信号１２３、及びフラグ入力信号１２７の制御信号については、更に後述する。
【００２８】
ここで、説明を簡単にするために、レジスタファイル１００には４つのレジスタＲ０〜Ｒ３が存在し、フラグレジスタ１０１には演算結果がゼロか否かを示すＺビットと、演算時にキャリーが発生したか否かを示すＣビットが存在するものとする。
【００２９】
まず、Ｉ／Ｏポートが汎用レジスタにマップされていない場合のプロセッサの動作を、命令にXOR R1, R3を指定した場合を例として説明する。この例では、Ｉ／Ｏポートが汎用レジスタにマップされていないことを示すＩ／Ｏポートマップ有効ビット１０４に「０」が格納されている。また、命令はXOR R1, R3であるので、制御回路１０９はレジスタファイル１００のＲ１とＲ３を読み出すために、オペランドレジスタ番号制御信号１２１ａ、１２１ｂにそれぞれ「１」と「３」を出力する。また、XOR演算を行うためにALU機能選択制御信号１２３にXOR機能を示す値を出力する。更に、演算結果をレジスタファイル１００に書き込むためにレジスタファイル書き込み制御信号１２０に「１」を出力する。
【００３０】
このとき、レジスタファイル１００からオペランド１としてＲ１が読み出され、１２２ａを介してＩ／Ｏポートマップ読み出し選択１０７ａに入力される。また、Ｒ１と同様に、レジスタファイル１００からオペランド２としてＲ３が読み出され、１２２ｂを介してＩ／Ｏポートマップ読み出し選択１０７ｂに入力される。
【００３１】
Ｉ／Ｏポートマップ有効ビット１０４が「０」であるため、Ｉ／Ｏポートマップ判定回路を構成するＩ／Ｏポートマップ比較器１０５ａ、１０５ｂと、Ｉ／Ｏポートマップ有効判定１０６ａ、１０６ｂの出力信号１２６ａ、１２６ｂは共に「０」となる。このため、Ｉ／Ｏポートマップ読み出し選択１０７ａ、１０７ｂの出力信号１３７ａ、１３７ｂにはそれぞれ１２２ａ、１２２ｂから入力されたＲ１、Ｒ３が出力される。
【００３２】
数値演算ユニット１０８は、出力信号１３７ａ、１３７ｂとして入力されたＲ１、Ｒ３に対してALU機能選択制御信号１２３で指定されたXOR演算を行い、演算結果１２４として出力する。ここで、フラグラジスタ１０１への出力１２５には、演算結果がゼロか否かに応じてＺビットに「１」か「０」を出力する。この場合、出力１２５のＣビットには常に「０」を出力する。
【００３３】
次に、演算結果１２４は、レジスタファイル書き込み制御信号１２０が「１」の場合、選択入力信号１２６ａが「０」であればレジスタファイル１００に書き込まれ、「１」であればＩ／Ｏポート１０２に書き込まれる。レジスタファイル書き込み制御信号１２０が「０」の場合、レジスタファイル１００とＩ／Ｏポート１０２の何れにも書き込みは行われない。
【００３４】
命令XOR R1, R3の例では、レジスタファイル書き込み制御信号１２０が「１」となるが、オペランド１はＩ／Ｏポートにマップされていないため、選択入力信号１２６ａが「０」となり、演算結果はレジスタファイル１００に書き込まれる。レジスタファイル１００のうち、書き込みが行われるレジスタはオペランドレジスタ番号制御信号１２１ａで指定されるＲ１になる。また、数値演算ユニット１０８の出力１２５はフラグレジスタ１０１のＺビットとＣビットに記録される。このように、Ｉ／Ｏポートが汎用レジスタにマップされていない場合、命令XOR R1, R3が実行される。
【００３５】
次に、Ｉ／Ｏポートが汎用レジスタにマップされている場合のプロセッサ動作を、Ｉ／Ｏポート１０２が汎用レジスタＲ１にマップされており、命令にXOR R1, R3を指定し、実際にXOR PA, R3が実行される場合を例として説明する。この例では、Ｉ／Ｏポート１０２が汎用レジスタＲ１にマップされているために、Ｉ／Ｏポートマップ有効ビット１０４はマップが有効であることを示す「１」が格納されている。また、Ｉ／Ｏポートマップレジスタ番号１０３はＲ１を示す「１」が格納されていることが最初の例と異なる。
【００３６】
一方、命令は同じであるため、制御回路１０９が出力する信号は先の例と同じである。即ち、命令はXOR R1, R3であるので、制御回路１０９はレジスタファイル１００のＲ１とＲ３を読み出すために、オペランドレジスタ番号制御信号１２１ａ、１２１ｂに「１」と「３」を出力する。また、XOR演算を行うためにALU機能選択制御信号１２３にXOR機能を示す値を出力する。更に、演算結果をレジスタファイル１００に書き込むためにレジスタファイル書き込み制御信号１２０に「１」を出力する。
【００３７】
このとき、レジスタファイル１００からオペランド１としてＲ１が読み出され、１２２ａを介してＩ／Ｏポートマップ読み出し選択１０７ａに入力される。また、Ｒ１と同様に、レジスタファイル１００からオペランド２としてＲ３が読み出され、１２２ｂを介してＩ／Ｏポートマップ読み出し選択１０７ｂに入力される。
【００３８】
Ｉ／Ｏポートマップ有効ビット１０４が「１」であるため、オペランドレジスタ番号制御信号１２１ａと１２１ｂはそれぞれＩ／Ｏポートマップレジスタ番号１０３と比較したものが選択入力信号１２６ａと１２６ｂとなる。この例では、オペランドレジスタ番号制御信号１２１ａ、１２１ｂはそれぞれ「１」、「３」、Ｉ／Ｏポートマップレジスタ番号１０３は「１」であるため、選択入力信号１２６ａ、１２６ｂはそれぞれ「１」、「０」となる。このため、Ｉ／Ｏポートマップ読み出し選択１０７ａ、１０７ｂの出力信号１３７ａと１３７ｂにはＰＡとＲ３が出力される。
【００３９】
数値演算ユニット１０８は、出力信号１３７ａ、１３７ｂとして入力されたＰＡとＲ３に対してALU機能選択制御信号１２３で指定されたXOR演算を行い、演算結果１２４として出力する。演算結果１２４は、レジスタファイル書き込み制御信号１２０が「１」、選択入力信号１２６ａが「１」であるためＩ／Ｏポート１０２に書き込まれる。
【００４０】
このように、Ｉ／Ｏポート１０２が汎用レジスタＲ１にマップされている場合、命令にXOR R1, R3を指定すると、実際にはXOR PA, R3が実行される。これにより、Ｉ／Ｏポートを汎用レジスタにマップすることができる。
【００４１】
次に、Ｉ／Ｏポートマップレジスタ番号１０３とＩ／Ｏポートマップ有効ビット１０４とをソフトウェアが書き換える手順を説明する。
【００４２】
まず、ソフトウェアがＩ／Ｏポートマップレジスタ番号１０３を書き換えることを指示すると、制御回路１０９はＩ／Ｏポートマップレジスタ番号書き込み信号１４１にＩ／Ｏポートをマップする汎用レジスタ番号と書き込み許可信号を出力する。これにより、Ｉ／Ｏポートマップレジスタ番号１０３が更新される。また、１０３と同様に、ソフトウェアがＩ／Ｏポートマップ有効ビット１０４を書き換えることを指示すると、制御回路１０９はＩ／Ｏポートマップレジスタ番号書き込み信号１４１にＩ／Ｏポートをマップ有効又は無効と書き込み許可信号を出力する。これにより、Ｉ／Ｏポートマップ有効番号１０４が更新される。このように、ソフトウェアからＩ／Ｏポートマップレジスタ番号１０３と、Ｉ／Ｏポートマップ有効ビット１０４とを書き換えることができる。
【００４３】
図２は、Ｉ／Ｏポートをフラグレジスタにマップ可能なプロセッサの構成の一例を示す図である。図１と同様な機能を有するものには同一の符号を付し、その説明は省略する。図２に示すように、Ｉ／Ｏポートマップ有効ビット１３０の出力信号１２９に基づいて、選択回路１３１がフラグレジスタ１０１の出力信号１２８か、Ｉ／Ｏポート１０１のＰＡの何れかを選択して出力する。
【００４４】
ここで、説明を簡単にするために、フラグレジスタ１０１は、図３に示すように、演算結果がゼロであるか否かを示すＺビット２０１と、演算時にキャリーが発生したか否かを示すＣビット２０２が存在するものとする。そして、Ｚビット２０１はビット１の位置に、Ｃビットはビット０の位置に設定されているものとする。
【００４５】
また、Ｉ／Ｏポートマップ有効ビット１３０は、図４に示すように、ビット毎にフラグレジスタ１０１を読み出すか、Ｉ／Ｏポート１０２の値を読み出すかを１ビット毎に指定する値が格納されている。図４に示す例では、フラグレジスタ１０１を読み出す場合には「０」が、Ｉ／Ｏポート１０２の値を読み出す場合には「１」がＩ／Ｏポートマップ有効ビット１３０に格納されているものとする。
【００４６】
まず、Ｉ／Ｏポート１０２がフラグレジスタ１０１にマップされていない場合のプロセッサの動作をBNZ命令（フラグのＺビット＝０なら分岐する）でＺビットが０、Ｃビットが１、Ｉ／Ｏポート１０２が0x2の場合を例にして説明する。
【００４７】
BNZ命令を実行する際に、制御回路１０９からの制御信号としては、レジスタファイル書き込み制御信号１２０は０（レジスタファイルへの書き込みを行わない）、ALU機能選択信号１２３は入力Ｆをそのままフラグ出力１２５へ出力する。オペランドレジスタ番号制御信号１２１ａ、１２１ｂは任意の値である。また、フラグレジスタ１０１のＺビット２０１は「０」、Ｃビット２０２は「１」であるので、フラグレジスタ１０１の出力１２８は0x1となる。そして、Ｉ／Ｏポート１０２がフラグレジスタ１０１にマップされていないため、Ｉ／Ｏマップレジスタ２０３、２０４は共に「０」となり、Ｉ／Ｏマップレジスタの出力１２９は0x0になる。
【００４８】
ここで、選択回路１３１の選択信号１２９は0x0であるため、選択回路１３１の出力にはフラグレジスタの出力１２８が出力される。即ち、この例では、0x1が出力されている。従って、制御回路１０９のフラグの入力値は0x1で、Ｚビットに対応する１ビット目の値は「０」であるので、分岐は実行されることになる。
【００４９】
次に、Ｉ／Ｏポート１０２がフラグレジスタ１０１にマップされている場合のプロセッサの動作を説明する。BNZ命令（フラグのＺビット＝０なら分岐する）でＺビットが０、Ｃビットが１、Ｉ／Ｏポート１０２が0x2（フラグのＺビットにマップされる値は１）である。そして、Ｉ／Ｏマップレジスタは0x02（Ｉ／Ｏポート１０２のビット１をフラグのＺビットにマップする）の場合を例にして説明する。
【００５０】
BNZ命令を実行する際に、先のマップされていない場合の例と異なるのはＩ／Ｏポートマップ有効ビットの出力１２９が0x2となっている点で、制御回路１０９からの制御信号は、先の場合の例と同じである。
【００５１】
ここで、選択回路１３１の選択信号１２９は0x2であるため、選択回路１３１のＺビットの出力にはＩ／Ｏポート１０２のＰＡのビット１が出力され、Ｃビットの出力にはフラグレジスタ１０１のＣビットが出力される。この例では、ＰＡのビット１は「１」であり、フラグレジスタ１０１のＣビットは「１」であるので、選択回路１３１の出力１３１は0x3が出力される。従って、制御回路１０９のフラグの入力値は0x3で、Ｚビットに対応するビット１は「１」であるので、分岐は実行されないことになる。
【００５２】
このように、Ｉ／Ｏポート１０２のＰＡのビット１がフラグレジスタ１０１のＺビットにマップされている時は、命令にBNZ命令を指定すると、実際にはPA[1]＝０なら分岐する命令が実行される。また、Ｉ／Ｏマップレジスタの値によりＩ／Ｏポート１０２をフラグレジスタ１０１にマップするか否かを切り替えることが可能になる。
【００５３】
更に、図１に示した例と同様に、ソフトウェアがＩ／Ｏポートマップ有効ビット１３０を書き換えることを指示すると、制御回路１０９はＩ／Ｏポートマップレジスタ番号書き込み信号１４１にＩ／Ｏポートをマップ有効／無効と書き込み許可信号を出力する。これにより、Ｉ／Ｏポートマップ有効番号１０４が更新される。このように、ソフトウェアから、Ｉ／Ｏポートマップ有効ビット１３０を書き換えることができる。
【００５４】
図５は、Ｉ／Ｏポートを汎用レジスタにマップ可能であると共に割り込み時にマップを切り替え可能なプロセッサの構成の一例を示す図である。尚、図５は、図１に示す構成に、割り込み時にマップを切り替え可能にする構成が付加されたものであるため、ここでは図１と異なる個所のみ説明する。
【００５５】
図５に示すように、制御回路１０９から出力される追加割り込み処理レベル信号３０１が追加されている。この割り込みレベル信号３０１は割り込み処理中の時に「１」、割り込み処理中ではない時に「０」となるものとする。また、図１に示すＩ／Ｏポートマップレジスタ番号１０３とＩ／Ｏポートマップ有効ビット１０４とが、割り込み処理レベル毎に用意され、Ｉ／Ｏポートマップレジスタ番号１０３ａ、１０３ｂ、Ｉ／Ｏポートマップ有効ビット１０４ａ、１０４ｂとなっている。そして、割り込み処理レベル信号３０１により、Ｉ／Ｏポートマップレジスタ番号とＩ／Ｏポートマップ有効ビットとを切り替える選択回路３０２ａ、３０２ｂが追加されている。
【００５６】
尚、Ｉ／Ｏポートマップレジスタ番号書き込み信号１４１は、Ｉ／Ｏポートマップレジスタ番号１０３ａと１０３ｂの何れかを指定して書き込みを行うものとする。また同様に、Ｉ／Ｏポートマップ有効ビット書き込み信号１４２もＩ／Ｏポートマップ有効ビット１０４ａ、１０４ｂの何れかを指定して書き込みを行うものとする。
【００５７】
図５において、割り込み処理レベル信号３０１が「０」の場合は、選択回路３０２ａ、３０２ｂにより、Ｉ／Ｏポートマップレジスタ番号は１０３ａ、Ｉ／Ｏポートマップ有効ビットは１０４ａが使用される。これに対して、割り込み処理レベル信号３０１が「１」の場合は、選択回路３０２ａ、３０２ｂにより、Ｉ／Ｏポートマップレジスタ番号は１０３ｂ、Ｉ／Ｏポートマップ有効ビットには１０４ｂが使用される。
【００５８】
これにより、割り込み処理時と通常処理時でＩ／Ｏポートをマップする汎用レジスタを変化させることができる。このため、割り込み処理中のＩ／Ｏポートと汎用レジスタとの間での転送命令や割り込み処理開始／終了時に、マップを変化させるための命令が不要になるため、割り込み処理にかかる実行サイクル数を短くすることができる。
【００５９】
図６は、Ｉ／Ｏポートをフラグレジスタにマップ可能であると共に割り込み時にマップを切り替え可能なプロセッサの構成の一例を示す図である。尚、図６は、図２に示す構成に、割り込み時にマップを切り替え可能にする構成が付加されたものであるため、ここでは図２と異なる個所のみ説明する。
【００６０】
図６に示すように、制御回路１０９から出力される追加割り込み処理レベル信号３０１が追加されている。この割り込みレベル信号３０１は割り込み処理中の時に「１」、割り込み処理中ではない時に「０」となるものとする。また、図２に示すＩ／Ｏポートマップ有効ビット１３０が割り込み処理レベル毎に用意され、Ｉ／Ｏポートマップ有効ビット１３０ａ、１３０ｂとなっている。そして、割り込み処理レベル信号３０１により、Ｉ／Ｏポートマップレジスタ番号とＩ／Ｏポートマップ有効ビットとを切り替える選択回路３０２が追加されている。
【００６１】
尚、Ｉ／Ｏポートマップレジスタ番号書き込み信号１４１は、Ｉ／Ｏポートマップ有効ビット１３０ａ、１３０ｂの何れかを指定して書き込みを行うものとする。
【００６２】
図６において、割り込み処理レベル信号３０１が「０」の場合、選択回路３０２により、Ｉ／Ｏポートマップ有効ビットは１３０ａが使用される。これに対して、割り込み処理レベル信号３０１が「１」の場合、選択回路３０２により、Ｉ／Ｏポートマップ有効ビットには１３０ｂが使用される。
【００６３】
これにより、割り込み処理時と通常処理時でＩ／Ｏポートをマップするフラグレジスタを変化させることができる。このため、割り込み処理中のＩ／Ｏポートと汎用レジスタとの間での転送命令や割り込み処理開始／終了時にマップを変化させるための命令が不要になるため、割り込み処理にかかる実行サイクル数を短くすることができる。
【００６４】
以上説明した実施形態によれば、Ｉ／Ｏポートを汎用レジスタ或いはフラグレジスタにマップできるようにすると共に、Ｉ／Ｏポートと汎用レジスタ或いはフラグレジスタへのマップをソフトウェアから変更できる。従って、非常に短いサイクル数でＩ／Ｏポートの入出力を含む処理を実現することができる。
【００６５】
更に、割り込み処理時にＩ／Ｏポートをマップする汎用レジスタ或いはフラグレジスタを変更できることにより、割り込み処理において非常に短いサイクル数でＩ／Ｏポートの入出力を含む処理を実現することができる。
【００６６】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００６７】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【００６８】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００６９】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００７０】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合。
【００７１】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００７２】
【図１】本実施形態におけるＩ／Ｏポートを汎用レジスタにマップ可能なプロセッサの構成の一例を示す図である。
【図２】Ｉ／Ｏポートをフラグレジスタにマップ可能なプロセッサの構成の一例を示す図である。
【図３】図２に示すフラグレジスタ１０１の構成を示す図である。
【図４】図２に示すＩ／Ｏポートマップ有効ビット１３０の構成を示す図である。
【図５】Ｉ／Ｏポートを汎用レジスタにマップ可能であると共に割り込み時にマップを切り替え可能なプロセッサの構成の一例を示す図である。
【図６】Ｉ／Ｏポートをフラグレジスタにマップ可能であると共に割り込み時にマップを切り替え可能なプロセッサの構成の一例を示す図である。
【符号の説明】
【００７３】
１００  レジスタファイル
１０１  フラグレジスタ
１０２  Ｉ／Ｏポート
１０３  Ｉ／Ｏポートマップレジスタ番号
１０４  Ｉ／Ｏポートマップ有効ビット
１０５  Ｉ／Ｏポートマップ比較器
１０６  Ｉ／Ｏポートマップ有効判定
１０７  Ｉ／Ｏポートマップ読み出し選択
１０８  数値演算ユニット（ALU）
１０９  制御回路
１１０  Ｉ／Ｏポートマップ書き込み選択
１１１  Ｉ／Ｏポートマップ書き込み選択
１３０  Ｉ／Ｏポートマップ有効ビット
１３１  Ｉ／Ｏポートマップ読み出し選択
３０２  選択回路
【図１】
2007058330.tif 000003
【図２】
2007058330.tif 000004
【図３】
2007058330.tif 000005
【図４】
2007058330.tif 000006
【図５】
2007058330.tif 000007
【図６】
2007058330.tif 000008