4. Układy dużej mocy i problemy cieplne w układach scalonych

4.3. Sposoby ograniczania poboru mocy

Omówimy najpierw metody obniżania mocy przełączania. Przypomnijmy, że moc przełączania bramek statycznych jest proporcjonalna do (część III, wzór 2-10):

  • pojemności obciążającej bramki Cl,
  • kwadratu napięcia zasilania V_{DD}^2,
  • liczby zmian stanu logicznego w jednostce czasu f.

Z tej zależności wynikają wszystkie sposoby obniżania poboru mocy przełączania.

Redukcja pojemności w układzie nie tylko zmniejsza pobór mocy, ale skraca czasy propagacji sygnału w bramkach, umożliwiając zwiększenie szybkości działania układu. Projektant układu ma wpływ na te pojemności projektując topografię układu. Reguły są proste: 

  • minimalna długość bramek tranzystorów, jaką dopuszcza dana technologia (szerokość wynika z założeń dotyczących charakterystyk i parametrów bramek, patrz część III, punkt 2.2.4),
  • jak najmniejsze powierzchnie obszarów źródeł i drenów tranzystorów,
  • jak najkrótsze połączenia.

Projektant może oczywiście starać się postępować według tych reguł tylko wtedy, gdy projektuje układ lub jego fragment w stylu full custom. Taki sposób projektowania w dziedzinie układów cyfrowych jest jednak rzadkością. Przy automatycznej syntezie topografii w stylu komórek standardowych profesjonalne systemy projektowania pozwalają projektantowi w pewnym stopniu wpływać tylko na rozmieszczenie komórek i długość połączeń. Ingerencja projektanta w proces projektowania ma w praktyce sens tylko wtedy, gdy istnieje możliwość znaczącego skrócenia połączeń szczególnie długich. Ma to jednak w większym stopniu wpływ na szybkość działania układu niż na pobór mocy. Szybkość działania układu może być bowiem ograniczona przez czas propagacji sygnału nawet w jednym tylko bardzo długim połączeniu, podczas gdy całkowity pobór mocy zależy od sumy wszystkich pojemności w układzie. W nowszych technologiach CMOS pojemności połączeń są również redukowane na drodze technologicznej, przez stosowanie warstw dielektrycznych o przenikalności dielektrycznej niższej niż przenikalność dielektryczna SiO2. Chodzi tu oczywiście o warstwy dielektryczne pomiędzy kolejnymi poziomami połączeń, a nie o dielektryk bramkowy tranzystorów. Ten ostatni bowiem powinien mieć, jak już wiemy, przenikalność dielektryczną możliwie jak największą.

Redukcja napięcia zasilania bardzo skutecznie zmniejsza pobór mocy. Równocześnie jednak maleje szybkość działania układu, bowiem rosną czasy propagacji sygnałów w bramkach (część III, punkt 2.2.2). Nawet jeśli szybkość działania układu nie ma w konkretnym zastosowaniu większego znaczenia, obniżanie napięcia zasilania ma swoje granice. Po pierwsze, układy o niższym napięciu zasilania mają niższy poziom jedynki logicznej, a więc i mniejszą odporność na zakłócenia (patrz punkt 2.2.1 w części III). Po drugie, obniżanie napięcia zasilania zmusza do obniżania napięć progowych tranzystorów. Aby bramki statyczne działały prawidłowo i dostatecznie szybko, suma wartości bezwzględnych napięć progowych tranzystorów nMOS i pMOS powinna być mniejsza od wartości napięcia zasilania. Niskie napięcia progowe oznaczają jednak, jak już wiemy, znacznie zwiększony pobór mocy statycznej. W praktyce stosowane są rozwiązania polegające na tym, że w dużych układach są bloki zasilane napięciami o różnych wartościach - niższej dla bloków nie mających krytycznego wpływu na szybkość działania układu, wyższej dla pozostałych. Niektórzy producenci dostarczają kilka wersji bibliotek komórek standardowych dostosowanych do różnych napięć zasilania. Jest to możliwe dlatego, że w wielu współczesnych technologiach istnieje możliwość produkowania w jednym układzie tranzystorów o kilku różnych grubościach tlenku bramkowego i wartościach napięć progowych. Stosowanie w tym samym układzie więcej niż jednego napięcia zasilania komplikuje jednak projekt, bowiem różne wartości napięcia zasilania oznaczają też różne poziomy jedynki logicznej. Przesyłanie danych między blokami zasilanymi różnymi napięciami wymaga więc dodatkowych, pomocniczych układów zmieniających odpowiednio poziom jedynki logicznej.

Redukcja liczby zmian stanów logicznych w jednostce czasu jest możliwa do osiągnięcia na kilka sposobów. Najprostszym jest oczywiście obniżenie częstotliwości zegara, co jednak proporcjonalnie obniża szybkość działania układu. Jednym z rozwiązań kompromisowych jest sterowanie częstotliwością zegara uzależnioną od złożoności i priorytetu zadania wykonywanego przez układ. Na takie rozwiązania pozwala konstrukcja niektórych mikroprocesorów, przy czym sterowanie częstotliwością zegara wykonywane jest zwykle przez oprogramowanie. Innym oczywistym sposobem jest „usypianie” bloków w układzie, które w danej chwili nie wykonują żadnej funkcji. Można to osiągnąć przez wyłączenie zegara (co powoduje zmniejszenie do zera mocy przełączania, w tym również mocy związanej z sygnałem zegara), a także przez wyłączenie zasilania bloku (co powoduje zmniejszenie do zera także mocy statycznej). Nie w każdym przypadku jest to jednak możliwe. Gdy blok zbudowany jest wyłącznie z bramek statycznych, zatrzymanie zegara w bloku w danej chwili nieaktywnym (czyli gdy na wejściach bloku stany logiczne nie zmieniają się) powoduje, że wszystkie stany logiczne pozostają bez zmian aż do chwili „obudzenia” bloku. Natomiast w przypadku bloku zbudowanego z bramek dynamicznych po krótkim czasie braku aktywności i braku sygnału zegarowego wszystkie stany logiczne zostają „zapomniane”. Podobnie jest w przypadku bloku z bramek statycznych, jeśli wyłączone zostało jego zasilanie. Dlatego bloków statycznych nie można „usypiać” przez wyłączenie zasilania, a bloków dynamicznych także przez wyłączenie zegara, jeśli istotne jest, aby w czasie „uśpienia” blok zachowywał swoje stany logiczne. Niemniej, zasada „usypiania” bloków nieaktywnych jest obecnie często stosowana w dużych układach. Istnieją konstrukcje mikroprocesorów zbudowanych wyłącznie z bramek statycznych. W takim mikroprocesorze częstotliwość zegara może być dowolnie niska, a nawet okresowo równa zeru. Mikroprocesor jest wówczas „uśpiony” w całości, nie pracuje, ale podejmuje działanie od stanu, w którym został „uśpiony”, gdy zegar zostaje ponownie włączony. Najbardziej znane konstrukcje tego rodzaju to energooszczędne mikroprocesory z rodziny ARM, powszechnie stosowane w smartfonach, tabletach i innych urządzeniach przenośnych wymagających minimalnego poboru mocy.

Znaczne oszczędności mocy przełączania można by osiągnąć eliminując całkowicie zegar. Zegara nie wymagają układy asynchroniczne. Idea układu asynchronicznego polega na tym, że każdy blok logiczny zaczyna wykonywać operację na danych wejściowych, gdy otrzymuje sygnał startu, a po zakończeniu operacji, gdy wyniki pojawiają się na wyjściach, układ wysyła sygnał startu do innych bloków, dla których te wyniki są danymi wejściowymi. Budowa takich układów jest teoretycznie możliwa; zauważmy, że bloki kombinacyjne zbudowane z bramek statycznych nie wymagają zegara do prawidłowego działania. Budowa dużych układów asynchronicznych zawierających obok bloków kombinacyjnych także elementy pamięciowe (przerzutniki, rejestry, bloki pamięci) związana jest jednak z koniecznością pokonania szeregu trudnych problemów. Zasadniczym problemem jest sposób generacji sygnałów startu – w jaki sposób ustalić, że wyniki na wyjściu konkretnego bloku są gotowe, nie będą już ulegać zmianom i mogą być użyte przez inne bloki? Zaproponowano różne rozwiązania tego problemu, ale wprowadzają one do układów wiele komplikacji. Narzędzia komputerowego wspomagania projektowania układów asynchronicznych dopiero powstają. Toteż układy asynchroniczne nie weszły, jak dotąd, do praktyki przemysłowej. Istnieją natomiast układy globalnie asynchroniczne, lokalnie synchroniczne. Są to układy typu „system on chip”, w których jest kilka odrębnych bloków cyfrowych, np. rdzeni mikroprocesorów, które wewnątrz są układami synchronicznymi, ale wymieniają dane między sobą asynchronicznie, przesyłając te dane przez wewnętrzną sieć działającą na podobnych zasadach, jak sieci zewnętrzne, na przykład sieć Ethernet. Mają swoje protokoły transmisji, sygnały startu i końca transmisji itp. Takie układy bywają nazywane „network on chip”. Można tu osiągnąć oszczędności energii, jeśli nie wszystkie bloki muszą pracować równocześnie, a poza tym w takich układach unika się problemu synchronizacji bardzo wielkiego układu przy pomocy pojedynczego zegara (patrz punkt 3.2.6 w części III).

Istnieją też układowe i systemowe sposoby redukcji mocy statycznej. Polegają one na redukcji sumy prądów podprogowych, które płyną w stanie ustalonym przez tranzystory znajdujące się w stanie wyłączenia. Najbardziej oczywistym sposobem jest wspomniane wcześniej „usypianie” przez wyłączanie zasilania bloków, które w danym momencie są nieaktywne. Nie jest to jednak dopuszczalne, jeśli blok w okresie „uśpienia” ma zachować swój stan logiczny. Innym wykorzystywanym w praktyce sposobem jest zmniejszanie prądów podprogowych przez zwiększanie wartości napięć progowych tranzystorów (wzór 4-1). Jak wspomniano wyżej, w wielu współczesnych technologiach CMOS możliwe jest wytworzenie w tym samym układzie tranzystorów o różnych wartościach napięć progowych i w związku z tym wielu producentów dostarcza kilka wersji bibliotek komórek standardowych. Komórki zbudowane z tranzystorów o wyższych napięciach progowych są stosowane w tych częściach układu, które nie wymagają dużej szybkości działania. Komórki zbudowane z tranzystorów o niższych wartościach napięć progowych, które zapewniają krótsze czasy propagacji sygnału, używane są wyłącznie w blokach, których szybkość jest krytyczna z punktu widzenia szybkości działania całego układu. 

Istnieje też inny sposób obniżania wartości prądów podprogowych, polegający na wykorzystaniu zależności napięcia progowego tranzystora od napięcia polaryzacji podłoża (napięcie V_{BS}, wzór 3-6 w części I). Do wysp (lub podłoża), na których znajdują się tranzystory, doprowadza się napięcie polaryzujące zaporowo źródła tranzystorów względem wyspy (lub podłoża). Napięcie takie powoduje wzrost napięcia progowego, a więc zmniejszenie wartości prądów podprogowych (kosztem zmniejszenia szybkości działania układu). Ten sposób umożliwia sterowanie statycznym poborem mocy i szybkością działania układu w pracującym układzie (lub jakimś jego bloku). Wadą jest komplikacja układu - potrzebne jest źródło napięciowe generujące dodatkowe napięcie polaryzujące oraz układ sterujący wartością tego napięcia. Ten sposób jest dość mało skuteczny w przypadku tradycyjnych technologii CMOS, natomiast może być skutecznie wykorzystany w układach wytwarzanych w nowoczesnej, jednej z przyszłościowych, technologii CMOS FDSOI (patrz część I, punkt 4.2.3). Wrócimy dalej do omówienia tej technologii.

We współczesnych systemach projektowania istnieją specjalne programy ułatwiające automatyzację projektowania z zastosowaniem wymienionych wyżej sposobów redukcji poboru mocy przełączania i mocy statycznej.