Plusieurs threads et de cache du PROCESSEUR

Je mets en place un filtrage des images de l'opération en C en utilisant plusieurs threads et de le rendre le plus rationnellement possible. J'ai une question cependant: Si une mémoire est accessible par thread-0, et en même temps si la mémoire est accessible par thread-1, il va l'obtenir à partir de la mémoire cache ? Cette question découle de la possibilité que ces deux threads peuvent être en cours d'exécution dans deux différents cœurs du PROCESSEUR. Donc, une autre façon de mettre c'est: tous les cœurs partagent la même mémoire cache ?

Supposons que j'ai une disposition de la mémoire comme suit

int de sortie[100];

Supposons qu'il y ait 2 cœurs du PROCESSEUR, et donc je frayer les deux fils de travailler simultanément. Un tel programme pourrait être de diviser la mémoire en deux morceaux, 0 à 49 et de 50 à 99 et de laisser chaque thread de travail sur chaque morceau. Une autre façon serait de laisser thread-0 travailler sur des indices, comme 0 2 4 et ainsi de suite.. alors que l'autre thread de travail sur les indices comme 1 3 5 .... Plus tard la technique est plus facile à mettre en œuvre (spécialement pour les données 3D) mais je ne suis pas sûr si je pouvais utiliser le cache efficacement de cette façon.

  • En fin de compte, cette connaissance ne vous aidera pas beaucoup. Même si je suis d'accord que le fait d'être capable d'interpréter les observations en conséquence à la connaissance de la CPU entrailles est bon, en fin de compte vous êtes à la mesure de ce qui est plus rapide, et d'appliquer ce que vous avez observé, peu importe si il s'adapte à toute théorie.
  • Je ne vois pas pourquoi cela a un c++ tag (vous l'avez fait écrire, dans C, vous l'avez dit), donc je l'ai enlevé. N'hésitez pas à crier à moi si c'était stupide.