2023年10月11日 星期三

解析 NVM Express - 透過Linux OS 解析M.2 NVMe SSD

在之前,我撰寫了三篇有關NVMe的文章 ,分別是"原理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。


2023年9月13日 星期三

原理NVM Express - NVM Command Set

NVM subsystem中,可能會存在多個controllers,每一個controller可能會去存取某些特定namespaceNamespace由多個logical blocks所組成,而logical blockscontroller存取data的最小單位。而一個logical blockssize為何,可以為512 bytes, 1 KiB, 4 KiB…等,主要透過Identify commandIdentify Namespace data structure(INDS)的內容可以得知,單位為bytes


2023年2月19日 星期日

原理NVM Express - Admin Command Set

根據上一篇文章原理NVM Express - NVMe Submission Queue & Completion Queue (SQ & CQ),介紹了Host Software和Controller是如何透過Submission Queue和Completion Queue來溝通,而且還有提到Admin Queue和I/O Queue的差別,接下來的篇幅將會詳細介紹提交到Admin Queue的Command Set。

2022年4月10日 星期日

原理PCI Express - LTSSM Equalization狀態機推演

在之前,我撰寫了一篇簡介PCI Express: Link Training and Status State Machine( LTSSM 狀態 )介紹有關LTSSM中各個state的作用和另外一篇原理PCI Express - LTSSM 狀態機推演 "Detect -> Polling -> Configuration -> L0推演了LTSSM如何從Detect state轉移到L0 state。接下來這篇文章,將會介紹Equalization的作用、規則、升速和LTSSM的推演。


2021年11月29日 星期一

原理PCI Express - LTSSM 狀態機推演 "Detect -> Polling -> Configuration -> L0"

在之前,我撰寫了一篇介紹PCIExpress: Link Training and Status State Machine(LTSSM)介紹有關LTSSM中各個state的介紹,接下來這篇文章會推演兩個端點之間的LTSSM是如何從Detect state演進到L0PCIe的優點就是point-to-point interconnects(點對點的連接),所以就算系統上多層PCIe bus所構成,每個component只要負責與他對面的component之間的link negotiation就可以了,大大的降低複雜程度。

2021年11月17日 星期三

原理NVM Express - NVMe Submission Queue & Completion Queue (SQ & CQ)

NVM Express,又簡稱NVMe,他提供了Host Software與non-volatile memory之間的介面規範,讓兩者搭起溝通橋梁,同時提供了優化SSD的方法及標準,並且充分運用PCIe的高頻寬,使得存取速度大幅的提升。本篇文章是基於NVMe Base Specification 1.4c版本的觀點去撰寫,相關的spec可以在NVMe協會網站上取得。

2021年3月29日 星期一

簡介PCI Express: Link Training and Status State Machine( LTSSM 狀態機 )

PCIe LTSSM,全名為Link Training and Status State Machine,主要是用在PCIePhysical Layer Link的初始化與設置,讓device之間建立起溝通橋梁。整個LTSSM狀態機總共有11state,每個state又可以分為多個substates,所以整個狀態機的跳轉可以說是非常的錯綜且複雜且完善,此篇主要是前情提要,介紹一些名詞,之後會在用另外一個篇幅講解實際兩個PCIe Device LTSSM是如何運做的(更新:連結如下)。

原理PCI Express - LTSSM 狀態機推演 "Detect -> Polling -> Configuration -> L0"

原理PCI Express - LTSSM Equalization狀態機推演

解析 NVM Express - 透過Linux OS 解析M.2 NVMe SSD

在之前,我撰寫了三篇有關NVMe的文章 ,分別是" 原理NVM Express - NVMe Submission Queue & Completion Queue (SQ & CQ) "、" 原理NVM Express - Admi...