Le CacheND-AP : pré-chargement adaptatif dans les tableaux
Transcription
Le CacheND-AP : pré-chargement adaptatif dans les tableaux
Journées Compil’2013 Le CacheND-AP : pré-chargement adaptatif dans les tableaux S. Mancini Plan Le memory wall Le prefetch Le Cache nD-AP Conclusion & perspective 1- Journées Compil’2013- Le CacheND-AP : pré-chargement adaptatif dans les tableaux Motivations Constats: Concevoir des unités de traitement est devenu relativement aisé (HLS). Acheminer les données devient de plus en plus pénalisant (surface, performance, consommation) Pour concevoir une unité de traitement, il faut gérer: Les bus La synchronisation des transferts & calculs Les interfaces mémoire L’ITRS prévoit que 80% de la surface et de la consommation d’énergie seront dus aux mémoires. 2/29- Journées Compil’2013 Le memory wall S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU (DDR)−DRAM (DDR) Controleur DRAM 3/29- Journées Compil’2013 Le memory wall S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU 2 ns 0.5ns 1,1 Gbit/s/lien (DDR)−DRAM (DDR) Controleur DRAM 3/29- Journées Compil’2013 Le memory wall S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU req data 12 ns 2 ns 0.5ns 1,1 Gbit/s/lien req (DDR)−DRAM data 100/300 clk (DDR) Controleur DRAM 3/29- Journées Compil’2013 Le memory wall S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU req data 12 ns 2 ns 0.5ns 1,1 Gbit/s/lien 250mW (4000DMIPS) req (DDR)−DRAM data 100/300 clk (DDR) Controleur 30 mW/lien 2.5 10−4 mW/Gigabit/s 3/29- Journées Compil’2013 Le memory wall DRAM 240 mW/GOctet/s S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU SRAM SRAM Cache L1/L2 (DDR)−DRAM (DDR) Controleur DRAM SPRAM Buffers etc ... 3/29- Journées Compil’2013 Le memory wall S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU SRAM Prefetch SRAM for for Cache L1/L2 Prefetch (DDR)−DRAM (DDR) Controleur DRAM SPRAM Buffers etc ... 3/29- Journées Compil’2013 Le memory wall Prefetch Prefetch S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU SRAM Prefetch SRAM for for Cache for for for for L1/L2 (DDR)−DRAM (DDR) Controleur DRAM SPRAM Buffers etc ... 3/29- Journées Compil’2013 Le memory wall Prefetch Prefetch Prefetch S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU SRAM Miss SRAM HW MT for for Cache for for for for L1/L2 Prefetch (DDR)−DRAM (DDR) Controleur DRAM SPRAM Buffers etc ... 3/29- Journées Compil’2013 Le memory wall Prefetch Prefetch Prefetch S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU SRAM Miss Prefetch SRAM HW MT for for Cache for for for for L1/L2 Prefetch (DDR)−DRAM (DDR) Controleur DRAM SPRAM Prefetch idx <=> @ Buffers etc ... 3/29- Journées Compil’2013 Le memory wall @ <=> Ro/Co/Rank/Bank Prefetch S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU SRAM Miss Prefetch SRAM HW MT for for Burst Cache for for for for L1/L2 SPRAM Prefetch (DDR)−DRAM (DDR) Controleur Prefetch Burst DRAM idx <=> @ Buffers etc ... 3/29- Journées Compil’2013 Le memory wall @ <=> Ro/Co/Rank/Bank Prefetch S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU SRAM Miss SRAM HW MT for for Burst Cache for for for for Prefetch L1/L2 SPRAM idx <=> @ Buffers etc ... 3/29- Journées Compil’2013 Le memory wall Prefetch (DDR)−DRAM (DDR) Controleur RAM 80% surf. puiss. Prefetch @ <=> Ro/Co/Rank/Bank Burst DRAM Prefetch S. Mancini Problématique du “Memory Wall” SoC IP/ASIC CPU SRAM Miss Prefetch SRAM HW MT for for Burst Cache for for for for L1/L2 SPRAM Prefetch (DDR)−DRAM (DDR) Controleur Prefetch DRAM Burst idx <=> @ Buffers etc ... @ <=> Ro/Co/Rank/Bank Prefetch Pour de nombreuses classes d’applications, les strategies de prefetch usuelles ne sont pas efficaces 3/29- Journées Compil’2013 Le memory wall S. Mancini Consommation d’énergie due aux mémoires source: ITRS 4/29- Journées Compil’2013 Le memory wall S. Mancini Comment “passer le mur mémoire” ? Optimisation de la gestion des données: Stratégies ”hors-ligne” Connaissance des séquences d’accès Ne prend pas en compte les variations de performance Stratégies “en-ligne” Adaptation aux conditions de fonctionnement Décision “locale”, seul le passé est connu, modèle de prédiction du futur 5/29- Journées Compil’2013 Le memory wall S. Mancini Une vision globale IP/ASIC for for CPU SRAM SRAM (DDR) for for for for DRAM Cache L1/L2 6/29- Journées Compil’2013 Le memory wall Prefetch (DDR)−DRAM Controlleur S. Mancini Une vision globale IP/ASIC for for CPU SRAM SRAM (DDR) for for for for DRAM Cache L1/L2 6/29- Journées Compil’2013 Le memory wall Prefetch (DDR)−DRAM Controlleur S. Mancini Une vision globale IP/ASIC for for CPU SRAM SRAM Compilation dynamique (DDR) for for for for DRAM Cache L1/L2 6/29- Journées Compil’2013 Le memory wall Prefetch (DDR)−DRAM Controlleur S. Mancini Une vision globale IP/ASIC for for CPU SRAM Prefetch SRAM Compilation dynamique (DDR) for for for for DRAM Cache L1/L2 Prefetch (DDR)−DRAM Controlleur Prefetch Prefetch 6/29- Journées Compil’2013 Le memory wall S. Mancini Une vision globale IP/ASIC for for CPU SRAM Prefetch SRAM Compilation dynamique (DDR) for for for for DRAM Cache Prefetch L1/L2 for for (DDR)−DRAM Controlleur CPU Prefetch Prefetch for for for for Cache L1/L2 6/29- Journées Compil’2013 Le memory wall Prefetch S. Mancini Une vision globale IP/ASIC for for CPU SRAM Prefetch SRAM Compilation dynamique (DDR) for for for for DRAM Cache Prefetch L1/L2 for for (DDR)−DRAM Controlleur CPU Prefetch Prefetch for for for for Cache L1/L2 6/29- Journées Compil’2013 Le memory wall Prefetch S. Mancini Une vision globale IP/ASIC for for CPU SRAM Prefetch SRAM Compilation dynamique (DDR) for for for for CPU ? for for Adaptation long terme Adaptation for moyen for terme for for + Mesure HW 6/29- Journées Compil’2013 Le memory wall Cache Prefetch L1/L2 Vitesse − SW DRAM (DDR)−DRAM Controlleur CPU Prefetch Prefetch Cache L1/L2 Prefetch S. Mancini Plan Le memory wall Le prefetch Le Cache nD-AP Conclusion & perspective 7- Journées Compil’2013- Le CacheND-AP : pré-chargement adaptatif dans les tableaux Le prefetch Objectifs: pré-charger les données en cache avant d’en avoir besoin. SW: insertion d’instructions de pré-charge (nonbloquante) HW: prédire au fur et à mesure des accès mémoire Concevoir une stratégie de prefetch, c’est choisir: Quelles informations exploiter Quand lancer la pré-charge Quelles données pré-charger Où placer les données pré-chargées Critères d’efficacité: Temps d’exécution totale Pollution des bus Complexité 8/29- Journées Compil’2013 Le prefetch S. Mancini Prefetch usuels Historique: Caches “classique” (ligne de cache) OBL (One Block Lookahead) SPT Stream-buffers Généralisation: prefetch à base de chaîne de Markov A A y z x B t C u D v 9/29- Journées Compil’2013 Le prefetch S. Mancini Prefetch usuels Historique: Caches “classique” (ligne de cache) OBL (One Block Lookahead) SPT Stream-buffers Généralisation: prefetch à base de chaîne de Markov A A @d y z x B t C u D v 9/29- Journées Compil’2013 Le prefetch S. Mancini Prefetch usuels Historique: Caches “classique” (ligne de cache) OBL (One Block Lookahead) SPT Stream-buffers Généralisation: prefetch à base de chaîne de Markov A A @d @i(lw,sw) y z x B t C u D v 9/29- Journées Compil’2013 Le prefetch S. Mancini Prefetch usuels Historique: Caches “classique” (ligne de cache) OBL (One Block Lookahead) SPT Stream-buffers Généralisation: prefetch à base de chaîne de Markov A for for A @d @i(lw,sw) y z x ∆ @i@i @i(lw,sw) @d0 @d0 @d0@d1 @d1 @d1@d2 @d2 @d2@d3 @d3 @d3@d4 @d4 @d4@d5 @d5 @d5 9/29- Journées Compil’2013 Le prefetch B t C u D v S. Mancini Prefetch usuels Historique: Caches “classique” (ligne de cache) OBL (One Block Lookahead) SPT Stream-buffers Généralisation: prefetch à base de chaîne de Markov A for for A @d @i(lw,sw) δ y z x ∆ @i@i @i(lw,sw) @d0 @d0 @d0@d1 @d1 @d1@d2 @d2 @d2@d3 @d3 @d3@d4 @d4 @d4@d5 @d5 @d5 9/29- Journées Compil’2013 Le prefetch B t C u D v S. Mancini Prefetch usuels Historique: Caches “classique” (ligne de cache) OBL (One Block Lookahead) SPT Stream-buffers Généralisation: prefetch à base de chaîne de Markov A Aucune stratégie ne surpasse SPT for for A @d @i(lw,sw) δ y z x ∆ @i@i @i(lw,sw) @d0 @d0 @d0@d1 @d1 @d1@d2 @d2 @d2@d3 @d3 @d3@d4 @d4 @d4@d5 @d5 @d5 9/29- Journées Compil’2013 Le prefetch B t C u D v S. Mancini Limitations Les caches classiques ne sont pas adaptés au traitement d’image car ils exploitent la localité temporelle et la localité spatiale en adresse. x y @−64 = 1 Pixel = 1 Byte @ Cache line Pixels accédés @+63 image Les défauts de cache sont déclenchés lors d’un déplacement: Horizontal: à la fin d’une ligne de cache Vertical: à chaque nouvelle ligne de l’image 10/29- Journées Compil’2013 Le prefetch S. Mancini Plan Le memory wall Le prefetch Le Cache nD-AP Conclusion & perspective 11- Journées Compil’2013- Le CacheND-AP : pré-chargement adaptatif dans les tableaux Positionnement Pré-chargement dynamique Détection de motifs répétitifs Générique car le prefetch exploite les adresses Implanté dans les processeurs modernes (SPT) Techniques dérivées des méthodes “Markoviennes” Inefficaces pour les séquences non strictement régulières en adresse Estimation de paramètres Prise en compte de la structure de donnée, pour une classe d’applications Résistant aux fluctuations “système” et irrégularités des accès Usage restreint aux applications conformes au modèle 12/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Objectifs Une stratégie de prefetch adaptée au TDSI, et, plus largement, aux applications embarquées qui utilisent des données structurées (tableaux, arbres, multi-résolution,. . . ). Caractéristiques souhaitées: Exploiter la localité temporelle et la localité spatiale en index dans la structure Proposer un mécanisme semi-général, pour une grande classe d’application Une architecture de complexité réduite pour cible ASIC ou FPGA Séquences d’accès ciblées: Déterministes fonction de paramètres statiques Déterministes dépendant de paramètres dynamiques Dépendant des données Idée: Intégrer l’aspect multi-dimensionnel Faire des prédictions à moyen terme sur un voisinage proche (en index) 13/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Concept du CachenD (DDR) SDRAM Huge and slow address data nD−AP Cache Small and fast P=(x,y) data Processing Unit 14/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Modèle de séquence 70 References on axis i 60 50 40 30 A 20 10 0 −10 V −20 0 50 100 150 200 250 300 350 400 450 Time (Cycles) 15/29- Journées Compil’2013 Le Cache nD-AP S. Mancini 500 Architecture du Cache nD-AP Bus Système DMA X tracker Y Data Requête @ wr Contrôle RAM @ rd tracker Cache nD−AP (x,y,...) Data Unité de calcul 16/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Mécanisme de prédiction et gestion mémoire Ty Γy Sur chaque axe, un estimateur calcule une zone de références prédites: La prédiction, basée sur un modèle, tient compte du passé et estime les tendances moyennes (filtrage) La charge à la mémoire centrale est limitée par un mécanisme à hystérésis. Sont estimés: c, le centre de la zone en cache 00000 11111 00000 11111 T , la taille de la zone en cache 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 Γ, la taille de la zone de garde 00000 11111 c 00000 11111 00000 11111 00000 11111 00000 11111 ∆, la vitesse du cache Γx Tx Cached zone 111 000 000 111 000 111 Guard zone 000 111 000 111 17/29- Journées Compil’2013 Le Cache nD-AP Cache memory Cache center S. Mancini Comportement du Cache nD-AP 11111 00000 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 18/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Comportement du Cache nD-AP P 111111 000000 000000 111111 000000 111111 f 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 18/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Comportement du Cache nD-AP 11111 00000 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 18/29- Journées Compil’2013 Le Cache nD-AP Pf S. Mancini Comportement du Cache nD-AP 1111111 0000000 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 f 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 P ∆x 18/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Comportement du Cache nD-AP Common Zone 1111111 0000000 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 f 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 1111111 0000000 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 P ∆x 18/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Comportement du Cache nD-AP 111111 000000 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 18/29- Journées Compil’2013 Le Cache nD-AP 111 000 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 S. Mancini Modèle de performance 1.0 0.9 0.8 Efficiency 0.7 0.6 T = 19 Γ=3 ∆=4 Al = 10 v = 0.1 m=1 Nr = 5.103 0.5 0.4 0.3 0.2 Latmax = 36 0.1 0 10 20 30 40 50 60 70 80 90 100 Background Memory Latency (Cycles) Conditions: paramètres fixes, estimateur au premier ordre 19/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Plateforme d’émulation La stratégie est validée par simulation et sur un prototype FPGA. Effets d’un environnement plus réaliste (latence mémoire variable, période des références variables, etc . . . ). DDR SDRAM DDR−SDRAM Controler Parameters Coproc. Interface Master 2D−AP CPU Cache PPC405 Instrumentation PLB system bus FPGA Xilinx 20/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Quelques résultats 1 0.8 0.6 0.4 0.2 0 1 VHDL SystemC EM-SE 0.8 0.6 0.4 0.2 0 0 50 100 150 Normalised Memory Latency 200 50 100 150 Normalised Memory Latency 0.4 0.2 0 100 150 Rotation - 2 lines of 32*32 tiles 200 50 100 150 Normalised Memory Latency 200 2D Ray casting, interleaved 1 VHDL SystemC EM-SE 0.8 0.6 0.4 0.2 0 50 0.2 0 Normalised Efficiency Normalised Efficiency 0.6 Normalised Memory Latency 0.4 200 1 VHDL SystemC EM-SE 0 0.6 Rotation - 1st line of 48*48 tiles 1 0.8 VHDL SystemC EM-SE 0.8 0 0 Rotation - 1st line of 32*32 tiles Normalised Efficiency Normalised Efficiency VHDL SystemC EM-SE Normalised Efficiency Normalised Efficiency 1 VHDL SystemC EM-SE 0.8 0.6 0.4 0.2 0 0 50 100 150 Normalised Memory Latency Image rendering 200 0 50 100 150 Normalised Memory Latency 200 Lip contour finding Les mesures sur plateforme (EM-SE) sont calibrées par rapport au mesures en simulation (VHDL & SystemC). 21/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Comparaison avec un cache standard (Ray casting 3D) 3D-AP Cache ppc405 1x1x1 ppc405 2x2x1 ppc405 4x4x1 ppc405 8x8x1 ppc405 16x16x1 ppc405 2x2x2 ppc405 4x4x4 ppc405 8x8x8 100 Efficiency % 80 60 40 20 0 0 20 40 60 80 100 Latency (cycle) 4KB 3D-AP Cache v.s. 16KB ppc405 cache for different memory layout 22/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Précharge adaptative System Adaptation update error Threshold Update Prediction Update Error Instant Filter shift System Control Bus center index PE distance coordinate Cache Filter Mean Predictor range Predicted center Fusion Predicted range Amplitude − Application Adaptation 23/29- Journées Compil’2013 Le Cache nD-AP Filter Envelope detector Tracker S. Mancini Quelques résultats 1 1 sequence Rotation_1_88_rad__Bloc_32x32_Extrait - adaptative Static parameters l=1 Static parameters l=2 Static parameters l=4 Static parameters l=8 Static parameters l=10 Static parameters l=20 Static parameters l=50 Static parameters l=100 Static parameters l=200 0.8 sequence ray_256_1 - adaptative Static parameters l=1 Static parameters l=2 Static parameters l=4 Static parameters l=8 Static parameters l=10 Static parameters l=20 Static parameters l=50 Static parameters l=100 Static parameters l=200 0.8 0.6 Efficiency Efficiency 0.6 0.4 0.4 0.2 0.2 0 0 0 20 40 60 80 100 Latency 120 140 160 180 0 200 20 40 1 sequence liste_renoir_45_extrait - adaptative Static parameters l=1 Static parameters l=2 Static parameters l=4 Static parameters l=8 Static parameters l=10 Static parameters l=20 Static parameters l=50 Static parameters l=100 Static parameters l=200 0.8 80 100 Latency 120 140 160 180 200 2D Ray casting Rotation - 1st line of 32*32 tiles 1 60 sequence snake_G_haut_xy_extrait - adaptative Static parameters l=1 Static parameters l=2 Static parameters l=4 Static parameters l=8 Static parameters l=10 Static parameters l=20 Static parameters l=50 Static parameters l=100 Static parameters l=200 0.8 Efficiency 0.6 Efficiency 0.6 0.4 0.4 0.2 0.2 0 0 0 20 40 60 80 100 Latency 120 140 Image rendering (1) 160 180 200 0 20 40 60 80 100 Latency 120 140 160 180 200 Lip contour finding Pour chaque valeur de latence, la performance de l’auto-adaptation (-) est comparée au prédicteur non-adaptatif paramétré statiquement par le résultat de l’autoparamétrage. 24/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Bilan de l’autoadaptation Analyse: Le réglage des prédicteur est simplifié La fréquence de coupure devient le seul paramètre Performance “semblable” à celle obtenue manuellement Et même meilleure pour quelques séquences Le coût d’une mise à jour est anisotropique Dépend du rangement des données en mémoire! Décrochage au-delà d’une latence seuil L’objectif devient la minimisation du temps d’attente et non plus de pré-charger à temps Pistes: Détecter le changement d’objectif Accorder l’adaptation entre les prédicteurs de chaque dimension 25/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Interaction avec la compilation Utiliser le cache depuis le logiciel API Accéder au cache avec les indexes, par l’interface coprocesseur De nombreux programmes “codent” la transformation des indexes en adresses Transformer les applications pour produire de la localité temporelle et spatiale en indexes Et non plus en adresse ! Prendre en compte le rangement des données Calculer la fréquence de coupure à la compilation Boucles à bornes statiques v.s variables Et la compilation dynamique? 26/29- Journées Compil’2013 Le Cache nD-AP S. Mancini Plan Le memory wall Le prefetch Le Cache nD-AP Conclusion & perspective 27- Journées Compil’2013- Le CacheND-AP : pré-chargement adaptatif dans les tableaux Conclusion & perspective Nous avons: Définit et validé une stratégie de pré-chargement pour le traitement d’image Réalisé des modèles de simulation et prototypes FPGA Expérimenté l’auto-adaptation Perspective: Améliorer l’auto-adaptation Concevoir des modèles de séquence plus complexes Intégrer ce mécanisme dans une infrastructure SW Rétro-action avec la compilation 28/29- Journées Compil’2013 Conclusion & perspective S. Mancini Journées Compil’2013 Le CacheND-AP : pré-chargement adaptatif dans les tableaux S. Mancini Plan Détaillé Le memory wall Motivations Problématique du “Memory Wall” Consommation d’énergie due aux mémoires Comment “passer le mur mémoire” ? Une vision globale Le prefetch Le prefetch Prefetch usuels Limitations Le Cache nD-AP Positionnement Objectifs Concept du CachenD Modèle de séquence Architecture du Cache nD-AP Mécanisme de prédiction et gestion mémoire Comportement du Cache nD-AP Modèle de performance Plateforme d’émulation Quelques résultats Comparaison avec un cache standard (Ray casting 3D) Précharge adaptative Quelques résultats Bilan de l’autoadaptation Interaction avec la compilation Conclusion & perspective Conclusion & perspective