用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方...的制作方法

文档序号:6479872阅读:214来源:国知局

专利名称::用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方...的制作方法
技术领域
:本发明涉及处理器架构、核间通信、处理器间通信、和中断机制,并且特别地涉及能够被配置为当WRITE(写)操作指向共享存储器的特定区域时产生处理器间中断的增强型高级可编程中断控制器。
背景技术
:微处理器用来执行指令的速度和微处理器的总指令执行吞吐量在计算机演进的最初几十年期间已经成指数地增加。然而,由于微处理器设计者接近看起来是进一步减小集成电路的信号线、晶体管、及其它部件或特征的尺寸的重要物理极限,由于功率消耗问题已随着处理器速度的增加而增加,并且因为可以访问存储器的速度并未几乎以处理器速度增加的速率而增加,所以处理器速度的继续指数式增加看起来是不可能的。然而,对不断增加的指令执行吞吐量的需求持续不减,这是因为由于人类活动和商业任务的增加的自动化以及许多新的和正在出现的计算机相关环境和活动,从基于因特网的商业和内容输送到社交联网和虚拟世界,而导致对计算吞吐量的需求继续增加。结果是,尽管有上述约束和限制,微处理器的设计者和制造者继续寻求用于增加微处理器的指令执行吞吐量的策略。用于增加微处理器的指令执行吞吐量的一个策略是在单个微处理器集成电路内包括多个处理器核,本质上是多个指令执行引擎。多核微处理器、特别是当超线程时通过允许同时执行多个执行线程和/或进程来提供指令执行吞吐量的潜在的大的增加。作为一个示例,可以在多核处理器的一个核上执行与高带宽通信相关联的处理任务的一部分,将其余核解放以执行非通信相关任务。无论是否是多核的,当可以将计算问题分解以便以保持合理的方式在多个处理器上执行时,共享存储器多处理器系统还提供增加的指令执行吞吐量。虽然多核微处理器通过对与多个线程或进程相关联的多个指令流进行同时处理来提供用于增加指令执行吞吐量的远大前景,但开发操作系统、管理程序、虚拟机监视器、控制程序、和应用程序以利用多核处理器的能力常常受到各种复杂性的阻碍,所述各种复杂性包括计算任务的适当分解和同时在多个核上运行的线程和/或进程之间的高效通信。这些问题并不是与已经遇到并已被合理地透彻理解的与并行处理器计算机和分布式计算系统相关联的问题无关。多核处理器和某些共享存储器多处理器系统的设计者、制造商、供应商、和用户继续认识到对开发更加高效并容易应用的核间通信和处理器间通信方法和支持硬件机制以便促进采用多核微处理器和共享存储器的计算机和计算机系统的更高的总指令执行吞吐量的需要。
发明内容本发明的某些实施例旨在提供用于多核微处理器和某些多处理器系统内的核间和处理器间通信及核间和处理器间信令的高效且容易应用的机制。在本发明的一个实施例中,增强了多核微处理器的核和/或多处理器系统的处理器内的或与之相关联的本地高级可编程中断控制器,从而使得该本地高级可编程中断控制器可以被配置为当WRITE(写)操作指向共享存储器的特定区域时自动地生成核间和处理器间中断。这些共享存储器WRITE引发的核间和处理器间中断可以用来促进在多核微处理器内的不同核和某些类型的多处理器系统的不同处理器上执行的例行程序与程序之间的基于共享存储器的通信。本发明的附加实施例可以针对附加类型的多核和多处理器架构。图1提供了可以在其中实现本发明的实施例的典型计算机系统的高级描述。图2举例说明可以在其中实现本发明的实施例的、与图1中所示的计算机系统不同类型的计算机系统。图3举例说明用于事件检测的轮询方法。图4举例说明用于事件检测的中断方法。图5提供了多核处理器的某些显著特征的说明。图6举例说明针对根据一个处理器架构家族的一种LAPIC的、LAPIC寄存器到核存储器地址空间的映射。图7举例说明被映射到具有地址“FEE0_0300”和“FEE0_0310”的两个邻接16字节对准存储器区域的中断指令寄存器。图8举例说明在图5中举例说明的多核处理器中的一种中断生成和中断输送机制。图9举例说明诸如图5中所示的多核处理器之类的多核处理器内的另一种中断生成和中断输送机制。图IOAD举例说明诸如图5中举例说明的多核处理器之类的多核处理器内的核间通信的一种方法。图IlAB举例说明本发明的一个实施例。图12举例说明根据本发明的一个实施例的、包括在增强的LAPIC中的新中断存储器寄存器。图13提供了根据本发明的一个实施例的、包括在增强的LAPIC中的新IMR寄存器的每个字段的说明。图14举例说明根据本发明的实施例的、可以包括在增强的LAPIC中并被映射到核存储器地址空间的许多IMR寄存器。图15示出基于共享存储器的通信机制的示例,其中多于两个的核通过公共机制相互通信。具体实施例方式本发明的实施例针对用于在多核处理器和/或某些类型的共享存储器多处理器系统内生成并输送核间和多处理器中断(“IPI”)以促进核间和/或处理器间通信的高效且容易应用的方法和机制。在下述的一个实施例中,增强了多核处理器的多个核内的本地高级可编程中断控制器(“LAPIC”)以允许将LAPIC配置为检测被核指引到共享存储器的特定区域的WRITE操作,并在检测到此类WRITE操作时在多核处理器内生成并向一个或多个目标核发布一个或多个IPI。在讨论本发明的特定实施例之前,首先提供计算机系统、事件识别技术、处理器架构、和高级可编程中断控制器(“APIC”)的概述。最初,应注意的是,虽然在一种多核处理器的背景下提出所述实施例,但本发明可以应用于其它类型的多核处理器,并且也可以应用于各种类型的共享存储器多处理器系统和架构。因此,在以下讨论中,当描述与多核处理器有关的实现细节时,类似的实现方法还可以应用于某些类型的共享存储器多处理器系统。图1提供了可以在其中实现本发明的实施例的典型计算机系统的高级描述。通常是微处理器或多核微处理器的中央处理单元(“CPU”)102执行从海量存储设备106加载到存储器104中的计算机程序。所述计算机系统通常在图形显示监视器108上显示输出及其它信息,并且还可以向海量存储设备106输出数据。计算机系统通常从控制各种外围设备的操作的多种输入/输出(“I/O”)控制器110115接收输入数据并可以向所述多种输入/输出(“I/O”)控制器110115输出数据和控制信号,所述外围设备包括通信端口、及其它此类设备。CPU通过系统总线122连接到主桥接器120,并且主桥接器120内的存储器桥接器IM将系统总线与存储器总线126、加速图形端口信道128、和将存储器桥接器与I/O桥接器132互连的内部主桥接器总线130互连。I/O桥接器132可以通过诸如PCIe通信介质134之类的外围连接通信介质互连到各种外围设备。在图1中,I/O桥接器与PCIe交换机136互连,PCIe交换机将各I/O控制器110115彼此互连并与I/O桥接器132互连。虽然图1中未示出,但可以通过串行链路及其它较慢通信介质将包括键盘及其它用户输入设备的许多较慢的外围设备互连到I/O桥接器。图1描述了许多个人计算机、工作站、和服务器的总体架构。图2举例说明可以在其中实现本发明实施例的、与图1中所示的计算机系统不同类型的计算机系统。图2举例说明诸如刀片系统202之类的多服务器外壳,其包括经由背板220相互地、与外部通信介质、和与包括冗余电源216和218的附加多服务器外壳部件互连的多个服务器模块204211,服务器模块通过背板连接器把插头插入背板220中。所述多服务器外壳包括多个冗余温度控制部件2222和多种附加部件和模块以促进多服务器外壳与外部通信介质的互连,提供管理员接口,并监视和控制多服务器外壳内的各种部件的操作。图1中的虚线矩形140内的计算机系统的一部分一般被包括在多服务器外壳内的服务器模块204211中。如参考图1和2在各种计算机系统架构的以上简要概述中讨论的,计算机系统包括许多不同类型的内部通信介质和到外部通信介质的端口、以及桥接并控制各种类型的通信介质的许多不同设备。在大多数情况下,最终由基本输入/输出系统(“BIOS”)、操作系统(“OS”)、或在CPU(图1中的102)上执行的其它控制程序来控制通过这些各种类型的通信介质进行的通信、和控制通信的各种设备。各种通信设备、通信端口、和I/O控制器响应于通过通信介质和从由I/O控制器控制的设备接收到的信号生成异步事件。在许多情况下,当这些事件发生时,需要以及时的方式通知CPU,以便适当的操作系统例行程序、BIOS固件例行程序、或其它控制程序例行程序可以适当地对该事件进行响应。作为一个示例,当以太网控制器从外部以太网链路接收数据并将接收到的数据放置在存储器(图1中的104)中时,以太网控制器需要通知操作系统新到达的数据可用于处理。所述操作系统可以例如将数据传输到应用程序缓冲器以供应用程序进行后续处理,或者可以本身处理接收到的数据。正如I/O控制器和计算机系统的其它部件需要将各种事件通知给CPU—样,CPU可能需要将CPU生成的或CPU检测的事件通知给I/O控制器和其它部件。存在一般被软件例行程序、固件例行程序、和逻辑电路用来检测在计算机系统中发生的各种类型的事件的两种不同技术。图3举例说明用于事件检测的轮询方法。当CPU对寄存器或其它包含信息或接收信息的部件进行轮询以检测与事件相对应的寄存器或部件的状态变化时,CPU进入循环(在图3中被示为步骤302和304),以周期性地访问寄存器或其它包含信息或接收信息的部件,以检查存储器寄存器或部件的状态是否已由于事件的发生而改变。一旦在步骤304中检测到事件的发生,则在步骤306中调用例行程序以处理该事件。可以以各种不同的方式来实现步骤302中的在检查存储器寄存器或其它部件的状态之前等待固定时段。在许多情况下,检查操作被结合到较大的事件循环中,其中,由操作系统或其它控制程序来反复地监视各种不同类型的事件的发生。可替换地,操作系统或其它控制程序可以将定时器设置为在固定时间段之后终止。在终止时,定时器生成中断以将事件的发生通知给操作系统,或者可以直接调用监视例行程序。虽然常常说轮询是低效的,但存在这样的情况,S卩,轮询对于事件检测而言不是低效的方法,特别是当事件以规则变化的间隔或以可预测模式发生时。作为另一示例,当事件和/或数据的制造者和事件和/或数据的用户两者均访问共享可高速缓存的存储器时,由用户进行的对共享可高速缓存存储器中的位置的轮询在存储器总线周期方面可以是相当高效的,因为在制造者向该位置进行写入之前,不产生与该位置有关的存储器总线操作。然而,对于具有事件发生的不可预测时间和模式的异步通信而言,轮询可能是相当低效的。每当处理器或核检查存储器寄存器或其它部件的状态以获得表示事件发生的状态变化时,执行指令并消耗处理器周期。当只有少量此类检查产生事件检测时,被消耗的处理器周期基本被浪费。图4举例说明用于事件检测的中断方法。在图4中,第一列指令402对应于当前执行的操作系统例行程序内的指令序列。由诸如箭头404的曲线箭头来指示顺序执行,其指示在执行每个指令之后控制流向随后被执行的后续指令。在图4中,用列内的矩形单元来表示每个指令,诸如指令406。由允许中断操作系统例行程序或其它例行程序的顺序执行以及将执行转移到被设计为处理事件发生的另一例行程序的硬件机制生成中断。在图4中,在指令408的执行期间,由CPU接收中断信号。当指令408的执行完成、而不是继续执行指令410时,CPU替代地在调用中断处理例行程序414之前将控制转移到保存先前执行的操作系统例行程序402的当前上下文并执行其它简要任务的中断服务例行程序412,所述中断处理例行程序414处理接收到的中断以便对引起中断生成的事件发生进行响应。在中断处理例行程序414完成之后,恢复最初执行的操作系统例行程序402的上下文,并且控制流回最初执行的操作系统例行程序402的指令410以进行后续执行。图4举例说明了非常简单的情况。通常,中断处理由于CPU可能接收到许多不同类型的中断以及中断可以被在时间上接近地、或者乃至同时地接收到这一事实而变得复杂。中断通常被按优先次序排列,并且可以被堆叠在硬件内,以便可以按照优先级的递减顺序依次处理中断。常常以诸如字节之类的小数据单位来对中断类型进行编码,称为“中断向量”,其可以被中断服务例行程序(图4中的412)用来对跳转表(jumptable)或分派表(dispatchtable)编索引,所述跳转表或分派表包含各种中断处理例行程序的地址,以便调用适当的中断处理例行程序以处理每个不同类型的中断。基于中断的事件检测可以比轮询高效得多,特别是在待检测事件异步地发生以及不在可预测时间发生或以规则模式发生时。另外,由于被结合到硬件中断机构中的相对灵活且复杂的功能,将中断用于事件检测可以避免为了实现操作系统例行程序或其它软件程序中的类似功能的基于轮询的方法所进行的不必要的冗余努力。图5提供多核处理器的某些显著特征的说明。图5并不意图提供微处理器内的硬件电路的详细说明,而是简单地举例说明与本发明的实施例有关的部件以及部件之间的互连。此外,不同的多核微处理器架构可以使用不同的部件以及部件之间的互连来实现由图5的示例中所示的部件和互连提供的功能。本发明的实施例一般可适用于但在应用上不限于图5中所示的多核处理器类型。此外,如上文所讨论的,本发明的实施例通常可适用于各种类型的共享存储器多处理器系统,无论处理器是多核处理器还是单核处理器。然而,多核处理器提供用于举例说明本发明的实施例的合理系统。通常在单个管芯、或芯片上实现多核处理器502。所述多核处理器包括数目为η个的核504、506.....508,其中,η通常是2、4、8、或2的某其它较大幂。目前,对于个人计算机系统和工作站而言,通常遇到双核和四核微处理器。每个核是单独的指令执行引擎,具有单核处理器的所有众所周知的处理部件,包括指令获取、算术逻辑单元、通用和专用寄存器,包括指令指针寄存器、及其它此类部件。每个核可以在任何时间瞬间独立地执行指令流,并且当超线程时,可以在任何时间瞬间同时地执行两个或更多指令流。如图5中所示,每个核包含LAPIC510、512、514。LAPIC可以被总线516互连以及另外地被总线连接到I/0APIC518。I/OAPIC可以另外地被相同或不同的总线520互连到外部微处理器中的其它I/OAPIC和LAPIC。虽然在图5中示出了I/OAPIC,但作为多核处理器的部件,I/OAPIC还可以是计算机系统的单独的、分离部件。来自I/O设备及其它中断生成部件522的中断信号线连接到I/OAPIC上的管脚。当由I/OAPIC从中断生成设备接收到中断信号时,I/0APIC将中断转换成指示已被接收到的中断的类型的数值,并在中断消息中通过总线516将该中断传送到LAPIC510、512、514中的一个。接收中断消息的LAPIC随后将该中断消息转换成在可被核访问的寄存器中显示的中断向量,并另外地通过一个或几个内部信号线用信号通知核已发生中断。一旦用信号通知,当中断的优先级大于当前执行的例行程序的优先级时,由核进行的当前程序的执行被中断,以调用中断处理程序,如上文参考图4所讨论的。每个核另外包含数据和指令高速缓冲存储器530535,统称为“Li高速缓冲存储器”。所有核共享较大的L2高速缓冲存储器536。如上文所讨论的,处理器被系统总线MO连接到存储器桥部件,存储器桥部件又通过存储器总线连接到存储器。数据和指令被从存储器获取到L2高速缓冲存储器和Ll高速缓冲存储器中。当处理器试图获取下一个指令或将下一个数据值加载到内部寄存器中时,核寻找Ll高速缓冲存储器中的指令或数据值(例如,用于核504的530和531)。当不能在Ll高速缓冲存储器中找到数据或指令时,则核替代地查看L2高速缓冲存储器。如果在L2高速缓冲存储器中找到指令或数据,则指令或数据被移动到Ll高速缓冲存储器,并且处理继续。另一方面,如果在L2高速缓冲存储器中不能找到指令或数据,则处理器从存储器获取指令或数据。存储器获取可以涉及由虚拟存储器分页机构从海量存储设备进行的指令或数据的附加获取。当数据值或指令被从存储器获取到L2高速缓冲存储器中时,数据或指令随后被拷贝到Ll高速缓冲存储器中以允许核继续执行。当处理器将数据写入存储器时,数据被写入Ll高速缓冲存储器,并仅根据需要迁移回到L2高速缓冲存储器和存储器。采用复杂的机制来保证由多核处理器内的所有核进行的存储器READ(读)和WRITE(写)操作被适当地串行化。因此,如果核506试图从最近已被核504写入的存储单元读取数据值,则在核2能够读取存储单元之前,存储单元的内容被从核504的Ll高速缓冲存储器冲到L2高速缓冲存储器,并潜在地到存储器。采用包括高速缓冲存储器窥探机制的多种机制来通过高速缓存系统将对存储器的访问适当地串行化,以便当更多的当前值存在于另一处理器的Ll高速缓冲存储器中时,存储器中的过时数据未被返回到访问核。还执行其它类型的存储器访问串行化。作为此过程的一部分,根据需要执行高速缓存无效和回写操作,以保证所有核接收到存储器的一致视图。LAPIC(图5中的510、512、和514)提供到包括它们的核的基于寄存器的接口。LAPIC寄存器被映射到核的存储器地址空间,以便核可以通过READ和WRITE操作来访问LAPIC寄存器。图6举例说明用于根据一个处理器架构家族的一种LAPIC的LAPIC寄存器到核存储器地址空间的映射。LAPIC寄存器被映射到16字节对准的存储器地址。LAPIC寄存器地址空间开始于十六进制地址“FEE0_0000”。前两个16字节对准的存储器区域被保留,因此第一LAPIC寄存器602被映射到十六进制地址“FEE0_0020”。最后的LAPIC寄存器604被映射到十六进制地址“FEE0_03E0”。在图6中,从十六进制地址“Ε0_0400”开始的附加的16字节对准区域被示为虚线,以指示APIC寄存器映射之后的附加存储器区域是可用的。本发明的某些实施例采用附加的LAPIC寄存器和到核存储器地址空间的LAPIC寄存器映射,起始于十六进制地址“FEE0_0400”606,如下文所讨论的。各种LAPIC寄存器中的每一个被定义为包含不同类型的信息,常常在可变长度的位字段或字节字段中。图举例说明了被映射到具有地址“FEE0_0300”和“FEE0_0310”的两个邻接16字节对准存储器区域的中断命令寄存器(“ICR”)。诸如触发模式位字段702的某些字段描述将由LAPIC生成的中断的特性。ICR被核用来生成用于输送到一个或多个外部核的IPI。为了生成IPI,核将值写入目的地字段704中以指示IPI应被输送到哪个或哪些外部核,并随后将中断向量写入向量字段706中,并可选地设置ICR的较低32位部分中的其它位,促使LAPIC经由I/OAPIC向被放置在目的地字段704中的值所识别的一个或多个核发布由该中断向量识别的IPI。此操作涉及两个WRITE操作,一个针对ICR的上32位部分,并且一个针对ICR的较低32位部分,因为ICR的这两部分通常不是邻接的。需要两个WRITE操作来生成IPI这一事实导致下文所讨论的某些后果,其引起核间通信的问题。当LAPIC从I/OAPIC接收到中断时,对应于该中断的中断向量被放置在服务中寄存器(“ISR”)(图6中的610)中并向核生成信号以便核随后能够从ISR检索中断向量和与中断有关的其它信息,以便处理该中断。图8举例说明在图5中举例说明的多核处理器中的一种中段生成和中断输送机制。如图8中所示,I/O设备控制器802可以在中断信号线804上生成被I/OAPIC806接收到的电中断信号。响应于感测到电中断信号,I/OAPIC在到多核处理器810和812的核内的LAPIC的总线808上将接收到的电信号转换成中断消息,包括接收到的中断的数字标识符。LAPIC将该数值用于中断和附加信息以生成对应于该中断的中断向量并将其放置到ISR814中,并另外生成电子信号816以告知核812已经输送中断。然后,在核上执行的操作系统读取ISR寄存器810的内容,提取中断向量,并使用中断向量818作为到跳转表820中的索引以调用适当的中断处理程序例行程序822,如上文参考图4更详细地讨论的那样。图9举例说明诸如图5中所示的多核处理器之类的多核处理器内的另一种中断生成和中断输送机制。在图9中,第一核902将目的地地址和中断向量写入内部LAPIC906的ICR寄存器904中,促使LAPIC向被识别为目标的一个或多个核传送中断消息,以便由第一核进行中断输送。在图9中,在总线910上向第二核914的LAPIC912传送中断消息。第二核的LAPIC生成中断向量并将该中断向量和与中断有关的其它信息放置在ISR寄存器916中,并另外向第二核914生成信号以将中断的到达告知第二核。第二核的操作系统从ISR提取所需信息,包括中断向量,并使用中断向量918作为到跳转表920中的索引,以便调用适当的中断处理程序例行程序922。图IOAD举例说明诸如图5中举例说明的多核处理器的多核处理器内的核间通信的一种方法。当计算问题被分解,其中由在两个或更多不同的核上执行的不同例行程序或程序来处理问题的不同部分,所述两个或更多不同例行程序或程序常常需要相互之间来回传送结果,并可能另外需要从彼此请求信息。这样做的一种大家公认的方法是采用共享存储器中的先进先出(“FIFO”)队列,对于信息传输的每个方向而言有一个FIFO队列。例如,图IOA示出多核处理器内的四个核10021005,以及其中已经分配了两个FIFO队列1008和1010并将其初始化的共享存储器1006的区域。在本示例中,第一核1002需要与第二核1005通信,其中从第一核到第二核和从第二核到第一核均发生双向通信。再次地,如上文所讨论的,FIFO队列仅仅是用于基于通过共享存储器来交换信息的核间或处理器间通信的方法的一个示例。涉及许多种不同种类的信息编码和数据结构的许多其它方法是可能的,并且所有此类方法可以受益于促进核间和处理器间通信的本发明的实施例。在图IOA中和后续的图中将FIFO队列表示为循环队列。例如,FIFO队列1008包括包含循环队列条目(entry)的区域1012和两个指针(1)DQ指针1014或参考,其指向将在出队操作中被从FIFO队列去除的第一条目;以及(2指针1016,其指示FIFO队列中的第一空闲、未占用条目或空闲槽,新条目可以在入队操作中被排队到其中。当DQ和Q指针1014和1016两者指向同一队列条目(图10A中的1018)时,队列是空的。事实上,通常在存储器中的字或较大结构的邻接队列中实现FIFO队列,并通过使用模η算法来使Q和DQ指针增加而使FIFO队列循环,其中,η是队列中的槽数。通常,队列槽是存储器的小单位,诸如一个或几个32位、64位、或1位字,其包括对存储器缓冲器的存储器参考,在核之间传输的较大量的信息被放置到其中。图10BC举例说明上文参考图10A所讨论的一个数据项目从第一核到第二核的传输。在图10B中,第一核使用Q指针(图10A中的1016)来对下一个空闲队列槽1018进行定位,并且如由图10B中的箭头1030所指示的,将条目排队到槽1018中。如箭头1032所指示的,第一核则通过模η算法来使Q指针1012增加以指向下一个队列条目1034。如图10C中所示,一旦第二核1005开始意识到FIFO队列1008中的新排队条目,则第二核使用DQ指针(如图10B中所示的1014)来对队列中的条目进行定位并检索队列条目,如图10C中的箭头1036所指示的。另外,第二核通过模η算法来使DQ指针1014增加,以便指示用于去除的下一个条目现在是槽1034中的条目。当然,由于在第二核的出队操作之前在队列上仅存在一个条目,所以DQ和Q指针现在指向同一槽1034,其指示FIFO队列1008是空的。如图IOD中所示,在第一和第二核之间的双向通信期间,可以在均勻的非常短的时间间隔期间执行许多不同入队和出队操作,并且在任何时间瞬间,在FIFO队列1008和1010上排队的条目的数目表示FIFO队列内的总可用队列条目的相当大的一部分。如果核未快速地检测到新队列条目的到达以进行处理,则队列可能很容易变得被充满,这导致双向通信的一个或多个方向的中断。当通信中断时,程序和例行程序可能停止,并且指令执行吞吐量相应地下降,在某些情况下低于已经在单核处理器实施方式中实现的指令执行吞吐量。因此,对到用于核间通信的共享存储器中的FIFO队列的WRITE操作的及时检测对于促进高效的多核程序执行而言是关键的。在图IOAD的示例性的、基于共享存储器的通信系统中,相对于FIFO队列1008而言,第一核1002是制作者,而第二核1005是用户。在其中FIFO队列用于信息传输的每个方向的双向通信系统中,制作者将条目放置到队列中,而用户从队列去除条目。同样地,相对于FIFO队列1010而言,第二核1005是制作者,而第一核1002是用户。在本讨论中,相对于特定FIFO队列而言,制作者和用户与特定核相关联,虽然通常制作者和用户两者是在各核内以某个执行水平运行的可执行实体。制作者可以用来在将一个或多个条目放置到FIFO队列中之后通知用户的一种技术是生成针对用户的IPI。用这种方法,制作者可以尝试保证通过上文参考图7和9所述的IPI机制,将如同可以生成IPI并将其输送至用户那样快地将(一个或多个)新条目告知用户。然而,存在与基于ICR的IPI机制相关联的许多问题。首先,如上文所讨论的,经由基于ICR的IPI来产生中断要求到ICR的两个WRITE操作。因此存在同步问题,因为两个WRITE操作并不一起是原子操作。例如,如果第一进程将向目的地字段(图7中的704)执行WRITE以准备生成IPI,并且随后被对ICR执行两个WRITE操作的第二进程先占以生成不同的IPI,则第一进程在重新开始执行时可能随后向ICR的较低32位部分发布第二WRITE操作,假设被第一进程写入的目的地仍在ICR的较高32位部分中,并且无意中向第二进程刚刚已将IPI指引到其的目的地生成第二IPI,而不是向第一进程意图将向其发送IPI的目的地生成IPI。因此,通常,必须使用同步方法来从生成IPI所需的两个ICR访问操作创建原子操作。诸如自旋锁和打信号之类的同步方法向IPI进程引入附加的存储器访问开销。即使当采用同步方法时,基于ICR的机制仍可以与问题相关联。例如,在上文讨论的示例中,第一进程可以获取自旋锁,或经由打信号操作来访问ICR,并针对ICR执行第一WRITE操作,但是然后可能被较高优先级的操作系统例行程序先占,该较高优先级的操作系统例行程序随后在将执行撤回到较高层级的进程之前执行达一定的时间段。在第一进程再次重新开始执行以及完成IPI生成之前可能存在显著的延迟。由于已经采用同步基元(primitives),所以只要操作系统确认同步协议,则不存在如在上文讨论的在前情况中那样的、ICR将被部分地或完全地重写的危险。然而,此类延迟或等待时间可能长到足以导致充满的FIFO队列和伴随而来的通信中断。一种可能的解决方案是在临界段内嵌入IPI生成一但是这种解决方案要求显著的操作系统支持和对操作系统的潜在的显著改变。更有问题的是许多操作系统不提供对到较高层级线程和进程的ICR的访问这一事实。在这种情况下,甚至如果在被隔离的核上运行的专用控制程序能够适当地使用基于ICR的IPI机制来通知在运行通用操作系统的核上的操作系统之上运行的用户,则用户随后不能以制作者的角色生成IPI以警告被隔离核上的用户可用于被隔离核上的用户的新排队信息。因此,对于促进核或处理器之间的双向的、基于共享存储器的通信而言,基于ICR的IPI生成不是令人满意的。图IlAB举例说明本发明的一个实施例。本实施例意在提供一种基于中断的方法,通过该方法,在多核处理器的第一核上执行的程序、例行程序、进程、或线程可以告知在一个或多个目标核上执行的一个或多个程序、例行程序、进程、或线程一个或多个条目已被排队至FIFO队列以便由在所述一个或多个目标核上执行的程序、例行程序、进程、或线程处理。然而,此机制不取决于由第一核内的内部LAPIC进行的IPI的明确定向生成。作为替代,可以在系统、操作系统、或低层级通信信道或基元的初始化期间将LAPIC配置为在包含或相关的核向在LAPIC的配置期间指定的共享存储器的区域发布WRITE操作以自动地生成IPI时自动地生成IPI。本发明的所述实施例使用由被映射到共享存储器地址空间的LAPIC提供的一组新的中断存储器寄存器(“IMR”)以允许使用IMR来指定共享存储器区域,以便在WRITE操作针对所指定的共享存储器区域时进行自动的IPI生成。在本发明的一个实施例中,每个IMR被映射到四个16字节对准的存储器区域。因此,在图6中所示的存储器映射中,第一、新的IMR寄存器可以被映射到在图6中被示为虚线(参见图6中的606)并具有“FEE0_0400”、“FEE0_0410”、“FEE0_0420”和“FEE0_0430”的十六进制地址的四个、16字节对准区域。在通过基于共享存储器的通信方法来进行核间通信之前,第一核1102将内部LAPIC1103配置为通过将包含FIFO队列1106的存储器区域1104的描述写入到IMR寄存器1108中来自动地生成IPI。通过将此信息写入IMR1108中,每当核向存储器的指定区域发布存储器WRITE操作时,第一核指示LAPIC生成指定类型的IPI并将其传送到一个或多个指定目标核。因此,例如,每当第一核将条目排队到FIFO队列1106时,由监视被第一核指引到存储器的WRITE操作的LAPIC来自动地生成IPI。虽然存储器1104的所述指定区域在图IlA中被示为包含FIFO队列槽及DQ和Q指针两者,但只能向用于自动IPI生成的LAPIC指定包含Q指针或包含FIFO队列槽的共享存储器的该区域,因为对于每个入队操作而言,仅需要一个IPI,并且每个入队操作通常涉及到FIFO队列槽以及到Q指针二者的存储器WRITE。图IlB举例说明由第一核1102执行以便向第二核1120传送数据的入队操作。在图1IB中,如上文参考图10AD所讨论的,第一核1102将条目1110放置到FIFO队列1006中并更新Q指针1112。由于将条目放置到队列中涉及到在IMR中指定的共享存储器区域的WRITE操作,所以第一核1102的LAPIC1116自动地生成将被传送到第二核1120的LAPIC1118的中断。在接收到中断时,第二核随后调用用于从FIFO队列检索信息的适当的中断处理程序。图12举例说明根据本发明的一个实施例的、包括在增强的LAPIC中的新中断存储器寄存器。所述IMR寄存器包括与包括在ICR中的字段类似的字段,诸如包含用于将在向指定存储器区域发布WRITE操作时生成的IPI的中断向量的字段1202。IMR寄存器还包含目的地字段1204以指示IPI应被传送到多核处理器的哪些核,如在ICR中。另外,如上文所讨论的,IMR包括指定共享存储器中的当被写入时导致IPI的自动生成的区域的字段。字段“页”1206指定共享存储器区域的第一物理存储器页的地址,到所述共享存储器区域的第一物理存储器页的写入应自动地生成IPI,并且字段“页数”1208指示存储器区域中的固定尺寸的页的数目。在其中实现了本发明的方法的一个处理器架构中,采用4K字节物理页,并因此,字段“页”具有64-Iog2(4096)=64-12=52位,以提供共享存储器区域的第一页的64位寻址。在本发明的替换实施例中,页字段可以包含更大数量的位或更少的位以便提供共享存储器区域的较大粒度或较小粒度的寻址。图13提供根据本发明的一个实施例的、包括在增强的LAPIC中的新IMR寄存器的每个字段的说明。图13中的说明与在用于由多核处理器的制造商制造的LAPIC寄存器的规范中找到的那些相似。使用FW(固件)位、IMR[16]来保留IMR以供固件专用,以在被设定时避免对由固件、操作系统例行程序、和较高层级进程和线程控制对IMR的争用的需要,如果IMR被暴露在较高层级的话。相对于由IMR定义的共享存储器区域,EN(使能)位允许IPI生成被切换关闭和开启。附加字段与相应的ICR字段相同或类似。应注意的是,IMR意图允许指定共享的可高速缓存的回写存储器以用于自动IPI生成。在其中指定存储器的许多操作中,操作被限制于仅指定未高速缓存的存储器,以避免与高速缓存一致性逻辑有关的副作用和复杂性。然而,本发明的实施例意图在处理器逻辑电路、状态机、和/或固件内加以实现,并因此能够对接到处理器的高速缓存一致性和存储器总线部件,以保证例如在发布IPI之前,对于针对自动IPI生成共享存储器区域的WRITE操作而言完成高速缓存无效周期,以避免远程核或处理器上的用户在信息可被用户访问之前被警告共享存储器区域中的潜在新信息。图14举例说明根据本发明的实施例的、可以包括在增强的LAPIC中并被映射到核存储器地址空间的许多IMR寄存器。如图14中所示,一系列的IMR寄存器14021410被映射到遵循常规LAPIC寄存器映射1412的成组的四个连续16字节对准存储器区域。可以使用IMR的目的地字段(图12中的1204)来指定用于IPI的单核目标,或者可以包含多核处理器内的多个核的类似于多播地址的规范。图15示出其中多于两个核通过公共机制相互通信的基于共享存储器的通信机制的示例。在图15中,根据本发明的所述实施例,第一核1502已采用基于IMR的方法来配置包括用于自动生成到多个核的IPI的FIFO队列1506的DQ和Q指针的共享存储器的区域1504。因此,当第一核1502将新条目1510入队到FIFO队列1506上时,由第一核1502内的LAPIC1518自动地通过IPI中断通知全部的三个外部核15141516。在此类通信方法中,接收到中断的每个核可能需要检验新添加的队列条目以便确定是否出队并处理条目。当然,可以通过诸如图IlAB中所示的一系列双核的基于共享存储器的通信机制来替换地实现涉及多个目标核的此类通信方法。虽然已根据特定实施例描述了本发明,但并不意图使本发明局限于这些实施例。本发明的精神内的修改对于本领域的技术人员来说将是显而易见的。例如,可以实现用于IMR寄存器的任何数目的不同格式并在到存储器的指定区域的存储器写入时将其用于自动生成IPI。例如,“页”字段可以根据所定义的可接受的页对准、页尺寸、和自动的IPI实现所针对的处理器架构的存储器地址空间的尺寸而在尺寸方面改变。可以将页和页长度字段扩展至允许在单个IMR中指定存储器的多个非邻接区域,虽然如上文所定义的,可以使用多个IMR来将共享存储器的非邻接区域定义为单个自动IPI生成区域。可以在处理器内以各种不同的方式来实现到在IMR内指定的存储器区域的存储器WRITE操作的检测。通常,本发明的所述实施例包括已实现的LAPIC功能一即IPI的生成的增强。可以采用在将WRITE操作指引到所配置的共享存储器区域时自动生成IPI来促进基于共享存储器的通信,如上文所讨论的,但是可以另外将其用于其它原因。应注意的是,当核或处理器将值写入特殊存储器区域时,高速缓存无效周期需要在生成IPI之前完成,以便被中断的核或处理器能够访问已更新的存储器区域,而不是在生成中断的WRITE操作之前的存储器区域的过时的尚未更新的版本。可以通过增强结合在处理器内的各种类型的LAPIC部件或替换地增强由离散系统部件提供的LAPIC功能来将本发明的实施例结合到各种类型的多核处理器和各种共享存储器多处理器系统中。前述说明出于解释的目的使用特定的命名法来提供对本发明的透彻理解。然而,对于本领域的技术人员来说将显而易见的是,不要求有所述特定细节以便实施本发明。出于例示和说明的目的提出本发明的特定实施例的前述说明。其并不意图是排他性的或使本发明局限于所公开的精确形式。根据以上教导,可以进行许多修改和变更。示出并描述实施例是为了最好地解释本发明的原理及其实际应用,从而使得本领域的技术人员能够如适合于预期的特定用途的那样最好地利用本发明和具有各种修改的各实施例。意图在于由以下权利要求及其等价物来定义本发明的范围。权利要求1.一种处理器内的处理器间中断生成设备,所述处理器间中断生成设备包括一个或多个中断存储寄存器,其中的每一个指定共享存储器地址空间内的区域、一个或多个目标处理器和中断向量;以及逻辑电路、状态机和固件中的一个或多个的组合,其在写操作针对由中断存储寄存器指定的共享存储器区域时,生成由包括在所述中断存储寄存器中的中断向量指定的中断类型的处理器间中断,其针对在所述中断存储寄存器中指定的所述一个或多个目标处理器。2.权利要求1的处理器间中断生成设备,包括在以下各项中的一个或多个中共享存储器多处理器计算机系统的每个处理器;以及多核处理器的每个核。3.权利要求1的处理器间中断生成设备,其中,可以在以下各项中的一个或多个中指定共享存储器区域以用于自动的处理器间中断生成非高速缓存共享存储器;高速缓存共享存储器;透写式高速缓存共享存储器;以及回写式高速缓存共享存储器。4.权利要求1的处理器间中断生成设备,其中,每个中断存储寄存器包括向量字段,其包括表征将要生成的处理器间中断的中断向量;固定输送模式字段;目的地模式字段;使能字段,其控制是否在针对由所述中断存储寄存器指定的所述共享存储器区域的写时生成处理器间中断;固件字段,其指定IMR是否可用于被主机操作系统、管理程序、或其它非固件实体使用;目的地简写字段,其提供各种类似于广播的目标模式;页数字段,其指定由所述中断存储寄存器指定的所述共享存储器区域内的连续页的数目;目的地字段,其指定由于针对由所述中断存储寄存器指定的所述共享存储器区域的写操作而生成的处理器间中断的处理器目标;以及页字段,其包含由所述中断存储寄存器指定的所述共享存储器区域的第一页的物理页地址。5.权利要求1的处理器间中断生成设备,其中,所述中断存储寄存器被映射到处理器存储器地址空间,以允许在所述处理器上执行的例行程序、线程、进程或程序从所述中断存储寄存器读取值以及向所述中断存储寄存器写入值。6.权利要求1的处理器间中断生成设备,其被第一制作者处理器用来通过向由中断存储寄存器指定的共享存储器区域写入数据来与第二用户处理器通信,以便将数据传输到所述用户处理器以及警告所述用户处理器在所述共享存储器区域中可获得所述数据。7.权利要求6的处理器间中断生成设备,其中,所述共享存储器区域包括FIFO队列,所述第一制作者处理器将条目入队到该FIFO队列,而所述第二用户处理器从该FIFO队列使所述条目出队。8.权利要求1的处理器间中断生成设备,其中,逻辑电路、状态机和固件中的一个或多个的组合在写操作针对由中断存储寄存器指定的共享存储器区域时,仅在与通过写操作改变的共享存储器位置有关的高速缓存无效周期完成之后生成处理器间中断,以保证所述中断所针对的处理器能够访问通过所述写操作传输到所述共享存储器区域的所述共享存储器区域中的数据。9.权利要求1的处理器间中断生成设备,其中,在本地高级可编程中断控制器内实现所述处理器间中断生成设备。10.一种用于在处理器之间通信的方法,该方法包括在每个处理器中提供处理器间中断生成设备,该设备包括一个或多个中断存储寄存器,其中的每一个指定共享存储器地址空间内的区域、一个或多个目标处理器和中断向量,以及逻辑电路、状态机和固件中的一个或多个的组合,其在写操作针对由中断存储寄存器指定的共享存储器区域时,生成由包括在所述中断存储寄存器中的中断向量指定的中断类型的处理器间中断,其针对在所述中断存储寄存器中指定的所述一个或多个目标处理器;由多个处理器中的第一处理器将中断存储寄存器初始化,以指定被处理器共享的存储器的区域以用于自动中断生成;以及由所述第一处理器向由所述经初始化的中断存储寄存器指定的存储器的区域写入数据。11.权利要求10的方法,其中,所述处理器是以下各项中的一个或多个共享存储器多处理器计算机系统的处理器;以及多核处理器的核。12.权利要求10的方法,其中,可以在以下各项中的一个或多个中指定共享存储器区域以用于自动处理器间中断生成非高速缓存共享存储器;高速缓存共享存储器;透写式高速缓存共享存储器;以及回写式高速缓存共享存储器。13.权利要求10的方法,其中,每个中断存储寄存器包括向量字段,其包括表征将要生成的处理器间中断的中断向量;固定输送模式字段;目的地模式字段;使能字段,其控制是否在针对由所述中断存储寄存器指定的所述共享存储器区域的写时生成处理器间中断;固件字段,其指定IMR是否可用于被主机操作系统、管理程序、或其它非固件实体使用;目的地简写字段,其提供各种类似于广播的目标模式;页数字段,其指定由所述中断存储寄存器指定的所述共享存储器区域内的连续页的数目;目的地字段,其指定由于针对由所述中断存储寄存器指定的所述共享存储器区域的写操作而生成的处理器间中断的处理器目标;以及页字段,其包含由所述中断存储寄存器指定的所述共享存储器区域的第一页的物理页地址。14.权利要求10的方法,还包括将所述中断存储寄存器映射到处理器存储器地址空间,以允许在所述处理器上执行的例行程序、线程、进程或程序从所述中断存储寄存器读取值以及向所述中断存储寄存器写入值。15.权利要求10的方法,其中,所述共享存储器区域包括FIFO队列,所述第一处理器将条目入队到该FIFO队列,以及所述一个或多个目标处理器之一使条目从该FIFO队列出队。16.权利要求1的方法,其中,逻辑电路、状态机和固件中的一个或多个的组合在写操作针对由中断存储寄存器指定的共享存储器区域时,仅在与通过写操作改变的共享存储器位置有关的高速缓存无效周期完成之后生成处理器间中断,以保证所述中断所针对的处理器能够访问通过所述写操作传输到所述共享存储器区域的所述共享存储器区域中的数据。全文摘要本发明的某些实施例旨在提供用于多核微处理器和某些多处理器系统内的核间和处理器间通信及核间和处理器间信令的高效且容易应用的机制。在本发明的一个实施例中,增强了多核微处理器的核和/或多处理器系统的处理器内的或与之相关联的本地高级可编程中断控制器,以便该本地高级可编程中断控制器可以被配置为当写操作针对共享存储器的特定区域时自动地生成核间和处理器间中断。文档编号G06F13/14GK102077181SQ200880130063公开日2011年5月25日申请日期2008年4月28日优先权日2008年4月28日发明者T·J·博诺拉申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1