• [^] # Re: Explication sur APIC

    Posté par . En réponse au journal Explication sur APIC. Évalué à 1.

    Mouarfff, Tous le monde a faux et tous le monde a bon. Il y a deux choses completement differentes: L'APIC et l'IO-APIC Le premier est interne au cpu et permet en effet de gerer 256 sources differentes, c'est la partie interne au cpu qui permet de masquer ou pas les interrupts entre autre. Il sert egalement à la gestion du bus de signalisation interprocesseur pour les machines SMP et integre (cpu>pentium) un timer additionnel utilisé par linux pour réaliser un watchdog hard (genère une interruption bas niveau nom masquable (smi)). Il integre plein de gadgets en plus sur les proc recents. L'IO-APIC quand a lui est le remplacant de nos bon vieux 8259 (dénomé xt-pic sous linux). C'est le controleur physique d'interrruption en lui meme qui est en double (cascadé) dans les anciens PC a base de 8259. L'IO-APIC permet en effet de generer 24 interrupt hw differentes. Y a des machines un peut tordu avec plusieurs IO-APIC, ou des IO-APIC "Custom" gérant plusieurs dixaines de lignes d'interruption physiques. Sous Linux, dans /proc/interrupts, les interrupts sont numérotés par rapport au nombre de ligne physiques disponibles (16 ou 24 en gereral), le mapping vers le vecteur APIC est caché (voir la table affiché au boot). Sous Windows (NT), c'est le numéro des vecteur APIC qui est affiché. Sur une machine SMP en mode MPS1.4 (multiprocesseur post 486), les interruptions sont donc numérotés de 0 a 255. Sur ma machine, ma 2940 se retrouve en 30 et des brouettes et ma matrox en 80 et des poussières. Quand on parle d'interruption sur nos pc modernes il faut avoir à l'esprit la chose suivante: Broche physique -> mapping broche physique vs No INT IO-APIC -> mapping INT IO-APIC vs INT CPU APIC -> vecteur d'interruption réel. Pour compliquer un peut plus les tables de mapping, une interrupt peut être routée ver un cpu uniquement, plusieurs, tous ...