CONSIDERATIONS TECHNIQUES
Etude sur FALCON & FALCON CT2b
(c) Rodolphe Czuba - JANVIER 99
Cette page est destinée à présenter quelques aspects techniques concernant les performances d'un processeur en fonction du bus et de la ram.
FALCON Le système de base est un FALCON 030 équipé d'un MOTOROLA MC68030 16 MHz avec un bus 16-Bit.
Sur ce système, la ram est organisée en 2 bancs mémoires 16-Bit de 2 Mo chacun. Ce qui nous fait un total de 4 Mo qui est adressé en 32-Bit uniquement par le circuit vidéo (VIDEL).
L'intérêt des 2 bancs mémoires est l'entrelacement ou 'interleaving'.
En effet, du point de vu MAPPING mémoire, l'accès à un WORD à une adresse word paire ($00, $04, $08, etc) se fait dans un banc mémoire 0 et l'accès à un WORD impaire ($02, $06, $0A, etc...) se fait dans l'autre banc mémoire (1).
Ainsi lors d'accès séquentiels linéaires (dans beaucoup de cas), le processseur accède aux bancs 0, 1, 0, 1, 0, etc...
Mais pourquoi ?
Pour éviter de perdre des cycles en PRECHARGE TIME. Ce precharge time est le temps nécessaire et obligatoire entre 2 accès à une DRAM !
Pour de la 60 ns, ce temps est de 40 ns; un cycle 16 MHz suffit donc.
Le temps du cyle complet de cette ram est de 110 ns !!
La ram du F030 est de la 80 ns (cycle complet de 150 ns).
A la grande question, pourquoi le FALCON a un bus DATA 16-Bit, voici l'hypothèse la plus probable:
Pour permettre un bus DATA 32-Bit pour le CPU et garder en même temps les performances avec l'entrelacement, il aurait fallu qu'Atari propose des configurations RAM de 2 ou 8 Mo. 2 est trop peu et 8, à l'époque, coûtait très cher...
Le 030 du FALCON accède en 4 cycles (16 MHz) à un banc. Un cycle dure 62.5 ns. Ceci nous fait 4 x 62.5 = 250 ns. Ca passe largement, même si la ram d'origine est de la 80 ns !
Le calcul de la bande passante de la ram (le nombre d'octets par seconde que l'on peut lire/envoyer de/dans la RAM) est le suivant:
1 WORD / 4 cycles d'horloge, soit 0.5 octets / cycles horloge.
Donc 0.5 x 16 000 000 = 8 Mo/s.
Ce que vous pouvez envoyer dans la RAM est une chose mais ce que le processeur peut faire en est une autre.
En effet, pour transférer entre de la RAM et un CPU, ce dernier doit exécuter des instructions. La plus utilisée est un bon vieux MOVE.L qui nécessite 5 cycles d'horloge sur 030 (2 sur 040) et ceci est bien évidemment la plus rapide pour lire. Du coup, ces 8 Mo/s ne sont que théoriques et la réalité en est un peu différente :
Sur un bus 16-Bit, le MOVE.L obligera le processeur à faire deux sorties sur le bus pour lire/écrire 2 WORDS. Heureusement, ce type de 'découpage' n'entraine pas de délais entre les deux WORDS.Le MOVE.L prend 4 cycles en externe et 1 en interne.
De plus, il faut tenir compte du temps pris par les accès RAM pour alimenter le VIDEL. Ce temps peut prendre de 4 à 32 % de la bande passante du bus et donc réduire d'autant les performances d'accès du CPU.
Ce problème n'existe pas avec de la FAST-Ram puisque cette dernière n'est pas utilisée par la vidéo...
Prenons le cas du mode 640x480x2 couleurs (1 bit/pixel):
Le nombre d'octets à transférer de la RAM à VIDEL (c'est COMBEL qui se charge de les adresser) est de (640x480)/8 = 38400,soit 38400/4 = 9600 LONG (accès 32-Bit en RAM).
Le VIDEL reçoit ces LONG par BURST de 17 LONG.
Et le BURST se fait en 3, 1, 1, .....1, 1, 1 grâce au mode d'accès FAST-PAGE de la ram 80 ns.
Soit 9600/17 = 565 BURST (de 17 LONG),ce qui donne 565 x 19 = 10735 cycles pour une image.
Pour une seconde (60 images puisque 60 Hz en VGA), il faut compter 10735 x 60 = 644 100 cycles.
C'est en fait le temps pendant lequel le CPU ne peut pas profiter de la ST-Ram.
Ce qui représente 644 100 / 16 000 000 = 0.040, soit 4% !
En mode 16 couleurs, cela grimpe à 16% (4 bits/pixel), et en mode TC on atteint les 32% (16-Bit/pixel mais seulement 320 pixel/ligne); ce qui fait ralentir la machine !
Avec une CENTurbo, le bus du F030 passe à 25 MHz et on réduit ainsi à 20% pour le TC, 10.2% en 16 couleurs et 2.56% pour le mode 2 couleurs. On vous laisse calculer le mode 256 couleurs et découvrir une surprise...
Ainsi pour préciser les calculs, il faut compter:
16 000 000 - 644 100 = 15 355 900 cycles disponibles pour le CPU en mode 2 couleurs (MONO) 640x480.
Résumons:
Le nombre d'octets chargeables depuis la ST-Ram en mode MONO 640x480 est:
(4 octets / 4 (le move.l) + (2 acces word) x 4) x 15 355 900 (5 cycles pour le MOVE.L) soit 5,12 Mo/s.
Pour affiner encore les calculs, quelques remarques:
- Le mode BURST des CACHES du 030 n'est pas utilisable sur un bus 16 bits !
- Ce débit ne tient pas compte des cycles de rafraichissement qui arrivent toutes les 15.6 uS et obligent le 030 à attendre (WAIT STATES !). Mais ces cycles sont les mêmes dans tous les sytèmes, alors nous les passeront sous silence. De toute façon, ils modifient de façon infime les performances des systèmes.
- Ce calcul part du fait qu'on accède linéairement à la ram en continu, donc en profitant de l'entrelacement des bancs mémoires ! Si on accède n'importe comment à la ram (désalignement du code !) ou si on accède au même banc mémoire (accès d'un word tous les 4 octets en ram) ($00, $04, $08 par exemple), on doit refaire la calcul:
2 WORDS / (12 cycles + 2 cycles (temps de précharge à 16 MHz pour chaque WORD).
On a donc 2 WORDS / 14 cycles = 0.286 octets/s
0.286 x 15 355 900 = 4,4 Mo/s en Mono 640x480 au lieu de 5,12 !
AVIS A CEUX QUI PROGRAMMENT MAL !
- Il est intéressant de faire une distinction entre la lecture et l'écriture
dans une DRAM, car si le hard est bien fait, il est possible d'écrire plus vite que de lire...
C'est ce que vous pouvez constater dans les NEMBENCHS (5.3 / 6.4 sur F030 d'origine et 31.2 / 32.2 sur CT2).
- La bande passante du bus est aussi conssommée par des circuits capables de devenir MASTER à la place du CPU. Sur Falcon, il y en a deux : le SDMA et le BLITTER.
CT2 B Le plus grand point technique de la CT2 est la FAST-Ram 32-Bit.
En effet, cette ram autorise ENFIN le BURST (ou rafale) lors du chargement des caches du 030 !!
Petit rappel: le BURST est un mode de chargement RAFALE d'une ligne d'un cache.
Une ligne fait 16 octets (4 longs), soit l'équivalent de 4 accès au bus, mais en bien plus rapide.
Le contrôleur de FAST-Ram est bien plus performant que celui de la ST-Ram du Falcon.
- Il permet des accès séquentiels en 5 cycles d'horloge 50 MHz en lecture et 4 cycles en écriture !
- les cycles de rafraichissement durent 5 cycles d'horloge !
- Il autorise le BURST !!! Avec un programme en FAST-Ram, le CPU passe les 90% de son temps à 'BURSTER' pour son cache.
Ainsi, en 5 cycles 50 MHz, le 030 avale un LONG (4 octets) depuis la FAST-Ram en cas de NON BURST (rare), soit 4/(5+5) 5 cycles pour lire le bus et 5 pour exécuter le MOVE.L = 0.4 octet/cycle.soit, à 50 MHz, 0.4 x 50000000 = 20 Mo/s !
Ca commence à chauffer !!
Passons au BURST:
Le BURST intervient dans pratiquement 100 % des cas si le code est aligné !!
Le BURST de la CENTurbo 2 est fait en 5, 2, 2, 2 à 50 MHz.
RAPPEL: Cette syntaxe technique signifie que le premier LONG est lu en 5 cycles, et que les 3 suivants sont lus chacun en 2 cycles. Soit un total de 16 octets en 11 cycles !
Le calcul est donc le suivant:
16 octets / (11 + 5 x 3) cycles 50 MHz,
soit 16 octets / 26 cycles 50 MHz = 0.6154 octets/s
soit 0.6154 x 50 000 000 = 30.77 Mo/s !
Ceci fait un facteur de 30.77 / 5.3 = 5.8 fois plus rapide que le veau de Falcon de base (mmeuuuhhhh !!). Il y a encore des gens qui travaillent avec un Falcon sans CENTurbo ??!
REMARQUE : Le BLITTER n'est pas utilisable sur CT2 du fait de son incapacité à adresser un espace 32-Bit d'adresse, dont la FAST-Ram (NVDI est obligatoire !).
Cette petite 'étude' s'achève.
Merci de votre attention et nous espérons que vous avez compris comment calculer des bandes passantes.