CONSIDERATIONS TECHNIQUES - Rev. C
Etude sur FALCON 
          FALCON + CENTurbo II Rev A 
          PHENIX 040 Rev 1
Rodolphe Czuba / CENTEK - JUIN 1998.

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, le bus du F030 passe  25 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 31.2 / 32.2 sur CT2).

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
***********

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 6 cycles d'horloge 50 MHz
  avec de la SIMM EDO 60 ns !
- les cycles de rafraichissement de durent que 2 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 6 cycles 50 MHz, le 030 avale un LONG (4 octets) depuis
la FAST-Ram en cas de NON BURST (rare),
soit 4/(6+5)   6 cycles pour lire le bus et 5 pour excuter le MOVE.L
= 0.3636 octet/cycle.
soit,  50 MHz, 0.3636 x 50 000 000 = 18,18 Mo/s !
a 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 6, 2, 2, 2  50 MHz.

RAPPEL: Cette syntaxe technique signifie que le premier LONG est lu en 
        6 cycles, et que les 3 suivants sont lus chacun en 2 cycles.
        Soit un total de 12 cycles pour 16 octets.
                
Le calcul est donc le suivant:
16 octets / (12 + 5 x 3) cycles 50 MHz,
soit 16 octets / 27 cycles 50 MHz
= 0.5925 octets/s
soit 0.5925 x 50 000 000 = 29.62 Mo/s !

Ceci fait un facteur de 29.62 / 5.3 = 5.6 fois plus rapide que le veau de 
Falcon de base (mmeuuuhhhh !!). Il y a encore des gens qui travaillent avec
un Falcon sans CENTurbo ??!


**********
PHENIX 040
**********

Du fait de son dveloppement, certains points du hardware du PHENIX
ne sont pas dvoils. Nos excuses aux plus curieux qui peuvent
toujours essayer d'tre agrs dveloppeurs PHENIX...

Le QUICC:
Il gre les transferts DMA 32-Bits en SINGLE MODE.
Ceci signifie qu'il peut transfrer des donnes d'une mmoire  un
priphrique (ou vice et versa) en UN seul cycle de bus, soit 3 cycles
d'horloge  40 MHz (Bus du PHENIX !).
Ce qui donne 4/3 x 40 000 000 = 53.33 Mo/s !
Les transferts 'memory to memory' sont possibles en 2 cycles de bus
(4 cycles d'horloge), soit 26.66 Mo/s.

Le 040 
Il accde  40 MHz  de la DRAM EDO 32-Bit 60 ns. 

- En accs non BURST (en cas de code non align par exemple !), le 
040 accde  un LONG en 3 cycles d'horloge 40 MHz, soit
  4/(3+2) cycles      (3 cycles sur bus et 2 cycles pour le MOVE.L)
x 40000000
= 32 Mo/s

- En accs BURST, le 040 accde  4 LONG en 3, 1, 1, 1
soit, 16 octets en 6 + 3 x 2      (cycles bus + cycles MOVE.L (x3))
= 53.33 Mo/s

On peut remarquer qu'une lecture en RAM par le 040 ou par le QUICC
donne les mme performances...mais dans le cas d'un transfert, le 
CPU doit encore crire ce qu'il a lu, alors que le QUICC a
termin !!

Mais le 040 possde une nouvelle instruction redoutable:
le MOVE16, qui permet des transferts sans passer par les
registres du CPU, un peu comme un DMA.
On peut alors atteindre des taux de DEPLACEMENT 53.33 Mo/s
C'est le double du MOVE.L puisque par DEPLACEMENT, on entend
lecture  une adresse ET criture  une autre adresse de 
16 octets... 

 
Cette petite 'tude' s'achve.
Merci de votre attention et nous esprons que vous avez compris
comment calculer des bandes passantes.
Pour nous encourager, vous pouvez envoyer des dons, parce que
les pattes, y en a marre !
Vivement qu'on fte la sortie du PHENIX !

PS: Le prochain qui crit PHOENIX (avec cet $*'(݊" de O !), on lui
colle trois tartes (sauf si c'est une femme... eheh).

LE PHENIX EST UNE MACHINE FRANAISE, CONUE EN FRANCE !!
Regardez donc dans un BON dico !!!


 CENTEK HOTLINE DVELOPPEUR (Falcon / PHENIX):
 MARDI au SAMEDI de 21  23 Heures !
 0344 746 330
      
CENTEK       
