CN116302583A - 半导体设备及其控制方法和程序 - Google Patents

半导体设备及其控制方法和程序 Download PDF

Info

Publication number
CN116302583A
CN116302583A CN202211635571.3A CN202211635571A CN116302583A CN 116302583 A CN116302583 A CN 116302583A CN 202211635571 A CN202211635571 A CN 202211635571A CN 116302583 A CN116302583 A CN 116302583A
Authority
CN
China
Prior art keywords
task
group
processor element
information
management information
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.)
Pending
Application number
CN202211635571.3A
Other languages
English (en)
Inventor
神田健太
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of CN116302583A publication Critical patent/CN116302583A/zh
Pending legal-status Critical Current

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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本公开涉及一种半导体设备及其控制方法和程序,在处理器中执行的任务上消除了复杂的排他控制处理。一种半导体设备,包括:存储任务管理信息和运行组管理信息的存储器;第一PE和第二PE;以及第一共享资源和第二共享资源,并且第一PE或第二PE被配置为参考运行组管理信息,并将第一PE或第二PE中可执行的任务组指定为可执行组,并且参考任务管理信息,并将与所指定的可执行组的组标识信息相关联的任务确定为第一PE或第二PE中接下来要被执行的任务。

Description

半导体设备及其控制方法和程序
相关申请的交叉引用
在2021年12月20日提交的日本专利申请No.2021-205996(包括说明书、附图和摘要)的公开内容全部通过引用并入本文。
技术领域
本发明涉及半导体设备及其控制方法和程序。
背景技术
近年来,微型计算机已被广泛用作安装在车载系统、工业设备、家用电器等上的半导体设备。在这样的微型计算机中,采用了能够在多个处理器中同时执行任务的多处理器系统。在多处理器系统中,由于从各个处理器对诸如共享存储器之类的共享资源的访问相互冲突,因此需要排他控制。
作为现有技术,公开了以下列出的技术。
[专利文献1]日本未审查专利申请公开No.2011-175378
专利文献1公开了在多处理器系统中发生共享资源的冲突时,能够防止处理器资源被持续消耗的技术。
发明内容
然而,在相关技术中,对于在处理器中执行的每个任务,需要执行复杂的排他控制处理。
其它目的和新颖特征将从说明书中的描述和附图中是明显的。
根据一个实施例,一种半导体设备包括存储器、第一处理器元件和第二处理器元件以及第一共享资源和第二共享资源。存储器存储程序、任务管理信息和运行组管理信息。第一共享资源和第二共享资源是能够从第一处理器元件和第二处理器元件访问的。任务管理信息是将在第一处理器元件或第二处理器元件中执行的任务与组标识信息彼此相关联的信息,该组标识信息相关用于标识与第一共享资源或第二共享资源相对应的组。运行组管理信息是针对组中的每个组指示与组的组标识信息相关联的任务是否在第一处理器元件或第二处理器元件中被执行的信息。第一处理器元件或第二处理器元件被配置为通过执行程序来:参考运行组管理信息,并且将在第一处理器元件或第二处理器元件中可执行的任务的组指定为可执行组;以及参考任务管理信息,并且将与所指定的可执行组的组标识信息相关联的任务确定为在第一处理器元件或第二处理器元件中接下来要被执行的任务。
根据该实施例,可以消除对在处理器中执行的每个任务的复杂的排他控制处理。
附图说明
图1是示出了根据实施例的半导体设备的概况的配置图。
图2是示出了根据第一实施例的多处理器系统的硬件配置的配置图。
图3是示出了根据第一实施例的多处理器系统的逻辑层配置的配置图。
图4是示出了根据第一实施例的RTOS数据和实时操作系统(RTOS)的配置的配置图。
图5是示出了根据第一实施例的RTOS数据的配置的配置图。
图6是示出了根据第一实施例的RTOS的配置的配置图。
图7是示出了根据第一实施例的用于生成RTOS数据的方法的图。
图8是示出了根据第一实施例的用于操作多处理器系统的方法的流程图。
图9是根据第一实施例的多处理器系统的具体示例的系统配置图。
图10是示出了根据第一实施例的多处理器系统的具体示例的RTOS初始设置文件的图。
图11是示出了根据第一实施例的多处理器系统的具体示例的任务管理信息的初始值的图。
图12是示出了根据第一实施例的多处理器系统的具体示例的情况1中的各个处理器元件(PE)的任务的状态的图。
图13是示出了根据第一实施例的多处理器系统的具体示例的情况1中的PE0的任务管理信息和调度管理信息的图。
图14是示出了根据第一实施例的多处理器系统的具体示例的情况1中的PE1的任务管理信息和调度管理信息以及运行组管理信息的图。
图15是示出了根据第一实施例的多处理器系统的具体示例的情况2中的各个PE的任务的状态的图。
图16是示出了根据第一实施例的多处理器系统的具体示例的情况2中的PE0的任务管理信息和调度管理信息以及运行组管理信息的图。
图17是示出了根据第一实施例的多处理器系统的具体示例的情况3中的各个PE的任务的状态的图。
图18是示出了根据第一实施例的多处理器系统的具体示例的情况3中的PE1的任务管理信息和调度管理信息以及运行组管理信息的图。
图19是示出了根据第一实施例的多处理器系统的具体示例的情况4中的各个PE的任务的状态的图。
图20是示出了根据第一实施例的多处理器系统的具体示例的情况4中的PE0的任务管理信息和调度管理信息以及运行组管理信息的图。
图21是示出了根据第一实施例的多处理器系统的具体示例的情况5中的各个PE的任务的状态的图。
图22是示出了根据第一实施例的多处理器系统的具体示例的情况5中的PE1的任务管理信息和调度管理信息以及运行组管理信息的图。
图23是示出了根据第一实施例的多处理器系统的具体示例的情况6中的各个PE的任务的状态的图。
图24是示出了根据第一实施例的多处理器系统的具体示例的情况6中的PE1的任务管理信息和调度管理信息的图。
图25是示出了根据第一实施例的多处理器系统的具体示例的情况7中的各个PE的任务的状态的图。
图26是示出了根据第一实施例的多处理器系统的具体示例的情况7中的PE0的任务管理信息和调度管理信息的图。
图27是示出了根据第一实施例的多处理器系统的具体示例的情况7中的PE1的任务管理信息和调度管理信息以及运行组管理信息的图。
图28是示出了比较示例的多处理器系统中的任务的转移的示例的图。
图29是示出了根据第一实施例的多处理器系统中的任务的转移的示例的图。
图30是示出了根据第二实施例的多处理器系统的硬件配置的配置图。
图31是示出了根据第二实施例的RTOS和RTOS数据的配置的配置图。
图32是示出了根据第二实施例的RTOS数据的配置的配置图。
图33是示出了根据第二实施例的RTOS的配置的配置图。
图34是示出了根据第二实施例的用于操作多处理器系统的方法的流程图。
图35是示出了根据第二实施例的用于操作多处理器系统的方法的流程图。
图36是示出了根据第一实施例的多处理器系统中的任务的转移的示例的图。
图37是示出了根据第二实施例的多处理器系统中的任务的转移的示例的图。
具体实施方式
在下文中,参考附图对实施例给出了描述。为了使说明清楚,适当地省略和简化以下描述和附图。另外,图中描述的各个元件(该元件是执行各种处理的功能块)在硬件方面可以由CPU、存储器以及其他电路构成,并且在软件方面可以通过加载到存储器中的程序等来实现。因此,本领域技术人员可以理解,这些功能块可以仅通过硬件、仅通过软件或它们的组合以多种形式来实现。功能块不限于以上任何一种。注意,在整个附图中,相同的参考标号被指派给相同的元件,并且根据需要省略重复的说明。
相关技术研究
近年来,随着车载系统的计算机化的发展,现在在车辆上搭载有多个行数的软件的系统。车载系统的软件开发商需要在短时间内开发被合并到每个车载系统中的大规模软件。为了在短交付时间内开发大型软件,期望一种用于提高软件多样性的技术和一种用于促进软件开发的技术。
同时,由于漏电流和可靠性的问题,CPU的操作频率已经达到其极限,并且作为替代方法,采取了通过在其中将两个或更多个CPU安装在一个半导体芯片上的多处理器系统同时执行软件来提高性能的措施。
多处理器系统的软件开发面临着一个挑战,即必须在应用程序中对处理器之间的共享资源进行排他控制。因此,多处理器系统的软件开发比单处理器系统的软件开发更加复杂和困难。
作为用于多处理器系统中的共享资源的排他控制方法,已知一种用于获取和释放共享资源的锁的锁方法。锁方法包括自旋锁方法和休眠锁方法。自旋锁方法是在任务获取锁之前持续忙等待、并且为了获取和释放锁而持续地对锁变量进行访问的方法。另外,休眠锁方法是在任务无法获取锁时使任务休眠并且在锁被释放时唤醒任务以获取锁的方法。在自旋锁方法中,处理器在忙等待中被浪费,而在休眠锁方法中,在休眠时和唤醒时都需要处理器执行时间。
为此,在上述专利文献1中,通过在共享资源的锁被任务保持的同时基于保持时段在自旋锁方法的等待和休眠锁方法的等待之间进行切换来防止CPU的浪费。
但是,在诸如专利文献1之类的现有技术中,并未考虑软件的多样性。本文中所提及的软件的多样性是指工作在单处理器系统上的软件直接被用于多处理器系统的情况。在一般的多处理器系统中,在进程处理期间操作处理器之间的共享资源的情况下,必须向进程的程序添加用于获取锁的处理。同样,在对处理器之间的共享资源的操作完成之后,也必须添加用于释放锁的处理。此外,还设想了在对某个共享资源获取锁的时段期间对其他共享资源执行这样的锁获取的情况(嵌套锁)。嵌套锁具有生成在多处理器中固有的诸如死锁和活锁之类的故障的危险。因此,向进程(任务)添加锁获取处理和锁释放处理并不容易。
实施例的概况
图1示出了根据实施例的半导体设备的示意性配置。根据实施例的半导体设备10构成多处理器系统。如图1中所示,半导体设备10包括:第一处理器元件(PE)11a和第二处理器元件(PE)11b;第一共享资源(SR)12a和第二共享资源(SR)12b;以及存储器13。存储器13存储程序14、任务管理信息15和运行组管理信息16。程序14包括操作系统(OS)和应用程序。
第一PE 11a和第二PE 11b是彼此独立工作的执行单元,并且能够彼此并发地执行任务。每个任务是被包括在应用程序中的预定处理的单元。例如,一项任务在一个PE中是可执行的。注意,程序不仅可以以任务为单位执行,也可以以进程或线程为单位执行。第一PE11a和第二PE 11b根据被存储在存储器13中的应用程序来执行任务的处理。
第一共享资源12a和第二共享资源12b可以独立地从第一PE 11a和第二PE 11b访问。也就是说,第一共享资源12a和第二共享资源12b可以从在第一PE 11a和第二PE 11b中独立地执行的任务访问。第一共享资源12a和第二共享资源12b是共享存储器等。第一共享资源12a和第二共享资源12b不限于存储器,并且还包括其他存储装置和网络资源、其他系统资源等等。第一共享资源12a和第二共享资源12b可以同时从第一PE 11a和第二PE 11b上的多个任务访问,并且对其的访问相互冲突,并且因此需要对其进行排他控制。
任务管理信息15是将在第一PE 11a或第二PE 11b中执行的任务与用于标识与第一共享资源12a或第二共享资源12b相对应的组的组标识信息彼此关联的信息。也就是说,针对由此访问的共享资源中的每一个,对各个任务进行归组。运行组管理信息16是针对每个组指示与该组的组标识信息相关联的每个任务是否在第一PE 11a或第二PE 11b中被执行的信息。
第一PE 11a或第二PE 11b执行作为操作系统的程序14,从而实现调度在第一PE11a或第二PE 11b中执行的任务的功能。具体地,第一PE 11a或第二PE 11b执行程序14,从而参考运行组管理信息16,将在第一PE 11a或第二PE 11b中可执行的这类任务的组指定为可执行组。第一PE 11a或第二PE 11b参考任务管理信息15,并且将与所指定的可执行组的组标识信息相关联的每个任务确定为接下来要执行的任务。例如,第一PE 11a或第二PE11b参考运行组管理信息16,并且将在其中与组的组标识信息相关联的任务未在第一PE11a或第二PE 11b中被执行的组指定为可执行组。
如上所述,在实施例中,在构成多处理器系统的半导体设备中,任务与共享资源的组相关联,在OS侧上针对每个组管理从任何处理器访问共享资源的任务的执行状态,并且基于各组的任务的执行状态来调度下一个任务。因此,针对从任务访问的共享资源的排他控制不是通过任务的应用程序侧实现的,而是通过在OS侧上的任务调度实现的。
因此,根据实施例,多处理器系统的软件开发者在任务处理期间不必关心处理器之间的资源冲突,并且应用程序不需要复杂的排他控制处理,并且因此,它可以降低开发软件的难度。此外,可以提高为单处理器系统已开发的软件的多样性。
第一实施例
接下来,将描述根据第一实施例的多处理器系统。在本实施例中,在OS的调度功能中,针对访问共享资源的每组任务执行排他控制。
系统配置
接下来,将描述本实施例的系统配置。图2示出了根据本实施例的多处理器系统的硬件配置。图3示出了根据本实施例的多处理器系统的逻辑层配置。根据本实施例的多处理器系统100是实现实时操作系统(RTOS)的微型计算机(半导体设备)。
如图2中所示,多处理器系统100包括多个PE 101(例如PE 101a至101n)和存储器102。PE 101a至101n和存储器102经由总线103彼此连接。PE 101a至101n能够经由总线103访问存储器102。
每个PE 101是包括CPU核心并执行程序的计算设备。PE 101从存储器102中读出OS和应用程序等程序,并执行读出的程序,从而实现程序的各功能。PE 101a至101n包括分别用于在处理要被执行的程序时使用的寄存器(REG)104a至104n。
存储器102是存储由PE 101使用的程序和数据的存储设备。存储器102是诸如闪存之类的非易失性存储器或诸如静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)之类的易失性存储器。
存储器102包括程序区110和数据区120。程序区110是用于存储PE 101可执行的程序的区域。数据区120是用于存储处理程序所需的数据的区域。
程序区110在其中存储RTOS 111、用户应用程序112等等。RTOS111是针对实时系统的基本软件。基础软件的功能包括调度在PE 101中执行的任务等等。RTOS 111为应用程序提供系统调用,用于调用基础软件的各种功能。
如图3中所示,RTOS 111为多处理器系统100的每个PE 101提供基本软件的功能。也就是说,由每个PE 101读取并执行RTOS 111,从而在每个PE 101中实现诸如调度之类的各种功能。
用户应用程序112是由用户开发的应用程序。用户应用程序112包括软件组件SW-C,每个软件组件SW-C为每个PE 101服务。每个软件组件SW-C包括由每个PE 101执行的任务。任务是执行程序的处理的单元。每个任务通过从软件组件SW-C调用RTOS 111的系统调用而被开始,然后被执行。
如图3中所示,用户应用程序112的每个软件组件SW-C经由RTOS 111的功能而在每个PE 101上工作。软件组件SW-C包括在PE101中执行的多个任务(Ts)。软件组件SW-C在对应的PE 101中被读取并执行,从而在PE 101上实现任务的功能。
数据区120存储RTOS数据121等等。RTOS数据121是在执行RTOS 111时的时刻处所需的数据。也就是说,RTOS数据121根据在PE 101中执行的RTOS 111的处理而被PE 101参考和更新。此外,数据区120还包括在用户应用程序112被执行时的时刻处所需的应用数据。
此外,多处理器系统100包括从各个PE 101的任务访问的多个共享资源SR。在本实施例中,如图3中所示,访问共享资源SR的任务针对每个共享资源SR而被归组。例如,在各个PE 101中执行的任务之中,访问共享资源SR1的任务被定义为组1(Gr1)的任务。此外,访问共享资源SR2的任务被定义为组2(Gr2)的任务。此外,访问共享资源SR3的任务被定义为组3(Gr3)的任务。在RTOS 111的调度中,对与共享资源SR相对应的每个组执行针对任务的排他控制。
图4示出了根据本实施例的RTOS的功能配置和RTOS数据的数据配置。如图4中所示,RTOS数据121包括任务管理信息230、调度管理信息240和运行组管理信息250。
任务管理信息230是用于管理在PE 101中执行的任务的信息。任务管理信息230是以一对一的关系被指派给任务的信息。每条任务管理信息230包括任务的标识信息、任务的状态、用于调度的任务的优先级等等。此外,为了管理每个共享资源SR组的任务,任务管理信息230包括由任务所使用的每个共享资源SR组的标识信息。任务管理信息230将这些条信息与任务相关联。
调度管理信息240是用于管理PE 101中的任务的调度的信息。调度管理信息240是以一对一的关系被指派给PE 101的信息。每条调度管理信息240例如包括关于等待被执行的任务的信息、最高任务优先级、关于正在运行的任务的信息等等。此外,为了管理每个组的共享资源SR的调度,调度管理信息240包括每个组的最高任务优先级。
运行组管理信息250是用于管理在多处理器系统100中运行的一组任务的信息。运行组管理信息250是指派给多处理器系统100的唯一信息。运行组管理信息250包括指示针对多处理器系统100中的每个组是否存在运行任务的信息。
通过由每个PE 101执行RTOS 111所实现的RTOS功能111a包括任务管理控制单元210和调度管理控制单元220。任务管理控制单元210管理和控制PE 101中的每个任务的状态。任务管理控制单元210参考并更新任务管理信息230、作为执行目标的PE 101的调度管理信息240和每个任务所属组的运行组管理信息250,并且管理每个任务的状态。任务管理控制单元210被用户应用程序112(软件组件)调用,并且根据这样的调用来控制任务的操作。任务管理控制单元210从用户应用程序112接收任务开始请求或任务停止请求,并将任务的状态和任务的寄存器信息存储在任务管理信息230中。
此外,任务管理控制单元210也可以说是针对共享资源SR的每个组管理每个任务的执行状态。例如,在各个PE 101中执行的任务之中,任务管理控制单元210管理访问共享资源SR1的组1的每个任务的执行状态和访问共享资源SR2的组2的每个任务的执行状态。任务管理控制单元210参考并更新运行组管理信息250,从而管理每个组的任务是否在任何PE101中运行。例如,任务管理控制单元210管理访问共享资源SR1的组1的任务是否在各个PE101中的任何一个中被执行,并且管理访问共享资源SR2的组2的任务是否在各个PE 101中的任何一个中被执行。
调度管理控制单元220管理和控制每个PE 101中的任务的调度。调度管理控制单元220参考并更新任务管理信息230、作为执行目标的PE的调度管理信息240、任务所属组的运行组管理信息250,并且对任务进行调度。调度管理控制单元220从任务管理控制单元210调用,接收调度管理信息240和运行组管理信息250,并指定接下来要开始的任务。
此外,基于针对每个组的任务的执行状态,调度管理控制单元220确定接下来要被执行的每个组的任务。例如,基于访问共享资源SR1的组1的任务的执行状态,调度管理控制单元220确定在每个PE 101中接下来要被执行的组1的任务。此外,基于访问共享资源SR2的组2的任务的执行状态,调度管理控制单元220确定在每个PE 101中接下来要被执行的组2的任务。在调度时属于一个组的任务时,当该组的任务没有在任何PE 101中运行时,调度管理控制单元220对该组中被调度为接下来要被执行的一个任务进行调度,以使得该任务在任何一个PE 101中被执行。当该组的任务在任何一个PE 101中运行时,调度管理控制单元220暂停执行该组中被调度为接下来要被执行的任务(也就是说,该任务是要被开始的候补)。
此外,调度管理控制单元220对被调度为接下来要被执行的任务之中具有最高优先级的一个任务进行调度,以使得具有最高优先级的该任务被执行。也就是说,基于针对每个组的任务的执行状态并且基于每个组的任务的这种优先级,调度管理控制单元220调度接下来要被执行的每个组的任务。例如,基于组1的任务的执行状态和组1的任务的优先级,调度管理控制单元220确定在每个PE 101中接下来要被执行的组1的任务。此外,基于组2的任务的执行状态和组2的任务的优先级,调度管理控制单元220确定在每个PE 101中接下来要被执行的组2的任务。在调度属于该组的任务时,调度管理控制单元220确定该组的任务是否正在所有PE 101中运行。当该组的任务没有在任何PE 101中运行时,调度管理控制单元220对该组中被调度为接下来要被执行的任务中具有最高优先级的一个任务进行调度,以使得该任务在PE 101中被执行。注意,在没有为任务设置这样的组的情况下(这种情况被称为非组(无组)),任务只基于其优先级进行调度。
图5示出了根据本实施例的包括在RTOS数据中的各条信息的配置。如图5中所示,任务管理信息230包括任务组ID(GrID)231、任务状态(Stt)232、任务堆栈信息(Stc)233、任务开始地址(Add)234和任务优先级(Pr)235。
任务组ID 231是用于识别任务所属的组(也就是说,组是任务访问的共享资源)的标识信息。例如,当组(共享资源)的数量为x+1时,组ID将变为0到x。x是任意值,并且在用户对RTOS进行初始设置时被确定。
任务状态232是指示任务状态的信息。例如,对于任务状态232,设置对应于任务状态的位图值。对于任务状态232,设置了运行状态、暂停状态、就绪状态和终止状态中的任何一个。运行状态是在PE 101上执行(运行)任务的状态。暂停状态是在PE 101上不执行(不需要执行)任务的状态。就绪状态是任务准备好在PE 101上执行的状态。终止状态是任务未准备好在PE 101上执行的状态。
任务堆栈信息233是临时存储(堆栈)寄存器104的值以供任务在PE 101上工作时使用的缓冲器。任务开始地址234是指示用户应用程序112在PE 101开始处理任务时的时刻处读取的地址的细节的信息。任务优先级235是指示用于调度的任务的优先级的值的信息。例如,任务优先级235是从1到n的任意值。n是任意的最高优先级值,并且一般在用户对RTOS进行初始设置时被确定。在本实施例中,假设优先级1为最低优先级,而优先级n为最高优先级。
调度管理信息240包括就绪任务信息241、组最高优先级信息242、最高优先级信息243和运行任务ID 244。就绪任务信息241是针对每个优先级而转入到就绪状态的任务的任务ID。例如,就绪任务信息241被存储在针对每个优先级的结构数组中。在结构数组中,具有相同优先级的处于就绪状态的此类任务的任务ID按照转入到就绪状态的顺序而相互连接。每个结构存储缓冲器(结构)的地址信息,该缓冲器(结构)存储了处于就绪状态的任务的任务ID和处于下一个就绪状态的任务(也就是说,接下来要转入到就绪状态的任务)的任务ID。
组最高优先级信息242是针对每个组指示处于就绪状态的任务中的最高优先级的值的信息。组最高优先级信息242例如被存储在组0(Gr0)到组x(Gr x)的数组中。当在这样的关注组中不存在处于就绪状态的任务时,将0存储在该组的组最高优先级信息242中。
最高优先级信息243是指示PE 101中的处于就绪状态的任务中的最高优先级的值的信息。当处于就绪状态的任务不存在于PE 101中时,将0存储在最高优先级信息243中。运行任务ID 244是PE 101中的处于运行状态的任务的任务ID。当不存在处于运行状态的任务时,将0存储在运行任务ID 244中。
运行组管理信息250是指示运行任务所属组的信息,运行任务在多处理器系统100的任何PE 101中运行。例如,运行组管理信息250由位图表组成,在位图表中,位被一一指派给组0到组x。1被设置为与组0到组x之中的一个组相对应的预定位,其中处于运行状态的任务存在于多处理器系统100上。0被设置为与组0到组x之中的一个组相对应的预定位,其中处于运行状态的任务不存在于多处理器系统上。
图6示出了根据本实施例的包括在RTOS功能111a中的任务管理控制单元210和调度管理控制单元220的配置。如图6中所示,任务管理控制单元210包括存储单元211、返回单元212和开始单元213。调度管理控制单元220包括组确定单元221、组更新单元222和调度更新单元223。.
存储单元211从用户应用程序112调用,并且在任务管理信息230中存储所需任务的状态和保存在每个PE 101的寄存器104中的信息。基于已经进行存储的任务管理信息230,存储单元211更新调度管理信息240和运行组管理信息250。此外,存储单元211调用调度管理控制单元220的组确定单元221,并请求任务调度。
根据来自存储单元211的调用,组确定单元221确定接下来要开始的任务的组。基于运行组管理信息250和调度管理信息240,组确定单元221将一组可执行任务确定为可执行组。组确定单元221参考运行组管理信息250,并且将在PE 101中的一些中未执行任务的组确定为可执行组。
基于由组确定单元221所确定的任务的组,组更新单元222更新该组的运行组管理信息250。基于调度管理信息240,组更新单元222确定组中接下来要开始的任务的任务ID。由于基于任务管理信息230来更新调度管理信息240,所以组更新单元222可以参考调度管理信息240和任务管理信息230,并且可以确定接下来要开始的任务。调度管理信息240可以参考任务管理信息230,并且可以将与可执行组相关联的任务确定为在任何PE 101中接下来要开始的任务。此外,调度管理信息240可以参考任务管理信息230,并且可以将与可执行组相关联的此类任务之中的任何PE 101中可执行的任务确定为在任一个PE 101中接下来要开始的任务。此外,调度管理信息240可以参考任务管理信息230,并且可以将在与可执行组相关联的此类任务之中的任何PE 101中可执行并且具有最高优先级的任务确定为在任何PE 101中接下来要开始的任务。
调度更新单元223基于由组更新单元222所获取的任务ID来更新调度管理信息240。此外,调度更新单元223调用任务管理控制单元210的返回单元212,并且对其做出请求以开始任务。
根据来自调度更新单元223的调用,返回单元212返回所请求的任务开始所需的信息。返回单元212将存储在开始的任务管理信息230中的寄存器信息返回到PE 101的寄存器104。基于由返回单元212返回的信息,开始单元213开始PE 101上的任务。
RTOS初始设置
接下来,对本实施例的数据的初始设置方法进行描述。图7示出了根据本实施例的生成RTOS数据的配置。如图7中所示,RTOS数据121由生成设备302通过使用RTOS初始设置文件301来生成并被初始设置。
RTOS初始设置文件301是由用户生成的用于RTOS初始设置的配置文件。在RTOS初始设置文件301中,描述了由用户设置的那些内容,即每个任务的优先级和组、此类任务的最高优先级、任务的组的数量等等。
生成设备302是基于RTOS初始设置文件301来生成RTOS数据121的配置器。生成设备302读取由用户设置的RTOS初始设置文件301,并且基于读取的RTOS初始设置文件301来生成并初始设置RTOS数据121。另外,生成设备302与多处理器系统100(半导体设备)连接,并且将所生成的RTOS数据121写入到多处理器系统100的存储器102的数据区120。
生成设备302生成并初始设置任务管理信息230、调度管理信息240和运行组管理信息250,这些信息被包括在RTOS数据121中。生成设备302生成数量与在RTOS初始设置文件301中描述的任务数量相等的任务管理信息230,并且基于因此被描述的每个任务的定义内容来对每条任务管理信息230进行初始设置。例如,基于在RTOS初始设置文件301中描述的每个任务的组的定义,生成设备302设置任务管理信息230的任务组ID 231。基于RTOS初始设置文件301中描述的每个任务的优先级的定义,生成设备302设置任务管理信息230的任务优先级235。此外,生成设备302在任务管理信息230中将任务状态232、任务堆栈信息233和任务开始地址234设置为它们的初始值。
此外,生成设备302生成数量与在RTOS初始设置文件301中描述的处理器元件的数量相等的调度管理信息240,并且基于因此被描述的每个处理器元件的定义内容来对每条调度管理信息240进行初始设置。例如,基于RTOS初始设置文件301中的此类任务的最高优先级的定义,生成设备302生成调度管理信息240的就绪任务信息241的结构数组,并将初始值(0)设置到所生成的结构数组。基于RTOS初始设置文件301中的任务组的数量的定义,生成设备302生成调度管理信息240的各条组最高优先级信息242的数组,并且将初始值(0)设置到所生成的数组。此外,生成设备302对调度管理信息240中的最高优先级信息243和运行任务ID 244设置初始值。
此外,生成设备302生成运行组管理信息250,并基于RTOS初始设置文件301的描述来对运行组管理信息250进行初始设置。例如,基于在RTOS初始设置文件301中的任务组的数量的定义,生成设备302生成运行组管理信息250的位图,并且将初始值(0)设置到所生成的位图。
系统操作
接下来,将描述用于操作本实施例的系统的方法。图8是示出了根据本实施例的用于操作多处理器系统的方法的流程图。
如图8中所示,首先,在S100中,任务管理控制单元210存储任务的寄存器信息。也就是说,当从用户应用程序112被调用时,存储单元211获取保存在PE 101的寄存器104中的信息,该PE 101正在被调用所请求(例如,请求停止)的运行任务所使用。此外,存储单元211将保存在寄存器104中的所获取的信息存储在任务的任务管理信息230中的任务堆栈信息233中。该任务正在使用的寄存器104的信息还包括当针对任务的处理恢复时该信息返回到的地址的细节。
接下来,在S101中,任务管理控制单元210更新任务状态。也就是说,根据请求,存储单元211将请求的运行任务的任务管理信息230中的任务状态232从运行状态(运行状态)更新为另一状态(例如暂停状态)。
接下来,在S102中,根据任务状态的更新,任务管理控制单元210更新运行组管理信息250和调度管理信息240。当由存储单元211进行的处理被来自用户应用程序112的任务停止请求调用时,存储单元211如下执行更新处理。也就是说,在运行组管理信息250的位图中,存储单元211设置为0并更新与直到最近一直在运行的任务(请求的任务)所属的组相对应的位。此外,存储单元211从在其中直到最近一直在运行任务的PE 101的调度管理信息240中的就绪任务信息241中删除直到最近一直在运行的任务的任务ID。此外,存储单元211将调度管理信息240中的运行任务ID 244设置为0。
同时,当存储单元211被来自用户应用程序112的任务开始请求调用时,存储单元211如下执行寄存处理。也就是说,存储单元211在执行请求开始的任务的PE 101的调度管理信息240中的就绪任务信息241中寄存请求开始的任务的任务ID。存储单元211参考任务管理信息230中的任务的任务优先级235,并且将请求开始的任务的任务ID寄存在该优先级的就绪任务信息241中。
此外,在开始请求的情况下,存储单元211参考调度管理信息240中的最高优先级信息243,并将最高优先级信息243与请求开始的任务的任务管理信息230中的任务优先级235进行比较。当任务的任务优先级235高于最高优先级信息243时,存储单元211将调度管理信息240中的最高优先级信息243的值更新为请求开始的任务的任务优先级235的值。此外,当最高优先级信息243与任务的任务优先级235相同时,或者当任务的任务优先级235低于最高优先级信息243时,存储单元211不更新调度管理信息240中的最高优先级信息243。
此外,在开始请求的情况下,存储单元211参考调度管理信息240中的组最高优先级信息242。通过该参考,存储单元211比较请求开始的任务的组的组最高优先级信息242与请求开始的任务的任务管理信息230中的任务优先级235。当任务优先级235高于组最高优先级信息242时,存储单元211将请求开始的任务的组的组最高优先级信息242的值更新为请求开始的任务的任务优先级235的值。此外,当组最高优先级信息242与任务优先级235相同时,或者当任务优先级235低于组最高优先级信息242时,存储单元211不更新组最高优先级信息242。
接下来,在S103中,调度管理控制单元220将可执行任务的组指定为可执行组,并且在S104中确定是否存在可执行组。也就是说,例如,在从存储单元211或空闲处理程序(handler)调用时,组确定单元221参考运行组管理信息250。通过该参考,当运行组管理信息250的位图中的任何位为0时,组确定单元221指定与位0的位置相对应的组。此外,组确定单元221参考响应于该调用的PE 101的调度管理信息240中的组最高优先级信息242。通过该参考,组确定单元221确认与指定组相对应的最高优先级的值。
当指定组的组最高优先级信息242的值为0时,不存在属于该组并准备执行的任务。因此,组确定单元221再一次参考运行组管理信息250,并搜索为0的位的位置。此外,当运行组管理信息250的所有位都为1时,组确定单元221在S104中确定不存在可执行组。此外,当组的各条组最高优先级信息242全部为0时,组确定单元221在S104中确定不存在可执行组。在这种情况下,组确定单元221将处理转移到S105。此外,当运行组管理信息250的组的位为0时,并且当该组的组最高优先级信息242的值不为0时,组确定单元221在S104中确定存在可执行组。也就是说,当组中不存在运行任务并且当组中存在处于就绪状态的任务时,组确定单元221在S104中确定存在可执行组。在这种情况下,组确定单元221将处理转移到S106。
在S105中,调度管理控制单元220将处理转移到空闲处理程序。也就是说,由于不存在可执行任务,所以组确定单元221将处理转移到空闲处理程序。当空闲处理程序中的处理完成时,处理返回到S103。
此外,在S106中,调度管理控制单元220更新运行组管理信息,并指定要开始的任务的任务ID。也就是说,当确定存在可执行组时,组更新单元222参考所确定的调度管理信息240。通过该参考,组更新单元222将在S103中指定的组的组最高优先级信息242与最高优先级信息243进行比较。当组最高优先级信息242与最高优先级信息243彼此一致时,组更新单元222将运行组管理信息250的位图中的位设置为1,该位是与在S103中指定的组相对应的位。
同时,当在S103中指定的组的组最高优先级信息242与最高优先级信息243彼此不一致时,组更新单元222执行如下的处理。也就是说,组更新单元222在调度管理信息240的就绪任务信息241的任务之中参考与最高优先级信息243相对应的任务的任务管理信息230的任务组ID 231。通过该参考,组更新单元222确定运行组管理信息250的位图中与任务的任务组ID 231相对应的位是否为0。当运行组管理信息250中的对应位为0时,组更新单元222将该位设为1。另外,当与运行组管理信息250相对应的位已被设置为1时,组更新单元222参考从调度管理信息240的就绪任务信息241中具有相同优先级的下一个任务的组ID,并且重复上面提及的确定处理。当对与最高优先级信息243相对应的任务的此类任务组ID231的参考完全结束时,组更新单元222将此类参考目的地转移到具有下一个优先级的就绪任务信息241,并且重复上面提及的确定处理。此后,重复确定处理,直到参考目的地和在S103中指定的组的组最高优先级信息242的优先级的值彼此一致。组更新单元222重复当前的确定处理,并且指定接下来要开始的任务的组和任务的任务ID。
接下来,在S107中,调度管理控制单元220用所指定的任务ID更新运行任务ID。也就是说,调度更新单元223将在S106中指定并且接下来开始的任务的任务ID设置为调度管理信息240的运行任务ID 244。运行任务ID 244的设置结束时,调度更新单元223调用任务管理控制单元210,并且将处理转移到S108。
接下来,在S108中,任务管理控制单元210将任务的寄存器信息返回到PE的寄存器。也就是说,在从调度更新单元223被调用时,返回单元212参考在S106中指定的任务的任务管理信息230中的任务堆栈信息233。通过该参考,返回单元212将任务的所存储的寄存器信息返回到执行该任务的PE 101的寄存器104。
接下来,在S109中,任务管理控制单元210开始任务。也就是说,当寄存器信息被返回时,开始单元213参考返回的任务的任务管理信息230中的任务开始地址234,并由PE 101开始该任务。
系统操作的具体示例
接下来,将描述用于操作本实施例的系统的方法的具体示例。图9示出了具体示例中的多处理器系统的配置。
如图9中所示,在具体示例中,多处理器系统100包括数量为2的PE0和PE1作为多个PE 101。此外,用户应用程序112包括在PE0中执行的软件组件SW-C0,以及在PE1中执行的软件组件SW-C1。软件组件SW-C0包括在PE0中执行的三个任务T1、T2和T3。软件组件SW-C1包括在PE1中执行的三个任务T4、T5和T6。此外,将访问共享资源SRA的任务组定义为组A(GrA),并且将访问共享资源SRB的任务组定义为组B(GrB)。
图10示出了具体示例中的RTOS初始设置文件的描述。图11是示出了从图10的RTOS初始设置文件生成的各条任务管理信息的初始值的图。具体示例的6个任务T1至T6的初始设置值通过使生成设备302读取RTOS初始设置文件301而生成。
如图10中所示,在RTOS初始设置文件301中,描述了各个任务的组名和优先级。在具体示例中,在任务T1中,定义了组A和优先级6。在任务T2中,定义了组A和优先级4。在任务T3中,定义了组B和优先级4。在任务T4中,定义了组A和优先级4。在任务T5中,定义了组B和优先级2。在任务T6中,定义了优先级2,没有定义组(组为“无”)。
如图11中所示,生成设备302基于RTOS初始设置文件301的各个任务的定义来生成各个任务的各条任务管理信息230。在具体示例中,基于RTOS初始设置文件301的任务T1至T6的定义,生成设备302生成任务T1至T6的各条任务管理信息230-1至230-6,并且对各条信息进行初始设置。基于组的优先级和任务的定义,生成设备302对任务管理信息230的任务组ID 231和任务优先级235进行初始设置。此外,生成设备302将每个任务状态232初始化为暂停状态(1),并将软件组件SW-C0或SW-C1的地址设置为每个任务开始地址234。
在任务T1的任务管理信息230-1中,基于RTOS初始设置文件301的任务T1的定义,指示组A的ID(1)被设置为任务组ID 231,并且6被设置为任务优先级235。在任务T2的任务管理信息230-2中,基于RTOS初始设置文件301的任务T2的定义,指示组A的ID(1)被设置为任务组ID 231,并且4被设置为任务优先级235。在任务T3的任务管理信息230-3中,基于RTOS初始设置文件301的任务T3的定义,指示组B的ID(2)被设置为任务组ID 231,并且4被设置为任务优先级235。在任务T4的任务管理信息230-4中,基于RTOS初始设置文件301的任务T4的定义,指示组A的ID(1)被设置为任务组ID 231,并且4被设置为任务优先级235。在任务T5的任务管理信息230-5中,基于RTOS初始设置文件301的任务T5的定义,指示组B的ID(2)被设置为任务组ID 231,并且2被设置为任务优先级235。在任务T6的任务管理信息230-6中,基于RTOS初始设置文件301的任务T6的定义,指示此类无组的ID(0)被设置为任务组ID231,并且2被设置为任务优先级235。
此后,将按照以下情况的顺序描述在具体示例中如图11中那样初始设置的任务T1至T6的状态转移的流程。
·情况1:RTOS初始化被完成,所有任务都处于就绪状态
·情况2:A组的任务T1在PE0侧上处于运行状态
·情况3:A组的任务T1在PE0侧上处于运行状态,并且B组的任务T5在PE1侧上处于运行状态
·情况4:A组的任务T2在PE0侧上处于运行状态,并且B组的任务T5在PE1侧上处于运行状态
·情况5:A组的任务T2在PE0侧上处于运行状态,并且不属于任何组(属于无组)的任务T6在PE1侧上处于运行状态
·情况6:A组的任务T2在PE0侧上处于运行状态,并且空闲处理程序在PE1侧上运行
·情况7:B组的任务T3在PE0侧上处于运行状态,并且A组的任务T4在PE1侧上处于运行状态
情况1:RTOS的初始化完成,所有任务都处于就绪状态
图12示出了情况1中的各个PE的任务的状态。图13和图14示出了情况1中的各条任务管理信息230、各条调度管理信息240和运行组管理信息250的具体值。
如图12中所示,在情况1中,在PE0侧上,任务T1(组A,优先级6),任务T2(组A,优先级4)和任务T4(组B,优先级4)处于就绪状态。在PE1侧上,任务T4(组A,优先级4)、任务T5(组B,优先级2)和任务T6(无组,优先级2)处于就绪状态。
具体地,如图13中所示,在PE0侧上,在任务T1至T3的各条任务管理信息230-1至230-3中的任务状态232转入到就绪状态(2)。在PE0的调度管理信息240-1中,任务T1以优先级6被寄存在就绪任务信息241中。此外,任务T2和T3以优先级4被寄存在就绪任务信息241中。如图14中所示,在PE1侧上,任务T4至T6的多条任务管理信息230-4至230-6中的任务状态232转入到就绪状态(2)。在PE1的调度管理信息240-2中,任务T4以优先级4被寄存在就绪任务信息241中。此外,任务T5和T6以优先级2被寄存在就绪任务信息241中。此外,如图14中所示,在运行组管理信息250中,组A和组B的位为0。
在这个示例中,首先,在情况1的状态下,调度管理控制单元220参考PE0中的调度管理信息240-1的就绪任务信息241,并且将具有最高的优先级6的任务T1选为要开始的任务的候补。接下来,调度管理控制单元220参考所选择的任务T1的任务管理信息230-1,并且获取任务组ID 231(组A)。接下来,调度管理控制单元220参考运行组管理信息250,并且确认与任务T1所属的组A相对应的位的值。在情况1中,因为组A的位为0,所以调度管理控制单元220将任务T1确定为接下来要开始的任务,并且转移到情况2的状态。
情况2:A组的任务T1在PE0侧上处于运行状态
图15示出了情况2中的各个PE的任务的状态。图16示出了情况2中的PE0的各条任务管理信息230、其调度管理信息240和运行组管理信息250的具体值。在情况2中的PE1的各条任务管理信息230及其调度管理信息240与情况1中的相同。如图15中所示,在情况2中,在PE0侧上的任务T1(组A,优先级6)从情况1的状态转入到运行状态。
具体地,当如上所述将任务T1确定为接下来要开始的任务时,调度管理控制单元220将任务T1的任务管理信息230-1的任务状态232从就绪状态更新为运行状态,如图16中所示。此外,如图16中所示,调度管理控制单元220将运行组管理信息250的组A的位设置为1。另外,如图16中所示,调度管理控制单元220将任务T1的优先级6设置为PE0的调度管理信息240-1中的最高优先级信息243和其中的组A的组最高优先级信息242。此外,调度管理控制单元220将任务T1设置为运行任务ID 244。
在这个示例中,在情况2的状态下,调度管理控制单元220参考PE1中的调度管理信息240-2的就绪任务信息241,并且将具有最高的优先级4的任务T4选为要开始的任务的候补。接下来,调度管理控制单元220参考任务T4的任务管理信息230-4,并且获取任务组ID231(组A)。接下来,调度管理控制单元220参考运行组管理信息250,并且确认与任务T4所属的组A相对应的位的值。在情况2中,由于组A的位为1,所以调度管理控制单元220将任务T4确定为不能开始的任务。
接下来,调度管理控制单元220参考调度管理信息240-2的就绪任务信息241,并且将优先级2(仅次于任务T4的优先级)的任务T5选为要开始的任务的候补。接下来,调度管理控制单元220参考任务T5的任务管理信息230-5,并且获取任务组ID 231(组B)。接下来,调度管理控制单元220参考运行组管理信息250,并且确认与任务T5所属的组B相对应的位的值。在情况2中,由于组B的位为0,所以调度管理控制单元220将任务T5确定为接下来要开始的任务,并且转移到情况3的状态。
情况3:A组的任务T1在PE0侧上处于运行状态,并且B组的任务T5在PE1侧上处于运行状态
图17示出了情况3中的各个PE的任务的状态。图18示出了情况3中的PE1的各条任务管理信息230、其调度管理信息240和运行组管理信息250的具体值。PE0的各条任务管理信息230及其调度管理信息240与情况2中的相同。如图17中所示,在情况3中,在PE1侧上的任务T5(组B,优先级2)从情况2的状态转入到运行状态。
具体地,当如上所述将任务T5确定为接下来要开始的任务时,调度管理控制单元220将任务T5的任务管理信息230-5的任务状态232从就绪状态更新为运行状态,如图18中所示。此外,如图18中所示,调度管理控制单元220将运行组管理信息250的组B的位设置为1。另外,如图18中所示,调度管理控制单元220将任务T4的优先级4设置为PE1的调度管理信息240-2中的最高优先级信息243。此外,调度管理控制单元220将任务T5的优先级2设置为组B的组最高优先级信息242。另外,调度管理控制单元220将任务T5设置为运行任务ID244。
在这个示例中,在情况3的状态下,在PE0侧上结束处于运行状态的任务T1。然后,任务管理控制单元210执行针对任务T1的结束处理。此外,任务管理控制单元210更新任务T1的任务管理信息230-1和运行组管理信息250,并调用调度管理控制单元220。
接下来,调度管理控制单元220参考在PE0中的调度管理信息240-1的就绪任务信息241,并且将具有第二高的优先级4的任务T2选为要开始的任务的候补。接下来,调度管理控制单元220参考任务T2的任务管理信息230-2,并且获取任务组ID 231(组A)。接下来,调度管理控制单元220参考运行组管理信息250,并且确认与任务T2所属的组A相对应的位的值。在情况3中,由于运行组管理信息250的组A的位在任务T1结束时为0,所以调度管理控制单元220将任务T2确定为接下来要开始的任务,并且转移到状态情况4的状态。
情况4:A组的任务T2在PE0侧上处于运行状态,并且B组的任务T5在PE1侧上处于运行状态
图19示出了情况4中的各个PE的任务的状态。图20示出了情况4中的PE0的各条任务管理信息230、其调度管理信息240和运行组管理信息250的具体值。在情况4中的PE1的各条任务管理信息230及其调度管理信息240与在情况3中的相同。如图19中所示。19,在情况4中,在PE0侧上的任务T1(组A,优先级6)从情况3的状态转入到暂停状态(也就是说,在图中被删除),并且任务T2(组A,优先级2)转入到运行状态。
具体地,当如上所述任务T1结束时,则如图20中所示,任务管理控制单元210将任务T1的任务管理信息230-1的任务状态232从运行状态更新为暂停状态。此外,任务管理控制单元210将运行组管理信息250的组A的位设置为0。另外,任务管理控制单元210从PE0中的调度管理信息240-1的就绪任务信息241中删除任务T1,并将运行任务ID 244设置为0。
此外,在如上所述将任务T2确定为接下来要开始的任务时,调度管理控制单元220将任务T2的任务管理信息230-2的任务状态232从就绪状态更新为运行状态,如图20中所示。此外,如图20中所示,调度管理控制单元220将运行组管理信息250的组A的位设置为1。另外,如图20中所示,调度管理控制单元220将任务T2的优先级4设置为PE0的调度管理信息240-1中的最高优先级信息243和其中的组A的组最高优先级信息242。此外,调度管理控制单元220将任务T2设置为运行任务ID 244。
在这个示例中,在情况4的状态下,在PE1侧上结束处于运行状态的任务T5。然后,任务管理控制单元210执行针对任务T5的结束处理。此外,任务管理控制单元210更新任务T5的任务管理信息230-5和运行组管理信息250,并调用调度管理控制单元220。
接下来,调度管理控制单元220参考在PE1中的调度管理信息240-2的就绪任务信息241,并且将具有最高的优先级4的任务T4选为要开始的任务的候补。接下来,调度管理控制单元220参考任务T4的任务管理信息230-4,并且获取任务组ID 231(组A)。接下来,调度管理控制单元220参考运行组管理信息250,并且确认与任务T4所属的组A相对应的位的值。在情况4中,由于组A的位为1,所以调度管理控制单元220将任务T4确定为不能开始的此类任务。
接下来,调度管理控制单元220参考调度管理信息240-2的就绪任务信息241,并且将优先级2(仅次于任务T4的优先级)的任务T6选为要开始的任务的候补。接下来,调度管理控制单元220参考任务T6的任务管理信息230-6,并且获取任务组ID 231(无组)。接下来,调度管理控制单元220确认任务T6的组ID为0(无组)。在这种情况下,由于任务T6是不操作共享资源的任务,所以调度管理控制单元220确定任务T6是可以在不参考运行组管理信息250的情况下接下来开始的任务。因此,调度管理控制单元220将任务T6确定为接下来要开始的任务,并且转移到情况5的状态。
情况5:A组的任务T2在PE0侧上处于运行状态,并且不属于任何组(属于无组:无组)的任务T6在PE1侧上处于运行状态
图21示出了情况5中的各个PE的任务的状态。图22示出了情况5中的PE1的各条任务管理信息230、其调度管理信息240和运行组管理信息250的具体值。如图21中所示,在情况5中,在PE1侧上的任务T5(组B,优先级2)从情况4的状态转入到暂停状态,并且任务T6(无组,优先级2)转入到运行状态。
具体地,当如上所述任务T5结束时,则如图22中所示,任务管理控制单元210将任务T5的任务管理信息230-5的任务状态232从运行状态更新为暂停状态。此外,如图22中所示,任务管理控制单元210将运行组管理信息250的组B的位设置为0。另外,任务管理控制单元210从PE1中的调度管理信息240-2的就绪任务信息241中删除任务T5,并将运行任务ID244设置为0。
此外,在如上所述将任务T6确定为接下来要开始的任务时,调度管理控制单元220将任务T6的任务管理信息230-6的任务状态232从就绪状态更新为运行状态,如图22中所示。此外,如图22中所示,调度管理控制单元220不更新运行组管理信息250的位。另外,如图22中所示,调度管理控制单元220不更新PE1的调度管理信息240-2中的最高优先级信息243。此外,调度管理控制单元220将组B的组最高优先级信息242设置为0,并将任务T6设置为运行任务ID 244。
在这个示例中,在情况5的状态下,在PE1侧上结束处于运行状态的任务T6。然后,任务管理控制单元210执行针对任务T6的结束处理。此外,任务管理控制单元210更新任务T6的任务管理信息230-6和运行组管理信息250,并调用调度管理控制单元220。
接下来,调度管理控制单元220参考在PE1中的调度管理信息240-2的就绪任务信息241,并且将具有最高的优先级4的任务T4选为要开始的任务的候补。接下来,调度管理控制单元220参考任务T4的任务管理信息230-4,并且获取任务组ID 231(组A)。接下来,调度管理控制单元220参考运行组管理信息250,并且确认与任务T4所属的组A相对应的位的值。在情况5中,由于组A的位为1,所以调度管理控制单元220将任务T4确定为不能开始的此类任务。
接下来,调度管理控制单元220参考调度管理信息240-2的就绪任务信息241,并且确认不存在优先级次于任务T4的优先级的任务。由于现在不存在可以开始的任务,所以调度管理控制单元220转移到用于开始空闲处理程序的处理,从而转移到情况6的状态。
情况6:A组的任务T2在PE0侧上处于运行状态,并且空闲处理程序在PE1侧上运行
图23示出了情况6中的各个PE的任务的状态。图24示出了情况6中的PE1的各条任务管理信息230及其调度管理信息240的具体值。在情况6中的PE0的各条任务管理信息230、其调度管理信息240和运行组管理信息250与情况5中的相同。如图23中所示,在情况6中,在PE1侧上的任务T6(无组,优先级2)从情况5的状态转入到暂停状态。
具体地,当如上所述任务T6结束时,则如图24中所示,任务管理控制单元210将任务T6的任务管理信息230-6的任务状态232从运行状态更新为暂停状态。此外,任务管理控制单元210不更新运行组管理信息250。如图24中所示,任务管理控制单元210从PE1中的调度管理信息240-2的就绪任务信息241中删除任务T6,并将运行任务ID 244设置为0。
在这个示例中,在情况6的状态下,在PE1侧上结束处于运行状态的任务T2。然后,在PE0侧上的任务管理控制单元210执行针对任务T2的结束处理。此外,任务管理控制单元210更新任务T2的任务管理信息230-2和运行组管理信息250,并调用调度管理控制单元220。
接下来,调度管理控制单元220参考在PE0中的调度管理信息240-1的就绪任务信息241,并且将具有第二高的优先级4的任务T3选为要开始的任务的候补。接下来,调度管理控制单元220参考任务T3的任务管理信息230-3,并且获取任务组ID 231(组B)。接下来,调度管理控制单元220参考运行组管理信息250,并且确认与任务T3所属的组B相对应的位的值。在情况6中,由于组B的位为0,所以调度管理控制单元220将任务T3确定为接下来要开始的任务,并且更新各条管理信息。
接下来,由于运行组管理信息250被PE0更新,所以空闲处理程序在其上正在运行的PE1的调度管理控制单元220再一次确认是否存在接下来要开始的任务。调度管理控制单元220参考在PE1中的调度管理信息240-2的就绪任务信息241,并且将具有最高的优先级4的任务T4选为开始任务的候补。接下来,调度管理控制单元220参考任务T4的任务管理信息230-4,并且获取任务组ID 231(组A)。接下来,调度管理控制单元220参考运行组管理信息250,并且确认与任务T4所属的组A相对应的位的值。在情况6中,由于组A的位为0,所以调度管理控制单元220将任务T4确定为接下来要开始的任务,并且转移到情况7的状态。
情况7:B组的任务T3在PE0侧上处于运行状态,并且A组的任务T4在PE1侧上处于运行状态
图25示出了情况7中的各个PE的任务的状态。图26和图27示出了情况7中的各条任务管理信息230、各条调度管理信息240和运行组管理信息250的具体值。如图25中所示,在情况7中,在PE0侧上的任务T2(组A,优先级4)从情况6的状态转入到暂停状态。此外,在PE0侧上的任务T3(组B,优先级4)转入到运行状态,并且在PE1侧上的任务T4(组A,优先级4)转入到运行状态。
具体地,当如上所述任务T2结束时,则如图26中所示,任务管理控制单元210将任务T2的任务管理信息230-2的任务状态232从运行状态更新为暂停状态。此外,任务管理控制单元210将运行组管理信息250的组A的位设置为0。另外,任务管理控制单元210从PE0中的调度管理信息240-1的就绪任务信息241中删除任务T2,并将运行任务ID 244设置为0。
此外,在如上所述将任务T3确定为接下来要开始的任务时,调度管理控制单元220将任务T3的任务管理信息230-3的任务状态232从就绪状态更新为运行状态,如图26中所示。此外,如图27中所示,调度管理控制单元220将运行组管理信息250的组B的位设置为1。此外,如图27中所示,调度管理控制单元220将任务T2的优先级4设置为PE0的调度管理信息240-1中的组B的组最高优先级信息242,并将任务T3设置为运行任务ID 244。
此外,在如上所述将任务T4确定为接下来要开始的任务时,调度管理控制单元220将任务T4的任务管理信息230-4的任务状态232从就绪状态更新为运行状态,如图27中所示。此外,如图27中所示,调度管理控制单元220将运行组管理信息250的组A的位设置为1。另外,如图20中所示,调度管理控制单元220将任务T4的优先级4设置为PE1的调度管理信息240-2中的组A的组最高优先级信息242,并将任务T4设置为运行任务ID 244。
如上所述,一系列任务T1到T6通过从情况1到情况7的流程而转入到运行状态。
与比较示例的比较
图28示出了对在未应用本实施例的比较示例的多处理器系统中的具体示例的任务T1至T6进行调度时的状态转移。图29示出了对在如上所述根据本实施例的多处理器系统中的具体示例的任务T1至T6进行调度时的状态转移。
如图28中所示,在比较示例中,任务T1、T2、T4操作共享资源A,并且任务T3、T5操作共享资源B。那么,由于操作共享资源的任务可以在PE之间并发工作,所以锁获取处理和锁释放处理在任务处理过程中必须被添加。在比较示例中,任务T1、T2和T4需要对共享资源A进行锁A获取处理和锁A释放处理,并且任务T3和T5需要对共享资源B进行锁B获取处理和锁B释放处理。
在图28中,同时执行PE0的任务T1和PE1的任务T4,任务T1和T4使用共享资源A。例如,当任务T1先于任务T4而执行锁A获取处理并占用锁A时,任务T4无法获取锁A。因此,即使任务T4执行锁A获取处理,任务T4也无法获取锁A,并转移到重试循环处理。因此,任务T4处于忙等待状态,直到任务T1执行锁A释放处理。而且,同时执行PE0的任务T3和PE1的任务T5,任务T3和T5使用共享资源B。例如,当任务T5先于任务T3而执行锁B获取处理并占用锁B时,任务T3无法获取锁B。因此,即使任务T3执行锁B获取处理,任务T3处于忙等待状态,直到任务T5执行锁B释放处理。如上所述,在比较示例中,一个PE处于忙等待状态,而另一个PE正在获取锁,并且因此将浪费PE的资源。
对照而言,在本实施例中,如图29中所示,由于任务T1、T2和T4操作共享资源A,所以任务T1、T2和T4被归组到组A中,并且由于任务T3和T5操作共享资源B,所以任务T3和T5被归组到组B中。然后,RTOS执行调度,从而对每个组的每个任务的开始执行排他控制。因此,任务T1、T2和T4不被同时执行。任务T3和T5不被同时执行。在图29中,在PE0中执行任务T1、T2,并且此后,在PE1中执行任务T4。在PE1中执行任务T5之后,在PE0中执行任务T3。如上所述,在本实施例中,操作每个共享资源的任务在PE之间不同时操作,并且因此,在任务中不需要锁获取处理和锁释放处理。因此,不会像忙等待那样浪费PE的资源。而且,由于任务的执行不会由于忙等待而被中断,因此提高了作为系统性能指标之一的任务执行时间的估计准确度。
注意,当任务正在另一个PE中被执行时,同一组中的任务不被执行,并且因此,应用实施例,任务的执行可以比之前延迟更多。在图29中,任务T4的执行定时比图28的比较示例晚。例如,任务被设置为不进行归组,从而消除了按照每个组的任务调度的限制,并且任务可以只基于优先级来进行调度。因此,任务T4被划分,并且与共享资源A的操作无关的部分不被归组到任何组中,从而能够抑制执行定时的延迟。
效果
如上所述,在本实施例中,在多处理器系统上操作的嵌入式导向型RTOS中,管理任务的组信息和运行任务的组信息。此外,基于这些条信息,提前调度各个PE上的任务,以免生成对共享资源的冲突操作。具体地,在多处理器系统中不存在处于运行状态的任务的组中具有最高优先级的任务被选择作为接下来要开始的任务。
因此,对任务进行调度以免在多处理器系统上造成对共享资源的冲突操作,软件开发者也就不必要为任务添加排他控制。也就是说,不必对任务添加自旋锁(锁获取处理和锁释放处理)。因此,通过使用本实施例的RTOS,可以直接在多处理器上操作在单处理器上工作的任务,并且可以使用应用程序。
第二实施例
接下来,将描述根据第二实施例的多处理器系统。在本实施例中,在OS的调度功能中针对包括访问共享资源的任务和中断处理的每个组执行排他控制。
系统配置
图30示出了根据本实施例的多处理器系统的硬件配置。如图30中所示,根据本实施例的多处理器系统100除了第一实施例的配置以外,还包括中断控制器(INTC)105。
中断控制器105连接到总线103。中断控制器105能够经由总线103访问多个PE 101和存储器102。中断控制器105控制在多处理器系统100中发生的中断。中断包括硬件中断和软件中断。当中断发生时,中断控制器105能够向所有PE 101a至101n输入中断请求。在接收到中断请求时,每个PE 101执行对应于中断原因的中断服务例程(ISR)。例如,中断服务例程被包括在RTOS 111中,并且与中断请求(中断原因)相对应的中断服务例程被调用并执行。在本实施例中,针对每个共享资源对访问共享资源的此类中断服务例程(中断原因)进行归组。这种归组与第一实施例中的任务的归组相同。例如,访问共享资源SR1的任务和中断服务例程被归组到单个的组1中。
此外,中断控制器105包括中断屏蔽寄存器(MREG)106。中断屏蔽寄存器106保持中断屏蔽。中断屏蔽是对每个中断原因设置是否接受(允许或禁止)中断的屏蔽位。当与中断原因相对应的位设置为1时,禁止针对中断原因的中断请求,当与中断原因相对应的位设置为0时,允许针对中断原因的中断请求。中断屏蔽寄存器106从所有PE 101a到101n都是可设置的。根据中断屏蔽寄存器106的值,中断控制器105在已经发生的此类中断的原因允许时将中断请求输入到PE 101,并且在已经发生的中断的原因被禁止时暂停中断请求。
图31示出了根据本实施例的RTOS的功能配置和RTOS数据的数据配置。如图31中所示,RTOS数据121除了第一实施例的配置之外,还包括中断管理信息420和中断原因组信息430。
中断管理信息420是用于管理中断服务例程的信息。中断管理信息420是被指派用于每个中断服务例程的信息。中断管理信息420包括中断服务例程的优先级、由中断服务例程使用的共享资源组的标识信息。中断管理信息420将这些条信息与中断服务例程相关联。
中断原因组信息430是指示各个中断原因的组的信息。中断原因组信息430是以一对一的关系被指派给PE 101的信息。中断原因组信息430包括指示针对每个组在PE 101中执行的中断原因的信息。中断原因组信息430将中断原因与每个组相关联。
此外,在本实施例中,运行组管理信息250是除了管理在多处理器系统100中运行的任务组之外还管理在多处理器系统100中运行的中断服务例程组的信息。运行组管理信息250包括指示针对多处理器系统100中的每个组是否存在运行任务或中断服务例程的信息。
除了第一实施例的配置之外,RTOS功能111a还包括中断管理控制单元410。中断管理控制单元410管理和控制每个PE 101中的中断服务例程的操作。从任务管理控制单元210调用中断管理控制单元410。中断管理控制单元410根据在每个PE 101中执行的任务组来获取中断原因组信息430。通过这种获取,中断管理控制单元410更新中断屏蔽寄存器106,从而控制中断服务例程的操作。此外,中断管理控制单元410根据中断请求而被调用,并根据请求来控制中断服务例程的操作。中断管理控制单元410获取中断原因组信息430,并设置运行组管理信息250。
此外,中断管理控制单元410与任务管理控制单元210一起管理访问在多处理器系统100中的共享资源的每个任务和访问在其中的共享资源的每个中断服务例程(中断处理)的执行状态。通过运行组管理信息250,中断管理控制单元410和任务管理控制单元210管理是否在所有PE 101中执行访问共享资源的任务和访问共享资源的中断服务例程。此外,中断管理控制单元410和任务管理控制单元210管理访问针对每个组的共享资源的任务的执行状态和访问针对每个组的共享资源的中断服务例程的执行状态。例如,中断管理控制单元410和任务管理控制单元210管理访问共享资源SR1的组1的任务的执行状态,以及访问共享资源SR1的组1的中断服务例程的执行状态。此外,中断管理控制单元410和任务管理控制单元210管理访问共享资源SR2的组2的任务的执行状态,以及访问共享资源SR2的组2的中断服务例程的执行状态。
此外,与调度管理控制单元220一起,中断管理控制单元410确定PE 101中接下来要被执行的任务以及在其中将发生的中断的中断服务例程。该确定是基于访问共享资源的任务的执行状态和访问共享资源的中断服务例程的执行状态来执行的。当访问共享资源的任务和访问共享资源的中断服务例程没有在任何PE 101中被执行时,中断管理控制单元410和调度管理控制单元220对被调度为接下来在PE101中被执行进行调度的一个任务,以使得该任务被执行。当访问共享资源的任务和访问共享资源的中断服务例程在任何PE 101中被执行时,中断管理控制单元410和调度管理控制单元220对被调度为接下来在PE 101中被执行的该任务进行调度,以使得该任务的执行被暂停。在执行访问共享资源的任务的情况下,中断管理控制单元410设置中断屏蔽寄存器106以便禁止执行(接受)访问共享资源的中断服务例程。此外,当访问共享资源的任务的执行结束时,中断管理控制单元410设置中断屏蔽寄存器106以便释放对访问共享资源的中断服务例程的执行的禁止。
此外,中断管理控制单元410和调度管理控制单元220确定在PE101中接下来要被执行的组的任务,以及接下来将发生的组的中断的中断服务例程。该确定是基于针对每个组的任务的执行状态和针对每个组的中断服务例程的执行状态来执行的。例如,基于组1的任务的执行状态和组1的中断服务例程的执行状态,中断管理控制单元410和调度管理控制单元220确定在PE 101中接下来要被执行的组1的任务,以及在其中接下来将发生的组1的中断处理。此外,基于组2的任务的执行状态和组2的中断服务例程的执行状态,中断管理控制单元410和调度管理控制单元220确定在PE 101中接下来要被执行的组2的任务,以及在其中接下来将发生的组2的中断处理。中断管理控制单元410和调度管理控制单元220确定访问共享资源的组的此类任务和访问共享资源的组的中断服务例程是否在所有PE 101中运行。当任务和中断服务例程没有在任何PE 101中执行时,中断管理控制单元410和调度管理控制单元220对被调度为在PE 101中接下来要被执行的组的任务进行调度,以使得该任务被执行。此外,当在任何PE 101中执行组的这样的任务或组的中断服务例程时,中断管理控制单元410和调度管理控制单元220对被调度为在PE 101中接下来要被执行的组的任务进行调度,以使得该任务的执行被暂停。在执行属于该组的任务的情况下,中断管理控制单元410设置中断屏蔽寄存器106以便禁止执行该组的中断服务例程。此外,当属于该组的任务的执行结束时,中断管理控制单元410设置中断屏蔽寄存器106以便释放该组的中断服务例程的执行的禁止。
图32示出了根据本实施例的包括在RTOS数据中的运行组管理信息250、中断管理信息420、中断原因组信息430的配置。
与第一实施例中一样,运行组管理信息250由位图表组成,在位图表中,位指派给每个组。在本实施例中,运行组管理信息250指示多处理器系统100的任何PE 101中的运行任务所属的组或运行中断服务例程的组。在运行组管理信息250中,1被设置为与在多处理器系统100中存在处于运行状态的任务或中断服务例程的组相对应的预定位。此外,在运行组管理信息250中,0被设置为与多处理器系统100中不存在处于运行状态的任务或中断服务例程的组相对应的预定位。
中断管理信息420包括中断组ID(GrID)421、中断开始地址(Add)422和中断初始优先级(Pr)423。中断组ID 421是用于标识中断服务例程所属的组(也就是说,该组是由此访问的共享资源)的标识信息。中断开始地址422是指示在PE 101上开始处理中断服务例程时的时刻处读取的中断服务例程的地址的细节的信息。中断初始优先级423是指示中断服务例程的优先级的初始值的信息。
中断原因组信息430由针对每个组的中断原因的位图表组成。位图表包括位图,其中位被一一指派给所有中断原因(例如,中断原因0(Cs0)到中断原因k(Csk)),其由多处理器系统100的中断控制器105管理。每组存在一个位图表。在每个中断原因所属组的位图中,1被设置为与中断原因相对应的位。也就是说,中断原因组信息430是指示每个中断原因所属的组的信息。每个中断原因属于哪个组由用户在初始设置RTOS 111的时刻处确定。
图33示出了根据本实施例的包括在RTOS功能111a中的中断管理控制单元410的配置。如图33中所示,中断管理控制单元410包括组信息获取单元411、接受设置单元412、中断开始单元413和中断返回单元414。
从任务管理控制单元210的存储单元211或调度管理控制单元220的调度更新单元223调用组信息获取单元411。根据该调用,组信息获取单元411参考运行组管理信息250,并且确定任务或中断服务例程运行在其中的组。组信息获取单元411参考中断原因组信息430,并且获取该组的中断原因组信息430。基于获取的中断原因组信息430,接受设置单元412改变设置以接受中断请求。在指定可执行组时的时刻处,组信息获取单元411和接受设置单元412可以参考中断管理信息420,并且可以禁止与该组相关联的中断处理。在指定可执行组时的时刻处,组信息获取单元411和接受设置单元412可以参考中断原因组信息430,并且可以禁止针对与该组相关联的中断原因的中断处理。在调度任务时的时刻处,中断屏蔽寄存器106由接受设置单元412设置,并且此后,调度管理控制单元220的任务管理控制单元210或组确定单元221的返回单元212被调用。
此外,在来自中断控制器105的中断请求时的时刻处,中断屏蔽寄存器106由接受设置单元412设置,并且此后,中断开始单元413根据所接受的中断请求开始中断服务例程。在中断服务例程结束之后,中断返回单元414将处理返回到中断发生源。
RTOS初始设置
在本实施例中,与第一实施例中一样,生成设备302基于由用户设置的RTOS初始设置文件来生成并初始设置RTOS数据121。
与第一实施例中一样,生成设备302初始设置任务管理信息230、调度管理信息240和运行组管理信息250,并且进一步初始设置中断管理信息420和中断原因组信息430。
在RTOS初始设置文件301中,描述了由用户设置的每个中断服务例程的组、每个服务例程的初始优先级和每个中断原因的组。基于RTOS初始设置文件301的中断服务例程的组,生成设备302设置中断管理信息420的中断组ID 421。此外,基于RTOS初始设置文件301的中断服务例程的初始优先级,生成设备302设置中断管理信息420的中断初始优先级423。另外,生成设备302基于RTOS初始设置文件301的中断原因的组来生成中断原因组信息430。
系统操作
接下来,将描述用于操作本实施例的系统的方法。图34是示出了根据本实施例的用于操作多处理器系统的方法的流程图。在本实施例中,对于第一实施例的流程图,在S102和S103之间添加了S110和S111。此外,在S107和S108之间添加了S112和S113。将描述添加到第一实施例的处理中的处理。
在S102之后,中断管理控制单元410在S110中获取中断原因组信息430。也就是说,在S102之后从存储单元211调出组信息获取单元411。根据该调用,组信息获取单元411参考运行组管理信息250,并且指定其中设置了1的位位置,从而指定其中存在处于运行状态的使能任务或中断服务例程的组。接下来,组信息获取单元411获取与运行中断服务例程或处于运行状态的任务的组相对应的中断原因组信息430。当处于运行状态的任务或运行中断服务例程所属的多个组存在时,组信息获取单元411获取对应于所有组的中断原因组信息430。当处于运行状态的任务或运行中断服务例程所属的组不存在时,组信息获取单元411不获取中断原因组信息430。
接下来,在S111中,中断管理控制单元410设置中断屏蔽寄存器106。也就是说,接受设置单元412对在S110中获取的所有中断原因组信息430执行逻辑和运算。接受设置单元412将作为操作结果的位设置到中断控制器105的中断屏蔽寄存器106。因此,对该组的中断的接受被禁止。也就是说,在从任务停止请求被调用的情况下,对被停止任务组的中断的接受被允许(禁止被释放),并且对运行任务组的中断的接受被禁止。此后,可执行组和任务在S103中以及之后被指定。
在S107之后,与S110中一样,中断管理控制单元410在S112中获取中断原因组信息430。也就是说,在S107之后从调度更新单元223调用组信息获取单元411。根据该调用,组信息获取单元411参考运行组管理信息250,并且指定其中设置了1的位位置,从而指定其中存在处于运行状态的使能任务或中断服务例程的组。接下来,组信息获取单元411获取与运行中断服务例程或处于运行状态的任务的组相对应的中断原因组信息430。
接下来,与S111中一样,在S113中,中断管理控制单元410设置中断屏蔽寄存器106。也就是说,接受设置单元412对在S112中获取的所有中断原因组信息430执行逻辑和运算。接受设置单元412将作为操作结果的位设置到中断控制器105的中断屏蔽寄存器106。因此,对该组的中断的接受被禁止。也就是说,对要开始的任务组和运行组的中断的接受被禁止。此后,任务在S108中以及之后开始。
在本实施例中,同样在针对中断服务例程的开始和结束处理中,需要基于中断的组信息来更新对中断的接受的接受允许和禁止设置以及运行组管理信息,其在本实施例中被添加。图35是示出了根据本实施例的在开始时刻和结束时刻处操作中断服务例程的方法的流程图。注意,当多个中断请求发生时,按照中断服务例程的中断初始优先级423的降序执行以下处理
首先,在S200中,中断管理控制单元410参考中断服务例程的组ID。也就是说,中断管理控制单元410接受来自中断控制器105的中断请求,并且开始中断服务例程。在此时,组信息获取单元411参考被请求的中断服务例程的中断管理信息420,并且指定中断服务例程的中断组ID 421。
接下来,在S201中,中断管理控制单元410获取中断原因组信息430。也就是说,组信息获取单元411获取与所指定的组ID 421相对应的组的中断原因组信息430。
接下来,在S202中,中断管理控制单元410设置中断屏蔽寄存器106。也就是说,接受设置单元412将所获取的组的中断原因组信息430的位设置到中断控制器105的中断屏蔽寄存器106。因此,对该组的中断的接受被禁止。
接下来,在S203中,中断管理控制单元410设置运行组管理信息250。也就是说,接受设置单元412参考运行组管理信息250,并且将与要开始的中断服务例程的组相对应的位设置为1。
接下来,在S204中,中断管理控制单元410开始中断服务例程。也就是说,中断开始单元413参考中断服务例程的中断管理信息420,获取中断服务例程的中断开始地址422,并且根据所获取的地址来开始中断服务。
接下来,在S205中,中断管理控制单元410获取中断原因组信息430。也就是说,当中断服务例程结束时,组信息获取单元411参考结束的中断服务例程的中断管理信息420,并且指定中断服务例程的中断组ID 421。组信息获取单元411获取与所指定的组ID 421相对应的组的中断原因组信息430。
接下来,在S206中,中断管理控制单元410设置中断屏蔽寄存器106。也就是说,接受设置单元412将所获取的组的中断原因组信息430的位反转,并且将反转后的位设置到中断控制器105的中断屏蔽寄存器106。因此,对组的中断的接受被允许(对接受的禁止被释放)。
接下来,在S207中,中断管理控制单元410设置运行组管理信息250。也就是说,接受设置单元412参考运行组管理信息250,并且将与结束的中断服务例程的组相对应的位设置为0。
接下来,在S208中,中断管理控制单元410返回到中断发生源的处理。也就是说,中断返回单元414返回到中断请求接受源的用户例程(任务或ISR)。例如,在任务执行期间发生中断时,将任务的寄存器和地址撤回到堆栈,并且当中断结束时,返回寄存器,并且从处理过的地址重新开始处理。
与第一实施例的比较
图36示出了当在根据第一实施例的多处理器系统中执行与上述具体示例中的那些类似的任务T1至T5并且发生冲突中断时的任务的状态转移。图37示出了当在根据第二实施例的多处理器系统中与图36中的那些类似的任务T1至T5并且发生冲突中断时的任务的状态转移。
如图36中所示,在第一实施例中,任务T1、T2和T4操作共享资源A,并且相应地形成组A,并且任务T3和T5操作共享资源B,并且相应地形成组B。因此,T1、T2和T4被调度为不被同时执行,并且T3和T5被调度为不被同时执行。然而,在第一实施例中,没有考虑中断服务例程与共享资源的冲突。如图36中所示,当操作共享资源A的中断服务例程的中断(ISR1)与操作共享资源A的任务T1同时发生时,与共享资源A的冲突发生,并且因此无法避免共享资源A被破坏。
对照而言,在本实施例中,如图37中所示,在任务开始时的时刻处禁止与任务属于同一组的中断接受,并且在任务结束时的时刻处释放对中断接受的这个禁止。因此,避免了属于同一组的中断服务例程和任务在PE之间并发工作。在图37中,在开始任务T1和T4时的时刻处禁止对组A的中断接受,并且在结束任务T1和T4时的时刻处允许对组A的中断接受。在开始任务T3和T5时的时刻处禁止对组B的中断接受,并且在结束任务T3和T5时的时刻处允许对组B的中断接受。中断服务例程(ISR1)被导致属于组A,因为中断服务例程(ISR1)操作共享资源A,并且任务T1和T4不被同时执行。在图37中,在任务T1执行期间发生中断。然而,中断请求被暂停,因为对组A的中断接受被禁止,任务T1结束,并且对组A的中断接受被允许,并且此后,被暂停的中断请求被接受,并且中断服务例程被执行。因此,可以防止发生中断服务例程与共享资源的冲突,并且不需要在从中断服务例程操作共享资源的应用程序中也添加排他处理。而且,由于任务的执行不会因为中断而被中断,所以进一步提高了对于任务执行时间的估计准确度。请注意,在本实施例中,也将中断服务例程(中断原因)设置为无组,从而消除了针对每个组的任务调度的限制,并且因此,中断服务例程可以按照到仅基于优先级的调度来执行。
效果
如上所述,在本实施例中,将第一实施例的运行组管理信息扩展为被定义为运行任务或中断服务例程的组信息,并且中断原因组信息和中断管理信息被添加。然后,中断管理控制单元参考这些条信息,并且当调度任务时的时刻处存在处于运行状态的任务或中断服务例程时,执行对属于同一组的中断服务例程的接受的禁止设置。此外,属于在多处理器系统上不存在处于运行状态的任务和中断服务例程的组的具有最高优先级的任务被选择作为接下来要开始的任务。
因此,软件开发人员将无需考虑既为任务又为中断服务例程添加排他控制。因此,同样在从中断服务例程操作共享资源的应用程序中,软件开发者可以直接将在单核处理器上工作的任务和中断服务例程转到多处理器系统,而无需向其添加自旋锁。
注意,上述程序可以使用各种类型的非暂时性计算机可读介质来存储,并且可以被供应给计算机。非暂时性计算机可读介质包括各种类型的有形存储介质。非暂时性计算机可读介质的示例包括磁记录介质(例如,软盘、磁带、硬盘驱动器)、磁光记录介质(例如,磁光盘)、压缩盘只读存储器(CD-ROM)、CD-R、CD-R/W和半导体存储器(例如,掩模ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、闪存ROM,随机存取存储器(RAM))。此外,程序可以通过各种类型的暂时性计算机可读介质而被供应给计算机。暂时性计算机可读介质的示例包括电信号、光信号和电磁波。暂时性计算机可读介质可以经由诸如电线和光纤之类的有线通信信道或者经由无线通信信道将程序提供给计算机。
尽管已经基于本发明的实施例具体描述了本发明,但是不用说,本发明不限于已经描述的实施例,并且可以在不脱离其精神的情况下在范围内以各种方式修改。

Claims (8)

1.一种半导体设备,包括:
存储器,存储程序、任务管理信息和运行组管理信息;
第一处理器元件和第二处理器元件;以及
能够从所述第一处理器元件和所述第二处理器元件访问的第一共享资源和第二共享资源,
其中所述任务管理信息是将在所述第一处理器元件或所述第二处理器元件中执行的任务与组标识信息彼此关联的信息,所述组标识信息用于标识与所述第一共享资源或所述第二共享资源相对应的组,
所述运行组管理信息是针对所述组中的每个组指示与所述组的所述组标识信息相关联的所述任务是否在所述第一处理器元件或所述第二处理器元件中被执行的信息,以及
所述第一处理器元件或所述第二处理器元件被配置为执行所述程序以:
参考所述运行组管理信息,并且将所述第一处理器元件或所述第二处理器元件中的可执行任务的组指定为可执行组;以及
参考所述任务管理信息,并且将与所指定的所述可执行组的组标识信息相关联的任务确定为在所述第一处理器元件或所述第二处理器元件中接下来要被执行的任务。
2.根据权利要求1所述的半导体设备,
其中所述第一处理器元件或所述第二处理器元件被配置为:参考所述运行组管理信息,并且将未在所述第一处理器元件或所述第二处理器元件中执行的、与所述组的所述组标识信息相关联的所述任务的组指定为所述可执行组。
3.根据权利要求1所述的半导体设备,
其中所述任务管理信息包括进一步将所述任务与所述任务的执行状态彼此关联的信息,以及
所述第一处理器元件或所述第二处理器元件被配置为:参考所述任务管理信息,并且将在与所指定的所述可执行组的组标识信息相关联的所述任务之中的、在所述第一处理器元件或所述第二处理器元件中可执行的任务确定为接下来要被执行的任务。
4.根据权利要求3所述的半导体设备,
其中所述任务管理信息包括进一步将所述任务和所述任务的优先级彼此关联的信息,以及
所述第一处理器元件或所述第二处理器元件被配置为:参考所述任务管理信息,并且将在与所指定的所述可执行组的所述组标识信息相关联的所述任务之中的、在所述第一处理器元件或所述第二处理器元件中可执行的并且优先级最高的任务确定为接下来要被执行的任务。
5.根据权利要求1所述的半导体设备,
其中所述存储器还存储中断管理信息,
所述中断管理信息是将中断处理和用于标识所述组的所述组标识信息彼此关联的信息,
所述运行组管理信息是针对所述组中的每个组指示与所述组的所述组标识信息相关联的所述任务或与所述组的所述组标识信息相关联的所述中断处理是否在所述第一处理器元件或所述第二处理器元件中被执行的信息,以及
所述第一处理器元件或所述第二处理器元件被配置为:当指定所述第一处理器元件或所述第二处理器元件中的所述可执行组时参考所述中断管理信息,并且禁止与所述组的所述组标识信息相关联的所述中断处理。
6.根据权利要求5所述的半导体设备,
其中所述存储器还存储中断原因组信息,
所述中断原因组信息是将所述组与所述中断处理的中断原因彼此相关联的信息,
所述第一处理器元件或所述第二处理器元件被配置为:当指定所述第一处理器元件或所述第二处理器元件中的所述可执行组时参考所述中断原因组信息,并且禁止所述中断原因的所述中断处理,所述中断原因与所述组相关联。
7.一种半导体设备的控制方法,所述半导体设备包括第一处理器元件和第二处理器元件以及能够从所述第一处理器元件和所述第二处理器元件访问的第一共享资源和第二共享资源,所述控制方法包括:
存储任务管理信息,在所述任务管理信息中将在所述第一处理器元件或所述第二处理器元件中执行的任务与组标识信息彼此关联,所述组标识信息用于标识与所述第一共享资源或所述第二共享资源相对应的组;
存储运行组管理信息,所述运行组管理信息针对所述组中的每个组指示与所述组的所述组标识信息相关联的所述任务是否在所述第一处理器元件或所述第二处理器元件中被执行;
参考运行组管理信息,并且将所述第一处理器元件或所述第二处理器元件中的可执行任务的组指定为可执行组;以及
参考任务管理信息,并且将与所指定的可执行组的组标识信息相关联的任务确定为所述第一处理器元件或所述第二处理器元件中接下来要被执行的任务。
8.一种用于使计算机执行半导体设备的控制方法的程序,所述半导体设备包括第一处理器元件和第二处理器元件以及能够从所述第一处理器元件和所述第二处理器元件访问的第一共享资源和第二共享资源,所述控制方法包括:
存储任务管理信息,在所述任务管理信息中将在所述第一处理器元件或所述第二处理器元件中执行的任务与组标识信息彼此关联,所述组标识信息用于标识与所述第一共享资源或所述第二共享资源相对应的组;
存储运行组管理信息,所述运行组管理信息针对所述组中的每个组指示与所述组的所述组标识信息相关联的所述任务是否在所述第一处理器元件或所述第二处理器元件中被执行;
参考所述运行组管理信息,并且将所述第一处理器元件或所述第二处理器元件中的可执行任务的组指定为可执行组;以及
参考所述任务管理信息,并且将与所指定的所述可执行组的组标识信息相关联的任务确定为在所述第一处理器元件或所述第二处理器元件中接下来要被执行的任务。
CN202211635571.3A 2021-12-20 2022-12-19 半导体设备及其控制方法和程序 Pending CN116302583A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021-205996 2021-12-20
JP2021205996A JP2023091314A (ja) 2021-12-20 2021-12-20 半導体装置、半導体装置の制御方法及びプログラム

Publications (1)

Publication Number Publication Date
CN116302583A true CN116302583A (zh) 2023-06-23

Family

ID=86606426

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211635571.3A Pending CN116302583A (zh) 2021-12-20 2022-12-19 半导体设备及其控制方法和程序

Country Status (4)

Country Link
US (1) US20230195523A1 (zh)
JP (1) JP2023091314A (zh)
CN (1) CN116302583A (zh)
DE (1) DE102022213686A1 (zh)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011175378A (ja) 2010-02-23 2011-09-08 Renesas Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法

Also Published As

Publication number Publication date
DE102022213686A1 (de) 2023-06-22
US20230195523A1 (en) 2023-06-22
JP2023091314A (ja) 2023-06-30

Similar Documents

Publication Publication Date Title
JP2866241B2 (ja) コンピュータシステムおよびスケジューリング方法
US9798595B2 (en) Transparent user mode scheduling on traditional threading systems
JPH04308961A (ja) 占有されたプロセスの同期ロックの状態を通知するための手段及び装置
JP2005284749A (ja) 並列処理コンピュータ
US8413163B2 (en) Program control device including per-timeslot switching of thread execution
US8024739B2 (en) System for indicating and scheduling additional execution time based on determining whether the execution unit has yielded previously within a predetermined period of time
US20140351825A1 (en) Systems and methods for direct memory access coherency among multiple processing cores
US10360079B2 (en) Architecture and services supporting reconfigurable synchronization in a multiprocessing system
US6662364B1 (en) System and method for reducing synchronization overhead in multithreaded code
JP2018073301A (ja) 車両制御装置
US7117496B1 (en) Event-based synchronization
US11301304B2 (en) Method and apparatus for managing kernel services in multi-core system
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
CN116302583A (zh) 半导体设备及其控制方法和程序
JP3893136B2 (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
US10740150B2 (en) Programmable state machine controller in a parallel processing system
CN115016948B (zh) 一种资源访问方法、装置、电子设备及可读存储介质
JP4006428B2 (ja) 計算機システム
US12079657B2 (en) Handling ownership of process threads
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
US9547522B2 (en) Method and system for reconfigurable virtual single processor programming model
CN112612582B (zh) 信号量功能实现方法和装置
US20050050257A1 (en) Nested locks to avoid mutex parking
US20020042809A1 (en) Latch mechanism for concurrent computing environments

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