35
1 ИНСТРУКЦИСКО МНОЖЕСТВО Предавач: д-р Цвета Мартиновска Фонд на часови: 2+2

ИНСТРУКЦИСКО МНОЖЕСТВО

  • Upload
    eros

  • View
    81

  • Download
    0

Embed Size (px)

DESCRIPTION

ИНСТРУКЦИСКО МНОЖЕСТВО. Предавач : д-р Цвета Мартиновска Фонд на часови : 2+2. Инструкциски формати. Инструкцијата се состои од код на операција и информации за тоа од каде да се земат операндите и каде да се смести резултатот. - PowerPoint PPT Presentation

Citation preview

Page 1: ИНСТРУКЦИСКО МНОЖЕСТВО

1

ИНСТРУКЦИСКО МНОЖЕСТВО

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

Page 2: ИНСТРУКЦИСКО МНОЖЕСТВО

2

Инструкциски формати

Инструкцијата се состои од код на операција и информации за тоа од каде да се земат операндите и каде да се смести резултатот.

На сликата се прикажани а)нула-адресен, b)едно-адресен, c)дво-адресен и d) три-адресен инструкциски формат.

Page 3: ИНСТРУКЦИСКО МНОЖЕСТВО

3

Инструкциски формати

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

Инструкциите може да имаат помала, иста или поголема должина од меморискиот збор.

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

Page 4: ИНСТРУКЦИСКО МНОЖЕСТВО

4

Инструкциски формати

Пократки инструкции значат поголема брзина на извршување на инструкции. Ако t е број на битови во секунда кои може да се земат од инструкцискиот кеш, а r е должината на инструкцијата, тогаш t/r инструкции може да се земат од кеш меморијата.

Должината на инструкциите влијае на бројот на инструкции кои се стартуваат по clock циклус и според тоа влијае на перформансите на процесорот.

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

Бројот на битови за адреса влијае на организација на меморијата. Може секој бит да е адресибилен (Burroughs B1700) или меморијата да има многу долги зборови (CDC Cyber серии со должина на збор 60 бита)

Page 5: ИНСТРУКЦИСКО МНОЖЕСТВО

5

Сместување на операнди во различни архитектури

Според тоа каде се сместени операндите архитектурите се делат на:

Меморија-меморија – може да имаат 2 или 3 операнди во меморија. Пример: VAX

Регистер-меморија – најмалку еден операнд е во регистер, а другите во меморија. Пример: Intel, Motorola

Load-store – операндите се сместени во регистри. Пример: SPARC, MIPS, ALPHA, PowerPC

Ако пристапот до меморија е брз стек-базиран дизајн е добра идеа, но ако меморијата е бавна подобро е да се користат повеќе регистри како во UltraSPARC III.

Page 6: ИНСТРУКЦИСКО МНОЖЕСТВО

6

Карактеристики на архитектури кои користат повеќе регистри за општа намена

Должина на инструкција и број на операнди -фиксна должина троши простор но е брза и дава подобри

перформанси при проточно изведување -варијабилна должина е покомплексна за декодирање Типови на инструкции – ако инструкциите имаат должина колку

мемориски збор тогаш се перфектно подредени во меморија, а ако се половина, четвртина итн од збор може да има загуба на простор.

Вообичаени инструкциски формати

Page 7: ИНСТРУКЦИСКО МНОЖЕСТВО

7

Број на операнди и должина на инструкција

Инструкциите на тековните архитектури имаат: Фиксна должина – побрзо декодирање но се троши простор Варијабилна должина – посложено декодирање но се штеди

простор

Компромис е да се користат 2 или 3 инструкциски должини. Вообичаен број на операнди во инструкциите е 0,1,2 или 3. Аритметичките и логичките операции користат 2 операнди, но

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

Трет операнд вообичаено е одредиштето . Ако се користи stack може да се извршуваат операции со

инструкции со 0 операнди

Page 8: ИНСТРУКЦИСКО МНОЖЕСТВО

8

Број на операнди и должина на инструкција

Во архитектурите базирани на stack најголем број инструкции се состојат само од операциски код. Се користат и pop и push инструкции за бришење и сместување на операнд на stack.

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

Стекот е LIFO (last in first out) структура. Push X -вметнување на податок од мемориска локација X на врв

на стек. Pop X – бришење на податок од врв на стекот и сместување на

податокот на мемориска локација X. Организацијата на стекот е ефективна за пресметка на долги

аритметички изрази напишани во Postfix нотација.

Page 9: ИНСТРУКЦИСКО МНОЖЕСТВО

9

Број на операнди и должина на инструкција

Пример: Со користење на инструкции со 0,1,2 или 3 операнди напишана е програма за пресметување на аритметички изрази.

Израз кој треба да се пресмета Z=(X*Y)+(W*U)

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

Кај Intel асемблер првиот операнд е одредиште, а кај Motorola асемблер првиот операнд е извор.

Page 10: ИНСТРУКЦИСКО МНОЖЕСТВО

10

Број на операнди и должина на инструкција

Инструкции со 2 операнди, вообичаено еден операнд е во регистер, ретко двата операнди се во меморија

Page 11: ИНСТРУКЦИСКО МНОЖЕСТВО

11

Број на операнди и должина на инструкција

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

Page 12: ИНСТРУКЦИСКО МНОЖЕСТВО

12

Број на операнди и должина на инструкција

Кога се намалува бројот на операнди се зголемува должината на програмата.

Инструкции со 0 операнди, кај stack архитектура

Page 13: ИНСТРУКЦИСКО МНОЖЕСТВО

13

Проширување на кодот на операција

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

Пример: машина со 16 битни инструкции и 16 регистри. За да се адресираат 16 регистри потребни се 4 бита.

Може да се кодираат 16 инструкции секоја со по три регистерски операнди, или да се користат 4 бита за код на операција и 12 бита за мемориска адреса ако меморијата е 4К.

Page 14: ИНСТРУКЦИСКО МНОЖЕСТВО

14

Проширување на кодот на операција

Пример: Треба да се кодираат 15 инструкции со 3 операнди 14 инструкции со 2 операнди 31 инструкција со 1 операнди 16 инструкции со 0 операнди

Page 15: ИНСТРУКЦИСКО МНОЖЕСТВО

15

Проширување на кодот на операција

Page 16: ИНСТРУКЦИСКО МНОЖЕСТВО

16

Проширување на кодот на операција

Оваа шема го прави декодирањето покомплексно:

Page 17: ИНСТРУКЦИСКО МНОЖЕСТВО

17

Формати на инструкции кај Pentium 4

Форматите на инструкции кај Pentium 4 се нерегуларни и комплексни.

Page 18: ИНСТРУКЦИСКО МНОЖЕСТВО

18

Формати на инструкции кај Pentium 4

Во поранешните Intel архитектури сите кодови на операции имале должина 1 byte. Prefix byte се користел како дополнителен код на операција.

Битот byte/word укажува на големината на меморискиот податок, а следниот бит означува дали меморијата е извор или одредиште за операцијата.

Во многу инструкции кои имаат операнд во меморија бајтот по код на операција дава податоци за операндот: 2 бита означуваат начин на адресирање, 3 бита проширување на кодот на операција. Некои начини на адресирање бараат дополнителен бајт наречен SIB (Scale, Index, Base).

Некои инструкции имаат 1,2 или 4 bytes за специфицирање на мемориска адреса на операнд , а може да содржат и други 1,2 или 4 bytes како непосреден операнд.

Page 19: ИНСТРУКЦИСКО МНОЖЕСТВО

19

Формати на инструкции кај UltraSPARC III

UltraSPARC III има само 32 битни инструкции. Типична аритметичка инструкција специфицира 2 регистри за

операнди и еден регистер за сместување на резултатот.

Page 20: ИНСТРУКЦИСКО МНОЖЕСТВО

20

Формати на инструкции кај UltraSPARC III

На почетокот SPARC имал мал број на инструкции но подоцна со одделување на битови од некои полиња се додадени нови инструкции.

На пример, инструкција со предвидување на разгранување е добиена од формат 3 кога од полето за поместување се земени 3 бита (1 за предвидување на разгранување и 2 за испитување на услов).

Или формат 1б се користел за конверзија на integer во floating-point, при што помето за непосреден операнд е разделено на 5 бита за регистер и 8 бита за проширен код на операција.

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

Page 21: ИНСТРУКЦИСКО МНОЖЕСТВО

21

Формати на инструкции кај UltraSPARC III

Во форматот 1а двата операнди се во регистри, а во 1б едниот операнд е константа со вредност од -4096 до +4095. Битот 13 селектира еден од овие 2 формати. Со 6 бита код на операција може да се специфицираат 64 инструкции.

Во 32 битни инструкции не може да се вклучи 32 битна константа, па инструкцијата SETHI сетира 22 бита оставајќи друга инструкција да ги сетира останатите 10 бита.

Инструкциите за разгранување го користат форматот 3, каде полето COND е условот кој се тестира. Последниот формат е наменет за инструкција за повик на процедура.

Page 22: ИНСТРУКЦИСКО МНОЖЕСТВО

22

Формати на инструкции кај 8051

8051 e процесор на Intel од типот „невидливи компјутери„. Има 6 едноставни формати на инструкции со 1,2 или 3 bytes. Формат 1 се состои само од код на операција. На пример,

инструкцијата која го инкрементира акумулаторот го користи овој формат.

Формат 2 има код на операција и 3 бита број на регистер. Овие инструкции вообичаено користат акумулатор и регистер.

На пример, собирање на броеви во акумулатор и регистер. Формат 3 има операнд од 1 byte, кој може да е непосреден

операнд. Форматите 4 и 5 се користат кога нема екстерна меморија

така да сите програмски адреси мора да се меѓу 4096 (8051) или 8192 (8052). Кога постои екстерна меморија од 8КB потребни се 16 бита за адреса.

Форматот 6 користи два 8 битни операнди.

Page 23: ИНСТРУКЦИСКО МНОЖЕСТВО

23

Начини на адресирање

Непосредно (immediate addressing) Директно (direct addressing) Регистерско (register addressing) Индиректно (indirect addressing), регистерско-индиректно Индексно и базно (indexed and based addressing) Stack адресирање

Page 24: ИНСТРУКЦИСКО МНОЖЕСТВО

24

Непосредно адресирање

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

Load 008 – означува дека податокот 8 се сместува во акумулаторот

Брзо но нефлексибилно адресирање

Page 25: ИНСТРУКЦИСКО МНОЖЕСТВО

25

Директно адресирање

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

Load 008 – означува дека вредноста на мемориската адреса 008 се сместува во акумулаторот.

Брзо и пофлексибилно адресирање од непосредното

Page 26: ИНСТРУКЦИСКО МНОЖЕСТВО

26

Регистерско адресирање

Содржината на регистерот кој е специфициран со адресата дадена по операцискиот код се користи како операнд.

Наместо мемориска адреса се специфицира регистер од каде се зема операндот.

Page 27: ИНСТРУКЦИСКО МНОЖЕСТВО

27

Индиректно адресирање

По кодот на операција е дадена адреса на која се наоѓа физичката адреса на операндот.

Load 008 – ако на локација 008 во меморија се наоѓа вредност 2A0. Вредноста на операндот се зема од адреса 2A0 и се сместува во акумулаторот.

Варијанта на ова адресирање е битовите за операнд да специфицираат регистер наместо мемориска адреса од која ќе се земе операнд – регистерско индиректно адресирање (register indirect addressing). Се користи регистерската адреса како поинтер кон податокот.

Page 28: ИНСТРУКЦИСКО МНОЖЕСТВО

28

Регистерско индиректно адресирање

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

Јамката не содржи мемориски адреси, но само регистерско и регистерско индиректно адресирање.

Адресата на полето А од 1024 елементи се става во R2. Адресата на првиот мемориски збор после полето се става во R3. Меморискиот збор се состои од 4 bytes.

Page 29: ИНСТРУКЦИСКО МНОЖЕСТВО

29

Индексно и базно адресирање

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

Load X – ако R1 е индексен регистер кој чува вредност 1, ефективната адреса на операндор е X+1.

Во базното адресирање наместо индексен се користи базен регистер, кој чува поместување од базната адреса.

Овие 2 начина на адресирање се користат при работа со стрингови.

Page 30: ИНСТРУКЦИСКО МНОЖЕСТВО

30

Индексно адресирање MOV R4, A(R2) означува дека одредиштето користи регистерско адресирање со R4

како регистер, а изворот индексно адресирање со офсет А и регистер R2. На пример, ако А=124300, меморискиот збор на адреса А се собира со вредноста во R4. Бидејќи R2 е 4 во следниот чекор меморискиот збор на адреса 124304 ќе се собере со вредноста во R4.

Page 31: ИНСТРУКЦИСКО МНОЖЕСТВО

31

Stack адресирање

Со помош на Stack можни се нула-адресни инструкции. Се подразбира дека операндот е на stack.

Postfix нотација е начин на пресметка на формули со компјутерски стек. Postfix нотација се добива со postorder изминување на стебло.

Page 32: ИНСТРУКЦИСКО МНОЖЕСТВО

32

Stack адресирање

Во табелата е претставено користење на стек за пресметка на формула во Postfix нотација.

Page 33: ИНСТРУКЦИСКО МНОЖЕСТВО

33

Postorder пример (лево, десно, корен)

a

b c

d ef

g h i j

g h d i e b j f c a

Page 34: ИНСТРУКЦИСКО МНОЖЕСТВО

34

Postorder на израз претставен со бинарно дрво

+

a b

-

c d

+

e f

*

/

Ја дава postfix формата на изразот.

a b + c d - * e f + /

Page 35: ИНСТРУКЦИСКО МНОЖЕСТВО

35

Начини на адресирање

Пример: Изгледот на меморијата и регистерот R1 за Load 800 инструкцијата при различни адресирања.

При регистерски адресен начин Load R1 полни 900 во акумулаторот.