Comprendre les processeurs applicatifs et temps réel, les caches, les espaces d'adressage et les mémoires d'un Zynq.
L'APU et la RPU du MPSoC répondent à des besoins différents. Les Cortex-A53 de l'APU exécutent les applications riches ; les Cortex-R5 de la RPU facilitent les traitements dont la durée doit être maîtrisée.
Propriété
APU
RPU
Processeur
Cortex-A53
Cortex-R5
Usage principal
Application et système d'exploitation
Temps réel et sûreté
Gestion mémoire
MMU et mémoire virtuelle
MPU sans traduction d'adresse
Mémoire locale
Caches
TCM et caches
Exécution redondante
Non prévue comme mode principal
Mode lockstep disponible
Choisir le chemin mémoire
Chaque Cortex-A53 possède un cache L1 et l'APU partage un L2 cohérent. Sa MMU traduit les adresses virtuelles et applique des attributs de mémoire, utiles à l'isolation des processus sous Linux comme aux applications standalone.
Les registres de périphériques exigent les attributs appropriés, pas ceux d'une RAM normale mise en cache :
Les offsets viennent du contrat de l'IP et la base de xparameters.h. Les primitives d'E/S ne dispensent pas de configurer correctement attributs et ordonnancement.
La RPU accède à ses TCM locales. Sa MPU protège les régions sans traduction virtuelle. ECC détecte et corrige certaines fautes mémoire selon le type d'erreur. En split, les cœurs exécutent des programmes distincts ; en lockstep, ils exécutent le même programme pour détecter une divergence.
Mémoire
Propriété
Usage fréquent
OCM
Interne au PS et rapide
Démarrage, données à faible latence
TCM
Très proche du RPU
Code et données temps réel
DDR
Grande capacité externe
Applications, Linux, buffers
BRAM et UltraRAM
Dans la PL
Buffers matériels et tables locales
Cache
Transparent pour le processeur
Réduction de la latence moyenne
Les ressources PL exactes dépendent du composant, notamment pour UltraRAM. La DDR offre de la capacité mais une latence variable, liée aux arbitrages, rafraîchissements et autres maîtres. TCM, OCM ou BRAM peuvent mieux convenir à une contrainte temporelle stricte.
Distinguer les vues d'adressage
Identifiez l'adresse vue par le processeur, celle utilisée par un DMA et les attributs de cache/protection. Les fenêtres PS vers PL diffèrent entre Zynq-7000 et MPSoC, et selon le maître.
Deux maîtres peuvent atteindre la même DDR par des chemins qui n'ont pas les mêmes propriétés de cohérence.
Partager un buffer avec le DMA
Sur un chemin non cohérent, nettoyez les données produites par le CPU avant la lecture DMA. Préparez aussi le buffer de réception avant sa remise au DMA, puis invalidez-le après la fin du transfert :
Ces buffers doivent occuper des lignes de cache alignées et réservées, sans données voisines appartenant au CPU. Pendant le transfert, le CPU ne les modifie pas. Une ligne sale de réception laissée en cache pourrait écraser ultérieurement des données écrites par le DMA.
Un chemin cohérent peut réduire les maintenances explicites, à condition de configurer les transactions et attributs nécessaires. Il ne supprime pas la règle de propriété des buffers ni les barrières requises.
Réagir par interruption
Le GIC priorise et distribue les interruptions. Un timer peut fournir une base périodique ; une IP PL peut annoncer une fin de traitement. La routine acquitte la source, enregistre l'événement et laisse le travail long à une tâche ou à la boucle principale.
Une attente active suffit parfois à un contrôle court, mais occupe le processeur. Une interruption lui permet d'autres activités entre les événements.
Les détails des cartes mémoire et processeurs figurent dans UG585 et UG1085.