通过多载入/存储指令的代码尺寸减小方法

文档序号:6632794阅读:161来源:国知局
专利名称:通过多载入/存储指令的代码尺寸减小方法
技术领域
本发明一般涉及一种代码尺寸减小方法。更具体地,本发明的实施例涉及一种通过使数据在存储器和寄存器之间移动的次数最小化而减小代码尺寸的方法。
背景技术
一般来说,中央处理单元(CPU)利用存储器中存储的数据而执行例如运算的规定处理。为此,CPU利用在与该CPU相连地寄存器中写入的数据,而不直接使用存储器中的数据。在CPU利用存储器中的数据之前,在寄存器中写入该存储器中的数据。在利用寄存器中写入的数据执行规定处理之后,CPU将从该处理获取的结果数据写入寄存器中。根据给定指令,将寄存器中的结果数据存储到存储器中。简而言之,为了使用存储器中的数据,CPU必须利用寄存器。存储器和寄存器被分别划分为多个区域。
分别为各区域指定地址。图1图示了存储器和寄存器的构造。寄存器被划分为16个区域,并且每一区域被指定一个地址。地址r0到r15被顺序指定到该寄存器的各区域。同样,与寄存器一样,存储器包括分别被指定了地址的划分的区域。因为存储器的尺寸可根据用户的设置而变化,所以划分的区域数目也不同。在图1中,一个存储器被划分为多个区域,而划分的区域被指定地址0x00、0x04、0x08、0x0c、…、等等。
下面说明如何将存储器中存储的数据移动到寄存器。根据指令,存储器的数据中存储在某一区域(地址)的数据被传送到寄存器的特定区域(地址)。下面,将描述术语“地址”表示给定地址所指定到的区域。例如,根据第一指令,存储器的地址0x00中的数据被传送和写入到寄存器的地址r0中。根据第二指令,存储器的地址0x04中的数据被传送和写入到寄存器的地址r1中。第三指令使得存储器的地址0x08中的数据被传送和写入到寄存器的地址r2中。总而言之,根据一条指令,将一个数据单元移动到寄存器中。
CPU利用寄存器中写入的数据而执行规定处理,并在该寄存器中重写与该处理对应的结果数据。寄存器中的结果数据根据单个指令而一个接一个地移动到存储器中。为了克服该复杂性,下面讨论利用一条指令传送多于一个数据单元的方案,这被称为多载入/存储(MLS)。
现在详细描述MLS。MLS使得能够利用一条指令将存储器中的至少两个数据单元传送到寄存器中。然而,MLS要求依次排列从存储器读取的数据的地址。作为具体的例子,假设从地址0x08中存储的数据中读取三条数据,则所读取数据的地址是0x08、0x0c、和0x10。应注意所读取的数据被写入在寄存器的连续地址中。例如,如果所读取的数据被写入在从r1开始的地址中,则存储所读取的数据的地址成为r1、r2、和r3。
考虑到以上背景,应满足上述需求来实现MLS。然而,很少从存储器中读取连续数据。分配到存储器和寄存器的地址的数据可通过运算而被重新排列以满足读取按顺序排列的数据的需求,但该方案导致太多运算来重新排列。

发明内容
提供本发明来解决传统配置中出现的上述和其他问题和缺点,并且本发明的一个方面提供了一种满足执行多载入/存储(MLS)的需求的方法。
本发明的另一方面提供了一种用于满足MLS需求以最小化数据被传送的次数,并减小代码尺寸的方法。
为了实现本发明的以上方面和/或特征,提供了一种用于向存储器中的地址分配数据的方法,该存储器包括分别向其指定了地址的至少两个区域,所述方法包括产生利用一条指令传送数据的至少一个块,并指示在所述至少一个块中包括该数据;将该块中的数据彼此链接,并对于该至少一个块计算链接两个数据的路径的数目;考虑到链接路径的数目,而利用最短路径链接数据;和利用最短路径按地址而分配数据。
本发明的其它方面和或优点部分将在下面的描述中阐述,部分将从描述中显而易见,或者可以通过对本发明的实践而得知。


通过结合附图对示范实施例的以下描述,本发明的这些和/或其他方面和优点将变得清楚和更易于理解,其中
图1是根据传统方法的指定了地址的存储器和寄存器的示意表示;
图2是根据本发明的实施例将数据分别分配到存储器和寄存器的地址的过程的流程图3是根据本发明实施例的能够利用一条指令而逐块传送的数据的示意表示;
图4A和图4B是根据本发明的实施例的能够利用一条指令传送并彼此链接的数据、以及给予每一路径的权重的示意表示;和
图5是根据本发明的实施例的沿最短路径链接的能够利用一条指令传送的数据的示意表示。
具体实施例方式
现在详细讨论本发明的实施例,附图中图解了本发明的例子,其中相同的附图标记始终表示相同的元件。下面参考附图描述实施例以说明本发明。
图2是所说明的根据本发明实施例的减小代码尺寸的处理的流程图。测量区域L和S(S200)。将在下面详细描述区域L和S。
在实施例中,对于链接要在存储器和寄存器之间传送的数据的路径,计算权重(S202)。将该权重表示为利用一条指令传送两个数据单元的次数。图1绘出了寄存器中存在16个区域,但是寄存器不必限于所述区域的数目。应理解寄存器中的区域的数目可根据用户设置而不同。
去除沿每一路径的权重中具有最小权重的路径(S204)。数据应沿着最小数目的路径进行链接,而不必要的链接数据的路径根据其权重而被去除,这将进行详细描述。
利用剩余路径将数据单元分别分配到各地址(S206)。由此,数据分配可实现MLS。参考图2提供以下描述。
假定中央处理单元(CPU)的规定处理执行根据程序1的以下运算。
程序1
…a=a+b-c+d;<!-- SIPO <DP n="3"> --><dp n="d3"/>if(a>b){qstring(a,b);f=f-d;}else{qstring(a,b);f=a+b;d=b+d;e=a+f;}f=d+a;d=f-d;…
程序1可与寄存器(寄存器地址)相关地表示为下面的程序2。
程序2
B1-0 r0=a;B1-1 r1=b;B1-2 r2=c;B1-3 r0=r0+r1;B1-4 r0=r0-r2;B1-5 r2=d;B1-6 r0=r0+r2;B1-7 a=r0;B1-8 goto L1 if r0≤r1;B2-0 r1=r2;B2-1 call qstring;B2-2 r0=f;B2-3 r1=d;B2-4 r0=r0-r1;B2-5 f=r0;B2-6 goto L2<!-- SIPO <DP n="4"> --><dp n="d4"/>B3-0 L1 call qstringB3-1 r0=a;B3-2 r2=b;B3-3 r3=d;B3-4 r1=r0+r2;B3-5 f=r1B3-6 r0=r0+r1;B3-7 r2=r2+r3;B3-8 e=r0;B3-9 d=r2;B4-0 L2 r0=d;B4-1 r2=a;B4-2 r1=r2+r0;B4-3 r2=r1-r0;B4-4 d+r2;B4-5 f=r1;
下面说明将数据写入寄存器以利用程序2执行以上运算的时间。
程序2包括B1到B4。首先对B1进行描述。为了运算而在寄存器中写入数据a的时间在B1-0和B1-2之间。如果在B1-2之内将数据a写入到寄存器中,则CPU可执行运算。为了运算而在寄存器中写入数据b的时间在B1-0和B1-2之间。为了运算而在寄存器中写入数据c的时间在B1-0和B1-3之间。为了运算而在寄存器中写入数据d的时间在B1-0和B1-5之间。因此,利用一条指令将数据a到数据d从存储器传送到寄存器的时间在B1-0和B1-2之间。在B1-7,将来自CPU的结果数据写入到寄存器中。
下面,说明B2。为了运算而在寄存器中写入数据f的时间在B2-0和B2-3之间。为了运算而在寄存器中写入数据d的时间也在B2-0和B2-3之间。因此,利用一条指令从存储器向寄存器传送数据f和数据d的时间在B2-0和B2-3之间。在B2-5,来自CPU的结果数据f被写入寄存器以便传送到存储器。
至于B3,为了运算而在寄存器中写入数据a的时间在B3-0和B3-3之间。为了运算而在寄存器中写入数据d的时间在B3-0和B3-3之间。为了运算而在寄存器中写入数据d的时间在B3-0和B3-6之间。利用一条指令从存储器向寄存器传送数据a、b和d的时间在B3-0和B3-3之间。
在B3-5,从CPU提供的结果数据f被写入寄存器以便传送到存储器。在B3-8,来自CPU的结果数据e被写入寄存器以便传送到存储器。在B3-9,从CPU提供的结果数据d被写入寄存器以便传送到存储器。所以,利用一条指令将结果数据f、e和d从寄存器传送到存储器的时间是B3-9。
至于B4,为了运算而在寄存器中写入数据d的时间在B4-0和B4-1之间。为了运算而在寄存器中写入数据a的时间也在B4-0和B4-1之间。利用一条指令将数据d和数据a从存储器传送到寄存器的时间在B4-0和B4-1之间。
已图示了每一块中利用一条指令传送数据的时间。下面,将说明对存储器或寄存器的地址的数据分配。如上所述,为了利用一条指令传送数据,存储数据的存储器或寄存器的地址应是连续的。
图3是图解根据本发明的实施例的要利用一条指令传送的数据、以及链接该数据的路径的示意表示。首先描述各决中将数据彼此链接的路径。
在(B1),利用一条指令传送数据a、b、c和d。在图3的(B1)中绘出了链接数据a、b、c和d的路径。另外,图示了从CPU提供的结果数据a。
在(B2),利用一条指令传送数据f和数据d。在图3的(B2)中绘出了链接数据f和数据d的路径。还图示了从CPU提供的结果数据f。
在(B3),利用一条指令传送数据a、b和d。在图3的(B3)中绘出了链接数据a、b和d的路径。另外,示出了链接从CPU提供的结果数据f、d和e的路径。
在(B4),利用一条指令传送数据a和数据d。图3的(B4)中绘出了链接数据a和数据d的路径。另外,示出了链接从CPU提供的数据a和b的路径。
图4A是图解参考图3的路径的权重的示意表示。下面,结果数据和数据被看作是相同的。
如图3的(B1)和(B3)所示的链接数据a和数据b的路径具有权重2。如图3的(B1)所示的链接数据a和数据c的路径具有权重1。如图3的(B1)、(B3)、(B4)所示的链接数据a和数据d的路径具有权重3。如图3的(B2)、(B3)、(B4)所示的链接数据d和数据f的路径具有权重3。以相同方式,获得给予图4A的各路径的权重。
图4B是图解利用最短路径链接所有数据单元的示意图。从图4A中擦去了(除图4B中所选路径之外的)其他路径。基于路径的权重而去除一些路径。也就是说,首先去除具有较小权重的路径。结果,留下具有较高使用频率的路径。在图4B中,去除数据a和数据c之间的路径、数据c和数据d之间的路径、数据b和数据d之间的路径、以及数据d和数据e之间的路径。
图5是图解参考图4B而彼此链接的图3的数据的示意图。
(B1)包括数据a和数据b之间的路径、数据b和数据c之间的路径、数据a和数据d之间的路径、以及数据a。(B2)包括数据f和数据d之间的路径、以及数据f。(B3)包括数据a和数据b之间的路径、以及数据a和数据d之间的路径。(B3)还包括数据f和数据d之间的路径、以及数据f和数据e之间的路径。(B4)包括数据a和数据d之间的路径、以及数据d和数据f之间的路径。
下表1示出了利用图5的路径而分配到存储器的各地址的数据。
表1
通过如表1所示分配数据到存储器的各地址,可利用一条指令而传送多个数据。具体地说,从存储器地址0x00到0x0c一次读取(B1)所需的数据a到数据d。从相关地址一次读取(B2)(B4)所需的数据。
根据本发明,可利用单个指令而有效传送多个数据。将数据依次分配到存储器的地址,以便利用一条指令传送数据。所以,指示数据传送的代码尺寸可减小,而存储该代码的存储器尺寸也可减小。
尽管示出并描述了本发明的几个实施例,但是本领域技术人员应该明白,在不脱离本发明的原理和精神的情况下,可以对这些实施例进行改变,而本发明的范围由权利要求及其等价物限定。
权利要求
1.一种用于向存储器中的地址分配数据的方法,该存储器包括分别向其分配了地址的至少两个区域,所述方法包括
产生利用一条指令传送数据的至少一个块,并指示在所述至少一个块中包括该数据;
将该块中的数据彼此链接,并对于该至少一个块计算链接两个数据的路径的数目;
考虑到链接路径的数目,而利用最短路径链接数据;和
利用最短路径按地址分配数据。
2.根据权利要求1的方法,其中利用具有较大数目路径的路径而将数据彼此链接。
3.根据权利要求1的方法,其中一块中的数据被依次分配特定地址。
4.根据权利要求3的方法,其中确定传送各块中的数据的时间,并在公共时间传送至少一块中的数据。
5.根据权利要求1的方法,其中从存储器提供的数据被传送到寄存器。
6.根据权利要求5的方法,其中从寄存器的特定地址开始依次写入来自存储器的数据。
7.一种方法,包括
识别至少两个数据单元之间的关系;
基于所识别的关系,使该至少两个数据单元关联到至少一个块中;以及
在处理单元和存储器之间传送所述至少一个块。
8.根据权利要求7的方法,其中所述关系包括路径值。
9.根据权利要求7的方法,其中所述处理单元包括中央处理单元,而所述存储器包括寄存器。
10.一种在处理单元和存储器之间的数据传送方法,该方法包括
计算要在处理单元和存储器之间移动的至少两个数据单元之间的路径的权重;以及
根据所计算的权重链接所述至少两个数据单元。
11.根据权利要求10的方法,其中根据所计算的权重而对所述至少两个数据单元的链接包括
沿具有最高权重的路径链接所述至少两个数据单元。
12.根据权利要求10的方法,其中所述处理单元包括中央处理单元,而所述存储器包括寄存器。
全文摘要
一种利用一条指令传送存储器中存储的多个数据的方法。在包括分别向其指定了地址的至少两个区域的存储器中,数据被依次分配到各地址,而所分配的数据利用一条指令进行传送。产生利用一条指令传送数据的至少一块,并指示在该至少一块中包括该数据。该块中的数据被彼此链接,并对于该至少一块而计算链接两个数据的路径的数目。考虑到链接路径的数目而利用最短路径链接数据,并且利用最短路径按地址分配数据。
文档编号G06F12/02GK1728110SQ20051008756
公开日2006年2月1日 申请日期2005年7月27日 优先权日2004年7月27日
发明者白润兴, 李濬瑞, 郑镇宇, 安珉旭, 崔峻植, 曹斗山 申请人:三星电子株式会社, 财团法人索尔大学校产学协力财团
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1