Bernard Ourghanlian, responsable technologies et sécurité de Microsoft France, nous a écrit à la suite de la publication de l'article Windows incapable d'exploiter les derniers processeurs. Nous publions ci-dessous, en italiques, son courrier, ainsi que notre réponse. Selon l'article publié par le Monde Informatique il semblerait que Windows serait incapable d'exploiter les derniers processeurs et serait, en particulier, incapable de gérer plus de 16 threads. Fort heureusement, il n'en est rien, ainsi que le démontre un examen rapide de l'affichage du gestionnaire de tâche sur un simple PC portable qui permet de visualiser 67 threads rien que pour le processus OUTLOOK.EXE, 37 pour explorer.exe, etc. Autrement dit, Windows Vista - ainsi que d'ailleurs toutes les versions successives de Windows NT depuis sa version initiale - est un système d'exploitation qui est parfaitement capable de gérer un nombre extrêmement important de threads. En fait, il n'y a pas de d'autre limite au nombre de threads qu'il est possible de créer sur un système Windows que la quantité de mémoire adressable par un processus utilisateur. Ce que veut dire M. Ty Carlson dont le nom est cité dans cet article, c'est qu'avec l'avènement et la généralisation des processeurs multi-coeurs, la plupart des applications qui tournent aujourd'hui sur un PC n'ayant pas été conçues à l'origine pour s'exécuter dans un environnement multiprocesseur, celles-ci ne pourront pas nécessairement profiter de l'ensemble des coeurs disponibles pour s'exécuter plus rapidement car elles n'ont pas été pensées pour s'exécuter en parallèle. Autrement dit, dans la mesure où les processeurs sont en train de devenir massivement multi-coeurs, il va falloir faire évoluer les techniques de programmation pour en tirer parti mais cela n'a absolument rien à voir avec le fait que Windows ne puisse pas tirer parti de 4 processeurs ou utiliser plus de 16 threads. Dernière remarque : l'article fait également référence au fait « qu'en configuration standard, XP est toujours limité à n'exploiter que 128 Ko de la mémoire cache des processeurs Intel » ; fort heureusement, ce n'est pas Windows XP (ni un quelconque système d'exploitation d'ailleurs, qu'il soit d'origine Microsoft ou non) qui gère la mémoire cache des processeurs Intel mais bien les processeurs eux-mêmes. Pour rappel, un cache est le nom donné au premier niveau de hiérarchie mémoire que l'on rencontre lorsque les adresses quittent le CPU. Quand le CPU trouve l'élément demandé dans le case, on a ce que l'on appelle un succès cache. Quand il ne le trouve pas, on parle alors de défaut de cache (ou échec cache). Un ensemble de données de taille fixe, appelé bloc, contenant le mot demandé est obtenu à partie de la mémoire principale et placé par le cache. Le principe dit de localité temporelle nous dit qu'il y a des chances que l'on ait besoin à nouveau de ce mot dans un futur proche : il est donc utile de le placer dans le cache où il peut être obtenu rapidement. A cause du principe dit de localité spatiale, il y a aussi une grande probabilité que les autres données du bloc soient bientôt nécessaire. Le temps d'acquisition lors d'un défaut de cache dépend à la fois de la latence et de la bande passante mémoire : la latence détermine le temps pour récupérer le premier mot du bloc et la bande passante détermine le temps pour récupérer le reste de ce bloc. Un échec cache est traité par matériel et oblige les processeurs avec une exécution dans l'ordre à s'arrêter (suspension) jusqu'à ce que la donnée soit disponible.