1 / 95

Аритметичке и логичке операције

Аритметичке и логичке операције. Означени и неозначени бројеви Сабирање и одузимање Логичке операције Конструкција ALU Множење. Означени и неозначени бројеви. Бројеви се представљају бинарно, користећи двојични комплемент. Код MIPS-a бројеви су по правилу 32-битни и означени. maxint.

Download Presentation

Аритметичке и логичке операције

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. Аритметичке и логичке операције Означени и неозначени бројеви Сабирање и одузимање Логичке операције Конструкција ALU Множење

  2. Означени и неозначени бројеви • Бројеви се представљају бинарно, користећи двојични комплемент. • Код MIPS-a бројеви су по правилу 32-битни и означени.

  3. maxint minint Означени и неозначени бројеви • 32-битни означени бројеви:0000 0000 0000 0000 0000 0000 0000 00002 = 0100000 0000 0000 0000 0000 0000 0000 00012 = + 1100000 0000 0000 0000 0000 0000 0000 00102 = + 210...0111 1111 1111 1111 1111 1111 1111 11102 = + 2,147,483,646100111 1111 1111 1111 1111 1111 1111 11112 = + 2,147,483,647101000 0000 0000 0000 0000 0000 0000 00002 = – 2,147,483,648101000 0000 0000 0000 0000 0000 0000 00012 = – 2,147,483,647101000 0000 0000 0000 0000 0000 0000 00102 = – 2,147,483,64610...1111 1111 1111 1111 1111 1111 1111 11012 = – 3101111 1111 1111 1111 1111 1111 1111 11102 = – 2101111 1111 1111 1111 1111 1111 1111 11112 = – 110

  4. Означени и неозначени бројеви • Садржај регистра или локације је низ битова који се може на различите начине интерперетирати. • Бројеви могу да буду и неозначени, када сви битови представљају вредност броја.

  5. Означени и неозначени бројеви • Код поређења вредности MIPS нуди инструкције које раде са означеним бројевима (slt, slti) али и са неозначеним (sltu, sltiu).

  6. Означени и неозначени бројеви Пример Нека је у регистру $s0 бинарни број 1111 1111 1111 1111 1111 1111 1111 11112 а у регистру $s1 бинарни број 0000 0000 0000 0000 0000 0000 0000 00012. Које ће вредности бити у регистрима $t0 и $t1 после извршења следећих инструкција? slt $t0,$s0,$s1 #oznaceno poredjenje sltu $t1,$s0,$s1 #neoznaceno poredjenje

  7. Означени и неозначени бројеви Одговор Вредност у регистру $s0 је -1, ако се ради о (означеном) целом броју, а 4,294,967,295, ако се ради о неозначеном целом броју. Вредност у регистру $s1 је у оба случаја 1. Према томе, регистар $t0 ће садржати 1 (-1<1) a$t1 ће садржати 0 (4,294,967,295 > 1).

  8. Означени и неозначени бројеви • У општем случају операнди не морају бити 32-битни. • Поставља се питање како прелазимо са презентације неке вредности са nбитова на презентацију те вредности са више од nбитова?

  9. Означени и неозначени бројеви • Ова операција назива се знаковно проширење и састоји се у копирању бита знака датог броја у све више битове.

  10. Означени и неозначени бројеви Пример Конвертовати 16-битну бинар-ну вредност броја 2 у одгова-рајућу 32-битну вредност.

  11. Означени и неозначени бројеви Одговор 16-битна вредност броја 2 је 0000 0000 0000 00102 = 210 32-битну вредност ћемо добити копирањем најстаријег бита броја (0) у леву половину чиме се добија 0000 0000 0000 0000 0000 0000 0000 00102 = 210

  12. Означени и неозначени бројеви Исти поступак је и за негативне бројеве. Двојични комплемент 16-битне вредности броја 2 (или -2) добија се као 0000 0000 0000 00102 1111 1111 1111 11012 + 12 1111 1111 1111 11102 32-битна вредност је 1111 1111 1111 1111 1111 1111 1111 11102 = -210

  13. Сабирање и одузимање • Сабирање је једна од основних аритметичких операција коју подржавају сви рачунари. • Одузимање се не врши директно већ се врши сабирање са двојичним комплементом умањиоца.

  14. Сабирање и одузимање • Када резултат не може да се представи датим бројем битова (32 у овом случају) долази до прекорачења.

  15. Сабирање и одузимање • Прекорачење се не може јавити када сабирамо операнде различитогзнака. • Код одузимања се прекорачење не може јавити када одузимамо операнде истог знака, јер се то своди на сабирање операнда различитог знака.

  16. Сабирање и одузимање • Како детектовати прекорачење у случајевима када је могућа његова појава?

  17. Сабирање и одузимање • Прекорачење се јавља када се пренос (позајмица) са бита десно од бита знака и пренос са бита знака не поклапају. • Да ли операције са неозначеним бројевима могу да изазову прекорачење?

  18. Сабирање и одузимање • На пројектанту машине је да одлучи када ће се прекорачење игнорисати а када ће изазвати изузетак. • MIPS препознаје два случаја: • Инструкције add, addiи subмогу да изазову прекорачење. • Код инструкција addu, addiuи subu прекорачење се игнорише.

  19. Логичке операције • Први рачунари су обраду вршили над речима. • Убрзо је постало јасно да је добро имати могућност обраде поља битова или чак појединих битова унутар речи. • Рад са знаковима унутар речи где је сваки од знакова 8-битан је један од примера за ово.

  20. Логичке операције • Једна од група оваквих операција су операције померања. • Нека, на пример регистар $s0 садржи 0000 0000 0000 0000 0000 0000 0000 1101 После померања за 8 места улево његов садржај ће бити 0000 0000 0000 0000 0000 1101 0000 0000

  21. Логичке операције • Дуална операција операцији померања улево је операција померања удесно. • MIPS инструкције које обављају ове операције су sll(shift left logical) и srl (shift right logical). sll $t2,$s0,8 # $t2 = $s8 << 8

  22. 001610 8 0 oprsrtrdshamtfunct Логичке операције • Сада можемо да схватимо значење поља shamt у R-формату.

  23. Логичке операције • Такође су корисне операције И и ИЛИ (AND иOR) које се могу употребити за издвајање неког поља битова. • Ове операције (and, andi, or, ori) обављају се над одговарајућим битовима изворних операнада, а резултат смешта у одговарајући бит одредишног операнда.

  24. Логичке операције • Ако је још увек у $t2 0000 0000 0000 0000 0000 1101 0000 0000 а у $t1 0000 0000 0000 0000 0011 1100 0000 0000 тада после извршења инструкције and $t0,$t1,$t2#$t0 = $t1 & $t2 у регистру $t0 имамо садржај 0000 0000 0000 0000 0000 1100 0000 0000

  25. Логичке операције • Овакви шаблони битова називају се маске и помоћу њих неки битови могу да се обришу а неки да остану са оригиналном вредношћу. • Слично томе, ИЛИ операцију можемо да користимо да поставимо неке од битова.

  26. Логичке операције • Ако су садржаји регистара $t1 и $t2 непромењени, онда операција or $t0,$t1,$t2 #$t0 = $t1 | $t2 даје следећи садржај регистра $t0: 0000 0000 0000 0000 0011 1101 0000 0000

  27. Логичке операције Пример Нека је дат следећи код на језику C int data; struct { unsigned int ready: 1; unsigned int enable: 1; unsigned int receivedByte: 8; } receiver; … data = receiver.receivedByte; receiver.ready = 0; receiver.enable = 1; Написати одговарајући MIPS код ако су променљиве data и receiver додељене регистрима $s0 и $s1.

  28. 31 … 10 9 210 receivedByte enable ready Логичке операције Одговор Језик C десно поравнава поља па је изглед речи

  29. Логичке операције Први корак је да изолујемо 8-битно поље receivedByteпомерајући га на лево а затим на десно sll $s0,$s1,22 srl $s0,$s0,24

  30. Логичке операције Следеће две инструкције бришу бит најмање тежине, тј. постављају следећи бит andi $s1,$s1,0xfffe ori $s1,$s1,0x0002

  31. Логичке операције • Треба водити рачуна о томе да addi, addiu и slti,sltiu врше знаковно проширење својих непосредних операнада! • Како andiи ori нормално раде са неозначеним операндима, њихови непосредни операнди се тако и третирају, тј. допуњују се нулама.

  32. Конструкција ALU • ALU извршава све аритметичке и логичке операције у рачунару. • Због једноставности ћемо покушати да направимо 1-битну ALU. • Пошто су речи код MIPS-a 32-битне, повезаћемо 32 такве ALU.

  33. S A C 0 B 1 Мултиплексер Конструкција ALU • Користићемо већ познате “градивне блокове”.

  34. операција а резултат 0 1 b Конструкција ALU • Логичке операције су најлакше за имплементацију, јер већ имамо логичка кола која их реализују. • Једнобитна ALU за операције AND и OR приказна је на слици.

  35. Конструкција ALU • Следећа фунцкија ALU је сабирање. cout = ab + acin + bcin sum = a xor b xor cin

  36. Конструкција ALU • 1-битна ALU која обавља функције AND, OR и сабирање.

  37. Конструкција ALU • 32-битна ALU која обавља функције AND, OR и сабирање. • Сабирач који се добија директним повезивањем преноса 1-битних сабирача назива се ripple carry adder.

  38. Конструкција ALU • Одузимање је сабирање са двојичним комплементом умањиоца! a-b = a +b +1

  39. Конструкција ALU • Још увек нам треба подршка поређењу (инструкцији slt). • sltима за резултат 1 ако је rs < rt, а иначе резултат је 0. a – b < 0  a < b • Значи да slt поставља се битове на 0 осим бита најмање тежине који се поставља у зависности од резултата поређења.

  40. Конструкција ALU

  41. Конструкција ALU

  42. Конструкција ALU

  43. Конструкција ALU

  44. Конструкција ALU

  45. ALU operation 3 a 32 Zero ALU Result 32 Overflow b 32 CarryOut Конструкција ALU

  46. Конструкција ALU • RCA је исувише спор! • Постоје многе шеме за предвиђање преноса код којих је потребно времеlog2nако сабирају два n-тобитна броја. • Једна таква шема је carry-lookaheadсабирач(понекад се овај тип зове и carry-anticipation сабирач).

  47. x3 y3 x2 y2 x1 y1 x0 y0 x y coutcin S x y coutcin S x y coutcin S x y coutcin S c3 c2 c1 c0 S3 S2 S1 S0 Конструкција ALU • Размотримо један четворобитни паралелни сабирач (RCA).

  48. Конструкција ALU • Начин генерисања преноса може се изразити као c0 = x0y0 (1) c1 = x1y1 + (x1y1)c0 (2) • Заменом (1) у (2) добијамо c1 = x1y1 + (x1y1)x0y0 (3)

  49. Конструкција ALU • Слично је и c2 = x2y2 + (x2y2)c1 (4) • Заменом (3) у (4) добијамо c2 = x2y2 + (x2y2)x1y1 + (x1y1)x0y0 = x2y2 + (x2y2)x1y1 + (x2y2) (x1y1)x0y0(5)

  50. Конструкција ALU • Најзад c3 = x3y3 + (x3y3)c2 (6) • Заменом (5) у (6) добија се c3 = x3y3 + (x3y3)x2y2 + (x2y2)x1y1 + (x2y2)(x1y1)x0y0 = x3y3 + (x3y3)x2y2 + (x3y3)(x2y2)x1y1 + (x3y3)(x2y2) (x1y1)x0y0 (7)

More Related