CN107111576B - 发布的中断架构 - Google Patents
发布的中断架构 Download PDFInfo
- Publication number
- CN107111576B CN107111576B CN201580057956.8A CN201580057956A CN107111576B CN 107111576 B CN107111576 B CN 107111576B CN 201580057956 A CN201580057956 A CN 201580057956A CN 107111576 B CN107111576 B CN 107111576B
- Authority
- CN
- China
- Prior art keywords
- interrupt
- cache line
- issued
- descriptor cache
- agent
- 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
- 230000015654 memory Effects 0.000 claims description 54
- 238000000034 method Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 12
- 230000002093 peripheral effect Effects 0.000 claims description 5
- 239000003795 chemical substances by application Substances 0.000 description 102
- 238000013519 translation Methods 0.000 description 34
- 238000004891 communication Methods 0.000 description 16
- 238000003860 storage Methods 0.000 description 15
- 239000013598 vector Substances 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 8
- 230000009466 transformation Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 239000004744 fabric Substances 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000001427 coherent effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000002955 isolation Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 230000008685 targeting Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000006880 cross-coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space 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)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
标识来自输入/输出(I/O)设备的中断并且标识与中断相关联的特定高速缓存线的地址。该高速缓存线对应于中断的目的地并且表示中断的一个或多个属性。向一致性代理发送获取该特定高速缓存线的所有权的请求,并且发送基于中断来在该高速缓存线上执行读取‑修改‑写入(RMW)操作的请求。
Description
相关申请的交叉引用
本申请要求保护2014年11月25日提交的名称为“POSTED INTERRUPTARCHITECTURE”的美国专利申请No.14/553,430的权益和优先权,通过引用将其整体合并于此。
技术领域
本公开关于计算系统,并且特别地(但不是排外地)关于差错处置。
背景技术
半导体处理和逻辑设计的进步已允许可存在于集成电路器件上的逻辑量的增加。作为必然的结果,计算机系统配置已经从系统中的单个或多个集成电路演变成存在于个体集成电路上的多个内核、多个硬件线程、和多个逻辑处理器,以及在此类处理器内集成的其他接口。处理器或集成电路典型地包括单个物理处理器管芯,在这种情况下该处理器管芯可包括任何数目的内核、硬件线程、逻辑处理器、接口、存储器、控制器基线器等等。
作为以更小的包装来适应更多处理能力的更大技能的结果,更小的计算设备已越来越流行。智能电话、平板电脑、超薄笔记本以及其他用户设备已呈指数级增长。然而,这些更小的设备依赖于对于超过形状因子的复杂处理和数据存储二者的服务器。因此,对高性能计算市场(即服务器空间)的需求也已增加。例如,在现代的服务器中,通常不仅仅具有多个内核的单个处理器会增加计算能力,而且多个物理处理器(也被称为复式插座)也会增加计算能力。但是随着处理能力连同计算系统中设备数目的增长,插座和其他设备之间的通信变得更关键。
实际上,互连已经从更传统的主要处置电气通信的多分支总线增长成促进快速通信的充分发展互连架构。不幸地是,随着对以甚至更高速率消耗的未来处理器的需求的增加,对应的需求被置于现有互连架构的能力。
在某些系统中可以支持虚拟化。一般来说,信息处理系统中的虚拟化的概念允许一个或多个操作系统(每个都是“OS”)的多个实例在单个信息处理系统上运行,即使每个OS都被设计成对系统以及其资源具有完整、直接控制。通常通过使用软件(例如虚拟机监视器或“VMM”)来实施虚拟化,以便向每个OS呈现具有OS可完全并直接控制的虚拟资源的“虚拟机”(“VM”)(包括一个或多个虚拟处理器),同时VMM保持用于实施虚拟化策略的系统环境,诸如在VM(“虚拟化环境”)之内共享和/或分配物理资源。每个OS以及在VM上运行的任何其他软件都被称为“客户”或“客户软件”,而“主机”或“主机软件”是在虚拟化环境之外运行的软件,诸如VMM。
信息处理系统中的物理处理器可例如通过支持进入虚拟化环境以在VM中的虚拟处理器(即在由VMM施加的约束下的物理处理器)上运行客户的指令来支持虚拟化。在虚拟化环境中,某些事件、操作和情况(诸如访问特权寄存器或资源的外部中断或尝试)可能被拦截,即促使处理器退出虚拟化环境以使得VMM可操作例如实施虚拟化策略(“VM退出”)。
附图说明
图1图示包括互连架构的计算系统的一个实施例。
图2图示包括分层栈的互连架构的一个实施例。
图3图示要在互连架构内生成或接收的分组的一个实施例。
图4图示用于互连架构的发射器和接收器对的一个实施例。
图5图示虚拟化系统的一个实施例。
图6图示虚拟化系统的另一个实施例。
图7图示发布的中断描述符高速缓存的表示。
图8是包括根复合体的系统的简化框图。
图9是表示根据至少一个实施例的发布的中断描述符的框图。
图10是示例发布的中断事务的流程图。
图11是处理发布的中断中的示例技术的流程图。
图12图示对于包括多个处理器的计算系统的框的一个实施例。
各个图中的相似参考数字和命名指示相似的元件。
具体实施方式
在下面的描述中,阐述了许多具体细节(诸如具体类型的处理器和系统配置、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统部件、具体测量结果/高度、具体处理器管线级和操作等等的示例),以便提供对本发明的透彻理解。然而,本领域技术人员将会认识到,不需要采用这些具体细节来实行本发明。在其他情况下,为了避免没必要地使本发明模糊不清,没有详细描述公知的部件或方法,诸如具体和备选处理器架构、对于所述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实施方式、采用代码的算法的具体表述、具体掉电和门控技术/逻辑、以及计算机系统的其他具体操作细节。
尽管可参考具体集成电路中(诸如计算平台或微处理器中)的能量守恒和能量效率来描述下面的实施例,但是其他实施例可适用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可被应用于还可从更好能量效率和能量守恒获益的其他类型的电路或半导体器件。例如,所公开的实施例不限于桌上型计算机系统或超级笔记本TM。并且还可在其他设备(诸如手持设备、平板电脑、其他薄笔记本、片上系统(SOC)设备和嵌入式应用程序)中使用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)、以及手持PC。嵌入式应用程序通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可以执行下面教导的功能和操作的任何其他系统。此外,本文所述的装置、方法和系统不限于物理计算设备,而是还可涉及对于能量守恒和效率的软件优化。如在下面的描述中将变得容易显而易见的,本文描述的方法、装置和系统的实施例(无论参考硬件、固件、软件或其组合)对以性能考虑来平衡的‘绿色技术’未来是至关重要的。
因为技术系统正前进,所以其中的部件正变得更复杂。因此,在各部件之间耦合且通信的互连架构的复杂性也正增加以确保满足最佳部件操作的带宽需求。此外,不同的市场细分需要互连架构的不同方面适合市场的需要。例如,服务器需要较高的性能,而移动生态系统有时能够为了功率节省牺牲整个性能。但是,大多数构造的单一目的是在最大功率节省的情况下提供最高可能的性能。在下面讨论将潜在地从本文描述的本发明的各方面获益的许多互连。
一种互连构造架构包括高速外围部件互连(PCI)(PCIe)架构。PCIe的一个目的是使得来自不同卖方的部件和设备能够在开放的架构中互操作,从而跨越多个市场细分;客户端(桌面计算机和手机),服务器(标准的和企业的)、以及嵌入式和通信设备。高速PCI是为各种各样的未来计算和通信平台定义的高性能、通用I/O互连。已经通过其修订保留了一些PCI属性(诸如其使用模型、载荷-存储架构、和软件接口),然而先前的并行总线实施已经被高度可扩缩的完全串行接口替换。高速PCI的更最近版本利用点对点互连、基于交换机的技术以及分组化协议中的进展来递送新等级的性能和特征。功率管理、服务质量(QoS)、热插拔/热调换支持、数据完整性和差错处理是高速PCI所支持的高级特征的其中的一些。
参考图1,图示了由将一组部件互连的点对点链路组成的构造的一个实施例。系统100包括耦合到控制器集线器115的处理器105和系统存储器110。处理器105包括任何处理元件,诸如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器105通过前端总线(FSB)耦合至控制器集线器115,诸如根集线器或根复合体。在一个实施例中,FSB106是如下文所述的串行点对点互连。在另一实施例中,链路106包括符合不同互连标准的串行差分互连架构。
系统存储器110包括任何存储器设备,诸如随机存取存储器(RAM)、非易失性(NV)存储器或可被系统100中的设备访问的其他存储器。系统存储器110通过存储器接口116耦合至控制器集线器115。存储器接口的示例包括双数据率(DDR)存储器接口、双通道DDR存储器接口、以及动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器115是高速外围部件互连(PCIe或PCIE)互连层次结构中的根集线器、根复合体或根控制器。控制器集线器115的示例包括芯片集、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥和根控制器/集线器。术语芯片集常常指代两个物理上分开的控制器集线器,即耦合至互连控制器集线器(ICH)的存储器控制器集线器(MCH)。要指出,当前的系统常常包括与处理器105集成的MCH,而控制器115以与下文所述的相似的方式与I/O设备通信。在一些实施例中,通过根复合体115来可选地支持对等路由。
在这里,控制器集线器115通过串行链路119耦合至交换机/桥接器120。也可被称为接口/端口117和121的输入/输出模块117和121包括/实施分层协议栈以提供控制器集线器115和交换机120之间的通信。在一个实施例中,多个设备能够被耦合至交换机120。
交换机/桥接器120将分组/消息从设备125向上游地(即层次结构朝向根复合体向上)路由至控制器集线器115并且向下游地(即层次结构远离根控制器向下)将分组/消息从处理器105或系统存储器110路由至设备125。在一个实施例中,交换机120被称为多个虚拟PCI至PCI桥接设备的逻辑组装。设备125包括要被耦合至电子系统的任何内部或外部设备或部件,诸如I/O设备、网络接口控制器(NIC)、插入卡、音频处理器、网络处理器、硬件驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。在PCIe术语中,诸如设备常常被称为端点。尽管没有被具体示出,但是设备125可包括PCIe到PCI/PCI-X桥接器以支持传统版本或其他版本的PCI设备。PCIe中的端点设备常常被分类为传统、PCIe或根复合体集成端点。
图形加速器130也通过串行链路132耦合至控制器集线器115。在一个实施例中,图形加速器130被耦合至MCH,其被耦合至ICH。交换机120以及由此I/O设备125然后被耦合至ICH。I/O模块131和118还实施分层协议栈来在图形加速器130和控制器集线器115之间通信。类似于上文的MCH讨论,图形控制器或图形加速器130自身可被集成在处理器105中。
转向图2,图示了分层协议栈的一个实施例。分层协议栈200包括任何形式的分层通信栈,诸如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈、或其他分层栈。尽管紧接下面参考图1-4的讨论与PCIe栈有关,但是相同的概念可被应用于其他互连栈。在一个实施例中,协议栈200是包括事务层205、链路层210和物理层220的PCIe协议栈。接口(诸如图1中的接口117、118、121、122、126和131)可被表示为通信协议栈200。作为通信协议栈的表示也可被称为实施/包括协议栈的模块或接口。
高速PCI使用分组来在各部件之间传达信息。分组被形成在事务层205和数据链路层210中以便将信息从发射部件载送到接收部件。当所传送的分组流过其他层时,它们被扩展有在这些层处处置分组所需的附加信息。在接收侧处发生反转过程并且分组被从它们的物理层220表示变换成数据链路层210表示且最终(对于事务层分组)被变换成可以被接收设备的事务层205处理的形式。
事务层。
在一个实施例中,事务层205用来提供设备的处理内核和互连架构(诸如数据链路层210和物理层220)之间的接口。就这一点来说,事务层205的主要责任是分组(即事务层分组或TLP)的组装和拆卸。变换层205通常管理对TLP的基于信用的流量控制。PCIe实施分割的事务(即具有通过时间分开的请求和响应的事务),从而允许在目标设备收集对响应的数据的同时链路载送其他业务。
另外,PCIe利用基于信用的流量控制。在该方案中,设备公布用于事务层205中的各接收缓冲器中的每一个的初始信用量。在链路的相对端处的外部设备(诸如图1中的控制器集线器115)对每个TLP所消耗的信用数目进行计数。如果事务没有超过信用限制,则该事务可被传送。在接收到响应时,信用量被修复。信用方案的优点是倘若没有遇到信用限制,则信用返回的等待时间不会影响性能。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括将数据传递至存储器映射的位置/从存储器映射的位置传递数据的读取请求和写入请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(诸如32比特地址)或长地址格式(诸如64比特地址)。配置空间事务被用来访问PCIe设备的配置空间。去到配置空间的事务包括读取请求和写入请求。消息空间事务(或简单地消息)被限定成支持各PCIe代理之间的带内通信。
因此,在一个实施例中,事务层205组装分组报头/有效载荷206。例如在图8中图示示例报头分组格式。可以基于各种协议规范(诸如在PCIe规范网站处的PCIe规范中找到的报头/有效载荷格式)来形成其他示例分组报头/有效载荷。
快速参考图3,图示了PCIe事务描述符的一个实施例。在一个实施例中,事务描述符300是用于载送事务信息的机制。就这一点来说,事务描述符300支持事务在系统中的标识。其他潜在使用包括跟踪默认事务排序的修改和事务与信道的关联。
事务描述符300包括全局标识符字段302、属性字段304和信道标识符字段306。在所图示的示例中,描绘包括本地事务标识符字段308和源标识符字段310的全局标识符字段302。在一个实施例中,全局事务标识符302对于所有尚未处理的请求都是唯一的。
根据一个实施方式,本地事务标识符字段308是由请求代理生成的字段,并且其对于要求对于该请求代理的完成的所有尚未处理的请求都是唯一的。此外,在该示例中,源标识符310唯一地标识PCIe层次结构内的请求者代理。因此,本地事务标识符字段308连同源ID 310一起提供事务在层次结构域内的全局标识。
属性字段304指定事务的特性和关系。就这一点来说,属性字段304潜在地被用于提供允许修改事务的默认处置的附加信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和无窥探字段318。在这里,可通过发起人向事务分配优先级来修改优先级子字段312。保留属性字段314被向左保留以用于未来或卖方限定的使用。可使用保留的属性字段来实施使用优先级或安全属性的可能的使用模型。
在该示例中,排序属性字段316被用来供应传达可修改默认排序规则的排序类型的可选信息。根据一个示例实施方式,为“0”的排序属性表示要应用默认排序规则,其中为“1”的排序属性表示放宽的排序,其中写入可以在同一方向上通过写入,并且读取完成可以在同一方向上通过写入。窥探属性字段318被利用来确定事务是否被窥探。如所示的,信道ID字段306标识事务所关联的信道。
链路层。
链路层210(也被称为数据链路层210)充当事务层205和物理层220之间的中间级。在一个实施例中,数据链路层210的责任是提供用于在两个部件链路之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受通过事务层205组装的TLP,应用分组序列标识符211(即标识号或分组号),计算并应用差错检测代码(即CRC 212),并且将经过修改的TLP提交给物理层220以用于横跨物理到外部设备的传输。
物理层。
在一个实施例中,物理层220包括逻辑子块221和电气子块222以便将分组物理地传送给外部设备。在这里,逻辑子块221负责物理层221的“数字”功能。就这一点来说,逻辑子块包括准备用于通过物理子块222的传输的传出信息的发射部分,和在将接收到的信息传递至链路层210之前标识并准备该接收到的信息的接收器部分。
物理块222包括发射器和接收器。由逻辑子块221向发射器供应符号,发射器使该符号序列化并且将其传送至外部设备上。向接收器供应来自外部设备的经过序列化的符号并且接收器将接收到的信号变换成比特流。该比特流被去序列化并且被供应给逻辑子块221。在一个实施例中,采用8b/10b传输代码,在这种情况下发射/接收10比特符号。在这里,具体的符号被用来对具有帧223的分组确定框架。另外,在一个示例中,接收器还提供从传入的串行流恢复的符号时钟。
如上文所阐述的,尽管参考PCIe协议栈的具体实施例讨论了事务层205、链路层210和物理层220,但是分层协议栈不限于此。实际上,可包括/实施任何分层协议。作为一个示例,被表示为分层协议的端口/接口包括:(1)组装分组的第一层,即事务层;对分组安排顺序的第二层,即链路层;以及传送分组的第三层,即物理层。作为一个具体示例,利用常见的标准接口(CSI)分层协议。
接下来参考图4,图示了PCIe串行点对点构造的一个实施例。尽管图示了PCIe串行点对点链路的一个实施例,但是串行点对点链路不限于此,因为它包括用于传送串行数据的任何传输路径。在所示的实施例中,基本PCIe链路包括两个、低电压、差分驱动信号对:传输对406/411和接收对412/407。因此,设备405包括将数据传送至设备410的传输逻辑406和从设备410接收数据的接收逻辑407。换言之,两个传输路径(即路径416和417)和两个接收路径(即路径418和419)被包括在PCIe链路中。
传输路径指代用于传送数据的任何路径,诸如传输线、铜线、光学线、无线通信信道、红外线通信链路或其他通信路径。两个设备(诸如设备405和设备410)之间的连接被称为链路(诸如链路415)。链路可支持一个分道—每个分道都表示差分信号对集合(一对用于传输,一对用于接收)。为了扩缩带宽,链路可聚合通过xN表示的多个分道(其中N是任何所支持的链路宽度,诸如1、2、4、8、12、16、32、64或更宽)。
差分对指代传送差分信号的两个传输路径,诸如线416和417。作为一个示例,当线416从低电压电平切换到高电压电平时(即上升沿)时,线417从高逻辑电平驱动到低逻辑电平(即下降沿)。差分信号潜在地表明更好的电气特性(诸如更好的信号完整性),即交叉耦合、电压过冲/下冲、振铃振荡等等。这允许实现更快速传输频率的更好时序窗口。
计算系统可以被虚拟化以允许在单个系统上运行多个环境。虚拟化性能已经被开发以使得实施虚拟化的服务器系统可以产生大量的空闲容量,其可以被用来最大化服务器系统的计算资源。然而,虚拟化可以引入其自己的附加开销,诸如通过虚拟化层的提供。已经寻求解决方案来解决该开销。例如,已经为此开发了处理器、芯片集、I/O和互连增强来提高虚拟化平台的性能、效率和鲁棒性。
如果在单独的物理机上运行每个环境,则I/O虚拟化解决方案提供将会发现的相同隔离。解决方案的目的也是为I/O操作提供近乎本机的性能。隔离应该提供存储器空间的分离。隔离可以分离I/O流、中断和(在共享设备的情况下)能力,以隔离控制操作、I/O操作和差错。在软件共享方法中,可以通过虚拟化层来强制执行隔离。对于在其中针对I/O绕过虚拟化层的共享硬件设备,可以使用其他的来强制执行隔离。
在一个示例中,在图5的简化框图中图示的系统500可以包括一个或多个I/O设备505、510、515,它们可以通过互连520连接到虚拟机540、545、550上主控的客户驱动器525、530、535。虚拟机管理器(VMM)555可以被提供用来实施基于虚拟软件的交换机,以便将分组路由到适当的虚拟机以及从适当的虚拟机路由分组。地址变换层560可以被用来在互连520和VMM 555的仿真层之间提供接口。在一些情况下,显著的CPU开销可被虚拟机管理器(VMM)用来实施基于虚拟软件的交换机,利用该CPU开销来降低I/O设备上的最大吞吐量。在某些情况下,通过软件交换机来处理每个分组可以利用多个CPU周期。因此,在一些实施方式中,VMM的I/O仿真层可以向I/O操作添加开销。
虚拟化地址变换560(诸如Intel® VT-d技术)可以促进存储器变换并确保使得设备能够执行去到/来自主机存储器的直接存储器访问(DMA)的存储器的保护。虚拟化变换560可以允许绕过VMM 555的I/O仿真层,从而导致针对虚拟机的吞吐量提高。在一个实施方式中,地址变换可以允许虚拟机直接访问物理地址(如果被VMM这样配置的话)。这可以允许虚拟机(例如540、545、550)内的设备驱动器(例如525、530、535)能够直接写入到I/O设备(例如505、510、515)的寄存器。类似地,虚拟化变换560可以直接写入到虚拟机的存储器空间,诸如DMA操作。
在一些实施方式中,VMM 555利用并配置虚拟化变换层560来在向I/O设备(例如505、510、515)发送数据以及从该I/O设备发送数据时执行地址变换。虚拟化变换层560可以提供基于硬件的机制来针对由I/O设备发出的DMA事务变换地址。在一些情况下,客户操作系统(OS)所看到的地址空间与主机的基础物理地址不相同。当客户OS直接与I/O设备会谈时,它以命令和缓冲器描述符来提供客户物理地址(GPA)。当I/O设备发出DMA事务时由该I/O设备来使用GPA,并且将其变换成主机物理地址(HPA),以使得DMA事务可以以已经被配置为DMA缓冲器的基础物理存储器页面为目标。虚拟化变换可以利用分组中的值作为对由VMM创建的查找表的索引。(一个或多个)字段可以对应于直接分配的功能中一个并且标识相关联的虚拟机。除了其他示例之外,通过标识虚拟机上下文并使用查找表,芯片集可以变换DMA地址,以使得它以正确的物理页面为目标并且它可以应用保护机制来确保DMA操作不会影响不相关的虚拟机的存储器空间。
图6示出图示支持虚拟化(包括基于硬件的虚拟化)的另一系统的框图。例如,I/O设备605(诸如网络接口控制器(NIC))可以被提供在该系统中并且可以在虚拟机(VM)(诸如虚拟处理器(例如虚拟CPU)625、630、640)中所实例化的多个虚拟化资源之间被共享。在一些实施方式中,VMM或其它软件可以管理单个I/O设备的多个虚拟资源的使用,以使得I/O设备看起来仅属于虚拟资源(例如625、630、640)中的每一个。在基于硬件的虚拟化中,可以提供I/O设备605,其被配置成将自身呈现为I/O设备的多个虚拟实例(例如610、615、620)。的确,在一些情况下,虚拟I/O设备的每个实例可以被映射到对应的虚拟资源(例如虚拟处理器625、630、640),以使得每个虚拟资源有效地具有其“自己的”I/O设备,从而简化从I/O设备605到多个虚拟资源以及从多个虚拟资源到I/O设备605的信息的路由。这可以通过允许将更高等待时间、基于软件的VMM(例如660、665)资源作为代替致力于其他功能来增加虚拟化系统的效率。
另外,如图6的示例系统中所图示的,在一些情况下,虚拟机可以被灵活地例示且由多个处理器(例如650、655)来主控。例如,在一个会话中,可以使用第一物理处理器(例如CPU 650)来执行主控第一虚拟处理器625的虚拟机。然而,在另一随后会话中,可以在被不同物理处理器(例如CPU 655)主控的虚拟机中主控相同的虚拟处理器625,等等。多处理器系统中的此类可变性仍然可以在I/O设备(包括虚拟和物理I/O设备(例如510))以及各种虚拟机(包括中断)之间的路由通信中引入附加的开销。
如所描述的,例如在以其整体并入本文的美国专利8,566,492中,可以支持发布的中断(例如使用集线器670(诸如根集线器或根复合体)的逻辑)。外部中断可以由I/O设备(例如510、610、615、620)来生成并且被VMM拦截以便被路由到适当的虚拟处理器。可替换地,虚拟化环境可在没有VM退出的情况下提供要被路由到虚拟处理器的外部中断,例如如果中断请求是由分配给当前主动VM的输入/输出(“I/O”)设备生成的,或者如果中断请求是同一VM中的两个虚拟处理器之间的处理器间中断。无论中断请求是否会引起VM退出,将中断路由至适当虚拟处理器可包括将中断请求从系统的客户视角映射到系统的主机视角。在现有信息处理系统中,VMM可负责每当虚拟处理器从一个物理处理器迁移到另一物理处理器时重新映射中断请求。
发布的中断可以提供包括以下各项的益处:通过将中断请求自动指引到迁移的虚拟处理器来优化系统性能和效率,通过降低VM退出的数目来潜在地增加系统性能(以使得中断的递送对应于虚拟资源的活动状态),以及与常规系统相比扩大了可能在虚拟化环境中的中断资源的数目。例如,在采用基于硬件的虚拟化的传统系统(诸如单根I/O虚拟化(SRIOV))中,当I/O设备(例如PCIe设备)发送中断(或者以消息(例如作为消息信号中断(MSI))的格式或者作为传统有线中断信号)时,可迫使该系统从虚拟机(VM)的客户环境退出到(例如虚拟机管理器(VMM)的)主机环境,以便处理该中断。这可以有效地逆转使用基于硬件的虚拟化解决方案的许多效率,因为每次系统从客户到主机往返过渡时会花费数千个周期,从而会节省并修复退出的客户环境的VM的状态。这大幅降低了对于此类系统中的I/O设备中断的系统级性能。此外,每个物理处理器的中断向量的数目按照惯例是受限的(例如在x86系统上受限于256),因为这些向量在每个主机设备上通常是每客户机静态分配的。这能够导致对可以分配给单个物理处理器的虚拟机的潜在数目的实质性限制,由此限制虚拟化的总体可伸缩性。
在发布的中断的一个示例中,可以通过接口来接收中断请求(例如作为信号或消息)。该中断请求可以供应“句柄(handle)”(诸如条目数目、地址、索引、指针或其他定位符),它可以被地址变换或查找逻辑用来在中断重新映射表(例如IRT)中标识与该句柄相对应的条目(例如IRTE)。该条目可以指示是否要在处置中断中使用发布的中断特征。在这种情况下,该条目可以指示用于存储描述中断的信息的一致性高速缓存存储器的线的地址(发布的中断描述符)。如在图7的简化框图700中所示的,发布的中断描述符高速缓存线(例如705、710、715、720)可以被存储在系统存储器730的一致性存储器区域725中,或者被存储在系统中的任何其他存储区域中。可以为可成为中断的目标的每个虚拟处理器(例如725、730、735、740)分配(例如通过软件,诸如使用VMM)发布的中断描述符。发布的中断描述符可以包括用于记录关于中断的信息的各种字段。在适当的时候,可以访问来自该高速缓存线的信息以便向目标虚拟处理器提供中断。
例如使用读取-修改-写入操作,发布的中断描述符可以从别的地方被读取和/写入到别的地方。在一些实施方式中,自动读取-修改-写入操作可以被用来允许由潜在的多个源访问发布的中断描述符,诸如用于更新发布的中断描述符的值、其他中断发布的硬件和软件(诸如VMM)的逻辑的多个实例。在确定向其预期虚拟处理器提供中断的机会时,中断通知事件可以被生成并且被路由至主控虚拟处理器的物理处理器,其中从对应发布的中断描述符提供信息的通知事件允许虚拟中断被提供给虚拟处理器。此类系统在提供实质性效率的同时仍会将重的载荷置于VMM和其他系统资源。
系统可以被提供有逻辑,用硬件、软件和/或固件来实施,以便提供解决以上问题中的一个或多个的特征和解决方案。例如,可以提供有限状态机(FSM)(例如被实施为FSM逻辑中的一个或多个模块)来在没有一方代理或VMM参与的情况下处置所有发布的中断。例如,FSM逻辑可以被提供用来在不依赖于一方代理的情况下处置对于每个根端口(例如PCIe根端口)的线中的发布的中断。这可以大幅提高中断性能并且还避免归因于中断递送等待时间的互连带宽损失。此外,在一些实施方式中,结合发布的中断递送执行的所有子操作可以被处理以便严格遵循对于发布的类型事务的互连排序规则(例如PCIe排序规则)。例如,除了其他示例之外,排序规则可以确保在对应中断达到内核之前将数据写入DRAM,所以当设备驱动器得到中断时DRAM中存在数据。
转向图8,简化框图800示出了系统的一个示例。该系统可以包括根端口、集线器或根复合体(在本文中被统称为根复合体)805,其包括被配置成支持互连的一个或多个特定协议(例如PCIe、QPI、HPI、USB等等)的协议代理810,诸如连接系统的各部件(包括I/O设备815)的一个或多个链路的互连构造。根复合体805可以进一步包括被配置成支持一致性协议并将协议消息和信号转换成一致性协议的消息和/或信号的一致性转换代理(或一致性代理)820。根复合体的代理810、820可以被完全包含在根复合体805的逻辑内并且可以根据如本文所述的发布的中断的原则来支持中断句柄的变换、发布的中断描述符的预提取、发布的中断描述符数据的提取、和中断通知生成。此类中断通知可以被发送给与中断的目标相对应的中断控制器825。
在图8中图示的一个示例中,可以从在根复合体(例如与一个或多个处理器相关联的根复合体,包括(在VM中使用物理处理单元(CPU)实例化的)虚拟化处理器)处的PCIe设备(或其他I/O设备)接收诸如MSI之类的中断。根复合体逻辑可以被提供用来将中断发送给地址变换引擎830,以便将包括在中断中的句柄值映射到包括在由地址变换引擎830管理的中断重新映射表的条目中的特定虚拟化资源的地址。可替换地,根复合体逻辑可以标识中断的目标地址、或句柄并且仅将描述该句柄的数据发送给地址变换引擎来进行变换。在一些示例中,地址变换引擎830可以被实施为PCIe根复合体的SRIOV变换引擎。作为变换的一部分,地址变换引擎830可以基于接收到的中断的句柄来提取重新映射表中的条目。该表可以将句柄映射到发布的中断描述符地址。因此,地址变换引擎可以响应于该句柄返回对应的发布的中断描述符地址。发布的中断描述符地址可以参考系统的物理存储器的一部分中的具体地址。可以在高速缓存一致性存储器区域中实施存储器的该部分。在一些实施方式中,每个发布的中断描述符可以对应于一致性存储器的该部分中的高速缓存线。因此,该地址可以参考对应的发布的中断描述符的特定高速缓存线。除了返回发布的中断描述符地址之外,还可以返回(或访问)关于发布的中断描述符的其他信息,诸如要在将物理中断(或中断通知)发送给处理器的中断逻辑中使用的虚拟中断向量数目和紧急信息。在一些实施方式中,在将句柄变换成发布的中断描述符地址之后,地址变换引擎830(或另一部件)可以促使描述符地址、中断向量数目、紧急信息等等被存储在高速缓存存储器或“变换高速缓存”835中以便稍后在处理发布的中断中使用。变换高速缓存可以存储来自对于特定重新映射的中断的重新映射表条目的值,以便在事务的预提取和提取阶段期间使用重新映射表条目值(其包括发布的中断描述符地址和虚拟向量)(例如与容纳高达256个中断和状态的发布的中断描述符相对)。例如,在发布的中断事务的稍后阶段期间(例如预提取和提取阶段),根复合体逻辑(例如协议代理810)可以访问变换高速缓存835以查找发布的中断描述符地址和其他信息以便在处置要被处理为发布的中断的接收到的中断请求中使用。
在一些实施方式中,协议代理810可以被提供用于处置特定互连协议(例如PCIe代理)的中断(其也可以强制执行协议的排序规则)。在一些情况下,协议代理810可能不会拥有兼容地支持相关一致性协议的功能。因此,可以提供诸如一致性转换代理820之类的附加逻辑以便与其他一致性代理和本地代理(例如840)对接并且将协议的消息、请求和事务(例如如通过协议代理810接收到的)变换成一致性-可兼容消息。此外,在图8的示例中,这样的架构可以被用来在更新发布的中断描述符高速缓存线中实现较少的等待时间。例如,协议代理810可以将预提取请求发送给用于对应于从地址变换引擎830接收到的发布的中断描述符地址的发布的中断描述符的一致性代理820。一致性代理820然后可以协商(例如来自本机代理840)对特定发布的中断描述符高速缓存线的所有权的请求。例如,一致性代理820可以在收集对应的发布的中断描述符的所有权之前执行窥探和其他适当的一致性任务。
一旦一致性代理820获得发布的中断描述符高速缓存线的所有权,该一致性代理820就可以指示高速缓存线已经被成功预提取。到这一点,协议代理810可能还没有受到协议排序规则的约束。然而,在一些示例中,为了在发布的中断描述符高速缓存线上执行读取-修改-写入(RMW)操作,协议代理810可以首先确保原始中断(例如原始MSI)(其是发布的类型的事务)满足协议的排序规则。例如,根复合体可以保持用于每个设备/端口的排序队列(例如FIFO),每个排序队列都表示从设备或链路进来的事务的顺序。在处理事务的同时,根复合体可以从排序FIFO队列读取事务并应用针对互连定义的排序规则(例如如在对应的互连协议规范(例如PCIe 3.0)中所定义的)并基于该事务是否通过排序准则来允许或阻止特定类型的事务(例如发布的、非发布的、完整的)。一旦已经建立了与排序规则的适当顺应性,协议代理就可以通过向一致性代理820发送RMW请求来继续进行提取阶段,以促使一致性代理820对发布的中断描述符执行自动RMW请求来潜在修改对应的发布的中断描述符的一个或多个值以及访问描述符的值。例如,作为读取-修改-写入的一部分,除了其他示例之外,一致性转换代理可以在发布的中断描述符中设置指示中断向量和有效中断的特定比特。
转向图9,示出了根据至少一个实施例的发布的中断描述符的表示。图9中的发布的中断描述符900可以包括一个或多个字段910、920、930和940。例如,字段910可以包括64字节的发布的中断描述符的最低32字节以形成256比特发布的中断请求寄存器(“pIRR”)。pIRR的每个比特可对应于用于与发布的中断描述符相对应的虚拟处理器的256个虚拟中断向量中的一个。pIRR的每个比特可被设置成发布针对对应虚拟中断向量的中断请求。
可以提供附加字段。例如,字段920可以包括三个更小的比特字段以指示要被用来向(例如主控目标虚拟处理器的物理处理器的)VMM告知待定发布的中断的通知事件的属性。在一个实施例中,用来向VMM告知发布的中断正待定的事件可以是对主控目标虚拟资源的物理处理器的物理中断请求。因此,通过使用可以支持超过一百个物理中断的物理处理器,本发明的实施例向每个物理处理器提供超过一百个虚拟处理器。确实,除了其他示例之外,发布的中断原则可以被应用于虚拟化上下文之外,以帮助扩大物理处理器可以支持的中断的数量。
在一个示例中,通知事件属性字段920可包括比特字段922、924和926。比特字段922(“Dest-ID”)可以包括32个比特以标识中断请求的目的地,其例如可以是用于其上正运行作为中断请求的目标的虚拟处理器的物理处理器的本地高级可编程中断控制器(APIC)的标识符。如所指出的,在一些实施方式中,目标虚拟处理器对其具有时间亲和力的物理处理器会改变,因为虚拟处理器被迁移,相应地可由VMM基于载荷平衡或任何其他原因利用与迁移有关的新本地APIC标识符来对该字段重新编程。目标虚拟处理器在任何给定时间对其具有时间亲和力的物理处理器在该描述中可被称为“通知-CPU”,因为它将是当存在对于该虚拟处理器的待定发布的中断时通知事件要被发送至的物理处理器。
比特字段924(“DM”)可包括指示用于通知事件的模式的单个比特。例如,在其中通知事件是物理中断的实施例中,DM可指示Dest-ID的值是否应该被解译为物理或逻辑标识符(“ID”)。此外,比特字段926(“物理向量”)可包括指示要被用于通知事件的物理向量的八个比特。当通知事件被递送给VMM时,该VMM可使用物理向量来确定哪个虚拟处理器在其发布的中断描述符中具有待定的发布的中断。因此,本发明的实施例为每个虚拟处理器提供单个物理向量,而不是为每个虚拟中断提供物理向量。
在又另一示例中,发布的中断描述符可以包括字段930(“抑制”或“S”),其可包括存储指示当将中断发布至该发布的中断描述符时是否要抑制通知事件的抑制标志的一个比特。除了其他示例之外,诸如VMM之类的软件可在任何时间设置该比特来抑制中断通知事件,以使得诸如当对应虚拟处理器因为正处于等待其各运行时间量子之一的调度器等待队列中而没有运行时事件的发送被推迟或取消。另外,可以提供字段940(“待定”或“P”),其包括存储指示是否存在对于还没有被提供服务的该发布的中断描述符的待定通知事件的待定标志的一个比特。如果在中断请求被发布时已经设置该标志,则不需要发送另一通知事件。当硬件发送通知事件时该标志可由硬件来设置,并且由作为对通知事件提供服务的一部分的软件来清除。除了其他示例和使用之外,协议逻辑可以访问发布的中断描述符的各字段中的一个或多个来确定是否通知已经被发送(例如当描述符示出待定中断和清除抑制比特时)。
返回图8,协议代理810可以包括基于每个根端口或协议的独立有限状态机(FSM)逻辑845。该FSM逻辑845可以允许每个协议代理独立地执行发布的中断操作,转而给出较高性能的中断递送。例如,每个协议代理(每端口的)可以实施相应的发布的中断FSM。该FSM可以执行“提取”阶段的步骤(例如图10的步骤1020、1025、1030、1035、1040、1045、1050)。当每个根端口实施独立发布的中断FSM时,每个端口可以独立地且与其他端口并行地处理(来自该特定端口的)一个发布的中断,由此在根复合体中提供更高的中断带宽。此类实施方式可以促进作为发布的事务类型的读取-修改-写入操作(与诸如PCIe原子学的一些原子学不同,该原子学是非发布的类型的事务)。可以通过在RMW报头中使用具体表示来实现该发布的读取-修改-写入以警告该操作的一致性逻辑以及还有从一致性代理(例如820)到协议代理(例如810)的专用数据返回总线(例如1045)。通过使用完整的发布的类型RMW,协议排序规则(诸如在PCIe规范中定义的该排序规则)可以被完全支持。此外,通过在发布的中断的所有子阶段中使用发布的类型事务,可以避免死锁场景(例如通过避免发布的以及非发布的依赖)。
如上文指出的,在提取阶段期间,FSM逻辑845可以将RMW请求中的读取-修改-写入信息(例如RMW报头和描述符RMW值)发送到一致性代理820。一致性代理820可以包括描述符RMW逻辑850。响应于RMW请求,描述符RMW逻辑850可以读取从存储器接收的发布的中断描述符并且修改发布的中断描述符以将该中断记录在发布的中断描述符中(例如在发布的中断描述符的(一个或多个)字段或结构中)。描述符RMW逻辑850还可以将发布的中断描述符的状态(例如待定字段)设置成指示“待定中断”,以便向对应的物理处理器指示在存储用于一个或多个虚拟化资源的发布的中断描述符的存储器区域中存在一个或多个中断待定。
伴随着将上述信息写入发布的中断描述符中,除了被包括在发布的中断描述符中的其他信息之外,描述RMW逻辑还可以捕获物理中断向量数目、目标物理处理器和紧急信息。该信息可以作为通知中断信息被返回报告给协议代理810的FSM逻辑845。在一些实施方式中,可以在专用总线上将该通知中断信息从一致性代理820发送至协议代理810。协议代理FSM逻辑845然后可以利用通知中断信息中的信息(例如待定字段、抑制字段等等)来计算物理中断是否应该被发送给对应物理处理器(例如主控由中断确定为目标的虚拟处理器的物理处理器)。如果协议代理810确定中断通知要被发送,则协议代理810(例如使用FSM逻辑845)可以诸如利用适当的通知中断向量和物理处理器标识符制造物理中断(例如制造MSI),并且将所制造的中断发送给中断控制器825(例如被确定为目标的物理处理器的中断控制器)。
转向图10,示出了流程图1000,其图示对应于通过包括协议代理810、一致性代理820和地址变换逻辑830的逻辑对发布的中断的处理的流程。物理中断或中断请求可以被协议代理810接收并标识1005,并且协议代理可以从中断标识句柄。通过使用该句柄,协议代理810可以将变换请求1010发送给地址变换逻辑830,其可以商议标识指示应该如何路由中断以及将中断路由至哪个虚拟机的表条目的重新映射表。地址变换模块830可以将重新映射表条目1015发送至协议逻辑,其可以包括以与句柄相关联的资源为目标的中断是发布的中断的指示。在发布的中断的情况下,重新映射表条目1015可以包括与分配给虚拟资源的发布的中断描述符高速缓存线相对应的存储器地址。
可以进入预提取阶段,并且协议代理可以向一致性代理820发送预提取描述符请求以获得与包括在重新映射表条目1015中的地址相关联的高速缓存线(或其他存储器块)的所有权。在获得发布的中断描述符的所有权时,一致性代理可以向协议代理810发送确认1025,该协议代理810可以对其进行解译以进入提取阶段。相应地,协议代理810可以向一致性代理820发送标识特定发布的中断描述符的提取描述符请求1030。在某些情况下,有可能在获取发布的中断描述符高速缓存线的所有权之后,例如因为来自内核请求、VMM或其他插座的请求的窥探该所有权可以被丢失。在这种情况下,当将RMW提取(例如1030)从协议代理发送给一致性转换代理时,一致性转换代理可以首先检查以确保它仍具有发布的中断描述符高速缓存线的所有权。如果确定一致性代理不具有描述符所有权,则该一致性转换代理可以尝试重新获取所有权并且将不发出“发送_数据”确认1035直到重新获取发布的中断描述符的所有权为止。协议代理可以在向前移动之前等待直到“发送_数据”确认1035被发送为止。一旦一致性转换代理确认或重新获得发布的中断描述符的所有权,该一致性转换代理就可以发出“发送_数据”信号1035,锁定描述符所有权并且响应于从用于发布的中断描述符高速缓存线的其他代理接收到的任何别的窥探而暂停。
中断1005(以及在一些情况下重新映射表条目1015)可以包括描述中断的性质的信息。协议代理810可以构建它将希望在发布的中断描述符上执行的期望RMW操作以便在发布的中断描述符中提供该信息。可以在发送给一致性代理的RMW信息1040中描述期望RMW操作。协议代理810响应于从一致性代理820接收到发送_数据确认信号1035而发送RMW信息1040。此外,在一致性代理820从协议代理接收到指示要对发布的中断描述符高速缓存线作出什么(如果有的话)改变的RMW信息之后,一致性转换代理可以对发布的中断描述符执行对应的读取-修改-写入操作以便更新发布的中断描述符字段以及读取经过更新的发布的中断描述符的值。在完成RMW操作之后,一致性代理820可以释放高速缓存线的所有权。
一致性代理820可以通过将发布的中断描述符信息1045提供给标识发布的中断描述符的值的协议代理810来报告RMW操作的完成。协议代理810可以使用该信息来例如基于发布的中断描述符的待定和/或抑制字段的值确定是否、何时以及在哪里将与发布的中断描述符相对应的中断通知(以及其他原始中断请求1005)发送给主控虚拟资源的物理处理器。例如,发布的中断描述符信息(和/或重新映射表条目)可以包括用于尚未完成的通知比特的值(“ON”)、紧急比特的值(“URG”)、以及抑制通知比特的值(“SN”)。当这些比特的值是((‘ON’==0)AND((“URG”==1)OR(‘SN’==0)))时,对应逻辑功能的结果导致为“1”的值指示中断通知要被发送。相应地,协议代理810然后可以在适当时发送中断通知1050。
在某些情况下,多个I/O设备可以发送以同一发布的中断描述符为目标的发布的中断(例如以同一虚拟化处理器为目标的中断)。可以在基本上相同的时间窗口内从不同的I/O设备发送这些中断,这可以引起或者在一致性转换代理内的或者横跨多个一致性转换代理(例如在不同根复合体插座中)的冲突状况。如果在一致性转换代理内发生冲突,则可以(例如在一致性转换代理中)提供逻辑来对特定发布的中断描述符的更新排序。例如,一致性转换代理可以维持排序队列(其可以将冲突请求放置在单个先进先出(FIFO)队列中),所以第一请求被首先服务,以此类推。这还可以确保不会出现横跨不同协议代理的向前进展问题并且还在更新发布的中断描述符的同时提防一致性问题(例如陈旧的副本)。在冲突横跨不同一致性代理的情况下,该冲突可以是冲突解决程序。例如,在特定实施方式中,主控主存储器中的特定发布的中断描述符高速缓存线的主机代理可以处置多个一致性代理之间的冲突的解决。这可以运行以确保在任何给定时间点处对于给定高速缓存线仅存在一个所有人并且当前所有人具有高速缓存线的最新副本。除了其他示例之外,此类机制还可以确保当同一描述符被设置成要被多个一致性代理更新时不存在与中断的丢失有关的问题并且不存在有关描述符的内容的误用。
转向图11,示出了图示在处理发布的中断中的示例技术的流程图1100。例如,由特定I/O设备生成且意图用于目的地设备的中断可以被标识1105。可以标识1110对应于该中断的发布的中断描述符高速缓存线的地址。可以发送1115获取高速缓存线的所有权的请求,并且当获取所有权时,可以发送1120在高速缓存线上执行读取-修改-写入(RMW)操作的请求。RMW操作可以基于中断的特性。可以从高速缓存线的读取接收1125信息并且该信息可以被用来确定1130是否将物理中断转发给其目的地。
应该指出,尽管在PCIe的上下文以及PCIe规范的特定修订内描述了许多上面的原理和示例,但是本文所述的原理、解决方案和特征可以被等同地适用于其他协议和系统。此外,要指出,如前面提到的,上述的装置、方法和系统可在任何电子设备或系统中实施。作为具体图示,下面的图提供用于利用如本文所述的发明的示例性系统。随着下面的系统被更详细地描述,从上文的讨论公开、描述和重新访问许多不同的互连。并且如容易认识到的,上文描述的进步可被应用于这些互连、构造或架构中的任一个。
参考图12,描绘了用于包括多处理器系统的计算系统1200的框图的实施例。如图12中所示,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个都可以是某一版本的处理器。在一个实施例中,1252和1254是串行点对点一致性互连构造(诸如高性能架构)的一部分。
尽管被示为仅具有两个处理器1270、1280,但是要理解本发明的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。
处理器1270和1280被示为分别包括集成存储器控制器单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可使用P-P接口电路1278、1288经由点对点(P-P)接口1250来交换信息。如图12中所示的,IMC 1272和1282将处理器耦合到相应存储器(即存储器1232和存储器1234),它们可以是本地附接至相应处理器的主存储器的各部分。
处理器1270、1280每个都使用点对点接口电路1276、1294、1286、1298经由各自的P-P接口1252、1254与芯片集1290交换信息。芯片集1290还沿着高性能图形互连1239经由接口电路1292与高性能图形电路1238交换信息。
共享高速缓存(未示出)可以被包括在任一个处理器中或者在这两个处理器之外;还经由P-P互连与处理器连接,以使得如果处理器被置于低功率模式中时,任一个或者两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片集1290可以经由接口1296被耦合至第一总线1216。在一个实施例中,第一总线1216可以是外围部件互连(PCI)总线,或者诸如高速PCI总线或另一第三代I/O互连总线的总线,尽管本发明的范围不限于此。
如图12中所示,各种I/O设备1214连同总线桥接器1218(其将第一总线1216耦合至第二总线1220)一起被耦合至第一总线1216。在一个实施例中,第二总线1220包括低引脚数(LPC)总线。在一个实施例中,各种设备被耦合至第二总线1220,该各种设备包括例如键盘和/或鼠标1222、通信设备1227和存储单元1228(诸如盘驱动器或常常包括指令/代码和数据1230的其他大容量存储设备)。此外,音频I/O设备1224被示为耦合至第二总线1220。要指出,其他架构是可能的,在这种情况下所包括的部件和互连架构会改变。例如,作为对图12的点对点架构的代替,系统可以实施多分支总线或其他此类架构。
尽管已经关于有限数目的实施例描述了本发明,但是本领域技术人员将会认识到根据其的许多修改和变化。预期使所附权利要求覆盖如落入该本发明的真实精神和范围内的所有此类修改和变化。
一个设计可能经过各种阶段,从创建到模拟到制造。表示一个设计的数据可以以许多方式来表示设计。首先,因为在模拟中是有用的,所以可使用硬件描述语言或其他功能描述语言来表示硬件。另外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某一阶段大多数设计都达到表示硬件模型中的各种设备的物理布局的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定用于产生集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者磁或光存储装置(诸如盘)可以是存储经由光或电波调制的或以其他方式生成的被传送的信息以传送此类信息的机器可读介质。当指示或载送代码或设计的电载波被传送时,执行电信号的拷贝、缓冲或重传以达到制成新的副本的程度。因此,通信供应商或网络供应商可将物品(诸如被编码成载波的信息)至少临时存储在有形机器可读介质上,从而体现本发明的实施例的技术。
如本文所使用的模块指代硬件、软件和/或固件的任何组合。作为一个示例,模块包括与非瞬时介质相关联的硬件(诸如微控制器)以便存储适用于由微控制器来执行的代码。因此,在一个实施例中,对模块的参考指代专门被配置成识别和/或执行非瞬时介质上所保持的代码的硬件。此外,在另一实施例中,模块的使用指代包括专门适用于由微控制器来执行以实行预定操作的代码的非瞬时介质。并且如可以被推断的,在又另一实施例中,术语模块(在该示例中)可指代微控制器和非瞬时介质的组合。通常被图示为分开的模块边界常常会变化并且潜在重叠。例如,第一和第二模块可在潜在保留某些独立硬件、软件或固件的同时共享硬件、软件、固件或其组合。在一个实施例中,术语逻辑的使用包括硬件(诸如晶体管、寄存器)或其他硬件(诸如可编程逻辑设备)。
在一个实施例中,短语“被配置成”的使用指代布置、放在一起、制造、供应来销售、输入和/或设计装置、硬件、逻辑或元件来执行指定或确定任务。在该示例中,如果装置或其元件被设计、耦合和/或互连以执行指定任务,则不是正在操作的该装置或其元件仍‘被配置成’执行所述指定任务。作为完全说明性示例,逻辑门可在操作期间提供0或1,但是‘被配置成’向时钟提供使能信号的逻辑门不包括可提供1或0的每个潜在逻辑门。反而,逻辑门是以在操作期间1或0输出会启用时钟的某一方式耦合的一种门。再一次要指出,术语‘被配置成’的使用不需要操作,而是作为代替将重点放在装置、硬件和/或元件的潜在状态,在这种情况下在该潜在状态中装置、硬件和/或元件被设计成当该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中短语‘用来’、‘能够/能够用来’、和或‘可操作用来’的使用指代某些装置、逻辑、硬件和/或元件以实现该装置、逻辑、硬件和/或元件以具体方式的使用的这种方式被设计。如上文指出的,在一个实施例中用来、能够用来或可操作用来的使用指代装置、逻辑、硬件和/或元件的潜在状态,在这种情况下该装置、逻辑、硬件和/或元件不是正在操作,但是以实现装置以具体方式的使用的这种方式被设计。
如本文所使用的,一个值包括数字、状态、逻辑型状态或二进制逻辑型状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑型值也被称为1和0,它们仅仅表示二进制逻辑状态。例如,1指代高逻辑电平并且0指代低逻辑电平。在一个实施例中,存储单元(诸如晶体管或闪存单元)可能能够保持单个逻辑型值或多个逻辑型值。然而,已经在计算机系统中使用值的其他表示。例如,十进制数10也可被表示为1010的二进制值以及字母A的十六进制。因此,一个值包括能够在计算机系统中保持的信息的任何表示。
此外,状态可用值或值的各部分来表示。作为一个示例,第一值(诸如逻辑型值)可表示默认或初始状态,而第二值(诸如逻辑型零)可表示非默认状态。另外,在一个实施例中术语重置和设置分别指代默认和经过更新的值或状态。例如,默认值潜在地包括高逻辑型值(即重置),而经过更新的值潜在包括低逻辑型值(即设置)。要指出,值的任何组合可被利用来表示任何数目的状态。
上述方法、硬件、软件、固件或代码集的实施例可经由存储在可由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实施。非瞬时机器可访问/可读介质包括提供(即存储和/或传送)以机器(诸如计算机或电子系统)可读形式的信息的任何机构。例如,非瞬时机器可访问介质包括随机存取存储器(RAM)(诸如静态RAM(SRAM)或动态RAM(DRAM));ROM;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声存储设备;用于保持从瞬时(传播的)信号(例如载波、红外线信号、数字信号)接收的信息的其他形式的存储设备;等等,要将它们与可从那里接收信息的非瞬时介质区分开。
用于对逻辑编程以执行本发明的实施例的指令可被存储在系统的存储器(诸如DRAM、高速缓存、闪速存储器或其他存储装置)内。此外,可以经由网络或以其他计算机可读介质的方式来分配该指令。因此,机器可读介质可包括用于存储或传送以机器(例如计算机)可读形式的信息的任何机构,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)、和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪速存储器、或在通过因特网经由电、光、声或其他形式的传播信号(例如载波、红外线信号、数字信号等等)的信息传输中使用的有形机器可读存储装置。因此,计算机可读介质包括适于存储或传送以由机器(例如计算机)可读形式的信息或电子指令的任何类型的有形机器可读介质。
以下示例关于根据本说明书的实施例。一个或多个实施例可提供标识来自输入/输出(I/O)设备的中断、标识与该中断相关联的特定高速缓存线(其对应于中断的目的地并表示中断的一个或多个属性)的地址的装置、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑、以及方法。可以向一致性代理发送获取特定高速缓存线的所有权的请求并且可以发送基于该中断来在高速缓存线上执行读取-修改-写入(RMW)操作的请求。
在至少一个示例中,接收到从特定高速缓存线读取的信息,并且基于该信息来作出是否将物理中断转发到目的地的决定。
在至少一个示例中,该信息是由一致性代理从特定高速缓存线读取的,并且该信息是从与RMW操作相关联的一致性代理接收的。
在至少一个示例中,该目的地包括由物理处理器主控的虚拟资源,并且物理中断要被发送给该物理处理器。
在至少一个示例中,该虚拟资源包括虚拟处理器。
在至少一个示例中,该特定高速缓存线是多个发布的中断描述符高速缓存线中的一个,并且每个发布的中断描述符高速缓存线对应于多个中断目的地中的相应一个并且每个中断目的地都包括一个虚拟资源。
在至少一个示例中,强制执行与中断的处置相关联的协议的排序规则。
在至少一个示例中,协议代理和一致性代理被包括在根复合体中并且该根复合体接收中断。
一个或多个实施例可提供一种实施地址变换器、一致性代理、协议代理和决策逻辑的装置、系统、机器可读存储装置、机器可读介质、电路、基于硬件和/或软件的逻辑。该地址变换器可以确定与中断标识符相关联的中断重新映射表中的条目,该条目包括特定高速缓存线的地址、该特定高速缓存线对应于中断的目的地,并且该特定高速缓存线用于描述中断的属性。该一致性代理可以获得特定高速缓存线的所有权并在该特定高速缓存线上发起读取-修改-写入(RMW)操作。该协议代理可以标识中断的一个或多个特性并请求一致性代理执行RMW操作。该特定高速缓存线用来描述一个或多个特性。决策逻辑可以基于要被包括在特定高速缓存线中的信息来确定是否转发中断。
在至少一个示例中,该决策逻辑被包括在协议代理中。
在至少一个示例中,该协议中断重新映射表将客户域中的地址映射到主机域中的地址。
在至少一个示例中,该协议代理标识句柄并向地址变换器询问地址。
在至少一个示例中,该信息包括特定高速缓存线的抑制值和待定值。
在至少一个示例中,特定协议的排序规则是要使用协议代理来强制执行的,并且该特定协议包括基于高速外围部件互连(PCI)(PCIe)的协议。
在至少一个示例中,该地址变换器、一致性代理、协议代理和决策逻辑中的一个或多个可以被包括在根复合体中。
在至少一个示例中,该目的地包括多个虚拟处理器中的特定一个,并且该系统进一步包括虚拟机管理器。
在至少一个示例中,一种系统可以包括根复合体以及一个或多个I/O设备,中断是从I/O设备中的一个接收的并且被意图用于多个虚拟处理器中的特定一个。
遍及该说明书对“一个实施例”或“实施例”的参考意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在遍及该说明书的各个位置中的出现不一定所有都指代同一实施例。此外,在一个或多个实施例中可以以任何适当方式来组合特定特征、结构或特性。
在前述说明书中,已经参考具体示例性实施例给出了详细描述。然而,将明显的是,可以在不偏离如所附权利要求中阐述的本发明的较广阔精神和范围的情况下对其作出各种修改和改变。相应地以说明性的意义而非限制性的意义来考虑说明书和附图。此外,实施例以及其他示例性语言的前述使用不一定指代相同的实施例或相同的示例,而是可指代不同且有区别的实施例、以及潜在相同的实施例。
Claims (26)
1.一种用于处理中断的装置,所述装置包括:
协议代理,用于:
标识来自I/O设备的中断;
标识与所述中断相对应的特定发布的中断描述符高速缓存线的地址,其中所述发布的中断描述符高速缓存线对应于所述中断的目的地,并且所述发布的中断描述符高速缓存线用来描述所述中断的一个或多个属性;
向一致性代理发送获取所述特定发布的中断描述符高速缓存线的所有权的请求;以及
响应于确认已获取所述所有权,发送基于所述中断在所述发布的中断描述符高速缓存线上执行读取-修改-写入操作的请求。
2.根据权利要求1所述的装置,其中所述协议代理进一步用于:
接收从所述发布的中断描述符高速缓存线读取的信息;以及
基于所述信息来确定是否将物理中断转发到所述目的地。
3.根据权利要求2所述的装置,其中所述信息是由所述一致性代理从所述发布的中断描述符高速缓存线读取的,并且所述信息是从与读取-修改-写入操作相关联的一致性代理接收的。
4.根据权利要求2所述的装置,其中所述目的地包括由物理处理器主控的虚拟资源,并且所述物理中断要被发送给所述物理处理器。
5.根据权利要求4所述的装置,其中所述物理处理器是从所述信息标识的。
6.根据权利要求4所述的装置,其中所述虚拟资源包括虚拟处理器。
7.根据权利要求1所述的装置,其中所述特定发布的中断描述符高速缓存线是多个发布的中断描述符高速缓存线中的一个,并且每个发布的中断描述符高速缓存线都对应于多个中断目的地中的相应一个,并且每个中断目的地都包括虚拟资源。
8.根据权利要求1所述的装置,其中所述协议代理用来强制执行与所述中断的处置相关联的协议的排序规则。
9.根据权利要求1所述的装置,其中所述协议代理和一致性代理被包括在根复合体中并且所述根复合体接收所述中断。
10.一种用于处理中断的装置,所述装置包括:
地址变换器,其用于确定与中断的句柄对应的中断重新映射表中的条目,其中所述条目包括特定发布的中断描述符高速缓存线的地址,所述特定发布的中断描述符高速缓存线对应于所述中断的目的地,并且所述发布的中断描述符高速缓存线用来描述所述中断的属性;
一致性代理,其用于获取所述特定发布的中断描述符高速缓存线的所有权,并且在所述特定发布的中断描述符高速缓存线上执行读取-修改-写入操作;
协议代理,其用于标识所述中断的一个或多个特性,并且响应于确认已获取所述所有权,请求所述一致性代理执行读取-修改-写入操作,其中所述特定发布的中断描述符高速缓存线用来描述所述一个或多个特性;以及
决策逻辑,其用于基于包括在所述特定发布的中断描述符高速缓存线中的信息来确定是否转发所述中断。
11.根据权利要求10所述的装置,其中所述决策逻辑被包括在所述协议代理中。
12.根据权利要求10所述的装置,其中所述协议中断重新映射表将客户域中的地址映射到主机域中的地址。
13.根据权利要求10所述的装置,其中所述协议代理用来标识所述句柄并且向所述地址变换器询问所述地址。
14.根据权利要求10所述的装置,其中所述信息包括所述特定发布的中断描述符的抑制值和待定值。
15.根据权利要求10所述的装置,其中特定协议的排序规则是要使用所述协议代理来强制执行的,并且所述特定协议包括基于快速外围部件互连(PCI)(PCIe)的协议。
16.一种用于处理中断的方法,所述方法包括:
标识来自I/O设备的中断;
标识特定发布的中断描述符高速缓存线的地址,其中所述发布的中断描述符高速缓存线对应于所述中断的目的地,并且所述发布的中断描述符高速缓存线用来描述所述中断;
向一致性代理发送获取所述特定发布的中断描述符高速缓存线的所有权的请求;以及
响应于确认已获取所述所有权,发送基于所述中断在所述发布的中断描述符高速缓存线上执行读取-修改-写入操作的请求。
17.根据权利要求16所述的方法,其中标识所述特定发布的中断描述符高速缓存线的所述地址包括:
标识包括在所述中断中的句柄值;以及
询问重新映射表来确定与所述句柄相对应的特定地址,其中所述特定地址包括所述特定发布的中断描述符高速缓存线的所述地址。
18.一种包括用于执行权利要求16-17中的任一项的方法的部件的系统。
19.根据权利要求18所述的系统,其中所述部件包括处理器,所述处理器执行代码以促使所述处理器执行权利要求16-17的步骤中的一个或多个。
20.一种用于处理中断的系统,所述系统包括:
处理器:
存储器;以及
根复合体,其包括:
代理,其用于:
标识寻址到目的地的中断;
标识特定发布的中断描述符高速缓存线的地址,其中所述发布的中断描述符高速缓存线对应于所述目的地,并且所述发布的中断描述符高速缓存线要被编码成描述所述中断;
向一致性代理发送获取所述特定发布的中断描述符高速缓存线的所有权的请求;以及
响应于确认已获取所述所有权,发送基于所述中断在所述发布的中断描述符高速缓存线上执行读取-修改-写入操作的请求。
21.根据权利要求20所述的系统,其中所述目的地包括多个虚拟处理器中的特定一个,并且所述系统进一步包括虚拟机管理器。
22.根据权利要求21所述的系统,进一步包括一个或多个I/O设备,其中所述中断是从所述I/O设备中的一个接收的并且打算用于所述多个虚拟处理器中的特定一个。
23.根据权利要求20所述的系统,进一步包括用于执行读取-修改-写入操作的高速缓存代理。
24.一种用于处理中断的设备,所述设备包括:
用于标识来自I/O设备的中断的装置;
用于标识特定发布的中断描述符高速缓存线的地址的装置,其中所述发布的中断描述符高速缓存线对应于所述中断的目的地,并且所述发布的中断描述符高速缓存线用来描述所述中断;
用于向一致性代理发送获取所述特定发布的中断描述符高速缓存线的所有权的请求的装置;以及
用于响应于确认已获取所述所有权,发送基于所述中断在所述发布的中断描述符高速缓存线上执行读取-修改-写入操作的请求的装置。
25.根据权利要求24所述的设备,其中用于标识特定发布的中断描述符高速缓存线的地址的装置包括:
用于标识包括在所述中断中的句柄值的装置;以及
用于询问重新映射表来确定与所述句柄相对应的特定地址的装置,其中所述特定地址包括所述特定发布的中断描述符高速缓存线的所述地址。
26.一种机器可读介质,在其上存储有指令,当所述指令被执行时使得计算设备执行根据权利要求16-17中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/553430 | 2014-11-25 | ||
US14/553,430 US9952987B2 (en) | 2014-11-25 | 2014-11-25 | Posted interrupt architecture |
PCT/US2015/059821 WO2016085645A1 (en) | 2014-11-25 | 2015-11-10 | Posted interrupt architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107111576A CN107111576A (zh) | 2017-08-29 |
CN107111576B true CN107111576B (zh) | 2021-06-04 |
Family
ID=56010359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580057956.8A Active CN107111576B (zh) | 2014-11-25 | 2015-11-10 | 发布的中断架构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9952987B2 (zh) |
EP (1) | EP3224732A4 (zh) |
CN (1) | CN107111576B (zh) |
TW (1) | TWI570563B (zh) |
WO (1) | WO2016085645A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9952987B2 (en) | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
GB2541133B (en) * | 2015-06-16 | 2018-01-03 | Nordic Semiconductor Asa | Interrupt generating unit |
US10922252B2 (en) * | 2015-06-22 | 2021-02-16 | Qualcomm Incorporated | Extended message signaled interrupts (MSI) message data |
JP6515771B2 (ja) * | 2015-10-07 | 2019-05-22 | 富士通コネクテッドテクノロジーズ株式会社 | 並列処理装置及び並列処理方法 |
US10509729B2 (en) | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US10565335B2 (en) * | 2016-03-04 | 2020-02-18 | Montana Systems Inc. | Event-driven design simulation |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10318456B2 (en) * | 2017-11-06 | 2019-06-11 | International Business Machines Corporation | Validation of correctness of interrupt triggers and delivery |
US11080088B2 (en) | 2018-12-19 | 2021-08-03 | Intel Corporation | Posted interrupt processing in virtual machine monitor |
EP3924821A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
WO2020165666A1 (en) * | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with blocking indicator |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
BR112021016093A2 (pt) | 2019-02-14 | 2021-10-26 | International Business Machines Corporation | Interrupção dirigida para virtualização de multiníveis |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
EP3924819A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
EP3924817A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt virtualization |
CN110235111B (zh) * | 2019-04-30 | 2020-06-26 | 长江存储科技有限责任公司 | 电子设备和管理闪存的读取电平的方法 |
CN111400210B (zh) * | 2020-03-10 | 2022-05-06 | 苏州盛科通信股份有限公司 | 一种集中式MACsec包处理芯片的中断处理方法及装置 |
CN111722916B (zh) * | 2020-06-29 | 2023-11-14 | 长沙新弘软件有限公司 | 一种通过映射表处理msi-x中断的方法 |
US11467962B2 (en) | 2020-09-02 | 2022-10-11 | SiFive, Inc. | Method for executing atomic memory operations when contested |
CN113612936A (zh) * | 2021-08-05 | 2021-11-05 | 中国大恒(集团)有限公司北京图像视觉技术分公司 | 一种csi相机高帧率图像采集方法 |
US20230134657A1 (en) * | 2021-11-04 | 2023-05-04 | Intel Corporation | User-level interrupts in virtual machines |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
CN104064207A (zh) * | 2013-03-15 | 2014-09-24 | 英特尔公司 | 光存储器扩展架构 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8341360B2 (en) * | 2005-12-30 | 2012-12-25 | Intel Corporation | Method and apparatus for memory write performance optimization in architectures with out-of-order read/request-for-ownership response |
GB2462258B (en) | 2008-07-28 | 2012-02-08 | Advanced Risc Mach Ltd | Interrupt control for virtual processing apparatus |
US9003170B2 (en) * | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
US8566492B2 (en) * | 2009-12-31 | 2013-10-22 | Intel Corporation | Posting interrupts to virtual processors |
US8296482B2 (en) * | 2010-06-27 | 2012-10-23 | Intel Corporation | Translating requests between full speed bus and slower speed device wherein the translation logic is based on snoop result and modified cache state |
US8984228B2 (en) | 2011-12-13 | 2015-03-17 | Intel Corporation | Providing common caching agent for core and integrated input/output (IO) module |
US9235538B2 (en) | 2013-02-07 | 2016-01-12 | Red Hat Israel, Ltd. | Injecting interrupts in virtualized computer systems |
US9952987B2 (en) | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
-
2014
- 2014-11-25 US US14/553,430 patent/US9952987B2/en active Active
-
2015
- 2015-10-23 TW TW104134919A patent/TWI570563B/zh active
- 2015-11-10 EP EP15862521.0A patent/EP3224732A4/en not_active Ceased
- 2015-11-10 WO PCT/US2015/059821 patent/WO2016085645A1/en active Application Filing
- 2015-11-10 CN CN201580057956.8A patent/CN107111576B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
CN104064207A (zh) * | 2013-03-15 | 2014-09-24 | 英特尔公司 | 光存储器扩展架构 |
Also Published As
Publication number | Publication date |
---|---|
EP3224732A4 (en) | 2018-07-18 |
EP3224732A1 (en) | 2017-10-04 |
CN107111576A (zh) | 2017-08-29 |
WO2016085645A1 (en) | 2016-06-02 |
US20160147679A1 (en) | 2016-05-26 |
TW201633146A (zh) | 2016-09-16 |
US9952987B2 (en) | 2018-04-24 |
TWI570563B (zh) | 2017-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107111576B (zh) | 发布的中断架构 | |
US11663135B2 (en) | Bias-based coherency in an interconnect fabric | |
US11657015B2 (en) | Multiple uplink port devices | |
EP3726392B1 (en) | Non-posted write transactions for a computer bus | |
CN108337910B (zh) | 用于软件定义的互连交换机的架构 | |
US11238203B2 (en) | Systems and methods for accessing storage-as-memory | |
US11204867B2 (en) | PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory | |
JP6147840B2 (ja) | ルートポート及びRPIE(RootPortIntegratedEndpoint)のレジューム時間を向上させるための方法、装置及びシステム | |
US10437616B2 (en) | Method, apparatus, system for optimized work submission to an accelerator work queue | |
CN116472523A (zh) | 器件互连中的源排序 | |
US20220414020A1 (en) | Software interface to xpu address translation cache | |
US20230013023A1 (en) | ARCHITECTURAL INTERFACES FOR GUEST SOFTWARE TO SUBMIT COMMANDS TO AN ADDRESS TRANSLATION CACHE IN XPUs |
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 |