為什麼PCI-e比SATA快這麼多?

蔣顯禮

我們知道,SATA 3.0的速度是6Gbps,如果是最新的PCI-e 5.0規範,x16下高達128Gbps,的確不是一個量級的,就算是目前大多數人用的PCI-e 3.0 x16,其速度為32Gbps,也有5倍之多。

從上面的表可以看到,PCI-e目前已有五個版本,其帶寬還分為x1、x16等,這是什麼意思呢?這個學名是Link Width,指PCI-e設備間連接的通道數(即Lane),比如我們的車道有雙行道,有四行道,顯然這個通道數越多,同一時間內它能行駛的車輛更多,對於PCI-e而言,它最多可以有32條Lane,它的速度也就是1條Lane時的32倍。

其實從根本上來說,PCI-e比SATA快最大的原因是因為PCI-e為全雙工模式,而SATA為半雙工模式。

全雙式模式指的是在設備A和設備B之間是雙向鏈接,A可以向B發送數據,同時也能接收從B發送來的數據,B同樣,可以同時接收和發送數據,這兩個設備間有專門的發送和接收通道,數據能同時在兩個通道間傳輸,這就是PCIe的全雙工模式。

SATA就不一樣了,雖然它也有獨立的發送和接收通道,但是在同一時間,只能在一條通道上完成數據傳輸,要麼就只能在一條通道上發送數據,要麼就只能在另一條通道上接收數據,它們不能同時進行,這就是半雙式模式。

另外一個不同是,PCI-e能通過增加通道數擴展帶寬,正如前面說的,最多可以有32條通道數,通道數越多,速度越快,當然,成本也會越高,也更加耗電,在實際中可以根據需求決定使用多少通道,彈性十足,就像我們在主板上可以看到長短不一的PCIe插槽一樣,有x1有x4有x16等,可以滿足不同設備的要求。

因此從先天設計上,SATA就註定輸在起跑線上,在速度和延遲上,已遠被PCI-e拋離。

PCI-e規格的每次大版本更新,就會在速度上帶來大幅提升,1.0誕生於2002年,到了2007年PCI-e 2.0規範才出臺,三年後PCI-e 3.0發佈,這也是目前主流的PCI-e設計規範,PCI-e 4.0和5.0都屬於未來,去年10月才推出4.0正式版,而5.0估計要明年才能完成正式版制定。


超能網


PCIe和SATA是兩種不同的接口標準,二者的本質的區別是通信架構的不同,PCIe屬於全雙工模式,而SATA是半雙工模式

簡單的來說,全雙工模式允許數據雙向傳輸,而半雙工模式只允許數據單向傳輸。全雙工模式傳輸的優勢就是傳輸速度快,延遲低。

從系統架構上來說,PCIe比SATA要簡單。PCIe SSD硬盤在直接連在CPU上,不過,準確的來說,是CPU的小蜜,Root Complex。CPU作為系統的大腦,事務繁忙,日理萬機。RC端幫助CPU處理與設備之間的交互。

SATA接口協議已經發展到第三代,最大理論速度是600MB/s. SATA接口上層對接的系統控制接口屬於AHCI。我們平時用的SATA SSD用的一般是SATA3, 實際測試速度在550MB/s左右,這比普通機械硬盤100MB/s左右的讀寫速度,要快數倍了。

PCIe是一種高速差分信號總線,已經發展的到了第四代,PCIe4.0單向帶寬速度可以達到1GB/s。PCIe支持1,2,4,8,16個總線寬度,消費級SSD採用最大的是PCIe 3.0 x4, 也就說,PCIe 3.0 x4的SSD最大理論速度可以達到4GB/s. 據我所看到的,目前SSD廠商能做到的最大的實際測試速度是3.5GB/s. 這個速度比SATA的500MB/s速度要快了7倍。

此外,與SATA接口對接系統接口AHCI不同,PCIe接口上層對接的系統接口標準是NVMe。NVMe與AHCI相比,具有很多的優勢。延遲低,最大支持64K隊列,命令執行更簡單等等。這些優勢存在讓PCIe是如魚得水。帶NVMe的帶領下,PCIe SSD擁有的更快的速度,更低的延遲。

針對這個問題,你有何想法呢?


在下拋磚引玉,歡迎各位看官拍磚討論,感謝!


存儲隨筆

兩者的協議不同。Sata走的是AHCI模式,AHCI初衷是為機械硬盤而設的,但是Sata固態不適合高延時的AHCI,這樣不能充分發揮它的性能,雖然現在會有M.2這個東西,但是如果它走的是南橋,那麼就會大打折扣了。NVMe協議是為PCI-e固態而設的,它具有低延時的特點。兩者的接口不同。SATA3.0版本,它的帶寬是6Gbps,你可以自己換算一下速度是多少。就算你買最貴最好的sata硬盤,也不能越過這個數值。而PCI-E固態可以直接訪問存儲器,理論帶寬可以去到10Gbps(將來可能會更高)。最後,搭載pci e固態的平臺都是高大上,新鮮出爐的,無論是處理器,主板,還是內存各方面的優化都會優先照顧pci-e的,然後再照顧Sata。


lloney

SATA協議:以上說的兩個優點,正好對應SATA總線的兩個缺點:(1)

SATA總線發送端不存在pipe。host一個FIS(相似PCIe協議中的TLP)打下去之後,只有device端回覆收到,並且經過CRC校驗之後(經過R_OK原語,相似PCIe的ACK DLLP),host才幹打下一筆FIS。(2)

SATA總線兩頭是不對等的,存在host和device的差異,只能主機給device打CMD,不能device給主機打CMD。並且不論是host仍是device,一方發送FIS的時候,另一方只能處於接納狀況,不能發FIS出去。這就是半雙工通訊。假如host正往device裡面寫data,device不行能在此時給host傳data的。所以同一時間,SATA的Rx和Tx只有一根線上是有用數據(payload)。下圖是SATA的一筆NCQ read CMD的總線傳輸。HOST經過Register FIS把CMD打下來,device收到之後,回覆一個Register

FIS。Device準備好data後,發送DMA setup FIS 奉告host,然後發送data FIS,將數據送給host。傳完數據,device發送一個set device bits FIS奉告host。整個過程中,不論是host仍是device,TP層只能一次發一個FIS,也不存在兩邊同時給對方發FIS的可能。


浮雲般的童話不幸福996

本質上是因為PCIe是全雙工架構,SATA是半雙工架構。至於PCIe的8Gb和SATA的6Gb傳輸速率不同,那是因為物理層的才幹不同,不是架構上的原因。

PCIe協議和SATA協議都是分層協議,分為物理層,數據鏈路層,傳輸層,指令層和應用層。

硬件工程師首要注重物理層、數據鏈路層和傳輸層。全部CMD/data由應用層和指令層打下來,每向下走一層,多一層封裝和轉換,終究通過差分總線傳輸出去。


你是未來的我554

那要看你指的是機械的SATA硬盤還是固態接口的SSD硬盤了,如果是前者,那很正常因為是二個結構的東西,就好比汽車和飛機哪個快一樣。如果是說pcie和sata的固態硬盤比較的話,那是因為二種接口連接到cpu的距離和寬度不同,你可以把sata看成一條鄉間小路,而pcie是高速公路,但是通往的目的地是相同的。


不過雖然pcie讀寫速度更快,但是大多數pcie的ssd目前來說4k速度沒比sata的ssd快多少,4k速度才是ssd的最重要部分,這會直接反應在系統的流暢性上面。


zuanbaba

相當於一個是坐直達的公交車回家。

一個需要轉車才能坐公交車回家。

這樣說,應該還是蠻直觀的吧?


分享到:


相關文章: