首先如果程序只支持线程的话很可能程序本身无法并行化,比如data或control dependencies太多。我们叫这种程序inherently serial,所以解决不了。如果我们在运行时才能决定程序是否有dependency,这种情况可以假设程序能并行化,用speculative multithreading。ISCA 2000,ASPLOS 2002都有相关论文,可以看看:
“A Scalable Approach to Thread-Level Speculation” - ISCA 2000
J. Gregory Steffan, Christopher B. Colohan, Antonia Zhai, and Todd C. Mowry
Carnegie Mellon University