2017-04-21 3 views
-2

Certaines CPU ont des bugs au niveau de l'architecture (par exemple these), et il est possible que certains programmes développés pour ces CPU aient aussi des bogues compensés par ceux du CPU. Si tel est le cas, un tel programme ne fonctionnerait pas sur un émulateur «parfait». Les émulateurs PC incluent-ils ces bogues? Par exemple, Bochs est connu pour être assez précis, les gère-t-il «correctement», comme le ferait un vrai CPU?Les émulateurs PC émulent-ils les bogues du processeur?

P.S. J'ai déjà deux inconvénients. Qu'est-ce qui ne va pas?

+2

Ce serait pratiquement impossible - la plupart de ces erreurs ne sont pas bien définies et peuvent inclure diverses conditions à déclencher. En outre, toutes ces erreurs (et autres erratas publiées) sont spécifiques au modèle, tandis que les émulateurs sont généralement spécifiques à l'ISA. – Leeor

+0

Vous avez posé une question vague avec aucune réponse (d'accord la réponse est oui quelqu'un a très probablement ajouté au moins un bug de cpu dans au moins un simulateur dehors là dans le monde). Vous n'avez pas semblé faire l'effort de trouver la réponse vous-même. (Note: J'ai googlé l'ensemble de l'Internet et n'a rien trouvé, signifie que vous n'avez pas vraiment fait un effort parce que la réponse est là-bas et peut être fait avec google). Ceci n'est pas une question de débordement de pile, donc c'est juste une question de temps avant qu'il ne soit fermé ... –

Répondre

2

De tels émulateurs existent, le processus de conception de cpu nécessite des émulateurs extrêmement précis, avec un modèle de microarchitecture précis. Les concepteurs de CPU ont besoin d'eux pour déboguer des objectifs ou pour estimer les performances théoriques des futures puces, aussi leurs gestionnaires pourraient calmer les investisseurs avant que la puce ne soit prête, en montrant certaines fonctionnalités attendues. De tels émulateurs sont strictement confidentiels.

De plus, le gel RTL dans la fermeture de la conception du CPU a engendré beaucoup d'erratas, ou chaînes d'erratas. Pour simplifier la future puce, les développeurs de micrologiciels pourraient prendre en charge des outils spéciaux pour émuler le comportement fonctionnel du processeur attendu, avec tous les erratas connus implémentés. Mais ils sont également propriétaires. Mais en réalité, il est nécessaire de comprendre ce que l'on entend par le mot "émulateur" et "précis" dans ce cas. Bochs, en tant que QEMU, est un modèle ISA fonctionnel, dont le but est de fournir un profil d'architecture exploitable pour exécuter les binaires de l'ISA cible, la vitesse d'émulation est un premier objectif: pas de micro-architecture modélisée: pas de pipeline , pas de moniteurs de performance, et ainsi de suite.

Pour comprendre genre de précision Bochs, s'il vous plaît regarder à leur mise en œuvre de CPUID surveille perfomance et met en cache leafs topologie: cpu/cpuid.cc

Lorsque vous spécifiez une cpu à Bochs, Skylake par exemple, bochs rien connu que les valeurs CPUID que appartiennent à cette cpu, jeux de fonctions en d'autres termes: AVX2, FMA, XSAVE etc.

également Bochs n'implémente pas les valeurs CPUID modèle/famille précises: comparer la mise en œuvre de la feuille d'information de version CPUID (grep pour la fonction get_cpu_version_information): il est une valeur codée en dur.

Il n'y a donc pas d'erratas cpu chez Bochs.

+1

Existe-t-il des émulateurs open-source précis/extrêmement précis? Et aussi: si vous avez RTL, vous pouvez l'exécuter (avec verilator, vcs, etc) avec précision (et très lent) avec tous les bogues logiquement embarqués présents. Ceci est "simulateur cycle-précis" ... – osgx

+1

Émulation extrêmement précise besoin de connaissances de la micro-architecture de CPU spécifique. C'est une propriété intellectuelle confidentielle. De tels outils ne peuvent pas être open-source. Peut-être que la très ancienne microarchitecture des processeurs est déclassifiée, et il y a des gens fantaisistes qui font de tels outils. Je n'y crois pas. – Jettatura

+0

Les simulateurs rtl n'émulent pas nécessairement le silicium ni les insectes. Comme dire que j'ai du code C et peu importe l'ordinateur pour lequel je le compile, il fonctionne de la même façon. –