0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

先詳解CXL系統(tǒng)架構(gòu)

安芯教育科技 ? 來源:老秦談芯 ? 作者:老秦談芯 ? 2022-09-14 09:10 ? 次閱讀

第二章 CXL系統(tǒng)架構(gòu)

CXL支持三種設(shè)備類型,如下圖。Type1支持CXL.cache和CXL.io;Type 2支持CXL.cache,CXL.mem和CXL.io;Type 3支持CXL.mem和CXL.io。無論哪種類型,CXL.io都是不可缺少的,因為設(shè)備的發(fā)現(xiàn),枚舉,配置等都是由CXL.io來負責。

pYYBAGMhKimANB5QAACqSzlIau0752.jpg

傳統(tǒng)的非一致I/O設(shè)備主要依賴于標準的生產(chǎn)者-消費者訂單模型(Producer-Consumer Ordering Model),并針對主機連接的內(nèi)存執(zhí)行。此類設(shè)備除了工作提交和工作完成邊界上的信號外,很少與主機進行交互。此類加速器還傾向于處理數(shù)據(jù)流或大型連續(xù)數(shù)據(jù)對象。這些設(shè)備通常不需要CXL提供的高級功能,而傳統(tǒng)PCIe足以作為加速器連接介質(zhì)。

插播一句,生產(chǎn)者-消費者模型是一種為了加快系統(tǒng)響應數(shù)據(jù)的異步模型,系統(tǒng)中一些慢速操作(例如網(wǎng)絡(luò)I/O,數(shù)據(jù)統(tǒng)計等)會阻塞主進程的運行,從而使得系統(tǒng)的吞吐量大大降低。如果我們不需要即時得到這些慢速操作的返回結(jié)果,那么我們可以使用異步的方式來解決這個問題。生產(chǎn)者-消費者模型通常是多對多的關(guān)系,即多個生產(chǎn)者對應多個消費者,他們之間通過共享一個隊列來實現(xiàn)通信和同步。生產(chǎn)者負責把請求放到隊列中,消費者負責從隊列中出去請求并作響應的處理。生產(chǎn)者-消費者模型的核心思想,把數(shù)據(jù)的生產(chǎn)者和消費者進行解耦,使二者不直接交互,從而使二者的處理速率相對來說互不影響。

2.1 Type 1 CXL設(shè)備

Type 1設(shè)備的典型應用是網(wǎng)卡這類高速緩存設(shè)備。

Type 1 CXL設(shè)備,應用于擁有完全一致性緩存的設(shè)備。對于這種設(shè)備,標準的生產(chǎn)者-消費者模型效果一般,比如,設(shè)備需要執(zhí)行復雜的原子操作,而這些原子操作又不屬于PCIe的標準原子操作?;揪彺嬉恢滦栽试S加速器實現(xiàn)它選擇的任何排序模型,并允許它實現(xiàn)無限數(shù)量的原子操作。它們往往只需要少量的緩存,可以很容易地通過標準的處理器監(jiān)聽過濾(Snoop Filter)機制輕松跟蹤。

Type 1設(shè)備支持的緩存大小取決于主機的監(jiān)聽過濾能力。CXL使用CXL.cache鏈接支持此類設(shè)備,加速器可以通過該鏈接使用CXL.cache協(xié)議進行緩存一致性事務。

poYBAGMhKj-AYx1WAABsQwazQ9w722.jpg

2.2 Type 2 CXL設(shè)備

Type 2設(shè)備的典型應用是GPU,FPGA,AI這類的加速器。

Type 2設(shè)備除了一致性高速緩存外,還具有連接到設(shè)備的內(nèi)存,例如DDR、高帶寬內(nèi)存(High Bandwidth Memory,HBM)等。這些設(shè)備的性能依賴于加速器和設(shè)備掛載內(nèi)存(Device-attached Memory)之間的巨大帶寬。CXL的關(guān)鍵目標是為主機提供一種將操作數(shù)推入設(shè)備掛載內(nèi)存的方法,并為主機提供從設(shè)備掛載內(nèi)存中提取結(jié)果的方法,這樣就不會增加抵消加速器好處的軟件和硬件成本。CXL將一致的系統(tǒng)地址映射設(shè)備連接內(nèi)存稱為“主機管理的設(shè)備內(nèi)存“(Host-managedDevice Memory,HDM)。

HDM和傳統(tǒng)IO/PCIe專用設(shè)備內(nèi)存(Private Device Memory,PDM)之間有一個重要區(qū)別。用帶有GDDR的GPGPU來舉例,GPGPU往往將其GDDR視為私有。這意味著主機無法訪問GDDR,并且與系統(tǒng)的其余部分不一致。它完全由設(shè)備硬件和驅(qū)動程序管理,主要用作具有大型數(shù)據(jù)集的設(shè)備的中間存儲。這種模型的明顯缺點是,在引入操作數(shù)并將結(jié)果寫回時,它涉及大量從主機內(nèi)存到設(shè)備連接內(nèi)存的來回拷貝。HDM雖然也是掛載在設(shè)備端,但可以被主機直接訪問。

poYBAGMhKlaAcl6_AAB5bfMoLXU147.jpg

2.2.1 偏向性一致性協(xié)議

再次強調(diào),HDM是附屬于設(shè)備的內(nèi)存,也就是說HDM在設(shè)備端,而不是主機端。

偏向性一致性模型(Bias Based coherency model)定義了設(shè)備掛載內(nèi)存(Device-attached Memory)的兩種狀態(tài):偏向主機(Host Bias)還是偏向設(shè)備(Device Bias)。當設(shè)備掛載內(nèi)存偏向主機時,該內(nèi)存就像常規(guī)的主機連接內(nèi)存一樣。也就是說,如果設(shè)備需要訪問該內(nèi)存,設(shè)備需要向主機發(fā)送一個請求,主機將解析請求的一致性。當設(shè)備掛載內(nèi)存處于偏向設(shè)備時,要保證主機中沒有對應的緩存行副本。這樣設(shè)備可以隨意的訪問設(shè)備掛載的存儲,而不需要向主機發(fā)送任何的請求事務。

需要注意的是,主機本身可以看到與設(shè)備連接的內(nèi)存的統(tǒng)一視圖,而不考慮偏向狀態(tài)。在這兩種模式中,設(shè)備連接的內(nèi)存都可以保持一致性。

帶有偏向性的一致性模型的優(yōu)點:

有助于維護映射到系統(tǒng)一致性地址范圍內(nèi)的設(shè)備掛載內(nèi)存的數(shù)據(jù)一致性。

幫助設(shè)備以高帶寬訪問其本地連接的內(nèi)存,同時不會產(chǎn)生顯著的一致性開銷(例如,對主機的監(jiān)聽)。

幫助主機以一致的統(tǒng)一的方式訪問設(shè)備掛載的存儲,就像掛載在主機自己下面一樣。

為了維護偏向性一致性模型,Type 2的設(shè)備需要:

實現(xiàn)偏向表,該表跟蹤頁面粒度上的偏向性(例如1b/4KB頁面),該表可被緩存在設(shè)備中。

使用轉(zhuǎn)換代理(Transition Agent,TA)支持偏向性轉(zhuǎn)換。這本質(zhì)上看起來像是一個用于“清理”頁面的DMA引擎,會清空該頁中對應主機里所有的緩存行。

構(gòu)建對加速器本地內(nèi)存的基本load/store訪問。

2.2.1.1 主機偏向性

主機偏向模式通常是指在工作提交期間主機將操作數(shù)據(jù)寫入內(nèi)存,或在工作完成后從內(nèi)存讀取數(shù)據(jù)。如下圖所示,內(nèi)存掛在設(shè)備端。在主機偏向模式下,一致性數(shù)據(jù)流從主機到設(shè)備掛載內(nèi)存,如圖中的藍色箭頭所示。但是,設(shè)備對此內(nèi)存的訪問效率不是最佳的,因為需要通過主機,如圖中的綠色箭頭所示,設(shè)備先向主機發(fā)起請求,然后通過主機來訪問HDM。

pYYBAGMhKmuAAAi1AABztnaNaOw692.jpg

2.2.1.2 設(shè)備偏向性

在設(shè)備偏向模式下,設(shè)備負責工作提交和完成。在此模式下,設(shè)備需要對設(shè)備掛載內(nèi)存完成高帶寬和低延遲訪問。設(shè)備無需詢問主機的一致性引擎,而直接發(fā)起訪問,如圖中的紅色箭頭所示。主機仍然可以訪問設(shè)備掛載的內(nèi)存,但可能會被加速器強制放棄所有權(quán),如圖中的綠色箭頭所示。設(shè)備訪問HDM內(nèi)存實現(xiàn)了延遲低,帶寬高,但是主機訪問HDM會卻相反。

poYBAGMhKoCARLr2AAB0QT9it3U916.jpg

2.2.1.3 模式管理

有兩種HDM偏向性模式管理方案:軟件輔助和硬件自主。

2.2.1.4 軟件輔助偏向模式管理

在軟件輔助管理模式下,依靠軟件來管理某頁面的狀態(tài)。通過選擇適當?shù)闹鳈C或設(shè)備偏向模式,軟件可以在頁面粒度上優(yōu)化一致性性能。

軟件輔助偏向性管理的特點如下:

這種方式適用于,在執(zhí)行計算操作前,加速器內(nèi)的數(shù)據(jù)已經(jīng)準備好。

如果未提前將數(shù)據(jù)移動到加速器內(nèi)存中,加速器通常會根據(jù)對數(shù)據(jù)的一些嘗試引用來控制移動數(shù)據(jù)。

在“需要的”數(shù)據(jù)提取場景中,加速器必須能夠找到要執(zhí)行的工作,對于這些工作,數(shù)據(jù)已經(jīng)正確放置,否則它必須暫停。

加速器停頓的每個周期會影響軟件運行性能。

簡單的加速器通常無法隱藏數(shù)據(jù)預取的延遲。

2.2.1.5 硬件自主偏向模式管理

軟件輔助方式通常適用于簡單的加速器。對于復雜的加速器,比如GPU,用軟件去管理偏向性將會很復雜,并不適用。硬件自主偏向性管理模式,不依賴軟件來管理頁面級的一致性偏向。相反,是硬件根據(jù)給定頁面的請求者對偏向模式進行預測,并相應地進行調(diào)整。這種模式的主要好處是:

提供與軟件輔助模型中相同的頁面粒度一致性偏向功能。

無需軟件在卸載執(zhí)行之前識別和安排頁面偏向轉(zhuǎn)換。

為卸載執(zhí)行期間的動態(tài)偏向轉(zhuǎn)換提供硬件支持。

此模型的硬件支持可以是軟件輔助模型的簡單擴展。

鏈路流和主機支持不受影響。

影響主要限于當主機接觸到設(shè)備偏向頁面時在加速器上采取的操作,反之亦然。

注意,盡管這是一個表面上看來是硬件驅(qū)動的解決方案,但硬件不需要自動執(zhí)行所有轉(zhuǎn)換(盡管如果需要,也可以這樣做)。

2.3 Type 3 CXL設(shè)備

Type 3的典型應用是內(nèi)存緩沖器,常用作內(nèi)存帶寬或者是容量的擴展。

Type 3 CXL設(shè)備支持CXL.io和CXL.mem協(xié)議。由于這些設(shè)備不是加速器,所以它們不會通過CXL.cache發(fā)出任何請求。該設(shè)備主要通過CXL.mem運行,為主機發(fā)送的請求提供服務。CXL.io協(xié)議主要用于設(shè)備發(fā)現(xiàn)、枚舉、錯誤報告和管理。CXL.io協(xié)議允許設(shè)備用于其它特定于I/O的應用用途。

poYBAGMhKpSAanT8AABlHikNiOY663.jpg

2.4 多邏輯設(shè)備(MultiLogical Device,MLD)

CXL 2.0僅支持Type 3的多邏輯組件。MLD組件最多可以將其資源劃分為16個獨立的邏輯設(shè)備(Logical Device,LD)。在CXL.io和CXL.mem協(xié)議中,每個邏輯設(shè)備都由邏輯設(shè)備標識符(LD-ID)標識。每個邏輯設(shè)備都作為Type 3設(shè)備運行,對虛擬層次結(jié)構(gòu)(Virtual Hierarchy,VH)可見。LD-ID對訪問VH的軟件是透明的。MLD組件對于所有邏輯設(shè)備中的每個協(xié)議都有公共事務層和鏈路層。

MLD組件有一個為FM(Fabric Manager)保留的LD和最多16個可用于主機綁定的LD。FM擁有的LD(FMLD)允許FM跨LD配置資源分配,并管理與多個VCS(VirtualCXL Switch)共享的物理鏈路。

插播一句,VH是PCIe MR-IOV(Multiple Root I/O Virtualization)里面的一個概念。MR-IOV擴展了SR-IOV規(guī)范,允許PCIe設(shè)備在多個有獨立PCI根的系統(tǒng)之間共享,這些系統(tǒng)通過基于PCIe轉(zhuǎn)換器的拓撲結(jié)構(gòu)與PCIe設(shè)備或者PCIe-PCI橋相接。每個VH(一個VH就是一個虛擬獨立的SR-IOV設(shè)備)擁有獨立的PCI Memory,IO,配置空間。

2.4.1 LD-ID for CXL.io and CXL.mem

LD-ID是一個16位邏輯設(shè)備標識符,適用于CXL.io和CXL.mem請求和響應。MLD設(shè)備返回的所有目標請求和響應必須包括LD-ID。

2.4.1.1 LD-ID for CXL.mem

CXL.mem僅支持LD-ID的低4位,因此可以通過鏈路支持多達16個唯一的LD-ID值。通過MLD端口轉(zhuǎn)發(fā)的請求和響應用LD-ID標記。

2.4.1.2 LD-ID for CXL.io

CXL.io支持為通過MLD端口轉(zhuǎn)發(fā)的所有請求和響應攜帶16位LD-ID。LD-ID0xFFFF是保留的,始終由FM使用。CXL.io利用供應商定義的本地TLP前綴來攜帶16位LD-ID值。供應商定義的本地TLP前綴格式如下所示。

poYBAGMhKqqAbMo8AABVdVHBMP4641.jpg

2.4.2 內(nèi)存池設(shè)備配置寄存器

每個LD作為一個或多個PCIe EP(End Point) Function對軟件可見。雖然LD Function支持所有配置寄存器,但影響常見鏈路行為的幾個控制寄存器被虛擬化,對鏈路沒有直接影響。LD的每個Function都必須實現(xiàn)PCIe規(guī)范中所述的配置寄存器。

下表列出了一組寄存器字段,與PCIe基本規(guī)范相比,這些字段的行為發(fā)生了修改。

pYYBAGMhKsmAPdsDAAI5ypa0Udk497.jpg
pYYBAGMhKtCAYToPAADFLzUrr0U917.jpg

2.5 CXL設(shè)備擴展

CXL設(shè)備擴展限制只允許每個VH(Virtual Hierarchy)啟用一個Type 1或Type 2設(shè)備。

本章總結(jié):這一章主要定義了3類CXL設(shè)備,Type 1支持CXL.cache和CXL.io;Type 2支持CXL.cache,CXL.mem和CXL.io;Type 3支持CXL.mem和CXL.io。這三類設(shè)備都需要支持CXL.io協(xié)議,不同的是對CXL.cache和CXL.mem支持。 【待續(xù)】




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18948

    瀏覽量

    227385
  • 加速器
    +關(guān)注

    關(guān)注

    2

    文章

    786

    瀏覽量

    37200
  • PCIe
    +關(guān)注

    關(guān)注

    15

    文章

    1166

    瀏覽量

    82044
  • Type
    +關(guān)注

    關(guān)注

    1

    文章

    133

    瀏覽量

    22584

原文標題:技術(shù)分享 | CXL學習(二)

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機程序架構(gòu)詳解

    本帖最后由 eehome 于 2013-1-5 09:44 編輯 單片機程序架構(gòu)詳解
    發(fā)表于 08-17 15:55

    Android系統(tǒng)的CPU架構(gòu)

    Android CPU 架構(gòu)詳解
    發(fā)表于 04-15 12:00

    軟件架構(gòu)存在的意義

    1、前言在嵌入式軟件開發(fā),包括單片機開發(fā)中,軟件架構(gòu)對于開發(fā)人員是一個必須認真考慮的問題。軟件架構(gòu)對于系統(tǒng)整體的穩(wěn)定性和可靠性是非常重要的,一個合適的軟件架構(gòu)不僅結(jié)構(gòu)清晰,并且便于開發(fā)
    發(fā)表于 10-27 09:34

    一窺CXL協(xié)議

    需要,二刷三刷的時候再補上。背景知識之PCIe:既然CXL是以PCIe 5.0為基礎(chǔ),我們還是有必要簡單了解一下PCIe協(xié)議。PCIe是點到點的傳輸,采用的是低壓差分技術(shù),一條通道(Lane)在發(fā)送
    發(fā)表于 09-09 15:03

    一文解析CXL系統(tǒng)架構(gòu)

    1、CXL系統(tǒng)架構(gòu)簡析  CXL支持三種設(shè)備類型,如下圖。Type 1支持CXL.cache和CXL
    發(fā)表于 09-14 14:24

    CXL事務層的結(jié)構(gòu)是由哪些部分組成的

    決定這些內(nèi)存區(qū)域是什么。例如,在x86系統(tǒng)上,主機可以選擇僅通過CXL.io限制對不可緩存(Uncacheable)類型內(nèi)存的訪問。主機通過ATS完成(ATS Completion)向設(shè)備來指示這些
    發(fā)表于 10-08 15:21

    CXL內(nèi)存協(xié)議介紹

    排列順序,達到內(nèi)存系統(tǒng)的最佳利用。內(nèi)存QoS遙測內(nèi)容比較繞,我也沒看太懂,暫時略過,不影響CXL的學習。3.3.3 M2S請求(Req)Req消息是無數(shù)據(jù)請求,消息字段定義如下:各字段的編碼和詳細解釋
    發(fā)表于 11-01 15:08

    一文詳解CXL鏈路層格式的定義

    4.1 CXL.io鏈路層CXL.io鏈路層充當CXL.io事務層和Flex Bus物理層之間的中間層。其主要職責是提供可靠的機制,用于在鏈路上的兩個組件之間交換事務層數(shù)據(jù)包(TLP)。PCIe
    發(fā)表于 02-21 14:27

    OpenStack Swift架構(gòu)詳解

    OpenStack Swift是OpenStack開源云計算項目的子項目,被稱為對象存儲,本內(nèi)容深入詳解了OpenStack Swift架構(gòu)
    發(fā)表于 09-11 11:19 ?1.2w次閱讀
    OpenStack Swift<b class='flag-5'>架構(gòu)</b><b class='flag-5'>詳解</b>

    CXL事務層詳解

    CXL.io為IO設(shè)備提供非一致性的load/strore接口。事務類型、事務數(shù)據(jù)包格式、信用流量控制、虛擬通道管理、事務順序的規(guī)則等遵循PCIe協(xié)議。CXL.io的事務層如下圖中的黃色部分所示。
    的頭像 發(fā)表于 10-10 16:02 ?2679次閱讀

    基于PCI-e協(xié)議的CXL技術(shù)

    CXL是一個全新的得到業(yè)界認同的互聯(lián)技術(shù)標準,其正帶著服務器架構(gòu)迎來革命性的轉(zhuǎn)變。
    的頭像 發(fā)表于 02-02 09:55 ?1006次閱讀

    CXL設(shè)備類型簡介

    CXL 在主機 CPU 和設(shè)備(如硬件加速器)之間具有相干內(nèi)存訪問功能,通過利用 PCIe 架構(gòu)的高級功能,滿足下一代設(shè)計中處理數(shù)據(jù)和計算密集型工作負載的要求。
    的頭像 發(fā)表于 05-26 10:12 ?1626次閱讀
    <b class='flag-5'>CXL</b>設(shè)備類型簡介

    瀾起科技MXC芯片成功通過CXL聯(lián)盟組織的CXL1.1合規(guī)測試

    。 ? ?? CXL,全稱為Compute Express Link,是一種全新的高速互連協(xié)議,旨在提升人工智能、大數(shù)據(jù)等內(nèi)存密集型工作負載的數(shù)據(jù)傳輸和處理性能。通過CXL聯(lián)盟的合規(guī)測試,是檢驗CXL生態(tài)
    的頭像 發(fā)表于 08-18 09:14 ?1043次閱讀

    關(guān)于CXL的功能與特性詳解

    CXL.io 和CXL.cache 是CXL 協(xié)定中的兩個子協(xié)定,它們的功能和用途有所不同,主要是為了引入非對稱的概念;CXL.io 類似于PCIe 的事件(event),主要用于初始
    的頭像 發(fā)表于 11-22 15:43 ?1025次閱讀
    關(guān)于<b class='flag-5'>CXL</b>的功能與特性<b class='flag-5'>詳解</b>

    如何利用CXL協(xié)議實現(xiàn)高效能的計算架構(gòu)

    構(gòu)建一個可橫向擴展的可組合分離架構(gòu)。眾所周知,CXL協(xié)議涵蓋了type1、type2、type3三種設(shè)備類型,而目前學術(shù)界和工業(yè)界的研究主要集中在如何利用CXL技術(shù)擴展系統(tǒng)的內(nèi)存容量。
    的頭像 發(fā)表于 09-03 09:14 ?211次閱讀
    如何利用<b class='flag-5'>CXL</b>協(xié)議實現(xiàn)高效能的計算<b class='flag-5'>架構(gòu)</b>