Xilinx社区
首页 > Kevin专栏 > 从MIT赢得软硬件协同设计大赛说起
Kevin专栏
从MIT赢得软硬件协同设计大赛说起
来源:  时间:2015-01-22  浏览量:434

先看一则新闻:

麻省理工学院在本月16号揭晓的MEMOCODE2007软硬件协同设计大赛中夺冠。

第二届由ACM-IEEE MEMOCODE 会议主办的软硬件协同设计大赛冠军由来自MIT的5名队员获得。 获得者的设计由 Bluespec的ESL工具综合产生。来自美国和欧洲的9个队参加了比赛,只有 MIT 和 Virginia Tech提交了最终结果。 

比赛要求用软硬件协同的方法完成矩阵相乘MMM的设计 , 主办方给出了C语言源程序以及它们在XILINX XUP V2PRO 板上的基于power pc 的参考设计,作为大赛的起点.  比赛的队伍要在FPGA上充分利用硬件加速和软件优化, 完成1000X1000阶的矩阵相乘计算, 耗时最少的获胜。 

参赛队伍的结果以及大赛的起点的参考设计可以在卡耐基梅隆大学的这个网站里找到: http://www.eceNaNu.edu/~jhoe/distribution/mc07contest/ 

这则简短的新闻包含了当今技术发展的最新成果和动向,其中的背景知识如果全部展开,已经可以写厚厚的一本书了。  这个新闻最直接的意义是,如果你有一个用C语言写的程序, 利用ESL工具, 可以自动将它转化为硬件实现, 如果其中有无法转化的部分, 可以自动映射到嵌入MCU中完成。当然,这套方法学的实现要求目标对象同时具有硬件现场编程能力,又有嵌入式高性能CPU核,符合这个条件的非XILINX的FPGA莫属。 

这则新闻中第一个有意思的点是:ACM-IEEE联合举办。 ACM(Association for Computing Machinery,美国计算机学会)创立于1947年,是全球历史最悠久的计算机科学教育机构. IEEE为美国电气电子工程师学会. 

计算机和电子两大协会联合举办MEMOCODE,标志着软硬件协同设计这个领域已经从学术研究走向工业界和普及。         

这则新闻中多少有些令人意外的是, 获胜的队伍不是手工进行软硬件划分和设计,而是采用电子系统级设计ESL工具。  就象当年从汇编语言到C语言的转变一样, 很多汇编语言熟练工人拒绝这个转变,理由是汇编语言写出的程序更高效和精美, 结果是这些人被市场无情的淘汰. 这个进程在硬件领域,也在慢慢发生. 很多人还在拼命用HDL进行硬件设计,他们对新出现的系统级设计ESL工具不屑一顾,(比如Bluespec, ImpulsC, SystemGenerator, AccelDSP)认为他们只是中看不中用的玩具. 这则消息给所有人一个响亮的提示,即在复杂的高阶矩阵相乘算法实现中, 自动ESL能给大家带来的,有时不仅仅是更好的性能,而有时手工作根本无法实现。 就象全部用汇编写Windows操作系统是不可能的一样, 用HDL写1000X1000的矩阵MMM运算也几乎是不可完成的任务(矩阵存储在外部存储器中)。

后面几天俺会从该比赛的起点参考设计开始,分析实现方案的实现难点和妙处, 今天先开个头:

两个矩阵相乘这件事情在C语言里写太简单了,先把矩阵做成分块矩阵,做一个大循环,分块矩阵之间的乘法单独写一个函数,名字叫mmmKernel,  代码是这样滴:

voidmmmKernel(Number* A, Number* B, Number* C, int N) {      

inti, j, k;

for (j = 0; j < N; j++)

for (i = 0; i < N; i++)

for (k = 0; k < N; k++)

  C[i*N+j] = C[i*N+j] + A[i*N+k]*B[k*N+j] ;

}

void mmmBlocked(Number* A, Number* B, Number *C, int N, int NB) {

int j, i, k;

  for (j = 0; j < N; j += NB)

for (i = 0; i < N; i += NB)

  for (k = 0; k < N; k += NB)

mmmKernel(&(A[i*N+k]), &(B[k*N+j]), &(C[i*N+j]), N, NB);

}

现在要做的是把它硬件加速,可以用并行, 硬件乘加等方式进行.  别忘了FPGA的容量有限, 因此对512M的内存的操作和管理和合理的分块是解决问题的关键. 

热点文章
精选视频
推荐资源

中国授权培训机构

北京 电话:(010)82757632
      (010) 62192881
深圳 电话:(0755)86186715
武汉 电话:(027)61389792
成都 电话:(028)80821007
南京 电话:(025)66022032
西安 电话:(029)82230498
邮箱:sales@e-elements.com

中国授权经销商

香港 电话:(852)22127848
北京 电话:(010)84148118
成都 电话:(028)86528262
上海 电话:(021)33678387
深圳 电话:(0755)26584925
武汉 电话:(027)87322806
邮箱:china@avent.com
深圳 电话:(0755)26743210
上海 电话:(021)51696680
北京 电话:(010)51726678
成都 电话:(028)85139576
武汉 电话:(027)87690155
邮箱:
xilinx_enquiry@comtech.com.cn

社区主办


《电子产品世界》杂志社

内容提供


    赛灵思公司

Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052