PTT推薦

Re: [心得] PCIe & NVME Protocol Study

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

大家好,繼上次分享了幾篇有關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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.225.234 (臺灣)
PTT 網址

da5n299o 10/12 03:23用心給推

jupei 10/12 04:23值得鼓勵

kyosuke1 10/12 04:39這比一推廢文好多了,感謝分享

jkkert 10/12 06:30推專業文

yolasiku 10/12 07:36不錯 比某些自以為很懂的廢文好太多了

marsonele 10/12 07:39

rizman28 10/12 07:50讚喔

sc1 10/12 08:09這位同學 房租水電費要繳哦

gosh717 10/12 08:20

hebeisme556610/12 08:38佛心

outzumin 10/12 08:41願意分享 神人給推

i78524 10/12 08:43用心給推!

bluezero000 10/12 08:58

catslave6 10/12 09:11

tim82518 10/12 09:14佛心C哥推

s869225 10/12 09:16

Smallsh 10/12 09:21

blackrays 10/12 09:41優質推

jzoosuck 10/12 09:47謝謝分享!

ronald0000 10/12 09:48

iNicholas 10/12 09:56推分享

jerboaa 10/12 10:15推 分享

shibin 10/12 10:32

timandtony 10/12 10:38我也是看你的文章學習PCIE,受用良多

iamala 10/12 11:07雖然看不懂但感謝分享

zzxx1322 10/12 11:09推 謝謝整理

djboy 10/12 11:14看不懂,趕快推一下

kuyfd456 10/12 11:16感謝

LexiliTe 10/12 11:17推 對學習基礎非常有幫助 感謝大大

yukihiko 10/12 11:43

ffeikki 10/12 11:56

leoloveivy 10/12 11:59明天竹南報到

kkes0001 10/12 12:05先記著,以後有人問直接丟

allenchen82110/12 12:08讚讚讚 推

v86861062 10/12 12:23推推

fallen01 10/12 12:47要來支援收銀嗎

c890317 10/12 13:27佛 用心給推

bcew 10/12 14:27推有心

ohohohya 10/12 14:28讚讚

susna80 10/12 15:08優文

ab3896423 10/12 15:12

nxuanr 10/12 15:39文組看不懂怎麼辦

hiwin5566 10/12 15:55好文推推

notsmall 10/12 16:59

wwndbk 10/12 18:28

lycer 10/12 20:03

greenstar27 10/12 20:10超推!

jecint1707 10/13 09:28感謝分享

mmonkeyboyy 10/13 14:04推一下 寫這麼長 算你狠捏~

osuv 10/13 18:34看不懂 但感謝分享

fangzzz001 10/13 23:16