用于异构多处理器系统中处理器间中断的机制技术领域
本公开的例子总体上涉及处理器中断,具体而言,涉及异构多处理器系统中的处
理器间中断。
背景技术
集成电路(IC)可以被实施用来执行特定的功能。一种类型的IC为可编程IC,例如
现场可编程门阵列(FPGA)。FPGA通常包括可编程片(programmable tiles)的阵列。这些可
编程片可以包括,例如,输入/输出模块(IOB)、可配置逻辑模块(CLB)、专用随机存取存储器
模块(BRAM)、乘法器、数字信号处理模块(DSP)、处理器、时钟管理器、延迟锁定环(DLL)等
等。
每个可编程片通常都包括可编程互连电路和可编程逻辑电路两者。可编程互连电
路通常包括通过可编程互连点(PIP)互连的不同长度的大量互连线。可编程逻辑电路使用
可编程元件来实现用户设计的逻辑,可编程元件可以包括例如函数发生器、寄存器、算术逻
辑等等。
可编程互连电路和可编程逻辑电路通常通过将配置数据流加载到内部配置存储
器单元中来被编程,该内部配置存储器单元定义了可编程元件如何被配置。配置数据可以
从存储器(例如,从外部PROM)读取或通过外部设备写入FPGA。从而各个存储器单元的集合
状态确定了FPGA的功能。
另一种类型的可编程IC是复杂可编程逻辑器件或CPLD。CPLD包括通过互连开关矩
阵连接在一起并连接到输入/输出(I/O)资源的两个或更多个“功能块”。CPLD的每个功能块
包括类似于在可编程逻辑阵列(PLA)和可编程阵列逻辑(PAL)器件中使用的两级AND/OR结
构。在CPLD中,配置数据通常片上地存储在非易失性存储器中。在一些CPLD中,配置数据片
上地存储在非易失性存储器中,然后作为初始配置(编程)序列的一部分下载到易失性存储
器。
对于所有这些可编程IC,器件的功能由为此目的提供给器件的数据比特控制。数
据比特可以存储在易失性存储器(例如,静态存储器单元,如在FPGA和一些CPLD中的)、非易
失性存储器(例如,FLASH存储器,如在一些CPLD中的)或任何其它类型的存储器单元中。
通过应用处理层(processing layer),例如金属层,可以对其它可编程IC进行编
程,该应用处理层可编程地互连器件上的各种元件。这些可编程IC被称为掩模可编程器件
(mask programmable device)。可编程IC还可以以其他方式(例如,使用熔丝或反熔丝技
术)来实施。词组“可编程IC”可以包括但不限于这些器件,并且还可以包括仅部分可编程的
器件,包括例如专用集成电路(ASIC)。例如,另一种类型的可编程IC包括硬编码晶体管逻辑
(hard-coded transistor logic)和与该硬编码晶体管逻辑可编程互连的可编程开关结构
(programmable switch fabric)的组合。
一些现代IC(包括上面讨论的IC的一些变形)包括能够执行程序代码的嵌入式处
理器。该处理器可以作为一部分被制造在包括可编程逻辑电路和可编程互连电路(也统称
为IC的“可编程电路”)的相同裸片(die)上。应当理解,处理器内的程序代码的执行可区别
于在IC上可用的对可编程电路的“编程”或“配置”。编程或配置IC的可编程电路的动作导致
了由可编程电路中的配置数据指定的不同实体电路的实施。
发明内容
本公开的示例大体上涉及管理异构多处理器系统中的处理器间中断。
本公开的一个示例为一种系统。所述系统大体包括:第一处理器;具有与所述第一
处理器不同的处理器类型的第二处理器;以及与所述第一处理器和所述第二处理器耦接的
处理器间中断(IPI)电路。所述IPI电路通常包括:与所述第一处理器相关联的第一寄存器,
其中所述第一寄存器中的第一比特指示所述第一处理器是否正在请求中断所述第二处理
器;以及与所述第二处理器相关联的第二寄存器,其中所述第二寄存器中的第二比特指示
所述第二处理器是否正在请求中断所述第一处理器。
本公开的另一个示例为一种集成电路(IC)。所述IC通常包括:具有一个或多个硬
连线处理器的处理系统(PS)部分,具有一个或多个具有实体可配置电路的软处理器的可编
程逻辑(PL)部分,以及一个或多个处理器间中断(IPI)电路。每个IPI电路通常被配置为在
不同处理器之间生成一个或多个中断信号,其中至少一个中断信号在所述PS部分中的所述
硬连线处理器之一与所述PL部分中的所述软处理器之一之间。
本公开的又一个示例是用于处理IPI的方法。所述方法通常包括:在IPI电路处接
收来自第一处理器用以中断第二处理器的请求,其中所述第二处理器具有与所述第一处理
器不同的处理器类型;基于所接收的请求,更新与所述第一处理器相关联的第一寄存器中
的第一比特,其中所述第一比特指示所述第一处理器正在请求中断所述第二处理器;以及
基于所述更新从所述IPI电路向所述第二处理器发送中断信号。
附图说明
为了可以详细地理解本公开的上述特征,可以通过参考示例来对上面简要概述的
实施方式进行更具体的描述,其中一些示例在附图中示出。然而,应当注意,附图仅示出本
公开的典型示例,因此不应被认为是对其范围的限制,因为本公开可以允许其他等效的示
例。
图1A示出了根据本公开的一个示例的示例异构多处理器系统;
图1B示出了根据本公开的一个示例的使用互连的图1A的所述示例异构多处理器
系统;
图2示出了根据本公开的一个示例的图1A和1B的系统中的处理器间中断(IPI)控
制器中的示例寄存器;
图3示出了根据本公开的一个示例的用于基于图2中寄存器的内容产生中断的IPI
控制器中的示例逻辑;
图4示出了根据本公开的一个示例的具有可配置为实施不同实体电路的硬连线处
理系统(PS)和可编程逻辑(PL)的示例集成电路(IC);
图5示出了根据本公开的一个示例的图4的系统中的IPI控制器之一中的示例寄存
器;
图6示出了根据本公开的一个示例的用于基于图5中寄存器的内容产生中断的IPI
控制器之一中的示例逻辑;
图7是根据本公开的一个示例的用于在异构多处理器系统中处理中断的示例操作
的流程图。
具体实施方式
本公开的示例提供了用于在异构多处理器系统中处理处理器间中断的技术和装
置,其中至少一些处理器具有不同的特性并且可能不能直接中断另外的处理器。这里描述
的处理器间中断(IPI)机制提供了IPI控制器作为各种处理器之间的IPI接口。IPI控制器包
括用于每个IPI源的触发寄存器、用于每个IPI目标的状态寄存器和用于每个IPI目标的清
除寄存器(clear register),其中寄存器根据系统中的处理器的数量增加而扩展。这种可
扩展的IPI机制使得诸如应用处理器、实时处理器和现场可编程门阵列(FPGA)加速器的多
种处理器能够经由中断彼此通信。IPI机制在逻辑面积和可编程复杂度方面也都是低成本
的。
通用异构多处理器系统中的示例性IPI机制
在具有多个处理器的系统中,可能期望各种处理器能彼此中断。IPI机制通常用于
实施例如高速缓存一致性同步点(coherency synchronization point)、通信信道或邮箱。
然而,多处理器系统可能包括不同性质的各种处理器,这些处理器可能不具有用于同步的
内置结构并且不能彼此直接中断。如本文所使用的,词组“直接中断”通常是指一个处理器
能够在没有中介的情况下中断另一个处理器(例如,通过从一个处理器向另一个处理器发
送中断信号)。
图1A示出了根据本公开的一个示例的示例异构多处理器系统100。如本公开所使
用的,异构多处理器系统通常指具有多个处理器的处理系统,其中至少两个处理器具有不
同的处理器类型(即,具有不同种类或性质)。在某些情况下,异构多处理器系统还可以指具
有多个处理器的处理系统,其中至少两个处理器在不同的处理器集群中(无论相同或不同
的处理器类型)。作为示例,系统100包括三个不同的处理单元102、104、106:处理器类型为A
的处理单元0、处理器类型为B的处理单元1和处理器类型为C的处理单元2。为了使这些异构
处理单元能彼此中断,IPI控制器108与每个处理单元102、104、106连接,例如,使得处理单
元0可以中断处理单元1或处理单元2。如下所述,IPI控制器108可以包括寄存器110和用于
处理寄存器内容的逻辑112。
图2和3示出了IPI控制器108的一个示例性实施例。在本文中所使用的IPI术语中,
中断处理器被称为源、源处理器或IPI源,而被中断的处理器被称为目标、目标处理器或IPI
目标。处理单元102、104、106中的任何一个都可以用作为源或目标。这里描述的IPI机制以
模块化方式设计,这允许该机制在将来能够容易地扩展。最小的模块化单元被称为“组
(set)”,其包括用于每个IPI源(或每个IPI目标,取决于寄存器的类型)的一个寄存器。对于
图1的示例系统100,一组包括三个寄存器。
图2示出了根据本公开的一个示例的IPI控制器108中的示例寄存器。IPI控制器
108包括一组三个触发寄存器2020到2022(统称为“寄存器202”或“触发寄存器202”)、一组三
个状态寄存器2040到2042(统称为“寄存器204”或“状态寄存器204”)以及一组三个清除寄存
器2060至2062(统称为“寄存器206”或“清除寄存器206”)。寄存器202、204和206至少具有足
够的比特来覆盖多处理器系统100中的潜在目标(或源)的数量,并且剩余的比特(如果有的
话)可以被保留用于将来的扩展。例如,触发寄存器202、状态寄存器204和清除寄存器206可
以是8比特寄存器,其中保留五个最高有效比特(MSB),并且三个最低有效比特(LSB)与多处
理器系统100中的处理单元相关联。
IPI控制器108可以仅允许与触发寄存器202中特定的一个触发寄存器相关联的源
访问该寄存器。例如,IPI控制器108可以仅允许处理单元1访问触发寄存器2021。任何其他
源的访问可能产生地址解码错误。以这种方式,IPI控制器108控制对各寄存器的访问,从而
提供了保护机制。该组中的所有三个触发寄存器202具有相同的格式,该格式为每个IPI目
标从总共三个比特(例如,三个LSB)中分配一个比特。通过将逻辑“1”写入这些比特中的任
一个,与触发寄存器202中的特定一个寄存器相关联的源可在由该比特表示的目标处产生
中断。例如,为了指示处理单元1正在请求中断处理单元2,IPI控制器108允许处理单元1向
触发寄存器2021的IPI目标比特2写入逻辑“1”。IPI源可以通过从与其相关联的触发寄存器
读取以获得其触发器的状态(例如,处理单元1可以从触发寄存器2021读取以获得其触发器
的状态)。
为了产生用于特定IPI目标的中断,该组的每个触发寄存器202中的特定IPI目标
比特可以在IPI控制器108中进行逻辑上的组合(例如,由逻辑112的或门302进行或运算,或
者异或运算)。对于如图3所示的另一些例子,或门302(或其他逻辑门)可以对该组的每个触
发寄存器202中的特定IPI目标比特进行逻辑或运算(或以其它逻辑进行组合),除非与特定
触发寄存器相关联的IPI源是与要被中断的该特定IPI目标相同的处理单元(例如,在给定
的处理单元不经由IPI控制器108中断自己的情况下)。例如,如果与处理单元0相关联的触
发寄存器2020的比特1是逻辑“1”,或者如果与处理单元2相关联的触发寄存器2022的比特1
是“1”,则IPI控制器108可以为处理单元1生成中断逻辑。IPI控制器108中的逻辑112可以包
括用于每个潜在IPI目标的类似配置的或门(或其他逻辑),用于示例IPI控制器108中总共
三个单独的中断生成或门。IPI控制器108中的逻辑112可以包括用于其他处理单元(例如,
处理单元0和处理单元2)的类似的逻辑配置。
回到图2,当目标处理器被中断时,目标处理器可以读取分配给该目标的只读状态
寄存器204中相关联的一个寄存器,以确定哪个IPI源产生了该中断。例如,在被中断之后,
处理单元2可以读取状态寄存器2042的比特1,以确定处理单元1对该中断负责。该组中的所
有三个状态寄存器204具有相同的格式,从总共3个比特(例如,三个LSB)为每个IPI源分配
一个比特。只写清除寄存器206中类似的一个被用来清除状态寄存器204的相应一个中来自
IPI源的请求。如果逻辑“1”被写入给定清除寄存器206中的任何比特,则与该源相关联的中
断的请求被清除。在这种情况下写入逻辑“0”没有影响。一个组中存在与每个IPI目标相关
联的单独的状态寄存器204和单独的清除寄存器206。与相同目标相关联的状态和清除寄存
器被映射到相同的地址。通过与状态或清除寄存器不相关联的任何IPI目标进行的访问都
可能导致地址解码错误。
对于一些例子,触发寄存器202可以直接写入到状态寄存器204。在这种情况下,实
际存储可能发生在状态寄存器204中,而不是在如图2所示的触发寄存器202中。在这种情况
下,状态寄存器204的相应比特,而不是来自触发寄存器202的那些比特,可以在IPI控制器
108中逻辑组合(例如,被或运算)以产生中断。
图1A旨在示出异构多处理器系统的逻辑实施例,对于一些例子,各种处理单元
102、104、106可以经由单独的专用端口与IPI控制器108连接。对于如图1B的示例性异构多
处理器系统150所描绘的其他示例,各种处理单元102、104、106和IPI控制器108之间的访问
可以通过互连152(例如,总线)进行,而不是通过单独的端口。为了使用来自互连152的共享
端口,IPI控制器108可以检查源标识符(ID)或目标ID,并确定哪个IPI源或目标正尝试访问
各寄存器202、204、206。通过检查IPI源或目标ID,IPI控制器108可以限制特定IPI源仅访问
与该IPI源相关联的寄存器,并防止该IPI源访问其他寄存器。这种受限访问提供了上述保
护机制。
在具有硬连线(hard-wired)和软处理器的IC中的示例IPI机制
如在2011年2月28日提交的名称为“具有可编程电路和嵌入式处理器系统的集成
电路”的Allaire等人的美国专利(专利号8,667,192)中所描述的,集成电路(IC)可以包括
嵌入式处理器系统和可编程电路。被配置为执行程序代码的处理器系统可以是硬连线的并
且包括处理器硬件资源。可编程电路可配置为实施不同的实体电路(physical circuitry)
并且可以耦接到处理器系统。可编程电路可以被配置为共享使用处理器系统的处理器硬件
资源。处理器系统可以控制可编程电路系统的诸如通电和/或断电等方面,以及可编程电路
的配置以在其中实施一个或多个不同的实体电路。利用嵌入式处理器系统中的硬连线处理
器和可编程电路中的软处理器两者,这样的IC能作为异构多处理器系统,并且可以实施此
处描述的IPI机制。
图4示出了根据本公开的一个示例的示例IC 400,其具有可配置为实施不同实体
电路的硬连线处理系统(PS)402和可编程逻辑(PL)404。PS 402,也称为专用集成电路
(application specific integrated circuit,ASIC)部分,可以包括应用和处理单元
(APU)子系统中的四个处理器4060到4063(标记为APU_0,APU_1,APU_2和APU_3,并统称为
“APU处理器406”),实时处理单元(RPU)子系统中的两个处理器4080和4081(标记为RPU_0和
RPU_1,并统称为“RPU处理器408”),一个电源管理单元(PMU)处理器410和一个配置和安全
单元(CSU)处理器412。PL 404,也称为FPGA部分,可以包括四个软处理器4140至4143(标记为
PL_0,PL_1,PL_2和PL_3,并统称为“软处理器414”)。APU子系统中的APU处理器406、RPU子系
统中的RPU处理器408、PMU处理器410、CSU处理器412和软处理器414分别具有不同的处理器
类型。在没有中介的情况下,特定子系统中(或特定处理器类型)的处理器可能不能中断不
同子系统中(或不同处理器类型)的处理器。
为了使这些异构处理器能互相中断,IPI控制器4160与处理器406、408、410、412、
414中的每一个连接,使得,例如,PL_2可以中断APU_3。IPI控制器4160可以如图所示比特于
PS 402中。对于一些示例,各处理器406、408、410、412、414和IPI控制器4160之间的访问可
以通过总线,而不是通过单独的线路。
对于一些示例,可以创建不同的中断类型或“类”,其中IC包括用于每个中断类的
一个IPI控制器。例如,可以根据优先级或排他性(exclusivity)来区分中断类。因此,可以
为同一组处理器实例化多于一个的IPI控制器。例如,类可以包括基于Linux的中断类或与
电源相关的中断类。在图4的示例IC 400中,存在四个不同的中断类,因此IC包括四个不同
的IPI控制器4160至4163(标记为IPI_0,IPI_1,IPI_2和IPI_3,并统称为“IPI控制器416”)。
IPI控制器4160的示例实施(如图5和图6所示)可以在每个IPI控制器中被复制。
图5和图6示出了IPI控制器4160的示例实施例。如上所述,发起中断的处理器被称
为IPI源,而被中断的处理器被称为IPI目标。处理器406、408、410、412、414中的任一个可以
作为源或目标。这里描述的IPI机制以模块化方式设计,这允许该机制在未来几代的IC 400
中可以容易地扩展,并且保持与当前代IC代码兼容。最小的模块单元称为“组”,其包括用于
每个IPI源(或每个IPI目标)的一个寄存器。对于图4的示例IC 400,一组包括12个寄存器。
图5示出了根据本公开的一个示例的IPI控制器4160中的示例寄存器。IPI控制器
4160包括一组12个触发寄存器502,一组12个状态寄存器504和一组12个清除寄存器506。寄
存器502、504和506至少具有足够的比特以覆盖潜在目标(或源)的数量,并且可以保留剩余
比特(如果有的话)用于将来扩展。例如,触发寄存器502、状态寄存器504和清除寄存器506
可以是32比特寄存器,其中20个最高有效比特(MSB)12-31被保留。
IPI控制器4160可以仅允许与触发寄存器502中的一个特定寄存器相关联的IPI源
访问该寄存器。例如,IPI控制器4160可以仅允许PL_3访问触发寄存器50211。任何其他源的
访问可能产生地址解码错误。该组中的所有12个触发寄存器502具有相同的格式,其从总共
12比特(例如,LSBs 0-11)为每个IPI目标分配一个比特。通过将逻辑“1”写入触发寄存器
502中的特定触发寄存器中的这些比特中的任何一个,相关联的源可以在在该比特表示的
目标处产生中断。例如,为了允许PL_1中断APU_3,IPI控制器4160可以允许PL_1向触发寄存
器5029的IPI目标比特5写入逻辑“1”。如果触发寄存器502被与该寄存器相关联的IPI源读
取,则该源可以读回其触发器的状态。
为了产生用于特定IPI目标的中断,如图6所示,该组的每个触发寄存器502中的特
定IPI目标比特可以由IPI控制器4160的或门602进行逻辑或运算。例如,如果与PL_1相关联
的触发寄存器5029的比特5为逻辑“1”,或者如果与RPU_0相关联的触发寄存器5020的比特5
为逻辑“1”,则可以为APU_3生成中断。IPI控制器4160可以包括用于每个潜在IPI目标的类
似配置的或门,用于对示例IPI控制器4160中的总共12个单独的中断生成或门。IPI控制器
4160可以包括用于其他处理单元的类似的逻辑配置。
回到图5,当目标处理器被中断时,目标处理器可以读取被分配给该目标的只读状
态寄存器504,以确定哪个IPI源导致该中断。例如,在被中断之后,APU_3可以读取其相关联
的状态寄存器5045的比特9,以确定PL_1负责该中断。该组中的所有十二个状态寄存器504
具有相同的格式,其从总共12比特(例如,12个LSBs)中为每个IPI源分配一个比特。类似的
只写清除寄存器506(例如,与APU_3关联的5065)被用来清除来自相应状态寄存器504(与
APU_3关联的5045)中的IPI源的请求。如果逻辑“1”被写入清除寄存器506中的特定一个寄
存器的任何比特,则与该源相关联的中断请求被清除。在这种情况下写入逻辑“0”没有影
响。一组中的每个IPI目标都具有与其相关联的单独的状态寄存器504和单独的清除寄存器
506。与相同目标相关联的状态和清除寄存器被映射到相同的地址。与状态或清除寄存器不
相关联的任何IPI目标的访问可能导致地址解码错误。
根据一些示例,IC 400还可以包括有效载荷寄存器(payload register)。有效载
荷寄存器可以保存在IC 400的存储器中或位于IPI控制器中。如果存储在存储器中,则有效
载荷寄存器可以在存储器映射表(memory map)中具有固定地址。有效载荷寄存器可以是一
组通用寄存器。对于一些示例,每个IPI控制器416可以具有与其相关联的有效载荷寄存器。
有效负载寄存器存储的数据可以在一个处理器中断另一个处理器(例如,经由IPI控制器)
时被读取。对于一些示例,该数据可以指示特定处理器在从IPI控制器接收到中断信号时该
做什么。
与用于触发、状态和清除寄存器的保护机制类似,还可以通过使用源(或目标)ID
来限制对有效载荷寄存器的访问。该机制可以仅允许特定的IPI源写入某个有效载荷寄存
器,并且仅允许特定的IPI目标读取特定的有效载荷寄存器。
IPI操作示例
图7是用于在异构多处理器系统中处理中断的示例操作700的流程图。操作700可
以由IPI电路执行,例如IPI控制器108或IPI控制器416之一。
操作700可以在702开始,其中IPI电路从第一处理器接收中断第二处理器的请求。
第二处理器具有与第一处理器不同的处理器类型。
在704,IPI电路可以基于在702接收的请求更新与第一处理器相关联的第一寄存
器中的第一比特。该第一比特指示第一处理器正在请求中断第二处理器。第一寄存器可以
位于IPI电路中,并且例如可以是触发寄存器。更新第一比特可能涉及到将逻辑“1”写入第
一比特。
在706,IPI电路可以基于在704的更新向第二处理器发送中断信号。
根据一些示例,IPI电路可以检查第一处理器的标识符,并且只有在第一处理器的
标识符正确时才可以更新第一比特。
根据一些示例,操作700还可以包括IPI电路,其从第二处理器接收请求,以确定哪
个处理器已请求中断第二处理器。在这种情况下,IPI电路可以读取与第二处理器相关联的
第二寄存器中的第二比特。第二比特指示第二处理器被第一处理器中断。第二寄存器可以
位于IPI电路中,并且例如可以是状态寄存器。在从第二处理器接收到请求之后,IPI电路可
以向第二处理器发送基于第二比特的指示。对于一些示例,IPI电路可以检查第二处理器的
标识符,并且仅当第二处理器的标识符正确时才基于第二比特发送指示。
本申请描述了异构多处理器系统中的处理器间中断的机制。在一个示例中,系统
通常包括第一处理器,与第一处理器具有不同的处理器类型的第二处理器,以及耦接到第
一和第二处理器的处理器间中断(IPI)电路。IPI电路通常包括:与第一处理器相关联的第
一寄存器,其中第一寄存器中的第一比特指示第一处理器是否正在请求中断第二处理器;
以及与所述第二处理器相关联的第二寄存器,其中所述第二寄存器中的第二比特指示所述
第二处理器是否正在请求中断所述第一处理器。
根据一些示例,IPI电路还包括:与第一处理器相关联的第三寄存器,其中第三寄
存器中的第三比特指示第一处理器是否被第二处理器中断;以及与所述第二处理器相关联
的第四寄存器,其中所述第四寄存器中的第四比特指示所述第二处理器是否被所述第一处
理器中断。对于一些示例,IPI电路还包括:与第一处理器相关联的第五寄存器,其中第五寄
存器中的第五比特指示第三寄存器中的第三比特是否要被清除;以及与第二处理器相关联
的第六寄存器,其中第六寄存器中的第六比特指示第四寄存器中的第四比特是否要被清
除。
根据一些示例,所述系统进一步包括耦接到所述IPI电路的第三处理器,其中第一
寄存器中的第三比特指示第一处理器是否正请求中断第三处理器,且其中第二寄存器中的
第四比特指示第二处理器是否正在请求中断第三处理器。第三处理器可以具有与第一处理
器相同的处理器类型。对于一些示例,IPI电路包括逻辑门,以在第一寄存器中的第三比特
和第二寄存器中的第四比特之间执行逻辑或运算,以产生用于第三处理器的中断信号。
根据一些示例,系统还包括一个或多个附加处理器,其中第一寄存器包括一个或
多个附加比特,用于指示第一处理器是否正在请求生成用于中断该一个或多个附加处理器
的相应中断信号。在这种情况下,第二寄存器可以包括一个或多个附加比特,用于指示第二
处理器是否正在请求生成用于中断一个或多个附加处理器的相应中断信号。对于一些实
例,第一寄存器中的一个或多个附加比特的至少一部分和第二寄存器中的一个或多个附加
比特的至少一部分被保留(例如,用于中断不在当前系统的一个或多个处理器)。
根据一些示例,系统还包括具有第一处理器、第二处理器和IPI电路的集成电路
(IC)。对于一些示例,IC包括处理系统(PS)部分和可编程逻辑(PL)部分。在这种情况下,第
一处理器可以位于PS部分中,并且第二处理器可以设置在PL部分中。
根据一些示例,第一处理器是硬连线处理器,并且第二处理器包括可配置为实施
不同实体电路(例如,软处理器)的可编程电路。
根据一些示例,第二处理器不能直接中断第一处理器,并且第一处理器不能直接
中断第二处理器。
根据一些示例,IPI电路被配置为在允许更新第一寄存器之前检查第一处理器的
标识符,并且在允许更新第二寄存器之前检查第二处理器的标识符。
根据一些示例,IPI电路通过互连被耦接到第一处理器和第二处理器。
本发明的另一个示例为集成电路(IC)。该IC通常包括:具有一个或多个硬连线处
理器的处理系统(PS)部分,具有一个或多个具有实体可配置电路的软处理器的可编程逻辑
(PL)部分,以及一个或多个处理器间中断(IPI)电路。每个IPI电路通常被配置为在不同处
理器之间生成一个或多个中断信号,其中至少一个中断信号在PS部分中的硬连线处理器之
一与PL部分中的软处理器之一之间。
根据一些示例,每个IPI电路包括第一组寄存器;第一组中的每个寄存器与硬连线
处理器和软处理器中的每个处理器相关联;第一组中的每个寄存器包括大于或等于所述集
成电路中的硬连线处理器和软处理器的数量的比特数;并且在与硬连线处理器和软处理器
中的特定处理器相关联的第一组中的特定寄存器中,每个比特指示该特定处理器是否正在
请求中断硬连线处理器和软处理器中的一个不同的处理器。
对于一些示例,每个IPI电路包括第二组寄存器;第二组中的每个寄存器与硬连线
处理器和软处理器中的每个处理器相关联;第二组中的每个寄存器包括大于或等于所述集
成电路中的硬连线处理器和软处理器的数量的比特数;并且在与硬连线处理器和软处理器
中的特定处理器相关联的第二组中的特定寄存器中,每个比特指示该特定处理器是否被硬
连线处理器和软处理器中的一个不同的处理器所中断。
根据一些示例,每个IPI电路包括第三组寄存器;第三组中的每个寄存器与硬连线
处理器和软处理器中的每个处理器相关联;第三组中的每个寄存器包括大于或等于所述集
成电路中的硬连线处理器和软处理器的数量的比特数;并且在与硬连线处理器和软处理器
中的特定处理器相关联的第三组中的特定寄存器中,每个比特指示第二组的寄存器中的相
应比特是否要被清除。第一组寄存器可以是读/写寄存器,第二组寄存器可以是只读寄存
器,并且第三组寄存器可以是只写寄存器。对于一些示例,硬连线处理器包括四个应用处理
单元(APU)、两个实时处理单元(RPU)、一个配置和安全单元(CSU)以及一个电源管理单元
(PMU);PL部分包括的四个软处理器,两部分总共12个处理器;并且第一、第二和第三组寄存
器中的每个寄存器为32比特寄存器,其仅使用12位以用于总共12个处理器。
根据一些示例,每个IPI电路都与不同的中断类相关联。
根据一些示例,IPI电路设置在PS部分中。
根据一些实例,集成电路进一步包括有效负载寄存器,其被配置为存储当IPI电路
中的一个在不同处理器之间产生所述中断信号中的一个时所读取的数据。
本发明的又一个示例是一种用于处理IPI的方法。该方法通常包括:在IPI电路处
接收来自第一处理器用以中断第二处理器的请求,其中第二处理器具有与第一处理器不同
的处理器类型;基于所接收的请求,更新与第一处理器相关联的第一寄存器中的第一比特,
其中所述第一比特指示第一处理器正在请求中断第二处理器;以及基于所述更新从IPI电
路向第二处理器发送中断信号。
虽然前述内容涉及本公开的示例,但是在不脱离本公开的基本范围的情况下可以
设计本公开的其他和进一步的示例,并且本公开的范围由所附的权利要求确定。