1. PROTOKÓŁ MESI
Zgodnie z tym protokołem każdej kopii bloku pamięci operacyjnej w pamięciach podręcznych przypisywany jest jeden z czterech atrybutów (dwa bity):
Modified (zmieniona) - dana kopia znajdująca się tylko w jednej pamięci podręcznej, niektóre dane zostały w niej zmienione;
Exclusive (niezmieniona) - dana kopia tylko w jednej pamięci podręcznej i żaden bajt danych nie został w niej zmieniony;
Shared (wspólna) -niezmieniona kopia znajdująca się w kilku pamięciach podręcznych;
Invalid (nieważna).
2.GRIDS
Całość raczej SYKO-grids.pdf.
3. LISTA ROZKAZÓW
- zbiór wszystkich instrukcji wykonywanych przez dany procesor
Każdy typ procesora ma - na ogół - swoją własną, specyficzną listę rozkazów. W przypadku procesorów uniwersalnych asortyment instrukcji znajdujących się na liście rozkazów jest wystarczający do zapisania dowolnie złożonego algorytmu przetwarzania danych.
Większość instrukcji znajdujących się na liście rozkazów procesora realizuje operacje arytmetyczne, logiczne, przesyłanie i skoki.
Najkrótsza możliwa lista rozkazów:
MISC (minimal instruction set computer)
4. HIERARCHIA PAMIĘCI
(najwyżej) (najniżej)
rejestry podręczna L1 podręczna L2 operacyjna dyskowa
100 B 16 kB 1 MB 512 MB 200 GB
1 ns 2 ns 5 ns 100 ns 5 ms
5. TRAFIONY ODCZYT
Nic się nie zmienia.
6. KODOWANIE LICZB
Opisane w kodowanie_liczb.pdf.
7. STAN AKTYWNY I JAŁOWY MAGISTRALI
Opisane w magistralaPCI.pdf na slajdzie 27.
8. PRZESTRZENIE ADRESOWE:
W systemie PCI wyróżnia się trzy przestrzenie adresowe:
1. danych,
2. we-wy,
3. konfiguracyjną.
W przesyłanym w fazie adresowej, po liniach C/BE[3::0], kodzie operacji zawarta jest informacja o tym, do której z przestrzeni adresowych odnosi się wystawiony równolegle na liniach AD[31::00] adres. Są też dwa rozkazy służące do inicjowania operacji bezadresowych (informacja kierowana jest do wszystkich urządzeń).
1. Rozkazy czytaj z pamięci i zapisz do pamięci służą realizacji dostępu do pamięci przy przesyłaniu niewielkich porcji danych (najlepiej jeśli długość danych nie przekracza połowy liczby bajtów w jednym wierszu pamięci podręcznej).
2. Rozkazy typu czytaj wiersz pamięci, podobne w działaniu do rozkazów typu czytaj z pamięci są stosowane przy sekwencyjnym odczycie danych jeśli liczba bajtów mieści się w przedziale od połowy do trzech wierszy pamięci podręcznej.
3. Wielokrotny odczyt pamięci działa podobnie; moduł nadrzędny informuje tu dodatkowo o przystąpieniu do odczytu sekwencyjnego większej liczby bajtów - na ogół ponad to co da się skopiować w trzy wiersze pamięci podręcznej.
4. Rozkazy typu podwójny cykl adresowy są stosowane w przypadku korzystania z adresacji 64-bitowej.
5. Rozkazy typu zapisz w pamięci i unieważnij są podobne do rozkazów typu zapisz w pamięci z tym, że zagwarantowane jest przesłanie kompletu bajtów odwzorowywanych w jednym lub kilku wierszach pamięci podręcznej. Wykonanie tego rozkazu wymaga sprawdzenia w rejestrze konfiguracyjnym bloku nadrzędnego rozmiaru wiersza pamięci podręcznej.
6. Rozkazy czytaj z we-wy i zapisz we-wy są wykorzystywane przy dostępie do rejestrów urządzeń we-wy. W fazie adresowej po liniach AD[31::00] (wszystkie muszą być dekodowane) przesyłany jest adres wskazujący, z dokładnością co do bajtu, miejsce w przestrzeni adresowej odwzorowujące rejestr urządzenia we-wy.
7. Potwierdzenia przerwania jest poleceniem odczytu wektora przerwań - skierowanym do urządzenia, które na magistrali PCI pełni rolę kontrolera przerwań. Ponieważ tylko jeden agent może odpowiadać na rozkaz potwierdzenia przerwania (kontroler przerwań) rozkaz ten nie wymaga przesyłania adresu. Linie adresowe AD[31::00] nie są podczas tej operacji wykorzystywane i ich stan w fazie przesyłania adresu jest nieokreślony (ale musi być stabilny). Kontroler przerwań potwierdza sygnałem DEVSEL#, że odebrał polecenie. W fazie transmisji danych linie C/BE[3::0]# określają z ilu bajtów składa się odczytywany wektor przerwań.
8. Rozkazy typu cykl specjalny są wykorzystywane do przesyłania komunikatów (np. „rozpoczęto procedurę zamknięcia systemu” lub „nastąpiło zatrzymanie pracy systemu”) adresowanych do wszystkich modułów (moduły nie potwierdzają tego sygnałem DEVSEL#). W fazie adresowej stan linii adresowych jest nieokreślony i powinien zostać zignorowany.
9. Rozkazy typu czytaj konfigurację i zapisz konfigurację są wykorzystywane do odczytywania i zapisu informacji w przestrzeni adresowej (wybranego agenta) zarezerwowanej dla potrzeb konfiguracji. Wszystkie urządzenia powinny odpowiadać na rozkazy odnoszące się do przestrzeni adresowej konfiguracji. Pozostałe rozkazy nie są obowiązkowe.
9. WYKRYWANIE I SYGNALIZACJA BŁĘDU NA MAGISTRALI PCI
Wykrywane i sygnalizowane są błędy parzystości pojawiające się podczas fazy przesyłania adresów i danych liniami AD[31::0] i C/BE[3::0], oraz błędy systemowe odnoszące się do magistrali PCI. Agent, który uzyskał przydział magistrali, powinien sterować wszystkimi liniami AD, ponieważ kontrola parzystości dotyczy wszystkich linii, niezależnie od tego, czy przesyłana nimi informacja jest ważna.
Do sygnalizacji błędów są wykorzystywane dwa sygnały: PERR# oraz SERR#. Pierwszy jest używany wyłącznie dla kontroli parzystości podczas wszystkich operacji, z wyjątkiem rozkazów specjalnych. Tylko jeden agent w danej chwili może ustawiać ten sygnał w stan niski. Powinien on pozostać w tym stanie jeszcze przez dwa impulsy zegarowe po zakończeniu operacji. Sygnał SERR# jest używany dla sygnalizacji błędu parzystości podczas wykonywania rozkazu specjalnego oraz błędów systemowych. W normie zaleca się, żeby sygnał SERR#, który może być ustawiony w stan niski przez kilku agentów równocześnie, był generowany z opóźnieniem dwóch impulsów zegarowych w stosunku do zauważonego błędu.
10. NUMERACJA LIŚCI I WĘZŁÓW
Opisane w 1394b.pdf od slajdu 8 poczynając.
11. PRĘDKOŚCI MAGISTRAL
PCI:
Transmitując 32-bitowe dane przy częstotliwości zegara 33 MHz osiąga się przepływność do 132 Mb/s. Rozszerzając magistralę do 64 bitów i stosując taktowanie 66 MHz można uzyskać czterokrotne zwiększenie przepływności.
USB:
transmisja osiągana przepływowość
WOLNA: 10 - 100 kb/s mała - 1,5 Mb/s
ŚREDNIA: 500 kb/s - 10 Mb/s pełna - 12 Mb/s
SZYBKA: 25 - 400 Mb/s wielka - 480 Mb/s
BARDZO SZYBKA: ponad 500 Mb/s -
W 2010 roku będzie rozpowszechniana wersja 3.0 o przepustowości 4,8 Gb/s (czyli 600 MB/s). Niestety nie będzie zgodna z poprzednimi wersjami.
1394:
SZYBKA S100 - 98,304 Mb/s S200 - 196,608 Mb/s S400 - 393,216 Mb/s
B. SZYBKA S800 - 786,432 Mb/s S1600 -1,5729 Gb/s S3200 - 3,1458 Gb/s
SCSI:
SCSI - w standardzie synchronicznej transmisji danych 5 Mb/s
PCI Express:
Pierwsza generacja połączeń PCI Express zapewniała transmisję z szybkością 2,5 Gbita/sekundę (w każdym kierunku). Obecnie po łączach drugiej generacji można przesyłać dane z szybkością 5 Gbit/sekundę. Nowa wersja PCIe o symbolu 3.0 ma zostać zatwierdzona w 2010r. W tej wersji informacje będą przesyłane z szybkością 10 Gbit/s.
12. ARBITRAŻ
W systemie wieloprocesorowym każdy z procesorów - chcąc uzyskać dostęp do jakiejś części wspólnych zasobów, powinien upewnić się, że w swym działaniu nie zderzy się z innym procesorem. Potrzebny jest mechanizm przyznawania dostępu do wspólnych zasobów dostępnych za pośrednictwem wspólnej magistrali.
O wyniku współzawodnictwa w dostępie do magistrali PCI rozstrzyga centralny układu arbitrażu, z którym każdy moduł nadrzędny połączony jest indywidualnymi liniami REQ# i GNT#.
Moduł nadrzędny chcąc zainicjować operację na magistrali PCI wystawia sygnał REQ# a następnie czeka na zezwolenie - GNT#. Jeśli moduł zamierza przeprowadzić więcej niż jedną operację może utrzymywać sygnał REQ# w stanie niskim aż do czasu uzyskania zezwolenia
na ostatnią z nich. W normie PCI nie zdefiniowano algorytmu wyznaczania przydziału magistrali. Może to być zasada „kto pierwszy ten lepszy”, priorytet cykliczny lub inny
sposób rozstrzygania o dostępie do magistrali. Zwykle magistrala przydzielana jest na czas wykonania jednej operacji. Układ arbitrażu może jednemu z agentów przydzielić magistralę na czas nieokreślony (GNT# w stanie niskim) jeśli żaden inny agent nie korzysta z magistrali ani nie żąda jej przydziału. Przydział może uzyskać moduł nadrzędny, który ostatnio korzystał z magistrali lub moduł wytypowany domyślnie. Mówi się wówczas, że magistrala została zaparkowana (ang. parked) przy danym agencie. Tak długo jak sygnał GNT# na złączu agenta jest w stanie niskim, rozpoczęcie przez niego operacji nie musi być poprzedzane wysłaniem sygnału REQ#.
· Agent A już wcześniej zażądał magistrali (sygnał REQ#-a w stanie niskim).
· Przed przyjściem drugiego impulsu zegarowego układ arbitrażu, przez ustawienie sygnału GNT#-a (w stan niski), przyznał dostęp do magistrali agentowi A.
· Agent A może zainicjować operację transmisji danych, jeśli sygnał GNT# jest aktywny a magistrala w stanie jałowym. Operacja rozpoczyna się podczas impulsu zegarowego 3 i kończy wraz z 4. impulsem zegarowym (pojedyncze przesłanie danych). Agent A zamierza jeszcze przeprowadzić następne operacje (REQ#-a nadal w stanie aktywnym).
· Podczas narastającego zbocza 3. impulsu zegarowego układ arbitrażu odbiera dwa zgłoszenia GNT#-a i GNT#-b. W następnym takcie zezwolenie dostaje agent B i czeka na przejście magistrali w stan jałowy.
· Agent A kończy operację i zwalnia magistralę. Agent B analizując sygnały FRAME# i IRDY# wykrywa koniec operacji podczas narastającego zbocza 5. impulsu zegarowego. Agent B przejmuje kontrolę nad magistralą. Operacja prowadzona przez agenta B zostaje zakończona podczas impulsu zegarowego 7.
· Przed zakończeniem swojej operacji agent B zniósł sygnał zgłoszenia. Oznacza to, że już nie będzie potrzebował magistrali.
· W następnym kroku, jeśli nie będzie innych zgłoszeń, układ arbitrażu ponownie przydzieli magistralę agentowi A (jego sygnał REQ#a pozostaje cały czas w stanie niskim).
13. ROZKAZY KONFIGURACYJNE W MAGISTRALI PCI
Zakłada się, że urządzenia PCI będą konfigurowane programowo. Odpowiednie rejestry zgrupowano w oddzielnej przestrzeni adresowej. Każde urządzenie PCI powinno posiadać 256 bajtów w przestrzeni rejestrów konfiguracji.
W przypadku dostępu do przestrzeni adresowej przeznaczonej dla potrzeb konfiguracji dekodowanie adresu odbywa się poza magistralą a moduł wybierany jest przy pomocy indywidualnego sygnału IDSEL. Rozkaz konfiguracyjny ma prawo być wykonany przez urządzenie, jeśli w fazie przesyłania adresu IDSEL jest w stanie wysokim i spełniony jest warunek AD[1::0]="00".
Wewnętrzne adresowanie rejestrów wybranego urządzenia odbywa się na podstawie adresu odczytanego z 6 linii AD[7::2]. W urządzeniach złożonych każdy moduł funkcjonalny MF może mieć własne 256 bajtów rejestrów konfiguracji. Numer modułu funkcjonalnego (wewnątrz wybranego urządzenia złożonego) przesyłany jest po liniach AD[10::8].
Zarezerwowane |
MF |
Nr rejestru |
0 |
0
|
Struktura adresu (typu 0) przy dostępie do rejestrów konfiguracji
Rozkaz konfiguracyjny, może dotyczyć zarówno przesłania bajtu, słowa (16 bitów), podwójnego słowa (32 bity) jak i bloku danych. Podczas operacji przesłania bloku danych kolejne adresy są obliczane przez zwiększenie adresu początkowego (odczytanego z linii adresowych AD[7::2]).
Za wszelkie usterki przepraszam i zachęcam do wyrażania swojej opinii.