CONSIDERATIONS TECHNIQUES - Rev. D
Etude sur FALCON 
          FALCON + CENTurbo II Rev B 

Rodolphe Czuba / CENTEK - JANVIER 99.

Toute utilisation de ce fichier  des fins commerciales est interdites.
Toute utilisation de ce fichier  des fins pdagogique est autorise !
Toute publication est interdite sans l'autorisation crite de l'Auteur.

Ce fichier est destin  prsenter quelques aspects techniques concernant
les performances d'un processeur en fonction du bus et de la ram.

******
FALCON
******

Le systme de base est un FALCON 030 quip d'un MOTOROLA MC68030 16 MHz
avec un bus 16-Bit.

Sur ce systme, la ram est organise en 2 bancs mmoires 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 vido (VIDEL). 
L'intrt des 2 bancs mmoires est l'entrelacement ou 'interleaving'.
En effet, du point de vu MAPPING mmoire, l'accs  un WORD  une adresse
word paire ($00, $04, $08, etc) se fait dans un banc mmoire 0 et l'accs
 un WORD impaire ($02, $06, $0A, etc...) se fait dans l'autre banc
mmoire (1).
Ainsi lors d'accs squentiels linaires (dans beaucoup de cas), le
processseur accde 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 ncessaire et obligatoire entre 2 accs  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'hypothse la plus probable:
Pour permettre un bus DATA 32-Bit pour le CPU et garder en mme 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,
cotait trs cher...

Le 030 du FALCON accde 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, mme 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 transfrer entre de la RAM et un CPU, ce dernier doit 
excuter des instructions. La plus utilise est un bon vieux MOVE.L
qui ncessite 5 cycles d'horloge sur 030 (2 sur 040) et ceci est bien
vidamment la plus rapide pour lire. Du coup, ces 8 Mo/s ne sont que
thoriques et la ralit en est un peu diffrente :
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 
'dcoupage' n'entraine pas de dlais entre les deux WORDS.

De plus, il faut tenir compte du temps pris par les accs RAM pour
alimenter le VIDEL. Ce temps peut prendre de 4  32 % de la bande
passante du bus et donc rduire d'autant les performances d'accs du CPU.
Ce problme n'existe pas avec de la FAST-Ram puisque cette dernire
n'est pas utilise par la vido...
Prenons le cas du mode 640x480x2 couleurs (1 bit/pixel):
Le nombre d'octets  transfrer de la RAM  VIDEL (c'est COMBEL qui se 
charge de les adresser) est de (640x480)/8 = 38400,
soit 38400/4 = 9600 LONG (accs 32-Bit en RAM).
Le VIDEL reoit ces LONG par BURST de 17 LONG.
Et le BURST se fait en 3, 1, 1, .....1, 1, 1 grce au mode d'accs 
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 reprsente 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 II B, le bus du F030 passe  50 MHz et on rduit
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
dcouvrir une surprise...

Ainsi pour prciser les calculs, il faut compter:
16 000 000 - 644 100 = 15 355 900 cycles disponibles pour le
CPU en mode monochrome 640x480.

Rsumons:
Le nombre d'octets chargables depuis la ST-Ram est: 
(4 octets / 5 + 2 x 4) x 15 355 900     (5 cycles pour le MOVE.L)
soit  4,72 Mo/s.

Pour affiner encore les calculs, quelques remarques:

1 - Le mode BURST des CACHES du 030 n'est pas utilisable sur un bus 16 bits !

2 - Ce dbit 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 mmes dans tous les sytmes, alors nous les passeront sous
silence. De toute faon, ils modifient de faon infime les performances des
systmes.

3 - Ce calcul part du fait qu'on accde linairement  la ram en continue,
donc en profitant de l'entrelacement des bancs mmoires !
Si on accde n'importe comment  la ram (dalignement du code !) ou si on
accde au mme banc mmoire (accs d'un word tous les 4 octets en ram)
($00, $04, $08 par exemple), on doit refaire la calcul:
1 LONG / (11 cycles + 2 cycles (temps de prcharge  16 MHz pour 
chaque WORD). 
On a donc 1 LONG / 13 cycles = 0.307 octets / s
0.307 x 16000000 = 4,9 Mo/s.
AVIS A CEUX QUI PROGRAMMENT MAL !

4 - Il est intressant 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 32.5 / 38.9 sur CT2B).

5 - La bande passante du bus est aussi conssomme par des circuits
capables de devenir MASTER  la place du CPU. Sur Falcon, il y en a
deux: le SDMA et le BLITTER.


*************
CENTurbo II B
*************

Le plus grand point technique de la CENTurbo II 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 accs au bus,
mais en bien plus rapide.  

Le contrleur de FAST-Ram est bien plus performant que celui de la
ST-Ram du Falcon.
- Il permet des accs squentiels 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 prgramme 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 excuter le MOVE.L
= 0.4 octet/cycle.
soit,  50 MHz, 0.4 x 50 000 000 = 20 Mo/s !
a commence  chauffer !!

Passons au BURST:

Le BURST intervient dans pratiquement 100 % des cas si le code est align !!
La lecture BURST de la CENTurbo 2 B est faite 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.61538 octets/s
soit 0.61538 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 (NVDI4
est obligatoire !).

Cette petite 'tude' s'achve.
Merci de votre attention et nous esprons que vous avez compris
comment calculer des bandes passantes.

HOTLINE clients et dveloppeurs : 0 3 2 1 746 039
                de 10H  12H30 & 14h30  18H30 - Du Lundi au Vendredi,
                de 10H  12H30 le Samedi.
      
CENTEK