Ի՞նչ է համակարգչային հրամանատարական համակարգը: Պրոցեսորներ. Համակարգչային հրամանատարական համակարգ. Կառավարման սարքեր. Ներպրոցեսորային տեղեկատվության մուտքային-ելքային համակարգերի կազմակերպում: Թվաբանական և տրամաբանական մշակման հրամաններ

Ի՞նչ է համակարգչային հրամանատարական համակարգը: Պրոցեսորներ. Համակարգչային հրամանատարական համակարգ. Կառավարման սարքեր. Ներպրոցեսորային տեղեկատվության մուտքային-ելքային համակարգերի կազմակերպում: Թվաբանական և տրամաբանական մշակման հրամաններ

Դասախոսություն 11 ՀԱՄԱԿԱՐԳԻՉ ՀԻՄՆԱԿԱՆ ՀՐԱՄԱՆՆԵՐ Հրամանների դասակարգում ըստ տարբեր չափանիշների Համակարգչային հրամանների կառուցվածք Տվյալների փոխանցման հրամաններ Տվյալների մշակման հրամաններ Վերահսկիչ փոխանցման հրամաններ Ենթածրագրերի հետ աշխատելու հրամաններ: Դարեր. Համակարգչային այլ հրամաններ:

Համակարգչային հրամանների համակարգ Համակարգչի վրա լուծված խնդիրների ամբողջ բազմազանությունն իրականացվում է շատ պարզ հրամանների փոքր հավաքածուի միջոցով: Տիպիկ համակարգչի հրամանատարական համակարգը ներառում է ընդամենը 60-150 հիմնական հրաման: Բոլոր հրամանները հիմնականում օգտագործվում են շատ պարզ գործողություններ կատարելու համար, ինչպիսիք են կարդալ, հիշել, ավելացնել, տեղափոխել, համեմատել և այլն: Համակարգչի խելացիությունը ձեռք է բերվում այն ​​պատճառով, որ համակարգիչը ունակ է մեծ թվով ծրագրեր իրականացնելու: այսպիսի պարզ գործողություններ՝ հսկայական, մարդկանց համար անհասանելի արագությամբ։ Համակարգչային հրամանների համակարգը նկարագրելիս սովորաբար ընդունված է հրամանները դասակարգել ըստ հետևյալ չափանիշների.

Համակարգչային հրամանների դասակարգումը ըստ գործառական նպատակի Տվյալների փոխանցման հրամաններ Տվյալների մշակման հրամաններ Վերահսկիչ փոխանցման հրամաններ Լրացուցիչ (այլ) Ըստ հասցեների քանակի Չեղյալ հասցե կամ անհասցե Մեկ հասցեով Երկու հասցեով Երեք հասցեով Գործողության կոդավորման եղանակով Ըստ երկարության ֆիքսված երկարությամբ Գործողության կոդի փոփոխական երկարությամբ Գործառնական կոդի փոփոխական երկարությամբ Հասցեավորման մեթոդով Մեկ բայթ (բառ) Երկու բայթ (բառեր) երեք բայթ (բառեր)

Գործառնական կոդը a 1 a 2 a 3 - երեք հասցեով հրաման a 1, a 2 - բջիջների հասցեներ (գրանցիչներ), որտեղ գտնվում են գործողության մեջ ներգրավված համարները (օպերանդները), և 3 - RAM բջիջի հասցեն, որտեղ պետք է լինի արդյունքը: տեղադրված Գործառնական կոդը a 1 a 2 - Երկու հասցեով հրաման Արդյունքը գրվում է a բջիջում 2 Գործառնական կոդը a 1 - Uniaaddress հրամանը a 1 – այն բջջի հասցեն, որտեղ պահվում է գործողության մեջ ներգրավված համարը կամ այն ​​բջջի հասցեն, որտեղ արդյունքը գրված է Գործառնական կոդը - Զրո հասցեի հրաման Բոլոր օպերանդները CPU ռեգիստրում

Տվյալների փոխանցման հրամաններ Հրամանների այս խումբը ներառում է հրամանների ենթախմբեր՝ պրոցեսորի ներսում ռեգիստրների միջև կոդեր փոխանցելու համար, պրոցեսորի ռեգիստրներից հիշողություն, հիշողությունից պրոցեսորի ռեգիստրներ, հիշողության մի բջիջից մյուսը և տվյալների փոխանցում պրոցեսորի և արտաքին սարքի պորտերի միջև: Առանձին ենթախումբը բաղկացած է թիմերից՝ ստեկի հետ աշխատելու համար: Դրանք թույլ են տալիս ժամանակավոր պահեստավորման համար տվյալներ տեղադրել կույտի վրա և հեռացնել տվյալները փաթեթից, երբ անհրաժեշտ է դրանք օգտագործել:

Տվյալների մշակման հրամաններ Հրամանների այս խումբը տվյալների վրա կատարվող գործողությունների առումով կարելի է բաժանել թվաբանական (ավելացնել, հանել, բազմապատկել, համեմատել), տրամաբանական (AND, OR, NOT գործողություններ և այլն) և shift հրամանների։ Այս տեսակի հրահանգները կարող են ունենալ մեկ կամ երկու օպերանդ: Օպերանդները կարող են պահվել պրոցեսորի ռեգիստրներում, հիշողության մեջ կամ հենց հրահանգում:

Գործողության արդյունքը ձևավորվում է ընդունող գրանցամատյանում կամ մասնագիտացված կուտակիչ գրանցամատյանում: Այս խմբի հրամանները նաև ձևավորում են արդյունքի նշաններ, որոնք դրված են պրոցեսորի դրոշակների ռեգիստրում. փոխանցում ամենակարևոր բիթից, արտահոսք, զրոյական արդյունք և այլն:

Իմացեք ավելին համեմատելու հրամանի մասին Սովորաբար, պրոցեսորը կատարում է հանման գործողություն՝ երկու թվերը համեմատելու համար: Հանման արդյունքի հիման վրա դրոշակները դրվում են դրոշի ռեգիստրում: Ակնհայտ է, որ եթե համեմատվող թվերը հավասար են, ապա հանման արդյունքը կլինի զրո, իսկ զրոյական արդյունքի դրոշը կսահմանվի գրանցամատյանում: Եթե ​​համեմատվող թվերից առաջինն ավելի մեծ է, ապա հանման արդյունքը կլինի բացասական և կսահմանվի բացասական արդյունքի դրոշակ: Հանման արդյունքը չի պահվում հիշողության մեջ, քանի որ դրոշի ռեգիստրի վիճակը կարող է օգտագործվել թվերի համեմատության արդյունքները դատելու համար:

Վերահսկիչ փոխանցման հրամաններ Դրանք կարևոր են, քանի որ դրանք օգտագործվում են հրամանների բնական կարգը փոխելու և ծրագրերում ցիկլային բաժիններ կազմակերպելու համար: Կառավարման փոխանցման ամենապարզ հրահանգը JMP անվերապահ ցատկի հրահանգն է, որը բեռնում է հրահանգում նշված ցատկի հասցեն ծրագրի հաշվիչում: Պայմանական թռիչքի հրահանգները ստուգում են հրամանում նշված պայմանը և փոփոխում ծրագրի հաշվիչը, եթե պայմանը ճիշտ է:

Src="http://present5.com/presentation/3/-29919247_13569617.pdf-img/-29919247_13569617.pdf-11.jpg" alt="Պայմանական թռիչքի հրամանի IF դրույթի օրինակ (A>B ) այնուհետև գնացեք ինչ-որ լեզվի L"> Пример команды условного перехода Оператор IF (A>B) then go to L некоторого языка высокого уровня может быть реализован двумя командами ЭВМ: СРАВНИТЬ А и В ПЕРЕЙТИ ЕСЛИ БОЛЬШЕ К АДРЕСУ L Если А>В, то результат вычитания будет положителен и соответственно флаг знака во флаговом регистре не установится. Вторая команда (условный переход) проверяет состояние флага знака и, если он не установлен, модифицирует программный счетчик так, чтобы его значение указывало на адрес L.!}

Ենթածրագրերի կազմակերպում Ծրագրավորման մեջ լայնորեն կիրառվում է ենթածրագրերի կազմակերպում կոչվող տեխնիկան։ Ենթակարգը նկարագրվում է մեկ անգամ, բայց կարող է բազմիցս կանչվել ծրագրի տարբեր վայրերից: Ենթակարգը կարող է զանգահարել մեկ ուրիշին, մինչ այն աշխատում է: Ենթածրագրի աշխատանքը ավարտելուց հետո հսկողությունը պետք է փոխանցվի հիշողության հաջորդ հրամանին անմիջապես այս ենթածրագրին մուտք գործելու հրամանից հետո: Հրամանի հասցեն, որին հսկողությունը փոխանցվում է ենթածրագրի ավարտից հետո, կոչվում է վերադարձի հասցե։

Որտե՞ղ պետք է պահեմ իմ վերադարձի հասցեն: Ենթածրագրի կատարումը սկսելու համար ծրագրի հաշվիչը պետք է բեռնված լինի ենթածրագրի առաջին հրահանգի հասցեով։ Ենթածրագրից վերադառնալու համար դուք պետք է ինչ-որ տեղ հիշեք վերադարձի հասցեն: Դուք կարող եք, օրինակ, վերադարձի հասցեն պահել պրոցեսորի ռեգիստրներից մեկում: Հետադարձ հասցեի պահպանման այս մեթոդը շատ պարզ է և հեշտ իրագործելի: Այնուամենայնիվ, սովորական է գտնել ենթածրագրեր, որոնք կանչում են այլ ենթածրագրեր: Թող հիմնական ծրագիրը կանչի ենթածրագրեր A: Այն իր հերթին կոչվում է ենթածրագրեր B: Եթե A ենթածրագրի վերադարձի հասցեն պահվում է պրոցեսորի ռեգիստրում, ապա որտեղ պետք է տեղադրվի վերադարձի հասցեն B ենթածրագրին կանչելիս:

Ֆոն Նեյմանի համակարգչի աշխատանքի ընդհանրացված ալգորիթմ Նախաստորագրում Հրամանի ստացում Ծրագրի հաշվիչի ավելացում Ապակոդավորում և հրամանի կատարում Ոչ Հրահանգ «Դադարեցնել պրոցեսորը» Այո Նախապատրաստում

Կույտի հայեցակարգը Համակարգիչների մեծամասնությունն օգտագործում է ապարատային աջակցվող տվյալների կառուցվածք, որը կոչվում է ստեկ: Դույզը տվյալների կառուցվածք է, որը կազմակերպված է վերջին մուտքի, առաջին դուրս գալու սկզբունքի համաձայն, այսինքն՝ փաթեթում գրված վերջին տվյալները առաջինն են, որոնք վերցվում են դրանից: Թարգմանված է անգլերենից։ stack - բուրգ. Կույտի անալոգը կարող է լինել թիթեղների կույտ: Դուք կարող եք թիթեղը դնել միայն վերևից, նորից կարող եք հեռացնել միայն վերին ափսեը առանց որևէ խնդիրների:

Դույների կազմակերպում 1. Համակարգչում RAM-ի տարածքը հատկացվում է կույտը կազմակերպելու համար, և կույտի ցուցիչի ռեգիստրն օգտագործվում է դրան հասցեագրելու և բուրգ մուտք գործելու համար: 2. Կույտի ցուցիչի ռեգիստրը պահում է հիշողության բջիջի հասցեն, որը պարունակում է վերջին արժեքը, որը դրվել է կույտի վրա: 3. Երբ մի թիվ գրվում է կույտի վրա, ցցերի ցուցիչը փոփոխվում է, որպեսզի մատնանշի հաջորդ ազատ տեղը, և տվյալները գրվում են դրան:

4. Երբ կույտից դուրս է գալիս, տվյալները կարդում են OP բջիջից, որի վրա մատնանշված է ցուցիչը, այնուհետև կույտի ցուցիչը փոփոխվում է, որպեսզի մատնանշի կույտի վրա պահպանված նախավերջին արժեքը: 5. Սովորաբար, կույտերն աճում են հասցեների նվազման ուղղությամբ, այսինքն՝ թիվ գրելիս ստեկի ցուցիչը նվազում է, իսկ կույտից մի թիվ հանելիս՝ այն մեծանում է:

Ենթածրագրերի հետ աշխատելու հրամաններ. Stacks Stack = OP բջիջներ + գրանցում - stack ցուցիչ (CPU ALU) Գրանցվել - stack ցուցիչը պահպանում է OP բջիջի հասցեն, որը պարունակում է stack Stack տվյալների կառուցվածքի վրա տեղադրված վերջին վերադարձի հասցեն՝ օգտագործելով օրինակ Ա) Սկզբնական վիճակ. դատարկ stack OP բջիջներ Բջջի հասցեներ 1000 Ցուցանիշի կույտ 998 996 Բ) Երկու վերադարձի հասցե գրված է կույտին. 1000

Src="http://site/presentation/3/-29919247_13569617.pdf-img/-29919247_13569617.pdf-19.jpg" alt="CALL ենթածրագրի կանչի հրամանը 1. Երբ պրոցեսորը կարդում է CALL հրամանը հիշողությունից"> Работа команды вызова подпрограмм САLL 1. Когда процессор считывает из памяти команду САLL , программный счетчик увеличивается и показывает на команду, следующую за командой САLL. То есть программный счетчик теперь содержит адрес возврата, с которого должно продолжиться выполнение основной программы после окончания работы подпрограммы. 2. При выполнении обращения к подпрограмме процессор сохраняет содержимое программного счетчика в стеке, точнее, в его ячейках ОП. 3. Далее в программный счетчик загружается адрес команды, с которого начинается подпрограмма. Процессор приступает к выполнению подпрограммы.!}

RETURN հրամանի գործարկումը 1. Ենթածրագրից հիմնական ծրագիր վերադառնալու համար օգտագործեք RETURN հրամանները: 2. Ենթածրագրի վերադարձի հրահանգը կույտից դուրս է հանում կույտի վրա պահված վերադարձի հասցեն և տեղադրում այն ​​ծրագրի հաշվիչում: 3. Պրոցեսորը սկսում է կատարել հիմնական ծրագիրը: 4. Եթե եղել են մի քանի ներդիր զանգեր դեպի ենթածրագրեր, ապա վերադարձը տեղի կունենա վերջին զանգով պահպանված վերադարձի հասցեում (քանի որ կույտը օգտագործվում է վերադարձի հասցեները պահելու համար, իսկ վերջին պահված վերադարձի հասցեն առաջինը կկանչվի):

Համակարգչային այլ հրամաններ Համակարգչում կարող են լինել լրացուցիչ (հատուկ) հրամաններ: Դրանք ներառում են կենտրոնական պրոցեսորը դադարեցնելու, արտաքին սարքերի վերակայման, առանձին գործառույթների տեղադրման կամ վերակայման հրամաններ և այլն: Այսպիսով, այս դասախոսության ընթացքում համառոտ քննարկվեցին տիպիկ համակարգիչներում օգտագործվող հիմնական հրամանները և այդ հրամանների կողմից իրականացվող գործողությունները:

Համակարգչային ճարտարապետության կարևոր բաղադրիչը հրահանգների համակարգն է: Չնայած համակարգիչների տեսակների մեծ թվին, ամենացածր («մեքենայի») մակարդակում նրանք շատ ընդհանրություններ ունեն: Ցանկացած համակարգչի հրամանի համակարգն անպայման պարունակում է տեղեկատվության մշակման հրամանների հետևյալ խմբերը. 1. Տվյալների փոխանցման (մարդահամարի) հրամաններ, որոնք պատճենում են տեղեկատվությունը մի վայրից մյուսը: 2. Թվաբանական գործողություններ, որոնց իրականում համակարգչային տեխնիկան պարտական ​​է իր անվանը։ Իհարկե, ժամանակակից համակարգչում հաշվողական գործողությունների տեսակարար կշիռը նկատելիորեն նվազել է, սակայն դրանք դեռևս կարևոր դեր են խաղում ծրագրերում։ Նկատի ունեցեք, որ հիմնական թվաբանական գործողությունները սովորաբար ներառում են գումարում և հանում (վերջինս, ի վերջո, ամենից հաճախ նաև այս կամ այն ​​կերպ վերածվում է գումարման): Ինչ վերաբերում է բազմապատկմանը և բաժանմանը, շատ համակարգիչներում դրանք կատարվում են հատուկ ծրագրերի միջոցով։ 3. Տրամաբանական գործողություններ, որոնք թույլ են տալիս համակարգչին վերլուծել մշակվող տեղեկատվությունը: Ամենապարզ օրինակներն են համեմատությունը, ինչպես նաև հայտնի տրամաբանական գործողությունները՝ ԵՎ, ԿԱՄ, ՉԻ (ինվերսիա): Բացի այդ, դրանցում հաճախ ավելացվում են առանձին կոդի բիթերի վերլուծություն, դրանց վերականգնում և տեղադրում: 4. Երկուական կոդը տեղափոխվում է աջ և ձախ: Հրամանների այս խմբի կարևորությունն ապացուցելու համար բավական է հիշել սյունակի բազմապատկման կանոնը՝ յուրաքանչյուր հաջորդ արտադրյալը գրվում է նման սխեմայով՝ մեկ թվանշանի ձախ շեղումով։ Որոշ հատուկ դեպքերում, բազմապատկումը և բաժանումը սովորաբար կարող են փոխարինվել հերթափոխով (հիշեք, որ աջ ավելացնելով կամ հեռացնելով զրո, այսինքն՝ իրականում տեղափոխելով տասնորդական թիվը, կարող եք ավելացնել կամ նվազեցնել այն 10 անգամ): 5. Արտաքին սարքերի հետ փոխանակման համար տեղեկատվության մուտքագրման և ելքի հրամաններ: Որոշ համակարգիչներում արտաքին սարքերը հատուկ սպասարկման հիշողության հասցեներ են, ուստի մուտքագրումը և ելքը կատարվում է մարդահամարի հրամանների միջոցով: 6. Կառավարման հրամաններ, որոնք իրականացնում են ոչ գծային ալգորիթմներ: Սա հիմնականում ներառում է պայմանական և անվերապահ ցատկեր, ինչպես նաև ենթածրագրեր կանչելու հրամաններ (վերադարձով ցատկ): Որոշ համակարգիչներ ունեն օղակների կազմակերպման հատուկ հրամաններ, բայց դա անհրաժեշտ չէ. հանգույցը կարող է կրճատվել պայմանական և անվերապահ անցումների այս կամ այն ​​համակցության: Հաճախ հրամանների այս նույն խումբը ներառում է պրոցեսորը կառավարելու մի քանի գործողություններ, ինչպիսիք են «stop» կամ NOP («ոչ մի գործողություն»): Երբեմն դրանք բաժանվում են հատուկ խմբի մեջ։ Քանի որ պրոցեսորային սարքի բարդությունը մեծանում է, ավելանում է նաև հրամանների թիվը, որոնք վերլուծում են կառավարման բիթերի վիճակը և գործում դրանց հիման վրա: Այստեղ, որպես օրինակ, մենք կարող ենք անվանել պրոցեսորի աշխատանքային ռեժիմի բիթերը և արտաքին սարքերի ընդհատման մեխանիզմների կառավարման բիթերը: Վերջերս հրամանների հավաքածուում ավելի ու ավելի կարևոր դեր են խաղում տվյալների մի ձևաչափից մյուսը փոխարկելու հրամանները (օրինակ, 8-բիթից 16-բիթ և այլն), որոնք զգալիորեն պարզեցնում են տարբեր տեսակի տվյալների մշակումը, բայց սկզբունքորեն կարող է փոխարինվել մի քանի պարզ հրամանների հաջորդականությամբ: Հաշվի առնելով հրամանի համակարգը, չի կարելի չնշել դրա կառուցման մեջ երկու ժամանակակից փոխադարձ մրցակցող ուղղություններ՝ համակարգիչ CISC հրամանների ամբողջական փաթեթով (Complex Instruction Set Computer) և սահմանափակ հավաքածուով՝ RISC (Reduced Instruction Set Computer): Բաժանումն առաջացել է այն պատճառով, որ ժամանակի մեծ մասը համակարգիչը պետք է կատարի իր հրահանգների հավաքածուի մի փոքր մասը, մինչդեռ մնացածը օգտագործվում են ժամանակ առ ժամանակ (հայտնի հոդվածներից մեկը կատակով արտահայտում է սա հետևյալ տեսողական անալոգիայի տեսքով. «20 Բնակչության %-ը խմում է գարեջրի 80%-ը»։ Այսպիսով, եթե դուք զգալիորեն սահմանափակեք գործողությունների շարքը ամենապարզ և ամենակարճով, բայց ուշադիր օպտիմիզացնեք դրանք, դուք կստանաք բավականին արդյունավետ և արագ RISC մեքենա: Ճիշտ է, դուք ստիպված կլինեք վճարել արագության համար ծրագրային ապահովման մեջ «դուրս նետված» հրամաններ իրականացնելու անհրաժեշտությամբ, բայց հաճախ այս վճարումը արդարացված է. օրինակ, գիտական ​​հաշվարկների կամ համակարգչային գրաֆիկայի համար արագությունը շատ ավելի կարևոր է, քան ծրագրավորման խնդիրները: Ժամանակակից միկրոպրոցեսորների հրահանգավորման համակարգի հետ կապված հարցերն ավելի մանրամասն կքննարկվեն այս գլխում ավելի ուշ: Ամփոփելու համար մենք ևս մեկ անգամ շեշտում ենք, որ համակարգիչների արագ էվոլյուցիայի ընթացքում հրամանների հիմնական փաթեթը բավականին քիչ է փոխվել: Միևնույն ժամանակ, հիշողության մեջ տեղեկատվության գտնվելու վայրի հասցեն նշելու մեթոդները զգալի փոփոխություններ են կրել և արժանի են հատուկ ուշադրության: Համակարգչային հրամանը սովորաբար բաղկացած է երկու մասից՝ գործառնական և հասցեական: Գործառնական մասը (այլ կերպ կոչվում է օպերացիոն ծածկագիր - OPC) ցույց է տալիս, թե ինչ գործողություն է պետք կատարել տեղեկատվության հետ: Հասցեի մասը նկարագրում է, թե որտեղ է պահվում օգտագործված տեղեկատվությունը: Մեքենայի աշխատանքը վերահսկելու մի քանի հրամաններ կարող են չունենալ հասցեի մաս, օրինակ՝ կանգառի հրամանում. գործառնական մասը միշտ կա: Գործառնական կոդը կարելի է համարել որպես որոշակի պայմանական թիվ հրամանատարական համակարգերի ընդհանուր ցանկում: Հիմնականում այս ցանկը կառուցված է որոշակի ներքին օրինաչափությունների համաձայն, թեև դրանք միշտ չէ, որ ակնհայտ են։ Հասցեների հատվածը շատ ավելի մեծ բազմազանություն ունի և պետք է ավելի մանրամասն դիտարկել: Նախ, մենք նշում ենք, որ հրահանգները կարող են լինել մեկ, երկու կամ երեք հասցեներով՝ կախված դրանցում ներգրավված օպերանդների քանակից։ Առաջին համակարգիչները ունեին ամենապարզ և ինտուիտիվ երեք հասցեներով հրամանի համակարգը: Օրինակ՝ A1 և A2 հիշողության հասցեներից վերցրեք թվեր, ավելացրեք դրանք և գումարը տեղադրեք A3 հասցեում: Եթե ​​գործողությունը պահանջում էր ավելի փոքր թվով հասցեներ, ապա լրացուցիչները պարզապես չէին օգտագործվում: Ասենք, որ մարդահամարում նշված են եղել միայն A1 և A3 տեղեկատվության սկզբնաղբյուրը և ստացող բջիջները, իսկ A2-ի բովանդակությունը որևէ նշանակություն չուներ։ Երեք հասցեի հրամանը հեշտ էր վերծանել և հարմար էր օգտագործել, բայց RAM-ի քանակի աճի հետ նրա երկարությունը դարձավ աննախադեպ մեծ: Իրոք, հրամանի երկարությունը երեք հասցեների երկարության և գործողության կոդի գումարն է: Օրինակ, հետևում է, որ 1024 բջիջների համեստ RAM-ի համար, պարզապես մեկ հրամանի հասցեային մասը գրելը պահանջում է 3 * 10 = 30 երկուական բիթ, ինչը շատ հարմար չէ տեխնիկական իրականացման համար: Ուստի հայտնվեցին երկու հասցեներով մեքենաներ, որոնցում հրամանի երկարությունը կրճատվեց՝ վերացնելով արդյունքի գրանցման հասցեն։ Նման համակարգիչներում գործողության արդյունքը մնում էր հատուկ ռեգիստրում (հավելիչ) և հարմար էր հետագա հաշվարկներում օգտագործելու համար։ Որոշ մեքենաներում արդյունքը գրվել է օպերանդներից մեկի փոխարեն։ Հրամանի հետագա պարզեցումը հանգեցրեց unicast մեքենաների ստեղծմանը: Եկեք դիտարկենք նման համակարգչի հրամանի համակարգը՝ օգտագործելով կոնկրետ պարզ օրինակ: Ենթադրենք, որ մենք պետք է գումարենք A1 և A2 RAM հասցեներով բջիջներում պահված թվերը, և գումարը տեղադրենք A3 հասցեով բջիջում: Այս խնդիրը լուծելու համար unicast մեքենան պետք է կատարի երեք հրաման. A1 բջիջի բովանդակությունը հանել գումարիչի մեջ; գումարողին ավելացնել A2 թվով; արդյունքը գումարողից գրի՛ր A3-ում: Կարող է թվալ, որ unicast մեքենան առաջադրանքն ավարտելու համար երեք անգամ ավելի շատ հրամաններ կպահանջի, քան երեք հասցե ունեցող սարքը: Իրականում դա միշտ չէ, որ այդպես է: Փորձեք պլանավորել ձեր սեփական ծրագիրը A5 = (A1 + A2)*AZ/A4 արտահայտությունը հաշվարկելու համար, և դուք կտեսնեք, որ ձեզ անհրաժեշտ կլինի երեք եռհասցեով հրամաններ և միայն հինգ unicast: Այսպիսով, unicast մեքենան որոշ առումներով նույնիսկ ավելի արդյունավետ է, քանի որ այն չի գրում անհարկի միջանկյալ արդյունքներ հիշողության մեջ: Լրիվ լինելու համար պետք է ասել անհասցե (զրոյական հասցեով) մեքենայի ներդրման հնարավորության մասին, որն օգտագործում է հիշողության կազմակերպման հատուկ եղանակ՝ կույտ։ Նման մեքենայի սկզբունքները հասկանալը կպահանջի բավականին մանրամասն բացատրություններ: Մեր օրերում անհասցե համակարգիչները գործնականում չեն օգտագործվում։ Հետևաբար, մենք կսահմանափակվենք միայն նշելով այն փաստը, որ նման ձևով դասավորված հրամանատարական համակարգը հիմք է հանդիսացել որոշ ծրագրավորվող միկրոհաշվիչների համար (օրինակ՝ «BZ-21» և «BZ-34» և այլն): Մինչ այժմ մեքենայական հրահանգի կառուցվածքը նկարագրելիս մենք օգտագործել ենք տեղեկատվության հասցեի ինտուիտիվ հայեցակարգը։ Այժմ դիտարկենք RAM-ի տարրերին անդրադառնալու հարցը ավելի մանրամասն և խստորեն: Հիշողությունը ամենահասարակ կազմակերպված էր առաջին երկու սերունդների համակարգիչներում: Այն բաղկացած էր առանձին բջիջներից, որոնցից յուրաքանչյուրի բովանդակությունը կարդացվում կամ գրվում էր որպես մեկ միավոր։ Հիշողության յուրաքանչյուր բջիջ ուներ իր համարը, որը կոչվում էր հասցե: Ակնհայտ է, որ հարեւան RAM բջիջների հասցեները հաջորդական ամբողջ թվեր են, այսինքն. տարբերվում են մեկով: Քննարկվող համակարգիչները օգտագործում էին միայն մեկ տեսակի տվյալներ (իրական թվեր), և դրանց երկարությունը հավասար էր մեքենայի հրահանգի երկարությանը և համընկնում էր հիշողության և մեքենայի մյուս բոլոր սարքերի հզորության հետ։ Օրինակ, մենք նշում ենք, որ տիպիկ երկրորդ սերնդի համակարգչի բջիջը բաղկացած էր 36 երկուական բիթից: Շատ հաճախ, ծրագիրը նախատեսված էր մշակել, օգտագործելով նույն բանաձևերը, հաջորդաբար տեղակայված բջիջների բովանդակության որոշակի քանակություն (բարձր մակարդակի լեզուներում նման կառույցները հետագայում կոչվեցին զանգվածներ): Համակարգիչների առաջին երկու սերունդները տրամադրեցին տեղեկատվական զանգվածների ցիկլային մշակման հատուկ մեխանիզմներ։ Այդ նպատակով մեքենայի հրահանգներում, բացի սովորական հասցեներից, հնարավոր եղավ օգտագործել փոփոխվող հասցեներ, որոնցում հատուկ կառավարման բիթը դրված էր մեկին: Երբ հրամանը կատարվեց, այս ձևով նշված փոփոխված հասցեները ավելացվեցին հատուկ ինդեքսային բջիջների արժեքներով: Փոխելով ինդեքսի բջիջների պարունակությունը՝ հնարավոր եղավ մուտք գործել զանգվածի տարբեր տարրեր։ Հատկապես շեշտում ենք, որ ստացված հասցեի ձևավորումն իրականացվել է կառավարման ստորաբաժանումում հրամանի կատարման պահին, ուստի RAM-ի բնօրինակ հրամանը պահպանվել է առանց փոփոխությունների: Հասցեների փոփոխման նկարագրված մեխանիզմը զգալիորեն պարզեցրել է ցիկլային ծրագրերի գրելը, ինչպիսիք են RAM-ի հաջորդական բջիջների գումարը գտնելը, առանձին հիշողության բաժինների պատճենումը և այլն: Երրորդ սերնդի համակարգիչներում հիշողության կառուցման գաղափարախոսությունը զգալիորեն փոխվեց. RAM-ի հետ փոխանակման համար տեղեկատվության նվազագույն մասը սահմանվեց հավասար 8 երկուական թվանշանի, այսինքն. մեկ բայթ. Հնարավոր է դարձել մշակել մի քանի տեսակի տվյալներ՝ տեքստային նիշ (1 բայթ), ամբողջ թվեր (2 բայթ), սովորական կամ կրկնակի ճշգրտության իրական թվեր (համապատասխանաբար 4 կամ 8 բայթ)։ Այս կապակցությամբ ներդրվել է տեղեկատվության չափման նոր պայմանական միավոր՝ մեքենայական բառը։ Այն հավասար էր 4 բայթի և համապատասխանում էր ստանդարտ իրական թվի երկարությանը։ Տեղեկատվության բոլոր ծավալները սկսեցին չափվել միավորներով, որոնք բառի բազմապատիկ են՝ կրկնակի բառ, կես բառ և այլն: Բնականաբար, բայթ կազմակերպություն ունեցող մեքենաներում հասցեն (RAM բջջային համարը) սկսեց վերաբերել առանձին բայթին. հիշողության բայթերի թվերն ավելանում են մեկով: Բառը բաղկացած է մի քանի հաջորդական բայթերից: Որպես բառի հասցե՝ հարմար է վերցնել այն կազմող բայթերից մեկի հասցեն (սովորաբար օգտագործվում է ցածր բայթը, որն ունի ամենափոքր թիվը)։ Այսպիսով, բառերի հասցեները մեկից հետո այլևս չեն փոխվում. դրանց աճը կախված է մեքենայական բառի երկարությունից բայթերով և հավասար է չորսի։ Մեքենայի բառի չափը, ըստ երևույթին, ընտրվել է մշակվող տեղեկատվության ձևաչափերի հիման վրա, և ոչ թե որևէ սարքի բիթային հզորության հետ կապված: Սա հաստատելու համար ստորև բերված են մի քանի փաստեր EC ընտանիքի սովորական երրորդ սերնդի համակարգիչների մասին: EC-1022 մոդելի թվաբանական-տրամաբանական միավորն ուներ 16 երկուական բիթ, EC-1033-ը՝ 32 բիթ, իսկ EC-1050-ը՝ 64 բիթ։ Միևնույն ժամանակ, ES-1022 և ES-1033 RAM-ում մեկ մուտքի համար ընտրվել է 4 բայթ, ES-1050-ում՝ 8 բայթ (և ES-1045-ում՝ 16 բայթ): Այսպիսով, թվերի բազմազանությունը ցույց է տալիս, որ 32 բիթը (4 բայթ) տեխնիկապես հատկացված տեղեկատվության որոշակի քանակություն չէր: Երրորդ սերնդի մեքենաներում հայտնվեցին ևս մի քանի առանձնահատկություններ. հրահանգների տարբեր երկարություններ՝ կախված տվյալների հասցեավորման եղանակից, հատուկ ծայրահեղ պատահական ռեգիստրի հիշողության առկայություն, արդյունավետ RAM հասցեի հաշվարկ՝ որպես մի քանի ռեգիստրների գումար և այլն: Այս ամենը հետագայում զարգացավ չորրորդ սերնդի համակարգիչներում, որոնց համար միկրոպրոցեսորային հզորությունը դարձավ ամենակարեւոր բնութագրիչներից մեկը։ Չորրորդ սերնդի համակարգչային հիշողության կառուցվածքային առանձնահատկությունների քննարկումը կհետաձգենք մինչև հաջորդ բաժին:

Ընդհանուր տեղեկություն. Որոշակի միկրոպրոցեսորի ֆիքսված հրահանգների հավաքածուն կոչվում է հրամանատարական համակարգ.Պրոցեսորի ֆունկցիոնալությունը որոշվում է համակցությամբ հիմնականհրամաններ տարբեր գործող կոդերով: Համակարգում հրամանների (գործառնական կոդերի) ընդհանուր թիվը միշտ ավելի մեծ է, քան հիմնական հրամանների թիվը: Օրինակ, հիմնական հրամանը ներառում է MOV dst, scr հրամանը, որն ապահովում է տվյալների աղբյուրի scr-ից դեպի նպատակակետ dst ուղարկելու գործառույթը: Համակարգում նման հրամաններ շատ կարող են լինել։ Հրամանատար համակարգը ներկայացված է աղյուսակի տեսքով։ Աղյուսակը կարող է ունենալ այլ կառուցվածք, բայց սովորաբար այն պարունակում է հետևյալ տեղեկությունները հրամանի մասին.

  • մնեմոնիկհրամանը, որը հրամանի անվան հապավումն է: Դա անելու համար օգտագործեք հրամանի կողմից կատարված գործողության անվանման 3-4 լատինատառ: Մնեմոնիկահրամանի օփկոդը ներկայացնելու հարմար ձև է: Այն նաև օգտագործվում է անսամբլի լեզվով հրամանը նկարագրելիս: Ասեմբլեր ծրագիրը փոխակերպում է opcodes-ի մնեմոնիկ նշումը համապատասխան երկուական համարժեքների;
  • տասնվեցական կոդերհրամաններ;
  • կատարվող հրամանի ազդեցությունը դրոշների վրածրագրի կարգավիճակի գրանցամատյան;
  • բայթերի քանակըթիմի վրա և մեքենայի ցիկլերի և ցիկլերի քանակը, ծախսվել է հրամանի կատարման վրա;
  • բանավորև/կամ խորհրդանշական նկարագրությունհրամանի կատարած գործողությունը.

Հաճախ, հարմարության համար, հրամանատարական համակարգը բաժանվում է առանձին խմբերի, որոնք հիմնված են ֆունկցիոնալության վրա: Օրինակ, KR580VM80 միկրոպրոցեսորի հրամանատարական համակարգը, որը պարունակում է 78 հիմնական հրամաններ, բաժանված է 5 խմբի։ Ստորև բերված է յուրաքանչյուր խմբի հրամանների ֆունկցիոնալ առանձնահատկությունների համառոտ նկարագրությունը:

Հրամանների երկարությունը տատանվում է 1-ից 3 բայթ: Opcode-ը միշտ տեղադրվում է հրամանի առաջին բայթում: Հրամանի երկրորդ բայթը հատկացվում է անմիջական օպերանդի կամ պորտի հասցեին, երկրորդ և երրորդ բայթերը հիշողության բջիջի հասցեն են։ Հրամանները թույլ են տալիս բացահայտ սահմանել միայն մեկ հիշողության հասցե, այսինքն՝ դրանք պատկանում են unicast հրամանների դասին: Հրամանները նկարագրելիս օգտագործվում են հետևյալ նշումները.

  • src, dst – 8-բիթանոց աղբյուր և նպատակակետ: Աղբյուրը կամ նպատակակետը կարող է լինել A, B, C, D, E, H 8-բիթանոց ռեգիստրներից մեկը կամ M հիշողության բջիջը, որի մուտքն ապահովում է H L ռեգիստրի զույգը, որը պարունակում է ուղարկվող բայթի հասցեն: Opcode-ում սկզբնաղբյուրը src և նպատակակետ dst նշվում են որպես SSS և DDD եռաբիթ կոդ;
  • RP – ռեգիստրների զույգերի BC, DE, N L, A + RP (հատկանիշի ռեգիստր) կամ SP ցուցիչի երկու բիթ ծածկագիր;
  • տվյալներ, տվյալներ 16 – 8- և 16-բիթանոց օպերանդ;
  • addr, port – 16-բիթանոց հիշողության հասցե և 8-բիթանոց պորտի հասցե;
  • (addr), (SP) - հիշողության բջիջի պարունակությունը նշված հասցեներում.
  • (SP)+, -(SP) – հետաճացման և նախաաճացման գործողություններ կույտի հետ: Փոխանցման հրամաններ. Խումբը պարունակում է ամենահաճախ օգտագործվող տվյալների փոխանցման հրահանգները ծրագրերում, որոնց աղբյուրները և նպատակակետերը կարող են լինել ներքին պրոցեսորի ռեգիստրները, հիմնական հիշողությունը և արտաքին սարքերը: Հրամանները չեն ազդում կարգավիճակի ռեգիստրի դրոշների վրա:

Մնեմոնիկ հրամանը արտացոլում է կատարվող գործողության բնութագրերը և հասցեավորման մեթոդը: Օրինակ, մնեմոնիկ MOV, MVI ցույց է տալիս օպերանդների շարժումը; LDA, LDAX, LXI, LHLD – բեռնման համար (Load); STA, STAX, SHLD – խնայել: Բայթերով գործողությունների համար օգտագործվում է մնեմոնիկ MOV, MVI, LDA, STA, LDAX, STAX; բառերով գործողությունների համար – LXI, LHLD, SHLD: Ուղիղ հասցեավորումը կուտակիչի բովանդակությունը բեռնելիս և պահպանելիս արտացոլվում է մնեմոնիկներով LDA և STA, անուղղակի հասցեավորումը՝ Mnemonics LDAX և STAX:

Այս խմբի թիմերն ամփոփված են աղյուսակում. 5.8. Նրանք թույլ են տալիս ձեզ.

  • տվյալների փոխանցման գործողությունաղբյուրի (src) և նպատակակետի (dst) միջև, որը գրված է որպես dst ← src (հրաման 1): Աղբյուրները և նպատակակետերը ներքին ընդհանուր նշանակության ռեգիստրներն են (A, B, C, D, E, H) և հիշողության բջիջ M: Թույլատրվում է ցանկացած համակցություն, բացառությամբ M ← M-ի, այսինքն՝ M հիշողության բջիջի վերաբեռնումը չի թույլատրվում.
  • բեռնումընդհանուր նշանակության ռեգիստրները և բջիջը M երկրորդ բայթով B2 (հրաման 2) և ռեգիստրի զույգերը BC, DE, HL (ներառյալ SP ցուցիչը) երկրորդ B2 և երրորդ B3 բայթերով (հրաման 3), և B3 միշտ բեռնված է ավելի բարձր ռեգիստրներ (B, D, H) զույգեր, B2 - ցածր գրանցամատյաններ (C, E, L);
  • վերահասցեավորումտվյալները A մարտկոցի և հիմնական հիշողության միջև (հրամաններ 4÷7), մարտկոցի և արտաքին սարքի միջև (հրամաններ 8, 9): A մարտկոցի և հիշողության միջև փոխանցելիս հիշողության բջիջների հասցեները տեղակայված են BC, DE գրանցման զույգերում կամ հրամանի երրորդ և երկրորդ բայթերում (B3B2).

Աղյուսակ 5.8

Մնեմոնիկա

Կատարված

շահագործման

գործառնություններ

դստ src

Ա (ավելացնել)

Նշումներ: RP – BC, DE, HL, A + RP (առանձնահատկությունների ռեգիստր) կամ SP ցուցիչի ցուցիչի 2-բիթանոց կոդը; B – բայթ, U – ցիկլեր, T – ցիկլեր:

  • վերահասցեավորումտվյալներ զույգ HL ռեգիստրների և հիշողության միջև (թիմեր 10, 11): Այս դեպքում L ռեգիստրից օպերանդն ուղարկվում է B3B2 հասցեով բջիջ, որը ձևավորվում է հրամանի երրորդ և երկրորդ բայթերից, իսկ H ռեգիստրից մեկ հասցեով ավելի բարձր հասցե։ Հակադարձ վերահասցեավորման ժամանակ առաջին օպերանդը B3B2 հասցեով բջիջից բեռնվում է L ռեգիստր, այնուհետև երկրորդը B3B2+1 հասցեով բջիջից բեռնվում է H ռեգիստր;
  • վերահասցեավորումտվյալներ ռեգիստրների զույգերի միջև, ներառյալ A կուտակիչից և RP առանձնահատկությունների ռեգիստրից զույգը, ինչպես նաև ստեկը (թիմեր 12, 13): Կույտին գրելիս ստեկի ցուցիչի պարունակությունը կրճատվում է մեկով, իսկ SP-1 հասցեում առաջին օպերանդը բեռնվում է B, D, H կամ A գրանցամատյաններից մեկում, այնուհետև ստեկի ցուցիչի պարունակությունը նվազում է: կրկին մեկով, իսկ երկրորդ օպերանդը բեռնվում է SP–2 հասցեում C, E, L կամ RP ռեգիստրից: Երբ կույտից դուրս է գալիս, օպերանդը, որը պահվում է բջջում, որի ցուցիչի SP հասցեն է, նախ բեռնվում է C, E, L կամ RP ռեգիստրներից մեկում: Այնուհետև բովանդակությունը ավելանում է մեկով, SP + 1 հասցեի բջիջից, երկրորդ օպերանդը բեռնվում է B, D, H կամ A գրանցամատյաններից մեկում, իսկ շարասյուների ցուցիչի պարունակությունը կրկին ավելանում է մեկով և վերցնում: արժեքը SP + 2. Պետք է նշել, որ ռեգիստրի զույգերը A, RP (նրա կոդը RP = 11) բեռնելիս կույտից փոխվում է RP հատկանիշի ռեգիստրի գործարկիչների վիճակը։ Սա միակ հրամանն է (տվյալների փոխանցման բոլոր հրամաններից), որն ազդում է ատրիբուտների վրա.
  • վերահասցեավորում HL ռեգիստրների զույգ պարունակությունը SP ցուցիչի և ծրագրի հաշվիչ PC-ի մեջ (հրահանգներ 14, 15);
  • փոխանակումտվյալներ HL և DE ռեգիստրների զույգերի, HL ռեգիստրի զույգի և ստեկի միջև (հրահանգներ 16, 17): Փոխանակելիս HL ռեգիստրի զույգի պարունակությունը տեղադրվում է DE զույգի կամ ստեկի մեջ, իսկ DE ռեգիստրի զույգի կամ կույտի պարունակությունը՝ HL զույգում։ Փոխանակման գործողությունը նշվում է «↔» նշանով:

Թվաբանական հրամաններ. Միկրոպրոցեսորի հաշվողական հնարավորությունները սահմանափակվում են 8-բիթանոց օպերանդների վրա պարզ գումարման և հանման հրահանգներով։ Բազմապատկման և բաժանման գործողություններն իրականացվում են ծրագրային ապահովման մեջ: Հրամանների հավաքածուն (Աղյուսակ 5.9) թույլ է տալիս կատարել.

  • հավելումԵվ հանում 8-բիթանոց օպերանդներ՝ կրելով և առանց կրելու (հրահանգներ l÷8), մինչդեռ օպերանդներից մեկը միշտ կուտակիչում է, իսկ երկրորդը՝ ընդհանուր նշանակության ռեգիստրներից մեկում (հիշողության բջիջ M) կամ հրամանի երկրորդ բայթն է։ . Հրամաններ, որոնք հաշվի են առնում հատկանիշի ռեգիստրի փոխանցման ազդանշանի C արժեքը, օգտագործվում են բազմաբայթ թվեր գումարել և հանելիս։ Նույն նպատակով կարող եք օգտագործել 9 հրամանը՝ 16-բիթանոց հասցեական ռեգիստրով HL ռեգիստրների զույգ բովանդակությունը ավելացնելու համար;
  • թվաբանություն համեմատություն A կուտակիչի պարունակությունը Rn ընդհանուր նշանակության ռեգիստրներից մեկի պարունակությամբ (հիշողության բջիջ M) կամ երկրորդ բայթ B2 (հրամաններ 10+11): Այս դեպքում կատարվում է A – Rn կամ A – B2 հանումը։ Համեմատության արդյունքը որոշվում է առանձնահատկությունների ռեգիստրի ձգանման ազդանշաններով. եթե Z = 1, ապա A = Rn կամ A = B2; եթե S = 1, ապա A > Rn կամ A > B2: Մարտկոցի պարունակությունը չի փոխվում.
  • աճԵվ նվազում 1-ով (աճԵվ նվազում)գրանցամատյանների և գրանցամատյանների զույգերի բովանդակությունը: Հաճախ ծրագրավորելիս

Աղյուսակ 5.9

Մնեմոնիկա

Կատարվելիք վիրահատություն

գործառնություններ

A ← A + src + C

A ←A – src – C

A ← A + տվյալներ + CY

A ← A – տվյալներ

A ← A – տվյալներ – CY

A – scr (համեմատություն)

A – scr (համեմատություն)

դստ ← դստ – 1

Ա ← 2/10-ուղղում Ա

անհրաժեշտություն կա մեկով ավելացնել կամ նվազեցնել օպերանդի արժեքը։ Դա անելու համար կարող եք օգտագործել A + B2 գումարման կամ A – B2 հանման գործողությունները՝ ծրագրում գրելով B2 = 1: Այնուամենայնիվ, հրահանգների համակարգը տրամադրում է հատուկ հրահանգներ (12-5-15) 8-ի ավելացման և նվազեցման համար: 16-բիթանոց օպերանդներ;

տասնորդական ուղղումկուտակիչի պարունակությունը BCD 8421-ում թվաբանական գործողություններ կատարելուց հետո (հրահանգ 16): Այս դեպքում կուտակիչի պարունակությունը ներկայացված է որպես երկու խայթոց, որոնցից յուրաքանչյուրը համապատասխանում է տասնորդական թվի: Ուղղումը կատարվում է տասնորդական ուղղման բլոկով՝ համաձայն § 5.2 (էջ 99) սահմանված կանոնների:

Տրամաբանական գործողությունների հրամաններ. Այս խմբի հրամանները (Աղյուսակ 5.10) թույլ են տալիս իրականացնել.

  • կրկնակի տրամաբանական գործողություններ բազմապատկում(ԵՎ), հավելում(ԿԱՄ) և բացառիկԿԱՄ 8-բիթանոց օպերանդների վրա (հրահանգներ 1÷6): Տրամաբանական գործողությունները բիթային են և կատարվում են անկախ ութ օպերանդի բիթերից յուրաքանչյուրի համար։ Ոչ հասցեական օպերանդը գտնվում է կուտակիչում, և գործողության արդյունքը նույնպես գնում է այնտեղ։ Երկրորդ օպերանդը ընդհանուր նշանակության ռեգիստրներից մեկի (հիշողության բջիջ M) կամ հրահանգի երկրորդ բայթի պարունակությունն է.
  • շրջել A մարտկոցի պարունակությունը (հրաման 7);
  • դրոշի հրամաններ (8, 9) շրջվողԵվ տեղակայանքներհատկանիշի ռեգիստրի փոխանցման ձգան C bit;
  • երկու տեսակի ցիկլային տեղաշարժերմարտկոցի պարունակությունը ձախ և աջ (Yul-13 հրամաններ): Առաջին տիպի հերթափոխը (հերթափոխ առանց տեղափոխման) իրականացվում է ակումուլյատորի բոլոր ձգանները օղակի մեջ փակելով, իսկ երկրորդ տիպի հերթափոխով (փոխանցումներով կամ երկարաձգված հերթափոխով) ատրիբուտի ռեգիստրի կրիչ C-ը լրացուցիչ ներմուծվում է: մատանի. Տրամաբանական և թվաբանական տեղաշարժերը երկու ուղղություններով, որոնք բացակայում են հրամանի համակարգում, կարող են իրականացվել՝ նախ դնելով C բիթը 0-ի կամ 1-ի՝ ընդլայնված հերթափոխի հետ միասին:

Վերահսկել փոխանցման հրամանները: Վերահսկողությունը փոխանցելիս հիշողության բջիջների բովանդակությունը վերցնելու հաջորդական գործընթացը խաթարվում է, և պրոցեսորը հասցեագրվում է հիշողության այլ տարածք: Ընդգծել

Աղյուսակ 5.10

Մնեմոնիկա

Կատարված

շահագործման

գործառնություններ

A ← A l src – բազմապատկում

A ← A v src – ավելացում

A ← A © src – բացառությամբ. ԿԱՄ

A ← A l տվյալներ

A ← A © տվյալներ

կառավարման փոխանցման հրամանների երեք տեսակ՝ հրամաններ անցումտվյալ հասցեում (JMP), զանգահարելենթածրագրեր (CALL) և վերադարձենթածրագրից (RET): Դրանք ներառում են անվերապահԵվ պայմանականթիմեր. Պայմանական հրամանները կատարում են անցում, կանչում ենթածրագրեր և վերադառնում ենթածրագրից՝ կախված դրոշի վիճակից, որը նշված է ատրիբուտի ռեգիստրի (կամ վիճակի) չորս ձգաններից մեկի ազդանշանի արժեքով: . 8080 պրոցեսորն օգտագործում է չորս դրոշների (Z, C, P, S) երկու վիճակները (1 և 0), ինչը թույլ է տալիս յուրաքանչյուր հրամանի համար 8 տարբերակ (Աղյուսակ 5.11): Հատկանիշի (պայմանի) նշանակումը նշված է J**, C**, R** պայմանական հրամանների մնեմոնիկում աստղանիշների (**) փոխարեն։ Օրինակ, NC հատկանիշը, որի համար անցումային պայմանները համարվում են բավարարված, երբ C = 0, համապատասխանում է JNC հրամանին:

Ե՛վ պայմանական, և՛ անվերապահ թռիչքները և ենթածրագրային զանգերը օգտագործում են 16-բիթանոց ամբողջական հասցե՝ 64 կիլոբայթանոց հիշողության տարածքի ցանկացած կետ փոխանցելու համար:

Աղյուսակ 5.11

Դիտարկենք աղյուսակում ներկայացված հրամանների առանձնահատկությունները: 5.12.

Օգտագործելով երեք բայթ JMP հրահանգը, այն իրականացվում է անվերապահվերահսկողության փոխանցում. Այս դեպքում հրամանի երկրորդ և երրորդ բայթերը (ծրագրի շարունակության հասցեի ավելացում) մուտքագրվում են ԱՀ հրամանի հաշվիչ (B3-ի պարունակությունը բարձրակարգ բիթերում է, B2-ը՝ ցածր կարգի բիթերում):

Թիմեր պայմանականվերահսկման փոխանցումներ J** իրականացնում է հաշվողական գործընթացի ճյուղավորում՝ կախված պայմանից: Երբ պայմանը (ԱՅՈ) կատարվում է, հրամանի երկրորդ և երրորդ բայթերը մուտքագրվում են ԱՀ հաշվիչ, հակառակ դեպքում (ՈՉ) հաշվիչի պարունակությունը ավելանում է 3 միավորով: Ծրագիրը շարունակվում է ծրագրի հաշվիչում գտնվող հասցեում, այսինքն. հաջորդ հրամանից:

Աղյուսակ 5.12

Մնեմոնիկա

Կատարված

շահագործման

գործառնություններ

Թիմեր անվերապահ(ԶԱՆԳԱՀԱՐԵԼ) և պայմանական(**-ով) զանգերօգտագործվում են հիմնական հիշողության մեկ այլ մասում պահվող ենթածրագրեր մուտք գործելու համար: Այս հրահանգները միշտ հնարավորություն են տալիս վերադառնալ ընդհատված հիմնական ծրագրին՝ պահելով ԱՀ ծրագրի հաշվիչի բովանդակությունը կույտի վրա: Վերադարձի գործողությունը կատարելուց հետո.

  • ժամը անվերապահզանգահարել կամ պայմանի կատարումըհրամանի երկրորդ և երրորդ բայթերը մուտքագրվում են PC ծրագրի հաշվիչ.
  • ժամը պայմանը չկատարելըԾրագրի հաշվիչի պարունակությունը ավելանում է 3 միավորով:

Ծրագիրը շարունակվում է PC ծրագրի հաշվիչում գտնվող հասցեում:

Հավաքածուն պարունակում է հրամաններ, որոնք թույլ են տալիս իրականացնել անվերապահ(RET) և Վերադարձի համար վերահսկողության պայմանական (K**) փոխանցումընդհատված ծրագրին։ Երբ այս հրահանգները կատարվում են, վերադարձի հասցեն վերագրվում է կույտից PC ծրագրի հաշվիչին, որի համար օգտագործվում է հետաճող հասցեավորման մեթոդը: Եթե ​​վերադարձի պայմանը չի բավարարվում (պայմանով հրամանի համար), ապա անցում է կատարվում հաջորդ հրամանին՝ ծրագրի հաշվիչ PC-ի պարունակությունը մեկով ավելացնելով: Վերադարձի հրահանգները մեկ բայթանոց հրահանգներ են, քանի որ կույտի ցուցիչը SP-ն պահում է կույտի գտնվելու վայրի հասցեն ընդհատված ծրագրին վերադարձի հասցեով:

PCHL հրահանգը բեռնում է ծրագրի հաշվիչ PC-ը HL ռեգիստրի զույգում պահվող հասցեով:

Ընդհանուր կառավարման թիմեր. Այս խմբի հրամանները (Աղյուսակ 5.13) օգտագործվում են միկրոպրոցեսորի աշխատանքային ռեժիմը սահմանելու համար: RST հրահանգն օգտագործվում է միկրոպրոցեսորը վերագործարկելու և ընդհատումների սպասարկման ժամանակ: Այն կատարելիս.

  • Ծրագրի հաշվիչի բովանդակությունը տեղափոխվում է սպունգ՝ SP – 1, SP – 2 հասցեներով, որոնք ձևավորվել են stack-ի ցուցիչում, որն ապահովում է վերադարձ դեպի հիմնական ծրագիր.
  • Ընդհատումների սպասարկման 8 ծրագրերից մեկի մեկնարկի 16-բիթանոց հասցեն ուղարկվում է ծրագրի հաշվիչին:

Աղյուսակ 5.13

Մնեմոնիկա

Կատարված

շահագործման

գործառնություններ

–(SP) ← PC ← 8×n, n = 0 – 7

Միացնել ընդհատումները

Անջատել ընդհատումները

Կարդում է դիմակը

Դիմակի տեղադրում

Ոչ մի վիրահատություն

EI ընդհատման միացման հրամանը սահմանում է INTE ընդհատման ակտիվացման գործարկիչը մեկ վիճակի, ինչը ստիպում է միկրոպրոցեսորին արձագանքել ընդհատման հարցումներին: DI interrupt disable հրամանը սահմանում է INTE flip-flop-ը զրոյի: Դատարկ NOP հրահանգն օգտագործվում է ծրագրավորվող հետաձգման օղակներում: HLT stop հրամանը հանգեցնում է ծրագրի կատարման դադարեցմանը:

^

2.8 Հրամանների տեսակներ և ձևաչափեր


Չնայած տարբեր համակարգիչների հրահանգների համակարգերի տարբերություններին, դրանցից յուրաքանչյուրում կարելի է գտնել որոշ հիմնական տեսակի գործառնություններ: Այս տեսակները նկարագրելու համար մենք ընդունում ենք հետևյալ դասակարգումը.

    • տվյալների փոխանցման հրամաններ;

    • թվաբանական և տրամաբանական մշակման հրամաններ;

    • տողերի հետ աշխատելու հրամաններ;

    • SIMD հրամաններ;

    • փոխակերպման հրամաններ;

    • մուտքային / ելքային հրամաններ;

    • հրամանների հոսքի վերահսկման հրամաններ.
^

2.8.1 Տվյալների փոխանցման հրամաններ


Սա մեքենայի հրահանգների ամենատարածված տեսակն է: Նման հրամանները պետք է պարունակեն հետևյալ տեղեկատվությունը.

  • օպերանդների աղբյուրի և նպատակակետի հասցեներ - հիշողության բջիջների հասցեներ, պրոցեսորների ռեգիստրների համարներ կամ տեղեկատվություն այն մասին, որ օպերանդները գտնվում են փաթեթում.

  • ուղարկվող տվյալների երկարությունը (սովորաբար բայթերով կամ բառերով), որը նշվում է բացահայտ կամ անուղղակիորեն.

  • օպերանդներից յուրաքանչյուրին հասցեագրելու մեթոդ, որի օգնությամբ հրահանգի հասցեային մասի բովանդակությունը կարող է վերահաշվարկվել օպերանդի ֆիզիկական հասցեի մեջ:
Քննարկվող հրամանների խումբը ապահովում է տեղեկատվության փոխանցումը պրոցեսորի և OP-ի միջև, պրոցեսորի ներսում և հիշողության բջիջների միջև: Պրոցեսորի ներսում փոխանցման գործողությունները ռեգիստրից ռեգիստր տիպի են: Պրոցեսորի և հիշողության միջև փոխանցումները ռեգիստրից հիշողություն են, իսկ հիշողության մեջ փոխանցումները՝ հիշողությունից հիշողություն:
^

2.8.2 Թվաբանական և տրամաբանական մշակման հրամաններ


Այս խումբը ներառում է հրամաններ, որոնք ապահովում են տեղեկատվության թվաբանական և տրամաբանական մշակում դրա ներկայացման տարբեր ձևերով: ACK-ում թվերի ներկայացման յուրաքանչյուր ձևի համար սովորաբար տրվում է որոշակի ստանդարտ գործողությունների շարք:

Արդյունքը հաշվարկելուց բացի, թվաբանական և տրամաբանական գործողությունների կատարումը ուղեկցվում է այս արդյունքը բնութագրող նշանների (դրոշակների) ALU-ում ձևավորմամբ: Առավել հաճախ գրանցված նշաններն են.


  • Z (Զրո) - զրոյական արդյունք;

  • N (բացասական) - բացասական արդյունք;

  • V (oVerflow) - բիթային ցանցի արտահոսք;

  • C (Carry) - կրելու առկայությունը:
Ֆիքսված կետի տեսքով ներկայացված ամբողջ թվերի վրա գործառնությունների ստանդարտ փաթեթը ներառում է.

  • կրկնակի թվաբանական գործողություններ (գործողություններ երկու օպերանդներով). գումարում, հանում, բազմապատկում և բաժանում;

  • միտեղանոց թվաբանական գործողություններ (գործողություններ մեկ օպերանդով)՝ օպերանդի բացարձակ արժեքի (մոդուլի) հաշվարկ, օպերանդի նշանի փոփոխություն.

  • համեմատական ​​գործողություններ, որոնք ապահովում են երկու ամբողջ թվերի համեմատություն և համեմատվող արժեքների միջև կապը բնութագրող հատկանիշների զարգացում (=,<>, >, <, <=, >=).
Հաճախ այս ցանկը լրացվում է այնպիսի գործառնություններով, ինչպիսիք են ամբողջ թվի բաժանման մնացորդի հաշվարկը, գումարումը հաշվի առնելով փոխառությունը, հանումը հաշվի առնելով փոխառությունը, օպերանդի արժեքը մեկով ավելացնելը ( ավելացում), մեկով նվազեցնելով օպերանդի արժեքը (նվազում).

Նկատի ունեցեք, որ թվաբանական հրահանգների կատարումը կարող է լրացուցիչ ուղեկցվել տվյալների տեղափոխմամբ մուտքային սարքից դեպի ALU կամ ALU-ից դեպի ելքային սարք:

Լողացող կետով ներկայացված թվերի հետ աշխատելու համար մեքենաների մեծ մասի ASC-ն ապահովում է.


  • հիմնական թվաբանական գործողություններ;

  • համեմատական ​​գործողություններ, որոնք ապահովում են երկու իրական թվերի համեմատություն հատկանիշների մշակմամբ.

  • փոխակերպման գործողություններ. ներկայացման ձև (ֆիքսված և լողացող կետի միջև), ներկայացման ձևաչափ (մեկ և կրկնակի ճշգրտություն):
Ստանդարտ համակարգչային հրամանի համակարգը պարունակում է տարբեր հրամաններ կատարելու համար տրամաբանական գործողություններբառերի առանձին բիթերի կամ հասցեական այլ միավորների վրա: Նման հրամանները նախատեսված են խորհրդանշական և տրամաբանական տվյալների մշակման համար: Աջակցվող տրամաբանական գործողությունների նվազագույն փաթեթն է «NOT», «AND», «OR» և ավելացման մոդուլ 2:

Բացի բիթային տրամաբանական գործողություններից, գրեթե բոլոր ACK-ները տրամադրում են հրամաններ տրամաբանական, թվաբանական և ցիկլային հերթափոխի գործողություններ իրականացնելու համար:

ժամը տրամաբանականձախ կամ աջ տեղաշարժը փոխում է բառի բոլոր բիթերը: Բիթերի ցանցից դուրս եկող բիթերը կորչում են, իսկ ազատված դիրքերը լրացվում են զրոներով:

ժամը թվաբանությունՀերթափոխի դեպքում տվյալները վերաբերվում են որպես ստորագրված ամբողջ թվեր, և նշանի բիթը չի փոխում դիրքը: Աջ տեղաշարժվելիս ազատված դիրքերը լրացվում են նշանի բիտի արժեքով, իսկ ձախ տեղափոխելիս՝ զրոներով։ Թվաբանական տեղաշարժերը կարող են արագացնել որոշակի թվաբանական գործողություններ: Այսպիսով, եթե թվերը ներկայացված են երկուական լրացման մեջ, ապա ձախ և աջ տեղաշարժերը համարժեք են համապատասխանաբար 2-ով բազմապատկելու և բաժանելուն:

ժամը ցիկլայինՀերթափոխի ժամանակ բառի բոլոր բիթերը տեղաշարժվում են, և այն բիթերի արժեքը, որը դուրս է գալիս բառից, մուտքագրվում է հակառակ կողմում ազատված դիրքում, այսինքն՝ տեղեկատվության կորուստ չի առաջանում: Ցիկլային տեղաշարժերի հնարավոր օգտագործումներից մեկն այն է, որ հետաքրքրող բիթը տեղափոխվի ամենաձախ (նշանի) դիրք, որտեղ այն կարող է վերլուծվել որպես թվի նշան:

Համար աշխատել լարերի հետ ACK-ը սովորաբար տալիս է հրամաններ, որոնք տեղափոխում, համեմատում և որոնում են տողերը: Մեքենաների մեծ մասում թվարկված գործողությունները պարզապես ընդօրինակվում են այլ հրամաններով:

^ Փոխակերպման հրամաններ փոխել տվյալների ներկայացման ձևաչափը. Օրինակ կարող է լինել տասնորդականից երկուականի փոխակերպումը կամ 8-բիթանոց նիշերի ծածկագիրը ASCII-ից EBCDIC-ի և հակառակը:

2.8.3 SIMD հրամաններ

Այս տեսակի հրամանի անունը Single Instruction Multiple Data-ի հապավումն է, բառացիորեն «մեկ հրահանգ - շատ տվյալներ»: Ի տարբերություն սովորական հրամանների, որոնք գործում են երկու թվերի վրա, SIMD հրամանները միաժամանակ մշակում են թվերի երկու խումբ (սկզբունքորեն դրանք կարելի է անվանել խմբային հրամաններ)։ Նման հրահանգների օպերանդները սովորաբար ներկայացված են փաթեթավորված ձևաչափերից մեկով:

SIMD-ի մշակման գաղափարը առաջ է քաշվել Ճշգրիտ մեխանիկայի և համակարգչային գիտության ինստիտուտում։ Ս.Ա. Լեբեդևը 1978 թվականին Էլբրուս-1 նախագծի շրջանակներում։ 1992 թվականից SIMD տիպի հրամանները դարձել են Intel-ի և AMD-ի ASK միկրոպրոցեսորների անբաժանելի տարրը, որի պատճառը մուլտիմեդիա հավելվածների լայն կիրառումն էր։ Տեսանյութը, եռաչափ գրաֆիկան և ձայնը համակարգչում ներկայացված են տվյալների մեծ զանգվածներով, որոնց տարրերն ամենից հաճախ մշակվում են նույնությամբ: Այսպիսով, երբ տեսանյութը սեղմվում և փոխարկվում է MPEG-ի, նույն ալգորիթմը կիրառվում է հազարավոր բիթ տվյալների վրա: Եռաչափ գրաֆիկայում հաճախ լինում են գործողություններ, որոնք կարող են իրականացվել մեկ ժամացույցի ընթացքում. վեկտորների ինտերպոլացիա և նորմալացում, վեկտորների սկալյար արտադրյալի հաշվարկ, գունային բաղադրիչների ինտերպոլացիա և այլն: ACK-ում SIMD հրամանները ներառելը թույլ է տալիս զգալիորեն արագացնել: կատարել նման հաշվարկներ:

Intel-ն առաջինն արձագանքեց մուլտիմեդիա բումին՝ ավելացնելով 57 SIMD հրամաններ իր Pentium MMX միկրոպրոցեսորի հրամանատարական համակարգին։ Մշակողները MMX (MultiMedia eXtention - մուլտիմեդիա ընդլայնում) անվանումը հիմնավորել են նրանով, որ նոր հրամանների կազմն ընտրելիս վերլուծվել են տարբեր մուլտիմեդիա հավելվածներում օգտագործվող ալգորիթմները։ MMX հրահանգները ապահովում էին փաթեթավորված ամբողջ թվերի զուգահեռ մշակումը: Թվաբանական գործողություններ կատարելիս խմբում ընդգրկված թվերից յուրաքանչյուրը համարվում է անկախ՝ առանց հարևան թվերի հետ կապի։ Հաշվի առնելով մշակվող տեղեկատվության առանձնահատկությունները՝ MMX թիմերն իրականացնում են այսպես կոչված հագեցվածության թվաբանությունը. եթե գումարման արդյունքում ստացվում է մի թիվ, որը գերազանցում է իր համար հատկացված դիրքերը, այն փոխարինվում է ամենամեծ երկուական թվով, որը տեղավորվում է այս դիրքերում։ .

Հաջորդ քայլը SIMD հրահանգների նոր հավաքածուների ստեղծումն էր, որոնք նույնպես աշխատում են օպերանդների հետ, որոնք ներկայացված են որպես փաթեթավորված լողացող կետով թվեր: Նման հրամանները համապատասխան հավելվածներում մոտավորապես կրկնապատկվում են պրոցեսորի արդյունավետությունը: AMD-ն առաջինն է առաջարկել նման տեխնոլոգիա 1998 թվականի կեսերին: Այս մուլտիմեդիա ընդլայնումը ներառում էր 21 SIMD հրամաններ և կոչվում էր 3DNow!: 3DNow! ի հավելումն MMX տիպի ամբողջ թվային տեղեկատվության SIMD մշակմանը, այն հնարավորություն տվեց աշխատել լողացող կետի ձևաչափով մի զույգ փաթեթավորված թվերի հետ:

Վեց ամիս անց Intel-ը իր միկրոպրոցեսորների մեջ ներմուծեց այսպես կոչված հոսքային SIMD հրամաններ՝ դրանք նշելով SSE - Streaming SIMD Extension հապավումով (հոսքային մշակում՝ հիմնված «մեկ հրաման՝ շատ տվյալներ» սկզբունքի վրա): Սկզբում դա 70 հրահանգ էր Pentium III միկրոպրոցեսորում: Հրամանները լրացնում էին MMX-ի խմբային ամբողջ թվով գործողությունները և ընդլայնում դրանք՝ ներառելով խմբային գործողություններ 32-բիթանոց իրական թվերի վրա:
^

2.8.4 I/O հրամաններ


Այս խմբի հրամանները կարելի է բաժանել ծայրամասային սարքի (PU) վերահսկման, դրա կարգավիճակի, մուտքի և ելքի ստուգման հրամանների:

Թիմեր ծայրամասային սարքի կառավարումծառայում է կառավարման ստորաբաժանումը գործարկելու և նրան անհրաժեշտ գործողությունը ցույց տալու համար: Նման հրահանգների մեկնաբանումը կախված է կառավարման սարքի տեսակից:

Թիմեր I/O կարգավիճակի ստուգումօգտագործվում են մուտքային/ելքային մոդուլի և դրան միացված կառավարման ստորաբաժանումների վիճակը բնութագրող տարբեր նշանների փորձարկման համար: Այս հրամանների շնորհիվ կենտրոնական պրոցեսորը կարող է պարզել, թե արդյոք PU-ի հզորությունը միացված է, արդյոք նախորդ I/O գործողությունն ավարտված է, արդյոք սխալներ են տեղի ունեցել I/O գործընթացի ժամանակ և այլն։

Կառավարման ստորաբաժանման հետ տեղեկատվության իրական փոխանակումն իրականացվում է մուտքային և ելքային հրամաններով: Թիմեր մուտքագրումհանձնարարել I/O մոդուլին ստանալ տվյալների տարր (բայթ կամ բառ) PU-ից և տեղադրել այն տվյալների ավտոբուսի վրա և հրամանները. ելք -ստիպել մուտքային/ելքային մոդուլին ընդունել տվյալների տարրը տվյալների ավտոբուսից և ուղարկել այն կառավարման միավորին:
^

2.8.5 Համակարգի կառավարման հրամաններ


Այս խմբում ներառված հրամանները արտոնյալ են և կարող են կատարվել միայն այն դեպքում, երբ համակարգչի կենտրոնական պրոցեսորը արտոնյալ վիճակում է կամ կատարում է ծրագիր, որը գտնվում է արտոնյալ հիշողության տարածքում (սովորաբար արտոնյալ ռեժիմն օգտագործվում է միայն օպերացիոն համակարգի կողմից): Այսպիսով, միայն այս հրամաններն են ի վիճակի կարդալու և փոխելու կառավարման սարքի մի շարք ռեգիստրների վիճակը:
^

2.8.6 Հրամանների հոսքի կառավարման հրամաններ


Ֆոն Նեյմանի համակարգչի հայեցակարգը ենթադրում է, որ ծրագրի հրահանգները հիմնականում կատարվում են այն հերթականությամբ, որով դրանք գտնվում են հիշողության մեջ: Հաջորդ հրամանի հասցեն ստանալու համար բավական է ավելացնել ծրագրի հաշվիչի պարունակությունը ընթացիկ հրամանի երկարությամբ: Միևնույն ժամանակ, համակարգչի հիմնական առավելությունները հենց հաշվարկի ընթացքը փոխելու ունակության մեջ են՝ կախված հաշվարկման գործընթացում առաջացած արդյունքներից: Այդ նպատակով համակարգչի ACK-ում ներառված են հրամաններ, որոնք թույլ են տալիս խախտել բնական հաջորդականությունը և կառավարումը տեղափոխել ծրագրի մեկ այլ կետ: Նման հրամանների հասցեային մասը պարունակում է թռիչքի կետի հասցեն (հրամանի հասցեն, որը պետք է կատարվի հաջորդիվ): Ճյուղն իրականացվում է ճյուղային կետի հասցեն ծրագրի հաշվիչում բեռնելու միջոցով (հաշվիչը հրահանգի երկարությամբ մեծացնելու փոխարեն):

Համակարգչային հրամանների համակարգում կարելի է առանձնացնել երեք տեսակի հրամաններ, որոնք կարող են փոխել հաշվարկների հաջորդականությունը.


  • անվերապահ թռիչքներ;

  • պայմանական անցումներ (ճյուղեր);

  • ընթացակարգի զանգեր և ընթացակարգերի վերադարձ:
Չնայած այն հանգամանքին, որ ներկայությունը ծրագրում մեծ թվով անվերապահ ցատկի հրամաններհամարվում է վատ ծրագրավորման ոճի նշան, նման հրամանները պարտադիր ներառված են ցանկացած համակարգչի ASK-ում: Դրանք անսամբլի լեզվով նշելու համար սովորաբար օգտագործվում է անգլերեն jump բառը։ Անվերապահ jump հրամանը ապահովում է թռիչք դեպի տվյալ հասցե՝ առանց որևէ պայման ստուգելու:

^ Պայմանական ցատկ տեղի է ունենում միայն որոշակի պայմանի բավարարման դեպքում, հակառակ դեպքում հաջորդ ծրագրի հերթական հրամանը կատարվում է: Համակարգիչների արտադրողներից շատերն իրենց մոնտաժողներում նշանակում են նման հրամաններ բառով մասնաճյուղ (ճյուղավորում): Այն պայմանը, որի հիման վրա կատարվում է անցումը, ամենից հաճախ նախորդ թվաբանական կամ տրամաբանական գործողության արդյունքի նշաններն են։ Նշաններից յուրաքանչյուրը գրանցվում է պրոցեսորի դրոշի ռեգիստրի իր բիթում: Հնարավոր է նաև այլ մոտեցում, երբ տեղափոխվելու որոշումը կայացվում է կախված ընդհանուր նշանակության ռեգիստրներից մեկի վիճակից, որտեղ նախապես տեղադրված է համեմատության գործողության արդյունքը։ Երրորդ տարբերակն է համադրել համեմատությունը և թռիչքային գործողությունները մեկ հրամանում:

Համակարգչային հրամանների համակարգում արդյունքի յուրաքանչյուր հատկանիշ ունի իր ճյուղավորման հրամանը (երբեմն երկու. անցում, եթե հատկանիշը առկա է և անցում, եթե այն բացակայում է): Պայմանական անցումների մեծ մասը կապված է երկու մեծությունների փոխադարձ կապի ստուգման կամ որոշակի մեծության հավասարության (անհավասարության) հետ զրոյի հետ։ Ծրագրերում առավել ինտենսիվ օգտագործվում է ստուգումների վերջին տեսակը:

Ընթացակարգային մեխանիզմը հիմնված է ընթացակարգի զանգի հրամաններ,ապահովելով անցում ծրագրի ընթացիկ կետից ընթացակարգի սկզբնական հրամանին, և հրամաններ՝ վերադառնալ ընթացակարգից,զանգի հրամանին անմիջապես հաջորդող կետին վերադառնալու համար: Այս ռեժիմը ենթադրում է միջոցների առկայություն՝ կանչի պահին ծրագրի հաշվիչի բովանդակության ներկա վիճակի պահպանման համար (վերադարձի կետի հասցեն հիշելով) և ընթացակարգից դուրս գալու ժամանակ այն վերականգնելու համար,
^

2.8.7 Հրամանի ձևաչափեր


Տիպիկ հրամանը, ընդհանուր առմամբ, պետք է նշի.


  • կատարվող վիրահատությունը;

  • աղբյուրի տվյալների (օպերանդների) հասցեները, որոնց վրա կատարվում է գործողությունը.

  • հասցեն, որտեղ պետք է տեղադրվի գործողության արդյունքը.
Դրան համապատասխան հրամանը բաղկացած է երկու մասից՝ գործառնական և հասցեական, ինչպես ցույց է տրված Նկար 2.24-ում:

Նկար 2.24 – Մեքենայի հրամանի կառուցվածքը
Հրամանի ձևաչափորոշում է դրա կառուցվածքը, այսինքն՝ ամբողջ հրամանի համար հատկացված երկուական բիթերի քանակը, ինչպես նաև առանձին հրամանների դաշտերի քանակը և գտնվելու վայրը: Դաշտհրամանի բաղադրիչը կոդավորող երկուական բիթերի մի շարք է: ASK մշակելիս հրամանի ձևաչափի ընտրությունը ազդում է ապագա մեքենայի բազմաթիվ բնութագրերի վրա: Հնարավոր ձևաչափերը գնահատելիս պետք է հաշվի առնել հետևյալ գործոնները.


  • տարբեր հրամանների ընդհանուր թիվը;

  • հրամանի ընդհանուր երկարությունը;

  • հրամանի դաշտերի տեսակը (ֆիքսված կամ փոփոխական երկարություն) և դրանց երկարությունը.

  • վերծանման հեշտություն;

  • հասցեականություն և հասցեավորման մեթոդներ;

  • հրամանների վերծանման և կատարման սարքավորումների արժեքը.
Հրամանի երկարությունը- սա ամենակարևոր հանգամանքն է, որն ազդում է հիշողության կազմակերպման և հզորության, ավտոբուսի կառուցվածքի, պրոցեսորի բարդության և արագության վրա: Մի կողմից, հարմար է ձեր տրամադրության տակ ունենալ հրահանգների հզոր հավաքածու, այսինքն՝ հնարավորինս շատ գործառնական կոդեր, օպերանդներ, հասցեավորման մեթոդներ և հասցեների առավելագույն տարածք: Այնուամենայնիվ, այս ամենը պահանջում է ավելի շատ բիթերի հատկացում հրամանի յուրաքանչյուր դաշտի համար, ինչը հանգեցնում է դրա երկարության ավելացմանը։ Միևնույն ժամանակ, հիշողության հասանելիությունն արագացնելու համար ցանկալի է, որ հրամանը լինի հնարավորինս կարճ, և դրա երկարությունը հավասար լինի կամ բազմապատիկ լինի տվյալների ավտոբուսի լայնությանը: Սարքավորումը պարզեցնելու և համակարգչի արագությունը մեծացնելու համար հրահանգների երկարությունը սովորաբար ընտրվում է բայթի բազմապատիկ, քանի որ համակարգիչների մեծ մասում հիմնական հիշողությունը կազմակերպված է 8-բիթանոց բջիջների տեսքով:

Մեկ համակարգչի հրամանների համակարգում կարող են օգտագործվել տարբեր հրամանների ձևաչափեր: Սա սովորաբար պայմանավորված է հասցեավորման տարբեր մեթոդների կիրառմամբ: Այս դեպքում հրամանի գործառնական մասը պարունակում է գործողության կոդի դաշտ (OC) և հասցեավորման մեթոդը (CA) նշելու համար:

Հրամանի ընդհանուր երկարությունը Ռ Կ կարող է որոշվել հետևյալ առնչությամբ.

,

Որտեղ լ- հրամանի հասցեների քանակը. Ռ Աի- ձայնագրման համար թվանշանների քանակը ես-րդ հասցեն; Ռ KOp– գործառնական կոդի դաշտի լայնությունը. Ռ Ս.Ա– հասցեավորման մեթոդի դաշտի բիթային խորությունը:

Երկուական բիթերի քանակը հատկացված է գործառնական կոդը, ընտրված է այնպես, որ գործողություններից որևէ մեկը հնարավոր լինի ներկայացնել: Եթե ​​հրամանատարական համակարգը ենթադրում է Ն KOpտարբեր գործողություններ, ապա գործողության կոդի դաշտի նվազագույն լայնությունը որոշվում է հետևյալ կերպ.
Ռ KOp= int(log 2 ( Ն KOp)),
որտեղ int նշանակում է կլորացնել մինչև ամբողջ թիվը:

Տրված հրահանգի կոդի երկարության համար պետք է փոխզիջում կատարվի opcode դաշտի լայնության և հասցեի դաշտի միջև: Ավելի մեծ թվով հնարավոր գործողությունների համար պահանջվում է երկար opcode դաշտ, որը տանում է դեպի ավելի կարճ հասցեի դաշտ, այսինքն՝ ավելի նեղ հասցեի տարածք: Այս անհամապատասխանությունը լուծելու համար opcode դաշտի երկարությունը երբեմն տարբերվում է: Սկզբում բիթերի որոշակի ֆիքսված քանակ հատկացվում է գործող կոդի համար, սակայն առանձին հրամանների համար այս դաշտը ընդլայնվում է հասցեի դաշտից հանված մի քանի բիթերով:

IN հասցեի մասՀրամանը պարունակում է տեղեկատվություն աղբյուրի տվյալների գտնվելու վայրի և գործողության արդյունքի պահպանման վայրի մասին: Սովորաբար, յուրաքանչյուր օպերանդի և արդյունքի գտնվելու վայրը նշվում է հրահանգում՝ նշելով համապատասխան հիմնական հիշողության վայրի հասցեն կամ պրոցեսորի ռեգիստրի համարը: Հրամանի հասցեային մասից տեղեկատվության օգտագործման սկզբունքները որոշվում են հասցեավորման համակարգ.Հասցեավորման համակարգը նշում է հրամանի հրամանի հասցեների քանակը և հասցեավորման ընդունված մեթոդները

Դաշտերի լայնությունը հաշվարկվում է բանաձևերով.
Ռ Աի= int(log 2 ( Ն ես)), Ռ Կ.Ա.= int(log 2 ( Ն Կ.Ա.)),
Որտեղ Ն ես, – հիշողության բջիջների քանակը, որոնց կարելի է մուտք գործել՝ օգտագործելով ես-ro հասցեներ; Ն Ս.Ա- հասցեավորման մեթոդների քանակը:

Որոշելու համար հասցեների քանակըհասցեի մասում ներառված, մենք կօգտագործենք տերմինը թիրախավորում.«Առավելագույն» տարբերակում անհրաժեշտ է նշել երեք բաղադրիչ՝ առաջին օպերանդի հասցեն, երկրորդ օպերանդի հասցեն և այն բջջի հասցեն, որտեղ գրված է գործողության արդյունքը։ Սկզբունքորեն, մեկ այլ հասցե կարող է ավելացվել՝ նշելու, թե որտեղ է պահվելու հաջորդ հրահանգը: Արդյունքում, դա տեղի է ունենում չորս հասցեի հրամանի ձևաչափ. Այս ձևաչափը ներկայացված է Նկար 2.25-ում:

Ամենից հաճախ չորրորդ հասցեի կարիք չկա, քանի որ հրահանգները գտնվում են հիշողության մեջ այն հաջորդականությամբ, որով դրանք կատարվել են, և հաջորդ հրահանգի հասցեն կարելի է ստանալ՝ պարզապես ընթացիկ հրահանգի հասցեն ծրագրի հաշվիչում ավելացնելով: . Սա թույլ է տալիս գնալ երեք հասցեովձևաչափը թիմեր. Ձեզ անհրաժեշտ է ընդամենը հրամաններ ավելացնել համակարգչային հրամանների համակարգին, որոնք կարող են փոխել հաշվարկների հերթականությունը:

Ցավոք, նույնիսկ երեք հասցեների ձևաչափում հրամանի երկարությունը կարող է բավականին մեծ լինել: Այսպիսով, եթե հիմնական հիշողության բջջի հասցեն 32 բիթ է, իսկ օպկոդի երկարությունը՝ 8 բիթ, ապա Հրամանի երկարությունը կկազմի 104 բիթ (13 բայթ):

Նկար 2.25 – Չորս հասցեի հրամանի ձևաչափ
Եթե ​​լռելյայնորեն որպես արդյունքի հասցե վերցնում ենք օպերանդներից մեկի (սովորաբար երկրորդի) հասցեն, ապա կարող ենք անել առանց երրորդ հասցեի, և արդյունքում ստանում ենք. երկու հասցեովհրամանի ձևաչափ: Բնականաբար, այս դեպքում գործողության ավարտից հետո կորում է համապատասխան օպերանդը։

Հրամանը կարող է հետագայում կրճատվել՝ անցնելով դեպի unicastձևաչափ, որը հնարավոր է առաջին օպերանդի և արդյունքի պահպանման համար որոշակի ստանդարտ տեղ հատկացնելով։ Սովորաբար, այդ նպատակով օգտագործվում է հատուկ կենտրոնական պրոցեսորային միավորի (CPU) կուտակիչ ռեգիստր:

Մեկ ռեգիստրի օգտագործումը օպերանդներից մեկը պահելու համար, և արդյունքը սահմանափակող գործոն է, հետևաբար, կուտակիչից բացի հաճախ օգտագործվում են նաև այլ CPU ռեգիստրներ: Քանի որ պրոցեսորի ռեգիստրների թիվը փոքր է, հրամանի մեջ դրանցից մեկը նշելու համար բավական է ունենալ համեմատաբար կարճ հասցեի դաշտ: Համապատասխան ձևաչափը կոչվում է մեկուկես հասցե կամ գրանցելձևաչափը։

Վերջապես, եթե երկու օպերանդների համար էլ հստակ սահմանված տեղորոշեք, ինչպես նաև այն հրահանգների դեպքում, որոնք օպերանդ չեն պահանջում, կարող եք ստանալ. nulladdressհրամանի ձևաչափ: Այս տարբերակում հրամանի հասցեային մասը իսպառ բացակայում է կամ չի օգտագործվում

Հրամանի հասցեային մասում հասցեների քանակն ընտրելիս դրանք սովորաբար առաջնորդվում են հետևյալ չափանիշներով.


  • ծրագրի պահպանման համար անհրաժեշտ պահեստային հզորությունը.

  • ծրագրի կատարման ժամանակը;

  • ծրագիր պահելու ժամանակ հիշողության բջիջների օգտագործման արդյունավետությունը:
կատարման ժամանակՄեկ հրահանգի համար պահանջվող ժամանակը գործողության կատարման ժամանակի և հիշողության մուտքի ժամանակի գումարն է: Երեք հասցեով հրամանի համար վերջինս ամփոփվում է չորս ժամանակային բաղադրիչներից.

  • հրամանի նմուշներ;

  • նմուշառում է առաջին օպերանդը;

  • նմուշառում է երկրորդ օպերանդը;
Unicast հրամանը պահանջում է հիշողության երկու մուտք.

  • հրամանի նմուշներ;

  • օպերանդի նմուշներ.
Ինչպես տեսնում եք, unicast հրամանը կատարելու համար ավելի քիչ ժամանակ է պահանջվում, քան երեք հասցեով հրամանը մշակելը, բայց մեկ երեք հասցեով հրամանն իրականացնելու համար, որպես կանոն, անհրաժեշտ է երեք unicast հրաման: Այս նկատառումները, սակայն, բավարար չեն թիրախավորման այս կամ այն ​​տարբերակին հստակ նախապատվություն տալու համար։ Ընտրության որոշիչ գործոնը ալգորիթմների տեսակն է, որոնց առաջնային իրականացման համար ուղղված է որոշակի համակարգիչ:
դիտումներ