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

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

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

如何處理cache miss問題以提高加速器效率呢?

FPGA之家 ? 來源:AI加速 ? 2023-11-16 16:36 ? 次閱讀

引言

帶寬是影響FPGA加速器的重要因素,因為大量的并行計算對數(shù)據(jù)量要求很大。如果加速器對數(shù)據(jù)的訪問是不規(guī)則的,那么cache miss就會大大影響加速器性能。這篇來自FPGA2019會議的報告,向我們展示了如何來更好的處理cache miss問題,提高對緩存的利用率以及提高加速器效率。

01

Cache miss的問題

假設(shè)DDR可以提供12.8GB/s的帶寬,F(xiàn)PGA上的并行加速器的數(shù)據(jù)輸入帶寬為0.8GB/s,可以并列16個這種加速器。這些加速器通過arbiter來直接訪問DDR。如果它們訪問的數(shù)據(jù)是連續(xù)規(guī)則的,那么DDR的帶寬可以被充分利用。但是這些加速器需要的數(shù)據(jù)在DDR中并不是規(guī)則排列的,如圖1.1。這樣就會造成頻繁的訪問DDR,這樣DDR的帶寬就不夠用,造成的結(jié)果就是加速器會受到延遲,效率無法得到提升。就如同圖1.1所示,實際上有效利用的DDR帶寬只有0.8GB/s。

90b92460-8458-11ee-939d-92fbcf53809c.jpg

圖1.1 不規(guī)則數(shù)據(jù)需要造成頻繁訪問DDR

一種解決問題的方法是使用blocking cache,將還沒有用到的數(shù)據(jù)緩存起來以便之后使用。然而這樣存在兩個問題:一個是如果緩存中沒有需要的數(shù)據(jù),那么就需要從DDR中獲取數(shù)據(jù),這就會有很大延遲,因為對DDR的數(shù)據(jù)進行隨機訪問是非常耗時的;另一個是緩存的使用效率很低,內(nèi)部大部分數(shù)據(jù)都不能被及時消耗,以便等待被利用到。

90cfb086-8458-11ee-939d-92fbcf53809c.jpg

圖1.2 blocking cache的使用

另外一種解決的辦法是non-blocking cache,這正是本文提出的方法。這種方法的關(guān)鍵是加速器可以允許一定數(shù)量的cache miss。Cache miss不會阻塞對后面數(shù)據(jù)的獲取。這就要求前后的數(shù)據(jù)沒有依賴關(guān)系,而且允許的cache miss數(shù)量足夠多,能夠允許在這些時間可以從DDR中獲取miss的數(shù)據(jù),否則一樣會造成加速器等待喂數(shù)。

90e2e890-8458-11ee-939d-92fbcf53809c.jpg

圖1.3 non-blocking cache

02

傳統(tǒng)的Non-blocking cache結(jié)構(gòu)

圖2.1是一個基本的non-blocking cache結(jié)構(gòu),它主要由cache array以及MSHR組成。Cache array中含有tag和數(shù)據(jù),tag用來表示加速器請求的數(shù)據(jù)的在外存中的地址。通過tag可以判定請求的數(shù)據(jù)在cache中是否存在。MSHR首先被Kroft使用,它含有數(shù)據(jù)未被命中需要去外存獲取的具體信息:包括外存地址,用于判定加速器是否會再次命中相同的數(shù)據(jù)。還有cache的地址,用于決定從外存獲取的數(shù)據(jù)存儲到cache的位置,給哪個加速器使用。還有輸入請求確認標志,表示這個缺失的數(shù)據(jù)是否從外存讀取到。

基本操作是:當加速器第一次從cache中獲取數(shù)據(jù)沒有命中,那么就在MSHR中記錄下相應(yīng)的信息和狀態(tài),當?shù)诙蜗嗤瑪?shù)據(jù)miss發(fā)生,除了在MSHR中記錄信息外,則啟動從外部存儲器獲取數(shù)據(jù),并更新到cache中。取回來的數(shù)據(jù)會根據(jù)MSHR中的信息將需要的數(shù)據(jù)發(fā)送給加速器。所以一個包含n個表項的MSHR有n個比較器用于比較數(shù)據(jù)地址,是否屬于同一個miss的數(shù)據(jù)等。使用non-blocking cache能夠提高運算效率,減少等待時間,提高帶寬利用率。但是這種傳統(tǒng)的MSHR消耗很多邏輯資源,不利于規(guī)模擴展。

90f5d09a-8458-11ee-939d-92fbcf53809c.jpg

圖2.1 non-blocking cache的基本結(jié)構(gòu)和操作

90fe45fe-8458-11ee-939d-92fbcf53809c.jpg

圖2.2 更新cache

91156c52-8458-11ee-939d-92fbcf53809c.png

圖2.3 MSHR邏輯結(jié)構(gòu)

03

對non-blocking cache的改進

為了能夠有效擴展MSHR,可以使用多個MSHR,每個MSHR有n個表項,這樣相比于使用一個MSHR能節(jié)省邏輯資源。但是這涉及到一個問題,如果一個配置MSHR的請求在多個MSHR表都有沖突,那么就造成配置MSHR表的等待。這樣就導致了加速器運算的等待,不能夠執(zhí)行下一條指令。

912163ea-8458-11ee-939d-92fbcf53809c.png

圖3.1 兩個MSHR被請求表項都被占用

解決辦法就是Cuckoo hashing算法。假設(shè)有兩個MSHR表,T1和T2。每個r個表項。每個元素通過函數(shù)h1和h2來確定表項位置,即:T1[h1(x)],T2[h2(x)]。為了插入表項內(nèi)容x,檢查T1對應(yīng)位置是否空,如果空,就插入。如果非空就檢查T2,如果T2也非空,這就是沖突的情況,那么就插入到T2中,將原來的內(nèi)容z替換。然后z再去查詢T1表,如此循環(huán)進行。這樣就不會造成阻塞。

9130364a-8458-11ee-939d-92fbcf53809c.png

9145f598-8458-11ee-939d-92fbcf53809c.png

9150e246-8458-11ee-939d-92fbcf53809c.png

圖3.2 Cuckoo hashing

還有一個問題是,MSHR中的表項subentries大小是固定的,如果要擴展表項的subentries,那么所有的內(nèi)容都是同等擴展,這樣可能有一些內(nèi)容并不需要那么大。所以為了能夠有效利用存儲資源,論文作者提出了動態(tài)可擴展subentries內(nèi)容的方法。將tag和subentries分隔開分別存儲,這樣如果有更多加速器miss相同的數(shù)據(jù),那么就可以在一個subentries表后再擴展需要的subentries。這樣就是在需要級聯(lián)的subentries中增加指針來級聯(lián)到下一個subentries表。

91643206-8458-11ee-939d-92fbcf53809c.png

圖3.3 可擴展subentries

916f1248-8458-11ee-939d-92fbcf53809c.png

圖3.4 表項擴展

917711be-8458-11ee-939d-92fbcf53809c.jpg

圖3.5 整體結(jié)構(gòu)

結(jié)論

本文主要總結(jié)了non-blocking cache的設(shè)計框架,以及在FPGA上如何使用。介紹比較簡略,更詳細的資料還需要了解CPU體系中non-blocking cache的具體結(jié)構(gòu)。






審核編輯:劉清

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

    關(guān)注

    38

    文章

    7492

    瀏覽量

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

    關(guān)注

    2

    文章

    799

    瀏覽量

    37876
  • 比較器
    +關(guān)注

    關(guān)注

    14

    文章

    1651

    瀏覽量

    107221
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    712

    瀏覽量

    65344
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    28346

原文標題:一文告訴你怎么解決cache miss的問題

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    在FPGA上如何使用non-blocking cache設(shè)計框架

    們展示了如何來更好的處理cache miss問題,提高對緩存的利用率以及提高加速器
    的頭像 發(fā)表于 11-11 17:28 ?4731次閱讀
    在FPGA上如何使用non-blocking <b class='flag-5'>cache</b>設(shè)計框架

    #硬聲創(chuàng)作季 電子制作:磁性加速器

    加速器DIY
    Mr_haohao
    發(fā)布于 :2022年10月19日 00:19:38

    采用控制律加速器的Piccolo MCU

    日前,德州儀器 (TI) 宣布推出采用控制律加速器 (CLA) 的新型 TMS320F2803x Piccolo 微處理器 (MCU),可促進具有更高可靠性與效率的嵌入式控制應(yīng)用的開發(fā)。CLA
    發(fā)表于 07-26 06:21

    基于Fast Model的加速器軟件開發(fā)

    非常驚艷的加速器,在實際使用中體驗卻不盡如人意的原因。人工智能加速器為例,其中基本的硬件加速單元就是乘加的組合,但如何讓這些乘加
    發(fā)表于 07-29 15:38

    在0.13.0這個sdk版本中,如何實現(xiàn)在啟動時將代碼從flash中加載到ILM提高cache miss時的程序運行速度?

    在0.13.0這個sdk版本中,flash_xip工程模板的ILM只用于存放中斷向量表,個人感覺這樣是比較浪費的,因此我希望啟動時將代碼從flash中加載到ILM提高cache miss
    發(fā)表于 05-26 08:05

    Intel媒體加速器參考軟件用戶指南

    英特爾媒體加速器參考軟件是用于數(shù)字標志、交互式白板(IWBs)和亭位使用模型的參考媒體播放應(yīng)用軟件,它利用固定功能硬件加速提高媒體流速、改進工作量平衡和資源利用,以及定制的圖形
    發(fā)表于 08-04 07:07

    利用硬件加速器提高處理器的性能

    處理器內(nèi)部集成的硬件加速器可以實現(xiàn)三種廣泛使用的信號處理操作:FIR(有限沖激響應(yīng))、IIR(無限沖激響應(yīng))和FFT(快速傅里葉變換)。硬件加速器減輕了核
    發(fā)表于 12-04 15:22 ?1322次閱讀

    使用協(xié)處理器加速器的方法介紹

    了解協(xié)處理的價值,Zynq-7000加速器一致性端口,使用協(xié)處理器加速器的方法以及協(xié)處理器設(shè)計實例的概述。
    的頭像 發(fā)表于 11-30 06:15 ?4266次閱讀

    基于RISC-V處理器和卷積加速器的SoC系統(tǒng)

    提高卷積神經(jīng)網(wǎng)絡(luò)(CNN)的計算效率和能效,8bit定點數(shù)據(jù)作為輸入,設(shè)計一個支持激活、批標準化以及池化等CNN網(wǎng)絡(luò)中常見計算類型的卷積加速器,優(yōu)化循環(huán)計算順序并將其與數(shù)據(jù)復(fù)用技術(shù)
    發(fā)表于 06-02 15:08 ?29次下載

    Linux 6.2將引入計算加速器子系統(tǒng)

    而在今年的 LPC 大會中,上游開發(fā)人員終于對如何處理加速器子系統(tǒng)達成了共識:鑒于各種人工智能加速器和 GPU 之間有很多共同點,這個新的 “accel” 內(nèi)核計算加速器子系統(tǒng)將利用直
    的頭像 發(fā)表于 11-23 14:47 ?752次閱讀

    硬件加速器提升下一代SHARC處理器的性能

    SHARC ADSP-2146x處理器集成了硬件加速器,可實現(xiàn)三種廣泛使用的信號處理操作:FIR(有限脈沖響應(yīng))、IIR(無限脈沖響應(yīng))和FFT(快速傅里葉變換)。加速器卸載了核心
    的頭像 發(fā)表于 03-03 14:46 ?1297次閱讀
    硬件<b class='flag-5'>加速器</b>提升下一代SHARC<b class='flag-5'>處理器</b>的性能

    基于FPGA的深度學習CNN加速器設(shè)計方案

    因為CNN的特有計算模式,通用處理器對于CNN實現(xiàn)效率并不高,不能滿足性能要求。 因此,近來已經(jīng)提出了基于FPGA,GPU甚至ASIC設(shè)計的各種加速器提高CNN設(shè)計的性能。
    發(fā)表于 06-14 16:03 ?2305次閱讀
    基于FPGA的深度學習CNN<b class='flag-5'>加速器</b>設(shè)計方案

    CTAccel圖像處理(CIP)加速器

    電子發(fā)燒友網(wǎng)站提供《CTAccel圖像處理(CIP)加速器.pdf》資料免費下載
    發(fā)表于 09-15 14:21 ?0次下載
    CTAccel圖像<b class='flag-5'>處理</b>(CIP)<b class='flag-5'>加速器</b>

    粒子加速器加速原理是啥

    粒子加速器加速原理是啥? 粒子加速器是一種重要的實驗設(shè)備,用于研究粒子物理學、核物理學等領(lǐng)域。其主要原理是通過電場和磁場的作用,對帶電粒子進行
    的頭像 發(fā)表于 12-18 13:52 ?2120次閱讀

    什么是神經(jīng)網(wǎng)絡(luò)加速器?它有哪些特點?

    神經(jīng)網(wǎng)絡(luò)加速器是一種專門設(shè)計用于提高神經(jīng)網(wǎng)絡(luò)計算效率的硬件設(shè)備。隨著深度學習技術(shù)的快速發(fā)展和廣泛應(yīng)用,神經(jīng)網(wǎng)絡(luò)模型的復(fù)雜度和計算量急劇增加,對計算性能的要求也越來越高。傳統(tǒng)的通用處理器
    的頭像 發(fā)表于 07-11 10:40 ?493次閱讀