YX [^, V\ _`, c4 d5, ]Z 7W
fhato, iizuka, sakai, [email protected]
eg_a_a6 bahif8 3
1 ojqm
v ¥¦ªËô3"Ç Ëô3"Ì'
Ü4¸2¥¦ª<LÌ7ÇNÐÅ3É<LÊ
ÉÃŰÙ3ÑÁALUÉÈ˧Ç'ÉØ24
5§ÌYM.µB&ÆÌɰÁÓ2ïä
Ô¥¦ª<Lµ ©¤híË¢«
ÇÉٹǵAûºÚÙ3
¹ËuÜn¸Å2¥¦ª<LË ÜÞ×½
ñ.Ư٬ ¦4¨®µ!ºÚŰÙ3
¬ ¦4¨®ÆÌ£®$öË{3ÜEC
»24«[ ÉÈË¥¦ª[ Ü*dʬ
[ Êxº¾Ù¹ÇÆ2¥¦ª<LÜõÞ
½Ù37ëÆÌ2¹ÚÑÆ- ÆíÛÚŶÁ¬
¦4¨®Ü2- ,Æí±l_Ü!½Ù3
2
¹ÚÑÆË¬ ¦4¨®Ë l_̶·2
mÊXKºÚ2(1)«4 ¡4Ë ¦4¨®
(2)PartialRedundancyEliminationÜ/7Ç»Á
¦4¨®µ5ó½Ù3
ùi[1]Ì - Ê. ÑÚÙ «4 Ë ê 0Ü
f»2(2Ç»Á¥¦ªÜ«4 Ë&
1Ï(½ Ù(1)3«4 Êalias ´È± ´µX´
×ɰ¥¦ªÕ2- âÎp»µ¯Ù~îÌ¿
Ëùä Ê load/storeÜü » Å24 Ë ~ Ü ]
z½Ù(2)3
äi[2]ÌPartialRedundancyEliminationÜ¥¦
ªÊ9»Åí±ÔËÆ2«4 ê0µÉ°~î
ÆÔ}Éload/storeÜõv½Ù3
3 n9
¹ÚÑÆË|tÆÌ2 ¦4¨®Ë$Ü-
Êá»Å°Áµ2- ,Æ ¦4¨®Üí²ÍCall
By Reference Ü ¬ Ü C°Å í±¹ ǵ2 ÊÉ
Ù(3, 4, 5)3 Ñ Á2 4 « [ Ü C ° Á- ,
ÊÔ¬ÜC°Ù¹ÇµÆ¶Ù3¿¹Æ27ë
ÆÌ- ,¬ ¦4¨®Ü!½Ù37l_
3
\MemoryAccessEliminationbyInterproceduralRegisterPro-
motion"
NaoyaHattori,DaisukeIizuka,ShuichiSakai,HidehikoTanaka
UniversityofTokyo,GraduateScho olofEngineering,
r = *g r++
*g = r
r++
r = *g
*g = r
1: rÉ«4 Ë ¦4¨®
(gÌGlobal[ ˬ)
r = *g r++
*g = r
F( ) r++
*g = r F( ) r = *g r = *g
*g = r ì§Ùìí
¶8îÌË
2: $öTI)Ü.Ò ¦4¨®
(1)£® $ ö(2)4 [y (3) ¦4¨ ®w
,ñ . Ë3ÄË sF´×É Ù3"-Ê¿ ÚÀÚÊ Ä
°Åø=½Ù3
3.1 context sensitive l
¥¦ªÜ¬Ê[+ƶÙw,
( ¦4 ¨®w,)ÜÐÙ ÁÓÊ2contextsensi-
tive É £ ® $ ö Ü í ±3 <L µ ½ Ù
¬µÛ´ÚÍ2 ¦4¨®µ2ÉÁÓ2ñ
¦4¨®w,ËoÌ2©©ª4«Ë$ö
T É - â Î p » Õ2 # 5 - x µ¡ 8 É store Æ ¯
Ù3(7ë Ë Ì2 > ´¸ VX µ ¦4¨ ® w,
Üe»Å°Ù)
3.2 ¥§
w,Ë¥¦ªÌ¬Ê[+½
Ù3Á»ñ.ùǼ{3Ü]z½ÙÁÓ2w,Ë
çÊload2w,ËpçÊstoreÜü½Ù3(w,µ
¥ ¦ ª[ Ë scop e o Ü . Ò~ î Ê Ì2store Ì T
D Ư Ù3)Ñ Á2w , Æ ¯ÃÅ Ô# 5- xµ ¡ 8É
load ËùÊÌstoreµPDÊÉÙ3
Ì2ñË[ BÜ- ,Æ!²ÙÁÓÊ+ 5\
Ü1 ½Ù PD µ¯Ù3 Á »2callee1 "- Æ
¦4¨®9{ Ë load µÉ° ~îÌ+ Ü 1½ÙP
DÌ É ·2callee " - Æ9 { store µ ɰ ~ î Ì \
Ü1 ½ ÙP D ÌÉ °3364, 465 ÆÌ ¿ ÚÀ Ú
callee µ load/storeÜ .Ý Æ ° ÙË Æ2 + 5 \ Ü
1»Å°Ù(TDÊÉÃÁ+ ËõvÔíÃŰÙ)3
3.3 ¦n¬:
3.1,3.2 ÑÆËsFÆ ¦4¨ ®Üí±¹ÇÌ2
Ưٵ2@µ¼Ù¹Çµ¯Ù3ñw,Æ
¦4¨®Üí±Ç2ZË«4 ËÊ<LÜ
»Åµ-»Å»Ñ±2µ¯Ù(6ð)3
ÑÁ2;%9Ê- Ë+ 5\Üÿ1º¾Å»Ñ±2
Ô¯Ù3¿ËÁÓ2w,ËoÜ.Ò«4 Õ-
ÆÌ¿ËI)Ü ¦4¨®w,Ê.Òж´Ü2
¦4 ¨ ® ù ä Ë [ . ´ × ½ Ù(6
,µñÉw,ƯÙ)3
t=*p s=*q
*q=t
*p=s ret void F(int* p, int* q) int a,b
*(&a)=…
*(&b)=…
F(&a, &b)
…=*(&a)
…=*(&b)
3: step0:
¦4¨®ù
t=u s=*q
*q=t u=s ret (u) (int) F(int u, int* q) int a,b
x=…
*(&b)=…
(x)=F(x, &b)
…=x
…=*(&b)
4: step1:
pÜpromotion»Á{3
t=u s=v v=t u=s ret (u, v) (int, int) F(int u, int v) int a,b
x=…
y=…
(x, y)=F(x, y)
…=x
…=y
5: step2:
qÜpromotion»Á{3
B A
D C B
A
D C
ä: o->
6: w,ñ.
4 ¢£;
7ëgQd Æ2|1«ª¤hþÌ)G»Å°
ɰ3»´»AOS0Ç»Å2ñw,Æ ¦4¨
®ÜíÃÁ~îË Ë[.ÜÐÁ3
hþ Ì U b | t t ËC ® ©[3]ËRIC ,
4Ê9»ÅíÃŰÙ3¹Ë,4̬
;ᦫÜòC»Å³Ø2+ 5\Ë Ôáµ
promotion½ 11,059,791,308 4,445,175,523
»¼Âpromotionµ±¾´ -2,578,523,330 -13,145,816
»¼ºpromotionµ±¾´ -3,204,519,361 -14,100
R1: compress95Ë ¦4¨®{3
[ Ç4«[ úŵ¥¦ªÊ´ÚŰÙ3¹
Ë4Ê9»2- 2- ,¿ÚÀÚË ¦4¨
®ÜC»Á3
J ©¤Ç»ÅÌ SPECint95Ëcompress95
ÜaC»Á3{3ÜR1Êe½3
compress95 Ì 4 « [ Ü C ° Á z ` µ 8 °
Á Ó2load Ê -» ÅÌ - , ¦4 ¨ ®Ë æ3
µßÚŰÙ3*^2storeË µÿ²Å»ÑÃÁËÌ2
ñw,Æ ¦4¨®ÜíÃųØ2Z«4 Ê
Ü1»Å»ÑÃÁÁÓÆ¯Ù3
5 pkqk«©n<
7ëÆÌ2¥¦ªÜõÞ½Ùñ.Ư٬
¦4¨®Üy#»2¹ÚÜ- ,Ê'½
Ùl_ÊİÅqÐÁ3ÑÁ2¹Ël_ÜC°Á
õÞHÜ}÷ÔÙÁÓ2compress95Ê-»ÅAOS
0ÜíÃÁ3
ïäÌ2«ª¤Ë:hþVXÜýsÊhþ»2
!l_ÊÖÙ(É õÞÜS0½Ù¹Çµ
PDƯÙ3ÑÁ2ß%ÆÌ¬Ì;áÊa²Ù
ǰ±/ܰŰٵ2WF¬ ÊáÜ1
²ÁdËS0Ôí±PDµ¯ÙÇì²Å°Ù3
ÅÄ
7|tÜÓÙʯÁØ2Ub|ttËw éc2
?6è2cÊÌ®©rÎ0ÉåuàܶÑ
»Á3·*j»Ñ½3
ꤨ
[1] A.V.S. Sastryand Roy D.C.Ju. A New Algorithmfor
Scalar Register PromotionBased on SSA From. PLDI,
pp.15{25,1998.
[2] Raymond Lo ¿. A New Algorithm for Scalar Register
PromotionBasedonSSAFrom. PLDI,pp.26{37,1998.
[3] ÆÇÀ¸¿. CÊ ÏËÉͰ® ¯²ÎÐÌ·È ±ÑÁ. HPC
77,pp.65{70,1999.