Читайте также: |
|
Алдыңғы мысалда, бір қосу операциясын орындау үшін, құрылғы бес тактіге бұғатталып басқа ешқандай жұмыс орындамаған болатын. Бұның тиімділігі бар ма және енгізілетін массив элементтерінің барлығын өңдеу процесін одан да тиімді ұйымдастыруға бола ма?
8 сурет. Бір операцияны әрбірі бес тактіде орындайтын екі бірдей тізбекті
құрылғының көмегімен С=А+В векторларын қосу
Бұл сұраққа жауап беру үшін нақты сандардың компьютерде берілуін еске түсіруіміз керек. Мұнда әрбір сандар жұбын қосу микрооперациялар тізбегі түрінде орындалады, ретін салыстыру, ретін теңестіру, мантиссаларын қосу, нормализациялау т.б. Жақсы жағы: әрбір енгізілген сандар жұбын өңдеу процесінде микрооперация бір рет қана және әруақытта бір тәртіппен бірінен кейін бірі іске қосылады. Бұл, бірінші микрооперация өз жұмысын орындап нәтижесін екіншісіне бергеннен кейін, ағымдағы жұпты өңдеу үшін бұдан ары оның қажеті болмайды, яғни ол, құрылғыға енгізілуді күтіп тұрған келесі аргументтер жұбын өңдеуді бастай алу мүмкіндігі бар деген сөз.
Осы айтылғандарды ескере отырып, құрылғының келесі түрде құрастырылуын қарастырайық. Әрбір микрооперацияны құрылғының жеке бөлігінде белгілеп алып, оларды орындалу тәртібі бойынша орналастырамыз. Алғашқы уақыт мезетінде енгізілген мәндер өңдеу үшін бірінші бөлікке келіп түседі. Бірінші микрооперация орындалғаннан кейін, бірінші бөлік өз жұмысы нәтижесін екінші бөлікке береді де, өзі өңдеуге жаңа жұпты алады. Осылайша, енгізілген аргументтер өңдеудің барлық этапынан өткеннен кейін, құрылғыдан шығарда операцияның орындалу нәтижесі алынады.
Есептеуді ұйымдастырудың осындай тәсілі – конвейерлік өңдеу деп аталады. Құрылғының әрбір бөлігі конвейердің баспалдағы, ал жалпы баспалдақтар саны – конвейер ұзындығы деп аталады. Нақты сандарды қосу операциясын орындау үшін әрқайысы бір тактіде қосылатын бес баспалдақтан тұратын конвейерлік құрылғы жобаланған болсын делік. Конвейерлік құрылғының бір операцияны орындау уақыты барлық конвейер баспалдақтарының қосылу уақыттарының қосындысына тең. Бұл екі санды қосу операциясы бес тактіде орындалады, яғни алдыңғы тізбекті құрылғы жағдайындағы осындай операцияның орындалу уақытымен бірдей деген сөз.
Енді екі массивті қосу процесін қарастырайық (9 сурет). Алғашында, бірінші парды қосу нәтижесі бес тактіден кейін алынады. Бірақ мұнда, бірінші пармен бірге бір мезетте басқа элементтердің де бөлшектік өңдеуден өткенін байқаймыз. Конвейерлік құрылғыда әрбір келесі тактіде кезектегі элементтер қосындысы пайда болады. Сонымен, барлық операцияны орындауға тізбекті құрылғыны пайдаланғанда 500 такті қажет етілсе, конвейерлік құрылғыда 104 такт қажет етіледі.
Шамамен жалпы жағдайда да осындай болады. Егер конвейерлік құрылғы l баспалдақты қамтыса, және әрбір баспалдақ бір бірлік уақытында қосылса (срабатывает), онда бұл құрылғының n байланыссыз (независимый) операцияны өңдеу уақыты l+n-1 бірлікті құрайды. Егер де бұл құрылғыны монопольді режимінде пайдаланса (тізбекті сияқты), онда өңдеу уақыты l×n -ге тең болады. Нәтижесінде, мәліметтерді конвейерлік өңдеуді пайдалану есебінен n- нің үлкен мәндері үшін l есе үдеу аламыз.
9 сурет. Конвейерлік құрылғының көмегімен С = А+В векторларының
қосындысын есептеу. Конвейердің бес баспалдағының
әрбірі бір тактіде іске қосылады
Мұндағы «скалярлық», «векторлық» және «конвейерлік» эпитеттерін пайдалану жиі шатасуға әкеліп соқтырады, себебі, олардың көбі мағынасы жақын «өңдеу», «команда» және «құрылғы» ұғымдары үшін де қолданылады. Скалярлық команда деп, барлық аргументі тек қана скаляр шама болатын команданы айтады. Егер команданың кемінде бір (хотя бы один аргумент) аргументі вектор болатын болса, онда мұндай қоманданы векторлық команда деп атайды. Мысалы, Сray C90 компьютерінің командалар жүйесінде екі нақты санды S1 және S2 қосып, нәтижесін S3 –ке енгізітін Ascal скалярлық командасы бар S3: Ascal S1,S2 → S3. Сонымен қатар, бір мезгілде скаляр командамен бірге екі векторды қосып, нәтижесін үшіншісіне V3 енгізетін Avekt командасы қарастырылған: AvektV1, V2 → V3.
Түскен команданың кодына байланысты (Ascal немесе Avekt) процессор операнданы скаляр адрестері ретінде немесе вектор бастамасы адресі ретінде интерпретациялайды.
Скаляр және конвейерлік құрылғылар арасындағы айырмашылықты біз жоғарыда талдап өттік. Кейбір жағдайларда, процессор архитектурасына деректер векторларын өңдеу үшін ғана бағытталған векторлық құрылғылар енгізіледі. Мысалы, Сray C90 компьютерінде бүтін сандарды қосудың тек скаляр командаларын ғана орындайтын конвейерлік құрылғысы да және бүтін санды қосудың векторлық командаларын ғана орындауға арналған конвейерлік құрылғысы да бар. Айта кетсек, бұл компьютерде ( және бүтін санды командаларынан ерекше) нақты сандарды қосу командалары Ascal және Avekt бір құрылғыда орындалады.
Жоғарыда қарастырып кеткендей, конвейерлік құрылғы бір тактіде қосылатын l баспалдақтан тұрсын. n элементтен тұратын екі векторды бір векторлық команда көмегімен немесе осы векторлар элементтерін қосатын қатарынан n скалярлық командаларды орындау арқылы қосуға болады. Егер n скалярлық командалар осындай құрылғыда бірінен кейін бірі орындалатын болса, онда жалпы заңдарға сәйкес олар l+n-1 тактіде өңделген болар еді.
Ал енді осы екі векторды қосу үшін векторлық командаларды пайдаланатын болсақ жоғарыдағы формулаға тағы бір элемент қосылады: σ+l+n-1, мұндағы σ – векторлық команданы иницализациялау үшін қажетті уақыт. Негізінде, векторлық команданы орындау, сегментациялауды қолдау немесе векторлық команданы иницализациялау кезінде ғана болмаса басқалай қосымша іс-әрекеттерді қажет етпейді десе де болады. Әрине, формуладан көріп тұрғанымыздай n шамасы, яғни элементтер саны аса көп болмаған жағдайда сәйкес векторлық командаларды векторлық емес скаляр режимде орындаған тиімді екені айқын.
Формуладағы σ да l -де n –нің мәніне тәуелсіз, сондықтан, кіріс векторларының ұзындығы артқан сайын конвейерлік өңдеудің тиімділігі арта түседі. Егер өңдеудің тиімділігі ретінде орындалған операциялар санының n оның орындалу уақытына t қатынасына тең конвейерлік құрылғының нақты өнімділігін Е алатын болсақ, онда өнімділіктің кіріс векторына тәуелділігі келесі қатынаспен анықталады:
мұндағы τ – компьютердің жұмыс тактісі уақыты.
Төмендегі 10 - суретте осы тәуелділік график түрінде келтірілген.
10 сурет. Конвейерлік құрылғы өнімділігінің кіріс деректер
ұзындығына тәуелділігі
Кіріс деректерінің саны ұлғайған сайын конвейерлік құрылғының нақты өнімділігі оның шектік өнімділігіне біртіндеп жақындай түседі. Бірақ-та, практика жүзінде кезкелген конвейерлік құрылғының нақты өнімділігі оның шектік өнімділігіне Eшек жетуі мүмкін болмайды.
Бүгінгі күні компьютер архитектурасындағы параллельділікпен көп адамды таңқалдыра алмайтынымыз анық. Соңғы микропроцессорлардың барлығы дерлік параллель өңдеудің қандай-да бір түрлерін пайдаланады.
Негізінде параллельділік туралы идеялар өте ертеде пайда болды. Алғашқы кезде олар ең алдыңғы қатардағы, сондықтан өз уақытында жекелеген компьютерлерге ғана енгізілді. Кейін келе, өндіріс технологияларының жетілдірілуіне, электронды есептеу машиналарының көптеп шығарылуына, сол себепті олардың арзандауына байланысты олар ортаңғы класты компьютерлерде пайдаланыла бастады. Қазіргі уақытта бұл идеялар толық көлемде жұмыс станциялары мен дербес компьютерлерде іске асуда.
Қазіргі заманғы есептеу жүйелері архитектурасындағы негізгі жаңа енгізулердің барлығы дерлік микропроцессор, суперкомпьютер деген ұғымдар болмай тұрып-ақ қолданыла бастаған, оған көз жеткізу үшін ЭЕМ пайда болу тарихына қысқаша тоқталайық.
Алғашқы компьютерлерде (EDSAC, EDVAS, UNIVAC, ХХ ғасырдың 40-шы жылдарының соңы, 50-ші жылдарының басы) сөз разрядтары келесі өңделуден өтуге бірінен кейін бірі тізбекті түрде беріліп отырылды. Сол сияқты арифметикалық операциялар да разрядтытүрде орындалып, мысалға, 32 разрядты екі санды қосу үшін 32 машиналық такт қажет етілді. Бұл, есептеу машинасы тарихындағы разрядтытізбектелген жады және разрядтытізбектелген арифметика уақыты болды.
Деректерді ерікті таңдауға мүмкіндік беретін есте сақтау құрылғыларының пайдалануға беріле бастауы, разрядтыпараллель жады және разрядтыпараллель арифметиканы енгізуге мүмкіндік берді. Мұнда сөз разрядтары жадыдан бір мезгілде оқылып, арифметикалық-логикалық құрылғының (АЛҚ) операцияларды орындау барысына қатысады. Осындай принципке негізделген бірінші коммерциялық IBM 701 ЭЕМ-ы 1953-ші жылы пайдалануға берілді. Осы класқа жататын 1955 жылы шығарылған IBM 704 ЭЕМ-ның 150 экземпляры сатылып, ол сол уақыттағы коммерциялық үлкен жетістік деп есептелді.
Сол уақыттағы IBM 704, я болмаса, басқа есептеу машиналары болсын, барлық енгізу/шығару операциялары арифметикалық-логикалық құрылғы арқылы орындалды. Пайдаланудағы аздаған сыртқы құрылғылардың ішіндегі ең жылдамы – таспалы құрылғысы секундына шамамен 15000 символ жылдамдықпен жұмыс істеді. Әрине, бұл процессордың деректерді өңдеу жылдамдығынан көп төмен. Есептеу машиналарын осылайша ұйымдастыру, ақпаратты енгізу және шығару кезінде өнімділік дәрежесінің төмендеуіне әкеліп соқтырды. Осы мәселенің алғашқы шешімдерінің бірі болып, енгізу/шығару каналы деп аталатын және де арифметикалық-логикалық құрылғыға енгізу/шығару құрылғыларымен параллель жұмыс істеуге мүмкіндік беретін арнайы ЭЕМ-н енгізу болды. 1958 жылы IBM 704 ЭЕМ-на алты енгізу/шығару каналының қосылуы IBM 709 ЭЕМ-н құрудың негізін қалады.
Осы жылдары ЭЕМ-ң өнімділігін күрт арттырудың жолы, компьютер архитектурасында деректерді параллель өңдеу қағидасын пайдалану екендігі түсінікті болды.
Көрші командалардың әртүрлі этаптарының уақыт бойынша үйлесімдігінің есебінен өнімділікті арттыру идеясы іске асырылған алғашқы машиналардың бірі IBM STRETCH жүйесі болды. Осы сериялы құрылған алғашқы жеті компьютердің біріншісі 1961-ші жылы АҚШ-да Лос-Аламосс ұлттық зертханасында орнатылды. Жүйе архитектурасында екі принципиалды маңызды ерекшеліктер болды. Бірінші ерекшелігі – санау үшін алдынала көрсету, декодтау, адрестерді есептеу және де бірнеше командалар операндаларын алдын-ала таңдау.
Екінші ерекшелігі – компьютер жадысының тәуелсіз екі банкке бөлініп, олардың деректерді арифметикалық-логикалық құрылғыға бір-біріне тәуелсіз бере алу (жібере алу) мүмкіншілігі (яғни, тағы да параллелизм идеясы). Жадының ажырауы деген атқа ие болған бұл ерекшелік кейінірек барлық үлкен компьютерлерде пайдаланылды десе болады. Бұл жағдайда, компьютер құрастырушылардың шешуге тиісті негізгі есебі, арифметикалық-логикалық құрылғы жылдамдығы мен жады арасындағы үйлесімділікті қалыптастыру болды. Бұл уақыт бойынша жадымен әртүрде қатынасуға мүмкіндік беретін барлық жадыны k тәуелсіз банктерге (секцияларға) бөлу есебінен орындалды. Бір мезгілде адрестерді кезекке қою енгізіліп, бұл кезде кезкелген қатар орналасқан А0, А0+1,...А0+(к -1) адрестерімен к жады ячейкалары әр түрлі банктерге түседі.
Осылай ұйымдастыру нәтижесінде, қатар орналасқан деректермен жұмыс істеу максимал тиімді жүргізіледі. Тәжірибе жүзінде бұл режим вектор элементтерін тізбекті түрде өңдеуге немесе көп өлшемді массивтердің қатарымен/бағанымен жұмыс істеуге жауап береді. Көбінесе банктер саны екінің дәрежесіне тең: . Бұл жағдайда қажетті банкінің нөмірі m кіші адрес разрядтарына жазылған санға тең.
1956 жылы IBM STRETCH жобасымен қатар, басқа белгілі жоба дайындала басталды. Оның нәтижесі, есептеу машинасының даму тарихындағы орны бөлек, 1962 жылы іске қосылған бірінші ATLAS компьютері болды. Онда бірінші болып виртуалды жады және жүйелік үзілімге негізделген мультибағдарламалық операциялық жүйе іске асырылды. Сонымен қатар, мұнда алғаш рет командаларды өңдеудің конвейерлік қағидасы пайдаланыла бастады. Команданы өңдеу циклын төрт баспалдаққа бөлді: команданы таңдау, операнда адресін есептеу, операнданы таңдау және операцияны орындау. Бұл команда орындалуының орташа уақытын 6 мкс-тан 1,6 мкс-қа дейін қысқартуға мүмкіндік беріп, компьютер өнімділігін секунына 200 мың нақты операцияға дейін арттыруға мүмкіндік берді.
1964 жылы Control Data Corporation компаниясы CDC 6600 компьютерін шығарды. Компьютердің бас конструкторы және сол уақыттағы компанияның вице-президенті С.Крэй (Seymour Cray) болды. Ол кейінгі жылдары көптеген бірегей суперкомпьютерлер жасап шығарды. CDC 6600 компьютерінің орталық процессоры тәуелсіз он функционалды құрылғылардан тұрды – бұл әрине айқын түрдегі параллельділік. Компьютердің барлық функционалды құрылғылары бір-бірімен бір мезгілде жұмыс істей алатындай арнайы дайындалды (бір жылжымалы үтірмен қосу және бір бекітілген үтірмен қосу құрылғысы, екі көбейту, бөлу, логикалық операция, ығысу және т.б. құрылғылар). Сол кезеңдегі суперкомпьютерлердің мұмкіндіктерін сезіну үшін, CDC – 6600 компьютерінің кейбір сипаттамаларын бере кетелік: такт уақыты 100 нс, жадысы әрқайсысы 4096 60 разрядты сөзден тұратын 32 банкіге бөлінген, орташа өнімділігі секундына 2-3 млн. операция.
1969 жылы Control Data Corporation компаниясы CDC 6600 моделінің жетілдірілген жаңа үлгісін CDC-7600 компьютерін жасап шығарды. Жаңа компьютердің орталық процессоры сегіз тәуелсіз функционалды құрылғылардан тұрды және бір мезгілде параллельділік және конвейерлік өңдеу пайдаланылды. CDC 7600 моделінің тағы бір ерекшелігі, мұнда екідеңгейлі жады іске асырылды: есептеу секциясы дәстүрлі режимде «аса оперативті» жадымен (64 К 60-разрядты сөз) жұмыс істейді. Бұл жадыға қажетті жағдайда негізгі жадыдан (512 К 60-разрядты сөз) деректер енгізіледі. CDC-7600 компьютерінің тактілі уақыты 27,5 нс, орташа өнімділігі секундына 10-15 млн. операция.
Деректерді параллель өңдеу идеясының дамуындағы келесі маңызды орынды ILLIAC IV компьютері құрастырылуымен байланыстырады. Бұл жобаның басты идеясы – синхронды жұмыс істейтін процессорлар матрицасы ILLIAC IV компьютерінің архитектурасы 1962 жылы сипатталған SOLOMON жүйесі концепцияларына негізделді. Алғашқы жоба бойынша ILLIAC IV компьютерінің негізін, әрқайсысында 64 элемент бар төрт квадрантқа жинақталған 256 процессорлық элементтен тұратын матрица құрады (11 сурет).
11 сурет. ILLIAC IV матрицалық жүйесінің жобасы
Жоспар бойынша жүйе жалпы басқару арқылы жұмыс істеу керек болатын, алайда әрбір квадрантта синхронды жұмыс істейтін процессорлық элементтер үшін командалар беретін өзінің жеке басқару құрылығысы орналасты. Мұнда екі квадрантты 128 процессорлық элементтен тұратын бір квадрантқа біріктіру немесе барлық төрт квадрантты 16×16 бір матрица ретінде есептеу мүмкіндігі қарастырылған. Жоба бойынша компьютердің такті уақыты 40 нс, ал шектік өнімділігі секундына 1 миллиард нақты операцияға тең болады деп жоспарланған. Әрине, бұл өз уақытындағы күрделілігі және масштабы жағынан фантастикалық жоба екені анық. Жүйені құру 1967 жылы басталып, 1972 жылы 64 процессорлық элементтен тұратын бір квадрант дайындалды. Бұл жүйе NASA Ames (АҚШ) ғылыми-зерттеу орталығына орнатылып, 1975-ші жылдарға дейін толықтыру жұмыстары жүргізілді. Бұл бір экземпляр күйінде дайындалған жүйе нақты пайдалануда 1982-ші жылға дейін болып, соңында музейге өткізілді. Нәтижесінде не алынды? Төрт квадранттан және 256 процессорлық элементтен тұратын матрица жасау жоспарланып, біреуі ғана жасалынды, технологиялық пайымдаулар бойынша тактілік жобалау уақытын 80 нс-ке дейін арттыруға тура келді, төрттен бір бөлігін дайындау құнының өзі алдын-ала есептелген сомадан төрт есе жоғары болды, ал оның нақты өнімділігі секундына 50 млн. операцияға ғана жетті. Әрине, жобаны толық орындау мүмкіншілігі болмады, бірақ бұл жоба компьютерлердің келесі буынының архитектурасы және параллель есептеу жүйелерінің бағдарламалық қамтамасының көптеген компоненттерінің дамуына да зор үлесін қосты. Жобада қарастырылып, пысықталған технологиялар, параллельдеу компиляторлары туралы идеялар кейінірек PEPE, BSP, ISL DAP және де басқа көптеген жүйелерді, параллель компьютерлер мен супер ЭЕМ-ын құруда кеңінен пайдаланылды.
Компьютерлердің командалар жүйесіне векторлық операцияларды да енгізу идеясы көптен бері ғалымдар мен ізденушілерді қызықтырып келді. Біріншіден, векторлық операцияларды пайдалану машиналық командалар терминінде көптеген есептеу фрагментерін әлдеқайда қарапайым қысқа түрде жазуға мүмкіндік береді. Егер екі векторды қосу С = А + В керек болса, онда бірнеше қосымша командаларды (индексті үлкейту, циклдан шығу шартын тексеру, циклдің басына көшу және т.б.) орындау қажеттілігі жойылып, оның орнына, сәйкесінше, векторлық команданы пайдаланса жеткілікті. Көріп отырғанымыздай, есептеу тиімділігі дәстүрлі үлгілерден көп жоғары. Екіншіден, көптеген алгоритмдерді векторлық операциялар терминінде жеңіл өрнектеуге болатындығы. Үшіншіден, осындай операциялар конвейерлік құрылғыларды пайдалануда максимал тиімділікке жетуге мүмкіндік беретіндігі.
Векторлық командалар үлкен жетістіктермен пайдаланылған есептеу жүйелерінің жобаларына мысалдарды көптеп келтіруге болады. Солардың ішіндегі ең бастысы ретінде Cray векторлы-конвейерлік суперкомпьютерлерін айта кету керек.
1972 жылы Control Data Corporation компаниясының вице-президенті және көптеген есептеу машиналарының бас конструкторы болған С. Крэй компанияны тастап, жаңа Cray Research компанияcының негізін қалайды. Жаңа компания 1976 жылы өзінің бірінші векторлы-конвейерлік компьютерін Cray-1 құрастырып шығарады. Аталған компьютер архитектурасының негізгі ерекшеліктеріне векторлық командалар, тәуелсіз конвейерлік функционалдық құрылғылар және дамыған регистрлік структурасын айтуға болады. Конвейерлік және функционалдық құрылғылардың тәуелсіздігі компьютердің жоғары теориялық өнімділігін анықтады (бір тактіде екі операция), практика жүзінде векторлы командалар жоғары өнімділікке жету жолын қысқартты (конвейерлердің тиімді жүктелуі), ал регистрлі функционалды құрылғылар жұмысы санаулы операциялар кезінде де жоғары өнімділікке жетуге мүмкіндік берді.
Cray-1 компьютерінің жалпы сипаттамалары: тактілік уақыты 12,5 нс, конвейерлік функционалдық құрылғылар саны – 12 және де бұл конвейерлік функционалдық құрылғылардың бәрі де бір-біріне тәуелсіз бір мезгілде жұмыс істей алады, жедел жадысы 1 Мс-ға дейін, компьютердің шектік өнімділігі секундына 160 млн. операция. Кейінгі тарауларда, біз Cray-1 компьютерінің архитектурасына көп ұқсас, бірақ одан 15 жыл кейін пайда болған Cray-С90 векторлы-конвейерлік компьютерінің архитектурасы мен бағдарламалау ерекшеліктеріне жеке тоқталатын боламыз.
Сонымен, компьютер архитектурасының ерекшеліктерін талдай келе біз өте маңызды мәселелердің біріне бірнеше рет тоқталып өттік – ол мәселе процессор жұмысының жылдамдығы және жадыдан деректерді таңдау уақыты арасындағы үйлесімділік (келісімділік) мәселесі. Бір компьютерлерде жадының қабатталуы пайдаланылса, біреулеріне дамытылған регистрлік структура, көпдеңгейлі жады, кэш-жады немесе т.б. енгізілген, бірақ барлық жағдайда да жадыны осылайша ұйымдастыру ерекшеліктері тек бір мақсатқа жету үшін бағытталған – деректерді және командаларды таңдауды жеделдету.
Бағдарламалардың басым көпшілігінің орындалу процесі екі қасиетпен сипатталатыны белгілі: есептеудің жергіліктілігі және деректерді пайдалану жергіліктілігі. Екі жағдайда да бағдарламаның жұмысы үшін қажетті келесі объект (команда немесе операнда) жедел жадыда алдыңғы объектіге «жақын» жерде орналасады. Бір оператордан және көп итерациядан тұратын цикл – жоғары есептеу локальділігі ұйымдастырылған бағдарлама фрагментінің идеалды мысалы бола алады. Тәжірибе жүзінде көптеген бағдарламаларда осы екі қасиет есептеудің жергіліктілігі және деректерді пайдалану жергіліктілігі де кездеседі. Әрине, бұл заңдылық емес. Подпрограммалар және функцияларды шақыру, массивтерді жанама адрестеу, көп өлшемді массивтер және деректердің күрделі структурасымен сәтсіз жұмыс істеу, әртүрлі шартты операторларды пайдалану – мұның бәрі нақты бағдарламалардағы жергіліктілік қасиетінің әлсіздену себебінің тек шамалы тізімі ғана.
Бағдарламалау тілдеріндегі есептеу және деректерді пайдалану жергіліктілігін анықтайтын негізгі конструкция циклдар болып табылады. Әрине, цикл денесін жылдам жадыға орналастырған орынды, себебі келесі итерацияда дәл сол командаларды орындау қажет болуы мүмкін. Деректермен де осыған ұқсас ситуация: жиі пайдаланылатындардың барлығын да, оқу/жазу уақыты және процессордың жұмыс істеу жылдамдығы әруақытта үйлестірілген (келісілген) регистрларда сақтаған тиімді. Бірақ-та, деректердің үлкен көлемін регистрларде ұстау мүмкін емес. Бұндай жағдайларда жады иерархиясындағы келесі деңгей, мысалы, кэш-жады пайдаланылады. Егер кэш-жады көлемі жетпесе, онда келесі деңгейді іске қосуға және т.с. болады. Күнделікті өмірден бұл фактіге ұқсас көптеген мысалдар келтіруге болады. Мысалы, кітапхананың оқу залын қарастырып көрелік. Күнделікті қажеттінің бәрі залдағы қол жетімді жұмыс столдарына (регистрлар) қойылады, жиі пайдаланылатын кітаптар қоры осы залдағы сөрелерге жайғастырылады (кэш-жады), негізгі кітаптар қоры залға жақын маңдағы бөлмелерде сақталады (негізгі жады), кейбір жағдайларда кітапхананың абоненттік бөліміне, архив қорларына баруға тура келеді (дискілік жады), табылмаған кітаптарды басқа кітапханалардан заказ беретін кездер де кездеседі (магниттік лентадағы (дискідегі) архив).
Жадының әртүрлі деңгейлерін нақты пайдалануға өте көп мысалдар келтіруге болады. Бұл регистрлар және регистрлік файлдар, түрлі деңгейдегі кэш-жадылар, негізгі жедел жады, виртуалды дискілер, қатты дискілер, ленталық роботтар және т.б. көптеген түрлері.
Әрине, әрбір компьютердегі жады иерерхиясын қалыптастыру заңдылығы бірдей: иерархия деңгейі жоғары болған сайын деректермен жұмыс істеу жылдамдығы да жоғары.
Жады иерархиясын пайдаланудың тиімділігі ертеде белгілі болды. Жоғарыда қарастырылған ILLIAC IV компьютерінің өзінде төрт деңгейді бөлуге болады. Әрбір процессорлық элемент 6 бағдарламалық адрестелген регистрлерді және 2048 сөзге арналған өзінің жеке жергілікті жедел жадысын қамтыды. Деректерді сақтау үшін әрбірі 1 Гбит болатын екі қатты диск пайдаланылды, ал деректерді ұзақ мерзімге сақтау үшін, сыйымдылығы 1012 бит болатын бір реттік жазбалы лазерлік жады қолданылды (аргондық лазер сәулесі барабанға бекітілген, жұқа металдан жасалған пленкаға тесіктер күйдіріп түсірді).
Әрине, жады иерархиясының параллелділікке тікелей қатысы жоқ. Бірақ, ол, компьютер өнімділігін жоғарылату үшін өте үлкен роль атқаратын компьютер архитектурасының ерекшеліктерінің біріне жататыны сөзсіз. Қазіргі уақытта жады иерархиясын пайдалану, суперкомпьютерлерден бастап дербес компьютерлерге дейін жоғары деңгейде жолға қойылған
Дата добавления: 2015-10-29; просмотров: 806 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Виртуалды машина дегеніміз не және ол қалай жұмыс істейді? | | | Компьютерді басқарудың интеллектуалдығын жоғарылату |