Кіріспе

Әрбір циклда орындалу тізбектері арасында ауысатын процессор. Барел процессоры – әрбір циклда орындалу тізбектері арасында ауысатын процессор. Бұл процессорды жобалау әдісі "араластырылған" немесе "ұсақ түйірлі" уақытша көп тізбектілік деп те аталады. Қазіргі заманғы суперскалярлы архитектурадағы бір мезгілдегі көп тізбектіліктен айырмашылығы, ол әдетте бір циклде бірнеше нұсқауды орындауға мүмкіндік бермейді. Алдын ала жоспарланған көп тапсырмалылық сияқты, әрбір орындалу тізбегіне өз бағдарлама санауышы және басқа аппараттық тіркегіштері (әр тізбектің архитектуралық күйі) тағайындалады. Барел процессоры әрбір тізбектің әр n цикл сайын бір нұсқауды орындайтынына кепілдік бере алады, алдын ала жоспарланған көп тапсырмалы машинадан айырмашылығы, ол әдетте он миллион цикл бойы бір орындалу тізбегін іске қосады, ал қалған тізбектер өз кезегін күтеді. C-кешіктіру деп аталатын әдіс, бір тапсырмалы процессордың дизайнынан сәйкес барел процессор дизайнын автоматты түрде жасауға мүмкіндік береді. Осылайша құрылған n жолды барел процессоры бастапқы бір тапсырмалы процессордың n жеке көп процессорлық көшірмелері сияқты жұмыс істейді, олардың әрқайсысы бастапқы жылдамдықтың шамамен 1/n бөлігімен жұмыс істейді.

Тарих

Барель процессордың алғашқы мысалдарының бірі CDC 6000 сериялы суперкомпьютерлердегі I/O өңдеу жүйесі болды. Олар бірінші процессорға қайтып оралғанға дейін 10 түрлі виртуалды процессордан (перифериялық процессорлар деп аталады) әрқайсысынан бір нұсқауды (немесе нұсқаудың бір бөлігін) орындады. CDC 6000 сериясынан біз оқимыз: "Перифериялық процессорлар жиынтық барель процессор ретінде іске асырылады. Әрқайсысы басқалардан тәуелсіз жұмыс істейді. Олар автобус басқаруының немесе тікелей жадқа қол жеткізудің ертедегі нұсқасы". Барель процессорларды жасаудың бір себебі аппараттық құралдардың құнын төмендету болды. CDC 6x00 PPU жағдайында процессордың цифрлық логикасы негізгі жадтан әлдеқайда жылдам болды, сондықтан он жеке процессордың орнына PPU үшін он жеке негізгі жад блогы болды, бірақ олардың барлығы процессор логикасының бір жиынтығын бөліседі. Тағы бір мысал – Honeywell 800, онда 8 тіркелімдер тобы болды, бұл 8 бағдарламаны бір уақытта іске асыруға мүмкіндік берді. Әрбір нұсқаудан кейін процессор (көбінесе) кезекпен келесі белсенді бағдарламаға ауысатын болды. Барель процессорлар ірі масштабтағы орталық процессорлар ретінде де қолданылған. Tera MTA (1988) – 128 жиекке ие үлкен барель процессор дизайны. MTA архитектурасы 2012 жылы ұсынылған (YarcData uRiKA ретінде) және деректерді өндіруге бағытталған Cray Urika GD сияқты келесі өнімдерде дамуын жалғастырды. Барель процессорлары кіріктірілген жүйелерде де кездеседі, онда олар нақты уақыт режимінде детерминистік жиектердің жұмысын қамтамасыз ету үшін өте пайдалы. Алғашқы мысал – 1981 жылы National Semiconductor ұсынған төрт биттік COP400-дің "Dual CPU" нұсқасы. Бұл бір чипті микробасқарушы екі дербес CPU-ды қамтиды, олар нұсқауларды, жадты және көптеген I/O құрылғыларын бөліседі. Шын мәнінде, екі процессор – екі жиекті барель процессор. Ол процессордың кейбір бөлімдерін – архитектуралық күйді сақтайтын бөлімдерін – көшіру арқылы жұмыс істейді, бірақ ALU, шиналар және жад сияқты негізгі орындау ресурстарын көшірмейді. Жеке архитектуралық күйлер көшірілген A (аккумуляторлар), B (көрсеткіш тіркелімдері), C (көшіру флагтары), N (стек көрсеткіштері) және PC (бағдарлама санағыштары) арқылы құрылады. Тағы бір мысал – XMOS XCore XS1 (2007), төрт сатылы барель процессор, әр өзегі сегіз жиекке ие. (XMOS-тан шыққан жаңа процессорлар да осы архитектураның бір түріне ие.) XS1 Ethernet, USB, аудио және басқару құрылғыларында, сондай-ақ I/O өнімділігі маңызды басқа да қолданбаларда қолданылады. XS1 "XC" тілінде бағдарламаланғанда бағдарламалық басқарумен тікелей жадқа қол жеткізуді жүзеге асыруға болады. Барель процессорлары арнайы құрылғыларда да қолданылған, мысалы, сегіз жиекті Ubicom IP3023 желілік I/O процессоры (2004). Padauk Technology компаниясының 8 биттік микробасқарушылары өзекшеде 8 жиекке дейін бар барель процессорларын ұсынады.

Артықшылықтар

Бір тапсырмалық процессор көп уақытын бос өткізеді, кэш қатесі немесе құбыр тоқтаған кезде ешқандай пайдалы жұмыс жасамайды. Бір тапсырмалық процессорларға қарағанда, баррельді процессорларды пайдаланудың артықшылықтары: тоқтап қалған жіп күтіп тұрғанда, басқа жіптерде пайдалы жұмыс істеу мүмкіндігі. N тереңдігіндегі құбырға ие n жолды баррельді процессорды жобалау, бір тапсырмалық процессорды жобалауға қарағанда әлдеқайда оңай, себебі баррельді процессорда құбыр тоқтамайды және алдын ала беру тізбектері қажет емес. Нақты уақыт қолданбалары үшін баррельді процессор "нақты уақыт" жібінің, басқа жіптерге не болғанына қарамастан, тіпті басқа жіп шексіз циклге түсіп кетсе немесе аппараттық үзілістермен үнемі тоқтатылса да, дәл уақытта орындалатынына кепілдік береді.

Кемшіліктер

Барельді процессорлардың бірнеше кемшіліктері бар. Қымбат сыртқы контекстік ауысулардан сақтану үшін әрбір жіптің күйі чипте, әдетте тіркелімдерде сақталуы тиіс. Бұл, дәстүрлі процессорлармен салыстырғанда, көптеген тіркелімдерді қажет етеді. Либо барлық жіптер бірдей кэшті пайдалануы керек, бұл жүйенің жалпы өнімділігін төмендетеді, немесе әрбір орындалатын жіпке жеке кэш бөлінуі керек, бұл транзисторлардың санын және осы процессордың құнын айтарлықтай арттырады. Дегенмен, барельді процессорлар жиі қолданылатын нақты уақыттық жүйелерде жадқа қол жеткізу құны нашар жағдайлардағы кэш мінез-құлқына сүйеніп есептеледі, сондықтан бұл мәселе аса маңызды емес. Мысалы, XMOS XS1 сияқты кейбір барельді процессорларда кэш мүлдем болмайды.