顯示廣告
隱藏 ✕
※ 本文轉寄自 ptt.cc 更新時間: 2023-10-13 21:46:11
看板 Tech_Job
作者 Caramel715 (焦糖)
標題 Re: [心得] PCIe & NVME Protocol Study
時間 Thu Oct 12 03:06:06 2023


大家好,繼上次分享了幾篇有關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

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.225.234 (臺灣)
※ 作者: Caramel715 2023-10-12 03:06:06
※ 文章代碼(AID): #1b9l8Wun (Tech_Job)
※ 文章網址: https://www.ptt.cc/bbs/Tech_Job/M.1697051168.A.E31.html
da5n299o    : 用心給推1F 10/12 03:23
jupei       : 值得鼓勵2F 10/12 04:23
kyosuke1    : 這比一推廢文好多了,感謝分享3F 10/12 04:39
jkkert      : 推專業文4F 10/12 06:30
yolasiku 
yolasiku    : 不錯 比某些自以為很懂的廢文好太多了5F 10/12 07:36
marsonele   : 推6F 10/12 07:39
rizman28    : 讚喔7F 10/12 07:50
sc1         : 這位同學 房租水電費要繳哦8F 10/12 08:09
gosh717     : 推9F 10/12 08:20
hebeisme5566: 佛心10F 10/12 08:38
outzumin    : 願意分享 神人給推11F 10/12 08:41
i78524      : 用心給推!12F 10/12 08:43
bluezero000 : 推13F 10/12 08:58
catslave6   : 推14F 10/12 09:11
tim82518    : 佛心C哥推15F 10/12 09:14
s869225     : 推16F 10/12 09:16
Smallsh     : 推17F 10/12 09:21
blackrays   : 優質推18F 10/12 09:41
jzoosuck    : 謝謝分享!19F 10/12 09:47
ronald0000  : 推20F 10/12 09:48
iNicholas   : 推分享21F 10/12 09:56
jerboaa     : 推 分享22F 10/12 10:15
shibin      : 推23F 10/12 10:32
timandtony  : 我也是看你的文章學習PCIE,受用良多24F 10/12 10:38
iamala      : 雖然看不懂但感謝分享25F 10/12 11:07
zzxx1322    : 推 謝謝整理26F 10/12 11:09
djboy       : 看不懂,趕快推一下27F 10/12 11:14
kuyfd456    : 感謝28F 10/12 11:16
LexiliTe    : 推 對學習基礎非常有幫助 感謝大大29F 10/12 11:17
yukihiko    : 推30F 10/12 11:43
ffeikki     : 推31F 10/12 11:56
leoloveivy  : 明天竹南報到32F 10/12 11:59
kkes0001    : 先記著,以後有人問直接丟33F 10/12 12:05
allenchen821: 讚讚讚 推34F 10/12 12:08
v86861062   : 推推35F 10/12 12:23
fallen01    : 要來支援收銀嗎36F 10/12 12:47
c890317     : 佛 用心給推37F 10/12 13:27
bcew        : 推有心38F 10/12 14:27
ohohohya    : 讚讚39F 10/12 14:28
susna80     : 優文40F 10/12 15:08
ab3896423   : 推41F 10/12 15:12
nxuanr      : 文組看不懂怎麼辦42F 10/12 15:39
hiwin5566   : 好文推推43F 10/12 15:55
notsmall    : 推44F 10/12 16:59
wwndbk      : 推45F 10/12 18:28
lycer       : 推46F 10/12 20:03
greenstar27 : 超推!47F 10/12 20:10
jecint1707  : 感謝分享48F 10/13 09:28
mmonkeyboyy : 推一下  寫這麼長  算你狠捏~49F 10/13 14:04
osuv        : 看不懂 但感謝分享50F 10/13 18:34

--
※ 看板: Tech_Job 文章推薦值: 0 目前人氣: 0 累積人氣: 66 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇