ME结构在FPGA加速芯片ACAP有何作用

引言
随着人工智能和5g的兴起,数据处理对芯片的算力和带宽要求更高。为了布局未来,助力人工智能和5g,赛灵思也推出了自己的fpga加速芯片-acap。acap是一款基于7nm工艺,集成了通用处理器(ps),fpga(pl),math engine以及network-on-chip的革命性芯片。特别是新增的me结构,是一个类似于gpu的多核并发计算单元,可以大大提高数据处理能力。同时me支持软件语言c,c++,这有利于扩大fpga的使用用户,同时方便了设计开发。
me结构简介
me结构由很多me核组成的二维阵列结构,核之间可以实现数据通信。me阵列通过noc可以和pl以及ps端进行通信,noc是一种互联总线,其提供了me阵列到pl侧的高带宽通路。me核包含了bram,dsp以及控制逻辑。me具有以下特点:
1)  有一个risc处理器,能够支持32bit标量数据运算,包括sin/cos,开方,乘法等操作;
2)  向量乘法计算单元。这是一个由dsp组成的阵列,能够支持32个16bitx8bit,64个16x8bit,128个8x8bit计算。还支持8个单精度乘法计算;
3)  指令控制结构支持load和save,向量乘法等操作,这些操作统一用一个指令字段描述;
4)  含有多路axi stream,可以实现高速数据通信;
5)  含有一个128bit宽1k深的程序存储器,支持指令压缩,可通过axi-mm进行配置;
6)  含有多个数据存储器,分成多个bank,共有32kb容量;
7)  含有配置接口,用于me核的配置和调试;
8)  含有debug/trace/profile功能,用于程序追踪和调试;
me核的工作频率达到1ghz,电压0.7v,具有较低功耗。me支持多种形式的数据传送,包括axi-mm,axi-stream,以及me之间共享的bank进行数据直接交互。
为了保证性能的可预测性,me之间数据通信不存在缓存一致性。但是me和ps之间通信是需要缓存一致性功能的,me和ps端共享ddr中一段内存。当ps处理完数据发送给me时,是要保证处理的数据都已经存储到ddr中了。而me处理完数据写到ddr中后,也要让ps知道数据已经写完。me可以使用虚拟地址去访问ps的存储或者ddr,me地址会经过ps端的mmu进行解析。
为了保证某些过程的安全性(比如对trustzone的保护,或者防止me阵列的重要信息被读取),me提供了一些保护措施。主要包括对me访问的保护,axi-mm传输的安全性保护,axi-stream数据访问的保护等。
me阵列可以在功能上被分割成多个子阵列使用,这可以用于一些需要me阵列完成多种功能的任务。其中me核,axi-stream,数据存储访问等模块都可以被分割。只有axi-mm不能被分割。noc中可以支持对控制信息的修改,从而可以给不同子阵列发送不同的控制信息。每个me核含有256kb的数据存储器和128kb的程序存储器,对于一个300个me核的芯片就含有77mb数据存储和38mb程序存储,这么大的空间,保证数据准确性是很关键的。因此不论是数据存储器还是程序存储器都提供了ecc校验,以防止软件错误产生的数据错误问题。程序存储器每144bit包含128bit有效数据和8bitecc校验位。8bit校验位可以在每64bit数据中纠正1bit数据和检测出2bit数据错误。存储数据出错会生成错误事件,反馈给debug或者profile模块报告这些错误。
me阵列被分配了4个1gb的地址映射区域,目前芯片只有一个me阵列,所以只使用了1gb地址映射空间。me的地址含有整体阵列的offset,阵列的行列编号,以及me核中存储地址。这些信息可以确定往哪个me中的存储位置读写数据。
me中有4个时钟:me核时钟,高频,可到1ghz,用于me中的数据传输和运算。noc时钟,数据时钟,用于从pl到me的数据输送。pl侧时钟以及npi时钟,npi时钟用于调试追踪等。
数据传输结构
为了保证不同设备之间的数据交换,我们需要满足两个条件:一个是数据实际的流通,这个包含数据传输通路和数据存储;当然也不必包含有存储,流水线处理的数据只有数据流通;另外一个是发送者和收发者之间的同步。接受者接收数据只有在发送者发出数据之后,同时发送者发送数据必须等接受者准备好接收数据。因此一些同步信号是必须的。
me阵列中能够实现数据交互的设备有:
1)  本地存储bank。每个me包含8个bank,这些bank可以用于和周围4个me进行数据通信。me通过load和save指令来读写本地存储器。如果me的写和另外一个me的读同时发生,可以通过ping/pong操作同步。
2)  stream-network可用于所有me之间数据交互。而且stream本身是具有同步信号的,所以无需增加额外同步信号。
3)  axi-mm接口能够用于me和pl端甚至是外部存储器进行通信。
保证数据同步的装置有:
1)  me本地原子锁。这个锁可以保证生产者和消费者的数据访问冲突解决。如果锁被置为1,表示可以被读,如果为0表示可以写。
2)  shim-dma锁。用于同步不同dma通道,或者dma通道和axi-mm通道;
3)  信号量机制。对于me和ps端的数据通信,还可以通过软件层次的信号量机制来进行同步,因为ps端可以通过axi-mm接口实现和me之间的数据同步;
4)  stream网络自身附带的同步特性,用于不同me之间交换数据。
pl和me由于处于不同时钟区域,me是高频时钟,而pl侧时钟频率较低。为了实现数据跨时钟域传输,芯片提供了shim接口,shim中含有异步fifo。fpga可以以64bit或者32bit将数据写入fifo,而me将fifo中数据读出进行运算。me获得数据有两种方式,一种是通过dma将数据读出写入到ping/pong buffer,这样可以实现me核中两个函数的计算任务。如果me中不需要ping/pong操作,可以不同各国dma将数据存储到buffer。可以从stream直接获得数据进行计算。
接下来我们看看me内部数据如何通信:
1)  me内部不同操作之间可以使用shared memory来进行数据交互,但是每次只允许一个操作来访问shared memory,即读写无法同时进行;
2)  两个相邻me可以通过shared memory来进行数据交互,通过ping/pong buffer可以实现一个写一个读;
3)  对于不相邻的me,也可以使用ping/pong buffer。但是这个时候me无法直接去访问另外一个me的存储,但是每个me都可以建立自己的ping/pong buffer,这两组buffer可以通过dma进行数据交互;
4)  不同的me之间还可以通过axi-stream接口进行数据交互;
5)  有时候一个大型计算要在几个me之间完成,这就需要不同me之间进行高速数据通信,相邻的me之间还有级联总线,可以实现两个me之间的累加运算,这个总线位宽达到384bit;
6)  me还可以直接从外部存储器中获得数据,它将数据请求包发送给me-shim,这个请求包含有包头和数据请求信息,包头中有原和目的地址,数据请求中含有数据长度信息。


电池系统的ASIL等级判定
厂商加快DDR5内存条研发速度
旷视开源深度学习框架 覆盖AI全流程研发
可燃气体报警器的价值介绍
对象存储正成为主流
ME结构在FPGA加速芯片ACAP有何作用
元器件创新成果亮相中国电子展 厂商主打节能牌
PCB设计的元件排列方式和布局要求
电流源正负极怎么判断
蓝牙5.1和5.3有什么区别?
机器人传感器的背后是一个巨大的市场
打造“‘智能+’学院”区块链系列培训在中国信息通信研究院圆满举办
苹果维修视频泄露 这一波神技术你必须知道
TI 推出精度更高的电芯监测器和电池包监测器,助力汽车制造商延长电动汽车续航里程
微软Windows 10启动时PWA应用可以自动运行
巫山县的智慧城市现在的建设情况怎样
三星CEO权五铉离职影响空前,高管层最快11月份重组
闲谈扫地机器人哪个品牌好
电源已接通 未充电”问题的解决办法!
快讯:神舟十二号撤离空间站 SpaceX首次商业旅行启航 SpaceX将4名平民送入太空