[论文解读] Project Beehive: A Hardware/Software Co-designed Stack for Runtime and Architectural Research
Project Beehive 提供了一个全栈的软硬件协同设计平台,支持在各种异构系统上进行运行时和架构研究的快速原型设计与实验。通过集成协同设计的编译器、运行时和加速器(GPGPU、SIMD、FPGA),在复杂计算机视觉工作负载(KFusion)中实现了高达43倍的性能提升,展示了应用层、语言层与硬件层之间有效的协同设计。
The end of Dennard scaling combined with stagnation in architectural and compiler optimizations makes it challenging to achieve significant performance deltas. Solutions based solely in hardware or software are no longer sufficient to maintain the pace of improvements seen during the past few decades. In hardware, the end of single-core scaling resulted in the proliferation of multi-core system architectures, however this has forced complex parallel programming techniques into the mainstream. To further exploit physical resources, systems are becoming increasingly heterogeneous with specialized computing elements and accelerators. Programming across a range of disparate architectures requires a new level of abstraction that programming languages will have to adapt to. In software, emerging complex applications, from domains such as Big Data and computer vision, run on multi-layered software stacks targeting hardware with a variety of constraints and resources. Hence, optimizing for the power-performance (and resiliency) space requires experimentation platforms that offer quick and easy prototyping of hardware/software co-designed techniques. To that end, we present Project Beehive: A Hardware/Software co-designed stack for runtime and architectural research. Project Beehive utilizes various state-of-the-art software and hardware components along with novel and extensible co-design techniques. The objective of Project Beehive is to provide a modern platform for experimentation on emerging applications, programming languages, compilers, runtimes, and low-power heterogeneous many-core architectures in a full-system co-designed manner.
研究动机与目标
- 为应对现代计算栈日益增长的复杂性,其中硬件和软件的进步已脱钩,需通过协同设计实现最佳性能、功耗和弹性。
- 克服单体硬件或仅软件解决方案在异构、多核和领域专用架构中的局限性。
- 在多种编程语言、编译器、运行时和多样化硬件平台(ARM、x86、FPGAs、GPUs)之间实现快速、完整的系统实验。
- 统一并扩展对多种指令集架构(ISA)上动态与非动态语言的运行时和编译器支持。
- 为新兴工作负载(如大数据和计算机视觉)提供一个灵活、可扩展的平台,用于协同优化功耗、性能和弹性。
提出的方法
- 集成统一的运行时层,支持多种ISA(ARMv7、Aarch64、x86),并通过生产级和研究级虚拟机支持多种编程语言。
- 采用新型协同设计模块——Tornado(GPGPU)、Indigo(SIMD)和MAST(FPGA),实现无需生产力损失的透明异构执行。
- 在统一框架中使用高性能模拟器和真实硬件,支持架构研究与优化。
- 应用硬件感知的JVM扩展,例如利用指针中未使用的位编码元数据,减少对象头大小并提高缓存效率。
- 通过端到端的全栈方法实现应用级协同设计,从高层代码(如基于Java的KinectFusion)到微架构优化。
- 支持端到端栈的动态与静态分析,允许在整套系统中进行迭代实验与优化。
实验结果
研究问题
- RQ1统一的软硬件协同设计平台如何在多种架构和编程模型之间实现快速原型设计与实验?
- RQ2将JVM对象布局与微架构支持协同设计,能带来多大程度的性能、能耗和内存效率提升?
- RQ3单一软件栈在GPGPU、SIMD和FPGA平台上,能在多大程度上加速复杂的真实世界应用(如KinectFusion)?
- RQ4协同设计的编译器和运行时优化如何影响应用级性能以及缓存利用率和DRAM能耗等系统级指标?
- RQ5架构级优化(如对象头压缩)对端到端应用性能和垃圾回收开销有何影响?
主要发现
- 通过在GPGPU、FPGA和JVM优化的对象布局上实现协同加速,Beehive平台在KFusion计算机视觉应用中实现了高达43倍的性能提升。
- 在对象头中消除类信息将对象大小减少一个字,使SLAMBench各阶段的平均性能提升1.10倍,最高达1.32倍。
- 同一优化使动态DRAM能耗最高降低27%,总DRAM能耗降低12%,总动态能耗降低5%。
- 由于对象尺寸减小带来的更好数据局部性,L2缓存的缓存利用率提高24%,L3缓存提高25%。
- 由于对象头压缩带来的堆空间节省,垃圾回收调用次数从10次减少到7次。
- 该平台通过在软件、运行时和硬件层的多方面协同设计,成功实现了对KFusion应用的实时3D空间重建(>30 fps)。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。