IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステム 図1
  • 特開-メモリシステム 図2
  • 特開-メモリシステム 図3
  • 特開-メモリシステム 図4
  • 特開-メモリシステム 図5
  • 特開-メモリシステム 図6
  • 特開-メモリシステム 図7
  • 特開-メモリシステム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024112483
(43)【公開日】2024-08-21
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 11/14 20060101AFI20240814BHJP
   G06F 12/06 20060101ALI20240814BHJP
   G11C 29/00 20060101ALI20240814BHJP
【FI】
G06F11/14 617
G06F12/06 520F
G11C29/00 410
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023017526
(22)【出願日】2023-02-08
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001634
【氏名又は名称】弁理士法人志賀国際特許事務所
(72)【発明者】
【氏名】大塚 尚紀
【テーマコード(参考)】
5B160
5L206
【Fターム(参考)】
5B160AA05
5B160AC01
5B160MM01
5L206AA10
5L206BB01
5L206BB14
5L206FF05
5L206HH11
(57)【要約】
【課題】 メモリシステムのロバスト性を向上させる。
【解決手段】 実施形態のメモリシステムは、第1の不揮発性メモリと、プロセッサを含み、第1の不揮発性メモリに電気的に接続されたメモリコントローラと、を具備する。プロセッサは、第2の不揮発性メモリの複数の領域に多重化されて記憶されたファームウェアを第2の不揮発性メモリから読み出すためのイニシャルプログラムローダを実行する。プロセッサは、イニシャルプログラムローダの実行毎に第2の不揮発性メモリの複数の領域のうちいずれの領域からファームウェアを読み出すかを示す領域情報を、プロセッサの外部から取得し、取得した領域情報に基づく領域からファームウェアを読み出す。
【選択図】図5
【特許請求の範囲】
【請求項1】
第1の不揮発性メモリと、
プロセッサを含み、前記第1の不揮発性メモリに電気的に接続されたメモリコントローラと、を具備し、
前記プロセッサは、第2の不揮発性メモリの複数の領域に多重化されて記憶されたファームウェアを前記第2の不揮発性メモリから読み出すためのイニシャルプログラムローダを実行するように構成され、
前記プロセッサは、さらに、前記イニシャルプログラムローダの実行毎に前記第2の不揮発性メモリの前記複数の領域のうちいずれの領域から前記ファームウェアを読み出すかを示す領域情報を、前記プロセッサの外部から取得し、取得した前記領域情報に基づく領域から前記ファームウェアを読み出すように構成されている、
メモリシステム。
【請求項2】
前記第2の不揮発性メモリは、前記領域情報を記憶し、
前記プロセッサは、さらに、前記領域情報を更新するように構成されている、
請求項1に記載のメモリシステム。
【請求項3】
前記プロセッサは、前記領域情報を前記イニシャルプログラムローダの実行毎に更新するように構成されている、
請求項2に記載のメモリシステム。
【請求項4】
乱数情報生成回路を更に具備し、
前記プロセッサは、前記乱数情報生成回路が生成する乱数を前記領域情報として取得し、取得した乱数に基づく前記第2の不揮発性メモリの領域から前記ファームウェアを読み出すように構成されている、
請求項1に記載のメモリシステム。
【請求項5】
前記乱数情報生成回路は、乱数生成器又は物理量の計測器により構成される、
請求項1に記載のメモリシステム。
【請求項6】
前記プロセッサは、前記乱数情報生成回路が生成した乱数の所定の桁の値に基づいて、前記フォームウェアを読み出す領域を決定する、
請求項5に記載のメモリシステム。
【請求項7】
前記プロセッサは、さらに、前記領域情報に基づく領域からの前記ファームウェアの読み出しに失敗した場合には、前記領域情報に基づく領域以外の前記第2の不揮発性メモリの領域から前記ファームウェアを読み出す第1リカバリ処理を実行するように構成されている、
請求項1に記載のメモリシステム。
【請求項8】
前記プロセッサは、さらに、読み出しに成功した前記ファームウェアを、前記領域情報に基づく領域に書き戻す第2リカバリ処理を実行するように構成されている、
請求項7に記載のメモリシステム。
【請求項9】
前記メモリコントローラは、前記イニシャルプログラムローダを記憶する第3の不揮発性メモリをさらに含む、
請求項1に記載のメモリシステム。
【請求項10】
前記ファームウェアは、前記第3の不揮発性メモリに記憶された第2のファームウェアを、前記第3の不揮発性メモリから読み出すためのセカンドプログラムローダであり、
前記プロセッサは、さらに、前記セカンドプログラムローダを実行するように構成されている、
請求項1に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、メモリシステムに関する。
【背景技術】
【0002】
半導体記憶装置として、NAND型フラッシュメモリのような不揮発性メモリを用いたメモリシステムが知られている。メモリシステムは、不揮発性メモリと不揮発性メモリを制御するメモリコントローラとを含む。メモリコントローラによって実行されるファームウェアコードは、例えば単一のシリアルフラッシュROMの複数のスロットに多重化されて記憶される場合がある。ファームウェアコードの多重化により、コード破壊時のリカバリ処理が可能である。このようなメモリシステムにおいて、ロバスト性を更に向上させる要求がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第7296143号明細書
【特許文献2】米国特許第8352721号明細書
【特許文献1】米国特許第10884763号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本実施形態は、ロバスト性を向上させることができるメモリシステムを提供する。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、第1の不揮発性メモリと、プロセッサを含み、第1の不揮発性メモリに電気的に接続されたメモリコントローラと、を具備する。プロセッサは、第2の不揮発性メモリの複数の領域に多重化されて記憶されたファームウェアを第2の不揮発性メモリから読み出すためのイニシャルプログラムローダを実行するように構成される。プロセッサは、さらに、イニシャルプログラムローダの実行毎に第2の不揮発性メモリの複数の領域のうちいずれの領域からファームウェアを読み出すかを示す領域情報を、プロセッサの外部から取得し、取得した領域情報に基づく領域からファームウェアを読み出すように構成されている。
【図面の簡単な説明】
【0006】
図1】第1の実施形態にかかるメモリシステムを含むストレージシステムの構成例を示すブロック図。
図2】第1の実施形態にかかるメモリコントローラの構成を示すブロック図。
図3】比較例におけるFWコードメモリに記憶される内容を説明するための図。
図4】第1の実施形態にかかるFWコードメモリに記憶される内容を説明するための図。
図5】第1の実施形態の動作を説明するためのフローチャート。
図6】第2の実施形態にかかるメモリコントローラの構成を示すブロック図。
図7】第2の実施形態にかかるFWコードメモリに記憶される内容を説明するための図。
図8】第2の実施形態の動作を説明するためのフローチャート。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施の形態について詳細に説明する。
【0008】
(第1の実施形態)
本実施形態は、フェームウェアコードをメモリの複数の領域に多重化して記憶し、例えばシステムの起動毎に、ファームウェアコードを読み出す領域を切り換えることにより、リカバリ処理の信頼性を向上させるものである。なお、本実施形態は、メモリコントローラに採用されるファームウェアコードの読み出しの例について説明するが、各種システムのファームウェアコードの読み出しに同様に適用可能である。
【0009】
(メモリシステムの構成)
図1はメモリシステムを含むストレージシステムの構成例を示すブロック図である。
【0010】
図1のストレージシステムにおいて、メモリシステム1(具体的にはメモリコントローラ2)は、ホスト機器4と所定のインタフェースを介して接続される。このインタフェースは、例えば、パラレルインタフェースの一例であるeMMC(embedded Multi Media Card)、シリアルインタフェースの一例であるPCIeTMI(Peripheral Component Interconnect-Express)やM-PHYのようなインタフェース規格に準拠する。ホスト機器4は、例えば、パーソナルコンピュータ、携帯端末のような電子機器である。なお、メモリコントローラ2及びホスト機器4には、これらのインタフェース規格に準拠したインタフェース回路が内蔵されている。メモリシステム1は、ホスト機器4が搭載されたマザーボード上に実装され得る。
【0011】
メモリシステム1は、メモリコントローラ2と、不揮発性メモリ3と、FWコードメモリ21 と、を含む。メモリシステム1は、複数の半導体チップで構成されてもよい。メモリシステム1の例は、メモリコントローラ2と不揮発性メモリ3とが1つのパッケージとして構成されるUFS(Universal Flash Storage)デバイス、SDカードのようなメモリカード、SSD(Solid-State-Drive)、又はeMMC(embedded-Multi-Media-Card)である。
【0012】
不揮発性メモリ3は、複数のメモリチップを含んでもよい。不揮発性メモリ3は、例えば、複数のメモリセルを備えたNAND型フラッシュメモリである。不揮発性メモリ3は、複数のメモリセルトランジスタを備えたメモリセルアレイを有する。各メモリセルトランジスタは、電気的に書き換え可能なメモリセルを構成する。不揮発性メモリ3は、第1の不揮発性メモリの一例である。
メモリコントローラ2は、システムLSI(Large-Scale Integrated Circuit)又はSoC(System-on-a-Chip)で構成され得る。メモリコントローラ2の各部の機能は、専用ハードウェア、プログラムを実行するプロセッサ、又は、これらの組み合わせにより実現され得る。
【0013】
メモリコントローラ2は、不揮発性メモリ3と電気的に接続される。メモリコントローラ2は、ホスト機器4からの書き込み要求に従って不揮発性メモリ3へのデータの書き込みを制御する。また、メモリコントローラ2は、ホスト機器4からの読み出し要求に従って不揮発性メモリ3からのデータの読み出しを制御する。
FWコードメモリ21は、例えば、SF(シリアルフラッシュ)ROM(Read Only Memory)により構成される。FWコードメモリ21は、第2の不揮発性メモリの一例である。
図2はメモリコントローラ2の構成を示すブロック図である。メモリコントローラ2は、CPU11、ROM12,RAM(Random Access Memory)13、ホストインタフェース(I/F)15、メモリインタフェース(I/F)16、IPL(Initial Program Loader)メモリ17、エラー検出回路18、及びROMインタフェース(I/F)19を含む。
【0014】
CPU11、ROM12、RAM13、ホストI/F15、メモリI/F16、エラー検出回路18、及びROM I/F19は、互いに内部バス20により接続される。
【0015】
ホストI/F15は、ホスト機器4との間でデータを送受信する。
【0016】
RAM13は、ホスト機器4との間で送受信されるデータを一時格納する。なお、RAM13は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)のような汎用メモリである。
【0017】
メモリI/F16は、不揮発性メモリ3との間でデータを送受信する。
ROM12は、例えば、マスクROMにより構成される。ROM12は、IPLを格納する。ROM12は、第3の不揮発性メモリの一例である。
CPU11は、ファームウェアコード(以下、FWコードという)のようなプログラムを実行することよって、メモリシステム1の各部を統括的に制御する。CPU11は、例えばプロセッサにより構成される。CPU11は、ホストI/F15経由でホスト機器4からの要求を受けた場合に、その要求に従った処理を実行する。例えば、CPU11は、ホスト機器4からの要求に従って、不揮発性メモリ3へのデータの書き込みを制御する。また、CPU11は、ホスト機器4からの要求に従って、不揮発性メモリ3からのデータの読み出しを制御する。
【0018】
CPU11が実行するFWコードは、ROM12に格納されたIPLの実行により読み出される。IPLは、FWコードを読み出すためのプログラムである。例えばメモリシステム1の起動時において、CPU11はROM12にアクセスして、IPLを読み出す。CPU11は読み出したIPLを実行することで、FWコードを読み出す。読み出されたFWコードは、例えば、RAM13にロードされる。そして、CPU11は、RAM13にロードされたFWコードを実行する。
図2の例では、FWコードは、FWコードメモリ21に記憶される。FWコードメモリ21は、FWコードを記憶するための複数の領域(以下、スロットという)を備える。FWコードメモリ21の各スロットには、多重化されたFWコードの1つが記憶される。すなわち、FWコードメモリ21の各スロットには、同一のFWコードが記憶される。
ROM I/F19は、FWコードメモリ21との間でデータの送受信を行う。ROM I/F19は、例えば、SPI(Serial Peripheral Interface)である。
【0019】
なお、FWコードメモリ21にFWコード(すなわち、メモリシステム1の各部を統括的に制御するためのファームウェア)が記憶されているものと説明したが、FWコードメモリ21にはFWコードを読み出すためのファームウェア(プログラム)であるセカンドローダが記憶されていてもよい。この場合には、CPU11は、ROM I/F19を介してFWコードメモリ21からセカンドローダを、例えばRAM13にロードする。CPU11はロードされたセカンドローダを実行して、FWコードを例えば不揮発性メモリ3からRAM13にロードする。
エラー検出回路18は、FWコードメモリ21から読み出されたFWコードに対するエラー検出を行う。エラーは、例えば、FWコードに付加されたCRC(Cyclic Redundancy Check)を用いて行われる。エラー検出回路18は、エラー検出結果をCPU11に出力する。CPU11は、エラー検出回路18からエラーが検出されたとの結果を得た場合には、FWコードメモリ21からのFWコードの読み出しに失敗したものと判定する。
【0020】
(比較例におけるFWコードの読み出し)
図3は比較例にかかるメモリシステムにおいて、FWコードメモリに記憶される内容を説明するための図である。
【0021】
図3のFWコードメモリは、2つ以上のスロット(図3では第1スロット及び第2スロットの2つ)を有する。第1スロット及び第2スロットには、同一のFWコードが多重化されて記憶されている。比較例のIPLでは、FWコードメモリの各スロットからシリアルにFWコードを読み出す処理が行われる。即ち、比較例のIPLでは、メモリシステムの起動時に、先ずFWコードメモリの先頭スロットである第1スロットからFWコードを読み出す処理が行われる。比較例のIPLでは、第1スロットからのFWコードの読み出しに失敗した場合には、後続スロットである第2スロットからFWコードの読み出しを試みるリカバリ処理が行われる。
【0022】
このように、比較例のIPLでは、必ず、FWコードメモリの第1スロットからFWコードの読み出しが行われ、この読み出しに失敗した場合に、第2スロットからFWコードの読み出しが行われる(リカバリ処理)。従って、比較例のIPLでは、第1スロットからのFWコードの読み出しに成功した場合には、第2スロットへのアクセスは行われない。
【0023】
比較例のIPLでは、FWコードを最初に読み出すスロットが第1スロットに固定されている。FWコードメモリの信頼性が比較的高いものとすると、読み出しが行われるスロットは第1スロットに偏り、第2スロットから読み出しが行われることは稀である。このため、FWコードメモリの第1スロットの劣化が進むことが考えられる。
【0024】
また、FWコードメモリの第2スロットは、リカバリ処理までは読み出しが行われないことから、第2スロットのFWコードが壊れていたとしても、壊れていることを検出する機会が極めて少ない。従って、第2スロットのFWコードによるリカバリ処理の信頼性が高いとは言えない。
【0025】
(FWコードメモリ21の記憶内容)
そこで、本実施形態においては、IPLにより最初にFWコードが読み出されるFWコードメモリ21のスロット(以下、読み出し開始スロットという)を、例えば、メモリシステム1の起動毎に変更する。また、読み出し開始スロットの情報(以下、読み出し開始スロット情報という)が、FWコードメモリ21中に記憶される。読み出し開始スロット情報は、領域情報の一例である。
図4はFWコードメモリ21に記憶される内容を説明するための図である。図4の例では、FWコードメモリ21は、2つ以上のスロット(図4では第1スロット及び第2スロットの2つ)を有する。第1スロット及び第2スロットには、同一のFWコードが多重化されて記憶される。更に、本実施形態のFWコードメモリ21は、読み出し開始スロット情報を記憶する領域を有する。この読み出し開始スロット情報は、FWコードが最初に読み出されるスロットがいずれのスロット(図4の例では第1スロット又は第2スロット)であるかを示すものである。CPU11は、IPLを実行することにより、ROM I/F19を介してFWコードメモリ21にアクセスして、読み出し開始スロット情報を読み出すと共に、更新可能である。
【0026】
本実施形態のROM12に記憶されたIPLでは、例えばメモリシステム1の起動毎に、読み出し開始スロット情報を更新する処理が行われる。これにより、IPLを実行することにより最初に読み出されるFWコードメモリ21のスロットは、第1スロットと第2スロットとで例えばメモリシステム1の起動毎に切換えられる。これにより、FWコードメモリ21の特定のスロットにアクセスが集中することを防止することが可能である。また、FWコードメモリ21の各スロットのFWコードが壊れているか否かを比較的短期間に判定することが可能であり、リカバリ処理の信頼性が向上する。
【0027】
なお、読み出し開始スロット情報は、必ずしもメモリシステム1の起動毎に更新されなくてもよい。例えば、所定の起動数毎に、読み出し開始スロット情報が更新されるようになっていてもよい。
【0028】
(作用)
次に、このように構成された本実施形態の動作について図5を参照して説明する。図5は第1の実施形態の動作を説明するためのフローチャートである。
【0029】
メモリシステム1への電力の供給が開始されると、CPU11は、ROM12からIPLを読み出して実行する。以後、CPU11は、IPLに従って動作する。CPU11は、ROM I/F19を介してFWコードメモリ21にアクセスし、読み出し開始スロット情報を読み出す(S1)。CPU11は、読み出した情報により読み出し開始スロットが第1スロットであるか第2スロットであるかを判定する(S2)。CPU11は、読み出し開始スロットが第1スロットである場合にはステップS3に処理を進め、第2スロットである場合にはステップS4に処理を進める。
【0030】
読み出し開始スロットが第1スロットである場合、CPU11は、ROM I/F19を介してFWコードメモリ21にアクセスして、第1スロットに記憶されているFWコードを読み出してRAM13にロードする(S3)。CPU11は、FWコードの読み出しが成功したか否かの判定のために、読み出したFWコードをエラー検出回路18に与える。エラー検出回路18は読み出されたFWコードに対するエラー検出処理を実施し、エラーの検出結果をCPU11に出力する。CPU11は、エラー検出回路18からのエラーの検出結果に基づいて、FWコードの読み出しが成功したか否かを判定する(S5)。
【0031】
CPU11は、読み出されたFWコードにエラーがないと判定された場合には、FWコードの読み出しに成功したものと判定する(S5:YES)。この場合には、CPU11は、ROM I/F19を介してFWコードメモリ21にアクセスして、読み出し開始スロットを他方のスロット、この場合には第2スロット、に変更するように読み出し開始スロット情報を更新する(S6)。ステップS6の処理の後、CPU11は、RAM13にロードされたFWコードを実行する(起動成功)。
【0032】
なお、ステップS2において、第2スロットが読み出し開始スロットであるものと判定された場合には、CPU11は、FWコードメモリ21の第2スロットからFWコードを読み出す(S4)。CPU11は、FWコードの読み出しが成功したものと判定すると(S5:YES)、第1スロットを読み出し開始スロットとするように読み出し開始スロット情報を更新する(S6)。
【0033】
一方、ステップS3又はステップS4において、読み出されたFWコードにエラーが検出され、FWコードの読み出しに失敗したとCPU11が判定した場合(S5:NO)、第1リカバリ処理が実行される。図5のステップS11~ステップS15は、第1リカバリ処理を示す。この第1リカバリ処理においては、CPU11は、ステップS11において、読み出しに失敗したFWコードがいずれのスロットから読み出されたものであるかを判定する。ステップS11の判定結果はステップS2の判定結果と同じであり、CPU11はステップS2の判定結果を図示しないレジスタに格納しておき、この結果を利用してもよい。なお、CPU11は、ROM I/F19を介してFWコードメモリ21にアクセスして、読み出し開始スロット情報を読み出して、読み出し開始スロットを再度判定してもよい。
【0034】
ステップS11における判定結果の読み出し開始スロットが第1スロットである場合、この第1スロットからの読み出しが失敗しているので、CPU11は、ROM I/F19を介してFWコードメモリ21にアクセスして、第2スロットに記憶されているFWコードを読み出してRAM13にロードする(S12)。ステップS5と同様に、CPU11は、FWコードの読み出しが成功したか否かを判定する(S14)。
CPU11は、FWコードの読み出しが成功したものと判定すると(S14:YES)、壊れたFWコードを読み出しに成功したFWコードにより更新する第2リカバリ処理を実行する(S15)。この第2リカバリ処理では、CPU11は、RAM13にロードされたFWコード(正常なFWコード)を読み出す。そして、CPU11は、ROM I/F19を介して、壊れたFWコードが格納されているFWコードメモリ21のスロット(この場合には第1スロット)にアクセスして、このスロットにRAM13から読み出したFWコード(正常なFWコード)を書き戻す。次に、CPU11は、ステップS6において、読み出し開始スロットを他方のスロット(この場合には第2スロット)に変更するように読み出し開始スロット情報を更新する。
【0035】
なお、ステップS11において、第2スロットが読み出し開始スロットであるものと判定された場合には、CPU11は、FWコードメモリ21の第1スロットからFWコードを読み出してRAM13にロードする(S13)。CPU11は、FWコードの読み出しが成功したものと判定すると(S14:YES)、壊れたFWコード(この場合には第2スロットに記憶されたFWコード)を読み出しに成功したFWコードにより更新する第2リカバリ処理を実行する(S15)。次に、CPU11は、読み出し開始スロットを他方のスロット(この場合には第1スロット)とするように読み出し開始スロット情報を更新する(S6)。
【0036】
なお、CPU11は、ステップS14においてFWコードの読み出しが失敗したと判定した場合には、FWコードを実行せず、メモリシステム1の起動が失敗したものとする。
【0037】
上記説明では、読み出し開始スロットを他方のスロットに変更する処理(S6)の前に第2リカバリ処理を実行するものと説明したが、起動成功後に、バックグラウンドで第2リカバリ処理を実行するようにしてもよい。この場合には、起動の時間を短縮することが可能である。
【0038】
このように実施形態においては、フェームウェアコードをメモリの複数の領域に多重化して記憶するシステムにおいて、例えばシステムの起動毎に、ファームウェアコードが読み出される領域が切り換えられる。これにより、ファームウェアコードを記憶するメモリの特定の領域にアクセスが集中することを防止することができる。また、いずれの領域のファームウェアコードも比較的短い期間で読み出されるので、各領域のファームウェアコードが壊れているか否かを早期に検出することができる。これにより、全ての領域のファームウェアコードが破壊されてしまう状態を比較的容易に回避でき、リカバリ処理性能の信頼性を向上させることができる。
【0039】
(第2の実施形態)
第2の実施形態について説明する。図6は第2の実施形態にかかるコントローラの構成を示すブロック図である。図6において図2と同一の構成要素には同一符号を付して説明を省略する。
【0040】
第1の実施形態においては、FWコードメモリ21に読み出し開始スロット情報を記憶させると共に、例えばメモリシステム1の起動毎に読み出し開始スロット情報を更新することで、FWコードが読み出されるFWコードメモリ21の各スロットを平準化させた。これに対し、第2の実施形態は、乱数情報を利用することで、読み出し開始スロットの変更を可能にするものである。これにより、第2の実施形態においては、FWコードメモリに読み出し開始スロット情報を記憶させる必要がなく、読み出し開始スロット情報を記憶する領域にアクセスが集中することを防止することができる。
【0041】
第2の実施形態のメモリコントローラ2Aは、乱数情報生成回路30を採用した点が、第1の実施形態のメモリコントローラ2と異なる。なお、ROM12に記憶されるIPLは、第1の実施形態において採用されるIPLとは異なる。具体的には、第1の実施形態において採用されるIPLでは、読み出し開始スロット情報に基づいて読み出し開始スロットが決定された。第2の実施形態において採用されるIPLでは、乱数情報生成回路30からの情報に基づいて読み出し開始スロットが決定される。また、第2の実施形態においては、FWコードメモリ21に代えてFWコードメモリ21Aが採用される。
【0042】
図7はFWコードメモリ21Aに記憶される内容を説明するための図である。
【0043】
第2の実施形態においては、FWコードはFWコードメモリ21Aに記憶される。FWコードメモリ21Aは、例えば、SFROMにより構成されてもよい。FWコードメモリ21Aは、FWコードを記憶するための複数の領域(スロット)を備える。FWコードメモリ21Aの各スロットには、多重化されたFWコードの1つが記憶される。FWコードメモリ21Aは、読み出し開始スロット情報を記憶する領域を有していない点がFWコードメモリ21と異なる。
【0044】
乱数情報生成回路30は、メモリシステム1が起動されると動作を開始して乱数を発生する。CPU11は、乱数情報生成回路30から入力された乱数に基づいて、FWコードメモリ21AのいずれのスロットからFWコードを読み出すかを決定する。乱数情報生成回路30から入力された乱数は、領域情報の別な一例である。例えば、CPU11は、FWコードを記憶するFWコードメモリ21Aのスロット数が2の場合には、入力された乱数が奇数か偶数かによって、IPLにより最初にFWコードを読み出すスロットを決定してもよい。
【0045】
乱数情報生成回路30は、乱数を発生する種々の装置により構成することができる。例えば、乱数情報生成回路30を、乱数生成器、温度計、湿度計、電圧計、タイマ等により構成してもよい。乱数情報生成回路30を温度計、湿度計、電圧計等で構成した場合には、これらの計測器からの計測値が乱数としてCPU11に供給される。この場合には、CPU11は、計測値の例えば所定の桁(例えば小数点以下の所定の桁)の値が、例えば偶数か奇数によって読み出し開始スロットを決定してもよい。また、乱数情報生成回路30としてタイマを用いる場合には、CPU11は、タイマからの時刻情報の所定の桁、例えば、ナノ秒の桁の値が、例えば偶数か奇数かによって読み出し開始スロットを決定してもよい。
【0046】
次に、このように構成された実施形態の動作について図8を参照して説明する。図8は第2の実施形態の動作を説明するためのフローチャートである。図8において図5と同一の手順には同一符号を付して説明を省略する。
【0047】
メモリシステム1への電力の供給が開始されると、CPU11は、ROM12からIPLを読み出して実行する。以後、CPU11は、IPLに従って動作する。メモリシステム1に電力が供給されることで、乱数情報生成回路30は動作を開始して乱数を発生する。CPU11は、ステップS21において、乱数情報生成回路30が発生した乱数を取得する。CPU11は、取得した乱数によって、読み出し開始スロットを判定する。例えば、CPU11は、取得した乱数の値が偶数か奇数に基づいて読み出し開始スロットを第1スロットとするか第2スロットとするかを決定してもよい。
【0048】
CPU11は、メモリシステム1の起動時に、乱数に基づいて読み出し開始スロットを決定しており、メモリシステム1の起動毎に選択される読み出し開始スロットは、第1スロットと第2スロットとで平準化され、いずれか一方に偏ることはない。なお、CPU11は、メモリシステム1の起動毎に、乱数に基づいて読み出し開始スロットを決定するものと説明したが、メモリシステム1の所定数の起動毎に、乱数に基づいて読み出し開始スロットを決定してもよい。
【0049】
図8のステップS2~ステップS5、及び、ステップS11~ステップS15の処理は図5の各ステップの処理と同様である。ただし、本実施形態のCPU11は、ステップS2の判定結果を図示しないレジスタに格納しておき、この結果をステップS11で利用する必要がある。また本実施形態においては、FWコードメモリ21Aには読み出し開始スロット情報が記憶されていないので、CPU11は、図5のステップS6に示された処理を実行しない。
これにより、第2の実施形態においても、例えばシステムの起動毎に、ファームウェアコードを読み出す領域を切り換えることができる。
【0050】
また、第2の実施形態においては、FWコードメモリから読み出し開始スロット情報を読み出す必要がないので、読み出し開始スロット情報を取得及び更新するために、FWコードメモリの特定の領域にアクセスが集中することもない。
【0051】
このように第2の実施形態においても、第1の実施形態と同様の効果を得ることができる。また、FWコードメモリの特定の領域にアクセスが集中することを防止することができる。
【0052】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0053】
1…メモリシステム、2…メモリコントローラ、3…不揮発性メモリ、4…ホスト機器、11…CPU、12…ROM、13…RAM、15…ホストI/F、16…メモリI/F、18…エラー検出回路、19…ROM I/F、20…内部バス、21…FWコードメモリ、30…乱数情報生成回路。
図1
図2
図3
図4
図5
図6
図7
図8