Re: karty i/o

Autor: Pawel Komos (progel_at_szc.ternet.pl)
Data: Sat 04 Jan 1997 - 17:52:59 MET


Gregorio Kus <Grego_at_RMnet.IT> napisał(a) w artykule
<199701041444.PAA08565_at_malcolm.rmnet.it>...
>On Sat, 4 Jan 1997 14:15:05 +0100, Pawel Komos wrote:
>
>Andrzej Karpinski <KARPIO_at_elza.xyz.lublin.pl> napisał(a):
>> > Sprawa prosta - szybszy kwarc. Ustawiasz podzial na UART'ie
>> > niby na 115200 (czyli podzial przez 1), a 4x szybszy kwarc
>> > robi z tego 460800. Ustawisz 9600, bedzie 38400. 16550 wytrzymuje
>> > podobno do 1.5 Mbps.
>>
>> to to i ja wiedzialem... pozostaje pytanie, skad soft wie ze ma
>> szybciej pompowac dane do takiego uarta. to mnie nurtuje...
>>
>>UART daje przerwanie. Ale na 460800 tylko czysty real mode DOS moze
nadazy.

>to daje niecale 3000 przerwan na sekunde z 16550.
>Mysle ze OS/2 na moim nedznym DX4/100 by sobie z tym poradzil.
>Juz w czasach 386/16MHz IBM _gwarantowal_ ze proces w klasie
>Time Critical nie potrzebuje w OS/2 wiecej niz 6ms na reakcje.
>W momencie zapisu na dysk hardware'owy hand-shake przystopuje
>transmisje, i przy sporych buforach nie powinno sie z tego
>powodu tracic na szybkosci wiecej jak kilka %.

>przyznaje ze to rozwazania hipotetyczne, bo nie mam mozliwosci
>tego sprawdzic. jesli robie jakis blad w tym rozumowaniu
>chetnie sie o tym dowiem

>Grego

Najpierw wyjasnienie: przez "nadazy" rozumiem, ze nie bedzie wystepowal
overrun przy odbiorze.
A licze tak:
Przy 8N1 mamy 1 bit startu, 8 bitow danych, 1 bit stopu = 10 bitow, stad
46080 zn/sek.
Przy ustawieniu Low WaterMark Level na 6 mamy przerwanie co 10 znakow ->
4608 przerwan na sek. Musimy sie liczyc z full duplex czyli *2 = 9216.
Trzeba te dane skads wziac i gdzies odebrane wrzucic, system operacyjny ma
swoje
narzuty, a IRQ3 i 4 to wbrew pozorom dosc niski priorytet. Hardware'owy
handshaking
w tym UART tez sie nie robi sam.
Czas reakcji to czas pomiedzy przyjsciem przerwania, a rozpoczeciem
wykonywania
kodu obslugi. Drugie tyle bedzie potrzebne do powrotu i jeszcze czas samego
przetwarzania.
Jezeli system operacyjny jest napisany na real-time to sie pewnie obrobi,
ale obciazenie
bedzie bardzo duze i nici z wieloprocesowosci.
Dlatego wlasnie nawet do czterech terminali na 9600 w UNIXie wklada sie do
komputera
karte wieloportowa.
Wiem, ze UNIX jest systemem czasu rzeczywistego tylko dlatego, ze
rzeczywiscie
potrzebuje czasu (po polsku nie brzmi to najlepiej).

Oczywiscie dyskusja jest teoretyczna. A tak wlasciwie to po co komu to
przyspieszanie?
Poniewaz z drugiej strony musi byc tak samo przyspieszony komputer to moze
od razu
wlozyc karte Ethernet - urzadzenie blokowe a nie znakowe?
---------------------------------------
Pawel Komos
progel_at_szc.ternet.pl



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:51:00 MET DST