Vés al contingut

Interrupció entre processadors

De la Viquipèdia, l'enciclopèdia lliure

En informàtica, una interrupció entre processadors (IPI), també coneguda com a toc d'espatlla, és un tipus especial d'interrupció mitjançant la qual un processador pot interrompre un altre processador en un sistema multiprocessador si el processador que interromp requereix l'acció de l'altre processador. Les accions que es poden sol·licitar inclouen: [1][2]

  • buidatges de memòria cau d'unitats de gestió de memòria, com ara les memòries intermèdies de traducció, en altres processadors quan un processador canvia els mapes de memòria;
  • s'atura quan el sistema està sent tancat per un processador.
  • Notifiqueu a un processador que hi ha treball de prioritat més alta disponible.
  • Notificar a un processador el treball que no es pot fer en tots els processadors a causa, per exemple,
    • accés asimètric als canals d'E/S
    • característiques especials d'alguns processadors

Mecanisme

[modifica]

L'opció M65MP d'OS/360 utilitzava la funció de control directe de l'S/360 per generar una interrupció en un altre processador; a S/370 i els seus successors, inclòs z/Architecture, la instrucció SIGNAL PROCESSOR proporciona una interfície més formalitzada. La documentació d'alguns sistemes operatius d'IBM es refereix a això com un toc d'espatlla.

En ordinadors compatibles amb IBM PC que utilitzen el controlador d'interrupció programable avançat (APIC), la senyalització IPI sovint es realitza mitjançant l'APIC. Quan una CPU vol enviar una interrupció a una altra CPU, emmagatzema el vector d'interrupció i l'identificador de l'APIC local de l'objectiu al registre d'ordres d'interrupció (ICR) del seu propi APIC local. A continuació, s'envia un missatge a través del bus APIC a l'APIC local de l'objectiu, que emet una interrupció corresponent a la seva pròpia CPU.[3]

Exemples

[modifica]

En un sistema multiprocessador amb Microsoft Windows, un processador pot interrompre un altre processador pels motius següents, a més dels que s'indiquen més amunt:

  1. posar en cua una interrupció DISPATCH_LEVEL per programar un fil concret per a l'execució;
  2. punt d'interrupció del depurador del nucli.

Els IPIs reben un IRQL de 29.[4][5]

Referències

[modifica]
  1. «Inter processor interrupts and message buffers · Wiki · Projects / SoC Course with Reference Designs» (en anglès), 22-06-2020. [Consulta: 3 desembre 2023].
  2. «riscv-aclint/riscv-aclint.adoc at main · riscv/riscv-aclint» (en anglès). [Consulta: 3 desembre 2023].
  3. «Inter processor interrupts on a particular core» (en anglès). [Consulta: 3 desembre 2023].
  4. Matt. «Understanding IRQL» (en anglès), 28-04-2002. Arxivat de l'original el 2019-10-14. [Consulta: 6 desembre 2014].
  5. «Inter-Processor Call (IPC) - ESP32 - — ESP-IDF Programming Guide latest documentation» (en anglès). [Consulta: 3 desembre 2023].