CN100592260C - 一种提高计算机内核定时器控制精度的方法 - Google Patents

一种提高计算机内核定时器控制精度的方法 Download PDF

Info

Publication number
CN100592260C
CN100592260C CN200810066416A CN200810066416A CN100592260C CN 100592260 C CN100592260 C CN 100592260C CN 200810066416 A CN200810066416 A CN 200810066416A CN 200810066416 A CN200810066416 A CN 200810066416A CN 100592260 C CN100592260 C CN 100592260C
Authority
CN
China
Prior art keywords
timing
hardware
inner core
beat
code
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.)
Expired - Fee Related
Application number
CN200810066416A
Other languages
English (en)
Other versions
CN101299193A (zh
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN200810066416A priority Critical patent/CN100592260C/zh
Publication of CN101299193A publication Critical patent/CN101299193A/zh
Application granted granted Critical
Publication of CN100592260C publication Critical patent/CN100592260C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明是一种提高计算机内核定时器控制精度的方法。该方法是在预置的系统定时硬件时钟和定时粒度的基础上,在配套内核定时器执行程序的支持下实现的,包括以下步骤:①根据具体目标平台和应用环境决定定时粒度,②解除系统定时硬件时钟中断与操作系统节拍中断服务程序之间的绑定关系,③根据步骤1所确定的定时精度值,在系统初始化时刻对定时硬件进行设置,④在定时硬件时钟中断入口处插入新代码:维护自有的定时信息的代码,判定是否有定时器超时并执行超时函数的代码,按系统原节拍率维持操作系统节拍中断的代码。⑤重新编译并加载内核,使以上步骤②、③、④所做的修改生效,重复执行④、⑤步骤。

Description

一种提高计算机内核定时器控制精度的方法
技术领域
本发明涉及一种提高计算机内核定时器控制精度的方法,特别是一种基于原计算机系统对高精度定时事件进行处理的方法。
背景技术
操作系统是管理计算机或嵌入式平台的硬件与软件资源的程序,同时也是应用程序运行的基础。操作系统是一个大型管理控制程序,其作用是使系统中所有资源按照确立好的时序最大限度的地发挥作用,为用户提供方便有效的服务界面。其中内核定时器是通用操作系统内核管理时间的基础,其作用是使内核任务在指定的时间点上执行。使用定时器需要设置定时处理函数并预先设置一个超时时间,定时器被激活后,所指定的定时处理函数将在到期时自动执行。标准内核定时器容易受到内核节拍计时器、硬件中断、其他定时器和异步任务的影响。特别是由于标准内核定时器优先级低于硬中断,因此只有当所有被挂起的硬中断服务程序执行完毕后,内核定时器才能得到执行,在最坏的情况下,定时服务完全有可能会被推迟1个乃至数个系统节拍。鉴于以上无法克服的缺陷,目前常用的计算机通用操作系统中内核不能满足严格的定时应用,更不能应用于需要较高精度定时的场合。特别是具体的应用过程中,标准内核的系统节拍响应工作非常繁重。这些工作通常包括:更新系统产生的节拍总数、更新系统运行时间与实际时间、执行任务调度、均衡各运行队列、更新资源消耗和处理器时间的统计值、执行超时的动态定时器以及计算平均负载值等等。用简单提高内核的节拍率会导致系统频繁执行上述多项响应工作,从而使系统负载迅速增加,进而会显著降低系统性能。因此目前主流操作系统,如UNIX/Linux、WinCE,的内核时钟节拍率也仅仅仅设定在50Hz到1000Hz。然而局限在此范围的节拍率并不能保证内核定时器的精度定时任务的完成。此外,定时稳定性受硬件IO负荷影响十分明显。由于普通内核定时器所使用的软中断在中断体系中所处的级别较低,必须等待所有挂起的高级别硬中断执行完毕后才能得到执行,而系统在进行硬件数据读写时往往会产生大量硬件中断,因此在硬件IO负荷很大的系统中,标准内核定时器的稳定性难以得到保证的,对于高精度的定时任务执行则显然是无从说起。
对于内核定时器目前所存在的问题的改进方案中,有些方案虽然不是专门针对定时器的改进方案,但也能够不同程度提高定时的精度。其中包括:①附加微型内核:为了提供硬实时的支持,附加一个实时微内核,而将普通操作系统作为一个该微内核的一个低优先级的任务来运行。普通系统中的任务可以通过FIFO和实时任务进行通信。该方案的典型实例为RT-Linux。该方案的缺点在于需要增加一个微型内核,并且需要保持微型内核和普通内核之间的通信,其跨平台实施复杂度高,较难实现。而且该方案只是在微型内核中实现了实时特性,并没有提高普通操作系统的定时器性能。2.将时钟芯片设置为单次触发状态(One shot mode)其基本思想是:将时钟芯片设置为单次触发状态,即每次给时钟芯片设置一个超时时间,然后到该超时事件发生时在时钟中断处理程序中再次根据需要设置一个超时时间。它利用CPU的时钟计数器来提供理论上可达CPU主频的定时精度。该方案的典型实例有Kurt-Linux和Monta Vista Linux。该方案的缺点在于需要频繁地计算并设置时钟芯片的超时时间和修正累积误差,并且其算法本身运行所占用的时间会对定时效果产生负面影响,事实上很难达到其标称的定时精度。3.使用额外硬件定时器其:运用系统额外硬件定时器完成高精度定时。显然该方案的局限性在于要求目标平台拥有至少一个空闲的硬件定时器,且该方案实际上也属于一种单次触发时钟方案,同样有上述方案2所存在的缺点。4.采用计数器:采用系统节拍为计数单位,通过附加程序计数并触发定时器。该方案主要目的是以计数代替计时来降低周期性定时的开销,并没有改进定时器精度。
发明内容
本发明的目的是在不增加任何硬件设施的前提下,提供一种在计算机操作系统的基础节拍基础上下,实现对高精度定时任务管理的方法。
本发明的基本构思是该方法是在预置的系统定时硬件时钟和定时粒度的基础上,在配套内核定时器执行程序的支持下实现的,包括以下步骤:
①根据具体目标平台和应用环境决定定时粒度,
②解除系统定时硬件时钟中断与操作系统节拍中断服务程序之间的绑定关系,
③根据步骤①所确定的定时精度值,在系统初始化时刻对定时硬件进行设置,从而提升系统定时硬件时钟的节拍率,
④在定时硬件时钟中断入口处插入新代码,其中包括:维护本方案定时体系自有的定时信息的代码,根据所维护的定时信息判定是否有定时器超时并执行超时函数的代码,按系统原节拍率维持操作系统节拍中断的代码,
所述的步骤④在定时硬件时钟中断入口处插入新代码所决定的执行步骤为:
(1)进入系统硬件定时中断程序并按照已经提高的硬件定时频率继续进行定时器计时,
(2)比对所维护的定时信息中是否有定时任务到期,
(3)没有定时任务到期直接核查、或有定时任务到期并发出对应的“某任务定时到”信息代码后,核查原系统中断节拍是否到时,
(4)原系统中断节拍没有到时直接转至步骤(1)、硬件定时中断快速返回,如原系统中断节拍到时转至下一个操作系统时钟中断程序节拍,执行原系统中断程序快速返回,
⑤重新编译并加载内核,使以上步骤②、③、④所做的修改生效,重复执行④、⑤步骤。
由于本方法的技术方案解除了系统定时硬件时钟与操作系统时钟中断服务程序的绑定关系,进一步细化了硬件时钟的定时粒度,并且在定时硬件中断服务程序实现了新的定时体系。这个新的定时体系直接使用系统定时硬件产生的周期性中断作为计时源,其主要作用包括:维护自有的定时信息、执行超时任务和维持操作系统节拍。关于定时粒度的最优值,应该根据具体目标平台和应用环境制定出一个大概的范围,然后通过具体试验对定时粒度进行微调来确定。具体的步骤可以重复执行以上步骤。这样,可以有效的提高定时的精度又明显的优于现行的改进技术方案。由于内核定时体系直接使用系统定时硬件所产生的周期性中断计时,而不是根据操作系统节拍计时,操作系统节拍由内核定时体系产生,而不是直接由系统定时硬件产生。这样以来系统定时硬件产生的是周期性触发中断,而不是单次触发中断。用户仅需对定时硬件进行一次设置就可以实现定时精度和操作系统节拍率彼此独立,并维持原操作系统节拍率不变。从而,既提高了定时精度、又没有过多的增加系统的负担、又能保证系统时序的稳定性。
附图说明
图1是系统定时硬件中断入口处新增代码的流程图。
其中虚线是标准内核中断服务程序的执行路径。
具体实施方式
参照附图1可以清楚的看出以上在发明内容一节中陈述实现本发明目的的具体步骤④中,在定时硬件时钟中断入口处插入新代码所决定的执行步骤为:
(1)进入系统硬件定时中断程序并按照已经提高的硬件定时频率继续进行定时器计时,
(2)比对所维护的定时信息中是否有定时任务到期,
(3)没有定时任务到期直接核查、或有定时任务到期并发出对应的“某任务定时到”信息代码后核查原系统中断节拍是否到时,
(4)原系统中断节拍没有到时直接转至步骤(1)、硬件定时中断快速返回,如原系统中断节拍到时转至下一个操作系统时钟中断程序节拍,执行原系统中断程序快速返回。
可见,实施以上的技术方案后在原操作系统的一个固有节拍中,可以不受任何干扰的实现内核定时器的独立计时和按照所精确设定的频率准确的把握定时精度、启动超时函数的运算、进行定时任务的管理。只要预先设置准确的定时粒度,就可以实现本发明目的。
为了实现定时粒度的最优话,显然是应该根据具体目标平台和应用环境制定出一个大概的范围,然后通过具体试验对定时粒度进行再进行微调来最后确定。
以上的技术改进反映在本发明具体的步骤中是:提高计算机内核定时器控制精度的方法的步骤还包括:
⑥通过具体试验对定时粒度进行进一步微调,调整后重新执行步骤②、步骤③和步骤⑤。
下面进一步给出以上具体步骤①中根据具体目标平台和应用环境决定定时粒度的具体步骤为:
A设置一个硬件时钟中断频率提高倍数大于1的代码ET
B将原操作系统节拍率赋值给代码jif,系统外围频率为赋值给代码pclk,定时硬件时钟倍频赋值给代码mult,系统定时硬件分频赋值给代码divi,那么计算系统定时硬件周期寄存器值PERIOD的按照以下的计算方法获得:
PERIOD=(pclk*mult)/(jif*divi*ET)
C借助以上计算结果决定内核定时器的定时粒度。
步骤A中的硬件时钟中断频率提高倍数是10-100。
与已有方案相比的明显的技术效果在于:
使用简单易行的方法,在不造成系统过载的情况下实现了具备较高精
度和较好稳定性的内核定时器。本方法以较小的开销,实测单次定时开销约为内核节拍开销的1/8,实现了精度较现有系统定时器精度提高10倍以上的内核定时器。在一般平台上可达到小于100us的定时精度。定时器具有较好的稳定性,基本不受硬件IO负荷影响,无累积误差。对内核修改小。只需修改硬件时钟节拍并插入一段处理程序,不需要附加微型内核和额外的硬件定时器,也不需要频繁重设硬件定时器计数值。维持了标准系统节拍和特性,保持了与原系统之间的一致性,便于应用。
本方案所能达到的极限定时精度不能小于定时处理函数的执行时间和具体环境下的最长全局中断关闭时间,否则会丢失硬件定时节拍,从而影响定时精度。由于在本方案中定时器在高级别硬件中断中运行,这意味着定时处理函数会在执行期间独占系统,因此要求定时处理程序应尽可能的简洁快速,以免过度消耗系统资源。

Claims (4)

1、一种提高计算机内核定时器控制精度的方法,该方法是在预置的系统定时硬件时钟和定时粒度的基础上,在配套执行程序的支持下实现的,其特征在于:该方法包括以下步骤:
①根据具体目标平台和应用环境决定定时粒度,
②解除系统定时硬件时钟中断与操作系统节拍中断服务程序之间的绑定关系,
③根据步骤①所确定的定时精度值,在系统初始化时刻对定时硬件进行设置,从而提升系统定时硬件时钟的节拍率,
④在定时硬件时钟中断入口处插入新代码,其中包括:维护本方案定时体系自有的定时信息的代码,根据所维护的定时信息判定是否有定时器超时并执行超时函数的代码,按系统原节拍率维持操作系统节拍中断的代码,
所述的步骤④在定时硬件时钟中断入口处插入新代码所决定的执行步骤为:
(1)进入系统硬件定时中断程序并按照已经提高的硬件定时频率继续进行定时器计时,
(2)比对所维护的定时信息中是否有定时任务到期,
(3)没有定时任务到期直接核查、或有定时任务到期并发出对应的“某任务定时到”信息代码后,核查原系统中断节拍是否到时,
(4)原系统中断节拍没有到时直接转至步骤(1)、硬件定时中断快速返回,如原系统中断节拍到时转至下一个操作系统时钟中断程序节拍,执行原系统中断程序快速返回,
⑤重新编译并加载内核,使以上步骤②、③、④所做的修改生效,重复执行④、⑤步骤。
2、根据权利要求1所述的提高计算机内核定时器控制精度的方法,其特征在于提高计算机内核定时器控制精度的方法的步骤还包括:
⑥通过具体试验对定时粒度进行进一步微调,调整后重新执行步骤②、步骤③和步骤⑤。
3、根据权利要求1所述的提高计算机内核定时器控制精度的方法,其特征在于步骤①中根据具体目标平台和应用环境决定定时粒度的具体步骤为:
A设置一个硬件时钟中断频率提高倍数大于1的代码ET
B将原操作系统节拍率赋值给代码jif,系统外围频率为赋值给代码pclk,定时硬件时钟倍频赋值给代码mult,系统定时硬件分频赋值给代码divi,那么计算系统定时硬件周期寄存器值PERIOD的按照以下的计算方法获得:
PERIOD=(pclk*mult)/(jif*divi*ET)
C借助以上计算结果决定内核定时器的定时粒度。
4、根据权利要求3所述的提高计算机内核定时器控制精度的方法,其特征在于步骤A中的硬件时钟中断频率提高倍数是10-100。
CN200810066416A 2008-04-07 2008-04-07 一种提高计算机内核定时器控制精度的方法 Expired - Fee Related CN100592260C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810066416A CN100592260C (zh) 2008-04-07 2008-04-07 一种提高计算机内核定时器控制精度的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810066416A CN100592260C (zh) 2008-04-07 2008-04-07 一种提高计算机内核定时器控制精度的方法

Publications (2)

Publication Number Publication Date
CN101299193A CN101299193A (zh) 2008-11-05
CN100592260C true CN100592260C (zh) 2010-02-24

Family

ID=40079025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810066416A Expired - Fee Related CN100592260C (zh) 2008-04-07 2008-04-07 一种提高计算机内核定时器控制精度的方法

Country Status (1)

Country Link
CN (1) CN100592260C (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102637126B (zh) * 2011-02-15 2015-05-13 无锡物联网产业研究院 嵌入式系统的定时方法、装置和系统
CN102968376B (zh) * 2012-12-10 2015-01-21 北京神舟航天软件技术有限公司 基于执行路径全过程的系统窗口期滑动测试方法
US10534421B2 (en) * 2013-06-13 2020-01-14 Microsoft Technology Licensing, Llc Virtual per-processor timers for multiprocessor systems
CN103995766A (zh) * 2014-06-06 2014-08-20 山东超越数控电子有限公司 一种检测控制处理器温度的方法
CN105550023B (zh) * 2015-12-03 2019-05-07 青岛海信移动通信技术股份有限公司 一种定时器事件的处理方法及装置
CN110333843B (zh) * 2019-04-19 2023-03-24 中科创达(重庆)汽车科技有限公司 虚拟机高精度定时器的实现方法、装置及电子设备
CN111562809B (zh) * 2020-04-15 2023-03-31 漳州市德恒电子有限公司 一种应用于四级驱动的机芯稳定性控制方法
CN111580378B (zh) * 2020-04-27 2021-11-23 广东尚研电子科技有限公司 一种离线高精度时钟控制方法及时钟装置
CN112559136A (zh) * 2020-12-24 2021-03-26 科东(广州)软件科技有限公司 一种计算机中断投递的方法及装置
CN113835851A (zh) * 2021-08-19 2021-12-24 威胜信息技术股份有限公司 一种实时操作系统定时器实现方法
CN116149250B (zh) * 2022-12-20 2024-06-21 西北核技术研究所 一种基于硬定时器的多plc控制器高时间精度指令同步方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种时钟改进算法的分析与实现. 刘智臣等.计算机工程,第32卷第14期. 2006
一种时钟改进算法的分析与实现. 刘智臣等.计算机工程,第32卷第14期. 2006 *

Also Published As

Publication number Publication date
CN101299193A (zh) 2008-11-05

Similar Documents

Publication Publication Date Title
CN100592260C (zh) 一种提高计算机内核定时器控制精度的方法
KR101496077B1 (ko) 낮은 오버헤드를 갖는 전력 프로파일 정보의 획득
WO2021233261A1 (zh) 一种多任务动态资源调度方法
Maeng et al. Adaptive low-overhead scheduling for periodic and reactive intermittent execution
US9727372B2 (en) Scheduling computer jobs for execution
US7904894B2 (en) Automatically optimize performance of package execution
KR20190015370A (ko) 적응식 리소스 할당 방법 및 장치
US7694164B2 (en) Operating system-independent method and system of determining CPU utilization
JP2009025939A (ja) タスク制御方法及び半導体集積回路
CN104834347A (zh) 有利于低功耗的无累计误差的动态时长定时器实现方法
KR20070079863A (ko) 워크로드 추정치를 사용하는 cpu의 동적 전압 스케일링방법 및 그 방법을 실행시키기 위한 프로그램을 기록한기록매체
CN100501694C (zh) 处理器利用率的测量装置及方法
CN106802689B (zh) Windows操作系统环境下可调速高精度定时器的实现方法
CN103197971A (zh) Windows操作系统Pentium Ⅳ架构下高精度低CPU占用率定时器的实现方法
US10846086B2 (en) Method for managing computation tasks on a functionally asymmetric multi-core processor
US20160179716A1 (en) Timer management apparatus
KR20120003088A (ko) 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
US10884785B2 (en) Precise accounting of processor time for multi-threaded time-critical applications
KR20090070071A (ko) 소형 저전력 임베디드 시스템 및 그의 선점 회피 방법
CN103455402A (zh) 一种无累计误差的定时器控制方法
US9348359B2 (en) Updating a desired tick rate for a kernel
US8572619B2 (en) System and method for integrating software schedulers and hardware interrupts for a deterministic system
CN117289754B (zh) 一种时间同步的芯片架构及其软件控制方法
Hamilton et al. Introducing automatic time stamping (ats) with a reference implementation in swift
Cho et al. Utility accrual real-time scheduling for multiprocessor embedded systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100224

Termination date: 20160407

CF01 Termination of patent right due to non-payment of annual fee