(57)【特許請求の範囲】
【請求項１】
アドレス生成回路を有する中央処理回路と、
上記アドレス生成回路から共通のアドレスがそれぞれ供給される第１のメモリ及び第２のメモリと、
上記第１のメモリ及び上記第２のメモリに結合された第１の演算回路と、
上記第１のメモリ及び上記第２のメモリに結合された第２の演算回路とを同一の半導体基板上に構成し、
上記第１及び上記第２のメモリの一方から上記第１の演算回路へデータを供給し、上記第１の演算回路で演算動作を行い、上記第２の演算回路は動作停止する第１の動作モードと、
上記第１のメモリから上記第１の演算回路へデータを供給し、上記第２のメモリから上記第２の演算回路へデータを供給し、上記第１の演算回路及び上記第２の演算回路で演算動作を行う第２の動作モードとを有することを特徴とするマイクロコンピュータ。
【請求項２】
上記第１の動作モードにおいては上記第１のメモリ及び上記第２のメモリは互いに異なる空間にアドレスマッピングされ、
上記第２の動作モードにおいては上記第１のメモリ及び上記第２のメモリは同じ空間にアドレスマッピングされることを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項３】
上記第１のメモリ及び上記第２のメモリはそれぞれアドレスデコーダ及び制御回路を有し、
上記第１のメモリ及び上記第２のメモリへ供給される上記共通のアドレスは複数のビットから構成され、上記制御回路のそれぞれには上記共通のアドレスの一部のビットが入力され、上記アドレスデコーダには上記一部のビット以外の他のビットが入力され、
上記第１の動作モードの場合には上記第１のメモリ又は上記第２のメモリの一方が上記一部のビットに基づいて選択され、
上記選択されたメモリに含まれる制御回路は、上記他のビットに対応するデータを供給させ、
上記第２の動作モードの場合には上記他のビットに対応するデータを上記第１のメモリ及び上記第２のメモリから供給させることを特徴とする請求項１又は請求項２に記載のマイクロコンピュータ。
【請求項４】
上記第１の動作モード及び上記第２の動作モードのいずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備することを特徴とする請求項１乃至請求項３のいずれかに記載のマイクロコンピュータ。
【請求項５】
上記いずれの動作モードであるかの情報は、上記モード状態を設定するモード選択命令をデコードした結果生成される制御信号、又は、割り込み要求によって生成される制御信号に基づいて設定されることを特徴とする請求項４に記載のマイクロコンピュータ。
【請求項６】
上記第１の演算回路及び上記第２の演算回路のそれぞれは演算回路外部へデータを選択的に出力するための出力手段を具備し、
上記第１の動作モードにおいて上記第２の演算回路の出力手段は上記第２の演算回路外部へのデータ出力を禁止することを特徴とする請求項１乃至請求項４のいずれかに記載のマイクロコンピュータ。
【請求項７】
上記第１の演算回路及び上記第２の演算回路のそれぞれは、乗算器と算術論理演算器を含んでなることを特徴とする請求項１乃至請求項４、請求項６のいずれかに記載のマイクロコンピュータ。
【請求項８】
上記第１の演算回路及び上記第２の演算回路のそれぞれは複数のレジスタから成るレジスタファイルを具備し、
上記レジスタファイルに格納されるそれぞれのデータのビット長は２ｎビット
、  上記乗算器の一入力データのビット長はｎビット、
上記算術論理演算器の一入力データのビット長は２ｎビットであることを特徴とする請求項７に記載のマイクロコンピュータ。
【請求項９】
上記レジスタファイルに格納データされるそれぞれのデータのビット長は３２ビット、
上記乗算器の一入力データのビット長は１６ビット、
上記算術論理演算器の一入力データのビット長は１６ビットであることを特徴とする請求項８に記載のマイクロコンピュータ。
【請求項１０】
上記第１の演算回路及び上記第２の演算回路のそれぞれは演算回路外部からデータを選択的に上記レジスタファイルへ伝達する伝達手段を具備し、
上記第１の動作モードにおいて上記第２の演算回路は上記レジスタファイルへのデータの伝達を禁止することを特徴とする請求項８に記載のマイクロコンピュータ。
【請求項１１】
上記第１の演算回路及び上記第２の演算回路のそれぞれは上記乗算器及び上記算術論理演算器の少なくとも一方を動作停止させる手段を具備し、
上記第１の動作モードにおいて、上記第２の演算回路は上記乗算器及び算術論理演算器の少なくとも一方の動作を停止することを特徴とする請求項７又は請求項１０に記載のマイクロコンピュータ。
【請求項１２】
上記第１の演算回路及び上記第２の演算回路のうち演算動作をした演算回路から演算結果のデータを上記第１のメモリ及び上記第２のメモリのいずれか一方に伝達することを特徴とする請求項１１に記載のマイクロコンピュータ。
【請求項１３】
上記第１の動作モードにおいて、上記第１の演算回路が演算動作のデータを供給した上記第１のメモリ及び上記第２のメモリの一方のメモリとは異なる他方のメモリへ演算結果のデータを伝達することを特徴とする請求項１２に記載のマイクロコンピュータ。
【請求項１４】
上記第１及び上記第２のメモリの一方から上記第２の演算回路へデータを供給し、上記第２の演算回路で演算動作を行い、上記第１の演算回路は動作停止する第３の動作モードを有することを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項１５】
アドレス生成回路を含む中央処理回路と、
上記アドレス生成回路からアドレス供給されるアドレスバスと、
上記アドレスバスに接続される第１のメモリと、
上記アドレスバスに接続される第２のメモリと、
上記第１のメモリと上記第２のメモリに接続される第１のデータバスと、
上記第１のメモリと上記第２のメモリに接続される第２のデータバスと、
上記第１のデータバスに接続される第１の演算回路と、
上記第２のデータバスに接続される第２の演算回路とを具備して成り、
上記第１のメモリ及び上記第２のメモリの一方から上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する第１の動作モードと、
上記第１のメモリから上記第１の演算回路へデータが供給され、上記第２のメモリから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる第２の動作モードとを有することを特徴とするマイクロコンピュータ。
【請求項１６】
上記第１のメモリ及び上記第２のメモリはそれぞれアドレスデコーダ及び制御回路を有し、
上記第１のメモリ及び上記第２のメモリへ供給される上記共通のアドレスは複数のビットから構成され、上記制御回路のそれぞれには上記共通のアドレスの一部のビットが入力され、上記アドレスデコーダには上記一部のビット以外の他のビットが入力され、
上記第１の動作モードの場合には上記第１のメモリ又は上記第２のメモリの一方が上記一部のビットに基づいて選択され、
上記選択されたメモリに含まれる制御回路は、上記他のビットに対応するデータを供給させ、
上記第２の動作モードの場合には上記他のビットに対応するデータを上記第１のメモリ及び上記第２のメモリから供給させることを特徴とする請求項１５に記載のマイクロコンピュータ。
【請求項１７】
上記第１の動作モード及び上記第２の動作モードのいずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備することを特徴とする請求項１５又は請求項１６に記載のマイクロコンピュータ。
【請求項１８】
上記第１の動作モードにおいて、上記手段によって保持された情報に基づいて上記第１のデータバスを介して上記第１の演算回路へデータを供給することを特徴とする請求項１７に記載のマイクロコンピュータ。
【請求項１９】
上記第１の演算回路及び上記第２の演算回路のそれぞれはデータを選択的に上記第１及び上記第２データバスへ出力するための出力手段を具備し、
上記第１の動作モードにおいて上記第２の演算回路の出力手段は上記選択されたデータバスへのデータ出力を禁止することを特徴とする請求項１５乃至請求項１７のいずれかに記載のマイクロコンピュータ。
【請求項２０】
上記第１の演算回路及び上記第２の演算回路のそれぞれは、乗算器と算術論理演算器を含んでなることを特徴とする請求項１５乃至請求項１７、請求項１９のいずれかに記載のマイクロコンピュータ。
【請求項２１】
上記第１の演算回路及び上記第２の演算回路のそれぞれは複数のレジスタから成るレジスタファイルと、上記第１及び上記第２のデータバスから選択的にデータを上記レジスタファイルへ伝達する伝達手段とを具備し、
上記第１の動作モードにおいて上記第２の演算回路は上記レジスタファイルへのデータの伝達を禁止することを特徴とする請求項２０に記載のマイクロコンピュータ。
【請求項２２】
上記第１の演算回路及び上記第２の演算回路のそれぞれは上記乗算器及び上記算術論理演算器の少なくとも一方を動作停止させる手段を具備し、
上記第１の動作モードにおいて、上記第２の演算回路は上記乗算器及び算術論理演算器の少なくとも一方の動作を停止することを特徴とする請求項２０又は請求項２１に記載のマイクロコンピュータ。
【請求項２３】
中央処理回路と、
上記中央処理回路が出力するアドレスによってアクセスされる複数のメモリと、
上記複数のメモリの一つから供給されるデータに基づいて演算動作を行う第１の演算回路及び第２の演算回路とを具備し、
上記第１の演算回路及び上記第２の演算回路の一方が上記複数のメモリの一つから供給されるデータを受けて演算をし、他方が演算動作を停止する第１の動作モードと、
上記第１の演算回路が上記複数のメモリの一つから供給されるデータを受け、上記第２の演算回路が上記複数のメモリの別の一つから供給されるデータを受けて、上記第１の演算回路及び上記第２の演算回路の両方が演算動作を行う第２の動作モードとを有し、
上記第１の動作モード、上記第２の動作モードのいずれの場合にも、共通に用いられる命令セットを有することを特徴とするマイクロコンピュータ。
【請求項２４】
上記いずれの動作モードであるかの情報を保持する手段を有することを特徴とする請求項２３に記載のマイクロコンピュータ。
【請求項２５】
上記命令セットは、上記保持する情報を書き換える命令を含むことを特徴とする請求項２４に記載のマイクロコンピュータ。
【請求項２６】
上記中央処理回路はアドレス生成回路を含み、
上記マイクロコンピュータは、
上記アドレス生成回路からアドレス供給されるアドレスバスと、
上記アドレスバスに接続される第１のメモリと、
上記アドレスバスに接続される第２のメモリと、
上記第１のメモリと上記第２のメモリに接続される第１のデータバスと、
上記第１のメモリと上記第２のメモリに接続される第２のデータバスとを具備し、
上記第１の演算回路は上記第１のデータバスに接続され、
上記第２の演算回路は上記第２のデータバスに接続されることを特徴とする請求項２３乃至請求項２５のいずれかに記載のマイクロコンピュータ。
【請求項２７】
アドレス生成回路を有する中央処理回路と、
上記アドレス生成回路から共通のアドレスがそれぞれ供給される第１のメモリ
、第２のメモリ、第３のメモリ及び第４のメモリと、
上記第１のメモリ乃至上記第４のメモリに結合された第１の演算回路と、
上記第１のメモリ乃至上記第４のメモリに結合された第２の演算回路とを同一の半導体基板上に構成し、
上記第１のメモリ乃至上記第４のメモリのいずれか一つ又は任意の２つから上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ
、上記第２の演算回路は動作停止する第１の動作モードと、
上記第１のメモリ乃至上記第４のメモリのいずれか一つから上記第１の演算回路へデータが供給され、上記第１の演算回路へデータを供給するメモリ以外の残りのいずれか一つから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる、若しくは、上記第１乃至第４のメモリの任意の２つから上記第１の演算回路へデータが供給され、残りの２つから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる第２の動作モードとを有することを特徴とするマイクロコンピュータ。
【請求項２８】
アドレス生成回路を含む中央処理回路と、
上記アドレス生成回路からアドレス供給される第１のアドレスバス、第２のアドレスバス及び第３のアドレスバスと、
上記第１のアドレスバス及び上記第２のアドレスバスに接続される第１のメモリと、
上記第１のアドレスバス及び上記第２のアドレスバスに接続される第２のメモリと、
上記第１のアドレスバス及び上記第３のアドレスバスに接続される第３のメモリと、
上記第１のアドレスバス及び上記第３のアドレスバスに接続される第４のメモリと、
上記第１のメモリ乃至上記第４のメモリに接続される第１のデータバスと、
上記第１のメモリ乃至上記第４のメモリに接続される第２のデータバスと、
上記第１のメモリと上記第２のメモリに接続される第３のデータバスと、
上記第１のメモリと上記第２のメモリに接続される第４のデータバスと、
上記第３のメモリと上記第４のメモリに接続される第５のデータバスと、
上記第３のメモリと上記第４のメモリに接続される第６のデータバスと、
上記第１のデータバス、上記第３のデータバス及び上記第５のデータバスに接続された第１の演算回路と、
上記第２のデータバス、上記第４のデータバス及び上記第６のデータバスに接続された第２の演算回路とを具備して成り、
上記第３のデータバス又は上記第５のデータバスに接続されたメモリのうちいずれか一つから上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する、
若しくは、上記第３のデータバスに接続されたメモリのうちどちらか一つ及び上記第５のデータバスに接続されたメモリのうちどちらか一つから上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する第１の動作モードと、
上記第３のデータバス又は上記第５のデータバスを介して上記第１乃至第４のメモリのうちいずれか一つから上記第１の演算回路へデータが供給され、上記第４のデータバス又は上記第６のデータバスを介して上記第１乃至第４のメモリのうち上記第１の演算回路へデータを供給していないメモリから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる、
若しくは、上記第３のデータバスを介して上記第１のメモリ又は上記第２のメモリの一方、及び、上記第５のデータバスを介して上記第３のメモリ又は上記第４のメモリの一方から上記第１の演算回路へデータが供給され、上記第４のデータバスを介して上記第１のメモリ又は上記第２のメモリの他方、及び、上記第６のデータバスを介して上記第３のメモリ又は上記第４のメモリの他方から上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる第２の動作モードとを有することを特徴とするマイクロコンピュータ。
【請求項２９】
上記第１の動作モード及び上記第２の動作モードのいずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備し、
上記第１のメモリ及び上記第２のメモリは、上記モード設定回路が保持する情報に基づいて、データの伝達を上記第１のデータバス及び上記第３のデータバスで行うか、上記第２のデータバス及び上記第４のデータバスで行うかを選択し、
上記第３のメモリ及び上記第４のメモリは、上記モード設定回路が保持する情報に基づいて、データの伝達を上記第１のデータバス及び上記第５のデータバスで行うか、上記第２のデータバス及び上記第６のデータバスで行うかを選択することを特徴とする請求項２８に記載のマイクロコンピュータ。
【請求項３０】
アドレス生成回路を含む中央処理回路と、
上記アドレス生成回路からアドレス供給される第１のアドレスバス、第２のアドレスバス及び第３のアドレスバスと、
上記第１のアドレスバス及び上記第２のアドレスバスに接続される第１のメモリと、
上記第１のアドレスバス及び上記第２のアドレスバスに接続される第２のメモリと、
上記第１のアドレスバス及び上記第３のアドレスバスに接続される第３のメモリと、
上記第１のアドレスバス及び上記第３のアドレスバスに接続される第４のメモリと、
上記第１のメモリ乃至上記第４のメモリに接続される第１のデータバスと、
上記第２のメモリと上記第４のメモリに接続される第２のデータバスと、
上記第１のメモリと上記第２のメモリに接続される第３のデータバスと、
上記第２のメモリに接続される第４のデータバスと、
上記第３のメモリと上記第４のメモリに接続される第５のデータバスと、
上記第４のメモリに接続される第６のデータバスと、
上記第１のデータバス、上記第３のデータバス及び上記第５のデータバスに接続された第１の演算回路と、
上記第２のデータバス、上記第４のデータバス乃至上記第６のデータバスに接続された第２の演算回路とを具備して成り、
上記第３のデータバス又は上記第５のデータバスに接続されたメモリのうちいずれか一つから上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する、
若しくは、上記第３のデータバスに接続されたメモリのうちどちらか一つ及び上記第５のデータバスに接続されたメモリのうちどちらか一つから上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する第１の動作モードと、
上記第３のデータバスを介して上記第１のメモリから上記第１の演算回路へデータが供給され、上記第４のデータバスを介して上記第２のメモリから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる、
上記第５のデータバスを介して上記第３のメモリから上記第１の演算回路へデータが供給され、上記第６のデータバスを介して上記第４のメモリから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる、
上記第３のデータバスに接続されたメモリのうちいずれか一つから上記第１の演算回路へデータが供給され、上記第５のデータバスに接続されたメモリのうちいずれか一つから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる、
若しくは、上記第３のデータバスを介して上記第１のメモリ及び上記第５のデータバスを介して上記第３のメモリから上記第１の演算回路へデータが供給され、上記第４のデータバスを介して上記第２のメモリ及び上記第６のデータバスを介して上記第４のメモリから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる第２の動作モードとを有することを特徴とするマイクロコンピュータ。
【請求項３１】
上記第１のモード、上記第２のモードのいずれの場合にも、共通に用いられる命令セットを有することを特徴とする請求項２７乃至請求項３０のいずれかに記載のマイクロコンピュータ。
【請求項３２】
上記いずれの動作モードであるかの情報を保持する手段を有することを特徴とする請求項３１に記載のマイクロコンピュータ。
【請求項３３】
上記命令セットは、上記保持する情報を書き換える命令を含むことを特徴とする請求項３２に記載のマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は複数のデータ演算回路を搭載したマイクロコンピュータに有効な技術に関する。
【０００２】
【従来の技術】
従来より処理性能向上のために、特定の演算処理を少ないサイクル数で実行する積和演算器を搭載した１チップマイクロコンピュータがある。日経エレクトロニクス 1992.11.23 (no.568) ９９頁から１１２頁に記載されている、いわゆるRISCプロセッサでは、ディジタル信号処理で頻繁に実行される積和演算処理を少ないサイクル数で実行できるように、汎用のＣＰＵの他に積和演算モジュールを搭載している。
【０００３】
さらに、より高性能化を目的として同じ処理を同時に複数実行できるような積和演算器を備える例も見られる。
【０００４】
例えば公知文献特開平６―８３６２４号公報では、データメモリと演算部が一組となった第１と第２の演算系を備え、命令デコーダからの制御信号によって、第１及び第２の演算系の同時処理並びに必要に応じた独立処理が可能となっている。
【０００５】
別の公知文献特開平３ー２８２９２６号公報では、データ演算器モジュールとして浮動小数点演算装置を備え、モード切替によって単精度演算／倍精度演算／単精度２並列演算の各機能を共通の演算器で実現している。
【０００６】
また、別の公知文献特開平３ー９４３２８号公報では、乗算器について、同じハードウェアで単精度演算／倍精度演算／単精度２並列演算の各機能を実現する例が示されている。
【０００７】
上記３つの公開公報に記載の技術は、単精度単独演算や単精度の２並列演算機能も共通のハードウェアで実現し、高性能化を図ると同時にハードウェアの増大を抑制しようとするものである。
【０００８】
【発明が解決しようとする課題】
しかしながら、特開平６―８３６２４号公報に記載の発明では、第１演算系と第２演算系が独立しているので、第１データメモリのデータを第２の演算器で処理することはできない。同様に第２データメモリのデータを第１の演算器で処理することはできない。また、他２つの上記公開公報は単精度２並列演算機能に関する手段を開示しているが、演算に必要なソースデータの供給手段について開示がなく、演算結果をメモリに格納する場合の具体的な手段についても開示はない。
【０００９】
このため、上記３つの公開公報に開示された発明では、データ転送がネックとなって演算に必要なソースデータを遅滞なく演算手段へ供給する上で問題があり、ＳＩＭＤ（Single Instruction Multiple Data）型並列演算機能を有するマイクロコンピュータの並列演算性能を最大限に発揮させることはできない。また、データ転送を行うに際しては、単独演算動作と並列演算動作との命令体系上の整合性を保持することも重要である。
【００１０】
したがって、本願発明の目的は、通常の単独演算動作と、ＳＩＭＤ型の並列演算動作との間の命令体系上の整合性を保持しつつ、演算に必要なソースデータを遅滞なく供給することを可能にしたマイクロコンピュータを提供することにある。
【００１１】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要は下記の通りである。
【００１２】
すなわち本発明のマイクロコンピュータは、アドレス生成回路を有する中央処理回路と、
上記アドレス生成回路から共通のアドレスがそれぞれ供給される第１のメモリ及び第２のメモリと、上記第１のメモリ及び上記第２のメモリに結合された第１の演算回路と、上記第１のメモリ及び上記第２のメモリに結合された第２の演算回路とを同一の半導体基板上に構成され、上記第１及び上記第２のメモリの一方から上記第１の演算回路へデータを供給し、上記第１の演算回路で演算動作を行い、上記第２の演算回路は動作停止する第１の動作モードと、上記第１のメモリから上記第１の演算回路へデータを供給し、上記第２のメモリから上記第２の演算回路へデータを供給し、上記第１の演算回路及び上記第２の演算回路で演算動作を行う第２の動作モードとを有する。
【００１３】
上記した手段によれば、第１の動作モードにおいて上記第１及び上記第２のメモリの一方から上記第１の演算回路へデータを供給し、上記第１の演算回路で演算動作を行い、上記第２の演算回路は動作停止することにより、単独の演算を実行できる。また、演算回路にデータを供給するメモリが２つあるので、同集積規模のメモリを使用し従来技術と比較した場合、演算回路が演算データとして扱える量が２倍の量に増やすことができる。
【００１４】
第２の動作モードにおいて、上記第１のメモリから上記第１の演算回路へデータを供給し、上記第２のメモリから上記第２の演算回路へデータを供給することにより、上記第１の演算回路及び上記第２の演算回路で演算動作を行うことにより複数並列演算を実行できる。この場合、第１のメモリ及び第２のメモリは１つのアドレスによってアクセスされる。
【００１５】
より具体的なメモリ構成としては、上記第１の動作モードにおいては上記第１のメモリ及び上記第２のメモリは互いに異なる空間にアドレスマッピングされ、上記第２の動作モードにおいては上記第１のメモリ及び上記第２のメモリは同じ空間にアドレスマッピングされるように切り換えればよい。
【００１６】
この場合、上記第１の動作モードの場合には上記第１のメモリ及び上記第２のメモリは互いに異なる空間にアドレスマッピングされているので、該当するアドレスに対応するデータは上記第１のメモリ及び上記第２のメモリのいずれかに一つだけあり、それが上記第１の演算回路へ供給される。一方、上記第２の動作モードの場合には上記第１のメモリ及び上記第２のメモリは同じ空間にアドレスマッピングされているので、該当するアドレスに対応するデータは上記第１のメモリ及び上記第２のメモリにそれぞれ一つづつあり、それらが上記第１のメモリからは上記第１の演算回路へ、上記第２のメモリからは上記第２の演算回路へ供給される。
【００１７】
上記動作モードによるメモリのアドレスマッピングの切り換えは様々な方法あるが、具体的には、例えば次のような手段が考えられる。
【００１８】
すなわち、メモリの構成として、上記第１のメモリ及び上記第２のメモリはそれぞれアドレスデコーダ及び制御回路を有し、上記第１のメモリ及び上記第２のメモリへ供給される上記共通のアドレスは複数のビットから構成され、上記制御回路のそれぞれには上記共通のアドレスの一部のビットが入力され、上記アドレスデコーダには上記一部のビット以外の他のビットが入力され、上記第１の動作モードの場合には上記第１のメモリ又は上記第２のメモリの一方が上記一部のビットに基づいて選択され、上記選択されたメモリに含まれる制御回路は、上記他のビットに対応するデータを供給させ、上記第２の動作モードの場合には上記他のビットに対応するデータを上記第１のメモリ及び上記第２のメモリから供給させる。
【００１９】
上記具体的な手段において、上記第１の動作モードでは、上記一部のビットによって第１のメモリ又は上記第２のメモリの一方を選択するので、上記他のビットに対応するデータは選択された一方のメモリのみから出力される。また、上記第２の動作モードでは、上記一部のビットによるメモリの選択は行われず、上記他のビットに対応するデータは上記第１のメモリ及び上記第２のメモリからそれぞれ出力される。このようにして上記動作モードによるメモリのアドレスマッピングの切り換えを実現することができる。上記一部のビットは具体的にはアドレスの上位の１ビットであるが、下位１ビットでもよいし、その他のビットを用いてもよいし、複数のビットでもよいことは言うまでもない。
【００２０】
モード切り換えに着目した場合、上記第１の動作モード及び上記第２の動作モードのいずれの動作モードであるとの情報を上記中央処理回路からの制御命令に含ませてメモリ、演算回路といった各モジュールに命令を実行する度に伝達してもよい。しかし、他のより具体的実現手段として、上記第１の動作モード及び上記第２の動作モードのいずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備するようにし、上記保持された情報に基づいた制御信号を上記モード設定回路から上記各モジュールに伝達することで制御を行う方がより好ましい。
【００２１】
上記モード情報を含んだ命令を実行する度に上記モード情報を伝達するためにはモード毎に命令がなければならないが、上記いずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備すれば、上記いずれの動作モードであるかの情報を指定するモード選択命令と両方のモードに共通の演算命令があればよいからである。つまり、命令セット中の命令数を少なくできる。例えば、第１のモード及び第２のモードのそれぞれに演算命令が５０命令あったとすると、総命令数は１００になるが、上記モード選択命令と演算命令が別々にあった場合、モード選択命令が２で、演算命令が５０命令あるので命令総数が５２となり、大幅に命令数を少なくできる。命令数が少なくなることにより考慮すべき命令が少なくなるので、プログラム作成時の負担が軽くなる。
【００２２】
演算回路が停止することに着目したより具体的な手段としては、上記第１の演算回路及び上記第２の演算回路のそれぞれは演算回路外部へデータを選択的に出力するための出力手段を具備し、上記第１の動作モードにおいて上記第２の演算回路の出力手段は上記第２の演算回路外部へのデータ出力を禁止することによればよい。
【００２３】
これにより停止している上記第２の演算回路からのデータが上記第１の演算回路へ供給されるデータに悪影響を及ぼすことを防止できる。
【００２４】
演算結果の書き戻しに関しては、データを供給したメモリに書き戻してもよいが、上記第１の動作モードにおいて、上記第１の演算回路が演算動作するためのデータを供給した上記第１のメモリ及び上記第２のメモリの一方のメモリとは異なる他方のメモリへ演算結果のデータを伝達するようにしてもよい。
【００２５】
モードの種類に関しては、上記第１の動作モード及び上記第２の動作モードだけではなく、上記第１及び上記第２のメモリの一方から上記第２の演算回路へデータを供給し、上記第２の演算回路で演算動作を行い、上記第１の演算回路は動作停止する第３の動作モードを有してもよい。
【００２６】
メモリ、演算回路といった上記各モジュール間の相互結合について着目したより具体的な実現手段としては、本発明のマイクロコンピュータは、アドレス生成回路を含む中央処理回路と、上記アドレス生成回路からアドレス供給されるアドレスバスと、上記アドレスバスに接続される第１のメモリと、上記アドレスバスに接続される第２のメモリと、上記第１のメモリと上記第２のメモリに接続される第１のデータバスと、上記第１のメモリと上記第２のメモリに接続される第２のデータバスと、上記第１のデータバスに接続される第１の演算回路と、上記第２のデータバスに接続される第２の演算回路とを具備して成り、上記第１のメモリ及び上記第２のメモリの一方から上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する第１の動作モードと、上記第１のメモリから上記第１の演算回路へデータが供給され、上記第２のメモリから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる第２の動作モードとを有する。
【００２７】
上記手段によれば、例えば上記第１の演算回路へのデータ供給は第１のデータバスを経由させ、上記第２の演算回路へのデータ供給は第２のデータバスを経由させるといったように演算回路毎にデータバスを独立にすることができ、データ転送を効率よく行うことができる。
【００２８】
命令セットに着目したより具体的な手段としては、マイクロコンピュータは、中央処理回路と、上記中央処理回路が出力するアドレスによってアクセスされる複数のメモリと、上記複数のメモリの一つから供給されるデータに基づいて演算動作を行う第１の演算回路及び第２の演算回路とを具備し、上記第１の演算回路及び上記第２の演算回路の一方が演算をし、他方が演算動作を停止する第１の動作モードと、上記第１の演算回路及び上記第２の演算回路の両方が演算動作を行う第２の動作モードとを有し、上記第１のモード、上記第２のモードのいずれの場合にも、共通に用いられる命令セットを有する。
【００２９】
既述したように、上記第１のモード、上記第２のモードのいずれの場合にも、共通に用いられる命令セットをもつことで総命令数を少なくなり、考慮すべき命令が少なくなるので、プログラマーなどがプログラムする際の負担が軽くなる。
【００３０】
以上の手段の説明においてはメモリ数が２の場合を例に説明したが、本発明はこれに限られるものではなく、メモリの数が３以上になってもよい。
【００３１】
一例としてメモリ数が４の場合の具体的実現手段として、本発明のマイクロコンピュータは、アドレス生成回路を有する中央処理回路と、上記アドレス生成回路から共通のアドレスがそれぞれ供給される第１のメモリ、第２のメモリ、第３のメモリ及び第４のメモリと、上記第１のメモリ乃至上記第４のメモリに結合された第１の演算回路と、上記第１のメモリ乃至上記第４のメモリに結合された第２の演算回路とを同一の半導体基板上に構成し、上記第１のメモリ乃至上記第４のメモリのいずれか一つ又は任意の２つから上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する第１の動作モードと、上記第１のメモリ乃至上記第４のメモリのいずれか一つから上記第１の演算回路へデータが供給され、上記第１の演算回路へデータを供給するメモリ以外の残りのいずれか一つから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる、若しくは、上記第１乃至第４のメモリの任意の２つから上記第１の演算回路へデータが供給され、残りの２つから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる第２の動作モードとを有する。
【００３２】
上述の手段によれば、アドレス生成回路から同時にアドレスを２つ生成することによって、１つの演算回路に２つのデータを供給することができる。当然単独演算／複数並列演算を切り換え実行できるので、アドレスマッピングにより、４つのメモリから上記２つのアドレスに該当する４つのデータを２つの演算回路へそれぞれ２つずつ供給して並列演算させることもできる。
【００３３】
上記第１の動作モードにおいて、上記第１のメモリ乃至上記第４のメモリは互いに異なる空間にアドレスマッピングされている場合、該当するアドレスに対応するデータは上記第１のメモリ乃至上記第４のメモリのいずれかに１つだけあり、それを上記第１の演算回路へ供給し演算できる。また、上記第１のメモリ及び上記第２のメモリの組が同じ空間にアドレスマッピングされ、上記第３のメモリ及び上記第４のメモリの組が同じ空間にアドレスマッピングされている場合、該当するアドレスに対応するデータは各組にそれぞれ一つづつあり、それら２つを上記第１の演算回路へ供給し演算できる。
【００３４】
一方、上記第２の動作モードにおいては、上記第１のメモリ及び上記第２のメモリの組が同じ空間にアドレスマッピングされ、上記第３のメモリ及び上記第４のメモリの組が同じ空間にアドレスマッピングされている。よって、１つのアドレスがアドレス生成回路から生成された場合、その該当するアドレスに対応するデータは、例えば、上記第１のメモリ及び上記第２のメモリにそれぞれ一つあるならば、上記第１のメモリからは上記第１の演算回路へ、上記第２のメモリからは上記第２の演算回路へ供給し演算できる。また、２つのアドレスがアドレス生成回路から生成された場合、２つのアドレスに対応するデータは上記第１のメモリ及び上記第２のメモリの組にそれぞれ一つ、上記第３のメモリ及び上記第４のメモリの組にそれぞれ一つあるので、上記第１のメモリ及び上記第３のメモリからのデータを上記第１の演算回路へ供給し、上記第２のメモリ及び上記第４のメモリからのデータを上記第２の演算回路へ供給し、各演算回路にてそれぞれ演算することができる。
【００３５】
すなわち、各演算回路に供給されるデータは上記第１のメモリ乃至上記第４のメモリのいずれか１つ又は２つから供給されるのである。尚、各モードにおける演算命令によっては、各演算回路内のレジスタに格納されているデータをソースとして演算する場合等があり、その場合には上記第１乃至上記第４のメモリのいずれからもデータを供給しないで演算をすることがあることは言うまでもない。また、先にメモリ２つの例で説明した各具体的手段がメモリ４つの場合にも同様に適用されることは言うまでもない。
【００３６】
メモリ、演算回路といった上記各モジュール間の相互結合について着目したより具体的な手段としては、本発明のマイクロコンピュータは、アドレス生成回路を含む中央処理回路と、上記アドレス生成回路からアドレス供給される第１のアドレスバス、第２のアドレスバス及び第３のアドレスバスと、上記第１のアドレスバス及び上記第２のアドレスバスに接続される第１のメモリと、上記第１のアドレスバス及び上記第２のアドレスバスに接続される第２のメモリと、上記第１のアドレスバス及び上記第３のアドレスバスに接続される第３のメモリと、上記第１のアドレスバス及び上記第３のアドレスバスに接続される第４のメモリと、上記第１のメモリ乃至上記第４のメモリに接続される第１のデータバスと、上記第１のメモリ乃至上記第４のメモリに接続される第２のデータバスと、上記第１のメモリと上記第２のメモリに接続される第３のデータバスと、上記第１のメモリと上記第２のメモリに接続される第４のデータバスと、上記第３のメモリと上記第４のメモリに接続される第５のデータバスと、上記第３のメモリと上記第４のメモリに接続される第６のデータバスと、上記第１のデータバス、上記第３のデータバス及び上記第５のデータバスに接続された第１の演算回路と、上記第２のデータバス、上記第４のデータバス及び上記第６のデータバスに接続された第２の演算回路とを具備して成り、上記第３のデータバス又は上記第５のデータバスに接続されたメモリのうちいずれか一つから上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する、若しくは、上記第３のデータバスに接続されたメモリのうちどちらか一つ及び上記第５のデータバスに接続されたメモリのうちどちらか一つから上記第１の演算回路へデータが供給され、上記第１の演算回路で演算動作が行われ、上記第２の演算回路は動作停止する第１の動作モードと、上記第３のデータバス又は上記第５のデータバスを介して上記第１乃至第４のメモリのうちいずれか一つから上記第１の演算回路へデータが供給され、上記第４のデータバス又は上記第６のデータバスを介して上記第１乃至第４のメモリのうち上記第１の演算回路へデータを供給していないメモリから上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる、若しくは、上記第３のデータバスを介して上記第１のメモリ又は上記第２のメモリの一方、及び、上記第５のデータバスを介して上記第３のメモリ又は上記第４のメモリの一方から上記第１の演算回路へデータが供給され、上記第４のデータバスを介して上記第１のメモリ又は上記第２のメモリの他方、及び、上記第６のデータバスを介して上記第３のメモリ又は上記第４のメモリの他方から上記第２の演算回路へデータが供給され、上記第１の演算回路及び上記第２の演算回路で演算動作が行われる第２の動作モードとを有する。
【００３７】
上記手段によれば、例えば上記第１の演算回路へのデータ供給は上記第１のメモリからのデータは上記第３のデータバスを、上記第３のメモリからのデータは上記第５のデータバスを経由させ、上記第２の演算回路へのデータ供給は上記第２のメモリからのデータは上記第４のデータバスを、上記第４のメモリからのデータは上記第６のデータバスを経由させるといったようにメモリから演算回路へのデータ供給の際に経由するデータバスを独立にすることができる。
【００３８】
上記各モジュールの接続は上述の通りでなくともよく、他の具体的実現手段としては、上記第１のメモリは上記第１のデータバス及び上記第３のデータバスにのみ接続され、上記第３のメモリは上記第１のデータバス及び上記第５のデータバスにのみ接続され、上記第２のデータ演算回路は上記第２、第４、第６のデータバスに加えて上記第５のデータバスにも接続されるようにしてもよい。尚、他の接続は先の手段と同じである。
【００３９】
上記他の手段によって、上記第１及び上記第２のメモリから並行して上記第１及び上記第２のデータ演算回路へデータを供給する場合、上記第１のメモリからは上記第３のデータバスを介して上記第１のデータ演算回路へ供給し、上記第２のメモリからは上記第４のデータバスを介して上記第２のデータ演算回路へ供給することになる。したがって、上記第１のメモリから上記第４のデータバスを介し、上記第２のメモリから上記第３のデータバスを介してデータ供給しない。すなわち、２つのデータ演算回路へ並行してデータ供給する際に使用するデータバスの選択をしない点で先の実現手段とは異なる。
【００４０】
【発明の実施の形態】
〔第１の実施例のマイクロコンピュータの全体構成〕
図１は本発明を適用した１チップマイクロコンピュータのブロック図の一例である。図中、ＬＳＩ１は本発明を適用したマイクロコンピュータ、ＣＰＵ１は命令をフェッチ、デコードして所要の制御信号を生成する回路を包含した中央処理回路、ＣＦＣＨ１はＣＰＵ１内部に含まれている命令フェッチ回路、ＣＤＥＣはＣＰＵ１内部に含まれている命令デコード回路、ＣＮＴはＣＤＥＣで生成された制御信号群、ＭＯＤＥ１はマイコンＬＳＩ１を制御信号によって指示されたモードに設定し、その状態を保持するモード設定回路、ＭＤ［１：０］はＭＯＤＥ１から必要なモジュールへ現在のモード状態を伝えるモード信号、ＣＡＤＲ１はＣＰＵ１内部に含まれ、指示されたアドレスを生成するアドレス生成回路、ＩＡＢはＣＡＤＲ１で生成されたアドレスが出力されるアドレスバス、ＭＥＭ１１はチップ上に内蔵された第１のオンチップメモリ、ＭＥＭ１２はチップ上に内蔵された第２のオンチップメモリ、ＥＸ１１はデータ演算を実行する第１のデータ演算回路、ＥＸ１２はデータ演算を実行する第２のデータ演算回路、ＩＤＢ１はＭＥＭ１１、ＭＥＭ１２、ＥＸ１１、ＭＯＤＥ１及びバスインタフェース回路ＢＩＦ１に接続され、データ転送に使用される第１のデータバス、ＩＤＢ２はＭＥＭ１１、ＭＥＭ１２、ＥＸ１２、ＭＯＤＥ１及びバスインタフェース回路ＢＩＦ１に接続され、データ転送に使用される第２のデータバス、ＢＩＦ１はＩＤＢ１、ＩＤＢ２各バスと周辺モジュールに接続されている周辺モジュール用データバスＰＤＢとのデータ受渡し及び各周辺モジュールへのデータ転送制御信号を生成するバス・インタフェース回路、ＩＲＱは割り込み処理回路、ＰＩＯは外部とのパラレルインタフェース回路、ＳＩＯ１は第１のシリアルインタフェース回路、ＳＩＯ２は第２のシリアルインタフェース回路、ＴＩＭはタイマ回路、ＩＣＴはＢＩＦ１で生成されるＩＲＱモジュールとのデータ転送を制御する信号、ＰＣＴはＢＩＦ１で生成されるＰＩＯモジュールとのデータ転送を制御する信号、Ｓ１ＣＴはＢＩＦ１で生成されるＳＩＯ１モジュールとのデータ転送を制御する信号、Ｓ２ＣＴはＢＩＦ１で生成されるＳＩＯ２モジュールとのデータ転送を制御する信号、ＴＣＴはＢＩＦ１で生成されるＴＩＭモジュールとのデータ転送を制御する信号、ＩＲＥＱはＩＲＱモジュールからＣＰＵ１へ割り込み要求があったことを伝える信号である。
【００４１】
これらの機能の内、タイマ回路ＴＩＭ、シリアルインタフェース回路ＳＩＯ１及びＳＩＯ２、外部とのパラレルインタフェース回路ＰＩＯ、割り込み処理回路ＩＲＱ、周辺用データバスについては、本発明を適用したマイクロコンピュータＬＳＩ１には重要な構成要素ではあるが、以下の動作説明では詳細説明は省略する。
【００４２】
〔モード別の動作及び命令〕
以下、図１におけるモード別の動作を説明する。
【００４３】
第１のデータ演算回路ＥＸ１１と第２のデータ演算回路ＥＸ１２は機能が等価であり、命令コード上では両者の演算機能及びモジュール内にあるレジスタは区別されず、モードによって区別される。モード設定回路ＭＯＤＥ１は、以下の３つのモードの内の１つのモードを設定して状態を保持する。尚、モード１とモード２だけを有してもよい。
【００４４】
モード１：第１のデータ演算回路による単独演算を実行可能。リセット時の初期値。
【００４５】
モード２：第１及び第２のデータ演算回路による２並列演算を実行可能。
【００４６】
モード３：第２のデータ演算回路による単独演算を実行可能。
【００４７】
これらのモードは２本の状態信号ＭＤ［１］、ＭＤ［０］によって表示され、ＭＤ［１］＝ＭＤ［０］＝ｌｏｗの時はモード１状態を、ＭＤ［１］＝ｌｏｗ、ＭＤ［０］＝ｈｉｇｈの時はモード２状態を、ＭＤ［１］＝ｈｉｇｈ、ＭＤ［０］＝ｌｏｗの時はモード３状態を表す。なお、ＭＤ［１］＝ＭＤ［０］＝ｈｉｇｈ状態は本実施例では未使用コードである。また、本実施例では状態信号をコード化して表示する例を示しているが、コードの定義は異なっていても良いし、モード毎に独立の状態イネーブル信号で表示しても良いことは明らかである。異なったコードの定義や、モード毎に独立の状態イネーブル信号で表示した場合、第１及び第２のデータ演算回路ＥＸ１１及びＥＸ１２は制御回路も含めてまったく同じ回路構造で実現することも可能になることがある。詳細については後述する。
【００４８】
ここで具体的な命令の一例について述べるため、図５６にマイクロコンピュータの命令セットに含まれる命令のフォーマット及び命令コードの一例を示す。
【００４９】
本実施例では大きく分けてＣＰＵ命令及びＤＳＰ命令の２種類の命令をサポートしている。ＣＰＵ命令の全てとＤＳＰ命令の一部は、１６ビット長の命令コードであり、残りのＤＳＰ命令は３２ビット長の命令コードになっている。
【００５０】
ＣＰＵ命令とは、上述のデータ演算回路を動作させることなく専らＣＰＵコアによって実行される命令であり、どのモードでも共通に同じ単一動作を行う。
【００５１】
ＤＳＰ命令とは、アドレス演算若しくはオペランドアクセスなどの一部の処理をＣＰＵコアに負担させてデータ演算回路が演算を実行する命令、あるいはデータ演算回路内レジスタとのデータ転送動作を実行する命令であり、モードによって、１つのデータ演算回路で処理を実行する場合と、２つのデータ演算回路で並列に同じ処理を実行する場合とがある。
【００５２】
図５６のＣＰＵ命令フォーマットにおいて、ｎｎｎｎはデスティネーションオペランドの指定領域、ｓｓｓｓはソースオペランドの指定領域、ｄｄｄｄはディスプレースメントの指定領域、ｉｉｉｉｉｉｉｉはイミディエイト値の指定領域である。例えば、ＡＤＤ命令などの場合は、ｎｎｎｎはソースオペランドの指定領域と共通領域とされ、演算結果はｎｎｎｎに格納される。
【００５３】
ＤＳＰ命令の一例中、最上段の欄には乗算命令である「PMULS」、データ転送命令である「MOVX.W」及び「MOVY.W」の３命令の記述がある。これら３つの命令は一つの命令コードによって指定可能であり、並行して実行できる。つまり、この命令コードによって、データ演算回路においてSe及びSfで指定されるレジスタから保持データを乗算器に供給・演算し、その演算結果をDgで指定したレジスタに書込む動作と、アドレスポインタAaによって指定されるデータをデスティネーション・オペランドDbに転送する動作、アドレスポインタAcによって指定されるデータをデスティネーション・オペランドDdに転送する動作が並行に実行されるのである。ここでアドレスポインタAa、AcはＣＰＵコア内のレジスタであり、その他のオペランドはデータ演算回路内のレジスタを指す。
【００５４】
２段目の欄には加算命令である「PADD」、乗算命令である「PMULS」、データ転送命令である「MOVX.W」及び「MOVY.W」の４命令の記述がある。この命令コードによって、データ演算回路においてSx及びSyで指定されるレジスタから保持データを算術論理演算器に供給・演算し、その演算結果をDuで指定したレジスタに書込む動作、Se及びSfで指定されるレジスタから保持データを乗算器に供給・演算し、その演算結果をDgで指定したレジスタに書込む動作と、アドレスポインタAaによって指定されるデータをデスティネーション・オペランドDbに転送する動作、アドレスポインタAcによって指定されるデータをデスティネーション・オペランドDdに転送する動作の４つの動作が並列実行されるのである。３段目の欄は２段目の欄とほぼ同じであるが、「PADD」の代わりに減算命令である「PSUB」が用いられる点が異なっている。尚、各アドレスポインタのニーモニック（Aa、Ac）の右に付いている「＋」はメモリアクセス後、ポインタをインクリメントして、次のメモリアクセス時にアドレスを更新する動作を指定している。
【００５５】
以上は一つの命令コードで３つ乃至４つの動作を並列実行できる命令の定義について述べたが、無論、単独動作命令を別々に定義してもよい。また、上述したようにデータ転送命令と演算命令とを並列実行する場合には、アドレスバスが３つ必要であるため、後述する第３乃至第６の実施例のいずれかにおいて主に用いられる。
【００５６】
また、同時並列実行される演算の演算結果のストア先は重ならないように制御する必要がある。例えば、ソフトウェア的に、アセンブラによって、同一デスティネーションにストアしないようにエラーチェックを行っても良い。また、エラーチェックにも関わらず重なってしまうことも考えられるので、ハードウェアがダメージを被らないようにするため、プライオリティ・エンコーダを用いて、優先順位の高い方を優先し、もう一方を無視するようにしてもよい。
【００５７】
尚、本実施例においては各演算回路は単精度演算を行う場合の構成を示している。しかしながら、各演算回路が単精度演算及び倍精度演算の両方を行うように構成してもよいことはいうまでもなく、この場合、単精度演算／単精度複数並列に加えて、倍精度演算／倍精度複数並列演算が可能になる。単精度演算／倍精度演算の切換もモード切換でできようにしてもよい。
【００５８】
リセットによる初期状態の時、マイクロプロセッサＬＳＩ１はモード１状態となり、ＭＤ［１］＝ＭＤ［０］＝ｌｏｗとなる。第１のオンチップメモリＭＥＭ１１、第２のオンチップメモリＭＥＭ１２、アドレス生成回路ＣＡＤＲ１、命令フェッチ回路ＣＦＣＨ１、バス・インタフェース回路ＢＩＦ１、モード設定回路ＭＯＤＥ１は、第１のデータバスＩＤＢ１との接続が有効となるように制御される。図２にモード１の時のＭＥＭ１１及びＭＥＭ１２のアドレス空間上のマッピング例を示す。なお、図２のメモリマップはモード３の時も同じである。また図２では連続したアドレス空間にＭＥＭ１１、ＭＥＭ１２をマッピングしているが、特に連続している必要はなく、固有のアドレス空間にマッピングされていれば良いし各メモリの容量も１６Kバイトで固定されるものでもないことは言うまでもない。
【００５９】
第１のデータ演算回路ＥＸ１１は中央処理回路ＣＰＵ１から発行される制御信号の指示で演算動作を行うが、第２のデータ演算回路ＥＸ１２は制御信号に関係なく非活性状態になる。中央処理回路ＣＰＵ１はプログラムアドレスをアドレス生成回路で生成し、ＩＡＢを通して所定のメモリより命令を読み出してＩＤＢ１から命令フェッチ回路ＣＦＣＨ１へ命令コードを読み込む。ここで命令を読み出すメモリはしもオンチップメモリＭＥＭ１１、ＭＥＭ１２である必要はなく、例えば外部とのパラレルインタフェース回路ＰＩＯを経て外部にあるメモリから読み込んでも構わない。
【００６０】
フェッチした命令コードは命令デコード回路ＣＤＥＣでデコードされ、各モジュールに対して必要な制御信号群ＣＮＴを生成する。
【００６１】
デコードされた命令がメモリからのデータの読み出し命令の時、アドレス生成回路ＣＡＤＲ１はアクセスすべきアドレスを生成して、アドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスがオンチップメモリＭＥＭ１１又はＭＥＭ１２がマッピングされたアドレスであった場合、ＭＥＭ１１又はＭＥＭ１２は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、データバスＩＤＢ１に出力する。ＩＤＢ１に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。命令で指定されたデスティネーションオペランドが例えばアドレス生成回路ＣＡＤＲ１内部にあるレジスタの場合は、ＩＤＢ１からデータがＣＡＤＲ１内部に取り込まれ、所定のレジスタに入力される。デスティネーションオペランドが第１又は第２のデータ演算回路ＥＸ１１、ＥＸ１２の内部にある場合、オペランドコードはＥＸ１１、ＥＸ１２で共通であるが、モード１では第２のデータ演算回路ＥＸ１２は非活性状態なので、ＩＤＢ１上のデータはＥＸ１１に取り込まれる。命令で指定されたデスティネーションオペランドがモード設定回路ＭＯＤＥ１の内部のレジスタの場合、ＩＤＢ１からＭＯＤＥ内へデータが取り込まれ、所定のレジスタを更新する。この時ＭＤ［１］、ＭＤ［０］の状態を保持しているビットが変化した場合、所定の状態に対応したモードに切り替わることになる。ＩＡＢに出力されたアドレスが外部メモリの領域であった場合、ＩＡＢ上のアドレスはパラレル・インタフェース回路ＰＩＯから外部へ出力され、外部メモリから読み出されたデータがＰＩＯ、周辺用データバスＰＤＢ、バス・インタフェース回路ＢＩＦ１を経てＩＤＢ１に出力され、命令で指定されたデスティネーションオペランドに転送される。
【００６２】
デコードされた命令がメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ１はアクセスすべきアドレスを生成して、アドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスがオンチップメモリＭＥＭ１１又はＭＥＭ１２がマッピングされたアドレスであった場合、ＭＥＭ１１又はＭＥＭ１２は該当するアドレスのワード線を活性化させる。一方、命令で指定されたソースオペランドが例えばアドレス生成回路ＣＡＤＲ１内部にあるレジスタの場合は、ＣＡＤＲ１からデータがＩＤＢ１に出力され、ＭＥＭ１１又はＭＥＭ１２に入力されて所定のアドレスに書き込まれる。ソースオペランドが第１又は第２のデータ演算回路ＥＸ１１、ＥＸ１２の内部にある場合、オペランドコードはＥＸ１１、ＥＸ１２で共通であるが、モード１では第２のデータ演算回路ＥＸ１２は非活性状態なので、ＥＸ１１内のデータがＩＤＢ１上に出力される。命令で指定されたソースオペランドがモード設定回路ＭＯＤＥ１の内部のレジスタの場合、ＭＯＤＥ１内からデータがＩＤＢ１に出力される。ＩＡＢに出力されたアドレスが外部メモリの領域であった場合、ＩＡＢ上のアドレスはパラレル・インタフェース回路ＰＩＯから外部へ出力され、同時にソースオペランドからＩＤＢ１に出力されたデータがバス・インタフェース回路ＢＩＦ１、周辺用データバスＰＤＢ、ＰＩＯを経て、外部メモリに書き込まれる。
【００６３】
モード１では、メモリ以外の各モジュール間のデータ転送も、同じようにＩＤＢ１を用いて実行される。第２のデータ演算回路ＥＸ１２はこのモードでは非活性であるので、ソースもしくはデスティネーションオペランドがデータ演算回路内部のレジスタ等を指定すると、第１のデータ演算回路ＥＸ１１が自動的にアクセスされる。
【００６４】
マイクロプロセッサＬＳＩ１がモード２状態の時、ＭＤ［１］＝ｌｏｗ、ＭＤ［０］＝ｈｉｇｈとなる。第１のオンチップメモリＭＥＭ１１、アドレス生成回路ＣＡＤＲ１、命令フェッチ回路ＣＦＣＨ１、バス・インタフェース回路ＢＩＦ１、モード設定回路ＭＯＤＥ１は、第１のデータバスＩＤＢ１との接続が有効となるように制御される。第２のオンチップメモリＭＥＭ１２は、受ける制御の内容によって第１のデータバスＩＤＢ１か第２のデータバスＩＤＢ２のどちらに接続するかを選択する。受ける制御がデータ演算回路ＥＸ１１やＥＸ１２との間のデータ転送動作の場合は、第２のデータバスＩＤＢ２に接続する。それ以外の場合はＩＤＢ１に接続する。図３にモード２の時でかつ、受ける制御がデータ演算回路ＥＸ１１やＥＸ１２との間のデータ転送動作の場合の、ＭＥＭ１１及びＭＥＭ１２のアドレス空間上のマッピング例を示す。なお、モード２の時でかつ、受ける制御がデータ演算回路ＥＸ１１やＥＸ１２との間のデータ転送動作以外の場合は、図２と同じである。また図３ではＭＥＭ１１、ＭＥＭ１２の２重マッピング空間が２箇所存在しているが、図４のように１箇所のみのマッピングでも良いことは言うまでもない。
【００６５】
第１のデータ演算回路ＥＸ１１及び第２のデータ演算回路ＥＸ１２は、命令コード上区別されないため、中央処理回路ＣＰＵ１から発行される共通の制御信号の指示で同じ演算動作を行う。命令フェッチの場合、モード１の時と同様に中央処理回路ＣＰＵ１はプログラムアドレスをアドレス生成回路で生成し、ＩＡＢを通して所定のメモリより命令を読み出してＩＤＢ１から命令フェッチ回路ＣＦＣＨ１へ命令コードを読み込む。ここで命令を読み出すメモリがオンチップメモリの場合でも、命令フェッチ動作ではメモリマップは図２が適用されるので、指定されたアドレスから命令コードが正しく読み出される。第２のオンチップメモリＭＥＭ１２の場合は読み出された命令コードはＩＤＢ１が選択されて出力される。フェッチした命令コードは命令デコード回路ＣＤＥＣでデコードされ、各モジュールに対して必要な制御信号群ＣＮＴを生成する。
【００６６】
デコードされた命令がオンチップメモリとデータ演算回路との間のデータ転送動作以外の場合、動作はモード１と同じである。
【００６７】
デコードされた命令がオンチップメモリとデータ演算回路との間のデータ転送動作の場合は以下のように動作する。
【００６８】
メモリからのデータの読み出し命令の時、アドレス生成回路ＣＡＤＲ１はアクセスすべきアドレスを生成して、アドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスは、ＭＥＭ１１とＭＥＭ１２の双方の該当するアドレスのワード線を同時に活性化させ、所要のデータを読み出し、ＭＥＭ１１から読み出されたデータはデータバスＩＤＢ１に、ＭＥＭ１２から読み出されたデータはデータバスＩＤＢ２に出力する。ＩＤＢ１に出力されたデータは、命令で指定された第１のデータ演算回路ＥＸ１１内のデスティネーションオペランドに転送される。同時にＩＤＢ２に出力されたデータは、同じ命令で指定された第２のデータ演算回路ＥＸ１２内のデスティネーションオペランドに転送される。メモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ１はアクセスすべきアドレスを生成して、アドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスは、ＭＥＭ１１とＭＥＭ１２の双方の該当するアドレスのワード線を同時に活性化させる。一方、命令で指定された第１のデータ演算回路ＥＸ１１内のソースオペランドのデータがＩＤＢ１上に出力される。同時に命令で指定された第２のデータ演算回路ＥＸ１２内のソースオペランドのデータがＩＤＢ２上に出力される。先述のように、命令コード上ではＥＸ１１とＥＸ１２は区別しないので、モード２では以上のようにデータ転送命令でも同じ命令コードで同時に双方の動作を実行させることができる。データ演算回路内部でリソースが閉じているデータ演算命令の場合は、単一の命令コードで同時に同じ動作を複数実行できることは自明であろう。
【００６９】
モード２では、メモリ以外の各モジュール間のデータ転送は、第２のデータ演算回路を除いたモジュール間で可能であり、第１のデータバスＩＤＢ１を用いて実行される。モード２では第２のデータ演算回路ＥＸ１２以外のモジュールは、第１のデータバスＩＤＢ１に接続され、さらに第１と第２のデータ演算回路ＥＸ１１、ＥＸ１２内部のオペランドは命令コードでは区別できないので、このモードでは第２のデータ演算回路ＥＸ１２内部のオペランドとのモジュール間データ転送はサポートされない。第２のデータ演算回路ＥＸ１２内部のオペランドをアクセスする必要がある場合は、後述のモード３に切り替えて実行する。
【００７０】
本実施例では、モード２で外部メモリの領域でも同様の機能をサポートすることを想定していない。外部メモリをアクセスする場合、２つの動作を同時に実行させるには２倍の外部との入出力端子が必要になり、パッケージのピン数の制約から考えて実用的ではない。またデータ転送動作は順番に１つずつ実行させるように制御する場合は、ピン数の制約は解消されるが、２つの処理を同時並列に実行させて性能を向上させる本来の目的と合わなくなる。ただし、本発明がこのような機能を外部メモリでは適用できないことを意味するものではなく、もし必要があるならば、オンチップメモリが実現している機能をバス・インタフェース回路ＢＩＦ１、周辺用データバスＰＤＢ、パラレルインタフェースＰＩＯ及び外部メモリによって同じように構成すればいいことは明らかであるので、本明細書では別の実施例として説明することは省略する。
【００７１】
マイクロプロセッサＬＳＩ１がモード３状態の時、ＭＤ［１］＝ｈｉｇｈ、ＭＤ［０］＝ｌｏｗとなる。第１のオンチップメモリＭＥＭ１１、第２のオンチップメモリＭＥＭ１２、アドレス生成回路ＣＡＤＲ１、命令フェッチ回路ＣＦＣＨ１、バス・インタフェース回路ＢＩＦ１、モード設定回路ＭＯＤＥ１は、第２のデータバスＩＤＢ２との接続が有効となるように制御される。モード３の時のＭＥＭ１１及びＭＥＭ１２のアドレス空間上のマッピング例は、モード１の時と同じであり、図２に示されている。
【００７２】
第２のデータ演算回路ＥＸ１２は中央処理回路ＣＰＵ１から発行される制御信号の指示で演算動作を行うが、第１のデータ演算回路ＥＸ１１は制御信号に関係なく非活性状態になる。中央処理回路ＣＰＵ１はプログラムアドレスをアドレス生成回路で生成し、ＩＡＢを通して所定のメモリより命令を読み出してＩＤＢ２から命令フェッチ回路ＣＦＣＨ１へ命令コードを読み込む。ここで命令を読み出すメモリはしもオンチップメモリＭＥＭ１１、ＭＥＭ１２である必要はなく、例えば外部とのパラレルインタフェース回路ＰＩＯを経て外部にあるメモリから読み込んでも構わない。フェッチした命令コードは命令デコード回路ＣＤＥＣでデコードされ、各モジュールに対して必要な制御信号群ＣＮＴを生成する。ここでのモード１との動作の違いは、命令コードが第２のデータバスＩＤＢ２から読み込まれることである。
【００７３】
デコードされた命令がメモリからのデータの読み出し命令の時、アドレス生成回路ＣＡＤＲ１はアクセスすべきアドレスを生成して、アドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスがオンチップメモリＭＥＭ１１又はＭＥＭ１２がマッピングされたアドレスであった場合、ＭＥＭ１１又はＭＥＭ１２は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第２のデータバスＩＤＢ２に出力する。ＩＤＢ２に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。命令で指定されたデスティネーションオペランドが例えばアドレス生成回路ＣＡＤＲ１内部にあるレジスタの場合は、ＩＤＢ２からデータがＣＡＤＲ１内部に取り込まれ、所定のレジスタに入力される。デスティネーションオペランドが第１又は第２のデータ演算回路ＥＸ１１、ＥＸ１２の内部にある場合、オペランドコードはＥＸ１１、ＥＸ１２で共通であるが、モード３では第１のデータ演算回路ＥＸ１１は非活性状態なので、ＩＤＢ２上のデータはＥＸ１２に取り込まれる。命令で指定されたデスティネーションオペランドがモード設定回路ＭＯＤＥの内部のレジスタの場合、ＩＤＢ２からＭＯＤＥ１内へデータが取り込まれ、所定のレジスタを更新する。この時ＭＤ［１］、ＭＤ［０］の状態を保持しているビットが変化した場合、所定の状態に対応したモードに切り替わることになる。ＩＡＢに出力されたアドレスが外部メモリの領域であった場合、ＩＡＢ上のアドレスはパラレル・インタフェース回路ＰＩＯから外部へ出力され、外部メモリから読み出されたデータがＰＩＯ、周辺用データバスＰＤＢ、バス・インタフェース回路ＢＩＦ１を経てＩＤＢ２に出力され、命令で指定されたデスティネーションオペランドに転送される。
【００７４】
デコードされた命令がメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ１はアクセスすべきアドレスを生成して、アドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスがオンチップメモリＭＥＭ１１又はＭＥＭ１２がマッピングされたアドレスであった場合、ＭＥＭ１１又はＭＥＭ１２は該当するアドレスのワード線を活性化させる。一方、命令で指定されたソースオペランドが例えばアドレス生成回路ＣＡＤＲ１内部にあるレジスタの場合は、ＣＡＤＲ１からデータがＩＤＢ２に出力され、ＭＥＭ１１又はＭＥＭ１２に入力されて所定のアドレスに書き込まれる。ソースオペランドが第１又は第２のデータ演算回路ＥＸ１１、ＥＸ１２の内部にある場合、オペランドコードはＥＸ１１、ＥＸ１２で共通であるが、モード３では第１のデータ演算回路ＥＸ１１は非活性状態なので、ＥＸ１２内のデータがＩＤＢ２上に出力される。命令で指定されたデスソースオペランドがモード設定回路ＭＯＤＥ１の内部のレジスタの場合、からＭＯＤＥ内からデータがＩＤＢ２に出力される。ＩＡＢに出力されたアドレスが外部メモリの領域であった場合、ＩＡＢ上のアドレスはパラレル・インタフェース回路ＰＩＯから外部へ出力され、同時にソースオペランドからＩＤＢ２に出力されたデータがバス・インタフェース回路ＢＩＦ１、周辺用データバスＰＤＢ、ＰＩＯを経て、外部メモリに書き込まれる。
【００７５】
モード３では、メモリ以外の各モジュール間のデータ転送も、同じようにＩＤＢ２を用いて実行される。第１のデータ演算回路ＥＸ１１はこのモードでは非活性であるので、ソースもしくはデスティネーション・オペランドがデータ演算回路内部のレジスタ等を指定すると、第２のデータ演算回路ＥＸ１２が自動的にアクセスされる。
【００７６】
〔モード設定回路ＭＯＤＥ１の構成及び動作〕
モード設定回路ＭＯＤＥ１のより具体的な構成例を図５に示す。図中、ＭＤＲはモード状態を示すＭＤ［１：０］信号を保持するビットを構成するモードレジスタ、ＭＤＤＥＣ１はモード設定回路内の制御信号ＤＣＴ１〜５を生成する制御回路、ＤＣＴ１〜５は制御回路ＭＤＤＥＣ１から出力される制御信号、ＤＭＸ１は第１のデータバスＩＤＢ１もしくは第２のデータバスＩＤＢ２上のデータを選択して取り込むセレクタ、ＤＣＢ１はセレクタＤＭＸ１で選択されたデータをモードレジスタＭＤＲに入力するクロックドゲート、ＤＬＴ１はモードレジスタＭＤＲの出力信号ＭＤ［１：０］を半周期遅延させるための遅延ラッチ回路、ＤＭＸ２はＤＬＴ１の出力を第１のデータバスＩＤＢ１もしくは第２のデータバスＩＤＢ２に出力するためのセレクタ、ＤＬＴ２は制御信号ＤＣＴ１、ＤＣＴ２を半周期遅延させるための遅延ラッチ回路、ＤＬＴ３は制御信号ＤＣＴ５を半周期遅延させるための遅延ラッチ回路、ＲＤＭＤＲはモードレジスタＭＤＲの出力信号ＭＤ［１：０］を第１のデータバスＩＤＢ１もしくは第２のデータバスＩＤＢ２に出力するための制御信号、ＷＴＭＤＲは第１のデータバスＩＤＢ１もしくは第２のデータバスＩＤＢ２上のデータをモードレジスタＭＤＲに入力するための制御信号、ＣＬＲはモードレジスタＭＤＲを初期化するためのクリア信号である。なお、ＲＤＭＤＲ及びＷＴＭＤＲは中央処理回路ＣＰＵ１が出力している制御信号群ＣＮＴに含まれている制御信号である。
【００７７】
モード設定回路ＭＯＤＥ１の詳細な動作を説明する。
【００７８】
図６は制御回路ＭＤＤＥＣ１の機能を表す真理値の表、図６はモードレジスタＭＤＲの書き込み／読み出し動作時のタイミングチャート図である。モード設定回路ＭＯＤＥ１は中央処理回路ＣＰＵ１が発行する制御信号ＲＤＭＤＲ及びＷＴＭＤＲによってモードレジスタＭＤＲの内容を書き換えることによって、モードの状態を変更する。リセット等によってＣＬＲ信号がイネーブルになり、初期化されると、モードレジスタＭＤＲはモード１状態を示すので、図６のNo.1〜3のうちのいずれかに該当する。モードレジスタＭＤＲを書き換える命令がデコードされると、中央処理回路ＣＰＵ１はＷＴＭＤＲ信号を「１」にするので、ＤＣＴ４及びＤＣＴ５が「１」になり、第１のデータバスＩＤＢ１から転送されてきたデータをＤＭＸ１、ＤＣＢ１を経てＭＤＲに入力する。モードレジスタＭＤＲの内容を読み出す命令がデコードされると、中央処理回路ＣＰＵ１はＲＤＭＤＲ信号を「１」にするので、ＤＣＴ２が「１」になり、ＤＬＴ１、ＤＭＸ２を経てＭＤＲレジスタの内容が第１のデータバスＩＤＢ１に出力される。なお、図５ではデータの入出力はデータバスの下位２ビット、即ち０ビット目と１ビット目を使用するようになっているが、本発明が特にこのビット位置に限定されないことは言うまでもない。
【００７９】
図６のNo.1~3とNo.4~6に定義されているように、以前のＭＤＲへの書き込み動作により、モード２の状態に変更されても動作はモード１の場合と同様である。モード３状態の時、図６のNo.7~9に定義されているように、データの入出力は第１のデータバスＩＤＢ１の代わりに第２のデータバスＩＤＢ２が使われ、後は同じである。以上のようにしてモード設定回路ＭＯＤＥ１自身に持っているモードレジスタの示すモードにより、入出力のデータバスを自動的に切り替える機構を実現できる。
【００８０】
本実施例では、モード設定回路を独立したモジュールとして示したが、例えば中央処理回路ＣＰＵ１内部の１レジスタとして構成してもいいことは、明らかであり、ハードウェアモジュールの分割の仕方には限定されない。また、モードレジスタＭＤＲもモード信号ＭＤ［１：０］の状態を保持するための専用レジスタとして構成した例を示しているが、他の制御レジスタの一部のビットに構成しても良いことは言うまでもない。さらにモードレジスタＭＤＲはメモリマップドレジスタとしてマッピングすることも可能であることは明らかである。
【００８１】
中央処理回路ＣＰＵ１が発行する制御信号ＲＤＭＤＲ及びＷＴＭＤＲは、フェッチされた命令のデコード結果として生成される場合もあるが、別の方法によって生成されても構わない。例えば割り込み処理回路ＩＲＱから出力される割り込み要求信号ＩＲＥＱにより、ある特定の割り込み要求が発生した時に自動的にモードを切り替える機能を備えても良い。また命令による制御でも、データの転送でモードレジスタＭＤＲの内容を書き換える他、モードセット命令等で直接変更する方法もある。このように具体的なモード切り替えの手段は数多くあるが、本発明は特定の具体的な切り替え方法に限定されるものではなく、モードを設定して保持する機能及びそれを変更する手段があれば良いことは、明らかである。
【００８２】
中央処理回路ＣＰＵ１内の命令フェッチ回路ＣＦＣＨ１やアドレス生成回路ＣＡＤＲ１においても、モード設定回路ＭＤＤＥＣ１と同様の構成方法で、第１のデータバスＩＤＢ１からか、第２のデータバスＩＤＢ２からかを自動的に制御できることは明らかであろう。フェッチ動作の場合、フェッチはフェッチレジスタへの書き込み動作であるから、制御信号ＲＤＭＤＲの代わりにフェッチ制御信号を使用すれば良い。読み出し機能はフェッチ回路の場合は不要である。
【００８３】
尚、アドレス生成回路は通常、中央処理回路ＣＰＵ１内の汎用レジスタと算術論理演算器を用いて実現する。アドレス生成回路内レジスタとデータバスとのデータ転送動作におけるデータバスの切り替え制御方法は、モード設定回路ＭＤＤＥＣと同様であり、その他のアドレス生成回路本来の動作は通常の動作と変わらないので、ここでは詳細な説明を省略する。
【００８４】
〔オンチップメモリの構成〕
第１及び第２のオンチップメモリＭＥＭ１１、ＭＥＭ１２の、より具体的な構成例を図８に示す。図中、ＭＡＤＣはアドレスデコーダ、Ｍ０、Ｍ１、Ｍ２、Ｍ３はそれぞれ１バイト単位のデータを格納するメモリマット、ＭＬＴ０、ＭＬＴ１、ＭＬＴ２、ＭＬＴ３はそれぞれバイト単位でメモリマットとのデータの入出力を中継するラッチ、ＭＬＴ４はアドレスバスＩＡＢの下位１５ビット分の情報を第１のオンチップメモリＭＥＭ１１に取り込むラッチ、ＭＭＸ１、ＭＭＸ３、ＭＭＸ５、ＭＭＸ６、ＭＭＸ７、ＭＭＸ８は複数の入力から１つを選択して出力するセレクタ、ＭＭＸ２、ＭＭＸ４、ＭＭＸ９、ＭＭＸ１０、ＭＭＸ１１、ＭＭＸ１２は複数の出力先から１つを選択して出力するセレクタ、ＭＣＢ１はＭＭＸ７の出力をラッチＭＬＴ２に取り込むクロックドゲート、ＭＣＢ２はＭＭＸ８の出力をラッチＭＬＴ３に取り込むクロックドゲート、ＭＤＥＣ１は第１のオンチップメモリＭＥＭ１１内の制御信号ＭＣＴ１〜２１を生成する制御回路、ＭＣＴ１〜２１は制御回路ＭＤＥＣ１から出力される制御信号、ＭＶ［２：０］はメモリ共通の読み出し／書き込み動作を制御する３ビットの制御コード信号、ＷＥはメモリ共通の書き込み動作か、読み出し動作かを指定する制御信号、ＭＳＥＬはオンチップメモリ共通のメモリアクセスイネーブル信号、ＡＳは第１のオンチップメモリがアクセスされた時、アドレスデコーダＭＡＤＣに入力されるＭＬＴ４のアドレス情報の内の［１３：０］が有効であることを示す信号、ＭＬ［１：０］はアドレスデコーダＭＡＤＣでどのメモリマットのワード線をイネーブルにすべきかを指定する制御信号である。他の記号はこれまで出てきたもので、定義は同じである。なお、ＭＶ［２：０］、ＷＥ及びＭＳＥＬは中央処理回路ＣＰＵ１が出力している制御信号群ＣＮＴに含まれている制御信号である。
【００８５】
第１及び第２のオンチップメモリの構造は、制御回路の真理値が異なる他は、同じである。
【００８６】
〔オンチップメモリＭＥＭ１１の動作〕
第１のオンチップメモリＭＥＭ１１の詳細な動作を説明する。
【００８７】
ここで取り上げているメモリは、命令によってデータ長を３タイプ区別して対応する機能のメモリを取り上げている。アドレスと実際のメモリ上の対応関係を図９に示す。メモリマットＭ０、Ｍ１、Ｍ２、Ｍ３は、１バイト単位のデータを格納しており、それぞれ４ｎ、４ｎ＋１、４ｎ＋２、４ｎ＋３番地（ｎは０以上の整数）のアドレスが対応している。バイト単位のデータをアクセスする時、中央処理回路ＣＰＵ１は任意のアドレスを指定できる。ＭＬ［１：０］は１バイト分のワード線をイネーブルにするためのコードを示し、アドレスデコーダＭＡＤＣはＭＬＴ４の［１３：０］で指定されたアドレスに該当するメモリマットのワード線をイネーブルにする。ワード単位のデータをアクセスする時、中央処理回路ＣＰＵ１は４ｎ又は４ｎ＋２番地のアドレスを指定する。ＭＬ［１：０］は連続する２バイト分のワード線をイネーブルにするためのコードを示し、アドレスデコーダＭＡＤＣはＭＬＴ４の［１３：０］で指定されたアドレス４ｎとそれに続く４ｎ＋１、又は４ｎ＋２とそれに続く４ｎ＋３番地の２つのメモリマットのワード線をイネーブルにする。ロングワード単位のデータをアクセスする時、中央処理回路ＣＰＵ１は４ｎ番地のアドレスを指定する。ＭＬ［１：０］は連続する４バイト分のワード線をイネーブルにするためのコードを示し、アドレスデコーダＭＡＤＣはＭＬＴ４の［１３：０］で指定されたアドレス４ｎとそれに続く４ｎ＋１、４ｎ＋２及び４ｎ＋３番地の４つ全てのメモリマットのワード線をイネーブルにする。
【００８８】
制御コード信号ＭＶ［２：０］は、図１０に示すような定義のコード信号である。なおこの実施例では、オンチップメモリと第１及び第２のデータ演算回路以外とのデータ転送動作の場合は、バイト単位、ワード単位、ロングワード単位の３種類のデータ転送動作をサポートしているが、オンチップメモリと第１及び第２のデータ演算回路とのデータ転送動作の場合は、ワード単位とロングワード単位の２種類のデータ転送動作をサポートしている例を示しているが、やはり３種類ともサポートしても良いことは言うまでもない。ＭＳＥＬはオンチップメモリ共通のメモリアクセスイネーブル信号であり、アドレスの上位情報を各オンチップメモリでデコードする手間を省略するために生成される。各オンチップメモリの識別は、各オンチップメモリの容量が１６Kバイトであるため、ＩＡＢの１５ビット目（ＩＡＢ［１４］）及びモード状態信号ＭＤ［１：０］の情報によって各オンチップメモリ内で行うことができる。ＭＳＥＬがイネーブル状態を示している時、制御信号ＷＥは読み出し動作か、書き込み動作かを指定する。ｌｏｗの時は読み出し、ｈｉｇｈの時は書き込み動作を意味する。ＭＶ［２：０］は命令フェッチ動作、データ演算回路以外とのデータ転送動作及びデータ演算回路とのデータ転送動作のためのメモリアクセス動作を指定し、さらにアクセスされるデータのビット幅によって異なるコードが定義されている。本実施例ではマイクロコンピュータＬＳＩは３２ビットの固定長命令フェッチ動作を行うことを仮定する。従って図１０に示されているように、命令フェッチ動作ではデータのビット幅のバリエーションはなく、１種類のコードで定義している。
【００８９】
図１１にはモード１での、図１２にはモード２での、図１３にはモード３での制御回路ＭＤＥＣ１の定義の真理値の表を示す。なお、ここではモード毎に真理値を示しているが、これは単に１つの表で表わすには図面が大きくなり過ぎるため、分割しているのであって、図６のようにＭＤ［１：０］を入力信号に加えて１つの真理値の表で表わすことが可能な論理回路である。また、図１１、図１２、図１３の真理値表は、図３のメモリマップを想定している。さらに、図１１、図１２、図１３の真理値表では簡素化のため未使用コードもハードウェア量が少なくなると思われる行へ埋め込んでいることがある。
【００９０】
図１４はロングワード単位のデータの読み出し／書き込み動作を例にした第１のオンチップメモリＭＥＭ１１のタイミングチャート図である。第２のオンチップメモリＭＥＭ１２についても、モードによって接続されるデータバスが異なるが、タイミングは同じである。メモリ部では、読み出しと書き込みのメモリマットでのタイミングを合わせるため、先のモード設定レジスタでの読み出し／書き込みタイミングとは異なっているが、タイミング自体はベースとなっているマイクロコンピュータで仕様として決まっているものであり、単なる一例として示している。以下、モード別に各動作の説明をする。
【００９１】
（１）モード１での命令フェッチ動作：
ＭＳＥＬがイネーブル状態を示し、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］が命令フェッチ動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はロングワード（３２ビット）のデータ読み出し動作を行う。なお、命令フェッチ動作は読み出し動作であるので、制御信号ＷＥは特に必要ないため、図１１、図１２、図１３では無視するようにしているが、他の動作との共通性を保つため、ＷＥ＝ｌｏｗとしても構わないことは言うまでもない。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は連続する４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは４つのメモリマット全ての所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはラッチＭＬＴ０〜３によってラッチされる。ＭＬＴ０にラッチされたデータは、ＭＣＴ４がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１６がイネーブルとなってセレクタＭＭＸ９を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。ＭＬＴ１にラッチされたデータは、ＭＣＴ１０がイネーブルとなってセレクタＭＭＸ３を通過し、さらにＭＣＴ１８がイネーブルとなってセレクタＭＭＸ１０を通過し、第１のデータバスＩＤＢ１の最下位から２番目のバイト（［１５：８］）に出力される。ＭＬＴ２にラッチされたデータは、ＭＣＴ２０がイネーブルとなってセレクタＭＭＸ１１を通過し、第１のデータバスＩＤＢ１の最下位から３番目のバイト（［２３：１６］）に出力される。ＭＬＴ３にラッチされたデータは、ＭＣＴ２０がイネーブルとなってセレクタＭＭＸ１２を通過し、第１のデータバスＩＤＢ１の最上位バイト（［３１：２４］）に出力される。なおここではラッチＭＬＴ０〜３、アドレスデコーダＭＡＤＣ及びメモリマットＭ０〜３の詳細な制御信号や回路構造は、本発明とは直接関係なく、このようなデータ長可変のメモリアクセス可能なメモリ回路は従来から知られているので、ここでは省略する。以下の説明でも同様である。
【００９２】
（２）モード１でのバイト単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はバイト単位のデータの読み出し動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は１バイト分のワード線をイネーブルにするためのコード（０１）を示し、アドレスデコーダＭＡＤＣは該当する１つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０、１、２あるいは３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０から読み出されたデータはＭＬＴ０にラッチされ、ＭＣＴ４がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１６がイネーブルとなってセレクタＭＭＸ９を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが０１の時、メモリマットＭ１から読み出されたデータはＭＬＴ１にラッチされ、ＭＣＴ３がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１６がイネーブルとなってセレクタＭＭＸ９を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２から読み出されたデータはＭＬＴ２にラッチされ、ＭＣＴ２がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１６がイネーブルとなってセレクタＭＭＸ９を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１１の時、メモリマットＭ３から読み出されたデータはＭＬＴ３にラッチされ、ＭＣＴ１がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１６がイネーブルとなってセレクタＭＭＸ９を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。このようにして任意のアドレスのバイトデータが、第１のデータバスＩＤＢ１の最下位バイトに出力される。
【００９３】
（３）モード１でのバイト単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の最下位バイトから送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がバイト単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はバイト単位のデータの書き込み動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は１バイト分のワード線をイネーブルにするためのコード（０１）を示し、アドレスデコーダＭＡＤＣは該当する１つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第１のデータバスＩＤＢ１の最下位バイトから送られてきたデータは、ＭＣＴ１５がイネーブルとなってセレクタＭＭＸ５を通過し、さらにＭＣＴ５がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ０に入力され、メモリマットＭ０に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが０１の時、第１のデータバスＩＤＢ１の最下位バイトから送られてきたデータは、同じくＭＣＴ１５がイネーブルとなってセレクタＭＭＸ５を通過し、さらにＭＣＴ６がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ１に入力され、メモリマットＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第１のデータバスＩＤＢ１の最下位バイトから送られてきたデータは、同じくＭＣＴ１５がイネーブルとなってセレクタＭＭＸ５を通過し、さらにＭＣＴ７がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ２に入力され、メモリマットＭ２に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１１の時、第１のデータバスＩＤＢ１の最下位バイトから送られてきたデータは、同じくＭＣＴ１５がイネーブルとなってセレクタＭＭＸ５を通過し、さらにＭＣＴ８がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ３に入力され、メモリマットＭ３に書き込まれる。
【００９４】
（４）モード１でのワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はワード単位のデータの読み出し動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０と１、あるいは２と３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０及びＭ１から読み出されたデータはＭＬＴ０及びＭＬＴ１にラッチされ、ＭＣＴ４及びＭＣＴ１０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ１６及びＭＣＴ１８がイネーブルとなってセレクタＭＭＸ９及びＭＭＸ１０を通過し、第１のデータバスＩＤＢ１の下位２バイト（［１５：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２及びＭ３から読み出されたデータはＭＬＴ２及びＭＬＴ３にラッチされ、ＭＣＴ２及びＭＣＴ９がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ１６及びＭＣＴ１８がイネーブルとなってセレクタＭＭＸ９及びＭＭＸ１０を通過し、第１のデータバスＩＤＢ１の下位２バイト（［１５：０］）に出力される。
【００９５】
（５）モード１でのワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の下位２バイトから送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がワード単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はワード単位のデータの書き込み動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第１のデータバスＩＤＢ１の下位２バイトから送られてきたデータは、ＭＣＴ１５がイネーブルとなってセレクタＭＭＸ５及びＭＭＸ６を通過し、さらにＭＣＴ５及びＭＣＴ１１がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ０及びＭＬＴ１に入力され、メモリマットＭ０及びＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第１のデータバスＩＤＢ１の下位２バイトから送られてきたデータは、同じくＭＣＴ１５がイネーブルとなってセレクタＭＭＸ５及びＭＭＸ６を通過し、さらにＭＣＴ７及びＭＣＴ１２がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ２及びＭＬＴ３に入力され、メモリマットＭ２及びＭ３に書き込まれる。
【００９６】
（６）モード１でのロングワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はワード単位のデータの読み出し動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは該当の４つ全てのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。メモリマットＭ０〜Ｍ３から読み出されたデータはＭＬＴ０〜３にラッチされ、ＭＣＴ４及びＭＣＴ１０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ１６、ＭＣＴ１８及びＭＣＴ２０がイネーブルとなってセレクタＭＭＸ９、ＭＭＸ１０、ＭＭＸ１１及びＭＭＸ１２を通過し、第１のデータバスＩＤＢ１（［３１：０］）に出力される。
【００９７】
（７）モード１でのロングワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の全ビットを使用して送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がロングワード単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はロングワード単位のデータの書き込み動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは４つ全てのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。第１のデータバスＩＤＢ１から送られてきたデータは、ＭＣＴ１５がイネーブルとなってセレクタＭＭＸ５、ＭＭＸ６、ＭＭＸ７及びＭＭＸ８を通過し、さらにＭＣＴ５、ＭＣＴ１１及びＭＣＴ１３がイネーブルとなってＭＭＸ２、ＭＭＸ４、MCB１及びMCB２を通過し、ＭＬＴ０〜３に入力され、メモリマットＭ０〜３に書き込まれる。
【００９８】
（８）モード２での命令フェッチ動作：
このケースは先の（１）モード１での命令フェッチ動作と同じである。
【００９９】
（９）モード２でのバイト単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態でかつＭＶ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はバイト単位のデータの読み出し動作を行う。ＭＶ
［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗであれば上記（２）のモード１でのバイト単位のデータの読み出し動作と同じであるが、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０１００】
（１０）モード２でのバイト単位のデータの書き込み動作：
このケースも上記（９）モード２でのバイト単位のデータの読み出し動作と同様、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０１０１】
（１１）モード２でのワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態でかつＭＶ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はワード単位のデータの読み出し動作を行う。ＭＶ
［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗであれば上記（４）モード１でのワード単位のデータの読み出し動作と同じであるが、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０１０２】
（１２）モード２でのワード単位のデータの書き込み動作：
このケースも上記（１１）モード２でのワード単位のデータの読み出し動作と同様、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０１０３】
（１３）モード２でのロングワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態でかつＭＶ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はワード単位のデータの読み出し動作を行う。ＭＶ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗであれば上記（６）モード１でのロングワード単位のデータの読み出し動作と同じであるが、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０１０４】
（１４）モード２でのロングワード単位のデータの書き込み動作：
このケースも上記（１３）モード２でのロングワード単位のデータの読み出し動作と同様、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０１０５】
（１５）モード３での命令フェッチ動作：
ＭＳＥＬがイネーブル状態を示し、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］が命令フェッチ動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はロングワード（３２ビット）のデータ読み出し動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は連続する４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは４つのメモリマット全ての所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはラッチＭＬＴ０〜３によってラッチされる。ＭＬＴ０にラッチされたデータは、ＭＣＴ４がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１７がイネーブルとなってセレクタＭＭＸ９を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。ＭＬＴ１にラッチされたデータは、ＭＣＴ１０がイネーブルとなってセレクタＭＭＸ３を通過し、さらにＭＣＴ１９がイネーブルとなってセレクタＭＭＸ１０を通過し、第２のデータバスＩＤＢ２の最下位から２番目のバイト（［１５：８］）に出力される。ＭＬＴ２にラッチされたデータは、ＭＣＴ２１がイネーブルとなってセレクタＭＭＸ１１を通過し、第２のデータバスＩＤＢ２の最下位から３番目のバイト（［２３：１６］）に出力される。ＭＬＴ３にラッチされたデータは、ＭＣＴ２１がイネーブルとなってセレクタＭＭＸ１２を通過し、第２のデータバスＩＤＢ２の最上位バイト（［３１：２４］）に出力される。
【０１０６】
（１６）モード３でのバイト単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はバイト単位のデータの読み出し動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は１バイト分のワード線をイネーブルにするためのコード（０１）を示し、アドレスデコーダＭＡＤＣは該当する１つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０、１、２あるいは３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０から読み出されたデータはＭＬＴ０にラッチされ、ＭＣＴ４がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１７がイネーブルとなってセレクタＭＭＸ９を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが０１の時、メモリマットＭ１から読み出されたデータはＭＬＴ１にラッチされ、ＭＣＴ３がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１７がイネーブルとなってセレクタＭＭＸ９を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２から読み出されたデータはＭＬＴ２にラッチされ、ＭＣＴ２がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１７がイネーブルとなってセレクタＭＭＸ９を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１１の時、メモリマットＭ３から読み出されたデータはＭＬＴ３にラッチされ、ＭＣＴ１がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ１７がイネーブルとなってセレクタＭＭＸ９を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。このようにして任意のアドレスのバイトデータが、第２のデータバスＩＤＢ２の最下位バイトに出力される。
【０１０７】
（１７）モード３でのバイト単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の最下位バイトから送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がバイト単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はバイト単位のデータの書き込み動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は１バイト分のワード線をイネーブルにするためのコード（０１）を示し、アドレスデコーダＭＡＤＣは該当する１つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第２のデータバスＩＤＢ２の最下位バイトから送られてきたデータは、ＭＣＴ１４がイネーブルとなってセレクタＭＭＸ５を通過し、さらにＭＣＴ５がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ０に入力され、メモリマットＭ０に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが０１の時、第２のデータバスＩＤＢ２の最下位バイトから送られてきたデータは、同じくＭＣＴ１４がイネーブルとなってセレクタＭＭＸ５を通過し、さらにＭＣＴ６がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ１に入力され、メモリマットＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第２のデータバスＩＤＢ２の最下位バイトから送られてきたデータは、同じくＭＣＴ１４がイネーブルとなってセレクタＭＭＸ５を通過し、さらにＭＣＴ７がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ２に入力され、メモリマットＭ２に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１１の時、第２のデータバスＩＤＢ２の最下位バイトから送られてきたデータは、同じくＭＣＴ１４がイネーブルとなってセレクタＭＭＸ５を通過し、さらにＭＣＴ８がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ３に入力され、メモリマットＭ３に書き込まれる。
【０１０８】
（１８）モード３でのワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はワード単位のデータの読み出し動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０と１、あるいは２と３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０及びＭ１から読み出されたデータはＭＬＴ０及びＭＬＴ１にラッチされ、ＭＣＴ４及びＭＣＴ１０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ１７及びＭＣＴ１９がイネーブルとなってセレクタＭＭＸ９及びＭＭＸ１０を通過し、第２のデータバスＩＤＢ２の下位２バイト（［１５：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２及びＭ３から読み出されたデータはＭＬＴ２及びＭＬＴ３にラッチされ、ＭＣＴ２及びＭＣＴ９がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ１７及びＭＣＴ１９がイネーブルとなってセレクタＭＭＸ９及びＭＭＸ１０を通過し、第２のデータバスＩＤＢ２の下位２バイト（［１５：０］）に出力される。
【０１０９】
（１９）モード３でのワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の下位２バイトから送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がワード単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はワード単位のデータの書き込み動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第２のデータバスＩＤＢ２の下位２バイトから送られてきたデータは、ＭＣＴ１４がイネーブルとなってセレクタＭＭＸ５及びＭＭＸ６を通過し、さらにＭＣＴ５及びＭＣＴ１１がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ０及びＭＬＴ１に入力され、メモリマットＭ０及びＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第２のデータバスＩＤＢ２の下位２バイトから送られてきたデータは、同じくＭＣＴ１４がイネーブルとなってセレクタＭＭＸ５及びＭＭＸ６を通過し、さらにＭＣＴ７及びＭＣＴ１２がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ２及びＭＬＴ３に入力され、メモリマットＭ２及びＭ３に書き込まれる。
【０１１０】
（２０）モード３でのロングワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はロングワード単位のデータの読み出し動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは該当の４つ全てのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。メモリマットＭ０〜Ｍ３から読み出されたデータはＭＬＴ０〜３にラッチされ、ＭＣＴ４及びＭＣＴ１０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ１７、ＭＣＴ１９及びＭＣＴ２１がイネーブルとなってセレクタＭＭＸ９、ＭＭＸ１０、ＭＭＸ１１及びＭＭＸ１２を通過し、第２のデータバスＩＤＢ２（［３１：０］）に出力される。
【０１１１】
（２１）モード３でのロングワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の全ビットを使用して送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶ［２：０］がロングワード単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＭＥＭ１１はロングワード単位のデータの書き込み動作を行う。この時ＡＳ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬ［１：０］は４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは４つ全てのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。第２のデータバスＩＤＢ２から送られてきたデータは、ＭＣＴ１４がイネーブルとなってセレクタＭＭＸ５、ＭＭＸ６、ＭＭＸ７及びＭＭＸ８を通過し、さらにＭＣＴ５、ＭＣＴ１１及びＭＣＴ１３がイネーブルとなってＭＭＸ２、ＭＭＸ４、MCB１及びMCB２を通過し、ＭＬＴ０〜３に入力され、メモリマットＭ０〜３に書き込まれる。
【０１１２】
〔オンチップメモリＭＥＭ１２の動作〕
第２のオンチップメモリＭＥＭ１２の詳細な動作を説明する。
【０１１３】
第２のオンチップメモリＭＥＭ１２もＭＥＭ１１と同様、命令によってデータ長を３タイプ区別して対応する機能のメモリである。第２のオンチップメモリＭＥＭ２でのアドレスと実際のメモリ上の対応関係を図１５に示す。図１６にはモード１での、図１７にはモード２での、図１８にはモード３での第２のオンチップメモリＭＥＭ１２における制御回路ＭＤＥＣ１の定義の真理値の表を示す。なお、図１６、図１７、図１８の真理値表は、図３のメモリマップを想定している。以下、モード別に各動作の説明をする。
【０１１４】
（１）モード１での命令フェッチ動作：
ＭＳＥＬがイネーブル状態を示し、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］が命令フェッチ動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はロングワード（３２ビット）のデータ読み出し動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１１５】
（２）モード１でのバイト単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はバイト単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１１６】
（３）モード１でのバイト単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の最下位バイトから送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がバイト単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はバイト単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１１７】
（４）モード１でのワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１１８】
（５）モード１でのワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の下位２バイトから送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がワード単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１１９】
（６）モード１でのロングワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１２０】
（７）モード１でのロングワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の全ビットを使用して送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がロングワード単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はロングワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１２１】
（８）モード２での命令フェッチ動作：
このケースは先の（１）モード１での命令フェッチ動作と同じである。
【０１２２】
（９）モード２でのバイト単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態でかつＭＶ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はバイト単位のデータの読み出し動作を行う。ＭＶ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈであれば上記（２）モード１でのバイト単位のデータの読み出し動作と同じであるが、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＭＥＭ１１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２に出力される。詳細な制御及び動作は、後述の（１６）モード３でのバイト単位のデータの読み出し動作と同じである。
【０１２３】
（１０）モード２でのバイト単位のデータの書き込み動作：
このケースも上記（９）モード２でのバイト単位のデータの読み出し動作と同様、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＭＥＭ１１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２から入力される。詳細な制御及び動作は、後述の（１７）モード３でのバイト単位のデータの書き込み動作と同じである。
【０１２４】
（１１）モード２でのワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態でかつＭＶ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はワード単位のデータの読み出し動作を行う。ＭＶ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈであれば上記（４）モード１でのワード単位のデータの読み出し動作と同じであるが、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＭＥＭ１１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２に出力される。詳細な制御及び動作は、後述の（１８）モード３でのワード単位のデータの読み出し動作と同じである。
【０１２５】
（１２）モード２でのワード単位のデータの書き込み動作：
このケースも上記（１１）モード２でのワード単位のデータの読み出し動作と同様、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＭＥＭ１１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。。また、データは第２のデータバスＩＤＢ２から入力される。詳細な制御及び動作は、後述の（１９）モード３でのワード単位のデータの書き込み動作と同じである。
【０１２６】
（１３）モード２でのロングワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態ででかつＭＶ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はロングワード単位のデータの読み出し動作を行う。ＭＶ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈであれば上記（６）モード１でのロングワード単位のデータの読み出し動作と同じであるが、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＭＥＭ１１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２に出力される。詳細な制御及び動作は、後述の（２０）モード３でのロングワード単位のデータの読み出し動作と同じである。
【０１２７】
（１４）モード２でのロングワード単位のデータの書き込み動作：
このケースも（１３）モード２でのロングワード単位のデータの読み出し動作と同様、ＭＶ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＭＥＭ１１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２から入力される。詳細な制御及び動作は、後述の（２１）モード３でのロングワード単位のデータの書き込み動作と同じである。
【０１２８】
（１５）モード３での命令フェッチ動作：
ＭＳＥＬがイネーブル状態を示し、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］が命令フェッチ動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はロングワード（３２ビット）のデータ読み出し動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１２９】
（１６）モード３でのバイト単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はバイト単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１３０】
（１７）モード３でのバイト単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の最下位バイトから送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がバイト単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はバイト単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１３１】
（１８）モード３でのワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１３２】
（１９）モード３でのワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の下位２バイトから送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がワード単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１３３】
（２０）モード３でのロングワード単位のデータの読み出し動作：
ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１３４】
（２１）モード３でのロングワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の全ビットを使用して送られてくる。ＭＳＥＬがイネーブル状態を示し、ＷＥ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がロングワード単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＭＥＭ１２はロングワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＭＥＭ１１の動作と同じである。
【０１３５】
〔データ演算回路ＥＸ１１の構成〕
第１のデータ演算回路ＥＸ１１の、より具体的な構成例を図１９に示す。図中、ＥＲＧは第１のデータ演算回路ＥＸ１１内のレジスタファイル、ＥＭＰＹは乗算器、ＥＡＬＵは算術論理演算器、Ｅ１ＤＥＣ１は第１のデータ演算回路ＥＸ１１内のデータ転送用制御信号ＥＣＴ１〜６を生成する制御回路、ＥＤＥＣ２は第１のデータ演算回路ＥＸ１１内のデータ演算用制御信号群ＥＲＧＣＴ、ＥＭＴＣＴ、ＥＡＬＣＴを生成する制御回路、ＥＣＴ１〜６は制御回路Ｅ１ＤＥＣ１から出力される制御信号、ＥＭＸ１は第１のデータバスＩＤＢ１の上位ワード（１６ビット）もしくは下位ワードを選択して取り込むセレクタ、ＥＭＸ２は第１のデータバスＩＤＢ１の下位ワード（１６ビット）もしくはオールゼロデータを選択して取り込むセレクタ、ＥＣＢ１はセレクタＥＭＸ１で選択されたデータを上位ワードレジスタ（Ｒ０〜３Ｈ）ファイルに入力するクロックドゲート、ＥＣＢ２はセレクタＥＭＸ２で選択されたデータを下位ワードレジスタ（Ｒ０〜３Ｌ）ファイルに入力するクロックドゲート、ＥＬＴ１はレジスタファイルＥＲＧから選択された上位ワードレジスタ（Ｒ０〜３Ｈ）の出力信号を第１のデータバスに出力するために一端ＣＫ１のタイミングでラッチするためのラッチ回路、ＥＬＴ２はレジスタファイルＥＲＧから選択された下位ワードレジスタ（Ｒ０〜３Ｌ）の出力信号を第１のデータバスに出力するために一端ＣＫ１のタイミングでラッチするためのラッチ回路、ＥＭＸ３はＥＬＴ１の出力を第１のデータバスＩＤＢ１の上位ワードもしくは下位ワードに出力するためのセレクタ、ＥＣＢ３はＥＬＴ２の出力を第１のデータバスＩＤＢ１の下位ワードに出力するためのクロックドゲート、ＥＬＴ３は制御信号ＥＣＴ３、ＥＣＴ４を半周期遅延させるための遅延ラッチ回路、ＥＬＴ４は制御信号ＥＣＴ５を半周期遅延させるための遅延ラッチ回路、ＥＭＶはデータ演算回路ＥＸ１１、ＥＸ１２双方にデータ転送動作を指示するための制御信号、ＥＤＩＯはデータ演算回路ＥＸ１１、ＥＸ１２双方にデータ転送動作時の転送方向を指定するための制御信号、ＥＤＬはデータ演算回路ＥＸ１１、ＥＸ１２双方にデータ転送動作時のデータビット長を指定するための制御信号、ＥＸＣＮＴはデータ演算回路ＥＸ１１、ＥＸ１２双方に演算動作を指示するための制御信号群である。なお、ＥＭＶ、ＥＤＩＯ、ＥＤＬ及びＥＸＣＮＴは中央処理回路ＣＰＵ１が出力している制御信号群ＣＮＴに含まれている制御信号である。データ演算用制御信号群ＥＲＧＣＴは、例えば、レジスタファイルＥＲＧ中の特定のレジスタ、例えばＲ０Ｈ、Ｒ１Ｌ等、を選択し保持されているデータを乗算器ＥＭＰＹに供給する信号、レジスタファイルＥＲＧ中の特定のレジスタ、例えばＲ１Ｈ及びＲ１Ｌを選択し保持されているデータを算術論理演算器ＥＡＬＵに供給する信号、乗算器ＥＭＰＹ又は算術論理演算器ＥＡＬＵからの演算結果を選択されたレジスタ、例えばＲ２Ｈ及びＲ２Ｌ等、にストアするための制御信号などの複数種類の信号から成る。データ演算用制御信号群ＥＭＴＣＴは、例えば、乗算器ＥＭＰＹへ供給される入力データが符号付きか符号無しかを指定する信号、乗算器ＥＭＰＹの演算結果をシフトするか否かを決定する信号、などの複数種類の信号から成る。データ演算用制御信号群ＥＡＬＣＴは、例えば、算術論理演算器ＥＡＬＵにおいて加算、ＡＮＤ、ＯＲ、ＥｘｃｌｕｓｉｖｅＯＲ等の算術論理演算動作を選択する信号などの複数種類の信号から成る。
【０１３６】
〔データ演算回路ＥＸ１２の構成〕
第２のデータ演算回路ＥＸ１２の、より具体的な構成例を図２０に示す。第１及び第２のデータ演算回路ＥＸ１１、ＥＸ１２は、接続するデータバスと制御回路Ｅ１ＤＥＣ１とＥ２ＤＥＣ１の機能を定義する真理値が異なるだけで、後の構造は同じであるので、図中の記号説明は省略する。
【０１３７】
〔データ演算回路ＥＸ１１の動作〕
第１のデータ演算回路ＥＸ１１の詳細な動作を説明する。
【０１３８】
図２１ａは制御回路Ｅ１ＤＥＣ１の機能を表す真理値の表、図２２ａは第１のデータ演算回路ＥＸ１１内レジスタファイルの書き込み／読み出し動作時のタイミングチャート図である。本実施例のデータ演算回路は、ディジタル信号処理を効率良く実行可能な演算回路を取り上げている。レジスタファイルＥＲＧは３２ビット長の複数のレジスタから構成されている。各レジスタは１６ビット長の上位ワード及び１６ビット長の下位ワードから構成されている。例えば、レジスタＲ０は上位ワードＲ０Ｈ及び下位ワードＲ０Ｌから成っている。演算ユニットとしては、通常の算術論理演算器ＥＡＬＵと、乗算器ＥＭＰＹが搭載され、並列に演算実行が可能なように、制御信号群ＥＸＣＮＴによって制御される。算術論理演算器ＥＡＬＵは、レジスタのビット長と同じ３２ビットの演算を行う。一方乗算器はソースデータは１６ビットのデータを入力し、３２ビットの結果を出力する。
【０１３９】
ここで図１９を用いて簡単に乗算器ＥＭＰＹの演算動作を説明する。
【０１４０】
データ演算制御回路ＥＤＥＣ２がデータ演算用制御信号群ＥＲＧＣＴ、ＥＭＴＣＴ、ＥＡＬＣＴを生成出来る状態にするために、制御回路Ｅ１ＤＥＣ１から動作イネーブル信号ＥＮが入力される。
【０１４１】
動作イネーブル信号ＥＮが入力されたデータ演算制御回路ＥＤＥＣ２はデータ演算用制御信号群ＥＲＧＣＴのうち、レジスタファイルＥＲＧ中の特定のレジスタを選択する。本実施例の場合は、乗算器ＥＭＰＹの一入力のビット長は１６ビットであるので、１６ビット分のレジスタ、例えばＲ０Ｈを乗数、Ｒ３Ｈを被乗数として選択する。上記選択された１６ビット分のレジスタに保持されたデータを乗算器ＥＭＰＹに供給させる信号を上記ＥＲＧに与える。上記ＥＤＥＣ２はデータ演算用制御信号群ＥＭＴＣＴのうち、乗算器ＥＭＰＹに対し、供給された入力データが符号付きか符号無しかを指定する信号、乗算器ＥＭＰＹの演算結果をシフトするか否かを決定する信号などを与え、上記ＥＭＴＣＴによって指定した演算動作を乗算器ＥＭＰＹに行わせる。次に上記演算動作の結果を上記レジスタファイルＥＲＧ中の特定のレジスタを指定する。本実施例の場合は乗算器ＥＭＰＹの出力のビット長は３２ビットであるので、一つのレジスタを選択する、例えばＲ２Ｈ及びＲ２Ｌを指定する。上記指定されたレジスタに上記演算動作の結果を書き込ませる制御信号を上記データ演算制御回路ＥＤＥＣ２から上記レジスタファイルＥＲＧに与える。上記制御信号により、上記乗算器ＥＭＰＹにおける上記演算動作の結果は上記レジスタファイルＥＲＧ中の特定のレジスタに書き込まれる。
【０１４２】
続いて簡単に算術論理演算器ＥＡＬＵの演算動作を説明する。
【０１４３】
データ演算制御回路ＥＤＥＣ２がデータ演算用制御信号群ＥＲＧＣＴ、ＥＭＴＣＴ、ＥＡＬＣＴを生成出来る状態にするために、制御回路Ｅ２ＤＥＣ１から動作イネーブル信号ＥＮが入力される点は先に述べた乗算器の演算動作と同じである。
【０１４４】
動作イネーブル信号ＥＮが入力されたデータ演算制御回路ＥＤＥＣ２はデータ演算用制御信号群ＥＲＧＣＴのうち、レジスタファイルＥＲＧ中の特定のレジスタを選択する。本実施例の場合は算術論理演算器ＥＡＬＵの一入力のビット長は３２ビットであるので、一つのレジスタを選択する、例えばＲ０Ｈ及びＲ０Ｌ、並びに、Ｒ１Ｈ及びＲ１Ｌを選択する。上記選択されたレジスタに保持されたデータを算術論理演算器ＥＡＬＵに供給させる信号を上記ＥＲＧに与える。上記ＥＤＥＣ２はデータ演算用制御信号群ＥＡＬＣＴのうち、上記算術論理演算器ＥＡＬＵに対し、加算、ＡＮＤ、ＯＲ、ＥｘｃｌｕｓｉｖｅＯＲ等の算術論理演算動作を選択する信号などを与え、上記ＥＡＬＣＴによって指定した演算動作を上記算術論理演算器ＥＡＬＵに行わせる。次に上記演算動作の結果を上記レジスタファイルＥＲＧ中の特定のレジスタを指定する。本実施例の場合は算術論理演算器ＥＡＬＵの出力のビット長は３２ビットであるので、３２ビット分のレジスタを指定する、例えばＲ２Ｈ及びＲ２Ｌを指定する。上記指定されたレジスタに上記演算動作の結果を書き込ませる制御信号を上記データ演算制御回路ＥＤＥＣ２から上記レジスタファイルＥＲＧに与える。上記制御信号により、上記算術論理演算器ＥＡＬＵにおける上記演算動作の結果は上記レジスタファイルＥＲＧ中の特定のレジスタに書き込まれる。
【０１４５】
さらに、上述した乗算器における演算と算術論理演算器における演算とを組み合わせることによって、フィルタリング処理などで行われる積和演算動作が実現できる。すなわち、上述した乗算器において演算動作を行った後に、上記演算動作の結果を算術論理演算器ＥＡＬＵの一入力として算術論理演算を行うのである。上記積和演算動作を行う場合、パイプライン処理、すなわち乗算器における演算動作と、乗算器における１サイクル以前の演算動作結果を算術論理演算器の一入力として演算する演算動作とを並行して行ってもよい。既述した乗算器ＥＭＰＹの演算動作説明及び算術論理演算器ＥＡＬＵの演算動作説明は他の実施例でも同様であり、他の実施例中においても、乗算器における演算と算術論理演算器における演算とを組み合わせることによって、フィルタリング処理などで行われる積和演算動作が実現できることはいうまでもない。
【０１４６】
尚、本実施例の説明を含む他実施例の説明中、演算回路が「非活性状態」とは、データ演算回路とデータバスとの間のデータのやりとりがない状態のことである。例えば、第１のデータバスに第２の演算回路に供給されるべきデータが存在する場合に、第１の演算回路からのデータが上記第１のデータバスに転送された場合には上記第２の演算回路に供給されるべきデータが破壊されてしまう。したがって、「非活性状態」にあるデータ演算回路は、データバスへのデータ転送をしないことが最低限必要である。具体的にいえば、データ演算回路の制御信号群ＣＮＴが入力される制御回路Ｅ１ＤＥＣ１は動作をするが、上記制御回路Ｅ１ＤＥＣ１から出力される信号ＥＣＴ３乃びＥＣＴ４をｌｏｗで固定、つまりディスエイブル状態で固定することにより、データバスへのデータ出力を司るクロックドゲートＥＣＢ３及びセレクタＥＭＸ３非接続にすることによって、レジスタファイルＥＲＧからデータバスへのデータの出力が停止されるのである。本実施例においては上記クロックドゲートＥＣＢ３及びセレクタＥＭＸ３を非接続にするのに、信号ＥＣＴ３乃びＥＣＴ４に基づいて、クロックＣＫ１又はＣＫ２とタイミングをとることで行うが、上記ＥＣＢ３及び上記ＥＭＸ３へのクロック信号ＣＫ１、ＣＫ２をｌｏｗで固定、つまりディスエイブル状態で固定することによっても上記クロックドゲートＥＣＢ１乃至ＥＣＢ３、ＥＭＸ３を非接続にすることができ、レジスタファイルＥＲＧからデータバスへのデータの出力を停止させることができる。
【０１４７】
データ演算回路とデータバスとの間でデータのやりとりをしないためには、当然レジスタファイルＥＲＧへの入力を停止させてもよいので、データバスからのデータ入力を司るセレクタＥＭＸ１、ＥＭＸ２及びクロックドゲートＥＣＢ１及びＥＣＢ２を非接続にするために信号ＥＣＴ１、ＥＣＴ２、ＥＣＴ５をディスエイブル状態で固定してもよい。また、その代わりにクロック信号ＣＫ１、ＣＫ２をディスエイブル状態で固定してデータバスからの入力を停止させてもよいことはいうまでもない。これにより、レジスタファイルＥＲＧ中のデータが破壊されることを防止できる。
【０１４８】
上述の通りレジスタファイルＥＲＧとデータバスとのデータのやりとりが停止される間、無駄な電力を消費させないため、制御回路Ｅ１ＤＥＣ１から動作イネーブル信号ＥＮをデータ演算制御回路ＥＤＥＣ２に入力し、乗算器ＥＭＰＹ及び算術論理演算器ＥＡＬＵの状態を遷移させないことにより演算動作を停止させてもよい。
【０１４９】
これらの演算器及びレジスタは、少なくとも固定小数点形式のデータを扱う。整数データと固定小数点形式のデータとの取り扱い方の詳しい説明は既に多くの公知例があるので省略するが、本発明の実施に深く関係するデータ転送時における違いについて説明する。
【０１５０】
整数データの場合、従来のマイクロコンピュータのＣＰＵ等が行っている動作と同じである。すなわち、１６ビット長のワードデータを転送する場合、レジスタの下位側の１６ビットが転送動作の対象になる。一方、固定小数点データの場合は、小数点位置がビット３１とビット３０の間にあるため、上位側に比べて下位側は有効数字として重みが非常に小さくなり、場合によっては誤差の範囲になる。従ってレジスタのビット長より幅の短いデータを転送する場合、上位のデータが転送動作の対象となる。本実施例でも、ワード長（１６ビット）のデータ転送動作の場合、上位側のレジスタが転送動作の対象になる。
【０１５１】
（１）モード１及びモード２での動作：
中央処理回路ＣＰＵ１がワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｌｏｗでかつＥＤＬ＝ｌｏｗになり、第１のデータ演算回路ＥＸ１１は第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータを取り込む動作を行う。制御信号ＥＣＴ２がイネーブルとなり、第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータはセレクタＥＭＸ１を通過し、ＥＣＴ５がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０１５２】
中央処理回路ＣＰＵ１がワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｈｉｇｈでかつＥＤＬ＝ｌｏｗになり、第１のデータ演算回路ＥＸ１１は第１のデータバスＩＤＢ１の下位１６ビットへワードデータを出力する動作を行う。制御信号ＥＣＴ６がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ１を通過し、ＥＣＴ４がイネーブルになってセレクタＥＭＸ３を経て第１のデータバスＩＤＢ１の下位１６ビットに出力される。なお、ここでは第１のデータバスＩＤＢ１の上位１６ビットには何も出力しないが、転送先が３２ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【０１５３】
中央処理回路ＣＰＵ１がロングワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｌｏｗでかつＥＤＬ＝ｈｉｇｈになり、第１のデータ演算回路ＥＸ１１は第１のデータバスＩＤＢ１上にあるロングワードデータを取り込む動作を行う。制御信号ＥＣＴ１がイネーブルとなり、第１のデータバスＩＤＢ１の上位１６ビットにあるワードデータはセレクタＥＭＸ１を通過し、ＥＣＴ５がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２では第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータが入力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０１５４】
中央処理回路ＣＰＵ１がロングワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｈｉｇｈでかつＥＤＬ＝ｈｉｇｈになり、第１のデータ演算回路ＥＸ１１は第１のデータバスＩＤＢ１へロングワードデータを出力する動作を行う。制御信号ＥＣＴ６がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ１を通過し、ＥＣＴ３がイネーブルになってセレクタＥＭＸ３を経て第１のデータバスＩＤＢ１の上位１６ビットに出力される。同時に出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの下位ワードからラッチ回路ＥＬＴ２を通過し、クロックドゲートＥＣＢ３を経て第１のデータバスＩＤＢ１の下位１６ビットに出力される。
【０１５５】
（２）モード３での動作：
モード状態信号ＭＤ［１：０］がモード３を示すと、制御回路Ｅ１ＤＥＣ１では動作イネーブル信号ＥＮをディセーブル状態にして、以後モードが変更されるまで第１のデータ演算回路ＥＸ１１は中央処理回路ＣＰＵ１がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路ＣＰＵ１が発行する制御は第２のデータ演算回路ＥＸ１２で有効となる。
【０１５６】
〔データ演算回路ＥＸ１２の動作〕
第２のデータ演算回路ＥＸ１２の詳細な動作を説明する。
【０１５７】
図２１ｂは制御回路Ｅ２ＤＥＣ１の機能を表す真理値の表である。動作タイミングは第１のデータ演算回路ＥＸ１１と同じである。
【０１５８】
（１）モード１での動作：
モード状態信号ＭＤ［１：０］がモード１を示すと、制御回路Ｅ２ＤＥＣ１では動作イネーブル信号ＥＮをディセーブル状態にして、以後モードが変更されるまで第２のデータ演算回路ＥＸ１２は中央処理回路ＣＰＵ１がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路ＣＰＵ１が発行する制御は第１のデータ演算回路ＥＸ１１で有効となる。
【０１５９】
（２）モード２及びモード３での動作：
中央処理回路ＣＰＵ１がワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｌｏｗでかつＥＤＬ＝ｌｏｗになり、第２のデータ演算回路ＥＸ１２は第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータを取り込む動作を行う。制御信号ＥＣＴ２がイネーブルとなり、第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータはセレクタＥＭＸ１を通過し、ＥＣＴ５がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０１６０】
中央処理回路ＣＰＵ１がワ−ド単位のデ−タ出力動作を指示する制御信号を発行すると、ＥＭＶがイネ−ブル（ｈｉｇｈ）、ＥＤＩＯ＝ｈｉｇｈでかつＥＤＬ＝ｌｏｗになり、第２のデ−タ演算回路ＥＸ１２は第２のデ−タバスＩＤＢ２の下位１６ビットへワ−ドデ−タを出力する動作を行う。制御信号ＥＣＴ６がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ１を通過し、ＥＣＴ４がイネーブルになってセレクタＥＭＸ３を経て第２のデータバスＩＤＢ２の下位１６ビットに出力される。なお、ここでは第２のデータバスＩＤＢ２の上位１６ビットには何も出力しないが、転送先が３２ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【０１６１】
中央処理回路ＣＰＵ１がロングワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｌｏｗでかつＥＤＬ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ１２は第２のデータバスＩＤＢ２上にあるロングワードデータを取り込む動作を行う。制御信号ＥＣＴ１がイネーブルとなり、第２のデータバスＩＤＢ２の上位１６ビットにあるワードデータはセレクタＥＭＸ１を通過し、ＥＣＴ５がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２では第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータが入力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０１６２】
中央処理回路ＣＰＵ１がロングワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｈｉｇｈでかつＥＤＬ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ１２は第２のデータバスＩＤＢ２へロングワードデータを出力する動作を行う。制御信号ＥＣＴ６がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ１を通過し、ＥＣＴ３がイネーブルになってセレクタＥＭＸ３を経て第２のデータバスＩＤＢ２の上位１６ビットに出力される。同時に出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの下位ワードからラッチ回路ＥＬＴ２を通過し、クロックドゲートＥＣＢ３を経て第２のデータバスＩＤＢ２の下位１６ビットに出力される。
【０１６３】
以上のように、本実施例では本発明を適用することにより、演算に必要なソースデータを遅滞なく供給することが出来、データ転送がネックとなることなく単独の命令で２並列実行機能による高性能化の効果を十分発揮させることが可能となる。また、通常の単独演算との整合性についても、問題は生じない。
【０１６４】
上記実施例では、第１及び第２のデータ演算回路ＥＸ１１、ＥＸ１２は制御回路Ｅ１ＤＥＣ１、Ｅ２ＤＥＣ１の真理値が若干異なっていたが、モード設定回路ＭＯＤＥ１でのモード表示定義を工夫することにより、同一の真理値にすることもできる。例えば、
モード１：ＭＤ［１：０］＝０１
モード２：ＭＤ［１：０］＝１１
モード３：ＭＤ［１：０］＝１０
というように定義すると、第１のデータ演算回路ＥＸ１１の制御回路Ｅ１ＤＥＣ１はＭＤ［０］でモード制御可能となり、同様に第２のデータ演算回路ＥＸ１２の制御回路Ｅ２ＤＥＣ１はＭＤ［１］でモード制御可能となり、この入力信号の名前のみが異なるだけで、内部の論理構造は同じになる。これはモード信号の定義を変えずにそれぞれのデータ演算回路をイネーブルにする信号にデコードしてモード設定回路ＭＯＤＥ１から出力しても、同様の効果が得られるし、他にもさまざまな方法が考えられるが、ここでは省略する。
【０１６５】
〔第２の実施例のマイクロコンピュータの全体構成〕
図２３は本発明を適用した１チップマイクロコンピュータの第２の実施例である。図中、ＬＳＩ２は本発明を適用したマイクロコンピュータ、ＣＰＵ２は命令をフェッチ、デコードして所要の制御信号を生成する回路を包含した中央処理回路、ＣＦＣＨ２はＣＰＵ２内部に含まれている命令フェッチ回路、ＭＯＤＥ２はマイコンＬＳＩ２を制御信号によって指示されたモードに設定し、その状態を保持するモード設定回路、ＣＡＤＲ２はＣＰＵ２内部に含まれ、指示されたアドレスを生成するアドレス生成回路、ＭＥＭ２１はチップ上に内蔵された第１のオンチップメモリ、ＭＥＭ２２はチップ上に内蔵された第２のオンチップメモリ、ＥＸ２１はデータ演算を実行する第１のデータ演算回路、ＥＸ２２はデータ演算を実行する第２のデータ演算回路、ＩＤＢ１はＭＥＭ２１、ＭＥＭ２２、ＥＸ２１、ＭＯＤＥ２及びバスインタフェース回路ＢＩＦ２に接続され、データ転送に使用される第１のデータバス、ＩＤＢ２はＭＥＭ２２、ＥＸ２１、ＥＸ２２、ＭＯＤＥ２及びバスインタフェース回路ＢＩＦ２に接続され、データ転送に使用される第２のデータバス、ＢＩＦ２はＩＤＢ１バスと周辺モジュールに接続されている周辺モジュール用データバスＰＤＢとのデータ受渡し及び各周辺モジュールへのデータ転送制御信号を生成するバス・インタフェース回路である。その他の記号は図１の第１の実施例と同じである。
【０１６６】
本実施例では命令フェッチ回路ＣＦＣＨ２、モード設定回路ＭＯＤＥ２、アドレス生成回路ＣＡＤＲ２、第１のオンチップメモリＭＥＭ２１が第１のデータバスＩＤＢ１に接続されており、第２のデータバスＩＤＢ２には接続されていない。その代わりに第２のデータ演算回路ＥＸ２２がＩＤＢ１、ＩＤＢ２の両方に接続されている。
【０１６７】
以下、図２３におけるモード別の動作を説明する。
【０１６８】
第１のデータ演算回路ＥＸ２１と第２のデータ演算回路ＥＸ２２はデータバスとの接続部分以外の機能は図１と同様に等価であり、命令コード上では両者の演算機能及びモジュール内にあるレジスタは区別されず、モードによって区別される。モード設定回路ＭＯＤＥ２も、ＭＯＤＥ１と同様の３つのモードの内の１つのモードを設定して状態を保持する。尚、モード１及び２のみでもよいことは既述の第１の実施例と同じである。
【０１６９】
モード１：第１のデータ演算回路による単独演算を実行可能。リセット時の初期値。
【０１７０】
モード２：第１及び第２のデータ演算回路による２並列演算を実行可能。
【０１７１】
モード３：第２のデータ演算回路による単独演算を実行可能。
【０１７２】
マイクロコンピュータの命令セットに含まれる命令のフォーマット及び命令コードの一例は第１の実施例の説明において、図５６で示したのと同様なので説明は省略する。また、本実施例においては各演算回路は単精度演算を行う場合の構成を示しているが、第１の実施例と同様に、各演算回路が単精度演算及び倍精度演算の両方を行うように構成してもよい。
【０１７３】
〔モード別の動作〕
モード１及びモード２での動作は図１の実施例と同じなので、説明は省略する。  マイクロプロセッサＬＳＩ１がモード３状態の時、ＭＤ［１］＝ｈｉｇｈ、ＭＤ［０］＝ｌｏｗとなる。本実施例では図１の実施例と異なり、モード３においては第２のデータ演算回路ＥＸ２２を除いてモード１の時と同様の接続状態になる。従って第２のデータ演算回路ＥＸ２２以外のモジュールの動作はモード１の時と同じである。
【０１７４】
モード３においては第２のデータ演算回路ＥＸ２２もＩＤＢ１と接続される。デコードされた命令がメモリからのデータの読み出し命令でかつ、命令で指定されたデスティネーションオペランドが第１又は第２のデータ演算回路ＥＸ２１、ＥＸ２２の内部にある場合、オペランドコードはＥＸ２１、ＥＸ２２で共通であるが、モード３では第１のデータ演算回路ＥＸ２１は非活性状態なので、ＩＤＢ１上のデータがＥＸ１２に取り込まれる。デコードされた命令がメモリへのデータの書き込み命令でかつ、命令で指定されたソースオペランドが第１又は第２のデータ演算回路ＥＸ１１、ＥＸ１２の内部にある場合、オペランドコードはＥＸ２１、ＥＸ２２で共通であるが、モード３では第１のデータ演算回路ＥＸ２１は非活性状態なので、ＥＸ２２内のデータがＩＤＢ１上に出力される。モード３では、メモリ以外の各モジュール間のデータ転送も、モード１と同様にＩＤＢ１を用いて実行される。
【０１７５】
〔モード設定回路ＭＯＤＥ２の構成〕
モード設定回路ＭＯＤＥ２のより具体的な構成例を図２４に示す。図中、ＭＤＤＥＣ２はモード設定回路内の制御信号ＤＣＴ１１〜１３を生成する制御回路、ＤＣＴ１１〜１３は制御回路ＭＤＤＥＣ２から出力される制御信号、ＤＣＢ２は第１のデータバスＩＤＢ１上のデータを取り込むクロックドゲート、ＤＣＢ３はクロックドゲートＤＣＢ２で取り込まれたデータをモードレジスタＭＤＲに入力するクロックドゲート、ＤＣＢ４はＤＬＴ１の出力を第１のデータバスＩＤＢ１に出力するためのクロックドゲート、ＤＬＴ５は制御信号ＤＣＴ１１を半周期遅延させるための遅延ラッチ回路、ＤＬＴ６は制御信号ＤＣＴ１３を半周期遅延させるための遅延ラッチ回路である。その他の記号は図６と同じである。
【０１７６】
図２５は制御回路ＭＤＤＥＣ２の機能を表す真理値の表である。図２５に定義されているように、本実施例ではモード設定回路ＭＯＤＥ２は第１のデータバスＩＤＢ１と接続できるため、モード３でもモード１及び２と同様の動作を行う他は、第１の実施例と同じである。
【０１７７】
中央処理回路ＣＰＵ２内の命令フェッチ回路ＣＦＣＨ２やアドレス生成回路ＣＡＤＲ２においても、モード設定回路ＭＤＤＥＣ２と同様の構成方法で、第１のデータバスＩＤＢ１とのデータを入出力出来ることは明らかであろう。
【０１７８】
〔オンチップメモリＭＥＭ２１の構成及び動作〕
第１のオンチップメモリＭＥＭ２１の、より具体的な構成例を図２６に示す。図中、ＭＣＢ３、４、５及び６は第１のデータバスＩＤＢ１からそれぞれバイト単位のデータを取り込むクロックドゲート、ＭＣＢ７、８、９及び１０は第１のデータバスＩＤＢ１へバイト単位のデータをそれぞれ出力するクロックドゲート、ＭＤＥＣ２は第１のオンチップメモリＭＥＭ２１内の制御信号ＭＣＴ１〜１３、３１〜３４を生成する制御回路、ＭＣＴ１〜１３、３１〜３４は制御回路ＭＤＥＣ２から出力される制御信号である。その他の記号は図８と同じである。また、制御信号ＭＣＴ１〜１３も図８の信号と同じである。
【０１７９】
第１のオンチップメモリＭＥＭ２１の詳細な動作を説明する。
【０１８０】
図２６のメモリも図８と同様、命令によってデータ長を３タイプ区別して対応する機能のメモリを取り上げている。従ってアドレスと実際のメモリ上の対応関係や制御コード信号ＭＶ［２：０］のコード定義も図９及び図１０と同様であり、メモリマット周りの動作も図８と同じなので、ここでは説明は省略する。
【０１８１】
図２８にはモード１又はモード３での、図２９にはモード２での制御回路ＭＤＥＣ２の定義の真理値の表を示す。タイミングも図１４と同様である。以下、モード別に各動作の説明をする。
【０１８２】
（１）モード１での動作：
本実施例では、データを入出力するバスが第１のデータバスＩＤＢ１になっているため、図８ではセレクタになっている部分がクロックドゲートになっているだけであり、基本的には動作は図８の時と変わらない。従って第１のオンチップメモリＭＥＭ２１のモード１での動作は実施例１の図８の動作と同じであるので、各動作別の詳細な説明は省略する。
【０１８３】
（２）モード２での動作：
このケースも先の（１）モード１での動作と同じである。
【０１８４】
（３）モード３での動作：
モード３では、先の第１の実施例とは異なり、第２のデータバスＩＤＢ２の代わりにモード１と同様に第１のデータバスＩＤＢ１とデータの入出力動作を行う。従って動作の詳細はモード１の場合と同じである。
【０１８５】
〔オンチップメモリＭＥＭ２２の構成及び動作〕
第２のオンチップメモリＭＥＭ２２の、より具体的な構成例を図２７に示す。図２７の回路構造は、真理値の定義が変わったことにより図８の制御信号ＭＣＴ１４〜２１がＭＣＴ４１〜４８におき代わっているのみで、同じである。図２７中の制御回路ＭＤＥＣ３の真理値の定義を図３０及び図３１に示す。
【０１８６】
図３０はモード１及びモード３の場合の真理値である。本実施例ではモード１とモード３とで第２のオンチップメモリＭＥＭ２２のの動作は同じであり、真理値の内容はＭＣＴ１４〜２１がＭＣＴ４１〜４８におき代わっているのみで第１の実施例の図１６と同じである。図３１はモード２の場合の真理値であるが、これも真理値の内容は第１の実施例の図１７と同じである。
【０１８７】
〔データ演算回路の構成及び動作〕
第１のデータ演算回路ＥＸ２１は第１の実施例の第１のデータ演算回路ＥＸ１１と同じ構造なので、ここでは説明を省略する。
【０１８８】
第２のデータ演算回路ＥＸ２２の、より具体的な構成例を図３２に示す。図中、Ｅ３ＤＥＣ１は第１のデータ演算回路ＥＸ２１内のデータ転送用制御信号ＥＣＴ５〜６、１１〜１８を生成する制御回路、ＥＣＴ５〜６、１１〜１８は制御回路Ｅ３ＤＥＣ１から出力される制御信号、ＥＭＸ４は第１のデータバスＩＤＢ１又は第２のデータバスＩＤＢ２の上位ワード（１６ビット）もしくは下位ワードを選択して取り込むセレクタ、ＥＭＸ５は第１のデータバスＩＤＢ１又は第２のデータバスＩＤＢ２の下位ワード（１６ビット）もしくはオールゼロデータを選択して取り込むセレクタ、ＥＣＢ１はセレクタＥＭＸ４で選択されたデータをレジスタファイルＥＲＧに入力するクロックドゲート、ＥＣＢ２はセレクタＥＭＸ５で選択されたデータをレジスタファイルＥＲＧに入力するクロックドゲート、ＥＬＴ１はレジスタファイルＥＲＧから選択された上位ワードレジスタ（Ｒ０〜３Ｈ）の出力信号を第１のデータバス又は第２のデータバスに出力するために一端ＣＫ１のタイミングでラッチするためのラッチ回路、ＥＬＴ２はレジスタファイルＥＲＧから選択された下位ワードレジスタ（Ｒ０〜３Ｌ）の出力信号を第１のデータバス又は第２のデータバスに出力するために一端ＣＫ１のタイミングでラッチするためのラッチ回路、ＥＭＸ６はＥＬＴ１の出力を第１のデータバスＩＤＢ１又は第２のデータバスＩＤＢ２の上位ワードもしくは下位ワードに出力するためのセレクタ、ＥＭＸ７はＥＬＴ２の出力を第１のデータバスＩＤＢ１又は第２のデータバスＩＤＢ２の下位ワードに出力するためのセレクタ、ＥＬＴ５は制御信号ＥＣＴ５及びＥＣＴ１５〜１８を半周期遅延させるための遅延ラッチ回路である。その他の記号は図１９と同じである。
【０１８９】
第２のデータ演算回路ＥＸ２２の詳細な動作を説明する。
【０１９０】
図３３は制御回路Ｅ３ＤＥＣ１の機能を表す真理値の表である。なお、データ演算回路内レジスタファイルの書き込み／読み出し動作時のタイミングは、モード２で第２のデータバスＩＤＢ２を使用し、モード１とモード３では第１のデータバスＩＤＢ１ということが異なる他は、図２２ｂと同じである。本実施例のデータ演算回路も、固定小数点形式のデータを扱うディジタル信号処理を効率良く実行可能な演算回路を取り上げており、演算機能は図２０と同じであるので、詳細な説明は省略し、本発明に関係するデータ転送動作のみ説明する。
【０１９１】
（１）モード１での動作：
モード状態信号ＭＤ［１：０］がモード１を示すと、制御回路Ｅ３ＤＥＣ１では動作イネーブル信号ＥＮをディセーブル状態にして、以後モードが変更されるまで第２のデータ演算回路ＥＸ２２は中央処理回路ＣＰＵ２がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路ＣＰＵ２が発行する制御は第１のデータ演算回路ＥＸ２１で有効となる。（２）モード２での動作：
中央処理回路ＣＰＵ２がワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｌｏｗでかつＥＤＬ＝ｌｏｗになり、第２のデータ演算回路ＥＸ２２は第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータを取り込む動作を行う。制御信号ＥＣＴ１２がイネーブルとなり、第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータはセレクタＥＭＸ４を通過し、ＥＣＴ５がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ５ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０１９２】
中央処理回路ＣＰＵ２がワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｈｉｇｈでかつＥＤＬ＝ｌｏｗになり、第２のデータ演算回路ＥＸ２２は第２のデータバスＩＤＢ２の下位１６ビットへワードデータを出力する動作を行う。制御信号ＥＣＴ６がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ１を通過し、ＥＣＴ１６がイネーブルになってセレクタＥＭＸ６を経て第２のデータバスＩＤＢ２の下位１６ビットに出力される。なお、ここでは第２のデータバスＩＤＢ２の上位１６ビットには何も出力しないが、転送先が３２ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【０１９３】
中央処理回路ＣＰＵ２がロングワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｌｏｗでかつＥＤＬ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ２２は第２のデータバスＩＤＢ２上にあるロングワードデータを取り込む動作を行う。制御信号ＥＣＴ１１がイネーブルとなり、第２のデータバスＩＤＢ２の上位１６ビットにあるワードデータはセレクタＥＭＸ４を通過し、ＥＣＴ５がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ５では第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータが入力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０１９４】
中央処理回路ＣＰＵ２がロングワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｈｉｇｈでかつＥＤＬ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ２２は第２のデータバスＩＤＢ２へロングワードデータを出力する動作を行う。制御信号ＥＣＴ６がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ１を通過し、ＥＣＴ１５がイネーブルになってセレクタＥＭＸ６を経て第２のデータバスＩＤＢ２の上位１６ビットに出力される。同時に出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの下位ワードからラッチ回路ＥＬＴ２を通過し、ＥＭＸ７を経て第２のデータバスＩＤＢ２の下位１６ビットに出力される。
【０１９５】
（３）モード３での動作：
中央処理回路ＣＰＵ２がワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｌｏｗでかつＥＤＬ＝ｌｏｗになり、第２のデータ演算回路ＥＸ２２は第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータを取り込む動作を行う。制御信号ＥＣＴ１４がイネーブルとなり、第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータはセレクタＥＭＸ４を通過し、ＥＣＴ５がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ５ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０１９６】
中央処理回路ＣＰＵ２がワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｈｉｇｈでかつＥＤＬ＝ｌｏｗになり、第２のデータ演算回路ＥＸ２２は第１のデータバスＩＤＢ１の下位１６ビットへワードデータを出力する動作を行う。制御信号ＥＣＴ６がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ１を通過し、ＥＣＴ１８がイネーブルになってＥＭＸ６を経て第１のデータバスＩＤＢ１の下位１６ビットに出力される。なお、ここでは第１のデータバスＩＤＢ１の上位１６ビットには何も出力しないが、転送先が３２ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【０１９７】
中央処理回路ＣＰＵ２がロングワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｌｏｗでかつＥＤＬ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ２２は第１のデータバスＩＤＢ１上にあるロングワードデータを取り込む動作を行う。制御信号ＥＣＴ１３がイネーブルとなり、第１のデータバスＩＤＢ１の上位１６ビットにあるワードデータはセレクタＥＭＸ４を通過し、ＥＣＴ５がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ５では第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータが入力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０１９８】
中央処理回路ＣＰＵ２がロングワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯ＝ｈｉｇｈでかつＥＤＬ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ２２は第１のデータバスＩＤＢ１へロングワードデータを出力する動作を行う。制御信号ＥＣＴ６がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ１を通過し、ＥＣＴ１７がイネーブルになってＥＭＸ６を経て第１のデータバスＩＤＢ１の上位１６ビットに出力される。同時に出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの下位ワードからラッチ回路ＥＬＴ２を通過し、ＥＭＸ７を経て第１のデータバスＩＤＢ１の下位１６ビットに出力される。
【０１９９】
以上のように、本実施例でも本発明を適用することにより、第１の実施例と同様に演算に必要なソースデータを遅滞なく供給することが出来、データ転送がネックとなることなく単独の命令で２並列実行機能による高性能化の効果を十分発揮させることが可能となる。また、本実施例では第２のデータ演算回路ＥＸ２２の入出力機能を拡充することにより、逆に中央処理回路ＣＰＵ２内の命令フェッチ回路ＣＦＣＨ２及びアドレス生成回路ＣＡＤＲ２、モード設定回路ＭＯＤＥ２、バス・インタフェース回路モジュールでは第２のデータバスＩＤＢ２との入出力回路機能を備える必要がなくなるという特徴がある。なお、本実施例では、オンチップメモリやデータ演算回路は第１と第２とで異なる回路構成の例を示したが、回路規模がそれほど問題でなければ、同じ第１のオンチップメモリやデータ演算回路を再２のオンチップメモリやデータ演算回路と同じ構成にして別の回路を構築する手間を省き、不要な機能部分は使用しないように制御しても良い。
【０２００】
さらに、上記第２の実施例でも、第１の実施例と同様にモード設定回路ＭＯＤＥ１でのモード表示定義を工夫することにより、第１及び第２のデータ演算回路ＥＸ２１、ＥＸ２２の制御回路を同一の真理値の定義にすることができることは言うまでもない。
【０２０１】
〔第３の実施例のマイクロコンピュータの全体構成〕
図３４は本発明を適用した１チップマイクロコンピュータの第３の実施例である。本実施例では、図１の第１の実施例にさらにディジタル信号処理をより効率よく実行させるために４つのオンチップメモリと６本のデータバス構成にした１チップマイクロコンピュータシステムに本発明を適用している。図中、ＬＳＩ３は本発明を適用したマイクロコンピュータ、ＣＰＵ３は命令をフェッチ、デコードして所要の制御信号を生成する回路を包含した中央処理回路、ＣＡＤＲ３はＣＰＵ３内部に含まれ、指示されたアドレスを最大２つ同時に生成する機能を有するアドレス生成回路、ＩＡＢはＣＡＤＲ３で生成されたアドレスが出力される第１のアドレスバス、ＸＡＢはＣＡＤＲ３で生成されたアドレスが出力される第２のアドレスバス、ＹＡＢはＣＡＤＲ３で生成されたアドレスが出力される第３のアドレスバス、ＸＭＥＭ１はチップ上に内蔵された第１のオンチップメモリ、ＸＭＥＭ２はチップ上に内蔵された第２のオンチップメモリ、ＹＭＥＭ１はチップ上に内蔵された第３のオンチップメモリ、ＹＭＥＭ２はチップ上に内蔵された第４のオンチップメモリ、ＥＸ３１はデータ演算を実行する第１のデータ演算回路、ＥＸ３２はデータ演算を実行する第２のデータ演算回路、ＩＤＢ１はＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１、ＹＭＥＭ２、ＥＸ３１、ＭＯＤＥ１及びバスインタフェース回路ＢＩＦ１に接続され、データ転送に使用される第１のデータバス、ＩＤＢ２はＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１、ＹＭＥＭ２、ＥＸ３２、ＭＯＤＥ１及びバスインタフェース回路ＢＩＦ１に接続され、データ転送に使用される第２のデータバス、ＸＤＢ１はＸＭＥＭ１、ＸＭＥＭ２及びＥＸ３１に接続され、データ転送に使用される第３のデータバス、ＸＤＢ２はＸＭＥＭ１、ＸＭＥＭ２及びＥＸ３２に接続され、データ転送に使用される第４のデータバス、ＹＤＢ１はＹＭＥＭ１、ＹＭＥＭ２及びＥＸ３１に接続され、データ転送に使用される第５のデータバス、ＹＤＢ２はＹＭＥＭ１、ＹＭＥＭ２及びＥＸ３２に接続され、データ転送に使用される第６のデータバスである。その他の記号は図１と同じである。
【０２０２】
本実施例は、使用するバスによって３つのデータ転送動作に分類される。
【０２０３】
（１）第１のアドレスバスＩＡＢ、第１のデータバスＩＤＢ１及び第２のデータバスＩＤＢ２を使ったデータ転送動作は、先の第１の実施例と同じ動作を行う。
【０２０４】
（２）第２のアドレスバスＸＡＢ、第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２は、第１のオンチップメモリＸＭＥＭ１及び第２のオンチップメモリＸＭＥＭ２と、第１のデータ演算回路ＥＸ３１及び第２のデータ演算回路ＥＸ３２との間のデータ転送に使われ、動作はここではワード単位のデータを扱う。
【０２０５】
（３）第３のアドレスバスＹＡＢ、第５のデータバスＹＤＢ１及び第６のデータバスＹＤＢ２は、第３のオンチップメモリＹＭＥＭ１及び第４のオンチップメモリＹＭＥＭ２と、第１のデータ演算回路ＥＸ３１及び第２のデータ演算回路ＥＸ３２との間のデータ転送に使われ、動作はここではワード単位のデータを扱う。
【０２０６】
上記（２）及び（３）のデータ転送動作は、それぞれ単独で実行することも可能であるが、使用するハードウェアリソースが完全に分けられているため、同時並列で実行することも可能になっている。これらの動作は命令によって区別する。  アドレス生成回路ＣＡＤＲ３はプログラムアドレスと２つのデータアクセス用アドレスを同時に生成出来る機能を持つ。このアドレスの同時生成機能については、演算器を複数備え、命令コード上で２つのデータ転送命令を並列に指定出来る領域を設ければよい。
【０２０７】
上記により、本実施例ではモードによって同時に第１のデータ演算回路ＥＸ３１のために第１のオンチップメモリＸＭＥＭ１と、第３のオンチップメモリＹＭＥＭ１から第３及び第５のデータバスＸＤＢ１、ＹＤＢ１を使用して２つのデータを並列に読み出し、第２のデータ演算回路ＥＸ３２のために第２のオンチップメモリＸＭＥＭ２と第４のオンチップメモリＹＭＥＭ２から第４及び第６のデータバスＸＤＢ２、ＹＤＢ２を使用して２つのデータを並列に読み出して来る機能を備えている。このような機能を備えることにより、積和演算処理等のディジタル信号処理には非常に重要なフィルタリング処理を１ステップで１タップの割合で実行することが可能になる。これに本発明を適用すると、モード２では２つのフィルタリング処理を同時に処理できるので、１ステップで２倍の効率で処理を実行することが出来るようになる。
【０２０８】
〔モード別の動作及び命令〕
以下、図３４におけるモード別の動作を説明する。
【０２０９】
第１のデータ演算回路ＥＸ３１と第２のデータ演算回路ＥＸ３２は第１の実施例と同様、機能が等価であり、命令コード上では両者の演算機能及びモジュール内にあるレジスタは区別されず、モードによって区別される。モード設定回路ＭＯＤＥ１及びモードの定義は第１の実施例と同じである。
【０２１０】
マイクロコンピュータの命令セットに含まれる命令のフォーマット及び命令コードの一例は第１の実施例の説明において、図５６で示したのと同様なので説明は省略する。また、本実施例においては各演算回路は単精度演算を行う場合の構成を示しているが、第１の実施例と同様に、各演算回路が単精度演算及び倍精度演算の両方を行うように構成してもよい。
【０２１１】
リセットによる初期状態の時、マイクロプロセッサＬＳＩ３はモード１状態となり、ＭＤ［１］＝ＭＤ［０］＝ｌｏｗとなる。アドレス生成回路ＣＡＤＲ３、命令フェッチ回路ＣＦＣＨ１、バス・インタフェース回路ＢＩＦ１、モード設定回路ＭＯＤＥ１は第１の実施例と同様に、第１のデータバスＩＤＢ１との接続が有効となるように制御される。第１のオンチップメモリＸＭＥＭ１及び第２のオンチップメモリＸＭＥＭ２は、第１のデータバスＩＤＢ１の他、第３のデータバスＸＤＢ１との接続も有効になる。第３のオンチップメモリＹＭＥＭ１及び第４のオンチップメモリＹＭＥＭ２は、第１のデータバスＩＤＢ１の他、第５のデータバスＹＤＢ１との接続も有効になる。
【０２１２】
第１のデータバスＩＤＢ１との接続が有効になる時、アドレスは第１のアドレスバスＩＡＢから供給される。第３のデータバスＸＤＢ１との接続が有効になる時、アドレスは第２のアドレスバスＸＡＢから供給される。第５のデータバスＹＤＢ１との接続が有効になる時、アドレスは第３のアドレスバスＹＡＢから供給される。図３５にモード１の時のＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１及びＹＭＥＭ２のアドレス空間上のマッピング例を示す。なお、図２のメモリマップはモード３の時も同じである。また図２では連続したアドレス空間にＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１及びＹＭＥＭ２をマッピングしているが、第１の実施例と同様特に連続している必要はなく、固有のアドレス空間にマッピングされていれば良いし各メモリの容量も１６Kバイトで固定されるものでもないことは言うまでもない。
【０２１３】
第１のデータ演算回路ＥＸ３１は中央処理回路ＣＰＵ３から発行される制御信号の指示で演算動作を行うが、第２のデータ演算回路ＥＸ３２は制御信号に関係なく非活性状態になる。中央処理回路ＣＰＵ３はプログラムアドレスをアドレス生成回路で生成し、ＩＡＢを通して所定のメモリより命令を読み出してＩＤＢ１から命令フェッチ回路ＣＦＣＨ１へ命令コードを読み込む。ここで命令を読み出すメモリはしもオンチップメモリである必要はなく、例えば外部とのパラレルインタフェース回路ＰＩＯを経て外部にあるメモリから読み込んでも構わない。フェッチした命令コードは命令デコード回路ＣＤＥＣでデコードされ、各モジュールに対して必要な制御信号群ＣＮＴを生成する。
【０２１４】
デコードされた命令が第１のアドレスバスＩＡＢ及び第１のデータバスＩＤＢ１を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第１のアドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスがオンチップメモリＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２がマッピングされたアドレスであった場合、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第１のデータバスＩＤＢ１に出力する。ＩＤＢ１に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。命令で指定されたデスティネーションオペランドが例えばアドレス生成回路ＣＡＤＲ３内部にあるレジスタの場合は、ＩＤＢ１からデータがＣＡＤＲ３内部に取り込まれ、所定のレジスタに入力される。デスティネーションオペランドが第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２の内部にある場合、オペランドコードはＥＸ３１、ＥＸ３２で共通であるが、モード１では第２のデータ演算回路ＥＸ３２は非活性状態なので、ＩＤＢ１上のデータはＥＸ３１に取り込まれる。命令で指定されたデスティネーションオペランドがモード設定回路ＭＯＤＥ１の内部のレジスタの場合の動作は第１の実施例と同じである。
【０２１５】
デコードされた命令が第２のアドレスバスＸＡＢ及び第３のデータバスＸＤＢ１を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第２のアドレスバスＸＡＢに出力する。ＸＡＢに出力されたアドレスは本実施例ではオンチップメモリＸＭＥＭ１かＸＭＥＭ２のどちらかがマッピングされたアドレスである。アクセスされたＸＭＥＭ１又はＸＭＥＭ２は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第３のデータバスＸＤＢ１に出力する。ＸＤＢ１に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。デスティネーションオペランドは、本実施例では第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２であるが、モード１では第２のデータ演算回路ＥＸ３２は非活性状態なので、ＸＤＢ１上のデータはＥＸ３１に取り込まれる。
【０２１６】
デコードされた命令が第３のアドレスバスＹＡＢ及び第５のデータバスＹＤＢ１を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第３のアドレスバスＹＡＢに出力する。ＹＡＢに出力されたアドレスは本実施例ではオンチップメモリＹＭＥＭ１かＹＭＥＭ２のどちらかがマッピングされたアドレスである。アクセスされたＹＭＥＭ１又はＹＭＥＭ２は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第５のデータバスＹＤＢ１に出力する。ＹＤＢ１に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。デスティネーションオペランドは、本実施例では第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２であるが、モード１では第２のデータ演算回路ＥＸ３２は非活性状態なので、ＹＤＢ１上のデータはＥＸ３１に取り込まれる。
【０２１７】
デコードされた命令が第１のアドレスバスＩＡＢ及び第１のデータバスＩＤＢ１を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第１のアドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスがオンチップメモリＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２がマッピングされたアドレスであった場合、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２は該当するアドレスのワード線を活性化させる。一方、命令で指定されたソースオペランドが例えばアドレス生成回路ＣＡＤＲ３内部にあるレジスタの場合は、ＣＡＤＲ３からデータがＩＤＢ１に出力され、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２に入力されて所定のアドレスに書き込まれる。ソースオペランドが第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２の内部にある場合、オペランドコードはＥＸ３１、ＥＸ３２で共通であるが、モード１では第２のデータ演算回路ＥＸ３２は非活性状態なので、ＥＸ３１内のデータがＩＤＢ１上に出力され、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２に入力されて所定のアドレスに書き込まれる。命令で指定されたソースオペランドがモード設定回路ＭＯＤＥ１の内部のレジスタの場合の動作は第１の実施例と同じである。
【０２１８】
デコードされた命令が第２のアドレスバスＸＡＢ及び第３のデータバスＸＤＢ１を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第２のアドレスバスＸＡＢに出力する。ＸＡＢに出力されたアドレスは本実施例ではオンチップメモリＸＭＥＭ１かＸＭＥＭ２のどちらかがマッピングされたアドレスである。アクセスされたＸＭＥＭ１又はＸＭＥＭ２は該当するアドレスのワード線を活性化させる。一方、命令で指定されるソースオペランドは、本実施例では第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２であるが、モード１では第２のデータ演算回路ＥＸ３２は非活性状態なので、ＥＸ３１内のデータがＸＤＢ１上に出力され、ＸＭＥＭ１又はＸＭＥＭ２に入力されて所定のアドレスに書き込まれる。
【０２１９】
デコードされた命令が第３のアドレスバスＹＡＢ及び第５のデータバスＹＤＢ１を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第３のアドレスバスＹＡＢに出力する。ＹＡＢに出力されたアドレスは本実施例ではオンチップメモリＹＭＥＭ１かＹＭＥＭ２のどちらかがマッピングされたアドレスである。アクセスされたＹＭＥＭ１又はＹＭＥＭ２は該当するアドレスのワード線を活性化させる。一方、命令で指定されるソースオペランドは、本実施例では第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２であるが、モード１では第２のデータ演算回路ＥＸ３２は非活性状態なので、ＥＸ３１内のデータがＹＤＢ１上に出力され、ＹＭＥＭ１又はＹＭＥＭ２に入力されて所定のアドレスに書き込まれる。
【０２２０】
上記動作の内、第２のアドレスバスＸＡＢ及び第３のデータバスＸＤＢ１を使ったデータ転送と、第３のアドレスバスＹＡＢ及び第５のデータバスＹＤＢ１を使ったデータ転送は、読み出し／書き込みの区別なく並列に実行できるが、動作内容は単独動作と同じである。また、第１のアドレスバスＩＡＢ及び第１のデータバスＩＤＢ１を使ったメモリ以外のオペランド間のデータ転送の場合は、第１の実施例と同じである。
【０２２１】
マイクロプロセッサＬＳＩ１がモード２状態の時、ＭＤ［１］＝ｌｏｗ、ＭＤ［０］＝ｈｉｇｈとなる。アドレス生成回路ＣＡＤＲ３、命令フェッチ回路ＣＦＣＨ１、バス・インタフェース回路ＢＩＦ１、モード設定回路ＭＯＤＥ１は、第１のデータバスＩＤＢ１との接続が有効となるように制御される。
【０２２２】
第１のオンチップメモリＸＭＥＭ１は、第１のデータバスＩＤＢ１の他、第３のデータバスＸＤＢ１との接続も有効になる。第２のオンチップメモリＸＭＥＭ２は、第１のデータバスＩＤＢ１の他、第２のデータバスＩＤＢ２及び第４のデータバスＸＤＢ２との接続も有効になる。第３のオンチップメモリＹＭＥＭ１は、第１のデータバスＩＤＢ１の他、第５のデータバスＹＤＢ１との接続も有効になる。第４のオンチップメモリＹＭＥＭ２は、第１のデータバスＩＤＢ１の他、第２のデータバスＩＤＢ２及び第６のデータバスＹＤＢ２との接続も有効になる。第１のデータバスＩＤＢ１又は第２のデータバスＩＤＢ２との接続が有効になる時、アドレスは第１のアドレスバスＩＡＢから供給される。第３のデータバスＸＤＢ１又は第４のデータバスＸＤＢ２との接続が有効になる時、アドレスは第２のアドレスバスＸＡＢから供給される。第５のデータバスＹＤＢ１又は第６のデータバスＹＤＢ２との接続が有効になる時、アドレスは第３のアドレスバスＹＡＢから供給される。
【０２２３】
図３６にモード２の時でかつ、受ける制御がデータ演算回路ＥＸ３１やＥＸ３２との間のデータ転送動作の場合の、オンチップメモリＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１及びＹＭＥＭ２のアドレス空間上のマッピング例を示す。なお、モード２の時でかつ、受ける制御がデータ演算回路ＥＸ３１やＥＸ３２との間のデータ転送動作以外の場合は、図３５と同じである。また図３６ではＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１及びＹＭＥＭ２の２重マッピング空間がそれぞれ２箇所ずつ存在しているが、図３７のように１箇所のみのマッピングでも良いことは言うまでもない。図３６あるいは図３７に示されているように、オンチップメモリのアドレス空間にアクセスされる時はＸＭＥＭ１とＸＭＥＭ２、又はＹＭＥＭ１とＹＭＥＭ２の該当するアドレスが同時にアクセスされる。ＸＭＥＭｍ（ｍ＝１又は２）とＹＭＥＭｎ（ｎ＝１又は２）の組み合わせで同時にアクセスされることはない。
【０２２４】
第１のデータ演算回路ＥＸ３１及び第２のデータ演算回路ＥＸ３２は、命令コード上区別されないため、中央処理回路ＣＰＵ３から発行される共通の制御信号の指示で同じ演算動作を行う。命令フェッチの場合、モード１の時と同様に中央処理回路ＣＰＵ３はプログラムアドレスをアドレス生成回路で生成し、ＩＡＢを通して所定のメモリより命令を読み出してＩＤＢ１から命令フェッチ回路ＣＦＣＨ３へ命令コードを読み込む。ここで命令を読み出すメモリがオンチップメモリの場合でも、命令フェッチ動作ではメモリマップは図３５が適用されるので、指定されたアドレスから命令コードが正しく読み出される。ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２が命令フェッチのためにアクセスされた場合は、読み出された命令コードはどのメモリでもＩＤＢ１が選択されて出力される。フェッチした命令コードは命令デコード回路ＣＤＥＣでデコードされ、各モジュールに対して必要な制御信号群ＣＮＴを生成する。
【０２２５】
デコードされた命令がオンチップメモリとデータ演算回路との間のデータ転送動作以外の場合、動作はモード１と同じである。
【０２２６】
デコードされた命令がオンチップメモリとデータ演算回路との間のデータ転送動作の場合は以下のように動作する。
【０２２７】
デコードされた命令が第１のアドレスバスＩＡＢ、第１のデータバスＩＤＢ１及び第２のデータバスＩＤＢ２を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第１のアドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスは、ＸＭＥＭ１とＸＭＥＭ２、又はＹＭＥＭ１とＹＭＥＭ２の組み合わせで、双方の該当するアドレスのワード線を同時に活性化させ、所要のデータを読み出す。ＸＭＥＭ１又はＹＭＥＭ１から読み出されたデータは第１のデータバスＩＤＢ１に、ＸＭＥＭ２又はＹＭＥＭ２から読み出されたデータは第２のデータバスＩＤＢ２に出力する。ＩＤＢ１に出力されたデータは、命令で指定された第１のデータ演算回路ＥＸ３１内のデスティネーションオペランドに転送される。同時にＩＤＢ２に出力されたデータは、同じ命令で指定された第２のデータ演算回路ＥＸ３２内のデスティネーションオペランドに転送される。
【０２２８】
デコードされた命令が第２のアドレスバスＸＡＢ、第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第２のアドレスバスＸＡＢに出力する。ＸＡＢに出力されたアドレスは、ＸＭＥＭ１とＸＭＥＭ２双方の該当するアドレスのワード線を同時に活性化させ、所要のデータを読み出す。ＸＭＥＭ１から読み出されたデータは第３のデータバスＸＤＢ１に、ＸＭＥＭ２から読み出されたデータは第４のデータバスＸＤＢ２に出力する。ＸＤＢ１に出力されたデータは、命令で指定された第１のデータ演算回路ＥＸ３１内のデスティネーションオペランドに転送される。同時にＸＤＢ２に出力されたデータは、同じ命令で指定された第２のデータ演算回路ＥＸ３２内のデスティネーションオペランドに転送される。
【０２２９】
デコードされた命令が第３のアドレスバスＹＡＢ、第５のデータバスＹＤＢ１及び第６のデータバスＹＤＢ２を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第３のアドレスバスＹＡＢに出力する。ＹＡＢに出力されたアドレスは、ＹＭＥＭ１とＹＭＥＭ２双方の該当するアドレスのワード線を同時に活性化させ、所要のデータを読み出す。ＹＭＥＭ１から読み出されたデータは第５のデータバスＹＤＢ１に、ＹＭＥＭ２から読み出されたデータは第６のデータバスＹＤＢ２に出力する。ＹＤＢ１に出力されたデータは、命令で指定された第１のデータ演算回路ＥＸ３１内のデスティネーションオペランドに転送される。同時にＹＤＢ２に出力されたデータは、同じ命令で指定された第２のデータ演算回路ＥＸ３２内のデスティネーションオペランドに転送される。
【０２３０】
デコードされた命令が第１のアドレスバスＩＡＢ、第１のデータバスＩＤＢ１及び第２のデータバスＩＤＢ２を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第１のアドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスは、ＸＭＥＭ１とＸＭＥＭ２、又はＹＭＥＭ１とＹＭＥＭ２の組み合わせで、双方の該当するアドレスのワード線を同時に活性化させる。一方、命令で指定された第１のデータ演算回路ＥＸ３１内のソースオペランドのデータが第１のデータバスＩＤＢ１上に出力される。同時に命令で指定された第２のデータ演算回路ＥＸ３２内のソースオペランドのデータが第２のデータバスＩＤＢ２上に出力される。ＩＤＢ１及びＩＤＢ２上に出力されたデータは、それぞれＸＭＥＭ１とＸＭＥＭ２、又はＹＭＥＭ１とＹＭＥＭ２に入力されて所定のアドレスに書き込まれる。
【０２３１】
デコードされた命令が第２のアドレスバスＸＡＢ、第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第２のアドレスバスＸＡＢに出力する。ＸＡＢに出力されたアドレスは、ＸＭＥＭ１とＸＭＥＭ２双方の該当するアドレスのワード線を同時に活性化させる。一方、命令で指定された第１のデータ演算回路ＥＸ３１内のソースオペランドのデータが第３のデータバスＸＤＢ１上に出力される。同時に命令で指定された第２のデータ演算回路ＥＸ３２内のソースオペランドのデータが第４のデータバスＸＤＢ２上に出力される。ＸＤＢ１及びＸＤＢ２上に出力されたデータは、それぞれＸＭＥＭ１とＸＭＥＭ２に入力されて所定のアドレスに書き込まれる。
【０２３２】
デコードされた命令が第３のアドレスバスＹＡＢ、第５のデータバスＹＤＢ１及び第６のデータバスＹＤＢ２を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第３のアドレスバスＹＡＢに出力する。ＹＡＢに出力されたアドレスは、ＹＭＥＭ１とＹＭＥＭ２双方の該当するアドレスのワード線を同時に活性化させる。一方、命令で指定された第１のデータ演算回路ＥＸ３１内のソースオペランドのデータが第５のデータバスＹＤＢ１上に出力される。同時に命令で指定された第２のデータ演算回路ＥＸ３２内のソースオペランドのデータが第６のデータバスＹＤＢ２上に出力される。ＹＤＢ１及びＹＤＢ２上に出力されたデータは、それぞれＹＭＥＭ１とＹＭＥＭ２に入力されて所定のアドレスに書き込まれる。
【０２３３】
上記動作の内、第２のアドレスバスＸＡＢ、第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２を使ったデータ転送と、第３のアドレスバスＹＡＢ、第５のデータバスＹＤＢ１及び第６のデータバスＹＤＢ２を使ったデータ転送は、読み出し／書き込みの区別なく並列に実行できるが、動作内容は単独動作と同じである。また、第１のアドレスバスＩＡＢ、第１のデータバスＩＤＢ１及び第２のデータバスＩＤＢ２を使ったメモリ以外のオペランド間のデータ転送の場合は、第１の実施例と同じである。
【０２３４】
マイクロプロセッサＬＳＩ１がモード３状態の時、ＭＤ［１］＝ｈｉｇｈ、ＭＤ［０］＝ｌｏｗとなる。アドレス生成回路ＣＡＤＲ３、命令フェッチ回路ＣＦＣＨ１、バス・インタフェース回路ＢＩＦ１、モード設定回路ＭＯＤＥ１は第１の実施例と同様に、第２のデータバスＩＤＢ２との接続が有効となるように制御される。第１のオンチップメモリＸＭＥＭ１及び第２のオンチップメモリＸＭＥＭ２は、第２のデータバスＩＤＢ２の他、第４のデータバスＸＤＢ２との接続も有効になる。第３のオンチップメモリＹＭＥＭ１及び第４のオンチップメモリＹＭＥＭ２は、第２のデータバスＩＤＢ２の他、第６のデータバスＹＤＢ２との接続も有効になる。
【０２３５】
第２のデータバスＩＤＢ２との接続が有効になる時、アドレスは第１のアドレスバスＩＡＢから供給される。第４のデータバスＸＤＢ２との接続が有効になる時、アドレスは第２のアドレスバスＸＡＢから供給される。第６のデータバスＹＤＢ２との接続が有効になる時、アドレスは第３のアドレスバスＹＡＢから供給される。モード３の時のＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１及びＹＭＥＭ２のアドレス空間上のマッピング例は、モード１の時と同じであり、図３５に示されている。
【０２３６】
第２のデータ演算回路ＥＸ３２は中央処理回路ＣＰＵ３から発行される制御信号の指示で演算動作を行うが、第１のデータ演算回路ＥＸ３１は制御信号に関係なく非活性状態になる。中央処理回路ＣＰＵ３はプログラムアドレスをアドレス生成回路で生成し、ＩＡＢを通して所定のメモリより命令を読み出してＩＤＢ２から命令フェッチ回路ＣＦＣＨ１へ命令コードを読み込む。ここで命令を読み出すメモリはしもオンチップメモリである必要はなく、例えば外部とのパラレルインタフェース回路ＰＩＯを経て外部にあるメモリから読み込んでも構わない。フェッチした命令コードは命令デコード回路ＣＤＥＣでデコードされ、各モジュールに対して必要な制御信号群ＣＮＴを生成する。ここでのモード１との動作の違いは、命令コードが第２のデータバスＩＤＢ２から読み込まれることだけである。
【０２３７】
デコードされた命令が第１のアドレスバスＩＡＢ及び第２のデータバスＩＤＢ２を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第１のアドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスがオンチップメモリＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２がマッピングされたアドレスであった場合、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第２のデータバスＩＤＢ２に出力する。ＩＤＢ２に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。命令で指定されたデスティネーションオペランドが例えばアドレス生成回路ＣＡＤＲ３内部にあるレジスタの場合は、ＩＤＢ２からデータがＣＡＤＲ３内部に取り込まれ、所定のレジスタに入力される。デスティネーションオペランドが第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２の内部にある場合、オペランドコードはＥＸ３１、ＥＸ３２で共通であるが、モード３では第１のデータ演算回路ＥＸ３１は非活性状態なので、ＩＤＢ２上のデータはＥＸ３２に取り込まれる。命令で指定されたデスティネーションオペランドがモード設定回路ＭＯＤＥ１の内部のレジスタの場合の動作は第１の実施例と同じである。
【０２３８】
デコードされた命令が第２のアドレスバスＸＡＢ及び第４のデータバスＸＤＢ２を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第２のアドレスバスＸＡＢに出力する。ＸＡＢに出力されたアドレスは本実施例ではオンチップメモリＸＭＥＭ１かＸＭＥＭ２のどちらかがマッピングされたアドレスである。アクセスされたＸＭＥＭ１又はＸＭＥＭ２は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第４のデータバスＸＤＢ２に出力する。ＸＤＢ２に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。デスティネーションオペランドは、本実施例では第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２であるが、モード３では第１のデータ演算回路ＥＸ３１は非活性状態なので、ＸＤＢ２上のデータはＥＸ３２に取り込まれる。
【０２３９】
デコードされた命令が第３のアドレスバスＹＡＢ及び第６のデータバスＹＤＢ２を使ったメモリからのデータ読み出し命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第３のアドレスバスＹＡＢに出力する。ＹＡＢに出力されたアドレスは本実施例ではオンチップメモリＹＭＥＭ１かＹＭＥＭ２のどちらかがマッピングされたアドレスである。アクセスされたＹＭＥＭ１又はＹＭＥＭ２は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第６のデータバスＹＤＢ２に出力する。ＹＤＢ２に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。デスティネーションオペランドは、本実施例では第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２であるが、モード３では第１のデータ演算回路ＥＸ３１は非活性状態なので、ＹＤＢ２上のデータはＥＸ３２に取り込まれる。
【０２４０】
デコードされた命令が第１のアドレスバスＩＡＢ及び第２のデータバスＩＤＢ２を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第１のアドレスバスＩＡＢに出力する。ＩＡＢに出力されたアドレスがオンチップメモリＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２がマッピングされたアドレスであった場合、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２は該当するアドレスのワード線を活性化させる。一方、命令で指定されたソースオペランドが例えばアドレス生成回路ＣＡＤＲ３内部にあるレジスタの場合は、ＣＡＤＲ３からデータがＩＤＢ２に出力され、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２に入力されて所定のアドレスに書き込まれる。ソースオペランドが第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２の内部にある場合、オペランドコードはＥＸ３１、ＥＸ３２で共通であるが、モード３では第１のデータ演算回路ＥＸ３１は非活性状態なので、ＥＸ３２内のデータがＩＤＢ２上に出力され、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１又はＹＭＥＭ２に入力されて所定のアドレスに書き込まれる。命令で指定されたソースオペランドがモード設定回路ＭＯＤＥ１の内部のレジスタの場合の動作は第１の実施例と同じである。
【０２４１】
デコードされた命令が第２のアドレスバスＸＡＢ及び第４のデータバスＸＤＢ２を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第２のアドレスバスＸＡＢに出力する。ＸＡＢに出力されたアドレスは本実施例ではオンチップメモリＸＭＥＭ１かＸＭＥＭ２のどちらかがマッピングされたアドレスである。アクセスされたＸＭＥＭ１又はＸＭＥＭ２は該当するアドレスのワード線を活性化させる。一方、命令で指定されるソースオペランドは、本実施例では第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２であるが、モード３では第１のデータ演算回路ＥＸ３１は非活性状態なので、ＥＸ３２内のデータがＸＤＢ２上に出力され、ＸＭＥＭ１又はＸＭＥＭ２に入力されて所定のアドレスに書き込まれる。
【０２４２】
デコードされた命令が第３のアドレスバスＹＡＢ及び第６のデータバスＹＤＢ２を使ったメモリへのデータの書き込み命令の時、アドレス生成回路ＣＡＤＲ３はアクセスすべきアドレスを生成して、第３のアドレスバスＹＡＢに出力する。ＹＡＢに出力されたアドレスは本実施例ではオンチップメモリＹＭＥＭ１かＹＭＥＭ２のどちらかがマッピングされたアドレスである。アクセスされたＹＭＥＭ１又はＹＭＥＭ２は該当するアドレスのワード線を活性化させる。一方、命令で指定されるソースオペランドは、本実施例では第１又は第２のデータ演算回路ＥＸ３１、ＥＸ３２であるが、モード３では第１のデータ演算回路ＥＸ３１は非活性状態なので、ＥＸ３２内のデータがＹＤＢ２上に出力され、ＹＭＥＭ１又はＹＭＥＭ２に入力されて所定のアドレスに書き込まれる。
【０２４３】
上記動作の内、第２のアドレスバスＸＡＢ及び第４のデータバスＸＤＢ２を使ったデータ転送と、第３のアドレスバスＹＡＢ及び第６のデータバスＹＤＢ２を使ったデータ転送は、読み出し／書き込みの区別なく並列に実行できるが、動作内容は単独動作と同じである。また、第１のアドレスバスＩＡＢ及び第２のデータバスＩＤＢ２を使ったメモリ以外のオペランド間のデータ転送の場合は、第１の実施例と同じである。
【０２４４】
本実施例では、モード設定回路ＭＯＤＥ１は実施例１と同じであるので、説明は省略する。
【０２４５】
〔オンチップメモリの構成〕
第１及び第２のオンチップメモリＸＭＥＭ１、ＸＭＥＭ２の、より具体的な構成例を図３８に示す。図中、ＭＡＤＣはアドレスデコーダ、ＭＬＴ５は第１のアドレスバスＩＡＢ及び第２のアドレスバスＸＡＢの、それぞれ下位１５ビット分の情報を第１又は第２のオンチップメモリＸＭＥＭ１、ＸＭＥＭ２に取り込むラッチ、ＭＭＸ１、ＭＭＸ３、ＭＭＸ１３、ＭＭＸ１４、ＭＭＸ７、ＭＭＸ８は複数の入力から１つを選択して出力するセレクタ、ＭＭＸ２、ＭＭＸ４、ＭＭＸ１５、ＭＭＸ１６、ＭＭＸ１１、ＭＭＸ１２は複数の出力先から１つを選択して出力するセレクタ、ＭＤＥＣ４は第１又は第２のオンチップメモリＸＭＥＭ１、ＸＭＥＭ２内の制御信号ＭＣＴ５１〜７５を生成する制御回路、ＭＣＴ５１〜７５は制御回路ＭＤＥＣ４から出力される制御信号、ＭＶＩ［２：０］は第１のアドレスバスＩＡＢ、第１のデータバスＩＤＢ１及び第２のデータバスＩＤＢ２を使ったメモリ共通の読み出し／書き込み動作を制御する３ビットの制御コード信号、ＭＶＸは第２のアドレスバスＸＡＢ、第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２を使った第１及び第２のオンチップメモリ共通の読み出し／書き込み動作を制御する１ビットの制御信号、ＷＥＸは第１及び第２のオンチップメモリ共通の書き込み動作か、読み出し動作かを指定する制御信号、ＭＳＥＬＸは第１及び第２のオンチップメモリ共通のメモリアクセスイネーブル信号、ＡＳＸは第１又は第２のオンチップメモリＸＭＥＭ１、ＸＭＥＭ２がアクセスされた時、アドレスデコーダＭＡＤＣに入力されるアドレス情報ＡＤＸ［１３：０］が有効であることを示す信号、ＭＬＸ［１：０］はアドレスデコーダＭＡＤＣでどのメモリマットのワード線をイネーブルにすべきかを指定する制御信号である。他の記号は図８と同じである。
【０２４６】
第１及び第２のオンチップメモリの構造は、制御回路の真理値が異なる他は、同じである。
【０２４７】
〔オンチップメモリＸＭＥＭ１の動作〕
第１のオンチップメモリＸＭＥＭ１の詳細な動作を説明する。
【０２４８】
ここで取り上げているメモリは図８の実施例と同様の機能のメモリを取り上げているので、同じ部分については説明を省略する。アドレスと実際のメモリ上の対応関係は第１の実施例と同様、図９に示されている通りである。図８のオンチップメモリと異なる点は、外部から２つのアドレスバス上の情報を取り込んでいるため、どちらのアドレス情報を使用するかを選択する必要があることである。そのため一端２つのアドレス情報を制御回路ＭＤＥＣ４に入力し、どちらの情報を使用するかを判定してから改めてＡＤＸ［１３：０］信号としてアドレスデコーダＭＡＤＣに供給している。どちらのアドレス情報を使用するかの判定は、第１のアドレスバスＩＡＢ、第１のデータバスＩＤＢ１及び第２のデータバスＩＤＢ２を使ったデータ転送か、第２のアドレスバスＸＡＢ、第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２を使ったデータ転送かをチェックすることで実現することが出来、それはＭＶＩ［２：０］及びＭＶＸ信号によって行うことが出来る。図４０に制御回路ＭＤＥＣ４で生成され、アドレスデコーダＭＡＤＣに供給される制御信号及びアドレス情報信号の真理値の例を示す。ここで信号ＡＳＸは図８でのＡＳと、ＭＬＸ［１：０］はＭＬ［１：０］と信号の機能は同じである。
【０２４９】
第１のアドレスバスＩＡＢ、第１のデータバスＩＤＢ１及び第２のデータバスＩＤＢ２を使ったデータ転送動作は、第１の実施例の動作と同じであり、ＭＶＩ［２：０］のコード定義は図１０に示されているＭＶ［２：０］と同じである。第２のアドレスバスＸＡＢ、第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２を使ったデータ転送動作は、ワード単位（１６ビット）のデータ転送をサポートする。ＭＶＸ＝ｈｉｇｈの時、中央処理回路ＣＰＵ３が第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２を使ったワード単位（１６ビット）のデータをアクセスする命令を発行したことを表す。
【０２５０】
各オンチップメモリの識別は、各オンチップメモリの容量が１６Kバイトであるため、ＩＡＢの１５ビット目（ＩＡＢ［１４］）及びモード状態信号ＭＤ［１：０］の情報によって各オンチップメモリ内で行うことができる。ＭＳＥＬＸがイネーブル状態を示している時、制御信号ＷＥＸは読み出し動作か、書き込み動作かを指定する。ｌｏｗの時は読み出し、ｈｉｇｈの時は書き込み動作を意味する
。
【０２５１】
なお、本実施例では第３のデータバスＸＤＢ１及び第４のデータバスＸＤＢ２を使ったデータ転送動作は、ワード単位（１６ビット）のデータ転送をサポートすることを想定しているが、他の長さのデータ転送機能をサポートしても良いことは言うまでもなく、またその時の実現方法は、本明細書で説明してきた内容を組み合わせて容易に実現できることは明らかであろう。
【０２５２】
本実施例では、ＭＶＩ［２：０］とＭＶＸ又は後で述べるＭＶＹによるメモリアクセス動作が同時に同じメモリに発生しないことを想定しているが、ＭＶＸとＭＶＹは同時に発行可能である。そのため第１の実施例と異なり、第１及び第２のオンチップメモリと、第３及び第４のオンチップメッモリには、それぞれ独立の書き込み／読み出し動作を指定する制御信号（第１及び第２のオンチップメモリではＷＥＸ）と、メモリアクセスイネーブル信号（第１及び第２のオンチップメモリではＭＳＥＬＸ）を供給している。この結果、同じサイクルで２つのデータ転送動作が同時に実行可能となる。
【０２５３】
図４１にはモード１での、図４２にはモード２での、図４３にはモード３での制御回路ＭＤＥＣ４の定義の真理値の表を示す。なお、ここでは第１の実施例の時と同様、モード毎に真理値を示しているが、これは単に１つの表で表わすには図面が大きくなり過ぎるため、分割している。また、図４１、図４２、図４３の真理値表は、図３６のメモリマップを想定している。さらに、これらの真理値表では簡素化のため未使用コードもハードウェア量が少なくなると思われる行へ埋め込んでいることがある。
【０２５４】
タイミングについては、やはり基本的には第１の実施例と同じであるので、ここでは省略する。第２のオンチップメモリＸＭＥＭ２についても、モードによってどちらのデータバスと接続するかが異なるだけで、タイミングは同じである。以下、モード別に各動作の説明をする。
【０２５５】
（１）モード１での命令フェッチ動作：
ＭＳＥＬＸがイネーブル状態を示し、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］が命令フェッチ動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はロングワード（３２ビット）のデータ読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。なお、命令フェッチ動作はＩＡＢ、ＩＤＢ１及びＩＤＢ２を使用し、ＸＡＢ、ＸＤＢ１及びＸＤＢでは実行しない。また、命令フェッチ動作は読み出し動作であるので、制御信号ＷＥＸは特に必要ないため、図４１、図４２、図４３では無視するようにしているが、他の動作との共通性を保つため、ＷＥＸ＝ｌｏｗとしても構わないことは言うまでもない。図４０に示すように、この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は連続する４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは４つのメモリマット全ての所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはラッチＭＬＴ０〜３によってラッチされる。ＭＬＴ０にラッチされたデータは、ＭＣＴ５４がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６８がイネーブルとなってセレクタＭＭＸ１５を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。ＭＬＴ１にラッチされたデータは、ＭＣＴ６０がイネーブルとなってセレクタＭＭＸ３を通過し、さらにＭＣＴ７０がイネーブルとなってセレクタＭＭＸ１６を通過し、第１のデータバスＩＤＢ１の最下位から２番目のバイト（［１５：８］）に出力される。ＭＬＴ２にラッチされたデータは、ＭＣＴ７４がイネーブルとなってセレクタＭＭＸ１１を通過し、第１のデータバスＩＤＢ１の最下位から３番目のバイト（［２３：１６］）に出力される。ＭＬＴ３にラッチされたデータは、ＭＣＴ７４がイネーブルとなってセレクタＭＭＸ１２を通過し、第１のデータバスＩＤＢ１の最上位バイト（［３１：２４］）に出力される。
【０２５６】
（２）モード１でのＩＡＢ、ＩＤＢ１を使用したバイト単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はバイト単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は１バイト分のワード線をイネーブルにするためのコード（０１）を示し、アドレスデコーダＭＡＤＣは該当する１つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０、１、２あるいは３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０から読み出されたデータはＭＬＴ０にラッチされ、ＭＣＴ５４がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６８がイネーブルとなってセレクタＭＭＸ１５を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが０１の時、メモリマットＭ１から読み出されたデータはＭＬＴ１にラッチされ、ＭＣＴ５３がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６８がイネーブルとなってセレクタＭＭＸ１５を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２から読み出されたデータはＭＬＴ２にラッチされ、ＭＣＴ５２がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６８がイネーブルとなってセレクタＭＭＸ１５を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１１の時、メモリマットＭ３から読み出されたデータはＭＬＴ３にラッチされ、ＭＣＴ５１がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６８がイネーブルとなってセレクタＭＭＸ１５を通過し、第１のデータバスＩＤＢ１の最下位バイト（［７：０］）に出力される。このようにして任意のアドレスのバイトデータが、第１のデータバスＩＤＢ１の最下位バイトに出力される。
【０２５７】
（３）モード１でのＩＡＢ、ＩＤＢ１を使用したバイト単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の最下位バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がバイト単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はバイト単位のデータの書き込み動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は１バイト分のワード線をイネーブルにするためのコード（０１）を示し、アドレスデコーダＭＡＤＣは該当する１つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第１のデータバスＩＤＢ１の最下位バイトから送られてきたデータは、ＭＣＴ６７がイネーブルとなってセレクタＭＭＸ１３を通過し、さらにＭＣＴ５５がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ０に入力され、メモリマットＭ０に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが０１の時、第１のデータバスＩＤＢ１の最下位バイトから送られてきたデータは、同じくＭＣＴ６７がイネーブルとなってセレクタＭＭＸ１３を通過し、さらにＭＣＴ５６がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ１に入力され、メモリマットＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第１のデータバスＩＤＢ１の最下位バイトから送られてきたデータは、同じくＭＣＴ６７がイネーブルとなってセレクタＭＭＸ１３を通過し、さらにＭＣＴ５７がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ２に入力され、メモリマットＭ２に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１１の時、第１のデータバスＩＤＢ１の最下位バイトから送られてきたデータは、同じくＭＣＴ６７がイネーブルとなってセレクタＭＭＸ１３を通過し、さらにＭＣＴ５８がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ３に入力され、メモリマットＭ３に書き込まれる。
【０２５８】
（４）モード１でのＩＡＢ、ＩＤＢ１を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はワード単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０と１、あるいは２と３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０及びＭ１から読み出されたデータはＭＬＴ０及びＭＬＴ１にラッチされ、ＭＣＴ５４及びＭＣＴ６０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ６８及びＭＣＴ７０がイネーブルとなってセレクタＭＭＸ１５及びＭＭＸ１６を通過し、第１のデータバスＩＤＢ１の下位２バイト（［１５：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２及びＭ３から読み出されたデータはＭＬＴ２及びＭＬＴ３にラッチされ、ＭＣＴ５２及びＭＣＴ５９がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ６８及びＭＣＴ７０がイネーブルとなってセレクタＭＭＸ１５及びＭＭＸ１６を通過し、第１のデータバスＩＤＢ１の下位２バイト（［１５：０］）に出力される。
【０２５９】
（５）モード１でのＩＡＢ、ＩＤＢ１を使用したワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の下位２バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がワード単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はワード単位のデータの書き込み動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第１のデータバスＩＤＢ１の下位２バイトから送られてきたデータは、ＭＣＴ６７がイネーブルとなってセレクタＭＭＸ１３及びＭＭＸ１４を通過し、さらにＭＣＴ５５及びＭＣＴ６１がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ０及びＭＬＴ１に入力され、メモリマットＭ０及びＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第１のデータバスＩＤＢ１の下位２バイトから送られてきたデータは、同じくＭＣＴ６７がイネーブルとなってセレクタＭＭＸ１３及びＭＭＸ１４を通過し、さらにＭＣＴ５７及びＭＣＴ６２がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ２及びＭＬＴ３に入力され、メモリマットＭ２及びＭ３に書き込まれる。
【０２６０】
（６）モード１でのＩＡＢ、ＩＤＢ１を使用したロングワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はロングワード単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは該当の４つ全てのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。メモリマットＭ０〜Ｍ３から読み出されたデータはＭＬＴ０〜３にラッチされ、ＭＣＴ５４及びＭＣＴ６０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ６８、ＭＣＴ７０及びＭＣＴ７４がイネーブルとなってセレクタＭＭＸ１５、ＭＭＸ１６、ＭＭＸ１１及びＭＭＸ１２を通過し、第１のデータバスＩＤＢ１（［３１：０］）に出力される。
【０２６１】
（７）モード１でのＩＡＢ、ＩＤＢ１を使用したロングワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の全ビットを使用して送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がロングワード単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はロングワード単位のデータの書き込み動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは４つ全てのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。第１のデータバスＩＤＢ１から送られてきたデータは、ＭＣＴ６７がイネーブルとなってセレクタＭＭＸ１３、ＭＭＸ１４、ＭＭＸ７及びＭＭＸ８を通過し、さらにＭＣＴ５５、ＭＣＴ６１及びＭＣＴ６３がイネーブルとなってＭＭＸ２、ＭＭＸ４、MCB１及びMCB２を通過し、ＭＬＴ０〜３に入力され、メモリマットＭ０〜３に書き込まれる。
【０２６２】
（８）モード１でのＸＡＢ、ＸＤＢ１を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＸＡＢの１５ビット目（ＸＡＢ［１４］）がｌｏｗでかつＭＶＸがイネーブル状態の時、第１のオンチップメモリＸＭＥＭ１はＸＤＢ１を使用したワード単位のデータの読み出し動作を行う。ＭＶＩ［２：０］信号は無視される。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０と１、あるいは２と３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０及びＭ１から読み出されたデータはＭＬＴ０及びＭＬＴ１にラッチされ、ＭＣＴ５４及びＭＣＴ６０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ７２がイネーブルとなってセレクタＭＭＸ１５及びＭＭＸ１６を通過し、第３のデータバスＸＤＢ１に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２及びＭ３から読み出されたデータはＭＬＴ２及びＭＬＴ３にラッチされ、ＭＣＴ５２及びＭＣＴ５９がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ７２がイネーブルとなってセレクタＭＭＸ１５及びＭＭＸ１６を通過し、第３のデータバスＸＤＢ１に出力される。
【０２６３】
（９）モード１でのＸＡＢ、ＸＤＢ１を使用したワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＸＤＢ１の下位２バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＸがイネーブル状態の時、第１のオンチップメモリＸＭＥＭ１はワード単位のデータの書き込み動作を行う。ＭＶＩ［２：０］信号は無視される。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第３のデータバスＸＤＢ１から送られてきたデータは、ＭＣＴ６５がイネーブルとなってセレクタＭＭＸ１３及びＭＭＸ１４を通過し、さらにＭＣＴ５５及びＭＣＴ６１がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ０及びＭＬＴ１に入力され、メモリマットＭ０及びＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第３のデータバスＸＤＢ１から送られてきたデータは、同じくＭＣＴ６５がイネーブルとなってセレクタＭＭＸ１３及びＭＭＸ１４を通過し、さらにＭＣＴ５７及びＭＣＴ６２がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ２及びＭＬＴ３に入力され、メモリマットＭ２及びＭ３に書き込まれる。
【０２６４】
（１０）モード２での命令フェッチ動作：
このケースは先の（１）モード１での命令フェッチ動作と同じである。
【０２６５】
（１１）モード２でのＩＡＢ、ＩＤＢ１を使用したバイト単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態でかつＭＶＩ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はバイト単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。ＭＶＩ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗであれば上記（２）のモード１でのバイト単位のデータの読み出し動作と同じであるが、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０２６６】
（１２）モード２でのＩＡＢ、ＩＤＢ１を使用したバイト単位のデータの書き込み動作：
このケースも上記（１１）モード２でのＩＡＢ、ＩＤＢ１を使用したバイト単位のデータの読み出し動作と同様、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０２６７】
（１３）モード２でのＩＡＢ、ＩＤＢ１を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態でかつＭＶＩ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はワード単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。ＭＶＩ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗであれば上記（４）モード１でのＩＡＢ、ＩＤＢ１を使用したワード単位のデータの読み出し動作と同じであるが、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０２６８】
（１４）モード２でのＩＡＢ、ＩＤＢ１を使用したワード単位のデータの書き込み動作：
このケースも上記（１３）モード２でのＩＡＢ、ＩＤＢ１を使用したワード単位のデータの読み出し動作と同様、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０２６９】
（１５）モード２でのＩＡＢ、ＩＤＢ１を使用したロングワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態でかつＭＶＩ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はロングワード単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。ＭＶＩ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗであれば上記（６）モード１でのロングワード単位のデータの読み出し動作と同じであるが、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０２７０】
（１６）モード２でのＩＡＢ、ＩＤＢ１を使用したロングワード単位のデータの書き込み動作：
このケースも上記（１５）モード２でのＩＡＢ、ＩＤＢ１を使用したロングワード単位のデータの読み出し動作と同様、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。（１７）モード２でのＸＡＢ、ＸＤＢ１を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態でかつＭＶＸがイネーブル状態の時、第１のオンチップメモリＸＭＥＭ１はＸＤＢ１を使用したワード単位のデータの読み出し動作を行う。ＭＶＩ［２：０］信号は無視される。この動作はデータ演算回路とのデータ転送のためのデータの読み出し動作であり、ＸＡＢの１５ビット目（ＸＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０２７１】
（１８）モード２でのＸＡＢ、ＸＤＢ１を使用したワード単位のデータの書き込み動作：
このケースも上記（１７）モード２でのＸＡＢ、ＸＤＢ１を使用したワード単位のデータの読み出し動作と同様、ＸＡＢの１５ビット目（ＸＡＢ［１４］）の状態に関わらず、すなわち第２のオンチップメモリのアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。それ以外はやはりモード１のケースと同じように動作する。
【０２７２】
（１９）モード３での命令フェッチ動作：
ＭＳＥＬＸがイネーブル状態を示し、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］が命令フェッチ動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はロングワード（３２ビット）のデータ読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は連続する４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは４つのメモリマット全ての所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはラッチＭＬＴ０〜３によってラッチされる。ＭＬＴ０にラッチされたデータは、ＭＣＴ５４がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６９がイネーブルとなってセレクタＭＭＸ１５を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。ＭＬＴ１にラッチされたデータは、ＭＣＴ６０がイネーブルとなってセレクタＭＭＸ３を通過し、さらにＭＣＴ７１がイネーブルとなってセレクタＭＭＸ１６を通過し、第２のデータバスＩＤＢ２の最下位から２番目のバイト（［１５：８］）に出力される。ＭＬＴ２にラッチされたデータは、ＭＣＴ７５がイネーブルとなってセレクタＭＭＸ１１を通過し、第２のデータバスＩＤＢ２の最下位から３番目のバイト（［２３：１６］）に出力される。ＭＬＴ３にラッチされたデータは、ＭＣＴ７５がイネーブルとなってセレクタＭＭＸ１２を通過し、第２のデータバスＩＤＢ２の最上位バイト（［３１：２４］）に出力される。
【０２７３】
（２０）モード３でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はバイト単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は１バイト分のワード線をイネーブルにするためのコード（０１）を示し、アドレスデコーダＭＡＤＣは該当する１つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０、１、２あるいは３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０から読み出されたデータはＭＬＴ０にラッチされ、ＭＣＴ５４がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６９がイネーブルとなってセレクタＭＭＸ１５を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが０１の時、メモリマットＭ１から読み出されたデータはＭＬＴ１にラッチされ、ＭＣＴ５３がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６９がイネーブルとなってセレクタＭＭＸ１５を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２から読み出されたデータはＭＬＴ２にラッチされ、ＭＣＴ５２がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６９がイネーブルとなってセレクタＭＭＸ１５を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１１の時、メモリマットＭ３から読み出されたデータはＭＬＴ３にラッチされ、ＭＣＴ５１がイネーブルとなってセレクタＭＭＸ１を通過し、さらにＭＣＴ６９がイネーブルとなってセレクタＭＭＸ１５を通過し、第２のデータバスＩＤＢ２の最下位バイト（［７：０］）に出力される。このようにして任意のアドレスのバイトデータが、第２のデータバスＩＤＢ２の最下位バイトに出力される。
【０２７４】
（２１）モード３でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の最下位バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がバイト単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はバイト単位のデータの書き込み動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は１バイト分のワード線をイネーブルにするためのコード（０１）を示し、アドレスデコーダＭＡＤＣは該当する１つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第２のデータバスＩＤＢ２の最下位バイトから送られてきたデータは、ＭＣＴ６６がイネーブルとなってセレクタＭＭＸ１３を通過し、さらにＭＣＴ５５がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ０に入力され、メモリマットＭ０に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが０１の時、第２のデータバスＩＤＢ２の最下位バイトから送られてきたデータは、同じくＭＣＴ６６がイネーブルとなってセレクタＭＭＸ１３を通過し、さらにＭＣＴ５６がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ１に入力され、メモリマットＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第２のデータバスＩＤＢ２の最下位バイトから送られてきたデータは、同じくＭＣＴ６６がイネーブルとなってセレクタＭＭＸ１３を通過し、さらにＭＣＴ５７がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ２に入力され、メモリマットＭ２に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１１の時、第２のデータバスＩＤＢ２の最下位バイトから送られてきたデータは、同じくＭＣＴ６６がイネーブルとなってセレクタＭＭＸ１３を通過し、さらにＭＣＴ５８がイネーブルとなってセレクタＭＭＸ２を通過し、ＭＬＴ３に入力され、メモリマットＭ３に書き込まれる。
【０２７５】
（２２）モード３でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はワード単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０と１、あるいは２と３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０及びＭ１から読み出されたデータはＭＬＴ０及びＭＬＴ１にラッチされ、ＭＣＴ５４及びＭＣＴ６０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ６９及びＭＣＴ７１がイネーブルとなってセレクタＭＭＸ１５及びＭＭＸ１６を通過し、第２のデータバスＩＤＢ２の下位２バイト（［１５：０］）に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２及びＭ３から読み出されたデータはＭＬＴ２及びＭＬＴ３にラッチされ、ＭＣＴ５２及びＭＣＴ５９がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ６９及びＭＣＴ７１がイネーブルとなってセレクタＭＭＸ１５及びＭＭＸ１６を通過し、第２のデータバスＩＤＢ２の下位２バイト（［１５：０］）に出力される。
【０２７６】
（２３）モード３でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の下位２バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がワード単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はワード単位のデータの書き込み動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第２のデータバスＩＤＢ２の下位２バイトから送られてきたデータは、ＭＣＴ６６がイネーブルとなってセレクタＭＭＸ１３及びＭＭＸ１４を通過し、さらにＭＣＴ５５及びＭＣＴ６１がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ０及びＭＬＴ１に入力され、メモリマットＭ０及びＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第２のデータバスＩＤＢ２の下位２バイトから送られてきたデータは、同じくＭＣＴ６６がイネーブルとなってセレクタＭＭＸ１３及びＭＭＸ１４を通過し、さらにＭＣＴ５７及びＭＣＴ６２がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ２及びＭＬＴ３に入力され、メモリマットＭ２及びＭ３に書き込まれる。
【０２７７】
（２４）モード１でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はロングワード単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは該当の４つ全てのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。メモリマットＭ０〜Ｍ３から読み出されたデータはＭＬＴ０〜３にラッチされ、ＭＣＴ５４及びＭＣＴ６０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ６９、ＭＣＴ７１及びＭＣＴ７５がイネーブルとなってセレクタＭＭＸ１５、ＭＭＸ１６、ＭＭＸ１１及びＭＭＸ１２を通過し、第２のデータバスＩＤＢ２（［３１：０］）に出力される。
【０２７８】
（２５）モード１でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の全ビットを使用して送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｌｏｗでかつＭＶＩ［２：０］がロングワード単位のデータの書き込み動作を示すコードを指定している時、第１のオンチップメモリＸＭＥＭ１はロングワード単位のデータの書き込み動作を行う。ＭＶＸ信号はディセーブル状態である。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は４バイト分のワード線をイネーブルにするためのコード（１１）を示し、アドレスデコーダＭＡＤＣは４つ全てのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。第２のデータバスＩＤＢ２から送られてきたデータは、ＭＣＴ６６がイネーブルとなってセレクタＭＭＸ１３、ＭＭＸ１４、ＭＭＸ７及びＭＭＸ８を通過し、さらにＭＣＴ５５、ＭＣＴ６１及びＭＣＴ６３がイネーブルとなってＭＭＸ２、ＭＭＸ４、ＭＣＢ１及びＭＣＢ２を通過し、ＭＬＴ０〜３に入力され、メモリマットＭ０〜３に書き込まれる。
【０２７９】
（２６）モード３でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＸＡＢの１５ビット目（ＸＡＢ［１４］）がｌｏｗでかつＭＶＸがイネーブル状態の時、第１のオンチップメモリＸＭＥＭ１はＸＤＢ２を使用したワード単位のデータの読み出し動作を行う。ＭＶＩ［２：０］信号は無視される。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチＭＬＴ０と１、あるいは２と３によってラッチされる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、メモリマットＭ０及びＭ１から読み出されたデータはＭＬＴ０及びＭＬＴ１にラッチされ、ＭＣＴ５４及びＭＣＴ６０がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ７３がイネーブルとなってセレクタＭＭＸ１５及びＭＭＸ１６を通過し、第４のデータバスＸＤＢ２に出力される。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、メモリマットＭ２及びＭ３から読み出されたデータはＭＬＴ２及びＭＬＴ３にラッチされ、ＭＣＴ５２及びＭＣＴ５９がイネーブルとなってセレクタＭＭＸ１及びＭＭＸ３を通過し、さらにＭＣＴ７３がイネーブルとなってセレクタＭＭＸ１５及びＭＭＸ１６を通過し、第４のデータバスＸＤＢ２に出力される。
【０２８０】
（２７）モード３でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第４のデータバスＸＤＢ２から送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＸＡＢの１５ビット目（ＸＡＢ［１４］）がｌｏｗでかつＭＶＸがイネーブル状態の時、第１のオンチップメモリＸＭＥＭ１はＸＤＢ２を使用したワード単位のデータの書き込み動作を行う。ＭＶＩ［２：０］信号は無視される。この時ＡＳＸ信号はイネーブル状態（ｈｉｇｈ）となり、ＭＬＸ［１：０］は２バイト分のワード線をイネーブルにするためのコード（１０）を示し、アドレスデコーダＭＡＤＣは該当の連続する２つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが００の時、第４のデータバスＸＤＢ２から送られてきたデータは、ＭＣＴ６４がイネーブルとなってセレクタＭＭＸ１３及びＭＭＸ１４を通過し、さらにＭＣＴ５５及びＭＣＴ６１がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ０及びＭＬＴ１に入力され、メモリマットＭ０及びＭ１に書き込まれる。ＭＬＴ４にラッチされたアドレス情報の最下位２ビットが１０の時、第４のデータバスＸＤＢ２から送られてきたデータは、同じくＭＣＴ６４がイネーブルとなってセレクタＭＭＸ１３及びＭＭＸ１４を通過し、さらにＭＣＴ５７及びＭＣＴ６２がイネーブルとなってセレクタＭＭＸ２及びＭＭＸ４を通過し、ＭＬＴ２及びＭＬＴ３に入力され、メモリマットＭ２及びＭ３に書き込まれる。
【０２８１】
〔オンチップメモリＸＭＥＭ２の動作〕
第２のオンチップメモリＸＭＥＭ２の詳細な動作を説明する。
【０２８２】
第２のオンチップメモリＸＭＥＭ２もＸＭＥＭ１と同様、命令によってデータ長を３タイプ区別して対応する機能のメモリである。図４４は各モード毎のアドレスデコーダＭＡＤＣに供給される入力信号の真理値である。また図４５にはモード１での、図４６にはモード２での、図４７にはモード３での第２のオンチップメモリＸＭＥＭ２における制御回路ＭＤＥＣ４の定義の真理値の表を示す。以下、モード別に各動作の説明をする。
【０２８３】
（１）モード１での命令フェッチ動作：
ＭＳＥＬＸがイネーブル状態を示し、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］が命令フェッチ動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はロングワード（３２ビット）のデータ読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２８４】
（２）モード１でのＩＡＢ、ＩＤＢ１を使用したバイト単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はバイト単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２８５】
（３）モード１でのＩＡＢ、ＩＤＢ１を使用したバイト単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の最下位バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がバイト単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はバイト単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２８６】
（４）モード１でのＩＡＢ、ＩＤＢ１を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２８７】
（５）モード１でのＩＡＢ、ＩＤＢ１を使用したワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の下位２バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶ［２：０］がワード単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２８８】
（６）モード１でのＩＡＢ、ＩＤＢ１を使用したロングワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２８９】
（７）モード１でのＩＡＢ、ＩＤＢ１を使用したロングワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第１のデータバスＩＤＢ１の全ビットを使用して送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がロングワード単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はロングワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２９０】
（８）モード１でのＸＡＢ、ＸＤＢ１を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＸＡＢの１５ビット目（ＸＡＢ［１４］）がｈｉｇｈでかつＭＶＸがイネーブル状態の時、第２のオンチップメモリＸＭＥＭ２はＸＤＢ１を使用したワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２９１】
（９）モード１でのＸＡＢ、ＸＤＢ１を使用したワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第３のデータバスＸＤＢ１から送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＸＡＢの１５ビット目（ＸＡＢ［１４］）がｈｉｇｈでかつＭＶＸがイネーブル状態の時、第２のオンチップメモリＸＭＥＭ２はＸＤＢ１を使用したワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０２９２】
（１０）モード２での命令フェッチ動作：
このケースは先の（１）モード１での命令フェッチ動作と同じである。
【０２９３】
（１１）モード２でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態でかつＭＶＩ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はバイト単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。ＭＶＩ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈであれば上記（２）モード１でのバイト単位のデータの読み出し動作と同じであるが、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＸＭＥＭ１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２に出力される。詳細な制御及び動作は、後述の（２０）モード３でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの読み出し動作と同じである。
【０２９４】
（１２）モード２でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの書き込み動作：
このケースも上記（１１）モード２でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの読み出し動作と同様、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＸＭＥＭ１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２から入力される。詳細な制御及び動作は、後述の（２１）モード３でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの書き込み動作と同じである。
【０２９５】
（１３）モード２でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態でかつＭＶＩ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はワード単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。ＭＶＩ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈであれば上記（４）モード１でのワード単位のデータの読み出し動作と同じであるが、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＸＭＥＭ１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２に出力される。詳細な制御及び動作は、後述の（２２）モード３でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの読み出し動作と同じである。
【０２９６】
（１４）モード２でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの書き込み動作：
このケースも上記（１３）モード２でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの読み出し動作と同様、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＸＭＥＭ１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２から入力される。詳細な制御及び動作は、後述の（２３）モード３でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの書き込み動作と同じである。
【０２９７】
（１５）モード２でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態ででかつＭＶＩ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はロングワード単位のデータの読み出し動作を行う。ＭＶＸ信号はディセーブル状態である。ＭＶＩ［２：０］がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈであれば上記（６）モード１でのＩＡＢ、ＩＤＢ１を使用したロングワード単位のデータの読み出し動作と同じであるが、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＸＭＥＭ１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２に出力される。詳細な制御及び動作は、後述の（２４）モード３でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの読み出し動作と同じである。
【０２９８】
（１６）モード２でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの書き込み動作：
このケースも（１５）モード２でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの読み出し動作と同様、ＭＶＩ［２：０］がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、ＩＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＸＭＥＭ１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第２のデータバスＩＤＢ２から入力される。詳細な制御及び動作は、後述の（２５）モード３でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの書き込み動作と同じである。
【０２９９】
（１７）モード２でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態でかつＭＶＸがイネーブル状態の時、第２のオンチップメモリＸＭＥＭ２はＸＤＢ１を使用したワード単位のデータの読み出し動作を行う。ＭＶＩ［２：０］信号は無視される。ＸＡＢの１５ビット目（ＸＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＸＭＥＭ１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第４のデータバスＸＤＢ２に出力される。詳細な制御及び動作は、後述の（２６）モード３でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの読み出し動作と同じである。
【０３００】
（１８）モード２でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの書き込み動作：
このケースも上記（１７）モード２でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの読み出し動作と同様、ＸＡＢの１５ビット目（ＩＡＢ［１４］）の状態に関わらず、すなわち第１のオンチップメモリＸＭＥＭ１のアドレスであっても、残りの［１３：０］の情報に該当する領域がアクセスされる。また、データは第４のデータバスＸＤＢ２から入力される。詳細な制御及び動作は、後述の（２７）モード３でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの書き込み動作と同じである。
【０３０１】
（１９）モード３での命令フェッチ動作：
ＭＳＥＬＸがイネーブル状態を示し、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］が命令フェッチ動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はロングワード（３２ビット）のデータ読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３０２】
（２０）モード３でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がバイト単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はバイト単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３０３】
（２１）モード３でのＩＡＢ、ＩＤＢ２を使用したバイト単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の最下位バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がバイト単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はバイト単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３０４】
（２２）モード３でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３０５】
（２３）モード３でのＩＡＢ、ＩＤＢ２を使用したワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の下位２バイトから送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がワード単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３０６】
（２４）モード１でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がロングワード単位のデータの読み出し動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３０７】
（２５）モード１でのＩＡＢ、ＩＤＢ２を使用したロングワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第２のデータバスＩＤＢ２の全ビットを使用して送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＩ［２：０］がロングワード単位のデータの書き込み動作を示すコードを指定している時、第２のオンチップメモリＸＭＥＭ２はロングワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３０８】
（２６）モード３でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの読み出し動作：
ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｌｏｗ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＸがイネーブル状態の時、第２のオンチップメモリＸＭＥＭ２はＸＤＢ２を使用したワード単位のデータの読み出し動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３０９】
（２７）モード３でのＸＡＢ、ＸＤＢ２を使用したワード単位のデータの書き込み動作：
書き込むためのデータは読み出し時と同様、第４のデータバスＸＤＢ２から送られてくる。ＭＳＥＬＸがイネーブル状態を示し、ＷＥＸ＝ｈｉｇｈ状態で、ＩＡＢの１５ビット目（ＩＡＢ［１４］）がｈｉｇｈでかつＭＶＸがイネーブル状態の時、第２のオンチップメモリＸＭＥＭ２はＸＤＢ２を使用したワード単位のデータの書き込み動作を行う。以下、第１のオンチップメモリＸＭＥＭ１の動作と同じである。
【０３１０】
〔データ演算回路の構成〕
第１のデータ演算回路ＥＸ３１の、より具体的な構成例を図４８に示す。図中、Ｅ４ＤＥＣ１は第１のデータ演算回路ＥＸ３１内のデータ転送用制御信号ＥＣＴ２１〜３１を生成する制御回路、ＥＣＴ２１〜３１は制御回路Ｅ４ＤＥＣ１から出力される制御信号、ＥＭＸ８は第１のデータバスＩＤＢ１の上位ワード（１６ビット）、下位ワード（１６ビット）もしくは第３のデータバスＸＤＢ１を選択して取り込むセレクタ、ＥＣＢ１はセレクタＥＭＸ８で選択されたデータを上位ワードレジスタ（Ｒ０〜３Ｈ）ファイルに入力するクロックドゲート、ＥＣＢ３はＥＬＴ６の出力を第１のデータバスＩＤＢ１の下位ワードに出力するためのクロックドゲート、ＥＣＢ４は第５のデータバスＹＤＢ１からデータを取り込むクロックドゲート、ＥＣＢ５はＥＬＴ６の出力を第５のデータバスＹＤＢ１に出力するためのクロックドゲート、ＥＣＢ６はクロックドゲートＥＣＢ４の出力を上位ワードレジスタ（Ｒ０〜３Ｈ）ファイルに入力するためのクロックドゲート、ＥＣＢ７はオールゼロを下位ワードレジスタ（Ｒ０〜３Ｌ）ファイルに入力するためのクロックドゲート、ＥＬＴ６はレジスタファイルＥＲＧから選択された上位ワードレジスタ（Ｒ０〜３Ｈ）又は下位ワードレジスタ（Ｒ０〜３Ｌ）の出力信号を第１のデータバス、第３のデータバスもしくは第５のデータバスに出力するために一端ＣＫ１のタイミングでラッチするためのラッチ回路、ＥＭＸ９はＥＬＴ６の出力を第１のデータバスＩＤＢ１の上位ワード、下位ワードもしくは第３のデータバスＸＤＢ１に出力するためのセレクタ、ＥＬＴ７は制御信号ＥＣＴ２５〜３０を半周期遅延させるための遅延ラッチ回路、ＥＭＶはデータ演算回路ＥＸ３１、ＥＸ３２双方に第１又は第２のデータバスを使用したデータ転送動作を指示するための制御信号、ＥＭＶＸはデータ演算回路ＥＸ３１、ＥＸ３２双方に第３又は第４のデータバスを使用したデータ転送動作を指示するための制御信号、ＥＭＶＹはデータ演算回路ＥＸ３１、ＥＸ３２双方に第５又は第６のデータバスを使用したデータ転送動作を指示するための制御信号、ＥＤＩＯＸはデータ演算回路ＥＸ３１、ＥＸ３２双方にＩＤＢ１、ＩＤＢ２、ＸＤＢ１又はＸＤＢ２を使用したデータ転送動作時の転送方向を指定するための制御信号、ＥＤＩＯＹはデータ演算回路ＥＸ３１、ＥＸ３２双方にＹＤＢ１又はＹＤＢ２を使用したデータ転送動作時の転送方向を指定するための制御信号、ＥＤＬＩはデータ演算回路ＥＸ１１、ＥＸ１２双方にＩＤＢ１又はＩＤＢ２を使用したデータ転送動作時のデータビット長を指定するための制御信号、である。その他の記号は、図１９と同じである。
【０３１１】
第２のデータ演算回路ＥＸ３２の、より具体的な構成例を図４９に示す。第１及び第２のデータ演算回路ＥＸ３１、ＥＸ３２は、接続するデータバスと制御回路Ｅ４ＤＥＣ１とＥ５ＤＥＣ１の機能を定義する真理値が異なるだけで、後の構造は同じであるので、図中の記号説明は省略する。
【０３１２】
〔データ演算回路ＥＸ３１の動作〕
第１のデータ演算回路ＥＸ３１の詳細な動作を説明する。
【０３１３】
図５０は制御回路Ｅ４ＤＥＣ１の機能を表す真理値の表である。第１のデータ演算回路ＥＸ３１内レジスタファイルの書き込み／読み出し動作時のタイミングは、第１の実施例と同じであるので、ここでは省略する。本実施例のデータ演算回路も、固定小数点形式のデータを扱うディジタル信号処理を効率良く実行可能な演算回路を取り上げており、演算機能は図２０と同じであるので、詳細な説明は省略し、本発明に関係するデータ転送動作のみ説明する。
【０３１４】
（１）モード１及びモード２での動作：
中央処理回路ＣＰＵ３が第１のデータバスＩＤＢ１を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｌｏｗでかつＥＤＬＩ＝ｌｏｗになり、第１のデータ演算回路ＥＸ３１は第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータを取り込む動作を行う。制御信号ＥＣＴ２２がイネーブルとなり、第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータはセレクタＥＭＸ８を通過し、ＥＣＴ２９がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０３１５】
中央処理回路ＣＰＵ３が第１のデータバスＩＤＢ１を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｈｉｇｈでかつＥＤＬＩ＝ｌｏｗになり、第１のデータ演算回路ＥＸ３１は第１のデータバスＩＤＢ１の下位１６ビットへワードデータを出力する動作を行う。制御信号ＥＣＴ３１がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ６を通過し、ＥＣＴ２６がイネーブルになってセレクタＥＭＸ９を経て第１のデータバスＩＤＢ１の下位１６ビットに出力される。なお、ここでは第１のデータバスＩＤＢ１の上位１６ビットには何も出力しないが、転送先が３２ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【０３１６】
中央処理回路ＣＰＵ３が第１のデータバスＩＤＢ１を使用したロングワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｌｏｗでかつＥＤＬＩ＝ｈｉｇｈになり、第１のデータ演算回路ＥＸ３１は第１のデータバスＩＤＢ１上にあるロングワードデータを取り込む動作を行う。制御信号ＥＣＴ２１がイネーブルとなり、第１のデータバスＩＤＢ１の上位１６ビットにあるワードデータはセレクタＥＭＸ８を通過し、ＥＣＴ２９がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２では第１のデータバスＩＤＢ１の下位１６ビットにあるワードデータが入力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０３１７】
中央処理回路ＣＰＵ３が第１のデータバスＩＤＢ１を使用したロングワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｈｉｇｈでかつＥＤＬＩ＝ｈｉｇｈになり、第１のデータ演算回路ＥＸ３１は第１のデータバスＩＤＢ１へロングワードデータを出力する動作を行う。制御信号ＥＣＴ３１がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ６を通過し、ＥＣＴ２５がイネーブルになってセレクタＥＭＸ９を経て第１のデータバスＩＤＢ１の上位１６ビットに出力される。同時に出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの下位ワードからラッチ回路ＥＬＴ６を通過し、クロックドゲートＥＣＢ３を経て第１のデータバスＩＤＢ１の下位１６ビットに出力される。
【０３１８】
中央処理回路ＣＰＵ３が第３のデータバスＸＤＢ１を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶＸがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｌｏｗになり、第１のデータ演算回路ＥＸ３１は第３のデータバスＸＤＢ１にあるワードデータを取り込む動作を行う。制御信号ＥＣＴ２３がイネーブルとなり、第３のデータバスＸＤＢ１にあるワードデータはセレクタＥＭＸ８を通過し、ＥＣＴ２９がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０３１９】
中央処理回路ＣＰＵ３が第３のデータバスＸＤＢ１を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶＸがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｈｉｇｈになり、第１のデータ演算回路ＥＸ３１は第３のデータバスＸＤＢ１へワードデータを出力する動作を行う。制御信号ＥＣＴ３１がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ６を通過し、ＥＣＴ２７がイネーブルになってセレクタＥＭＸ９を経て第３のデータバスＸＤＢ１に出力される。
【０３２０】
中央処理回路ＣＰＵ３が第５のデータバスＹＤＢ１を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶＹがイネーブル（ｈｉｇｈ）、ＥＤＩＯＹ＝ｌｏｗになり、第１のデータ演算回路ＥＸ３１は第５のデータバスＹＤＢ１にあるワードデータを取り込む動作を行う。制御信号ＥＣＴ２４がイネーブルとなり、第５のデータバスＹＤＢ１にあるワードデータはクロックドゲートＥＣＢ４を通過し、ＥＣＴ３０がイネーブルになってクロックドゲートＥＣＢ６を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にクロックドゲートＥＣＢ７ではオールゼロデータが出力されてレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０３２１】
中央処理回路ＣＰＵ３が第５のデータバスＹＤＢ１を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶＹがイネーブル（ｈｉｇｈ）、ＥＤＩＯＹ＝ｈｉｇｈになり、第１のデータ演算回路ＥＸ３１は第５のデータバスＹＤＢ１へワードデータを出力する動作を行う。制御信号ＥＣＴ３１がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ６を通過し、ＥＣＴ２８がイネーブルになってクロックドゲートＥＣＢ５を経て第５のデータバスＹＤＢ１に出力される。  第３のデータバスＸＤＢ１を使用したワード単位のデータ転送と、第５のデータバスＹＤＢ１を使用したワード単位のデータ転送動作は、並列に実行可能である。そのため両者のハードウェアは独立構造になっている。一方、第１のデータバスＩＤＢ１を使用したデータ転送動作は、他のデータ転送動作とは並列動作することを想定していないため、本実施例では第３のデータバスＸＤＢ１を使用したワード単位のデータ転送動作のハードウェアとリソースを共用しているが、第５のデータバスＹＤＢ１を使用したワード単位のデータ転送動作の方と共用しても良いことは言うまでもない。
【０３２２】
（２）モード３での動作：
モード状態信号ＭＤ［１：０］がモード３を示すと、制御回路Ｅ４ＤＥＣ１では動作イネーブル信号ＥＮをディセーブル状態にして、以後モードが変更されるまで第１のデータ演算回路ＥＸ３１は中央処理回路ＣＰＵ３がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路ＣＰＵ３が発行する制御は第２のデータ演算回路ＥＸ３２で有効となる。
【０３２３】
〔データ演算回路ＥＸ３２の動作〕
第２のデータ演算回路ＥＸ３２の詳細な動作を説明する。
【０３２４】
図５１は制御回路Ｅ５ＤＥＣ１の機能を表す真理値の表である。動作タイミングは第１のデータ演算回路ＥＸ３１と同じである。
【０３２５】
（１）モード１での動作：
モード状態信号ＭＤ［１：０］がモード１を示すと、制御回路Ｅ５ＤＥＣ１では動作イネーブル信号ＥＮをディセーブル状態にして、以後モードが変更されるまで第２のデータ演算回路ＥＸ１２は中央処理回路ＣＰＵ３がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路ＣＰＵ３が発行する制御は第１のデータ演算回路ＥＸ３１で有効となる。
【０３２６】
（２）モード２及びモード３での動作：
中央処理回路ＣＰＵ３が第２のデータバスＩＤＢ２を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｌｏｗでかつＥＤＬＩ＝ｌｏｗになり、第２のデータ演算回路ＥＸ３２は第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータを取り込む動作を行う。制御信号ＥＣＴ２２がイネーブルとなり、第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータはセレクタＥＭＸ８を通過し、ＥＣＴ２９がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０３２７】
中央処理回路ＣＰＵ３が第２のデータバスＩＤＢ２を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｈｉｇｈでかつＥＤＬＩ＝ｌｏｗになり、第２のデータ演算回路ＥＸ３２は第２のデータバスＩＤＢ２の下位１６ビットへワードデータを出力する動作を行う。制御信号ＥＣＴ３１がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ６を通過し、ＥＣＴ２６がイネーブルになってセレクタＥＭＸ９を経て第２のデータバスＩＤＢ２の下位１６ビットに出力される。なお、ここでは第２のデータバスＩＤＢ２の上位１６ビットには何も出力しないが、転送先が３２ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【０３２８】
中央処理回路ＣＰＵ３がロングワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｌｏｗでかつＥＤＬＩ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ３２は第２のデータバスＩＤＢ２上にあるロングワードデータを取り込む動作を行う。制御信号ＥＣＴ２１がイネーブルとなり、第２のデータバスＩＤＢ２の上位１６ビットにあるワードデータはセレクタＥＭＸ８を通過し、ＥＣＴ２９がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２では第２のデータバスＩＤＢ２の下位１６ビットにあるワードデータが入力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０３２９】
中央処理回路ＣＰＵ３がロングワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｈｉｇｈでかつＥＤＬＩ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ３２は第２のデータバスＩＤＢ２へロングワードデータを出力する動作を行う。制御信号ＥＣＴ３１がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ６を通過し、ＥＣＴ２５がイネーブルになってセレクタＥＭＸ９を経て第２のデータバスＩＤＢ２の上位１６ビットに出力される。同時に出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの下位ワードからラッチ回路ＥＬＴ６を通過し、クロックドゲートＥＣＢ３を経て第２のデータバスＩＤＢ２の下位１６ビットに出力される。
【０３３０】
中央処理回路ＣＰＵ３が第４のデータバスＸＤＢ２を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶＸがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｌｏｗになり、第２のデータ演算回路ＥＸ３２は第４のデータバスＸＤＢ２にあるワードデータを取り込む動作を行う。制御信号ＥＣＴ２３がイネーブルとなり、第４のデータバスＸＤＢ２にあるワードデータはセレクタＥＭＸ８を通過し、ＥＣＴ２９がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０３３１】
中央処理回路ＣＰＵ３が第４のデータバスＸＤＢ２を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶＸがイネーブル（ｈｉｇｈ）、ＥＤＩＯＸ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ３２は第４のデータバスＸＤＢ２へワードデータを出力する動作を行う。制御信号ＥＣＴ３１がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ６を通過し、ＥＣＴ２７がイネーブルになってセレクタＥＭＸ９を経て第４のデータバスＸＤＢ２に出力される。
【０３３２】
中央処理回路ＣＰＵ３が第４のデータバスＹＤＢ２を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、ＥＭＶＹがイネーブル（ｈｉｇｈ）、ＥＤＩＯＹ＝ｌｏｗになり、第２のデータ演算回路ＥＸ３２は第６のデータバスＹＤＢ２にあるワードデータを取り込む動作を行う。制御信号ＥＣＴ２４がイネーブルとなり、第６のデータバスＹＤＢ２にあるワードデータはセレクタＥＭＸ８を通過し、ＥＣＴ２９がイネーブルになってクロックドゲートＥＣＢ１を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタＥＭＸ２ではオールゼロデータが出力され、クロックドゲートＥＣＢ２を経てレジスタファイルＥＲＧに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【０３３３】
中央処理回路ＣＰＵ３が第４のデータバスＹＤＢ２を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、ＥＭＶＹがイネーブル（ｈｉｇｈ）、ＥＤＩＯＹ＝ｈｉｇｈになり、第２のデータ演算回路ＥＸ３２は第６のデータバスＹＤＢ２へワードデータを出力する動作を行う。制御信号ＥＣＴ３１がイネーブルとなり、出力すべきデータがレジスタファイルＥＲＧ内のソースレジスタの上位ワードからラッチ回路ＥＬＴ６を通過し、ＥＣＴ２８がイネーブルになってクロックドゲートＥＣＢ５を経て第６のデータバスＹＤＢ２に出力される。
【０３３４】
第４のデータバスＸＤＢ２を使用したワード単位のデータ転送と、第６のデータバスＹＤＢ２を使用したワード単位のデータ転送動作は、第１のデータ演算器ＥＸ３１と同様、並列に実行可能である。そのため両者のハードウェアは独立構造になっている。一方、第２のデータバスＩＤＢ２を使用したデータ転送動作は、他のデータ転送動作とは並列動作することを想定していないため、本実施例では第４のデータバスＸＤＢ２を使用したワード単位のデータ転送動作のハードウェアとリソースを共用しているが、第６のデータバスＹＤＢ２を使用したワード単位のデータ転送動作の方と共用しても良いことは言うまでもない。
【０３３５】
以上のように、本実施例のようなマルチバス構造を備えるマイクロコンピュータにおいても、本発明を適用することにより、演算に必要なソースデータを遅滞なく供給することが出来、データ転送がネックとなることなく単独の命令で２並列実行機能による高性能化の効果を十分発揮させることが可能となる。また、通常の単独演算との整合性についても、問題は生じない。
【０３３６】
〔第４の実施例のマイクロコンピュータの全体構成〕
図５２は本発明の第４の実施例のマイクロコンピュータの全体構成を示す図である。本実施例は、全体構成が図３４に示されている第３の実施例と同じく４つのオンチップメモリと６本のデータバスの構成に関するものである。図中、ＬＳＩ４は本発明を適用したマイクロコンピュータ、ＣＰＵ４は命令をフェッチ、デコードして所要の制御信号を生成する回路を包含した中央処理回路、ＣＡＤＲ４はＣＰＵ４内部に含まれ、指示されたアドレスを最大２つ同時に生成する機能を有するアドレス生成回路、ＸＭＥＭ３はチップ上に内蔵された第１のオンチップメモリ、ＸＭＥＭ４はチップ上に内蔵された第２のオンチップメモリ、ＹＭＥＭ３はチップ上に内蔵された第３のオンチップメモリ、ＹＭＥＭ４はチップ上に内蔵された第４のオンチップメモリ、ＥＸ４１はデータ演算を実行する第１のデータ演算回路、ＥＸ４２はデータ演算を実行する第２のデータ演算回路、ＩＤＢ１はＸＭＥＭ３、ＸＭＥＭ４、ＹＭＥＭ３、ＹＭＥＭ４、ＥＸ４１、ＭＯＤＥ２及びバスインタフェース回路ＢＩＦ２に接続され、データ転送に使用される第１のデータバス、ＩＤＢ２はＸＭＥＭ４、ＹＭＥＭ４及びＥＸ４２に接続され、データ転送に使用される第２のデータバス、ＸＤＢ１はＸＭＥＭ３、ＸＭＥＭ４及びＥＸ４１に接続され、データ転送に使用される第３のデータバス、ＸＤＢ２はＸＭＥＭ４及びＥＸ４２に接続され、データ転送に使用される第４のデータバス、ＹＤＢ１はＹＭＥＭ３、ＹＭＥＭ４及びＥＸ４１に接続され、データ転送に使用される第５のデータバス、ＹＤＢ２はＹＭＥＭ４及びＥＸ４２に接続され、データ転送に使用される第６のデータバスである。その他の記号は図１と同じである。  本実施例は、第３の実施例の変形例であるので、詳しい動作は第３の実施例の説明により明らかであるので、ここでは各モジュールのより詳細な回路図や説明は省略する。
【０３３７】
〔第５の実施例のマイクロコンピュータの全体構成〕
図５３は本発明の第５の実施例のマイクロコンピュータの全体構成を示す図である。本実施例はモード設定回路を周辺モジュールの１つとして定義したものに関するものであり、モード設定回路がオンチップモジュールに限らないことを示したものである。モード設定回路はモードレジスタにより構成されるモジュールであるので、モードレジスタをメモリマップドレジスタとして定義すれば容易に本実施例の構成が実現可能なことは明らかである。なお、図５３は図５２の第４の実施例をベースにしているが、図１、図２３及び図３４のような実施例にも適用できることは言うまでもない。
【０３３８】
〔第６の実施例のマイクロコンピュータの全体構成〕
図５４は本発明の第６の実施例のマイクロコンピュータの全体構成を示す図である。本実施例はモード設定回路を中央処理回路ＣＰＵ５の一部を構成するレジスタとしたものである。本実施例も図５３と同様、図５２の第４の実施例をベースにしているが、図１、図２３及び図３４のような実施例にも適用できることは言うまでもない。
【０３３９】
〔第７の実施例のマイクロコンピュータの全体構成〕
図５８は本発明の第７の実施例のマイクロコンピュータの全体構成を示す図である。本実施例は上述した４つのメモリに、オンチップメモリＺＭＥＭをさらに加えたものである。本実施例も図５２の第４の実施例をベースにしている。例えば、図５７のようにメモリマッピングをすれば、アドレス生成回路ＣＡＤＲ４から生成される２つのアドレスが第１のオンチップメモリＸＭＥＭ３及び第２のオンチップメモリＸＭＥＭ４のアドレス空間上、並びに、第５のオンチップメモリＺＭＥＭのアドレス空間上にある場合、ＸＭＥＭ３とＸＭＥＭ４の該当するアドレスが同時にアクセスされ、ＸＭＥＭ３から読み出されたデータは第３のデータバスＸＤＢ１に、ＸＭＥＭ４から読み出されたデータは第４のデータバスＸＤＢ２に出力される。これと並行してＺＭＥＭの該当するアドレスがアクセスされ、ＺＭＥＭから読み出されたデータは第５のデータバスＹＤＢ１に出力される。ＸＤＢ１に出力されたデータは、命令で指定された第１のデータ演算回路ＥＸ４１内のデスティネーションオペランドに転送され、ＸＤＢ２に出力されたデ−タは、同じ命令で指定された第２のデ−タ演算回路ＥＸ４２内のデスティネーションオペランドに転送される。また、並行してＹＤＢ１に出力されたデータは、同じ命令で指定された第１のデータ演算回路ＥＸ４１内及び第２のデータ演算回路ＥＸ４２内のそれぞれのデスティネーションオペランドに転送される。これらデスティネーションオペランドに転送されたデータをソースとして、第１の実施例で述べた演算動作を実行することができる。
【０３４０】
本実施例での演算の特徴は、第１のデータ演算回路ＥＸ４１及び第２のデータ演算回路ＥＸ４２における演算のソースデータの一方が互いに共通であることである。これにより、ＥＸ４１及びＥＸ４２に共通のデータ、すなわちＺＭＥＭから読み出されたデータをフィルタ係数とすることができ、ＸＭＥＭ３及びＸＭＥＭ４という２つの異なるメモリのデータに対し、並列フィルタ処理の実行が可能となる。本実施例においてはフィルタ係数格納の為、ハード的にメモリを増やさなければならないが、フィルタ係数の個数がさほど多くなく、同一データ用に重複してメモリを使用することを厭わない場合には本実施例の構成をとらなくても並列フィルタ処理が実現できる。既述した第３の実施例乃至第６の実施例においても例えば第３のメモリ及び第４のメモリの特定のアドレス空間にフィルタ係数を格納しておけば、モード２によりフィルタ処理が可能となることはいうまでもない。また、既述した第３の実施例乃至第６の実施例において、データ演算回路内の制御回路Ｅ４ＤＥＣ１又はＥ５ＤＥＣ１の真理値を変更すれば、例えば第３のメモリを第４のメモリとは異なるアドレス空間上に配置することにより、実施例７の第５のメモリに相当するように動作させる、すなわちフィルタ処理係数を格納・出力させることも可能であり、それによってハード的にメモリを増設することもなく、また、同一データを２つのメモリに重複して格納する必要がないため、メモリを節約しながら並列フィルタ処理を実現することができる。
【０３４１】
上述した第１から第７の実施例の説明中において、上記モード設定回路内のモードレジスタの内容を変更する手段は、今まで特定のデータをデータ転送動作によって書き込むことにより行う例を示してきたが、本発明はそのような手段に限定されるものではない。すなわち、モード状態を示す信号と、その状態を変更する何らかの手段を備えていればよく、例えばモード設定命令を備え、その命令によって直接レジスタの内容を変更するようにしても良いことは明らかである。また、ある特定の割り込み要求を受け付けた時に自動的にあるモードに切り替える機能を設けても良い。
【０３４２】
上述した第１から第７の実施例の説明中においては、モードを切り替えることにより、同じ命令でも複数の動作を使い分ける手法を示してきたが、命令コード長に余裕があれば、図５５に示すように命令コード上に動作モード指定領域を設け、命令毎に通常動作やＳＩＭＤ型に並列動作を制御しても構わない。この場合、命令コードは長くなるが、動作モードを頻繁に切り替える必要のある処理では、その都度モード切り替えのためのデータ転送命令や、モード切り替え命令を挿入しなくて済む利点がある。
【０３４３】
更に、上記第３乃至上記第７の実施例を応用することにより、フィルタリング処理などの積和演算を複数の演算回路を用いて並列に演算させることができ、例えば、複数端末へ並列に動作するマルチモデムなどの実現が可能となる。
【０３４４】
【発明の効果】
以上に述べてきたように本発明によれば、マイクロコンピュータは通常の単独演算動作と、ＳＩＭＤ型の並列演算動作との間で命令体系上の整合性を保持しつつ、演算に必要なソースデータを遅滞なく供給することができるマイクロコンピュータを実現でき、データ転送でネックとなることなく、ＳＩＭＤ型の並列動作時の高性能を最大限に発揮させることが可能となる。
【図面の簡単な説明】
【図１】本発明を適用した１チップマイクロコンピュータの第１の実施例。
【図２】モード１及びモード３の時の第１及び第２のオンチップメモリのアドレス空間上のマッピング例。
【図３】モード２でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第１及び第２のオンチップメモリのアドレス空間上のマッピング例。
【図４】モード２でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第１及び第２のオンチップメモリのアドレス空間上の別のマッピング例。
【図５】モード設定回路（ＭＯＤＥ１）のより具体的な構成例。
【図６】モード設定回路内制御回路（ＭＤＤＥＣ１）の真理値の表。
【図７】モード設定回路内モードレジスタ（ＭＤＲ）の動作タイミングチャート図。
【図８】第１及び第２のオンチップメモリ（ＭＥＭ１１，ＭＥＭ１２）の、より具体的な構成例。
【図９】第１のオンチップメモリの、アドレスとメモリ内アクセス領域との対応を示す図。
【図１０】第１及び第２のオンチップメモリのメモリアクセス制御信号ＭＶ［２：０］のコード定義表。
【図１１】モード１での第１のオンチップメモリ内制御回路（ＭＤＥＣ１）の真理値の表。
【図１２】モード２での第１のオンチップメモリ内制御回路（ＭＤＥＣ１）の真理値の表。
【図１３】モード３での第１のオンチップメモリ内制御回路（ＭＤＥＣ１）の真理値の表。
【図１４】第１のオンチップメモリの動作タイミングチャート図。
【図１５】第２のオンチップメモリの、アドレスとメモリ内アクセス領域との対応を示す図。
【図１６】モード１での第２のオンチップメモリ内制御回路（ＭＤＥＣ１）の真理値の表。
【図１７】モード２での第２のオンチップメモリ内制御回路（ＭＤＥＣ１）の真理値の表。
【図１８】モード３での第２のオンチップメモリ内制御回路（ＭＤＥＣ１）の真理値の表。
【図１９】第１のデータ演算回路（ＥＸ１１）の、より具体的な構成例。
【図２０】第２のデータ演算回路（ＥＸ１２）の、より具体的な構成例。
【図２１】ａ：第１のデータ演算回路内制御回路（Ｅ１ＤＥＣ１）の真理値の表、ｂ：第２のデータ演算回路内制御回路（Ｅ２ＤＥＣ１）の真理値の表。
【図２２】ａ：第１のデータ演算回路の動作タイミングチャート図、ｂ：第２のデータ演算回路の動作タイミングチャート図。
【図２３】本発明を適用した１チップマイクロコンピュータの第２の実施例。
【図２４】モード設定回路（ＭＯＤＥ２）のより具体的な構成例。
【図２５】モード設定回路内制御回路（ＭＤＤＥＣ２）の真理値の表。
【図２６】第１オンチップメモリ（ＭＥＭ２１）の、より具体的な構成例。
【図２７】第２オンチップメモリ（ＭＥＭ２２）の、より具体的な構成例。
【図２８】モード１又はモード３での第１のオンチップメモリ内制御回路（ＭＤＥＣ２）の真理値の表。
【図２９】モード２での第１のオンチップメモリ内制御回路（ＭＤＥＣ２）の真理値の表。
【図３０】モード１又はモード３での第２のオンチップメモリ内制御回路（ＭＤＥＣ３）の真理値の表。
【図３１】モード２での第２のオンチップメモリ内制御回路（ＭＤＥＣ３）の真理値の表。
【図３２】第２のデータ演算回路（ＥＸ２２）の、より具体的な構成例。
【図３３】第２のデータ演算回路内制御回路（Ｅ３ＤＥＣ１）の真理値の表。
【図３４】本発明を適用した１チップマイクロコンピュータの第３の実施例。
【図３５】モード１及びモード３の時の第１乃至第４のオンチップメモリのアドレス空間上のマッピング例。
【図３６】モード２でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第１乃至第４のオンチップメモリのアドレス空間上のマッピング例。
【図３７】モード２でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第１乃至第４のオンチップメモリのアドレス空間上の別のマッピング例。
【図３８】第１及び第２のオンチップメモリ（ＸＭＥＭ１，ＸＭＥＭ２）の、より具体的な構成例。
【図３９】第３及び第４のオンチップメモリ（ＹＭＥＭ１，ＹＭＥＭ２）の、より具体的な構成例。
【図４０】アドレスデコーダのための第１のオンチップメモリ内制御回路（ＭＤＥＣ４）の真理値の表。
【図４１】モード１での第１のオンチップメモリ内制御回路（ＭＤＥＣ４）の真理値の表。
【図４２】モード２での第１のオンチップメモリ内制御回路（ＭＤＥＣ４）の真理値の表。
【図４３】モード３での第１のオンチップメモリ内制御回路（ＭＤＥＣ４）の真理値の表。
【図４４】アドレスデコーダのための第２のオンチップメモリ内制御回路（ＭＤＥＣ４）の真理値の表。
【図４５】モード１での第２のオンチップメモリ内制御回路（ＭＤＥＣ４）の真理値の表。
【図４６】モード２での第２のオンチップメモリ内制御回路（ＭＤＥＣ４）の真理値の表。
【図４７】モード３での第２のオンチップメモリ内制御回路（ＭＤＥＣ４）の真理値の表。
【図４８】第１のデータ演算回路（ＥＸ３１）の、より具体的な構成例。
【図４９】第２のデータ演算回路（ＥＸ３２）の、より具体的な構成例。
【図５０】第１のデータ演算回路内制御回路（Ｅ４ＤＥＣ１）の真理値の表。
【図５１】第２のデータ演算回路内制御回路（Ｅ５ＤＥＣ１）の真理値の表。
【図５２】本発明を適用した１チップマイクロコンピュータの第４の実施例。
【図５３】本発明を適用した１チップマイクロコンピュータの第５の実施例。
【図５４】本発明を適用した１チップマイクロコンピュータの第６の実施例。
【図５５】モード設定回路を備える代わりに、命令コード上に動作モード領域を設けた一例。
【図５６】命令フォーマット及び命令コードの一例。
【図５７】モード２でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第１乃至第５のオンチップメモリのアドレス空間上のマッピング例。
【図５８】本発明を適用した１チップマイクロコンピュータの第７の実施例。
【符号の説明】
ＬＳＩ１〜７：本発明を適用した１チップマイクロコンピュータ
ＣＰＵ１〜５：中央処理回路
ＣＦＣＨ１〜２：命令フェッチ回路
ＣＤＥＣ：命令デコード回路
ＣＮＴ：ＣＤＥＣで生成された制御信号群
ＭＯＤＥ１〜３：モード設定回路
ＭＤ［１：０］：現在のモード状態を伝えるモード信号
ＣＡＤＲ１〜４：アドレス生成回路
ＩＡＢ、ＸＡＢ、ＹＡＢ：アドレスバス
ＭＥＭ１１、ＭＥＭ１２、ＭＥＭ２１、ＭＥＭ２２、ＸＭＥＭ１、ＸＭＥＭ２、ＹＭＥＭ１、ＹＭＥＭ２、ＸＭＥＭ３、ＸＭＥＭ４、ＹＭＥＭ３、ＹＭＥＭ４、ＺＭＥＭ：オンチップメモリ
ＥＸ１１、ＥＸ１２、ＥＸ２１、ＥＸ２２、ＥＸ３１、ＥＸ３２、ＥＸ４１、ＥＸ４２：データ演算回路
ＩＤＢ１、ＩＤＢ２、ＸＤＢ１、ＸＤＢ２、ＹＤＢ１、ＹＤＢ２：データバス
ＢＩＦ１〜２：バス・インタフェース回路
ＩＲＱ：割り込み処理回路
ＰＩＯ：外部とのパラレルインタフェース回路
ＳＩＯ１、ＳＩＯ２：シリアルインタフェース回路
ＴＩＭ：タイマ回路
ＩＣＴ：ＩＲＱモジュールの制御信号
ＰＣＴ：ＰＩＯモジュールの制御信号
Ｓ１ＣＴ：ＳＩＯ１モジュールの制御信号
Ｓ２ＣＴ：ＳＩＯ２モジュールの制御信号
ＴＣＴ：ＴＩＭモジュールの制御信号
ＩＲＥＱ：割り込み要求信号
ＭＤＲ：モード状態を示すモードレジスタ
ＭＤＤＥＣ１〜２：モード設定回路内の制御信号を生成する制御回路
ＤＣＴ１〜５、ＤＣＴ１１〜１３：制御回路から出力される制御信号
ＤＭＸ１〜２：モード設定回路内のセレクタ回路
ＤＣＢ１〜４：モード設定回路内のクロックドゲート
ＤＬＴ１〜３、ＤＬＴ５〜６：モード設定回路内の遅延ラッチ回路
ＲＤＭＤＲ：ＭＤＲの情報をデータバスに出力するための制御信号
ＷＴＭＤＲ：データバス上のデータをＭＤＲに入力するための制御信号
ＣＬＲ：モードレジスタＭＤＲを初期化するためのクリア信号
ＭＡＤＣ：オンチップメモリ内のアドレスデコーダ
Ｍ０〜３：１バイト単位のデータを格納するメモリマット
ＭＬＴ０〜３：バイト単位のラッチ回路
ＭＬＴ４〜５：ラッチ回路
ＭＭＸ１〜１６：オンチップメモリ内のセレクタ回路
ＭＣＢ１〜１０：オンチップメモリ内のクロックドゲート
ＭＤＥＣ１〜５：オンチップメモリ内の制御信号を生成する制御回路
ＭＣＴ１〜２１、３１〜３４、４１〜４８、５１〜７５、８１〜１０５：制御回路から出力される制御信号
ＭＶ［２：０］：メモリ共通の読み出し／書き込み動作を制御する３ビットの制御コード信号
ＭＶＩ［２：０］：ＩＡＢ、ＩＤＢ１、ＩＤＢ２を使用する時、メモリ共通の読み出し／書き込み動作を制御する３ビットの制御コード信号
ＭＶＸ：ＸＡＢ、ＸＤＢ１、ＸＤＢ２を使用する時、メモリ共通の読み出し／書き込み動作を制御する信号
ＭＶＹ：ＹＡＢ、ＹＤＢ１、ＹＤＢ２を使用する時、メモリ共通の読み出し／書き込み動作を制御する信号
ＷＥ、ＷＥＸ、ＷＥＹ：メモリ共通の書き込み動作か、読み出し動作かを指定する制御信号
ＭＳＥＬ、ＭＳＥＬＸ、ＭＳＥＬＹ：オンチップメモリ共通のメモリアクセスイネーブル信号
ＡＳ、ＡＳＸ、ＡＳＹ：アドレス情報が有効であることを示す信号
ＭＬ［１：０］、ＭＬＸ［１：０］、ＭＬＹ［１：０］：アドレスデコーダでどのメモリマットのワード線をイネーブルにすべきかを指定する制御信号
ＡＤＸ［１３：０］、ＡＤＹ［１３：０］：アドレスデコーダへ渡すアドレス情報
ＥＲＧ：データ演算回路内のレジスタファイル
ＥＭＰＹ：データ演算回路内の乗算器
ＥＡＬＵ：データ演算回路内の算術論理演算器
Ｅ１ＤＥＣ１、Ｅ２ＤＥＣ１、Ｅ３ＤＥＣ１：データ演算回路内のデータ転送用制御信号を生成する制御回路
ＥＤＥＣ２：データ演算回路内のデータ演算用制御信号を生成する制御回路
ＥＣＴ１〜６、１１〜１８、２１〜３１：データ転送用制御信号を生成する制御回路から出力される制御信号
ＥＭＸ１〜９：データ演算回路内のセレクタ回路
ＥＣＢ１〜７：データ演算回路内のクロックドゲート
ＥＬＴ１〜７：ラッチ回路
ＥＭＶ：ＩＤＢ１、ＩＤＢ２を使用する時、データ演算回路にデータ転送動作を指示するための制御信号
ＥＭＶＸ：ＸＤＢ１、ＸＤＢ２を使用する時、データ演算回路にデータ転送動作を指示するための制御信号
ＥＭＶＹ：ＹＤＢ１、ＹＤＢ２を使用する時、データ演算回路にデータ転送動作を指示するための制御信号
ＥＤＩＯ：ＩＤＢ１、ＩＤＢ２を使用する時、データ演算回路にデータ転送動作時の転送方向を指定するための制御信号
ＥＤＩＯＸ：ＩＤＢ１、ＩＤＢ２、ＸＤＢ１、ＸＤＢ２を使用する時、データ演算回路にデータ転送動作時の転送方向を指定するための制御信号
ＥＤＩＯＹ：ＹＤＢ１、ＹＤＢ２を使用する時、データ演算回路にデータ転送動作時の転送方向を指定するための制御信号
ＥＤＬ、ＥＤＬＩ：ＩＤＢ１、ＩＤＢ２を使用する時、データ演算回路にデータ転送時のビット長を指定するための制御信号
ＥＸＣＮＴ：データ演算回路に演算動作を指示するための制御信号群。
【図１】
0003650519.tif 000002
【図２】
0003650519.tif 000003
【図３】
0003650519.tif 000004
【図４】
0003650519.tif 000005
【図５】
0003650519.tif 000006
【図６】
0003650519.tif 000007
【図７】
0003650519.tif 000008
【図８】
0003650519.tif 000009
【図９】
0003650519.tif 000010
【図１０】
0003650519.tif 000011
【図１１】
0003650519.tif 000012
【図１２】
0003650519.tif 000013
【図１３】
0003650519.tif 000014
【図１４】
0003650519.tif 000015
【図１５】
0003650519.tif 000016
【図１６】
0003650519.tif 000017
【図１７】
0003650519.tif 000018
【図１８】
0003650519.tif 000019
【図１９】
0003650519.tif 000020
【図２０】
0003650519.tif 000021
【図２１】
0003650519.tif 000022
【図２２】
0003650519.tif 000023
【図２３】
0003650519.tif 000024
【図２４】
0003650519.tif 000025
【図２５】
0003650519.tif 000026
【図２６】
0003650519.tif 000027
【図２７】
0003650519.tif 000028
【図２８】
0003650519.tif 000029
【図２９】
0003650519.tif 000030
【図３０】
0003650519.tif 000031
【図３１】
0003650519.tif 000032
【図３２】
0003650519.tif 000033
【図３３】
0003650519.tif 000034
【図３４】
0003650519.tif 000035
【図３５】
0003650519.tif 000036
【図３６】
0003650519.tif 000037
【図３７】
0003650519.tif 000038
【図３８】
0003650519.tif 000039
【図３９】
0003650519.tif 000040
【図４０】
0003650519.tif 000041
【図４１】
0003650519.tif 000042
【図４２】
0003650519.tif 000043
【図４３】
0003650519.tif 000044
【図４４】
0003650519.tif 000045
【図４５】
0003650519.tif 000046
【図４６】
0003650519.tif 000047
【図４７】
0003650519.tif 000048
【図４８】
0003650519.tif 000049
【図４９】
0003650519.tif 000050
【図５０】
0003650519.tif 000051
【図５１】
0003650519.tif 000052
【図５２】
0003650519.tif 000053
【図５３】
0003650519.tif 000054
【図５４】
0003650519.tif 000055
【図５５】
0003650519.tif 000056
【図５６】
0003650519.tif 000057
【図５７】
0003650519.tif 000058
【図５８】
0003650519.tif 000059