Кіріспе

Бірінші электрондық сақталған бағдарламалық компьютер, 1948 жыл

Манчестер Бэби, сондай-ақ Шағын масштабты эксперименталды машина (SSEM) деп аталды, – алғашқы электрондық сақталған бағдарламалық компьютер. Ол Манчестер университетінде Фредерик С. Уильямс, Том Килберн және Джефф Тутилл құрастырды және 1948 жылдың 21 маусымында алғашқы бағдарламасын іске қосты. Бэби практикалық есептеу машинасы ретінде көзделмеген, бірақ Уильямс түтігі – алғашқы нағыз кездейсоқ кіру жады – үшін сынақ алаңы ретінде жасалған. Құрылғанынан 50 жыл өткен соң «кішкентай және қарапайым» деп сипатталған бұл машина қазіргі заманғы электрондық цифрлық компьютер үшін қажетті барлық элементтерді қамтитын алғашқы жұмыс істейтін құрал болды. Бэбидің 32 бит сөз ұзындығы және 32 сөздік жадысы (1 кибит, 1024 бит) болды. Ол мүмкіндігінше ең қарапайым сақталған бағдарламалық компьютер ретінде жасалғандықтан, аппараттық деңгейде жүзеге асырылған жалғыз арифметикалық операциялар – шегеру және теріске шығару болды; ал қалған арифметикалық операциялар бағдарламалық жасақтамада іске асырылды. Машина үшін жазылған үш бағдарламаның біріншісі 218-ден бастап төменгі кез келген бүтін санды тексеру арқылы 218-дің ең жоғары ортақ бөлгішін (262,144) есептеді. Бұл алгоритмді орындау үшін көп уақыт кетті – демек, компьютердің сенімділігін дәлелдеді, себебі бөлу делдалдың қайта-қайта шегерілуі арқылы іске асырылды. Бағдарлама 17 нұсқаудан тұрады және Бэби шамамен 3,5 миллион операцияны орындағаннан кейін (секундына 1100 нұсқаудың тиімді процессор жылдамдығымен) 131,072 дұрыс жауабына жету үшін шамамен 52 минут бойы жұмыс істеді. Конрад Цузенің Z3 – екілік сандық арифметикалық логикасы бар, бірақ Тьюринг машинасының шартты тармақталуы жоқ, әлемдегі алғашқы бағдарламаланатын, толық автоматты компьютер болды. 1941 жылдың 12 мамырында Z3 Берлиндегі Deutsche Versuchsanstalt für Luftfahrt («Авиация жөніндегі неміс зертханасы») ғалымдарының алдында сәтті таныстырылды. Z3 бағдарламасын сыртқы таспаға сақтады, бірақ ол электронды емес, электромеханикалық болды. Ең алғашқы электрондық есептеу құрылғылары – 1942 жылы сәтті сынақтан өткен Атанасов-Бери компьютері (ABC) және 1943 жылғы Колосс болды, бірақ екеуі де сақталған бағдарлама машиналары болған жоқ. ENIAC (1946) – электрондық және жалпы мақсаттағы алғашқы автоматты компьютер. Ол Тьюрингтік толық, шартты тармақталумен және көптеген мәселелерді шешу үшін бағдарламаланатын, бірақ оның бағдарламасы машинаның өзгермелі жады емес, жалғастырғыш сымдардағы коммутаторлардың күйінде сақталды және оны қайта бағдарламалауға бірнеше күн кетіп, бағдарламаны өзгертуге бірнеше күн уақыт қажет болды. Тьюринг және Цузе сияқты зерттеушілер компьютер жадында бағдарламаны және ол жұмыс істейтін деректерді сақтау идеясын зерттеді, ал математик Джон фон Нейман осы компьютер архитектурасын сипаттайтын кең таралған мақала жазды, ол бүгінгі таңға дейін барлық компьютерлерде қолданылады. Фон Нейман компьютерін құру бағдарламаны сақтауға арналған жады құрылғысының болуына байланысты болды. Екінші дүниежүзілік соғыс кезінде радар сигналдарының шуын жою мәселесі бойынша жұмыс істейтін зерттеушілер кідірту сызығының жадын жасады, оның алғашқы практикалық қолданысы – Дж. Преспер Эккерт жасаған сынап кідірту сызығы болды. Радарлық хабар таратушылар үнемі қысқа мерзімді радио энергия импульстарын жібереді, олардың шағылыстары CRT экранында көрсетіледі. Операторларды әдетте тек қозғалатын нысаналар қызықтыратындықтан, тұрақтанған объектілердің кез келген алаңдататын шағылыстарын сүзгілеу қажет болды. Сүзгілеу әрбір алынған импульсті алдыңғы импульспен салыстыру арқылы жүзеге асырылды және егер олар бірдей болса, екеуін де қабылдамай, тек қозғалатын объектілердің бейнелерін қамтитын сигнал қалдырылды. Әрбір алынған импульсті кейін салыстыру үшін сақтау үшін оны тарату желісі арқылы өткізді, оны жіберу импульстерінің арасындағы уақытқа дейін кешіктірді. 1945 жылдың қазан айында Тьюринг Ұлттық физикалық зертханаға (NPL) қосылды, сол кезде Өнімдер министрлігіндегі ғалымдар Ұлыбританияға машина көмегімен есептеулерді үйлестіру үшін Ұлттық математикалық зертхана қажет деген қорытындыға келді. NPL-де математика бөлімі құрылды, ал 1946 жылдың 19 ақпанында Алан Тьюринг автоматты есептеу машинасы (ACE) деп аталатын электрондық сақталған бағдарламалық компьютердің дизайнын сипаттайтын мақала ұсынды. Бұл – екінші дүниежүзілік соғыстан кейінгі жылдары сақталған бағдарламалық компьютер жасау мақсатында құрылған бірнеше жобалардың бірі болды. Сол кезде EDVAC Пенсильвания университетінің Мур электр инженерия мектебінде және EDSAC Кембридж университетінің математикалық зертханасында дамып жатты. NPL ACE сияқты машинаны салу тәжірибесі болмағандықтан, олар Бас поштаның (GPO) Доллис Хилл зерттеу зертханасындағы Томми Флауэрстің көмегіне жүгінді. Флауэрс, Колосс – әлемдегі алғашқы бағдарламаланатын электрондық компьютердің авторы, басқа жұмыстармен айналысып, жобаға қатыса алмады, бірақ оның командасы ACE үшін кейбір сынап кідірту сызықтарын жасады. Телекоммуникациялық зерттеу мекемесі (TRE) де көмек сұрады, сондай-ақ Кембридж университетінің математикалық зертханасындағы Морис Уилкс. NPL-ге жауапты үкіметтік департамент TRE жүргізіп жатқан барлық жұмыстардың арасында ACE-ге ең жоғары басымдық берілді. NPL-дің шешімі 1946 жылдың 22 қарашасында TRE физика бөлімінің бастығының, сондай-ақ TRE-ден келген Фредерик С. Уильямс пен А. М. Уттлидің зертханаға сапар шегуіне әкелді. Уильямс радар қолданбалары үшін ЭЛТ жадындағы жады құрылғысын жасаумен айналысқан TRE дамыту тобын басқарды, кідірту сызықтарына балама ретінде. Уильямс ACE-де жұмыс істеуге қол жеткізе алмады, өйткені ол Манчестер университетінде профессорлық қызметке қабылданған және оның көптеген схемалық техниктері Атомдық энергия департаментіне ауыстырылып жатқан еді. TRE Уильямстың басшылығымен университетке жұмыс істеу үшін шағын техниктер тобын жіберуге және Уттлимен TRE-де жұмыс істейтін тағы бір шағын топты қолдауға келісті.

Уильямс-Килберн түтігі

Кейбір ерте компьютерлер, мысалы EDSAC, EDVAC дизайнынан шабыттанғандықтан, кейіннен сынаптық кідіру желісі жадын сәтті қолданғанмен, технологияның бірнеше кемшіліктері болды: ол ауыр, қымбат еді және деректерге тікелей қол жеткізуге мүмкіндік бермейтін. Сонымен қатар, деректер сынап бағанасы арқылы таралатын акустикалық толқындар түрінде сақталғандықтан, құрылғының температурасын өте мұқият бақылау қажет болды, себебі орта арқылы дыбыстың жылдамдығы температураға байланысты өзгереді. Уильямс Белл зертханасында радар сигналдарынан жердің эхосын жою үшін кідіру желісіне балама ретінде катодты сәулелі түтіктердің (CRT) тиімділігін көрсеткен тәжірибеге куә болды. TRE-де жұмыс істеген кезде, 1946 жылдың желтоқсанында Манчестер университетіне қосылмас бұрын, ол Том Килбернмен бірге стандартты CRT негізіндегі Уильямс түтігі немесе Уильямс-Килберн түтігі деп аталатын электрондық жадтың бір түрін жасады: алғашқы электрондық тікелей қолжетімділік цифрлық сақтау құрылғысы. Baby құрылғысының мақсаты – оның ішінде сақталған деректерді компьютерде пайдалануға жарамды жылдамдықпен сенімді түрде оқу және жазу арқылы оның практикалық сақтау құрылғысы екенін көрсету болды. Бинарлық цифрлық компьютерде пайдалану үшін түтік, әр жад орнында 0 және 1 бинарлық сандарына сәйкес келетін екі күйдің біреуін сақтауға қабілетті болуы керек еді. Ол CRT экранының кез келген нүктесінде сызық немесе нүкте бейнелеу арқылы туындайтын оң немесе теріс электр зарядын пайдаланды, бұл құбылыс екіншілік эмиссия деп аталады. Сызық оң зарядты, ал нүкте теріс зарядты тудырады, олардың екеуі де экран алдындағы детекторлық пластинамен қабылданады; теріс заряд 0-ді, ал оң заряд 1-ді білдіреді. Заряд шамамен 0,2 секунд ішінде тарап кетеді, бірақ ол детектормен алынған деректерден автоматты түрде жаңартылуы мүмкін. Baby-де қолданылған Уильямс түтігі CV1131 негізінде жасалған, ол коммерциялық түрде қолжетімді диаметрлі CRT, бірақ Mark I құрылғысында кішірек түтік, CV1097 қолданылды.

Жобаның басталуы

Екінші дүниежүзілік соғыс кезінде Блетчли Паркте кодтарды бұзу үшін Colossus компьютерін жасағаннан кейін Макс Ньюман Алан Тьюрингтің математикалық концепцияларын және Джон фон Нейман сипаттаған сақталған бағдарлама концепциясын біріктіретін компьютерді жасауға міндеттенді. 1945 жылы ол Манчестер университетінің таза математика кафедрасына тағайындалды; ол өзінің Colossus жобасындағы әріптестері Джек Гуд пен Дэвид Ристі Манчестерге бірге алып барды, және ол жерде олар Ф.С. Уильямсты жаңа компьютерлік жобаға "схема жасаушы" ретінде тартты, ол үшін ол Корольдік қоғамнан қаржы алды. Университеттің қолдауын алып, Корольдік қоғамнан қаржы жинап, математиктер мен инженерлердің бірінші сыныпты командасын құрастырған Ньюманның компьютер құрастыру жоспарының барлық элементтері енді дайын болды. Блетчли Паркте өте тиімді қолданған тәсілін пайдалана отырып, Ньюман өз адамдарын егжей-тегжейлі жұмысқа жіберді, ал өзі бұл істі ұйымдастыруға назар аударды. Тарихшы Дэвид Андерсон былай деді: "Университеттің қолдауын қамтамасыз етіп, Корольдік қоғамнан қаржы алған және математиктер мен инженерлердің бірінші сыныпты командасын жинаған Ньюман енді компьютер құрастыру жоспарының барлық элементтерін дайын болды. Блетчли Паркте тиімді қолданған тәсілін пайдалана отырып, Ньюман өз адамдарын егжей-тегжейлі жұмысқа жіберді, ал өзі күш-жігерді ұйымдастыруға көңіл бөлді." Гуд "тоқтату" нұсқауын қоспады, ал оның ұсынған шартты секіру нұсқауы "Сәбидің" (Baby) іске асырғанынан гөрі күрделі болды.

Даму және жобалау

Ньюман Baby немесе одан кейінгі Манчестер компьютерлерін әзірлеуде инженерлік рөл атқармаса да, ол жобаны қолдап, ынталы болды және оның құрылысына арналған соғыс артық қалдықтарын, соның ішінде GPO металл сөрелерін және Блетчлиден "екі толық Colossi материалынан" сатып алуды ұйымдастырды. 1948 жылдың маусым айында Baby құрылысы аяқталып, жұмыс істеді. Оның ұзындығы 5 метр, биіктігі 2 метр, салмағы шамамен 550 клапан (вакуум түтіктері) – 300 диод және 250 пентодтан тұрды, ал қуаттылығы 3500 ваттты құрады. Арифметикалық бөлім EF50 пентодалы клапандарды пайдаланып жасалды, олар соғыс кезінде кеңінен қолданылған. Baby бір Уильямс түтігін 32x32 биттік жад ұяшықтарын (RAM) қамтамасыз ету үшін, екіншісін 32 биттік аккумуляторды сақтау үшін, онда есептеулердің аралық нәтижелерін уақытша сақтауға болады, ал үшіншісі бағдарламаның ағымдағы нұсқауын және оның жадтағы мекенжайын сақтау үшін қолданды. Қалған үш түтіктің сақтау электроникасы жоқ төртінші CRT шығыс құрылғысы ретінде пайдаланылды, ол кез келген таңдалған жад түтігінің бит үлгісін көрсетуге қабілетті. 32 биттік RAM жад ұяшығының әрқайсысында бағдарламалық нұсқау немесе дерек болуы мүмкін. Бағдарламалық нұсқауда 0–12 биттер пайдаланылатын операндтың жад мекенжайын көрсетсе, 13–15 биттер орындалатын операцияны, мысалы, санды жадқа сақтауды анықтады; қалған 16 биті пайдаланылмады. Baby-дің бір операнды архитектурасы кез келген операцияның екінші операндысы жасырын болғанын білдірді: аккумулятор немесе бағдарламалық тізімдегіш (нұсқаулар мекенжайы); бағдарламалық нұсқаулар жадтағы деректердің мекенжайын ғана көрсетті. Компьютер жадындағы жад ұяшығын 360 микросекунд ішінде оқуға, жазуға немесе жаңартуға болады. Нұсқауды орындау жадтан жад ұяшығына қол жеткізуден төрт есе ұзаққа соқты, бұл секундқа шамамен 700 нұсқау орындау жылдамдығын қамтамасыз етті. Негізгі жад үнемі жаңартылып отыратын, бұл процесс 20 миллисекундқа созылды, өйткені Baby-дің 32 жад ұяшығының әрқайсысы оқылып, кейін бірінен соң бірі жаңартылып отыру керек еді. Baby теріс сандарды екілік толықтырғыш түрінде бейнеледі, бұл әлі де көптеген компьютерлерде қолданылады. Бұл бейнелеуде ең маңызды биттің мәні санның таңбасын көрсетеді; оң сандар сол орында нөлге, ал теріс сандар бірге ие. Осылайша, әр 32 биттік жад ұяшығында сақталатын сандардың диапазоны −231-ден +231-ге дейін (ондық: −2,147,483,648-ден +2,147,483,647 дейін) болды.

Алғашқы бағдарламалар

Компьютер үшін үш бағдарлама жазылды. Бірінші бағдарлама, 17 нұсқаудан тұратын, Килберн жазды және, белгілі болғанша, алғаш рет 1948 жылдың 21 маусымында іске қосылды. Ол 218 (262,144) санының ең үлкен дұрыс бөлгішін табу үшін жасалды, мұнда 218-ден 1-ге дейінгі әрбір бүтін сан тексерілді. Бөлу амалы бөлгішті қайталап шегеру арқылы іске асырылды. "Бейби" бағдарламасы жауапты табу үшін 3,5 миллион операция және 52 минут жұмсады (131,072). Бағдарлама 17 нұсқау сөзіне қосымша 8 жұмыс жады сөзін пайдаланды, бағдарламаның жалпы көлемі 25 сөзді құрады. Келесі айда Джефф Тютилл бағдарламаның өңделген нұсқасын жазды, ал шілде айының ортасында Алан Тьюринг – 1948 жылдың қыркүйегінде Манчестер университетінің математика факультетінде оқырман қызметіне тағайындалған – ұзақ бөлуді жүзеге асыру үшін үшінші бағдарламаны ұсынды. Ол кезде Тьюринг университеттегі Есептеу машиналары зертханасының директорының орынбасары лауазымына тағайындалған еді, бірақ зертхана 1951 жылға дейін физикалық жағынан құрылмады.

Кейінгі дамуы

Уильямс пен Килберн 1948 жылдың қыркүйек айында «Жаратылыс» журналына жолдаған хатында «Сәби» машинасы туралы хабарлады. Машинаның сәтті демонстрациясы 1948 жылдың тамызында жұмысы басталган, Манчестер Марк 1 деп аталған, көп нәрсеге қолданылатын, практикалықрақ компьютердің құрылысына әкелді. Бірінші нұсқасы 1949 жылдың сәуірінде іске қосылды, және ол тікелей Ferranti Mark 1 машинасының жасалуына себеп болды, ол әлемдегі алғашқы коммерциялық мақсаттағы, көп нәрсеге қолданылатын компьютер еді. 2008 жылы Манчестер университетінде машинаның түпнұсқа панорамалық суреті табылды. 1948 жылдың 15 желтоқсанында зерттеуші студент Алек Робинсон түсірген бұл сурет 1949 жылдың маусымында «The Illustrated London News» басылымында жарияланды.