CN109144685B - 支持多处理系统中的可重新配置同步的架构和服务 - Google Patents

支持多处理系统中的可重新配置同步的架构和服务 Download PDF

Info

Publication number
CN109144685B
CN109144685B CN201810579231.0A CN201810579231A CN109144685B CN 109144685 B CN109144685 B CN 109144685B CN 201810579231 A CN201810579231 A CN 201810579231A CN 109144685 B CN109144685 B CN 109144685B
Authority
CN
China
Prior art keywords
synchronization
shared variable
shared
executable
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810579231.0A
Other languages
English (en)
Other versions
CN109144685A (zh
Inventor
S·王
S·G·卢斯科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of CN109144685A publication Critical patent/CN109144685A/zh
Application granted granted Critical
Publication of CN109144685B publication Critical patent/CN109144685B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multi Processors (AREA)

Abstract

提供一种多处理器系统中的同步方法。该方法包括:提供多个同步机制用于使多个并行可执行任务将访问的数据同步;对包括并行可执行任务的应用软件的设计信息和运行时间信息进行分析;基于所述分析标识出访问共享变量的并行可执行任务的软件体系结构模式;以及基于所述分析将软件体系结构模式中的每一个与同步机制中的一个或多个相关联。该方法进一步包括生成同步表的同步表表项,其标识出共享变量、访问共享变量的并行可执行任务的软件体系结构模式,以及与该软件体系结构模式相关联的一个或多个同步机制,并且还包括使用在同步表中标识的一个或多个同步机制来访问共享变量。

Description

支持多处理系统中的可重新配置同步的架构和服务
技术领域
本专利文献中描述的技术总体上涉及计算机系统,并且更具体地涉及通过并行执行任务来同步对多处理器计算机系统中的共享数据集的访问。
背景技术
现代车辆(例如,汽车、轿车、轻型卡车等等)采用了改善车辆的性能、舒适性、安全性等等的各种嵌入式电子控制器。这些控制器包括发动机控制器、悬架控制器、转向控制器、动力传动系控制器、气候控制系统、资讯娱乐系统控制器、底盘系统控制器等等。这些控制器可以用多处理器系统来实现。多处理器可以并行执行多个任务,且并行执行的任务中的一些可以访问共享数据集。
因此,需要提供一种改善了访问共享数据集的多个任务的数据访问同步的系统。此外,结合附图和本发明背景,通过随后的发明详述和所附的权利要求书,本发明的其他期望的特征和特性将变得显而易见。
发明内容
提供一种计算机系统。该计算机系统包括多个处理器核心以及包含可配置为执行方法的编程指令的非暂时性计算机可读存储介质。该方法包括:提供多个同步机制作为库服务,用于使将可在一个或多个处理器核心上执行的多个并行可执行任务访问的数据同步;对包括并行可执行任务的应用软件的设计信息和运行时间信息进行分析,以形成约束数据库,其中约束数据库包括访问共享变量的并行执行任务的软件体系结构模式;基于分析将软件体系结构模式中的每一个与同步机制中的一个或多个相关联;以及从约束数据库中生成同步表的同步表表项,其中同步表标识共享变量、访问共享变量的并行可执行任务的软件体系结构模式,以及与该软件体系结构模式相关联的一个或多个同步机制。该方法进一步包括:使用在同步表中标识的用于访问共享变量的一个或多个同步机制来访问共享变量,其中访问共享变量包括:在同步表中定位共享变量;在同步表中标识出分配给共享变量的一个或多个同步机制,等待直到授权访问共享变量;通过调用所分配的一个或多个同步机制来保护共享变量中的数据;根据所分配的一个或多个同步机制来调整任务执行;以及在完成对共享变量的访问后释放对共享变量的数据保护。
提供一种多处理器系统中的同步方法。该方法包括:提供多个同步机制作为库服务,用于使将可在一个或多个处理器核心上执行的多个并行可执行任务访问的数据同步;对包括并行可执行任务的应用软件的设计信息和运行时间信息进行分析;以及基于分析标识出访问共享变量的并行可执行任务的软件体系结构模式。该方法进一步包括:基于分析将软件体系结构模式中的每一个与同步机制中的一个或多个相关联;以及生成同步表的同步表表项,其标识出共享变量、访问共享变量的并行可执行任务的软件体系结构模式,以及与该软件体系结构模式相关联的一个或多个同步机制。该方法还包括:使用在同步表中标识的用于访问共享变量的一个或多个同步机制来访问共享变量。
附图说明
当结合附图阅读时,从以下的详细说明可更好地理解本发明的各方面。在附图中,相同的附图标记表示相同的元件,以及:
图1为根据一些实施例的示例性计算机系统的框图;
图2为根据一些实施例的示例性系统的框图,该示例性系统针对多个任务对共享数据集的数据访问动态地应用一个或多个同步机制;
图3为根据一些实施例的示例性进程的进程流程图,其中该示例性进程由系统用于针对共享数据访问动态地选择同步机制;
图4为根据一些实施例的示例性进程的进程流程图,其中该示例性进程由系统用于针对共享数据访问动态地选择同步机制;
图5为根据一些实施例的示例性进程的进程流程图,其中该示例性进程由系统用于针对共享数据访问动态地选择同步机制;
图6为根据一些实施例的用于调度同步表的生成以及用于生成同步表表项的示例性进程的进程流程图;
图7为根据一些实施例的示例性进程的进程流程图,其中该示例性进程由系统用于动态地选择同步机制,以保护数据;
图8为根据一些实施例的用于应用同步保护的示例性进程的进程流程图;以及
图9为根据一些实施例的用于在任务访问数据后释放同步保护的示例性进程的进程流程图。
具体实施方式
以下公开内容提供许多不同的实施例或实例,用于实现所提供的主题的不同特征。以下详细描述本质上仅仅是示例性的,并非意图限制本发明或本发明的应用和用途。此外,并不意图受前述背景技术或以下具体实施方式中所列的任何理论的限制。
图1为示例性计算机系统100的框图。示例性计算机系统100可以用于实现多处理器系统,如车辆101(例如汽车、轿车、轻型卡车等等)中使用的多核车辆控制器。示例性计算机系统100包括第一多核处理器102、第二多核处理器104和共享内存106。每个多核处理器102、104都包含多个处理器核心102a、102b、104a、104b。尽管对每个多核处理器102、104都仅示出了两个处理器核心,但在该实例中,多核处理器102、104可以包括两个以上的处理器核心。在该实例中,每个多核处理器102、104和共享内存106都各自位于单独的集成电路上。在另一实例中,多核处理器102、104可以位于同一个集成电路上,而该共享内存位于不同的集成电路上。在另一实例中,多核处理器102、104和共享内存106可以作为片上系统位于同一个集成电路上。
该示例性计算机系统可以执行包括多个任务的应用软件。每个处理器核心都具有本地内存112、114的访问权,并且能够执行所述任务中的一个或多个。在图示实例中,处理器核心102a能够执行任务108a、108b,处理器核心104a能够执行任务110a、110b。在一些实例中,一个任务可以由多个处理器核心共同执行。处理器核心102、104可以具有可供其任务访问以进行读写的本地内存112、114和/或共享内存106。
在执行期间,任务可以访问与一个或多个其他任务共享的数据集。共享数据集可以存储于本地内存112、114和/或共享内存106中。当存储于本地内存中时,共享数据集由同一个处理器核心执行的任务访问。当存储于共享内存106中时,共享数据集可以由同一个处理器核心执行的任务访问或由不同处理器核心执行的任务访问。
为了实现预测及想要的结果,访问共享数据集的多个任务可以有既定的访问顺序。作为一个实例,第一任务可能需要在第二任务访问数据(例如,从变量中读取数据)之前访问该数据(例如,将该数据写入该变量)。为了确保在多线程、多核和/或多处理器系统中数据访问如预期地发生,可以采用各种同步机制。可以使用的同步机制的实例包括包含锁定时间表、自旋锁、信号量、屏障、互斥体、读写锁、读拷贝更新、转门、条件变量、自适应互斥体的同步机制,以及非等待同步机制,如无等待或无锁同步等等。一些同步机制可能比其他机制更适合于特定软件体系结构。
本文中公开的装置、系统、技术和产品能够允许计算机系统为访问共享数据集的多个任务动态地提供适当的同步机制。该计算机系统可以提供同步机制作为服务,该服务能够通过应用程序接口的调用来访问。响应于应用软件对同步应用程序接口的调用,计算机系统可以采用适当的同步机制。
图2为示例性系统200的框图,该示例性系统针对多个任务对共享数据集的数据访问动态地应用一个或多个同步机制。所应用的同步机制由系统200基于访问共享数据集的任务之间的软件体系结构关系而动态地选择。
示例性系统200包括多个在一个或多个处理器核心上执行的任务202,该处理器核心访问一个或多个共享数据集204。示例性系统200包括同步选择206,其基于访问共享数据集的任务202之间的软件体系结构关系210为共享数据集204选择适当的同步机制208。
示例性系统200提供多个同步机制208a、208b、208c作为库服务,用于同步多个并行执行的任务202的数据访问。示例性系统200将多个软件体系结构模式210a、210b、210c中的每一个与同步机制208a、208b、208c中的一个或多个相关联。示例性系统200标识出共享数据集、标识出访问共享数据集的任务的软件体系结构模式,以及基于标识的体系结构模式选择一个或多个同步机制用于控制对共享数据集的访问。
在该实例中,第一同步机制208a包括锁定时间表的使用,第二同步机制208b包括自旋锁的使用,第三同步机制208c包括信号量和自旋锁的使用。还可以采用其他同步机制。
而且,在该实例中,第一体系结构模式210a包括任务间相同CPU模式,即访问共同数据集的不同任务由同一个处理器核心执行。第二体系结构模式210b包括任务内跨CPU模式,即共同任务中访问共同数据集的不同函数由不同处理器核心执行。第三体系结构模式210c包括任务间跨CPU模式,即访问共同数据集的不同任务由不同处理器核心执行。其他体系结构模式也可以得到认可。
示例性系统200在同步表212中记录关于共享数据集的标识、体系结构模式以及相关联的同步机制的信息。同步表212用于在应用软件执行过程中的同步选择206。本实例中的同步表包括两个组成部分:同步类型表和同步管理表。同步类型表记录共享数据集的标识符以及关于访问共享数据集的任务的软件体系结构模式的信息。同步管理表记录同步类型表中记录的共享数据集的标识符、用于控制对共享数据集的访问的同步机制、以及用于管理同步机制的实施的其他管理信息。
表1提供了示例性的同步类型表,而表2提供了示例性的同步管理表。
表1–示例性的同步类型表
Figure BDA0001687945350000061
在示例性的同步类型表中,为每个用于访问共享数据集的变量组创建一个记录或行。本实例中的每个行都包括:(i)共享数据集的变量组标识符;(ii)为变量组提供(例如写入)数据的可执行函数(又称可运行提供程序)的标识;(iii)调度可执行提供程序函数的任务的标识符;(iv)使用(例如读取)变量组中的数据的可执行函数(又称可运行使用程序)的标识;(v)调度可执行使用程序函数的任务的标识符;以及(vi)关于调度可执行提供程序函数的任务和调度可执行使用程序函数的任务是否由同一个处理器核心执行的指示。该信息标识了用于访问共享数据集的软件体系结构模式。该示例性表还示出了,当一个以上的变量组由同一函数访问时,可以将变量组合并在同步类型表中的同一记录中。该示例性同步类型表可以通过对应用软件中共享数据集的任务的静态依赖性分析而生成。
在图示实例中,变量组v1和v3由在任务T1中调度的函数RA_func1提供数据,其中包含的数据由分别在任务T2和T3中调度的函数RX_func3和RB_func5使用。在该实例中,任务T1和T2在不同的处理器核心上执行,任务T1和T3在同一个处理器核心上执行。同样,变量组v5和v7由在任务T2中调度的函数RY_func2提供数据,其中包含的数据由皆在任务T2中调度的函数RB_func2和RX_func1使用。由于可运行提供程序和可运行使用程序由同一个任务T2调度,因此在该记录在标识同一个核心。该表中包含的软件体系结构信息可以由系统使用以确定采用哪种同步机制。
表2–示例性的同步管理表
Figure BDA0001687945350000071
在示例性的同步管理表中,也为每个用于访问共享数据集的变量组创建一个记录或行。本实例中的每个行都包括:(i)共享数据集的变量组标识符;(ii)标识基于在可运行提供程序访问期间采用的软件体系结构分配的同步机制的提供计数器,以及同步机制计数器;(iii)标识基于在可运行使用程序访问期间采用的软件体系结构分配的同步机制的使用计数器,以及同步机制计数器;以及(iv)可以用于由于系统性能原因而限制可能并行活动的同步机制的数量的抢占上限。同步管理表可以通过应用软件的动态依赖性分析和吞吐量分析而生成,其能够基于软件体系结构模式和同步机制的管理约束来标识待应用的同步机制,以确保可接受的系统性能水平。
在图示实例中,可运行提供程序对变量组v1和v3的访问通过同步机制t_A以计数器c1和同步机制t_B以计数器c3同步,可运行使用程序对变量组v1和v3的访问通过同步机制t_A以计数c2和同步机制t_B以计数c4同步。同样,可运行提供程序对变量组v5和v7的访问通过同步机制t_A以计数c5和同步机制t_B以计数c7同步,可运行使用程序对变量组v5和v7的访问通过同步机制t_A以计数c6和同步机制t_B以计数c8同步。
同步管理表可以在应用软件的执行期间用于同步选择206。同步管理表可用于动态标识采用的同步机制。同步管理表还可以用于动态地限制在给定时间采用的同步机制的数量。具体地,在该实例中,在应用软件执行期间,同步选择206实施同步机制208a、208b、208c中的一个或多个以提供对共享数据集的访问。同步选择206查阅同步表212的同步管理表部分,以选择适当的同步机制来使用,并使用同步管理表来管理所选择的同步机制的实施。
图3为示例性进程300的进程流程图,其中该示例性进程由系统用于针对共享数据访问动态地选择同步机制。示例性进程300包括提供同步服务(操作302)。计算机系统能够提供多个同步机制,并在同步机制通过应用软件中的应用程序接口调用而调用时,选择适当的同步机制。
示例性进程300包括利用如何处理同步的具体规则为应用软件生成定制同步表(操作304)。同步表可以用于同步选择,可以包括两个组成部分:同步类型表和同步管理表。同步类型表可以通过对应用软件中共享数据集的任务的静态依赖性分析而生成。该分析可以在同步类型表中生成信息,该信息标识了用于访问共享数据集的软件体系结构模式。同步管理表可以通过应用软件的动态依赖性分析和吞吐量分析而生成。该分析可以标识适用于同步类型表中标识的软件体系结构模式的同步机制。同步管理表可以包括用于管理同步机制的使用的工具。工具可以包括能够用于由于系统性能原因而限制可能同时活动的同步机制的数量的抢占上限。工具可以包括同步机制的计数器,用于管理同步机制的使用。
示例性进程300还包括在软件执行期间将同步表应用于同步的共享数据(操作306)。在应用软件执行期间,当某个任务试图访问共享数据集或以其执行操作时,该任务对同步应用程序接口发出调用,其使得同步表中标识的同步机制被调用。用于管理同步机制的工具也可以被调用。
图4为示例性进程400的进程流程图,其中该示例性进程由系统用于针对共享数据访问动态地选择同步机制。示例性进程400包括与示例性进程300的操作类似的操作。该示例性进程包括提供同步服务(操作402),利用如何处理同步的具体规则为软件代码生成定制同步表(操作404),以及在软件执行期间将同步表应用于同步的共享数据(操作406)。
在该实例中,提供同步服务包括提供多个同步机制(操作408)。可以使用的同步机制的实例包括包含锁定时间表、自旋锁、信号量、屏障、互斥体、读写锁、读拷贝更新、转门、条件变量、自适应互斥体的同步机制、非等待同步机制,如无等待或无锁同步,等等。
在该实例中,提供同步服务包括还包括提供应用程序接口,用于调用同步(操作410)。应用软件可以通过共同的应用程序接口请求使用适当的数据同步机制,而不必针对同步机制的具体类型而特定地调整代码。
图5为示例性进程500的进程流程图,其中该示例性进程由系统用于针对共享数据访问动态地选择同步机制。示例性进程500包括与示例性进程300的操作类似的操作。该示例性进程包括提供同步服务(操作502),利用如何处理同步的具体规则为软件代码生成定制同步表(操作504),以及在软件执行期间将同步表应用于同步的共享数据(操作506)。
在该实例中,利用如何处理同步的具体规则为软件代码生成定制同步表包括对软件进行分析,以标识出共享变量和与访问该共享变量的任务相关联的软件体系结构模式(操作508)。可以执行应用软件中共享数据集的任务的静态依赖性分析,以标识出共享数据集和访问该共享数据集的软件体系结构模式。
在该实施例中,生成定制同步表还包括执行分析以标识出用于控制对共享数据集的访问的同步机制以及用于管理同步机制的实施的其他管理信息(操作510)。可以执行应用软件的动态依赖性分析和吞吐量分析,以基于软件体系结构模式和同步机制的管理约束来标识出待应用的同步机制,从而确保可接受的系统性能水平。
在该实例中,生成定制同步表另外还包括由分析结果生成表项(操作512)。本实例中的同步表包括两个组成部分:同步类型表和同步管理表。同步类型表记录共享数据集的标识符以及关于访问共享数据集的任务的软件体系结构模式的信息。同步管理表记录同步类型表中记录的共享数据集的标识符、用于控制对共享数据集的访问的同步机制、以及用于管理同步机制的实施的其他管理信息。该同步类型表可以采用表1中标识出的数据结构,同步管理表可以采用表2中标识出的数据结构。
图6为用于调度同步表的生成以及用于生成同步表表项的示例性进程600的进程流程图。该示例性进程包括迭代执行的静态依赖性分析602、动态依赖性分析604以及吞吐量分析606。静态依赖性分析602可以包括分析应用软件的设计信息,以标识出源代码中存在的依赖关系。动态依赖性分析604可以包括分析应用软件的运行时间信息,以标识出运行时间期间的依赖关系。吞吐量分析606可以包括分析应用软件执行性能。静态依赖性分析602、动态依赖性分析604以及吞吐量分析606的执行能够生成约束608的数据库。约束可以用于调度生成同步表(610)以及将同步表表项(612)填入到同步表中。
图7为示例性进程700的进程流程图,其中该示例性进程由系统用于针对共享数据访问动态地选择同步机制。示例性进程700包括与示例性进程300的操作类似的操作。该示例性进程包括提供同步服务(操作702),利用如何处理同步的具体规则为软件代码生成定制同步表(操作704),以及在软件执行期间将同步表应用于同步的共享数据(操作706)。
在该实例中,在软件执行期间应用同步表以同步共享数据包括应用同步表中标识的同步机制(操作708)。这可以包括:在同步表中定位所述共享变量;在同步表中标识出分配给所述共享变量的一个或多个同步机制,等待直到授权访问共享变量;通过调用所分配的一个或多个同步机制来保护共享变量中的数据;以及根据所分配的一个或多个同步机制来调整任务执行。在应用同步表中标识的同步机制之后,可以访问同步的变量(操作710)。在访问同步的变量之后,释放同步保护(操作712)。在访问共享变量之后释放该共享变量使得其他任务能够随后访问该共享变量。
图8为用于应用同步保护的示例性进程800的进程流程图。方法800包括判断待保护的变量组是否在同步类型表中(判定802)。若该变量组不在表中(判定802为否),该进程结束。若该变量组在表中(判定802为是),在同步类型表中定位该变量组(操作804)。将同步管理表中与变量组相关联的同步机制标识为使用,并对任何与该同步机制相关的管理计数进行更新(操作806)。在标识出同步机制之后,进行检查以判断是否已允许调用任务访问变量组(判定808)。若还未允许访问(判定808为否),该进程等待直至允许访问。若已允许访问(判定808为是),通过调用确定的同步机制来保护数据(操作810)。可以根据该确定的同步机制对任务执行进行调整(操作812)。在任务执行之后,进程800结束(操作814)。
图9为用于在任务访问数据后释放同步保护的示例性进程900的进程流程图。进程900包括在同步管理表中定位保护的变量组(操作902)。进程900进一步包括释放变量组以及更新相关的计数(操作904)。进程900结束(操作906)。
下面描述的是示例性代码,其可以嵌入到应用软件中以调用应用程序接口,从而调用同步服务。
组成元素
func_A()
{……SyncGetProtect(vgrp1);
SyncGetProtect(vgrp2);
localV=compute(vgrp1,vgrp2)
SyncGetRelease(vgrp2);
SyncGetRelease(vgrp1);
……SyncPutProtect(vgrp3);
write(vgrp3,localV);
SyncPutRelease(vgrp3);
……}
该示例性代码包括用于当可运行使用程序函数将访问数据集时使用同步的SyncGetProtect接口以及用于当可运行提供程序函数将访问数据集时使用同步的SyncPutProtect接口。SyncGetRelease接口用于在可运行使用程序函数已完成其数据访问后释放数据集,SyncPutRelease接口用于在可运行提供程序函数已完成其数据访问后释放数据集。
可以如本实例中所示出的使用变量的嵌套保护,以及若使用,以与调用保护接口防止死锁相反的顺序调用相应的释放接口。以与调用相应的保护接口相同的顺序访问多个保护的变量组。
本文描述了针对访问共享数据集的多个任务的数据访问动态地提供适当的同步机制的装置、系统、技术和产品。所述装置、系统、技术和产品可以提供同步机制作为服务,该服务能够通过应用程序接口的调用来访问。响应于应用软件对同步应用程序接口的调用,所述装置、系统、技术和产品可以采用适当的同步机制。
在一个实施例中,提供一种多处理器系统中的同步方法。该方法包括:提供多个同步机制作为库服务,用于使供可在一个或多个处理器核心上执行的多个并行可执行任务访问的数据同步;对包括并行可执行任务的应用软件的设计信息和运行时间信息进行分析;以及基于所述分析标识出访问共享变量的并行可执行任务的软件体系结构模式。该方法进一步包括:基于所述分析将软件体系结构模式中的每一个与同步机制中的一个或多个相关联;以及生成同步表的同步表表项,其标识出共享变量、访问共享变量的并行可执行任务的软件体系结构模式,以及与该软件体系结构模式相关联的一个或多个同步机制。该方法还包括:使用在同步表中标识的用于访问共享变量的一个或多个同步机制来访问所述共享变量。
这些方面以及其他实施例可以包括以下特征中的一个或多个。访问共享变量可以包括:在同步表中定位共享变量;在同步表中标识出分配给共享变量的一个或多个同步机制,等待直到允许访问该共享变量;通过调用所分配的一个或多个同步机制来保护所述共享变量中的数据;根据所分配的一个或多个同步机制来调整任务执行;以及在完成对所述共享变量的访问后释放对所述共享变量的数据保护。同步表可以包括同步类型表和同步管理表。同步类型表可以记录共享数据集的标识符以及关于访问共享数据集的任务的软件体系结构模式的信息。同步管理表可以记录同步类型表中记录的共享数据集的标识符、用于控制对共享数据集的访问的同步机制、以及用于管理同步机制的实施的其他管理信息。同步类型表可以包括针对每个共享变量的数据记录,其中每个记录都包括共享变量其中之一的标识符、为所述一个共享变量提供数据的可执行函数的标识、调度可执行提供程序函数的任务的标识符、使用来自所述一个共享变量的数据的可执行函数的标识、调度可执行使用程序函数的任务的标识符、以及关于调度可执行提供程序函数的任务和调度可执行使用程序函数的任务是否由同一个处理器核心执行的指示。关于访问共享变量的任务的软件体系结构模式的信息可以通过对任务的静态依赖性分析而确定。同步管理表可以包括针对每个共享变量的数据记录,并且每个记录都包括共享变量其中之一的标识符、分配给调度为所述一个共享变量提供数据的可执行函数的任务的同步机制的标识符、分配给使用来自所述一个共享变量的数据的可执行函数的任务的同步机制的标识符、以及可以用于限制可能并行活动的同步机制的数量的抢占上限计数。用于控制对共享变量的访问的同步机制可以通过应用软件的动态依赖性分析和吞吐量分析来确定。设计信息可以包括软件体系结构、执行任务、以及访问的数据。运行时间信息可以包括并行性、并行性、以及吞吐量。该方法可以进一步包括提供应用程序接口供软件应用程序调用,以在运行时间期间调用同步机制。调用应用程序接口可以包括在涉及共享变量的操作之前在软件应用程序中进行的保护操作,以及在涉及共享变量的操作之后在软件应用程序中进行的释放操作。保护操作可以包括当要将数据写入共享变量时的提供程序保护操作,以及当要从共享变量读取数据时的使用程序保护操作。对应于提供程序保护操作的释放操作可以包括提供程序释放操作,对应于使用程序保护操作的释放操作可以包括使用程序释放操作。访问共享变量还可以包括在与共享变量相对应的同步表中输入资源计数更新表项。释放共享变量可以进一步包括在与共享变量相对应的同步表中释放该资源计数更新表项。同步机制可以选自包括锁定时间表、自旋锁、信号量、屏障、互斥体、读写锁、读拷贝更新、转门、条件变量、自适应互斥体、以及无等待或无锁等非等待同步机制的组。
在另一实施例中,提供一种计算机系统。该计算机系统包括多个处理器核心以及包含可配置为执行方法的编程指令的非暂时性计算机可读存储介质。该方法包括:提供多个同步机制作为库服务,用于使供可在一个或多个处理器核心上执行的多个并行可执行任务访问的数据同步;对包括并行可执行任务的应用软件的设计信息和运行时间信息进行分析,以形成约束数据库,其中约束数据库包括访问共享变量的并行执行任务的软件体系结构模式;基于所述分析将软件体系结构模式中的每一个与同步机制中的一个或多个相关联;以及从约束数据库中生成同步表的同步表表项,其中同步表标识出共享变量、访问共享变量的并行可执行任务的软件体系结构模式,以及与该软件体系结构模式相关联的一个或多个同步机制。该方法进一步包括:使用在同步表中标识的用于访问共享变量的一个或多个同步机制来访问所述共享变量,其中访问共享变量可以包括:在同步表中定位共享变量;在同步表中标识出分配给共享变量的一个或多个同步机制,等待直到允许访问该共享变量;通过调用所分配的一个或多个同步机制来保护所述共享变量中的数据;根据所分配的一个或多个同步机制来调整任务执行;以及在完成对所述共享变量的访问后释放对所述共享变量的数据保护。
这些方面以及其他实施例可以包括以下特征中的一个或多个。同步表可以包括同步类型表和同步管理表。同步类型表可以记录共享数据集的标识符以及关于访问共享数据集的任务的软件体系结构模式的信息。同步管理表可以记录同步类型表中记录的共享数据集的标识符、用于控制对共享数据集的访问的同步机制、以及用于管理同步机制的实施的其他管理信息。同步类型表可以包括针对每个共享变量的数据记录,其中每个记录都包括共享变量其中之一的标识符、为所述一个共享变量提供数据的可执行函数的标识、调度可执行提供程序函数的任务的标识符、使用来自所述一个共享变量的数据的可执行函数的标识、调度可执行使用程序函数的任务的标识符、以及关于调度可执行提供程序函数的任务和调度可执行使用程序函数的任务是否由同一个处理器核心执行的指示。
同步管理表可以包括针对每个共享变量的数据记录,其中每个记录都包括共享变量其中之一的标识符、分配给调度为所述一个共享变量提供数据的可执行函数的任务的同步机制的标识符、分配给使用来自所述一个共享变量的数据的可执行函数的任务的同步机制的标识符、以及可以用于限制可能并行活动的同步机制的数量的抢占上限计数。
在另一实施例中,提供一种包含可配置为促使多处理器系统执行方法的编程指令的非暂时性计算机可读存储介质。该方法包括:提供多个同步机制作为库服务,用于使供可在一个或多个处理器核心上执行的多个并行可执行任务访问的数据同步;对包括并行可执行任务的应用软件的设计信息和运行时间信息进行分析,以形成约束数据库,其中约束数据库包括访问共享变量的并行执行任务的软件体系结构模式;基于所述分析将软件体系结构模式中的每一个与同步机制中的一个或多个相关联;以及从约束数据库中生成同步表的同步表表项,其中同步表标识出共享变量、访问共享变量的并行可执行任务的软件体系结构模式,以及与该软件体系结构模式相关联的一个或多个同步机制。该方法进一步包括:使用在同步表中标识的用于访问共享变量的一个或多个同步机制来访问所述共享变量,其中访问共享变量可以包括:在同步表中定位共享变量;在同步表中标识出分配给共享变量的一个或多个同步机制,等待直到允许访问该共享变量;通过调用所分配的一个或多个同步机制来保护所述共享变量中的数据;根据所分配的一个或多个同步机制来调整任务执行;以及在完成对所述共享变量的访问后释放对所述共享变量的数据保护。
前述内容概述了若干实施例的特征,使得本领域技术人员可以更好地理解本发明的各方面。本领域的技术人员应理解,他们可方便地使用本发明作为设计或更改实现本文中介绍的实施例的相同目的和/或实现相同优势的其他方法和结构的基础。本领域的技术人员应当认识到,这些同等结构不脱离本发明的精神和范围,可以不脱离本发明的精神和范围作出各种改变、替换和变型。

Claims (9)

1.一种多处理器系统中的同步方法,所述方法包括:
提供多个同步机制作为库服务,用于使供可在一个或多个处理器核心上执行的多个并行可执行任务访问的数据同步;
对包括所述并行可执行任务的应用软件的设计信息和运行时间信息进行分析;
基于所述分析标识出访问共享变量的并行可执行任务的软件体系结构模式;
基于所述分析将所述软件体系结构模式中的每一个与所述同步机制中的一个或多个相关联;
生成同步表的同步表表项,其标识出所述共享变量、所述并行可执行任务用于访问所述共享变量的软件体系结构模式,以及与所述软件体系结构模式相关联的所述一个或多个同步机制;以及
使用在所述同步表中标识用于访问所述共享变量的所述一个或多个同步机制来访问所述共享变量;
其中访问所述共享变量包括:
在所述同步表中定位所述共享变量;
在所述同步表中标识出分配给所述共享变量的所述一个或多个同步机制;
等待直到授权访问所述共享变量;
通过调用分配的一个或多个同步机制来保护所述共享变量中的数据;
根据所述分配的一个或多个同步机制来调整任务执行;以及
在完成对所述共享变量的访问后释放对所述共享变量的数据保护。
2.如权利要求1所述的方法,其中:
所述同步表包括同步类型表和同步管理表;
所述同步类型表记录所述共享变量的标识符以及关于访问所述共享变量的所述任务的软件体系结构模式的信息;并且
所述同步管理表记录所述同步类型表中记录的共享数据集的标识符、用于控制对所述共享变量的访问的所述同步机制、以及用于管理所述同步机制的实施的附加管理信息。
3.如权利要求2所述的方法,其中所述同步类型表包括针对每个共享变量的数据记录,并且其中每个记录都包括:
所述共享变量之一的所述标识符;
为一个共享变量提供数据的可执行提供程序函数的所述标识;
调度所述可执行提供程序函数的任务的标识符;
使用来自所述一个共享变量的数据的可执行使用程序函数的标识;
调度所述可执行使用程序函数的任务的标识符;以及
关于调度所述可执行提供程序函数的所述任务和调度所述可执行使用程序函数的所述任务是否由同一个处理器核心执行的指示。
4.如权利要求2所述的方法,其中关于访问共享变量的任务的所述软件体系结构模式的信息通过对所述任务的静态依赖性分析而确定。
5.如权利要求2所述的方法,其中所述同步管理表包括针对每个共享变量的数据记录,其中每个记录都包括:
用于分配给调度为所述共享变量提供数据的可执行函数的任务的所述同步机制的标识符;
用于分配给使用来自所述共享变量的数据的可执行函数的任务的所述同步机制的标识符;以及
可以用于限制可能并行活动的同步机制的数量的抢占上限计数。
6.一种计算机系统,包括:
多个处理器核心;以及
包含可配置为执行一种方法的编程指令的非暂时性计算机可读存储介质,所述方法包括:
提供多个同步机制作为库服务,用于使可将在一个或多个处理器核心上执行的多个并行可执行任务访问的数据同步;
对包括所述并行可执行任务的应用软件的设计信息和运行时间信息进行分析,以形成约束数据库,所述约束数据库包括访问共享变量的并行执行任务的软件体系结构模式;
从所述约束数据库中生成同步表的同步表表项,所述同步表标识出所述共享变量、访问所述共享变量的所述并行可执行任务的所述软件体系结构模式,以及与所述软件体系结构模式相关联的一个或多个同步机制;
使用在所述同步表中标识的用于访问所述共享变量的所述一个或多个同步机制来访问所述共享变量,其中访问所述共享变量包括:
其中访问所述共享变量包括:
在所述同步表中定位所述共享变量;
在所述同步表中标识出分配给所述共享变量的所述一个或多个同步机制;
等待直到授权访问所述共享变量;
通过调用分配的一个或多个同步机制来保护所述共享变量中的数据;
根据所述分配的一个或多个同步机制来调整任务执行;以及
在完成对所述共享变量的访问后释放对所述共享变量的数据保护。
7.如权利要求6所述的计算机系统,其中:
所述同步表包括同步类型表和同步管理表;
所述同步类型表记录所述共享变量的标识符以及关于访问所述共享变量的所述任务的软件体系结构模式的信息;并且
所述同步管理表记录所述同步类型表中记录的共享数据集的标识符、用于控制对所述共享变量的访问的所述同步机制、以及用于管理所述同步机制的实施的附加管理信息。
8.如权利要求7所述的计算机系统,其中所述同步类型表包括针对每个共享变量的数据记录,其中每个记录都包括:
所述共享变量之一的所述标识符;
为所述共享变量提供数据的可执行提供程序函数的所述标识;
调度所述可执行提供程序函数的任务的标识符;
使用来自所述共享变量的数据的所述可执行使用程序函数的所述标识;
调度所述可执行使用程序函数的任务的标识符;以及
关于调度所述可执行提供程序函数的所述任务和调度所述可执行使用程序函数的所述任务是否由同一个处理器核心执行的指示。
9.如权利要求7所述的计算机系统,其中所述同步管理表包括针对每个共享变量的数据记录,其中每个记录都包括:
用于分配给调度为所述共享变量提供数据的可执行函数的任务的所述同步机制的标识符;
用于分配给使用来自所述共享变量的数据的可执行函数的任务的同步机制的标识符;以及
可以用于限制可能并行活动的同步机制的数量的抢占上限计数。
CN201810579231.0A 2017-06-16 2018-06-07 支持多处理系统中的可重新配置同步的架构和服务 Active CN109144685B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/625,051 US10360079B2 (en) 2017-06-16 2017-06-16 Architecture and services supporting reconfigurable synchronization in a multiprocessing system
US15/625051 2017-06-16

Publications (2)

Publication Number Publication Date
CN109144685A CN109144685A (zh) 2019-01-04
CN109144685B true CN109144685B (zh) 2022-04-26

Family

ID=64457766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810579231.0A Active CN109144685B (zh) 2017-06-16 2018-06-07 支持多处理系统中的可重新配置同步的架构和服务

Country Status (3)

Country Link
US (1) US10360079B2 (zh)
CN (1) CN109144685B (zh)
DE (1) DE102018114322A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802965B2 (en) 2019-02-05 2020-10-13 Microsoft Technology Licensing, Llc Reducing synchronization reliance in garbage collection marking
US11422932B2 (en) 2019-12-20 2022-08-23 Microsoft Technology Licensing, Llc Integrated reference and secondary marking
US11392427B2 (en) * 2020-01-06 2022-07-19 Microsoft Technology Licensing, Llc Lock-free reading of unitary value sets
TWI782316B (zh) * 2020-08-24 2022-11-01 達明機器人股份有限公司 作業程序同步的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729290A (zh) * 2013-12-23 2014-04-16 华中科技大学 一种基于共享变量访问频度的采样率决策方法与系统
CN104615439A (zh) * 2015-02-13 2015-05-13 东南大学 一种可重构系统的配置控制器
CN105760216A (zh) * 2016-02-29 2016-07-13 惠州市德赛西威汽车电子股份有限公司 一种多进程同步控制方法
CN106200868A (zh) * 2016-06-29 2016-12-07 联想(北京)有限公司 多核处理器中共享变量获取方法、装置及多核处理器
CN106844232A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种面向多核处理器的共享末级高速缓存访存方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442758A (en) 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
JPH07262140A (ja) 1994-03-16 1995-10-13 Nec Corp 排他制御装置
US5630136A (en) * 1995-06-09 1997-05-13 Sun Microsystems, Inc. Method and apparatus for serializing access to multithreading unsafe resources
JP2000276457A (ja) 1999-03-25 2000-10-06 Mitsubishi Electric Corp データ共有コンピュータシステム及びクライアント
US6742026B1 (en) * 2000-06-19 2004-05-25 International Business Machines Corporation System and method for providing a distributable runtime
US7818723B2 (en) * 2004-09-07 2010-10-19 Sap Ag Antipattern detection processing for a multithreaded application
US8627331B1 (en) 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
JP6369176B2 (ja) * 2014-07-07 2018-08-08 富士通株式会社 情報処理装置、通信制御方法及びプログラム
US10417254B2 (en) * 2016-02-01 2019-09-17 Vmware, Inc. Intelligent content synchronization between content libraries
US10635660B2 (en) * 2016-10-17 2020-04-28 Amazon Technologies, Inc. Determining the state of data in database applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729290A (zh) * 2013-12-23 2014-04-16 华中科技大学 一种基于共享变量访问频度的采样率决策方法与系统
CN104615439A (zh) * 2015-02-13 2015-05-13 东南大学 一种可重构系统的配置控制器
CN105760216A (zh) * 2016-02-29 2016-07-13 惠州市德赛西威汽车电子股份有限公司 一种多进程同步控制方法
CN106200868A (zh) * 2016-06-29 2016-12-07 联想(北京)有限公司 多核处理器中共享变量获取方法、装置及多核处理器
CN106844232A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种面向多核处理器的共享末级高速缓存访存方法和装置

Also Published As

Publication number Publication date
US10360079B2 (en) 2019-07-23
US20180365080A1 (en) 2018-12-20
DE102018114322A1 (de) 2018-12-20
CN109144685A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
CN109144685B (zh) 支持多处理系统中的可重新配置同步的架构和服务
CN104866762B (zh) 安全管理程序功能
US20170116033A1 (en) Dynamic Co-Scheduling of Hardware Contexts for Parallel Runtime Systems on Shared Machines
US5832483A (en) Distributed control interface for managing the interoperability and concurrency of agents and resources in a real-time environment
US5136712A (en) Temporary object handling system and method in an object based computer operating system
US5129083A (en) Conditional object creating system having different object pointers for accessing a set of data structure objects
US20070204271A1 (en) Method and system for simulating a multi-CPU/multi-core CPU/multi-threaded CPU hardware platform
US20020087736A1 (en) Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products
US20100122253A1 (en) System, method and computer program product for programming a concurrent software application
US20070130569A1 (en) Method, apparatus and program storage device for providing a no context switch attribute that allows a user mode thread to become a near interrupt disabled priority
JPH0687222B2 (ja) アプリケーションとデータベース管理システム間の相互通信システム及び方法
GB2529074A (en) Graphics processor with non-blocking concurrent architecture
CN103699437A (zh) 一种资源调度方法及设备
CN103329102A (zh) 多处理器系统
KR20070108329A (ko) 하드웨어 공유 시스템 및 방법
Fonseca et al. Automatic parallelization: Executing sequential programs on a task-based parallel runtime
US20090320022A1 (en) File System Object Node Management
WO2012036791A1 (en) Run-time parallelization of computer software using data associated tokens
US20080184258A1 (en) Data processing system
EP2144163A1 (en) Method and system for synchronizing the execution of a critical code section
Atkins et al. Adaptable concurrency control for atomic data types
CN111989651A (zh) 在多核系统中管理内核服务的方法和装置
US20090320036A1 (en) File System Object Node Management
US11537508B1 (en) Software testing in parallel threads with a record-locking database
Van Wagensveld et al. Intra-task parallelism in automotive real-time systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant