ZHCZ045A December 2024 – July 2025 AM2752-Q1 , AM2754-Q1
IA:IA 中可能出现的死锁情况
中断聚合器 (IA) 的一个主要功能是转换到达事件传输通道 (ETL) 总线的事件,它可以将事件转换为用于产生电平中断的中断状态位。在 IA 1.0 版中执行此功能的块称为状态事件块。
除了状态事件块外,还有另外两个主处理块:多播事件块和计数事件块。多播块实际上用作事件分离器。对于它接收的每个事件,多播块都可以生成两个输出事件。计数事件块用于将高频事件转换为可读计数。它对输入事件进行计数,并在计数从 0 转换到非零计数值/从非零读数值转换到 0 时生成输出事件。与状态事件块不同,多播和计数事件块生成输出 ETL 事件,然后将这些事件映射到其他处理块。
在设计后,发现了一个可能导致 IA 死锁的问题。当事件“循环”在这三个处理块之间发生时,就会出现该问题。有可能出现一种情况:由于路径阻塞,处理块无法输出事件,并且由于它无法输出事件,因此不能接收任何新的输入事件。无法接受输入事件这种情况会阻止输出路径展开,因此两条路径都被阻塞阻止。
图 2-1 展示了 IA 1.0 的概念方框图。通过采用不允许计数事件块向多播块发送事件的策略,可以避免可能出现的循环。选择此方法是因为更常见的做法是先拆分一个事件,然后对其中一个事件进行计数,同时将另一个事件发送到其他位置。由于该路径由于约定被阻塞,单个事件无法多次访问任何块,因此只要输出保持未阻塞状态,路径就无法被阻塞。
图 2-1 中断聚合器 1.0 版通过遵循此处概述的约定,系统不会出现可能产生死锁情况的危险循环。