説明

データ処理装置

【課題】DMAコントローラ等のCPU以外のバスマスタからのバス使用権要求によりCPUにおける処理が滞ってシステムのスループットが低下するのを防止できるシングルチップマイコンを実現する。
【解決手段】CPU優先レベル制御回路(119)を設け、そこに設定された優先レベルを示す信号をCPU以外のバスマスタ(DMAコントローラ113,115)に供給して、当該CPU以外のバスマスタに設定されている優先レベル(比較基準値)とCPUのその時点の優先レベルとを比較して動作(DMA転送)を開始するか否か判定するように構成した。

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサもしくはマイクロコンピュータのようなデータ処理装置さらにはバスの使用権の調停方式に適用して有効な技術に関し、例えばCPUに代わってDMA(ダイレクト・メモリ・アクセス)データ転送を行なうDMAコントローラのようなバスを制御可能なバスマスタとなる回路を備えた1チップのマイクロプロセッサもしくはマイクロコンピュータ(以下、これらをシングルチップマイコンと称する)に利用して有効な技術に関する。
【0002】
【従来の技術】
従来、中央処理ユニット(以下、CPUと称する)、内部メモリ、タイマ回路やシリアル通信インタフェース回路等の周辺回路等を含むシングルチップマイコンには、メモリや周辺回路間、更には内部回路と外部に接続されたデバイス(例えばメモリやASIC)間でCPUを介さずに直接データの転送を行なうDMAコントローラが設けられているものがある。DMAコントローラは、シングルチップマイコンとは別個のLSIとして構成されることもあるが、最近ではシングルチップマイコンに内蔵されることが多くなっている。
【0003】
シングルチップマイコンでは、通常CPUがバスを制御しているが、DMAコントローラがDMA転送を実行する際、CPUからバス使用権を取得してバスを制御することができるため、DMAコントローラはCPUと共にバスマスタと呼ばれることがある。CPU以外にバスマスタとなる回路を有するシステムでは、一般にバス使用権の調停を行なうバスアービタと呼ばれる回路が設けられる。一方、複数のバスを有するシステムでは、バス間の信号の競合を防止したりバス間の信号のやりとりを円滑にするためバスコントローラと呼ばれる回路が設けられる。かかるバスコントローラが設けられるシステムでは、前記バスアービタの機能はバスコントローラに設けられることが多い。
【0004】
また、従来、DMAコントローラを有するシングルチップマイコンにおいては、一般に、DMAコントローラからのDMA転送要求があるとCPUがバス使用権を開放してDMAコントローラがバスを優先的に使用できるように構成されていた。つまり、複数のバスマスタを有する従来のシステムでは、CPUのバス使用権の優先順位が他のバスマスタに比べて低くなっていた。これは、DMA転送要求は、発生頻度は多くないものの優先レベルが高い処理であることが多いと考えられていたためである。
【0005】
【発明が解決しようとする課題】
本発明者等は、DMAコントローラのようなバスマスタとなり得る回路の数が比較的多いシステムを制御するためのシングルチップマイコンについて検討を行なった結果、バスマスタの数が多いシステムでは、バスマスタからのバス使用権の要求が頻繁に発生することにより、CPUの処理が滞ってシステム全体としてのスループットが著しく低下したり、システムエラー処理のような緊急度の高い処理が待たされることでシステムの動作に異常を来たすことがあるという課題があることを見出した。
【0006】
また、かかる不具合は、CPUにおける緊急度の高い処理等が他のバスマスタからのバス使用権要求で妨げられないようにプログラムによる処理を予め調整しておくことで回避することができるが、そのためには、システムの中で起こり得る最悪のケースを想定した調整が必要となりその調整作業が面倒であるとともに、最悪のケースを想定した調整をしてしまうと、逆にシステム全体としてのパフォーマンスが落ちてしまうという不具合が生じることが分かった。
【0007】
本発明の目的は、データ転送制御回路(DMAコントローラ)等のCPU以外のバスマスタからのバス使用権要求によりCPUにおける処理が滞ってシステムのスループットが低下するのを防止できるシングルチップマイコンのようなデータ処理装置を提供することにある。
本発明の他の目的は、データ転送制御回路等のCPU以外のバスマスタからのバス使用権要求によりCPUにおける緊急度の高い処理等が妨げられることがないデータ処理装置を提供することにある。
本発明のさらに他の目的は、CPU以外に複数のバスマスタを有するシステムの設計を容易化することができるデータ処理装置を提供することにある。
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添附図面から明らかになるであろう。
【0008】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
すなわち、中央処理ユニット以外のバスマスタとなる回路を備えたシングルチップマイコンのようなデータ処理装置において、中央処理ユニットは上記バスの使用権に関し自己の優先レベルを示す信号を出力するように構成し、中央処理ユニット以外のバスマスタとなる回路には上記バスの使用権に関する判定を行なう判定回路を設け、該判定回路は上記中央処理ユニットから出力される優先レベルを示す信号と自己が保有する比較基準値(自己の優先レベル)とを比較してバスを使用した動作を開始するか否か決定するように構成する。あるいは、中央処理ユニットの動作優先レベルを設定可能な優先レベル設定回路を設け、該優先レベル設定回路から出力される優先レベルを示す信号と自己が保有する比較基準値とを比較してバスを使用した動作を開始するか否か決定するように構成したものである。
【0009】
上記した手段によれば、CPU以外のバスマスタが中央処理ユニットの優先レベルと自己の比較基準値とを判定して動作を開始するので、DMAコントローラ等のCPU以外のバスマスタからのバス使用権要求によりCPUにおける処理が滞ってシステムのスループットが低下するのを防止できるとともに、CPU以外のバスマスタからのバス使用権要求によりCPUにおける緊急度の高い処理等が妨げられるのを回避することができる。
【0010】
【発明の実施の形態】
以下、本発明の好適な実施例を図面に基づいて説明する。
図1には、本発明を、バスマスタとして動作するDMAコントローラを備えたシングルチップマイコンに適用した場合の一実施例の概略構成が示されている。特に制限されないが、図1に示されている各回路ブロックは、公知の半導体集積回路の製造技術により、単結晶シリコンのような1個の半導体チップ上に形成されている。
【0011】
図1に示されているように、この実施例のシングルチップマイコン100は、プログラムの命令を解読してデータの演算処理を行なったりチップ全体の制御を行なうプログラム制御方式の中央処理ユニット(CPU)111、CPU111が実行するプログラムを格納したりCPUの作業領域や割込みの際のスタックエリアを提供する内蔵メモリ(ROM,RAM)112、CPU111に代わって上記内蔵メモリとタイマ等の周辺回路あるいはハードディスク装置のような外部装置との間でDMA方式の高速データ転送制御を行なうDMAコントローラ(DMAC)113、該DMAコントローラ113よりも低速であるがチップ内部で同様なDMAデータ転送を行なうデータ転送コントローラ(DTC)114、CPU111に代わって外部装置間あるいは外部装置と外部メモリ等との間でDMA方式のデータ転送制御を行なう外部DMAコントローラ(EXDMAC)115、内部バスコントローラ116、外部バスコントローラ117、所定の割込み要因の発生に基づいてCPUに対して割込み要求を行なう割込みコントローラ(INTC)118などを備えている。
【0012】
DMAコントローラ113と外部DMAコントローラ115は、特に制限されるものではないがそれぞれ4つの転送チャネルを備えており、DMAコントローラ113にはA/D変換回路123などの周辺回路や外部デバイス310等から転送要求信号DRQP,DRQが入力され、外部DMAコントローラ115には外部デバイス310等から転送要求信号DRQEが入力される。データ転送コントローラ114は、主としてA/D変換回路123などの周辺回路からの転送要求に応じてデータ転送を制御するもので、DMAコントローラ113による転送よりも低速であるが、内部メモリ112を利用して転送チャネルの設定が行なわれるように構成されることで、例えば100個近いチャネルのデータ転送処理を行なうことも可能となり、内部メモリ112に格納することの出来る転送チャネルの設定は、対応する転送要求信号ごとに設定されることが可能とされ、転送要求信号に応じて転送チャネルを割り振ることができるようにされる。
【0013】
内部バスコントローラ116は、CPU111や内蔵メモリ112,データ転送コントローラ113,114間を接続する内部バスIBSとタイマ121,シリアル通信インタフェース(SCI)122,A/D変換回路123などの周辺回路が接続された周辺バスPBSとの間の信号のやりとりを可能にしたり、CPU111,データ転送コントローラ113,114,115のバス使用権を調停したりする。外部バスコントローラ117は、内部バスIBSと外部バスEBS上の信号のタイミングを調整して2つのバス間の信号のやりとりを可能にしたり、外部データ転送コントローラ115や外部のバスマスタとなる外部デバイスのバス使用権を調停したりする。内部バスコントローラ116と外部バスコントローラ117は一つのバスアービタに関するコントローラとして存在し、内部と外部のバス制御が可能となるように構成されていても良い。
【0014】
なお、図1において、符号310は外部バスEBSに接続されたハードディスク装置やプリンタなどの外部デバイス(装置)、320は外部バスEBSに接続された外部メモリ(ROM,RAM)である。外部デバイス310にはASIC等で構成されバスマスタとして動作可能なマイコンあるいはコントローラチップが内蔵されることもある。外部メモリ320は、記憶容量が制限された内部メモリ112を補うことも可能であり、CPU111が実行するプログラムやCPUが割込み発生時等に参照するベクタアドレス、システムに固有の各種データが格納される。
【0015】
DMAコントローラ113や外部DMAコントローラ115がDMA転送制御を行なう場合、内部バスコントローラ116または外部バスコントローラ117に対してバス使用権を要求するバスリクエスト信号BRQ1,BRQ2を送り、内部バスコントローラ116または外部バスコントローラ117はCPU111が実行中の処理を終了した時点でCPU111に対してバスを使用する権利がないことを示すアクノリッジ信号ACK0を送る一方、DMAコントローラ113や外部DMAコントローラ115に対してはバスの使用可能を示すアクノリッジ信号ACK1,ACK2を送る。
【0016】
図示しないが、データ転送コントローラ114に関しても同様である。この実施例のシングルチップマイコンでは、CPU111から内部バスコントローラ116または外部バスコントローラ117に対してバスの使用権を要求するバスリクエスト信号はなく、CPU111は他のバスマスタがバスを使用しないときはいつでもバスを使用できるという構成が採用されている。
【0017】
さらに、この実施例のシングルチップマイコン100には、CPU111の動作優先レベルないしはバスマスタとしての優先レベル(バス使用権に関する優先レベル)を設定可能なCPU優先レベル制御回路119が設けられている。一方、DMAコントローラ113と外部DMAコントローラ115には、4つの転送チャネルごとに優先レベル(比較基準値)を設定可能なレジスタDMA0P〜DMA3PとEDMA0P〜EDMA3Pおよびこれらのレジスタの設定値と前記CPU優先レベル制御回路119の設定値とを比較していずれの優先レベルが高いか判定する判定回路CMP10〜CMP13とCMP20〜CMP23が設けられている。また、データ転送コントローラ114には、優先レベルを設定可能な1個のレジスタDTCPおよびこのレジスタの設定値と前記CPU優先レベル制御回路119の設定値とを比較していずれの優先レベルが高いか判定する判定回路CMP30が設けられている。
【0018】
DMAコントローラ113、外部DMAコントローラ115およびデータ転送コントローラ114は、前記CPU優先レベル制御回路119の設定値とそれぞれ自己のレジスタに設定されている優先レベルとを比較し、自己のレジスタに設定されている優先レベルが同じか高い場合にデータ転送を実行し、優先レベルが低い時はデータ転送要求を保留して転送サイクルを実行しないように構成されている。データ転送コントローラ114にレジスタDTCPを設ける代わりに、内蔵メモリ(RAM)112を利用して優先レベルを設定するようにしても良い。
【0019】
自己のレジスタに、CPU優先レベル制御回路119の設定値と同一の優先レベルが設定されていた場合には、転送サイクルを実行する為、バスサイクルが競合してしまう。バスサイクルが競合した場合は、バスコントローラにより予め定められた優先順位に従ってバス権の調停が行われる。予め定められた優先順位は、この実施例では、外部DMAコントローラ115−DMAコントローラ113−データ転送コントローラ114−CPU111の順であり、CPU111に最も低い優先順位が与えられている。
【0020】
本実施例においては、このような動作環境において、CPU111による内部バスのバス使用権と、DMAコントローラ113,データ転送コントローラ114による内部バスのバス使用権とが競合した場合に最も順位の低いCPU111によるバスサイクルが長時間実行されなくなる事態を回避するため、内部バスコントローラ116内のコントロールレジスタに、内部バス制御ビットIBCCSを設けている。
【0021】
そして、この制御ビットIBCCSに“1”が立っていると、内部バスコントローラ116は、前回のバスサイクルでバス使用権を所有したバスマスタがCPUでなかったときは次回のバスサイクルでバス使用権をCPUに渡し、前回のバスサイクルでバス使用権を所有したバスマスタがCPUであったときは次回のバスサイクルではバス使用権を他のバスマスタに渡す通常の調停を行なう。
これにより、同一の優先レベルが設定されているデータ転送要求とCPUのバスサイクルが競合する場合にも、CPUがバス使用権を取得できる確率をおおよそ50%にすることができる。制御ビットIBCCSは、プログラムによってバスを介して設定可能に構成されている。CPUの拡張レジスタEXR内の割込みマスクビットに応じて制御ビットIBCCSを設定するように構成しても良い。
【0022】
また、外部バスコントローラ117内のコントロールレジスタにも、制御ビットIBCCSと同様な機能を有する外部バス制御ビットEBCCSが設けてられており、CPU111による外部バスのバス使用権と、DMAコントローラ113,外部DMAコントローラ115による外部バスのバス使用権とが競合した場合にバス使用権の優先順位の低いCPU111によるバスサイクルが長時間実行されなくなる事態を回避できるようになっている。内部バスコントローラ116内の内部バス制御ビットIBCCSと外部バスコントローラ117内の外部バス制御ビットEBCCSは共通のコントロールレジスタに設けることも可能である。
【0023】
なお、優先レベルを設定可能な上記レジスタDMA0P〜DMA3P,EDMA0P〜EDMA3P,DT0Pは専用のレジスタとして設けても良いが、もともと各コントローラに設けられているレジスタの未使用フィールドを利用したり、レジスタのビット数を拡張して設けるようにしても良い。
【0024】
特に制限されるものでないが、この実施例においては、CPU優先レベル制御回路119における優先レベルの設定は、例えばCPU内部に設けられているステータスレジスタの一種であるコンディションコードレジスタの拡張部として用意された拡張レジスタEXRの割込みマスクフィールドに格納されている3ビットのコードに基づいて行なわれるように構成されており、拡張レジスタEXRの割込みマスクフィールドに格納されているコード(割り込みマスクビット)EXR:IをCPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに転写することによって設定が行なわれる。この実施例では、割込みマスクは3ビットであるので、優先レベルは8段階に設定可能である。ただし、このマスクビットは3ビットに限定されるものでない。
【0025】
上記拡張レジスタEXRの割込みマスクフィールドは、CPU111が割込みコントローラ118からの割込み要求に応じて現在実行中の割り込みの優先レベルよりも低い割込み要求を拒否し実行中の割り込みの優先レベルよりも高い割込み要求のみを受け付けられるようにするためのコードが格納されるもので、例えばCPUが割込みを受け付けたときにその割込みに対応した割込みコントローラ118内の割込み優先レベルレジスタIPRの割込みの優先レベルを示す値(割込み優先レベル)を転写させることによって設定を行なうことができる。
【0026】
なお、この割込みマスクフィールドの3ビットのコード(割り込みマスクビット)EXR:Iは、割込みコントローラ118に供給され、割込み要求が入った時に図示しないコンパレータで割込み優先レベルレジスタIPRに格納されている当該割込みに対応するコードと比較され、割込みの可否の判定にも利用される。
【0027】
次に、DMAコントローラ113を例にとって、バスマスタとしての優先レベルを判定する判定回路の構成例と判定動作について、図2および図3を用いて説明する。
図2に示されているように、例えばDMAコントローラ113には、各転送チャネルごとに優先レベルを設定可能な前述のレジスタDMAiP(i=0,1,2,3)と、これらのレジスタの設定値と前記CPU優先レベル制御回路119の設定値CPUP[2:0]とを比較していずれの優先レベルが高いか判定する比較回路CMPiの他に、チャネルiの起動要因となる複数の起動要求(外部に接続されたデバイスからの転送要求DRQやA/D変換回路123などの周辺回路からの転送要求DRQP)の中から選択して起動要求信号SRQを出力する起動要因選択回路131と、該選択回路131からの起動要求信号SRQを受け付ける起動要求受け付け回路132と、該起動要求受け付け回路132からの起動信号STRを上記比較回路CMPiの判定結果に応じてマスクしたりマスクしなかったりする起動マスク回路133と、各チャネルのプライオリティ制御起動マスク回路133から出力された信号を入力しチャネル間の優先順位を判定する優先順位判定回路134と、その判定結果に基づいて動作すべきチャネルiのDMA転送を実行させる転送制御回路135(←変更願います)などから構成されている。
【0028】
なお、図2は4つの転送チャネルのうち1つを示したもので、レジスタDMAiPと比較回路CMPiと起動要因選択回路131と起動要求受け付け回路132と起動マスク回路133と転送制御回路135はチャネルの数だけ設けられる。また、図2には示されていないが、上記回路以外にも例えば転送元アドレスを設定するレジスタや転送先アドレスを設定するレジスタ、転送データ数を計数するカウンタ、制御コードを設定するコントロールレジスタ、内部状態を示すステータスレジスタなどが各チャネル毎に設けられる。
また、EXDMAコントローラ115は外部接続されたデバイスからの転送要求DRQEを受け取り、それに応じて上記DMAコントローラ113と同様の転送制御を行っている。
【0029】
図3には、本実施例のシングルチップマイコンのDMAコントローラ113における処理の手順が示されている。
図3に示されているように、DMAコントローラ113の例えばチャネル0においては、先ず初期設定により優先レベルレジスタDMA0Pに優先レベルが設定される(ステップS1)。なお、この初期設定では、転送元アドレスや転送先アドレス、転送カウンタ(所定回数)、一回の転送要求により一度に転送するデータ量、コマンドレジスタへの制御コードの設定等も行なわれる。初期設定が終了すると、チャネル0に対する起動要求が有ったか否かの判定を要求があるまで繰り返す起動要求待ちに移行する(ステップS2)。
【0030】
チャネル0への起動要求があると、起動要求受け付け回路132がその起動要求を受け付け、比較回路CMP0においてレジスタDMA0Pの設定値とCPU優先レベル制御回路119からの優先レベルとを比較していずれのCPUの優先レベルとチャネル0の優先レベルのいずれが高いか判定する(ステップS3,S4)。そして、チャネル0の優先レベルの方が低い時はこの判定を繰り返し実行し、チャネル0のDMA転送を保留する。
【0031】
上記保留をしている間にCPUによる処理が終了するなどしてCPU優先レベル制御回路119の優先レベルが変更され、ステップS4でチャネル0の優先レベルの方が高いと判定すると、チャネル間の優先順位判定が行われる(ステップS5)。他のチャネル設定やDMA転送の状態により判定条件は変化するが、チャネル0を選択する条件が揃うと、ステップS6へ移行してチャネル0のDMA転送処理を開始し、一回の転送要求により実行するデータ転送が終了したなら転送カウンタに設定された所定回数の転送が終了したか否か判定する。ここで所定回数の転送が終了していないときはステップS2へ戻って次の起動要求信号の入力を待つ(ステップS7,S8)。そして、所定回数の転送処理が終了するとステップS1へ戻って次のDMA転送のための再設定が行なわれる。図3にはチャネル0に関する手順を示したが、他のチャネル1,2,3についても同様である。
【0032】
次に、本発明の第2の実施例を、図4を用いて説明する。図4は、図1におけるCPU111と内部メモリ112、割込みコントローラ118、CPU優先レベル制御回路119の部分を抜き出して、相互関係を示したものである。図4に示されているように、この実施例においては、割込みコントローラ118からCPU111とCPU優先レベル制御回路119の2つに対する信号経路が設けられているとともに、CPU優先レベル制御回路119には、CPU111または割込みコントローラ118のいずれからの入力信号をCPU優先レベルレジスタPLRに供給して設定するか選択可能な選択回路SELが設けられている。
【0033】
この第2実施例が第1実施例と異なる点は、第1実施例ではCPU優先レベル制御回路119への優先レベルの設定のルートがCPUの拡張レジスタEXRからの直接設定のみであるのに対し、第2実施例においてはCPU優先レベル制御回路119への優先レベルの設定のルートとして3つのルートが設けられている点と、設定ルートを複数にしたことに応じてCPU優先レベル制御回路119に異なるルートからの信号の一方を選択して優先レベルレジスタPLRに供給する選択回路SELが設けられている点にある。他の構成は第1実施例と同様である。
【0034】
第2実施例におけるCPU優先レベル制御回路119への第1の設定ルートは、第1の実施例と同様に、CPU内部に設けられているステータスレジスタの一種であるコンディションコードレジスタの拡張部として用意されたレジスタEXRに格納されているコードに基づく設定ルートであり、拡張レジスタEXRの割込みマスクフィールドに格納されているコード(割り込みマスクビット)EXR:IをCPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに転写することで設定が行なわれる。CPUの割込みマスクビットは割込み処理の過程において逐次更新され、CPUによる処理の優先レベルをリアルタイムで反映するため、多重割込みの発生などに伴う優先レベルの複雑な遷移に対しても容易に対応することが可能である。
【0035】
CPU優先レベル制御回路119への第2の設定ルートは、割込みコントローラ118内の各割込み要因ごとの割込み優先レベルを示すレジスタIPRに格納されているコードに基づく設定ルートであり、割込み発生時に割込み優先レベルレジスタIPRA〜IPRFに格納されている当該割込みに対応する割込み優先レベルを示すコードをCPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに転写することで設定が行なわれる。また「システムエラー」と「割込み1」が発生した場合は、対応する割込み優先レベルとして割込みコントローラ118内の「規定値」が選択され、CPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに転写することで設定が行なわれる。なお、この割込み優先レベルを示すコードはCPU優先レベル制御回路119への転送と並行してCPU111へも転送されて拡張レジスタEXRに割込みマスクレベルとして設定される。設定されるタイミングは、通常、割込み発生以前のEXRの値をスタック領域などに退避した後に行われる。
【0036】
前記第1の設定ルートでは、このようにしてCPU111の拡張レジスタEXRに転送された割込みレベルを示すコードをさらにCPU優先レベル制御回路119へ転送するものであるが、第2設定ルートのように割込みコントローラ118からCPU優先レベル制御回路119への直接転送ルートがあることによって、割込み発生時のDMAコントローラ113等におけるバス使用権の優先レベル判定の応答が速くなり、システムのスループットが高くなる。
また、システムエラーのような緊急度の高い割込みが発生した場合において、CPUの処理が介在する前にDMAコントローラ113等が優先レベルを判定することで、速やかにシステムを停止させるようなことができるようになる。
【0037】
CPU優先レベル制御回路119への第3の設定ルートは、バスを介した設定ルートであり、ソフトウェア処理によりCPU111が内部バスIBSを介してCPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに所定の優先レベルを書き込むことで設定が行なわれる。具体的には、レジスタPLRにアドレスが割り当てられ、CPU111がこのレジスタPLRを指定するアドレスと設定値を出力すると、図示しないアドレスデコーダによりレジスタPLRが選択され、そのとき内部バスIBSのデータバス上のデータが取り込まれて設定されるように構成される。
【0038】
このような設定ルートを設けておくことによって、設計者の選択の幅が増大しシングルチップマイコンの使い勝手が向上し、システムの柔軟性も高くなる。例えば、CPUにより各種プログラムを実行させる場合に、実行するプログラムの優先レベルは各プログラム毎に予め想定することができるため、当該プログラムの実行開始時に命令によりCPU優先レベル制御回路119内のCPU優先レベルレジスタPLRへ優先レベルを書き込んでおくことによって、実行するプログラムに最適な優先レベルを設定することができるようになる。
【0039】
なお、図4の実施例において、割込みコントローラ118内の割込み優先レベルレジスタIPRに、「システムエラー」と「割込み1」に対応する割込み優先レベルが「規定値」に固定されているのは、これらの割込みはCPU内の拡張レジスタEXRの割込みマスクビットによってマスクをかけることができない優先順位の最も高いNMI(ノン・マスカブル・インターラプト)と呼ばれる割込みであるためである。
【0040】
次に、本実施例のシングルチップマイコンにおけるCPU111の動作の手順を、図5のフローチャートを用いて説明する。なお、図5はCPU111のみの動作を示したものでなく、図5のフローのうちステップS31は割込みコントローラ118による処理を、またステップS32はCPU優先レベル制御回路119における処理を示している。
システムが立ち上がると、CPU111は先ず初期設定を行なう(ステップS11)。この初期設定では、CPU内の拡張レジスタEXRの割込みマスクビットEXR:Iは最も低い優先レベルに設定され、どのレベルの割込みでも受け付けられるようにされる。また、CPU111は、初期設定で割込みコントローラ118内の割込み優先レベルレジスタIPRA〜IPRFに、各割込みに対する割込み優先順位を設定する。そして、初期設定終了後、CPUはメインプログラムを実行し、通常のCPU処理を開始する(ステップS12)。
【0041】
この通常処理の中でサブルーチンの実行条件が成立するとサブルーチンS20へ移行してサブルーチンを開始する。このサブルーチンでは、CPU内部の割込みマスクビットEXR:Iを当該サブルーチンの優先レベルに応じてセットする(ステップS21)。割込みマスクビットEXR:Iの値をCPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに反映させる(ステップS22)。例えば、他のバスマスタや各種割込みを全く受け付けない状態でサブルーチンを実行したいときは、割込みマスクビットEXR:Iに最も優先レベルの高いレベル「7」を設定し、CPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに転写される。
【0042】
そのため、優先レベルが「7」の場合には、他のバスマスタに邪魔されることなくCPUによるサブルーチン処理S23が優先的に実行される。優先レベルが「6」以下の場合には、サブルーチン処理実行中に他のバスマスタからの要求により内部バスコントローラ116がCPUに対してアクノリッジ信号を適時取り下げることで、他のバスマスタによる処理が優先的に実行される。サブルーチン処理S23が終了すると、CPUは割込みマスクビットEXR:Iを初期値(最も低い優先レベル)に戻す設定をして、割込みマスクビットEXR:Iの値をCPU優先レベルレジスタPLRに反映させてからメインプログラムへ復帰する(ステップS24、25)。
【0043】
一方、通常CPU処理中にシステムエラーもしくは割込みが発生すると、ステップS31,S32を経ての例外処理S40へ移行する。なお、割込みが発生すると、割込みコントローラ118は、発生した割込みに対応した割込み優先レベルレジスタIPRA〜IPRFの値をCPUへ出力する(ステップS31)。このとき、発生した割込みがシステムエラーであれば、割込み優先レベルとして最も高い値「7」が出力される。割込みコントローラ118から出力された割込み優先レベル値IPR[2:0]は、CPU優先レベル制御回路119へ供給される。すると、CPU優先レベル制御回路119は、自己のCPU優先レベルレジスタPLRに設定されている値CPUP[2:0]と割込みコントローラ118から出力された値IPR[2:0]とを比較して、レベルが高い方をCPU優先レベルレジスタPLRに設定する。
【0044】
例外処理S40では、CPUはレジスタEXRの値等を内蔵メモリ(RAM)112のスタックエリアに保存してから、割込みコントローラ118から出力された割込み優先レベル値IPR[2:0]をCPU内部のレジスタEXRの割込みマスクビットEXR:Iに設定する(ステップS41,S42)。それから、ベクタアドレスを参照して割込み要求に対応するプログラムへジャンプする(ステップS43)。
【0045】
割込みプログラムでは、割込み処理を実行してから当該割込み要求をクリアして終了する(ステップS51,S52)。この実行割込み処理の優先レベルが「6」以下の場合には、この割込み処理中に他のバスマスタからの要求により内部バスコントローラ116がCPUに対してアクノリッジ信号を取り下げて、他のバスマスタによる処理が優先的に実行されたり、より優先順位の高い割込みが発生するとその割込み処理が優先実行されたりすることもある。
【0046】
割込み処理が終了すると、割込み復帰処理S60が実行される。割込み復帰処理では、内蔵メモリ112内のスタックエリアに保存されていたレジスタの値等を元のレジスタEXR等に復帰させてから、レジスタEXRの割込みマスクビットEXR:Iの値をCPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに反映させる(ステップS61,S62)。そして、割込み発生時に中断した時点からメインプログラムを再開させる(ステップS63)。
【0047】
図6には、本発明を適用したシングルチップマイコンの第3の実施例が示されている。
この実施例は、CPU優先レベル制御回路119内のCPU優先レベルレジスタPLRに、2つの優先レベル設定フィールドCPUP1,CPUP2を設けたものである。このうち第1のフィールドCPUP1には、CPU111が内部バスIBSのみを使用する割込み処理もしくは例外処理を実行する際の割込みマスクビットが優先レベルとして設定され、第2のフィールドCPUP2には、CPU111が内部バスIBSと外部バスEBSを使用する処理を実行する際の割込み優先レベルが優先レベルとして設定される。
【0048】
そして、第1のフィールドCPUP1に設定されている優先レベルのコードはDMAコントローラ113とデータ転送コントローラ114に供給されて、各コントローラ内の比較回路CMP10〜CMP13またはCMP30によりレジスタDMA0P〜DMA3PまたはDTCPの設定値と比較される。一方、第2のフィールドCPUP2に設定されている優先レベルのコードは外部DMAコントローラ115に供給されて、比較回路CMP20〜CMP23によりレジスタEDMA0P〜EDMA3Pの設定値と比較され、データ転送要求があった時に、上記比較結果に基づいてCPU優先レベルが同じ又は低い場合にデータ転送処理を実行するように構成されている。
【0049】
また、この実施例においては、特に制限されるものでないが、図1における内部バスコントローラ116と外部バスコントローラ117の代わりにバスコントローラ110が設けられている。このバスコントローラ110は、内部バスコントローラ116と外部バスコントローラ117の両方の機能を有するように構成されている。かかる構成は、CPU優先レベルレジスタPLRに2つの優先レベル設定フィールドCPUP1,CPUP2を設けるという上記構成と組み合わせて採用する必要はなく、別々に適用することができる。
【0050】
また、この実施例においても、図4を用いて第2の実施例として説明した構成と同様に、CPU優先レベル制御回路119内のCPU優先レベルレジスタPLRへの優先レベルの設定のルートとして、CPU111の拡張レジスタEXRの割込みマスクビットEXR:I[2:0]を転写するルートの他、割込みコントローラ118からCPU111の拡張レジスタEXRへ供給される割込み優先レベルを優先レベルとして設定ルートと、バスを介してCPU優先レベルレジスタPLRへ優先レベルを設定するルートを設けるようにしてもよい。
【0051】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば上記実施例では、DMAコントローラ113と外部DMAコントローラ115の他にデータ転送コントローラ114を設けているが、これらのコントローラのいずれか1つあるいは2つを有するシングルチップマイコンに対しても適用することができるとともに、DMAコントローラ以外のバスマスタとなる回路を内蔵するシングルチップマイコンに対しても適用できる。
【0052】
また、上記実施例では、CPU優先レベルレジスタPLRに設定されている優先レベルを、チップ内部のバスマスタであるDMAコントローラ113と外部DMAコントローラ115とデータ転送コントローラ114に供給するようにしているが、優先レベルを出力する外部端子を設けてチップ外部のバスマスタとなる外部デバイスに対しても優先レベルを供給して、CPUの優先レベルと比較して動作を開始するか否かを決定させるようにしてもよい。
【0053】
さらに、前記実施例においては、CPU優先レベル制御回路119を設け、そこに設定された優先レベルを示す3ビットのコードをDMAコントローラに供給して、当該DMAコントローラに設定されている優先レベルとCPUのその時点の優先レベルとを比較してDMA転送を行なうか否か判定するようにしているが、CPUの処理を優先するか否かを知らせる信号をCPUから出力させ、他のバスマスタではその信号を参照して処理を行なうか否か判定し、その判定結果に従って処理を実行するように構成することも可能である。
【0054】
ここで、CPUの処理を優先するか否かを知らせる信号がハイレベルとロウレベルの2値信号であり、判定する回路がインバータやシュミット回路のような論理回路である場合はその論理しきい値を判定のための基準値と、また判定する回路が差動増幅回路のような2入力の回路である場合は信号と比較される参照電圧を判定のための基準値とみなすことができる。
【0055】
さらに、上記図2、3においてはDMAコントローラ113の動作について説明を行ったが、EXDMAコントローラ115及びデータ転送コントローラ114についても同様の優先レベルの比較動作を行ったのちデータ転送処理を行っている。
また、データ転送コントローラ113〜115のような複数の転送要求を受け付け可能なバスマスタでは自己の優先レベルを設定する手段として、上記複数の転送要求に対応する優先レベルを設定可能な複数のレジスタ(上記複数の転送要求に対応する優先レベル)を設けて、転送要求を受け付けた時に該転送要求に対応するレジスタの設定値から優先レベルを設定するようにしても良い。
【0056】
また、外部デバイス310は、外部バスEBSを介してデータ転送制御を行うために外部バスコントローラ117に対して外部バスのバス使用権を要求するバスリクエスト信号を出力可能であるが、CPU優先レベル設定回路119は外部デバイス310に対して優先レベルレジスタPLRの値を出力できるようにして、外部デバイス310では優先レベルと自己が保有する比較基準値とを比較して、該バスリクエスト信号を出力するか否か決定するように構成しても良い。
もしくは、上記優先レベルとの比較によって外部バスEBSを介したデータ転送制御の処理を開始するか否か決定するように構成しても良い。
【0057】
さらに、外部デバイス310には、CPUが内蔵されることもありうるが、自己が保有する比較基準値を内蔵されたCPUのプログラム制御や割込み要求などに対応して任意に設定可能な可変設定手段を備えるように構成した上で該PLRの優先レベルに基づく値を自己が保有する比較基準値と比較することが可能となるよう構成しても良い。
さらに、シングルチップマイコン100と外部デバイス310を1個の半導体チップ上に形成しても良い。
【0058】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるDMAコントローラを内蔵したシングルチップマイコンに適用した場合について説明した、本発明はそれに限定されるものでなく、DMAコントローラがシングルチップマイコンとは別のLSIとして構成されているシステムにも適用することができる。
【0059】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、本発明に従うと、DMAコントローラ等のCPU以外のバスマスタからのバス使用権要求によりCPUにおける処理が滞ってシステムのスループットが低下するのを防止できるとともに、CPU以外のバスマスタからのバス使用権要求によりCPUにおける緊急度の高い処理等が妨げられることがないシングルチップマイコンを実現することができる。
【図面の簡単な説明】
【図1】本発明を適用したシングルチップマイコンの一実施例の概略構成を示すブロック図である。
【図2】DMAコントローラのうち本発明に関連する部位の概略構成例を示すブロック図である。
【図3】実施例のDMAコントローラにおけるDMA転送の手順を示すフローチャートである。
【図4】本発明を適用したシングルチップマイコンの第2の実施例の要部を示すブロック図である。
【図5】実施例のシングルチップマイコンにおけるCPUの動作の手順を示すフローチャートである。
【図6】本発明を適用したシングルチップマイコンの第3の実施例の要部を示すブロック図である。
【符号の説明】
100 シングルチップマイコン
111 CPU(中央処理ユニット:バスマスタ)
112 内部メモリ(ROM,RAM)
113 DMAコントローラ(バスマスタ)
114 データ転送コントローラ(バスマスタ)
115 外部DMAコントローラ(バスマスタ)
116 内部バスコントローラ
117 外部バスコントローラ
118 割込みコントローラ
119 CPU優先レベル制御回路
121 タイマ(周辺回路)
122 シリアル通信インタフェース(周辺回路)
123 A/D変換回路(周辺回路)
EXR 拡張レジスタ
IPR 割込み優先レベルレジスタ
PLR 優先レベルレジスタ
CMP 比較回路

【特許請求の範囲】
【請求項1】
信号を伝達するバスと、前記バスに接続可能でバスマスタとなり得る複数の制御回路を備えたデータ処理装置であって、
上記複数の制御回路のいずれか一つは、上記バスの使用権に関し自己の優先レベルを示す信号を出力可能に構成され、
他の制御回路は、上記バスの使用権に関する判定を行なう判定回路を備え、該判定回路は上記いずれか一つの制御回路から出力される優先レベルを示す信号と自己が保有する比較基準値とを比較して、バスを使用した動作を開始するか否か決定するように構成されていることを特徴とするデータ処理装置。
【請求項2】
上記バスの使用権に関する調停を行なうバス調停回路を備え、上記複数の制御回路は上記バス調停回路からの信号に応じてバスを使用した動作を開始もしくは保留するように構成され、上記他の制御回路は上記判定回路の判定結果に基づいて上記バス調停回路に対しバスの使用権を要求する信号を出力するように構成されていることを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
信号を伝達するバスと、バスマスタとなり得る複数の制御回路と、上記複数の制御回路のうちいずれか一つの制御回路の動作優先レベルを設定可能な優先レベル設定回路とを備えたデータ処理装置であって、
上記いずれか一つの制御回路以外の制御回路は上記バスの使用権に関する判定を行なう判定回路を備え、該判定回路は上記優先レベル設定回路から出力される優先レベルを示す信号と自己が保有する比較基準値とを比較して、バスを使用した動作を開始するか否か決定するように構成されていることを特徴とするデータ処理装置。
【請求項4】
上記いずれか一つの制御回路以外の制御回路は上記比較基準値を任意に設定可能な可変設定手段を備えることを特徴とする請求項3に記載のデータ処理装置。
【請求項5】
上記バスの使用権に関する調停を行なうバス調停回路を備え、上記複数の制御回路はそれぞれ上記バス調停回路からの信号に応じてバスを使用した動作を開始もしくは保留するように構成され、上記いずれか一つの制御回路以外の制御回路は上記判定回路の判定結果に基づいて上記バス調停回路に対しバスの使用権を要求する信号を出力するように構成されていることを特徴とする請求項3または4に記載のデータ処理装置。
【請求項6】
上記バス調停回路は、バスサイクル制御用ビットを有するレジスタと前回のバスサイクルでバスを使用したバスマスタを記憶する手段とを備え、上記制御用ビットの状態に応じて、前回のバスサイクルでバスを使用したバスマスタが上記いずれか一つの制御回路の場合にはそれ以外の制御回路によるバスを使用した動作を優先させ、前回のバスサイクルでバスを使用したバスマスタが上記いずれか一つ以外の制御回路の場合には上記いずれか一つの制御回路によるバスを使用した動作を優先させることを特徴とする請求項5に記載のデータ処理装置。
【請求項7】
上記いずれか一つの制御回路はプログラムに従った処理を実行する中央処理ユニットであり、上記いずれか一つ以外の制御回路はバスを介したデータ転送に係る制御を行なうデータ転送制御回路を含むことを特徴とする請求項3〜6のいずれかに記載のデータ処理装置。
【請求項8】
上記データ転送制御回路はデータ転送に係る複数のチャネルを備え、上記可変設定手段は上記複数のチャネルごとに設けられていることを特徴とする請求項7に記載のデータ処理装置。
【請求項9】
上記中央処理ユニットに対する割込み要求を行なう割込み制御回路を備え、上記割込み制御回路は割込みの優先順位を判定しつつ上記中央処理ユニットに対して割込み要求を行なうように構成され、上記中央処理ユニットは上記割込み制御回路からの割込みを許容するか拒否するか決定する判定値を保持するレジスタを備え、該レジスタの判定値が上記優先レベル設定回路に供給されて優先レベルが設定されるように構成されていることを特徴とする請求項7または8に記載のデータ処理装置。
【請求項10】
上記割込み制御回路は受付け可能な割込み優先レベルを設定可能な割込み優先レベル設定手段を備え、割込み発生時に該割込み優先レベル設定手段に設定されている当該割込みに対応した割込み優先レベルを上記中央処理ユニットに供給し、中央処理ユニットは該割込み優先レベルに基づいて上記レジスタの設定を行なうように構成されていることを特徴とする請求項9に記載のデータ処理装置。
【請求項11】
上記割込み優先レベル設定手段に設定されている当該割込みに対応した割込み優先レベルが上記優先レベル設定回路に供給されて優先レベルが設定可能に構成されていることを特徴とする請求項10に記載のデータ処理装置。
【請求項12】
上記優先レベル設定回路は、上記バスを介して優先レベルが設定可能に構成されていることを特徴とする請求項10または11に記載のデータ処理装置。
【請求項13】
外部の装置が接続される外部バスと結合可能な外部端子と、上記バスおよび外部バスを介して外部の装置と内部回路との間のデータ転送を制御する第2のデータ転送制御回路を備え、上記データ転送制御回路および第2データ転送制御回路は各々上記バスの使用権に関する判定を行なう判定回路を備え、該判定回路は上記優先レベル設定回路から出力される優先レベルを示す信号と自己が保有する比較基準値とを比較してバスを使用した動作を開始するか否か決定するように構成されていることを特徴とする請求項7〜12のいずれかに記載のデータ処理装置。
【請求項14】
信号を伝達するバスと、バスマスタとなり得る複数の制御回路を備えたデータ処理装置であって、
上記バスの使用権に関する調停を行なうバス調停回路を備え、
上記バス調停回路は、バスサイクル制御用ビットを有するレジスタと前回のバスサイクルでバスを使用したバスマスタを記憶する手段とを備え、上記制御用ビットの状態に応じて、前回のバスサイクルでバスを使用したバスマスタが上記いずれか一つの制御回路の場合にはそれ以外の制御回路によるバスを使用した動作を優先させ、前回のバスサイクルでバスを使用したバスマスタが上記いずれか一つ以外の制御回路の場合には上記いずれか一つの制御回路によるバスを使用した動作を優先させることを特徴とするデータ処理装置。

【図1】
image rotate



【図2】
image rotate



【図3】
image rotate



【図4】
image rotate



【図5】
image rotate



【図6】
image rotate


【公開番号】特開2004−38265(P2004−38265A)
【公開日】平成16年2月5日(2004.2.5)
【国際特許分類】
【出願番号】特願2002−190647(P2002−190647)
【出願日】平成14年6月28日(2002.6.28)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【出願人】(000233594)株式会社ルネサス北日本セミコンダクタ (34)
【Fターム(参考)】