As computers advance, integration of platforms and their components become a larger and more complex task. Designers of computer systems prefer platforms to be modular and upgradeable, so pieces of the platform may be updated without having to replace the whole system. In light of this industry model, basic input/output software (BIOS) used to initially boot a platform is typically stored on a FLASH device. Therefore, if a platform's configuration needs to be changed and the BIOS needs to be updated, a memory device is erased and updated with new code/software.
Previously, memory devices were not erased regularly, as it was not necessary to update the BIOS frequently. However, new usage models of a platform's BIOS has changed the frequency in which the BIOS is erased. Examples of the new usage models include, expanding the use of the BIOS into the operating system (OS) space and using the FLASH as a repository for configuration related data.
Although today's FLASH devices have the ability to be rewritten with a good level of reliability, FLASH devices are still susceptible to write-failure limitations. Moreover, the increase in the regularity that FLASH devices are updated exposes an inherent fragility that was not exhibited previously due to the static nature of a FLASH device's usage.
Upon manufacture and frequent flashing, a FLASH device may develop bad blocks, i.e. blocks that result in a read or write failure upon access. Bad blocks may cause failure in initialization of the platform or other configuration problems. Currently, bad blocks in a FLASH potentially cause the whole FLASH device to be scrapped and replaced, which is inefficient and expensive.