ingram14
原博客地址:https://blog.csdn.net/wangpeng22
摘要: 随着NVMe 1.4推出,越来越多的企业级feature引进; SRIOV、namespace、NVM Set等等,这些feature如何使用,他们的边界在何处? SRIOV:利用PF和VF的属性,将一个设备虚拟出多个PCIe设备,利于虚拟机操作,从而提升性能。 NAMESPACE:NVMe ssd 阅读全文
posted @ 2022-04-06 20:31 ingram14 阅读(1879) 评论(0) 推荐(0) 编辑
摘要: NVMe冷知识之Directive(NVMe stream) NVMe Directive 协议相关: 首先Directive 分为Directive Receive command 和 Directive Send command, 顾名思义Directive Send command用于从host trans data 到 device,Directive 阅读全文
posted @ 2022-01-22 22:08 ingram14 阅读(1738) 评论(0) 推荐(0) 编辑
摘要: 一、Gc的src block如何选择? 1)正常情况选择Vc较小的block就行。 2)read disturb选择当前block就行。 3)program fail选择当前block就行。 3)static wear leveing选择当前block就行。 二、Gc的dest block如何选择? 阅读全文
posted @ 2022-01-08 17:51 ingram14 阅读(425) 评论(0) 推荐(0) 编辑
摘要: CSTS – Controller Status寄存器bit 1 controller fatal status即CFS,如图: 按照协议主机无法通过queue与controller通信时,可以set该bit。 那么具体该如何实现呢? 考虑到某些controller严重错误host仍然可以通过PCI 阅读全文
posted @ 2022-01-08 17:36 ingram14 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 背景: 随着NVMe的流行,高并发多线程多核的SSD必定是未来方向, sata的单核及FTL架构已不在适用于当前的NVMe firmware。 高性能低功耗是SSD未来的趋势,但随之而来的是复杂的设计,和各种内部IO,该如何平衡和合理分配资源将是Firmware设计的重中之重。 如果管理各种Inte 阅读全文
posted @ 2021-07-06 18:10 ingram14 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 背景: 在近两年发现更多的NVMe控制芯片把Prp算法集成到NVMe IP中,Prp越来越对Firmware不可见了,这样对新的Firmware 工程师了解Prp很不友好。 (之前有站在OS driver的角度去写Prp,今天换到device角度再次梳理Prp) 如图在NVMe Command的DW 阅读全文
posted @ 2021-07-06 11:52 ingram14 阅读(1268) 评论(0) 推荐(0) 编辑
摘要: 背景: 众所周知,nand flash 以page program, 复写必须要erase block,因此才有GC。 由于GC的存在,SSD内部就存在后端资源争夺的问题,firmware需要考虑如何平衡Host IO、GC、和内部meta data flush。这就是我们今天要讲的 SSD Int 阅读全文
posted @ 2021-07-05 18:12 ingram14 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 背景: ASPM--ACTIVE STATE POWER MANAGEMENT ASPM是硬件自主的,软件无法控制且也无视其状态的变化,软件只能通过配置寄存器来使能或禁止ASMP。 PCI-PM--PCI Power Management 是PCIe设备之间通过功耗管理事件(Power Manage 阅读全文
posted @ 2021-01-02 20:56 ingram14 阅读(740) 评论(0) 推荐(0) 编辑
摘要: 由于PCIe spec未严格限定PHY层Link方式,使得不同的厂家有自己的做法,比如Loongson、X86、PPC都有自己的做法,这给我们调试PCIe设备兼容性带来了诸多不便。 从目前的两家主流的PCIe IP供应商 Synopsys、Cadence的IP来说,要兼容各家主板并非易事。 PCIe 阅读全文
posted @ 2021-01-01 08:56 ingram14 阅读(277) 评论(0) 推荐(0) 编辑
摘要: NAND Flash 一般有两种编程方式:one shot or two pass。 这里以TLC为例,如图为LUN的结构: 1. 如果以ONE Shot 编程(eg: bisc3), 如图: 如上图,one shot方式可以按照LSB CSB MSB依次写入。 2. 如果以TWO pass编程(e 阅读全文
posted @ 2020-11-25 21:46 ingram14 阅读(318) 评论(0) 推荐(0) 编辑