Gestion des architectures multi-processeurs

Gestion de machines montées en cluster (liées par une connexion réseau)

Indépendance

Toutes les ressources sont mises en commun. Cependant, une note doit être placée sur chaque ressource qui est directement lié à l'éloignement de la ressource par rapport au processeur où elle est demandée. Dans le cas des machines montées en cluster, il est impératif que les différentes parties ne soient pas trop partagées avec des processeurs lointains.

Par exemple, la mémoire de chaque cluster est indépendante même si tous les clusters ont la connaissance de la mémoire de chacun.

Travail en commun

Lorsqu'un processus d'une machine a besoin d'effectuer une requête sur une autre machine faisant partie du cluster, au niveau de l'API système, un message réseau sera transmis d'une machine à l'autre. Les données nécessaire à la bonne exécution de la fonction contiennent des adresses vers des zones mémoire de la première machine, avant d'exécuter la fonction, des requêtes seront faite pour rappatrier les données de manière temporaire. Lorsqu'une réponse est une zone de la mémoire, la zone sera transmise à la machine initiale de la même manière.

Gestion multiprocesseurs sur une même machine type SMP (plusieurs processeurs mais une zone mémoire)

Nécessite de gérer l'APIC de chaque processeur. l'APIC doit être mappé en très haute mémoire pour éviter les interactions avec le cache (0xFFFFD000 par exemple). L'état et la localisation de l'APIC sont cotnenues dans IA32_APIC_BASE du MSR (registre 0x1B (27)) que l'on peut lire avec les instructions RDMSR et WRMSR.

Généralement, l'APIC est initialement disponible en 0xFEE00000.

Avant d'utiliser l'APIC ou les registres MSR, vérifier que le processeur possède ces structures via les drapeaux du CPUID !

Le numéro de chaque processeur peut être déduit de "l'APIC ID" que l'on trouve dans les registres de l'APIC (local APIC à +0x20) ou dans le registre EBX à la suite d'un CPUID avec 1 chargé dans EAX (bits 24 à 31)

Un timer de précision est disponible avec l'APIC (et donc par processeur). il faut donc s'en servir lorsque l'on a plusieurs processeurs

Question : vaut-il mieux autant d'ordonnanceurs que de processeurs ou seulement un pour tout le monde ou alors un tous les 5 processeurs ou autre ?

Mise en place d'une interruption via l'APIC qui permet de communiquer plus aisément entre les processeurs.