5. Przyszłość mikroelektroniki

5.12. Uniwersalność kontra specjalizacja

Systemy cyfrowe zbudowane są ze sprzętu i działającego na tym sprzęcie oprogramowania. Tradycyjnie każdy z tych składników tworzy się osobno. Takie podejście ma szereg zalet, przede wszystkim elastyczność i uniwersalność. To samo oprogramowanie może być (do pewnych granic) użytkowane na różnych wersjach danej platformy sprzętowej. Ten sam sprzęt może być wykorzystany w różny sposób, a nawet do zupełnie różnych celów przez wymianę oprogramowania. Ceną elastyczności i uniwersalności jest jednak niska efektywność wykorzystania zasobów sprzętu i możliwości oprogramowania. Współczesne komputery dysponujące ogromnymi i wciąż rosnącymi możliwościami obliczeniowymi, graficznymi, multimedialnymi są przez dużą część użytkowników wykorzystywane głównie do prostych prac takich jak edycja tekstów czy też obsługa poczty elektronicznej...

W zastosowaniach, w których elastyczność i uniwersalność nie jest potrzebna, bo nie przewiduje się zmian funkcji użytkowych systemu, można postawić pytanie: czy te funkcje mają być realizowane przez oprogramowanie, czy też bezpośrednio przez sprzęt? Z jednej strony, możliwe jest użycie sprzętu standardowego: mikroprocesorów, mikrokontrolerów, pamięci i układów peryferyjnych i zrealizowanie wszystkich funkcji użytkowych poprzez oprogramowanie. Z drugiej strony, możliwa jest też realizacja funkcji użytkowych wyłącznie przez sprzęt, tj. przez układy elektroniczne zaprojektowane specjalnie do realizacji tych funkcji. Pierwsze podejście jest łatwiejsze do realizacji. Drugie ma jednak istotne zalety: czysto sprzętowa realizacja zapewnia dokładne dostosowanie sprzętu do wykonywanych funkcji, co daje produkt technicznie doskonalszy i w produkcji wielkoseryjnej zwykle mniej kosztowny. Jeśli jednak funkcje użytkowe są bardzo skomplikowane, czysto sprzętowa realizacja może być zbyt złożona, a zaprojektowanie odpowiednich układów niezwykle pracochłonne i kosztowne. W każdym konkretnym przypadku można więc postawić pytanie: jaka część funkcji użytkowych systemu ma być realizowana sprzętowo, a jaka przez oprogramowanie, i jakie powinny być elementy sprzętu realizujące owo oprogramowanie?

Do niedawna odpowiedź na takie pytanie oparta była głównie na intuicji i doświadczeniu projektantów systemów. Dziś dzięki postępom metod projektowania w mikroelektronice, w szczególności metod automatycznej syntezy układów cyfrowych, a także dzięki postępom w dziedzinie inżynierii oprogramowania, rozwijana jest metodologia projektowania systemów realizowanych w sposób mieszany, sprzętowo-programowy, zwana po angielsku hardware-software codesign. Istnieje oprogramowanie pozwalające opisywać przy definiowaniu funkcji i struktury systemu obie warstwy – sprzętową i programową – łącznie, i kontynuować proces projektowania aż do otrzymania zarówno projektu układów realizujących funkcje sprzętowe, jak i niezbędnego oprogramowania. Prowadzi to do układów będących kompletnymi funkcjonalnie systemami, zwanych, jak już wiemy, „system on chip”. Takie układy mogą zawierać bloki będące specjalizowanymi mikroprocesorami przeznaczonymi do wykonywania określonych operacji, potrzebne do wykonywanych funkcji układy peryferyjne i komunikacyjne (w tym – być może – także bloki analogowe), pamięci ROM i RAM oraz wbudowane oprogramowanie (ang. „embedded software”), czyli oprogramowanie zapisane na stałe w wewnętrznej pamięci ROM. Na świecie, a także w Polsce, projektuje się coraz więcej takich układów.

Jednym z kierunków rozwoju układów i systemów mikroelektronicznych jest więc specjalizacja. Przykładem są układy przeznaczone do wykonywania obliczeń równoległych. Już jakiś czas temu zauważono, że procesory graficzne, obsługujące wyświetlanie obrazu na monitorach, doskonale się nadają do takich obliczeń, ponieważ składają się z setek, a nawet tysięcy prostych układów arytmetycznych wykonujących równocześnie niezbyt skomplikowane obliczenia dla poszczególnych pikseli obrazu. Istnieje wiele algorytmów umożliwiających zrównoleglenie obliczeń, na przykład w przypadku operacji na macierzach, gdzie operacje arytmetyczne można wykonywać równocześnie na wszystkich lub znacznej części elementów macierzy. Procesory graficzne nie są układami o uniwersalnym zastosowaniu, bo nie każdy algorytm umożliwia wykonywanie obliczeń równoległych, ale tam, gdzie można je zastosować, ogromnie przyspieszają obliczenia. Inny przykład układów o architekturze wyspecjalizowanej do konkretnych zastosowań to bardzo obecnie rozwijane układy realizujące sprzętowo algorytmy w dziedzinie zwanej sztuczną inteligencją. Z pewnością będzie w przyszłości coraz więcej podobnych przykładów.