原文:FPGA Architecture: Principles and Progression. FPGA已被广泛用于实现来自不同领域的无数应用。由于其低级硬件可重构性,与定制设计的芯片相比,FPGA具有更快的设计周期和更低的开发成本。FPGA架构的设计涉及许多不同的设计选择,从高级架构参数到晶体管级实现细节,目标是制造高度可编程的器件,同时最大限度地减少可重构性的面积和性能成本。本文介...
原文:Altera FPGA Architecture Whiter Paper. 这篇文章是Altera在2006年发布的FPGA架构白皮书,简单介绍了其当时的FPGA架构,包括LUT与ALM的设计、相比基本的LUT的优势、路由架构等内容。 Logic Fabric 在Altear的FPGA器件上,一个最基本的模块是Adaptive Logic Module,即ALM,如上图所示...
CherrySprings项目取名于宾州的Cherry Springs State Park(当然现在只是随便取的名字)。我希望可以设计一个可以运行Linux且可以调度多个进程运行的多核系统,在这个过程中了解诸如处理器设计、内存模型与缓存一致性协议、总线与片上网络等多个主题的内容,也许是一个比较综合的大项目(也可能到最后都是大饼),因此也希望邀请志同道合的小伙伴一同加入。 设计选择 项目...
原文:Three Ages of FPGAs: A Retrospective on the First Thirty Years of FPGA Technology. Xilinx在1984年首次推出第一款FPGA,在随后的30年中,FPGA容量增加了10000倍,速度提高了100倍,单位成本和能耗降低了1000倍,如下图所示。这种进步很大程度上是由工艺进步推动的,但不完全是。本文回顾...
Rocket-chip提供了非常多TileLink协议相关的模块,可以直接使用,但是rocket-chip并没有提供比较完善的文档可以参考。本节以Xbar为例,用一个小例子来说明如何使用rocket-chip中TileLink的模块。 本节参考的文档如下: Chipyard文档第9节:TileLink and Diplomacy Reference R...
Diplomacy是一个参数协商框架,用于生成参数化的协议实现。在这个例子中,我们演示如何创建一个简单的参数化加法器与对应的测试模块,我们希望创建一个2-to-1的加法器、一个顶层测试模块、两个driver、以及一个monitor,如下所示 加法器测试模块图 我们同时还想要对这些模块的接口进行参数化,当进行参数协商时,我们的协议希望两个driver可以提供相同宽度的数据,然后使用两个宽...
TileLink缓存支持级(TL-C)给主端代理提供缓存共享数据块副本的能力,保证缓存一致性。本章描述TL-C中缓存的数据副本上允许进行哪些访存操作,以及用来传输数据块的缓存的消息类型,实现中所定义的一致性协议描述了副本和权限如何通过具体的TileLink代理网络传输以回复所接收的存储访问操作,但具体的一致性协议描述不在TileLink协议内容范围内。 TL-C新添加了三种操作、三个通道、...
TileLink无缓冲重量级(TL-UH)用于最后一级缓存之外的总线,这种应用中不需要使用权限转换的操作。TL-UH建立在TL-UL的基础上,并提供一部分额外的操作,包括: 原子(Atomic)操作:在原子性地读取现存的数据值的同时,同步地写入一个新的值,此新值为某些逻辑和算法操作的结果。 预处理(Hint)操作:提供了与某些性能优化相关的可选的提示性消...
TileLink无缓存轻量级(TL-UL)是最简单的TileLink协议兼容级别,可用于连接低性能的外设以减小总线的面积消耗。该兼容级别的代理都支持两种存储访问操作: 读(Get)操作:从底层内存中读取一定量的数据。 写(Put)操作:向底层内存中写入一定数目的数据,写操作支持基于字节t通路掩码的部分写功能。 在TL-UL中,每条消息都必须放在...
在上一节中我们简单了解了TileLink总线协议,包括总体架构与信号描述。具体来说,TileLink有三种协议扩展,即TL-UL、TL-UH和TL-C,有五个通道,分别为A、B、C、D和E,其中B、C和E为TL-C独有。在这一节中我们继续讨论序列化、死锁避免、操作与消息。 序列化 TileLink中的五个通道实现为五个物理隔离的单向并行总线。许多TileLink消息包含有效的数据负载,而...