(57)【要約】【課題】装置自体の実績を考慮して信頼性の高いデータ保持が可能な半導体装置を提供する。【解決手段】半導体装置は、書き換え可能な状態で登録されたプログラム情報を有する記憶部と、記憶部に登録されたプログラム情報を利用した所定の処理の動作実績を判定する動作実績判定部と、動作実績判定部の判定結果に基づいて、記憶部に登録されているプログラム情報を破壊的に書き換え不可能な態様で固定化するための固定化部とを備える。【選択図】図２
2013239220.tif 000002
【特許請求の範囲】
【請求項１】
書き換え可能な状態で登録されたプログラム情報を有する記憶部と、
前記記憶部に登録されたプログラム情報を利用した所定の処理の動作実績を判定する動作実績判定部と、
前記動作実績判定部の判定結果に基づいて、前記記憶部に登録されているプログラム情報を破壊的に書き換え不可能な態様で固定化するための固定化部とを備える、半導体装置。
【請求項２】
プログラム情報および前記プログラム情報を修正する修正プログラム情報を有する記憶部と、
前記プログラム情報に前記修正プログラム情報を適用して修正した修正済みプログラム情報を前記記憶部に記憶する適用部と、
前記記憶部に記憶された修正済みプログラム情報の内容が破壊されているかどうかを判断するプログラム判定部とを備え、
前記適用部は、前記プログラム判定部の判断結果に基づいて、前記修正済みプログラム情報が破壊されている場合には、再度、前記プログラム情報に前記修正プログラム情報を適用した修正した修正済みプログラム情報を前記記憶部に記憶する、半導体装置。
【請求項３】
前記記憶部は、前記修正済みプログラム情報が破壊されているかどうかを判断するための検出情報を記憶し、
前記プログラム判定部は、前記検出情報に基づいて前記修正済みプログラム情報が破壊されているかどうかを判断する、請求項２記載の半導体装置。
【請求項４】
前記記憶部に設けられる記憶素子は、トンネル磁気抵抗素子である、請求項１〜３のいずれかに記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に書き換え可能なメモリを備えた半導体装置に関する。
【背景技術】
【０００２】
近年、不揮発的なデータ記憶が可能な半導体装置として不揮発性記憶装置が主流となってきている。たとえば高集積化可能なフラッシュメモリを挙げることができる。さらには、新世代の不揮発性記憶装置として薄膜磁性体を用いて不揮発的なデータ記憶を実行するＭＲＡＭ（Magnetic Random Access Memory）デバイス等が特に注目されている。
【０００３】
ＭＲＡＭデバイスは、磁気トンネル接合（ＭＴＪ（Magnetic Tunnel Junction））素子のトンネル磁気抵抗値（ＴＭＲ）によって情報を記録する不揮発性メモリである。
【０００４】
ＭＴＪ素子は、固定層、絶縁層、自由層の三層構造で、自由層の磁化方向を電気的に変更することでＴＭＲを変化させ、情報を記録する。
【０００５】
ＭＲＡＭは電源を切っても内容を保持する特性があるが、外部からの磁場の影響を受けることで内容が破壊される可能性がある。
【０００６】
したがって、記憶する内容がブートプログラムやセットアップパラメータ等のデータの信頼性が求められるような場合には、通常の記憶方式で保持しておくだけでは信頼性を保障することができない。
【０００７】
この点で、特開２０１０−２２５２５９号項公報（特許文献１）においては、規定以上の電圧を印加して絶縁層を破壊する書込みを行い、その抵抗値を利用することで磁化方向の状態によらず内容を固定化（ＯＴＰ：Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍｉｎｇ）する方式が示されている。これによりデータの信頼性を向上させることが可能である。
【０００８】
一方で、バージョンアップやセキュリティ対策等のため、一度固定化した内容を、開発時あるいは出荷後に後から変更したいとの要求がある。
【０００９】
ＯＴＰで書き込まれた内容は後で変更することができないため、元の情報を残したまま新たな内容を追記して用いる、あるいは追記したパッチ情報で元の内容を修復するという方式により最新版にアップデートするという方式が提案されている（特許文献２，３）。
【００１０】
この点で、特許文献２では、アップデートするモジュールの履歴情報を参照することで、信頼性のあるモジュールでアップデートする方式が示されている。しかしながら、構成が同一である別の装置上で動作実績が収集できる場合に限定され、装置自体にばらつきがある場合に装置固有の問題には対処できないという問題がある。
【００１１】
また、特許文献３では、ＲＯＭ（Read Only Memory）に書き込まれた内容にパッチを当てるためには、パッチ済みの内容をＲＡＭに展開して実行することになる。この方式では、リセット起動の度にパッチを当てた内容を展開するため、起動時の処理が余分にかかり、起動時間が長くなるという問題がある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１０−２２５２５９号公報
【特許文献２】特開２００８−１７１２８９号公報
【特許文献３】特開２００５−２４２９３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明は上記のような問題を解決するためになされたものであって、装置自体の実績を考慮して信頼性の高いデータ保持が可能な半導体装置を提供することを目的とする。また、データの信頼性を維持しつつ高速な起動処理が可能な半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の一実施例によれば、半導体装置は、書き換え可能な状態で登録されたプログラム情報を有する記憶部と、記憶部に登録されたプログラム情報を利用した所定の処理の動作実績を判定する動作実績判定部と、動作実績判定部の判定結果に基づいて、記憶部に登録されているプログラム情報を破壊的に書き換え不可能な態様で固定化するための固定化部とを備える。
【００１５】
本発明の別の一実施例によれば、半導体装置は、プログラム情報およびプログラム情報を修正する修正プログラム情報を有する記憶部と、プログラム情報に修正プログラム情報を適用して修正した修正済みプログラム情報を記憶部に記憶する適用部と、記憶部に記憶された修正済みプログラム情報の内容が破壊されているかどうかを判断するプログラム判定部とを備える。適用部は、プログラム判定部の判断結果に基づいて、修正済みプログラム情報が破壊されている場合には、再度、プログラム情報に修正プログラム情報を適用した修正した修正済みプログラム情報を記憶部に記憶する。
【発明の効果】
【００１６】
本発明の一実施例によれば、半導体装置は、装置自体の実績を考慮して信頼性の高いデータを保持する。また、データの信頼性を維持しつつ高速な起動処理が可能である。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態に従う半導体装置の構成について説明する図である。
【図２】本発明の実施の形態に従う半導体装置１０の機能構成を説明する図である。
【図３】本発明の実施の形態に従うパッチ情報の格納について説明するフロー図である。
【図４】本発明の実施の形態に従うパッチ済みブートプログラムの格納について説明するフロー図である。
【図５】本発明の実施の形態に従う半導体装置１０に格納されたパッチ済みブートプログラムの起動処理について説明するフロー図である。
【図６】本発明の実施の形態に従う動作実績判断処理について説明するフロー図である。
【図７】本発明の実施の形態に従う半導体装置１０の機能構成を説明する別の図である。
【図８】本発明の実施の形態に従う別の動作実績判断処理について説明するフロー図である。
【発明を実施するための形態】
【００１８】
本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
【００１９】
図１は、本発明の実施の形態に従う半導体装置の構成について説明する図である。
図１を参照して、本発明の実施の形態に従う半導体装置１０は、ネットワーク４を介してサーバ２と接続されている。本例においてサーバ２は、ブートプログラムやブートプログラムをバージョンアップするためのパッチ情報等を格納しているものとする。そして、半導体装置１０がネットワーク４を介してサーバ２にアクセスしてブートプログラムやパッチ情報をダウンロードして内部に格納するものとする。なお、本例においては、外部のサーバ２にアクセスしてブートプログラムやパッチ情報をダウンロードする場合について説明するが特に当該場合に限られず、たとえば、当該情報等が記憶されたメディアを読み取る読取装置を設けて、読取装置からデータを取得して格納するようにしても良い。
【００２０】
半導体装置１０は、ネットワーク４を介して外部のサーバ２と通信するための通信Ｉ／Ｆ１２と、演算処理装置であるＣＰＵ（Central Processing Unit）２０と、プログラム等が格納されたＲＯＭ（Read Only Memory）等を有する記憶装置１５と、計時手段である時計１７と、各種のプログラム等を格納する領域であるＭＲＡＭ１８と、ＭＲＡＭ１８の任意の領域を固定化するためのＯＴＰ化手段１６と、各部を接続する内部バス１４とを含む。
【００２１】
本例においては、ＭＲＡＭ１８にブートプログラムやパッチ情報を格納する場合について説明する。
【００２２】
図２は、本発明の実施の形態に従う半導体装置１０の機能構成を説明する図である。
図２を参照して、半導体装置１０のＣＰＵ２０は、記憶装置１５あるいはＭＲＡＭ１８に格納されているプログラムに基づいて種々の機能を実現する。
【００２３】
具体的には、本例においては、ＣＰＵ２０は、サーバ２から受信したパッチ情報１１０を受けて、ＭＲＡＭ１８に登録するパッチ情報書換え手段２２と、ＭＲＡＭ１８に格納されているパッチ情報およびブートプログラム１００に基づいてパッチ情報を適用してパッチ済みブートプログラムを生成してＭＲＡＭ１８に格納するパッチ適用手段３０と、ＭＲＡＭ１８に格納されたパッチ済みブートプログラム１０４を起動する場合の動作実績を測定する動作実績測定手段２８と、動作実績測定手段２８の測定結果に基づいてパッチ済みブートプログラムの動作実績を判定する動作実績判定手段２４と、ＭＲＡＭ１８に格納されているデータが破壊されているかどうかを検出するメモリ破壊検出手段２６とを含む。なお、図示していないがパッチ済みブートプログラムを実行する実行手段も設けられている。
【００２４】
また、パッチ適用手段３０は、パッチ済みブートプログラム１０４をＭＲＡＭ１８に格納する際に、当該パッチ済みブートプログラム１０４の誤りを検出するためパッチ済みブートプログラムの誤り検出用冗長符号情報１０２を併せてＭＲＡＭ１８に格納する。
【００２５】
また、パッチ情報書換え手段２２は、ＭＲＡＭ１８にパッチ情報１１０を格納する際に、当該パッチ情報１１０の誤りを検出するためのパッチ情報の誤り検出用冗長符号情報１０６を併せてＭＲＡＭ１８に格納する。なお、誤り検出用冗長符号情報としては、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）やＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）コードなどが挙げられる。
【００２６】
動作実績判定手段２４は、パッチ済みブートプログラム１０４を起動する場合の動作実績の判定結果に基づいてＯＴＰ化手段１６に対してＯＴＰを実行するように指示する。ＯＴＰ化手段１６は、動作実績判定手段２４からの指示に従って、後述するがＭＲＡＭ１８のパッチ情報１１０に対してＯＴＰを実行する。
【００２７】
メモリ破壊検出手段２６は、パッチ済みブートプログラムのデータが破壊されているかどうかをパッチ済みブートプログラムの誤り検出用冗長符号情報に基づいて判断する。また、パッチ情報のデータが破壊されているかどうかをパッチ情報の誤り検出用冗長符号情報に基づいて判断する。
【００２８】
本例においては、ＭＲＡＭ１８にブートプログラム１００が格納され、その際に、ＯＴＰ化手段１６によりＯＴＰ化処理された場合が示されている。ＯＴＰ化処理によって変更不可能な状態となった領域を便宜的にＯＴＰ領域と呼ぶ。
【００２９】
次に半導体装置１０の動作について説明する。
まず、ＯＴＰ領域に置かれたブートプログラム１００に対しパッチ情報１１０を当てて修正する。具体的には、パッチ適用手段３０により修正されたブートプログラムをパッチ済みブートプログラムとして生成してＭＲＡＭ１８に格納される。なお、その際に、パッチ済みブートプログラムの誤り検出用冗長符号情報１０２も格納される。また、パッチ適用手段３０は、パッチ済みブートプログラムを格納する際、動作実績測定手段２８にその日時を通知する。当該日時は、パッチ情報をＯＴＰ化する判断の際に用いられる。
【００３０】
装置の起動は、ＭＲＡＭ１８に展開されたパッチ済みブートプログラム１０４によって行われる。ＭＲＡＭ１８の領域にパッチ済みブートプログラム１０４を展開して格納しているため高速な起動が可能である。
【００３１】
動作実績測定手段２８は、パッチ済みブートプログラムの実行回数や、正常完了数、起動失敗回数のを測定して動作実績情報として保持する。なお、動作実績情報には、パッチ済みブートプログラムを格納した際の日時に関する情報も含まれている。
【００３２】
動作実績判定手段２４は、パッチ済みブートプログラムの実行開始前に呼び出される。そして、動作実績測定手段２８が保持している動作実績情報を確認し、判定処理を実行する。
【００３３】
図３は、本発明の実施の形態に従うパッチ情報の格納について説明するフロー図である。
【００３４】
図３を参照して、まず、パッチ情報の入力が有ったかどうかを判断する（ステップＳ２）。
【００３５】
パッチ情報は、サーバ２に格納されており、サーバ２に対して送信要求することによりサーバ２からパッチ情報１１０が半導体装置１０に送信されるものとする。なお、サーバ２から自動的に半導体装置１０に対してパッチ情報１１０が送信される場合であっても良い。
【００３６】
そして、パッチ情報書換え手段２２は、サーバ２から通信Ｉ／Ｆ１２を介してパッチ情報１１０を受信したかどうかを判断する。
【００３７】
ステップＳ２において、パッチ情報の入力が有ると判断した場合（ステップＳ２においてＹＥＳ）には、次に、パッチ情報書換え手段２２は、サーバ２から受信したパッチ情報１１０をＭＲＡＭ１８に格納する（ステップＳ４）。その際、パッチ情報１１０だけでなく、パッチ情報の誤りを検出するためのパッチ情報の誤り検出用冗長符号情報をともにＭＲＡＭ１８に格納する。当該パッチ情報の誤り検出用冗長符号情報は、パッチ情報とともにサーバ２から受信したものであっても良いし、あるいは、パッチ情報書換え手段２２が受信したパッチ情報１１０に基づいて生成したものであっても良い。
【００３８】
そして、処理を終了する（エンド）。
図４は、本発明の実施の形態に従うパッチ済みブートプログラムの格納について説明するフロー図である。
【００３９】
図４を参照して、まず、パッチ適用手段３０は、パッチ情報の格納が有るかどうかを判断する（ステップＳ６）。具体的には、ＭＲＡＭ１８にパッチ情報が格納されたかどうかを判断する
次に、ステップＳ６において、パッチ適用手段３０は、パッチ情報の格納が有ると判断した場合（ステップＳ６においてＹＥＳ）には、パッチ済みブートプログラムを生成する（ステップＳ８）。具体的には、既に格納されているブートプログラム１００にパッチ情報１１０を適用して修正されたブートプログラムをパッチ済みブートプログラムとして生成する。
【００４０】
次に、パッチ適用手段３０は、ＭＲＡＭ１８にパッチ済みブートプログラムを格納する。また、パッチ済みブートプログラムだけでなく、パッチ済みブートプログラムの誤りを検出するためのパッチ済みブートプログラムの誤り検出用冗長符号情報をともにＭＲＡＭ１８に格納する。なお、当該パッチ済みブートプログラムの誤り検出用冗長符号情報は、パッチ適用手段３０がパッチ済みブートプログラムを生成した際に、併せて生成したものである。
【００４１】
そして、処理を終了する（エンド）。
図５は、本発明の実施の形態に従う半導体装置１０に格納されたパッチ済みブートプログラムの起動処理について説明するフロー図である。
【００４２】
図５を参照して、まず、動作実績判断処理を実行する（ステップＳ２０）。具体的には、動作実績判定手段２４等に従う動作実績判断処理の詳細については後述する。
【００４３】
次に、パッチ済みブートプログラムの起動を開始する（ステップＳ２２）。図示しない実行手段がパッチ済みブートプログラム１０４を読み出して実行する。
【００４４】
次に、起動が正常に開始されたかどうかを判断する（ステップＳ２４）。動作実績測定手段２８は、実行手段による起動、終了等を監視する。
【００４５】
ステップＳ２４において、動作実績測定手段２８は、起動が正常に開始されたと判断した場合（ステップＳ２４においてＹＥＳ）には、実行回数をインクリメントして更新する（ステップＳ２６）。
【００４６】
次に、動作実績測定手段２８は、動作が正常に終了したかどうかを判断する（ステップＳ２８）。
【００４７】
ステップＳ２８において、動作実績測定手段２８は、動作が正常に終了した場合（ステップＳ２８においてＹＥＳ）には、正常完了数をインクリメントして更新する（ステップＳ３０）。
【００４８】
そして、処理を終了する（エンド）。
一方、ステップＳ２８において、動作が正常に終了しなかった場合（ステップＳ２８においてＮＯ）は、正常完了数をインクリメントすることなく処理を終了する（エンド）。
【００４９】
また、ステップＳ２４において、動作実績測定手段２８は、起動が正常に開始しなかったと判断した場合（ステップＳ２４においてＮＯ）には、起動失敗回数をインクリメントして更新する（ステップＳ３２）。
【００５０】
そして、再び、ステップＳ２２に戻って起動を開始する。
図６は、本発明の実施の形態に従う動作実績判断処理について説明するフロー図である。
【００５１】
図６を参照して、まず、動作実績判定手段２４は、動作実績情報を確認する（ステップＳ４０）。動作実績判定手段２４は、動作実績測定手段２８で保持している動作実績情報である測定した起動失敗回数、正常完了数、実行回数およびパッチ済みブートプログラムの格納日時を取得する。
【００５２】
次に、起動失敗回数が０であるかどうかを判断する（ステップＳ４２）。動作実績判定手段２４は、取得した起動失敗回数が０であるかどうか、すなわち、一度も起動に失敗していないかどうかを判断する。
【００５３】
ステップＳ４２において起動失敗回数が０であると判断した場合（ステップＳ４２においてＹＥＳ）には、次に、動作実績判定手段２４は、正常完了数と実行回数とが同じであるかどうかを判断する（ステップＳ４４）。すなわち、起動してから終了するまでの間にエラーが生じていないかどうかを判断する。
【００５４】
次に、正常完了数と実行回数とが同じであると判断した場合（ステップＳ４４においてＹＥＳ）には、使用期間が所定期間経過したかどうかを判断する（ステップＳ４６）。具体的には、動作実績情報に含まれている格納日時から所定期間が経過しているかどうかを判断する。
【００５５】
ステップＳ４６において、使用期間が所定期間が経過していると判断した場合（ステップＳ４６においてＹＥＳ）には、固定化処理を実行する（ステップＳ４８）。すなわち、所定期間、起動の失敗が無く、また、起動した場合にも正常に完了した信頼性の高いパッチ情報に対して動作実績判定手段２４は、ＯＴＰ化手段１６に対して指示し、ＯＴＰ化手段１６は、ＭＲＡＭ１８に格納されたパッチ情報に対して固定化処理を実行する。
【００５６】
そして、処理を終了する（リターン）。なお、固定化処理した場合には、再度、固定化処理する必要が無いため次の起動処理の場合には、別の動作実績判断処理を実行する。この点については後述する。
【００５７】
一方、ステップＳ４２において起動失敗回数が０で無いと判断した場合（ステップＳ４２においてＮＯ）には、動作実績判定手段２４は、メモリ破壊検出手段２６に指示してパッチ情報判定処理を実行する（ステップＳ５０）。起動が失敗する場合は、パッチ済みブートプログラムに異常が生じている可能性が高い。したがって、その異常の原因がパッチ情報にあるのかどうかを判断するためにＭＲＡＭ１８に格納したパッチ情報のデータの値が適正であるかどうかを判断する。パッチ情報のデータの値が適正であれば、パッチ済みブートプログラムを再修正することにより異常の問題を解決することが可能である。一方、パッチ情報のデータの値が適正でなければ、適正なパッチ情報をサーバ２に求めて、サーバ２から再度取得したパッチ情報に従うパッチ済みブートプログラムを生成する必要がある。
【００５８】
なお、本例においては、起動失敗回数が０か否かを判断する場合について説明したが、０ではなく、所定回数未満か否かを判断するようにしても良い。
【００５９】
パッチ情報のデータの値が適正かどうかについて、メモリ破壊検出手段２６は、パッチ情報誤り検出用冗長符号情報に基づいてＭＲＡＭ１８に格納したパッチ情報のデータの値が適正かどうかを判断する。
【００６０】
そして、動作実績判定手段２４は、メモリ破壊検出手段２６のパッチ情報判定処理に従って判定がＯＫかどうかを判断する（ステップＳ５２）。
【００６１】
ステップＳ５２において、判定がＯＫであると判断した場合（ステップＳ５２においてＹＥＳ）には、パッチ済みプログラムを格納する（ステップＳ５４）。具体的には、図４で説明したフロー図にしたがって動作実績判定手段２４は、パッチ適用手段３０に指示し、パッチ適用手段３０によりブートプログラム１００に対してパッチ情報１１０を当てて修正する。なお、その際にパッチ済みブートプログラムの誤り検出用冗長符号情報１０２も格納される。
【００６２】
そして、処理を終了する（エンド）。当該処理によりパッチ情報のデータの値が適正か否かを判断して、適正な場合には、当該パッチ情報を当ててパッチ済みブートプログラムを再度格納する。当該処理によりパッチ済みブートプログラムを再修正して起動失敗の要因を排除して適正な起動を実行することが可能である。
【００６３】
ステップＳ５２において、判定がＯＫで無いと判断した場合（ステップＳ５２においてＮＯ）には、パッチ情報を要求する（ステップＳ５６）。具体的には、たとえば、動作実績判定手段２４がサーバ２に対して再度、適正なパッチ情報を送信するように要求する。あるいは、パッチ情報書換え手段２２がパッチ情報をサーバ２に要求するようにしても良い。
【００６４】
そして、次に、パッチ情報を格納する処理を実行する（ステップＳ５７）。具体的には、図３で説明したフロー図にしたがって、パッチ情報書換え手段２２は、サーバ２から受信したパッチ情報１１０をＭＲＡＭ１８に格納する。その際、パッチ情報書換え手段２２は、パッチ情報１１０だけでなく、パッチ情報の誤りを検出するためのパッチ情報誤り検出用冗長符号情報をともにＭＲＡＭ１８に格納する。
【００６５】
そして、パッチ済みプログラム情報を格納する（ステップＳ５８）。具体的には、図４で説明したフロー図にしたがってパッチ適用手段３０によりブートプログラム１００に対しパッチ情報１１０を当てて修正する。なお、その際にパッチ済みブートプログラムの誤り検出用冗長符号情報１０２も格納される。
【００６６】
そして、処理を終了する（リターン）。
当該処理により、ＭＲＡＭ１８に格納したパッチ情報のデータの値が適正か否かを判断して、適正でない場合には、再度、サーバ２に適正なパッチ情報を要求して、パッチ済みブートプログラムを再度格納する処理を実行する。当該処理によりパッチ済みブートプログラムを再修正して起動失敗の要因を排除して適正な起動を実行することが可能である。
【００６７】
また、ステップＳ４４において、正常完了数が実行回数と同じでないと判断した場合（ステップＳ４４においてＮＯ）には、動作実績判定手段２４は、メモリ破壊検出手段２６に指示してパッチ済みブートプログラム判定処理を実行する（ステップＳ５９）。
【００６８】
正常完了数と実行回数が一致しない場合は、起動はするが処理中に異常が生じている可能性が高い。したがって、その異常の原因がパッチ済みブートプログラムにあるのか、処理側にあるのかどうかを判断するためにＭＲＡＭ１８に格納したパッチ済みブートプログラムのデータの値が適正であるかどうかを判断する。パッチ済みブートプログラムのデータの値が適正であれば、処理側の内部データの値等をリセットすることにより異常の問題が解決する可能性がある。一方、パッチ済みブートプログラムのデータの値が適正でなければ、再度、パッチ情報を当ててパッチ済みブートプログラムを格納する。当該処理によりパッチ済みブートプログラムを再修正して失敗の要因を排除して適正な処理が可能である。パッチ済みブートプログラムのデータの値が適正かどうかについて、メモリ破壊検出手段２６は、パッチ済みブートプログラムの誤り検出用冗長符号情報に基づいてＭＲＡＭ１８に格納したパッチ済みブートプログラムのデータの値が適正かどうかを判断する。
【００６９】
そして、動作実績判定手段２４は、メモリ破壊検出手段２６のパッチ済みブートプログラム判定処理に従って判定がＯＫかどうかを判断する（ステップＳ６０）。
【００７０】
ステップＳ６０において、判定がＯＫであると判断した場合（ステップＳ６０においてＹＥＳ）には、リセット処理を実行する（ステップＳ６２）。処理側の内部データの値等をリセット処理して異常の問題を解決する。
【００７１】
そして、処理を終了する（リターン）。
一方、ステップＳ６０において、判定がＯＫで無いと判断した場合（ステップＳ６０においてＮＯ）には、パッチ済みプログラムを格納する（ステップＳ６４）。具体的には、図４で説明したフロー図にしたがって動作実績判定手段２４は、パッチ適用手段３０に指示し、パッチ適用手段３０によりブートプログラム１００に対してパッチ情報１１０を当てて修正する。なお、その際にパッチ済みブートプログラムの誤り検出用冗長符号情報１０２も格納される。
【００７２】
そして、処理を終了する（リターン）。当該処理によりデータの値が適正でない場合には、パッチ情報を当ててパッチ済みブートプログラムを再度格納する。当該処理によりパッチ済みブートプログラムを再修正して異常の要因を排除して適正な実行が可能となる。
【００７３】
そして、処理を終了する（リターン）。
図７は、本発明の実施の形態に従う半導体装置１０の機能構成を説明する別の図である。
【００７４】
図７を参照して、ここでは、パッチ情報をＯＴＰした後の構成を示している。パッチ情報はＯＴＰで書き込まれているため、壊れることはない。ここでは、ＯＴＰ領域１９＃にブートプログラムと、パッチ情報とが置かれている場合が示されている。
【００７５】
そして、パッチ適用手段３０は、ＯＴＰ領域に置かれたブートプログラム１００に対しパッチ情報１１０を当てて修正する。具体的には、パッチ適用手段３０により修正されたブートプログラムをパッチ済みブートプログラムとして生成してＭＲＡＭ１８に格納する。なお、その際に、パッチ済みブートプログラムの誤り検出用冗長符号情報１０２も格納される。
【００７６】
装置の起動は、ＭＲＡＭ１８に展開されたパッチ済みブートプログラム１０４によって行われる。
【００７７】
そして、動作実績測定手段２８は、上述したようにパッチ済みブートプログラムの実行回数、正常完了数、起動失敗回数を測定して保持する。
【００７８】
上述したように動作実績判定手段２４は、パッチ済みブートプログラムの実行開始前に呼び出される。そして、動作実績測定手段２８が保持している動作実績情報を確認し、判定処理を実行する。
【００７９】
動作実績判定手段２４の判定処理により、異常があると判断した場合には、パッチ済みブートプログラムの値が適正であるかどうかを検出するようにメモリ破壊検出手段２６に指示する。メモリ破壊検出手段２６は、パッチ済みブートプログラムの誤り検出用冗長符号情報１０２に基づいてパッチ済みブートプログラムのデータの値が適正かどうかを判断する。
【００８０】
パッチ済みブートプログラムのデータの値が適正でないと判断した場合には、動作実績判定手段２４は、パッチ適用手段３０に指示する。パッチ適用手段３０は、ＯＴＰ領域に置かれたブートプログラム１００に対し同じＯＴＰ領域に置かれたパッチ情報１１０を当てて再度修正する。具体的には、パッチ適用手段３０により修正されたブートプログラムをパッチ済みブートプログラムとして生成してＭＲＡＭ１８に再格納する。
【００８１】
図８は、本発明の実施の形態に従う別の動作実績判断処理について説明するフロー図である。
【００８２】
図８を参照して、ここでは、パッチ情報がＯＴＰ化された場合の動作実績判断処理について説明する。
【００８３】
動作実績判定手段２４は、動作実績情報を確認する（ステップＳ７０）。動作実績判定手段２４は、動作実績測定手段２８で保持している動作実績情報である測定した起動失敗回数、正常完了数、実行回数等を取得する。
【００８４】
次に、起動失敗回数が０であるかどうかを判断する（ステップＳ７２）。動作実績判定手段２４は、取得した起動失敗回数が０であるかどうか、すなわち、一度も起動に失敗していないかどうかを判断する。
【００８５】
ステップＳ７２において起動失敗回数が０であると判断した場合（ステップＳ７２においてＹＥＳ）には、次に、動作実績判定手段２４は、正常完了数と実行回数とが同じであるかどうかを判断する（ステップＳ７４）。すなわち、起動してから終了するまでの間にエラーが生じていないかどうかを判断する。
【００８６】
次に、正常完了数と実行回数とが同じであると判断した場合（ステップＳ７４においてＹＥＳ）には、そのまま処理を終了する（リターン）。特に異常は生じていないため通常の起動処理を開始する。
【００８７】
一方、ステップＳ７２において起動失敗回数が０で無いと判断した場合（ステップＳ７２においてＮＯ）には、動作実績判定手段２４は、メモリ破壊検出手段２６に指示してパッチ済みブートプログラム判定処理を実行する（ステップＳ５９）。
【００８８】
正常完了数と実行回数が一致しない場合は、起動はするが処理中に異常が生じている可能性が高い。したがって、その異常の原因がパッチ済みブートプログラムにあるのか、処理側にあるのかどうかを判断するためにＭＲＡＭ１８に格納したパッチ済みブートプログラムのデータの値が適正であるかどうかを判断する。パッチ済みブートプログラムのデータの値が適正であれば、処理側の内部データの値等をリセットすることにより異常の問題が解決する可能性がある。一方、パッチ済みブートプログラムのデータの値が適正でなければ、再度、パッチ情報を当ててパッチ済みブートプログラムを格納する。当該処理によりパッチ済みブートプログラムを再修正して失敗の要因を排除して適正な処理が可能である。パッチ済みブートプログラムのデータの値が適正かどうかについて、メモリ破壊検出手段２６は、パッチ済みブートプログラムの誤り検出用冗長符号情報に基づいてＭＲＡＭ１８に格納したパッチ済みブートプログラムのデータの値が適正かどうかを判断する。
【００８９】
そして、動作実績判定手段２４は、メモリ破壊検出手段２６のパッチ済みブートプログラム判定処理に従って判定がＯＫかどうかを判断する（ステップＳ６０）。
【００９０】
ステップＳ６０において、判定がＯＫであると判断した場合（ステップＳ６０においてＹＥＳ）には、リセット処理を実行する（ステップＳ６２）。処理側の内部データの値等をリセット処理して異常の問題を解決する。
【００９１】
そして、処理を終了する（リターン）。
一方、ステップＳ６０において、判定がＯＫで無いと判断した場合（ステップＳ６０においてＮＯ）には、パッチ済みプログラムを格納する（ステップＳ６４）。具体的には、図４で説明したフロー図にしたがって動作実績判定手段２４は、パッチ適用手段３０に指示し、パッチ適用手段３０によりブートプログラム１００に対してパッチ情報１１０を当てて修正する。なお、その際にパッチ済みブートプログラムの誤り検出用冗長符号情報１０２も格納される。
【００９２】
そして、処理を終了する（リターン）。当該処理によりデータの値が適正でない場合には、パッチ情報を当ててパッチ済みブートプログラムを再度格納する。当該処理によりパッチ済みブートプログラムを再修正して異常の要因を排除して適正な実行が可能となる。
【００９３】
そして、処理を終了する（リターン）。
本構成により、ＭＲＡＭのＯＴＰ化という不可逆な操作を、その装置上で実績が認められたパッチ情報に対してのみ行うため、パッチ情報が適正でない場合の追記によるＭＲＡＭの通常使用可能な領域の容量低下を防ぐことができる。また、一旦ＯＴＰで書き込まれたパッチ情報は、外部の磁場等の影響を受けることなく安全かつ確実に保持される。
【００９４】
また、パッチ済みブートプログラムはＭＲＡＭに不揮発で保持されるため、毎回パッチを当てることなく高速に起動でき、さらに磁場の影響等によりその内容が破壊された場合には再生成され元の状態に戻すことができるため信頼性も確保される。
【００９５】
そして、本構成は、実際にその装置でパッチ情報を適用して動作実績を収集し、規定の条件を満たした場合にのみＯＴＰを実施するため、動作実績があり信頼できる内容のみが完全に固定化された状態で確実に保持される。
【００９６】
動作実績の収集中は、パッチ情報はＯＴＰではなく通常のメモリ書き込みによって保持しているため、もしその時点で新たな不具合を検出したとしても、追記ではなく上書きで内容を書き換えることができ、ＭＲＡＭの通常使用可能な容量を低下させることがない。
【００９７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９８】
２  サーバ、４  ネットワーク、１０  半導体装置、１２  通信Ｉ／Ｆ、１４  内部バス、１５  記憶装置、１６  ＯＴＰ化手段、１７  時計、１８  ＭＲＡＭ、２０  ＣＰＵ、２２  パッチ情報書換え手段、２４  動作実績判定手段、２６  メモリ破壊検出手段、２８  動作実績測定手段、３０  パッチ適用手段、１００  ブートプログラム、１０２，１０６  誤り検出用冗長符号情報、１０４  パッチ済みブートプログラム、１１０  パッチ情報。
【図１】
2013239220.tif 000003
【図２】
2013239220.tif 000004
【図３】
2013239220.tif 000005
【図４】
2013239220.tif 000006
【図５】
2013239220.tif 000007
【図６】
2013239220.tif 000008
【図７】
2013239220.tif 000009
【図８】
2013239220.tif 000010