Parallélisme de niveau d\'instruction
le parallélisme (ILP) d'Instruction-niveau de est une mesure desquelles des opérations dans un programme informatique peut être exécuté simultanément. Considérer le programme suivant :
1. g = e * f
L'opération 3 dépend des résultats des opérations 1 et 2, ainsi il ne peut pas calculer jusqu'à ce que les deux soient accomplis. Cependant, les opérations 1 et 2 ne dépendent d'aucune autre opération, ainsi elles peuvent être calculées simultanément. (Voir également : dépendance de données de ) si nous supposons que chaque opération peut être accomplie dans une unité de temps alors que ces trois instructions peuvent être accomplies dans un total de deux unités de temps, donnant un ILP de 3/2.
Un but du compilateur et des concepteurs du processeur est d'identifier et tirer profit autant d'ILP comme possible. Des programmes ordinaires sont typiquement écrits sous un modèle d'exécution séquentielle où les instructions exécutent un après l'autre et dans l'ordre spécifique par le programmeur. ILP permet au compilateur et au processeur de recouvrir l'exécution des instructions multiples ou même de changer l'ordre dans lequel des instructions sont exécutées.
Combien d'ILP existe dans les programmes est très spécifique à l'application. Dans certains domaines, tels que des graphiques et scientifique le calcul de la quantité peut être très grand. Cependant, les charges de travail telles que la cryptographie montrent beaucoup moins de parallélisme.
les techniques Micro-architecturales qui sont employées pour exploiter ILP incluent :
Canalisation d'instruction de où l'exécution des instructions multiples peut être partiellement recouverte.
Exécution de Superscalar dans laquelle des modules exécution multiples sont employés pour exécuter des instructions multiples en parallèle. Dans les processeurs superscalar typiques, les instructions s'exécutant simultanément sont adjacentes dans l'ordre original de programme.
Exécution en panne où les instructions s'exécutent dans n'importe quel ordre qui ne viole pas des dépendances de données. Noter que cette technique est indépendant de la canalisation et superscalar.
Le registre de retitrant qui se rapporte à une technique employée pour éviter la fabrication en série inutile des opérations de programme a imposé par la réutilisation des registres par ces opérations, employée pour permettre l'exécution en panne.
Exécution spéculative qui permet l'exécution des instructions ou des parties complètes d'instructions avant d'être sûre si cette exécution devrait avoir lieu. Une forme utilisée généralement d'exécution spéculative est spéculation de flux de commande où des instructions après une instruction de flux de commande (par exemple, une branche) sont exécutées avant que la cible de l'instruction de flux de commande soit déterminée. Plusieurs autres formes d'exécution spéculative ont été proposées et sont en service comprenant l'exécution spéculative conduite par la prévision de valeur de , la prévision de la dépendance de mémoire de et la prévision de latence de cachette de .
Prévision de branche qui est employée pour éviter de caler pour que des dépendances de commande soient résolues. La prévision de branche est employée avec l'exécution spéculative.
Les réalisations courantes de l'exécution en panne dynamiquement (c., alors que le programme s'exécute et sans n'importe quelle aide du compilateur) extraient ILP à partir des programmes ordinaires. Une alternative est d'extraire ce parallélisme à au moment de la compilation et de donner de façon ou d'autre cette information au matériel. En raison de la complexité de mesurer la technique en panne d'exécution, l'industrie a réexaminé les ensembles d'instruction qui explicitement coder les opérations indépendantes de multiple par instruction. Ces types d'ensemble d'instruction incluent :
le VLIW de
et le étroitement lié mettent en parallèle explicitement l'instruction calculant des concepts de
VLIW est un exemple d'une architecture de jeu d'instructions de l'indépendance où l'ensemble d'instruction tient compte des spécifications explicites de l'indépendance à travers des instructions. VLIW et exécution en panne sont des techniques orthogonales puisqu'en principe ils peuvent être employés ensemble.
Les architectures de flux de données de est une autre classe des architectures où ILP est explicitement spécifié.
Ces dernières années, des techniques d'ILP ont été employées pour apporter des améliorations d'exécution malgré la disparité croissante entre les fréquences d'opération de processeur et les moments d'accès mémoire (ILP tôt conçoit comme IBM 360 techniques utilisées d'ILP pour surmonter les limitations imposées par un dossier de registre relativement petit). Actuellement, une pénalité d'absence dans l'antémémoire aux coûts de mémoire centrale que plusieurs centaines d'unité centrale de traitement fait un cycle. Tandis qu'en principe il est possible d'employer ILP pour tolérer même de telles latences de mémoire les coûts associés de dissipation de ressource et de puissance sont disproportionnés. D'ailleurs, la complexité et souvent la latence des structures fondamentales de matériel a comme conséquence la fréquence réduite d'opération réduisant plus loin tous les avantages. Par conséquent, les techniques mentionnées ci-dessus s'avèrent insatisfaisant garder l'unité centrale de traitement du blocage pour les données hors puce. Au lieu de cela, l'industrie se dirige vers exploiter des niveaux plus élevés de parallélisme qui peuvent être exploités par des techniques telles que le multitraitement et le multifile.
Voir également
Dépendance de données de Parallélisme , MLP de niveau de mémoire de .
| Random links: | Baron Forres | Temple de Stanley | Examen d'oeil | Remélangé (album de Sarah McLachlan) | CJBC-FM | Paralelismo_llano_de_la_instrucción |