JP2014071543A - 半導体集積回路 - Google Patents

半導体集積回路 Download PDF

Info

Publication number
JP2014071543A
JP2014071543A JP2012215261A JP2012215261A JP2014071543A JP 2014071543 A JP2014071543 A JP 2014071543A JP 2012215261 A JP2012215261 A JP 2012215261A JP 2012215261 A JP2012215261 A JP 2012215261A JP 2014071543 A JP2014071543 A JP 2014071543A
Authority
JP
Japan
Prior art keywords
check
semiconductor integrated
data
integrated circuit
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012215261A
Other languages
English (en)
Inventor
Hidekazu Tauchi
秀和 田内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2012215261A priority Critical patent/JP2014071543A/ja
Publication of JP2014071543A publication Critical patent/JP2014071543A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】半導体集積回路本来のデータ処理を妨げたり、半導体集積回路内のCPUに高い処理負荷を掛けたりすることなく、外部の不揮発性メモリから半導体集積回路の内部メモリへダウンロードしたデータのチェックを常時行うことを可能にする。
【解決手段】外部メモリ2からダウンロードされたプログラムデータを記憶するRAM120と、RAM120に記憶されたプログラムデータにしたがって処理を実行するCPU100とを内蔵する半導体集積回路1Aに、RAM120に記憶されたプログラムデータの正当性のチェックを行うチェック演算器130と、チェック対象とプログラムデータをRAM120から周期的に読み出してチェック演算器130にDMA転送するDMAコントローラ160とを実装する。
【選択図】図1

Description

この発明は、外部メモリから内部のメモリへデータをダウンロードして処理する半導体集積回路に関する。
CPUを搭載するシステムLSIなどの半導体集積回路には、CPUに実行させるプログラムデータ(プログラムの実行形式コード)の記憶された不揮発性メモリが外部に設けられているものと、当該不揮発性メモリを内蔵したものの2種類がある。前者の半導体集積回路では、外部の不揮発性メモリに記憶されたプログラムデータが内蔵RAM等の内部メモリへダウンロードされ、CPUは内部メモリにダウンロードされたプログラムデータにしたがって各種処理を実行する。
外部の不揮発性メモリから内部メモリへプログラムデータをダウンロードする構成の半導体集積回路では、静電気等の影響によってビット誤り等の生じた誤ったプログラムデータが内部メモリにダウンロードされることがある。誤ったプログラムデータが内部メモリにダウンロードされると、当該誤ったプログラムデータにしたがってCPUが誤動作する虞がある。そこで、この種の半導体集積回路では、例えばブート時の初期化の際などの予め定められたタイミングで、内部メモリへダウンロードしたプログラムデータに誤りがないこと(正当性、或いは完全性と呼ばれる。本願では「正当性」という用語を用いる)のチェックが行われることが多い(例えば、特許文献1参照)。
特開2011−210278号公報 特開2010−282296号公報
半導体集積回路の組み込み先がパチンコ台などの遊技機である場合、遊技中のパチンコ玉同士の衝突或いはパチンコ玉と釘の衝突によりノイズが多発し、正常に内部メモリへダウンロードされたプログラムデータに事後的に誤りが生じる場合がある。このため、遊技機における場合のようにノイズが多発する環境下では、内部メモリにダウンロードしたプログラムデータの正当性のチェックを常時行うようにすることが好ましい。しかし、従来、この種のチェックはCPUのソフトウェア処理により実現されており、正当性のチェックを常時行うようにすると、CPUにかかる処理負荷が高くなり過ぎて半導体集積回路の性能に悪影響を及ぼしかねない。また、CPUのソフトウェア処理による正当性のチェックでは、CPUの誤動作が発生した場合にはチェックの信頼性そのものに疑問が生じる。
一方、プログラムデータを記憶した不揮発性メモリを内蔵した半導体集積回路では、これらの問題が生じることはない。このため、例えば車載システムのように高い信頼性を要求されるシステムでは、この種の半導体集積回路が採用される傾向があった。しかし、この種の半導体集積回路には、不揮発性メモリを内蔵させることに起因する問題、具体的には、不揮発性メモリ混在のプロセスはコストが高く、動作速度が遅いといった問題や、不揮発性メモリのプロセスに他の回路も縛られるため相対的に性能が低く、回路密度の低い実装となるといった問題、がある。
本発明は上記課題に鑑みて為されたものであり、半導体集積回路本来のデータ処理を妨げたり、半導体集積回路内のCPUに高い処理負荷を掛けたりすることなく、外部メモリから内部メモリへダウンロードしたデータの正当性のチェックを常時行うことを可能にする技術を提供することを目的とする。
上記課題を解決するために本発明は、外部メモリからダウンロードされるデータを記憶するメモリと、前記メモリに記憶されたデータにしたがって処理を実行するプロセッサと、前記メモリに記憶されたデータを読み出して正当性をチェックする処理を繰り返し実行するチェック回路と、を有することを特徴とする半導体集積回路、を提供する。本発明の半導体集積回路では、外部メモリから当該半導体集積回路内のメモリへダウンロードされたデータの正当性のチェックを行うチェック回路がプロセッサとは別個のハードウェアとして実装されている。このため、上記正当性のチェックを周期的に繰り返し実行したとしても、プロセッサに余分な処理負荷がかかることはなく、半導体集積回路本来のデータ処理が上記正当性のチェックによって妨げられることはない。なお、メモリからのチェック対象のデータの読み出しおよびチェック回路への転送については、DMA(Direct Memory Access)コントローラを用い、プロセッサがメモリへアクセスする際の帯域を圧迫しない程度にDMAアクセス周期および一周期当たりのデータ転送量を調整すれば良い。
特許文献2には、外部メモリ(特許文献2では、シリアルフラッシュメモリ11)からシステムLSI内の内部メモリ(特許文献2では、SRAM20)へダウンロードしたプログラムデータのチェックをCPU50とは別個のデータチェック回路52に実行させる発明が記載されている。しかし、特許文献2に記載の発明ではSRAM20からのチェック対象のプログラムデータの読み出しおよびチェックの実行はCPU50からデータチェック回路52への指示を契機として実行され(特許文献2:段落0017)、CPU50はチェック対象のデータの読み出しおよびチェックの実行タイミングの制御に関与している。したがって、特許文献2に記載の発明は本願発明と異なる技術である。
より好ましい態様においては、前記チェック回路は、前記メモリに記憶されたデータのうち、チェック対象として指定された1または複数のデータを対象として前記正当性をチェックする処理を繰り返し実行することを特徴とする。一般に、内部メモリに記憶されている全てのデータの正当性をチェックすることは必ずしも必要ではなく、このような態様によれば正当性のチェックを要するデータのみを効率的にチェックすることが可能になる。また、プロセッサの実行中の処理においてアクセスされないデータについては当該処理の実行中は正当性のチェックを行う必要はないのであるから、プロセッサに実行させる処理毎にチェック対象とするデータを定めておき、実行中の処理に対してチェック対象として定められたデータについてのみ正当性をチェックする(すなわち、プロセッサの実行中の処理に応じてチェック対象を切り替える)ようにしても良い。このような態様によっても、チェックを要するデータのみを効率的にチェックすることが可能になる。
さらに別の好ましい態様においては、正当性のチェックを第1の周期で繰り返し実行する第1の動作モードと、第1の周期よりも長い第2の周期で正当性のチェックを繰り返し実行する第2の動作モードの少なくとも2つの動作モードを有し、前記チェック回路は指定された動作モードで動作することを特徴とする。例えば、ブート直後は第1の動作モードで動作させ、ブートから所定時間が経過して動作が安定した以降は、第2の動作モードで動作させる(すなわち、ブートからの経過時間に応じて動作モードを切り替えさせる)のである。
本発明の第1実施形態の半導体集積回路1Aの構成例を示すブロック図である。 同半導体集積回路1Aにおけるチェック処理の流れを示すフローチャートである。 同半導体集積回路1Aの動作を説明するための図である。 本発明の第2実施形態の半導体集積回路1Bにおけるチェック処理の流れを示すフローチャートである。 同半導体集積回路1Bの動作を説明するため図である。 変形例(1)の半導体集積回路1Cの構成例を示すブロック図である。
以下、図面を参照しつつ本発明の実施形態を説明する。
(A:第1実施形態)
図1は、本発明の第1実施形態の半導体集積回路1Aの構成例を示すブロック図である。この半導体集積回路1Aは、CPU100を内蔵したシステムLSIである。図1に示すように、半導体集積回路1Aは、CPU100の他に、外部メモリインタフェース110、RAM(Random Access Memory)120、チェック演算器130、リセット制御部140、割り込み制御部150、DMAコントローラ160、およびこれら構成要素間のデータ授受を仲介するバス170を含んでいる。
図1では、半導体集積回路1Aの機能の理解を容易にするため、同半導体集積回路1Aに接続された外部メモリ2が同半導体集積回路1Aとともに図示されている。外部メモリ2は、例えばフラッシュメモリなどの不揮発性メモリであり、CPU100に各種処理を実行させるためのプログラムデータを記憶している。図1に示す半導体集積回路1Aでは、外部メモリ2に記憶されたプログラムデータを内部メモリ(本実施形態では、RAM120)へダウンロードし、当該ダウンロードしたプログラムデータにしたがってCPU100を作動させることで当該半導体集積回路1A本来の機能が実現される。図1に示すように外部メモリ2は外部メモリインタフェース110に接続されている。外部メモリ2からRAM120へのプログラムデータのダウンロードは、CPU100による制御の下、外部メモリインタフェース110を介して行われる。
チェック演算器130は、RAM120にダウンロードされたプログラムデータにビット誤り等の誤りが発生していないかを検証するためのチェック演算(すなわち、正当性をチェックするためのチェック演算)を行う回路である。チェック演算器130に実行させるチェック演算の一例としては、チェックサムやCRC、或いはハッシュの算出演算が挙げられる。これら各種のチェック演算の何れを採用するのかについては半導体集積回路1Aに対して要求される信頼性との関係で決めれば良い。例えば、要求される信頼性の程度がさほど高くない場合には、チェックサムの算出演算を採用し、高い信頼性を要求される場合にはハッシュの算出演算を採用する、といった具合である。本実施形態では、チェック演算器130に実行させるチェック演算としてチェックサムの算出演算が採用されている。
チェック演算器130は、チェック対象のプログラムデータのチェックサムを算出し、当該プログラムデータについての期待値(チェック対象のプログラムデータに誤りがない場合に算出されるチェックサムの値)と比較する。なお、期待値についてはプログラムデータと対にして外部メモリ2に予め格納しておき、外部メモリ2からのプログラムデータのダウンロードの際にそのプログラムデータに対応する期待値をダウンロードしてチェック演算器130にセットする処理をCPU100に実行させるようにすれば良い。チェック演算器130は、RAM120から読み出したプログラムデータから算出したチェックサムと上記期待値とが異なる場合には、誤りの発生を通知する誤り通知信号をリセット制御部140および割り込み制御部150に与える。従来、このようなチェック演算はCPU100にチェック演算用のプログラムを実行させることで実現されることが多かったが、このようなチェック演算を実行するチェック演算器130をCPU100とは別個のハードウェアとして実装したことに本実施形態の特徴の1つががある。また、詳細については後述するが、本実施形態では、RAM120からのチェック対象のプログラムデータの読み出しはCPU100を介さずにDMAコントローラ160によって行われる。
リセット制御部140は、誤り通知信号を受け取ったことを契機として半導体集積回路1Aのリセットを行う回路であり、割り込み制御部150は誤り通知信号を受け取ったことを契機としてCPU100に割り込み指令を与える回路である。つまり、リセット制御部140および割り込み制御部150は、外部メモリ2からRAM120へダウンロードしたプログラムデータに誤りが発生した場合であっても、その誤りに起因する誤動作が生じないようにするためのものである。なお、プログラムデータの誤りを検出した場合のエラー処理としては、上述した割り込み制御やシステムリセットの他に、フラグ表示やビープ音出力などが考えられる。また、システム全体のリセットを行うのではなく、誤りの発見されたプログラムデータにより実現される機能のみのリセット(初期化および当該プログラムデータの再ダウンロード)を行う態様であっても良く、また、いわゆるウオッチドッグタイマ処理であっても良い。
DMAコントローラ160は、チェック対象のプログラムデータをD(Dは任意の自然数)バイトなどの所定データサイズ分ずつRAM120から読み出してチェック演算器130へDMA転送する処理を周期的に実行する回路である。DMAコントローラ160は、RAM120からチェック演算器130へのチェック対象のプログラムデータの転送を行う際にバス170の使用権を調停するバスマスタとして機能し、CPU100を介することなくRAM120からチェック演算器130へのチェック対象のプログラムデータの転送を実現する。このDMAコントローラ160は、チェック演算器130とともに、RAM120に記憶されたデータを読み出してチェックする処理を繰り返し実行するチェック回路を形成する。
DMAコントローラ160による1回の読み出し処理における読み出しデータのデータサイズや読み出し周期の長さについては、CPU100によるRAM120へのアクセスの妨げとならない範囲で適宜定めるようにすれば良い。本実施形態では、CPU100は、チェック対象のプログラムデータの指定(RAM120において当該プログラムデータの記憶されている記憶領域の先頭アドレスと最終アドレスの指定、若しくは同先頭アドレスと当該記憶領域のデータ量の指定)やDMA転送の実行周期(バスリクエストの発生周期)の指定を行うものの、チェック対象のプログラムデータのRAM120からの読み出しおよびチェック演算器130への転送には関与しない。このため、本実施形態では、外部メモリ2からRAM120へダウンロードしたプログラムデータのチェックを一定周期で繰り返し行っても、CPU100に余分な処理負荷がかかることはない。
以上が半導体集積回路1Aの構成である。
次いで、図2を参照しつつ、本実施形態の半導体集積回路1Aの動作を説明する。図2は、半導体集積回路1Aにおけるチェック処理の流れを示すフローチャートである。図2に示すように、本実施形態のチェック処理には、ステップSA100〜ステップSA130の処理、およびステップSB100〜ステップSB170の処理が含まれている。本実施形態のチェック処理を構成する各処理のうち、ステップSA100〜ステップSA130の処理はCPU100にて実行される処理であり、ステップSB100〜ステップSB170の各処理はチェック回路(すなわち、チェック演算器130およびDMAコントローラ160)にて実行される処理である。
半導体集積回路1Aのリセットが解除され、半導体集積回路1Aのシステムが起動されると、CPU100は内蔵ROM(図示略)等からブートローダを読み出して実行し(ステップSA100)、このブートローダにしたがって外部メモリ2からRAM120へのプログラムデータのダウンロードを実行する(ステップSA110)。次いで、CPU100は、RAM120にてチェック対象のプログラムデータを記憶した記憶領域(以下、チェック領域)の先頭アドレスおよび最終アドレス若しくはチェック領域のデータ量、DMAコントローラ160によるデータの読み出し周期を示す値、および期待値をチェック回路に与え、チェック回路の初期化を行う(ステップSA120)。そして、CPU100は、チェック回路の初期化を完了すると、チェック回路に対して動作開始を指示する(ステップSA130)。以降、CPU100はRAM120にダウンロードしたプログラムデータにしたがって半導体集積回路1A本来の機能を実現する。
CPU100から動作開始の指示を受け取ったことを契機として、チェック回路では、RAM120からのデータの読み出し位置を示すアドレスレジスタ(図1では図示略)にチェック領域の先頭アドレスがセットされ(ステップSB100)、チェックサムの算出に用いるチェックサムレジスタ(図1では図示略)が初期化(ゼロクリア)される(ステップSB110)。次いで、チェック回路は、アドレスレジスタに格納されているアドレスから所定データサイズ分のデータを読み出してチェックサムを算出する処理(SB120)を実行する。より詳細に説明すると、このステップSB120の処理では、DMAコントローラ160は、アドレスレジスタの示すアドレスから所定データサイズ分のデータを読み出してチェック演算器130にDMA転送する。一方、チェック演算器130はDMAコントローラ160から受け取ったデータを対象としてチェックサムを算出し、その時点のチェックサムレジスタの格納内容に加算する。
ステップSB120に後続するステップSB130では、DMAコントローラ160は、チェック領域のデータを全て読み出したか否かを判定する。具体的には、DMAコントローラ160は、アドレスレジスタに記憶されているアドレスにステップSB120にてRAM120から読み出したデータサイズの値を加算した値がチェック対象の記憶領域の最終アドレスに達したかどうかを判定し、達した場合は、チェック対象のデータを全てチェック演算器130に転送したと判定する。ステップSB130の判定結果が“Yes”である場合には、チェック回路ではステップSB160以降の処理が実行され、逆に、ステップSB130の判定結果が“No”である場合には、チェック回路ではステップSB140以降の処理が実行される。
ステップSB130の判定結果が“No”である場合に実行されるステップSB140では、図示せぬタイマによる計時が開始され、データ読み出し周期分の時間が計時されるまで(ステップSB140:Yes)、当該ステップSB140の処理が繰り返し実行される。データ読み出し周期分の時間が計時され、当該周期が満了すると、DMAコントローラ160は、アドレスレジスタに格納されているアドレスに上記所定データサイズを加算することでアドレスレジスタの格納内容を更新し(ステップSB150)、ステップSB120以降の処理を繰り返し実行する。
これに対して、ステップSB130の判定結果が“Yes”である場合に実行されるステップSB160では、チェック演算器130によって、チェックサムレジスタに記憶されているチェックサムが期待値と一致するか否かの判定が行われる。そして、ステップSB160の判定結果が“Yes”である場合(すなわち、チェックサムと期待値が一致する場合)には、ステップSB100以降の処理が再度実行される。一方、ステップSB160の判定結果が“No”である場合には、誤り通知信号をリセット制御部140および割り込み制御部150に与えるエラー処理がチェック演算器130により実行され(ステップSB170)、その後、ステップSB100以降の処理が再度実行される。
例えば、一回のデータ読み出しのデータサイズがDバイトである一方、チェック対象のプログラムデータのデータサイズがA(Aは2以上の自然数)×Dバイトであり、RAM120においてアドレスadd0を先頭アドレスとするチェック領域0に当該プログラムデータが格納されているとする。この場合、チェック回路は、CPU100から動作開始を指示されると、チェック領域0の先頭アドレスadd0をアドレスレジスタに設定し(ステップSB100)、ステップSB110以降の処理を実行する。チェック領域0に格納されているデータはデータ読み出し周期T毎にDバイトずつ読み出され、A回目の読み出し(図3における「最後」の読み出し)の際にステップSB130の判定結果は“Yes”となってステップSB160以降の処理が実行される。そして、ステップSB160の判定結果が“Yes”であれば即座にステップSB100以降の処理が再度実行され、ステップSB160の判定結果が“No”であればエラー処理(ステップSB170)を実行した後にステップSB100以降の処理が再度実行される。つまり、チェック領域0に記憶されたプログラムデータの正当性のチェックは(A×T)周期で繰り返し実行される(図3参照)。一回のデータ読み出しサイズDバイトと周期Tの値を適切に設定することにより、バス170の帯域をデータ転送により圧迫しないようにできるので、CPU100によるRAM120へのアクセスが妨げられないようにすることが可能である。例えば、バス170の全帯域からCPU100がRAM120にフルにアクセスした場合の帯域を除いた帯域にチェック用の帯域が含まれるようにすれば良い。
以上説明したように、本実施形態の半導体集積回路1Aでは、外部メモリ2からRAM120へダウンロードしたプログラムデータの正当性のチェックがチェック回路によって一定の周期で繰り返し実行される。このため、ダウンロード完了後にノイズ等によってプログラムデータの誤りが発生した場合であっても、その誤りがチェック回路による正当性のチェックによって検出され、システムリセット等の適切な対応をとることができる。また、本実施形態では、チェック演算器130がCPU100とは別個のハードウェアとして実装されているため、上記正当性のチェックを周期的に行ったとしてもCPU100に余分な処理負荷がかかることはない。加えて、本実施形態では、RAM120からチェック演算器130へのチェック対象のプログラムデータの転送はCPU100を介さずにDMAコントローラ160によって行われるので、このデータ転送に起因した処理負荷がCPU100にかかることもなく、また、上記データ転送によってCPU100によるRAM120のアクセスが妨げられることもない。つまり、CPU100本来の処理の実行が妨げられることはない。
このように、本実施形態によれば、半導体集積回路1A本来のデータ処理を妨げたり、CPU100に高い処理負荷を掛けたりすることなく、外部メモリ2からRAM120へダウンロードしたプログラムデータの正当性のチェックを常時行うことが可能になる。このように、本実施形態によれば、外部メモリ2からRAM120へダウンロードしたプログラムデータの正当性のチェックを、半導体集積回路1A本来のデータ処理を妨げたり、CPU100に高い処理負荷を掛けたりすることなく、常時行うことが可能になるため、高い信頼性を要求されるシステムLSI(例えば、車載システム用のシステムLSI)や、ノイズの多発する環境下で使用されるシステムLSI(例えば、遊技機の組み込みシステム用のシステムLSI)に特に好適である。また、遊技機の組み込みシステム用のシステムLSIに本実施形態を適用した場合には、遊技中にプログラムデータを改竄する等の不正にも適切に対処することができると期待される。
(B:第2実施形態)
図4は、本発明の第2実施形態の半導体集積回路1Bにおけるチェック処理の流れを示すフローチャートである。なお、半導体集積回路1Bのハードウェア構成は第1実施形態の半導体集積回路1Aのハードウェア構成と同一であり、チェック処理の流れのみが異なっているため、半導体集積回路1Bのハードウェア構成についての説明および図示は省略する。
図4では、図2におけるものと同一の処理には、同一の符号が付されている。図4と図2とを対比すれば明らかように、本実施形態のチェック処理はステップSA120の処理に代えてステップSC120の処理を設けた点と、ステップSB100の処理に代えてステップSD100の処理を設けた点と、ステップSD180およびステップSD190の新たな処理を設けた点が図2に示すチェック処理と異なる。以下では、第1実施形態との相違点であるステップSC120、ステップSD100、ステップSD180およびステップSD190の処理を中心に説明する。
ステップSC120の処理は、第1実施形態におけるステップSA120の処理に対応しており、ステップSA120の処理と同様にCPU100によって実行される。このステップSC120では、CPU100は、外部メモリ2からRAM120へダウンロードされたN(Nは2以上の整数)個のプログラムデータをチェック対象として指定する。より詳細に説明すると、CPU100は、上記N個のデータの各々を記憶した記憶領域の各々をチェック領域とし、各チェック領域の先頭アドレスおよび最終アドレスをチェック回路に設定するとともに、それらN個のプログラムデータの各々についての期待値をチェック回路に設定する。つまり、本実施形態では、外部メモリ2からRAM120へダウンロードされたN種類のプログラムデータの各々がチェック対象とされるのである。なお、以下では、上記N個のチェック領域を、先頭アドレスが若い順に、チェック領域0、チェック領域1・・・チェック領域N−1とし、チェック領域0を「最初のチェック領域」、チェック領域N−1を「最後のチェック領域」と呼ぶ。
図4のステップSD100では、N個のチェック領域のうちの最初のチェック領域の先頭アドレスがアドレスレジスタに設定される。図4に示すように、ステップSD180およびステップSD190の各処理は、ステップSB160の判定結果が“Yes”である場合には即座に、ステップSB160の判定結果が“No”である場合にはステップSB170に後続して実行される処理である。このステップSD180では、上記N個のチェック領域の全てをチェックしたか否かの判定が行われる。具体的には、アドレスレジスタに格納されているアドレスが最後のチェック領域の最終アドレス以降の値となっている場合にステップSD180の判定結果は“Yes”となる。そして、ステップSD180の判定結果が“Yes”である場合には、図4に示すように、ステップSD100以降の処理が再度実行される。逆にステップSD180の判定結果が“No”であれば、前述したステップSB160と同様にアドレスレジスタの格納内容を更新する処理(ステップSD190)が実行された後に、ステップSB110以降の処理が実行される。
例えば、図5に示すチェック領域0〜チェック領域N−1のN個のチェック領域の各々に記憶されたプログラムデータがチェック対象であり、一回のデータ読み出し量はDバイト、各チェック領域のデータサイズはA×Dバイトであるとする。この場合、図4に示すステップSD100ではチェック領域0の先頭アドレスがアドレスレジスタに設定され、ステップSD190の処理が実行される毎にアドレスレジスタの格納内容はチェック領域1の先頭アドレス→チェック領域2の先頭アドレス→・・・→チェック領域N−1の先頭アドレスと更新される。そして、ステップSD180の判定結果が“Yes”になると再度ステップSD100の処理が実行される。つまり、本実施形態の半導体集積回路1Bでは、図5に示すように、チェック領域0→チェック領域1→チェック領域2・・・チェック領域N−1→チェック領域0といった具合に上記N個のチェック領域の各々の正当性のチェックが巡回的に実行される。そして、各チェック領域については、前述した第1実施形態と同様に、データ読み出し周期T毎にDバイトずつデータが読み出され、A×Dバイトのデータの読み出しを契機としてチェックサムによる正当性のチェックが行われる。なお、本実施形態では、チェック領域0〜チェック領域N−1の各チェック領域のデータサイズが同一である場合について説明したが、全てのチェック領域のデータサイズが同一でなくても勿論良い。例えば、チェック領域0のデータサイズがA0×Dバイトであり、チェック領域1のデータサイズがA1×Dバイト(A0≠A1)である場合には、チェック領域0についてはA0回目のデータの読み出しの際に正当性のチェックが行われ、チェック領域1についてはA1回目のデータの読み出しの際に正当性のチェックが行われる、といった具合である。本実施形態においても、前述した第1実施形態と同様に、一回のデータ読み出しサイズDバイトと周期Tの値を適切に設定することにより、バス170の帯域をデータ転送により圧迫しないようにできるので、CPU100によるRAM120へのアクセスが妨げられないようにすることが可能である。
本実施形態においてもチェック演算器130がCPU100とは別個のハードウェアとして実装されていること、およびRAM120からチェック演算器130へのチェック対象のプログラムデータの転送にCPU100が関与しないことは前述した第1実施形態と同じである。したがって、本実施形態によっても、半導体集積回路1B本来のデータ処理を妨げたり、CPU100に高い処理負荷を掛けたりすることなく、外部メモリ2からRAM120へダウンロードしたデータの正当性のチェックを常時行うことが可能になる。
(C:変形)
以上本発明の各実施形態について説明したが、これら実施形態に以下の変形を加えても勿論良い。
(1)上記各実施形態では、チェック演算を行うチェック演算器130とチェック対象のプログラムデータのDMA転送を行うDMAコントローラ160とを別個の回路として半導体集積回路を構成した。しかし、図6に示すように、チェック演算器130と同一のチェック演算を行うとともに、DMAコントローラを内蔵しバスマスタとして機能するチェック演算器132をチェック回路として用いて半導体集積回路1Cを構成しても良い。また、上記実施形態では、チェック演算器130によるチェック演算としてチェックサムの算出演算が採用されていたが、CRC、或いはハッシュの算出演算などの他の演算を採用しても良い。
(2)上記各実施形態では、チェック対象として指定された1または複数のプログラムデータの正当性のチェックをチェック回路に実行させた。しかし、CPU100が実行中の処理の処理内容等に応じてチェック対象を切り替えても良い。例えば、CPU100が実行中の処理ではアクセスされないデータをチェック対象から除外するといった具合である。
(3)上記各実施形態では、RAM120に記憶されたデータの正当性のチェックを一定周期でチェック回路に実行させた。しかし、チェック周期の長さを切り替えても良い。例えば、チェックを第1の周期で繰り返し実行する第1の動作モードと、チェックを第1の周期よりも長い第2の周期で繰り返し実行する第2の動作モードの2つの動作モードを予め用意しておき、ブート時には第1の動作モードで動作させ、ブート後、動作が安定した以降は第2の動作モードで動作させるようにしても良い。また、動作モードの数は2つには限定されず、各々メモリからのデータ読み出し周期が異なる3種類以上の動作モードを定めても良い。
(4)上記各実施形態では、外部メモリ2からRAM120へダウンロードされるプログラムデータの正当性のチェックを行う場合について説明したが、外部メモリ2からRAM120へダウンロードされるデータであって、プログラムの実行過程でCPU100によって参照されるデータ(例えばテーブルなど)の正当性のチェックに本発明を適用しても勿論良い。また、外部メモリ2からRAM120へダウンロードされるデータではなく、プログラムの実行過程でCPU100によって参照されるレジスタのチェックに本発明を適用しても良い。
(5)上記各実施形態では、外部メモリ2からRAM120へダウンロードしたプログラムデータにしたがって処理を実行するCPUを内蔵した半導体集積回路への適用例を説明した。しかし、外部メモリ2からRAM120へダウンロードしたプログラムデータにしたがって処理を実行するプロセッサはCPUには限定されず、DSPであっても勿論良く、CPUとDSPの両者を内蔵した半導体集積回路に本発明を適用しても勿論良い。また、本発明の適用対象として車載システム用のシステムLSIや遊技機用のシステムLSIが好適であることは前述した通りであるが、所謂情報家電やオーディオ機器用のシステムLSI、或いはゲーム機用のシステムLSIに本発明を適用しても勿論良い。これらシステムLSIにおいても、外部メモリから内部メモリへダウンロードしたデータ等の正当性のチェックを常時行えることが好ましいことに変わりはないからである。
1A,1B,1C…半導体集積回路、2…外部メモリ、100…CPU、110…外部メモリインタフェース、120…RAM、130,132…チェック演算器、140…リセット制御部、150…割り込み制御部、160…DMA、170…バス。

Claims (5)

  1. 外部メモリからダウンロードされるデータを記憶するメモリと、
    前記メモリに記憶されたデータにしたがって処理を実行するプロセッサと、
    前記メモリに記憶されたデータを読み出して正当性をチェックする処理を繰り返し実行するチェック回路と、
    を有することを特徴とする半導体集積回路。
  2. 前記チェック回路は、前記メモリに記憶されたデータのうち、チェック対象として指定された1または複数のデータを対象として正当性をチェックする処理を繰り返し実行することを特徴とする請求項1に記載の半導体集積回路。
  3. 前記チェック回路は、前記プロセッサが実行中の処理に応じて前記チェック対象のデータを切り替えることを特徴とする請求項2に記載の半導体集積回路。
  4. 前記メモリからのデータの読み出しを第1の周期で繰り返し実行する第1の動作モードと、前記第1の周期よりも長い第2の周期で前記メモリからのデータの読み出しを繰り返し実行する第2の動作モードの少なくとも2つの動作モードを有し、前記チェック回路は指定された動作モードで動作することを特徴とする請求項1〜3の何れか1項に記載の半導体集積回路。
  5. 前記チェック回路は、前記メモリにアクセスするためのバスにバスマスタとして接続されることを特徴とする請求項1〜4の何れか1項に記載の半導体集積回路。
JP2012215261A 2012-09-27 2012-09-27 半導体集積回路 Pending JP2014071543A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012215261A JP2014071543A (ja) 2012-09-27 2012-09-27 半導体集積回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012215261A JP2014071543A (ja) 2012-09-27 2012-09-27 半導体集積回路

Publications (1)

Publication Number Publication Date
JP2014071543A true JP2014071543A (ja) 2014-04-21

Family

ID=50746717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012215261A Pending JP2014071543A (ja) 2012-09-27 2012-09-27 半導体集積回路

Country Status (1)

Country Link
JP (1) JP2014071543A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016157505A1 (ja) * 2015-04-02 2016-10-06 三菱電機株式会社 メモリチェック機能を有するdmac
JP2017207931A (ja) * 2016-05-18 2017-11-24 ローム株式会社 信号処理回路、マイクロコントローラ、ホスト、デバイス

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016157505A1 (ja) * 2015-04-02 2016-10-06 三菱電機株式会社 メモリチェック機能を有するdmac
JP2017207931A (ja) * 2016-05-18 2017-11-24 ローム株式会社 信号処理回路、マイクロコントローラ、ホスト、デバイス

Similar Documents

Publication Publication Date Title
US20140108869A1 (en) DMA Integrity Checker
CN111033466B (zh) 对闪存进行分区以及实现具有映像升级能力的灵活引导
US8495344B2 (en) Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
JP2013522750A (ja) 例外イベントを取り扱うための装置および方法
US12001689B2 (en) Transparently attached flash memory security
WO2007130932A2 (en) Apparatus and method for booting a computing device from a nand memory device
US9336082B2 (en) Validating persistent memory content for processor main memory
WO2022057418A1 (zh) 应用程序运行的方法、装置、终端设备及存储介质
JP2014071543A (ja) 半導体集積回路
TWI604336B (zh) 使用外部裝置之運行時驗證技術
JP2007206933A (ja) 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法
JP5622429B2 (ja) マイクロコンピュータ
TW201823982A (zh) 在一儲存系統中更新軟體的方法及儲存系統
JP2013246630A (ja) ブートシステムおよびシステム初期化方法
JP2010181990A (ja) データプロセッサ
JP5644380B2 (ja) 情報処理装置
WO2021038923A1 (ja) 制御装置、ユーザプログラムの実行制御方法、およびシステムプログラム
US20100146332A1 (en) Data correction circuit and semiconductor integrated circuit
JP6726136B2 (ja) データアクセス装置及びアクセスエラーの通知方法
JP2001256044A (ja) データ処理装置
JP2791086B2 (ja) 命令プリフェッチ装置
JP4305400B2 (ja) マイクロコンピュータ
WO2023145666A1 (ja) 組み込みシステムの起動方法、及び、起動プログラム、並びに、組み込みシステム
US9223542B2 (en) Variable-sized buffers mapped to hardware registers
JP2018180608A (ja) プログラム実行装置およびプログラム実行方法