精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

地址邊界與地址對齊

jf_78858299 ? 來源:芯工阿文 ? 作者:芯工阿文 ? 2023-01-21 16:39 ? 次閱讀

數據傳輸是基于地址進行的。在分析和設計微架構時,除了地址域之外,如何選擇地址信號,我覺得也是值得注意的問題。

地址邊界

還記得剛開始工作時,被安排維護AXI總線重排序的公共模塊,當時有一個地址對齊的概念,如64Byte地址邊界、128Byte或者256Byte地址邊界,那會花了有一段時間才搞清楚,但也僅僅是搞清楚,也不清楚引入這一概念的原因,能解決哪些問題。

所謂地址邊界,若某地址能夠被一整數除凈,該地址就稱為整數對應的地址邊界。在系統內都是以0/1的二進制,這一整數一般指的是2的冪次方,如4、8、16、64、128等等。舉例來說,0x200, 0x240, 0x880等等都是64Byte地址邊界;0x200,0x880是128Byte地址邊界,但0x240不是128Byte地址邊界。再談談CacheLine的概念。為提升系統訪問內存的速度,通常會引入緩存Cache,也就是將Memory的內容先搬運到CPU附近。這一緩存是以塊為單位的,需要訪問時,則先將對應的緩存塊搬運到Cache內。這一緩存塊就稱為CacheLine,是緩存Cahe管理的最小單位,可基于系統需求選擇大小,如64Byte或128Byte,甚至是4KByte。每個CacheLine,除了存儲其本身的數據之外,還需要記錄其地址、是否修改等等額外信息。粒度越小,記錄額外信息的資源占比越大;粒度大了,又會對數據的利用率下降;具體大小則需基于需求來確定,如對于AI/GPU計算,可考慮使用4KByte的Caheline。

地址對齊

在考慮微架構設計和軟硬件接口時,訪問Memory盡可能按照整塊地址的訪問,地址邊界對齊,尤其是寫操作。在一般的CPU計算機系統,采用的地址邊界大小至少為64Byte,使用更大的區間,如128Byte/256Byt,在一些場景也是能夠帶來收益的。

數據總線利用率

系統互聯總線的位寬較大,如128、256、512bit,甚至2048bit。但是,每一拍數據的地址并不是隨機,而必須基于一定規則排列,參考AXI協議,如256bits的數據位寬,其地址低位必須是0-31。傳輸32Byte數據,若起始地址為32Byte邊界對齊,1拍可以傳輸完成,利用率為100%,否則需要占用2拍,其利用率只有50%。

圖片

對于PCIe數據傳輸來說,其數據長度單位為DW,即4Byte,因此由于地址邊界不對齊帶來的影響比較小。

Full/Partial Write

系統存在CacheLine的定義,若訪問操作為整CacheLine的寫操作,則稱為Full Write,否則為Partial Write。舉例,CacheLine為64Byte,若訪問地址低6位為0,長度為64Byte,就是Full Write;低6位不為0,或長度不為64Byte整數倍,則存在Partial操作。非地址對齊的訪問操作,容易造成Partial Write,引入性能問題。

Read-modify-write

對于Cache、DDR,或者其余類似的Memory系統,存在最小操作粒度的概念。若寫訪問操作小于該最小操作粒度,則需要引入Read-modify-write。將對應地址的數據塊讀取出來,進行修改,再將數據寫入對應地址,需要占用讀通道的帶寬。對于地址對齊的整塊訪問,直接寫入即可。

DMA的地址選擇

Host與PCIe Device之間大量數據的傳輸,基本都是由DMA(Direct Memory Access)完成的。簡單來說,DMA就是從一個地址(源地址)讀取連續的數據,再寫入到另一個地址(目的地址)。硬件邏輯提供源地址、目的地址和搬運長度的軟件編程接口,再被軟件進行調用。復雜一些的硬件實現,還可以支持描述符、鏈表、搬運方式配置和其余系統屬性的配置等等特性,如支持完成中斷。

至于對數據搬運的地址選擇,則是由調用DMA的軟件進行控制的,但是也會受到上下游模塊的約束,如Device側的硬件引擎模塊等等。

在考慮DMA數據流時,需基于系統層面對各模塊的數據訪問需求進行設計,盡可能使得DMA在Host和Device之間的數據搬運是地址邊界對齊的。這一對齊包含兩個方面,一是訪問Device/Host的讀寫訪問是基于地址邊界對齊,二是源地址和目的地址的低位是相等的。兩者其實是類似的,沒有滿足后者,也會引入大量的非地址對齊的操作。至于后者的地址低位,則需基于硬件實現進行考慮,考慮點就是上面描述的幾點要素。

再來看看第二方面引入的邏輯復雜度,源地址和目的地址的低位相等。考慮源和目的方向使用了AMBA總線,數據位寬為512bit/64Byte,若需支持地址不對齊的場景,則需要512個64bit位寬的MUX;若僅需支持地址的低6bit相等,則完全不需要進行移位處理;若僅需支持地址的低2bit性能,硬件邏輯規模也減小為512個16bit位寬的MUX。大量的MUX邏輯也容易引入Congestion風險,需要做額外的優化處理。

圖片

結語

地址對齊的概念非常簡單,但容易被忽略。對于軟件人員來說,DMA就是應該支持任意地址到任意地址的數據搬運;但對硬件設計來說,可能需要付出很大的代價才能達成要求。可以考慮做一些折衷,軟件做一些簡單修改,使用地址對齊的數據搬運,硬件實現側對地址對齊的操作進行盡量的優化,而對非地址對齊的做一些簡化處理,不考慮性能但滿足功能,達到較優的PPA。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據傳輸
    +關注

    關注

    9

    文章

    1838

    瀏覽量

    64476
  • 地址
    +關注

    關注

    1

    文章

    31

    瀏覽量

    10748
  • 微架構
    +關注

    關注

    0

    文章

    22

    瀏覽量

    7033
收藏 人收藏

    評論

    相關推薦

    購買海外虛擬IP地址可以通過以下幾種方式#虛擬IP地址

    ip地址
    jf_62215197
    發布于 :2024年08月16日 07:16:04

    如何實現局部數組的地址對齊

    Hello我想使局部數組地址128字節對齊,不知道在C6000平臺,CCS5.5上,能否實現。全局變量,用DATA#pragma DATA_ALIGN(arr,128),但是不知道局部數組如何實現地址
    發表于 08-27 10:22

    【工程源碼】NIOS II 自定義IP核的靜態地址對齊和動態地址對齊

    本文和設計代碼由FPGA愛好者小梅哥編寫,未經作者許可,本文僅允許網絡論壇復制轉載,且轉載時請標明原作者。如果使用靜態地址對齊(每個寄存器在Avalon總線上占4個字節的地址)設置IP使用靜態
    發表于 02-27 19:20

    探討一下地址邊界地址對齊的概念及其選擇

    數據傳輸是基于地址進行的。在分析和設計微架構時,除了地址域之外,如何選擇地址信號,我覺得也是值得注意的問題。地址邊界還記得剛開始工作時,被安
    發表于 09-07 14:41

    請問MDK怎么讓一個函數對齊到1K地址邊界

    RT,需要運行時刪除部分函數,怎么讓它對齊在flash扇區邊界上?
    發表于 11-03 07:49

    IP地址,IP地址是什么意思

    IP地址,IP地址是什么意思 基本定義 IP地址都是一個十分重要的概念,INTERNET的許多服務和特點都是通過IP地址體現出來的。
    發表于 04-03 15:12 ?1667次閱讀

    ATM地址,ATM地址是什么意思

    ATM地址,ATM地址是什么意思 異 步傳輸模式(ATM)使用地址來確定和定位ATM設備。在ATM中,地址是呼叫建立過程中通過UNI信令確定的,然后據此尋找合
    發表于 04-06 16:00 ?1519次閱讀

    基于ARM程序的字節對齊的分析

    首先說說,什么叫對齊。如果一個數據是從偶地址開始的連續存儲,那么它就是半字對齊,否則就是非半字對齊;半字對齊的特征是bit0=0,其他位為任
    發表于 09-19 16:04 ?0次下載

    mac地址和ip地址是什么決定的

    IP地址是指互聯網協議地址(英語:Internet Protocol Address,又譯為網際協議地址),是IP Address的縮寫。IP地址是IP協議提供的一種統一的
    發表于 03-07 17:14 ?7675次閱讀
    mac<b class='flag-5'>地址</b>和ip<b class='flag-5'>地址</b>是什么決定的

    什么叫偏移地址_偏移地址怎么計算

    本文開始介紹了什么是偏移地址或概念,其次介紹了偏移地址的計算方法及段地址和偏移地址計算規律,最后介紹了獲取C++類成員變量的地址偏移方法。
    的頭像 發表于 04-16 09:42 ?10.7w次閱讀
    什么叫偏移<b class='flag-5'>地址</b>_偏移<b class='flag-5'>地址</b>怎么計算

    一個跟地址對齊有關的應用異常案例

    也就是說,基于CortexM3內核的芯片,它支持部分指令的非對齊訪問,但非對齊訪問要慢于對齊訪問。即非對齊訪問是需要代價的,訪問效率會受到影響。所以,我們在應用中要盡量遵循
    的頭像 發表于 02-04 15:20 ?2538次閱讀
    一個跟<b class='flag-5'>地址</b><b class='flag-5'>對齊</b>有關的應用異常案例

    IP地址是什么,IP地址的分類有哪些

    一、IP地址概念 IP地址是一個32位的二進制數,它由網絡ID和主機ID兩部份組成,用來在網絡中唯一的標識的一臺計算機。網絡ID用來標識計算機所處的網段;主 機ID用來標識計算機在網段中的位置。IP
    發表于 05-20 13:34 ?1.4w次閱讀

    工程師筆記|一個地址對齊引起的 HardFault 異常

    關鍵詞:地址對齊,Hardfault,STM32G0 目錄預覽 1. 概述 2. 問題描述與分析 3. 問題解決 4. 總結 1.概述 客戶在使用 STM32G070 的時候,KEIL MDK 為
    的頭像 發表于 02-10 11:05 ?2087次閱讀

    一個地址對齊引起的HardFault異常

    一個地址對齊引起的 HardFault 異常
    的頭像 發表于 09-18 10:57 ?691次閱讀
    一個<b class='flag-5'>地址</b>未<b class='flag-5'>對齊</b>引起的HardFault異常

    AXI總線:讀寫地址結構

    。 控制信息以及起始地址在讀/寫地址通道(AWC/ARC)傳輸。 注意:單次 burst 傳輸中的數據,其地址不能跨越 4KB 邊界。 關于這點在筆者參考的一個來源這樣表示,目前筆者覺
    的頭像 發表于 10-31 16:06 ?950次閱讀
    AXI總線:讀寫<b class='flag-5'>地址</b>結構