(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022185463
(43)【公開日】2022-12-14
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06F 13/28 20060101AFI20221207BHJP
G06F 13/12 20060101ALI20221207BHJP
【FI】
G06F13/28 310E
G06F13/12 330Z
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021093165
(22)【出願日】2021-06-02
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】村瀬 康
【テーマコード(参考)】
5B061
【Fターム(参考)】
5B061DD12
(57)【要約】
【課題】データ転送およびデータ整理に掛かる時間を短縮することが可能な半導体装置を提供すること。
【解決手段】半導体装置は、プロセッサと、メモリと、外部インタフェースと、外部インタフェースが受信したデータを格納するレジスタ(51、53)と、ミラーレジスタバッファ60と、プロセッサ、メモリ、外部インタフェース、レジスタ(51、53)、およびミラーレジスタバッファ60と接続された内部バスと、を備えている。レジスタ(51、53)は、内部バスを介さずに、ミラーレジスタバッファへデータを出力する。ミラーレジスタバッファ60は、レジスタ(51、53)から入力されたデータに、当該レジスタに割り当てられるアドレスとは別のミラーレジスタバッファ内のアドレスを付与し、内部バスを介さずに、メモリへデータを転送する。
【選択図】
図3A
【特許請求の範囲】
【請求項1】
プロセッサと、
メモリと、
外部インタフェースと、
前記外部インタフェースが受信したデータを格納するレジスタと、
ミラーレジスタバッファと、
前記プロセッサ、前記メモリ、前記外部インタフェース、前記レジスタ、および前記ミラーレジスタバッファと接続された内部バスと、
を備え、
前記レジスタは、前記内部バスを介さずに、前記ミラーレジスタバッファへ前記データを出力し、
前記ミラーレジスタバッファは、前記レジスタから入力された前記データに、前記レジスタに割り当てられるアドレスとは別の前記ミラーレジスタバッファ内のアドレスを付与し、前記内部バスを介さずに、前記メモリへ前記データを転送する、
半導体装置。
【請求項2】
請求項1に記載の半導体装置において、
前記ミラーレジスタバッファは、前記メモリへ前記データを転送する際、前記内部バスを介したアクセスと競合した場合に、前記データを一時的に保持するバッファ回路を備えている、
半導体装置。
【請求項3】
請求項1に記載の半導体装置において、
前記レジスタを複数備え、
前記ミラーレジスタバッファは、前記複数のレジスタから入力された複数の前記データに、同一のグループアドレスと、グループ内で連続するアドレスとを付与することで、グループ化する、
半導体装置。
【請求項4】
請求項3に記載の半導体装置において、
グループ化される前の前記複数のレジスタのアドレスは、不連続であるものが含まれる、
半導体装置。
【請求項5】
請求項3に記載の半導体装置において、
前記ミラーレジスタバッファは、外部イベントが発生すると、前記外部イベントに対応するグループを選択し、選択したグループに属するデータを前記メモリへ転送する、
半導体装置。
【請求項6】
請求項5に記載の半導体装置において、
前記外部イベントは、割り込みの受け付けである、
半導体装置。
【請求項7】
請求項5に記載の半導体装置において、
前記外部イベントは、サーバログデータの受信である、
半導体装置。
【請求項8】
プロセッサと、
コントローラと、
外部インタフェースと、
前記外部インタフェースが受信したデータを格納するレジスタと、
ミラーレジスタバッファと、
前記プロセッサ、前記コントローラ、前記外部インタフェース、前記レジスタ、および前記ミラーレジスタバッファと接続された内部バスと、
を備え、
前記レジスタは、前記内部バスを介さずに、前記ミラーレジスタバッファへ前記データを出力し、
前記ミラーレジスタバッファは、前記レジスタから入力された前記データに前記ミラーレジスタバッファ内のアドレスを付与し、前記内部バスへ出力する、
半導体装置。
【請求項9】
請求項8に記載の半導体装置において、
前記レジスタを複数備え、
前記ミラーレジスタバッファは、前記複数のレジスタに、それぞれ、ミラーレジスタバッファ内の任意のアドレスを付与する、
半導体装置。
【請求項10】
請求項8に記載の半導体装置において、
前記コントローラは、DMA(Direct Memory Access)コントローラである、
半導体装置。
【請求項11】
請求項8に記載の半導体装置において、
前記コントローラは、DTC(Data Transfer Controller)コントローラである、
半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
マイクロコントローラユニット(MCU:Micro Controller Unit)は、例えばアプリケーション分野等のあらゆる分野に応用されている。多くの場合、MCUには、データ転送やデータ整理等を行う機能が要求される。例えば、データ転送やデータ整理を定期的に行う状況においては、データ転送、および取得したデータを使用可能な状態にするデータ整理を高速で行うことが必須である。
【0003】
MCUでは、例えばCPU(Central Proscessing Unit)等のプロセッサにより、メインメモリ(RAM等)へのデータ転送等の制御が行われる。ここでは、MCU内で、周辺機能として設けられたレジスタに格納されたデータをメインメモリへ転送するものとする。
【0004】
CPUは、レジスタの所定のアドレスを指定し、バスを介して、指定したアドレスからデータを転送データとして読み出す。そして、CPUは、メインメモリの任意のアドレスを指定し、読み出したデータを指定したアドレスに書き込む。CPUは、このようにして、レジスタからメインメモリへデータを転送する。なお、データ整理は、読み出したデータをメインメモリに書き込んだ後に行われる。
【0005】
また、例えば特許文献1に示すDMA(Direct Memory Access)コントローラまたは特許文献2に示すDTC(Data Transfer Controller)コントローラにより、データ転送が行われることがある。DMA/DTCコントローラは、例えば、データ数、転送元アドレス(レジスタ)、転送先アドレス(メインメモリ)、転送モード等を指定し、バスを介して、転送元アドレス(レジスタ)から転送先アドレス(メインメモリ)へデータを転送する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2020-107990号公報
【特許文献2】特開平1-125644号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、CPUを用いた場合、1転送ごとに転送元アドレスおよび転送先アドレスの指定を行う必要がある。また、データ転送にCPUが介在するため、データ転送時間が長くなる。また、データ転送中、CPUは他の処理を行うことができない。
【0008】
一方、DMA/DTCを用いた場合、レジスタごとに転送元アドレスおよび転送先アドレスを指定することができる。しかし、データ転送後にCPUを使用してデータ整理を行う必要があるため、データ整理の時間を含めると、CPUのみで処理する場合よりも処理時間が長くなるおそれがある。
【0009】
本発明は、このようなことに鑑みてなされたものであり、その目的の一つは、データ転送およびデータ整理に掛かる時間を短縮することが可能な半導体装置を提供することにある。
【課題を解決するための手段】
【0010】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。代表的な半導体装置は、プロセッサと、メモリと、外部インタフェースと、外部インタフェースが受信したデータを格納するレジスタと、ミラーレジスタバッファと、プロセッサ、メモリ、外部インタフェース、レジスタ、およびミラーレジスタバッファと接続された内部バスと、を備えている。レジスタは、内部バスを介さずに、ミラーレジスタバッファへデータを出力する。ミラーレジスタバッファは、レジスタから入力されたデータに、レジスタに割り当てられるアドレスとは別のミラーレジスタバッファ内のアドレスを付与し、内部バスを介さずに、メモリへデータを転送する。
【発明の効果】
【0011】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、データ転送およびデータ整理に掛かる時間を短縮することが可能となる。
【図面の簡単な説明】
【0012】
【
図1】本発明の実施の形態1に係る半導体装置の一例を示すブロック図である。
【
図2】レジスタの構成およびレジスタに格納されるデータを具体的に例示する図である。
【
図3A】本発明の実施の形態1に係るミラーレジスタバッファの構成例を示すブロック図である。
【
図3B】
図3Aにおけるアドレス設定レジスタおよび割り込み設定レジスタの構成例を示す図である。
【
図4】ミラーレジスタバッファによるデータ転送の具体例を説明する図である。
【
図5】
図4に対応するデータ構成を具体的に示す図である。
【
図7】データ整理の他の応用例を説明する図である。
【
図8】データ整理のその他の応用例を説明する図である。
【
図9】本実施の形態と比較例とを対比するタイミングチャートを示す図である。
【
図10】本実施の形態と比較例とを消費電力で対比する図である。
【
図11】本発明の実施の形態2に係るミラーレジスタバッファの構成例を示す図である。
【
図12】比較例におけるデータ転送およびデータ整理を説明する図である。
【
図13】
図12に対応するデータ構成を具体的に示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するためのすべての図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0014】
(実施の形態1)
<半導体装置の構成>
図1は、本発明の実施の形態1に係る半導体装置の一例を示すブロック図である。半導体装置1は、
図1に示すように、プロセッサ10、DMA/DTCコントローラ20、メインメモリ30、外部インタフェース40、レジスタ群50、ミラーレジスタバッファ(MRB)60、第1内部バス70、バスインタフェース75、第2内部バス80等を備えている。半導体装置1の例としては、MCU等が挙げられる。
【0015】
プロセッサ10は、例えばCPU等で構成される演算処理装置である。プロセッサ10は、例えば、第2内部バス80および第1内部バス70を介して、レジスタ群50からデータを読み出す。そして、プロセッサ10は、第1内部バス70を介して、読み出したデータをメインメモリ30に書き込む。このように、プロセッサ10は、レジスタ群50に格納されたデータをメインメモリ30へ転送する。
【0016】
プロセッサ10は、例えばメインメモリ30に保持された各種プログラムやパラメータ等を含む各種データを読み出して実行することで、例えばデータ転送等の各種機能を発揮する機能ブロックをソフトウェアで実現する。なお、プロセッサ10は、ハードウェアとソフトウェアとを協働させた機能ブロックを実現してもよいし、ハードウェアのみで一部の機能ブロックを実現してもよい。
【0017】
DMA/DTCコントローラ20は、プロセッサ10に代わり、第2内部バス80および第1内部バス70を介して、レジスタ群50からメインメモリ30へのデータ転送を行う。
【0018】
メインメモリ30は、例えばSRAM(Static Random Access Memory)等の揮発性メモリである。メインメモリ30は、
図1に示すように、インタフェース31、各種データを保持するメモリアレイ32を備えている。インタフェース31は、第1内部バス70およびミラーレジスタバッファ60と接続されている。プロセッサ10、DMA/DTCコントローラ20、およびミラーレジスタバッファ60は、インタフェース31を介してメインメモリ30へアクセスする。
【0019】
メインメモリ30は、プロセッサ10やDMA/DTCコントローラ20をマスターとしてバス(第2内部バス80および第1内部バス70)を介してレジスタ群50やミラーレジスタバッファ60から転送されるデータや、バスを介さずに、ミラーレジスタバッファ60から直接書き込まれるレジスタ群50のデータを保持する。また、メインメモリ30は、プログラムやパラメータ、プロセッサ10の演算結果等の各種データを保持する。
【0020】
ところで、半導体装置1は、図示しないストレージを備えてもよい。ストレージとして、例えばフラッシュメモリやEEPROM等の不揮発性メモリが挙げられる。使用する不揮発性メモリは、容量等の条件に応じて適宜選択される。ストレージを備えた場合、半導体装置1を動作させるためのプログラムやパラメータ等がストレージに格納される。
【0021】
第1内部バス70は、プロセッサ10、DMA/DTCコントローラ20、およびメインメモリ30と接続される。また、第1内部バス70は、バスインタフェース75を介して、第2内部バス80と接続される。
【0022】
外部インタフェース40、レジスタ群50、ミラーレジスタバッファ60、第2内部バス80等は、半導体装置1内の周辺機能を構成する。外部インタフェース40、レジスタ群50、およびミラーレジスタバッファ60は、第2内部バス80と接続されている。また、前述した通り、第2内部バス80は、バスインタフェース75を介して第1内部バス70と接続される。
【0023】
外部インタフェース40は、外部装置とのデータの送受信を行うインタフェースである。外部インタフェース40は、例えば計測機器やセンサ等の外部装置と接続される。外部装置は、取得した計測データを半導体装置1へ送信する。外部インタフェース40は、外部装置から送信された計測データを受信する。そして、外部インタフェース40は、第2内部バス80を介して、受信した計測データをレジスタ群50の所定の記憶領域へ転送する。
【0024】
レジスタ群50は、例えば、外部インタフェース40が外部装置から受信した計測データ、時刻データ、周辺環境データ等の各種データを格納する記憶装置である。レジスタ群50は、格納するデータの種類ごとに異なるレジスタを備えている。例えば、レジスタ群50は、計測データを格納する計測データレジスタ51、時刻データを格納する時刻データレジスタ52、周辺環境データを格納する周辺環境データレジスタ53等の各レジスタを備えている。各レジスタに対するデータの書き込みおよび読み出しは、第2内部バス80等を介して行われる。
【0025】
また、レジスタ群50の各レジスタは、
図1に示すように、ミラーレジスタバッファ60と接続されている。各レジスタとミラーレジスタとの接続については、後で詳しく説明する。
【0026】
図2は、レジスタの構成およびレジスタに格納されるデータを具体的に例示する図である。
図2には、計測データレジスタ51、時刻データレジスタ52、周辺環境データレジスタ53に格納されるデータがそれぞれ示されている。
【0027】
計測データレジスタ51は、例えば複数の計測機器X、Y、Z(いずれも図示は省略)の各計測データを格納する。計測データレジスタ51は、
図2に示すように、計測機器Xの計測データ(MeterX[23:0])、計測機器Yの計測データ(MeterY[23:0])、計測機器Zの計測データ(MeterZ[23:0])を格納する。
【0028】
これらの計測データは、例えば[23:16]、[15:8]、[7:0]のように、所定のビット数(例えば8ビット、16ビット)ごとに分割して読み出しできるように格納されている。また、各計測機器の計測データは、ほぼ同時に計測されたデータである。なお、
図2には、ある時刻に計測された計測データのみが示されているが、この後の時刻に計測された計測データも続けて格納されてよい。
【0029】
また、計測データレジスタ51は、計測機器X、Y、Zのそれぞれに対応したレジスタ51a、51b、51cを備えてもよい。この場合、レジスタ51aは、計測機器Xの計測データ(MeterX[23:0])を格納する。レジスタ51bは、計測機器Yの計測データ(MeterY[23:0])を格納する。レジスタ51cは、計測機器Zの計測データ(MeterZ[23:0])を格納する。
【0030】
時刻データレジスタ52は、計測データレジスタ51に格納された計測データに対応する計測時刻を計測時刻データとして格納する。
図2では、計測データがCalendarとして表示されている。なお、計測時刻は、計測データを受信した時刻や、計測データが計測データレジスタ51に格納された時刻でもよい。時刻データレジスタ52には、複数の計時データが格納されてもよい。
【0031】
周辺環境データレジスタ53は、周辺環境データを格納する。周辺環境データとしては、例えば温度や湿度が挙げられる。周辺環境データレジスタ53は、例えば温度データ(Temperature)および湿度データ(Humidity)を格納する。周辺環境データレジスタ53に格納される周辺環境データは、前述の計測時刻における温度、湿度を示すデータである。
【0032】
また、周辺環境データレジスタ53は、温度データおよび湿度データのそれぞれに対応した周辺環境レジスタ53a、53bを備えてもよい。周辺環境レジスタ53aは、温度データを格納する。周辺環境レジスタ53bは、湿度データを格納する。
【0033】
<<ミラーレジスタバッファ>>
ミラーレジスタバッファ60は、レジスタ群50に格納されたデータに、連続したアドレスを追加で付与し、さらに内部バス70を介さずにメインメモリ30へ転送する回路である。レジスタ群50に格納されるデータには、レジスタまたはレジスタ内の記憶領域のアドレスが付与されている。しかし、レジスタ間またはレジスタ内においてアドレスが連続でない場合がある。そうすると、アドレスが連続でないことに起因して、メインメモリ30へのデータ転送に余計な処理を必要とし、転送時間が長くなってしまう。また、データのアドレスが連続でないと、連続したアドレスにデータが書き込まれるよう、データ整理を行う必要がある。
【0034】
そこで、本実施の形態では、ミラーレジスタバッファ60において、連続したアドレスを追加で付与し、グループ化することで、データ転送およびデータ整理に掛かる時間を短縮できるようにする。また、グループ化したデータをメインメモリ30へ転送する回路を設けることで、ミラーレジスタバッファ60からメインメモリ30へ直接データを書き込めるようにする。
【0035】
図3Aは、本発明の実施の形態1に係るミラーレジスタバッファの構成例を示すブロック図である。
図3Bは、
図3Aにおけるアドレス設定レジスタおよび割り込み設定レジスタの構成例を示す図である。
図3Aには、ミラーレジスタバッファ60とその周辺とを含めた構成が示される。
図3Aに示すように、ミラーレジスタバッファ60は、複数のアドレス付与回路65(65a0~65a2、…、65c0、…、65d、65e、65f)、データ出力制御回路64(64h、64l)、バッファ回路66、割り込み設定レジスタ68、データ書き込み制御回路69を備える。
【0036】
アドレス付与回路65は、
図2のレジスタ群50に含まれる各レジスタに対応してそれぞれ設けられる。この例では、アドレス付与回路65a0~65a2は、計測データレジスタ51aに対応して設けられ、計測データレジスタ51aに含まれる8ビット単位の3個のレジスタ51a0~51a2にそれぞれ対応して設けられる。
【0037】
同様に、アドレス付与回路65c0~65c2は、
図2の計測データレジスタ51cに対応して設けられ、計測データレジスタ51cに含まれる8ビット単位の3個のレジスタ51c0~51c2にそれぞれ対応して設けられる。なお、65c1、65c2、51c1、51c2の図示は省略される。また、アドレス付与回路65d、65eは、それぞれ、
図2の周辺環境レジスタ53a、53bに対応して設けられる。アドレス付与回路65fは、
図2の時刻データレジスタ52に対応して設けられる。
【0038】
各アドレス付与回路65は、
図3Aに示すように、アドレス設定レジスタ61、アドレス比較回路62、データ選択回路63h、63lを備える。アドレス設定レジスタ61は、例えばフリップフロップ回路で構成される。アドレス設定レジスタ61には、
図3Bに示されるように、ミラーレジスタに付与したい任意のミラーレジスタアドレスMADRが設定され、当該ミラーレジスタアドレスMADRを保持する。ミラーレジスタは、対応するレジスタをミラーリングするレジスタであり、例えば仮想的なレジスタである。一例として、アドレス付与回路65dが仮想的に備えるミラーレジスタは、周辺環境レジスタ53aをミラーリングする。
【0039】
アドレス設定レジスタ61に設定されるミラーレジスタアドレスMADRは、
図3Bに示されるように、例えば、上位4ビット([7:4])にグループアドレスGADRが設定され、下位4ビット([3:0])に、グループ内での連続するアドレスが設定される。この場合、16通りのグループ分けを行うことができ、グループ毎に、16個のデータを割り当てることができる。
【0040】
例えば、
図3Aにおいて、周辺環境レジスタ53a、53bを同一グループに設定する場合、アドレス付与回路65d内のアドレス設定レジスタ61の上位4ビットと、アドレス付与回路65e内のアドレス設定レジスタ61の上位4ビットとに同じグループアドレスGADRを設定すればよい。また、アドレス付与回路65d内のアドレス設定レジスタ61の下位4ビットに“0x0”を、アドレス付与回路65e内のアドレス設定レジスタ61の下位4ビットに“0x1”を設定すればよい。すなわち、アドレス設定レジスタ61の下位4ビットには、グループ内での連続するアドレスを設定すればよい。
【0041】
データ書き込み制御回路69は、外部イベント、例えば、レジスタ群50を含む計測回路からの割り込み信号INTに応じて、割り込み設定レジスタ68の設定内容に基づいて、メインメモリ30への書き込み先アドレスRADRと、書き込みデータWDTとを制御する。外部イベントとしては、割り込みの他にも、サーバログデータの受信等が挙げられる。
【0042】
割り込み設定レジスタ68には、
図3Bに示されるように、メインメモリ30への書き込み先アドレス、詳細には、書き込み先の先頭アドレス(ベースアドレス)RADRbと、グループアドレスGADRと、グループ内のデータ数NUMと、割り込み番号INTNと、イネーブルビットENとが設定される。この例では、ベースアドレスRADRbは16ビットであり、グループアドレスGADR、データ数NUMおよび割り込み番号INTNは、それぞれ4ビットであり、イネーブルビットENは1ビットである。
【0043】
データ書き込み制御回路69は、割り込み番号INTNに一致する割り込み信号INTを受けた場合に、メインメモリ30へベースアドレスRADRbを出力すると共に、各アドレス付与回路65へ、例えば8ビットの選択アドレスSADRを出力する。この際に、データ書き込み制御回路69は、選択アドレスSADRを、割り込み設定レジスタ68内のグループアドレスGADRおよびデータ数NUMに基づいて順次定める。
【0044】
詳細には、データ書き込み制御回路69は、上位4ビットをグループアドレスGADRの設定値に定め、下位4ビットをデータ数NUMの設定値に達するまで順次インクリメントしながら、選択アドレスSADRを出力する。また、データ書き込み制御回路69は、この選択アドレスSADRのインクリメントに応じて、メインメモリ30への書き込み先アドレスRADRも、ベースアドレスRADRbから順次インクリメントする。
【0045】
図3Aの構成例では、書き込み先アドレスRADRは、バイトアドレスであり、書き込みデータWDTは、ワード(16ビット)単位である。この場合、ベースアドレスRADRbおよび書き込み先アドレスRADRの最下位ビット([0])は、“0”レベルに固定される。そして、データ書き込み制御回路69は、選択アドレスSADRを1サイクル出力する毎に、書き込み先アドレスRADRの2ビット目([1])をインクリメントする。
【0046】
なお、書き込みデータWDTのデータ幅は、例えば、32ビットや64ビット等、適宜変更可能である。例えば、書き込みデータWDTのデータ幅がダブルワード(32ビット)である場合、ベースアドレスRADRbおよび書き込み先アドレスRADRの下位2ビット([0]、[1])が、“0”レベルに固定されることになる。また、
図3Aでは、1個の割り込み設定レジスタ68が示されているが、詳細には、複数のイベント、すなわち割り込み番号INTNが異なる割り込み信号INTに対応して、複数の割り込み設定レジスタ68が設けられる。そして、複数の割り込み設定レジスタ68毎に、異なる任意のグループアドレスGADRやベースアドレスRADRbが設定される。
【0047】
図3Aに示したアドレス付与回路65において、アドレス比較回路62は、アドレス設定レジスタ61が保持するミラーレジスタアドレスMADRと、データ書き込み制御回路69からの選択アドレスSADRとを比較する。詳細には、アドレス比較回路62は、例えば、ミラーレジスタアドレスMADRにおける8ビット中の上位7ビットと、選択アドレスSADRにおける8ビット中の上位7ビットとを比較する。アドレス比較回路62は、比較結果が一致する場合には“1”レベルを出力し、不一致の場合には“0”レベルを出力する。
【0048】
データ選択回路63h、63lは、例えば、3入力のアンドゲートで構成される。データ選択回路63h、63lには、3入力中の2入力として、アドレス比較回路62からの出力と、対応するレジスタからの8ビットのデータD[7:0]とが入力される。また、3入力中の残りの1入力として、データ選択回路63hには、ミラーレジスタアドレスMADRの最下位ビット([0])の値が入力され、データ選択回路63lには、当該最下位ビット([0])の反転値が入力される。
【0049】
これにより、データ選択回路63h、63lは、アドレス比較回路62の比較結果が一致する場合に、対応するレジスタからの8ビットのデータD[7:0]を、16ビットの書き込みデータWDTの上位8ビットまたは下位8ビットのいずれに出力するかを、ミラーレジスタアドレスMADRの最下位ビット([0])の値に基づいて選択する。具体的には、ミラーレジスタアドレスMADRの最下位ビット([0])の値が“1”レベルの場合には、データ選択回路63hがデータD[7:0]を出力し、最下位ビット([0])の値が“0”レベルの場合には、データ選択回路63lがデータD[7:0]を出力する。
【0050】
例えば、アドレス付与回路65d、65e内のアドレス設定レジスタ61において、同一のグループAが設定され、アドレス付与回路65dにおけるグループA内のアドレスが“0x0”に、アドレス付与回路65eにおけるグループA内のアドレスが“0x1”にそれぞれ設定された場合を想定する。また、選択アドレスSADRとして、当該グループAと、当該グループA内のアドレス“0x0”とが出力された場合を想定する。
【0051】
この場合、アドレス付与回路65d内のデータ選択回路63lは、周辺環境レジスタ53aの8ビットデータを出力し、これと並行して、アドレス付与回路65e内のデータ選択回路63hは、周辺環境レジスタ53bの8ビットデータを出力する。なお、仮に、“0x0”に続く選択アドレスSADRが出力される場合、当該選択アドレスSADRは、バイトデータとワードデータとの関係に伴い最下位ビット[0]を“0”レベルに固定することを前提として、“0x2”となる。
【0052】
データ出力制御回路64h,64lは、例えば、オアゲートで構成される。データ出力制御回路64hは、複数のアドレス付与回路65内の上位ビット側のデータ選択回路63hからの出力が入力され、実質的に、そのいずれか一つのデータ選択回路63hからの出力を後段へ出力する。一方、データ出力制御回路64lは、複数のアドレス付与回路65内の下位ビット側のデータ選択回路63lからの出力が入力され、実質的に、そのいずれか一つのデータ選択回路63lからの出力を後段へ出力する。
【0053】
バッファ回路66は、例えばフリップフロップ回路で構成される。バッファ回路66は、データ出力制御回路64hからの8ビットデータを上位ビットとし、データ出力制御回路64lからの8ビットデータを下位ビットとして、計16ビットデータをラッチする。そして、バッファ回路66は、データ書き込み制御回路69からの制御信号に応じて、ラッチした16ビットデータを書き込みデータWDTとしてメインメモリ30へ出力する。
【0054】
バッファ回路66は、例えば、ミラーレジスタバッファ60からメインメモリ30へのデータの転送、すなわち転送データの書き込みを行う際、第1内部バス70を介したアクセスと競合した場合に備え、転送データを一時的に保持するために設けられる。すなわち、バッファ回路66を備えることにより、転送データの書き込みタイミングをずらすことができ、バスを介したメインメモリ30へのアクセスと、ミラーレジスタバッファ60からメインメモリ30へのデータ転送とを行うことが可能となる。
【0055】
以上のように、アドレス付与回路65は、アドレス設定レジスタ61によって、レジスタ群50内の各レジスタ(例えば、周辺環境レジスタ53a等)から入力されたデータに、当該レジスタに割り当てられるアドレスとは別のミラーレジスタバッファ内のアドレス、すなわちミラーレジスタアドレスMADRを付与する。そして、ミラーレジスタバッファ60は、当該レジスタから入力されたデータを、内部バスを介さずに、メモリメモリ30へ転送する。これにより、データ転送時間を大幅に短縮することが可能となる。なお、本実施の形態においても、従来と同様、バスを介して、レジスタからメインメモリ30へデータを転送することが可能である。
【0056】
図3Cは、
図3Aの動作例を説明する模式図である。
図3Cには、複数のアドレス設定レジスタ61A~61Gと、割り込み設定レジスタ68と、レジスタ群50内の実レジスタRREGと、ミラーレジスタMREGと、メインメモリ30との関係の一例が示される。ここでは、説明の便宜上、アドレス設定レジスタ61および実レジスタRREGのそれぞれの数は、7個であるものとして説明する。
【0057】
アドレス設定レジスタ61A~61Gは、
図3Aに示した複数のアドレス付与回路65にそれぞれ含まれる。この内、例えば、アドレス設定レジスタ61A、61B、61D、61Eには、それぞれ、“0x21”、“0x20”、“0x22”、“0x23”が設定される。すなわち、アドレス設定レジスタ61A、61B、61D、61Eには、同一のグループアドレス“0x2”が設定される。
【0058】
実レジスタRREGは、
図3Aに示した計測回路内の複数のレジスタに該当する。当該複数のレジスタには、予め所定のアドレスADRがそれぞれ割り当てられる。この内、例えば、レジスタ“A”、“B”、“D”、“E”には、それぞれ、“0xF0400”、“0xF0401”、“0xF0600”、“0xF0601”が割り当てられる。すなわち、レジスタ“A”、“B”、“D”、“E”のアドレスADRには、不連続であるものが含まれ得る。
【0059】
アドレス設定レジスタ61A、61B、61D、61Eは、それぞれ、レジスタ“A”、“B”、“D”、“E”に対応するものである。その結果、レジスタ“A”、“B”、“D”、“E”にそれぞれ対応するミラーレジスタMREG“A”、“B”、“D”、“E”には、ミラーレジスタアドレスMADRとして、それぞれ、“0xF0721”、“0xF0720”、“0xF0722”、“0xF0723”が付与される。なお、ミラーレジスタアドレスMADRにおける上位12ビットの部分“0xF07”は、予め固定的に定められるものであり、下位8ビットの部分がアドレス設定レジスタ61によって任意に定められる。
【0060】
割り込み設定レジスタ68には、例えば、“0x8123_3050”が設定される。この場合、ベースアドレスRADRbは“0x3050”であり、グループアドレスADRは“0x2”であり、グループ内のデータ数NUMは“3”であり、割り込み番号ININは“0x1”である。なお、アドレス設定レジスタ61A~61Gおよび割り込み設定レジスタ68への設定は、例えば、プロセッサ10等によって予め行われる。
【0061】
データ書き込み制御回路69は、割り込み番号INTNが“0x1”の割り込み信号INTが発生した場合、割り込み設定レジスタ68に基づいて、選択アドレスSADRおよび書き込み先アドレスRADRを出力する。この例では、説明を分かり易くするため、便宜上、書き込みデータWDTのデータ幅は、8ビットであるものとする。
【0062】
この場合、データ書き込み制御回路69は、グループアドレスADRとグループ内のデータ数NUMとに基づいて、最初の転送期間(1st)で、4サイクルかけて選択アドレスSADRである“0x20”、“0x21”、“0x22”、“0x23”を順に出力する。その結果、当該4サイクルでは、書き込みデータWDTとして、レジスタ“B”、“A”、“D”、“E”のデータが順に出力される。
【0063】
また、この4サイクルでは、データ書き込み制御回路69は、ベースアドレスRADRbに基づいて、書き込み先アドレスRADRである“0x3050”、“0x3051”、“0x3052”、“0x3053”を順に出力する。その結果、メインメモリ30の書き込み先アドレスRADR“0x3050”、“0x3051”、“0x3052”、“0x3053”には、それぞれ、レジスタ“B”、“A”、“D”、“E”のデータが転送される。
【0064】
その後、データ書き込み制御回路69は、割り込み番号ININが“0x1”の割り込み信号INTを再び受けた場合、最初の転送期間(1st)の場合と同様にして、2回目の転送期間(2nd)の処理を実行する。この際には、データ書き込み制御回路69は、最初の転送期間(1st)の場合と異なり、最初の転送期間(1st)で出力した最後の書き込み先アドレスRADRである“0x3053”を保持しておき、その次のアドレス“0x3054”をベースアドレスに定める。
【0065】
このようにミラーレジスタバッファ60は、複数のレジスタ“B”、“A”、“D”、“E”から入力された複数のデータに、同一のグループアドレスGADR“0x2”とグループ内での連続したアドレスとを付与することで、グループ化する。この際に、グループ化される前の複数のレジスタ“B”、“A”、“D”、“E”のアドレスは、不連続であるものが含まれ得る。そして、ミラーレジスタバッファ60は、外部イベント、例えば割り込み信号INTが発生すると、当該外部イベントに対応するグループ(グループアドレスGADR“0x2”のグループ)を選択し、選択したグループに属するデータをメインメモリ30へ転送する。
【0066】
<<ミラーレジスタバッファの動作>>
ここで、ミラーレジスタバッファ60によるデータ転送の具体例について説明する。
図4は、ミラーレジスタバッファによるデータ転送の具体例を説明する図である。
図5は、
図4に対応するデータ構成を具体的に示す図である。
図5(a)は、データ整理前の各レジスタに格納されたデータを示す図である。
図5(b)はグループ化により整理されたデータ構成を示す図である。
図5(c)は、メインメモリ30へ転送後の転送データのデータ構成を示す図である。
【0067】
まず、各レジスタには、計測機器X、Y、Zの計測データ(MeterX、MeterY、MeterZ)、計時データ(Calendar)、温度データ(Temperature)および湿度データ(Humidity)が格納されている。レジスタに格納されたデータには、レジスタごとに所定のアドレスが付与されている(
図5(a))。
【0068】
そして、ミラーレジスタバッファ60は、例えばこれらのデータをグループ化する(
図5(b))。具体的には、ミラーレジスタバッファ60は、グループ化するデータに同一のグループアドレス、かつグループ内で連続するアドレスを付与することで、グループ化を行う。すなわち、グループ化するデータに対応するアドレス設定レジスタ61に、同一のグループアドレス、かつグループ内で連続するミラーレジスタアドレスが設定される。また、
図5(b)では、これらのミラーレジスタの先頭番地(ベースアドレス)として、「0xF300」が固定的に設定されている。
【0069】
図5(b)の例では、計測データ(MeterX)および計時データ(Calendar)が最初に転送される。次に、計測データ(MeterY)および温度データ(Temperature)が転送される。その次に、計測データ(MeterZ)および湿度データ(Humidity)が転送される。
【0070】
具体的には、計測データ(MeterX)はアドレス(1)(ベースアドレス)に書き込まれ、計時データ(Calendar)はアドレス(1)と連続するアドレス(2)に書き込まれる(
図4)。これにより、計測データ(MeterX)と計時データ(Calendar)とが、メインメモリ30内に連続して書き込まれることとなる(
図5(c))。
【0071】
次に、計測データ(MeterY)は、アドレス(2)と連続するアドレス(3)に書き込まれ、温度データ(Temperature)は、アドレス(3)と連続するアドレス(4)に書き込まれる(
図4)。これにより、計測データ(MeterX)、計時データ(Calendar)、計測データ(MeterY)、温度データ(Temperature)が、メインメモリ30内に連続して書き込まれることとなる(
図5(c))。
【0072】
そして、計測データ(MeterZ)は、アドレス(4)と連続するアドレス(5)に書き込まれ、湿度データ(Humidity)は、アドレス(5)と連続するアドレス(6)に書き込まれる(
図4)。これにより、計測データ(MeterX)、計時データ(Calendar)、計測データ(MeterY)、温度データ(Temperature)、計測データ(MeterZ)、湿度データ(Humidity)が、メインメモリ30内に連続して書き込まれることとなる(
図5(c))。
【0073】
ミラーレジスタバッファ60は、これらの動作を繰り返すことで、異なる時刻で計測した計測データ等を転送データとして連続してメインメモリ30に書き込む(
図5(c))。
【0074】
<<データ整理の応用例1>>
次に、データ整理の応用例について説明する。
図6は、データ整理の応用例を説明する図である。
図6(a)、(b)には、ピン数が異なるMCUにおけるデータ整理方法が例示されている。なお、
図6のPL0、PL1・・・は、ピンごとのデータを格納するレジスタ(ポートラッチレジスタ)を示している。例えばPL0はポート0のデータ、PL1はポート1のデータをそれぞれ格納するレジスタである。
【0075】
図6では、連続するポートのデータを整理する方法が示されている。連続するポートのレジスタのアドレスは連続しているが、一部のビットが無効化されているため、データとしてはアドレスが連続していない。そこで、
図6(a)の例では、ミラーレジスタバッファ60により、4ポート分のデータが2回分の転送データに纏められている。また、
図6(b)の例では、ミラーレジスタバッファ60により、4ポート分のデータが1回分の転送データに纏められている。
【0076】
<<データ整理の応用例2>>
図7は、データ整理の他の応用例を説明する図である。
図7では、連続しない複数ポートのデータを整理する方法が示されている。
図7に示すように、ポート0とポート5のレジスタのアドレスは不連続である。すなわち、グループ化される前の複数のデータのレジスタのアドレスは不連続である。そこで、ミラーレジスタバッファ60は、互いに離れたポート0のデータとポート5のデータとを纏めて転送データを生成する。
【0077】
<<データ整理の応用例3>>
図8は、データ整理のその他の応用例を説明する図である。ここでは、ユーザがフレキシブルにデータを整理する場合が示されている。
図8では、アドレスF0400、F0500、F0600、F0601のデータが転送データとして纏められている。纏められた転送データには、アドレスF0700~F0703が付与されている。このように、離れたアドレスのデータを隣り合うアドレスにアサインさせることで、これらのデータが連続したアドレスに書き込まれることとなり、データ整理が容易になる。
【0078】
<本実施の形態による主な効果>
本実施の形態によれば、ミラーレジスタバッファ60は、レジスタのデータに当該レジスタに割り当てられるアドレスとは別のミラーレジスタバッファ内のアドレスを付与し、アドレスを付与したデータを転送データとして、ミラーレジスタバッファ60からメインメモリ30に直接書き込む。その際、ミラーレジスタバッファ60は、グループ化したデータをメインメモリ30における連続したアドレスに書き込む。この構成によれば、レジスタからメインメモリ30へのデータ転送およびデータ整理を短時間で行うことが可能となる。
【0079】
また、連続したアドレスにデータが書き込まれるので、データ処理を効率的に行うことが可能となる。
【0080】
[比較例]
ここで、本実施の形態に対する比較例を示す。比較例は、前述した
図4、
図5と対比させて説明する。
【0081】
図12は、比較例におけるデータ転送およびデータ整理を説明する図である。
図13は、
図12に対応するデータ構成を具体的に示す図である。
図13(a)は、データ整理前にメインメモリに書き込まれたデータの構成を示す図である。
図13(b)は、データ整理された後のデータ構成を示す図である。
【0082】
比較例では、
図12に示すように、DMA/DTCコントローラ20により、レジスタからメインメモリへデータが転送される。DMA/DTCコントローラ20は、計測データ(MeterX)を読み出し、計測データ(MeterX)の転送先アドレスをアドレス(1)に設定し、メインメモリへ転送する。次に、DMA/DTCコントローラ20は、計測データ(MeterY)を読み出し、計測データ(MeterY)の転送先アドレスをアドレス(2)に設定し、メインメモリへ転送する。そして、DMA/DTCコントローラ20は、計測データ(MeterZ)を読み出し、計測データ(MeterZ)の転送先アドレスをアドレス(3)に設定し、メインメモリへ転送する(
図12、
図13(a))。
【0083】
同様に、DMA/DTCコントローラ20は、温度データ(Temperature)をアドレス(4)に、湿度データ(Humidity)をアドレス(5)に、計時データ(Calendar)をアドレス(6)にそれぞれ転送する(
図12、
図13(a))。
【0084】
そして、プロセッサは、メインメモリからデータを読み出し、読み出したデータを整理し、整理済みのデータをメインメモリに書き込む(
図12、
図13(b))。
【0085】
このように、比較例では、レジスタからメインメモリへのデータの転送、データをメモリから読み出しデータ整理、整理済みデータのメモリへの書き込みが行われるため、データ転送およびデータ整理に時間が掛かる。
【0086】
<本実施の形態と比較例との対比>
図9は、本実施の形態と比較例とを対比するタイミングチャートを示す図である。
図9(a)には、データ転送を1回行う場合について、本実施の形態と比較例とを比較するタイミングチャートが示されている。
図9(b)には、2回連続でデータ転送を行う場合について、本実施の形態と比較例とを比較するタイミングチャートが示されている。
【0087】
図9(a)において、DTCコントローラでデータを転送する場合、起動要求から5クロック目まではコマンド処理が行われる。そして、6クロック目にレジスタからのデータ読み出しが行われ、7クロック目にメインメモリへのデータ書き込みが行われる。そして、8クロック目にライトバックが行われる。そして、DTCコントローラの動作が終了する。
【0088】
図9(a)において、DMAコントローラでデータを転送する場合、1クロック目にバス調停のコマンド処理が行われる。そして、2クロック目にデータ読み出しが行われ、3クロック目にメインメモリへのデータ書き込みが行われる。そして、DMAコントローラの動作が終了する。
【0089】
図9(a)において、ミラーレジスタバッファ60でデータを転送する場合、1クロック目にバス調停のコマンド処理が行われる。そして、2クロック目に、ミラーレジスタバッファ60によるメインメモリへのデータ書き込みが行われる。そして、ミラーレジスタバッファ60の動作が終了する。
【0090】
これらを比較すると、DTCコントローラを用いた場合に、データ転送に最も時間が掛かる。また、DMAコントローラを用いた場合、データ転送時間はミラーレジスタバッファ60を用いた場合と1クロックしか変わらない。しかし、DMAコントローラを用いてデータ転送を行っても、そのあと、プロセッサによるデータ整理が行う必要がある。したがって、データ整理終了までの時間を考慮すれば、ミラーレジスタバッファ60を用いた本実施の形態のほうが、非常に短時間で処理を終えることができる。
【0091】
図9(b)の例では、データ転送に掛かる時間差がさらに拡がっている。ミラーレジスタバッファ60を用いた場合には、複数データを並行して転送することができるので、データ転送時間は、
図9(a)と同じである。しかも、DMAコントローラでは、連続でデータ転送を行うことができない。
【0092】
図10は、本実施の形態と比較例とを消費電力で対比する図である。
図10(a)は、プロセッサの動作と消費電力とを対比して示している。
図10(a)には、間欠動作が例示されている。
図10(b)は、
図10(a)における消費電力を本実施の形態と比較例とを比較して示している。
【0093】
間欠動作では、プロセッサの動作モードが、通常モード、ストップモード、スヌーズモードの間で切り換わる。スヌーズモードとは、プロセッサを使用せず、周辺機能のみを動作させるモードである。
【0094】
ミラーレジスタバッファ60を用いる本実施の形態では、スタンバイ解除後、スヌーズモードでデータ転送が行われる。しかし、CPUを用いた場合、スヌーズモードでデータ転送を行うことができないため、通常モードでデータ転送が行われる。また、CPUを用いた場合、データ転送時間が最も長くなる。
【0095】
したがって、
図10(b)に示すように、データ転送に掛かる消費電力は、本実施の形態が最も低く、CPUを用いた場合が最も高くなる。
図10(b)は、R78アーキテクチャで見積もったものである。このように、本実施の形態は、消費電力の観点からも、従来技術よりも効果的である。
【0096】
(実施の形態2)
次に、実施の形態2について説明する。すでに説明した通り、ミラーレジスタバッファは、レジスタのデータをグループ化して整理することができる。実施の形態1では、バスを介することなく、ミラーレジスタバッファからメインメモリ30へデータが直接転送されたが、本実施の形態では、プロセッサ10またはDMA/DTCコントローラ20からのアクセスに応じて、ミラーレジスタバッファからのデータがバスへ出力される。
【0097】
図11は、本発明の実施の形態2に係るミラーレジスタバッファの構成例を示す図である。
図11のミラーレジスタバッファ160は、
図3のミラーレジスタバッファ60から、バッファ回路66、割り込み設定レジスタ68、データ書き込み制御回路69が削除された構成となっている。
【0098】
ミラーレジスタバッファ160は、例えば、プロセッサ10またはDMA/DTCコントローラ20等からアクセスされ、プロセッサ10またはDMA/DTCコントローラ20等からの選択アドレスSADRが第2内部バス80を介して入力される。複数のアドレス付与回路65内のアドレス設定レジスタ61には、データ転送やデータ整理等で好都合となるように、予め、任意のミラーレジスタアドレスMADRが設定される。
【0099】
ミラーレジスタバッファ160では、それぞれのアドレス付与回路65において、アドレス設定レジスタ61が保持するミラーレジスタアドレスMADRと、バスを介して入力された選択アドレスSADRとを比較する。そして、ミラーレジスタアドレスMADRと選択アドレスSADRとが一致したアドレス付与回路65に対応するレジスタからデータが出力される。出力されたデータは、第2内部バス80を介して様々な箇所へ転送することが可能である。すなわち、転送先は、メインメモリ30に限らない。
【0100】
本実施の形態によれば、整理されたデータがミラーレジスタバッファ160からバスへ出力される。この構成によれば、プロセッサ10またはDMA/DTCコントローラ20等を用いた場合でも、データ転送およびデータ整理に掛かる時間を短縮することが可能となる。
【0101】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【0102】
1…半導体装置、10…プロセッサ、20…DMA/DTCコントローラ、30…メインメモリ、40…外部インタフェース、50…レジスタ群、60、160…ミラーレジスタバッファ、61…アドレス設定レジスタ、62…アドレス比較回路、63…データ出力回路、64…データ出力制御回路、65…アドレス付与回路、66…バッファ回路、68…割り込み選択レジスタ、69…データ書き込み制御回路、70…第1内部バス、75…バスインタフェース、80…第2内部バス。