Obligement - L'Amiga au maximum

Jeudi 25 avril 2024 - 11:21  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


En pratique : Utilisation de MaxTransfer et Mask
(Article écrit par Pascal Janin et extrait d'Amiga News - mai 1998)


MaxTransfer et Mask : ces noms barbares des paramètres de transfert SCSI

Tout possesseur d'une carte contrôleur SCSI, connectée à un ou plusieurs périphériques, s'est invariablement frotté au douloureux problème de la configuration de deux paramètres, cruciaux pour les transferts de données : Mask et MaxTransfer.

En effet, la valeur correcte qu'on doit leur donner dépend intimement à la fois de la carte contrôleur, du pilote Amiga, et de chacun des périphériques SCSI qui lui sont connectés. Une mauvaise configuration est source de plantage ou de transferts bien plus lents que ce à quoi on s'attendait.

En fouillant dans les manuels que je possède parlant un peu du sujet, et après quelques essais personnels, je me propose de faire un point utile à leur sujet.

Définition

Une carte contrôleur (SCSI, IDE ou autre) effectue des transferts de données entre l'Amiga et la "puce" électronique qui gère directement les divers périphériques qui lui sont rattachés.

Dans la pratique, la pléthore de cartes SCSI sur le marché, montra que chaque fabricant s'en est allé de ses propres spécifications, comme utiliser le DMA (Direct Memory Access, accès direct à la mémoire vive sans passer par le microprocesseur) ou pas, utiliser telle ou telle puce SCSI etc. Chaque carte possède donc son propre pilote, qui constitue l'interface logicielle bas niveau entre le microprocesseur central (68000 ou autre) et ladite carte.

Toutes les cartes ne sont donc pas sur un pied d'égalité devant le SCSI si je peux dire. Certaines, non DMA, ont un pilote qui monopolise le microprocesseur de manière intensive puisqu'il doit gérer tout seul les transferts de données sans le secours de le DMA. D'autres, gérant le DMA, soulagent davantage le microprocesseur lors des échanges, mais peuvent poser des problèmes d'accès à la mémoire Amiga liés à l'utilisation de le DMA.

Pour palier dans une certaine limite à ces différences et aux problèmes liés à chaque carte et son pilote associé, Mask et MaxTransfer ont été introduits dans le système d'exploitation (transferts de fichiers) de l'Amiga. Ces deux paramètres sont à configurer impérativement selon les besoins de chacun, en fait selon la composition de la "chaîne" SCSI : contrôleur + pilote + périphériques.

Mask

Comme son nom (anglais) l'indique, il sert à "masquer" certaines adresses, pour empêcher le pilote de la carte d'effectuer des transferts de données dans des zones de mémoire auxquelles il ne doit, ne peut ni ne sait avoir accès. Ceci résulte en général d'une mauvaise conception de la carte, des autres cartes et/ou de la puce SCSI.

Par exemple, un transfert DMA vers une zone de mémoire non adressable par DMA est interdit, et ceci doit être spécifié au pilote SCSI par la valeur adéquate de Mask.

Toute zone de mémoire ainsi "écartée" par Mask forcera le pilote à transférer les données en mode entrées/sorties programmées (accès direct du processeur à la puce SCSI, le DMA étant désactivé) par l'intermédiaire de tampons (buffers) comme définis par le paramètre BUF (voir figure 1), TYPE BUFFER (voir figure 2), ou encore BUFMEMTYPE dans une liste de montage.

Max Transfer et Mask
Figure 1 : FaaastPrep Utility 1.98m de GVP

D'où dégradation des performances du système lors de transferts de données vers cette zone de la mémoire. Les cartes SCSI dites non-DMA en sont entièrement tributaires. Mask est un entier long codé sur 32 bits non signés, de 0 à 0xFFFFFFFF.

MaxTransfer

Il spécifie la quantité de données transférables en mémoire d'un seul tenant par le pilote. Si on demande une taille supérieure à ce que le pilote sait faire, le transfert sera "saucissonné" en autant de petits segments de taille maxi égale à MaxTransfer. Ceci résulte en général aussi d'une mauvaise programmation du pilote du contrôleur SCSI. C'est un entier long codé sur 32 bits signés (hmm... j'ai lu ça quelque part mais où ?), de 0 à 0x7FFFFFFF.

Usage

Les valeurs adéquates de Mask et MaxTransfer sont "en principe" spécifiées par le fabricant du pilote qui vient avec le contrôleur SCSI. Les valeurs passe-partout données ci-dessous en (1) et (2) devraient marcher pour tout contrôleur, sauf si celui-ci fait des bidouilles peu orthodoxes qui lui sont propres, ou bien si l'une ou l'autre carte Zorro a une conception notoirement pourrie.

Noter que ces deux paramètres sont librement configurables séparément selon chaque périphérique (disque dur, lecteur de CD, DAT, scanner, etc.) mais en pratique toutes les valeurs seront identiques, sauf mention expresse.

Les valeurs "standard" utilisables sur tout Amiga de base (processeur 68000) sont :

(1) Mask = 0x00FFFFFE (hexadécimal).
(2) MaxTransfer = 0x00FFFFFF (hexadécimal).

(1) Cette valeur autorise les transferts DMA sur la totalité des 16 Mo d'espace adressable de l'Amiga de base, qui ne possède que 24 lignes d'adresses (soit 24 bits 6 chiffres hexa), mais uniquement alignés sur les adresses paires. C'est une limitation du 68000, qui a besoin que son code exécutable se trouve ainsi aligné sur les adresses paires (0, 2, 4, 6, etc.).

(2) Cette valeur autorise toutes tailles de transfert de données, depuis un seul octet jusqu'à 16 Mo (espace adressable maximal du 68000).

Par contre, le nouveau pilote de Ralph Babel s'affranchissant tout seul de tous les problèmes possibles, l'heureux possesseur d'une Guru ROM pourra utiliser les valeurs suivantes :

(3) Mask = 0xFFFFFFFF (hexadécimal).
(4) MaxTransfer = 0x7FFFFFFF (hexadécimal).

(3) Cette valeur autorise les transferts DMA sur la totalité de l'espace adressable de tout Amiga de base (processeur 68000, 24 bits d'adresses = 16 Mo) ou "gonflé" (processeur 68030, 68040, etc., 32 bits d'adresses = 4 Go). Les données ne sont plus obligatoirement alignées sur les adresses paires, c'est le pilote (Guru ROM) qui déterminera tout seul la méthode de transfert la plus appropriée, en amont du système d'exploitation.

(4) Cette valeur autorise toute taille de transfert de données, depuis un seul octet jusqu'à 2 Go (bit 31 à 0 car c'est un entier signé).

Un dernier exemple de mauvaises valeurs sur un Amiga de base (68000), sauf avis contraire :

(5) Mask = 0x001FFFFF (hexadécimal).
(6) MaxTransfer = 0x0000FFFF (hexadécimal).

(5) Cette valeur n'autorise les transferts DMA que sur l'espace mémoire correspondant à la mémoire Chip (premiers 2 Mo). Tous les transferts à destination de la mémoire Fast (adresses entre 0x200000 et 0x800000) ne tireront pas parti du DMA, et s'effectueront par l'intermédiaire de tampons, souvent en mémoire Chip, d'où une lenteur incroyable. De plus, cette valeur de Mask autorise le DMA sur les adresses paires comme impaires, car elle finit par "...F" (et non par "...E") et le 68000 n'aimera pas ça du tout.

(6) Cette valeur n'autorise que les transferts par blocs de 64 ko maxi. Tout transfert de taille supérieure sera coupé en autant de blocs de 64 ko que nécessaire, d'où ralentissement supplémentaire.

Utilitaires SCSI

Pour changer la valeur de Mask et MaxTransfer, il faut passer par un des nombreux utilitaires de partitionnement des disques durs (qu'ils soient SCSI ou pas), comme ceux illustrés dans les photos d'écran jointes, avec ma propre configuration (GVP Combo 68030 + Guru ROM). Jouer avec ces valeurs avec un disque déjà formaté et contenant des données est tout à fait possible et sans danger pour les données, car seuls certains bits du RDB (Rigid Disk Block) du disque dur sont modifiés, pas le partitionnement ni la table d'allocation des fichiers.

Max Transfer et Mask
Figure 2 : ExpertPrep Utility 2.51 de GVP

Max Transfer et Mask
Figure 3 : HDToolBox de Commodore

Pour toute information supplémentaire, et moult détails croustillants, je conseille chaudement la lecture de l'excellent manuel de la Guru ROM, non moins excellemment traduit en français, ou un des autres livres cités ci-après.

Bibliographie

GVP Series II User's Guide.
CBM Amiga Hard Drive User's Guide (Workbench 2.1).
GVP Combo 68030 Manuel d'installation et d'utilisation.
Schatztruhe Guru ROM v6.

Annexe : conseils

Suite à cet article, j'ai vite reçu un appel à l'aide alarmiste, consécutif à un bidouillage de ces valeurs entraînant un non-fonctionnement du disque dur. Je rappelle à tous et toutes ces notions élémentaires très importantes :

1. Avant tout changement, noter les précédentes valeurs qui marchaient jusqu'ici ! De préférence, sauvegarder également les données présentes sur le disque ! En cas de plantage total, c'est si facile de revenir en quelques minutes à une configuration éprouvée.

2. Ne pas changer quelque chose qui marche, sauf besoin précis. Si les valeurs actuelles donnent de bons résultats (à défaut d'être au "top" des performances), les conserver ! Les changements "au petit bonheur dans l'espoir que ça marche (mieux)" sont évidemment à proscrire ! (sauf si l'étape 1 a été dûment faite).

3. Ne pas utiliser au pied de la lettre les valeurs que j'ai données à titre d'exemple dans mon article : celles qui s'appliquent à ma propre configuration (ou à celle d'un Amiga de base) ne s'appliquent pas forcément au vôtre !

4. Utiliser le logiciel de partitionnement/formatage fourni avec votre contrôleur, pas celui d'un autre constructeur (mauvais exemple à ne pas suivre : GVP ExpelPrep avec carte Blizzard et qui s'est planté pour une raison inconnue), ou bien utiliser l'utilitaire HDToolBox fourni avec le Workbench ! En théorie, le RDB (Rigid Disk Block, standard mis en place par feu Commodore) s'applique à tous les contrôleurs (sauf les vieux riblons genre A2090 ou TrumpCard) mais par sécurité, il vaut mieux changer le paramétrage avec le logiciel idoine.

En conclusion, je reste prêt à vous aider en cas de pépin, mais je ne suis pas une assurance tous risques qui vous garantit contre vos propres mauvaises actions !


[Retour en haut] / [Retour aux articles]