0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Wishbone II交易总线:速度的另一个等级

星星科技指导员 来源:嵌入式计算设计 作者:Uros Platise 2022-11-14 15:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

OpenCore和Silicore的Wishbone规范,旨在提供标准的IP核互连方案,以满足现代片上系统(SoC)设计的要求,包括CPUDMA引擎,内存接口,外设接口等。

andEuros公司自成立以来一直使用Wishbone规范,并开发了Wishbone总线的改进版本,称为Wishbone II,以提出一种先进的流水线架构,其中读写事务是分开的,总线充当事务总线。通过这种方式,可以同时进行多个事务,通过采用新的每单元锁定概念,消除路径上的所有延迟并停止 RMW 周期。当然,最终的好处是最终总线吞吐量已增加到最大。

大规模FPGA/ASIC SoC设计的设计和开发迫使设计人员实现具有标准化模块接口的模块化架构,该接口以任何可能的配置连接各种IP模块。OpenCores发布了最流行的互连架构之一,称为Wishbone B.3总线。以类似的方式,Altera引入了自己的互连方案,称为Avalon Bus,SOPC Builder和Nios(II)系统就是围绕该方案制造的。Xilinx 还推出了自己的总线,称为片上外设总线与处理器本地总线 相结合。

这些互连架构是面向单事务主/从的,这意味着只要没有收到该字,从给定地址请求单词的 CPU 就会停止自身和到目标的路径(总线)。以这种方式丢失了大量总线周期,尽管系统总线频率相对较高,但实际数据吞吐量仍低于预期。即使特殊信号引入了快速突发读取和写入,总线周期仍然会丢失,直到接收到第一个字,代价是源和目标两端的突发逻辑加倍。当访问具有较大延迟的较慢模块时,总线停滞更为明显。在这些情况下,系统性能会显著下降;例如,100 MHz 系统的吞吐量可能会下降到每秒几 MB。

这就是为什么迫切需要开发采用新概念的总线架构的原因。引入了一些新信号来支持基于 Wishbone B.3 架构的新事务总线概念,克服了延迟问题,同时保持了向后兼容性。

叉骨II交易总线概念

在我们提议的总线中,交易由一个交易向量表示,其中包含:

源(模块)地址

目标(模块)地址

算子

数据

源地址和目标地址定义路径;操作员描述要沿路径和/或目标地址执行的一个或多个操作;某些操作需要提供补充数据才能完成交易。实际实现需要额外的握手信号。

事务向量被放置在事务总线上,将向量从源传输到目标,并根据向量的请求执行面向总线的操作。一旦事务向量被放置(发送),源就没有进一步的责任,事务总线将完全控制它。然后,源已准备好发出下一个事务向量。可以事先发出多个任务或请求,每个总线周期一个,这减少了目标模块上任何预测逻辑的需求,以支持突发读取或写入作为各种突发读取的预测逻辑。

有两种类型的事务:

独立

依赖(当它们的顺序很重要时)

为了支持依赖事务,事务总线绝不能更改已放置事务的顺序。事务总线具有完全确认的机制,用于接受新的事务向量、执行内部转发并传递到目标模块。透明架构将自身反映为一个简单的输入输出黑匣子;但是,该实现基于多管道结构,其中每个 (FIFO) 行包含一个事务向量。

Wishbone II 事务总线仅提供四种基本操作:

单次读取

单次写入

细胞锁

总线锁

单次读取和写入由模块发出,其中单元和总线锁定操作位于事务总线域中。突发读取和突发写入是通过发出读取或写入事务流来完成的。RMW周期通过总线得到支持,甚至更好的是,可以使用新的单元锁定概念来促进它们,该概念不会使整个SoC总线停滞,而是将单个或多个存储单元锁定到给定的所有者。只要未解锁,其他人就无法访问这些单元格。

叉骨II信号

Wishbone II 事务向量由 Wishbone B.3 规范组成,引入了以下新信号:

WB_ACW写入确认

WB_ACR阅读致谢

WB_TGA双向地址标签

WB_ALK地址锁

在进一步的文本中,前缀WB可以更改为WBM表示主接口,WBS表示从接口,也可以留空以描述任何主接口或从接口。输入信号附加在末尾_I,输出信号带有_O。建议的总线丢弃了Wishbone B.3 ACK信号,因为它的功能现在在ACR和ACW信号之间分配。表1列出了主机和从站的完整基本信号说明。新信号以粗体标记。

叉骨二期巴士交易

写入事务

写入事务几乎与 Wishbone B.3 规范中给出的写入事务相同,除了 Wishbone II 使用 ACW 信号来确认写入周期。读写事务由与写入事务相同的读取请求组成,只是设置了目标操作信号 WE。

读取事务

读取事务由两个事务组成:

源发出的读取请求事务

目标发出的读取响应事务

读取请求由表示源的主模块发送,方法是首先发出一个写入事务,并将目标操作 WE 设置为读取。主机应设置地址标记写入向量以识别读取响应。(如果只有一个主控形状,则不需要这样做。读取请求事务的确认方式与写入事务相同。

目标通过返回由确认信号 ACR 标记的单独读取响应事务并提供有效数据和地址标记读取信息来完成事务。地址标记读取是地址标记写入的副本。

图1显示了一个示例系统,在源(主)和目标(从)设备之间的写入(输入)和读取(输出)路径上有一个流水线级。该系统在两个方向上都有 1 个循环方向;因此,请求-响应循环至少需要 2 个等待周期。从属(内存)还可以执行一些内部管理,如刷新,这增加了等待状态的总数。

图1

21

您可以看到,图 2 描述了给定示例的事务总线数据流图,其中主站放置的三个读取请求事务为 AD0、AD1 和 AD2,以及关联的返回读取响应事务为 DO0、DO1 和 DO2。假设所有三个事务的信号 WE 都被清除,以指示读取操作。事务 AD0 和 AD1 是突发事务,这意味着 AD1 = AD0 + 1,而 AD2 是同时触发的独立事务,可能是加载其中断向量的外部中断的原因,依此类推。

图2

22

每个读取请求事务由 ACW 信号确认,返回的读取响应事务由 ACR 信号标记(确认)。请注意,由于其他更高优先级的主节点或内存刷新函数等原因,延迟顺序可能不同。在前面的示例中,AD0 会立即得到确认,但需要 3 个等待周期才能返回 DO0;AD1 在 1 个周期后得到确认,而 DO1 仅在 2 个等待周期内返回,DO2 再次需要 3 个等待周期。所有三笔交易都在 9 个周期内完成;理论上,如果不添加两个说明性等待周期,它们只会在 7 个周期内完成。使用 Wishbone B.3 规范时,图 3 显示了相同的场景。

图3

23

AD0和AD1再次为突发,AD1 = AD0 + 1,AD2为独立请求。所有三个事务都在 12 个周期内完成,性能降低了 41%(在 Wishbone II 中至少 7 个周期),即使额外的硅成本,这是源和目标两端的内存突发逻辑实现。

想象一下,当系统中共存多个主站以发出第一个单词时,连续突发 Wishbone II 将在从属端执行 0 个等待周期(完全消除延迟)并且绝对没有损失(再次是 0 个等待周期)。对于以 150 MHz 运行的系统来说,更能说明问题,固定延迟为 2 个周期的长突发将产生 150 M 字的 Wishbone II 带宽,而 Wishbone B.3 仅产生 50 Mwords 的带宽。

读写周期和专用总线/地址锁定

可以使用总线 LOCK 信号进行读-修改-写循环,方法是发出读取请求和 LOCK 信号集,等待读取响应,然后进行写入,最后释放 LOCK。为了不使整个总线失速,Wishbone II 引入了使用 ALK 信号的每单元内存锁定功能,该功能的使用方式与 Wishbone LOCK 信号几乎相同,只是它不会停止整个总线,而是授予对由源 TGA 区分的给定模块的独占权限。

叉骨II驶向未来

Wishbone II 总线为 FPGA 和 ASIC 的 SoC 设计提出了一种面向事务总线的高级架构,其中架构写入和读取操作作为单独的写入和读取事务处理。每个事务都存储在一行中,多管道架构充当 FIFO 缓冲区,从多个源模块和目标模块传输多个事务。先进的锁定机制使用临时的每单元锁定机制,防止整个总线因 RMW 周期而失速。通过这种方式,整体设计数据吞吐量提高到最大,同时设计成功集成了慢速和高速、低延迟和高延迟外设和 CPU。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9446

    浏览量

    156145
  • soc
    soc
    +关注

    关注

    38

    文章

    4514

    浏览量

    227631
  • 总线
    +关注

    关注

    10

    文章

    3014

    浏览量

    91307
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    e203接口ICB转wishbone,怎么操作?

    我在用e203搭mcu,用wishbone总线实现mcu,看到e203有ICB转wishbone模块,但是8位的又和I2C总线有关,不太明白,我要的是32位的,应该怎么改,这部分转换能
    发表于 11-10 07:15

    液晶屏 智能显示模块有多个画面时怎么切换到另一个画面?

    请问 液晶屏智能显示模块有多个画面时怎么切换到另一个画面?
    发表于 10-25 10:46

    配电柜IP等级测试

    、什么是IP等级?IP等级(防护等级)是国际标准化组织(ISO)对电子设备防护性能的种评估方式,旨在显示设备对外界物质(如固体物体和液体
    的头像 发表于 10-17 11:37 234次阅读
    配电柜IP<b class='flag-5'>等级</b>测试

    在PSoC™ 41xx 系列的代码执行期间是否可以将运算放大器重新分配给另一个引脚?

    您能否确认在PSoC™ 41xx 系列的代码执行期间是否可以将运算放大器重新分配给另一个引脚? 目标是让设备配备 2 运算放大器来测量和放大 2
    发表于 08-15 07:05

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder
    的头像 发表于 08-08 20:16 3064次阅读
    如何用Arduino Nano/UNO R3开发板给<b class='flag-5'>另一个</b>Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    CYUSB FX3如何使用GPIF II

    我目前正在阅读手册并检查如何使用 CYUSB FX3。 我有关于如何使用 GPIF II 的问题。 我想配置16位数据总线、16位地址总线
    发表于 05-13 07:56

    使用8位数据总线时,FX3的GPIF II DQ[15:8]状态如何?

    我使用CYUSB 3013 -BZXC FX3 设备(16 位 GPIF II 数据总线版本)从 ADC 采集数据。ADC 为 10 位,但通常 8 位就足够了,因此我制作了两不同的状态机,分别
    发表于 05-09 06:44

    请问canmv-k230支持双核吗?如何调用另一个核心工作?

    系统使用的是Canmv-K230-micropython-V1.2.2版本. K230是双核芯片,在使用canmv-k230上没找到关于另一个核心的调用方法。 请问如何调用另一个核心工作? 你好
    发表于 04-23 06:35

    高速 PCB 设计如何保证信号完整性?看这文,7技巧总结,秒懂

    转变,电压必须是从低电平转换到高电平,虽然速度很快,但也会通过这中间的所有电压。在转换器期间的某个时间点,它是1.8V,而在另一个时间点是2.5V。电压从低状态转变到高状态的速度称为转换速率。 2
    发表于 03-28 13:39

    不同频率晶振靠的近会怎样

    晶振的振荡本质上是种机械振动(在压电晶体层面)。当两晶振靠得很近时,它们的机械振动可能会相互影响。晶振的振动可能会通过电路板或者外壳等介质传递给
    的头像 发表于 01-20 13:55 2019次阅读
    两<b class='flag-5'>个</b>不同频率晶振靠的近会怎样

    I2C总线数据传输速度要求

    时钟频率,是衡量数据传输速率的关键参数。I2C总线有多种不同的速度模式,以下是些常见的速度等级: 标准模式(Standard Mode)
    的头像 发表于 01-17 15:15 3596次阅读

    EE-82:使用ADSP-2181 DSP的IO空间对另一个ADSP-2181进行IDMA引导

    电子发烧友网站提供《EE-82:使用ADSP-2181 DSP的IO空间对另一个ADSP-2181进行IDMA引导.pdf》资料免费下载
    发表于 01-14 16:21 0次下载
    EE-82:使用ADSP-2181 DSP的IO空间对<b class='flag-5'>另一个</b>ADSP-2181进行IDMA引导

    ADS8344E通道间数据,当通道的电压变化时,另一个通道的电压也会发生相应的变化,为什么?

    。当两通道均接固定的电压输入时(如干电池),系统运行良好,两通道的误差均在合理的范围内。但当通道的电压变化时,另一个通道的电压也会发
    发表于 01-08 08:21

    ADS1256从通道到另一个通道的切换时间是多少?

    各位工程师,你们好。我想问ADS1256从通道到另一个通道的切换时间是多少?急,谢谢
    发表于 01-06 08:08

    总线通信的传输速度与稳定性

    在现代计算机系统中,总线(Bus)扮演着至关重要的角色,它是连接中央处理器(CPU)、内存、输入/输出设备等组件的桥梁。总线的传输速度和稳定性直接影响到整个系统的性能和可靠性。 总线
    的头像 发表于 12-31 09:45 1327次阅读