2244|1

6423

帖子

16

TA的资源

版主

楼主
 

Coding for SSDs – Part 1: Introduction and Table of Contents [复制链接]

本帖最后由 白丁 于 2015-11-21 16:10 编辑

转自http://codecapsule.com/2014/02/1 ... -table-of-contents/


Introduction
I want to make solid-state drives (SSDs) the optimal storage solution for my key-value store project. For that reason, I had to make sure I fully understood how SSDs work, so that I can optimize my hash table implementation to suit their internal characteristics. There is a lot of incomplete and contradictory information out there, and finding trustworthy information about SSDs was not an easy task. I had to do some substantial reading to find the proper publications and benchmarks in order to convince myself that, if I had to be coding for SSDs, I would know what I was doing.
Then I figured that since I had done all the research, it would be useful to share the conclusions I had reached. My intent was to transform all the information already available into practical knowledge. I ended up writing a 30-page article, not very suitable for the format of a blog. I have therefore decided to split what I had written into logical parts that can be digested independently. The full Table of Contents is available at the bottom of this article.
The most remarkable contribution is Part 6, a summary of the whole “Coding for SSDs” article series, that I am sure programmers who are in a rush will appreciate. This summary covers the basics of SSDs along with all of the recommended access patterns on how reads and writes should be implemented to get the best performance out of solid-state drives.
Another important detail is that “Coding for SSDs” is independent from my key-value store project (IKVS series), and therefore, no prior knowledge of the IKVS articles is needed. I am planning on writing an article for the IKVS series, on how hash table can be implemented to take advantage of the internal characteristics of SSDs, though I have no precise date for that yet.
My only regret is not to have produced any code of my own to prove that the access patterns I recommend are actually the best. However even with such code, I would have needed to perform benchmarks over a large array of different models of solid-state drives to confirm my results, which would have required more time and money than I can afford. I have cited my sources meticulously, and if you think that something is not correct in my recommendations, please leave a comment to shed light on that. And of course, feel free to drop a comment as well if you have questions or would like to contribute in any way.
Finally, remember to subscribe to the newsletter to receive a notification email every time a new article is posted on Code Capsule. The subscription panel is available at the top right corner of the blog.
UPDATE: This series of articles has been translated to Simplified Chinese by Xiong Duo.
Table of ContentPart 1: Introduction and Table of Contents

Part 2: Architecture of an SSD and Benchmarking
    1. Structure of an SSD
        1.1 NAND-flash memory cells
        1.2 Organization of an SSD
        1.3 Manufacturing process
    2. Benchmarking and performance metrics
        2.1 Basic benchmarks
        2.2 Pre-conditioning
        2.3 Workloads and metrics
Part 3: Pages, Blocks, and the Flash Translation Layer
    3. Basic operations
        3.1 Read, write, erase
        3.2 Example of a write
        3.3 Write amplification
        3.4 Wear leveling
    4. Flash Translation Layer (FTL)
        4.1 On the necessity of having an FTL
        4.2 Logical block mapping
        4.3 Notes on the state of the industry
        4.4 Garbage collection
Part 4: Advanced Functionalities and Internal Parallelism
    5. Advanced functionalities
        5.1 TRIM
        5.2 Over-provisioning
        5.3 Secure Erase
        5.4 Native Command Queueing (NCQ)
        5.5 Power-loss protection
    6. Internal Parallelism in SSDs
        6.1 Limited I/O bus bandwidth
        6.2 Multiple levels of parallelism
        6.3 Clustered blocks
Part 5: Access Patterns and System Optimizations
    7. Access patterns
        7.1 Defining sequential and random I/O operations
        7.2 Writes
        7.3 Reads
        7.4 Concurrent reads and writes
    8. System optimizations
        8.1 Partition alignment
        8.2 Filesystem parameters
        8.3 Operating system I/O scheduler
        8.4 Swap
        8.5 Temporary files
Part 6: A Summary – What every programmer should know about solid-state drives
What’s nextPart 2 is available here. If you’re in a rush, you can also go directly to Part 6, which is summarizing the content from all the other parts.
To receive a notification email every time a new article is posted on Code Capsule, you can subscribe to the newsletter by filling up the form at the top right corner of the blog.
As usual, comments are open at the bottom of this post, and I am always happy to welcome questions, corrections and contributions!

此帖出自FPGA/CPLD论坛
点赞 关注
个人签名training
 

回复
举报

6423

帖子

16

TA的资源

版主

沙发
 
中文版因为禁止转载,所以转载了英文版原文  中文在这里   http://blog.jobbole.com/63520/
此帖出自FPGA/CPLD论坛
个人签名training
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表