ASK id 70513 Nieznany (2)

background image

1 |

S t r o n a

ASK

Architektura von Neumanna - rodzaj architektury komputera, przedstawionej po raz pierwszy w 1945 roku przez
Johna von Neumanna stworzonej wspólnie z Johnem W. Mauchly'ym i Johnem Presper Eckertem.

Polega na ścisłym podziale komputera na trzy podstawowe części:

* procesor (w ramach którego wydzielona bywa częśd sterująca oraz częśd arytmetyczno-logiczna)

* pamięd komputera (zawierająca dane i sam program)

* urządzenia wejścia/wyjścia

System komputerowy zbudowany w oparciu o architekturę von Neumanna powinien:

* mied skooczoną i funkcjonalnie pełną listę rozkazów

* mied możliwośd wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego
przechowywanie w pamięci w sposób identyczny jak danych

* dane i instrukcje w takim systemie powinny byd jednakowo dostępne dla procesora

* informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i
wykonywaniu tych instrukcji w procesorze.

Podane warunki pozwalają przełączad system komputerowy z wykonania jednego zadania (programu) na inne bez
fizycznej ingerencji w strukturę systemu, a tym samym gwarantują jego uniwersalnośd.

System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji.
Instrukcje jak i dane są zakodowane w postaci liczb. Bez analizy programu trudno jest określid czy dany obszar
pamięci zawiera dane czy instrukcje. Wykonywany program może się sam modyfikowad traktując obszar instrukcji
jako dane, a po przetworzeniu tych instrukcji - danych - zacząd je wykonywad.

Model komputera wykorzystującego architekturę von Neumanna jest często nazywany przykładową maszyną
cyfrową (PMC).

Architektura harwardzka - rodzaj architektury komputera. W odróżnieniu od architektury von Neumanna, pamięd
danych programu jest oddzielona od pamięci rozkazów.

Podstawowa architektura komputerów zerowej generacji i początkowa komputerów pierwszej generacji.

Prostsza (w stosunku do architektury von Neumanna) budowa przekłada się na większą szybkośd działania - dlatego
ten typ architektury jest często wykorzystywany w procesorach sygnałowych oraz przy dostępie procesora do
pamięci cache.

Separacja pamięci danych od pamięci rozkazów sprawia, że architektura harwardzka jest obecnie powszechnie
stosowana w mikrokomputerach jednoukładowych, w których dane programu są najczęściej zapisane w nieulotnej
pamięci ROM (EPROM/EEPROM), natomiast dla danych tymczasowych wykorzystana jest pamięd RAM (wewnętrzna
lub zewnętrzna).

RISC (Reduced Instruction Set Computers) - nazwa architektury mikroprocesorów która została przedstawiona pod
koniec lat 70. w teoretycznych pracach na uniwersytecie Berkeley oraz w wynikach badao Johna Cocke z Thomas J.
Watson Research Center.

background image

2 |

S t r o n a

Ówczesne procesory (budowane w architekturze CISC) charakteryzowały się bardzo rozbudowaną listą rozkazów, ale
jak wykazały badania tylko nieliczna ich częśd była wykorzystywana w statystycznym programie. Okazało się np. że
ponad 50% rozkazów w kodzie to zwykłe przypisania, tj. zapis zawartości rejestru do pamięci i odwrotnie.

Ponadto badania wykazały, że podczas działania programu ok. 26-45% wykonywanych instrukcji to instrukcje
wywołania podprogramów lub instrukcje obsługujące pętle, ok. 13-15% to wspomniane przypisania, 7-21% to
instrukcje warunkowe (jeśli warunek to …), natomiast reszta to tylko 1-3% [1].

W związku z powyższym zaprezentowano architekturę mikroprocesorów, w której uwzględniono wyniki badao. Jej
podstawowe cechy to:

1. Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt, podczas gdy w
procesorach CISC sięga setek. Upraszcza to znacznie dekoder rozkazów.

2. Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, bardziej zunifikowane, co dodatkowo
upraszcza wspomniany wcześniej dekoder rozkazów. Ponadto wprowadzono tryb adresowania, który ogranicza ilośd
przesłao - większośd operacji wykonuje się wg schematu: rejestr_C = rejestr_A \quad operacja \quad rejestr_B[2].

3. Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Przede wszystkim do przesyłania danych pomiędzy
pamięcią, a rejestrami służą dedykowane instrukcje, które zwykle nazywają się load (załaduj z pamięci), oraz store
(zapisz do pamięci); pozostałe instrukcje mogą operowad wyłącznie na rejestrach. Schemat działania na liczbach
znajdujących się w pamięci jest następujący: załaduj daną z pamięci do rejestru, na zawartości rejestru wykonaj
działanie, przepisz wynik z rejestru do pamięci.

4. Zwiększenie liczby rejestrów (np. 32, 192, 256, podczas gdy np. w architekturze x86 jest zaledwie 8 rejestrów), co
również ma wpływ na zmniejszenie liczby odwołao do pamięci.

5. Dzięki przetwarzaniu potokowemu (ang. pipelining) wszystkie rozkazy wykonują się w jednym cyklu
maszynowym[3], co pozwala na znaczne uproszczenie bloku wykonawczego, a zastosowanie superskalarności także
na umożliwienie równoległego wykonywania rozkazów. Dodatkowo czas reakcji na przerwania jest krótszy.

Obecnie popularne procesory Intela z punktu widzenia programisty są widziane jako CISC, ale ich rdzeo jest RISC-
owy. Rozkazy CISC są rozbijane na mikrorozkazy (ang. microops), które są następnie wykonywane przez RISC-owy
blok wykonawczy. W praktyce okazuje się że rozwiązanie takie (pomimo wielu znaczących wad) jest podejściem
znacznie bardziej wydajnym (szczególnie że RISC-owy blok wykonawczy jest znacznie bardziej nowoczesny od
architektury CISC widocznej dla programisty).

Wymienid architektury RISC

- MIPS (Microprocessor without Interlocked Piped Stages) jest to architektura komputerowa (w szczególności
procesor typu RISC) rozwijana przez firmę MIPS Technologies. Istnieje zarówno w wersji 32- jak i 64-bitowej.

Procesory MIPS stanowiły do roku 2007 jednostkę centralną komputerów firmy SGI. Ponadto są szeroko stosowane
w systemach wbudowanych (ang. embedded systems), w szczególności w urządzeniach opartych na systemie
operacyjnym Windows CE. Są używane w routerach firmy Cisco, oraz we współczesnych konsolach do gier takich jak
Nintendo 64, Sony PlayStation, Sony PlayStation 2, Sony PSP. Szacuje się, że procesory MIPS stanowią jedną trzecią
produkcji mikroprocesorów typu RISC.

-SPARC

-ARM

-POWERPC

background image

3 |

S t r o n a

CISC (ang. Complex Instruction Set Computers) – nazwa architektury mikroprocesorów o następujących cechach:

* Występowanie złożonych, specjalistycznych rozkazów (instrukcji) - które do wykonania wymagają od kilku do
kilkunastu cykli zegara

* Szeroka gama trybów adresowania

* Przeciwnie niż w architekturze RISC rozkazy mogą operowad bezpośrednio na pamięci (zamiast przesłania
wartości do rejestrów i operowania na nich)

* Powyższe założenia powodują iż dekoder rozkazów jest skomplikowany

Istotą architektury CISC jest to, iż pojedynczy rozkaz mikroprocesora, wykonuje kilka operacji niskiego poziomu, jak
na przykład pobranie z pamięci, operację arytmetyczną i zapisanie do pamięci.

Przed powstaniem procesorów RISC, wielu komputerowych architektów próbowało zmostkowad lukę semantyczną –
aby zaprojektowad zestawy rozkazów, które wspierałyby języki programowania wysokiego poziomu przez
dostarczenie rozkazów wysokiego poziomu np. wywołania funkcji i zwrócenia jej wartości, instrukcje pętli czy
kompleksowe tryby adresowania. Rezultatem tego były programy o mniejszym rozmiarze i z mniejszą ilością odwołao
do pamięci, co w tamtym czasie było istotne z punktu widzenia wydajności przy jednoczesnym dążeniu do obniżenia
kosztów pojedynczego komputera.

Współczesne procesory zgodne z x86 produkowane przez firmy Intel i AMD przetwarzają rozkazy procesora x86 na
proste mikropolecenia pracujące wg idei RISC, często wykonujące się równolegle.

Architektura ARM (Advanced RISC Machine, pierwotnie Acorn RISC Machine) jest 32-bitową architekturą (modelem
programowym) procesorów typu RISC.

Różne wersje procesorów ARM są szeroko stosowane w systemach wbudowanych (ang. embedded systems) i
systemach o niskim poborze mocy, ze względu na ich energooszczędną architekturę.

Procesor ARM jest jednym z najczęściej stosowanych procesorów na świecie. Jest używany między innymi w dyskach
twardych, telefonach komórkowych, routerach, kalkulatorach a nawet w zabawkach dziecięcych. Obecnie zajmuje
ponad 75% rynku 32-bitowych CPU dla systemów wbudowanych. Najbardziej udanym projektem ARM był procesor
ARM7TDMI szeroko stosowany w telefonach komórkowych. Moc obliczeniowa procesorów ARM umożliwia
instalacje na tym procesorze systemu operacyjnego, z zaimplementowanymi mechanizmami wielowątkowości, z
możliwością wykorzystania zawartego w systemie stosu TCP/IP czy systemu plików(np. FAT32). Powstało wiele takich
systemów: Windows CE, FreeBSD, NUTOS(Ethernut), i wiele dystrybucji Linuksa opatrzonym hasłem embedded
(Embedded Debian, Embedded Ubuntu).

Zestaw instrukcji procesora ARM stanowi rozwinięcie zestawu instrukcji MOS 6502. Główne zmiany dotyczą
zwiększenia efektywności potokowego przetwarzania instrukcji. Zgodnie z założeniami architektury RISC, rozkazy są
tak skonstruowane, aby wykonywały się w ściśle określonym czasie - zwykle w jednym cyklu maszynowym.

Interesującą zmianą jest użycie 4-bitowego kodu warunkowego na początku każdej instrukcji. Dzięki temu każda
instrukcja może byd wykonana warunkowo. Ogranicza to przestrzeo dostępną, na przykład, dla instrukcji przeniesieo
w pamięci, ale z drugiej strony nie ma potrzeby stosowania instrukcji rozgałęzieo dla kodu zawierającego wiele
prostych instrukcji warunkowych. Klasycznym przykładem jest implementacja algorytmu Euklidesa wyznaczania
największego wspólnego dzielnika.

PIC (ang. Peripheral Interface Controller) to rodzina mikrokontrolerów typu RISC produkowana przez firmę
Microchip Technology. Rodzina ta wywodzi się z 8-bitowego mikrokontrolera PIC1650 zaprojektowanego pierwotnie
przez firmę General Instrument.

background image

4 |

S t r o n a

Firma Microchip zamiast akronimu PIC używa nazwy PICmicro. Uważa się, że akronim PIC oznacza ang. Peripheral
Interface Controller, chod oryginalna nazwa nadana mikrokontrolerowi PIC1650 przez General Instrument to ang.
Programmable Intelligent Computer.

Architektura mikrokontrolera PIC16F84

Procesory PIC firmy MICROCHIP są procesorami posiadającymi cechy architektury RISC to oznacza, że posiadają
zminimalizowana listę rozkazów. Zaletą procesorów PIC (PIC16FXX) jest przede wszystkim:

tylko 35 pojedynczych rozkazów łatwych do nauczenia,

wszystkie rozkazy wykonywane są w jednym cyklu (dla zegara taktującego 10 MHz jeden cykl = 400 ns, a 1 cykl
maszynowy jest równy 4 taktom oscylatora) wyłączając rozkazy skoków, które realizowane są w dwóch cyklach
maszynowych,

maksymalna częstotliwośd zegara 10 MHz,

czternastobitowa długośd słowa rozkazu,

ośmiobitowa długośd słowa pamięci danych RAM oraz rejestrów sterujących,

5 rejestrów specjalnych służących do konfigurowania układu,

ośmiopoziomowy stos,

natychmiastowy (bezpośredni) i pośredni tryb adresowania,

ośmiobitowy licznik z ośmiobitowym podzielnikiem wstępnym,

cztery źródła wywołujące przerwania:

- zewnętrzne, po wystąpieniu odpowiedniego zbocza (rodzaj zbocza definiowany programowo) na nóżce RB0/INT
procesora,

- wewnętrzne, poprzez zmianę stanu na jednej z nóżek portu B (porty RB4, RB5, RB6, RB7),

- wewnętrzne, poprzez przepełnienie TIMER-a,

- wewnętrzne, wywoływane gdy zakooczone zostanie programowanie jednej z komórek pamięci danych w EEPROM-
ie.

ponad 1.000.000 cykli programowania pamięci danych EEPROM,

zachowanie zawartości pamięci danych EEPROM ponad 40 lat,

wykonanie w technologii CMOS,

szeroki zakres napiec zasilających oraz niewielki pobór prądu (<2mA dla 5V 4MHz, 15mA dla 2V 32kHz oraz poniżej
1mA w stanie uśpienia).

Mikrokontroler PIC16F84 jest oparty na architekturze RISC. Charakteryzuje się niewielką ilością instrukcji (tylko 35).
Każda z instrukcji wykonywana jest w jednym cyklu, z wyjątkiem skoków warunkowych i bezwarunkowych, które
trwają dwa cykle. Przy częstotliwości 20MHz (górna granica) cykl instrukcyjny trwa 200ns.

Układ ma dwa tryby adresowania: bezpośrednie i pośrednie. Pamięd programu ma objętośd 1024 słów o długości 14
bitów. Poza tym dostępne jest 68 bajtów pamięci RAM i 64 bajty pamięci EEPROM. Dane w tych pamięciach są 8 -

background image

5 |

S t r o n a

bitowe. Mikrokontroler posiada 15 sprzętowych rejestrów specjalnego zastosowania; ośmiopoziomowy, sprzętowy
stos oraz cztery źródła przerwao. Ma 13 linii wejścia-wyjścia podzielonych na dwa porty: 5-bitowy port A i 8-bitowy
port B. Każda z linii I/O ma indywidualną kontrolę kierunku i obcią-żalnośd prądową do 25mA. Wewnątrz
mikrokontrolera wbudowany jest 8-bitowy timer-licznik, 8-bitowy preskaler i układ nadzoru (watchdog), Power-on
Reset (POR), Power-up timer (PWRT). Dodatkowo jest zabezpieczenie przed odczytem programu (CP) oraz tryb pracy
o zmniejszonym poborze mocy (SLEEP). PIC16F84 jest układem, który programuje się szeregowo przez dwa
wyprowadzenia. Programowanie może odbywad się w systemie, w którym mikrokontroler pracuje (ICSPTM).
Diagram struktury wewnętrznej przedstawiony jest na poniżej.

Pamięd programu i danych

W mikrokontrolerze PIC16F84 są dwie pamięci: 14-bitowa pamięd programu i 8-bitowa pamięd danych. Pamięd
danych jest podzielona pomiędzy dwa obszary - RAM i obszar rejestrów specjalnych. Rejestry specjalne są używane
do kontroli układów peryferyjnych, takich jak porty I/O, preskaler, timer, układy przerwao, itp. Poprzez rejestry
specjalne jest także dostęp do pamięci EEPROM. Pamięd danych jest podzielona na dwa banki. Wybór banku odbywa
się poprzez ustawienie bitu RP0 w rejestrze STATUS. Dostęp do obszaru danych może byd bezpośredni lub pośrednio
poprzez rejestr FSR. Licznik programu (instrukcji) umożliwia zaadresowanie 8k x 14-bitów pamięci fizycznej. Jako, że
mikrokontroler PIC16F84 ma tylko 1k pamięci programu, pamięd ta została niejako "zapętlona", tzn. odwołanie do
adresu powyżej 3FFh powoduje pobranie instrukcji z odpowiedniego obszaru pamięci zaimplementowanej.
Przykładowo lokacje 20h, 420h, 820h itd. odwołują się do tej samej komórki. Dwa adresy obszaru pamięci programu
mają specjalne znaczenie. Pierwszy adres 0000h to wektor początku programu. Drugi adres 0004h to wektor
przerwania.

Stos

Stos nie jest zaimplementowany ani w obszarze pamięci programu, ani pamięci danych. Ma on osiem poziomów.
Wskaźnik poziomu stosu nie jest dostępny do odczytu ani do zapisu, tak więc nie jest możliwe odwołanie do poziomu
innego niż aktualnie wskazywany, bez wcześniejszego zdjęcia danych z wyższych. Dziewiąte odłożenie na stos
powoduje nadpisanie poziomu pierwszego, dziesiąte - drugiego itd. Trzeba zatem pamiętad o pilnowaniu w
programie ilości danych odkładanych na stos.

Porty wejścia-wyjścia

Wyprowadzenia tych portów są częściowo dzielone z innymi funkcjami zewnętrznymi. Porty są w pełni
konfigurowalne. Dzielą się na dwie grupy: 5-bitowy port A i 8-bitowy port B. W przypadku portu A linia RA4 jest
dzielona z wejściem zegarowym timera i jako wyjście jest typu otwarty dren. Za kontrolę nad portem A
odpowiedzialne są rejestry TRISA i PORTA. Port B ma dzieloną linię portu RB0 z wejściem zewnętrznego przerwania.
Poza tym bity RB4:7 mogą byd ustawione w tryb wywołania przerwania w przypadku wystąpienia na nich zmian. W
trakcie programowania układu wejście RB6 jest wejściem linii zegarowej, a RB7 wejściem danych. Kontrolę nad
portem sprawują rejestry TRISB i PORTB.

Timer

PIC16F84 ma wbudowany 8-bitowy timer-licznik, który można odczytywad i zapisywad. Jako wejście impulsów
zegarowych można wybrad wewnętrzny zegar lub wejście zewnętrzne (RA4). Można również określid zbocze
zewnętrznego zegara, na którym ma się odbywad zliczanie. Do zegara można programowo dołączyd wewnętrzny
programowalny, 8-bitowy preskaler. Przy przepełnieniu, tzn. przejściu z FFh na 00h wywoływane może byd
przerwanie. Odczyt rejestru timera następuje natychmiastowo. Przy zapisie natomiast pojawia się opóźnienie trzech
cykli, zanim licznik przystąpi do odliczania.

background image

6 |

S t r o n a

Preskaler

Preskaler może byd dołączony do timera-licznika lub do układu WDT (watchdog). Kiedy jest on przydzielony timerowi
jego stopieo podziału wynosi 1:2, 1:4, ..., 1:256, a jeśli do układu WDT to 1:1, 1:2, ..., 1:128. Przypisanie dzielnika
może odbywad się w trakcie pracy mikrokontrolera. W takiej sytuacji ani rejestr timera ani licznik układu WDT nie są
zerowane.

Przerwania

PIC16F84, jak już wcześniej nadmieniono ma cztery źródła przerwao. Każde z przerwao może byd programowo
wyłączone i załączone. Kontrolę nad nimi sprawuje rejestr INTCON. Pomimo czterech źródeł jest tylko jeden wektor
przerwao, zatem trzeba programowo rozpoznawad, z którego źródła nastąpiło wywołanie Źródłami przerwao są:
przepełnienie timera-licznika z FFh na 00h, zmiany na wejściach 4-7 portu B, wyzwolenie z wejścia przerwania
zewnętrznego RB0/INT, zakooczenie zapisu do pamięci EEPROM. Każde ma swój znacznik w rejestrze.

Mikrokontroler->rozbudowana komunikacja z otoczeniem,możemy konfigurowad każde wyjście(nóżkę),porty
generalnego przeznaczenia. Spora dowolnośd implementacji/konfiguracji/dostosowania do potrzeb

MCU) - to komputer wykonany w jednym układzie scalonym, używany do sterowania urządzeniami elektronicznymi.
Układ oprócz jednostki centralnej CPU posiada zintegrowaną różnego rodzaju pamięd oraz układy wejścia-wyjścia.
Mikrokontroler stanowi użyteczny i całkowicie autonomiczny system mikroprocesorowy, który z reguły do swej pracy
nie potrzebuje dodatkowych układów może bezpośrednio współpracowad z różnymi urządzeniami zewnętrznymi.
Mikrokontrolery wykorzystuje się powszechnie w sprzęcie AGD, układach kontrolno-pomiarowych, w przemysłowych
układach automatyki, w telekomunikacji itp.

Mikroprocesor->ograniczona(sztywna) komunikacja z otoczeniem,(kontrolę czyny uważamy za komunikację z
otoczeniem)

Mikroprocesor to układ cyfrowy wykonany jako pojedynczy układ scalony o wielkim stopniu integracji zdolny do
wykonywania operacji cyfrowych według dostarczonych mu instrukcji. Mikroprocesor (w skrócie μP) jest
programowalnym cyfrowym elektronicznym układem, który łączy w sobie funkcje centralnej jednostki obliczeniowej
(CPU) w pojedynczym półprzewodnikowym układzie scalonym. Pierwszy mikroprocesor powstał w wyniku
zredukowania rozmiaru słowa do 4 bitów, tak aby tranzystory tworzące jego obwody logiczne zmieściły się w jednym
układzie. Jeden lub więcej mikroprocesorów zazwyczaj służą jako CPU w systemach komputerowych, komputerach
wbudowanych lub urządzeniach.

Potokowość (ang. pipelining) — technika budowy procesorów polegająca na podziale logiki procesora
odpowiedzialnej za proces wykonywania programu na specjalizowane grupy w taki sposób, aby każda z grup
wykonywała częśd pracy związanej z wykonaniem rozkazu. Grupy te są połączone sekwencyjnie — potok (ang. pipe)
— i wykonują pracę równocześnie, pobierając dane od poprzedniego elementu w sekwencji. W każdej z tych grup
rozkaz jest na innym stadium wykonania. Można to porównad do taśmy produkcyjnej. W uproszczeniu, potok
wykonania instrukcji procesora może wyglądad następująco:

Uproszczony schemat potokowości. Części rozkazów oznaczone na zielono wykonywane są równocześnie.

1.Pobranie instrukcji z pamięci - ang. instruction fetch (IF)

2.Zdekodowanie instrukcji - ang. instruction decode (ID)

background image

7 |

S t r o n a

3.Wykonanie instrukcji - ang. execute (EX)

4.Dostęp do pamięci - ang. memory access (MEM)

5.Zapisanie wyników działania instrukcji - ang. store; write back (WB)

W powyższym 5-stopniowym potoku, przejście przez wszystkie stopnie potoku (wykonanie jednej instrukcji) zabiera
co najmniej 5 cykli zegarowych. Jednak ze względu na jednoczesną pracę wszystkich stopni potoku, jednocześnie
wykonywanych jest 5 rozkazów procesora, każdy w innym stadium wykonania. Oznacza to, że taki procesor w
każdym cyklu zegara rozpoczyna i kooczy wykonanie jednej instrukcji i statystycznie wykonuje rozkaz w jednym cyklu
zegara. Każdy ze stopni potoku wykonuje mniej pracy w porównaniu do pojedynczej logiki, dzięki czemu może
wykonad ją szybciej - z większą częstotliwością - tak więc dodatkowe zwiększenie liczby stopni umożliwia osiągnięcie
coraz wyższych częstotliwości pracy.

Podstawowym mankamentem techniki potoku są rozkazy skoku, powodujące w najgorszym wypadku potrzebę
przeczyszczenia całego potoku i wycofania rozkazów, które następowały zaraz po instrukcji skoku i rozpoczęcie
zapełniania potoku od początku od adresu, do którego następował skok. Taki rozkaz skoku może powodowad
ogromne opóźnienia w wykonywaniu programu - tym większe, im większa jest długośd potoku. Dodatkowo szacuje
się, że dla modelu programowego x86 taki skok występuje co kilkanaście rozkazów. Z tego powodu niektóre
architektury programowe (np. SPARC) zakładały zawsze wykonanie jednego lub większej ilości rozkazów
następujących po rozkazie skoku, tzw. skok opóźniony. Stosuje się także skomplikowane metody predykcji skoku lub
metody programowania bez użycia skoków.

CPLD (ang. Complex Programmable Logic Device) - złożone programowalne układy elektroniczne.

Układy te są koncepcyjnie podobne do SPLD, lecz są bardziej złożone, czyli mają większe zasoby logiczne i możliwości
funkcjonalne. Mają architekturę hierarchiczną opartą na makrokomórkach logicznych, których zawierają od
kilkudziesięciu do kilkuset. Zazwyczaj od 4 do 16 makrokomórek jest połączonych w większe bloki funkcjonalne.
Większa ilośd bloków jest łączona za pomocą matrycy połączeniowej kluczy, której zdolnośd łączeniowa określa w
jakim stopniu układ jest programowalny. Jedną z najważnieszych cech architektury układów CPLD jest liczba termów
przypadających na jedną makrokomórkę oraz możliwośd pożyczki termów z sąsiednich makro komórek. Jeśli układ
zawiera wiele bloków funkcjonalnych, są one łączone między sobą za pomocą matrycy połączeniowj kluczy, której
zdolnośd łączeniowa jest ważną cechą układów CPLD. Ta liczba połączeo wewnętrz matrycy określa bowiem, jak
łatwo jest „wpasowad” jakiś projekt w dany układ programowalny.

FPGA (ang. Field Programmable Gate Array) - dosł. "bezpośrednio programowalna macierz bramek" to rodzaj
programowalnego układu logicznego. Dla projektanta ma funkcjonalnośd taką samą jak układ typu ASIC, jednak może
byd wielokrotnie przeprogramowany po tym jak został już wytworzony, zakupiony i zamontowany w urządzeniu
docelowym. Największymi dostawcami tego typu układów są firmy Altera Corp. i Xilinx a także Actel, Atmel, Cypress,
Lattice Semiconductor, QuickLogic.

Układy FPGA są zazwyczaj wolniejsze od odpowiadających im układów ASIC i pobierają więcej mocy. Mają natomiast
wiele innych zalet takich jak krótszy czas projektowania, niższe koszty produkcji (dla małych serii). Ponadto istnieje
obecnie możliwośd wykonania tzw. Hard-Copy układu FPGA, czyli układu scalonego o funkcjonalności takiej jak
wgrany do układu FPGA projekt. Układ taki jest szybszy i pobiera mniej mocy.

Na ogół układy FPGA zawierają rozmieszczone matrycowo bloki logiczne CLB. Poszczególne bloki są łączone ze sobą
za pośrednictwem linii traktów połączeniowych (Routing Channels) oraz programowalnych matryc kluczy
połączeniowych umieszczonych w miejscu krzyżowania się traktów poziomych i pionowych. Na obrzeżach matrycy
bloków logicznych znajdują się programowalne bloki IOB (wejściowo-wyjściowe). Struktury FPGA zawierają od 64 do
dziesiątków tysięcy bloków logicznych o bardzo zróżnicowanej budowie. Bloki logiczne mogą byd bardzo złożone, jest
ich wówczas mniej w układzie, lub względnie proste i jest ich wówczas więcej. Zazwyczaj złożone bloki logiczne

background image

8 |

S t r o n a

zawierają dwie lub więcej pamięci RAM umożliwiających tworzenie tablic wartości funkcji LUT (Look-up Table) i dwa
lub więcej przerzutników. W większości układów są to tablice czterowejściowe (pamięd RAM o pojemności 16 bitów).
W układach o prostszej budowie, bloki logiczne zawierają zwykle dwuwejściowe układy generacji funkcji
kombinacyjnych lub multipleksery czterowejściowe i ewentualnie przerzutniki.

Nowoczesne układy FPGA mają możliwośd przeprogramowania 'w locie' co prowadzi do pomysłu
rekonfigurowalnego komputera czy rekonfigurowalnego systemu - czyli układów, które mogą dostosowad swoją
strukturę tak by lepiej sprostad zadaniom, przed którymi stoją w danym momencie.

Układy FPGA używane są w cyfrowym przetwarzaniu sygnałów, lotnictwie i wojsku, w fazie prototypowej układów
ASIC i w wielu innych dziedzinach. Np. układy FPGA firmy Xilinx z powodzeniem sprawdziły się w misji na Marsa
zakooczonej lądowaniem łazików Spirit i Opportunity.

Aby zdefiniowad zachowanie układu FPGA używa się języka opisu sprzętu takiego jak Verilog czy VHDL. Następnie
przy pomocy narzędzi syntezy generuje się listę połączeo, która potem w procesie implementacji jest
odwzorowywana w konkretnym układzie. Należy zwrócid uwagę, że proces syntezy dopuszcza tworzenie układów
logicznych dowolnych rozmiarów, podczas gdy proces implementacji jest próbą wpisania go do konkretnego układu
FPGA, gdzie może zabraknąd zasobów do realizacji zadanej logiki. Do zaprogramowania układu FPGA służy plik
binarny, który zawiera informacje o konfiguracji układu.

Układy rekonfigurowalne można podzielid ze względu na rodzaj technologii wykorzystywanej w celu pamiętania
swojej konfiguracji:

* SRAM - Bazuje na technologii pamięci statycznej, dlatego przy braku zasilania tracą swoją konfigurację.

* EPROM - Zazwyczaj programowalne tylko raz. Ewentualnie można wykasowad ich konfigurację przy pomocy
promieniowanie ultrafioletowego.

* EEPROM - Wielokrotnego użytku. Zachowują swoją konfigurację przy braku zasilania.

* FLASH - Wielokrotnego użytku. Zazwyczaj komórki FLASH są mniejsze niż odpowiadające im komórki EEPROM,
dlatego układy takie są taosze do wyprodukowania.

* przepalenia (ang. fuse), udrożnienia (ang. anti-fuse) - Programowalne tylko raz. Jest to stary typ technologiczny,
ale nadal chętnie wykorzystywany przez wojsko z uwagi na wysoką odpornośd na impuls elektromagnetyczny z broni
nuklearnej. W układach tego typu podczas programowania następuje "przepalenie" wybranych wewnętrznych
rezystorów (typ. 300 Ω) połączeniowych, co skutkuje trwałością i nieodwracalnością zapisu układu.

Układy FPGA to jedna z dwóch rodzin programowalnych cyfrowych układów logicznych o dużym stopniu scalenia -
drugą grupę stanowią układy CPLD (Complex Programmable Logic Device) o nieco innej architekturze.

Różnica między CPLD i FPGA

Układy FPGA i CPLD różnią sie budową wewnętrzną (chociaż te różnice czasami są słabo widoczne). Układy FPGA to
matryca identycznych bloków logicznych pomiędzy którymi znajdują się trakty połączeniowe (do łączenia logiki
wewnątrz układu FPGA). Najczęściej do konfigurowania tych układów jest wykorzystywana pamięd SRAM.

Układ CPLD można wyobrazid jako połączenie kilku (kilkunastu) układów typu SPLD (np.: GAL) - zwanych
makrokomórkami. Pomiędzy makrokomórkami znajdują się trakty połączeniowe. Do konfigurowania układów CPLD
najczęściej wykorzystywana jest pamięd typu EEPROM (FLASH).

Raid

background image

9 |

S t r o n a

University of California w Berkeley

RAID – Redundant Array of Independent Disks

RAID 0 – nie przewiduje redundancji. Zastosowania : wydajnośd i

pojemnośd najważniejsza.

RAID 1 – Redundancja poprzez duplikowanie danych. Zmniejszona

pojemnośd, wysoka wydajnośd.

RAID 2 – paski bardzo małe, często równe jednemu słowu. Osobne dyski na

kod korekcyjny (zwykle kod Hamminga).

RAID 3 – podobnie jak RAID 2. Tylko jeden dysk na kod korekcyjny – bit

parzystości.

RAID 4 – każdy dysk działa niezależnie. Zastosowania : wymagana szybka

odpowiedź na żądania we/wy. Paski duże. Bity parzystości na

osobnym dysku.

RAID 5 – ppodobnie jak RAID 4. Paski parzystośdi rozproszone na

wszystkich dyskach.

Taksonomia Flynna jest klasyfikacją architektur komputerowych, zaproponowaną w latach sześddziesiątych XX wieku
przez Michaela Flynna, opierająca się na liczbie przetwarzanych strumieni danych i strumieni rozkazów.

W taksonomii tej wyróżnia się cztery grupy:

SISD (Single Instruction, Single Data) - przetwarzany jest jeden strumieo danych przez jeden wykonywany program -
komputery skalarne (sekwencyjne).

SIMD (Single Instruction, Multiple Data) - przetwarzanych jest wiele strumieni danych przez jeden wykonywany
program - tzw. komputery wektorowe.

MISD (Multiple Instruction, Single Data) - wiele równolegle wykonywanych programów przetwarza jednocześnie
jeden wspólny strumieo danych. W zasadzie jedynym zastosowaniem są systemy wykorzystujące redundancję
(wielokrotne wykonywanie tych samych obliczeo) do minimalizacji błędów.

MIMD (Multiple Instruction, Multiple Data) - równolegle wykonywanych jest wiele programów, z których każdy
przetwarza własne strumienie danych - przykładem mogą byd komputery wieloprocesorowe, a także klastry i gridy.

Klaster komputerowy (ang. cluster) - grupa połączonych jednostek komputerowych, które współpracują ze sobą w
celu udostępnienia zintegrowanego środowiska pracy.

Komputery wchodzące w skład klastra (będące członkami klastra) nazywamy węzłami (ang. node).

Jedną z najbardziej popularnych implementacji klastrów obliczeniowych jest klaster typu Beowulf gdzie rolę węzłów
pełnią wydajne komputery klasy PC, pracujące pod kontrolą GNU/Linuksa oraz z zainstalowanym oprogramowaniem
pozwalającym uzyskad przetwarzanie równoległe np. bibliotekami MPI, PVM.

background image

10 |

S t r o n a

Obecnie najszybszy klaster komputerowy w Polsce to superkomputer Galera będący częścią Centrum
Informatycznego Trójmiejskiej Akademickiej Sieci Komputerowej.

Typy klastrów

W istniejących rozwiązaniach klastrowych można wyodrębnid trzy podstawowe klasy wynikające z celów budowy
takich rozwiązao:

* Klastry wydajnościowe: pracujące jako zespół komputerów, z których każdy wykonuje własne zadania
obliczeniowe. Celem ich budowy jest powiększenie mocy obliczeniowej, w sytuacji kiedy różne komputery w klastrze
pracują nad odrębnymi podzadaniami pojedynczego dużego zadania obliczeniowego. Wiele obecnych
superkomputerów działa na tej zasadzie.

* Klastry niezawodnościowe: pracujące jako zespół komputerów dublujących nawzajem swoje funkcje (łączenie
równoległe). W razie awarii jednego z węzłów, następuje automatyczne przejęcie jego funkcji przez inne węzły.

* Klastry równoważenia obciążenia: pracujące jako zespół komputerów, z których każdy wykonuje własne zadanie
z puli zadao skierowanych do całego klastra. W takiej sytuacji pojedynczy komputer może wykonywad niezależne
zadanie lub współpracowad z kilkoma innymi węzłami klastra wykonując podzadanie większego zadania
obliczeniowego. Klastry równoważenia obciążenia mogą byd traktowane jako pierwowzór, a obecnie także jako
częsty element składowy, systemów gridowych

W praktyce rozwiązania klastrowe mają charakter mieszany i wykonują dla pewnych aplikacji funkcje
wydajnościowe, przy jednoczesnym odgrywaniu roli niezawodnościowej lub równoważenia obciążenia. Szczególnie
często taki tryb pracy klastra dotyczy serwerów WWW, pocztowych itp., z racji sposobu pracy aplikacji obsługujących
tego typu serwisy. Z drugiej strony aplikacje bazodanowe, wykorzystywane w biznesie, słabo poddają się
zrównolegleniu (szczególnie, gdy żądamy transakcyjności).

Procesory SMP - Wieloprocesory symetryczne

a) Cechy szczegolne

- Dwa lub wieksza liczba podobnych procesorow o porownywalnych mozliwosciach

- Procesory wspolnie uzytkuja pamiec glowna i urzadzenia I/O.

- Sa wzajemnie polaczone za pomoca magistrali, w taki sposob, ze czas dostepu do pamieci dla kazdego procesora
jest taki samo

- Wszystkie procesory moga realizowac takie same funkcje

- System sterowany jest przez zintegrowany system operacyjny, ktory zapewnia wspolprace miedzy procesorami i ich
programami.

b) Plusy

- Wydajnosc-wiele procesorow, niektore czesci programu moga byc wykonywane rownolegle

- Dostepnosc-uszkodzenie jakiegos procesora nie powoduje zatrzymania komputera, po prostu spada wydajnosc

- Mozliwosc rozbudowy-dodawanie procesorow

- Skalowanie

RODZAJE ORGANIZACJI SYSTEMOW WIELOPROCOESOROWYCH

background image

11 |

S t r o n a

c)magistrala z podzialem czasu

- najprostsze rozwiazanie - kazdy procesor ma taka sama ilosc czasu

- elastycznosc - latwo jest rozszerzyc system, dodajac kolejny procesor

- niezawodnosc - uszkodzenie procesora nie spowoduje padniecia systemu

- ograniczona wydajnosc - wszystkie odniesienia do pamieci przechodza przez wspolna magistrale

d) pamiec wieloportowa

- Kazdy procesor ma swoj wlasny modul pamieci glownej

- Bardziej zlozona niz rozwiazanie magistralowe

- Czesc pamieci moze byc skonfigurowana jakos pamiec "wlasna" procesora

- Brak srodkow alarmowania innych procesorow o aktualizacji pamieci - powinien byc stosowany zapis jednoczesny.

c) Centralna jednostka sterujaca

- Centralna jednostka sterujaca - kierowanie przeplywem oddzielnych strumieni danych miedzy niezaleznymi
modulami: procesorem,pamiecia,I/O.

2. Protokol MESI

M- modified - w pamieci podrecznej jest najnowszy stan pamieci, w pamieci glownej jest nieaktualny

E- wylaczny - w pamieci podrecznej jest najnowszy stan w pamieci, w pamieci glownej rowniez

S - wspolny - w kilku pamieciach podreczny jest najnowszy stan pamiec, w pamieci glownej rowniez

I - niewazny - w pamieci podrecznej jest stary wpis,

3. Klastry

a) Cechy szczegolne

- grupa polaczonych ze soba, kompletnych komputerow, tworzacych razem jednolity zasob obliczeniowy

sprawiajacy wrazenie, ze jest jedna maszyna

- Czesto stosowane macierze dyskowe RAID - uszkodzenie jednego dysku nie powoduje zepsucia systemu(

mozna przywrocic dane np. poprzez kody parzystosci)

b) Korzysci

- Skalowalnosc bezwzgledna - klaster moze zawierac dziesiatki komputerow, z ktory kazdy jest wieloprocesorem

- Skalowalnosc przyrostowa - Mozna poszerzac Klaster bez koniecznosci dokonywania powaznej modernizacji

- Wysoka dostepnosc - Uszkodzenia wezla w klastrze nie powoduje utraty mozliwosci obslugi

- Korzystny stosunek ceny do wydajnosci - mozna uzyskac wysoka wydajnosc przy stosunkowo malej cenie

c) Metody tworzenia klastrow

background image

12 |

S t r o n a

- Rezerwa bierna - Dodatkowy serwer przejmuje zadania w przypadku uszkodzenia serwera podstawowego -
Zwieksza dostepnosc, ale nie poprawia wydajnosci

- Dodatkowy serwer czynny - Klasyczna definicja klastra

- Odrebne serwery - Brak dyskow wspolnych, ciagle wymienianie danych miedzy soba, aby jeden mogl przejac prace
drugiego w razie uszkodzenia

- Serwery polaczone dyskami - Polaczone sa tymi samymi dyskami, ale kazdy ma rowniez swoj dysk

- Serwery wspoluzytkujace dyski 0

4. NUMA - systemy oparte na niejednorodnym dostepie do pamieci

a) Cechy szczegolne

- Wszystkie procesory maja dostep do kazdej czesci pamieci glownej przy pomocy operacji ladowania i zapisu.

- Czas dotepu do pamieci zalezy od rejonu ktorego ten dostep dotyczy

- CC-NUMA - systemy NUMA, w ktory jest zachowania spojnosc pamieci podrecznych

- System NUMA pozbawiony spojnosci pamieci podrecznych jest w mniejszym lub wiekszym stopniu rownowazny
klastrowi

- Kazdy wezel CC-NUMA sklada sie z N procesorow, zawierajacy pamiec podreczna L1, oraz polaczony z osobista
pamiecia L2.

Pamieci podreczne polaczone sa ze wspolna magistrala, do ktorej polaczona jest pamiec glowna kazdego wezla, I/O
oraz katalog, ktory

realizuje przesylanie zadan pobrania danego wiersza pamieci do innych wezlow CC-NUMA


"Stos"

Stos jest obszarem pamięci używanym do "tymczasowego" przechowywania danych istotnych dla programu.

Jak powiedzieliśmy w sekcji "Rejestry i flagi" rejestry są obszarem kilku(nasto)bajtowym i nie nadają się raczej do
przechowywania danych - raczej do ich obróbki.

Funkcję magazynu pełni właśnie stos.

Jak działa stos?

Wyobraź sobie kilka kartek - umownie ponumerowanych od 1 do 10 - symbolizujących dane. Jeśli na stole położysz
kartkę o numerze 1, to masz już jedną kartkę "na stosie". Jeśli na kartce 1 położysz kartkę 2, to wówczas masz na
stosie już dwie kartki. Dołóż jeszcze kartki 3 i 4 - 4 kartki na stosie. Zauważ jednak, że w danym momencie masz
dostęp tylko do kartki 4 - tylko ją możesz w danym momencie zdjąd ze stosu. Kartki 1 2 i 3 są dla ciebie aktualnie
niedostępne - aby móc zobaczyd co jest na nich napisane musisz zdjąd kartkę 4, 3 i 2. Wniosek 1: ze stosu dane mogą
byd pobierane w odwrotnej kolejności, niż zostały na nim umieszczone. Wniosek 2: W danym momencie masz dostęp
do ostatnio umieszczonego na stosie elementu - bez możliwości natychmiastowego dostępu do elementów
poprzednich.

Assembler - do obsługi stosu - posiada dwie analogiczne instrukcję -na_stos (push) i ze_stosu (pop), ale o tym
powiemy w dalszej części tego kursu.

background image

13 |

S t r o n a

Asembler x86

Asembler x86 to język programowania z rodziny asemblerów do komputerów klasy PC, które posiadają architekturę
głównego procesora zgodną z x86.

Język ten jest pełen sprzeczności ze względu na to, że każdy nowy procesor wprowadzający różne ulepszenia musi
jednocześnie pozostawad kompatybilny z poprzednikami. W procesorach 80286 jest około 250 rozkazów, w 80486
już ok. 350, natomiast w procesorze Pentium 4 – ok. 580 (w procesorach firmy AMD jest ich ponad 620).

Język jest dodatkowo komplikowany przez obecnośd dwóch składni: Intela i AT&T (istnieją automatyczne
translatory), oraz przez fakt, że możliwości i zasady wykorzystania tego języka są mocno zależne od systemu
operacyjnego oraz kompilatora, różne są także sposoby komunikacji asemblera z innymi językami programowania.

Instrukcje

Tu musze to skonczyc.

Rejestry

32-bitowe rejestry ogólnego przeznaczenia to:

* EAX – Accumulator (akumulator - jego pamięd wykorzystuje arytmometr; używa się go do przechowywania
wyników wielu operacji)

* EBX – Base Register (rejestr bazowy - służy do adresowania)

* ECX – Counter Register (rejestr licznikowy - służy jako liczik w pętli)

* EDX – Data Register (rejestr danych - umożliwia przekaz/odbiór danych z portów wejścia/wyjścia)

* ESP – Stack Pointer (przechowuje wskaźnik wierzchołka stosu)

* EBP – Base Pointer (rejestr bazowy - służy do adresowania)

* ESI – Source Index (rejestr źródłowy - trzyma źródło łaocucha danych)

* EDI – Destination Index (rejestr przeznaczenia - przetrzymuje informacje o miejscu docelowym łaocucha danych)

Możliwy jest też dostęp do ich 16-bitowych mniej znaczących części – AX, BX, CX, DX, SP, BP, SI, DI, a w przypadku
czterech pierwszych także do młodszego (Low) i starszego bajta (High) – odpowiednio AL, AH, BL, BH, CL, CH, DL, DH.

W procesorach 64-bitowych do rejestrów o długości 64 bitów odwołuje się poprzez nazwę z przedrostkiem R zamiast
E - np. RAX, RBX.

Są też dostępne rejestry segmentów, określające położenie segmentów pamięci w przestrzeni adresowej:

* CS – Code Segment (segment kodu)

* DS – Data Segment (segment danych)

* ES – Extra Segment (dodatkowy segment danych)

* SS – Stack Segment (segment stosu)

* FS – dodatkowy rejestr segmentu

* GS – dodatkowy rejestr segmentu

background image

14 |

S t r o n a

Ponadto istnieją:

* EFLAGS – rejestr flag procesora, składający się z pojedynczych bitów określających stan procesora

* EIP – wskaźnik adresowy na aktualnie wykonywaną instrukcję. Za jego pomocą procesor realizuje m.in. skoki,
pętle, przejścia do podprogramów.

* rejestry kontrolne procesora CRn (n – numer rejestru)

* rejestry debugera DRn (n – numer rejestru);

* rejestry koprocesora arytmetycznego:

o osiem rejestrów stosu koprocesora, oznaczanych w zależności od kompilatora jako ST0... ST7, 0... 7 lub
ST(0)... ST(7);

o rejestr stanu koprocesora;

o rejestr stanu stosu koprocesora;

o rejestr sterujący koprocesora

Zadania z asm.

Liczba 0 w bajcie

_asm {

MOV AX, wejscie
MOV BX, 0x00
MOV CX, 0x01

petla:
TEST AX, CX
JNZ etykieta
INC BX
etykieta:
SHL CX, 1
TEST CX, 0x100
JZ petla

MOV wynik, BX

}

Liczba 1 w bajcie

xor bh,bh
petla:
mov bl,wejscie
and bl,00000001b
jz przesun:
add bh,1

background image

15 |

S t r o n a

przesun:
shr wejscie,1
test wejscie,1
jnz petla:
mov wynik,bh

Dzielenie przez 3.2

MOV AX,input //przerzucamy wejście do AX

SHL AX, 3 //przesuwamy 3 bity w lewo, czyli tak, jakbyśmy mnożyli razy 8

ADD AX,input//dodajemy do AX wejście

ADD AX,input//dodajemy do AX wejście

SHR AX, 5 // przesuwamy o 6 bity, czyli tak, jakbyśmy dzielili przez 32

MOV wynik, BX //zapisujemy do zmiennej wynik nasze obliczenia


Wyszukiwarka

Podobne podstrony:
ASK w2 id 70602 Nieznany (2)
ASK w4 id 70603 Nieznany
ask egzamin Grupa A id 70516 Nieznany (2)
ASK egzamin id 70515 Nieznany
ASK w2 id 70602 Nieznany (2)
ASK w4 id 70603 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany

więcej podobnych podstron