Ce n'est un secret pour personne que les nœuds de processus avancés n'surfrent plus les vitesses d'horloge plus élevées et la consommation d'énergie plus faible qu'ils surfraient autrefois. Pendant de nombreuses générations de processus, les vitesses logiques ont continué à augmenter, mais pas les temps d'accès à la mémoire (figure 1). Les chemins limitant la vitesse des processeurs passent presque toujours par la mémoire. Cette situation ne devrait pas changer pour les futurs nœuds de processus en raison des limites très réelles de la physique des semi-conducteurs.
Dans le même temps, les vitesses d'horloge maximales dans les applications embarquées se situent entre 1 GHz et 2 GHz (figure 2). Bien sûr, il existe quelques exceptions qui sont cadencées à plus de 2 GHz, mais pour la plupart des applications, ce n'est pas possible. Il y a des limites à la consommation d'énergie et à la surface, qui augmentent toutes deux rapidement avec la vitesse d'horloge. La plupart des conceptions intégrées sont cadencées à moins de 1 GHz et cela ne changera pas à l'avenir. Augmenter les performances en augmentant la vitesse d'horloge n'est pas une approche réaliste pour la plupart des conceptions intégrées.
La difficulté réside dans le fait que les exigences de performance des applications embarquées ne cessent d'augmenter. Cela est dû à la concurrence, à l'ajout de nouvelles fonctionnalités et à l'évolution des exigences dans les espaces d'application. Par exemple, la taille des disques SSD augmente rapidement en raison de la demande de capacités plus importantes et de vitesses d'accès plus élevées. En outre, le stockage informatique et l'intelligence artificielle sont ajoutés pour prolonger la durée de vie des disques et améliorer l'accès aux données et les performances. Tous ces éléments augmentent les exigences de performance des contrôleurs de disques SSD et des processeurs utilisés pour les mettre en œuvre.
Augmenter les performances du processeur
De nombreuses méthodes ont été utilisées pour augmenter les performances des processeurs. L'augmentation du nombre d'étages du pipeline est utilisée depuis des années pour faire face aux limitations de la vitesse de la mémoire. Par exemple, le processeur DesignWare® ARC® HS à 10 étages avec un accès mémoire à deux cycles peut être cadencé à 1,8 GHz (dans le pire des cas) dans 16 processus FFC. Il y a des limites à la vitesse d'horloge des conceptions intégrées, de sorte que l'ajout d'étages supplémentaires au pipeline d'un processeur ne présente qu'un avantage limité. Cela pourrait changer à l'avenir, mais pour l'instant, un pipeline à 10 étages est optimal pour les conceptions intégrées.
Les implémentations superscalaires constituent un bon compromis en termes de gain de performance par rapport à l'augmentation de la surface et de la puissance. Le passage d'une architecture à un seul point à une architecture à deux points peut augmenter les performances RISC de 40 % avec des augmentations limitées de la surface et de la puissance. Il s'agit d'un bon compromis pour un processeur embarqué. Le passage à une architecture tri-issue ou quadri-issue augmentera encore la surface et la puissance, mais surfrira des augmentations de performance plus faibles. La performance à tout prix n'est jamais l'objectif d'un processeur embarqué.
L'ajout de l'exécution hors ordre (OoO) peut augmenter les performances des applications embarquées sans augmenter les vitesses d'horloge. En général, un CPU qui prend en charge une exécution complète hors ordre est excessif pour les systèmes embarqués, et une approche limitée offrira une augmentation optimale des performances sans augmenter considérablement la taille du processeur. L'exécution hors ordre limitée est couramment utilisée sur les processeurs embarqués haut de gamme.
Le cache est utilisé pour rapprocher la mémoire du processeur, augmentant ainsi les performances. Le cache offre un accès en un seul cycle pour le processeur, et l'amélioration des performances résulte du fait que les informations se trouvent dans le cache lorsqu'elles sont nécessaires. Le code et les données souvent utilisés sont conservés dans le cache de niveau 1 (L1). Le code et les données moins utilisés sont stockés dans un cache de niveau 2 (L2) à accès plus lent ou dans une mémoire externe, et sont accessibles en fonction des besoins. Pour les processeurs multicœurs, le maintien de la cohérence entre les caches de données L1 améliore également les performances. Le cache L1 et la cohérence sont courants dans les processeurs embarqués, tandis que le cache de niveau 2 (et de niveau 3) est utilisé uniquement pour des applications haut de gamme.
Les conceptions embarquées voient une utilisation accrue de plusieurs processeurs. Il y a quelques années, un système sur puce (SoC) typique comptait un à deux processeurs. Aujourd'hui, plus de cinq processeurs sont courants, même pour des conceptions de bas de gamme, et ce nombre continue d'augmenter. Pour répondre à cette demande, les processeurs destinés aux applications embarquées de milieu et haut de gamme offrent des implémentations multicœurs. Des processeurs prenant en charge deux, quatre et huit cœurs de CPU sont disponibles. L'utilisation de Linux ou d'un autre système d'exploitation permet aux programmeurs d'assurer un fonctionnement fluide sur l'ensemble des cœurs de CPU tout en équilibrant l'exécution pour augmenter les performances.
Les accélérateurs matériels sont de plus en plus utilisés dans les conceptions intégrées. Ils surfrent des performances élevées avec une puissance et une surface minimales tout en déchargeant le processeur. Le principal inconvénient des accélérateurs matériels est qu'ils ne sont pas programmables. L'ajout d'accélérateurs fonctionnant en conjonction avec un processeur peut atténuer cet inconvénient. Malheureusement, les processeurs existants ont des capacités limitées, voire inexistantes, pour prendre en charge les accélérateurs matériels. Certains processeurs, comme les processeurs ARC, prennent en charge des instructions personnalisées qui permettent à l'utilisateur d'ajouter du matériel au pipeline du processeur. Bien que les instructions personnalisées soient intéressantes, les accélérateurs matériels surfrent des avantages supplémentaires et, lorsqu'ils sont utilisés avec un processeur, ils peuvent surfrir une amélioration significative des performances.
Il existe des défis à relever pour augmenter les performances des processeurs dans les applications embarquées. Les processeurs prennent déjà en charge des pipelines plus profonds, des implémentations superscalaires et l'exécution hors ordre (OoO), mais ces améliorations ont des limites, et la mise en cache est déjà largement utilisée, tout comme la cohérence, ce qui rend peu probable de nouveaux gains dans ces domaines. Une voie vers de meilleures performances, déjà explorée par les concepteurs de systèmes embarqués, consiste à implémenter davantage de cœurs de CPU et d'accélérateurs matériels dans les conceptions.
Architecture de processeur embarqué de nouvelle génération
Les processeurs de nouvelle génération ajouteront la prise en charge de grandes implémentations multicœurs et de l'accélération matérielle (Figure 3). Les fournisseurs de processeurs doivent faire plus que simplement ajouter des interfaces à leurs processeurs existants. Les processeurs prenant en charge quatre ou huit cœurs de CPU atteignent déjà des limites de fréquence maximales et peuvent rencontrer des problèmes significatifs de fermeture de timing. Ajouter plus de cœurs ne fera qu'aggraver la situation. Les processeurs de nouvelle génération doivent commencer par une ré-architecture complète de l'interconnexion interne du processeur pour faciliter la fermeture de timing, résoudre les limitations de vitesse et augmenter la bande passante interne. La bande passante des interfaces externes doit également être augmentée pour prendre en charge le mouvement des données à l'intérieur et à l'extérieur du processeur.
La qualité de service (QoS) a été largement mise en œuvre dans les réseaux sur puce (NOC), mais peu dans les processeurs multicœurs. Cela changera avec les processeurs de la prochaine génération, qui donneront aux programmeurs la possibilité de gérer la bande passante interne de chaque cœur de processeur et de chaque accélérateur afin de maximiser les performances. Cela dépend de l'application et, bien que la qualité de service ne soit pas nécessaire pour toutes les conceptions, elle sera essentielle dans beaucoup d'autres pour garantir des performances prévisibles.
Avantages des grandes grappes de processeurs
Les grands processeurs multicœurs présentent des avantages par rapport aux petits processeurs multicœurs. La mise en œuvre d'un processeur avec 12 cœurs de CPU par opposition à trois grappes de processeurs avec quatre cœurs de CPU réduira la latence entre les cœurs de CPU et permettra la prise en charge directe du snooping entre les cœurs. Un autre avantage est une meilleure mise à l'échelle des logiciels. Un processeur à 12 cœurs de CPU surfre aux programmeurs une plus grande flexibilité dans la manière dont le logiciel est partitionné, et le nombre de cœurs utilisés pour traiter une tâche peut être alloué dynamiquement en fonction des performances requises. Avec les grappes de processeurs multiples, il est plus difficile d'obtenir ce niveau de contrôle des performances logicielles, en raison de l'absence d'accès uniforme entre les cœurs de processeurs.
Les grands processeurs multicœurs bénéficieront également d'avantages grâce à un couplage étroit avec les accélérateurs matériels. Déplacer les interfaces des accélérateurs matériels à l'intérieur des processeurs plutôt que de les connecter via un bus SoC réduira les latences et le trafic sur les bus SoC tout en augmentant le partage de données et les performances du système. Cela peut également augmenter l'efficacité du contrôle programmable des accélérateurs si des registres utilisateurs partagés sont mis en œuvre.
ARC HS5x/HS6x
Les IP de processeur DesignWare ARC HS5x et ARC HS6x de nouvelle génération de Synopsys tirent parti de plusieurs des méthodes décrites précédemment pour augmenter les performances du processeur. Ils sont construits avec un pipeline haute vitesse à 10 étages et à double émission qui surfre une utilisation accrue des unités fonctionnelles avec une augmentation limitée de la puissance et de la surface. Les processeurs ARC 64 bits HS6x sont dotés d'un pipeline et d'un fichier de registres complets de 64 bits et prennent en charge des espaces d'adresses virtuelles de 64 bits et physiques de 52 bits pour permettre l'adressage direct des grandes mémoires actuelles et futures, ainsi que des chargements et des stockages de 128 bits pour un mouvement efficace des données (figure 4).
Les versions multicœurs des processeurs ARC HS5x 32 bits et HS6x 64 bits incluent une interconnexion interne de processeur avancée à large bande passante, conçue pour faciliter la fermeture de timing avec un horloge asynchrone et jusqu'à 800 Go/s de bande passante interne agrégée. Les versions multicœurs des nouveaux processeurs ARC HS incluent une matrice d'interconnexion avancée qui relie jusqu'à 12 cœurs de processeur et prend en charge les interfaces pour jusqu'à 16 accélérateurs matériels utilisateur. Pour faciliter la fermeture de timing, chaque cœur peut résider dans son propre domaine de puissance et avoir une relation d'horloge asynchrone avec les autres cœurs. Comme tous les processeurs DesignWare ARC, les processeurs HS5x et HS6x sont hautement configurables et implémentent la technologie d'extension de processeur ARC (APEX) qui permet le support d'instructions personnalisées pour répondre aux exigences uniques de performances, de puissance et de surface des applications embarquées.
Pour accélérer le développement de logiciels, les processeurs ARC HS5x et HS6x sont pris en charge par le kit d'outils de développement ARC MetaWare qui génère un code très efficace. La prise en charge des outils libres pour les processeurs comprend le système d'exploitation en temps réel Zephyr, un noyau Linux optimisé, la collection de compilateurs GNU (GCC), le débogueur GNU (GDB) et les utilitaires de programmation GNU associés (binutils).
Résumé
Les exigences de performance des applications embarquées vont continuer à augmenter. Les processeurs utilisés dans ces applications doivent également gagner en performance. Il s'agit d'un défi car la surface et la puissance seront limitées, et les gains de performance des processeurs simples ont déjà été réalisés. Les nœuds de processus avancés n'surfrent plus les gains qu'ils surfraient autrefois, et les vitesses des processeurs embarqués sont limitées. Les capacités superscalaires et OoO sont courantes dans les processeurs haut de gamme, et le 64 bits, bien que nécessaire, n'surfre qu'une augmentation limitée des performances. Une nouvelle génération de processeurs multicœurs prenant en charge plus de huit cœurs de CPU et la connexion interne d'accélérateurs matériels sont nécessaires. Les nouveaux processeurs tels que DesignWare ARC HS5x et HS6x Processor IP surfriront des performances et des capacités évolutives tout en permettant aux concepteurs de gérer les exigences en matière de puissance et de surface de leurs applications embarquées. Construits sur une architecture avancée et mis en œuvre avec une interconnexion interne à grande vitesse, ces processeurs répondent aux besoins de performance des applications embarquées haut de gamme d'aujourd'hui tout en laissant une grande marge de manœuvre pour les conceptions futures.