一种基于tms320c6747的任务上下文切换优化方法

文档序号:10511991阅读:301来源:国知局
一种基于tms320c6747的任务上下文切换优化方法
【专利摘要】本发明公开了一种基于TMS320C6747的任务上下文切换优化方法,包括:对任务上下文切换需要保存的寄存器进行筛选,以最少的寄存器保证操作系统的正常运行;通过TMS320C6747的硬件流水线提高任务上下文切换代码的并行执行度;通过双字指令减少访存次数,提高代码执行效率。采用本发明方法对基于TMS320C6747硬件平台的嵌入式实时操作系统的任务上下文切换代码进行优化之后,操作系统的任务切换时间有明显的减少,从而提高了操作系统的实时性,使其能够满足对实时性要求较高的场合。
【专利说明】
一种基于TMS320C6747的任务上下文切换优化方法
技术领域
[00011本发明属于嵌入式操作系统技术领域,具体涉及一种基于TMS320C6747的任务上 下文切换优化方法。
【背景技术】
[0002] 任务上下文(即任务的运行环境),一般指CPU寄存器的内容;任务上下文的切换是 任务调度的核心内容,包括保存当前任务的运行环境,恢复将要运行任务的运行环境等。 SmartOSEK-MicroSat是由浙江大学ESE工程中心研发的一款面向微小卫星领域的嵌入式实 时操作系统,主要包括任务管理模块、资源管理模块、事件处理模块、Alarm模块、中断处理 模块等。SmartOSEK-MicroSat的任务上下文切换可以分为以下四种情况:
[0003] (1)启动一个新任务,并不保存旧任务的上下文。这种情况发生于操作系统启动时 调度运行第一个任务或者当前任务完成,操作系统去调度一个没有执行过的新任务运行。
[0004] (2)启动一个新任务,并保存旧任务的上下文。这种情况发生于当前任务还买有执 行完成,操作系统去调度一个没有执行过的新任务运行。
[0005] (3)启动一个原先被中断的任务,恢复其上下文,并不保存旧任务的上下文;这种 情况发生于当前任务已经执行完,操作系统去调度一个之前被中断的任务运行。
[0006] (4)启动一个原先被中断的任务,恢复其上下文,并保存旧任务的上下文;这是最 复杂的一种分类情形,当前任务没有执行完,此时操作系统去调度一个之前被中断的任务 运行。
[0007] 针对上述四种分类情况,SmartOSEK-MicroSat分别设计了对应的任务上下文切换 核心函数;在进行任务上下文切换时根据不同的情况可能需要对任务的上下文内容进行保 存或者恢复,这里上下文内容主要是指系统运行所必不可少的寄存器的内容;在设计核心 函数的时候将上下文的保存和恢复部分设计成可复用代码的形式。
[0008] TMS320C6747是由德州仪器研发的一款32位浮点低功耗数字信号处理器,其CPU包 含两个通用寄存器组(共64个32位通用寄存器)、一个控制寄存器组(包括AMR、CSR、IER等控 制寄存器共30个)、两组数据存储通路、两组数据存储通路、8个可并行使用的功能单元。支 持40位和64位数据类型,可以一次读写64位数据;支持流水线操作,最多允许8条指令并行 执行(即一个执行包最多包含8条指令)。

【发明内容】

[0009] 为了提高嵌入式实时操作系统的实时性,本发明提出了一种基于TMS320C6747的 任务上下文切换优化方法,其采用的技术方案包括以下三部分:
[0010] (1)对TMS320C6747中的寄存器进行筛选;
[0011] (2)利用TMS320C6747中的取指单元以取指包为单位从程序存储器中调取指令,然 后将取指包中符合并行条件的指令组合成执行包,并行执行处于同一执行包中的所有指 令;
[0012] (3)采用寄存器对的方式存储40位或64位的数据;对于访存指令,利用LDDW(双字 节读取指令)和STDW(双字节存储指令)分别替换LDW(单字节读取指令)和STW(单字节存储 指令)。
[0013] 所述对TMS320C6747中的寄存器进行筛选的策略为:对于嵌入式实时操作系统初 始化完成后就一直保持不变的寄存器,进行过滤不将这些寄存器保存任务堆栈中。
[0014] 所述的取指包包含有八条指令,所述的执行包所包含的指令数不超过八条。
[0015] 所述的执行包由同一取指包中的若干个并行指令组成,或由分属于不同取指包中 的若干个并行指令组成。
[0016] 同一执行包内的指令必须满足以下三个条件:
[0017] 1.所有指令均为并行执行的;
[0018] 2.指令之间不存在使用相同功能单元的情况;
[0019] 3.指令之间不存在对同一个目的地址进行读写的情况。
[0020] 所述的TMS320C6747具有两组数据通路,每组数据通路包括两条32位的读取通路 和两条32位的存储通路。
[0021] 所述的TMS320C6747具有30个控制寄存器和64个通用寄存器,其中64个通用寄存 器分为两组,每32个为一组。
[0022] 本发明优化方法通过对寄存器进行筛选,在进行任务上下文切换时只保存系统运 行所必不可少的寄存器,能够避免程序出现堆栈溢出导致崩溃的问题,同时减少上下文保 存和恢复所需要的时间,以最少的寄存器信息保证系统的正常运行。同时,本发明在指令译 码阶段,使执行包中的指令分派到不同的功能单元,将可以在同一时钟周期执行的指令并 行,可以在减少程序代码的同时提高代码的执行效率,有效地减少任务上下文的切换时间。 [0023]此外,本发明利用TMS320C6747具有同时读写64位数据的能力,对于比较耗时的访 存指令,通过采用双字节指令取代单字节指令,前者一次可以完成64位数据的读写操作,能 够减少访存次数,提高代码执行效率。
[0024]由此可见,采用本发明方法对基于TMS320C6747硬件平台的嵌入式实时操作系统 的任务上下文切换代码进行优化之后,操作系统的任务切换时间有明显的减少,从而提高 了操作系统的实时性,使其能够满足对实时性要求较高的场合。
【附图说明】
[0025] 图1为本发明寄存器筛选的过程示意图。
[0026] 图2为本发明指令并行执行的过程示意图。
[0027] 图3为本发明采用双字指令减少访存次数的代码实例图。
【具体实施方式】
[0028] 为了更为具体地描述本发明,下面结合附图及【具体实施方式】对本发明的技术方案 进行详细说明。
[0029]本发明基于TMS320C6747的任务上下文切换优化方法,其所采用的技术方案包括 以下三部分:
[0030] (1)寄存器筛选。在进行任务上下文切换时要将寄存器当前的值保存到任务的任 务堆栈中,由于TMS320C6747的寄存器(64个通用寄存器和30个控制寄存器)相对比较多,如 果将所有这些寄存器都保存到任务堆栈中既容易造成任务堆栈的溢出导致程序崩溃,同时 也增加了任务上下文切换所需的时间。为了避免程序出现堆栈溢出的问题同时降低上下文 切换所需要的时间,对需要保存的寄存器进行筛选,以最少的寄存器信息保证系统的正常 运行。寄存器筛选的过程如图1所示,筛选的基本原则对于一些系统初始化完成后就保持不 变的寄存器,在上下文保存时,应该给予过滤。
[0031] (2)指令并行。TMS320C6747的取指单元可以一次容纳8条指令,构成一个取值包 (Fetch packet,FP),取指包中的多条指令可以形成一个执行包(Execute Packet,EP),处 于同一个执行包中的指令是可以并行执行的。执行包中的指令可以分属于不同的取指包, 但每个执行包所包含的指令数不能超过8个,而且指令之间不可以存在使用相同功能单元 的情况,也不可以存在对同一个目的地址进行读写的情况。在指令译码阶段,执行包中的指 令会分派到不同的功能单元,从而可以实现指令的并行运行,图2为指令并行运行的过程。 采用指令并行运行,可以在减少程序代码同时也可以提高代码的执行效率。
[0032] (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支持的寄存器对组合。
[0033]在嵌入式操实时作系统领域中,任务切换时间是衡量操作系统实时性的一条重要 指标。本发明在TMS320C6747数字信号处理器和SmartOSEK-MicroSat实时操作系统上的实 施为例,对任务上下文切换最复杂情况下的时间性能进行对比分析,具体实施时可以分为 以下三个步骤:
[0034] 步骤1:根据权利要求书提到的优化方法对SmartOSEK-MicroSat嵌入式实时操作 系统的任务上下文切换代码进行优化。在通用寄存器中B15用作堆栈指针寄存器(Stack Pointer)、A15用作当前栈帧的栈底位置,控制寄存器中IRP作为中断返回地址指针寄存器、 IER作为中断使能寄存器、AMR作为寻址方式控制寄存器、CSR作为控制状态寄存器,上述这 些寄存器都是操作系统正常运行所必不可少的,所以要将其保存到任务的堆栈中,而对于 A15~A31以及B15~B31以及其他一些控制寄存器,则将其忽略,筛选过程见图1。
[0035] TMS320C6747具有8个可以并行使用的功能单元,在编写任务上下文切换代码的时 候可以将使用不同功能单元的指令并行处理,比如对于LDW(单字节加载指令)和MVC(数据 传递指令),其所用到的功能单元分别为.D和.&,对于这两个指令就可以让他们并行。在保 存上下文的时候,由于要将A0~A15、B0~B15保存到任务堆栈中,为了减少访存的次数可以 采用LDDW(双字节加载指令)替换LDW(单字节加载指令)见图3。
[0036]步骤2:在对任务上下文切换的代码进行优化之后,需要进行实施方案的具体配 置。在进行实施方案的具体配置时,通过配置工具配置了两个任务〇sTask_0和0sTask_l,其 中0sTask_0采用自启动方式且其优先级低于0sTask_l,两个任务均可被抢占。在0sTask_0 中调用ActivateTask激活0STask_l,0sTask_]^4占运行(具有较高优先级),0STask_l中因 调用WaitEvent而阻塞,此时系统重新调度OSTaskJ)运行,此时发生的任务切换过程就是任 务上下文切换四种分类情况中最复杂的一种。
[0037]步骤3:在完成实施方案具体任务的配置之后,需要在程序添加用于测量任务切换 时间的代码。本实施方案采用"打粧"的方式来测量任务切换时间,即在代码的合适位置插 入代码以改变某个GPI0引脚的状态,并通过逻辑分析仪捕捉该GPI0引脚的状态变化从而得 到任务切换的具体时间。
[0038]本实施方案采用TMS320C6747的GPI02_11引脚作为逻辑分析仪的检测引脚,在 0STask_0中先将该引脚置高,在0STask_l被阻塞以后会调用任务切换函数 OSTaskSaveLoadRun,在该函数的开头将GPI02_11引脚拉低,此时会捕捉到一个下降沿,在 OsTaskJ)中再将该引脚置高,此时逻辑分析仪又会捕捉到一个上升沿,该上升沿与之前捕 捉到的下降沿的时间间隔即为该种情况下的任务切换时间,具体的测量结果如表1所示,表 1为测量8次的任务上下文切换优化前后时间性能对比数据(单位:us)。
[0039]表 1
[0041]从表1中可以看出在使用本发明优化方法对嵌入式实时操作系统任务上下文切换 的代码进行优化之后,其在最复杂情况下的任务切换时间比优化前减少了 3us以上。
[0042]上述的对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发 明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的 一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例, 本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护 范围之内。
【主权项】
1. 一种基于TMS320C6747的任务上下文切换优化方法,包括: (1) 对TMS320C6747中的寄存器进行筛选; (2) 利用TMS320C6747中的取指单元以取指包为单位从程序存储器中调取指令,然后将 取指包中符合并行条件的指令组合成执行包,并行执行处于同一执行包中的所有指令; (3) 采用寄存器对的方式存储40位或64位的数据;对于访存指令,利用LDDW和STDW分别 替换LDW和STW。2. 根据权利要求1所述的任务上下文切换优化方法,其特征在于:所述对TMS320C6747 中的寄存器进行筛选的策略为:对于嵌入式实时操作系统初始化完成后就一直保持不变的 寄存器,进行过滤不将这些寄存器保存任务堆栈中。3. 根据权利要求1所述的任务上下文切换优化方法,其特征在于:所述的取指包包含有 八条指令,所述的执行包所包含的指令数不超过八条。4. 根据权利要求3所述的任务上下文切换优化方法,其特征在于:所述的执行包由同一 取指包中的若干个并行指令组成,或由分属于不同取指包中的若干个并行指令组成。5. 根据权利要求1所述的任务上下文切换优化方法,其特征在于:同一执行包内的指令 必须满足以下三个条件: ① 所有指令均为并行执行的; ② 指令之间不存在使用相同功能单元的情况; ③ 指令之间不存在对同一个目的地址进行读写的情况。6. 根据权利要求1所述的任务上下文切换优化方法,其特征在于:所述的TMS320C6747 具有两组数据通路,每组数据通路包括两条32位的读取通路和两条32位的存储通路。7. 根据权利要求1所述的任务上下文切换优化方法,其特征在于:所述的TMS320C6747 具有30个控制寄存器和64个通用寄存器,其中64个通用寄存器分为两组,每32个为一组。8. 根据权利要求1所述的任务上下文切换优化方法,其特征在于:通过对寄存器进行筛 选,在进行任务上下文切换时只保存系统运行所必不可少的寄存器,能够避免程序出现堆 栈溢出导致崩溃的问题,同时减少上下文保存和恢复所需要的时间,以最少的寄存器信息 保证系统的正常运行。9. 根据权利要求1所述的任务上下文切换优化方法,其特征在于:在指令译码阶段,使 执行包中的指令分派到不同的功能单元,将可以在同一时钟周期执行的指令并行,可以在 减少程序代码的同时提高代码的执行效率,有效地减少任务上下文的切换时间。10. 根据权利要求1所述的任务上下文切换优化方法,其特征在于:利用TMS320C6747具 有同时读写64位数据的能力,对于比较耗时的访存指令,通过采用双字节指令取代单字节 指令,前者一次可以完成64位数据的读写操作,能够减少访存次数,提高代码执行效率。
【文档编号】G06F9/46GK105868003SQ201610179811
【公开日】2016年8月17日
【申请日】2016年3月25日
【发明人】李红, 杨国青, 王刘龙, 金榆林, 吴朝晖
【申请人】浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1