Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Pentium Pro / Hyperthreading / Pipeline


Messages recommandés

Invité willow2
Posté(e)

Bonjour,

J'ai lu qu'une des caractéristiques du Pentium Pro était de pouvoir exécuter 5 instructions en même temps. En quoi est-ce différent de l'hyperthreading ?

Et quelle est la différence entre l'hyperthreading et un processeur à 2 pipelines ?

Merci par avance pour vos réponses

Posté(e)

T'as un devoir de vacances à rendre sur le sujet ou quoi ??

http://www.commentcamarche.net/forum/affic...eading-pipeline

 

Fais quelques recherches...

http://softwarecommunity.intel.com/articles/eng/2004.htm

Without Hyper-Threading Technology enabled, the Intel® NetBurst® microarchitecture processes a single thread through the pipeline. Recall that the typical mix of typical instructions only utilizes about 35% of the resources in the Intel NetBurst microarchitecture.

 

When Hyper-Threading Technology is enabled, resources at each stage within the Intel® NetBurst® microarchitecture are replicated, partitioned, and shared to execute two threads through the pipeline.

Posté(e) (modifié)

Non, pas de devoirs de vacances, juste marre d'entendre parler de trucs que je ne maitrise pas :P

J'ai lu attentivement le lien référencé que j'ai trouvé très bien fait.

Pour la comparaison hyperthreading/pipeline, je vais essayer de résumer :

  • pipeline et hyperthreading sont deux manières complémentaires d'optimiser l'utilisation des ressources du processeur.
  • l'hyperthreading s'applique au sein d'un pipeline
  • le pipeline a pour vocation de permettre d'optimiser le traitement d'une instruction alors que l'hyperthreading permet de traiter simultanément deux threads, les threads étant traités plus rapidement grace au pipeline
  • l'hyperthreading permet d'utiliser la partie des ressources non-utilisés généralement (car une instruction classique va utiliser seulement 35% des ressources.

Du coup, j'ai trois questions:

  • C'est ça ou je me suis complètement vautré ?
  • En ce qui concerne les 65% non-utilisés, le fait de multiplier le nombre de pipelines ne permet-il pas de réduire significativement cette "perte" ?
  • si la réponse à la question ci-dessus est oui, j'ai quand même du mal à voir ce qu'apporte l'hyperthreading par rapport à x pipelines ?

 

Passons maintenant au cas du pentium Pro et de ses 5 instructions exécutées simultanément.

Cela signifie qu'il y avait 5 pipelines ? (pas taper :P )

 

Merci pour tes lumières !

Modifié par willow2
Posté(e)

La page Wikipédia anglaise traitant des pipelines est assez bien faite et complète : http://en.wikipedia.org/wiki/Instruction_pipeline (n'existe pas en version française, malheureusement)

 

pipeline et hyperthreading sont deux manières complémentaires d'optimiser l'utilisation des ressources du processeur.
"Complémentaires" je ne sais pas, mais en tout cas l'Hyperthreading vient se greffer "par-dessus" les pipelines afin d'assurer un semblant d'indépendance entre deux threads qui s'exécutent en parallèle au travers des pipelines (la notion "d'indépendance" est bien expliquée dans Wikipédia : il y a plusieurs étapes dans l'exécution d'une instruction et les pipelines ne permettent pas de s'assurer que les instructions s'exécutent dans les faits réellement l'une à la suite des autres (si la suivante a besoin des résultats de celle qui vient d'entrer dans le pipeline, il va falloir la "bloquer" et donc rendre inutile l'architecture en pipeline... chose à laquelle les fabricants de processeurs ont répondu par des branchements prédictifs, bref des trucs de dingues... où j'en étais ?) Ah oui... Donc l'Hyperthreading sert à séparer l'exécution de deux "paquets" d'instructions réparties sur un pipeline, ce qui fait qu'on est à peu près en présence d'un biprocesseur quand on active cette technologie (à peu près parce que les contextes d'exécution ne sont pas réellement différents, tout le monde pioche dans les mêmes registres, le même cache, etc.)

 

l'hyperthreading s'applique au sein d'un pipeline
C'est à dire ?
le pipeline a pour vocation de permettre d'optimiser le traitement d'une instruction
Le pipeline a pour vocation d'optimiser l'utilisation des différentes parties du CPU, parce que l'exécution d'une instruction les fait bosser successivement et quelqu'un s'est dit "on va toutes les faire bosser en même temps en prenant de l'avance sur les instructions suivantes"...
alors que l'hyperthreading permet de traiter simultanément deux threads, les threads étant traités plus rapidement grace au pipeline
C'est ça...
l'hyperthreading permet d'utiliser la partie des ressources non-utilisés généralement
Euh... Oui... C'est à peu près ce qu'on obtient, mais le but premier de l'Hyperthreading ce n'est pas d'optimiser les temps morts du processeur pour y coller l'exécution d'un autre thread, c'est d'éviter d'avoir à abandonner le résultat d'une instruction sortie d'un pipe parce qu'elle avait besoin d'un résultat d'une autre instruction en cours dans un autre pipe et qu'on avait mal prédit ce résultat (problème qui a causé la perte de toute la ligne de produits "Pentium4", si ma mémoire est exacte... parce que plus de pipes, même s'ils tournent à des fréquences de dingues, perdent du temps à exécuter du code pour rien, d'où surchauffe et performances minables en hautes fréquences par rapport à des processeurs moins fournis en pipelines)

 

En ce qui concerne les 65% non-utilisés, le fait de multiplier le nombre de pipelines ne permet-il pas de réduire significativement cette "perte" ?
Non. Ca va nécessiter de prédire encore plus les résultats des autres instructions lorsque tu voudras faire entrer une instruction dans un pipe. Voir réponse précédente.

Cela dit on peut jouer sur les mots et répondre "oui, ça va effectivement réduire les 65% non utilisés vu qu'on aura une occupation bien plus grande.... mais on aura également une efficacité de l'ordre de 65%" :-P

 

si la réponse à la question ci-dessus est oui, j'ai quand même du mal à voir ce qu'apporte l'hyperthreading par rapport à x pipelines ?
Ca apporte l'assurance que les deux threads ne se bouffent pas le nez en ce qui concerne les résultats des instructions, vu que deux threads traitent deux "programmes" différents. L'ennui ce coup-ci c'est que le processeur doit faire du context-switching pour passer d'un thread à l'autre et ça bouffe des ressources également, mais apparemment pas autant que "trop de pipelines"...

 

Passons maintenant au cas du pentium Pro et de ses 5 instructions exécutées simultanément.

Cela signifie qu'il y avait 5 pipelines ?

Il faudrait ressortir la doc du Pentium Pro pour ça, et j'avoue que je n'en ai pas le courage ;-)

 

Note : ne prends pas mes explications pour argent comptant. Mes cours d'architecture des processeurs sont relativement loin et je n'avais pas révisé avant de venir :-P

 

-- edit --

http://en.wikipedia.org/wiki/Hyperthreading

http://en.wikipedia.org/wiki/Data_dependency

http://en.wikipedia.org/wiki/Branch_prediction

etc. etc.

Rejoindre la conversation

Vous publiez en tant qu’invité. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...