Re: Wiecej niz 16 przerwan

Autor: Maciej W. Rozycki <macro_at_ds2.pg.gda.pl>
Data: Fri 25 Jun 2004 - 16:27:13 MET DST
Message-ID: <Pine.LNX.4.55.0406251542350.21489@jurand.ds.pg.gda.pl>
Content-Type: TEXT/PLAIN; charset=ISO-8859-2

On Wed, 23 Jun 2004, Radosław Sokół wrote:

> > Tu generalnie racja, choc wystepuje niewielki narzut na rozroznienie
> > zrodla przerwania.
>
> Zgadza się. Ale niewielki i w sumie przy braku współdzielenia
> pewnie te procedury weryfikujące też są aktywne.

 Niezupelnie -- przy braku wspoldzielenia sterowanie od razu trafia do
wlasciwej procedury obslugi, bo jest tylko jedna.

 Przy wspoldzieleniu sterowanie trafia do pierwszej procedury na liscie,
ktora to procedura w sobie wiadomy sposob sprawdza, czy to "jej"
urzadzenie zglosilo przerwanie (typowo czytajac jakis rejestr statusowy).
W przypadku porazki sterowanie jest przekazywane do kolejnej procedury na
liscie. Przy wiekszej liczbie procedur opoznienia sie kumuluja i czas
potrzebny na przekazanie sterowania np. do ostatniej procedury na liscie
moze byc juz spory.

 Mozna sobie wyobrazic jakis sposob sprawiedliwego rozdzialu przerwan do
procedur obslugi, najprosciej "round-robin", troche bardziej
wyrafinowanie np. "most frequently used", czy uzywac jakis znacznikow
priorytetow dla urzadzen o wymaganym malym czasie opoznienia, ale taka
obsluga staje sie juz nietrywialna i wcale nie jest powiedziane, ze w
konkretnym zastosowaniu bedzie korzystna.

 W przypadku systemu Linux lista jest obslugiwana w sztywnej kolejnosci
zgodnej z kolejnoscia rejestrowania procedur obslugi przez kolejne
sterowniki. W tym systemie dochodzi jeszcze jeden aspekt wydluzajacy czas
oczekiwania na obsluge w przypadku przerwania dzielonego. Mianowicie w
przypadku jednoczesnego zgloszenia zadania obslugi przez dwa lub wiecej
urzadzen wspoldzielacych (niekoniecznie dokladnie -- wystarczy by kolejne
zgloszenia nastapily przed zakonczeniem wykonania prologu obslugi
przerwania), urzadzenie kolejne na liscie zostanie obsluzone dopiero po
zakonczeniu obslugi pierwszego. W przypadku urzadzen korzystajacych z
roznych linii przerwaniowych drugie zgloszenie moze zostac obsluzone w
trakcie obslugi pierwszego, o ile procedura obslugi zezwoli na obsluge
innych przerwan, co zazwyczaj ma miejsce w wypadku procedur
niewymagajacych szybkiej i nieprzerwanej obslugi.

 Rozwazenia na temat innych systemow pozostawiam innym.

> > A tu nie. Co prawda PCI daje tylko (?) cztery linie na urzadzenie, ale
> > generalnie nie wymaga okreslonego sposobu ich routowania do wejsc
> > kontrolerow przerwan czy procesorow. Specyfikacje zawieraja pewne
> > zalecenia, ale nie wymogi i generalnie rozwiazania sa zalezne od
> > konkretnego systemu i nie ma przeszkod, by np. kazda linia przerwaniowa
> > PCI z kazdego zlacza, czy urzadzenia wbudowanego w plyte glowna, byla
> > podlaczona do innego wejscia urzadzenia przetwarzajacego przerwania.
> > Dotyczy to rowniez urzadzen za mostami PCI-PCI i podobnymi, o ile,
> > oczywiscie, mosty te nie znajduja sie na karcie wkladanej do zlacza PCI.
>
> No cóż... Bardzo możliwe, że rzeczywiście czasem tak jest.
> Niestety dotychczas wszystkie płyty, które konfigurowałem,
> miały na potrzeby PCI, AGP i wszystkich zintegrowanych
> urządzeń PCI przydzielone cztery lub pięć przerwań. AGP
> dzieliło przerwanie z jednym PCI, dwa PCI ze sobą, a pozostałe
> trzy sloty dzieliły trzy przerwania z dźwiękiem i dwoma
> kontrolerami USB. Nie powiem, by ułatwiało to konfigurowanie
> kłopotliwych kart PCI. Podejrzewam, że celem było zapewnienie
> pełnej zgodności z PIC.

 Niestety nie. Jesli chodzi o zgodnosc z PIC, to zapewnia to router
przerwan, typowo zintegrowany z chipem zawierajacym rowniez rdzenie PIC --
zazwyczaj tzw. mostem poludniowym (ciekawe skad nazwa), czyli ukladem
zawierajacym zbior roznych urzadzen we/wy niepasujacych gdzie indziej ;-)
-- ktory musi zapewnic takie funkcje jak mapowanie dowolnego wejscia
przerwania PCI do dowolnego wejscia PIC (zazwyczaj, ale niekoniecznie, z
pewnymi ograniczeniami wyniklymi z historii PC/AT), nie wykluczajac
wspoldzielenia -- mapowania kilku przerwan PCI do jednego przerwania PIC.
Liczba wejsc przerwan PCI do tego routera nie jest niczym ograniczona --
nie jest to jakis standardowy uklad zdefiniowany w architekturze PC/AT czy
APIC i wystepuje dowolnosc implementacji.

 Tak naprawde jedynym czynnikiem determinujacym uzyte rozwiazanie jet
koszt. Dodatkowe wejscia to koniecznosc zaimplementowania dodatkowych
rejestrow, przerzutnikow, bramek, etc., wyprowadzenia ich na zewnatrz,
wreszcie poprowadzenia sciezek na plytce drukowanej, podlaczenia
dodatkowych elementow pasywnych i byc moze aktywnych. Wszystko to
generuje dodatkowy koszt trudny do zrekompensowania sprzedaza --
przypuszczam ze liczba linii przerwaniowych PCI jest dosc trudna do
przelozenia na material marketingowy. ;-)

 Przyczyna jest wiec ta sama, dla ktorej na popularnych plytach nie
stosuje sie rozwiazan typu mosty PCI-PCI i innych ukladow zwiekszajacych
elastycznosc i przydatnosc produktu, ale ktore bylyby docenione jedynie
przez nielicznych uzytkownikow. Tego rodzaju rozwiazania sa za to czeste
w systemach opartych na architekturach procesorow innych niz x86, ktore
czesto z zalozenia projektowane sa do nietypowych i wymagajacych
zastosowan.

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +
Received on Fri Jun 25 16:30:13 2004

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Fri 25 Jun 2004 - 16:51:23 MET DST