CN111752607A - 用于处理器中的批量寄存器访问的系统、装置和方法 - Google Patents
用于处理器中的批量寄存器访问的系统、装置和方法 Download PDFInfo
- Publication number
- CN111752607A CN111752607A CN202010115175.2A CN202010115175A CN111752607A CN 111752607 A CN111752607 A CN 111752607A CN 202010115175 A CN202010115175 A CN 202010115175A CN 111752607 A CN111752607 A CN 111752607A
- Authority
- CN
- China
- Prior art keywords
- registers
- message
- core
- bulk
- write
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- 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
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Transfer Systems (AREA)
Abstract
在一个实施例中,一种装置包括批量写入电路,用于生成批量写入消息以发送到目的地代理,以使目的地代理将包括寄存器内容的数据写入多个寄存器中,多个寄存器中的至少一些包括非连续寄存器。批量写入消息可以包括:第一消息头;第一组块头,包括多个寄存器的第一子集中的第一寄存器的地址;和第一净荷部分,具有用于多个寄存器的第一子集的寄存器内容。描述并要求保护其他实施例。
Description
技术领域
实施例涉及访问处理器中的寄存器。
背景技术
在许多处理器中,核和其他处理电路对本地存储在寄存器或其他内部临时存储位置中的数据执行操作。为了读取或写入在处理电路外部的寄存器内容,各种通信协议提供了寄存器读取和写入流。通常,这些流被布置成使得对于单个读取或写入操作,仅对应的单个寄存器的内容被读取或写入。这种经由基于数据包的构造(fabric)的通信可能消耗相对大量的开销,因为每个寄存器访问数据包包括头信息,用于路由以及识别数据包类型和其他信息。在一些协议中,该寄存器访问开销会以不期望的方式降低构造效率。这类开销因以下事实而进一步加剧:核或其他处理电路可能包括许多并非位于递增地址位置的寄存器,从而无法使用某些类型的对多个寄存器的递增访问。
附图说明
图1是根据本发明的实施例的基本互连架构的框图。
图2是根据本发明的实施例的互连架构的进一步细节的框图。
图3是根据本发明的实施例的SoC的高层次框图。
图4是根据本发明的另一实施例的系统的框图。
图5是根据本发明的实施例的边带互连的框图。
图6是根据本发明的实施例的方法的流程图。
图7是根据本发明的另一实施例的方法的流程图。
图8是根据本发明的另一实施例的方法的流程图。
图9是根据本发明的又一实施例的方法的流程图。
图10是根据本发明的又一实施例的方法的流程图。
图11是根据本发明的又一实施例的方法的流程图。
图12是根据本发明的实施例的片上系统的框图。
图13是由互连一组组件的点对点链路组成的构造的实施例。
图14是根据实施例的片上系统设计的实施例。
图15是根据本发明的实施例的系统的框图。
具体实施方式
在各种实施例中,通过提供使得能够用单个消息访问多个寄存器的协议消息来增强通信协议。这种访问包括对多个寄存器的读取访问和写入访问。实际上,在一些情况下,可以使用单个寄存器读取消息或寄存器写入消息对大量寄存器(包括位于连续地址或递增地址的一些寄存器以及非递增定位的其他寄存器)进行读取或写入。
在本文描述的特定实施例中,通信协议被设置有批量读取消息、批量写入消息和批量读取完成消息。这些消息中的每一个可以包括单个头和多个部分,其中,这些部分中的每一个与具有递增地址的寄存器中的一些子集关联。以此方式,可以用单个协议消息来读取或写入核或其他处理电路的所有或基本上所有寄存器上下文,从而极大地减少了在不同代理之间传递这种上下文时所涉及的开销量。以此方式,这些消息类型优化了寄存器访问的总线利用率。虽然本文的实施例是在多核处理器或其他片上系统(SoC)的上下文中描述的,更具体地说,是在这类设备的片上代理之间的通信的上下文中描述的,但是应理解,本发明的范围不限于此。此外,应理解,虽然本文描述的特定实施例是关于在边带互连系统上使用的通信协议,但是实施例同样适用于主通信通道。
在实施例中,批量写入消息具有以下属性:该消息具有专用操作码(与其他寄存器写入不同,因为消息的格式不同);该消息包含寄存器地址列表和数据;地址是紧密的,所以相邻地址用基址和寄存器数来描述;相邻地址的块称为组块(chunk),消息头中的属性适用于随后的所有寄存器。进而,目的地代理解析该消息,并将其转换为多个寄存器访问。批量写入消息可以是报告的或非报告的。对非报告的批量写入消息的完成消息是不带数据的标准完成消息。
在实施例中,批量读取消息具有以下属性:该消息具有专用操作码(与其他寄存器读取不同,因为消息的格式不同);该消息包含寄存器地址列表;地址是紧密的,所以相邻地址用基址和寄存器数来描述;消息头中的属性适用于随后的所有寄存器。进而,目的地代理解析该消息,并将其转换为多个寄存器访问。消息接收者将所需的数据返回为带数据的完成消息。
借助实施例,与基于数据包的构造上的开销相比,数据通信的效率因子大大提高。以此方式,在一些情况下,数据包通信的开销部分相对于数据内容变得可忽略。作为示例,当用在基于数据包的构造中以传递核的保存/恢复上下文以用于低功率状态进入和退出时,等待时间可以减小到二分之一和四分之一之间。以此方式,鉴于这种减小的等待时间,可以实现更多的节省功率的机会。此外,应理解,等待时间减小和伴随的功率减小可以在保持给定构造宽度的同时而实现。也就是说,不是通过增加构造宽度(这会增加成本、路由复杂度和功耗)来增加带宽,而是可以保持给定通信协议的固有宽度并实现提高的效率。
实施例可以用在许多不同类型的系统中。作为示例,本文描述的实现方式可以结合半导体器件来使用,例如处理器或能够在单个半导体管芯上制造的其他半导体器件。在特定实现方式中,设备可以是SoC或其他高级处理器或芯片组,它们包括各种同构和/或异构处理代理以及附加组件(例如,联网组件(例如,路由器、控制器、网桥设备、设备、存储器等))。
一些实现方式可以用在根据给定规范(例如,半导体制造商发布的集成片上系统构造(IOSF)规范,以提供用于附连芯片(包括SoC)内的知识产权(IP)块的标准化管芯上互连协议)设计的半导体器件中。这类IP块可以具有不同类型,包括通用处理器(例如,有序核或乱序核)、固定功能单元、图形处理器、IO控制器、显示控制器、媒体处理器等。通过使互连协议标准化,可以为在不同类型的芯片中广泛使用IP代理而实现一个框架。因此,半导体制造商不仅能够跨多种客户群高效地设计不同类型的芯片,而且还能够经由规范使得第三方能够设计要并入这些芯片中的逻辑(例如,IP代理)。此外,通过为互连协议的许多方面提供多个选项,可以高效地容纳设计的重用。虽然本文结合该IOSF规范描述了实施例,但是应理解,本发明的范围不限于此,并且实施例可以用在许多不同类型的系统中。
现在参照图1,示出了根据本发明的实施例的基本互连架构的框图。如图1所示,系统10可以是SoC或任何其他半导体器件(例如,高度集成的处理器复合体或集成IO中枢)的一部分,并且包括充当各种组件之间的互连的构造20。在所示的实现方式中,这些组件包括IP代理30和40,它们可以是独立的IP块,以提供各种功能,例如计算能力、图形能力、媒体处理能力等。因此,在一个实施例中,这些IP代理是具有符合IOSF规范的接口的IP块或逻辑器件。如进一步所见,构造20还与桥50接口。虽然在图1的实施例中为了便于说明而未示出,但是应理解,桥50可以充当例如在同一芯片上的或在一个或多个不同芯片上的其他系统组件的接口。
如将在下面进一步描述的,图1中所示的每个元件,即构造、IP代理和桥,可以包括一个或多个接口以处理各种信号的通信。可以根据IOSF规范定义这些接口,该IOSF规范定义了用于在这些接口上通信的信号、用于代理之间的信息交换的协议、用于发起和管理信息交换的仲裁和流控制机制、所支持的地址解码和转译能力、用于带内或带外通信的消息传送、功率管理、测试、验证和调试支持。
IOSF规范包括可以为每个代理提供的3个独立接口,即主接口,边带消息接口以及可测试性和调试接口(测试用设计(DFT)、调试用设计(DFD)接口)。根据IOSF规范,代理可以支持这些接口的任何组合。具体来说,代理能够支持0-N个主接口、0-N个边带消息接口和可选的DFx接口。然而,根据规范,代理必须支持这3个接口中的至少一个。
构造20可以是在不同代理之间移动数据的硬件元件。注意,构造20的拓扑将是产品特定的。作为示例,构造可以被实现为总线、层级结构总线、级联集线器等。现在参照图2,示出了根据本发明的实施例的互连架构的进一步细节的框图。如图2所示,IOSF规范定义了三种不同的构造,即主接口构造112、DFx构造114和边带构造116。主接口构造112用于代理与存储器之间(例如,主机处理器(例如,中央处理器(CPU)或其他处理器)与代理之间)的所有带内通信。主接口构造112可以进一步使得能够在代理与所支持的构造之间传递对等事务。所有事务类型,包括存储器、输入输出(IO)、配置和带内消息传送,都可以经由主接口构造112来传递。因此,主接口构造可以充当用于在对等体之间传送的数据和/或与上游组件的通信的高性能接口。
在各种实现方式中,主接口构造112实现分离事务协议,以实现最大并发性。也就是说,该协议提供了请求阶段、批准阶段以及命令和数据阶段。在各种实施例中,主接口构造112支持三种基本请求类型:报告、非报告和完成。通常,报告事务是这样一种事务,当源进行了发送时,源认为该事务已完成,源不接收关于事务的完成消息或其他确认消息。报告事务的一个这种示例可以是写入事务。与之相比,非报告事务是源直到接收到返回消息(即,完成消息)才认为完成。非报告事务的一个示例是读取事务,在其中,源代理请求读取数据。相应地,完成消息提供所请求的数据。
此外,主接口构造112支持不同通道的概念,以提供一种用于整个系统中的独立数据流的机制。如将进一步描述的,主接口构造112自己可以包括发起事务的主控接口和接收事务的目标接口。主控接口可以进一步细分为请求接口、命令接口和数据接口。请求接口可以用于为事务的命令和数据的移动提供控制。在各种实施例中,主接口构造112可以支持PCI排序规则和枚举。
继而,边带接口构造116可以是用于传递所有带外信息的标准机制。以此方式,可以避免为给定实现方式设计的专用线路,从而增强了跨多种芯片的IP重用能力。因此,与使用专用线路来处理带外通信(例如,状态、中断、功率管理、熔丝分配、配置阴影、测试模式等)的IP块相反,根据IOSF规范的边带接口构造116使所有带外通信标准化,从而促进了模块化并减少跨不同设计的对IP重用的验证要求。通常,边带接口构造116可以用于传递非性能关键信息,而不是用于性能关键数据传送(性能关键数据通常可以经由主接口构造112来传递)。
如图2进一步所示,IP代理130、140和150可以各自包括对应的主接口、边带接口和DFx接口。然而,如上所述,每个代理不必包括这些接口中的每一个,并且在一些实施例中,给定的IP代理可以仅包括单个接口。
使用IOSF规范,可以设计具有多种不同功能的各种类型的芯片。现在参照图3,示出了根据本发明的实施例的SoC的高层次框图。如图3所示,SoC 200可以包括各种组件,所有这些组件可以被集成在单个半导体管芯上以在高速和低功率下提供各种处理能力,从而消耗相对少量的面积。如图3中所见,SoC 200包括多个核2050-205n。在各种实施例中,核205可以是相对简单的有序核或更复杂的乱序核。或者,在单个SoC中可以存在有序核和乱序核的组合。如所见,核205可以经由一致性互连215互连,一致性互连215进一步耦合到缓存存储器210(例如,共享的最后一级缓存(LLC))。虽然本发明的范围不限于此,但是在一个实施例中,一致性互连215可以符合可从Intel Corporatin,Santa Clara,Califonia获得的快速路径互连(QPI)TM规范。
如图3中进一步所见,一致性互连215可以经由桥220与构造250通信,构造250可以是IOSF构造。一致性互连215还可以经由集成存储器控制器225与片外存储器(为了便于说明,在图3的实施例中未示出)通信,并且进一步通过桥230与构造250通信。
如图3中进一步所见,各种组件可以耦合到构造250,包括内容处理模块(CPM)240,其可以用于执行各种操作,例如安全处理、加密功能等。此外,显示处理器245可以是对关联的显示器渲染视频的媒体处理流水线的一部分。
如进一步所见,构造250可以进一步耦合到IP代理255。虽然在图3的实施例中为了便于说明仅示出了单个代理,但是应理解,在不同实施例中多个这样的代理是可能的。此外,为了使得能够与其他片上器件进行通信,构造250还可以与PCIeTM控制器260和通用串行总线(USB)控制器265进行通信,PCIeTM控制器260和USB控制器265可以根据这些协议与各种设备进行通信。最后,在图3的实施例中示出了桥270,其可以用于与其他协议的附加组件进行通信,例如开放核协议(OCP)或ARM高级微控制器总线体系结构(AMBA)协议。虽然在图3的实施例中以这些特定组件示出,但是应理解,本发明的范围不限于此,并且在不同实施例中,可以存在附加组件或不同组件。
此外,应理解,虽然在图3中示为单管芯SoC实现方式,但是实施例还可以实现在多个芯片经由非IOSF接口彼此通信的系统中。现在参照图4,示出了根据本发明的另一实施例的系统的框图。如图4所示,系统可以包括SoC 200’,其可以包括与以上关于图3所讨论的那些组件相似的许多组件以及附加的管芯外接口275。因此,SoC 200’可以与另一芯片280进行通信,芯片280可以包括各种功能,以使得能够在这两个芯片之间进行通信,以及根据一种或多种不同规范与各种片外设备(例如,不同外设)进行通信。具体地,第二芯片280被示为包括管芯外接口282,以使得能够与SoC 200’进行通信,管芯外接口282继而与构造290(其可以是根据本发明的实施例的IOSF结构)进行通信。如所见,构造290还可以耦合到与片外设备进行通信的各种控制器,包括PCIeTM控制器292、USB控制器294和桥296。
如上所述,在各种实施例中,带外通信可以经由边带消息接口。现在参照图5,示出了根据本发明的实施例的边带互连的框图。如图5所示,边带接口系统175包括多个路由器180和190,它们在图5的实施例中被示为经由点对点(PTP)互连185耦合。继而,每个路由器可以耦合到各种端点,这些端点可以是例如给定系统的IP代理或其他组件。具体地,路由器180耦合到多个端点186a-186e,并且路由器190耦合到多个端点196x-196z。
在各种实现方式中,边带消息(包括如本文所述的批量读取和写入消息)可以在一个或多个扩展头中携带附加头信息。如在本文中所使用的那样,术语“附加头信息”用于指代与根据给定接口规范的标准头中存在的信息相比更多量的信息(以及更多潜在的不同类型)和/或不同布置。在一个实施例中,每个扩展头可以是常规头的长度,在本文描述的实施例中,长度是一个双字(DW)。消息中的扩展头的数量可以是产品特定的。系统中的不同代理可以发起用不同数量的扩展头扩展的消息。为了识别扩展头的存在,在一些实施例中,在每个消息的标准头中可以存在扩展头(EH)指示符(例如,单个比特),以指示可选扩展头的存在,即增加了标准头长度的另一头。继而,每个扩展头中的EH指示符指示标准头长度的后续扩展头的存在。如果存在,可以在标准头之后(例如,在具有DW标准头长度的系统中的第一个DW之后)附加一个或多个扩展头。
现在参照图6,示出了根据本发明的实施例的方法的流程图。如图6所示,方法600是用于由发送者生成和发送批量写入消息的方法。这种发送者可以是处理器或其他SoC的寻求将多个非连续寄存器值写入到给定目的地的任何给定代理。在各种实施例中,方法600可以由硬件电路、固件、软件和/或其组合来执行。作为示例,发送者可以是例如在初始化时或从低功率状态退出之后,要将代理的全上下文发送到例如目的地代理以用于加载这些值的代理。在其他情况下,当代理寻求将其上下文发送到目的地(例如,给定存储)时,它可以发送批量写入消息。
在任何情况下,方法600开始于:形成具有批量写入操作码的批量写入消息的头(方框610)。该操作码可以具有用于识别该消息是批量写入消息的预定值。消息头中可以存在其他信息,包括目的地标识符、源标识符、安全信息等。在一些情况下,消息头可以包括基头和扩展头。基头可以由双字构成,并且扩展头也可以由双字构成。当然,头的其他大小和格式也是可能的。扩展头可以包括与批量写入消息关联的附加信息,例如安全信息(例如,发起者(SAI)的安全属性)。
接下来,控制进行到方框620,在这里,可以为值要被写入到的第一组块(即,第一组或组块连续寄存器)形成组块头。该组块头可以包括各种信息,包括与连续寄存器组块中的第一寄存器的地址对应的基址,以及用于识别该组块中的连续寄存器的数量的计数的长度值。在一个实施例中,该计数可以采取与组块中的寄存器的总宽度(例如,按双字计)对应的值的形式。在实施例中,该组块头可以是双字,但是其他实现方式是可能的。并且注意,该组块头是批量写入消息的净荷的一部分,而不是消息头本身。
接下来,控制进行到方框630,在这里,可以用组块中的寄存器的值来形成净荷。在一个特定实现方式中,寄存器可以是32位寄存器,使得组块净荷可以包括N个双字,其中,N是组块中的连续寄存器的数量。
仍然参照图6,接下来确定是否存在要写入的附加组块(菱形框640)。如果是,则在方框650,递增组块计数,即单独组块的数量(每个组块包括一个或多个连续寄存器),并且控制返回到方框620。
相反,当确定没有其他组块要写入批量写入消息中时,控制进行到方框660。在方框660,可以发送批量写入消息。该消息可以包括头、组块头和组块净荷。在实施例中,可以将该批量写入消息经由例如本文所述的边带互连系统从源代理发送到目的地代理。在一个实施例中,批量写入消息可以具有表1中所示的格式。通过使用本发明的实施例,可以减少发送多个寄存器的值的开销,从而使有效带宽更高,进入和退出低功率状态的等待时间更快,如示例那样。应理解,虽然在图6的实施例中以这种高层次示出,但是许多变化和替代是可能的。
表1
现在参照图7,示出了根据本发明的另一实施例的方法的流程图。如图7所示,方法700是用于接收和处理批量写入消息的方法。在各种实施例中,方法700可以由硬件电路、固件、软件和/或其组合来执行。
如图所示,方法700可以开始于:在目的地代理处接收批量写入消息(方框710)。作为示例,目的地代理可以是要将批量写入消息的信息存储在其本地存储(例如,寄存器)中的给定处理电路。在其他情况下,目的地代理可以是存储器件,例如在进入低功率状态之前,核的上下文要被存储到的片上存储器。在任何情况下,在方框720,对消息的头进行解码,以将消息识别为批量写入消息类型。作为示例,目的地代理可以解析头中的将消息识别为批量写入消息的操作码。
仍然参照图7,控制接下来进行到方框730,在这里,对组块头进行解码,以识别组块中的第一寄存器的基址。即,该基址是该组块内的要写入的第一寄存器的可寻址位置。接下来,控制进行到方框740,在这里,可以将组块净荷的数据写入连续位置。例如,在写入批量写入消息以将上下文加载到核的情况下,可以将组块净荷中的值数据(例如,双字)写入连续寄存器中的给定一个寄存器。
仍然参照图7,接下来,在菱形框750确定在批量写入消息中是否存在附加组块。如果是,则在方框760递增组块计数,并且控制回到方框730,以用于对下一组块头的进一步解码。相反,如果确定消息中的所有组块均已写入它们的目的地位置,则控制进行到方框770,在这里,可以将完成消息发送到源代理。在成功执行批量写入的情况下,该完成消息指示批量写入消息的成功完成。虽然在图7的实施例中以这种高层次示出,但是许多变化和替代是可能的。
现在参照图8,示出了根据本发明的另一实施例的方法的流程图。如图8所示,方法800是用于由请求者生成和发送批量读取消息的方法。在各种实施例中,方法800可以由硬件电路、固件、软件和/或其组合来执行。这种请求者可以是处理器或其他SoC的寻求从给定目标读取多个非连续寄存器值的任何给定代理。作为示例,请求者可以是要接收上下文的代理。在其他情况下,当代理在宕机(crash dump)期间寻求读取目标代理的上下文时,它可以发送批量读取消息。
在任何情况下,方法800开始于:形成具有批量读取操作码的批量读取消息的头(方框810)。该操作码可以具有用于识别该消息是批量读取消息的预定值。如上关于批量写入消息所述的那样,在头中可以存在附加信息。
接下来,控制进行到方框820,在这里,形成组块部分。用于第一组块的组块部分可以包括各种信息,包括与连续寄存器组块中的第一寄存器的地址对应的基址,以及用于识别该组块中的连续寄存器的数量的计数的长度值。
仍然参照图8,接下来确定是否存在要读取的附加组块(菱形框830)。如果是,则在方框840递增组块计数,并且控制回到方框820。
相反,当确定没有其他组块要读取时,控制进行到方框850,在这里,可以发送批量读取消息。该消息包括头和组块部分。在实施例中,可以将该批量读取消息经由例如本文所述的边带互连系统从源代理发送到目标代理。在一个实施例中,批量读取消息可以具有表2所示的格式。
表2
应理解,虽然在图8的实施例中以这种高层次示出,但是许多变化和替代是可能的。
现在参照图9,示出了根据本发明的又一实施例的方法的流程图。如图9所示,方法900是用于由目标代理接收和处理批量读取消息的方法。在各种实施例中,方法900可以由硬件电路、固件、软件和/或其组合来执行。
如图所示,方法900可以开始于:在目标代理处接收批量读取消息(方框910)。作为示例,目标代理可以是要提供批量读取消息所请求的信息的给定处理电路。在方框920,对消息的头进行解码,以例如基于操作码,将消息识别为批量读取消息类型。
仍然参照图9,控制接下来进行到方框930,在这里,可以准备批量读取完成消息头,并将其发送到源代理。然后,在方框940,对组块部分进行解码,以识别组块中的第一寄存器的基址以及组块中的要读取的连续寄存器的数量。注意,退出的顺序可以是不同的,使得直到准备好发送第一读取数据,才发送批量读取完成消息头。
在任何情况下,在方框950,流水线读取可以例如由目标代理的端点逻辑来执行,该端点逻辑对批量读取消息进行解码,并将各寄存器读取发出到组块中的寄存器,以获得寄存器内容,并将它们打包在一起作为带数据的单个完成消息。由于这是按流水线方式完成的,因此端点逻辑每个周期推送读取操作,并且在较短的等待时间内,它开始每个周期获得完成双字(Dword)(在没有背压的情况下)。还在方框950,该端点逻辑还开始向源代理发送具有组块净荷的完成数据(Dword)。借助这种读取到目标代理中以及从目标代理发出完成消息的流水线,该协议支持因初始等待时间或任何暂缓发出Dword完成的到达的背压而不推出数据的周期。
仍然参照图9,接下来在菱形框950确定在批量读取消息中是否存在附加组块部分。如果是,则在方框970递增组块计数,并且控制返回到方框940,以用于对下一个组块部分的进一步解码。相反,如果确定已经读取了所有组块部分并发送了完成数据,则该方法结束。在批量读取成功的情况下,完成消息包括批量读取完成消息头和每一个所请求的组块部分的组块净荷。在实施例中,用于批量读取消息的完成消息可以具有表3的格式。虽然在图9的实施例中以这种高层次示出,但是许多变化和替代是可能的。
表3
在一些情况下,对于错误处理,可以报告关于任何寄存器访问是否失败的指示。实施例定义了一种用于响应并允许发起者知道在所解析的寄存器访问中是否发生任何失败的方式。对于批量读取,可以发生专用处理,因为甚至在大多数已解析的读取开始之前就发送了数据包头中的错误指示。批量写入时,非报告地发送该消息。目的地IP可以通过在完成消息中设置不成功响应状态,来通知关于从批量写入生成的任何不成功寄存器写入。批量读取消息是非报告的,所以,如果目的地未取得整个批量消息,则在不带数据的完成消息中发送不成功响应状态。如果取得了批量读取消息,则响应为带数据的成功完成消息。在目的地处从批量读取生成的错误或不成功读取访问(即,不可访问或未实现的寄存器)可以如下处理:如果不成功读取访问发生在最后一次寄存器访问之前,则完成消息被缩短,并且终止于剩余的寄存器数据。消息的剩余请求将被忽略;如果批量读取消息的最后一次寄存器访问不成功,则完成消息将被扩展为包含一个额外的伪数据DWord。简而言之,任何偏离预期消息大小的消息长度都可以视为批量读取完成的错误指示。
现在参照图10,示出了根据本发明的又一实施例的方法的流程图。更具体地,图10中所示的方法1000是用于经由功率管理代理控制给定源代理进入低功率状态的方法。在各种实施例中,方法1000可以由硬件电路、固件、软件和/或其组合来执行。在一个实施例中,功率管理代理可以是与核或其他处理单元的集合关联的多个分布式功率管理代理之一。继而,功率管理代理可以与SoC的功率控制器(例如,PCU)进行通信。
如所示,方法1000开始于:接收对给定源代理进入低功率状态的请求(方框1010)。例如,该低功率状态请求可以用于给定核进入深度低功率状态,其中,它的上下文将在进入低功率状态之前被发送到保留存储。为了使得这种低功率状态进入能够以减少的等待时间发生,实施例可以利用批量读取消息协议,在核进入低功率状态之前快速获得核的完整上下文。
如图10所示,响应于该低功率状态请求,控制进行到方框1020,在这里,功率管理代理可以命令源代理完成未决的工作负荷,并将结果发送到目的地(例如,给定的缓存层次结构)。在核进入低功率状态之前,在方框1030,功率管理代理生成批量读取消息,以通过批量读取来请求源代理提供其上下文,使得信息能够被传送到保留存储。更具体地说,功率管理代理可以生成批量读取消息,以从核获得寄存器上下文,以用于传送到给定的保留存储。
仍然参照图10,接下来在方框1040,功率管理代理将批量读取消息发送到源代理。响应于该请求消息,功率管理代理在方框1050例如通过具有寄存器内容的完成消息(即,对批量读取消息的完成消息),以流水线方式从源代理接收寄存器上下文。并且当接收到寄存器上下文时,功率管理代理将寄存器上下文发送到保留存储(方框1050)。在一个实施例中,该保留存储可以是片上存储,例如所谓的C6静态随机存取存储器(SRAM)。此后,功率管理代理可以使源代理进入期望的低功率状态(方框1060)。注意,借助如图10的实施例,与对各寄存器读取以获得核状态相比,这种将上下文存储到保留存储可以以减少的等待时间发生。因此,可以大大降低进入低功率状态的等待时间。应理解,虽然在图10的实施例中以这种高层次示出,但是许多变化和替代是可能的。
现在参照图11,示出了根据本发明的又一实施例的方法的流程图。更具体地,图11中所示的方法1100是用于经由功率管理代理控制给定目标代理从低功率状态退出的方法。如所示,方法1100开始于:接收对给定目标代理退出低功率状态的请求(方框1110)。为了使得该低功率状态退出能够以减少的等待时间发生,实施例可以利用批量写入消息协议,将核的完整上下文快速写入核的寄存器中。
如图11所示,响应于该低功率状态退出请求,控制进行到方框1120,在这里,功率管理代理可以命令目标代理上电。然后在方框1130,功率管理代理将读取请求发送到保留存储,以获得寄存器上下文。然后在方框1140,功率管理代理接收带数据的完成消息,并生成批量写入消息以打包上下文,以用于发送到核。此后,在方框1150,功率管理代理将批量写入消息发送到目标代理。
仍然参照图11,接下来在方框1160,功率管理代理接收指示批量写入成功完成的完成消息,使得目标代理以减少的等待时间准备好进入正常操作,如本文所实现的那样。应理解,虽然在图11的实施例中以这种高层次示出,但是许多变化和替代是可能的。
实施例提供了效率提升。在实施例中,用于确定写入或读取响应的数据效率的计算为:数据效率=(要写入的DWord的数量)/(在构造上发送的DWord的总数量)。单个寄存器读取完成的读取响应效率固定在33%。与之相比,对批量读取的完成消息的效率约为100%(所发送的DWord数量越大,越接近100%)。单个寄存器写入消息的写入效率固定在25%。与之相比,批量写入消息的理论效率取决于IP具有多少个地址组块:具有单组块连续DWord的IP的效率接近100%;以及具有非常分散的寄存器空间的IP的效率接近50%。借助实施例,所有IP寄存器的平均批量写入效率与单个寄存器写入访问的性能相比可以提高77%。如果IP具有统一的寄存器,则该效率可以提高到~90%。在边带全双工构造的实施例中,可以并发发送读取请求和读取完成。这意味着对于读取而言,吞吐量限制在读取请求与读取完成之间是最差的。用于确定读取请求的效率的计算为:读取请求效率=(消息中的寄存器的数量)/(在构造上发送的DWord的总数量)。单个寄存器读取请求具有33%的固定效率。与之相比,批量读取的效率与范围为50%-100%的批量写入相同。批量读取效率可以与大约77%的批量写入相同,从而与单个寄存器读取访问相比,实现了2倍的性能。
现在参照图12,示出了根据本发明的实施例的片上系统的框图。如图12所示,SoC1200包括耦合到多个构造(包括诸如本文所述的主可扩展构造和边带互连系统)的多种不同的代理。
在图12所示的高层次中,存在多个核域,每个核域包括多个核(12100–12103和12104–12107),给定域的每个核耦合到多个分布式功率管理代理(PMA)1215a–1215b中的一个。
在实施例中,PMA 1215可以继而耦合到PCU 1220,PCU 1220充当SoC 1200的总功率控制器。因此,响应于SoC 1200内的请求和/或操作状况,PCU 1220可以将命令发送到对应的PMA 1215,以请求特定核1210(或其他处理电路)进入或退出功率状态。因此,PMA 1215可以被配置为发射本文所述的批量读取和写入消息,以高效且低等待时间获得给定核的上下文,并提供它以便存储在C6 SRAM 1230中。为此,注意,两个PMA 1215、核1210和其他组件可以包括输入/输出电路、端口、接口等,包括用于生成、发送、接收和处理本文所述的批量读取和写入消息(以及关联的完成消息)的批量读取和写入电路。
如图12进一步所示,PMA 1215c可以还耦合到SoC 1200的附加代理,包括IP电路12400–1240n,在不同实现方式中,它们可以是图形处理单元、专用功能单元、第三方IP电路等。此外,PMA 1215c还耦合到集成存储器控制器1260和输入输出电路1250。
注意,在图12所示的高层次中,仅单个核12107耦合到缓存层级结构1270。应理解,该耦合仅是说明性目的,并且所有核1210都可以耦合到缓存层级结构。应理解,虽然在图12的实施例中以这种高层次示出,但是许多变化和替代是可能的。例如,出于本文所述的低等待时间低功率状态进入和退出的目的,图12示出了边带通信。应理解,各种组件也可以通过主可扩展构造彼此耦合(为了易于说明,在图12中未示出)。
实施例可以实现在多种系统中。参照图13,示出了由互连一组组件的点对点链路组成的构造的实施例。系统1300包括耦合到控制器中枢1315的处理器1305和系统存储器1310。处理器1305包括任何处理元件,例如微处理器、主处理器、嵌入式处理器、协处理器或其他处理器。处理器1305通过前端总线(FSB)1306耦合到控制器中枢1315。在一个实施例中,FSB 1306是串行点对点互连。在处理器1305和控制器中枢1315被实现在公共半导体管芯上的实施例中,总线1306可以被实现为管芯上互连。在处理器1305和控制器中枢1315被实现为多芯片封装内的分离的管芯的又一实现方式中,总线1306可以被实现为管芯内互连。
系统存储器1310包括任何存储器器件,例如随机存取存储器(RAM)、非易失性(NV)存储器或系统1300中的设备可访问的其他存储器。系统存储器1310通过存储器接口1316耦合到控制器中枢1315。存储器接口的示例包括双数据率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器中枢1315是PCIe互连层级结构中的根中枢、根复合体或根控制器。控制器中枢1315的示例包括芯片组、外设控制器中枢(PCH)、存储器控制器中枢(MCH)、北桥、互连控制器中枢(ICH)、南桥和根控制器/中枢。术语芯片组常常是指代两个物理上分离的控制器中枢,即存储器控制器中枢(MCH)耦合到互连控制器中枢(ICH)。注意,当前系统常常包括与处理器1305集成的MCH,而控制器1315将按与下文所述类似的方式与I/O设备通信。在一些实施例中,可选地通过根复合体1315来支持对等路由。
这里,控制器中枢1315通过串行链路1319耦合到交换机/网桥1320。输入/输出模块1317和1321(也可以称为接口/端口1317和1321)包括/实现分层协议栈,以提供在控制器中枢1315与交换机1320之间的通信。在一个实施例中,多个设备能够耦合到交换机1320。
交换机/网桥1320通过链路1323以及输入/输出模块1322和1326耦合到I/O设备1325,以将数据包/消息从设备1325向上游(即,层次结构向上朝着根复合体)路由到控制器中枢1315,以及向下游(即,层次结构向下远离根控制器)从处理器1305或系统存储器1310路由到设备1325。在一个实施例中,交换机1320被称为多个虚拟PCI到PCI桥接设备的逻辑组合件。设备1325包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、add-in卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVDROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、Firewire设备、通用串行总线(USB)设备、扫描仪和其他可以经由例如I3C总线耦合的输入/输出设备。通常在PCIe背景下,这种设备称为端点。虽然未具体示出,但是设备1325可以包括PCIe到PCI/PCI-X桥,用于支持遗留设备或其他版本PCI设备。PCIe中的端点设备通常被分类为遗留端点、PCIe端点或根复合体集成端点。
图形加速器1330通过串行链路1332也耦合到控制器中枢1315。在一个实施例中,图形加速器1330耦合到MCH,MCH耦合到ICH。然后交换机1320并且因此I/O设备1325耦合到ICH。I/O模块1331和1318还用于实现分层协议栈,以在图形加速器1330与控制器中枢1315之间进行通信。图形控制器或图形加速器1330本身可以集成在处理器1305中。应理解,图13中示出的任何组件可以利用根据实施例的批量读取和写入消息。
接下来转到图14,描绘了根据实施例的SoC设计的实施例。作为特定的说明性示例,SoC 1400可以被配置用于插入任何类型的计算设备中,范围从便携式设备到服务器系统。这里,SoC 1400包括2个核1406和1407。核1406和1407可以符合指令集架构,例如基于Architecture CoreTM的处理器、Advanced Micro Devices,Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户,以及其被许可方或采用方。核1406和1407耦合到与总线接口单元1409和L2缓存1410关联的缓存控件1408,以经由互连1412与系统1400的其他部分通信。
互连1412提供至其他组件的通信通道,例如与SIM卡接口的订户身份模块(SIM)1430、用于保存引导代码以便由核1406和1407执行以初始化和引导SoC 1400的引导ROM1435、与外部存储器(例如,DRAM 1460)接口的SDRAM控制器1440、与非易失性存储器(例如,Flash存储器1465)接口的Flash控制器1445、与外设(例如,嵌入式控制器1490)接口的外设控制器1450(例如,经由eSPI接口)。
仍然参照图14,系统1400还包括用于显示和接收输入(例如,触摸启用的输入)的视频编解码器1420和视频接口1425,用于执行图形有关的计算的GPU 1415,等。此外,系统示出了用于通信的外设,例如蓝牙模块1470、3G调制解调器1475、GPS 1480和WiFi 1485。在系统中还包括功率控制器1455,其可以触发利用根据实施例的批量读取和写入消息的低功率状态进入/退出。图14中还示出,系统1400可以附加地包括以下接口,包括MIPI接口1492和/或HDMI接口1495,它们可以耦合到显示器。
现在参照图15,示出了根据本发明实施例的系统的框图。如图15所示,多处理器系统1500包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15所示,处理器1570和1580中的每一个可以是多核处理器,包括代表性的第一处理器核和第二处理器核(即,处理器核1574a和1574b以及处理器核1584a和1584b)。处理器可以包括功率控制器,用于触发利用根据实施例的批量读取和写入消息的低功率状态进入/退出。
仍然参照图15,第一处理器1570还包括存储器控制器中枢(MCH)1572以及点对点(P-P)接口1576和1578。类似地,第二处理器1580包括MCH 1582以及P-P接口1586和1588。如图15所示,MCH 1572和1582将处理器耦合到相应的存储器,即存储器1532和存储器1534,存储器可以是本地附连到相应处理器的系统存储器(例如,DRAM)的部分。第一处理器1570和第二处理器1580可以分别经由P-P互连1562和1564耦合到芯片组1590。如图15所示,芯片组1590包括P-P接口1594和1598。
此外,芯片组1590包括接口1592,用于通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合。如图15所示,各种输入/输出(I/O)设备1514可以连同总线桥1518一起耦合到第一总线1516,总线桥1518将第一总线1516耦合到第二总线1520。各种设备可以耦合到第二总线1520,包括例如键盘/鼠标1522、通信设备1526和存储器1528。此外,音频I/O1524可以耦合到第二总线1520。
以下示例属于其他实施例。
在一个示例中,一种处理器包括:第一代理,包括:执行指令的处理电路;和耦合到所述处理电路的输入/输出电路,所述输入/输出电路包括批量写入电路,用于:生成批量写入消息以发送到目的地代理,以使所述目的地代理将包括寄存器内容的数据写入多个寄存器中,所述多个寄存器中的至少一些寄存器包括非连续寄存器,所述批量写入消息包括:第一消息头;第一组块头,包括所述多个寄存器的第一子集中的第一寄存器的地址;和第一净荷部分,具有用于所述多个寄存器的所述第一子集的寄存器内容。
在示例中,所述批量写入消息还包括:第二组块头,包括所述多个寄存器的第二子集中的第一寄存器的地址;和第二净荷部分,具有用于所述多个寄存器的所述第二子集的寄存器内容。
在示例中,所述第一组块头还包括所述多个寄存器的所述第一子集中的寄存器的数量的指示。
在示例中,所述第一消息头包括用于识别所述批量写入消息的第一操作码,所述第一操作码不同于用于识别写入消息的第二操作码。
在示例中,所述第一消息头包括第一头和扩展头,所述扩展头包括安全信息。
在示例中,所述输入/输出电路还包括批量读取电路,用于:生成批量读取消息以发送到目标代理,以使所述目标代理发送包括所述目标代理的多个第二寄存器的寄存器内容的读取数据,所述多个第二寄存器中的至少一些寄存器包括非连续寄存器。
在示例中,所述批量读取消息包括第二消息头和多个组块部分,所述多个组块部分中的每一个组块部分包括用于识别所述多个第二寄存器的子集中的第一寄存器的地址和所述组块部分中的连续寄存器的计数的指示。
在示例中,所述第一代理包括耦合到多个核的功率管理代理,所述功率管理代理用于:将所述批量读取消息发送到第一核,以使所述第一核在所述第一核进入低功率状态之前,将包括所述第一核的上下文的读取数据提供给所述功率管理代理。
在示例中,所述功率管理代理用于:将所述批量写入消息发送到所述第一核,以使所述第一核在所述第一核要退出低功率状态时,将所述寄存器内容写入所述第一核的所述多个寄存器中。
在示例中,所述输入/输出电路用于:发送具有至少50%的数据效率的批量写入消息。
在示例中,所述输入/输出电路用于:经由边带互连将所述批量写入消息发送到所述目的地代理。
在另一示例中,一种方法包括:在SoC的功率管理代理中,接收对所述SoC的第一核进入低功率状态的请求;响应于该请求,生成批量读取消息以从所述第一核的多个寄存器获得所述第一核的上下文,所述多个寄存器中的至少一些寄存器包括非连续寄存器,所述批量读取消息包括消息头和多个组块部分,所述多个组块部分中的每个组块部分包括用于识别所述多个寄存器的子集中的第一寄存器的地址以及所述组块部分中的连续寄存器的计数的指示;将所述批量读取消息发送到所述第一核;接收用于所述批量读取消息的完成消息,所述完成消息包括所述第一核的上下文;将所述第一核的上下文存储在所述处理器的保留存储中;以及使得所述第一核能够进入低功率状态。
在示例中,所述方法还包括:在所述功率管理代理中,接收对所述第一核退出低功率状态的请求;响应于该请求,使所述第一核上电;从所述保留存储获得所述第一核的上下文;生成用于将所述第一核的上下文写入所述第一核的批量写入消息;以及将所述批量写入消息发送到所述第一核,以使得所述第一核能够将所述第一核的上下文存储在所述第一核的所述多个寄存器中。
在示例中,所述方法还包括:发送包括以下项的批量写入消息:第二头;第一组块头,包括所述多个寄存器的第一子集中的第一寄存器的地址;和第一净荷部分,具有用于所述多个寄存器的所述第一子集的寄存器内容。
在示例中,所述方法还包括:在所述功率管理代理中,从所述处理器的功率控制器接收对低功率状态进入的请求;经由边带互连将批量读取消息发送到所述第一核;以及经由所述边带互连接收用于批量读取消息的完成消息。
在另一示例中,包括指令的计算机可读介质执行如以上示例中任一项所述的方法。
在又一示例中,包括数据的计算机可读介质被至少一个机器用于制造至少一个集成电路,以执行如以上示例中任一项所述的方法。
在再一示例中,一种装置包括用于执行如以上示例中任一项所述的方法的模块。
在另一示例中,一种系统包括SoC和耦合到所述SoC的动态随机存取存储器。所述SoC包括:执行指令的第一多个核;第一功率管理代理,耦合到所述第一多个核,以向所述第一多个核提供分布式功率控制;和功率控制器,耦合到所述第一功率管理代理,以命令所述第一功率管理代理使所述第一多个核中的第一核进入低功率状态。所述第一功率管理代理可以被配置为:将批量读取消息发送到所述第一核,以从所述第一核的多个寄存器获得所述第一核的上下文,所述多个寄存器中的至少一些寄存器包括非连续寄存器,所述批量读取消息包括消息头和多个组块部分,所述多个组块部分中的每个组块部分包括用于识别所述多个寄存器的子集中的第一寄存器的地址以及所述组块部分中的连续寄存器的计数的指示;以及接收用于批量读取消息的完成消息,所述完成消息包括所述第一核的上下文,然后使所述第一核进入低功率状态。
在示例中,所述SoC还包括静态随机存取存储器,并且所述第一功率管理代理用于将所述第一核的上下文存储在所述静态随机存取存储器中。
在示例中,所述功率控制器用于命令所述第一功率管理代理使所述第一核退出低功率状态,其中,响应于来自所述功率控制器的指令,所述第一功率管理代理用于从所述静态随机存取存储器获得所述第一核的上下文。
在示例中,所述第一功率管理代理用于:将批量写入消息发送到所述第一核,以使所述第一核将所述第一核的上下文写入所述多个寄存器,所述批量写入消息包括:第二头;第一组块头,包括所述多个寄存器的第一子集中的第一寄存器的地址;和第一净荷部分,具有用于所述多个寄存器的所述第一子集的寄存器内容。
在示例中,所述SoC还包括边带互连,其中,所述第一核和所述第一功率管理代理经由所述边带互连耦合。
应理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文可互换使用。如本文所使用的,这些术语和术语“逻辑”用于单独地或以任何组合方式指代模拟电路、数字电路、硬接线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其他类型的物理硬件组件。实施例可以在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置成执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是其他实施例可以涉及其他类型的用于处理指令的装置,或者包括指令的一种或多种机器可读介质,所述指令响应于在计算设备上执行,使该设备执行本文所述的一种或多种方法和技术。
实施例可以用代码来实现,并且可以存储在非瞬时性存储介质上,存储介质上存储有指令,该指令可以用于对系统进行编程以执行指令。实施例还可以用数据来实现,并且可以存储在非瞬时性存储介质上,存储介质如果被至少一个机器使用,则使该至少一个机器制造至少一个集成电路以执行一个或多个操作。其他实施例可以在如下计算机可读存储介质中实现,存储介质包括信息,信息在被制造进SoC或其他处理器中时配置SoC或其他处理器以执行一个或多个操作。存储介质可以包括但不限于任何类型的磁盘,包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁性光盘、半导体器件(例如,只读存储器(ROM)、|随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、Flash存储器、电可擦除可编程只读存储器(EEPROM))、磁卡或光卡,或者适合于存储电子指令的任何其他类型的介质。
尽管已经针对有限数量的实施例描述了本发明,但是本领域技术人员将理解由此做出的许多修改和变型。所附权利要求旨在覆盖所有此类修改和变型,如同落入本发明的真实精神和范围内。
Claims (25)
1.一种用于处理批量写入消息的处理器,包括:
第一代理,包括:
执行指令的处理电路;和
耦合到所述处理电路的输入/输出电路,所述输入/输出电路包括批量写入电路,用于:生成批量写入消息以发送到目的地代理,以使所述目的地代理将包括寄存器内容的数据写入多个寄存器中,所述多个寄存器中的至少一些寄存器包括非连续寄存器,所述批量写入消息包括:
第一消息头;
第一组块头,包括所述多个寄存器的第一子集中的第一寄存器的地址;和
第一净荷部分,具有用于所述多个寄存器的所述第一子集的寄存器内容。
2.如权利要求1所述的处理器,其中,所述批量写入消息还包括:
第二组块头,包括所述多个寄存器的第二子集中的第一寄存器的地址;和
第二净荷部分,具有用于所述多个寄存器的所述第二子集的寄存器内容。
3.如权利要求2所述的处理器,其中,所述第一组块头还包括所述多个寄存器的所述第一子集中的寄存器的数量的指示。
4.如权利要求1所述的处理器,其中,所述第一消息头包括用于识别所述批量写入消息的第一操作码,所述第一操作码不同于用于识别写入消息的第二操作码。
5.如权利要求4所述的处理器,其中,所述第一消息头包括第一头和扩展头,所述扩展头包括安全信息。
6.如权利要求1所述的处理器,其中,所述输入/输出电路还包括批量读取电路,用于:生成批量读取消息以发送到目标代理,以使所述目标代理发送包括所述目标代理的多个第二寄存器的寄存器内容的读取数据,所述多个第二寄存器中的至少一些寄存器包括非连续寄存器。
7.如权利要求6所述的处理器,其中,所述批量读取消息包括第二消息头和多个组块部分,所述多个组块部分中的每一个组块部分包括用于识别所述多个第二寄存器的子集中的第一寄存器的地址和所述组块部分中的连续寄存器的计数的指示。
8.如权利要求7所述的处理器,其中,所述第一代理包括耦合到多个核的功率管理代理,所述功率管理代理用于:将所述批量读取消息发送到第一核,以使所述第一核在所述第一核进入低功率状态之前,将包括所述第一核的上下文的读取数据提供给所述功率管理代理。
9.如权利要求8所述的处理器,其中,所述功率管理代理用于:
将所述批量写入消息发送到所述第一核,以使所述第一核在所述第一核要退出低功率状态时,将所述寄存器内容写入所述第一核的所述多个寄存器中。
10.如权利要求1所述的处理器,其中,所述输入/输出电路用于:
发送具有至少50%的数据效率的批量写入消息。
11.如权利要求1所述的处理器,其中,所述输入/输出电路用于:
经由边带互连将所述批量写入消息发送到所述目的地代理。
12.一种用于执行批量读取消息的方法,包括:
在片上系统(SoC)的功率管理代理中,接收对所述SoC的第一核进入低功率状态的请求;
响应于该请求,生成批量读取消息以从所述第一核的多个寄存器获得所述第一核的上下文,所述多个寄存器中的至少一些寄存器包括非连续寄存器,所述批量读取消息包括消息头和多个组块部分,所述多个组块部分中的每个组块部分包括用于识别所述多个寄存器的子集中的第一寄存器的地址以及所述组块部分中的连续寄存器的计数的指示;
将所述批量读取消息发送到所述第一核;
接收用于所述批量读取消息的完成消息,所述完成消息包括所述第一核的上下文;
将所述第一核的上下文存储在所述处理器的保留存储中;以及
使得所述第一核能够进入低功率状态。
13.如权利要求12所述的方法,还包括:
在所述功率管理代理中,接收对所述第一核退出低功率状态的请求;
响应于该请求,使所述第一核上电;
从所述保留存储获得所述第一核的上下文;
生成用于将所述第一核的上下文写入所述第一核的批量写入消息;以及
将所述批量写入消息发送到所述第一核,以使得所述第一核能够将所述第一核的上下文存储在所述第一核的所述多个寄存器中。
14.如权利要求13所述的方法,还包括:
发送包括以下项的批量写入消息:
第二头;
第一组块头,包括所述多个寄存器的第一子集中的第一寄存器的地址;和
第一净荷部分,具有用于所述多个寄存器的所述第一子集的寄存器内容。
15.如权利要求12所述的方法,还包括:
在所述功率管理代理中,从所述处理器的功率控制器接收对低功率状态进入的请求;
经由边带互连将批量读取消息发送到所述第一核;以及
经由所述边带互连接收用于批量读取消息的完成消息。
16.一种计算机可读存储介质,存储有计算机可读指令,所述指令在被执行时,实现如权利要求12-15中任一项所述的方法。
17.一种用于处理批量读取消息的系统,包括:
片上系统(SoC),包括:
执行指令的第一多个核;
第一功率管理代理,耦合到所述第一多个核,以向所述第一多个核提供分布式功率控制;和
功率控制器,耦合到所述第一功率管理代理,以命令所述第一功率管理代理使所述第一多个核中的第一核进入低功率状态,其中,响应于来自所述功率控制器的指令,所述第一功率管理代理:
将批量读取消息发送到所述第一核,以从所述第一核的多个寄存器获得所述第一核的上下文,所述多个寄存器中的至少一些寄存器包括非连续寄存器,所述批量读取消息包括消息头和多个组块部分,所述多个组块部分中的每个组块部分包括用于识别所述多个寄存器的子集中的第一寄存器的地址以及所述组块部分中的连续寄存器的计数的指示;以及
接收用于批量读取消息的完成消息,所述完成消息包括所述第一核的上下文,然后使所述第一核进入低功率状态;和
动态随机存取存储器,耦合到所述SoC。
18.如权利要求17所述的系统,其中,所述SoC还包括静态随机存取存储器,并且所述第一功率管理代理用于将所述第一核的上下文存储在所述静态随机存取存储器中。
19.如权利要求18所述的系统,其中,所述功率控制器用于命令所述第一功率管理代理使所述第一核退出低功率状态,其中,响应于来自所述功率控制器的指令,所述第一功率管理代理用于从所述静态随机存取存储器获得所述第一核的上下文。
20.如权利要求19所述的系统,其中,所述第一功率管理代理用于:将批量写入消息发送到所述第一核,以使所述第一核将所述第一核的上下文写入所述多个寄存器,
所述批量写入消息包括:
第二头;
第一组块头,包括所述多个寄存器的第一子集中的第一寄存器的地址;和
第一净荷部分,具有用于所述多个寄存器的所述第一子集的寄存器内容。
21.如权利要求17所述的系统,其中,所述SoC还包括边带互连,其中,所述第一核和所述第一功率管理代理经由所述边带互连耦合。
22.一种用于处理批量写入消息的处理器,包括:
用于执行指令的处理模块;和
耦合到所述处理模块的输入/输出模块,所述输入/输出模块包括批量写入模块,用于:生成批量写入消息以发送到目的地代理,以使所述目的地代理将包括寄存器内容的数据写入多个寄存器中,所述多个寄存器中的至少一些寄存器包括非连续寄存器,所述批量写入消息包括:
第一消息头;
第一组块头,包括所述多个寄存器的第一子集中的第一寄存器的地址;和
第一净荷部分,具有用于所述多个寄存器的所述第一子集的寄存器内容。
23.如权利要求22所述的处理器,其中,所述批量写入消息还包括:
第二组块头,包括所述多个寄存器的第二子集中的第一寄存器的地址;和
第二净荷部分,具有用于所述多个寄存器的所述第二子集的寄存器内容。
24.如权利要求22所述的处理器,其中,所述第一消息头包括:
第一操作码,用于识别所述批量写入消息,所述第一操作码不同于用于识别写入消息的第二操作码;
第一头;和
扩展头,所述扩展头包括安全信息。
25.如权利要求22所述的处理器,其中,所述输入/输出模块还包括批量读取模块,用于:生成批量读取消息以发送到目标代理,以使所述目标代理发送包括所述目标代理的多个第二寄存器的寄存器内容的读取数据,所述多个第二寄存器中的至少一些寄存器包括非连续寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/369,113 | 2019-03-29 | ||
US16/369,113 US10936048B2 (en) | 2019-03-29 | 2019-03-29 | System, apparatus and method for bulk register accesses in a processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752607A true CN111752607A (zh) | 2020-10-09 |
Family
ID=67903581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010115175.2A Pending CN111752607A (zh) | 2019-03-29 | 2020-02-25 | 用于处理器中的批量寄存器访问的系统、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10936048B2 (zh) |
EP (1) | EP3722963B1 (zh) |
CN (1) | CN111752607A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112987690A (zh) * | 2021-02-25 | 2021-06-18 | 山东英信计算机技术有限公司 | 一种espi控制器验证系统及方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424228B2 (en) | 2012-11-01 | 2016-08-23 | Ezchip Technologies Ltd. | High performance, scalable multi chip interconnect |
US10942876B1 (en) * | 2019-11-14 | 2021-03-09 | Mellanox Technologies, Ltd. | Hardware engine for configuration register setup |
US12001256B2 (en) * | 2021-03-09 | 2024-06-04 | Hewlett Packard Enterprise Development Lp | Job agent-based power-capping of systems |
WO2022267065A1 (en) * | 2021-06-25 | 2022-12-29 | Intel Corporation | Processing devices for reducing scan traffic, method and computer program |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9021156B2 (en) | 2011-08-31 | 2015-04-28 | Prashanth Nimmala | Integrating intellectual property (IP) blocks into a processor |
US8930602B2 (en) | 2011-08-31 | 2015-01-06 | Intel Corporation | Providing adaptive bandwidth allocation for a fixed priority arbiter |
US8713234B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Supporting multiple channels of a single interface |
US8713240B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Providing multiple decode options for a system-on-chip (SoC) fabric |
US8711875B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Aggregating completion messages in a sideband interface |
US8929373B2 (en) | 2011-09-29 | 2015-01-06 | Intel Corporation | Sending packets with expanded headers |
US8775700B2 (en) | 2011-09-29 | 2014-07-08 | Intel Corporation | Issuing requests to a fabric |
US8874976B2 (en) | 2011-09-29 | 2014-10-28 | Intel Corporation | Providing error handling support to legacy devices |
US9053251B2 (en) | 2011-11-29 | 2015-06-09 | Intel Corporation | Providing a sideband message interface for system on a chip (SoC) |
US8805296B2 (en) | 2012-01-26 | 2014-08-12 | Lime Microsystems Limited | Field programmable transceiver circuits |
GB2522057B (en) | 2014-01-13 | 2021-02-24 | Advanced Risc Mach Ltd | A data processing system and method for handling multiple transactions |
US20160224090A1 (en) | 2015-01-30 | 2016-08-04 | Alexander Gendler | Performing context save and restore operations in a processor |
US11290392B2 (en) | 2017-01-30 | 2022-03-29 | Intel Corporation | Technologies for pooling accelerator over fabric |
US10739844B2 (en) | 2018-05-02 | 2020-08-11 | Intel Corporation | System, apparatus and method for optimized throttling of a processor |
-
2019
- 2019-03-29 US US16/369,113 patent/US10936048B2/en active Active
-
2020
- 2020-02-11 EP EP20156721.1A patent/EP3722963B1/en active Active
- 2020-02-25 CN CN202010115175.2A patent/CN111752607A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112987690A (zh) * | 2021-02-25 | 2021-06-18 | 山东英信计算机技术有限公司 | 一种espi控制器验证系统及方法 |
CN112987690B (zh) * | 2021-02-25 | 2022-05-24 | 山东英信计算机技术有限公司 | 一种espi控制器验证系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190286223A1 (en) | 2019-09-19 |
US10936048B2 (en) | 2021-03-02 |
EP3722963A1 (en) | 2020-10-14 |
EP3722963B1 (en) | 2022-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9753875B2 (en) | Systems and an apparatus with a sideband interface interconnecting agents with at least one router | |
US10936048B2 (en) | System, apparatus and method for bulk register accesses in a processor | |
US10164880B2 (en) | Sending packets with expanded headers | |
KR101861312B1 (ko) | 다중슬롯 링크 계층 플릿에서의 제어 메시징 | |
US10380059B2 (en) | Control messaging in multislot link layer flit | |
US20190354284A1 (en) | Implied directory state updates | |
US9448870B2 (en) | Providing error handling support to legacy devices | |
EP3238078A1 (en) | Speculative reads in buffered memory |
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 |