Article View: pl.comp.lang.asm
Article #770Re: szybkie czytanie z LPT
From: Arek
Date: Sun, 22 Oct 2006 16:08
Date: Sun, 22 Oct 2006 16:08
55 lines
3542 bytes
3542 bytes
p.h. napisał(a) w wiadomości: ... >Próbuję uzyskać maksymalną prędkość czytania portu LPT. >[...] >próbkować port LPT muszę czytać z prędkością min. 600kB/s. Jest to >możliwe, gdyż program DigiTrace osiąga ok. 750kB/s na moim sprzęcie. >Problem w tym, że nie mogę go użyć (zbiera za mało danych) i piszę swój >własny program, który jednak osiąga jedynie 480kB/s w wersji ASM, zaś w >wersjach napisanych w VB lub C tylko 280kB/s. [...] Teoretycznie Win mogą przepuszczać odwołania do portu, ale z opóźnieniem wynikającym z "obróbki" tego odwołania przez mechanizmy ochrony procesora. Nawet jak jest zezwolenie to opóźnienie może być większe niż w "czystym" kompie np. w DOS. Mowa o zezwoleniu "sprzętowym", czyli bezpośrednio przez procesor a nie o wywołaniu wyjątku i w nim dopiero programowe przetunelowanie odwołania. >Zastanawiam się gdzie tkwi kruczek - jak czytać port LPT szybciej? Elektronika portu powinna wyciągnąć więcej ale może istotnie wait state'ty na ISA (lub jej emulacji) przeszkadzają. Spotkałem się z przypadłością na PCI - zmodyfikowany BIOS karty graficznej wlókł się przy starcie komputera niemiłosiernie wolno nawet z porównaniu z szyną ISA, niezależnie od cache'owania Video BIOSu. Jeżeli wystarczy proste zbieranie danych (pamięć, potem do pliku), a ich analiza offline to spróbuj w "czystym" 16-bitowym DOS, jeśli to możliwe bez odpalania EMM386.EXE z uwzględnieniem innych rad z tego wątku. Możesz użyć instrukcji 32-bitowego dostępu do danych w razie potrzeby. Jeżeli zabraknie pamięci na dane to przez odpowiedni trick z modyfikacją rej. segmentowych można otworzyć sobie pełną 2^32 przestrzeń adresową w trybie 26-bitowego kodu. Tylko wątpię czy można liczyć na jednakowe interwały czasowe "próbkowania". Doświadczenie: Celeron 700MHz, szyna 66MHz pętla (rozwinięcie 32) in al,dx stosb Zegar systemowy ok 18.2 Hz włączony nomalnie, służył do odliczenia ok. 55ms (czas pomiaru) 630-650 kHz okno DOS w Win98 bez specjalnych driverów 655 kHz DOS z emm386 671 kHz DOS bez emm386 (668 kHz z rozwinięciem 16) ciekawostka - wyrzucenie stosb (tylko odczyt portu) nie zwiększył w sposób zauważalny prędkości, za to dodatkowe instrukcje dostępu do pamięci wyraźnie spowolniły... Czyżby więc pipelining jednak zadziałał mimo, że operacje (in al,dx i stosb) na tym samym rejestrze (al)? A opóżnienia są spowodowane tylko dostępem do portu? Hmm... Arek PS. Jeżeli zależy ci na prękości (i dokładności) to pozostaje prosty rejestrator offline sprzętowy. Poszukaj i popytaj na pl.misc.elektronika
Technical Details
Message-ID:
<ehg4um$hf6$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<eh1v9c$act$1@news.task.gda.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail From: "Arek" <abcdek@poczta.onet.pl.usun_cde> Newsgroups: pl.comp.lang.asm Subject: Re: szybkie czytanie z LPT Date: Sun, 22 Oct 2006 18:08:28 +0200 Organization: Onet.pl Lines: 57 Message-ID: <ehg4um$hf6$1@news.onet.pl> References: <eh1v9c$act$1@news.task.gda.pl> NNTP-Posting-Host: pc248.ostroleka.cvx.ppp.tpnet.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1161533207 17894 217.99.63.248 (22 Oct 2006 16:06:47 GMT) X-Complaints-To: usenet@news.onet.pl NNTP-Posting-Date: Sun, 22 Oct 2006 16:06:47 +0000 (UTC) X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 X-Sender: JteAwJqAvHI2MiWs2GPQK71wcJ1i8aMz X-Newsreader: Microsoft Outlook Express 4.72.3110.5 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit