CN105868003B - 一种基于tms320c6747的任务上下文切换优化方法 - Google Patents
一种基于tms320c6747的任务上下文切换优化方法 Download PDFInfo
- Publication number
- CN105868003B CN105868003B CN201610179811.1A CN201610179811A CN105868003B CN 105868003 B CN105868003 B CN 105868003B CN 201610179811 A CN201610179811 A CN 201610179811A CN 105868003 B CN105868003 B CN 105868003B
- Authority
- CN
- China
- Prior art keywords
- instruction
- task
- register
- packet
- instructions
- 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 21
- 238000005457 optimization Methods 0.000 title claims abstract description 16
- 238000003860 storage Methods 0.000 claims description 4
- 230000009467 reduction Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012216 screening Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 108091092878 Microsatellite Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004224 protection Effects 0.000 description 1
- 238000005303 weighing 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
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)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于TMS320C6747的任务上下文切换优化方法,包括:对任务上下文切换需要保存的寄存器进行筛选,以最少的寄存器保证操作系统的正常运行;通过TMS320C6747的硬件流水线提高任务上下文切换代码的并行执行度;通过双字指令减少访存次数,提高代码执行效率。采用本发明方法对基于TMS320C6747硬件平台的嵌入式实时操作系统的任务上下文切换代码进行优化之后,操作系统的任务切换时间有明显的减少,从而提高了操作系统的实时性,使其能够满足对实时性要求较高的场合。
Description
技术领域
本发明属于嵌入式操作系统技术领域,具体涉及一种基于TMS320C6747的任务上下文切换优化方法。
背景技术
任务上下文(即任务的运行环境),一般指CPU寄存器的内容;任务上下文的切换是任务调度的核心内容,包括保存当前任务的运行环境,恢复将要运行任务的运行环境等。SmartOSEK-MicroSat是由浙江大学ESE工程中心研发的一款面向微小卫星领域的嵌入式实时操作系统,主要包括任务管理模块、资源管理模块、事件处理模块、Alarm模块、中断处理模块等。SmartOSEK-MicroSat的任务上下文切换可以分为以下四种情况:
(1)启动一个新任务,并不保存旧任务的上下文。这种情况发生于操作系统启动时调度运行第一个任务或者当前任务完成,操作系统去调度一个没有执行过的新任务运行。
(2)启动一个新任务,并保存旧任务的上下文。这种情况发生于当前任务还买有执行完成,操作系统去调度一个没有执行过的新任务运行。
(3)启动一个原先被中断的任务,恢复其上下文,并不保存旧任务的上下文;这种情况发生于当前任务已经执行完,操作系统去调度一个之前被中断的任务运行。
(4)启动一个原先被中断的任务,恢复其上下文,并保存旧任务的上下文;这是最复杂的一种分类情形,当前任务没有执行完,此时操作系统去调度一个之前被中断的任务运行。
针对上述四种分类情况,SmartOSEK-MicroSat分别设计了对应的任务上下文切换核心函数;在进行任务上下文切换时根据不同的情况可能需要对任务的上下文内容进行保存或者恢复,这里上下文内容主要是指系统运行所必不可少的寄存器的内容;在设计核心函数的时候将上下文的保存和恢复部分设计成可复用代码的形式。
TMS320C6747是由德州仪器研发的一款32位浮点低功耗数字信号处理器,其CPU包含两个通用寄存器组(共64个32位通用寄存器)、一个控制寄存器组(包括AMR、CSR、IER等控制寄存器共30个)、两组数据存储通路、两组数据存储通路、8个可并行使用的功能单元。支持40位和64位数据类型,可以一次读写64位数据;支持流水线操作,最多允许8条指令并行执行(即一个执行包最多包含8条指令)。
发明内容
为了提高嵌入式实时操作系统的实时性,本发明提出了一种基于TMS320C6747的任务上下文切换优化方法,其采用的技术方案包括以下三部分:
(1)对TMS320C6747中的寄存器进行筛选;
(2)利用TMS320C6747中的取指单元以取指包为单位从程序存储器中调取指令,然后将取指包中符合并行条件的指令组合成执行包,并行执行处于同一执行包中的所有指令;
(3)采用寄存器对的方式存储40位或64位的数据;对于访存指令,利用LDDW(双字节读取指令)和STDW(双字节存储指令)分别替换LDW(单字节读取指令)和STW(单字节存储指令)。
所述对TMS320C6747中的寄存器进行筛选的策略为:对于嵌入式实时操作系统初始化完成后就一直保持不变的寄存器,进行过滤不将这些寄存器保存任务堆栈中。
所述的取指包包含有八条指令,所述的执行包所包含的指令数不超过八条。
所述的执行包由同一取指包中的若干个并行指令组成,或由分属于不同取指包中的若干个并行指令组成。
同一执行包内的指令必须满足以下三个条件:
1.所有指令均为并行执行的;
2.指令之间不存在使用相同功能单元的情况;
3.指令之间不存在对同一个目的地址进行读写的情况。
所述的TMS320C6747具有两组数据通路,每组数据通路包括两条32位的读取通路和两条32位的存储通路。
所述的TMS320C6747具有30个控制寄存器和64个通用寄存器,其中64个通用寄存器分为两组,每32个为一组。
本发明优化方法通过对寄存器进行筛选,在进行任务上下文切换时只保存系统运行所必不可少的寄存器,能够避免程序出现堆栈溢出导致崩溃的问题,同时减少上下文保存和恢复所需要的时间,以最少的寄存器信息保证系统的正常运行。同时,本发明在指令译码阶段,使执行包中的指令分派到不同的功能单元,将可以在同一时钟周期执行的指令并行,可以在减少程序代码的同时提高代码的执行效率,有效地减少任务上下文的切换时间。
此外,本发明利用TMS320C6747具有同时读写64位数据的能力,对于比较耗时的访存指令,通过采用双字节指令取代单字节指令,前者一次可以完成64位数据的读写操作,能够减少访存次数,提高代码执行效率。
由此可见,采用本发明方法对基于TMS320C6747硬件平台的嵌入式实时操作系统的任务上下文切换代码进行优化之后,操作系统的任务切换时间有明显的减少,从而提高了操作系统的实时性,使其能够满足对实时性要求较高的场合。
附图说明
图1为本发明寄存器筛选的过程示意图。
图2为本发明指令并行执行的过程示意图。
图3为本发明采用双字指令减少访存次数的代码实例图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
本发明基于TMS320C6747的任务上下文切换优化方法,其所采用的技术方案包括以下三部分:
(1)寄存器筛选。在进行任务上下文切换时要将寄存器当前的值保存到任务的任务堆栈中,由于TMS320C6747的寄存器(64个通用寄存器和30个控制寄存器)相对比较多,如果将所有这些寄存器都保存到任务堆栈中既容易造成任务堆栈的溢出导致程序崩溃,同时也增加了任务上下文切换所需的时间。为了避免程序出现堆栈溢出的问题同时降低上下文切换所需要的时间,对需要保存的寄存器进行筛选,以最少的寄存器信息保证系统的正常运行。寄存器筛选的过程如图1所示,筛选的基本原则对于一些系统初始化完成后就保持不变的寄存器,在上下文保存时,应该给予过滤。
(2)指令并行。TMS320C6747的取指单元可以一次容纳8条指令,构成一个取值包(Fetch packet,FP),取指包中的多条指令可以形成一个执行包(Execute Packet,EP),处于同一个执行包中的指令是可以并行执行的。执行包中的指令可以分属于不同的取指包,但每个执行包所包含的指令数不能超过8个,而且指令之间不可以存在使用相同功能单元的情况,也不可以存在对同一个目的地址进行读写的情况。在指令译码阶段,执行包中的指令会分派到不同的功能单元,从而可以实现指令的并行运行,图2为指令并行运行的过程。采用指令并行运行,可以在减少程序代码同时也可以提高代码的执行效率。
(3)减少访存次数。TMS320C6747支持40位和64位数据类型,对于超过32位的数据在存储时需要采用寄存器对(Register Pair)的方式。此外TMS320C6747的两个数据通路(A和B)均有两个32位读取或存储通路,使得CPU具有同时读写64位数据的能力,对于比较耗时的访存指令(如Load和Store),可以用LDDW和STDW指令替换LDW和STW,前者一次可以完成64位数据的读写操作。图3为采用LDDW/STDW替换LDW/STW的代码实例,其中A1:A0和B3:B2为TMS320C6747支持的寄存器对组合。
在嵌入式操实时作系统领域中,任务切换时间是衡量操作系统实时性的一条重要指标。本发明在TMS320C6747数字信号处理器和SmartOSEK-MicroSat实时操作系统上的实施为例,对任务上下文切换最复杂情况下的时间性能进行对比分析,具体实施时可以分为以下三个步骤:
步骤1:根据权利要求书提到的优化方法对SmartOSEK-MicroSat嵌入式实时操作系统的任务上下文切换代码进行优化。在通用寄存器中B15用作堆栈指针寄存器(StackPointer)、A15用作当前栈帧的栈底位置,控制寄存器中IRP作为中断返回地址指针寄存器、IER作为中断使能寄存器、AMR作为寻址方式控制寄存器、CSR作为控制状态寄存器,上述这些寄存器都是操作系统正常运行所必不可少的,所以要将其保存到任务的堆栈中,而对于A15~A31以及B15~B31以及其他一些控制寄存器,则将其忽略,筛选过程见图1。
TMS320C6747具有8个可以并行使用的功能单元,在编写任务上下文切换代码的时候可以将使用不同功能单元的指令并行处理,比如对于LDW(单字节加载指令)和MVC(数据传递指令),其所用到的功能单元分别为.D和.S2,对于这两个指令就可以让他们并行。在保存上下文的时候,由于要将A0~A15、B0~B15保存到任务堆栈中,为了减少访存的次数可以采用LDDW(双字节加载指令)替换LDW(单字节加载指令)见图3。
步骤2:在对任务上下文切换的代码进行优化之后,需要进行实施方案的具体配置。在进行实施方案的具体配置时,通过配置工具配置了两个任务OsTask_0和OsTask_1,其中OsTask_0采用自启动方式且其优先级低于OsTask_1,两个任务均可被抢占。在OsTask_0中调用ActivateTask激活OSTask_1,OsTask_1抢占运行(具有较高优先级),OSTask_1中因调用WaitEvent而阻塞,此时系统重新调度OSTask_0运行,此时发生的任务切换过程就是任务上下文切换四种分类情况中最复杂的一种。
步骤3:在完成实施方案具体任务的配置之后,需要在程序添加用于测量任务切换时间的代码。本实施方案采用“打桩”的方式来测量任务切换时间,即在代码的合适位置插入代码以改变某个GPIO引脚的状态,并通过逻辑分析仪捕捉该GPIO引脚的状态变化从而得到任务切换的具体时间。
本实施方案采用TMS320C6747的GPIO2_11引脚作为逻辑分析仪的检测引脚,在OSTask_0中先将该引脚置高,在OSTask_1被阻塞以后会调用任务切换函数OSTaskSaveLoadRun,在该函数的开头将GPIO2_11引脚拉低,此时会捕捉到一个下降沿,在OsTask_0中再将该引脚置高,此时逻辑分析仪又会捕捉到一个上升沿,该上升沿与之前捕捉到的下降沿的时间间隔即为该种情况下的任务切换时间,具体的测量结果如表1所示,表1为测量8次的任务上下文切换优化前后时间性能对比数据(单位:us)。
表1
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 平均值 |
优化前 | 12.41 | 12.45 | 12.37 | 12.37 | 12.38 | 12.37 | 12.37 | 12.39 | 12.39 |
优化后 | 8.93 | 8.93 | 8.94 | 8.93 | 8.94 | 8.95 | 8.94 | 8.95 | 8.94 |
从表1中可以看出在使用本发明优化方法对嵌入式实时操作系统任务上下文切换的代码进行优化之后,其在最复杂情况下的任务切换时间比优化前减少了3us以上。
上述的对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
Claims (3)
1.一种基于TMS320C6747的任务上下文切换优化方法,包括:
(1)对TMS320C6747中的寄存器进行筛选,对于嵌入式实时操作系统初始化完成后就一直保持不变的寄存器,进行过滤, 不将这些寄存器保存任务堆栈中;通过对寄存器进行筛选,在进行任务上下文切换时只保存系统运行所必不可少的寄存器;
(2)利用TMS320C6747中的取指单元以取指包为单位从程序存储器中调取指令,然后将取指包中符合并行条件的指令组合成执行包,并行执行处于同一执行包中的所有指令;
取指包包含有八条指令,所述的执行包所包含的指令数不超过八条;执行包由同一取指包中的若干个并行指令组成,或由分属于不同取指包中的若干个并行指令组成;同一执行包内的指令必须满足以下三个条件:
①所有指令均为并行执行的;
②指令之间不存在使用相同功能单元的情况;
③指令之间不存在对同一个目的地址进行读写的情况;
在指令译码阶段,使执行包中的指令分派到不同的功能单元,将可以在同一时钟周期执行的指令并行;
(3)采用寄存器对的方式存储40位或64位的数据;对于访存指令,利用LDDW和STDW分别替换LDW和STW;利用TMS320C6747具有同时读写64位数据的能力,对于相对耗时的访存指令,通过采用双字节指令取代单字节指令。
2.根据权利要求1所述的任务上下文切换优化方法,其特征在于:所述的TMS320C6747具有两组数据通路,每组数据通路包括两条32位的读取通路和两条32位的存储通路。
3.根据权利要求1所述的任务上下文切换优化方法,其特征在于:所述的TMS320C6747具有30个控制寄存器和64个通用寄存器,其中64个通用寄存器分为两组,每32个为一组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610179811.1A CN105868003B (zh) | 2016-03-25 | 2016-03-25 | 一种基于tms320c6747的任务上下文切换优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610179811.1A CN105868003B (zh) | 2016-03-25 | 2016-03-25 | 一种基于tms320c6747的任务上下文切换优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105868003A CN105868003A (zh) | 2016-08-17 |
CN105868003B true CN105868003B (zh) | 2019-08-13 |
Family
ID=56624876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610179811.1A Active CN105868003B (zh) | 2016-03-25 | 2016-03-25 | 一种基于tms320c6747的任务上下文切换优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105868003B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241537A (zh) * | 2019-12-23 | 2020-06-05 | 北京元心科技有限公司 | 任务栈溢出检测方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN202110526U (zh) * | 2011-03-04 | 2012-01-11 | 中国电子科技集团公司第三十八研究所 | 高性能通用信号处理器指令分配装置 |
CN102521042A (zh) * | 2011-12-16 | 2012-06-27 | 中船重工(武汉)凌久电子有限责任公司 | 基于哈佛结构dsp的快速正文切换方法 |
CN103810035A (zh) * | 2012-11-01 | 2014-05-21 | 国际商业机器公司 | 智能上下文管理 |
CN104303143A (zh) * | 2012-03-21 | 2015-01-21 | 密克罗奇普技术公司 | 具有上下文切换的微控制器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140157287A1 (en) * | 2012-11-30 | 2014-06-05 | Advanced Micro Devices, Inc | Optimized Context Switching for Long-Running Processes |
JP6086230B2 (ja) * | 2013-04-01 | 2017-03-01 | 日本電気株式会社 | 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法 |
-
2016
- 2016-03-25 CN CN201610179811.1A patent/CN105868003B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN202110526U (zh) * | 2011-03-04 | 2012-01-11 | 中国电子科技集团公司第三十八研究所 | 高性能通用信号处理器指令分配装置 |
CN102521042A (zh) * | 2011-12-16 | 2012-06-27 | 中船重工(武汉)凌久电子有限责任公司 | 基于哈佛结构dsp的快速正文切换方法 |
CN104303143A (zh) * | 2012-03-21 | 2015-01-21 | 密克罗奇普技术公司 | 具有上下文切换的微控制器 |
CN103810035A (zh) * | 2012-11-01 | 2014-05-21 | 国际商业机器公司 | 智能上下文管理 |
Non-Patent Citations (2)
Title |
---|
Rapid and low-cost context-switch through embedded processor customization for real-time and control applications;Xianarong Zhou;《IEEE Design Automatic Conference》;20060911;352-357 |
基于BWDSP104X系统的嵌入式操作系统内存管理和上下文切换的实时性研究;权彦清;《中国优秀硕士论文全文数据库信息科技辑》;20150930;I138-1244 |
Also Published As
Publication number | Publication date |
---|---|
CN105868003A (zh) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1127687C (zh) | 带外部协处理器可访问的上下文切换寄存器组的risc处理器 | |
JP5405320B2 (ja) | 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム | |
CN101110017B (zh) | 一种组合指令的技术 | |
CN100470485C (zh) | 多操作系统协同工作实现方法 | |
US8078850B2 (en) | Branch prediction technique using instruction for resetting result table pointer | |
US20090125703A1 (en) | Context Switching on a Network On Chip | |
CN103488464B (zh) | 微处理器以及微处理器操作方法 | |
CN110275722A (zh) | 用于升级应用的方法、装置、设备和存储介质 | |
KR100777772B1 (ko) | 연산 처리 장치, 정보 처리 장치 및 레지스터 파일의 제어방법 | |
US20170038998A1 (en) | Computing device, process control method, and computer-readable recording medium | |
EP2083352B1 (en) | Processing unit | |
CN101847096B (zh) | 包含栈变量函数的优化方法 | |
KR20170141205A (ko) | Dsp 엔진 및 향상된 컨텍스트 스위치 기능부를 구비한 중앙 처리 유닛 | |
CN101446918A (zh) | 一种实现用户态调试器调试单个函数的方法及系统 | |
CN105550029A (zh) | 一种进程调度方法及装置 | |
CN101727423B (zh) | 可重配置fpga上可抢占硬件多任务系统及其实现方法 | |
EP0239078A2 (en) | Register saving/restoring system | |
CN107526622B (zh) | Linux的快速异常处理方法及装置 | |
CN105868003B (zh) | 一种基于tms320c6747的任务上下文切换优化方法 | |
US8145886B2 (en) | Changing processor functions by changing function information | |
CN113791870A (zh) | 一种WebAssembly虚拟机分布式系统细粒度迁移方法及系统 | |
CN101639791B (zh) | 一种改善嵌入式实时操作系统中断延迟的方法 | |
US7603542B2 (en) | Reconfigurable electric computer, semiconductor integrated circuit and control method, program generation method, and program for creating a logic circuit from an application program | |
US6675238B1 (en) | Each of a plurality of descriptors having a completion indicator and being stored in a cache memory of an input/output processor | |
CN100583030C (zh) | 一种risc处理器及其数据访存方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |