(57)【要約】【課題】ＤＭＡコントローラ等のＣＰＵ以外のバスマスタからのバス使用権要求によりＣＰＵにおける処理が滞ってシステムのスループットが低下するのを防止できるシングルチップマイコンを実現する。【解決手段】ＣＰＵ優先レベル制御回路（１１９）を設け、そこに設定された優先レベルを示す信号をＣＰＵ以外のバスマスタ（ＤＭＡコントローラ１１３，１１５）に供給して、当該ＣＰＵ以外のバスマスタに設定されている優先レベル（比較基準値）とＣＰＵのその時点の優先レベルとを比較して動作（ＤＭＡ転送）を開始するか否か判定するように構成した。【選択図】　図２
2004038265.tif 000002
【特許請求の範囲】
【請求項１】
信号を伝達するバスと、前記バスに接続可能でバスマスタとなり得る複数の制御回路を備えたデータ処理装置であって、
上記複数の制御回路のいずれか一つは、上記バスの使用権に関し自己の優先レベルを示す信号を出力可能に構成され、
他の制御回路は、上記バスの使用権に関する判定を行なう判定回路を備え、該判定回路は上記いずれか一つの制御回路から出力される優先レベルを示す信号と自己が保有する比較基準値とを比較して、バスを使用した動作を開始するか否か決定するように構成されていることを特徴とするデータ処理装置。
【請求項２】
上記バスの使用権に関する調停を行なうバス調停回路を備え、上記複数の制御回路は上記バス調停回路からの信号に応じてバスを使用した動作を開始もしくは保留するように構成され、上記他の制御回路は上記判定回路の判定結果に基づいて上記バス調停回路に対しバスの使用権を要求する信号を出力するように構成されていることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
信号を伝達するバスと、バスマスタとなり得る複数の制御回路と、上記複数の制御回路のうちいずれか一つの制御回路の動作優先レベルを設定可能な優先レベル設定回路とを備えたデータ処理装置であって、
上記いずれか一つの制御回路以外の制御回路は上記バスの使用権に関する判定を行なう判定回路を備え、該判定回路は上記優先レベル設定回路から出力される優先レベルを示す信号と自己が保有する比較基準値とを比較して、バスを使用した動作を開始するか否か決定するように構成されていることを特徴とするデータ処理装置。
【請求項４】
上記いずれか一つの制御回路以外の制御回路は上記比較基準値を任意に設定可能な可変設定手段を備えることを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
上記バスの使用権に関する調停を行なうバス調停回路を備え、上記複数の制御回路はそれぞれ上記バス調停回路からの信号に応じてバスを使用した動作を開始もしくは保留するように構成され、上記いずれか一つの制御回路以外の制御回路は上記判定回路の判定結果に基づいて上記バス調停回路に対しバスの使用権を要求する信号を出力するように構成されていることを特徴とする請求項３または４に記載のデータ処理装置。
【請求項６】
上記バス調停回路は、バスサイクル制御用ビットを有するレジスタと前回のバスサイクルでバスを使用したバスマスタを記憶する手段とを備え、上記制御用ビットの状態に応じて、前回のバスサイクルでバスを使用したバスマスタが上記いずれか一つの制御回路の場合にはそれ以外の制御回路によるバスを使用した動作を優先させ、前回のバスサイクルでバスを使用したバスマスタが上記いずれか一つ以外の制御回路の場合には上記いずれか一つの制御回路によるバスを使用した動作を優先させることを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
上記いずれか一つの制御回路はプログラムに従った処理を実行する中央処理ユニットであり、上記いずれか一つ以外の制御回路はバスを介したデータ転送に係る制御を行なうデータ転送制御回路を含むことを特徴とする請求項３〜６のいずれかに記載のデータ処理装置。
【請求項８】
上記データ転送制御回路はデータ転送に係る複数のチャネルを備え、上記可変設定手段は上記複数のチャネルごとに設けられていることを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
上記中央処理ユニットに対する割込み要求を行なう割込み制御回路を備え、上記割込み制御回路は割込みの優先順位を判定しつつ上記中央処理ユニットに対して割込み要求を行なうように構成され、上記中央処理ユニットは上記割込み制御回路からの割込みを許容するか拒否するか決定する判定値を保持するレジスタを備え、該レジスタの判定値が上記優先レベル設定回路に供給されて優先レベルが設定されるように構成されていることを特徴とする請求項７または８に記載のデータ処理装置。
【請求項１０】
上記割込み制御回路は受付け可能な割込み優先レベルを設定可能な割込み優先レベル設定手段を備え、割込み発生時に該割込み優先レベル設定手段に設定されている当該割込みに対応した割込み優先レベルを上記中央処理ユニットに供給し、中央処理ユニットは該割込み優先レベルに基づいて上記レジスタの設定を行なうように構成されていることを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
上記割込み優先レベル設定手段に設定されている当該割込みに対応した割込み優先レベルが上記優先レベル設定回路に供給されて優先レベルが設定可能に構成されていることを特徴とする請求項１０に記載のデータ処理装置。
【請求項１２】
上記優先レベル設定回路は、上記バスを介して優先レベルが設定可能に構成されていることを特徴とする請求項１０または１１に記載のデータ処理装置。
【請求項１３】
外部の装置が接続される外部バスと結合可能な外部端子と、上記バスおよび外部バスを介して外部の装置と内部回路との間のデータ転送を制御する第２のデータ転送制御回路を備え、上記データ転送制御回路および第２データ転送制御回路は各々上記バスの使用権に関する判定を行なう判定回路を備え、該判定回路は上記優先レベル設定回路から出力される優先レベルを示す信号と自己が保有する比較基準値とを比較してバスを使用した動作を開始するか否か決定するように構成されていることを特徴とする請求項７〜１２のいずれかに記載のデータ処理装置。
【請求項１４】
信号を伝達するバスと、バスマスタとなり得る複数の制御回路を備えたデータ処理装置であって、
上記バスの使用権に関する調停を行なうバス調停回路を備え、
上記バス調停回路は、バスサイクル制御用ビットを有するレジスタと前回のバスサイクルでバスを使用したバスマスタを記憶する手段とを備え、上記制御用ビットの状態に応じて、前回のバスサイクルでバスを使用したバスマスタが上記いずれか一つの制御回路の場合にはそれ以外の制御回路によるバスを使用した動作を優先させ、前回のバスサイクルでバスを使用したバスマスタが上記いずれか一つ以外の制御回路の場合には上記いずれか一つの制御回路によるバスを使用した動作を優先させることを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサもしくはマイクロコンピュータのようなデータ処理装置さらにはバスの使用権の調停方式に適用して有効な技術に関し、例えばＣＰＵに代わってＤＭＡ（ダイレクト・メモリ・アクセス）データ転送を行なうＤＭＡコントローラのようなバスを制御可能なバスマスタとなる回路を備えた１チップのマイクロプロセッサもしくはマイクロコンピュータ（以下、これらをシングルチップマイコンと称する）に利用して有効な技術に関する。
【０００２】
【従来の技術】
従来、中央処理ユニット（以下、ＣＰＵと称する）、内部メモリ、タイマ回路やシリアル通信インタフェース回路等の周辺回路等を含むシングルチップマイコンには、メモリや周辺回路間、更には内部回路と外部に接続されたデバイス（例えばメモリやＡＳＩＣ）間でＣＰＵを介さずに直接データの転送を行なうＤＭＡコントローラが設けられているものがある。ＤＭＡコントローラは、シングルチップマイコンとは別個のＬＳＩとして構成されることもあるが、最近ではシングルチップマイコンに内蔵されることが多くなっている。
【０００３】
シングルチップマイコンでは、通常ＣＰＵがバスを制御しているが、ＤＭＡコントローラがＤＭＡ転送を実行する際、ＣＰＵからバス使用権を取得してバスを制御することができるため、ＤＭＡコントローラはＣＰＵと共にバスマスタと呼ばれることがある。ＣＰＵ以外にバスマスタとなる回路を有するシステムでは、一般にバス使用権の調停を行なうバスアービタと呼ばれる回路が設けられる。一方、複数のバスを有するシステムでは、バス間の信号の競合を防止したりバス間の信号のやりとりを円滑にするためバスコントローラと呼ばれる回路が設けられる。かかるバスコントローラが設けられるシステムでは、前記バスアービタの機能はバスコントローラに設けられることが多い。
【０００４】
また、従来、ＤＭＡコントローラを有するシングルチップマイコンにおいては、一般に、ＤＭＡコントローラからのＤＭＡ転送要求があるとＣＰＵがバス使用権を開放してＤＭＡコントローラがバスを優先的に使用できるように構成されていた。つまり、複数のバスマスタを有する従来のシステムでは、ＣＰＵのバス使用権の優先順位が他のバスマスタに比べて低くなっていた。これは、ＤＭＡ転送要求は、発生頻度は多くないものの優先レベルが高い処理であることが多いと考えられていたためである。
【０００５】
【発明が解決しようとする課題】
本発明者等は、ＤＭＡコントローラのようなバスマスタとなり得る回路の数が比較的多いシステムを制御するためのシングルチップマイコンについて検討を行なった結果、バスマスタの数が多いシステムでは、バスマスタからのバス使用権の要求が頻繁に発生することにより、ＣＰＵの処理が滞ってシステム全体としてのスループットが著しく低下したり、システムエラー処理のような緊急度の高い処理が待たされることでシステムの動作に異常を来たすことがあるという課題があることを見出した。
【０００６】
また、かかる不具合は、ＣＰＵにおける緊急度の高い処理等が他のバスマスタからのバス使用権要求で妨げられないようにプログラムによる処理を予め調整しておくことで回避することができるが、そのためには、システムの中で起こり得る最悪のケースを想定した調整が必要となりその調整作業が面倒であるとともに、最悪のケースを想定した調整をしてしまうと、逆にシステム全体としてのパフォーマンスが落ちてしまうという不具合が生じることが分かった。
【０００７】
本発明の目的は、データ転送制御回路（ＤＭＡコントローラ）等のＣＰＵ以外のバスマスタからのバス使用権要求によりＣＰＵにおける処理が滞ってシステムのスループットが低下するのを防止できるシングルチップマイコンのようなデータ処理装置を提供することにある。
本発明の他の目的は、データ転送制御回路等のＣＰＵ以外のバスマスタからのバス使用権要求によりＣＰＵにおける緊急度の高い処理等が妨げられることがないデータ処理装置を提供することにある。
本発明のさらに他の目的は、ＣＰＵ以外に複数のバスマスタを有するシステムの設計を容易化することができるデータ処理装置を提供することにある。
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添附図面から明らかになるであろう。
【０００８】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
すなわち、中央処理ユニット以外のバスマスタとなる回路を備えたシングルチップマイコンのようなデータ処理装置において、中央処理ユニットは上記バスの使用権に関し自己の優先レベルを示す信号を出力するように構成し、中央処理ユニット以外のバスマスタとなる回路には上記バスの使用権に関する判定を行なう判定回路を設け、該判定回路は上記中央処理ユニットから出力される優先レベルを示す信号と自己が保有する比較基準値（自己の優先レベル）とを比較してバスを使用した動作を開始するか否か決定するように構成する。あるいは、中央処理ユニットの動作優先レベルを設定可能な優先レベル設定回路を設け、該優先レベル設定回路から出力される優先レベルを示す信号と自己が保有する比較基準値とを比較してバスを使用した動作を開始するか否か決定するように構成したものである。
【０００９】
上記した手段によれば、ＣＰＵ以外のバスマスタが中央処理ユニットの優先レベルと自己の比較基準値とを判定して動作を開始するので、ＤＭＡコントローラ等のＣＰＵ以外のバスマスタからのバス使用権要求によりＣＰＵにおける処理が滞ってシステムのスループットが低下するのを防止できるとともに、ＣＰＵ以外のバスマスタからのバス使用権要求によりＣＰＵにおける緊急度の高い処理等が妨げられるのを回避することができる。
【００１０】
【発明の実施の形態】
以下、本発明の好適な実施例を図面に基づいて説明する。
図１には、本発明を、バスマスタとして動作するＤＭＡコントローラを備えたシングルチップマイコンに適用した場合の一実施例の概略構成が示されている。特に制限されないが、図１に示されている各回路ブロックは、公知の半導体集積回路の製造技術により、単結晶シリコンのような１個の半導体チップ上に形成されている。
【００１１】
図１に示されているように、この実施例のシングルチップマイコン１００は、プログラムの命令を解読してデータの演算処理を行なったりチップ全体の制御を行なうプログラム制御方式の中央処理ユニット（ＣＰＵ）１１１、ＣＰＵ１１１が実行するプログラムを格納したりＣＰＵの作業領域や割込みの際のスタックエリアを提供する内蔵メモリ（ＲＯＭ，ＲＡＭ）１１２、ＣＰＵ１１１に代わって上記内蔵メモリとタイマ等の周辺回路あるいはハードディスク装置のような外部装置との間でＤＭＡ方式の高速データ転送制御を行なうＤＭＡコントローラ（ＤＭＡＣ）１１３、該ＤＭＡコントローラ１１３よりも低速であるがチップ内部で同様なＤＭＡデータ転送を行なうデータ転送コントローラ（ＤＴＣ）１１４、ＣＰＵ１１１に代わって外部装置間あるいは外部装置と外部メモリ等との間でＤＭＡ方式のデータ転送制御を行なう外部ＤＭＡコントローラ（ＥＸＤＭＡＣ）１１５、内部バスコントローラ１１６、外部バスコントローラ１１７、所定の割込み要因の発生に基づいてＣＰＵに対して割込み要求を行なう割込みコントローラ（ＩＮＴＣ）１１８などを備えている。
【００１２】
ＤＭＡコントローラ１１３と外部ＤＭＡコントローラ１１５は、特に制限されるものではないがそれぞれ４つの転送チャネルを備えており、ＤＭＡコントローラ１１３にはＡ／Ｄ変換回路１２３などの周辺回路や外部デバイス３１０等から転送要求信号ＤＲＱＰ，ＤＲＱが入力され、外部ＤＭＡコントローラ１１５には外部デバイス３１０等から転送要求信号ＤＲＱＥが入力される。データ転送コントローラ１１４は、主としてＡ／Ｄ変換回路１２３などの周辺回路からの転送要求に応じてデータ転送を制御するもので、ＤＭＡコントローラ１１３による転送よりも低速であるが、内部メモリ１１２を利用して転送チャネルの設定が行なわれるように構成されることで、例えば１００個近いチャネルのデータ転送処理を行なうことも可能となり、内部メモリ１１２に格納することの出来る転送チャネルの設定は、対応する転送要求信号ごとに設定されることが可能とされ、転送要求信号に応じて転送チャネルを割り振ることができるようにされる。
【００１３】
内部バスコントローラ１１６は、ＣＰＵ１１１や内蔵メモリ１１２，データ転送コントローラ１１３，１１４間を接続する内部バスＩＢＳとタイマ１２１，シリアル通信インタフェース（ＳＣＩ）１２２，Ａ／Ｄ変換回路１２３などの周辺回路が接続された周辺バスＰＢＳとの間の信号のやりとりを可能にしたり、ＣＰＵ１１１，データ転送コントローラ１１３，１１４，１１５のバス使用権を調停したりする。外部バスコントローラ１１７は、内部バスＩＢＳと外部バスＥＢＳ上の信号のタイミングを調整して２つのバス間の信号のやりとりを可能にしたり、外部データ転送コントローラ１１５や外部のバスマスタとなる外部デバイスのバス使用権を調停したりする。内部バスコントローラ１１６と外部バスコントローラ１１７は一つのバスアービタに関するコントローラとして存在し、内部と外部のバス制御が可能となるように構成されていても良い。
【００１４】
なお、図１において、符号３１０は外部バスＥＢＳに接続されたハードディスク装置やプリンタなどの外部デバイス（装置）、３２０は外部バスＥＢＳに接続された外部メモリ（ＲＯＭ，ＲＡＭ）である。外部デバイス３１０にはＡＳＩＣ等で構成されバスマスタとして動作可能なマイコンあるいはコントローラチップが内蔵されることもある。外部メモリ３２０は、記憶容量が制限された内部メモリ１１２を補うことも可能であり、ＣＰＵ１１１が実行するプログラムやＣＰＵが割込み発生時等に参照するベクタアドレス、システムに固有の各種データが格納される。
【００１５】
ＤＭＡコントローラ１１３や外部ＤＭＡコントローラ１１５がＤＭＡ転送制御を行なう場合、内部バスコントローラ１１６または外部バスコントローラ１１７に対してバス使用権を要求するバスリクエスト信号ＢＲＱ１，ＢＲＱ２を送り、内部バスコントローラ１１６または外部バスコントローラ１１７はＣＰＵ１１１が実行中の処理を終了した時点でＣＰＵ１１１に対してバスを使用する権利がないことを示すアクノリッジ信号ＡＣＫ０を送る一方、ＤＭＡコントローラ１１３や外部ＤＭＡコントローラ１１５に対してはバスの使用可能を示すアクノリッジ信号ＡＣＫ１，ＡＣＫ２を送る。
【００１６】
図示しないが、データ転送コントローラ１１４に関しても同様である。この実施例のシングルチップマイコンでは、ＣＰＵ１１１から内部バスコントローラ１１６または外部バスコントローラ１１７に対してバスの使用権を要求するバスリクエスト信号はなく、ＣＰＵ１１１は他のバスマスタがバスを使用しないときはいつでもバスを使用できるという構成が採用されている。
【００１７】
さらに、この実施例のシングルチップマイコン１００には、ＣＰＵ１１１の動作優先レベルないしはバスマスタとしての優先レベル（バス使用権に関する優先レベル）を設定可能なＣＰＵ優先レベル制御回路１１９が設けられている。一方、ＤＭＡコントローラ１１３と外部ＤＭＡコントローラ１１５には、４つの転送チャネルごとに優先レベル（比較基準値）を設定可能なレジスタＤＭＡ０Ｐ〜ＤＭＡ３ＰとＥＤＭＡ０Ｐ〜ＥＤＭＡ３Ｐおよびこれらのレジスタの設定値と前記ＣＰＵ優先レベル制御回路１１９の設定値とを比較していずれの優先レベルが高いか判定する判定回路ＣＭＰ１０〜ＣＭＰ１３とＣＭＰ２０〜ＣＭＰ２３が設けられている。また、データ転送コントローラ１１４には、優先レベルを設定可能な１個のレジスタＤＴＣＰおよびこのレジスタの設定値と前記ＣＰＵ優先レベル制御回路１１９の設定値とを比較していずれの優先レベルが高いか判定する判定回路ＣＭＰ３０が設けられている。
【００１８】
ＤＭＡコントローラ１１３、外部ＤＭＡコントローラ１１５およびデータ転送コントローラ１１４は、前記ＣＰＵ優先レベル制御回路１１９の設定値とそれぞれ自己のレジスタに設定されている優先レベルとを比較し、自己のレジスタに設定されている優先レベルが同じか高い場合にデータ転送を実行し、優先レベルが低い時はデータ転送要求を保留して転送サイクルを実行しないように構成されている。データ転送コントローラ１１４にレジスタＤＴＣＰを設ける代わりに、内蔵メモリ（ＲＡＭ）１１２を利用して優先レベルを設定するようにしても良い。
【００１９】
自己のレジスタに、ＣＰＵ優先レベル制御回路１１９の設定値と同一の優先レベルが設定されていた場合には、転送サイクルを実行する為、バスサイクルが競合してしまう。バスサイクルが競合した場合は、バスコントローラにより予め定められた優先順位に従ってバス権の調停が行われる。予め定められた優先順位は、この実施例では、外部ＤＭＡコントローラ１１５−ＤＭＡコントローラ１１３−データ転送コントローラ１１４−ＣＰＵ１１１の順であり、ＣＰＵ１１１に最も低い優先順位が与えられている。
【００２０】
本実施例においては、このような動作環境において、ＣＰＵ１１１による内部バスのバス使用権と、ＤＭＡコントローラ１１３，データ転送コントローラ１１４による内部バスのバス使用権とが競合した場合に最も順位の低いＣＰＵ１１１によるバスサイクルが長時間実行されなくなる事態を回避するため、内部バスコントローラ１１６内のコントロールレジスタに、内部バス制御ビットＩＢＣＣＳを設けている。
【００２１】
そして、この制御ビットＩＢＣＣＳに“１”が立っていると、内部バスコントローラ１１６は、前回のバスサイクルでバス使用権を所有したバスマスタがＣＰＵでなかったときは次回のバスサイクルでバス使用権をＣＰＵに渡し、前回のバスサイクルでバス使用権を所有したバスマスタがＣＰＵであったときは次回のバスサイクルではバス使用権を他のバスマスタに渡す通常の調停を行なう。
これにより、同一の優先レベルが設定されているデータ転送要求とＣＰＵのバスサイクルが競合する場合にも、ＣＰＵがバス使用権を取得できる確率をおおよそ５０％にすることができる。制御ビットＩＢＣＣＳは、プログラムによってバスを介して設定可能に構成されている。ＣＰＵの拡張レジスタＥＸＲ内の割込みマスクビットに応じて制御ビットＩＢＣＣＳを設定するように構成しても良い。
【００２２】
また、外部バスコントローラ１１７内のコントロールレジスタにも、制御ビットＩＢＣＣＳと同様な機能を有する外部バス制御ビットＥＢＣＣＳが設けてられており、ＣＰＵ１１１による外部バスのバス使用権と、ＤＭＡコントローラ１１３，外部ＤＭＡコントローラ１１５による外部バスのバス使用権とが競合した場合にバス使用権の優先順位の低いＣＰＵ１１１によるバスサイクルが長時間実行されなくなる事態を回避できるようになっている。内部バスコントローラ１１６内の内部バス制御ビットＩＢＣＣＳと外部バスコントローラ１１７内の外部バス制御ビットＥＢＣＣＳは共通のコントロールレジスタに設けることも可能である。
【００２３】
なお、優先レベルを設定可能な上記レジスタＤＭＡ０Ｐ〜ＤＭＡ３Ｐ，ＥＤＭＡ０Ｐ〜ＥＤＭＡ３Ｐ，ＤＴ０Ｐは専用のレジスタとして設けても良いが、もともと各コントローラに設けられているレジスタの未使用フィールドを利用したり、レジスタのビット数を拡張して設けるようにしても良い。
【００２４】
特に制限されるものでないが、この実施例においては、ＣＰＵ優先レベル制御回路１１９における優先レベルの設定は、例えばＣＰＵ内部に設けられているステータスレジスタの一種であるコンディションコードレジスタの拡張部として用意された拡張レジスタＥＸＲの割込みマスクフィールドに格納されている３ビットのコードに基づいて行なわれるように構成されており、拡張レジスタＥＸＲの割込みマスクフィールドに格納されているコード（割り込みマスクビット）ＥＸＲ：ＩをＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに転写することによって設定が行なわれる。この実施例では、割込みマスクは３ビットであるので、優先レベルは８段階に設定可能である。ただし、このマスクビットは３ビットに限定されるものでない。
【００２５】
上記拡張レジスタＥＸＲの割込みマスクフィールドは、ＣＰＵ１１１が割込みコントローラ１１８からの割込み要求に応じて現在実行中の割り込みの優先レベルよりも低い割込み要求を拒否し実行中の割り込みの優先レベルよりも高い割込み要求のみを受け付けられるようにするためのコードが格納されるもので、例えばＣＰＵが割込みを受け付けたときにその割込みに対応した割込みコントローラ１１８内の割込み優先レベルレジスタＩＰＲの割込みの優先レベルを示す値（割込み優先レベル）を転写させることによって設定を行なうことができる。
【００２６】
なお、この割込みマスクフィールドの３ビットのコード（割り込みマスクビット）ＥＸＲ：Ｉは、割込みコントローラ１１８に供給され、割込み要求が入った時に図示しないコンパレータで割込み優先レベルレジスタＩＰＲに格納されている当該割込みに対応するコードと比較され、割込みの可否の判定にも利用される。
【００２７】
次に、ＤＭＡコントローラ１１３を例にとって、バスマスタとしての優先レベルを判定する判定回路の構成例と判定動作について、図２および図３を用いて説明する。
図２に示されているように、例えばＤＭＡコントローラ１１３には、各転送チャネルごとに優先レベルを設定可能な前述のレジスタＤＭＡｉＰ（ｉ＝０，１，２，３）と、これらのレジスタの設定値と前記ＣＰＵ優先レベル制御回路１１９の設定値ＣＰＵＰ［２：０］とを比較していずれの優先レベルが高いか判定する比較回路ＣＭＰｉの他に、チャネルｉの起動要因となる複数の起動要求（外部に接続されたデバイスからの転送要求ＤＲＱやＡ／Ｄ変換回路１２３などの周辺回路からの転送要求ＤＲＱＰ）の中から選択して起動要求信号ＳＲＱを出力する起動要因選択回路１３１と、該選択回路１３１からの起動要求信号ＳＲＱを受け付ける起動要求受け付け回路１３２と、該起動要求受け付け回路１３２からの起動信号ＳＴＲを上記比較回路ＣＭＰｉの判定結果に応じてマスクしたりマスクしなかったりする起動マスク回路１３３と、各チャネルのプライオリティ制御起動マスク回路１３３から出力された信号を入力しチャネル間の優先順位を判定する優先順位判定回路１３４と、その判定結果に基づいて動作すべきチャネルｉのＤＭＡ転送を実行させる転送制御回路１３５（←変更願います）などから構成されている。
【００２８】
なお、図２は４つの転送チャネルのうち１つを示したもので、レジスタＤＭＡｉＰと比較回路ＣＭＰｉと起動要因選択回路１３１と起動要求受け付け回路１３２と起動マスク回路１３３と転送制御回路１３５はチャネルの数だけ設けられる。また、図２には示されていないが、上記回路以外にも例えば転送元アドレスを設定するレジスタや転送先アドレスを設定するレジスタ、転送データ数を計数するカウンタ、制御コードを設定するコントロールレジスタ、内部状態を示すステータスレジスタなどが各チャネル毎に設けられる。
また、ＥＸＤＭＡコントローラ１１５は外部接続されたデバイスからの転送要求ＤＲＱＥを受け取り、それに応じて上記ＤＭＡコントローラ１１３と同様の転送制御を行っている。
【００２９】
図３には、本実施例のシングルチップマイコンのＤＭＡコントローラ１１３における処理の手順が示されている。
図３に示されているように、ＤＭＡコントローラ１１３の例えばチャネル０においては、先ず初期設定により優先レベルレジスタＤＭＡ０Ｐに優先レベルが設定される（ステップＳ１）。なお、この初期設定では、転送元アドレスや転送先アドレス、転送カウンタ（所定回数）、一回の転送要求により一度に転送するデータ量、コマンドレジスタへの制御コードの設定等も行なわれる。初期設定が終了すると、チャネル０に対する起動要求が有ったか否かの判定を要求があるまで繰り返す起動要求待ちに移行する（ステップＳ２）。
【００３０】
チャネル０への起動要求があると、起動要求受け付け回路１３２がその起動要求を受け付け、比較回路ＣＭＰ０においてレジスタＤＭＡ０Ｐの設定値とＣＰＵ優先レベル制御回路１１９からの優先レベルとを比較していずれのＣＰＵの優先レベルとチャネル０の優先レベルのいずれが高いか判定する（ステップＳ３，Ｓ４）。そして、チャネル０の優先レベルの方が低い時はこの判定を繰り返し実行し、チャネル０のＤＭＡ転送を保留する。
【００３１】
上記保留をしている間にＣＰＵによる処理が終了するなどしてＣＰＵ優先レベル制御回路１１９の優先レベルが変更され、ステップＳ４でチャネル０の優先レベルの方が高いと判定すると、チャネル間の優先順位判定が行われる（ステップＳ５）。他のチャネル設定やＤＭＡ転送の状態により判定条件は変化するが、チャネル０を選択する条件が揃うと、ステップＳ６へ移行してチャネル０のＤＭＡ転送処理を開始し、一回の転送要求により実行するデータ転送が終了したなら転送カウンタに設定された所定回数の転送が終了したか否か判定する。ここで所定回数の転送が終了していないときはステップＳ２へ戻って次の起動要求信号の入力を待つ（ステップＳ７，Ｓ８）。そして、所定回数の転送処理が終了するとステップＳ１へ戻って次のＤＭＡ転送のための再設定が行なわれる。図３にはチャネル０に関する手順を示したが、他のチャネル１，２，３についても同様である。
【００３２】
次に、本発明の第２の実施例を、図４を用いて説明する。図４は、図１におけるＣＰＵ１１１と内部メモリ１１２、割込みコントローラ１１８、ＣＰＵ優先レベル制御回路１１９の部分を抜き出して、相互関係を示したものである。図４に示されているように、この実施例においては、割込みコントローラ１１８からＣＰＵ１１１とＣＰＵ優先レベル制御回路１１９の２つに対する信号経路が設けられているとともに、ＣＰＵ優先レベル制御回路１１９には、ＣＰＵ１１１または割込みコントローラ１１８のいずれからの入力信号をＣＰＵ優先レベルレジスタＰＬＲに供給して設定するか選択可能な選択回路ＳＥＬが設けられている。
【００３３】
この第２実施例が第１実施例と異なる点は、第１実施例ではＣＰＵ優先レベル制御回路１１９への優先レベルの設定のルートがＣＰＵの拡張レジスタＥＸＲからの直接設定のみであるのに対し、第２実施例においてはＣＰＵ優先レベル制御回路１１９への優先レベルの設定のルートとして３つのルートが設けられている点と、設定ルートを複数にしたことに応じてＣＰＵ優先レベル制御回路１１９に異なるルートからの信号の一方を選択して優先レベルレジスタＰＬＲに供給する選択回路ＳＥＬが設けられている点にある。他の構成は第１実施例と同様である。
【００３４】
第２実施例におけるＣＰＵ優先レベル制御回路１１９への第１の設定ルートは、第１の実施例と同様に、ＣＰＵ内部に設けられているステータスレジスタの一種であるコンディションコードレジスタの拡張部として用意されたレジスタＥＸＲに格納されているコードに基づく設定ルートであり、拡張レジスタＥＸＲの割込みマスクフィールドに格納されているコード（割り込みマスクビット）ＥＸＲ：ＩをＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに転写することで設定が行なわれる。ＣＰＵの割込みマスクビットは割込み処理の過程において逐次更新され、ＣＰＵによる処理の優先レベルをリアルタイムで反映するため、多重割込みの発生などに伴う優先レベルの複雑な遷移に対しても容易に対応することが可能である。
【００３５】
ＣＰＵ優先レベル制御回路１１９への第２の設定ルートは、割込みコントローラ１１８内の各割込み要因ごとの割込み優先レベルを示すレジスタＩＰＲに格納されているコードに基づく設定ルートであり、割込み発生時に割込み優先レベルレジスタＩＰＲＡ〜ＩＰＲＦに格納されている当該割込みに対応する割込み優先レベルを示すコードをＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに転写することで設定が行なわれる。また「システムエラー」と「割込み１」が発生した場合は、対応する割込み優先レベルとして割込みコントローラ１１８内の「規定値」が選択され、ＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに転写することで設定が行なわれる。なお、この割込み優先レベルを示すコードはＣＰＵ優先レベル制御回路１１９への転送と並行してＣＰＵ１１１へも転送されて拡張レジスタＥＸＲに割込みマスクレベルとして設定される。設定されるタイミングは、通常、割込み発生以前のＥＸＲの値をスタック領域などに退避した後に行われる。
【００３６】
前記第１の設定ルートでは、このようにしてＣＰＵ１１１の拡張レジスタＥＸＲに転送された割込みレベルを示すコードをさらにＣＰＵ優先レベル制御回路１１９へ転送するものであるが、第２設定ルートのように割込みコントローラ１１８からＣＰＵ優先レベル制御回路１１９への直接転送ルートがあることによって、割込み発生時のＤＭＡコントローラ１１３等におけるバス使用権の優先レベル判定の応答が速くなり、システムのスループットが高くなる。
また、システムエラーのような緊急度の高い割込みが発生した場合において、ＣＰＵの処理が介在する前にＤＭＡコントローラ１１３等が優先レベルを判定することで、速やかにシステムを停止させるようなことができるようになる。
【００３７】
ＣＰＵ優先レベル制御回路１１９への第３の設定ルートは、バスを介した設定ルートであり、ソフトウェア処理によりＣＰＵ１１１が内部バスＩＢＳを介してＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに所定の優先レベルを書き込むことで設定が行なわれる。具体的には、レジスタＰＬＲにアドレスが割り当てられ、ＣＰＵ１１１がこのレジスタＰＬＲを指定するアドレスと設定値を出力すると、図示しないアドレスデコーダによりレジスタＰＬＲが選択され、そのとき内部バスＩＢＳのデータバス上のデータが取り込まれて設定されるように構成される。
【００３８】
このような設定ルートを設けておくことによって、設計者の選択の幅が増大しシングルチップマイコンの使い勝手が向上し、システムの柔軟性も高くなる。例えば、ＣＰＵにより各種プログラムを実行させる場合に、実行するプログラムの優先レベルは各プログラム毎に予め想定することができるため、当該プログラムの実行開始時に命令によりＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲへ優先レベルを書き込んでおくことによって、実行するプログラムに最適な優先レベルを設定することができるようになる。
【００３９】
なお、図４の実施例において、割込みコントローラ１１８内の割込み優先レベルレジスタＩＰＲに、「システムエラー」と「割込み１」に対応する割込み優先レベルが「規定値」に固定されているのは、これらの割込みはＣＰＵ内の拡張レジスタＥＸＲの割込みマスクビットによってマスクをかけることができない優先順位の最も高いＮＭＩ（ノン・マスカブル・インターラプト）と呼ばれる割込みであるためである。
【００４０】
次に、本実施例のシングルチップマイコンにおけるＣＰＵ１１１の動作の手順を、図５のフローチャートを用いて説明する。なお、図５はＣＰＵ１１１のみの動作を示したものでなく、図５のフローのうちステップＳ３１は割込みコントローラ１１８による処理を、またステップＳ３２はＣＰＵ優先レベル制御回路１１９における処理を示している。
システムが立ち上がると、ＣＰＵ１１１は先ず初期設定を行なう（ステップＳ１１）。この初期設定では、ＣＰＵ内の拡張レジスタＥＸＲの割込みマスクビットＥＸＲ：Ｉは最も低い優先レベルに設定され、どのレベルの割込みでも受け付けられるようにされる。また、ＣＰＵ１１１は、初期設定で割込みコントローラ１１８内の割込み優先レベルレジスタＩＰＲＡ〜ＩＰＲＦに、各割込みに対する割込み優先順位を設定する。そして、初期設定終了後、ＣＰＵはメインプログラムを実行し、通常のＣＰＵ処理を開始する（ステップＳ１２）。
【００４１】
この通常処理の中でサブルーチンの実行条件が成立するとサブルーチンＳ２０へ移行してサブルーチンを開始する。このサブルーチンでは、ＣＰＵ内部の割込みマスクビットＥＸＲ：Ｉを当該サブルーチンの優先レベルに応じてセットする（ステップＳ２１）。割込みマスクビットＥＸＲ：Ｉの値をＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに反映させる（ステップＳ２２）。例えば、他のバスマスタや各種割込みを全く受け付けない状態でサブルーチンを実行したいときは、割込みマスクビットＥＸＲ：Ｉに最も優先レベルの高いレベル「７」を設定し、ＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに転写される。
【００４２】
そのため、優先レベルが「７」の場合には、他のバスマスタに邪魔されることなくＣＰＵによるサブルーチン処理Ｓ２３が優先的に実行される。優先レベルが「６」以下の場合には、サブルーチン処理実行中に他のバスマスタからの要求により内部バスコントローラ１１６がＣＰＵに対してアクノリッジ信号を適時取り下げることで、他のバスマスタによる処理が優先的に実行される。サブルーチン処理Ｓ２３が終了すると、ＣＰＵは割込みマスクビットＥＸＲ：Ｉを初期値（最も低い優先レベル）に戻す設定をして、割込みマスクビットＥＸＲ：Ｉの値をＣＰＵ優先レベルレジスタＰＬＲに反映させてからメインプログラムへ復帰する（ステップＳ２４、２５）。
【００４３】
一方、通常ＣＰＵ処理中にシステムエラーもしくは割込みが発生すると、ステップＳ３１，Ｓ３２を経ての例外処理Ｓ４０へ移行する。なお、割込みが発生すると、割込みコントローラ１１８は、発生した割込みに対応した割込み優先レベルレジスタＩＰＲＡ〜ＩＰＲＦの値をＣＰＵへ出力する（ステップＳ３１）。このとき、発生した割込みがシステムエラーであれば、割込み優先レベルとして最も高い値「７」が出力される。割込みコントローラ１１８から出力された割込み優先レベル値ＩＰＲ［２：０］は、ＣＰＵ優先レベル制御回路１１９へ供給される。すると、ＣＰＵ優先レベル制御回路１１９は、自己のＣＰＵ優先レベルレジスタＰＬＲに設定されている値ＣＰＵＰ［２：０］と割込みコントローラ１１８から出力された値ＩＰＲ［２：０］とを比較して、レベルが高い方をＣＰＵ優先レベルレジスタＰＬＲに設定する。
【００４４】
例外処理Ｓ４０では、ＣＰＵはレジスタＥＸＲの値等を内蔵メモリ（ＲＡＭ）１１２のスタックエリアに保存してから、割込みコントローラ１１８から出力された割込み優先レベル値ＩＰＲ［２：０］をＣＰＵ内部のレジスタＥＸＲの割込みマスクビットＥＸＲ：Ｉに設定する（ステップＳ４１，Ｓ４２）。それから、ベクタアドレスを参照して割込み要求に対応するプログラムへジャンプする（ステップＳ４３）。
【００４５】
割込みプログラムでは、割込み処理を実行してから当該割込み要求をクリアして終了する（ステップＳ５１，Ｓ５２）。この実行割込み処理の優先レベルが「６」以下の場合には、この割込み処理中に他のバスマスタからの要求により内部バスコントローラ１１６がＣＰＵに対してアクノリッジ信号を取り下げて、他のバスマスタによる処理が優先的に実行されたり、より優先順位の高い割込みが発生するとその割込み処理が優先実行されたりすることもある。
【００４６】
割込み処理が終了すると、割込み復帰処理Ｓ６０が実行される。割込み復帰処理では、内蔵メモリ１１２内のスタックエリアに保存されていたレジスタの値等を元のレジスタＥＸＲ等に復帰させてから、レジスタＥＸＲの割込みマスクビットＥＸＲ：Ｉの値をＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに反映させる（ステップＳ６１，Ｓ６２）。そして、割込み発生時に中断した時点からメインプログラムを再開させる（ステップＳ６３）。
【００４７】
図６には、本発明を適用したシングルチップマイコンの第３の実施例が示されている。
この実施例は、ＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲに、２つの優先レベル設定フィールドＣＰＵＰ１，ＣＰＵＰ２を設けたものである。このうち第１のフィールドＣＰＵＰ１には、ＣＰＵ１１１が内部バスＩＢＳのみを使用する割込み処理もしくは例外処理を実行する際の割込みマスクビットが優先レベルとして設定され、第２のフィールドＣＰＵＰ２には、ＣＰＵ１１１が内部バスＩＢＳと外部バスＥＢＳを使用する処理を実行する際の割込み優先レベルが優先レベルとして設定される。
【００４８】
そして、第１のフィールドＣＰＵＰ１に設定されている優先レベルのコードはＤＭＡコントローラ１１３とデータ転送コントローラ１１４に供給されて、各コントローラ内の比較回路ＣＭＰ１０〜ＣＭＰ１３またはＣＭＰ３０によりレジスタＤＭＡ０Ｐ〜ＤＭＡ３ＰまたはＤＴＣＰの設定値と比較される。一方、第２のフィールドＣＰＵＰ２に設定されている優先レベルのコードは外部ＤＭＡコントローラ１１５に供給されて、比較回路ＣＭＰ２０〜ＣＭＰ２３によりレジスタＥＤＭＡ０Ｐ〜ＥＤＭＡ３Ｐの設定値と比較され、データ転送要求があった時に、上記比較結果に基づいてＣＰＵ優先レベルが同じ又は低い場合にデータ転送処理を実行するように構成されている。
【００４９】
また、この実施例においては、特に制限されるものでないが、図１における内部バスコントローラ１１６と外部バスコントローラ１１７の代わりにバスコントローラ１１０が設けられている。このバスコントローラ１１０は、内部バスコントローラ１１６と外部バスコントローラ１１７の両方の機能を有するように構成されている。かかる構成は、ＣＰＵ優先レベルレジスタＰＬＲに２つの優先レベル設定フィールドＣＰＵＰ１，ＣＰＵＰ２を設けるという上記構成と組み合わせて採用する必要はなく、別々に適用することができる。
【００５０】
また、この実施例においても、図４を用いて第２の実施例として説明した構成と同様に、ＣＰＵ優先レベル制御回路１１９内のＣＰＵ優先レベルレジスタＰＬＲへの優先レベルの設定のルートとして、ＣＰＵ１１１の拡張レジスタＥＸＲの割込みマスクビットＥＸＲ：Ｉ［２：０］を転写するルートの他、割込みコントローラ１１８からＣＰＵ１１１の拡張レジスタＥＸＲへ供給される割込み優先レベルを優先レベルとして設定ルートと、バスを介してＣＰＵ優先レベルレジスタＰＬＲへ優先レベルを設定するルートを設けるようにしてもよい。
【００５１】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば上記実施例では、ＤＭＡコントローラ１１３と外部ＤＭＡコントローラ１１５の他にデータ転送コントローラ１１４を設けているが、これらのコントローラのいずれか１つあるいは２つを有するシングルチップマイコンに対しても適用することができるとともに、ＤＭＡコントローラ以外のバスマスタとなる回路を内蔵するシングルチップマイコンに対しても適用できる。
【００５２】
また、上記実施例では、ＣＰＵ優先レベルレジスタＰＬＲに設定されている優先レベルを、チップ内部のバスマスタであるＤＭＡコントローラ１１３と外部ＤＭＡコントローラ１１５とデータ転送コントローラ１１４に供給するようにしているが、優先レベルを出力する外部端子を設けてチップ外部のバスマスタとなる外部デバイスに対しても優先レベルを供給して、ＣＰＵの優先レベルと比較して動作を開始するか否かを決定させるようにしてもよい。
【００５３】
さらに、前記実施例においては、ＣＰＵ優先レベル制御回路１１９を設け、そこに設定された優先レベルを示す３ビットのコードをＤＭＡコントローラに供給して、当該ＤＭＡコントローラに設定されている優先レベルとＣＰＵのその時点の優先レベルとを比較してＤＭＡ転送を行なうか否か判定するようにしているが、ＣＰＵの処理を優先するか否かを知らせる信号をＣＰＵから出力させ、他のバスマスタではその信号を参照して処理を行なうか否か判定し、その判定結果に従って処理を実行するように構成することも可能である。
【００５４】
ここで、ＣＰＵの処理を優先するか否かを知らせる信号がハイレベルとロウレベルの２値信号であり、判定する回路がインバータやシュミット回路のような論理回路である場合はその論理しきい値を判定のための基準値と、また判定する回路が差動増幅回路のような２入力の回路である場合は信号と比較される参照電圧を判定のための基準値とみなすことができる。
【００５５】
さらに、上記図２、３においてはＤＭＡコントローラ１１３の動作について説明を行ったが、ＥＸＤＭＡコントローラ１１５及びデータ転送コントローラ１１４についても同様の優先レベルの比較動作を行ったのちデータ転送処理を行っている。
また、データ転送コントローラ１１３〜１１５のような複数の転送要求を受け付け可能なバスマスタでは自己の優先レベルを設定する手段として、上記複数の転送要求に対応する優先レベルを設定可能な複数のレジスタ（上記複数の転送要求に対応する優先レベル）を設けて、転送要求を受け付けた時に該転送要求に対応するレジスタの設定値から優先レベルを設定するようにしても良い。
【００５６】
また、外部デバイス３１０は、外部バスＥＢＳを介してデータ転送制御を行うために外部バスコントローラ１１７に対して外部バスのバス使用権を要求するバスリクエスト信号を出力可能であるが、ＣＰＵ優先レベル設定回路１１９は外部デバイス３１０に対して優先レベルレジスタＰＬＲの値を出力できるようにして、外部デバイス３１０では優先レベルと自己が保有する比較基準値とを比較して、該バスリクエスト信号を出力するか否か決定するように構成しても良い。
もしくは、上記優先レベルとの比較によって外部バスＥＢＳを介したデータ転送制御の処理を開始するか否か決定するように構成しても良い。
【００５７】
さらに、外部デバイス３１０には、ＣＰＵが内蔵されることもありうるが、自己が保有する比較基準値を内蔵されたＣＰＵのプログラム制御や割込み要求などに対応して任意に設定可能な可変設定手段を備えるように構成した上で該ＰＬＲの優先レベルに基づく値を自己が保有する比較基準値と比較することが可能となるよう構成しても良い。
さらに、シングルチップマイコン１００と外部デバイス３１０を１個の半導体チップ上に形成しても良い。
【００５８】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるＤＭＡコントローラを内蔵したシングルチップマイコンに適用した場合について説明した、本発明はそれに限定されるものでなく、ＤＭＡコントローラがシングルチップマイコンとは別のＬＳＩとして構成されているシステムにも適用することができる。
【００５９】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、本発明に従うと、ＤＭＡコントローラ等のＣＰＵ以外のバスマスタからのバス使用権要求によりＣＰＵにおける処理が滞ってシステムのスループットが低下するのを防止できるとともに、ＣＰＵ以外のバスマスタからのバス使用権要求によりＣＰＵにおける緊急度の高い処理等が妨げられることがないシングルチップマイコンを実現することができる。
【図面の簡単な説明】
【図１】本発明を適用したシングルチップマイコンの一実施例の概略構成を示すブロック図である。
【図２】ＤＭＡコントローラのうち本発明に関連する部位の概略構成例を示すブロック図である。
【図３】実施例のＤＭＡコントローラにおけるＤＭＡ転送の手順を示すフローチャートである。
【図４】本発明を適用したシングルチップマイコンの第２の実施例の要部を示すブロック図である。
【図５】実施例のシングルチップマイコンにおけるＣＰＵの動作の手順を示すフローチャートである。
【図６】本発明を適用したシングルチップマイコンの第３の実施例の要部を示すブロック図である。
【符号の説明】
１００　シングルチップマイコン
１１１　ＣＰＵ（中央処理ユニット：バスマスタ）
１１２　内部メモリ（ＲＯＭ，ＲＡＭ）
１１３　ＤＭＡコントローラ（バスマスタ）
１１４　データ転送コントローラ（バスマスタ）
１１５　外部ＤＭＡコントローラ（バスマスタ）
１１６　内部バスコントローラ
１１７　外部バスコントローラ
１１８　割込みコントローラ
１１９　ＣＰＵ優先レベル制御回路
１２１　タイマ（周辺回路）
１２２　シリアル通信インタフェース（周辺回路）
１２３　Ａ／Ｄ変換回路（周辺回路）
ＥＸＲ　拡張レジスタ
ＩＰＲ　割込み優先レベルレジスタ
ＰＬＲ　優先レベルレジスタ
ＣＭＰ　比較回路
【図１】
2004038265.tif 000003
【図２】
2004038265.tif 000004
【図３】
2004038265.tif 000005
【図４】
2004038265.tif 000006
【図５】
2004038265.tif 000007
【図６】
2004038265.tif 000008