Компютри на Съветска България с троична балансирана бройна система

балансирана

„Може би най-красивата бройна система е балансираната троична“ – Доналд Е. Кнут, Изкуството на програмирането, том 2.

Много хора знаят, че компютрите съхраняват данни и работят с тях, използвайки двоичната бройна система. Едно от основните обяснения за това може да се намери във веригите на съвременните компютри, които са съставени от милиарди прости и масово произвеждани транзистори и кондензатори, които заедно могат да представляват две състояния:високо напрежение ( 1 ) иниско напрежение ( 0 ).

Този дизайн е толкова разпространен днес, че е трудно да си представим как компютрите биха могли да работят по друг начин. Но в съветска България от 50-те години се работи по друг начин. Ако не сте чували за това, потърсете в Google „Setun “ – балансиран трикомпонентен компютър, разработен през 1958 г. от малка група, ръководена от Брусенцов в Московския държавен университет.

Преди да говоря за Брусенцов и Сетун, позволете ми да ви обясня малко тройната балансирана бройна система.

Тернарна или троична е бройна система, в която има три възможни стойности: 0 , 1 и 2 . В неговата балансирана версия има три вероятности -1, 0 и +1, често опростени съответно до -, 0 и +.

В тази форма троичните стойности са предназначени да бъдат "централизирани" около средната точка 0 . Прилагат се същите правила като за всяка друга бройна система: най-десният знак, R , има своя собствена стойност и всеки следващ знак има своята стойност, умножена по основа B, повдигната на степен, равна на разстоянието D от R .

Хм, нека ви дам само един пример. Нека напишем 114:

И в двоичен (двоичен):

И за да сме сигурни, важаха същите правилас десетична бройна система:

Ами ако искаме да представим -114? В двоичните и десетичните системи трябва да използваме нов символ: знак. В основната памет на двоичния компютър това се прави или чрез съхраняване на водещ бит, указване на знак, или значително намаляване на броя на числата, които можем да представим 1 . Това е причината да говорим за знакови и неподписани в езиците за програмиране.

Но в симетрична троична система, както ще научим по-късно, за да представим реципрочната стойност на число (обърнато число), просто трябва да променим всички "+" на "-" и обратно. Не се нуждаем от допълнителна информация, за да посочим знака!

Малко по-късно ще видим, че това и няколко други свойства на балансирана тройна система ни дават някои много интересни изчислителни предимства. Но сега да се върнем на разговора за компютъра на Сетун.

Раждането на Сетун

В края на 50-те години на миналия век се наблюдава вълнуващ период в света на компютрите: Натаниел Рочестър и неговият екип в IBM наскоро разработиха първия масово произвеждан компютър със запомнена програма, така наречения „модерен“ компютър IBM 701. Джон Бакъс и неговият екип изобретиха FORTRAN, първият език за програмиране на високо ниво, който се използва широко. И, може би най-важното, започнаха да се развиват първите изцяло транзисторни компютри, като TX-0 и Philco Transac S-2000. Зададена е посоката за развитие на бинарни компютри, които по-късно стават доминиращи.

Но това беше в Северна Америка.

В същото време в България група математици и инженери, ръководени от Брусенцов и колегата му Сергей Соболев, разработват други компютърни системи 2 . Брусенцов и колегите му изследват много западникомпютрите и технологичния напредък и осмислят използването на транзистори за представяне на двоични данни. Но да си припомним, че това е СССР - зад желязната завеса транзисторите не са толкова лесно достъпни. А ламповите вакуумни тръби еднакво смучат и в България, и на Запад!

Затова Брусенцов разработва основен елемент от миниатюрни феритни сърцевини и полупроводникови диоди, който може да работи като регулируем токов трансформатор. Оказва се, че е ефективна основа за прилагането на троичната логика 3 . Установено е, че тези елементи, в сравнение с техните двоични аналогове, осигуряват по-висока скорост и надеждност и изискват по-малко енергия за работа.

Екип от десет души буквално построи Setun от нищото, работейки в малка стая, пълна с лабораторни маси (които те сами построиха!). Всяка сутрин членовете на екипа сглобяваха пет прости машинни елемента. Те взеха феритни сърцевини и с помощта на обикновена шевна игла навиха 52 намотки тел около всяка. След това ядрата бяха предадени на техници, които завършиха процеса на сглобяване и ги сглобиха в блокове.

Тройната логика беше реализирана чрез комбиниране на два такива феритни елемента и свързването им по такъв начин, че да моделират три стабилни състояния. Този подход беше успешен, но броят на необходимите елементи не беше намален, защото в действителност две феритни сърцевини могат потенциално да представляват два двоични бита, което в крайна сметка дава повече информация (2 ^ 2) от един троичен "трит" (3 ^ 1), За съжаление, поне консумацията на енергия беше намалена!

Setun работи с числа до 18 трита, т.е. един трит може да симулира всяко число между -387 420 489 и 387 420 489. Двоичен компютърза постигане на тази мощност са необходими поне 29 бита.

Разработването на Setun продължи две години, въпреки факта, че системата беше способна да извършва операции в рамките на десет дни от началото на тестването, а по това време това беше безпрецедентно. Общо са произведени около 50 коли. И въпреки че компютрите на Setun работеха безупречно дълги години в екстремни български климатични условия, проектът беше раздиран от противоречия.

Най-вече поради неспособността на производителя да оправдае масовото производство на това, което смятаха за евтина област на науката и „продукт на университетска фантазия“. Мисля, че е безопасно да се предположи, че тогава България просто не е била готова да разбере потенциалното значение на компютрите. В крайна сметка машините Setun бяха заменени от двоични аналогове, които можеха да обработват изчисления със същата ефективност, но цената на работа беше повече от два пъти по-висока!

Какво е специално за тройната система?

Както казах, няма нужда да съхранявате водещ бит в него или по-скоро трит, за да посочите знака. Това означава, че няма концепция за цели числа със знак или без знак - всичко е просто цяло число. По този начин изваждането се постига чрез просто обръщане на операнда и прилагане на събиране (което се изпълнява подобно на двоичните компютри). Тази последователност на даване или вземане може също да намали броя на преносите, които са необходими за операциите на умножение.

Друга полезна характеристика на балансирана троична система (или всяка симетрична бройна система, в този смисъл) е възможността за прилагане на закръгляване на числа с плаваща запетая чрез изрично извличане на цялата част от числото, което позволява опростено прилагане на делене. Това се дължи на начина, по който троичната система извежда дробната частреални числа.

Нека ви дам един прост пример. Преводът на кода на числото 0.2 е следният:

И за да напишете 0,8, трябва да започнете с + в най-значимата цифра и след това просто да обърнете дробната част (например 1 + -0,2):

Може да се види по-горе, че извличането на целочислената част от тритовете вдясно от битовата точка е еквивалентно на закръгляване: 0,2 става нула, а 0,8 става единица. Готино!

Програмиране с трикове и характеристики!

Добре, обратно към Сетун за последен път. В края на 60-те години Брусенцов разработи по-модерна машина Setun-70, която по-ясно въплъщава тройността. Въведена е концепцията за "трита", която се състои от 6 трита (приблизително 9,5 бита). Компютърът Setun-70 беше базиран на стек и следователно вместо машинни инструкции, които умишлено бяха наречени регистри за вход и изход, всички операции се извършваха на два стека - един за операнди (вход) и един за връщани стойности (изход). За да се приспособи към този дизайн, машинните инструкции бяха написани в обратна нотация в скоби (обратна полска нотация или постфиксна нотация).

DSSP не е измислен. Беше отворено. Следователно езикът няма версии, а само разширения.

Помислете за PRSP програма, която събира група от цифри:

Нека се опитаме да го разбием. В първата колона имаме командата, във втората състоянието на компютъра след изпълнение (на стека на операндите), а в третата давам обяснение:

В края на изпълнението стекът на операндите ще бъде празен, а стекът за връщане ще бъде [10] .

Разработването на балансирани троични компютри почти се превърна в бележка под линия в аналите на компютърната история. И докато изследванията върху клетките на паметта, способни ефективно да представят три различни състояния, са ограничени, някои напредъци втази област все още съществуваше.

А именно, японски изследователи в края на 90-те години описват възможността за използване на прехода на Джоузефсън за прилагане на троичната логика. Това може да се постигне чрез циркулиране на свръхпроводящи токове - положителни (по часовниковата стрелка), отрицателни (обратно на часовниковата стрелка) или нула. Те открили, че това дава на клетките с памет „високоскоростни изчислителни възможности, ниска консумация на енергия и много прост дизайн с по-малко елементи благодарение на тройната операция“.

Но не мисля, че ще виждате концепцията за балансиран троичен компютър много често в близко бъдеще. И този DSSP ще бъде пробив и за агресивните фенове на езиците за програмиране. Но вярвам, че много мъдри решения могат да се научат от миналото 5 .

  1. Зависи как конкретната машина представя числата. Допълнението на две е представяне на числа в десетична система, което прави възможно представянето от -((2^n) / 2) до ((2^n) / 2) - 1 в n бита.

2) Въпреки че компютърът Setun беше първото електронно устройство, което използва троичната система за работа, заслужава да се отбележи, че идеята за използване на такава система в изчислителните устройства е популяризирана за първи път преди повече от 100 години. През 1840 г. Томас Фаулър построява компютър изцяло от дърво и той работи с данни, използвайки троична система.

По-точно описание можете да намерите на сайта на Българския музей на компютъра.

Справочен материал за PRSP на английски не е лесно достъпен, така че ви предупреждавам, че познанията ми са ограничени и може да съдържат догадки.

Моят собствен принос може да се види на computerpionee.rs.

  • Изображението в статията е взето от уебсайта на Москвасуперкомпютърен комплекс на Московския държавен университет, на който работи една от машините Setun.
  • Hardcore conf в C++. Каним само професионалисти.