Download as pdf or txt
Download as pdf or txt
You are on page 1of 45

A Beginner's Guide to SSD Firmware:

Designing, Optimizing, and Maintaining


SSD Firmware 1st Edition Gopi Kuppan
Thirumalai
Visit to download the full and correct content document:
https://ebookmass.com/product/a-beginners-guide-to-ssd-firmware-designing-optimizi
ng-and-maintaining-ssd-firmware-1st-edition-gopi-kuppan-thirumalai/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

A Beginner's Guide to SSD Firmware: Designing,


Optimizing, and Maintaining SSD Firmware 1st Edition
Gopi Kuppan Thirumalai

https://ebookmass.com/product/a-beginners-guide-to-ssd-firmware-
designing-optimizing-and-maintaining-ssd-firmware-1st-edition-
gopi-kuppan-thirumalai/

CompTIA A+ guide to software : managing, maintaining,


and troubleshooting Ninth Edition. Edition Andrews

https://ebookmass.com/product/comptia-a-guide-to-software-
managing-maintaining-and-troubleshooting-ninth-edition-edition-
andrews/

Norah Gaughan's Twisted Stitch Sourcebook: A


Breakthrough Guide to Knitting and Designing Norah
Gaughan

https://ebookmass.com/product/norah-gaughans-twisted-stitch-
sourcebook-a-breakthrough-guide-to-knitting-and-designing-norah-
gaughan/

Continuous Integration (CI) and Continuous Delivery


(CD): A Practical Guide to Designing and Developing
Pipelines 1st Edition Henry Van Merode

https://ebookmass.com/product/continuous-integration-ci-and-
continuous-delivery-cd-a-practical-guide-to-designing-and-
developing-pipelines-1st-edition-henry-van-merode/
Designing and Conducting Survey Research: A
Comprehensive Guide 4th Edition, (Ebook PDF)

https://ebookmass.com/product/designing-and-conducting-survey-
research-a-comprehensive-guide-4th-edition-ebook-pdf/

Beginning R 4: From Beginner to Pro 1st Edition Matt


Wiley

https://ebookmass.com/product/beginning-r-4-from-beginner-to-
pro-1st-edition-matt-wiley/

Mindful Homeschooling: A Beginner’s Guide for Education


Planning and Designing a Creative Homeschool Curriculum
Mccarthy

https://ebookmass.com/product/mindful-homeschooling-a-beginners-
guide-for-education-planning-and-designing-a-creative-homeschool-
curriculum-mccarthy/

Stop. Think. Invest.: A Behavioral Finance Framework


for Optimizing Investment Portfolios 1st Edition Bailey

https://ebookmass.com/product/stop-think-invest-a-behavioral-
finance-framework-for-optimizing-investment-portfolios-1st-
edition-bailey/

Beginning MATLAB and Simulink: From Beginner to Pro,


2nd Edition Sulaymon Eshkabilov

https://ebookmass.com/product/beginning-matlab-and-simulink-from-
beginner-to-pro-2nd-edition-sulaymon-eshkabilov/
A Beginner’s Guide
to SSD Firmware
Designing, Optimizing, and
Maintaining SSD Firmware

Gopi Kuppan Thirumalai
A Beginner’s Guide to
SSD Firmware
Designing, Optimizing,
and Maintaining SSD Firmware

Gopi Kuppan Thirumalai


A Beginner’s Guide to SSD Firmware: Designing, Optimizing, and
Maintaining SSD Firmware
Gopi Kuppan Thirumalai
San Jose, CA, USA

ISBN-13 (pbk): 978-1-4842-9887-9 ISBN-13 (electronic): 978-1-4842-9888-6


https://doi.org/10.1007/978-1-4842-9888-6

Copyright © 2023 by Gopi Kuppan Thirumalai


This work is subject to copyright. All rights are reserved by the publisher, whether the whole or
part of the material is concerned, specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way,
and transmission or information storage and retrieval, electronic adaptation, computer software,
or by similar or dissimilar methodology now known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of
publication, neither the authors nor the editors nor the publisher can accept any legal
responsibility for any errors or omissions that may be made. The publisher makes no warranty,
express or implied, with respect to the material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Smriti Srivastava
Development Editor: Laura Berendson
Editorial Assistant: Jessica Vakili
Copy Editor: April Rondeau
Cover designed by eStudioCalamar
Cover image by Michael Dziedzic on Unsplash (www.unsplash.com)
Distributed to the book trade worldwide by Springer Science+Business Media New York, 1
New York Plaza, Suite 4600, New York, NY 10004-1562, USA. Phone 1-800-SPRINGER, fax (201)
348-4505, email orders-ny@springer-sbm.com, or visit www.springeronline.com. Apress Media,
LLC is a California LLC and the sole member (owner) is Springer Science + Business Media
Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail booktranslations@springernature.com; for
reprint, paperback, or audio rights, please e-mail bookpermissions@springernature.com.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook
versions and licenses are also available for most titles. For more information, reference our Print
and eBook Bulk Sales web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is
available to readers on GitHub (github.com/apress). For more detailed information, please visit
https://www.apress.com/gp/services/source-code.
Paper in this product is recyclable
To my mother, Vijaya T, and my father,
Thirumalai J
Table of Contents
About the Author�������������������������������������������������������������������������������xiii
About the Technical Reviewer������������������������������������������������������������xv

Chapter 1: Introduction to SSD Firmware���������������������������������������������1


What Is SSD?��������������������������������������������������������������������������������������������������������1
Summary��������������������������������������������������������������������������������������������������������������5

Chapter 2: Understanding the Role of Firmware in SSDs���������������������7


What Is Firmware?������������������������������������������������������������������������������������������������7
Summary������������������������������������������������������������������������������������������������������������10

Chapter 3: The History and Evolution of SSD Firmware����������������������11


History�����������������������������������������������������������������������������������������������������������������11
Summary������������������������������������������������������������������������������������������������������������13

Chapter 4: Basics of Flash Memory����������������������������������������������������15


Memory Types�����������������������������������������������������������������������������������������������������15
NOR Flash Memory����������������������������������������������������������������������������������������16
NAND Flash Memory�������������������������������������������������������������������������������������17
Similarities����������������������������������������������������������������������������������������������������19
Differences����������������������������������������������������������������������������������������������������19
A Flash Memory Cell�������������������������������������������������������������������������������������������19
NAND Memory Organization�������������������������������������������������������������������������������23
Addressing�����������������������������������������������������������������������������������������������������24

v
Table of Contents

Erase�������������������������������������������������������������������������������������������������������������������25
Write�������������������������������������������������������������������������������������������������������������������25
Read��������������������������������������������������������������������������������������������������������������������27
Program/Erase Cycle (P/E Cycle)������������������������������������������������������������������������28
Summary������������������������������������������������������������������������������������������������������������30

Chapter 5: 3D Vertical NAND���������������������������������������������������������������31


Evolution of 3D Vertical NAND Technology����������������������������������������������������������31
Unlocking New Possibilities with Vertical NAND Architecture�����������������������������33
Advantages of 3D Vertical NAND�������������������������������������������������������������������������35
Applications of 3D Vertical NAND������������������������������������������������������������������������36
Understanding 3D Vertical NAND Architecture����������������������������������������������������37
Layers and Pages������������������������������������������������������������������������������������������37
Charge Trapping Technology��������������������������������������������������������������������������38
Bit Line and Word Line Architecture��������������������������������������������������������������40
Control and Decoding Circuits�����������������������������������������������������������������������40
Memory Cell Size and Density in 3D Vertical NAND Flash Memory
Technology����������������������������������������������������������������������������������������������������40
Understanding NAND Cell Types Supported: SLC, MLC, and TLC (QLC)���������������41
SLC����������������������������������������������������������������������������������������������������������������41
MLC���������������������������������������������������������������������������������������������������������������42
TLC����������������������������������������������������������������������������������������������������������������������43
Read and Write Operations in 3D Vertical NAND�������������������������������������������������43
Erasing MLC 3D vertical NAND block������������������������������������������������������������������47
Endurance and Data Retention Capabilities��������������������������������������������������������49
Speed and Efficiency Compared to 2D Planar NAND������������������������������������������49
Advancements in Storage Capacity with 3D Vertical NAND��������������������������������50
Summary������������������������������������������������������������������������������������������������������������50

vi
Table of Contents

Chapter 6: Basic Understanding of NAND Flash Interface������������������51


Basic NAND IO Interfacing Pin Details�����������������������������������������������������������������52
NAND Flash Interface Basics������������������������������������������������������������������������������54
Open NAND Flash Interface (ONFI)����������������������������������������������������������������������55
Toggle Mode Interface����������������������������������������������������������������������������������������55
Command Cycles for NAND Flash Operations�����������������������������������������������������56
Addressing����������������������������������������������������������������������������������������������������������57
Column Address���������������������������������������������������������������������������������������������58
Row Address��������������������������������������������������������������������������������������������������58
Addressing Functions������������������������������������������������������������������������������������58
Address Cycle Order��������������������������������������������������������������������������������������58
Handling Unused Bits������������������������������������������������������������������������������������59
NAND Flash Commands��������������������������������������������������������������������������������������62
RESET Operation��������������������������������������������������������������������������������������������62
READ ID Operation�����������������������������������������������������������������������������������������63
READ STATUS Operation��������������������������������������������������������������������������������64
READ STATUS Response�������������������������������������������������������������������������������������64
ERASE Operation�������������������������������������������������������������������������������������������66
PROGRAM Operations�����������������������������������������������������������������������������������������68
READ Operation���������������������������������������������������������������������������������������������������70
RANDOM DATA READ Operation��������������������������������������������������������������������������72
Typical NAND Packet Structure���������������������������������������������������������������������������73
PAGE READ CACHE MODE Operation�������������������������������������������������������������������74
PROGRAM PAGE CACHE Operation����������������������������������������������������������������������75
Advanced Command Sets�����������������������������������������������������������������������������������78
Address Input Restrictions for Multi-Plane Operations���������������������������������������79

vii
Table of Contents

Multi-plane Read�������������������������������������������������������������������������������������������������81
MULTI- PLANE RANDOM CACHE READ Operation������������������������������������������������82
Multi Plane Program Operation���������������������������������������������������������������������������85
Multi Plane Cache Program Operation����������������������������������������������������������������88
Multi Block Erase Operation��������������������������������������������������������������������������������90
Summary������������������������������������������������������������������������������������������������������������92

Chapter 7: Common SSD Firmware Features��������������������������������������93


Significance of Garbage Collection in SSDs��������������������������������������������������������95
Types of Garbage Collection Strategies��������������������������������������������������������������95
Full Garbage Collection����������������������������������������������������������������������������������95
Partial Garbage Collection�����������������������������������������������������������������������������95
Dynamic Garbage Collection�������������������������������������������������������������������������96
Error-Triggered Garbage Collection���������������������������������������������������������������96
Garbage Collection Read Process������������������������������������������������������������������97
Retrieving Valid Data during Compaction������������������������������������������������������������98
Handling Incomplete or Interrupted Reads���������������������������������������������������������98
Address Translation during Compaction Reads���������������������������������������������������99
Writing Data during Compaction�����������������������������������������������������������������������100
Address Mapping and Updating������������������������������������������������������������������������101
Managing Block Erasure and Wear-Leveling����������������������������������������������������101
Handling Unexpected Power-Off Conditions in Garbage Collection������������������102
Ensuring Data Consistency during Power Loss�������������������������������������������102
Write Journaling and Recovery Mechanisms����������������������������������������������103
Managing Incomplete Compaction Operations��������������������������������������������104
Performance Considerations in Garbage Collection������������������������������������������104
Impact of Compaction on SSD Performance�����������������������������������������������105
Write Amplification and Its Effects��������������������������������������������������������������106

viii
Table of Contents

Strategies to Minimize Performance Degradation���������������������������������������107


Balancing Garbage Collection and Host Write Operations��������������������������������108
Understanding the Workload Characteristics����������������������������������������������108
Garbage Collection Prioritization�����������������������������������������������������������������108
Dynamic Resource Allocation����������������������������������������������������������������������109
Over-Provisioning����������������������������������������������������������������������������������������109
Adaptive Garbage Collection�����������������������������������������������������������������������110
Drawbacks of Garbage Collection and Minimizing Their Impact�����������������������110
Write Amplification��������������������������������������������������������������������������������������110
Performance Degradation���������������������������������������������������������������������������111
Increased Power Consumption��������������������������������������������������������������������111
Impact on Endurance�����������������������������������������������������������������������������������111
Other Concerns�������������������������������������������������������������������������������������������������112
Data Retention���������������������������������������������������������������������������������������������112
Read Disturb������������������������������������������������������������������������������������������������113
Program Disturbance�����������������������������������������������������������������������������������115
Write Amplification��������������������������������������������������������������������������������������116
Over-provisioning����������������������������������������������������������������������������������������117
Encryption���������������������������������������������������������������������������������������������������118
Summary����������������������������������������������������������������������������������������������������������118

Chapter 8: SSD Firmware Design Considerations�����������������������������119


Design Considerations��������������������������������������������������������������������������������������119
Unexpected Shutdown��������������������������������������������������������������������������������������121
Power-Loss Protection��������������������������������������������������������������������������������������122
Power-Loss Design Considerations�������������������������������������������������������������123
Best Practices for Optimizing and Maintaining SSD Firmware�������������������125
Summary����������������������������������������������������������������������������������������������������������127

ix
Table of Contents

Chapter 9: Flash Translation Layer (FTL)������������������������������������������129


Mapping Table���������������������������������������������������������������������������������������������������130
Size of the Mapping Table���������������������������������������������������������������������������������131
Storing the Mapping Table in RAM��������������������������������������������������������������������132
Partial Loading of the Mapping Table����������������������������������������������������������������132
Storage of Non-Loaded Mapping Entries����������������������������������������������������132
Write/Update Operations and the Mapping Table����������������������������������������������133
Dirty Cache Buffer in RAM���������������������������������������������������������������������������133
Mapping Table Management and Optimization�������������������������������������������������134
Bad Block Management������������������������������������������������������������������������������������142
Factory Bad Block Assessment�������������������������������������������������������������������������142
Bad Block Flash Address�����������������������������������������������������������������������������143
Recording Bad Block Flash Address������������������������������������������������������������143
Initial Bad Block Handling Flow�������������������������������������������������������������������143
Used Bad Block Assessment�����������������������������������������������������������������������������146
Bad Block Skipping Strategy�����������������������������������������������������������������������149
Bad Block Replacement Strategy����������������������������������������������������������������149
Summary����������������������������������������������������������������������������������������������������������150

Chapter 10: User Data Flow��������������������������������������������������������������151


Write Path���������������������������������������������������������������������������������������������������������151
Read Path����������������������������������������������������������������������������������������������������������152
Summary����������������������������������������������������������������������������������������������������������153

Chapter 11: Throttling����������������������������������������������������������������������155


Thermal Throttling���������������������������������������������������������������������������������������������155
Temperature Monitoring������������������������������������������������������������������������������155
Throttling Mechanism����������������������������������������������������������������������������������155
Temperature Recovery��������������������������������������������������������������������������������156

x
Table of Contents

Design Consideration����������������������������������������������������������������������������������156
Power Throttling������������������������������������������������������������������������������������������������158
Power Monitoring����������������������������������������������������������������������������������������158
Throttling Mechanism����������������������������������������������������������������������������������159
Power Recovery�������������������������������������������������������������������������������������������159
Combined Throttling������������������������������������������������������������������������������������������159
Synergistic Operation����������������������������������������������������������������������������������159
Priority Management�����������������������������������������������������������������������������������159
Dynamic Performance Adjustments������������������������������������������������������������������160
Workload Awareness�����������������������������������������������������������������������������������160
Logging and Reporting��������������������������������������������������������������������������������������160
Event Logging����������������������������������������������������������������������������������������������160
Health Monitoring����������������������������������������������������������������������������������������160
Summary����������������������������������������������������������������������������������������������������������161

Chapter 12: Exception Handling�������������������������������������������������������163


Read Errors�������������������������������������������������������������������������������������������������������163
Handling������������������������������������������������������������������������������������������������������164
Program Errors��������������������������������������������������������������������������������������������������165
Handling������������������������������������������������������������������������������������������������������������165
Program Abort���������������������������������������������������������������������������������������������������166
Handling������������������������������������������������������������������������������������������������������166
Erase Errors������������������������������������������������������������������������������������������������������167
Handling������������������������������������������������������������������������������������������������������167
Summary����������������������������������������������������������������������������������������������������������168

xi
Table of Contents

Chapter 13: Performance������������������������������������������������������������������169


Access Patterns and Test Workloads����������������������������������������������������������������170
Workloads���������������������������������������������������������������������������������������������������������171
Host Interface����������������������������������������������������������������������������������������������������179
Summary����������������������������������������������������������������������������������������������������������180

Chapter 14: Debugging���������������������������������������������������������������������181


Summary����������������������������������������������������������������������������������������������������������186

Chapter 15: Future Developments and Innovations in SSD


Firmware������������������������������������������������������������������������������������������187
Summary����������������������������������������������������������������������������������������������������������189

Chapter 16: Closing��������������������������������������������������������������������������191

Bibliography�������������������������������������������������������������������������������������193

Index�������������������������������������������������������������������������������������������������195

xii
About the Author
Gopi Kuppan Thirumalai is a highly experienced embedded design
engineer with a proven track record of success in the industry. He has over
15 years of experience in a variety of domains, including wireless networks,
software, automotive, and storage. He is an expert in client and data-
center SSD design and implementation and has a history of leading and
mentoring teams to achieve their goals. He is also an outdoor enthusiast
and enjoys hiking, fitness, reading books, and cooking.

xiii
About the Technical Reviewer
Kenneth Fukizi is a software engineer, architect, and consultant with
experience internationally in coding on different platforms. Prior to
dedicated software development, he worked as a lecturer and was then
head of IT at different organizations. He has domain experience working
with technology for companies mainly in the financial sector. When he’s
not working, he likes reading up on emerging technologies and strives to
be an active member of the software community.
Kenneth currently leads a community of African developers through a
startup company called AfrikanCoder.

xv
CHAPTER 1

Introduction to
SSD Firmware
Welcome to the world of SSD firmware! This chapter marks the beginning
of your journey into the intricate world of solid-state drive (SSD) firmware.
In this chapter, I will lay the foundation by exploring the fundamental
concepts and essential aspects of SSD firmware. My goal is to provide
you with a clear understanding of what SSDs are, the role of firmware in
optimizing their performance, and the key differences that set SSDs apart
from traditional hard-disk drives (HDDs).

What Is SSD?
A solid-state drive (SSD) is a type of storage device that uses flash memory
to store data. Compared to traditional hard drives, which use spinning
disks to store data, SSDs are much faster, more reliable, and more energy
efficient. However, to take full advantage of the capabilities of an SSD,
it is necessary to use specialized software known as SSD firmware. SSD
firmware is the embedded software that controls the functions and
features of an SSD. It is responsible for managing the storage, retrieval,
and protection of data on the drive. SSD firmware is typically stored on the
drive’s non-volatile memory and is executed by the drive’s controller when
the drive is powered on. It plays a critical role in ensuring the reliable and
efficient operation of an SSD.
© Gopi Kuppan Thirumalai 2023 1
G. Kuppan Thirumalai, A Beginner’s Guide to SSD Firmware,
https://doi.org/10.1007/978-1-4842-9888-6_1
Chapter 1 Introduction to SSD Firmware

The first SSD, introduced in the late 1970s, used simple firmware
that was primarily responsible for interfacing with the host system and
translating its commands into actions on the drive. At the beginning,
SSDs were introduced for use in early IBM supercomputers, but they were
not often used due to their high cost. Over time, as SSD technology has
evolved, the firmware has become increasingly complex, adding features
such as wear leveling, garbage collection, and encryption. In addition, the
capabilities of SSD firmware have improved over time to support larger
SSDs, with current firmware able to support drives with capacities of up to
100 TB or more.
Today, SSD firmware is a crucial component of modern storage systems,
providing numerous benefits over traditional hard disk drives (HDDs),
such as faster access to data, higher reliability, and lower power
consumption. It also enables advanced features such as data protection,
power management, and error correction, which are essential for
maintaining the integrity and performance of the drive.

Figure 1-1. Comparison of HDD and SSD

2
Chapter 1 Introduction to SSD Firmware

In addition to supporting larger SSDs, modern SSD firmware is also


designed to improve the performance of the drive. For example, SSD
firmware can optimize the process of reading and writing data to the drive,
and it can also improve the reliability of the drive by using techniques such
as error-correcting code (ECC) and wear leveling.
There are several different types of SSD that are commonly used,
including data-center SSDs, client SSDs, external SSDs, and enterprise
SSDs. Each of these types of SSD has its own unique set of requirements,
and the firmware that is used with these drives is specifically designed to
meet those requirements.
One important consideration when designing SSD firmware is the type
of memory that is used in the drive. The most common types of memory
used in SSDs are single-level cell (SLC), multi-level cell (MLC), triple-level
cell (TLC), and quadruple-level cell (QLC). Each of these types of memory
has its own unique characteristics, and the firmware that is used with the
drive must be optimized to take advantage of those characteristics. SLC
memory is generally considered to be the most reliable and robust type of
memory, but it is also the most expensive. MLC, TLC, and QLC memory
are generally less expensive than other types, but they are also less reliable
and have lower endurance, meaning they can’t withstand as much wear
and tear (less P/E cycle (program/erase Cycle) compared to SLC). In
addition, the firmware design and implementation for MLC, TLC, and
QLC memory can be more complex compared to other types of memory.
This means that the firmware used to control and manage the memory
may be more intricate and require more effort to design and implement. In
general, MLC, TLC, and QLC memory are less durable and more complex
to work with compared to other types of memory, but they can be a cost-
effective option for certain applications.
Another important consideration when designing SSD firmware is the
type of host interface that is supported. The host interface is the interface
that connects the SSD to the rest of the system, and different interfaces have
different performance characteristics. The most common types of host

3
Chapter 1 Introduction to SSD Firmware

interface for SSDs are SATA, USB, NVMe, and SAS (Serial-Attached Small
Computer System Interface (SCSI). SATA is the most common and widely
supported interface, but it has relatively low performance compared to other
interfaces. NVMe is a newer interface that is designed specifically for high-
performance storage devices, and it can provide much higher performance
than SATA. USB is a universal interface that is commonly used for external
storage devices, but it has lower performance than other interfaces. SAS is
a high-performance interface that is commonly used in enterprise storage
systems, but it is not as widely supported as SATA or NVMe.

Figure 1-2. SSD block diagram

This book is a basic resource that covers the fundamental principles


and technical aspects of SSD firmware and is designed to provide a basic
understanding of the key concepts and technologies used in SSD firmware.
The guide is divided into several chapters, each of which covers a different
aspect of SSD firmware. The first few chapters provide an overview of SSD
firmware, including the key features and benefits of SSDs and the ways in
which they differ from traditional hard-disk drives (HDDs). These chapters
help with understanding the role of the SSD firmware in managing the
read and write operations of the drive and also dive into the history and
evolution of SSD firmware.
The further chapters delve into the inner workings of SSD firmware,
exploring fundamental NAND operations, various techniques for error
correction, and strategies for endurance management. They also cover

4
Chapter 1 Introduction to SSD Firmware

common SSD firmware features, design considerations, and the all-


important flash translation layer. The chapters then examine the flow
of user data and exception handling in an SSD, as well as performance
optimization and debugging support. Finally, the book concludes
with a look to the future, examining the cutting-edge technologies and
innovations that are shaping the future of SSD firmware.
This book may provide a valuable resource for anyone interested
in understanding the technical details of SSD firmware basics and how
firmware impacts the performance and reliability of solid-state drives.
Whether you are a firmware engineer, a computer science student, or
simply someone interested in learning more about SSDs, this book is sure
to provide you with a basic information and insights.

Summary
In this chapter, we covered the basics of SSD firmware. You have learned
that SSD firmware is the software that controls the operation of an
SSD. You have also learned that SSD firmware is responsible for tasks
such as managing the wear leveling of the NAND flash memory, garbage
collection, and error correction.
You have also learned about the different types of SSD that are
commonly used, including data center SSDs, client SSDs, external SSDs,
and enterprise SSDs. We have discussed the different types of memory that
are used in SSDs, such as SLC, MLC, TLC, and QLC. We have also looked
at the different types of host interfaces that are supported by SSDs, such
as SATA, USB, NVMe, and SAS. This chapter set the stage for a deeper dive
into the intricate workings of SSD firmware, promising insights into NAND
operations, error correction techniques, performance optimization, and
future innovations.

5
CHAPTER 2

Understanding the
Role of Firmware
in SSDs
Picture the hardware of a solid-state drive (SSD) as the engine of a
car, and the firmware as the driver who controls and optimizes its
performance. In the SSD world, firmware takes center stage, fine-tuning
every interaction between the physical components and the digital world.
This chapter embarks on a journey to unveil the firmware’s pivotal role
in SSDs, breaking down its intricate responsibilities and how it makes
things happen.

What Is Firmware?
For SSDs to work properly and help us with tasks, they rely on both
hardware and firmware. The hardware consists of the physical
components of the device, such as the processor, memory, and storage.
The firmware, meanwhile, is the software that runs on the device and
controls the hardware. It is responsible for ensuring that the device
performs its designated tasks and functions properly.

© Gopi Kuppan Thirumalai 2023 7


G. Kuppan Thirumalai, A Beginner’s Guide to SSD Firmware,
https://doi.org/10.1007/978-1-4842-9888-6_2
Another random document with
no related content on Scribd:
TAMALES

Tamales are a mixture of meat or fowl made hot with chiles and
wrapped in corn-husks. In preparing the dough or nixtamal, unless
scalded meal is used for a substitute, it is necessary to prepare the
shelled corn with lime-water. The Mexicans grind the corn prepared
in this way, on the metate, and instead of a mortar use the molcajete
and lejolote.
To prepare the corn, cover it with water, add the lime-water and
boil until the husks slip off easily between the fingers, then wash in
cold water until perfectly white. The lime-water is made by adding an
ounce of common lime to a quart of water; stir well and let settle;
when clear, drain off the water for use. One quart of lime-water
prepared in this way will do for a pound of corn. For the wrapping,
cut off the inside leaves of the corn-husks about an inch from the
stalk end and boil in clear water until perfectly clean. Tear a few in
narrow strips to use for tying the ends; dry the rest and rub them
over with a cloth dipped in hot lard.
FARSANTA
Use equal quantities of cold boiled chicken and veal, and half as
much ham, all chopped. Mix together and moisten with good gravy.
Season with salt, cayenne and a little chopped parsley. Make a
dough by pouring a cupful of boiling water on a quart of fine, fresh
corn-meal; work in a big lump of butter and add water until like
biscuit dough. Have ready, as directed, a pile of the soft inner leaves
or husks of green corn. Take a lump of dough about the size of an
egg; pat it out flat, put a tablespoonful of the meat on it and roll for
the inner husk. Then put on the outer husks with a thin piece of
dough in each. Tie the ends and boil in water containing a few red
peppers and a clove of garlic.

GENUINO
Boil three quarts of whole corn in ash lye until the hulls come off;
soak in clear water until the lye is all out, then grind. Remove the
seeds and veins from six chile peppers, boil soft and then put
through a colander to separate from the skin. Boil a chicken tender
and set aside half of the well-seasoned broth; the rest, with the
chicken, thicken with part of the ground corn and add the pepper-
pulp and three tablespoonfuls of fine marjoram. For the batter, take
the remainder of the broth and ground corn and mix into it a
tablespoonful of olive-oil; season with salt and make the dough just
thick enough to spread. These proportions will make fifteen tamales.
HACIENDA
Grind two quarts of hulled corn through a meat-chopper and mix to
a paste with two tablespoonfuls of melted butter, salt and cayenne.
Divide a large, fat chicken and stew until tender, in water containing
a clove of garlic and a pinch, each, of salt, comino seed and
marjoram. Scald two dozen dry chiles, remove the seeds and veins,
scrape the pulp from the skin, add this to the chicken-stew and
thicken slightly with flour. Shape the corn-husks with scissors and
soak in warm water for an hour. Remove, dry and rub each one with
hot fat. Fill one with the chicken-stew, spread four others with the
corn-paste; fold over the one containing the chicken and roll the
others around. Tie the ends with a strip of the husk and steam for
two hours.

HOT TAMAL
For the dough, add to one pint of corn-meal, one tablespoonful,
each, of salt and lard, and enough boiling water to make a thick
dough. Prepare the corn-husks as directed. For the filling boil one
pound of beef and pour over it hot beef fat; cut into small bits and
season with salt and chile sauce. Put a layer of the dough in the
husk, over this a tablespoonful of the prepared meat; roll like a
cigarette, with a layer of dough between each husk. Tie each end
and steam two hours.

LAREDO’S CELÉBERRIMO
Boil a pound of pork until two-thirds cooked; then grind it rather
fine. Add a small amount of garlic, also a small quantity of seeded
raisins and prepared almonds. Soak two and a half ounces of chiles
in hot water; take out the seeds and veins, wash them well and grind
fine, adding enough of the stock in which the meat was boiled to
make a sauce, and strain. For the dough use the ground corn
prepared with lime-water; add six ounces of fresh lard to the pound,
salt to taste and moisten with the meat stock. Have the husks
prepared, spread each with a thin layer of dough, and for the center
one, a tablespoonful of the pork and a tablespoonful of the chile
sauce. Roll carefully, tie the ends and steam over the liquid in which
the meat was boiled.

MESA REDONDA
Cover a four-pound chicken with hot water and add four onions, a
clove of garlic chopped fine, a stick of cinnamon, ten whole allspice,
ten cloves, three red chile peppers and a teaspoonful of salt. Simmer
until the chicken is tender, then remove and cut into small pieces.
Strain the liquor, put the chicken meat into it, add enough yellow
corn-meal to make a thick mush and boil ten minutes. Have ready
the green corn cut from a dozen ears and two pounds of raisins,
seeded, and mix these into the mush, with a half-teaspoonful of
cayenne. Fill the center husk with a piece of the chicken and some of
the mush, roll the others around, each spread with a tablespoonful of
the mush. Tie at each end and boil an hour.

VIAJERO
Scald a quart of good Southern white corn-meal, making it moist,
but not soft. Have a chicken boiled until tender and separated into
parts; season the broth with the pulp of two dozen chile peppers, a
quart of whole olives, two pounds of raisins, a cupful of sweet lard,
salt and a suspicion of garlic; add enough corn-meal to thicken like
gravy. Lay one of the prepared husks flat, put a piece of chicken on it
and two tablespoonfuls of the thickened gravy; fold the husk over
with the chicken inside, and roll around this six more husks,
spreading each with two tablespoonfuls of the scalded meal. Tie
each end securely with a narrow strip of the husk and steam three
hours or longer.
OLLA PODRIDA

AJOQUESO
Boil three Spanish peppers and pass the pulp through a sieve. Fry
a small onion and a clove of garlic, chopped fine, in hot olive-oil; add
the pepper-pulp, a small piece of butter, salt, a dash of tabasco and
a cupful of grated cheese. Stir, as it heats, and add thin cream until it
will pour nicely. Serve immediately on hot toasted biscuits.

ALMIBAR
Put two cupfuls of brown sugar in a saucepan, add a half-cupful of
milk, and boil gently until a little put in cold water can be rolled into a
ball between the fingers. Stir steadily while boiling; add a lump of
butter the size of an egg; when this is melted remove from the fire
and beat until the mixture begins to look creamy and slightly
granulated. Stir in quickly a pound of English walnuts shelled and
broken, beat for a moment and then turn into buttered tins to harden.

AZUCARILLO
Cream a quarter of a cupful of butter with a half-cupful of
powdered sugar; add gradually a quarter of a cupful of milk and
seven-eighths of a cupful of flour. Flavor with vanilla and spread very
thin, with a broad knife, on a buttered inverted dripping-pan; sprinkle
with blanched and chopped almonds, crease in three-inch squares,
and bake until delicately browned. While warm cut the squares apart
and roll slightly.

BLANQUILLOS
Chop two large onions fine and fry in hot olive-oil; add two large
peeled and sliced tomatoes and a teaspoonful of ground dry chile.
Cook twenty minutes and just before serving put in a half-dozen
hard-boiled eggs cut in quarters. Pour over toast.

CAFÉ CON LECHE


Set the drip coffee-pot where it will keep hot. Put a cupful of
ground coffee into the strainer and pour two tablespoonfuls of boiling
water in the top; in five minutes, pour in a little more water, adding a
little at a time until you have used four cupfuls, but never pour in
water a second time until the grounds have ceased to bubble. In
serving, fill the cup only half full of coffee and add the rest in boiling
milk. On top put a tablespoonful of hot cream.

CRIOLLO GUISADO
Get ten of the Mexican tortillas, cut them in small pieces and fry in
hot lard; in another pan, fry a large onion and a clove of garlic
chopped fine; just as it browns, add the fried tortillas, and brown
together for a few minutes; then add a pound and a half of mild
cheese, grated, and a cupful of chopped olives. When all are fried
together nicely, season with salt and pour over it a chile sauce, and
put in a deep dish and bake for fifteen minutes. Serve as soon as
taken from the oven.
EMPAREDADO
Beat into a cupful of cold mashed potatoes one of thick sour
cream or milk, and add two beaten eggs. Sift into a cupful of flour a
half-teaspoonful, each, of soda and salt, and beat this lightly into the
potatoes and milk. Drop the batter in big spoonfuls on a hot griddle
and bake on both sides. Put grated ham, chopped olives and a little
parsley on one cake, and place the other on top to form a sandwich.
Serve hot and pass with them chile sauce.

ENSALADA
Slice two Spanish onions in thin rings, cut two fresh chiles across
in rings, removing the seeds, and slice three ripe, firm tomatoes. Put
these in alternate layers in a shallow bowl, sprinkle parsley and
bread-crumbs over the top and cover with a dressing made of three
parts oil to one of vinegar, seasoned with salt. Serve ice cold.

LLENAR MEJICANO
Cut a pound of mild cheese into tiny bits. Prepare a cupful of
olives stoned and chopped fine, one large onion chopped fine, and
ten chile-prunes (that is, the dried shells of the chiles, without the
seeds), toasted and crushed fine. To these add a pinch of marjoram
crushed fine, a tablespoonful of olive-oil and a teaspoonful of cider-
vinegar. Mix all well together, let stand an hour and then put between
thin slices of bread and butter.

MEJICANO-AMERICANO
Cream a quarter of a pound of butter, adding by degrees the
beaten yolks of six eggs; beat together until thick and creamy, then
sift in ten ounces of flour, stirring all the time. Whisk up the whites of
the six eggs, and gently, but thoroughly, stir these in, adding
sufficient milk to make a medium thick batter; flavor with vanilla.
Bake in waffle-irons, well greased and hot. Butter each waffle as it
comes from the iron, and dust with fine sugar mixed with a little
powdered cinnamon.

MIGAS
Soak slices of stale bread and squeeze dry. Put plenty of fresh
lard in a frying-pan and when boiling hot put in an onion chopped
fine, some ground chile and a pinch of sweet marjoram. Lay the
slices of bread in this with plenty of fresh crumbled goats’ cheese,
and fry for ten minutes, stirring to cook on all sides. Remove to a hot
plate and cover with fresh grated cheese, stoned ripe olives and
hard-boiled eggs chopped fine.

MOLLETE
Beat together a cupful of cold boiled squash, one of milk, and two
eggs. Sift together a cupful of corn-meal, one of flour, a half-
teaspoonful of salt and two of baking-powder. Mix all together into a
smooth batter and bake on both sides in little cakes on a hot griddle.
Serve hot with sugar sprinkled on each.

PAN RELLENO
Chop onion very fine and mix with mild cheese cut in small pieces
in the proportion of one-third onion to two-thirds cheese; add a few
ripe olives stoned and cut in half, and a pinch of oregano. Mix this
together with a dressing made of oil and vinegar: two-thirds oil and
one-third vinegar. Cut off the top of a small loaf of French bread the
long way, dig out the center and fill with the cheese mixture. Put the
crust back on top and cover with the mixture and bake in a rather
quick oven.

POLENTA
Into three pints of boiling water put a teaspoonful of salt and a
tablespoonful of butter. When boiling, sift in slowly, stirring constantly,
about a pint of Indian meal and boil a half-hour. Have ready, hot, a
cupful of good gravy, and one of tomato sauce, made with chile. Put
a layer of the cooked Indian meal in the bottom of a baking-dish,
then the sauce and gravy, sprinkled with a little grated cheese. Fill
the dish with these alternate layers and bake for half an hour. Serve
hot with a little extra chile.

PUEBLECILLO
Sauter little half-inch squares of chicken or calves’ liver in olive-oil
over a brisk fire; when nicely browned, add some thick tomato sauce
and some leftover gravy. Into this cut up half-inch lengths of cooked
macaroni, mushrooms, and a few olives cut small. Season highly
and work in a big lump of butter. Serve on toasted squares.

TORTAS SERRANO
Beat six eggs together until light; add a half-cupful of flour and an
onion chopped fine. Stir in lightly one teaspoonful of baking-powder
and a pinch of salt. Cut a half-pound of mild cream cheese into thin
squares and add to the egg mixture. Have ready a kettle of hot lard.
Take up one piece of cheese at a time with as much of the egg
mixture as the spoon will hold, and drop into the fat and fry until
brown. Serve with hot chile sauce.

TORTILLA DE HUEVOS
Chop a small clove of garlic and fry in olive-oil; add a cupful of
mushrooms, cut small, and a half-cupful of stewed tomatoes.
Season with salt and pepper. Make a plain omelet and just before
folding it over, spread this on top. Serve immediately.
INDEX
SOUP
Almendra (Almond), 3
Caldo de Pescado (Fish), 3
Chile Bisque, 4
Cordero (Lamb), 4
Gitano (Beans and Codfish), 5
Mexican Noodle, 5
Rancheros (Vegetable), 5

FISH
Cangrejuelos (Shrimps), 9
Caracoles con Perejil (Snails), 9
Langosta à la Catalans (Lobster), 10
Pilchers (Sardines), 10

MEAT
Buey Ahumando y Huevos (Dried Beef and Eggs), 13
Chile con Carne (Pork), 13
Chonzo (Beef and Pork), 13
Chuletas de Ternero (Veal Cutlets), 14
Estofado (Beef), 14
Guiso (Beef), 15
Jamon con Pimientos (Ham), 15
Lengua de Buey Concida (Beef’s Tongue), 16
Loma de Vaca (Beef), 17
Patitas con Mani (Pigs’ Feet), 17
Puerco en Estofado (Pork), 18
Pulchero Grueso (Boiled Meat and Vegetables), 18
Tia Juana (Tripe), 19
Tripe Spanish, 19

FOWL
À la Moda (Chicken and Macaroni), 23
Chile Chicken, 23
Gallina con Garbanzos (Chicken and Peas), 23
Ganso en Aceitunas (Goose), 24
Mexican Turkey, 24
Mole de Guajolote (Turkey), 25
Pollo Guisado (Chicken), 26
Polluelo en Estofado (Chicken), 26

VEGETABLES
Arroz en el Horno (Rice), 29
Beans Mexican, 29
Chile Reinas (Peppers), 30
Cidracayote (Summer Squash), 30
Ejotes con Vino (String-Beans), 31
Estilo Seco (Beans), 31
Entradas (Macaroni), 32
Frijoles (Beans), 32
Frijoles con Queso (Beans with Cheese), 33
Fuente Italiano (Spaghetti), 33
Green Chiles, 33
Habas España (Beans), 34
Macarrones (Macaroni), 34
Mañana-land (Rice), 35
Papas Rellenas (Potatoes Stuffed), 35
Pimientos (Peppers), 36
Plato Fuerte (Peppers with Sardines), 36
Rellenos (Peppers), 36
Rellenos de Queso de Gruyère (Peppers and Swiss
Cheese), 37
Stuffed Chiles, 37
Suculento (Corn and Summer Squash), 38

MEAT DUMPLINGS
Albondigas, 41
Albondiguillas, 41
Artificial Turtle, 42
Buñelos, 42
Huevos de Carne, 42

DESSERTS
Camote y Piña (Candied Sweet Potatoes and Pineapple),
47
Dulce (Baked Raisins), 47
Mantecado (Ice-Cream), 47
Postre de Manzanas (Apples), 48
Realengo (Fruit Soufflé), 49
Torto Frutas (Pie), 49

ENCHILADAS

Sauces for Enchiladas


Chile, 55
Cold Colorado, 55
Mexican Chile, 56
Salsa Nuez (Nut), 56
Tomato, 57

Tortillas
Hecho en Casa, 58
Tortillas de Patátas, 58

Enchiladas
Americano, 59
Doméstico, 60
Mexican, 60
Nativo, 61
Quesadillas, 62

TAMALES
Farsanta, 67
Genuino, 67
Hacienda, 68
Hot Tamal, 69
Laredo’s Celéberrino, 69
Mesa Redonda, 70
Viajero, 71

OLLA PODRIDA
Ajoqueso (Cheese), 75
Almibar (Candy), 75
Azucarillo (Wafers) 76
Blanquillos (Eggs), 76
Café con Leche (Black Coffee with Milk), 76
Criollo Guisado (Tortillas Fried), 77
Emparedado (Hot Cakes), 77
Ensalada (Salad), 78
Llenar Mejicano (Filling for Sandwiches), 78
Mejicano-Americano (Waffles), 79
Migas (Fried Bread), 79
Mollete (Cakes), 80
Pan Relleno (Stuffed Bread), 80
Polenta (Baked Mush), 81
Pueblecillo (Liver and Macaroni), 81
Tortas Serrano (Cheese in Batter), 82
Tortilla de Huevos (Omelet), 82
*** END OF THE PROJECT GUTENBERG EBOOK ONE
HUNDRED & ONE MEXICAN DISHES ***

Updated editions will replace the previous one—the old editions will
be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying copyright
royalties. Special rules, set forth in the General Terms of Use part of
this license, apply to copying and distributing Project Gutenberg™
electronic works to protect the PROJECT GUTENBERG™ concept
and trademark. Project Gutenberg is a registered trademark, and
may not be used if you charge for an eBook, except by following the
terms of the trademark license, including paying royalties for use of
the Project Gutenberg trademark. If you do not charge anything for
copies of this eBook, complying with the trademark license is very
easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the free


distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund from
the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only be


used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law in
the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name
associated with the work. You can easily comply with the terms of
this agreement by keeping this work in the same format with its
attached full Project Gutenberg™ License when you share it without
charge with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the terms
of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.

1.E. Unless you have removed all references to Project Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears, or
with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:

You might also like