155Fermer157
ZerosquareLe 08/06/2022 à 10:45
La multiplication se fait en 1 cycle (en réalité 3 cycles, mais comme c'est pipeliné, avec du code bien écrit on peut arriver à en exécuter une à chaque cycle). D'ailleurs, il y a aussi une instruction qui fait encore mieux : multiplication de deux nombres et addition du résultat dans un accumulateur de 40 bits, le tout toujours en 1 cycle. C'est fait pour aider aux calculs des produits matriciels.

Sinon, dans Jerry il y a une petite ROM qui contient quelques formes d'onde, dont une sinusoïde. Je n'ai jamais regardé si c'est suffisamment précis pour calculer des rotations, mais ça peut potentiellement permettre d'économiser de la RAM locale si c'est le cas.

Pour le blitter, je me souviens plus des timings, mais SCPCD doit savoir ça par cœur :
SCPCD a été invité sur ce sujet.


En tout cas, c'est normalement le moyen le plus rapide de transférer des données (sauf pour tous petits blocs, à cause du temps nécessaire pour configurer les registres).
Il n'y a pas de restriction sur quand tu peux l'utiliser ; le seul inconvénient c'est qu'il est prioritaire sur le 68k pour l'accès au bus, donc ce dernier est mis en pause quand le blitter est occupé (le reste du système a des priorités supérieures, donc n'est pas affecté).