<figure><img src="image_1.png" /></figure>

HAL
open science

# Sector size in Magnetic, Electronic and Optical media

Charbel Tannous

► To cite this version:

Charbel Tannous. Sector size in Magnetic, Electronic and Optical media. Maitrise. Technologie des Médias, Brest, France. 2018, pp.16. hal-03882390

HAL Id: hal-03882390

https://cnrs.hal.science/hal-03882390

Submitted on 2 Dec 2022

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.
# Sector size in Magnetic, Electronic and Optical media

Charbel Tannous

► To cite this version:

Charbel Tannous. Sector size in Magnetic, Electronic and Optical media. Maitrise. Technologie des Médias, Brest, France. 2018, pp.16. hal-03882390v2

HAL Id: hal-03882390

https://cnrs.hal.science/hal-03882390v2

Submitted on 18 Oct 2024

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# Sector size in Magnetic, Electronic and Optical media

C. Tannous

<figure><img src="image_2.png" /></figure>

Université de Brest, Lab-STICC, CNRS-UMR 6285, F-29200 Brest, FRANCE

(Dated: December 2, 2022)

Information storage is reviewed from the magnetic, electronic and optical points of view. Sector size being the unit of information has a paramount importance in storage and retrieval of information. In this work we concentrate on sector coding and its length optimization in order to obtain the lowest BER (Bit Error Rate) during reading and writing of Information in magnetic, electronic and optical digital media.

PACS numbers: 75.70.-i, 84.40.Ua, 42.79.Vb, 42.70.Ln, 73.63.-b, 81.07.-b

Keywords: Magnetic Materials, Telecommunications, Optical storage devices, Optical media, Nanoscale materials electronic transport, Nanoscale materials fabrication and characterization

## Contents

<table><tr><td>I. Introduction</td><td>1</td></tr><tr><td>II. Line Coding</td><td>2</td></tr><tr><td>III. Error Correction and Coding</td><td>2</td></tr><tr><td>IV. Magnetic Storage</td><td>3</td></tr><tr><td>A. Historical CHS address coding and sector size</td><td>3</td></tr><tr><td>B. Error Correction codes for magnetic recording</td><td>5</td></tr><tr><td>C. Sector size increase issues</td><td>7</td></tr><tr><td>V. Electronic Storage</td><td>8</td></tr><tr><td>A. Error Correction codes for NAND Flash</td><td>9</td></tr><tr><td>VI. Optical Storage</td><td>11</td></tr><tr><td>A. Error Correction codes for Optical storage</td><td>11</td></tr><tr><td>A. Detailed description of Line and RLL codes</td><td>11</td></tr><tr><td>B. Galois, CRC and Partial response polynomials</td><td>12</td></tr><tr><td>C. Reed-Solomon codes</td><td>15</td></tr><tr><td>References</td><td>15</td></tr></table>

## I. INTRODUCTION

For a long time, the unit of binary information (sector) in Hard Disk Drives (HDD) has been fixed at 512 Bytes (about $\frac{1}{2}$ k-Byte or roughly 4k-bits) of data whereas in CD/DVD/Blu-Ray media a sector has been taken at about 2048 Bytes (2k-Bytes). In Flash electronic memories, a sector might be of 128, 256, 512...4096 Bytes. In this work we are interested in sector size meaning and optimization from the coding as well as error detection and correction points of view in magnetic, electronic and optical storage media.

Binary information storage is based on many steps of coding and equalization procedures. Coding encompasses signal and transmission channel in terms of binary representation, adaptation (line or modulation), error correction and pre-distortion (partial response). Another important operation is data compression that we do not tackle in this work.

Processing of binary information in terms of writing and reading for storage and transmission is briefly displayed in fig. 1.
# Sector size in Magnetic, Electronic and Optical media

C. Tannous

Université de Brest, Lab-STICC, CNRS-UMR 6285, F-29200 Brest, FRANCE

(Dated: October 18, 2024)

Information storage is reviewed from the magnetic, electronic and optical points of view. Sector size being the unit of information has a paramount importance in storage and retrieval of information. In this work we concentrate on sector coding and its length optimization in order to obtain the lowest BER (Bit Error Rate) during reading and writing of Information in magnetic, electronic and optical digital media.

PACS numbers: 75.70.-i, 84.40.Ua, 42.79.Vb, 42.70.Ln, 73.63.-b, 81.07.-b

Keywords: Magnetic Materials, Telecommunications, Optical storage devices, Optical media, Nanoscale materials electronic transport, Nanoscale materials fabrication and characterization

## Contents

<table><tr><td>I. Introduction</td><td>1</td></tr><tr><td>II. Line Coding</td><td>2</td></tr><tr><td>III. Error Correction and Coding</td><td>2</td></tr><tr><td>IV. Magnetic Storage</td><td>4</td></tr><tr><td>A. Historical CHS address coding and sector size</td><td>4</td></tr><tr><td>B. Error Correction codes for magnetic recording</td><td>5</td></tr><tr><td>C. Sector size increase issues</td><td>7</td></tr><tr><td>V. Electronic Storage</td><td>8</td></tr><tr><td>A. Error Correction codes for NAND Flash</td><td>9</td></tr><tr><td>VI. Optical Storage</td><td>11</td></tr><tr><td>A. Error Correction codes for Optical storage</td><td>11</td></tr><tr><td>A. Detailed description of Line and RLL codes</td><td>11</td></tr><tr><td>B. Galois, CRC and Partial response polynomials</td><td>12</td></tr><tr><td>C. Reed-Solomon codes</td><td>15</td></tr><tr><td>References</td><td>15</td></tr></table>

## I. INTRODUCTION

For a long time, the unit of binary information (sector) in Hard Disk Drives (HDD) has been fixed at 512 Bytes (about $\frac{1}{2}$ k-Byte or roughly 4k-bits) of data whereas in CD/DVD/Blu-Ray media a sector has been taken at about 2048 Bytes (2k-Bytes). In Flash electronic memories, a sector might be of 128, 256, 512...4096 Bytes. In this work we are interested in sector size meaning and optimization from the coding as well as error detection and correction points of view in magnetic, electronic and optical storage media.

Binary information storage is based on many steps of coding and equalization procedures. Coding encompasses signal and transmission channel in terms of binary representation, adaptation (line or modulation), error correction and pre-distortion (partial response). Another important operation is data compression that we do not tackle in this work.

Processing of binary information in terms of writing and reading for storage and transmission is briefly displayed in fig. 1.
<figure><img src="image_3.png" /><figcaption>FIG. 1: Coding chain in magnetic, optical and electronic recording.</figcaption></figure>

It is important to consider and evaluate sector size since it impacts coding efficiency gain, increased ECC (Error Correction Coding) performance and better handling of burst errors.

## II. LINE CODING

The first step in handling binary information for storage and transmission is line coding. Line coding (or Modulation coding) is applied in order to achieve at least three goals:

1. Automatic (self-contained) clock recovery in order to avoid an additional signal carrying time coding for the signal. This is detected when there is a peak in the spectrum.

2. AC coupling of bit signal: Since a raw bit is an antisymmetrical signal, harmonic distortion of the signal might occur. Symmetrizing the signal by removing the DC component makes it closer to a purely harmonic signal making it less prone to harmonic distortions.

3. Placing several zeroes between consecutive ones in order to avoid overlap and interference between consecutive ones, called ISI (Inter-Symbol Interference).

**Note:** In magnetic recording, if we decrease the number of $0 \rightarrow 1$ transitions, we might end up reducing errors while ignoring AC coupling.

## III. ERROR CORRECTION AND CODING

The description of digital error management starts with a statistical assessment of error rates observed in various communication channels [2], networks or storage media as given in Table I.

<table><caption>TABLE I: General BER in different media (see Mueller [3]).</caption><thead><tr><td>Media or Communication Channel</td><td>Error Rate</td></tr></thead><tbody><tr><td>HDD</td><td>&gt; 10<sup>-4</sup> ~ 10<sup>6</sup> errors in 10 GB</td></tr><tr><td>DAT (Digital Audio Tape)</td><td>10<sup>-5</sup> or 2 errors per second at 48 kHz</td></tr><tr><td>CDROM</td><td>10<sup>-5</sup> or 7kB errors on a 700 MB CD-ROM</td></tr><tr><td>Blu-ray disk</td><td>&lt; 2 × 10<sup>-4</sup> ~ 1.6 MB errors on a 32 GB disk</td></tr><tr><td>Flash electronics</td><td>≈ 10<sup>-5</sup></td></tr><tr><td>Solid-State Drives (SSD)</td><td>&lt; 10<sup>-5</sup></td></tr><tr><td>Semiconductor memories</td><td>&lt; 10<sup>-9</sup></td></tr><tr><td>Infrared remote control</td><td>10<sup>-12</sup></td></tr><tr><td>Optical fiber communications</td><td>10<sup>-9</sup></td></tr><tr><td>ADSL</td><td>10<sup>-3</sup> to 10<sup>-9</sup></td></tr></tbody></table>

In order to detect and correct the errors, we need EDC and ECC (Error detection and correction codes) algorithms classified as displayed in fig. 3.

We describe first magnetic storage, then electronic and finally optical.
<figure><img src="image_2.png" /><figcaption>FIG. 1: Coding chain in magnetic, optical and electronic recording.</figcaption></figure>

It is important to consider and evaluate sector size since it impacts coding efficiency gain, increased ECC (Error Correction Coding) performance and better handling of burst errors.

## II. LINE CODING

The first step in handling binary information for storage and transmission is line coding. Line coding (or Modulation coding) is applied in order to achieve at least three goals:

1. Automatic (self-contained) clock recovery in order to avoid an additional signal carrying time coding for the signal. This is detected when there is a peak in the spectrum.

2. AC coupling of bit signal: Since a raw bit is an antisymmetrical signal, harmonic distortion of the signal might occur. Symmetrizing the signal by removing the DC component makes it closer to a purely harmonic signal making it less prone to harmonic distortions.

3. Placing several zeroes between consecutive ones in order to avoid overlap and interference between consecutive ones, called ISI (Inter-Symbol Interference).

**Note:** In magnetic recording, if we decrease the number of $0 \rightarrow 1$ transitions, we might end up reducing errors while ignoring AC coupling.

## III. ERROR CORRECTION AND CODING

The description of digital error management starts with a statistical assessment of error rates observed in various communication channels [2], networks or storage media as given in Table I.

<table><caption>TABLE I: General BER in different media (see Mueller [3]).</caption><thead><tr><td>Media or Communication Channel</td><td>Error Rate</td></tr></thead><tbody><tr><td>HDD</td><td>&gt; 10<sup>-4</sup> ~ 10<sup>6</sup> errors in 10 GB</td></tr><tr><td>DAT (Digital Audio Tape)</td><td>10<sup>-5</sup> or 2 errors per second at 48 kHz</td></tr><tr><td>CDROM</td><td>10<sup>-5</sup> or 7kB errors on a 700 MB CD-ROM</td></tr><tr><td>Blu-ray disk</td><td>&lt; 2 &times; 10<sup>-4</sup> ~ 1.6 MB errors on a 32 GB disk</td></tr><tr><td>Flash electronics</td><td>≈ 10<sup>-5</sup></td></tr><tr><td>Solid-State Drives (SSD)</td><td>&lt; 10<sup>-5</sup></td></tr><tr><td>Semiconductor memories</td><td>&lt; 10<sup>-9</sup></td></tr><tr><td>Infrared remote control</td><td>10<sup>-12</sup></td></tr><tr><td>Optical fiber communications</td><td>10<sup>-9</sup></td></tr><tr><td>ADSL</td><td>10<sup>-3</sup> to 10<sup>-9</sup></td></tr></tbody></table>

In order to detect and correct the errors, we need EDC and ECC (Error detection and correction codes) algorithms classified as displayed in fig. 3.

We describe first magnetic storage, then electronic and finally optical.
<figure><img src="image_4.png" /><figcaption>FIG. 2: Line coding of information. Adapted from ref. [1].</figcaption></figure>

## IV. MAGNETIC STORAGE

Magnetic line coding displayed in fig. 4 is concerned with flux change triggered by magnetic media moving with respect to the read head device.

Presently an HDD sector can be as large as 4096 Bytes (4k-Bytes) and the question is why it took so long and what are the issues involved when selecting a sector size.

For instance, in the DVD, RSPC (Reed Solomon Product Code) coding requires 2064 Bytes whereas Picket code in Blu-Ray media requires 2074.5 Bytes [4].

In electronic memories (Flash), a sector size depends on the nature of the storage technology (single cell, double cell or multiple cells) and might be of 128, 256, 512...4096 Bytes.

### A. Historical CHS address coding and sector size

Address coding is based on CHS symbols representing Cylinders, Heads and Sectors. Heads address upper and lower faces of platters, thus the number of heads should be even. In 24 bit CHS coding we have $C= 10$ bits, meaning that $2^10=1024$ is the maximum number of cylinders (tracks), $H=8$ bits means we have $2^8=256$ magnetic surfaces or 128 platters containing magnetic information whereas $S=6$ bits means that $2^6=64$ sectors per track are allowed.

The extended CHS addressing scheme moved over to 28 bits allocated to overcome the 13H BIOS address limitation
<figure><img src="image_3.png" /><figcaption>FIG. 2: Modulation coding of information with associated time dependent waveforms. M and S are Mark and Space the older notation for 1 and 0. $T_b$ is bit period. When a coding goes from M to S the roles of 1 and 0 are interchanged. (*) is a unipolar RZ waveform in which 1 is represented by a non-zero voltage level at half the bit period. Adapted from Ref. [1].</figcaption></figure>

<figure><img src="image_4.png" /><figcaption>FIG. 3: Classification of ECC codes. Cyclic block codes comprise Reed-Solomon and BCH (Bose-Chaudhuri-Hocquenghem) codes. Block codes are characterized by $(n, k)$ where $n$ is the number of data bits and $k$ the number of parity bits with no memory. Convolutional codes are characterized by $(n, k, m)$ with $n$ the number of data bits and $k$ the number of parity bits and $m$ the number of memory steps. Note that a BCH$(n, k; t)$ code uses Galois polynomials (see Appendix) GF$(2^m)$ with $n$ bit codeword length and $k$ bit message length can correct up to $t$ error bits. Trellis codes are a mixture of Block and Convolutional.</figcaption></figure>
<figure><img src="image_5.png" /></figure>

FIG. 3: Classification of ECC codes. Cyclic block codes comprise Reed-Solomon and BCH (Bose-Chaudhuri-Hocquenghem) codes. Block codes are characterized by $(n, k)$ where $n$ is the number of data bits and $k$ the number of parity bits with no memory. Convolutional codes are characterized by $(n, k, m)$ with $n$ the number of data bits and $k$ the number of parity bits and $m$ the number of memory steps. Note that a BCH$(n, k; t)$ code uses Galois polynomials (see Appendix) GF$(2^m)$ with $n$ bit codeword length and $k$ bit message length can correct up to $t$ error bits. Trellis codes are a mixture of Block and Convolutional.

problem with 16 bits allocated to C, 4 bits to H and 8 bits to S. This means we now have 65536 cylinders, 16 platter faces and 256 sectors per track.

<figure><img src="image_6.png" /></figure>

FIG. 4: Magnetic Line coding of information. Adapted from [5].

Historically, we display in table II and table III the characteristics of the 512-Byte Sector Format in the IBM XT and AT machines.

The main issue is that when errors occur randomly in an isolated fashion, they are easy to correct but when they occur in large groups (bursts), they get extremely hard to correct.

This is why codes such as Reed-Solomon ECC are very efficient in combating burst errors in several media ranging from magnetic to electronic and optic and many types of communication channels ranging from wireless mass transmission such as DAB (Digital Audio Broadcasting) and DVB (Digital Video Broadcasting) to wired over the Internet Audio and Video streaming.

When disk size was about 100 MB, a $10^{-12}$ BER was largely sufficient since it implies reading the entire disk
IV. MAGNETIC STORAGE

Magnetic line coding displayed in fig. 4 is concerned with flux change triggered by magnetic media moving with
respect to the read head device.

Presently an HDD sector can be as large as 4096 Bytes (4k-Bytes) and the question is why it took so long and
what are the issues involved when selecting a sector size.

For instance, in the DVD, RSPC (Reed Solomon Product Code) coding requires 2064 Bytes whereas Picket code
in Blu-Ray media requires 2074.5 Bytes [4].

In electronic memories (Flash), a sector size depends on the nature of the storage technology (single cell, double cell or multiple cells) and might be of 128, 256, 512...4096 Bytes.

A. Historical CHS address coding and sector size

Address coding is based on CHS symbols representing Cylinders, Heads and Sectors. Heads address upper and lower faces of platters, thus the number of heads should be even. In 24 bit CHS coding we have C= 10 bits, meaning that 2¹⁰=1024 is the maximum number of cylinders (tracks), H=8 bits means we have 2⁸=256 magnetic surfaces or 128 platters containing magnetic information whereas S=6 bits means that 2⁶=64 sectors per track are allowed.

The extended CHS addressing scheme moved over to 28 bits allocated to overcome the 13H BIOS address limitation
problem with 16 bits allocated to C, 4 bits to H and 8 bits to S. This means we now have 65536 cylinders, 16 platter
faces and 256 sectors per track.

<figure><img src="image_5.png" /><figcaption>FIG. 4: Magnetic Line coding of information. Adapted from [5].</figcaption></figure>

Historically, we display in table II and table III the characteristics of the 512-Byte Sector Format in the IBM XT and AT machines.

The main issue is that when errors occur randomly in an isolated fashion, they are easy to correct but when they occur in large groups (bursts), they get extremely hard to correct.

This is why codes such as Reed-Solomon ECC are very efficient in combating burst errors in several media ranging
from magnetic to electronic and optic and many types of communication channels ranging from wireless mass
transmission such as DAB (Digital Audio Broadcasting) and DVB (Digital Video Broadcasting) to wired over the
<table><caption>TABLE II: IBM XT 512-Byte Sector Format (see Mueller [3]).</caption><thead><tr><td>Name</td><td>Bytes</td><td>Description</td></tr></thead><tbody><tr><td>Header</td><td>89</td><td>Gap, ID, Sync, Address Mark</td></tr><tr><td>Data</td><td>512</td><td>User data</td></tr><tr><td>Trailer</td><td>4</td><td>Error Correction Code (ECC)</td></tr><tr><td>Summary</td><td>605</td><td>Total Bytes/sector (84.6% efficient)</td></tr></tbody></table>

<table><caption>TABLE III: IBM AT 512-Byte Sector Format (see Mueller [3]).</caption><thead><tr><td>Name</td><td>Bytes</td><td>Description</td></tr></thead><tbody><tr><td>Header</td><td>71</td><td>Gap, ID, Sync, Address Mark</td></tr><tr><td>Data</td><td>512</td><td>User data</td></tr><tr><td>Trailer</td><td>4</td><td>Error Correction Code (ECC)</td></tr><tr><td>Summary</td><td>587</td><td>Total Bytes/sector (87.2% efficient)</td></tr></tbody></table>

several hundred times before encountering a read error since $1/10^{12}$ is equivalent to 1/127 GB (see Table. II).

As density increased with time, Signal to Noise Ratio (SNR) started decreasing (like the super-paramagnetic effect) and consequently the number of parity bits increased from 4 to 50 Bytes (as in Table. IV).

<table><caption>TABLE IV: 512-Byte sector format in a HDD (see Mueller [3]).</caption><thead><tr><td>Name</td><td>Bytes</td><td>Description</td></tr></thead><tbody><tr><td>Header</td><td>15</td><td>Gap, Sync, Address Mark</td></tr><tr><td>Data</td><td>512</td><td>User data</td></tr><tr><td>Trailer</td><td>50</td><td>Error Correction Code (ECC)</td></tr><tr><td>Summary</td><td>577</td><td>Efficiency= [Sector size]/[Total size]= 512/577= 88.7%</td></tr></tbody></table>

The main issue is retrieving binary stored data that is reading it with least error.

This implies the use of EDC and ECC as displayed in fig. 3.

## B. Error Correction codes for magnetic recording

An important ingredient in binary signaling is the runlength i.e. the number of consecutive bits having the same value. The runlength concept gave birth to RLL (Runlength limited) coding used to perform line coding in information storage. RLL coding has a set of parameters, $d, k, m, n, r$, noted as RLL($d, k, m, n, r$) and shortened to RLL($d, k$). $d$ is the minimal number of bits separating two consecutive ones whereas $k$ is the maximum number of zeroes separating two consecutive ones. $m$ is the minimum number of data bits to be encoded, $n$ is the number of code bits for each of the $m$ data bits. Thus $m/n$ is the code rate. $r$ is the number of different word lengths in a variable length code. DR is the Density Ratio or data bits per flux reversal or $(d+1)(m/n)$, FR is frequency ratio given by maximum time over minimum time between transitions or $(k+1)/(d+1)$.

$w$ = Detection window expressed as a percentage of a data bit cell, $w = 100(m/n)$ (see Table VI). Table V contains popular line codes in storage and communications along with their RLL equivalence, whereas Fig. 4 shows the signal aspect of the RLL coding.

The evolution of ECC is required in order to follow density increase as displayed in Table. VII where single BER is correlated with disk size.

Digital magnetic recording is based on several peculiarities related to its intrinsic nature:

1. While Hamming codes are based on bits, magnetic recording ECC is more efficient when bits are grouped in Bytes or blocks (symbols) such as with Reed-Solomon coding.
<table><caption>TABLE II: IBM XT 512-Byte Sector Format (see Mueller [3]).</caption><thead><tr><td>Name</td><td>Bytes</td><td>Description</td></tr></thead><tbody><tr><td>Header</td><td>89</td><td>Gap, ID, Sync, Address Mark</td></tr><tr><td>Data</td><td>512</td><td>User data</td></tr><tr><td>Trailer</td><td>4</td><td>Error Correction Code (ECC)</td></tr><tr><td>Summary</td><td>605</td><td>Total Bytes/sector (84.6% efficient)</td></tr></tbody></table>

<table><caption>TABLE III: IBM AT 512-Byte Sector Format (see Mueller [3]).</caption><thead><tr><td>Name</td><td>Bytes</td><td>Description</td></tr></thead><tbody><tr><td>Header</td><td>71</td><td>Gap, ID, Sync, Address Mark</td></tr><tr><td>Data</td><td>512</td><td>User data</td></tr><tr><td>Trailer</td><td>4</td><td>Error Correction Code (ECC)</td></tr><tr><td>Summary</td><td>587</td><td>Total Bytes/sector (87.2% efficient)</td></tr></tbody></table>

Internet Audio and Video streaming.

When disk size was about 100 MB, a $10^{-12}$ BER was largely sufficient since it implies reading the entire disk several hundred times before encountering a read error since $1/10^{12}$ is equivalent to 1/127 GB (see Table. II).

As density increased with time, Signal to Noise Ratio (SNR) started decreasing (like the super-paramagnetic effect) and consequently the number of parity bits increased from 4 to 50 Bytes (as in Table. IV).

<table><caption>TABLE IV: 512-Byte sector format in a HDD (see Mueller [3]).</caption><thead><tr><td>Name</td><td>Bytes</td><td>Description</td></tr></thead><tbody><tr><td>Header</td><td>15</td><td>Gap, Sync, Address Mark</td></tr><tr><td>Data</td><td>512</td><td>User data</td></tr><tr><td>Trailer</td><td>50</td><td>Error Correction Code (ECC)</td></tr><tr><td>Summary</td><td>577</td><td>Efficiency= [Sector size]/[Total size]= 512/577= 88.7%</td></tr></tbody></table>

The main issue is retrieving binary stored data that is reading it with least error.

This implies the use of EDC and ECC as displayed in fig. 3.

## B. Error Correction codes for magnetic recording

An important ingredient in binary signaling is the runlength i.e. the number of consecutive bits having the same value. The runlength concept gave birth to RLL (Runlength limited) coding used to perform line coding in information storage. RLL coding has a set of parameters, $d, k, m, n$, noted as RLL($d, k, m, n$) and shortened to RLL($d, k$). $d$ is the minimal number of bits separating two consecutive ones whereas $k$ is the maximum number of zeroes separating two consecutive ones. $m$ is the minimum number of data bits to be encoded, $n$ is the number of code bits for each of the $m$ data bits. Thus $m/n$ is the code rate. $DR$ is the Density Ratio or data bits per flux reversal or $(d+1)(m/n)$, $FR$ is frequency ratio given by maximum time over minimum time between transitions or $(k+1)/(d+1)$.

Table V contains popular line codes in magnetic storage along with their RLL equivalence, whereas Fig. 4 shows the signal aspect of the RLL coding.

The evolution of ECC is required in order to follow density increase as displayed in Table. VII where single BER is correlated with disk size.

Digital magnetic recording is based on several peculiarities related to its intrinsic nature:

1. While Hamming codes are based on bits, magnetic recording ECC is more efficient when bits are grouped in Bytes or blocks (symbols) such as with Reed-Solomon coding.
<table><caption>TABLE V: RLL coding. *d* is the minimal number of bits separating two consecutive ones whereas *k* is the maximum number of zeroes separating two consecutive ones (see Mueller [3]).</caption><thead><tr><th>Code</th><th>Rate</th><th>Capacity</th><th>Efficiency</th><th>d, k</th><th>Density</th><th>Detection</th><th>DC</th></tr><tr><th>Alternative names</th><th></th><th></th><th></th><th></th><th>Ratio</th><th>Window</th><th>Free</th></tr></thead><tbody><tr><td>NRZ-L</td><td>1</td><td>1</td><td>100%</td><td>0,∞</td><td>1</td><td>T</td><td>No</td></tr><tr><td colspan="8">NRZ-M</td></tr><tr><td>NRZI</td><td>1</td><td>1</td><td>100%</td><td>0,∞</td><td>1</td><td>T</td><td>No</td></tr><tr><td>BiPolar Half</td><td>1</td><td>1</td><td>100%</td><td>0,∞</td><td>1</td><td>T</td><td>No</td></tr><tr><td>BiPolar Full</td><td>1</td><td>1</td><td>100%</td><td>0,∞</td><td>1</td><td>T</td><td>No</td></tr><tr><td colspan="8">FM</td></tr><tr><td>Biphase-M</td><td>1/2</td><td>0.6942</td><td>72%</td><td>0,1</td><td>0.5</td><td>T/2</td><td>Yes</td></tr><tr><td>Phase Encoding</td><td>1/2</td><td>0.6942</td><td>72%</td><td>0,1</td><td>0.5</td><td>T/2</td><td>Yes</td></tr><tr><td>FSK</td><td>1/2</td><td>0.6942</td><td>72%</td><td>0,1</td><td>0.5</td><td>T/2</td><td>Yes</td></tr><tr><td colspan="8">Manchester</td></tr><tr><td>BiPhase L</td><td>1/2</td><td>0.6942</td><td>72%</td><td>0,1</td><td>0.5</td><td>T/2</td><td>Yes</td></tr><tr><td>E-NRZ</td><td>7/8</td><td>1</td><td>87.5%</td><td>0,13</td><td>0.875</td><td>T</td><td>No</td></tr><tr><td colspan="8">Miller</td></tr><tr><td>MFM</td><td>1/2</td><td>0.5515</td><td>90.6%</td><td>1,3</td><td>1</td><td>T/2</td><td>No</td></tr><tr><td>DM</td><td>1/2</td><td>0.5515</td><td>90.6%</td><td>1,3</td><td>1</td><td>T/2</td><td>No</td></tr><tr><td>Miller</td><td>1/2</td><td>0.6509</td><td>76.8%</td><td>1,5</td><td>1</td><td>T/2</td><td>Yes</td></tr><tr><td>RLL 2,7</td><td>1/2</td><td>0.5174</td><td>96.6%</td><td>2,7</td><td>1.5</td><td>T/2</td><td>No</td></tr></tbody></table>

<table><caption>TABLE VI: Line coding and RLL equivalence. Low density disks used FM, MFM and M2FM whereas high density uses RLL(1,7) and RLL(2,7). QIC is Quarter-Inch Cartridge magnetic tape. LAN is for Local Area Network Communications (over distances typical of a Campus or a firm) whereas MAN is for Metropolitan Area Network Communications (over distances pertaining to a City). Adapted from reference [5]</caption><thead><tr><th>Code</th><th>Application</th><th>d</th><th>k</th><th>m</th><th>n</th><th>r</th><th>DR</th><th>FR</th><th>w</th></tr></thead><tbody><tr><td>NRZ</td><td>Early HDD and magnetic tapes</td><td>0</td><td>∞</td><td>1</td><td>1</td><td>1</td><td>1.0</td><td>∞</td><td>100%</td></tr><tr><td>NRZI</td><td>Early HDD and magnetic tapes</td><td>0</td><td>∞</td><td>1</td><td>1</td><td>1</td><td>1.0</td><td>∞</td><td>100%</td></tr><tr><td>FM</td><td>Floppy disks</td><td>0</td><td>1</td><td>1</td><td>2</td><td>1</td><td>0.5</td><td>2.0</td><td>50%</td></tr><tr><td>MFM</td><td>HDD, IBM 3330</td><td>1</td><td>3</td><td>1</td><td>2</td><td>1</td><td>1.0</td><td>2.0</td><td>50%</td></tr><tr><td>M2FM</td><td>HDD</td><td>1</td><td>4</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>RLL(2,7)</td><td>HDD</td><td>2</td><td>7</td><td>2</td><td>4</td><td>3</td><td>1.5</td><td>2.67</td><td>50%</td></tr><tr><td>RLL(1,7)</td><td>QIC Magnetic Tape</td><td>1</td><td>7</td><td>2</td><td>3</td><td>1</td><td>1.33</td><td>4.0</td><td>64%</td></tr><tr><td>Manchester</td><td>LAN, MAN, Magnetic Recording</td><td>0</td><td>1</td><td></td><td></td><td></td><td>0.5</td><td></td><td>72%</td></tr><tr><td>Miller</td><td>LAN, MAN, Magnetic Recording</td><td>1</td><td>3</td><td></td><td></td><td></td><td></td><td></td><td>90.6%</td></tr><tr><td>Miller-Miller</td><td>LAN, MAN, Magnetic Recording</td><td>1</td><td>5</td><td></td><td></td><td></td><td></td><td></td><td>76.8%</td></tr><tr><td>EFM</td><td>CDROM</td><td>2</td><td>10</td><td>8</td><td>17</td><td>1</td><td>1.41</td><td>3.67</td><td>47%</td></tr></tbody></table>

<table><caption>TABLE VII: Bits/Tera-Bytes (TB) Read per Error (Unrecoverable Read Error Rates) as a function of drive size. The initial $10^{-12}$ BER had to be decreased to about $10^{-15}$ in order to cope with current drive density and size (see Mueller [3]). RAID is Redundant Array of Identical Disks.</caption><thead><tr><th>Bits read/Error</th><th>Tera-Bytes read/Error</th><th>Drive size (years)</th></tr></thead><tbody><tr><td>10<sup>12</sup></td><td>0.125</td><td>5MB-100MB (1980)</td></tr><tr><td>10<sup>13</sup></td><td>1.25</td><td>100MB-100GB (1980-1990)</td></tr><tr><td>10<sup>14</sup></td><td>12.5</td><td>1GB-3TB+ (Since 1990)</td></tr><tr><td>10<sup>15</sup></td><td>125</td><td>RAID (Since 1990)</td></tr></tbody></table>
<table><caption>TABLE V: RLL coding. *d* is the minimal number of bits separating two consecutive ones whereas *k* is the maximum number of zeroes separating two consecutive ones (see Mueller [3]).</caption><thead><tr><th>Code</th><th>Rate</th><th>Capacity</th><th>Efficiency</th><th>d, k</th><th>Density</th><th>Detection</th><th>DC</th></tr><tr><th>Alternative names</th><th></th><th></th><th></th><th></th><th>Ratio</th><th>Window</th><th>Free</th></tr></thead><tbody><tr><td>NRZ-L</td><td>1</td><td>1</td><td>100%</td><td>0,∞</td><td>1</td><td>T</td><td>No</td></tr><tr><td colspan="8">NRZ-M</td></tr><tr><td>NRZI</td><td>1</td><td>1</td><td>100%</td><td>0,∞</td><td>1</td><td>T</td><td>No</td></tr><tr><td>BiPolar Half</td><td>1</td><td>1</td><td>100%</td><td>0,∞</td><td>1</td><td>T</td><td>No</td></tr><tr><td>BiPolar Full</td><td>1</td><td>1</td><td>100%</td><td>0,∞</td><td>1</td><td>T</td><td>No</td></tr><tr><td colspan="8">FM</td></tr><tr><td>Biphase-M</td><td>1/2</td><td>0.6942</td><td>72%</td><td>0,1</td><td>0.5</td><td>T/2</td><td>Yes</td></tr><tr><td>Phase Encoding</td><td>1/2</td><td>0.6942</td><td>72%</td><td>0,1</td><td>0.5</td><td>T/2</td><td>Yes</td></tr><tr><td>FSK</td><td>1/2</td><td>0.6942</td><td>72%</td><td>0,1</td><td>0.5</td><td>T/2</td><td>Yes</td></tr><tr><td colspan="8">Manchester</td></tr><tr><td>BiPhase L</td><td>1/2</td><td>0.6942</td><td>72%</td><td>0,1</td><td>0.5</td><td>T/2</td><td>Yes</td></tr><tr><td>E-NRZ</td><td>7/8</td><td>1</td><td>87.5%</td><td>0,13</td><td>0.875</td><td>T</td><td>No</td></tr><tr><td colspan="8">Miller</td></tr><tr><td>MFM</td><td>1/2</td><td>0.5515</td><td>90.6%</td><td>1,3</td><td>1</td><td>T/2</td><td>No</td></tr><tr><td>DM</td><td>1/2</td><td>0.5515</td><td>90.6%</td><td>1,3</td><td>1</td><td>T/2</td><td>No</td></tr><tr><td>Miller</td><td>1/2</td><td>0.6509</td><td>76.8%</td><td>1,5</td><td>1</td><td>T/2</td><td>Yes</td></tr><tr><td>RLL 2,7</td><td>1/2</td><td>0.5174</td><td>96.6%</td><td>2,7</td><td>1.5</td><td>T/2</td><td>No</td></tr></tbody></table>

<table><caption>TABLE VI: Modulation coding and RLL equivalence. Low density disks used FM, MFM and M2FM whereas high density uses RLL(1,7) and RLL(2,7). RLL(d, k, m, n) coding (shortened to RLL(d, k), has parameters: *d*= Minimum number of consecutive zeroes allowed, *k*= Maximum number of consecutive zeroes allowed, *m* = Minimum number of data bits to be encoded, *n*= Number of code bits for each of the *m* data bits, *DR* is bit Density Ratio given by (*d* + 1) (*m*/*n*), *FR* is the frequency ratio *FR* = (*k* + 1)/(*d* + 1). Note that MFM is a variant of Miller. Miller-Miller coding was invented, in fact, by Mallinson and Miller [6]. QIC is Quarter-Inch Cartridge magnetic tape. Adapted from Ref. [5].</caption><thead><tr><th>Code</th><th>Application</th><th>d</th><th>k</th><th>m</th><th>n</th><th>DR</th><th>FR</th></tr></thead><tbody><tr><td>NRZ</td><td>Early HDD and magnetic tapes</td><td>0</td><td>∞</td><td>1</td><td>1</td><td>1</td><td>∞</td></tr><tr><td>NRZI</td><td>Early HDD and magnetic tapes</td><td>0</td><td>∞</td><td>1</td><td>1</td><td>1</td><td>∞</td></tr><tr><td>FM</td><td>Floppy disks</td><td>0</td><td>1</td><td>1</td><td>2</td><td>0.5</td><td>2.0</td></tr><tr><td>MFM</td><td>HDD, IBM 3330</td><td>1</td><td>3</td><td>1</td><td>2</td><td>1</td><td>2.0</td></tr><tr><td>Miller</td><td>HDD</td><td>1</td><td>3</td><td>1</td><td>2</td><td>1</td><td>2.0</td></tr><tr><td>Miller-Miller</td><td>HDD</td><td>1</td><td>5</td><td>1</td><td>2</td><td>1</td><td>3.0</td></tr><tr><td>M2FM</td><td>Floppy disks</td><td>1</td><td>4</td><td>1</td><td>2</td><td>1</td><td>2.5</td></tr><tr><td>RLL(1,7)</td><td>QIC Magnetic Tape</td><td>1</td><td>7</td><td>2</td><td>3</td><td>1.333</td><td>4.0</td></tr><tr><td>RLL(2,7)</td><td>HDD</td><td>2</td><td>7</td><td>2</td><td>4</td><td>1.5</td><td>2.67</td></tr><tr><td>Manchester</td><td>Magnetic Recording</td><td>0</td><td>1</td><td>1</td><td>2</td><td>0.5</td><td>2.0</td></tr></tbody></table>

<table><caption>TABLE VII: Bits/Tera-Bytes (TB) Read per Error (Unrecoverable Read Error Rates) as a function of drive size. The initial $10^{-12}$ BER had to be decreased to about $10^{-15}$ in order to cope with current drive density and size (see Mueller [3]). RAID is Redundant Array of Identical Disks.</caption><thead><tr><th>Bits read/Error</th><th>Tera-Bytes read/Error</th><th>Drive size (years)</th></tr></thead><tbody><tr><td>10<sup>12</sup></td><td>0.125</td><td>5MB-100MB (1980)</td></tr><tr><td>10<sup>13</sup></td><td>1.25</td><td>100MB-100GB (1980-1990)</td></tr><tr><td>10<sup>14</sup></td><td>12.5</td><td>1GB-3TB+ (Since 1990)</td></tr><tr><td>10<sup>15</sup></td><td>125</td><td>RAID (Since 1990)</td></tr></tbody></table>
2. Errors increase with storage density, thus ECC must evolve with density

3. Errors occur in a burst mode involving large number of adjacent bits while it would be preferable they occurred in widely separated bits.

4. Coding gain is proportional to $R^2$ with R the rate code whereas in simple Additive White Gaussian Noise (AWGN) channels coding gain is proportional to R (see for instance Immink [6])

5. Partial response coding is quite efficient for pulse coding since it is based on correlative coding implying controlled ISI intentionally introduced in the signal in order to reduce ISI.

The read/write channel has tremendously evolved starting from simple peak-detection circuits and single burst-error correcting Fire codes, an extension of CRC codes, to more powerful coding techniques.

The introduction of maximum-likelihood detection [7] implied more accurate equalization and use of Viterbi detectors capable of accounting for signal-dependent noise and non-linear distortion [8]. Error-correction schemes quickly moved to using universally Reed-Solomon codes. HDD based on 512B sectors typically use ECC codes based on 10-bit symbols correcting 20 or more error symbols.

With HDD based on 4kB sectors, ECC codes based on 12-bit symbols are used. The next stage was the introduction of iterative detection [9] described by a typically gradual converging behavior as it ran iteratively between matching expected waveforms in the recording channel and respecting simultaneously the constraints imposed by parity checks.

ECC in hard drives is traditionally performed with CRC (Cyclic Redundancy Check [10]) or Fire codes [11, 12], their natural extension.

Later Reed-Solomon ECC was used in order to decrease BER down to $10^{-12}$ since CRC [10] could only achieve at that time a BER of about $10^{-10}$. Reed-Solomon are constructed with Galois polynomials GF$(2^m)$ where m is the symbol size (see Table X). As an example, supposing we need to code a sequence of 577 Bytes (as in Table IV), GF$(2^9)$ is not adequate however GF$(2^{10})$ is.

### C. Sector size increase issues

Increasing sector size offers, in fact, several benefits listed below:

1. Efficiency gain: Instead of making sequences of $8 \times 512$B sectors with their overheads, one deals with a single sector of 4kB with a smaller size overhead as depicted in fig. 5.

<figure><img src="image_7.png" /><figcaption>FIG. 5: (Color on line) Comparison of eight 512B and a single 4kB sector. Headers are in blue, ECC in Green and Trailer in Magenta. Headers comprise Gap, Sync and Address Mark (AM). Green blocks comprise CRC, ECC, Gap, Sync and AM. Trailer consists of a Gap. The 4kB sector is shorter than all eight 512B blocks while containing the same information. Moreover it is more efficient ECC wise and in combating burst errors.</figcaption></figure>

2. Better efficiency of ECC: 100 Bytes of ECC for a single 4kB block are as reliable as 320 Bytes of ECC for eight 512 Byte blocks. From table X we infer 9.8% coding overhead in the 512B sector and a 2.4% in the 4K case.

3. Better handling of burst errors. Ordinary ECC can correct up to 50 Byte bursts. When burst error size goes from 50B to 200B, 512B sectors are strongly affected implying that increasing sector size will be more beneficial in the case of large burst errors.

In table VIII, are displayed the 4k-Byte sector characteristics in a HDD and in table IX, several sector sizes with their respective performance are compared.
2. Errors increase with storage density, thus ECC must evolve with density

3. Errors occur in a burst mode involving large number of adjacent bits while it would be preferable they occurred in widely separated bits.

4. Coding gain is proportional to $R^2$ with R the rate code whereas in simple Additive White Gaussian Noise (AWGN) channels coding gain is proportional to R (see for instance Immink [6])

5. Partial response coding is quite efficient for pulse coding since it is based on correlative coding implying controlled ISI intentionally introduced in the signal in order to reduce ISI.

The read/write channel has tremendously evolved starting from simple peak-detection circuits and single burst-error correcting Fire codes, an extension of CRC codes, to more powerful coding techniques.

The introduction of maximum-likelihood detection [7] implied more accurate equalization and use of Viterbi detectors capable of accounting for signal-dependent noise and non-linear distortion [8]. Error-correction schemes quickly moved to using universally Reed-Solomon codes. HDD based on 512B sectors typically use ECC codes based on 10-bit symbols correcting 20 or more error symbols.

With HDD based on 4kB sectors, ECC codes based on 12-bit symbols are used. The next stage was the introduction of iterative detection [9] described by a typically gradual converging behavior as it ran iteratively between matching expected waveforms in the recording channel and respecting simultaneously the constraints imposed by parity checks.

ECC in hard drives is traditionally performed with CRC (Cyclic Redundancy Check [10]) or Fire codes [11, 12], their natural extension.

Later Reed-Solomon ECC was used in order to decrease BER down to $10^{-12}$ since CRC [10] could only achieve at that time a BER of about $10^{-10}$. Reed-Solomon are constructed with Galois polynomials GF$(2^m)$ where m is the symbol size (see Table X). As an example, supposing we need to code a sequence of 577 Bytes (as in Table IV), GF$(2^9)$ is not adequate however GF$(2^{10})$ is.

### C. Sector size increase issues

Increasing sector size offers, in fact, several benefits listed below:

1. Efficiency gain: Instead of making sequences of $8 \times 512$B sectors with their overheads, one deals with a single sector of 4kB with a smaller size overhead as depicted in fig. 5.

<figure><img src="image_6.png" /><figcaption>FIG. 5: (Color on line) Comparison of eight 512B and a single 4kB sector. Headers are in blue, ECC in Green and Trailer in Magenta. Headers comprise Gap, Sync and Address Mark (AM). Green blocks comprise CRC, ECC, Gap, Sync and AM. Trailer consists of a Gap. The 4kB sector is shorter than all eight 512B blocks while containing the same information. Moreover it is more efficient ECC wise and in combating burst errors.</figcaption></figure>

2. Better efficiency of ECC: 100 Bytes of ECC for a single 4kB block are as reliable as 320 Bytes of ECC for eight 512 Byte blocks. From table X we infer 9.8% coding overhead in the 512B sector and a 2.4% in the 4K case.

3. Better handling of burst errors. Ordinary ECC can correct up to 50 Byte bursts. When burst error size goes from 50B to 200B, 512B sectors are strongly affected implying that increasing sector size will be more beneficial in the case of large burst errors.

In table VIII, are displayed the 4k-Byte sector characteristics in a HDD and in table IX, several sector sizes with their respective performance are compared.
<table><caption>TABLE VIII: 4k-Byte Sector Format in a HDD (see Mueller [3]).</caption><thead><tr><th>Name</th><th>Bytes</th><th>Description</th></tr></thead><tbody><tr><td>Header</td><td>15</td><td>Gap, Sync, Address Mark</td></tr><tr><td>Data</td><td>4096</td><td>User data</td></tr><tr><td>Trailer</td><td>100</td><td>Error Correction Code (ECC)</td></tr><tr><td>Summary</td><td>4211</td><td>Total Bytes/sector (2.4% efficient)</td></tr></tbody></table>

<table><caption>TABLE IX: Effect of sector size on capacity gain for 100 Gb/in² media (84mm disk @ 15,000 rpm) as compared to 512B case. Adapted from reference [13].</caption><thead><tr><th>Sector size</th><th>512B</th><th>1kB</th><th>2kB</th><th>4kB</th></tr></thead><tbody><tr><td>Overhead:</td><td></td><td></td><td></td><td></td></tr><tr><td>ECC (Bytes)</td><td>64</td><td>94</td><td>140</td><td>206</td></tr><tr><td>Sync (Bytes)</td><td>72</td><td>72</td><td>72</td><td>72</td></tr><tr><td>Data cell (Bytes)</td><td>674</td><td>1216</td><td>2286</td><td>4400</td></tr><tr><td>Efficiency:</td><td></td><td></td><td></td><td></td></tr><tr><td>ECC</td><td>0.889</td><td>0.916</td><td>0.936</td><td>0.960</td></tr><tr><td>Data (timing)</td><td>0.855</td><td>0.919</td><td>0.957</td><td>0.978</td></tr><tr><td>Zone</td><td>0.917</td><td>0.966</td><td>0.978</td><td>0.978</td></tr><tr><td>Servo</td><td>0.843</td><td>0.843</td><td>0.843</td><td>0.843</td></tr><tr><td>Split</td><td>1.000</td><td>0.999</td><td>0.999</td><td>0.999</td></tr><tr><td>Total track</td><td>0.587</td><td>0.685</td><td>0.737</td><td>0.764</td></tr><tr><td>Relative gain</td><td>100%</td><td>116%</td><td>125%</td><td>130%</td></tr></tbody></table>

## V. ELECTRONIC STORAGE

Electronic Flash technology has been developing at a remarkable pace as displayed in fig. 6.

Flash technology is important for mobile electronic devices (e.g. digital camera, smartphone, portable SSD drives, key drives, tablets and notebooks).

The Flash transistor is a MOSFET transistor containing within its Oxide layer a thin metallic film called floating gate (hence the name Flash) that can trap electrons by application of a positive voltage to the gate.

At the beginning of Flash technology a single bit corresponded to a single Flash transistor (SLC or single level cell). Later development led to 2-bit/transistor (MLC or Multiple level cell), then 3-bit/transistor (TLC or triple level cell) and finally 4-bit/transistor (QLC or quadruple level cell).

NAND Flash memory is the most aggressively scaled technology among electronic devices because the NAND Flash memory cell have relatively simple structure compared with others and there is severe industrial competition. Also, there were many technological innovations (such as multi-level cell and double patterning lithography) that resulted in cell size shrinking faster than dictated by Moore's law.

<table><caption>TABLE X: Reed-Solomon ECC characteristics for 512B and 4kB sectors. Galois fields such as GF(2<sup>m</sup>) are polynomials where m is an integer equal to the symbol size. The number of elements in GF(q<sup>m</sup>) is q<sup>m</sup>. Sector 512B requires GF(2<sup>10</sup>) whereas 4kB requires GF(2<sup>12</sup>) [14].</caption><thead><tr><th>Sector size</th><th>Galois field</th><th>ECC Size</th><th>Raw BER</th><th>BER after ECC</th></tr></thead><tbody><tr><td>512B</td><td>GF(2<sup>10</sup>)</td><td>50B</td><td>10<sup>-5</sup> - 10<sup>-6</sup></td><td>10<sup>-11</sup> - 10<sup>-12</sup></td></tr><tr><td>4kB</td><td>GF(2<sup>12</sup>)</td><td>100B</td><td>10<sup>-3</sup> - 10<sup>-4</sup></td><td>10<sup>-11</sup> - 10<sup>-12</sup></td></tr></tbody></table>
<table><caption>TABLE VIII: 4k-Byte Sector Format in a HDD (see Mueller [3]).</caption><thead><tr><th>Name</th><th>Bytes</th><th>Description</th></tr></thead><tbody><tr><td>Header</td><td>15</td><td>Gap, Sync, Address Mark</td></tr><tr><td>Data</td><td>4096</td><td>User data</td></tr><tr><td>Trailer</td><td>100</td><td>Error Correction Code (ECC)</td></tr><tr><td>Summary</td><td>4211</td><td>Total Bytes/sector (2.4% efficient)</td></tr></tbody></table>

<table><caption>TABLE IX: Effect of sector size on capacity gain for 100 Gb/in² media (84mm disk @ 15,000 rpm) as compared to 512B case. Adapted from reference [13].</caption><thead><tr><th>Sector size</th><th>512B</th><th>1kB</th><th>2kB</th><th>4kB</th></tr></thead><tbody><tr><td>Overhead:</td><td></td><td></td><td></td><td></td></tr><tr><td>ECC (Bytes)</td><td>64</td><td>94</td><td>140</td><td>206</td></tr><tr><td>Sync (Bytes)</td><td>72</td><td>72</td><td>72</td><td>72</td></tr><tr><td>Data cell (Bytes)</td><td>674</td><td>1216</td><td>2286</td><td>4400</td></tr><tr><td>Efficiency:</td><td></td><td></td><td></td><td></td></tr><tr><td>ECC</td><td>0.889</td><td>0.916</td><td>0.936</td><td>0.960</td></tr><tr><td>Data (timing)</td><td>0.855</td><td>0.919</td><td>0.957</td><td>0.978</td></tr><tr><td>Zone</td><td>0.917</td><td>0.966</td><td>0.978</td><td>0.978</td></tr><tr><td>Servo</td><td>0.843</td><td>0.843</td><td>0.843</td><td>0.843</td></tr><tr><td>Split</td><td>1.000</td><td>0.999</td><td>0.999</td><td>0.999</td></tr><tr><td>Total track</td><td>0.587</td><td>0.685</td><td>0.737</td><td>0.764</td></tr><tr><td>Relative gain</td><td>100%</td><td>116%</td><td>125%</td><td>130%</td></tr></tbody></table>

## V. ELECTRONIC STORAGE

Electronic Flash technology has been developing at a remarkable pace as displayed in fig. 6.

Flash technology is important for mobile electronic devices (e.g. digital camera, smartphone, portable SSD drives, key drives, tablets and notebooks).

The Flash transistor is a MOSFET transistor containing within its Oxide layer a thin metallic film called floating gate (hence the name Flash) that can trap electrons by application of a positive voltage to the gate.

At the beginning of Flash technology a single bit corresponded to a single Flash transistor (SLC or single level cell). Later development led to 2-bit/transistor (MLC or Multiple level cell), then 3-bit/transistor (TLC or triple level cell) and finally 4-bit/transistor (QLC or quadruple level cell).

NAND Flash memory is the most aggressively scaled technology among electronic devices because the NAND Flash memory cell have relatively simple structure compared with others and there is severe industrial competition. Also, there were many technological innovations (such as multi-level cell and double patterning lithography) that resulted in cell size shrinking faster than dictated by Moore's law.

<table><caption>TABLE X: Reed-Solomon ECC characteristics for 512B and 4kB sectors. Galois fields such as GF(2<sup>m</sup>) are polynomials where m is an integer equal to the symbol size. The number of elements in GF(q<sup>m</sup>) is q<sup>m</sup>. Sector 512B requires GF(2<sup>10</sup>) whereas 4kB requires GF(2<sup>12</sup>) [14].</caption><thead><tr><th>Sector size</th><th>Galois field</th><th>ECC Size</th><th>Raw BER</th><th>BER after ECC</th></tr></thead><tbody><tr><td>512B</td><td>GF(2<sup>10</sup>)</td><td>50B</td><td>10<sup>-5</sup> - 10<sup>-6</sup></td><td>10<sup>-11</sup> - 10<sup>-12</sup></td></tr><tr><td>4kB</td><td>GF(2<sup>12</sup>)</td><td>100B</td><td>10<sup>-3</sup> - 10<sup>-4</sup></td><td>10<sup>-11</sup> - 10<sup>-12</sup></td></tr></tbody></table>
<figure><img src="image_8.png" /><figcaption>FIG. 6: (Color on line) Evolution of Flash areal density over the period 2008-2021. The data contain 2D and 3D MLC, TLC and QLC Flash types. The transition from 2D to 3D started circa year 2014.</figcaption></figure>

A. Error Correction codes for NAND Flash

The number of parity Bytes depends on the ECC type [15] with its performance hierarchy discussed below (see Fig.7):

• Hamming Codes:

A block Hamming code can correct a single bit error and detect occurrence of multiple bit errors. It is also able of detecting most double bit errors.

• Reed-Solomon Codes:

Reed-Solomon codes are used in communications and storage devices to handle burst errors. When Flash devices (MLC) moved to 2kB or 4kB pages, ECC required 4 bit corrections.

• Bose-Chaudhuri-Hocquenghem (BCH) Codes:

BCH codes are capable of handling large random errors whereas Reed-Solomon codes are used for correcting burst errors. A BCH(n, k; t) code over Galois Field GF(2^m) (see Appendix) with n bit codeword length and k bit message length can correct up to t error bits.

• Low Density Parity Check (LDPC) Codes:

The advent of TLC and QLC (3 and 4 level cell) along with scaling down to provide further Flash storage implies BCH correction to be replaced progressively by LDPC codes as the most appropriate ECC or a concatenation of BCH and LDPC, as in magnetic recording.

Let us compare parity sizes for Hamming, Reed-Solomon, and BCH implementations:

• Hamming:

Block Hamming codes correct only a single error and require 2log₂(n) of parity for a data block with n data bits.

A 512B data block consists of 4096 (2¹²) bits, thus a Hamming code requires 2log₂(n) with n = 12 or 24 parity bits.

• Reed-Solomon:

Parity required for an RS code depends on the symbol size, Galois field size, and ECC level provided by the code. This means that if we have symbols of size m, the Galois field GF(2^m) size is m, chosen generally to be the minimal value corresponding to a given selected block size. Thus the number of parity bits is 2×m×ECC.
<figure><img src="image_7.png" /><figcaption>FIG. 6: (Color on line) Evolution of Flash areal density over the period 2008-2021. The data contain 2D and 3D MLC, TLC and QLC Flash types. The transition from 2D to 3D started circa year 2014.</figcaption></figure>

A. Error Correction codes for NAND Flash

The number of parity Bytes depends on the ECC type [15] with its performance hierarchy discussed below (see Fig.7):

• Hamming Codes:

A block Hamming code can correct a single bit error and detect occurrence of multiple bit errors. It is also able of detecting most double bit errors.

• Reed-Solomon Codes:

Reed-Solomon codes are used in communications and storage devices to handle burst errors. When Flash devices (MLC) moved to 2kB or 4kB pages, ECC required 4 bit corrections.

• Bose-Chaudhuri-Hocquenghem (BCH) Codes:

BCH codes are capable of handling large random errors whereas Reed-Solomon codes are used for correcting burst errors. A BCH(n, k; t) code over Galois Field GF(2^m) (see Appendix) with n bit codeword length and k bit message length can correct up to t error bits.

• Low Density Parity Check (LDPC) Codes:

The advent of TLC and QLC (3 and 4 level cell) along with scaling down to provide further Flash storage implies BCH correction to be replaced progressively by LDPC codes as the most appropriate ECC or a concatenation of BCH and LDPC, as in magnetic recording.

Let us compare parity sizes for Hamming, Reed-Solomon, and BCH implementations:

• Hamming:

Block Hamming codes correct only a single error and require 2 log₂(n) of parity for a data block with n data bits.

A 512B data block consists of 4096 (2¹²) bits, thus a Hamming code requires 2 log₂(n) with n = 12 or 24 parity bits.

• Reed-Solomon:

Parity required for an RS code depends on the symbol size, Galois field size, and ECC level provided by the code. This means that if we have symbols of size *m*, the Galois field GF(2^m) size is *m*, chosen generally to be the minimal value corresponding to a given selected block size. Thus the number of parity bits is 2×*m*×ECC.
<figure><img src="image_9.png" /><figcaption>FIG. 7: Effect of coding on BER in going from raw to Hamming to BCH ECC illustrating performance hierarchy of ECC. Adapted from ref. [16].</figcaption></figure>

<figure><img src="image_10.png" /><figcaption>FIG. 8: ECC number of bits and sector size effects on corrected BER in Flash devices. Output BER improvement is about 10 orders of magnitude with respect to input BER after BCH based ECC coding. Adapted from ref. [17].</figcaption></figure>

For example, an RS over a 512B data block consisting of 9 bit symbols capable of supporting 8 symbol correction would require 2×9×8, or 144 bits of parity.

### BCH:

Parity required for BCH is dependent on the Galois field GF(2^m) size m (determined by the data block size) and the ECC correction level. The number of parity bits can be computed as m × ECC.

The following table XI shows the number of ECC bits/Bytes required per correction block.

<table><caption>TABLE XI: Number of ECC bits/Bytes required per correction block.</caption><thead><tr><td>Block size</td><td>ECC Level</td><td>ECC Number of bits</td></tr></thead><tbody><tr><td>512B</td><td>ECC 8</td><td>13×8=104</td></tr><tr><td>512B</td><td>ECC 16</td><td>13×16=20826</td></tr><tr><td>1024B</td><td>ECC 24</td><td>14×24=33642</td></tr><tr><td>1024B</td><td>ECC 40</td><td>14×40=56070</td></tr></tbody></table>
<figure><img src="image_8.png" /><figcaption>FIG. 7: Effect of coding on BER in going from raw to Hamming to BCH ECC illustrating performance hierarchy of ECC. Adapted from ref. [16].</figcaption></figure>

<figure><img src="image_9.png" /><figcaption>FIG. 8: ECC number of bits and sector size effects on corrected BER in Flash devices. Output BER improvement is about 10 orders of magnitude with respect to input BER after BCH based ECC coding. Adapted from Ref. [17].</figcaption></figure>

For example, an RS over a 512B data block consisting of 9 bit symbols capable of supporting 8 symbol correction would require 2×9×8, or 144 bits of parity.

### BCH:

Parity required for BCH is dependent on the Galois field GF(2<sup>m</sup>) size *m* (determined by the data block size) and the ECC correction level. The number of parity bits can be computed as *m* × ECC.

The following table XI shows the number of ECC bits/Bytes required per correction block.

<table><caption>TABLE XI: Number of ECC bits/Bytes required per correction block.</caption><thead><tr><td>Block size</td><td>ECC Level</td><td>ECC Number of bits</td></tr></thead><tbody><tr><td>512B</td><td>ECC 8</td><td>13×8=104</td></tr><tr><td>512B</td><td>ECC 16</td><td>13×16=20826</td></tr><tr><td>1024B</td><td>ECC 24</td><td>14×24=33642</td></tr><tr><td>1024B</td><td>ECC 40</td><td>14×40=56070</td></tr></tbody></table>
# VI. OPTICAL STORAGE

Optical storage spans CD, DVD and Blu-Ray disks as well as Holographic Video Disks (HVD) that has not been widely developed for technical reasons.

In contrast to magnetic addressing based on 1D tracks (cylinders) and heads (platter face) such as in HDD, optical storage is based on a single spiral track with a linear addressing mode. Holographic is more complicated since it is based on 2D coding and addressing.

## A. Error Correction codes for Optical storage

Optical storage is particularly prone to burst errors (resulting from surface scratches for example) and Reed-Solomon ECC techniques equivalent to the RLL family are the main choice. EFM (Eight to Fourteen Modulation, see Table XII) is used for CDROM and EFM+ is used for DVD whereas 17PP (17 originating from RLL(1,7) coding and PP being Parity Preserving) codes are used in Blu-Ray discs (see Table XII).

Optical storage characteristics and ECC are shown in Table XII.

<table><caption>TABLE XII: Optical media characteristics. EFM is based on RLL(2,10) transforming 8 bit symbols into 14 bit symbols and linking them with 3 extra bits whereas EFM+ is based on RLL(2,10) transforming 8 bit symbols into 14 bit symbols and linking them with 2 extra bits. 17PP is RLL(1,7) with parity preservation. EFM should be compared to Eight to Ten Modulation used in magnetic DAT (Digital Audio Tape) storage. CIRC or Cross-interleaved Reed-Solomon coding uses two Reed-Solomon codes with an interleave between. RSPC or Reed-Solomon Product Code consists of arranging data in a matrix and detecting parities along the horizontal and vertical directions.</caption><thead><tr><th>Media</th><th>λ</th><th>NA</th><th>Capacity</th><th>RLL code</th><th>ECC code</th></tr></thead><tbody><tr><td>CDROM</td><td>780 nm</td><td>0.45</td><td>700 MB</td><td>EFM</td><td>CIRC</td></tr><tr><td>DVD</td><td>680 nm</td><td>0.55</td><td>4.7 GB</td><td>EFM+</td><td>RSPC</td></tr><tr><td>Blu-Ray</td><td>405 nm</td><td>0.85</td><td>25 GB</td><td>17PP</td><td>Picket code</td></tr></tbody></table>

<table><caption>TABLE XIII: Burst error correction in DVD (RSPC) and Blu-Ray (Picket code) discs. *In the Blu-Ray subcodes cover long distance & burst indicators.</caption><thead><tr><th></th><th>DVD</th><th>Blu-ray</th></tr></thead><tbody><tr><td>Sector size</td><td>2064B</td><td>2074.5B</td></tr><tr><td>ECC block</td><td>32kB</td><td>64kB</td></tr><tr><td>ECC code rate</td><td>0.866</td><td>0.852</td></tr><tr><td>ECC nature</td><td>Product code</td><td>Code & Subcodes*</td></tr><tr><td>Number of corrected burst errors (200B ECC)</td><td>5-14</td><td>32-49 (349 µm)</td></tr><tr><td>Number of corrected burst errors (600B ECC)</td><td>3-4</td><td>10-16 (1047 µm)</td></tr><tr><td>Max correctable burst length (ECC)</td><td>2912B</td><td>9920B</td></tr></tbody></table>

# APPENDIX A: DETAILED DESCRIPTION OF LINE AND RLL CODES

Line coding specifies how a string of binary digits are converted to a line code waveform. There are two major classes of binary line codes: level codes and transition codes. Level codes carry information in their voltage level, which may be high or low for a full bit period or part of the bit period. Level codes are usually instantaneous since they typically encode a binary digit into a distinct waveform, independent of any past binary data. However, some level codes do exhibit memory. Transition codes carry information in the change in level appearing in the line code
# VI. OPTICAL STORAGE

Optical storage spans CD, DVD and Blu-Ray disks as well as Holographic Video Disks (HVD) that has not been widely developed for technical reasons.

In contrast to magnetic addressing based on 1D tracks (cylinders) and heads (platter face) such as in HDD, optical storage is based on a single spiral track with a linear addressing mode. Holographic is more complicated since it is based on 2D coding and addressing.

## A. Error Correction codes for Optical storage

Optical storage is particularly prone to burst errors (resulting from surface scratches for example) and Reed-Solomon ECC techniques equivalent to the RLL family are the main choice. EFM (Eight to Fourteen Modulation, see Table XII) is used for CDROM and EFM+ is used for DVD whereas 17PP (17 originating from RLL(1,7) coding and PP being Parity Preserving) codes are used in Blu-Ray discs (see Table XII).

Optical storage characteristics and ECC are shown in Table XII.

<table><caption>TABLE XII: Optical media characteristics. EFM is based on RLL(2,10) transforming 8 bit symbols into 14 bit symbols and linking them with 3 extra bits whereas EFM+ is based on RLL(2,10) transforming 8 bit symbols into 14 bit symbols and linking them with 2 extra bits. 17PP is RLL(1,7) with parity preservation. EFM should be compared to Eight to Ten Modulation used in magnetic DAT (Digital Audio Tape) storage. CIRC or Cross-interleaved Reed-Solomon coding uses two Reed-Solomon codes with an interleave between. RSPC or Reed-Solomon Product Code consists of arranging data in a matrix and detecting parities along the horizontal and vertical directions.</caption><thead><tr><th>Media</th><th>λ</th><th>NA</th><th>Capacity</th><th>RLL code</th><th>ECC code</th></tr></thead><tbody><tr><td>CDROM</td><td>780 nm</td><td>0.45</td><td>700 MB</td><td>EFM</td><td>CIRC</td></tr><tr><td>DVD</td><td>680 nm</td><td>0.55</td><td>4.7 GB</td><td>EFM+</td><td>RSPC</td></tr><tr><td>Blu-Ray</td><td>405 nm</td><td>0.85</td><td>25 GB</td><td>17PP</td><td>Picket code</td></tr></tbody></table>

<table><caption>TABLE XIII: Burst error correction in DVD (RSPC) and Blu-Ray (Picket code) discs. *In the Blu-Ray subcodes cover long distance & burst indicators.</caption><thead><tr><th></th><th>DVD</th><th>Blu-ray</th></tr></thead><tbody><tr><td>Sector size</td><td>2064B</td><td>2074.5B</td></tr><tr><td>ECC block</td><td>32kB</td><td>64kB</td></tr><tr><td>ECC code rate</td><td>0.866</td><td>0.852</td></tr><tr><td>ECC nature</td><td>Product code</td><td>Code & Subcodes*</td></tr><tr><td>Number of corrected burst errors (200B ECC)</td><td>5-14</td><td>32-49 (349 µm)</td></tr><tr><td>Number of corrected burst errors (600B ECC)</td><td>3-4</td><td>10-16 (1047 µm)</td></tr><tr><td>Max correctable burst length (ECC)</td><td>2912B</td><td>9920B</td></tr></tbody></table>

# APPENDIX A: DETAILED DESCRIPTION OF LINE AND RLL CODES

Line coding specifies how a string of binary digits are converted to a line code waveform. There are two major classes of binary line codes: level codes and transition codes. Level codes carry information in their voltage level, which may be high or low for a full bit period or part of the bit period. Level codes are usually instantaneous since they typically encode a binary digit into a distinct waveform, independent of any past binary data. However, some level codes do exhibit memory. Transition codes carry information in the change in level appearing in the line code
waveform. Transition codes may be instantaneous, but they generally have memory, using past binary data to dictate the present waveform. There are two common forms of level line codes: one is called return to zero (RZ) and the other is called non-return to zero (NRZ).

Line coding formats are further classified according to the polarity of the voltage levels used to represent the data. If only one polarity of voltage level is used, i.e., positive or negative (in addition to the zero level) then it is called unipolar signaling. If both positive and negative voltage levels are being used, with or without a zero voltage level, then it is called polar signaling.

* RZ coding

The level of the pulse returns to zero for a portion of the bit interval.

* NRZ coding

The level of the pulse is maintained during the entire bit interval.

* Unipolar RZ

A binary 0 is a zero voltage level during the entire bit period. A binary 1 is a non-zero voltage level during a portion of the bit period, usually for half of the bit period, and a zero voltage level for rest of the bit period.

* Polar NRZ

A binary 1 is a positive voltage and a binary 0 is a negative voltage over the full bit period.

* Polar RZ [Bipolar, Alternate Mark Inversion (AMI)]

A binary 1 is represented by alternating the positive and negative voltage levels, which return to zero for a portion of the bit period, usually half the bit period. A binary 0 is represented by a zero voltage level during the entire bit period. Alternate mark inversion (AMI) means that ones (marks) are represented by alternating positive and negative pulses.

* Manchester Coding (Split Phase or Digital Biphase)

A binary 1 is a pulse that has positive voltage during the first-half of the bit period and negative voltage during second-half of the bit period. A binary 0 is a negative pulse during the first-half of the bit period and positive during the second-half of the bit period. The negative or positive bit center transition indicates a binary 1 or binary 0, respectively.

* Phase Modulation (PM)

A binary 0 is an upward transition at cell center position, whereas a binary 1 is a downward transition at cell center position.

* Frequency Modulation (FM)

FM is the encoding method used for single-density floppy disks.
A binary 0 is a transition at cell center, regardless of direction.
A binary 1 is absence of transition at cell center, regardless of level.

* Delay Modulation (Miller Code) or Modified Frequency Modulation (MFM)

A binary 1 is a transition at the bit center position, and a binary 0 is represented by no transition at the bit center position. If a 0 is followed by another 0, the signal transition also occurs between the two 0s, at the end of the bit interval,

* Modified MFM (M2FM)

In magnetic devices, M2FM eliminates the flux transition at the bit cell boundary if it is preceded by a cell boundary flux transition in the previous cell.

# APPENDIX B: GALOIS, CRC AND PARTIAL RESPONSE POLYNOMIALS

Testing a communication channel requires generation of binary sequences in a fast and controllable way, akin to Random Number Generation in Monte-Carlo simulation. The main goal of PRBS (Pseudo Random Binary Sequence) generation, is to draw 0 or 1 in an equally probable fashion in order to have highly efficient crypting of communication as in spread-spectrum communications [2] used in wireless telephony or any message over some telecommunication channel. PRBS are useful for testing communication lines, storage media, coding techniques... A particularly efficient method for producing PRBS is based on primitive (akin to prime number) polynomials modulo
waveform. Transition codes may be instantaneous, but they generally have memory, using past binary data to dictate the present waveform. There are two common forms of level line codes: one is called return to zero (RZ) and the other is called non-return to zero (NRZ).

Line coding formats are further classified according to the polarity of the voltage levels used to represent the data. If only one polarity of voltage level is used, i.e., positive or negative (in addition to the zero level) then it is called unipolar signaling. If both positive and negative voltage levels are being used, with or without a zero voltage level, then it is called polar signaling.

* RZ coding

The level of the pulse returns to zero for a portion of the bit interval.

* NRZ coding

The level of the pulse is maintained during the entire bit interval.

* Unipolar RZ

A binary 0 is a zero voltage level during the entire bit period. A binary 1 is a non-zero voltage level during a portion of the bit period, usually for half of the bit period, and a zero voltage level for rest of the bit period.

* Polar NRZ

A binary 1 is a positive voltage and a binary 0 is a negative voltage over the full bit period.

* Polar RZ [Bipolar, Alternate Mark Inversion (AMI)]

A binary 1 is represented by alternating the positive and negative voltage levels, which return to zero for a portion of the bit period, usually half the bit period. A binary 0 is represented by a zero voltage level during the entire bit period. Alternate mark inversion (AMI) means that ones (marks) are represented by alternating positive and negative pulses.

* Manchester Coding (Split Phase or Digital Biphase)

A binary 1 is a pulse that has positive voltage during the first-half of the bit period and negative voltage during second-half of the bit period. A binary 0 is a negative pulse during the first-half of the bit period and positive during the second-half of the bit period. The negative or positive bit center transition indicates a binary 1 or binary 0, respectively.

* Phase Modulation (PM)

A binary 0 is an upward transition at cell center position, whereas a binary 1 is a downward transition at cell center position.

* Frequency Modulation (FM)

FM is the encoding method used for single-density floppy disks.
A binary 0 is a transition at cell center, regardless of direction.
A binary 1 is absence of transition at cell center, regardless of level.

* Delay Modulation (Miller Code) or Modified Frequency Modulation (MFM)

A binary 1 is a transition at the bit center position, and a binary 0 is represented by no transition at the bit center position. If a 0 is followed by another 0, the signal transition also occurs between the two 0s, at the end of the bit interval,

* Modified MFM (M2FM)

In magnetic devices, M2FM eliminates the flux transition at the bit cell boundary if it is preceded by a cell boundary flux transition in the previous cell.

# APPENDIX B: GALOIS, CRC AND PARTIAL RESPONSE POLYNOMIALS

Testing a communication channel requires generation of binary sequences in a fast and controllable way, akin to Random Number Generation in Monte-Carlo simulation. The main goal of PRBS (Pseudo Random Binary Sequence) generation, is to draw 0 or 1 in an equally probable fashion in order to have highly efficient crypting of communication as in spread-spectrum communications [2] used in wireless telephony or any message over some telecommunication channel. PRBS are useful for testing communication lines, storage media, coding techniques... A particularly efficient method for producing PRBS is based on primitive (akin to prime number) polynomials modulo
2 or Galois polynomials [18] called Galois Fields GF(2) with the following arithmetic:

$$0 \oplus 0 = 0, 0 \oplus 1 = 1, 1 \oplus 0 = 1, 1 \oplus 1 = 0.$$

⊕ is the usual symbol for modulo 2 arithmetic corresponding to the logical XOR operation.

The coefficients of primitive polynomials modulo 2 are zero or one e.g. $x^3 + x^2 + 1$. They cannot be decomposed into a product of simpler modulo 2 polynomials (akin prime numbers). Hence $x^2 + 1 = (x + i)(x - i)$ with $i = \sqrt{-1}$ cannot be decomposed into simpler polynomials with real coefficients. When this polynomial is viewed as a modulo 2 Galois polynomial, it is not primitive since it can be decomposed into a product of simpler polynomials $x^2 + 1 \equiv x^2 + 2x + 1 = (x + 1)(x + 1)$ since in modulo 2 arithmetic the term $2x$ is equivalent to 0 according to the rule $(1 \oplus 1 = 0)$.

Galois fields such as GF($q^m$) are polynomials where $q$ is a prime number and $m$ is an integer equal to the symbol size. The number of elements in GF($q^m$) is $q^m$. For instance if we are dealing with simple bits as in PRBS, we use GF(2) ($q = 2, m = 1$) but if we are using Bytes, then we use GF(2$^3$) ($q = 2, m = 3$).

<table><caption>TABLE XIV: List of the first 10 Galois polynomials. They are generated with Shift Registers with connection nodes corresponding to the polynomial powers [18]. The + operation is performed with an XOR operation.</caption><thead><tr><th>Shift Register taps</th><th>Galois Polynomial</th></tr></thead><tbody><tr><td>(1, 0)</td><td>$x + 1$</td></tr><tr><td>(2, 1, 0)</td><td>$x^2 + x + 1$</td></tr><tr><td>(3, 1, 0)</td><td>$x^3 + x + 1$</td></tr><tr><td>(4, 1, 0)</td><td>$x^4 + x + 1$</td></tr><tr><td>(5, 2, 0)</td><td>$x^5 + x^2 + 1$</td></tr><tr><td>(6, 1, 0)</td><td>$x^6 + x + 1$</td></tr><tr><td>(7, 1, 0)</td><td>$x^7 + x + 1$</td></tr><tr><td>(8, 4, 3, 2, 0)</td><td>$x^8 + x^4 + x^3 + x^2 + 1$</td></tr><tr><td>(9, 4, 0)</td><td>$x^9 + x^4 + 1$</td></tr><tr><td>(10, 3, 0)</td><td>$x^{10} + x^3 + 1$</td></tr></tbody></table>

The method for producing PRBS requires only a single shift register $n$ bits long and a few XOR or modulo 2 bit addition operations ($\oplus$ gates).

There is one term for each non-zero coefficient in the primitive polynomial except the constant (zero bit) term. Table XIV contains a list of polynomials for $n \le 10$, showing that for a primitive polynomial of degree $n$, the first and last term are 1.

CRC (Cyclic Redundancy Check) polynomials allow to check the integrity of a file or a message transmitted over some communication channel. They are based on special polynomials called generators as displayed in Table XV.

CRC coding is based on considering the message as a polynomial $M(x)$ where the $i$-th bit of the message multiplies $x^i$. The least significant bit of the message is numbered 0. $G(x)$ is the generator polynomial (divisor) of degree $r$. The polynomial division takes place in Galois Field GF(2), meaning that all arithmetic operations are performed modulo 2.

The check sum value $C(x)$ is calculated by division of $x^r M(x)$ by $G(x)$ i.e. $x^r M(x) = Q(x)G(x) + C(x)$, with $Q(x)$ the quotient and $C(x)$ the remainder. The $x^r$ multiplication is equivalent to $r$ bit shifts akin to multiplication by $10^r$ in the decimal system.

Subtracting this remainder from the dividend $x^r M(x)$ yields a polynomial $T(x) = x^r M(x) - C(x)$, which is exactly divisible by $G(x)$. $T(x)$ is then transmitted through some communication channel and received later as an eventually corrupted $R(x)$. A non-zero remainder resulting from division of $R(x)$ by $G(x)$ indicates corruption of the message.

Partial response coding was initially developed to combat ISI [2] when signaling was based on sinc functions. It is a signal shaping method meant to reduce ISI in communication systems and recording by increase of storage density in magnetic systems.

The notion of Hamming distance [1] is very valuable in order to estimate their potential ISI. For instance if we have two 3-bit symbols (000) and (111) belonging to a 3D symbol space, their Hamming distance is the XOR addition $0 \oplus 0 = 0, 0 \oplus 1 = 1, 1 \oplus 0 = 1, 1 \oplus 1 = 0$, applied separately to every bit, yielding 111 and afterward adding the bits
2 or Galois polynomials [18] called Galois Fields GF(2) with the following arithmetic:

$$0 \oplus 0 = 0, 0 \oplus 1 = 1, 1 \oplus 0 = 1, 1 \oplus 1 = 0.$$

⊕ is the usual symbol for modulo 2 arithmetic corresponding to the logical XOR operation.

The coefficients of primitive polynomials modulo 2 are zero or one e.g. $x^3 + x^2 + 1$. They cannot be decomposed into a product of simpler modulo 2 polynomials (akin prime numbers). Hence $x^2 + 1 = (x + i)(x - i)$ with $i = \sqrt{-1}$ cannot be decomposed into simpler polynomials with real coefficients. When this polynomial is viewed as a modulo 2 Galois polynomial, it is not primitive since it can be decomposed into a product of simpler polynomials $x^2 + 1 \equiv x^2 + 2x + 1 = (x + 1)(x + 1)$ since in modulo 2 arithmetic the term $2x$ is equivalent to 0 according to the rule $(1 \oplus 1 = 0)$.

Galois fields such as GF($q^m$) are polynomials where $q$ is a prime number and $m$ is an integer equal to the symbol size. The number of elements in GF($q^m$) is $q^m$. For instance if we are dealing with simple bits as in PRBS, we use GF(2) ($q = 2, m = 1$) but if we are using Bytes, then we use GF(2$^3$) ($q = 2, m = 3$).

<table><caption>TABLE XIV: List of the first 10 Galois polynomials. They are generated with Shift Registers with connection nodes corresponding to the polynomial powers [18]. The + operation is performed with an XOR operation.</caption><thead><tr><th>Shift Register taps</th><th>Galois Polynomial</th></tr></thead><tbody><tr><td>(1, 0)</td><td>$x + 1$</td></tr><tr><td>(2, 1, 0)</td><td>$x^2 + x + 1$</td></tr><tr><td>(3, 1, 0)</td><td>$x^3 + x + 1$</td></tr><tr><td>(4, 1, 0)</td><td>$x^4 + x + 1$</td></tr><tr><td>(5, 2, 0)</td><td>$x^5 + x^2 + 1$</td></tr><tr><td>(6, 1, 0)</td><td>$x^6 + x + 1$</td></tr><tr><td>(7, 1, 0)</td><td>$x^7 + x + 1$</td></tr><tr><td>(8, 4, 3, 2, 0)</td><td>$x^8 + x^4 + x^3 + x^2 + 1$</td></tr><tr><td>(9, 4, 0)</td><td>$x^9 + x^4 + 1$</td></tr><tr><td>(10, 3, 0)</td><td>$x^{10} + x^3 + 1$</td></tr></tbody></table>

The method for producing PRBS requires only a single shift register $n$ bits long and a few XOR or modulo 2 bit addition operations ($\oplus$ gates).

There is one term for each non-zero coefficient in the primitive polynomial except the constant (zero bit) term. Table XIV contains a list of polynomials for $n \le 10$, showing that for a primitive polynomial of degree $n$, the first and last term are 1.

CRC (Cyclic Redundancy Check) polynomials allow to check the integrity of a file or a message transmitted over some communication channel. They are based on special polynomials called generators as displayed in Table XV.

CRC coding is based on considering the message as a polynomial $M(x)$ where the $i$-th bit of the message multiplies $x^i$. The least significant bit of the message is numbered 0. $G(x)$ is the generator polynomial (divisor) of degree $r$. The polynomial division takes place in Galois Field GF(2), meaning that all arithmetic operations are performed modulo 2.

The check sum value $C(x)$ is calculated by division of $x^r M(x)$ by $G(x)$ i.e. $x^r M(x) = Q(x)G(x) + C(x)$, with $Q(x)$ the quotient and $C(x)$ the remainder. The $x^r$ multiplication is equivalent to $r$ bit shifts akin to multiplication by $10^r$ in the decimal system.

Subtracting this remainder from the dividend $x^r M(x)$ yields a polynomial $T(x) = x^r M(x) - C(x)$, which is exactly divisible by $G(x)$. $T(x)$ is then transmitted through some communication channel and received later as an eventually corrupted $R(x)$. A non-zero remainder resulting from division of $R(x)$ by $G(x)$ indicates corruption of the message.

Partial response coding was initially developed to combat ISI [2] when signaling was based on sinc functions. It is a signal shaping method meant to reduce ISI in communication systems and recording by increase of storage density in magnetic systems.

The notion of Hamming distance [1] is very valuable in order to estimate their potential ISI. For instance if we have two 3-bit symbols (000) and (111) belonging to a 3D symbol space, their Hamming distance is the XOR addition $0 \oplus 0 = 0, 0 \oplus 1 = 1, 1 \oplus 0 = 1, 1 \oplus 1 = 0$, applied separately to every bit, yielding 111 and afterward adding the bits
<table><caption>TABLE XV: Some CRC polynomials and their applications. ITU is International Telecom Union. USB is Universal Serial Bus. ATM is Asymmetric Transfer Mode based on Statistical Multiplexing of digital data.</caption><thead><tr><th>Code Name</th><th>G(x)</th><th>Application</th></tr></thead><tbody><tr><td>CRC-1</td><td>x + 1</td><td>Parity Check</td></tr><tr><td>CRC-4-ITU</td><td>x<sup>4</sup> + x + 1</td><td>ITU G.704</td></tr><tr><td>CRC-5-ITU</td><td>x<sup>5</sup> + x<sup>4</sup> + x<sup>2</sup> + 1</td><td>ITU G.704</td></tr><tr><td>CRC-5-USB</td><td>x<sup>5</sup> + x<sup>2</sup> + 1</td><td>USB</td></tr><tr><td>CRC-6-ITU</td><td>x<sup>6</sup> + x + 1</td><td>ITU G.704</td></tr><tr><td>CRC-8-ATM</td><td>x<sup>8</sup> + x<sup>2</sup> + x + 1</td><td>ATM</td></tr><tr><td>CRC-8-CCITT</td><td>x<sup>8</sup> + x<sup>7</sup> + x<sup>3</sup> + x<sup>2</sup> + 1</td><td>1-Wire bus</td></tr><tr><td>CRC-8-Maxim</td><td>x<sup>8</sup> + x<sup>5</sup> + x<sup>4</sup> + 1</td><td>1-Wire bus</td></tr></tbody></table>

in a decimal fashion to get finally 3.

Coding gain is given by [1] $G = 10 \log_{10} \left[ \left( \frac{d_{min}}{d_{min.u}} \right)^2 \left( \frac{E_{s.u}}{E_s} \right) \right]$ where Euclidean distances $d_{min}$, $d_{min.u}$ are considered between signal constellation symbols in the coded and uncoded cases (noted $u$). $E_s$, $E_{s.u}$ are average signal energies for the coded and uncoded cases.

Coding is considered successful when it increases the distance (Hamming or Euclidean) between constellation symbols. Several examples of coding distances are displayed in Table XVI to illustrate ISI combating with partial response coding as reflected in distances (Minimal and Distance to Matched Filter [1]) between constellation symbols.

Partial Response (PR) coding is based on Delay polynomials (see Table XVI) where a Huffman time delay operator $D$ acts on bit signals $a_k$ at instant $k$ to produce $Da_k = a_{k-1}$. In fact, digital data patterns are given by sequences of bits $a_k$ and when a magnetic head reads the signal by responding to magnetization changes, its action is equivalent to a differentiation. Head action can be expressed mathematically as $a_k - a_{k-1} = a_k - Da_k = (1 - D)a_k$. The operator given by $(1 - D)$ will result in +1 or -1 responses, depending on the direction of magnetization change. Table XVI gives several examples of PR coding along with the corresponding Delay polynomials and coding gains resulting from distance increase between symbols reducing ISI.

<table><caption>TABLE XVI: Minimal and Distance to Matched Filter (MF) in Partial Response Channels [1] yielding coding gains. EPR means Extended Partial Response.</caption><thead><tr><th>Code Name</th><th>Delay Polynomial</th><th>d<sup>2</sup><sub>min</sub></th><th>d<sup>2</sup><sub>MF</sub></th><th>d<sub>min</sub>/d<sub>MF</sub> (dB)</th></tr></thead><tbody><tr><td>PR1</td><td>(1 + D)</td><td>2</td><td>2</td><td>0</td></tr><tr><td>PR2</td><td>(1 + D)<sup>2</sup></td><td>4</td><td>6</td><td>-1.76</td></tr><tr><td>EPR2</td><td>(1 + D)<sup>3</sup></td><td>10</td><td>20</td><td>-3.01</td></tr><tr><td>Dicode</td><td>(1 - D)</td><td>2</td><td>2</td><td>0</td></tr><tr><td>PR4</td><td>(1 - D)(1 + D)</td><td>2</td><td>2</td><td>0</td></tr><tr><td>EPR4</td><td>(1 - D)(1 + D)<sup>2</sup></td><td>4</td><td>4</td><td>0</td></tr><tr><td>E2PR4</td><td>(1 - D)(1 + D)<sup>3</sup></td><td>6</td><td>10</td><td>-2.22</td></tr><tr><td>E3PR4</td><td>(1 - D)(1 + D)<sup>4</sup></td><td>12</td><td>26</td><td>-3.36</td></tr></tbody></table>

Table XVII gives classes of PR coding transfer function $H(z)$ along with the corresponding Delay polynomials and coding gains resulting from distance increase between symbols reducing ISI. Coding entails transforming a bit sequence $\{a_k\}$ into another one $\{b_k\}$ such that [19] $A(D) = \sum_k a_k D^k$, is related to $B(D) = \sum_k b_k D^k$ with a Delay polynomial $P_n(D) = \sum_{k=0}^{n+1} p_k D^k$, such that an output-input relation is expressed as: $B(D) = P_n(D)A(D)$. Thus $P_n(D)$ is an impulse response that could be Z-transformed [19] into a transfer function $H(z)$ as displayed in Table XVII. $H(z)$ is a $1/z$ polynomial [2] type transfer function since $1/z$ is the Z-transform of the delay operator $D$.
<table><caption>TABLE XV: Some CRC polynomials and their applications. ITU is International Telecom Union. USB is Universal Serial Bus. ATM is Asymmetric Transfer Mode based on Statistical Multiplexing of digital data.</caption><thead><tr><th>Code Name</th><th>G(x)</th><th>Application</th></tr></thead><tbody><tr><td>CRC-1</td><td>x + 1</td><td>Parity Check</td></tr><tr><td>CRC-4-ITU</td><td>x<sup>4</sup> + x + 1</td><td>ITU G.704</td></tr><tr><td>CRC-5-ITU</td><td>x<sup>5</sup> + x<sup>4</sup> + x<sup>2</sup> + 1</td><td>ITU G.704</td></tr><tr><td>CRC-5-USB</td><td>x<sup>5</sup> + x<sup>2</sup> + 1</td><td>USB</td></tr><tr><td>CRC-6-ITU</td><td>x<sup>6</sup> + x + 1</td><td>ITU G.704</td></tr><tr><td>CRC-8-ATM</td><td>x<sup>8</sup> + x<sup>2</sup> + x + 1</td><td>ATM</td></tr><tr><td>CRC-8-CCITT</td><td>x<sup>8</sup> + x<sup>7</sup> + x<sup>3</sup> + x<sup>2</sup> + 1</td><td>1-Wire bus</td></tr><tr><td>CRC-8-Maxim</td><td>x<sup>8</sup> + x<sup>5</sup> + x<sup>4</sup> + 1</td><td>1-Wire bus</td></tr></tbody></table>

in a decimal fashion to get finally 3.

Coding gain is given by [1] $G = 10 \log_{10} \left[ \left( \frac{d_{min}}{d_{min.u}} \right)^2 \left( \frac{E_{s.u}}{E_s} \right) \right]$ where Euclidean distances $d_{min}$, $d_{min.u}$ are considered between signal constellation symbols in the coded and uncoded cases (noted $u$). $E_s$, $E_{s.u}$ are average signal energies for the coded and uncoded cases.

Coding is considered successful when it increases the distance (Hamming or Euclidean) between constellation symbols. Several examples of coding distances are displayed in Table XVI to illustrate ISI combating with partial response coding as reflected in distances (Minimal and Distance to Matched Filter [1]) between constellation symbols.

Partial Response (PR) coding is based on Delay polynomials (see Table XVI) where a Huffman time delay operator $D$ acts on bit signals $a_k$ at instant $k$ to produce $Da_k = a_{k-1}$. In fact, digital data patterns are given by sequences of bits $a_k$ and when a magnetic head reads the signal by responding to magnetization changes, its action is equivalent to a differentiation. Head action can be expressed mathematically as $a_k - a_{k-1} = a_k - Da_k = (1 - D)a_k$. The operator given by $(1 - D)$ will result in +1 or -1 responses, depending on the direction of magnetization change. Table XVI gives several examples of PR coding along with the corresponding Delay polynomials and coding gains resulting from distance increase between symbols reducing ISI.

<table><caption>TABLE XVI: Minimal and Distance to Matched Filter (MF) in Partial Response Channels [1] yielding coding gains. EPR means Extended Partial Response.</caption><thead><tr><th>Code Name</th><th>Delay Polynomial</th><th>d<sup>2</sup><sub>min</sub></th><th>d<sup>2</sup><sub>MF</sub></th><th>d<sub>min</sub>/d<sub>MF</sub> (dB)</th></tr></thead><tbody><tr><td>PR1</td><td>(1 + D)</td><td>2</td><td>2</td><td>0</td></tr><tr><td>PR2</td><td>(1 + D)<sup>2</sup></td><td>4</td><td>6</td><td>-1.76</td></tr><tr><td>EPR2</td><td>(1 + D)<sup>3</sup></td><td>10</td><td>20</td><td>-3.01</td></tr><tr><td>Dicode</td><td>(1 - D)</td><td>2</td><td>2</td><td>0</td></tr><tr><td>PR4</td><td>(1 - D)(1 + D)</td><td>2</td><td>2</td><td>0</td></tr><tr><td>EPR4</td><td>(1 - D)(1 + D)<sup>2</sup></td><td>4</td><td>4</td><td>0</td></tr><tr><td>E2PR4</td><td>(1 - D)(1 + D)<sup>3</sup></td><td>6</td><td>10</td><td>-2.22</td></tr><tr><td>E3PR4</td><td>(1 - D)(1 + D)<sup>4</sup></td><td>12</td><td>26</td><td>-3.36</td></tr></tbody></table>

Table XVII gives classes of PR coding transfer function $H(z)$ along with the corresponding Delay polynomials and coding gains resulting from distance increase between symbols reducing ISI. Coding entails transforming a bit sequence $\{a_k\}$ into another one $\{b_k\}$ such that [19] $A(D) = \sum_k a_k D^k$, is related to $B(D) = \sum_k b_k D^k$ with a Delay polynomial $P_n(D) = \sum_{k=0}^{n+1} p_k D^k$, such that an output-input relation is expressed as: $B(D) = P_n(D)A(D)$. Thus $P_n(D)$ is an impulse response that could be Z-transformed [19] into a transfer function $H(z)$ as displayed in Table XVII. $H(z)$ is a 1/z polynomial [2] type transfer function since 1/z is the Z-transform of the delay operator $D$.
<table><caption>TABLE XVII: Classes of Partial-response signaling characteristics with nulls at DC or Nyquist frequency. Adapted from J.B Anderson [20] chapter 3 on Carrier Transmission. Class I is also called Duo-binary [2] signaling.</caption><thead><tr><th>Class</th><th>Delay Polynomial</th><th>Transfer function H(z)</th><th>Comments</th></tr></thead><tbody><tr><td>I</td><td>(1 + D)</td><td>1 + z<sup>-1</sup></td><td>Corresponds to PR1 (Table XVI), Null at Nyquist</td></tr><tr><td>II</td><td>(1 + D)<sup>2</sup></td><td>1 + 2z<sup>-1</sup> + z<sup>-2</sup></td><td>Corresponds to PR2 (Table XVI), Two nulls at Nyquist</td></tr><tr><td>III</td><td>(1 + D)(2 - D)</td><td>2 + z<sup>-1</sup> - z<sup>-2</sup></td><td>(2 - D) factor is unusual</td></tr><tr><td>IV</td><td>(1 + D)(1 - D)</td><td>1 - z<sup>-2</sup></td><td>Corresponds to PR4 (Table XVI), Null at DC and at Nyquist</td></tr><tr><td>V</td><td>-(1 + D)<sup>2</sup>(1 - D)<sup>2</sup></td><td>-1 + 2z<sup>-2</sup> - z<sup>-4</sup></td><td>Null at DC</td></tr></tbody></table>

<table><caption>FIG. 9: A product code like RSPC (Reed Solomon Product Code) consists of arranging data in 2D arrays and detecting parities along the horizontal and vertical directions. RSPC coding in DVD requires 2064 Bytes, whereas Picket code in Blu-Ray media requires 2074.5 Bytes. Picket code ECC is tailored particularly for handling burst errors in Blu-Ray Optical media.</caption><tr><td>Information Symbols</td><td>Checks on Rows</td></tr><tr><td>Checks on Columns</td><td>Checks on Checks</td></tr></table>

## APPENDIX C: REED-SOLOMON CODES

Reed-Solomon codes are linear and cyclic. They handle bits as well as symbols. They are good in correcting burst errors. They are based on Galois fields such as GF($q^m$) where $q$ is a prime number and $m$ is an integer equal to the symbol size.

When we use 512 Byte blocks we have an overhead of 65 Bytes (15 for gap,syncaddress and 50 for ECC). Thus we need to code 577 Bytes (see Table IV) and GF(2⁹) is not sufficient, given that 2⁹ = 512, consequently we use GF(2¹⁰).

In the 4k sector case we have 15 (gap,syncaddress)+100 (ECC) Bytes, thus we use GF(2¹³) and not GF(2¹²).

Interestingly, Reed-Solomon codes can be arranged along several directions as for instance the 2D product code RSPC (Reed Solomon Product Code) used in DVD where parities are detected along a vertical as well as a horizontal direction (see Fig. 9).

[1] J. L. LoCicero and B. P. Patel, Chapter 6 in *Mobile Communications Handbook*, S. S. Suthersan (Ed.), Boca Raton: CRC Press (1999).

[2] A. B. Carlson and P. B. Crilly, *Communication systems: An Introduction to Signals and Noise in Electrical Communication*, 5th Edition, McGraw-Hill, New York (2010).

[3] S. Mueller, *Repairing and Upgrading PC's*, 20th Edition, Pearson Education (2012).

[4] X. Liu, HB Jia and C. Ma, *Error correction codes for Optical Disc Storage*, in Proceedings of SPIE, Vol. 5643, SPIE Bellingham, WA (2005).

[5] J. Cavanagh, *Magnetic Recording Fundamentals*, Chapter 7 in *Digital Design and Verilog HDL Fundamentals*, 1st Edition, Boca Raton: CRC Press (2008).

[6] K.E.S Immink, IEEE Trans. Comm., **37**, 413 (1989).

[7] R. Wood, S. Ahlgrim, K. Hallamasek, R. Stenerson, IEEE Trans. Magn. MAG-20 (5), 698 (1984).

[8] E. Eleftheriou, *Signal processing for magnetic-recording channels*, in: *Encyclopedia of Telecommunications*, J. Proakis (Ed.), Vol. 4, Wiley, New York, 2247 (2003).

[9] Z. Wu, *Coding and Iterative Detection for Magnetic Recording Channels*, Kluwer Academic Publishers, (2000).
<table><caption>TABLE XVII: Classes of Partial-response signaling characteristics with nulls at DC or Nyquist frequency. Adapted from J.B Anderson [20] chapter 3 on Carrier Transmission. Class I is also called Duo-binary [2] signaling.</caption><thead><tr><th>Class</th><th>Delay Polynomial</th><th>Transfer function H(z)</th><th>Comments</th></tr></thead><tbody><tr><td>I</td><td>(1 + D)</td><td>1 + z<sup>-1</sup></td><td>Corresponds to PR1 (Table XVI), Null at Nyquist</td></tr><tr><td>II</td><td>(1 + D)<sup>2</sup></td><td>1 + 2z<sup>-1</sup> + z<sup>-2</sup></td><td>Corresponds to PR2 (Table XVI), Two nulls at Nyquist</td></tr><tr><td>III</td><td>(1 + D)(2 - D)</td><td>2 + z<sup>-1</sup> - z<sup>-2</sup></td><td>(2 - D) factor is unusual</td></tr><tr><td>IV</td><td>(1 + D)(1 - D)</td><td>1 - z<sup>-2</sup></td><td>Corresponds to PR4 (Table XVI), Null at DC and at Nyquist</td></tr><tr><td>V</td><td>-(1 + D)<sup>2</sup>(1 - D)<sup>2</sup></td><td>-1 + 2z<sup>-2</sup> - z<sup>-4</sup></td><td>Null at DC</td></tr></tbody></table>

<table><caption>FIG. 9: A product code like RSPC (Reed Solomon Product Code) consists of arranging data in 2D arrays and detecting parities along the horizontal and vertical directions. RSPC coding in DVD requires 2064 Bytes, whereas Picket code in Blu-Ray media requires 2074.5 Bytes. Picket code ECC is tailored particularly for handling burst errors in Blu-Ray Optical media.</caption><tr><td>Information Symbols</td><td>Checks on Rows</td></tr><tr><td>Checks on Columns</td><td>Checks on Checks</td></tr></table>

## APPENDIX C: REED-SOLOMON CODES

Reed-Solomon codes are linear and cyclic. They handle bits as well as symbols. They are good in correcting burst errors. They are based on Galois fields such as GF($q^m$) where $q$ is a prime number and $m$ is an integer equal to the symbol size.

When we use 512 Byte blocks we have an overhead of 65 Bytes (15 for gap,syncaddress and 50 for ECC). Thus we need to code 577 Bytes (see Table IV) and GF(2⁹) is not sufficient, given that 2⁹ = 512, consequently we use GF(2¹⁰).

In the 4k sector case we have 15 (gap,syncaddress)+100 (ECC) Bytes, thus we use GF(2¹³) and not GF(2¹²).

Interestingly, Reed-Solomon codes can be arranged along several directions as for instance the 2D product code RSPC (Reed Solomon Product Code) used in DVD where parities are detected along a vertical as well as a horizontal direction (see Fig. 9).

[1] J. L. LoCicero and B. P. Patel, Chapter 6 in *Mobile Communications Handbook*, S. S. Suthersan (Ed.), Boca Raton: CRC Press (1999).

[2] A. B. Carlson and P. B. Crilly, *Communication systems: An Introduction to Signals and Noise in Electrical Communication*, 5th Edition, McGraw-Hill, New York (2010).

[3] S. Mueller, *Repairing and Upgrading PC's*, 20th Edition, Pearson Education (2012).

[4] X. Liu, HB Jia and C. Ma, *Error correction codes for Optical Disc Storage*, in Proceedings of SPIE, Vol. 5643, SPIE Bellingham, WA (2005).

[5] J. Cavanagh, *Magnetic Recording Fundamentals*, Chapter 7 in *Digital Design and Verilog HDL Fundamentals*, 1st Edition, Boca Raton: CRC Press (2008).

[6] K.E.S Immink, IEEE Trans. Comm., **37**, 413 (1989), K.E.S Immink, *Codes for Mass Data Storage Systems*, Second Edition, Shannon Foundation Publishers, Eindhoven, The Netherlands (2004).

[7] R. Wood, S. Ahlgrim, K. Hallamasek, R. Stenerson, IEEE Trans. Magn. MAG-20 (5), 698 (1984).

[8] E. Eleftheriou, *Signal processing for magnetic-recording channels*, in: *Encyclopedia of Telecommunications*, J. Proakis (Ed.), Vol. 4, Wiley, New York, 2247 (2003).

[9] Z. Wu, *Coding and Iterative Detection for Magnetic Recording Channels*, Kluwer Academic Publishers, (2000).
[10] D.E. Knuth, *The Art of Computer Programming*, in Section 4.6, Volume 2: *Semi-numerical Algorithms*, Third Edition, Addison-Wesley (1997).

[11] R. Wood, *Journal of Magnetism and Magnetic Materials* **321**, 555 (2009).

[12] E. Fujiwara, M. Yashiro and T. Furuya, in *Essentials of Error-Control Coding techniques*, Academic Press (1990).

[13] D. Cheng, M. Hassner, P. Hodges, B. Lamberts and R. Wood, *NSIC Discussion, IBM Corporation*, (1998).

[14] H. Matsui and S. Mita, *A New Encoding and Decoding System of Reed-Solomon Codes for HDD*, IEEE Trans. Mag., **45**, 3757 (2009).

[15] E. Deal, *Hamming, RS, BCH, LDPC Alphabet Soup of NAND ECC Parity Bytes*, Cyclic Design (2011).

[16] C-C Chu, Y-M Lin, C-H Yang, and H-Ch Chang, *A Fully Parallel BCH Codec with Double Error Correcting Capability for NOR Flash Applications*, 1605, *IEEE, ICASSP* (2012).

[17] N. Duann, *Flash Summit Meeting, Santa-Clara, USA*, Silicon Motion Inc. (2009).

[18] W. H. Press, W. T. Vetterling, S. A. Teukolsky and B. P. Flannery, *Numerical Recipes in C: The Art of Scientific Computing* Third Edition, Cambridge University Press, New-York (2007).

[19] H. K. Thapar and A. M. Pate1, *A Class of Partial Response Systems for increasing storage density in magnetic recording* IEEE Trans. Mag. **23**, 3666 (1987).

[20] J. B. Anderson, *Digital Transmission Engineering*, Chapter 3, Second Edition, IEEE Press and Wiley-Interscience (2005).
[10] D.E. Knuth, *The Art of Computer Programming*, in Section 4.6, Volume 2: *Semi-numerical Algorithms*, Third Edition, Addison-Wesley (1997).

[11] R. Wood, *Journal of Magnetism and Magnetic Materials* **321**, 555 (2009).

[12] E. Fujiwara, M. Yashiro and T. Furuya, in *Essentials of Error-Control Coding techniques*, Academic Press (1990).

[13] D. Cheng, M. Hassner, P. Hodges, B. Lamberts and R. Wood, *NSIC Discussion, IBM Corporation*, (1998).

[14] H. Matsui and S. Mita, *A New Encoding and Decoding System of Reed-Solomon Codes for HDD*, IEEE Trans. Mag., **45**, 3757 (2009).

[15] E. Deal, *Hamming, RS, BCH, LDPC Alphabet Soup of NAND ECC Parity Bytes*, Cyclic Design (2011).

[16] C-C Chu, Y-M Lin, C-H Yang, and H-Ch Chang, *A Fully Parallel BCH Codec with Double Error Correcting Capability for NOR Flash Applications*, 1605, *IEEE, ICASSP* (2012).

[17] N. Duann, *Flash Summit Meeting, Santa-Clara, USA*, Silicon Motion Inc. (2009).

[18] W. H. Press, W. T. Vetterling, S. A. Teukolsky and B. P. Flannery, *Numerical Recipes in C: The Art of Scientific Computing* Third Edition, Cambridge University Press, New-York (2007).

[19] H. K. Thapar and A. M. Pate1, *A Class of Partial Response Systems for increasing storage density in magnetic recording* IEEE Trans. Mag. **23**, 3666 (1987).

[20] J. B. Anderson, *Digital Transmission Engineering*, Chapter 3, Second Edition, IEEE Press and Wiley-Interscience (2005).