專利名稱:通過多載入/存儲(chǔ)指令的代碼尺寸減小方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及一種代碼尺寸減小方法。更具體地,本發(fā)明的實(shí)施例涉及一種通過使數(shù)據(jù)在存儲(chǔ)器和寄存器之間移動(dòng)的次數(shù)最小化而減小代碼尺寸的方法。
背景技術(shù):
一般來說,中央處理單元(CPU)利用存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)而執(zhí)行例如運(yùn)算的規(guī)定處理。為此,CPU利用在與該CPU相連地寄存器中寫入的數(shù)據(jù),而不直接使用存儲(chǔ)器中的數(shù)據(jù)。在CPU利用存儲(chǔ)器中的數(shù)據(jù)之前,在寄存器中寫入該存儲(chǔ)器中的數(shù)據(jù)。在利用寄存器中寫入的數(shù)據(jù)執(zhí)行規(guī)定處理之后,CPU將從該處理獲取的結(jié)果數(shù)據(jù)寫入寄存器中。根據(jù)給定指令,將寄存器中的結(jié)果數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器中。簡(jiǎn)而言之,為了使用存儲(chǔ)器中的數(shù)據(jù),CPU必須利用寄存器。存儲(chǔ)器和寄存器被分別劃分為多個(gè)區(qū)域。
分別為各區(qū)域指定地址。圖1圖示了存儲(chǔ)器和寄存器的構(gòu)造。寄存器被劃分為16個(gè)區(qū)域,并且每一區(qū)域被指定一個(gè)地址。地址r0到r15被順序指定到該寄存器的各區(qū)域。同樣,與寄存器一樣,存儲(chǔ)器包括分別被指定了地址的劃分的區(qū)域。因?yàn)榇鎯?chǔ)器的尺寸可根據(jù)用戶的設(shè)置而變化,所以劃分的區(qū)域數(shù)目也不同。在圖1中,一個(gè)存儲(chǔ)器被劃分為多個(gè)區(qū)域,而劃分的區(qū)域被指定地址0x00、0x04、0x08、0x0c、…、等等。
下面說明如何將存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)移動(dòng)到寄存器。根據(jù)指令,存儲(chǔ)器的數(shù)據(jù)中存儲(chǔ)在某一區(qū)域(地址)的數(shù)據(jù)被傳送到寄存器的特定區(qū)域(地址)。下面,將描述術(shù)語“地址”表示給定地址所指定到的區(qū)域。例如,根據(jù)第一指令,存儲(chǔ)器的地址0x00中的數(shù)據(jù)被傳送和寫入到寄存器的地址r0中。根據(jù)第二指令,存儲(chǔ)器的地址0x04中的數(shù)據(jù)被傳送和寫入到寄存器的地址r1中。第三指令使得存儲(chǔ)器的地址0x08中的數(shù)據(jù)被傳送和寫入到寄存器的地址r2中??偠灾?,根據(jù)一條指令,將一個(gè)數(shù)據(jù)單元移動(dòng)到寄存器中。
CPU利用寄存器中寫入的數(shù)據(jù)而執(zhí)行規(guī)定處理,并在該寄存器中重寫與該處理對(duì)應(yīng)的結(jié)果數(shù)據(jù)。寄存器中的結(jié)果數(shù)據(jù)根據(jù)單個(gè)指令而一個(gè)接一個(gè)地移動(dòng)到存儲(chǔ)器中。為了克服該復(fù)雜性,下面討論利用一條指令傳送多于一個(gè)數(shù)據(jù)單元的方案,這被稱為多載入/存儲(chǔ)(MLS)。
現(xiàn)在詳細(xì)描述MLS。MLS使得能夠利用一條指令將存儲(chǔ)器中的至少兩個(gè)數(shù)據(jù)單元傳送到寄存器中。然而,MLS要求依次排列從存儲(chǔ)器讀取的數(shù)據(jù)的地址。作為具體的例子,假設(shè)從地址0x08中存儲(chǔ)的數(shù)據(jù)中讀取三條數(shù)據(jù),則所讀取數(shù)據(jù)的地址是0x08、0x0c、和0x10。應(yīng)注意所讀取的數(shù)據(jù)被寫入在寄存器的連續(xù)地址中。例如,如果所讀取的數(shù)據(jù)被寫入在從r1開始的地址中,則存儲(chǔ)所讀取的數(shù)據(jù)的地址成為r1、r2、和r3。
考慮到以上背景,應(yīng)滿足上述需求來實(shí)現(xiàn)MLS。然而,很少?gòu)拇鎯?chǔ)器中讀取連續(xù)數(shù)據(jù)。分配到存儲(chǔ)器和寄存器的地址的數(shù)據(jù)可通過運(yùn)算而被重新排列以滿足讀取按順序排列的數(shù)據(jù)的需求,但該方案導(dǎo)致太多運(yùn)算來重新排列。
發(fā)明內(nèi)容
提供本發(fā)明來解決傳統(tǒng)配置中出現(xiàn)的上述和其他問題和缺點(diǎn),并且本發(fā)明的一個(gè)方面提供了一種滿足執(zhí)行多載入/存儲(chǔ)(MLS)的需求的方法。
本發(fā)明的另一方面提供了一種用于滿足MLS需求以最小化數(shù)據(jù)被傳送的次數(shù),并減小代碼尺寸的方法。
為了實(shí)現(xiàn)本發(fā)明的以上方面和/或特征,提供了一種用于向存儲(chǔ)器中的地址分配數(shù)據(jù)的方法,該存儲(chǔ)器包括分別向其指定了地址的至少兩個(gè)區(qū)域,所述方法包括產(chǎn)生利用一條指令傳送數(shù)據(jù)的至少一個(gè)塊,并指示在所述至少一個(gè)塊中包括該數(shù)據(jù);將該塊中的數(shù)據(jù)彼此鏈接,并對(duì)于該至少一個(gè)塊計(jì)算鏈接兩個(gè)數(shù)據(jù)的路徑的數(shù)目;考慮到鏈接路徑的數(shù)目,而利用最短路徑鏈接數(shù)據(jù);和利用最短路徑按地址而分配數(shù)據(jù)。
本發(fā)明的其它方面和或優(yōu)點(diǎn)部分將在下面的描述中闡述,部分將從描述中顯而易見,或者可以通過對(duì)本發(fā)明的實(shí)踐而得知。
通過結(jié)合附圖對(duì)示范實(shí)施例的以下描述,本發(fā)明的這些和/或其他方面和優(yōu)點(diǎn)將變得清楚和更易于理解,其中
圖1是根據(jù)傳統(tǒng)方法的指定了地址的存儲(chǔ)器和寄存器的示意表示;
圖2是根據(jù)本發(fā)明的實(shí)施例將數(shù)據(jù)分別分配到存儲(chǔ)器和寄存器的地址的過程的流程圖3是根據(jù)本發(fā)明實(shí)施例的能夠利用一條指令而逐塊傳送的數(shù)據(jù)的示意表示;
圖4A和圖4B是根據(jù)本發(fā)明的實(shí)施例的能夠利用一條指令傳送并彼此鏈接的數(shù)據(jù)、以及給予每一路徑的權(quán)重的示意表示;和
圖5是根據(jù)本發(fā)明的實(shí)施例的沿最短路徑鏈接的能夠利用一條指令傳送的數(shù)據(jù)的示意表示。
具體實(shí)施例方式
現(xiàn)在詳細(xì)討論本發(fā)明的實(shí)施例,附圖中圖解了本發(fā)明的例子,其中相同的附圖標(biāo)記始終表示相同的元件。下面參考附圖描述實(shí)施例以說明本發(fā)明。
圖2是所說明的根據(jù)本發(fā)明實(shí)施例的減小代碼尺寸的處理的流程圖。測(cè)量區(qū)域L和S(S200)。將在下面詳細(xì)描述區(qū)域L和S。
在實(shí)施例中,對(duì)于鏈接要在存儲(chǔ)器和寄存器之間傳送的數(shù)據(jù)的路徑,計(jì)算權(quán)重(S202)。將該權(quán)重表示為利用一條指令傳送兩個(gè)數(shù)據(jù)單元的次數(shù)。圖1繪出了寄存器中存在16個(gè)區(qū)域,但是寄存器不必限于所述區(qū)域的數(shù)目。應(yīng)理解寄存器中的區(qū)域的數(shù)目可根據(jù)用戶設(shè)置而不同。
去除沿每一路徑的權(quán)重中具有最小權(quán)重的路徑(S204)。數(shù)據(jù)應(yīng)沿著最小數(shù)目的路徑進(jìn)行鏈接,而不必要的鏈接數(shù)據(jù)的路徑根據(jù)其權(quán)重而被去除,這將進(jìn)行詳細(xì)描述。
利用剩余路徑將數(shù)據(jù)單元分別分配到各地址(S206)。由此,數(shù)據(jù)分配可實(shí)現(xiàn)MLS。參考圖2提供以下描述。
假定中央處理單元(CPU)的規(guī)定處理執(zhí)行根據(jù)程序1的以下運(yùn)算。
程序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可與寄存器(寄存器地址)相關(guān)地表示為下面的程序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;
下面說明將數(shù)據(jù)寫入寄存器以利用程序2執(zhí)行以上運(yùn)算的時(shí)間。
程序2包括B1到B4。首先對(duì)B1進(jìn)行描述。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)a的時(shí)間在B1-0和B1-2之間。如果在B1-2之內(nèi)將數(shù)據(jù)a寫入到寄存器中,則CPU可執(zhí)行運(yùn)算。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)b的時(shí)間在B1-0和B1-2之間。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)c的時(shí)間在B1-0和B1-3之間。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)d的時(shí)間在B1-0和B1-5之間。因此,利用一條指令將數(shù)據(jù)a到數(shù)據(jù)d從存儲(chǔ)器傳送到寄存器的時(shí)間在B1-0和B1-2之間。在B1-7,將來自CPU的結(jié)果數(shù)據(jù)寫入到寄存器中。
下面,說明B2。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)f的時(shí)間在B2-0和B2-3之間。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)d的時(shí)間也在B2-0和B2-3之間。因此,利用一條指令從存儲(chǔ)器向寄存器傳送數(shù)據(jù)f和數(shù)據(jù)d的時(shí)間在B2-0和B2-3之間。在B2-5,來自CPU的結(jié)果數(shù)據(jù)f被寫入寄存器以便傳送到存儲(chǔ)器。
至于B3,為了運(yùn)算而在寄存器中寫入數(shù)據(jù)a的時(shí)間在B3-0和B3-3之間。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)d的時(shí)間在B3-0和B3-3之間。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)d的時(shí)間在B3-0和B3-6之間。利用一條指令從存儲(chǔ)器向寄存器傳送數(shù)據(jù)a、b和d的時(shí)間在B3-0和B3-3之間。
在B3-5,從CPU提供的結(jié)果數(shù)據(jù)f被寫入寄存器以便傳送到存儲(chǔ)器。在B3-8,來自CPU的結(jié)果數(shù)據(jù)e被寫入寄存器以便傳送到存儲(chǔ)器。在B3-9,從CPU提供的結(jié)果數(shù)據(jù)d被寫入寄存器以便傳送到存儲(chǔ)器。所以,利用一條指令將結(jié)果數(shù)據(jù)f、e和d從寄存器傳送到存儲(chǔ)器的時(shí)間是B3-9。
至于B4,為了運(yùn)算而在寄存器中寫入數(shù)據(jù)d的時(shí)間在B4-0和B4-1之間。為了運(yùn)算而在寄存器中寫入數(shù)據(jù)a的時(shí)間也在B4-0和B4-1之間。利用一條指令將數(shù)據(jù)d和數(shù)據(jù)a從存儲(chǔ)器傳送到寄存器的時(shí)間在B4-0和B4-1之間。
已圖示了每一塊中利用一條指令傳送數(shù)據(jù)的時(shí)間。下面,將說明對(duì)存儲(chǔ)器或寄存器的地址的數(shù)據(jù)分配。如上所述,為了利用一條指令傳送數(shù)據(jù),存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器或寄存器的地址應(yīng)是連續(xù)的。
圖3是圖解根據(jù)本發(fā)明的實(shí)施例的要利用一條指令傳送的數(shù)據(jù)、以及鏈接該數(shù)據(jù)的路徑的示意表示。首先描述各決中將數(shù)據(jù)彼此鏈接的路徑。
在(B1),利用一條指令傳送數(shù)據(jù)a、b、c和d。在圖3的(B1)中繪出了鏈接數(shù)據(jù)a、b、c和d的路徑。另外,圖示了從CPU提供的結(jié)果數(shù)據(jù)a。
在(B2),利用一條指令傳送數(shù)據(jù)f和數(shù)據(jù)d。在圖3的(B2)中繪出了鏈接數(shù)據(jù)f和數(shù)據(jù)d的路徑。還圖示了從CPU提供的結(jié)果數(shù)據(jù)f。
在(B3),利用一條指令傳送數(shù)據(jù)a、b和d。在圖3的(B3)中繪出了鏈接數(shù)據(jù)a、b和d的路徑。另外,示出了鏈接從CPU提供的結(jié)果數(shù)據(jù)f、d和e的路徑。
在(B4),利用一條指令傳送數(shù)據(jù)a和數(shù)據(jù)d。圖3的(B4)中繪出了鏈接數(shù)據(jù)a和數(shù)據(jù)d的路徑。另外,示出了鏈接從CPU提供的數(shù)據(jù)a和b的路徑。
圖4A是圖解參考圖3的路徑的權(quán)重的示意表示。下面,結(jié)果數(shù)據(jù)和數(shù)據(jù)被看作是相同的。
如圖3的(B1)和(B3)所示的鏈接數(shù)據(jù)a和數(shù)據(jù)b的路徑具有權(quán)重2。如圖3的(B1)所示的鏈接數(shù)據(jù)a和數(shù)據(jù)c的路徑具有權(quán)重1。如圖3的(B1)、(B3)、(B4)所示的鏈接數(shù)據(jù)a和數(shù)據(jù)d的路徑具有權(quán)重3。如圖3的(B2)、(B3)、(B4)所示的鏈接數(shù)據(jù)d和數(shù)據(jù)f的路徑具有權(quán)重3。以相同方式,獲得給予圖4A的各路徑的權(quán)重。
圖4B是圖解利用最短路徑鏈接所有數(shù)據(jù)單元的示意圖。從圖4A中擦去了(除圖4B中所選路徑之外的)其他路徑?;诼窂降臋?quán)重而去除一些路徑。也就是說,首先去除具有較小權(quán)重的路徑。結(jié)果,留下具有較高使用頻率的路徑。在圖4B中,去除數(shù)據(jù)a和數(shù)據(jù)c之間的路徑、數(shù)據(jù)c和數(shù)據(jù)d之間的路徑、數(shù)據(jù)b和數(shù)據(jù)d之間的路徑、以及數(shù)據(jù)d和數(shù)據(jù)e之間的路徑。
圖5是圖解參考圖4B而彼此鏈接的圖3的數(shù)據(jù)的示意圖。
(B1)包括數(shù)據(jù)a和數(shù)據(jù)b之間的路徑、數(shù)據(jù)b和數(shù)據(jù)c之間的路徑、數(shù)據(jù)a和數(shù)據(jù)d之間的路徑、以及數(shù)據(jù)a。(B2)包括數(shù)據(jù)f和數(shù)據(jù)d之間的路徑、以及數(shù)據(jù)f。(B3)包括數(shù)據(jù)a和數(shù)據(jù)b之間的路徑、以及數(shù)據(jù)a和數(shù)據(jù)d之間的路徑。(B3)還包括數(shù)據(jù)f和數(shù)據(jù)d之間的路徑、以及數(shù)據(jù)f和數(shù)據(jù)e之間的路徑。(B4)包括數(shù)據(jù)a和數(shù)據(jù)d之間的路徑、以及數(shù)據(jù)d和數(shù)據(jù)f之間的路徑。
下表1示出了利用圖5的路徑而分配到存儲(chǔ)器的各地址的數(shù)據(jù)。
表1
通過如表1所示分配數(shù)據(jù)到存儲(chǔ)器的各地址,可利用一條指令而傳送多個(gè)數(shù)據(jù)。具體地說,從存儲(chǔ)器地址0x00到0x0c一次讀取(B1)所需的數(shù)據(jù)a到數(shù)據(jù)d。從相關(guān)地址一次讀取(B2)(B4)所需的數(shù)據(jù)。
根據(jù)本發(fā)明,可利用單個(gè)指令而有效傳送多個(gè)數(shù)據(jù)。將數(shù)據(jù)依次分配到存儲(chǔ)器的地址,以便利用一條指令傳送數(shù)據(jù)。所以,指示數(shù)據(jù)傳送的代碼尺寸可減小,而存儲(chǔ)該代碼的存儲(chǔ)器尺寸也可減小。
盡管示出并描述了本發(fā)明的幾個(gè)實(shí)施例,但是本領(lǐng)域技術(shù)人員應(yīng)該明白,在不脫離本發(fā)明的原理和精神的情況下,可以對(duì)這些實(shí)施例進(jìn)行改變,而本發(fā)明的范圍由權(quán)利要求及其等價(jià)物限定。
權(quán)利要求
1.一種用于向存儲(chǔ)器中的地址分配數(shù)據(jù)的方法,該存儲(chǔ)器包括分別向其分配了地址的至少兩個(gè)區(qū)域,所述方法包括
產(chǎn)生利用一條指令傳送數(shù)據(jù)的至少一個(gè)塊,并指示在所述至少一個(gè)塊中包括該數(shù)據(jù);
將該塊中的數(shù)據(jù)彼此鏈接,并對(duì)于該至少一個(gè)塊計(jì)算鏈接兩個(gè)數(shù)據(jù)的路徑的數(shù)目;
考慮到鏈接路徑的數(shù)目,而利用最短路徑鏈接數(shù)據(jù);和
利用最短路徑按地址分配數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的方法,其中利用具有較大數(shù)目路徑的路徑而將數(shù)據(jù)彼此鏈接。
3.根據(jù)權(quán)利要求1的方法,其中一塊中的數(shù)據(jù)被依次分配特定地址。
4.根據(jù)權(quán)利要求3的方法,其中確定傳送各塊中的數(shù)據(jù)的時(shí)間,并在公共時(shí)間傳送至少一塊中的數(shù)據(jù)。
5.根據(jù)權(quán)利要求1的方法,其中從存儲(chǔ)器提供的數(shù)據(jù)被傳送到寄存器。
6.根據(jù)權(quán)利要求5的方法,其中從寄存器的特定地址開始依次寫入來自存儲(chǔ)器的數(shù)據(jù)。
7.一種方法,包括
識(shí)別至少兩個(gè)數(shù)據(jù)單元之間的關(guān)系;
基于所識(shí)別的關(guān)系,使該至少兩個(gè)數(shù)據(jù)單元關(guān)聯(lián)到至少一個(gè)塊中;以及
在處理單元和存儲(chǔ)器之間傳送所述至少一個(gè)塊。
8.根據(jù)權(quán)利要求7的方法,其中所述關(guān)系包括路徑值。
9.根據(jù)權(quán)利要求7的方法,其中所述處理單元包括中央處理單元,而所述存儲(chǔ)器包括寄存器。
10.一種在處理單元和存儲(chǔ)器之間的數(shù)據(jù)傳送方法,該方法包括
計(jì)算要在處理單元和存儲(chǔ)器之間移動(dòng)的至少兩個(gè)數(shù)據(jù)單元之間的路徑的權(quán)重;以及
根據(jù)所計(jì)算的權(quán)重鏈接所述至少兩個(gè)數(shù)據(jù)單元。
11.根據(jù)權(quán)利要求10的方法,其中根據(jù)所計(jì)算的權(quán)重而對(duì)所述至少兩個(gè)數(shù)據(jù)單元的鏈接包括
沿具有最高權(quán)重的路徑鏈接所述至少兩個(gè)數(shù)據(jù)單元。
12.根據(jù)權(quán)利要求10的方法,其中所述處理單元包括中央處理單元,而所述存儲(chǔ)器包括寄存器。
全文摘要
一種利用一條指令傳送存儲(chǔ)器中存儲(chǔ)的多個(gè)數(shù)據(jù)的方法。在包括分別向其指定了地址的至少兩個(gè)區(qū)域的存儲(chǔ)器中,數(shù)據(jù)被依次分配到各地址,而所分配的數(shù)據(jù)利用一條指令進(jìn)行傳送。產(chǎn)生利用一條指令傳送數(shù)據(jù)的至少一塊,并指示在該至少一塊中包括該數(shù)據(jù)。該塊中的數(shù)據(jù)被彼此鏈接,并對(duì)于該至少一塊而計(jì)算鏈接兩個(gè)數(shù)據(jù)的路徑的數(shù)目。考慮到鏈接路徑的數(shù)目而利用最短路徑鏈接數(shù)據(jù),并且利用最短路徑按地址分配數(shù)據(jù)。
文檔編號(hào)G06F12/02GK1728110SQ20051008756
公開日2006年2月1日 申請(qǐng)日期2005年7月27日 優(yōu)先權(quán)日2004年7月27日
發(fā)明者白潤(rùn)興, 李濬瑞, 鄭鎮(zhèn)宇, 安珉旭, 崔峻植, 曹斗山 申請(qǐng)人:三星電子株式會(huì)社, 財(cái)團(tuán)法人索爾大學(xué)校產(chǎn)學(xué)協(xié)力財(cái)團(tuán)