3
ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫҢ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
С.Т. Тынымбаев
КОМПЬЮТЕРЛІК ЖҮЙЕЛЕР АРХИТЕКТУРАСЫ
Ақпараттық-коммуникациялық технологиялар бойынша Республикалық оқу- әдістемелік кеңесі оқулық ретінде ұсынған
Алматы 2019
4
КІРІСПЕ
Компьютерлік техниканың әртүрлі аппараттық қырларына арналған пәндерінің ішінде «Компьютерлік жүйелер архитектурасы» берілетін ғылыми мағұлматтардың түйіндемесі бола отырып, келесі компьютерлік желілер бағытына арналған әртүрлі пәндерге негіз болады.
«Компьютерлік жүйелер архитектурасы» пәнінің мақсаты заманауи есептеу машиналары мен есептеу жүйелерінің негіздерін және олардың жұмыс жасау принциптерін оқыту. Ақпараттық технологиялар бағытында дайындалатын мамандықтар үшін қаралып отырған пәннің, мазмұны төменгідей болып келеді:
- Есептеу техникасының даму кезеңдері;
- Есептеу машиналарын құрудың негізгі принциптері, олардың құрылымдық сұлбалары мен көрсеткішері;
- Операндтарды көрсету тәсілдері, команда типтері мен олардың пішімдері;
- ЭЕМ жады құрылғыларын ұйымдастыру;
- Операциялық және басқару құрылғыларын ұйымдастыру;
- Шиналарды ұйымдастыру;
- Енгізу-шығару құрылғыларын ұйымдастыру;
- Әртүрлі класты ЭЕМ ұйымдастыру сәулеті;
- Параллель есептеулер мен параллель жүйелер;
- Көпмашиналы және көппроцессорлы есептеу жүйелері.
Оқулықта осы аталған тақырыптар толығымен қамтылған, оқулық 16 тараудан тұрады.
Бірінші тарауда есептеу техникасының даму кезеңдері туралы деректер берілген.
Екінші тарауда Фон-Нейман тұжырымдамасының негізгі принциптері талқыланып, Фон-Нейман машинасының жұмыс жасау принциптері қаралады және есептеу машиналарының жұмысын бейнелеуге мүмкіндік беретін шағын операциялар мен шағын бағдарламалар тілі қаралған.
Есептеу машиналары мен жүйелерінің құрылымдық сұлбалары мен олардың негізгі көрсеткіштері үшінші тарауда келтірілген.
Төртінші тарауда машиналарда әртүрлі операндтарды (екілік, ондық, символдық) көрсету тәсілдері қаралған.
Есептеу машиналарының арифметикалық және логикалық командалары, енгізу-шығару командалары, командалар ағымын басқару және көппроцессорлы есептеу жүйелерінің командалары қаралады. Командалар пішімі мен мекендеу тәсілдері де бесінші тарауда қамтылған.
Алтыншы тарауда қатаң және магистралды операциялық құрылғылардың ерекшеліктері қамтылған. Қосу, көбейту, бөлу операциясын орындайтын, бекітілген және жылжымалы үтірлі операциялық құрылғылардың құрылымдық
5
сұлбалары және көбейту, бөлу операцияларын жеделдететін аппарттық (матрицалық, бұтақ тәрізді, конвейерлік) тәсілдері қаралады.
Жетінші тарауда жады құрылғылары қаралады. Олардың сипаттамалары мен жіктелінуі, негізгі құрылымдары, жады шағын сұлбасының құрылымы, негізгі жадыны ұйымдастыру тәсілдері, стек, КЭШ, ассоциативтік жадылардың жұмыс жасау принциптері, ауани жадыны ұйымдастыру, жедел жадыны қорғау тәсілдері қаралады. Магниттік, оптикалық дисктер негізінде құрылған жады құрылғыларының жұмыс жасау принциптері және магниттік таспа негізінде құрылған сыйымдылығы жоғары есте сақтау құрылғылары қаралады.
Сегізінші тарау есептеу машиналарының басқару құрылғысына арналған.
Тарауда басқару құрылғысының атқаратын қызметі осыған сәйкес құрылымдық сұлбасы, микробағдарламалық автоматтардың түрлері, бағдарламаны үзу жүйесі және векторлық үзу контроллерін ұйымдастыру тәсілі қаралады.
Тоғызыншы тарауда шиналардың төрелік механизмдері, хаттамалары және түрлері келтіріледі.
Енгізу-шығару жүйелері туралы деректер оныншы тарауда келтірілген.
Олардың орталық процессорларға қосылу тәсілдері, енгізу-шығару модулінің құрылымы, енгізу-шығару операцияларын ұйымдастыру тәсілдері және енгізу- шығару арналары мен процессорлары туралы деректер беріледі.
Он бірінші тарауда қазіргі есептеу машиналарында процессорларды ұйымдастыру тенденциялары қаралады. Командалар конвейерлері, суперскалярлық процессорлар, CISC және RISC процессорлары, VLIW процессорлары және көпядролы процесорларды ұйымдастыру түрлері келтіріледі.
Он екінші тарауда компьютерлерде параллель өңдеу деңгейлері, параллель өңдеу өлшемдері мен заңдылықтары, дерек және командалар ағындарының тұрғысынан есептеу жүйелерінің Флинни жіктемесі қаралады.
Он үшінші тарауда есептеу жүйелерінің ішкі байланыстарын ұйымдастыру тәсілдері, параметрлері, жіктелінуі, деректерді маршрутизациялау функциялары, статикалық және динамикалық топологиялар қаралады.
Он төртінші тарау есептеу жүйелерінде жады құрылғыларын ұйымдастыру: ортақ жадылы, үлестірілген ортақ жадылы және үлестірілген жадылы архитектура түрлері қаралады.
Он бесінші тарауда жеке команда ағыны және көптік деректер ағынымен жұмыс жасайтын есептеу жүйелері қаралады. Оларда векторлық, матрицалық, ассоциативтік және систоликалық құрылымды есептеу жүйелерінің жұмыс жасау принциптері талданады.
Он алтыншы тарауда көптік команда және көптік мәліметтер ағынымен параллель жұмыс жасайтын симметриялы көппроцессорлар, параллель векторлы, жаппай параллель өңдеу, үлестірілген жадылы кластерлік есептеу жүйелері және транспьютерлер негізінде құрылған есептеу жүйелері қаралады.
6
Кітаптың әр тарауында бақылау сұрақтары келтірілген. Оқулық «Есептеу техникасы және бағдарламалық қамтамасыз ету», «Ақпараттық қауіпсіздік жүйелері» білім беру бағдарламалары бойынша оқитын бакалаврлар мен магистранттарға арналған.
7
1. ЕСЕПТЕУ ТЕХНИКАСЫНЫҢ ДАМУ КЕЗЕҢДЕРІ
Есептеу техникасының даму кезеңдерін буындарға бөліп қарау кеңінен тараған.
Есептеу техникасының буындары деп белгілі бір уақыт аралығындағы есептеу машиналарының даму кезеңімен белгіленетін құрылғыларды өндіру технологиялары, функционалдық мүмкіндіктер деңгейі және бағдарламалық қамтамалары шамалас машиналар тобын айтуға болады. Есептеу машиналарының даму кезеңдерін әдетте Джон Фон Нейман машинасымен байланыстырады, өйткені Фон Нейман ұсынған бағдарламаларын машина жадында сақтау тұжырымдамасы қазіргі кезде кез-келген есептеу машиналары мен жүйелерінде қолданыста.
Осыған байланысты ЕТ (есептеу техникасы) даму тарихын үш кезеңге бөліп қарауға болады:
- Фон Нейманға дейінгі кезең
- Фон Нейман есептеу машиналары мен жүйелері - Фон Нейман есептеу машинасынан кейінгі кезең
Есептеу машиналарын буынға бөлуді технологияның өзгеруімен де байланыстырады. Нөлдік буынға механикалық немесе электромеханикалық машиналарды жатқызса, одан кейінгі буындарға есептеу техникасының элемент негіздері – электронды шамдар, жартылай өткізгіш аспаптар, интегралдық сұлбалар (кіші, үлкен, өте үлкен және ультра үлкен) интегралдық микросұлбалар жатады.
1.1. Нөлдік буын (1642-1945)
Нөлдік буынға механикалық және электромеханикалық компьютерлер жатады. Оған мысал Блез Паскальдің (1623-1662) механикалық машинасын айтуға болады. 1642 жылы жасалынған машина тек екі (қосу және алу) операцияны орындауға мүмкіндік береді. 1672 жылы немістің ұлы математигі Готфрид Вильгельм Лейбниц (1646-1726) жасаған механикалық машинасы қосу және алу операциясынан басқа көбейту және бөлу операцияларын орындауға мүмкіндік берді.
1836 жылы Кэмбридж университетінің профессоры математик Чарльз Бэббидж (1792-1872) «аналитикалық машинасының» жобасын ұсынды.
Аналитикалық машина төрт бөліктен: жады құрылғысынан, есептеуіш құрылғысынан, енгізу құрылғысынан (перфокартадан оқу), деректерді шығару
8
құрылғысынан (перфоратор) тұрады. Жады құрылғысы 50 разрядты 1000 ондық сандарды сақтауға арналған. Ұсынылған аналитикалық машинаны жасау үшін дәлдігі өте жоғары, мыңдаған тісті доңғалақтар керек болды. Ондай доңғалақтарды XIX ғасырда жасау мүмкін емес еді. Бірақ Бэббидж идеясын бүгінгі машиналарда кездестіруге болады. 1938 жылы неміс инженері Конрад Цузе (1910-1995) бағдарламаланатын механикалық Z есептеуішті жасап шықты.
Жады құрылғысы 1000 бит құрады. Цузенің құрған ЕМ кейінгі кезде дүние жүзіндегі бірінші жасалынған компьютер деп жүр. 1940 жылы Цузе Z2 машинасын релейлік логикада жасады. Ал 1941 жылы Z3 электромеханикалық бағдарламалық есептеуішті жасады. Есептеуіш 2100 электромеханикалық релелерден тұрды. Бағдарлама перфолентада сақталды. Жады сыйымдылығы 64, 22 биттік сөзден тұрды. Көбейту операцясы 3-5 с. 1943 жылы Говард Айкеннің басшылығымен бағдарламамен басқарылатын бірінші есептеуіш Mark машинасын жасады. Машина бірнеше есептеуіштерден тұрды. Әрбір есептеуіш ортақ есептің бір бөлігін өңдеді. Басқару бір құрылғы арқылы жүргізіледі.
Командалар қағаз перфоленталардан оқылды. Есептеуіш 23-разрядты сандармен жұмыс жасады.
1945 жылы Цузе Z4 есептеуішін аяқтады. Z4 есетеуішінің архитектурасы қазіргі машиналар архитектурасына өте ұқсас. Жады құрылғысы мен процессор жеке құрылғы ретінде құрылған. Процессор төрт операцияны орындады, оның үстіне ол жылжымалы үтірлі сандармен де амалдар орындай алды және түбір табу операциясын орындауға мүмкіндік берді. Бағдарлама перфолентада сақталып олар тізбекпен оқылып отырды.
1.2. Бірінші буын (1937-1953)
Бірінші буынды машиналардың элемент негізі электронды-вакуумды шамдар болды. Өйткені мұндай шамдардың жылдамдығы электромеханикалық релелерге қарағанда өте жоғары (мыңдаған есе). Бірінші электронды есептеу машинасына бірнеше есептеуіштер таласа алады. Олардың ішінде бірінші ABC (Atanasof-Berry Computer) арнайы калькуляторын атауға болады. АВС 1939 жылдан 1942 жылдар аралығында профессор Джон Атанасовтың аспиранты К.Берримен жасаған калькулятор көмегімен сызықтық теңдеулер жүйесін шешу үшін қолданылады. АВС жады 50 битті 50 сөздерді сақтауға мүмкіндік берді.
Жады элементтері ретінде регенерациялау тізбегі бар конденсаторлар қолданылды. Сырт жады ретінде перфокарталар іске асырылды.
Бірінші ЭВМ-ге таласушы ретінде 1943 жылы Англияда жасалынған Colossus есептеуіші жатады. Оны Томми Флауэрс профессор Макс Ньюменннің
9
жетекшілігімен жасаған. Colossus-тың көмегімен немістің шифрлаушы машинасы «Лоренц Шлюссель-цузат-40» кодаларын шешеуге қолданды.
Біріншілікке кандидат үшінші есептеуішке жалпы мақсатты бағдарламаланатын электронды калькулятор ENIAC (Electronic Numerical Integrater and Computer – электронды цифрлық интегратор және компьютер) жатады. Калькулятродың идеясының авторы Пенсильван университетінің қызметкері Джон Мочли (1907-1970). Калькулятор 1946 жылы Преспер Эккертпен бірге іске қосылған. ENIAC калькуляторы сутегі бомбасын жасау бағдарламасында кеңінен қолданылды. ENIAC салмағы 30 тонна, құрамы 18000 радиошамдардан тұрды. Секундына 5000 қосу және 360 көбейту амалдарын ондық санақ жүйесінде орындайды. ENIAC жобасына кеңесші ретінде Джон Фон-Нейман қатысқан болатын. Джон Фон-Нейман сонымен қатар, Принстон орталығында өзінің IAS (Immediate Address Storadge) деген машинасын жобалауға кіріскен болатын. EDVAC және IAS машиналарының жобаларын жасау үстінде Фон-Нейманның ойға түйген идеяларына мыналар жатады:
есепті шығару алдында бағдарлама және деректер цифрлық түрде компьютердің ішкі жадында сақталу керек және ENIAC машинасында қолданылатын ондық арифметика (әрбір ондық разрядты көрсету үшін он электронды шам қолданылады) бинарлы арифметикамен алмастырылуы керек.
Жоғарыдағы аталған идеяларды іске асыратын жоба қазіргі кезде Фон-Нейман есептеу машиналары деп аталады. Бағдарламалары ішкі жадыда сақталатын бірінші машина қатарына ЕDSAC машинасы жатады. Фон-Нейман машинасының архитектурасы 1.1-суретте келтірілген.
1.1-сурет. Фон Нейман машинасының сұлбасы
Фон Нейман машинасы 5 бөліктен: машина жадынан, арифметикалық және логикалық құрылғысынан (АЛҚ), басқару құрылғысынан, енгізу-шығару құрылғысынан тұрады. Жады 4096 сөзден, ал сөз әрқайсысы 20 биттен тұратын екі команда немесе 40 разрядты бүтін сан. Әр команданың 8 биті команда типін көрсетсе, қалған 12 биттері жадының 4096 сөздерінің бірін көрсете алды.
10
Арифметикалық-логикалық құрылғының құрамындағы 40 битті регистр- аккумулятор арқылы деректер компьютер жадымен және енгізу-шығару құрылғыларымен алмастыру жүргізіледі. Джон Фон Нейманның IAS және EDSAC машиналары компютерлік техниканың ары қарай дамуына зор ықпал етті.
1953 жылы IBM фирмасы IBM-701 машинасын сериялы түде нарыққа шығарды.
1951 жылы С.А.Лебедевтің басқаруымен МЭСМ (кіші электрондық есептеу машинасы) жасалынды. Бұл ССРО-да және Европада жасалған бірінші электронды машина болды.
1952 жылы (И.С.Брук, Н.Я.Матюхин, А.Б.Залкинд) М-1 машинасы жасалынды.
1953 жылы Европадағы ең жылдам жұмыс жасайтын есептеу машинасы БЭСМ (С.А.Лебедев) пайдалануға берілді. Оның жылдамдығы 8000-10000 операция/секунд.
1.3. Екінші буын (1954-1962)
Екінші буынды машиналардың пайда болуы жартылай өткізгішті элементтердің (транзисторлар мен диодтардың) пайда болуымен байланысты.
Транзисторларды Bell Laboratoriec зертханасының мамандары Джон Бардин, Уолтер Браттейн, Уильям Шокли ойлап тапқан. Сол үшін олар 1956 жылы Нобель сыйлығына ие болған. Транзисторлар негізінде құрылған бірінші компьютерлерге МТИ зертханасында жасалынған ТХ-0 (транзисторлық экспериментарлық компьютерлер) ТХ-0, ТХ-2 және Bell Labs зертханаларында жасалынған TRADIC (Transistor Digital Computer- транзисторлық цифрлық компьютер) компьютерлері жатады. 1961 жылы DEC (Digital Equipment Corporation - цифрлық ақпаратты өндіретін корпорация) фирмасы PDP-1 машинасын шығарды. 64 Кбайт жадылы компьютер құрамында 512*512 пиксельді дисплей қосылған болатын. DEC фирмасы PDP-1 компьютерінен кейін 12 биттік PDP-8 мини компьютерін шығара бастады. Оның құны басқа компьютерлерге қарағанда төмен болды. PDP-8 компьютеріне енгізілген негізгі жаңалық - компьютердің барлық құрылғылары бір шина арқылы алмасуға мүмкіндік алды (1.2-сурет).
11
1.2-сурет. PDP-8 компьютерінің шинасы
Екінші буынды машиналардың ерекшелігі ретінде жартылай өткізгіштік элементтерімен қатар жады құрылғыларын құруға магниттік өзекшелердің кеңінен қолдануын атауға болады. Магниттік өзекшелер негізінде құрылған жадының негізгі артықшылығы оларға сақталған деректерге еркін қатынас құра аламыз. Яғни кез-келген уақытта деректің кез-келген элементіне олардан деректерді оқу үшін немесе оларға деректерді жазу үшін қатынас құра аламыз.
Екінші буынды машиналардың құрамына жылжымалы үтірлі сандарды өңдейтін аппараттық блоктар енгізілді. Есептеу машинасының құрамына бөлек енгізу-шығару блоктары енгізілді. Мұндай блоктар процессор жұмысын енгізу- шығару операцияларынан босатып, оның өнімділігін өсіруге мүмкіндік берді.
Екінші буынды кеңестік машиналарға Урал-4, Урал-11, БЭСМ-2, М-40, Минск- 2, Минск-32, «Днепр» машиналары жатады.
1.4. Үшінші буын (1963-1972)
Үшінші буынды машиналар интегралды микросұлбалар негізінде құрылды. Жады құрылғыларында магниттік өзекшелердің орнына жартылай өткізгіштер қолдана бастады.
Процессорлар негізінен микробағдарламалық басқару құрылғылары арқылы құрылды. Командалар мен операциялар конвейерлік тәсілмен орындала бастады. 1964 жылы Сеймур Крей CDC-6600 жаңа есептеу жүйесін құрды.
Жүйе он тәуелсіз функционалды блоктардан және 32 тәуелсіз жады модулььдерінен тұрды. Жүйе жылдамдығы -1 Mflops (жылжымалы үтірлі сандармен секундына миллион операция жасалған), 1969 жылы Крей жасаған CDC-7600 жүйесінің жылдамдығы 10 Mflops-қа жетті. CDC-7600 жүйесі - бірінші конвейерлік есептеу жүйесі деп аталды. Үшінші буынды машинаға IBM-360, IBM-370 машиналары, SOLOMON, ILIAC-IV жүйелері, конвейерлік- векторлық жүйелер TI-ASC және STAR-100 жүйелері жатады. IBM-360 жүйелерінің негізінде Кеңес одағы мен социалистік елдерде EC-1010/1060 іске қосылды.
Кеңес одағында жасалған үшінші буынды машиналарына БЭСМ-6 (С.А.Лебедев) машинасы жатады. Оның жылдамдығы секундына 1 миллион операция. Одан басқа М-220, М-222,МИР-1 машиналарын жатқызуға болады.
1.5. Төртінші буын (1972-1984)
Төртінші буынды машиналар үлкен интегралды сұлбалар (Large-scale integration,LSI) және өте үлкен интегралды сұлбалар (Very large-scale integration,VLSI) негізінде құрылған. Сұлбалардың бірінші түрінің кристалында 1000 транзистор орналасса, екінші түрінде 100000 транзистор орналасады.
Транзисторлардың мұндай тығыздығы бір микросұлбада компьютердің барлық
12
негізгі құрылғыларын орналастыруға мүмкіндік берді. Әртүрлі микропроцессорлар мен микро-ЭВМ-дер пайда болды. Олардың қатарына командалары ықшамдалған есептеу машиналары (RISC, Reduced Instruction Set Computer ) жатады. Мұндай машиналар процессор командаларының орындалу жылдамдығын арттыруға алып келетін қарапайым сұлбалар арқылы құрылған.
Күрделі командалар ішкі бағдарламалар арқылы жылдам орындалатын қарапайым командалар арқылы орындалады.
Өнімділігі жоғары есептеу жүйелері көбінесе векторлық процессор негізінде дамуын жалғастырды.
С бағдарламалау тілі пайда болды. UNIX операциялық жүйесін С тілінде жазу арқылы UNIX операциялық жүйесін басқа есептеу машинасында қолдануға мүмкіндік берді.
1.6. Бесінші буын (1984-1990)
Бесінші буында есептеу жүйелері көптеген машиналардан немесе процессорлардан тұрады. Есеп шығару үстінде әрбір пайдаланушыға жеке процессор бөлінеді және керек болған жағдайда әрбір пайдаланушыларға қосымша процессорлар ресрустарын пайдалануға мүмкіндік берді.
Бесінші буын жүйелері екі түрлі архитектуралық ерекшеліктерімен белгіленеді. Біріншісінде барлық машиналар бір жады арқылы жұмыс жасайды.
Екіншісінде әрбір машина өзінің жеке жады арқылы жұмыс жасайды.
Есептеу жүйесінің бірінші түріне Sequent Balance 800 жүйесі жатады.
Мұнда сыйымдылығы үлкен негізгі жады 20 процессорлармен ортақ бөлініп пайдаланылады.
Бесінші буынды есептеу жүйесінің екінші бағытында әрбір процессор өзінің жады модульдерімен қамтамасыз етілген. Процессорлар бір-бірімен алмасу желілері арқылы байланысқан. Мысал ретінде Intel фирмасының iPSC жүйесін келтіруге болады. Жүйе 128 процессорларды біріктіре алады.
Бесінші буынды есептеу жүйесінің үшінші бағытына бірнеше қарапайым процессорлардан тұратын орталық құрылғы арқылы басқарылатын, әрқайсысы өз деректермен бірдей операция орындайтын жүйелер жатады. Мұндай есептеу класына Thinking Machines Inc. фирмасының Connection Machine жүйесі және Mas Par Inc. фирмасының МР-1 жүйесі жатады.
1.7. Алтыншы буын (1990-....)
Есептеу машиналарының бірінші төрт буындары бір-бірінен негізінен элемент негіздерімен өзгешеленеді. Бесінші және алтыншы буын есептеу жүйелерінің элемент негіздері бірдей болғандықтан олар бір-бірінен тек архитектуралық өзгешеліктерімен ерекшеленеді. Алтыншы буынды есептеу жүйелері параллель процессорлар массиві арқылы құрылады. Мұндай жүйелер
13
көптеген (бірнеше мың) өзара байланысқан автономды есептеу машиналарынан тұрады. Мұндай жүйелердің есептеу қуаты суперкомпьютерлермен бәсекелесе алады.
Алтыншы буынды есептеу жүйесінің екінші өзгешелелігі – жұмыс стансаларының деңгейі. Жұмыс стансаларының процессорларында RISC архитектурасы, конвейерлеу және параллель өңдеу тәсілі кеңінен қолданылады.
Кейбір жұмыс стансаларының өнімділігі төртінші буынды суперкомпьютерлерімен тең түседі.
Бақылау сұрақтары.
1. Есептеу машиналарының даму кезеңдерін неге Фон-Нейман машинасымен байланыстырады?
2. Есептеу машиналарының буынға бөлінуі қандай белгілермен анықталады?
3. Бағдарламамен басқарылатын бірінші электромеханикалық машина қай жылы шықты және кім жасады?
4. Бірінші электрондық машиналарға қандай есептеу машиналарын жатқызуға болады?
5. Бағдарламалары ішкі жадыда сақталатын бірінші есептеу машинасы қатарына қандай машиналарды жатқызуға болады?
6. Бірінші ортақ шиналы машинаға қандай машина жатады?
7. Қенес одағы кезінде ең көп таралған әмбебап үшінші буынды машиналарға қандай есептеу машиналарының модельдері жатады?
8. Төртінші буынды машиналардың элемент негізі ретінде қандай интегралдық сұлбалар қолданылды?
9. Бесінші және алтыншы буынды машиналар қандай архитектуралық ерекшеліктерімен анықталады?
14
2. БАҒДАРЛАМАЛАРДЫ МАШИНА ЖАДЫНДА САҚТАУ ТҰЖЫРЫМДАМАСЫ
Есептеу машинасы деп берілген алгоритм арқылы дискретті деректерді автоматты түрде өңдеуге арналған техникалық жабдықтар жиынын айтамыз.
Алгоритм ұғымы математика мен есептеу техникасының іргелі ұғымдарының бірі. Халықаралық стандарттар ұйымының (ISO) анықтамасына сәйкес алгоритм деп операциялардың ақырлы саны арқылы есептер шешімін анықтайтын ережелердің ақырғы жиынын айтуға болады.
Алгоритмның негізгі қасиеттеріне дискреттілік, нақтылық, жалпыламалық, нәтижелік жатады.
- Дискреттілік - алгоритм дискретті ақпараттармен (мысалы, цифрлық не символдық) өңдеу жүргізгендігін көрсетеді.
- Анықтылық – алгоритмде жасалатын барлық әрекеттер көрсетіледі және әрбір әрекетті басқа түрде түсіндіруге жол берілмейді.
- Жалпыламалық – алгоритмнің тек қандай да бір бірегей мәндеріне ғана емес, бастапқы деректердің мәндер жиындарына да қолданушылығын білдіреді.
- Алгоритмнің нәтижелігі – керекті нәтижені ақырғы қадам саны арқылы алу мүмкіндігін көрсетеді.
Қаралған алгоритм қасиеттері арқылы оларды есептеу машинасында іске асыру мүмкіндігін көрсетеді. Алгоритммен туындайтын процестерді есептеу процестері деп атаймыз.
Есептеу машинасында есептеу алгоритмдері командалар жиынтығынан тұратын бағдарлама түрінде көрсетіледі.
2.1. Фон-Нейман тұжырымдамасының негізгі принциптері
Есептерді шығару алдында бағдарлама командалары жадыда сақталса ондай есептеу машиналары бағдарламалары жадыда сақталатын есептеу машиналары деп аталады. Бағдарламаны машинаның жадында сақтау идеясын бірінші болып Фон Нейман [38] жариялаған. Фон Нейман тұжырымдамасын төменгі 4 принципке алып келуге болады:
- Екілік кодтау;
- Бағдарламамен басқару;
- Жадының біркелкілігі;
- Жадының мекенделуі;
15
Екілік кодтау принципі
Бұл принципке сәйкес кез-келген ақпарат - команда және дерек 0 және 1 екілік цифрлары өрнектеледі.
Әрбір дерек түрі (типі) екілік кодымен көрсетіледі және олардың өз пішімдері болады. Пішімдері екілік сандар (биттер)болған кезде оны өріс деп атайды. Сандар пішімі 2 биттер тобынан тұрады, біріншісі – таңба өрісі, екішісі – разряд мәндер өрісі.
Команда пішімі екі өрістен (2.1-сурет) тұрады: біріншісі – операция коды (ОПК), екіншісі мекен-жай өрісі (мекен-жай бөлігі - МЖБ).
Операция коды (ОПК) r-1 0
Мекен-жай бөлігі (МЖБ) p-1 0 2.1-сурет. Команда құрылымы
Операция коды қандай операция орындау керектігін көрсететін нұсқама:
ол r – разрядты екілік сандармен көрсетіледі.
Мекен-жай бөлігінің түрі және оны құратын мекен-жайлар саны команда типіне байланысты болады. Деректі өңдеу командаларында МЖБ өңделетін объекттердің (операндтардың) немесе нәтиженің мекен-жайлары көрсетіледі.
Одан басқа есептеу ретін өзгертетін командалар бағдарламаның келесі командасының мекен-жайын немесе енгізу/шығару операциялары орындалған кезде – енгізі/шығару құрылғысының мекен-жайы көрсетеді. Мекен-жай бөлігіде екілік кодамен көрсетіледі. Оның ұзындығын p – арқылы белгілейміз.
Сонымен есептеу машинасының командасы (r+p) – разрядты екілік сан болады.
Бағдарламамен басқару принципі
Есепті шығару алгоритміне қатысатын керекті барлық есептеулер бағдарлама түрінде көрсетіледі. Бағдарлама басқару сөздерінің тізбектерінен – командалардан тұрады. Әр команда есептеу машинасында орындалатын операциялар жиынтығының бірін көрсетеді. Бағдарлама командалары машина жадының іргелі ұяшықтарында қатар орналасады. Орындау тәртібі олардың орналасу тәртібіне байланысты – табиғи тәртіппен орналасады. Керек кезінде арнайы командалар арқылы командалардың орындалуының табиғи тәртібі өзгертілуі мүмкін. Орындау тәртібін өзгерту шешімі алдыңғы команда
16
нәтижесін талдау арқылы немесе шартсыз команданың нұсқауымен анықталады.
Жадының біркелкілік принципі
Командалар мен деректер бір жадының ұяшықтарында сақталады. Сырт қарағанда оларды бір-бірінен айыру мүмкін емес. Оларды тек пайдалану тәсілі арқылы айырамыз. Бұл – командалар үстінен сандар сияқты әртүрлі операциялар орындауға мүмкіндік береді. Фон Нейман тұжырымдамасында командалар мен деректердің бір жадыда орналасу тәсілі ұсынылған. Мұндай машиналар архитектурасын принстон архитектурасы деп атайды, өйткені ондай архитектуралы машина Принстон университетінде жасалынған. Осы уақытта Гарвард университетінде де компьютердің басқа моделі жасалынған, мұндай компьютерлерде дерек пен командалар әртүрлі жадыда сақталған.
Архитектураның мұндай түрін Гарвард архитектурасы деп атайды.
Жадыға мекендеу принципі
Кез-келген компьютер жадысы нөмірленген ұяшықтардан тұрады.
Ұяшықтарға нөмірлері арқылы процессор еркін қатынас құра алады.
Командалар мен деректердің екілік кодтары сөз деп аталатын ақпарат бөліктеріне бөлініп жады ұяшықтарында сақталады. Оларға қатынас құру үшін ұяшықтар нөмірімен анықталатын мекен-жайлар қолданылады.
2.2. Фон Нейман машинасының құрылымдық сұлбасы.
Жоғарыда айтылған Фон Нейман принциптерін іске асыратын машина – Фон Нейман машинасы жадыдан, басқару құрылғысынан, арифметикалық және логикалық құрылғыдан (АЛҚ) және енгізу/шығару құрылғыларынан тұрады (2.2-сурет). (Суретте көрсетілген КЭШ жадылары және сырт жады типтік Фон Нейман машинасының құрамына арнайы енбеген).
17
2.2-сурет. Фон-Нейман машинасының құрылымдық сұлбасы
Кез-келген есептеу машиналарында деректер мен бағдарламаларда енгізетін және шығаратын сырт құрылғылары болады. Дерек сырт құрылғылармен енгізілетін порт арқылы машина жадына енгізіледі. Есептеу нәтижелері шығару порты арқылы сыртқы шығару құрылғыларына беріледі.
2.2-суреттен көрініп тұрғандай, сырт құрылғылары есептеу машинасымен порттар арқылы байланысады және алмасады. Мұнда порттар есептеу машинасымен сырт құрылғылар жұмыстарын ұштастыру міндетін атқарады.
Енгізу және шығару порттар жиынтығын енгізу/шығару құрылғысы (ЕШҚ) немесе есептеу машинасының енгізу шығару модулі (ЕШМ) деп атайды. Әрбір сырт құрылғылары есептеу машинасымен алмасу үшін енгізу-шығару командасының мекен-жай бөлігінде әрбір порттың бірегей нөмірі көрсетіледі.
Есте сақтау (жады) құрылғылары
Компьютер жады бір-бірімен байланысқан күрделі көп деңгейлі есте сақтау құрылғыларынан (ЕСҚ) тұрады.
Деректерді ұзақ уақытқа сақтау үшін сырт жады пайдаланады. Белсенді бағдарламаға керекті командалар мен бағдарламалар негізгі жадыда (НЖ) сақталады. Жадыда әрбір сөз жеке нөмірленген ұяшықтарда орналасады.
Негізгі жадының кез-келген ұяшықтарына кез-келген ретпен қатынас құруға болады. Мұндай жады түрін еркін қатынасты жады құрылғысы деп атаймыз. Қазіргі ЕМ негізгі жады жартылай өткізгіш жедел есте сақтау құрылғыларынан тұрады. Мұндай есте сақтау құрылғысында сақталған деректер электр қорегін үзіп тастағанда жоғалып кетеді, яғни жады энергияға тәуелді болады. Негізгі жадының бір бөлігі энергияға тәуелсіз болу үшін оның
18
құрамына тұрақты есте сақтау құрылғысын (ТЕСҚ) қосады. Мұндай ТЕСҚ еркін қатынасты жадыға жатады, бірақ одан дерек көбінесе оқылады.
Негізгі жады машинаның басқа құрылғыларымен басқару құрылғысында орналасқан дерек регистрі (МРг) арқылы дерек алмасады. Жадыдан деректі оқығанда оқылған дерек МРг-ге жазылады. Деректі жазарда дерек алдын ала МРг-ге қабылданады. Жадыға оқу/жазу басқару құрылғыларынан келетін арнайы сигналдар арқылы орындалады.
Негізгі жадыда деректерді белгілі бір ұяшықтарға жазу немесе оқу үшін оның ұяшық нөмірін - мекен-жайын көрсету керек. Ол үшін басқару құрылғысының құрамында жады мекен-жайының регистрі (ЖМЖРг) орналасады.
Негізгі жады ұяшықтары байтпен өлшенеді. Деректерді 2, 4 немесе 8 байт арқылы көрсетуге болады. Мұндай жағдайда сан мекен-жайы ретінде кіші байт мекен-жайы алынады. Мысалы 32 разрядты сан 200, 201, 202 және 203 мекен- жайларында жазылса, онда сан мекен-жайы 200 болады. Мекендеудің мұндай тәсілін кіші байт арқыла мекендеу деп атайды. Мекендеудің басқа тәсілінде кіші мекен-жайда көп байтты санның ең жоғарғы байты орналасады. Мұндай тәсілді үлкен байт арқылы мекендеу тәсілі деп атайды. Кіші байт арқылы мекендеу Intel фирмасының микропроцессорларында кеңінен қолданылады.
Үлкен байт арқылы мекендеу Motorola фирмасының микропроцессорлары мен IBM фирмасының үлкен машиналарында кеңінен қолданылады. Көптеген есептеу машиналарында бір мекендеу тәсілінен екіншісінен өтетін арнайы командалар бар.
Көлемі үлкен бағдарламалар мен деректер сыртқы есте сақтау құрылғыларында сақталады. Мұндай жады құрылғылары энергиядан тәуелді емес, олар магниттік, оптикалық дисктер немесе таспалар арқылы жасалынады.
Оларда ақпарат файлдар түрінде сақталады (ISO стандартына сәйкес, файл – аты анықталған бір блок ретінде өңделтін жазбалар жиынтығы).
Қазіргі есептеу машиналарының құрамына аралық КЭШ жады кіреді.
КЭШ жадының сыйымдылығы үлкен емес, бірақ жылдамдығы өте жағары.
КЭШ жадыда негізгі жадының жиі қолданылатын командалары мен деректері сақталады.
Жоғарыда сөз болған жады құрылғыларынан басқа арифметикалық- логикалық құрылғылардың (АЛҚ) құрамына кіретін регистрлік жады жатады.
Мұндағы әрбір регистрді жады құрылғысының бір ұяшығы деп қарауға болады.
Регистрлік жады жылдамдығы КЭШ жады жылдамдығынан жоғары.
19
Регистрлер саны әдетте көп емес. Регистрлер жиынтығын регистрлер жадысы немесе жылдамдығы өте жоғары жедел жады деп, не болмаса регистрлік файлдар деп атайды. Регистрлерде жиі қолданылатын константа, аралық нәтижелер немесе қызметтік ақпараттар сақталады.
Басқару құрылысы (БҚ)
БҚ есептеу машинасының маңызды бөлігі. БҚ бағдарламаның автоматты түрде орындалуын басқару сигналдары (БС) қалыптастыру арқылы ұйымдастырады. Басқару сигналдар тізбегі 2.2-суретте пунктир сызықтарымен көрсетілген. БҚ құрамына команда санауышы (КСАН), команда регистрі (КР), операция кодының дешифраторы (ОКД), микробағдарламалық автомат (МБА) және жоғарыда аталған жады мекен-жай регистрі (МЖРг) және жады дерек регистрі жатады (МРг).
БҚ кез-келген Фон Нейман ЕМ ажырамас элементі. Мұндай машинада, команда реті бағдарламада көрсетілгендей өзгермесе, онда ол табиғи ретпен орындалады. Мұндай жағдайда кезекті команда мекен-жайы орындалып жатқан мекен-жайды бірге өсіру арқылы табамыз (егер кез-келген команда бір ұяшықта орналасса). Мұндай есептеуді команда санауышы орындай алады. Есептеу алдында команда санауышына бірінші команда жазылған ұяшық КСАН мекен- жайы жазылады. Кезекті команда орындау үстінде, егер команда реті өзгермейтін болса онда команда санауышының мәні +1 КСАН сигналы арқылы бірге өсіріледі. Команданың табиғи ретін өзгерту үшін КСАН бірді қосудың орнына өту нүктесінің мекен-жайын жазамыз. Кейбір есептеу машиналарында КСАН орнына бағдарламалық санауыш БСАН немесе команда көрсеткіші (КК) деген атаулар қолданылады.
Команда санауышы арқылы анықталған мекен-жайдан команда оқылып, ол команда регистріне (КРг) жазылады. КРг команданы оны орындалып болғанша сақтайды. КРг екі бөліктен операция кодасының (ОПК) бөлігінен және мекен-жай бөлігінен (МЖБ) тұрады.
Операция коды дешифратор арқылы микробағдарламалық автомат (МБА) кодына түрлендіріледі. Компьютерде дешифратор арқылы операцияның екілік коды унитарлық кодқа түрлендіріледі. Унитарлық кодтың әрқайсысы тиісті операцияны басқаратын микробағдарламалық автоматты іске қосып, басқару сигналдарын қалыптастырады. Осы басқару сигналдары арқылы командада көрсетілген операндтар мен әртүрлі операция орындалады.
Арифметикалық және логикалық құрылғы (АЛҚ) немесе Операциялық құрылғы (ОПҚ)
20
Аты айтып тұрғандай, құрылғыда арифметикалық және логикалық операциялар орындалады. АЛҚ блоктарына операциялық блоктар (ОПБ), операндтар регистрлері, белгілер регистрі (БРг) және аккумулятор (АКК) жатады.
Операциялық блоктар (ОПБ) АЛҚ барлық операциялар орындалатын негізгі блоктар. Қазіргі ОПБ комбинациялық сұлбалар арқылы құрылады.
Операндтар регистлері операциялық блоктың кірісінде орналасқан регистрлер. Оларда операндтар операция аяқталғанша сақталады.
Белгілер регистрінде (БРг) арифметикалық не логикалық операциялар орындалып болған соң нәтиже белгілері жазылады.
Нәтиже белгілеріне нольге тең белгісі, аса толу, жоғары разрядталған шағын тасымал және т.с.с жатады.
Аккумуляторды (АКК) басқару құрылғысына да, АЛУ құрамына кіретін регистр деп қарауға болады. Аккумулятор әр түрлі қызмет атқарады.
Аккумуляторға операцияға қатысатын операндтардың бірі бұрын орындалған операцияның, орындалып отырған операция нәтижесі жазылады.
Енгізу/шығару операциялары да аккумулятор арқылы жүргізіледі.
2.3. Микрооперациялар мен микрокомандалар тілдері.
Есептеу машиналарының әртүрлі құрылғыларын бейнелеу үшін әртүрлі бейнелеу тілдері қолданылады. Ондай тілдер құрылғыларды тәптіштеу дәрежесіне байланысты әртүрлі болады. Мысалы электрон сұлбалары үшін бейнелеу тілдері ретінде сұлбалардың электр тізбегінің дифференциялдық теңдеулері жатады. Ал операциялық құрылғылар, жады түйіндері және басқару автоматтары үшін формалды бейнелеу тіліне микрооперация және микрокомандалар тілдері жатады.
Сөздерді, регистрлер мен шиналарды бейнелеу.
Сөздерді (сандарды, логикалық коданы т.б.) бейнелеу үшін оның аты- идентификатор мен разряд көрсеткіші керек. Идентификатор ретінде әріптерден басталатын кез келген әріптер мен цифрлар тізбегін алуға болады.
Разряд көрсеткіші ÷ белгісімен бөлінген жоғарғы және төменгі разрядтар нөмірлерінен тұрады. Көрсеткіш квадрат жақшаға алынады. Мысалы сөз – сан
Х20=х1, х2,...,хn; Х20=α1, α2,...,αn ;
Мұндағы хi – екілік разрядтарды мынадай түрде көрсетуге болады.
21
Х20=[0÷n]
Регистрді бейнелеу үшін оның аты, идентификаторы және разряд көрсеткіші керек. Мысалы, команда регистрін (КРг) бейнелеу түрі
2.3-сурет. Регистрді бейнелеу Регистрді бейнелеу былай болады:
КРг [0÷31], ал оның бөліктері ішкі регистрлері (команда өрістері төмендегідей көрсетіледі):
КРг [0÷7] немесе КРг [ОПК], КРг [20÷31] немесе КРг [МЖ2].
Ішкі регистрдің разряд көрсеткішінде оның идентификаторын көрсетуге болады. Жеке разрядтарды, мысалы 9 – разрядты КРг [9] түрінде көрсетуге болады. Сөздерді (командаларды) және сигналдарды беруге арналған сандар (тізбектер) жиынтығын шина деп атайды. Цифрлық құрылғыларға сырттан келетін немесе сырт құрылғыларынан берілетін сөздер регистр ретінде бейнеленеді. Мысалы 32 разрядты команда берілетін шинады бейнелеу төмендегідей жазылады: КҚ[0÷31]
Массив пен жадыны бейнелеу
Бейнелеуде олардың идентификаторы (мысалы, негізгі жадының 4- модулі – НЖ 4) және квадрат жақша ішінде сөздердің жоғарғы және төменгі нөмірі, массивтін төменгі және жоғарғы шекарасы, сөз разрядтарының нөмірлеу реті көрсетіледі. Мысалы n разрядты r сөзі бар негізгі жадының 4- модулі массиві былай бейнеленеді: НЖ 4[0÷r-1, 0÷n-1]. Мұндағы n разрядты жадының j-n ұяшығы және К-жадының К-разрядты (массивтің бағанасы) сәйкес былай жазылады НЖ 4[j, 0÷ n-1] және [0÷ n-1] және НЖ 4[0÷ r -1,К].
Микрооперацияларды бейнелеу
Микрооперациялар арқылы деректермен түрлендірулер жүргізіледі.
Мұндай түрлендірулерге бір немесе екі операндтар разрядтарымен жүргізілетін арифметикалық, логикалық, функционалдық түрлендірулер жатады.
Мысалы регистрге сөз жазу, кодты жіберу, кері код алу, екі операндпен ЖӘНЕ, НЕМЕСЕ операцияларын орындау, жылжыту, санау, қосу, алу, көбейту,
22
бөлу, сандарды салыстыру т.б. операциялар. Микрооперациялар операцияға қатысатын операндтар санына байланысты бір орынды және екі орынды болып келеді. Микрооперация микрооператормен және операцияны орындайтын басқару сигналының идентификаторы – енімен бейнеленеді. Екі орынды операция микрооперацияға мысал:
F: APг[k÷k+l]:=BPг[m÷m+l]* CPг[n÷n+l].
Басқару сигналының идентификаторы (екі) микрооператорымен қос нүктемен бөлінеді. Меншіктеу микрооператоры(:=) белгісімен көрсетеді.
Формулада түрлендіру (*) белгісі операцияға қатысатын операндтар орны көрсетілген. Меншіктеу белгісінің сол жағында түрлендіру нәтижесін сақтайтын регистр (немесе оның бөлігі) көрсетілген. Егер микрооперация арқылы тек сөз берілсе онда микрооператор формуласында тек сөз бейленеді.
Мысалы екінші А2 операндын команда регистрінен КРг мекен-жай регистріне ВРг беру төмендегідей көрсетіледі (2.4-сурет):
2.4-сурет. МЖ2 мекен-жайын КРг-ден ВРг-ге беру Бер В: BPг[12÷1]:= КPг[20÷31];
Немесе Бер В: BPг[12÷1]:= КPг[20÷31].
Мұнда Бер В – басқару сигналының ені МЖ2 мекен-жайын КPг регистрінен BPг регистріне беру.
Микрооперация басқару сигналы 0 немесе 1 мәндері алады: 1 – микрооперация белсенді болады, 0 – микрооперация орындалмайды. 1 басқару сигналы (ені) арқылы бір тактта бірнеше микрооперациялар орындалуы мүмкін.
Мұндай жағдайда бір-бірімен үтірмен бөлінеді. Микрооперацияларға мысалдар.
Санауыш кодын өсіру (2.5-сурет). Санауышта мынадай микрооперациялар орындалады:
- санауышқа (О) жазу (САН «0» ж);
- кіріс шинасынан кодты қабылдау (Сан Қаб);
23
- санауыш мәнін (кодты) бірге өсіру (+1 сан).
2.5-сурет.Санауыш кодын өсіру Жылжыту микрооперациялары
Жылжыту микрооперацияларына арифметикалық (АЖЫЛ), логикалық (ЛЖЫЛ), циклдік (ЦЖЫЛ) жылжыту микрооперациялары жатады.
Микрооперациялардың оң жақ қатарынан (СЛ-солға, және ОҢ-оңға) жылжыту бағыты көрсетіледі және жақша ішінде жылжыту саны көрсетіледі. Мысалы, С регистр мазмұнын төрт разрядқа оңға жылжыту микрооперациясы төмендегідей жазылады:
Жыл: CPr:= АЖыл ОҢ (4) CPr.
Жылжыту микрооперациясы бір регистрден екіншісіне «қисық беру»
арқылы көп орындалады. А регистрінен B регистріне дерек К разрядқа оңға немесе солға жылжытып беру микрооперациясы төмендегідей көрсетуге болады:
Жыл К: ВPг:= ОҢ (К) АPr;
Жыл К: ВPг:=СЛ (К) АPr.
Микрокоманданы бейнелеу
Микрокомандалар микрооперациялар сияқты бейнеленеді. Олар – микрокомандалар ені мен бір-бірінен үтірмен бөлінген осы микрокомандада орындалатын микрооперациялар немесе басқару сигналдарының жиыны.
Микробағдарлама графика түрінде көрсетілуі мүмкін. Олардың әр төбесі микрокомандаларға немесе тізбекпен орындалатын микрокомандалар тобына сәйкес келеді. Микропрограмама құрғанда бес түрлі төбелер пайдаланылады (2.6-сурет).
24
2.6-сурет. Граф төбелері: а-басы; б-соңы; в-операторлық; г-шартты; ә- күту
Бастапқы төбе (2.6, а-сурет) микробағдарламаның басталуын көрсетеді, оның шығысы жоқ. Соңғы төбе (2.6, б-сурет) микробағдарламаның соңын көрсетеді, оның тек кірісі болады. Операторлық төбеге (2.6, в-сурет) бір машиналық тактта орындалатын микрооперациялар жазылады. Төбеде бір шығыс және бір кіріс болады. Шартты төбе (2.6, г-сурет) есептеу процесін тармақтауға пайдаланады. Төбеде бір кіріс, екі шығыстар бар. Шарт орындалса есептеу үрдісі «иә» тармағымен, ал орындалмаса – «жоқ» тармағымен өрбиді.
Күту төбесі (2.6, ә-сурет) арқылы құрылғы жұмысының күтілуін белгілейді.
Бақылау сұрақтары.
1. Есептеу машиналарында есеп алгоритмдері немен көрсетіледі?
2. Команда пішімі қандай өрістерден тұрады?
3. Жадының біркелкілігі деген не?
4. Негізгі жады деректерімен қандай типтік түйіндер арқылы алмасады?
5. Басқару құрылғысында команда санауышы не үшін керек?
6. Команда регистрі деректерді қанша уақыт аралығында сақтайды?
7. Белгілер регистрінде қандай деректер сақталады?
8. Микрооперация және микрокоманда дегеніміз не?
9. Микрооперациялар мен микрокомандалар тілдері не үшін керек?