1 / 35

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

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

eros
Télécharger la présentation

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

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. ИНСТРУКЦИСКО МНОЖЕСТВО Предавач: д-р Цвета Мартиновска Фонд на часови: 2+2

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

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

  4. Инструкциски формати • Пократки инструкции значат поголема брзина на извршување на инструкции. Ако t е број на битови во секунда кои може да се земат од инструкцискиот кеш, а r е должината на инструкцијата, тогаш t/r инструкции може да се земат од кеш меморијата. • Должината на инструкциите влијае на бројот на инструкции кои се стартуваат по clock циклус и според тоа влијае на перформансите на процесорот. • Бројот на битови во полето за код на инструкција е важен за изразување на сите потребни операции. • Бројот на битови за адреса влијае на организација на меморијата. Може секој бит да е адресибилен (Burroughs B1700)или меморијата да има многу долги зборови (CDC Cyber серии со должина на збор 60 бита)

  5. Сместување на операнди во различни архитектури • Според тоа каде се сместени операндите архитектурите се делат на: • Меморија-меморија – може да имаат 2 или 3 операнди во меморија.Пример: VAX • Регистер-меморија – најмалку еден операнд е во регистер, а другите во меморија. Пример: Intel, Motorola • Load-store – операндите се сместени во регистри. Пример: SPARC, MIPS, ALPHA, PowerPC • Ако пристапот до меморија е брз стек-базиран дизајн е добра идеа, но ако меморијата е бавна подобро е да се користат повеќе регистри како во UltraSPARC III.

  6. Карактеристики на архитектури кои користат повеќе регистри за општа намена • Должина на инструкција и број на операнди • -фиксна должина троши простор но е брза и дава подобри перформанси при проточно изведување • -варијабилна должина е покомплексна за декодирање • Типови на инструкции – ако инструкциите имаат должина колку мемориски збор тогаш се перфектно подредени во меморија, а ако се половина, четвртина итн од збор може да има загуба на простор. • Вообичаени инструкциски формати

  7. Број на операнди и должина на инструкција • Инструкциите на тековните архитектури имаат: • Фиксна должина – побрзо декодирање но се троши простор • Варијабилна должина – посложено декодирање но се штеди простор • Компромис е да се користат 2 или 3 инструкциски должини. • Вообичаен број на операнди во инструкциите е 0,1,2 или 3. • Аритметичките и логичките операции користат 2 операнди, но може да се извршуваат и со еден операнд ако имплицитно се подразбира локацијата на другиот операнд. • Трет операнд вообичаено е одредиштето . • Ако се користи stack може да се извршуваат операции со инструкции со 0 операнди

  8. Број на операнди и должина на инструкција • Во архитектурите базирани на stack најголем број инструкции се состојат само од операциски код. Се користат и pop и push инструкции за бришење и сместување на операнд на stack. • Stack-от чува меѓуподатоци, овозможува проследување на параметри на процедури, овозможува ефикасна пресметка на долги аритметички изрази напишани во postfix нотација. • Стекот е LIFO (last in first out) структура. • Push X -вметнување на податок од мемориска локација X на врв на стек. • Pop X – бришење на податок од врв на стекот и сместување на податокот на мемориска локација X. • Организацијата на стекот е ефективна за пресметка на долги аритметички изрази напишани во Postfix нотација.

  9. Број на операнди и должина на инструкција • Пример: Со користење на инструкции со 0,1,2 или 3 операнди напишана е програма за пресметување на аритметички изрази. • Израз кој треба да се пресмета Z=(X*Y)+(W*U) • Инструкции со 3 операнди, најмалку еден операнд е во регистер, првиот операнд е одредиште. • Кај Intel асемблер првиот операнд е одредиште, а кај Motorola асемблер првиот операнд е извор.

  10. Број на операнди и должина на инструкција • Инструкции со 2 операнди, вообичаено еден операнд е во регистер, ретко двата операнди се во меморија

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

  12. Број на операнди и должина на инструкција • Кога се намалува бројот на операнди се зголемува должината на програмата. • Инструкции со 0 операнди, кај stack архитектура

  13. Проширување на кодот на операција • Со проширување на кодот на операција се овозможува да се кодираат повеќе кратки инструкции, но во исто време да постои можност за креирање подолги инструкции. • Пример: машина со 16 битни инструкции и 16 регистри. • За да се адресираат 16 регистри потребни се 4 бита. Може да се кодираат 16 инструкции секоја со по три регистерски операнди, или да се користат 4 бита за код на операција и 12 бита за мемориска адреса ако меморијата е 4К.

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

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

  16. Проширување на кодот на операција • Оваа шема го прави декодирањето покомплексно:

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

  18. Формати на инструкции кај Pentium 4 • Во поранешните Intel архитектури сите кодови на операции имале должина 1 byte. Prefix byte се користел како дополнителен код на операција. • Битот byte/word укажува на големината на меморискиот податок, а следниот бит означува дали меморијата е извор или одредиште за операцијата. • Во многу инструкции кои имаат операнд во меморија бајтот по код на операција дава податоци за операндот: 2 бита означуваат начин на адресирање, 3 бита проширување на кодот на операција. Некои начини на адресирање бараат дополнителен бајт наречен SIB (Scale, Index, Base). • Некои инструкции имаат 1,2 или 4 bytes за специфицирање на мемориска адреса на операнд , а може да содржат и други 1,2 или 4 bytes како непосреден операнд.

  19. Формати на инструкции кај UltraSPARC III • UltraSPARC III има само 32 битни инструкции. • Типична аритметичка инструкција специфицира 2 регистри за операнди и еден регистер за сместување на резултатот.

  20. Формати на инструкции кај UltraSPARC III • На почетокот SPARC имал мал број на инструкции но подоцна со одделување на битови од некои полиња се додадени нови инструкции. • На пример, инструкција со предвидување на разгранување е добиена од формат 3 кога од полето за поместување се земени 3 бита (1 за предвидување на разгранување и 2 за испитување на услов). • Или формат 1б се користел за конверзија на integer во floating-point, при што помето за непосреден операнд е разделено на 5 бита за регистер и 8 бита за проширен код на операција. • Првите 2 бита од секоја инструкција помагаат да се определи форматот на инструкција.

  21. Формати на инструкции кај UltraSPARC III • Во форматот 1а двата операнди се во регистри, а во 1б едниот операнд е константа со вредност од -4096 до +4095. Битот 13 селектира еден од овие 2 формати. Со 6 бита код на операција може да се специфицираат 64 инструкции. • Во 32 битни инструкции не може да се вклучи 32 битна константа, па инструкцијата SETHI сетира 22 бита оставајќи друга инструкција да ги сетира останатите 10 бита. • Инструкциите за разгранување го користат форматот 3, каде полето COND е условот кој се тестира. Последниот формат е наменет за инструкција за повик на процедура.

  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 битни операнди.

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

  24. Непосредно адресирање • Кај непосредно адресирање операндот е сместен во самата инструкција по кодот на операција. • Load 008 – означува дека податокот 8 се сместува во акумулаторот • Брзо но нефлексибилно адресирање

  25. Директно адресирање • Операндот е сместен на адреса дадена во иструкцијата по кодот на операција. • Load 008 – означува дека вредноста на мемориската адреса 008 се сместува во акумулаторот. • Брзо и пофлексибилно адресирање од непосредното

  26. Регистерско адресирање • Содржината на регистерот кој е специфициран со адресата дадена по операцискиот код се користи како операнд. • Наместо мемориска адреса се специфицира регистер од каде се зема операндот.

  27. Индиректно адресирање • По кодот на операција е дадена адреса на која се наоѓа физичката адреса на операндот. • Load 008 – ако на локација 008 во меморија се наоѓа вредност 2A0. Вредноста на операндот се зема од адреса 2A0 и се сместува во акумулаторот. • Варијанта на ова адресирање е битовите за операнд да специфицираат регистер наместо мемориска адреса од која ќе се земе операнд – регистерско индиректно адресирање (register indirect addressing). Се користи регистерската адреса како поинтер кон податокот.

  28. Регистерско индиректно адресирање • Првите 3 инструкции од програмот користат регистерско адресирање за првиот операнд и непосредено адресирање за вториот операнд. • Јамката не содржи мемориски адреси, но само регистерско и регистерско индиректно адресирање. • Адресата на полето А од 1024 елементи се става во R2. • Адресата на првиот мемориски збор после полето се става во R3. • Меморискиот збор се состои од 4 bytes.

  29. Индексно и базно адресирање • Индекс регистерот се користи за чување на поместување (offset) кое се додава на операндот и ја дава ефективната адреса на податокот. • Load X – ако R1 е индексен регистер кој чува вредност 1, ефективната адреса на операндор е X+1. • Во базното адресирање наместо индексен се користи базен регистер, кој чува поместување од базната адреса. • Овие 2 начина на адресирање се користат при работа со стрингови.

  30. Индексно адресирање • MOV R4, A(R2) • означува дека одредиштето користи регистерско адресирање со R4 како регистер, а изворот индексно адресирање со офсет А и регистер R2. На пример, ако А=124300, меморискиот збор на адреса А се собира со вредноста во R4. Бидејќи R2 е 4 во следниот чекор меморискиот збор на адреса 124304 ќе се собере со вредноста во R4.

  31. Stack адресирање • Со помош на Stack можни се нула-адресни инструкции. Се подразбира дека операндот е на stack. • Postfix нотација е начин на пресметка на формули со компјутерски стек. Postfix нотација се добива со postorder изминување на стебло.

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

  33. a b c f e d j g h i Postorder пример (лево, десно, корен) g h d i e b j f c a

  34. / * + e f + - a b c d Postorder на израз претставен со бинарно дрво a b + c d - * e f + / Ја дава postfix формата на изразот.

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

More Related