寄存器堆系统、方法及使用该寄存器堆的汽车控制处理器与流程

文档序号:32418114发布日期:2022-12-02 22:32阅读:119来源:国知局
寄存器堆系统、方法及使用该寄存器堆的汽车控制处理器与流程

1.本发明涉及汽车电子控制领域的技术领域,尤其涉及一种寄存器堆系统和方法及使用该寄存器堆的控制器。


背景技术:

2.随着控制领域应用的需求发展,要求处理器提供越来越高的性能。尤其是在汽车电子控制领域,随着汽车电动化、智能化的发展,对控制算法提出更多的数值计算的需求和更高的运算性能需求。由于汽车尾气控制的要求,能耗的要求越来越高,需要对汽车的喷油、点火、废气排放的时机控制更加精准。由于汽车电动化和能量回收的需求,汽车需要感知的传感器数量增加,需要控制的执行单元数量也在增加。这些新的需求反映在计算程序上,就是它的工作集变大了。工作集是衡量计算机程序的一个量化指标,它指的是为了完成某一功能,程序执行时需要访问、中间缓存和最终存储的数据量。
3.如何提高整型计算能力是这一领域处理器设计的一个重点。处理器包括的主要硬件资源有计算资源、存储资源、通信资源等,通过对不同资源的配制可以有效提高对应应用领域的计算效率。根据距离计算资源的远近,存储资源分为流水线寄存器、寄存器堆、缓存、芯片内存储和芯片外存储。从以上资源调度为切入点,提高程序运行能力有很多种办法,本发明关注的是与计算资源紧偶合的寄存器堆的优化利用。
4.本发明适用于各种指令集处理器,是一种通用型的电路结构和软件方法。处理器指令集可以分为两个大的类型,复杂指令集处理器(csic)和精简指令集处理器(risc)。前者的典型代表是x86,后者的典型代表是arm和risc-v。
5.本发明适用于各种汽车电子控制器,也适用于工业控制器和家用电器控制器等。


技术实现要素:

6.为了提高控制处理器的运行性能和效率,已经有比较多的办法。传统上以增加运算资源,即运算指令和存储资源,即各级缓存为主,现概述如下:
7.1)为了提高某一类程序的性能,有针对性的增加特定的指令,利用已有的计算资源重新整合或者增加新的专门的计算资源来支持这些新的指令。dsp数据信号处理器和asip专用指令集处理器是基于这种方法设计的处理器。
8.2)为了解决数据搬移的问题,在计算资源和片外存储器之间设置多级缓存cache。离计算资源越近的存储器,访问速度越快,性能越高,但是制造成本和功耗成本越高。离计算资源越远的存储器,访问速度越慢,性能越差,但是单位制造和功耗成本越低,通信成本高。人们利用这些特性,把经常使用的数据放在离计算资源近的存储器里边,获得成本和性能的平衡。
9.3)另外一种利用存储的机制是直接在芯片内部放置程序可以访问的存储器,一般叫作紧偶合存储器tcm,tightly coupled memory。这种片上存储和缓存的区别是,片上存储是软件程序可以直接使用地址进行寻址的,而缓存的内容是硬件自动管理的,对软件是
透明的。
10.这些优化方法可以从不同的角度优化处理器的设计,对目标应用有很好的优化效果。但是它们都没有注意到处理器设计的一些新变化,如增加新的更靠进计算单元的专门的寄存器堆,如专门的浮点寄存器堆,向量寄存器堆等,另一方面,随着芯片内的晶体管密度增加,在芯片内部放置更多的专门的存储空间的成本也在降低。本发明针对汽车使用的控制芯片,增加专门用途的寄存器堆,并配合相关的指令,从而获得比缓存和紧偶合存储器tcm更好的性能,并针对一类新的存储器进行优化。这就是本发明要解决的问题。
11.为了提高整型程序的运行性能,增加处理器的工作集(working set)的临时保存能力,本发明为整型处理器增加了新的寄存器堆。这增加的两个新的寄存器堆分别为第二标量寄存器堆和可伸缩的寄存器堆。
12.为了解决上述的主要技术问题采取以下技术方案实现:
13.本发明的第一种形式:
14.紧偶合寄存器堆系统,其包括,
15.系统内存,用于暂时存放处理器中的运算数据,以及与硬盘外部储存器交换的数据;
16.系统总线,电性耦合连接与加载和保存通路和系统内存之间;
17.其特征在于,还包括
18.整型寄存器堆i,通过加载和保存通路电性耦合进入系统总线并与系统内存进行数据交互,且与整型计算通路进行数据交互;
19.整型寄存器堆x,与整型计算通路进行数据交互;这种方式整型寄存器堆x不直接访问系统内存,即不直接访问存储器。
20.或通过加载和保存通路电性耦合进入系统总线并与系统内存进行数据交互,且与整型计算通路进行数据进行交互。这种方式可以直接访问系统内存,即通过通路和总线直接访问存储器。
21.本发明的第二种形式,在第一种形式的基础上:
22.可伸缩寄存器堆v,与整型计算通路进行数据交互;
23.优先地,还包括可伸缩寄存器堆v,与整型计算通路进行数据交互;这种方式可伸缩寄存器堆v不直接访问系统内存,即不直接访问存储器;
24.或通过加载和保存通路电性耦合进入系统总线并与系统内存进行数据交互,且与整型计算通路进行数据交互,这种方式可以直接访问系统内存,即通过通路和总线直接访问存储器。
25.优先地,通过第一种和第二种形式,本技术为了使3者之间进行数据交换,进行了程序设定,所述整型寄存器堆i、整型寄存器堆x和可伸缩寄存器堆之间的数据交换方法如下:
26.1)设第一寄存器堆为i,则in为它的第n个寄存器,计第二寄存器堆为x,xm为它的第m个寄存器;每个寄存器宽度为w,w典型的取值如8、16、32、64、128,寄存器堆i共有n个寄存器,寄存器堆x共有m个寄存器,设m=n;但m或者n的宽度为w可以具体为不同的数值,如15、16、31、32、48、63、64;
27.则实现move in,xm,即寄存器xm的值拷贝到in;move xm,in,即把寄存器in的值拷
贝到xm;
28.2)设内存为memory,它的地址a可以存放一个字节,当地址a是对齐的时候,也可以表示2个字节,4个字节或8个字节,设在第一寄存器堆的第n个寄存器保存了地址a,也即,in=a;
29.则实现load xm,[in],即把以in(a)为地址的内存单元内的数据读取到第二标量寄存器堆的第m个寄存器xm内;
[0030]
store xm,[in],即把第二标量寄存器堆的第m个寄存器xm里的数据保存到以in(a)为地址的内存单元;
[0031]
3)根据方法1)设可伸缩的寄存器堆为v,vm为它的第m个寄存器,它的宽度w是第一标量寄存器宽度的整数倍,vn[i],i=0,1,2

是这个寄存器第i个单元,它的宽度与一个标量寄存器的宽度相等,寄存器堆内寄存器的个数与第一标量寄存器堆内寄存器的个数相等,也为n;
[0032]
则实现move in,xm[i],把寄存器xm[i]的值拷贝到in;
[0033]
move xm[i],in,把寄存器in的值拷贝到xm[i];
[0034]
4)根据方法2)可以得到:
[0035]
load xm[i],[in],即把以in(a)为地址的内存单元内的数据读取到第二标量寄存器堆的第m个寄存器xm[i]内;
[0036]
store xm[i],[in],即把第二标量寄存器堆的第m个寄存器xm[i]里的数据保存到以in(a)为地址的内存单元。
[0037]
优先地,还包括数据交换方法5),设交换第一和第二寄存器堆的内容为swap i,x,即把i内寄存器堆的每个寄存器的数据拷贝到x寄存器堆的对应的寄存器内,同时,把x内寄存器堆的每个寄存器的数据拷贝到i寄存器堆的对应的寄存器内,过程如下:
[0038]
51)逐条交换i的每条寄存器的内容到x对应的寄存器,其中交换某一对寄存器的方法为,利用一个中间临时寄存器tmp,tmp《=in;in《=xn;xn《=tmp;
[0039]
或直接交换两个寄存器堆的名字:在该处理器内设有一个专门的体系结构寄存器ix,可以通过系统寄存器初始化,读取和改写该寄存器的值;当ix的值为0时,所有以in的名字访问的寄存器都访问真实的in;所有以xn的名字访问的寄存器都访问真实的xn;当ix的值为1时,所有以in的名字访问的寄存器都访问真实的xn;所有以xn的名字访问的寄存器都访问真实的in。
[0040]
优先地,还包括数据交换方法6),本方法增加体系结构寄存器iv和xv,结构寄存器iv和xv与整型计算通路进行数据交互;
[0041]
或通过加载和保存通路电性耦合进入系统总线并与系统内存进行数据交互且与整型计算通路进行数据进行交互;
[0042]
设该寄存器初始化为0,可以使用系统指令访问和读写iv或xv;用v[i]表示所有的vn[i],其中:n=0,1,2

n;则,v[i]的大小和形状与标量寄存器堆i,x是一样的,则:
[0043]
61)swap i,v[i],即把i内寄存器堆的每个寄存器的数据拷贝到v[i]寄存器堆的对应的寄存器内,同时,把v[i]内寄存器堆的每个寄存器的数据拷贝到i寄存器堆的对应的寄存器内;
[0044]
swap x,v[i],即把x内寄存器堆的每个寄存器的数据拷贝到v[i]寄存器堆的对应
的寄存器内,同时,把v[i]内寄存器堆的每个寄存器的数据拷贝到x寄存器堆的对应的寄存器内;
[0045]
push i,即把当前第一标量寄存器堆的所有寄存器的数据全部保存到v[iv]内,然后把iv的值增加1,即iv《=iv+1,当iv==n的时候,指令执行报错;
[0046]
pop i,即用v[iv]的寄存器内所有寄存器的数据覆盖第一标量寄存器堆i,然后把iv的值减少1,即iv《=iv-1,当iv==0的时候,指令执行报错;
[0047]
push x,即把当前第一标量寄存器堆的所有寄存器的数据全部保存到v[xv]内,然后把xv的值增加1,即xv《=xv+1,当xv==n的时候,指令执行报错;
[0048]
pop x,即用v[xv]的寄存器内所有寄存器的数据覆盖第一标量寄存器堆i,然后把xv的值减少1,即xv《=xv-1,当xv==0的时候,指令执行报错。
[0049]
基于上述第一种形式的紧偶合寄存器堆系统进行数据处理的方法,包括如下步骤,
[0050]
101)把待运算的数据从整型寄存器堆i保存到第二整型寄存器堆x;
[0051]
102)切换程序进行运算;
[0052]
103)运算完成后,将步骤1)的数据从第二整型寄存器堆x中恢复到整型寄存器i内;
[0053]

[0054]
201)交换整型寄存器堆i和第二整型寄存器堆x中的数据;
[0055]
202)切换程序进行运算;
[0056]
203)交换整型寄存器堆i和第二整型寄存器堆x中的数据,恢复到步骤201)之前的状态;
[0057]
204)切换至之前的程序进行运算。
[0058]
基于上述第二种形式的紧偶合寄存器堆系统进行数据处理的方法,包括如下步骤,
[0059]
301)交换整型寄存器堆i和可伸缩寄存器堆v第i个子堆的数据;
[0060]
302)切换程序i进行运算;
[0061]
303)换整型寄存器堆i和可伸缩寄存器堆v第i个子堆的数据,恢复到步骤301)之前的状态;
[0062]
304)交换整型寄存器堆i和可伸缩寄存器堆v第j个子堆的数据;
[0063]
305)切换程序j进行运算;
[0064]
306)换整型寄存器堆i和可伸缩寄存器堆v第j个子堆的数据,恢复到步骤304)之前的状态。
[0065]
基于上述第二种形式的紧偶合寄存器堆系统进行数据处理的方法,本方法的系统增加了体系结构寄存器iv和xv,
[0066]
包括如下步骤,
[0067]
401)设置可伸缩寄存器堆的栈地址xv;
[0068]
402)进入task i;
[0069]
403)push i,把整型寄存器堆i内的数据保存到可伸缩寄存器堆的第xv个子堆,同时xv增加1;
[0070]
404)进入task i+1;
[0071]
405)不断重复步骤403)和404),直到当xv==n的时候,程序检查到该条件,把全部可伸缩寄存器的内容保存到系统内存,并设置xv=0,可以继续重复403)和404)
[0072]
406)pop i,xv减一,把可伸缩寄存器堆的第xv个子堆恢复到整型寄存器堆i;
[0073]
407)进入task i-1;
[0074]
408)不断重复步骤406)和407),直到当iv==0的时候,程序检查到该条件,把系统内存中保存的栈内容装载到可伸缩寄存器内容,并设置xv=n,可以继续重复406)和407)。
[0075]
本发明实施例的第二方面,还公开了一种汽车电子控制器或工业控制器或家用电器控制器,该控制器使用了上述第一种和第二种形式的寄存器堆系统。
[0076]
本发明实施例的第三方面还公开了一种计算机可读存储介质,其存储的计算机程序使得处理器执行上述4种数据处理方法。
[0077]
与现有技术相比,本发明创新地利用浮点和向量处理器的存储资源来增强整型处理器的性能,但是摒弃掉不需要的浮点和向量的计算通路,从而以更小的面积成本代价获得特定程序的加速性能。本发明与cn104981771b基于标量寄存器数据值的向量寄存器寻址和功能其本质的区别在于,cn104981771b发明旨在两个处理器之间共享一部份或全部寄存器堆的资源,获得面积成本的优化;本发明旨在一个处理器内部增加更多的专门的寄存器堆资源获得性能的优化。
附图说明
[0078]
为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图做简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0079]
图1为本发明第一种形式的可直接访问存储器的紧偶合寄存器堆系统图;
[0080]
图2为本发明第一种形式的不直接访问存储器的紧偶合寄存器堆系统图;
[0081]
图3为本发明第二种形式的可直接访问存储器的紧偶合寄存器堆系统图。
[0082]
图4为本发明第二种形式的不直接访问存储器的紧偶合寄存器堆系统图;
[0083]
图5为本发明第一种形式的数据处理与现有的对比图;
[0084]
图6为本发明第一种形式的使用乒乓结构切换工作任务时的数据流向数图;
[0085]
图7为本发明第一种形式的使用乒乓结构切换工作任务时的程序控制流图;
[0086]
图8为本发明第二种形式的切换多个工作任务时的数据流向图;
[0087]
图9为本发明第二种形式的切换多个工作任务时的程序控制流图;
[0088]
图10为本发明用栈的方式使用可伸缩的寄存器堆的程序控制流图。
具体实施方式
[0089]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实
施例,都属于本发明保护的范围。
[0090]
实施例1
[0091]
请重点参阅图1和2,本实施例整型寄存器堆x是指和整型寄存器堆i据有相同的空间大小,可以相互一一映射的寄存器堆,
[0092]
紧偶合寄存器堆系统,其包括,系统内存,用于暂时存放处理器中的运算数据,以及与硬盘外部储存器交换的数据;系统总线,电性耦合连接与加载和保存通路和系统内存之间;还包括,整型寄存器堆i,通过加载和保存通路电性耦合进入系统总线并与系统内存进行数据交互,且与整型计算通路进行数据交互;
[0093]
本实施例定义了整型寄存器堆x和内存接口的配置方式:
[0094]
1)不直接访问外部存储器
[0095]
整型寄存器堆x,与整型计算通路进行数据交互;这种方式整型寄存器堆x不直接访问系统内存,即不直接访问存储器。本配置适用于一些面积成本和功耗受限的应用场景。在该配置下,第整型寄存器堆x不直接访问外部存储器,也没有相关的控制指令在两者之间直接搬移数据。
[0096]
2)可直接访问内存
[0097]
或通过加载和保存通路电性耦合进入系统总线并与系统内存进行数据交互,且与整型计算通路进行数据进行交互。这种方式可以直接访问系统内存,即通过通路和总线直接访问存储器。该整型寄存器堆x有专门的访问外部存储的能力。外部数据可以表现为是外部总线,数据缓存cache,片内的内存等。外部数据的组织方式不在本发明的覆盖范围之内。有专门的指令可以控制数据在第二标量寄存器堆和外部存储指令的交换,此为现有技术,不在赘述。
[0098]
在以上这两种配置方式下,本专利都定义了在整型寄存器堆x是指和整型寄存器堆i之间的数据通路,也定义了专门的指令方法用于在第一寄存器堆和第二寄存器堆之间移动数据。
[0099]
请重点参阅图5-7,一般来说,程序需要维护一个工作集来保存当时操作的数据,如果当前的寄存器堆不够用的时候,需要把部份工作集保存到内存,当需要的时候再从内存中读取回来。用指令表示就是:
[0100]
store i_m,[i_n];
[0101]
...;
[0102]
load i_m[i_n];
[0103]
这组操作可以用如下程序来代替。
[0104]
move x_m,i_m;
[0105]
...;
[0106]
move i_m,x_m;
[0107]
这样利用第二标量寄存器堆,即整型寄存器堆x,就获得了两倍的寄存器来保存工作集,这会增加程序的执行性能和效率。move指令比load/store指令花费的时间和能量都更少,这也会增加程序的性能和效率。
[0108]
基于上述这种形式的紧偶合寄存器堆系统进行数据处理的方法,包括如下步骤,
[0109]
101)把待运算的数据从整型寄存器堆i保存到第二整型寄存器堆x;
[0110]
102)切换程序进行运算;
[0111]
103)运算完成后,将步骤1)的数据从第二整型寄存器堆x中恢复到整型寄存器i内。
[0112]
但是在汽车芯片的应用中,经常会出现使用同一个算法程序处理两路数据的情况,一般这两路硬件数据构成了一个乒乓结构。这时候利用i和x的对称性,可以大大降低乒乓程序的复杂度,增加执行效率。典型的程序流如下
[0113]
##enter ping
[0114]
...
[0115]
swap i x
[0116]
##enter pang
[0117]
...
[0118]
swap i x
[0119]
##enter ping
[0120]
...
[0121]
swap i x。
[0122]
基于上述这种乒乓结构形式的紧偶合寄存器堆系统进行数据处理的方法,包括如下步骤,
[0123]
201)交换整型寄存器堆i和第二整型寄存器堆x中的数据;
[0124]
202)切换程序进行运算;
[0125]
203)交换整型寄存器堆i和第二整型寄存器堆x中的数据,恢复到步骤201)之前的状态;
[0126]
204)切换至之前的程序进行运算。
[0127]
实施例2
[0128]
请重点参阅图3和4,可伸缩的寄存器堆同第一个整型寄存器堆据有相同的深度,即地址空间,但是对于每一个地址空间,数据的宽度是整型寄存器宽度的整数倍。本专利定义了两种可伸缩寄存器堆和内存接口的配置方式。
[0129]
在实施例1的基础上,本发明还包括可伸缩寄存器堆v,与整型计算通路进行数据交互;这种方式可伸缩寄存器堆v不直接访问系统内存,即不直接访问存储器;
[0130]
或通过加载和保存通路电性耦合进入系统总线并与系统内存进行数据交互,且与整型计算通路进行数据交互,这种方式可以直接访问系统内存,即通过通路和总线直接访问存储器。
[0131]
在以上这两种配置方式下,本专利都定义了在整型寄存器堆i和可伸缩寄存器堆v之间的数据通路,也定义了专门的指令方法用于在第一寄存器堆和第二寄存器堆之间移动数据。
[0132]
请重点参阅图8和9,汽车芯片的应用是多任务并发的场景,需要同时处理不同的数据、任务。不同的任务保存不同的上下文和工作集,如果利用内存交换不同的工作场景,效率是比较低的。利用可伸缩寄存器堆,可以完成多个任务的灵活切换。
[0133]
##enter task root at 0
[0134]
##root set env
[0135]
...
[0136]
##enter task i
[0137]
swap i v[i]
[0138]
##operations in task i
[0139]
...
[0140]
##return to root at 0
[0141]
swap i v[i]
[0142]
##root set env
[0143]
...
[0144]
##enter task j
[0145]
swap i v[j]
[0146]
##operations in task j
[0147]
...
[0148]
##return to root at 0
[0149]
swap i v[j]
[0150]
即基于本实施例形式的紧偶合寄存器堆系统进行数据处理的方法,包括如下步骤,
[0151]
301)交换整型寄存器堆i和可伸缩寄存器堆v第i个子堆的数据;
[0152]
302)切换程序i进行运算;
[0153]
303)交换整型寄存器堆i和可伸缩寄存器堆v第i个子堆的数据,恢复到步骤301)之前的状态;
[0154]
304)交换整型寄存器堆i和可伸缩寄存器堆v第j个子堆的数据;
[0155]
305)切换程序j进行运算;
[0156]
306)交换整型寄存器堆i和可伸缩寄存器堆v第j个子堆的数据,恢复到步骤304)之前的状态。
[0157]
基于上述实施例1和2,为了配合整型寄存器堆i与第二整型寄存器堆x和可伸缩寄存器堆v之间交换数据,本专利定义了四类指令方法,用于这些数据交换。本专利并且定义了乒乓切换和轮换切换两组指令,专门用于汽车特有的程序优化。本发明所定义的6类指令,可以用于任何处理器,在不同处理器的具体指令集下,可能有不同的编码形式,都在本专利权利的伸张范围之内。
[0158]
整型寄存器堆i、第二整型寄存器堆x和可伸缩寄存器堆v之间的数据交换指令方法如下:
[0159]
1)设第一寄存器堆为i,则in为它的第n个寄存器,计第二寄存器堆为x,xm为它的第m个寄存器;每个寄存器宽度为w,w典型的取值如8、16、32、64、128等,寄存器堆i共有n个寄存器,寄存器堆x共有m个寄存器,设m=n;但m或者n的宽度为w可以具体为不同的数值,如15、16、31、32、48、63、64等;
[0160]
则实现move in,xm,即寄存器xm的值拷贝到in;move xm,in,即把寄存器in的值拷贝到xm;
[0161]
2)设内存为memory,它的地址a可以存放一个字节,当地址a是对齐的时候,也可以
表示2个字节,4个字节或8个字节,设在第一寄存器堆的第n个寄存器保存了地址a,也即,in=a;
[0162]
则实现load xm,[in],即把以in(a)为地址的内存单元内的数据读取到第二标量寄存器堆的第m个寄存器xm内;
[0163]
store xm,[in],即把第二标量寄存器堆的第m个寄存器xm里的数据保存到以in(a)为地址的内存单元;
[0164]
3)根据指令方法1)设可伸缩的寄存器堆为v,vm为它的第m个寄存器,它的宽度w是第一标量寄存器宽度的整数倍,vn[i],i=0,1,2

是这个寄存器第i个单元,它的宽度与一个标量寄存器的宽度相等,寄存器堆内寄存器的个数与第一标量寄存器堆内寄存器的个数相等,也为n;
[0165]
则实现move in,xm[i],把寄存器xm[i]的值拷贝到in;
[0166]
move xm[i],in,把寄存器in的值拷贝到xm[i];
[0167]
4)根据指令方法2)可以得到:
[0168]
load xm[i],[in],即把以in(a)为地址的内存单元内的数据读取到第二标量寄存器堆的第m个寄存器xm[i]内;
[0169]
store xm[i],[in],即把第二标量寄存器堆的第m个寄存器xm[i]里的数据保存到以in(a)为地址的内存单元。
[0170]
此外,还包括数据交换指令方法5),设交换第一和第二寄存器堆的内容为swap i,x,即把i内寄存器堆的每个寄存器的数据拷贝到x寄存器堆的对应的寄存器内,同时,把x内寄存器堆的每个寄存器的数据拷贝到i寄存器堆的对应的寄存器内,过程如下:
[0171]
51)逐条交换i的每条寄存器的内容到x对应的寄存器,其中交换某一对寄存器的方法为,利用一个中间临时寄存器tmp,tmp《=in;in《=xn;xn《=tmp;
[0172]
或直接交换两个寄存器堆的名字:在该处理器内设有一个专门的体系结构寄存器ix,可以通过系统寄存器初始化,读取和改写该寄存器的值;当ix的值为0时,所有以in的名字访问的寄存器都访问真实的in;所有以xn的名字访问的寄存器都访问真实的xn;当ix的值为1时,所有以in的名字访问的寄存器都访问真实的xn;所有以xn的名字访问的寄存器都访问真实的in。
[0173]
另外,还包括数据交换指令方法6),本方法增加体系结构寄存器iv和xv,结构寄存器iv和xv与整型计算通路进行数据进行交互;
[0174]
或通过加载和保存通路电性耦合进入系统总线并与系统内存进行数据交互且与整型计算通路进行数据进行交互;
[0175]
设该寄存器初始化为0,可以使用系统指令访问和读写iv或xv;用v[i]表示所有的vn[i],其中:n=0,1,2

n;则,v[i]的大小和形状与标量寄存器堆i,x是一样的,则:
[0176]
61)swap i,v[i],即把i内寄存器堆的每个寄存器的数据拷贝到v[i]寄存器堆的对应的寄存器内,同时,把v[i]内寄存器堆的每个寄存器的数据拷贝到i寄存器堆的对应的寄存器内;
[0177]
swap x,v[i],即把x内寄存器堆的每个寄存器的数据拷贝到v[i]寄存器堆的对应的寄存器内,同时,把v[i]内寄存器堆的每个寄存器的数据拷贝到x寄存器堆的对应的寄存器内;
[0178]
push i,即把当前第一标量寄存器堆的所有寄存器的数据全部保存到v[iv]内,然后把iv的值增加1,即iv《=iv+1,当iv==n的时候,指令执行报错;
[0179]
pop i,即用v[iv]的寄存器内所有寄存器的数据覆盖第一标量寄存器堆i,然后把iv的值减少1,即iv《=iv-1,当iv==0的时候,指令执行报错;
[0180]
push x,即把当前第一标量寄存器堆的所有寄存器的数据全部保存到v[xv]内,然后把xv的值增加1,即xv《=xv+1,当xv==n的时候,指令执行报错;
[0181]
pop x,即用v[xv]的寄存器内所有寄存器的数据覆盖第一标量寄存器堆i,然后把xv的值减少1,即xv《=xv-1,当xv==0的时候,指令执行报错。
[0182]
实施例3
[0183]
请重点参阅图10,汽车芯片的应用是多任务并发的场景,不同的任务还有一定的依赖关系和先后关系。在典型的应用中,可以在可伸缩寄存器堆v中预留一部分资源供平行的多任务进行调度。剩下另外一部分用作堆栈管理。下面的示例程序展示了从task i切换到i+1,然后切换到i+2,然后退回到i+1,然后退回到task i的程序流程。
[0184]
##enter task root at 0
[0185]
##root set env
[0186]
##root set iv=some number
[0187]
...
[0188]
##enter task i
[0189]
##operations in task i
[0190]
...
[0191]
##save current task i working set
[0192]
push i
[0193]
##enter task i+1
[0194]
##operations in task i+1
[0195]
...
[0196]
##save current task i+1working set
[0197]
push i
[0198]
##enter task i+2
[0199]
##operations in task i+2
[0200]
...
[0201]
##return to task i+1
[0202]
pop i
[0203]
##operations in task i+1
[0204]
...
[0205]
##return to task ipop i。
[0206]
基于上述实施例3的紧偶合寄存器堆系统进行数据处理的方法,本方法的系统增加了体系结构寄存器iv和xv,
[0207]
包括如下步骤,
[0208]
401)设置可伸缩寄存器堆的栈地址xv;
[0209]
402)进入task i;
[0210]
403)push i,把整型寄存器堆i内的数据保存到可伸缩寄存器堆的第xv个子堆,同时xv增加1;
[0211]
404)进入task i+1;
[0212]
405)不断重复步骤403)和404),直到当xv==n的时候,程序检查到该条件,把全部可伸缩寄存器的内容保存到系统内存,并设置xv=0,可以继续重复403)和404)
[0213]
406)pop i,xv减一,把可伸缩寄存器堆的第xv个子堆恢复到整型寄存器堆i;
[0214]
407)进入task i-1;
[0215]
408)不断重复步骤406)和407),直到当iv==0的时候,程序检查到该条件,把系统内存中保存的栈内容装载到可伸缩寄存器内容,并设置xv=n,可以继续重复406)和407)。
[0216]
实施例4
[0217]
本发明实施例还提供了汽车电子控制器或工业控制器或家用电器控制器,包括:该控制器使用了上述实施例1、实施例2和实施例3的寄存器堆系统。
[0218]
实施例5
[0219]
本发明实施例还提供了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本发明上述实施例1、实施例2和实施例3所述的数据处理方法。
[0220]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0221]
本发明不是孤立存在的,它依赖于处理器的其他功能的配合完成。产品发布需要被其客户使用,客户的使用方法也可以暴露本发明的存在。这也就为检测本发明的存在提供检测途径。下面举例说明:
[0222]
一般而言一个整型处理器只包含一个标量寄存器堆。如果一个汽车用的整型处理器中包括的第二个标量寄存器堆,或者其他可伸缩的寄存器堆,并且需要专门的指令访问和数据搬移,那么可以证明本发明的存在。
[0223]
一个多功能的现代处理器可能会包括浮点指令,向量指令,同时附带相关的数据运算和搬移指令。但是如果一个处理器不支持浮点计算指令和向量计算指令,却能检测到多个寄存器堆的存在,那么可以证明本发明的存在。
[0224]
在第一标量寄存器堆和其他寄存器堆交换数据时候,存在批量数据交换的指令,如本发明申张的swap,push,pop指令,那么可以证明本发明的存在。
[0225]
为了完成本发明的部份功能和指令,处理器必须包含相关的体系结构寄存器,如ix,iv,xv等。这些寄存器可以通过系统指令访问,并控制相应的功能和指令的执行。通过访问和控制这些系统寄存器,也可以证明本发明的存在。
[0226]
以上所述的实施方式为优选实施方式而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,依然可以对前述实施所记载的技术方案进行修改,或者对其中部分技术特性进行等同替换,凡在本发明精神和原
则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1