原子写在固态存储的闪存转换层的实现

 

作者简介

 

唐杰

目前在Xilinx从事DC架构,曾任职于Fusion-IO,LSI,希捷等公司。

 

阿呆的话

 

上周在ssdfans微信群里(加nanoarch为微信好友,你也能进群),冬瓜哥提出SSD应该支持原子写之后,各路诸侯纷纷现身,为这个话题讨论得不可开交,着眼点从MySQL数据库的需求,纵向延伸到到SSD Flash层面的操作。得道大师唐杰不愿卷入纷争,在百忙中,抽出时间写出这篇文章,以正视听。

 

原子写概念

 

原子写的概念是和数据库的ACID (原子性,一致性,独立性,持久性)的概念相关的,需要保证数据库系统的事务的语义。

这里面的基本语义就是一组属于同一事务的地址[……]

阅读全文

联想SSD专家招聘

职位 – SSD系统测试与验证工程师

岗位职责:

1. 根据SSD设计文档和客户要求,编制系统测试方案

2. 编写测试工具与自动化测试脚本

3. 与FW开发团队配合Debug

4. 进行SSD的OS兼容性测试

5. 样品送交客户前,根据要求进行pre-Qualification测试

6. 协调RDT, Endurance Verification等测试脚本开发

7. 协调Microsoft, PCIe, NVMe, vSAN认证

岗位要求

1. EE/CE/CS相关专业学士或以上学位

2. 5年以上SSD系统测试与验证或相关领域工作经验

3. 掌握Python, Shell; 熟悉C语言,[……]

阅读全文

阿呆实战NVMe之十

提要

 

本系列文章,旨在带你开发一个NVMe SSD控制器的前端协议逻辑,只不过是在QEMU虚拟机环境中。上回说到了大白接受领导写到SQ队列的命令,设定计时器,让下面的小弟到时间后执行任务。本篇就来看SQ的命令怎么执行。你知道大部分SSD公司的工程师是工作在哪个SQ队列吗?阿呆将告诉你惊人的真相。

 

 

SQ的定时回调函数

 

其实我们在NVMe初始化的时候,就注册了SQ计时器对应的回调函数,sq_processing_timer_cb,所以计时器时间一到,这个函数就被调用了。这个函数的任务很简单,就是把所有的SQ队列扫描一遍,只要那个队[……]

阅读全文

阿呆实战NVMe之九

提要

 

本系列文章,旨在带你开发一个NVMe SSD控制器的前端协议逻辑,只不过是在QEMU虚拟机环境中。万事开头难,前面我们花了8篇文章来写NVMe在QEMU中的初始化,一方面说明初始化的重要和琐碎,另一方面也暴露了阿呆的水平不够,要是真完全掌握的人必然是高屋建瓴,言简意赅。阿呆学艺不精,只能一个函数一个函数来带你逛NVMe的集市了。

 

本篇我们来看看NVMe设备在QEMU的Doorbell如何实现,探探蛋蛋说过的大宝,阿呆改名成贴心暖男——大白。

 

NVMe寄存器配置流程

 

前面我们讲到,NVMe初始化的时候注册了MMIO,如下,两[……]

阅读全文

阿呆实战NVMe之八

 

提要

 

本系列文章,旨在带你开发一个NVMe SSD控制器的前端协议逻辑,只不过是在QEMU虚拟机环境中。

 

澄清关于PCIe BAR空间的误解

 

前面我们说过了NVMe的BAR空间是个什么东东,结果在群里就被山哥指出来理解错误,BAR寄存器里面的地址并不是CPU的存储器域空间,而是PCI域,只是因为X86架构这两个用一样的地址,所以给人一种误解。到了PowerPC处理器,就是不一样的地址,需要Host PCI桥或者PCIe的RC做地址转换。

 

 

上图所示的处理器系统由一个CPU,一个DRAM控制[……]

阅读全文