TM将取代互斥锁助益并行编程

时间:2022-05-19 10:15:44

TM将取代互斥锁助益并行编程

并行计算是发挥处理器多核的关键优势,编程面临的同步机制又出了新的研究――事务内存(TM),它有望取代互斥锁方法。

――Intel编程系统实验室Ali-Reza Adl-Tabatabai

目前,解决并行编程面临的大问题――对共享内存的同步访问,基本办法就是使用互斥锁,但这种机制存在一些缺陷,无法用来构建大型的并行应用程序。在过去的几年间,一种新的同步机制被逐步研究出来了,我们称之为事务内存(transactional memory,TM),它有望取代互斥锁用于大型并行程序。

使用这种机制的编译器,程序员能够独立运行一段并行代码,而无需考虑对其他线程的影响,这对于并行编程的调试来说至关重要。同时,系统中还能够同时运行多个事务。

数据库采用面向事务的思想已经有很多年了,而且一直都很成功。TM将这一思想引入C++、Java这样的主流编程语言,所产生的新语言将成为并行计算的基础。在使用互斥锁机制时,程序员经常面临着易于使用和可扩展性之间的矛盾。如果太简单,用起来会很方便,但在同步时会成为瓶颈,影响程序的可扩展性;为了削除瓶颈,又很容易引入死锁和数据冲突等新问题。

更为重要的是,在如今的软件业中占据重要地位的构件中,互斥锁没有用武之地。这是因为互斥锁不能用于开发构件,在更换环境之后使用原先的互斥锁,很有可能会引入新的问题,这是一件非常危险的事。

TM最大的好处就是能够将一段代码申明为一个事务,并可以独立运行调试。独立运行的环境是由系统负责的,这样,同步控制难题的压力就由应用程序开发者转换到了系统设计者身上,从而提高了程序员的效率。

在运行时,代码直接调用TM库中的资源,而由TM库来统一管理内存资源。只要还没有事务写入的内存位置,其他并行的事务就可以对它进行读写。

和使用互斥锁一样,程序员依然需要自行控制高层次的数据冲突,以确保数据安全。这和多线程编程一样,应用程序中的高层数据关系是系统无法感知的,只有人为解决同步冲突与协作的问题。

但与使用互斥锁不同的是,程序员无需处理互斥锁瓶颈的问题,而可以专心优化所开发的组件,以避免事务之间的冲突。他们依然需要关心程序内在的可扩展性问题和底层的算法与数据结构,但是,最困难的使用互斥锁的问题就交给编译器和TM库去解决了。可以说,事务内存的思想削除了易于使用和可扩展性之间的矛盾。

实际上,TM和近年出现的改进程序健壮性的其他语言特性,如垃圾回收(GC)机制,颇有几分相似,同样是把编程中的一些难题交给系统统一处理。我所在的实验室在TM核心技术方面已经发表了很多论文,但我们的终极目标是想将类似的并行编程技术实用化。

上一篇:微软下注虚拟化技术 Server 2008目标瞄准平民... 下一篇:虚拟化到桌面尚需时日