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

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

Info

Publication number
JP3727395B2
JP3727395B2 JP34744195A JP34744195A JP3727395B2 JP 3727395 B2 JP3727395 B2 JP 3727395B2 JP 34744195 A JP34744195 A JP 34744195A JP 34744195 A JP34744195 A JP 34744195A JP 3727395 B2 JP3727395 B2 JP 3727395B2
Authority
JP
Japan
Prior art keywords
data
instruction
address
bus
dsp
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 - Lifetime
Application number
JP34744195A
Other languages
English (en)
Other versions
JPH0922379A (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
Priority to TW085114414A priority Critical patent/TW432326B/zh
Priority to TW084113247A priority patent/TW424192B/zh
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP34744195A priority patent/JP3727395B2/ja
Priority to US08/630,320 priority patent/US5867726A/en
Priority to DE69625256T priority patent/DE69625256T2/de
Priority to EP00109692A priority patent/EP1028382B1/en
Priority to DE69614442T priority patent/DE69614442T2/de
Priority to EP96302800A priority patent/EP0741358B1/en
Priority to KR1019960014100A priority patent/KR100439367B1/ko
Publication of JPH0922379A publication Critical patent/JPH0922379A/ja
Priority to US09/229,147 priority patent/US6434690B1/en
Priority claimed from US09/229,147 external-priority patent/US6434690B1/en
Priority to US09/291,910 priority patent/US6405302B1/en
Priority to US10/201,402 priority patent/US7069423B2/en
Priority to KR1020040017948A priority patent/KR100440841B1/ko
Application granted granted Critical
Publication of JP3727395B2 publication Critical patent/JP3727395B2/ja
Priority to US11/354,622 priority patent/US7363466B2/en
Priority to US12/075,131 priority patent/US7558944B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7857Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using interleaved memory
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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, look ahead
    • G06F9/3824Operand accessing

Description

【0001】
【発明の属する技術分野】
本発明はセントラルプロセッシングユニットとディジタル信号処理ユニットとを有する半導体集積回路化された論理LSIに係り、高速演算処理を要するマイクロコンピュータに適用して有効な技術に関する。
【0002】
【従来の技術】
算術論理演算器と共に乗算器を同一チップに搭載したマイクロコンピュータについて記載されたものの例としては特願平4−296778号又は米国特許出願第145157号がある。これによればマイクロコンピュータのようなロジックLSIチップは、セントラルプロセッシングユニット、バス、メモリ、乗算器を供え、特にメモリからデータを読み出す間に、該読出しデータに関する乗算命令のコマンドをセントラルプロセッシングユニットから乗算器へ転送するコマンド信号線を有する。その結果、セントラルプロセッシングユニットがメモリからデータを読み出す間に、読み出しデータに関する乗算命令のコマンドをセントラルプロセッシングユニットから乗算器へ転送するので、メモリと乗算器との間で直接データを転送することが可能になる。
【0003】
【発明が解決しようとする課題】
本発明者らはセントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載してディジタル信号処理を高速化することについて検討した。このとき、前記従来技術はメモリから乗算器へ直接データを転送可能にしている点において乗算処理の高速化を実現しているが、セントラルプロセッシングユニットによる命令実行のパイプライン処理を想定したとき、セントラルプロセッシングユニットが実行すべき命令のフェッチサイクルと乗算処理のためのメモリアクセスサイクルとが競合するような事態に対しては考慮されていなかった。また、加算や乗算のための複数のオペランドを並列的にメモリから読み出して演算処理の高速化を図る点についても考慮されていない。更にその場合には、セントラルプロセッシングユニットによる外部アクセスとの関係も考慮しなければ、マイクロコンピュータの使い勝手が悪くなることが見出された。また、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載する場合、CPU命令とDSP命令とのコード割り当てやDSP命令のフォーマットを工夫することも、命令デコード回路などの論理規模の増大を極力抑える上においては必要であることが見出された。
【0004】
本発明の目的は、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載してディジタル信号処理を高速化することにある。本発明の別の目的は、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載したとき、その物理的な規模の増大を極力抑えることである。
【0005】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0006】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0007】
すなわち、マイクロコンピュータは、セントラルプロセッシングユニット(2)と、該セントラルプロセッシングユニットから選択的にアドレスが伝達される第1乃至第3のアドレスバス(IAB,YAB,XAB)と、前記第1のアドレスバス(IAB)及び第2のアドレスバス(YAB)に接続され、セントラルプロセッシングユニットからのアドレスによってアクセスされる第1のメモリ(5,7)と、前記第1のアドレスバス(IAB)及び第3のアドレスバス(XAB)に接続され、セントラルプロセッシングユニットからのアドレスによってアクセスされる第2のメモリ(4,6)と、前記第1及び第2のメモリと前記セントラルプロセッシングユニットとに接続されてデータが伝達される第1のデータバス(IDB)と、前記第1のメモリに接続されてデータが伝達される第2のデータバス(YDB)と、前記第2のメモリに接続されてデータが伝達される第3のデータバス(XDB)と、前記第1のアドレスバスと第1のデータバスに接続された外部インタフェース回路(12)と、第1乃至第3のデータバスに接続されセントラルプロセッシングユニットに同期動作されるディジタル信号処理ユニット(3)と、前記ディジタル信号処理ユニットの動作を制御するDSP制御信号(20)をセントラルプロセッシングユニットからディジタル信号処理ユニットに伝達する制御信号線とを1チップに含んで半導体集積回路化されて成る。
【0008】
上記した手段によれば、内蔵メモリは、ディジタル信号処理プロセッサ(3)による積和演算を考慮して第1のメモリ(5,7)と第2のメモリ(4,6)に2面化され、セントラルプロセッシングユニット(2)が第1のメモリと第2のメモリを第3のバス(XAB,XDB)と第2のバス(YAB,YDB)によってそれぞれ並列的にアクセス可能にされている。これにより、内蔵メモリから2個のデータを同時にディジタル信号処理ユニットに転送可能にされる。さらに、第3のバス(XAB,XDB)と第2のバス(YAB,YDB)は、外部にインタフェースされる第1のバス(IAB,IDB)とも個別化されているので、セントラルプロセッシングユニットは第2のメモリ(4,6)と第1のメモリ(5,7)のアクセスに並行して外部メモリアクセスも可能にされる。このように、それぞれセントラルプロセッシングユニット(2)に接続された第1乃至第3の3種類のアドレスバス(IAB,XAB,YAB)及びデータバス(IDB,XDB,YDB)があるために、当該3種類の内部バスを使用して同一クロックサイクルで異なるメモリアクセス動作を実行することが可能である。したがって、プログラムやデータが外部メモリに存在する場合にも容易に対応して演算処理の高速化を実現できる。
【0009】
マイクロコンピュータの使い勝手を向上させるには、前記第1のメモリと第2のメモリの夫々をRAMとROMから構成するとよい。
【0010】
前記セントラルプロセッシングユニットにおける積和演算などの繰返し演算のためのアドレス生成の高速化のためには、セントラルプロセッシングユニットはモジュロアドレス出力部(200)を備えるとよい。このとき、モジュロアドレス出力部で生成されたアドレスは前記第2又は第3のアドレスバスに選択的に出力可能にすることが望ましい。
【0011】
前記ディジタル信号処理プロセッサは、第1乃至第3のデータバス(IDB,YDB,XDB)と個別的にインタフェースされる第1乃至第3のデータバッファ手段(MDBI,MDBY,MDBX)と、夫々のデータバッファ手段に内部バスを介して接続可能にされた複数のレジスタ手段(305〜308)と、前記内部バスに接続された乗算器(304)及び算術論理演算器(302)と、前記DSP制御信号をデコードして前記データバッファ手段、乗算器、算術論理演算器、及びレジスタ手段の動作を制御するデコーダ(34)とを含んで構成することができる。
【0012】
命令デコードという点に着目したとき、マイクロコンピュータは、セントラルプロセッシングユニット(2)と、前記セントラルプロセッシングユニットによってアクセス制御されるメモリ(4〜7)と、前記メモリ及び前記セントラルプロセッシングユニットとの間でデータが伝達されセントラルプロセッシングユニットに同期動作されるディジタル信号処理ユニット(3)とを1チップに含んで半導体集積回路化される。このマイクロコンピュータによって実行可能な命令セットは、セントラルプロセッシングユニット(2)が実行すべきCPU命令と、データフェッチのためのアドレス演算等の一部の処理をセントラルプロセッシングユニットに負担させてディジタル信号処理ユニット(3)が実行すべきDSP命令とを含む。前記セントラルプロセッシングユニットは、前記データバスを介して16ビット固定長のCPU命令と、16ビット又は32ビット長のDSP命令とをフェッチする命令レジスタ(25)と、前記命令レジスタにフェッチされた命令の一部の複数ビットに基づいて、CPU命令とDSP命令とを識別し、識別結果に応じて、前記ディジタル信号処理ユニットの動作制御のためのDSP制御信号(20)とセントラルプロセッシングユニットの動作制御のためのCPU制御信号とを生成するデコーダ(24)とを含んで構成することができる。
【0013】
例えば、CPU命令は命令コードの最上位4ビットが”0000”〜”1110”とされる範囲に割り当てられている。DSP命令は、命令コードの最上位4ビットが”1111”とされる範囲に割り当てられている。さらに命令コードの最上位6ビットが”111100”及び”111101”の範囲にに割り当てられた命令は、DSP命令でも16ビット長の命令コードとされる。命令コードの最上位6ビットが”111110”の命令は、32ビット長の命令コードとされる。命令コードの最上位6ビットが”111111”の範囲には命令を割り当てておらず、その範囲を未使用領域とする。このように、最大32ビットの命令に対するコード割り当てに上記のような規則を設けることにより、各命令コードの一部例えば最上位側6ビットをデコードすれば、当該命令がCPU命令であるか、16ビット長のDSP命令であるか、32ビット長のDSP命令であるかを、小さな論理規模のデコーダで判定することができ、常に32ビット全部を一度にデコードすることを要しない。
【0014】
前記デコーダは、命令レジスタの上位16ビットをデコードして前記CPUデコード信号(243)及びDSPデコード信号(244)を生成する第1のデコード回路(240)と、第1のデコード回路にて32ビット長のDSP命令を識別したときには命令レジスタの下位16ビットをコード化した信号を、それ以外の命令を識別したときには出力が無効であることを意味するコードを出力するコード変換回路(242)とを含み、前記DSPデコード信号及びコード変換回路の出力をDSP制御信号(20)とする。
【0015】
DSP命令の命令フォーマットの点に着目したとき、マイクロコンピュータは、セントラルプロセッシングユニット(2)と、前記セントラルプロセッシングユニットに同期動作されるディジタル信号処理ユニット(3)と、前記セントラルプロセッシングユニット及び前記ディジタル信号処理ユニットが共通接続された内部バス(IDB)とを含んで半導体集積回路化され、前記セントラルプロセッシングユニットは、ディジタル信号処理ユニットとの間でのデータ転送を当該セントラルプロセッシングユニットに対して規定する第1のコード領域(図18に例示される16ビットDSP命令のビット9〜ビット0)を有する第1フォーマットの命令と、前記第1のコード領域と同一フォーマットの第2のコード領域(図20、図21に例示される32ビットのDSP命令のAフィールド)を有すると共に、当該第2のコード領域で規定された転送データを用いた演算処理をディジタル信号処理ユニットに対して規定する第3のコード領域(図20、図21に例示される32ビットのDSP命令のBフィールド)を有する第2フォーマットの命令とを実行するための実行制御手段を備えて成る。
【0016】
これにより、実行制御手段は、第1及び第2フォーマットの夫々の命令を実行するとき、第1のコード領域と第2のコード領域に対して共通のデコード論理を持つデコード手段を採用でき、マイクロコンピュータの論理規模の縮小に寄与する。
【0017】
前記第1フォーマットの命令及び第2フォーマットの命令は、それが第1フォーマットか第2フォーマットかを示すための第4コード領域(例えば16ビットDSP命令におけるビット15〜ビット10、32ビットDSP命令におけるビット32〜ビット26)を有する。
【0018】
前記実行制御手段は、前記第1フォーマットの命令と第2フォーマットの命令に共通に用いられる命令レジスタ(25)と、前記命令レジスタにフェッチされた命令に含まれる前記第1のコード領域と第4のコード領域又は第2のコード領域と第4のコード領域をデコードするデコード手段(240)と、そのデコード結果に従ってアドレス演算を行い、前記データ転送制御を行う実行手段とを含んで構成することができる。
【0019】
前記命令レジスタは、前記第1のコード領域と第4のコード領域又は第2のコード領域と第4のコード領域の保持に共用される上位領域(UIR)と、前記第3のコード領域の保持に利用される下位領域(LIR)とを有し、前記デコード手段は、前記第4のコード領域のデコード結果に基づいて、前記命令レジスタが第2フォーマットの命令を保持したことを示す制御信号(248)を出力し、その制御信号に基づいて、前記下位領域から第3のコード領域のコードデータを前記ディジタル信号処理ユニットに向けて供給する手段(242,242A,242B)を含むことができる。
【0020】
【発明の実施の形態】
図1には本発明の一実施例に係るマイクロコンピュータ1の全体的なブロック図が示される。同図に示されるマイクロコンピュータは半導体集積回路製造技術によって単結晶シリコンのような1個の半導体基板に形成されている。マイクロコンピュータ1は、セントラルプロセッシングユニットとしてのCPUコア(CPU Core)2、ディジタル信号処理ユニットとしてのDSPエンジン(DSP Engine)3、X-ROM4、Y-ROM5、X-RAM6、Y-RAM7、割り込みコントローラ(Interrupt Controller)8、バスステートコントローラ(Bus State Conttroller)9、内蔵周辺回路(Peripheral Circuit)10、11、外部メモリインターフェース(External Memory Interface)12、クロックパルスジェネレータ(CPG)13より構成されている。前記X-ROM4,Y-ROM5は命令若しくは定数データ等を格納するための読み出し専用又は電気的に書き換え可能なリード・オンリ・メモリであり、X-RAM6,Y-RAM7はデータの一時格納若しくはCPUコア2とDSPエンジン3の作業領域などとして利用されるランダム・アクセス・メモリである。前記X-ROM4とX-RAM6を内部命令/データ用のXメモリ(Internal Instrucution/Data X Mem.)と総称し、Y-ROM5とY-RAM7を内部命令/データ用のYメモリ(Internal Instrucution/Data Y Mem.)と総称する。
【0021】
本実施例のマイクロコンピュータ1はそのバス構成として、外部メモリインタフェース12に結合される内部アドレスバスIAB及び内部データバスIDB、外部メモリインタフェース12に結合されない内部アドレスバスXAB及び内部データバスXDB、外部メモリインタフェース12に結合されない内部アドレスバスYAB及び内部データバスYDB、そして内蔵周辺回路10,11のための周辺アドレスバスPAB及び周辺データバスPDBを備える。尚、コントロールバスについては図示を省略してあるが、アドレスバス及びデータバスの対に対応してそれぞれ設けられている。
【0022】
CPUコア2には、外部メモリインターフェース12を通してチップ外部に接続可能なデータバスIDBが接続され、割り込みコントローラ8からの割り込み信号80が与えられる。CPUコア2はDSPエンジン3を制御するための制御信号20をDSPエンジン3に供給する。さらにCPUコア2は、外部メモリインターフェース12を通してチップ外部に接続可能なアドレスバスIABと外部メモリインターフェース12には接続されていないアドレスバスXAB,YABにアドレス信号を出力する。CPUコア2は、クロックパルスジェネレータ(CPG)13から出力されるノンオーバーラップ2相のクロック信号Clock1,Clock2を動作基準クロック信号として動作される。CPUコア2についてはその詳細を後述するが、図1のCPUコア2には、レジスタファイル21、算術論理演算器(ALU)22、アドレス加算器(Add-ALU)23、デコーダ24、命令レジスタ(IR)25が代表的に図示されている。レジスタファイル21はアドレスレジスタやデータレジスタとして任意に利用され、また、プログラムカウンタ、そしてコントロールレジスタなどを含む。デコーダ24は命令レジスタ25にフェッチされた命令をデコードして内部制御信号(図1には図示を省略)及び制御信号20を生成する。命令レジスタ(IR)25は、それぞれ16ビットの上位側領域(UIR)と下位側領域(LIR)から成る。詳細については後述するが、下位側領域(LIR)の値は選択的に上位側領域(UIR)にシフト可能にされている。尚、割込み等の例外発生時の命令実行手順を制御したり、例外発生に対する内部状態の退避復帰をハードウェア的に制御したりするためのシーケンス制御回路は図示を省略してある。
【0023】
DSPエンジン3は前記データバスIDB,XDB,YDBに接続され、クロック信号Clock1,Clock2を動作基準クロック信号として動作される。DSPエンジン3についてはその詳細を後述するが、図1のDSPエンジン3には、データレジスタファイル31、算術論理演算器及びシフタ(ALU/Shifter)32、乗算器(MAC)33、及びデコーダ34が代表的に図示されている。データレジスタファイル31は積和演算等に利用される。デコーダ34はCPUコア2から与えられる制御信号20をデコードして、DSPエンジン3の内部制御信号(図1には図示を省略)を生成する。
【0024】
X-ROM4及びX-RAM6はアドレスバスIAB,XABとデータバスIDB,XDBに接続されている。Y-ROM5及びY-RAM7はアドレスバスIAB,YABとデータバスIDB,YDBに接続されている。内蔵メモリは、DSPエンジン3による積和演算を考慮してXメモリ4,6とYメモリ5,7に2面化され、内部バスXAB,XDBとYAB,YDBによってそれぞれ並列的にアクセス可能にされている。さらに、内部バスXAB,XDBとYAB,YDBは外部にインタフェースされるバスIAB,IDBとも個別化されているので、Xメモリ4,6とYメモリ5,7のアクセスに並行して外部メモリアクセスも可能にされる。Xメモリ4,6及びYメモリ5,7はDSPエンジン3による積和演算のためのデータ一時記憶領域、定数データの記憶領域などとして利用される。尚、X−RAM,Y−RAMはCPUコア2のデータ一時記憶領域若しくはワーク領域としても利用可能であることは言うまでもない。
【0025】
前記割り込みコントローラ8は、内蔵周辺回路10,11などからの割り込み要求信号(Interrupts)81を入力し、各種割込み要求に対する優先順位付けや割込み要求に対するマスキングのための情報に従って割込み要求を調停して受け付け、受け付けた割込み要求に応ずる割り込みベクタ(Interrupt Vector)82をアドレスバスIABに出力し、さらに割り込み信号80をCPUコア2に出力する。
【0026】
バスステートコントローラ9はアドレスバスIAB,PABとデータバスIDB,PDBに接続され、アドレスバスPAB及びデータバスPDBに接続されている内蔵周辺回路10,11とCPUコア2とのインタフェース制御を行う。
【0027】
外部メモリインターフェース12は、アドレスバスIABとデータバスIDBに接続され、マイクロコンピュータ1のチップ外部の図示を省略したアドレスバスとデータバスに接続され、外部とのインタフェース制御を行う。
【0028】
図2にマイクロコンピュータ1のアドレスマップの一例が示される。本実施例のマイクロコンピュータ1は32ビットで規定されるアドレス空間を管理する。前記アドレスバスIABはビット幅が32ビットとされる。そのアドレス空間の中には、例外処理ベクタ領域、X-ROM空間(X−ROM4に割り当てられたアドレス空間)、X-RAM空間(X−RAM7に割り当てられたアドレス空間)、Y-ROM空間(Y−ROM5に割り当てられたアドレス空間)、Y-RAM空間(Y−RAM7に割り当てられたアドレス空間)、内蔵周辺回路割付け空間(内蔵周辺回路10,11が割り当てられたアドレス空間)などが存在する。図2の例はX-ROM4は24KB、X-RAM6は4KB、Y-ROM5は24KB、Y-RAM7は4KBが割り当てられている。
【0029】
図2に従えば、16進数表記でH'00000000〜H'000003FFの空間の256B領域には例外処理ベクタ領域が割り付けられている。H'00000400〜H'01FFFFFFにはユーザによって使用可能な通常空間が割り付けられている。通常空間はマイクロコンピュータ1の外部に接続可能なメモリ領域とされる。H'02000000〜H'02005FFFには、X-ROM空間が割り付けられている。H'02006000〜H'02006FFFには、X-RAM空間が割り付けられている。H'02007000〜H'02007FFFはX-RAM_Mirror空間となっており、ここをアクセスすると実際にはH'02006000〜H'02006FFFのX-RAM空間をアクセスすることになる。H'02008000〜H'0200FFFFは、X-RAM,RAM_Mirror空間となっており、ここをアクセスすると実際にはH'02000000〜H'02007FFFのX-ROM空間およびX-RAM空間をアクセスすることになる。H'02010000〜H'02015FFFには、Y-ROM空間が割り付けられている。H'02016000〜H'02016FFFには、Y-RAM空間が割り付けられている。H'02017000〜H'02017FFFはY-RAM_Mirror空間となっており、ここをアクセスすると実際にはH'02016000〜H'02016FFFのY-RAM空間をアクセスすることになる。H'02018000〜H'0201FFFFは、Y-ROM,RAM_Mirror空間となっており、ここをアクセスすると実際にはH'02010000〜H'02017FFFのY-ROM空間およびY-RAM空間をアクセスすることになる。H'02020000〜H'07FFFFFFFには、通常空間が割り付けられている。H'08000000〜H'1FFFFFFFFには、予約領域が割り付けられている。この予約領域は、ユーザチップ(実チップ)の場合にはアクセス不可能になっており、エバチップ(エミュレーションなどに利用される評価用チップ)の場合にはASE空間(エミュレーション用の制御空間)領域として割り当てられる。H'20000000〜H'27FFFFFFFには、通常空間が割り付けられている。H'28000000〜H'FFFFFDFFには、予約領域が割り付けられている。H'FFFFFE00〜H'FFFFFFFFには 内蔵周辺回路のレジスタアドレス値を割り付ける内蔵周辺回路割り付け領域が割り付けられている。
【0030】
図3にはモジュロアドレス出力部を詳細に示したCPUコア2のブロック図が示される。図3において破線で囲った部分がモジュロアドレス出力部200である。モジュロアドレス出力部200は、モジュロアドレスレジスタ(例えばA0X)より出力した値をバッファ(例えばMABX)を通してアドレスバス(例えばXAB)に出力すると同時に、モジュロアドレスレジスタ(A0X)より出力した値を加算手段(例えばALU)で加算して再びモジュロアドレスレジスタ(A0X)に格納するアドレス更新出力動作などを行う回路ブロックであり、積和演算のような繰返し演算のためのデータアクセスアドレスを順次更新して生成する。ランダムロジック回路(Random Logic Circuit)201と記載された回路ブロックは、図1のデコーダ24や前記シーケンス制御回路、そしてコントロールレジスタやステータスレジスタなどを含む回路ブロックである。
【0031】
図3においてC1,C2,DR,A1,B1,A2,B2,DWはそれぞれCPUコア2内部の代表的に示されたバスである。CPUコア2とデータバスIDBとのインタフェースは前記命令レジスタ(IR)25及びデータバッファ(Data Buffer)203にて行われる。命令レジスタ(IR)25にフェッチされた命令はランダムロジック回路(Random Logic Circuit)201に含まれる前記デコーダ24等に供給される。CPUコア2とアドレスバスIABとのインタフェースはプログラムカウンタ(PC)204及びアドレスバッファ(Address Buffer)205で行われる。CPUコア2とアドレスバスXABとのインタフェースはメモリアドレスバッファ(MABX)206で行われ、CPUコア2とアドレスバスYABとのインタフェースはメモリアドレスバッファ(MABY)207で行われる。アドレスバッファ205へのアドレス情報の入力経路は、バスC1,A1,A2の中から選択可能にされ、メモリアドレスバッファ206,207へのアドレス情報の入力経路は、バスC1,C2,A1,A2の中から選択可能にされる。算術演算器(AU)208はプログラムカウンタ204の値のインクリメントに利用される。209は汎用レジスタ(Reg.)、210はアドレスのインデックス修飾に利用されるインデックスレジスタ(Ix)、211は同じくインデックス修飾に利用されるインデックスレジスタ(Iy)、212はアドレス演算専用の加算器(PAU)、213は算術論理演算器(ALU)である。
【0032】
制御ビットMXYはアドレスバスXAB又はアドレスバスYABのどちらのアドレスに対しモジュロ演算を行うかを指定し、論理値”1”によってアドレスバスXABを、論理値”0”によってアドレスバスYABを指定する。制御ビットDMはモジュロ演算を行うか否かを指示し、論理値”1”によってモジュロ演算を行うことを指示し、論理値”0”によってモジュロ演算を行わないことを指示する。モジュロスタートアドレスレジスタ(MS)214はモジュロ演算開始アドレスを格納し、モジュロエンドアドレスレジスタ(ME)215はモジュロ演算終了アドレスを格納する。
【0033】
モジュロアドレスレジスタ(A0x,A1x)216は現在のモジュロアドレスを格納するカレントアドレスレジスタ、217はモジュロエンドアドレスレジスタ(ME)215の値とモジュロアドレスレジスタ(A0x,A1x)216の値とを比較するコンパレータ(CMP)、218はコンパレータ217の出力と制御ビットMXY,DMの3入力に対して論理積を採るアンドゲート、219はバスC1の値とモジュロスタートアドレスレジスタ(MS)214の値とを選択するセレクタであり、それらはアドレスバスXABに関するモジュロ演算に利用される。セレクタ219はアンドゲート218の論理値”1”出力によってレジスタ(MS)214の値を選択し、選択した値をモジュロアドレスレジスタ(A0x,A1x)216に与える。モジュロアドレスレジスタ216はA0x又はA1xの何れかが選択されて利用される。
【0034】
モジュロアドレスレジスタ(A0y,A1y)226は現在のモジュロアドレスを格納するカレントアドレスレジスタ、227はモジュロエンドアドレスレジスタ(ME)215の値とモジュロアドレスレジスタ(A0y,A1y)216の値とを比較するコンパレータ(CMP)、228はコンパレータ227の出力と制御ビットMXYの反転ビットと制御ビットDMとの3入力に対して論理積を採るアンドゲート、229はバスC2の値とモジュロスタートアドレスレジスタ(MS)214の値とを選択するセレクタであり、それらはアドレスバスYABに関するモジュロ演算に利用される。セレクタ229はアンドゲート228の論理値”1”出力によってレジスタ(MS)214の値を選択し、選択した値をモジュロアドレスレジスタ(A0y,A1y)226に与える。モジュロアドレスレジスタ226はA0y又はA1yの何れかが選択されて利用される。
【0035】
尚、ランダムロジック回路201に記載されたOP Codeは命令レジスタ25から供給される命令コードを意味し、CONSTは定数値を意味する。
【0036】
ここで、CPUコア2におけるモジュロ演算動作として、例えば、モジュロアドレスレジスタ(A0x)216を用いて、アドレスバスXABへ供給すべきアドレス情報をモジュロ演算にて生成する動作を説明する。
【0037】
先ず、モジュロ演算開始アドレスがモジュロスタートアドレスレジスタ(MS)214に、モジュロ演算終了アドレスがモジュロエンドアドレスレジスタ(ME)215にそれぞれ書き込まれる。モジュロアドレスレジスタ(A0x)にはモジュロ演算を開始するアドレス値が書き込まれる。次にアドレスバスXABのアドレスに対しモジュロ演算を行うので、XAB、YABのどちらのアドレスに対しモジュロ演算を行うかを決定する制御ビットMXYに対し論理値”1”が書き込まれる(アドレスバスYABに対しモジュロ演算を行う場合は、制御ビットMXYに論理値”0”が書き込まれる)。最後にモジュロ演算を行うか否かを判定する制御ビットDMに論理値”1”が書き込まれる。
【0038】
モジュロ演算命令は例えば、MOVS.W @Ax, Dxとされる。この命令記述において、Axはモジュロアドレスレジスタ(A0x)216又はモジュロアドレスレジスタ(A1x)216とされ、DxはDSPエンジン3内のレジスタに対応する。図3にはDxは図示されていない。上記モジュロ演算命令が実行されると、モジュロアドレスレジスタ(A0x)216より値が読み出され、メモリアドレスバッファ(MABX)206及び算術論理演算器(ALU)213に入力される。メモリアドレスバッファ(MABX)206に入力された値はそのままアドレスバスXABに出力されて、XROM4またはXRAM6のアドレスを指定する。一方、算術論理演算器(ALU)213に入力されたモジュロアドレスレジスタ(A0x)216の値は、インデックスレジスタ(Ix)210の値又は定数(Const)が加算される。インデックスレジスタ(Ix)210との加算を行なう場合は、命令MOVS.W @(Ax, Ix), Dx等を実行したときであり、定数加算される場合は命令MOVS.W @Ax, Dx等を実行したときである。その加算結果は算術論理演算器(ALU)213より出力される。算術論理演算器(ALU)213より出力された値は、セレクタ219に入る。このセレクタ219のもう一方の入力は、モジュロスタートアドレスレジスタ(MS)214に格納されているモジュロ演算開始アドレスである。
【0039】
セレクタ219の出力が算術論理演算器(ALU)213の出力になるか、モジュロスタートアドレスレジスタ(MS)214の値になるかは、次のようにして決定される。モジュロアドレスレジスタ(A0x)216の値とモジュロエンドアドレスレジスタ(ME)215の値は、コンパレータ(CMP)217で常に比較されており、一致すればコンパレータ(CMP)217より論理値”1”が出力され、不一致ならば論理値”0”が出力される。コンパレータ(CMP)217より出力された値は、制御ビットDM,MXYと共にアンドゲート218で論理積が採られ(この例の場合、DM、MXY共に論理値”1”なので、コンパレータ217の値がそのままアンドゲート218から出力される。)、セレクタ219に入力される。セレクタ219は、アンドゲート218より入力される値が論理値”1”の場合にモジュロスタートアドレスレジスタ(MS)214の値を選択し、論理値”0”の場合には算術論理演算器(ALU)213からの出力値を選択する。
【0040】
アンドゲート218より入力される値が論理値”0”の間は、算術論理演算器(ALU)213からの出力値を選択し続けるため、アドレスバスXABに出力される値は、順次更新されていく。モジュロエンドアドレスレジスタ(ME)215の値とモジュロアドレスレジスタ(A0x)216の値とが一致すると、アンドゲート218からセレクタ219に入力される値が論理値”1”になり、モジュロスタートアドレスレジスタ(MS)214の値を選択する。それによって、モジュロアドレスレジスタ(A0x)216はモジュロスタートアドレスレジスタ(MS)214の値によって初期化される。
【0041】
上記モジュロ演算の説明では、モジュロアドレスレジスタ(A0x)216を利用したときの動作を説明をしたが、モジュロ演算命令MOVS.W @Ax, DxにおけるAxをモジュロアドレスレジスタ(A1x)216に指定することも可能である。また制御ビットMXYに論理値”0”を指定すれば、アドレスバスYABに対してモジュロ演算が可能になる。この場合、モジュロ演算命令MOVS.W @Ax, DxにおけるAxを、モジュロアドレスレジスタ(A0y)226又は(A1y)226を指定するための値Ayに変更しなければならない。また制御ビットDMに0を指定すれば、モジュロ演算の実行を禁止することもできる。
【0042】
図4にはDSPエンジン3の一例ブロック図が示される。ランダムロジック回路(Random Logic Circuit)301と記載された回路ブロックは、図1のデコーダ34や制御回路、そしてコントロールレジスタやステータスレジスタなどを含む回路ブロックである。その他にDSPエンジン3は、算術論理演算器(ALU)302、シフタ(SFT)303、乗算器(MAC)304、レジスタ(Reg.)305、レジスタ(A0,A1)306、レジスタ(Y0,Y1)307、レジスタ(X0,X1)308、メモリデータバッファ(MDBI)309、メモリデータバッファ(MDBX)310、メモリデータバッファ(MDBY)311を備える。メモリデータバッファ(MDBY)311はデータバスYDBとバスD2を接続する。メモリデータバッファ(MDBX)310はデータバスXDBとバスD1を接続する。メモリデータバッファ(MDBI)309はデータバスIDBとバスC1,D1,A1,B1に接続している。乗算器(MAC)304はバスA1及びB1よりデータを入力し、それに対する乗算結果をバスC1及びD1に出力する。シフタ(SFT)303はバスA2よりデータを入力し、シフト演算結果をバスC2に出力する。算術論理演算器(ALU)302はバスA2及びB2よりデータを入力し、演算結果をバスC2に出力する。
【0043】
図5にはマイクロコンピュータ1の命令セットに含まれる命令のフォーマット及び命令コードの一例が示される。マイクロコンピュータ1は、CPU命令とDSP命令の2種類の命令をサポートしている。CPU命令の全てとDSP命令の一部は、16ビット長の命令コードであり、残りのDSP命令は32ビット長の命令コードになっている。CPU命令とは、DSPエンジン3を動作させることなく専らCPUコア2によって実行される命令である。DSP命令とは、アドレス演算若しくはオペランドアクセスなどの一部の処理をCPUコア2に負担させてDSPエンジン3が実行する命令である。
【0044】
CPU命令は命令コードの最上位側の4ビットが”0000”〜”1110”までの空間に命令が割り当てられている。DSP命令は、命令コードの最上位側の4ビットが”1111”に全て割り当てられている。さらに命令コードの最上位側の6ビットが”111100”及び”111101”に割り当てられた命令は、DSP命令でも16ビット長の命令コードになっている。命令コードの最上位側の6ビットが”111110”の命令は、32ビット長の命令コードになっている。命令コードの最上位側の6ビットが”111111”の空間には命令を割り当てておらず、未使用領域(未定義命令領域)となっている。将来この領域を利用して命令コードを更に拡張することができる。この命令フォーマットより明らかなように、各命令コードの最上位側の6ビットをデコードすれば、当該命令がCPU命令であるか、16ビット長のDSP命令であるか、32ビット長のDSP命令であるか、未定義命令であるかの判定を、小さな論理規模のデコーダで行うことができる。図5のCPU命令フォーマットにおいて、nnnnはディスティネーションオペランドの指定領域、ssssはソースオペランドの指定領域、ddddはディスプレースメントの指定領域、iiiiiiiiはイミディエイト値の指定領域である。尚、ADD命令などの場合は、nnnnもソースオペランドの指定領域とされ、演算結果はnnnnに格納される。また、図3に基づいて説明した前記モジュロ演算命令は、図5の命令MOVS.W @R2,A0に対応されるが、図5における命令記述はオペランド指定の記述形態が図3で説明した内容と相違されている。これは単なる形式の相違であり、実質は同じである。
【0045】
図6にはCPUコア2のデコーダ24とDSPエンジン3のデコーダ34との接続構成例が示される。マイクロコンピュータ1による命令フェッチは32ビット単位で命令レジスタ(IR)25に行われる。デコーダ24は第1のデコード回路240、第2のデコード回路241、及びコード変換回路242を備える。第1のデコード回路240は命令レジスタ(IR)25の上位側16ビットの領域(UIR)の値をデコードして、当該命令がCPU命令か、16ビットのDSP命令か、32ビットのDSP命令かに応じて、CPUデコード信号243、DSPデコード信号244、コード変換制御信号245、及びシフト制御信号246を生成する。第2のデコード回路241はCPUデコード信号243をデコードして、CPUコア2内部の演算器やレジスタ選択などを行う各種内部制御信号(CPU制御信号)247を生成する。コード変換回路242は、コード変換制御信号245にて活性化されると、命令レジスタ(IR)25の下位側16ビットの領域(LIR)が保持する情報のビット数を圧縮し若しくはそのまま出力し、コード変換制御信号245にて非活性化されると、その出力の無効を意味する情報(ノンオペレーションコード)を出力する。コード変換回路242は、信号245が非活性状態のとき下位側16ビットの領域(LIR)の値に代えてノンオペレーションコードを出力するという意味では、セレクタによって実現することも可能である。DSPデコード信号244とコード変換回路242の出力は、前記DSP制御信号20としてDSPエンジン3のデコーダ34に供給される。前記第1のデコード回路240は、命令レジスタ(IR)25の上位側16ビットの領域(UIR)に格納された最上位側の6ビットをデコードすることにより、当該命令コードがCPU命令か、16ビットのDSP命令か、32ビットのDSP命令かを判定することができる。
【0046】
デコードされた命令が16ビット命令である場合、コード変換制御信号245は非活性状態とされ、それによってコード変換回路242は出力の無効を意味するノンオペレーションコードを出力する。また、デコードされた命令が16ビット命令である場合にはシフト制御信号246が活性化され、それを受ける命令レジスタ(IR)25はその下位側16ビットの領域(LIR)の値を上位側16ビットの領域(LIR)にシフトさせ、シフトされた命令を次に実行すべき命令の全部若しくは一部として利用する。例えば命令レジスタIRの上位側16ビット領域UIRに16ビットCPU命令が格納され、下位側ビット領域LIRに32ビットDSP命令の上位16ビットの命令コードが格納された場合について説明する。まず、上位側16ビット領域UIRに格納された16ビットCPU命令が第1デコード回路240にてデコードされ、その結果に従ってCPUコア2はその命令を実行し、下位側16ビット領域LIRに格納された32ビットDSP命令の上位16ビットの命令コードデータは、上位側16ビット領域UIRに転送される。このときランダムロジック回路201は、算術演算器AU208に対し、プログラムカウンタPCに格納されるべきアドレスのアドレス演算を実行させる。プログラムカウンタPCは、算術演算器AU208によって演算されたアドレス演算結果に従うアドレスを格納する。プログラムカウンタPCに格納されたアドレスに従って、上記32ビットDSP命令の下位16ビットの命令コードデータが、それを格納する命令メモリから命令レジスタIRの下位側16ビット領域LIRに転送される。これにより、32ビットDSP命令が命令レジスタIRに格納される。そして、この命令レジスタIRに格納された32ビットDSP命令は、デコーダ24を介してDSPエンジン3のデコーダ34に供給される。また、他の方法として、図示していないが、複数の命令プリフェッチバッファがCPUコア2内に設けられている。複数の命令プリフェッチバッファは、現在実行されている命令から数サイクル先に実行されるべき命令をプリフェッチする。このようなプリフェッチバッファが設けられている場合において、上述のように32ビットDSP命令の上位16ビットの命令コードデータが下位側領域LIRから上位側16ビット領域UIRに転送されるとき、ランダムロジック回路201は、上記32ビットDSP命令の下位16ビットの命令コードデータがプリフェッチされている命令プリフェッチバッファを選択する。その選択された命令プリフェッチバッファから32ビットDSP命令の下位16ビットの命令コードデータが読み出され、命令レジスタIRの下位側16ビット領域LIRに格納される。
【0047】
デコードされた命令が16ビットのCPU命令である場合、DSPデコード信号244はノンオペレーションを意味するコードとされる。デコードされた命令が16ビットのDSP命令である場合には、CPU制御信号247はCPUデコード信号243に基づいて第2のデコード回路241が生成し、DSPエンジン3内部の制御信号は実質的にDSPデコード信号244をデコーダ34が解読して生成する。デコードされた命令が32ビットのDSP命令である場合、CPU制御信号247はCPUデコード信号243に基づいて第2のデコード回路241が生成し、DSPエンジン3内部の制御信号はDSPデコード信号244とコード変換回路242の出力をデコーダ34が解読して生成する。
【0048】
マイクロコンピュータ1の命令セットには命令コード長が、16ビットのものと32ビットのものがあり、上述のように16ビット長命令と32ビット長命令では処理が異なるので、それぞれの場合を分けてその動作を詳述する。
【0049】
始めに16ビット長命令の場合について説明する。第1のデコード回路240は命令レジスタ(IR)25にフェッチされた32ビットの命令コードの内、上位16ビットをデコードする。第1のデコード回路240では、命令コードの最上位6ビットのコードが”111110”、”11111”以外のときは16ビット長命令であることがわかるので、このときはCPUデコード信号243とDSPデコード信号244の出力と共に、命令レジスタ(IR)25の下位16ビット領域LIRの命令コードデータを上位16ビット領域UIRにシフトさせるシフト制御信号246を活性化する。活性化されたシフト制御信号246を受けた命令レジスタ(IR)25は、下位16ビット領域LIRに格納されている命令コードを上位16ビット領域UIRにシフトする。シフトされた命令コードは、その次に第1のデコード回路240でデコードされることになる。デコーダ24より出力されるCPUデコード信号243は、第2デコード回路241に出力され、DSPデコード信号244は、DSPエンジン3に供給される。また、第1のデコード回路240は16ビット長命令であることがわかると、コード変換制御信号245を非活性とし、これによってコード変換回路242は、下位16ビットの命令コードが無効であることを示すコードをDSP制御信号20の一部として生成する。DSPエンジン3側では第1のデコード回路240より出力されたDSPデコード信号244とコード変換回路242より出力されたコード信号とをDSP制御信号20として入力すると、デコーダ34が当該DSP制御信号20のデコードを行なう。16ビットのDSP命令の場合、コード変換回路242より出力されたDSP制御信号は無効を表わす信号になっているので、デコーダ34はDSPデコード信号244に着目して、DSPエンジン3内にある乗算器(MAC)304、算術論理演算器(ALU)302、及びシフタ(SFT)303等の制御信号を出力する。DSPエンジン3はそれら制御信号に従って演算処理を行なう。
【0050】
次に32ビット長命令の場合について説明する。CPUコア2内部にある第1のデコード回路240では、命令レジスタ(IR)25に32ビットの命令コードを格納する。そして上位16ビットを第1のデコード回路240でデコードし、デコード信号243,244を出力する。第1のデコード回路240では、命令コードの最上位6ビットのコードが”111110”のときは32ビット長命令であることがわかるので、コード変換制御信号245を活性化し、これによってコード変換回路242は、命令レジスタ(IR)25の下位16ビットの命令コードをコード変換する。コード変換された情報はDSPデコード信号244と共にDSPエンジン3にDSP制御信号20として供給される。デコーダ34はDSP制御信号20をデコードしてDSPエンジン3内部の制御信号を生成する。尚、デコーダ24,34は例えばランダムロジック回路で実現することができる。
【0051】
図17には図6に対応される別の実施例が示される。図6の実施例では、命令レジスタ25の下位領域LIRの命令データが上位領域UIRにシフトされるものとして説明した。図17の実施例は、前記命令レジスタ25と内部データバスIDBとの間に、命令プリフェッチキューを構成する直列2段の命令プリフェッチバッファ250,251を供え、命令プリフェッチバッファ250,251の保持データをセレクタ252で選択して命令レジスタ25に与えるよいうになっている。命令プリフェッチバッファ250,251及び命令レジスタ25の夫々は、32ビット単位でデータを保持し、その保持動作は、制御信号φ1〜φ3(CLK1に同期)によって制御される。特に図示されないが、命令プリフェッチバッファ250,251及び命令レジスタ25の夫々は、マスタ・スレーブの構成を有し、マスタ段は対応される制御信号の立ち上がりに同期して入力のラッチ動作を行い、スレーブ段は対応される制御信号の立ち下がりに同期して入力のラッチ動作を行う。これによって、直列2段の命令プリフェッチバッファ250,251には、プリフェッチされた前後の命令データが格納される。
【0052】
前記セレクタ252は、選択制御信号φ4に従って、ポートPaに供給される32ビットの命令データ又はポートPb供給される32ビットの命令データを選択して命令レジスタ25に与える。前記ポートPaには、命令プリフェッチバッファ250の上位16ビット領域UPB1を下位側とし、命令プリフェッチバッファ251の下位16ビット領域LPB2を上位側とする32ビットの命令データが供給される。ポートPbには命令プリフェッチバッファ251に格納されている32ビットの命令データがそのまま供給される。
【0053】
これにより、命令プリフェッチバッファ251が32ビットのDSP命令を保持しているとき、セレクタ252は、ポートPbの出力を選択することによって当該32ビットのDSP命令を命令レジスタ25にセットすることができる。命令プリフェッチバッファ251が16ビットのDSP命令又は16ビットのCPU命令を上位領域UPB2に保持しているとき、セレクタ252は、ポートPbの出力を選択することによって当該16ビットの命令を命令レジスタ25の上位領域UIRにセットすることができる。命令プリフェッチバッファ251が16ビットのDSP命令又は16ビットのCPU命令を下位領域LPB2に保持しているときは、セレクタ252が、ポートPaの出力を選択することによって当該16ビットの命令を命令レジスタ25の上位領域UIRにセットすることができる。命令プリフェッチバッファ251が32ビットDSP命令の上位側16ビット命令コードを下位領域LPB2に保持し、命令プリフェッチバッファ250がその上位領域UPB1に当該32ビットDSP命令の下位側16ビット命令コードを保持しているときは、セレクタ252が、ポートPaの出力を選択することによって当該32ビットDSP命令を命令レジスタ25にセットすることができる。
【0054】
図17において253は、前記命令プリフェッチバッファのラッチ制御信号φ1,φ2、命令レジスタ25のラッチ制御信号φ3、及び前記選択制御信号φ4を生成する制御ロジックである。この制御ロジック253は、16ビット命令か32ビット命令かを示す制御信号248と命令プリフェッチバッファ250,251の各領域に実行されないまま残っている命令コードの状態に従って、前記制御信号φ1〜φ4を生成する。この制御ロジック253は命令フェッチのための制御論理の一部を構成する。尚、前記制御信号248は、第1のデコード回路240が命令レジスタ25の上位領域UIRから供給される命令コードデータの上位側6ビットをデコードして生成されるものであり、その詳細については後述する。
【0055】
前記制御論理253による命令レジスタ25への命令コードデータのセットは以下のようにされる。外部からの命令フェッチは、CPUコア2の命令フェッチタイミング(例えば後述する複数段のパイプラインステージにおける命令フェッチステージIF)において、命令プリフェッチバッファ250に32ビットの命令コードデータを新たに格納する余地がある場合に行われる。そのタイミングで命令フェッチが行われるときは、命令プリフェッチバッファ251にはまだ実行されていない命令が残っている。命令プリフェッチバッファ251の領域UPB2,LPB2に格納されている命令コードの双方がまだ実行されていない第1の状態の場合には、命令プリフェッチバッファ251の32ビットの出力がポートPbを介してセレクタ252で選択されて命令レジスタ25にセットされる。一方、命令プリフェッチバッファ251の下位領域LPB2に格納されている命令コードだけがまだ実行されていない第2の状態の場合には、命令プリフェッチバッファ250にプリフェッチした上位領域UPB1と命令プリフェッチバッファ251の下位領域LPB2の命令コードデータがポートPaを介して命令レジスタ25にセットされる。
【0056】
前記第1の状態において、命令レジスタ25の上位領域UIRにセットされた命令コードデータをデコード回路240がデコードした結果、それが32ビット命令を構成するものである場合には、そのとき、命令プリフェッチバッファ250にプリフェッチされた32ビットの命令コードデータがそのまま命令プリフェッチバッファ251に転送される。一方、デコード結果によって16ビット命令であることが検出されたときは、命令プリフェッチバッファ250から次段のバッファ251へのデータシフトは行われない。
【0057】
前記第2の状態では、ポートPaを介する命令レジスタ25へのデータセットの後、命令プリフェッチバッファ250にプリフェッチされている32ビットの命令コードデータは、そのまま命令プリフェッチバッファ251にシフトされてセットされる。このシフトセット後、命令プリフェッチバッファ250に未だ実行されていない命令コードデータが存在しないならば、命令プリフェッチバッファ250には、次の命令フェッチタイミングで命令コードデータがプリフェッチされる。
【0058】
このような制御により、命令フェッチタイミングの後には、まだ処理されていない命令コードデータが命令レジスタ25にセットされる。このとき、実行されるべき命令が、16ビットCPU命令、16ビットDSP命令又は32ビットDSP命令の何れであっても、その上位側16ビットは必ず第1のデコード回路240に供給されることになる。
【0059】
図6で説明したコード変換回路242は、図17ではセレクタ242Aとコード変換ロジック242Bによって構成される。また、第1のデコード回路240は、図6の説明ではそれがデコードした命令コードが16ビット命令であるか否かによってそのレベルが制御される制御信号245,246を生成したが、図17の例では、それがデコードした命令コードが16ビット命令であるのか32ビット命令(本実施例において32ビット命令はDSP命令である)であるのかを識別するための制御信号248を出力する。セレクタ242Aは、制御信号248が16ビット命令を意味するときは、ノーオペレーションコードNOPを選択してコード変換ロジック242Bに供給し、制御信号248が32ビットDSP命令であることを意味するときは、命令レジスタ25の下位領域LIRの命令コードをコード変換ロジック242Bに供給する。コード変換ロジック242Bは、特に制限されないが、命令レジスタ25の下位領域LIRの命令コードデータの一部例えばレジスタ選択のためのコード情報をDSPエンジン3のデコーダ34に適する形態に修正して出力する。
【0060】
図17の実施例において第1のデコード回路240は命令レジスタ25の上位領域UIRが保持する16ビットの命令コードデータを解読し、これによって得られたCPUデコード信号243を第2のデコード回路243に与え、また、DSPデコード信号244をデコーダ34に与える。CPUデコード信号243は、CPU命令及びDSP命令の何れにおいても有意とされ、第2のデコード回路241に供給される。第2のデコード回路241は、CPUデコード信号243をデコードして、CPUコア2が行うべきアドレス演算やデータ演算のための制御情報、及び内部メモリX−ROM4,Y−ROM5,X−RAM,Y−RAMそして外部メモリをアクセスしたりするためのアドレスバスやデータバスの選択制御情報等を出力する。前述の通り、DSP命令に対しても、それに必要なアドレス演算やデータパスの選択はCPUコア2が行う。
【0061】
前記DSPデコード信号244は、前述の通り、第1のデコード回路240に供給される命令コードがDSP命令のためのコードデータである場合に有意とされるデコード信号である。有意DSPデコード信号244は、例えば、CPUコア2で行われるアドレス演算に従ってアクセスされるメモリとの間でデータの受け渡しを行うDSPエンジン3内のレジスタ等の指定情報を含んでいる。第1のデコード回路240に供給される命令コードがCPU命令である場合には、DSPデコード信号244は無効を意味するコードにされる。
【0062】
ここで、マイクロコンピュータ1の命令セットに含まれる前記DSP命令のコードを更に詳述する。図18及び図19は夫々16ビットのDSP命令の命令コードが示され、図20及び図21には32ビットのDSP命令の命令コードが示される。前述のように、DSP命令は、命令コードの最上位側の4ビットが”1111”に割り当てられ、命令コードの最上位側の6ビットが”111100”及び”111101”は16ビットのDSP命令、命令コードの最上位側の6ビットが”111110”の命令は32ビットのDSP命令とされる。
【0063】
図18の第1欄(X Side of Data Transfer)に示される16ビットDSP命令の命令フォーマットはXメモリ(X−ROM4,X−RAM6)とDSPエンジン3の内蔵レジスタとの間におけるデータ転送命令であり、第2欄(Y Side of Data Transfer)に示される命令フォーマットはYメモリ(Y−ROM5,Y−RAM7)とDSPエンジン3の内蔵レジスタとの間におけるデータ転送命令である。上記命令フォーマットにおいて、Ax,AyはCPUコア2に含まれるレジスタアレイ209(図3参照)に含まれるレジスタを指定し、Ax=”0”はレジスタR4を指定し、Ax=”1”はレジスタR5を指定し、Ay=”0”はレジスタR6を指定し、Ay=”1”はレジスタR7を指定する。Dx,Dy,DaはDSPエンジンに含まれるレジスタを指定し、Dx=”0”はレジスタX0、Dx=”1”はレジスタX1、Dy=”0”はレジスタY0、Dy=”1”はレジスタY1、Da=”0”はレジスタA0、Da=”1”はレジスタA1を夫々指定する。Ix,Iyはイミディエイト値を意味する。
【0064】
図19に示される16ビットDSP命令の命令フォーマットは、マイクロコンピュータ1の外部に接続された図示しないメモリとDSPエンジン3の内蔵レジスタとの間におけるデータ転送命令である。AsはCPUコア2に内蔵されたレジスタアレイ209(図3参照)に含まれるレジスタを指定し、DsはDSPエンジンに内蔵されるレジスタX1,X0,Y1,Y0,A1,A0やレジスタアレイ305(図4参照)に含まれるレジスタを指定する。
【0065】
32ビットDSP命令のフォーマットは、32ビットDSP命令であることを示すコード”111110”の領域(ビット31〜ビット26)、Aフィールド(ビット25〜ビット16)及びBフィールド(ビット15〜ビット0)に大別される。図20はAフィールドに着目した場合の当該フィールドのコードとそれに対応されるにニーモニックを示し、図21はBフィールドに着目した場合の当該フィールドのコードとそれに対応されるにニーモニックを示す。
【0066】
図20に示されるAフィールドのコードは、図18に示される16ビットDSP命令のビット9〜ビット0のコードと同一であり、第20図の第1欄(X Side of Data Transfer)に示されるAフィールドのコードはXメモリ(X−ROM4,X−RAM6)とDSPエンジン3の内蔵レジスタとの間におけるデータ転送を規定し、第2欄(Y Side of Data Transfer)に示されるAフィールドのコードはYメモリ(Y−ROM5,Y−RAM7)とDSPエンジン3の内蔵レジスタとの間におけるデータ転送を規定する。当該Aフィールドに含まれるビットAx,Ay,Dx,Dy,Daが指定する内容は図18と全く同じである。
【0067】
図21に示されるBフィールドのコードは、DSPエンジン3の内部で行われる算術演算、論理演算、シフト演算、レジスタ間のロード/ストアなどの処理を規定する。例えば、DSPエンジン3の内部で行われる乗算(PMULS)、減算(PSUB)、加算(PADD)、丸め(PRND)、シフト(PSHL)、論理積(PAND)、排他的論理和(XOR)、論理和(OR)、インクリメント(PINC)、ディクリメント(PDEC)、クリア(CLR)等の演算や、DSPエンジン3の内部で行われるロード(PLDS)及びストア(PSTS)等を規定する。図21の第3欄(3 Operand Operation with Condition)は、条件付きのコードであり、その条件(if cc)としては、DC(データコンプリート)ビット(データの処理完了を示すビット)の論理値又は無視を選択することができる。
【0068】
実際の32ビットDSP命令は、BフィールドのコードとAフィールドのコードとが任意に組み合わされて記述される。即ち、32ビットのDSP命令は、マイクロコンピュータ1の内部又は外部から演算対象とされるオペランドをフェッチし、それをDSPエンジン3の内部で演算する処理を規定する。上述の説明から明らかなように、オペランドフェッチのためのアドレス演算やデータパスの選択はCPU2によって行われる。32ビットDSP命令においてオペランドフェッチを規定するAフィールドのコードは16ビットのDSP命令と同じである。16ビットDSP命令は、DSPエンジン3内部のレジスタに対する初期設定などに利用される。
【0069】
図17等に示される構成を参照しても明らかなように、32ビットDSP命令のAフィールドのコードデータは命令レジスタ25における上位領域UIRにセットされる。また、Aフィールドと同一のフォーマットを有する16ビットDSP命令も上位領域UIRにセットされる。したがって、その何れにおいても、CPUコア2は、必要なアドレス演算及びデータフェッチ(若しくはオペランドフェッチ)に必要なデータパスの選択を同様に行えばよい。換言すれば、32ビットDSP命令を実行するためのデータフェッチ(若しくはオペランドフェッチ)と16ビットDSP命令を実行するためのデータフェッチ(若しくはオペランドフェッチ)とに必要とされるデコード回路240、241が共通化され、この点においても、マイクロコンピュータ1の論理規模の縮小に寄与する。32ビットDSP命令のAフィールドが指定するDSPエンジン3の内部レジスタの指定情報や16ビットDSP命令が指定するDSPエンジン3の内部レジスタの指定情報は、前記DSPデコード信号244としてDSPエンジン3に与えられる。DSPデコード信号244を有意とするか否かは、前記第1のデコード回路240が上位領域UIRの最上位側の4ビットをデコードして決定する。
【0070】
次に、本実施例のマイクロコンピュータにおける演算制御の内容を図7乃至図16の命令実行タイミングチャートを参照しながら説明する。本実施例のマイクロコンピュータ1は、IF,ID,EX,MA,WB/DSPステージの5段パイプライン動作を行なっている。IFは命令フェッチステージ、IDは命令デコードステージ、EXは演算実行ステージ、MAはメモリアクセスステージ、WB/DSPはメモリから取得したデータをCPUコア2のレジスタに取り込むステージまたはDSPエンジン3がDSP命令を実行するステージである。各図においてInstruction/Data Accessは内部バスIAB,IDBを介するメモリアクセスを意味し、アクセス対象は内蔵メモリ4〜7の他にマイクロコンピュータ1の外部メモリも可能にされる。X,Y Mem. Accessは内部バスXAB,XDBやYAB,YDBを介するメモリアクセスを意味し、アクセス対象は内蔵メモリ4〜7に限られる。Isnt.Fetchは命令レジスタ(IR)25への命令フェッチタイミング、Fetch.Regは命令レジスタ(IR)25、Source Data Outはソースデータ出力、Destination Inはディスティネーションデータの入力タイミング、Destination Registerはディスティネーションレジスタ、をそれぞれ意味する。Pointer Reg.はポインターレジスタ、Address Calc.はアドレス演算、Data Fetchはデータフェッチ、DSP Control signal Decord Timingはデコーダ34によるDSP制御信号20のデコードタイミングを意味する。
【0071】
図7はCPUコア2内部のALU演算命令の実行タイムチャートを示す。ここではALU演算命令として、ADD Rm, Rn を一例とする。
【0072】
IFステージ直前におけるクロック信号Clock2の立ち上がりのタイミングに同期して、実行すべき命令(ADD Rm, Rn )が格納されているアドレスがアドレスバスIABに出力される。Instruction/Data Mem. Accessでは、IFステージでメモリアクセス動作が行われる。具体的にはクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間でアドレスバスIABで指定されたアドレスのデコードが行われ、IFステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間で命令アクセスが行われる。そのためIFステージのクロック信号Clock2の立ち上がりからデータバスIDBに命令が出力される。データバスIDBに出力された命令は、IDステージのクロック信号Clock1の立ち上がりのタイミングに同期して命令レジスタ(IR)25に取り込まれる。IDステージでは命令レジスタ(IR)25に取り込まれたデータのデコードが行なわれる。EXステージのクロック信号Clock1の立ち上がりのタイミングに同期して、ソースデータが格納されているレジスタがアクセスされ、CPUコア2の内部バスA1,B1にレジスタの値が出力される。命令ADD Rm, Rnでは、RmとRnに指定したレジスタがソースレジスタとされる。RmとRnはCPUコア2の内部の任意のレジスタ(図3では、レジスタ209内の任意のレジスタ、A0x,A1x,Ix,A0y,A1y,Iy、RmおよびRnとして指定可能)を指定できる。CPUコア2の内部バスA1,B1に出力されたデータは算術論理演算器(ALU)213で加算演算が行われ、その結果はCPUコア2の内部バスC1に出力される。CPUコア2の内部バスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してディステネーションレジスタ(ディステネーションレジスタは、ADD Rm, Rn 命令でRnに指定したレジスタとされる)に格納される。このように、CPUコア2の内部のALU演算命令では、IF,ID,EXの3段のパイプラインステージで命令実行動作が完了する。
【0073】
図8はメモリからCPUコア2へのデータ読み込み動作のタイムチャートを示す。メモリからCPUコア2へのデータ読み込み動作命令の一例として、MOV.L @Rm, Rnを例にとって動作説明をする。命令フェッチ(IF)、命令デコード(ID)までの動作は図7と同じなのでその部分の詳細な説明は省略する。
【0074】
EXステージのクロック信号Clock1の立ち上がりのタイミングに同期して、アドレスポインタとなるレジスタのデータはCPUコア2の内部バスA1に出力される。この例では、アドレスポインタとなるレジスタは、Rmで指定したレジスタになる。Rmに指定できるレジスタは、CPUコア2に含まれる任意のレジスタ(図3では、Reg.に含まれる任意のレジスタ、A0x,A1x,Ix,A0y,A1y,IyがRmとして指定可能)である。CPUコア2の内部バスA1に出力されたデータは、アドレスバッファ205に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力される。一方CPUコア2の内部バスA1に出力されたデータは算術論理演算器(ALU)213で演算が行なわれる。この場合、算術論理演算器(ALU)213は0加算演算を行なう。その結果はCPUコア2の内部バスC1に出力される。CPUコア2の内部バスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、Rmで指定されレジスタ)に格納される。Instruction/Data Mem. Accessでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期して、アドレスバスIABに出力したアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスを行なう。そのためMAステージのクロック信号Clock2の立ち上がりからデータバスIDBにデータが出力される。データバスIDBに出力されたデータは、WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期してCPUコア2に取り込まれ、CPUコア2の内部バスDWにデータが出力される。WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してCPUコア2の内部バスDW上のデータがディステネーションレジスタに格納されて、動作を終了する。この例では、ディステネーションレジスタはRnに指定したレジスタになる。Rnに指定できるレジスタは、CPUコア2に含まれる任意のレジスタ(図3では、Reg.内の任意のレジスタ、A0x,A1x,Ix,A0y,A1y,IyがRnとして指定可能)である。以上のようにメモリからCPUコア2へのデータ読み込み動作命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで命令実行動作が完了する。
【0075】
図9はCPUコア2からメモリへのデータ書込み動作命令のタイムチャートを示す。CPUコア2からメモリへのデータ書込み動作命令の一例として、MOV.L Rm, @Rnを例にとって動作を説明する。命令フェッチ(IF)、命令デコード(ID)の動作は図8と同じなので、その部分の詳細な説明は省略する。
【0076】
EXステージのクロック信号Clock1の立ち上がりのタイミングに同期して、アドレスポインタとなるレジスタのデータがCPUコア2の内部バスA1に出力される。この例では、アドレスポインタとなるレジスタは、Rnで指定したレジスタになる。Rnに指定できるレジスタは、CPUコア2に含まれる任意のレジスタ(図3では、Reg.内の任意のレジスタ,A0x,A1x,Ix,A0y,A1y,IyがRnとして指定可能)である。CPUコア2の内部バスA1に出力されたデータは、アドレスバッファ205に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力される。一方CPUコア2の内部バスA1に出力されたデータは算術論理演算器(ALU)213で演算が行われる。この場合、算術論理演算器(ALU)213は0加算演算を行なう。その演算結果はCPUコア2の内部バスC1に出力される。CPUコア2の内部バスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、Rnで指定したレジスタ)に格納される。命令 MOV.L Rm, @Rnの場合、EXステージでアドレス演算を行なうと同時に、メモリへ書き込むべきデータをデータバスIDBに出力する準備が行われる。EXステージのクロック信号Clock1の立ち上がりのタイミングに同期して、メモリへ書き込むべきデータが格納されているレジスタよりCPUコア2の内部バスDRへ値が出力される。この例の場合、メモリへ書き込むべきデータが格納されているレジスタは、Rmで指定したレジスタになる。Rmに指定できるレジスタは、CPUコア2に含まれる任意のレジスタ(図3では、Reg.内の任意のレジスタ,A0x,A1x,Ix,A0y,A1y,IyがRmとして指定可能)である。CPUコア2の内部バスDRへ出力された値は、MAステージのクロック信号Clock2の立ち上がりのタイミングに同期してデータバスIDBに出力される。Instruction/Data Mem. Accessでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりのタイミングに同期してデータバスIDBに出力されたデータが書込まれて、動作を終了する。メモリからCPUコア2へのデータ書込み動作命令では、CPUコア2としてはデータバスIDBにデータを出力した時点で動作が終了するので、IF,ID,EX,MAの4段のパイプラインステージで動作が完了する。
【0077】
図10はDSP命令を実行するときのタイムチャートを示す。DSP命令の一例として、PADDC Sx, Sy, Dz NOPX NOPY を例にとって動作説明を行う。この命令は、DSPエンジン3内のレジスタに格納されているデータの加算を行ない、DSPエンジン3とX-ROM4やX-RAM6、及びY-ROM5やY-RAM7との間でのデータ転送は行なわないという命令である。
【0078】
命令フェッチの動作は図7と同じなのでその部分の詳細な説明は省略する。IDステージでは、クロック信号Clock1からクロック信号Clock2の期間でCPUコア2で取り込んだ命令コードのデコードが行なわれ、IDステージのクロック信号Clock2のタイミングで命令コードをデコードした結果がDSP制御信号20としてDSPエンジン3に出力される。DSPエンジン3では、CPUコア2よりDSP制御信号20を入力すると、MAステージまでの期間で入力したDSP制御信号20をデコードする。WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期して、ソースデータが格納されているレジスタがアクセスされ、DSPエンジン3の内部バスA2,B2にレジスタの値が出力される。この例では、ソースデータが格納されているレジスタは、SxおよびSyで指定したレジスタになる。SxおよびSyに指定できるレジスタは、DSPエンジン3内部の任意のレジスタ(図4では、Reg.内の任意のレジスタがSxおよびSyとして指定可能)である。DSPエンジン3の内部バスA2,B2に出力されたデータは算術論理演算器(ALU)302で演算が行なわれ、その結果はDSPエンジン3の内部バスC2に出力される。DSPエンジン3の内部バスC2に出力された演算結果は、WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してディステネーションレジスタに格納される。この例では、ディステネーションレジスタは、Dzで指定されたレジスタになる。Dzに指定できるレジスタは、DSPエンジン3内部の任意のレジスタ(図4では、Reg.内の任意のレジスタ)である。以上のようなDSP命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで動作が完了する。
【0079】
図11はX,Yメモリ4〜7からDSPエンジン3へのデータ読み込み動作命令のタイムチャートを示す。X,Yメモリ4〜7からDSPエンジン3へのデータ読み込み動作命令の一例として、MOVX.W @Ax, Dx MOVY.W @Ay, Dy を例にとってその動作を説明する。この命令は、AxおよびAyで指定したアドレスに格納されているデータをDxおよびDyで指定したレジスタに転送するという命令である。命令フェッチ、命令デコードの動作は図10と同じなのでその部分の詳細な説明は省略する。
【0080】
X,Yメモリ4〜7からDSPエンジン3へのデータ読み込み動作命令を実行する場合、アクセスするメモリのアドレスはCPUコア2が生成する。そのためEXステージにおけるクロック信号Clock1の立ち上がりのタイミングに同期して、アクセスすべきアドレスが格納されているレジスタがアクセスされ、CPUコア2の内部バスA1〜A2にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Ax,Ayで指定したレジスタになる。Axに指定できるレジスタはCPUコア2に含まれるレジスタA0x,A1xであり、Ayに指定できるレジスタはCPUコア2に含まれるレジスタA0y,A1yである。CPUコア2の内部バスA1〜A2に出力されたデータは、メモリアドレスバッファ(MABX,MABY)に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスXAB,YABに出力される。一方CPUコア2の内部バスA1〜A2に出力されたデータはALU213,PAU212でアドレス演算が行なわれる。この場合、ALU213およびPAU212は0加算演算を行なう。その演算結果はCPUコア2の内部バスC1及びC2に出力される。CPUコア2の内部バスC1及びC2に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、AxおよびAyで指定したレジスタ)に格納される。X,Yメモリ4〜7では、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージクロック信号Clock2の立ち上がりのタイミングでアドレスバスXAB,YABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのためMAステージのクロック信号Clock2の立ち上がりからデータバスXDB,YDBにデータが出力される。データバスXDB,YDBに出力されたデータは、WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期してDSPエンジン3に取り込まれ、DSPエンジン3の内部バスD1,D2にデータが供給される。WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してDSPエンジン3の内部バスD1,D2上のデータがディステネーションレジスタに格納されて、動作を終了する。この例では、ディステネーションレジスタはDxおよびDyに指定したレジスタになる。Dxに指定できるレジスタは、DSPエンジン3に含まれるレジスタX0,X1であり、Dyに指定できるレジスタは、DSPエンジン3に含まれるレジスタY0,Y1である。以上のようにメモリからDSPエンジン3へのデータ読み込み動作命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで動作が完了する。斯る並列的なデータ読込み動作は、相互に独立したバスXAB,XDBとYAB,YDBとを介してCPUコア2がX,Yメモリ4〜7をアクセスできるようになっているからである。
【0081】
図12はDSPエンジン3からX,Yメモリ6,7へのデータ書込み動作のタイムチャートを示す。DSPエンジン3からX,Yメモリ6,7へのデータ書込み動作命令の一例として、MOVX.W Da, @Ax MOVY.W Da, @Ay を例にとってその動作を説明をする。この命令は、Daで指定したレジスタに格納されているデータをAxおよびAyで指定したレジスタに格納されているアドレスに転送するという命令である。
【0082】
命令フェッチ、命令デコードの動作は図11と同じなのでその部分の詳細な説明は省略する。DSPエンジン3からX,Yメモリ6,7へのデータ書込み動作命令を実行する場合、アクセスされるべきメモリアドレスはCPUコア2が生成する。そのためEXステージにおけるクロック信号Clock1の立ち上がりのタイミングに同期して、アクセスすべきアドレスが格納されているレジスタがアクセスされ、CPUコア2の内部バスA1〜A2にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Ax,Ayで指定したレジスタになる。Axに指定できるレジスタはCPUコア2に含まれるレジスタA0x,A1xであり、Ayに指定できるレジスタはCPUコア2に含まれるレジスタA0y,A1yである。CPUコア2の内部バスA1,A2に出力されたデータは、メモリアドレスバッファ(MABX,MABY)に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスXAB,YABに出力される。
【0083】
MAステージのクロック信号Clock1の立ち上がりのタイミングに同期して、転送されるべきデータが格納されているDSPエンジン3の内部レジスタがアクセスされ、DSPエンジン3の内部バスD1,D2に当該レジスタの値が出力され、それらがメモリデータバッファ(MDBX,MDBY)に格納される。この例の場合、転送されるべきデータが格納されているDSPエンジン3の内部レジスタはDaで指定されたレジスタになる。Daで指定できるレジスタは、DSPエンジン3に含まれるレジスタA0及びA1である。MAステージのクロック信号Clock2の立ち上がりのタイミングに同期して、メモリデータバッファ(MDBX,MDBY)に格納されたデータはデータバスXDB,YDBに出力される。X,Yメモリ6,7では、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージクロック信号Clock2の立ち上がりのタイミングでアドレスバスXAB,YABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのため、データバスXDB,YDBに出力されたデータはMAステージのクロック信号Clock2の立ち上がりから書込まれる。以上のようにDSPエンジン3からX,Yメモリ6,7へのデータ書込み動作命令では、IF,ID,EX,MAの4段のパイプラインステージで動作が完了する。斯る並列的なデータ書込み動作は、相互に独立したバスXAB,XDBとTAB,YDBとを介してCPUコア2がX,Yメモリ4,6をアクセスできるようになっているからである。
【0084】
図13はメモリからDSPエンジン3へのデータ読み込み動作のタイムチャートを示す。メモリからDSPエンジン3へのデータ読み込み動作命令の一例として、MOVS.L @As, Ds を例にとってその動作を説明をする。この命令は、Asで指定したアドレスに格納されているデータをDsで指定したレジスタに転送するという命令である。
【0085】
基本動作は、図11に示したX,Yメモリ4〜7からDSPエンジン3へのデータ読み込み動作と同じである。図11と図13の違いは、図11では対象となるメモリがX,Yメモリ4〜7なのでXバス,Yバスを使用するのに対し、図13では対象となるメモリはマイクロコンピュータ1がサポートする空間に接続されているメモリなので、バスIAB,IDBを使用するということである。EXステージクロック信号Clock1の立ち上がりのタイミングに同期して、アクセスすべきアドレスを保有しているレジスタがアクセスされ、CPUコア2の内部バスA1にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Asで指定したレジスタになる。Asで指定可能なレジスタはCPUコア2に含まれるReg.内の任意のレジスタである。CPUコア2の内部バスA1に出力されたデータは、アドレスバッファ205に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力される。一方CPUコア2の内部バスA1に出力されたデータは算術論理演算器(ALU)213でアドレス演算が行なわれる。この場合、算術論理演算器(ALU)213は0加算演算を行なう。その演算結果はCPUコア2の内部バスC1に出力される。CPUコア2の内部バスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、Asで指定したレジスタ)に格納される。アクセス対象となるメモリでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージクロック信号Clock2の立ち上がりのタイミングでアドレスバスIABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのためMAステージのクロック信号Clock2の立ち上がりからデータバスIDBにデータが出力される。データバスIDBに出力されたデータは、WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期してDSPエンジン3に取り込まれ、当該データがDSPエンジン3の内部バスD1に供給される。WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してDSPエンジン3の内部バスD1上のデータがディステネーションレジスタに格納されて、動作を終了する。この例では、ディステネーションレジスタはDsに指定したレジスタになる。Dsに指定できるレジスタは、DSPエンジン3内の任意のレジスタである。以上のようにメモリからDSPエンジン3へのデータ読み込み動作命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで動作が完了する。
【0086】
図14はDSPエンジン3からメモリへのデータ書込み動作のタイムチャートを示す。DSPエンジン3からメモリへのデータ書込み動作命令の一例として、MOVS.L Ds, @Asを例にとってその動作を説明する。この命令は、Dsで指定したレジスタに格納されているデータをAsで指定したアドレスに転送するという命令である。
【0087】
基本動作は図12に示したDSPエンジン3からX,Yメモリへのデータ書込み動作と同じである。図12と図14の違いは、図12では対象となるメモリがX,YメモリであるのでバスXAB,XDB、バスYAB,YDBを使用するのに対し、図14では対象となるメモリがマイクロコンピュータ1がサポートする空間に接続されているメモリなので、バスIAB,IDBを使用するということである。
【0088】
EXステージクロック信号Clock1の立ち上がりのタイミングに同期して、転送先のアドレスを保有しているレジスタがアクセスされ、CPUコア2の内部バスA1にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Asで指定したレジスタになる。Asで指定可能なレジスタはCPUコア2に含まれるレジスタReg.内の任意のレジスタである。CPUコア2の内部バスA1に出力されたデータは、アドレスバッファ205に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力される。一方CPUコア2の内部バスA1に出力されたデータは算術論理演算器(ALU)213でアドレス演算が行なわれる。この場合、算術論理演算器(ALU)213は0加算演算を行なう。その演算結果はCPUコア2の内部バスC1に出力される。CPUコア2のバスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、Asで指定したレジスタ)に格納される。
【0089】
MAステージのクロック信号Clock1の立ち上がりのタイミングに同期して、転送すべきデータを格納しているDSPエンジン3内部のレジスタの値がDSPエンジン3の内部バスD1に出力され、メモリデータバッファ(MDBI)に格納される。MAステージのクロック信号Clock2の立ち上がりのタイミングに同期して、メモリデータバッファ(MDBI)に格納されたデータがデータバスIDBに出力される。この例では、転送すべきデータを格納しているDSPエンジン3内部のレジスタはDsに指定したレジスタになる。Dsに指定できるレジスタは、DSPエンジン3内の任意のレジスタである。アクセス対象となるメモリでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージクロック信号Clock2の立ち上がりのタイミングでアドレスバスIABに出力したアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのためMAステージのクロック信号Clock2の立ち上がりタイミングで、DSPエンジン3より出力されたデータがメモリに書込まれる。以上のようにDSPエンジン3から外部メモリへのデータ書込み動作命令では、IF,ID,EX,MAの4段のパイプラインステージで動作が完了する。
【0090】
次に、DSP演算命令の一例として、PADD Sx, Sy, Du PMUL Se, Sf, Dg MOVX.W @Ax, Dx MOVY.W @Ay, Dy を例にとり、図15を用いてその動作説明をする。この命令は、DSPエンジン3内のレジスタに格納されているデータの加算、乗算を行ない、X-ROM4やX-RAM6及びY-ROM5やY-RAM7からDSPエンジン3へのデータ転送を行なうという命令であり、図10と図11の動作を合わせた動作である。命令フェッチ、命令デコードの動作は図10と同じなのでその部分の詳細な説明は省略する。
【0091】
X,YメモリからDSPエンジン3へのデータ読み込み動作命令を実行する場合、アクセスすべきメモリのアドレスはCPUコア2が生成する。そのためEXステージにおけるクロック信号Clock1の立ち上がりのタイミングに同期して、アクセスすべきアドレスを保有するレジスタがアクセスされ、CPUコア2の内部バスA1,A2にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Ax,Ayで指定したレジスタになる。Axに指定できるレジスタはCPUコア2に含まれるレジスタA0x,A1xであり,Ayに指定できるレジスタはCPUコア2に含まれるレジスタA0y,A1yである。CPUコア2の内部バスA1,A2に出力されたデータは、メモリアドレスバッファ(MABX,MABY)に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスXAB,YABに出力される。一方CPU内部バスA1,A2に出力されたデータはALU213,PAU212でアドレス演算が行なわれ(この場合、ALU213およびPAU212は0加算演算を行なう)、その結果はCPUコア2の内部バスC1及びC2に出力される。CPUコア2の内部バスC1及びC2に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、AxおよびAyで指定したレジスタ)に格納される。X,Yメモリでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージのクロック信号Clock2の立ち上がりのタイミングでアドレスバスXAB,YABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのためMAステージのクロック信号Clock2の立ち上がりからデータバスXDB,YDBにデータが出力される。データバスXDB,YDBに出力されたデータは、WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期してDSPエンジン3に取り込まれ、DSPエンジン3の内部バスD1,D2にデータが出力される。WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してDSPエンジン3の内部バスD1,D2上のデータがディステネーションレジスタ(Distination Reg.)に格納されて、動作を終了する。この例では、ディステネーションレジスタはDxおよびDyに指定したレジスタになる。Dxに指定できるレジスタは、DSPエンジン3内のX0,X1、Dyに指定できるレジスタは、DSPエンジン3内のY0,Y1である。
【0092】
上記データ転送に並行して、DSP演算動作も同時に行なわれる。WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期して、ソースデータが格納されているレジスタがアクセスされ、DSPエンジン3の内部バスA1,A2、B1,B2にレジスタの値が出力される。この例では、ソースデータが格納されているレジスタは、ADD(加算)動作の場合はSxおよびSyで指定したレジスタになり、MUL(乗算)動作の場合はSeおよびSfで指定したレジスタになる。Sx,Sy,Se及びSfに指定できるレジスタは、DSPエンジン3内部の任意のレジスタである。DSPエンジン3の内部バスA1,B1に出力されたデータはMAC304で乗算演算が行なわれ、その結果はDSPエンジン3内部バスC1に出力される。DSPエンジン3の内部バスA2,B2に出力されたデータはALU302で加算演算が行なわれ、その結果はDSPエンジン3内部バスC2に出力される。DSPエンジン3の内部バスC1およびC2に出力された演算結果は、WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してディステネーションレジスタに格納される。この例のディステネーションレジスタは、ADD動作の場合はDu,MUL動作の場合はDgで指定したレジスタになる。DuおよびDgに指定できるレジスタは、DSPエンジン3内部の任意のレジスタである。
【0093】
以上のように、DSPエンジン3内のレジスタに格納されているデータの加算、乗算を行ない、X-ROM4やX-RAM6及びY-ROM5やY-RAM7からDSPエンジン3へのデータ転送を行なう命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで動作が完了する。
【0094】
DSP演算命令の第2の例として、
Inst1: PADD A0, M0, A0 PMUL A1, X0, A1 MOVX.W @R4, X1 MOVY.W @R6, Y0
Inst2: ADD R8, R9
Inst3: ADD R10, R11
Inst4: ADD R12, R13
の4つの連続する命令を例にとり、図16を用いてその動作説明をする。この4つの命令は、アドレスバスIAB,XAB、及びYABを同時に使用することで、同一クロックサイクルに異なる動作を実現する例である。Inst1からInst4までの命令動作は、図7及び図15と同じなのでその部分の詳細な説明は省略する。
【0095】
始めにInst1のIFステージで、Inst1の命令フェッチが行われる。Inst1のIDステージ時に、Inst2ではIFステージになるため、命令フェッチが行われる。
【0096】
Inst1のEXステージでは、X,Yメモリへのアクセスを行うためのアドレス演算を行っているときに、Inst2ではIDステージのため命令デコードを行い、Inst3ではIFステージのため命令フェッチを行う。
【0097】
Inst1のMAステージでは、EXステージで演算されたアドレスがアドレスバスXAB、およびYABに出力され(実際にアドレスを出力するタイミングは、EXステージのクロック信号Clock2の立ち上がりのタイミングからである)、データバスXDB及びYDBよりデータが取り込まれる。このときInst2ではEXステージのためR8とR9のADD演算を行って動作が完了され、Inst3はIDステージのため命令デコードを行う。そしてInst4はIFステージのため、Inst4が格納されているアドレスをアドレスバスIABへ出力する。実際にアドレスバスIABへ出力するタイミングは、Inst4のIFステージの半サイクル前のクロック信号Clock2の立ち上がりのタイミングからである。このタイミングは、Inst1においてアドレスバスXAB,YABにアドレスを出力するタイミング(EXステージの後半及びMAステージの前半)と同じタイミングである。すなわちアドレスバスXAB及びYABはデータ転送のために使用され、アドレスバスIABでは命令フェッチのために使用される。マイクロコンピュータ1では、それぞれCPUコア2に接続された内部アドレスバスIAB,XAB,YABと内部データバスIDB,XDB,YDBがあるために、当該3種類の内部バスを使用して同一クロックサイクルで異なるメモリアクセス動作を実行することが可能である。
【0098】
この後Inst1は、WB/DSPステージにおいてDSP演算を行って動作を完了し、Inst2はすでに動作完了、Inst3はEXステージのためR10とR11のADD演算を行って動作完了し、Inst4ではIDステージのため命令デコードを行う。
【0099】
次のサイクルでは、Inst4のEXステージのみが行われ、R12とR13のADD演算を行い動作を完了する。
【0100】
本実施例によれば以下の作用効果を得る。内蔵メモリは、DSPエンジン3による積和演算を考慮してYメモリ5,7とXメモリ4,6に2面化され、CPUコア2がYメモリ5,7とXメモリ4,6を内部バスXAB,XDBと内部バスYAB,YDBによってそれぞれ並列的にアクセス可能にされている。これにより、内蔵メモリ4〜7から2個のデータを同時にDSPエンジン3に転送可能にされる。さらに、内部バスXAB,XDBと内部バスバスYAB,YDBは、外部にインタフェースされる内部バスIAB,IDBとも個別化されているので、CPUコア2はXメモリ4,6とYメモリ5,7のアクセスに並行して外部メモリアクセスも可能にされる。このように、それぞれCPUコア2に接続された3種類のアドレスバスIAB,XAB,YAB及びデータバスIDB,XDB,YDBがあるために、当該3種類の内部バスを使用して同一クロックサイクルで異なるメモリアクセス動作を実行することが可能である。したがって、プログラムやデータが外部メモリに存在する場合にも容易に対応して演算処理の高速化を実現できる。
【0101】
前記Xメモリ4,6とYメモリ5、7の夫々をRAMとROMから構成することにより、マイクロコンピュータの使い勝手を更に向上させることができる。
【0102】
上述のように、内蔵メモリはXメモリ4、6とYメモリ5,7に2面化され、2面化された各メモリはROMとRAMを供え、RAMをデータメモリ、ROMをプログラムメモリとすることにより、データメモリとプログラムメモリの分離も可能になり、DSPエンジン3に2個のデータを並列的に転送し、また、命令フェッチ、データ転送、及び演算を並列パイプライン処理にて能率的に行うことができる。
【0103】
CPUコア2がモジュロアドレス出力部200を備えることにより、CPUコア2における積和演算などの繰返し演算のためのアドレス生成を高速化することができる。
【0104】
CPU命令は命令コードの最上位4ビットが”0000”〜”1110”までの空間に命令が割り当てられている。DSP命令は、命令コードの最上位4ビットが”1111”に全て割り当てられている。さらに命令コードの最上位6ビットが”111100”及び”111101”の空間に割り当てられた命令は、DSP命令でも16ビット長の命令コードになっている。命令コードの最上位6ビットが”111110”の命令は、32ビット長の命令コードになっている。命令コードの最上位6ビットが”111111”の空間には命令を割り当てておらず、未使用領域となっている。このように、最大32ビットの命令に対するコード割り当てに上記のような規則を設けることにより、命令コードの最上位側6ビットをデコードすれば、当該命令がCPU命令であるか、16ビット長のDSP命令であるか、32ビット長のDSP命令であるかを、小さな論理規模のデコーダで判定することができ、常に32ビット全部を一度にデコードすることを要しない。
【0105】
図17に基づいて説明したように、命令フェッチタイミングの後には、まだ処理されていない命令コードデータが命令レジスタ25にセットされ、このとき、実行されるべき命令が、16ビットCPU命令、16ビットDSP命令又は32ビットDSP命令の何れであっても、その上位側16ビットを必ず第1のデコード回路240に供給することができる。
【0106】
32ビットDSP命令のAフィールドのコードは命令レジスタ25における上位領域UIRにセットされ、Aフィールドと同一のフォーマットを有する16ビットDSP命令も上位領域UIRにセットされる。したがって、その何れにおいても、CPUコア2は、必要なアドレス演算及びデータフェッチに必要なデータパスの選択を同様に行うことができる。すなわち、32ビットDSP命令を実行するためのデータフェッチと16ビットDSP命令を実行するためのデータフェッチとのためにデコード回路240、241を共通化でき、この点においても、マイクロコンピュータ1の論理規模を縮小することができる。
【0107】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えばCPU命令、16ビットDSP命令、32ビットDSP命令の識別は命令の最上位6ビットを利用することに限定されず、命令コードの数に応じて増減できる。また、命令レジスタに対する下位16ビットを上位へシフトさせる機能は別の機能に置き換え可能である。また、CPUコアやDSPエンジンに含まれるレジスタ本数や演算器の種類は上記実施例に限定されず適宜変更可能である。また、メモリの数を2個に限定せずに増加させることが可能である。そしてメモリの数に合わせてメモリに接続されるアドレスバス、データバスの本数を増加させることは可能である。例えば、X,Yメモリの他に新たにZメモリを設ける。それに合わせてCPUとZメモリの間にアドレスバスZAB,DSPエンジンとZメモリの間にデータバスZDBを接続する。このような構成にすれば、積和演算時にX,YメモリからデータをDSPエンジンに取り込むだけでなく、現在実行中の命令以前に演算終了しているデータをZバスを介してZメモリ回路に同時に書き込むことが可能となる。1つの命令で演算データの取り込み、メモリへの書き込みが可能となるのでマイクロコンピュータ全体のスループットがさらに向上する。本発明は、移動体通信機器における情報の圧縮伸張処理やフィルタリング処理、サーボ制御、プリンタにおける画像処理等に適用される機器組み込み制御用マイクロコンピュータとしての利用に最適である。
【0108】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0109】
すなわち、内蔵メモリは、ディジタル信号処理プロセッサによる積和演算を考慮して第1のメモリと第2のメモリに2面化され、第3のバスと第2のバスによってそれぞれ並列的にアクセス可能にされているから、セントラルプロセッシングユニットは内蔵メモリから2個のデータを同時にディジタル信号処理ユニットに転送することができる。
【0110】
さらに、第3のバスと第2のバスは、外部にインタフェースされる第1のバスとも個別化されているので、セントラルプロセッシングユニットは第2のメモリと第1のメモリのアクセスに並行して外部メモリアクセスすることができる。
【0111】
このように、それぞれセントラルプロセッシングユニットに接続された第1乃至第3の3種類のアドレスバス及びデータバスがあるために、当該3種類の内部バスを使用して同一クロックサイクルで異なるメモリアクセス動作を実行することができるので、プログラムやデータが外部メモリに存在する場合にも容易に対応して演算処理の高速化を実現できる。
【0112】
さらに、内蔵メモリは第1のメモリと第2のメモリに2面化され、2面化された各メモリはROMとRAMを供え、RAMをデータメモリ、ROMをプログラムメモリとすることにより、データメモリとプログラムメモリの分離も可能になり、ディジタル信号処理ユニットに2個のデータを並列的に転送し、また、命令フェッチ、データ転送、及び演算を並列パイプライン処理にて能率的に行うことができる。
【0113】
したがって、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載したときにディジタル信号処理の高速化を実現できる。
【0114】
CPU命令とDSP命令が混在された命令に対し、命令コードの一部をデコードすることによって当該命令がCPU命令であるか、16ビット長のDSP命令であるか、32ビット長のDSP命令であるかを識別可能に命令コードを割り当てることにより、小さな論理規模のデコーダで命令の種別を判定することができ、常に32ビット全部を一度にデコードすることを要しない。したがって、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載したとき、その物理的な規模の増大を極力抑えることができる。
【0115】
DSP命令の命令フォーマットとして、ディジタル信号処理ユニットとの間でのデータ転送を当該セントラルプロセッシングユニットに対して規定する第1のコード領域(図18に例示される16ビットDSP命令のビット9〜ビット0)を有する第1フォーマットの命令と、前記第1のコード領域と同一フォーマットの第2のコード領域(図20、図21に例示される32ビットのDSP命令のAフィールド)を有すると共に、当該第2のコード領域で規定された転送データを用いた演算処理をディジタル信号処理ユニットに対して規定する第3のコード領域(図20、図21に例示される32ビットのDSP命令のBフィールド)を有する第2フォーマットの命令とを採用することにより、第1及び第2フォーマットの夫々の命令を実行する手段は、第1のコード領域と第2のコード領域に対して共通のデコード論理を持つデコード手段を採用でき、この点においても、マイクロコンピュータの論理規模を縮小することができる。
【図面の簡単な説明】
【図1】本発明の一実施例に係るマイクロコンピュータの全体ブロック図である。
【図2】マイクロコンピュータの一例アドレスマップである。
【図3】モジュロアドレス出力部を詳細に示したCPUコアのブロック図である。
【図4】DSPエンジンの一例ブロック図である。
【図5】マイクロコンピュータの命令フォーマット及び命令コードに関する一例説明図である。
【図6】CPUコアのデコーダとDSPエンジンのデコーダとの接続構成を示すブロック図である。
【図7】CPUコア内部でのALU演算命令の実行タイムチャートである。
【図8】メモリからCPUコアへデータを読込む命令の実行タイムチャートである。
【図9】CPUコアからメモリへデータを書込み命令の実行タイムチャートである。
【図10】DSP命令を実行するときの一例タイムチャートである。
【図11】X,YメモリからDSPエンジンへデータを読込む命令の実行タイムチャートである。
【図12】DSPエンジンからX,Yメモリへデータを書込む命令の実行タイムチャートである。
【図13】メモリからDSPエンジンへデータを読込む命令の実行タイムチャートである。
【図14】DSPエンジンからメモリへデータを書込む命令の実行タイムチャートである。
【図15】DSP演算命令の一例実行タイムチャートである。
【図16】DSP演算命令を連続して実行するときの一例タイムチャートである。
【図17】図6に対応される別の実施例を示すブロック図である。
【図18】マイクロコンピュータの内蔵メモリとDSPエンジン3の内蔵レジスタとの間におけるデータ転送を規定する16ビットDSP命令のコードを示す命令フォーマット図である。
【図19】マイクロコンピュータの外部メモリとDSPエンジン3の内蔵レジスタとの間におけるデータ転送を規定する16ビットDSP命令のコードを示す命令フォーマット図である。
【図20】32ビットDSP命令のAフィールドに着目した場合における当該フィールドのコードとそれに対応されるにニーモニックなどを示す命令フォーマット図である。
【図21】32ビットDSP命令のBフィールドに着目した場合における当該フィールドのコードとそれに対応されるにニーモニックなどを示す命令フォーマット図である。
【符号の説明】
1 マイクロコンピュータ
2 CPUコア(セントラルプロセッシングユニット)
20 DSP制御信号
24 デコーダ
240 第1のデコード回路
241 第2のデコード回路
242 コード変換回路
243 CPUデコード信号
244 DSPデコード信号
245 コード変換制御信号
247 CPU制御信号
25 命令レジスタ
250,251 命令プリフェッチバッファ
200 モジュロアドレス出力部
206,207 メモリアドレスバッファ
212 アドレス演算器
213 算術論理演算器
214 モジュロスタートアドレスレジスタ
215 モジュロエンドアドレスレジスタ
216、226 モジュロアドレスレジスタ
3 DSPエンジン(ディジタル信号処理ユニット)
34 デコーダ
302 算術論理演算器
304 乗算器
309,310,311 メモリデータバッファ
4 X−ROM(第2のメモリ)
5 Y−ROM(第1のメモリ)
6 X−RAM(第2のメモリ)
7 Y−RAM(第1のメモリ)
12 外部メモリインタフェース

Claims (17)

  1. CPUと、
    上記CPUに従って動作し、乗算器を含むDSPと、
    上記CPUから選択的にアドレスが供給される第1乃至第3アドレスバスと、
    上記CPU及び上記DSPに接続された第1データバスと、
    上記DSPに接続された第2及び第3データバスと、
    上記第1及び第2アドレスバスと上記第1及び第2データバスとに接続され、上記CPUから供給されるアドレスによってアクセスされる第1メモリと、
    上記第1及び第3アドレスバスと上記第1及び第3データバスとに接続され、上記CPUから供給されるアドレスによってアクセスされる第2メモリと、
    上記CPUから上記DSPに対し、DSP動作を制御するための第1制御信号を供給するための制御信号線と、
    上記第1アドレスバス及び上記第1データバスに接続されたインターフェース回路とを有し、
    上記CPUは第1アドレスバスを介して第1アドレスを出力し、上記第1データバスを介して命令を含む第1データを取り込み、
    上記CPUは、複数の汎用レジスタと、算術論理演算回路と、上記第1アドレスバスに接続され、上記第1アドレスを格納するためのプログラムカウンタと、上記第1データバスに接続され、上記第1データバスから供給された上記命令を格納するための命令レジスタと、上記命令レジスタに格納された命令をデコードし、デコード結果に従う制御信号を発生するための命令デコーダとを含み、上記制御信号に基づき、上記第1制御信号を上記制御信号線を介して出力し、
    上記DSPは、上記第1制御信号に基づいて上記第1メモリまたは第2メモリの少なくとも一方から取得したデータを用いて演算処理を実行することが可能であることを特徴とするマイクロコンピュータ。
  2. 請求項1において、
    上記第1及び第2メモリのそれぞれは、RAM及びROMを含むことを特徴とするマイクロコンピュータ。
  3. 請求項1又は2において、
    上記DSPは、
    上記第1乃至第3データバスのそれぞれに対応して接続された第1乃至第3データバッファ手段と、
    上記乗算器及び上記第1乃至第3データバッファ手段に接続可能な内部バスと、
    上記内部バスを介して上記第1乃至第3データバッファ手段の各々に接続可能な複数のレジスタ手段と、
    上記内部バスに接続可能な論理演算手段、
    上記CPUから供給された上記第1制御信号をデコードし、上記データバッファ手段、乗算器、論理演算手段及びレジスタ手段を制御するための第1デコード回路とを含むことを特徴とするマイクロコンピュータ。
  4. 請求項1において、
    上記DSPは、上記命令デコーダから選択的に出力される上記第1制御信号を受け、上記乗算器の動作を制御するための第2制御信号を発生するデコード回路を有することを特徴とするマイクロコンピュータ。
  5. 請求項1において
    記DSPは、上記制御信号線から供給された上記第1制御信号をデコード可能なデコード部を含むことを特徴とするマイクロコンピュータ。
  6. CPUと、
    上記CPUに接続された第1乃至第3アドレスバスと、
    上記第1及び第2アドレスバスに接続された第1メモリと、
    上記第1及び第3アドレスバスに接続された第2メモリと、
    上記第1及び第2メモリとCPUに接続された第1データバスと、
    上記第1メモリに接続された第2データバスと、
    上記第2メモリに接続された第3データバスと、
    上記第1データバス及び上記第1アドレスバスに接続されたインターフェース回路と、
    上記第1乃至第3データバスに接続されたDSPとを有し
    上記CPUは、上記第1アドレスバスを介して第1アドレスを出力し、上記第1アドレスに応じた第1データを上記第1データバスを介して入力し、
    上記第1データは上記CPUで実行可能な命令を含み、
    上記CPUは、命令を解読して制御信号を生成する命令デコード回路を有し、
    上記命令デコード回路は、上記第1データに含まれる命令を解読し、解読結果に応じて、上記DSPの動作を制御するための制御信号を出力することが可能であり、
    上記DSPは、上記制御信号に基づいて上記第2データバスを介して上記第1メモリから第2データを読み出し、上記第3データバスを介して上記第2メモリから第3データを読み出し、上記第2データ及び第3データを用いて演算処理を実行することが可能であり、
    上記CPUから上記DSPに対して、上記制御信号を転送するための制御信号線を有することを特徴とするマイクロコンピュータ。
  7. 請求項において、
    上記DSPで第2データと第3データを用いて実行される演算処理は、積和演算であることを特徴とするマイクロコンピュータ。
  8. 請求項において、
    上記命令デコード回路は、上記CPUの制御を行うための制御信号を生成することが可能であることを特徴とするマイクロコンピュータ。
  9. 請求項において、
    上記DSPは、命令デコーダを有し、
    上記命令デコーダは、上記CPUより制御信号線を介して出力される上記制御信号を解読することが可能であり、解読結果に応じて、上記第2データバスまたは第3データバスを介して入力されるデータを用いて演算処理を実行することが可能であることを特徴とするマイクロコンピュータ。
  10. 第1乃至第3アドレスバスと、
    データを伝達することが可能な第1乃至第3データバスと、
    上記第1及び第2アドレスバスと上記第1及び第2データバスに接続された第1メモリと、
    上記第1及び第3アドレスバスと上記第1及び第3データバスに接続された第2メモリと、
    上記第1乃至第3アドレスバスヘ第1乃至第3アドレス信号をそれぞれ供給する中央処理部と、
    上記第2及び第3アドレス信号によるアクセスに応答して上記第1及び上記第2メモリから出力された第1及び第2データを上記第2及び第3データバスを介して、1つのバスサイクル内で取り込むディジタル信号処理部とを有し、
    上記中央処理部は、上記第1アドレス信号に応じて、上記第1データバスを介して命令を取り込むことが可能であり、
    上記中央処理部は、上記命令を解読して制御信号を発生する命令デコーダを含み、
    上記ディジタル信号処理部は、上記中央処理部内の上記命令デコーダから供給される上記制御信号を受けて、上記ディジタル信号処理部の内部回路の動作を制御する内部制御信号を発生するデコード回路を有することを特徴とするマイクロコンピュータ。
  11. 請求項10において、
    上記ディジタル信号処理部は、内部バスと、上記内部バスに接続された乗算器及び算術論理演算回路と、データレジスタと、上記第データバスと上記内部バスとの間に接続された第1データバッファ回路と、上記第データバスと上記内部バスとの間に接続された第2データバッファ回路とを含むことを特徴とするマイクロコンピュータ。
  12. 請求項11において
    上記乗算器及び算術論理演算回路、上記データレジスタ、上記第1及び第2データバッファ回路は、上記内部制御信号によってその動作が制御されることを特徴とするマイクロコンピュータ。
  13. 請求項10において、
    上記中央処理部は、算術論理演算回路を含み、
    記算術論理演算回路の動作は、上記制御信号によって制御されることを特徴とするマイクロコンピュータ。
  14. セントラルプロセッシングユニットと、
    上記セントラルプロセッシングユニットにより制御可能なディジタル信号処理ユニットと、
    上記セントラルプロセッシングユニットに接続された第1乃至第3アドレスバスと、
    上記ディジタル信号処理ユニットに接続された第1乃至第3データバスとを有し、
    上記第1データバスは、セントラルプロセッシングユニットに接続可能であり、
    上記第1及び第2アドレスバスと第1及び第2データバスに接続される第1メモリと、
    上記第1及び第3アドレスバスと第1及び第3データバスに接続される第2メモリとを有し、
    上記セントラルプロセッシングユニットは、複数の汎用レジスタと、算術論理演算回路と、上記第1アドレスバスに接続され命令アドレスを格納するためのプログラムカウンタと、上記第1データバスに接続され上記第1データバスから供給された命令を格納する命令レジスタと、上記命令レジスタに格納された命令をデコードしデコード結果に従う制御信号を発生する命令デコーダとを含み、
    上記複数の汎用レジスタ及び上記算術論理演算回路の動作は、上記制御信号によって制御され、
    上記ディジタル信号ユニットは、上記セントラルプロセッシングユニット内の上記命令デコーダから供給される上記制御信号を受けて制御されることを特徴とするマイクロコンピュータ。
  15. 請求項4において、
    上記ディジタル信号処理ユニットは、上記制御信号を受けて内部制御信号を発生するデコード回路と、内部バスと、上記内部バスに接続された乗算器及び算術論理演算回路と、上記内部バスに接続されたデータレジスタと、上記第2データバスと上記内部バスとの間に接続された第1データバッファ回路と、上記第3データバスと上記内部バスとの間に接続された第2データバッファ回路とを含み、
    上記セントラルプロセッシングユニットは、上記第2アドレスバスを介して第1アドレスを出力可能で、上記第3アドレスバスを介して第2アドレスを出力可能で、
    上記ディジタル信号処理ユニットは、上記制御信号に応じて上記第2データバスから第1データを読み出して上記第1データバッファ回路に格納し、上記第3データバスから第2データを読み出して上記第2データバッファに格納し、
    上記乗算器及び算術論理演算回路、上記データレジスタ、上記第1及び第2データバッファ回路は、上記内部制御信号によってその動作が制御されることを特徴とするマイクロコンピュータ。
  16. 第1プロセッシングユニットと、
    上記第1プロセッシングユニットに同期して動作し、乗算器を含む第2プロセッシングユニットと、
    上記第1プロセッシングユニットに接続された第1、第2及第3アドレスバスと、
    上記第2プロセッシングユニットに接続された第1、第2及び第3データバスとを有し、
    上記第1データバスは上記第1プロセッシングユニットに接続され、
    上記第1アドレスバス及び第1データバスに接続されるインタフェース回路と、
    上記第1及び第2アドレスバスと上記第1及び第2データバスに接続された第1記憶装置と、
    上記第1及び第3アドレスバスと上記第1及び第3データバスに接続された第2記憶装置とを有し、
    上記第1プロセッシングユニットは、上記第1アドレスバスを介して出力した第1アドレス信号に応じて上記インタフェース回路を介して外部から上記第1データバス経由でフェッチした命令を解読し、解読結果にしたがって上記第2プロセッシングユニットを制御するための制御信号を出力するためのデコード回路を有し、
    上記第2プロセッシングユニットは、上記制御信号を解読するためのデコード部を有することを特徴とするマイクロコンピュータ。
  17. 請求項16において、
    上記第1プロセッシングユニットは、中央処理装置を含み、
    上記第2プロセッシングユニットは、ディジタル信号処理装置を含むことを特徴とするマイクロコンピュータ。
JP34744195A 1995-05-02 1995-12-14 マイクロコンピュータ Expired - Lifetime JP3727395B2 (ja)

Priority Applications (15)

Application Number Priority Date Filing Date Title
TW085114414A TW432326B (en) 1995-05-02 1995-12-12 Microcomputer
TW084113247A TW424192B (en) 1995-05-02 1995-12-12 Microcomputer
JP34744195A JP3727395B2 (ja) 1995-05-02 1995-12-14 マイクロコンピュータ
US08/630,320 US5867726A (en) 1995-05-02 1996-04-10 Microcomputer
EP00109692A EP1028382B1 (en) 1995-05-02 1996-04-22 Microcomputer
DE69614442T DE69614442T2 (de) 1995-05-02 1996-04-22 Mikrorechner
EP96302800A EP0741358B1 (en) 1995-05-02 1996-04-22 Microcomputer
DE69625256T DE69625256T2 (de) 1995-05-02 1996-04-22 Mikrorechner
KR1019960014100A KR100439367B1 (ko) 1995-05-02 1996-05-01 마이크로컴퓨터
US09/229,147 US6434690B1 (en) 1995-05-02 1999-01-11 Microprocessor having a DSP and a CPU and a decoder discriminating between DSP-type instructions and CUP-type instructions
US09/291,910 US6405302B1 (en) 1995-05-02 1999-04-14 Microcomputer
US10/201,402 US7069423B2 (en) 1995-05-02 2002-07-22 Microcomputer
KR1020040017948A KR100440841B1 (ko) 1995-05-02 2004-03-17 마이크로컴퓨터
US11/354,622 US7363466B2 (en) 1995-05-02 2006-02-14 Microcomputer
US12/075,131 US7558944B2 (en) 1995-05-02 2008-03-07 Microcomputer

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP7-132906 1995-05-02
JP13290695 1995-05-02
JP34744195A JP3727395B2 (ja) 1995-05-02 1995-12-14 マイクロコンピュータ
US09/229,147 US6434690B1 (en) 1995-05-02 1999-01-11 Microprocessor having a DSP and a CPU and a decoder discriminating between DSP-type instructions and CUP-type instructions

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2002259483A Division JP3765782B2 (ja) 1995-05-02 2002-09-05 マイクロコンピュータ
JP2005222618A Division JP3733137B2 (ja) 1995-05-02 2005-08-01 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JPH0922379A JPH0922379A (ja) 1997-01-21
JP3727395B2 true JP3727395B2 (ja) 2005-12-14

Family

ID=27316604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34744195A Expired - Lifetime JP3727395B2 (ja) 1995-05-02 1995-12-14 マイクロコンピュータ

Country Status (3)

Country Link
JP (1) JP3727395B2 (ja)
DE (1) DE69614442T2 (ja)
TW (2) TW432326B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW439380B (en) 1995-10-09 2001-06-07 Hitachi Ltd Terminal apparatus
KR19990017021A (ko) * 1997-08-21 1999-03-15 윤종용 마이크로 제어기와 디지탈 신호 처리기 통합 장치를구비한시스템 및 하드웨어 두 루프 실행 방법
JP3822380B2 (ja) 1999-03-26 2006-09-20 富士写真フイルム株式会社 画像信号処理装置
WO2000068783A2 (en) * 1999-05-12 2000-11-16 Analog Devices, Inc. Digital signal processor computation core
KR20030085094A (ko) 2001-04-03 2003-11-01 미쓰비시덴키 가부시키가이샤 암호화 장치
KR100881196B1 (ko) * 2007-05-29 2009-02-05 삼성전자주식회사 선택 가능한 두개의 비트 구조를 갖는 메모리 장치 및 이를구비하는 시스템
JP2010003151A (ja) 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置

Also Published As

Publication number Publication date
TW432326B (en) 2001-05-01
JPH0922379A (ja) 1997-01-21
TW424192B (en) 2001-03-01
DE69614442D1 (de) 2001-09-20
DE69614442T2 (de) 2002-05-16

Similar Documents

Publication Publication Date Title
US5867726A (en) Microcomputer
JP3983857B2 (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
KR100266337B1 (ko) 정보처리회로,반도체집적회로장치,마이크로컴퓨터,및전자기기
US6671797B1 (en) Microprocessor with expand instruction for forming a mask from one bit
JP4130654B2 (ja) 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置
JP3856737B2 (ja) データ処理装置
KR100462951B1 (ko) Risc 구조를 갖는 8 비트 마이크로콘트롤러
JP2003005958A (ja) データ処理装置およびその制御方法
JPH0810428B2 (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
JPH01119828A (ja) マイクロプロセッサ
JP3727395B2 (ja) マイクロコンピュータ
US6253305B1 (en) Microprocessor for supporting reduction of program codes in size
JP3841820B2 (ja) マイクロコンピュータ
JPH096614A (ja) データ処理装置
KR19980018065A (ko) 스칼라/벡터 연산이 조합된 단일 명령 복수 데이터 처리
JP3765782B2 (ja) マイクロコンピュータ
JPH11307725A (ja) 半導体集積回路
JP3733137B2 (ja) マイクロコンピュータ
JP3786575B2 (ja) データ処理装置
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
GB2380283A (en) A processing arrangement comprising a special purpose and a general purpose processing unit and means for supplying an instruction to cooperate to these units
JP3760093B2 (ja) マイクロコンピュータ
JP3740321B2 (ja) データ処理装置
JP2004005738A (ja) データ処理装置及び命令セット拡張方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050531

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050831

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: 20050927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050928

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: 20081007

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091007

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091007

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101007

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101007

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20161007

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20161007

Year of fee payment: 11

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20161007

Year of fee payment: 11

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term