用于协调执行的并行软件的高性能无阻塞并行存储管理器制造技术

技术编号:2882968 阅读:231 留言:0更新日期:2012-04-11 18:40
一种在并行处理计算系统中分配存储器的方法,其中首先设置可用于并行处理的系统存储器并且设置第一和第二线程。该方法包括:利用第一线程对系统存储器请求存储器,向第一线程分配第一存储器池并关联该存储器池和第二线程;利用第二线程对系统存储器请求存储器;向第二线程分配第二存储器池并关联该存储器池和第一线程;利用第一线程对第二线程请求更多的存储器;以及在不对系统存储器作出请求下从第二线程对第一线程分配第二存储器池的一部分。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】
本中请和标题为“并行软件处理系统”的美国专利申请(代理人文档号FIS990317US)以及标题为“把计算控制的相异流用作为可再使用数据对象的方法”的美国专利申请(代理人文档号FIS990319US)中所说明的主题和权利要求有关,这二份申请由本申请的专利技术人提出并和本申请于同一日提交。本专利技术涉及计算机处理,尤其涉及并行计算机编程和处理。在利用分立、非并行处理的现有技术的计算中,各程序常常共享数据和其它部件。其的一个例子在附图说明图1中示出,其中可以物理上分立在不同的存储器存储中的或者逻辑上分立在同一个存储器存储中的分立进程存储器19a、19b包含用于整个进程可见的数据项的全局变量存储器20a、20b,用于数据结构的堆存储器21a、21b,用于函数自变量和局部数据项的栈存储器23a、23b,以及可根据需要充当堆或栈存储器空间的自由存储器空间22a、22b。自由存储器空间的一部分可指定为可由二个分别在分立的进程存储器19a、19b中操作的程序A、24a和程序B、24b使用的公用存储器22c。每个程序A和B可访问进程存储器中指定的公用区22c,而不能访问程序之间的其它存储器。使用图1的系统的程序员因限于访问公用存储器的数据结果从该系统得到相对少的帮助。并行处理在单个程序可以同时运行由程序管理的不同线程或独立控制流方面提供改进。可在并行方式下执行多个线程,并且这些线程可在松耦合或紧耦合方式下共享信息。在图2中示出并行处理方案的一个例子,其中具有一个公用全局存储器120和一个公用堆空间121的单个进程存储器119含有多个栈空间123a、123b和操作多个线程的单个程序124,其中每个程序线程具有一个栈。如所示,示出的进程存储器结构可以操作任何数量的线程1-N并且包含任何数量的对应栈1-N。线程之间的协调的数据访问通常需要操作系统的协助(带有相关的代价),例如信号或锁定。然而,在典型并行处理应用中,使用系统服务产生的串行化,例如存储管理和对存储器的存取协调,经常明显地减少并行算法可达到的性能好处。当多于一个的线程访问或者请求一数据对象或其它系统资源时出现串行化。如果发生这种冲突,只有一个线程访问并且在该第一线程利用系统资源结束之前拒绝所有其它线程访问。例如,图2中示出的结构是易出错的,因为含有正由该程序操纵的信息的堆空间由于不同的线程试图在同一时刻访问相同的数据结构遭受冲突。当此发生时,在由另一个程序线程访问该数据结构时一个或多个线程必须等待。在目前的实践中,并行软件中的存储器管理也是一个复杂和低效为其主要缺点的区域。当做出分配或释放存储器的调用时,并行执行的好处可能为零或者甚至降低到串行执行更快。这是由于目前的为防止二个或多个控制流即线程试图获得或释放存储器区时的冲突必须采用的串行化技术造成的。这可明显地降低并行程序的性能,并强制程序设计和实现中的非自然运用。这些曲解损害维护性、扩充性,并且是出错源泉。更坏的是,和这些问题关联的损失甚至会阻碍开发人员考虑否则为可行的并行解决办法。在并行编程中,如上面所说明,对每个线程分配一个供执行,通常并行地,的具体工作单元,并且当该工作结束时,各线程停止以退出。存在着建立线程、结束线程和管理线程的代价。该代价具有机器周期分量和编程复杂性分量。编程复杂性分量是软件实现和设计中的出错源泉。线程使用中的主导范式是不同地对待线程和数据。存在着控制流(线程),并且存在着数据。所造成的二分形成一种趋向对各种预计的解决办法加以约束的环境,而且在实现期间形成复杂性从而易出错。考虑到现有技术的问题和不足,从而本专利技术的一个目的是提供一种不太遭受出错的并行处理结构。本专利技术的另一个目的是提供一种在访问公用系统服务例如数据结构时较少遭受串行化限制的并行处理结构。本专利技术的再一个目的是提供一种在分配或释放存储器时较少遭受串行化限制的并行处理结构。本专利技术的另一个目的是提供一种在不同线程之间存在较少交互的并行处理结构。本专利技术的另一个目的是提供一种减少建立、管理和终止线程中的代价和错误的并行处理结构。本专利技术的其它目的和优点中的一部分会从说明书变为清楚和明显。本专利技术可以实现对业内人士是明显的上述的和其它的目的和优点,本专利技术在一个方面上指向一种用于并行计算的计算机存储器结构,其具有由一个平面构成的层次结构的第一层。该平面包括一个代表由程序结构管理的一个独立控制流的线程,一个用于数据结构的堆部分,一个用于函数自变量的栈部分,以及可由该程序结构的任何部分访问的局部变量和全局数据。该存储器结构还具有由一个空间构成的层次结构第二层。该空间包含二个或更多的平面,其中该空间中的各个平面含有该程序结构。该空间还包含可由各个平面之间的程序结构访问的公用数据。该存储器结构最好还具有由二个或更多的空间构成的层次结构的第三层。这些空间含有相同或不同的程序结构,并含有可由各个空间之间的程序结构访问的公用数据。该程序结构包括一个程序库并且还包括一个用于每个空间的函数表,其中该函数表适应于和每个空间中的库交换服务。在一相关方面,本专利技术提供一种用于并行计算的计算机程序产品,其包括在其中含有计算机可读代码的计算机可用介质。该计算机代码定义一种计算机存储器结构和包括上面说明的层次结构的第一层和第二层,并且最好还包括该层次结构的第三层。本专利技术的另一个相关方面提供一种并行处理方法,其中首先提供一种具有上面说明的层次结构的第一层和第二层的计算机存储器结构。该方法接着包括使用由该空间中的第一平面里的程序结构管理的第一线程并访问该第一平面中的数据和各个平面之间的公用数据,以及使用由该空间中的第二平面里的程序结构管理的第二线程并访问该第二平面中的数据和各个平面之间的公用数据。除当由程序结构明确请求外第一和第二线程彼此避免交互。该程序结构包括一个程序库并且还提供一个用于该空间的函数表,其中该函数表适应于和该空间中的该库交换服务。该方法可包括利用第一和第二线程对于该函数表进行函数调用以访问各个平面之间的公用数据和该空间中的公用数据。最好还提供层次结构的由二个或更多的空间构成的第三层,其中这些空间包含相同和不同的程序结构以及可由各个空间之间的程序结构访问的公用数据。该方法包括通过第一和第二线程访问各个空间之间的公用数据。再一个相关方面提供一种可由机器读的程序存储部件,其有形地含有可由该机器执行的指令程序,以利用具有前面说明的层次结构的第一层、第二层以及最好具有第三层的计算机存储器结构实现这些所说明的用于并行处理的方法步骤。在另一个方面,本专利技术提供一种在并行处理计算系统中分配存储器的方法,其中在该计算系统中首先设置一个可用于并行处理的系统存储器和第一、第二线程,每个线程代表由一程序结构管理的独立控制流并执行不同的程序任务。该方法包括利用第一线程对系统存储器请求存储器;向第一线程分配超过该请求的第一存储器池并关联该存储器池和第二线程;利用第二线程对系统存储器请求存储器;向第二线程分配超过该请求的第二存储器池并关联该存储器和第一线程;利用第一线程对第二线程请求更多的存储器;以及在不对系统存储器作出请求下从第二线程对第一线程分配第二存储器池的一部分。第一和第二存储器池中的每一个最好包含由系统存储器标记为用于第一和第二线程的存储器部分。该方法因此包括由第二线程释放本文档来自技高网...

【技术保护点】
一种在并行处理计算系统中分配存储器方法,包括: 设置可用于并行处理的系统存储器; 设置第一和第二线程,每个所述线程代表由一程序结构管理的独立控制流并执行不同的程序任务; 利用第一线程对系统存储器请求存储器; 向第一线程分配超过该请求的第一存储器池并关联该存储器池和第二线程; 利用第二线程对系统存储器请求存储器; 向第二线程分配超过该请求的第二存储器池并关联该存储器和第一线程; 利用第一线程对第二线程请求更多的存储器;以及 在不对系统存储器作出请求下从第二线程对第一线程分配第二存储器池的一部分。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:哈里J比迪三世彼得C阿尔门德福
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利