[0038] 结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
[0039] 表2显示的是一个基于ARM内核典型的动态指令的使用率。在所有的指令中,数据移动的动态使用率为43%,控制流为23%,其他的一些如,算术操作,比较,逻辑操作之类的指令占到动态使用率的34%,算术逻辑单元(ALU)是计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU)。可见,在ARM内核中,ALU指令的动态使用率只占数据移动和控制流指令总和的一半。因为ALU指令的操作会涉及到大量逻辑门的工作,所以动态功耗会远远大于数据移动和控制流指令所消耗的动态功耗,对于基于ARM内核的芯片来说,只有在34%的事件里,即1/3的时间内,其动态功耗才能达到峰值,在其它2/3时间内,ARM ALU都处在静态状态,只有漏电能量的消耗。
[0040] 表2基于ARM内核典型的动态指令的使用率
[0041]
[0042] 本发明的嵌入式多微控制器核开关链结构如图2所示,包括至少两个微处理器核。多个微处理器核是按照顺序逻辑串行链接在一起的。顺序是按照链上每个核静态漏电流大小排的。漏电流大的微处理器核排在后面,反之漏电流小的微处理器核排在前面。漏电流的大小是由工艺制造过程决定的,所以每个多核芯片的链顺序都有可能不一样,这是由于制造过程中的工艺偏移造成,这种现象在超深亚微米工艺下尤为突出。每个微处理器核的漏电流大小可以在芯片裸片测试时量出,从而决定多核顺序,顺序决定了核开启和关断的次序。在多微控制器内核系统中的多微处理器核芯片上电后,第一个微处理器核先被开启,其它微处理器核处在关断状态,当第一个微处理器核的ALU不处在运行状态,表征第一个微处理器核动态功耗未达到峰值,此时系统来了另外的事件或者中断或者异常亟待处理时,操作系统(OS)会打开链上的第二个微处理器核来处理此事件;否则(不亟待处理),此事件会被放入系统的系统等待列表中,直到第一个微处理器核进入闲置状态后(处理完当前事件),操作系统会再从系统等待列表中取出该事件交由第一个微处理器核处理。本发明的开关链结构保证了CPU正常工作的同时尽量减少链上的微处理器核在上电状态的数量,最大地保证上电的微处理器核的ALU都在充分工作的状态下,这样可以减少漏电流功耗。
[0043] 如图2所示按照微处理器核静态漏电流大小,把N个微处理器核排成1st内核,2nd内核,3th内核,一直到第N个微处理器核,然后前后按逻辑顺序链接起来。
[0044] 优选地,本实施例中引入动态峰值状态,动态峰值状态是指中央处理单元(CPU),即多微控制器内核系统微处理器核部是处在算术逻辑操作过程,即是在ALU指令被频繁调用的工作状态下。优选地,本实施例中设置一个标识位(Fu,即Fully Utilized),如图3所示,用来表征当前微处理器核是否处在ALU繁忙状态,通过这个标识位Fu,操作系统(os)就可以直观的判断出当前微处理器核是否处在ALU指令繁忙的操作的阶段了。当Fu处于高电位“1”时,代表该微处理器核处于ALU指令繁忙的操作阶段;若当Fu处于低电位“0”时,代表该微处理器处于ALU空闲状态。本实施例中还设置一个标志位PWR,用于指示当前微处理器核是否上电或断电。当PWR为高电位“1”时,代表该微处理器核处于上电状态;若PWR为低电位“0”时,代表该微处理器核处于断电状态。本事实例中,链上每个微处理器核都会输出一个non_fu的信号,此信号是Fu取反之后逻辑与上PWR的结果,其中!Fu是指Fu(fully utilized)取反的值。non_fu=1时表明这个微处理器核处在上电并且ALU不繁忙工作的状态下,即动态功耗不处在峰值。non_fu=0时表明这个微处理器核处在关断或者上电且ALU繁忙工作的状态下。non_fu_comb是所有微处理器核输出的non_fu逻辑或在一起的信号,当non_fu_comb=1时,代表链上至少有一个微处理器核处在ALU不繁忙工作状态,当non_fu_comb=0时,代表链上的微处理器核要么处在电源关断状态,要么微处理器核上的ALU处在繁忙的工作状态,即动态功耗处在峰值。
[0045] 本发明的嵌入式多微控制器核开关链结构的工作方法,包括优先级判断操作、微处理器核状态判断操作、唤醒微处理器核操作、关断微处理器核操作。
[0046] 其中,如图4所示,优先级判断操作包括:
[0047] 步骤A1:多微控制器内核系统中每当出现中断事件、异常事件或任务时,多微控制器内核系统判断中断事件、异常事件或任务的优先级;
[0048] 步骤A2:若优先级为最高且亟待处理,多微控制器内核系统执行唤醒微处理器核操作;否则,多微控制器内核系统执行微处理器核状态判断操作。
[0049] 其中,如图5所示,微处理器核状态判断操作包括:
[0050] 步骤B1:当出现中断事件、异常事件或任务时,多微控制器内核系统判断多微控制器内核系统中的多个微处理器核中是否存在至少一个内核处于上电且不繁忙工作状态;
[0051] 步骤B2:若存在,多微控制器内核系统将中断事件、异常事件或任务存入系统等待列表中,等待处理;若不存在,则执行唤醒微处理器核操作。
[0052] 其中,唤醒微处理器核操作包括:
[0053] 步骤C:多微控制器内核系统唤醒微处理器核排列顺序上第一个关断的微处理器核处理中断事件、异常事件或任务。
[0054] 其中,如图6所示,当前微处理器核处理完中断事件、异常事件或任务后执行关断微处理器核操作;关断微处理器核操作包括:
[0055] 步骤D1:多微控制器内核系统判断系统等待列表是否为空;
[0056] 步骤D2:若系统等待列表为空,多微控制器内核系统则关断当前微处理器核;若不为空,则执行步骤D3;
[0057] 步骤D3:多微控制器内核系统判断除当前微处理器外其他微处理器是否有处于上电且不繁忙工作状态;
[0058] 步骤D4:若结果为是,则关断当前微处理器核;若结果为否,则执行步骤D5;
[0059] 步骤D5:多微控制器内核系统判断在当前微处理器核排列顺序之前是否存在其他微处理器核处于关断状态;
[0060] 步骤D6:若存在,则多微控制器内核系统关断当前微处理器核并执行唤醒微处理器核操作;若不存在,则保持当前微处理器核上电状态,由当前微处理器核处理系统等待列表中的中断事件、异常事件或任务。
[0061] 如图7所示为本发明嵌入式多微控制器核开关链结构工作流程图,以下为完整的工作流程。
[0062] 第一步,当多微控制器内核系统内来了一个中断、异常或者任务的时候,操作系统(OS)先判断其优先级是不是最高且亟待处理;
[0063] 第二步,如果这个中断、异常或者任务的优先级是最高且亟待处理,不论non_fu_comb信号是否等于1,操作系统(OS)部要按顺序遍历整个开关链,新打开或者唤醒链上第一个掉电的微处理器核来处理这个中断、异常或者任务(为了中断响应性能);
[0064] 第三步,如果这个中断、异常或者任务的优先级不是最高且不亟待处理,操作系统(OS)判断non_fu_comb信号是否等与1,如果等于1,表示系统中至少有一个微处理器核处在上电并且ALU不繁忙工作的状态下,此时OS就把这个中断、异常或者任务放到系统等待列表(waiting list)中;如果不等于1,表示链上所有打开着的微处理器核的ALU电路部分都被充分利用,这时操作系统(OS)就要按顺序遍历整个开关链,新打开或者唤醒链上第一个掉电的微处理器核来处理这个中断、异常或者任务;
[0065] 第四步,在打开或者唤醒的微处理器核处理完中断、异常或者任务之后,OS再去检查系统等待列表中是否还有没有处理的中断、异常或者任务,如果没有,OS可以关掉这个微处理器核,这样可以减少漏电功耗从而增加能量效率。如果系统等待列表中不是空的,即还有没有处理的中断、异常或者任务,此时做第五步;
[0066] 第五步,OS再一次判断除掉当前此微处理器核,non_fu_comb信号的情况,如果等于1,说明除此微处理器核外还有一个微处理器核至少处在上电且ALU不繁忙工作状态,这个时候OS可以关掉这个微处理器核,这样可以减少漏电功耗从而增加能量效率;如果不等于1,说明除此微处理器核之外的任何一个上电的微处理器核都是处在ALU繁忙工作的状态;
[0067] 第六步,此时OS判断在链上此微处理器核顺序之前的微处理器核是否有处在关断状态的微处理器核,如果有,则关断此微处理器核,且新打开或者唤醒链上第一个掉电的微处理器核来处理这个中断、异常或者任务;如果没有,则不下电处理这个中断、异常或者任务,做完后在回到上面的第四步,判断系统等待列表是否为空;
[0068] 本实施例为多微控制器内核系统在刚上电且ALU被频繁访问的时候,芯片外部来了一个优先级不是最高的中断事件,当第二个微处理器核在处理任务且ALU不满载的时候,又来了一个优先级不是最高的异常事件,过了一会又来了一个优先级最高的任务。
[0069] 下面是处理这一事件的整个详细步骤:
[0070] 第一步,多微控制器内核系统上电,过了一段时间,此时芯片外部来了一个中断事件。
[0071] 第二步,判断此优先级是否为最高且亟待处理。
[0072] 第三步,结果为非后,判断non_fu_comb信号是否等于1;
[0073] 第四步,non_fu_comb信号等于0,代表此时所有上电的微处理器核都处在ALU被频繁利用状态,操作系统(OS)就会打开微处理器核2,处理此事件。
[0074] 第五步,此时又来一个事件,判断其优先级是否为最高且亟待处理。
[0075] 第六步,结果为非后,判断non_fu_comb信号是否等于1
[0076] 第七步,non_fu_comb信号等于1,代表此时至少有一个微处理器核处在ALU不完全被利用状态,OS就会把这个事件放到系统等待列表中。
[0077] 第八步,此时又来一个事件,判断其优先级是否为最高且亟待处理。
[0078] 第九步,如果此事件优先级是最高且亟待处理,无论non_fu_comb信号是否等于1,都要新打开微处理器核3来处理此事件。
[0079] 第九步,当微处理器核2先于微处理器核3和微处理器核1处理完任务之后,OS判断系统等待列表中是否还有等待事件,结果发现还有一个未处理事件。
[0080] 第十步,此时OS判断non_fu_comb信号是否等于1,结果为非后(代表微处理器核1与微处理器核2的各自ALU都处在频繁被访问状态,动态功耗达到最高),于是微处理器核2不下电处理系统等待列表中的此事件;
[0081] 第十一步,当微处理器核3处理完任务之后,OS判断系统等待列表为空,于是关断微处理器核3;
[0082] 第十二步,当微处理器核2处理完任务之后,OS判断系统等待列表为空,于是关断微处理器核2;
[0083] 第十三步,当微处理器核1处理完任务之后,OS判断系统等待列表为空,此时由OS决定是否要关断微处理器核1,使芯片处于超低功耗模式,或是继续保持通电状态(待命模式)。
[0084] 本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够向到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。