顯示廣告
隱藏 ✕
※ 本文轉寄自 ptt.cc 更新時間: 2022-04-12 21:06:12
看板 Tech_Job
作者 Caramel715 (焦糖)
標題 [心得] PCIe & NVME Protocol Study
時間 Mon Apr 11 14:00:18 2022


大家好,我目前任職於某家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://datongfirmware.blogspot.com/2022/04/pci-express-ltssm-equalization.html


■原理PCI Express - LTSSM 狀態機推演 "Detect -> Polling -> Configuration ->
L0"
PCIe為point-to-point interconnects(點對點的連接),所以就算系統上由多層PCIe bus
所構成,每個component只要負責與他對面的component之間的link negotiation就可以了
,這篇文章主要會推演兩個端點之間的LTSSM是如何從Detect state演進到L0。


https://datongfirmware.blogspot.com/2021/11/pci-express-ltssm-state-detect-polling.html

■簡介PCI Express: Link Training and Status State Machine( LTSSM 狀態機 )
由於工作上很容易會遇到PCIe Link上的問題或者我們需要驗證LTSSM state transition
有沒有符合預期 ,常常需要透過Protocol Analyzer錄製PCIe Trace來進一步分析。此篇
主要會介紹Traning Sequence,和各個LTSSM state主要目的為何。


https://datongfirmware.blogspot.com/2021/03/pci-express-link-training-and-status.html


■原理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://datongfirmware.blogspot.com/2020/05/pci-express-advanced-error-reportingaer.html


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://datongfirmware.blogspot.com/2021/11/nvm-express-nvme-overview.html

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.10.151 (臺灣)
※ 文章代碼(AID): #1YKyFrA3 (Tech_Job)
※ 文章網址: https://www.ptt.cc/bbs/Tech_Job/M.1649656821.A.283.html
iamala      : 推推1F 04/11 14:02
lolpklol0975: 群聯 推2F 04/11 14:05
gn01216674  : 推3F 04/11 14:06
s869225     : 推4F 04/11 14:07
legendary02 : 推推5F 04/11 14:09
kuyfd456    : 推6F 04/11 14:13
andyw7612162: 推7F 04/11 14:14
bnd0327     : 推推8F 04/11 14:17
Eligor41    : 推9F 04/11 14:17
tim82518    : 推10F 04/11 14:19
djboy       : 謝謝分享11F 04/11 14:19
fakon       : 先推一個12F 04/11 14:19
※ 編輯: Caramel715 (125.227.10.151 臺灣), 04/11/2022 14:22:14
benson01    : 推13F 04/11 14:21
loveabc     : 推14F 04/11 14:29
roy19991013 : 推15F 04/11 14:30
lohas1019   : 知識 推!16F 04/11 14:30
andrew82465 : 推推 動畫清楚明瞭17F 04/11 14:31
sabar       : 謝分享18F 04/11 14:31
gugeegee    : 推推 真的看到都會背章節了XD19F 04/11 14:32
cjw0716     : 推,謝謝學長20F 04/11 14:33
ulovebaby   : smi 無私讚讚讚21F 04/11 14:33
ja5566412   : 推!最近也在study Front end 的spec,這些資料讓22F 04/11 14:34
ja5566412   : 我收益良多。
aika472405  : 推24F 04/11 14:35
b0117       : 請問原po是在p還是s高就?25F 04/11 14:39
Lhmstu      : 推,感謝分享26F 04/11 14:41
e80276      : 推推27F 04/11 14:42
leojojo     : 推推28F 04/11 14:44
basterds    : 和我想的差不多 (茶)29F 04/11 15:04
matthewka   : 推30F 04/11 15:33
chiro1982   : 我記得ssd fan有好幾篇對FE介紹的也蠻詳細的31F 04/11 15:36
其實我就是看到大陸很多這種技術文章,
但在台灣很少看到,
因為大陸有些用語我看得不太習慣,
所以我就自己寫了
sustr55     : 推32F 04/11 15:38
tech1140    : 感謝分享33F 04/11 15:38
yugi2567    : 想也知道群聯34F 04/11 15:40
hihihihsuan : 感謝分享!35F 04/11 15:42
a9101214    : 推36F 04/11 15:45
※ 編輯: Caramel715 (125.227.10.151 臺灣), 04/11/2022 16:08:19
lplay       : good37F 04/11 15:49
ShangLai    : 推38F 04/11 15:52
stevenwin   : 推39F 04/11 15:54
dear82000   : 感謝高手分享40F 04/11 16:02
shoushing   : 推 剛拜讀完大大的AER41F 04/11 16:03
bloodpiece  : 只能推了42F 04/11 16:06
kjay        : 感謝分享 造福雜魚我43F 04/11 16:09
ckpetercheng: 好文推推 台灣沒有這種技術社群真的可惜44F 04/11 16:11
jupei       : 狂45F 04/11 16:21
xoy232      : 推46F 04/11 16:45
kolipjum1   : 推大神47F 04/11 16:48
s89029      : 推推48F 04/11 17:01
ninja4great : 推49F 04/11 17:02
la8day      : 推50F 04/11 17:03
yorkeram    : 推分享 很多技術文章都簡體居多51F 04/11 17:05
sheepxo     : 推52F 04/11 17:05
samluna     : 推53F 04/11 17:24
jacky31232  : 推54F 04/11 17:37
pilodee     : 推55F 04/11 17:42
spirit      : 好用心56F 04/11 17:43
zzztrees    : 推推57F 04/11 17:47
happy410489 : 推58F 04/11 17:49
hankower    : 推59F 04/11 18:09
cityioio    : 推60F 04/11 18:11
Helloyu     : 好心人推推61F 04/11 18:13
ohohohya    : 有沒有講程式的 我想看pci enumuration62F 04/11 18:17
印象中這個可能要講到BIOS,
因為BIOS會define MMIO base address位置,
BIOS就依據這個base,
從bus number 0~255、dev 0~32、func 0~8,
三個for迴圈全部掃過一遍,
如果VendorID和DeviceID有值代表device存在

assassinzero: 推推,感謝分享63F 04/11 18:21
jerry012188 : 推64F 04/11 18:22
maxumin     : 希望分享nvme2.0b,pcie5.065F 04/11 18:27
longandersen: 推66F 04/11 18:28
Dracarys    : 好奇這specs都幾頁啊?67F 04/11 18:39
omnmnmnm    : 推68F 04/11 18:45
AaronWang   : 推69F 04/11 18:58
jasonwung   : 推70F 04/11 19:00
aaron70221  : 推71F 04/11 19:01
GenesisXD   : 優文!72F 04/11 19:01
q10293847   : 推推73F 04/11 19:09
※ 編輯: Caramel715 (125.227.10.151 臺灣), 04/11/2022 19:20:11
aspirev3    : 推74F 04/11 19:28
BingLing    : 推75F 04/11 19:32
god4yoo     : 推76F 04/11 19:46
meokay      : 推好心77F 04/11 19:49
hold5566    : push78F 04/11 19:49
goldie      : push79F 04/11 20:07
GuoJing18   : 推80F 04/11 20:33
a901601     : 推81F 04/11 20:53
dildoe      : 伸手的連picsig會員都沒吧 XD82F 04/11 20:57
k798976869  : 推83F 04/11 21:04
sitting     : 感謝分享84F 04/11 21:10
roy415012   : 推推 好文章85F 04/11 21:38
A1ch3mi5t   : 推86F 04/11 21:46
rockrock1127: 優質文章 推!87F 04/11 22:07
woulin      : 對岸csdn很多這類文章88F 04/11 22:13
沒錯,我很多PCIe知識也都從那邊獲得
※ 編輯: Caramel715 (1.169.193.191 臺灣), 04/11/2022 22:16:10
anewlife    : 推推89F 04/11 22:19
jarjar3215  : 推90F 04/11 22:19
rosty       : 推91F 04/11 22:36
qoo69600    : 好文一起推92F 04/11 22:37
dnweimin    : 推93F 04/11 23:04
lplpkkk     : 推94F 04/11 23:15
caeserhaha  : 有沒有人要寫FTL的95F 04/11 23:36
其實我也很想看,不然我都不知道back-end在做什麼 XD
ho83leo     : 不錯96F 04/11 23:37
※ 編輯: Caramel715 (1.169.193.191 臺灣), 04/11/2022 23:39:36
gR7P4zXH    : o.o97F 04/12 00:16
TWkobe      : Haha 我想寫FTL 的筆記但感覺會牽涉機密,一般常見98F 04/12 00:26
TWkobe      : 的感覺看論文就好
有道理,其實FTL的精隨就是如何去操作NAND,
現在為了省錢好像都使用TLC,但TLC的缺點就是P/E值較低
所以演算法非常重要,因為要延長NAND的壽命
演算法就是公司的Know-how了吧
※ 編輯: Caramel715 (1.169.193.191 臺灣), 04/12/2022 00:39:24
tim32338519 : 推 感謝分享100F 04/12 00:50
rizman28    : 好人好事101F 04/12 01:06
BlueToast   : 好人102F 04/12 01:14
apple5811   : 用心好文 推推103F 04/12 01:31
a830606     : 讚104F 04/12 02:08
Jiraya      : 推105F 04/12 02:22
jason911665 : 推推之前就有看過大大的文章 非常實用106F 04/12 02:41
poem5566    : 高手推107F 04/12 03:08
EinArthur   : 厲害 推108F 04/12 05:06
mikemike1021: 我們可以來建立台灣的技術社群109F 04/12 05:18
mikemike1021: 個人有建立了 forum.community.tw
mikemike1021: 能使用markdown跟自動為程式碼上色等,也能當一些靜
mikemike1021: 態部落格的留言系統或者用rss轉貼(經作者同意)。
mikemike1021: 歡迎大家來試試
ppony       : 慧榮?114F 04/12 06:37
ppony       : 強
neil908413  : 推 用心116F 04/12 08:11
iori305     : 推117F 04/12 08:29
Padparacha  : 我的天啊我在bios海載浮載沉的時候就是你的網誌救了118F 04/12 08:42
Padparacha  : 我一命QQ
qq155266    : 推120F 04/12 10:30
southwind   : 大推!121F 04/12 11:15
koka813     : 讚喔122F 04/12 11:24
loge400     : 推! 這太讚了123F 04/12 11:46
tuner123    : 推124F 04/12 11:52
albert7530  : FTL一定有known how, 不用想了125F 04/12 12:20
albert7530  : 我建議可以朝flash access下手,例如分析讀data ret
albert7530  : ension nand scaled, read refrence 這就無關機密了
ipieee      : 推一個128F 04/12 12:50
freezeblue  : 好文推~129F 04/12 13:17
bloodmoon16 : 推130F 04/12 13:26
Leo930057   : 推爆131F 04/12 13:27
SMInice     : 學長推132F 04/12 14:02
elesterknigh: 推 分享133F 04/12 14:16
warcraft354 : 推!!134F 04/12 15:04
panrong     : 推! 要不要在動畫裡放國旗XD 以防...135F 04/12 17:59
有道理,以防被偷,以後加個浮水印好了
u9412038    : 推136F 04/12 18:39
※ 編輯: Caramel715 (125.227.10.151 臺灣), 04/12/2022 19:13:56
goldie      : 推137F 04/12 19:15

--
※ 看板: Tech_Job 文章推薦值: 0 目前人氣: 0 累積人氣: 863 
分享網址: 複製 已複製
1樓 時間: 2022-04-15 00:00:00 (台灣)
  04-15 00:00 TW
···
(補充)https://en.wikipedia.org/wiki/Peripheral_Component_Interconnect#Delayed_transactions板廠新聞應該是多多看聖經,難道這也是機器做的。
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇