JPH09198201A - 半導体ディスク装置およびその書換回数管理方法 - Google Patents
半導体ディスク装置およびその書換回数管理方法Info
- Publication number
- JPH09198201A JPH09198201A JP8005172A JP517296A JPH09198201A JP H09198201 A JPH09198201 A JP H09198201A JP 8005172 A JP8005172 A JP 8005172A JP 517296 A JP517296 A JP 517296A JP H09198201 A JPH09198201 A JP H09198201A
- Authority
- JP
- Japan
- Prior art keywords
- block
- rewriting
- data
- frequency
- rewrite
- 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
Links
Landscapes
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【課題】書換回数を記録しているブロック自体の消去発
生頻度の低減を図る。 【解決手段】書換回数記述ブロック内に複数の消去ブロ
ックそれぞれの書換回数を記述するための書換回数テー
ブルが作成される。この書換回数テーブルのページ後半
には消去済み且つ未書き込みの追記領域が確保されてお
り、データ書換が発生する度に、その追記領域に、書き
換えられるブロックを示すブロック番号とその書換回数
を示す書換回数データLWCとを含む書換回数情報が追
記方式で書き込まれる。また、書換回数テーブル上に空
き領域が無くなったときは、その時点でブロック消去を
行うのではなく、書換回数テーブルの内容と追記された
書換回数情報とに基づいて新たな書換回数テーブルを作
成し、この作成した書換回数テーブルを次ページの予備
領域に書き込むことによって、書換回数テーブル自体の
更新も追記方式にて行われる。
生頻度の低減を図る。 【解決手段】書換回数記述ブロック内に複数の消去ブロ
ックそれぞれの書換回数を記述するための書換回数テー
ブルが作成される。この書換回数テーブルのページ後半
には消去済み且つ未書き込みの追記領域が確保されてお
り、データ書換が発生する度に、その追記領域に、書き
換えられるブロックを示すブロック番号とその書換回数
を示す書換回数データLWCとを含む書換回数情報が追
記方式で書き込まれる。また、書換回数テーブル上に空
き領域が無くなったときは、その時点でブロック消去を
行うのではなく、書換回数テーブルの内容と追記された
書換回数情報とに基づいて新たな書換回数テーブルを作
成し、この作成した書換回数テーブルを次ページの予備
領域に書き込むことによって、書換回数テーブル自体の
更新も追記方式にて行われる。
Description
【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は半導体ディスク装
置およびその書換回数管理方法に関し、特に複数の消去
ブロックを含むフラッシュEEPROMを内蔵した半導
体ディスク装置およびその書換回数管理方法に関する。
置およびその書換回数管理方法に関し、特に複数の消去
ブロックを含むフラッシュEEPROMを内蔵した半導
体ディスク装置およびその書換回数管理方法に関する。
【0002】
【従来の技術】従来のワークステーションやパーソナル
コンピュータ等の情報処理装置の多くは、2次記憶装置
として磁気ディスク装置を用いていた。磁気ディスク装
置は、記録の信頼性が高い、ビット単価が安いなどの利
点がある反面、装置のサイズが大きい、物理的な衝撃に
弱いなどの欠点を持つ。
コンピュータ等の情報処理装置の多くは、2次記憶装置
として磁気ディスク装置を用いていた。磁気ディスク装
置は、記録の信頼性が高い、ビット単価が安いなどの利
点がある反面、装置のサイズが大きい、物理的な衝撃に
弱いなどの欠点を持つ。
【0003】そこで、近年、装置のサイズが小さく物理
的な衝撃にも強い半導体ディスク装置に注目が集まって
いる。半導体ディスク装置とは、電気的に一括消去が可
能な不揮発性の半導体メモリであるフラッシュEEPR
OMを、従来の磁気ディスク装置などと同様にパーソナ
ルコンピュータなどの2次記憶装置として用いるもので
ある。この半導体ディスク装置には、磁気ディスク装置
の磁気ヘッドや回転ディスクのような機械的な可動部分
を含まないため、物理的な衝撃による誤動作や故障が発
生しにくい。また、装置としてのサイズも小さくなる等
の利点がある。
的な衝撃にも強い半導体ディスク装置に注目が集まって
いる。半導体ディスク装置とは、電気的に一括消去が可
能な不揮発性の半導体メモリであるフラッシュEEPR
OMを、従来の磁気ディスク装置などと同様にパーソナ
ルコンピュータなどの2次記憶装置として用いるもので
ある。この半導体ディスク装置には、磁気ディスク装置
の磁気ヘッドや回転ディスクのような機械的な可動部分
を含まないため、物理的な衝撃による誤動作や故障が発
生しにくい。また、装置としてのサイズも小さくなる等
の利点がある。
【0004】ところで、半導体ディスク装置において
は、フラッシュEEPROMの書き換え回数が大きくな
ると信頼性の低下、消去・書き込み速度の低下などの不
具合が生じるため、各消去ブロックの書換回数を記録し
て管理する必要がある。
は、フラッシュEEPROMの書き換え回数が大きくな
ると信頼性の低下、消去・書き込み速度の低下などの不
具合が生じるため、各消去ブロックの書換回数を記録し
て管理する必要がある。
【0005】一般に、書換回数の記録は、データ書換を
行う消去ブロックと同一ブロック内部の冗長領域に対し
て行われる。
行う消去ブロックと同一ブロック内部の冗長領域に対し
て行われる。
【0006】しかし、使用するフラッシュEEPROM
によっては冗長領域を持たないケースもあり、また冗長
領域を持っているにしても、その冗長領域がECC等で
全て使用されており、書換回数の記録のためには使用で
きない場合もある。
によっては冗長領域を持たないケースもあり、また冗長
領域を持っているにしても、その冗長領域がECC等で
全て使用されており、書換回数の記録のためには使用で
きない場合もある。
【0007】このため、書換回数はデータ書き換えが発
生するブロックと別なブロックに記録することが好まし
い。但し、その場合には、書換回数が記録されるブロッ
クの書換回数を低く押さえる工夫が必要となる。なぜな
ら、書き換え回数情報を特定のブロックに集中して格納
すると、そのブロックの書き換え回数だけが突出して増
大し、これによってフラッシュEEPROMの寿命が短
くなるからである。
生するブロックと別なブロックに記録することが好まし
い。但し、その場合には、書換回数が記録されるブロッ
クの書換回数を低く押さえる工夫が必要となる。なぜな
ら、書き換え回数情報を特定のブロックに集中して格納
すると、そのブロックの書き換え回数だけが突出して増
大し、これによってフラッシュEEPROMの寿命が短
くなるからである。
【0008】ところが、現実には、書換回数が記録され
るブロックの書換回数を低く押さえるための技術は開発
されておらず、書換回数の管理を専用の消去ブロックで
集中して行うことは出来なかった。
るブロックの書換回数を低く押さえるための技術は開発
されておらず、書換回数の管理を専用の消去ブロックで
集中して行うことは出来なかった。
【0009】
【発明が解決しようとする課題】上述のように、従来の
半導体ディスク装置では、書換回数の管理を専用の消去
ブロックで集中して行うと、そのブロックの書き換え回
数だけが突出して増大することによってフラッシュEE
PROMの寿命低下を引き起こすため、書換回数の管理
を専用の消去ブロックで集中して行うことは出来なかっ
た。
半導体ディスク装置では、書換回数の管理を専用の消去
ブロックで集中して行うと、そのブロックの書き換え回
数だけが突出して増大することによってフラッシュEE
PROMの寿命低下を引き起こすため、書換回数の管理
を専用の消去ブロックで集中して行うことは出来なかっ
た。
【0010】この発明はこのような点に鑑みてなされた
ものであり、書換回数を記録しているブロック自体の消
去発生頻度をそれ以外の他の一般のブロックと同程度以
下に押さえられるようにし、書換回数の管理を専用の消
去ブロックで集中して行うことが可能な半導体ディスク
装置およびその書換回数管理方法を提供することを目的
とする。
ものであり、書換回数を記録しているブロック自体の消
去発生頻度をそれ以外の他の一般のブロックと同程度以
下に押さえられるようにし、書換回数の管理を専用の消
去ブロックで集中して行うことが可能な半導体ディスク
装置およびその書換回数管理方法を提供することを目的
とする。
【0011】
【課題を解決するための手段】この発明は、複数の消去
ブロックを含むフラッシュEEPROMを内蔵し、ホス
ト装置からのディスクアクセス要求に応じて前記フラッ
シュEEPROMをアクセスする半導体ディスク装置に
おいて、前記複数の消去ブロックそれぞれの書換回数を
記述するための書換回数テーブルを前記複数の消去ブロ
ックの中の所定の消去ブロック上に作成する手段と、前
記各消去ブロックの書き換えが発生される度、その書き
換えられた消去ブロックを示すブロック番号とその書換
回数を示す書換回数データとを含む書換回数情報を、前
記書換回数テーブル上の記憶領域の中で消去済み且つ未
書き込みの空き領域に追記する書換回数情報追記手段と
を具備し、書換回数を記録するための専用の消去ブロッ
クを使用して前記複数の消去ブロックそれぞれの書換回
数を管理できるようにしたことを特徴とする。
ブロックを含むフラッシュEEPROMを内蔵し、ホス
ト装置からのディスクアクセス要求に応じて前記フラッ
シュEEPROMをアクセスする半導体ディスク装置に
おいて、前記複数の消去ブロックそれぞれの書換回数を
記述するための書換回数テーブルを前記複数の消去ブロ
ックの中の所定の消去ブロック上に作成する手段と、前
記各消去ブロックの書き換えが発生される度、その書き
換えられた消去ブロックを示すブロック番号とその書換
回数を示す書換回数データとを含む書換回数情報を、前
記書換回数テーブル上の記憶領域の中で消去済み且つ未
書き込みの空き領域に追記する書換回数情報追記手段と
を具備し、書換回数を記録するための専用の消去ブロッ
クを使用して前記複数の消去ブロックそれぞれの書換回
数を管理できるようにしたことを特徴とする。
【0012】この半導体ディスク装置においては、書換
回数を記録するための専用の消去ブロック内部に複数の
消去ブロックそれぞれの書換回数を記述するための書換
回数テーブルが作成される。この書換回数テーブルには
消去済み且つ未書き込みの空き領域が確保されており、
データ書換が発生する度に、その空き領域に、書き換え
られた消去ブロックを示すブロック番号とその書換回数
を示す書換回数データとを含む書換回数情報が追記方式
で書き込まれる。従って、書換回数テーブルに空き領域
が無くなるまでは、書換回数を記録するための専用の消
去ブロックに対する消去動作は発生しない。よって、書
換回数を記録しているブロック自体の消去発生頻度を低
く押さえられるようになり、書換回数の管理を専用の消
去ブロックで集中して効率良く行うことが可能となる。
回数を記録するための専用の消去ブロック内部に複数の
消去ブロックそれぞれの書換回数を記述するための書換
回数テーブルが作成される。この書換回数テーブルには
消去済み且つ未書き込みの空き領域が確保されており、
データ書換が発生する度に、その空き領域に、書き換え
られた消去ブロックを示すブロック番号とその書換回数
を示す書換回数データとを含む書換回数情報が追記方式
で書き込まれる。従って、書換回数テーブルに空き領域
が無くなるまでは、書換回数を記録するための専用の消
去ブロックに対する消去動作は発生しない。よって、書
換回数を記録しているブロック自体の消去発生頻度を低
く押さえられるようになり、書換回数の管理を専用の消
去ブロックで集中して効率良く行うことが可能となる。
【0013】また、書換回数テーブル上に空き領域が無
くなったときは、その時点で専用ブロックの消去を行う
のではなく、書換回数テーブルの内容と追記された書換
回数情報とに基づいて新たな書換回数テーブルを作成
し、この作成した書換回数テーブルを、専用ブロック上
の記憶領域の中で消去済み且つ未書き込みの空き領域に
追記することが好ましい。このように、書換回数情報だ
けでなく、書換回数テーブル自体の更新も追記方式にて
行うことにより、さらに専用ブロックの消去発生頻度を
低く押さえることが可能となる。
くなったときは、その時点で専用ブロックの消去を行う
のではなく、書換回数テーブルの内容と追記された書換
回数情報とに基づいて新たな書換回数テーブルを作成
し、この作成した書換回数テーブルを、専用ブロック上
の記憶領域の中で消去済み且つ未書き込みの空き領域に
追記することが好ましい。このように、書換回数情報だ
けでなく、書換回数テーブル自体の更新も追記方式にて
行うことにより、さらに専用ブロックの消去発生頻度を
低く押さえることが可能となる。
【0014】
【発明の実施の形態】以下、図面を参照してこの発明の
実施形態を説明する。
実施形態を説明する。
【0015】図1には、この発明の一実施形態に係わる
半導体ディスク装置の構成が示されている。この半導体
ディスク装置10は、ハードディスク装置の代替として
パーソナルコンピュータなどのホストシステムに接続さ
れて使用されるものであり、ホストシステムからのディ
スクアクセス要求をフラッシュEEPROMに対するア
クセス要求にエミュレートして、半導体ディスク装置1
0内蔵のフラッシュEEPROMをアクセスする。この
半導体ディスク装置10には、最大16個のフラッシュ
EEPROMチップを搭載することが可能である。これ
らフラッシュEEPROMは、それぞれICソケットを
介して半導体ディスク装置10の回路基盤に着脱自在に
実装される。
半導体ディスク装置の構成が示されている。この半導体
ディスク装置10は、ハードディスク装置の代替として
パーソナルコンピュータなどのホストシステムに接続さ
れて使用されるものであり、ホストシステムからのディ
スクアクセス要求をフラッシュEEPROMに対するア
クセス要求にエミュレートして、半導体ディスク装置1
0内蔵のフラッシュEEPROMをアクセスする。この
半導体ディスク装置10には、最大16個のフラッシュ
EEPROMチップを搭載することが可能である。これ
らフラッシュEEPROMは、それぞれICソケットを
介して半導体ディスク装置10の回路基盤に着脱自在に
実装される。
【0016】図1においては、16個のNAND型フラ
ッシュEEPROM11−1〜11−16が搭載されて
いる状態が示されている。半導体ディスク装置10に
は、さらに、コントローラ12、およびRAM13が設
けられている。
ッシュEEPROM11−1〜11−16が搭載されて
いる状態が示されている。半導体ディスク装置10に
は、さらに、コントローラ12、およびRAM13が設
けられている。
【0017】フラッシュEEPROM11−1〜11−
16は、この半導体ディスク装置10の記録媒体として
使用されるものであり、ハードディスク装置の磁気記録
媒体に相当する。これらフラッシュEEPROM11−
1〜11−16はNANDメモリバス14を介してコン
トローラ12に接続されている。NANDメモリバス1
4には、8ビット幅のデータバス、および各フラッシュ
EEPROMの制御信号端子に接続される各種制御信号
線が定義されている。I/Oデータバスおよび各種制御
信号線は、それぞれフラッシュEEPROM11−1〜
11−16のデータ入出力端子I/O、および制御信号
入力端子CONT(コマンドラッチイネーブル端子CL
E、アドレスラッチイネーブル端子ALE、ライトイネ
ーブル端子WE、リードイネーブル端子REなどを含
む)に共通接続されている。
16は、この半導体ディスク装置10の記録媒体として
使用されるものであり、ハードディスク装置の磁気記録
媒体に相当する。これらフラッシュEEPROM11−
1〜11−16はNANDメモリバス14を介してコン
トローラ12に接続されている。NANDメモリバス1
4には、8ビット幅のデータバス、および各フラッシュ
EEPROMの制御信号端子に接続される各種制御信号
線が定義されている。I/Oデータバスおよび各種制御
信号線は、それぞれフラッシュEEPROM11−1〜
11−16のデータ入出力端子I/O、および制御信号
入力端子CONT(コマンドラッチイネーブル端子CL
E、アドレスラッチイネーブル端子ALE、ライトイネ
ーブル端子WE、リードイネーブル端子REなどを含
む)に共通接続されている。
【0018】さらに、フラッシュEEPROM11−1
〜11−6とコントローラ12の間には、チップセレク
ト信号(CS1〜CS8)線、およびReady/Bu
sy信号線(R/B1〜R/B16)がそれぞれチップ
毎に独立して配設されている。
〜11−6とコントローラ12の間には、チップセレク
ト信号(CS1〜CS8)線、およびReady/Bu
sy信号線(R/B1〜R/B16)がそれぞれチップ
毎に独立して配設されている。
【0019】これらフラッシュEEPROM11−1〜
11−6はそれぞれ16MビットのNAND型EEPR
OMであり、図2に示されているように、メモリセルア
レイ111とデータレジスタ112を備えている。メモ
リセルアレイ111は、8K行×264列×8ビットの
ビット構成を有し、512個のブロックを有している。
データ消去はこのブロック単位で実行することができ
る。各ブロックは16ページ(行)から構成されてお
り、各ページは、256バイトのデータ記憶領域と8バ
イトの冗長領域を備えている。データの書込みと読み出
しは、256+8バイトのデータレジスタ112を介し
てページ単位で実行される。この半導体ディスク装置に
おいては、各ページの冗長領域はECCや不良セクタ情
報の格納に利用される。また、これら各フラッシュEE
PROMは消去後、書き込みを行う。この書き込みは1
回で行う必要は無く、別な機会に改めて書き込みをする
ことが可能である。従って、消去後、ビットデータがA
LL1になったとすると、データ”1”をデータ”0”
に変えることは、可能である。よって、必要な機会に応
じてビットデータを”1”から”0”に変えることも出
来る。
11−6はそれぞれ16MビットのNAND型EEPR
OMであり、図2に示されているように、メモリセルア
レイ111とデータレジスタ112を備えている。メモ
リセルアレイ111は、8K行×264列×8ビットの
ビット構成を有し、512個のブロックを有している。
データ消去はこのブロック単位で実行することができ
る。各ブロックは16ページ(行)から構成されてお
り、各ページは、256バイトのデータ記憶領域と8バ
イトの冗長領域を備えている。データの書込みと読み出
しは、256+8バイトのデータレジスタ112を介し
てページ単位で実行される。この半導体ディスク装置に
おいては、各ページの冗長領域はECCや不良セクタ情
報の格納に利用される。また、これら各フラッシュEE
PROMは消去後、書き込みを行う。この書き込みは1
回で行う必要は無く、別な機会に改めて書き込みをする
ことが可能である。従って、消去後、ビットデータがA
LL1になったとすると、データ”1”をデータ”0”
に変えることは、可能である。よって、必要な機会に応
じてビットデータを”1”から”0”に変えることも出
来る。
【0020】フラッシュEEPROM11−1〜11−
6はそれぞれライトモード、リードモード、消去モード
などの動作モードを有しており、これら動作モードはコ
ントローラ12からのコマンドによって指定される。
6はそれぞれライトモード、リードモード、消去モード
などの動作モードを有しており、これら動作モードはコ
ントローラ12からのコマンドによって指定される。
【0021】リードモードにおいては、メモリセルアレ
イ111からデータレジスタ112へのページ単位のデ
ータ転送(ページリード)がフラッシュEEPROM内
部で自動実行される。このデータ転送期間中はRead
y/Busy信号線はBusy状態に設定され、これに
よってページリード動作中であることがコントローラ1
2に通知される。データレジスタ112に転送された1
ページ分のデータは、入出力端子I/O0〜I/O7か
ら8ビット単位でシリアルに読み出される。1ページ分
のデータのシリアルリードが終了すると、次のページの
ページリードが自動的に実行される。
イ111からデータレジスタ112へのページ単位のデ
ータ転送(ページリード)がフラッシュEEPROM内
部で自動実行される。このデータ転送期間中はRead
y/Busy信号線はBusy状態に設定され、これに
よってページリード動作中であることがコントローラ1
2に通知される。データレジスタ112に転送された1
ページ分のデータは、入出力端子I/O0〜I/O7か
ら8ビット単位でシリアルに読み出される。1ページ分
のデータのシリアルリードが終了すると、次のページの
ページリードが自動的に実行される。
【0022】ライトモードにおいては、データレジスタ
112からメモリセルアレイ111へのページ単位のデ
ータ転送(ページライト)がフラッシュEEPROM内
部で自動実行される。このデータ転送期間中はRead
y/Busy信号線はBusy状態に設定され、これに
よってページライト動作中であることがコントローラ1
2に通知される。
112からメモリセルアレイ111へのページ単位のデ
ータ転送(ページライト)がフラッシュEEPROM内
部で自動実行される。このデータ転送期間中はRead
y/Busy信号線はBusy状態に設定され、これに
よってページライト動作中であることがコントローラ1
2に通知される。
【0023】消去モードにおいては、コントローラから
のコマンドによって指定された任意のブロックの記憶内
容が一括消去される。
のコマンドによって指定された任意のブロックの記憶内
容が一括消去される。
【0024】半導体ディスク装置10においては、これ
らフラッシュEEPROM11−1〜11−6の制御の
ための処理の殆どはファームウェアによって制御され
る。ハードウェアによって実行されるのは、フラッシュ
EEPROMへのデータ書込みの際のECC生成と、フ
ラッシュEEPROMからのデータ読み出しの際のEC
Cチェックである。
らフラッシュEEPROM11−1〜11−6の制御の
ための処理の殆どはファームウェアによって制御され
る。ハードウェアによって実行されるのは、フラッシュ
EEPROMへのデータ書込みの際のECC生成と、フ
ラッシュEEPROMからのデータ読み出しの際のEC
Cチェックである。
【0025】次に、半導体ディスク装置10のディスク
コントローラ12の構成を説明する。
コントローラ12の構成を説明する。
【0026】ディスクコントローラ12は1個のLSI
によって実現されており、そのLSIチップには、図1
に示されているように、マイクロプロセッサ(MPU)
14、プロセッサバスインタフェース15、ROM1
6、外部バスインタフェース17、バッファメモリコン
トローラ18、およびNANDバスインタフェース19
が集積形成されている。
によって実現されており、そのLSIチップには、図1
に示されているように、マイクロプロセッサ(MPU)
14、プロセッサバスインタフェース15、ROM1
6、外部バスインタフェース17、バッファメモリコン
トローラ18、およびNANDバスインタフェース19
が集積形成されている。
【0027】マイクロプロセッサ14は、ROM16に
格納されたファームウェアを実行してこの半導体ディス
ク装置10全体の動作を制御するものであり、パーソナ
ルコンピュ−タのCPU1から送られるディスクアクセ
スのためのホストアドレスを、フラッシュEEPROM
11−1〜11−16をアクセスするためのメモリアド
レスに変換するアドレス変換処理、フラッシュEEPR
OM11−1〜11−16をリード/ライトアクセスす
るためのアクセス制御処理、フラッシュEEPROM1
1−1〜11−6それぞれのデータ書換回数の管理、お
よびデータ書換回数を平準化するためのスワッピング処
理の制御などを行う。
格納されたファームウェアを実行してこの半導体ディス
ク装置10全体の動作を制御するものであり、パーソナ
ルコンピュ−タのCPU1から送られるディスクアクセ
スのためのホストアドレスを、フラッシュEEPROM
11−1〜11−16をアクセスするためのメモリアド
レスに変換するアドレス変換処理、フラッシュEEPR
OM11−1〜11−16をリード/ライトアクセスす
るためのアクセス制御処理、フラッシュEEPROM1
1−1〜11−6それぞれのデータ書換回数の管理、お
よびデータ書換回数を平準化するためのスワッピング処
理の制御などを行う。
【0028】ROM16には、マイクロプロセッサ14
によって実行されるファームウェア、およびパーソナル
コンピュータのCPU1によって実行されるオペレーテ
ィングシステムやアプリケーションプログラムなどの各
種プログラムが格納されている。オペレーティングシス
テムやアプリケーションプログラムはROM16内でフ
ァイルとして管理されており、それらプログラムはCP
U1から半導体ディスク装置10に対して発行される読
み出し要求に応じてROM16から読み出され、そして
パーソナルコンピュータのメインメモリ3にロードされ
る。
によって実行されるファームウェア、およびパーソナル
コンピュータのCPU1によって実行されるオペレーテ
ィングシステムやアプリケーションプログラムなどの各
種プログラムが格納されている。オペレーティングシス
テムやアプリケーションプログラムはROM16内でフ
ァイルとして管理されており、それらプログラムはCP
U1から半導体ディスク装置10に対して発行される読
み出し要求に応じてROM16から読み出され、そして
パーソナルコンピュータのメインメモリ3にロードされ
る。
【0029】ROM16およびフラッシュEEPROM
11−1〜11−16には、連続するディスクアドレス
がマッピングされており、ROM16もディスク装置1
0の記憶媒体の一部として利用される。このため、RO
M16に格納されているオペレーティングシステムやア
プリケーションプログラムの読み出しは、CPU1から
の読み出し要求が、ある特定の番地を指定している時に
のみ実行され、その他の番地を指定している時はフラッ
シュEEPROM11−1〜11−16に対するリード
アクセスが行われる。
11−1〜11−16には、連続するディスクアドレス
がマッピングされており、ROM16もディスク装置1
0の記憶媒体の一部として利用される。このため、RO
M16に格納されているオペレーティングシステムやア
プリケーションプログラムの読み出しは、CPU1から
の読み出し要求が、ある特定の番地を指定している時に
のみ実行され、その他の番地を指定している時はフラッ
シュEEPROM11−1〜11−16に対するリード
アクセスが行われる。
【0030】外部バスインタフェース17は、IDEや
PCMCIA仕様に準拠したインタフェースであり、パ
ーソナルコンピュータのシステムバス2に接続される。
外部バスインタフェース17には、CPU1との通信の
ためのI/Oレジスタ群が設けられている。レジスタ群
には、セクタナンバレジスタ171、セクタカウントレ
ジスタ172、データレジスタ173、シリンダレジス
タ174、ドライブ/ヘッドレジスタ175、コマンド
レジスタ176、ステータスレジスタ177などが含ま
れている。これらレジスタは、マイクロプロセッサ14
およびパーソナルコンピュータのCPU1によってそれ
ぞれリード/ライト可能である。
PCMCIA仕様に準拠したインタフェースであり、パ
ーソナルコンピュータのシステムバス2に接続される。
外部バスインタフェース17には、CPU1との通信の
ためのI/Oレジスタ群が設けられている。レジスタ群
には、セクタナンバレジスタ171、セクタカウントレ
ジスタ172、データレジスタ173、シリンダレジス
タ174、ドライブ/ヘッドレジスタ175、コマンド
レジスタ176、ステータスレジスタ177などが含ま
れている。これらレジスタは、マイクロプロセッサ14
およびパーソナルコンピュータのCPU1によってそれ
ぞれリード/ライト可能である。
【0031】セクタナンバレジスタ171には、アクセ
ス先頭位置を指定するセクタ番号がCPU1によってラ
イトされる。セクタカウントレジスタ172には、リー
ド/ライト対象のセクタ数がCPU1によってライトさ
れる。データレジスタ173には、CPU1から供給さ
れるライトデータまたは半導体ディスク装置10から読
み出されるリードデータが設定される。シリンダレジス
タ174には、リード/ライト対象のシリンダ番号がC
PU1によってライトされる。ドライブ/ヘッドレジス
タ175には、リード/ライト対象のドライブ番号、お
よびヘッド番号がCPU1によってライトされる。コマ
ンドレジスタ176には、半導体ディスク装置10の動
作を指定するリードコマンドやライトコマンド等がCP
U1によってライトされる。ステータスレジスタ177
には、CPU1に通知すべき半導体ディスク装置10の
各種ステータスがセットされる。
ス先頭位置を指定するセクタ番号がCPU1によってラ
イトされる。セクタカウントレジスタ172には、リー
ド/ライト対象のセクタ数がCPU1によってライトさ
れる。データレジスタ173には、CPU1から供給さ
れるライトデータまたは半導体ディスク装置10から読
み出されるリードデータが設定される。シリンダレジス
タ174には、リード/ライト対象のシリンダ番号がC
PU1によってライトされる。ドライブ/ヘッドレジス
タ175には、リード/ライト対象のドライブ番号、お
よびヘッド番号がCPU1によってライトされる。コマ
ンドレジスタ176には、半導体ディスク装置10の動
作を指定するリードコマンドやライトコマンド等がCP
U1によってライトされる。ステータスレジスタ177
には、CPU1に通知すべき半導体ディスク装置10の
各種ステータスがセットされる。
【0032】バッファメモリコントローラ18は、RA
M13をアクセス制御するためのものであり、システム
バス2とRAM13間のデータ転送などを行う。データ
転送には、システムバス2とRAM13間のデータ転送
の他、RAM13とフラッシュEEPROM11−1〜
11−16間のデータ転送がある。後者のデータ転送
は、マイクロプロセッサ14によるムーブストリング命
令の実行によって行われる。
M13をアクセス制御するためのものであり、システム
バス2とRAM13間のデータ転送などを行う。データ
転送には、システムバス2とRAM13間のデータ転送
の他、RAM13とフラッシュEEPROM11−1〜
11−16間のデータ転送がある。後者のデータ転送
は、マイクロプロセッサ14によるムーブストリング命
令の実行によって行われる。
【0033】NANDバスインタフェース19は、マイ
クロプロセッサ14の制御の下にフラッシュEEPRO
M11−1〜11−16をアクセス制御するハードウェ
アロジックであり、フラッシュEEPROM11−1〜
11−16との間のデータ転送、およびフラッシュEE
PROMとの間の各種制御信号の授受を行う。このNA
NDバスインタフェース19には、マイクロプロセッサ
14によってリード/ライト可能なI/Oレジスタ群2
0と、ECC演算回路21が設けられている。ECC演
算回路21は、ECC生成のための演算およびECCチ
ェックのための演算を行う。
クロプロセッサ14の制御の下にフラッシュEEPRO
M11−1〜11−16をアクセス制御するハードウェ
アロジックであり、フラッシュEEPROM11−1〜
11−16との間のデータ転送、およびフラッシュEE
PROMとの間の各種制御信号の授受を行う。このNA
NDバスインタフェース19には、マイクロプロセッサ
14によってリード/ライト可能なI/Oレジスタ群2
0と、ECC演算回路21が設けられている。ECC演
算回路21は、ECC生成のための演算およびECCチ
ェックのための演算を行う。
【0034】I/Oレジスタ群20には、図3に示され
ているように、NANDチップナンバレジスタ201、
NANDデータリード/ライトレジスタ202、NAN
Dチップイネーブル制御レジスタ203、NANDコマ
ンドラッチイネーブル制御レジスタ204、NANDア
ドレスラッチイネーブル制御レジスタ205、ECCス
タート制御レジスタ206、ECCレディー/ビジース
テータスレジスタ207、6個のECCデータレジスタ
209〜214、および16個のNANDチップレディ
ー/ビジーステータスレジスタ215−1〜215−1
6などが含まれている。
ているように、NANDチップナンバレジスタ201、
NANDデータリード/ライトレジスタ202、NAN
Dチップイネーブル制御レジスタ203、NANDコマ
ンドラッチイネーブル制御レジスタ204、NANDア
ドレスラッチイネーブル制御レジスタ205、ECCス
タート制御レジスタ206、ECCレディー/ビジース
テータスレジスタ207、6個のECCデータレジスタ
209〜214、および16個のNANDチップレディ
ー/ビジーステータスレジスタ215−1〜215−1
6などが含まれている。
【0035】NANDチップナンバレジスタ201は、
どのNAND型フラッシュEEPROMに対して処理を
実行するかを選択するためのレジスタであり、アクセス
対象のNAND型フラッシュEEPROMのチップ番号
を示す値がプロセッサ14によってセットされる。
どのNAND型フラッシュEEPROMに対して処理を
実行するかを選択するためのレジスタであり、アクセス
対象のNAND型フラッシュEEPROMのチップ番号
を示す値がプロセッサ14によってセットされる。
【0036】NANDデータリード/ライトレジスタ2
02は、データバスを介してフラッシュEEPROMに
対するデータのリード/ライトを行うためのレジスタで
あり、フラッシュEEPROMに対するコマンドの発
行、アドレスの発行、ステータスデータのリードなどに
使用される。
02は、データバスを介してフラッシュEEPROMに
対するデータのリード/ライトを行うためのレジスタで
あり、フラッシュEEPROMに対するコマンドの発
行、アドレスの発行、ステータスデータのリードなどに
使用される。
【0037】NANDチップイネーブル制御レジスタ2
03は、フラッシュEEPROMのチップイネーブル端
子CEを制御するためのレジスタであり、チップセレク
ト信号の発生/非発生を示すフラグがプロセッサ14に
よってセットされる。ビット0にフラグ“1”がセット
されると、NANDバスインタフェース19は、NAN
Dチップナンバレジスタ201によって選択されたフラ
ッシュEEPROMのチップイネーブル端子CEをアク
ティブにするためのチップセレクト信号(CS)を発生
する。
03は、フラッシュEEPROMのチップイネーブル端
子CEを制御するためのレジスタであり、チップセレク
ト信号の発生/非発生を示すフラグがプロセッサ14に
よってセットされる。ビット0にフラグ“1”がセット
されると、NANDバスインタフェース19は、NAN
Dチップナンバレジスタ201によって選択されたフラ
ッシュEEPROMのチップイネーブル端子CEをアク
ティブにするためのチップセレクト信号(CS)を発生
する。
【0038】NANDコマンドラッチイネーブル制御レ
ジスタ204は、フラッシュEEPROMのコマンドラ
ッチイネーブル端子CLEを制御するためのレジスタで
あり、コマンドラッチイネルーブル端子CLEをアクテ
ィブにするか否かを指定するフラグがプロセッサ14に
よってセットされる。ビット0にフラグ“1”がセット
されると、フラッシュEEPROMのコマンドラッチイ
ネーブル端子CLEがNANDバスインタフェース19
によってアクティブに設定される。これにより、データ
バスにコマンドが発行されたことが、フラッシュEEP
ROMに対して通知される。
ジスタ204は、フラッシュEEPROMのコマンドラ
ッチイネーブル端子CLEを制御するためのレジスタで
あり、コマンドラッチイネルーブル端子CLEをアクテ
ィブにするか否かを指定するフラグがプロセッサ14に
よってセットされる。ビット0にフラグ“1”がセット
されると、フラッシュEEPROMのコマンドラッチイ
ネーブル端子CLEがNANDバスインタフェース19
によってアクティブに設定される。これにより、データ
バスにコマンドが発行されたことが、フラッシュEEP
ROMに対して通知される。
【0039】NANDアドレスラッチイネーブル制御レ
ジスタ205は、フラッシュEEPROMのアドレスラ
ッチイネーブル端子ALEを制御するためのレジスタで
あり、アドレスラッチイネルーブル端子ALEをアクイ
ブにするか否かを指定するフラグがプロセッサ14によ
ってセットされる。ビット0にフラグ“1”がセットさ
れると、フラッシュEEPROMのアドレスラッチイネ
ーブル端子ALEがNANDバスインタフェース19に
よってアクティブに設定される。これにより、データバ
スにアドレスが発行されたことが、フラッシュEEPR
OMに対して通知される。
ジスタ205は、フラッシュEEPROMのアドレスラ
ッチイネーブル端子ALEを制御するためのレジスタで
あり、アドレスラッチイネルーブル端子ALEをアクイ
ブにするか否かを指定するフラグがプロセッサ14によ
ってセットされる。ビット0にフラグ“1”がセットさ
れると、フラッシュEEPROMのアドレスラッチイネ
ーブル端子ALEがNANDバスインタフェース19に
よってアクティブに設定される。これにより、データバ
スにアドレスが発行されたことが、フラッシュEEPR
OMに対して通知される。
【0040】ECCスタート制御レジスタ206は、E
CC演算の実行開始を制御するためのレジスタであり、
RAM13とフラッシュEEPROM11−1〜11−
16との間のデータ転送を開始する前に、ECC演算の
実行開始を指定するフラグがプロセッサ14によってセ
ットされる。フラッシュEEPROMからRAM13へ
のデータ転送を行う時は、ビット0に“1”がセットさ
れる。この場合、ECC演算回路21は、フラッシュE
EPROMから読み出されるデータについてECCチェ
ックを行う。RAM13からフラッシュEEPROMへ
のデータ転送を行う時は、ビット0に“0”がセットさ
れる。この場合、ECC演算回路21は、RAM13か
ら転送されるデータについてECCの生成を行う。
CC演算の実行開始を制御するためのレジスタであり、
RAM13とフラッシュEEPROM11−1〜11−
16との間のデータ転送を開始する前に、ECC演算の
実行開始を指定するフラグがプロセッサ14によってセ
ットされる。フラッシュEEPROMからRAM13へ
のデータ転送を行う時は、ビット0に“1”がセットさ
れる。この場合、ECC演算回路21は、フラッシュE
EPROMから読み出されるデータについてECCチェ
ックを行う。RAM13からフラッシュEEPROMへ
のデータ転送を行う時は、ビット0に“0”がセットさ
れる。この場合、ECC演算回路21は、RAM13か
ら転送されるデータについてECCの生成を行う。
【0041】ECCレディー/ビジーステータスレジス
タ207は、ECC演算回路21によるECC演算(E
CC生成またはECCチェック)が実行中か否かを示す
ステータスレジスタである。NANDバスインタフェー
ス19は、ECC演算実行中であればビット0に“1”
のフラグをセットし、ECC演算の実行が終了すると、
ビット0に“0”のフラグをセットする。プロセッサ1
4は、RAM13とフラッシュEEPROM11−1〜
11−16との間における256バイトのデータ転送終
了後にレジスタ207のフラグを参照してECC演算処
理の終了の有無を調べ、そして終了を確認すると、次の
256バイトのデータ転送処理を開始する。
タ207は、ECC演算回路21によるECC演算(E
CC生成またはECCチェック)が実行中か否かを示す
ステータスレジスタである。NANDバスインタフェー
ス19は、ECC演算実行中であればビット0に“1”
のフラグをセットし、ECC演算の実行が終了すると、
ビット0に“0”のフラグをセットする。プロセッサ1
4は、RAM13とフラッシュEEPROM11−1〜
11−16との間における256バイトのデータ転送終
了後にレジスタ207のフラグを参照してECC演算処
理の終了の有無を調べ、そして終了を確認すると、次の
256バイトのデータ転送処理を開始する。
【0042】ECCデータレジスタ209〜214は、
6バイトのECCデータを保持するためのレジスタ群で
ある。RAM13からフラッシュEEPROMへのデー
タ転送時は、256バイトのライトデータに対応する6
バイトまたはそれ以上のECCデータがECC演算回路
21によって生成され、その生成されたECCデータが
ECCデータレジスタ209〜214にセットされる。
フラッシュEEPROMからRAM13へのデータ転送
時は、ECC演算回路21によって実行されるECCチ
ェック演算の結果がレジスタ209〜214にセットさ
れる。このECCチェック演算は、エラー検出を行うた
めに実行される。このECCチェック演算においては、
256バイトのリードデータに対応する6バイトのEC
Cデータが再度生成され、その6バイトのECCデータ
とフラッシュEEPROMから実際に読み出された6バ
イトのECCデータとの比較がバイト単位で行われる。
一致すれば“0”、不一致であれば“1”が対応するレ
ジスタのビット0にセットされる。したがって、エラー
が発生してなければ、ECCデータレジスタ209〜2
14のビット0にセットされる値は全て“0”となる。
6バイトのECCデータを保持するためのレジスタ群で
ある。RAM13からフラッシュEEPROMへのデー
タ転送時は、256バイトのライトデータに対応する6
バイトまたはそれ以上のECCデータがECC演算回路
21によって生成され、その生成されたECCデータが
ECCデータレジスタ209〜214にセットされる。
フラッシュEEPROMからRAM13へのデータ転送
時は、ECC演算回路21によって実行されるECCチ
ェック演算の結果がレジスタ209〜214にセットさ
れる。このECCチェック演算は、エラー検出を行うた
めに実行される。このECCチェック演算においては、
256バイトのリードデータに対応する6バイトのEC
Cデータが再度生成され、その6バイトのECCデータ
とフラッシュEEPROMから実際に読み出された6バ
イトのECCデータとの比較がバイト単位で行われる。
一致すれば“0”、不一致であれば“1”が対応するレ
ジスタのビット0にセットされる。したがって、エラー
が発生してなければ、ECCデータレジスタ209〜2
14のビット0にセットされる値は全て“0”となる。
【0043】NANDチップレディー/ビジーステータ
スレジスタ215−1〜215−16は、16個のフラ
ッシュEEPROM11−1〜11−16それぞれのレ
ディー/ビジーステータスを保持するレジスタ群であ
り、各レジスタのビット0には対応するフラッシュEE
PROMがレディー状態であるかビジー状態であるかを
示すフラグがNANDインタフェース19によってセッ
トされる。レディー状態ならばフラグ“1”が、ビジー
状態であれはフラグ“0”がセットされる。レディー状
態であるかビジー状態であるかは、フラッシュEEPR
OM11−1〜11−16からそれぞれ独立して入力さ
れるレディー/ビジー信号(R/B1〜R/B16)に
よってチップ毎に判定される。
スレジスタ215−1〜215−16は、16個のフラ
ッシュEEPROM11−1〜11−16それぞれのレ
ディー/ビジーステータスを保持するレジスタ群であ
り、各レジスタのビット0には対応するフラッシュEE
PROMがレディー状態であるかビジー状態であるかを
示すフラグがNANDインタフェース19によってセッ
トされる。レディー状態ならばフラグ“1”が、ビジー
状態であれはフラグ“0”がセットされる。レディー状
態であるかビジー状態であるかは、フラッシュEEPR
OM11−1〜11−16からそれぞれ独立して入力さ
れるレディー/ビジー信号(R/B1〜R/B16)に
よってチップ毎に判定される。
【0044】図1のRAM13はダイナミックRAMか
ら構成されており、その記憶領域の一部はパーソナルコ
ンピュータのCPU1から転送されるライトデータ、お
よびフラッシュEEPROM11−1〜11−16から
読み出されるリードデータを保持するデータバッファ1
31として使用される。また、RAM13は、マイクロ
プロセッサ14の作業領域として使用され、ここには、
ホストアドレスをメモリアドレスに変換するためのアド
レス変換テーブル132、フラッシュEEPROMに書
き込むべき1ブロック分のブロックデータの格納位置を
管理するヘッダテーブル133、フラッシュEEPRO
M11−1〜11−16の書換回数をブロック単位で管
理するための書換回数管理テーブル134などが格納さ
れる。
ら構成されており、その記憶領域の一部はパーソナルコ
ンピュータのCPU1から転送されるライトデータ、お
よびフラッシュEEPROM11−1〜11−16から
読み出されるリードデータを保持するデータバッファ1
31として使用される。また、RAM13は、マイクロ
プロセッサ14の作業領域として使用され、ここには、
ホストアドレスをメモリアドレスに変換するためのアド
レス変換テーブル132、フラッシュEEPROMに書
き込むべき1ブロック分のブロックデータの格納位置を
管理するヘッダテーブル133、フラッシュEEPRO
M11−1〜11−16の書換回数をブロック単位で管
理するための書換回数管理テーブル134などが格納さ
れる。
【0045】次に、図4を参照して、マイクロプロセッ
サ14によって管理される半導体ディスク装置10内の
メモリマップについて説明する。
サ14によって管理される半導体ディスク装置10内の
メモリマップについて説明する。
【0046】マイクロプロセッサ14が管理するメモリ
アドレス空間には、図示のように、RAM領域、NAN
Dメモリデータ領域、アプリケーションROM(APL
−ROM)領域、およびファームウェアROM(FW−
ROM)領域がマッピングされている。
アドレス空間には、図示のように、RAM領域、NAN
Dメモリデータ領域、アプリケーションROM(APL
−ROM)領域、およびファームウェアROM(FW−
ROM)領域がマッピングされている。
【0047】RAM領域はRAM13をアクセスするた
めのメモリアドレス空間であり、ここにはデータバッフ
ァ131などが割り当てられている。
めのメモリアドレス空間であり、ここにはデータバッフ
ァ131などが割り当てられている。
【0048】NANDメモリデータ領域は、フラッシュ
EEPROM11−1〜11−16をアクセスするため
の256バイトのアドレス空間である。フラッシュEE
PROM11−1〜11−16に対するデータのリード
/ライトアクセスにおいては、マイクロプロセッサ14
のムーブストリング命令によって256バイトのデータ
転送が行われる。このため、この256バイトのデータ
転送のために、256バイトのアドレス空間がNAND
メモリデータ領域として確保されている。このNAND
メモリデータ領域を使用する事により、データバッファ
131とフラッシュEEPROM11−1〜11−16
との間のデータ転送は全てファームウェアの処理として
行う事ができる。
EEPROM11−1〜11−16をアクセスするため
の256バイトのアドレス空間である。フラッシュEE
PROM11−1〜11−16に対するデータのリード
/ライトアクセスにおいては、マイクロプロセッサ14
のムーブストリング命令によって256バイトのデータ
転送が行われる。このため、この256バイトのデータ
転送のために、256バイトのアドレス空間がNAND
メモリデータ領域として確保されている。このNAND
メモリデータ領域を使用する事により、データバッファ
131とフラッシュEEPROM11−1〜11−16
との間のデータ転送は全てファームウェアの処理として
行う事ができる。
【0049】次に、図5を参照して、フラッシュEEP
ROM11−1〜11−16それぞれのブロックの利用
形態について説明する。
ROM11−1〜11−16それぞれのブロックの利用
形態について説明する。
【0050】フラッシュEEPROM11−1〜11−
16のブロックはユーザデータの格納だけでなく、これ
らフラッシュEEPROMを制御するための各種管理情
報の格納にも利用されている。フラッシュEEPROM
11−1〜11−16に対するユーザデータと管理情報
の割り当ては以下の通りである。
16のブロックはユーザデータの格納だけでなく、これ
らフラッシュEEPROMを制御するための各種管理情
報の格納にも利用されている。フラッシュEEPROM
11−1〜11−16に対するユーザデータと管理情報
の割り当ては以下の通りである。
【0051】すなわち、チップ番号#0のNAND型フ
ラッシュEEPROM11−1においては、図示のよう
に、512個のブロックの中でブロック0〜ブロック4
99の500個のブロックは、ユーザデータを格納する
ためのメモリブロックとして利用される。また、ブロッ
ク500〜503は、書き換え回数を記述するための書
き換え回数記述ブロックとして使用される。ブロック5
04は、チップ内の512個のブロックのアドレスやス
ワッピングのために使用する情報などを管理するための
管理情報を記憶するMBI(Memory Block
Infomation)テーブルブロックとしてを利
用される。また、ブロック505〜509は、メモリブ
ロックおよびMBIテーブルブロックに不良が発生した
時にその代替用の予備ブロックとして使用される。ブロ
ック511は半導体ディスク装置10の構成情報を記憶
するコンフィグブロックとして使用され、ブロック51
0はコンフィグブロックの代替用の予備ブロックとして
使用される。
ラッシュEEPROM11−1においては、図示のよう
に、512個のブロックの中でブロック0〜ブロック4
99の500個のブロックは、ユーザデータを格納する
ためのメモリブロックとして利用される。また、ブロッ
ク500〜503は、書き換え回数を記述するための書
き換え回数記述ブロックとして使用される。ブロック5
04は、チップ内の512個のブロックのアドレスやス
ワッピングのために使用する情報などを管理するための
管理情報を記憶するMBI(Memory Block
Infomation)テーブルブロックとしてを利
用される。また、ブロック505〜509は、メモリブ
ロックおよびMBIテーブルブロックに不良が発生した
時にその代替用の予備ブロックとして使用される。ブロ
ック511は半導体ディスク装置10の構成情報を記憶
するコンフィグブロックとして使用され、ブロック51
0はコンフィグブロックの代替用の予備ブロックとして
使用される。
【0052】コンフィグブロックは装置10全体で1個
だけ存在し、ここには、半導体ディスク装置10に搭載
されているフラッシュEEPROMのチップ数や、各フ
ラッシュEEPROMにおけるMBIテーブルブロック
の存在位置などを示す情報などが管理されている。
だけ存在し、ここには、半導体ディスク装置10に搭載
されているフラッシュEEPROMのチップ数や、各フ
ラッシュEEPROMにおけるMBIテーブルブロック
の存在位置などを示す情報などが管理されている。
【0053】メモリブロック、書き換え回数記述ブロッ
ク、MBIテーブルブロック、代替ブロック、コンヒィ
グブロックそれぞれの物理的なブロック構造は図2で説
明した通りであるが、以下、それらブロック内のデータ
格納形式について説明する。
ク、MBIテーブルブロック、代替ブロック、コンヒィ
グブロックそれぞれの物理的なブロック構造は図2で説
明した通りであるが、以下、それらブロック内のデータ
格納形式について説明する。
【0054】図6には、ユーザデータを格納するための
メモリブロックのデータ格納形式が示されている。
メモリブロックのデータ格納形式が示されている。
【0055】図2で説明したように、この半導体ディス
ク装置10で使用されるNAND型フラッシュEEPR
OMは16Mビットのチップであり、各ブロックは、ペ
ージ0からページ15までの16ページから構成されて
いる。各ページは、256バイトのデータ領域と8バイ
トの冗長領域とから構成されている。
ク装置10で使用されるNAND型フラッシュEEPR
OMは16Mビットのチップであり、各ブロックは、ペ
ージ0からページ15までの16ページから構成されて
いる。各ページは、256バイトのデータ領域と8バイ
トの冗長領域とから構成されている。
【0056】一般に、ホストシステムによるディスクア
クセスは512バイトのセクタ単位で行われる。この場
合、各ページのデータ領域に格納される256バイトの
ユーザデータのサイズは、1セクタ分のユーザデータサ
イズの半分となる。この半導体ディスク装置10におい
ては、ユーザデータの格納には256バイトのデータ領
域だけが使用され、8バイトの冗長領域はユーザデータ
の格納には利用されない。したがって、この半導体ディ
スク装置10においては、512バイトのユーザデータ
は、ブロック内の連続する2ページに亙って格納され
る。このため、1ブロックに格納されるユーザデータ
は、8セクタ分のデータ、例えば、セクタ0からセクタ
7までのデータとなる。
クセスは512バイトのセクタ単位で行われる。この場
合、各ページのデータ領域に格納される256バイトの
ユーザデータのサイズは、1セクタ分のユーザデータサ
イズの半分となる。この半導体ディスク装置10におい
ては、ユーザデータの格納には256バイトのデータ領
域だけが使用され、8バイトの冗長領域はユーザデータ
の格納には利用されない。したがって、この半導体ディ
スク装置10においては、512バイトのユーザデータ
は、ブロック内の連続する2ページに亙って格納され
る。このため、1ブロックに格納されるユーザデータ
は、8セクタ分のデータ、例えば、セクタ0からセクタ
7までのデータとなる。
【0057】すなわち、図5に示されているように、ペ
ージ0にはセクタ0の前半の256バイト、ページ1に
はセクタ0の後半の256バイト、ページ2にはセクタ
1の前半の256バイト、ページ3にはセクタ1の後半
の256バイトが格納され、以下同様にして、1/2セ
クタ単位でユーザデータが格納される。
ージ0にはセクタ0の前半の256バイト、ページ1に
はセクタ0の後半の256バイト、ページ2にはセクタ
1の前半の256バイト、ページ3にはセクタ1の後半
の256バイトが格納され、以下同様にして、1/2セ
クタ単位でユーザデータが格納される。
【0058】ページ0〜15それぞれの8バイトの冗長
領域は、2バイトの領域と6バイトの領域に分割されて
おり、その6バイトの領域にはECCが格納される。こ
のECCは、同一ページのデータ領域に格納されている
256バイトのユーザデータに対応するものである。
領域は、2バイトの領域と6バイトの領域に分割されて
おり、その6バイトの領域にはECCが格納される。こ
のECCは、同一ページのデータ領域に格納されている
256バイトのユーザデータに対応するものである。
【0059】すなわち、ページ0の冗長領域に格納され
ているECCは、ページ0のデータ領域に格納されてい
る256バイトのユーザデータから生成されたものであ
り、同様に、ページ1の冗長領域に格納されているEC
Cは、ページ1のデータ領域に格納されている256バ
イトのユーザデータから生成されたものである。
ているECCは、ページ0のデータ領域に格納されてい
る256バイトのユーザデータから生成されたものであ
り、同様に、ページ1の冗長領域に格納されているEC
Cは、ページ1のデータ領域に格納されている256バ
イトのユーザデータから生成されたものである。
【0060】このように、この半導体ディスク装置10
においては、512バイトのセクタ単位ではなく256
バイトのページ単位でECCが生成され、演算対象のデ
ータ列とECCとが同一ページに格納される。このた
め、たとえ、図示のようにフラッシュEEPROMの複
数ページそれぞれの同一ビット位置に不良セルが発生す
るというエラーが発生しても、ECCの演算対象となる
データ列に含まれる不良セルは1つだけとなる。したが
って、データ回復能力の高い複雑なECC演算式を利用
することなく通常の簡単なECC演算によってエラー検
出および訂正を行うことが可能となる。
においては、512バイトのセクタ単位ではなく256
バイトのページ単位でECCが生成され、演算対象のデ
ータ列とECCとが同一ページに格納される。このた
め、たとえ、図示のようにフラッシュEEPROMの複
数ページそれぞれの同一ビット位置に不良セルが発生す
るというエラーが発生しても、ECCの演算対象となる
データ列に含まれる不良セルは1つだけとなる。したが
って、データ回復能力の高い複雑なECC演算式を利用
することなく通常の簡単なECC演算によってエラー検
出および訂正を行うことが可能となる。
【0061】また、ページ1の冗長領域の残りの2バイ
トには、セクタ0のセクタステータス情報として、BA
Dセクタ情報、およびECCエラー情報が格納されてい
る。
トには、セクタ0のセクタステータス情報として、BA
Dセクタ情報、およびECCエラー情報が格納されてい
る。
【0062】BADセクタ情報は、そのセクタ0が不良
セクタか否かを示すステータス情報である。同様に、ペ
ージ3、ページ5、……ページ15それぞれの冗長領域
の残りの2バイトにも、セクタ1、セクタ2、……セク
タ7それぞれに対応するBADセクタ情報が格納されて
いる。これらBADセクタ情報は、半導体ディスク装置
10のホストシステムであるパーソナルコンピュータ
が、半導体ディスク装置10をフォーマッティングする
ためのフォーマットコマンドを実行する時に、そのパー
ソナルコンピュータのCPU1によって与えられる。
セクタか否かを示すステータス情報である。同様に、ペ
ージ3、ページ5、……ページ15それぞれの冗長領域
の残りの2バイトにも、セクタ1、セクタ2、……セク
タ7それぞれに対応するBADセクタ情報が格納されて
いる。これらBADセクタ情報は、半導体ディスク装置
10のホストシステムであるパーソナルコンピュータ
が、半導体ディスク装置10をフォーマッティングする
ためのフォーマットコマンドを実行する時に、そのパー
ソナルコンピュータのCPU1によって与えられる。
【0063】ECCエラー情報は、そのセクタに対する
ECCエラー発生の有無を示すステータス情報である。
このECCエラー情報は、例えば、パーソナルコンピュ
ータがWRITE LONGコマンドによるデータ書込
みを行った場合においてECCエラーとなるバーストエ
ラーなどのエラ−が発生した時に、パーソナルコンピュ
ータのCPU1によって与えられる。
ECCエラー発生の有無を示すステータス情報である。
このECCエラー情報は、例えば、パーソナルコンピュ
ータがWRITE LONGコマンドによるデータ書込
みを行った場合においてECCエラーとなるバーストエ
ラーなどのエラ−が発生した時に、パーソナルコンピュ
ータのCPU1によって与えられる。
【0064】次に、図7を参照して、MBIテーブルブ
ロックのデータ格納形式を説明する。
ロックのデータ格納形式を説明する。
【0065】MBIテーブルブロックは、ページ0から
ページ15までの16ページを含む1個のブロックから
構成されている。各ページは、256バイトのデータ領
域と8バイトの冗長領域とから構成されている。8バイ
トの冗長領域のうちの後の6バイトには、そのページの
データ領域に格納されている256バイトのデータに対
応するECCが格納されている。また、冗長領域の先頭
の2バイトは未使用である。
ページ15までの16ページを含む1個のブロックから
構成されている。各ページは、256バイトのデータ領
域と8バイトの冗長領域とから構成されている。8バイ
トの冗長領域のうちの後の6バイトには、そのページの
データ領域に格納されている256バイトのデータに対
応するECCが格納されている。また、冗長領域の先頭
の2バイトは未使用である。
【0066】MBIテーブルブロックのデータ領域に
は、図示のように、アドレス変換テーブル、UWCテー
ブル、およびスワップオーダーテーブルが格納されてい
る。
は、図示のように、アドレス変換テーブル、UWCテー
ブル、およびスワップオーダーテーブルが格納されてい
る。
【0067】MBIテーブルブロックにおけるアドレス
変換テーブルは、チップ内のブロック0〜511の物理
ブロックアドレス0〜511を、シリンダ番号、ヘッド
番号およびセクタ番号によって規定されるホストアドレ
スに変換するためのアドレス変換情報を保持する。ホス
トアドレスは、物理ブロックアドレス順に格納されてい
る。
変換テーブルは、チップ内のブロック0〜511の物理
ブロックアドレス0〜511を、シリンダ番号、ヘッド
番号およびセクタ番号によって規定されるホストアドレ
スに変換するためのアドレス変換情報を保持する。ホス
トアドレスは、物理ブロックアドレス順に格納されてい
る。
【0068】ここで、MBIテーブルブロックにおける
ホストアドレスの値としては、ホストシステムから与え
られるシリンダ番号、ヘッド番号およびセクタ番号その
ものではなく、それらシリンダ番号、ヘッド番号および
セクタ番号から計算されたホスト論理アドレスが使用さ
れる。
ホストアドレスの値としては、ホストシステムから与え
られるシリンダ番号、ヘッド番号およびセクタ番号その
ものではなく、それらシリンダ番号、ヘッド番号および
セクタ番号から計算されたホスト論理アドレスが使用さ
れる。
【0069】このホスト論理アドレスは、フラッシュE
EPROM11−1〜11−16に設けられる全セクタ
(=8×512×16セクタ)に対して“0”から順に
連続するセクタ番号を割り当てた場合のセクタの通し番
号である。したがって、ホスト論理アドレスのビット幅
は、16ビットとなる。しかし、このMBIテーブルブ
ロックのアドレス変換テーブルで管理されるアドレス変
換情報は、1セクタ単位では無く、1ブロックに含まれ
るセクタ数である8セクタ単位でアドレス変換を行うた
めのものであるので、実際には、16ビットのホスト論
理アドレスのなかの上位13ビットだけがテーブル上に
格納されている。
EPROM11−1〜11−16に設けられる全セクタ
(=8×512×16セクタ)に対して“0”から順に
連続するセクタ番号を割り当てた場合のセクタの通し番
号である。したがって、ホスト論理アドレスのビット幅
は、16ビットとなる。しかし、このMBIテーブルブ
ロックのアドレス変換テーブルで管理されるアドレス変
換情報は、1セクタ単位では無く、1ブロックに含まれ
るセクタ数である8セクタ単位でアドレス変換を行うた
めのものであるので、実際には、16ビットのホスト論
理アドレスのなかの上位13ビットだけがテーブル上に
格納されている。
【0070】UWCテーブルは、チップ内の512個の
ブロックそれぞれの書換回数を示す書換回数データの上
位ビット部から構成されるUWC(UPPER WRI
TECOUNT)データを保持する。UWCデータは1
6ビット幅を有しており、このUWCデータと下位10
ビットのLWC(LOW WRITE COUNT)デ
ータとを合わせると、最大で6400万回数の書換まで
カウントする事ができる。UWCデータの値は、対応す
るLWCデータに桁上がりが発生する度、つまり102
4回の書換が発生する度に、+1カウントアップされ
る。
ブロックそれぞれの書換回数を示す書換回数データの上
位ビット部から構成されるUWC(UPPER WRI
TECOUNT)データを保持する。UWCデータは1
6ビット幅を有しており、このUWCデータと下位10
ビットのLWC(LOW WRITE COUNT)デ
ータとを合わせると、最大で6400万回数の書換まで
カウントする事ができる。UWCデータの値は、対応す
るLWCデータに桁上がりが発生する度、つまり102
4回の書換が発生する度に、+1カウントアップされ
る。
【0071】これらアドレス変換テーブルおよびUWC
テーブルは、図示のように、MBIテーブルブロックの
ページ5からページ12のデータ領域に格納されてい
る。アドレス変換テーブルおよびUWCテーブルは、装
置起動時、つまり半導体ディスク装置10のパワーオン
時に、RAM13に転送されて、それぞれアドレス変換
テーブル132および書換回数管理テーブル134とし
て常駐される。
テーブルは、図示のように、MBIテーブルブロックの
ページ5からページ12のデータ領域に格納されてい
る。アドレス変換テーブルおよびUWCテーブルは、装
置起動時、つまり半導体ディスク装置10のパワーオン
時に、RAM13に転送されて、それぞれアドレス変換
テーブル132および書換回数管理テーブル134とし
て常駐される。
【0072】スワップオーダーテーブルは、ブロック入
れ替えのためのスワッピング操作の際にマイクロプロセ
ッサ14によって参照されるテーブルであり、スワッピ
ング先のブロック(被スワップブロック)を示すブロッ
クアドレスを、優先度順(UWCデータの値が小さい
順)に保持している。スワップオーダーテーブルは、図
示のように、MBIテーブルブロックのページ13から
ページ15のデータ領域に格納されている。スワップオ
ーダーテーブルは、RAM13には常駐されず、ブロッ
ク入れ替えの検討時、つまりLWCデータからUWCデ
ータへの桁上がり発生時に、RAM13に転送されてマ
イクロプロセッサ14によって参照される。
れ替えのためのスワッピング操作の際にマイクロプロセ
ッサ14によって参照されるテーブルであり、スワッピ
ング先のブロック(被スワップブロック)を示すブロッ
クアドレスを、優先度順(UWCデータの値が小さい
順)に保持している。スワップオーダーテーブルは、図
示のように、MBIテーブルブロックのページ13から
ページ15のデータ領域に格納されている。スワップオ
ーダーテーブルは、RAM13には常駐されず、ブロッ
ク入れ替えの検討時、つまりLWCデータからUWCデ
ータへの桁上がり発生時に、RAM13に転送されてマ
イクロプロセッサ14によって参照される。
【0073】図8には、アドレス変換テーブルとUWC
テーブルの構成が示されている。
テーブルの構成が示されている。
【0074】図示のように、ホストアドレスとUWCデ
ータの格納領域はそれぞれ2バイトのデータサイズを有
している。ここで、ホストアドレスは前述したように1
3ビットであるので、2バイトの格納領域の上位3ビッ
ト(ビット15〜ビット13)は使用されない。ホスト
アドレスとUWCデータは、物理ブロックアドレス順に
交互に配置されている。
ータの格納領域はそれぞれ2バイトのデータサイズを有
している。ここで、ホストアドレスは前述したように1
3ビットであるので、2バイトの格納領域の上位3ビッ
ト(ビット15〜ビット13)は使用されない。ホスト
アドレスとUWCデータは、物理ブロックアドレス順に
交互に配置されている。
【0075】すなわち、MBIテーブルブロックにおけ
るページ5の256バイトのデータ領域には、その先頭
から順に、物理ブロックアドレス0に対応するホストア
ドレス、物理ブロックアドレス0に対応するUWCデー
タ、物理ブロックアドレス1に対応するホストアドレ
ス、物理ブロックアドレス1に対応するUWCデータと
いった順番で、ホストアドレスとUWCデータが64個
のブロック(ブロック0〜ブロック63)分格納されて
いる。
るページ5の256バイトのデータ領域には、その先頭
から順に、物理ブロックアドレス0に対応するホストア
ドレス、物理ブロックアドレス0に対応するUWCデー
タ、物理ブロックアドレス1に対応するホストアドレ
ス、物理ブロックアドレス1に対応するUWCデータと
いった順番で、ホストアドレスとUWCデータが64個
のブロック(ブロック0〜ブロック63)分格納されて
いる。
【0076】同様にして、ページ12の256バイトの
データ領域には、その先頭から順に、物理ブロックアド
レス448に対応するホストアドレス、物理ブロックア
ドレス448に対応するUWCデータ、物理ブロックア
ドレス449に対応するホストアドレス、物理ブロック
アドレス449に対応するUWCデータといった順番
で、ホストアドレスとUWCデータが64個のブロック
(ブロック448〜ブロック511)分格納されてい
る。
データ領域には、その先頭から順に、物理ブロックアド
レス448に対応するホストアドレス、物理ブロックア
ドレス448に対応するUWCデータ、物理ブロックア
ドレス449に対応するホストアドレス、物理ブロック
アドレス449に対応するUWCデータといった順番
で、ホストアドレスとUWCデータが64個のブロック
(ブロック448〜ブロック511)分格納されてい
る。
【0077】図9には、スワップオーダーテーブルの構
成が示されている。
成が示されている。
【0078】スワップオーダーテーブルは、ブロック0
からブロック255までの前半の256個のブロックに
対応する第1オ−ダーテーブルと、ブロック256から
ブロック511までの後半の256個のブロックに対応
する第2オ−ダーテーブルとに分割されている。
からブロック255までの前半の256個のブロックに
対応する第1オ−ダーテーブルと、ブロック256から
ブロック511までの後半の256個のブロックに対応
する第2オ−ダーテーブルとに分割されている。
【0079】第1オーダーテーブルにおいて、その先頭
の2バイトの領域(アドレス800h,801h)に
は、ブロック0からブロック255の中の最小のUWC
の値が格納されている。
の2バイトの領域(アドレス800h,801h)に
は、ブロック0からブロック255の中の最小のUWC
の値が格納されている。
【0080】次の1バイト(アドレス802h)には、
最小UWCの値を持つブロックの総数を示す値が格納さ
れる。
最小UWCの値を持つブロックの総数を示す値が格納さ
れる。
【0081】さらに、次の1バイト(アドレス803
h)には、最小UWC+1の値を持つブロックの総数を
示す値が格納される。ここで、“最小UWC+1”と
は、あくまでも最小UWCに1を加えた値を示してお
り、最小UWCの次に小さなUWCを示すものではな
い。最小UWC+1の値を持つブロック総数がゼロとな
る場合もある。
h)には、最小UWC+1の値を持つブロックの総数を
示す値が格納される。ここで、“最小UWC+1”と
は、あくまでも最小UWCに1を加えた値を示してお
り、最小UWCの次に小さなUWCを示すものではな
い。最小UWC+1の値を持つブロック総数がゼロとな
る場合もある。
【0082】以降、アドレス804h〜87Ahには、
最小UWC+2の値を持つブロック総数を示すデータか
ら最小UWC+120の値を持つブロック総数を示すデ
ータが順次格納される。
最小UWC+2の値を持つブロック総数を示すデータか
ら最小UWC+120の値を持つブロック総数を示すデ
ータが順次格納される。
【0083】アドレス87Ch〜87Fhには、MBI
テーブルブロック自体の書換回数を示すデータなどが格
納される。
テーブルブロック自体の書換回数を示すデータなどが格
納される。
【0084】アドレス880h〜97Fhには、本来の
スワップオーダーテーブルとしての情報が格納されてい
る。すなわち、アドレス880hには、ブロック0〜ブ
ロック255の中で最優先度の被スワップ対象のブロッ
クを示す値として、最小UWCの値を有するブロックの
物理ブロックアドレスが格納されている。最小UWCの
値を有するブロックが複数存在する場合には、物理ブロ
ックアドレスが最も後ろのブロックから順に優先順位が
高くなる。以下、同様にして、アドレス881hから9
7Fhに、優先度順にスワップ対象ブロックのブロック
アドレスが格納される。
スワップオーダーテーブルとしての情報が格納されてい
る。すなわち、アドレス880hには、ブロック0〜ブ
ロック255の中で最優先度の被スワップ対象のブロッ
クを示す値として、最小UWCの値を有するブロックの
物理ブロックアドレスが格納されている。最小UWCの
値を有するブロックが複数存在する場合には、物理ブロ
ックアドレスが最も後ろのブロックから順に優先順位が
高くなる。以下、同様にして、アドレス881hから9
7Fhに、優先度順にスワップ対象ブロックのブロック
アドレスが格納される。
【0085】次に、第2オーダーテーブルについて説明
する。
する。
【0086】第2オーダーテーブルおいて、その先頭の
2バイトの領域(アドレス980h,981h)には、
MBIテーブルブロック、代替ブロック、コンヒィグブ
ロックを除き、ブロック256からブロック511の中
の最小のUWCの値が格納されている。すなわち、代替
ブロック等は書換回数が全く進行していないので、それ
らブロックの書き替え回数は無視される。また、実際に
代替が発生した場合は、その代替ブロックのUWCデー
タの値は、その代替ブロックの実際の書換回数ではな
く、代替元、つまり欠陥ブロックのUWCを譲り受ける
こととする。これは、スワッピング操作の多発による性
能低下を防止するためである。もし、代替ブロックの実
際のUWCデータの値をそのまま採用すると、書換回数
の値が突出して小さなブロックがいきなり登場すること
になり、その代替ブロックをスワッピング被対象とする
スワッピング操作が何度も発生されてしまうことにな
る。
2バイトの領域(アドレス980h,981h)には、
MBIテーブルブロック、代替ブロック、コンヒィグブ
ロックを除き、ブロック256からブロック511の中
の最小のUWCの値が格納されている。すなわち、代替
ブロック等は書換回数が全く進行していないので、それ
らブロックの書き替え回数は無視される。また、実際に
代替が発生した場合は、その代替ブロックのUWCデー
タの値は、その代替ブロックの実際の書換回数ではな
く、代替元、つまり欠陥ブロックのUWCを譲り受ける
こととする。これは、スワッピング操作の多発による性
能低下を防止するためである。もし、代替ブロックの実
際のUWCデータの値をそのまま採用すると、書換回数
の値が突出して小さなブロックがいきなり登場すること
になり、その代替ブロックをスワッピング被対象とする
スワッピング操作が何度も発生されてしまうことにな
る。
【0087】次の1バイト(アドレス982h)には、
最小UWCの値を持つブロックの総数を示す値が格納さ
れる。
最小UWCの値を持つブロックの総数を示す値が格納さ
れる。
【0088】さらに、次の1バイト(アドレス983
h)には、最小UWC+1の値を持つブロックの総数を
示す値が格納される。以降、アドレス984h〜9FA
hには、最小UWC+2の値を持つブロック総数を示す
データから最小UWC+120の値を持つブロック総数
を示すデータが順次格納される。
h)には、最小UWC+1の値を持つブロックの総数を
示す値が格納される。以降、アドレス984h〜9FA
hには、最小UWC+2の値を持つブロック総数を示す
データから最小UWC+120の値を持つブロック総数
を示すデータが順次格納される。
【0089】アドレスA00h〜AFFhには、本来の
スワップオーダーテーブルとしての情報が格納されてい
る。すなわち、アドレスA00hには、ブロック256
〜ブロック511の中で最優先度の被スワップ対象のブ
ロックを示す値として、最小UWCの値を有するブロッ
クの物理ブロックアドレスが格納されている。最小UW
Cの値を有するブロックが複数存在する場合には、物理
ブロックアドレスが最も後ろのブロックから順に優先順
位が高くなる。以下、同様にして、アドレスA01hか
らAFFhに、優先度順にスワップ対象ブロックのブロ
ックアドレスが格納される。
スワップオーダーテーブルとしての情報が格納されてい
る。すなわち、アドレスA00hには、ブロック256
〜ブロック511の中で最優先度の被スワップ対象のブ
ロックを示す値として、最小UWCの値を有するブロッ
クの物理ブロックアドレスが格納されている。最小UW
Cの値を有するブロックが複数存在する場合には、物理
ブロックアドレスが最も後ろのブロックから順に優先順
位が高くなる。以下、同様にして、アドレスA01hか
らAFFhに、優先度順にスワップ対象ブロックのブロ
ックアドレスが格納される。
【0090】このように、スワップオーダーテーブルに
おいては、スワッピング先となるブロックがその優先度
順に格納されている。このため、このスワップオーダー
テーブルを参照する事により、マイクロプロセッサ14
は、UWCデータのソーティングを行うことなく、スワ
ッピング先を特定する事が可能となる。
おいては、スワッピング先となるブロックがその優先度
順に格納されている。このため、このスワップオーダー
テーブルを参照する事により、マイクロプロセッサ14
は、UWCデータのソーティングを行うことなく、スワ
ッピング先を特定する事が可能となる。
【0091】図10には、コンヒィグブロックのデータ
格納形式が示されている。
格納形式が示されている。
【0092】コンヒィグブロックは、ページ0からペー
ジ15までの16ページを含む1個のブロックから構成
されている。各ページは、256バイトのデータ領域と
8バイトの冗長領域とから構成されている。8バイトの
冗長領域のうちの6バイトには、そのページのデータ領
域に格納されている256バイトのデータに対応するE
CCが格納されている。また、冗長領域の残りの2バイ
トは未使用である。
ジ15までの16ページを含む1個のブロックから構成
されている。各ページは、256バイトのデータ領域と
8バイトの冗長領域とから構成されている。8バイトの
冗長領域のうちの6バイトには、そのページのデータ領
域に格納されている256バイトのデータに対応するE
CCが格納されている。また、冗長領域の残りの2バイ
トは未使用である。
【0093】コンヒィグブロックのデータ領域には、図
示のように、コンヒィグ情報、CIS情報、ドライブI
D情報が格納されている。
示のように、コンヒィグ情報、CIS情報、ドライブI
D情報が格納されている。
【0094】コンヒィグ情報は、この半導体ディスク装
置10に搭載されているフラッシュEEPROMのチッ
プ数、同時書込み可能な最大チップ数、各チップにおけ
るMBIテーブルブロックの存在位置を示す物理ブロッ
クアドレスなどを定義する。このコンヒィグ情報は半導
体ディスク装置10のパワーオン時にマイクロプロセッ
サ14によって参照され、そのコンヒィグ情報に従った
初期設定処理が行われる。
置10に搭載されているフラッシュEEPROMのチッ
プ数、同時書込み可能な最大チップ数、各チップにおけ
るMBIテーブルブロックの存在位置を示す物理ブロッ
クアドレスなどを定義する。このコンヒィグ情報は半導
体ディスク装置10のパワーオン時にマイクロプロセッ
サ14によって参照され、そのコンヒィグ情報に従った
初期設定処理が行われる。
【0095】CIS情報は、半導体ディスク装置10を
PCMCIA仕様のカードとして使用する場合に、ホス
トシステムに通知されるカード属性情報である。このカ
ード属性情報には、メモリチップの種類、容量、アクセ
スタイムなどの物理的仕様に関する情報と、このカード
がディスク装置であることなどを示す用途に関する情報
が定義されている。このCIS情報は、半導体ディスク
装置10のパワーオン時に、マイクロプロセッサ14に
よってRAM13に転送される。RAM13に転送され
たCIS情報は、ホストシステムからの所定番地の読み
出し要求に応答してホストシステムに転送される。
PCMCIA仕様のカードとして使用する場合に、ホス
トシステムに通知されるカード属性情報である。このカ
ード属性情報には、メモリチップの種類、容量、アクセ
スタイムなどの物理的仕様に関する情報と、このカード
がディスク装置であることなどを示す用途に関する情報
が定義されている。このCIS情報は、半導体ディスク
装置10のパワーオン時に、マイクロプロセッサ14に
よってRAM13に転送される。RAM13に転送され
たCIS情報は、ホストシステムからの所定番地の読み
出し要求に応答してホストシステムに転送される。
【0096】ドライブID情報は、半導体ディスク装置
10のドライブ構成を示す情報であり、ここには、内蔵
フラッシュEEPROMに論理的に割り当てられる総セ
クタ数、シリンダ数、ヘッド数、1トラック当たりのセ
クタ数などが定義されている。このドライブID情報
は、ホストシステムからのドライブ識別コマンドに応答
して、マイクロプロセッサ14によってホストシステム
に転送される。
10のドライブ構成を示す情報であり、ここには、内蔵
フラッシュEEPROMに論理的に割り当てられる総セ
クタ数、シリンダ数、ヘッド数、1トラック当たりのセ
クタ数などが定義されている。このドライブID情報
は、ホストシステムからのドライブ識別コマンドに応答
して、マイクロプロセッサ14によってホストシステム
に転送される。
【0097】このように、この実施例においては、ユー
ザデータを格納するためのメモリブロックだけでなく、
管理情報格納のために使用されるMBIテーブルブロッ
クやコンヒィグブロックにおいても、各ページの冗長領
域には、そのページのデータ領域に格納されるデータに
対応したECCが格納されている。したがって、これら
MBIテーブルブロックおよびコンヒィグブロックにお
いても、データ回復能力の高い複雑なECC演算式を利
用することなく通常の簡単なECC演算によってエラー
検出および訂正を行うことが可能となる。
ザデータを格納するためのメモリブロックだけでなく、
管理情報格納のために使用されるMBIテーブルブロッ
クやコンヒィグブロックにおいても、各ページの冗長領
域には、そのページのデータ領域に格納されるデータに
対応したECCが格納されている。したがって、これら
MBIテーブルブロックおよびコンヒィグブロックにお
いても、データ回復能力の高い複雑なECC演算式を利
用することなく通常の簡単なECC演算によってエラー
検出および訂正を行うことが可能となる。
【0098】次に、図11を参照して、書き換え回数記
述ブロックを説明する。
述ブロックを説明する。
【0099】最初に書換回数を記述する書き換え回数テ
ーブルの構成について説明する。
ーブルの構成について説明する。
【0100】書き換え回数テーブル1個で32個のブロ
ックの書換回数を記述する。1個の書換回数記述用のブ
ロックに4個の書き換え回数テーブルが含まれる。従っ
て、1個の書換回数記述ブロックで128個のブロック
の書換回数が管理される。
ックの書換回数を記述する。1個の書換回数記述用のブ
ロックに4個の書き換え回数テーブルが含まれる。従っ
て、1個の書換回数記述ブロックで128個のブロック
の書換回数が管理される。
【0101】1個のチップには4個の書換回数記述ブロ
ックが用意されているので、合計512個のブロックの
書換回数が管理できる。
ックが用意されているので、合計512個のブロックの
書換回数が管理できる。
【0102】書き換え回数テーブル1個は1ページの大
きさを持つ。書き換え回数テーブルは、図11に示され
ているように、以下の形式で作成される。図11は、ブ
ロック番号500の書き換え回数記述ブロックの例であ
る。
きさを持つ。書き換え回数テーブルは、図11に示され
ているように、以下の形式で作成される。図11は、ブ
ロック番号500の書き換え回数記述ブロックの例であ
る。
【0103】PAGE 0 ;ブロックアドレス
(0〜31)に対応するテーブル PAGE 1〜3 ;上記テーブルの予備(最初は消去
状態) PAGE 4 ;ブロックアドレス(32〜63)
に対応するテーブル PAGE 5〜7 ;上記テーブルの予備(最初は消去
状態) PAGE 8 ;ブロックアドレス(64〜95)
に対応するテーブル PAGE 9〜11;上記テーブルの予備(最初は消去
状態) : : : : 図12には、書換回数テーブルのデータ形式が示されて
いる。各テーブル内のデータ形式は、以下の通りであ
る。
(0〜31)に対応するテーブル PAGE 1〜3 ;上記テーブルの予備(最初は消去
状態) PAGE 4 ;ブロックアドレス(32〜63)
に対応するテーブル PAGE 5〜7 ;上記テーブルの予備(最初は消去
状態) PAGE 8 ;ブロックアドレス(64〜95)
に対応するテーブル PAGE 9〜11;上記テーブルの予備(最初は消去
状態) : : : : 図12には、書換回数テーブルのデータ形式が示されて
いる。各テーブル内のデータ形式は、以下の通りであ
る。
【0104】ページ前半の0〜127バイト;ブロック
アドレスに対応する書換回数テーブル(4バイト×32
ブロック) 4バイトの情報は物理ブロックに対応して順次並べられ
る。即ち、最初の4バイトはブロック0のLWC情報、
次の4バイトはブロック1のLWC情報である。また、
4バイトは1+3バイトに分割され、1バイトは該当ブ
ロックの情報がそこに存在するかどうかの判断に使用さ
れ、3バイトは各対応ブロックのLWCの値が格納され
る。ここで、上記1バイトの該当ブロックの情報がそこ
に存在するかどうかは、上位2ビットを使用して以下の
表される。
アドレスに対応する書換回数テーブル(4バイト×32
ブロック) 4バイトの情報は物理ブロックに対応して順次並べられ
る。即ち、最初の4バイトはブロック0のLWC情報、
次の4バイトはブロック1のLWC情報である。また、
4バイトは1+3バイトに分割され、1バイトは該当ブ
ロックの情報がそこに存在するかどうかの判断に使用さ
れ、3バイトは各対応ブロックのLWCの値が格納され
る。ここで、上記1バイトの該当ブロックの情報がそこ
に存在するかどうかは、上位2ビットを使用して以下の
表される。
【0105】01;使用中 00;使用済み(該当情報は既に、ここには存在しな
い。) ページ後半の128〜255バイト;追記される書換回
数テーブル 追記単位は4バイトであり、32回の追記ができる。4
バイトは1+3バイトと分割され、1バイトの情報はそ
こに有効情報が存在するかどうか、及び本ページに属す
る32ブロックの内、どこのブロックの情報を示すかが
格納される。3バイトはLWCの格納に利用される。
い。) ページ後半の128〜255バイト;追記される書換回
数テーブル 追記単位は4バイトであり、32回の追記ができる。4
バイトは1+3バイトと分割され、1バイトの情報はそ
こに有効情報が存在するかどうか、及び本ページに属す
る32ブロックの内、どこのブロックの情報を示すかが
格納される。3バイトはLWCの格納に利用される。
【0106】ここで、上記1バイトの有効情報がそこに
存在するかどうかは、上位2ビットを使用し、以下の様
に表される。
存在するかどうかは、上位2ビットを使用し、以下の様
に表される。
【0107】11;未使用 01;使用中 00;使用済み(該当情報は既に、ここには存在しな
い。) 一方、上記1バイトの中の、「32ブロックの内、どこ
のブロックの情報を示すか」は、下位5ビットを使用し
てブロックアドレスを表現すれば良い。
い。) 一方、上記1バイトの中の、「32ブロックの内、どこ
のブロックの情報を示すか」は、下位5ビットを使用し
てブロックアドレスを表現すれば良い。
【0108】次に、図13を参照して、書換回数テーブ
ルのデータ更新の原理について説明する。
ルのデータ更新の原理について説明する。
【0109】各ブロックの書き換えが実行される都度、
その書き換え回数を管理している書換回数テーブルのデ
ータは更新される。書換回数を管理している消去ブロッ
クには前述したように4個の書換回数テーブルが含ま
れ、また、個々の書換回数テーブル全体をデータ更新し
て書き写すための、予備領域が各書換回数テーブルに3
つ設けられている。その個々の書換回数テーブルは、初
期状態では、ディフォルトで書換回数を管理されている
各ブロックの物理アドレスとの対応が決定づけられてい
る情報記述位置に各ブロックの書き換え回数が記述され
る。これが、個々の書換回数テーブルの前半部に相当す
る。また、個々の書換回数テーブル内には初期状態では
空き領域(消去済み且つ未書き込み)が追記エリアとし
て併設されている。
その書き換え回数を管理している書換回数テーブルのデ
ータは更新される。書換回数を管理している消去ブロッ
クには前述したように4個の書換回数テーブルが含ま
れ、また、個々の書換回数テーブル全体をデータ更新し
て書き写すための、予備領域が各書換回数テーブルに3
つ設けられている。その個々の書換回数テーブルは、初
期状態では、ディフォルトで書換回数を管理されている
各ブロックの物理アドレスとの対応が決定づけられてい
る情報記述位置に各ブロックの書き換え回数が記述され
る。これが、個々の書換回数テーブルの前半部に相当す
る。また、個々の書換回数テーブル内には初期状態では
空き領域(消去済み且つ未書き込み)が追記エリアとし
て併設されている。
【0110】データ更新に際しては、書換回数テーブル
内の空き領域に書換回数が更新されるブロックのアドレ
スを特定する情報と、書き換え回数とがセットで書き込
まれる。
内の空き領域に書換回数が更新されるブロックのアドレ
スを特定する情報と、書き換え回数とがセットで書き込
まれる。
【0111】データ更新が進行し、テーブル内の空き領
域が無くなると(図11のT1)、テーブル内データを
再度整理し、初期状態のテーブル内容と追記された情報
とに基づいて、新たな書換回数テーブルがページ1の予
備領域に作成される(図11のT1’)。この場合、書
換が発生していないブロックに対応するLWCの値は新
規テーブルでもそのまま使用され、書換が発生したブロ
ックに対応するLWCの値は追記情報の値を用いて元の
テーブルの値から更新される。データ更新が進行し、ペ
ージ1のテーブル内の空き領域が無くなると(図11の
T2)、テーブル内データを再度整理し、ページ1のテ
ーブルの初期状態の内容と追記された情報とに基づい
て、新たな書換回数テーブルがページ2の予備領域に作
成される(図11のT2’)。この様に、書換回数テー
ブル内での追記だけでなく、書換回数テーブル自体も追
記方式で更新される。
域が無くなると(図11のT1)、テーブル内データを
再度整理し、初期状態のテーブル内容と追記された情報
とに基づいて、新たな書換回数テーブルがページ1の予
備領域に作成される(図11のT1’)。この場合、書
換が発生していないブロックに対応するLWCの値は新
規テーブルでもそのまま使用され、書換が発生したブロ
ックに対応するLWCの値は追記情報の値を用いて元の
テーブルの値から更新される。データ更新が進行し、ペ
ージ1のテーブル内の空き領域が無くなると(図11の
T2)、テーブル内データを再度整理し、ページ1のテ
ーブルの初期状態の内容と追記された情報とに基づい
て、新たな書換回数テーブルがページ2の予備領域に作
成される(図11のT2’)。この様に、書換回数テー
ブル内での追記だけでなく、書換回数テーブル自体も追
記方式で更新される。
【0112】次に、図14のフローチャートを参照し
て、書換回数テーブルの更新処理の具体的な手順につい
て説明する。
て、書換回数テーブルの更新処理の具体的な手順につい
て説明する。
【0113】まず、各書換回数記述ブロックのページ
0,4,8,13それぞれの前半の128バイトに、そ
のページに対応する管理対象ブロックそれぞれのLWC
を書き込み、書換回数テーブルを作成する(ステップS
11)。
0,4,8,13それぞれの前半の128バイトに、そ
のページに対応する管理対象ブロックそれぞれのLWC
を書き込み、書換回数テーブルを作成する(ステップS
11)。
【0114】次に、ユーザデータの書き込み要求などに
よって消去ブロックの書換が必要になると(ステップS
12)、その書き換え対象ブロックに対応する書換回数
記述ブロックの書換回数テーブルが読み出され、書き換
え対象ブロックに対応する書換回数情報が有効か否かが
調べられる(ステップS13)。これは、書換回数が記
録されていた4バイトの内の1バイトの「該当ブロック
に関するデータがそこに存在するか?」を示す情報を参
照することによって行われる。書換回数情報が有効であ
れば、その書換回数テーブルに使用可能な追記エリア、
すなわち消去済み且つ未書き込みの空き領域があるか否
かが調べられる(ステップS14)。
よって消去ブロックの書換が必要になると(ステップS
12)、その書き換え対象ブロックに対応する書換回数
記述ブロックの書換回数テーブルが読み出され、書き換
え対象ブロックに対応する書換回数情報が有効か否かが
調べられる(ステップS13)。これは、書換回数が記
録されていた4バイトの内の1バイトの「該当ブロック
に関するデータがそこに存在するか?」を示す情報を参
照することによって行われる。書換回数情報が有効であ
れば、その書換回数テーブルに使用可能な追記エリア、
すなわち消去済み且つ未書き込みの空き領域があるか否
かが調べられる(ステップS14)。
【0115】追記エリアが残っている場合には、書換回
数テーブル前半に記録されていた元の書換回数情報の無
効化と、追記エリアへの書換回数情報の追記が行われる
(ステップS15)。ここでは、書換回数テーブル前半
に記録されていた元の書換回数情報の4バイトの内の1
バイトの上位2ビットが”01”から”00”に書き直
される。また、ページ後半の4バイトの空き領域に、ブ
ロックアドレス、及び+1カウントアップされたLWC
が追記される。
数テーブル前半に記録されていた元の書換回数情報の無
効化と、追記エリアへの書換回数情報の追記が行われる
(ステップS15)。ここでは、書換回数テーブル前半
に記録されていた元の書換回数情報の4バイトの内の1
バイトの上位2ビットが”01”から”00”に書き直
される。また、ページ後半の4バイトの空き領域に、ブ
ロックアドレス、及び+1カウントアップされたLWC
が追記される。
【0116】この場合、追記される書換回数情報の4バ
イトの内の1バイトの「有効情報がそこに存在するか&
ブロックアドレス」は、上位2ビットが”11”から”
01”に書き換えられ、「有効情報が存在する」ことを
示すようになる。
イトの内の1バイトの「有効情報がそこに存在するか&
ブロックアドレス」は、上位2ビットが”11”から”
01”に書き換えられ、「有効情報が存在する」ことを
示すようになる。
【0117】書換回数テーブル内部に追記エリアが残っ
ていない場合には、その書換回数テーブルに対応する予
備エリアが残っているか否かが調べられる(ステップS
16)。予備エリアが残っている場合は、そのページが
管理している32ブロックについて書換回数データを整
理して、次ページに新たな書換回数テーブルを作成する
(ステップS17)。この場合、そのページの後半は追
記領域として空けておく。なお、各テーブルについて、
現在の使用中のページの位置を示すポインタはPowe
rOn時にテーブル状態を調べて生成し、RAM上にテ
ーブルとして保持しても良いし、書換回数テーブルのデ
ータ更新の都度、そのテーブル状態を調べることによ
り、決定しても良い。また、使用を開始していないペー
ジの「該当ブロックに関するデータがそこに存在するか
?」の情報は消去のままなので”11”であり、使用を
開始している場合は”01”、もしくは”00”である
ので、どのページまで使用しているかの区分は可能とな
る。
ていない場合には、その書換回数テーブルに対応する予
備エリアが残っているか否かが調べられる(ステップS
16)。予備エリアが残っている場合は、そのページが
管理している32ブロックについて書換回数データを整
理して、次ページに新たな書換回数テーブルを作成する
(ステップS17)。この場合、そのページの後半は追
記領域として空けておく。なお、各テーブルについて、
現在の使用中のページの位置を示すポインタはPowe
rOn時にテーブル状態を調べて生成し、RAM上にテ
ーブルとして保持しても良いし、書換回数テーブルのデ
ータ更新の都度、そのテーブル状態を調べることによ
り、決定しても良い。また、使用を開始していないペー
ジの「該当ブロックに関するデータがそこに存在するか
?」の情報は消去のままなので”11”であり、使用を
開始している場合は”01”、もしくは”00”である
ので、どのページまで使用しているかの区分は可能とな
る。
【0118】一方、予備エリアが残っていない場合に
は、その書換回数記述ブロックの消去が行われ(ステッ
プS18)、そしてページ0,4,8,13それぞれの
前半の128バイトに、そのページに対応する管理対象
ブロックそれぞれのLWCを書き込み、書換回数テーブ
ルが作り直される(ステップS19)。
は、その書換回数記述ブロックの消去が行われ(ステッ
プS18)、そしてページ0,4,8,13それぞれの
前半の128バイトに、そのページに対応する管理対象
ブロックそれぞれのLWCを書き込み、書換回数テーブ
ルが作り直される(ステップS19)。
【0119】また、ステップS13で、書き換え対象ブ
ロックに対応する書換回数情報が有効でないことが検出
された場合には、その書換回数テーブルに使用可能な追
記エリア、すなわち消去済み且つ未書き込みの空き領域
があるか否かが調べられる(ステップS20)。追記エ
リアが残っていれば、書き換え対象ブロックに対応する
現状の追記情報の4バイトの内の1バイトの「有効情報
がそこに存在するか?&ブロックアドレス」の上位2ビ
ットを”01”から”00”に書き換え、「有効情報が
存在しない」ことを示すようにする。そして、ページ後
半の4バイトの空き領域に、ブロックアドレス、及び+
1カウントアップされたLWCが追記される(ステップ
S21)。
ロックに対応する書換回数情報が有効でないことが検出
された場合には、その書換回数テーブルに使用可能な追
記エリア、すなわち消去済み且つ未書き込みの空き領域
があるか否かが調べられる(ステップS20)。追記エ
リアが残っていれば、書き換え対象ブロックに対応する
現状の追記情報の4バイトの内の1バイトの「有効情報
がそこに存在するか?&ブロックアドレス」の上位2ビ
ットを”01”から”00”に書き換え、「有効情報が
存在しない」ことを示すようにする。そして、ページ後
半の4バイトの空き領域に、ブロックアドレス、及び+
1カウントアップされたLWCが追記される(ステップ
S21)。
【0120】以上を繰り返すと、予備ページが1個のテ
ーブルに付き3ページあるので1個のテーブルに付き3
2×4=128回のユーザブロックの書換が可能とな
る。
ーブルに付き3ページあるので1個のテーブルに付き3
2×4=128回のユーザブロックの書換が可能とな
る。
【0121】ここで、書換回数を記録しているブロック
と、一般のユーザデータが書き込まれるブロックの書換
回数の進行速度を評価する。
と、一般のユーザデータが書き込まれるブロックの書換
回数の進行速度を評価する。
【0122】書換回数を記録しているブロックはその管
理下に128ブロックを持つ。従って、書換回数を記録
しているブロックのデータ更新は、ユーザブロックの1
28倍の頻度で発生する。しかし、書換回数を記録して
いるブロックの書換が発生するのは同ブロックのデータ
更新が128回〜512回の間に1回となる。ここで、
128回というのは、ブロック内の4個のテーブルの内
1個が管理しているユーザブロックに書換が集中した場
合である。また、512回というのは、ブロック内の4
個のテーブルが管理しているユーザブロックに書換が均
等に分散した場合である。
理下に128ブロックを持つ。従って、書換回数を記録
しているブロックのデータ更新は、ユーザブロックの1
28倍の頻度で発生する。しかし、書換回数を記録して
いるブロックの書換が発生するのは同ブロックのデータ
更新が128回〜512回の間に1回となる。ここで、
128回というのは、ブロック内の4個のテーブルの内
1個が管理しているユーザブロックに書換が集中した場
合である。また、512回というのは、ブロック内の4
個のテーブルが管理しているユーザブロックに書換が均
等に分散した場合である。
【0123】従って、この実施形態の書換回数管理方法
によれば、書換回数を記録しているブロックの書換頻度
は、一般のブロックと同レベル以下であり、そこに書換
が集中することはない。
によれば、書換回数を記録しているブロックの書換頻度
は、一般のブロックと同レベル以下であり、そこに書換
が集中することはない。
【0124】次に、図15を参照して、RAM13に設
けられるアドレス変換テーブル132の構成について説
明する。
けられるアドレス変換テーブル132の構成について説
明する。
【0125】このアドレス変換テーブル132は、シリ
ンダ番号、ヘッド番号およびセクタ番号によって規定さ
れるホストアドレスを、フラッシュEEPROM11−
1〜11−116をアクセスするための物理メモリアド
レスに変換するためのものであり、このアドレス変換テ
ーブル132はフラッシュEEPROM11−1〜11
−116それぞれのMBIテーブルブロックのアドレス
変換情報に基づいて生成される。
ンダ番号、ヘッド番号およびセクタ番号によって規定さ
れるホストアドレスを、フラッシュEEPROM11−
1〜11−116をアクセスするための物理メモリアド
レスに変換するためのものであり、このアドレス変換テ
ーブル132はフラッシュEEPROM11−1〜11
−116それぞれのMBIテーブルブロックのアドレス
変換情報に基づいて生成される。
【0126】このアドレス変換テーブル132において
は、ホストアドレスとしては13ビットのブロックセク
タアドレスが使用される。このブロックセクタアドレス
は、前述したように、シリンダ番号、ヘッド番号および
セクタ番号から計算されたセクタの通し番号を示すホス
ト論理アドレス(16ビット)の中の上位13ビットか
ら構成される。また、物理メモリアドレスは、4ビット
のチップ番号アドレスと、9ビットのチップ内物理ブロ
ックアドレスから構成される。4ビットのチップ番号ア
ドレスは、チップ番号#0のフラッシュEEPROM1
1−1からチップ番号#15のフラッシュEEPROM
11−6までの16個のチップのうちの1つを指定す
る。9ビットのチップ内物理ブロックアドレスは、チッ
プ番号アドレスによって指定されたチップ内のブロック
0〜ブロック511の512個のブロックの中の1つを
指定する。物理メモリアドレス(チップ番号アドレス、
チップ内物理ブロックアドレス)は、ホストアドレス順
に格納されている。
は、ホストアドレスとしては13ビットのブロックセク
タアドレスが使用される。このブロックセクタアドレス
は、前述したように、シリンダ番号、ヘッド番号および
セクタ番号から計算されたセクタの通し番号を示すホス
ト論理アドレス(16ビット)の中の上位13ビットか
ら構成される。また、物理メモリアドレスは、4ビット
のチップ番号アドレスと、9ビットのチップ内物理ブロ
ックアドレスから構成される。4ビットのチップ番号ア
ドレスは、チップ番号#0のフラッシュEEPROM1
1−1からチップ番号#15のフラッシュEEPROM
11−6までの16個のチップのうちの1つを指定す
る。9ビットのチップ内物理ブロックアドレスは、チッ
プ番号アドレスによって指定されたチップ内のブロック
0〜ブロック511の512個のブロックの中の1つを
指定する。物理メモリアドレス(チップ番号アドレス、
チップ内物理ブロックアドレス)は、ホストアドレス順
に格納されている。
【0127】次に、図16を参照して、アドレス変換テ
ーブル132を利用したアドレス変換動作の原理を説明
する。
ーブル132を利用したアドレス変換動作の原理を説明
する。
【0128】まず、ホストシステムから指定されたシリ
ンダ番号、ヘッド番号およびセクタ番号は、マイクロプ
ロセッサ14によって実行されるファームウェアによっ
て16ビット幅のホスト論理アドレスに変換される。次
いで、その16ビット幅のホスト論理アドレスの上位1
3ビットから成るブロックセクタアドレスをインデック
スとしてアドレス変換テーブル132が検索され、ブロ
ックセクタアドレスに対応する4ビット幅のチップ番号
アドレス、および9ビット幅の物理ブロックアドレスが
決定される。
ンダ番号、ヘッド番号およびセクタ番号は、マイクロプ
ロセッサ14によって実行されるファームウェアによっ
て16ビット幅のホスト論理アドレスに変換される。次
いで、その16ビット幅のホスト論理アドレスの上位1
3ビットから成るブロックセクタアドレスをインデック
スとしてアドレス変換テーブル132が検索され、ブロ
ックセクタアドレスに対応する4ビット幅のチップ番号
アドレス、および9ビット幅の物理ブロックアドレスが
決定される。
【0129】チップ番号アドレスは、チップ選択のため
に、ファームウェアによってNANDバスインタフェー
ス19のNANDチップナンバレジスタ201にセット
される。また、9ビットの物理ブロックアドレスには、
16ビット幅のホスト論理アドレスの下位3ビットから
成るブロック内セクタアドレスと、1ビット幅の偶数/
奇数ページ指定アドレスと、8ビット幅のカラムアドレ
スがNANDバイインタフェース19内で付加されて、
20ビット幅のメモリアドレス(A20−A0)が生成
される。このメモリアドレス(A20−A0)は、アド
レス指定のために、NANDバスインタフェース19の
NANDデータリード/ライトレジスタ202にセット
される。ユーザデータをリード/ライトするためにホス
トシステムによって実行される半導体ディスク装置10
のアクセスはセクタ単位で行われるので、通常、1ビッ
ト幅の偶数/奇数ページ指定アドレス(A8)と、8ビ
ット幅のカラムアドレス(A7−A0)はどちらもオー
ル“0”である。
に、ファームウェアによってNANDバスインタフェー
ス19のNANDチップナンバレジスタ201にセット
される。また、9ビットの物理ブロックアドレスには、
16ビット幅のホスト論理アドレスの下位3ビットから
成るブロック内セクタアドレスと、1ビット幅の偶数/
奇数ページ指定アドレスと、8ビット幅のカラムアドレ
スがNANDバイインタフェース19内で付加されて、
20ビット幅のメモリアドレス(A20−A0)が生成
される。このメモリアドレス(A20−A0)は、アド
レス指定のために、NANDバスインタフェース19の
NANDデータリード/ライトレジスタ202にセット
される。ユーザデータをリード/ライトするためにホス
トシステムによって実行される半導体ディスク装置10
のアクセスはセクタ単位で行われるので、通常、1ビッ
ト幅の偶数/奇数ページ指定アドレス(A8)と、8ビ
ット幅のカラムアドレス(A7−A0)はどちらもオー
ル“0”である。
【0130】次に、図17のフローチャートを参照し
て、ホストシステムからライトコマンドが発行された際
に実行される図1の半導体ディスク装置10全体のライ
ト制御動作を説明する。このライト制御動作は、前述し
た各種の管理情報テーブルを利用する事によって行われ
る。
て、ホストシステムからライトコマンドが発行された際
に実行される図1の半導体ディスク装置10全体のライ
ト制御動作を説明する。このライト制御動作は、前述し
た各種の管理情報テーブルを利用する事によって行われ
る。
【0131】ホストシステムが外部バスインタフェース
17のコマンドレジスタ176にライトコマンドをセッ
トすると、マイクロプロセッサ14によって実行される
ファームウェアは、まず、そのライトコマンドを受け付
ける(ステップA71)。次いで、ファームウェアは、
ホストシステムからデータバッファ131へのライトデ
ータの転送を開始する(ステップA72)。このデータ
転送は、外部バスインタフェース17のデータレジスタ
173を介して実行される。
17のコマンドレジスタ176にライトコマンドをセッ
トすると、マイクロプロセッサ14によって実行される
ファームウェアは、まず、そのライトコマンドを受け付
ける(ステップA71)。次いで、ファームウェアは、
ホストシステムからデータバッファ131へのライトデ
ータの転送を開始する(ステップA72)。このデータ
転送は、外部バスインタフェース17のデータレジスタ
173を介して実行される。
【0132】ホストシステムによる半導体ディスク装置
10のアクセスはセクタ単位で行われるので、データバ
ッファ131には少なくとも1セクタ分のライトデータ
が格納される。
10のアクセスはセクタ単位で行われるので、データバ
ッファ131には少なくとも1セクタ分のライトデータ
が格納される。
【0133】次いで、ファームウェアは、ホストシステ
ムによって指定されたディスクアクセスのためのホスト
アドレス、つまり、セクタ番号、シリンダ番号、および
ヘッド番号をセクタナンバレジスタ171、シリンダレ
ジスタ174、およびドライブ/ヘッドレジスタ175
からそれぞれ読取り、それをフラッシュEEPROM1
1−1〜11−16をアクセスするためのアドレスに変
換する(ステップA73)。このアドレス変換処理にお
いては、図16で説明したように、アドレス変換テーブ
ル132が利用される。このアドレス変換テーブル13
2のアドレス変換情報は、装置10の起動時において、
フラッシュEEPROM11−1〜11−16それぞれ
からリードしたアドレス変換テーブルのアドレス変換情
報に基づいて構築されたものである。
ムによって指定されたディスクアクセスのためのホスト
アドレス、つまり、セクタ番号、シリンダ番号、および
ヘッド番号をセクタナンバレジスタ171、シリンダレ
ジスタ174、およびドライブ/ヘッドレジスタ175
からそれぞれ読取り、それをフラッシュEEPROM1
1−1〜11−16をアクセスするためのアドレスに変
換する(ステップA73)。このアドレス変換処理にお
いては、図16で説明したように、アドレス変換テーブ
ル132が利用される。このアドレス変換テーブル13
2のアドレス変換情報は、装置10の起動時において、
フラッシュEEPROM11−1〜11−16それぞれ
からリードしたアドレス変換テーブルのアドレス変換情
報に基づいて構築されたものである。
【0134】アドレス変換処理の結果、ライトアクセス
対象のチップ番号、およびライトアクセス対象チップ内
のメモリアドレス(A20−A0)が求められる。
対象のチップ番号、およびライトアクセス対象チップ内
のメモリアドレス(A20−A0)が求められる。
【0135】次に、ファームウェアは、メモリアドレス
(A20−A0)の上位9ビット(A20−A12)で
指定されるライトアクセス対象のブロック(以下、ライ
トブロックと称する)に対する1ブロック分のライトデ
ータを作成するための処理(ステップA74〜A78)
に進む。
(A20−A0)の上位9ビット(A20−A12)で
指定されるライトアクセス対象のブロック(以下、ライ
トブロックと称する)に対する1ブロック分のライトデ
ータを作成するための処理(ステップA74〜A78)
に進む。
【0136】ここでは、ファームウェアは、まず、ライ
トブロック用のヘッダテーブルエリアをRAM13上に
確保する(ステップA74)。次に、ファームウェア
は、書換回数記述ブロックからLWCデータをリードす
る(ステップA75)。この後、ファームウェアは、ラ
イトブロックに“巻き添え消去”データが存在するか否
かを調べる(ステップA76)。ここで、“巻き添え消
去”データとはライトブロックに存在するデータの中で
ホストシステムによって書換が要求されてないデータを
意味する。このため、ライトブロック内の全てのページ
に対する書込みが要求された場合には“巻き添え消去”
データは存在しないが、ライトブロック内の途中のぺー
ジから書込みが開始される場合や、ライトデータのデー
タレングスが1ブロック(8セクタ)よりも少ない場合
などには“巻き添え消去”データが存在する事になる。
トブロック用のヘッダテーブルエリアをRAM13上に
確保する(ステップA74)。次に、ファームウェア
は、書換回数記述ブロックからLWCデータをリードす
る(ステップA75)。この後、ファームウェアは、ラ
イトブロックに“巻き添え消去”データが存在するか否
かを調べる(ステップA76)。ここで、“巻き添え消
去”データとはライトブロックに存在するデータの中で
ホストシステムによって書換が要求されてないデータを
意味する。このため、ライトブロック内の全てのページ
に対する書込みが要求された場合には“巻き添え消去”
データは存在しないが、ライトブロック内の途中のぺー
ジから書込みが開始される場合や、ライトデータのデー
タレングスが1ブロック(8セクタ)よりも少ない場合
などには“巻き添え消去”データが存在する事になる。
【0137】“巻き添え消去”データが存在する場合に
は、ファームウェアは、コマンド“00h”を用いたリ
ードサイクルを実行することによって、ライトブロック
から“巻き添え消去”データを含むページをリードする
(ステップA77)。この“巻き添え消去”データを含
むページは、RAM13の空きエリアやデータバッファ
131に格納される。
は、ファームウェアは、コマンド“00h”を用いたリ
ードサイクルを実行することによって、ライトブロック
から“巻き添え消去”データを含むページをリードする
(ステップA77)。この“巻き添え消去”データを含
むページは、RAM13の空きエリアやデータバッファ
131に格納される。
【0138】次いで、ファームウェアは、リードした
“巻き添え消去”データのRAM13上の格納位置を示
すRAMアドレスと、ホストシステムからのライトデー
タが格納されているRAM13上の格納位置を示すRA
Mアドレスとに基づいて、ライトブロックに書き込むべ
き1ブロック分のブロックデータに対応するヘッダテー
ブルを作成する。
“巻き添え消去”データのRAM13上の格納位置を示
すRAMアドレスと、ホストシステムからのライトデー
タが格納されているRAM13上の格納位置を示すRA
Mアドレスとに基づいて、ライトブロックに書き込むべ
き1ブロック分のブロックデータに対応するヘッダテー
ブルを作成する。
【0139】すなわち、ファームウェアは、実際にデー
タを結合して1ブロック分のブロックデータを生成する
のではなく、“巻き添え消去”データのRAM13上の
アドレスとライトデータのデータバッファ131上のア
ドレスとをページ番号順に整列して保持するヘッダテー
ブル133を作成し、これによって仮想的なブロックデ
ータを構築する(ステップA78)。
タを結合して1ブロック分のブロックデータを生成する
のではなく、“巻き添え消去”データのRAM13上の
アドレスとライトデータのデータバッファ131上のア
ドレスとをページ番号順に整列して保持するヘッダテー
ブル133を作成し、これによって仮想的なブロックデ
ータを構築する(ステップA78)。
【0140】次いで、ファームウェアは、書換回数記述
ブロックからリードしたLWCデータの値を+1カウン
トアップして書換回数テーブルの更新を行う(ステップ
A79,A79a)。この更新処理の手順は図14で説
明したとおりである。
ブロックからリードしたLWCデータの値を+1カウン
トアップして書換回数テーブルの更新を行う(ステップ
A79,A79a)。この更新処理の手順は図14で説
明したとおりである。
【0141】もしLWCデータの値に桁上り(キャリ
ー)が発生しなければ、ファームウェアは、ライトブロ
ックに対するライトアクセス処理を実行する(ステップ
A80,A81)。
ー)が発生しなければ、ファームウェアは、ライトブロ
ックに対するライトアクセス処理を実行する(ステップ
A80,A81)。
【0142】このライトアクセス処理では、まず、ライ
トブロックに対してブロックイレーズサイクルが実行さ
れて、ライトブロックの内容が全て消去される。次い
で、ライトブロックの全ページに対してプログラムサイ
クルが実行される。このプログラムサイクルでは、ファ
ームウェアは、ヘッダテーブル133に保持されている
アドレス順にRAM13から256バイト単位で1ブロ
ック分のデータを読み出し、それをフラッシュEEPR
OMに転送する。このように、ヘッダテーブル133を
利用することにより、ファームウェアはライトデータと
“巻き添え消去”データとを区別することなくデータ転
送を行う事ができる。
トブロックに対してブロックイレーズサイクルが実行さ
れて、ライトブロックの内容が全て消去される。次い
で、ライトブロックの全ページに対してプログラムサイ
クルが実行される。このプログラムサイクルでは、ファ
ームウェアは、ヘッダテーブル133に保持されている
アドレス順にRAM13から256バイト単位で1ブロ
ック分のデータを読み出し、それをフラッシュEEPR
OMに転送する。このように、ヘッダテーブル133を
利用することにより、ファームウェアはライトデータと
“巻き添え消去”データとを区別することなくデータ転
送を行う事ができる。
【0143】転送される各256バイトのデータにはN
ANDバスインタフェース19によって自動的にECC
データが付加され、それがライト対象フラッシュEEP
ROMのライトブロックの対応するページに書き込まれ
る。
ANDバスインタフェース19によって自動的にECC
データが付加され、それがライト対象フラッシュEEP
ROMのライトブロックの対応するページに書き込まれ
る。
【0144】一方、LWCデータの値に桁上りが発生し
た場合には、ファームウェアは、スワッピング操作を実
行するか否かを検討するために、以下の処理を行う。
た場合には、ファームウェアは、スワッピング操作を実
行するか否かを検討するために、以下の処理を行う。
【0145】すなわち、ファ−ムウェアは、まず、ライ
ト対象のフラッシュEEPROMからMBIテーブルブ
ロックをリードする(ステップA82)。リードされた
MBIテーブルブロックの内容は、RAM13の空きエ
リアに格納される。
ト対象のフラッシュEEPROMからMBIテーブルブ
ロックをリードする(ステップA82)。リードされた
MBIテーブルブロックの内容は、RAM13の空きエ
リアに格納される。
【0146】次いで、ファ−ムウェアは、リードしたM
BIテーブルブロックを検索してライトブロックに対応
するUWCデータを検出し、そのUWCデータの値を更
新、つまり+1カウントアップする(ステップA8
3)。MBIテーブルブロックにおいては、図8で説明
したように、UWCデータは物理ブロックアドレス順に
整列されて保持されている。このため、ファームウェア
は、ライトブロックを示す物理ブロックアドレスをイン
デックスとして利用する事により、ライトブロックに対
応するUWCデータを容易に見つける事ができる。
BIテーブルブロックを検索してライトブロックに対応
するUWCデータを検出し、そのUWCデータの値を更
新、つまり+1カウントアップする(ステップA8
3)。MBIテーブルブロックにおいては、図8で説明
したように、UWCデータは物理ブロックアドレス順に
整列されて保持されている。このため、ファームウェア
は、ライトブロックを示す物理ブロックアドレスをイン
デックスとして利用する事により、ライトブロックに対
応するUWCデータを容易に見つける事ができる。
【0147】更新されたUWCデータの値は、MBIテ
ーブルブロックと書換回数管理テーブル134双方に反
映される。
ーブルブロックと書換回数管理テーブル134双方に反
映される。
【0148】この後、ファームウェアは、更新されたラ
イトブロックのUWCデータの値をライト対象チップの
最小UWCデータの値、および他の各チップの最小UW
Cデータの値と、順次比較する(ステップA84)。
イトブロックのUWCデータの値をライト対象チップの
最小UWCデータの値、および他の各チップの最小UW
Cデータの値と、順次比較する(ステップA84)。
【0149】ライト対象チップの最小UWCデータの値
としては、ライト対象チップからリードしたMBIテー
ブルブロック内のスワップオーダテーブルに保持されて
いる最小UWCデータの値が利用される。これにより、
RAM13上の書換回数管理テーブル134をUWCデ
ータの小さい順にソーティングするといった処理を行う
ことなく、ライト対象チップの最小UWCデータの値を
容易に知るができる。
としては、ライト対象チップからリードしたMBIテー
ブルブロック内のスワップオーダテーブルに保持されて
いる最小UWCデータの値が利用される。これにより、
RAM13上の書換回数管理テーブル134をUWCデ
ータの小さい順にソーティングするといった処理を行う
ことなく、ライト対象チップの最小UWCデータの値を
容易に知るができる。
【0150】また、他の各チップの最小UWCデータの
値としては、RAM13上の書換回数管理テーブル13
4の値が利用される。この書換回数管理テーブル134
の値を利用することにより、ライト対象チップ以外の他
の全てのチップそれぞれからMBIテーブルブロックを
順次リードする必要が無くなり、効率の良いスワッピン
グ検討処理が実現される。
値としては、RAM13上の書換回数管理テーブル13
4の値が利用される。この書換回数管理テーブル134
の値を利用することにより、ライト対象チップ以外の他
の全てのチップそれぞれからMBIテーブルブロックを
順次リードする必要が無くなり、効率の良いスワッピン
グ検討処理が実現される。
【0151】次いで、ステップA84の比較結果に基づ
き、ファームウェアは、ライトブロックの更新されたU
WCデータとライト対象チップの最小UWCデータとの
値の差が予め決められたしきい値(α)以上であるか否
かを調べ(ステップA85)、その差がα以上であれ
ば、ライト対象チップ内でのスワッピング操作を行う
(ステップA86)。
き、ファームウェアは、ライトブロックの更新されたU
WCデータとライト対象チップの最小UWCデータとの
値の差が予め決められたしきい値(α)以上であるか否
かを調べ(ステップA85)、その差がα以上であれ
ば、ライト対象チップ内でのスワッピング操作を行う
(ステップA86)。
【0152】このチップ内スワッピング操作において
は、ファームウェアは、まず、ライト対象チップから被
スワッピング対象のブロックをリードする。この場合、
被スワッピング対象のブロックは最小UWCの値を持つ
ブロックであり、このブロックの物理ブロックアドレス
は、ステップA82でリードしたMBIテーブルブロッ
クに含まれているスワップオーダーテーブル上の被スワ
ッピング優先度NO.1ブロック番号によって指定され
る。したがって、ファームウェアは、UWCデータのソ
ーティングを行うこと無く、被スワッピング対象のブロ
ックを簡単に決定でき、またその被スワッピング対象の
ブロックの物理ブロックアドレスを認識する事ができ
る。
は、ファームウェアは、まず、ライト対象チップから被
スワッピング対象のブロックをリードする。この場合、
被スワッピング対象のブロックは最小UWCの値を持つ
ブロックであり、このブロックの物理ブロックアドレス
は、ステップA82でリードしたMBIテーブルブロッ
クに含まれているスワップオーダーテーブル上の被スワ
ッピング優先度NO.1ブロック番号によって指定され
る。したがって、ファームウェアは、UWCデータのソ
ーティングを行うこと無く、被スワッピング対象のブロ
ックを簡単に決定でき、またその被スワッピング対象の
ブロックの物理ブロックアドレスを認識する事ができ
る。
【0153】次に、ファームウェアは、ライトブロック
と被スワッピング対象ブロック間でホストアドレスの入
れ替えを行う。この場合、RAM132上のアドレス変
換テーブル132とライト対象チップからリードしたM
BIテーブルブロック双方のアドレス変換情報が更新さ
れる。
と被スワッピング対象ブロック間でホストアドレスの入
れ替えを行う。この場合、RAM132上のアドレス変
換テーブル132とライト対象チップからリードしたM
BIテーブルブロック双方のアドレス変換情報が更新さ
れる。
【0154】次に、ファームウェアは、ライト対象フラ
ッシュEEPROMにおけるライトブロックと被スワッ
ピング対象ブロック間の記憶内容の入れ替えのために、
RAM13上に吸い上げた被スワッピングブロックの内
容をライト対象フラッシュEEPROMのライトブロッ
クに書き込むためのライトアクセスと、フラッシュEE
PROMの被スワッピングブロックにRAM13上の1
ブロック分のライトデータを書き込むためのライトアク
セスを行う。この後、ファームウェアは、ライト対象フ
ラッシュEEPROMにおけるMBIテーブルブロック
の更新のために、ライト対象フラッシュEEPROMに
おけるMBIテーブルブロックにRAM13上の更新さ
れたMBIテーブルブロックの内容を書き込むためのラ
イトアクセスを行う。これら3回のライトアクセスは、
それぞれステップA81で説明した場合と同様の形態で
実行される。
ッシュEEPROMにおけるライトブロックと被スワッ
ピング対象ブロック間の記憶内容の入れ替えのために、
RAM13上に吸い上げた被スワッピングブロックの内
容をライト対象フラッシュEEPROMのライトブロッ
クに書き込むためのライトアクセスと、フラッシュEE
PROMの被スワッピングブロックにRAM13上の1
ブロック分のライトデータを書き込むためのライトアク
セスを行う。この後、ファームウェアは、ライト対象フ
ラッシュEEPROMにおけるMBIテーブルブロック
の更新のために、ライト対象フラッシュEEPROMに
おけるMBIテーブルブロックにRAM13上の更新さ
れたMBIテーブルブロックの内容を書き込むためのラ
イトアクセスを行う。これら3回のライトアクセスは、
それぞれステップA81で説明した場合と同様の形態で
実行される。
【0155】次に、ステップA86においてライトブロ
ックの更新されたUWCデータとライト対象チップの最
小UWCデータとの値の差がα未満であった場合の処理
について説明する。
ックの更新されたUWCデータとライト対象チップの最
小UWCデータとの値の差がα未満であった場合の処理
について説明する。
【0156】この場合、ファームウェアは、ライトブロ
ックの更新されたUWCデータと他のいずれかのチップ
の最小UWCデータとの値の差が予め決められたしきい
値(α+β)以上であるか否かを調べ(ステップA8
7)、その差がα+β以上であれば、ライト対象チップ
とその最小UWCデータの値を持つチップとの間でのス
ワッピング操作を行う(ステップA88)。
ックの更新されたUWCデータと他のいずれかのチップ
の最小UWCデータとの値の差が予め決められたしきい
値(α+β)以上であるか否かを調べ(ステップA8
7)、その差がα+β以上であれば、ライト対象チップ
とその最小UWCデータの値を持つチップとの間でのス
ワッピング操作を行う(ステップA88)。
【0157】このチップ間に亙るスワッピング操作にお
いては、ファームウェアは、まず、被スワッピング対象
のブロックを持つチップからMBIテーブルブロックを
RAM13上にリードし、そのMBIテーブルブロック
に含まれているスワップオーダーテーブル上の被スワッ
ピング優先度NO.1ブロック番号を認識する。
いては、ファームウェアは、まず、被スワッピング対象
のブロックを持つチップからMBIテーブルブロックを
RAM13上にリードし、そのMBIテーブルブロック
に含まれているスワップオーダーテーブル上の被スワッ
ピング優先度NO.1ブロック番号を認識する。
【0158】次いで、ファームウェアは、被スワッピン
グ優先度NO.1ブロック番号が示す物理ブロックアド
レスを用いて、その被スワッピング対象チップから被ス
ワッピング対象ブロックをリードする。
グ優先度NO.1ブロック番号が示す物理ブロックアド
レスを用いて、その被スワッピング対象チップから被ス
ワッピング対象ブロックをリードする。
【0159】次に、ファームウェアは、ライトブロック
と被スワッピング対象ブロック間でホストアドレスの入
れ替えを行う。この場合、RAM132上のアドレス変
換テーブル132と、ライト対象チップからリードした
MBIテーブルブロックと、被スワッピング対象チップ
からリードしたMBIテーブルブロックのそれぞれのア
ドレス変換情報が更新される。
と被スワッピング対象ブロック間でホストアドレスの入
れ替えを行う。この場合、RAM132上のアドレス変
換テーブル132と、ライト対象チップからリードした
MBIテーブルブロックと、被スワッピング対象チップ
からリードしたMBIテーブルブロックのそれぞれのア
ドレス変換情報が更新される。
【0160】次に、ファームウェアは、ライト対象フラ
ッシュEEPROMにおけるライトブロックと被スワッ
ピング対象チップの被スワッピング対象ブロック間の記
憶内容の入れ替えのために、RAM13上に吸い上げた
被スワッピングブロックの内容をライト対象フラッシュ
EEPROMのライトブロックに書き込むためのライト
アクセスと、被スワッピング対象フラッシュEEPRO
Mの被スワッピングブロックにRAM13上の1ブロッ
ク分のライトデータを書き込むためのライトアクセスを
行う。この後、ファームウェアは、ライト対象フラッシ
ュEEPROM被スワッピング対象フラッシュEEPR
OMそれぞれのMBIテーブルブロックを更新するため
に、ライト対象フラッシュEEPROMにおけるMBI
テーブルブロックにRAM13上の更新されたMBIテ
ーブルブロックの内容を書き込むためのライトアクセス
と、被スワッピング対象フラッシュEEPROMにおけ
るMBIテーブルブロックにRAM13上の更新された
MBIテーブルブロックの内容を書き込むためのライト
アクセスとを行う。これら4回のライトアクセスは、そ
れぞれステップA81で説明した場合と同様の形態で実
行される。
ッシュEEPROMにおけるライトブロックと被スワッ
ピング対象チップの被スワッピング対象ブロック間の記
憶内容の入れ替えのために、RAM13上に吸い上げた
被スワッピングブロックの内容をライト対象フラッシュ
EEPROMのライトブロックに書き込むためのライト
アクセスと、被スワッピング対象フラッシュEEPRO
Mの被スワッピングブロックにRAM13上の1ブロッ
ク分のライトデータを書き込むためのライトアクセスを
行う。この後、ファームウェアは、ライト対象フラッシ
ュEEPROM被スワッピング対象フラッシュEEPR
OMそれぞれのMBIテーブルブロックを更新するため
に、ライト対象フラッシュEEPROMにおけるMBI
テーブルブロックにRAM13上の更新されたMBIテ
ーブルブロックの内容を書き込むためのライトアクセス
と、被スワッピング対象フラッシュEEPROMにおけ
るMBIテーブルブロックにRAM13上の更新された
MBIテーブルブロックの内容を書き込むためのライト
アクセスとを行う。これら4回のライトアクセスは、そ
れぞれステップA81で説明した場合と同様の形態で実
行される。
【0161】このように、スワッビング操作はチップ
内、又はチップ間で実行され、チップ間スワッピングの
場合はチップ内スワッピングの場合よりも、リードアク
セス操作およびライトアクセス操作がそれぞれ1回ずつ
多く必要となる。
内、又はチップ間で実行され、チップ間スワッピングの
場合はチップ内スワッピングの場合よりも、リードアク
セス操作およびライトアクセス操作がそれぞれ1回ずつ
多く必要となる。
【0162】しかしながら、この実施形態では、スワッ
ピングを行うか否かを決定するためのしきい値(α+
β)は、チップ内のスワッピング操作を行う場合のしき
い値(α)よりも大きな値に設定されているので、チッ
プ内スワッピングに比べチップ間スワッピングの発生頻
度を抑制する事ができる。よって、チップ間スワッピン
グ操作の多発による性能低下を防止する事ができる。
ピングを行うか否かを決定するためのしきい値(α+
β)は、チップ内のスワッピング操作を行う場合のしき
い値(α)よりも大きな値に設定されているので、チッ
プ内スワッピングに比べチップ間スワッピングの発生頻
度を抑制する事ができる。よって、チップ間スワッピン
グ操作の多発による性能低下を防止する事ができる。
【0163】ステップA85,およびA87で共に置き
換え回数の差が所定のしきい値よりも小さい場合には、
ファームウェアは、ステップA83で更新されたUWC
データを含むMBIテーブルブロックをライト対象のフ
ラッシュEEPROMに書き込むためのライトアクセス
を行い(ステップA89)、次いで、ライトブロックに
対するライトアクセス処理を実行する。これらライトア
クセスは、それぞれステップA81で説明した場合と同
様の形態で実行される。
換え回数の差が所定のしきい値よりも小さい場合には、
ファームウェアは、ステップA83で更新されたUWC
データを含むMBIテーブルブロックをライト対象のフ
ラッシュEEPROMに書き込むためのライトアクセス
を行い(ステップA89)、次いで、ライトブロックに
対するライトアクセス処理を実行する。これらライトア
クセスは、それぞれステップA81で説明した場合と同
様の形態で実行される。
【0164】以上のように、LWCデータの桁上がりが
発生しない場合にはスワッピング処理の検討がなされず
に直ぐにライトアクセスが行われるので、桁上がりが発
生した場合よりもデータ書込みに要する全体の時間を短
縮する事ができる。
発生しない場合にはスワッピング処理の検討がなされず
に直ぐにライトアクセスが行われるので、桁上がりが発
生した場合よりもデータ書込みに要する全体の時間を短
縮する事ができる。
【0165】LWCデータの値はライトアクセスの度に
その初期値から+1ずつカウントアップされ、そして1
K回に達した時に桁上がりが発生する。このため、ディ
スク製造時や出荷時においてフラッシュEEPROM1
1−1〜11−16に含まれる全てのブロックに書き込
むLWCデータの初期値としては、同一の値ではなく、
それぞれ異なる離散的な値を利用することが好ましい。
この場合、連続ブロックに対するライトアクセスが継続
的に発生したとしても桁上がりが発生する時期がブロッ
ク毎にずれるので、桁上りに起因するスワッピングの検
討処理およびスワッピング処理が集中して発生するとい
う事態を防止する事ができる。
その初期値から+1ずつカウントアップされ、そして1
K回に達した時に桁上がりが発生する。このため、ディ
スク製造時や出荷時においてフラッシュEEPROM1
1−1〜11−16に含まれる全てのブロックに書き込
むLWCデータの初期値としては、同一の値ではなく、
それぞれ異なる離散的な値を利用することが好ましい。
この場合、連続ブロックに対するライトアクセスが継続
的に発生したとしても桁上がりが発生する時期がブロッ
ク毎にずれるので、桁上りに起因するスワッピングの検
討処理およびスワッピング処理が集中して発生するとい
う事態を防止する事ができる。
【0166】以上説明したように、この実施形態におい
ては、書換回数を記録するための専用の書換回数記述ブ
ロック内に複数の消去ブロックそれぞれの書換回数を記
述するための書換回数テーブルが作成される。この書換
回数テーブルには消去済み且つ未書き込みの空き領域が
確保されており、データ書換が発生する度に、その空き
領域に、書き換えられるブロックを示すブロック番号と
その書換回数を示す書換回数データとを含む書換回数情
報が追記方式で書き込まれる。従って、書換回数テーブ
ルに空き領域が無くなるまでは、書換回数記述ブロック
に対する消去動作は発生しない。また、書換回数テーブ
ル上に空き領域が無くなったときは、その時点でブロッ
ク消去を行うのではなく、書換回数テーブルの内容と追
記された書換回数情報とに基づいて新たな書換回数テー
ブルを作成し、この作成した書換回数テーブルを書換回
数記述ブロック上の予備領域に書き込むことによって、
書換回数テーブル自体の更新も追記方式にて行っている
ので、さらに書換回数記述ブロックの消去発生頻度を低
く押さえることが可能となる。
ては、書換回数を記録するための専用の書換回数記述ブ
ロック内に複数の消去ブロックそれぞれの書換回数を記
述するための書換回数テーブルが作成される。この書換
回数テーブルには消去済み且つ未書き込みの空き領域が
確保されており、データ書換が発生する度に、その空き
領域に、書き換えられるブロックを示すブロック番号と
その書換回数を示す書換回数データとを含む書換回数情
報が追記方式で書き込まれる。従って、書換回数テーブ
ルに空き領域が無くなるまでは、書換回数記述ブロック
に対する消去動作は発生しない。また、書換回数テーブ
ル上に空き領域が無くなったときは、その時点でブロッ
ク消去を行うのではなく、書換回数テーブルの内容と追
記された書換回数情報とに基づいて新たな書換回数テー
ブルを作成し、この作成した書換回数テーブルを書換回
数記述ブロック上の予備領域に書き込むことによって、
書換回数テーブル自体の更新も追記方式にて行っている
ので、さらに書換回数記述ブロックの消去発生頻度を低
く押さえることが可能となる。
【0167】なお、この実施形態では、書換回数記述ブ
ロックの書換回数テーブルにLWCを記録したが、書換
回数記憶領域は3バイトあるのでそこにUWC+LWC
を書き込むようにしてもよい。
ロックの書換回数テーブルにLWCを記録したが、書換
回数記憶領域は3バイトあるのでそこにUWC+LWC
を書き込むようにしてもよい。
【0168】また、この実施形態では、書換回数の記録
および管理を全てマイクロプロセッサによって実行させ
たが、マイクロプロセッサを持たないフラッシュメモリ
カードの場合には、そのカードを制御するソフトウェア
であるフラッシュメモリカードドライバによって前述の
書換回数の記録および管理を行えばよい。この場合の構
成例を図18に示す。
および管理を全てマイクロプロセッサによって実行させ
たが、マイクロプロセッサを持たないフラッシュメモリ
カードの場合には、そのカードを制御するソフトウェア
であるフラッシュメモリカードドライバによって前述の
書換回数の記録および管理を行えばよい。この場合の構
成例を図18に示す。
【0169】フラッシュメモリカード11AはJEID
A/PCMCIAに準拠した物理的および電気的仕様を
持つPCカードであり、他のPCカード12Aと同様
に、パーソナルコンピュータのPCカードホストアダプ
タ13Aが提供するカードスロットに取り外し自在に装
着される。
A/PCMCIAに準拠した物理的および電気的仕様を
持つPCカードであり、他のPCカード12Aと同様
に、パーソナルコンピュータのPCカードホストアダプ
タ13Aが提供するカードスロットに取り外し自在に装
着される。
【0170】フラッシュメモリカード11Aの認識およ
びアクセスは、パーソナルコンピュータのシステムメモ
リにロードされて実行されるフラッシュメモリカードド
ライバ14A、カードサービス15A、ソケットサービ
ス16A、およびメモリテクノロジトライバ17Aなど
によって制御される。フラッシュメモリカードドライバ
14Aは、フラッシュメモリカード11Aに対応したデ
バイスドライバプログラムであり、JEIDA/PCM
CIAで規定されているクライアントドライバとして使
用される。このフラッシュメモリカードドライバ14A
は、オペレーティングシステム18Aやアプリケーショ
ンプログラム19Aからのコマンドをフラッシュメモリ
カード11A用のコマンド(ページライトコマンド、ペ
ージリードコマンド、ブロックイレーズコマンドなど)
に変換して、フラッシュメモリカード11Aをアククセ
ス制御する。
びアクセスは、パーソナルコンピュータのシステムメモ
リにロードされて実行されるフラッシュメモリカードド
ライバ14A、カードサービス15A、ソケットサービ
ス16A、およびメモリテクノロジトライバ17Aなど
によって制御される。フラッシュメモリカードドライバ
14Aは、フラッシュメモリカード11Aに対応したデ
バイスドライバプログラムであり、JEIDA/PCM
CIAで規定されているクライアントドライバとして使
用される。このフラッシュメモリカードドライバ14A
は、オペレーティングシステム18Aやアプリケーショ
ンプログラム19Aからのコマンドをフラッシュメモリ
カード11A用のコマンド(ページライトコマンド、ペ
ージリードコマンド、ブロックイレーズコマンドなど)
に変換して、フラッシュメモリカード11Aをアククセ
ス制御する。
【0171】また、フラッシュメモリカードドライバ1
4Aは、フラッシュメモリカード11Aの信頼性を向上
させるために、前述した書換回数の記録および管理機能
や、不良ブロックの代替機能などを有している。
4Aは、フラッシュメモリカード11Aの信頼性を向上
させるために、前述した書換回数の記録および管理機能
や、不良ブロックの代替機能などを有している。
【0172】カードサービス15A、ソケットサービス
16A、およびメモリテクノロジドライバ17Aは、そ
れぞれJEIDA/PCMCIAによって規定されたド
ライバプログラム群であり、PCカードのリソース管
理、PCカード認識などに利用される。
16A、およびメモリテクノロジドライバ17Aは、そ
れぞれJEIDA/PCMCIAによって規定されたド
ライバプログラム群であり、PCカードのリソース管
理、PCカード認識などに利用される。
【0173】フラッシュメモリカード11Aは、パーソ
ナルコンピュータの2次記憶装置として利用されるPC
カードであり、アトリビュートメモリ111Aと、コモ
ンメモリ112Aを内蔵している。これらメモリは、前
述のフラッシュEEPROMによって構成されている。
ナルコンピュータの2次記憶装置として利用されるPC
カードであり、アトリビュートメモリ111Aと、コモ
ンメモリ112Aを内蔵している。これらメモリは、前
述のフラッシュEEPROMによって構成されている。
【0174】
【発明の効果】以上説明したように、この発明によれ
ば、書換回数を記録しているブロック自体の消去発生頻
度をそれ以外の他の一般のブロックと同程度以下に押さ
えられるようになり、書換回数の管理を専用の消去ブロ
ックで集中して効率的に行うことが可能となる。
ば、書換回数を記録しているブロック自体の消去発生頻
度をそれ以外の他の一般のブロックと同程度以下に押さ
えられるようになり、書換回数の管理を専用の消去ブロ
ックで集中して効率的に行うことが可能となる。
【図1】この発明の一実施形態に係る半導体ディスク装
置の構成を示すブロック図。
置の構成を示すブロック図。
【図2】図1の半導体ディスク装置において使用される
NAND型フラッシュEEPROMの構造を示す図。
NAND型フラッシュEEPROMの構造を示す図。
【図3】図1の半導体ディスク装置に設けられているI
/Oレジスタ群を示す図。
/Oレジスタ群を示す図。
【図4】図1の半導体ディスク装置におけるメモリマッ
プの一例を示す図。
プの一例を示す図。
【図5】図1の半導体ディスク装置に設けられたフラッ
シュEEPROM内の複数ブロックそれぞれの利用形態
を示す図。
シュEEPROM内の複数ブロックそれぞれの利用形態
を示す図。
【図6】図5に示したブロックの中でユーザデータの格
納に使用されるメモリブロックのデータ格納形式を示す
図。
納に使用されるメモリブロックのデータ格納形式を示す
図。
【図7】図5に示したブロックの中でメモリブロック管
理情報の格納に使用されるMBIテーブルブロックのデ
ータ格納形式を示す図。
理情報の格納に使用されるMBIテーブルブロックのデ
ータ格納形式を示す図。
【図8】図7のMBIテーブルブロックに格納されるア
ドレス変換およびUWCテーブルの内容を示す図。
ドレス変換およびUWCテーブルの内容を示す図。
【図9】図7のMBIテーブルブロックに格納されるス
ワップオーダーテーブルの内容を示す図。
ワップオーダーテーブルの内容を示す図。
【図10】図5に示したブロックの中で図1の半導体デ
ィスク装置のコンヒィグ情報の格納に使用されるコンヒ
ィグブロックのデータ格納形式を示す図。
ィスク装置のコンヒィグ情報の格納に使用されるコンヒ
ィグブロックのデータ格納形式を示す図。
【図11】図5に示したブロックの中で図1の半導体デ
ィスク装置の書換回数の記録に使用される書換回数記述
ブロックのデータ格納形式を示す図。
ィスク装置の書換回数の記録に使用される書換回数記述
ブロックのデータ格納形式を示す図。
【図12】図11の書換回数記述ブロックに作成される
書換回数テーブルのデータ形式を示す図。
書換回数テーブルのデータ形式を示す図。
【図13】図12の書換回数テーブルの更新処理の原理
を説明するための図。
を説明するための図。
【図14】図12の書換回数テーブルの更新処理の手順
を示すフローチャート。
を示すフローチャート。
【図15】図1の半導体ディスク装置のRAM上に設け
られるアドレス変換テーブルの構成を示す図。
られるアドレス変換テーブルの構成を示す図。
【図16】図15のアドレス変換テーブルを利用したホ
ストアドレスからメモリアドレスへの変換処理の原理を
説明するための図。
ストアドレスからメモリアドレスへの変換処理の原理を
説明するための図。
【図17】図1の半導体ディスク装置においてホストシ
ステムからのライト要求を受信してからフラッシュEE
PROMをライトアクセスするまでに実行される書き込
み処理の手順を説明するフローチャート。
ステムからのライト要求を受信してからフラッシュEE
PROMをライトアクセスするまでに実行される書き込
み処理の手順を説明するフローチャート。
【図18】図1の半導体ディスク装置の他の構成の一例
を示す図。
を示す図。
10…半導体ディスク装置、11−1〜11−16…N
AND型フラッシュEEPROM、12…コントロー
ラ、13…RAM、14…マイクロプロセッサ、16…
ROM、17…外部バスインタフェース、19…NAN
Dバスインタフェ−ス、21…ECC演算回路、131
…データバッファ、132…アドレス変換テーブル、1
33…ヘッダテーブル。
AND型フラッシュEEPROM、12…コントロー
ラ、13…RAM、14…マイクロプロセッサ、16…
ROM、17…外部バスインタフェース、19…NAN
Dバスインタフェ−ス、21…ECC演算回路、131
…データバッファ、132…アドレス変換テーブル、1
33…ヘッダテーブル。
Claims (8)
- 【請求項1】 複数の消去ブロックを含むフラッシュE
EPROMを内蔵し、ホスト装置からのディスクアクセ
ス要求に応じて前記フラッシュEEPROMをアクセス
する半導体ディスク装置において、 前記複数の消去ブロックそれぞれの書換回数を記述する
ための書換回数テーブルを前記複数の消去ブロックの中
の所定の消去ブロック上に作成する手段と、 前記各消去ブロックの書き換えが発生される度、その書
き換えられた消去ブロックを示すブロック番号とその書
換回数を示す書換回数データとを含む書換回数情報を、
前記書換回数テーブル上の記憶領域の中で消去済み且つ
未書き込みの空き領域に追記する書換回数情報追記手段
とを具備し、 書換回数を記録するための専用の消去ブロックを使用し
て前記複数の消去ブロックそれぞれの書換回数を管理で
きるようにしたことを特徴とする半導体ディスク装置。 - 【請求項2】 前記書換回数テーブル上に前記空き領域
が無くなったとき、前記書換回数テーブルの内容と前記
追記された書換回数情報とに基づいて新たな書換回数テ
ーブルを作成し、この作成した書換回数テーブルを、前
記所定の消去ブロック上の記憶領域の中で消去済み且つ
未書き込みの空き領域に追記する書換回数テーブル追記
手段をさらに具備することを特徴とする請求項1記載の
半導体ディスク装置。 - 【請求項3】 複数の消去ブロックを含むフラッシュE
EPROMを内蔵し、ホスト装置からのディスクアクセ
ス要求に応じて前記フラッシュEEPROMをアクセス
する半導体ディスク装置において、 前記複数の消去ブロックを複数のグループに分割し、グ
ールプ毎に、そのグループに属する消去ブロックそれぞ
れの書換回数を記述するための書換回数テーブルを互い
に異なる消去ブロック上に作成する手段と、 前記各消去ブロックの書き換えが発生される度、その書
き換えられた消去ブロックを示すブロック番号とその書
換回数を示す書換回数データとを含む書換回数情報を、
前記書き換えられた消去ブロックが属するグループに対
応する書換回数テーブル上の記憶領域の中で消去済み且
つ未書き込みの空き領域に追記する書換回数情報追記手
段とを具備し、 書換回数を記録するための専用の複数の消去ブロックを
使用して前記複数の消去ブロックそれぞれの書換回数を
管理できるようにしたことを特徴とする半導体ディスク
装置。 - 【請求項4】 前記書換回数テーブル上に前記空き領域
が無くなったとき、前記書換回数テーブルの内容と前記
追記された書換回数情報とに基づいて新たな書換回数テ
ーブルを作成し、この作成した書換回数テーブルを、前
記空き領域が無くなった書換回数テーブルが作成されて
いる消去ブロック上の記憶領域の中で消去済み且つ未書
き込みの空き領域に追記する書換回数テーブル追記手段
をさらに具備することを特徴とする請求項3記載の半導
体ディスク装置。 - 【請求項5】 複数の消去ブロックを含むフラッシュE
EPROMを内蔵した半導体デイスク装置の書換回数を
管理する書換回数管理方法において、 前記複数の消去ブロックそれぞれの書換回数を記述する
ための書換回数テーブルを前記複数の消去ブロックの中
の所定の消去ブロック上に作成し、 前記各消去ブロックの書き換えが発生される度、その書
き換えられた消去ブロックを示すブロック番号とその書
換回数を示す書換回数データとを含む書換回数情報を、
前記書換回数テーブル上の記憶領域の中で消去済み且つ
未書き込みの空き領域に追記し、 書換回数を記録するための専用の消去ブロックを使用し
て前記複数の消去ブロックそれぞれの書換回数を管理で
きるようにしたことを特徴とする書換回数管理方法。 - 【請求項6】 前記書換回数テーブル上に前記空き領域
が無くなったとき、前記書換回数テーブルの内容と前記
追記された書換回数情報とに基づいて新たな書換回数テ
ーブルを作成し、この作成した書換回数テーブルを、前
記所定の消去ブロック上の記憶領域の中で消去済み且つ
未書き込みの空き領域に追記することを特徴とする請求
項4記載の書換回数管理方法。 - 【請求項7】 複数の消去ブロックを含むフラッシュE
EPROMを内蔵した半導体デイスク装置の書換回数を
管理する書換回数管理方法において、 前記複数の消去ブロックを複数のグループに分割し、グ
ールプ毎に、そのグループに属する消去ブロックそれぞ
れの書換回数を記述するための書換回数テーブルを互い
に異なる消去ブロック上に作成し、 前記各消去ブロックの書き換えが発生される度、その書
き換えられた消去ブロックを示すブロック番号とその書
換回数を示す書換回数データとを含む書換回数情報を、
前記書き換えられた消去ブロックが属するグループに対
応する書換回数テーブル上の記憶領域の中で消去済み且
つ未書き込みの空き領域に追記し、 書換回数を記録するための専用の複数の消去ブロックを
使用して前記複数の消去ブロックそれぞれの書換回数を
管理できるようにしたことを特徴とする書換回数管理方
法。 - 【請求項8】 前記書換回数テーブル上に前記空き領域
が無くなったとき、前記書換回数テーブルの内容と前記
追記された書換回数情報とに基づいて新たな書換回数テ
ーブルを作成し、この作成した書換回数テーブルを、前
記空き領域が無くなった書換回数テーブルが作成されて
いる消去ブロック上の記憶領域の中で消去済み且つ未書
き込みの空き領域に追記することを特徴とする請求項7
記載の書換回数管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8005172A JPH09198201A (ja) | 1996-01-16 | 1996-01-16 | 半導体ディスク装置およびその書換回数管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8005172A JPH09198201A (ja) | 1996-01-16 | 1996-01-16 | 半導体ディスク装置およびその書換回数管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH09198201A true JPH09198201A (ja) | 1997-07-31 |
Family
ID=11603827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8005172A Pending JPH09198201A (ja) | 1996-01-16 | 1996-01-16 | 半導体ディスク装置およびその書換回数管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH09198201A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005258493A (ja) * | 2004-03-09 | 2005-09-22 | Buffalo Inc | 外部記憶装置 |
JP2010134899A (ja) * | 2008-10-30 | 2010-06-17 | Kyocera Corp | 電子機器及び電子機器の制御方法 |
US8230156B2 (en) | 1997-08-08 | 2012-07-24 | Kabushiki Kaisha Toshiba | Method for controlling non-volatile semiconductor memory system |
-
1996
- 1996-01-16 JP JP8005172A patent/JPH09198201A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230156B2 (en) | 1997-08-08 | 2012-07-24 | Kabushiki Kaisha Toshiba | Method for controlling non-volatile semiconductor memory system |
US8756401B2 (en) | 1997-08-08 | 2014-06-17 | Kabushiki Kaisha Toshiba | Method for controlling non-volatile semiconductor memory system |
JP2005258493A (ja) * | 2004-03-09 | 2005-09-22 | Buffalo Inc | 外部記憶装置 |
JP2010134899A (ja) * | 2008-10-30 | 2010-06-17 | Kyocera Corp | 電子機器及び電子機器の制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5603001A (en) | Semiconductor disk system having a plurality of flash memories | |
US6130837A (en) | Storage device employing a flash memory | |
US6347051B2 (en) | Storage device employing a flash memory | |
US6757800B1 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US7424593B2 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US7890732B2 (en) | Memory card and semiconductor device | |
US7404031B2 (en) | Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory | |
JPH07302176A (ja) | 半導体ディスク装置 | |
JPH08137634A (ja) | フラッシュディスクカード | |
JPH05204561A (ja) | フラッシュメモリを記憶媒体とした半導体ディスク | |
US20050281105A1 (en) | Memory card, semiconductor device, and method of controlling semiconductor memory | |
JPH07302175A (ja) | 半導体ディスク装置 | |
CN113138720B (zh) | 数据存储方法、存储器控制电路单元以及存储器存储装置 | |
JP2000285001A (ja) | 半導体フラッシュメモリ装置及びその制御方法 | |
JPH09198201A (ja) | 半導体ディスク装置およびその書換回数管理方法 | |
KR19990055972A (ko) | 블록 재할당 기능을 갖는 플래시 메모리 이용 보조기억장치 및 그 방법 |