Skip to main content
QUICK REVIEW

[论文解读] SL: a "quick and dirty" but working intermediate language for SVP systems

Raphaël Poss|arXiv (Cornell University)|Aug 22, 2012
Parallel Computing and Optimization Techniques参考文献 1被引用 15
一句话总结

本文提出 SL,一种轻量级 C 语言扩展,旨在作为编译并行程序至 SVP(系统虚拟化平台)系统的中间目标语言。SL 支持批量线程创建、基于字长通道的数据流通信,以及线程族终止时的同步机制,为多核处理器和硬件多线程处理器提供一种可移植的、低级别的接口,且实现复杂度极低。

ABSTRACT

The CSA group at the University of Amsterdam has developed SVP, a framework to manage and program many-core and hardware multithreaded processors. In this article, we introduce the intermediate language SL, a common vehicle to program SVP platforms. SL is designed as an extension to the standard C language (ISO C99/C11). It includes primitive constructs to bulk create threads, bulk synchronize on termination of threads, and communicate using word-sized dataflow channels between threads. It is intended for use as target language for higher-level parallelizing compilers. SL is a research vehicle; as of this writing, it is the only interface language to program a main SVP platform, the new Microgrid chip architecture. This article provides an overview of the language, to complement a detailed specification available separately.

研究动机与目标

  • 本文旨在解决 SVP 平台缺乏一种可移植、高效的中间语言用于编程的问题。
  • 旨在克服早期 µTC 语言无法编译至 SVP 平台的局限性。
  • 目标是设计一种实用且可实现的语言,支持在操作系统之下最低级别的并发原语。
  • 旨在作为多种 SVP 平台(包括 Microgrid 芯片架构)之间的通用接口。
  • 研究还旨在支持未来编译器开发及多核系统的硬件可移植性。

提出的方法

  • SL 被设计为 ISO C99/C11 的语法扩展,保持与标准 C 的兼容性。
  • 引入新关键字:sl_def 和 sl_enddef,用于定义带有输入/输出数据流通道的线程函数。
  • sl_create 和 sl_sync 构造支持可配置大小与窗口化的线程族批量创建与同步。
  • 数据流通信通过 sl_shparm(用于线程函数参数)和 sl_sharg(用于线程族端点)进行管理,读写操作分别使用 sl_getp/sl_setp 和 sl_geta/sl_seta。
  • 该语言采用显式类型系统,并使用独立关键字区分整型与浮点型,以简化实现并避免复杂的类型分析。
  • SL 工具链可将 SL 代码编译为 SVP 机器码,支持软件仿真与硬件平台(如 Microgrid)。

实验结果

研究问题

  • RQ1如何设计一种轻量级、可移植的中间语言,以支持包括硬件多线程多核系统在内的多样化 SVP 平台?
  • RQ2为何先前的 µTC 语言不适合编译?SL 的哪些设计原则克服了这些局限?
  • RQ3SL 在低级别、绕过操作系统的执行模型下,能在多大程度上支持高效的批量线程创建、同步与数据流通信?
  • RQ4在面向低级别系统的语言中,如何简化类型系统设计,同时不牺牲对并发性的表达能力?
  • RQ5为支持未来硬件趋势(如分布式内存与通用同步模式),需要哪些扩展?

主要发现

  • SL 已成功作为 Microgrid 芯片架构(一种主要的 SVP 平台)的唯一接口语言使用。
  • 该语言支持线程族的非确定性并发执行,如一个程序可随机顺序打印数字 0–9 和 10。
  • SL 通过使用显式类型和显式关键字表示标量类型,避免了复杂的静态分析,显著简化了实现。
  • SL 工具链已以开源许可证发布,支持社区使用,并可与 SAC2C 等编译器及并行化 C 编译器集成。
  • SL 已在多个研究项目中实际应用,因其实用性和兼容性,已取代 µTC 用于学术出版。
  • 当前工作包括扩展 SL 以支持分布式内存模型、POSIX 线程 API 子集,以及常见模式(如归约与负载均衡)的高层抽象。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。