為什麼PCI e比SATA快這麼多

時間 2021-06-01 13:40:26

1樓:桀驁清瘋

簡單的說,我們可以把兩種介面兩種通道理解成兩輛相同的車,PCI-E通道的汽車就像是在高速上行駛,而SATA通道的汽車就像是在崎嶇山路上行駛,你說哪個速度快?這樣比較好理解了。

2樓:we shu

快分兩個方面,乙個是頻寬,乙個是延遲。

從頻寬上講,簡單的來說是因為暫時SATA不需要像PCIe這麼快的速率。因為SATA的目標用途是提供廉價的南橋和HDD/SSD之間的連線,6Gbps至少在前幾年是夠了,快了硬碟的速度跟不上。而速率越低成本就越低。

基於此, PCIe支援不同的lane的個數,比如x1, x2, x4, x8, x16就是為了適應不同頻寬的需求。而SATA對頻寬的需求沒那麼大,所以它只有x1這一種配置。

所以主要是因為成本和需求,這樣電纜的成本下來了,佈線的長度也可以相應增加。

對於高階的儲存應用,可以用SAS,速度要快很多。

從延遲上講,之前的HDD/SSD的延遲其實都還蠻大的,所以現有的計算機系統設計都是把SATA接到PCH再通過pcie連到CPU。這樣系統延遲就增加了很多。

當然現在的趨勢是儲存也往高頻寬低延遲的方向發展。所以出現PCIe-SSD / NVME之類的技術,定位比SATA要高很多。

3樓:龔黎明

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

PCIe協議和SATA協議都是分層協議,分為物理層,資料鏈路層,傳輸層,命令層和應用層。

硬體工程師主要關注物理層、資料鏈路層和傳輸層。所有CMD/data由應用層和命令層打下來,每向下走一層,多一層封裝和變換,最後通過差分匯流排傳輸出去。

PCIe協議:

應用層和命令層打下來的CMD/data以TLP的格式封裝起來,送給資料鏈路層,鏈路層給其加上sequence字首和CRC字尾,成為乙個完整的資料報文結構,送到物理層,經過8b/10b或者128b/130b編碼後傳送出去。關鍵點在於資料鏈路層有乙個傳送buffer,這個buffer可以儲存一定量的TLP。每個傳輸層打下來的TLP首先送到這個傳送buffer中,然後再傳送給物理層。

接收端也有乙個接收buffer,可以一連串的接收多個TLP。如此,傳送端無需等待接收端的回應,就可以先打多個TLP出去,接收端可以一股腦收起來,乙個乙個處理,如果接收正確,回覆乙個ACK DLLP(DLLP是另一種資料結構,用來進行一些控制資訊的溝通,不用來傳遞CMD/data,DLLP由資料鏈路層自動生成,傳送給對方的資料鏈路層,傳輸層不知道DLLP的存在),傳送端收到這個DLLP,可以擇機清空傳送buffer中對應的TLP。如果接收端接收到錯誤的TLP,則回覆NACK DLLP,傳送方看到之後擇機將傳送buffer中對應的TLP重新發一遍。

這帶來的好處有以下:

(1)傳送端多個TLP可以pipe起來。乙個TLP無需等待前乙個TLP傳完並收到ACK DLLP回應,就可以先發出去。反正有buffer可以先存著,物理層有空就發。

(2)兩個裝置可以同時給對方打TLP,即全雙工通訊。乙個裝置傳送TLP的時候,另乙個裝置無需被動等待,它可以發自己的TLP。 匯流排兩端的裝置地位是對等的,誰都可以給對方打CMD或者傳data。

上圖:PCIe的資料鏈路層結構

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的可能。

iPad Pro 為什麼耗電這麼快?

iPad Pro 10.5的安兔兔和3DMark測試結果 安兔兔247688分。3DMark Sling shot 4648分 Sling shot extreme 3677分 Ice storm unlimited 56632分。2224 1668的解析度還是很吃GPU的。雖然是基於10nm工藝的...

為什麼醉的這麼快?

角落 酒精以不同的比例存在於各種酒中,它在人體內可以很快發生作用,改變人的情緒和行為。這是因為酒精在人體內不需要經過消化作用,就可直接擴散進入血液中,並分布至全身。酒精被吸收的過程可能在口腔中就開始了,到了胃部,也有少量酒精可直接被胃壁吸收,到了小腸後,小腸會很快地大量吸收。酒精吸收進入血液後,隨血...

Presto為什麼比Spark SQL快?

讀位元組 Presto為什麼比Spark SQL快?Spark SQL屬於MMP架構的嗎?第乙個問題 Presto作為SQL查詢引擎是乙個純記憶體的計算引擎,它對記憶體的優化近乎於一種極致的追求。Presto的架構主要是主從式,主節點是coordinator負責SQL的優化和執行計畫分配,同時還負責...