Dlaczego system binarny jest wygodny, ale nie najlepszy?

Czas czytania: 11 min.

Z dość dużym prawdopodobieństwem można założyć, że czytasz ten tekst na ekranie swojego komputera czy też telefonu, maszyn, które już od lat wspomagają ludzkość w rozwiązywaniu ich codziennych problemów, ale będące też miejscem konsumpcji treści nieco bardziej rozrywkowych. W powszechnej świadomości utarło się, że wszelkie urządzenia liczące, bo tak nazwać możemy z grubsza wszystko co wykonuje jakiekolwiek obliczenia to właśnie maszyny cyfrowe. Oznacza to, że ich działanie oparte jest na klasycznej, dwustanowej logice binarnej.

System ten, w którym każda informacja zapisana jest w postaci naprzemiennych zer i jedynek, jest całkiem wydajny, stosunkowo prosty w implementacji i co ważne znany już od wielu lat. Popularność nie oznacza jednak, że rozwiązanie to jest najlepsze w pełnym tego słowa znaczeniu, dlatego też w tym artykule opowiem wam nieco o koncepcji innego systemu, któru przynajmniej pod względem teoretycznym jawi się jako coś znacznie ciekawszego niż logika binarna, a będzie to system ternarny.

Liczby są dziwne

System zapisu liczb w Babilonie. (https://study.com/academy/lesson/basics-of-ancient-number-systems.html)

Współcześnie przyzwyczailiśmy się do systemu dziesiętnego, w którym to liczby zapisujemy właśnie za pomocą dziesięciu cyfr podstawowych. Wybór takiego właśnie rozwiązania nie jest do końca znany, ale najbardziej prawdopodobnym wydaje się fakt, że swoje podstawy bierze on z dziesięciu palców u dłoni, które posiada człowiek. Nie oznacza to jednak, ze historia nie zna przykładów innych rozwiązań. Dla przykładu Babilończycy korzystali z systemu o podstawie 60, a wszystkie cyfry podstawowe tworzyli z kombinacji znaków dziesiątek i jedności, z kolei Majowie jako podstawę swojego systemu wyznaczyli liczbę 20, stosując do tego zapis zera i jednocześnie trzymanie się odpowiednich pozycji, co charakterystycznej jest, dla dojrzałych już systemów liczbowych. Co ciekawe w starożytnym Egipcie, podobnie jak dziś stosowano system dziesiętny, ale jego zapis był niepozycyjny, oznacza to, że cyfry takie jak 1, 10, 100 i 1000 zapisywano jako osobne hieroglify, a przykładowo 23 oznaczano jako dwa symbole dziesiątki oraz trzy jedności.

System dziesiętny nie jest najdoskonalszy, liczba ta nie ma zbyt wielu dzielników, tłumaczy to też popularność tuzina, czyli liczby 12 w handlu, problemem są też ułamki, które znacznie lepiej działają w rozwiązaniu o podstawie 60. Jednak mimo wad i braku matematycznych przewag liczba dziesięć jak podstaw zwyciężyła. Można powoływać się tutaj na wspomniane dziesięć palców u dłoni, przez co system ten wydaje się najbardziej naturalny, ale istnieją też pewne zalety wynikające z optymalności tego systemu. Dziesięć podstawowych symboli wydaje się rozsądne, pod względem ich zapamiętania i długości liczb jakie będą z nich tworzone. Mnożenie i dzielenie przez potęgi dziesiątki jest proste i co więcej szacowanie wielkości na podstawie tego systemu nie wymaga zbyt wiele wysiłku. Wszystko to kryje się za popularnością i naturalnością rozwiązania dziesiętnego, który mimo, że nie jest doskonały, to jest po prostu najoptymalniejszy z tego co znamy.

Podstawa liczbowa dla systemu cyfrowego

Jedna z kobiet, które zajmowały się przygotowywaniem programów uruchamianych na komputerze ENIAC. (https://quantumzeitgeist.com/the-forgotten-women-of-eniac-how-six-programmers-pioneered-software-development/)

Rozważając współczesne systemy cyfrowe można zadać sobie pytanie – dlaczego akurat system binarny? Odpowiedź tutaj będzie podobna jak przy rozwiązaniu, gdzie podstawą jest liczba dziesięć. Prostota i intuicyjność, choć dwa stany logiczne nie są wcale najbardziej optymalnym rozwiązaniem.

Pierwotna elektronika użytkowa bazowała na rozwiązaniach analogowych. Oznacza to, że konkretne wartości fizyczne odpowiadały odpowiednim wartościom napięcia, prądu lub częstotliwości. Napięcie 5V mogło oznaczać przykładowo 20°C, a 6V – 22°C, oczywiście możemy się tutaj doszukiwać pewnego schematu, gdzie jeden stopień przypada na napięcie pół wolta, ale nie jest to w żadnym wypadku, system liczbowy w matematycznym tego słowa znaczeniu. Jest to jedynie interpretacja jednej wielkości na drugą. Choć systemy analogowe we większości działały właśnie w ten sposób, to już wówczas zauważyć możemy pewne sygnały, sugerujące późniejsze wykorzystanie systemu dwójkowego. Mowa tutaj o stanach przekaźników, których styki mogły być zwarte lub rozwarte oraz stanach pracy lamp elektronowych, które mogły pracować w dwóch skrajnych trybach – przewodzenia lub odcięcia, gdy wykorzystywano je jako elementy przełączające.

Praca, niejako w dwóch stanach pozwoliła tworzyć pierwsze cyfrowe maszyny, których jednak nie możemy nazwać binarnymi. Jednym z bardziej rozpoznawalnych komputerów w historii elektroniki jest ENIAC. Maszyna „cyfrowa” zbudowana jednak z ogromnej ilości lamp próżniowych i przekaźników, które działały w arytmetyce dziesiętnej. Nie oznacza to jednak, że komputer „rozpoznawał” te cyfry, lub przypisywał do nich konkretne wartości napięć. W rzeczywistości każda pozycja dziesiętna realizowana była za pomocą dziesięciostopniowego licznika pierścieniowego. Każdy z jego stanów wskazywał, czy przechowywana cyfra wynosi 0, 1, 2 i tak dalej. Gdy konkretne cyfry potrzebne były do obliczeń, komputer nie wiedział do końca czym one są, bazował bardziej na założeniu: czy pozycja na liczniku zerowym jest aktywna? Tak lub nie. Czy pozycja na liczniku pierwszym jest aktywna? Tak lub nie, i tak dalej dla wszystkich dziesięciu możliwych cyfr. Mimo systemu dziesiętnego, w głębi system bazował na dwóch stanach określających czy coś jest daną cyfrą czy też nie. Może się to wydawać nieco zagmatwane, ale właśnie w ten sposób pracowało wiele z pierwszych maszyn liczących. Wykorzystywały one dwustanowe elementy fizyczne do realizacji innego systemu liczbowego.

Fotografia reklamowym AT&T z 1955 roku, od lewej fototranzystor, tranzystor złączowy oraz tranzystor punktowy. (https://spectrum.ieee.org/transistor-history)

Prawdziwy przełom nastąpił w grudniu 1947 roku w amerykańskich laboratoriach Bella. Wówczas John Bardeen i Walter Brattain, pracujący w zespole kierowanym przez Williama Shockleya, zbudowali pierwszy działający tranzystor punktowy. Urządzenie nie przypominało jednak współczesnych półprzewodnikowych komponentów i składało się z niewielkiego germanowego rdzenia.

W czasie testów okazało się, że za pomocą niewielkiego sygnału doprowadzonego do jednego ze styków można sterować znacznie większym prądem płynącym przez dwa pozostałe, innymi słowy półprzewodnik potrafił wzmacniać sygnały podobnie jak lampa elektronowa. Niedługo później Shockley opracował koncepcję znacznie praktyczniejszego tranzystora złączowego i co ważne, którego produkcja była znacznie bardziej powtarzalna. Tranzystor nie był oczywiście punktem historii, w którym odkryto system binarny, ponieważ ten znano i wykorzystywano w matematyce już wcześniej, ale był to moment pojawienia się niemal idealnego elementu wykonawczego.

Półprzewodnik był mniejszy od lampy, nie wymagał rozgrzewania żarnika, zużywał mniej energii, a przede wszystkim mógł pracować jako bardzo szybki przełącznik, przewodzić lub nie przewodzić prądu. Te dwa łatwe do rozróżnienia stany można było w naturalny sposób utożsamić z zerem i jedynką i to właśnie praktyczna wygoda takiego rozwiązania, a nie matematyczna „wyjątkowość”, sprawiła, że logika binarna zaczęła dominować w kolejnych, tworzonych już w oparciu o tranzystory i elementy logiczne systemach.

Gdzie w tym wszystkim jest liczba Eulera?

Portret Leonarda Eulera. (https://www.historyhit.com/leonhard-euler-one-of-the-greatest-mathematicians-in-history/)

Dwa stany logiczne są oczywiście wygodne, ale w tym miejscu można zadać sobie też dość naturalne pytanie: co by się stało, gdyby było ich więcej? Dość intuicyjne jest, że każdy dodatkowy stan pozwala zapisać większą ilość informacji, i dzięki czemu tworzone liczby mogą być krótsze. Osiem bitów pozwala rozróżnić 256 wartości, od 0 do 255, natomiast już tylko pięć tritów, czyli cyfr trójstanowych, zatrzymuje się na 243 kombinacjach. Wystarczy więc dodać jeszcze jeden trit i otrzymujemy 729 możliwości, przy wartości o dwie jednostki krótszej niż w systemie binarnym. Na pierwszy rzut oka wygląda to znakomicie, mniej pozycji, krótsze rejestry, mniej połączeń. Problem polega jednak na tym, że każdy stan trzeba zrealizować fizycznie, co więcej rozpoznać go, jak i przechować.

Zależność między ilością stanów logicznych a ilością cyfr, dość dobrze opisuje ekonomiczne pojęcie podstawy systemu liczbowego. W dużym uproszczeniu możemy wyobrazić sobie, że koszt zapisu liczby jest iloczynem dwóch wartości: liczby dostępnych symboli oraz długości tworzonego z nich słowa. Im wyższa podstawa, tym mniej pozycji potrzeba do zapisania tej samej wartości, ale jednocześnie każda pozycja staje się bardziej skomplikowana. Jeżeli maksymalną wartość oznaczymy jako N, a podstawę systemu jako r, potrzebna liczba cyfr jest proporcjonalna do logarytmu z N o podstawie r. Jeśli potraktujemy podstawę jak wartość ciągłą i poszukamy minimum tej funkcji, wynik będzie dość zaskakujący, bo najlepszym r okazuje się liczba Eulera „e”, wynosząca około 2,718.

Wykres opisujący efektywność bazy systemu liczbowego. (https://www.researchgate.net/figure/Efficiency-of-number-bases-2-through-10_fig2_342450752)

Nie oznacza to oczywiście, że powinniśmy budować komputer mający dwa i nieco ponad siedem dziesiątych stanu logicznego, bo to byłoby dość problematyczne. Zwłaszcza, że liczba stanów fizycznego elementu musi być całkowita. Jeśli spojrzymy na wykres opisujący efektywność podstawy systemu liczbowego, dość zaskakujący może być fakt, że najbliżej matematycznego ideału znajduje się cyfra trzy. W uproszczonym modelu koszt systemu binarnego wynosi około 2,885 jednostki, trójkowego 2,730, a teoretyczne minimum dla e to 2,718. Przewaga trójki nad dwójką istnieje, choć nie jest ona olbrzymia i wynosi niewiele ponad pięć procent. Co ciekawe system czwórkowy wypada w tym zestawieniu dokładnie tak samo jak binarny, a dalsze zwiększanie liczby stanów szybko przestaje się opłacać. Dziesięć cyfr jest wygodne dla człowieka, lecz z perspektyw ekonomicznej nie ma większego sensu.

Zanim jednak ogłosimy cyfrę trzy jako idealną liczbę stanów logicznych musimy na moment się zatrzymać. Obliczenie wskazujące liczbę e zakłada, że koszt obsługi pojedynczej cyfry rośnie wprost proporcjonalnie do liczby jej stanów. W rzeczywistym układzie scalonym nie musi być to prawdą. Tranzystor z natury bardzo dobrze rozróżnia dwa skrajne tryby pracy, natomiast dodanie poziomu pośredniego wymaga kolejnych progów przełączania i mniejszej tolerancji na zakłócenia. Gdy do rachunku włączymy liczbę tranzystorów potrzebnych do budowy bramek, pobieraną energię czy czasy propagacji sygnału, niewielka przewaga trójki w zasadzie wyparowuje. Oczywiście stwierdzenie, że podstawa trzy jest najbardziej optymalna (pomijając e), jest prawdziwe, ale tylko jeśli zignorujemy problemy fizycznej implementacji, o których wspomnę jeszcze w dalszej części materiału.

Jak może wyglądać system trójstanowy?

Dość ciekawy przykład realnej implementacji systemu tranarnego. (https://medium.com/@rxseger/exploring-ternary-logic-ternary-logic-probe-b8c9876ae142)

Zastanówmy się przez chwilę jak może wyglądać system trójstanowy. W rozwiązaniu binarnym istnieją bit przyjmujące stan zera lub jedynki, natomiast trójstanowy odpowiednik tego konstruktu nazywany jest tritem. Najprostsza, niesymetryczna odmiana systemu wykorzystuje trity o wartości 0, 1 i 2, ale znacznie ciekawsze jest rozwiązanie z cyframi -1, 0 i +1. Wartość ujemną zapisuje się czasem za pomocą litery T, co też spotykane jest w opisujących ten temat źródłach, ja jednak stosować będę -1. „Ciekawość” rozwiązania z liczbą dodatnią i ujemną polega na fakcie, że zmiana znaku całej liczby wymaga jedynie zamiany każdego +1 na -1 i odwrotnie, bez osobnej cyfry znaku czy wykonywania tak zwanych uzupełnień, znanych z rozwiązań binarnych. Co więcej trzeci stan nie musi przy tym oznaczać niepewnego „może”, bo tak też często opisywany jest ten system jako prawda, fałsz i może. W arytmetyce jest to po prostu kolejna wartość cyfry.

Trit nadal musi mieć jednak jakąś fizyczną reprezentację. W układzie elektronicznym najłatwiej wyobrazić sobie trzy poziomy napięcia, przykładowo 0V, 2,5V i 5V, oznaczające kolejne wartości logiczne. Równie dobrze można wykorzystać prąd płynący w dwóch kierunkach oraz jego brak, trzy poziomy rezystancji komórki pamięci albo trzy sposoby namagnesowania elementu. Współczesne eksperymentalne obwody trójwartościowe buduje się między innymi z klasycznych tranzystorów CMOS, tranzystorów wykorzystujących nanorurki węglowe, memrystorów i innych elementów potrafiących stabilnie utrzymać więcej niż dwa stany, niezależnie w jaki sposób będą one reprezentowane.

Przykładowe bramki tranarne. (https://www.researchgate.net/figure/Ternary-Logic-Gate-Representations_fig1_261211969)

Nieco bardziej zagmatwana staje się sama logika. W świecie binarnym inwerter zamienia zero w jedynkę, a jedynkę w zero. Dla systemu trójstanowego intuicyjna wersja bramki NOT zamienia +1 w -1, -1 w +1, a zero pozostawia bez zmian. Odpowiedniki AND oraz OR można zdefiniować jako wybór mniejszej lub większej z dwóch wartości, jeżeli przyjmiemy porządek -1, 0, +1. Jest to rozwiązanie intuicyjne, ale nie jedyne. Trzeci stan może oznaczać wartość neutralną, brak wiedzy, błąd, stan wysokiej impedancji albo zwyczajną cyfrę arytmetyczną. Zależnie od tej interpretacji zmieniają się tablice prawdy, dlatego nie istnieje jedna, powszechnie obowiązująca algebra trójwartościowa będąca prostym rozszerzeniem algebry Boole’a.

Skala możliwości rośnie tutaj wyjątkowo szybko. Dla pojedynczego wejścia binarnego istnieją cztery możliwe funkcje, ponieważ każdemu z dwóch stanów możemy przypisać jeden z dwóch wyników. W logice trójwartościowej takich funkcji jest już 3 do potęgi 3, czyli 27. Bramka z dwoma wejściami binarnymi otrzymuje cztery możliwe kombinacje i może realizować 16 różnych tablic prawdy. Dwa trity tworzą natomiast dziewięć kombinacji wejściowych, a każdej z nich można przypisać jeden z trzech wyników, co daje aż 3 do potęgi 9, czyli 19 683 funkcje. Nie oznacza to jednak, że zdefiniować musimy ponad 19 tysięcy indywidualnych bramek logicznych. Większość z nich jest stała, redundantna, zbyt wyspecjalizowana albo daje się złożyć z prostszych elementów.

Ciekawie wygląda też arytmetyka. Mnożenie dwóch pojedynczych cyfr -1, 0 lub +1 nigdy nie wykracza poza ten sam zestaw, dlatego nie wytwarza przeniesienia do kolejnej pozycji. Przy dodawaniu przeniesienie pojawia się tylko w części kombinacji, przykładowo +1 dodane do +1 daje 2, które zapisujemy jako +1 na kolejnej pozycji oraz -1 na obecnej. Symetria wokół zera ułatwia również porównywanie znaków i zaokrąglanie. Z punktu widzenia programowego są to bardzo eleganckie cechy, ale układ elektroniczny musi jeszcze zrealizować odpowiednią tablicę prawdy, a tych jak już wspominałem jest bardzo wiele.

Radziecki komputer Setun

Komputer Setun rok 1959. (https://pl.wikipedia.org/wiki/Sietuń_%28komputer%29)

W połowie lat 50. XX wieku komputery były urządzeniami dużymi, kosztownymi i wymagającymi stałej opieki technicznej, tak jak wspominany na początku ENIAC. Siergiej Sobolew, matematyk związany z Moskiewskim Uniwersytetem Państwowym, zaproponował więc zbudowanie niewielkiej maszyny przeznaczonej dla uczelni, laboratoriów i biur konstrukcyjnych, która miałaby rozwiązać ten problem. Prace rozpoczęły się w 1956 roku, a kierownictwo nad małym zespołem objął Nikołaj Brusiencow.

Zamiast kopiować jedną z istniejących konstrukcji zachodnich, inżynierowie postanowili wykorzystać symetryczny system trójkowy, co ówcześnie można by porównać do znanego z anegdot lotu na słońce, ale jak też głosi jej dalsza część sowieci polecą w nocy. Swoją nazwę komputer zawdzięczał niewielkiej rzece Setuń przepływającej niedaleko uniwersytetu. Prototyp gotowy był już w grudniu 1958 roku i według relacji twórców niemal od razu zaczął poprawnie wykonywać przygotowane wcześniej programy. W kwietniu 1960 roku maszyna pomyślnie przeszła oficjalne testy i została skierowana do produkcji.

Element logiczny komputera Setun. (http://www.moscowuniversityclub.ru/home.asp?artId=12639)

Setun nie był komputerem tranzystorowym w dzisiejszym rozumieniu tego słowa. Jego logikę zbudowano z elektromagnetycznych elementów progowych, w których najważniejszą rolę pełniły niewielkie rdzenie ferrytowe i towarzyszące mi diody. Dzięki dodatnim oraz ujemnym wagom sygnałów wejściowych układ mógł w naturalny sposób realizować wartości -1, 0 i +1. Podobne rdzenie wykorzystywano w tamtych czasach w pamięciach komputerów binarnych, ale zespół Brusiencowa uczynił z nich podstawowy element obliczeniowy. Maszyna pracowała z częstotliwością 200 kHz, a niewielka pamięć operacyjna mieściła 162 słowa po 9 tritów. Rolę pamięci masowej pełnił bęben magnetyczny przechowujący, zależnie od wersji, 1944 lub 3888 takich słów. Dziewięciotritowe strony danych przenoszono między obiema pamięciami, tworząc rozwiązanie przypominające niewielką pamięć podręczną.

Architektura Setuna była dość prosta. Komputer obsługiwał 24 rozkazy i organizację jednoadresową, a dane przetwarzano w blokach złożonych z 9 lub 18 tritów. Symetryczny zapis usuwał podział na liczby ze znakiem i bez znaku, ponieważ znak wynikał z pierwszej niezerowej cyfry. Jeden z tritów rozkazu określał również, czy zawartość rejestru indeksowego należy dodać do adresu, odjąć od niego czy też pozostawić adres bez zmian. Ciekawostką jest, że dodawanie trwało około 180 mikrosekund, a mnożenie 320 mikrosekund.

Ferrytowy blok pamięci z Setuna. (http://www.moscowuniversityclub.ru/home.asp?artId=12639)

Programiści początkowo pracowali bez klasycznego asemblera, ponieważ kod maszynowy był niezwykle prosty, składający się ze wspomnianych 24 rozkazów. Z czasem powstały interpreter POLIZ wykorzystujący odwrotną notację polską, w której najpierw podaje się argumenty, a dopiero później wykonywaną operację. Jak wspominają radzieckie źródła na Setunie realizowano obliczenia z dziedziny fizyki, chemii i mechaniki, przetwarzano wyniki eksperymentów, przygotowywano krótkoterminowe prognozy pogody, sterowano procesami w zakładach oraz tworzono systemy nauczania, choć może być to w pewnej części przekaz propagandowy. Jednak co zaskakujące konstrukcja była niezwykle niezawodna. Testy wykazały odporność na zmiany napięcia zasilania i temperatury, co miało być atutem w zimniejszych częściach ZSRR.

Nie oznacza to jednak, że Setun był pozbawiony wad. Pamięć operacyjna była niewielka, obliczenia wykonywano szeregowo, a korzystanie z bębna magnetycznego mocno ograniczało szybkość większych programów. Nietypowa architektura oznaczała również niewielką bibliotekę oprogramowania i konieczność szkolenia użytkowników. Największy problem nie leżał jednak w samej arytmetyce, lecz w otoczeniu przemysłowym. Cała branża rozwijała elementy, pamięci, urządzenia peryferyjne i narzędzia dla maszyn binarnych, Setun więc pozostawał niejako samotną wyspą.

Produkcję uruchomiono w 1961 roku w Kazańskiej Fabryce Maszyn Matematycznych i kontynuowano do 1965 roku. Łącznie, wraz z prototypami i egzemplarzami wystawowymi, zbudowano około 50 komputerów. Trzydzieści trafiło do uczelni, a pozostałe do laboratoriów i zakładów przemysłowych. Zamówień miało być więcej, pojawiły się też plany produkcji w Czechosłowacji, ale skala wytwarzania nigdy nie przekroczyła kilkunastu lub nieco ponad dwudziestu sztuk rocznie.

Zespół pracujący nad komputerem Setun, na środku fotografii Nikołaj Brusiencow .(http://www.moscowuniversityclub.ru/home.asp?artId=12639)

Mimo optymistycznych perspektyw relacje zespołu projektowego wskazują, że partyjni urzędnicy niechętnie podchodzili do nie do końca planowanej i nietypowej konstrukcji. W 1965 roku projekt zakończono, mimo niezrealizowanych zamówień, co wydaje się decyzją podyktowaną stricte meandrom gospodarki centralnie planowanej.

Brusiencow nie porzucił jednak swojego pomysłu. W 1970 roku powstał Setun-70, znacznie dojrzalsza maszyna o architekturze dwóch stosów. Wprowadzono w niej sześciotritowy „tryte” (nie jestem pewien co do poprawności tego tłumaczenia), będący odpowiednikiem binarnego bajtu i mieszczący nieco ponad dziewięć bitów informacji. Tak jak w poprzedniku program składał się z ciągu operacji oraz adresów zapisywanych w odwrotnej notacji. Jednak Setun-70 nigdy nie trafił do produkcji seryjnej, ale udowodnił, że coś takiego jak komputer trójstanowy jest realne i nie jest to jedynie matematyczną ciekawostką.

Czy przyszłość rysuje się w trzech stanach?

Współczesne komputery potrzebują coraz większej mocy obliczeniowej, a producenci prześcigają się w coraz to nowszych pomysłach jak tą moc dostarczyć. Klasyczne płaskie struktury tranzystorów zastąpiono najpierw FinFETami, a następnie konstrukcjami GAAFET, w których bramka otacza kanał ze wszystkich stron. Układy dzieli się na mniejsze chiplety, łączy warstwami w trzech wymiarach, dodaje wyspecjalizowane akceleratory i zwiększa liczbę operacji wykonywanych równolegle. Coraz większe znaczenie ma też pamięć umieszczana bliżej jednostek obliczeniowych oraz algorytmy dopasowane do konkretnego typu sprzętu. Wszystkie te pomysły mają jedną ważną zaletę: zachowują zgodność z rozwiązaniami binarnym, które dominują od dziesięcioleci.

Mimo to systemy trójwartościowe mogą pojawić się nie jako następca rozwiązań binarnych, lecz jako rozwiązania wyspecjalizowane. Pamięci flash już dziś rozróżniają wiele poziomów ładunku w pojedynczej komórce, chociaż kontroler przedstawia je procesorowi jako zwyczajne bity. Memrystory i tranzystory z nanorurek węglowych pozwalają projektować elementy o kilku stabilnych progach. Również sieci neuronowe coraz częściej upraszcza się do wag -1, 0 i +1, ponieważ stan zerowy pozwala znacznie redukować ich rozmiary.

Na drodze do uniwersalnego trójstanowego chipu nadal stoi jednak fizyka. W logice binarnej niemal cały zakres napięcia zasilania można podzielić na dwa szerokie obszary, pozostawiając pomiędzy nimi bezpieczny margines. Po dodaniu trzeciego poziomu każdy przedział staje się węższy, a obwód bardziej podatny na szum, temperaturę i różnice powstające podczas produkcji. Trzeba też zbudować trójstanowe rejestry, pamięci, magistrale, przetworniki, narzędzia projektowe oraz języki potrafiące wykorzystać nową arytmetykę. Jeden trit przenosi 1,585 bita informacji, więc jeżeli jego bramka potrzebuje dwa lub trzy razy więcej tranzystorów niż odpowiednik binarny, cały teoretyczny zysk znika. Właśnie ten problem od lat sprawia, że działające projekty pozostają przede wszystkim w laboratoriach.

Przykład bramki trójstanowej, którą można zrealizować tylko na dwóch tranzystorach oraz „problematycznych” rezystorach. (https://medium.com/@rxseger/exploring-ternary-logic-building-a-simple-ternary-inverter-using-complementary-mosfets-c997f2f87c4d)

Ciekawostką trójstanowego świata jest opublikowany w marcu 2025 roku międzynarodowy wniosek patentowy WO2025060996A1 należący do Huawei, o którym mówiono już we wrześniu 2023 roku. Dokument opisuje fizyczną realizację bramek logicznych, gdzie trzy wartości reprezentowane są napięciami 0V, 0,5V i 1V, a tranzystory podzielono na grupy o niskim, średnim i wysokim napięciu progowym. W jednej z rozważanych wersji zastosowano tranzystory z nanorurek węglowych, dzięki którym można zrezygnować z energochłonnych rezystorów, będących szczególną przeszkodą, jeśli chodzi o konstrukcje tranarne. Autorzy patentu twierdzą, że takie podejście zmniejsza liczbę elementów, opóźnienia i pobór energii.

Warto jednak podejść do tego dokumentu na zimno. Patent jest jedynie opisem pomysłu, a nie prezentacją działającego rozwiązania. W chwili przygotowywania tego tekstu zgłoszenie nadal ma status oczekującego, a firma Huawei nie opublikowała od tego czasu żadnych nowych informacji. Problemy logiki trójwartościowej nadal pozostają nierozwiązane.

Czy przyszłość rzeczywiście rysuje się w trzech stanach? W najbliższych latach system binarny niemal na pewno pozostanie podstawą komputerów ogólnego przeznaczenia. Jest prosty, odporny na zakłócenia i wspierany przez olbrzymi ekosystem. Nie oznacza to jednak, że będzie jedynym rozwiązaniem. Coś w rodzaju ternarnych akceleratorów, pamięci wielostanowe lub układy wykonujące konkretne rodzaje obliczeń mogą pojawić się tuż obok klasycznych rozwiązań, podobnie jak dziś współistnieją jednostki CPU i GPU. Setun pokazał, że trzy stany potrafią rzeczywiście działać, a współczesne badania wskazują, że pomysł nadal nie został zapomniany. Jeżeli powstanie element, dla którego trzy stany logiczne będą równie naturalne, i stabilne jak obecne zero i jedynka, matematyczna przewaga tego rozwiązania może dostać swoje pięć minut.

Źródła:

  • https://mathshistory.st-andrews.ac.uk/HistTopics/
  • https://spectrum.ieee.org/transistor-history
  • https://en.wikipedia.org/wiki/Setun
  • https://www.youtube.com/watch?v=R4achTEgXEw
  • https://en.wikipedia.org/wiki/Three-valued_logic
  • https://medium.com/@rxseger/exploring-ternary-logic-tnand-and-tand-gates-a1ed9f7e6dab
  • https://habr.com/ru/articles/431726/
  • https://soylentnews.org/article.pl?sid=25/09/30/1323239
  • https://pmc.ncbi.nlm.nih.gov/articles/PMC8061388/
  • https://www.computer-museum.ru/english/setun.htm
  • https://patents.google.com/patent/WO2025060996A1/en

Jak oceniasz ten wpis blogowy?

Kliknij gwiazdkę, aby go ocenić!

Średnia ocena: 5 / 5. Liczba głosów: 1

Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.

Podziel się:

Picture of Rafał Bartoszak

Rafał Bartoszak

Współpracujący z Botlandem elektronik, który dzieli się swoją wiedzą w  internecie. Entuzjasta systemów cyfrowych, układów programowalnych i mikroelektroniki. Pasjonat historii, ze szczególnym naciskiem na wiek XX.

Zobacz więcej:

Agata Kosmala

Nowości #93

Lipiec przynosi solidną dawkę nowości w naszej ofercie – od zaawansowanych komputerów jednopłytkowych, przez precyzyjny druk 3D, aż po innowacyjne rozwiązania z zakresu automatyki i AI. Przekonaj się, jakie technologiczne perełki trafiły w tym miesiącu na półki Botland i wybierz coś dla siebie!

Masz pytanie techniczne?
Zapytaj na zaprzyjaźnionym forum o elektronice.