1 / 24

Procesorski sistemi v telekomunikacijah Operacije s celimi števili

Procesorski sistemi v telekomunikacijah Operacije s celimi števili. (c) Á rpád B űrmen, 2010-201 3. Zapis nepredznačenih celih števil. Zapis z n biti, možna števila 0..2 n -1 Kodiranje v dvojiškem zapisu Uteži mest so potence števila 2 Število = vsota uteži neničelnih mest v zapisu.

minda
Download Presentation

Procesorski sistemi v telekomunikacijah Operacije s celimi števili

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Procesorski sistemi v telekomunikacijahOperacije s celimi števili (c) Árpád Bűrmen, 2010-2013

  2. Zapis nepredznačenih celih števil • Zapis z n biti, možna števila 0..2n-1 • Kodiranje v dvojiškem zapisu • Uteži mest so potence števila 2 • Število = vsota uteži neničelnih mest v zapisu Uteži za dvojiški zapis nepredznačenih 8-bitnih števil 100011112= =128+8+4+2+1= =14310 18 = 2 x 9 + 0 9 = 2 x 4 + 1 4 = 2 x 2 + 0 2 = 2 x 1 + 0 1 = 2 x 0 + 1 1810=100102= =000100102

  3. Zapis predznačenih celih števil(zapis z dvojiškim komplementom) • Zapis z n biti, možna števila -2n-1..2n-1-1 • Uteži mest so potence števila 2 • Utež najvišjega mesta (MSB) je negativna • Število = vsota uteži neničelnih mest v zapisu Uteži za dvojiški zapis predznačenih 8-bitnih števil • Negativna števila imajo MSB=1 • Primer 100011102= =-128+8+4+2=-11410

  4. Številski krog Števila v matematiki so neomejena. Nepredznačena Predznačena 0 1 2 3 4 5 6 7 8 ... ... -4 -3 -2 -1 0 1 2 3 4 ... V računalništvu so števila omejena zaradi končne dolžine zapisa. 0 0 max 1 -1 1 max-1 2 2 -2 ... ... ... ... zapis z n-bitimaxp=2n-1-1 minn=-2n-1 zapis z n-bitimax=2n ... ... x+1 = 1 korak v smeri urinega kazalca x-1 = 1 korak nasproti urinemu kazalcu minn maxp

  5. Sprememba predznaka predznačenih števil • ... ali dvojiški komplement • Izvedba:invertiraj vse bite ink dobljenemu nepredznačenemu številu prištej 1 • Primer za 8-bitni predznačen zapis (2n=256) -11510 = 100011012 Invertiraj bite 011100102 Prištej 1 011100102 +1 Rezultat 011100112 = 11510 11510 = 011100112 Invertiraj bite 100011002 Prištej 1 100011002 +1 Rezultat 100011012 = -11510

  6. Nepredznačeno : predznačeno • n-bitni zapis predznačenega negativnega števila -x je enakn-bitnemu zapisu nepredznačenega števila 2n – x Nepredznačeno Zapis (8 bitov) Predznačeno Zapis (8 bitov) --------------------------------------------------------------------------------------------- 0 00000000 0 00000000 1 00000001 1 00000001 2 00000010 2 00000010 ... 127 01111111 127 (maxp) 01111111 128 10000000 -128 (minn) 10000000 129 10000001 -127 10000001 ... 254 11111110 -2 11111110 255 (max) 11111111 -1 11111111

  7. Pa še nekaj o dvojiškem komplementu • Dvojiški komplement dobimo tako, da1. invertiramo vse bite2. k rezultatu invertiranja prištejemo 1 • Zakaj? • Številski krog: za n-bitni nepredznačen zapis je max+1 = 0oziroma 0 = max+1 = (2n-1)+1 = 2n • Torej velja (ampak samo v številskem krogu)-x = 0 - x = 2n - x = (2n - 1 - x) + 1 • Za n-bitni nepredznačen zapis je (2n - 1 - x) enako kot invertiranje vseh bitov – operacija INV(x) • Torej je: -x = INV(x) + 1 • Oziroma: dvojiški komplement x = INV(x) + 1

  8. Zakaj je zapis z dvojiškim komplementom dober? • Seštejmo nepredznačeni števili y ≤ 127 in 2n – x, kjer je 0<x≤128(če nepredznačeni zapis teh dveh števil tolmačimo kot predznačeno število, ustreza y pozitivnemu številu y, 2n-x pa negativnemu številu -x) • y + (2n – x) = y – x + 2n .... pademo na mesto y - x v krogu • Od y odštejemo x tako, da k y prištejemo dvojiški komplement x • Eno in isto vezje lahko uporabimo za - seštevanje predznačenih in seštevanje nepredznačenih števil- odštevanje predznačenih in nepredznačenih števil(če prej naredimo dvojiški komplement drugega operanda) 2510 = 000110012 prvo predznačeno število -11510 = 100011012 drugo predznačeno število Seštej kot dve nepredznačeni števili 00011001 +10001101 --------- 10100110 101001102=-128+32+4+2=-9010

  9. Seštevanje in odštevanjePrevelik/premajhen rezultat... • Nepredznačena števila 0 max 1 Seštevanje max-1 2 ... ... zapis z n-bitimax=2n Odštevanje Če prekoračimo mejo med max in 0 dobimo napačen rezultat. Pravimo, da se je zgodil prenos (carry).

  10. Seštevanje in odštevanjePrevelik/premajhen rezultat... • Predznačena števila 0 -1 1 2 -2 Seštevanje ... ... zapis z n-bitimaxp=2n-1-1 minp=2n-1 Odštevanje ... ... minn maxp Če prekoračimo mejo med maxp in minn dobimo napačen rezultat. Pravimo, da se je zgodil preliv (overflow).

  11. Zastavice (flags) • Biti v registru stanja – rezultat zadnje operacije. • Zastavica Z (Zero)Z=1, če je rezultat enak 0 oz. Z=0, če ni. • Zastavica N (Negative)N=1, če je najvišji bit rezultata enak 1 oz. N=0, če ni. • Zastavica V (oVerflow)V=1, če se je zgodil preliv, oz. V=0, če se ni. • Zastavica C (Carry)C=1, če se je zgodil prenos, oz. C=0, če se ni. • Pozor! nekateri procesorji (npr. ARM7) pri odštevanju postavijo C=0, če se zgodi prenos in C=1, če se ne zgodi.

  12. Seštevanje in odštevanjeZapis rezultata • Seštevanje/odštevanje dveh n-bitnih števil • Rezultat lahko zmeraj zapišemo z n+1 biti • Operanda sta nepredznačeni števili - rezultat tolmačimo kot nepredznačeno številoOperanda sta predznačeni števili - rezultat tolmačimo kot predznačeno število • C predstavlja n+1. bit rezultata • Pozor! Pri odštevanju na nekaterih procesorjih (npr. ARM7) je n+1. bit rezultata je enak negaciji zastavice C.

  13. Zapis daljših števil v pomnilnik • Zapis k-bitnih števil v n-bitne celice (k>n, k je deljiv z n) • Razbijemo na skupine po n bitov • Uporabimo k/n zaporednih celic za zapis • Kaj pa vrstni red? Zapis 16-bitnega števila v 8-bitne celice Little endian Big endian Uporablja ga ARM7 (lahko) LPC2138 (ARM7) INTEL (npr i386) Uporablja ga ARM7 (lahko) Motorola 68k

  14. Seštevanje daljših števil n bitov n bitov MSW A LSW A MSW B LSW B + C + C MSW rezultata LSW rezultata 1 bit n bitov n bitov ARM7, 64-bitno seštevanje /* R2 = MSW A, R1 = LSW A */ /* R4 = MSW B, R3 = LSW B */ /* Rezultat seštevanja: R6 = MSW, R5 = LSW ADDS R5, R3, R1 /* R5=R3+R1, določi C (statusni register) */ ADCS R6, R4, R2 /* R6=R4+R2+C, določi C (statusni register) */ Odštevanje dolgih števil poteka podobno.

  15. OdštevanjePrimerjava nepredznačenih števil • Izračun A-B = primerjava števil A in B • Če rezultat pade iz območja nepredzn. števil ... C=1če ostane v območju ... C=0 • Če je rezultat enak 0 ... zastavica Z=1če ni enak 0 ... zastavica Z=0 • Zastavica V nima nobene vloge. Pozor z zastavico C in ARM7!!!Pri odštevanju na ARM7 dobimo C=0 če pademo iz območja in C=1 če ne pademo! Če velja Po odštevanju (A-B) dobimo A=B Z=1 A≠B Z=0 A≥B C=0 A>B C=0 in Z=0 (C=1 in Z=0 za ARM7) A<B C=1 (C=0 za ARM7) A≤B C=1 ali Z=1 (C=0 ali Z=1 za ARM7)

  16. OdštevanjePrimerjava predznačenih števil • Izračun A-B = primerjava števil A in B • Če je V=1, zastavica N laže glede predznaka pravilnega rezultata • Pravilna razlika A in B je negativna, če je N exor V = 1 • Če je rezultat enak 0 ... zastavica Z=1ni enak 0 ... zastavica Z=0 • Zastavica C nima nobene vloge. Če velja Po odštevanju (A-B) dobimo A=B Z=1 A≠B Z=0 A≥B (N exor V)=0 A>B (N exor V)=0 in Z=0 A<B (N exor V)=1 A≤B (N exor V)=1 ali Z=1

  17. Bitne operacije Aritmetični/logični pomik bitov v levo Bit izpade • Biti se pomaknejo za eno mesto v levo. Na desni (LSB) se doda ničla. Levi bit (MSB) izpade. • Biti nepredznačenega števila se pomaknejo k utežem z dvojno vrednostjo. • Nepredznačena vrednost se torej podvoji ... operacija je enaka množenju z 2. • Tudi predznačena vrednost se podvoji (množi z 2). Bit 0 1 0 0 1 1 0 1 = 7710 Utež 128 64 32 16 8 4 2 1 Bit 1 0 0 1 1 0 1 0 = 15410 Utež 128 64 32 16 8 4 2 1 Dodana ničla

  18. Bitne operacijeLogični pomik v desno Bit izpade • Biti se pomaknejo za eno mesto v desno. Na levi (MSB) se doda ničla. Desni bit (LSB) izpade. • Biti nepredznačenega števila se pomaknejo k utežem s polovično vrednostjo. • Nepredznačena vrednost se prepolovi ... operacija je enaka deljenju z 2. • Operacija nima pomena za predznačena števila. Bit 0 1 0 0 1 1 0 0 = 7610 Utež 128 64 32 16 8 4 2 1 Bit 0 0 1 0 0 1 1 0 = 3810 Utež 128 64 32 16 8 4 2 1 Dodana ničla

  19. Bitne operacijeAritmetični pomik v desno Bit izpade • Biti se pomaknejo za eno mesto v desno. Na levi (MSB) se ponovi MSB prvotne vrednosti. Desni bit (LSB) izpade. • Biti predzn. števila se pomaknejo k utežem s polovično vrednostjo. • Po pomiku sta leva dva bita enaka 11 (-128+64=-6410) ali 00 (010) • Za predznačena števila je operacija enakovredna deljenju z 2. • Operacija nima pomena za nepredznačena števila. Bit 1 1 0 0 1 0 1 0 = -5410 Utež -128 64 32 16 8 4 2 1 Bit 1 1 1 0 0 1 0 1 = -2710 Utež -128 64 32 16 8 4 2 1 Kopija MSB

  20. Množenje celih števil • Dve n-bitni nepredznačeni števili ... 2n-biten rezultat • Dve n-bitni predznačeni števili ... 2n-biten rezultat • Nepredznačeno in predznačeno množenje nista enaki operaciji! • Dvojiško množenje = pomikanje v levo + seštevanje Desetiško nepredznačeno Dvojiško nepredznačeno 235 x 153 ---------- 23500 = 235 x 100 +11750 = 235 x 50 +00705 = 235 x 3 ---------- --- 035955 153 110001 x 110110 ---------------- 11000100000 = 110001 x 100000 +01100010000 = 110001 x 010000 +00000000000 = 110001 x 000000 +00011000100 = 110001 x 000100 +00001100010 = 110001 x 000010 +00000000000 = 110001 x 000000 ---------------- ------ 101001010110 110110

  21. Deljenje celih števil • n-bitno nepredznačeno deljenje ... n-biten rezultat • n-bitno predznačeno deljenje ... n+1 – biten rezultat • Dvojiško deljenje = pomikanje v desno + odštevanje Desetiško nepredznačeno Dvojiško nepredznačeno 18763 : 121 121 ≤ 18763 1210≤ 18763 12100 ≤ 18763 tu začnemo 121000 > 18763 18763 = 12100 x 1 + 6663 6663 = 1210 x 5 + 613 613 = 121 x 5 + 8 18763 = 121 x 155 + 8 110111 : 101 101 ≤ 110111 1010 ≤ 110111 10100 ≤ 110111 101000 ≤ 110111 tu začnemo 1010000 > 110111 110111 = 101000 x 1 + 1111 1111 = 10100 x 0 + 1111 1111 = 1010 x 1 + 101 101 = 101 x 1 + 0 110111 = 101 x 1011 + 0

  22. Množenje in deljenje v praksi • Običajno je izvedeno v obliki vgrajenega programa. • Čeprav ima procesor ukaz za množenje/deljenje, traja izvajanje tega ukaza več urinih ciklov. • Primer: ARM7, 68HC11 • V signalnih procesorjih je množenje ponavadi izvedenos temu namenjenim vezjem – množilnikom. • Rezultat dobimo v enem urinem ciklu.

  23. Ostale bitne operacije • AND OR, EXORračunajo soležnimi biti operandov. x y x AND y x OR y x EXOR y 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 xxxxxxxx op yyyyyyyy -------- zzzzzzzz • Drugemu operandu (y) včasih pravimo tudi maska • Invertiranje vseh bitov = eniški komplement (one’s compement) • Sprememba predznaka za predznačena števila = = dvojiški komplement (two’s complement) = eniški komplement + 1 • Rotacije – krožni pomik bitov preko bita CZa izvedbo daljših aritm./log. pomikov v levo/desno. Rotacija bitov v desno b7 b6 b5 b4 b3 b2 b1 b0 C

  24. ... v siliciju Bell labs DSP-1 Intel 80386 ALU = Arithmetic Logic Unit – Aritmetično-Logična Enota

More Related