Dla układu Intel 8255 z dwoma 8-bitowymi portami PA i PB
- Tryb 0 – przeznaczony do realizacji bezwarunkowych operacji I/O.
- Możliwość zaprogranowania każdego portu jako I lub O
- Wyjścia z rejestrami zatrzaskowymi i bez tych rejestrów (co?)
- Tryb 1 - przeznaczony do realizacji operacji IO z przerwaniem, przy jednym kierunku przesyłania danych. Potrzebne do tego celu sygnały sa wyprowadzane lub wprowadzane z wykorzystaniem konkretnej linii portu
- Tryb 2 - przeznaczony do operacji IO z przerwaniem, tylko przez port A, przy dwóch kierunkach przesyłu danych
Odświeżanie DRAM jest konieczne przez wzgląd na sposób przechowywania danych - trzymane są w kondensatorach, które z czasem tracą ładunek. Odświeżanie jest dodatkową pracą dla procesora.
Słowniczek: RAS - row address strobe - adres wiersza komórki CAS - column address strobe - adres kolumny komórki
Mamy 3 tryby odświeżania:
- Tylko sygnałem RAS - tylko adres wiersza zostaje zatwierdzony po sygnale RAS. Nie ma potrzeby używania CAS ale jest potrzebny zewnętrzny licznik do iteracji po wierszu
- Ukryte - użycie obu linii CAS i RAS, najpierw następuje synchronizacja wiersza, potem kolumny
- CAS przed RAS - gdy brak sygnału na CAS przed RAS, DRAM ignoruje adresy i używa wewnętrznego licznika, aby odświeżyć
Słowniczek: Cache - kurewsko szybka i kurewsko droga pamięććć Hit or Memes ratio - Skuteczność Cache - im częściej szukana w RAMie komórka znajduje się już w cache'u, tym lepiej TODO
- Direct Mapping Cache - dla ustawionego rozmiaru 'skoku' (dalej S), czyli odległości relatywnej w pamięci głównej, dana linia i w pamięci cache, może odwoływać się do adresu i, s+i, 2s+i w RAMie. Czyli trzymamy w cache'u zawartość komórki oraz licznik i, który mówi, jak duży jest skok
- Fully Associative Cache - najłatwiej - każda linia pamięci cache może odwoływać się do dowolnej komórki pamięci, trochę jak zwykły wskaźnik.
- Set Associative Cache - Pamięć dzielimy na zbiory - sety. Mieszanka DMC oraz FAC - numer setu determinuje nam zakres głównej pamięci, natomiast każda komórka cache w secie, może wskazywać na dowolne miejsce w zakresie tego setu
- Z uwzględnieniem informacji:
- MIN - co najdłużej nie będzie potrzebne. Korzystając z low-levelowej magii czarodziejów assemblera, czytamy kod do przodu i ustalamy, jakie dane nie będą potrzebne w najbliższym czasie. Niestety różne rozgałęzienia (ify) przebiegu programu mogą wyprowadzić w pole takie mechanizmy (ciekawostka - makra
likely
orazunlikely
w C) - LRU - co najdłużej potrzebne nie było (skoro długo nie było potrzebne, dalej pewnie też nie będzie). Może być słabe w sytuacji, gdy mamy w cache 10 komórek, a pracujemy na 11stu, więc ciągle będziemy wprowadzać i usuwać komórki z cache'u
- MIN - co najdłużej nie będzie potrzebne. Korzystając z low-levelowej magii czarodziejów assemblera, czytamy kod do przodu i ustalamy, jakie dane nie będą potrzebne w najbliższym czasie. Niestety różne rozgałęzienia (ify) przebiegu programu mogą wyprowadzić w pole takie mechanizmy (ciekawostka - makra
- Bez uwzględniania informacji:
- FIFO - pierwsze wlata pierwsze wylata głosem Pana Mazurkiewicza. Kiepskie, kiedy dużo operujemy na jednej zmiennej, a wymieniamy resztę (np jakaś iteracja). Wtedy będziemy 'wymiatali' często używaną zmienną tak często, jak te używane tylko raz.
- Random - tanie, nie wymaga żadnego układu zarządzania cache, morda nosacza
TODO JEST WIĘCEJ O ZAPISIE DO PAMIĘCI GŁÓWNEJ GDY WYLATUJE Z CACHE
Przetwarzanie potokowe - pipelining. Krótki wstęp - przetworzenie każdego rozkazu dzieli się na kilka etapów, realizowanych przez kilka różnych układów. To trochę jak przekazywanie worka z piachem w szeregu ludzi. Można czekać, aż jeden worek przejdzie przez cały łańcuszek i rozkaz się skończy, albo można przekazywać worek za workiem, żeby każdy miał ciągle coś do roboty.
Jakie z tym problemy? Za każdym razem, gdy w programie jest if
, program się rozgałęzia i część pracy musi zostać cofnięta. Są na to 3 sposoby:
- Przeczekać – opóźnienie 3 jednostki dla skoku bezwarunkowego, 5 dla warunkowego
- Nie martwić się – procesor ciągnie kolejne rozkazy, nie zwracając uwagi na skoki (w większości przypadków rozkaz skoku się nie wykonuje)
- Być czujnym – rozwiązanie drogie, bo wymaga specjalnej konstrukcji procesora. Gdy procesor w kroku drugim dowiaduje się, że będzie skok, wykonuje jednocześnie algorytm potokowy oraz pobiera i buforuje rozkazy z miejsca, gdzie może być skok. Jeśli się okaże, że skok się wykonał procesor dekoduje rozkazy już pobrane
todo obrazek
- Identyfikuje linie urządenia zgłaszającego przerwanie
- Zamiętuje stan procesora poprzez przeniesienie rejestrów PSW na stos
- Wykonywanie procedury obsługi znajduącego się pod konkretnym adresem( zeleżnym od urządzenia które zgłosiło przerwanie)
-
Cykl odczytu - Pierwszą fazą żądania odczytu z pamięci stanowi pobranie adresu wiersza, w którym znajduje się komórka i zatwierdzeniu tego adresu, po ustabilizowaniu się stanu szyny adresowej sygnałem RAS (Row Address Strobe). Następnie na szynę adresową pamięci podawany jest adres kolumny zawierającej żądaną komórkę, który zatwierdzany jest sygnałem CAS (Column Address Strobe). Odstęp czasu pomiędzy sygnałami CAS i RAS wynika z konstrukcji pamięci i musi zapewnić czas nie tylko na ustabilizowanie się stanu szyny adresowej, lecz także na wysterowanie wiersza do odczytu.
-
Cykl zapisu - pobranie adresu pod który będziemy zapisywać, synchronizacja RAS i CAS, wyzwolenie sygału WR zapisującego dane
- transmisja asynchroniczna - częstotliwość zegara k razy większa od częstotliwości nadawania, długość znaku to 5-8 bitów, możliwa jest kontrola poprawności transmisji za pomocą bitu parzystości. Synchronizacja na podstawie przerwy w nadawaniu.
- transmisja synchroniczna - częstotliwość k razy większa od nadawnia, ilość znaków synchronizacji to 1 lub 2. Synchronizacja może być zewnętrzna lub wewnętrzna.
Architektury systoliczne, to architektury specjalizowane do implementacji operacji macierzowych, przetwarzania sygnałów i obrazów w czasie rzeczywistym. Globalnie synchronizowane procesory elementarne są połączone w regularną siatkę. Każdy procesor jest połączony tylko z najbliższymi sąsiadami. Struktura wewnętrzna procesora, w zależności od postawionego zadania, możę być bardzo prosta lub dążyć do stopnia ukomplikowania współczesnych mikroprocesorów. Wyniki przetwarzania są uzyskiwane stopniowo. 1.18.1 Podstawowe struktury
- tablica z częściowym rozpowszechnianiem danych – komunikacja PE punkt-punkt oraz magistrala, komunikacja zewnętrzna przez magistralę, rozbudowane układy sterujące, stopień wykorzystania >50% • tablica heksagonalna – komunikacja między procesorami typu punkt-punkt, komunikacja zewnętrzna tylko za pomocą procesorów brzegowych, prosta konstrukcja, duża liczba PE, niski stopień ich wykorzystania (<50%)
- tablica przetwarzania potokowego – komunikacja jak w heksagonalnej, prosta konstrukcja, liczba PE mniejsza niż w tablicy heksagonalnej, stopień ich wykorzystania – co najmniej 50% • tablica typu wavefront – asynchroniczna komunikacja punkt-punkt, na zewnątrz tylko brzegowe, dobra skalowalność, łatwe przeprogramowywanie, dobre parametry FTC, stopień wykorzystania PE to 50%
- tablica z rozpowszechnianiem danych – komunikacja tylko przez magistrale, rozbudowane układy sterujące, łatwa implementacja algorytmów, wysoki stopień wykorzystania PE 1.18.2 Parametry jakościowe
- Czas wykonania obliczeń – czas od rozpoczęcia pierwszej operacji, aż do ukończenia ostatniej
- Okres przetwarzania potokowego – odstęp między dwoma sukcesywnymi wynikami obliczeń procesora
- Okres bloku – odstęp między inicjacjami dwóch sukcesywnych bloków
- Wskaźnik użycia procesora
- Rozmiar tablicy – tablica nie może być nieograniczona, czasem musi być ona mniejsza od rzeczywistego rozmiaru problemu, czasem możemy też użyć tablicy jednowymiarowej do zasymulowania tablicy 2D Pamięć lokalna – używana do rozszerzenia fizycznej tablicy do znacznie większej tablicy wirtualnej 10 1.18.3 Transputery Transputer to mikroprocesor w jednym układzie scalonym, zaprojektowany specjalnie do obliczeń równoległych (szybka komunikacja i łatwość połączenia z innymi transputerami). Wraz z nim został opracowany język programowania równoległego OCCAM. W skład transputera wchodzi procesor typu RISC, wewnętrzna pamięć RAM oraz łącze pamięci zewnętrznej, która umożliwia adresowanie w przestrzeni 4 GB. Do komunikacji z innymi transputerami wykorzystywane są cztery kanały DMA
- odczyt-modyfikacja-zapis – adres kolumny nie musi zostać zestrobowany, można natomiast użyć adresu z impulsów /CAS niskiego potencjału i następnie dokonać zapisu w przeciągu kilku nanosekund.
- tryb stronicowy – wiersz DRAM pozostaje otwarty przez utrzymywanie niskiego potencjału /RAS w trakcie trwania odczytów bądź zapisów odosobnionym impulsem CAS.
- tryb nakładkowy – cztery impulsy CAS mają dostęp do czterech sekwencyjnych lokacji w wierszu.
Kiedyś koprocesor był osobnym układem dołączonym np. magistralą. Obecnie jest on zintegrowany z procesoremgłównym, choć dwoistość architektury nadal jest widoczna – np. każdy z procesorów ma swoje rejestry. Ponadto, nie jest możliwa praca samego koprocesora, nie obsługuje on urządzeń I/O oraz przerwań. Współpraca polega na tym, że procesor podstawowy pobiera rozkazy zarówno dla siebie, jak i dla koprocesora(mają one specjalną preambułę), dekoduje je i po odcięciu preambuły odsyła rozkaz do koprocesora, przy okazji wyznaczając adresy efektywne argumentów.
- Dalej nie mam pojęcia o co chodzi - Z wikipedii: koprocesor to osobny układ scalony, który jest zrobiony specjalnie po to, by wykonywać na przykład obliczenia na liczbach zmiennoprzecinkowych. W przypadkach bardziej kozackich procesorów może mieć wbudowane nawet operacje na wektorach, czy innych złożonych strukturach liczbowych. Jak wiemy na wydziale elektroniki, najszybszym sposobem na wykonanie obliczeń jest zbudowanie dedykowanego układu specjalnie dla nich. To właśnie jest koprocesor.
DMA - Direct Memory Access - służy do tego, żeby procesor nie musiał zajmować się prostymi głupotami, w rodzaju przesyłania danych z jednego urządzenia do drugiego.
Przykładowo, gdy chcemy z pamięci wysłać coś przezmodem, procesor musiałby pobrać te dane z pamięci i wysłać do modemu. DMA robi to za niego, dzięki czemu procesor może zająć się w tym momencie czymś innym.
DMA nie jest od myślenia, jest od prostych zadań. Procesor wydaje rozkaz, DMA zasuwa.
- Blokowy - DMA dostaje rozkaz i zajmuje się pchaniem danych. Po prostu. Procesor przez ten czas siedzi cicho, bo nie ma dostępu do magistrali danych. Może obliczać sobie jakieś rzeczy we własnym zakresie, ale najpewniej nie będzie miał dostępu do urządzeń zewnętrznych, więc ma ograniczone pole do popisu. Za to układ DMA bez ograniczeń rozwija pełne prędkości
- Wykradanie taktów - Procesor daje DMA dostęp do magistrali danych, kiedy chce. DMA musi czekać, dopóki procesor da mu zielonego światła
- Zgodnie z zapotrzebowaniem - Ustalany jest rozmiar "bloków", na jakie DMA podzieli dane do przesłania. Jeśli po przesłaniu pojednynczego bloku procesor nie upomina się o dostęp do magistrali, przesyłany będzie kolejny blok i tak dalej
Pierwszą fazą jest ustawienie adresu zczytanego w strukturze pamięci (linie adresowe). Uaktywnienie linii MEMREQ na podstawie adresu, a także linii CE (logicznego wyboru danego układu pamiętającego) – stanem niskim. Następnie uaktywnia się linię odczytu i pobiera dane.
W zapisie do pamięci RAM adres i wybór układu pozostaje jak w odczycie. Zamiast linii odczytu (RD) ustawiamy stan niski na linii zapisu (WR) i pobieramy dane od procesora, który musi udostępnić je na tak długi czas, aby zapis został ukończony
- Co to wgl jest? - Jest to sposób, w jaki rozmawiamy z podłączonymi do kontrolera układami I/O - klawiatura, wyświetlacz, i tak dalej.
- współadresowanie - rejestry układów I/O udostępniane są jako zwykłe komórki pamięci w przestrzeni adresowej pamięci. To tak jak mamy na PTMach.
- adresowanie izolowane - rejestry urządzenia dostępne są w odrębnej przestrzeni adresowej zwanej przestrzenią adresową wejścia/wyjścia lub przestrzenią portów; do przesyłania danych do i z takich układów służą rozkazy OUT i IN.
Tryby pracy:
- Tryb 0 – interrupt on terminal count, odliczanie jednorazowe
- Tryb 1 – programmable one-shot, generowanie jednego impulsu
- Tryb 2 – rate generator, dzielnik częstotliwości
- Tryb 3 – generator z symetrycznym sygnałem wyjścia (jak w trybie 2, ale częstotliwość jest dzielona przezdwa), generator fali prostokątnej
- Tryb 4 – impuls przerzutnika, sterowany programowo
- Tryb 5 – impuls przerzutnika, sterowany sprzętowo