Le processeur Xtensa de Tensilica: paramétrage et extensibilité INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Survol de la présentation Introduction Paramétrage Boutisme: petit ou grand Instructions supplémentaires Interruptions et exceptions Mémoire interne Protection de mémoire Autres options Extension TIE FLIX Entrées/sorties INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Processeurs configurables – rappel Trois aspects: processeur paramétrable: a une configuration de base, et on peut activer ou particulariser certaines caractéristiques comme des multiplicateurs, unités à point flottant, caches, nombre de registres, largeur de bus, etc. processeur extensible: a une configuration de base, et on peut modifier son jeu d’instructions, lui ajouter des blocs fonctionnels, des interfaces, etc. on a besoin d’outils de design (compilateur, assembleur, débogueur, simulateur, profileur) qui s’adaptent au paramètres choisis et aux extensions apportées. attention: la distinction est parfois floue entre paramétrage et extensibilité …. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Xtensa LX2, vue d’ensemble INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel tensilica.com
Flot de configuration du Xtensa ‘configuration’ = paramétrage S. Leibson, « Designing SOCs with configured cores », © Elsevier, 2006 sur le serveur de Tensilica INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Sommaire des instructions de base (rappel) chargements et signés ou non (8, 16) ou de 32 bits entreposages branchements instructions combinées: comparaison et branchement déplacements entre registres option conditionnelle arithmétique de base addition et décalage combinés logique de base décalages utilisation d’un registre spécial autres Tensilica inc., Xtensa ISA Reference Manual, © 2006
Survol de la présentation Introduction Paramétrage Boutisme: petit ou grand Instructions supplémentaires Interruptions et exceptions Mémoire interne Protection de mémoire Autres options Extension TIE FLIX Entrées/sorties INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage Pour ces options, l’utilisateur n’a le choix que de les activer ou non; la gamme des paramètres pouvant être choisis est limitée. Boutisme: petit ou grand Instructions supplémentaires Interruptions et exceptions Mémoire interne Protection de mémoire Autres options INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: instructions supplémentaires (1) « Densité du code »: active l’encodage de certaines instructions sur 16 bits au lieu de 24 Tensilica inc., Xtensa architecture and performance © 2005 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: instructions supplémentaires (2) Accélération de boucles ajoute trois registres: pointeurs de première et dernière instruction de la boucle et compteur de boucle (32 bits) permet d’effectuer une boucle sans opérations de décrémentation, de comparaison et de branchement conditionnel k = 10; while (k != 0) { // instructions… k = k – 1; } INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: instructions supplémentaires (3) Multiplication 16 bits (entiers signés ou non) Multiplication 32 bits (entiers signés ou non) (attention: le code synthétisable ne spécifie pas comment la multiplication doit être réalisée …) Multiplication-accumulation de 16 bit avec accumulation sur 40 bits int produitscalaire(int a, int b, int N) { sommeproduits = 0; for (k = 0; k < N; k++) { sommeproduits += a[k] * b[k]; } return sommeproduits; INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: instructions supplémentaires (4) opérations arithmétiques diverses: saturation max de deux valeurs min de deux valeurs décalage pour normalisation extension du signe option booléennes 16 registres de 1 bit 13 instructions remplace le registre d’état habituel d’un processeur INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: instructions supplémentaires (5) unité à virgule flottante 16 registres à virgule flottante de 32 bits 38 opérations à simple précision (IEEE 754) registre d’état spécial (underflow, overflow, division par zéro, etc.) synchronisation pour multi-processeurs pour opérations atomiques INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: interruptions et exceptions désalignement d’accès à la mémoire ajout d’interruptions de niveau 1 ajout d’interruptions de niveau 2-6, et interruption non masquable interruptions périodiques (compteur de 32 bits) INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: mémoire interne cache d’instructions (taille [largeur et longueur], type d’associativité, détection d’erreurs) cache de données (taille [largeur et longueur], type d’associativité, détection d’erreurs) RAM et ROM d’instructions (taille [largeur et longueur], détection d’erreurs) RAM et ROM de données (taille [largeur et longueur], type d’associativité, détection d’erreurs) accès direct à un périphérique (XLMI) INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: protection de mémoire protection de mémoire pour modes superviseur et utilisateur gestion de mémoire virtuelle et pagination pour supporter l’exécution de code de système d’exploitation INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Options de paramétrage: autres options nombre de registres physiques (32 ou 64) interface au bus du processeur (PIF) registres spéciaux utilisateur registre pour gestion des processus légers registre d’identification du processeur débogage et observation du processeur INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Survol de la présentation Introduction Paramétrage Boutisme: petit ou grand Instructions supplémentaires Interruptions et exceptions Mémoire interne Protection de mémoire Autres options Extension TIE FLIX Entrées/sorties INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Extensions du processeur Tensilica Instruction Extension (TIE) ajout d’instructions spécialisées ajout d’états (registres de contrôle) ajout de blocs de registres FLIX Entrées-sorties INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Tensilica Instruction Extension (TIE) But fondamental: ajouter des instructions sur mesure au processeur Nécessite un effort supplémentaire, donc il faut réserver cette approche aux parties problématiques de l’application: le profilage est essentiel. (Attention à la loi d’Amdhal!) INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Tensilica inc., TIE Language User’s Guide, © 2007
TIE: principes de base Description de l’opération ou la structure matérielle dans un langage similaire à Verilog. L’opération peut ensuite être appelée du code C ou par une commande en assembleur. On peut ‘facilement’ obtenir un estimé de performance et de coût en surface. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
TIE: exemple inversion du boutisme d’un mot se compile en 9 instructions une seule nouvelle instruction: byteswap ax, ay (assembleur) unsigned int byteswap(unsinged int arg1) (en C) INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
TIE: flot de design (1): description fonctionnelle INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Tensilica inc., TIE Language User’s Guide, © 2007
TIE: flot de design (2): métriques de performance et de coût attention: ‘optimize’ est utilisé à toutes les sauces INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Tensilica inc., TIE Language User’s Guide, © 2007
TIE: flot de design (3): implémentation du processeur INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Tensilica inc., TIE Language User’s Guide, © 2007
Tensilica Instruction Extension (TIE): impact sur la performance Attention! Le fait d’ajouter des structures matérielles dans le pipeline du processeur peut très bien allonger le chemin critique et réduire la fréquence maximale d’horloge. Rappel: Tensilica inc., TIE Language User’s Guide, © 2007 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
FLIX: principes (1) Flexible-length instruction extensions Version modifiée d’une architecture VLIW (Very Long Instruction Word) Le compilateur reconnaît les instructions pouvant être exécutées en parallèle et les combine en un très grand mot Les instructions sont lancées en parallèle et exécutées par des composantes distinctes, simultanément. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
FLIX: principes (2) INF8505: processeurs embarqués configurables Tensilica inc., FLIX: Fast Relief for Performance-Hungry Embedded Applications, © 2005 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Extension des entrées/sorties (1) Deuxième unité de chargement/entreposage INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel tensilica.com
Extension des entrées/sorties (2) Ports et files d’attente INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel tensilica.com
Xtensa LX2, vue d’ensemble INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel tensilica.com
Il y a trop de choix! Tensilica propose d’utiliser (ahem, acheter) un processeur pré-configuré, un « Diamond Core » 108Mini: usage général (!), minimal 212GP: usage général(!) , rapide, caches 232L: 212GP + MMU (Linux) 570T: 3-superscalaire 330HiFi: applications audio 545CK: processeur pour le traitement du signal, 3-superscalaire, SIMD, 8 MACs à 16 bits, etc . INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Références utiles Xtensa Instruction Set Architecture Reference Manual (isa_rm.pdf) Xtensa TIE Language User’s Guide (tie_ug.pdf) Xtensa TIE Language Reference Manual (tie_rm.pdf) www.tensilica.com INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel