Bus d’adressage mémoire de AGNUS

15 sujets de 16 à 30 (sur un total de 30)

  • 1
  • 2
  • Gilloo

      #82301

      Baba a écrit :

      AGNUS ( http://fr.wikipedia.org/wiki/Original_Amiga_chipset )

      S’adresse à l’aide du 68000 en 32 bits.

      Vu que le 68000 est un proc 16/32 bit, l’acces en 32 bit est fait en 2 cycles, mais c’est transparent et évolutif en un seul cycle pour les procs 32 bits (68020 …)

      Enfin, je crois…

      En assembleur, on peut faire des Move.L vers des registres Blitter ou autres.

      C’est 4 cycles pour un move.l vu que le système n’autorise que les cycles impairs au 68000, les autres aux coprocesseurs…

      ou alors 2 cycles si tu coupes tous les DMA :-D

      Baba

        #82302

        Petite remarque subsidiaire :

        Selon mon prof d’assembleur le 68060 est un processeur à fort parallelisme interne. Ce qui fait qu’il tourne à 1,3 instruction par cycle en moyenne, ce qui est trés proche des meilleurs procs RISC qui tournent à 1,2 instruction par cyle en moyenne puisque l’objectif des 1 instruction par cycle semble être utopique et n’est pas ateint pour des raisons que j’ai oublié (probablement des problèmes d’acces mémoire)

        Déjà le 68020 possède un « cache » qui accélère les petites boucles.

        Amitoo

          #82303

          Comprends pas.

          « 1 instruction par cycle semble être utopique et n’est pas ateint » contradictoire avec « il tourne à 1,3 instruction par cycle en moyenne ».

          A500+ / A1200 / CD32 et... Jaguar

          Baba

            #82304

            C’est un souvenir d’un cours d’architecture des ordinateurs que j’ai eu en 1995.

            D’apres mon prof, sur un x86 l’instruction CLR utilise 4 cycle et EOR utilise 3 cycle. Donc pour effacer le registre AX par exemple, il vaut mieux faire EOR AX,AX que CLR AX.

            J’avais eu a l’époque (comme tous les élèves) une liste des instructions avec le nombre de cycle utilisés.

            Il nous a parlé aussi d’autres processeurs de type RISC (Rédious Instruction Set) qui ont pour objectif d’exécuter les instructions en 1 seul cycle (donc un RISC à 1Ghz ferait 1 000 000 Instructions par secondes) Le moyen mis en oeuvre est de réduire le nombre d’instruction disponible et de suprimmer les instructions trop compliquées, qui ne sont en plus que rarement utilisées. On a donc un jeu d’instruction plus simple, mais plus rapide à exécuter. L’objectif 1 instruction = 1 cycle n’est quand même pas atteint.

            L’accès mémoire est assez compliqué, donc je crois que c’est ce qui bride le RISC. De plus il est impossible d’avoir une instruction avec 2 opérantes mémoire, et ceci avec n’importe quel processeur. Il faut toujours utiliser au moins un registre ou une valeur immédiate.

            D’après mes souvenir, le 68060 serait capable d’exécuter plusieurs instructions en meme temps, ou de faire du travail préparatiore, ce qui lui fait augmenter sa moyenne d’instruction par cycle et permet de le comparer à un RISC.

            La moyenne du nombre d’instruction par cycle est calculée en exécutant un programme quelconque et divisant le nombre d’instructions exécutées par le nombre de cycles utilisés pour cette exécution.

            Voici un extrait de bricos (Version béta à télécharger sur mon site) :

            MOVE.L plan,ax -> Affecte la variable plan au registre A0 / A6 (choisi par le compilateur E)

            MOVE.L ax, BLTCPTH

            MOVE.L ax, BLTDPTH

            MOVE.W modulo,BLTAMOD

            MOVE.W modulo,BLTBMOD

            MOVE.W modulo,BLTCMOD

            MOVE.W modulo,BLTDMOD

            MOVE.L #$FFFFFFFF,BLTAFWM

            MOVE.L bltcon,BLTCON0

            MOVE.W b_size,BLTSIZE

            ect…

            C’est la partie où je charge le BLITER.

            Je met à jour les registre BLITER, qui appartiennent à AGNUS en 16 ou 32 bit sans problème.

            De plus, je préfére optimiser mes appels blitter de facon à faire éxécuter un maximum d’instructions 680×0 entre un appel à MOVE.W b_size,BLTSIZE et la prochaine boucle d’attente de fin de travail du bliter. Le cpu passe pas mal de temps à attendre le bliter ou le vbl. Son temps d’exécution est moins critique que celui du blitter si l’on cherche à faire des animations.

            /me vénere le Blitter, c’est le turbo de l’amiga !

            Amitoo

              #82305

              -_-

              A500+ / A1200 / CD32 et... Jaguar

              corto

                #82306

                Baba a écrit :

                D’apres mon prof, sur un x86 l’instruction CLR utilise 4 cycle et EOR utilise 3 cycle. Donc pour effacer le registre AX par exemple, il vaut mieux faire EOR AX,AX que CLR AX.

                J’avais eu a l’époque (comme tous les élèves) une liste des instructions avec le nombre de cycle utilisés.

                Oui mais depuis il y a eu plusieurs générations de x86 et puis maintenant l’optimisation ne joue pas beaucoup sur ce genre d’astuces. Avant c’était important car les CPU allaient lentement et nécessitaient plusieurs cycles.

                Il nous a parlé aussi d’autres processeurs de type RISC (Rédious Instruction Set) qui ont pour objectif d’exécuter les instructions en 1 seul cycle (donc un RISC à 1Ghz ferait 1 000 000 Instructions par secondes) Le moyen mis en oeuvre est de réduire le nombre d’instruction disponible et de suprimmer les instructions trop compliquées, qui ne sont en plus que rarement utilisées. On a donc un jeu d’instruction plus simple, mais plus rapide à exécuter. L’objectif 1 instruction = 1 cycle n’est quand même pas atteint.

                Il me semble qu’un processeur peut traiter plusieurs instructions par cycle. Les processeurs sont devenus superscalaires, ils ont des unités d’exécution dédiées, les caches et pipelines sont à prendre en compte aussi …

                L’accès mémoire est assez compliqué, donc je crois que c’est ce qui bride le RISC. De plus il est impossible d’avoir une instruction avec 2 opérantes mémoire, et ceci avec n’importe quel processeur. Il faut toujours utiliser au moins un registre ou une valeur immédiate.

                Ce n’est pas compliqué, comme tu le dis, tu ne peux pas faire d’opérations directement en mémoire, tu lis une valeur dans un registre, tu fais tes calculs, tu sauves en mémoire. Vu comme ça, ça peut paraître réducteur mais on ne peut pas comparer les 2 technologies uniquement sur un point.

                Baba

                  #82307

                  Apres quelques recherches, je suis tombé sur la technologie « Superscalaire » du 68060. Ca existe aussis chez Intel, et ce permet au proc d’exécuter plusieurs instructions en même temps.

                  C’est évoqué un Tread d’AmigaImpact :

                  https://www.amigaimpact.org/modules/newbb/viewtopic.php?viewmode=flat&order=DESC&topic_id=3433&forum=1&move=prev&topic_time=1147804888

                  Mais le nombre moyen d’instructions par cycle, ou plutot ce cycles par instructions devrais-je dire n’est pas traité.

                  En effet un site internet donne ces explications :

                  1. INSTRUCTIONS IN THE PIPELINE

                  ===============================

                  An important parameter for the CPU designer is the amount of cycles Per Instruction (CPI). This figure tells you how many clock cycles a CPU needs to execute an instruction. Some examples for 030 and 060:

                  /*

                  En gros en francais, ca veux dire :

                  Un des parametres du CPU c’est le nombre ce cycles par instruction (CPI) , Ce tableau montre des exemples de CPI pour un 030 et un 060 :

                  */

                  Instruction………………….68030 68060

                  1 move.l d0, d1………….2 ………..1

                  2 add.l d0, d1……………2 ………..1

                  3 lsl.l #6, d0……………..2 ………. 1

                  4 mulu.w d0, d1………..38…………2

                  5 divu.w d0, d1…………78……….36

                  6 add.l (a0)+,d0 ……… 5 ………..1

                  On remarque que l’accés mémoire (6) ne coute qu’un seul cycle sur un 68060.

                  bob1969

                    #82308

                    Pour revenir au post.

                    L’ Agnus d’un A600 (8375) possède un bus d’adressage de 20bits soit 2 mo maxi de fameuse mémoire chip ( En fait 1mdemots16bits car il n’y a pas de A0) et 16 bits de données

                    Les bus DRA et RGA (10bits) servent comme bus de commande.

                    Les modes d’adressages en 2 fois sont pour les DRAM. Les colonnes puis les lignes soit CAS puis RAS

                    Si je me souviens bien.

                    bob1969

                    souvenir

                    Amitoo

                      #82309

                      Humm… 2^20=1048576 soit 1M pas deux.

                      En fait FAT Agnus n’a que 19 lignes d’adresses : http://www.ntrautanen.fi/computers/hardware/misc/fatagnus.htm

                      L’adressage est multiplexé à l’aide de MA0-MA9 :

                      The first thing that happens on a memory cycle in Agnus, is that the address lines A9-A17 and A19 are place on the 2 meg Agnus’ multiplexed address lines MA0-MA9. A short time after that the *RAS line from Agnus goes LOW. The *RAS0 or *RAS1 line from the PAL then goes LOW (depending on the value of MA9 at that point) and latches the ROW address into the selected RAM chips.

                      After the ROW address is latched into the selected RAM chips, the address lines A1-A8, A18, and A20 are then placed on Agnus’ multiplexed address lines MA0-MA9. The COLUMN address lines are then latched into the RAM chips by the *CAS#0 or *CAS#1 lines (depending on the value of MA9 at that point) from the PAL going LOW.

                      Once the RAM chips have received their ROW address and COLUMN address they are now ready to be accessed. The operation to be performed on the RAM chips is determined by the control lines such as *WE (Write Enable) and *OE (Output Enable) which are set during the memory cycle.

                      If *WE is LOW then a write operation is being performed on the RAM chips. If *OE is LOW then a read operation in being performed on the RAM chips. Note that not all dynamic RAM chips have the *OE line, on these chips when *WE is HIGH it is assumed that a read operation is taking place.

                      The operation of this board is very simple in its decoding of the multiplexed address lines. The PAL uses address line MA9 to determine which *RAS# and *CAS# lines to activate, which in turn selects different chunks of memory. See the PAL equations, and by following the logic and the comments you should be able see how the PAL decodes the address lines and determines which part of memory is being accessed.

                      http://amiga.resource.cx/1000er/1000er-Disks/9310/2MegAgnus/ttmap50d.doc

                      En aparté, je savais pas que les cartes mère rev 2B des 1200 ont des bugs qui peuvent être corrigés :

                      http://www.ianstedman.co.uk/Amiga/amiga_hacks/A1200_Mobo_fix/a1200_mobo_fix.html

                      A500+ / A1200 / CD32 et... Jaguar

                      bob1969

                        #82310

                        1M de mot16bits = 2Moctets

                        Sur mes plans d’A600, Agnus8375 a 20 lignes d’adresse A1-A20,

                        Mais effectivement, l’adressage est vers la DRam est multiplexé.

                        a+

                        bob1969

                        Amitoo

                          #82311

                          Tu veux dire que l’on travail avec de la mémoire 16 bits et non 8 ? C’est peut être pas bête ;)

                          De toute façon si c’est multiplexé on peut pas calculer directement la capacité d’adressage.

                          Pour ce qui est du schéma de Fat Agnus, soit les specs que j’ai trouvé sont fausses, soit il y a 2 versions de Agnus car sur le site il y a bien aussi le schéma de Agnus OCS :

                          http://www.ntrautanen.fi/computers/hardware/misc/agnus.htm

                          Tu pourrais scanner le schéma de ton A600 et le poster ?

                          A500+ / A1200 / CD32 et... Jaguar

                          Baba

                            #82312

                            Je ne vois pas trop quel effet et surtout quelles limites ca peu créer cet adressage sur 19 ou 20 lignes.

                            Ca veux dire quoi ? il n’y a que 20 fils cablés ?

                            Agnus adresse la CHIP et c’est tout.

                            La limite de son blitter, je la ressent au niveau du BLTSIZE : la taille du bloc de données à copier :

                            En AGA, on a généralement 8 bitblans, de 256 lignes de haut soit 256*8 = 2048 lignes de haut et 40 mots de large.

                            BLTSIZE = largeur/2 + hauteur*64,

                            Donc :

                            BLTSIZE = 40/2 + 2048 * 64

                            BLTSIZE = 131092

                            On dépasse sa capacité. Puisque c’est un mot, sa taille maxi est de 65535, donc 65536 / 64 / 8 -1 = 127 lignes.

                            La taille maxi d’un bob AGA est de 127 lignes de haut et pour effacer un écran il faut s’y prendre en deux fois. (En mettant au repos le 68000 dans une horrible boucle d’attente entre les deux opérations, malheureusement).

                            bob1969

                              #82313

                              Ola , Ca par dans tout les sens

                              Pour adresser une case memoire, il faut une adresse. Cette adresse est envoyée au controleur mémoire qui convertit en signaux compréhensible pour les memoires.

                              Si tu as un composant qui a 20 fils d’adresse numeroté A0, A19, cela te fait 2¨20 ( soit 1 M) combinaison possible. Les composants comme le 68000 ou agnus les envoie en une seule fois. Un 68000 à 24 fils d’adresse soit 16 Mo de capacité d’adressage (A1-A23 = 2¨23 = 8MegaMots16bits).

                              La ou c’est malin, c’est que dans un systeme 16bits, il n’y a pas de A0 et 256 Mo sont en fais 128 mots de 16bits. L’octet n’a plus court.

                              donc 1 Mmots16 de possibilité font 2Moctet.

                              La limitation des biplans vient d’autre chose. C’est surtout la bande passante des echanges chip Ram – custom chip qui limite l’ensemble. Car en 60hz, l’image qui doit etre rafraichit 60 fois par seconde. Cela consomme beaucoup de ressource sur le bus d’echange « chip » et ton AMIGA ralenti. C’est visible sur 4 vers 8 bit plans

                              les plans de cablage des Amiga sont dispo aprés une recheche sur google « A600 shématics »

                              regardez le cablage, c’est sympa surtout celui du A1200 avec ses emplacements mémoire Flash comme la plateforme intel « Santa ROSA »qui sort en Q3 2007 !

                              Bob1969

                              logique et cablé.

                              a+

                              Amitoo

                                #82314

                                Bon, grâce à bob, j’ai trouvé à quoi correspond le brochage FAT AGNUS que j’avais vu avec ses 19 lignes d’adresse. C’est l’A2000.

                                Merci de m’avoir donné le mot magic : schematic. J’ai trouvé plein de choses intéressantes.

                                Du coup je viens aussi de découvrir un nouveau petit nom employé pour un chipset Amiga : FANG pour FAT Agnus du 2000.

                                Sinon j’ai effectivement vu les emplacements pour la flash : U10 et U11. Je n’en avais jamais entendu parlé. Quelqu’un a plus infos sur à quoi c’était destiné ?

                                En tout cas ça a été employé sur la CD32 pour la sauvegarde des jeux.

                                A500+ / A1200 / CD32 et... Jaguar

                                ob1

                                  #82315

                                  La bible de l’amiga dit :

                                  La CHIP-RAM de l’Amiga (A1000) est composée de 2^16 adresses (65536). On a donc besoin de 16 signaux d’adresses pour pouvoir accéder à la totalité de la CHIP-RAM. Le boîtier ne possède que 8 signaux d’adresse pour des raisons de proportions. C’est pour cela que l’on a introduit l’adressage multiplexé : les 8 bits de poids fort seront d’abord véhiculés puis les 8 bits de poids faible. L’octet de poids fort sera stocké en mémoire en attendant que l’octet le moins significatif soit obtenu.

                                15 sujets de 16 à 30 (sur un total de 30)

                                • 1
                                • 2
                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Développement Bus d’adressage mémoire de AGNUS

                                Amiga Impact