2012/8/17 Jia Liu <proljc@xxxxxxxxx>: > 2012/8/16 Michael.Kang <blackfin.kang@xxxxxxxxx>: >> 2012/8/16 Jia Liu <proljc@xxxxxxxxx>: >>> 2012/8/16 Michael.Kang <blackfin.kang@xxxxxxxxx>: >>>> 2012/8/16 Jia Liu <proljc@xxxxxxxxx>: >>>>> 2012/8/16 Michael.Kang <blackfin.kang@xxxxxxxxx>: >>>>>> 2012/8/16 Jia Liu <proljc@xxxxxxxxx>: >>>>>>> 2012/8/16 Michael.Kang <blackfin.kang@xxxxxxxxx>: >>>>>>>> 2012/8/16 Jia Liu <proljc@xxxxxxxxx>: >>>>>>>>> 2012/8/16 Michael.Kang <blackfin.kang@xxxxxxxxx>: >>>>>>>>>> 我代表我们的团队希望以全系统模拟器的方面的话题参与 >>>>>>>>>> HelloGcc,主要希望向大家介绍我们最近的一些成果,得到 >>>>>>>>>> 大家的一些帮助和建议。暂定题目如下: >>>>>>>>>> >>>>>>>>>> 题目: 更快的android模拟器 >>>>>>>>>> 内容: >>>>>>>>>> 我们使用了以LLVM为中间语言的动态二进制翻译技术 >>>>>>>>>> 作为我们全系统模拟器的指令执行引擎,并且根据全系统模拟 >>>>>>>>>> 的特点做了多种优化,最后给出相关性能分析以及性能测试数据。目前我们的全系统模拟器已经可以正确的运行android >>>>>>>>>> 3.0系统,以及一些典型应用如Angry Bird等。通过nbench, Dhrystone, >>>>>>>>>> whetstone等性能测试用例的初步分析,指令执行速度比已有的android官方模拟器有一定提高。 >>>>>>>>>> 其中会和大家讨论和分析一些优化的技术: >>>>>>>>>> * 混合执行的翻译策略问题 >>>>>>>>> >>>>>>>>> 混合执行是什么?能不能解释一下啊? >>>>>>>> 我们用一个快速的解释执行来执行非热点的代码,对于一些 >>>>>>>> 热度比较高的代码,则使用llvm的动态编译技术执行。 >>>>>>> >>>>>>> 怎么分辨的 热点 啊?能稍微解释下么?我也是QEMU的官方开发人员,不外行的,希望康老师几句话切中要害。 >>>>>>> >>>>>> 哦,分辨热点就是开始执行的时候用快速解释执行,在执行过程中统计基本块的执行次数。动态二进制翻译做profiling, >>>>>> 按照我读的一些论文中的归类,分为三类:BB的Profiling,即基本块的profiling, >>>>>> edge的profiling,即相互有链接几个BB的profiling,还有path或者trace的profiling。BB的范围最小,PATH的范围最大。这个技术应该是和Java的HotSpot(http://java.sun.com/products/hotspot/)是类似的。 >>>>>> >>>>>> 我们目前实现的是BB的Profiling,即一个基本块的执行次数是否到达一定阈值,如果达到了,就是热点,然后启动动态编译模块去对热点的BB进行翻译。 >>>>>> >>>>>> 其实我们也实现了trace的profiling ,但是效果不太好,目前发现和BB >>>>>> Profiling效果差不多。主要是trace的profiling本身有些复杂,也要占用运行时间。还需要进一步研究。 >>>>>> >>>>> >>>>> 确实高科技啊。 >>>>> >>>>> 我觉得LLVM的调度在里面起的作用不大,提高性能的主要手段还是 >>>>> 让翻译过的热点代码常驻内存,不知道skyeye什么情况,QEMU每个TB之间的切换消耗比较大,很多内存操作,如果能消除一些访存,性能势必大大提高,当然,这个很难,以为我们要顾及全系统的准确模拟,一个异常就需要保存现场了。 >>>>> >>>> 我们现在翻译块的内存管理很粗糙,把所有翻译过的BB都放在内存里了。Android运行的时候,要占用2G的主机内存。 >>>> >>>> QEMU的访存已经很高效了,貌似这个问题今年在qemu邮件列表中已经讨论过几次。如下: >>>> http://lists.gnu.org/archive/html/qemu-devel/2012-06/msg02015.html >>>> http://lists.gnu.org/archive/html/qemu-devel/2012-07/msg03336.html >>>> >>>> 现在一条访存指令翻译成host指令,大概是12条左右。所以内存访问的模拟还是占很大开销,这个韦任可能了解的更清楚一些。如果想再进一步优化,就得用比较极端的手段了。 >>>> >>> >>> skyeye现在能达到host性能的多少啊?或者,比QEMU-ARM快多少啊? >>> >> 用户态模拟,我们目前采用的测试用例是eembc中的cjpeg 1000次迭代。大概是QEMU的2倍多一些。 >> >> 系统级别的模拟,我在android系统中图形下的nbench测试要比Qemu慢。在android系统中命令行下用nbench测试,大概要比Qemu快50%。 >> >> 不过,这些测试数据只是简单的测了测,不一定准确,还需要进一步的分析。比如我们目前没有模拟goldfish,只模拟了s3c6410,所以很多测试结果也说不好。等到给大家做报告的时候,我们争取花一些时间把这些测试结果认真的整理分析一下。 >> > > benchmark... 大家都懂的,我只关心实现原理和思路,这个才是高科技。skyeye现在开源么?哪里能找到代码学习一下啊? > 地址如下: http://skyeye.git.sourceforge.net/git/gitweb.cgi?p=skyeye/skyeye;a=shortlog;h=refs/heads/dyncom_arm_ppc 目前还在开发中,还在不断的整理。主要是在ubuntu和OpenSuse两个系统上测试。 -- MK >> -- MK >>> 我就是随便问问,期待学习你们的先进高科技 >>> >>>>> 不知道康老师有何见解啊? >>>> 不要叫老师了,现在连理发店里干活的人都是老师。我和大家都是代码民工一枚,混口饭吃。 >>>> >>>> -- MK >>>> >>>> >>>>> >>>>>> -- MK >>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>>> * TLB以及内存访问优化技术,包括我们实现的技术和qemu已有的技术 >>>>>>>>>> * 指令翻译块的划分等等。 >>>>>>>>> >>>>>>>>> 韦任那边,LLVM为后端的QEMU,性能能达到host的1/3,相信大家都很期望相互了解对方的工作。看来今年模拟器的话题很多啊 >>>>>>>>> >>>>>>>> 我和韦任在一些技术细节上已经相互私下交流过多次,受益菲浅。我理解他们做的工作应该是qemu动态编译器做非热点的快速执行,热点代码用llvm的动态编译,应该也是一种混合执行的方式。 >>>>>>> >>>>>>> 明天我问问他,区分 热点 这个技术很高科技啊。 >>>>>>> >>>>>>>> >>>>>>>> -- MK >>>>>>>> >>>>>>>>>> >>>>>>>>>> -- 康烁 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 2012/8/8 Mingjie Xing <mingjie.xing@xxxxxxxxx>: >>>>>>>>>>> 大家好, >>>>>>>>>>> >>>>>>>>>>> 以下是今年的活动通知,欢迎大家提出建议,比如活动的名称(还是HelloGCC 2012?或者Open Source Tools >>>>>>>>>>> ...),时间,形式,以及通知本身的内容和写法。 >>>>>>>>>>> >>>>>>>>>>> HelloGCC 2012 活动通知 >>>>>>>>>>> >>>>>>>>>>> HelloGcc工作组由自由软件爱好者和自由软件工作者于2007年在北京成立,旨在营造一个自由,开放,共享的技术社区,讨论GNU底层系统工具(包括GCC,GDB,BINUTILS等),以及其它开源工具(比如LLVM,QEMU等等)的技术知识,为工作和学习提供帮助,并为自由软件社区做出贡献。 >>>>>>>>>>> >>>>>>>>>>> 我们每年都会举办一次技术讨论会。今年的活动暂定为在10月底举办(具体时间,地点待定)。现在向大家提前发出征稿通知,如果你有兴趣来做相关的技术话题报告,欢迎提前与我们联系。话题范围包括: >>>>>>>>>>> >>>>>>>>>>> * 原创工作,或者对他人工作的介绍 >>>>>>>>>>> * 研究性的,或者工程性的 >>>>>>>>>>> * 代码讲解,程序演示 >>>>>>>>>>> * 等等 >>>>>>>>>>> >>>>>>>>>>> 我们只需要提前获得演讲者的幻灯片(并经演讲者同意后,发布在网上)。如果你打算同时提供文字稿件,当然更好。整个活动是免费的,我们希望能够获得一些赞助,以用于对演讲者提供酬谢和对社区的发展提供支持。投稿,赞助,以及其它活动相关的事宜,请发送邮件到邮件列表: >>>>>>>>>>> >>>>>>>>>>> * hellogcc@xxxxxxxxxxxxx >>>>>>>>>>> >>>>>>>>>>> 在邮件列表中讨论。 >>>>>>>>>>> >>>>>>>>>>> 附注: >>>>>>>>>>> >>>>>>>>>>> 2011年演讲话题: >>>>>>>>>>> >>>>>>>>>>> 1、Introduction to GCC Backend >>>>>>>>>>> 2、GNU Tools for ARM Embedded Processors >>>>>>>>>>> 3、多核时代更快断点 -- Displaced stepping以及对Thumb-2指令集的实现 >>>>>>>>>>> 4、TCG与LLVM生成二进制代码性能分析 >>>>>>>>>>> 5、走进GCC插件时代 >>>>>>>>>>> >>>>>>>>>>> 2010年演讲话题: >>>>>>>>>>> >>>>>>>>>>> 1、内存管理机制与优化 >>>>>>>>>>> 2、调试器的断点机制的探讨 >>>>>>>>>>> 3、针对嵌入式CPU的Binutils移植 >>>>>>>>>>> 4、GCC编译器图形化实现与讨论 >>>>>>>>>>> 5、How To Port GNU ToolChain >>>>>>>>>>> 6、Linux Kernel GDB tracepoint module演示 >>>>>>>>>>> >>>>>>>>>>> 2009年演讲话题: >>>>>>>>>>> >>>>>>>>>>> 1、使用GCC编译器分析和优化程序的数据局部性 >>>>>>>>>>> 2、GCC Internals and Porting >>>>>>>>>>> 3、gdbproxy: An open source GDB stub for Blackfin >>>>>>>>>>> 4、GDB reverse debug and process record and replay target >>>>>>>>>>> >>>>>>>>>>> 交流平台: >>>>>>>>>>> >>>>>>>>>>> * 博客地址,http://www.hellogcc.org >>>>>>>>>>> * 邮件列表,//www.freelists.org/archive/hellogcc >>>>>>>>>>> * IRC房间, #hellogcc(freenode) >>>>>>>>>>> >>>>>>>>>>> 谢谢 >>>>>>>>>>> 邢明杰 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> www.skyeye.org >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> www.skyeye.org >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> www.skyeye.org >>>> >>>> >>>> >>>> -- >>>> www.skyeye.org >> >> >> >> -- >> www.skyeye.org -- www.skyeye.org