e203总线接口单元介绍

        开发人员在开发e203的过程中使用了自定义的总线协议ICB,ICB 总线的初衷是为了尽可能地结合 AXI 总线和 AHB 总线的优点,兼具高速性和易用性,它具有如下特性。

一、ICB总线的特性

1.相比 AXI 和 AHB 而言,ICB 的协议控制更加简单,仅有两个独立的通道。读和写操作共用地址通道,共用结果返回通道。

2. 与 AXI 总线一样,采用分离的地址和数据传输。

3.与 AXI 总线一样,采用地址区间寻址,支持任意的主从数目,譬如一主一从、一主多从、多主一从、多主多从等拓扑结构。

4.与 AHB 总线一样,每个读或者写操作都会在地址通道上产生地址,而非像 AXI 中只产生起始地址。

        ICB 总线主要包含 2 个通道,如图 12-1 所示。

        • 命令通道(Command Channel):主要用于主设备向从设备发起读写请求。

        • 返回通道(Response Channel):主要用于从设备向主设备返回读写结果。

        ICB 总线信号列表如表 12-1 所示

        

5.与 AXI 总线一样,支持地址非对齐的数据访问,使用字节掩码(Write Mask)来控制部分写操作。

6.与 AXI 总线一样,支持多个滞外交易(Multiple Outstanding Transaction)。

7.与 AHB 总线一样,不支持乱序返回乱序完成,反馈通道必须按顺序返回结果。

8.与 AXI 总线一样,非常易于添加流水线级数以获得高频的时序。

9.协议非常简单,易于桥接转换成其他总线类型,譬如 AXI、AHB、APB 或者 TileLink等总线。

二、ICB总线的硬件实现

        ICB总线有一主一从、一主多从、多主一从、多主多从几个不同的实现方式。

2.1  一主多从

        

        如图所示,可以有一个输入ICB,多个输出ICB,该模块的 输入总线命令通道有 1 个附属输入信号,用来指示该请求应该被分发到哪个输出 ICB 总线。该附属信号可以在顶层通过地址区间的比较判断生成所得。

• 根据附属信号中的指示信息,In 总线的命令通道被分发给 Out0、Out1 或者 Out2 输出 ICB 的命令通道。每个周期如果握手成功,则分发一个交易(Transaction),同时将“分发信息”压入 FIFO 中。

• 由于 ICB 支持多个滞外交易,Out0、Out1 或者 Out2 输出 ICB 通过反馈通道返回的结果可能需要多个周期才能返回,并且各自返回的时间点可能先后不一,因此需要被仲裁。此时可以从 FIFO 中按顺序弹出之前被压入的“分发信息”作为仲裁标准。该 FIFO 的深度决定了该模块能够支持的多个滞外交易的个数,同时由于 FIFO 先入先出的顺序性,能够保证输入 ICB 严格按照发出的顺序接收到相应的返回结果。

        e203中LSU单元就用到了这种方式,LSU通过判断访问地址的基地址来判断需要访问哪个存储单元(ITCM、DICM还是系统内存)。

2.2  多主一从

        

        该模块多个输入ICB的命令通道需要被仲裁,可以使用轮询的仲裁机制,也可以选择优先级选择的机制。以优先级选择机制为例,可以分配 In0 总线的优先级最高、In1 其次、In2 再次,通过优先级选择之后作为输出 ICB 的命令通道。每个周期如果握手成功,则仲裁发送一个交易,同时将“仲裁信息”压入 FIFO 中。

        由于输出 ICB 通过反馈通道返回的结果一定是按顺序返回的(ICB 协议规定),因此无需担心其顺序性。但是返回的结果需要判别,并分发给对应的输入 ICB 总线,此时可以从 FIFO 中按顺序弹出之前被压入的“仲裁信息”作为分发的依据。

        e203中的ITCM和DTCM就是用了这种拓扑,以ITCM为例:

        ITCM接受三个ICB输入,分别是IFU、LSU以及ITCM外部访问接口,三个输入会经过优先级仲裁后合并为一路,LSU具有最高优先级、ITCM外部访问接口次之,IFU最低。关于ITCM的更多细节可见E203存储器子系统——ITCM模块源码学习-CSDN博客

2.3  多主多从

        通过使用“一主多从”和“多主一从”模块的有效组合,便可以组装成为不同形式的“多主多从”模块。

       第一种简单的“多主多从”模块如图 12-12 所示。通过将“多主一从”和“一主多从”模块,直接对接,便可达到多主多从的效果。但是其缺陷是所有的主 ICB 总线均需要通过中间一条公用的 ICB 总线,吞吐率受限。

        第二种稍微复杂的“多主多从”模块如图 12-13 所示。通过使用多个“一主多从”和“多主一从”模块交织组装成为“多主多从”的交叉开关(Crossbar)结构。该结构使得每个接口和从接口之间均有专用的通道,但是其缺陷是面积开销很大,并且设计不当容易造成死锁。

三、BIU的架构

        BIU(总线管理单元)主要负责接受来自 IFU(Instruction Fetch Unit)和 LSU(Load Store Unit)单元的存储器访问请求,并且使用标准的 ICB 接口。然后通过判断其访问的地址区间来访问外部的不同接口,包括以下 5 种。

• 快速 IO 接口。

• 私有外设接口。

• 系统存储接口。

• CLINT 接口。CLINT:计时器和本地中断控制器

• PLIC 接口。PLIC:外部中断控制器

        BIU在e203架构中的位置如下:

        BIU的微架构如下:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值