一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于时钟中断同步的非对称多核流水并行处理方法与流程

2022-12-03 02:01:09 来源:中国专利 TAG:


1.本发明涉及嵌入式多核计算机系统技术领域,具体涉及基于时钟中断同步的非对称多核流水并行处理方法。


背景技术:

2.多核处理器一般工作在smp或amp模式下。smp模式是在处理器中由一个操作系统或一个应用程序统一管理所有处理器核,具有统一的内存空间。amp模式则是处理器中的每个处理器核都拥有各自独立的内存空间,各自独立运行一个操作系统或应用程序,处理器核之间仅有少量信息交互。
3.在smp模式下,多核处理器通过对多线程的调度来完成多个子任务在处理器核上运行的分配工作。操作系统或程序中的任务调度模块负责组织和管理子任务(即线程)队列,并时刻监测处理器中各核的运行状态。如果一个处理器核满足了分配子任务的条件,如处理器核处于空闲状态,任务调度模块就会将排在队列中最前面的一个线程(子任务)分配给该核,且一般在该子任务执行完之前,不会再次给该核分配新的子任务。为尽可能地利用多核资源并行,在划分子任务时一般将子任务设计为数据关联较少,相互之间具有一定独立性。
4.amp模式中,任务以在各处理器核上运行的程序来实现的(无论是否有操作系统)。处理器各核上运行的应用程序可能是相同的,也可能是不同的,即各核的功能行为可能是相同的,也可能是不同的。为尽可能地实现并行,在规划任务时,子任务一般设计为数据关联较少,相互之间具有独立性。
5.以四核处理器为例,常规的并行处理模式中,smp和amp均可抽象为如图1所示的模型,即将一个任务预先划分为相互之间具有独立性的子任务,然后根据处理器核的工作状态,如是否可正常运行,是否处于空闲状态等,将子任务或动态分配给处理器核,如smp模式,或静态将子任务绑定某一个核,如amp模式。由于子任务之间相互独立,因此可以在不同的处理器核中并行执行,从而达到加速处理整个任务的目的。
6.假设t
sch
为多核间任务调度时间开销,{子任务0,子任务1,子任务2,子任务3}的执行时间分别是{t0,t1,t2,t3},则任务执行时间t为:t=t
sch
max{t0,t1,t2,t3}。
7.然而在实际应用中,并非所有任务都可以划分为相互独立的子任务。当一个子任务的处理输入依赖于另一个子任务的处理结果时,这两个子任务就是串行。如果子任务间存在数据相关,最坏情况下4个子任务就完全是串行的过程,此时的任务执行时间为:任务串行时间为
8.在上述情况下,并未起到并行加速的效果,相反,由于多核间的任务调度、数据传递的开销,其4核的执行用时可能比常规单核上的串行用时更长。


技术实现要素:

9.为解决背景技术中存在的问题,本发明提供基于时钟中断同步的非对称多核流水并行处理方法,其包括如下的步骤:将需要执行的任务按照数据相关性及执行顺序划分为n个子任务,每个子任务绑定一个处理器核,即一个子任务只能在一个固定的处理器核上执行;每个子任务分为数据输入、处理、结果输出三个阶段,其中,数据输入是读取前序子任务在共享内存特定位置保存的结果输出,其自身的结果输出写入共享内存的特定位置保存,作为后续子任务的数据输入;利用处理器上的通用计数器按规定时间间隔、周期性地产生中断,各核的中断服务程序响应该中断,通过中断及设置标识位来模拟同步时钟上升沿,使得相对独立的各处理器核得以在时钟上升沿同时开始执行各自子任务的三个阶段;各核的子任务的三个阶段必须在下一次“同步时钟上升沿的到来”之前全部完成,并翻转标志位;最后一个子任务所在的处理器核的结果输出即是整个任务处理结果的输出,写入共享内存待后续处理或直接从该核所控制的外设接口输出。
10.优选的方案中,按以下步骤进行:
11.s1:按照流水线方式处理任务;将多个处理器核编为核0,核1,核2,核i
……
,核n-1;其中,n为处理器中核的最大数量;
12.s2:将待处理的任务划分为子任务0,子任务1,子任务2,子任务i,
……
,子任务n-1,其中,n为子任务的最大数量,子任务i对应在核i运行;
13.s3:将各子任务的运行时间分别设为t0,t1,t2,ti,
……
,t
n-1
;取t’为其中最长的执行时间,即t’=δt max{t0,t1,t2,......,t
n-1
},其中,δt为预留等待时间;将t’设定为每一阶段的执行时间;
14.s4:设置通用计数器的最大时间值为t’,启动计数器开始计数后,计数器在处理器内部系统时钟频率驱动下做减1操作,每间隔一段时间t’,计数器的值变为0,即触发一次中断;
15.s5:每个处理器核设置一个标志位ci,在初始化时将ci置为0;当中断产生时,由中断服务函数将ci置为1,代表同步时钟的上升沿;在子任务的结果输出完成后,由子任务将ci重新置为0。
16.进一步,按照流水线方式处理任务的具体步骤如下:
17.q1:系统启动后,核0完成通用计数器的初始化:设置时间阈值t’;将计数器挂载中断a,设置计数器在计数溢出后产生中断a;设置计数溢出后自动再次加载时间阈值t’;
18.q2:各处理器核完成各自的中断服务函数注册、中断屏蔽清零;初始化各自的标志位ci为0;
19.q3:计数器加载时间阈值t’;
20.q4:计数器计数;
21.间隔t’后,通用计数器产生中断a,去步骤b;否则执行步骤q5;
22.各核中断服务函数响应中断a,将各核的标志位ci置为1,执行步骤q5;
23.q5:各核循环查询标志位ci的值;如果标志位ci为0,执行步骤q4;如果标志位ci为1,去步骤q6;
24.q6:各核按各自子任务i的划分,顺序执行数据输入、处理、结果输出三个阶段,完成子任务i过程;
1;其中,n为处理器中核的最大数量;
40.s2:将待处理的任务划分为子任务0,子任务1,子任务2,子任务i,
……
,子任务n-1,其中,n为子任务的最大数量,子任务i对应在核i运行;
41.s3:将各子任务的运行时间分别设为t0,t1,t2,ti,
……
,t
n-1
;取t’为其中最长的执行时间,即t’=δt max{t0,t1,t2,......,t
n-1
},其中,δt为预留等待时间;将t’设定为每一阶段的执行时间;
42.s4:设置通用计数器的最大时间值为t’,启动计数器开始计数后,计数器在处理器内部系统时钟频率驱动下做减1操作,每间隔一段时间t’,计数器的值变为0,即触发一次中断;
43.s5:每个处理器核设置一个标志位ci,在初始化时将ci置为0;当中断产生时,由中断服务函数将ci置为1,代表同步时钟的上升沿;在子任务的结果输出完成后,由子任务将ci重新置为0。
44.其中按照流水线方式处理任务的具体步骤如下:
45.q1:系统启动后,核0完成通用计数器的初始化:设置时间阈值t’;将计数器挂载中断a,设置计数器在计数溢出后产生中断a;设置计数溢出后自动再次加载时间阈值t’;
46.q2:各处理器核完成各自的中断服务函数注册、中断屏蔽清零;初始化各自的标志位ci为0;
47.q3:计数器加载时间阈值t’;
48.q4:计数器计数;
49.间隔t’后,通用计数器产生中断a,去步骤b;否则执行步骤q5;
50.各核中断服务函数响应中断a,将各核的标志位ci置为1,执行步骤q5;
51.q5:各核循环查询标志位ci的值;如果标志位ci为0,执行步骤q4;如果标志位ci为1,去步骤q6;
52.q6:各核按各自子任务i的划分,顺序执行数据输入、处理、结果输出三个阶段,完成子任务i过程;
53.q7:各核将各自的标志位ci置为0,返回步骤q3。
54.实施例1,
55.本实施中,处理器设定为4核;通用计数器使用中断9,通过本实施例对本发明的基于时钟中断同步的非对称多核流水并行处理方法进行说明。
56.(1)系统启动后,核0完成通用计数器的初始化:首先将计数器控制寄存器置全0,然后将计数器载入比例寄存器置全0,在计数器载入值寄存器中设置时间阈值t’,如0x00f00000;
57.(2)各处理器核完成各自的中断服务函数注册、中断屏蔽清零;初始化各自的标志位ci=0;核0在计数器控制寄存器中写入0x0000000f;
58.(3)计数器自动加载时间阈值0x00f00000;
59.(4)计数器计数;
60.a)在递减到0后,通用计数器产生中断9,去步骤b;否则去步骤(4);
61.b)各核中断服务函数响应中断9,将各核的标志位ci置为1,去步骤(5);
62.(5)各核循环查询标志位ci的值;如果标志位ci为0,去步骤(4);如果标志位ci已被
改为1,相当于检测到“同步时钟上升沿”,去步骤(6);
63.(6)各核按各自子任务的划分,顺序执行“数据输入”、“处理”、“结果输出”三个阶段,在下一个“同步时钟上升沿”到来之前,完成各核的子任务的三个阶段;
64.(7)各核将各种的标志位ci修改为0,去步骤(3)。
65.当处理器有4个核时,按照上述流水线方式处理任务,在最初的3个时间t’里,是没有任务处理结果输出的;在经过第4个t’后,即流水线满了后,才会输出第一个任务的处理结果;在此之后,每间隔一个时间t’,就会有一个任务处理结果输出,即在流水线满了以后,从外部看来,任务的执行时间为0x00f00000对应的时间值,而不再是
66.以上的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献