J'ai un programme C (graphiques benchamrk) qui fonctionne sur un simulateur de processeur MIPS (je cherche à représenter graphiquement certaines caractéristiques de performance). Le processeur a 8 cœurs mais il semble que le noyau 0 exécute plus que sa juste part d'instructions. Le benchmark est multithread avec le travail distribué exactement entre les threads. Pourquoi est-il possible que le noyau 0 se déroule entre 1/4 et la moitié des instructions, même s'il est multithread sur un processeur 8 core?Pourquoi un core exécute-t-il plus que sa part d'instructions?
Pour quelles raisons cela pourrait-il se produire?
Les priorités de thread sont-elles les mêmes? Les tranches de temps du fil sont-elles les mêmes? Les threads bloquent/dorment-ils? –
Une raison possible est que l'instruction "work [is] exactement répartie entre les threads" est fausse. Sérieusement, il n'y a aucun détail dans cette question. –
Etes-vous sûr de prendre en compte la partie série du programme, avant la création des unités d'exécution? – yaman