CN102483705B - 多核结构的用户级中断机制 - Google Patents
多核结构的用户级中断机制 Download PDFInfo
- Publication number
- CN102483705B CN102483705B CN201080036115.6A CN201080036115A CN102483705B CN 102483705 B CN102483705 B CN 102483705B CN 201080036115 A CN201080036115 A CN 201080036115A CN 102483705 B CN102483705 B CN 102483705B
- Authority
- CN
- China
- Prior art keywords
- user
- level interrupt
- interrupt
- mailbox
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000007246 mechanism Effects 0.000 title description 16
- 238000000034 method Methods 0.000 claims abstract description 111
- 230000008569 process Effects 0.000 claims description 27
- 239000013598 vector Substances 0.000 claims description 26
- 238000012546 transfer Methods 0.000 claims description 25
- 230000005540 biological transmission Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 15
- 230000008520 organization Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims description 4
- 101100016034 Nicotiana tabacum APIC gene Proteins 0.000 description 102
- 238000005516 engineering process Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 3
- 230000004087 circulation Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000011435 rock Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 1
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 1
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 1
- DFPOZTRSOAQFIK-UHFFFAOYSA-N S,S-dimethyl-beta-propiothetin Chemical compound C[S+](C)CCC([O-])=O DFPOZTRSOAQFIK-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1881—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Abstract
一种方法,包括:针对多核系统中多个处理器内核中的第一处理器内核,当在所述第一处理器内核上执行的应用程序线程的中断域和在所述第一处理器内核上执行的所述应用程序线程的接收者标识符与用户级中断消息中的相应字段匹配时,接受所述用户级中断消息所指示的用户级中断。
Description
背景
技术领域
本发明涉及多处理器系统,确切地说,涉及多处理器系统中的中断处理。
背景技术
通常情况下,中断(例如,异常)是这样一种事件,即将指令执行从当前正在执行的指令流更改到另一指令流。中断通常由耦接到处理器的处理器或装置引起。典型的中断处理机制将所中断的处理器的程序控制流更改到中断处理程序(例如,中断服务例程)。参阅图1,示例性多处理系统(例如,系统100)包括至少两个处理器内核(即中央处理单元、内核或硬件加速器),其配置成以并发形式执行多个应用程序线程。示例性中断传送机制(例如,x86结构的中断传送机制)包括用于系统中的每个内核的中断控制器(例如,本地高级可编程中断控制器(APIC))。此外,中断控制器(例如,I/O APIC)可用于系统中的每个外围总线。专用总线或系统总线(例如,纵横式交换矩阵116)可用于在APIC之间进行通信。
通常情况下,本地APIC管理相应内核或CPU的外部中断。本地APIC能够接受并生成处理器间中断(IPI)消息。当多处理器系统的第一内核将并行任务卸载到另一内核时,发生示例性IPI。典型的本地APIC最多支持224个可用中断矢量,这些中断矢量对应于中断优先级和相应的中断服务例程。另外32个矢量会保留,以用于关联内核或CPU的中断处理。
参阅图1和图2,处理器间中断由内核(例如,内核102)生成,所述内核写入相应的本地APIC(例如,本地APIC 106)中的中断控制寄存器(ICR)中(202)。ICR包括针对目标标识符、传送模式、中断矢量以及其他合适信息的字段。本地APIC 106生成中断消息,并使用纵横式交换矩阵116来经由芯片上网络广播所述中断消息(204)。接收中断消息的本地APIC(例如,本地APIC 108)基于关联内核(例如,内核104)的状态以及接收本地APIC本身的状态(例如,传送模式和目标标识符),确定是否接受中断。例如,根据传送模式,如果本地APIC 108具有与目标ID匹配的标识符、物理ID或逻辑ID,则本地APIC 108将接受中断消息,从所述中断消息中读取中断矢量号,且在中断请求寄存器(IRR)中设置相应位。本地APIC 108将ACK(确认)消息发送到最初生成中断消息的本地APIC 106,以确认本地APIC 108已收到所述中断消息(206)。
本地APIC 108从中断消息读取的中断矢量号表示中断的优先级,该优先级将与其他待处理中断的优先级,以及一个或多个当前正在执行的线程的优先级进行比较。如果所述中断的优先级最高,则设置中断服务寄存器(ISR)中的相应位,并将所述中断传送到内核104。本地APIC 108中的逻辑会发送消息到内核104(208)。接收到消息后,内核104将对所述中断进行检测,并在当前正在执行的应用程序线程的指令边界上,执行中断服务例程。中断服务例程会基于中断描述符表寄存器(IDTR)中的内容来访问中断描述符表(IDT),并获取对应于所述中断矢量号的中断处理程序的代码段选择器以及偏置和特权模式。在基于代码段选择器确定中断处理程序的入口点,且将偏置程序控制转移到中断处理程序后,内核104将通过执行中断处理程序中指定的操作来对中断进行处理(212)。根据中断处理程序中指定的操作的结果,控制从中断处理程序返回,且可能返回到之前正在执行的应用程序线程(214)。
仍参阅图1和图2,对于耦接到多处理器系统(例如,系统100)的外围总线(例如,外围总线114)的装置(例如,装置112),源自所述装置的中断的处理方式与上述处理器间中断的处理方式相似。例如,在网络分组处理系统中,装置112是网络接口卡(NIC)。当收到信息包后,NIC将中断发送给处理器以通知处理器已收到信息包。装置112通过确认中断信号来生成中断(202),且I/O APIC(例如,I/O APIC 110)读取中断重定向表(IRT)116中的相应条目。I/O APIC 110通过所述条目中的信息,例如目标标识符、传送模式、中断矢量或其他合适的信息来生成中断消息。随后,将中断会广播给本地APIC(例如,本地APIC 106和本地APIC 108)(204)。目标本地APIC(例如,本地APIC 108)向I/O APIC发送确认消息(206)。随后,中断会发送给对应于目标本地APIC的接收内核(例如,内核104)。内核108对中断(210、212、214、216)进行处理的方式与内核108对处理器间中断进行处理的方式相同。
要将中断从在一个内核上执行的应用程序发送到另一内核,始发内核需要将控制转移到操作系统,因为ICR只能在内核模式下写入。对另一内核生成中断的应用程序将切换到内核模式以写入ICR,并随后切换回用户模式,因此需要进行两次控制转移。向操作系统的典型控制转移使用大量循环(例如,数千次到数万次循环或者更多循环,具体取决于操作系统实施的复杂程度)。此外,如果使用中断来将信息传送到应用程序线程,则还需要进行额外的控制转移,以将程序控制转移回应用程序线程。使用与操作系统关联的中断机制来处理用户级中断而引起的此类高系统开销可能会减弱系统性能。
发明内容
在本发明的至少一项实施例中,提供一种方法,包括针对多核系统中的多个处理器内核中的第一处理器内核,当在所述第一处理器内核上执行的应用程序线程的中断域以及在所述第一处理器内核上执行的所述应用程序线程的接收者标识符与用户级中断消息中的相应字段匹配时,接受所述用户级中断消息所指示的用户级中断。在至少一项实施例中,所述方法包括:在所述用户级中断的优先级高于所接受的其他中断,且高于在所述处理器内核上执行的应用程序线程时,对所述用户级中断进行处理。在所述方法的至少一项实施例中,所述用户级中断是在不调用操作系统中断的情况下进行处理的。在所述方法的至少一项实施例中,所述处理包括:更改用户级中断服务寄存器的状态并执行用户级中断例程,其中所述执行包括:基于所述用户级中断消息中的矢量号以及用户级中断描述符表寄存器的内容,调用用户级中断处理程序。在至少一项实施例中,所述方法包括:基于user-level-retum-from-interrupt指令,从所述用户级中断处理程序返回程序流。在至少一项实施例中,所述方法包括:在完成对所述用户级中断的所述处理后,重置所述用户级中断服务寄存器的状态。在所述方法的至少一项实施例中,与所述第一处理器内核关联的本地中断控制器从与所述多个处理器内核中的第二处理器内核关联的专用本地中断控制器与输入/输出中断控制器中的至少一者,接收所述用户级中断消息。在所述方法的至少一项实施例中,用户级中断的优先级低于操作系统中断。
在本发明的至少一项实施例中,本发明提供一种方法,包括将指示用户级中断的用户级中断消息发送到多核系统中多个处理器内核中的一个或多个处理器内核。所述用户级中断消息包括与所述用户级中断关联的中断域标识符,以及与所述用户级中断关联的接收者标识符。在至少一项实施例中,所述方法包括:写入对应于所述多个处理器内核中的一个处理器内核的用户级中断控制寄存器中,从而生成用户级中断。在所述方法的至少一项实施例中,写入所述用户级中断控制寄存器中包括配置所述用户级中断控制寄存器的目标字段,以及配置所述用户级中断控制寄存器的传送模式字段。在所述方法的至少一项实施例中,所述用户级中断由在多个处理器内核中的第一处理器内核上执行的应用程序线程生成,且所述方法进一步包括检测所述用户级中断的不可送达状态,并基于所述状态对所述第一处理器内核触发中断。
在本发明的至少一项实施例中,本发明提供一种设备,包括本地中断控制器,其对应于多核系统中多个处理器内核中的第一处理器内核。所述本地中断控制器包括中断域标识符状态元件,其可操作以存储在所述第一处理器内核上执行的应用程序线程的中断域的指示符。所述本地中断控制器包括接收者标识符状态元件,其可操作以存储在所述第一处理器内核上执行的应用程序线程的指示符。所述本地中断控制器可操作以基于所述中断域标识符和所述接收者标识符状态元件的内容,至少部分处理用户级中断。在所述设备的至少一项实施例中,所述本地中断控制器进一步包括:用户级中断控制状态元件,其指示所述本地中断控制器的用户级中断配置;用户级中断服务状态元件,其指示所确认的用户级中断;以及用户级中断请求状态元件,其指示用户级中断待处理应答。在所述设备的至少一项实施例中,所述本地中断控制器可操作以基于所述中断域标识符状态元件和所述接收者标识符状态元件的内容,生成中断消息。在至少一项实施例中,所述设备包括至少一个用户级中断处理程序、用户级中断描述符表以及用户级中断描述符表寄存器,其中根据所述用户级中断描述符表寄存器的内容,可从所述用户级中断描述符表访问所述至少一个用户级中断处理程序。在所述设备的至少一项实施例中,所述本地中断处理器可操作以从另一专用本地中断控制器以及包括中断重定向表的输入/输出中断控制器中的至少一者,接收用户级中断,其中所述中断重定向表包括中断域标识符。在所述设备的至少一项实施例中,所述本地中断控制器可操作以向用户级中断的来源提供指示以下内容的指示符:专用本地中断控制器是否接受从用户级中断的来源接收的中断消息。在所述设备的至少一项实施例中,所述本地中断控制器可操作以在所接收到的中断消息中的传送模式字段指出了用户级中断代码时,将所接收到的中断消息中的目标指示指令与接收者标识符存储单元的内容进行比较,以及将所接收到的中断消息中的中断域标识符与中断域标识符存储单元的内容进行比较。在所述设备的至少一项实施例中,所述用户级中断处理程序包括用户级中断矢量。在至少一项实施例中,所述设备包括输入/输出中断控制器,其可操作以从装置接收事件,并将所接收到的事件作为中断而路由到所述本地中断控制器。在所述设备的至少一项实施例中,所述本地中断控制器配置成从另一本地中断控制器接收确认指示符,其中所述另一本地中断控制器对应于所述多个处理器内核中生成中断的第二处理器内核。在至少一项实施例中,所述设备包括操作系统级中断控制状态元件,其指示本地中断控制器的操作系统级中断配置;操作系统级中断服务状态元件,其指示所确认的操作系统级中断;以及操作系统级中断请求状态元件,其指示操作系统级中断待处理应答。
在本发明的至少一项实施例中,本发明提供一种方法,包括:至少部分基于包括在与用户级中断关联的用户级中断消息中的中断域标识符和中断接收者标识符,在邮箱中将所述用户级中断记录为不可送达的用户级中断。所述记录是至少部分基于以下指示而进行的:所述用户级中断不可送达到在多核系统中多个处理器内核中的一个处理器内核上执行的接收者应用程序线程。在至少一项实施例中,所述方法包括:接收指示所述用户级中断未被所述用户级中断的目标接收者接受的至少一个消息,其中关于所述用户级中断不可送达的指示至少部分基于所述至少一个消息。在所述方法的至少一项实施例中,关于所述用户级中断不可送达的指示是基于确定并未收到针对所述用户级中断消息的确认消息。在至少一项实施例中,所述方法包括:在将接收者应用程序线程状态存储到处理器内核之后、且在运行接收者应用程序线程之前,对邮箱中的条目进行处理。在至少一项实施例中,所述方法包括:响应于在邮箱已满时尝试在邮箱中将额外的用户级中断记录为不可送达的用户级中断,将邮箱的溢流状态通知给操作系统。在至少一项实施例中,所述方法包括:响应于邮箱溢流状态通知,扩大邮箱存储空间。在至少一项实施例中,所述方法包括:响应于邮箱溢流,忽略额外的用户级中断。在至少一项实施例中,所述方法包括:用额外的用户级中断来覆盖邮箱中被记录为不可送达中断的用户级中断,从而忽略所述用户级中断。在至少一项实施例中,所述方法包括:在应用程序线程进入域,且从在一个或多个处理器内核上执行的操作系统接收到接收者标识符时,创建邮箱表条目。
在本发明的至少一项实施例中,本发明提供一种设备,包括多核系统中多个处理器内核中的第一处理器内核。所述设备包括邮箱存储结构,其可操作以存储不可送达的用户级中断消息。所述第一存储器内核可根据邮箱存储结构根存储元件的内容、中断域标识符以及中断接收者标识符,访问所述邮箱存储结构。在至少一项实施例中,所述设备包括对应于所述第一存储器内核的邮箱根存储元件,其中所述第一存储器内核可操作以基于存储在可根据所述邮箱根结构存储元件访问的邮箱表中的相应邮箱描述符,在邮箱存储结构中存储不可送达的用户级中断消息。在至少一项实施例中,所述设备包括可根据所述邮箱根结构存储元件的内容访问的邮箱表,其中所述邮箱表位于由多个处理器内核共享的存储空间中。在所述设备的至少一项实施例中,所述邮箱表包括各种表的分级集合,其中包括根表和至少一个接收者邮箱指针表,其中所述根表将中断域标识符与接收者邮箱指针表关联。在所述设备的至少一项实施例中,邮箱表包括邮箱描述符条目,其可根据中断域标识符和中断接收者标识符访问。在所述设备的至少一项实施例中,邮箱存储结构包括一种对应于不可送达用户级中断类型的专用条目队列。在所述设备的至少一项实施例中,邮箱存储结构包括位矢量,其指示对于特定接收者应用程序线程,一个或多个用户级中断类型是否处于待处理状态。在至少一项实施例中,所述设备包括对应于所述第一处理器内核的本地中断控制器,其中所述本地中断控制器包括:中断域标识符状态元件,其可操作以存储在所述第一处理器内核上执行的应用程序线程的中断域的指示符;以及接收者标识符状态元件,其可操作以存储在所述第一处理器内核上执行的应用程序线程的指示符,其中所述本地中断控制器可操作以基于所述中断域标识符和所述接收者标识符状态元件的内容,至少部分处理用户级中断。
在本发明的至少一项实施例中,本发明提供一种方法,包括:当在多个处理器内核中的第一处理器内核上执行的应用程序线程的中断域与在所述第一处理器内核上执行的应用程序线程的接收者标识符中的至少一者与用户级中断消息中的相应字段不匹配时,发送未被用户级中断消息的接收者接受的用户级中断;否则,发送被接受的用户级中断的指示符。在至少一项实施例中,所述方法包括:基于所接收的用户级中断未被接受的指示符,生成关于所述用户级中断不可送达目标接收者应用程序线程的指示符。在至少一项实施例中,所述方法包括:检测用户级中断的不可送达状态,且基于所述状态对第一处理器内核触发中断。
在本发明的至少一项实施例中,本发明提供一种方法,包括根据从多个用户级中断传送配置中选出的用户级中断传送配置,将指示用户级中断的用户级中断消息传送给一个或多个接收者。所述一个或多个接收者对应于在多核系统中多个处理器内核中的一个或多个处理器内核上执行的一个或多个应用程序线程。在至少一个实施例中,所述方法包括:从多个用户级中断传送配置中选择用户级中断传送配置。在所述方法的至少一项实施例中,所述多个用户级中断传送配置包括单播传送、多播传送以及广播传送。在至少一项实施例中,所述方法包括:从一个或多个接收者处收集至少一个响应,并根据从所述一个或多个接收者收集的所述至少一个响应,成功完成中断操作。在至少一项实施例中,所述方法包括:从一个或多个接收者处收集至少一个响应,并根据通知模式配置以及从所述一个或多个接收者收集的所述至少一个响应,触发不可送达中断。在至少一项实施例中,所述方法包括:根据可选择的传送失败通知模式配置,传送不可送达的用户级中断的传送失败通知。在所述方法的至少一项实施例中,所述用户级中断传送配置包括:将所述用户级中断消息多播到多个接收者,其中所述多个接收者对应于所述多个处理器内核中的多个处理器内核。在所述方法的至少一项实施例中,所述用户级中断传送配置包括:将所述用户级中断消息广播到所述多个处理器内核中的剩余处理器内核。在所述方法的至少一项实施例中,所述用户级中断由在多个处理器内核中的第一处理器内核上执行的应用程序线程生成,且所述方法进一步包括检测所述用户级中断的不可送达状态,并基于所述状态对在所述第一处理器内核上执行的所述应用程序线程触发用户级中断。在所述方法的一项实施例中,所述用户级中断消息包括一个或多个接收者应用程序线程的中断域,以及指示一个或多个接收者应用程序线程的接收者群组字段。
在本发明的至少一项实施例中,本发明提供一种方法,包括根据传送失败通知模式配置,生成关于用户级中断不可送达到用户级中断消息的一个或多个目标接收者的指示符。用户级中断可由在多核系统中多个处理器内核中的第一处理器内核上执行的应用程序线程生成。在所述方法的至少一项实施例中,所述指示符至少部分基于用户级中断不可送达的多个目标用户级中断接收者。在所述方法的至少一项实施例中,用户级中断由在多核系统中多个处理器内核中的第一处理器内核上执行的应用程序线程生成。在至少一项实施例中,所述方法包括:检测用户级中断的不可送达状态,且基于所述状态对第一处理器内核触发用户级中断。在至少一项实施例中,所述方法包括:至少部分基于包括在与用户级中断关联的用户级中断消息中的中断域标识符和中断接收者标识符,以及至少一个关于所述用户级中断不可送达的指示,在与接收者标识符关联的邮箱中将用户级中断记录为不可送达的用户级中断。
在本发明的至少一项实施例中,本发明提供一种设备,包括本地中断控制器,其对应于多核系统的多个处理器内核中的第一处理器内核。所述本地中断控制器包括接收者群组状态元件和传送失败通知模式状态元件中的至少一者。所述本地中断控制器可操作以基于所述接收者群组状态元件和所述传送失败通知模式状态元件中的至少一者的内容,对用户级中断进行处理。在所述设备的至少一项实施例中,所述本地中断控制器包括所述接收者群组状态元件,且所述本地中断控制器可操作以根据所述接收者群组状态元件的内容,将用户级中断消息发送到一个或多个接收者。在所述设备的至少一项实施例中,所述本地中断控制器包括传送失败通知模式状态元件,且所述本地中断控制器可操作以生成用户级中断消息,所述用户级中断消息包括传送失败通知模式状态元件的内容的指示符。在所述设备的至少一项实施例中,所述本地中断控制器包括传送失败通知模式状态元件,且所述本地中断控制器可操作以根据所述传送失败通知模式状态元件的内容,生成不可送达用户级中断的传送失败通知。在所述设备的至少一项实施例中,所述本地中断控制器可操作以从一个或多个接收者收集任何响应,且可操作以根据从所述一个或多个接收者收集的响应而成功地完成中断操作。在所述设备的至少一项实施例中,所述本地中断控制器可操作以从一个或多个接收者收集任何响应,且根据所述传送失败通知模式状态元件的内容以及从所述一个或多个接收者收集的响应,触发不可送达中断。在所述设备的至少一项实施例中,所述本地中断控制器进一步包括:中断域标识符状态元件,其可操作以存储在所述第一处理器内核上执行的应用程序线程的中断域的指示符;以及接收者标识符状态元件,其可操作以存储在所述第一处理器内核上执行的应用程序线程的指示符,其中所述本地中断控制器可操作以进一步基于所述中断域标识符状态和接收者标识符状态元件的内容,对所述用户级中断进行处理。
附图说明
参阅附图有助于更好地理解本发明,且有助于所属领域一般技术人员清楚地了解本发明的许多目标、特征和优点,其中:
图1是示例性中断传送机制的方框图。
图2所示为使用图1所示中断传送机制的中断的示例性信息和控制流。
图3所示为符合本发明的至少一项实施例的示例性中断传送机制的方框图。
图4所示为符合本发明的至少一项实施例的图3所示示例性中断传送机制的示例性信息和控制流。
不同附图中所用的相同参考标号表示类似或相同元件。
具体实施方式
通过将用户级中断直接传送到用户级应用程序线程,与本发明的一项或多项实施例相符的示例性用户级中断传送技术可减少在处理用户级中断(例如,应用程序线程所生成的中断,或耦接到系统的外围总线的装置所生成的中断)时的控制转移的数量。参阅图3和4,示例性多处理器系统(例如系统300)包括至少两个处理器内核(即中央处理单元、内核或硬件加速器),其配置成以并发形式执行多个应用程序线程。每个本地APIC包括中断域标识符寄存器(即IDIR)和接收者标识符寄存器(即RIR)。IDIR是一种状态元件,用于存储当前在关联内核上执行的应用程序线程的中断域标识符。中断域是一组应用程序线程和装置,用于交换用户级中断。每个域均具有名为“中断域标识符”的唯一标识符。该标识符在操作系统实例中是唯一的。域中的每个成员均分配有接收者标识符,其只在该域中是唯一的。RIR是一种状态元件,用于存储当前在内核上执行的应用程序线程的接收者标识符。在系统300中,用户级中断的目标应用程序线程通过中断域标识符和接收者标识符的组合来进行标识。
尽管在图3中,系统300的IDIR和RIR包括在本地APIC中,但这些标识符还可存储在其他任何单独设置每个内核的模块中。尽管图中的本地APIC 306和本地APIC 308分别与内核302和304隔开,但应注意,本地APIC 306和本地APIC 308的功能可并入相应内核电路或其他单独设置每个内核的模块中。由于所述两个标识符是应用程序线程上下文的一部分,因此在上下文转换过程中保存并存储IDIR和RIR寄存器的状态。保存和存储IDIR和RIR的方法可包括:通过机器状态寄存器(MSR)进行映射、通过存储器映射I/O(MMIO)进行存取、指令集架构扩展,或其他合适的技术。
中断消息是响应于内核命令或装置命令由APIC(例如,本地APIC306、本地APIC 308,或I/O APIC 310)生成的。在至少一项实施例中,系统300修改已知的中断消息以支持用户级中断。例如,x86中断消息可配置成包括:传送模式(即DM)字段,其设置成用户级中断专用的代码;以及/或“目标”字段,其配置成确定中断的接收者应用程序线程。在系统300的至少一项实施例中,中断域标识符可包括在x86中断消息有效载荷中。系统300的至少一项实施例中并没有将现有的中断消息进行扩展,而是使用了单独的用户级中断消息。例如,用户级中断消息可包括中断域标识符、接收者标识符、用户级中断类型和/或其他合适的信息。
仍参阅图3和4,在系统300的内核上执行的应用程序线程通过写入相应本地APIC(例如,本地APIC 306)的用户级中断控制寄存器(即UICR)来生成用户级中断(402)。UICR是中断控制寄存器(即ICR)的用户级副本,对应于每个本地APIC。UICR可以用户模式进行访问,且写入UICR无需操作系统协助或控制转移。在至少一项实施例中,应用程序线程配置UICR的“目标”字段以确定中断的接收者,并配置UICR的DM字段以包括指示用户级中断的特定代码。本地APIC 306基于UICR中的值生成用户级中断消息(404),这与基于ICR的内容生成操作系统级中断(即由涉及操作系统中断处理程序的现有中断机制所产生的中断)类似。IDIR中包含的中断域标志符通过本地APIC 306而包括在用户级中断消息中。应注意,IDIR中的中断域标识符用于确定中断启动应用程序线程,而非预期目标应用程序线程。因此,用户级中断可经配置以由接收应用程序线程在与启动应用程序线程相同的中断域中接收。
在系统300的至少一项实施例中,与操作系统级中断的路由类似,本地APIC 306将用户级中断消息广播到所有内核。互联网络(例如纵横式交换矩阵316或其他合适的总线结构)使用与广播操作系统级中断消息相同的技术来传播用户级中断消息。这样,网络就无需区分用户级中断与操作系统级中断。在系统300的至少一项实施例中,用户级中断可多播或直接发送到目标内核。
在至少一项实施例中,响应于接收到中断消息,本地APIC(例如,本地APIC 308)将中断消息的DM字段的内容与预定的用户级中断代码进行比较,以确定中断是否是用户级中断。如果中断是用户级中断,则本地APIC 308会将中断消息的“目标”字段的内容(即中断消息的接收者标识符,RIIM)与本地APIC 308的RIR的内容进行比较,并将包括在中断消息中的中断域标识符(即IDIM)与本地APIC 308的IDIR的内容进行比较(406)。如果相应值匹配,则中断的目标是与本地APIC 308和相应内核(例如,内核304)关联的应用程序线程。本地APIC 308基于中断消息确定中断矢量号,并更改UIRR中相应位的状态,其中所述UIRR是IRR的用户级副本,对应于单个本地APIC。随后,本地APIC 308发送确认消息(即ACK)到始发本地APIC(例如,本地APIC 306)(408),以表示所述中断消息已被接受。在系统300的至少一项实施例中,如果相应值不匹配,则本地APIC 308发送NACK消息至本地APIC 306(416),以表示所述中断未被本地APIC 308接受。
当本地APIC 308接受用户级中断时,其将中断路由到内核304以进行处理(410)。通常,当用户级中断的优先级高于所接受的其他中断以及当前在内核上执行的线程时,内核将处理用户级中断。例如,用户级中断的优先级低于任何操作系统级中断。在处理用户级中断时,内核对用户级ISR(UISR)中的相应位进行设置,其中所述用户级ISR是针对每个本地APIC添加的ISR的用户级副本。因此,内核304调用用户级中断的程序代码,并读取指向用户级IDT(UIDT)的用户级IDTR(UIDTR)(412)。UIDT是IDT的用户级副本,且包含指向用户级中断处理程序的指针。在系统300的至少一项实施例中,UIDT和IDT条目具有相同的数据结构,并合并组成单个合并IDT。合并IDT包括操作系统级处理程序和用户级处理程序。因此,不包括单独的UIDTR。
内核304访问代码段选择器、偏移量,及/或用户级处理程序的对应于用户级中断矢量号的其他合适信息。内核304将使用这些信息来将入口点计入对应于用户级中断处理程序的存储器中。最后,通过跳转到用户级中断处理程序入口点在存储器中的位置,程序控制流将转移到用户级中断处理程序(412)。
当用户级中断处理程序结束时,UISR中的相应位将通过软件、微代码或硬件来重置。本地APIC 308将对UISR中这些位的重置进行检测,并检查当前应用程序线程以及剩余待处理中断的优先级。随后,本地APIC308根据剩余待处理中断相对于当前应用程序线程的优先级来决定是否传送所述待处理中断。如果本地APIC 308决定传送另一个待处理中断,则将所述中断路由到内核304以进行处理(410)。否则,内核执行将从用户级中断例程返回(414)。在系统300的至少一项实施例中,该过程将通过从中断返回指令触发,所述指令可以是用户级专用指令,例如UIRET,它是IRET指令的用户级版本。应注意,与系统100中使用两次上下文更改(214和216)来进行中断处理相比,系统300中只使用一次上下文更改来进行中断处理(414)。
在系统300的至少一项实施例中,系统300将对以下情况进行检测:用户级中断的目标应用程序线程已在传送该用户级中断前被抢占。在一项实施例中,通过让发送者(例如,本地APIC 306)确定是否已接收到对应于所广播的用户级中断消息的ACK消息,系统300确定所述用户中断无法传送(即用户级中断不可送达)。在至少一项实施例中,如果用户级中断不可送达,则本地APIC 306将通过预定中断矢量号对内核302触发中断(例如,用户级中断或操作系统级中断),所述预定中断矢量号专用于处理不可送达中断的延迟传送(即延迟)的延迟中断传送处理程序。内核302调用用户级中断子例程,并跳转到映射到以UIDT表示的相应用户级中断处理程序的处理程序。处理程序可为用户级处理程序或操作系统级处理程序。在托管环境中,在操作系统之上执行的系统级软件直接管理用户级应用程序。系统级软件将代表操作系统来存储所延迟的用户级中断,并在重新调度目标应用程序后传送所述中断。例如,如果用户级中断用于托管环境中,则可使用用户级中断处理程序来处理所延迟的用户级中断。否则,则使用系统级处理程序。在系统300的至少一项实施例中,由软件系统来在用户级中断与操作系统级中断之间进行选择;但是,系统300可在硬件和/或微代码中支持用户级中断延迟。
在系统300的至少一项实施例中,当本地APIC 306检测到用户级中断无法传送时,本地APIC 306会调用中断邮箱技术,而非调用操作系统级或用户级中断处理程序。此硬件机制可在微代码中实施,或作为硬件有限状态机直接实施。操作系统使用注册到UIDT中的预定条目的操作系统级邮箱处理程序来处理任何延迟中断。操作系统还具有中断邮箱,其由每个接收者的中断队列构成,所述中断队列由中断域标识符和接收者标识符进行标识。调用时,操作系统级邮箱处理程序将延迟中断插入中断邮箱中的相应队列中。随后,当接收者应用程序线程经调度以在内核上执行时,操作系统将确定在相应邮箱中是否存在任何延迟中断。如果存在延迟中断,则操作系统将系统堆栈配置成接收者应用程序线程此时已接收到所述中断,且接收者应用程序线程跳转到相应用户级中断处理程序。
在至少一项实施例中,中断邮箱技术包括每个内核的邮箱根寄存器(即MRR)。根据邮箱表(例如,邮箱表520或邮箱表522)的管理,MRR会受到管理,并可能需要通过操作系统来启动和关闭。MRR无法通过以用户模式运行的常规指令进行访问。在系统300的至少一项实施例中,邮箱表520是所有线程的总体结构,因此MRR无需启动或关闭。在至少一项实施例中,邮箱表520存储在共享存储空间中。邮箱表520包括指示如何定位特定接收者的邮箱的状态信息。在邮箱表的至少一项实施例中,各个条目将域ID和接收者ID与邮箱描述符关联。在系统300的至少一项实施例中,邮箱表和邮箱在无法以用户模式指令直接访问的地址空间中进行分配,即只有特权指令、微代码或硬件可直接访问邮箱表和邮箱。
在系统300的至少一项实施例中,邮箱表520采用分级集合的结构。所述状态被组合成一个主根表(域邮箱指针表,即DMPT),其将域标识符与指向其他辅助表格,即接收者邮箱指针表(RMPT)的字段关联。接收者邮箱指针表将接收者标识符与邮箱描述符关联,所述邮箱描述符是用于定位接收者邮箱的信息。示例性邮箱描述符包括一个或多个邮箱指针、所分配的大小,以及邮箱中应记录下一待处理用户级中断的位置。在系统300的至少一项实施例中,邮箱表被组合成状态信息的平表。条目按照域ID和接收者ID编制索引,并包含邮箱标识符。
当内核接收到不可送达中断时,硬件(或微代码)将访问相应邮箱根寄存器以读取指向邮箱表的指针,而非对操作系统引发软中断。随后,硬件将基于目标接收者的域ID和接收者ID来从邮箱表访问邮箱描述符。然后,使用所述邮箱描述符来记录接收者邮箱中的不可送达用户级中断。
在系统300的至少一项实施例中,操作系统对邮箱表和邮箱根寄存器进行配置。如果邮箱表是分层结构,那么在操作系统初始化时间上,将分配并初始化域邮箱指针表。如果需要额外的域,那么随后可重新设置域邮箱指针表的大小。每次创建新的域时,都会分配并初始化接收者邮箱指针表。如果接收者邮箱指针表是平表,则将在操作系统初始化时间上分配并初始化所述接收者邮箱指针表。如果需要额外的域-接收者对,那么随后可重新设置接收者邮箱指针表的大小。在系统300的至少一项实施例中,当应用程序线程加入某个域并从操作系统接收到接收者ID时,操作系统也将创建邮箱缓冲区和邮箱表。操作系统会将接收者存储空间中的一定存储空间分配给对应于接收者应用程序线程的邮箱缓冲区,并向邮箱表添加相应条目,以便硬件随后能够定位所述邮箱缓冲区。
示例性邮箱作为位矢量或队列进行实施,但也可使用其他合适的结构。在作为位矢量实施时,邮箱位矢量的各个位用以指示是否存在针对特定接收者应用程序线程而待处理的特定类型的用户级中断。邮箱不会对接收者所具有的每种类型的待处理用户级中断的数目进行编码。位矢量编码具有紧凑性,可直接记录在邮箱表中相应条目的邮箱描述符字段中,且可类似于本地APIC UIRR。当邮箱作为队列实施时,邮箱的各个条目会描述不可送达用户级中断类型的一个特定实例。队列实施所用的空间大于位矢量实施,但是能够记录用户级中断的记录顺序以及每种类型的数量。邮箱描述符包含指向邮箱缓冲区和邮箱缓冲区大小的指针。在至少一项实施例中,邮箱描述符包括指向邮箱缓冲区中的下一自由条目的指针。
在系统300的至少一项实施例中,当用户级中断无法传送时,系统300将使用域ID和接收者ID来针对不可送达中断的目标应用程序线程来对邮箱条目编制索引。如果使用的是位矢量格式的邮箱,那么将在位矢量中设置对应于中断矢量号的相应位。如果使用的是队列格式的邮箱,那么中断以FIFO方式排队。在系统300的至少一项实施例中,不可送达中断可使用其他合适的技术来排队,例如按优先级顺序形成延迟中断的队列。
在对邮箱使用队列格式的情况下,在系统(例如,通过硬件或微代码)试图将不可传送用户级中断条目添加到已满邮箱时,邮箱会发生溢流。处理溢流的示例性技术包括对操作系统引发软中断,且通知操作系统已发生溢流。作为响应,操作系统可为邮箱分配更多空间。另一项示例性技术包括忽略新的不可送达中断。在至少一项实施例中,系统300通过覆盖已记录在邮箱中的中断来忽略该中断。也可使用处理邮箱溢流的其他合适技术。在系统300的至少一项实施例中,系统300所用的邮箱溢流技术可由操作系统进行配置,方法是,例如,使用控制位来在可能的邮箱溢流技术中进行选择。
当操作系统将应用程序线程切换到要执行的程序流时,操作系统将清空与该特定应用程序线程关联的邮箱。如果邮箱采用位矢量格式,则在执行应用程序线程之前,但在恢复所述应用程序线程的状态之后,操作系统将在本地APIC的UIRR与接收者应用程序线程的邮箱位矢量之间执行逻辑OR运算。随后,本地APIC硬件将单独传送所消耗的中断,就好像所有这些中断是同时接收的一样。如果邮箱采用队列格式,那么在开始执行应用程序线程之前,但在恢复所述应用程序线程的状态之后,操作系统会立即直接传送记录在邮箱队列中的中断(例如,通过跳转至相应处理程序)。相应的本地APIC UIRR和UISR也会进行更新以匹配正在处理的待处理用户级中断。
参阅图3,在系统300的至少一项实施例中,为了支持由装置生成的用户级中断,对I/O APIC 310中的IRT表进行扩展以包括每个表条目的中断域标识符。中断域标识符只在相应条目的DM字段被设置成预定用户级中断值时使用。当装置(例如装置312)生成中断时,IRT基于IRT字段,例如DM字段、“目标”字段或表格条目中映射到中断线的其他合适字段,提供中断消息。如果DM字段被设置成预定用户级中断值,那么中断域标识符包括在中断消息中。在生成用户级中断消息后,将以类似于IPI消息的方式对所述用户级中断消息进行路由、接受和处理。
在系统300的至少一项实施例中,并未对I/O APIC中的IRT表进行扩展,而是在中断消息从装置312到内核302和304的路径上包括了额外的硬件。所述额外的硬件对计划作为用户级中断处理(通过额外的硬件或微代码预先注册为用户级中断)的装置中断进行检测,且执行装置中断与用户级中断之间的映射(例如,I/O存储管理单元)。
当装置312所生成的用户级中断无法传送到相应的目标接收者时,与延迟用户级IPI的本地APIC不同,I/O APIC 310不会执行延迟用户级中断的处理程序。相反,I/O APIC 310将DM字段设置成预定值(该预定值与用于指示用户级中断消息的预定值不同)来表示仲裁中断,尽管所述中断是用户级的。在仲裁中断传送模式中,I/O APIC 310将广播队列消息,以向本地APIC 306和本地APIC 308询问在相应内核上运行的当前应用程序线程的优先级。I/O APIC 310从本地APIC 306和本地APIC 308接收回复消息,并选择具有最低优先级应用程序线程的内核作为中断的目标。I/OAPIC 310对“目标”字段进行设置以指示对应于所选内核的本地APIC,且原始接收者标识符包括在中断消息有效载荷中。随后,I/O APIC 310将广播中断消息。所选内核的本地APIC接收中断消息,并确定中断消息的DM字段是否被设置成其他预定值。本地APIC从有效载荷中获取中断域标识符和接收者标识符。本地APIC通过预定邮箱处理程序对内核触发用户级中断,且调用微代码来以与处理延迟IPI相同的方式处理延迟装置中断。
在至少一项实施例中,系统300无需一直处理不可送达中断。相反,系统300可经配置以生成不可送达中断的通知,或忽略不可送达中断。每个APIC(例如,APIC 306、本地APIC 308和I/O APIC 310)包括传送失败通知模式字段,用以指示在用户级中断无法传送到一个或多个目标接收者时是否应生成通知。例如,可使用两位字段来对表1中描述的三种可能状态进行编码。
表1:示例性传送失败通知模式字段的可能状态
状态所有只在能够明确确定用户级中断的所有目标接收者时使用。例如,如下所述,当用一个位来实施接收者群组字段,且没有其他机制来确定用户级中断的所有目标接收者时,无法明确确定所有目标接收者。应注意,可能存在更为复杂的实施方式。例如,如果传送失败通知模式字段较大,也可能存在这样的实施方式,即允许指定需要不可送达用户级中断的通知的一组必需接收者。
再次参阅图3,在系统300的至少一项实施例中,本地APIC 306、本地APIC 308和/或I/O APIC 310对用户级中断的一个或多个接收者进行配置。每个APIC包括接收者群组字段,用以指示用户级中断的目标接收者。该字段可只使用一个位来实施,从而确定是只存在一个接收者(在单独字段中编码,例如在“目标”字段中编码)还是与发送者的域关联的所有线程均为接收者(即广播)。更为复杂的实施方式中包括更大的字段,其中接收者群组具有各种位编码,所述接收者群组可以是与发送者的域关联的所有线程的子集(即多播)。
在系统300的至少一项实施例中,接收者群组字段和/或传送失败通知模式字段均作为UICR寄存器的一部分包括在其中。但是,在其他实施例中,接收者群组和/或传送失败通知模式信息存储在单独的寄存器中。在系统300的至少一项实施例中,这些字段中的一个或多个字段是UICR寄存器的一部分,且每当应用程序线程发送用户级中断时都要对这些字段进行设置。字段的频繁更改可实质上增加发送用户级中断过程中的开销,从而影响性能。在系统300的至少一项实施例中,这些字段中的一个或多个字段在一个或多个单独寄存器中实施,且已经过预配置。在系统300的至少一项实施例中,这些字段中的一个或多个字段的默认值存储在一个或多个单独寄存器中。这样,如果UICR中的值与默认值不同,则发送者只需设置这些值即可。如果这些字段包含在单独寄存器中,则可使用UICR寄存器的任何更新机制来更新这些字段(例如,通过MMIO或通过MSR)。
在系统300的至少一项实施例中,用户级中断消息包括传送失败通知状态字段和接收者群组字段。传送失败通知状态字段用以指示用户级中断的哪个目标接收者未接收到所述用户级中断。该字段在系统经配置以针对一个以上目标接收者的传送失败(例如,如上所述,所有传送失败通知模式)而生成通知时使用。在系统300的至少一项实施例中,传送失败通知状态字段单独作为寄存器实施,或可作为现有状态寄存器的一部分。在系统300的至少一项实施例中,为了通过“所有”通知模式来支持多播和广播机制,通过发送ACK回复的APIC的接收者标识符来对ACK回复进行扩展。
在系统300的至少一项实施例中,本地APIC 306、本地APIC 308和/或I/O APIC 310经配置以通过单播、多播和广播技术来分发用户级中断消息。可实施这些技术,从而以与表2中所述操作一致的方式进行操作。应注意,用户级中断消息可使用所属领域中已知的消息分发技术,或者可从网络中的任何点直接或间接到达接收者的其他合适分发媒体来进行分发。
表2:与用户级中断机制的各种配置关联的操作
在系统300的至少一项实施例中,在系统300上执行的软件包括至少一个系统调用,以支持用户级中断。表3包括用于支持用户级中断的五个示例性系统调用。为了配置一组应用程序线程和/或装置来交换用户级中断,系统会使用CreateDomain()调用来创建中断域。这些应用程序线程和/或装置通过Subscribe()调用来加入中断域,并通过RegisterHandler()来注册用户级中断处理程序。用户级中断通过针对UICR的存储操作来发送。处理程序通过UnregisterHandler()来注销。应用程序线程和装置(例如,通过装置驱动程序)通过Unsubscribe()调用来离开中断域。
表3:用户级中断应用程序编程接口
尽管大体上假定了电路和物理结构,但所公认的是,在现代半导体设计和装配中,物理结构和电路可实施于计算机可读描述形式中,所述计算机可读描述形式适用于后续的设计、测试或装配阶段。在示例性配置中作为离散部件的结构和功能可作为组合式结构或部件实施。如本文中所述,且如所附权利要求书所定义的那样,预期本发明包括各种电路、电路系统、相关方法,以及此类电路、系统和方法的计算机可读媒体编码。本文中所使用的术语“计算机可读媒体”至少包括磁盘、磁带或其他磁学、光学、半导体装置(例如,闪存卡、ROM)。
本发明的说明书是说明性的,其目的不在于限制在所附权利要求书中定义的本发明的范围。例如,尽管本文是在一项包括两个内核的实施例中描述本发明,但所属领域的一般技术人员应了解,可与额外的内核或其他处理单元来使用本文中的教示。在不背离所附权利要求书中定义的本发明的范围和精神的前提下,可基于本文中的说明,对本文所揭示的各项实施例进行变化和修改。
Claims (13)
1.一种用于多核系统中的中断处理的方法,其包括:
针对所述多核系统中多个处理器内核中的第一处理器内核,当在所述第一处理器内核上执行的应用程序线程的中断域以及在所述第一处理器内核上执行的所述应用程序线程的接收者标识符与用户级中断消息中的相应字段匹配时,接受所述用户级中断消息所指示的用户级中断;以及
当所述用户级中断的优先级高于所接受的其他中断、且高于在所述处理器内核上执行的应用程序线程时,对所述用户级中断进行处理。
2.根据权利要求1所述的方法,其中所述处理包括:
更改用户级中断服务寄存器的状态;以及
执行用户级中断例程,其中所述执行包括基于所述用户级中断消息中的矢量号以及用户级中断描述符表寄存器中的内容,调用用户级中断处理程序;以及
从所述用户级中断处理程序返回程序流,
其中用户级中断的优先级低于操作系统中断,以及
其中对所述用户级中断进行的处理不会调用操作系统中断。
3.根据权利要求1所述的方法,其中与所述第一处理器内核关联的本地中断控制器从与所述多个处理器内核中的第二处理器内核关联的专用本地中断控制器与输入/输出中断控制器中的至少一者,接收所述用户级中断消息。
4.根据权利要求1所述的方法,其进一步包括:
写入对应于所述多个处理器内核中的第二处理器内核的用户级中断控制寄存器中,从而生成所述用户级中断,
其中写入所述用户级中断控制寄存器中包括:
配置所述用户级中断控制寄存器的目标字段;以及
配置所述用户级中断控制寄存器的传送模式字段。
5.根据权利要求1所述的方法,其中所述用户级中断由在所述多个处理器内核中的第二处理器内核上执行的应用程序线程生成,且其进一步包括:
检测所述用户级中断的不可送达状态,且基于所述状态对所述第二处理器内核触发中断。
6.根据权利要求1所述的方法,其进一步包括:
至少部分基于与所述用户级中断关联的中断域标识符和所述中断接收者标识符,以及关于用户级中断不可送达到在所述第一处理器内核上执行的接收者应用程序线程的指示,在邮箱中将所述用户级中断记录为不可送达的用户级中断;以及
在将接收者应用程序线程状态存储到所述第一处理器内核之后、且在运行所述接收者应用程序线程之前,处理所述邮箱中的条目。
7.根据权利要求1所述的方法,其进一步包括:
根据从多个用户级中断传送配置中选出的用户级中断传送配置,将所述用户级中断消息传送到一个或多个接收者,其中所述一个或多个接收者对应于在所述多个处理器内核中的一个或多个处理器内核上执行的一个或多个应用程序线程,
其中所述多个用户级中断传送配置包括单播传送、多播传送到对应于所述多个处理器内核中的多个处理器内核的多个接收者,以及广播传送到所述多个处理器内核中的剩余处理器内核。
8.一种用于多核系统中的中断处理的设备,其包括:
本地中断控制器,其对应于所述多核系统中多个处理器内核中的第一处理器内核,
其中所述本地中断控制器包括:
中断域标识符状态元件,其可操作以存储在所述第一处理器内核上执行的应用程序线程的中断域的指示符;以及
接收者标识符状态元件,其可操作以存储在所述第一处理器内核上执行的应用程序线程的指示符,
其中所述本地中断控制器可操作以基于所述中断域标识符状态元件和所述接收者标识符状态元件的内容,至少部分处理用户级中断,以及
其中所述本地中断控制器可操作以基于所述中断域标识符状态元件和所述接收者标识符状态元件的内容,生成中断消息。
9.根据权利要求8所述的设备,其中所述本地中断控制器进一步包括:
用户级中断控制状态元件,其指示所述本地中断控制器的用户级中断配置;
用户级中断服务状态元件,其指示所确认的用户级中断;以及
用户级中断请求状态元件,其指示用户级中断待处理应答。
10.根据权利要求8所述的设备,其进一步包括:
至少一个用户级中断处理程序,
用户级中断描述符表,
用户级中断描述符表寄存器,
其中根据所述用户级中断描述符表寄存器的内容,可从所述用户级中断描述符表访问所述至少一个用户级中断处理程序。
11.根据权利要求8所述的设备,
其中所述本地中断控制器可操作以从另一专用本地中断控制器与包括中断重定向表的输入/输出中断控制器中的至少一者,接收用户级中断,其中所述中断重定向表包括中断域标识符,
其中所述本地中断控制器可操作以提供关于所述专用本地中断控制器是否接受所接收到的用户级中断的指示符,以及
其中所述本地中断控制器可操作以在所接收到的中断消息中的传送模式字段指示了用户级中断代码时,将所接收到的中断消息中的目标指示符与接收者标识符存储单元的内容进行比较,且将所接收到的中断消息中的中断域标识符与中断域标识符存储单元的内容进行比较。
12.根据权利要求8所述的设备,其进一步包括:
邮箱根存储元件,其对应于所述第一处理器内核;以及
邮箱存储结构,其可操作以存储不可送达的用户级中断消息,且所述第一处理器内核可根据所述邮箱根存储元件的内容、中断域标识符和中断接收者标识符来访问所述邮箱存储结构,
其中所述第一处理器内核可操作以基于存储在可根据所述邮箱根存储元件访问的邮箱表中的相应邮箱描述符,在所述邮箱存储结构中存储不可送达的用户级中断消息。
13.根据权利要求12所述的设备,其进一步包括:
邮箱表,其可根据所述邮箱根存储元件的内容访问,
其中所述邮箱表位于由所述多个处理器内核共享的存储空间中,
其中所述邮箱表包括各种表的分级集合,这些表包括根表和至少一个接收者邮箱指针表,其中所述根表将中断域标识符与接收者邮箱指针表关联。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23398309P | 2009-08-14 | 2009-08-14 | |
US61/233,983 | 2009-08-14 | ||
US12/633,007 US8255603B2 (en) | 2009-08-14 | 2009-12-08 | User-level interrupt mechanism for multi-core architectures |
US12/633,034 | 2009-12-08 | ||
US12/633,007 | 2009-12-08 | ||
US12/633,034 US8285904B2 (en) | 2009-08-14 | 2009-12-08 | Flexible notification mechanism for user-level interrupts |
US12/633,032 US8356130B2 (en) | 2009-08-14 | 2009-12-08 | Mechanism for recording undeliverable user-level interrupts |
US12/633,032 | 2009-12-08 | ||
PCT/US2010/044528 WO2011019578A1 (en) | 2009-08-14 | 2010-08-05 | User-level interrupt mechanism for multi-core architectures |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102483705A CN102483705A (zh) | 2012-05-30 |
CN102483705B true CN102483705B (zh) | 2014-12-17 |
Family
ID=43589266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080036115.6A Active CN102483705B (zh) | 2009-08-14 | 2010-08-05 | 多核结构的用户级中断机制 |
Country Status (7)
Country | Link |
---|---|
US (3) | US8356130B2 (zh) |
EP (1) | EP2465032B1 (zh) |
JP (1) | JP5646628B2 (zh) |
KR (1) | KR101651246B1 (zh) |
CN (1) | CN102483705B (zh) |
IN (1) | IN2012DN02104A (zh) |
WO (1) | WO2011019578A1 (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009134217A1 (en) * | 2008-04-28 | 2009-11-05 | Hewlett-Packard Development Company, L.P. | Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared-memory multi-processor systems |
US8356130B2 (en) * | 2009-08-14 | 2013-01-15 | Advanced Micro Devices, Inc. | Mechanism for recording undeliverable user-level interrupts |
US8566492B2 (en) * | 2009-12-31 | 2013-10-22 | Intel Corporation | Posting interrupts to virtual processors |
US9652365B2 (en) * | 2010-08-24 | 2017-05-16 | Red Hat, Inc. | Fault configuration using a registered list of controllers |
KR101717494B1 (ko) * | 2010-10-08 | 2017-03-28 | 삼성전자주식회사 | 인터럽트 처리 장치 및 방법 |
CN103582877B (zh) | 2010-12-15 | 2015-09-23 | 超威半导体公司 | 计算机系统中断处理 |
US20120158631A1 (en) * | 2010-12-15 | 2012-06-21 | Scientific Conservation, Inc. | Analyzing inputs to an artificial neural network |
WO2013057769A1 (ja) * | 2011-10-20 | 2013-04-25 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法および制御プログラム |
CN102520916B (zh) * | 2011-11-28 | 2015-02-11 | 深圳中微电科技有限公司 | 在mvp处理器中消除纹理延迟和寄存器管理的方法 |
US9552313B2 (en) * | 2011-12-28 | 2017-01-24 | Intel Corporation | Delivering real time interrupts with an advanced programmable interrupt controller |
KR101331957B1 (ko) * | 2012-01-11 | 2013-11-21 | 엘아이지넥스원 주식회사 | 범용 운영체제의 실시간성 쓰레드 처리를 위한 커널 구성 방법 |
US9785133B2 (en) * | 2012-02-10 | 2017-10-10 | Fisher-Rosemount Systems, Inc. | Methods for collaboratively assisting a control room operator |
US8849731B2 (en) * | 2012-02-23 | 2014-09-30 | Microsoft Corporation | Content pre-fetching for computing devices |
US9043522B2 (en) | 2012-10-17 | 2015-05-26 | Arm Limited | Handling interrupts in a multi-processor system |
US9208113B2 (en) | 2013-01-15 | 2015-12-08 | Apple Inc. | Deferred inter-processor interrupts |
US9495311B1 (en) * | 2013-12-17 | 2016-11-15 | Google Inc. | Red zone avoidance for user mode interrupts |
US9594704B1 (en) | 2013-12-17 | 2017-03-14 | Google Inc. | User mode interrupts |
US9674141B2 (en) * | 2013-12-27 | 2017-06-06 | Intel Corporation | Techniques for implementing a secure mailbox in resource-constrained embedded systems |
US9563588B1 (en) | 2014-01-29 | 2017-02-07 | Google Inc. | OS bypass inter-processor interrupt delivery mechanism |
US9542254B2 (en) | 2014-07-30 | 2017-01-10 | International Business Machines Corporation | Application-level signal handling and application-level memory protection |
US9665509B2 (en) * | 2014-08-20 | 2017-05-30 | Xilinx, Inc. | Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system |
EP3198460B1 (en) | 2014-09-26 | 2022-08-17 | Intel Corporation | Apparatus and method for configuring sets of interrupts |
US9910699B2 (en) | 2014-10-28 | 2018-03-06 | Intel Corporation | Virtual processor direct interrupt delivery mechanism |
US9928094B2 (en) * | 2014-11-25 | 2018-03-27 | Microsoft Technology Licensing, Llc | Hardware accelerated virtual context switching |
US9921984B2 (en) * | 2014-12-23 | 2018-03-20 | Intel Corporation | Delivering interrupts to user-level applications |
US10002102B2 (en) * | 2015-03-13 | 2018-06-19 | Microchip Technology Incorporated | Low-pin microcontroller device with multiple independent microcontrollers |
US10002103B2 (en) * | 2015-03-13 | 2018-06-19 | Microchip Technology Incorporated | Low-pin microcontroller device with multiple independent microcontrollers |
US10922252B2 (en) * | 2015-06-22 | 2021-02-16 | Qualcomm Incorporated | Extended message signaled interrupts (MSI) message data |
CN105094976A (zh) * | 2015-10-09 | 2015-11-25 | 天津国芯科技有限公司 | 一种中断控制方法和中断控制器 |
CN105808338A (zh) * | 2016-03-17 | 2016-07-27 | 李晓波 | 一种在处理中实现中断响应核可配置的方法及装置 |
CN107800546B (zh) | 2016-08-31 | 2021-03-30 | 华为技术有限公司 | 一种广播消息的管理方法及装置 |
US10496572B1 (en) | 2017-03-06 | 2019-12-03 | Apple Inc. | Intracluster and intercluster interprocessor interrupts including a retract interrupt that causes a previous interrupt to be canceled |
US10467162B2 (en) * | 2017-03-31 | 2019-11-05 | Hewlett Packard Enterprise Development Lp | Interrupt based on a last interrupt request indicator and a work acknowledgement |
US10838760B2 (en) * | 2017-11-29 | 2020-11-17 | Nxp Usa, Inc. | Systems and methods for interrupt distribution |
JP6656485B1 (ja) * | 2018-07-24 | 2020-03-04 | 三菱電機株式会社 | 割込み処理方法、コンピュータシステムおよびプログラム |
TWI680375B (zh) | 2018-08-23 | 2019-12-21 | 慧榮科技股份有限公司 | 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法 |
US11372711B2 (en) | 2019-06-29 | 2022-06-28 | Intel Corporation | Apparatus and method for fault handling of an offload transaction |
US11321144B2 (en) | 2019-06-29 | 2022-05-03 | Intel Corporation | Method and apparatus for efficiently managing offload work between processing units |
US11182208B2 (en) | 2019-06-29 | 2021-11-23 | Intel Corporation | Core-to-core start “offload” instruction(s) |
US11366769B1 (en) * | 2021-02-25 | 2022-06-21 | Microsoft Technology Licensing, Llc | Enabling peripheral device messaging via application portals in processor-based devices |
US20230099517A1 (en) * | 2021-09-30 | 2023-03-30 | Intel Corporation | User-level interprocessor interrupts |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000006084A2 (en) * | 1998-07-31 | 2000-02-10 | Integrated Systems Design Center, Inc. | Integrated hardware and software task control executive |
WO2000036505A1 (en) * | 1998-12-17 | 2000-06-22 | International Business Machines Corporation | Interrupt architecture for a non-uniform memory access (numa) data processing system |
WO2005098624A1 (en) * | 2004-03-31 | 2005-10-20 | Intel Corporation | A method and system to provide user-level multithreading |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05189252A (ja) * | 1992-01-13 | 1993-07-30 | Meidensha Corp | ソフトウェアのイベント処理方法 |
US5909582A (en) | 1996-04-26 | 1999-06-01 | Nec Corporation | Microcomputer having user mode interrupt function and supervisor mode interrupt function |
US6370606B1 (en) * | 1998-11-05 | 2002-04-09 | Compaq Computer Corporation | System and method for simulating hardware interrupts in a multiprocessor computer system |
JP4057769B2 (ja) | 2000-08-31 | 2008-03-05 | 松下電器産業株式会社 | 割り込み管理装置及び割り込み管理方法 |
US7529235B2 (en) * | 2000-12-06 | 2009-05-05 | Franklin Zhigang Zhang | Internet based time distributed message network system and personal mobile access device |
US7392282B2 (en) * | 2001-03-14 | 2008-06-24 | International Business Machines Corporation | Method for ensuring client access to messages from a server |
JP2005190207A (ja) * | 2003-12-25 | 2005-07-14 | Matsushita Electric Ind Co Ltd | 割り込み制御装置、制御方法 |
GB0404696D0 (en) * | 2004-03-02 | 2004-04-07 | Level 5 Networks Ltd | Dual driver interface |
US7080179B1 (en) * | 2004-03-26 | 2006-07-18 | Foundry Networks, Inc. | Multi-level interrupts |
US7689747B2 (en) * | 2005-03-28 | 2010-03-30 | Microsoft Corporation | Systems and methods for an augmented interrupt controller and synthetic interrupt sources |
US7581051B2 (en) * | 2005-05-16 | 2009-08-25 | Microsoft Corporation | Method for delivering interrupts to user mode drivers |
WO2007038606A2 (en) * | 2005-09-26 | 2007-04-05 | John Bruno | High-speed input/output signaling mechanism |
US7493436B2 (en) | 2006-10-26 | 2009-02-17 | International Business Machines Corporation | Interrupt handling using simultaneous multi-threading |
US8689215B2 (en) * | 2006-12-19 | 2014-04-01 | Intel Corporation | Structured exception handling for application-managed thread units |
US7627706B2 (en) * | 2007-09-06 | 2009-12-01 | Intel Corporation | Creation of logical APIC ID with cluster ID and intra-cluster ID |
US8103816B2 (en) | 2008-10-28 | 2012-01-24 | Intel Corporation | Technique for communicating interrupts in a computer system |
US8356130B2 (en) * | 2009-08-14 | 2013-01-15 | Advanced Micro Devices, Inc. | Mechanism for recording undeliverable user-level interrupts |
-
2009
- 2009-12-08 US US12/633,032 patent/US8356130B2/en active Active
- 2009-12-08 US US12/633,034 patent/US8285904B2/en active Active
- 2009-12-08 US US12/633,007 patent/US8255603B2/en active Active
-
2010
- 2010-08-05 KR KR1020127006465A patent/KR101651246B1/ko active IP Right Grant
- 2010-08-05 EP EP10742684.3A patent/EP2465032B1/en active Active
- 2010-08-05 JP JP2012524751A patent/JP5646628B2/ja active Active
- 2010-08-05 WO PCT/US2010/044528 patent/WO2011019578A1/en active Application Filing
- 2010-08-05 CN CN201080036115.6A patent/CN102483705B/zh active Active
- 2010-08-05 IN IN2104DEN2012 patent/IN2012DN02104A/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000006084A2 (en) * | 1998-07-31 | 2000-02-10 | Integrated Systems Design Center, Inc. | Integrated hardware and software task control executive |
WO2000036505A1 (en) * | 1998-12-17 | 2000-06-22 | International Business Machines Corporation | Interrupt architecture for a non-uniform memory access (numa) data processing system |
WO2005098624A1 (en) * | 2004-03-31 | 2005-10-20 | Intel Corporation | A method and system to provide user-level multithreading |
Also Published As
Publication number | Publication date |
---|---|
EP2465032A1 (en) | 2012-06-20 |
US8285904B2 (en) | 2012-10-09 |
KR101651246B1 (ko) | 2016-09-05 |
CN102483705A (zh) | 2012-05-30 |
US8356130B2 (en) | 2013-01-15 |
US20110040914A1 (en) | 2011-02-17 |
US20110040913A1 (en) | 2011-02-17 |
KR20120062768A (ko) | 2012-06-14 |
JP5646628B2 (ja) | 2014-12-24 |
US8255603B2 (en) | 2012-08-28 |
US20110040915A1 (en) | 2011-02-17 |
IN2012DN02104A (zh) | 2015-08-21 |
WO2011019578A1 (en) | 2011-02-17 |
JP2013502004A (ja) | 2013-01-17 |
EP2465032B1 (en) | 2020-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102483705B (zh) | 多核结构的用户级中断机制 | |
CN101365999B (zh) | 发送完成事件批处理 | |
US7260663B2 (en) | System and method for presenting interrupts | |
US20090150892A1 (en) | Interrupt controller for invoking service routines with associated priorities | |
US8635388B2 (en) | Method and system for an OS virtualization-aware network interface card | |
US5428781A (en) | Distributed mechanism for the fast scheduling of shared objects and apparatus | |
US9798595B2 (en) | Transparent user mode scheduling on traditional threading systems | |
CN101149701B (zh) | 用于多线程系统中重定向中断的方法和设备 | |
CN109376000B (zh) | 用于risc-v架构的快速中断控制系统及方法 | |
CN101221540B (zh) | 用于减少存储器访问时延的方法和设备以及数据处理系统 | |
US20090271549A1 (en) | Interrupt handling using simultaneous multi-threading | |
CN1330782A (zh) | 非均匀存储器存取(numa)数据处理系统的中断体系结构 | |
CN102541630B (zh) | 计算机处理器中线程间数据通信的方法和系统 | |
CN103761145A (zh) | 用于各个处理器的辅助中断虚拟化的访客中断控制器 | |
US20070198759A1 (en) | Advanced interrupt processor in embedded systems | |
US7640549B2 (en) | System and method for efficiently exchanging data among processes | |
CN104579865A (zh) | 对于飞行器的数据通信网络 | |
US9069572B2 (en) | Replacement of inbox driver with third party driver | |
CN101421791A (zh) | 用于主机和外围设备之间通信的队列深度管理 | |
CN114461371B (zh) | 一种服务器系统中断优化方法、装置、设备及介质 | |
WO2019169582A1 (zh) | 处理中断的方法和装置 | |
CN117407054A (zh) | 中断处理方法、电子设备和存储介质 | |
CN111722916A (zh) | 一种通过映射表处理msi-x中断的方法 | |
CN117873665A (zh) | 任务处理方法、芯片、电子设备及可读存储介质 | |
CN117435339A (zh) | 一种异步信息处理系统、方法、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |