3.1. Командалар форматы.
3.2. Мәліметтер мен командаларды адрестеу.
3.3. Машиналық командалар типі.
3.4. Мәліметтерді өңдеу командалары.
Дәрістің қызсқаша мазмұны
1) ЭЕМ-нің кез келген командасы қандайда бір реттелген биттер тізбегін көрсетеді, ол мынаны анықтайды:
-
осы командамен орындалатын операция;
-
осы операцияға қатысатын операндтар адресі.
Сондықтан көптеген ЭЕМ-де командады операциялық-адрестік жүйе болады.
Жедел жады коды
|
Адрестер (операндтар) коды
|
Операциялық бөлікте операция коды жазылады. Адрестік бөлікте операндтар адрестерінің коды беріледі. Онда тек операндтар адрестері мен операция нәтижесі туралы ақпарат қана болмайды, сонымен қатар келесі команда адресі туралы жазылады.
Команда форматы командалардың жеке өрістерінің құрамы, бағыты мен орналасуы болып түсініледі.
Құрылымның дамуы адрес өрісінің азаюы кезінде жүреді (SISC процессорлар). RISC процессорларының пайда болуымен командалар жүйесінің кеңейтілген адресіне қайтып келу жағдайы туды. Басында командалар жүйесі келесідей форматта болды:
Жедел жады коды
|
А1
|
А2
|
А3
|
А4
|
А3:=(А1)*(А2); СчАК:=А4
мұндағы СчАК – команда адресінің санағышы;
* - операция
Әрбір командада келесі команда адресі беріледі, бірақ мұндай команданың ұзындығы үлкен. Командалардың мұндай жүйесінде оларды кез келген ретте орналастыруға болады, бірақ көбінесе тізбектей орналастыруға талпынады. Мұндай реттілік табиғи (естественный) деп аталады, бірақ табиғи орналасу кезінде А4 өрісінің қажеті жоқ болады.
Демек, формат мынандай түрге келеді:
А3:=(А1)*(А2); СчАК:= (СчАК)+1.
Мұндай форматқа көшу команда ұзындығын азайтпайды. Көптеген есептеулерде есептеудің рекуррентті схемасы болады, демек, командалар жүйесін екі адресті етуге болады.
(А1):=(А1)*(А2); СчАК:= (СчАК)+1.
Есептеудің мұндай схемасы қазіргі ЭЕМ үшін негізгі болып табылады.
Егер аккумуляторлы принципті пайдалансақ, онда командалар жүйесі үшін бір ғана адресті пайдалану жеткілікті.
SISC процессор командаларының негізгі массасы бір және екі адресті болып табылады. Кейбір жағдайларда командаларды адрестемей-ақ қоюға болады, егер команда тіркелген адрестермен операцияны орындаса, мұндай команда форматында адрестік өріс болмайды. Команда адрессіз немесе нульадресті деп аталады. Сапалық салыстырмалы анализ мынаны көрсетеді:
1. Қысқа командалар ұзын командаларға қарағанда жоғары бағаланады, өйткені жадының аз көлемін алады. ЭЕМ кез келген жады беру (өткізу жылдамдығы)жылдамдығымен сипатталады. Қысқа командалар процессор өнімділігін жоғарлатады. Қазіргі ЭЕМ үшін процессор жадыдан да тез жұмыс істейді, демек, жоғары өнімділікті қамтамасыз ету үшін жадыдан қатынаудың бір циклінде алынатын командалар санын ұлғайту керек.
2. Командалар форматы барлық операцияларды беру үшін жеткілікті кеңістікті қамтамасыз ету керек (егер компьютер жүйесі өзіне N операцияны қосса, nmin=log2N болады).
3. Команда ұзындығы базалық құрылымдық ақпараттық бірлік ұзындығына тең болу керек (яғни команда байт немесе сөздің бүтін санын алу керек, немесе бір сөзде команданың бүтін саны орналасуы керек). Егер бір сөзде команданың бүтін емес саны болса, онда немесе жады толықтай пайдаланылмайды, немесе команданы таңдау процедурасы қиындайды. Сонымен қатар команда ұзындығы өңделетін мәліметтердің символ кодының ұзындығы есебімен таңдап алынады.
4. Команданың адрестік өрісінің ұзындығы компьютер жадын ұйымдастырумен тығыз байланысқан. Егер жады өзіне М адрестік элемент қосса, онда адрестік өрістің минималды ұзындығы: mmin=log2M болады.
Жиі пайдаланылатын операцияны беру үшін операцияның қысқа коды пайдаланылады, ал қысқа адрестік өрістің құрамынан қысқа командаларды аламыз, демек:
-
жадына жақсы пайдалану
-
өңдеудің максималды мүмкін жылдамдығы
Басқа жиі пайдаланылатын операцияларды беру үшін кодтың ұзын өрістері пайдаланылады.
Екі байтты команда берілсін.
0,5б 1,5б
(А3) *(А2) А1
Команда ұзындығын өзгертпей адрестік өріс ұзындығын қалай өзгертуге болады?
0000 адресі бар ұяшықта жазбаны болдырмауға болады. А1 – қабылдауыш адресі.
Адрестік бөлік форматы өзгерді, ал адрестік кеңістік 256 элементке дейін өсті. Бірақ SISC процессорларына жататын көптеген командаларда командалардың айнымалы ұзындығы болады:
Жедел жады коды
|
0000
|
А1
|
А2
|
0000 – А1 мен А2 екі есе өскендігін білдіреді.
Егер адрестік кеңістікті одан да кеңейту қажет болса, онда команданың айнымалы ұзындығының принципін пайдалана отырып, 0000 адрестік өріс ұзындығы, мысалы, 5 байт болды дегенді білдіретіндігін анықтау керек.
Операция жиынын қалай ұлғайтуға болады?
0000
|
Жедел жады коды1
|
А1
|
А2
|
Жедел жады коды
Мысалы, Жедел жады коды1 бүтін байтты алып жатқандығын білдіреді. Демек, 31 команда болды (15 үш адресті және 16 екі адресті командалар). Осылай ары қарай жалғастыруға болады.
2) Мәліметтер мен командаларды адрестеу.
Кез келген машиналық команда – машиналық код, ол мынаны анықтайды:
-
операцияны
-
мәліметтерге көрсетеді
команданың адрестік бөлігінде адрестік код сақталынады. Көптеген жағдайда мәліметтерге нақты қатынасу физикалық (орындаушы) адрес бойынша жүреді. Көбінесе физикалық адрес команданың адрестік өрісімен сәйкес келмейді, бірақ оған тәуелді. Жалпы жағдайда адрестік кодтан физикалық кодқа – адрестеу режимі (әдісі) түрлендіру жүреді.
Адрестеу әдістері негізгі сәулеттік белгілердің бірі болып табылады. Қазіргі уақытта адрестеудің әртүрлі әдістері мен олардың модификациясы белгілі. Мәліметтерді адрестеудің барлық белгілі әдістеріекі үлкен топтарға бөлінген:
-
түзу
-
түзу емес
Адрестеудің түзу әдістерінде операндтың жинақтаушы адресі немесе операндтың өзі түрлендірусіз адрестік кодта орналасқан. Түзу емес әдістер адрестік код бойынша физикалық адресті құру процедураларын орындауды қажет етеді, ол үшін ЭЕМ-де арнайы адрестік механизм орнатылады.
Адрестеудің түзу әдістері.
1. Анық емес адрестеу. Мұндай командаларда анық адрестік өріс жоқ (нуль адресті команда). Операнд операция кодымен беріледі. Көбінесе адрестеудің мұндай әдісі процессордың тіркелген программалық регистрлері үшін пайдаланылады.
2. Қатыссыз адрестеу. Адрестік өрісте адрестік код емес, ал операндтың өзі көрсетіледі. Мұндай әдіс жадыға операндтар үшін қосымша қатынасуды қажет етпейді, бірақ адрестік өрісте операнд ұзындығы бар болуы керек. Көбінесе есептеу константаларын беру үшін қолданылады.
3. Абсолютті (түзу)адрестеу – операнд сақталатын адрестік өрісте жадының толық адресі берілетіндігімен сипатталады. Бұл жағдайда адрестік өріс ұзындығы және жедел жады көлемі бір-бірімен келесі қатынас бойынша байланысқан: m=log2Еm. Егер Еm өте үлкен болса, онда командада адрестік өріс ұзындығы үлкен. Бұл әдіс жадының кез келген жеріне мәліметтерді жүктеуге мүмкіндік бермейді. Қазіргі уақытта шектеулі саны (драйверлерді жүктеген кезде) ғана пайдаланылады.
Барлық қазіргі ЭЕМ түзу емес адрестеу әдістерін пайдаланады. Олар программалық құралдардың мобильділігін қамтамасыз етуге мүмкіндік береді.
Адрестеудің түзу емес әдісі.
1. Базалау (базирование) (қатысты адрестеу). Орындаушы адресін құру процедурасы: Аорн=Абаза+<жылжыту (смещение)>. ЭЕМ-де бұл әдісті өндіру үшін арнайы ұяшықтар ерекшеленеді, олар базалық регистр функциясын орындайды. Жалпы жағдайда ЭЕМ-де бірнеше базалық регистрлер болуы мүмкін. Сонда адрестік код өзіне екі өрісті қосады:
В – базалау регистрінің адресі
Disp – жылжыту.
Жалпы жағдайда орындаушы адрес келесі қатынаспен құрылады:
Адрестеу әдісі ретінде базалау адрестік құрылғыда қосындылаудың бар болуын қажет етеді. Осыған байланысты адрестік механизмдерде қосындылау операциясы конкатенация (біріктіретін адрестеу) операциясына келтіріледі.
2. Жанама адрестеу. Жанама адрестеу кезінде командада адрестік код құрамында операнд адресі болмайды, ал операнд адресі сақталатын жады адресі болады. Адрестік код – бұл адрестің адресі деп айтуға болады. Қарапайым нұсқада жанама адрестеу кезінде орындаушы адрестің келесі түрі бар: Аорын=(M[Ak]). М-жады адресі, Ак – құрамы. Жалпы жағдайда көп тізбектей жанама адрестеуді пайдалануға болады . Операндты алу үшін жадыға қатынасу саны жанама адрестеудің тереңдігін (глубину) сипаттайды. Операндты алу үшін қатынасудың минималды саны – екі. Орындаушы адресін алу үшін арифметикалық өңдеу қажет емес. Жанама адрестеу команданың өзін өзгертпей оған әртүрлі мәліметтерді өңдеуге мүмкіндік береді, өйткені басқа операндтар командада емес жадыда орналасқандықтан, мәліметтердің сызықты құрылымын өңдеуге болады.
Жанама адрестеудің кемшіліктері: егер жанама адресті көрсеткіштер жадыда орындаушы адреске көрсетсе, онда берілген адрестің жылдамдығы бәсендетіледі. Көбінесе жанама адрес көрсеткіші – бұл процессор регистрінің адресі болғанда жанама адрестеу түрлері пайдаланылады.
3. Автоинкрементті, автодекрементті (индексті) адрестеу. Адрестеудің бұл әдісін енгізу қажеттілігі жады ұяшықтарында тізбектей орналасып сақталған мәліметтерді өңдеу есебіне әкеледі. Мұндай мәліметтерді өңдеу кезінде берілген адрес санау ережесі бойынша өзгереді. Мұндай рекурентті схема индексті адрестеудің пайда болуына әкелді. Мәліметтерді өңдеу кезінде адрес көрсеткішінің өзгеруі ЭЕМ-де автоматты түрде орындалады, онда индексайия автодекрементті немесе автоинкрементті деп аталады. Атауы тек адрестің өзгеру бағатын (+1, -1) көрсетеді. Адрестеудің бұл әдісі есептеу циклдерін программалауды жеңілдетеді, бірақ орындаушы адресінің өзгеруі командада ағымды адрестік кодтың өзгеруіне байланысты жүргізіледі. Фон Нейман принципіне сәйкес жадыда командалар мен программалар бір-бірінен ерекшеленеді, команды кодымен мәліметтермен сияқты барлық операцияларды орындауға болады, бірақ командалардың адрестік кодын өзгерту программа орнын ауыстыра алмайтындай жағдайға әкеледі.
Команданың функционалды міндеті оның операция кодын анықтайды.
Мәліметтерді беру командасы - өзіне үш подгруппаны қосатын командалар тобы.
1. процессор ішінде кодтарды беру командасы. Кодтау операциясын анықтайды, яғни қабылдауышта (dst) жаңа мәліметтер құру. Бастау мәні (src) мәліметтерді беру командалары кезінде сақталады.
2. жадымен процессордың алмасу командасы. Жадыдан регистрлерге және регистрден жадыға мәліметтерді тасымалдаумен байланысқан.
3. процессор мен периферия арасындағы кодтар тасымалдау командасы. Процессор мен периферийлі құрылғылар арасында мәсіметтерді тасымалдау жүреді. ЭЕМ-де сыртқы құрылғылармен алмасу үшін екі әртүрлі нұсқа пайдаланылады:
1. енгізу-шығарудың (in, out) арнайы командалары. Мұндай командалар, егер сыртқы құрылғыда жадының автономды адрестік кеңістігі бар болған жағдайда пайдаланылады. Мұндай командаларда тек қана бір операнд адрестеледі, басқа операнд аккумуляторда орналасады.
2. MOV бірыңғай команда. Егер сыртқы құрылғылар регистрі компьютердің жалпы адрестік кеңістігінің бөлігі ретінде қарастырылған жағдайда пайдаланылады. Бұл сыртқы құрылғылармен, сонымен қатар компьютер жадының қарапайым ұяшықтарымен жұмыс істеуге мүмкіндік береді. Сыртқы құрылғылар мен жадыны бөлу аппараттық деңгейде жүргізіледі.
4) Мәліметтерді өңдеу командалары.
Командалардың бұл тобы ең үлкен және ең басты болып табылады. Мәліметтермен орындалатын операцияға байланысты бөлінеді:
-
арифметикалық
-
логикалық
-
жылжу командасы
-
жолды өңдеу командасы
1. базалық арифметикалық командалар қандайда бір операндтармен арифметикалық операциялар орындау үшін арналған. Кез келген арифметикалық операция екіорынды (мысалы: ADD dst, src; Есептеу схемасы: dst:=(dst)*(src) (dst)*(src):=dst). Егер аккумуляторлы принципті пайдалансақ, онда ACC:=(ACC)*(src). Арифметикалық операция командалары операция нәтижесінің белгісін құрады. Базалық арифметикалық операция арифметикалық қосу болып табылады (екілік кодтарды қосу). Көптеген ЭЕМ қосу операциясымен шектелмейді, екілік кодтарды алу операциясы да бар (SUB dst, src). Бұл операция коммутативті емес. Екілік кодтарды алу командасы белгісіз кодтарды алуды қамтамасыз етеді. Егер көпбайтты мәліметтерді өңдесек, онда екілік санау жүйесі позициялық болғандықтан, өңдеу кіші разрядтан басталады. Мұндай жағдайларда арнайы командалар пайдаланылады (ADC dst, src; Есептеу схемасы: dst:=(dst)*(src) +- (CY)). Егер арифметикалық операцияларда әртүрлі ұзындықты операндтар қатыса алса, онда алдын-ала қысқа операнд ұзын операндтың ұзындығына дейін өседі, сонымен қатар оң жақ бойынша тегістеу жүреді, ал кеңейтілімі белгі көмегімен жүреді. Бұл автоматты түрде өндіріледі, немесе команда есебінен белгі кеңейтілімі (SXT) өндіріледі. Көбінесе команданың кеңейтілімі теркелген регистрде орындалады, сәйкесінше бұл командалар адрессіз. Егер ол болмаса, кеңейтілімнің арнайы процедурасын жазу керек. Кодтарды салыстыру операциясы (CMP dst, src). 2. Логикалық операция командалары. ЭЕМ командалар жүйесінде логикалық командалар қосымша рольды ғана ойнамайды, сонымен қатар логикалық есептерде өңдеудің негізгі операторлары болуы мүмкін. Ол үшін ЭЕМ-де логикалық операциялар жүйесі функционалды толық болуы керек. Операция бит бойынша және біруақытта оңнан солға қарай орындалады. Логикалық өңдеу командалары бір және екі операндты болып келеді. Бірорынды операцияны теріс таңба құрады: NOT dst; Схема: dst:=(dst). Екіоперандты логикалық операцияны мыналар құрады: &, , +. AND dst, src; XOR dst, src; dst:=(dst)*(src); Көбінесе логикалыө операциялар үш есепті шешу үшін пайдаланылады:
1. операндтардың қандайда бір разрядтарын маскілеу және ерекшелеу;
2. қажет биттерде ( көмегімен) қажет мәндерді құру;
3. Жылжу командасы (сдвиг). Жылжу командаларының барлығы келесі белгілер бойынша бөлінуі мүмкін:
1. жылжу түрі (арифметикалық немесе логикалық);
2. жылжу бағыты;
3. жылжу сипаттамасы (қарапайым немесе циклдік);
4. операция орындалғаннан кейін операнд жылжитын разрядтар саны бойынша.
Команда форматында үш өріс бар.
Жедел жады коды
|
Операнд адресі
|
Жылжу бағыты мен саны
|
Егер сандық мәндерді көрсету үшін арнайы түрде құрылатын кодтар пайдаланбаған жағдайда, онда логикалық және арифметикалық жылжулар арасында ерекшелік жоқ болады. Егер де белгі есебімен сандық мәндерді көрсету үшін арнайы кодтар (түзу, кері, қосымша) пайдаланылса, онда арифметикалық жылжу логикалық жылжу процедурасынан ерекшеленеді.
14, 15 дәрістер. ЭЕМ-ді ұйымдастырудың микропрограммалық деңгейі.
Достарыңызбен бөлісу: |