計算系統中互聯設備Survey


Survey of Inter-connects in computer system

姚偉峰
http://www.cnblogs.com/Matrix_Yao/
https://github.com/yao-matrix

計算機系統處理數據就像是碾谷機碾谷子,能碾多少谷子取決於兩個方面:一是機器每單位時間能碾多少谷子;二是傳送帶每單位時間能運多少谷子。如果瓶頸在前者,我們叫“compute boundary”,如果是后者,我們叫“communication boundary”。目前, 一個典型的IA CPU的系統如下圖:

Alt text
在計算機系統中, interconnect連接着運算設備,內存設備與IO設備,承擔着傳送帶的職責。因此,它的帶寬和延時決定了communication的效率,本文主要討論帶寬。
首先亮出帶寬(Bandwidth, BW)計算公式,它的單位為GB/s(Giga Bytes per seconds),如下:

其中frequency是interconnects的頻率,一般以MHz或者GT/s(Giga Transactions per second)來度量。

 

Computation Engine Interconnects

本部分討論計算設備間的互連設備(interconnect)及其帶寬參數的計算。

QPI/UPI

QPI(QuickPath Interconnect)和UPI(UltraPath Interconnect)是Intel為支持multi-socket而設計的socket間interconnect,其最大的特點是unified memory space和cache coherency。

Alt text


Skylake spec 中UPI說明如下:
Alt text
一般的dual-socket方案,兩個socket是通過兩個UPI lane連接的,每個lane的有效帶寬為16 bit,所以:
, 即41.6 GB/s.
需要注意的是QPI/UPI是全雙工的,且10.4GT/s包含了雙工的帶寬,所以嚴格來說單方向的帶寬為20.8 GB/s.

PCIe

PCIe(Peripheral Component Interconnect express) spec如下。

Alt text

PCIe 3


Skylake spec 中PCIe說明如下:
Alt text
對一個典型的16 lane的PCIe 3設備而言, 每條lane的有效帶寬為128/130 bit,所以其帶寬為:
,即15.8 GB/s.
在這里, PCIe的bus width是1 bit, 編碼效率是128b/130b.

P.S.

Rule-of-Thumb
PCIe 3.0 一條lane大約為1GB/s

PCIe 4

PCIe 4的GT/s是PCIe 3的一倍。也就是說一個16 lane的PCIe 4設備帶寬約為48 GB/s。

Memory Interconnects

本部分討論計算設備與內存間帶寬參數的計算。

DDR

最常見的內存設備就是DDR了。


Skylake spec 中memory 說明如下:
Alt text 這里DPC = DIMMs Per Channel.
首先DDR 4每channel 的有效帶寬 是 64 bits (72 for ECC memory),從spec可以看出支持6 channel,頻率為2666MT/s。因此:
所以單socket的, 即 127 GB/s.

HBM

HBM(High Bandwidth Memory)顧名思義是高帶寬內存,它是一個通過3D堆疊技術把若干個DRAM(die)堆疊起來形成的memory.

Alt text
每個die有兩個128-bit的channel(即 bytes), 目前正在使用的HBM2的transfer rate最高能到2 GT/s, 因此帶寬計算可以如下:

若一個stack有4個die, 則其帶寬為 ,可以看到比DDR4寬大概一倍。需要注意的是雖然HBM的帶寬比DDR寬,但是因為HBM2的GT/s還是不如DDR,所以HBM的訪問延時會比DDR長。下面是Hynix的HBM2規格說明,可以備查。

 

Alt text

IO Interconnects

目前IO的帶寬與memory相比差距還是比較大的。所以談到分布式系統的時候,很多時候大家都說“IO is important”,甚至有人說“network is critical”。因為IO的帶寬與memory差距相當大,而在當前10 Gbps為部署主流的狀況下,network IO的差距尤甚。

Storage

Storage和Network是計算型workload中最常用的兩種IO設備。Storage設備就是各種各樣的盤,目前主流的是SSD(Solid State drive)和HDD(Hard Disk Drive),他們帶寬不同,但都是塊設備(block device)。塊設備與內存設備不同之處為:

  1. 內存讀寫的單位是byte,但盤讀寫的單位是block。因此計算盤的的帶寬一般為:
    其中IOPS 為 Input/Output Operations Per Second。
  2. 順序讀寫和隨機讀寫的帶寬是不一樣的。一個直覺的解釋就是:對HDD而言順序讀寫減少了磁針的尋道開銷,所以提高了讀寫帶寬。 但對SSD而言,因為不再有尋道和旋轉延時,理論上順序讀寫和隨機讀寫的帶寬是一樣的。另外在SSD中,不同的block size的IOPS是不一樣的,這是由SSD內部的scatter機制決定的。

所以,IOPS尤其是SSD的IOPS是個挺復雜的東西,受很多東西影響,我們一般通過測試而不是解讀spec來獲得其性能。在Linux中,一般通過fio測試我們關心的配置下的IOPS,然后用上述公式折算出帶寬。 從上限估算的角度,我們可以從它們使用的接口來給出一個上限。對SSD盤來說,目前主要有兩種:SATA和PCIe NVMe。SATA-2的帶寬為3 Gbps也就是375 MB/S,SATA-3的帶寬為6 Gbps也就是750 MB/s(除去校驗碼,實際只有600 MB/s),PCIe 3 x4的接口帶寬為4 GB/s。從這里可以看出,即使不管介質、控制器和協議的限制,單從接口的限制上來看,Storage離內存還是差得遠的。
需要注意的是,SATA接口之間是相互獨立的,也就是理論上來講,如果我插N塊盤,且能把文件均勻地scatter到各個盤中,理論上總的IO帶寬會變成N倍的。但是,有一個限制,就是因為SATA接口是接在PCH(Platform Controller Hub)的,然后PCH通過一個PCIe或者DMI(Direct Media Interface)與CPU連接,所以總帶寬上限受這個DMI或PCIe的帶寬限制。在下面這個板子design中,總帶寬限制是4 GB/s。

Alt text

Network

目前比較的網絡有10 Gbps, 25 Gbps, 40 Gbps,后面演進有50 Gbps, 100 Gbps。就算到了100 Gbps,它的上限還是12.5 GB/s,離memory還是有較大距離的。

趨勢

隨着各種各樣的workload往雲端遷徙,雲端承載越來越多的各種各種的workloads,從web server到數據庫到AI, 因此雲端會逐漸成為一個需求hub。這使得“把所有的工作converge到CPU”方案變得越來越局促和不符合發展趨勢,“以CPU為中心”的系統設計也越來越不合時宜。“異構計算”時代已經到來,這不僅僅是因為目前的workload的多樣性發展趨勢,也是cloud provider作為workload hub的話語權越來越大的必然結果。AI只是踢開這個大門的第一個闖入者,我相信后續這樣的usage scenarios會越來越多。我們在見證一個交替的時代,一個生態從“hardware define application”轉型到“application define hardware”的時代,何其幸哉。
那么哪些系統設計方案會成為“明日之星”,我覺得以內存為中心 (memory-centric)的方案會是其中之一。我們已經看到很多這一方向上的探索,如CCIX,Gen-Z,OpenCAPI甚至NVLink。雖然它們有着不同的設計和實現方法,但是它們有一個共同的願景就是:系統設計思路應該開始從CPU monolithic轉移到engine democrtization,它的兩個顯著特點是:

  • 各個計算引擎與內存的距離相似,即不會出現所有engine都必須經過CPU來access memory的情況。
  • 統一編址(Unified Memory)。

References

[1] PCIe wiki
[2] Converting GT/s to Gbps
[3] DDR SDRAM
[4] Everything You Need To Know About QPI
[5] Performance Characteristics of Common Transports and Buses
[6] Intel Server Board S2600WT Design Spec


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM