You are on page 1of 12

Tm hiu v tp lnh trong my tnh ARC ? Phn tch 1 vi v d c th ? 1. My tnh ARC l g ?

(A RISC Computer) hiu r hn cc ni dung ny, chng ta s nghin cu mt m hnh cu trc da trn mt kin trc vi x l m rng c thng mi ha SPARC (Scalable Processoer Architecture) c pht trin bi Sun Microsystems vo nhng nm 1980. SPARC nhanh chng tr thnh kin trc ph bin t khi c gii thiu bi y l mt h thng m. Kin trc y ca SPARC c hon thin vo khong nm 1992. Mt thnh phn ca SPARC l my tnh da trn cng ngh RISC, my tnh ARC. ARC l chc nng quan trng nht ca kin trc SPARC nhng chc nng ny li khng c trong cc vi x l ngy nay My tnh ARC l my tnh 32 bit c b nh nh a ch theo byte, tc l my x l cc d liu c rng 32 bit, nhng d liu c lu tr l dng byte. ng thi, rng ca tn hiu a ch l 32 bit c nh t thp n cao.

2. Tp lnh ca ARC Trc khi tm hiu v tp lnh ca ARC, chng ta s xem xt k hn v cc chc nng ca CPU My tnh ARC c 32 thanh ghi 32 bit a mc ch, cng vi PC v IR Thanh ghi trng thi vi x l PSR (Processor Status Register) cha cc thng tin v trng thi hot ng ca CPU, bao gm c cc thng tin v kt qu ca php ton trong ALU. Mi mt lnh c lu tr trn 1 word (32 bit) ARC l my tnh loi load-store tc l ti 1 thi im, n ch cho php np mt gi tr vo 1 thanh ghi hoc lu 1 gi tr vo mt a ch trn b nh. Cc ton hng trc v sau khi c x l bi ALU u c lu tr trn cc thanh ghi. Kin trc SPARC c khong 200 lnh, tp lnh ca ARC cng da trn nn lnh .

Mt vi lnh c bn ca ARC
Tng tc b nh
Ld Np ni dung thanh ghi t b nh St Ct ni dung thanh ghi vo b nh

Php ton logic


Sethi Set 22 bit cao ca mt thanh ghi Andcc Thc hin php AND tng bit orcc Thc hin php OR tng bit Orncc Thc hin php NOR tng bit Srl Dch sang phi

Php ton s hc
Addcc Cng

iu khin lung chng trnh


Call Gi chng trnh con Jmpl Nhy v lin kt tr v t chng trnh con Be R nhnh nu bng Bneg R nhnh nu nh hn 0 Bcs R nhnh nu c c carry Bvs R nhnh nu trn d liu Ba Lun lun r nhnh

Nhm lnh dch chuyn d liu bao gm 2 lnh ld v st l 2 lnh duy nht cho php truy cp vo b nh h thng. Lnh sethi s nh li gi tr ca 22 bit cao trong 1 thanh ghi theo mt gi tr nh trc. Nhm lnh ton hc v lnh logic gm cc lnh andcc, orcc, orncc c s dng thc hin cc php ton AND, OR, NOR theo tng bit ca cc ton hng. Mt trong 2 ton hng bt buc phi l 1 thanh ghi. Kt qu php ton s c t vo 1 thanh ghi. Lnh dch chuyn d liu srl c s dng dch phi ni dung ca mt thanh ghi ng thi s thm chui cc con s 0 vo nhng bit tn cng pha bn tri. Lnh sra (khng c m t trong hnh 4.7) s dch ni dung cc bit trong thanh ghi sang bn phi, a ni dung cc bit LSB quay tr v v tr tng ng thnh cc bit MSB. Nhm lnh iu khin bao gm 2 lnh ch yu l lnh call v jmpl. y l cp lnh c s dng gi chng trnh con v nhy t chng trnh con tr v chng trnh chnh. Nhng lnh nh be, bneg, bcs, bvs v ba cn

c tn l nhm lnh r nhnh. Nhng lnh ny s kim tra ni dung ca thanh ghi trng thi PSR v r chng trnh sang cc nhnh tng ng. iu ny c tc dng ging nh cc lnh goto, if-then-else hay do-while trong cc ngn ng bc cao

3. C php lnh ca ARC Mi mt ngn ng hp ng u c c php ring ca n. Chng ta s tm hiu c php ca hp ng SPARC, th hin trn hnh 1

Hnh 1: C php ca ARC C php bao gm 4 thnh phn: trng nhn lnh c th khng c, trng tn lnh, cc ton hng ngun v ton hng ch nu c, v cui cng l trng li gii thch cho lnh . Trng gii thch c ngha ch yu l gip ngi lp trnh ghi nh cc lnh vit nn n c th c hoc khng. Nhn trong c php ca ARC c th l mt chui k t bt k, tuy nhin n phi tha mn l khng cha cc k t iu khin, k t c bit, hay trng vi mt lnh no Cc thanh ghi ton hng ngun v ch trong ARC bao gm 32 thanh ghi c k hiu t r0 n r31. 32 thanh ghi ny c rng d liu l 32 bit trong

Hnh 2: Cc thanh ghi trong ARC m ngi s dng c th truy cp thanh ghi s 0 %r0 lun c gi tr l 0 v gi tr ny lun lun khng i. Thanh ghi %r14 v %r15 c thm chc nng l thanh ghi con tr stack v thanh ghi lin kt. Ngoi 32 thanh ghi ny, trong ARC cn c thm cc thanh ghi PC l thanh ghi m chng trnh, thanh ghi trng thi PSR. Cc ton hng trong c php lnh ARC c phn cch nhau bi du phy. Ton hng ch lun l ton hng ng tn cng pha bn tay phi.

4. Cu trc ngn ng my ca ARC Cu trc ngn ng my nh ngha ngha ca tng bit trong cu lnh. Tc l n nh ngha tng trng trong cu lnh, ln ca tng trng d liu v tc ng ca tng bit ln h thng. C tt c 5 cu trc trong ARC l SETHI, branch, call, arithmetic v memory

Hnh 3: Cu trc lnh trong ARC Mi mt lnh c biu din bng mt tn ring v mt m lnh (Opcode). Mi mt cu trc lnh c th c nhiu hn mt trng m lnh vi mc ch l th hin r rng hn ni dung, nhim v, v hot ng ca lnh. C th nh sau 2 bit tn cng pha bn tri ca mi mt lnh l trng op (opcode) c s dng nhn din cu trc lnh. Cu trc SETHI v Branch c cng gi tr l 00 trong trng ny. Cu trc SETHI v Branch

c phn bit vi nhau trng op2 trong gi tr 010 tng ng vi Branch v 100 tng ng vi cu trc SETHI. Ngoi ra bit th 29 trong cu trc Branch lun lun l 0. Trong khi , 5 bit rd trong cu trc SETHI cha thanh ghi ch ca lnh. Trng cond trong cu trc Branch nhn din loi lnh r nhnh, da trn m iu kin nh z, n, v, v c trong thanh ghi trng thi PSR. i vi nhng lnh c biu tng tn cng c 2 k t cc, nu kt qu ca php ton l s m th bit n s c gi tr l 1. Tng t, bit z = 1 nu kt qu bng 0 v v=1 nu trn. Nhng lnh c biu tng kt thc khng bng 2 k t cc s khng c hiu ng r nhnh. Trng imm22 v disp22 lu tr 22 bit c s dng nh l ton hng i vi cu trc SETHI v lm c s tnh ton cho lnh r nhnh trong cu trc Branch Cu trc CALL ch bao gm 2 trng duy nht l trng op c ni dung 01 v trng disp30 c s dng l ni cha a ch ca chng trnh m n gi ti. Cu trc Arithmetic c op = 10 v cu trc Memmory c op = 11 cng c trng rd nhn dng thanh ghi ngun vi lnh st, hoc nhn dng thanh ghi ch trong cc trng hp lnh cn li. Rs1 v rs2 l cc thanh ghi ngun s 1 v 2. Trng op3 c s dng phn bit cc lnh (c trnh by nh hnh 4.10) Trng simm13 c 13 bit gi tr tc th c du c th m rng ln 32 bit khi trng i c gi tr bng 1. lm c vic ny, bit du tc l bit tn cng bn phi c chp vo mt s 32 bit c gi tr bng s trong trng simm13 tng ng. V d, gi tr trng trng simm13 l (1111111110011)2 = (-13)10. Khi s nguyn 32 bit tng ng c to ra khi trng i = 1 l (11111111111111111111111111110011)2 = (-13)10. Cu trc lnh Arithmetic c 2 ton hng ngun v 1 ton hng ch, tng cng l 3 ton hng. Cu trc lnh Memmory c 2 ton hng: mt dnh cho a ch, mt dnh cho d liu. Thng thng ton hng ngun l a ch

5. M t cc lnh ca ARC Chng ta va tm hiu xong cu trc mt lnh. By gi chng ta s m t k hn 15 lnh c lit k trn. Trong phn nu chi tit ny, ta s a ra chi tit m lnh (Object code) vi mc ch chnh l tham kho. Vic chuyn m lnh nh th no s c chng ta tm hiu chi tit trong chng k tip
Tn lnh ld M t Np ni dung ca mt thanh ghi t b nh. Cc a ch b nh phi c gi tr chia ht cho 4 tc l c ranh gii t. Gi tr a ch s c tnh ton bng cch cng ni dung ca thanh ghi trong trng rs1 hoc gi tr trong trng simm13 ty theo tng trng hp V d Ld [x], %r1 Hoc Ld [x], %r0, %r1 Hoc Ld %r0+x, %r1 ngha Copy ni dung ca b nh a ch l x vo thanh ghi r1 M lnh 11000010000000000010100000010000 (x = 2064) Tn lnh st M t Ct ni dung ca thanh ghi vo b nh. Cc a ch b nh phi c gi tr chia ht cho 4 tc l c ranh gii t. a ch s c tnh ton bng cch cng ni dung ca thanh ghi trong trng rs1 vi ni dung ca thanh ghi trong trng rs2 hoc ni dung trong trng simm13. Trng rd trong lnh ny c s dng cha thanh ghi ngun V d st %r1, [x] ngha Copy ni dung ca thanh ghi r1 vo b nh a ch l x M lnh 11000010001000000010100000010000 (x = 2064) Tn lnh sethi M t Set ni dung ca 22 bit cao ca thanh ghi ln mt gi tr nht nh v a 10 bit thp ca thanh ghi v 0. Nu ton hng l 0 v thanh ghi c s dng l r0 th lnh ny tng ng vi lnh khng lm g c NOP V d sethi 0x304F15, %r1 ngha Np ni dung (304F15)16 vo 22 bit cao ca thanh ghi r1 cn 10 bit thp xa v 0 M lnh 00000011001100000100111100010101 Tn lnh andcc M t Tnh lnh AND tng bit ca 2 ton hng ngun v a kt qu v ton hng ch V d andcc %r1, %r2, %r3 ngha Tnh lnh AND ni dung thanh ghi r1 vi thanh ghi r2 v a kt qu vo thanh ghi r3 M lnh 10000110100010000100000000000010 Tn lnh orcc M t Tnh lnh OR tng bit ca 2 ton hng ngun v a kt qu v ton hng ch V d orcc %r1, 1, %r1 ngha Set tt c cc bit trong thanh ghi r1 ln gi tr 1 v a kt qu v thanh ghi r1 M lnh 10000010100100000110000000000001 Tn lnh Srl M t Thc hin php dch sang phi t 0 ti 31 bit. Nhng bit pha bn tri s c in y bi gi tr 0 V d srl %r1, 3, %r2 ngha Dch ni dung thanh ghi r1 sang phi 3 bit, lu kt qu vo thanh ghi r2 M lnh 10000101001100000110000000000011 Tn lnh addcc M t Cng 2 ton hng ngun v a kt qu v ton hng ch vi php cng 2 s b 2 V d addcc %r1, 5, %r1 ngha Cng 5 vo thanh ghi r1

M lnh 10000010100000000110000000000101 Tn lnh call M t Gi chng trnh con, lu a ch ca lnh ang thc hin vo thanh ghi %r15. Trong m lnh, trng disp30 trong cu trc call cha 30 bit a ch m n tr ti. a ch m my tnh x l k tip l a ch c gi tr 4 x disp30. Ch rng disp30 cng c th l s m V d call sub_r ngha Gi chng trnh con sub_r M lnh 01000000000000000000000000011001 Tn lnh jmpl M t Nhy v chng trnh chnh t chng trnh con v ct a ch ca lnh ang thc hin v thanh ghi ch V d jmpl %r15 + 4, %r0 ngha Tr v t chng trnh chnh. a ch trc kia c lu thanh ghi %r15 s c khi phc v lnh k tip c thc thi l a ch %r15+4.a ch hin ti s c b i M lnh 10000001110000111110000000000100 Tn lnh be M t Nu bit z = 1 th chng trnh th chng trnh nhy ti a ch4 x disp22 trong cu trc r nhnh. Nu z = 0 th lnh nhy ti lnh k tip sau lnh be V d be label ngha Nhy ti nhn label nu z = 1 M lnh 00000010100000000000000000000101 Tn lnh bneg M t Nu bit n = 1 th chng trnh th chng trnh nhy ti a ch4 x disp22 trong cu trc r nhnh. Nu n = 0 th lnh nhy ti lnh k tip sau lnh bneg V d bneg label ngha Nhy ti nhn label nu n = 1 M lnh 00001100100000000000000000000101 Tn lnh bcs M t Nu bit c = 1 th chng trnh th chng trnh nhy ti a ch4 x disp22 trong cu trc r nhnh. Nu c = 0 th lnh nhy ti lnh k tip sau lnh bcs V d bcs label ngha Nhy ti nhn label nu c = 1 M lnh 00001010100000000000000000000101 Tn lnh bvs M t Nu bit v = 1 th chng trnh th chng trnh nhy ti a ch4 x disp22 trong cu trc r nhnh. Nu v = 0 th lnh nhy ti lnh k tip sau lnh bvs V d bvs label ngha Nhy ti nhn label nu v = 1 M lnh 00001110100000000000000000000101 Tn lnh ba M t Nhy khng iu kin n a ch 4 x disp22 trong cu trc r nhnh V d ba label ngha Nhy khng iu kin ti nhn label. Trong m lnh di y, nhn l l vng nh trc vng nh hin ti 5 word M lnh 00010000101111111111111111111011

6. Ton t gi Ngoi nhng lnh c lit k trn, ARC cn c cc ton t gi hay cn gi l lnh gi h tr cc lp trnh vin xy dng cu trc chng trnh. Cc lnh gi c lit k chi tit trong hnh 4.12. Lu rng cc lnh gi khng phi l cc lnh s c x l bi my tnh. Cc lnh gi ny s c x l bi trnh bin dch tc l s c thc hin bi phn mm

Hnh 4 : Cc lnh gi Lnh .equ c s dng gn mt gi tr hay mt chui k t cho mt biu tng. Lnh .begin v .end c s dng thng bo cho trnh bin dch bit im bt u v kt thc ca chng trnh. Tt c cc lnh trc .begin v sau .end s b b qua. Mt chng trnh c th c nhiu hn 1 cp .begin/.end nhng mt lnh .end s s kt thc tt c cc .begin v trong chng trnh phi c t nht mt lnh .begin. Lnh .org s lm cho cc lnh c vit sau n s c lu tr ti a ch bt u t a ch m n ch ra. V d trong hnh 4.12. lnh sau .org 2048 s c lu bt u t a ch 2048. Lnh .dwb s to ra nhng khi d liu m mi phn t ca n c rng 4 byte. Lnh ny hay c s dng to ra cc khi mng d liu. Lnh .global v .extern c s dng vi cc bin v a ch m cc bin v a ch c vit trong 1 modul hp ng nhng li c s dng trong mt modul hay chng trnh khc. Lnh .global cho php cc bin m n

nh ngha c s dng trong nhiu chng trnh khc nhau. Lnh .extern ch ra rng bin m n ang s dng c nh ngha trong mt modul khc Lnh .macro, .endmacro, .if v .endif

4.4. V d v mt chng trnh hp ng Qu trnh vit chng trnh hp ng khng khc lm so vi vic vit mt chng trnh bc cao ngoi tr mt s chi tit m ta phi tun th. Trong phn ny ta s tm hiu 2 chng trnh mu c vit bng hp ng a, Chng trnh cng hai s nguyn

Hnh 5: Chng trnh cng 2 s nguyn Chng ta nghin cu mt v d v chng trnh hp ng vit cho my tnh ARC nh hnh 5. y l mt chng trnh n gin cng s 15 v 9. Chng trnh c bt u v kt thc bi cp lnh gi .begin/.end. Lnh gi .org ch ra rng cc lnh hp ng s c np vo my tnh bt u t a ch 2048. Hai ton hng 15 v 9 s c lu vo 2 bin x v y. Chng ta ch c th thc hin php ton cng vi cc s c lu tr trong thanh ghi my tnh ARC bi v ch cc lnh ld v st mi c truy cp b nh. Do chng trnh s bt u bng vic np cc gi tr x v y vo thanh ghi %r1 v %r2. Lnh addcc s thc hin php ton cng v a kt qu vo thanh ghi %r3. Lnh st s ct kt qu php ton t thanh ghi %r3 vo bin z nh trc. Lnh

jmpl vi cc ton t %r15+4,%r0 c tc dng quay tr v chng trnh chnh. y ta gi nh chng trnh thc hin php ton cng ny l mt chng trnh con v s c mt chng trnh cp cao hn gi ti.

b, Chng trnh tnh tng mt chui s nguyn

Hnh 6: Chng trnh tnh tng chui s nguyn Chng trnh chng ta xem xt y phc tp hn v d trc, m chng trnh c th hin trn hnh 6. Cng nh chng trnh pha trn, chng trnh

ny cng bt u bng cp lnh gi .begin/.end v cng s dng lnh .org lu m lnh vo b nh bt u t a ch 2048. Bin a_start c to ra vi gi tr mc nh l 3000 Chng trnh bt u bng vic np di ca mng a vo thanh ghi %r1, a ch bt u ca mng vo %r2 v xa ni dung thanh ghi %r3 lm ni cha tng cn tnh (bng cch thc hin php ton AND tng bit vi thanh ghi %r0) Vng lp loop s thc hin ln lt cng cc thnh phn ca mng vo tng trong thanh ghi %r3. Vng lp loop bt u bng vic kim tra xem s phn t cn li cn phi cng vo tng c phi l 0 hay khng. Vic ny c thc hin bng cch thc hin php ton AND gia %r1 vi chnh n. Nu %r1 = 0 th kt qu l 0, vic thc hin php cng s dng li v chng trnh nhy n nhn done. Nu %r1 khc 0 th kt qu ca php AND cng khc 0, chng trnh thc hin php cng. thc hin php cng, chng trnh s - Tnh li s phn t cn cng vo tng bng cch tr %r1 i gi tr tng ng 1 phn t (tc l cng vi -4). C th coi %r1 chnh l a ch tng i ca mng - Xc nh a ch ca phn t cn cng vo tng ti vng lp ang xt v a a ch ny vo thanh ghi %r4. Vic ny c thc hin bng cch cng a ch tuyt i ca mng (%r2) vi a ch tng i ca mng (%r1) - Np phn t mng vo %r5 - Cng phn t va c c t %r5 vo %r3 - Nhy v nhn loop