• Nie Znaleziono Wyników

Komputerowo wspomagana migracja analogowych obwodów scalonych do nanometrowej technologii CMOS

N/A
N/A
Protected

Academic year: 2021

Share "Komputerowo wspomagana migracja analogowych obwodów scalonych do nanometrowej technologii CMOS"

Copied!
120
0
0

Pełen tekst

(1)

Komputerowo wspomagana migracja analogowych obwodów

scalonych do nanometrowej technologii CMOS

Mariusz Naumowicz

Katedra Inżynierii Komputerowej Politechnika Poznańska

Rozprawa doktorska

2015

(2)

Pracę dedykuję mojej ukochanej żonie Honoracie, moim rodzicom oraz

świętej pamięci dziadkom.

(3)

Podziękowania

Serdeczne dziękuję profesorowi Andrzejowi Handkiewiczowi za inspirację,

okazaną życzliwość oraz wsparcie przy realizacji rozprawy doktorskiej.

(4)

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.

(5)

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.

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

i

w 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

(11)

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

(12)

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

(13)

Lista symboli

L

n

długość kanału n-tego tranzystora W

n

szerokość 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

(14)

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-

(15)

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.

(16)

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.

(17)

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

(18)

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].

(19)

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

(20)

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

(21)

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

(22)

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.

(23)

Rysunek 1.4: Różnica między geometrią obwodu, a probabilistycznie wyznaczonymi

granicami uwzględniającymi niepożądane efekty [1]

(24)

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

(25)

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,

(26)

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-

(27)

• 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

(28)

(a) System z pamięcią współdzieloną

(29)

• 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].

(30)

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.

(31)

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.

(32)

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.

(33)

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

2

8:

f

0

← f

2

9:

f

1

← f

2

10:

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 −v

mod 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 −v

mod 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

(34)

Algorithm 2 Zmodyfikowany algorytm Hooke’a-Jeeves’a

34:

if f

1,1∗3pV −1

< f

2

then

35:

pointer ← 1 ∗ 3

pV −1

36:

f

2

← f

1,pointer

37:

else if f

1,2∗3pV −1

< f

2

then

38:

pointer ← 2 ∗ 3

pV −1

39:

f

2

← f

1,pointer

40:

else

41:

pointer ← 3

pV

42:

end if

43:

for k ← 2, pV do

44:

if f

1,pointer−2∗3pV −k

< f

2

then

45:

f

2

← f

1,pointer

46:

pointer ← pointer − 2 ∗ 3

pV −k

47:

else if f

1,pointer−1∗3pV −k

< f

2

then

48:

f

2

← f

1,pointer

49:

pointer ← pointer − 1 ∗ 3

pV −k

50:

end if

51:

end for

52:

if pointer 6= 3

pV

then

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

0

then

59:

f

best

← f

2

60:

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

2

68:

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

(35)

Algorithm 3 Zmodyfikowany algorytm Hooke’a-Jeeves’a

76:

if changed = true then

77:

for i ← 1, n do

78:

x(i) ← x

0

79:

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

best

then

94:

f

best

← f

0

95:

for i ← 1, n do

96:

x

best

(i) ← x

0

(i)

97:

end for

98:

end if

99:

if f

2

< f

best

then

100:

f

best

← f

2

101:

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

best

107:

x ← x

best

108:

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

(36)

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

i

w następnej iteracji

(37)

Algorithm 4 Wybór nowej wartości zmiennej v

i

w algorytmie Hooke’a-Jeeves’a

1:

tmp ← v

2:

tmp

i

← v

i

+ step

i

3:

if f (tmp) < f

old

then

4:

v ← tmp

5:

f

old

← f (tmp)

6:

else

7:

tmp

i

← v

i

− step

i

8:

if f (tmp) < f

old

then

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

i

do stanu v

i

nie są wymagane żadne obliczenia,

bowiem funkcja celu nie zmienia swojej dotychczasowej wartości, wtedy wzór można

przedstawić w postaci (3.4).

(38)

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ąż

(39)

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

(40)

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

(41)

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-

(42)

(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

(43)

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

i

to czas potrzebny na ewaluację choromosomu

i

dla 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

1

chromosom

1

t

2

chromosom

2

. . . t

m

chromosom

m

Tablica 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)

(44)

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

mn

e 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

1

chromosom

1

chromosom

dmne+1

chromosom

dmne·(n−1)+1

t

2

chromosom

2

chromosom

dm

ne+2

chromosom

dm

ne·(n−1)+2

. . .

. . .

...

. . . t

dm

ne

chromosom

dm

ne

chromosom

dm

ne·2

chromosom

m

Tablica 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

dm

ne

= d m

n e · t (4.2)

Z dwóch powyższych równań można wyznaczyć przyspieszenie a jakie daje wyko- rzystanie wielu procesorów (rdzeni) w stosunku do jednego procesora, zależność jest opisana przez równanie (4.3). Należy ponadto dodać, że proponowany algorytm ma złożoność czasową liniową (O(n)).

a = m · t

d

mn

e · t = m

d

mn

e (4.3)

Powyżej przedstawione rozwiązanie zostało zaimplementowane z użyciem rozwią- zań przedstawionych w podrozdziałach 2.2.1.1 i 2.2.1.3.

4.6 Podsumowanie

W rozdziale przedstawiono Algorytmy Genetyczne opisując poszczególne etapy

działania algorytmu oraz niezbędne modyfikacje pozwalające na efektywne wykorzy-

stanie Algorytmów Genetycznych w systemach wielordzeniowych i wieloprocesoro-

wych.

Cytaty

Powiązane dokumenty

Rys. 2-1 Kryteria systematyki metod testowania [Rut03]. 2-2 Fazy życia układu scalonego [Huer93]. 2-3 Klasyfikacja uszkodzeń analogowych układów elektronicznych [Rut03]. 2-4

Na rysunku 10 przedstawiono charakterystyki amplitudowe filtru pomierzone z wykorzystaniem stanowiska badawczego oraz zasymulowane w programie FilterPro. Dla porównania

Porównu- jąc wartości napięcia nasycenia otrzymane w wyniku pomiarów z wynikami symulacji można stwierdzić, że zarówno dla wzmacniacza odwracającego

Zastosowanie metody funkcji dolnej do badania zbieżności algorytmów genetycznych.. Pamięci Profesora

wskutek zmian długoterm inow ych parametrów

Analiza poprawności pomiarowej i decyzyj- nej wybranych zabezpieczeń odległościowych ze względu na zadane sygnały testowe została prze- prowadzona w formie porównawczej za pomocą

2 Dla gospodarstw domowych korzystających z telewizji kablowej lub satelitarnej problem wyłączenia naziemnych nadajników analogowych praktycznie nie istnieje, ponieważ

Zadanie: oblicz punkt równowagi. piątek, 16