1.代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の代表的な実施の形態に係る半導体集積回路(7)は、バスマスタ(10,20,801)と、上記バスマスタによってアクセス可能なレジスタを含む周辺モジュール(61,62,811〜813)と、上記バスマスタによってアクセス可能なレジスタエントリ(70,806)と、を含む。上記レジスタエントリは、上記バスマスタから見て上記周辺モジュール内のレジスタよりも高速アクセス可能な位置に配置され、且つ、上記周辺モジュール内のレジスタに保持されたデータと同一データが保持されるデータ保持部(808)を含み、上記バスマスタは、上記周辺モジュール内のレジスタからのデータリードに代えて、上記レジスタエントリからのデータリードを行うアクセスモードを含む。
上記の構成において、バスマスタからのリード要求はレジスタエントリに対してのみ行い、周辺モジュールに対するリード要求は行わないようにする。これにより、周辺モジュール内のレジスタ内のデータに代えて、レジスタエントリ内のデータが使用されるので、バスマスタは、所望の周辺モジュールに対応するレジスタ情報を高速に得ることができる。このことが、周辺モジュールへのアクセス性能を改善を達成する。
〔2〕上記〔1〕において、上記バスマスタには、上記周辺モジュール内のレジスタへのデータライトを行うとき、そのライト動作に並行して、同一データを上記レジスタエントリへライトしておく機能を含めることができる。
〔3〕上記〔1〕において、上記周辺モジュールには、上記周辺モジュール内のレジスタの保持情報が変更された際に、それに対応する上記レジスタエントリ内のデータを自ら更新する機能を含めることができる。
〔4〕上記〔1〕において、上記周辺モジュールは、上記周辺モジュール内のレジスタのライト動作が完了する前に、当該ライト動作が完了した旨の通知を上記レジスタエントリに対して行うように構成することができる。ライト動作完了とは、ライト対象レジスタへの書き込みが、周辺モジュール内で確定したタイミングを指す。
〔5〕上記〔1〕において、上記レジスタエントリには、上記周辺モジュールのレジスタに保持されているデータと、上記レジスタエントリ内に保持されている対応データとが一致するか否かを示すバリッドビットを含めることができる。
〔6〕上記〔1〕において、上記バスマスタをCPUとすることができる。その場合において、上記レジスタエントリは、上記CPUからのアクセスを可能とするCPUインタフェース(807)と、上記周辺モジュールからのアクセスを可能とする入力インタフェース(809)と、上記周辺モジュールに対応するデータ保持部(808)とを含んで構成することができる。また、上記データ保持部には、上記周辺モジュール内のレジスタに保持されているデータと、上記レジスタエントリ内のデータ保持部に保持されているデータとが一致しているか否かを示すバリッドビットの記憶エリアを含めることができる。
2.実施の形態の説明
次に、実施の形態について更に詳述する。
<実施の形態1>
一般にデータアクセスを行う場合、リードアクセスに関しては必ずバスマスタに対して所定のレイテンシを発生させる。すなわち、リードデータ待ちによるCPUのストールが発生する。現状の対策方法としては、キャッシュや、プリフェッチなどの技術を挙げることができる。また、バースト(連続)アクセスにより、一度に大量のデータアクセスを可能にすることも行われている。
ここで、周辺モジュールのレジスタアクセスは、一般にキャッシュ対象にできないため、CPUがデータを取り込むまで絶対時間を要している。この課題に対して、(a)CPUのアクセス時間が小さい場所からのアクセスを実現すること、及び(b)レジスタが更新された時は、モジュール側からCPUに向けデータを自ら送り出す(ライトする)ことを検討した。またこの二つを成立させるために、周辺モジュールのレジスタ値のコピーを保持する領域(レジスタエントリ)を用意し、CPUはレジスタエントリからデータを取得することでリードアクセスに対するCPUのストールを低減させる。関連して、周辺モジュールとレジスタエントリを接続する技術も組み合わせる。
ここでリードアクセスに着目した理由は、リードとライトではバスの利用の仕方に違いがあることが分かったためである。例えば、ライトでは、CPUライトコマンドが実行されて、ライトデータがバスシステム処理され、レジスタへの(ライト完了の)書き込みが行われる。また、リードでは、CPUによりリードコマンドが実行され、バスシステムにデータのリクエストが行われ、モジュールの応答により、リードデータがバスシステムを介してCPUに取り込まれる。
このように、ライトはCPUから周辺モジュールへ一方向に処理を流しているのに対し、リードではCPUと周辺モジュールの間を情報が往復していると考えられる。これをライトと同様に一方向に処理できないかを検討した結果が図2に示される。
図2に示されるように、周辺モジュール3を中心として、入力側と出力側とを別々に配置した場合、データの流れは一方向となる。バスシステム1,2ではCPUなどのバスマスタのアクセス時間が比較的に短いのに対して、周辺モジュール3ではバスマスタによるアクセス時間が長くなる。この図2においてリードとライトで異なる点は、リードの場合はCPUなどのバスマスタ4が所定の順序でデータを必要とするため、周辺モジュールの都合だけでデータを送り出すことができない点である。そこで図1に示されるように改善する。
図1では、周辺モジュール3がバスマスタ4に対してデータを出力する対象としてレジスタエントリ5が設けられる。このレジスタエントリ5はアクセス時間が小さい所に配置できればよく、可能であればCPUコア本体に内蔵することも否定しない。レジスタエントリは所定のバスプロトコル実現のために、データの一貫性を示すためのバリッドビットなどを持たせることができる。周辺モジュール3については、自らデータを出力できるように、レジスタエントリと接続される専用高速バスにおけるバスマスタとしての機能を持たせることができる。それは図1で「BM」と記した箇所である。周辺モジュール3は、自身のレジスタ情報を全てレジスタエントリ5に出力しても良いし、必要なレジスタを限定して出力しても良い。その制御はバスシステム1内やレジスタエントリ5に制御レジスタを用意して行う。また、レジスタエントリを必ず使用すべきであると限定する必要もないため、従来形式のリード用バスインタフェースと併用できるものとする。レジスタエントリの使用方法についてこのように考えた理由は、レジスタごとにアクセス頻度は異なるはずで、レジスタエントリの面積を最適化する場合、全レジスタを高速リードアクセスできなくても良いからである。またDMAコントローラなどの代替データ転送により、CPUが容易にアクセスできる場所にデータを移すことも十分有効である。
実施の形態を更に具体的に説明する。
図3には、二つのCPUを含むマイクロコンピュータの基本的な構成が示される。
図3に示されるマイクロコンピュータ7は、デュアルコア演算処理部9と、周辺モジュール51,61、ユーザ論理部66を含み、公知の半導体集積回路製造技術により単結晶シリコン基板などの一つの半導体基板に形成される。尚、ユーザ論理部66も周辺モジュールの一例とされる。図3に示されるマイクロコンピュータ7は、それが搭載されるユーザシステムにおいて、外部メモリ8に結合され、この外部メモリ8のランダムアクセスが可能とされる。
上記デュアルコア演算処理部9は、第1CPU10、第2CPU20、デバッグ機能部30、コア共通レジスタ40、マルチレイヤープラットフォーム50、クロック生成部80とを含む。第1CPU10及び第2CPU20は、それぞれ所定のプログラムに従った演算処理を行う。特にこの第1CPU10及び第2CPU20では、互いに異なるOS(オペレーティングシステム)による処理が可能とされる。第1CPU10及び第2CPU20からそれぞれ200MHzのバス11,12と、100MHzのバス13,14が引き出される。バス11,12,13,14にはデバッグ機能部30が結合され、このバス11,12,13,14を介してシステムデバッグのための各種情報のやり取りが可能とされる。また、バス13,14には、コア共通レジスタ40が結合され、このコア共通レジスタ40を介してCPU10,20間で各種情報のやり取りが可能とされる。第1CPU10及び第2CPU20は、互いに同一構成とされ、それぞれCPUコア101、ユーザRAM(URAM)102、キャッシュバスステートコントローラ(CBSC)103、キャッシュコントローラ(CCN)104、命令オペランドキャッシュ(I$/O$)105、内部バスコントローラ(IBSC)106とを含んで成る。
上記マルチレイヤープラットフォーム50は、DMAC(Direct Memory Access Controller)501、BIU(Bus Interface Unit)503,504,505、マルチレイヤバス(MLB)502とを含む。上記DMAC501及びBIU503〜505は、上記マルチレイヤバス502に結合される。また、上記マルチレイヤバス502は、CPU10,20における内部バスコントローラ106に結合される。上記BIU503には、周辺バス(HPB)60を介して周辺モジュール51,52が結合され、上記BIU504にはユーザ論理部53が結合され、上記BIU505には外部メモリ8が結合される。
尚、図3において、図1,2におけるバスシステムに対応するものについてはハッチングが付されている。
上記の構成において、各バス階層のクロック比を4:2:1に、動作周波数を200MHzに設定した場合を想定する。
(1)CPU10,20は、命令オペランドキャッシュ105及びURAM102に対しては1ステートアクセスが可能とされる(200MHz動作)。
(2)マルチレイヤーバス502からコア共通レジスタ40などに対しては最短1ステートアクセスが可能とされる(100MHz動作)。マルチレイヤープラットフォーム50は、CPU10,20の1/2の動作速度のため、2倍のアクセス時間が必要となり、CPU10,20とマルチレイヤープラットフォーム50との間で同期制御時間がさらに必要となる場合がある。
(3)周辺モジュールバスは、仕様上最短2ステートアクセスが可能である(50MHz以下の動作)。ただしCPU10,20の1/4、マルチレイヤーバス502の1/2の動作速度のため、アクセス時間は、マルチレイヤーバス502の2倍で、マルチレイヤーバス(MLB)502と周辺バス(HPB)60との間の同期制御時間がさらに必要となる場合がある。つまりCPU10,20からは最短で4ステート以上のアクセスになる。
(4)システム規模の増大、CPU10,20の高速化に応じて、バスの階層が深くなっている。
(5)周辺モジュールの動作速度は、機能仕様からCPU10,20よりも低速である。また、接続容易性、再利用性、リアルタイム性を優先したバスプロトコルを採用する必要がある。
図4には、図3に示される構成における主要部の動作タイミングが示される。図4において、CPUアドレス及びバスコマンドによって、例えば周辺モジュール51内のレジスタが指定され、そこにCPUライトデータWR1が書き込まれる。このとき、マルチレイヤバス(MLB)502では、MLBクロックに同期してデータが転送され、周辺バス(HPB)60では、HPBクロックに同期してデータ転送が行われる。このとき、CPU10,20におけるCBSC103のライトバッファ機能により、CPU10又は20は、周辺モジュールへのライト動作の終了を待たずに次の処理に移ることができる。CPU10又は20による読み出しデータはRD1で示される。図4に示される例では、周辺モジュールをリードすると、CPU10又は20のデータバスにデータが到達するまで10ステート必要となる。つまり、マルチレイヤバス・周辺モジュール間(8ステート)+マルチレイヤバス・CPU間(2ステート)=10ステートとなる。
ライトの場合も同様に、最短で10ステート必要であるが、CPU10,20におけるCBSC103のライトバッファ機能を使用してライト動作させることで、ライト動作の終了を待たずにCPUを次の処理に進ませることが可能である。しかし、CPU10又は20が周辺モジュール内のレジスタをリードすると、待ち時間(ストール時間)は非常に大きく無視出来なくなる。
図5には、本発明にかかるデータ処理装置の一例とされるマイクロコンピュータが示される。図5に示されるマイクロコンピュータが図3に示されるのと大きく相違するのは、レジスタエントリ70が設けられた点であり、CPU10又は20による周辺モジュールアクセス時のストール時間の短縮が図られている。
尚、図5ではCPU20の内部構成が省略されている。
上記レジスタエントリ70は、バス11、デバッグ機能部30、CPU10,20におけるIBSC106、周辺モジュール61,62、及びユーザ論理66に結合される。上記レジスタエントリ70は、CPU10,20に対して各種信号の出力を可能とするCPUインタフェースと、周辺モジュール61やユーザ論理66からの信号取り込みを可能とする入力インタフェース、データの保持を可能とするデータ保持部、上記CPUインタフェースや入力インタフェース及びデータ保持部の動作制御を可能とする制御部等を含む。
図6には、図5に示される構成において、ライト時はCPU10,20におけるCBSC103のライトバッファ機能を利用して高速化を図り、リード時はレジスタエントリからのリードによる高速化を図った場合の動作タイミングが示される。
周辺モジュールにおける動作モード設定レジスタへのライト動作はマルチレイヤープラットフォーム50を介して行われる。従って、ここでは、図3に示される構成の場合と同様に、ライトバッファ機能が利用される。そして本例ではこのライト動作と並行してレジスタエントリ70に上記ライトデータWR1のコピーが書き込まれる。周辺モジュール内のレジスタへのライト完了よりもレジスタエントリ70へのライトが早いため、一定時間コヒーレンシが保たれなくなる。そのため、周辺バス(HPB)60のライトサイクルのT2ステートに入った段階で、周辺モジュールからレジスタエントリ70にライト完了通知を送信し、データの一致を示すフラグ(バリッドビット)を立てる。CPU10又は20は、このバリッドビットの論理値を判定することで、周辺モジュール61,62と、それに対応するレジスタエントリ70との間でデータが一致するか否かを判断することができる。上記の完了通知はCPUクロックと同速で送受信される。上記のように周辺バス(HPB)60のライトサイクルのT2ステートに入った段階で、周辺モジュールからレジスタエントリ70にライト完了通知が送信される。CPU10又は20が動作モード設定レジスタをリードする時、レジスタエントリ70からデータを取り出すように制御する。このとき、CPU10又は20からのリード要求はレジスタエントリ70に対してのみ行い、周辺モジュールに対するリード要求は行わないようにする。これにより、MLBリードデータ(RD1)に代えて、レジスタエントリ70内のデータが使用されるので、CPU10又は20は、所望の周辺モジュールに対応するレジスタ情報を高速に得ることができる。
このように、ライト時はCPU10,20におけるCBSC103のライトバッファ機能を利用して高速化を図り、リード時はレジスタエントリ70からのリードによって高速化を図ることによって、周辺モジュールへのアクセス性能を改善することができる。
図7には、図5に示される構成において、周辺モジュールでフラグがセットされるなどレジスタ値が更新された時、周辺モジュールからレジスタエントリを更新する場合の動作タイミングが示される。
CPU10又は20がライトした値を「WR1」とし、新しい値を「UP1」とする。周辺モジュール内のレジスタの値は、周辺バス60のHPBクロックに同期して、タイミングTM2でUP1に更新される。タイミングTM2で周辺モジュール内のレジスタが更新され、レジスタエントリ70の値と不一致になる。そこでCPU10又は20と同じかそれ以上のクロックでレジスタ値が更新されるかを確認し、タイミングTM1で検出する。レジスタが更新される場合は、直ちに更新値をレジスタエントリ70へ転送する。図7の例では、タイミングTM3でレジスタエントリが新しいレジスタ値をラッチしたと仮定している。レジスタエントリ70は、タイミングT3から可能な限り早くエントリ情報を更新する。図7の例では、CPUクロックで更新すると仮定し、エントリ書き換えに2ステート要している。CPU10又は20が任意のタイミング、または割込み要求などでレジスタリードを行う際、レジスタエントリ70に新しいデータが既にあるため、それを1ステートでリードすることが可能である。このように、周辺モジュールでフラグがセットされるなどレジスタ値が更新された時、周辺モジュールからレジスタエントリが更新されることによって、周辺モジュールへのアクセス性能を改善することができる。
上記例によれば、以下の作用効果を得ることができる。
(1)図6に示されるように、ライト時はCPU10,20におけるCBSC103のライトバッファ機能を利用して高速化を図ることができる。
(2)リード時はレジスタエントリ70からのリードによって高速化を図ることができる。
(3)図7に示されるように、周辺モジュールでフラグがセットされるなどレジスタ値が更新された時、周辺モジュールからレジスタエントリを更新することによって、周辺モジュールへのアクセス性能を改善することができる。
(4)上記(1),(2),(3)の作用効果により、周辺モジュールへのアクセス性能を改善することができる。
<実施の形態2>
図8には、本発明にかかるデータ処理装置の一例とされるマイクロコンピュータの別の構成例が示される。図8に示されるマイクロコンピュータは、CPU801、ROM/RAMなどの半導体メモリ802、命令オペランドキャッシュ(I$/O$)803、バスシステム804、レジスタエントリ806、及び周辺モジュール811,812,813を含み、公知の半導体集積回路製造技術により単結晶シリコン基板などの一つの半導体基板に形成される。バスシステム804は、図5に示されるようなマルチレイヤープラットフォーム50を含む。周辺モジュール811,812,813は、自らデータを出力できるようにバスマスタとしての機能が搭載されている。上記バスシステム804は、バスインタフェースや、バスステートコントローラなどを含んで成る。レジスタの高速リードを可能とする高速リードインタフェース814と、レジスタへのライト動作や通常リードの際に使用されるライト及び通常リードインタフェース815とが設けられる。高速リードインタフェース814は、レジスタエントリ806や、バスシステム804の一部、及び周辺モジュール811,812,813の一部によって形成される。ライト及び通常リードインタフェース815は、バスシステム804の一部及び周辺モジュール811,812,813の一部を含んで成る。
本例において、上記レジスタエントリ806は以下のような機能を持つ。
(1)周辺モジュールのレジスタ値のコピーを保持する記憶エリアを有する(データ保持はフリップフロップ回路やメモリなどが適用可能)。
(2)周辺モジュール811〜813へのライト動作と並行してレジスタエントリのデータも更新できる機能を有する。
(3)レジスタエントリと実レジスタの間でデータの一貫性が保障できていることを表示するバリッド(V)ビットの記憶エリアを有する。
(4)実レジスタに付されたIDによる、レジスタエントリへの書き込み指定や制御機能を有する。
(5)周辺モジュールの特性やレジスタ本数に応じて入力インタフェースを選択する機能を有する。接続数が少ない場合は、高速パラレルデータバス(CPU速度と同等)が使用でき、接続数が多い場合にはCPU速度と同等以上の周波数でアクセス可能な高速シリアルバスが使用できる。また、実レジスタへの書き込み完了通知のために専用信号線が用いられる。
(6)CPU801から1ステートアクセス可能なインタフェース機能を有する。
上記の機能を有するレジスタエントリ806は、具体的にはバスマスタインタフェース(I/F)807、データ保持部808、入力インタフェース(I/F)809、及び制御部810を含んで成る。バスマスタインタフェース807は、CPUバス805に結合され、CPU801やその他のバスマスタへのデータ出力を可能とする。データ保持部808には、各種動作モード設定レジスタに書き込まれるデータのコピーなどが保持される。入力インタフェース809は、周辺モジュール811,812,813との間で各種信号のやり取りを可能とする。周辺モジュール811,812,813との間でやりとりされる各種信号には、バリッド制御信号(14)、リードサイクル実行通知信号(15)、周辺モジュール811,812,813からの読み出しデータ(16)が含まれる。
図9には、上記レジスタエントリ806の更に詳細な構成例が示される。
制御部810は、レジスタエントリ全体制御部8101、リード制御部及びコピー制御部8102、レジスタライトデータインタフェース8103、直接リードインタフェース8104を含む。レジスタエントリ全体制御部8101は、入力されたレジスタエントリ制御信号に基づいてレジスタエントリの有効・無効や一括して初期化をするなど、レジスタエントリの全体的な制御を行う。リード制御部及びコピー制御部8102は、レジスタエントリ用アクセス制御信号に基づいてデータ保持部808のリード制御やコピー(並行書き込み)制御を行う。レジスタライトデータインタフェース8103は、周辺モジュールへのデータライトの際にそれに並行してレジスタエントリ806へライトされるデータの取り込みを可能とする。上記データ保持部808に格納されるデータは、上記周辺モジュール811〜813に対応して割り当てられたID番号によって管理される。バリッドビットの記憶エリアと、データ(〜32bit)の記憶エリアが設けられ、上記ID番号に関連づけて、上記周辺モジュール811,812,813に対応するデータやバリッドビットの設定が可能とされる。
上記レジスタエントリ806の制御について詳述する。
レジスタエントリ806は、主に記憶回路とインタフェース回路から作られることを想定している。また、従来のバスアクセス方式との両立を計る為、レジスタエントリ806の制御機構は、CPU801と周辺モジュール811〜813との間に配置するのが好ましいと考えられる。図8において、レジスタエントリ806への入力をバスシステム804と周辺モジュール811〜813とに分けているのはこのためである。バス制御部810はコントロールレジスタを含み、このコントロールレジスタには、レジスタエントリ全体の有効又は無効制御を行う第1レジスタ、レジスタエントリを使用する単数または複数のレジスタのID番号を設定する第2レジスタ、レジスタエントリの初期化制御のための第3レジスタ、レジスタアクセス高速化の有効及び無効を設定する第4レジスタ、エントリサイズの変更を設定可能な第5レジスタなどの各種レジスタが含まれる。
レジスタエントリを使用するレジスタのID番号を設定する第2レジスタにおいて、レジスタに割り当てるIDは、設計段階でコンフィギュレーションして、あらかじめ決定しておくようにする。レジスタエントリの初期化制御のための第3レジスタとしては、全領域の一括消去、指定IDのバリッドビットのクリア機能などがあると有用である。レジスタアクセス高速化有効又は無効を設定する第4レジスタは、レジスタアクセス高速化設定を最終的に有効に設定される。レジスタIDごとに個別に設定可能とし、状況に応じて通常アクセス方式を使用することも可能である。エントリサイズの変更を設定可能な第5レジスタは、実レジスタのサイズを最大32ビットと想定すると、一つのIDに32ビットのデータを割り当てることになる。しかしデータバッファ的に使用するなど、32ビット以上のデータ保持の要求があった場合、一つのIDに32×nビット長のデータを格納できる使用方法を提供する事が可能である。
図10には、図8及び図9に示される構成における主要部の動作タイミングが示される。
図10に示される例は、周辺モジュールとレジスタエントリ間をシリアルバスで接続し、シリアル送信クロック(周辺モジュール送信クロック)の周波数をCPUクロックの仮に5倍とした場合である。レジスタエントリ70では、図7に示される場合と同様に、タイミングTM3から可能な限り早くエントリ情報が更新される。つまり、シリアルデータがレジスタエントリ807に届いてからシリアル−パラレル変換が行われ、その後にエントリデータの更新が行われる。
ここでは純粋なデータ部(8ビット)のみを送信するようになっているが、実際には周辺モジュール毎のID番号も送る必要がある。さらに、この方式で32ビット長のデータを送るには、図10に示される場合の4倍の時間が必要になってしまう。これについて改善した方式が図11に示される。
図11に示される動作タイミング例では、周辺モジュールの送信クロックを高速化している。8ビットのシリアル転送路を4本組み合わせて、32ビットのデータを送ることができるようにした。8ビット単位に4本束ねる方式は、バイトアクセスへの対応や8ビット、16ビットレジスタへの対応への適用性を考慮したものである。
上記の構成において、先ず周辺モジュール内でレジスタの更新があることが確認される。次にタイミングTM4でデータ送信開始を示すためにデータ信号を1クロックローレベルにする。さらに1クロックローレベルが続いた場合、ローレベルを検出したデータを更新対象として認識する。ハイレベルであった場合は、送信されてきたデータを無視する。
次に図11におけるタイミングT5において、2クロック期間で、ID番号を送る。ID番号は4本のデータ信号の状態を並列に読み取る。1クロック目で上位4ビット、2クロック目で下位4ビットを読み取るようにすれば、8ビットのIDを送信できる。引き続き、レジスタのデータを送信し、8ビットのデータを送信完了したら、全てのデータ信号を1クロックだけローレベルにしてからハイレベルに戻す。これによりデータ転送終了を通知する。この後パラレルデータへの変換と、エントリデータの更新を行う。このような動作により、周辺モジュール811〜812内の実レジスタと並行してレジスタエントリ806の更新を完了できる。
ここで、上記レジスタエントリ807の使用手順をまとめると、以下の通りである。
(1)レジスタエントリにクロックが供給され、レジスタ設定が行われる。このとき、クロックイネーブル設定や、供給するクロック周波数設定が行われる。
(2)レジスタエントリをイネーブルにし、初期化を行う(レジスタ設定)。このとき、マスタイネーブルが設定され、バリッドビットがクリアされる。又はデータ保持部808の全面一括クリアを実行しても良い。
(3)レジスタエントリを利用したいレジスタのID番号を制御810内のレジスタに設定する(レジスタ設定)。このとき、どのエントリに、どのID番号のレジスタデータを格納するかが登録される。また、エントリサイズが設定される。
(4)周辺モジュールを使用する設定が行われる。
(5)レジスタエントリの各ID番号毎のイネーブルビットをセットし、周辺モジュールからの書き込みを許可する(レジスタ設定)。
(6)動作中においては、周辺モジュールへライトしたら、レジスタエントリにも同じデータを並列してライトする。また、バリッドビットをクリア(インバリッド状態)とする。周辺モジュールにおける実レジスタへのライトが終わり、周辺モジュール側からのバリッドビットセット信号を受けた場合には、それに応じてバリッドビットがセットされる。また、周辺モジュールからレジスタエントリにデータ更新が発生した場合には、それに呼応して、レジスタエントリが速やかに更新される。
(7)レジスタエントリを使用しなくなった場合は、各ID番号毎のイネーブルビットをクリアする。完全に使用しない場合は、さらにマスタイネーブルもクリアする。これにより、通常のレジスタアクセスのみが有効の状態になる。
(8)低消費電力などを意図した場合は、さらにクロック供給を停止するようにする。
次に、本発明の適用対象レジスタについて説明する。
本発明で用いるレジスタエントリは、記憶回路であり有限な資源である。これを有効活用するために、対象とするレジスタとして適当と思われる条件を検討した。対象とするレジスタとして適当と思われるのは以下のレジスタである。
(1)高い頻度でアクセスが発生するレジスタ、(2)ビット操作が多く実行されるレジスタ(バスアクセスにリードが必ず含まれるもの)、(3)シリアル通信などで複数のチップ間の通信を行う場合の受信データレジスタ、(4)符号化/復号化を行うモジュールの処理結果を格納するレジスタ、(5)モジュールの制御ビットや、状態フラグを持つレジスタ、(6)CPUの演算(DSP/Codec)処理のために、多量のデータをハンドリングするレジスタ、(7)割り込み要求を受付けた結果、データをリードするようなレジスタなどである。
尚、反対に、あまり適さないと思われるレジスタは、不具合の原因になりやすいレジスタや、高速化のメリットが少ないレジスタなどである。例えば、アクセス頻度が低いものや、LSIの動作の根本に関わるシステムレジスタ、DMA転送による処理が重視されるレジスタ、システム制御タイマなどである。
上記の例によれば、以下の作用効果を得ることができる。
(1)図6に示されるように、ライト時はCPU10,20におけるCBSC103のライトバッファ機能を利用して高速化を図ることができる。
(2)リード時はレジスタエントリ70からのリードによって高速化を図ることができる。
(3)図7に示されるように、周辺モジュールでフラグがセットされるなどレジスタ値が更新された時、周辺モジュールからレジスタエントリが更新されることによって、周辺モジュールへのアクセス性能を改善することができる。
(4)上記(1),(2),(3)の作用効果により、周辺モジュールへのアクセス性能を改善することができる。
(5)32ビット長のデータを送るには、図11に示されるように、8ビットのシリアル転送路を4本組み合わせるようにすれば、32ビットのデータを高速に送ることができるようになる。
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
周辺モジュールのレジスタアクセスには、特徴的なアクセスがある。イネーブルビットやフラグのセットやクリア動作である。コントローラ系ではかなり多用されるアクセスで、リードしたレジスタの該当する1ビットについて、論理値“0”や“1”にデータを書き換えて同じレジスタに書き戻す動作である。CISC系のマイクロコンピュータでは、ビット操作命令を使用し、一連の動作を1命令でアトミックに実行できるものがある。ビット操作を行った時、リードする対象がレジスタエントリである場合、リード後のライトで不具合が発生する。フラグなどのビットは、フラグセット状態を読み出した後にクリアができるものがある。論理的には、図12に示されるようにステートマシンによりフラグの制御が行われている。すなわち、図12では、フラグセット状態を読み出すと「11」状態を示し、この状態でフラグクリアのライト動作を行うと初期状態の「00」に遷移する。レジスタエントリに対して「1リード後の0ライト」動作が高速に行われると、実レジスタへのライトにおいて、リードが行われていないことになる。すなわち、周辺モジュール内の実レジスタを正常に書き換えることができない。そこで、図9において、入力インタフェース809においてレジスタリード通知インタフェースを設ける。CPU801がビット操作命令により、レジスタに対するビット操作(Read-Modify-Write)をした場合、レジスタエントリがリードされたことを周辺モジュールへ通知する。この通知があった後にライトが行われれば、周辺モジュールにおける実レジスタに対しても正しくビット操作を実施できる。ただし、ライトが発生する前にリード通知を行う必要があるため、動作速度は周辺-レジスタエントリ間のバス速度と同じにしなければならない。
本発明の効果を向上させるために、CPUの命令や機能を改善することが有効である。本発明の実施の形態で述べたように、レジスタエントリと周辺モジュールの実レジスタの間で値が一致していない期間が想定される。不一致である場合、CPU801はソフトウェアで処理を行わなければならない場合がある。そこでCPU801がレジスタエントリ70からデータをリードする時に、図示はしないが、レジスタエントリのデータ保持部808が保持するバリッドビット情報をCPUに対して出力可能な回路有し、CPUは上記回路から出力されたバリッドビット情報に基づき動作するロード命令を持つ。例えば、「レジスタエントリから有効なデータをリードする」という命令であり、レジスタエントリ70からリードした時のバリッドビット情報が無効を示した場合は、レジスタエントリ70から出力されるバリッドビット情報が有効を示すまでレジスタエントリのデータをリードし続ける。つまり、一種の条件付ロード命令の様な命令をさらに追加することで、CPUにおいては有効なレジスタ値を最短の時間でリードすることが可能となる。また、一つの命令によって、バリッドビット情報を条件とする条件比較とレジスタエントリのデータをロードするロード命令とを実現できるので、命令コードサイズも削減可能である。バスシステムの改善にCPU機能を組み合わせることは、よりシステム性能向上を図ることが出来るものである。
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、本発明はそれに限定されるものではなく、各種データ処理装置に適用することができる。
本発明は、少なくとも、周辺モジュールを含むことを条件に適用することができる。