現(xiàn)在,SSD已經(jīng)大跨步邁入PCIe時(shí)代。作為SSD的一項(xiàng)重要技術(shù),我們有必要對(duì)PCIe有個(gè)基本的了解。
那為什么SSD要用PCIe接口?因?yàn)樗欤?a target="_blank">SATA快。它究竟有多快?我們首先從PCIe接口的速度開(kāi)始我們的PCIe之旅。
PCIe發(fā)展到現(xiàn)在,從PCIe 1.0,PCIe 2.0,到現(xiàn)在的PCIe 3.0,速度一代比一代快。
圖1-1 PCIe各代的帶寬
2017年P(guān)CIe 4.0已經(jīng)發(fā)布,但本章內(nèi)容僅限于PCIe 3.0及更早版本。
鏈接速度這一行,我們看到x1,x2,x4,….,這是什么意思?這是指PCIe連接的通道數(shù)(Lane)。就像高速一樣,有單根道,有2根道的,有4根道的,不過(guò)像8根道或者更多道的公路不常見(jiàn),但PCIe是可以最多32個(gè)Lane的。
圖1-2 PCIe Lane類比高速公路通道
兩個(gè)設(shè)備之間的PCIe連接,叫做一個(gè)Link,如圖所示
圖1-3 PCIe Link的概念
從A到B,之間是個(gè)雙向連接,車可以從A駛向B,同時(shí),車也可以從B駛向A,各行其道。兩個(gè)PCIe設(shè)備之間,有專門的發(fā)送和接收通道,數(shù)據(jù)可以同時(shí)往兩個(gè)方向傳輸,PCIe spec稱這種工作模式為雙單工模式(Dual-Simplex),可以理解為全雙工模式。
SATA是什么工作模式呢?
圖1-4 SATA 工作模式
和PCIe一樣,SATA也有獨(dú)立的發(fā)送和接收通道,但與PCIe工作模式不一樣:同一時(shí)間,只有一條道可以進(jìn)行數(shù)據(jù)傳輸,也就是說(shuō),你在一條道上發(fā)送數(shù)據(jù),另外一條道上不能接收數(shù)據(jù),反之亦然。這種工作模式是半雙工模式。
PCIe猶如我們的手機(jī),雙方可以同時(shí)講話,而SATA就是對(duì)講機(jī)了,一個(gè)人在說(shuō)話,另外一個(gè)人就只能聽(tīng)不能說(shuō)。
回到前面PCIe帶寬那張表,上面的帶寬,比如PCIe3.0x1,帶寬為2GB/s,是指雙向帶寬,即讀寫(xiě)帶寬。如果單指讀或者寫(xiě),該值應(yīng)該減半,即1GB/s的讀速度或者寫(xiě)速度。
我們來(lái)看看表里面的帶寬是怎么算出來(lái)的。
PCIe是串行總線,PCIe1.0的線上比特傳輸速率為2.5Gb/s,物理層使用8/10編碼,即8比特的數(shù)據(jù),實(shí)際在物理線路上是需要傳輸10比特的,多余的2比特用來(lái)校驗(yàn)。因此:
PCIe1.0 x 1的帶寬=(2.5Gb/s x 2(雙向通道))/ 10bit = 0.5GB/s
這是單條Lane的帶寬,有幾條Lane,那么整個(gè)帶寬計(jì)算就是用0.5GB/s乘以Lane的數(shù)目。
PCIe2.0的線上比特傳輸速率在PCIe1.0的基礎(chǔ)上翻了一倍,為5Gb/s,物理層同樣使用8/10編碼,所以:
PCIe2.0 x 1的帶寬=(5Gb/s x 2(雙向通道))/ 10bit = 1GB/s
同樣,有多少條Lane,帶寬就是1GB/s乘以Lane的數(shù)目。
PCIe3.0的線上比特傳輸速率沒(méi)有在PCIe2.0的基礎(chǔ)上翻倍,不是10Gb/s,而是8Gb/s,但物理層使用的是128/130編碼進(jìn)行數(shù)據(jù)傳輸,所以:
PCIe3.0 x 1的帶寬=(8Gb/s x 2(雙向通道)x(128 bit/130 bit))/ 8bit ≈ 2GB/s
同樣,有多少條Lane,帶寬就是2GB/s乘以Lane的數(shù)目。
由于采用了128/130編碼,128比特的數(shù)據(jù),只額外增加了2bit的開(kāi)銷,有效數(shù)據(jù)傳輸比率增大,雖然線上比特傳輸率沒(méi)有翻倍,但有效數(shù)據(jù)帶寬還是在PCIe2.0的基礎(chǔ)上做到翻倍。
這里值得一提的是,上面算出的數(shù)據(jù)帶寬已經(jīng)考慮到8/10或者128/130編碼,因此,大家在算帶寬的時(shí)候,沒(méi)有必要再考慮線上編碼的問(wèn)題了。
和SATA單通道不同,PCIe連接可以通過(guò)增加通道數(shù)擴(kuò)展帶寬,彈性十足。通道數(shù)越多,速度越快。不過(guò),通道數(shù)越多,成本越高,占用更多空間,還有就是更耗電。因此,使用多少通道,應(yīng)該在性能和其他因素之間進(jìn)行一個(gè)綜合考慮。單考慮性能的話,PCIe最高帶寬可達(dá)64GB/s,即PCIe 3.0 x 32對(duì)應(yīng)的帶寬,很恐怖的一個(gè)數(shù)據(jù)。不過(guò),現(xiàn)有的PCIe SSD,一般最多使用4通道,如PCIe3.0x4,雙向帶寬為8GB/s,讀或者寫(xiě)帶寬為4GB/s。
圖1-5 Intel PCIe SSD 750規(guī)格書(shū)
幾個(gè)GB/s的傳輸速度,看起小電影來(lái)那是杠杠的。
在此,順便來(lái)算算PCIe3.0x4理論上最大的4K IOPS。PCIe3.0x4理論最大讀或者寫(xiě)的速度為4GB/s,不考慮協(xié)議開(kāi)銷,每秒可以傳輸4GB/4K個(gè)4K大小的IO,該值為1M,即理論上最大IOPS為1000K。因此,一個(gè)SSD,不管你底層用什么介質(zhì),閃存還是3D XPoint,接口速度就這么快,最大IOPS是不可能超過(guò)這個(gè)值的。
PCIe是從PCI發(fā)展過(guò)來(lái)的,PCIe的”e”是express的簡(jiǎn)稱,快的意思。PCIe怎么就能比PCI(或者PCI-X)快呢?PCIe在物理傳輸上,跟PCI有著本質(zhì)的區(qū)別:PCI使用并口傳輸數(shù)據(jù),而PCIe使用的是串口傳輸。我PCI并行總線,單個(gè)時(shí)鐘周期可以傳輸32bit或者64bit,怎么就比不了你單個(gè)時(shí)鐘周期傳輸1個(gè)bit數(shù)據(jù)的串行總線呢?
腿長(zhǎng)的姚明為什么跑不過(guò)腿短的劉翔?因?yàn)閯⑾枘_步頻率更快。
在實(shí)際時(shí)鐘頻率比較低的情況下,并口因?yàn)榭梢酝瑫r(shí)傳輸若干比特,速率確實(shí)比串口快。隨著技術(shù)的發(fā)展,數(shù)據(jù)傳輸速率要求越來(lái)越快,要求時(shí)鐘頻率也越來(lái)越快,但是,并行總線時(shí)鐘頻率不是想快就能快的。
圖1-6 并行傳輸時(shí)序
在發(fā)送端,數(shù)據(jù)在某個(gè)時(shí)鐘沿傳出去(左邊時(shí)鐘第一個(gè)上升沿),在接收端,數(shù)據(jù)在下個(gè)時(shí)鐘沿(右邊時(shí)鐘第二個(gè)上升沿)接收。因此,要在接收端能正確采集到數(shù)據(jù),要求時(shí)鐘的周期必須大于數(shù)據(jù)傳輸?shù)臅r(shí)間(從發(fā)送端到接收端,flight time)。受限于數(shù)據(jù)傳輸時(shí)間(該時(shí)間還隨著數(shù)據(jù)線長(zhǎng)度的增加而增加),因此時(shí)鐘頻率不能做得太高。另外,時(shí)鐘信號(hào)在線上傳輸?shù)臅r(shí)候,也會(huì)存在相位偏移(Clock Skew ),影響接收端的數(shù)據(jù)采集;還有,并行傳輸,接收端必須等最慢的那個(gè)bit數(shù)據(jù)到了以后,才能鎖住整個(gè)數(shù)據(jù)(Signal Skew)。
PCIe使用串行總線進(jìn)行數(shù)據(jù)傳輸就沒(méi)有這些問(wèn)題。它沒(méi)有外部時(shí)鐘信號(hào),它的時(shí)鐘信息通過(guò)8/10編碼或者128/130編碼嵌入在數(shù)據(jù)流,接收端可以從數(shù)據(jù)流里面恢復(fù)時(shí)鐘信息,因此,它不受數(shù)據(jù)在線上傳輸時(shí)間的限制,你導(dǎo)線多長(zhǎng)都沒(méi)有問(wèn)題,你數(shù)據(jù)傳輸頻率多快也沒(méi)有問(wèn)題;沒(méi)有外部時(shí)鐘信號(hào),自然就沒(méi)有所謂的Clock Skew問(wèn)題;由于是串行傳輸,只有一個(gè)bit傳輸,所以不存在Signal Skew問(wèn)題。但是,如果使用多條Lane傳輸數(shù)據(jù)(串行中又有并行,哈哈),這個(gè)問(wèn)題又回來(lái)了,因?yàn)榻邮斩送瑯右茸盥哪莻€(gè)Lane上的數(shù)據(jù)到達(dá)才能處理整個(gè)數(shù)據(jù)。不過(guò),你不用擔(dān)心,PCIe自己能解決好這個(gè)問(wèn)題。
-
接口
+關(guān)注
關(guān)注
33文章
8577瀏覽量
151023 -
SSD
+關(guān)注
關(guān)注
21文章
2858瀏覽量
117372 -
PCIe
+關(guān)注
關(guān)注
15文章
1234瀏覽量
82588
原文標(biāo)題:PCIe SSD為什么那么快?
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論