COMPTOIR
register

Mitigations hardware des spectres : AMD s'explique

Ces deux dernières années ont été lourdes en failles, avec toujours une même origine : l'exécution spéculative. Si cela vous branche, notre dossier sur l'architecture des CPU pourra vous aider à y voir plus clair. Dans les grandes lignes, lorsque le processeur arrive à une instruction lui demandant de sauter conditionnellement à un autre endroit, il faut calculer le résultat de la condition avant de sauter : logique. Sauf que, pour aller plus vite, le processeur va supposer à l'avance le résultat, continuer son exécution en conséquence et, lorsque le résultat est disponible, valider ou invalider le travail effectué. Ce mécanisme s'avère très efficace dans le cas des boucles, c'est pourquoi il a toujours été conservé dans les modèles actuels... mais n'avait pas été pensé sous l'axe de la sécurité : l'invalidation du travail n'est pas totale, ce qui fait que des traces restent dans certains endroits, traces qu'il est possible de récupérer par un autre processus, fait connu sous le nom de canal auxiliaire.

 

meltdown logo

 

À la conception de Zen, AMD annonce avoir pris soin de revoir son architecture pour éviter au maximum ce genre d'attaques. Si cela semble évident, la réalité est plus complexe : vider un cache peut être une opération longue, illustrant le fait que performances et sécurité s'opposent en règle générale. Mais le plus simple reste encore de ne pas toucher le cache : et c'est ce qui est employé dans le TLB. Ce cache sert schématiquement à garder proche du CPU les dernières adresses mémoires utilisées, que ce soit par le noyau (des espaces protégés) ou par l'utilisateur. C'est là qu'AMD a été prudent : depuis Zen, tous les bits de permissions sont également présents, ce qui permet au CPU de faire les vérifications de droit d'accès avant tout chargement (spéculatif ou non !), limitant ainsi le risque de failles. Pour les failles liées à l'Hyperthreading - nommé SMT chez AMD - un bit indique également quel cœur logique a créé la zone mémoire ; ce qui permet de cloisonner les processus même en cas de partage quasi total des ressources.

 

amd smt sharing

Cloisonnement entre les threads d'un même cœur : les unités de calcul pures sont partagées, les autres sont soit dupliquées (partitionnement statique) soit partagées avec un bit d'appartenance ou selon un algorithme permettant d'optimiser la rapidité d'exécution - le principe même du SMT.

 

Le TLB n'est pas le seul à bénéficier de cette structure : dans le cas du SMT, très largement présent sur Zen, et encore davantage sur Zen2, les structures de stockage des données sont soit partagées avec un bit d'appartenances, soit statiquement, ce qui revient à dire que deux caches sont présents, chacun étant assigné à son cœur. Sans surprise, les queues de stockages des valeurs, le DTLS ainsi que les caches d'instructions permettant au fonctionnement Out-of-Order du bouzin sont cloisonnés : c'est naturel et c'est tant mieux !

 

La gestion matérielle des erreurs est également très fine : si quelque chose se passe mal lors de l'exécution spéculative (par exemple, une adresse mémoire n'est pas valide), suivant la faute, aucune donnée n'est transférée vers les instructions suivantes, mettant fin à cette partie de la spéculation. Logique ? Pas nécessairement lorsque le CPU est construit : il est plus rapide chez Intel de faire toute l'exécution, puis ensuite de regarder les erreurs effectuées, c'est ce qui a mené à une branche de Spectre. Par ailleurs, toutes les fautes ne sont pas des erreurs : certaines servent à geler le processus pour du debug, ou peuvent être un overflow, parfois (mais très rarement) utilisé intentionnellement dans les programmes.

 

Notons que ce ne sont pas les seuls mécanismes de spéculation utilisés dans l'architecture Zen (il en existe pour les calculs flottants ou les chargements mémoires, mais ceux-ci sont également cloisonnés pour éviter toute fuite de donnée). Cependant, AMD ne précise aucune mesure comme étant spécifique à Zen2 : qu'il s'agisse d'un coup de bol d'un processeur bien construit à la base ou d'une attention particulière de la firme à la sécurité, on ne peut qu'apprécier le travail fourni, qui semble par ailleurs payer avec un succès commercial. Reste à voir si, avec la démocratisation d'EPYC en entreprises, les chercheurs n'iront pas regarder d'un peu plus près l'agencement interne et trouver des failles critiques chez les rouges...

Un poil avant ?

GIGABYTE annonce un SSD PCIe 4.0 tout cuivré

Un peu plus tard ...

Des switch... étranges dans un vieux générateur HP !

Les 29 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
par Un ragoteur bio d'Occitanie, le Samedi 08 Juin 2019 à 10h32  
Grrruh le troll fait bouuhh au spectre !
par Ideal, le Mercredi 05 Juin 2019 à 14h18  
 

Sais mon ophtalmo qui me la dis, quand on regarde bien les film ne dépasse pas les 30 images/s, sais pour restez synchroniser avec les yeux.
Et les composants AMD sont en dessous d'intel, parce-que ça sert à rien de dépasser les 30images.
Même sur console sais à 30 fps


Sais du bon troll toussa, combien de temps ça va faire illusion?
par Pascal M., le Mercredi 05 Juin 2019 à 14h12  
allez stop au troll, retour au sujet SVP.
par Advandced, le Mercredi 05 Juin 2019 à 14h01  
par Thibaut G. le Mercredi 05 Juin 2019 à 13h48
Demande à voir son diplôme tu dois confondre avec un proctologue
Il avait un diplôme Doctissimo sur son mur, sais donc un pro
par Un ragoteur Gaulois en Auvergne-Rhône-Alpes, le Mercredi 05 Juin 2019 à 13h55  
par Thibaut G. le Mercredi 05 Juin 2019 à 13h48
Demande à voir son diplôme tu dois confondre avec un proctologue
ce qui est déjà pas mal comme carrière
par Thibaut G., le Mercredi 05 Juin 2019 à 13h48  
par Advandced le Mercredi 05 Juin 2019 à 13h38
Sais mon ophtalmo qui me la dis, quand on regarde bien les film ne dépasse pas les 30 images/s, sais pour restez synchroniser avec les yeux.
Et les composants AMD sont en dessous d'intel, parce-que ça sert à rien de dépasser les 30images.
Même sur console sais à 30 fps
Demande à voir son diplôme tu dois confondre avec un proctologue
par Advandced, le Mercredi 05 Juin 2019 à 13h38  
par Pascal M. le Mercredi 05 Juin 2019 à 08h17
il est grand temps d'aller consulter un ophtalmo l'ami !
Sais mon ophtalmo qui me la dis, quand on regarde bien les film ne dépasse pas les 30 images/s, sais pour restez synchroniser avec les yeux.
Et les composants AMD sont en dessous d'intel, parce-que ça sert à rien de dépasser les 30images.
Même sur console sais à 30 fps
par Un rat goth à l'heure embusqué, le Mercredi 05 Juin 2019 à 12h59  
par Ideal le Mercredi 05 Juin 2019 à 10h42
Lol il parle de PS4 ou xbox one celui-là.
J'aurais tendance à dire autour des 100 fps stable surtout si tu joues des heures durant.
par Nicolas D., le Mercredi 05 Juin 2019 à 11h15  
par Un #ragoteur connecté en Île-de-France le Mercredi 05 Juin 2019 à 09h15
> Par ailleurs, toutes les fautes ne sont pas des erreurs : certaines servent à geler le processus pour du debug, ou peuvent être un overflow, parfois (mais très rarement) utilisé intentionnellement dans les programmes.

Vous êtes sûrs que lors d'un overflow/underflow il se passe "quelque chose" au niveau CPU ? Dans ce cas pourquoi est-ce que comportement n'est pas remonté au noyau qui gère l'expecption et tue le processus qui a causé l'overflow/underflow (comme avec une division par 0 notamment).
Pour des raisons de compatibilité principalement : avant, pour représenter 16 bits, il fallait deux registres 8-bit et une manière de détecter les overflow (= retenues des additions) rapide. Du coup, overflow met à 1 le flag d'overflow pour des entiers signés, et le flag de carry pour des entiers non signés : en bref oui, il se passe quelque chose.
Si la division par zéro est non définie mathématiquement, ce n'est pas le cas des overflows : la calcul est toujours vrai... modulo 2^32 (ou 2^64 selon le type). L'overflow peut même être un comportement voulu (par exemple en représentant les nombre négatifs en non signés, qui produisent du coup toujours un overflow lorsque leur valeur atteint zéro), et dans ce cas-là mieux vaut éviter de tuer le processus...
par Ideal, le Mercredi 05 Juin 2019 à 10h42  
Lol il parle de PS4 ou xbox one celui-là.
par Advandced le Mercredi 05 Juin 2019 à 01h01
De toutes façon les CPU AMD sont suffisants, vu que notre oeil ne voit pas à plus de 30fps, ça sert à rien de prendre un Intel pour monter plus haut.

Avec une config full AMD, on a des perfs moindre, mais assez pour du 30fps
par Un #ragoteur connecté en Île-de-France, le Mercredi 05 Juin 2019 à 09h15  
> Par ailleurs, toutes les fautes ne sont pas des erreurs : certaines servent à geler le processus pour du debug, ou peuvent être un overflow, parfois (mais très rarement) utilisé intentionnellement dans les programmes.

Vous êtes sûrs que lors d'un overflow/underflow il se passe "quelque chose" au niveau CPU ? Dans ce cas pourquoi est-ce que comportement n'est pas remonté au noyau qui gère l'expecption et tue le processus qui a causé l'overflow/underflow (comme avec une division par 0 notamment).
par Pascal M., le Mercredi 05 Juin 2019 à 08h17  
par Advandced le Mercredi 05 Juin 2019 à 01h01
De toutes façon les CPU AMD sont suffisants, vu que notre oeil ne voit pas à plus de 30fps
il est grand temps d'aller consulter un ophtalmo l'ami !