floating-point броеви

Post on 03-Jan-2016

55 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Floating-point броеви. За разлика од реалните броеви броевите со подвижна запирка не формираат континуум. Ако бројот не може да се изрази точно се користи најблискиот број, т.е. се изведува заокружување. n=f*10 e f - мантиса, е - експонент. Floating-point броеви. - PowerPoint PPT Presentation

TRANSCRIPT

1

Floating-point броеви

За разлика од реалните броеви броевите со подвижна запирка не формираат континуум.

Ако бројот не може да се изрази точно се користи најблискиот број, т.е. се изведува заокружување.

n=f*10e f - мантиса, е - експонент

2

Floating-point броеви

Менување на број на цифри во мантиса или експонент дава подобра апроксимација или ги менува границите на регионите 2 и 6.

3

Floating-point броеви

Мантиса чија најлева цифра е 1 се нарекува нормализирана.

На следната слика е претставен процесот на нормализација на броеви со 16 битна матиса, 7 битен експонент и основа на експонентот 2 или 16.

За претставување на експонентот се користи вишок 64 нотација.

4

Floating-point броеви

5

IEEE Floating-point Standard 754 (1985)

Стандардот е дело на William Kahan и дефинира 3 формати:

единечна прецизност (32 бита)двојна прецизност (64 бита)проширена прецизност (80 бита).

6

IEEE Floating-point Standard 754 (1985)

Двата формати почнуваат со бит за знак: 0-позитивен 1-негативен број.

Експонентот користи вишок вишок 127 нотација за експонентот во единечна прецизност.

Експонентот користи вишок вишок 1023 нотација за експонентот во двојна прецизност.

7

Карактеристики на IEEE Floating-point броевите

8

Примери - IEEE Floating-point стандард 754 со единечна прецизност

Бројот 0.5 во IEEE Floating-point стандард 754 со единечна прецизност хексадецимално се претставува 3F000000

exp-127=126-127=-1 26+25+24+23+22+21=126 1.0*2-1

0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Бројот 1 во IEEE Floating-point стандард 754 со единечна прецизност хексадецимално се претставува 3F800000

exp-127=127-127=0 26+25+24+23+22+21+20=1271.0*20

0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

9

Процесор – Организација и обработка на податоци

Предавач: д-р Цвета МартиновскаФонд на часови: 2+2

10

Data path – се состои од регистри (1-32), ALU и магистрали

11

ОБРАБОТКА НА ИНСТРУКЦИИ

КС ја изведува инструкцијата преку fetch-decode-execute циклусот:

CPU ја зема инструкцијата (ја пренесува од главна меморија во инструкциски регистер),

ја декодира (го определува кодот на операција и зема податоци потребни за да се изврши инструкцијата) и

ја извршува (ги изведува операциите дадени со инструкцијата).

Голем дел од fetch-decode-execute циклусот се троши на копирање податоци од една локација на друга.

12

ОБРАБОТКА НА ИНСТРУКЦИИ

Кога програмата се вчитува адресата на првата инструкција се става во PC.

Овој циклус се одвива во повеќе тактови на системскиот часовник.

Чекори на fetch фаза:

1. се копира содржината на PC во MAR: MAR<-PC

2. од главната меморија се зема инструкцијата која се наоѓа на адресата во MAR,

се става оваа инструкција во IR, IR<-M[MAR],

се зголемува PC за 1 (покажува на следна инструкција во програмата) PC<-PC+1

13

ОБРАБОТКА НА ИНСТРУКЦИИ

Бидејќи машината која ја разгледуваме е збор-адресибилна, инкрементирањето на PC за 1 доведува до тоа да адресата на следниот збор се најде во PC.

Ако машината е byte-адресибилна PC треба да се инкрементира за 2 за да покажува на адресата на следната инструкција бидејќи секоја инструкција се состои од 2 bytes.

Kaj byte-адресибилна машина со зборови од 32 бита PC треба да се инкрементира за 4.

14

ОБРАБОТКА НА ИНСТРУКЦИИ

Чекори на decode фаза:

1. се копираат најдесните 12 бита од IR во MAR,

MAR<-IR[11-0]

се декодираат најлевите 4 бита IR[15-12].

Чекори на execute фаза:

1. ако е потребно се користи адресата од MAR за да се земат податоци од меморија податоците се ставаат во MBR (или AC), MBR<-M[MAR]

и се извршува инструкцијата.

Fetch-decode-execute циклус

16

ИНТЕРАПТИ И В/И

Машината која ја разгледуваме има 2 регистри за работа со влезни и излезни уреди. Во влезниот регистер се сместени податоци префрлени од влезниот уред а во излезниот регистер информации кои треба да се испратат на излезен уред.

Потребно е процесорот и В/И да се временски усогласени.

(Пример: Ако процесорот е побрз од тастатурата ќе го прочита истиот податок повеќе пати, или

ако внесувањето е побрзо од читањето податок од влезниот регистер може да се изгуби внесен податок)

Проблемот се решава со В/И управувани со интерапти.

17

ИНТЕРАПТИ И В/И

Кога влезот/излезот се завршени В/И уредот испраќа интерапт сигнал до CPU

CPU го обработува интераптот и потоа продолжува со прекинатиот fetch-decode-execute циклус.

Најголем број КС проверуваат дали е генериран интерапт на почеток на секој fetch-decode-execute циклус.

В/И уредите испраќаат интерапти со користење на status (flag) регистерот. Кога настанува интерапт се сетира бит од овој регистер, а CPU го проверува битот пред почеток на секој машински циклус.

18

ИНТЕРАПТИ И В/И

Проверка дали треба да се обработи интерапт се извршува пред секој инструкциски циклус.

19

ИНТЕРАПТИ И В/И

Обработување на интерапт е извршување на интерапт рутина.

Пред да се изврши рутината содржината на сите регистри на CPU треба да се зачува, а по завршување на рутината да се врати во регистрите.

Други интерапти

1. надворешни (прекин на напојување)

2. внатрешни (делење со нула, stack overflow, protection violations)

3. софтверски (програмски премин од извршување програма на наредба од оперативен систем)

20

АСЕМБЛЕРСКА ПРОГРАМА ЗА СОБИРАЊЕ 2 БРОЈА

Програмата собира два броја и резултатот го сместува во меморија.

Во втората колона е асемблерската програма а во третата истата програма во машински јазик. Третата колона е содржината на меморијата претставена во хексадецимален код.

21

СОБИРАЊЕ 2 БРОЈА

Fetch-decode-execute циклусот почнува со полнење на првата инструкција на програмата, која се наоѓа со полнење на PC со адресата на првата инструкција. Програмата почнува од адреса 100H.

Се извршува Load на 002316 (3510) во AC.

Потоа се собира со FFE916 (-2310) кое се наоѓа на адреса 105, при што се добива резултат 12 во AC.

Инструкцијата Store ја сместува вредноста на мемориска локација 106.

22

СОДРЖИНА НА РЕГИСТРИ ЗА ПРОГРАМАТА ЗА СОБИРАЊЕ 2 БРОЈА

23

СОДРЖИНА НА РЕГИСТРИ ЗА ПРОГРАМАТА ЗА СОБИРАЊЕ 2 БРОЈА

24

СОДРЖИНА НА РЕГИСТРИ ЗА ПРОГРАМАТА ЗА СОБИРАЊЕ 2 БРОЈА

25

Асемблерски јазик, асемблирање

Асемлерот source file (асемблерска програма) го претвара во object file (машински код).

Поедноставно е пишување код со мнемоници (асемлерски јазик) отколку со машински код.

Поедноставно е мемориската адреса да се замени со лабела.

При асемблирање на програма која користи лабели мора да се направат 2 поминувања низ програмата за да се преведе во машински код.

При првото поминување низ кодот асемблерот гради табела на симболи (не може веднаш да се генерира машински код бидејќи не знае каде се сместени податоците на инструкцијата ако е дадена само лабела.)

26

Пример: програма која користи лабели

Табела на симболи креирана при првото поминување на асемблерот низ програмата:

27

Пример: програма која користи лабели

Асемблерот исто така започнува да ги преведува инструкциите. При првото поминување преведените инструкции ќе бидат некомплетни:

При второто минување асемблерот ја користи табелата на симболи за да ги пополни адресите и да креира соодветни инструкции во машински јазик.

28

Асемблерски директиви Асемблерска директива е инструкција која не се

преведува во машински код. DEC - асемблерска директива која овозможува

податоците да се внесат како декадни броеви. HEX- асемблерска директива која овозможува

податоците да се внесат како хексадекадни броеви. / - асемблерска директива која означува дека текстот

кој следи по неа е коментар

Пример: користење директиви за константи

29

ПРОШИРУВАЊЕ НА ИНСТРУКЦИСКОТО МНОЖЕСТВО

Во машината која ја разгледуваме предвидени се 4 бита за код на операција. Досега разледавме 9 операции. Множеството на инструкции се проширува со следните 4 инструкции:

30

ПРОШИРУВАЊЕ НА ИНСТРУКЦИСКОТО МНОЖЕСТВО

JnS (jump-and-store) - се чува покажувач за враќање на местото од кое е повикана друга процедура.

Clear - сместува 0 во AC. AddI како и JumpI - користи индиректен начин на

адресирање. Наместо вредноста на локација X да се смета за адреса, се користи вредноста најдена на локација X како покажувач до нова мемориска локација која содржи податок кој се користи во инструкцијата.

31

РЕГИСТАРСКИ ПРЕНОС КАЈ ИНСТРУКЦИИТЕ

32

КОМПЛЕТНО ИНСТРУКЦИСКО МНОЖЕСТВО НА МАШИНАТА

33

ПРИМЕР: ПРОГРАМА ЗА СОБИРАЊЕ 5 БРОЈА

34

ПРИМЕР: РЕАЛИЗАЦИЈА НА IF-THEN-ELSE

35

ПРИМЕР: ПОВИКУВАЊЕ ПОТПРОГРАМА ЗА ДУПЛИРАЊЕ НА БРОЈ

36

ДЕКОДИРАЊЕ: HARDWIRED ИЛИ МИКРОПРОГРАМИРАЊЕ

Како функционира контролната единица?

1. Hardwired - директна секвенцијална логика, физичко поврзување на контролни линии и машински инструкции.

Се користи дигитално коло во кое влезови се битови на opcode од инструкциите, битови од status регистерот, сигнали од магистралата и од системскиот часовник. Излези се контролни сигнали кои управуваат со компонентите на КС.

Со користење на содржината на IR и статусот на ALU оваа единица ги контролира регистрите, ALU операциите, поместувачите и пристапот до магистралата.

37

HARDWIRED КОНТРОЛНА ЕДИНИЦА

38

ПРЕДНОСТИ И НЕДОСТАТОЦИ НА HARDWIRED КОНТРОЛА

Предност: операциите се одвиваат побрзо отколку кај микропрограмирање.

Недостаток: инструкциското множество и контролната логика се директно поврзани со специјални кола кои се комплексни и тешко се дизајнираат или менуваат.

39

МИКРОПРОГРАМИРАЊЕ

Сите машински инструкции се влез во специјална програма, микропрограма, која ги конвертира инструкциите во соодветни контролни сигнали.

Микропрограмата е интерпретер напишан во микрокод и сместен во firmware (ROM, PROM, EPROM). Таа ги конвертира машинските инструкции од нули и единици во контролни сигнали. За секоја машинска инструкција постои посебна потпрограма.

Предност: измената на инструкциското множество се остварува со update на микропрограмот.

Недостаток: Инструкциите поминуваат низ дополнително ниво на интерпретација што го забавува извршувањето на програмата.

40

МИКРОПРОГРАМИРАНА КОНТРОЛА

41

CISC и RISC архитектури

CISC –имаат голем број инструкции со различна должина. Многу од овие инструкции изведуваат повеќе операции.

RISC – мало но комплетно множество инструкции, реализирано хардверски. Инструкциите се поедноставени за брзо извршување. Секоја инструкција изведува една операција. Инструкциите имаат иста големина и сите аритметички операции мора да се изведуваат меѓу операнди во регистри.

Инструкциските множества од 1982 година се RISC или комбинација на RISC и CISC.

42

CISC и RISC архитектури

RISC – Во 1980 група од Berkeley, предводена од David Patterson и Carlo Sequin почнала да дизајнира VLSI CPU чипови кои не користеле интерпретирање.

John Hennessy дизајнирал чип MIPS. Овие чипови еволуирале во SPARC и MIPS.

43

Intel архитектури

Првиот популарен Intel чип 8086 е произведен во 1979 и е употребен во IBM PC: Користел 16 bits податоци, 20 bits адреси, па можел да

адресира милион bytes меморија. Близок до 8086 е 8088 (8 bit екстерен бас) користен во IBM

PC имал помала цена. Во 8086 CPU е поделен на 2 дела:

Извршна единица (execution unit) која ги содржи регистрите за општа намена и ALU

Единица за поврзување со магистралата (bus interface unit) која содржи инструкциски ред (instruction queue), сегментни регистри и IP (instruction pointer)

44

Intel архитектури

8086 има четири 16 битни регистри за општа намена: AX – примарен акумулатор BX – базен регистер кој се користи за проширено адресирање

(base register) CX – бројачки регистер (count register) DX – податочен регистер (data register)

Секој од овие регистри има 2 дела: most significant (AH, BH, CH, DH) и least significant (AL, BL, CL, DL) дел.

8086 има 3 покажувачки регистри Stack pointer (SP) – се користи како offset за стекот Base pointer (BP) – за покажување кон параметри кои се

вметнуваат на стек Instruction pointer (IP) – ја чува адресата на следната

инструкција

45

Intel архитектури

8086 има 2 индексни регистри SI (source index) - покажувач на почетен стринг кај стринг

операции DI (destination index) – покажувач на одредиште кај стринг

операции Има и status flags регистер чии битови укажуваат на overflow, carry Асемблерската програма кај 8086 е поделена на 3 сегменти,

специјални блокови кои чуваат специфична информација: Code segment – ја чува програмата Data segment – ги чува податоците Stack segment – го чува програмскиот стек

За пристап до информација во некој од овие сегменти потребно е да се специфицира поместување (offset) од почетокот на соодветниот сегмент.

46

Intel архитектури

Затоа се потребни сегментни поинтери за сместување на адресите на сегментите. Се реализираат со следните регистри: CS (code segment) DS (data segment) SS (stack segment) ES (extra segment) – се користи од некои операции со

стрингови за адресирање на меморија. Адресите се специфицираат користејќи segment:offset

адресирање во форма xxx:yyy, каде xxx е вредност во сегментниот регистер а yyy е offset.

47

Intel архитектури

Во 1980 Intel го воведува 8087 кој додава floating-point инструкции на 8086 машинското множество, како и 80-битен стек.

Во 1982 го произведува 80286 може да адресира 16 милиони bytes меморија

Во 1985 го произведува 80386 32 битен чип, може да адресира 4 билиони bytes меморија Поддршка за мултитаскинг Имињата кај 32 битните регистри на 80386 вклучуваат

префикс Е (наместо AX, BX, CX, DX се користи EAX, EBX, ECX, EDX).

Програмерите сеуште може да пристапат до AX, AL, AH

48

Intel архитектури 80386 и 80486 се 32 битни машини со 32 битна магистрала 80486 има пософистициран кеш и инструкциски цевковод и

вграден математички копроцесор

Pentium серијата почнува со процесор со 32 битни регистри и 64 битна податочна магистрала, како и суперскаларен дизајн ( CPU има повеќе ALU и може да извршува повеќе од една инструкција во еден такт на системскиот часовник, односно изведува повеќе инструкции паралелно).

Pentium Pro Подобрена суперскаларна организација Предвидување на разгранувања Анализа на податочниот проток

49

Intel архитектури Pentium II

MMX технологија графичко, видео и аудио процесирање

Pentium III Дополнителни инструкции со подвижна запирка за 3D графика

Pentium II и Pentium III користат комбиниран приод, CISC архитектура со RISC јадра кои може да преведуваат од CISC во RISC инструкции.

Pentium 4 Има брзина на системски часовник од 1.4 GHz, 42 милиони

транзистори за CPU, се користи hyper-pipeline, 400 MHz системска магистрала, дополнителни floating point и cache memory подобрувања.

50

Intel архитектури

Во 2001 се произведува Itanium, 64 битен чип, кој воведува регистерски базиран програмски јазик и многу богато инструкциско множество.

Има хардверски емулатор за компатибилност со 32 битните архитектури и x86 архитектурите.

4 integer единици, 2 floating point единици, значајно количество на кеш меморија на 4 различни нивоа, 128 floating point регистри, 128 integer регистри и повеќе регистри за општа намена за ефикасно земање инструкции при разгранување.

Може да адресира до 16 GB меморија.

51

Програма за собирање 5 броја во асемблер за x86

52

Програма за собирање 5 броја во асемблер за x86

Се користата асемблерски директиви Code segment и Data Segment.

Со воведување на инструкцијата LOOP може да се поедностави програмата:

top related