(57)【特許請求の範囲】
【請求項１】
所定の演算機能を有する算術論理演算ユニットと、所定のバスを介して上記算術論理演算ユニットに結合される汎用レジスタと、外部装置に結合される入出力ポートとを具備し、
上記算術論理演算ユニットと上記汎用レジスタとに対応して設けられるプログラムメモリと制御回路とをさらに具備し、
上記汎用レジスタは、上記入出力ポートの対応するポートに結合されるものであり、
上記汎用レジスタは、上記プログラムメモリに格納されたプログラムにもとづいて上記制御回路によって、上記算術論理演算ユニットの演算結果の格納先として指定され得るものであり、
上記汎用レジスタの一部又は全部がその保持データに対して所定の加工処理を施すデータ加工部を含むことを特徴とするデジタル処理装置。
【請求項２】
上記制御回路は、上記汎用レジスタを上記算術論理演算ユニットの入力としてさらに指定し、
上記汎用レジスタを上記算術論理演算ユニットの入力および演算結果の格納先として指定された上記演算は、１サイクルで実行されることを特徴とする請求項１のデジタル処理装置。
【請求項３】
上記データ加工部を含む汎用レジスタは、上記算術論理演算ユニットとは独立にかつ並行して動作し、実質的に対応する上記外部装置との間の入力処理又は出力処理を制御する周辺装置として機能しうるものであることを特徴とする請求項１又は請求項２のデジタル処理装置。
【請求項４】
上記データ加工部は、複数の入力ノード及び出力ノードと、上記複数の入力ノードを介して入力される入力データを所定の優先順位で選択的に取り込むライトセレクタと、対応する上記汎用レジスタの保持データを対応する上記出力ノードに選択的に出力するリードセレクタとを含むものであることを特徴とする請求項１，請求項２又は請求項３のデジタル処理装置。
【請求項５】
上記データ加工部は、対応する上記汎用レジスタの所定ビットを出力した後、選択的にクリアし又はプリセットしうるものであることを特徴とする請求項１，請求項２，請求項３又は請求項４のデジタル処理装置。
【請求項６】
上記データ加工部は、対応する上記汎用レジスタの各ビットを選択的にシリアル結合し、シフタ構成としうるものであることを特徴とする請求項１，請求項２，請求項３又は請求項４のデジタル処理装置。
【請求項７】
上記データ加工部は、対応する上記汎用レジスタがシフタ構成とされるとき、最下位ビットの出力信号を選択的に繰り返しその入力端子に入力しうるものであることを特徴とする請求項６のデジタル処理装置。
【請求項８】
上記データ加工部は、算術論理演算ユニット又は入出力ポートからパラレルに入力されるデータの上位又は下位ビットを、その下位又は上位ビットをマスクとして選択的に取り込みうるものであることを特徴とする請求項１，請求項２，請求項３又は請求項４のデジタル処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はデジタル処理装置に関し、例えば、周辺装置をソフトウェアでエミュレートするためのインテリジェントサブプロセッサとして機能するマイクロプロセッサならびにこのようなマイクロプロセッサを搭載するシングルチップマイクロコンピュータに利用して特に有効な技術に関するものである。
【０００２】
【従来の技術】
中央処理装置やリードオンリーメモリ及びランダムアクセスメモリ等の記憶装置ならびにダイレクトメモリアクセスコントローラ，シリアルコミュニケーションインタフェース及びタイマー回路等の周辺装置を１個のチップ（半導体基板）上に搭載したシングルチップマイクロコンピュータがある。これらのシングルチップマイクロコンピュータにおいて、各周辺装置は、それぞれ専用化されたハードウェアにより実現され、そのメーカは、複数の周辺装置を種々の組み合わせで搭載することにより、シングルチップマイクロコンピュータの品種展開を図ってきた。このため、シングルチップマイクロコンピュータのユーザは、限られた品種の中から最もその用途に近いものを選択せざるを得ず、選択した品種が必ずしもユーザのニーズに対応した最適品とはならないケースも多い。また、メーカがユーザの多様化された要求に応えようとしても、ハードウェアの変更を伴うために比較的長い開発期間を要し、製品の価格上昇を招く結果となる。
【０００３】
これに対処するため、中央処理装置の他にサブプロセッサとなるマイクロプロセッサをシングルチップマイクロコンピュータに設け、各種の周辺装置の機能をソフトウェア的にエミュレートする方法が特開平４−１９５４８１号によって提案されている。このシングルチップマイクロコンピュータは、入出力ポート（外部ポート）に直結された多機能メモリを備え、マイクロプロセッサは、中央処理装置を介することなくしかもビットごとに多機能メモリをアクセスできるため、ソフトウェアの実行速度と入出力装置の処理速度との間のタイムラグを解消しつつ、複数の周辺装置の機能を並行してエミュレートできるものである。
【０００４】
【発明が解決しようとする課題】
ところが、ユーザニーズがさらに多様化し高性能化するにしたがって、上記に記載されるシングルチップマイクロコンピュータにも次のような問題点が生じることが本願発明者等によって明らかとなった。すなわち、上記シングルチップマイクロコンピュータでは、マイクロプロセッサと多機能メモリとの間のデータ授受が１ビット又は２ビット単位で行われ、多機能メモリ自体も、マイクロプロセッサ又は入出力装置から与えられたデータをそのまま伝達するだけでいわゆるデータ加工機能を有さない。このため、マイクロプロセッサ及び入出力ポート間のデータ授受が充分に高速化されず、また並行処理に伴うマイクロプロセッサの処理負担が増大する結果となり、これによってシングルチップマイクロコンピュータの入出力処理に関する性能及び分解能が低下するものである。
【０００５】
この発明の目的は、その入出力処理に関する性能及び分解能を低下させることなく、複数の周辺装置としての機能を時分割的にかつ効率的にエミュレートしうるマイクロプロセッサ等のデジタル処理装置を実現することにある。
【０００６】
この発明の前記ならびにその他の目的と新規な特徴は、この明細書の記述及び添付図面から明らかになるであろう。
【０００７】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、次の通りである。すなわち、シングルチップマイクロコンピュータ等に搭載され複数の周辺装置としての機能をソフトウェア的にかつ時分割的にエミュレートするマイクロプロセッサ等において、算術論理演算ユニットに結合される汎用レジスタの一部又は全部に、その保持データに所定の加工処理を施すためのデータ加工機能を持たせる。また、このようなデータ加工機能を持つ機能付き汎用レジスタを入出力ポートに直結するとともに、各機能付き汎用レジスタに対応して、その動作を制御するためのプログラムメモリ及び制御回路を設ける。
【０００８】
【作用】
上記した手段によれば、算術論理演算ユニットと入出力ポートとの間を機能付き汎用レジスタを介して論理的に直結し、マイクロプロセッサ及び入出力ポート間のデータ授受を高速化できるとともに、入出力データに対するマスク処理やシフト処理を機能付き汎用レジスタにより算術論理演算ユニットを介することなく並行して行うことができる。この結果、その入出力処理に関する性能及び分解能を低下させることなく、複数の周辺装置としての機能を時分割的にかつ効率的にエミュレートしうるマイクロプロセッサ等を実現することができる。
【０００９】
【実施例】
図１には、この発明が適用されたマイクロプロセッサＭＰＵを含むシングルチップマイクロコンピュータＭＣの一実施例のシステム構成図が示されている。同図により、まずこの実施例のマイクロプロセッサＭＰＵを含むシングルチップマイクロコンピュータＭＣの構成及び動作の概要について説明する。なお、図１の各ブロックを構成する回路素子は、公知の半導体集積回路の製造技術により、単結晶シリコンのような１個の半導体基板上に形成される。
【００１０】
図１において、シングルチップマイクロコンピュータＭＣは、いわゆるストアドプログラム方式の中央処理装置ＣＰＵと、システムバスＳＢＵＳを介して中央処理装置ＣＰＵに結合されるリードオンリーメモリＲＯＭ及びランダムアクセスメモリＲＡＭとを備える。このうち、中央処理装置ＣＰＵは、いわゆるメインプロセッサとして機能し、リードオンリーメモリＲＯＭに格納された制御プログラムに従ってステップ動作して、所定の演算処理を実行するとともに、シングルチップマイクロコンピュータＭＣの各部の動作を制御・統轄する。
【００１１】
シングルチップマイクロコンピュータＭＣのシステムバスＳＢＵＳには、さらにマイクロプログラム方式のマイクロプロセッサＭＰＵが結合されるとともに、ダイレクトメモリアクセスコントローラＤＭＡＣ，シリアルコミュニケーションインタフェースＳＣＩ及び入出力ポートＩＯＰが結合される。このうち、マイクロプロセッサＭＰＵは、ｍ＋１個の汎用レジスタＧＲ０〜ＧＲｍと図示されない算術論理演算ユニットＡＬＵとを含み、複数の周辺装置としての機能をソフトウェア的にエミュレートするいわゆるサブプロセッサとして機能する。また、ダイレクトメモリアクセスコントローラＤＭＡＣは、中央処理装置ＣＰＵ又はマイクロプロセッサＭＰＵを介することなくリードオンリーメモリＲＯＭ又はランダムアクセスメモリＲＡＭとシリアルコミュニケーションインタフェースＳＣＩ又は入出力ポートＩＯＰとの間のデータ授受を仲介し、シリアルコミュニケーションインタフェースＳＣＩは、データの直並列又は並直列変換機能を有し、外部のシリアル入出力装置との間で一連のデータのシリアル転送を行う。なお、マイクロプロセッサＭＰＵは、前述のように、複数の周辺装置を時分割的にエミュレートするサブプロセッサとして機能するが、論理構成が複雑で相当な高速性を要求されることの多いダイレクトメモリアクセスコントローラＤＭＡＣ及びシリアルコミュニケーションインタフェースＳＣＩについては専用ハードウェアも搭載し、ユーザの高度なニーズに応えることができる構成とした。
【００１２】
この実施例において、マイクロプロセッサＭＰＵに含まれるｍ＋１個の汎用レジスタＧＲ０〜ＧＲｍのうち２個の汎用レジスタＧＲ０及びＧＲ１は、インタフェースバスＩＢＵＳを介して入出力ポートＩＯＰのポートＰ０及びＰ１にそれぞれ直結される。また、これらの汎用レジスタＧＲ０及びＧＲ１は、後述するように、データ加工部ＤＰをそれぞれ含み、その保持データに対して所定のデータ加工処理を独立に施しうるいわゆる機能付き汎用レジスタとされる。一方、入出力ポートＩＯＰを起点とするインタフェースバスＩＢＵＳには、さらに中央処理装置ＣＰＵが結合されるとともに、ダイレクトメモリアクセスコントローラＤＭＡＣ及びシリアルコミュニケーションインタフェースＳＣＩが結合される。また、シリアルコミュニケーションインタフェースＳＣＩは、入出力ポートＩＯＰのポートＰ２に結合され、入出力ポートＩＯＰのポートＰ１ないしＰ２には、対応する入出力装置ＩＯ０〜ＩＯ２がそれぞれ結合される。なお、インタフェースバスＩＢＵＳは、システムバスＳＢＵＳのような確固たる共通バス形態を採るものではなく、特定のブロック間に設けられた多くの専用信号線を含む。
【００１３】
図２には、図１のシングルチップマイクロコンピュータＭＣに含まれるマイクロプロセッサＭＰＵの一実施例のブロック図が示されている。また、図３には、図２のマイクロプロセッサＭＰＵに含まれる機能付き汎用レジスタＧＲ０の一実施例のブロック図が示され、図４には、図３の機能付き汎用レジスタＧＲ０のビットＢ０の一実施例のブロック図が示されている。これらの図をもとに、マイクロプロセッサＭＰＵの具体的構成及び動作ならびにその特徴について説明する。なお、機能付き汎用レジスタＧＲ１については、図３の機能付き汎用レジスタＧＲ０に関する説明から類推され、機能付き汎用レジスタＧＲ０のビットＢ１〜ＢＦについては、図４のビットＢ０に関する説明から類推されたい。
【００１４】
図２において、マイクロプロセッサＭＰＵは、前述のように、マイクロプログラム方式の処理装置とされ、プログラムメモリ部ＰＭ，制御回路部ＰＣならびに演算回路部ＡＥを含む。このうち、プログラムメモリ部ＰＭは、それぞれ所定ビットからなるｊ＋１個のプログラムメモリＰＭ０〜ＰＭｊを含み、これらのプログラムメモリから出力される命令は一つのワードを構成する。プログラムメモリＰＭ０〜ＰＭｊすなわちプログラムメモリ部ＰＭは、特に制限されないが、５１２のアドレスを有し、そのアドレスは、図示されないプログラムカウンタによって所定の順序で択一的に指定される。マイクロプロセッサＭＰＵは、所定のクロック信号に従って同期動作し、マイクロプロセッサＭＰＵから読み出される各ワードの命令に沿った処理をクロック信号の１サイクル内に実行する。
【００１５】
一方、制御回路部ＰＣは、プログラムメモリ部ＰＭのプログラムメモリＰＭ０〜ＰＭｊに対応して設けられるｊ＋１個の制御回路ＰＣ０〜ＰＣｊを含む。このうち、制御回路ＰＣ０及びＰＣ１は、演算回路部ＡＥの機能付き汎用レジスタＧＲ０及びＧＲ１の動作をそれぞれ制御し、制御回路ＰＣ２は、算術論理演算ユニット入力バスＡＩＢＵＳに対する入力を制御する。また、制御回路ＰＣｉは、後述するＰリード機能を制御し、制御回路ＰＣｊは、算術論理演算ユニットＡＬＵの動作を制御する。なお、図示されない制御回路ＰＣ３は、算術論理演算ユニット出力バスＡＯＢＵＳに対する出力を制御し、制御回路ＰＣｉ−１は、後述するＯＵＴ命令に供される。制御回路ＰＣ０〜ＰＣｊは、対応するプログラムメモリＰＭ０〜ＰＭｊから読み出される命令をそれぞれデコードして、対応するブロックの動作制御に必要な制御信号を選択的に形成する。これにより、この実施例のマイクロプロセッサＭＰＵは、プログラムメモリＰＭ０〜ＰＭｊに格納された命令を制御回路ＰＣ０〜ＰＣｊつまりは複数の機能単位を使って同時にかつ並行して実行し、複数の機能を同時にかつ並行して実現する。
【００１６】
次に、演算回路部ＡＥは、算術論理演算ユニットＡＬＵと、算術論理演算ユニット入力バスＡＩＢＵＳ及び算術論理演算ユニット出力バスＡＯＢＵＳを介して算術論理演算ユニットＡＬＵに結合されるｍ＋１個の汎用レジスタＧＲ０〜ＧＲｍとを含む。このうち、算術論理演算ユニットＡＬＵは、各種演算機能を有し、算術論理演算ユニット入力バスＡＩＢＵＳを介して入力されるデータに所定の演算処理を施し、算術論理演算ユニット出力バスＡＯＢＵＳに出力する。また、汎用レジスタＧＲ０〜ＧＲｍは、算術論理演算ユニットＡＬＵから算術論理演算ユニット出力バスＡＯＢＵＳを介して出力されるデータを取り込み、保持するとともに、必要に応じて算術論理演算ユニット出力バスＡＯＢＵＳつまり算術論理演算ユニットＡＬＵに出力する。前述のように、汎用レジスタＧＲ０〜ＧＲ１と算術論理演算ユニット入力バスＡＩＢＵＳ及び算術論理演算ユニット出力バスＡＯＢＵＳとの間の接続は、制御回路ＰＣ２等つまりプログラムメモリＰＭ２等に格納された命令に従って制御される。また、汎用レジスタＧＲ０〜ＧＲｍから算術論理演算ユニットＡＬＵに出力されたデータは、クロック信号の同一サイクル内において算術論理演算ユニットＡＬＵで処理され、再び汎用レジスタＧＲ０〜ＧＲｍに取り込まれる。この結果、汎用レジスタＧＲ０〜ＧＲｍは、算術論理演算ユニットＡＬＵに直結された形となり、算術論理演算ユニットＡＬＵつまりはマイクロプロセッサＭＰＵの演算処理に直接関与しうるものとなる。
【００１７】
この実施例において、汎用レジスタＧＲ０及びＧＲ１は、データ加工部ＤＰをそれぞれ含み、機能付き汎用レジスタとされる。また、汎用レジスタＧＲ０及びＧＲ１は、インタフェースバスＩＢＵＳを介して入出力ポートＩＯＰの対応するポートＰ０及びＰ１に直結されるとともに、システムバスＳＢＵＳを介して中央処理装置ＣＰＵ及びランダムアクセスメモリＲＡＭ等に結合される。上記のように、機能付き汎用レジスタＧＲ０及びＧＲ１は、算術論理演算ユニットＡＬＵつまりはマイクロプロセッサＭＰＵの演算処理に直接関与しうるものとされる。このため、算術論理演算ユニットＡＬＵつまりマイクロプロセッサＭＰＵは、機能付き汎用レジスタＧＲ０又はＧＲ１を介して入出力ポートＩＯＰのポートＰ０及びＰ１に関する入力処理又は出力処理に直接関与できるものとなる。
【００１８】
ところで、演算回路部ＡＥの汎用レジスタＧＲ０及びＧＲ１は、図３の汎用レジスタＧＲ０に代表されるように、１６個のビットＢ０〜ＢＦ（ここで、１６個設けられる汎用レジスタのビット等の追番を１６進数により表す。以下同様）を含み、これらのビットＢ０〜ＢＦは、第１相のクロック信号ＣＬＫ１に従って動作するスタティックラッチＳＬと、第２相のクロック信号ＣＬＫ２に従って動作するダイナミックラッチＤＬとをそれぞれ含む。また、ビットＢ０〜ＢＦのダイナミックラッチＤＬ及びスタティックラッチＳＬ間に設けられる４個のライトセレクタＷＳａ〜ＷＳｄを含み、スタティックラッチＳＬの出力信号を受けるリードセレクタＲＳを含む。このうち、ライトセレクタＷＳａのデータ入力端子（入力ノード）には、回路の接地電位に結合され、ライトセレクタＷＳｂ〜ＷＳｄのデータ入力端子は、それぞれインタフェースバスＩＢＵＳ，算術論理演算ユニット出力バスＡＯＢＵＳ及びシステムバスＳＢＵＳに結合される。また、その制御端子には、制御回路部ＰＣの制御回路ＰＣ０からセレクタ制御信号ＳＣａ〜ＳＣｄがそれぞれ供給される。なお、これらのセレクタ制御信号ＳＣａ〜ＳＣｄは、リードセレクタＲＳにも供給される。リードセレクタＲＳの第１の出力端子（出力ノード）は、システムバスＳＢＵＳに結合され、その第２〜第３の出力端子は、算術論理演算ユニット入力バスＡＩＢＵＳ及びインタフェースバスＩＢＵＳにそれぞれ結合される。また、その第４の出力端子は、Ｐリード用の出力端子とされ、システムバスＳＢＵＳの対応するビットに結合される。
【００１９】
ここで、機能付き汎用レジスタＧＲ０のビットＢ０〜ＢＦを構成するライトセレクタＷＳａ〜ＷＳｄは、図４に例示されるように、それぞれ２個のライトセレクタＷＳＰａ及びＷＳＮａないしＷＳＰｄ及びＷＳＮｄからなり、リードセレクタＲＳも、４個のリードセレクタＲＳａ〜ＲＳｄからなる。このうち、ライトセレクタＷＳＰａのデータ入力端子は、回路の接地電位に結合され、その制御端子には、セレクタ制御信号ＳＣａが供給される。また、ライトセレクタＷＳＮａのデータ入力端子は、ダイナミックラッチＤＬの出力端子に結合され、その制御端子には、セレクタ制御信号ＳＣａの反転信号が供給される。これらのライトセレクタＷＳＰａ及びＷＳＮａの出力端子は、共通結合された後、ライトセレクタＷＳＮｂのデータ入力端子に結合される。一方、ライトセレクタＷＳＰｂのデータ入力端子は、インタフェースバスＩＢＵＳの対応するビットＢ０に結合される。また、その制御端子には、セレクタ制御信号ＳＣｂが供給され、ライトセレクタＷＳＮｂの制御端子には、セレクタ制御信号ＳＣｂの反転信号が供給される。これらのライトセレクタＷＳＰｂ及びＷＳＮｂの出力端子は、共通結合された後、ライトセレクタＷＳＮｃのデータ入力端子に結合される。
【００２０】
同様に、ライトセレクタＷＳＰｃのデータ入力端子は、算術論理演算ユニット出力バスＡＯＢＵＳの対応するビットＢ０に結合される。また、その制御端子には、セレクタ制御信号ＳＣｃが供給され、ライトセレクタＷＳＮｃの制御端子には、セレクタ制御信号ＳＣｃの反転信号が供給される。これらのライトセレクタＷＳＰｃ及びＷＳＮｃの出力端子は、共通結合された後、ライトセレクタＷＳＮｄのデータ入力端子に結合される。一方、ライトセレクタＷＳＰｄのデータ入力端子は、システムバスＳＢＵＳの対応するビットＢ０に結合される。また、その制御端子には、セレクタ制御信号ＳＣｄが供給され、ライトセレクタＷＳＮｄの制御端子には、セレクタ制御信号ＳＣｄの反転信号が供給される。これらのライトセレクタＷＳＰｄ及びＷＳＮｄの出力端子は、共通結合された後、スタティックラッチＳＬの入力端子に結合される。
【００２１】
ライトセレクタＷＳＰａ〜ＷＳＰｄは、対応するセレクタ制御信号ＳＣａ〜ＳＣｄのハイレベルを受けてそれぞれ選択的に伝達状態とされ、そのデータ入力端子に供給される回路の接地電位あるいはインタフェースバスＩＢＵＳ，算術論理演算ユニット出力バスＡＯＢＵＳ又はシステムバスＳＢＵＳのビットＢ０を介して入力されるデータを次段のライトセレクタＷＳＮｂ，ＷＳＮｃ又はＷＳＮｄのデータ入力端子あるいはスタティックラッチＳＬの入力端子にそれぞれ選択的に伝達する。また、ライトセレクタＷＳＮａ〜ＷＳＮｄは、対応するセレクタ制御信号ＳＣａ〜ＳＣｄのロウレベルつまりはその反転信号のハイレベルを受けてそれぞれ選択的に伝達状態とされ、そのデータ入力端子に供給されるダイナミックラッチＤＬの出力信号あるいは前段の一対のライトセレクタＷＳＰａ及びＷＳＮａ，ＷＳＰｂ及びＷＳＮｂならびにＷＳＰｃ及びＷＳＮｃの出力信号を次段のライトセレクタＷＳＮｂ，ＷＳＮｃ又はＷＳＮｄのデータ入力端子あるいはスタティックラッチＳＬの入力端子にそれぞれ選択的に伝達する。
【００２２】
これらのことから、スタティックラッチＳＬの入力端子には、セレクタ制御信号ＳＣａがハイレベルとされかつセレクタ制御信号ＳＣｂ〜ＳＣｄがすべてロウレベルであることを条件に、回路の接地電位つまり論理“０”が選択的に伝達される。また、セレクタ制御信号ＳＣｂがハイレベルとされかつセレクタ制御信号ＳＣｃ及びＳＣｄがともにロウレベルであることを条件に、インタフェースバスＩＢＵＳのビットＢ０を介して入力されるデータが選択的に伝達され、セレクタ制御信号ＳＣｃがハイレベルとされかつセレクタ制御信号ＳＣｄがロウレベルであることを条件に、算術論理演算ユニット出力バスＡＯＢＵＳのビットＢ０を介して入力されるデータが選択的に伝達される。さらに、セレクタ制御信号ＳＣｄがハイレベルであることを条件に、システムバスＳＢＵＳのビットＢ０を介して入力されるデータが選択的に伝達され、セレクタ制御信号ＳＣａ〜ＳＣｄがすべてロウレベルである場合には、ダイナミックラッチＤＬの出力信号が選択的に伝達される。つまり、ライトセレクタＷＳＰａ〜ＷＳＰｄならびにＷＳＮａ〜ＷＳＮｄは、一つの優先順序回路を構成する訳であって、スタティックラッチＳＬの入力端子には、システムバスＳＢＵＳのビットＢ０を介して入力されるデータが最優先で伝達され、ついで算術論理演算ユニット出力バスＡＯＢＵＳ，インタフェースバスＩＢＵＳのビットＢ０を介して入力されるデータ又は回路の接地電位あるいはダイナミックラッチＤＬの出力信号の順序で伝達される。
【００２３】
なお、この実施例におけるライトセレクタＷＳａ〜ＷＳｄの優先順位は、マイクロプロセッサＭＰＵつまりはシングルチップマイクロコンピュータＭＣの使い勝手が良くなるよう工夫される。すなわち、例えば、外部の入出力装置ＩＯ０〜ＩＯ２から入出力ポートＩＯＰを介して入力される信号より、プログラマが人為的に書き込むデータの方が優先されるとともに、信号の伝達遅延時間の大きな出力回路をスタティックラッチＳＬの近くに配置し、マイクロプロセッサＭＰＵ全体としての高速化を図っている。また、中央処理装置ＣＰＵ等からシステムバスＳＢＵＳを介して行われる書き込みやＯＵＴ命令による書き込みは、プログラムに直接関係のないリードクリア機能ならびに入出力ポートＩＯＰを介する外部からの書き込みよりも優先され、プログラムに従って同期動作する中央処理装置ＣＰＵによる書き込みは、専用ハードウェア化されたダイレクトメモリアクセスコントローラＤＭＡＣやシリアルコミュニケーションインタフェースＳＣＩ等の周辺装置からの書き込みよりも優先される。さらに、回路が複雑なために比較的伝達遅延時間の大きなＯＵＴ命令による書き込みは、算術論理演算ユニットＡＬＵからの書き込みよりも優先され、リードクリア機能による書き込みと入出力ポートＩＯＰを介する外部からの書き込みとが競合した場合には、入出力処理の高速化に寄与する度合の大きな外部からの書き込みが優先される。
【００２４】
スタティックラッチＳＬの入力端子に伝達されたデータは、クロック信号ＣＬＫ１の立ち上がりエッジに同期してスタティックラッチＳＬに取り込まれ、保持される。また、このスタティックラッチＳＬの出力信号は、クロック信号ＣＬＫ２の立ち上がりエッジに同期してダイナミックラッチＤＬに取り込まれ、保持される。これにより、汎用レジスタＧＲ０は、セレクタ制御信号ＳＣａ〜ＳＣｄつまりは対応するプログラムメモリＰＭ０から読み出された命令に従って、システムバスＳＢＵＳ，算術論理演算ユニット出力バスＡＯＢＵＳ，インタフェースバスＩＢＵＳのビットＢ０を介して入力されるデータ又は回路の接地電位あるいはダイナミックラッチＤＬの出力信号を選択的に取り込み、保持する言わば入力選択機能を有し、対応するデータ加工機能を有するものとなる。
【００２５】
言うまでもなく、システムバスＳＢＵＳを介して入力されるデータは、中央処理装置ＣＰＵ又はランダムアクセスメモリＲＡＭ等から出力されるものであり、算術論理演算ユニット出力バスＡＯＢＵＳを介して入力されるデータは、算術論理演算ユニットＡＬＵの演算結果である。また、インタフェースバスＩＢＵＳを介して入力されるデータは、対応する入出力装置ＩＯ０から入出力ポートＩＯＰのポートＰ０を介して入力される外部入力データであり、回路の接地電位は、後述するＰリードのリードクリア時におけるクリア信号となる。一方、クロック信号ＣＬＫ１及びＣＬＫ２の周波数が高くされマイクロプロセッサＭＰＵが高速動作を行うとき、各ライトセレクタに入力されるデータやセレクタ制御信号にはハザード発生の可能性があり、最終的にスタティックラッチＳＬが不定状態となるケースが生じるおそれもある。セレクタ制御信号ＳＣａ〜ＳＣｄがすべてロウレベルとされるときダイナミックラッチＤＬの出力信号がスタティックラッチＳＬにそのまま伝達されることは、このようなケースにダイナミックラッチＤＬの保持データをそのままスタティックラッチＳＬに伝達し、少なくとも前回値を回復して、ハザードによる障害を防止することをその目的としている。
【００２６】
次に、リードセレクタＲＳを構成するリードセレクタＲＳａ〜ＲＳｄのデータ入力端子には、スタティックラッチＳＬの出力信号が共通に供給され、その制御端子には、対応するセレクタ制御信号ＳＣａ〜ＳＣｄがそれぞれ供給される。また、リードセレクタＲＳａ〜ＲＳｃの出力端子は、システムバスＳＢＵＳ，算術論理演算ユニット入力バスＡＩＢＵＳ及びインタフェースバスＩＢＵＳの対応するビットＢ０にそれぞれ結合され、リードセレクタＲＳｄの出力端子は、システムバスＳＢＵＳの所定ビットＢｘに結合される。リードセレクタＲＳｄによるデータ出力は、いわゆるＰリードと呼ばれるものであって、このビットＢｘは、例えば図示されない信号経路を介して算術論理演算ユニットＡＬＵのシフタ命令の入力端子等に結合され、マイクロプロセッサＭＰＵの判定動作に供される。
【００２７】
リードセレクタＲＳａ〜ＲＳｄは、対応するセレクタ制御信号ＳＣａ〜ＳＣｄのハイレベルを受けてそれぞれ選択的に伝達状態とされ、スタティックラッチＳＬの出力信号つまりは汎用レジスタＧＲ０のビットＢ０により保持されるデータをシステムバスＳＢＵＳ，算術論理演算ユニット入力バスＡＩＢＵＳ又はインタフェースバスＩＢＵＳの対応するビットＢ０あるいはシステムバスＳＢＵＳの所定ビットＢｘに選択的に伝達する。これにより、汎用レジスタＧＲ０は、その保持データをシステムバスＳＢＵＳ，算術論理演算ユニット入力バスＡＩＢＵＳ又はインタフェースバスＩＢＵＳに選択的に伝達する言わば出力選択機能を有するものとなり、言わばデータ出力に関するデータ加工機能を有するものとなる。なお、Ｐリード時、システムバスＳＢＵＳのビットＢｘに出力されるデータが論理“１”である場合には、前記セレクタ制御信号ＳＣａが選択的にハイレベルとされ、これによって選択的にリードクリアが実現される。また、リードセレクタＲＳａ〜ＲＳｄは、それぞれ独立してデータの出力機能を実現できるため、この実施例ではデータ出力に関する競合が発生することはない。
【００２８】
ところで、この実施例のマイクロプロセッサＭＰＵは、前述のように、ＯＵＴ命令機能を有し、例えば機能付き汎用レジスタＧＲ１は、算術論理演算ユニットＡＬＵの演算結果として得られるゼロフラグ又はキャリーフラグを条件とし又は無条件で、その指定されたビットに１ビット単位でデータを取り込み、入出力ポートＩＯＰの対応するポートＰ１に伝達する機能を有する。言うまでもなく、ゼロフラグとは、算術論理演算ユニットＡＬＵの演算結果が“０”のとき選択的に論理“１”とされるフラグであり、キャリーフラグとは、算術論理演算ユニットＡＬＵによる演算が行われた結果、桁あふれや桁落ちが生じたとき選択的に論理“１”とされるフラグである。この実施例のマイクロプロセッサＭＰＵは、ＯＵＴ命令による出力と、例えば機能付き汎用レジスタＧＲ０を介する１６ビット単位の出力とを同時に実行できるため、データを１６＋１ビットつまり１７ビット単位で外部の入出力装置に出力できるものとなる。
【００２９】
ここで、機能付き汎用レジスタＧＲ０を使用して入出力ポートＩＯＰのポートＰ０から所定の出力信号を出力する場合のプログラムを例示しよう。まず、最初に、マイクロプロセッサＭＰＵは、算術論理演算ユニットＡＬＵから算術論理演算ユニット出力バスＡＯＢＵＳを介して１６ビットの２進データ“００００００００１００００１１１”をイミディエイト値として機能付き汎用レジスタＧＲ０に書き込む命令を実行させる。次に、ｓ秒後に、２進データ“００００００００１１００００１１”を書き込む命令を実行させ、さらにｓ秒が経過するごとに、２進データ“００００００００１１１００００１”，“００００００００１１１１００００”，“０００００００００１１１１０００”，“００００００００００１１１１００”，“０００００００００００１１１１０”及び“００００００００００００１１１１”を書き込む命令を順次実行させ、これらの８個の命令をもってプログラムループを形成させる。
【００３０】
これらのことから、ポートＰ０の上位８個の外部端子には、常に論理“０”の固定波形が出力されるが、下位８個の外部端子には、周期８ｓ秒、デューティ５０％とされ、かつ互いに４５度の位相差を有する８相の出力信号波形を得ることができる。このとき、機能付き汎用レジスタＧＲ０は、入出力ポートＩＯＰのポートＰ０とともに信号発生回路となるタイマー回路等をエミュレートしている訳であって、データの入出力経路や組み合わせならびに命令を変えることで、各種の周辺装置をソフトウェア的にエミュレートできるものとなる。また、このようなエミュレーションは、機能付き汎用レジスタのそれぞれにおいて独立しかつ並行して実現できるものであって、１個のマイクロプロセッサＭＰＵの時分割処理によって複数の周辺装置を同時にエミュレートできるものとなる。
【００３１】
図５には、図２のマイクロプロセッサＭＰＵの演算回路部ＡＥに含まれる機能付き汎用レジスタＧＲ０の第２の実施例のブロック図が示されている。なお、この実施例の機能付き汎用レジスタＧＲ０は、前記図３の実施例を基本的に踏襲するものであるため、これと異なる部分についてのみ説明を追加する。
【００３２】
図５において、機能付き汎用レジスタＧＲ０のビットＢ０を構成するライトセレクタＷＳａの第１の入力端子には、所定のシフト入力端子を介してシフト入力信号Ｓｉｎが供給され、第２の入力端子には、対応するダイナミックラッチＤＬの出力信号が供給される。また、その第１の制御端子には、セレクタ制御信号ＳＣａが供給され、第２の制御端子には、前回値選択信号ＰＳＬが供給される。一方、機能付き汎用レジスタＧＲ０のビットＢ１〜ＢＦを構成するライトセレクタＷＳａの第１の入力端子には、前段のビットＢ０〜ＢＥを構成するスタティックラッチＳＬの出力信号Ｓ０〜ＳＥがそれぞれ供給され、第２の入力端子には、対応するダイナミックラッチＤＬの出力信号がそれぞれ供給される。また、その制御端子には、上記セレクタ制御信号ＳＣａが共通に供給される。
【００３３】
機能付き汎用レジスタＧＲ０のビットＢ０〜ＢＦを構成するライトセレクタＷＳａは、セレクタ制御信号ＳＣａがロウレベルとされるとき、対応するダイナミックラッチＤＬの出力信号を選択し、ライトセレクタＷＳｂに伝達する。また、セレクタ制御信号ＳＣａがハイレベルとされるとき、シリアル入力信号Ｓｉｎ又は前段のビットＢ０〜ＢＥを構成するスタティックラッチＳＬの出力信号Ｓ０〜ＳＥを選択し、ライトセレクタＷＳｂに伝達する。ライトセレクタＷＳｂに伝達された信号は、セレクタ制御信号ＳＣｂ〜ＳＣｄがロウレベルであることを条件に選択的にスタティックラッチＳＬに伝達され、さらに対応するダイナミックラッチＤＬに伝達される。これにより、機能付き汎用レジスタＧＲ０のビットＢ０〜ＢＦは、セレクタ制御信号ＳＣａがハイレベルとされることを条件に選択的にシフタ構成とされて直並列又は並直列変換回路として機能し、ソフトウェア的にシリアルコミュニケーションインタフェースＳＣＩあるいはパルスワイズモジレーションタイマ等をエミュレートしうるものとなる。なお、機能付き汎用レジスタＧＲ０がシフタ構成とされるとき、最下位ビットのビットＢ０を構成するライトセレクタＷＳａは、前回値選択信号ＰＳＬがハイレベルであることを条件に、ダイナミックラッチＤＬの出力つまりはその前回値を繰り返し選択し、シフト入力信号Ｓｉｎは無効となる。
【００３４】
前記図３の実施例で示したように、機能付き汎用レジスタＧＲ０は、セレクタ制御信号ＳＣｃがハイレベルとされることで、算術論理演算ユニット出力バスＡＯＢＵＳを介して供給される算術論理演算ユニットＡＬＵの出力をパラレルに取り込み、またそのビットＢ０〜ＢＦを構成するスタティックラッチＳＬの出力を算術論理演算ユニット出力バスＡＯＢＵＳを介して算術論理演算ユニットＡＬＵにパラレルに出力する機能を持つ。したがって、まずセレクタ制御信号ＳＣａをハイレベルとして機能付き汎用レジスタＧＲ０をシフタ構成とし、１６ビットのシフト入力信号Ｓｉｎが入力された時点でセレクタ制御信号ＳＣｃをハイレベルとして機能付き汎用レジスタＧＲ０の各スタティックラッチＳＬの出力を算術論理演算ユニット入力バスＡＩＢＵＳつまり算術論理演算ユニットＡＬＵにパラレル出力することで、１６ビットの直並列変換回路をエミュレートできる。また、まずセレクタ制御信号ＳＣｃをハイレベルとして機能付き汎用レジスタＧＲ０に算術論理演算ユニットＡＬＵの出力をパラレル入力した後、セレクタ制御信号ＳＣａをハイレベルとして機能付き汎用レジスタＧＲ０をシフタ構成することで、やはり１６ビットの並直列変換回路をエミュレートできる。このとき、ビットＢＦのスタティックラッチＳＬの出力信号ＳＦは、シリアル出力信号Ｓｏｕｔとして所定のシリアル出力端子からシリアルに出力することができる。
【００３５】
ところで、この実施例のマイクロプロセッサＭＰＵは、前述のように、専用ハードウェアとして構成されるシリアルコミュニケーションインタフェースＳＣＩを備え、このシリアルコミュニケーションインタフェースＳＣＩは、周知のように、上記機能付き汎用レジスタＧＲ０がシフタ構成とされる場合と同様な直並列又は並直列変換機能を持つ。しかし、シフタ構成とされる機能付き汎用レジスタＧＲ０の動作がプログラムメモリＰＭ０に格納された命令に従って制御されるのに比べて、専用ハードウェアたるシリアルコミュニケーションインタフェースＳＣＩの動作は、変換終了時における１６ビットごとの割り込み処理を必要とし、これによって中央処理装置ＣＰＵの処理負担が増大する。言い換えるならば、マイクロプロセッサＭＰＵによってエミュレートされるシリアルコミュニケーションインタフェースＳＣＩは、中央処理装置ＣＰＵの介入を必要とすることなくしかも中央処理装置ＣＰＵによる他の処理と並行して実現できる訳であって、結果的に中央処理装置ＣＰＵの処理負担が著しく軽減されるものとなる。
【００３６】
ここで、二つのプログラム例をあげ、シフタ構成とされる機能付き汎用レジスタの応用方法を説明する。まず、第１のプログラム例では、機能付き汎用レジスタＧＲ０のシリアル出力端子Ｓｏｕｔが結合される入出力ポートＩＯＰのポートＰ０の外部端子Ｘと、機能付き汎用レジスタＧＲ１のシリアル出力端子Ｓｏｕｔが結合されるポートＰ１の外部端子Ｙに、位相差１８０度、デューティ２０％、周波数が基本クロック信号の１／１０とされる２相の出力信号を得る。
【００３７】
マイクロプロセッサＭＰＵは、最初に外部端子Ｘに対応する機能付き汎用レジスタＧＲ０に２進データ“１１００００００００００００００”を、また外部端子Ｙに対応する機能付き汎用レジスタＧＲ１に２進データ“０００００１１０００００００００”を、算術論理演算ユニットＡＬＵから書き込むための命令を実行する。次に、機能付き汎用レジスタＧＲ０及びＧＲ１のビットＢ０のシフト入力信号Ｓｉｎとして論理“０”又は“１”のデータを代入した後、セレクタ制御信号ＳＣａをハイレベルとし、機能付き汎用レジスタＧＲ０及びＧＲ１をシフタ構成とする。そして、基本クロック信号の１０サイクルが経過した時点で機能付き汎用レジスタＧＲ０の上位８ビットに２進データ“１１００００００”を書き込み、さらに５サイクル後には機能付き汎用レジスタＧＲ１の上位８ビットに同じ２進データ“１１００００００”を書き込む。以下、５サイクルが経過するごとに機能付き汎用レジスタＧＲ０及びＧＲ１の上位８ビットに２進データ“１１００００００”を交互に書き込み、これらの命令をループさせる。
【００３８】
これらの結果、入出力ポートＩＯＰのポートＰ０及びＰ１の外部端子Ｘ及びＹには、位相差１８０度、デューティ２０％、周波数がクロック信号の１／１０とされる２相の出力波形が得られ、この出力信号によって例えばモータ等を駆動することが可能となる。このプログラム例の場合、マイクロプロセッサＭＰＵの算術論理演算ユニットＡＬＵは、基本クロック信号の５サイクルおきに２進データ“１１００００００”を書き込む命令を実行すればよい訳であり、残りの４サイクルでは他の処理を実行し、その処理能力を高めることができる。
【００３９】
次に、第２のプログラム例として、機能付き汎用レジスタＧＲ０のシフト出力端子Ｓｏｕｔが結合される入出力ポートＩＯＰのポートＰ０の外部端子Ｚに、デューティ７５％、周波数が基本クロック信号の１／４０とされる出力波形を得る場合を掲げる。マイクロプロセッサＭＰＵは、まず算術論理演算ユニットＡＬＵから機能付き汎用レジスタＧＲ０に２進データ“１１１１１１１１１１１１１１１１”を書き込む命令を実行する。また、前回値選択信号ＰＳＬをハイレベルとした後、セレクタ制御信号ＳＣａをハイレベルとし、機能付き汎用レジスタＧＲ０をシフタ構成とする。そして、基本クロック信号の２０サイクルが経過した時点で、算術論理演算ユニットＡＬＵから機能付き汎用レジスタＧＲ０に２進データ“１１１１１１１１１１００００００”を書き込む命令を実行した後、さらに基本クロック信号の２０サイクルが経過するごとに、２進データ“１１１１１１１１１１１１１１１１”及び“１１１１１１１１１１００００００”を交互に書き込むための命令を実行し、これらの命令をループさせる。
【００４０】
これらの結果、入出力ポートＩＯＰのポートＰ０の外部端子Ｚには、２進データ“１１１１１１１１１１１１１１１１１１１１１１１１１１１１１１００００００００００”に対応するデューティ７５％、周波数が基本クロック信号の１／４０の出力波形が得られる。なお、シフタ構成とされる機能付き汎用レジスタＧＲ０が１６ビット構成とされその並直列変換処理が１６ビットを単位として行われるにもかかわらず、上記一連の２進データを書き込むための命令は２０サイクルごとに実行されるが、この実施例の場合、前回値選択信号ＰＳＬがハイレベルとされ機能付き汎用レジスタＧＲ０のビットＢ０がその前回値を繰り返し入力するため、上記のような信号波形を得ることができるものとなる。このことは、比較的サイクルの長い各種の信号波形の生成に有効となり、これによってマイクロプロセッサＭＰＵの利便性がさらに高められるものとなる。
【００４１】
図６には、図２のマイクロプロセッサＭＰＵに含まれる演算回路部ＡＥの第３の実施例のブロック図が示されている。なお、この実施例の演算回路部ＡＥは前記図２及び図３の実施例を基本的に踏襲するものであるため、これと異なる部分についてのみ説明を追加する。また、図６では、リードセレクタＲＳ，スタティックラッチＳＬ，ライトセレクタＷＳ及び算術論理演算ユニットＡＬＵが、上位又は下位の８ビットを単位とするブロックにまとめて示される。
【００４２】
図６において、機能付き汎用レジスタＧＲ０は、上位又は下位の８ビットを単位として分割された二つのリードセレクタＲＳＵ及びＲＳＬを含む。このうち、上位リードセレクタＲＳＵの入力端子は、８ビットからなるスタティックラッチＳＬの出力端子に結合され、その出力端子は、上位算術論理演算ユニット入力バスＡＩＢＵＳＵならびにインタフェースバスＩＢＵＳの上位８ビットに結合される。一方、下位リードセレクタＲＳＬの入力端子は、８ビットからなるグランド部ＧＮＤに結合され、その出力端子は、下位算術論理演算ユニット入力バスＡＩＢＵＳＬに結合される。なお、グランド部ＧＮＤの各ビットの出力端子には、常に回路の接地電位つまり論理“０”が出力される。リードセレクタＲＳＬの制御端子には、算術論理演算ユニットＡＬＵからみて入力選択信号となるセレクタ制御信号ＳＣａｉが供給される。また、リードセレクタＲＳＵの第１の制御端子には、上記セレクタ制御信号ＳＣａｉが供給され、その第２の入力端子には、外部データの入力選択信号となるセレクタ制御信号ＳＣｅｄが供給される。
【００４３】
リードセレクタＲＳＵは、セレクタ制御信号ＳＣａｉがハイレベルとされるとき、スタティックラッチＳＬによって保持される８ビットのデータを上位算術論理演算ユニット入力バスＡＩＢＵＳＵを介して算術論理演算ユニットＡＬＵの上位８ビットつまり上位算術論理演算ユニットＡＣＵに入力する。このとき、下位リードセレクタＲＳＬは、グランド部ＧＮＤから供給される８ビットの論理“０”データを下位算術論理演算ユニット入力バスＡＩＢＵＳＬを介して算術論理演算ユニットＡＬＵの下位８ビットつまり下位算術論理演算ユニットＡＣＬに入力する。一方、リードセレクタＲＳＵは、セレクタ制御信号ＳＣｅｄがハイレベルとされるとき、スタティックラッチＳＬによって保持される８ビットのデータをインタフェースバスＩＢＵＳの下位８ビットならびに入出力ポートＩＯＰのポートＰ０を介して外部の入出力装置ＩＯ０に出力する。
【００４４】
機能付き汎用レジスタＧＲ０は、さらに８ビットからなるライトセレクタＷＳを含む。このライトセレクタＷＳの第１及び第２の入力端子は、下位算術論理演算ユニット出力バスＡＯＢＵＳＬ及び上位算術論理演算ユニット出力バスＡＯＢＵＳＵにそれぞれ結合され、その第３の入力端子は、インタフェースバスＩＢＵＳに結合される。また、ライトセレクタＷＳの第１の制御端子には、算術論理演算ユニットＡＬＵからみて出力選択信号となるセレクタ制御信号ＳＣａｏが供給され、その第２の制御端子には、上記セレクタ制御信号ＳＣｅｄが供給される。ライトセレクタＷＳの出力端子は、スタティックラッチＳＬの入力端子に結合され、このスタティックラッチＳＬの出力端子は、図示されないダイナミックラッチＤＬを介してライトセレクタＷＳの第４の入力端子に結合される。
【００４５】
この実施例において、ライトセレクタＷＳは、セレクタ制御信号ＳＣｅｄがハイレベルとされるとき、外部の入出力装置ＩＯ０から入出力ポートＩＯＰ及びインタフェースバスＩＢＵＳを介して入力される外部データを取り込み、スタティックラッチＳＬに伝達する。また、セレクタ制御信号ＳＣａｏがハイレベルとされるとき、上位算術論理演算ユニットＡＣＵから上位算術論理演算ユニット出力バスＡＯＢＵＳＵを介して入力される８ビットのデータを、下位算術論理演算ユニットＡＣＬから下位算術論理演算ユニット出力バスＡＯＢＵＳＬを介して入力される８ビットのデータをマスクとして選択的に取り込み、スタティックラッチＳＬに伝達する。すなわち、ライトセレクタＷＳは、上位算術論理演算ユニットＡＣＵから上位算術論理演算ユニット出力バスＡＯＢＵＳＵを介して入力される８ビットのデータを、対応するマスクデータが論理“０”であることを条件に選択的に取り込み、スタティックラッチＳＬの対応するビットに伝達する。対応するマスクデータが論理“１”とされるとき、上位算術論理演算ユニット出力バスＡＯＢＵＳＵを介して入力されるデータは無視され、スタティックラッチＳＬの対応するビットは変化しない。また、セレクタ制御信号ＳＣｅｄ及びＳＣａｏがともにロウレベルとされるとき、ライトセレクタＷＳは、スタティックラッチＳＬによって保持される前回値をそのまま再度取り込み、保持する。
【００４６】
ここで、三つのプログラム例をあげて、この実施例の演算回路部ＡＥの応用方法について説明する。まず、第１のプログラム例は、機能付き汎用レジスタＧＲ０に対応する入出力ポートＩＯＰのポートＰ０の８個の外部端子から、命令Ａに含まれる３ビットのイミディエイトデータ“ａｂｃ”と命令Ｂに含まれる５ビットのイミディエイトデータ“ｌｍｎｏｐ”とを組み合わせて出力するケースである。この実施例の場合、マイクロプロセッサＭＰＵは、最初に“ＭＯＶ  ａｂｃｄｅｆｇｈ０００１１１１１→ＧＲ０”なる命令Ａを実行した後、引き続いて“ＭＯＶ  ｉｊｋｌｍｎｏｐ１１１０００００→ＧＲ０”なる命令Ｂを実行する。なお、これらの命令Ａ及びＢに代表される“ＭＯＶ  Ｘ→Ｙ”なるいわゆるムーブ命令は、“データＸをＹに出力せよ”を意味するものであり、Ｘは上記のようなイミディエイト値でも良いし指定されたレジスタの中身であってもよい。言うまでもなく、Ｙは機能付き汎用レジスタＧＲ０を示し、あわせて入出力ポートＩＯＰのポートＰ０の８個の外部端子をも示すものである。
【００４７】
演算回路部ＡＥの機能付き汎用レジスタＧＲ０では、まず命令Ａを受けてセレクタ制御信号ＳＣａｏがハイレベルとされ、算術論理演算ユニットＡＬＵの上位８ビットつまり２進データ“ａｂｃｄｅｆｇｈ”が下位８ビットつまりマスクデータ“０００１１１１１”に従って選択的にスタティックラッチＳＬに取り込まれる。前述のように、２進データの各ビットは、対応するマスクデータが論理“０”であることを条件に選択的にスタティックラッチＳＬの対応するビットに伝達されるため、スタティックラッチＳＬには、２進データの上位３ビットつまり２進データ“ａｂｃ”のみが選択的に取り込まれる。このとき、スタティックラッチＳＬの下位５ビットは、破壊されずにそのまま保持される。次に、この状態で命令Ｂが実行されると、機能付き汎用レジスタＧＲ０では、セレクタ制御信号ＳＣａｏが再度ハイレベルとされ、算術論理演算ユニットＡＬＵの上位８ビットつまり２進データ“ｉｊｋｌｍｎｏｐ”が下位８ビットつまりマスクデータ“１１１０００００”に従って選択的にスタティックラッチＳＬに取り込まれる。この結果、スタティックラッチＳＬには、２進データの下位５ビットつまり２進データ“ｌｍｎｏｐ”のみが選択的に取り込まれ、上位３ビットの２進データ“ａｂｃ”は、そのまま破壊されずに保持される。
【００４８】
前述のように、機能付き汎用レジスタＧＲ０は、入出力ポートＩＯＰのポートＰ０に直結され、スタティックラッチＳＬにおいて組み合わされた８ビットの２進データ“ａｂｃｌｍｎｏｐ“は、ポートＰ０の８個の外部端子を介して対応する入出力装置ＩＯ０に出力される。
【００４９】
一方、第２のプログラム例は、例えば入出力ポートＩＯＰのポートＰ０の８個の外部端子から８ビットの外部データを機能付き汎用レジスタＧＲ０に入力した後、その上位４ビットを破壊することなく算術論理演算ユニットＡＬＵによって“１”を加算し、再度もとの８個の外部端子から出力するものである。マイクロプロセッサＭＰＵでは、“ＡＤＤ  ０００００００１１１１１００００→ＧＲ０”なる命令Ｃが実行される。この命令Ｃに代表される加算命令“ＡＤＤ  Ｘ→Ｙ”は、“ＸのデータをＹのデータに加算し、Ｙに出力せよ”を意味し、Ｘはイミディエイト値でもよく指定されたレジスタの中身であってもよい。
【００５０】
マイクロプロセッサＭＰＵの機能付き汎用レジスタＧＲ０では、命令Ｃの実行によってまずセレクタ制御信号ＳＣｅｄがハイレベルとされ、入出力ポートＩＯＰのポートＰ０からインタフェースバスＩＢＵＳの上位８ビットを介して伝達される８ビットの外部データがスタティックラッチＳＬに取り込まれる。これらの外部データは、セレクタ制御信号ＳＣａｉがハイレベルとされることで算術論理演算ユニットＡＬＵの上位８ビットつまり上位算術論理演算ユニットＡＣＵの一方の入力端子に伝達され、その下位８ビットつまり下位算術論理演算ユニットＡＣＬの一方の入力端子には、グランド部ＧＮＤを介して２進データ“００００００００”が入力される。このとき、上位算術論理演算ユニットＡＣＵの他方の入力端子には、命令Ｃのイミディエイト値の上位８ビットつまり２進データ“０００００００１”が入力され、下位算術論理演算ユニットＡＣＬの他方の入力端子には、その下位８ビットつまり２進データ“１１１１００００”が入力される。したがって、外部データの初期値を例えば“００００１１１１”とした場合、算術論理演算ユニットＡＬＵは、“０００００００１１１１１００００”＋“００００１１１１００００００００”なる加算処理を実行し、その結果として桁上げ信号を含む２進データ“０００１００００１１１１００００”を得る。
【００５１】
算術論理演算ユニットＡＬＵの演算結果は、前述のように、その上位８ビットを意味のある２進データとしその下位８ビットをマスクデータとして機能付き汎用レジスタＧＲ０に再書き込みされ、入出力ポートＩＯＰのポートＰ０に伝達される。この結果、ポートＰ０の８個の外部端子には、２進データ“００００００００”が出力され、加算結果の第１２ビットに含まれる桁上げ信号は無視され、外部データの上位４ビットも破壊されることなく残される。つまり、この実施例の場合、算術論理演算ユニットＡＬＵの下位８ビットの一方の入力端子には、グランド部ＧＮＤから常に２進データ“００００００００”が入力されるため、加算結果の下位８ビットつまりマスクデータには桁上げが発生せず、第７ビットから第４ビットは常に論理“１”となる。このため、加算結果の第１１ビットから第８ビットのみが対応する下位４個の外部端子から出力されるとともに、加算結果の桁上げ信号は無視され、外部データの上位４ビットは保護される。
【００５２】
最後に、第３のプログラム例として、上記加算命令においてキャリーフラグ及びゼロフラグを有効化する方法をあげる。このマイクロプロセッサＭＰＵでは、前述のように、機能付き汎用レジスタＧＲ０の上位８ビットに意味のある２進データを割り当て、下位８ビットにマスクデータを割り当てているため、マスクデータの全ビットを論理“０”とする加算命令Ｄつまり“ＡＤＤ  １１１１１１１１００００００００→ＧＲ０”を実行すればよい。このとき、外部データの初期値を“０００００００１”とすると、算術論理演算ユニットＡＬＵは、“１１１１１１１１００００００００”＋“０００００００１００００００００”なる加算処理を実行し、その結果として桁上げを伴う２進データ“００００００００００００００００”を得る。このうち、上位８ビットは、マスクされることなく機能付き汎用レジスタＧＲ０に再書き込みされ、ポートＰ０の８個の外部端子を介して入出力装置ＩＯ０に出力される。また、算術論理演算ユニットＡＬＵのゼロフラグ及びキャリーフラグには、演算結果に応じて有効なフラグがそれぞれ選択的に設定されるため、マイクロプロセッサＭＰＵは、分岐命令によってこれらのフラグを活用し、あるいはＯＵＴ命令によって外部に出力できる。
【００５３】
以上のように、この実施例のマイクロプロセッサＭＰＵは、算術論理演算ユニット入力バスＡＩＢＵＳ及び算術論理演算ユニット出力バスＡＯＢＵＳを介して算術論理演算ユニットＡＬＵに結合されるｍ＋１個の汎用レジスタＧＲ０〜ＧＲｍを備え、このうち２個の汎用レジスタＧＲ０及びＧＲ１は、機能付き汎用レジスタとされ、その保持データに対して所定の加工処理を施すためのデータ加工部ＤＰをそれぞれ含む。また、機能付き汎用レジスタＧＲ０及びＧＲ１は、入出力ポートＩＯＰのポートＰ０及びＰ１にそれぞれ直結されるため、その保持データを外部の入出力装置ＩＯ０及びＩＯ１に直接出力し、またこれらの入出力装置から出力されるデータを直接入力することができる。さらに、この実施例のマイクロプロセッサＭＰＵは、機能付き汎用レジスタＧＲ０及びＧＲ１に対応して設けられるプログラムメモリＰＭ０及びＰＭ１ならびに制御回路ＰＣ０及びＰＣ１を備えるため、機能付き汎用レジスタＧＲ０及びＧＲ１は、算術論理演算ユニットＡＬＵとは独立にかつ並行して複数の処理を実行する。これらの結果、この実施例のマイクロプロセッサＭＰＵは、同時に複数の周辺装置としての機能をエミュレートし、しかも効率的な入出力処理を実現しうるものとなる。
【００５４】
以上の実施例から得られる作用効果は、下記の通りである。すなわち、
（１）シングルチップマイクロコンピュータに搭載され複数の周辺装置としての機能をソフトウェア的にかつ時分割的にエミュレートするマイクロプロセッサ等において、算術論理演算ユニットに結合される汎用レジスタの一部又は全部に、その保持データに所定の加工処理を施すデータ加工機能を持たせるとともに、このようなデータ加工機能を持つ機能付き汎用レジスタを入出力ポートに直結し、各機能付き汎用レジスタに対応してその動作を制御するためのプログラムメモリ及び制御回路を設けることで、算術論理演算ユニットと入出力ポートとの間を機能付き汎用レジスタを介して論理的に直結し、マイクロプロセッサ及び入出力ポート間のデータ授受を高速化できるという効果が得られる。
（２）上記（１）項により、入出力データに対するマスク処理やシフト処理を機能付き汎用レジスタにより算術論理演算ユニットを介することなく並行しかつ効率良く実現することができるという効果が得られる。
（３）上記（１）項及び（２）項により、その入出力処理に関する性能及び分解能を低下させることなく、複数の周辺装置としての機能を時分割的にかつ効率的にエミュレートしうるマイクロプロセッサ等のデジタル処理装置を実現することができるという効果が得られる。
【００５５】
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、この発明は、上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。例えば、図１において、シングルチップマイクロコンピュータＭＣは、ダイレクトメモリアクセスコントローラＤＭＡＣ及びシリアルコミュニケーションインタフェースＳＣＩ以外の専用ハードウェアを備えることができるし、このような専用ハードウェアを備えることを必須条件ともしない。また、入出力ポートＩＯＰは、任意数のポートを備えることができるし、これらのポートとマイクロプロセッサＭＰＵの機能付き汎用レジスタ又は入出力装置との間の組み合わせも、任意に設定できる。シングルチップマイクロコンピュータは、任意のブロック構成を採りうる。
【００５６】
図２において、プログラムメモリ部ＰＭを構成するプログラムメモリＰＭ０〜ＰＭｊならびに制御回路部ＰＣを構成する制御回路ＰＣ０〜ＰＣｊと汎用レジスタを含む機能単位との関係は、この実施例による制約を受けない。また、データ加工部ＤＰは、任意数の汎用レジスタに設けることができるし、汎用レジスタＧＲ０〜ＧＲｍのすべてに設けてもよい。プログラムメモリ部ＰＭのアドレス構成は、任意に設定できるし、マイクロプロセッサＭＰＵのブロック構成及びバス構成は、この実施例による制約を受けない。
【００５７】
図３及び図４において、機能付き汎用レジスタＧＲ０のビットＢ０〜ＢＦに設けられるライトセレクタＷＳの数は、その用途及び機能に応じて任意に設定できるし、その優先順位も任意である。また、機能付き汎用レジスタＧＲ０の最下位ビットに設けられるリードクリア機能は、その論理レベルを任意に設定できるいわゆるリードプリセット機能としてもよい。汎用レジスタＧＲ０〜ＧＲｍのビット数は任意に設定できるし、各ビットのブロック構成も任意である。図６において、ライトセレクタＷＳは、下位算術論理演算ユニット出力バスＡＯＢＵＳＬを介して入力される８ビットの２進データを、上位算術論理演算ユニット出力バスＡＯＢＵＳＵを介して入力される８ビットのマスクデータに従って選択的にスタティックラッチＳＬに伝達するものであってもよい。
【００５８】
以上の説明では、主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータならびにそのマイクロプロセッサに適用した場合について説明したが、それに限定されるものではなく、例えば、周辺プロセッサとして単体で形成されるマイクロプロセッサや、マイクロプロセッサを搭載するゲートアレイ集積回路等にも適用できる。汎用レジスタにデータ加工部を設けることで算術論理演算ユニットつまりプロセッサとしての処理能力を高める方法は、マイクロプロセッサに限らず各種のプロセッサに応用できる。この発明は、少なくとも汎用レジスタ及び算術論理演算ユニットを含みあるいは周辺装置としての機能をエミュレートするデジタル処理装置ならびにこのようなデジタル処理装置を含むシステムに広く適用できる。
【００５９】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。すなわち、シングルチップマイクロコンピュータ等に搭載され複数の周辺装置としての機能をソフトウェア的にかつ時分割的にエミュレートするマイクロプロセッサ等において、算術論理演算ユニットに結合される汎用レジスタの一部又は全部に、その保持データに所定の加工処理を施すデータ加工機能を持たせるとともに、このようなデータ加工機能を持つ機能付き汎用レジスタを入出力ポートに直結し、各機能付き汎用レジスタに対応して、その動作を制御するためのプログラムメモリ及び制御回路を設けることで、算術論理演算ユニットと入出力ポートとの間を機能付き汎用レジスタを介して論理的に直結し、マイクロプロセッサ及び入出力ポート間のデータ授受を高速化できるとともに、入出力データに対するマスク処理やシフト処理を機能付き汎用レジスタによりしかも算術論理演算ユニットを介することなく並行して行うことができる。この結果、その入出力処理に関する性能及び分解能を低下させることなく、複数の周辺装置としての機能を時分割的にかつ効率的にエミュレートしうるマイクロプロセッサ等のデジタル処理装置を実現することができる。
【図面の簡単な説明】
【図１】この発明が適用されたマイクロプロセッサを含むシングルチップマイクロコンピュータの一実施例を示すシステム構成図である。
【図２】図１のシングルチップマイクロコンピュータに含まれるマイクロプロセッサの一実施例を示すブロック構成図である。
【図３】図２のマイクロプロセッサの演算回路部に含まれる機能付き汎用レジスタの第１の実施例を示すブロック構成図である。
【図４】図３の機能付き汎用レジスタの第０ビットの一実施例を示すブロック構成図である。
【図５】図２のマイクロプロセッサの演算回路部に含まれる機能付き汎用レジスタの第２の実施例を示すブロック構成図である。
【図６】図２のマイクロプロセッサに含まれる演算回路部の第３の実施例を示す部分的なブロック構成図である。
【符号の説明】
ＭＣ・・・シングルチップマイクロコンピュータ、ＣＰＵ・・・中央処理装置（メインプロセッサ）、ＭＰＵ・・・マイクロプロセッサ（サブプロセッサ）、ＧＲ０〜ＧＲｍ・・・汎用レジスタ、ＳＢＵＳ・・・システムバス、ＩＢＵＳ・・インタフェースバス、ＲＯＭ・・・リードオンリーメモリ、ＲＡＭ・・・ランダムアクセスメモリ、ＤＭＡＣ・・・ダイレクトメモリアクセスコントローラ、ＳＣＩ・・・シリアルコミュニケーションインタフェース、ＩＯＰ・・・入出力ポート、Ｐ０〜Ｐ２・・・ポート、ＩＯ０〜ＩＯ２・・・入出力装置。
ＰＭ・・・プログラムメモリ部、ＰＭ０〜ＰＭｊ・・・プログラムメモリ、ＰＣ・・・制御回路部、ＰＣ０〜ＰＣｊ・・・制御回路、ＡＥ・・・演算回路部、ＧＲ０〜ＧＲ１・・・機能付き汎用レジスタ、ＤＰ・・・データ加工部、ＡＬＵ・・・算術論理演算ユニット、ＡＩＢＵＳ・・・・算術論理演算ユニット入力バス、ＡＯＢＵＳ・・・算術論理演算ユニット出力バス。
Ｂ０〜ＢＦ・・・汎用レジスタ各ビット、ＳＬ・・・スタティックラッチ、ＤＬ・・・ダイナミックラッチ、ＷＳａ〜ＷＳｄ・・・ライトセレクタ、ＲＳ・・・リードセレクタ、ＳＣａ〜ＳＣｄ・・・セレクタ制御信号、ＣＬＫ１〜ＣＬＫ２・・・クロック信号。
ＲＳａ〜ＲＳｄ・・・リードセレクタ、ＷＳＰａ〜ＷＳＰｄ，ＷＳＮａ〜ＷＳＮｄ・・・ライトセレクタ。
ＰＳＬ・・・前回値選択信号、Ｓｉｎ・・・シリアル入力端子、Ｓｏｕｔ・・・シリアル出力端子、Ｓ０〜ＳＦ・・・スタティックラッチ出力信号。
ＡＣＵ・・・上位算術論理演算ユニット、ＡＣＬ・・・下位算術論理演算ユニット、ＲＳＵ・・・上位リードセレクタ、ＲＳＬ・・・下位リードセレクタ、ＧＮＤ・・グランド部、ＡＩＢＵＳＵ・・・上位算術論理演算ユニット入力バス、ＡＩＢＵＳＬ・・・下位算術論理演算ユニット入力バス、ＡＯＢＵＳＵ・・・上位算術論理演算ユニット出力バス、ＡＯＢＵＳＬ・・・下位算術論理演算ユニット出力バス、ＳＣａｉ，ＳＣａｏ，ＳＣｅｄ・・・セレクタ制御信号、ＳＡＣ・・・算術論理演算ユニット制御信号。
【図１】
0003628361.tif 000002
【図２】
0003628361.tif 000003
【図３】
0003628361.tif 000004
【図４】
0003628361.tif 000005
【図５】
0003628361.tif 000006
【図６】
0003628361.tif 000007