COMPTOIR
  
register

Un potentiel bug hardware sur la famille Gemini Lake ?

Chez les fabricants de CPU, la transparence n'est jamais vraiment de mise. Et pour cause : c'est sur les performances résultantes des implémentations tops secrètes que sont évalués les processeurs, mieux vaut dans ce cas garder jalousement son savoir-faire pour soi. Cependant, cela peut créer quelques problèmes lorsque le produit présente des défauts, et c'est ce qui semble être le cas de la série des Gemini Lake chez Intel. Ces derniers composent la famille des SoC basse consommation de la firme, gravés en 14 nm : les Pentium Silver J5005 et N5000 ainsi que les Celeron J4005, J4105, N4000 et N4100.

 

Apparemment, le bug se situerait lors d'appels de fonctions - procédé très courant en programmation - et concerne l'alignement mémoire. Sans rentrer dans les détails trop techniques, les opérations de chargement et de rangement mémoire sont connues pour être sensibles à l'adresse à laquelle on souhaite accéder. En effet, de par la structure des caches, il est préférable de tomber sur des données stockées à une adresse multiple de 64 octets - la granularité des lignes de caches, le plus petit élément stockable en L1/L2/L3 de nos jours.

 

Ce n'est pas non plus un fait nouveau que cet alignement a une influence parfois énorme sur les performances : un chercheur a en effet découvert que la seule modification de l'adresse de départ d'une fonction pouvait modifier son temps d'exécution de 90% ! Cependant, ces effets extrêmes restent occasionnels et n'entraînent en aucun cas un crash du CPU... tout du moins jusqu'à quelques jours. Car il semblerait que, lorsque certaines fonctions sont appelées avec une adresse finissant par 10, 50, 90 ou d0, sous une conjoncture malencontreuse d'autres événements rendant la reproduction du crash difficile - toujours ! - le processeur renvoie une erreur de franchissement invalide d'une barrière de 16 octets. Coïncidence ? En tout cas, aligner sur 32 octets (rendant la fin de l'adresse en 00, 20, 40, 60, 80, a0, c0 ou e0) semble résoudre le problème. Mystère mystère...

 

Intel n'a, à l'heure actuelle, pas encore commenté cette, mais il est référencé chez Chromium et Mozilla : de quoi donner un sérieux crédit au problème. Ca n'est pas le premier bug hardware de la firme (on se souviendra des extensions TSX sur Haswell), Intel a donc décidément l'air de jouer de malchance ces dernières années... Coup du destin ou retour de bâton de problèmes plus structurels concernant l'entreprise ? (Source : Phoronix)

 

 

intel devil logo

Pas très contents, les bleus ?

Un poil avant ?

Comptoiroscope • Que vaut le reboot de GRiD sous DX12 ?

Un peu plus tard ...

MSI annonce une carte mère X570 sans loupiotes et renforcée : la X570 MEG Unify

Les 20 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
par Un adepte de Godwin en Île-de-France, le Mercredi 09 Octobre 2019 à 13h00  
par Ragoteur qui prend l'eau en Île-de-France, le Mercredi 09 Octobre 2019 à 11h38
Est-ce que le Out-of-Order (ou "HS" en français, j'imagine) a un acronyme en OoO ?
C'est l'autre "out of order", à interpetter à la lettre. Toute façon le français, tout le monde s'en branle à commencer par les français qui le respectent plus et ne le font plus respecter.
Une marque de voiture allemande, que je ne citerai pas, a même lancé en grande pompe et en toute candeur, avec des pubs, son modèle fer de lance de la gamme électrique qu'ils appellent, tenez vous bien, "etron". Le pire c'est que le terme français, si on fait une petite recherche, est d'origine germanique.
par Un ragoteur sans nom de Bretagne, le Mercredi 09 Octobre 2019 à 12h09  
par Ragoteur qui prend l'eau en Île-de-France, le Mercredi 09 Octobre 2019 à 11h38
...
C'est difficile de dire pourquoi AMD n'a pas travaillé sur autant d'opti que Intel, Il y a fort à parier que cela coute cher et en plus comme Intel a des brevets de partout ils ont sans doute pas envie de payer pleins de royalties. De toute façon avant Zen2 AMD avait encore pas mal de chose à améliorer architecturalement pour que cela soit rentable.

Oui OoO = Out of Order.
Et ILP = Instruction Level Parallelism.
Par ILP on parle de à quel point un bout de code pourrait etre en théorie exécuté en parallèle. Si tu prend un code quelconque tu devrait voir que certaines instructions sont indépendantes du résultat d'autres instructions qui se trouve aux dessus d'elles. L'idée de l'OoO c'est d'ajouter dans le hard un système qui va analyser les dépendances entre les instructions (surtout les dépendances entre les registres utilisés par les instructions) pour trouver si certaines instructions ne pourraient pas etre exécuté en même temps que d'autre. Si c'est le cas l'ILP du programme est haut.
Et je parle d'ILP local car c'est pour des instructions très proche qu'on fait cette analyse de dépendance.

La difference avec avec le VLIW c'est que pour un VLIW, comme l'explique Nicolas D., le parallélisme est explicité dans l'instruction, pas besoin d'un gros système pour analyser les dépendances. C'est plus économique en énergie et surface, c'est pour ça que Intel a pensé que c'était le futur et ils ont fait l'Itanium. Malheureusement c'est très difficile de faire un compilateur efficace pour VLIW. Il n'est pas suffisant pour exploiter à fond l'ILP d'un programme comme un OS par exemple. Donc ce n'est pas utilisé dans les machines généralistes.
par Nicolas D., le Mercredi 09 Octobre 2019 à 12h04  
par Ragoteur qui prend l'eau en Île-de-France, le Mercredi 09 Octobre 2019 à 11h53
C'était pour "Hors Service" qui est généralement la trad française de "Out of order", mais puisque l'on agence des chiffres avec des "ordinateurs" je ne sais pas si c'est la traduction qui serait la plus adaptée dans ce contexte là.

En tout cas, merci encore pour les éclaircissements (et j'suis fan de "OoO", on est dans l'ASCII art, dans le smiley, dans l'acronyme... J'suis fan !)
Non pas du tout, c'est Out-of-Order pour "dans le désordre" contrairement à "In-Order" qui est "dans l'ordre". Et puis un CPU HS, ça n'est pas vraiment la meilleure idée :P
par Ragoteur qui prend l'eau en Île-de-France, le Mercredi 09 Octobre 2019 à 11h53  
par Nicolas D., le Mercredi 09 Octobre 2019 à 11h44
Et oui, on dit aussi OoO mais jamais HS (je n'ai à vrai dire même pas saisi ce que tu pensais...).
C'était pour "Hors Service" qui est généralement la trad française de "Out of order", mais puisque l'on agence des chiffres avec des "ordinateurs" je ne sais pas si c'est la traduction qui serait la plus adaptée dans ce contexte là.

En tout cas, merci encore pour les éclaircissements (et j'suis fan de "OoO", on est dans l'ASCII art, dans le smiley, dans l'acronyme... J'suis fan !)
par Nicolas D., le Mercredi 09 Octobre 2019 à 11h44  
par Ragoteur qui prend l'eau en Île-de-France, le Mercredi 09 Octobre 2019 à 11h38
Et voilà, maintenant que c'est beaucoup plus clair pour moi, toute la magie du truc à disparu. Pffff...

Trève de plaisanterie, merci pour les explications.
Si j'en crois vos échanges je ne suis pas certain que l'on puisse dire que "AMD n'a pas été touché par Meltdown juste parce qu'ils n'ont pas été fichus d'avoir les mêmes optimisations qu'Intel" car il est tout à fait possible que, pressentant un truc moyennement safe (tout exécuter avant d'avoir fini les vérifs de sécurité, je n'y connais rien mais ça m'a l'air très moyennement safe), ils aient préféré ne pas s'engager sur cette voie là, mais c'est peut-être effectivement juste du marketing.

Est-ce que le Out-of-Order (ou "HS" en français, j'imagine) a un acronyme en OoO ?
Non je pense vraiment que le ragoteur de bretagne a raison et que AMD n'avait juste pas l'implem', et que ça a bien arrangé le marketing... dans la course à la perf, il n'y avait pas vraiment de limite !

Et oui, on dit aussi OoO mais jamais HS (je n'ai à vrai dire même pas saisi ce que tu pensais...).
par Ragoteur qui prend l'eau en Île-de-France, le Mercredi 09 Octobre 2019 à 11h38  
par Nicolas D., le Mercredi 09 Octobre 2019 à 11h30
[...]
Et voilà, maintenant que c'est beaucoup plus clair pour moi, toute la magie du truc à disparu. Pffff...

Trève de plaisanterie, merci pour les explications.
Si j'en crois vos échanges je ne suis pas certain que l'on puisse dire que "AMD n'a pas été touché par Meltdown juste parce qu'ils n'ont pas été fichus d'avoir les mêmes optimisations qu'Intel" car il est tout à fait possible que, pressentant un truc moyennement safe (tout exécuter avant d'avoir fini les vérifs de sécurité, je n'y connais rien mais ça m'a l'air très moyennement safe), ils aient préféré ne pas s'engager sur cette voie là, mais c'est peut-être effectivement juste du marketing.

Est-ce que le Out-of-Order (ou "HS" en français, j'imagine) a un acronyme en OoO ?
par Nicolas D., le Mercredi 09 Octobre 2019 à 11h30  
par Ragoteur qui prend l'eau en Île-de-France, le Mercredi 09 Octobre 2019 à 11h22
Je ne bitte rien à votre jactance mais je suis aussi pour avoir plus de détails !

C'est comme pour la messe en latin à laquelle personne ne comprenait rien et qui lui donnait alors un côté "mystique". Je n'sais absolument pas ce qu'est un(e) VLIW une MMU ou un truc qui a des superécailles, mais alors, qu'est-ce que c'est agréable à lire !!
Le VLIW c'est Very Long Instruction Word, un type de CPU dans lequel une instruction contient une concaténation de sous-instructions exécutées en parallèle sur le même thread : ça permet d'exploiter le parallélisme du code par un CPU possédant plusieurs unités de calculs sans pour autant avoir du multi cœur... mais c'est au compilateur de le spécifier (i.e. de remplir au maximum la macro-instruction par le plus de trucs possible), d'où l'appellation statique. Ça a complètement disparu du grand public, remplacé par le superscalaire, dans lequel le CPU décode une à une les instructions au fur et à mesure du code (d'où le dynamique) et va remplir ses unités de calcul en fonction de ce qu'il juge optimal.

Pour la MMU c'est Memory Management Unit, le truc qui, étant donnée une adresse, va aller chercher les données correspondantes (et accessoirement vérifier - ou pas avec Meltdown - si le programme a bien les permissions nécessaires pour cela).
par Ragoteur qui prend l'eau en Île-de-France, le Mercredi 09 Octobre 2019 à 11h22  
par Nicolas D., le Mercredi 09 Octobre 2019 à 10h40
Ah ? Je suis intéressé pour avoir plus de détails, le monde est souvent très petit.
Je ne bitte rien à votre jactance mais je suis aussi pour avoir plus de détails !

C'est comme pour la messe en latin à laquelle personne ne comprenait rien et qui lui donnait alors un côté "mystique". Je n'sais absolument pas ce qu'est un(e) VLIW une MMU ou un truc qui a des superécailles, mais alors, qu'est-ce que c'est agréable à lire !!
par Nicolas D., le Mercredi 09 Octobre 2019 à 10h40  
par Un ragoteur sans nom de Bretagne, le Mercredi 09 Octobre 2019 à 10h10
Non VLIW c'est pas superscalaire, c'est une alternative au superscalaire. En VLIW on n'exécute pas un code scalaire mais un code explicitement parallèle, là ou du superscalaire vient extraire du parallélisme implicite dans un code scalaire. D'où le nom superscalaire.
Pour du superscalaire on parle de dynamic scheduling des instructions car c'est à l'exécution qu'on détermine le parallélisme. Dans du VLIW on parle de static scheduling car c'est à la compile qu'on détermine le parallélisme.

Je précise que je travail sur une archi VLIW
Ah ? Je suis intéressé pour avoir plus de détails, le monde est souvent très petit. Je sais ce qu'est superscalaire mais il me semblait que la terminologie incluait le VLIW (-> superscalaire = exploitation de l'ILP par le CPU, qu'elle soit statique ou dynamique). Du coup je suis vaincu, je vais corriger cette phrase sur Meltdown & Spectre, hors de propos
par Un ragoteur sans nom de Bretagne, le Mercredi 09 Octobre 2019 à 10h10  
par Nicolas D., le Mercredi 09 Octobre 2019 à 09h46
Peu importe la technique, chez AMD il y a dans le mécanisme d'exécution spéculative de quoi stopper l'arrivé d'une page protégée dans le cache, ce qui n'est pas le cas d'Intel, et ça ressemble fichtrement à une mesure de sécurité préventive.
Parceque tu crois que Intel avant de faire cette optimisation n'as pas pensé a vérifier si l'accès est OK ? Évidement que c'est une protection, Intel aussi à cette protection, sauf qu'ils ont essayé de tirer sur la corde pour augmenter l'ILP en exécutant des loads en partie vérifié (quitte à les annuler plus tard si besoin). Ce travail d'optimisation poussé n'a pas été fait chez AMD et tant mieux pour eux car Meltdown montre que c'est pas une si bonne opti que ça.
On peut critiquer la recherche chez Intel qui n'ont pas découvert Spectre et Meltdown avant Google, mais c'était un comportement voulu commencer le load avant de finir toutes les étapes de vérification par la MMU.
par Nicolas D., le Mercredi 09 Octobre 2019 à 09h46
Le VLIW c'est du superscalaire, et ça peut rester in-order .
Non VLIW c'est pas superscalaire, c'est une alternative au superscalaire. En VLIW on n'exécute pas un code scalaire mais un code explicitement parallèle, là ou du superscalaire vient extraire du parallélisme implicite dans un code scalaire. D'où le nom superscalaire.
Pour du superscalaire on parle de dynamic scheduling des instructions car c'est à l'exécution qu'on détermine le parallélisme. Dans du VLIW on parle de static scheduling car c'est à la compile qu'on détermine le parallélisme.

Je précise que je travail sur une archi VLIW
par Nicolas D., le Mercredi 09 Octobre 2019 à 09h46  
Peu importe la technique, chez AMD il y a dans le mécanisme d'exécution spéculative de quoi stopper l'arrivé d'une page protégée dans le cache, ce qui n'est pas le cas d'Intel, et ça ressemble fichtrement à une mesure de sécurité préventive. Mais oui je suis tout à fait d'accord sur ce que tu dis : des failles ne sont pas présentes chez les rouges pour des question de non-implémentation (L1TF par exemple, si je ne m'abuse).
par Un ragoteur sans nom de Bretagne, le Mercredi 09 Octobre 2019 à 09h39
Cela n'a aucun sens de faire du superscalaire sans Out of Order.. Comment t'exploites l'ILP local sans du code scalaire sans faire du Out of Order ? C'est l'algo de Tomasulo qui permet de faire du Superscalaire car il explique comment faire du Out of Order.
Le VLIW c'est du superscalaire, et ça peut rester in-order .
par Un ragoteur sans nom de Bretagne, le Mercredi 09 Octobre 2019 à 09h40  
par Un ragoteur sans nom de Bretagne, le Mercredi 09 Octobre 2019 à 09h39
Comment t'exploites l'ILP local sans du code scalaire sans faire du Out of Order ?
* dans du code scalaire

sorry