亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

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

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

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

AMBA總線之AXI設(shè)計(jì)的關(guān)鍵問(wèn)題講解

路科驗(yàn)證 ? 來(lái)源:芯時(shí)代青年 ? 2024-02-20 17:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、設(shè)計(jì)AXI接口IP的考慮

1.1、AXI Feature回顧

首先我們看一下針對(duì)AXI接口的IP設(shè)計(jì),在介紹之前我們先回顧一下AXI所具有的一些feature。

d762e196-cfc9-11ee-a297-92fbcf53809c.jpg

首先是Cache相關(guān)的問(wèn)題,Cache是提高系統(tǒng)Performance的一種很好的方式,AXI通過(guò)AxCache信號(hào)來(lái)決定是否可以訪問(wèn)Cache,是否可以分配Cache。

然后是原子操作,原子操作我專門花了一篇文章進(jìn)行講解,大家使用的時(shí)候盡量只使用Exclusive Access,Locked Access會(huì)阻塞總線,導(dǎo)致帶寬無(wú)法充分利用,對(duì)系統(tǒng)性能影響較大。其實(shí)諸如此類的設(shè)計(jì),對(duì)性能及吞吐量敏感的地方都應(yīng)該避免使用,我們稱為阻塞性xxx。為了支持Exclusive Access,我們自然需要Exclusive Monitor,來(lái)滿足協(xié)議的要求,如何進(jìn)行設(shè)計(jì)之前的文章也有提及,不再細(xì)說(shuō)。

然后我們看一下AXI是如何提高性能的,這也是面試比較喜歡問(wèn)的。如上面的圖所示,主要有三種方式,我稱之為提高AXI性能的三板斧,排名分先后。

Outstanding對(duì)性能影響最顯著,尤其是主從之間通訊需要多拍的時(shí)候,它充分利用了這段時(shí)間發(fā)起別的傳輸。其實(shí)就是通過(guò)這些操作去掩蓋原本的訪存延時(shí)。

然后是亂序(Out of Order),這個(gè)提高性能主要體現(xiàn)在Slave無(wú)法及時(shí)響應(yīng),就可以讓后發(fā)起的請(qǐng)求先完成。就比如你去超市買菜,你前面的人剛好手機(jī)沒(méi)電了,你是等他充好電還是先讓你付款?

最后是Interleave,即交織讀寫,這個(gè)其實(shí)就是在空閑的Cycle中(氣泡Cycle)插入讀寫事務(wù),其實(shí)有點(diǎn)像亂序,可以理解成更加細(xì)粒度的亂序。當(dāng)然粒度這么細(xì),導(dǎo)致設(shè)計(jì)很復(fù)雜,所以在AXI4中寫交織就被移除了

d772fb3a-cfc9-11ee-a297-92fbcf53809c.jpg

最后是Memory Type的不同,基于Memory類型的不同,可以決定你的讀寫是否可以Bufferable或者Cacheable。比如某些外設(shè)寄存器,你寫完是希望直接改變系統(tǒng)當(dāng)前的運(yùn)行狀態(tài)的,希望即刻生效,這種當(dāng)然幾不可以Cacheable也不可以Bufferable。而有些外設(shè)寄存器,比如寫Flash Controller的寄存器,你寫完以后,稍微延遲一些Cycle或者有亂序是可以接受的,這種情況就可以Bufferable。

d777214c-cfc9-11ee-a297-92fbcf53809c.jpg

1.2、Ordering consideration

首先我們看一下Write Channel和Read Channel之間的一個(gè)Order,AXI協(xié)議并沒(méi)有對(duì)它們之間的Order有一個(gè)約束,如果想要實(shí)現(xiàn)該機(jī)制,就應(yīng)該在之前的transaction收到最后的response以后才允許發(fā)起新的transaction。
你可以通過(guò)配置某個(gè)寄存器,來(lái)開(kāi)啟該功能。這個(gè)設(shè)計(jì)起來(lái)不是很復(fù)雜。如果你使用的是ARM或者X86或者主流的商用CPU,你可以使用memory barrier指令來(lái)確保這個(gè)順序。

d77b0816-cfc9-11ee-a297-92fbcf53809c.jpg

然后我們看一下對(duì)于Master而言,對(duì)于來(lái)自Slave的Response,是可以亂序的,通過(guò)ID來(lái)區(qū)分好就行。此外對(duì)于Read response而言,是可以Interleave的。讀交織如下圖所示。

而對(duì)于同一ID而言,即Master發(fā)出的同一AWID/ARID而言,相應(yīng)的數(shù)據(jù)必須是順序的,如果不是順序的,怎么知道哪個(gè)數(shù)據(jù)對(duì)應(yīng)于哪一個(gè)地址?

d787cd08-cfc9-11ee-a297-92fbcf53809c.jpg

我們看一下Slave的實(shí)現(xiàn),Slave想實(shí)現(xiàn)Order Model,比Master要復(fù)雜的多。我們想象一下這樣的一個(gè)例子,一個(gè)Master去訪問(wèn)一個(gè)Slave,而這個(gè)Slave有很多不同的Memory Type,比如既有訪問(wèn)較快的寄存器,也有相對(duì)慢一點(diǎn)的SRAM,甚至還有DDR/FLASH。比如你去寫一個(gè)DDR Controller,你去寫它的配置寄存器,很快,你去寫DDR,其實(shí)也要走這個(gè)DDR Controller,這樣一次訪問(wèn)就非常非常的慢。

但是,由于是同一個(gè)Master的訪問(wèn),其ID是相同的,相同ID要保序,那難不成每次寫DDR,都要等著數(shù)據(jù)回來(lái)?顯然非常的不合理,那么在其內(nèi)部就可以做一個(gè)轉(zhuǎn)換表,如下圖所示,來(lái)的時(shí)候是同樣的ID,但Slave可以將其轉(zhuǎn)換成不同的ID,這樣就可以O(shè)utstanding了,也可以亂序了,非常的Amazing啊。注意,Slave內(nèi)部是可以O(shè)ut of Order返回的,但你返回給Master還是得順序的。需要一塊額外的存儲(chǔ)空間來(lái)緩存這些需要返回的數(shù)據(jù)及相關(guān)信息,當(dāng)來(lái)了,你就返回給Master。

d78ba63a-cfc9-11ee-a297-92fbcf53809c.jpg

我們?cè)倏匆幌翸aster的實(shí)現(xiàn),當(dāng)Master有多個(gè)Engine,比如DMA。每個(gè)DMA發(fā)出的ID是不一樣的,當(dāng)發(fā)出多個(gè)Outstanding的請(qǐng)求,Slave也相應(yīng)的根據(jù)請(qǐng)求把數(shù)據(jù)拿回來(lái)了。相應(yīng)的準(zhǔn)備若干個(gè)Queue,當(dāng)ID為0的返回的時(shí)候送給Queue0,當(dāng)ID為0的最后一筆返回的時(shí)候即RLAST拉高的時(shí)候,做相應(yīng)的處理返回給發(fā)出請(qǐng)求的Engine。其實(shí)就是需要一定的緩沖機(jī)制,來(lái)避免接不到數(shù)據(jù)等情況。

Master需要數(shù)據(jù)queue來(lái)支持out of order;

Master需要buffer來(lái)支持outstading;

d79a8f88-cfc9-11ee-a297-92fbcf53809c.jpg

1.3、Debugging

大多數(shù)的時(shí)候,都認(rèn)為各自是遵循總線協(xié)議的,但還是需要一定的能力,來(lái)做Debugging,畢竟某些IP會(huì)不遵守協(xié)議,會(huì)出錯(cuò)。

使用counter來(lái)監(jiān)視發(fā)起了多少次傳輸事務(wù)(transaction),以Master那邊為例,當(dāng)發(fā)出一次outstading請(qǐng)求,相應(yīng)的counter+1,當(dāng)收到最后的response,counter-1。這樣系統(tǒng)掛死以后,發(fā)現(xiàn)某個(gè)Master的monitor記錄counter不為0,這樣就可以快速定位錯(cuò)誤;

axvalid&axready=1,cnt+1

對(duì)于寫,當(dāng)bvalid&bready=1,cnt-1

對(duì)于讀,當(dāng)rvalid&rready&rlast,cnt-1

還可以記錄transfer數(shù)量

還可以記錄更多的信息,如axlen、axid、axsize等;

使用timeout機(jī)制;

2、Interconnect拓?fù)浣Y(jié)構(gòu)

假設(shè)基于AXI的Master和Slave已經(jīng)設(shè)計(jì)好了,如何對(duì)它們進(jìn)行連接呢?當(dāng)多個(gè)Master和Slave進(jìn)行通信的時(shí)候,就需要Interconnect。

Interconnect的拓?fù)浣Y(jié)構(gòu)多種多樣,基于AXI的Interconnect一般采用Crossbar,如ARM-NIC400,這里我們也只講這種方式。

d7a84bf0-cfc9-11ee-a297-92fbcf53809c.jpg

我們看一下基于Crossbar的方式,首先是最簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)方式,這種情況比較少見(jiàn),比較典型的如ACP接口,Master需要直接訪問(wèn)Slave的cache(此時(shí)CPU作為Slave,并且是唯一的Slave),這種情況就可以點(diǎn)對(duì)點(diǎn),而不用走多對(duì)多的總線。

d7ac8936-cfc9-11ee-a297-92fbcf53809c.jpg

然后是一對(duì)多的情況,如下圖所示,這種情況也很常見(jiàn),比如一個(gè)CPU要去訪問(wèn)多個(gè)Slave外設(shè)。

d7b887b8-cfc9-11ee-a297-92fbcf53809c.jpg

然后是多個(gè)Master訪問(wèn)多個(gè)Slave,這種情況就需要引入仲裁邏輯了,相對(duì)的設(shè)計(jì)也會(huì)更加復(fù)雜,此時(shí)多個(gè)Master共享Interconnect,相應(yīng)的會(huì)影響到帶寬。

d7c33064-cfc9-11ee-a297-92fbcf53809c.jpg

然后我們看一下下面的例子,左邊是完全映射,即Master可以訪問(wèn)所有的Slave。右圖則是部分映射,可以看到一個(gè)Master只能訪問(wèn)指定的Slave。部分映射可以簡(jiǎn)化邏輯設(shè)計(jì),節(jié)約面積,讓能跑的主頻更高一點(diǎn)。實(shí)際上也不需要每個(gè)Master都能訪問(wèn)每個(gè)Slave。根據(jù)自己的需求來(lái)就行。

d7d4d576-cfc9-11ee-a297-92fbcf53809c.jpg

接下來(lái)我們看一下如果想設(shè)計(jì)一個(gè)好的互連,需要滿足以下的特點(diǎn):

支持多個(gè)Master和多個(gè)Slave

擴(kuò)展靈活,可復(fù)用性強(qiáng)

時(shí)序好,從Interconnect本身去解決timing violation的問(wèn)題

3、仲裁和時(shí)序收斂問(wèn)題

接下來(lái)我們看一下仲裁相關(guān)的問(wèn)題。仲裁本身是個(gè)很復(fù)雜的問(wèn)題,這里只簡(jiǎn)單介紹。當(dāng)多個(gè)Master需要訪問(wèn)同一個(gè)Slave的時(shí)候,這個(gè)時(shí)候就需要選擇其中的一個(gè)。這里講兩種仲裁機(jī)制,Least Recently Granted和Round Robin仲裁機(jī)制。

首先看一下Least Recently Granted仲裁:這個(gè)和Cache替換中的LRU差不多,我們一開(kāi)始會(huì)分好組,組和組之間是有固定優(yōu)先級(jí)區(qū)別的,高優(yōu)先級(jí)的總是會(huì)獲得仲裁。對(duì)于同一個(gè)組的而言,我們會(huì)讓最近沒(méi)有被授權(quán)的Master獲得仲裁權(quán),因此我們需要有一個(gè)寄存器去記錄歷史信息,也可以用狀態(tài)機(jī)實(shí)現(xiàn)。

d7e2fc00-cfc9-11ee-a297-92fbcf53809c.jpg

然后是Round Robin仲裁機(jī)制,這種仲裁機(jī)制下所有的Master的優(yōu)先級(jí)都是相同的,采用輪詢的方式進(jìn)行仲裁,相應(yīng)的也要進(jìn)行記錄歷史信息,以決定如何獲得仲裁。如下圖所示,我們甚至可以用移位寄存器實(shí)現(xiàn),下圖是帶Weight的Round Robin,可以看到M1占據(jù)了2個(gè)SLOT。因此使用頻率是其它Master的兩倍。

d7f5e23e-cfc9-11ee-a297-92fbcf53809c.jpg

我們?cè)倏匆幌聲r(shí)序如何收斂,因?yàn)锳XI本身采用握手機(jī)制,因此實(shí)際上非常靈活,晚了一個(gè)周期早了一個(gè)周期都無(wú)所謂,只要滿足基本的各通道間依賴關(guān)系即可。沒(méi)有AHB和APB那樣的硬性1T Cycle delay的要求。因此我們可以在critical path上插入寄存器,以優(yōu)化時(shí)序。

一般是有三種方式,打斷Valid,打斷Ready或者都打斷。在IC設(shè)計(jì)中,無(wú)論使用的是否是AXI總線,只要用Valid和Ready握手機(jī)制來(lái)傳遞數(shù)據(jù),都可以使用該方法讓時(shí)序收斂,不一定是局限于某個(gè)總線協(xié)議。大家完全可以將其用在模塊內(nèi)部和模塊與模塊間的流傳輸。

d80224d6-cfc9-11ee-a297-92fbcf53809c.jpg

上面這種機(jī)制用在總線上,一般稱之為Register Slice。先說(shuō)說(shuō)Slice的作用,在SoC中,如果Master和Slave的距離比較遠(yuǎn),那么它們之間的bus信號(hào)要滿足timing就可能有點(diǎn)困難,比如AXI中的 ARADDR、ARVALID這些信號(hào)從Master出來(lái),要去很遠(yuǎn)的Slave,那么中間就要加很多的buffer,這引入的buffer delay就可能導(dǎo)致我們希望的timing不滿足。這個(gè)時(shí)候就需要插入slice,給每個(gè)控制信號(hào)在中間加一級(jí)寄存器,把較長(zhǎng)的走線縮短。當(dāng)然插入的slice依然要保持bus的協(xié)議標(biāo)準(zhǔn)。簡(jiǎn)單來(lái)說(shuō),一個(gè)slice就是下面中間的那個(gè)模塊。

d8113886-cfc9-11ee-a297-92fbcf53809c.jpg

我們看一下在Register插入的位置,可以如下圖所示(其實(shí)有很多可以插入的位置)。一般AXI各個(gè)通道是分開(kāi)的,我們?cè)谀膫€(gè)通道加入register slice,相應(yīng)的就會(huì)晚了一拍,實(shí)際上晚了一拍完全不影響邏輯功能。

d8155786-cfc9-11ee-a297-92fbcf53809c.jpgd8264032-cfc9-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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5434

    瀏覽量

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

    關(guān)注

    11

    文章

    732

    瀏覽量

    66814
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    130

    瀏覽量

    29074
  • ACP
    ACP
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7972
  • AXI總線
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    14555

原文標(biāo)題:深入理解AMBA總線之AXI設(shè)計(jì)的關(guān)鍵問(wèn)題

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AMBA總線概述

    AMBA(Advanced Micro-Controller Bus Architecture,高級(jí)微控制器總線架構(gòu))是由ARM公司開(kāi)發(fā)的片上總線標(biāo)準(zhǔn)。主要包括APB(Advanced
    發(fā)表于 09-19 09:24 ?2829次閱讀
    <b class='flag-5'>AMBA</b><b class='flag-5'>總線</b>概述

    AMBA_AXI總線詳解

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

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

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

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

    本文介紹了AMBA3.0AXI的結(jié)構(gòu)和特點(diǎn),分析了新的AMBA3.0AXI協(xié)議相對(duì)于AMBA2.0的優(yōu)點(diǎn)。它將革新未來(lái)高性能SOC總線互連技術(shù),其特點(diǎn)使它更加適合未來(lái)的高性能、低延遲設(shè)
    發(fā)表于 09-20 08:30

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

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

    AMBA總線概述(二)

    AXI是ARM在1996年提出的微控制器總線家族AMBA中的一部分。AXI是高級(jí)擴(kuò)展接口,在AMBA3.0中提出,
    發(fā)表于 10-02 07:09 ?1294次閱讀

    AXI 總線交互分為 Master / Slave 兩端

    AMBA 系列 AXI 總線協(xié)議初探 中,了解到 AXI 總線交互分為 Master /
    的頭像 發(fā)表于 02-08 11:44 ?1.7w次閱讀

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

    本文介紹了AMBA3。0AXI的結(jié)構(gòu)和特點(diǎn),分析了新的AMBA3。0AXI協(xié)議相對(duì)于AMBA2。0的優(yōu)點(diǎn)。它將革新未來(lái)高性能SOC
    發(fā)表于 03-29 09:46 ?9次下載
    <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)。它將革新未來(lái)高性能SO
    發(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 ?2360次閱讀
    基于<b class='flag-5'>AMBA</b><b class='flag-5'>總線</b>介紹?

    深度解讀AMBA、AHB、APB、AXI總線介紹及對(duì)比

    設(shè)計(jì)是最關(guān)鍵的問(wèn)題。 因而,業(yè)界出現(xiàn)了很多片上總線標(biāo)準(zhǔn),AMBA是其中之一。 AMBA(Advanced Microcontroller Bus Architecture),是一種開(kāi)放
    的頭像 發(fā)表于 06-25 11:22 ?1.1w次閱讀

    AMBA總線知識(shí)AHB(上)

    AMBA總線陣營(yíng)的強(qiáng)大超乎多數(shù)人的想象。AMBA總線是一個(gè)在SoC領(lǐng)域使用的事實(shí)上的標(biāo)準(zhǔn)。AMBA總線
    的頭像 發(fā)表于 05-04 14:45 ?2827次閱讀
    <b class='flag-5'>AMBA</b><b class='flag-5'>總線</b>知識(shí)<b class='flag-5'>之</b>AHB(上)

    Xilinx FPGA AXI4總線(一)介紹【AXI4】【AXI4-Lite】【AXI-Stream】

    從 FPGA 應(yīng)用角度看看 AMBA 總線中的 AXI4 總線。
    發(fā)表于 06-21 15:21 ?2780次閱讀
    Xilinx FPGA <b class='flag-5'>AXI</b>4<b class='flag-5'>總線</b>(一)介紹【<b class='flag-5'>AXI</b>4】【<b class='flag-5'>AXI</b>4-Lite】【<b class='flag-5'>AXI</b>-Stream】

    漫談AMBA總線-AXI4協(xié)議的基本介紹

    本文主要集中在AMBA協(xié)議中的AXI4協(xié)議。之所以選擇AXI4作為講解,是因?yàn)檫@個(gè)協(xié)議在SoC、IC設(shè)計(jì)中應(yīng)用比較廣泛。
    發(fā)表于 01-17 12:21 ?3386次閱讀
    漫談<b class='flag-5'>AMBA</b><b class='flag-5'>總線</b>-<b class='flag-5'>AXI</b>4協(xié)議的基本介紹

    NVMe簡(jiǎn)介AXI總線

    NVMe需要用AXI總線進(jìn)行高速傳輸。而AXI總線是ARM公司提出的AMBA(Advanced Microcontroller Bus Ar
    的頭像 發(fā)表于 05-21 09:29 ?198次閱讀
    NVMe簡(jiǎn)介<b class='flag-5'>之</b><b class='flag-5'>AXI</b><b class='flag-5'>總線</b>