核间中断IPI的机制

XLR 732 多核多线程处理器的中断由 PIC(Programmable Interrupt Controller)统一控制。PIC 允许一个硬件线程中断其他的硬件线程,这种方式被称为核间中断
(Inter-Processor Interrupts,IPI)。PIC 拥有一个宽度为 32 位的核间中断寄存器IPIBase,该寄存器包含目的线程的编号、中断向量及中断类型(是否中断多个硬件
线程)等内容。核间中断可以通过向这个寄存器写入需要的值来产生。若硬件线程 A 想要发送一个核间中断给硬件线程 B,它只需要向寄存器 IPIBase 中写入 B
的 Thread ID、中断向量、中断类型等值就可以了,PIC 会通知 B 所在的核挂起它当前的执行序列,并根据中断向量跳转到中断服务例程 ISR 的入口。使用 IPI 进行
核间通信的关键在于要利用中断服务例程 ISR 去读取一个事先约好的共享内存区域。发起方首先将消息写到一块共享内存中,然后发起核间中断。被中断的硬件
线程在中断服务例程中读取该内存,以获得发起方通知的消息。为防止多核间的竞争导致消息被改写,使用这种方式必须利用锁机制来确保消息的完整性

转载于:https://my.oschina.net/victorlovecode/blog/344344

你可能感兴趣的:(核间中断IPI的机制)