Nothing Special   »   [go: up one dir, main page]

JP3650519B2 - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP3650519B2
JP3650519B2 JP34752797A JP34752797A JP3650519B2 JP 3650519 B2 JP3650519 B2 JP 3650519B2 JP 34752797 A JP34752797 A JP 34752797A JP 34752797 A JP34752797 A JP 34752797A JP 3650519 B2 JP3650519 B2 JP 3650519B2
Authority
JP
Japan
Prior art keywords
data
memory
circuit
arithmetic circuit
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP34752797A
Other languages
English (en)
Other versions
JPH11175339A (ja
Inventor
淳 木内
哲也 中川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP34752797A priority Critical patent/JP3650519B2/ja
Priority to US09/210,886 priority patent/US6304958B1/en
Publication of JPH11175339A publication Critical patent/JPH11175339A/ja
Application granted granted Critical
Publication of JP3650519B2 publication Critical patent/JP3650519B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は複数のデータ演算回路を搭載したマイクロコンピュータに有効な技術に関する。
【0002】
【従来の技術】
従来より処理性能向上のために、特定の演算処理を少ないサイクル数で実行する積和演算器を搭載した1チップマイクロコンピュータがある。日経エレクトロニクス 1992.11.23 (no.568) 99頁から112頁に記載されている、いわゆるRISCプロセッサでは、ディジタル信号処理で頻繁に実行される積和演算処理を少ないサイクル数で実行できるように、汎用のCPUの他に積和演算モジュールを搭載している。
【0003】
さらに、より高性能化を目的として同じ処理を同時に複数実行できるような積和演算器を備える例も見られる。
【0004】
例えば公知文献特開平6―83624号公報では、データメモリと演算部が一組となった第1と第2の演算系を備え、命令デコーダからの制御信号によって、第1及び第2の演算系の同時処理並びに必要に応じた独立処理が可能となっている。
【0005】
別の公知文献特開平3ー282926号公報では、データ演算器モジュールとして浮動小数点演算装置を備え、モード切替によって単精度演算/倍精度演算/単精度2並列演算の各機能を共通の演算器で実現している。
【0006】
また、別の公知文献特開平3ー94328号公報では、乗算器について、同じハードウェアで単精度演算/倍精度演算/単精度2並列演算の各機能を実現する例が示されている。
【0007】
上記3つの公開公報に記載の技術は、単精度単独演算や単精度の2並列演算機能も共通のハードウェアで実現し、高性能化を図ると同時にハードウェアの増大を抑制しようとするものである。
【0008】
【発明が解決しようとする課題】
しかしながら、特開平6―83624号公報に記載の発明では、第1演算系と第2演算系が独立しているので、第1データメモリのデータを第2の演算器で処理することはできない。同様に第2データメモリのデータを第1の演算器で処理することはできない。また、他2つの上記公開公報は単精度2並列演算機能に関する手段を開示しているが、演算に必要なソースデータの供給手段について開示がなく、演算結果をメモリに格納する場合の具体的な手段についても開示はない。
【0009】
このため、上記3つの公開公報に開示された発明では、データ転送がネックとなって演算に必要なソースデータを遅滞なく演算手段へ供給する上で問題があり、SIMD(Single Instruction Multiple Data)型並列演算機能を有するマイクロコンピュータの並列演算性能を最大限に発揮させることはできない。また、データ転送を行うに際しては、単独演算動作と並列演算動作との命令体系上の整合性を保持することも重要である。
【0010】
したがって、本願発明の目的は、通常の単独演算動作と、SIMD型の並列演算動作との間の命令体系上の整合性を保持しつつ、演算に必要なソースデータを遅滞なく供給することを可能にしたマイクロコンピュータを提供することにある。
【0011】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要は下記の通りである。
【0012】
すなわち本発明のマイクロコンピュータは、アドレス生成回路を有する中央処理回路と、
上記アドレス生成回路から共通のアドレスがそれぞれ供給される第1のメモリ及び第2のメモリと、上記第1のメモリ及び上記第2のメモリに結合された第1の演算回路と、上記第1のメモリ及び上記第2のメモリに結合された第2の演算回路とを同一の半導体基板上に構成され、上記第1及び上記第2のメモリの一方から上記第1の演算回路へデータを供給し、上記第1の演算回路で演算動作を行い、上記第2の演算回路は動作停止する第1の動作モードと、上記第1のメモリから上記第1の演算回路へデータを供給し、上記第2のメモリから上記第2の演算回路へデータを供給し、上記第1の演算回路及び上記第2の演算回路で演算動作を行う第2の動作モードとを有する。
【0013】
上記した手段によれば、第1の動作モードにおいて上記第1及び上記第2のメモリの一方から上記第1の演算回路へデータを供給し、上記第1の演算回路で演算動作を行い、上記第2の演算回路は動作停止することにより、単独の演算を実行できる。また、演算回路にデータを供給するメモリが2つあるので、同集積規模のメモリを使用し従来技術と比較した場合、演算回路が演算データとして扱える量が2倍の量に増やすことができる。
【0014】
第2の動作モードにおいて、上記第1のメモリから上記第1の演算回路へデータを供給し、上記第2のメモリから上記第2の演算回路へデータを供給することにより、上記第1の演算回路及び上記第2の演算回路で演算動作を行うことにより複数並列演算を実行できる。この場合、第1のメモリ及び第2のメモリは1つのアドレスによってアクセスされる。
【0015】
より具体的なメモリ構成としては、上記第1の動作モードにおいては上記第1のメモリ及び上記第2のメモリは互いに異なる空間にアドレスマッピングされ、上記第2の動作モードにおいては上記第1のメモリ及び上記第2のメモリは同じ空間にアドレスマッピングされるように切り換えればよい。
【0016】
この場合、上記第1の動作モードの場合には上記第1のメモリ及び上記第2のメモリは互いに異なる空間にアドレスマッピングされているので、該当するアドレスに対応するデータは上記第1のメモリ及び上記第2のメモリのいずれかに一つだけあり、それが上記第1の演算回路へ供給される。一方、上記第2の動作モードの場合には上記第1のメモリ及び上記第2のメモリは同じ空間にアドレスマッピングされているので、該当するアドレスに対応するデータは上記第1のメモリ及び上記第2のメモリにそれぞれ一つづつあり、それらが上記第1のメモリからは上記第1の演算回路へ、上記第2のメモリからは上記第2の演算回路へ供給される。
【0017】
上記動作モードによるメモリのアドレスマッピングの切り換えは様々な方法あるが、具体的には、例えば次のような手段が考えられる。
【0018】
すなわち、メモリの構成として、上記第1のメモリ及び上記第2のメモリはそれぞれアドレスデコーダ及び制御回路を有し、上記第1のメモリ及び上記第2のメモリへ供給される上記共通のアドレスは複数のビットから構成され、上記制御回路のそれぞれには上記共通のアドレスの一部のビットが入力され、上記アドレスデコーダには上記一部のビット以外の他のビットが入力され、上記第1の動作モードの場合には上記第1のメモリ又は上記第2のメモリの一方が上記一部のビットに基づいて選択され、上記選択されたメモリに含まれる制御回路は、上記他のビットに対応するデータを供給させ、上記第2の動作モードの場合には上記他のビットに対応するデータを上記第1のメモリ及び上記第2のメモリから供給させる。
【0019】
上記具体的な手段において、上記第1の動作モードでは、上記一部のビットによって第1のメモリ又は上記第2のメモリの一方を選択するので、上記他のビットに対応するデータは選択された一方のメモリのみから出力される。また、上記第2の動作モードでは、上記一部のビットによるメモリの選択は行われず、上記他のビットに対応するデータは上記第1のメモリ及び上記第2のメモリからそれぞれ出力される。このようにして上記動作モードによるメモリのアドレスマッピングの切り換えを実現することができる。上記一部のビットは具体的にはアドレスの上位の1ビットであるが、下位1ビットでもよいし、その他のビットを用いてもよいし、複数のビットでもよいことは言うまでもない。
【0020】
モード切り換えに着目した場合、上記第1の動作モード及び上記第2の動作モードのいずれの動作モードであるとの情報を上記中央処理回路からの制御命令に含ませてメモリ、演算回路といった各モジュールに命令を実行する度に伝達してもよい。しかし、他のより具体的実現手段として、上記第1の動作モード及び上記第2の動作モードのいずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備するようにし、上記保持された情報に基づいた制御信号を上記モード設定回路から上記各モジュールに伝達することで制御を行う方がより好ましい。
【0021】
上記モード情報を含んだ命令を実行する度に上記モード情報を伝達するためにはモード毎に命令がなければならないが、上記いずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備すれば、上記いずれの動作モードであるかの情報を指定するモード選択命令と両方のモードに共通の演算命令があればよいからである。つまり、命令セット中の命令数を少なくできる。例えば、第1のモード及び第2のモードのそれぞれに演算命令が50命令あったとすると、総命令数は100になるが、上記モード選択命令と演算命令が別々にあった場合、モード選択命令が2で、演算命令が50命令あるので命令総数が52となり、大幅に命令数を少なくできる。命令数が少なくなることにより考慮すべき命令が少なくなるので、プログラム作成時の負担が軽くなる。
【0022】
演算回路が停止することに着目したより具体的な手段としては、上記第1の演算回路及び上記第2の演算回路のそれぞれは演算回路外部へデータを選択的に出力するための出力手段を具備し、上記第1の動作モードにおいて上記第2の演算回路の出力手段は上記第2の演算回路外部へのデータ出力を禁止することによればよい。
【0023】
これにより停止している上記第2の演算回路からのデータが上記第1の演算回路へ供給されるデータに悪影響を及ぼすことを防止できる。
【0024】
演算結果の書き戻しに関しては、データを供給したメモリに書き戻してもよいが、上記第1の動作モードにおいて、上記第1の演算回路が演算動作するためのデータを供給した上記第1のメモリ及び上記第2のメモリの一方のメモリとは異なる他方のメモリへ演算結果のデータを伝達するようにしてもよい。
【0025】
モードの種類に関しては、上記第1の動作モード及び上記第2の動作モードだけではなく、上記第1及び上記第2のメモリの一方から上記第2の演算回路へデータを供給し、上記第2の演算回路で演算動作を行い、上記第1の演算回路は動作停止する第3の動作モードを有してもよい。
【0026】
メモリ、演算回路といった上記各モジュール間の相互結合について着目したより具体的な実現手段としては、本発明のマイクロコンピュータは、アドレス生成回路を含む中央処理回路と、上記アドレス生成回路からアドレス供給されるアドレスバスと、上記アドレスバスに接続される第1のメモリと、上記アドレスバスに接続される第2のメモリと、上記第1のメモリと上記第2のメモリに接続される第1のデータバスと、上記第1のメモリと上記第2のメモリに接続される第2のデータバスと、上記第1のデータバスに接続される第1の演算回路と、上記第2のデータバスに接続される第2の演算回路とを具備して成り、上記第1のメモリ及び上記第2のメモリの一方から上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する第1の動作モードと、上記第1のメモリから上記第1の演算回路へデータが供給され、上記第2のメモリから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる第2の動作モードとを有する。
【0027】
上記手段によれば、例えば上記第1の演算回路へのデータ供給は第1のデータバスを経由させ、上記第2の演算回路へのデータ供給は第2のデータバスを経由させるといったように演算回路毎にデータバスを独立にすることができ、データ転送を効率よく行うことができる。
【0028】
命令セットに着目したより具体的な手段としては、マイクロコンピュータは、中央処理回路と、上記中央処理回路が出力するアドレスによってアクセスされる複数のメモリと、上記複数のメモリの一つから供給されるデータに基づいて演算動作を行う第1の演算回路及び第2の演算回路とを具備し、上記第1の演算回路及び上記第2の演算回路の一方が演算をし、他方が演算動作を停止する第1の動作モードと、上記第1の演算回路及び上記第2の演算回路の両方が演算動作を行う第2の動作モードとを有し、上記第1のモード、上記第2のモードのいずれの場合にも、共通に用いられる命令セットを有する。
【0029】
既述したように、上記第1のモード、上記第2のモードのいずれの場合にも、共通に用いられる命令セットをもつことで総命令数を少なくなり、考慮すべき命令が少なくなるので、プログラマーなどがプログラムする際の負担が軽くなる。
【0030】
以上の手段の説明においてはメモリ数が2の場合を例に説明したが、本発明はこれに限られるものではなく、メモリの数が3以上になってもよい。
【0031】
一例としてメモリ数が4の場合の具体的実現手段として、本発明のマイクロコンピュータは、アドレス生成回路を有する中央処理回路と、上記アドレス生成回路から共通のアドレスがそれぞれ供給される第1のメモリ、第2のメモリ、第3のメモリ及び第4のメモリと、上記第1のメモリ乃至上記第4のメモリに結合された第1の演算回路と、上記第1のメモリ乃至上記第4のメモリに結合された第2の演算回路とを同一の半導体基板上に構成し、上記第1のメモリ乃至上記第4のメモリのいずれか一つ又は任意の2つから上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する第1の動作モードと、上記第1のメモリ乃至上記第4のメモリのいずれか一つから上記第1の演算回路へデータが供給され、上記第1の演算回路へデータを供給するメモリ以外の残りのいずれか一つから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる、若しくは、上記第1乃至第4のメモリの任意の2つから上記第1の演算回路へデータが供給され、残りの2つから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる第2の動作モードとを有する。
【0032】
上述の手段によれば、アドレス生成回路から同時にアドレスを2つ生成することによって、1つの演算回路に2つのデータを供給することができる。当然単独演算/複数並列演算を切り換え実行できるので、アドレスマッピングにより、4つのメモリから上記2つのアドレスに該当する4つのデータを2つの演算回路へそれぞれ2つずつ供給して並列演算させることもできる。
【0033】
上記第1の動作モードにおいて、上記第1のメモリ乃至上記第4のメモリは互いに異なる空間にアドレスマッピングされている場合、該当するアドレスに対応するデータは上記第1のメモリ乃至上記第4のメモリのいずれかに1つだけあり、それを上記第1の演算回路へ供給し演算できる。また、上記第1のメモリ及び上記第2のメモリの組が同じ空間にアドレスマッピングされ、上記第3のメモリ及び上記第4のメモリの組が同じ空間にアドレスマッピングされている場合、該当するアドレスに対応するデータは各組にそれぞれ一つづつあり、それら2つを上記第1の演算回路へ供給し演算できる。
【0034】
一方、上記第2の動作モードにおいては、上記第1のメモリ及び上記第2のメモリの組が同じ空間にアドレスマッピングされ、上記第3のメモリ及び上記第4のメモリの組が同じ空間にアドレスマッピングされている。よって、1つのアドレスがアドレス生成回路から生成された場合、その該当するアドレスに対応するデータは、例えば、上記第1のメモリ及び上記第2のメモリにそれぞれ一つあるならば、上記第1のメモリからは上記第1の演算回路へ、上記第2のメモリからは上記第2の演算回路へ供給し演算できる。また、2つのアドレスがアドレス生成回路から生成された場合、2つのアドレスに対応するデータは上記第1のメモリ及び上記第2のメモリの組にそれぞれ一つ、上記第3のメモリ及び上記第4のメモリの組にそれぞれ一つあるので、上記第1のメモリ及び上記第3のメモリからのデータを上記第1の演算回路へ供給し、上記第2のメモリ及び上記第4のメモリからのデータを上記第2の演算回路へ供給し、各演算回路にてそれぞれ演算することができる。
【0035】
すなわち、各演算回路に供給されるデータは上記第1のメモリ乃至上記第4のメモリのいずれか1つ又は2つから供給されるのである。尚、各モードにおける演算命令によっては、各演算回路内のレジスタに格納されているデータをソースとして演算する場合等があり、その場合には上記第1乃至上記第4のメモリのいずれからもデータを供給しないで演算をすることがあることは言うまでもない。また、先にメモリ2つの例で説明した各具体的手段がメモリ4つの場合にも同様に適用されることは言うまでもない。
【0036】
メモリ、演算回路といった上記各モジュール間の相互結合について着目したより具体的な手段としては、本発明のマイクロコンピュータは、アドレス生成回路を含む中央処理回路と、上記アドレス生成回路からアドレス供給される第1のアドレスバス、第2のアドレスバス及び第3のアドレスバスと、上記第1のアドレスバス及び上記第2のアドレスバスに接続される第1のメモリと、上記第1のアドレスバス及び上記第2のアドレスバスに接続される第2のメモリと、上記第1のアドレスバス及び上記第3のアドレスバスに接続される第3のメモリと、上記第1のアドレスバス及び上記第3のアドレスバスに接続される第4のメモリと、上記第1のメモリ乃至上記第4のメモリに接続される第1のデータバスと、上記第1のメモリ乃至上記第4のメモリに接続される第2のデータバスと、上記第1のメモリと上記第2のメモリに接続される第3のデータバスと、上記第1のメモリと上記第2のメモリに接続される第4のデータバスと、上記第3のメモリと上記第4のメモリに接続される第5のデータバスと、上記第3のメモリと上記第4のメモリに接続される第6のデータバスと、上記第1のデータバス、上記第3のデータバス及び上記第5のデータバスに接続された第1の演算回路と、上記第2のデータバス、上記第4のデータバス及び上記第6のデータバスに接続された第2の演算回路とを具備して成り、上記第3のデータバス又は上記第5のデータバスに接続されたメモリのうちいずれか一つから上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する、若しくは、上記第3のデータバスに接続されたメモリのうちどちらか一つ及び上記第5のデータバスに接続されたメモリのうちどちらか一つから上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する第1の動作モードと、上記第3のデータバス又は上記第5のデータバスを介して上記第1乃至第4のメモリのうちいずれか一つから上記第1の演算回路へデータが供給され、上記第4のデータバス又は上記第6のデータバスを介して上記第1乃至第4のメモリのうち上記第1の演算回路へデータを供給していないメモリから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる、若しくは、上記第3のデータバスを介して上記第1のメモリ又は上記第2のメモリの一方、及び、上記第5のデータバスを介して上記第3のメモリ又は上記第4のメモリの一方から上記第1の演算回路へデータが供給され、上記第4のデータバスを介して上記第1のメモリ又は上記第2のメモリの他方、及び、上記第6のデータバスを介して上記第3のメモリ又は上記第4のメモリの他方から上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる第2の動作モードとを有する。
【0037】
上記手段によれば、例えば上記第1の演算回路へのデータ供給は上記第1のメモリからのデータは上記第3のデータバスを、上記第3のメモリからのデータは上記第5のデータバスを経由させ、上記第2の演算回路へのデータ供給は上記第2のメモリからのデータは上記第4のデータバスを、上記第4のメモリからのデータは上記第6のデータバスを経由させるといったようにメモリから演算回路へのデータ供給の際に経由するデータバスを独立にすることができる。
【0038】
上記各モジュールの接続は上述の通りでなくともよく、他の具体的実現手段としては、上記第1のメモリは上記第1のデータバス及び上記第3のデータバスにのみ接続され、上記第3のメモリは上記第1のデータバス及び上記第5のデータバスにのみ接続され、上記第2のデータ演算回路は上記第2、第4、第6のデータバスに加えて上記第5のデータバスにも接続されるようにしてもよい。尚、他の接続は先の手段と同じである。
【0039】
上記他の手段によって、上記第1及び上記第2のメモリから並行して上記第1及び上記第2のデータ演算回路へデータを供給する場合、上記第1のメモリからは上記第3のデータバスを介して上記第1のデータ演算回路へ供給し、上記第2のメモリからは上記第4のデータバスを介して上記第2のデータ演算回路へ供給することになる。したがって、上記第1のメモリから上記第4のデータバスを介し、上記第2のメモリから上記第3のデータバスを介してデータ供給しない。すなわち、2つのデータ演算回路へ並行してデータ供給する際に使用するデータバスの選択をしない点で先の実現手段とは異なる。
【0040】
【発明の実施の形態】
〔第1の実施例のマイクロコンピュータの全体構成〕
図1は本発明を適用した1チップマイクロコンピュータのブロック図の一例である。図中、LSI1は本発明を適用したマイクロコンピュータ、CPU1は命令をフェッチ、デコードして所要の制御信号を生成する回路を包含した中央処理回路、CFCH1はCPU1内部に含まれている命令フェッチ回路、CDECはCPU1内部に含まれている命令デコード回路、CNTはCDECで生成された制御信号群、MODE1はマイコンLSI1を制御信号によって指示されたモードに設定し、その状態を保持するモード設定回路、MD[1:0]はMODE1から必要なモジュールへ現在のモード状態を伝えるモード信号、CADR1はCPU1内部に含まれ、指示されたアドレスを生成するアドレス生成回路、IABはCADR1で生成されたアドレスが出力されるアドレスバス、MEM11はチップ上に内蔵された第1のオンチップメモリ、MEM12はチップ上に内蔵された第2のオンチップメモリ、EX11はデータ演算を実行する第1のデータ演算回路、EX12はデータ演算を実行する第2のデータ演算回路、IDB1はMEM11、MEM12、EX11、MODE1及びバスインタフェース回路BIF1に接続され、データ転送に使用される第1のデータバス、IDB2はMEM11、MEM12、EX12、MODE1及びバスインタフェース回路BIF1に接続され、データ転送に使用される第2のデータバス、BIF1はIDB1、IDB2各バスと周辺モジュールに接続されている周辺モジュール用データバスPDBとのデータ受渡し及び各周辺モジュールへのデータ転送制御信号を生成するバス・インタフェース回路、IRQは割り込み処理回路、PIOは外部とのパラレルインタフェース回路、SIO1は第1のシリアルインタフェース回路、SIO2は第2のシリアルインタフェース回路、TIMはタイマ回路、ICTはBIF1で生成されるIRQモジュールとのデータ転送を制御する信号、PCTはBIF1で生成されるPIOモジュールとのデータ転送を制御する信号、S1CTはBIF1で生成されるSIO1モジュールとのデータ転送を制御する信号、S2CTはBIF1で生成されるSIO2モジュールとのデータ転送を制御する信号、TCTはBIF1で生成されるTIMモジュールとのデータ転送を制御する信号、IREQはIRQモジュールからCPU1へ割り込み要求があったことを伝える信号である。
【0041】
これらの機能の内、タイマ回路TIM、シリアルインタフェース回路SIO1及びSIO2、外部とのパラレルインタフェース回路PIO、割り込み処理回路IRQ、周辺用データバスについては、本発明を適用したマイクロコンピュータLSI1には重要な構成要素ではあるが、以下の動作説明では詳細説明は省略する。
【0042】
〔モード別の動作及び命令〕
以下、図1におけるモード別の動作を説明する。
【0043】
第1のデータ演算回路EX11と第2のデータ演算回路EX12は機能が等価であり、命令コード上では両者の演算機能及びモジュール内にあるレジスタは区別されず、モードによって区別される。モード設定回路MODE1は、以下の3つのモードの内の1つのモードを設定して状態を保持する。尚、モード1とモード2だけを有してもよい。
【0044】
モード1:第1のデータ演算回路による単独演算を実行可能。リセット時の初期値。
【0045】
モード2:第1及び第2のデータ演算回路による2並列演算を実行可能。
【0046】
モード3:第2のデータ演算回路による単独演算を実行可能。
【0047】
これらのモードは2本の状態信号MD[1]、MD[0]によって表示され、MD[1]=MD[0]=lowの時はモード1状態を、MD[1]=low、MD[0]=highの時はモード2状態を、MD[1]=high、MD[0]=lowの時はモード3状態を表す。なお、MD[1]=MD[0]=high状態は本実施例では未使用コードである。また、本実施例では状態信号をコード化して表示する例を示しているが、コードの定義は異なっていても良いし、モード毎に独立の状態イネーブル信号で表示しても良いことは明らかである。異なったコードの定義や、モード毎に独立の状態イネーブル信号で表示した場合、第1及び第2のデータ演算回路EX11及びEX12は制御回路も含めてまったく同じ回路構造で実現することも可能になることがある。詳細については後述する。
【0048】
ここで具体的な命令の一例について述べるため、図56にマイクロコンピュータの命令セットに含まれる命令のフォーマット及び命令コードの一例を示す。
【0049】
本実施例では大きく分けてCPU命令及びDSP命令の2種類の命令をサポートしている。CPU命令の全てとDSP命令の一部は、16ビット長の命令コードであり、残りのDSP命令は32ビット長の命令コードになっている。
【0050】
CPU命令とは、上述のデータ演算回路を動作させることなく専らCPUコアによって実行される命令であり、どのモードでも共通に同じ単一動作を行う。
【0051】
DSP命令とは、アドレス演算若しくはオペランドアクセスなどの一部の処理をCPUコアに負担させてデータ演算回路が演算を実行する命令、あるいはデータ演算回路内レジスタとのデータ転送動作を実行する命令であり、モードによって、1つのデータ演算回路で処理を実行する場合と、2つのデータ演算回路で並列に同じ処理を実行する場合とがある。
【0052】
図56のCPU命令フォーマットにおいて、nnnnはデスティネーションオペランドの指定領域、ssssはソースオペランドの指定領域、ddddはディスプレースメントの指定領域、iiiiiiiiはイミディエイト値の指定領域である。例えば、ADD命令などの場合は、nnnnはソースオペランドの指定領域と共通領域とされ、演算結果はnnnnに格納される。
【0053】
DSP命令の一例中、最上段の欄には乗算命令である「PMULS」、データ転送命令である「MOVX.W」及び「MOVY.W」の3命令の記述がある。これら3つの命令は一つの命令コードによって指定可能であり、並行して実行できる。つまり、この命令コードによって、データ演算回路においてSe及びSfで指定されるレジスタから保持データを乗算器に供給・演算し、その演算結果をDgで指定したレジスタに書込む動作と、アドレスポインタAaによって指定されるデータをデスティネーション・オペランドDbに転送する動作、アドレスポインタAcによって指定されるデータをデスティネーション・オペランドDdに転送する動作が並行に実行されるのである。ここでアドレスポインタAa、AcはCPUコア内のレジスタであり、その他のオペランドはデータ演算回路内のレジスタを指す。
【0054】
2段目の欄には加算命令である「PADD」、乗算命令である「PMULS」、データ転送命令である「MOVX.W」及び「MOVY.W」の4命令の記述がある。この命令コードによって、データ演算回路においてSx及びSyで指定されるレジスタから保持データを算術論理演算器に供給・演算し、その演算結果をDuで指定したレジスタに書込む動作、Se及びSfで指定されるレジスタから保持データを乗算器に供給・演算し、その演算結果をDgで指定したレジスタに書込む動作と、アドレスポインタAaによって指定されるデータをデスティネーション・オペランドDbに転送する動作、アドレスポインタAcによって指定されるデータをデスティネーション・オペランドDdに転送する動作の4つの動作が並列実行されるのである。3段目の欄は2段目の欄とほぼ同じであるが、「PADD」の代わりに減算命令である「PSUB」が用いられる点が異なっている。尚、各アドレスポインタのニーモニック(Aa、Ac)の右に付いている「+」はメモリアクセス後、ポインタをインクリメントして、次のメモリアクセス時にアドレスを更新する動作を指定している。
【0055】
以上は一つの命令コードで3つ乃至4つの動作を並列実行できる命令の定義について述べたが、無論、単独動作命令を別々に定義してもよい。また、上述したようにデータ転送命令と演算命令とを並列実行する場合には、アドレスバスが3つ必要であるため、後述する第3乃至第6の実施例のいずれかにおいて主に用いられる。
【0056】
また、同時並列実行される演算の演算結果のストア先は重ならないように制御する必要がある。例えば、ソフトウェア的に、アセンブラによって、同一デスティネーションにストアしないようにエラーチェックを行っても良い。また、エラーチェックにも関わらず重なってしまうことも考えられるので、ハードウェアがダメージを被らないようにするため、プライオリティ・エンコーダを用いて、優先順位の高い方を優先し、もう一方を無視するようにしてもよい。
【0057】
尚、本実施例においては各演算回路は単精度演算を行う場合の構成を示している。しかしながら、各演算回路が単精度演算及び倍精度演算の両方を行うように構成してもよいことはいうまでもなく、この場合、単精度演算/単精度複数並列に加えて、倍精度演算/倍精度複数並列演算が可能になる。単精度演算/倍精度演算の切換もモード切換でできようにしてもよい。
【0058】
リセットによる初期状態の時、マイクロプロセッサLSI1はモード1状態となり、MD[1]=MD[0]=lowとなる。第1のオンチップメモリMEM11、第2のオンチップメモリMEM12、アドレス生成回路CADR1、命令フェッチ回路CFCH1、バス・インタフェース回路BIF1、モード設定回路MODE1は、第1のデータバスIDB1との接続が有効となるように制御される。図2にモード1の時のMEM11及びMEM12のアドレス空間上のマッピング例を示す。なお、図2のメモリマップはモード3の時も同じである。また図2では連続したアドレス空間にMEM11、MEM12をマッピングしているが、特に連続している必要はなく、固有のアドレス空間にマッピングされていれば良いし各メモリの容量も16Kバイトで固定されるものでもないことは言うまでもない。
【0059】
第1のデータ演算回路EX11は中央処理回路CPU1から発行される制御信号の指示で演算動作を行うが、第2のデータ演算回路EX12は制御信号に関係なく非活性状態になる。中央処理回路CPU1はプログラムアドレスをアドレス生成回路で生成し、IABを通して所定のメモリより命令を読み出してIDB1から命令フェッチ回路CFCH1へ命令コードを読み込む。ここで命令を読み出すメモリはしもオンチップメモリMEM11、MEM12である必要はなく、例えば外部とのパラレルインタフェース回路PIOを経て外部にあるメモリから読み込んでも構わない。
【0060】
フェッチした命令コードは命令デコード回路CDECでデコードされ、各モジュールに対して必要な制御信号群CNTを生成する。
【0061】
デコードされた命令がメモリからのデータの読み出し命令の時、アドレス生成回路CADR1はアクセスすべきアドレスを生成して、アドレスバスIABに出力する。IABに出力されたアドレスがオンチップメモリMEM11又はMEM12がマッピングされたアドレスであった場合、MEM11又はMEM12は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、データバスIDB1に出力する。IDB1に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。命令で指定されたデスティネーションオペランドが例えばアドレス生成回路CADR1内部にあるレジスタの場合は、IDB1からデータがCADR1内部に取り込まれ、所定のレジスタに入力される。デスティネーションオペランドが第1又は第2のデータ演算回路EX11、EX12の内部にある場合、オペランドコードはEX11、EX12で共通であるが、モード1では第2のデータ演算回路EX12は非活性状態なので、IDB1上のデータはEX11に取り込まれる。命令で指定されたデスティネーションオペランドがモード設定回路MODE1の内部のレジスタの場合、IDB1からMODE内へデータが取り込まれ、所定のレジスタを更新する。この時MD[1]、MD[0]の状態を保持しているビットが変化した場合、所定の状態に対応したモードに切り替わることになる。IABに出力されたアドレスが外部メモリの領域であった場合、IAB上のアドレスはパラレル・インタフェース回路PIOから外部へ出力され、外部メモリから読み出されたデータがPIO、周辺用データバスPDB、バス・インタフェース回路BIF1を経てIDB1に出力され、命令で指定されたデスティネーションオペランドに転送される。
【0062】
デコードされた命令がメモリへのデータの書き込み命令の時、アドレス生成回路CADR1はアクセスすべきアドレスを生成して、アドレスバスIABに出力する。IABに出力されたアドレスがオンチップメモリMEM11又はMEM12がマッピングされたアドレスであった場合、MEM11又はMEM12は該当するアドレスのワード線を活性化させる。一方、命令で指定されたソースオペランドが例えばアドレス生成回路CADR1内部にあるレジスタの場合は、CADR1からデータがIDB1に出力され、MEM11又はMEM12に入力されて所定のアドレスに書き込まれる。ソースオペランドが第1又は第2のデータ演算回路EX11、EX12の内部にある場合、オペランドコードはEX11、EX12で共通であるが、モード1では第2のデータ演算回路EX12は非活性状態なので、EX11内のデータがIDB1上に出力される。命令で指定されたソースオペランドがモード設定回路MODE1の内部のレジスタの場合、MODE1内からデータがIDB1に出力される。IABに出力されたアドレスが外部メモリの領域であった場合、IAB上のアドレスはパラレル・インタフェース回路PIOから外部へ出力され、同時にソースオペランドからIDB1に出力されたデータがバス・インタフェース回路BIF1、周辺用データバスPDB、PIOを経て、外部メモリに書き込まれる。
【0063】
モード1では、メモリ以外の各モジュール間のデータ転送も、同じようにIDB1を用いて実行される。第2のデータ演算回路EX12はこのモードでは非活性であるので、ソースもしくはデスティネーションオペランドがデータ演算回路内部のレジスタ等を指定すると、第1のデータ演算回路EX11が自動的にアクセスされる。
【0064】
マイクロプロセッサLSI1がモード2状態の時、MD[1]=low、MD[0]=highとなる。第1のオンチップメモリMEM11、アドレス生成回路CADR1、命令フェッチ回路CFCH1、バス・インタフェース回路BIF1、モード設定回路MODE1は、第1のデータバスIDB1との接続が有効となるように制御される。第2のオンチップメモリMEM12は、受ける制御の内容によって第1のデータバスIDB1か第2のデータバスIDB2のどちらに接続するかを選択する。受ける制御がデータ演算回路EX11やEX12との間のデータ転送動作の場合は、第2のデータバスIDB2に接続する。それ以外の場合はIDB1に接続する。図3にモード2の時でかつ、受ける制御がデータ演算回路EX11やEX12との間のデータ転送動作の場合の、MEM11及びMEM12のアドレス空間上のマッピング例を示す。なお、モード2の時でかつ、受ける制御がデータ演算回路EX11やEX12との間のデータ転送動作以外の場合は、図2と同じである。また図3ではMEM11、MEM12の2重マッピング空間が2箇所存在しているが、図4のように1箇所のみのマッピングでも良いことは言うまでもない。
【0065】
第1のデータ演算回路EX11及び第2のデータ演算回路EX12は、命令コード上区別されないため、中央処理回路CPU1から発行される共通の制御信号の指示で同じ演算動作を行う。命令フェッチの場合、モード1の時と同様に中央処理回路CPU1はプログラムアドレスをアドレス生成回路で生成し、IABを通して所定のメモリより命令を読み出してIDB1から命令フェッチ回路CFCH1へ命令コードを読み込む。ここで命令を読み出すメモリがオンチップメモリの場合でも、命令フェッチ動作ではメモリマップは図2が適用されるので、指定されたアドレスから命令コードが正しく読み出される。第2のオンチップメモリMEM12の場合は読み出された命令コードはIDB1が選択されて出力される。フェッチした命令コードは命令デコード回路CDECでデコードされ、各モジュールに対して必要な制御信号群CNTを生成する。
【0066】
デコードされた命令がオンチップメモリとデータ演算回路との間のデータ転送動作以外の場合、動作はモード1と同じである。
【0067】
デコードされた命令がオンチップメモリとデータ演算回路との間のデータ転送動作の場合は以下のように動作する。
【0068】
メモリからのデータの読み出し命令の時、アドレス生成回路CADR1はアクセスすべきアドレスを生成して、アドレスバスIABに出力する。IABに出力されたアドレスは、MEM11とMEM12の双方の該当するアドレスのワード線を同時に活性化させ、所要のデータを読み出し、MEM11から読み出されたデータはデータバスIDB1に、MEM12から読み出されたデータはデータバスIDB2に出力する。IDB1に出力されたデータは、命令で指定された第1のデータ演算回路EX11内のデスティネーションオペランドに転送される。同時にIDB2に出力されたデータは、同じ命令で指定された第2のデータ演算回路EX12内のデスティネーションオペランドに転送される。メモリへのデータの書き込み命令の時、アドレス生成回路CADR1はアクセスすべきアドレスを生成して、アドレスバスIABに出力する。IABに出力されたアドレスは、MEM11とMEM12の双方の該当するアドレスのワード線を同時に活性化させる。一方、命令で指定された第1のデータ演算回路EX11内のソースオペランドのデータがIDB1上に出力される。同時に命令で指定された第2のデータ演算回路EX12内のソースオペランドのデータがIDB2上に出力される。先述のように、命令コード上ではEX11とEX12は区別しないので、モード2では以上のようにデータ転送命令でも同じ命令コードで同時に双方の動作を実行させることができる。データ演算回路内部でリソースが閉じているデータ演算命令の場合は、単一の命令コードで同時に同じ動作を複数実行できることは自明であろう。
【0069】
モード2では、メモリ以外の各モジュール間のデータ転送は、第2のデータ演算回路を除いたモジュール間で可能であり、第1のデータバスIDB1を用いて実行される。モード2では第2のデータ演算回路EX12以外のモジュールは、第1のデータバスIDB1に接続され、さらに第1と第2のデータ演算回路EX11、EX12内部のオペランドは命令コードでは区別できないので、このモードでは第2のデータ演算回路EX12内部のオペランドとのモジュール間データ転送はサポートされない。第2のデータ演算回路EX12内部のオペランドをアクセスする必要がある場合は、後述のモード3に切り替えて実行する。
【0070】
本実施例では、モード2で外部メモリの領域でも同様の機能をサポートすることを想定していない。外部メモリをアクセスする場合、2つの動作を同時に実行させるには2倍の外部との入出力端子が必要になり、パッケージのピン数の制約から考えて実用的ではない。またデータ転送動作は順番に1つずつ実行させるように制御する場合は、ピン数の制約は解消されるが、2つの処理を同時並列に実行させて性能を向上させる本来の目的と合わなくなる。ただし、本発明がこのような機能を外部メモリでは適用できないことを意味するものではなく、もし必要があるならば、オンチップメモリが実現している機能をバス・インタフェース回路BIF1、周辺用データバスPDB、パラレルインタフェースPIO及び外部メモリによって同じように構成すればいいことは明らかであるので、本明細書では別の実施例として説明することは省略する。
【0071】
マイクロプロセッサLSI1がモード3状態の時、MD[1]=high、MD[0]=lowとなる。第1のオンチップメモリMEM11、第2のオンチップメモリMEM12、アドレス生成回路CADR1、命令フェッチ回路CFCH1、バス・インタフェース回路BIF1、モード設定回路MODE1は、第2のデータバスIDB2との接続が有効となるように制御される。モード3の時のMEM11及びMEM12のアドレス空間上のマッピング例は、モード1の時と同じであり、図2に示されている。
【0072】
第2のデータ演算回路EX12は中央処理回路CPU1から発行される制御信号の指示で演算動作を行うが、第1のデータ演算回路EX11は制御信号に関係なく非活性状態になる。中央処理回路CPU1はプログラムアドレスをアドレス生成回路で生成し、IABを通して所定のメモリより命令を読み出してIDB2から命令フェッチ回路CFCH1へ命令コードを読み込む。ここで命令を読み出すメモリはしもオンチップメモリMEM11、MEM12である必要はなく、例えば外部とのパラレルインタフェース回路PIOを経て外部にあるメモリから読み込んでも構わない。フェッチした命令コードは命令デコード回路CDECでデコードされ、各モジュールに対して必要な制御信号群CNTを生成する。ここでのモード1との動作の違いは、命令コードが第2のデータバスIDB2から読み込まれることである。
【0073】
デコードされた命令がメモリからのデータの読み出し命令の時、アドレス生成回路CADR1はアクセスすべきアドレスを生成して、アドレスバスIABに出力する。IABに出力されたアドレスがオンチップメモリMEM11又はMEM12がマッピングされたアドレスであった場合、MEM11又はMEM12は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第2のデータバスIDB2に出力する。IDB2に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。命令で指定されたデスティネーションオペランドが例えばアドレス生成回路CADR1内部にあるレジスタの場合は、IDB2からデータがCADR1内部に取り込まれ、所定のレジスタに入力される。デスティネーションオペランドが第1又は第2のデータ演算回路EX11、EX12の内部にある場合、オペランドコードはEX11、EX12で共通であるが、モード3では第1のデータ演算回路EX11は非活性状態なので、IDB2上のデータはEX12に取り込まれる。命令で指定されたデスティネーションオペランドがモード設定回路MODEの内部のレジスタの場合、IDB2からMODE1内へデータが取り込まれ、所定のレジスタを更新する。この時MD[1]、MD[0]の状態を保持しているビットが変化した場合、所定の状態に対応したモードに切り替わることになる。IABに出力されたアドレスが外部メモリの領域であった場合、IAB上のアドレスはパラレル・インタフェース回路PIOから外部へ出力され、外部メモリから読み出されたデータがPIO、周辺用データバスPDB、バス・インタフェース回路BIF1を経てIDB2に出力され、命令で指定されたデスティネーションオペランドに転送される。
【0074】
デコードされた命令がメモリへのデータの書き込み命令の時、アドレス生成回路CADR1はアクセスすべきアドレスを生成して、アドレスバスIABに出力する。IABに出力されたアドレスがオンチップメモリMEM11又はMEM12がマッピングされたアドレスであった場合、MEM11又はMEM12は該当するアドレスのワード線を活性化させる。一方、命令で指定されたソースオペランドが例えばアドレス生成回路CADR1内部にあるレジスタの場合は、CADR1からデータがIDB2に出力され、MEM11又はMEM12に入力されて所定のアドレスに書き込まれる。ソースオペランドが第1又は第2のデータ演算回路EX11、EX12の内部にある場合、オペランドコードはEX11、EX12で共通であるが、モード3では第1のデータ演算回路EX11は非活性状態なので、EX12内のデータがIDB2上に出力される。命令で指定されたデスソースオペランドがモード設定回路MODE1の内部のレジスタの場合、からMODE内からデータがIDB2に出力される。IABに出力されたアドレスが外部メモリの領域であった場合、IAB上のアドレスはパラレル・インタフェース回路PIOから外部へ出力され、同時にソースオペランドからIDB2に出力されたデータがバス・インタフェース回路BIF1、周辺用データバスPDB、PIOを経て、外部メモリに書き込まれる。
【0075】
モード3では、メモリ以外の各モジュール間のデータ転送も、同じようにIDB2を用いて実行される。第1のデータ演算回路EX11はこのモードでは非活性であるので、ソースもしくはデスティネーション・オペランドがデータ演算回路内部のレジスタ等を指定すると、第2のデータ演算回路EX12が自動的にアクセスされる。
【0076】
〔モード設定回路MODE1の構成及び動作〕
モード設定回路MODE1のより具体的な構成例を図5に示す。図中、MDRはモード状態を示すMD[1:0]信号を保持するビットを構成するモードレジスタ、MDDEC1はモード設定回路内の制御信号DCT1〜5を生成する制御回路、DCT1〜5は制御回路MDDEC1から出力される制御信号、DMX1は第1のデータバスIDB1もしくは第2のデータバスIDB2上のデータを選択して取り込むセレクタ、DCB1はセレクタDMX1で選択されたデータをモードレジスタMDRに入力するクロックドゲート、DLT1はモードレジスタMDRの出力信号MD[1:0]を半周期遅延させるための遅延ラッチ回路、DMX2はDLT1の出力を第1のデータバスIDB1もしくは第2のデータバスIDB2に出力するためのセレクタ、DLT2は制御信号DCT1、DCT2を半周期遅延させるための遅延ラッチ回路、DLT3は制御信号DCT5を半周期遅延させるための遅延ラッチ回路、RDMDRはモードレジスタMDRの出力信号MD[1:0]を第1のデータバスIDB1もしくは第2のデータバスIDB2に出力するための制御信号、WTMDRは第1のデータバスIDB1もしくは第2のデータバスIDB2上のデータをモードレジスタMDRに入力するための制御信号、CLRはモードレジスタMDRを初期化するためのクリア信号である。なお、RDMDR及びWTMDRは中央処理回路CPU1が出力している制御信号群CNTに含まれている制御信号である。
【0077】
モード設定回路MODE1の詳細な動作を説明する。
【0078】
図6は制御回路MDDEC1の機能を表す真理値の表、図6はモードレジスタMDRの書き込み/読み出し動作時のタイミングチャート図である。モード設定回路MODE1は中央処理回路CPU1が発行する制御信号RDMDR及びWTMDRによってモードレジスタMDRの内容を書き換えることによって、モードの状態を変更する。リセット等によってCLR信号がイネーブルになり、初期化されると、モードレジスタMDRはモード1状態を示すので、図6のNo.1〜3のうちのいずれかに該当する。モードレジスタMDRを書き換える命令がデコードされると、中央処理回路CPU1はWTMDR信号を「1」にするので、DCT4及びDCT5が「1」になり、第1のデータバスIDB1から転送されてきたデータをDMX1、DCB1を経てMDRに入力する。モードレジスタMDRの内容を読み出す命令がデコードされると、中央処理回路CPU1はRDMDR信号を「1」にするので、DCT2が「1」になり、DLT1、DMX2を経てMDRレジスタの内容が第1のデータバスIDB1に出力される。なお、図5ではデータの入出力はデータバスの下位2ビット、即ち0ビット目と1ビット目を使用するようになっているが、本発明が特にこのビット位置に限定されないことは言うまでもない。
【0079】
図6のNo.1~3とNo.4~6に定義されているように、以前のMDRへの書き込み動作により、モード2の状態に変更されても動作はモード1の場合と同様である。モード3状態の時、図6のNo.7~9に定義されているように、データの入出力は第1のデータバスIDB1の代わりに第2のデータバスIDB2が使われ、後は同じである。以上のようにしてモード設定回路MODE1自身に持っているモードレジスタの示すモードにより、入出力のデータバスを自動的に切り替える機構を実現できる。
【0080】
本実施例では、モード設定回路を独立したモジュールとして示したが、例えば中央処理回路CPU1内部の1レジスタとして構成してもいいことは、明らかであり、ハードウェアモジュールの分割の仕方には限定されない。また、モードレジスタMDRもモード信号MD[1:0]の状態を保持するための専用レジスタとして構成した例を示しているが、他の制御レジスタの一部のビットに構成しても良いことは言うまでもない。さらにモードレジスタMDRはメモリマップドレジスタとしてマッピングすることも可能であることは明らかである。
【0081】
中央処理回路CPU1が発行する制御信号RDMDR及びWTMDRは、フェッチされた命令のデコード結果として生成される場合もあるが、別の方法によって生成されても構わない。例えば割り込み処理回路IRQから出力される割り込み要求信号IREQにより、ある特定の割り込み要求が発生した時に自動的にモードを切り替える機能を備えても良い。また命令による制御でも、データの転送でモードレジスタMDRの内容を書き換える他、モードセット命令等で直接変更する方法もある。このように具体的なモード切り替えの手段は数多くあるが、本発明は特定の具体的な切り替え方法に限定されるものではなく、モードを設定して保持する機能及びそれを変更する手段があれば良いことは、明らかである。
【0082】
中央処理回路CPU1内の命令フェッチ回路CFCH1やアドレス生成回路CADR1においても、モード設定回路MDDEC1と同様の構成方法で、第1のデータバスIDB1からか、第2のデータバスIDB2からかを自動的に制御できることは明らかであろう。フェッチ動作の場合、フェッチはフェッチレジスタへの書き込み動作であるから、制御信号RDMDRの代わりにフェッチ制御信号を使用すれば良い。読み出し機能はフェッチ回路の場合は不要である。
【0083】
尚、アドレス生成回路は通常、中央処理回路CPU1内の汎用レジスタと算術論理演算器を用いて実現する。アドレス生成回路内レジスタとデータバスとのデータ転送動作におけるデータバスの切り替え制御方法は、モード設定回路MDDECと同様であり、その他のアドレス生成回路本来の動作は通常の動作と変わらないので、ここでは詳細な説明を省略する。
【0084】
〔オンチップメモリの構成〕
第1及び第2のオンチップメモリMEM11、MEM12の、より具体的な構成例を図8に示す。図中、MADCはアドレスデコーダ、M0、M1、M2、M3はそれぞれ1バイト単位のデータを格納するメモリマット、MLT0、MLT1、MLT2、MLT3はそれぞれバイト単位でメモリマットとのデータの入出力を中継するラッチ、MLT4はアドレスバスIABの下位15ビット分の情報を第1のオンチップメモリMEM11に取り込むラッチ、MMX1、MMX3、MMX5、MMX6、MMX7、MMX8は複数の入力から1つを選択して出力するセレクタ、MMX2、MMX4、MMX9、MMX10、MMX11、MMX12は複数の出力先から1つを選択して出力するセレクタ、MCB1はMMX7の出力をラッチMLT2に取り込むクロックドゲート、MCB2はMMX8の出力をラッチMLT3に取り込むクロックドゲート、MDEC1は第1のオンチップメモリMEM11内の制御信号MCT1〜21を生成する制御回路、MCT1〜21は制御回路MDEC1から出力される制御信号、MV[2:0]はメモリ共通の読み出し/書き込み動作を制御する3ビットの制御コード信号、WEはメモリ共通の書き込み動作か、読み出し動作かを指定する制御信号、MSELはオンチップメモリ共通のメモリアクセスイネーブル信号、ASは第1のオンチップメモリがアクセスされた時、アドレスデコーダMADCに入力されるMLT4のアドレス情報の内の[13:0]が有効であることを示す信号、ML[1:0]はアドレスデコーダMADCでどのメモリマットのワード線をイネーブルにすべきかを指定する制御信号である。他の記号はこれまで出てきたもので、定義は同じである。なお、MV[2:0]、WE及びMSELは中央処理回路CPU1が出力している制御信号群CNTに含まれている制御信号である。
【0085】
第1及び第2のオンチップメモリの構造は、制御回路の真理値が異なる他は、同じである。
【0086】
〔オンチップメモリMEM11の動作〕
第1のオンチップメモリMEM11の詳細な動作を説明する。
【0087】
ここで取り上げているメモリは、命令によってデータ長を3タイプ区別して対応する機能のメモリを取り上げている。アドレスと実際のメモリ上の対応関係を図9に示す。メモリマットM0、M1、M2、M3は、1バイト単位のデータを格納しており、それぞれ4n、4n+1、4n+2、4n+3番地(nは0以上の整数)のアドレスが対応している。バイト単位のデータをアクセスする時、中央処理回路CPU1は任意のアドレスを指定できる。ML[1:0]は1バイト分のワード線をイネーブルにするためのコードを示し、アドレスデコーダMADCはMLT4の[13:0]で指定されたアドレスに該当するメモリマットのワード線をイネーブルにする。ワード単位のデータをアクセスする時、中央処理回路CPU1は4n又は4n+2番地のアドレスを指定する。ML[1:0]は連続する2バイト分のワード線をイネーブルにするためのコードを示し、アドレスデコーダMADCはMLT4の[13:0]で指定されたアドレス4nとそれに続く4n+1、又は4n+2とそれに続く4n+3番地の2つのメモリマットのワード線をイネーブルにする。ロングワード単位のデータをアクセスする時、中央処理回路CPU1は4n番地のアドレスを指定する。ML[1:0]は連続する4バイト分のワード線をイネーブルにするためのコードを示し、アドレスデコーダMADCはMLT4の[13:0]で指定されたアドレス4nとそれに続く4n+1、4n+2及び4n+3番地の4つ全てのメモリマットのワード線をイネーブルにする。
【0088】
制御コード信号MV[2:0]は、図10に示すような定義のコード信号である。なおこの実施例では、オンチップメモリと第1及び第2のデータ演算回路以外とのデータ転送動作の場合は、バイト単位、ワード単位、ロングワード単位の3種類のデータ転送動作をサポートしているが、オンチップメモリと第1及び第2のデータ演算回路とのデータ転送動作の場合は、ワード単位とロングワード単位の2種類のデータ転送動作をサポートしている例を示しているが、やはり3種類ともサポートしても良いことは言うまでもない。MSELはオンチップメモリ共通のメモリアクセスイネーブル信号であり、アドレスの上位情報を各オンチップメモリでデコードする手間を省略するために生成される。各オンチップメモリの識別は、各オンチップメモリの容量が16Kバイトであるため、IABの15ビット目(IAB[14])及びモード状態信号MD[1:0]の情報によって各オンチップメモリ内で行うことができる。MSELがイネーブル状態を示している時、制御信号WEは読み出し動作か、書き込み動作かを指定する。lowの時は読み出し、highの時は書き込み動作を意味する。MV[2:0]は命令フェッチ動作、データ演算回路以外とのデータ転送動作及びデータ演算回路とのデータ転送動作のためのメモリアクセス動作を指定し、さらにアクセスされるデータのビット幅によって異なるコードが定義されている。本実施例ではマイクロコンピュータLSIは32ビットの固定長命令フェッチ動作を行うことを仮定する。従って図10に示されているように、命令フェッチ動作ではデータのビット幅のバリエーションはなく、1種類のコードで定義している。
【0089】
図11にはモード1での、図12にはモード2での、図13にはモード3での制御回路MDEC1の定義の真理値の表を示す。なお、ここではモード毎に真理値を示しているが、これは単に1つの表で表わすには図面が大きくなり過ぎるため、分割しているのであって、図6のようにMD[1:0]を入力信号に加えて1つの真理値の表で表わすことが可能な論理回路である。また、図11、図12、図13の真理値表は、図3のメモリマップを想定している。さらに、図11、図12、図13の真理値表では簡素化のため未使用コードもハードウェア量が少なくなると思われる行へ埋め込んでいることがある。
【0090】
図14はロングワード単位のデータの読み出し/書き込み動作を例にした第1のオンチップメモリMEM11のタイミングチャート図である。第2のオンチップメモリMEM12についても、モードによって接続されるデータバスが異なるが、タイミングは同じである。メモリ部では、読み出しと書き込みのメモリマットでのタイミングを合わせるため、先のモード設定レジスタでの読み出し/書き込みタイミングとは異なっているが、タイミング自体はベースとなっているマイクロコンピュータで仕様として決まっているものであり、単なる一例として示している。以下、モード別に各動作の説明をする。
【0091】
(1)モード1での命令フェッチ動作:
MSELがイネーブル状態を示し、IABの15ビット目(IAB[14])がlowでかつMV[2:0]が命令フェッチ動作を示すコードを指定している時、第1のオンチップメモリMEM11はロングワード(32ビット)のデータ読み出し動作を行う。なお、命令フェッチ動作は読み出し動作であるので、制御信号WEは特に必要ないため、図11、図12、図13では無視するようにしているが、他の動作との共通性を保つため、WE=lowとしても構わないことは言うまでもない。この時AS信号はイネーブル状態(high)となり、ML[1:0]は連続する4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは4つのメモリマット全ての所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはラッチMLT0〜3によってラッチされる。MLT0にラッチされたデータは、MCT4がイネーブルとなってセレクタMMX1を通過し、さらにMCT16がイネーブルとなってセレクタMMX9を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。MLT1にラッチされたデータは、MCT10がイネーブルとなってセレクタMMX3を通過し、さらにMCT18がイネーブルとなってセレクタMMX10を通過し、第1のデータバスIDB1の最下位から2番目のバイト([15:8])に出力される。MLT2にラッチされたデータは、MCT20がイネーブルとなってセレクタMMX11を通過し、第1のデータバスIDB1の最下位から3番目のバイト([23:16])に出力される。MLT3にラッチされたデータは、MCT20がイネーブルとなってセレクタMMX12を通過し、第1のデータバスIDB1の最上位バイト([31:24])に出力される。なおここではラッチMLT0〜3、アドレスデコーダMADC及びメモリマットM0〜3の詳細な制御信号や回路構造は、本発明とは直接関係なく、このようなデータ長可変のメモリアクセス可能なメモリ回路は従来から知られているので、ここでは省略する。以下の説明でも同様である。
【0092】
(2)モード1でのバイト単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はバイト単位のデータの読み出し動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は1バイト分のワード線をイネーブルにするためのコード(01)を示し、アドレスデコーダMADCは該当する1つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0、1、2あるいは3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0から読み出されたデータはMLT0にラッチされ、MCT4がイネーブルとなってセレクタMMX1を通過し、さらにMCT16がイネーブルとなってセレクタMMX9を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが01の時、メモリマットM1から読み出されたデータはMLT1にラッチされ、MCT3がイネーブルとなってセレクタMMX1を通過し、さらにMCT16がイネーブルとなってセレクタMMX9を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2から読み出されたデータはMLT2にラッチされ、MCT2がイネーブルとなってセレクタMMX1を通過し、さらにMCT16がイネーブルとなってセレクタMMX9を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが11の時、メモリマットM3から読み出されたデータはMLT3にラッチされ、MCT1がイネーブルとなってセレクタMMX1を通過し、さらにMCT16がイネーブルとなってセレクタMMX9を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。このようにして任意のアドレスのバイトデータが、第1のデータバスIDB1の最下位バイトに出力される。
【0093】
(3)モード1でのバイト単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の最下位バイトから送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がバイト単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリMEM11はバイト単位のデータの書き込み動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は1バイト分のワード線をイネーブルにするためのコード(01)を示し、アドレスデコーダMADCは該当する1つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第1のデータバスIDB1の最下位バイトから送られてきたデータは、MCT15がイネーブルとなってセレクタMMX5を通過し、さらにMCT5がイネーブルとなってセレクタMMX2を通過し、MLT0に入力され、メモリマットM0に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが01の時、第1のデータバスIDB1の最下位バイトから送られてきたデータは、同じくMCT15がイネーブルとなってセレクタMMX5を通過し、さらにMCT6がイネーブルとなってセレクタMMX2を通過し、MLT1に入力され、メモリマットM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第1のデータバスIDB1の最下位バイトから送られてきたデータは、同じくMCT15がイネーブルとなってセレクタMMX5を通過し、さらにMCT7がイネーブルとなってセレクタMMX2を通過し、MLT2に入力され、メモリマットM2に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが11の時、第1のデータバスIDB1の最下位バイトから送られてきたデータは、同じくMCT15がイネーブルとなってセレクタMMX5を通過し、さらにMCT8がイネーブルとなってセレクタMMX2を通過し、MLT3に入力され、メモリマットM3に書き込まれる。
【0094】
(4)モード1でのワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はワード単位のデータの読み出し動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0と1、あるいは2と3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0及びM1から読み出されたデータはMLT0及びMLT1にラッチされ、MCT4及びMCT10がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT16及びMCT18がイネーブルとなってセレクタMMX9及びMMX10を通過し、第1のデータバスIDB1の下位2バイト([15:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2及びM3から読み出されたデータはMLT2及びMLT3にラッチされ、MCT2及びMCT9がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT16及びMCT18がイネーブルとなってセレクタMMX9及びMMX10を通過し、第1のデータバスIDB1の下位2バイト([15:0])に出力される。
【0095】
(5)モード1でのワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の下位2バイトから送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がワード単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリMEM11はワード単位のデータの書き込み動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第1のデータバスIDB1の下位2バイトから送られてきたデータは、MCT15がイネーブルとなってセレクタMMX5及びMMX6を通過し、さらにMCT5及びMCT11がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT0及びMLT1に入力され、メモリマットM0及びM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第1のデータバスIDB1の下位2バイトから送られてきたデータは、同じくMCT15がイネーブルとなってセレクタMMX5及びMMX6を通過し、さらにMCT7及びMCT12がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT2及びMLT3に入力され、メモリマットM2及びM3に書き込まれる。
【0096】
(6)モード1でのロングワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はワード単位のデータの読み出し動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは該当の4つ全てのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。メモリマットM0〜M3から読み出されたデータはMLT0〜3にラッチされ、MCT4及びMCT10がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT16、MCT18及びMCT20がイネーブルとなってセレクタMMX9、MMX10、MMX11及びMMX12を通過し、第1のデータバスIDB1([31:0])に出力される。
【0097】
(7)モード1でのロングワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の全ビットを使用して送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がロングワード単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリMEM11はロングワード単位のデータの書き込み動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは4つ全てのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。第1のデータバスIDB1から送られてきたデータは、MCT15がイネーブルとなってセレクタMMX5、MMX6、MMX7及びMMX8を通過し、さらにMCT5、MCT11及びMCT13がイネーブルとなってMMX2、MMX4、MCB1及びMCB2を通過し、MLT0〜3に入力され、メモリマットM0〜3に書き込まれる。
【0098】
(8)モード2での命令フェッチ動作:
このケースは先の(1)モード1での命令フェッチ動作と同じである。
【0099】
(9)モード2でのバイト単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態でかつMV[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はバイト単位のデータの読み出し動作を行う。MV
[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、、IABの15ビット目(IAB[14])がlowであれば上記(2)のモード1でのバイト単位のデータの読み出し動作と同じであるが、MV[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0100】
(10)モード2でのバイト単位のデータの書き込み動作:
このケースも上記(9)モード2でのバイト単位のデータの読み出し動作と同様、MV[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0101】
(11)モード2でのワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態でかつMV[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はワード単位のデータの読み出し動作を行う。MV
[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がlowであれば上記(4)モード1でのワード単位のデータの読み出し動作と同じであるが、MV[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0102】
(12)モード2でのワード単位のデータの書き込み動作:
このケースも上記(11)モード2でのワード単位のデータの読み出し動作と同様、MV[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0103】
(13)モード2でのロングワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態でかつMV[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はワード単位のデータの読み出し動作を行う。MV[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がlowであれば上記(6)モード1でのロングワード単位のデータの読み出し動作と同じであるが、MV[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0104】
(14)モード2でのロングワード単位のデータの書き込み動作:
このケースも上記(13)モード2でのロングワード単位のデータの読み出し動作と同様、MV[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0105】
(15)モード3での命令フェッチ動作:
MSELがイネーブル状態を示し、IABの15ビット目(IAB[14])がlowでかつMV[2:0]が命令フェッチ動作を示すコードを指定している時、第1のオンチップメモリMEM11はロングワード(32ビット)のデータ読み出し動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は連続する4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは4つのメモリマット全ての所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはラッチMLT0〜3によってラッチされる。MLT0にラッチされたデータは、MCT4がイネーブルとなってセレクタMMX1を通過し、さらにMCT17がイネーブルとなってセレクタMMX9を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。MLT1にラッチされたデータは、MCT10がイネーブルとなってセレクタMMX3を通過し、さらにMCT19がイネーブルとなってセレクタMMX10を通過し、第2のデータバスIDB2の最下位から2番目のバイト([15:8])に出力される。MLT2にラッチされたデータは、MCT21がイネーブルとなってセレクタMMX11を通過し、第2のデータバスIDB2の最下位から3番目のバイト([23:16])に出力される。MLT3にラッチされたデータは、MCT21がイネーブルとなってセレクタMMX12を通過し、第2のデータバスIDB2の最上位バイト([31:24])に出力される。
【0106】
(16)モード3でのバイト単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はバイト単位のデータの読み出し動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は1バイト分のワード線をイネーブルにするためのコード(01)を示し、アドレスデコーダMADCは該当する1つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0、1、2あるいは3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0から読み出されたデータはMLT0にラッチされ、MCT4がイネーブルとなってセレクタMMX1を通過し、さらにMCT17がイネーブルとなってセレクタMMX9を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが01の時、メモリマットM1から読み出されたデータはMLT1にラッチされ、MCT3がイネーブルとなってセレクタMMX1を通過し、さらにMCT17がイネーブルとなってセレクタMMX9を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2から読み出されたデータはMLT2にラッチされ、MCT2がイネーブルとなってセレクタMMX1を通過し、さらにMCT17がイネーブルとなってセレクタMMX9を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが11の時、メモリマットM3から読み出されたデータはMLT3にラッチされ、MCT1がイネーブルとなってセレクタMMX1を通過し、さらにMCT17がイネーブルとなってセレクタMMX9を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。このようにして任意のアドレスのバイトデータが、第2のデータバスIDB2の最下位バイトに出力される。
【0107】
(17)モード3でのバイト単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の最下位バイトから送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がバイト単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリMEM11はバイト単位のデータの書き込み動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は1バイト分のワード線をイネーブルにするためのコード(01)を示し、アドレスデコーダMADCは該当する1つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第2のデータバスIDB2の最下位バイトから送られてきたデータは、MCT14がイネーブルとなってセレクタMMX5を通過し、さらにMCT5がイネーブルとなってセレクタMMX2を通過し、MLT0に入力され、メモリマットM0に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが01の時、第2のデータバスIDB2の最下位バイトから送られてきたデータは、同じくMCT14がイネーブルとなってセレクタMMX5を通過し、さらにMCT6がイネーブルとなってセレクタMMX2を通過し、MLT1に入力され、メモリマットM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第2のデータバスIDB2の最下位バイトから送られてきたデータは、同じくMCT14がイネーブルとなってセレクタMMX5を通過し、さらにMCT7がイネーブルとなってセレクタMMX2を通過し、MLT2に入力され、メモリマットM2に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが11の時、第2のデータバスIDB2の最下位バイトから送られてきたデータは、同じくMCT14がイネーブルとなってセレクタMMX5を通過し、さらにMCT8がイネーブルとなってセレクタMMX2を通過し、MLT3に入力され、メモリマットM3に書き込まれる。
【0108】
(18)モード3でのワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はワード単位のデータの読み出し動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0と1、あるいは2と3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0及びM1から読み出されたデータはMLT0及びMLT1にラッチされ、MCT4及びMCT10がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT17及びMCT19がイネーブルとなってセレクタMMX9及びMMX10を通過し、第2のデータバスIDB2の下位2バイト([15:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2及びM3から読み出されたデータはMLT2及びMLT3にラッチされ、MCT2及びMCT9がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT17及びMCT19がイネーブルとなってセレクタMMX9及びMMX10を通過し、第2のデータバスIDB2の下位2バイト([15:0])に出力される。
【0109】
(19)モード3でのワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の下位2バイトから送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がワード単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリMEM11はワード単位のデータの書き込み動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第2のデータバスIDB2の下位2バイトから送られてきたデータは、MCT14がイネーブルとなってセレクタMMX5及びMMX6を通過し、さらにMCT5及びMCT11がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT0及びMLT1に入力され、メモリマットM0及びM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第2のデータバスIDB2の下位2バイトから送られてきたデータは、同じくMCT14がイネーブルとなってセレクタMMX5及びMMX6を通過し、さらにMCT7及びMCT12がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT2及びMLT3に入力され、メモリマットM2及びM3に書き込まれる。
【0110】
(20)モード3でのロングワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリMEM11はロングワード単位のデータの読み出し動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは該当の4つ全てのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。メモリマットM0〜M3から読み出されたデータはMLT0〜3にラッチされ、MCT4及びMCT10がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT17、MCT19及びMCT21がイネーブルとなってセレクタMMX9、MMX10、MMX11及びMMX12を通過し、第2のデータバスIDB2([31:0])に出力される。
【0111】
(21)モード3でのロングワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の全ビットを使用して送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がlowでかつMV[2:0]がロングワード単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリMEM11はロングワード単位のデータの書き込み動作を行う。この時AS信号はイネーブル状態(high)となり、ML[1:0]は4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは4つ全てのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。第2のデータバスIDB2から送られてきたデータは、MCT14がイネーブルとなってセレクタMMX5、MMX6、MMX7及びMMX8を通過し、さらにMCT5、MCT11及びMCT13がイネーブルとなってMMX2、MMX4、MCB1及びMCB2を通過し、MLT0〜3に入力され、メモリマットM0〜3に書き込まれる。
【0112】
〔オンチップメモリMEM12の動作〕
第2のオンチップメモリMEM12の詳細な動作を説明する。
【0113】
第2のオンチップメモリMEM12もMEM11と同様、命令によってデータ長を3タイプ区別して対応する機能のメモリである。第2のオンチップメモリMEM2でのアドレスと実際のメモリ上の対応関係を図15に示す。図16にはモード1での、図17にはモード2での、図18にはモード3での第2のオンチップメモリMEM12における制御回路MDEC1の定義の真理値の表を示す。なお、図16、図17、図18の真理値表は、図3のメモリマップを想定している。以下、モード別に各動作の説明をする。
【0114】
(1)モード1での命令フェッチ動作:
MSELがイネーブル状態を示し、IABの15ビット目(IAB[14])がhighでかつMV[2:0]が命令フェッチ動作を示すコードを指定している時、第2のオンチップメモリMEM12はロングワード(32ビット)のデータ読み出し動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0115】
(2)モード1でのバイト単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はバイト単位のデータの読み出し動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0116】
(3)モード1でのバイト単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の最下位バイトから送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がバイト単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリMEM12はバイト単位のデータの書き込み動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0117】
(4)モード1でのワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0118】
(5)モード1でのワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の下位2バイトから送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がワード単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリMEM12はワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0119】
(6)モード1でのロングワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0120】
(7)モード1でのロングワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の全ビットを使用して送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がロングワード単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリMEM12はロングワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0121】
(8)モード2での命令フェッチ動作:
このケースは先の(1)モード1での命令フェッチ動作と同じである。
【0122】
(9)モード2でのバイト単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態でかつMV[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はバイト単位のデータの読み出し動作を行う。MV[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がhighであれば上記(2)モード1でのバイト単位のデータの読み出し動作と同じであるが、MV[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリMEM11のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2に出力される。詳細な制御及び動作は、後述の(16)モード3でのバイト単位のデータの読み出し動作と同じである。
【0123】
(10)モード2でのバイト単位のデータの書き込み動作:
このケースも上記(9)モード2でのバイト単位のデータの読み出し動作と同様、MV[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリMEM11のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2から入力される。詳細な制御及び動作は、後述の(17)モード3でのバイト単位のデータの書き込み動作と同じである。
【0124】
(11)モード2でのワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態でかつMV[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はワード単位のデータの読み出し動作を行う。MV[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がhighであれば上記(4)モード1でのワード単位のデータの読み出し動作と同じであるが、MV[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリMEM11のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2に出力される。詳細な制御及び動作は、後述の(18)モード3でのワード単位のデータの読み出し動作と同じである。
【0125】
(12)モード2でのワード単位のデータの書き込み動作:
このケースも上記(11)モード2でのワード単位のデータの読み出し動作と同様、MV[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリMEM11のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。。また、データは第2のデータバスIDB2から入力される。詳細な制御及び動作は、後述の(19)モード3でのワード単位のデータの書き込み動作と同じである。
【0126】
(13)モード2でのロングワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態ででかつMV[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はロングワード単位のデータの読み出し動作を行う。MV[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がhighであれば上記(6)モード1でのロングワード単位のデータの読み出し動作と同じであるが、MV[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリMEM11のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2に出力される。詳細な制御及び動作は、後述の(20)モード3でのロングワード単位のデータの読み出し動作と同じである。
【0127】
(14)モード2でのロングワード単位のデータの書き込み動作:
このケースも(13)モード2でのロングワード単位のデータの読み出し動作と同様、MV[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリMEM11のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2から入力される。詳細な制御及び動作は、後述の(21)モード3でのロングワード単位のデータの書き込み動作と同じである。
【0128】
(15)モード3での命令フェッチ動作:
MSELがイネーブル状態を示し、IABの15ビット目(IAB[14])がhighでかつMV[2:0]が命令フェッチ動作を示すコードを指定している時、第2のオンチップメモリMEM12はロングワード(32ビット)のデータ読み出し動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0129】
(16)モード3でのバイト単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はバイト単位のデータの読み出し動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0130】
(17)モード3でのバイト単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の最下位バイトから送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がバイト単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリMEM12はバイト単位のデータの書き込み動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0131】
(18)モード3でのワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0132】
(19)モード3でのワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の下位2バイトから送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がワード単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリMEM12はワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0133】
(20)モード3でのロングワード単位のデータの読み出し動作:
MSELがイネーブル状態を示し、WE=low状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリMEM12はワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0134】
(21)モード3でのロングワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の全ビットを使用して送られてくる。MSELがイネーブル状態を示し、WE=high状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がロングワード単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリMEM12はロングワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリMEM11の動作と同じである。
【0135】
〔データ演算回路EX11の構成〕
第1のデータ演算回路EX11の、より具体的な構成例を図19に示す。図中、ERGは第1のデータ演算回路EX11内のレジスタファイル、EMPYは乗算器、EALUは算術論理演算器、E1DEC1は第1のデータ演算回路EX11内のデータ転送用制御信号ECT1〜6を生成する制御回路、EDEC2は第1のデータ演算回路EX11内のデータ演算用制御信号群ERGCT、EMTCT、EALCTを生成する制御回路、ECT1〜6は制御回路E1DEC1から出力される制御信号、EMX1は第1のデータバスIDB1の上位ワード(16ビット)もしくは下位ワードを選択して取り込むセレクタ、EMX2は第1のデータバスIDB1の下位ワード(16ビット)もしくはオールゼロデータを選択して取り込むセレクタ、ECB1はセレクタEMX1で選択されたデータを上位ワードレジスタ(R0〜3H)ファイルに入力するクロックドゲート、ECB2はセレクタEMX2で選択されたデータを下位ワードレジスタ(R0〜3L)ファイルに入力するクロックドゲート、ELT1はレジスタファイルERGから選択された上位ワードレジスタ(R0〜3H)の出力信号を第1のデータバスに出力するために一端CK1のタイミングでラッチするためのラッチ回路、ELT2はレジスタファイルERGから選択された下位ワードレジスタ(R0〜3L)の出力信号を第1のデータバスに出力するために一端CK1のタイミングでラッチするためのラッチ回路、EMX3はELT1の出力を第1のデータバスIDB1の上位ワードもしくは下位ワードに出力するためのセレクタ、ECB3はELT2の出力を第1のデータバスIDB1の下位ワードに出力するためのクロックドゲート、ELT3は制御信号ECT3、ECT4を半周期遅延させるための遅延ラッチ回路、ELT4は制御信号ECT5を半周期遅延させるための遅延ラッチ回路、EMVはデータ演算回路EX11、EX12双方にデータ転送動作を指示するための制御信号、EDIOはデータ演算回路EX11、EX12双方にデータ転送動作時の転送方向を指定するための制御信号、EDLはデータ演算回路EX11、EX12双方にデータ転送動作時のデータビット長を指定するための制御信号、EXCNTはデータ演算回路EX11、EX12双方に演算動作を指示するための制御信号群である。なお、EMV、EDIO、EDL及びEXCNTは中央処理回路CPU1が出力している制御信号群CNTに含まれている制御信号である。データ演算用制御信号群ERGCTは、例えば、レジスタファイルERG中の特定のレジスタ、例えばR0H、R1L等、を選択し保持されているデータを乗算器EMPYに供給する信号、レジスタファイルERG中の特定のレジスタ、例えばR1H及びR1Lを選択し保持されているデータを算術論理演算器EALUに供給する信号、乗算器EMPY又は算術論理演算器EALUからの演算結果を選択されたレジスタ、例えばR2H及びR2L等、にストアするための制御信号などの複数種類の信号から成る。データ演算用制御信号群EMTCTは、例えば、乗算器EMPYへ供給される入力データが符号付きか符号無しかを指定する信号、乗算器EMPYの演算結果をシフトするか否かを決定する信号、などの複数種類の信号から成る。データ演算用制御信号群EALCTは、例えば、算術論理演算器EALUにおいて加算、AND、OR、ExclusiveOR等の算術論理演算動作を選択する信号などの複数種類の信号から成る。
【0136】
〔データ演算回路EX12の構成〕
第2のデータ演算回路EX12の、より具体的な構成例を図20に示す。第1及び第2のデータ演算回路EX11、EX12は、接続するデータバスと制御回路E1DEC1とE2DEC1の機能を定義する真理値が異なるだけで、後の構造は同じであるので、図中の記号説明は省略する。
【0137】
〔データ演算回路EX11の動作〕
第1のデータ演算回路EX11の詳細な動作を説明する。
【0138】
図21aは制御回路E1DEC1の機能を表す真理値の表、図22aは第1のデータ演算回路EX11内レジスタファイルの書き込み/読み出し動作時のタイミングチャート図である。本実施例のデータ演算回路は、ディジタル信号処理を効率良く実行可能な演算回路を取り上げている。レジスタファイルERGは32ビット長の複数のレジスタから構成されている。各レジスタは16ビット長の上位ワード及び16ビット長の下位ワードから構成されている。例えば、レジスタR0は上位ワードR0H及び下位ワードR0Lから成っている。演算ユニットとしては、通常の算術論理演算器EALUと、乗算器EMPYが搭載され、並列に演算実行が可能なように、制御信号群EXCNTによって制御される。算術論理演算器EALUは、レジスタのビット長と同じ32ビットの演算を行う。一方乗算器はソースデータは16ビットのデータを入力し、32ビットの結果を出力する。
【0139】
ここで図19を用いて簡単に乗算器EMPYの演算動作を説明する。
【0140】
データ演算制御回路EDEC2がデータ演算用制御信号群ERGCT、EMTCT、EALCTを生成出来る状態にするために、制御回路E1DEC1から動作イネーブル信号ENが入力される。
【0141】
動作イネーブル信号ENが入力されたデータ演算制御回路EDEC2はデータ演算用制御信号群ERGCTのうち、レジスタファイルERG中の特定のレジスタを選択する。本実施例の場合は、乗算器EMPYの一入力のビット長は16ビットであるので、16ビット分のレジスタ、例えばR0Hを乗数、R3Hを被乗数として選択する。上記選択された16ビット分のレジスタに保持されたデータを乗算器EMPYに供給させる信号を上記ERGに与える。上記EDEC2はデータ演算用制御信号群EMTCTのうち、乗算器EMPYに対し、供給された入力データが符号付きか符号無しかを指定する信号、乗算器EMPYの演算結果をシフトするか否かを決定する信号などを与え、上記EMTCTによって指定した演算動作を乗算器EMPYに行わせる。次に上記演算動作の結果を上記レジスタファイルERG中の特定のレジスタを指定する。本実施例の場合は乗算器EMPYの出力のビット長は32ビットであるので、一つのレジスタを選択する、例えばR2H及びR2Lを指定する。上記指定されたレジスタに上記演算動作の結果を書き込ませる制御信号を上記データ演算制御回路EDEC2から上記レジスタファイルERGに与える。上記制御信号により、上記乗算器EMPYにおける上記演算動作の結果は上記レジスタファイルERG中の特定のレジスタに書き込まれる。
【0142】
続いて簡単に算術論理演算器EALUの演算動作を説明する。
【0143】
データ演算制御回路EDEC2がデータ演算用制御信号群ERGCT、EMTCT、EALCTを生成出来る状態にするために、制御回路E2DEC1から動作イネーブル信号ENが入力される点は先に述べた乗算器の演算動作と同じである。
【0144】
動作イネーブル信号ENが入力されたデータ演算制御回路EDEC2はデータ演算用制御信号群ERGCTのうち、レジスタファイルERG中の特定のレジスタを選択する。本実施例の場合は算術論理演算器EALUの一入力のビット長は32ビットであるので、一つのレジスタを選択する、例えばR0H及びR0L、並びに、R1H及びR1Lを選択する。上記選択されたレジスタに保持されたデータを算術論理演算器EALUに供給させる信号を上記ERGに与える。上記EDEC2はデータ演算用制御信号群EALCTのうち、上記算術論理演算器EALUに対し、加算、AND、OR、ExclusiveOR等の算術論理演算動作を選択する信号などを与え、上記EALCTによって指定した演算動作を上記算術論理演算器EALUに行わせる。次に上記演算動作の結果を上記レジスタファイルERG中の特定のレジスタを指定する。本実施例の場合は算術論理演算器EALUの出力のビット長は32ビットであるので、32ビット分のレジスタを指定する、例えばR2H及びR2Lを指定する。上記指定されたレジスタに上記演算動作の結果を書き込ませる制御信号を上記データ演算制御回路EDEC2から上記レジスタファイルERGに与える。上記制御信号により、上記算術論理演算器EALUにおける上記演算動作の結果は上記レジスタファイルERG中の特定のレジスタに書き込まれる。
【0145】
さらに、上述した乗算器における演算と算術論理演算器における演算とを組み合わせることによって、フィルタリング処理などで行われる積和演算動作が実現できる。すなわち、上述した乗算器において演算動作を行った後に、上記演算動作の結果を算術論理演算器EALUの一入力として算術論理演算を行うのである。上記積和演算動作を行う場合、パイプライン処理、すなわち乗算器における演算動作と、乗算器における1サイクル以前の演算動作結果を算術論理演算器の一入力として演算する演算動作とを並行して行ってもよい。既述した乗算器EMPYの演算動作説明及び算術論理演算器EALUの演算動作説明は他の実施例でも同様であり、他の実施例中においても、乗算器における演算と算術論理演算器における演算とを組み合わせることによって、フィルタリング処理などで行われる積和演算動作が実現できることはいうまでもない。
【0146】
尚、本実施例の説明を含む他実施例の説明中、演算回路が「非活性状態」とは、データ演算回路とデータバスとの間のデータのやりとりがない状態のことである。例えば、第1のデータバスに第2の演算回路に供給されるべきデータが存在する場合に、第1の演算回路からのデータが上記第1のデータバスに転送された場合には上記第2の演算回路に供給されるべきデータが破壊されてしまう。したがって、「非活性状態」にあるデータ演算回路は、データバスへのデータ転送をしないことが最低限必要である。具体的にいえば、データ演算回路の制御信号群CNTが入力される制御回路E1DEC1は動作をするが、上記制御回路E1DEC1から出力される信号ECT3乃びECT4をlowで固定、つまりディスエイブル状態で固定することにより、データバスへのデータ出力を司るクロックドゲートECB3及びセレクタEMX3非接続にすることによって、レジスタファイルERGからデータバスへのデータの出力が停止されるのである。本実施例においては上記クロックドゲートECB3及びセレクタEMX3を非接続にするのに、信号ECT3乃びECT4に基づいて、クロックCK1又はCK2とタイミングをとることで行うが、上記ECB3及び上記EMX3へのクロック信号CK1、CK2をlowで固定、つまりディスエイブル状態で固定することによっても上記クロックドゲートECB1乃至ECB3、EMX3を非接続にすることができ、レジスタファイルERGからデータバスへのデータの出力を停止させることができる。
【0147】
データ演算回路とデータバスとの間でデータのやりとりをしないためには、当然レジスタファイルERGへの入力を停止させてもよいので、データバスからのデータ入力を司るセレクタEMX1、EMX2及びクロックドゲートECB1及びECB2を非接続にするために信号ECT1、ECT2、ECT5をディスエイブル状態で固定してもよい。また、その代わりにクロック信号CK1、CK2をディスエイブル状態で固定してデータバスからの入力を停止させてもよいことはいうまでもない。これにより、レジスタファイルERG中のデータが破壊されることを防止できる。
【0148】
上述の通りレジスタファイルERGとデータバスとのデータのやりとりが停止される間、無駄な電力を消費させないため、制御回路E1DEC1から動作イネーブル信号ENをデータ演算制御回路EDEC2に入力し、乗算器EMPY及び算術論理演算器EALUの状態を遷移させないことにより演算動作を停止させてもよい。
【0149】
これらの演算器及びレジスタは、少なくとも固定小数点形式のデータを扱う。整数データと固定小数点形式のデータとの取り扱い方の詳しい説明は既に多くの公知例があるので省略するが、本発明の実施に深く関係するデータ転送時における違いについて説明する。
【0150】
整数データの場合、従来のマイクロコンピュータのCPU等が行っている動作と同じである。すなわち、16ビット長のワードデータを転送する場合、レジスタの下位側の16ビットが転送動作の対象になる。一方、固定小数点データの場合は、小数点位置がビット31とビット30の間にあるため、上位側に比べて下位側は有効数字として重みが非常に小さくなり、場合によっては誤差の範囲になる。従ってレジスタのビット長より幅の短いデータを転送する場合、上位のデータが転送動作の対象となる。本実施例でも、ワード長(16ビット)のデータ転送動作の場合、上位側のレジスタが転送動作の対象になる。
【0151】
(1)モード1及びモード2での動作:
中央処理回路CPU1がワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=lowでかつEDL=lowになり、第1のデータ演算回路EX11は第1のデータバスIDB1の下位16ビットにあるワードデータを取り込む動作を行う。制御信号ECT2がイネーブルとなり、第1のデータバスIDB1の下位16ビットにあるワードデータはセレクタEMX1を通過し、ECT5がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0152】
中央処理回路CPU1がワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=highでかつEDL=lowになり、第1のデータ演算回路EX11は第1のデータバスIDB1の下位16ビットへワードデータを出力する動作を行う。制御信号ECT6がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT1を通過し、ECT4がイネーブルになってセレクタEMX3を経て第1のデータバスIDB1の下位16ビットに出力される。なお、ここでは第1のデータバスIDB1の上位16ビットには何も出力しないが、転送先が32ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【0153】
中央処理回路CPU1がロングワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=lowでかつEDL=highになり、第1のデータ演算回路EX11は第1のデータバスIDB1上にあるロングワードデータを取り込む動作を行う。制御信号ECT1がイネーブルとなり、第1のデータバスIDB1の上位16ビットにあるワードデータはセレクタEMX1を通過し、ECT5がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2では第1のデータバスIDB1の下位16ビットにあるワードデータが入力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0154】
中央処理回路CPU1がロングワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=highでかつEDL=highになり、第1のデータ演算回路EX11は第1のデータバスIDB1へロングワードデータを出力する動作を行う。制御信号ECT6がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT1を通過し、ECT3がイネーブルになってセレクタEMX3を経て第1のデータバスIDB1の上位16ビットに出力される。同時に出力すべきデータがレジスタファイルERG内のソースレジスタの下位ワードからラッチ回路ELT2を通過し、クロックドゲートECB3を経て第1のデータバスIDB1の下位16ビットに出力される。
【0155】
(2)モード3での動作:
モード状態信号MD[1:0]がモード3を示すと、制御回路E1DEC1では動作イネーブル信号ENをディセーブル状態にして、以後モードが変更されるまで第1のデータ演算回路EX11は中央処理回路CPU1がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路CPU1が発行する制御は第2のデータ演算回路EX12で有効となる。
【0156】
〔データ演算回路EX12の動作〕
第2のデータ演算回路EX12の詳細な動作を説明する。
【0157】
図21bは制御回路E2DEC1の機能を表す真理値の表である。動作タイミングは第1のデータ演算回路EX11と同じである。
【0158】
(1)モード1での動作:
モード状態信号MD[1:0]がモード1を示すと、制御回路E2DEC1では動作イネーブル信号ENをディセーブル状態にして、以後モードが変更されるまで第2のデータ演算回路EX12は中央処理回路CPU1がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路CPU1が発行する制御は第1のデータ演算回路EX11で有効となる。
【0159】
(2)モード2及びモード3での動作:
中央処理回路CPU1がワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=lowでかつEDL=lowになり、第2のデータ演算回路EX12は第2のデータバスIDB2の下位16ビットにあるワードデータを取り込む動作を行う。制御信号ECT2がイネーブルとなり、第2のデータバスIDB2の下位16ビットにあるワードデータはセレクタEMX1を通過し、ECT5がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0160】
中央処理回路CPU1がワ−ド単位のデ−タ出力動作を指示する制御信号を発行すると、EMVがイネ−ブル(high)、EDIO=highでかつEDL=lowになり、第2のデ−タ演算回路EX12は第2のデ−タバスIDB2の下位16ビットへワ−ドデ−タを出力する動作を行う。制御信号ECT6がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT1を通過し、ECT4がイネーブルになってセレクタEMX3を経て第2のデータバスIDB2の下位16ビットに出力される。なお、ここでは第2のデータバスIDB2の上位16ビットには何も出力しないが、転送先が32ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【0161】
中央処理回路CPU1がロングワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=lowでかつEDL=highになり、第2のデータ演算回路EX12は第2のデータバスIDB2上にあるロングワードデータを取り込む動作を行う。制御信号ECT1がイネーブルとなり、第2のデータバスIDB2の上位16ビットにあるワードデータはセレクタEMX1を通過し、ECT5がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2では第2のデータバスIDB2の下位16ビットにあるワードデータが入力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0162】
中央処理回路CPU1がロングワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=highでかつEDL=highになり、第2のデータ演算回路EX12は第2のデータバスIDB2へロングワードデータを出力する動作を行う。制御信号ECT6がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT1を通過し、ECT3がイネーブルになってセレクタEMX3を経て第2のデータバスIDB2の上位16ビットに出力される。同時に出力すべきデータがレジスタファイルERG内のソースレジスタの下位ワードからラッチ回路ELT2を通過し、クロックドゲートECB3を経て第2のデータバスIDB2の下位16ビットに出力される。
【0163】
以上のように、本実施例では本発明を適用することにより、演算に必要なソースデータを遅滞なく供給することが出来、データ転送がネックとなることなく単独の命令で2並列実行機能による高性能化の効果を十分発揮させることが可能となる。また、通常の単独演算との整合性についても、問題は生じない。
【0164】
上記実施例では、第1及び第2のデータ演算回路EX11、EX12は制御回路E1DEC1、E2DEC1の真理値が若干異なっていたが、モード設定回路MODE1でのモード表示定義を工夫することにより、同一の真理値にすることもできる。例えば、
モード1:MD[1:0]=01
モード2:MD[1:0]=11
モード3:MD[1:0]=10
というように定義すると、第1のデータ演算回路EX11の制御回路E1DEC1はMD[0]でモード制御可能となり、同様に第2のデータ演算回路EX12の制御回路E2DEC1はMD[1]でモード制御可能となり、この入力信号の名前のみが異なるだけで、内部の論理構造は同じになる。これはモード信号の定義を変えずにそれぞれのデータ演算回路をイネーブルにする信号にデコードしてモード設定回路MODE1から出力しても、同様の効果が得られるし、他にもさまざまな方法が考えられるが、ここでは省略する。
【0165】
〔第2の実施例のマイクロコンピュータの全体構成〕
図23は本発明を適用した1チップマイクロコンピュータの第2の実施例である。図中、LSI2は本発明を適用したマイクロコンピュータ、CPU2は命令をフェッチ、デコードして所要の制御信号を生成する回路を包含した中央処理回路、CFCH2はCPU2内部に含まれている命令フェッチ回路、MODE2はマイコンLSI2を制御信号によって指示されたモードに設定し、その状態を保持するモード設定回路、CADR2はCPU2内部に含まれ、指示されたアドレスを生成するアドレス生成回路、MEM21はチップ上に内蔵された第1のオンチップメモリ、MEM22はチップ上に内蔵された第2のオンチップメモリ、EX21はデータ演算を実行する第1のデータ演算回路、EX22はデータ演算を実行する第2のデータ演算回路、IDB1はMEM21、MEM22、EX21、MODE2及びバスインタフェース回路BIF2に接続され、データ転送に使用される第1のデータバス、IDB2はMEM22、EX21、EX22、MODE2及びバスインタフェース回路BIF2に接続され、データ転送に使用される第2のデータバス、BIF2はIDB1バスと周辺モジュールに接続されている周辺モジュール用データバスPDBとのデータ受渡し及び各周辺モジュールへのデータ転送制御信号を生成するバス・インタフェース回路である。その他の記号は図1の第1の実施例と同じである。
【0166】
本実施例では命令フェッチ回路CFCH2、モード設定回路MODE2、アドレス生成回路CADR2、第1のオンチップメモリMEM21が第1のデータバスIDB1に接続されており、第2のデータバスIDB2には接続されていない。その代わりに第2のデータ演算回路EX22がIDB1、IDB2の両方に接続されている。
【0167】
以下、図23におけるモード別の動作を説明する。
【0168】
第1のデータ演算回路EX21と第2のデータ演算回路EX22はデータバスとの接続部分以外の機能は図1と同様に等価であり、命令コード上では両者の演算機能及びモジュール内にあるレジスタは区別されず、モードによって区別される。モード設定回路MODE2も、MODE1と同様の3つのモードの内の1つのモードを設定して状態を保持する。尚、モード1及び2のみでもよいことは既述の第1の実施例と同じである。
【0169】
モード1:第1のデータ演算回路による単独演算を実行可能。リセット時の初期値。
【0170】
モード2:第1及び第2のデータ演算回路による2並列演算を実行可能。
【0171】
モード3:第2のデータ演算回路による単独演算を実行可能。
【0172】
マイクロコンピュータの命令セットに含まれる命令のフォーマット及び命令コードの一例は第1の実施例の説明において、図56で示したのと同様なので説明は省略する。また、本実施例においては各演算回路は単精度演算を行う場合の構成を示しているが、第1の実施例と同様に、各演算回路が単精度演算及び倍精度演算の両方を行うように構成してもよい。
【0173】
〔モード別の動作〕
モード1及びモード2での動作は図1の実施例と同じなので、説明は省略する。 マイクロプロセッサLSI1がモード3状態の時、MD[1]=high、MD[0]=lowとなる。本実施例では図1の実施例と異なり、モード3においては第2のデータ演算回路EX22を除いてモード1の時と同様の接続状態になる。従って第2のデータ演算回路EX22以外のモジュールの動作はモード1の時と同じである。
【0174】
モード3においては第2のデータ演算回路EX22もIDB1と接続される。デコードされた命令がメモリからのデータの読み出し命令でかつ、命令で指定されたデスティネーションオペランドが第1又は第2のデータ演算回路EX21、EX22の内部にある場合、オペランドコードはEX21、EX22で共通であるが、モード3では第1のデータ演算回路EX21は非活性状態なので、IDB1上のデータがEX12に取り込まれる。デコードされた命令がメモリへのデータの書き込み命令でかつ、命令で指定されたソースオペランドが第1又は第2のデータ演算回路EX11、EX12の内部にある場合、オペランドコードはEX21、EX22で共通であるが、モード3では第1のデータ演算回路EX21は非活性状態なので、EX22内のデータがIDB1上に出力される。モード3では、メモリ以外の各モジュール間のデータ転送も、モード1と同様にIDB1を用いて実行される。
【0175】
〔モード設定回路MODE2の構成〕
モード設定回路MODE2のより具体的な構成例を図24に示す。図中、MDDEC2はモード設定回路内の制御信号DCT11〜13を生成する制御回路、DCT11〜13は制御回路MDDEC2から出力される制御信号、DCB2は第1のデータバスIDB1上のデータを取り込むクロックドゲート、DCB3はクロックドゲートDCB2で取り込まれたデータをモードレジスタMDRに入力するクロックドゲート、DCB4はDLT1の出力を第1のデータバスIDB1に出力するためのクロックドゲート、DLT5は制御信号DCT11を半周期遅延させるための遅延ラッチ回路、DLT6は制御信号DCT13を半周期遅延させるための遅延ラッチ回路である。その他の記号は図6と同じである。
【0176】
図25は制御回路MDDEC2の機能を表す真理値の表である。図25に定義されているように、本実施例ではモード設定回路MODE2は第1のデータバスIDB1と接続できるため、モード3でもモード1及び2と同様の動作を行う他は、第1の実施例と同じである。
【0177】
中央処理回路CPU2内の命令フェッチ回路CFCH2やアドレス生成回路CADR2においても、モード設定回路MDDEC2と同様の構成方法で、第1のデータバスIDB1とのデータを入出力出来ることは明らかであろう。
【0178】
〔オンチップメモリMEM21の構成及び動作〕
第1のオンチップメモリMEM21の、より具体的な構成例を図26に示す。図中、MCB3、4、5及び6は第1のデータバスIDB1からそれぞれバイト単位のデータを取り込むクロックドゲート、MCB7、8、9及び10は第1のデータバスIDB1へバイト単位のデータをそれぞれ出力するクロックドゲート、MDEC2は第1のオンチップメモリMEM21内の制御信号MCT1〜13、31〜34を生成する制御回路、MCT1〜13、31〜34は制御回路MDEC2から出力される制御信号である。その他の記号は図8と同じである。また、制御信号MCT1〜13も図8の信号と同じである。
【0179】
第1のオンチップメモリMEM21の詳細な動作を説明する。
【0180】
図26のメモリも図8と同様、命令によってデータ長を3タイプ区別して対応する機能のメモリを取り上げている。従ってアドレスと実際のメモリ上の対応関係や制御コード信号MV[2:0]のコード定義も図9及び図10と同様であり、メモリマット周りの動作も図8と同じなので、ここでは説明は省略する。
【0181】
図28にはモード1又はモード3での、図29にはモード2での制御回路MDEC2の定義の真理値の表を示す。タイミングも図14と同様である。以下、モード別に各動作の説明をする。
【0182】
(1)モード1での動作:
本実施例では、データを入出力するバスが第1のデータバスIDB1になっているため、図8ではセレクタになっている部分がクロックドゲートになっているだけであり、基本的には動作は図8の時と変わらない。従って第1のオンチップメモリMEM21のモード1での動作は実施例1の図8の動作と同じであるので、各動作別の詳細な説明は省略する。
【0183】
(2)モード2での動作:
このケースも先の(1)モード1での動作と同じである。
【0184】
(3)モード3での動作:
モード3では、先の第1の実施例とは異なり、第2のデータバスIDB2の代わりにモード1と同様に第1のデータバスIDB1とデータの入出力動作を行う。従って動作の詳細はモード1の場合と同じである。
【0185】
〔オンチップメモリMEM22の構成及び動作〕
第2のオンチップメモリMEM22の、より具体的な構成例を図27に示す。図27の回路構造は、真理値の定義が変わったことにより図8の制御信号MCT14〜21がMCT41〜48におき代わっているのみで、同じである。図27中の制御回路MDEC3の真理値の定義を図30及び図31に示す。
【0186】
図30はモード1及びモード3の場合の真理値である。本実施例ではモード1とモード3とで第2のオンチップメモリMEM22のの動作は同じであり、真理値の内容はMCT14〜21がMCT41〜48におき代わっているのみで第1の実施例の図16と同じである。図31はモード2の場合の真理値であるが、これも真理値の内容は第1の実施例の図17と同じである。
【0187】
〔データ演算回路の構成及び動作〕
第1のデータ演算回路EX21は第1の実施例の第1のデータ演算回路EX11と同じ構造なので、ここでは説明を省略する。
【0188】
第2のデータ演算回路EX22の、より具体的な構成例を図32に示す。図中、E3DEC1は第1のデータ演算回路EX21内のデータ転送用制御信号ECT5〜6、11〜18を生成する制御回路、ECT5〜6、11〜18は制御回路E3DEC1から出力される制御信号、EMX4は第1のデータバスIDB1又は第2のデータバスIDB2の上位ワード(16ビット)もしくは下位ワードを選択して取り込むセレクタ、EMX5は第1のデータバスIDB1又は第2のデータバスIDB2の下位ワード(16ビット)もしくはオールゼロデータを選択して取り込むセレクタ、ECB1はセレクタEMX4で選択されたデータをレジスタファイルERGに入力するクロックドゲート、ECB2はセレクタEMX5で選択されたデータをレジスタファイルERGに入力するクロックドゲート、ELT1はレジスタファイルERGから選択された上位ワードレジスタ(R0〜3H)の出力信号を第1のデータバス又は第2のデータバスに出力するために一端CK1のタイミングでラッチするためのラッチ回路、ELT2はレジスタファイルERGから選択された下位ワードレジスタ(R0〜3L)の出力信号を第1のデータバス又は第2のデータバスに出力するために一端CK1のタイミングでラッチするためのラッチ回路、EMX6はELT1の出力を第1のデータバスIDB1又は第2のデータバスIDB2の上位ワードもしくは下位ワードに出力するためのセレクタ、EMX7はELT2の出力を第1のデータバスIDB1又は第2のデータバスIDB2の下位ワードに出力するためのセレクタ、ELT5は制御信号ECT5及びECT15〜18を半周期遅延させるための遅延ラッチ回路である。その他の記号は図19と同じである。
【0189】
第2のデータ演算回路EX22の詳細な動作を説明する。
【0190】
図33は制御回路E3DEC1の機能を表す真理値の表である。なお、データ演算回路内レジスタファイルの書き込み/読み出し動作時のタイミングは、モード2で第2のデータバスIDB2を使用し、モード1とモード3では第1のデータバスIDB1ということが異なる他は、図22bと同じである。本実施例のデータ演算回路も、固定小数点形式のデータを扱うディジタル信号処理を効率良く実行可能な演算回路を取り上げており、演算機能は図20と同じであるので、詳細な説明は省略し、本発明に関係するデータ転送動作のみ説明する。
【0191】
(1)モード1での動作:
モード状態信号MD[1:0]がモード1を示すと、制御回路E3DEC1では動作イネーブル信号ENをディセーブル状態にして、以後モードが変更されるまで第2のデータ演算回路EX22は中央処理回路CPU2がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路CPU2が発行する制御は第1のデータ演算回路EX21で有効となる。(2)モード2での動作:
中央処理回路CPU2がワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=lowでかつEDL=lowになり、第2のデータ演算回路EX22は第2のデータバスIDB2の下位16ビットにあるワードデータを取り込む動作を行う。制御信号ECT12がイネーブルとなり、第2のデータバスIDB2の下位16ビットにあるワードデータはセレクタEMX4を通過し、ECT5がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX5ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0192】
中央処理回路CPU2がワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=highでかつEDL=lowになり、第2のデータ演算回路EX22は第2のデータバスIDB2の下位16ビットへワードデータを出力する動作を行う。制御信号ECT6がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT1を通過し、ECT16がイネーブルになってセレクタEMX6を経て第2のデータバスIDB2の下位16ビットに出力される。なお、ここでは第2のデータバスIDB2の上位16ビットには何も出力しないが、転送先が32ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【0193】
中央処理回路CPU2がロングワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=lowでかつEDL=highになり、第2のデータ演算回路EX22は第2のデータバスIDB2上にあるロングワードデータを取り込む動作を行う。制御信号ECT11がイネーブルとなり、第2のデータバスIDB2の上位16ビットにあるワードデータはセレクタEMX4を通過し、ECT5がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX5では第2のデータバスIDB2の下位16ビットにあるワードデータが入力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0194】
中央処理回路CPU2がロングワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=highでかつEDL=highになり、第2のデータ演算回路EX22は第2のデータバスIDB2へロングワードデータを出力する動作を行う。制御信号ECT6がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT1を通過し、ECT15がイネーブルになってセレクタEMX6を経て第2のデータバスIDB2の上位16ビットに出力される。同時に出力すべきデータがレジスタファイルERG内のソースレジスタの下位ワードからラッチ回路ELT2を通過し、EMX7を経て第2のデータバスIDB2の下位16ビットに出力される。
【0195】
(3)モード3での動作:
中央処理回路CPU2がワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=lowでかつEDL=lowになり、第2のデータ演算回路EX22は第1のデータバスIDB1の下位16ビットにあるワードデータを取り込む動作を行う。制御信号ECT14がイネーブルとなり、第1のデータバスIDB1の下位16ビットにあるワードデータはセレクタEMX4を通過し、ECT5がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX5ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0196】
中央処理回路CPU2がワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=highでかつEDL=lowになり、第2のデータ演算回路EX22は第1のデータバスIDB1の下位16ビットへワードデータを出力する動作を行う。制御信号ECT6がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT1を通過し、ECT18がイネーブルになってEMX6を経て第1のデータバスIDB1の下位16ビットに出力される。なお、ここでは第1のデータバスIDB1の上位16ビットには何も出力しないが、転送先が32ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【0197】
中央処理回路CPU2がロングワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=lowでかつEDL=highになり、第2のデータ演算回路EX22は第1のデータバスIDB1上にあるロングワードデータを取り込む動作を行う。制御信号ECT13がイネーブルとなり、第1のデータバスIDB1の上位16ビットにあるワードデータはセレクタEMX4を通過し、ECT5がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX5では第1のデータバスIDB1の下位16ビットにあるワードデータが入力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0198】
中央処理回路CPU2がロングワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIO=highでかつEDL=highになり、第2のデータ演算回路EX22は第1のデータバスIDB1へロングワードデータを出力する動作を行う。制御信号ECT6がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT1を通過し、ECT17がイネーブルになってEMX6を経て第1のデータバスIDB1の上位16ビットに出力される。同時に出力すべきデータがレジスタファイルERG内のソースレジスタの下位ワードからラッチ回路ELT2を通過し、EMX7を経て第1のデータバスIDB1の下位16ビットに出力される。
【0199】
以上のように、本実施例でも本発明を適用することにより、第1の実施例と同様に演算に必要なソースデータを遅滞なく供給することが出来、データ転送がネックとなることなく単独の命令で2並列実行機能による高性能化の効果を十分発揮させることが可能となる。また、本実施例では第2のデータ演算回路EX22の入出力機能を拡充することにより、逆に中央処理回路CPU2内の命令フェッチ回路CFCH2及びアドレス生成回路CADR2、モード設定回路MODE2、バス・インタフェース回路モジュールでは第2のデータバスIDB2との入出力回路機能を備える必要がなくなるという特徴がある。なお、本実施例では、オンチップメモリやデータ演算回路は第1と第2とで異なる回路構成の例を示したが、回路規模がそれほど問題でなければ、同じ第1のオンチップメモリやデータ演算回路を再2のオンチップメモリやデータ演算回路と同じ構成にして別の回路を構築する手間を省き、不要な機能部分は使用しないように制御しても良い。
【0200】
さらに、上記第2の実施例でも、第1の実施例と同様にモード設定回路MODE1でのモード表示定義を工夫することにより、第1及び第2のデータ演算回路EX21、EX22の制御回路を同一の真理値の定義にすることができることは言うまでもない。
【0201】
〔第3の実施例のマイクロコンピュータの全体構成〕
図34は本発明を適用した1チップマイクロコンピュータの第3の実施例である。本実施例では、図1の第1の実施例にさらにディジタル信号処理をより効率よく実行させるために4つのオンチップメモリと6本のデータバス構成にした1チップマイクロコンピュータシステムに本発明を適用している。図中、LSI3は本発明を適用したマイクロコンピュータ、CPU3は命令をフェッチ、デコードして所要の制御信号を生成する回路を包含した中央処理回路、CADR3はCPU3内部に含まれ、指示されたアドレスを最大2つ同時に生成する機能を有するアドレス生成回路、IABはCADR3で生成されたアドレスが出力される第1のアドレスバス、XABはCADR3で生成されたアドレスが出力される第2のアドレスバス、YABはCADR3で生成されたアドレスが出力される第3のアドレスバス、XMEM1はチップ上に内蔵された第1のオンチップメモリ、XMEM2はチップ上に内蔵された第2のオンチップメモリ、YMEM1はチップ上に内蔵された第3のオンチップメモリ、YMEM2はチップ上に内蔵された第4のオンチップメモリ、EX31はデータ演算を実行する第1のデータ演算回路、EX32はデータ演算を実行する第2のデータ演算回路、IDB1はXMEM1、XMEM2、YMEM1、YMEM2、EX31、MODE1及びバスインタフェース回路BIF1に接続され、データ転送に使用される第1のデータバス、IDB2はXMEM1、XMEM2、YMEM1、YMEM2、EX32、MODE1及びバスインタフェース回路BIF1に接続され、データ転送に使用される第2のデータバス、XDB1はXMEM1、XMEM2及びEX31に接続され、データ転送に使用される第3のデータバス、XDB2はXMEM1、XMEM2及びEX32に接続され、データ転送に使用される第4のデータバス、YDB1はYMEM1、YMEM2及びEX31に接続され、データ転送に使用される第5のデータバス、YDB2はYMEM1、YMEM2及びEX32に接続され、データ転送に使用される第6のデータバスである。その他の記号は図1と同じである。
【0202】
本実施例は、使用するバスによって3つのデータ転送動作に分類される。
【0203】
(1)第1のアドレスバスIAB、第1のデータバスIDB1及び第2のデータバスIDB2を使ったデータ転送動作は、先の第1の実施例と同じ動作を行う。
【0204】
(2)第2のアドレスバスXAB、第3のデータバスXDB1及び第4のデータバスXDB2は、第1のオンチップメモリXMEM1及び第2のオンチップメモリXMEM2と、第1のデータ演算回路EX31及び第2のデータ演算回路EX32との間のデータ転送に使われ、動作はここではワード単位のデータを扱う。
【0205】
(3)第3のアドレスバスYAB、第5のデータバスYDB1及び第6のデータバスYDB2は、第3のオンチップメモリYMEM1及び第4のオンチップメモリYMEM2と、第1のデータ演算回路EX31及び第2のデータ演算回路EX32との間のデータ転送に使われ、動作はここではワード単位のデータを扱う。
【0206】
上記(2)及び(3)のデータ転送動作は、それぞれ単独で実行することも可能であるが、使用するハードウェアリソースが完全に分けられているため、同時並列で実行することも可能になっている。これらの動作は命令によって区別する。 アドレス生成回路CADR3はプログラムアドレスと2つのデータアクセス用アドレスを同時に生成出来る機能を持つ。このアドレスの同時生成機能については、演算器を複数備え、命令コード上で2つのデータ転送命令を並列に指定出来る領域を設ければよい。
【0207】
上記により、本実施例ではモードによって同時に第1のデータ演算回路EX31のために第1のオンチップメモリXMEM1と、第3のオンチップメモリYMEM1から第3及び第5のデータバスXDB1、YDB1を使用して2つのデータを並列に読み出し、第2のデータ演算回路EX32のために第2のオンチップメモリXMEM2と第4のオンチップメモリYMEM2から第4及び第6のデータバスXDB2、YDB2を使用して2つのデータを並列に読み出して来る機能を備えている。このような機能を備えることにより、積和演算処理等のディジタル信号処理には非常に重要なフィルタリング処理を1ステップで1タップの割合で実行することが可能になる。これに本発明を適用すると、モード2では2つのフィルタリング処理を同時に処理できるので、1ステップで2倍の効率で処理を実行することが出来るようになる。
【0208】
〔モード別の動作及び命令〕
以下、図34におけるモード別の動作を説明する。
【0209】
第1のデータ演算回路EX31と第2のデータ演算回路EX32は第1の実施例と同様、機能が等価であり、命令コード上では両者の演算機能及びモジュール内にあるレジスタは区別されず、モードによって区別される。モード設定回路MODE1及びモードの定義は第1の実施例と同じである。
【0210】
マイクロコンピュータの命令セットに含まれる命令のフォーマット及び命令コードの一例は第1の実施例の説明において、図56で示したのと同様なので説明は省略する。また、本実施例においては各演算回路は単精度演算を行う場合の構成を示しているが、第1の実施例と同様に、各演算回路が単精度演算及び倍精度演算の両方を行うように構成してもよい。
【0211】
リセットによる初期状態の時、マイクロプロセッサLSI3はモード1状態となり、MD[1]=MD[0]=lowとなる。アドレス生成回路CADR3、命令フェッチ回路CFCH1、バス・インタフェース回路BIF1、モード設定回路MODE1は第1の実施例と同様に、第1のデータバスIDB1との接続が有効となるように制御される。第1のオンチップメモリXMEM1及び第2のオンチップメモリXMEM2は、第1のデータバスIDB1の他、第3のデータバスXDB1との接続も有効になる。第3のオンチップメモリYMEM1及び第4のオンチップメモリYMEM2は、第1のデータバスIDB1の他、第5のデータバスYDB1との接続も有効になる。
【0212】
第1のデータバスIDB1との接続が有効になる時、アドレスは第1のアドレスバスIABから供給される。第3のデータバスXDB1との接続が有効になる時、アドレスは第2のアドレスバスXABから供給される。第5のデータバスYDB1との接続が有効になる時、アドレスは第3のアドレスバスYABから供給される。図35にモード1の時のXMEM1、XMEM2、YMEM1及びYMEM2のアドレス空間上のマッピング例を示す。なお、図2のメモリマップはモード3の時も同じである。また図2では連続したアドレス空間にXMEM1、XMEM2、YMEM1及びYMEM2をマッピングしているが、第1の実施例と同様特に連続している必要はなく、固有のアドレス空間にマッピングされていれば良いし各メモリの容量も16Kバイトで固定されるものでもないことは言うまでもない。
【0213】
第1のデータ演算回路EX31は中央処理回路CPU3から発行される制御信号の指示で演算動作を行うが、第2のデータ演算回路EX32は制御信号に関係なく非活性状態になる。中央処理回路CPU3はプログラムアドレスをアドレス生成回路で生成し、IABを通して所定のメモリより命令を読み出してIDB1から命令フェッチ回路CFCH1へ命令コードを読み込む。ここで命令を読み出すメモリはしもオンチップメモリである必要はなく、例えば外部とのパラレルインタフェース回路PIOを経て外部にあるメモリから読み込んでも構わない。フェッチした命令コードは命令デコード回路CDECでデコードされ、各モジュールに対して必要な制御信号群CNTを生成する。
【0214】
デコードされた命令が第1のアドレスバスIAB及び第1のデータバスIDB1を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第1のアドレスバスIABに出力する。IABに出力されたアドレスがオンチップメモリXMEM1、XMEM2、YMEM1又はYMEM2がマッピングされたアドレスであった場合、XMEM1、XMEM2、YMEM1又はYMEM2は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第1のデータバスIDB1に出力する。IDB1に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。命令で指定されたデスティネーションオペランドが例えばアドレス生成回路CADR3内部にあるレジスタの場合は、IDB1からデータがCADR3内部に取り込まれ、所定のレジスタに入力される。デスティネーションオペランドが第1又は第2のデータ演算回路EX31、EX32の内部にある場合、オペランドコードはEX31、EX32で共通であるが、モード1では第2のデータ演算回路EX32は非活性状態なので、IDB1上のデータはEX31に取り込まれる。命令で指定されたデスティネーションオペランドがモード設定回路MODE1の内部のレジスタの場合の動作は第1の実施例と同じである。
【0215】
デコードされた命令が第2のアドレスバスXAB及び第3のデータバスXDB1を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第2のアドレスバスXABに出力する。XABに出力されたアドレスは本実施例ではオンチップメモリXMEM1かXMEM2のどちらかがマッピングされたアドレスである。アクセスされたXMEM1又はXMEM2は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第3のデータバスXDB1に出力する。XDB1に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。デスティネーションオペランドは、本実施例では第1又は第2のデータ演算回路EX31、EX32であるが、モード1では第2のデータ演算回路EX32は非活性状態なので、XDB1上のデータはEX31に取り込まれる。
【0216】
デコードされた命令が第3のアドレスバスYAB及び第5のデータバスYDB1を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第3のアドレスバスYABに出力する。YABに出力されたアドレスは本実施例ではオンチップメモリYMEM1かYMEM2のどちらかがマッピングされたアドレスである。アクセスされたYMEM1又はYMEM2は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第5のデータバスYDB1に出力する。YDB1に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。デスティネーションオペランドは、本実施例では第1又は第2のデータ演算回路EX31、EX32であるが、モード1では第2のデータ演算回路EX32は非活性状態なので、YDB1上のデータはEX31に取り込まれる。
【0217】
デコードされた命令が第1のアドレスバスIAB及び第1のデータバスIDB1を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第1のアドレスバスIABに出力する。IABに出力されたアドレスがオンチップメモリXMEM1、XMEM2、YMEM1又はYMEM2がマッピングされたアドレスであった場合、XMEM1、XMEM2、YMEM1又はYMEM2は該当するアドレスのワード線を活性化させる。一方、命令で指定されたソースオペランドが例えばアドレス生成回路CADR3内部にあるレジスタの場合は、CADR3からデータがIDB1に出力され、XMEM1、XMEM2、YMEM1又はYMEM2に入力されて所定のアドレスに書き込まれる。ソースオペランドが第1又は第2のデータ演算回路EX31、EX32の内部にある場合、オペランドコードはEX31、EX32で共通であるが、モード1では第2のデータ演算回路EX32は非活性状態なので、EX31内のデータがIDB1上に出力され、XMEM1、XMEM2、YMEM1又はYMEM2に入力されて所定のアドレスに書き込まれる。命令で指定されたソースオペランドがモード設定回路MODE1の内部のレジスタの場合の動作は第1の実施例と同じである。
【0218】
デコードされた命令が第2のアドレスバスXAB及び第3のデータバスXDB1を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第2のアドレスバスXABに出力する。XABに出力されたアドレスは本実施例ではオンチップメモリXMEM1かXMEM2のどちらかがマッピングされたアドレスである。アクセスされたXMEM1又はXMEM2は該当するアドレスのワード線を活性化させる。一方、命令で指定されるソースオペランドは、本実施例では第1又は第2のデータ演算回路EX31、EX32であるが、モード1では第2のデータ演算回路EX32は非活性状態なので、EX31内のデータがXDB1上に出力され、XMEM1又はXMEM2に入力されて所定のアドレスに書き込まれる。
【0219】
デコードされた命令が第3のアドレスバスYAB及び第5のデータバスYDB1を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第3のアドレスバスYABに出力する。YABに出力されたアドレスは本実施例ではオンチップメモリYMEM1かYMEM2のどちらかがマッピングされたアドレスである。アクセスされたYMEM1又はYMEM2は該当するアドレスのワード線を活性化させる。一方、命令で指定されるソースオペランドは、本実施例では第1又は第2のデータ演算回路EX31、EX32であるが、モード1では第2のデータ演算回路EX32は非活性状態なので、EX31内のデータがYDB1上に出力され、YMEM1又はYMEM2に入力されて所定のアドレスに書き込まれる。
【0220】
上記動作の内、第2のアドレスバスXAB及び第3のデータバスXDB1を使ったデータ転送と、第3のアドレスバスYAB及び第5のデータバスYDB1を使ったデータ転送は、読み出し/書き込みの区別なく並列に実行できるが、動作内容は単独動作と同じである。また、第1のアドレスバスIAB及び第1のデータバスIDB1を使ったメモリ以外のオペランド間のデータ転送の場合は、第1の実施例と同じである。
【0221】
マイクロプロセッサLSI1がモード2状態の時、MD[1]=low、MD[0]=highとなる。アドレス生成回路CADR3、命令フェッチ回路CFCH1、バス・インタフェース回路BIF1、モード設定回路MODE1は、第1のデータバスIDB1との接続が有効となるように制御される。
【0222】
第1のオンチップメモリXMEM1は、第1のデータバスIDB1の他、第3のデータバスXDB1との接続も有効になる。第2のオンチップメモリXMEM2は、第1のデータバスIDB1の他、第2のデータバスIDB2及び第4のデータバスXDB2との接続も有効になる。第3のオンチップメモリYMEM1は、第1のデータバスIDB1の他、第5のデータバスYDB1との接続も有効になる。第4のオンチップメモリYMEM2は、第1のデータバスIDB1の他、第2のデータバスIDB2及び第6のデータバスYDB2との接続も有効になる。第1のデータバスIDB1又は第2のデータバスIDB2との接続が有効になる時、アドレスは第1のアドレスバスIABから供給される。第3のデータバスXDB1又は第4のデータバスXDB2との接続が有効になる時、アドレスは第2のアドレスバスXABから供給される。第5のデータバスYDB1又は第6のデータバスYDB2との接続が有効になる時、アドレスは第3のアドレスバスYABから供給される。
【0223】
図36にモード2の時でかつ、受ける制御がデータ演算回路EX31やEX32との間のデータ転送動作の場合の、オンチップメモリXMEM1、XMEM2、YMEM1及びYMEM2のアドレス空間上のマッピング例を示す。なお、モード2の時でかつ、受ける制御がデータ演算回路EX31やEX32との間のデータ転送動作以外の場合は、図35と同じである。また図36ではXMEM1、XMEM2、YMEM1及びYMEM2の2重マッピング空間がそれぞれ2箇所ずつ存在しているが、図37のように1箇所のみのマッピングでも良いことは言うまでもない。図36あるいは図37に示されているように、オンチップメモリのアドレス空間にアクセスされる時はXMEM1とXMEM2、又はYMEM1とYMEM2の該当するアドレスが同時にアクセスされる。XMEMm(m=1又は2)とYMEMn(n=1又は2)の組み合わせで同時にアクセスされることはない。
【0224】
第1のデータ演算回路EX31及び第2のデータ演算回路EX32は、命令コード上区別されないため、中央処理回路CPU3から発行される共通の制御信号の指示で同じ演算動作を行う。命令フェッチの場合、モード1の時と同様に中央処理回路CPU3はプログラムアドレスをアドレス生成回路で生成し、IABを通して所定のメモリより命令を読み出してIDB1から命令フェッチ回路CFCH3へ命令コードを読み込む。ここで命令を読み出すメモリがオンチップメモリの場合でも、命令フェッチ動作ではメモリマップは図35が適用されるので、指定されたアドレスから命令コードが正しく読み出される。XMEM1、XMEM2、YMEM1又はYMEM2が命令フェッチのためにアクセスされた場合は、読み出された命令コードはどのメモリでもIDB1が選択されて出力される。フェッチした命令コードは命令デコード回路CDECでデコードされ、各モジュールに対して必要な制御信号群CNTを生成する。
【0225】
デコードされた命令がオンチップメモリとデータ演算回路との間のデータ転送動作以外の場合、動作はモード1と同じである。
【0226】
デコードされた命令がオンチップメモリとデータ演算回路との間のデータ転送動作の場合は以下のように動作する。
【0227】
デコードされた命令が第1のアドレスバスIAB、第1のデータバスIDB1及び第2のデータバスIDB2を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第1のアドレスバスIABに出力する。IABに出力されたアドレスは、XMEM1とXMEM2、又はYMEM1とYMEM2の組み合わせで、双方の該当するアドレスのワード線を同時に活性化させ、所要のデータを読み出す。XMEM1又はYMEM1から読み出されたデータは第1のデータバスIDB1に、XMEM2又はYMEM2から読み出されたデータは第2のデータバスIDB2に出力する。IDB1に出力されたデータは、命令で指定された第1のデータ演算回路EX31内のデスティネーションオペランドに転送される。同時にIDB2に出力されたデータは、同じ命令で指定された第2のデータ演算回路EX32内のデスティネーションオペランドに転送される。
【0228】
デコードされた命令が第2のアドレスバスXAB、第3のデータバスXDB1及び第4のデータバスXDB2を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第2のアドレスバスXABに出力する。XABに出力されたアドレスは、XMEM1とXMEM2双方の該当するアドレスのワード線を同時に活性化させ、所要のデータを読み出す。XMEM1から読み出されたデータは第3のデータバスXDB1に、XMEM2から読み出されたデータは第4のデータバスXDB2に出力する。XDB1に出力されたデータは、命令で指定された第1のデータ演算回路EX31内のデスティネーションオペランドに転送される。同時にXDB2に出力されたデータは、同じ命令で指定された第2のデータ演算回路EX32内のデスティネーションオペランドに転送される。
【0229】
デコードされた命令が第3のアドレスバスYAB、第5のデータバスYDB1及び第6のデータバスYDB2を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第3のアドレスバスYABに出力する。YABに出力されたアドレスは、YMEM1とYMEM2双方の該当するアドレスのワード線を同時に活性化させ、所要のデータを読み出す。YMEM1から読み出されたデータは第5のデータバスYDB1に、YMEM2から読み出されたデータは第6のデータバスYDB2に出力する。YDB1に出力されたデータは、命令で指定された第1のデータ演算回路EX31内のデスティネーションオペランドに転送される。同時にYDB2に出力されたデータは、同じ命令で指定された第2のデータ演算回路EX32内のデスティネーションオペランドに転送される。
【0230】
デコードされた命令が第1のアドレスバスIAB、第1のデータバスIDB1及び第2のデータバスIDB2を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第1のアドレスバスIABに出力する。IABに出力されたアドレスは、XMEM1とXMEM2、又はYMEM1とYMEM2の組み合わせで、双方の該当するアドレスのワード線を同時に活性化させる。一方、命令で指定された第1のデータ演算回路EX31内のソースオペランドのデータが第1のデータバスIDB1上に出力される。同時に命令で指定された第2のデータ演算回路EX32内のソースオペランドのデータが第2のデータバスIDB2上に出力される。IDB1及びIDB2上に出力されたデータは、それぞれXMEM1とXMEM2、又はYMEM1とYMEM2に入力されて所定のアドレスに書き込まれる。
【0231】
デコードされた命令が第2のアドレスバスXAB、第3のデータバスXDB1及び第4のデータバスXDB2を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第2のアドレスバスXABに出力する。XABに出力されたアドレスは、XMEM1とXMEM2双方の該当するアドレスのワード線を同時に活性化させる。一方、命令で指定された第1のデータ演算回路EX31内のソースオペランドのデータが第3のデータバスXDB1上に出力される。同時に命令で指定された第2のデータ演算回路EX32内のソースオペランドのデータが第4のデータバスXDB2上に出力される。XDB1及びXDB2上に出力されたデータは、それぞれXMEM1とXMEM2に入力されて所定のアドレスに書き込まれる。
【0232】
デコードされた命令が第3のアドレスバスYAB、第5のデータバスYDB1及び第6のデータバスYDB2を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第3のアドレスバスYABに出力する。YABに出力されたアドレスは、YMEM1とYMEM2双方の該当するアドレスのワード線を同時に活性化させる。一方、命令で指定された第1のデータ演算回路EX31内のソースオペランドのデータが第5のデータバスYDB1上に出力される。同時に命令で指定された第2のデータ演算回路EX32内のソースオペランドのデータが第6のデータバスYDB2上に出力される。YDB1及びYDB2上に出力されたデータは、それぞれYMEM1とYMEM2に入力されて所定のアドレスに書き込まれる。
【0233】
上記動作の内、第2のアドレスバスXAB、第3のデータバスXDB1及び第4のデータバスXDB2を使ったデータ転送と、第3のアドレスバスYAB、第5のデータバスYDB1及び第6のデータバスYDB2を使ったデータ転送は、読み出し/書き込みの区別なく並列に実行できるが、動作内容は単独動作と同じである。また、第1のアドレスバスIAB、第1のデータバスIDB1及び第2のデータバスIDB2を使ったメモリ以外のオペランド間のデータ転送の場合は、第1の実施例と同じである。
【0234】
マイクロプロセッサLSI1がモード3状態の時、MD[1]=high、MD[0]=lowとなる。アドレス生成回路CADR3、命令フェッチ回路CFCH1、バス・インタフェース回路BIF1、モード設定回路MODE1は第1の実施例と同様に、第2のデータバスIDB2との接続が有効となるように制御される。第1のオンチップメモリXMEM1及び第2のオンチップメモリXMEM2は、第2のデータバスIDB2の他、第4のデータバスXDB2との接続も有効になる。第3のオンチップメモリYMEM1及び第4のオンチップメモリYMEM2は、第2のデータバスIDB2の他、第6のデータバスYDB2との接続も有効になる。
【0235】
第2のデータバスIDB2との接続が有効になる時、アドレスは第1のアドレスバスIABから供給される。第4のデータバスXDB2との接続が有効になる時、アドレスは第2のアドレスバスXABから供給される。第6のデータバスYDB2との接続が有効になる時、アドレスは第3のアドレスバスYABから供給される。モード3の時のXMEM1、XMEM2、YMEM1及びYMEM2のアドレス空間上のマッピング例は、モード1の時と同じであり、図35に示されている。
【0236】
第2のデータ演算回路EX32は中央処理回路CPU3から発行される制御信号の指示で演算動作を行うが、第1のデータ演算回路EX31は制御信号に関係なく非活性状態になる。中央処理回路CPU3はプログラムアドレスをアドレス生成回路で生成し、IABを通して所定のメモリより命令を読み出してIDB2から命令フェッチ回路CFCH1へ命令コードを読み込む。ここで命令を読み出すメモリはしもオンチップメモリである必要はなく、例えば外部とのパラレルインタフェース回路PIOを経て外部にあるメモリから読み込んでも構わない。フェッチした命令コードは命令デコード回路CDECでデコードされ、各モジュールに対して必要な制御信号群CNTを生成する。ここでのモード1との動作の違いは、命令コードが第2のデータバスIDB2から読み込まれることだけである。
【0237】
デコードされた命令が第1のアドレスバスIAB及び第2のデータバスIDB2を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第1のアドレスバスIABに出力する。IABに出力されたアドレスがオンチップメモリXMEM1、XMEM2、YMEM1又はYMEM2がマッピングされたアドレスであった場合、XMEM1、XMEM2、YMEM1又はYMEM2は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第2のデータバスIDB2に出力する。IDB2に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。命令で指定されたデスティネーションオペランドが例えばアドレス生成回路CADR3内部にあるレジスタの場合は、IDB2からデータがCADR3内部に取り込まれ、所定のレジスタに入力される。デスティネーションオペランドが第1又は第2のデータ演算回路EX31、EX32の内部にある場合、オペランドコードはEX31、EX32で共通であるが、モード3では第1のデータ演算回路EX31は非活性状態なので、IDB2上のデータはEX32に取り込まれる。命令で指定されたデスティネーションオペランドがモード設定回路MODE1の内部のレジスタの場合の動作は第1の実施例と同じである。
【0238】
デコードされた命令が第2のアドレスバスXAB及び第4のデータバスXDB2を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第2のアドレスバスXABに出力する。XABに出力されたアドレスは本実施例ではオンチップメモリXMEM1かXMEM2のどちらかがマッピングされたアドレスである。アクセスされたXMEM1又はXMEM2は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第4のデータバスXDB2に出力する。XDB2に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。デスティネーションオペランドは、本実施例では第1又は第2のデータ演算回路EX31、EX32であるが、モード3では第1のデータ演算回路EX31は非活性状態なので、XDB2上のデータはEX32に取り込まれる。
【0239】
デコードされた命令が第3のアドレスバスYAB及び第6のデータバスYDB2を使ったメモリからのデータ読み出し命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第3のアドレスバスYABに出力する。YABに出力されたアドレスは本実施例ではオンチップメモリYMEM1かYMEM2のどちらかがマッピングされたアドレスである。アクセスされたYMEM1又はYMEM2は該当するアドレスのワード線を活性化させ、所要のデータを読み出し、第6のデータバスYDB2に出力する。YDB2に出力されたデータは、命令で指定されたデスティネーションオペランドに転送される。デスティネーションオペランドは、本実施例では第1又は第2のデータ演算回路EX31、EX32であるが、モード3では第1のデータ演算回路EX31は非活性状態なので、YDB2上のデータはEX32に取り込まれる。
【0240】
デコードされた命令が第1のアドレスバスIAB及び第2のデータバスIDB2を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第1のアドレスバスIABに出力する。IABに出力されたアドレスがオンチップメモリXMEM1、XMEM2、YMEM1又はYMEM2がマッピングされたアドレスであった場合、XMEM1、XMEM2、YMEM1又はYMEM2は該当するアドレスのワード線を活性化させる。一方、命令で指定されたソースオペランドが例えばアドレス生成回路CADR3内部にあるレジスタの場合は、CADR3からデータがIDB2に出力され、XMEM1、XMEM2、YMEM1又はYMEM2に入力されて所定のアドレスに書き込まれる。ソースオペランドが第1又は第2のデータ演算回路EX31、EX32の内部にある場合、オペランドコードはEX31、EX32で共通であるが、モード3では第1のデータ演算回路EX31は非活性状態なので、EX32内のデータがIDB2上に出力され、XMEM1、XMEM2、YMEM1又はYMEM2に入力されて所定のアドレスに書き込まれる。命令で指定されたソースオペランドがモード設定回路MODE1の内部のレジスタの場合の動作は第1の実施例と同じである。
【0241】
デコードされた命令が第2のアドレスバスXAB及び第4のデータバスXDB2を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第2のアドレスバスXABに出力する。XABに出力されたアドレスは本実施例ではオンチップメモリXMEM1かXMEM2のどちらかがマッピングされたアドレスである。アクセスされたXMEM1又はXMEM2は該当するアドレスのワード線を活性化させる。一方、命令で指定されるソースオペランドは、本実施例では第1又は第2のデータ演算回路EX31、EX32であるが、モード3では第1のデータ演算回路EX31は非活性状態なので、EX32内のデータがXDB2上に出力され、XMEM1又はXMEM2に入力されて所定のアドレスに書き込まれる。
【0242】
デコードされた命令が第3のアドレスバスYAB及び第6のデータバスYDB2を使ったメモリへのデータの書き込み命令の時、アドレス生成回路CADR3はアクセスすべきアドレスを生成して、第3のアドレスバスYABに出力する。YABに出力されたアドレスは本実施例ではオンチップメモリYMEM1かYMEM2のどちらかがマッピングされたアドレスである。アクセスされたYMEM1又はYMEM2は該当するアドレスのワード線を活性化させる。一方、命令で指定されるソースオペランドは、本実施例では第1又は第2のデータ演算回路EX31、EX32であるが、モード3では第1のデータ演算回路EX31は非活性状態なので、EX32内のデータがYDB2上に出力され、YMEM1又はYMEM2に入力されて所定のアドレスに書き込まれる。
【0243】
上記動作の内、第2のアドレスバスXAB及び第4のデータバスXDB2を使ったデータ転送と、第3のアドレスバスYAB及び第6のデータバスYDB2を使ったデータ転送は、読み出し/書き込みの区別なく並列に実行できるが、動作内容は単独動作と同じである。また、第1のアドレスバスIAB及び第2のデータバスIDB2を使ったメモリ以外のオペランド間のデータ転送の場合は、第1の実施例と同じである。
【0244】
本実施例では、モード設定回路MODE1は実施例1と同じであるので、説明は省略する。
【0245】
〔オンチップメモリの構成〕
第1及び第2のオンチップメモリXMEM1、XMEM2の、より具体的な構成例を図38に示す。図中、MADCはアドレスデコーダ、MLT5は第1のアドレスバスIAB及び第2のアドレスバスXABの、それぞれ下位15ビット分の情報を第1又は第2のオンチップメモリXMEM1、XMEM2に取り込むラッチ、MMX1、MMX3、MMX13、MMX14、MMX7、MMX8は複数の入力から1つを選択して出力するセレクタ、MMX2、MMX4、MMX15、MMX16、MMX11、MMX12は複数の出力先から1つを選択して出力するセレクタ、MDEC4は第1又は第2のオンチップメモリXMEM1、XMEM2内の制御信号MCT51〜75を生成する制御回路、MCT51〜75は制御回路MDEC4から出力される制御信号、MVI[2:0]は第1のアドレスバスIAB、第1のデータバスIDB1及び第2のデータバスIDB2を使ったメモリ共通の読み出し/書き込み動作を制御する3ビットの制御コード信号、MVXは第2のアドレスバスXAB、第3のデータバスXDB1及び第4のデータバスXDB2を使った第1及び第2のオンチップメモリ共通の読み出し/書き込み動作を制御する1ビットの制御信号、WEXは第1及び第2のオンチップメモリ共通の書き込み動作か、読み出し動作かを指定する制御信号、MSELXは第1及び第2のオンチップメモリ共通のメモリアクセスイネーブル信号、ASXは第1又は第2のオンチップメモリXMEM1、XMEM2がアクセスされた時、アドレスデコーダMADCに入力されるアドレス情報ADX[13:0]が有効であることを示す信号、MLX[1:0]はアドレスデコーダMADCでどのメモリマットのワード線をイネーブルにすべきかを指定する制御信号である。他の記号は図8と同じである。
【0246】
第1及び第2のオンチップメモリの構造は、制御回路の真理値が異なる他は、同じである。
【0247】
〔オンチップメモリXMEM1の動作〕
第1のオンチップメモリXMEM1の詳細な動作を説明する。
【0248】
ここで取り上げているメモリは図8の実施例と同様の機能のメモリを取り上げているので、同じ部分については説明を省略する。アドレスと実際のメモリ上の対応関係は第1の実施例と同様、図9に示されている通りである。図8のオンチップメモリと異なる点は、外部から2つのアドレスバス上の情報を取り込んでいるため、どちらのアドレス情報を使用するかを選択する必要があることである。そのため一端2つのアドレス情報を制御回路MDEC4に入力し、どちらの情報を使用するかを判定してから改めてADX[13:0]信号としてアドレスデコーダMADCに供給している。どちらのアドレス情報を使用するかの判定は、第1のアドレスバスIAB、第1のデータバスIDB1及び第2のデータバスIDB2を使ったデータ転送か、第2のアドレスバスXAB、第3のデータバスXDB1及び第4のデータバスXDB2を使ったデータ転送かをチェックすることで実現することが出来、それはMVI[2:0]及びMVX信号によって行うことが出来る。図40に制御回路MDEC4で生成され、アドレスデコーダMADCに供給される制御信号及びアドレス情報信号の真理値の例を示す。ここで信号ASXは図8でのASと、MLX[1:0]はML[1:0]と信号の機能は同じである。
【0249】
第1のアドレスバスIAB、第1のデータバスIDB1及び第2のデータバスIDB2を使ったデータ転送動作は、第1の実施例の動作と同じであり、MVI[2:0]のコード定義は図10に示されているMV[2:0]と同じである。第2のアドレスバスXAB、第3のデータバスXDB1及び第4のデータバスXDB2を使ったデータ転送動作は、ワード単位(16ビット)のデータ転送をサポートする。MVX=highの時、中央処理回路CPU3が第3のデータバスXDB1及び第4のデータバスXDB2を使ったワード単位(16ビット)のデータをアクセスする命令を発行したことを表す。
【0250】
各オンチップメモリの識別は、各オンチップメモリの容量が16Kバイトであるため、IABの15ビット目(IAB[14])及びモード状態信号MD[1:0]の情報によって各オンチップメモリ内で行うことができる。MSELXがイネーブル状態を示している時、制御信号WEXは読み出し動作か、書き込み動作かを指定する。lowの時は読み出し、highの時は書き込み動作を意味する

【0251】
なお、本実施例では第3のデータバスXDB1及び第4のデータバスXDB2を使ったデータ転送動作は、ワード単位(16ビット)のデータ転送をサポートすることを想定しているが、他の長さのデータ転送機能をサポートしても良いことは言うまでもなく、またその時の実現方法は、本明細書で説明してきた内容を組み合わせて容易に実現できることは明らかであろう。
【0252】
本実施例では、MVI[2:0]とMVX又は後で述べるMVYによるメモリアクセス動作が同時に同じメモリに発生しないことを想定しているが、MVXとMVYは同時に発行可能である。そのため第1の実施例と異なり、第1及び第2のオンチップメモリと、第3及び第4のオンチップメッモリには、それぞれ独立の書き込み/読み出し動作を指定する制御信号(第1及び第2のオンチップメモリではWEX)と、メモリアクセスイネーブル信号(第1及び第2のオンチップメモリではMSELX)を供給している。この結果、同じサイクルで2つのデータ転送動作が同時に実行可能となる。
【0253】
図41にはモード1での、図42にはモード2での、図43にはモード3での制御回路MDEC4の定義の真理値の表を示す。なお、ここでは第1の実施例の時と同様、モード毎に真理値を示しているが、これは単に1つの表で表わすには図面が大きくなり過ぎるため、分割している。また、図41、図42、図43の真理値表は、図36のメモリマップを想定している。さらに、これらの真理値表では簡素化のため未使用コードもハードウェア量が少なくなると思われる行へ埋め込んでいることがある。
【0254】
タイミングについては、やはり基本的には第1の実施例と同じであるので、ここでは省略する。第2のオンチップメモリXMEM2についても、モードによってどちらのデータバスと接続するかが異なるだけで、タイミングは同じである。以下、モード別に各動作の説明をする。
【0255】
(1)モード1での命令フェッチ動作:
MSELXがイネーブル状態を示し、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]が命令フェッチ動作を示すコードを指定している時、第1のオンチップメモリXMEM1はロングワード(32ビット)のデータ読み出し動作を行う。MVX信号はディセーブル状態である。なお、命令フェッチ動作はIAB、IDB1及びIDB2を使用し、XAB、XDB1及びXDBでは実行しない。また、命令フェッチ動作は読み出し動作であるので、制御信号WEXは特に必要ないため、図41、図42、図43では無視するようにしているが、他の動作との共通性を保つため、WEX=lowとしても構わないことは言うまでもない。図40に示すように、この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は連続する4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは4つのメモリマット全ての所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはラッチMLT0〜3によってラッチされる。MLT0にラッチされたデータは、MCT54がイネーブルとなってセレクタMMX1を通過し、さらにMCT68がイネーブルとなってセレクタMMX15を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。MLT1にラッチされたデータは、MCT60がイネーブルとなってセレクタMMX3を通過し、さらにMCT70がイネーブルとなってセレクタMMX16を通過し、第1のデータバスIDB1の最下位から2番目のバイト([15:8])に出力される。MLT2にラッチされたデータは、MCT74がイネーブルとなってセレクタMMX11を通過し、第1のデータバスIDB1の最下位から3番目のバイト([23:16])に出力される。MLT3にラッチされたデータは、MCT74がイネーブルとなってセレクタMMX12を通過し、第1のデータバスIDB1の最上位バイト([31:24])に出力される。
【0256】
(2)モード1でのIAB、IDB1を使用したバイト単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はバイト単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は1バイト分のワード線をイネーブルにするためのコード(01)を示し、アドレスデコーダMADCは該当する1つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0、1、2あるいは3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0から読み出されたデータはMLT0にラッチされ、MCT54がイネーブルとなってセレクタMMX1を通過し、さらにMCT68がイネーブルとなってセレクタMMX15を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが01の時、メモリマットM1から読み出されたデータはMLT1にラッチされ、MCT53がイネーブルとなってセレクタMMX1を通過し、さらにMCT68がイネーブルとなってセレクタMMX15を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2から読み出されたデータはMLT2にラッチされ、MCT52がイネーブルとなってセレクタMMX1を通過し、さらにMCT68がイネーブルとなってセレクタMMX15を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが11の時、メモリマットM3から読み出されたデータはMLT3にラッチされ、MCT51がイネーブルとなってセレクタMMX1を通過し、さらにMCT68がイネーブルとなってセレクタMMX15を通過し、第1のデータバスIDB1の最下位バイト([7:0])に出力される。このようにして任意のアドレスのバイトデータが、第1のデータバスIDB1の最下位バイトに出力される。
【0257】
(3)モード1でのIAB、IDB1を使用したバイト単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の最下位バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がバイト単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリXMEM1はバイト単位のデータの書き込み動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は1バイト分のワード線をイネーブルにするためのコード(01)を示し、アドレスデコーダMADCは該当する1つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第1のデータバスIDB1の最下位バイトから送られてきたデータは、MCT67がイネーブルとなってセレクタMMX13を通過し、さらにMCT55がイネーブルとなってセレクタMMX2を通過し、MLT0に入力され、メモリマットM0に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが01の時、第1のデータバスIDB1の最下位バイトから送られてきたデータは、同じくMCT67がイネーブルとなってセレクタMMX13を通過し、さらにMCT56がイネーブルとなってセレクタMMX2を通過し、MLT1に入力され、メモリマットM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第1のデータバスIDB1の最下位バイトから送られてきたデータは、同じくMCT67がイネーブルとなってセレクタMMX13を通過し、さらにMCT57がイネーブルとなってセレクタMMX2を通過し、MLT2に入力され、メモリマットM2に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが11の時、第1のデータバスIDB1の最下位バイトから送られてきたデータは、同じくMCT67がイネーブルとなってセレクタMMX13を通過し、さらにMCT58がイネーブルとなってセレクタMMX2を通過し、MLT3に入力され、メモリマットM3に書き込まれる。
【0258】
(4)モード1でのIAB、IDB1を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はワード単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0と1、あるいは2と3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0及びM1から読み出されたデータはMLT0及びMLT1にラッチされ、MCT54及びMCT60がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT68及びMCT70がイネーブルとなってセレクタMMX15及びMMX16を通過し、第1のデータバスIDB1の下位2バイト([15:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2及びM3から読み出されたデータはMLT2及びMLT3にラッチされ、MCT52及びMCT59がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT68及びMCT70がイネーブルとなってセレクタMMX15及びMMX16を通過し、第1のデータバスIDB1の下位2バイト([15:0])に出力される。
【0259】
(5)モード1でのIAB、IDB1を使用したワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の下位2バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がワード単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリXMEM1はワード単位のデータの書き込み動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第1のデータバスIDB1の下位2バイトから送られてきたデータは、MCT67がイネーブルとなってセレクタMMX13及びMMX14を通過し、さらにMCT55及びMCT61がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT0及びMLT1に入力され、メモリマットM0及びM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第1のデータバスIDB1の下位2バイトから送られてきたデータは、同じくMCT67がイネーブルとなってセレクタMMX13及びMMX14を通過し、さらにMCT57及びMCT62がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT2及びMLT3に入力され、メモリマットM2及びM3に書き込まれる。
【0260】
(6)モード1でのIAB、IDB1を使用したロングワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はロングワード単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは該当の4つ全てのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。メモリマットM0〜M3から読み出されたデータはMLT0〜3にラッチされ、MCT54及びMCT60がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT68、MCT70及びMCT74がイネーブルとなってセレクタMMX15、MMX16、MMX11及びMMX12を通過し、第1のデータバスIDB1([31:0])に出力される。
【0261】
(7)モード1でのIAB、IDB1を使用したロングワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の全ビットを使用して送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がロングワード単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリXMEM1はロングワード単位のデータの書き込み動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは4つ全てのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。第1のデータバスIDB1から送られてきたデータは、MCT67がイネーブルとなってセレクタMMX13、MMX14、MMX7及びMMX8を通過し、さらにMCT55、MCT61及びMCT63がイネーブルとなってMMX2、MMX4、MCB1及びMCB2を通過し、MLT0〜3に入力され、メモリマットM0〜3に書き込まれる。
【0262】
(8)モード1でのXAB、XDB1を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、XABの15ビット目(XAB[14])がlowでかつMVXがイネーブル状態の時、第1のオンチップメモリXMEM1はXDB1を使用したワード単位のデータの読み出し動作を行う。MVI[2:0]信号は無視される。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0と1、あるいは2と3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0及びM1から読み出されたデータはMLT0及びMLT1にラッチされ、MCT54及びMCT60がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT72がイネーブルとなってセレクタMMX15及びMMX16を通過し、第3のデータバスXDB1に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2及びM3から読み出されたデータはMLT2及びMLT3にラッチされ、MCT52及びMCT59がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT72がイネーブルとなってセレクタMMX15及びMMX16を通過し、第3のデータバスXDB1に出力される。
【0263】
(9)モード1でのXAB、XDB1を使用したワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスXDB1の下位2バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がlowでかつMVXがイネーブル状態の時、第1のオンチップメモリXMEM1はワード単位のデータの書き込み動作を行う。MVI[2:0]信号は無視される。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第3のデータバスXDB1から送られてきたデータは、MCT65がイネーブルとなってセレクタMMX13及びMMX14を通過し、さらにMCT55及びMCT61がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT0及びMLT1に入力され、メモリマットM0及びM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第3のデータバスXDB1から送られてきたデータは、同じくMCT65がイネーブルとなってセレクタMMX13及びMMX14を通過し、さらにMCT57及びMCT62がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT2及びMLT3に入力され、メモリマットM2及びM3に書き込まれる。
【0264】
(10)モード2での命令フェッチ動作:
このケースは先の(1)モード1での命令フェッチ動作と同じである。
【0265】
(11)モード2でのIAB、IDB1を使用したバイト単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態でかつMVI[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はバイト単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。MVI[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がlowであれば上記(2)のモード1でのバイト単位のデータの読み出し動作と同じであるが、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0266】
(12)モード2でのIAB、IDB1を使用したバイト単位のデータの書き込み動作:
このケースも上記(11)モード2でのIAB、IDB1を使用したバイト単位のデータの読み出し動作と同様、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0267】
(13)モード2でのIAB、IDB1を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態でかつMVI[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はワード単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。MVI[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がlowであれば上記(4)モード1でのIAB、IDB1を使用したワード単位のデータの読み出し動作と同じであるが、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0268】
(14)モード2でのIAB、IDB1を使用したワード単位のデータの書き込み動作:
このケースも上記(13)モード2でのIAB、IDB1を使用したワード単位のデータの読み出し動作と同様、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0269】
(15)モード2でのIAB、IDB1を使用したロングワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態でかつMVI[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はロングワード単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。MVI[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がlowであれば上記(6)モード1でのロングワード単位のデータの読み出し動作と同じであるが、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0270】
(16)モード2でのIAB、IDB1を使用したロングワード単位のデータの書き込み動作:
このケースも上記(15)モード2でのIAB、IDB1を使用したロングワード単位のデータの読み出し動作と同様、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。(17)モード2でのXAB、XDB1を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態でかつMVXがイネーブル状態の時、第1のオンチップメモリXMEM1はXDB1を使用したワード単位のデータの読み出し動作を行う。MVI[2:0]信号は無視される。この動作はデータ演算回路とのデータ転送のためのデータの読み出し動作であり、XABの15ビット目(XAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0271】
(18)モード2でのXAB、XDB1を使用したワード単位のデータの書き込み動作:
このケースも上記(17)モード2でのXAB、XDB1を使用したワード単位のデータの読み出し動作と同様、XABの15ビット目(XAB[14])の状態に関わらず、すなわち第2のオンチップメモリのアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。それ以外はやはりモード1のケースと同じように動作する。
【0272】
(19)モード3での命令フェッチ動作:
MSELXがイネーブル状態を示し、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]が命令フェッチ動作を示すコードを指定している時、第1のオンチップメモリXMEM1はロングワード(32ビット)のデータ読み出し動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は連続する4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは4つのメモリマット全ての所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはラッチMLT0〜3によってラッチされる。MLT0にラッチされたデータは、MCT54がイネーブルとなってセレクタMMX1を通過し、さらにMCT69がイネーブルとなってセレクタMMX15を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。MLT1にラッチされたデータは、MCT60がイネーブルとなってセレクタMMX3を通過し、さらにMCT71がイネーブルとなってセレクタMMX16を通過し、第2のデータバスIDB2の最下位から2番目のバイト([15:8])に出力される。MLT2にラッチされたデータは、MCT75がイネーブルとなってセレクタMMX11を通過し、第2のデータバスIDB2の最下位から3番目のバイト([23:16])に出力される。MLT3にラッチされたデータは、MCT75がイネーブルとなってセレクタMMX12を通過し、第2のデータバスIDB2の最上位バイト([31:24])に出力される。
【0273】
(20)モード3でのIAB、IDB2を使用したバイト単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はバイト単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は1バイト分のワード線をイネーブルにするためのコード(01)を示し、アドレスデコーダMADCは該当する1つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0、1、2あるいは3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0から読み出されたデータはMLT0にラッチされ、MCT54がイネーブルとなってセレクタMMX1を通過し、さらにMCT69がイネーブルとなってセレクタMMX15を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが01の時、メモリマットM1から読み出されたデータはMLT1にラッチされ、MCT53がイネーブルとなってセレクタMMX1を通過し、さらにMCT69がイネーブルとなってセレクタMMX15を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2から読み出されたデータはMLT2にラッチされ、MCT52がイネーブルとなってセレクタMMX1を通過し、さらにMCT69がイネーブルとなってセレクタMMX15を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが11の時、メモリマットM3から読み出されたデータはMLT3にラッチされ、MCT51がイネーブルとなってセレクタMMX1を通過し、さらにMCT69がイネーブルとなってセレクタMMX15を通過し、第2のデータバスIDB2の最下位バイト([7:0])に出力される。このようにして任意のアドレスのバイトデータが、第2のデータバスIDB2の最下位バイトに出力される。
【0274】
(21)モード3でのIAB、IDB2を使用したバイト単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の最下位バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がバイト単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリXMEM1はバイト単位のデータの書き込み動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は1バイト分のワード線をイネーブルにするためのコード(01)を示し、アドレスデコーダMADCは該当する1つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第2のデータバスIDB2の最下位バイトから送られてきたデータは、MCT66がイネーブルとなってセレクタMMX13を通過し、さらにMCT55がイネーブルとなってセレクタMMX2を通過し、MLT0に入力され、メモリマットM0に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが01の時、第2のデータバスIDB2の最下位バイトから送られてきたデータは、同じくMCT66がイネーブルとなってセレクタMMX13を通過し、さらにMCT56がイネーブルとなってセレクタMMX2を通過し、MLT1に入力され、メモリマットM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第2のデータバスIDB2の最下位バイトから送られてきたデータは、同じくMCT66がイネーブルとなってセレクタMMX13を通過し、さらにMCT57がイネーブルとなってセレクタMMX2を通過し、MLT2に入力され、メモリマットM2に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが11の時、第2のデータバスIDB2の最下位バイトから送られてきたデータは、同じくMCT66がイネーブルとなってセレクタMMX13を通過し、さらにMCT58がイネーブルとなってセレクタMMX2を通過し、MLT3に入力され、メモリマットM3に書き込まれる。
【0275】
(22)モード3でのIAB、IDB2を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はワード単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0と1、あるいは2と3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0及びM1から読み出されたデータはMLT0及びMLT1にラッチされ、MCT54及びMCT60がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT69及びMCT71がイネーブルとなってセレクタMMX15及びMMX16を通過し、第2のデータバスIDB2の下位2バイト([15:0])に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2及びM3から読み出されたデータはMLT2及びMLT3にラッチされ、MCT52及びMCT59がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT69及びMCT71がイネーブルとなってセレクタMMX15及びMMX16を通過し、第2のデータバスIDB2の下位2バイト([15:0])に出力される。
【0276】
(23)モード3でのIAB、IDB2を使用したワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の下位2バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がワード単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリXMEM1はワード単位のデータの書き込み動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第2のデータバスIDB2の下位2バイトから送られてきたデータは、MCT66がイネーブルとなってセレクタMMX13及びMMX14を通過し、さらにMCT55及びMCT61がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT0及びMLT1に入力され、メモリマットM0及びM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第2のデータバスIDB2の下位2バイトから送られてきたデータは、同じくMCT66がイネーブルとなってセレクタMMX13及びMMX14を通過し、さらにMCT57及びMCT62がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT2及びMLT3に入力され、メモリマットM2及びM3に書き込まれる。
【0277】
(24)モード1でのIAB、IDB2を使用したロングワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第1のオンチップメモリXMEM1はロングワード単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは該当の4つ全てのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。メモリマットM0〜M3から読み出されたデータはMLT0〜3にラッチされ、MCT54及びMCT60がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT69、MCT71及びMCT75がイネーブルとなってセレクタMMX15、MMX16、MMX11及びMMX12を通過し、第2のデータバスIDB2([31:0])に出力される。
【0278】
(25)モード1でのIAB、IDB2を使用したロングワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の全ビットを使用して送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がlowでかつMVI[2:0]がロングワード単位のデータの書き込み動作を示すコードを指定している時、第1のオンチップメモリXMEM1はロングワード単位のデータの書き込み動作を行う。MVX信号はディセーブル状態である。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は4バイト分のワード線をイネーブルにするためのコード(11)を示し、アドレスデコーダMADCは4つ全てのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。第2のデータバスIDB2から送られてきたデータは、MCT66がイネーブルとなってセレクタMMX13、MMX14、MMX7及びMMX8を通過し、さらにMCT55、MCT61及びMCT63がイネーブルとなってMMX2、MMX4、MCB1及びMCB2を通過し、MLT0〜3に入力され、メモリマットM0〜3に書き込まれる。
【0279】
(26)モード3でのXAB、XDB2を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、XABの15ビット目(XAB[14])がlowでかつMVXがイネーブル状態の時、第1のオンチップメモリXMEM1はXDB2を使用したワード単位のデータの読み出し動作を行う。MVI[2:0]信号は無視される。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にしてデータを読み出す。読み出されたデータはアクセスされたメモリマットに接続されているラッチMLT0と1、あるいは2と3によってラッチされる。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、メモリマットM0及びM1から読み出されたデータはMLT0及びMLT1にラッチされ、MCT54及びMCT60がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT73がイネーブルとなってセレクタMMX15及びMMX16を通過し、第4のデータバスXDB2に出力される。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、メモリマットM2及びM3から読み出されたデータはMLT2及びMLT3にラッチされ、MCT52及びMCT59がイネーブルとなってセレクタMMX1及びMMX3を通過し、さらにMCT73がイネーブルとなってセレクタMMX15及びMMX16を通過し、第4のデータバスXDB2に出力される。
【0280】
(27)モード3でのXAB、XDB2を使用したワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第4のデータバスXDB2から送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、XABの15ビット目(XAB[14])がlowでかつMVXがイネーブル状態の時、第1のオンチップメモリXMEM1はXDB2を使用したワード単位のデータの書き込み動作を行う。MVI[2:0]信号は無視される。この時ASX信号はイネーブル状態(high)となり、MLX[1:0]は2バイト分のワード線をイネーブルにするためのコード(10)を示し、アドレスデコーダMADCは該当の連続する2つのメモリマットの所定のワード線をイネーブル状態にして対応するラッチ内のデータを書き込む。MLT4にラッチされたアドレス情報の最下位2ビットが00の時、第4のデータバスXDB2から送られてきたデータは、MCT64がイネーブルとなってセレクタMMX13及びMMX14を通過し、さらにMCT55及びMCT61がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT0及びMLT1に入力され、メモリマットM0及びM1に書き込まれる。MLT4にラッチされたアドレス情報の最下位2ビットが10の時、第4のデータバスXDB2から送られてきたデータは、同じくMCT64がイネーブルとなってセレクタMMX13及びMMX14を通過し、さらにMCT57及びMCT62がイネーブルとなってセレクタMMX2及びMMX4を通過し、MLT2及びMLT3に入力され、メモリマットM2及びM3に書き込まれる。
【0281】
〔オンチップメモリXMEM2の動作〕
第2のオンチップメモリXMEM2の詳細な動作を説明する。
【0282】
第2のオンチップメモリXMEM2もXMEM1と同様、命令によってデータ長を3タイプ区別して対応する機能のメモリである。図44は各モード毎のアドレスデコーダMADCに供給される入力信号の真理値である。また図45にはモード1での、図46にはモード2での、図47にはモード3での第2のオンチップメモリXMEM2における制御回路MDEC4の定義の真理値の表を示す。以下、モード別に各動作の説明をする。
【0283】
(1)モード1での命令フェッチ動作:
MSELXがイネーブル状態を示し、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]が命令フェッチ動作を示すコードを指定している時、第2のオンチップメモリXMEM2はロングワード(32ビット)のデータ読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0284】
(2)モード1でのIAB、IDB1を使用したバイト単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はバイト単位のデータの読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0285】
(3)モード1でのIAB、IDB1を使用したバイト単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の最下位バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がバイト単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリXMEM2はバイト単位のデータの書き込み動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0286】
(4)モード1でのIAB、IDB1を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0287】
(5)モード1でのIAB、IDB1を使用したワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の下位2バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がhighでかつMV[2:0]がワード単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリXMEM2はワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0288】
(6)モード1でのIAB、IDB1を使用したロングワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0289】
(7)モード1でのIAB、IDB1を使用したロングワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第1のデータバスIDB1の全ビットを使用して送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がロングワード単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリXMEM2はロングワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0290】
(8)モード1でのXAB、XDB1を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、XABの15ビット目(XAB[14])がhighでかつMVXがイネーブル状態の時、第2のオンチップメモリXMEM2はXDB1を使用したワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0291】
(9)モード1でのXAB、XDB1を使用したワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第3のデータバスXDB1から送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、XABの15ビット目(XAB[14])がhighでかつMVXがイネーブル状態の時、第2のオンチップメモリXMEM2はXDB1を使用したワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0292】
(10)モード2での命令フェッチ動作:
このケースは先の(1)モード1での命令フェッチ動作と同じである。
【0293】
(11)モード2でのIAB、IDB2を使用したバイト単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態でかつMVI[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はバイト単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。MVI[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がhighであれば上記(2)モード1でのバイト単位のデータの読み出し動作と同じであるが、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリXMEM1のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2に出力される。詳細な制御及び動作は、後述の(20)モード3でのIAB、IDB2を使用したバイト単位のデータの読み出し動作と同じである。
【0294】
(12)モード2でのIAB、IDB2を使用したバイト単位のデータの書き込み動作:
このケースも上記(11)モード2でのIAB、IDB2を使用したバイト単位のデータの読み出し動作と同様、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリXMEM1のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2から入力される。詳細な制御及び動作は、後述の(21)モード3でのIAB、IDB2を使用したバイト単位のデータの書き込み動作と同じである。
【0295】
(13)モード2でのIAB、IDB2を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態でかつMVI[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はワード単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。MVI[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がhighであれば上記(4)モード1でのワード単位のデータの読み出し動作と同じであるが、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリXMEM1のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2に出力される。詳細な制御及び動作は、後述の(22)モード3でのIAB、IDB2を使用したワード単位のデータの読み出し動作と同じである。
【0296】
(14)モード2でのIAB、IDB2を使用したワード単位のデータの書き込み動作:
このケースも上記(13)モード2でのIAB、IDB2を使用したワード単位のデータの読み出し動作と同様、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリXMEM1のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2から入力される。詳細な制御及び動作は、後述の(23)モード3でのIAB、IDB2を使用したワード単位のデータの書き込み動作と同じである。
【0297】
(15)モード2でのIAB、IDB2を使用したロングワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態ででかつMVI[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はロングワード単位のデータの読み出し動作を行う。MVX信号はディセーブル状態である。MVI[2:0]がデータ演算回路以外とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])がhighであれば上記(6)モード1でのIAB、IDB1を使用したロングワード単位のデータの読み出し動作と同じであるが、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの読み出し動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリXMEM1のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2に出力される。詳細な制御及び動作は、後述の(24)モード3でのIAB、IDB2を使用したロングワード単位のデータの読み出し動作と同じである。
【0298】
(16)モード2でのIAB、IDB2を使用したロングワード単位のデータの書き込み動作:
このケースも(15)モード2でのIAB、IDB2を使用したロングワード単位のデータの読み出し動作と同様、MVI[2:0]がデータ演算回路とのデータ転送のためのデータの書き込み動作を示すコードを指定している場合、IABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリXMEM1のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第2のデータバスIDB2から入力される。詳細な制御及び動作は、後述の(25)モード3でのIAB、IDB2を使用したロングワード単位のデータの書き込み動作と同じである。
【0299】
(17)モード2でのXAB、XDB2を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態でかつMVXがイネーブル状態の時、第2のオンチップメモリXMEM2はXDB1を使用したワード単位のデータの読み出し動作を行う。MVI[2:0]信号は無視される。XABの15ビット目(XAB[14])の状態に関わらず、すなわち第1のオンチップメモリXMEM1のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第4のデータバスXDB2に出力される。詳細な制御及び動作は、後述の(26)モード3でのXAB、XDB2を使用したワード単位のデータの読み出し動作と同じである。
【0300】
(18)モード2でのXAB、XDB2を使用したワード単位のデータの書き込み動作:
このケースも上記(17)モード2でのXAB、XDB2を使用したワード単位のデータの読み出し動作と同様、XABの15ビット目(IAB[14])の状態に関わらず、すなわち第1のオンチップメモリXMEM1のアドレスであっても、残りの[13:0]の情報に該当する領域がアクセスされる。また、データは第4のデータバスXDB2から入力される。詳細な制御及び動作は、後述の(27)モード3でのXAB、XDB2を使用したワード単位のデータの書き込み動作と同じである。
【0301】
(19)モード3での命令フェッチ動作:
MSELXがイネーブル状態を示し、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]が命令フェッチ動作を示すコードを指定している時、第2のオンチップメモリXMEM2はロングワード(32ビット)のデータ読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0302】
(20)モード3でのIAB、IDB2を使用したバイト単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がバイト単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はバイト単位のデータの読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0303】
(21)モード3でのIAB、IDB2を使用したバイト単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の最下位バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がバイト単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリXMEM2はバイト単位のデータの書き込み動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0304】
(22)モード3でのIAB、IDB2を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0305】
(23)モード3でのIAB、IDB2を使用したワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の下位2バイトから送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がワード単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリXMEM2はワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0306】
(24)モード1でのIAB、IDB2を使用したロングワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がロングワード単位のデータの読み出し動作を示すコードを指定している時、第2のオンチップメモリXMEM2はワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0307】
(25)モード1でのIAB、IDB2を使用したロングワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第2のデータバスIDB2の全ビットを使用して送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がhighでかつMVI[2:0]がロングワード単位のデータの書き込み動作を示すコードを指定している時、第2のオンチップメモリXMEM2はロングワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0308】
(26)モード3でのXAB、XDB2を使用したワード単位のデータの読み出し動作:
MSELXがイネーブル状態を示し、WEX=low状態で、IABの15ビット目(IAB[14])がhighでかつMVXがイネーブル状態の時、第2のオンチップメモリXMEM2はXDB2を使用したワード単位のデータの読み出し動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0309】
(27)モード3でのXAB、XDB2を使用したワード単位のデータの書き込み動作:
書き込むためのデータは読み出し時と同様、第4のデータバスXDB2から送られてくる。MSELXがイネーブル状態を示し、WEX=high状態で、IABの15ビット目(IAB[14])がhighでかつMVXがイネーブル状態の時、第2のオンチップメモリXMEM2はXDB2を使用したワード単位のデータの書き込み動作を行う。以下、第1のオンチップメモリXMEM1の動作と同じである。
【0310】
〔データ演算回路の構成〕
第1のデータ演算回路EX31の、より具体的な構成例を図48に示す。図中、E4DEC1は第1のデータ演算回路EX31内のデータ転送用制御信号ECT21〜31を生成する制御回路、ECT21〜31は制御回路E4DEC1から出力される制御信号、EMX8は第1のデータバスIDB1の上位ワード(16ビット)、下位ワード(16ビット)もしくは第3のデータバスXDB1を選択して取り込むセレクタ、ECB1はセレクタEMX8で選択されたデータを上位ワードレジスタ(R0〜3H)ファイルに入力するクロックドゲート、ECB3はELT6の出力を第1のデータバスIDB1の下位ワードに出力するためのクロックドゲート、ECB4は第5のデータバスYDB1からデータを取り込むクロックドゲート、ECB5はELT6の出力を第5のデータバスYDB1に出力するためのクロックドゲート、ECB6はクロックドゲートECB4の出力を上位ワードレジスタ(R0〜3H)ファイルに入力するためのクロックドゲート、ECB7はオールゼロを下位ワードレジスタ(R0〜3L)ファイルに入力するためのクロックドゲート、ELT6はレジスタファイルERGから選択された上位ワードレジスタ(R0〜3H)又は下位ワードレジスタ(R0〜3L)の出力信号を第1のデータバス、第3のデータバスもしくは第5のデータバスに出力するために一端CK1のタイミングでラッチするためのラッチ回路、EMX9はELT6の出力を第1のデータバスIDB1の上位ワード、下位ワードもしくは第3のデータバスXDB1に出力するためのセレクタ、ELT7は制御信号ECT25〜30を半周期遅延させるための遅延ラッチ回路、EMVはデータ演算回路EX31、EX32双方に第1又は第2のデータバスを使用したデータ転送動作を指示するための制御信号、EMVXはデータ演算回路EX31、EX32双方に第3又は第4のデータバスを使用したデータ転送動作を指示するための制御信号、EMVYはデータ演算回路EX31、EX32双方に第5又は第6のデータバスを使用したデータ転送動作を指示するための制御信号、EDIOXはデータ演算回路EX31、EX32双方にIDB1、IDB2、XDB1又はXDB2を使用したデータ転送動作時の転送方向を指定するための制御信号、EDIOYはデータ演算回路EX31、EX32双方にYDB1又はYDB2を使用したデータ転送動作時の転送方向を指定するための制御信号、EDLIはデータ演算回路EX11、EX12双方にIDB1又はIDB2を使用したデータ転送動作時のデータビット長を指定するための制御信号、である。その他の記号は、図19と同じである。
【0311】
第2のデータ演算回路EX32の、より具体的な構成例を図49に示す。第1及び第2のデータ演算回路EX31、EX32は、接続するデータバスと制御回路E4DEC1とE5DEC1の機能を定義する真理値が異なるだけで、後の構造は同じであるので、図中の記号説明は省略する。
【0312】
〔データ演算回路EX31の動作〕
第1のデータ演算回路EX31の詳細な動作を説明する。
【0313】
図50は制御回路E4DEC1の機能を表す真理値の表である。第1のデータ演算回路EX31内レジスタファイルの書き込み/読み出し動作時のタイミングは、第1の実施例と同じであるので、ここでは省略する。本実施例のデータ演算回路も、固定小数点形式のデータを扱うディジタル信号処理を効率良く実行可能な演算回路を取り上げており、演算機能は図20と同じであるので、詳細な説明は省略し、本発明に関係するデータ転送動作のみ説明する。
【0314】
(1)モード1及びモード2での動作:
中央処理回路CPU3が第1のデータバスIDB1を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIOX=lowでかつEDLI=lowになり、第1のデータ演算回路EX31は第1のデータバスIDB1の下位16ビットにあるワードデータを取り込む動作を行う。制御信号ECT22がイネーブルとなり、第1のデータバスIDB1の下位16ビットにあるワードデータはセレクタEMX8を通過し、ECT29がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0315】
中央処理回路CPU3が第1のデータバスIDB1を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIOX=highでかつEDLI=lowになり、第1のデータ演算回路EX31は第1のデータバスIDB1の下位16ビットへワードデータを出力する動作を行う。制御信号ECT31がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT6を通過し、ECT26がイネーブルになってセレクタEMX9を経て第1のデータバスIDB1の下位16ビットに出力される。なお、ここでは第1のデータバスIDB1の上位16ビットには何も出力しないが、転送先が32ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【0316】
中央処理回路CPU3が第1のデータバスIDB1を使用したロングワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIOX=lowでかつEDLI=highになり、第1のデータ演算回路EX31は第1のデータバスIDB1上にあるロングワードデータを取り込む動作を行う。制御信号ECT21がイネーブルとなり、第1のデータバスIDB1の上位16ビットにあるワードデータはセレクタEMX8を通過し、ECT29がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2では第1のデータバスIDB1の下位16ビットにあるワードデータが入力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0317】
中央処理回路CPU3が第1のデータバスIDB1を使用したロングワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIOX=highでかつEDLI=highになり、第1のデータ演算回路EX31は第1のデータバスIDB1へロングワードデータを出力する動作を行う。制御信号ECT31がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT6を通過し、ECT25がイネーブルになってセレクタEMX9を経て第1のデータバスIDB1の上位16ビットに出力される。同時に出力すべきデータがレジスタファイルERG内のソースレジスタの下位ワードからラッチ回路ELT6を通過し、クロックドゲートECB3を経て第1のデータバスIDB1の下位16ビットに出力される。
【0318】
中央処理回路CPU3が第3のデータバスXDB1を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、EMVXがイネーブル(high)、EDIOX=lowになり、第1のデータ演算回路EX31は第3のデータバスXDB1にあるワードデータを取り込む動作を行う。制御信号ECT23がイネーブルとなり、第3のデータバスXDB1にあるワードデータはセレクタEMX8を通過し、ECT29がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0319】
中央処理回路CPU3が第3のデータバスXDB1を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、EMVXがイネーブル(high)、EDIOX=highになり、第1のデータ演算回路EX31は第3のデータバスXDB1へワードデータを出力する動作を行う。制御信号ECT31がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT6を通過し、ECT27がイネーブルになってセレクタEMX9を経て第3のデータバスXDB1に出力される。
【0320】
中央処理回路CPU3が第5のデータバスYDB1を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、EMVYがイネーブル(high)、EDIOY=lowになり、第1のデータ演算回路EX31は第5のデータバスYDB1にあるワードデータを取り込む動作を行う。制御信号ECT24がイネーブルとなり、第5のデータバスYDB1にあるワードデータはクロックドゲートECB4を通過し、ECT30がイネーブルになってクロックドゲートECB6を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にクロックドゲートECB7ではオールゼロデータが出力されてレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0321】
中央処理回路CPU3が第5のデータバスYDB1を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、EMVYがイネーブル(high)、EDIOY=highになり、第1のデータ演算回路EX31は第5のデータバスYDB1へワードデータを出力する動作を行う。制御信号ECT31がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT6を通過し、ECT28がイネーブルになってクロックドゲートECB5を経て第5のデータバスYDB1に出力される。 第3のデータバスXDB1を使用したワード単位のデータ転送と、第5のデータバスYDB1を使用したワード単位のデータ転送動作は、並列に実行可能である。そのため両者のハードウェアは独立構造になっている。一方、第1のデータバスIDB1を使用したデータ転送動作は、他のデータ転送動作とは並列動作することを想定していないため、本実施例では第3のデータバスXDB1を使用したワード単位のデータ転送動作のハードウェアとリソースを共用しているが、第5のデータバスYDB1を使用したワード単位のデータ転送動作の方と共用しても良いことは言うまでもない。
【0322】
(2)モード3での動作:
モード状態信号MD[1:0]がモード3を示すと、制御回路E4DEC1では動作イネーブル信号ENをディセーブル状態にして、以後モードが変更されるまで第1のデータ演算回路EX31は中央処理回路CPU3がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路CPU3が発行する制御は第2のデータ演算回路EX32で有効となる。
【0323】
〔データ演算回路EX32の動作〕
第2のデータ演算回路EX32の詳細な動作を説明する。
【0324】
図51は制御回路E5DEC1の機能を表す真理値の表である。動作タイミングは第1のデータ演算回路EX31と同じである。
【0325】
(1)モード1での動作:
モード状態信号MD[1:0]がモード1を示すと、制御回路E5DEC1では動作イネーブル信号ENをディセーブル状態にして、以後モードが変更されるまで第2のデータ演算回路EX12は中央処理回路CPU3がいかなる動作を指示しても、動作を実行せずにディセーブル状態を保持する。このモードでは、中央処理回路CPU3が発行する制御は第1のデータ演算回路EX31で有効となる。
【0326】
(2)モード2及びモード3での動作:
中央処理回路CPU3が第2のデータバスIDB2を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIOX=lowでかつEDLI=lowになり、第2のデータ演算回路EX32は第2のデータバスIDB2の下位16ビットにあるワードデータを取り込む動作を行う。制御信号ECT22がイネーブルとなり、第2のデータバスIDB2の下位16ビットにあるワードデータはセレクタEMX8を通過し、ECT29がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0327】
中央処理回路CPU3が第2のデータバスIDB2を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIOX=highでかつEDLI=lowになり、第2のデータ演算回路EX32は第2のデータバスIDB2の下位16ビットへワードデータを出力する動作を行う。制御信号ECT31がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT6を通過し、ECT26がイネーブルになってセレクタEMX9を経て第2のデータバスIDB2の下位16ビットに出力される。なお、ここでは第2のデータバスIDB2の上位16ビットには何も出力しないが、転送先が32ビットのレジスタであることも考慮して、出力データの最上位ビットを符号拡張する機能を備えても本発明の実施を妨げないことは言うまでもない。
【0328】
中央処理回路CPU3がロングワード単位のデータ入力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIOX=lowでかつEDLI=highになり、第2のデータ演算回路EX32は第2のデータバスIDB2上にあるロングワードデータを取り込む動作を行う。制御信号ECT21がイネーブルとなり、第2のデータバスIDB2の上位16ビットにあるワードデータはセレクタEMX8を通過し、ECT29がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2では第2のデータバスIDB2の下位16ビットにあるワードデータが入力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0329】
中央処理回路CPU3がロングワード単位のデータ出力動作を指示する制御信号を発行すると、EMVがイネーブル(high)、EDIOX=highでかつEDLI=highになり、第2のデータ演算回路EX32は第2のデータバスIDB2へロングワードデータを出力する動作を行う。制御信号ECT31がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT6を通過し、ECT25がイネーブルになってセレクタEMX9を経て第2のデータバスIDB2の上位16ビットに出力される。同時に出力すべきデータがレジスタファイルERG内のソースレジスタの下位ワードからラッチ回路ELT6を通過し、クロックドゲートECB3を経て第2のデータバスIDB2の下位16ビットに出力される。
【0330】
中央処理回路CPU3が第4のデータバスXDB2を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、EMVXがイネーブル(high)、EDIOX=lowになり、第2のデータ演算回路EX32は第4のデータバスXDB2にあるワードデータを取り込む動作を行う。制御信号ECT23がイネーブルとなり、第4のデータバスXDB2にあるワードデータはセレクタEMX8を通過し、ECT29がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0331】
中央処理回路CPU3が第4のデータバスXDB2を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、EMVXがイネーブル(high)、EDIOX=highになり、第2のデータ演算回路EX32は第4のデータバスXDB2へワードデータを出力する動作を行う。制御信号ECT31がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT6を通過し、ECT27がイネーブルになってセレクタEMX9を経て第4のデータバスXDB2に出力される。
【0332】
中央処理回路CPU3が第4のデータバスYDB2を使用したワード単位のデータ入力動作を指示する制御信号を発行すると、EMVYがイネーブル(high)、EDIOY=lowになり、第2のデータ演算回路EX32は第6のデータバスYDB2にあるワードデータを取り込む動作を行う。制御信号ECT24がイネーブルとなり、第6のデータバスYDB2にあるワードデータはセレクタEMX8を通過し、ECT29がイネーブルになってクロックドゲートECB1を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの上位ワードに入力される。同時にセレクタEMX2ではオールゼロデータが出力され、クロックドゲートECB2を経てレジスタファイルERGに取り込まれ、指定されたデスティネーションレジスタの下位ワードに入力される。
【0333】
中央処理回路CPU3が第4のデータバスYDB2を使用したワード単位のデータ出力動作を指示する制御信号を発行すると、EMVYがイネーブル(high)、EDIOY=highになり、第2のデータ演算回路EX32は第6のデータバスYDB2へワードデータを出力する動作を行う。制御信号ECT31がイネーブルとなり、出力すべきデータがレジスタファイルERG内のソースレジスタの上位ワードからラッチ回路ELT6を通過し、ECT28がイネーブルになってクロックドゲートECB5を経て第6のデータバスYDB2に出力される。
【0334】
第4のデータバスXDB2を使用したワード単位のデータ転送と、第6のデータバスYDB2を使用したワード単位のデータ転送動作は、第1のデータ演算器EX31と同様、並列に実行可能である。そのため両者のハードウェアは独立構造になっている。一方、第2のデータバスIDB2を使用したデータ転送動作は、他のデータ転送動作とは並列動作することを想定していないため、本実施例では第4のデータバスXDB2を使用したワード単位のデータ転送動作のハードウェアとリソースを共用しているが、第6のデータバスYDB2を使用したワード単位のデータ転送動作の方と共用しても良いことは言うまでもない。
【0335】
以上のように、本実施例のようなマルチバス構造を備えるマイクロコンピュータにおいても、本発明を適用することにより、演算に必要なソースデータを遅滞なく供給することが出来、データ転送がネックとなることなく単独の命令で2並列実行機能による高性能化の効果を十分発揮させることが可能となる。また、通常の単独演算との整合性についても、問題は生じない。
【0336】
〔第4の実施例のマイクロコンピュータの全体構成〕
図52は本発明の第4の実施例のマイクロコンピュータの全体構成を示す図である。本実施例は、全体構成が図34に示されている第3の実施例と同じく4つのオンチップメモリと6本のデータバスの構成に関するものである。図中、LSI4は本発明を適用したマイクロコンピュータ、CPU4は命令をフェッチ、デコードして所要の制御信号を生成する回路を包含した中央処理回路、CADR4はCPU4内部に含まれ、指示されたアドレスを最大2つ同時に生成する機能を有するアドレス生成回路、XMEM3はチップ上に内蔵された第1のオンチップメモリ、XMEM4はチップ上に内蔵された第2のオンチップメモリ、YMEM3はチップ上に内蔵された第3のオンチップメモリ、YMEM4はチップ上に内蔵された第4のオンチップメモリ、EX41はデータ演算を実行する第1のデータ演算回路、EX42はデータ演算を実行する第2のデータ演算回路、IDB1はXMEM3、XMEM4、YMEM3、YMEM4、EX41、MODE2及びバスインタフェース回路BIF2に接続され、データ転送に使用される第1のデータバス、IDB2はXMEM4、YMEM4及びEX42に接続され、データ転送に使用される第2のデータバス、XDB1はXMEM3、XMEM4及びEX41に接続され、データ転送に使用される第3のデータバス、XDB2はXMEM4及びEX42に接続され、データ転送に使用される第4のデータバス、YDB1はYMEM3、YMEM4及びEX41に接続され、データ転送に使用される第5のデータバス、YDB2はYMEM4及びEX42に接続され、データ転送に使用される第6のデータバスである。その他の記号は図1と同じである。 本実施例は、第3の実施例の変形例であるので、詳しい動作は第3の実施例の説明により明らかであるので、ここでは各モジュールのより詳細な回路図や説明は省略する。
【0337】
〔第5の実施例のマイクロコンピュータの全体構成〕
図53は本発明の第5の実施例のマイクロコンピュータの全体構成を示す図である。本実施例はモード設定回路を周辺モジュールの1つとして定義したものに関するものであり、モード設定回路がオンチップモジュールに限らないことを示したものである。モード設定回路はモードレジスタにより構成されるモジュールであるので、モードレジスタをメモリマップドレジスタとして定義すれば容易に本実施例の構成が実現可能なことは明らかである。なお、図53は図52の第4の実施例をベースにしているが、図1、図23及び図34のような実施例にも適用できることは言うまでもない。
【0338】
〔第6の実施例のマイクロコンピュータの全体構成〕
図54は本発明の第6の実施例のマイクロコンピュータの全体構成を示す図である。本実施例はモード設定回路を中央処理回路CPU5の一部を構成するレジスタとしたものである。本実施例も図53と同様、図52の第4の実施例をベースにしているが、図1、図23及び図34のような実施例にも適用できることは言うまでもない。
【0339】
〔第7の実施例のマイクロコンピュータの全体構成〕
図58は本発明の第7の実施例のマイクロコンピュータの全体構成を示す図である。本実施例は上述した4つのメモリに、オンチップメモリZMEMをさらに加えたものである。本実施例も図52の第4の実施例をベースにしている。例えば、図57のようにメモリマッピングをすれば、アドレス生成回路CADR4から生成される2つのアドレスが第1のオンチップメモリXMEM3及び第2のオンチップメモリXMEM4のアドレス空間上、並びに、第5のオンチップメモリZMEMのアドレス空間上にある場合、XMEM3とXMEM4の該当するアドレスが同時にアクセスされ、XMEM3から読み出されたデータは第3のデータバスXDB1に、XMEM4から読み出されたデータは第4のデータバスXDB2に出力される。これと並行してZMEMの該当するアドレスがアクセスされ、ZMEMから読み出されたデータは第5のデータバスYDB1に出力される。XDB1に出力されたデータは、命令で指定された第1のデータ演算回路EX41内のデスティネーションオペランドに転送され、XDB2に出力されたデ−タは、同じ命令で指定された第2のデ−タ演算回路EX42内のデスティネーションオペランドに転送される。また、並行してYDB1に出力されたデータは、同じ命令で指定された第1のデータ演算回路EX41内及び第2のデータ演算回路EX42内のそれぞれのデスティネーションオペランドに転送される。これらデスティネーションオペランドに転送されたデータをソースとして、第1の実施例で述べた演算動作を実行することができる。
【0340】
本実施例での演算の特徴は、第1のデータ演算回路EX41及び第2のデータ演算回路EX42における演算のソースデータの一方が互いに共通であることである。これにより、EX41及びEX42に共通のデータ、すなわちZMEMから読み出されたデータをフィルタ係数とすることができ、XMEM3及びXMEM4という2つの異なるメモリのデータに対し、並列フィルタ処理の実行が可能となる。本実施例においてはフィルタ係数格納の為、ハード的にメモリを増やさなければならないが、フィルタ係数の個数がさほど多くなく、同一データ用に重複してメモリを使用することを厭わない場合には本実施例の構成をとらなくても並列フィルタ処理が実現できる。既述した第3の実施例乃至第6の実施例においても例えば第3のメモリ及び第4のメモリの特定のアドレス空間にフィルタ係数を格納しておけば、モード2によりフィルタ処理が可能となることはいうまでもない。また、既述した第3の実施例乃至第6の実施例において、データ演算回路内の制御回路E4DEC1又はE5DEC1の真理値を変更すれば、例えば第3のメモリを第4のメモリとは異なるアドレス空間上に配置することにより、実施例7の第5のメモリに相当するように動作させる、すなわちフィルタ処理係数を格納・出力させることも可能であり、それによってハード的にメモリを増設することもなく、また、同一データを2つのメモリに重複して格納する必要がないため、メモリを節約しながら並列フィルタ処理を実現することができる。
【0341】
上述した第1から第7の実施例の説明中において、上記モード設定回路内のモードレジスタの内容を変更する手段は、今まで特定のデータをデータ転送動作によって書き込むことにより行う例を示してきたが、本発明はそのような手段に限定されるものではない。すなわち、モード状態を示す信号と、その状態を変更する何らかの手段を備えていればよく、例えばモード設定命令を備え、その命令によって直接レジスタの内容を変更するようにしても良いことは明らかである。また、ある特定の割り込み要求を受け付けた時に自動的にあるモードに切り替える機能を設けても良い。
【0342】
上述した第1から第7の実施例の説明中においては、モードを切り替えることにより、同じ命令でも複数の動作を使い分ける手法を示してきたが、命令コード長に余裕があれば、図55に示すように命令コード上に動作モード指定領域を設け、命令毎に通常動作やSIMD型に並列動作を制御しても構わない。この場合、命令コードは長くなるが、動作モードを頻繁に切り替える必要のある処理では、その都度モード切り替えのためのデータ転送命令や、モード切り替え命令を挿入しなくて済む利点がある。
【0343】
更に、上記第3乃至上記第7の実施例を応用することにより、フィルタリング処理などの積和演算を複数の演算回路を用いて並列に演算させることができ、例えば、複数端末へ並列に動作するマルチモデムなどの実現が可能となる。
【0344】
【発明の効果】
以上に述べてきたように本発明によれば、マイクロコンピュータは通常の単独演算動作と、SIMD型の並列演算動作との間で命令体系上の整合性を保持しつつ、演算に必要なソースデータを遅滞なく供給することができるマイクロコンピュータを実現でき、データ転送でネックとなることなく、SIMD型の並列動作時の高性能を最大限に発揮させることが可能となる。
【図面の簡単な説明】
【図1】本発明を適用した1チップマイクロコンピュータの第1の実施例。
【図2】モード1及びモード3の時の第1及び第2のオンチップメモリのアドレス空間上のマッピング例。
【図3】モード2でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第1及び第2のオンチップメモリのアドレス空間上のマッピング例。
【図4】モード2でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第1及び第2のオンチップメモリのアドレス空間上の別のマッピング例。
【図5】モード設定回路(MODE1)のより具体的な構成例。
【図6】モード設定回路内制御回路(MDDEC1)の真理値の表。
【図7】モード設定回路内モードレジスタ(MDR)の動作タイミングチャート図。
【図8】第1及び第2のオンチップメモリ(MEM11,MEM12)の、より具体的な構成例。
【図9】第1のオンチップメモリの、アドレスとメモリ内アクセス領域との対応を示す図。
【図10】第1及び第2のオンチップメモリのメモリアクセス制御信号MV[2:0]のコード定義表。
【図11】モード1での第1のオンチップメモリ内制御回路(MDEC1)の真理値の表。
【図12】モード2での第1のオンチップメモリ内制御回路(MDEC1)の真理値の表。
【図13】モード3での第1のオンチップメモリ内制御回路(MDEC1)の真理値の表。
【図14】第1のオンチップメモリの動作タイミングチャート図。
【図15】第2のオンチップメモリの、アドレスとメモリ内アクセス領域との対応を示す図。
【図16】モード1での第2のオンチップメモリ内制御回路(MDEC1)の真理値の表。
【図17】モード2での第2のオンチップメモリ内制御回路(MDEC1)の真理値の表。
【図18】モード3での第2のオンチップメモリ内制御回路(MDEC1)の真理値の表。
【図19】第1のデータ演算回路(EX11)の、より具体的な構成例。
【図20】第2のデータ演算回路(EX12)の、より具体的な構成例。
【図21】a:第1のデータ演算回路内制御回路(E1DEC1)の真理値の表、b:第2のデータ演算回路内制御回路(E2DEC1)の真理値の表。
【図22】a:第1のデータ演算回路の動作タイミングチャート図、b:第2のデータ演算回路の動作タイミングチャート図。
【図23】本発明を適用した1チップマイクロコンピュータの第2の実施例。
【図24】モード設定回路(MODE2)のより具体的な構成例。
【図25】モード設定回路内制御回路(MDDEC2)の真理値の表。
【図26】第1オンチップメモリ(MEM21)の、より具体的な構成例。
【図27】第2オンチップメモリ(MEM22)の、より具体的な構成例。
【図28】モード1又はモード3での第1のオンチップメモリ内制御回路(MDEC2)の真理値の表。
【図29】モード2での第1のオンチップメモリ内制御回路(MDEC2)の真理値の表。
【図30】モード1又はモード3での第2のオンチップメモリ内制御回路(MDEC3)の真理値の表。
【図31】モード2での第2のオンチップメモリ内制御回路(MDEC3)の真理値の表。
【図32】第2のデータ演算回路(EX22)の、より具体的な構成例。
【図33】第2のデータ演算回路内制御回路(E3DEC1)の真理値の表。
【図34】本発明を適用した1チップマイクロコンピュータの第3の実施例。
【図35】モード1及びモード3の時の第1乃至第4のオンチップメモリのアドレス空間上のマッピング例。
【図36】モード2でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第1乃至第4のオンチップメモリのアドレス空間上のマッピング例。
【図37】モード2でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第1乃至第4のオンチップメモリのアドレス空間上の別のマッピング例。
【図38】第1及び第2のオンチップメモリ(XMEM1,XMEM2)の、より具体的な構成例。
【図39】第3及び第4のオンチップメモリ(YMEM1,YMEM2)の、より具体的な構成例。
【図40】アドレスデコーダのための第1のオンチップメモリ内制御回路(MDEC4)の真理値の表。
【図41】モード1での第1のオンチップメモリ内制御回路(MDEC4)の真理値の表。
【図42】モード2での第1のオンチップメモリ内制御回路(MDEC4)の真理値の表。
【図43】モード3での第1のオンチップメモリ内制御回路(MDEC4)の真理値の表。
【図44】アドレスデコーダのための第2のオンチップメモリ内制御回路(MDEC4)の真理値の表。
【図45】モード1での第2のオンチップメモリ内制御回路(MDEC4)の真理値の表。
【図46】モード2での第2のオンチップメモリ内制御回路(MDEC4)の真理値の表。
【図47】モード3での第2のオンチップメモリ内制御回路(MDEC4)の真理値の表。
【図48】第1のデータ演算回路(EX31)の、より具体的な構成例。
【図49】第2のデータ演算回路(EX32)の、より具体的な構成例。
【図50】第1のデータ演算回路内制御回路(E4DEC1)の真理値の表。
【図51】第2のデータ演算回路内制御回路(E5DEC1)の真理値の表。
【図52】本発明を適用した1チップマイクロコンピュータの第4の実施例。
【図53】本発明を適用した1チップマイクロコンピュータの第5の実施例。
【図54】本発明を適用した1チップマイクロコンピュータの第6の実施例。
【図55】モード設定回路を備える代わりに、命令コード上に動作モード領域を設けた一例。
【図56】命令フォーマット及び命令コードの一例。
【図57】モード2でかつ、オンチップメモリとデータ演算回路との間のデータ転送動作の場合の、第1乃至第5のオンチップメモリのアドレス空間上のマッピング例。
【図58】本発明を適用した1チップマイクロコンピュータの第7の実施例。
【符号の説明】
LSI1〜7:本発明を適用した1チップマイクロコンピュータ
CPU1〜5:中央処理回路
CFCH1〜2:命令フェッチ回路
CDEC:命令デコード回路
CNT:CDECで生成された制御信号群
MODE1〜3:モード設定回路
MD[1:0]:現在のモード状態を伝えるモード信号
CADR1〜4:アドレス生成回路
IAB、XAB、YAB:アドレスバス
MEM11、MEM12、MEM21、MEM22、XMEM1、XMEM2、YMEM1、YMEM2、XMEM3、XMEM4、YMEM3、YMEM4、ZMEM:オンチップメモリ
EX11、EX12、EX21、EX22、EX31、EX32、EX41、EX42:データ演算回路
IDB1、IDB2、XDB1、XDB2、YDB1、YDB2:データバス
BIF1〜2:バス・インタフェース回路
IRQ:割り込み処理回路
PIO:外部とのパラレルインタフェース回路
SIO1、SIO2:シリアルインタフェース回路
TIM:タイマ回路
ICT:IRQモジュールの制御信号
PCT:PIOモジュールの制御信号
S1CT:SIO1モジュールの制御信号
S2CT:SIO2モジュールの制御信号
TCT:TIMモジュールの制御信号
IREQ:割り込み要求信号
MDR:モード状態を示すモードレジスタ
MDDEC1〜2:モード設定回路内の制御信号を生成する制御回路
DCT1〜5、DCT11〜13:制御回路から出力される制御信号
DMX1〜2:モード設定回路内のセレクタ回路
DCB1〜4:モード設定回路内のクロックドゲート
DLT1〜3、DLT5〜6:モード設定回路内の遅延ラッチ回路
RDMDR:MDRの情報をデータバスに出力するための制御信号
WTMDR:データバス上のデータをMDRに入力するための制御信号
CLR:モードレジスタMDRを初期化するためのクリア信号
MADC:オンチップメモリ内のアドレスデコーダ
M0〜3:1バイト単位のデータを格納するメモリマット
MLT0〜3:バイト単位のラッチ回路
MLT4〜5:ラッチ回路
MMX1〜16:オンチップメモリ内のセレクタ回路
MCB1〜10:オンチップメモリ内のクロックドゲート
MDEC1〜5:オンチップメモリ内の制御信号を生成する制御回路
MCT1〜21、31〜34、41〜48、51〜75、81〜105:制御回路から出力される制御信号
MV[2:0]:メモリ共通の読み出し/書き込み動作を制御する3ビットの制御コード信号
MVI[2:0]:IAB、IDB1、IDB2を使用する時、メモリ共通の読み出し/書き込み動作を制御する3ビットの制御コード信号
MVX:XAB、XDB1、XDB2を使用する時、メモリ共通の読み出し/書き込み動作を制御する信号
MVY:YAB、YDB1、YDB2を使用する時、メモリ共通の読み出し/書き込み動作を制御する信号
WE、WEX、WEY:メモリ共通の書き込み動作か、読み出し動作かを指定する制御信号
MSEL、MSELX、MSELY:オンチップメモリ共通のメモリアクセスイネーブル信号
AS、ASX、ASY:アドレス情報が有効であることを示す信号
ML[1:0]、MLX[1:0]、MLY[1:0]:アドレスデコーダでどのメモリマットのワード線をイネーブルにすべきかを指定する制御信号
ADX[13:0]、ADY[13:0]:アドレスデコーダへ渡すアドレス情報
ERG:データ演算回路内のレジスタファイル
EMPY:データ演算回路内の乗算器
EALU:データ演算回路内の算術論理演算器
E1DEC1、E2DEC1、E3DEC1:データ演算回路内のデータ転送用制御信号を生成する制御回路
EDEC2:データ演算回路内のデータ演算用制御信号を生成する制御回路
ECT1〜6、11〜18、21〜31:データ転送用制御信号を生成する制御回路から出力される制御信号
EMX1〜9:データ演算回路内のセレクタ回路
ECB1〜7:データ演算回路内のクロックドゲート
ELT1〜7:ラッチ回路
EMV:IDB1、IDB2を使用する時、データ演算回路にデータ転送動作を指示するための制御信号
EMVX:XDB1、XDB2を使用する時、データ演算回路にデータ転送動作を指示するための制御信号
EMVY:YDB1、YDB2を使用する時、データ演算回路にデータ転送動作を指示するための制御信号
EDIO:IDB1、IDB2を使用する時、データ演算回路にデータ転送動作時の転送方向を指定するための制御信号
EDIOX:IDB1、IDB2、XDB1、XDB2を使用する時、データ演算回路にデータ転送動作時の転送方向を指定するための制御信号
EDIOY:YDB1、YDB2を使用する時、データ演算回路にデータ転送動作時の転送方向を指定するための制御信号
EDL、EDLI:IDB1、IDB2を使用する時、データ演算回路にデータ転送時のビット長を指定するための制御信号
EXCNT:データ演算回路に演算動作を指示するための制御信号群。

Claims (33)

  1. アドレス生成回路を有する中央処理回路と、
    上記アドレス生成回路から共通のアドレスがそれぞれ供給される第1のメモリ及び第2のメモリと、
    上記第1のメモリ及び上記第2のメモリに結合された第1の演算回路と、
    上記第1のメモリ及び上記第2のメモリに結合された第2の演算回路とを同一の半導体基板上に構成し、
    上記第1及び上記第2のメモリの一方から上記第1の演算回路へデータを供給し、上記第1の演算回路で演算動作を行い、上記第2の演算回路は動作停止する第1の動作モードと、
    上記第1のメモリから上記第1の演算回路へデータを供給し、上記第2のメモリから上記第2の演算回路へデータを供給し、上記第1の演算回路及び上記第2の演算回路で演算動作を行う第2の動作モードとを有することを特徴とするマイクロコンピュータ。
  2. 上記第1の動作モードにおいては上記第1のメモリ及び上記第2のメモリは互いに異なる空間にアドレスマッピングされ、
    上記第2の動作モードにおいては上記第1のメモリ及び上記第2のメモリは同じ空間にアドレスマッピングされることを特徴とする請求項1に記載のマイクロコンピュータ。
  3. 上記第1のメモリ及び上記第2のメモリはそれぞれアドレスデコーダ及び制御回路を有し、
    上記第1のメモリ及び上記第2のメモリへ供給される上記共通のアドレスは複数のビットから構成され、上記制御回路のそれぞれには上記共通のアドレスの一部のビットが入力され、上記アドレスデコーダには上記一部のビット以外の他のビットが入力され、
    上記第1の動作モードの場合には上記第1のメモリ又は上記第2のメモリの一方が上記一部のビットに基づいて選択され、
    上記選択されたメモリに含まれる制御回路は、上記他のビットに対応するデータを供給させ、
    上記第2の動作モードの場合には上記他のビットに対応するデータを上記第1のメモリ及び上記第2のメモリから供給させることを特徴とする請求項1又は請求項2に記載のマイクロコンピュータ。
  4. 上記第1の動作モード及び上記第2の動作モードのいずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備することを特徴とする請求項1乃至請求項3のいずれかに記載のマイクロコンピュータ。
  5. 上記いずれの動作モードであるかの情報は、上記モード状態を設定するモード選択命令をデコードした結果生成される制御信号、又は、割り込み要求によって生成される制御信号に基づいて設定されることを特徴とする請求項4に記載のマイクロコンピュータ。
  6. 上記第1の演算回路及び上記第2の演算回路のそれぞれは演算回路外部へデータを選択的に出力するための出力手段を具備し、
    上記第1の動作モードにおいて上記第2の演算回路の出力手段は上記第2の演算回路外部へのデータ出力を禁止することを特徴とする請求項1乃至請求項4のいずれかに記載のマイクロコンピュータ。
  7. 上記第1の演算回路及び上記第2の演算回路のそれぞれは、乗算器と算術論理演算器を含んでなることを特徴とする請求項1乃至請求項4、請求項6のいずれかに記載のマイクロコンピュータ。
  8. 上記第1の演算回路及び上記第2の演算回路のそれぞれは複数のレジスタから成るレジスタファイルを具備し、
    上記レジスタファイルに格納されるそれぞれのデータのビット長は2nビット
    、 上記乗算器の一入力データのビット長はnビット、
    上記算術論理演算器の一入力データのビット長は2nビットであることを特徴とする請求項7に記載のマイクロコンピュータ。
  9. 上記レジスタファイルに格納データされるそれぞれのデータのビット長は32ビット、
    上記乗算器の一入力データのビット長は16ビット、
    上記算術論理演算器の一入力データのビット長は16ビットであることを特徴とする請求項8に記載のマイクロコンピュータ。
  10. 上記第1の演算回路及び上記第2の演算回路のそれぞれは演算回路外部からデータを選択的に上記レジスタファイルへ伝達する伝達手段を具備し、
    上記第1の動作モードにおいて上記第2の演算回路は上記レジスタファイルへのデータの伝達を禁止することを特徴とする請求項8に記載のマイクロコンピュータ。
  11. 上記第1の演算回路及び上記第2の演算回路のそれぞれは上記乗算器及び上記算術論理演算器の少なくとも一方を動作停止させる手段を具備し、
    上記第1の動作モードにおいて、上記第2の演算回路は上記乗算器及び算術論理演算器の少なくとも一方の動作を停止することを特徴とする請求項7又は請求項10に記載のマイクロコンピュータ。
  12. 上記第1の演算回路及び上記第2の演算回路のうち演算動作をした演算回路から演算結果のデータを上記第1のメモリ及び上記第2のメモリのいずれか一方に伝達することを特徴とする請求項11に記載のマイクロコンピュータ。
  13. 上記第1の動作モードにおいて、上記第1の演算回路が演算動作のデータを供給した上記第1のメモリ及び上記第2のメモリの一方のメモリとは異なる他方のメモリへ演算結果のデータを伝達することを特徴とする請求項12に記載のマイクロコンピュータ。
  14. 上記第1及び上記第2のメモリの一方から上記第2の演算回路へデータを供給し、上記第2の演算回路で演算動作を行い、上記第1の演算回路は動作停止する第3の動作モードを有することを特徴とする請求項1に記載のマイクロコンピュータ。
  15. アドレス生成回路を含む中央処理回路と、
    上記アドレス生成回路からアドレス供給されるアドレスバスと、
    上記アドレスバスに接続される第1のメモリと、
    上記アドレスバスに接続される第2のメモリと、
    上記第1のメモリと上記第2のメモリに接続される第1のデータバスと、
    上記第1のメモリと上記第2のメモリに接続される第2のデータバスと、
    上記第1のデータバスに接続される第1の演算回路と、
    上記第2のデータバスに接続される第2の演算回路とを具備して成り、
    上記第1のメモリ及び上記第2のメモリの一方から上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する第1の動作モードと、
    上記第1のメモリから上記第1の演算回路へデータが供給され、上記第2のメモリから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる第2の動作モードとを有することを特徴とするマイクロコンピュータ。
  16. 上記第1のメモリ及び上記第2のメモリはそれぞれアドレスデコーダ及び制御回路を有し、
    上記第1のメモリ及び上記第2のメモリへ供給される上記共通のアドレスは複数のビットから構成され、上記制御回路のそれぞれには上記共通のアドレスの一部のビットが入力され、上記アドレスデコーダには上記一部のビット以外の他のビットが入力され、
    上記第1の動作モードの場合には上記第1のメモリ又は上記第2のメモリの一方が上記一部のビットに基づいて選択され、
    上記選択されたメモリに含まれる制御回路は、上記他のビットに対応するデータを供給させ、
    上記第2の動作モードの場合には上記他のビットに対応するデータを上記第1のメモリ及び上記第2のメモリから供給させることを特徴とする請求項15に記載のマイクロコンピュータ。
  17. 上記第1の動作モード及び上記第2の動作モードのいずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備することを特徴とする請求項15又は請求項16に記載のマイクロコンピュータ。
  18. 上記第1の動作モードにおいて、上記手段によって保持された情報に基づいて上記第1のデータバスを介して上記第1の演算回路へデータを供給することを特徴とする請求項17に記載のマイクロコンピュータ。
  19. 上記第1の演算回路及び上記第2の演算回路のそれぞれはデータを選択的に上記第1及び上記第2データバスへ出力するための出力手段を具備し、
    上記第1の動作モードにおいて上記第2の演算回路の出力手段は上記選択されたデータバスへのデータ出力を禁止することを特徴とする請求項15乃至請求項17のいずれかに記載のマイクロコンピュータ。
  20. 上記第1の演算回路及び上記第2の演算回路のそれぞれは、乗算器と算術論理演算器を含んでなることを特徴とする請求項15乃至請求項17、請求項19のいずれかに記載のマイクロコンピュータ。
  21. 上記第1の演算回路及び上記第2の演算回路のそれぞれは複数のレジスタから成るレジスタファイルと、上記第1及び上記第2のデータバスから選択的にデータを上記レジスタファイルへ伝達する伝達手段とを具備し、
    上記第1の動作モードにおいて上記第2の演算回路は上記レジスタファイルへのデータの伝達を禁止することを特徴とする請求項20に記載のマイクロコンピュータ。
  22. 上記第1の演算回路及び上記第2の演算回路のそれぞれは上記乗算器及び上記算術論理演算器の少なくとも一方を動作停止させる手段を具備し、
    上記第1の動作モードにおいて、上記第2の演算回路は上記乗算器及び算術論理演算器の少なくとも一方の動作を停止することを特徴とする請求項20又は請求項21に記載のマイクロコンピュータ。
  23. 中央処理回路と、
    上記中央処理回路が出力するアドレスによってアクセスされる複数のメモリと
    上記複数のメモリの一つから供給されるデータに基づいて演算動作を行う第1の演算回路及び第2の演算回路とを具備し、
    上記第1の演算回路及び上記第2の演算回路の一方が上記複数のメモリの一つから供給されるデータを受けて演算をし、他方が演算動作を停止する第1の動作モードと、
    上記第1の演算回路が上記複数のメモリの一つから供給されるデータを受け、上記第2の演算回路が上記複数のメモリの別の一つから供給されるデータを受けて、上記第1の演算回路及び上記第2の演算回路の両方が演算動作を行う第2の動作モードとを有し、
    上記第1の動作モード、上記第2の動作モードのいずれの場合にも、共通に用いられる命令セットを有することを特徴とするマイクロコンピュータ。
  24. 上記いずれの動作モードであるかの情報を保持する手段を有することを特徴とする請求項23に記載のマイクロコンピュータ。
  25. 上記命令セットは、上記保持する情報を書き換える命令を含むことを特徴とする請求項24に記載のマイクロコンピュータ。
  26. 上記中央処理回路はアドレス生成回路を含み、
    上記マイクロコンピュータは、
    上記アドレス生成回路からアドレス供給されるアドレスバスと、
    上記アドレスバスに接続される第1のメモリと、
    上記アドレスバスに接続される第2のメモリと、
    上記第1のメモリと上記第2のメモリに接続される第1のデータバスと、
    上記第1のメモリと上記第2のメモリに接続される第2のデータバスとを具備し、
    上記第1の演算回路は上記第1のデータバスに接続され、
    上記第2の演算回路は上記第2のデータバスに接続されることを特徴とする請求項23乃至請求項25のいずれかに記載のマイクロコンピュータ。
  27. アドレス生成回路を有する中央処理回路と、
    上記アドレス生成回路から共通のアドレスがそれぞれ供給される第1のメモリ
    、第2のメモリ、第3のメモリ及び第4のメモリと、
    上記第1のメモリ乃至上記第4のメモリに結合された第1の演算回路と、
    上記第1のメモリ乃至上記第4のメモリに結合された第2の演算回路とを同一の半導体基板上に構成し、
    上記第1のメモリ乃至上記第4のメモリのいずれか一つ又は任意の2つから上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ
    、上記第2の演算回路は動作停止する第1の動作モードと、
    上記第1のメモリ乃至上記第4のメモリのいずれか一つから上記第1の演算回路へデータが供給され、上記第1の演算回路へデータを供給するメモリ以外の残りのいずれか一つから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる、若しくは、上記第1乃至第4のメモリの任意の2つから上記第1の演算回路へデータが供給され、残りの2つから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる第2の動作モードとを有することを特徴とするマイクロコンピュータ。
  28. アドレス生成回路を含む中央処理回路と、
    上記アドレス生成回路からアドレス供給される第1のアドレスバス、第2のアドレスバス及び第3のアドレスバスと、
    上記第1のアドレスバス及び上記第2のアドレスバスに接続される第1のメモリと、
    上記第1のアドレスバス及び上記第2のアドレスバスに接続される第2のメモリと、
    上記第1のアドレスバス及び上記第3のアドレスバスに接続される第3のメモリと、
    上記第1のアドレスバス及び上記第3のアドレスバスに接続される第4のメモリと、
    上記第1のメモリ乃至上記第4のメモリに接続される第1のデータバスと、
    上記第1のメモリ乃至上記第4のメモリに接続される第2のデータバスと、
    上記第1のメモリと上記第2のメモリに接続される第3のデータバスと、
    上記第1のメモリと上記第2のメモリに接続される第4のデータバスと、
    上記第3のメモリと上記第4のメモリに接続される第5のデータバスと、
    上記第3のメモリと上記第4のメモリに接続される第6のデータバスと、
    上記第1のデータバス、上記第3のデータバス及び上記第5のデータバスに接続された第1の演算回路と、
    上記第2のデータバス、上記第4のデータバス及び上記第6のデータバスに接続された第2の演算回路とを具備して成り、
    上記第3のデータバス又は上記第5のデータバスに接続されたメモリのうちいずれか一つから上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する、
    若しくは、上記第3のデータバスに接続されたメモリのうちどちらか一つ及び上記第5のデータバスに接続されたメモリのうちどちらか一つから上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する第1の動作モードと、
    上記第3のデータバス又は上記第5のデータバスを介して上記第1乃至第4のメモリのうちいずれか一つから上記第1の演算回路へデータが供給され、上記第4のデータバス又は上記第6のデータバスを介して上記第1乃至第4のメモリのうち上記第1の演算回路へデータを供給していないメモリから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる、
    若しくは、上記第3のデータバスを介して上記第1のメモリ又は上記第2のメモリの一方、及び、上記第5のデータバスを介して上記第3のメモリ又は上記第4のメモリの一方から上記第1の演算回路へデータが供給され、上記第4のデータバスを介して上記第1のメモリ又は上記第2のメモリの他方、及び、上記第6のデータバスを介して上記第3のメモリ又は上記第4のメモリの他方から上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる第2の動作モードとを有することを特徴とするマイクロコンピュータ。
  29. 上記第1の動作モード及び上記第2の動作モードのいずれの動作モードであるかの情報を保持する手段を含んで成るモード設定回路を具備し、
    上記第1のメモリ及び上記第2のメモリは、上記モード設定回路が保持する情報に基づいて、データの伝達を上記第1のデータバス及び上記第3のデータバスで行うか、上記第2のデータバス及び上記第4のデータバスで行うかを選択し、
    上記第3のメモリ及び上記第4のメモリは、上記モード設定回路が保持する情報に基づいて、データの伝達を上記第1のデータバス及び上記第5のデータバスで行うか、上記第2のデータバス及び上記第6のデータバスで行うかを選択することを特徴とする請求項28に記載のマイクロコンピュータ。
  30. アドレス生成回路を含む中央処理回路と、
    上記アドレス生成回路からアドレス供給される第1のアドレスバス、第2のアドレスバス及び第3のアドレスバスと、
    上記第1のアドレスバス及び上記第2のアドレスバスに接続される第1のメモリと、
    上記第1のアドレスバス及び上記第2のアドレスバスに接続される第2のメモリと、
    上記第1のアドレスバス及び上記第3のアドレスバスに接続される第3のメモリと、
    上記第1のアドレスバス及び上記第3のアドレスバスに接続される第4のメモリと、
    上記第1のメモリ乃至上記第4のメモリに接続される第1のデータバスと、
    上記第2のメモリと上記第4のメモリに接続される第2のデータバスと、
    上記第1のメモリと上記第2のメモリに接続される第3のデータバスと、
    上記第2のメモリに接続される第4のデータバスと、
    上記第3のメモリと上記第4のメモリに接続される第5のデータバスと、
    上記第4のメモリに接続される第6のデータバスと、
    上記第1のデータバス、上記第3のデータバス及び上記第5のデータバスに接続された第1の演算回路と、
    上記第2のデータバス、上記第4のデータバス乃至上記第6のデータバスに接続された第2の演算回路とを具備して成り、
    上記第3のデータバス又は上記第5のデータバスに接続されたメモリのうちいずれか一つから上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する、
    若しくは、上記第3のデータバスに接続されたメモリのうちどちらか一つ及び上記第5のデータバスに接続されたメモリのうちどちらか一つから上記第1の演算回路へデータが供給され、上記第1の演算回路で演算動作が行われ、上記第2の演算回路は動作停止する第1の動作モードと、
    上記第3のデータバスを介して上記第1のメモリから上記第1の演算回路へデータが供給され、上記第4のデータバスを介して上記第2のメモリから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる、
    上記第5のデータバスを介して上記第3のメモリから上記第1の演算回路へデータが供給され、上記第6のデータバスを介して上記第4のメモリから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる、
    上記第3のデータバスに接続されたメモリのうちいずれか一つから上記第1の演算回路へデータが供給され、上記第5のデータバスに接続されたメモリのうちいずれか一つから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる、
    若しくは、上記第3のデータバスを介して上記第1のメモリ及び上記第5のデータバスを介して上記第3のメモリから上記第1の演算回路へデータが供給され、上記第4のデータバスを介して上記第2のメモリ及び上記第6のデータバスを介して上記第4のメモリから上記第2の演算回路へデータが供給され、上記第1の演算回路及び上記第2の演算回路で演算動作が行われる第2の動作モードとを有することを特徴とするマイクロコンピュータ。
  31. 上記第1のモード、上記第2のモードのいずれの場合にも、共通に用いられる命令セットを有することを特徴とする請求項27乃至請求項30のいずれかに記載のマイクロコンピュータ。
  32. 上記いずれの動作モードであるかの情報を保持する手段を有することを特徴とする請求項31に記載のマイクロコンピュータ。
  33. 上記命令セットは、上記保持する情報を書き換える命令を含むことを特徴とする請求項32に記載のマイクロコンピュータ。
JP34752797A 1997-12-17 1997-12-17 マイクロコンピュータ Expired - Fee Related JP3650519B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP34752797A JP3650519B2 (ja) 1997-12-17 1997-12-17 マイクロコンピュータ
US09/210,886 US6304958B1 (en) 1997-12-17 1998-12-15 Microcomputer having data execution units mounted thereon

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34752797A JP3650519B2 (ja) 1997-12-17 1997-12-17 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JPH11175339A JPH11175339A (ja) 1999-07-02
JP3650519B2 true JP3650519B2 (ja) 2005-05-18

Family

ID=18390837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34752797A Expired - Fee Related JP3650519B2 (ja) 1997-12-17 1997-12-17 マイクロコンピュータ

Country Status (2)

Country Link
US (1) US6304958B1 (ja)
JP (1) JP3650519B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6611796B1 (en) * 1999-10-20 2003-08-26 Texas Instruments Incorporated Method and apparatus for combining memory blocks for in circuit emulation
DE60133855D1 (de) * 2000-06-20 2008-06-19 Nxp Bv Datenverarbeitungsgerät
US20030007703A1 (en) * 2001-07-03 2003-01-09 Roylance Eugene A. Configurable image processing logic for use in image processing devices
GB2391336B (en) * 2002-04-09 2005-10-26 Micron Technology Inc Method and system for local memory addressing in single instruction, multiple data computer system
JP5423217B2 (ja) 2009-08-04 2014-02-19 富士通株式会社 演算処理装置、情報処理装置、および演算処理装置の制御方法
JP2012113508A (ja) * 2010-11-24 2012-06-14 Nec Fielding Ltd 浮動小数点演算回路、浮動小数点演算回路を備えたコンピュータ及びその演算制御方法と演算制御プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2610821B2 (ja) * 1986-01-08 1997-05-14 株式会社日立製作所 マルチプロセツサシステム
JP2550213B2 (ja) * 1989-07-07 1996-11-06 株式会社日立製作所 並列処理装置および並列処理方法
JPH0394328A (ja) 1989-09-07 1991-04-19 Fujitsu Ltd 乗算器
US5590365A (en) 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
JP2902041B2 (ja) 1990-03-30 1999-06-07 株式会社東芝 浮動小数点数演算装置
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
JPH0683624A (ja) 1992-09-03 1994-03-25 Matsushita Electric Ind Co Ltd プロセッサの制御方法およびプロセッサ
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
JP3532975B2 (ja) * 1993-09-27 2004-05-31 株式会社ルネサステクノロジ マイクロコンピュータおよびそれを用いて命令を実行する方法
JP3251421B2 (ja) * 1994-04-11 2002-01-28 株式会社日立製作所 半導体集積回路
US5867726A (en) * 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs

Also Published As

Publication number Publication date
US6304958B1 (en) 2001-10-16
JPH11175339A (ja) 1999-07-02

Similar Documents

Publication Publication Date Title
JP3655403B2 (ja) データ処理装置
EP1001335B1 (en) Data processing unit with coprocessor interface
TWI541658B (zh) 資料處理裝置及半導體積體電路裝置
JPH09311786A (ja) データ処理装置
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
JPH03282904A (ja) プログラマブルコントローラ
US8145804B2 (en) Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor
JP3694531B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
JPH04233640A (ja) メモリ拡張スキームを切り替える疑似直線バンクを有するマイクロコントローラ
JP2001202243A (ja) データ処理装置
JP2006099232A (ja) 半導体信号処理装置
JPH03216776A (ja) 集積回路装置及びそれにより構成されたマイクロプロセッサ
JP3650519B2 (ja) マイクロコンピュータ
US5442769A (en) Processor having general registers with subdivisions addressable in instructions by register number and subdivision type
KR20010072491A (ko) 산술 논리 유닛 및 스택을 가지는 데이터 프로세서,멀티미디어 장치 및 컴퓨터 프로그램 제품
JP3479385B2 (ja) 情報処理装置
JP3705811B2 (ja) 再構成可能なプログラム状態語を有するマイクロコントローラ
US5742842A (en) Data processing apparatus for executing a vector operation under control of a master processor
JP2690406B2 (ja) プロセッサおよびデータ処理システム
EP1221648A1 (en) Bypass circuitry for use in a pipelined processor
JPH096614A (ja) データ処理装置
JPH11307725A (ja) 半導体集積回路
EP1220092B1 (en) System and method for executing variable latency load operations in a data processor
US5278959A (en) Processor usable as a bus master or a bus slave
JP2011192305A (ja) 半導体信号処理装置

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20040308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050218

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080225

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090225

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees