Кіріспе

1960 және 70-жылдардағы мейнфрейм компьютерлерінің диапазоны. Burroughs Large Systems тобы 48 биттік үлкен мейнфреймдер отбасын жасады, олар жинақы командалық сөздері бар стек-машиналық нұсқаулар жиынтығын қолданды. Отбасыдағы алғашқы машина 1961 жылы шыққан B5000 болды, ол бір өткелді компиляторларды пайдаланып ALGOL 60 бағдарламаларын өте жақсы компиляциялау үшін оңтайландырылған. B5000, B5500 (дискілік, барабанды емес) және B5700 (кластер ретінде жұмыс істейтін төрт жүйеге дейін) үлгілеріне эволюциялады. Келесі маңызды жаңартулар B6500/B6700 желісі мен оның ізілдестерін, сондай-ақ жеке B8500 желісін қамтыды. 1970 жылдары Burroughs Corporation үш бөлімге бөлінді, олардың әрқайсысы жоғары деңгейлі, орта деңгейлі және бастапқы деңгейлі бизнес-компьютер жүйелері үшін өте ерекше өнімдік желілер архитектурасына ие болды. Әр бөлімнің өнімдік желісі нақты бағдарламалау тілдері үшін компьютердің нұсқаулар жиынтығын қалай оңтайландыруға болатындығы туралы әртүрлі түсініктерден өркендеді. "Burroughs Large Systems" бұл ірі жүйелердің барлық өнімдік желілерін біріктірді, COBOL-ға оңтайландырылған орташа жүйелерден (B2000, B3000 және B4000) немесе икемді архитектуралы шағын жүйелерден (B1000) өзгешеленді.

Тілдік қолдау

B5000 жоғары деңгейдегі тілдерді қолдау үшін ғана жасалған. Бұл FORTRAN және COBOL тілдерінің пайда болу кезінде болды. FORTRAN және COBOL кейбіреулермен заманауи бағдарламалық жасақтама техникалары тұрғысынан нашар тілдер деп есептелді, сондықтан жаңа, көбінесе сынақтан өтпеген ALGOL 60 тілі қабылданды. B5000 үшін таңдалған ALGOL диалектісі – Elliott ALGOL, оны алғаш рет C. A. R. Hoare Elliott 503 машинасы үшін жобалап, іске қосты. Бұл I/O командаларымен (ALGOL назардан тыс қалдырған) және қуатты жол өңдеу командаларымен ALGOL-дің практикалық кеңейтімі болды. Хоардың танымал Тьюринг сыйлығындағы лекциясы осы тақырыпқа арналған еді. Осылайша B5000 өте қуатты тілге негізделді. Дональд Кнут бұрынғы Burroughs машинасына жазғы демалысының үш айында ALGOL 58-ді іске асырған еді, сондай-ақ ол B5000 дизайнына консультант ретінде белсенді қатысты. Көптеген адамдар ALGOL-ді бекерге жойды, жоғары деңгейдегі тілдердің ассемблер сияқты қуатқа ие бола алмайды деп қате пікір білдірді, осылайша ALGOL-дің жүйелік бағдарламалау тілі ретіндегі әлеуетін түсінбеді. Burroughs ALGOL компиляторы өте жылдам болды – бұл голланд ғалымы Эдсгер Дейкстраға әсер етті, ол Пасаденадағы B5000 зауытында компиляциялауға бағдарлама жіберді. Оның перфокарталары дерлік бірден компиляцияланды және ол бірден өз университеті, Нидерландыдағы Эйндховен Технологиялық университеті үшін бірнеше машина қалады. Компилятордың жылдамдығының бірнеше себебі болды, бірақ басты себебі – ол бір өткелді компилятор болды. Алғашқы компьютерлерде бастапқы кодты сақтауға жеткілікті жад болмағандықтан, компиляторлар (тіпті ассемблерлер де) бастапқы кодты бірнеше рет оқуға міндетті болды. Burroughs ALGOL синтаксисі, ресми тілден өзгеше, әрбір айнымалыны (немесе басқа объектіні) пайдаланудан бұрын жариялауды талап етеді, сондықтан деректерді бір рет ғана оқитын ALGOL компиляторын жасау мүмкін. Бұл тұжырымдаманың терең теориялық салдары бар, сонымен қатар өте жылдам компиляцияға мүмкіндік береді. Burroughs-тың үлкен жүйелері перфокарталардан кодты оқығандай жылдам компиляциялай алды, және олардың карта оқығыштары индустриядағы ең жылдамдары болды. Қуатты Burroughs COBOL компиляторы да бір өткелді компилятор болды және бірдей жылдамдыққа ие болды. 4000 картадан тұратын COBOL бағдарламасы 1000 карта/минуттық оқығыштар кодты оқи алатын жылдамдықпен компиляцияланды. Бағдарлама карталар оқығыштан өткеннен кейін пайдалануға дайын болды.

B8500

B8500 – B5000-нан шабыттанған әскери компьютер. B8500 1960-шы жылдары B5500 және D825 эскиздерін біріктіруге жасалған тыраш. Жүйеде магниттік жұқа пленкалық жадымен монолиттік интегралды схемалар қолданылды. Архитектурада B5500 сияқты 48 биттік сөз, стек және сипаттамалар қолданылды, бірақ жоғары деңгейде үйлесімділікке ие емес еді. 1950 жылдардың соңында. Дегенмен, егер осы эскиздер Берроузға тікелей әсер еткенімен, B5000, B6500 және B8500 архитектуралары Атлас және Райс машиналарынан мүлдем өзгеше болды; олар бір-бірінен де айқын ерекшеленеді. Берроуздің ірі жүйелерінің алғашқысы B5000 болды. 1961 жылы жасалған, ол дискретті транзисторлық логика мен магниттік ядролық жадты пайдаланған екінші буын компьютер болды, одан кейін B5500 және B5700 пайда болды. B5000 архитектурасын алмастырған алғашқы машиналар B6500 және B7500 болды. B6500 және B7500 машиналарының ізбасарлары келесі 25 жылда аппараттық даму тенденцияларын ұстанды, архитектураны жаңа логикада қайта іске асыру үшін, B6500, B7500, B6700, B7700, B6800, B7800, B5900, B7900 және, ақырында, Burroughs A сериясы. Бірлесуден кейін, Берроуз Sperry Corporation компаниясын сатып алып, өзін Unisys деп атады, компания MCP CMOS ASIC негізінде жаңа машиналарды жасауды жалғастырды. Бұл машиналар Libra 100-ден Libra 500-ға дейін болды, ал 2005 жылы Libra 590 жарияланды. Кейінгі Libra машиналары, соның ішінде 590, Intel Xeon процессорларын қамтиды және Burroughs ірі жүйелерінің архитектурасын эмуляцияда да, MCP CMOS процессорларында да іске асыра алады. Unisys компаниясы жаңа MCP CMOS ASIC-терді жасауды жалғастыра ма, жоқ па, әлі белгісіз. B5000 1961 бастапқы жүйе, 2-ші буын (транзисторлық) компьютер. B5500 1964 жылдамдығын 3 есе арттыратын процессор. Clearpath HMP NX 4000 1996 ж.? ? Clearpath HMP NX 5000 1996 ж.? ? Libra 100 2002 ж.? ? ? Libra 200 200? ? ? Libra 300 200? ? ? Libra 400 200? ? ? Libra 500 2005 ж. мысалы, Libra 595. Libra 600 2006 ж.? ? ? Libra 700 2010 ж. мысалы, Libra 750.

Жабдықтың негізгі желілері

Жабдықтар мен бағдарламалық жасақтаманы жобалау, әзірлеу және өндіру екі негізгі орынға бөлінді: Калифорния штатының Ориндж округі және Филадельфияның шеткі аймақтары. B5000 және B5500 жүйелерін әзірлеген алғашқы ірі жүйелер зауыты Калифорнияның Пасадена қаласында орналасқан, бірақ кейін B6500 жүйесін әзірлеу үшін Калифорнияның City of Industry қаласына көшірілді. Оранж округіндегі орналасқан жері, Калифорния штатының Миссион-Виехо қаласындағы зауытта орналасқан, бірақ кейде жақын орналасқан Ирвайн және Лейк-Форест қалаларындағы объектілерді де қамтыды, кішірек B6x00 желісіне жауапты болды. Ал Тредифрин, Пенсильвания штатындағы Шығыс жағалау операциялары үлкен B7x00 желісін басқарды. Екі желідегі барлық машиналар толыққанды объектілік үйлесімділікке ие болды, яғни бір машинада құрастырылған бағдарлама екіншісінде орындалуы мүмкін. Жаңа және үлкен модельдер ескі және баяу модельдерде қолдау көрсетілмейтін нұсқауларды қамтыды, бірақ аппараттық құрал танылмаған нұсқауға тап болғанда, оны түсіндіретін операциялық жүйе функциясын шақыратын. Басқа да айырмашылықтарға процестерді ауыстыру және I/O, техникалық қызмет көрсету және «суық» іске қосу мүмкіндіктері кірді. Үлкен жүйелер аппараттық процестерді жоспарлау, жақсырақ кіріс/шығыс модульдері және жоғары функционалды техникалық қызмет көрсету процессорларын қамтыды. Bxx00 модельдері A сериялы модельдермен ауыстырылғанда, айырмашылықтар сақталды, бірақ енді модель нөмірі бойынша оңай анықталмайтын болды.

АЛГОЛ

Бёрроуздың үлкен жүйелері ALGOL-ден туындаған стек архитектураларын іске асырады. B5000 – стек негізіндегі алғашқы жүйе болды. B5000 ALGOL-ді қолдау үшін арнайы жасалғанмен, бұл тек бастапқы нүкте ғана еді. COBOL сияқты басқа да бизнеске бағытталған тілдер де жақсы қолдауға ие болды, әсіресе жылдам компиляторларды жасау үшін енгізілген қуатты жол операторлары арқасында. B5000-де қолданылатын ALGOL – кеңейтілген ALGOL жиынтығы. Ол күшті жолдарды өңдеу нұсқауларын қамтиды, бірақ белгілі бір ALGOL конструкцияларын, атап айтқанда, белгіленбеген формальды параметрлерді алып тастайды. DEFINE механизмі C-дегі #defines сияқты мақсатқа қызмет етеді, бірақ алдын ала өңдеуші емес, тілге толық интеграцияланған. EVENT дерек типі процестер арасындағы координацияны жеңілдетеді, ал ON FAULT блоктары бағдарламалық қателерді өңдеуге мүмкіндік береді. ALGOL пайдаланушы деңгейі операциялық жүйе мен басқа жүйелік бағдарламалық қамтамасыздарға қажетті көптеген қауіпсіз емес конструкцияларды қамтымайды. Екі деңгейлі тілдік кеңейтімдер қосымша конструкцияларды ұсынады: ESPOL және NEWP – MCP және оған тікелей байланысты бағдарламалық жасақтаманы жазу үшін, ал DCALGOL және DMALGOL – жүйелік бағдарламалық жасақтаманың нақты түрлері үшін арнайы кеңейтімдерді ұсынады.

ESPOL және NEWP

Бастапқыда B5000 MCP операциялық жүйесі ESPOL (Executive Systems Programming Oriented Language) деп аталатын кеңейтілген ALGOL-дың түйіндемесінде жазылды. Бұл 70-жылдардың ортасынан соңына қарай NEWP деп аталатын тілмен алмастырылды. NEWP сөзінің мағынасы, мүмкін, «Жаңа бағдарламалау тілі» болғанмен, оның айналасында аңыз қоршалған. Сол кездегі Burroughs компаниясындағы кең таралған (әлде болмаса, шындығынан алыс) әңгіме бойынша, ол «Үкілетті тұлғалардың жуынатын бөлмесіне кіру құқығы жоқ» деген сөздердің қысқартылған түрі болған деседі. Тағы бір оқиғаға сәйкес, 1976 жыл шамасында Burroughs компаниясының бағдарламалық жасақтама инженері Джон Макклинток NEWP-ті жасап жатқанда, оған тағы да «оның аты бар ма?» деп сұрағаннан кейін «nyoooop» деп жауап беріп, осы жауапты тілдің аты ретінде қабылдаған. NEWP де ALGOL-дың түйіндемесінің кіші жиынтығы болды, бірақ ол ESPOL-дан қауіпсіз болды және ALGOL-дың сирек қолданылатын күрделіліктерін жойды. Шындығында, NEWP компиляторы барлық қауіпсіз емес конструкцияларды қабылдамайды, егер блок осы нұсқауларға рұқсат беру үшін арнайы белгіленбесе. Мұндай блоктарды белгілеу көп деңгейлі қорғау механизмін қамтамасыз етеді. Қауіпсіз емес конструкцияларды қамтитын NEWP бағдарламалары бастапқыда орындалмайды. Жүйенің қауіпсіздік әкімшісі мұндай бағдарламаларды «жақсы көруге» және орындауға құқылы, бірақ қалыпты пайдаланушылар мұны істей алмайды. (Тіпті әдетте root құқықтары бар «артықшылықты пайдаланушылар» да сайт таңдаған конфигурацияға байланысты мұны істей алмайтын жағдайлар болуы мүмкін.) NEWP жалпы бағдарламаларды жазу үшін қолданылуы мүмкін және ірі бағдарламалық жобаларға арналған көптеген мүмкіндіктерге ие болса да, ол ALGOL-дың барлық мүмкіндіктерін қолдамайды. NEWP операциялық жүйе сияқты кең ауқымды бағдарламалық жобаларды жүзеге асыруға мүмкіндік беретін бірқатар құралдарға ие, оларға атаулы интерфейстер (функциялар мен деректер), интерфейстердің топтары, модульдер және супермодульдер кіреді. Модульдер деректер мен функцияларды біріктіреді, бұл модуль ішіндегі деректерге оңай қол жеткізуге мүмкіндік береді. Интерфейстер модульге функциялар мен деректерді импорттауға және экспорттауға мүмкіндік береді. Супермодульдер модульдерді топтастыруға мүмкіндік береді.

DCALGOL және хабарламаны басқару жүйелері (MCS)

Бастапқы іске асырылуында жүйе қашықтанғы құрылғылардан / қашықтанғы құрылғыларға хабарламаларды енгізу және шығару үшін арнайы деректерді жеткізу процессорын (DCP) пайдаланды. Бұл 24 биттік мини-компьютер, дәстүрлі тіркеулік архитектурасы және мыңдаған қашықтанғы терминалдарды басқаруға арналған аппараттық I/O мүмкіндігіне ие болды. DCP және B6500 жадтағы хабарламалар арқылы байланыс жасады, яғни қазіргі терминдермен айтқанда, пакеттер арқылы, ал MCS осы хабарламалардың B6500 жағынан өңделуін жүзеге асырды. Алғашқы жылдары DCP құрастырушысы (Dacoma) және B6500 ALGOL-де жазылған DCPProgen атты қолданбалы бағдарлама болды. Кейін NDL (Желілік анықтама тілі) компиляторы DCP кодын және NDF (Желілік анықтама файлы) құрады. Соңында, тағы бір жаңарту NDLII тілі мен компиляторының жасалуына әкелді, олар 4 және 5 модельдегі DCP-мен бірге қолданылды. DCP нұсқауларының әр түрі үшін бір ALGOL функциясы болды, және егер сіз осы функцияны шақыратын болсаңыз, сәйкес DCP нұсқаулары біттері шығысқа жіберілетін еді. DCP бағдарламасы – бұл тек осы функцияларды шақырудың ұзақ тізімінен тұратын ALGOL бағдарламасы, әрбір ассемблерлік тілдегі оператор үшін біреуі. Ал, ALGOL макроассемблердің макросы сияқты әрекет етті. Бірінші кезең ALGOL компиляторы болды; екінші кезеңде нәтижесінде алынған бағдарлама (B6500-де) орындалды, содан кейін DCP үшін бинарлық код құрылды. 1980 жылдардың басында DCP технологиясы ICP (Интеграцияланған байланыс процессоры) арқылы ауыстырылды, ол LAN негізіндегі желілік байланысты қамтамасыз етті. Қашықтанғы құрылғылар және қашықтанғы серверлер/негізгі жүйелер желіге CP2000 деп аталатын дербес құрылғылар арқылы қосылды. CP2000-дер желілік түйіндерді қолдау үшін жасалды, олар BNAV2 (Burroughs желілік архитектурасының 2 нұсқасы) желілік технологиясын пайдалана отырып, бөлінген желіде байланыстырылды. BNAV2 IBM SNA өнімінің Burroughs-тағы функционалдық эквиваленті болды және PUT2 және PUT5 тасымалдау режимдерінде IBM орталарымен өзара әрекеттесуді қолдады. Сыртқы деректерді жеткізу аппараттық құралдарын өзгерту қолданыстағы MCS (Хабарламаларды басқару жүйесі (төменде талқыланады)) бағдарламалық жасақтамасына ешқандай өзгеріс енгізуді қажет етпеді. Кіріс кезінде хабарламалар DCP-ден ішкі шина арқылы тиісті MCP Datacom Control (DCC) DCP процестерінің стегіне жіберіледі. Жүйеде конфигурацияланған әрбір DCP үшін бір DCC процесі іске қосылды. DCP процесінің стегі кіріс хабарламаның белгілі бір бастапқы құрылғыдан келетін трафикті өңдеуге тағайындалған MCS-ке жеткізу үшін кезекке қойылатынын және кез келген жауапты DCP-ге, мақсатты құрылғыға жеткізу үшін қайтарылатынын қамтамасыз етті. Өңдеу тұрғысынан алғанда, MCS бағдарламалық жасақтамасына DCP-нің кез келген 5 стилінің, немесе ICP, немесе ICP/CP2000 комбинацияларын басқару үшін ешқандай өзгеріс енгізудің қажеті болмады. Хабарламаларды жеткізу қызметін атқарудан басқа, MCS операциялық жүйе кодын (NEWP-де) және пайдаланушы бағдарламаларын (ALGOL немесе COBOL, FORTRAN және кейінірек JAVA сияқты басқа қолданба тілдерінде) арасындағы қауіпсіздіктің аралық деңгейі болып табылады. MCS орталық бағдарлама деп есептелуі мүмкін және DCALGOL (Деректерді жеткізу ALGOL) тілінде жазылған. Жоғарыда айтылғандай, MCS Datacom Control Stack (DCC) қолданатын кезектерден хабарламалар алды және оларды өңдеу үшін тиісті қосымшаға/функцияға жіберді. Бастапқы MCS-тің бірі CANDE (Команда және өңдеу) болды, ол онлайн бағдарламаны әзірлеу ортасы ретінде жасалды. Жаңа Зеландиядағы Отаго университеті CANDE-ге балама арық бағдарламаны әзірлеу ортасын жасады, оны SCREAM/6700 деп атады, сонымен бірге IBM CALL/360 деп аталатын қашықтан уақыт бөлісу/бағдарламаны әзірлеу қызметін ұсынды, ол IBM 360 сериялы жүйелерде жұмыс істеді. 1984 жыл шамасында COMS деп аталатын тағы бір MCS енгізілді және жоғары өнімді транзакцияларды өңдеудің бақылау жүйесі ретінде жасалды. Транзакцияларды өңдеу орталары GEMCOS (Жалпыланған хабарламаларды басқару жүйесі) және Австралиялық Burroughs еншілес компаниясы жасаған TPMCS (Транзакцияларды өңдеу MCS) болды. Транзакцияларды өңдеу MCS онлайн өндірістік ортаға қосымша деректерді жеткізуді және қашықтағы пайдаланушыларға/құрылғыларға/жүйелерге жауаптарды қайтаруды қолдады. MCS – бұл пайдаланушы сессияларын басқаратын және пайдаланушы процестерін іске қосудың қажеті жоқ пайдаланушы күйін қадағалайтын бағдарламалық жасақтама элементтері, өйткені бір MCS стегін көптеген пайдаланушылар бөлісе алады. Жүктемені теңестіруді де MCS деңгейінде жүзеге асыруға болады. Мысалы, бір стекке 30 пайдаланушыны басқару керек, егер 31-60 пайдаланушы болса, онда екі стек, 61-90 пайдаланушы, үш стек және т.б. Бұл B5000 машиналарына сервер ретінде үлкен өнімділік артықшылығын береді, өйткені әрбір пайдаланушы жүйеге қосылғанда жаңа процесті іске қосудың және жаңа стек құрудың қажеті жоқ. Осылайша, MCS көмегімен пайдаланушыларға тиімді қызмет көрсетуге болады (олар күйге мұқтаж болса да, болмаса да). MCS сонымен қатар ірі масштабты транзакцияларды өңдеудің негізін құрайды. 1988 жыл шамасында CP2000 таратылған байланыс процессорын протокол хосты ретінде пайдалана отырып, TCP/IP іске асырылуы әзірленді, негізінен АҚШ үкіметінің тапсырысы бойынша. Екі-үш жылдан кейін TCP/IP іске асырылуы маңызды өнімділік пен функционалдық жақсартулармен хост/сервер негізінде қайта жазылды. Сол уақытта OSI протоколдарының стегін іске асыру жұмыстары жүргізілді, негізінен CP2000-де, бірақ үлкен қолдау инфрақұрылымы негізгі жүйеде іске асырылды. X.400 пошта хостингі және X.500 каталогтық қызметтері сияқты барлық OSI стандартымен анықталған қосымшалар іске асырылды.

DMALGOL және деректер базалары

ALGOL-дің тағы бір түрі DMALGOL (Data Management ALGOL) болып табылады. DMALGOL – DASDL (Data Access and Structure Definition Language) компиляторы арқылы жасалған деректер қорының сипаттама файлдарынан DMSII деректер қорының бағдарламалық қамтамасын құрастыруға арналған ALGOL-дің кеңейтілген нұсқасы. Деректер қорының дизайнерлері мен әкімшілері көрсетілген кестелер мен индекстерге сәйкес DMALGOL кодын жасау үшін деректер қорының сипаттамаларын компиляциялайды. Әкімшілерге DMALGOL-ді өздері жазудың қажеті жоқ. Құрылғы деңгейіндегі бағдарламалар деректер қорына қол жеткізуді, негізінен ALGOL және COBOL сияқты қолданба тілдерінде жазылған кодты пайдалану арқылы жүзеге асырады, бұл код деректер қорының нұсқауларымен және транзакцияларды өңдеу директиваларымен толықтырылған. DMALGOL-дің ең маңызды ерекшелігі – кестелер мен индекстерді өңдеуге арналған кодты жасауға мүмкіндік беретін алдын ала өңдеу механизмдері. DMALGOL алдын ала өңдеуі айнымалыларды және циклдарды қамтиды, сондай-ақ компиляция уақытындағы айнымалыларға негізделген атауларды жасай алады. Бұл циклдарды қолдамайтын алдын ала өңдеу құралдарымен салыстырғанда, әлдеқайда кең ауқымды жасалған элементтерді құруға мүмкіндік береді. DMALGOL DMSII деректер қорына жекелендірілген кіру процедураларын қамтамасыз ету үшін қолданылады. Деректер қоры Data Access and Structure Definition Language (DASDL) арқылы анықталғаннан кейін, схема алдын ала өңдеуші (препроцессор) арқылы DMALGOL-ға сәйкес келетін кіру процедураларына аударылып, содан кейін компиляцияланады. Бұл басқа деректерді басқару жүйелерінен (DBMS) айырмашылығы, орындалу кезінде деректер қорына қатысты if/then/else кодтарының қажеттілігін азайтады. 1970 жылдары бұл "жекелендіру" кодтың көлемін және орындалу уақытын қысқарту үшін кеңінен қолданылды. Кейінгі жылдары бұл практика азайып, себебі жад пен жылдамдық үшін төменгі деңгейдегі жақсартулар маңыздылығын жоғалтты, ал алдын ала өңдеуді жою кодтауды жеңілдетіп, маңыздырақ оптимизацияларға мүмкіндік берді. Қолданба бағдарламаларынан деректер қорына қол жеткізуді қолдау үшін ALGOL-дің қолданбалық нұсқасы BDMSALGOL деп аталады және деректер қорына қол жеткізу және жазбаларды өңдеу үшін "FIND", "LOCK", "STORE", "GET" және "PUT" сияқты командаларды қамтиды. Сонымен қатар, бірнеше процестер бірдей құрылымдарға қол жеткенде немесе жаңартқанда туындайтын тұйыққа түсу жағдайын шешу үшін "BEGINTRANSACTION" және "ENDTRANSACTION" командалары да енгізілді. Рой Гак (Burroughs) DMSII-нің негізгі әзірлеушілерінің бірі болды. Кейінгі жылдары компилятордың код өлшемі маңызды болмай қалғандықтан, алдын ала өңдеу конструкцияларының көп бөлігі ALGOL-дің құрылғы деңгейінде қолжетімді болды. Тек қауіпсіз емес конструкциялар мен деректер қорының сипаттама файлының тікелей өңделуі DMALGOL-ға ғана тән болып қалды.

Іс-шаралар

Процедураларды төрт тәсілмен шақыруға болады: қалыпты, шақыру, процесс және орындау. Қалыпты шақыру процедураны кез келген тілдегі әдеттегі тәсілмен, шақырылған процедура аяқталғанша шақырушы процедураны тоқтату арқылы шақырады. Шақыру механизмі процедураны корутина ретінде шақырады. Корутиналар – бастау процесімен бірдей лексикалық деңгейде өз стегінде жұмыс істейтін, синхронды бірліктер ретінде құрылған серіктес тапсырмалар. Басқару процесін бастаушы және корутина арасында CONTINUE командасы арқылы тікелей беріледі. Процесс механизмі процедураны өңделген процедураның лексикалық деңгейінен басталатын жеке стекпен асинхронды тапсырма ретінде шақырады. Асинхронды тапсырма ретінде, корутиналардан айырмашылығы, тапсырмалар арасында басқарудың нақты қашан берілетініне бақылау жоқ. Өңделген процедура әлі де қоршаған ортаға қол жеткізе алады және бұл өте тиімді IPC (процестер аралық байланыс) механизмі. Екі немесе одан көп тапсырма ортақ айнымалыларға қол жеткізе алатындықтан, жарыс жағдайларын болдырмау үшін тапсырмаларды синхрондау қажет, бұл EVENT дерек типі арқылы жүзеге асырылады, онда процестер бір немесе бірнеше оқиғалардың басқа бірлескен процестермен туындауына дейін күте алады. EVENT-тер PROCURE және LIBERATE функциялары арқылы өзара құлыптауды синхрондауға мүмкіндік береді. Егер қандай да бір себеппен бағынышты тапсырма аяқталса, шақырушы тапсырма жұмысын жалғастыра алады, бірақ егер ата процесі аяқталса, барлық бағынышты процестер автоматты түрде тоқтатылады. Бірден көп процессоры бар машинада процестер бір уақытта орындалуы мүмкін. Бұл EVENT механизмі көп тапсырмалылықпен қатар, көп процестік өңдеуді іске қосудың негізгі құралы болып табылады.

Іске қосу шақыру түрі

Соңғы шақыру түрі іске қосылады. Бұл процедураны бастау процесі аяқталғаннан кейін де жалғаса алатын тәуелсіз міндет ретінде орындайды. Осы себепті, туыс процесс ата-ана процесінің ортасындағы айнымалыларға қол жеткізе алмайды, және шақырылған процедураға берілген барлық параметрлер мәні бойынша берілуі тиіс. Осылайша, Burroughs Extended ALGOL кейінірек Ada сияқты тілдердегі көппроцессорлық және синхрондау мүмкіндіктерінің кейбіреулерін қамтыды. Ол аппараттық құрылымына енгізілген асинхронды процестерді қолдану арқылы жұмыс істеді.

Ішіндегі рәсімдер

Соңғы бір мүмкіндік – NEWP-де процедура INLINE деп жариялануы мүмкін, яғни компилятор оған сілтеме кезіксе, процедура шақыру шығындарын азайту үшін процедураның коды тікелей сол жерге енгізіледі; мұндай жағдай кодтың шағын бөліктері үшін тиімді. Инлайн функциялары C тіліндегі #define сияқты параметрленген макростарға ұқсас, бірақ макростарда болатын параметрлерге қатысты мәселелер оларда болмайды.

Асинхронды қоңыраулар

Мысал бағдарламада тек қалыпты шақырулар қолданылған, сондықтан барлық ақпарат бір стекте орналасады. Асинхронды шақырулар үшін әрбір асинхронды процеске жеке стек құрылады, осылайша процестер деректермен бөлісіп, бірақ асинхронды түрде жұмыс істейді.

Қатты құрылымның артықшылықтары

Стек құрылымының бір жақсы қасиеті – бағдарлама сәтсіз орындалса, стек дабылы жасалады және бағдарламашы үшін жұмыс істеп жатқан бағдарламаның күйін анықтау өте оңай. Мұны басқа жүйелердің ядролық сақтауларымен және алмасу пакеттерімен салыстырыңыз. Стек құрылымының тағы бір ерекшелігі – бағдарламалар өздігінен рекурсивті болады. FORTRAN рекурсияны қолдауға арналмаған, ал ALGOL-ді қалай іске асыру керектігін түсінудегі қиындықтардың бірі рекурсияны іске асыру болды. B5000-де бұл мәселе болған жоқ – тіпті керісінше, бағдарламаларды рекурсивті болудан қалай тоқтату керектігі туралы сұрақ туды. Ақырында олар бұл мәселені шешпеді. Burroughs FORTRAN компиляторы рекурсивті шақыруларға рұқсат берді (барлық басқа FORTRAN компиляторлары сияқты), бірақ көптеген басқа компьютерлерден айырмашылығы, стекке негізделген жүйеде мұндай шақырулардан алынған нәтижелер де сәтті аяқталды. Бұл математикалық өрнектерді формалды түрде өңдеуге арналған жүйе сияқты ерекше әсерлерге әкелуі мүмкін, ондағы орталық кіші программалар қайта-қайта бір-бірін шақырып, ешқашан қайтарылмайды: үлкен тапсырмалар стек асып кетуінен тоқтатылды! Осылайша, Burroughs FORTRAN басқа FORTRAN компиляторларына қарағанда қателерді жақсы тексерді. Мысалы, ALGOL стиліндегі компиляторлардағыдай, кіші программалар мен функциялардың дұрыс сандағы параметрлермен шақырылғанын тексерді. Басқа компьютерлерде мұндай сәйкессіздіктер жиі құлауға себеп болды. Ұқсас жағдай массив шектерін тексеруде де болды: басқа жүйелерде жылдар бойы қолданылған бағдарламалар Burroughs жүйесінде орындалғанда көбінесе сәтсіздікке ұшырады. Шындығында, Burroughs өзінің жоғары сапалы компиляторларымен және тілдерді іске асыруымен танымал болды, соның ішінде объектіге бағытталған Simula (ALGOL-дің кеңейтілген жиыны) және APL тілін жасаған Айверсон Burroughs жүйесіндегі APL-дің ең жақсы нұсқасы екенін мәлімдеді. LISP тілін жасаған Джон Маккарти келіспеді, өйткені LISP өзгертілетін кодқа негізделген, ал оған B5000-нің өзгертілмейтін коды ұнаған жоқ, бірақ көптеген LISP жүйелері интерпретациялық ортада жұмыс істейді. Көптеген процестерге қажетті жад жүйелік жад қорынан қажеттілікке қарай алынды. Burroughs жүйелерінде тапсырмаларды орындау үшін жад бөлімдерін алдын ала конфигурациялау үшін басқа жүйелердегідей SYSGEN жасаудың қажеті болмады.

Дескрипторға негізделген архитектура

Сол жақтағы сурет Берроуздың Үлкен жүйе архитектурасының объектіге бағытталған бағдарламалауға арналған аппараттық архитектура болғанын көрсетеді, мұндай мүмкіндік әлі күнге дейін қалыпты архитектураларда табылмайды.

Нұсқаулар жинағы

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

B5000, B5500 және B5700

B5000, B5500 және B5700 бағдарламалары 12 биттік буыннан тұрады, әр сөзге төртеуден. Архитектурада екі режим бар: Сөз режимі және Таңба режимі, және әрқайсысының жеке буын репертуары бар. Процессор Бақылау режимінде немесе Қалыпты режимде болуы мүмкін, ал кейбір буындар тек Бақылау режимінде ғана қолданылады. Архитектура тіркелімдерге немесе жадқа тікелей сілтеме жасау мүмкіндігін бермейді; барлық сілтемелер 1024 сөздік Бағдарламалық сілтеме кестесі, ағымдағы код сегменті, стек ішіндегі белгіленген орындар немесе стектегі ең жоғарғы екі орынды сақтайтын A және B тіркелімдері арқылы жасалады. Берроуз буын ішіндегі биттерді 0-ден (жоғары бит) 11-ге (төмен бит) дейін нөмірлейді.

B6500 және оның жалғастырушылары

Бағдарламалар 8 биттік сөздерден құралады, олар аталым шақыру, мән шақыру немесе оператор болуы мүмкін, олардың ұзындығы бірден он екіге дейін сөзден тұруы мүмкін. 200-ден аз оператор бар, олардың бәрі 8 биттік сөздерге сыяды. Бұл операторлардың көптегені деректердің типіне байланысты полиморфты болып табылады, деректердің типі тег арқылы беріледі. Күшті жол іздеу, көшіру және өңдеу операторларын ескермесек, негізгі жиынтық шамамен 120 оператордан тұрады. Егер MVST және HALT сияқты операциялық жүйеге арналған операторларды жойсақ, пайдаланушы деңгейіндегі бағдарламаларда қолданылатын операторлар жиыны 100-ден аспайды. Аталым шақыру және мән шақыру сөздері мекенжай жұптарын қамтиды; оператор сөздері мекенжайларды пайдаланбайды немесе стектегі басқару сөздері мен сипаттамаларды пайдаланады.

B5000-тің әсері

B5000-нің тікелей әсерін қазіргі Unisys ClearPath желісіндегі мейнфреймдерінде көруге болады, олар B6500-дің тікелей ұрпақтары, оған B5000 әсер еткен және 40 жылдық тұрақты дамудан кейін әлі де MCP операциялық жүйесін пайдаланады. Бұл архитектура қазір emode (эмуляция режимі) деп аталады, себебі B6500 архитектурасы Intel Xeon процессорларындағы x86 нұсқаулар жиынтығын түпкілікті нұсқаулар жиынтығы ретінде қолданатын машиналарда жүзеге асырылды, ал код B5000 нұсқаулар жиынтығын эмуляциялайтын процессорларда орындалады. Бұл машиналарда nmode (түпнұсқалық режим) де болжаныпты, бірақ ол жойылды, сондықтан B6500-дің мұрагері машиналарын көбінесе «emode машиналары» деп атайды. B5000 машиналарында бағдарламалау жоғары деңгейдегі тілдерде ғана жүргізілді; ассемблер болған жоқ. B5000 стек архитектурасы MIT-де B5500-мен танысқан Forth бағдарламалау тілінің әзірлеушісі Чак Мурды шабыттандырды. «Forth The Early Years» еңбегінде Мур осы ықпалды сипаттап, Forth-тың DUP, DROP және SWAP командаларының B5500 нұсқауларынан (DUPL, DLET, EXCH) алынғанын атап өтті. B5000 машиналарының стек негізделген архитектурасы және таңбаланған жады кеңестік «Эльбрус» мейнфреймдері мен суперкомпьютерлерге зор әсер етті. Серияның алғашқы екі буынында тек жоғары деңгейдегі тілдерде бағдарламаланған, таңбаланған жады және стек негізделген процессорлар қолданылды. Олар үшін El 76 деп аталатын ассемблерлік тіл де болды, бірақ ол ALGOL 68-дің өңделген түрі болатын және құрылымдық бағдарламалау мен бірінші деңгейдегі процедураларды қолдады. Кейінгі буындар осы архитектурадан VLIW сияқты EPIC архитектурасына көшті. HP 3000 бизнес-жүйесін жасаған Hewlett Packard инженерлері B5500-ді пайдаланып, оның аппараттық және бағдарламалық қамтамасыздануына қатты таң қалды; олар ұқсас бағдарламалық қамтамасызданумен 16 биттік миникомпьютер құруды мақсат етті. HP-нің басқа да бөлімдері ұқсас миникомпьютерлер мен микропроцессорлық стек машиналарын жасады. Боб Бартонның кері польшалық нотация (RPN) бойынша жұмысы 9100A моделінен бастап HP калькуляторларында, әсіресе HP 35 және одан кейінгі модельдерде пайда болды. 1970-ші жылдардың соңы мен 1980-ші жылдардың басында Tandem Computers компаниясы жасаған NonStop жүйелері де 16 биттік стек машиналарын құрады, олар HP 3000 байланысы арқылы B5000-ға жанама әсер етті, себебі алғашқы Tandem инженерлерінің көпшілігі бұрын HP-де жұмыс істеген. 1990 жылға қарай бұл жүйелер MIPS RISC архитектурасына көшті, бірақ объектілік кодты аудармалау немесе тікелей эмуляция арқылы стек машинасының екілік файлдарын орындауды қолдауды жалғастырды. 2000 жылдан кейін бұл жүйелер Itanium архитектурасына көшті және мұра стек машинасының екілік файлдарын орындауды жалғастырды. Боб Бартон Алан Кейге де зор ықпал етті. Кей B5000-нің деректерге негізделген, таңбаланған архитектурасынан әсер алып, бұл объектіге бағытталған бағдарламалау және Smalltalk әзірлеуіндегі ойлауына әсер етті. B5000 архитектурасының тағы бір ерекшелігі – ол аппараттық құрылғыда тікелей жұмыс істейтін қауіпсіз архитектура болатын. Бұл техниканың бүгінгі күні виртуалды машиналарда қауіпсіз ортаны қамтамасыз етуге бағытталған ұрпақтары бар. Мұндай өнімнің бірі – Java JVM, ол қолданбалардың жұмыс істейтін қауіпсіз ортасын қамтамасыз етеді. Emode-ге дейін болған аппараттық архитектураның байланыстыру құндылығы x86 негізделген машиналарда MCP жалғыз басқару бағдарламасы болған жағдайда сақталады, бірақ бұл машиналар ұсынатын қолдау B6500 нұсқаулар жиынтығы түпкілікті нұсқаулар жиынтығы болып табылатын машиналардағы қолдаудан нашар. x86 нұсқаулар жиынтығының 32 биттік нұсқаларына дейін пайда болған Intel процессор архитектурасы, Intel iAPX 432, эквивалентті физикалық негізді қамтамасыз ете алатын еді, себебі ол да негізінен объектіге бағытталған архитектура болатын.