Komputerowo wspomagana migracja analogowych obwodów
scalonych do nanometrowej technologii CMOS
Mariusz Naumowicz
Katedra Inżynierii Komputerowej Politechnika Poznańska
Rozprawa doktorska
2015
Pracę dedykuję mojej ukochanej żonie Honoracie, moim rodzicom oraz
świętej pamięci dziadkom.
Podziękowania
Serdeczne dziękuję profesorowi Andrzejowi Handkiewiczowi za inspirację,
okazaną życzliwość oraz wsparcie przy realizacji rozprawy doktorskiej.
Streszczenie
W pracy przedstawiono autorskie rozwiązanie dotyczące zastosowania al- gorytmu Hooke’a-Jeeves’a wspomagającego proces migracji technologicz- nej analogowych obwodów CMOS w systemach wielordzeniowych i wielo- procesorowych. Algorytm zmodyfikowano pod kątem przetwarzania rów- noległego w celu przyspieszenia procesu migracji technologicznej. Propo- nowaną metodę skonfrontowano z popularnymi w wielu dziedzinach Al- gorytmami Genetycznymi z wykorzystaniem przygotowanych projektów analogowych obwodów. Oba algorytmy zaimplementowano w postaci pro- gramów komputerowych oraz połączono z komercyjnymi narzędziami two- rząc system komputerowy wspomagający migrację analogowych obwodów scalonych do nanometrowej technologii CMOS. Porównanie algorytmu Hooke’a-Jeeves’a, opublikowanego w 1961 roku, ze znacznie nowszym po- dejściem jakim jest programowanie genetyczne, wskazuje na jego konku- rencyjność w przedstawionych w pracy zastosowaniach. W celu zapew- nienia najwyższej jakości wyników algorytm Hooke’a-Jeeves’a połączono z wyspecjalizowanym narzędziem do symulacji obwodów elektronicznych HSPICE. Wszystkie narzędzia zintegrowano przy użyciu autorskiego pro- gramu nanoStudio. Program wspomaga konwersję projektów opisanych w języku SPICE, zarządza procesami technologicznymi oraz zarządza proce- sem migracji technologicznej obwodów scalonych CMOS. Działanie narzę- dzia nanoStudio zweryfikowano migracją czterech analogowych układów CMOS pracujących w trybie prądowym o różnym stopniu zaawansowania:
zwierciadło prądowe, konwerter przestrzeni barw, integrator pracujący w
trybie przełączanych prądów(SI), para filtrów piątego rzędu. Otrzymane
wyniki potwierdziły skuteczność i wydajność algorytmu Hooke’a-Jeeves’a
w procesie migracji technologicznej analogowych układów CMOS.
Abstract
The paper presents an original solution for the application of Hooke-Jeeves
algorithm supporting the process of technology migration of the CMOS
analog circuits in the multicore and multiprocessor systems. The algori-
thm was modified for parallel processing to speed up the migration pro-
cess. The proposed method was confronted with, popular in many areas,
genetic algorithms by using dedicated analog circuit designs. Both algori-
thms were implemented in the computer programs and combined with the
commercial tools to create a computer system assisting the migration of
analog integrated circuits to nanometer CMOS technology. Comparison
of Hooke-Jeeves algorithm, published in 1961, with much newer method
which is the genetic programming, shows its competitiveness in appli-
cations presented in the paper. In order to ensure the highest quality
results, Hooke-Jeeves algorithm was combined with a specialized tool na-
med HSPICE for electronic circuit simulation. All tools are integrated in
the original program named nanoStudio. The program supports conver-
sion of projects described in SPICE, manages the technology processes,
and manages the technology migration process of the integrated CMOS
circuits. The migration tools of nanoStudio were verified for four analog
CMOS circuits working in the current mode of varying degrees of advan-
cement: a current mirror, a color space converter, an integrator working
in switched-current mode(SI), and a 5th-order filter pair. The results con-
firmed the effectiveness and efficiency of the Hooke-Jeeves algorithm in
the process of technology migration of analog CMOS circuits.
Spis treści
Spis rysunków v
Lista symboli viii
Wstęp ix
1 Nanometrowe procesy technologiczne CMOS 1
1.1 Rozwój technologii CMOS . . . . 1
1.2 Nanometrowe procesy technologiczne CMOS . . . . 3
1.3 Zjawiska fizyczne towarzyszące procesom produkcyjnym i produkowa- nym układom . . . . 5
1.4 Podsumowanie . . . . 6
2 Systemy wielordzeniowe i wieloprocesorowe 8 2.1 Programowanie systemów wieloprocesorowych . . . . 8
2.2 Modele systemów równoległych . . . . 9
2.2.1 Programowanie systemów o architekturze MIMD . . . . 11
2.2.1.1 OpenMP . . . . 11
2.2.1.2 PThreads . . . . 13
2.2.1.3 MPI . . . . 13
2.3 Podsumowanie . . . . 14
3 Algorytm optymalizacji Hooke’a-Jeeves’a 15 3.1 Modyfikacje algorytmu . . . . 15
3.2 Opis algorytmu . . . . 16
3.3 Zrównoleglenie . . . . 20
4 Algorytmy Genetyczne 23
4.1 Algorytmy Genetyczne . . . . 23
4.2 Reprezentacja zmiennoprzecinkowa . . . . 23
4.3 Struktura Algorytmów Genetycznych . . . . 24
4.3.1 Inicjalizacja populacji . . . . 24
4.3.2 Kryterium zakończenia . . . . 24
4.3.3 Ewaluacja populacji . . . . 25
4.3.4 Selekcja . . . . 25
4.3.5 Krzyżowanie . . . . 25
4.3.6 Mutacja . . . . 25
4.4 Modyfikacje algorytmu . . . . 26
4.5 Zrównoleglenie . . . . 27
4.6 Podsumowanie . . . . 28
5 Przegląd narzędzi wspomagających migrację technologiczną analo- gowych układów CMOS 29 5.1 Wprowadzenie . . . . 29
5.2 Rozwiązania akademickie . . . . 30
5.2.1 Algorytmy ewolucyjne . . . . 30
5.2.2 Metody analityczne . . . . 31
5.3 Rozwiązania komercyjne . . . . 32
5.3.1 IBM Device Level Analog Circuit Migration Tool . . . . 32
5.3.2 SiClone . . . . 33
5.3.3 OSIRIS . . . . 33
5.4 Podsumowanie . . . . 33
6 Realizacja systemu 35 6.1 Wprowadzenie . . . . 35
6.2 Wymagania projektowe . . . . 36
6.3 Środowisko HSPICE . . . . 38
6.3.1 Cechy środowiska HSPICE . . . . 38
6.3.2 Parametry i wbudowane funkcje . . . . 39
6.3.3 Metody numeryczne optymalizacji obwodów w programie HSPICE 39 6.4 Migracja z wykorzystaniem Algorytmów Genetycznych . . . . 40
6.5 Migracja z wykorzystaniem metody Hooke’a-Jeeves’a . . . . 41
6.6 Ograniczenia parametrów . . . . 41
6.7 Środowisko nanoStudio . . . . 42
6.8 Migracja na poziomie layoutu . . . . 43
6.9 Podsumowanie . . . . 46
7 Przykładowe projekty 47 7.1 Wprowadzenie . . . . 47
7.2 Zwierciadło prądowe . . . . 47
7.3 Analogowy konwerter przestrzeni barw z RGB do YCrCb . . . . 49
7.4 Integrator pracujący w trybie przełączanych prądów (SI) . . . . 52
7.5 Para filtrów pracująca w trybie przełączanych prądów(SI) . . . . 53
7.6 Podsumowanie . . . . 54
8 Weryfikacja symulacyjna 56 8.1 Wprowadzenie . . . . 56
8.2 Środowisko testowe . . . . 56
8.3 Procesy technologiczne . . . . 57
8.4 Funkcje celu . . . . 57
8.4.1 Zwierciadło prądowe . . . . 57
8.4.2 Analogowy konwerter przestrzeni kolorów z RGB do YCrCb . 58 8.4.3 Integrator pracujący w trybie przełączanych prądów (SI) . . . 58
8.4.4 Para filtrów pracująca w trybie przełączanych prądów (SI) . . 59
8.5 Wyniki migracji . . . . 59
8.6 Podsumowanie . . . . 67
9 Podsumowanie 68 10 Conclusion 70 A Opis środowiska nanoStudio 72 A.1 Tworzenie nowego projektu . . . . 72
A.2 Konwertowanie projektu . . . . 73
A.3 Wsparcie dla analizy PVT . . . . 74
A.4 Definiowanie procesu technologicznego . . . . 75
A.5 Moduły optymalizacji . . . . 76
B Opis środowiska do migracji postlayout 78
C Obwody opisane w języku SPICE 84
C.1 Zwierciadło prądowe . . . . 84
C.2 Analogowy konwerter przestrzeni barw z RGB do YCrCb . . . . 85
C.3 Integrator pracujący w trybie przełączanych prądów(SI) . . . . 87
C.4 Para filtrów pracująca w trybie przełączanych prądów(SI) . . . . 92
Bibliografia 98
Spis rysunków
1.1 Ewolucja procesów technologicznych CMOS . . . . 2
1.2 Wzrost liczby parametrów nowych modeli matematycznych tranzysto- rów w czasie . . . . 4
1.3 Porównanie dokładności wykonania układu bez kontroli rozmiarów kry- tycznych (lewy) oraz z kontrolą (prawy) [1] . . . . 6
1.4 Różnica między geometrią obwodu, a probabilistycznie wyznaczonymi granicami uwzględniającymi niepożądane efekty [1] . . . . 7
2.1 Porównanie wydajności przykładowych procesorów wykonujących za- danie testowe w jednym wątku oraz wielu wątkach w latach 2009-2014 9 2.2 Systemy przetwarzania równoległego . . . . 12
3.1 Możliwe wartości zmiennej v
iw następnej iteracji . . . . 20
3.2 Optymalna liczba jednocześnie przetwarzanych zmiennych w zależności od ilości dostępnych rdzeni w procesorze [2] . . . . 22
4.1 Chromosomy wybrane do krzyżowania . . . . 25
4.2 Krzyżowanie chromosomów . . . . 26
4.3 Chromosomy po mutacji . . . . 26
6.1 Ogólny schemat procesu migracji z wykorzystaniem algorytmu opty- malizacji . . . . 36
6.2 Główne okno aplikacji nanoStudio . . . . 43
6.3 Ogólny schemat procesu migracji . . . . 44
6.4 Layout analogowego konwertera przestrzeni barw z RGB do YCrCb . 46
7.1 Schemat zwierciadła prądowego . . . . 48
7.4 Schemat tranzystorowy konwertera przestrzeni barw z RGB do YCrCb pracującego w trybie prądowym . . . . 50 7.5 Przykładowa odpowiedź konwertera w dziedzinie czasu . . . . 51 7.6 Zbalansowana struktura integratora biliniowego . . . . 52 7.7 Przykładowa odpowiedź integratora w dziedzinie czasu dla k =
12. . . 53 7.8 Para filtrów 5-go rzędu w postaci żyratorowo-pojemnościowej . . . . . 54 7.9 Przykładowa odpowiedź pary filtrów piątego rzędu w dziedzinie czasu 55 7.10 Wartość wzmocnienia otrzymana na podstawie symulacji (+) w porów-
naniu z idealnymi wartościami (linia ciągła) dla pary filtrów piątego rzędu . . . . 55 8.1 Zmiana wartości funkcji celu w projekcie zwierciadła prądowego dla
kolejnych generacji(iteracji) Algorytmów Genetycznych oraz algorytmu Hooke’a-Jeeves’a . . . . 60 8.2 Zmiana wartości funkcji celu w projekcie integratora dla kolejnych ge-
neracji(iteracji) Algorytmów Genetycznych oraz algorytmu Hooke’a- Jeeves’a . . . . 61 8.3 Zmiana wartości funkcji celu w projekcie pary filtrów dla kolejnych
generacji(iteracji) Algorytmów Genetycznych oraz algorytmu Hooke’a- Jeeves’a . . . . 61 8.4 Przykładowy sygnał prądowy wejściowy i sygnały wyjściowe w ukła-
dzie zwierciadła prądowego przed migracją(proces 180nm) oraz po mi- gracji do różnych procesów technologicznych CMOS(procesy 90nm i 65nm) α
1=0.598 α
2=1.0 α
3=-0.338, otrzymane wartości powierzchni układu dla wymienionych procesów technologicznych wynoszą:103um
2, 58um
2, 48um
2. . . . 62 8.5 Przykładowe sygnały prądowe wejściowe i wyjściowe w układzie analo-
gowego konwertera przestrzeni kolorów z RGB do YCrCb przed migra-
cją(proces 180nm) oraz po migracji do różnych procesów technologicz-
nych CMOS(procesy 90nm i 65nm), otrzymane wartości powierzchni
układu dla wymienionych procesów technologicznych wynoszą: 231um
2,
79um
2, 76um
2. . . . 63
8.6 Przykładowy sygnał prądowy wejściowy i wyjściowy w układzie inte- gratora SI przed migracją(proces 180nm) oraz po migracji do różnych procesów technologicznych CMOS(procesy 90nm i 65nm), otrzymane wartości powierzchni układu dla wymienionych procesów technologicz-
nych wynoszą: 156um
2, 87um
2, 53um
2. . . . 64
8.7 Przykładowe sygnały prądowe wyjściowe w układzie pary filtrów SI przed migracją(proces 180nm) oraz po migracji do różnych procesów technologicznych CMOS(procesy 90nm i 65nm), otrzymane wartości powierzchni układu dla wymienionych procesów technologicznych wy- noszą: 859um
2, 747um
2, 758um
2. . . . 65
8.8 Wartości poboru mocy przez układy przed migracją(proces 180nm) oraz po migracji technologicznej CMOS(procesy 90nm i 65nm) . . . . 66
A.1 Główne okno aplikacji nanoStudio . . . . 72
A.2 Tworzenie nowego projektu . . . . 73
A.3 Okno konwersji . . . . 73
A.4 Zakładka definicji scenariuszy dla analizy PVT . . . . 75
A.5 Okno konfiguracji procesu technologicznego CMOS . . . . 76
A.6 Parametry algorytmów . . . . 77
B.1 Struktura katalogów systemu do migracji postlayout . . . . 78
Lista symboli
L
ndługość kanału n-tego tranzystora W
nszerokość kanału n-tego tranzystora
MIMD multiple-instruction stream-multiple-data stream, architektura komputerowa w której wiele programów wykonuje instrukcje na własnym strumieniu danych MISD multiple-instruction stream-single-data stream, architektura komputerowa w której wiele programów równolegle wykonuje instrukcje na jednym strumieniu danych
MPI Message Passing Interface, standard przesyłania komunikatów między proce- sami programów równoległych działających na jednym lub więcej komputerach OpenMP Open Multi-Processing, wieloplatformowy interfejs umożliwiający tworze-
nie aplikacji dla systemów wieloprocesorowych z pamięcią współdzieloną SI technika przełączanych prądów
SIMD single-instruction stream-multiple-data stream, architektura komputerowa w której wiele strumieni danych przetwarzanych przez jeden program
SISD single-instruction stream-single-data stream, architektura komputerowa w któ- rej jeden program wykonuje instrukcje na jednym strumieniu danych
TSMC Taiwan Semiconductor Manufaturing Company Ltd., firma specjalizująca się
w produkcji układów scalonych
Wstęp
Rozwój nanometrowych procesów technologicznych CMOS w ostatnich latach przyniósł wiele zmian na rynku elektronicznym. Miniaturyzacja związana z nowymi procesami technologicznymi pozwoliła na znacznie szerszy rozwój urządzeń mobil- nych, dzięki czemu nowoczesne urządzenia mogą dłużej pracować na baterii bez ze- wnętrznych źródeł zasilania. W związku z wieloma zastosowaniami układów CMOS oraz ich rozwojem rośnie zapotrzebowanie na różnego rodzaju makrokomórki w pro- dukowanych układach scalonych. Złożoność projektowania takich obwodów w nowych technologiach ogranicza zdolność produkcyjną SoC. W związku z tym poszukuje się skutecznych metod, które sprostają wymaganiom związanym z czasem wprowadzania produktu na rynek.
W celu przyspieszenia wprowadzania nowych urządzeń na rynek stosuje się już sprawdzone rozwiązania wykorzystywane w starszych procesach technologicznych CMOS.
Aby wykorzystać znane i sprawdzone rozwiązania wykorzystuje się do tego migrację technologiczną. Zadaniem migracji technologicznej jest przeniesienie topologii obwodu z jednej technologii do innej polegające na szybkim wyznaczaniu nowych wymiarów tranzystorów z zachowaniem wartości głównych współczynników jakości.
Szczególną rolę odgrywają tutaj narzędzia do automatycznej migracji układów analogowych, które pozwalają na skrócenie czasu projektowania i testowania ukła- dów analogowych w nanometrowych procesach technologicznych CMOS, niestety w odróżnieniu od cyfrowych układów CMOS, gdzie istnieje szeroki wybór metod i narzę- dzi wspomagających proces migracji, tak metody i narzędzia do migracji analogowych obwodów scalonych CMOS są dość ograniczone.
W niniejszej pracy zaproponowano metodę pozwalającą na migrację dowolnych
układów analogowych CMOS do dowolnego nanometrowego procesu technologicz-
nego. Przedstawione algorytmy pozwalają na migrację technologiczną dowolnych ob-
wodów opisanych przy użyciu języka SPICE. W tym celu wykorzystano algorytmy
Hooke’a-Jeeves’a oraz Algorytmy Genetyczne. Aby wykorzystać w pełni nowocze-
sne rozwiązania komputerowe zastosowano przetwarzanie równoległe w celu przyspie-
szenia wydajności procesu migracji. Ponadto wykorzystano narzędzie symulacyjne
HSPICE zapewniające wysoką jakość otrzymanych wyników. Całość integruje narzę-
dzie nanoStudio, program okienkowy działający pod systemem Windows, wspomaga-
proces migracji, zarządzanie procesami technologicznymi, uruchamianie migracji oraz informowanie o jej przebiegu. Proponowane rozwiązanie zweryfikowano korzystając z przygotowanych projektów układów analogowych pracujących w trybie prądowym o różnym stopniu zaawansowania, wykazując konkurencyjność algorytmu Hooke’a- Jeeves’a względem popularnego programowania genetycznego.
Cel rozprawy:
Celem pracy jest opracowanie metod, algorytmów oraz narzędzi komputerowych wspomagających migrację analogowych obwodów scalonych do nanometrowych tech- nologi CMOS.
Główne tezy rozprawy:
• zastosowanie systemów wielordzeniowych i systemów wieloprocesorowych skróci czas migracji
• integracja algorytmów z profesjonalnym narzędziami pozwoli na otrzymanie wy- sokiej jakości wyników
• zastosowanie proponowanych rozwiązań zmniejszy czas potrzebny na migrację technologiczną analogowych obwodów scalonych CMOS
Praca została podzielona następująco.
W rozdziale pierwszym przedstawiono ogólny rozwój procesów technologicznych CMOS oraz scharakteryzowano wybrane nanometrowe procesy technologiczne CMOS oraz wybrane zjawiska fizyczne towarzyszące procesom produkcji.
Rozdział drugi przedstawia krótką charakterystykę systemów wielordzeniowych oraz wieloprocesorowych w postaci modeli systemów równoległych. W rozdziale przed- stawiono również wybrane metody programowania takich systemów.
W rozdziale trzecim przedstawiono algorytm optymalizacji bezgradientowej me- todą Hooke’a-Jeeves’a oraz jego modyfikacje wprowadzone na potrzeby pracy badaw- czej.
W rozdziale czwartym opisano budowę i sposób działania Algorytmów Genetycz-
nych, a także wprowadzone modyfikacje w celu poprawienia wydajności w równole-
głych systemach komputerowych.
Rozdział piąty przedstawia charakterystykę metod migracji technologicznej ana- logowych układów CMOS. W rozdziale przedstawiono algorytmy oraz wybrane na- rzędzia wspierające proces migracji technologicznej.
W rozdziale szóstym przedstawiono autorską realizację systemu migracji tech- nologicznej w oparciu o algorytmy Hooke’a-Jeeves’a oraz Algorytmy Genetyczne w systemach wielordzeniowych i wieloprocesorowych z wykorzystaniem profesjonalnych narzędzi wspomagających projektowanie analogowych układów CMOS.
W rozdziale siódmym opisano projekty: zwierciadła prądowego, konwertera prze- strzeni barw, integratora SI oraz pary filtrów SI, które wykorzystano do weryfikacji proponowanego rozwiązania.
W rozdziale ósmym przedstawiono i omówiono wyniki migracji technologicznej analogowych obwodów scalonych CMOS dla wybranych nanometrowych procesów technologicznych CMOS.
Rozdział dziewiąty zawiera podsumowanie otrzymanych w pracy wyników.
W pracy zawarto trzy dodatki. Dodatek A przedstawia narzędzie do migracji tech-
nologicznej. Dodatek B opisuje stworzony system do migracji postlayout. DodatekC
zawiera netlisty wykorzystanych projektów.
Rozdział 1
Nanometrowe procesy technologiczne CMOS
Ten rozdział przestawia krótką historię rozwoju technologii CMOS oraz opisuje najnowsze dostępne na rynku nanometrowe procesy technologiczne służące do pro- dukcji analogowych układów CMOS.
Rozwój procesów technologicznych CMOS na przełomie ostatnich lat przyniósł wiele korzyści w wielu dziedzinach naszego życia, zaczynając od urządzeń codzien- nego użytku takich jak przenośne komputery, tablety, telefony komórkowe itp., a kończąc na zaawansowanych urządzeniach do pomiarów medycznych takich jak np.
miniaturowe kapsułki endoskopowe [3], czy też nowoczesne ultrasonografy ze zin- tegrowaną elektroniką [4]. Ludzkość zawdzięcza to w dużej mierze nanometrowym procesom technologicznym CMOS, które opracowywano przez wiele lat, aby omi- nąć fizyczne ograniczenia towarzyszące rozwojowi technologi półprzewodnikowych i uwzględnić jak największą liczbę zjawisk zachodzących w tak małych układach.
1.1 Rozwój technologii CMOS
Rozwój badań nad technologią CMOS ma swoje początki w latach 60-tych ubie-
głego wieku [5]. Pierwszy układ scalony został wyprodukowany przez RCA w 1968 pod
kierownictwem Alberta Medwina. Jednakże zastosowanie tej technologii w praktyce
przypada na wczesne lata 70-dziesiąte ubiegłego wieku, kiedy to zaczęto wykorzysty-
wać je do produkcji na skalę przemysłową, lecz dopiero od połowy lat 80-tych cieszą
się ogromną popularnością wypierając powoli układy TTL [6]. Od tego czasu jest
to dynamicznie rozwijana technologia o czym świadczy postęp miniaturyzacji tran-
zystorów przedstawiony na wykresie 1.1 pokazujący czas ukazywania się na rynku
nowych procesów technologicznych CMOS, jak wynika z niego, średni czas opraco- wania i wprowadzenia nowego procesu na rynek wynosi około 2-3 lata. Należy przy okazji nadmienić, że w ciągu najbliższych lat minimalna długość kanału tranzystorów osiągnie wartości zbliżone do 5 nm [7].
Rysunek 1.1: Ewolucja procesów technologicznych CMOS
Rezultatem rozwoju nowoczesnych procesów technologicznych CMOS jest nie tylko
miniaturyzacja rozmiarów tranzystorów, ale także zmniejszenie poboru mocy [8] oraz
zwiększenie prędkości działania zintegrowanych obwodów lub zakresu częstotliwości
pracy [9]. Na dzisiejszym etapie badań trudno jednak określić jakie właściwości będą
miały nowe procesy technologiczne CMOS, szacuje się, że w 2030 nadejdzie kres ery
klasycznych układów CMOS, pomimo tego już teraz poszukuje się nowych rozwią-
zań, które zastąpią procesy technologiczne CMOS i pozwolą na dalszy rozwój układów
przetwarzających sygnały, wielkie nadzieje wiąże się w nanorurkach węglowych oraz
wstążkach grafenowych nad którymi trwają zaawansowane prace, a także w biosyste-
mach wykorzystujących potencjał mózgów zwierząt jak i ludzi [7].
1.2 Nanometrowe procesy technologiczne CMOS
Nanometrowe procesy technologiczne CMOS zdefiniowane są jako procesy tech- nologiczne w których minimalne długości kanałów są mniejsze niż 100 nm. Pierwsze nanometrowe procesy, zgodnie z tym co przedstawia wykres z rysunku 1.1, zaczęły po- wstawać na początku XXI wieku. Kluczowe parametry, dla procesów technologicznych CMOS, przedstawiono w tabeli 1.1. Należy zwrócić uwagę, że wymiary tranzystorów nie są jedynymi korzyściami jakie przynoszą ultra głębokie submikronowe technologie.
Dodatkowym atutem jest przede wszystkim ilość warstw metalu, więcej warstw przy łączeniu elementów oznacza bardziej wydajne wykorzystanie powierzchni. Aktywne powierzchnie np. urządzeń MOS mogą być umieszczane bliżej siebie jeżeli dopro- wadzanych jest więcej warstw łączących elementy [10]. Kolejnym parametrem jest napięcie zasilania rdzenia, które redukuje zużycie energii przez obwody scalone.
Tablica 1.1: Wybrane nanometrowe procesy technologiczne CMOS firmy TSMC
Geometria Zasilanie
rdzenia (V) nMOS-Vt (V) pMOS-Vt (V)
Warstwy metali
(Min)
Warstwy metali (Max)
90 nm 1.0-1.2 0.35 0.32 3 9
65 nm 1.2 0.4 0.48 4 9
40 nm 1.1 0.23 0.283 3 10
Rozwój nanometrowych procesów technologicznych wymagał opracowania nowych modeli tranzystorów, charakteryzujących się większą ilością parametrów oraz złożo- nością obliczeniową równań. Zaletą zastosowania nowych modeli z pewnością jest zapewnienie wysokiej jakości wyników podczas symulacji, niestety kosztem czasu sy- mulacji. Na wykresie 1.2 przedstawiono rozwój modeli tranzystorów w czasie, jak widać końcówka lat 90-tych XX wieku i początek XXI wieku przyniosły dynamiczny rozwój modeli tranzystorów, podwajając prawie dwukrotnie liczbę parametrów opi- sujących model matematyczny tranzystorów.
Nowe modele były wymagane, aby w pełni opisać zjawiska fizyczne występujące w tranzystorach o długościach kanałów mniejszych od 100 nm. Na potrzeby nano- metrowych procesów technologicznych CMOS w Berkley opracowano model BSIMv4, będący rozszerzeniem modelu BSIM3v3, który uwzględnia krytyczne ze względu na proces technologiczny zjawiska fizyczne, wśród których można wyróżnić [11]:
• wpływ wąskiego i krótkiego kanału na napięcie progowe
• efekty niejednakowego domieszkowania
Rysunek 1.2: Wzrost liczby parametrów nowych modeli matematycznych tranzysto- rów w czasie
• redukcja mobilności względem pionowego pola
• efekt ładowania podłoża
• prędokość nasycenia nośnika
• modulcja długości kanału
• efekt polaryzacji podłoża
• efekty rezystancji pasożytniczej
• model efektów mechaniki kwantowej
Ze względu na pewne braki w aktualnie używanych modelach, w tym także w
pewne sztuczne zachowanie w aktualnie używanych modelach. Bowiem równania opi- sujące modele tranzystorów opisywane są przez różne równania dla różnych obsza- rów pracy, przechodzenie pomiędzy obszarami pracy jest sztucznie wygładzane przez funkcję, co może doprowadzić do niefizycznego zachowania układu podczas symula- cji. Ponadto nowe modele dążą do ujednolicenia i zredukowania ilości parametrów potrzebnych do opisu procesu technologicznego [12].
1.3 Zjawiska fizyczne towarzyszące procesom pro- dukcyjnym i produkowanym układom
Zmniejszaniu wymiarów tranzystorów towarzyszą niepożądane zjawiska fizyczne występujące już na poziomie procesu produkcyjnego. Im mniejsza powierzchnia stoso- wanych elementów tym wpływ tych zjawisk jest większy. Część wpływu tych zjawisk może być zredukowana na poziomie symulacji obwodu, dzięki zastosowaniu odpo- wiednich modeli matematycznych tranzystorów, które uwzględniają te zjawiska jak na przykład modele wymienione w rozdziale 1.2, część z nich może być redukowana na poziomie rozmieszczenia i łączenia elementów [13].
Jednym z głównych problemów jest problem związany z dopasowaniem tran- zystorów. W nanoskali wpływ tego zjawiska jest znacznie większy ze względu na prąd upływu oraz wariacje grubości tlenku bramki t
ox, a także innych parametrów procesu[14]. Geometryczne zjawiska takie jak ściskanie i zaokrąglanie przedstawione na rysunku 1.3 mogą przyczynić się do zwiększenia błędu dopasowania.
Do tego dochodzą także wariacje ekspozycji, wariacje ogniskowej oraz błędy maski, które są przedstawione na rysunku 1.4.
Szacowanie niezawodności całego układu jest także trudne przy uwzględnieniu za- sadniczych mechanizmów uszkodzeń takich jak przebicie dielektryka TDDB (Time Dependent Dielectric Breakdown), powstawanie gorących nośników w kanałach tran- zystorów MOS powodujące niestabilność ich parametrów HCI (Hot Carrier Injection), degradacja parametrów wynikająca z ujemnej polaryzacji bramek NBTI (Negative Bias Temperature Instability). Wszystkie te wymienione zjawiska i ich wpływ na technologie nanoskali opisane są w [1].
Aby zminimalizować wpływ różnych zjawisk fizycznych parametry modeli wyzna-
czane są dla różnych rozbieżności wynikających z procesu produkcyjnego, urządzenia
wtedy opisywane są jako wolne, typowe, szybkie, dzięki temu można badać właści-
wości układu dla różnych przypadków. Wpływ pozostałych zjawisk ograniczany jest
podczas rozmieszczania i łączenia elementów po przez analizę obszarów krytycznych
Rysunek 1.3: Porównanie dokładności wykonania układu bez kontroli rozmiarów kry- tycznych (lewy) oraz z kontrolą (prawy) [1]
metodą DFM, niektóre generatory urządzeń dostarczane przez producentów układów scalonych zawierają wbudowane procedury projektowania urządzeń zgodnie z zasa- dami zawartymi w DFM.
1.4 Podsumowanie
W rozdziale przedstawiono krótką historię rozwoju procesów technologicznych
CMOS, zalety nanometrowych procesów technologicznych CMOS oraz trudności jakie
towarzyszą opracowywaniu nowych procesów oraz ich zastosowaniu w projektowaniu
układów scalonych. Technologia CMOS będzie stosowana i rozwijana przez kilkanaście
najbliższych lat zanim zostanie zastąpiona innymi rozwiązaniami, do tego powstaną
z pewnością nowe modele opisujące zjawiska zachodzące w urządzeniach projektowa-
nych w tej technologii. Aby móc zastosować powszechnie stosowane rozwiązania w
urządzeniach elektronicznych, wzrośnie potrzeba na metody pozwalające w łatwy i
szybki sposób przenosić je do nowych procesów technologicznych.
Rysunek 1.4: Różnica między geometrią obwodu, a probabilistycznie wyznaczonymi
granicami uwzględniającymi niepożądane efekty [1]
Rozdział 2
Systemy wielordzeniowe i wieloprocesorowe
Rozdział przedstawia krótką charakterystykę systemów równoległych oraz wy- brane rozwiązania programistyczne wspomagające pisanie oprogramowania przezna- czonego dla systemów wielordzeniowych i wieloprocesorowych.
2.1 Programowanie systemów wieloprocesorowych
Rozwój nowoczesnych procesów technologicznych CMOS w ostatnich latach po- zwolił na projektowanie i wytwarzanie coraz bardziej złożonych i wydajnych układów obliczeniowych. Zaowocowało to rozwojem procesorów komputerowych, które zaczęły zmierzać w kierunku układów o strukturach wielordzeniowych. Wykorzystanie pro- cesorów wielordzeniowych pozwoliło na budowę tanich i konkurencyjnych rozwiązań względem tradycyjnych układów wieloprocesorowych [15], poza bezpośrednim wy- korzystaniem procesorów istnieją także inne, dynamicznie rozwijające się rozwiąza- nia, które opierają się o układy GPU i technologię CUDA, a także reprogramowalne układy cyfrowe FPGA, których zastosowanie może znacznie podnieść wydajność pod- czas złożonych obliczeń [16].
Korzyści płynące z wielordzeniowości, a co za tym idzie z wielowątkowości, przed-
stawia wykres na rysunku 2.1, który prezentuje wzrost wydajności mocy obliczeniowej
procesorów w latach 2009-2014 na podstawie testów wykonanych z użyciem oprogra-
mowania firmy PassMark Software. Wyniki testów opracowane zostały na podstawie
punktów, które otrzymuje dany procesor po zakończeniu testów, im więcej punktów
Rysunek 2.1: Porównanie wydajności przykładowych procesorów wykonujących zada- nie testowe w jednym wątku oraz wielu wątkach w latach 2009-2014
Procesory wielordzeniowe stały się pewnym rozwiązaniem alternatywnym w sto- sunku do systemów wieloprocesorowych, są one szeroko dostępne i już dawno wy- parły procesory jednordzeniowe. Główne różnice pomiędzy tymi dwoma rozwiąza- niami przedstawione są w tabeli 2.1. Wydajność takich systemów zależy od wielu czynników, a w przypadku procesorów są to:
• architektura procesora
• częstotliwość taktowania
• wielkość pamięci podręcznej
• liczba rdzeni
2.2 Modele systemów równoległych
Według Flynn’a [17] można wyróżnić, ze względu na liczbę strumieni danych i liczbę strumieni instrukcji, cztery grupy architektur komputerowych [18]:
• SISD (ang. single-instruction stream-single-data stream) - pojedynczy zestaw
instrukcji wykonywany jest sekwencyjnie na pojedynczym strumieniu danych,
Tablica 2.1: Główne różnice między Systemami Wieloprocesorowymi, a Systemami Wielordzeniowymi[15]
System wieloprocesorowy System wielordzeniowy Poziom integracji Każdy procesor na
oddzielnym chipie
Wszystkie procesory na jednym chipie
Wydajność procesora Wysoka Niska
Wydajność systemu Bardzo wysoka Wysoka
Zużycie energii Wysokie Niskie
Całkowite zużycie energii Stosunkowo wysokie Stosunkowo niskie
jako przykład można podać klasyczny komputer PC z procesorem jednordze- niowym
• SIMD (ang. single-instruction stream-multiple-data stream) - każdy procesor przetwarza ten sam zestaw instrukcji przy czym każdy z nich posiada własny zestaw danych, aktualnie architektura ta stosowana jest w procesorach macie- rzowych, wektorowych oraz układach dedykowanych takich jak np. układy gra- ficzne GPUn analogowe procesory CMOS do wstępnego przetwarzania obrazu [19]
• MISD (ang. multiple-instruction stream-single-data stream) - wiele instrukcji wykonywanych jest na tych samych danych, rzadko występują w produktach komercyjnych, zazwyczaj prace nad nimi prowadzono są w ośrodkach nauko- wych, przykładem może być architektura opracowana na potrzeby realizacji systemu realizującego dopasowanie danych do wzorca [20]
• MIMD (ang. multiple-instruction stream-multiple-data stream) - każdy proce- sor pracuje z własnym zestawem instrukcji na własnym zestawie danych, przy- kładem tutaj może być komputer PC z procesorem wielordzeniowym, systemy rozproszone itp.
Ze względu na sprzętowy dostęp do pamięci systemy MIMD możemy podzielić na dwa rodzaje:
• systemy z pamięcią współdzieloną - zbudowane zazwyczaj z kilku procesorów, w
tym także procesorów wielordzeniowych, mających wspólny dostęp do pojedyn-
• systemy z pamięcią rozproszoną - zbudowane z dużej liczby procesorów, każdy procesor posiada odrębną pamięć, ogólny zarys systemu przedstawiono na ry- sunku 2.2(b). Aplikacje zazwyczaj są łatwo skalowalne, komunikacja i kontrolo- wanie aplikacji odbywa się zazwyczaj poprzez transmisję wiadomości.
Poza wymienionymi wyżej systemami istnieją hybrydy wykorzystujące zalety obu systemów, które szczegółowo opisał Protić w swojej pracy [21].
2.2.1 Programowanie systemów o architekturze MIMD
Tworzenie oprogramowania pracującego równolegle w systemach MIMD, niezależ- nie od tego czy system zbudowany jest w oparciu o pamięć współdzieloną, czy roz- proszoną wymaga nie tylko znajomości wybranego języka programowania, ale także rozszerzeń lub bibliotek wspomagających pisanie takich programów, do najpopular- niejszych rozwiązań obecnie stosowanych należą [22]:
• OpenMP
• Pthreads
• MPI
Poza wymienionymi wyżej rozwiązaniami istnieją także rozwiązania łączące ze sobą wiele platform sprzętowych, do rozwiązań takich należy język OpenCL, umożli- wiający przenoszenie programów pomiędzy CPU, GPU, DSP czy FPGA [23].
2.2.1.1 OpenMP
OpenMP (ang. Open Multi-Processing) to interfejs programowania, który został opracowany w celu umożliwienia tworzenia programów przetwarzania równoległego z pamięcią współdzieloną. Jest on prosty do nauczenia się oraz łatwy w zastosowaniu.
Interfejs programistyczny jest tak zaprojektowany, aby łatwo i szybko można było zrównoleglić istniejący już kod, dzięki temu pojedynczy plik z kodem może zawierać sekwencyjną oraz równoległą wersję kodu.
Do najważniejszych cech interfejsu programistycznego OpenMP należą [24]:
• tworzenie zespołów wątków do równoległego wykonywania
• określenie współpracy pomiędzy poszczególnymi zespołami wątków
• deklaracja współdzielonych i prywatnych zmiennych
(a) System z pamięcią współdzieloną
• synchronizacja wątków i umożliwienie wykonywania pewnych czynności na wy- łączność
Dodatkowo należy dodać, że popularność tego rozwiązania wynika nie tylko z jego wyżej wymienionych cech, ale także dostępności, bowiem OpenMP można używać w programach napisanych w popularnym języku wykorzystywanym szczególnie przez matematyków i inżynierów Fortranie oraz popularnych wśród programistów językach C i C++. Standard ten jest ponadto zaimplementowany w wielu popularnych darmo- wych oraz komercyjnych kompilatorach przeznaczonych na różne systemy operacyjne.
Dzięki temu programy korzystające z OpenMP nie wymagają żadnych dodatkowych programów czy bibliotek. Więcej informacji na temat standardu można otrzymać na oficjalnej stronie projektu http://www.openmp.org.
2.2.1.2 PThreads
PThreads (ang. POSIX threads) jest przenośną biblioteką do zarządzania wątkami dostarczającą interfejs programistyczny w języku C dla wielu systemów operacyjnych [25]. Jest standardowym interfejsem zarządzania wątkami w systemie Linux i dość szeroko używany przez większość systemów z rodziny UNIX. Ponadto istnieje również implementacja tego standardu zarządzania wątkami dla systemów z rodziny Windows.
Główne funkcje biblioteki PThreads skupiają się na tworzeniu, usuwaniu oraz synchronizacji wątków, ponadto biblioteka posiada kilka dodatkowych funkcji uła- twiających pisanie wielowątkowych aplikacji.
2.2.1.3 MPI
MPI (ang. Message Passing Interface) jest standardem do przetwarzania rów-
noległego stosowanym głównie w systemach z pamięcią rozproszoną. Interfejs MPI
występuje w postaci biblioteki, która zawiera specyficzne nazwy wywoływane w róż-
nych językach, jako podprogramy w Fortranie, jako funkcje w języku C oraz klasy i
metody w języku C++. Programy wykorzystujące MPI są kompilowane przez stan-
dardowe kompilatory i łączone z biblioteką MPI [26]. Głównym zadaniem biblioteki
jest dostarczenie interfejsu pozwalającego na minimalne przekazywanie komunikatów
pomiędzy procesami. Warto także dodać, że MPI w połączeniu z OpenMP obsługują
często systemy DSM łącząc ze sobą zalety obu rozwiązań [27].
2.3 Podsumowanie
W rozdziale przedstawiono struktury systemów przetwarzania równoległego oraz
przykładowe modele programowania tychże systemów, które zostały wykorzystane
podczas tworzenia środowiska do migracji technologicznej w celu zwiększenia wydaj-
ności w systemach wielordzeniowych oraz wieloprocesorowych. Rozdział zawiera rów-
nież krótkie opisy szeroko stosowanych standardów programowania systemów prze-
twarzania równoległego. Całość treści przedstawiona w tym rozdziale służy także do
zobrazowania korzyści płynących z zastosowania przetwarzania równoległego oraz pro-
blemów jakie niesie ze sobą wybór odpowiedniego rozwiązania do danego problemu,
pozwoli to także zrozumieć w łatwiejszy sposób modyfikacje, przedstawione w dal-
szych rozdziałach, wprowadzone do proponowanych algorytmów oraz wypływające z
nich korzyści.
Rozdział 3
Algorytm optymalizacji Hooke’a-Jeeves’a
Poniższy rozdział przedstawia ogólną charakterystykę bezgradientowej metody optymalizacji Hooke’a-Jeeves’a oraz jego modyfikacje wprowadzone na potrzeby mi- gracji technologicznej analogowych układów CMOS z wykorzystaniem procesorów wielordzeniowych i systemów rozproszonych. Całość opatrzona jest w szczegółowy opis algorytmu wraz z jego modyfikacjami.
Algorytm został po raz pierwszy przedstawiony w 1961 na łamach ACM, jako algorytm służący do rozwiązywania problemów numerycznych i statystycznych [28].
3.1 Modyfikacje algorytmu
W celu zapewnienia prawidłowego działania podczas migracji technologicznej, wy- mieniony algorytm został rozbudowany o dodatkowe parametry pozwalające na opty- malizację problemów dyskretnych. Tymi parametrami są:
• min - wektor wartości minimalnych jakie mogą przyjmować zmienne podczas optymalizacji
• max - wektor wartości maksymalnych jakie mogą przyjmować zmienne podczas optymalizacji
• step - wektor wartości minimalnych kroków z jakimi następują zmiany wartości zmiennych
Dodatkowo w celu umożliwienia optymalizacji z wykorzystaniem systemów wielor-
dzeniowych i wieloprocesorowych dokonano dekompozycji fragmentu algorytmu.
3.2 Opis algorytmu
Algorytm Hooke’a-Jeeves’a jest bezgradientową metodą minimalizacji, zapropo- nowaną przez Hooke’a i Jeeves’a w 1961 roku.
Poniżej przedstawiono dane wejściowe oraz wyjściowe, a także szczegółowy opis zmodyfikowanego algorytmu Hooke’a-Jeeves’a w postaci pseudokodu.
Oznaczenie danych wejściowych algorytmu jest następujące:
• x - wektor wartości początkowych
• min - wektor ograniczeń z dołu
• max - wektor ograniczeń z góry
• step - wektor minimalnych kroków
• maxit - maksymalna ilość iteracji algorytmu
Oznaczenie danych wyjściowych algorytmu jest następujące:
• x - wektor wartości najlepszego rozwiązania
• maxF - wartość funkcji celu najlepszego rozwiązania
Procedura 1 przedstawia szczegółowo kroki algorytmu wraz z modyfikacjami po-
zwalającymi na wykorzystanie przetwarzania równoległego w procesie migracji tech-
nologicznej układów analogowych.
Algorithm 1 Zmodyfikowany algorytm Hooke’a-Jeeves’a
1:
procedure HookeJeeves(x, min, max, step, maxit, minF )
2:
for i ← 1, n do
3:
x
0(i) ← x(i)
4:
ni(i) ← step(i)
5:
end for
6:
f
2← f (x)
7:
f
best← f
28:
f
0← f
29:
f
1← f
210:
iter ← 0
11:
changed ← f alse
12:
repeat
13:
iter ← iter + 1
14:
f
2← f (x)
15:
for j ← 1, n/pV do . Begin of parallel computing
16:
thread ← threadID + 1
17:
for i ← 1, n do
18:
x
1,thread(i) ← x(i)
19:
end for
20:
for v ← 1, pV do
21:
var ← (j − 1) ∗ pV + v
22:
if (thread − 1)/3
pV −vmod 3 = 0 then
23:
if x(var) + ni(var) > min(var) and x(var) + ni(var) <
max(var) then
24:
x
1,thread(var) ← x(var) + ni(var)
25:
end if
26:
else if (thread − 1)/3
pV −vmod 3 = 1 then
27:
if x(var) − ni(var) > min(var) and x(var) − ni(var) <
max(var) then
28:
x
1,thread(var) ← x(var) − ni(var)
29:
end if
30:
end if
31:
f
1,thread← f (x
1,thread)
32:
end for . End of parallel computing
33:
pointer ← 0
Algorithm 2 Zmodyfikowany algorytm Hooke’a-Jeeves’a
34:
if f
1,1∗3pV −1< f
2then
35:
pointer ← 1 ∗ 3
pV −136:
f
2← f
1,pointer37:
else if f
1,2∗3pV −1< f
2then
38:
pointer ← 2 ∗ 3
pV −139:
f
2← f
1,pointer40:
else
41:
pointer ← 3
pV42:
end if
43:
for k ← 2, pV do
44:
if f
1,pointer−2∗3pV −k< f
2then
45:
f
2← f
1,pointer46:
pointer ← pointer − 2 ∗ 3
pV −k47:
else if f
1,pointer−1∗3pV −k< f
2then
48:
f
2← f
1,pointer49:
pointer ← pointer − 1 ∗ 3
pV −k50:
end if
51:
end for
52:
if pointer 6= 3
pVthen
53:
for i ← 1, n do
54:
x(i) ← x
1,best(i)
55:
end for
56:
end if
57:
end for
58:
if f
2< f
0then
59:
f
best← f
260:
for i ← 1, n do
61:
x
1(i) ← x
0(i)
62:
x
0(i) ← x(i)
63:
if (x
0(i) + 4 ∗ (x(i) − x
1(i)) > min(i) and (x
0(i) + 4 ∗ (x(i) − x
1(i)) <
max(i) then
64:
x(i) ← x
0(i) + 4 ∗ (x(i) − x
1(i))
65:
end if
66:
end for
67:
f
0← f
268:
f
2← f (x)
69:
changed ← true
70:
for i ← 1, n do
71:
if step(i) <= ni(i) ∗ 2 then
ni(i) ← ni(i) ∗ 2
Algorithm 3 Zmodyfikowany algorytm Hooke’a-Jeeves’a
76:
if changed = true then
77:
for i ← 1, n do
78:
x(i) ← x
079:
end for
80:
changed ← f alse
81:
else
82:
for i ← 1, n do
83:
if tau(i) > eps then
84:
if step(i) <= ni(i) ∗ 0.5 then
85:
ni(i) ← ni(i) ∗ 0.5
86:
else
87:
ni(i) ← step(i)
88:
end if
89:
end if
90:
end for
91:
end if
92:
end if
93:
if f
0< f
bestthen
94:
f
best← f
095:
for i ← 1, n do
96:
x
best(i) ← x
0(i)
97:
end for
98:
end if
99:
if f
2< f
bestthen
100:
f
best← f
2101:
for i ← 1, n do
102:
x
best(i) ← x
0(i)
103:
end for
104:
end if
105:
until iter < maxit or f
best> minimum
106:
minF ← f
best107:
x ← x
best108:
end procedure
Na początku procedury, czyli w wierszach 2-11, następuje inicjalizacja zmiennych
lokalnych. W liniach 15-22 algorytm określa numer wątku w którym się znajduje i
przypisuje dla zmiennych lokalnych danego wątku nowe wartości zmiennych, mody-
fikując odpowiednie zmienne zgodnie z numerem wątku i numerem badanej zmien-
nej, szczegóły dotyczące tego, kluczowego z punktu widzenia przetwarzania równole-
głego, fragmentu przedstawia rozdział 3.3. Następnie, w wierszach 33-57, na podstawie
otrzymanych wartości funkcji celu algorytm dokonuje wyboru, porównując otrzymane
wyniki funkcji celu z poprzednim najlepszym wynikiem, które zmienne i jak należy zmodyfikować. Linie 58-91 modyfikują wszystkie zmienne jednocześnie, jeżeli wartość wyznaczonej funkcji celu dla nowych wartości zmiennych jest mniejsza od poprzed- niej wartości, oraz współczynniki kroku w przeciwnym przypadku modyfikuje jedy- nie współczynniki kroku. Współczynniki kroku modyfikowane są poprzez dwukrotne zwiększenie (70-74) lub zmniejszenie (82-90) ich aktualnych wartości w danej iteracji tak, aby ich wartość nie była mniejsza od zadeklarowanego kroku minimalnego. W kolejnych krokach następuje przypisanie nowych wartości do zmiennych przechowu- jących najlepszy rezultat. Jeżeli algorytm nie osiągnął żadnego z dwóch kryteriów zatrzymania tj. nie przekroczył zadanej maksymalnej liczby iteracji lub funkcja celu nie osiągnęła żądanego minimum algorytm powraca do linii 13, w przeciwnym przy- padku w wierszach 105-106 następuje przypisanie wartości funkcji celu oraz otrzyma- nego wektora rozwiązań do zmiennych wyjściowych algorytmu i zakończenie działania całej procedury.
3.3 Zrównoleglenie
Ze względu na zależności pomiędzy zmiennymi, a funkcją celu zrównoleglenie dzia- łania algorytmu nie jest trywialne. Zależność między aktualną wartością zmiennej v
i, a jej przyszłą wartością przedstawia rysunek 3.1, w algorytmie Hooke’a-Jeeves’a istnieją trzy możliwe warianty wartości zmiennej v
i, jakie może ona przyjąć po zakończeniu badania wpływu jej zmiany na wartość funkcji celu.
Rysunek 3.1: Możliwe wartości zmiennej v
iw następnej iteracji
Algorithm 4 Wybór nowej wartości zmiennej v
iw algorytmie Hooke’a-Jeeves’a
1:
tmp ← v
2:
tmp
i← v
i+ step
i3:
if f (tmp) < f
oldthen
4:
v ← tmp
5:
f
old← f (tmp)
6:
else
7:
tmp
i← v
i− step
i8:
if f (tmp) < f
oldthen
9:
v ← tmp
10:
f
old← f (tmp)
11:
end if
12:
end if
Aby przyspieszyć obliczenia wprowadzono przewidywanie wyników dla wszystkich możliwych wariantów określonej liczby zmiennych w zależność od ilości dostępnych zasobów.
Ilość wymaganych obliczeń wykonywanych jednocześnie dla określonej liczby zmien- nych można przedstawić w postaci ciągu geometrycznego (3.1)
(3, 9, 27, ...) (3.1)
dla którego wartość n-tego wyrazu można określić równaniem (3.2)
a
n= 3 · 3
(n−1), n ∈ N
+(3.2) w którym zmienne można zinterpretować następująco:
• n - liczba zmiennych w algorytmie Hooke’a-Jeeves’a
• a
n- liczba wymaganych procesorów do jednoczesnego określenia optymalnego rozwiązania
Przy powyższych założeniach na podstawie równania (3.2) można wyznaczyć liczbę zmiennych jednocześnie przetwarzanych przez algorytm przy określonej liczbie zaso- bów, równanie (3.3) opisuje tę zależność.
n = log
3(a
n) (3.3)
Ponieważ przy przejściu ze stanu v
ido stanu v
inie są wymagane żadne obliczenia,
bowiem funkcja celu nie zmienia swojej dotychczasowej wartości, wtedy wzór można
przedstawić w postaci (3.4).
n = log
3(a
n+ 1) (3.4) Zatem równanie (3.4) przedstawia ostateczną postać zależności pomiędzy dostępną ilością jednostek obliczeniowych występujących w systemie, a ilością jednocześnie przetwarzanych zmiennych, w tym przypadku jako podstawową jednostką oblicze- niową obrano rdzeń procesora. Rozwiązanie to pomimo tego, że przyspiesza obliczenia wykorzystując zaproponowaną modyfikację w algorytmie jest jednak słabo skalowalne o czym świadczy wykres 3.2. Należy ponadto dodać, że proponowany algorytm ma złożoność czasową liniową (O(n)).
Rysunek 3.2: Optymalna liczba jednocześnie przetwarzanych zmiennych w zależności od ilości dostępnych rdzeni w procesorze [2]
3.4 Podsumowanie
W rozdziale przedstawiono zmodyfikowaną wersję algorytmu Hooke’a-Jeeves’a po- zwalającą na wykorzystanie jej w systemach przetwarzania równoległego z uwzględ- nieniem ograniczeń nałożonych na optymalizowane zmienne.
Metoda Hooke’a-Jeeves’a pomimo wielu lat od jej opracowania okazuje się wciąż
Rozdział 4
Algorytmy Genetyczne
Poniższy rozdział przedstawia ogólną charakterystykę Algorytmów Genetycznych oraz metody, które zostały zastosowane w celu dostosowania algorytmu do problemu migracji analogowych obwodów scalonych do nanometrowej technologii CMOS oraz wykorzystania procesorów wielordzeniowych i systemów rozproszonych.
4.1 Algorytmy Genetyczne
Algorytmy Genetyczne od lat są jednymi z szeroko stosowanych algorytmów w wielu dziedzinach takich jak np. planowanie strategii, uczenie maszynowe, a także projektowanie układów elektronicznych [29] oraz ich optymalizacja [30]. Ich popular- ność wynika z prostoty budowy i działania oraz skuteczności.
Algorytmy Genetyczne to algorytmy, które oparte są na mechanizmach doboru naturalnego i dziedziczności. Bazują one na trzech elementarnych operacjach[31]:
• selekcja
• krzyżowanie
• mutacja
4.2 Reprezentacja zmiennoprzecinkowa
Ze względu na przedstawiony problem, w którym zmienne przedstawiane są w po-
staci liczb rzeczywistych, wektor chromosomu zakodowano jako wektor liczb zmien-
nopozycyjnych, o tej samej długości, jak wektor rozwiązania [32]. Każdy element
chromosomu może przyjmować tylko zdefiniowane wartości liczb rzeczywistych okre-
ślone przez allele. Główną zaletą tego rozwiązania w porównaniu do reprezentacji
binarnej jest oszczędność czasu związanego z konwersją bitów na reprezentację zmien- noprzecinkową oraz czasu potrzebnego na wykonanie podstawowych operacji takich jak mutacja i krzyżowanie [33].
4.3 Struktura Algorytmów Genetycznych
Wyżej wymienione operacje wykorzystane są w sposób przedstawiony przez algo- rytm 5.
Algorithm 5 Struktura Prostego Algorytmu Genetycznego
1:
procedure Prosty Algorytm Genetyczny
2:
Inicjalizacja populacji
3:
Ewaluacja populacji
4:
while Niespełnione kryterium zakończenia do
5:
Selekcji
6:
Krzyżowania i mutacja
7:
Ewaluacja populacji
8:
end while
9:
end procedure
4.3.1 Inicjalizacja populacji
Zadaniem inicjalizacji jest otrzymanie początkowej populacji. W zaimplemento- wanym rozwiązaniu populacja początkowa jest wybierana losowo, dla każdego chro- mosomu losowane są geny w postaci liczb zmiennoprzecinkowych ze zbioru dopusz- czalnych rozwiązań zdefiniowanych przez allele. Allela w tym przypadku to zbiór liczb rzeczywistych ograniczonych z góry i z dołu.
4.3.2 Kryterium zakończenia
Działanie Algorytmu Genetycznego musi się zakończyć wraz ze spełnieniem co najmniej jednego postawionego warunku. Najczęściej stosowanymi kryteriami są:
• przekroczenie określonej liczby generacji
• przekroczenie określonej wartości funkcji przystosowania
4.3.3 Ewaluacja populacji
Ewaluacja populacji polega na określeniu wartości funkcji celu (zwanej inaczej funkcją przystosowania) dla każdego chromosomu. Funkcja celu stanowi pewien mier- nik jakości, który w dalszych etapach odgrywa znaczącą rolę podczas reprodukcji, im większa wartość tego wskaźnika tym lepsze przystosowanie. Zadaniem reprodukcji jest dostosowanie populacji w taki sposób, żeby każdy osobnik miał jak najwyższą wartość funkcji przystosowania.
4.3.4 Selekcja
Reprodukcja jest procesem, w którym indywidualne ciągi kodowe zostają powie- lone w stosunku do wartości, jakie przybiera dla nich funkcja celu, przed tym jednak indywidualne chromosomy są szeregowane w kolejności od najlepiej przystosowanych, mających najlepszy wynik funkcji celu, do najgorzej przystosowanych, posiadających najgorszy wynik. W zaimplementowanym rozwiązaniu zastosowano tzw. metodę ru- letki, w której sektory przypadające na danego osobnika są proporcjonalne do jego przystosowania. Przykładowe chromosomy przedstawia rysunek 4.1.
Rysunek 4.1: Chromosomy wybrane do krzyżowania
4.3.5 Krzyżowanie
Operacja krzyżowania polega na kojarzeniu w sposób losowy ciągów z puli rodzi- cielskiej w pary, następnie każda para przechodzi proces krzyżowania. W przypadku zaimplementowanego algorytmu użyto krzyżowania jednopunktowego.
4.3.6 Mutacja
Mutacja polega natomiast na sporadycznej, przypadkowej zmianie wartości ele-
mentu ciągu kodowego. W Algorytmach Genetycznych najczęściej polega ona na od-
(a) Krzyżowanie (b) Nowe potomstwo
Rysunek 4.2: Krzyżowanie chromosomów
wróceniu wartości pojedynczego bitu lub kilku bitów w danym chromosomie. Czę- stotliwość tych zmian uwarunkowana jest tzw. prawdopodobieństwem mutacji. W przypadku reprezentacji zmiennoprzecinkowej zaimplementowana mutacja polega na wylosowaniu nowej wartości liczby zmiennoprzecinkowej zapisanej w wylosowanej al- leli. Wylosowana wartość mieści się między minimalną, a maksymalną dopuszczalną wartością.
Rysunek 4.3: Chromosomy po mutacji
4.4 Modyfikacje algorytmu
Moduł obsługujący Algorytmy Genetyczne bazuje na bibliotece GAlib, która do-
stępna jest na stronie [34], napisanej przez Matthew Wall na Massachusetts Insti-
tute of Technology. Zastosowanie biblioteki pozwoliło zaoszczędzić wiele czasu pod-
czas pisania modułu bazującego na Algorytmach Genetycznych. Niektóre fragmenty
kodu zmodyfikowane zostały w taki sposób, aby można było wykorzystać standardy
ułatwia interpretację wyników w programach pośredniczących w migracji technolo- gicznej. Każdy genom budowany jest z konkretnie zdefiniowanych alleli. Allele po- zwalają na użycie ograniczeń jakie są narzucane przez procesy technologiczne CMOS.
Każda allela definiowana jest w następujący sposób (minimalna wartość, maksymalna wartość, krok). Pozwala to na generowanie genomu w określonym przedziale w sposób dyskretny z dokładnością kroku, zapewnia to prawidłowe działania podczas migracji technologicznej, w której niedostosowanie się do tego kryterium może doprowadzić do niewykonania symulacji.
4.5 Zrównoleglenie
W celu przyspieszenia migracji technologicznej zrównoleglono te fragmenty kodu, w których wykonywane działania na osobnikach są niezależne, ze względu na czas wykonywania danego fragmentu struktury Algorytmu Genetycznego szczególne zna- czenie ma tu etap ewaluacji populacji. Ewaluacja populacji odbywa się sekwencyjnie tj. wartość funkcji celu obliczana jest najpierw dla pierwszego osobnika, następnie dla drugiego i tak do ostatniego, wyliczanie wartości funkcji celu dla pojedynczego osobnika jest niezależne w stosunku do funkcji celu pozostałych osobników.
Proces ewaluacji i czas potrzebny na jego realizację dla przetwarzania na jednym CPU przedstawia tabela 4.1, gdzie t
ito czas potrzebny na ewaluację choromosomu
idla i = 1, 2, ..., m, przy czym m-liczba wszystkich osobników w populacji. Ze względu na rozpatrywany problem, którym jest migracja technologiczna można przyjąć, że t
1= t
2= ... = t
m= t = constans.
czas CPU
t
1chromosom
1t
2chromosom
2. . . t
mchromosom
mTablica 4.1: Czas potrzebny na ewaluację populacji na pojedynczym procesorze Zatem całkowity czas ewaluacji populacji przy wykorzystaniu jednego CPU wy- raża równanie (4.1).
t
total= t
1+ t
2+ ... + t
m= m · t (4.1)
Korzystając z niezależności ewaluacji pojedynczego osobnika czas ewaluacji całej populacji można skrócić proporcjonalnie do liczby dostępnych procesorów (rdzeni), bowiem każdemu procesorowi można proporcjonalnie przypisać działanie na d
mne chro- mosomach, co pokazuje tabela 4.2, całkowity czas przeznaczony na ewaluację popu- lacji można wyrazić wzorem (4.2).
czas CPU1 CPU2 CPUn
t
1chromosom
1chromosom
dmne+1chromosom
dmne·(n−1)+1t
2chromosom
2chromosom
dmne+2
chromosom
dmne·(n−1)+2
. . .
. . .
...
. . . t
dmne
chromosom
dmne
chromosom
dmne·2
chromosom
mTablica 4.2: Czas potrzebny na ewaluację populacji z wykorzystaniem kilku proceso- rów (rdzeni) do których przydzielono poszczególne chromosomy
t
total= t
1+ t
2+ ... + t
dmne