6.2 Микропроцессордың iшкi құрылымы

 

Микропроцессордың негiзгi функцияларына:

• жедел жад командаларын iрiктеу;

• командаларды декодтау (яғни, команданың орындалуын анықтау, оның қолдану әдiсiн және операндтар адрестерін анықтау);

• командаларда кодталған операцияларды орындау;

•жедел жад және сыртқы құрылғылар, iшкi регистрлердiң арасындағы мәлiметтердiң жiберілуiн басқару;

• ішкі процессорлық және бағдарламалық үзулердi өңдеу;

• сыртқы құрылғылар сигналдарын өңдеу және тиiстi үзулердi iске асыру;

• компьютердiң құрамына кiретiн әр түрлi құрылғыларды басқару.

Микропроцессорлардың iшкi құрылымы («Pentium» үш миллион транзисторлардан тұрады) өте күрделi. Негiзгi қызметтік түйiндердiң жалпы сұлбасын қарастырсақ, күрделi суреттік көрініс пайда болады. МП-дің сонымен бiрге iшкi құрылғылары оның маркасына байланысты әртүрлі болады. Бiр процессордың құрылымы басқа процессордың жұмысын түсiнуге көмектеспеуі мүмкін.

Қазiргi ЭЕМ-дің процессорларының инженерлiк бөлшектерiн зерттеу (және тiптi бағдарламалаушы үшiн) қолданушы үшiн тиiмсiз және тек бағдарламаға қажетті қызметтік түйіндермен ғана шектелуге болады.

Бағдарламалаушы үшін процессор кейбір жүйелік ережелерге сәйкес өңделетін және белгілі-бір өзара байланысқан әртүрлі мақсаттағы регистрлар жиынынан құралады. Әрине, бағдарламалаушы үшін процессордың ішкі жадтың барлығы қол жетімсіз болады.

Микропроцессордың ішкі регистрларының келесі басты бөліктерін қарастырайық: командалардың адресінің санауышы, степ көрсеткіші және күй регистрі. Команда адресінің санауышының болуы тіпті Фон Нейман жұмыстарында ұсынылған.

Санауыштың бағдарлама командаларының келесі адресін сақтауда және оны автоматты есептеуде рөлі зор. ЭЕМ-да бағдарламалық санауыштың көмегімен бағдарлама командаларының орналасу тізбегін қолданудың негізгі циклі жүзеге асырады. Ескеретін жайт, барлық МП-де команда санауышы бағдарлама арқылы қол жетімсіз болады.

Степ көрсеткішінде степ жадында арнайы ұйымдастырылған бөліктің бастамасы сақталады.

Процессордың күй регистрі. Әртүрлі МП үшін күй регистрі түрліше аталуы мүмкін. (Мысалы, процессордың күй сөзі, жалауша регистрі тағы сол сияқты). Бірақ оның мазмұны бір болып қала береді. Бұл регистрде процессордың ағымдық режимі туралы ақпарат сақталады. Мұнда сонымен қатар орындалушы командалар нәтижесі туралы ақпарат орналасады. Мысалы, әрекет кезінде қате болды ма жоқ па, нәтиже теріс пе, әлде 0-ге тең бе, тағы сол сияқты. Бұл маңызды регистрде ақпарат талдауы мен қолданылуы биттік түрде өтеді немесе күй регистрінің әрбір битінің жеке мәні болады. МП күйінің регистрінің мазмұнын ең алдымен командалық санауыш мәнінен кейін бірден сақталады. Әрбір МП-да сонымен қоса, ЖЕСҚ адрестері мен ағымдағы өңделуші мәліметтер сақталатын жұмыс регистрларының жиыны болады. Аккумуляторда барлық негізгі әрекеттер жүргізіледі және оның нәтижелері сақталады.

Регистрлар арасындағы байланыс. Олардың біріндегі ақпарат екіншісіне беріліп отырады. МП-дағы бір регистрдегі ақпаратты әркезде екіншісіне аударуға болады.

МП регистрінің разрядтылығы ЭЕМ-нің барлық мүмкіндіктеріне айтарлықтай әсерін тигізеді. Сондықтан «ЭЕМ разрядтылығы» ұғымын анықтап алайық. Оның құрамына мыналар кіреді:

- (m) МП-р регистрларының ішкі разрядтылығы;

- (n) мәліметтер шинасының разрядтылығы;

- (k) адрес шинасының разрядтылығы.

 

 

Басқару шинасы

Адрестер шинасы

Адрестер шинасы (k)

 

Мәліметтер шинасы (n)

 

6.1-сурет. Процессор мен негiзгi жадтың арасында ақпарат алмасу

 

Мәлімет ЖЕСҚ-нан процессор регистрларына және керісінше мәліметтер шинасынан беріледі, адрес шинасы арқылы ЖЕСҚ-да сақталған мәліметтердің орны туралы ақпарат беріледі. Бұл шиналардың разрядтылығына сәйкес келмеуі мүмкін. Мысалы, жоғарыда айтылған «Intel 8088» МП m/n/k=16/8/20 мәнімен сипатталды. 16-разрядты ЭЕМ деп айтқанда оның т мәні туралы айтады. Себебі, МП басқаратын ЖЕСҚ адрестік кеңістігінің көлемі 2к тең.

6.3 Жадысы бар микропроцессордың жұмысы. Адрестеу әдістері

МП адрестi кеңiстiгі ақпаратты алатын немесе жіберетін ЖЕСҚ-ның жад ұяларының жиынынан тұрады. Жоғарыда айтылғандай, 4-ші буыннан бастап жадыны байттық ұйымдастыру үстем алып, минималдық адрестік бірлік болып байт саналады. Мысалы, 1024 Кб көлемді ЖЕСҚ үшін байттар адресі келесідей:

00000 00001 ... FFFFF

(оларды он алтылық жүйеде жазамыз; соңғы байтың адресі: 1024*1024 -1=1 048 576 - 1 = FFFFF).

Процессор жадымен ақпарат алмасуда олардың нөмiрлерi бойынша ЖЕСҚ-ң ұяшықтарына қатынасады. Егер адрес командада болса, онда ол тікелей адрестеу болғаны. Мұндай жағдайда команда ұзындығы өсетін болғандықтан, процессор ЖЕСҚ-на қатынасу үшін жанама адрестеу әдісі қолданылады. Жад адресі МП регистрларының біріне алдын-ала енгізіліп, командада осы регистрға сілтеме болады. Регистрге адресті сақтауда оны әрі қарай түрлендіруге де ыңғайлы болады.

Бастапқы ақпаратқа кең тараған сілтеме нұсқаларының сипаттамасы:

1) Мәліметтер МП регистрлерінің бірінде орналасады;

2) Мәліметтер команда құрамына енеді немесе әрекет кодының соңында орналасады;

3) МП регистрлерінің адресі бар ЖЕСҚ-ң ұяшығында мәліметтер болады;

4) Мәліметтер ЖЕСҚ ұяшығында орналасады, оның адресі келесідей формуламен есептеледі:

адрес═базалық адрес+ығысу

Базалық адрес МП регистрінің бірінде сақталады және мәліметтер массивінің бастапқы нүктесі болып табылады. Басқа регистрлердің мазмұны болатын белгілі бір тұрақты ығысу болуы мүмкін.

ЖЕСҚ-қа мұндай қатынасу әдісі индекстік деп аталады, себебі индексі болмайынша бір өлшемді массив элементтерін табуға ұқсас болып келеді.

МП-ң нақты модельдерінде ЖЕСҚ адрестеудің кейбір ерекшеліктері болады. Мысалы, РDР процессорларында екілік жанама адрестеу болуы мүмкін. Мәліметтер адресі ЖЕСҚ-ң ұяшығында сақталады, ал оның адресі көрсетілген регистрда болады.

«Intel» фирмасының процессорында қабылданған сегменттік әдісті қарастырайық. Белгілі американдық бағдарламалаушы Питер Нортон бұл әдісті «клудж» сөзі деп атады. («Клудж» ағылшын тілінен аударғанда мәселені уақытша шешуге арналған құрал-сайман). Адрестеудің сегменттік әдісі алғашқы 16-разрядты 8086 МП ұсынылды. 16-разрядты регистрді қолдана отырып, 20-разрядты адрес алу үшін және сол арқылы ЖЕСҚ көлемін 64 кбайттан 1Мбайтқа дейін ең үлкен мүмкіндігін жоғарылату көзделді. ЖЕСҚ адресі екі санның қосындысы сияқты есептеледі. Соның біреуі солға 4 екілік разрядқа ығысқан немесе 16-ға көбейтілген. Мысалы, 16-қ түрдегі сегмент А000 тең болса, ығысу 1000 болады. Мұндай адрестеудің жалпылама жазбасы мынадай түрде болады: А000/1000. Нәтижесіндегі адрес:

А000()

+ 1000

А1000

Сегменттік адрестеуде ЖЕСҚ-ң адресі сандардың бірнеше комбинациясы түрінде беріледі.

Стек термині «stack» атты ағылшын сөзінен шыққан. Стек – бұл стек көрсеткіші қолданылатын тізбектегі әдістен ақпарат саналатын немесе жазылатын адрестеудің анықсыз әдісі. Мысалы, N1, N2 және N3 3 нақты сандар мәнін уақытша сақтау, содан соң барлығын жаңарту қажет болсын. Ол үшін стектік жадыны қолданамыз. Стекте ақпараттың бір кірісі бір шығысы болады. Оның адресін сақтау үшін стек көрсеткіші қажет. Оның адресі 2006 болсын (4.13 сурет, а) «Стекке N1 жазу» командасы болғанда процессор келесі әрекеттерді орындайды:

1) 2-ге стек көрсеткішін азайту (бүтін сан жадыда 2 байт орын алады)

2) Алынған 2004 адресі бойынша N1 жазады (6-2 сурет, б)

«Стекке N2 жазу», «Стекке N3 жазу» командасының орындалуы сәйкесінше болады. Яғни бұл айнымалылардың мәндері 2002 және 2000 ұяшығына орналасады және стек көрсеткіші 2000-ға тең болады.

 

 

 

6.2-сурет. Стек жұмысын зерттеуге арналған мысал

 

Енді мәліметтерді шығаруды қарастырамыз. (6-2, б сурет) суретінде көрсетілгендей көрсеткіш қазір N3 айнымалысының мәніне «бағытталған», яғни, сол айналымнан бастап оқиды. «N3 Стектен оқу» командасын орындағанда процессор:

1) Стектен N3 мәнін санайды;

2) Көрсеткішті 2-ге үлкейтеді (6-2, г сурет)

Сол сияқты N2 және N1 оқимыз, 6-2 суретінде бейнеленгендей стек босап, бастапқы күйге қайтып келеді.