CN112799792B - 一种嵌入式操作系统的任务上下文寄存器保护方法 - Google Patents
一种嵌入式操作系统的任务上下文寄存器保护方法 Download PDFInfo
- Publication number
- CN112799792B CN112799792B CN202110134856.8A CN202110134856A CN112799792B CN 112799792 B CN112799792 B CN 112799792B CN 202110134856 A CN202110134856 A CN 202110134856A CN 112799792 B CN112799792 B CN 112799792B
- Authority
- CN
- China
- Prior art keywords
- task
- context
- tasks
- registers
- register
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 12
- 238000011084 recovery Methods 0.000 claims description 10
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101000578920 Homo sapiens Microtubule-actin cross-linking factor 1, isoforms 1/2/3/5 Proteins 0.000 description 1
- 102100028322 Microtubule-actin cross-linking factor 1, isoforms 1/2/3/5 Human genes 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提出一种嵌入式操作系统的任务上下文寄存器保护方法,按照任务类型进行任务分类,明确不同类型的任务使用到的寄存器种类,通过在创建任务时增设任务类型选项,以确定该任务使用到的寄存器,在任务上下文切换时,仅对其使用到的寄存器进行保存或恢复。本发明对任务进行分类,用户可根据应用场景创建不同类型的任务,并在任务中自主对使用到的寄存器进行保存和恢复,操作更加自主灵活;通过区分任务类型,不同类型的任务在任务上下文保存和恢复时仅保存和恢复其使用到的寄存器,大大节省了上下文保存和恢复的时间,提高了系统的实时性。
Description
技术领域
本发明涉及嵌入式操作系统的任务切换技术领域,尤其是一种嵌入式操作系统的任务上下文寄存器保护方法。
背景技术
在嵌入式领域,嵌入式操作系统正得到越来越广泛的应用。通过嵌入式操作系统,可以更合理、更有效地利用CPU资源,简化应用软件设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。
任务切换机制是多任务实时操作系统的核心。任务上下文(即任务的运行环境)一般指寄存器的内容。任务上下文的切换是任务调度的核心内容,包括保存当前任务的运行环境,恢复将要执行任务的运行环境等。任务上下文切换使得操作系统的多任务成为可能,但同时也为操作系统带来不可避免的额外开销,主要包括处理器中寄存器的保存与恢复、入口地址的重载、处理器流水线的刷新等。任务上下文切换的开销直接影响着操作系统的实时性,因此,任务上下文切换更需要考虑性能问题。
目前,主流的嵌入式操作系统有linux、FreeRTOS、uC/OS和Vxworks,这些操作系统都没有区分任务类型。对于所有的任务类型,在任务上下文切换时都需要保存所有的寄存器,但不是所有的任务类型都需要用到所有的寄存器;另一方面,对于寄存器较多的高性能信号处理器,诸如HXDSP104X系列数字信号处理器,这种做法将使得保存和恢复任务上下文的时间较长,严重影响系统的实时性。
HXDSP104X系列数字信号处理器是国产自主研发的多核DSP处理器,目前已经应用于雷达、电子对抗等领域。该数字信号处理器的每个处理器核支持的指令微操作达到1300多条,内核采用16发射、单指令流、多数据流架构;每个处理器核的执行部件包含在四个执行宏中,每个执行宏内部包含2个64字的本地通用寄存器组、8个乘法器、8个算数逻辑单元、四个移位器和1个超算器;每个处理器核都有自己的内核控制器、内核状态寄存器、通用寄存器、地址寄存器、中断控制器、DMA控制寄存器和DMA状态寄存器等,在任务上下文切换过程中需要保存和恢复的寄存器有1000多个。若在其任务上下文切换时,对所有寄存器进行保存和恢复,将占用大量的处理器时间。
发明内容
针对嵌入式操作系统任务切换机制中存在的不足之处,本发明提出一种嵌入式操作系统的任务上下文寄存器保护方法。
一种嵌入式操作系统的任务上下文寄存器保护方法,按照任务类型进行任务分类,明确不同类型的任务使用到的寄存器种类,通过在创建任务时增设任务类型选项,以确定该任务使用到的寄存器,在任务上下文切换时,仅对其使用到的寄存器进行保存或恢复。
进一步的,不同类型的任务在进行任务上下文切换时,通过不同的上下文切换函数实现相应种类寄存器的保存或恢复。
进一步的,任务类型至少包括混合型任务、控制类任务、计算密集型任务,针对混合型任务,任务上下文切换时,保存当前任务在当前状态下的所有寄存器,并恢复下一执行任务的上下文中保存的所有寄存器;针对控制类任务,任务上下文切换时,仅保存当前任务使用到的寄存器,对其他寄存器不进行保存和恢复;针对计算密集型任务,任务上下文切换时,不进行任何寄存器的保存和恢复,用户根据需要自行在用户程序中实现需要使用到的寄存器的保存和恢复。
本发明对任务进行分类,用户可根据应用场景创建不同类型的任务,并在任务中自主对使用到的寄存器进行保存和恢复,操作更加自主灵活;通过区分任务类型,不同类型的任务在任务上下文保存和恢复时仅保存和恢复其使用到的寄存器,大大节省了上下文保存和恢复的时间,提高了系统的实时性。
附图说明
图1为任务上下文切换流程示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
实施例1
一种嵌入式操作系统的任务上下文寄存器保护方法,按照任务类型进行任务分类,明确不同类型的任务使用到的寄存器种类,通过在创建任务时增设任务类型选项,以确定该任务使用到的寄存器,在任务上下文切换时,仅对其使用到的寄存器进行保存或恢复,即对当前执行任务使用到的寄存器进行保存,对下一执行任务使用到的寄存器进行恢复。
不同类型的任务在进行任务上下文切换时,通过不同的上下文切换函数实现相应种类寄存器的保存或恢复。任务类型至少包括混合型任务、控制类任务、计算密集型任务。
针对混合型任务,任务上下文切换时,保存当前任务在当前状态下的所有寄存器,并恢复下一执行任务的上下文中保存的所有寄存器。
针对控制类任务,任务上下文切换时,仅保存当前任务使用到的寄存器,对其他寄存器不进行保存和恢复。
针对计算密集型任务,任务上下文切换时,不进行任何寄存器的保存和恢复,用户根据需要自行在用户程序中实现需要使用到的寄存器的保存和恢复。
下面以HXDSP104X系列数字信号处理器为例,对以上三种不同类型任务的寄存器保护方案进行阐述。
1、针对混合型任务,任务创建时设置任务类型为混合型,任务上下文切换时,需要保存当前任务当前状态下的所有寄存器,包括通用寄存器(X|Y|Z|T)R0~(X|Y|Z|T)R39、地址发生寄存器U0~U7、V0~V7、W0~W7、乘累加寄存器(X|Y|Z|T)MACC0~(X|Y|Z|T)MACC3、累加寄存器(X|Y|Z|T)ACC0~(X|Y|Z|T)ACC7、ALU比较标志寄存器(X|Y|Z|T)ACF0~(X|Y|Z|T)ACF7、ALU块浮点标志寄存器(X|Y|Z|T)ABFPR、零开销循环寄存器LC0、LC1等,并恢复下一执行任务的上下文中保存的所有寄存器。
2、针对控制类任务,不包含大量的复杂计算,任务创建时设置任务类型为控制类,任务上下文切换时,仅保存当前任务使用到的寄存器,即通用寄存器XR0~XR63、YR39、地址发生寄存器U0~U15、乘累加寄存器XMACC0~XMACC7、累加寄存器XACC0~XACC7、ALU控制寄存器XALUCR、乘法器控制寄存器XMULCR、移位器控制寄存器XSHFCR、超算器控制寄存器XSPUCR,分支地址寄存器BA、子程序指针寄存器SR、子程序返回地址寄存器SER,对其他寄存器不再进行保存和恢复。
3、针对计算密集型任务,需要进行大量计算,主要消耗处理器资源,因此代码运行效率至关重要。任务创建时设置任务类型为计算密集型,任务上下文切换时,不进行任何寄存器的保存和恢复,用户可以根据需要自行在用户程序中对需要使用到的寄存器进行保存和恢复,即用户需要在任务开始前实现用户上下文保存函数和用户上下文恢复函数,其中用户上下文保存函数保存用户在任务中使用到的寄存器,用户上下文恢复函数恢复用户在任务中使用到的寄存器。
任务上下文切换流程,如图1所示,包括以下步骤:
步骤1,任务上下文切换时,首先进入软件中断的入口函数,执行清全局中断且禁止中断嵌套,入栈保存(X|Y|Z|T)R0~(X|Y|Z|T)R1寄存器(因为之后保存其他寄存器需要用到),入栈保存v0、v1和BA寄存器;
步骤2,对于混合型任务,保存所有寄存器;对于控制类任务,仅保存当前任务使用到的部分寄存器;对于计算密集类型任务,调用用户上下文保存函数来保存用户使用到的寄存器;
步骤3,寄存器保存完成后,记录当前任务上下文栈顶指针作为当前执行任务的上下文,保存到当前执行任务的任务控制块中;
步骤4,通过下一执行任务的任务控制块中保存的任务上下文的栈顶指针来恢复下一执行任务的上下文:对于混合型任务,恢复所有寄存器;对于控制类任务,仅恢复下一执行任务使用到的部分寄存器;对于计算密集类型任务,调用用户上下文恢复函数来恢复用户使用到的寄存器。
显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
Claims (2)
1.一种嵌入式操作系统的任务上下文寄存器保护方法,其特征在于,按照任务类型进行任务分类,明确不同类型的任务使用到的寄存器种类,其中,任务类型包括混合型任务、控制类任务、计算密集型任务;通过在创建任务时增设任务类型选项,以确定该任务使用到的寄存器,在任务上下文切换时,仅对其使用到的寄存器进行保存或恢复;
针对混合型任务,任务上下文切换时,保存当前任务在当前状态下的所有寄存器,并恢复下一执行任务的上下文中保存的所有寄存器;
针对控制类任务,任务上下文切换时,仅保存当前任务使用到的寄存器,仅恢复下一执行任务使用到的部分寄存器,对其他寄存器不进行保存和恢复;
针对计算密集型任务,任务上下文切换时,不进行任何寄存器的保存和恢复,用户根据需要自行在用户程序中实现需要使用到的寄存器的保存和恢复;
寄存器保存完成后,记录当前任务上下文栈顶指针作为当前执行任务的上下文,保存到当前执行任务的任务控制块中;通过下一执行任务的任务控制块中保存的任务上下文的栈顶指针来恢复下一执行任务的上下文。
2.根据权利要求1所述的嵌入式操作系统的任务上下文寄存器保护方法,其特征在于,不同类型的任务在进行任务上下文切换时,通过不同的上下文切换函数实现相应种类寄存器的保存或恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110134856.8A CN112799792B (zh) | 2021-02-01 | 2021-02-01 | 一种嵌入式操作系统的任务上下文寄存器保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110134856.8A CN112799792B (zh) | 2021-02-01 | 2021-02-01 | 一种嵌入式操作系统的任务上下文寄存器保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112799792A CN112799792A (zh) | 2021-05-14 |
CN112799792B true CN112799792B (zh) | 2023-12-05 |
Family
ID=75813307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110134856.8A Active CN112799792B (zh) | 2021-02-01 | 2021-02-01 | 一种嵌入式操作系统的任务上下文寄存器保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799792B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5867725A (en) * | 1996-03-21 | 1999-02-02 | International Business Machines Corporation | Concurrent multitasking in a uniprocessor |
US6128641A (en) * | 1997-09-12 | 2000-10-03 | Siemens Aktiengesellschaft | Data processing unit with hardware assisted context switching capability |
CN1490722A (zh) * | 2003-09-19 | 2004-04-21 | 清华大学 | 基于PowerPC处理器结构的分级任务切换方法 |
CN102870095A (zh) * | 2010-04-30 | 2013-01-09 | 日本电气株式会社 | 信息处理装置和任务切换方法 |
CN104679585A (zh) * | 2013-11-28 | 2015-06-03 | 中国航空工业集团公司第六三一研究所 | 浮点上下文切换方法 |
CN106537343A (zh) * | 2014-07-24 | 2017-03-22 | 阿方索·伊尼格斯 | 使用动态可配置主动协同处理单元的并行处理的系统和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1875340A2 (en) * | 2005-04-22 | 2008-01-09 | Nxp B.V. | Implementation of multi-tasking on a digital signal processor |
US8595747B2 (en) * | 2005-12-29 | 2013-11-26 | Sony Computer Entertainment Inc. | Efficient task scheduling by assigning fixed registers to scheduler |
-
2021
- 2021-02-01 CN CN202110134856.8A patent/CN112799792B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5867725A (en) * | 1996-03-21 | 1999-02-02 | International Business Machines Corporation | Concurrent multitasking in a uniprocessor |
US6128641A (en) * | 1997-09-12 | 2000-10-03 | Siemens Aktiengesellschaft | Data processing unit with hardware assisted context switching capability |
CN1490722A (zh) * | 2003-09-19 | 2004-04-21 | 清华大学 | 基于PowerPC处理器结构的分级任务切换方法 |
CN102870095A (zh) * | 2010-04-30 | 2013-01-09 | 日本电气株式会社 | 信息处理装置和任务切换方法 |
CN104679585A (zh) * | 2013-11-28 | 2015-06-03 | 中国航空工业集团公司第六三一研究所 | 浮点上下文切换方法 |
CN106537343A (zh) * | 2014-07-24 | 2017-03-22 | 阿方索·伊尼格斯 | 使用动态可配置主动协同处理单元的并行处理的系统和方法 |
Non-Patent Citations (3)
Title |
---|
Hardware implementation of context switching for hard real-time operating systems;Nader I. Rafla et al.;《2011 IEEE 54th International Midwest Symposium on Circuits and Systems (MWSCAS)》;全文 * |
μC/OS-Ⅱ操作系统移植到"魂芯"DSP的方法与经验;林广栋;《中国集成电路》;全文 * |
刘利强.《实时嵌入式系统软件设计方法》.哈尔滨:哈尔滨工程大学出版社,2014,第26-27页. * |
Also Published As
Publication number | Publication date |
---|---|
CN112799792A (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0377991B1 (en) | Data processing systems | |
EP0087978B1 (en) | Information processing unit | |
US4782441A (en) | Vector processor capable of parallely executing instructions and reserving execution status order for restarting interrupted executions | |
US5051896A (en) | Apparatus and method for nullifying delayed slot instructions in a pipelined computer system | |
KR970008523B1 (ko) | 프로세서 | |
RU2292581C2 (ru) | Команды загрузки/перемещения и копирования для процессора | |
KR100225244B1 (ko) | 프로세서내에서 자원 할당을 추적하는 방법 및 장치,수퍼스칼라프로세서및데이타프로세싱시스템 | |
US4740893A (en) | Method for reducing the time for switching between programs | |
US7082518B2 (en) | Interruptible digital signal processor having two instruction sets | |
US5043867A (en) | Exception reporting mechanism for a vector processor | |
US5414864A (en) | Method for selectively saving/restoring first registers and bypassing second registers in register units based on individual lock/unlock status thereof | |
JPH07248897A (ja) | コンピュータ・システムにおける例外からの回復方法、及びそのための装置 | |
JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
JP2004157636A (ja) | データ処理装置 | |
US4152763A (en) | Control system for central processing unit with plural execution units | |
CN116501389B (zh) | 指令缓冲单元、处理器及计算机系统 | |
US6675290B1 (en) | Processor for improving instruction utilization using multiple parallel processors and computer system equipped with the processor | |
CN112799792B (zh) | 一种嵌入式操作系统的任务上下文寄存器保护方法 | |
EP1039376B1 (en) | Sub-instruction emulation in a VLIW processor | |
JP4114946B2 (ja) | データ処理装置 | |
AU1174799A (en) | Computer system | |
JP4756599B2 (ja) | データ処理装置 | |
EP1209559A1 (en) | Computer system | |
JPS62267869A (ja) | ベクトル・プロセツサにおける演算例外時の処理方式 | |
Yang et al. | Design of the Kydon-RISC processor |
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 |