С 4 KB RAM стигнахме до Луната, а днес 4 GB не стигат за една игра. Как е възможно?
На 20 юли 1969 г. Нийл Армстронг и Бъз Олдрин се намират само на минути от първото кацане на човек на Луната. Лунният модул „Ийгъл“ се спуска към повърхността, когато на малкия дисплей пред астронавтите внезапно се появява предупреждение: 1202. Бордовият компютър е претоварен. В Хюстън трябва бързо да решат дали това е достатъчна причина да прекратят кацането. След няколко напрегнати секунди от Земята идва разрешение полетът да продължи. Историята завършва благополучно. А най-интересното е, че компютърът, който помага за управлението на лунния модул в този критичен момент, разполага с едва 4 килобайта оперативна памет.
За сравнение, една обикновена снимка от съвременен смартфон може да заема хиляди пъти повече място. А компютър с 4 гигабайта RAM, тоест над един милион пъти повече памет, днес дори не покрива минималните изисквания на много популярни видеоигри. Как е възможно машина с толкова скромни характеристики да участва в едно от най-сложните инженерни постижения в човешката история, докато съвременният компютър понякога изпитва затруднения да подкара една игра? Отговорът е далеч по-интересен от простото обяснение, че някога програмистите са били по-добри.

Компютър, който не е трябвало да прави всичко
Apollo Guidance Computer, или AGC, е разработен в Масачузетския технологичен институт (MIT) специално за космическата програма „Аполо“. За времето си той е истинско технологично чудо, използващо интегрални схеми в епоха, когато подобни компоненти все още са сравнително нова технология. Но има една съществена разлика между AGC и компютъра на бюрото ни. Съвременният персонален компютър трябва да може да прави практически всичко. Да обработва видео, да отваря десетки уебсайтове, да възпроизвежда музика, да изпълнява сложни приложения, да поддържа постоянна интернет връзка и, разбира се, да стартира видеоигри.
Компютърът на „Аполо“ е създаден за значително по-ограничен, но изключително отговорен набор от задачи. Той обработва информация от навигационните инструменти и сензорите, изчислява положението и движението на космическия кораб, подпомага определянето на траекторията и управлява важни функции на полета. За да изпълнява тези задачи, не му е необходима фотореалистична графика, красив интерфейс или гигабайти изображения. Не се налага да изобразява стотици хиляди обекти или да възпроизвежда пространствен звук.
Необходима му е математическа точност, надеждност и способност да реагира навреме. Процесорът работи с тактова честота около 1 MHz – стойност, която днес изглежда почти невероятна. Но той е проектиран така, че наличната изчислителна мощност да се използва за точно определени операции. Всъщност AGC дори има собствена операционна система за работа в реално време, която управлява изпълнението на различните задачи според тяхната важност. Именно това се оказва решаващо при кацането на „Аполо 11“.

Софтуер, който жените буквално са изплитали с ръцете си
Когато говорим за 4 KB памет, трябва да направим важно уточнение. Това е оперативната памет на компютъра, а не цялото пространство, в което се съхраняват неговите програми. AGC разполага с 2048 думи променяема памет, всяка по 16 бита, което съответства на приблизително 4 KB RAM. Освен това има 36 864 думи постоянна памет, или около 72 KB, в която е записана по-голямата част от софтуера.
Тази постоянна памет обаче няма почти нищо общо с познатите ни днес чипове. Тя използва технология, наречена core rope memory – памет от магнитни сърцевини и медни проводници. Информацията е кодирана чрез прокарването на проводниците през или покрай миниатюрни магнитни пръстени. Проводник, преминаващ през определена сърцевина, представлява единица, а преминаващият покрай нея – нула. Така програмният код се превръща във физическа структура от проводници. И най-необичайното е, че значителна част от тази работа се извършва ръчно.

В заводите на Raytheon жени с изключително прецизни движения прокарват проводниците по предварително зададени схеми. Много от тях са наети заради уменията си в работата с фини материали и прецизното сглобяване. Може да се каже, че софтуерът, помогнал на хората да кацнат на Луната, е бил буквално изтъкан. Разбира се, тази технология има и огромен недостатък. След като паметта е произведена, промяната на програмата става изключително трудна. Няма как програмистът просто да отвори файл, да поправи няколко реда и да натисне бутона за обновяване. Съществена промяна може да наложи физическо преработване на паметта, което отнема седмици. Затова софтуерът трябва да бъде подготвен, проверен и окончателно одобрен месеци преди полета.
Когато всеки байт има значение
Днешните разработчици рядко трябва да се замислят дали една допълнителна променлива ще изчерпи паметта на компютъра. През 60-те години ситуацията е коренно различна. Инженерите на „Аполо“ са принудени да използват невероятно изобретателни решения. Например една и съща област от оперативната памет може да съхранява височината на лунния модул в даден момент, а по-късно да се използва за резултата от измерване на звезда.
Според спомените на един от програмистите на системата някои области от паметта са били използвани за до седем различни цели. Това изисква изключително внимателно планиране. Ако две програми се опитат да използват една и съща област едновременно, последствията могат да бъдат катастрофални. Оптимизацията не е била въпрос на елегантен код или професионална гордост. Тя е била необходимост, от която зависят човешки животи. И въпреки ограниченията компютърът е можел да изпълнява няколко задачи, да реагира на прекъсвания и да определя кои изчисления са най-важни във всеки конкретен момент.

Грешка 1202: моментът, в който добрият софтуер спаси кацането
Да се върнем към онези напрегнати минути на 20 юли 1969 г. Докато лунният модул се приближава към повърхността, компютърът започва да получава излишни заявки, свързани с радара за среща с друг космически кораб. Натоварването става толкова голямо, че системата вече не разполага с достатъчно ресурси за всички планирани задачи. Появяват се предупрежденията 1202 и 1201.
При обикновен компютър подобна ситуация може да доведе до блокиране на системата. При AGC обаче софтуерът е проектиран да възстановява работата си, като запазва изпълнението на най-важните функции. Компютърът прекратява или не възстановява част от второстепенните задачи, но продължава да изпълнява критичните изчисления за управлението на лунния модул.
Това позволява на астронавтите да продължат спускането, а специалистите в Хюстън да потвърдят, че предупрежденията не налагат прекратяване на мисията. Накрая Армстронг поема ръчно управлението на финалния етап, за да избегне опасна скалиста зона, и успешно приземява модула. Този епизод показва нещо, което трудно може да се измери с гигабайти и мегахерци: добрата архитектура на един софтуер понякога е по-важна от суровата изчислителна мощност.
А защо днес 4 GB не стигат дори за една видеоигра?
Причината е, че сравняваме две коренно различни задачи. Да вземем Cyberpunk 2077. Според публикуваните от CD Projekt RED системни изисквания играта се нуждае от минимум 12 GB оперативна памет за съвременната си версия, а препоръчителната конфигурация включва 16 GB. Това не означава, че разработчиците са написали програма, която е милиони пъти по-сложна от софтуера на „Аполо“. Голяма част от ресурсите се използват за неща, които бордовият компютър на космическия кораб изобщо не е трябвало да обработва.
В съвременната видеоигра всяка сграда има геометрия и текстури. Улиците са изпълнени с автомобили, пешеходци, осветление, отражения и множество анимирани обекти. Героите имат детайлни модели, лицеви анимации и озвучаване. Светът трябва да реагира на действията на играча, а виртуалната среда непрекъснато да се обновява. Всичко това изисква обработката на огромно количество данни.
Част от графичните ресурси се съхраняват в специализираната памет на видеокартата (VRAM), която не бива да се бърка със системната RAM. Но оперативната памет също е необходима за игровия свят, логиката, заредените ресурси и взаимодействието между различните компоненти. Към това трябва да прибавим и операционната система. Windows, драйверите, защитният софтуер, браузърът и работещите във фонов режим приложения също използват оперативна памет. При компютър с 4 GB RAM значителна част от тази памет може вече да е заета, преди изобщо да сме стартирали играта. Разбира се, има немалко по-леки и добре оптимизирани игри, които работят с 4 GB или дори по-малко. Но за съвременните мащабни заглавия подобен обем често е крайно недостатъчен.

Станали ли са програмистите по-мързеливи?
Това е изкушаващо заключение, но не е особено справедливо. През 60-те години компютърната памет е изключително скъпа, а ограниченията на хардуера принуждават разработчиците да оптимизират всяка част от програмата. Днес ситуацията е почти обърната. Паметта е сравнително евтина, докато времето на висококвалифицираните програмисти струва много. Създаването на модерна видеоигра може да изисква години труд от стотици специалисти. Затова разработчиците използват готови библиотеки, инструменти и игрови енджини като Unreal Engine и Unity. Те предоставят огромно количество предварително разработени функции, които могат да се използват повторно.
Това ускорява работата и позволява създаването на светове, каквито преди няколко десетилетия биха били немислими. Цената понякога е по-голямото потребление на системни ресурси. Разбира се, съществува и лошо оптимизиран софтуер. Изобилието от памет може да направи разработчиците по-малко внимателни към нейното използване. Но не можем да обясним съвременните хардуерни изисквания единствено с небрежно програмиране. Една игра, която изобразява сложен триизмерен свят, действително обработва несравнимо повече визуална информация от навигационен компютър от 1969 г.
Истинският урок от компютъра на „Аполо“
Всъщност има още едно важно уточнение. Четирите килобайта RAM не са изпратили сами хората на Луната. Мисиите „Аполо“ разчитат на огромна инфраструктура, наземни изчислителни системи, хиляди инженери, сложни навигационни инструменти и, разбира се, уменията на астронавтите. AGC е един от критичните елементи в тази система. Но историята му остава забележителна, защото показва какво може да се постигне, когато хардуерът и софтуерът са проектирани заедно, с ясна цел и почти без право на грешка.
Днес носим в джобовете си смартфони с изчислителна мощност, която би изглеждала фантастична за инженерите от MIT през 60-те години. Въпреки това постоянно откриваме нови причини да имаме нужда от още памет и по-бързи процесори. И това не е непременно лошо. Просто технологиите са разширили невероятно много границите на онова, което очакваме от тях. Компютърът на „Аполо“ е трябвало да изчисли как безопасно да приземи космически кораб на Луната. Съвременната видеоигра трябва да ни накара да повярваме, че се намираме в цял друг свят. Първото изисква прецизни изчисления и безотказно управление. Второто – огромно количество графична, звукова и друга информация, обработвана в реално време.
И може би най-интересното в тази история не е, че някога сме стигнали до Луната с 4 KB RAM. А че ограниченията са принудили инженерите да създадат софтуер, чиято надеждност продължава да впечатлява повече от половин век по-късно.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.









