Re: [心得] PCIe & NVME Protocol Study

楼主: Caramel715 (焦糖)   2023-10-12 03:06:06
大家好,继上次分享了几篇有关PCIE和NVME的文章,陆陆续续又撰写了几篇NVME的文章,
这几年发现,对于刚毕业的新鲜人看spec可能是一个很高的门槛,常常一知半解,后来把
我撰写的文章丢给他们看后,发现他们其实都能理解原理,所以意外发现撰写Blog其实也
是可以当作教育训练的教材,培养人才事半功倍,省时省力,虽然最近景气不太好
,不过还是欢迎大家来做SSD controller,以下是文章分享,欢迎大家一起讨论
■原理NVM Express - Admin Command Set
Admin Queue主要用来提交"管理和控制Controller行为"的指令,每个command会使用
Opcode来做区别,Admin Queue的create方式为host software会预先allocate一块
memory buffer,并将buffer base address填入NVMe register的Admin Submission
Queue Base register(ASQ)和 Admin Completion Queue Base Address register(ACQ),
这样host software提交Admin Command的时候,Controller就能从ASQ得知要去哪里
fetch command回来执行。此篇将详细介绍提交到Admin Queue的指令集有哪些,且详细介
绍每个Admin Command的作用为何
https://reurl.cc/OjMNnR
■原理NVM Express - NVM Command Set
在NVM subsystem中,可能会存在多个controllers,每一个controller可能会去存取某些
特定namespace。Namespace由多个logical blocks所组成,而logical blocks是
controller存取data的最小单位。而一个logical blocks的size为何,可以为512
bytes, 1 KiB, 4 KiB…等等,主要透过Identify command的Identify Namespace data
structure的内容可以得知。此篇幅将会介绍Namespace的特性和状态转变,并且介绍
Namespace与Controller的关系如何透过Namespace Management而关联起来,最后在介绍
提交到I/O Queue的指令集有哪些和每个I/O Command的作用为何。
https://reurl.cc/x6amAb
■解析 NVM Express - 透过Linux OS 解析M.2 NVMe SSD
由于我撰写了"原理NVM Express - NVMe Submission Queue & Completion Queue (SQ &
CQ)"、"原理NVM Express - Admin Command Set"和"原理NVM Express - NVM Command
Set"这三篇文章,只有有了这三篇的基本知识,我们就有足够的能力可以去解析我们主机
板上任何一个M.2 NVMe device的一些资讯和如何操作它。接下来这篇文章会使用x86系统
并安装Ubuntu OS,然后随意安装市面上的一款M.2 NVMe SSD到主机板上,透过Linux
command line的方式来解析此M.2 NVMe SSD的能力和如何透过I/O command去读写
namespace,并且提供一些在Linux中非常实用的CLI。
https://reurl.cc/QZRqg2
※ 引述《Caramel715 (焦糖)》之铭言:
: 大家好,我目前任职于某家SSD韧体,主要是负责NVMe Front-end的部分,Front-end主要
: 负责PCIe和NVMe protocol的firmware porting,所以必须study这两份spec。由于spec
: 的内容过于庞大,所以我习惯会用网志做笔记,一方便怕自己忘记,一方面也可以在遇到
: 问题的时候快速查询,当然我所写的都是我对于spec的理解,所以希望有这方面的专家,
: 可以讨论不同的见解,也欢迎大家讨论与指教。
: PCIE:
: ■原理PCI Express - LTSSM Equalization状态机推演
: 由于PCIe通道传输的特性,会有所谓的码间干扰(Inter-Symbol Interference,ISI),而
: 导致资料无法被辨识,且随着PCIe频率越来越高,这个问题会更加明显,因此必须透过
: Equalizer来调整彼此间的讯号,得到比较好的眼图,搭建起沟通的桥梁,此篇为EQ
: LTSSM的推演。
: https://reurl.cc/VjGMzb
: ■原理PCI Express - LTSSM 状态机推演 "Detect -> Polling -> Configuration ->
: L0"
: PCIe为point-to-point interconnects(点对点的连接),所以就算系统上由多层PCIe bus
: 所构成,每个component只要负责与他对面的component之间的link negotiation就可以了
: ,这篇文章主要会推演两个端点之间的LTSSM是如何从Detect state演进到L0。
: https://reurl.cc/akpd4D
: ■简介PCI Express: Link Training and Status State Machine( LTSSM 状态机 )
: 由于工作上很容易会遇到PCIe Link上的问题或者我们需要验证LTSSM state transition
: 有没有符合预期 ,常常需要透过Protocol Analyzer录制PCIe Trace来进一步分析。此篇
: 主要会介绍Traning Sequence,和各个LTSSM state主要目的为何。
: https://reurl.cc/9Od37x
: ■原理PCI Express: Advanced Error Reporting(AER)
: Advanced Error Report(简称AER)为PCIe 较为强健的错误回报机制,在PCI Express?
: Base Specification Revision 3.0 的6.2节"Error Signaling and Logging"章节有详细
: 的介绍整个AER的logging与repoting机制,由于工作上常常遇到Linux Kernel log中,出
: 现AER error讯息,所以又把spec拿出来翻一翻,借此写一篇关于AER的机制,方便以后查
: 询。
: https://reurl.cc/veyva1
: NVME:
: ■原理NVM Express - NVMe Submission Queue & Completion Queue (SQ & CQ)
: NVMe最基本的communicate架构主要是建立在Submission Queue和Completion Queue,
: Host Software透过Submission Queue来提交command让NVMe Controller执行,
: Controller会透过Completion Queue来回报command执行状况为何。此篇主要介绍NVMe基
: 本架构。
: https://reurl.cc/bkZYVd
作者: hebeisme5566 (U质ㄉㄉ)   2023-10-12 08:38:00
佛心
作者: allenchen821 (Allen)   2023-10-12 12:08:00
赞赞赞 推

Links booklink

Contact Us: admin [ a t ] ucptt.com