インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

15.4.10.6. 不良ブロックマーカーの維持

フラッシュ・デバイス・メーカーは、製造時のデバイス検査の際に、検出された不良デバイスブロックにマークを付けます。各不良ブロックは、特定の既知のオフセット (通常はスペア領域のベース) にマークされます。不良ブロックのマーカーは、0xFF (消去されたフラッシュの通常の状態) 以外のバイト値です。

ECCが有効になっている場合、不良ブロックマーカーがページの最後のセクターのデータによって上書きされる場合があります。これは、NANDフラッシュ・コントローラーもまた、ページのメイン領域を使用してECC情報を格納しており、それによって最後のセクターがスペア領域にまで及ぶことで発生します。データを書き込む前にシステムで不良ブロック情報を保存し、フラッシュデバイス内の不良ブロックを正しく識別する必要があります。

NANDフラッシュ・コントローラーをコンフィグレーションし、ページの最後のセクターをスペア領域に書き込む際に、指定されたバイト数をスキップすることができます。このオプションにより、フラッシュ・コントローラーは不良ブロックマーカーを維持することができるようになります。このオプションを使用するには、configグループのspare_area_skip_bytesレジスターに必要なオフセットを書き込みます。例えば、デバイスのページサイズが2KBで、デバイスメーカーが不良ブロックマーカーをスペア領域の最初の2バイトに格納している場合は、spare_area_skip_bytesレジスターを2に設定します。フラッシュ・コントローラーは、スペア領域に重なるページの最後のセクターを書き込む際に、スペア領域のオフセット2から開始して、オフセット0の不良ブロックマーカーをスキップします。0の値 (デフォルト) は、バイトをスキップしないことを指定します。spare_area_skip_bytesの値は偶数にする必要があります。例えば、不良ブロックマーカーが1バイトの場合は、spare_area_skip_bytesを2に設定します。

メイン領域転送モードでは、NANDフラッシュ・コントローラーは不良ブロックマーカーをスキップしません。代わりに、configグループのspare_area_markerレジスターにプログラムされている値で不良ブロックマーカーを上書きします。この8ビット・レジスターをconfigグループのspare_area_skip_bytesレジスターとともに使用し、新しいマーカー値が書き込まれるページのスペア領域のバイトを決定します。例えば、ブロックを良好としてマークするには、spare_area_markerレジスターを0xFFに設定し、spare_area_skip_bytesレジスターを、スペア領域のベースから開始する、マーカーを書き込むバイト数に設定します。

スペア領域転送モードでは、NANDフラッシュ・コントローラーは、spare_area_skip_bytesレジスターおよびspare_area_markerレジスターを無視します。フラッシュ・コントローラーは、ホストまたはデバイスから受信したとおりにデータを転送します。

メイン+スペア領域転送モードでは、NANDフラッシュ・コントローラーは、ページの最後のセクターのスペア領域への書き込みを、spare_area_skip_bytesレジスターで指定されているオフセットから開始します。ただし、不良ブロックの識別子情報を含む領域は、ホストがページに書き込むデータによって上書きされます。ホストは、データセクターと不良ブロックマーカーの両方を書き込みます。フラッシュ・コントローラーは、ホスト・ソフトウェアに依存して、データを書き込む前に不良ブロックマーカーを適切に設定します。

図 40. 不良ブロックマーカー次の図は、NANDフラッシュ・コントローラーが不良ブロックマーカーをスキップする際の一例を示しています。この例では、フラッシュデバイスには2KBのページと64バイトのスペア領域があります。14バイトのセクターのECCが示されており、セクターごとに8バイトの訂正を備えます。