Superscalar
Une architecture superscalar de l'unité centrale de traitement du met en application une forme du parallélisme appelé le parallélisme d'Instruction-niveau de dans un processeur simple. Elle permet de ce fait une sortie plus rapide d'unité centrale de traitement qu'être autrement possible à la même fréquence de base . Un processeur superscalar exécute plus d'une instruction pendant un rhythme en expédiant simultanément des instructions multiples aux unités fonctionnelles superflues sur le processeur. Chaque unité fonctionnelle n'est pas un noyau séparé d'unité centrale de traitement, mais une ressource d'exécution dans une unité centrale de traitement simple, telle qu'une unité d'arithmétique-logique de , le levier ou le multiplicateur de peu de .
Tandis qu'une unité centrale de traitement superscalar est en général également canalisé par , ils sont deux techniques différentes de perfectionnement d'exécution. Il est théoriquement possible d'avoir une unité centrale de traitement superscalar non-canalisée, ou une unité centrale de traitement non-superscalar canalisée.
La technique superscalar est traditionnellement associée à plusieurs caractéristiques de identification. Noter ces derniers sont appliqués dans un noyau donné d'unité centrale de traitement.
Des instructions de
sont publiées d'un jet séquentiel d'instruction
Le matériel d'unité centrale de traitement vérifie dynamiquement les dépendances de données de entre les instructions au temps d'exécution (contre le logiciel vérifiant à au moment de la compilation)
Accepte des instructions multiples par rhythme
Histoire
Le CDC de de s de Cray Seymour la '6600 du 1965 est souvent mentionnée comme première conception superscalar. Le Intel i960CA (1988) et le AMD 29000 - les séries 29050 (1990) microprocesseurs étaient les premiers microprocesseurs superscalar d'un seul morceau commerciaux. Les unités centrales de traitement du RISC aiment ces derniers apportés le concept superscalar aux ordinateurs micro parce que la conception de RISC a comme conséquence un noyau simple, permettant l'expédition franche d'instruction et l'inclusion des unités fonctionnelles multiples (telles qu'ALUs) sur une unité centrale de traitement simple dans les règles contraintes de conception du temps. C'était la raison pour laquelle les conceptions de RISC étaient plus rapides que des conceptions de CISC par les années 80 et dans les années 90.Excepté des unités centrales de traitement utilisées dans une certaine batterie - les dispositifs actionnés, essentiellement toutes les unités centrales de traitement d'usage universel se sont développés puisqu'environ 1998 sont superscalar. Commencer par le " ; P6 " (Pentium pro Pentium II de et de ) l'exécution, le microprocesseurs d'architecture du 80386 de s d'Intel 'ont mis en application un ensemble d'instruction de CISC sur une Micro-architecture superscalar de RISC. Des instructions complexes sont intérieurement traduites à a RISC-comme le " ; micro-ops" ; Ensemble d'instruction de RISC, permettant au processeur de tirer profit du processeur fondamental de haut-exécution tout en restant compatible avec des processeurs plus anciens d'Intel.
De scalaire à superscalar
Les processeurs les plus simples sont les processeurs scalaires que chaque instruction exécutée par un processeur scalaire manoeuvre typiquement un ou deux données élémentaires à la fois. En revanche, chaque instruction exécutée par un processeur de vecteur de fonctionne simultanément sur beaucoup de données élémentaires. Une analogie est la différence entre le scalaire et l'arithmétique de vecteur. Un processeur superscalar est sorte d'un mélange des deux. Chaque instruction traite une donnée élémentaire, mais il y a les unités fonctionnelles superflues multiples dans chaque unité centrale de traitement de ce fait les instructions que multiples peuvent traiter les données élémentaires séparées concurremment.La conception d'unité centrale de traitement de Superscalar souligne améliorer l'exactitude d'expéditeur d'instruction, et lui permettre de maintenir les unités fonctionnelles multiples en service à tout moment. Ceci est devenu de plus en plus important quand le nombre d'unités a augmenté. Tandis que les premières unités centrales de traitement superscalar auraient deux le ALUs et un simple FPU , une conception moderne comme le PowerPC 970 inclut quatre ALUs et deux FPUs et deux ou trois unités du SIMD aussi. Si l'expéditeur est inefficace à garder toutes ces unités alimentées avec des instructions, l'exécution du système souffrira tout à fait.
Un processeur superscalar soutient habituellement un taux d'exécution au-dessus d'une instruction de par cycle de machine . Mais simplement le traitement des instructions multiples concurremment ne rend pas une architecture superscalar, puisque le a canalisé < ! -- est-ce qu'canalisation scalaire classique exécute des instructions multiples par cycle ? ? -->, le multiprocesseur ou les architectures multinucléaires du réaliser également cela, mais avec différentes méthodes.
Dans une unité centrale de traitement superscalar l'expéditeur lit des instructions de la mémoire et décide lesquels peuvent être courues en parallèle, les expédiant aux unités fonctionnelles superflues contenues à l'intérieur d'une unité centrale de traitement simple. Par conséquent un processeur superscalar peut être envisagé avoir les canalisations parallèles de multiple, qui est des instructions de traitement simultanément d'un fil simple d'instruction.
Limitations
L'amélioration disponible d'exécution des techniques superscalar est limitée par deux zones clé : Le degré de parallélisme intrinsèque dans le jet d'instruction, c. quantité limitée du parallélisme d'instruction-niveau, et du Les programmes exécutables binaires existants ont des divers niveaux de parallélisme intrinsèque. Dans certains cas les instructions ne dépendent pas de l'un l'autre et peuvent être exécutées simultanément. Dans d'autres cas elles sont interdépendantes : une instruction effectue des ressources ou des résultats de l'autre. Le a d'instructions = le b + le c ; d = e + f peuvent être courus en parallèle parce qu'aucun des résultats ne dépend d'autres calculs. Cependant, le a d'instructions = le b + le c ; d = a + f ne pourraient pas être praticables en parallèle, selon l'ordre dans lequel les instructions accomplissent tandis qu'elles se déplacent par les unités.
Quand le nombre d'instructions simultanément publiées augmente, le coût de la dépendance vérifiant des augmentations extrêmement rapidement. Ceci est aggravé par la nécessité de vérifier des dépendances au temps d'exécution et à la fréquence de base de l'unité centrale de traitement. Ce coût inclut des portes de logique additionnelle exigées pour mettre en application les contrôles, et des délais par ces portes. La recherche montre que la porte coûtée dans certains cas peut être des portes de , et le retard a coûté , où n est le nombre d'instructions dans l'ensemble d'instruction du processeur, et k est le nombre d'instructions simultanément expédiées. Dans les mathématiques, ceci s'appelle un problème de Combinatoric impliquant les permutations
Quoique le jet d'instruction puisse ne contenir aucune dépendance d'inter-instruction, une unité centrale de traitement superscalar doit néanmoins vérifier cette possibilité, puisqu'il n'y a aucune assurance autrement et le manque de détecter une dépendance produirait des résultats incorrects.
N'importe comment avancé le processus de semi-conducteur ou comment rapidement la vitesse de commutation, ceci place une limite pratique sur combien des instructions peuvent être simultanément expédiées. Tandis que les avances de processus permettront des nombres toujours plus grands d'unités fonctionnelles (par exemple, ALUs), le fardeau de vérifier des dépendances d'instruction se développe tellement rapidement que la limite superscalar réalisable d'expédition est assez petite. -- probablement sur l'ordre de cinq à six instructions simultanément expédiées.
Toutefois même la dépendance infiniment rapide donnée vérifiant la logique sur une unité centrale de traitement superscalar autrement conventionnelle, si le jet d'instruction lui-même a beaucoup de dépendances, ceci limiterait également le speedup possible. Ainsi le degré de parallélisme intrinsèque dans le jet de code forme une deuxième limitation.
Solutions de rechange
Collectivement, recherche d'entraînement de ces deux limites sur des augmentations architecturales alternatives d'exécution telles que le mot d'instruction très long (VLIW), de instruction parallèle explicitement calculant , multifile simultané (SMT), et processeurs multinucléaires .Avec VLIW, la tâche onéreuse de la dépendance vérifiant par la logique de matériel au temps d'exécution est enlevée et déléguée au compilateur . Les contrôles qui dans une conception superscalar doivent être accomplis dans des nanosecondes peuvent être exécutés en secondes, et si sur une machine multinucléaire et employer un compilateur multifil , par les processeurs multiples en parallèle. L'instruction parallèle de explicitement calculant (ÉPIQUE) est comme VLIW, avec des instructions prefetching de cachette supplémentaire.
Le multifile simultané, souvent abrégé comme SMT, est une technique pour améliorer l'efficacité globale des unités centrales de traitement superscalar. SMT permet aux fils indépendants de multiple de l'exécution d'utiliser mieux les ressources fournies par des architectures modernes de processeur.
Les processeurs de Superscalar diffèrent des processeurs multinucléaires parce que les unités fonctionnelles superflues ne sont pas les processeurs entiers. Un processeur simple se compose d'unités fonctionnelles fin-granuleuses telles que le ALU , le multiplicateur du nombre entier , le levier de nombre entier, l'unité de virgule flottante de , etc. Il peut y avoir des versions multiples de chaque unité fonctionnelle pour permettre l'exécution de beaucoup d'instructions en parallèle. Ceci diffère d'une unité centrale de traitement multinucléaire qui concurremment des instructions de processus des fils multiples, un fil par noyau. Il diffère également d'une unité centrale de traitement canalisée par , où les instructions multiples peuvent concurremment être dans diverses étapes d'exécution, mode en continu du .
Les diverses techniques alternatives ne sont pas mutuellement - exclusivité - elles peuvent (et être fréquemment) être combinées dans un processeur simple. Ainsi une unité centrale de traitement multinucléaire est possible où chaque noyau est un processeur indépendant contenant les canalisations parallèles multiples, chaque canalisation étant superscalar. Quelques processeurs incluent également des possibilités du vecteur .
Voir également
de Superbe-filetage multifile simultané
Exécution spéculative /exécution désireuse
Verrouillage , une issue de logiciel de de multiprocesseur semblable aux dépendances de logique sur des superscalars
.
| Random links: | Wellfleet, Nébraska | Henrietta, le Wisconsin | Huskisson, Nouvelle-Galles du Sud | Shangrao | Arular | Superscalar |