PTT推薦

[心得] PCIe & NVME Protocol Study

看板Tech_Job標題[心得] PCIe & NVME Protocol Study作者
Caramel715
(焦糖)
時間推噓推:141 噓:0 →:12

大家好,我目前任職於某家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

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.10.151 (臺灣)
PTT 網址

iamala 04/11 14:02推推

lolpklol097504/11 14:05群聯 推

gn01216674 04/11 14:06

s869225 04/11 14:07

legendary02 04/11 14:09推推

kuyfd456 04/11 14:13

andyw761216204/11 14:14

bnd0327 04/11 14:17推推

Eligor41 04/11 14:17

tim82518 04/11 14:19

djboy 04/11 14:19謝謝分享

fakon 04/11 14:19先推一個

※ 編輯: Caramel715 (125.227.10.151 臺灣), 04/11/2022 14:22:14

benson01 04/11 14:21

loveabc 04/11 14:29

roy19991013 04/11 14:30

lohas1019 04/11 14:30知識 推!

andrew82465 04/11 14:31推推 動畫清楚明瞭

sabar 04/11 14:31謝分享

gugeegee 04/11 14:32推推 真的看到都會背章節了XD

cjw0716 04/11 14:33推,謝謝學長

ulovebaby 04/11 14:33smi 無私讚讚讚

ja5566412 04/11 14:34推!最近也在study Front end 的spec,這些資料讓

ja5566412 04/11 14:34我收益良多。

aika472405 04/11 14:35

b0117 04/11 14:39請問原po是在p還是s高就?

Lhmstu 04/11 14:41推,感謝分享

e80276 04/11 14:42推推

leojojo 04/11 14:44推推

basterds 04/11 15:04和我想的差不多 (茶)

matthewka 04/11 15:33

chiro1982 04/11 15:36我記得ssd fan有好幾篇對FE介紹的也蠻詳細的

其實我就是看到大陸很多這種技術文章, 但在台灣很少看到, 因為大陸有些用語我看得不太習慣, 所以我就自己寫了

sustr55 04/11 15:38

tech1140 04/11 15:38感謝分享

yugi2567 04/11 15:40想也知道群聯

hihihihsuan 04/11 15:42感謝分享!

a9101214 04/11 15:45

※ 編輯: Caramel715 (125.227.10.151 臺灣), 04/11/2022 16:08:19

lplay 04/11 15:49good

ShangLai 04/11 15:52

stevenwin 04/11 15:54

dear82000 04/11 16:02感謝高手分享

shoushing 04/11 16:03推 剛拜讀完大大的AER

bloodpiece 04/11 16:06只能推了

kjay 04/11 16:09感謝分享 造福雜魚我

ckpetercheng04/11 16:11好文推推 台灣沒有這種技術社群真的可惜

jupei 04/11 16:21

xoy232 04/11 16:45

kolipjum1 04/11 16:48推大神

s89029 04/11 17:01推推

ninja4great 04/11 17:02

la8day 04/11 17:03

yorkeram 04/11 17:05推分享 很多技術文章都簡體居多

sheepxo 04/11 17:05

samluna 04/11 17:24

jacky31232 04/11 17:37

pilodee 04/11 17:42

spirit 04/11 17:43好用心

zzztrees 04/11 17:47推推

happy410489 04/11 17:49

hankower 04/11 18:09

cityioio 04/11 18:11

Helloyu 04/11 18:13好心人推推

ohohohya 04/11 18:17有沒有講程式的 我想看pci enumuration

印象中這個可能要講到BIOS, 因為BIOS會define MMIO base address位置, BIOS就依據這個base, 從bus number 0~255、dev 0~32、func 0~8, 三個for迴圈全部掃過一遍, 如果VendorID和DeviceID有值代表device存在

assassinzero04/11 18:21推推,感謝分享

jerry012188 04/11 18:22

maxumin 04/11 18:27希望分享nvme2.0b,pcie5.0

longandersen04/11 18:28

Dracarys 04/11 18:39好奇這specs都幾頁啊?

omnmnmnm 04/11 18:45

AaronWang 04/11 18:58

jasonwung 04/11 19:00

aaron70221 04/11 19:01

GenesisXD 04/11 19:01優文!

q10293847 04/11 19:09推推

※ 編輯: Caramel715 (125.227.10.151 臺灣), 04/11/2022 19:20:11

aspirev3 04/11 19:28

BingLing 04/11 19:32

god4yoo 04/11 19:46

meokay 04/11 19:49推好心

hold5566 04/11 19:49push

goldie 04/11 20:07push

GuoJing18 04/11 20:33

a901601 04/11 20:53

dildoe 04/11 20:57伸手的連picsig會員都沒吧 XD

k798976869 04/11 21:04

sitting 04/11 21:10感謝分享

roy415012 04/11 21:38推推 好文章

A1ch3mi5t 04/11 21:46

rockrock112704/11 22:07優質文章 推!

woulin 04/11 22:13對岸csdn很多這類文章

沒錯,我很多PCIe知識也都從那邊獲得

※ 編輯: Caramel715 (1.169.193.191 臺灣), 04/11/2022 22:16:10

anewlife 04/11 22:19推推

jarjar3215 04/11 22:19

rosty 04/11 22:36

qoo69600 04/11 22:37好文一起推

dnweimin 04/11 23:04

lplpkkk 04/11 23:15

caeserhaha 04/11 23:36有沒有人要寫FTL的

其實我也很想看,不然我都不知道back-end在做什麼 XD

ho83leo 04/11 23:37不錯

※ 編輯: Caramel715 (1.169.193.191 臺灣), 04/11/2022 23:39:36

gR7P4zXH 04/12 00:16o.o

TWkobe 04/12 00:26Haha 我想寫FTL 的筆記但感覺會牽涉機密,一般常見

TWkobe 04/12 00:26的感覺看論文就好

有道理,其實FTL的精隨就是如何去操作NAND, 現在為了省錢好像都使用TLC,但TLC的缺點就是P/E值較低 所以演算法非常重要,因為要延長NAND的壽命 演算法就是公司的Know-how了吧

※ 編輯: Caramel715 (1.169.193.191 臺灣), 04/12/2022 00:39:24

tim32338519 04/12 00:50推 感謝分享

rizman28 04/12 01:06好人好事

BlueToast 04/12 01:14好人

apple5811 04/12 01:31用心好文 推推

a830606 04/12 02:08

Jiraya 04/12 02:22

jason911665 04/12 02:41推推之前就有看過大大的文章 非常實用

poem5566 04/12 03:08高手推

EinArthur 04/12 05:06厲害 推

mikemike102104/12 05:18我們可以來建立台灣的技術社群

mikemike102104/12 05:19個人有建立了 forum.community.tw

mikemike102104/12 05:19能使用markdown跟自動為程式碼上色等,也能當一些靜

mikemike102104/12 05:19態部落格的留言系統或者用rss轉貼(經作者同意)。

mikemike102104/12 05:19歡迎大家來試試

ppony 04/12 06:37慧榮?

ppony 04/12 06:47

neil908413 04/12 08:11推 用心

iori305 04/12 08:29

Padparacha 04/12 08:42我的天啊我在bios海載浮載沉的時候就是你的網誌救了

Padparacha 04/12 08:42我一命QQ

qq155266 04/12 10:30

southwind 04/12 11:15大推!

koka813 04/12 11:24讚喔

loge400 04/12 11:46推! 這太讚了

tuner123 04/12 11:52

albert7530 04/12 12:20FTL一定有known how, 不用想了

albert7530 04/12 12:22我建議可以朝flash access下手,例如分析讀data ret

albert7530 04/12 12:22ension nand scaled, read refrence 這就無關機密了

ipieee 04/12 12:50推一個

freezeblue 04/12 13:17好文推~

bloodmoon16 04/12 13:26

Leo930057 04/12 13:27推爆

SMInice 04/12 14:02學長推

elesterknigh04/12 14:16推 分享

warcraft354 04/12 15:04推!!

panrong 04/12 17:59推! 要不要在動畫裡放國旗XD 以防...

有道理,以防被偷,以後加個浮水印好了

u9412038 04/12 18:39

※ 編輯: Caramel715 (125.227.10.151 臺灣), 04/12/2022 19:13:56

goldie 04/12 19:15

shibin 04/12 21:24推,NVMe台灣的文章真的不多

NotForever 04/13 00:26推 感謝你~

apnsd2y 04/13 01:17

sef96121 04/13 08:41

nic0935 04/13 09:29

hh440977 04/13 09:34

heaviest 04/13 10:17

peterlin022404/13 11:57

nomorex6 04/13 16:58

※ 編輯: Caramel715 (1.169.224.116 臺灣), 04/13/2022 19:29:20

pudin0116 04/13 23:11

yhaoo666 04/14 00:44讚,寫的很棒,受用無窮

Milesians 04/14 18:55

a910184 04/15 08:23必須推

craigwang 04/17 00:08 push

cherry0712 04/18 23:23推好心

xx5236294roy04/19 22:48我推