[发明专利]一种SPARC平台减少中断响应抖动的方法有效
申请号: | 201410060974.9 | 申请日: | 2014-02-21 |
公开(公告)号: | CN103984537B | 公开(公告)日: | 2017-04-19 |
发明(设计)人: | 卓保特;周启平;吕紫旭;赵英辉 | 申请(专利权)人: | 北京神舟航天软件技术有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京世誉鑫诚专利代理事务所(普通合伙)11368 | 代理人: | 孙国栋 |
地址: | 100094*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种SPARC平台减少中断响应抖动的技术,步骤如下1)、建立SPARC平台原子交换函数;2)、实现内核路径上写全局变量访问操作的中断响应抖动减少技术;3)、全局队列访问操作的中断响应抖动减少技术;4)、全局堆栈访问操作的中断响应抖动减少技术。本发明可以保证对全局变量以及全局队列、全局堆栈等数据结构的读写访问的一致性,而且所有临界区都由7条SPARC平台的汇编指令组成,关中断的时间短且固定,能减少中断响应的抖动,并提高平均中断响应时间,减少外部中断的丢失。 | ||
搜索关键词: | 一种 sparc 平台 减少 中断 响应 抖动 技术 | ||
【主权项】:
一种SPARC平台减少中断响应抖动的方法,其特征在于:步骤如下:1)、建立SPARC平台原子交换函数;2)、减少内核路径上写全局变量访问操作的中断响应抖动;3)、减少全局队列访问操作的中断响应抖动;4)、减少全局堆栈访问操作的中断响应抖动,其中:步骤1)中的建立SPARC平台原子交换函数的算法如下:使用SPARC汇编指令实现了原子交换函数,该函数共由7条指令组成,其原型如下:int atomic_swap(int oldval,int*p_var,int newval)返回值为int型,变量oldval存储某一全局变量修改前的值,指针p_var指向该全局变量,而变量newval存储将要赋给该全局变量的值,返回0值表示用新值对全局变量原先的值进行了替换,返回非0值,表示未用新值对全局变量原先的值进行替换;所述原子交换函数的算法如下:11)、快速关中断;12)、将oldval和p_var指向的地址处的值相减,将结果填入存放返回值的寄存器,如果为0,则继续执行步骤13),如果不为0,则跳转到步骤14);13)、将newval的值赋给p_var指向的地址;14)、打开中断,函数返回;减少内核路径上写全局变量访问操作的中断响应抖动的函数原型如下:void write_global(int*pglb,int new)其中变量pglb指向要进行写操作的全局变量的地址,变量new指向将要写入全局变量的值;减少内核路径上写全局变量访问操作的中断响应抖动的算法如下:21)、取出指针pglb指向的全局变量的值,赋给临时变量temp;22)、调用原子交换函数,格式为atomic_swap(temp,pglb,new);23)、如果原子交换函数返回值不为0,则调转到步骤21);如果返回值为0,则函数退出;减少全局队列访问操作的中断响应抖动首先是插入节点操作,其函数原型如下:void insert_queue(Node*pnew_node,const int&data,Queue*pqueue)队列是先进先出的数据结构,插入操作总是在队列尾进行,所以第一个参数给出了将要插入节点的指针,第二个参数给出了新节点中存储的数据,第三个参数是队列指针;减少全局队列访问操作的中断响应抖动的算法如下:31)、将新节点数据域赋值为data,指针域赋值为null;32)、将当前队尾节点赋值给临时变量old_tail,并将old_tail指针域指向新创建的节点;33)、调用原子交换函数,格式为atomic_swap(old_tail,&(pqueue‑>tail),pnew_node);34)、如果原子交换函数返回值不为0,则跳转到步骤32);如果返回值为0,则函数退出;队列的删除操作在队列头进行,其函数原型如下:Node*delete_queue(Queue*pqueue)其中变量pqueue为指向队列的指针;其队列的删除操作算法如下:S1、取出当前队列的头指针,赋值给临时变量old_head;S2、将old_head的指针域赋给临时变量pnext;S3、调用原子交换函数,格式为atomic_swap(old_head,&(pqueue‑>head),pnext);S4、如果原子交换函数返回值不为0,则跳转到步骤S1;如果返回值为0,则返回old_head,函数退出;减少全局堆栈访问操作的中断响应抖动,其原型为:void push(Node*pnode,const int&data,stack*pstack)第一个参数是指向将要插入的节点的指针,第二个参数data为待压入节点数据域存储的数据,第三个参数为指向栈的指针;减少全局堆栈访问操作的中断响应抖动的算法如下:41)、将pnode数据域赋值为data;42)、用临时变量old_top记录当前栈顶节点的指针;43)、pnode的指针域指向old_top;44)、调用原子交换函数,其格式为atomic_swap(old_top,&(pstack‑>top),pnode);45)、如果原子交换函数返回值不为0,则跳转到步骤41);如果返回值为0,则函数退出;出栈操作的原型如下:Node*pop(stack*pstack)唯一的一个参数为指向栈的指针,出栈操作的算法如下:第一步骤、用临时变量old_top记录当前栈顶指针;第二步骤、将old_top的指针域赋值给临时变量pnode;第三步骤、调用原子交换函数,其格式为atomic_swap(old_top,pstack‑>top,pnode);第四步骤、如果原子交换函数返回值不为0,则跳转到第一步骤;如果返回值为0,则返回old_top,函数退出。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京神舟航天软件技术有限公司,未经北京神舟航天软件技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410060974.9/,转载请声明来源钻瓜专利网。
- 上一篇:细部喷涂喷枪
- 下一篇:气流粉碎机用喷管结构