CN112231084B - 一种读取通讯总线宿端口数据的调度方法 - Google Patents

一种读取通讯总线宿端口数据的调度方法 Download PDF

Info

Publication number
CN112231084B
CN112231084B CN202011126148.1A CN202011126148A CN112231084B CN 112231084 B CN112231084 B CN 112231084B CN 202011126148 A CN202011126148 A CN 202011126148A CN 112231084 B CN112231084 B CN 112231084B
Authority
CN
China
Prior art keywords
port
period
periods
scanning
data
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
Application number
CN202011126148.1A
Other languages
English (en)
Other versions
CN112231084A (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.)
Suzhou Lianshi Chuangzhi Technology Co ltd
Original Assignee
Suzhou Lianshi Chuangzhi Technology Co ltd
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 Suzhou Lianshi Chuangzhi Technology Co ltd filed Critical Suzhou Lianshi Chuangzhi Technology Co ltd
Priority to CN202011126148.1A priority Critical patent/CN112231084B/zh
Publication of CN112231084A publication Critical patent/CN112231084A/zh
Application granted granted Critical
Publication of CN112231084B publication Critical patent/CN112231084B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Small-Scale Networks (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种读取通讯总线宿端口数据的调度方法,通过查询最小端口周期并设定为扫描周期;通过查询最大端口周期,算出最大端口周期相对于扫描周期的倍数;将最大端口周期的端口个数的值作为处理时间片,按照各个端口周期分类,将端口周期按照调度算法插入槽中,最后按照扫描周期逐一处理各个槽中的端口数据。本发明可以有效避免当各个端口处理周期达到最小公倍数时,CPU集中处理不及时,数据读取及处理速度跟不上而导致的丢包现象,从而有效提高通讯总线数据传输的可靠性与稳定性。

Description

一种读取通讯总线宿端口数据的调度方法
技术领域
本发明涉及总线通讯技术领域,尤其涉及一种读取通讯总线宿端口数据的调度方法。
背景技术
目前,总线通讯技术中,通常经由板卡将处理器与总线连接在一起。而板卡与处理器的接口有很多种,大多数处理器的处理速度都慢于自身总线通讯速度。因此当宿端口周期较小,宿端口数量较大时,通常策略一般有两种:一种是整体轮询策略,将所有通讯总线宿端口定期轮询一遍,将数据获取上来。该策略存在的问题是一次轮序周期内无法获取所有数据,导致数据更新不及时;另一种是时间分类策略,首先将通讯总线宿端口按照端口周期分类,然后按照时间间隔轮询每个端口周期的数据。该策略存在的问题是当遇到各个时间分类周期的最小公倍数时间周期时,无法保证所有数据全部及时刷新,特别是应用在采用MVB总线或半双工通讯总线的分析仪、记录仪、专家系统主机、智能运维系统等设备时,需要诊断所有数据的每一个总线周期时,延迟或丢帧问题严重。
发明内容
本发明提供一种读取通讯总线宿端口数据的调度方法,以克服上述技术问题。
本发明一种读取通讯总线宿端口数据的调度方法,包括:
获取全部需要处理的端口信息,将所述端口信息按照端口周期进行分类;
设定最小值的所述端口周期作为扫描周期;计算最大值的所述端口周期相对于所述扫描周期的倍数N;
建立所述倍数N个第一时间片;依次比较全部所述端口周期与所述扫描周期的周期值;
若所述端口周期小于/等于扫描周期,将小于/等于扫描周期的所述端口周期内的所述端口信息依次分配至所述倍数N个所述第一时间片内处理;
若所述端口周期大于扫描周期,计算大于扫描周期的所述端口周期相对于扫描周期的倍数M,建立所述倍数M个第二时间片;按照M个所述第二时间片分配大于扫描周期的所述端口周期进行处理,并分配至N个所述第一时间片内处理;
按照所述扫描周期,循环读取N个所述第一时间片内的所述端口信息。
进一步地,所述的循环读取N个所述第一时间片内的所述端口信息,包括:每个第一时间片内分配的端口数量S的表达式为:
S≤1倍周期端口数+(n+1)倍周期端口数/(n+1);式中,n为1至n的常数。
进一步地,采用一级链表实现所述第一时间片的逻辑功能;采用二级链表实现所述第二时间片的逻辑功能。
进一步地,所述的建立所述倍数N个第一时间片;依次比较全部所述端口周期与所述扫描周期的周期值,包括:建立字典类型索引,按照端口周期的周期值从小到大的顺序排列所述倍数N个第一时间片;按照所述字典类型索引遍历全部所述端口周期,依次比较所述端口周期与所述扫描周期的周期值。
进一步地,所述的获取全部需要处理的端口信息,将所述端口信息按照端口周期进行分类,包括:通过初始化获取所述端口信息,所述端口信息,包括:端口地址、端口大小、端口类型、数据内容、端口周期以及上次发送时间;将所述端口信息按照所述端口周期进行分类。
本发明通过查询最小端口周期并设定为扫描周期;通过查询最大端口周期,算出最大端口周期相对于扫描周期的倍数;将最大端口周期的端口个数的值作为处理时间片,按照各个端口周期分类,将端口周期按照调度算法插入槽中,最后按照扫描周期逐一处理各个槽中的端口数据。本发明可以有效避免当各个端口处理周期达到最小公倍数时,CPU集中处理不及时,数据读取及处理速度跟不上而导致的丢包现象,从而有效提高通讯总线数据传输的可靠性与稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一种读取通讯总线宿端口数据的调度方法的方法流程图;
图2为一种读取通讯总线宿端口数据的调度方法的逻辑图;
图3为本发明所述的第一时间片中的端口分配示意图;
图4为本发明所述的一级链表与二级链表的关系图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1、图2所示,本实施例提供了一种读取通讯总线宿端口数据的调度方法,包括:
101、获取全部需要处理的端口信息;将端口信息按照周期值进行分类;
具体而言,程序初始化获取全部需要处理的端口信息,以太原某地铁线实际工程为例,系统中的宿端口为216个,源端口为1个。系统中所需的端口周期:32ms周期有10个,64ms周期宿端口有25个,128ms周期有47个,256ms周期有76个,512ms有36个,1024ms有22个。所有端口数据长度为32字节。
102、设定最小值的端口周期作为扫描周期;计算最大值的端口周期相对于扫描周期的倍数N;
具体而言,系统中所需的最小端口周期为32ms,最大端口周期为1024ms,通过计算,N=1024/32=32。
103、建立倍数N个第一时间片;依次比较全部端口周期与扫描周期的周期值;
具体而言,时间片,即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在本实施例中,采用phtyon语言编写调度算法的程序,也可以通过C、C++、JAVA等其他编程语言实现。同时,采用一级链表实现所述第一时间片的逻辑功能,采用二级链表实现所述第二时间片的逻辑功能。系统动态生成倍数N个一级链表,链表长度为N=32,并将一级链表按照端口周期从小到大的顺序建立字典类型索引,字典类型索引的key为端口周期,value为同端口周期的端口信息列表。字典结构是按照端口周期分类的结果,字典的索引是端口周期,便于算法处理,提高CPU运算效率。
104、若端口周期小于/等于扫描周期,将小于/等于扫描周期的端口周期内的端口信息依次分配至倍数N个第一时间片内处理;
105、若端口周期大于扫描周期,计算大于扫描周期的端口周期相对于扫描周期的倍数M,建立倍数M个第二时间片;按照M个第二时间片分配大于扫描周期的端口周期进行处理,并分配至N个第一时间片内处理;
具体而言,根据遍历结果比较端口周期与扫描周期的大小,当端口周期小于等于扫描周期时,将这个端口周期的所有端口信息插入N个链表中的每一个元素。本实施例中,由于端口周期是32ms,因此10个32ms端口周期的宿端口和1个源端口(端口周期内部直接设定为0,最高速度)被筛选出来。筛选出来的端口信息依次插入32个一级链表的每一个元素中。端口周期内容包括:端口地址(port_address)、端口大小(port_size)、端口类型(port_type)、数据内容(message)、端口周期(period)和上次发送时间(time_pass)。
当端口周期大于扫描周期时,算出该端口周期于扫描周期的倍数,并建立该倍数的二级链表M,再将这个端口周期集中的所有端口交替均匀分配并插入到M个二级链表中。本实施例中,如图4所示,端口周期为128ms的宿端口,建立二级量表M的长度为128/32,即M=4;以128ms周期端口为例,M[0]中包含的128ms宿端口序号为单数,M[1]中包含的128ms宿端口序号为双数。循环N个一级链表,将M个二级链表中的端口元素交替均匀分配在N个1级链表中。M分配结束后,再从头开始重新分配。本实施例中,以128ms周期端口为例,N=32时,当N%4==0的时候,放入M[0]的元素内容,当N%4==1的时候,放入M[1]的元素内容。
如图3所示,每行均为32个一级链表,每列是以扫描周期32ms为公倍数的端口周期,每个一级链表的处理周期均为32ms,也就是每个一级链表的处理周期内都需要处理所有最快周期的端口;大于扫描周期的端口根据相对于扫描周期的倍数M分成M份,本端口周期处理一部分端口信息,剩下端口信息分配至接下来的处理周期内完成。如图3所示,处理周期是32ms,64ms的端口就分成2份处理,第一个一级链表内处理32ms端口周期和64ms端口周期内1-5端口的端口信息;第二个一级链表内处理32ms端口周期和64ms端口周期内6-10端口的端口信息;二级链表的功能是区分端口周期内需要处理端口。使得64ms的端口周期可以保证在64ms内完成数据刷新,32ms的周期端口也是32ms就完成了刷新,从而不会出现延时和丢帧。同理,128ms的端口周期分成4份,每32ms处理1份,累计处理4次完成;256ms的端口周期分成8份,每32ms处理1份,累计处理8次完成。依次类推。
106、按照所述扫描周期,循环读取N个所述第一时间片内的所述端口信息。
具体而言,按照扫描周期,一次循环读取N个一级链表中的每一个元素中的端口集,N个一级链表中的每个链表元素中的端口集包含端口数相对固定,总数S≤1倍周期端口数+2倍周期端口数/2+3倍周期端口数/3……n倍周期端口数/n。每个扫描周期需要处理的数量远小于各个端口之和,避免当最小公倍数周期到达时的读取丢帧现象。
本实施例中,N=32时,每个元素含有的端口数量≤10+13+12+10+3+1=49。按照SPI通讯方式,每个端口平均通讯周期500us计算,49个端口数据刷新周期为24.5ms<32ms,因此可以保证精确的不丢包数据刷新。而传统方法无论如何都会经历所有端口最小公倍数的危险时刻,该时刻到达是,全部端口刷新时间需要216*0.5=108ms,会丢失绝大部分32ms和64ms周期的数据帧,导致丢包。
本发明主要应用在MVB总线,或RS485,RS422等半双工通讯总线的宿端口数据调度。
下面通过仿真试验对采用整体轮询策略、时间分类策略以及本申请的策略所得到的数据进行对比。
SPI接口的板卡与CPU通讯速率大概是:每读取一帧需要500-800us;
端口周期的分布大体为32ms-1024ms之间的正太分布,如表1所示:
表1
端口周期 端口数量
32ms 10个
64ms 10个
128ms 20个
256ms 30个
512ms 20个
1024ms 10个
当端口数量<40的时候。整体轮询策略、时间分类策略和本申请的策略的效果是一样的。
当端口数量≥100的时候(实际项目中,作为记录仪来说,读取端口一般都会超过100个)
整体轮询策略的丢帧率为100%。因为每次轮询周期都会>32ms,从而导致32ms最快的端口周期数据丢帧;
时间分类策略的丢帧率约为60%(约有60%的轮询周期,需要同时轮询端口数量>40个);
本申请的策略的丢帧率为0%(每次轮序端口个数<40个,保证完全不丢帧)。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (5)

1.一种读取通讯总线宿端口数据的调度方法,其特征在于,包括:
获取全部需要处理的端口信息,将所述端口信息按照端口周期进行分类;
设定最小值的所述端口周期作为扫描周期;计算最大值的所述端口周期相对于所述扫描周期的倍数N;
建立所述倍数N个第一时间片;依次比较全部所述端口周期与所述扫描周期的周期值;
若所述端口周期小于/等于扫描周期,将小于/等于扫描周期的所述端口周期内的所述端口信息依次分配至所述倍数N个所述第一时间片内处理;
若所述端口周期大于扫描周期,计算大于扫描周期的所述端口周期相对于扫描周期的倍数M,建立所述倍数M个第二时间片;按照M个所述第二时间片分配大于扫描周期的所述端口周期进行处理,并分配至N个所述第一时间片内处理;
按照所述扫描周期,循环读取N个所述第一时间片内的所述端口信息。
2.根据权利要求1所述的一种读取通讯总线宿端口数据的调度方法,其特征在于,所述的循环读取N个所述第一时间片内的所述端口信息,包括:
每个第一时间片内分配的端口数量S的表达式为:
S≤1倍周期端口数+(n+1)倍周期端口数/(n+1);式中,n为1至N的常数。
3.根据权利要求1所述的一种读取通讯总线宿端口数据的调度方法,其特征在于,采用一级链表实现所述第一时间片的逻辑功能;采用二级链表实现所述第二时间片的逻辑功能。
4.根据权利要求1所述的一种读取通讯总线宿端口数据的调度方法,其特征在于,所述的建立所述倍数N个第一时间片;依次比较全部所述端口周期与所述扫描周期的周期值,包括:
建立字典类型索引,按照端口周期的周期值从小到大的顺序排列所述倍数N个第一时间片;按照所述字典类型索引遍历全部所述端口周期,依次比较所述端口周期与所述扫描周期的周期值。
5.根据权利要求1所述的一种读取通讯总线宿端口数据的调度方法,其特征在于,所述的获取全部需要处理的端口信息,将所述端口信息按照端口周期进行分类,包括:
通过初始化获取所述端口信息,所述端口信息,包括:端口地址、端口大小、端口类型、数据内容、端口周期以及上次发送时间;将所述端口信息按照所述端口周期进行分类。
CN202011126148.1A 2020-10-20 2020-10-20 一种读取通讯总线宿端口数据的调度方法 Active CN112231084B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011126148.1A CN112231084B (zh) 2020-10-20 2020-10-20 一种读取通讯总线宿端口数据的调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011126148.1A CN112231084B (zh) 2020-10-20 2020-10-20 一种读取通讯总线宿端口数据的调度方法

Publications (2)

Publication Number Publication Date
CN112231084A CN112231084A (zh) 2021-01-15
CN112231084B true CN112231084B (zh) 2024-04-09

Family

ID=74118257

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011126148.1A Active CN112231084B (zh) 2020-10-20 2020-10-20 一种读取通讯总线宿端口数据的调度方法

Country Status (1)

Country Link
CN (1) CN112231084B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1568463A (zh) * 2001-10-15 2005-01-19 英特尔公司 用于时分多路复用总线的总线成帧器
JP2006244057A (ja) * 2005-03-02 2006-09-14 Canon Inc Usb機器及びその制御方法、並びにプログラム
CN107665147A (zh) * 2017-09-26 2018-02-06 厦门美图移动科技有限公司 一种移动设备的系统清理方法及移动设备
CN107770024A (zh) * 2017-09-12 2018-03-06 中车青岛四方机车车辆股份有限公司 总线周期扫描表的生成方法和装置
CN111427690A (zh) * 2020-03-25 2020-07-17 杭州意能电力技术有限公司 分散处理单元并行计算方法
CN111782400A (zh) * 2020-07-09 2020-10-16 中车株洲电力机车有限公司 轨道交通车辆显示系统及其cpu负荷均衡优化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070174515A1 (en) * 2006-01-09 2007-07-26 Microsoft Corporation Interfacing I/O Devices with a Mobile Server

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1568463A (zh) * 2001-10-15 2005-01-19 英特尔公司 用于时分多路复用总线的总线成帧器
JP2006244057A (ja) * 2005-03-02 2006-09-14 Canon Inc Usb機器及びその制御方法、並びにプログラム
CN107770024A (zh) * 2017-09-12 2018-03-06 中车青岛四方机车车辆股份有限公司 总线周期扫描表的生成方法和装置
CN107665147A (zh) * 2017-09-26 2018-02-06 厦门美图移动科技有限公司 一种移动设备的系统清理方法及移动设备
CN111427690A (zh) * 2020-03-25 2020-07-17 杭州意能电力技术有限公司 分散处理单元并行计算方法
CN111782400A (zh) * 2020-07-09 2020-10-16 中车株洲电力机车有限公司 轨道交通车辆显示系统及其cpu负荷均衡优化方法

Also Published As

Publication number Publication date
CN112231084A (zh) 2021-01-15

Similar Documents

Publication Publication Date Title
CN106598760B (zh) 消息队列的消费方法及装置
JP3922070B2 (ja) 分散制御方法及び装置
US4313196A (en) Priority system with low speed request bus
US8725873B1 (en) Multi-server round robin arbiter
CN105320561A (zh) 任务管理方法和系统
DE112018005427T5 (de) Autonome adress-/befehls-chip-synchronisierte datenchip-adress-ablaufsteuerung für ein verteiltes pufferspeichersystem
CN112073280A (zh) 基于Modbus协议的通信方法、装置及通信设备
CN111966289A (zh) 基于Kafka集群的分区优化方法和系统
CN105160570A (zh) 一种可水平扩展的并发在线交易处理方法
CN105320570A (zh) 资源管理方法和系统
CN112860387A (zh) 分布式任务调度方法、装置、计算机设备及存储介质
CN101470636B (zh) 一种消息的读写方法和装置
CN112040001A (zh) 一种基于分布式存储的请求处理方法及装置
CN112231084B (zh) 一种读取通讯总线宿端口数据的调度方法
CN104866528A (zh) 多平台数据采集方法及系统
CN109344037B (zh) 一种基于实时统计与告警公式的业务监控方法
Sztrik Finite-source queueing systems and their applications
CN108664340A (zh) 一种多线程日志发送管理的方法
CN112765087A (zh) 用于在多个处理器之间使通信同步的系统和方法
CN114417216B (zh) 数据采集方法、装置、电子设备及可读存储介质
CN110737530A (zh) 一种提升handle标识解析系统收包能力的方法
CN114697270B (zh) 一种基于epa网络模型的仲裁方法、系统、设备及介质
CN104951373A (zh) 调度系统的消息队列处理方法
CN113067880B (zh) 分布式控制系统链式分时通信方法和存储介质
CN112416566B (zh) 一种ima通用处理模块资源调度的分析方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant