老莫

磨剑四年,利刃出鞘。

2
阅读(23146)

长期以来,电子信息领域的国人长期依赖于他国或他人所涉及和开发的工具,自己去开发工具的动力不足。这一方面是由于我们在这个领域长期落后,学别人现成的工具尚且吃力,遑论自己开发工具?即使到了今天,中国好多工程师和高校教师恐怕学别人的工具也没有完全学明白。另一方面是因为国外的工具经形成了完整的生态系统,自己做的工具很难有用武之地。也是大家对别人做的工具就越来越依赖。

我们的木易师姐很早就意思到了这个问题,所以写了这样一篇博文:

http://blog.chinaaet.com/coco/p/21611

用别人的东西也没什么不好,可以节约自己的时间加快开发进度。但是世界还没大同,用别人的工具总还是受制于人。这受制于人又分两方面,要花钱买而且别人不一定卖是一方面,你想要的功能别人没有又是另外一方面。

具体到科研上面,这个受制于人就更明显了。而且主要是后面一方面。当初我们开始搞研究的时候脑洞开了无穷多,有很多美好的想法。但是问题来了:没有合理的验证工具。这样很多科研方向就不得不搁置起来,只能在非常有限的条件下来选择科研课题和做法。这简直太悲哀了,这也导致我们的研究一度陷于停滞。

后来怎么办呢?总还是要学习他人先进经验做起啊,也还是从学习别人的仿真工具做起。于是什么simplescaler、Orion、Mcpact 等等,都开始去学了。由于我们是半路出家,其实对计算机体系结构远不如的计算机专业的熟悉。一开始只能从代码里面一点点的啃出来,再结合计算机体系结构本身去理解。后来随着自身技术水平的增长,发现仿真工具有很多不能忍的地方,debug也是效率太低了。

于是我们团队里的王君实博士忍不了了,鼓动大家开始自己开发工具。这件事其实一开始我还是很犹豫的,因为长期以来我们国内的工科教育让我们对开发工具噤若寒蝉。能把别人搞出来的工具用好就成了,还敢自己开发工具?当时我们团队的其他老师们基本是极力反对,尤其是我的导师对此事多次表态说不应该搞。现在回头看,老先生真是一片好意。因为自己搞工具风险大、问题多、出成果慢,看看组里面搞信号处理的博士们,玩个Matlab写个千把行代码就画几条曲线。把结果分析分析一篇SCI文章就成了。像我们这么搞确实是效率太低下了。

但是后面发现是真的不能忍,问题太多了。于是还是决定要搞。一开始搞首先面临的就是人手问题,这个东西费时间,让博士搞吧耽误科研时间,让硕士搞吧你说写个仿真工具最后毕业答辩怎么办?这个时候就托了教育部什么创新基金的福了,吸引了几个不错的本科生来搞搞,算是为这个版本的第一版打下了点基础。期间抓总的是王君实博士,有不错两个本科生参与其中。再后面历经多年,若干研究生在科研之余也贡献了很多力量。工具经过几次改版。终于有了今天的形态。

前面废话了那么多,下面主要来介绍一下这个工具。目前已开源的工具叫Visual NoC,取NoC可视化仿真的含义。它是我们开发ESY工具集中最先完成的一环。(为什么叫ESY?这是二四一的首字母,241是实验室一间靠厕所的房间,里面安置了我们的服务器。我们这个组的研究生就是靠这台很不容易买来的服务器在辛苦的科研,一步步取得今天的成果。)其后我们还将发布针对MPSoC的任务级抽象仿真器和全系统异构多核仿真器。

前面铺垫了那么多,现在正式放出宣传文案:

片上互联网络因其强大的网络性能、灵活的扩展性以及丰富的冗余资源,已经成为解决下一代多核系统片内通信的首选方案,是片上多核系统设计的重要环节。VisualNoC是一套针对片上网络及多核系统相关研究设计的仿真器,其可视化、流程化、多角度等方面的优点,能够显著地提高仿真和分析效率。VisualNoC为片上网络和多核系统架构研究,提供了优秀的仿真器作为支撑。


现有片上网络研究工具有哪些短板?

在片上互联网络刚刚产生的阶段,研究者常使用为计算机网络开发的仿真工具,如NS2,OpenNet等。随着片上互联网络研究的推进,研究者们逐渐发现,这些原本为宏观网络开发的工具,存在不关注路由器行为、不支持虫洞路由、不体现硬件模型特点等缺点。因此,各国的研究组针对自己设计的路由器结构和拓扑,同时根据研究的需求,开发了面向不同抽象层次的仿真软件,其中影响力比较大的有采用C/C++编写的Garnet,SystemC编写的Noxim等。尽管这些仿真工具能够满足片上互联网络研究的大部分需求和初步满足教学的需要,但是其短板也是非常明显的:

A、缺少图形化的细节呈现。

目前已有多个研究组设计了具有图形界面的网络仿真器,但是这些工具的图形化界面停留在图形化参数配置和统计数据呈现的阶段,并没有涉及对运行细节的呈现,更没有实现对片上网络运行过程的多角度重现。远未突破由于命令行和干枯数字带来的在监视和分析方面的障碍,并不能为研究学者提供高效、直观的仿真过程。

B、缺少仿真器外围配套软件。

除了仿真软件,其外围软件的开发并未引起重视。在使用过程中,常需要自行编写代码,实现对仿真器配置和仿真结果的分析。

C、仿真器种类繁多。

仿真软件开发各自为战,相互之间不能兼容,配置和数据不能互通。为了满足不同的研究需求,常需要掌握多种不同的仿真器。

D、使用起点高。

现有的片上网络仿真器对操作人员在理论知识和编程能力方面的要求较高。对于刚刚接触片上互联网络的在校学生,这些仿真器并不能为其学习提供有效帮助


针对这些问题,我们又做了哪些工作呢?

A、需求驱动,图形展现,打通流程,兼顾高低

VisualNoC的设计从科研、教学和工业的需求出发,结合项目组自身进行片上互联网络相关研究的经验,提出设计需求和实现思路。时刻将需求考虑在首位,使得本平台在功能丰富的同时,保持了简约的风格。

VisualNoC通过图形化界面重现片上网络运行过程,并展现用户关心的各项统计数据,彻底改变片上网络仿真软件通过命令行调试分析的现状。清晰、简洁的界面设计,既可以免去使用者熟悉平台的麻烦,还可以满足使用者对于调试、展示以及数据统计的需求。

在片上网络的开发中,仿真器固然是核心,但仍需要配套工具对其输入进行配置,对其输出进行整理分析。VisualNoC全面考虑到科研和教学的实际需求,提供了完整开发工具链,提高开发效率。

片上网路仿真器的使用者既有资深的研究人员,也有刚刚入门的学生。VisualNoC提供了丰富的功能,能够满足入门者学习片上网络工作的需求。同时通过提供标准化的扩展接口,满足对高端使用者自定义功能的兼容。不论高端和低端用户,都能在本平台获取所需。

B、突破工具瓶颈,占领科研主动权

VisualNoC利用图形界面技术,首次实现了对片上互联网络运行过程的细粒度重现。它集可视化、系统化与标准化于一身,并且具有拓展功能和多线程并行计算功能,并提供工具链接和仿真器链接的标准接口,满足使用者的多样需求。与现有仿真器特别是可视化仿真器对比,其主要创新点和设计要点表现在以下几个方面:

VisualNoC完成了仿真平台的全面可视化,实现了仿真器的可视化配置和结果呈现。本作品突破性地实现片上互联网络的仿真过程的重现,使用者可以观察到片上互联网络中每个路由器、每个数据微片的运行过程。这将极大地方便研究者进行调试,方便学生理解相关概念和网络运行过程。

VisualNoC提供了多种重现和分析片上互联网络仿真过程的方法。VisualNoC可以分别从路由器、数据包、路径等多种角度对片上互联网络的运行进行重现和分析。VisualNoC还支持并从时间维度和空间维度,在路由器和端口不同粒度,对通信负载进行统计并直接以曲线图、柱状图、等高图等方式呈现。

VisualNoC并不仅仅聚焦于仿真器本身和图形化界面,而且是着重于为片上互联网络构建集成仿真环境。根据使用的需求,提供了一系列的配置和分析工具,并集成到了仿真平台中。例如对通信负载、网络配置、故障图案的产生工具,对追踪记录文件的分析工具等。

VisualNoC设计了统一的数据接口和程序接口,并提供相应的接口函数。通过这些统一的接口,可以在仿真平台中按需求集成众多仿真软件和辅助工具。VisualNoC可以与片上网络仿真器、任务映射算法仿真器和多核全系统仿真器等集成,重现多核系统的网络运行细节和任务运行的概况,对于理解多核系统在执行任务时的行为有很大的帮助。

针对片上互联网络研究常常面临众多的仿真配置组合和漫长的仿真时间,本作品提供多进程并行处理功能,能有效缩短仿真过程,充分开发多核计算服务器的性能,并且能够实现MapReduce的运行。这一特性可以以相当的高的比例提高仿真效率。

接下来我奉上一段演示短片:

http://v.youku.com/v_show/id_XMTUxOTY1MzI5Mg==.html?qq-pf-to=pcqq.c2c

本仿真器已开源,下载地址:http://ic.uestc.edu.cn/SWpage/index.php/ESY-Series_Many-core_System-on-Chip_Simulation_Environment


目前这个工具已经成为本组的核心竞争力,也成为本组开展对外交流与合作的主要优势。在该工具的强力支撑下,本组成功的发表了我电第二篇被Transactions on Computers录用的论文(当然,如果各位朋友有心去看看“第一篇”是谁用什么手段发出来的,也许会认可我们这个才是首篇,不过我们自己不能这么说。)

http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7295566


后续咨询可以联系:王君实博士(wangjsh@std.uestc.edu.cn),黄阳同学(huangyang@std.uestc.edu.cn)


特别鸣谢以下同学在Visual NoC开发过程中做出的贡献(按姓氏首字母排序):

褚廷斌(电子科技大学2015届硕士毕业生,现任华为公司云计算部门工程师)

董荟(电子科技大学2015届硕士毕业生,曾获校优秀毕业生,现任中国银联互联网金融部门经理)

Masoumeh Ebrahimi (瑞典皇家理工学院博士后、助理教授)

黄阳(电子科技大学硕士研究生)

林辛鑫(电子科技大学硕士研究生)

彭军(电子科技大学2015届硕士毕业生,曾获校优秀毕业生,现任海思半导体逻辑设计工程师)

张晓帆(电子科技大学2016届硕士毕业生,唐立新奖学金获得者,已被美国伊利诺伊州立大学香槟分校(UIUC)录取为博士)