Le mode Compatible (BGENIO), standard est celui qui
contient le plus de vérifications et permet donc de trouver
l'origine d'un problème de transfert.
Les taux indiqués sont les taux réels
sur des paquets de 16380 octets (aucune autre occupation de la machine).
Machine : PIII 500MHz.
|
SPP
|
EPP
|
8 bits
|
8 bits
|
16 bits
|
32 bits
|
Standard
|
Fast
|
Standard
|
Fast
|
Standard
|
Fast
|
Standard
|
Fast
|
Mode Compatible (BGENIO) |
22 Ko/s
|
30 Ko/s
|
44 Ko/s
|
87 Ko/s
|
86 Ko/s
|
162 Ko/s
|
164 Ko/s
|
287 Ko/s
|
Mode UserPort
(accès direct)
|
146 Ko/s
|
188 Ko/s
|
272 Ko/s
|
541 Ko/s
|
409 Ko/s
|
810 Ko/s
|
545 Ko/s
|
820 Ko/s
|
Mode Driver
(COMDSP) |
148 Ko/s
|
193 ko/s
|
N.A.
|
511 Ko/s
|
N.A.
|
630 Ko/s
|
N.A.
|
682 Ko/s
|
En mode compatible, le temps d'appel du driver est le
facteur le plus limitant. Limiter le nombre d'appels au driver
est le plus rentable.
En mode User Port, il n'y a aucun appel de
driver, les vitesses sont d'une part plus élevées
et sont à ce moment limitées par le reste des composants
du système (chip Super I/O contenant le port //, pont PCI/ISA,
vitesse du proc du PC, code 'non utile' pour la transmission - appel
de fonction C, tests, etc). A noter que les performence en mode
User Port sont boostée lorsque qu'une machine virtuelle 16
bits (ntvdm standard démarré dès qu'on démarre
une application 16 bits sous Windows NT/2K/XP) est en chargée
en mémoire. (?!?!)
Explication
: phénomène due à une boucle d'attente, utilisant
sleep(1), affecté par la granularité de l'horloge
système. Cette granularité est modifée par
la machine virtuelle 16 bits.
En mode driver, les appels au driver, bien
que largement moins fréquent (1 seul par paquet) sont toujours
TRES couteux en temps d'appel.A noter qu'en interne le temps réellement
mis par le driver pour effectuer l'envoi correspond à un
taux de transfert de 1.1Mo/s. L'envoi d'un paquet de 16380 octets
à 1.1Mo/s prend 14,8 ms environ. Le taux réel de 682
Ko/s correspond à un temps de 24,017 ms, soit 10 ms de perdues
dans la nature par envoi. Ces 10ms sont en
partie due à l'utilisation de l'équivalent d'un sleep(1)
dans le driver
Attention les appels qui sont utilisés sont
les plus basiques, il est possible d'effectuer des appels 'Fast',
normallement plus rapides [infos
sur les performances des appels aux drivers NT - allemand].