StackThreads/MP: integrating futures into calling standards

StackThreads/MP: integrating futures into calling standards
复制标题

DOI:
10.1145/301104.301110
复制
发表时间:
1999-05
期刊:
--
影响因子:
--
通讯作者:
K. Taura;Kunio Tabata;A. Yonezawa
K. Taura;Kunio Tabata;A. Yonezawa
中科院分区:
其他
文献类型:
--
作者:
K. Taura;Kunio Tabata;A. Yonezawa

文献摘要

被引文献

相似文献

描述了一种细粒度多线程的实现方案,该方案无需改变顺序语言当前的调用标准,只需对顺序编译器进行适度扩展。与先前的类似系统一样,它执行异步调用就像执行普通的过程调用一样,并且当被调用者暂停或者调用者和被调用者中的任何一方迁移到另一个处理器时,将被调用者与调用者分离。与先前的类似系统不同的是,它分离和连接由遵循调用标准的现成顺序编译器生成的任意帧。因此,它既不需要前端预处理器,也不需要具有内置并行概念的本机代码生成器。该系统实际上可与未经修改的GNU C编译器(GCC)一起使用。阐明了为保证该方案的可移植性和正确性而对顺序编译器进行的理想扩展,并声称这些扩展是适度的。实验表明,在实际应用中顺序性能没有受到牺牲,并且顺序性能和并行性能都与Cilk[8]相当,Cilk当前的实现需要一个相当复杂的C预处理器。这些结果表明,高效的异步调用(也称为未来调用)可以集成到当前的调用标准中,对顺序性能和编译器工程的影响都非常小。
An implementation scheme of fine-grain multithreading that needs no changes to current calling standards for sequential languages and modest extensions to sequential compilers is described. Like previous similar systems, it performs an asynchronous call as if it were an ordinary procedure call, and detaches the callee from the caller when the callee suspends or either of them migrates to another processor. Unlike previous similar systems, it detaches and connects arbitrary frames generated by off-the-shelf sequential compilers obeying calling standards. As a consequence, it requires neither a frontend preprocessor nor a native code generator that has a builtin notion of parallelism. The system practically works with unmodified GNU C compiler (GCC). Desirable extensions to sequential compilers for guaranteeing portability and correctness of the scheme are clarified and claimed modest. Experiments indicate that sequential performance is not sacrificed for practical applications and both sequential and parallel performance are comparable to Cilk[8], whose current implementation requires a fairly sophisticated preprocessor to C. These results show that efficient asynchronous calls (a.k.a. future calls) can be integrated into current calling standard with a very small impact both on sequential performance and compiler engineering.