适应实时多任务的微控制器高效指令支持

时间:2022-05-29 15:47:46 理工毕业论文 我要投稿
  • 相关推荐

适应实时多任务的微控制器高效指令支持

摘要:开发高效的实时多任务微控制器系统,除了采用高速器件之外,适当的指令支持能简化控制结构,减少程序代码,增强实时响应能力。本文提出了一些适应实时多任务的微控制器高效指令功能设计。

微控制器系统即国内通常所称的单片机系统,主要用于物理设备的接口和直接控制。虽然控制逻辑相对微处理机系统而言比较简单,但由于多数情况下需要实时响应,而且经常要同时处理多个对象的协同工作,因此,不仅对程序的运行效率有较高的要求,还要求微控制器具备较强的多任务处理能力。另一方面,由于量大面广,以及具体应用条件的限制,希望微控制器的成本要低;而这又只有在微控制器的硬件结构相对简单的前提下才能实现,这就限制了微控制器的指令、程序代码空间以及数据存储容量。在这样的局面中,想要实现较高的运行效率,就只有加强微控制器指令的功能和灵活性。

至今,绝大多数微控制器程序的编制仍使用汇编语言,其优缺点已众所周知。随着硬件技术的发展,器件的性能价格比显著提高,各种面向嵌入式应用的微控制器系统模块向商品化发展。微控制器系统的成本中,软件比例不断增加,使用高级语言编制微控制器应用系统的软件是必然的趋势;而且微控制器中能进行算术运行和逻辑运算的运算器结构、可以直接与数据总线交换数据并进行关系运算的单元个数、间址访问的能力等因素,将直接影响高级语言生成机器代码的难易程度。为完成某一运算,不能只计算运算本身所需的时间,还要考虑建立本处理环境所需的时间、取运算对象与保存运算结果的辅助操作时间、以及所占用的指令空间。简言之,要考虑所有影响6代码效率和运行效率的因素。

转移控制指令是直接影响程序运行的,但其前提是状态检测或者关系运算的结果;而状态检测需要位寻址能力的支持,关系运算又必须访问两个对象,所以,位寻址能力、数据访问能力、数据访问方式都与程序的运行效率有关。根据作者多年编制实时应用程序的体会,针对实时多任务应用,就高效率的微控制器数据访问能力、方式与转移控制指令设计而言,应具备以下四方面性能。

1.指令的关系运算能力

关系运算是控制程序转移的前提,其运算能力由两个方面组成:一是运算功能;二是运算单元数目。

在8位机系统中,运算功能一般都支持无符号的大于、小于、等于、不等于比较;在16位机系统中,还应支持有符号的比较,并且要求有多个运算单元都支持关系运算。如果常用的一些功能单元个数较少,则当进程切换时,要花费时间置换资源。假如微控制器中只有一个寄存器能进行关系运算,必须经常进行中间结果的换位存取。这些额外操作的代价是指令数目与运行时间的增加,那将极大地影响程序运行效率。例如,要根据两个关系运算的结果决定处理策略,首先,要将第一次关系运算的逻辑结果保存起来,可能还需要保留运算后的数据结果,再装入第二次需要的运算对象。其最小代价是多中用一条指令的存储空间和一次装入所需的运算时间,而且没有任何的额外收益。此外,多任务运行时将频繁产生中断,在中断服务程序中,必须腾出运算器,又要多占用一个堆栈空间来保存断中数据,以及一次进栈、一次出栈的两条指令的存储空间和运行时间。这些都是在微控制器应用系统中的宝贵资源,因此,这样的微控制器是不适应实时多任务系统应用的。现在,许多微控制器都采用寄存器组的结构,每一个寄存器都可支持关系运算和简单的算术运算功能,便于实现高级语言中“局部变量”的特性。其主要优点是存储器的利用率高,数据完全性好。这就大大缓解了运算能力的瓶颈。

2.指令的数据访问能力

(1)运算对象的访问方式

指令对运算对象的访问方式非常重要。如果同类资源只能使用特定名称区分访问。则处理多进程时,功能相似的程序段必须书写不同的代码段。代码重用性差,这就增加了总代码长度。所以,间址访问非常重要,它可以用同样的程序处理不同的对象,在多任务处理环境中能显著提高系统效益。