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

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

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

多核處理器系統(tǒng)如何維護(hù)cache一致性

佐思汽車研究 ? 來源:佐思汽車研究 ? 作者:Lucas Huang ? 2022-11-03 10:24 ? 次閱讀


汽車作為一種傳統(tǒng)的工業(yè)產(chǎn)品,如今也隨著科技發(fā)展不斷推陳出新。如果說動力系統(tǒng)是汽車的心臟,那么車載芯片就是汽車的大腦。隨著不斷有先進(jìn)的工藝和架構(gòu)應(yīng)用于車載芯片領(lǐng)域,車載芯片得性能日益提升,用以支持多樣化的娛樂功能和貼心的輔助駕駛功能,為人們提供了更好的駕乘體驗。在單核處理器不能滿足車載芯片對性能的需求時,車載芯片會采用多核處理器架構(gòu)以達(dá)到更高的處理能力。每個處理器都帶有緩存數(shù)據(jù)的組件(cache),多核系統(tǒng)設(shè)計需要考慮處理器緩存數(shù)據(jù)的一致性,防止處理器使用過時的數(shù)據(jù)從而導(dǎo)致運行出錯。因此一致性總線應(yīng)運而生,它保證了各個處理器緩存數(shù)據(jù)的一致性,使得多個處理器可以共同處理同一項事務(wù),讓處理器的性能得到了很好得發(fā)揮。本文從一致性總線的由來、結(jié)構(gòu)和功能等方面,對其進(jìn)行了簡單介紹,希望能給讀者帶來一些啟發(fā)。

總線的由來

總線最早是源于計算機(jī)系統(tǒng)的一個專業(yè)術(shù)語,是計算機(jī)各功能部件之間傳送信息的公共通信干線。在芯片系統(tǒng)中也把連接芯片中各個組件的公共線路稱為總線??偩€由地址線(傳送地址信息)、數(shù)據(jù)線(傳送數(shù)據(jù)信息)以及控制線(傳送控制信息)三類組成。在傳輸過程中發(fā)起請求的一方稱為主設(shè)備,返回響應(yīng)一方稱為從設(shè)備。以CPU訪問DDR為例,當(dāng)CPU發(fā)起讀訪問時,總線將讀請求和讀地址發(fā)送到DDR控制器,DDR的控制器收到讀請求后,根據(jù)讀地址將DDR中對應(yīng)的數(shù)據(jù)取出并送到總線處,總線再將數(shù)據(jù)送到CPU,此時讀訪問結(jié)束;當(dāng)CPU發(fā)起寫訪問時,總線將寫請求、寫地址和寫數(shù)據(jù)發(fā)送到DDR控制器,當(dāng)DDR完成寫數(shù)據(jù)的存儲后,發(fā)送寫應(yīng)答到總線處,總線再將其發(fā)送給CPU,此時寫訪問結(jié)束。

3373d39a-5b1e-11ed-a3b6-dac502259ad0.jpg

CPU讀寫DDR示意圖

隨著對運算能力(計算速度和計算規(guī)模)需求的不斷提高,在單核CPU無法滿足計算需求的情況下,多核CPU計算機(jī)系統(tǒng)應(yīng)運而生。目前的芯片系統(tǒng)中通常會包含多個CPU、DDR和外設(shè),即總線上連接有多個主設(shè)備和多個從設(shè)備,各個CPU都可以使用總線訪問DDR。總線的英文名稱“BUS”形象地描述各位“乘客”(各個主設(shè)備的請求)都可以乘坐“BUS”去往相應(yīng)的“目的地”(從設(shè)備),從設(shè)備的響應(yīng)也可以通過總線返回對應(yīng)的主設(shè)備,此時總線可以理解為共享的信息通路,總線把各個組件需要傳遞的信息運送到相應(yīng)的目的地。

3380120e-5b1e-11ed-a3b6-dac502259ad0.jpg

多路主從設(shè)備總線示意圖

Cache的由來 提高CPU運算能力的方式之一就是提高CPU工作頻率,但是單單提高CPU頻率帶來的性能提升是有限的,芯片的系統(tǒng)性能還取決于系統(tǒng)架構(gòu)、指令結(jié)構(gòu)、信息在各個部件之間的傳送速度以及存儲部件的存取速度等因素,特別是CPU與主存之間的存取速度。如果CPU工作速率高于DDR工作速率,就會造成CPU等待,降低芯片性能,浪費CPU運算能力。 此外如果CPU每次訪問DDR都要經(jīng)過總線,然而總線上的資源是有限的,CPU之間中會存在競爭關(guān)系,從中產(chǎn)生的延時也會浪費CPU的運算能力。因此Cache應(yīng)運而生,在DDR和CPU之間加入cache,cache使用速度快而容量小的SRAM來搭建,CPU在讀取數(shù)據(jù)時優(yōu)先訪問cache,如果cache中有相應(yīng)的數(shù)據(jù),即命中,則從cache中獲取。反之,如果cache中不存在對應(yīng)的數(shù)據(jù),再通過總線訪問DDR。Cache的優(yōu)點在于既能滿足一部分快速讀寫,又不會增加過多的芯片開銷。

多核處理器系統(tǒng)如何維護(hù)cache一致性 在多核處理器系統(tǒng)中引入cache之后,每個CPU都有對應(yīng)的cache,每個CPU都會對相應(yīng)的cache進(jìn)行讀寫操作,由于多個CPU可能對同一地址進(jìn)行讀寫操作,當(dāng)某個CPU對共享cache line進(jìn)行寫操作時,其它CPU的cache中該數(shù)據(jù)塊的副本將成為過時的數(shù)據(jù)。如果不及時地通知相應(yīng)的CPU,將導(dǎo)致錯誤的運行結(jié)果。如何保證同一地址的數(shù)據(jù)在不同cache保持一致成為大家需要考慮的問題。多核處理器系統(tǒng)數(shù)據(jù)一致性不僅僅涉及各個cache之間的一致性問題,也包含cache和DDR中數(shù)據(jù)的一致性問題。 我們基于MOESI cache一致性協(xié)議假設(shè):CPU A、CPU B以及DDR都保存有同一cache line數(shù)據(jù),如果CPU A想要對此cache line中的數(shù)據(jù)進(jìn)行改寫,那么總線會先使CPU B中的該 cache line無效,之后CPU A再對其cache line進(jìn)行改寫,此時DDR中該cache line的數(shù)據(jù)也成為了舊的不可用數(shù)據(jù),如果CPU B需要使用該cache line的數(shù)據(jù)就需要向總線發(fā)起讀請求重新獲取新的數(shù)據(jù),總線從CPU A的cache中獲取改寫后的新數(shù)據(jù)并發(fā)送給CPU B的cache;當(dāng)CPU A和CPU B的cache不再保留該cache line時需要通過總線將其寫回到DDR中??梢钥闯龃藭r的總線具有管理各CPU cache一致性的功能,被稱為一致性總線(Coherent Bus)。

目前CPU大部分的數(shù)據(jù)訪問操作都是通過cache完成,不需要和DDR交互,所以cache的出現(xiàn)除了提高CPU訪問數(shù)據(jù)的效率,又極大的節(jié)約了總線帶寬,進(jìn)而使系統(tǒng)可容納的CPU數(shù)目增加。當(dāng)然,維護(hù)cache一致性需要一些額外的總線transaction,這稍稍降低了實際的節(jié)約量。

3391862e-5b1e-11ed-a3b6-dac502259ad0.jpg

Cache中數(shù)據(jù)一致性維護(hù)示意圖

總線在維護(hù)cache一致性時,通知相關(guān)cache的操作稱為snoop;snoop操作分為兩種類型:全部通知和精準(zhǔn)通知。

全部通知就是通知所有的cache來查詢自身是否有與此操作相關(guān)的cache line, 這種做法的缺點是由于共享的cache line畢竟是少數(shù)的,所以CPU需要處理很多與自身不相關(guān)的snoop請求,從而增加CPU的資源開銷。由于多數(shù)snoop都是無效的,因此全部通知也會浪費總線的資源。

精準(zhǔn)通知是指總線會記錄各個cache中cache line的信息,當(dāng)有請求時,先通過snoop filter來篩選出相關(guān)的cache并發(fā)送snoop。Snoopfilter中記錄了各個cache line的地址信息和狀態(tài)信息。目前一致性總線大多采用精準(zhǔn)通知的方式,雖然snoop filter增加了總線的資源開銷,但是減少了CPU側(cè)的資源開銷,同時也避免總線發(fā)送不必要的snoop。

一致性總線通過snoop filter來記錄各個cache中的cache line狀態(tài),在總線的視角中,cache中每個cache line的狀態(tài)都在掌握之中。而常用的cache一致性協(xié)議包含兩種:MESI和MOESI。

表:cache一致性協(xié)議之MESI協(xié)議

33a0800c-5b1e-11ed-a3b6-dac502259ad0.png

MESI協(xié)議的不便之處在于:假設(shè)CPUA有個一個M態(tài)的cache line,而此時CPU B想獲取此cache line,那么總線必須通知CPU A將cache line同步到主存中。在這個過程中,總線與主存的交互會消耗較長的時間,如果可以在不將數(shù)據(jù)同步回主存的情況,將CPU A的數(shù)據(jù)通過總線發(fā)送給CPU B,將會節(jié)省時間,提高效率。 MOESI協(xié)議就優(yōu)化了這一不便之處。MOESI協(xié)議允許cache之間共享dirtycache line。Dirty是指cache line相對于主存而言已經(jīng)發(fā)生變化,這樣就可以節(jié)省與主存交互的時間成本,在cache line不需要寫回主存之前,一直在cache之間傳輸。 MOESI相較于MESI多一個O態(tài),O態(tài)代表該cache line與主存中的值不同,至少存在于兩個cache中,并由該cache在需要的時刻將cache line刷新到主存中。此外MESI和MOESI的S態(tài)有所不同,MESI的S態(tài)中的cache line與主存保持一致;而MOESI的S態(tài)中的cache line不一定與主存保持一致,可能是共享了dirty cache line,但是沒有向主存刷新cache line的義務(wù)。

表:cache一致性協(xié)議之MOESI協(xié)議

33ad83e2-5b1e-11ed-a3b6-dac502259ad0.png

目前常采用CHI協(xié)議來實現(xiàn)一致性總線上各個組件的通信,該協(xié)議就是采用了MOESI來管理相應(yīng)的cache line 狀態(tài)。CHI靈活用于設(shè)計基于一致性總線的芯片系統(tǒng),支持構(gòu)建小型、中型或大型芯片系統(tǒng)。系統(tǒng)包含多個組件,從CPU、GPU、DDR到外設(shè)接口,以及互連本身。 CHI協(xié)議只定義了網(wǎng)絡(luò)中不同組件,但是沒有規(guī)定使用何種方式來連接組件。一致性總線設(shè)計者可以根據(jù)PPA(Performance/Power/Area)需求靈活定義拓?fù)浣Y(jié)構(gòu)。拓?fù)浣Y(jié)構(gòu)包含以下三類:

環(huán)形拓?fù)洌≧ing)。在環(huán)中,每個組件直接連接到其他兩個組件,形成一個環(huán)狀網(wǎng)絡(luò)結(jié)構(gòu),所有組件可以在環(huán)中相互通信。這種拓?fù)涞娜秉c是,延遲隨著環(huán)中組件的數(shù)量線性增加。這是因為相關(guān)事務(wù)只能一直沿著環(huán)形網(wǎng)絡(luò)傳輸,直到抵達(dá)目的地。因此,環(huán)形拓?fù)渥钸m合于中型系統(tǒng)。

網(wǎng)格拓?fù)?Mesh)。與環(huán)相比,網(wǎng)格包含了更多的到達(dá)目的地的路徑,因此減少了相關(guān)事務(wù)的訪問時間。這在系統(tǒng)中提供了更高的帶寬,同時也是以犧牲更多的面積為代價。網(wǎng)狀拓?fù)浣Y(jié)構(gòu)最適合于大規(guī)模系統(tǒng)。

交叉連接(Crossbar)。這種拓?fù)湓试S每個節(jié)點連接到每個可能的節(jié)點。這種設(shè)計提供了最好的性能,因為每個組件都與需要通信的組件有直接連接。這種拓?fù)涞娜秉c是連接所有組件的需要很大的資源開銷。這是因為每增加一個組件,系統(tǒng)中所需的信號線數(shù)量都會顯著增加。因此,拓?fù)渥钸m合于小型系統(tǒng)。

33bcff8e-5b1e-11ed-a3b6-dac502259ad0.jpg

拓?fù)浣Y(jié)構(gòu)示意圖

為了提高CPU存取數(shù)據(jù)的速率,通常會在一致性總線上加入一級cache,也就是LLC(Last Level Cache)。LLC是一個獨占cache,是低于CPUcache的一級cache,用于緩存從總線中經(jīng)過的cacheline,它增加了芯片上總cache容量。當(dāng)總線無法從CPU的cache中獲取需要的數(shù)據(jù)時,可以先查詢LLC是否含有對應(yīng)的數(shù)據(jù),如果命中,就可以在不訪問主存或外設(shè)的情況下,為CPU提供數(shù)據(jù)。這種多級cache結(jié)構(gòu)有效減少了芯片訪問主存或外設(shè)的次數(shù),為高性能CPU提供了相應(yīng)數(shù)據(jù)搬運能力。

33cca9c0-5b1e-11ed-a3b6-dac502259ad0.jpg

一致性總線示意圖 結(jié)語 一致性總線的出現(xiàn)有效提升了芯片系統(tǒng)內(nèi)部數(shù)據(jù)交流的效率,保證了處理器可以及時獲取有效數(shù)據(jù),使得高性能處理器可以得到更好的發(fā)揮,起到了加速芯片系統(tǒng)運行的作用。隨著車載芯片的不斷發(fā)展,一致性總線會得到更加廣泛的應(yīng)用。

審核編輯 :李倩

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

    關(guān)注

    38

    文章

    4021

    瀏覽量

    217039
  • 核心技術(shù)
    +關(guān)注

    關(guān)注

    4

    文章

    625

    瀏覽量

    19515
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2817

    瀏覽量

    87711
  • 芯片系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    15816

原文標(biāo)題:總線一致性:高性能SoC核心技術(shù)

文章出處:【微信號:zuosiqiche,微信公眾號:佐思汽車研究】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    級聯(lián)一致性和移相器校準(zhǔn)應(yīng)用手冊

    電子發(fā)燒友網(wǎng)站提供《級聯(lián)一致性和移相器校準(zhǔn)應(yīng)用手冊.pdf》資料免費下載
    發(fā)表于 08-29 10:48 ?0次下載
    級聯(lián)<b class='flag-5'>一致性</b>和移相器校準(zhǔn)應(yīng)用手冊

    電感值和直流電阻的一致性如何提高?

    提高電感值和直流電阻的一致性,可以從以下幾個方面入手: 、提高電感值的一致性 優(yōu)化磁芯選擇 : 磁芯是電感的關(guān)鍵組成部分,其材料特性和尺寸直接影響電感值。選擇具有高磁導(dǎo)率、低磁阻和
    的頭像 發(fā)表于 08-19 15:27 ?127次閱讀

    LIN一致性測試規(guī)范2.1

    電子發(fā)燒友網(wǎng)站提供《LIN一致性測試規(guī)范2.1.pdf》資料免費下載
    發(fā)表于 08-15 17:14 ?2次下載

    新品發(fā)布 | 同星智能正式推出CAN總線一致性測試系統(tǒng)

    CAN總線一致性測試系統(tǒng)CANFD/CAN總線一致性測試系統(tǒng),在硬件系統(tǒng)上基于同星自主研發(fā)的總線分析工具,干擾儀,
    的頭像 發(fā)表于 07-06 08:21 ?321次閱讀
    新品發(fā)布 | 同星智能正式推出CAN總線<b class='flag-5'>一致性</b>測試<b class='flag-5'>系統(tǒng)</b>

    銅線鍵合焊接一致性:如何突破技術(shù)瓶頸?

    在微電子封裝領(lǐng)域,銅線鍵合技術(shù)以其低成本、高效率和良好的電氣性能等優(yōu)勢,逐漸成為芯片與基板連接的主流方式。然而,銅線鍵合過程中的焊接一致性問題是制約其進(jìn)步發(fā)展和應(yīng)用的關(guān)鍵難題。焊接一致性不僅
    的頭像 發(fā)表于 07-04 10:12 ?1372次閱讀
    銅線鍵合焊接<b class='flag-5'>一致性</b>:如何突破技術(shù)瓶頸?

     QSFP一致性測試的專業(yè)測試設(shè)備

    QSFP一致性測試是確保QSFP光模塊性能穩(wěn)定、可靠的關(guān)鍵環(huán)節(jié),對于保障通信系統(tǒng)的正常運行具有重要意義。QSFP(Quad Small Form-factor Pluggable)光模塊是種高密度
    的頭像 發(fā)表于 03-14 10:40 ?413次閱讀
     QSFP<b class='flag-5'>一致性</b>測試的專業(yè)測試設(shè)備

    企業(yè)數(shù)據(jù)備份體系化方法論的七大原則:深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用一致性與崩潰一致性的區(qū)別

    能夠更有效地保護(hù)企業(yè)數(shù)據(jù)。 1. 概念區(qū)分: 應(yīng)用一致性和崩潰一致性是數(shù)據(jù)備份中的兩個基本原則。崩潰一致性關(guān)注的是基礎(chǔ)架構(gòu)層面,如IO、比特、文件、塊和對象等技術(shù)屬性。這意味著在系統(tǒng)
    的頭像 發(fā)表于 03-11 14:05 ?328次閱讀
    企業(yè)數(shù)據(jù)備份體系化方法論的七大原則:深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用<b class='flag-5'>一致性</b>與崩潰<b class='flag-5'>一致性</b>的區(qū)別

    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用一致性與崩潰一致性的區(qū)別

    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用一致性與崩潰一致性的區(qū)別 在數(shù)字化時代,數(shù)據(jù)備份成為了企業(yè)信息安全的核心環(huán)節(jié)。但在備份過程中,兩個關(guān)鍵概念——應(yīng)用一致性和崩潰一致性,常常被誤解或混淆。
    的頭像 發(fā)表于 03-11 11:29 ?649次閱讀
    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用<b class='flag-5'>一致性</b>與崩潰<b class='flag-5'>一致性</b>的區(qū)別

    DDR一致性測試的操作步驟

    介紹DDR一致性的操作步驟。 1. 準(zhǔn)備測試環(huán)境:首先,需要準(zhǔn)備好測試環(huán)境。這包括臺DDR一致性測試設(shè)備,該設(shè)備通常是專門為DDR測試設(shè)計的高性能工具。還需要個計算機(jī)
    的頭像 發(fā)表于 02-01 16:24 ?1073次閱讀

    MM32F0140 FlexCAN一致性測試 (2)

    MM32F0140 FlexCAN一致性測試 (2)
    的頭像 發(fā)表于 11-10 18:23 ?547次閱讀
    MM32F0140 FlexCAN<b class='flag-5'>一致性</b>測試 (2)

    MM32F0140 FlexCAN一致性測試(1)

    MM32F0140 FlexCAN一致性測試 (1)
    的頭像 發(fā)表于 11-10 17:50 ?516次閱讀
    MM32F0140 FlexCAN<b class='flag-5'>一致性</b>測試(1)

    什么是鋰離子電池不一致性?如何提高鋰離子電池的一致性?

    什么是鋰離子電池不一致性?鋰離子電池不穩(wěn)定的原因?如何提高鋰離子電池的一致性? 鋰離子電池不一致性是指同批次或不同批次的鋰離子電池在性能上出現(xiàn)不
    的頭像 發(fā)表于 11-10 14:49 ?1324次閱讀

    分布式系統(tǒng)中常見的一致性模型

    什么是一致性模型? 在分布式系統(tǒng)中,C(一致性) 和 A(可用)始終存在矛盾。若想保證可用,就必須通過復(fù)制、分片等方式冗余存儲。而
    的頭像 發(fā)表于 11-10 11:33 ?712次閱讀
    分布式<b class='flag-5'>系統(tǒng)</b>中常見的<b class='flag-5'>一致性</b>模型

    如何保證緩存一致性

    “ 本文的參考文章是2022年HOT 34上Intel Rob Blakenship關(guān)于CXL緩存一致性篇介紹。”
    的頭像 發(fā)表于 10-19 17:42 ?859次閱讀
    如何保證緩存<b class='flag-5'>一致性</b>

    如何解決數(shù)據(jù)庫與緩存一致性

    緩存一致性 每次逢年過節(jié)的時候搶票非常艱難,放票的時候那么多人同時去搶票,如果所有人查詢、購票等都去訪問數(shù)據(jù)庫,那數(shù)據(jù)庫的壓力得有多大,這時候很多都會引入緩存, 把車票信息放入緩存,這樣可以減少
    的頭像 發(fā)表于 09-25 15:25 ?911次閱讀
    如何解決數(shù)據(jù)庫與緩存<b class='flag-5'>一致性</b>