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

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

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

請(qǐng)問AMBA總線之AXI是如何提高性能的呢?

路科驗(yàn)證 ? 來源:芯時(shí)代青年 ? 2024-02-21 12:27 ? 次閱讀

很多讀者對(duì)AXI是如何提高吞吐量,提高帶寬的方式還不夠Make sense。本篇文章將從概念本身,結(jié)合配圖,帶大家充分理解AXI是如何提高性能的。

1、如何評(píng)估性能?

性能中一個(gè)關(guān)鍵的指標(biāo)就是延遲,什么是延遲(Latency)呢?

比如有個(gè)人,叫做小明,在上大學(xué)需要用錢,因此給父親寄信。父親收到信以后將錢寄給小明同學(xué)。整個(gè)過程一共花費(fèi)了2+3=5days。這就是整個(gè)寄信加寄錢所花費(fèi)的延遲。

我們假設(shè)每次寄錢只能夠寄兩萬,由此我們又可以引出帶寬(Bandwidth)的概念。所謂的帶寬即單位時(shí)間可以傳輸?shù)臄?shù)據(jù)量多少。在上述的例子中BW=2W/5days = 0.4W/day。

如果按照這樣的一個(gè)帶寬速度,寄100萬需要多久呢?我們用數(shù)據(jù)量除以帶寬:100W/(0.4W/day)=250days!

如何讓寄100萬更快呢?一種很直接的方法,就是在收到錢之前,狂發(fā)信。父親每收到一封就把錢寄回去。理論上這樣只需要5天多一點(diǎn),就可以寄100W!

2、Outstanding對(duì)性能的影響

有了上面的例子,大家已經(jīng)知道了什么是延遲和帶寬了。由此我們接著往下講。在之前的文章已經(jīng)講過,AXI提高傳輸速度主要有三板斧,以下排名分先后順序:

Outstanding

Out-of-orde(ooo)

Interleave

最直截了當(dāng)提高總線性能的方法是什么呢?首先就是提高頻率,再一個(gè)就是提高數(shù)據(jù)位寬。這兩種方式對(duì)所有的總線實(shí)際上都是成立的,但由于過于簡(jiǎn)單粗暴,一般不能作為某個(gè)總線的優(yōu)勢(shì)或者賣點(diǎn)所在。

因此我們重點(diǎn)講一下AXI的三板斧,首先是Outstanding。所謂的Outstanding就是在任務(wù)完成之前就可以下達(dá)新的任務(wù),即“在路上”。Outstanding是上面三種方法中,提高總線性能最有效最簡(jiǎn)單的方法!

我們看一下Outstanding的延遲怎么算。下圖顯然是不支持Outstanding的例子,可以看到AR發(fā)出以后,需要15個(gè)Cycle準(zhǔn)備數(shù)據(jù),又需要5個(gè)Cycle傳回?cái)?shù)據(jù)。因此總共需要20個(gè)Cycle。

這個(gè)例子中絕對(duì)延遲和平均延遲都是20s。

這個(gè)例子中帶寬BW=30B/60s=0.5Bps,然而最大的瞬時(shí)帶寬是2Bps。

有75%的時(shí)間都因?yàn)镸aster和Slave之間的巨大延遲而浪費(fèi)掉了!

9ce2ff6e-d06f-11ee-a297-92fbcf53809c.jpg

我們?cè)倏匆幌翺utstanding做到3的時(shí)候是怎樣的結(jié)果,下圖這個(gè)例子中,絕對(duì)延遲依然是20s。但是平均延遲變?yōu)榱?0s/3=10s。相應(yīng)的帶寬也變成了1Bps。

9cf33d52-d06f-11ee-a297-92fbcf53809c.jpg

上面那個(gè)例子中,是過了5s再發(fā)出下一個(gè)Outstanding命令,實(shí)際上一般不會(huì)考慮這么多。當(dāng)還沒有發(fā)滿的時(shí)候,就接著發(fā)。我們看下面這個(gè)例子:

絕對(duì)延遲分別是20/24/28s。由此可以看到Outstanding有可能還會(huì)使絕對(duì)延遲變長(zhǎng)(當(dāng)然B、C也可以向流水線一樣和A緊貼著,這個(gè)取決于具體設(shè)計(jì)。當(dāng)需要維持住5個(gè)Cycle的時(shí)候,那自然就需要等待了)

平均延遲是50/6=8.33s。

BW=60B/50s=1.2Bps

也可以用平均延遲算,BW=10B/8.33=1.2Bps

9cf6a0a0-d06f-11ee-a297-92fbcf53809c.jpg

上面那個(gè)例子中,R這個(gè)信道實(shí)際上也是沒有占滿的,當(dāng)Outstanding為4的時(shí)候呢?可以看看下圖這個(gè)例子:

絕對(duì)延遲分別是20/24/28/32s

平均延遲是55s/8=6.875s,極限是lim?→∞(15+??5)/?=5?

BW=80B/55s=1.45Bps,極限是lim?→∞(10??)/(15+??5)=2???

可以看到理論極限就是5s,這個(gè)時(shí)間對(duì)應(yīng)于真正需要傳輸數(shù)據(jù)或者是維持住某個(gè)數(shù)據(jù)不變的時(shí)間。極限的帶寬實(shí)際上就是10/5=2Bps

9d081948-d06f-11ee-a297-92fbcf53809c.jpg

我們?cè)賮硭伎家粋€(gè)問題:Outstanding數(shù)量越多越好嗎?

答案當(dāng)然是否定的,更多的Outstanding意味著更多的硬件資源開銷,比如就需要很多的Buffer去存儲(chǔ)已經(jīng)發(fā)送的CMD。但通過上面的例子我們可以看出,當(dāng)Outstanding再增加,其性能也已經(jīng)飽和了,不會(huì)再增加。因此選擇一個(gè)合適的Outstanding數(shù)量,基于此進(jìn)行設(shè)計(jì)很重要。

既然Outstanding不是越大越好,那我們?cè)趺慈ス烙?jì)Outstanding數(shù)量呢?

我們考慮一個(gè)非常簡(jiǎn)單的例子:

假設(shè)始終頻率是500MHz,相應(yīng)的周期是2ns

假設(shè)AXI cmd是基于burst-8傳輸?shù)摹<磳?duì)于一個(gè)cmd,至少需要8個(gè)cycle傳輸相應(yīng)的數(shù)據(jù)。

第一筆數(shù)據(jù)返回的時(shí)候,需要200ns

由此可以估算Outstanding的數(shù)量為200/(2ns*8),可以設(shè)置為8或者16(一般是用2的冪次方)。實(shí)際中會(huì)比這個(gè)例子復(fù)雜的多,該例子只是幫助大家梳理一下基本思路。

我們?cè)倏匆幌翺utstang的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):提高帶寬,減少平均延遲

缺點(diǎn):可能會(huì)增加絕對(duì)延遲,一定會(huì)增加面積(需要Buffer存CMD,如果沒有亂序,這個(gè)時(shí)候額外的面積其實(shí)還不太多,如果要支持亂序,那額外的面積開銷就大了,因?yàn)檫€要存DATA)

此外,Outstanding是ooo和Interleave的基礎(chǔ),沒有Outstanding,后面二者是無從談起的。

3、Out of Order對(duì)性能的影響

講完了Outstanding,我們來看一下亂序。在上面的例子中,大家可能會(huì)覺得:咦?不是R信道已經(jīng)占滿了嗎?難道還可以提速嗎?為什么還需要亂序?

因?yàn)樵谏厦娴睦又校覀兪羌俣ǜ鱾€(gè)模塊準(zhǔn)備數(shù)據(jù)的延遲是一樣久的。但是在下面這個(gè)例子中,可以看到B需要更多的周期去準(zhǔn)備相應(yīng)的數(shù)據(jù),又浪費(fèi)了Cycle!假如B的數(shù)據(jù)是來自DDR的,此時(shí)還用這種方式且不支持亂序,那就非常Naive了,可能百分之九十多的周期都被浪費(fèi)了。

9d1810b4-d06f-11ee-a297-92fbcf53809c.jpg

這種情況下,我們就要使出第二板斧,亂序。可以看到下圖這個(gè)例子,我們可以讓快速的Slave先傳,然后再傳慢的Buffer。

9d227cd4-d06f-11ee-a297-92fbcf53809c.jpg

如果要做Out of Order。那么Master端就需要一個(gè)非常大的Buffer了。以上圖例子中,就需要40Byte的Buffer了。因?yàn)樽畈畹那闆r,數(shù)據(jù)ABCD是倒著回給你的,但是你還是得按照順序用,那只能用額外的Buffer存儲(chǔ)了。因此如果不是某個(gè)Slave一定會(huì)亂序,且對(duì)性能影響很大,一般做Master是不建議支持Out of Order的。

4、Interleave對(duì)性能的影響

Interleave就是交織,在AXI中的Interleave,按照我的理解就是更加細(xì)粒度的亂序。

我們考慮這樣的例子,每次CMD需要4次Transfer。我們假設(shè)Slave準(zhǔn)備數(shù)據(jù)很慢,每次只能準(zhǔn)備2次Transfer的數(shù)據(jù),如下圖所示??梢钥吹剑钟蠧ycle浪費(fèi)了(可以看到這個(gè)例子中,是Out of Order的,但是同樣有周期的浪費(fèi))。

9d272d2e-d06f-11ee-a297-92fbcf53809c.jpg

當(dāng)允許交織以后,如下圖所示:可以看到每個(gè)周期都充分利用上了,非常的棒啊。這樣性能會(huì)更加好。但是Interleave顯然,比Out of Order更麻煩。它消耗的面積和亂序?qū)嶋H上是差不多的,但是控制邏輯復(fù)雜的多。正因?yàn)槿绱?,AXI4已經(jīng)移除了寫交織,僅保留讀交織。

實(shí)際上很多Master壓根不支持讀交織,大家設(shè)計(jì)模塊的時(shí)候,還是要根據(jù)實(shí)際需求,確定是否需要支持這些功能。畢竟一旦支持這些功能,一個(gè)簡(jiǎn)單的DMA Master的代碼都奔著上千行去了,還非常容易出錯(cuò)。(筆者當(dāng)時(shí)就做了一個(gè)可以亂序和讀交織的DMA,僅僅和驗(yàn)證配合調(diào)試都花了兩個(gè)多月)。

9d357820-d06f-11ee-a297-92fbcf53809c.jpg

5、其它提高AXI性能的辦法

這里主要講兩點(diǎn):

QoS

數(shù)據(jù)/傳輸?shù)闹囟x,優(yōu)化

5.1、QoS

QoS實(shí)際上是計(jì)算機(jī)網(wǎng)絡(luò)的概念,QoS(Quality of Service)即服務(wù)質(zhì)量。在有限的帶寬資源下,QoS為各種業(yè)務(wù)分配帶寬,為業(yè)務(wù)提供端到端的服務(wù)質(zhì)量保證。例如,語音、視頻和重要的數(shù)據(jù)應(yīng)用在網(wǎng)絡(luò)設(shè)備中可以通過配置QoS優(yōu)先得到服務(wù)。

ARM基于此概念,在AXI4新增QoS相關(guān)的信號(hào),為AxQOS,共4bit,其定義了每次傳輸?shù)膬?yōu)先級(jí)。我們一般認(rèn)為0xF代表最高的優(yōu)先級(jí),0x0代表最低的優(yōu)先級(jí)。QoS一般有如下的作用:

QoS可以用來解決訪問沖突問題,當(dāng)同時(shí)訪問先仲裁得到優(yōu)先級(jí)高的;

Slave可以根據(jù)QoS來reorder或者優(yōu)先考慮先回應(yīng)哪筆傳輸;

下圖是一個(gè)典型的復(fù)雜系統(tǒng),這種系統(tǒng)就需要QoS來確定,到底哪個(gè)Master可以優(yōu)先獲得總線訪問機(jī)制,因此就需要設(shè)計(jì)復(fù)雜的QoS控制系統(tǒng),此系統(tǒng)一般是可以通過軟件實(shí)時(shí)的去改配。

9d405e98-d06f-11ee-a297-92fbcf53809c.jpg

我們?cè)偎伎家幌拢琎oS主要是優(yōu)化延遲還是帶寬呢?

AXI的QoS主要是為了解決延遲問題。通過此值,可以更好的仲裁,以避免延遲大的阻塞住整個(gè)總線,而嚴(yán)重影響其它模塊的訪問延遲。當(dāng)然它一定程度上也會(huì)影響到帶寬。

AXI的QoS實(shí)際上我沒參與設(shè)計(jì)過,這里就不展開講具體設(shè)計(jì)了,以避免誤導(dǎo)大家。

9d5aff32-d06f-11ee-a297-92fbcf53809c.jpg

5.2、Data/Transfer

上面我們講的這些AXI的優(yōu)化策略,其實(shí)ARM的初衷,主要是為了DDR設(shè)計(jì)的。因?yàn)榇蟛糠諷lave和Master之間都是緊耦合的,根本就不需要Out of Order和Interleave。那么如何針對(duì)DDR的讀寫去優(yōu)化呢?簡(jiǎn)單來講就是你的CMD和DATA要更加符合DDR的胃口。

地址對(duì)齊;

增加Burst Length;Burst Combine;

避免Partial Write。即WSTRB有1有0。因?yàn)楹芏郉DR是不支持此功能的,你要讀回去再寫,非常耗時(shí);

Read/Write Group。即不要寫一個(gè)讀一個(gè),最好是寫一組讀一組;

避免Locked/Exclusive access;(Locked就不說了,Exclusive是一讀一寫,對(duì)DDR非常不友好)

6、AHB vs AXI

最后我們總結(jié)一下AXI和AHB的區(qū)別,再回顧一下AXI的優(yōu)勢(shì)所在。

如下圖所示,是AHB和AXI的讀例子:

盡管AHB也可以突發(fā)傳輸,但是它每一次都是需要更新相應(yīng)的地址,而AXI只需要給一次地址即可。后續(xù)的數(shù)據(jù)可以讓Slave自己根據(jù)首地址不停地去算。

此外AXI支持亂序,如果針對(duì)地址A1的transaction沒能及時(shí)響應(yīng),沒關(guān)系,可以先回地址A2和A3的數(shù)據(jù)。減少了可能存在的周期浪費(fèi)。

此外AXI讀還支持Interleave,即更加細(xì)粒度的亂序??梢钥吹结槍?duì)地址A3的回?cái)?shù)據(jù),可能回了一筆突然回不了了,沒關(guān)系,可以馬上回地址A1的數(shù)據(jù),再回地址A3的數(shù)據(jù)。

9d69483a-d06f-11ee-a297-92fbcf53809c.jpg




審核編輯:劉清

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

    關(guān)注

    41

    文章

    6511

    瀏覽量

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

    關(guān)注

    11

    文章

    705

    瀏覽量

    65170
  • QoS
    QoS
    +關(guān)注

    關(guān)注

    1

    文章

    136

    瀏覽量

    44731
  • AMBA總線
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    9524
  • AHB
    AHB
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    9755

原文標(biāo)題:深入理解AMBA總線之AXI是如何提高性能的

文章出處:【微信號(hào):Rocker-IC,微信公眾號(hào):路科驗(yàn)證】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AMBA_AXI總線詳解

    AMBA_AXI總線詳解
    發(fā)表于 04-18 11:48

    AXI、AHB與APB的性能有什么不同?

    什么是AMBA?AMBA分為哪幾種?AXI、AHB與APB的性能有什么不同?AHB總線是如何組成的?APB
    發(fā)表于 06-18 06:55

    學(xué)習(xí)架構(gòu)-AMBA AXI簡(jiǎn)介

    本指南介紹了高級(jí)微控制器總線體系結(jié)構(gòu)(AMBAAXI的主要功能。 該指南解釋了幫助您實(shí)現(xiàn)AXI協(xié)議的關(guān)鍵概念和細(xì)節(jié)。 在本指南中,我們介紹: ?A
    發(fā)表于 08-09 07:37

    PrimeCell高性能矩陣(PL301)技術(shù)概述

    HPM是一個(gè)高度可配置的自動(dòng)生成的AMBA 3總線子系統(tǒng),基于稱為AXI總線矩陣的高性能AXI
    發(fā)表于 08-22 06:22

    AMBA3.0 AXI總線接口協(xié)議的研究與應(yīng)用

    本文介紹了AMBA3.0AXI的結(jié)構(gòu)和特點(diǎn),分析了新的AMBA3.0AXI協(xié)議相對(duì)于AMBA2.0的優(yōu)點(diǎn)。它將革新未來高性能SOC總線互連技
    發(fā)表于 09-20 08:30

    AMBA AXI總線學(xué)習(xí)筆記

    AMBA AXI 總線學(xué)習(xí)筆記,非常詳細(xì)的AXI總線操作說明
    發(fā)表于 11-11 16:49 ?11次下載

    AMBA總線AHB、APB、AXI性能對(duì)比分析及AHB詳解

    高性能總線 ASB (Advanced System Bus) 高級(jí)系統(tǒng)總線 APB (Advanced Peripheral Bus) 高級(jí)外圍總線
    發(fā)表于 11-15 12:26 ?3.2w次閱讀

    AMBA總線概述(二)

    高性能地址映射通信的需求,允許最大256輪的數(shù)據(jù)突發(fā)傳輸; AXI4-Lite:是一個(gè)簡(jiǎn)單地吞吐量地址映射性通信總線,是一個(gè)輕量級(jí)的地址映射單次傳輸接口,占用很少的邏輯單元; AXI
    發(fā)表于 10-02 07:09 ?1060次閱讀

    一文看懂AMBA AXI協(xié)議

    AMBA AXI 協(xié)議以高性能,高頻系統(tǒng)設(shè)計(jì)為目標(biāo),提供了很多適合高速亞微型系統(tǒng) 互連的特征。
    發(fā)表于 03-28 09:47 ?23次下載
    一文看懂<b class='flag-5'>AMBA</b> <b class='flag-5'>AXI</b>協(xié)議

    AMBA3.0 AXI總線接口協(xié)議的研究與應(yīng)用

    本文介紹了AMBA3。0AXI的結(jié)構(gòu)和特點(diǎn),分析了新的AMBA3。0AXI協(xié)議相對(duì)于AMBA2。0的優(yōu)點(diǎn)。它將革新未來
    發(fā)表于 03-29 09:46 ?8次下載
    <b class='flag-5'>AMBA</b>3.0 <b class='flag-5'>AXI</b><b class='flag-5'>總線</b>接口協(xié)議的研究與應(yīng)用

    AMBA 3.0 AXI總線接口協(xié)議的研究與應(yīng)用

    本文介紹了AMBA 3.0 AXI的結(jié)構(gòu)和特點(diǎn),分析了新的AMBA 3.0 AXI協(xié)議相對(duì)于AMBA 2. 0的優(yōu)點(diǎn)。它將革新未來
    發(fā)表于 04-12 15:47 ?28次下載

    基于AMBA總線介紹?

    3.0:增加了AXI協(xié)議(了解);AMBA4.0:ACE協(xié)議(了解) 本文主要介紹AMBA2.0 (Advanced Microcontroller Bus Architecture,先進(jìn)微控制
    的頭像 發(fā)表于 05-19 14:22 ?2066次閱讀
    基于<b class='flag-5'>AMBA</b><b class='flag-5'>總線</b>介紹?

    介紹AMBA2.0總線

    3.0:增加了AXI協(xié)議(了解);AMBA4.0:ACE協(xié)議(了解) 本文主要介紹AMBA2.0 (Advanced Microcontroller Bus Architecture,先進(jìn)微控制
    的頭像 發(fā)表于 09-06 09:53 ?3092次閱讀
    介紹<b class='flag-5'>AMBA</b>2.0<b class='flag-5'>總線</b>

    AXI總線協(xié)議簡(jiǎn)介

      AXI (高性能擴(kuò)展總線接口,Advanced eXtensible Interface)是ARM AMBA 單片機(jī)總線系列中的一個(gè)協(xié)議
    發(fā)表于 10-10 09:22 ?9911次閱讀

    快速了解最新的AMBA AXI5協(xié)議功能

    Arm? AMBA? 5 AXI 協(xié)議規(guī)范支持高性能、高頻系統(tǒng)設(shè)計(jì),用于管理器和從屬組件之間的通信。AMBA AXI5 協(xié)議擴(kuò)展了前幾代規(guī)范
    的頭像 發(fā)表于 05-25 16:01 ?2608次閱讀