Elastyczna logika

Proporcje między znaczeniem sprzętu a oprogramowania rzutują na model i tempo rozwoju informatyki. Logika uniwersalna, specjalizowana i rekonfigurowalna - do której z nich należy przyszłość?

Proporcje między znaczeniem sprzętu a oprogramowania rzutują na model i tempo rozwoju informatyki. Logika uniwersalna, specjalizowana i rekonfigurowalna - do której z nich należy przyszłość?

Niemal z dnia na dzień pojawiają się na rynku nowe modele i wersje mikroprocesorów. Są one coraz szybsze i wydajniejsze, ów wyścig zaś zda się nie mieć końca, rozstrzygając przecież o rozwoju informatyki, a przez to całej cywilizacji. To prawda, że mikroprocesor jest królem układów scalonych - superchipem, który wszystko potrafi. Dodajmy, że owa supremacja jest w znacznej mierze dziełem przypadku. Udzielenie odpowiedzi na pytanie, w jakim celu wymyślono mikroprocesor, nie jest łatwe. Jeden z najważniejszych wynalazków XX w. powstał bowiem jako swego rodzaju produkt uboczny.

Warto temu faktowi przyjrzeć się bliżej, gdyż wydaje się, że historia może wkrótce się powtórzyć, choć w nieco innym wariancie. Wszystko zaczyna się w roku 1968, kiedy to powstała firma o nazwie Integrated Electronics, w skrócie: Intel. Jak nazwa wskazuje, firma ta zajmowała się produkcją układów scalonych (integrated circuits). Rok później przedsiębiorstwo otrzymało (typowe w owych czasach) zlecenie na wykonanie specjalistycznych układów scalonych dla japońskiego producenta kalkulatorów Busicom. Inżynierowie Intela przyjęli wszakże nietypowy sposób wykonania zadania: zamiast konstruować kalkulator, postanowili stworzyć układ uniwersalny, który można było zaprogramować tak, aby zachowywał się jak kalkulator. Subtelna różnica, która zmieniała sprzętowy paradygmat rozwoju informatyki.

Japończycy nie byli zachwyceni pomysłem Amerykanów, ale w końcu zgodzili się na zaproponowane rozwiązanie, co więcej, zrobili jeszcze biznes na miarę sprzedaży Alaski przez Rosjan, godząc się na odsprzedaż praw do układu firmie Intel i to za jedne 50 tys. USD. W końcu 1971 r. układ nazwano "mikroprogramowalnym komputerem na chipie" (microprogrammable computer on chip), nadając mu numer roboczy 4004. Tak powstał mikroprocesor - urządzenie, które można było montować w pralkach, samolotach czy telewizorach.

Trzecia droga

"Można było" to nie znaczy, że tak się stało. Owszem, uniwersalne układy scalone można było stosować w różnych urządzeniach, ale też w różnych urządzeniach znajdziemy różne układy scalone. W gruncie rzeczy dylemat, przed którym stanęli 30 lat temu projektanci Intela, tylko pozornie został rozstrzygnięty w sposób jednoznaczny. Główną zasługą firmy było stworzenie alternatywy: układ uniwersalny czy specjalizowany. Dziś wzbogaca się ona o trzecią możliwość: układ rekonfigurowalny (reconfigurable).

Jest to idea z gatunku "od nowa po staremu". Można wyróżnić trzy sposoby "zaszywania" logiki w "żelazie": logika stała, sterowana programowo oraz rekonfigurowalna. Podział jest umowny, nazwy również. Można by oczy- wiście użyć nieco na siłę dla dwóch ostatnich grup określeń: logika programowana i programowalna, aby wywołać uśmiech zrozumienia sprzętowca, zajmującego się urządzeniami typu PLD (Programmable Logic Device). Takie urządzenia to jednak nie to samo co RL (Reconfigurable Logic) bądź nawet RC (Reconfigurable Computing), choć wszystkie wymienione pojęcia mają (nie tylko historycznie) wiele wspólnego.

Logika stała FL (Fixed Logic) znajduje swoje sprzętowe inkarnacje w trzech podstawowych rodzajach układów scalonych: ASIC (Application Specific Integrated Circuit), CSIC (Customer Specific Integrated Circuit) oraz ASSP (Application Specific Standard Product). Aby zamieszanie było możliwie peł- ne, warto dodać, że ten ostatni skrót stosuje się także do układów typu hybrydowego (Application Specific Programmable Product), będących mieszanką FL i RL. Przykłady układów FL/ASIC/CSIC to charakterystyczne dla danego producenta moduły elektroniki samochodowej czy telefonii komórkowej. Choć już w tym ostatnim przypadku trudno wyznaczyć granicę między układami dedykowanymi a uniwersalnymi: "komórki" stają się prawdziwymi komputerami, wykraczając możliwościami daleko poza pierwotną telefonię mobilną.

Kolejna grupa układów to FL/ASSP. Tutaj z kolei mamy do czynienia ze strukturami niezależnymi od producenta i "skrojonymi" pod aplikację. Przykłady: radiowe tunery czy komputerowe karty TV. Na drugim biegunie znajdują się układy rekonfigurowalne, pośrodku jest natomiast miejsce dla dużej grupy elementów, które mają sztywną strukturę sprzętową, ale są bardzo elastyczne pod względem programowym. Tu właśnie znajdziemy "króla" układów scalonych: mikroprocesor komputerowy. Ten szybko dorzu-cony ostatni przymiotnik ma uzasadnienie w przypadku procesorów specjalizowanych. Natomiast główne procesory (CPU) wszelkiego typu komputerów - od PC, przez stacje robocze, serwery i maszyny MDT (Middle Data Technology), aż po monstrualne "superliczydła" - są projektowane zgodnie z paradygmatem GPP (General Purpose Procesor).

W wolnym tłumaczeniu można by tutaj mówić o "ogólnozadaniowych" procesorach. Mnogość systemów opera- cyjnych i związanych z nimi aplikacji, jakie można na tych urządzeniach zainstalować, uzasadnia tę nazwę i zdaje się czynić zbytecznym pytanie o większą elastyczność tak "zaszywanej" logiki. W końcu kombinacja: "sztywny" sprzęt i elastyczne oprogramowanie wydaje się ideałem. Czy aby na pewno? A jeśli nie, to jak mogłaby wyglądać trzecia droga informatyki?

Sprzętowy kompilator

Najwyższą wydajność gwa- rantują układy FL. Natomiast nawet najbardziej "miękka" logika sprzętowa jest o wiele "twardsza" niż oprogramowanie. Projektant, który "nie wie", do czego ma służyć jego układ, musi pójść na kompromisy. Ich ramy są narzucone przez fizyczne ograniczenia krzemowych struktur. Zresztą, jeśli nawet owe kompromisy nie są bolesnymi dylematami na początku życiowego cyklu układu, to jego szybkie techniczne starzenie się obnaża je w bliskiej przyszłości. Nawet najnowocześniejszy procesor "do wszystkiego" po paru latach zasługuje już tylko na określenie "do niczego".

Problemów tych nie ma programista. Może po prostu zastąpić mniej optymalny fragment kodu nowym. Nie musi od razu wyrzucać całego programu. Sprzętowiec jest bez szans - stary procesor trzeba złomować i zabrać się do projektowania nowego, pamiętając, że jego cykl produkcyjny jest dłuższy niż rok! Przydałby się więc "sprzętowy kompilator", który z tych samych "klocków lego" tworzyłby w miarę potrzeb zupełnie nowe układy. Taki kompilator byłby bardziej złożony niż klasyczny.

Warto zastanowić się nad konsekwencjami takiej drogi rozwoju dla świata informatyki. Pozostańmy chwilę przy kompilatorach. Te doskonalone były przez dziesięciolecia, dzisiaj potrafią generować bardzo wyrafinowany kod. A przecież ongiś trzeba było nieraz "ręcznie" optymalizować wiele jego krytycznych fragmentów albo od razu zabrać się do programowania w językach nis- kiego poziomu. Nowy typ kompilatora miałby z kodu źród- łowego w języku wysokiego poziomu generować implementację RCS (Reconfigurable Computing System). Efektem jego pracy byłaby nie tylko nowa informacja, lecz również nowy sprzęt.

Metamateria

W informatyce nie ma wyraźnych granic między sprzętem a oprogramowaniem. Są rozkazy "zaszyte w żelazie" i funkcje sprzętowe realizowane mikroprogramowo. Pytanie o jednoznaczne granice między sprzętem a oprogramowaniem jest tak samo niecelowe, jak przeciwstawianie "ducha" "materii". Mówimy bowiem ciągle o jednym i tym samym świecie, objawiającym się jedynie w różnych wymiarach. Świat Kartezjusza był bardziej "płaski" niż nasz. Mniej w nim było wymiarów. Dziś wiemy, że sama materia (tak zwana), ale też energia, przestrzeń, czas i wreszcie informacja są tylko różnymi formami CAŁOŚCI.

Rąbanie owej metamaterii na kawałki nie na wiele się zda. I nie miejmy pretensji do zawodowych rębajłów, że niechętnie odchodzą od uproszczonych modeli rzeczywistości. Ot, taki zawód. Czy scalona kostka pamięci operacyjnej to zestaw dwustanowych przerzutników czy też wiersz Norwida, szopenowskie takty albo animacja z dinozaurami? I jedno, i drugie. Czy mózg jest zbiorem szarych komórek czy też zapachem lasu, smakiem kartofla albo "snem śnionym nieprzytomnie"? Jest tym wszystkim naraz. Informacja to organizacja materii. Kto zatem chce "siekierą" oddzielać ducha od przynależnej mu materii, niech pierwej wrzuci parę kostek lodu do szklanki z wodą i wypróbuje takiej selekcji między cieczą a ciałem stałym. Kiedy wszakże można będzie zobaczyć ów duchowo-materialny dualizm w układach rekonfigurowalnych?

Przykłady na dziś

W gruncie rzeczy nawet kostka pamięci EPROM ma cechy programowalności. W końcu gdyby było inaczej, nie nazywalibyśmy jej właśnie Erasab-le Programmable Read Only Memory. Podobnie rzecz ma się z jej siostrą EEPROM, w której dodatkowy przydomek electrically wskazuje na mechanizmy elektryczne, pozwalające na modyfikowanie zawartości pamięci, w odróżnieniu od układów naświetlanych promieniowaniem ultrafioletowym. Pamięć jednak to nie to samo co logika. Tu z pomocą przychodzą nam układy wykorzystujące konfigurowalne bloki logiki - CLB (Configurable Logic Block) - FPGA i MPGA.

W pierwszym przypadku mamy do czynienia z programowalnymi lokalnie (tzw. Field), np. u użytkownika końcowego, matrycami bramkowymi (Programmable Gate Array). Innym wariantem są moduły maskowane, czyli Mask Programmable Gate Array. Z organizacyjno-ekonomicznego punktu widzenia jest to rozwiązanie poś- rednie między ASIC a FPGA. W tym ostatnim przypadku możemy konfigurować połącze- nia logiczne (routing resources), co daje wysoką elastyczność w fazie projektowania, lecz jest bardziej kosztowne niż stały schemat wytwarzania podczas produkcji masowej.

Z kolei układy MPGA mają strukturę dwuwarstwową. Na poziomie FLL (Fix Logic Layer) mamy do czynienia z uniwersalnymi blokami logiki, nadającymi się dla wielu układów danego typu. Druga zaś warstwa (metalowa maska) ostatecznie określa funkcjonalność całej struktury i jest wytwarzana indywidualnie. Dla porządku wymieńmy jeszcze dwie odmiany FPGA: ORFPGA i 3DFPGA.

Optycznie rekonfigurowalne (Optically Reconfigurable) układy FPGA bazują na optosensorach naświetlanych la- serowo (szybkość!). Pozostaje jeszcze wariant 3D, czyli struktura topologicznie wielo- warstwowa. Idzie przy tym o optymalne wykorzystanie modułów, choćby przez eliminowanie bloków-sierotek, tj. izolowanych fragmentów lo-giki, do których nie byłoby dojścia w płaszczyźnie dwuwymiarowej z uwagi na wcześniejsze zużycie możliwych połączeń dla innych bloków.

Podajmy nazwy kilku firm operujących w obszarze RL. Liderami są tu Xilinx i Altera - ich obroty sięgają miliarda dolarów rocznie. Jest to jednak rynek dynamiczny i nie ma gwarancji, że jutro nie zagrozi im ktoś z konkurencji: Actel, Cypress, Lattice, Quicklogic, Vantis...

Nazwy te jeszcze nie są najgłośniejsze, ale przecież Intel też zaczynał skromnie. Wiele zależy od tego, jaki paradygmat sprzętowej implementacji, algorytmicznej logiki przyjmie nasza cywilizacja.

Mikroprocesor od Darwina

Szukanie nowych dróg rozwoju "nie jest rzeczą łatwą ani małą". Oto bowiem podzieliliśmy nasze rozumienie świata na nauki tzw. ścisłe i humanistyczne. Na zasadzie terminologicznych przeciwieństw moglibyśmy bardziej dosadnie stwierdzić, że mamy nauki "niedokładne" i "nieludzkie". Rzeczywistość nic sobie nie robi z naszego zaszufladkowanego sposobu jej postrzegania. Każdy praktyczny problem, przed którym stajemy, zawsze dotyczy wielu różnych dziedzin. Niepostrzeżenie nad naszymi głowami powstaje dziura ozonowa braku syntezy interdyscyplinarnej wiedzy.

Na przykład firma SAP założyła prywatny uniwersytet kształcący syntetyków mo- gących sprostać bardzo zło- żonym problemom. W tym przypadku rzecz dotyczy kompleksowych projektów informatycznych. Nie da się ich rozwiązać samą tylko biegłością w posługiwaniu się określonymi narzędziami informatycznymi. No dobrze, ale co to ma wspólnego z rekonfigurowalną logiką? Również w tym zakresie najlepszych efektów można oczekiwać wszędzie tam, gdzie stosuje się podejście wielodziedzinowe, np. biologiczno-informatyczne.

Naukowcy z Universytetu Sussex w Brighton postanowili skorzystać z algorytmów genetycznych podczas projektowania chipów RL. Algorytmy ewolucyjne, obok logiki rozmytej i sieci neuronowych, stanowią główne filary sztucznej inteligencji. Czy nadaje się ona do konstruowania binarnych struktur o cyfrowej charakterystyce, taktowanych zegarowo? Jak najbardziej, trzeba tylko wyłączyć zegar i dać dojść do głosu technologii analo- gowej. W procesie projektowania nie chodzi przede wszystkim o precyzję obliczeń, lecz o optymalizację celu. Tutaj wiele możemy się nauczyć korzystając z teorii ewolucji.

Anglicy sami nie decydują o połączeniach w modułach RL, ale definiują jedynie cel ewolucji - detale rozwiązuje informatyczna genetyka. Wiadomo jaką katastrofą dla producenta układów scalonych jest błąd projektowy. Wadliwie wytworzony procesor, w przeciwieństwie do programu, do końca pozostanie "błędny". Tymczasem moduły projektowane ewolucyjnie są z definicji o wiele bardziej odporne na błędy sprzętowe - samotworzący się przez wiele generacji program konfiguracyjny traktuje je jako mutacje, a te ewolucji nie są straszne.

Dodajmy, że punktem wyjścia klasycznego procesu tworzenia scalonej kostki jest jej opis w specjalistycznym języku. Standardowym, choć nie jedynym, przykładem może tu być VHDL (Very High Speed Integrated Circuit Hardware Description Language). Opis ten przenosi się potem na "deskę" projektową i dalej do pro- dukcji. Na ewolucję nie ma tu miejsca - jedynie na doraźne zmiany. Tymczasem algorytm genetyczny należy do klasy szukających, a nie dostarcza- jących od razu ostatecznego rozwiązania. Zrezygnowanie z determinizmu na rzecz heurystyki owocuje większą stabilnością układu.

Eksplozje bylejakości

Wydaje się, że historia rozwoju techniki zdaje się potwierdzać kopernikowskie prawo wypierania lepszego pieniądza przez gorszy. Oczywiście trudno mówić o tezauryzacji lepszych technologii, ale gorsze technologie starają się wypierać z rynku lepsze. Dotyczy to zwłaszcza technologii nowych, kiedy rynek staje przed ich wyborem. Technologia gorsza jest bowiem zazwyczaj tańsza. Zatem łatwiej stanie się standardem, szybciej znajdując większą liczbę nabywców. A nie ma standaryzacji bez popularyzacji, tj. relatywnie szerokiego kręgu odbiorców.

Początkowo nowe technologie są mało znane, dlatego owej gorszej technologii łatwiej jest ukryć swe wady. Później, kiedy prawda wychodzi na jaw, rynek jest już opanowany. Gorszą technologię w końcu się udoskonala, zaś cały proces powtarza przy kolejnych wyborach technologicznych. Tak właśnie działo się przed laty ze standardami wideo: wygrał VHS, zostawiając w pobitym polu m.in. B2000. Spektakularne sukcesy ewidentnie niebezpiecznych sterowców w latach 30. zostały zahamowane dopiero nie mniej spektakularną serią katastrof z monstrualnym pożarem "Hindenburga" na czele.

Owszem, dzisiaj wracają aerostaty, ale już w efektywniejszej, helowej wersji. Nietrudno znaleźć analogiczne przykłady w dziedzinie sprzętu czy oprogramowania informatycznego. Sama ocena technologii w sensie kwalitatywnym (jakościowym) nie zawsze jest jednoznaczna. Początek motoryzacji zdominowały auta elektryczne. Czy była to jednak technologia wówczas "lepsza" niż silnik benzynowy (jeśli pominąć względy ekologiczne)?

Rozważania te być może dobrze odnoszą się do historii rozwoju układów elektronicznych.

Sprzęt z Internetu

Wadą układów RL jest duża chłonność zasobów. Do elastycznej implementacji logiki potrzeba 10 razy więcej tranzystorów niż w tradycyjnych układach. Dawany dziecku "przycięty na miarę" samochodzik-zabawka nie ma "odpadów". Jeśli zamiast tego oferujemy prezent z uniwersalnych klocków lego, to musimy zaopatrzyć się od razu w cały ich worek - w końcu nie wiemy, jaki ma być efekt końcowy. To jasne, a zasada kompensowania się redundancji i elastyczności widoczna jest również w innych obszarach informatyki.

Rynek ma też swoją moc i egzekwuje ją bezwzględnie. Nieco inaczej jest z uzasadnieniami teoretycznymi. Przeciwnicy RL argumentują podobnie jak przeciwnicy poszukiwania rozwiązań dla dużych układów pamięciowych w latach 60. Twierdzono wówczas, że nie warto konstruować maszyn z pamięcią większą niż 64 KB, bo nikt takiej pamięci nie potrzebuje. W rzeczywistości brakowało po prostu wiedzy, w jaki sposób zarządzać programami większymi niż 64 KB!

Na koniec jeszcze gorzka obserwacja - sprzętowy paradygmat implementacji logiki niesie ze sobą nowe niebezpieczeństwa. Możliwe jest skonstruowanie sprzętowych wirusów, które mogłyby zniszczyć nie tylko rekonfigurowalne części układu, lecz również struktury z nimi bezpośrednio powiązane. Świadczą o tym wyniki badań grupy naukowców, prowadzonych pod kierunkiem Steve'a Muira na Uniwersytecie Pensylwańskim, zaprezentowane podczas ubiegłorocznej konferencji FPLA (Field Programmable Logic and Applications) w Glasgow. Badacze wskazali także na możliwość stosowania środków zaradczych:

sprzętowe programy antywirusowe, analogiczne do klasycznych

szyfrowanie danych konfiguracyjnych

sprzętowa integracja kontroli autoryzacji modyfikacji układów

mechanizmy UCI: identyfikacji układów (Unique Chip Identification).

W tym ostatnim przypadku jednoznaczna identyfikacja chipów powodowałaby, że określone dane konfiguracyjne można by instalować tylko w przeznaczonym dla nich układzie sprzętowym, w szczególności na indywidualnie wyspecyfikowanym chipie.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200