(57)【要約】【課題】データ処理装置において周辺モジュールへのアクセス性能を改善する。【解決手段】半導体集積回路（７）は、バスマスタ（１０，２０）と、レジスタを含む周辺モジュール（６１，６２）と、上記バスマスタによってアクセス可能なレジスタエントリ（７０）とを含む。上記レジスタエントリは、上記バスマスタから見て上記周辺モジュール内のレジスタよりも高速アクセス可能な位置に配置され、且つ、上記周辺モジュール内のレジスタに保持されたデータと同一データが保持されるデータ保持部を含む。上記バスマスタは、上記周辺モジュール内のレジスタからのデータリードに代えて、上記レジスタエントリからのデータリードを行うアクセスモードを含む。バスマスタからのリード要求はレジスタエントリに対してのみ行い、周辺モジュールに対するリード要求は行わないようにすることで、所望の周辺モジュールに対応するレジスタ情報を高速に得る。【選択図】図５
2009289232.tif 000002
【特許請求の範囲】
【請求項１】
バスマスタと、
上記バスマスタによってアクセス可能なレジスタを含む周辺モジュールと、
上記バスマスタによってアクセス可能なレジスタエントリと、を含み、
上記レジスタエントリは、上記バスマスタから見て上記周辺モジュール内のレジスタよりも高速アクセス可能な位置に配置され、且つ、上記周辺モジュール内のレジスタに保持されたデータと同一データが保持されるデータ保持部を含み、
上記バスマスタは、上記周辺モジュール内のレジスタからのデータリードに代えて、上記レジスタエントリからのデータリードを行うアクセスモードを含むことを特徴とする半導体集積回路。
【請求項２】
上記バスマスタは、上記周辺モジュール内のレジスタへのデータライトを行うとき、そのライト動作に並行して、同一データを上記レジスタエントリへライトしておく機能を含む請求項１記載の半導体集積回路。
【請求項３】
上記周辺モジュールは、上記周辺モジュール内のレジスタの保持情報が変更された際に、それに対応する上記レジスタエントリ内のデータを更新する機能を含む請求項１記載の半導体集積回路。
【請求項４】
上記周辺モジュールは、上記周辺モジュール内のレジスタのライト動作が完了する前に、当該ライト動作が完了した旨の通知を上記レジスタエントリに対して行う請求項１記載の半導体集積回路。
【請求項５】
上記レジスタエントリは、上記周辺モジュールのレジスタに保持されているデータと、上記レジスタエントリ内に保持されている対応データとが一致するか否かを示すバリッドビットを含む請求項１記載の半導体集積回路。
【請求項６】
上記バスマスタはＣＰＵとされ、
上記レジスタエントリは、上記ＣＰＵからのアクセスを可能とするＣＰＵインタフェースと、
上記周辺モジュールからのアクセスを可能とする入力インタフェースと、
上記周辺モジュールに対応するデータ保持部と、を備え、
上記データ保持部は、上記周辺モジュール内のレジスタに保持されているデータと、上記レジスタエントリ内のデータ保持部に保持されているデータとが一致しているか否かを示すバリッドビットの記憶エリアを含む請求項１記載の半導体集積回路。
【請求項７】
上記バスマスタはＣＰＵとされ、
上記レジスタエントリは、上記ＣＰＵがデータ保持部から読み出したデータに対応するバリッドビットの情報を上記ＣＰＵへ出力する回路をさらに備える請求項５記載の半導体集積回路。
【請求項８】
上記バスマスタはＣＰＵとされ、
上記レジスタエントリのバリッドビットの情報により、上記ＣＰＵは、バリッドビット情報が有効状態を示すまでデータをリードする命令を有する請求項５記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路、さらにはバスマスタによってアクセス可能な周辺モジュールを備えた半導体集積回路に関する。
【背景技術】
【０００２】
半導体集積回路の一例とされるマイクロコンピュータ（マイクロプロセッサ、データプロセッサなどと称されることもある）は、例えば特許文献１でも述べられているように、応用範囲の拡大にともないＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）の高速化、大容量のメモリ、さらには豊富な周辺モジュール内蔵と多様化している。周辺モジュールとしては、例えばシリアルインターフェイス、ＤＭＡＣ（Direct Memory Access Controller）、各種タイマ、Ａ／Ｄコンバータ、Ｄ／Ａコンバータ、およびＰＷＭ（Pulse Width Modulator）などを挙げることができる。
【０００３】
【特許文献１】特開２００４−１８５０６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
近年のマイクロコンピュータについて本願発明者が検討したところ、ＣＰＵと周辺モジュールの動作速度の乖離、高機能化に伴う周辺モジュールアクセスの増大が発生していることが見いだされた。つまり、マイクロコンピュータのデータアクセス時間に占める周辺モジュールのアクセス時間が増大し、このため、ＣＰＵの性能(マイクロコンピュータ全体の性能)を引き出すために、アクセス時間が長く、かつアクセス回数が多くなっている周辺モジュールアクセス性能の改善が必須である。
【０００５】
例えば周辺モジュールへの書き込み動作を高速化し、アドレスやデータをバス制御回路で保持して書き込み動作とＣＰＵの次の命令実行とを並列化することにより、性能向上を図ることが考えられる。しかしながら、この方法は、レジスタへのライト（書き込み）動作に対するものであり、レジスタからのリード（読み出し）動作まで改善することはできない。レジスタの読み出しが行われる場合、レジスタからＣＰＵへのデータ転送が完了するまで、ＣＰＵの次の処理が待たされる。キャッシュメモリを用いることでＣＰＵの高速化を可能にしているが、アクセス対象がレジスタの場合はキャッシュ非対象アクセスとなり性能向上を図ることができない。ＣＰＵ処理能力の向上、大規模システム設計容易化などのため、ＣＰＵからレジスタまでにバスブリッジ回路が多数存在する構成が増えている。これはＣＰＵからレジスタまでの距離が遠くなっていることを意味し、アクセスレイテンシの悪化につながっている。
【０００６】
本発明の目的は、周辺モジュールへのアクセス性能を改善するための技術を提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【０００９】
すなわち、半導体集積回路は、バスマスタと、それによってアクセス可能なレジスタを含む周辺モジュールと、上記バスマスタによってアクセス可能なレジスタエントリと、を含む。上記レジスタエントリは、上記バスマスタから見て上記周辺モジュール内のレジスタよりも高速アクセス可能な位置に配置され、且つ、上記周辺モジュール内のレジスタに保持されたデータと同一データが保持されるデータ保持部を含む。上記バスマスタは、上記周辺モジュール内のレジスタからのデータリードに代えて、上記レジスタエントリからのデータリードを行うアクセスモードを含む。バスマスタからのリード要求はレジスタエントリに対してのみ行い、周辺モジュールに対するリード要求は行わないようにする。このことが、所望の周辺モジュールに対応するレジスタ情報を高速に得るという、本発明の目的を達成する。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００１１】
すなわち、周辺モジュールへのアクセス性能を改善するための技術を提供することができる。
【発明を実施するための最良の形態】
【００１２】
１．代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１３】
〔１〕本発明の代表的な実施の形態に係る半導体集積回路（７）は、バスマスタ（１０，２０，８０１）と、上記バスマスタによってアクセス可能なレジスタを含む周辺モジュール（６１，６２，８１１〜８１３）と、上記バスマスタによってアクセス可能なレジスタエントリ（７０，８０６）と、を含む。上記レジスタエントリは、上記バスマスタから見て上記周辺モジュール内のレジスタよりも高速アクセス可能な位置に配置され、且つ、上記周辺モジュール内のレジスタに保持されたデータと同一データが保持されるデータ保持部（８０８）を含み、上記バスマスタは、上記周辺モジュール内のレジスタからのデータリードに代えて、上記レジスタエントリからのデータリードを行うアクセスモードを含む。
【００１４】
上記の構成において、バスマスタからのリード要求はレジスタエントリに対してのみ行い、周辺モジュールに対するリード要求は行わないようにする。これにより、周辺モジュール内のレジスタ内のデータに代えて、レジスタエントリ内のデータが使用されるので、バスマスタは、所望の周辺モジュールに対応するレジスタ情報を高速に得ることができる。このことが、周辺モジュールへのアクセス性能を改善を達成する。
【００１５】
〔２〕上記〔１〕において、上記バスマスタには、上記周辺モジュール内のレジスタへのデータライトを行うとき、そのライト動作に並行して、同一データを上記レジスタエントリへライトしておく機能を含めることができる。
【００１６】
〔３〕上記〔１〕において、上記周辺モジュールには、上記周辺モジュール内のレジスタの保持情報が変更された際に、それに対応する上記レジスタエントリ内のデータを自ら更新する機能を含めることができる。
【００１７】
〔４〕上記〔１〕において、上記周辺モジュールは、上記周辺モジュール内のレジスタのライト動作が完了する前に、当該ライト動作が完了した旨の通知を上記レジスタエントリに対して行うように構成することができる。ライト動作完了とは、ライト対象レジスタへの書き込みが、周辺モジュール内で確定したタイミングを指す。
【００１８】
〔５〕上記〔１〕において、上記レジスタエントリには、上記周辺モジュールのレジスタに保持されているデータと、上記レジスタエントリ内に保持されている対応データとが一致するか否かを示すバリッドビットを含めることができる。
【００１９】
〔６〕上記〔１〕において、上記バスマスタをＣＰＵとすることができる。その場合において、上記レジスタエントリは、上記ＣＰＵからのアクセスを可能とするＣＰＵインタフェース（８０７）と、上記周辺モジュールからのアクセスを可能とする入力インタフェース（８０９）と、上記周辺モジュールに対応するデータ保持部（８０８）とを含んで構成することができる。また、上記データ保持部には、上記周辺モジュール内のレジスタに保持されているデータと、上記レジスタエントリ内のデータ保持部に保持されているデータとが一致しているか否かを示すバリッドビットの記憶エリアを含めることができる。
【００２０】
２．実施の形態の説明
次に、実施の形態について更に詳述する。
【００２１】
＜実施の形態１＞
一般にデータアクセスを行う場合、リードアクセスに関しては必ずバスマスタに対して所定のレイテンシを発生させる。すなわち、リードデータ待ちによるＣＰＵのストールが発生する。現状の対策方法としては、キャッシュや、プリフェッチなどの技術を挙げることができる。また、バースト(連続)アクセスにより、一度に大量のデータアクセスを可能にすることも行われている。
【００２２】
ここで、周辺モジュールのレジスタアクセスは、一般にキャッシュ対象にできないため、ＣＰＵがデータを取り込むまで絶対時間を要している。この課題に対して、（ａ）ＣＰＵのアクセス時間が小さい場所からのアクセスを実現すること、及び（ｂ）レジスタが更新された時は、モジュール側からＣＰＵに向けデータを自ら送り出す(ライトする)ことを検討した。またこの二つを成立させるために、周辺モジュールのレジスタ値のコピーを保持する領域(レジスタエントリ)を用意し、ＣＰＵはレジスタエントリからデータを取得することでリードアクセスに対するＣＰＵのストールを低減させる。関連して、周辺モジュールとレジスタエントリを接続する技術も組み合わせる。
【００２３】
ここでリードアクセスに着目した理由は、リードとライトではバスの利用の仕方に違いがあることが分かったためである。例えば、ライトでは、ＣＰＵライトコマンドが実行されて、ライトデータがバスシステム処理され、レジスタへの（ライト完了の）書き込みが行われる。また、リードでは、ＣＰＵによりリードコマンドが実行され、バスシステムにデータのリクエストが行われ、モジュールの応答により、リードデータがバスシステムを介してＣＰＵに取り込まれる。
【００２４】
このように、ライトはＣＰＵから周辺モジュールへ一方向に処理を流しているのに対し、リードではＣＰＵと周辺モジュールの間を情報が往復していると考えられる。これをライトと同様に一方向に処理できないかを検討した結果が図２に示される。
【００２５】
図２に示されるように、周辺モジュール３を中心として、入力側と出力側とを別々に配置した場合、データの流れは一方向となる。バスシステム１，２ではＣＰＵなどのバスマスタのアクセス時間が比較的に短いのに対して、周辺モジュール３ではバスマスタによるアクセス時間が長くなる。この図２においてリードとライトで異なる点は、リードの場合はＣＰＵなどのバスマスタ４が所定の順序でデータを必要とするため、周辺モジュールの都合だけでデータを送り出すことができない点である。そこで図１に示されるように改善する。
【００２６】
図１では、周辺モジュール３がバスマスタ４に対してデータを出力する対象としてレジスタエントリ５が設けられる。このレジスタエントリ５はアクセス時間が小さい所に配置できればよく、可能であればＣＰＵコア本体に内蔵することも否定しない。レジスタエントリは所定のバスプロトコル実現のために、データの一貫性を示すためのバリッドビットなどを持たせることができる。周辺モジュール３については、自らデータを出力できるように、レジスタエントリと接続される専用高速バスにおけるバスマスタとしての機能を持たせることができる。それは図１で「ＢＭ」と記した箇所である。周辺モジュール３は、自身のレジスタ情報を全てレジスタエントリ５に出力しても良いし、必要なレジスタを限定して出力しても良い。その制御はバスシステム１内やレジスタエントリ５に制御レジスタを用意して行う。また、レジスタエントリを必ず使用すべきであると限定する必要もないため、従来形式のリード用バスインタフェースと併用できるものとする。レジスタエントリの使用方法についてこのように考えた理由は、レジスタごとにアクセス頻度は異なるはずで、レジスタエントリの面積を最適化する場合、全レジスタを高速リードアクセスできなくても良いからである。またＤＭＡコントローラなどの代替データ転送により、ＣＰＵが容易にアクセスできる場所にデータを移すことも十分有効である。
【００２７】
実施の形態を更に具体的に説明する。
【００２８】
図３には、二つのＣＰＵを含むマイクロコンピュータの基本的な構成が示される。
【００２９】
図３に示されるマイクロコンピュータ７は、デュアルコア演算処理部９と、周辺モジュール５１，６１、ユーザ論理部６６を含み、公知の半導体集積回路製造技術により単結晶シリコン基板などの一つの半導体基板に形成される。尚、ユーザ論理部６６も周辺モジュールの一例とされる。図３に示されるマイクロコンピュータ７は、それが搭載されるユーザシステムにおいて、外部メモリ８に結合され、この外部メモリ８のランダムアクセスが可能とされる。
【００３０】
上記デュアルコア演算処理部９は、第１ＣＰＵ１０、第２ＣＰＵ２０、デバッグ機能部３０、コア共通レジスタ４０、マルチレイヤープラットフォーム５０、クロック生成部８０とを含む。第１ＣＰＵ１０及び第２ＣＰＵ２０は、それぞれ所定のプログラムに従った演算処理を行う。特にこの第１ＣＰＵ１０及び第２ＣＰＵ２０では、互いに異なるＯＳ（オペレーティングシステム）による処理が可能とされる。第１ＣＰＵ１０及び第２ＣＰＵ２０からそれぞれ２００ＭＨｚのバス１１，１２と、１００ＭＨｚのバス１３，１４が引き出される。バス１１，１２，１３，１４にはデバッグ機能部３０が結合され、このバス１１，１２，１３，１４を介してシステムデバッグのための各種情報のやり取りが可能とされる。また、バス１３，１４には、コア共通レジスタ４０が結合され、このコア共通レジスタ４０を介してＣＰＵ１０，２０間で各種情報のやり取りが可能とされる。第１ＣＰＵ１０及び第２ＣＰＵ２０は、互いに同一構成とされ、それぞれＣＰＵコア１０１、ユーザＲＡＭ（ＵＲＡＭ）１０２、キャッシュバスステートコントローラ（ＣＢＳＣ）１０３、キャッシュコントローラ（ＣＣＮ）１０４、命令オペランドキャッシュ（Ｉ＄／Ｏ＄）１０５、内部バスコントローラ（ＩＢＳＣ）１０６とを含んで成る。
【００３１】
上記マルチレイヤープラットフォーム５０は、ＤＭＡＣ（Direct Memory Access Controller）５０１、ＢＩＵ（Bus Interface Unit）５０３，５０４，５０５、マルチレイヤバス（ＭＬＢ）５０２とを含む。上記ＤＭＡＣ５０１及びＢＩＵ５０３〜５０５は、上記マルチレイヤバス５０２に結合される。また、上記マルチレイヤバス５０２は、ＣＰＵ１０，２０における内部バスコントローラ１０６に結合される。上記ＢＩＵ５０３には、周辺バス（ＨＰＢ）６０を介して周辺モジュール５１，５２が結合され、上記ＢＩＵ５０４にはユーザ論理部５３が結合され、上記ＢＩＵ５０５には外部メモリ８が結合される。
【００３２】
尚、図３において、図１，２におけるバスシステムに対応するものについてはハッチングが付されている。
【００３３】
上記の構成において、各バス階層のクロック比を４：２：１に、動作周波数を２００ＭＨｚに設定した場合を想定する。
【００３４】
（１）ＣＰＵ１０，２０は、命令オペランドキャッシュ１０５及びＵＲＡＭ１０２に対しては1ステートアクセスが可能とされる（２００ＭＨｚ動作）。
【００３５】
（２）マルチレイヤーバス５０２からコア共通レジスタ４０などに対しては最短１ステートアクセスが可能とされる（１００ＭＨｚ動作）。マルチレイヤープラットフォーム５０は、ＣＰＵ１０，２０の１／２の動作速度のため、２倍のアクセス時間が必要となり、ＣＰＵ１０，２０とマルチレイヤープラットフォーム５０との間で同期制御時間がさらに必要となる場合がある。
【００３６】
（３）周辺モジュールバスは、仕様上最短２ステートアクセスが可能である（５０ＭＨｚ以下の動作）。ただしＣＰＵ１０，２０の１／４、マルチレイヤーバス５０２の１／２の動作速度のため、アクセス時間は、マルチレイヤーバス５０２の２倍で、マルチレイヤーバス（ＭＬＢ）５０２と周辺バス（ＨＰＢ）６０との間の同期制御時間がさらに必要となる場合がある。つまりＣＰＵ１０，２０からは最短で４ステート以上のアクセスになる。
【００３７】
（４）システム規模の増大、ＣＰＵ１０，２０の高速化に応じて、バスの階層が深くなっている。
【００３８】
（５）周辺モジュールの動作速度は、機能仕様からＣＰＵ１０，２０よりも低速である。また、接続容易性、再利用性、リアルタイム性を優先したバスプロトコルを採用する必要がある。
【００３９】
図４には、図３に示される構成における主要部の動作タイミングが示される。図４において、ＣＰＵアドレス及びバスコマンドによって、例えば周辺モジュール５１内のレジスタが指定され、そこにＣＰＵライトデータＷＲ１が書き込まれる。このとき、マルチレイヤバス（ＭＬＢ）５０２では、ＭＬＢクロックに同期してデータが転送され、周辺バス（ＨＰＢ）６０では、ＨＰＢクロックに同期してデータ転送が行われる。このとき、ＣＰＵ１０，２０におけるＣＢＳＣ１０３のライトバッファ機能により、ＣＰＵ１０又は２０は、周辺モジュールへのライト動作の終了を待たずに次の処理に移ることができる。ＣＰＵ１０又は２０による読み出しデータはＲＤ１で示される。図４に示される例では、周辺モジュールをリードすると、ＣＰＵ１０又は２０のデータバスにデータが到達するまで１０ステート必要となる。つまり、マルチレイヤバス・周辺モジュール間(８ステート)＋マルチレイヤバス・ＣＰＵ間(２ステート)＝１０ステートとなる。
【００４０】
ライトの場合も同様に、最短で１０ステート必要であるが、ＣＰＵ１０，２０におけるＣＢＳＣ１０３のライトバッファ機能を使用してライト動作させることで、ライト動作の終了を待たずにＣＰＵを次の処理に進ませることが可能である。しかし、ＣＰＵ１０又は２０が周辺モジュール内のレジスタをリードすると、待ち時間(ストール時間)は非常に大きく無視出来なくなる。
【００４１】
図５には、本発明にかかるデータ処理装置の一例とされるマイクロコンピュータが示される。図５に示されるマイクロコンピュータが図３に示されるのと大きく相違するのは、レジスタエントリ７０が設けられた点であり、ＣＰＵ１０又は２０による周辺モジュールアクセス時のストール時間の短縮が図られている。
【００４２】
尚、図５ではＣＰＵ２０の内部構成が省略されている。
【００４３】
上記レジスタエントリ７０は、バス１１、デバッグ機能部３０、ＣＰＵ１０，２０におけるＩＢＳＣ１０６、周辺モジュール６１，６２、及びユーザ論理６６に結合される。上記レジスタエントリ７０は、ＣＰＵ１０，２０に対して各種信号の出力を可能とするＣＰＵインタフェースと、周辺モジュール６１やユーザ論理６６からの信号取り込みを可能とする入力インタフェース、データの保持を可能とするデータ保持部、上記ＣＰＵインタフェースや入力インタフェース及びデータ保持部の動作制御を可能とする制御部等を含む。
【００４４】
図６には、図５に示される構成において、ライト時はＣＰＵ１０，２０におけるＣＢＳＣ１０３のライトバッファ機能を利用して高速化を図り、リード時はレジスタエントリからのリードによる高速化を図った場合の動作タイミングが示される。
【００４５】
周辺モジュールにおける動作モード設定レジスタへのライト動作はマルチレイヤープラットフォーム５０を介して行われる。従って、ここでは、図３に示される構成の場合と同様に、ライトバッファ機能が利用される。そして本例ではこのライト動作と並行してレジスタエントリ７０に上記ライトデータＷＲ１のコピーが書き込まれる。周辺モジュール内のレジスタへのライト完了よりもレジスタエントリ７０へのライトが早いため、一定時間コヒーレンシが保たれなくなる。そのため、周辺バス（ＨＰＢ）６０のライトサイクルのＴ２ステートに入った段階で、周辺モジュールからレジスタエントリ７０にライト完了通知を送信し、データの一致を示すフラグ（バリッドビット）を立てる。ＣＰＵ１０又は２０は、このバリッドビットの論理値を判定することで、周辺モジュール６１，６２と、それに対応するレジスタエントリ７０との間でデータが一致するか否かを判断することができる。上記の完了通知はＣＰＵクロックと同速で送受信される。上記のように周辺バス（ＨＰＢ）６０のライトサイクルのＴ２ステートに入った段階で、周辺モジュールからレジスタエントリ７０にライト完了通知が送信される。ＣＰＵ１０又は２０が動作モード設定レジスタをリードする時、レジスタエントリ７０からデータを取り出すように制御する。このとき、ＣＰＵ１０又は２０からのリード要求はレジスタエントリ７０に対してのみ行い、周辺モジュールに対するリード要求は行わないようにする。これにより、ＭＬＢリードデータ（ＲＤ１）に代えて、レジスタエントリ７０内のデータが使用されるので、ＣＰＵ１０又は２０は、所望の周辺モジュールに対応するレジスタ情報を高速に得ることができる。
【００４６】
このように、ライト時はＣＰＵ１０，２０におけるＣＢＳＣ１０３のライトバッファ機能を利用して高速化を図り、リード時はレジスタエントリ７０からのリードによって高速化を図ることによって、周辺モジュールへのアクセス性能を改善することができる。
【００４７】
図７には、図５に示される構成において、周辺モジュールでフラグがセットされるなどレジスタ値が更新された時、周辺モジュールからレジスタエントリを更新する場合の動作タイミングが示される。
【００４８】
ＣＰＵ１０又は２０がライトした値を「ＷＲ１」とし、新しい値を「ＵＰ１」とする。周辺モジュール内のレジスタの値は、周辺バス６０のＨＰＢクロックに同期して、タイミングＴＭ２でＵＰ１に更新される。タイミングＴＭ２で周辺モジュール内のレジスタが更新され、レジスタエントリ７０の値と不一致になる。そこでＣＰＵ１０又は２０と同じかそれ以上のクロックでレジスタ値が更新されるかを確認し、タイミングＴＭ１で検出する。レジスタが更新される場合は、直ちに更新値をレジスタエントリ７０へ転送する。図７の例では、タイミングＴＭ３でレジスタエントリが新しいレジスタ値をラッチしたと仮定している。レジスタエントリ７０は、タイミングＴ３から可能な限り早くエントリ情報を更新する。図７の例では、ＣＰＵクロックで更新すると仮定し、エントリ書き換えに２ステート要している。ＣＰＵ１０又は２０が任意のタイミング、または割込み要求などでレジスタリードを行う際、レジスタエントリ７０に新しいデータが既にあるため、それを１ステートでリードすることが可能である。このように、周辺モジュールでフラグがセットされるなどレジスタ値が更新された時、周辺モジュールからレジスタエントリが更新されることによって、周辺モジュールへのアクセス性能を改善することができる。
【００４９】
上記例によれば、以下の作用効果を得ることができる。
【００５０】
（１）図６に示されるように、ライト時はＣＰＵ１０，２０におけるＣＢＳＣ１０３のライトバッファ機能を利用して高速化を図ることができる。
【００５１】
（２）リード時はレジスタエントリ７０からのリードによって高速化を図ることができる。
【００５２】
（３）図７に示されるように、周辺モジュールでフラグがセットされるなどレジスタ値が更新された時、周辺モジュールからレジスタエントリを更新することによって、周辺モジュールへのアクセス性能を改善することができる。
【００５３】
（４）上記（１），（２），（３）の作用効果により、周辺モジュールへのアクセス性能を改善することができる。
【００５４】
＜実施の形態２＞
図８には、本発明にかかるデータ処理装置の一例とされるマイクロコンピュータの別の構成例が示される。図８に示されるマイクロコンピュータは、ＣＰＵ８０１、ＲＯＭ／ＲＡＭなどの半導体メモリ８０２、命令オペランドキャッシュ（Ｉ＄／Ｏ＄）８０３、バスシステム８０４、レジスタエントリ８０６、及び周辺モジュール８１１，８１２，８１３を含み、公知の半導体集積回路製造技術により単結晶シリコン基板などの一つの半導体基板に形成される。バスシステム８０４は、図５に示されるようなマルチレイヤープラットフォーム５０を含む。周辺モジュール８１１，８１２，８１３は、自らデータを出力できるようにバスマスタとしての機能が搭載されている。上記バスシステム８０４は、バスインタフェースや、バスステートコントローラなどを含んで成る。レジスタの高速リードを可能とする高速リードインタフェース８１４と、レジスタへのライト動作や通常リードの際に使用されるライト及び通常リードインタフェース８１５とが設けられる。高速リードインタフェース８１４は、レジスタエントリ８０６や、バスシステム８０４の一部、及び周辺モジュール８１１，８１２，８１３の一部によって形成される。ライト及び通常リードインタフェース８１５は、バスシステム８０４の一部及び周辺モジュール８１１，８１２，８１３の一部を含んで成る。
【００５５】
本例において、上記レジスタエントリ８０６は以下のような機能を持つ。
【００５６】
（１）周辺モジュールのレジスタ値のコピーを保持する記憶エリアを有する(データ保持はフリップフロップ回路やメモリなどが適用可能)。
【００５７】
（２）周辺モジュール８１１〜８１３へのライト動作と並行してレジスタエントリのデータも更新できる機能を有する。
【００５８】
（３）レジスタエントリと実レジスタの間でデータの一貫性が保障できていることを表示するバリッド（Ｖ）ビットの記憶エリアを有する。
【００５９】
（４）実レジスタに付されたＩＤによる、レジスタエントリへの書き込み指定や制御機能を有する。
【００６０】
（５）周辺モジュールの特性やレジスタ本数に応じて入力インタフェースを選択する機能を有する。接続数が少ない場合は、高速パラレルデータバス(ＣＰＵ速度と同等)が使用でき、接続数が多い場合にはＣＰＵ速度と同等以上の周波数でアクセス可能な高速シリアルバスが使用できる。また、実レジスタへの書き込み完了通知のために専用信号線が用いられる。
【００６１】
（６）ＣＰＵ８０１から1ステートアクセス可能なインタフェース機能を有する。
【００６２】
上記の機能を有するレジスタエントリ８０６は、具体的にはバスマスタインタフェース（Ｉ／Ｆ）８０７、データ保持部８０８、入力インタフェース（Ｉ／Ｆ）８０９、及び制御部８１０を含んで成る。バスマスタインタフェース８０７は、ＣＰＵバス８０５に結合され、ＣＰＵ８０１やその他のバスマスタへのデータ出力を可能とする。データ保持部８０８には、各種動作モード設定レジスタに書き込まれるデータのコピーなどが保持される。入力インタフェース８０９は、周辺モジュール８１１，８１２，８１３との間で各種信号のやり取りを可能とする。周辺モジュール８１１，８１２，８１３との間でやりとりされる各種信号には、バリッド制御信号（１４）、リードサイクル実行通知信号（１５）、周辺モジュール８１１，８１２，８１３からの読み出しデータ（１６）が含まれる。
【００６３】
図９には、上記レジスタエントリ８０６の更に詳細な構成例が示される。
【００６４】
制御部８１０は、レジスタエントリ全体制御部８１０１、リード制御部及びコピー制御部８１０２、レジスタライトデータインタフェース８１０３、直接リードインタフェース８１０４を含む。レジスタエントリ全体制御部８１０１は、入力されたレジスタエントリ制御信号に基づいてレジスタエントリの有効・無効や一括して初期化をするなど、レジスタエントリの全体的な制御を行う。リード制御部及びコピー制御部８１０２は、レジスタエントリ用アクセス制御信号に基づいてデータ保持部８０８のリード制御やコピー（並行書き込み）制御を行う。レジスタライトデータインタフェース８１０３は、周辺モジュールへのデータライトの際にそれに並行してレジスタエントリ８０６へライトされるデータの取り込みを可能とする。上記データ保持部８０８に格納されるデータは、上記周辺モジュール８１１〜８１３に対応して割り当てられたＩＤ番号によって管理される。バリッドビットの記憶エリアと、データ（〜３２ｂｉｔ）の記憶エリアが設けられ、上記ＩＤ番号に関連づけて、上記周辺モジュール８１１，８１２，８１３に対応するデータやバリッドビットの設定が可能とされる。
【００６５】
上記レジスタエントリ８０６の制御について詳述する。
【００６６】
レジスタエントリ８０６は、主に記憶回路とインタフェース回路から作られることを想定している。また、従来のバスアクセス方式との両立を計る為、レジスタエントリ８０６の制御機構は、ＣＰＵ８０１と周辺モジュール８１１〜８１３との間に配置するのが好ましいと考えられる。図８において、レジスタエントリ８０６への入力をバスシステム８０４と周辺モジュール８１１〜８１３とに分けているのはこのためである。バス制御部８１０はコントロールレジスタを含み、このコントロールレジスタには、レジスタエントリ全体の有効又は無効制御を行う第１レジスタ、レジスタエントリを使用する単数または複数のレジスタのＩＤ番号を設定する第２レジスタ、レジスタエントリの初期化制御のための第３レジスタ、レジスタアクセス高速化の有効及び無効を設定する第４レジスタ、エントリサイズの変更を設定可能な第５レジスタなどの各種レジスタが含まれる。
【００６７】
レジスタエントリを使用するレジスタのＩＤ番号を設定する第２レジスタにおいて、レジスタに割り当てるＩＤは、設計段階でコンフィギュレーションして、あらかじめ決定しておくようにする。レジスタエントリの初期化制御のための第３レジスタとしては、全領域の一括消去、指定ＩＤのバリッドビットのクリア機能などがあると有用である。レジスタアクセス高速化有効又は無効を設定する第４レジスタは、レジスタアクセス高速化設定を最終的に有効に設定される。レジスタＩＤごとに個別に設定可能とし、状況に応じて通常アクセス方式を使用することも可能である。エントリサイズの変更を設定可能な第５レジスタは、実レジスタのサイズを最大３２ビットと想定すると、一つのＩＤに３２ビットのデータを割り当てることになる。しかしデータバッファ的に使用するなど、３２ビット以上のデータ保持の要求があった場合、一つのＩＤに３２×ｎビット長のデータを格納できる使用方法を提供する事が可能である。
【００６８】
図１０には、図８及び図９に示される構成における主要部の動作タイミングが示される。
【００６９】
図１０に示される例は、周辺モジュールとレジスタエントリ間をシリアルバスで接続し、シリアル送信クロック（周辺モジュール送信クロック）の周波数をＣＰＵクロックの仮に５倍とした場合である。レジスタエントリ７０では、図７に示される場合と同様に、タイミングＴＭ３から可能な限り早くエントリ情報が更新される。つまり、シリアルデータがレジスタエントリ８０７に届いてからシリアル−パラレル変換が行われ、その後にエントリデータの更新が行われる。
【００７０】
ここでは純粋なデータ部(８ビット)のみを送信するようになっているが、実際には周辺モジュール毎のＩＤ番号も送る必要がある。さらに、この方式で３２ビット長のデータを送るには、図１０に示される場合の４倍の時間が必要になってしまう。これについて改善した方式が図１１に示される。
【００７１】
図１１に示される動作タイミング例では、周辺モジュールの送信クロックを高速化している。８ビットのシリアル転送路を４本組み合わせて、３２ビットのデータを送ることができるようにした。８ビット単位に４本束ねる方式は、バイトアクセスへの対応や８ビット、１６ビットレジスタへの対応への適用性を考慮したものである。
【００７２】
上記の構成において、先ず周辺モジュール内でレジスタの更新があることが確認される。次にタイミングＴＭ４でデータ送信開始を示すためにデータ信号を１クロックローレベルにする。さらに1クロックローレベルが続いた場合、ローレベルを検出したデータを更新対象として認識する。ハイレベルであった場合は、送信されてきたデータを無視する。
【００７３】
次に図１１におけるタイミングＴ５において、２クロック期間で、ＩＤ番号を送る。ＩＤ番号は４本のデータ信号の状態を並列に読み取る。１クロック目で上位４ビット、２クロック目で下位４ビットを読み取るようにすれば、８ビットのＩＤを送信できる。引き続き、レジスタのデータを送信し、８ビットのデータを送信完了したら、全てのデータ信号を１クロックだけローレベルにしてからハイレベルに戻す。これによりデータ転送終了を通知する。この後パラレルデータへの変換と、エントリデータの更新を行う。このような動作により、周辺モジュール８１１〜８１２内の実レジスタと並行してレジスタエントリ８０６の更新を完了できる。
【００７４】
ここで、上記レジスタエントリ８０７の使用手順をまとめると、以下の通りである。
【００７５】
（１）レジスタエントリにクロックが供給され、レジスタ設定が行われる。このとき、クロックイネーブル設定や、供給するクロック周波数設定が行われる。
【００７６】
（２）レジスタエントリをイネーブルにし、初期化を行う（レジスタ設定）。このとき、マスタイネーブルが設定され、バリッドビットがクリアされる。又はデータ保持部８０８の全面一括クリアを実行しても良い。
【００７７】
（３）レジスタエントリを利用したいレジスタのＩＤ番号を制御８１０内のレジスタに設定する（レジスタ設定）。このとき、どのエントリに、どのＩＤ番号のレジスタデータを格納するかが登録される。また、エントリサイズが設定される。
【００７８】
（４）周辺モジュールを使用する設定が行われる。
【００７９】
（５）レジスタエントリの各ＩＤ番号毎のイネーブルビットをセットし、周辺モジュールからの書き込みを許可する(レジスタ設定)。
【００８０】
(６）動作中においては、周辺モジュールへライトしたら、レジスタエントリにも同じデータを並列してライトする。また、バリッドビットをクリア(インバリッド状態)とする。周辺モジュールにおける実レジスタへのライトが終わり、周辺モジュール側からのバリッドビットセット信号を受けた場合には、それに応じてバリッドビットがセットされる。また、周辺モジュールからレジスタエントリにデータ更新が発生した場合には、それに呼応して、レジスタエントリが速やかに更新される。
【００８１】
（７）レジスタエントリを使用しなくなった場合は、各ＩＤ番号毎のイネーブルビットをクリアする。完全に使用しない場合は、さらにマスタイネーブルもクリアする。これにより、通常のレジスタアクセスのみが有効の状態になる。
【００８２】
（８）低消費電力などを意図した場合は、さらにクロック供給を停止するようにする。
【００８３】
次に、本発明の適用対象レジスタについて説明する。
【００８４】
本発明で用いるレジスタエントリは、記憶回路であり有限な資源である。これを有効活用するために、対象とするレジスタとして適当と思われる条件を検討した。対象とするレジスタとして適当と思われるのは以下のレジスタである。
【００８５】
（１）高い頻度でアクセスが発生するレジスタ、（２）ビット操作が多く実行されるレジスタ(バスアクセスにリードが必ず含まれるもの)、（３）シリアル通信などで複数のチップ間の通信を行う場合の受信データレジスタ、（４）符号化/復号化を行うモジュールの処理結果を格納するレジスタ、（５）モジュールの制御ビットや、状態フラグを持つレジスタ、（６）ＣＰＵの演算(DSP/Codec)処理のために、多量のデータをハンドリングするレジスタ、（７）割り込み要求を受付けた結果、データをリードするようなレジスタなどである。
【００８６】
尚、反対に、あまり適さないと思われるレジスタは、不具合の原因になりやすいレジスタや、高速化のメリットが少ないレジスタなどである。例えば、アクセス頻度が低いものや、LSIの動作の根本に関わるシステムレジスタ、ＤＭＡ転送による処理が重視されるレジスタ、システム制御タイマなどである。
【００８７】
上記の例によれば、以下の作用効果を得ることができる。
【００８８】
（１）図６に示されるように、ライト時はＣＰＵ１０，２０におけるＣＢＳＣ１０３のライトバッファ機能を利用して高速化を図ることができる。
【００８９】
（２）リード時はレジスタエントリ７０からのリードによって高速化を図ることができる。
【００９０】
（３）図７に示されるように、周辺モジュールでフラグがセットされるなどレジスタ値が更新された時、周辺モジュールからレジスタエントリが更新されることによって、周辺モジュールへのアクセス性能を改善することができる。
【００９１】
（４）上記（１），（２），（３）の作用効果により、周辺モジュールへのアクセス性能を改善することができる。
【００９２】
（５）３２ビット長のデータを送るには、図１１に示されるように、８ビットのシリアル転送路を４本組み合わせるようにすれば、３２ビットのデータを高速に送ることができるようになる。
【００９３】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００９４】
周辺モジュールのレジスタアクセスには、特徴的なアクセスがある。イネーブルビットやフラグのセットやクリア動作である。コントローラ系ではかなり多用されるアクセスで、リードしたレジスタの該当する1ビットについて、論理値“０”や“１”にデータを書き換えて同じレジスタに書き戻す動作である。CISC系のマイクロコンピュータでは、ビット操作命令を使用し、一連の動作を1命令でアトミックに実行できるものがある。ビット操作を行った時、リードする対象がレジスタエントリである場合、リード後のライトで不具合が発生する。フラグなどのビットは、フラグセット状態を読み出した後にクリアができるものがある。論理的には、図１２に示されるようにステートマシンによりフラグの制御が行われている。すなわち、図１２では、フラグセット状態を読み出すと「11」状態を示し、この状態でフラグクリアのライト動作を行うと初期状態の「00」に遷移する。レジスタエントリに対して「１リード後の０ライト」動作が高速に行われると、実レジスタへのライトにおいて、リードが行われていないことになる。すなわち、周辺モジュール内の実レジスタを正常に書き換えることができない。そこで、図９において、入力インタフェース８０９においてレジスタリード通知インタフェースを設ける。ＣＰＵ８０１がビット操作命令により、レジスタに対するビット操作（Read-Modify-Write）をした場合、レジスタエントリがリードされたことを周辺モジュールへ通知する。この通知があった後にライトが行われれば、周辺モジュールにおける実レジスタに対しても正しくビット操作を実施できる。ただし、ライトが発生する前にリード通知を行う必要があるため、動作速度は周辺-レジスタエントリ間のバス速度と同じにしなければならない。
【００９５】
本発明の効果を向上させるために、ＣＰＵの命令や機能を改善することが有効である。本発明の実施の形態で述べたように、レジスタエントリと周辺モジュールの実レジスタの間で値が一致していない期間が想定される。不一致である場合、ＣＰＵ８０１はソフトウェアで処理を行わなければならない場合がある。そこでＣＰＵ８０１がレジスタエントリ７０からデータをリードする時に、図示はしないが、レジスタエントリのデータ保持部８０８が保持するバリッドビット情報をＣＰＵに対して出力可能な回路有し、ＣＰＵは上記回路から出力されたバリッドビット情報に基づき動作するロード命令を持つ。例えば、「レジスタエントリから有効なデータをリードする」という命令であり、レジスタエントリ７０からリードした時のバリッドビット情報が無効を示した場合は、レジスタエントリ７０から出力されるバリッドビット情報が有効を示すまでレジスタエントリのデータをリードし続ける。つまり、一種の条件付ロード命令の様な命令をさらに追加することで、ＣＰＵにおいては有効なレジスタ値を最短の時間でリードすることが可能となる。また、一つの命令によって、バリッドビット情報を条件とする条件比較とレジスタエントリのデータをロードするロード命令とを実現できるので、命令コードサイズも削減可能である。バスシステムの改善にＣＰＵ機能を組み合わせることは、よりシステム性能向上を図ることが出来るものである。
【００９６】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、本発明はそれに限定されるものではなく、各種データ処理装置に適用することができる。
【００９７】
本発明は、少なくとも、周辺モジュールを含むことを条件に適用することができる。
【図面の簡単な説明】
【００９８】
【図１】本発明にかかる半導体集積回路の一例とされるマイクロコンピュータの構成例ブロック図である。
【図２】図１に示される構成の比較対象とされるマイクロコンピュータの構成例ブロック図である。
【図３】図５に示される構成の比較対象とされるマイクロコンピュータの構成例ブロック図である。
【図４】図３に示される構成における主要部の動作タイミング図である。
【図５】本発明にかかる半導体集積回路の一例とされるマイクロコンピュータの構成例ブロック図である。
【図６】図５に示される構成における主要部の動作タイミング図である。
【図７】図５に示される構成における主要部の別の動作タイミング図である。
【図８】本発明にかかる半導体集積回路の一例とされるマイクロコンピュータの別の構成例ブロック図である。
【図９】図８における主要部の詳細な構成例ブロック図である。
【図１０】図８及び図９に示される構成における主要部の動作タイミング図である。
【図１１】図８及び図９に示される構成における主要部の別の動作タイミング図である。
【図１２】ステートマシンによるフラグ制御論理の状態遷移図である。
【符号の説明】
【００９９】
１，２  バスシステム
３  周辺モジュール
４  バスマスタ
５  レジスタエントリ
７  マイクロコンピュータ
８  外部メモリ
９  デュアルコア演算処理部
１０，２０  ＣＰＵ
３０  デバッグ機能
４０  コア共通レジスタ
５０  マルチレイヤープラットフォーム
５１，５２  周辺モジュール
５３  ユーザ論理
７０  レジスタエントリ
１０１  ＣＰＵコア
１０２  ユーザＲＡＭ（ＵＲＡＭ）
１０３  キャッシュバスステートコントローラ（ＣＢＳＣ）
１０４  キャッシュコントローラ（ＣＣＮ）
１０５  命令オペランドキャッシュ（Ｉ＄／Ｏ＄）
１０６  内部バスコントローラ（ＩＢＳＣ）
５０１  ＤＲＡＭ
５０２  マルチレイヤバス（ＭＬＢ）
５０３，５０４，５０５  ＢＩＵ
８０１  ＣＰＵ
８０２  半導体メモリ
８０３  命令オペランドキャッシュ（Ｉ＄／Ｏ＄）
８０４  バスシステム
８０６  レジスタエントリ
８０７  バスマスタインタフェース
８０８  データ保持部
８０９  入力インタフェース
８１０  制御部
８１１，８１２，８１３  周辺モジュール
【図１】
2009289232.tif 000003
【図２】
2009289232.tif 000004
【図３】
2009289232.tif 000005
【図４】
2009289232.tif 000006
【図５】
2009289232.tif 000007
【図６】
2009289232.tif 000008
【図７】
2009289232.tif 000009
【図８】
2009289232.tif 000010
【図９】
2009289232.tif 000011
【図１０】
2009289232.tif 000012
【図１１】
2009289232.tif 000013
【図１２】
2009289232.tif 000014