by Ernest Jamro Katedra Elektroniki, AGH Kraków PCI - Peripherial Component Interconnect OPB - On-chip Peripherial Bus PLB Processor Local Bus by Ernest Jamro Katedra Elektroniki, AGH Kraków
Zastosowanie PCI – magistrala zewnętrzna - łącząca różne moduły wewnątrz komputera PC OPB – magistrala wewnętrzna – łącząca moduły wewnątrz pojedynczego układu scalonego PLB magistrala wewnętrzna służąca do bardzo szybkiej komunikacji
Przykład magistrali PCI
Przykład magistrali OPB
OPB i PCI - MAGISTRALE SYNCHRONICZNE Dla PCI przebiegi czasowe względem sygnału zegarowego (wyjście) f=33MHz Tval= 2 ns min Tval= 11ns max
Przebiegi czasowe względem sygnału zegarowego (wejście) (33MHz) Ts= 7 ns min (setup time) Th= 0ns min (hold time)
Magistrala OPB Wytyczne czasowe podane w procentach okresu zegara: Begin Signal is valid within 8% of the clock cycle from the rise of the OPB clock signal. Early Signal is valid within 18% of the clock cycle from the rise of the OPB clock signal. Early + Signal is valid within 28% of the clock cycle from the rise of the OPB clock signal. Middle - Signal is valid within 33% of the clock cycle from the rise of the OPB clock signal. Middle Signal is valid within 43% of the clock cycle from the rise of the OPB clock signal. Middle + Signal is valid within 53% of the clock cycle from the rise of the OPB clock signal. Late - Signal is valid within 58% of the clock cycle from the rise of the OPB clock signal. Late Signal is valid within 68% of the clock cycle from the rise of the OPB clock signal. End Signal is valid within 78% of the clock cycle from the rise of the OPB clock signal.
Magistrala PCI Sygnały są współdzielone poprzez zastosowanie buforów trójstanowych (uwaga błąd na schemacie)
Różne rodzaje urządzeń: Master (OPB), Initiator (PCI) – inicjuje transfer: podaje sygnał gotowości do transmisji (sygnał Select – OPB lub adres na magistrale adresową, dane (w przypadku zapisu) na magistralę Slave (OPB), Target (PCI) – zachowuje się podobnie jak pamięć – czyli odczytuje adres i wystawia dane (w przypadku odczytu). Arbiter – Transmisja jest wykonywana tylko pomiędzy jednym urządzeniem Master (Initiator) i pojedynczym urządzeniem Slave (Target) w jednym takcie zegara. Dlatego Arbiter przyznaje magistrale wybranemu pojedynczemu urządzeniowi Master (Initiator) w wybranej chwili czasowej.
Współdzielenie (multipleksacja) sygnałów na magistrali OPB
Fizyczne połączenie sygnałów magistrali OPB
Nazewnictwo sygnałów na magistrali OPB Mn_... – sygnał wystawiany przez urządzenie Master Sl_... – sygnał wystawiony przez urządzenie Slave OPB_... – sygnał wynikowy magistrali OPB (odpowiednia suma sygnałów Mn_... i SL_...
Prosty sposób transakcji - OPB Urządzenie Master gotowe do transmisji: Select=‘1’ Urządzenie Slave odpowiada, że jest gotowe do transmisji: Ack=‘1’ Transfer danych tylko wtedy kiedy Ack=‘1’ (przy narastającym sygnale zegarowym)
Prosty sposób transakcji - PCI Urządzenie Inicjator gotowe do transmisji: IRDY#=‘0’ Urządzenie Docelowe gotowe do transmisji: TRDY#=‘0’ Transfer danych tylko wtedy kiedy IRDY#=‘0’ oraz TRDY#=‘0’ (przy narastającym sygnale zegarowym)
Arbitraż magistrali PCI Podobnie jest dla magistrali OPB – występują sygnały Mn_request oraz OPB_MnGrant
Algorytm Arbitrażu 1 Stały priorytet – każde urządzenie ma określony priorytet i magistrala jest przydzielana według priorytetu (urządzenie żądające magistrali o najwyższym priorytecie dostaje magistrale. OPB_M0Grant<= M0_request -- [M0 – najwyższy priorytet] OPB_M1Grant<= M1_request and not M0_request OPB_M2Grant<= M2_request and not (M0_request or M1_request) OPB_M3Grant<= M3_request and not (M0_request or M1_request or M2_request)
Algorytm Arbitrażu 2 Dynamiczny Priorytet – np. Least Recently Used (LRU) algorytm, dla którego po każdym arbitrażu magistrali Master, który ostatnio otrzymał magistralę ma ustawiony priorytet na najniższy, pozostałym urządzeniom priorytet jest podnoszony o 1. M0_Priorytet<= 0 -- [M0 – przyznano właśnie magistra] M1_Priorytet<= M1_Priorytet + 1 M2_Priorytet<= M2_Priorytet + 1 ...
Arbitraż Magistrali OPB
Pojedynczy odczyt na OPB
Pojedynczy odczyt i zapis na OPB
Wykorzystanie sygnału busLock Sygnał busLock powoduje, że Master ma nieprzerwanie przydzieloną magistralę
Adresowanie sekwencyjne
Timeout Brak odpowiedzi Slave’a (OPB_xferAck) przez 16 cykli zegarowych
Materiały dodatkowe Nie były na wykładzie
Arbitraż magistrali OPB dwa urządzeń Master
Wielokrotne pojedyncze transakcje
busLock przetrzymany o 1 clk za długo
Sygnały magistrali PCI Master
Arbitraż Magistrali OPB użycie sygnału busLock (dla PCI - LOCK#)
PCI Magistrala synchroniczna Prawie wszystkie sygnały są próbkowane wraz z narastającym sygnałem zegarowym. Sygnał zegarowy może mieć częstotliwość od 0 (!!!) do 33MHz (66MHz). Poprzez zatrzymanie zegara można wprowadzić magistralę w tryb oszczędzania energii lub może to służyć do celów testowych.
Sygnały magistrali PCI Target
Zapis
Stany magistrali
Cykl przejęcia magistrali
Fast Back-to-Back
Przedwczesne przerwanie transferu (zainicjalizowane przez Master’a) Master wykorzystał swój czas (Latency Timer) oraz inne urządzenie zgłosiło REQ#. Brak odpowiedzi od urządzenia adresowanego (Target - DEVSEL#)
Kontrola parzystości
Rejestry konfiguracyjne
Command register bit 0 - I/O Access Enable bit 1 - Memory Access Enable bit 2 - Master Enable bit 3 - Special Cycle Recognition bit 4 - Memory Write and Invalidate Recognition bit 5 - VGA Palette Snoop Enable bit 6 - Parity Error Response (ma kontrolę parzystości) bit 7 - Wait Cycle Enable (Stepping) bit 8 - System Error Enable (can drive SERR#) bit 9 - Fast Back - to - Back Enable - (for bus master) bit 10-15 - Reserved
Status Register bits 0-4 - Reserved bit 5 - 66MHz Capable bit 6 - User-Definable Feature Supported bit 7 - Fast Back-to-Back (for a target) bit 8 - Data Parity Reported bits 9-10 - Device Select Timing: 00b-fast, 01b-medium, 10b-slow, 11b-reserved bit 11 - Signaled Target Abort (for a target) bit 12 - Received Target Abort (for a master) bit 13 - Received Master Abort (for a master) bit 14 - Signaled System Error (SERR#) bit 15 - Detected Parity Error
Base Address Memory
Base Address (I/O)
Processor Local Bus (PLB) Żądanie magistrali Priorytet żądania Zarezerwowanie magistrali Read Not Wirte Rozmiar transmisji Typ trans.: zwykły, DMA, .. Primary Address Valid Secondary Address Valid Rd Secendary to Primary Address Acknowkedge Read Data Bus Read Data Ack Read Data Complete
PLB – Back to Back Read
PLB – Back to Back Write
PLB – 4 Line Read
PLB – Rozmiar transmisji
PLB –line read followed by 4-line write
Deep Address Piplining
4- Deep Read Piplining
Koniec
Główne cechy PCI (Revision 2.1) Architektura niezależna od procesora Do 256 PCI funkcjonalnych urządzeń na 1 magistralę (ale tylko do około 10 urządzeń fizycznych ze względu na obciążenie elektryczne lub logicznie 32 urządzenia * 8 niezależnych logicznych funkcji) Do 256 magistrali PCI 32 lub 64-bitowa magistrala danych (adresowa) Magistrala synchroniczna z zegarem o maksymalnej częstotliwości 33MHz (dopuszczalna również 66MHz) Transfer blokowy (burst) dla wszystkich odczytów i zapisów co daje maksymalny transfer 33MHz*32bity= 133MB/s (najczęściej) lub 66MHz*64bity=528MB/s
Główne cechy (Revision 2.1) cd. (2) Każde urządzenie może (ale nie musi) nadzorować magistralą (bus master) czyli wystawiać adres na magistrali adresując np. główną pamięć (main memory) lub urządzenie na innej magistrali. Ukryty arbitraż magistrali (niewidoczny dla innych urządzeń) Mała liczba wyprowadzeń (np. multipleksowana magistrala dane/adres) Kontrola poprawności transferu poprzez kontrolę parzystości dla: poleceń, danych i adresu (tylko jeden bit parzystości)
Główne cechy (Revision 2.1) cd. (3) Trzy przestrzenie adresowe: pamięć, we/wy, konfiguracji. Automatyczna konfiguracja, np. podczas inicjalizacji urządzenie podaje rozmiar wymaganej pamięci a arbiter przydziela mu adres. Przeźroczystość softwarowa - te same komendy dla urządzenia znajdującego się na głównej magistrali lub magistralach podrzędnych. Równoczesna praca magistrali.
Przerwania 4 linie (Open Drain) INTA# - INTD#. Linie te mogą być dzielone przez inne urządzenia. Każde urządzenie musi najpierw używać przerwania INTA# potem INTB# itd. Urządzenie wraz z ustawieniem odpowiedniej linii INT również ustawia odpowiedni bit w rejestrze statusowym świadczący o żądaniu przerwania.
Przedwczesne przerwanie transferu (zainicjalizowane przez Target) Rozłączenie po zakończeniu obecnego (pojedynczego) transferu (disconnect A,B). TRDY# =L; DEVSEL# =L, STOP# =L. Rozłączenie bez zakończenia transferu obecnego transferu ale wcześniej nastąpił transfer danych (disconnect C). TRDY# =H; DEVSEL# =L, STOP# =L. Rozłączenie bez jakiegokolwiek transferu, transakcja musi być powtórzona (retry). Permanentne zaniechanie transferu spowodowane błędem (abort and not retry). TRDY# =H; DEVSEL# =H, STOP# =L.
Disconnect A
Powody przerwania Disconnect, Retry Target za wolny (więcej niż 8 clk sekwencyjnie, 16 clk pierwsza transmisja) Target nie rozpoznaje adresowania sekwencyjnego Transfer sekwencyjny wykracza poza obszar adresowy Target Transfer blokowy (burst) wykracza poza obszar linii cache Transfer do zmodyfikowanej linii cache lub do urządzenia zatrzaśniętego (locked)
Powody przerwania permanentnego (abort) Urządzenie Target niedziałające (niezdolne do jakiegokolwiek transferu) Błąd adresacji (związane z BE#) Błąd parzystości podczas cyklu adresowego Odpowiedz master’a na rozłączenie permanentne Generacja przerwania (interrupt) uaktywnienie sygnału SERR#
Błąd systemowy (sygnał SERR#) przyczyny Błąd parzystości podczas transmisji adresu i komendy lub też podczas specjalnego (special) cyklu na magistrali błąd parzystości podczas przesyłania danych (w zależności od driver’a) inne rodzaje błędów krytycznych.
Obsługa przerwania Procesor przerywa pracę aktualnego zadania i składa swój stan na stos. Procesor odczytuje wektor przerwania od układu 8259. Procesor mnoży otrzymany wektor przez 4 (8 virtual mode) i z otrzymanego adresu odczytuje adres początku programu obsługi przerwania. Uruchamia procedurę obsługi przerwania (driver urządzenia A) Na początku obsługi przerwania sprawdzany jest bit statusowy wystawienia przerwania przez urządzenie A (interrupt pending bit)
Przerwanie cd. 1. Bit ustawiony (urządzenie A żąda obsługi) wykonywany jest program obsługi urządzenia A zerowany jest bit żądania obsługi w rejestrze statusowym (urządzenia A) oraz przerwanie wystawiania linii INT# 2. Bit jest nieaktywny (urządzenie A nie żąda obsługi) nie jest uruchamiany driver urządzenia A kontrola programu przekazywana jest następnemu urządzeniu. itd.
Wspomaganie cache’u przez PCI dodatkowe dwie linie 1) SBO# - Snoop Back Off sygnał wystawiany przez PCI cache kontroler aktywny gdy następuje odczyt danych (pamięci) które zostały zmienione ale jeszcze nie zapisane (znajdują się w cache’u tzw. Write Back i bit dirty (modified) jest ustawiony), lub aktywny gdy następuje zapis (ale nie unieważnienie - Memory Write and Invalidate) i równocześnie dane pod tym samym adresem zostały zmienione w chache’u i nie uaktywnione.