CN116157777B - 能扩展的中断 - Google Patents
能扩展的中断 Download PDFInfo
- Publication number
- CN116157777B CN116157777B CN202180062431.9A CN202180062431A CN116157777B CN 116157777 B CN116157777 B CN 116157777B CN 202180062431 A CN202180062431 A CN 202180062431A CN 116157777 B CN116157777 B CN 116157777B
- Authority
- CN
- China
- Prior art keywords
- interrupt
- cluster
- processor
- controllers
- controller
- 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
- 230000004044 response Effects 0.000 claims abstract description 141
- 101100465000 Mus musculus Prag1 gene Proteins 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims description 21
- 239000004065 semiconductor Substances 0.000 claims description 9
- 239000000758 substrate Substances 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 abstract description 12
- 230000002093 peripheral effect Effects 0.000 description 37
- 238000003860 storage Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 22
- 230000008901 benefit Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 230000001419 dependent effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000007704 transition Effects 0.000 description 9
- 238000007667 floating Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000036541 health Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012806 monitoring device Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 208000033748 Device issues Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 230000002123 temporal effect Effects 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal 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)
- Bus Control (AREA)
Abstract
在一个实施方案中,一种用于***的中断递送机构包括:中断控制器;以及多个集群中断控制器,该多个集群中断控制器耦接到相应多个处理器。该中断控制器可将中断请求串行地传输到相应集群中断控制器,这些集群中断控制器可基于尝试将该中断递送到该集群中断控制器所耦接到的处理器来确认(Ack)或否定确认(Nack)该中断。在软迭代中,该集群中断控制器可尝试将该中断递送到通电的处理器,而不尝试给断电的处理器通电。如果该软迭代未产生来自该多个集群中断控制器中的一个集群中断控制器的Ack响应,则可执行硬迭代,在该硬迭代中,可给这些断电的处理器通电。
Description
背景技术
本公开总体上涉及能扩展的中断。
技术领域
本文所述的实施方案涉及计算***中的中断,并且更具体地,涉及将中断分发到处理器以用于服务。
相关技术描述
计算***通常包括用作中央处理单元(CPU)的一个或多个处理器以及实现各种硬件功能的一个或多个***设备。CPU执行控制各种***设备的操作的控制软件(例如,操作***)。CPU还可执行在***中提供用户功能性的应用程序。除此之外,CPU可执行与***设备交互并且代表***设备执行各种服务的软件。在***中不用作CPU的其他处理器(例如,集成到一些***设备中的处理器)也可为***设备执行此类软件。
***设备可使用中断致使处理器代表它们来执行软件。一般来讲,***设备通常通过向控制去往处理器的中断的中断控制器断言中断信号来发布中断。中断致使处理器停止执行其当前软件任务,保存任务的状态,使得该任务稍后可恢复。处理器可加载与中断相关的状态,并且开始执行中断服务例程。中断服务例程可以是用于***设备的驱动程序代码,或者可根据需要将执行转移到驱动程序代码。一般来讲,驱动程序代码是针对***设备提供以由处理器执行来控制和/或配置***设备的代码。
从中断的断言到中断的服务的时延对于性能甚至***中的功能性来说可能是重要的。除此之外,高效地确定哪个CPU将服务于中断并且在对***其余部分造成最小扰动的情况下递送中断对于性能和维持***中的低功耗两者来说可能是重要的。随着***中处理器数量的增加,高效且有效地扩展中断递送甚至更为重要。
发明内容
根据本公开的一方面,提供了一种递送中断的***,包括:多个集群中断控制器,其中所述多个集群中断控制器中的相应集群中断控制器与多个处理器集群中的相应处理器集群相关联,并且其中,所述多个处理器集群中的给定处理器集群包括多个处理器;以及中断控制器,所述中断控制器耦接到所述多个集群中断控制器,其中所述中断控制器被配置为接收来自第一中断源的中断,并且基于所述中断被配置为:对所述多个集群中断控制器执行第一迭代以尝试递送所述中断;基于在所述第一迭代中来自所述多个集群中断控制器的否定确认(Nack)响应,对所述多个集群中断控制器执行第二迭代;其中在所述第一迭代中,所述多个集群中断控制器中的给定集群中断控制器被配置为尝试将所述中断递送到所述相应处理器集群中的所述多个处理器中的通电的子集中的各个处理器,而不尝试将所述中断递送到所述相应处理器集群中的所述相应多个处理器中未包括在所述子集中的处理器;以及其中在所述第二迭代中,所述给定集群中断控制器被配置为给所述多个处理器中的断电的所述处理器通电并且尝试将所述中断递送到所述多个处理器。
根据本公开的另一方面,提供了一种处理器,包括:重排序缓冲器,所述重排序缓冲器被配置为跟踪与所述处理器获取并且所述处理器未退出的指令相对应的多个指令操作;加载/存储单元,所述加载/存储单元被配置为执行加载/存储操作;以及控制电路,所述控制电路耦接到所述重排序缓冲器和所述加载/存储单元,其中,所述控制电路被配置为基于确定所述重排序缓冲器将要将指令操作退出到可中断点并且所述加载/存储单元将在指定时间段内完成到所述可中断点的加载/存储操作,生成对由所述处理器接收的中断请求的确认(Ack)响应,并且其中,所述控制电路被配置为基于确定所述重排序缓冲器和所述加载/存储单元中的至少一者将不在所述指定时间段内到达所述可中断点,生成对所述中断请求的否定确认(Nack)响应。
根据本公开的另一方面,提供了一种递送中断的方法,包括:在中断控制器中接收来自第一中断源的中断;执行串行地尝试将所述中断递送到多个集群中断控制器的第一迭代,其中所述多个集群中断控制器中的相应集群中断控制器与多个处理器集群中的相应处理器集群相关联,并且其中,所述多个处理器集群中的给定处理器集群包括多个处理器,其中在所述第一迭代中,所述多个集群中断控制器中的给定集群中断控制器被配置为尝试将所述中断递送到所述相应处理器集群中的所述多个处理器中的通电的子集中的各个处理器,而不尝试将所述中断递送到所述相应处理器集群中的所述多个处理器中未包括在所述子集中的处理器;以及基于在所述第一迭代中来自所述多个集群中断控制器的非确认(Nack)响应,由所述中断控制器对所述多个集群中断控制器执行第二迭代,其中在所述第二迭代中,所述给定集群中断控制器被配置为给所述相应处理器集群中的所述多个处理器中的断电的处理器通电,并且尝试将所述中断递送到所述多个处理器。
附图说明
以下详细描述参考附图,现在对这些附图进行简要描述。
图1是包括中断控制器和对应于多个处理器集群的多个集群中断控制器的***的一个实施方案的框图。
图2是可实现图1所示的***的一个实施方案的片上***(SOC)的一个实施方案的框图。
图3是可在中断控制器的一个实施方案中实现的状态机的一个实施方案的框图。
图4是例示中断控制器执行中断递送的软或硬迭代的一个实施方案的操作的流程图。
图5是例示集群中断控制器的一个实施方案的操作的流程图。
图6是处理器的一个实施方案的框图。
图7是重排序缓冲器的一个实施方案的框图。
图8是例示图6所示的中断确认控制电路的一个实施方案的操作的流程图。
图9是可实现图1所示的***的一个实施方案的多个SOC的框图。
图10是例示图9所示的一级中断控制器的一个实施方案的操作的流程图。
图11是例示图9所示的二级中断控制器的一个实施方案的操作的流程图。
图12是例示用于处理中断的方法的一个实施方案的流程图。
图13是多种上下文中所使用的***的一个实施方案的框图。
图14是计算机可访问存储介质的框图。
尽管本公开中所述的实施方案可受各种修改形式和另选形式的影响,但其具体实施方案在附图中以举例的方式示出并将在本文中详细描述。然而,应当理解,附图和对其的具体实施方式不旨在将实施方案限制为所公开的特定形式,而相反,本发明旨在涵盖落入所附权利要求书的实质和范围内的所有修改、等同物和另选方案。本文所使用的标题仅用于组织目的,并不旨在用于限制说明书的范围。
具体实施方式
现在转向图1,示出了***10的包括耦接到多个集群中断控制器24A-24n的中断控制器20的部分的一个实施方案的框图。多个集群中断控制器24A-24n中的每个集群中断控制器耦接到相应多个处理器30(例如,处理器集群)。中断控制器20耦接到多个中断源32。
当中断控制器20已接收到至少一个中断时,中断控制器20可被配置为尝试递送中断(例如,递送到处理器30以通过执行软件以记录中断以便中断服务例程进一步服务和/或经由中断服务例程提供中断所请求的处理来服务于中断)。在***10中,中断控制器20可尝试通过集群中断控制器24A-24n递送中断。每个集群控制器24A-24n与处理器集群相关联,并且可尝试将中断递送到形成集群的相应多个处理器中的处理器30。
更具体地,中断控制器20可被配置为尝试通过集群中断控制器24A-24n在多次迭代中递送中断。中断控制器20和每个中断控制器24A-24n之间的接口可包括请求/确认(Ack)/否定确认(Nack)结构。例如,在例示的实施方案中,请求可通过以下迭代来标识:软、硬和强制。初始迭代(“软”迭代)可通过断言软请求来发信号通知。下一迭代(“硬”迭代)可通过断言硬请求来发信号通知。最后迭代(“强制”迭代)可通过断言强制请求来发信号通知。给定集群中断控制器24A-24n可用Ack响应(指示与给定集群中断控制器24A-24n相关联的处理器集群中的处理器30已接受中断并且将处理至少一个中断)或Nack响应(指示处理器集群中的处理器30已拒绝中断)来对软迭代和硬迭代作出响应。强制迭代可不使用Ack/Nack响应,而是可继续请求中断,直到中断得到服务,如下文将更详细讨论。
集群中断控制器24A-24n也可与处理器30一起使用请求/Ack/Nack结构,从而尝试将中断递送到给定处理器30。基于来自集群中断控制器24A-24n的请求,给定处理器30可被配置为确定给定处理器30是否能够在预定时间段内中断当前指令执行。如果给定处理器30能够在该时间段内致力于中断,则给定处理器30可被配置为断言Ack响应。如果给定处理器30不能致力于中断,则给定处理器30可被配置为断言Nack响应。在给定迭代中,集群中断控制器24A-24n可被配置为在至少一个处理器向集群中断控制器24A-24n断言Ack响应的情况下向中断控制器20断言Ack响应,并且可被配置为在处理器30断言Nack响应的情况下断言Nack响应。
在一个实施方案中,使用请求/Ack/Nack结构可提供中断是否正被请求的接收方(例如,集群中断控制器24A-24n或处理器30,这取决于接口)接受的快速指示。例如,在一个实施方案中,该指示相比于超时可更快速。除此之外,在一个实施方案中,集群中断控制器24A-24n和中断控制器20的分层结构可以更可扩展到***10中的更大数量的处理器(例如,多个处理器集群)。
对集群中断控制器24A-24n的迭代可包括尝试通过集群中断控制器24A-24n的至少一个子集、最多所有集群中断控制器24A-24n递送中断。迭代可以任何期望方式进行。例如,在一个实施方案中,中断控制器20可被配置为向相应集群中断控制器24A-24n串行地断言中断请求,该断言由来自集群中断控制器24A-24n中的一个集群中断控制器的Ack响应(以及在一个实施方案中,无附加未决中断)或由来自所有集群中断控制器24A-24n的Nack响应终止。也就是说,中断控制器可选择集群中断控制器24A-24n中的一个集群中断控制器,并且向所选择的集群中断控制器24A-24n断言中断请求(例如,通过断言软或硬请求,这取决于正在执行哪种迭代)。所选择的集群中断控制器24A-24n可用Ack响应作出响应,该Ack响应可终止迭代。另一方面,如果所选择的集群中断控制器24A-24n断言Nack响应,则中断控制器可被配置为选择另一集群中断控制器24A-24n并且可向所选择的集群中断控制器24A-24n断言软或硬请求。选择和断言可继续,直到接收到Ack响应或者集群中断控制器24A-24n中的每个集群中断控制器都已被选择并且断言Nack响应。其他实施方案可以其他方式对集群中断控制器24A-24n执行迭代。例如,中断控制器20可被配置为同时向两个或更多个集群中断控制器24A-24n的子集断言中断请求,从而在子集中的每个集群中断控制器24A-24n提供对中断请求的Nack响应的情况下继续其他子集。如果子集中的多于一个集群中断控制器24A-24n提供Ack响应,则这种具体实施可能导致伪中断,因此响应于中断而执行的代码可被设计成处理伪中断的发生。
初始迭代可以是如上所述的软迭代。在软迭代中,给定集群中断控制器24A-24n可尝试将中断递送到与给定集群中断控制器24A-24n相关联的多个处理器30的子集。该子集可以是通电的处理器30,在这种情况下,给定集群中断控制器24A-24n可不尝试向断电(或休眠)处理器30递送中断。也就是说,断电处理器不包括在集群中断控制器24A-24n尝试向其递送中断的子集中。因此,断电处理器30在软迭代中可保持断电。
基于在软迭代期间来自每个集群中断控制器24A-24n的Nack响应,中断控制器20可执行硬迭代。在硬迭代中,相应集群中断控制器24A-24n可给给定处理器集群中的断电处理器30通电,并且相应中断控制器24A-24n可尝试将中断递送到处理器集群中的每个处理器30。更具体地,在一个实施方案中,如果处理器30被通电以执行硬迭代,则该处理器30可快速地可供用于中断并且可频繁地产生Ack响应。
如果硬迭代以一个或多个中断仍未决终止,或者如果在完成软迭代和硬迭代之前发生超时,则中断控制器可通过断言强制信号来发起强制迭代。在一个实施方案中,可与集群中断控制器24A-24n并行地执行强制迭代,并且可不允许Nack响应。在一个实施方案中,强制迭代可保持在进行中,直到没有中断仍然未决。
给定集群中断控制器24A-24n可尝试以任何期望方式递送中断。例如,给定集群中断控制器24A-24n可向处理器集群中的相应处理器30串行地断言中断请求,该断言由来自相应处理器30中的一个处理器的Ack响应或者由来自给定集群中断控制器24A-24n将尝试向其递送中断的相应处理器30中的每个处理器的Nack响应终止。也就是说,给定集群中断控制器24A-4n可选择相应处理器30中的一个处理器,并且向所选择的处理器30断言中断请求(例如,通过向所选择的处理器30断言请求)。所选择的处理器30可用Ack响应作出响应,该Ack响应可终止尝试。另一方面,如果所选择的处理器30断言Nack响应,则给定集群中断控制器24A-24n可被配置为选择另一处理器30且可向所选择的处理器30断言中断请求。选择和断言可继续,直到接收到Ack响应或者处理器30中的每个处理器都已被选择并且断言Nack响应(在软迭代中不包括断电的处理器)。其他实施方案可同时向多个处理器30或并行地向处理器30断言中断请求,具有如上文所述的伪中断的可能性。给定集群中断控制器24A-24n可基于从处理器30中的一个处理器接收到Ack响应而用Ack响应对中断控制器20作出响应,或者可在处理器30中的每个处理器用Nack响应作出响应的情况下用Nack响应对中断控制器20作出响应。
在一个实施方案中,中断控制器20向集群中断控制器24A-24n断言中断请求的顺序可以是可编程的。更具体地,在一个实施方案中,该顺序可基于中断的源而变化(例如,来自一个中断源32的中断可导致一个顺序,并且来自另一中断源32的中断可导致不同的顺序)。例如,在一个实施方案中,一个集群中的多个处理器30可不同于另一集群中的多个处理器30。一个处理器集群可具有针对性能进行优化但可为较高功率的处理器,而另一处理器集群可具有针对功率效率进行优化的处理器。来自需要相对较少处理的源的中断可倾向于具有功率高效处理器的集群,而来自需要显著处理的源的中断可倾向于具有较高性能处理器的集群。
中断源32可以是被配置为断言中断以便致使处理器30执行中断服务例程的任何硬件电路。例如,在一个实施方案中,各种***部件(***设备)可以是中断源。下文参照图2描述各种***设备的示例。当处理器30接收到中断时,中断与正由处理器30执行的代码异步。一般来讲,处理器30可被配置为通过以下方式来接受中断:停止当前代码的执行,保存处理器上下文以准许在服务于中断之后恢复执行并且分支到预定地址以开始执行中断代码。预定地址处的代码可从中断控制器读取状态以确定哪个中断源32断言中断以及将基于中断执行的对应中断服务例程。代码可将中断服务例程排队以供执行(其可由操作***调度)并且提供中断服务例程所预期的数据。然后,代码可将执行返回至先前执行的代码(例如,处理器上下文可重新加载,并且执行可在中止执行的指令处恢复)。
中断可以任何期望方式从中断源32传输到中断控制器20。例如,可在中断源和中断控制器20之间设置专用中断线路。给定中断源32可在其专用线路上断言信号以将中断传输到中断控制器20。另选地,可使用消息信号中断,其中通过用于***10中的其他通信的互连传输消息。例如,该消息可呈到指定地址的写入的形式。写入数据可以是标识中断的消息。可使用来自一些中断源32的专用线路和来自其他中断源32的消息信号中断的组合。
中断控制器20可接收中断并且将其记录为中断控制器20中的未决中断。来自各种中断源32的中断可由中断控制器20根据由操作***或其他控制代码布置的各种可编程优先级进行优先级排序。
现在转向图2,示出了耦接到存储器12的被实现为片上***(SOC)10的***10的一个实施方案的框图。如名字所暗示的,SOC 10的部件可集成到作为集成电路“芯片”的单个半导体基板上。在一些实施方案中,这些部件可在***中的两个或更多个离散芯片上实施。然而,在本文中将使用SOC 10作为示例。在例示的实施方案中,SOC 10的部件包括多个处理器集群14A-14n、中断控制器20、一个或多个***部件18(更简要地说,“***设备”)、存储器控制器22和通信结构27。部件14A-14n、18、20和22可全部耦接到通信结构27。存储器控制器22在使用期间可耦接到存储器12。在一些实施方案中,可存在多于一个耦接到对应存储器的存储器控制器。存储器地址空间可以任何期望方式跨存储器控制器映射。在例示的实施方案中,处理器集群14A-14n可包括相应多个处理器(P)30和相应集群中断控制器(IC)24A-24n,如图2所示。处理器30可形成SOC 10的中央处理单元(CPU)。在一个实施方案中,一个或多个处理器集群14A-14n可不用作CPU。
在一个实施方案中,***设备18可包括作为中断源32的示例的***设备。因此,一个或多个***设备18可具有到中断控制器20的专用线路以将中断传输到中断控制器20。其他***设备18可使用通过通信结构27传输的消息信号中断。在一些实施方案中,一个或多个SOC外设备(图2中未示出)也可以是中断源。从中断控制器20到片外的虚线例示了SOC外中断源的潜在可能。
图1所示的集群IC 24A-24n之间的硬/软/强制Ack/Nack接口在图2中经由集群IC24A-24n和中断控制器20之间的箭头例示出。类似地,图1中的处理器30和集群IC 24A-24n之间的Req Ack/Nack接口由相应集群14A-14n中的集群IC 24A-24n和处理器30之间的箭头例示出。
如上所述,处理器集群14A-14n可包括可用作SOC 10的CPU的一个或多个处理器30。***的CPU包括执行***主要控制软件诸如操作***的一个或多个处理器。通常,由CPU在使用过程中执行的软件可控制***的其他部件,以实现***的期望的功能。处理器还可执行其他软件诸如应用程序。应用程序可提供用户功能,并且可依靠操作***进行下层设备控制、调度、存储器管理等。因此,处理器也可被称为应用处理器。
通常,处理器可包括被配置为执行在由处理器实施的指令集架构中定义的指令的任何电路和/或微码。处理器可涵盖在具有作为片上***(SOC 10)或其他集成水平的其他部件的集成电路上实施的处理器内核。处理器还可包括离散的微处理器、处理器内核和/或集成到多芯片模块具体实施中的微处理器、被实施为多个集成电路的处理器等等。
存储器控制器22通常可包括用于从SOC 10的其他部件接收存储器操作并用于访问存储器12以完成存储器操作的电路。存储器控制器22可被配置为访问任何类型的存储器12。例如,存储器12可以是静态随机存取存储器(SRAM)、动态RAM(DRAM)诸如包括双倍数据速率(DDR、DDR2、DDR3、DDR4等)DRAM的同步DRAM(SDRAM)。可支持DDR DRAM的低功率/移动版本(例如,LPDDR、mDDR等)。存储器控制器22可包括存储器操作队列,以用于对这些操作进行排序(并且潜在地重排序)并且将这些操作呈现给存储器12。存储器控制器22还可包括用于存储等待写到存储器的写数据和等待返回至存储器操作的来源的读数据的数据缓冲器。在一些实施方案中,存储器控制器22可包括用于存储最近访问的存储器数据的存储器高速缓存。例如,在SOC具体实施中,存储器高速缓存可通过在预期很快要被再次访问的情况下避免从存储器12重新访问数据来降低SOC中的功率消耗。在一些情况下,存储器高速缓存也可被称为***高速缓存,其与私有高速缓存诸如L2高速缓存或处理器中的高速缓存不同,该私有高速缓存只服务于某些部件。除此之外,在一些实施方案中,***高速缓存不需要位于存储器控制器22内。
***设备18可以是包括在SOC 10中的附加硬件功能的任何集合。例如,***设备18可包括视频***设备,诸如被配置为处理来自相机或其他图像传感器的图像捕捉数据的图像信号处理器、GPU、视频编码器/解码器、缩放器、旋转器、混合器、显示控制器等。***设备可包括音频***设备,诸如麦克风、扬声器、至麦克风和扬声器的接口、音频处理器、数字信号处理器、混合器等。***设备可包括用于SOC 10外部的各种接口(包括接口诸如通用串行总线(USB)、***设备部件互连器(PCI)(包括PCI高速(PCIe)、串行端口和并行端口等)的接口控制器。至***设备的互连由图1中延伸到SOC 10外部的虚线箭头例示。***设备可包括联网***设备诸如媒体访问控制器(MAC)。可包括任何一组硬件。
通信结构27可为用于在SOC 10的部件间进行通信的任何通信互连器和协议。通信结构27可为基于总线的,包括共享总线配置、交叉开关配置、和具有桥的分层总线。通信结构27也可为基于分组的,并且可为具有桥的分层、交叉开关、点到点、或其他互连器。
需注意,SOC 10的部件的数量(以及图2中所示的那些部件的子部件(诸如处理器集群14A-14n中的处理器30)的数量)可因实施方案而异。除此之外,一个处理器集群14A-14n中的处理器30的数量可不同于另一处理器集群14A-14n中的处理器30的数量。每个部件/子部件的数量可多于或少于图2所示的数量。
图3是例示在一个实施方案中可由中断控制器20实现的状态机的一个实施方案的框图。在例示的实施方案中,状态包括空闲状态40、软状态42、硬状态44、强制状态46和等待排出状态48。
在空闲状态40中,可能没有中断未决。一般来讲,每当没有中断未决时,状态机可从如图3所示的其他状态中的任一者返回至空闲状态40。当已经接收到至少一个中断时,中断控制器20可转变到软状态42。中断控制器20还可初始化超时计数器以开始计数超时间隔,这可致使状态机转变到强制状态46。超时计数器可被初始化为0,并且可递增并与超时值进行比较以检测超时。另选地,超时计数器可被初始化为超时值,并且可递减直到达到0。递增/递减可在中断控制器20的时钟的每个时钟周期执行,或者可根据不同时钟(例如,来自压电振荡器等的固定频率时钟)来递增/递减。
在软状态42中,中断控制器20可被配置为发起尝试递送中断的软迭代。如果集群中断控制器24A-24n中的一个集群中断控制器在软迭代期间传输Ack响应并且存在至少一个中断未决,则中断控制器20可转变到等待排出状态48。可提供等待排出状态48,因为给定处理器可接受中断,但实际上可捕捉来自中断控制器的多个中断,从而将其排队以用于其相应中断服务例程。在各种实施方案中,处理器可继续排出中断直到已经从中断控制器20读取所有中断,或者可读取高达特定最大数量的中断并且返回处理,或者可读取中断直到计时器到期。如果上述定时器超时并且仍存在未决中断,则中断控制器20可被配置为转变到强制状态46并且发起强制迭代以便递送中断。如果处理器停止排出中断并且存在至少一个中断未决或者新中断正在未决,则中断控制器20可被配置为返回至软状态42并且继续软迭代。
如果软迭代以来自每个集群中断控制器24A-24n的Nack响应完成(并且至少一个中断保持未决),则中断控制器20可被配置为转变到硬状态44并且可发起硬迭代。如果集群中断控制器24A-24n在硬迭代期间提供Ack响应并且存在至少一个未决中断,则中断控制器20可类似于上文讨论转变到等待排出状态48。如果硬迭代以来自每个集群中断控制器24A-24n的Nack响应完成并且存在至少一个未决中断,则中断控制器20可被配置为转变到强制状态46并且可发起强制迭代。中断控制器20可保持处于强制状态46,直到没有未决中断。
图4是例示中断控制器20在执行软迭代或硬迭代时(例如,当处于图3中的状态42或44时)的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在中断控制器20中的组合式逻辑电路中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。中断控制器20可被配置为实施图4所示的操作。
中断控制器可被配置为选择集群中断控制器24A-24n(框50)。可使用用于从多个中断控制器24A-24n选择集群中断控制器24A-24n的任何机制。例如,中断控制器24A-24n的集群的可编程顺序可指示选择了中断控制器24A-24n的哪个集群。在一个实施方案中,顺序可基于给定中断的中断源(例如,可存在多个顺序可用,可基于中断源来选择特定顺序)。这种具体实施可通过在继续移动到不同类型的处理器集群之前最初尝试将中断递送到期望类型的处理器集群而允许不同中断源倾向于给定类型(例如,性能优化或效率优化)的处理器。在另一实施方案中,最近最少递送算法可用于选择最近集群中断控制器24A-24n(例如,最近最少针对中断生成Ack响应的集群中断控制器24A-24n)以跨不同处理器集群散布中断。在另一实施方案中,最近最多递送算法可用于选择集群中断控制器(例如,最近最多针对中断生成Ack响应的集群中断控制器24A-24n)以利用中断代码或状态仍高速缓存在处理器集群中的可能性。可使用任何机制或机制组合。
中断控制器20可被配置为将中断请求(硬或软,这取决于当前迭代)传输到所选择的集群中断控制器24A-24n(框52)。例如,中断控制器20可向所选择的集群中断控制器24A-24n断言硬或软中断请求信号。如果所选择的集群中断控制器24A-24n提供对中断请求的Ack响应(决策框54,“是”分支),则中断控制器20可被配置为转变到等待排出状态48以允许处理器集群14A-14n中与所选择的集群中断控制器24A-24n相关联的处理器30服务于一个或多个未决中断(框56)。如果所选择的集群中断控制器提供Nack响应(决策框58,“是”分支)并且存在当前迭代中尚未被选择的至少一个集群中断控制器24A-24n(决策框60,“是”分支),则中断控制器20可被配置为根据所实施的选择机制来选择下一集群中断控制器24A-24n(框62),并且返回至框52以向所选择的集群中断控制器24A-24n断言中断请求。因此,在该实施方案中,中断控制器20可被配置为在对多个集群中断控制器24A-24n的迭代期间串行地尝试将中断控制器递送到多个集群中断控制器24A-24n。如果所选择的集群中断控制器24A-24n提供Nack响应(决策框58,“是”分支)并且没有集群中断控制器24A-24n仍然待选择(例如,已经选择所有集群中断控制器24A-24n),则集群中断控制器20可被配置为转变到状态机中的下一状态(例如,如果当前迭代是软迭代则转变到硬状态44,或如果当前迭代是硬迭代则转变到强制状态46)(框64)。如果尚未接收到对中断请求的响应(决策框54和58,“否”分支),则中断控制器20可被配置为继续等待响应。
如上所述,可存在可在中断递送过程开始时初始化的超时机制。在一个实施方案中,如果在任何状态期间发生超时,则中断控制器20可被配置为移动到强制状态46。另选地,可仅在等待排出状态48中考虑定时器到期。
图5是例示集群中断控制器24A-24n基于来自中断控制器20的中断请求的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在中断控制器24A-24n中的组合式逻辑电路中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。集群中断控制器24A-24n可被配置为实施图5所示的操作。
如果中断请求是硬或强制请求(决策框70,“是”分支),则集群中断控制器24A-24n可被配置为给任何下电(例如,休眠)处理器30上电(框72)。如果中断请求是强制中断请求(决策框74,“是”分支),则集群中断控制器24A-24n可被配置为中断所有并行的处理器30(框76)。Ack/Nack可能不适用于强制情况,因此集群中断控制器24A-24n可继续断言中断请求,直到至少一个处理器接受中断。另选地,集群中断控制器24A-24n可被配置为从处理器接收指示其将接受中断的Ack响应,并且可终止强制中断并将Ack响应传输到中断控制器20。
如果中断请求是硬请求(决策框74,“否”分支)或软请求(决策框70,“否”分支),则集群中断控制器可被配置为选择通电处理器30(框78)。可使用类似于上述用于由中断控制器20选择集群中断控制器24A-24n的机制(例如,可编程顺序、最近最少中断、最近最多中断等)的任何选择机制。在一个实施方案中,顺序可基于指派给集群中的处理器的处理器ID。集群中断控制器24A-24n可被配置为向所选择的处理器30断言中断请求,从而将该请求传输到处理器30(框80)。如果所选择的处理器30提供Ack响应(决策框82,“是”分支),则集群中断控制器24A-24n可被配置为将Ack响应提供到中断控制器20(框84)并且终止在处理器集群内递送中断的尝试。如果所选择的处理器30提供Nack响应(决策框86,“是”分支)并且存在尚未被选择的至少一个通电处理器30(决策框88,“是”分支),则集群中断控制器24A-24n可被配置为选择下一通电处理器(例如,根据上述选择机制)(框90)并且向所选择的处理器30断言中断请求(框80)。因此,集群中断控制器24A-24n可串行地尝试将中断递送到处理器集群中的处理器30。如果没有通电处理器要选择(决策框88,“否”分支),则集群中断控制器24A-24n可被配置为将Nack响应提供到中断控制器20(框92)。如果所选择的处理器30尚未提供响应(决策框82和86,“否”分支),则集群中断控制器24A-24n可被配置为等待响应。
在一个实施方案中,在硬迭代中,如果处理器30已经从断电状态通电,则其可迅速地可供用于中断,因为其尚未由操作***或其他控制软件指派任务。操作***可被配置为在初始化处理器之后尽可能快地解除屏蔽已经从断电状态通电的处理器30中的中断。集群中断控制器24A-24n可在选择顺序中首先选择最近通电处理器,以提高处理器将提供对中断的Ack响应的可能性。
图6是处理器30的一个实施方案的更详细框图。在例示的实施方案中,处理器30包括获取和解码单元100(包括指令高速缓存或ICache102)、映射-分派-重命名(MDR)单元106(包括处理器中断确认(Int Ack)控制电路126和重排序缓冲器108)、一个或多个保留站110、一个或多个执行单元112、寄存器文件114、数据高速缓存(DCache)104、加载/存储单元(LSU)118、用于加载/存储单元的保留站(RS)116以及内核接口单元(CIF)122。获取和解码单元100耦接到MDR单元106,该MDR单元耦接到保留站110、保留站116和LSU 118。保留站110耦接到执行单元28。寄存器文件114耦接到执行单元112和LSU 118。LSU 118还耦接到DCache 104,该DCache耦接到CIF 122和寄存器文件114。LSU 118包括存储队列120(STQ120)和加载队列(LDQ 124)。CIF 122耦接到处理器Int Ack控制电路126,以传送向处理器30断言的中断请求(Int Req),并且将来自处理器Int Ack控制电路126的Ack/Nack响应传送到中断请求方(例如,集群中断控制器24A-24n)。
处理器Int Ack控制电路126可被配置为确定处理器30是否可接受传输到处理器30的中断请求,并且可基于该确定而向CIF 122提供Ack和Nack指示。如果处理器30提供Ack响应,则处理器30将在指定时间段内致力于接受中断(并且开始执行中断代码以标识中断和中断源)。也就是说,处理器Int Ack控制电路126可被配置为基于重排序缓冲器108将要将指令操作退出到可中断点并且LSU 118将在指定时间段内完成到可中断点的加载/存储操作的确定而生成对所接收的中断请求的确认(Ack)响应。如果确定重排序缓冲器108和LSU 118中的至少一者在指定时间段内将不会到达(或可能不会到达)可中断点,则处理器Int Ack控制电路126可被配置为生成对中断请求的否定确认(Nack)响应。例如,在一个实施方案中,指定时间段可以是大约5微秒,但在其他实施方案中可更长或更短。
在一个实施方案中,处理器Int Ack控制电路126可被配置为检查重排序缓冲器108的内容以作出Ack/Nack的初始确定。也就是说,可能存在处理器Int Ack控制电路126可能够确定将基于MDR单元106内的状态而生成Nack响应的一种或多种情况。例如,重排序缓冲器108包括尚未执行并且具有大于特定阈值的潜在执行时延的一个或多个指令操作,处理器Int Ack控制电路126可被配置为确定将生成Nack响应。执行时延被称为“潜在”是因为一些指令操作可具有可变执行时延,该可变执行时延可为数据相依的、存储器时延相依的等。因此,潜在执行时延可以是可能发生的最长执行时延,即使它并不总是发生。在其他情况下,潜在执行时延可以是高于特定概率发生的最长执行时延等。此类指令的示例可包括某些密码加速指令、某些类型的浮点或向量指令等。如果指令是不可中断的,则指令可被认为是潜在长时延。也就是说,非可中断指令一旦开始执行就需要完成执行。
在生成Ack/Nack响应时可考虑的另一条件是处理器30中的中断屏蔽的状态。当中断被屏蔽时,则防止处理器30接受中断。如果处理器Int Ack控制电路126检测到中断在处理器中被屏蔽(在一个实施方案中,这可以是维持在MDR单元106中的状态),则可生成Nack响应。更具体地,在一个实施方案中,中断屏蔽可具有对应于最近退出指令的架构当前状态,并且对中断屏蔽的一个或多个推测更新也可被排队。在一个实施方案中,如果架构当前状态是中断被屏蔽,则可生成Nack响应。在另一实施方案中,如果架构当前状态是中断被屏蔽,或者如果推测状态中的任何一个推测状态指示中断被屏蔽,则可生成Nack响应。
在处理器Int Ack控制电路126中,其他情况也可被认为是Nack响应情况。例如,如果在重排序缓冲器中存在与异常处理相关的未决重定向(例如,没有像分支错误预测等的微体系结构重定向),则可生成Nack响应。某些调试模式(例如,单步模式)和高优先级内部中断可被认为是Nack响应情况。
如果处理器Int Ack控制电路126基于检查重排序缓冲器108和MDR单元106中的处理器状态而未检测到Nack响应,则处理器Int Ack控制电路126可与LSU 118介接以确定是否存在已发布(例如,发布到CIF 122或处理器30外部)并且尚未完成但耦合到重排序缓冲器和加载/存储单元的长时延加载/存储op。例如,到设备空间的加载和存储(例如,被映射到***设备而不是存储器的加载和存储)可以是潜在长时延。如果LSU 118响应存在长时延加载/存储op(例如,潜在地大于阈值,该阈值可与在MDR单元106内部使用的上述阈值不同或相同),则处理器Int Ack控制电路126可确定响应将是Nack。其他潜在长时延op可以是例如同步屏障操作。
在一个实施方案中,如果确定不是上述情况的Nack响应,则LSU 118可向重排序缓冲器108提供指针,该指针标识LSU 118致力于完成的最旧加载/存储op(例如,它已经从LDQ124或STQ 120启动,或者在其他情况下在LSU 118中是非推测的)。该指针可被称为“真加载/存储(LS)非推测(NS)指针”。MDR 106/重排序缓冲器108可尝试在LS NS指针处中断,并且如果在指定时间段内不可能中断,则处理器Int Ack控制电路126可确定将生成Nack响应。否则,可生成Ack响应。
获取和解码单元100可被配置为获取供处理器30执行的指令,并且将指令解码成op以供执行。更具体地,获取和解码单元100可被配置为将先前从存储器(通过CIF 122)获取的指令高速缓存在ICache 102中,并且可被配置为获取用于处理器30的指令的推测路径。获取和解码单元100可实现各种预测结构以预测获取路径。例如,下一获取预测器可用于基于先前执行的指令来预测获取地址。各种类型的分支预测器可用于验证下一获取预测,或者如果不使用下一获取预测器,则可用于预测下一获取地址。获取和解码单元100可被配置为将指令解码成指令操作。在一些实施方案中,可以将给定指令解码成一个或多个指令操作,这取决于指令的复杂度。在一些实施方案中,特别复杂的指令可以是微编码的。在此类实施方案中,针对指令的微编码例程可以在指令操作中编码。在其他实施方案中,可将由处理器30实现的指令集架构中的每个指令解码成单个指令操作,因此指令操作可实质上与指令同义(尽管其形式可由解码器进行修改)。术语“指令操作”在本文中可更简要地称为“op”。
MDR单元106可被配置为将op映射到推测资源(例如,物理寄存器)以允许乱序和/或推测执行,并且可将op分派到保留站110和116。op可从在对应指令中使用的架构寄存器映射到寄存器文件114中的物理寄存器。也就是说,寄存器文件114可实现一组物理寄存器,其数量可大于由处理器30实现的指令集架构所指定的架构寄存器。MDR单元106可管理架构寄存器到物理寄存器的映射。在一个实施方案中,对于不同操作数类型(例如,整数、媒体、浮点等),可存在单独的物理寄存器。在其他实施方案中,物理寄存器可在操作数类型中共享。MDR单元106还可负责跟踪推测执行和退出op或刷新错误推测的op。重排序缓冲器108可用于跟踪op的程序顺序并管理退出/刷新。也就是说,重排序缓冲器108可被配置为跟踪与处理器获取并且处理器未退出的指令相对应的多个指令操作。
当针对op的源操作数就绪时,可调度op以供执行。在例示的实施方案中,分散调度用于执行单元28中的每个执行单元和LSU 118,例如在保留站116和110中。如果需要,其他实施方案可实施集中式调度器。
LSU 118可被配置为执行加载/存储存储器op。一般来讲,存储器操作(存储器op)可以是指定对存储器的访问的指令操作(尽管存储器访问可在高速缓存诸如DCache 104中完成)。加载存储器操作可指定从存储器位置到寄存器的数据传送,而存储存储器操作可指定从寄存器到存储器位置的数据传送。加载存储器操作可被称为加载存储器op、加载op或加载;并且存储存储器操作可被称为存储存储器op、存储op或存储。在一个实施方案中,存储op可执行为存储地址op和存储数据op。存储地址op可被定义为生成存储的地址,探测高速缓存的初始命中/未命中确定,并且利用地址和高速缓存信息来更新存储队列。因此,存储地址op可以将地址操作数作为源操作数。存储数据op可被定义为将存储数据递送到存储队列。因此,存储数据op可以不将地址操作数作为源操作数,而是可以将存储数据操作数作为源操作数。在许多情况下,存储的地址操作数可以在存储数据操作数之前可用,因此地址可以比存储数据更早地得到确定并变得可用。在一些实施方案中,例如如果在存储地址操作数中的一个或多个操作数之前提供存储数据操作数,则存储数据op有可能在对应存储地址op之前执行。尽管在一些实施方案中存储操作可执行为存储地址op和存储数据op,但其他实施方案可能不实施存储地址/存储数据拆分。作为示例,本公开的其余部分将通常使用存储地址op(和存储数据op),但也设想了不使用存储地址/存储数据优化的具体实施。经由存储地址op的执行生成的地址可被称为对应于存储op的地址。
加载/存储op可在保留站116中被接收,该保留站可被配置为监视操作的源操作数以确定它们何时可用,然后分别向加载或存储管线发布这些操作。当在保留站116中接收到操作时,一些源操作数可能是可用的,这些操作可在由保留站116从MDR单元106接收的数据中指示以用于对应操作。其他操作数可经由由其他执行单元112执行操作或甚至经由较早加载op的执行而变得可用。操作数可由保留站116收集,或者可在从保留站116发出时从寄存器文件114读取,如图6所示。
在一个实施方案中,保留站116可被配置为在这些操作数变得可用时乱序(不同于它们在由处理器30执行的代码序列中的原始顺序(被称为“程序顺序”))发布操作。为了确保LDQ 124或STQ 120中存在空间用于保留站116中的较新操作所绕过的较旧操作,MDR单元106可包括将LDQ 124或STQ 120条目预分配给传输到加载/存储单元118的操作的电路。如果对于正在MDR单元106中处理的加载不存在可用LDQ条目,则MDR单元106可按程序顺序停止加载op和后续op的分派,直到一个或多个LDQ条目变得可用。类似地,如果不存在STQ条目可供用于存储,则MDR单元106可停止op分派,直到一个或多个STQ条目变得可用。在其他实施方案中,保留站116可按程序顺序发布操作,并且LRQ 46/STQ 120指派可在从保留站116发布时发生。
LDQ 124可跟踪从LSU 118的初始执行到退出的加载。LDQ 124可负责确保不违反存储器排序规则(在乱序执行的加载之间,以及在加载和存储之间)。如果检测到存储器排序违反,则LDQ 124可发信号通知针对对应加载的重定向。重定向可致使处理器30按程序顺序刷新加载和后续op,并且重新获取对应指令。加载和后续op的推测状态可被丢弃,并且这些op可由获取和解码单元100重新获取并重新处理以便再次执行。
当加载/存储地址op由保留站116发布时,AGU/LSU 118可被配置为生成由加载/存储访问的地址,并且可被配置为将该地址从由加载/存储地址op的地址操作数创建的有效地址或虚拟地址转换为实际用于地址存储器的物理地址。LSU 118可被配置为生成对DCache 104的访问。对于命中DCache 104的加载操作,数据可从DCache 104推测性地转发到加载操作的目标操作数(例如,寄存器文件114中的寄存器),除非地址命中STQ 120中的先前操作(即,按程序顺序的较旧存储)或者加载被重放。数据还可被转发到曾被推测性地调度并且现位于执行单元28中的从属op。在此类情况下,执行单元28可绕过所转发的数据而不是从寄存器堆114输出的数据。如果存储数据可供用于在STQ命中时转发,则可转发由STQ 120输出的数据而不是高速缓存数据。数据不能被转发的高速缓存未命中和STQ命中可能是重放的原因,并且在那些情况下加载数据不可被转发。来自DCache 104的高速缓存命中/未命中状态可记录在STQ 120或LDQ 124以供稍后处理。
LSU 118可实现多个加载管线。例如,在一个实施方案中,可实现三个加载管线(“管道”),但在其他实施方案中可实现更多或更少管线。每个管线可独立地并且与其他加载并行地执行不同加载。也就是说,RS116可在同一时钟周期中发布任何数量的加载,最多至加载管道的数量。LSU 118还可实现一个或多个存储管道,并且特别地可实现多个存储管道。然而,存储管道的数量不需要等于加载管道的数量。在一个实施方案中,例如,可使用两个存储管道。保留站116可独立地并且与存储管道并行地发布存储地址op和存储数据op。存储管道可耦接到STQ 120,该STQ可被配置为保持已经执行但尚未提交的存储操作。
CIF 122可代表处理器30负责与包括处理器30的***的其余部分进行通信。例如,CIF 122可被配置为请求DCache 104未命中和ICache 102未命中的数据。当数据返回时,CIF 122可向对应高速缓存发信号通知高速缓存填充。对于DCache填充,CIF 122还可通知LSU 118。LDQ 124可尝试调度正在高速缓存填充上等待的重放的加载,使得重放的加载可在填充数据被提供到DCache 104时转发该填充数据(称为填充转发操作)。如果重放的加载在填充期间未被成功重放,则重放的加载可随后被调度并作为高速缓存命中通过DCache104重放。CIF 122还可回写已被DCache 104逐出的经修改高速缓存行,合并不可高速缓存存储的存储数据等。
在各种实施方案中,执行单元112可包括任何类型的执行单元。例如,执行单元112可包括整数、浮点和/或向量执行单元。整数执行单元可被配置为执行整数op。一般来讲,整数op是对整数操作数执行定义的操作(例如,算术、逻辑、移位/旋转等)的op。整数可以是数值,其中每个值对应于数学整数。整数执行单元可包括用于处理分支op的分支处理硬件,或者可存在单独的分支执行单元。
浮点执行单元可被配置为执行浮点op。一般来讲,浮点op可以是已被定义为对浮点操作数进行操作的op。浮点操作数是被表示为尾数(或有效位数)乘以底数的指数次方的操作数。指数、操作数的符号和尾数/有效位数可在操作数中显式地表示,并且底数(例如,在一个实施方案中,底数2)可以是隐式的。
向量执行单元可被配置为执行向量op。向量op可用于例如处理媒体数据(例如,图像数据诸如像素、音频数据等)。媒体处理的特征可在于对大量数据执行相同的处理,其中每个数据是相对小的值(例如,8位或16位,与整数的32位至64位相比)。因此,向量op包括对表示多个媒体数据的操作数进行的单指令多数据(SIMD)或向量操作。
因此,每个执行单元112可包括被配置为执行如下操作的硬件:被定义为限定特定执行单元来处理的op的操作。在每个执行单元可被配置为对为该执行单元发起而与其他执行单元无关的op进行操作的意义上,执行单元通常可彼此独立。以另一角度来看,每个执行单元可以是用于执行op的独立管道。不同的执行单元可具有不同的执行延迟(例如,不同的管道长度)。除此之外,不同的执行单元可对发生旁路的管线级具有不同的时延,因此基于加载op发生相关op的推测调度的时钟周期可基于op和将执行该op的执行单元28的类型而变化。
需注意,在各种实施方案(包括具有一个执行单元的实施方案和具有多个执行单元的实施方案)中可包括任何数量和类型的执行单元112。
高速缓存行可以是高速缓存中的分配/解除分配单元。也就是说,高速缓存行内的数据可作为一个单元在高速缓存中分配/解除分配。高速缓存行的大小可变化(例如,32字节、64字节、128字节,或者更大或更小的高速缓存行)。不同的高速缓存可具有不同的高速缓存行大小。ICache 102和DCache 104可各自为具有任何期望容量、高速缓存行大小和配置的高速缓存。在各种实施方案中,在DCache 104/ICache102和主存储器之间可存在更多附加级高速缓存。
在各个点处,加载/存储操作被称为比其他加载/存储操作更新或更旧。如果第一操作按程序顺序在第二操作之后,则第一操作可比第二操作更新。类似地,如果第一操作按程序顺序先于第二操作,则第一操作可比第二操作更旧。
图7是重排序缓冲器108的一个实施方案的框图。在例示的实施方案中,重排序缓冲器108包括多个条目。在各种实施方案中,每个条目可对应于指令、指令操作或指令操作组。与指令操作相关的各种状态可存储在重排序缓冲器中(例如,目标逻辑和物理寄存器以更新架构寄存器映射、在执行期间检测到的异常或重定向等)。
图7中例示了若干指针。退出指针130可指向处理器30中的最旧非退出op。也就是说,在退出指针130处的op之前的op已经从重排序缓冲器108退出,处理器30的架构状态已经更新以反映退出op的执行等。解析指针132可指向最旧op,对于最旧op,先前分支指令已经被解析为正确预测,并且对于最旧op,可能导致异常的先前op已经被解析为不造成异常。退出指针130和解析指针132之间的op可以是重排序缓冲器108中的提交op。也就是说,生成op的指令的执行将完成到解析指针132(不存在外部中断时)。最新指针134可指向从MDR单元106最近获取和分派的op。解析指针132和最新指针134之间的op是推测性的,并且可能由于异常、分支错误预测等而被刷新。
真LS NS指针136是上述真LS NS指针。真LS NS指针可仅在中断请求已经被断言并且Nack响应的其他测试已经为否定(例如,由那些测试指示Ack响应)时生成。MDR单元106可尝试将解析指针132移回真LS NS指针136。在重排序缓冲器108中可能存在不能被刷新的提交op(例如,一旦它们被提交,它们必须被完成和退出)。一些指令操作组可能不是可中断的(例如,微代码例程、某些不可中断异常等)。在此类情况下,处理器Int Ack控制器126可被配置为生成Nack响应。在处理器30中可能存在过于复杂而不能“撤销”的op或op组合,并且在解析指针和真LS NS指针136之间存在此类op可致使处理器Int Ack控制器126生成Nack响应。如果重排序缓冲器108成功地将解析指针移回真LS NS指针136,则处理器Int Ack控制电路126可被配置为生成Ack响应。
图8是例示处理器Int Ack控制电路126基于处理器30接收到中断请求的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在处理器Int Ack控制电路126中的组合式逻辑电路中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。处理器Int Ack控制电路126可被配置为实施图8所示的操作。
处理器Int Ack控制电路126可被配置为确定在MDR单元106中是否检测到任何Nack条件(决策框140)。例如,尚未完成的潜在长时延操作、中断被屏蔽等可以是在MDR单元106中检测到的Nack条件。如果是(决策框140,“是”分支),则处理器Int Ack控制电路126可被配置为生成Nack响应(框142)。如果否(决策框140,“否”分支),则处理器Int Ack控制电路126可与LSU通信以请求Nack条件和/或真LS NS指针(框144)。如果LSU 118检测到Nack条件(决策框146,“是”分支),则处理器Int Ack控制电路126可被配置为生成Nack响应(框142)。如果LSU 118未检测到Nack条件(决策框146,“否”分支),则处理器Int Ack控制电路126可被配置为从LSU 118接收真LS NS指针(框148),并且可尝试将重排序缓冲器108中的解析指针移回真LS NS指针(框150)。如果移动不成功(例如,在真LS NS指针和解析指针之间存在至少一个不能被刷新的指令操作)(决策框152,“否”分支),则处理器Int Ack控制电路126可被配置为生成Nack响应(框142)。否则(决策框152,“是”分支),处理器Int Ack控制电路126可被配置为生成Ack响应(框154)。处理器Int Ack控制电路126可被配置为将解析指针冻结在真LS NS指针处,并且将op退出直到退出指针到达解析指针(框156)。然后,处理器Int Ack控制电路126可被配置为接受中断(框158)。也就是说,处理器30可开始(例如,根据由处理器30实现的指令集架构从与中断相关联的预定地址)获取中断代码。
在另一实施方案中,SOC 10可以是***中的SOC中的一个SOC。更具体地,在一个实施方案中,可采用SOC 10的多个实例。其他实施方案可具有非对称SOC。每个SOC可以是单独的集成电路芯片(例如,实现在单独的半导体基板或“管芯”上)。管芯可被封装并且经由内插器、层叠式封装解决方案等彼此连接。另选地,管芯可被封装在片上芯片封装方案、多芯片模块等中。
图9是例示包括SOC 10的多个实例的***的一个实施方案的框图。例如,SOC 10A、SOC 10B等至SOC 10q可在***中耦接在一起。每个SOC 10A-10q包括中断控制器20的实例(例如,图9中的中断控制器20A、中断控制器20B和中断控制器20q)。一个中断控制器,在该示例中为中断控制器20A,可用作***的一级中断控制器。其他中断控制器20B至20q可用作二级中断控制器。
图9中更详细地示出一级中断控制器20A和二级控制器20B之间的接口,并且一级中断控制器20A和其他二级中断控制器诸如中断控制器20q之间的接口可为类似的。在图9的实施方案中,二级控制器20B被配置为提供标识从SOC 10B上的中断源(或耦接到SOC 10B的外部设备,图9中未示出)发布的中断的中断信息作为Int 160。一级中断控制器20A被配置为向二级中断控制器20B发信号通知硬、软和强制迭代(附图标号162),并且被配置为从中断控制器20B接收Ack/Nack响应(附图标号164)。接口可以任何方式实现。例如,专用线路可耦接在SOC 10A和SOC 10B之间以实现附图标号160、162和/或164。在另一实施方案中,可通过SOC 10A-10q之间的也用于其他通信的通用接口在一级中断控制器20A和二级中断控制器20B-20q之间交换消息。在一个实施方案中,可编程输入/输出(PIO)写入可作为数据分别与中断数据、硬/软/强制请求和Ack/Nack响应一起使用。
一级中断控制器20A可被配置为收集来自可在SOC 10A上的各种中断源、可以是片外设备的其他SOC 10B-10q中的一个SOC或它们的任何组合的中断。二级中断控制器20B-20q可被配置为将中断传输到一级中断控制器20A(图9中的Int),从而向一级中断控制器20A标识中断源。一级中断控制器20A还可负责确保中断的递送。二级中断控制器20B-20q可被配置为从一级中断控制器20A获取指示,从而从一级中断控制器20A接收软、硬和强制迭代请求并且对体现在对应SOC 10B-10q上的集群中断控制器24A-24n执行迭代。基于来自集群中断控制器24A-24n的Ack/Nack响应,二级中断控制器20B-20q可提供Ack/Nack响应。在一个实施方案中,一级中断控制器20A可在软迭代和硬迭代中串行地尝试通过二级中断控制器20B-20q递送中断,并且可在强制迭代中并行地向二级中断控制器20B-20q递送中断。
在一个实施方案中,一级中断控制器20A可被配置为对集成到与一级中断控制器20A相同的SOC 10A中的集群中断控制器的子集执行给定迭代,然后对其他SOC 10B-10q上的其他SOC 10B-10q上的集群中断控制器的子集执行该给定迭代(在二级中断控制器20B-20q的辅助下)。也就是说,一级中断控制器20A可串行地尝试通过SOC 10A上的集群中断控制器递送中断,然后可与二级中断控制器20B-20q通信。通过二级中断控制器20B-20q进行递送的尝试也可串行地执行。通过在二级中断控制器20B-20q进行尝试的顺序可以任何期望方式确定,类似于上文针对集群中断控制器和集群中的处理器所述的实施方案(例如,可编程顺序、最近最多接受、最近最少接受等)。因此,一级中断控制器20A和二级中断控制器20B-20q可在很大程度上将软件与多个SOC 10A-10q的存在隔离。也就是说,SOC 10A-10q可被配置为对于在单个***上的软件执行在很大程度上透明的单个***。在***初始化期间,一些实施方案可被编程为如上文所讨论配置中断控制器20A-20q,但在其他情况下,中断控制器20A-20q可管理中断跨可能多个SOC 10A-10q(各自位于单独半导体管芯上)的递送,而无需软件辅助或软件对***的多管芯性质的特定可见性。例如,由于管芯间通信造成的延迟可在***中最小化。因此,在初始化之后的执行期间,单个***对于软件来说可表现为单个***,并且***的多管芯性质对于软件来说可为透明的。
需注意,一级中断控制器20A和二级中断控制器20B-20q可以本领域技术人员也称为“主”(即,一级)和“从”(即,二级)的方式操作。虽然本文使用了一级/二级术语,但明确地旨在将术语“一级”和“二级”解释为涵盖这些对应术语。
在一个实施方案中,SOC 10A-10q的每个实例可使一级中断控制器电路和二级中断控制器电路两者实现在其中断控制器20A-20q中。一个中断控制器(例如,中断控制器20A)可在***制造期间被指定为一级(例如,经由SOC 10A-10q上的熔丝、或SOC 10A-10q的一个或多个引脚上的引脚带)。另选地,一级和二级指定可在***初始化(或开机)配置期间进行。
图10是例示一级中断控制器20A基于从一个或多个中断源接收到一个或多个中断的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一级中断控制器20A中的组合式逻辑电路中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一级中断控制器20A可被配置为实施图10所示的操作。
一级中断控制器20A可被配置为对集成到本地SOC 10A的集群中断控制器执行软迭代(框170)。例如,软迭代可类似于图4的流程图。如果本地软迭代产生Ack响应(决策框172,“是”分支),则中断可被成功递送并且一级中断控制器20A可被配置为返回至空闲状态40(假设没有更多未决中断)。如果本地软迭代产生Nack响应(决策框172,“否”分支),则一级中断控制器20A可被配置为使用如上所述的任何期望顺序来选择其他SOC 10B-10q中的一个SOC(框174)。一级中断控制器20A可被配置为向所选择的SOC 10B-10q上的二级中断控制器20B-20q断言软迭代请求(框176)。如果二级中断控制器20B-20q提供Ack响应(决策框178,“是”分支),则中断可被成功递送并且一级中断控制器20A可被配置为返回至空闲状态40(假定没有更多未决中断)。如果二级中断控制器20B-20q提供Nack响应(决策框178,“否”分支)并且存在尚未在软迭代中选择的更多SOC 10B-10q(决策框180,“是”分支),则一级中断控制器20A可被配置为根据所实施的排序机制选择下一SOC 10B-10q(框182),并且可被配置为将软迭代请求传输到所选择的SOC上的二级中断控制器20B-20q(框176)并继续处理。另一方面,如果每个SOC 10B-10q都已经被选择,则软迭代可完成,因为通过二级中断控制器20B-20q递送中断的串行尝试已完成。
基于对二级中断控制器20B-20q完成软迭代而未成功中断递送(决策框180,“否”分支),一级中断控制器20A可被配置为对集成到本地SOC 10A上的本地集群中断控制器执行硬迭代(框184)。例如,软迭代可类似于图4的流程图。如果本地硬迭代产生Ack响应(决策框186,“是”分支),则中断可被成功递送并且一级中断控制器20A可被配置为返回至空闲状态40(假设没有更多未决中断)。如果本地硬迭代产生Nack响应(决策框186,“否”分支),则一级中断控制器20A可被配置为使用如上所述的任何期望顺序来选择其他SOC 10B-10q中的一个SOC(框188)。一级中断控制器20A可被配置为向所选择的SOC 10B-10q上的二级中断控制器20B-20q断言硬迭代请求(框190)。如果二级中断控制器20B-20q提供Ack响应(决策框192,“是”分支),则中断可被成功递送并且一级中断控制器20A可被配置为返回至空闲状态40(假定没有更多未决中断)。如果二级中断控制器20B-20q提供Nack响应(决策框192,“否”分支)并且存在尚未在硬迭代中选择的更多SOC 10B-10q(决策框194,“是”分支),则一级中断控制器20A可被配置为根据所实施的排序机制选择下一SOC 10B-10q(框196),并且可被配置为将硬迭代请求传输到所选择的SOC上的二级中断控制器20B-20q(框190)并继续处理。另一方面,如果每个SOC 10B-10q都已经被选择,则硬迭代可完成,因为通过二级中断控制器20B-20q递送中断的串行尝试已完成(决策框194,“否”分支)。一级中断控制器20A可被配置为继续进行强制迭代(框198)。强制迭代可在本地执行,或者可在本地SOC 10A和其他SOC 10B-10q上并行地或串行地执行。
如上所述,可存在可在中断递送过程开始时初始化的超时机制。在一个实施方案中,如果在任何状态期间发生超时,则中断控制器20可被配置为移动到强制迭代。另选地,可仅在等待排出状态48中考虑定时器到期,再次如上所述。
图11是例示二级中断控制器20B-20q的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在二级中断控制器20B-20q中的组合式逻辑电路中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。二级中断控制器20B-20q可被配置为实施图11所示的操作。
如果对应SOC 10B-10q中(或耦接到SOC 10B-10q)的中断源将中断提供到二级中断控制器20B-20q(决策框200,“是”分支),则二级中断控制器20B-20q可被配置为将中断传输到一级中断控制器20A以连同来自其他中断源的其他中断一起处理(框202)。
如果一级中断控制器20A已传输迭代请求(决策框204,“是”分支),则二级中断控制器20B-20q可被配置为对本地SOC 10B-10q中的集群中断控制器执行所请求的迭代(硬、软或强制)(框206)。例如,硬迭代和软迭代可类似于图4,并且强制可与本地SOC 10B-10q中的集群中断控制器并行地执行。如果迭代产生Ack响应(决策框208,“是”分支),则二级中断控制器20B-20q可被配置为将Ack响应传输到一级中断控制器20A(框210)。如果迭代产生Nack响应(决策框208,“否”分支),则二级中断控制器20B-20q可被配置为将Nack响应传输到一级中断控制器20A(框212)。
图12是例示用于处理中断的方法的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在本文所述***中的组合式逻辑电路中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。本文所述的***可被配置为实施图12所示的操作。
中断控制器20可接收来自中断源的中断(框220)。在具有一级和二级中断控制器20A-20q的实施方案中,中断可在任何中断控制器20A-20q中被接收,并且作为接收来自中断源的中断的一部分被提供到一级中断控制器20A。中断控制器20可被配置为执行串行地尝试将中断递送到多个集群中断控制器的第一迭代(例如,软迭代)(框222)。多个集群中断控制器中的相应集群中断控制器与包括多个处理器的相应处理器集群相关联。在第一迭代中,多个集群中断控制器中的给定集群中断控制器可被配置为尝试将中断递送到相应多个处理器中的通电的子集,而不尝试将中断递送到相应多个处理器中未包括在该子集中的处理器。如果接收到Ack响应,则迭代可由中断控制器20终止(决策框224,“是”分支和框226)。另一方面(决策框224,“否”分支),基于在第一迭代中来自多个集群中断控制器的否定确认(Nack)响应,中断控制器可被配置为对多个集群中断控制器执行第二迭代(例如,硬迭代)(框228)。在第二迭代中,给定集群中断控制器可被配置为给相应多个处理器中的断电的处理器通电并且尝试将中断递送到相应多个处理器。如果接收到Ack响应,则迭代可由中断控制器20终止(决策框230,“是”分支和框232)。另一方面(决策框230,“否”分支),基于在第二迭代中来自多个集群中断控制器的否定确认(Nack)响应,中断控制器可被配置为对多个集群中断控制器执行第三迭代(例如,强制迭代)(框234)。
计算机***
接下来转向图13,示出了***700的一个实施方案的框图。在例示的实施方案中,***700包括耦接到一个或多个***设备704和外部存储器702的片上***(SOC)10的至少一个实例。提供了电源(PMU)708,其向SOC 10供应供电电压以及向存储器702和/或***设备154供应一个或多个供电电压。在一些实施方案中,可包括SOC 10的多于一个实例(例如,SOC 10A-10q)(并且也可包括多于一个存储器702)。在一个实施方案中,存储器702可包括图2所示的存储器12。
根据***700的类型,***设备704可包括任何期望的电路。例如,在一个实施方案中,***700可以是移动设备(例如,个人数字助理(PDA)、智能电话等),并且***设备704可包括用于各种类型的无线通信的设备,诸如Wi-Fi、蓝牙、蜂窝、全球定位***等。***设备704还可包括额外存储装置,该额外存储装置包括RAM存储装置、固态存储装置或磁盘存储装置。***设备704可包括用户接口设备,诸如显示屏,其包括触摸显示屏或多触摸显示屏、键盘或其它输入设备、麦克风、扬声器等。在其它实施方案中,***700可为任何类型的计算***(例如,台式个人计算机、膝上型电脑、工作站、网络机顶盒等)。
外部存储器702可包括任何类型的存储器。例如,外部存储器702可以为SRAM、动态RAM(DRAM)(诸如同步DRAM(SDRAM))、双倍数据速率(DDR、DDR2、DDR3等)SDRAM、RAMBUSDRAM、低功率版本的DDR DRAM(例如,LPDDR、mDDR等)等等。外部存储器702可以包括存储器设备可被安装到的一个或多个存储器模块,诸如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。另选地,外部存储器702可以包括以芯片上芯片或封装上封装具体实施被安装在SOC 10上的一个或多个存储器设备。
如图所示,***700被展示为具有在广泛领域中的应用。例如,***700可用作台式计算机710、膝上型计算机720、平板电脑730、蜂窝或移动电话740或电视750(或耦接到电视的机顶盒)的芯片、电路、部件等的一部分。还示出了智能手表和健康监测设备760。在一些实施方案中,智能手表可包括各种通用计算相关功能。例如,智能手表可提供对电子邮件、手机服务、用户日历等的访问。在各种实施方案中,健康监测设备可以是专用医疗设备或以其他方式包括专用的健康相关功能。例如,健康监测设备可监测用户的生命体征、跟踪用户与其他用户的接近度以用于流行病学社交距离的目的、联系人跟踪、在发生健康危机的情况下向紧急服务部门提供通信等。在各种实施方案中,上述智能手表可包括或可不包括一些或任何健康监测相关功能。还设想了其他可穿戴设备,诸如围绕颈部佩戴的设备、可植入人体中的设备、被设计成提供增强和/或虚拟现实体验的眼镜,等等。
***700还可用作基于云的服务770的一部分。例如,先前提及的设备和/或其他设备可访问云端中的计算资源(即,远程定位的硬件和/或软件资源)。更进一步地,***700可用于家庭的除先前提到的那些设备之外的一个或多个设备中。例如,家用电器可监测和检测值得注意的情况。例如,家中的各种设备(例如,冰箱、冷却***等)可监测设备的状态,并且在检测到特定事件的情况下向房主(或例如维修机构)提供警报。另选地,恒温器可监测家中的温度,并且可基于由房主对各种情况的反应历史来自动化调整加热/冷却***。图13中还例示了***700对各种交通运输方式的应用。例如,***700可用于飞机、火车、公共汽车、出租用汽车、私人汽车、从私人船只到游轮的水运船、(用于出租或私有的)小型摩托车等的控制和/或娱乐***。在各种情况下,***700可用于提供自动化引导(例如,自驾驶车辆)、一般***控制等。这些任何许多其他实施方案都是可能的并且被设想到的。需注意,图13所示的设备和应用仅为例示性的,并非旨在进行限制。其他设备是可能的并且被设想到的。
计算机可读存储介质
现在转向图14,示出了计算机可读存储介质800的一个实施方案的框图。一般来讲,计算机可访问存储介质可包括在使用期间能够被计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质可包括诸如磁性或光学介质的存储介质,例如,盘(固定或可拆卸)、带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质还可包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM或闪存存储器。存储介质可被物理地包括在存储介质将指令/数据提供至其的计算机内。另选地,存储介质可连接至计算机。例如,存储介质可通过网络或无线链路诸如网络附接存储装置而被连接至计算机。存储介质可通过***接口诸如通用串行总线(USB)而被连接。通常,计算机可访问存储介质800可以非暂态方式存储数据,其中非暂态在该上下文中可指不通过信号传输指令/数据。例如,非暂态存储装置可为易失性的(并且响应于断电而可能会丢失所存储的指令/数据)或为非易失性的。
图14中的计算机可访问存储介质800可存储代表SOC 10的数据库804。一般来讲,数据库804可以是可由程序读取并且直接或间接用于制造包括SOC 10的硬件的数据库。例如,数据库可以是诸如Verilog或VHDL的高级设计语言(HDL)中硬件功能的行为级别描述或寄存器传送级别(RTL)描述。可通过合成工具读取该描述,合成工具可合成该描述以产生包括来自合成库的门电路列表的网表。网表包括一组门电路,其还表示包括SOC 10的硬件的功能。然后可放置并路由网表,以产生用于描述要应用到掩模的几何形状的数据集。然后可在各种半导体制造步骤中使用屏蔽以产生对应于SOC 10的一个或多个半导体电路。替代地,根据需要,计算机可访问存储介质800上的数据库804可以是网表(具有或不具有合成库)或数据集。
虽然计算机可访问存储介质800存储SOC 10的表示,但其他实施方案可根据需要承载SOC 10的任何部分的表示,包括图2所示的部件的任何子集。数据库804可表示上述任何部分。
基于本公开,一种***可包括:多个集群中断控制器;以及中断控制器,该中断控制器耦接到该多个集群中断控制器。该多个集群中断控制器中的相应集群中断控制器可与包括多个处理器的相应处理器集群相关联。该中断控制器可被配置为接收来自第一中断源的中断,并且基于该中断可被配置为:对该多个集群中断控制器执行第一迭代以尝试递送该中断;并且基于在该第一迭代中来自该多个集群中断控制器的否定确认(Nack)响应,对该多个集群中断控制器执行第二迭代。在该第一迭代中,该多个集群中断控制器中的给定集群中断控制器可被配置为尝试将该中断递送到该相应处理器集群中的该多个处理器中的通电的子集,而不尝试将该中断递送到该相应集群中的该相应多个处理器中未包括在该子集中的处理器。在该第二迭代中,该给定集群中断控制器可被配置为给该相应多个处理器中的断电的处理器通电并且尝试将该中断递送到该相应多个处理器。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间:中断控制器可被配置为向该多个集群中断控制器中的第一集群中断控制器断言第一中断请求;并且基于来自该第一集群中断控制器的Nack响应,该中断控制器可被配置为向该多个集群中断控制器中的第二集群中断控制器断言第二中断请求。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间,基于来自该第二集群中断控制器的第二Nack响应,该中断控制器可被配置为向该多个集群中断控制器中的第三集群中断控制器断言第三中断请求。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间,并且基于来自该第二集群中断控制器的确认(Ack)响应以及无附加未决中断,该中断控制器可被配置为终止该尝试。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间:该中断控制器可被配置为向该多个集群中断控制器中的第一集群中断控制器断言中断请求;并且基于来自该第一集群中断控制器的确认(Ack)响应以及无附加未决中断,该中断控制器可被配置为终止该尝试。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间,该中断控制器可被配置为向该多个集群中断控制器中的一个或多个集群中断控制器串行地断言中断请求,该断言由来自该一个或多个集群中断控制器中的第一集群中断控制器的确认(Ack)响应终止。在一个实施方案中,该中断控制器可被配置为按可编程顺序串行地断言。在一个实施方案中,该中断控制器可被配置为基于该第一中断源串行地断言该中断请求。来自第二中断源的第二中断可导致该串行断言的不同顺序。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间:该中断控制器可被配置为向该多个集群中断控制器中的第一集群中断控制器断言中断请求;并且该第一集群中断控制器可被配置为基于到该第一集群中断控制器的该中断请求而向该相应处理器集群中的该多个处理器串行地断言处理器中断请求。在一个实施方案中,该第一集群中断控制器被配置为基于来自该多个处理器中的第一处理器的确认(Ack)响应而终止串行断言。在一个实施方案中,该第一集群中断控制器可被配置为基于来自该第一处理器的该Ack响应而将该Ack响应传输到该中断控制器。在一个实施方案中,该第一集群中断控制器可被配置为基于在处理器中断的该串行断言期间来自该相应集群中的该多个处理器的Nack响应而将该Nack响应提供到该中断控制器。在一个实施方案中,该中断控制器可包括在包括该多个集群中断控制器的第一子集的第一半导体基板上的第一集成电路上。该多个集群中断控制器的第二子集可实现在第二单独半导体基板上的第二集成电路上。该中断控制器可被配置为在尝试向该第二子集递送之前向该第一子集串行地断言中断请求。在一个实施方案中,该第二集成电路包括第二中断控制器,并且该中断控制器可被配置为响应于该第一子集拒绝该中断而将该中断请求传达到该第二中断控制器。该第二中断控制器可被配置为尝试将该中断递送到该第二子集。
在一个实施方案中,一种处理器包括:重排序缓冲器;加载/存储单元;以及控制电路,该控制电路耦接到该重排序缓冲器和该加载/存储单元。该重排序缓冲器可被配置为跟踪与该处理器获取并且该处理器未退出的指令相对应的多个指令操作。该加载/存储单元可被配置为执行加载/存储操作。该控制电路可被配置为基于该重排序缓冲器将要将指令操作退出到可中断点并且该加载/存储单元将在指定时间段内完成到该可中断点的加载/存储操作的确定而生成对由该处理器接收的中断请求的确认(Ack)响应。该控制电路可被配置为基于该重排序缓冲器和该加载/存储单元中的至少一者将不在该指定时间段内到达该可中断点的确定而生成对该中断请求的否定确认(Nack)响应。在一个实施方案中,该确定可以是基于该重排序缓冲器具有潜在执行时延大于阈值的至少一个指令操作的Nack响应。在一个实施方案中,该确定可以是基于该重排序缓冲器具有致使中断被屏蔽的至少一个指令操作的Nack响应。在一个实施方案中,该确定是基于该加载/存储单元具有未完成的到设备地址空间的至少一个加载/存储操作的Nack响应。
在一个实施方案中,一种方法包括:在中断控制器中接收来自第一中断源的中断。该方法还可包括:执行串行地尝试将该中断递送到多个集群中断控制器的第一迭代。在该第一迭代中,该多个集群中断控制器中与包括多个处理器的相应处理器集群相关联的相应集群中断控制器可被配置为尝试将该中断递送到该相应处理器集群中的该多个处理器中的通电的子集,而不尝试将该中断递送到该相应处理器集群中的该多个处理器中未包括在该子集中的处理器。该方法还可包括:基于在该第一迭代中来自该多个集群中断控制器的否定确认(Nack)响应,由该中断控制器对该多个集群中断控制器执行第二迭代。在该第二迭代中,该给定集群中断控制器可被配置为给该相应处理器集群中的该多个处理器中的断电的处理器通电,并且尝试将该中断递送到该多个处理器。在一个实施方案中,串行地尝试将该中断递送到该多个集群中断控制器基于来自该多个集群中断控制器中的一个集群中断控制器的确认响应而终止。
***
本公开包括对“实施方案”或“实施方案”的组(例如,“一些实施方案”或“各种实施方案”)的引用。实施方案是所公开概念的不同具体实施或实例。对“实施方案”、“一个实施方案”、“特定实施方案”等的引用并不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些,以及落入本公开的实质或范围内的修改或替代。
本公开可讨论可由所公开的实施方案产生的潜在优点。并非所有这些实施方案的具体实施都将必然表现出任何或所有潜在优点。特定具体实施是否实现了优点取决于许多因素,其中一些因素在本公开的范围之外。事实上,存在许多原因导致落入权利要求范围内的具体实施可能不表现出任何所公开的优点中的一些或全部。例如,特定具体实施可包括在本公开的范围之外的其他电路,结合所公开的实施方案中的一个实施方案,该其他电路否定或减弱一个或多个所公开的优点。此外,特定具体实施(例如,具体实施技术或工具)的次优设计执行也可能否定或减弱所公开的优点。即使假设有技术的具体实施,优点的实现仍可取决于其他因素,诸如部署具体实施的环境情况。例如,提供给特定具体实施的输入可防止本公开中解决的一个或多个问题在特定场合发生,结果可能无法实现其解决方案的益处。考虑到本公开外部的可能因素的存在,本文所述的任何潜在优点都不应理解为是为了证明侵权行为而必须满足的权利要求限制。相反,此类潜在优点的识别旨在示出受益于本公开的设计者可用的一种或多种改进类型。永久性地描述此类优点(例如,陈述特定优点“可能出现”)并非旨在传达关于此类优点实际上是否可被实现的疑问,而是认识到此类优点的实现通常取决于附加因素的技术现实。
除非另行指出,否则实施方案是非限制性的。也就是说,所公开的实施方案并非旨在限制基于本公开起草的权利要求的范围,即使仅针对特定特征描述单个示例的情况下也是如此。本发明所公开的实施方案旨在为示例性的而非限制性的,而无需在本发明中进行任何相反的陈述。因此本申请意在允许涵盖所公开实施方案的权利要求、以及此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
例如,本申请中的特征可以任何合适的方式组合。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地讲,参照所附权利要求,从属权利要求的特征在适当的情况下可与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,可组合来自相应独立权利要求的特征。
因此,虽然所附从属权利要求可撰写成使得每个从属权利要求从属于单个其他权利要求,但也可设想附加从属关系。可设想符合本公开的从属特征的任何组合,并且这些组合可在本专利申请或另一专利申请中受权利要求书保护。简而言之,组合不限于所附权利要求中具体列举的那些。
在适当的情况下,还预期以一种格式或法定类型(例如,装置)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的对应权利要求。
***
因为本公开是法律文件,所以各种术语和短语可受到管理和司法解释的约束。特此给出公告,以下段落以及贯穿本公开提供的定义将用于确定如何解释基于本公开起草的权利要求。
除非上下文另有明确规定,否则对单数形式的项目的引用(即,前面有“一个”、“一种”或“该”的名词或名词短语)旨在表示“一个或多个”。因此,在不伴随上下文的情况下,对权利要求中的“项目”的引用并不排除该项目的附加实例。“多个”项目是指两个或更多个项目的集合。
词语“可”在本文中在允许的意义上(即,具有潜在可能的,能够的)进行使用,而不是在强制意义上(即,必须)进行使用。
术语“包含”和“包括”及其形式是开放式的,并且意指“包括但不限于”。
当在本公开中相对于选项列表使用术语“或”时,除非上下文另有提供,否则一般将理解为以包含性意义使用。因此,表述“x或y”等同于“x或y,或两者”,因此涵盖1)x但不是y,2)y但不是x,以及3)x和y两者。另一方面,短语诸如“x或y中的任一者,但不是两者都”使得清楚“或”以排他性意义使用。
表述“w、x、y或z,或它们的任何组合”或“...w、x、y和z中的至少一者”旨在涵盖涉及最多至该集合中元件总数的单个元件的所有可能性。例如,给定集合[w,x,y,z],这些短语涵盖集合中的任何单个元素(例如,w但不是x、y或z)、任何两个元素(例如,w和x,但不是y或z)、任何三个元素(例如,w、x和y,但不是z)以及所有四个元素。短语“...w、x、y和z中的至少一者”因此是指集合[w,x,y,z]中的至少一个元素,从而涵盖该元素列表中的所有可能的组合。该短语不应被解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例和z的至少一个实例。
在本公开中,各种“标签”可先于名词或名词短语。除非上下文另有提供,否则用于特征(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)的不同标签是指特征的不同实例。除此之外,除非另有说明,否则标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等)。
短语“基于”或用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
短语“响应于”和“响应”描述了触发效应的一个或多个因素。该短语不排除附加因素可影响或以其他方式触发效应的可能性,这些因素与指定因素联合使用或独立于指定因素。也就是说,效果可以仅仅响应于这些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于B执行A”。该短语指定B是触发A的执行或触发A的特定结果的因素。该短语不排除执行A也可能响应于某些其他因素,诸如C。该短语也不排除执行A可响应于B和C而联合执行。此短语也旨在覆盖A仅响应于B而执行的实施方案。如本文所用,短语“响应”与短语“至少部分地响应于”是同义的。类似地,短语“响应于”与短语“至少部分地响应于”是同义的。
***
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正***作。因此,被描述或表述为“被配置为”执行某个任务的实体指代用于实施该任务的物理的事物,诸如设备、电路、具有处理器单元的***和存储有可执行程序指令的存储器等。此短语在本文中不被用于指代无形的事物。
在一些情况下,各种单元/电路/部件在本文中可被描述为执行一组任务或操作。应当理解,这些实体“被配置为”执行那些任务/操作,即使没有具体指出。
术语“被配置为”并不旨在意指“可配置为”。例如,未编程的FPGA不会被认为是“被配置为”执行特定功能。然而,该未编程的FPGA可以“可配置为”执行该功能。在适当编程之后,FPGA然后可认为“被配置为”执行特定功能。
出于基于本公开的美国专利申请的目的,在权利要求中陈述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35U.S.C.§112(f)。如果申请人在基于本公开的美国专利申请的申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
在本公开中可描述不同的“电路”。这些电路或“电路”构成硬件,该硬件包括各种类型的电路元件,诸如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可为定制设计的,或取自标准库。在各种具体实施中,电路可视情况包括数字部件、模拟部件或两者的组合。某些类型的电路可通常被称为“单元”(例如,解码单元、算术逻辑单元(ALU)、功能单元、存储器管理单元(MMU)等)。此类单元也指电路或电路。
因此,在附图中示出并在本文中描述的所公开的电路/单元/部件和其他元件包括硬件元件,诸如前面段落中描述的那些硬件元件。在许多情况下,硬件元件在特定电路中的内部布置可通过描述该电路的功能来指定。例如,特定的“解码单元”可被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元“被配置为”执行该功能。对于计算机领域的技术人员而言,该功能规范足以暗示用于电路的一组可能的结构。
在各种实施方案中,如前面段落中所讨论的,电路、单元和由它们被配置为实现的功能或操作限定的其他元件,相对于彼此的布置和此类电路/单元/部件以及它们进行交互的方式形成硬件的微架构定义,该硬件最终在集成电路中制造或被编程到FPGA中以形成微架构定义的物理具体实施。因此,微架构定义被本领域的技术人员认为是可导出许多物理具体实施的结构,所有这些物理具体实施均落入由微架构定义所描述的更广泛的结构中。即,具有根据本公开提供的微架构定义的技术人员可在没有过度实验的情况下并且利用普通技术人员的应用,通过以硬件描述语言(HDL)诸如Verilog或VHDL编码电路/单元/部件的描述来实现该结构。HDL描述常常以可显现为功能性的方式来表达。但是对于本领域的技术人员而言,该HDL描述是用于将电路、单元或部件的结构转换为下一级具体实施细节的方式。此类HDL描述可采用以下形式:行为代码(其通常为不可合成的)、寄存器传输语言(RTL)代码(其与行为代码相比通常为可合成的)、或结构代码(例如,指定逻辑门及其连接性的网表)。可针对为给定集成电路制造技术设计的单元库来顺序地合成HDL描述,并可出于定时、功率和其他原因而被修改,以获得被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并与合成电路一起被捕获到集成电路设计中。该集成电路可包括晶体管和其它电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,HDL设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(FPGA)并且可在FPGA中实现。一组电路的设计与这些电路的后续低级具体实施之间的这种解耦通常导致这样的情形:其中电路或逻辑设计者从来不指定超出对电路被配置为做什么的描述的用于低级具体实施的一组特定结构,因为该过程是在电路实施过程的不同阶段执行的。
可使用电路元件的许多不同低级组合来实现电路的相同规格的事实导致该电路的大量等效结构。如所指出的那样,这些低级电路具体实施可根据制造技术、被选择用于制造集成电路的铸造厂、为特定项目提供的单元库等的变化而变化。在许多情况下,通过不同设计工具或方法进行的产生这些不同具体实施的选择可以是任意的。
此外,对于给定实施方案,电路的特定功能规范的单个具体实施通常包括大量设备(例如,数百万个晶体管)。因此,该信息的剪切体积使得提供用于实现单个实施方案的低级结构的完整叙述是不切实际的,更不用说大量等同的可能具体实施。为此,本公开描述了使用工业中常用的功能简写的电路的结构。
一旦充分了解了上面的公开,许多变型和修改对于本领域的技术人员而言将变得显而易见。本公开旨在使以下权利要求书被阐释为包含所有此类变型和修改。
Claims (16)
1.一种递送中断的***,包括:
多个集群中断控制器,其中所述多个集群中断控制器中的相应集群中断控制器与多个处理器集群中的相应处理器集群相关联,并且其中,所述多个处理器集群中的给定处理器集群包括多个处理器;以及
中断控制器,所述中断控制器耦接到所述多个集群中断控制器,其中所述中断控制器被配置为接收来自第一中断源的中断,并且基于所述中断被配置为:
执行尝试通过所述多个集群中断控制器递送所述中断的第一迭代;
基于在所述第一迭代中来自所述多个集群中断控制器的否定确认Nack响应,对所述多个集群中断控制器执行第二迭代;
其中在所述第一迭代中,所述多个集群中断控制器中的给定集群中断控制器被配置为尝试将所述中断递送到所述相应处理器集群中的所述多个处理器中的通电的子集中的各个处理器,而不尝试将所述中断递送到所述相应处理器集群中的所述多个处理器中未包括在所述子集中的处理器;以及
其中在所述第二迭代中,所述给定集群中断控制器被配置为给所述多个处理器中的断电的所述处理器通电并且尝试将所述中断递送到所述多个处理器。
2.根据权利要求1所述的***,其中在所述尝试通过所述多个集群中断控制器递送所述中断期间:
所述中断控制器被配置为向所述多个集群中断控制器中的第一集群中断控制器断言第一中断请求;以及
基于来自所述第一集群中断控制器的Nack响应,所述中断控制器被配置为向所述多个集群中断控制器中的第二集群中断控制器断言第二中断请求。
3.根据权利要求2所述的***,其中在所述尝试通过所述多个集群中断控制器递送所述中断期间:
基于来自所述第二集群中断控制器的第二Nack响应,所述中断控制器被配置为向所述多个集群中断控制器中的第三集群中断控制器断言第三中断请求。
4.根据权利要求2所述的***,其中在所述尝试通过所述多个集群中断控制器递送所述中断期间:
基于来自所述第二集群中断控制器的确认Ack响应以及无附加未决中断,所述中断控制器被配置为终止所述尝试。
5.根据权利要求1所述的***,其中在所述尝试通过所述多个集群中断控制器递送所述中断期间:
所述中断控制器被配置为向所述多个集群中断控制器中的第一集群中断控制器断言中断请求;以及
基于来自所述第一集群中断控制器的确认Ack响应以及无附加未决中断,所述中断控制器被配置为终止所述尝试。
6.根据权利要求1所述的***,其中在所述尝试通过所述多个集群中断控制器递送所述中断期间:
所述中断控制器被配置为向所述多个集群中断控制器中的一个或多个集群中断控制器串行地断言中断请求,所述断言由来自所述一个或多个集群中断控制器中的第一集群中断控制器的确认Ack响应终止。
7.根据权利要求6所述的***,其中所述中断控制器被配置为以可编程顺序串行地断言。
8.根据权利要求6所述的***,其中所述中断控制器被配置为:
基于所述第一中断源使用特定顺序串行地断言所述中断请求;以及
响应于来自第二中断源的第二中断,基于所述第二中断源使用不同顺序串行地断言第二中断请求。
9.根据权利要求1所述的***,其中在所述尝试通过所述多个集群中断控制器递送所述中断期间:
所述中断控制器被配置为向所述多个集群中断控制器中的第一集群中断控制器断言中断请求;以及
所述第一集群中断控制器被配置为基于到所述第一集群中断控制器的所述中断请求而向所述相应处理器集群中的所述多个处理器串行地断言处理器中断请求。
10.根据权利要求9所述的***,其中所述第一集群中断控制器被配置为基于来自所述多个处理器中的第一处理器的确认Ack响应而终止串行断言。
11.根据权利要求10所述的***,其中所述第一集群中断控制器被配置为基于来自所述第一处理器的所述Ack响应而将所述Ack响应传输到所述中断控制器。
12.根据权利要求9所述的***,其中所述第一集群中断控制器被配置为基于在处理器中断的串行断言期间来自所述相应集群中的所述多个处理器的Nack响应而将所述Nack响应提供到所述中断控制器。
13.根据权利要求1所述的***,其中所述中断控制器被包括在第一半导体基板上的第一集成电路上,所述第一集成电路包括所述多个集群中断控制器的第一子集,并且其中所述多个集群中断控制器的第二子集实现在单独的第二半导体基板上的第二集成电路上,并且其中所述中断控制器被配置为在尝试向所述第二子集递送之前向所述第一子集串行地断言中断请求。
14.根据权利要求13所述的***,其中所述第二集成电路包括第二中断控制器,并且其中所述中断控制器被配置为响应于所述第一子集拒绝所述中断而将所述中断请求传达到所述第二中断控制器,并且其中所述第二中断控制器被配置为尝试将所述中断递送到所述第二子集。
15.一种递送中断的方法,包括:
在中断控制器中接收来自第一中断源的中断;
执行串行地尝试将所述中断递送到多个集群中断控制器的第一迭代,其中所述多个集群中断控制器中的相应集群中断控制器与多个处理器集群中的相应处理器集群相关联,并且其中,所述多个处理器集群中的给定处理器集群包括多个处理器,其中在所述第一迭代中,所述多个集群中断控制器中的给定集群中断控制器被配置为尝试将所述中断递送到所述相应处理器集群中的所述多个处理器中的通电的子集中的各个处理器,而不尝试将所述中断递送到所述相应处理器集群中的所述多个处理器中未包括在所述子集中的处理器;以及
基于在所述第一迭代中来自所述多个集群中断控制器的非确认Nack响应,由所述中断控制器对所述多个集群中断控制器执行第二迭代,其中在所述第二迭代中,所述给定集群中断控制器被配置为给所述相应处理器集群中的所述多个处理器中的断电的处理器通电,并且尝试将所述中断递送到所述多个处理器。
16.根据权利要求15所述的方法,其中串行地尝试将所述中断递送到所述多个集群中断控制器基于来自所述多个集群中断控制器中的一个集群中断控制器的确认响应而终止。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063077375P | 2020-09-11 | 2020-09-11 | |
US63/077,375 | 2020-09-11 | ||
US17/246,311 | 2021-04-30 | ||
US17/246,311 US11630789B2 (en) | 2020-09-11 | 2021-04-30 | Scalable interrupts |
PCT/US2021/049780 WO2022056207A1 (en) | 2020-09-11 | 2021-09-10 | Scalable interrupts |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116157777A CN116157777A (zh) | 2023-05-23 |
CN116157777B true CN116157777B (zh) | 2024-06-11 |
Family
ID=80626671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180062431.9A Active CN116157777B (zh) | 2020-09-11 | 2021-09-10 | 能扩展的中断 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11630789B2 (zh) |
KR (2) | KR20230170995A (zh) |
CN (1) | CN116157777B (zh) |
DE (1) | DE112021004724T5 (zh) |
WO (1) | WO2022056207A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11630789B2 (en) * | 2020-09-11 | 2023-04-18 | Apple Inc. | Scalable interrupts |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604060A (zh) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | 用于处理中断的方法和装置 |
CN100349147C (zh) * | 2002-12-26 | 2007-11-14 | 英特尔公司 | 最低优先级中断的处理器功率状态的知晓分配的方法、***和装置 |
EP2463781A2 (en) * | 2010-12-07 | 2012-06-13 | Apple Inc. | Interrupt distribution scheme |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008065713A (ja) | 2006-09-08 | 2008-03-21 | Canon Inc | マルチプロセッサシステム及び割込み制御方法 |
KR20080048307A (ko) * | 2006-11-28 | 2008-06-02 | 삼성전자주식회사 | 멀티 프로세서 시스템의 인터럽트 전달 장치 및 방법 |
KR20080057150A (ko) * | 2006-12-19 | 2008-06-24 | 삼성전자주식회사 | 무선 네트워크 시스템 및 상기 무선 네트워크 시스템을구성하는 방법 |
US7849247B2 (en) * | 2008-10-14 | 2010-12-07 | Freescale Semiconductor, Inc. | Interrupt controller for accelerated interrupt handling in a data processing system and method thereof |
US8260996B2 (en) | 2009-04-24 | 2012-09-04 | Empire Technology Development Llc | Interrupt optimization for multiprocessors |
KR101717494B1 (ko) * | 2010-10-08 | 2017-03-28 | 삼성전자주식회사 | 인터럽트 처리 장치 및 방법 |
US8458386B2 (en) * | 2010-12-07 | 2013-06-04 | Apple Inc. | Atomic interrupt masking in an interrupt controller to prevent delivery of same interrupt vector for consecutive interrupt acknowledgements |
EP2490100B1 (en) | 2011-02-14 | 2014-10-15 | 2236008 Ontario Inc. | Suspendable interrupts for processor idle management |
US8575993B2 (en) * | 2011-08-17 | 2013-11-05 | Broadcom Corporation | Integrated circuit with pre-heating for reduced subthreshold leakage |
US8963933B2 (en) | 2012-07-23 | 2015-02-24 | Advanced Micro Devices, Inc. | Method for urgency-based preemption of a process |
US9442870B2 (en) * | 2012-08-09 | 2016-09-13 | Freescale Semiconductor, Inc. | Interrupt priority management using partition-based priority blocking processor registers |
US9009368B2 (en) | 2012-10-23 | 2015-04-14 | Advanced Micro Devices, Inc. | Interrupt latency performance counters |
US9678564B2 (en) * | 2012-12-21 | 2017-06-13 | Nxp B.V. | Multiprocessor system with interrupt distributor |
US9442869B2 (en) | 2014-01-24 | 2016-09-13 | Texas Instruments Incorporated | Programmable interrupt routing in multiprocessor devices |
KR102187912B1 (ko) | 2014-09-26 | 2020-12-07 | 인텔 코포레이션 | 인터럽트들의 세트들을 구성하는 장치 및 방법 |
US10394730B2 (en) * | 2014-11-14 | 2019-08-27 | Cavium, Llc | Distributed interrupt scheme in a multi-processor system |
US10067892B2 (en) * | 2015-03-06 | 2018-09-04 | Microchip Technology Incorporated | Microcontroller or microprocessor with dual mode interrupt |
US9747225B2 (en) * | 2015-05-05 | 2017-08-29 | Microsoft Technology Licensing, Llc | Interrupt controller |
US10585826B2 (en) * | 2016-01-25 | 2020-03-10 | Advanced Micro Devices, Inc. | Using processor types for processing interrupts in a computing device |
US11113216B2 (en) * | 2019-03-20 | 2021-09-07 | Mediatek Inc. | Dispatching interrupts in a multi-processor system based on power and performance factors |
US11327786B2 (en) * | 2020-07-21 | 2022-05-10 | Arm Limited | Distributing interrupt request to be handled by target virtual processor |
US11630789B2 (en) * | 2020-09-11 | 2023-04-18 | Apple Inc. | Scalable interrupts |
-
2021
- 2021-04-30 US US17/246,311 patent/US11630789B2/en active Active
- 2021-09-10 KR KR1020237042801A patent/KR20230170995A/ko active Application Filing
- 2021-09-10 KR KR1020237008723A patent/KR102614515B1/ko active IP Right Grant
- 2021-09-10 CN CN202180062431.9A patent/CN116157777B/zh active Active
- 2021-09-10 DE DE112021004724.8T patent/DE112021004724T5/de active Pending
- 2021-09-10 WO PCT/US2021/049780 patent/WO2022056207A1/en active Application Filing
-
2023
- 2023-04-17 US US18/301,837 patent/US12007920B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100349147C (zh) * | 2002-12-26 | 2007-11-14 | 英特尔公司 | 最低优先级中断的处理器功率状态的知晓分配的方法、***和装置 |
CN1604060A (zh) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | 用于处理中断的方法和装置 |
EP2463781A2 (en) * | 2010-12-07 | 2012-06-13 | Apple Inc. | Interrupt distribution scheme |
Also Published As
Publication number | Publication date |
---|---|
DE112021004724T5 (de) | 2023-07-27 |
US11630789B2 (en) | 2023-04-18 |
US20230251985A1 (en) | 2023-08-10 |
CN116157777A (zh) | 2023-05-23 |
KR102614515B1 (ko) | 2023-12-19 |
US12007920B2 (en) | 2024-06-11 |
KR20230069927A (ko) | 2023-05-19 |
WO2022056207A1 (en) | 2022-03-17 |
KR20230170995A (ko) | 2023-12-19 |
US20220083484A1 (en) | 2022-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11928467B2 (en) | Atomic operation predictor to predict whether an atomic operation will complete successfully | |
US11650825B2 (en) | Coprocessor synchronizing instruction suppression | |
US20230333851A1 (en) | DSB Operation with Excluded Region | |
US12007920B2 (en) | Scalable interrupts | |
US20230359557A1 (en) | Request Ordering in a Cache | |
US20240045680A1 (en) | Coprocessor Register Renaming | |
US11755331B2 (en) | Writeback hazard elimination using a plurality of temporary result-storage elements | |
US11886340B1 (en) | Real-time processing in computer systems | |
US11556485B1 (en) | Processor with reduced interrupt latency | |
US11809874B2 (en) | Conditional instructions distribution and execution on pipelines having different latencies for mispredictions | |
US12001847B1 (en) | Processor implementing parallel in-order execution during load misses | |
US12045615B1 (en) | Processing of synchronization barrier instructions | |
US20230244494A1 (en) | Conditional Instructions Prediction | |
US10514925B1 (en) | Load speculation recovery | |
US12008369B1 (en) | Load instruction fusion | |
US11630771B2 (en) | Poison mechanisms for deferred invalidates | |
WO2023150114A9 (en) | Conditional instructions prediction | |
US11900118B1 (en) | Stack pointer instruction buffer for zero-cycle loads | |
US11755333B2 (en) | Coprocessor prefetcher | |
US12050918B2 (en) | Coprocessor prefetcher | |
US20240095065A1 (en) | Multi-stage Thread Scheduling | |
US20240095176A1 (en) | Preemption Techniques for Memory-Backed Registers | |
US20240095031A1 (en) | Thread Channel Deactivation based on Instruction Cache Misses |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |