CN110121703B - 用于向量通信的系统和方法 - Google Patents
用于向量通信的系统和方法 Download PDFInfo
- Publication number
- CN110121703B CN110121703B CN201680091200.XA CN201680091200A CN110121703B CN 110121703 B CN110121703 B CN 110121703B CN 201680091200 A CN201680091200 A CN 201680091200A CN 110121703 B CN110121703 B CN 110121703B
- Authority
- CN
- China
- Prior art keywords
- scalar
- transaction
- vector
- interface
- memory
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
- G06F13/423—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3555—Indexed addressing using scaling, e.g. multiplication of index
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于互连的端点装置,包括:到所述互连的机械接口和电接口;以及一个或多个逻辑元件,其包括接口向量引擎,所述接口向量引擎用于:接收用于所述接口的第一标量事务;确定所述第一标量事务满足用于向量化的标准;接收用于所述接口的第二标量事务;确定该第二事务满足所述用于向量化的标准;将所述第一标量事务和第二标量事务向量化成向量事务;以及经由所述电接口发送所述向量事务。
Description
技术领域
本公开涉及计算系统,并且具体而言(但非排他地)涉及用于向量通信的系统和方法。
背景技术
PCIe是众多互连标准之一。PCIe互连常用于将外围设备连接到计算装置。
附图说明
图1示出了包括多核处理器的计算系统的框图的实施例。
图2示出了包括互连架构的计算系统的实施例。
图3示出了包括分层堆栈的互连架构的实施例。
图4示出了要在互连架构内生成或接收的请求或分组的实施例。
图5示出了用于互连架构的发射机和接收机对的实施例。
图6示出了互连的实施例的框图。
图7是互连系统的框图。
图8是互连系统的框图。
图9-11示出了示例性分组格式。
图12是分组向量化方法的流程图。
图13示出了示例性计算系统的框图,所述计算系统可以是片上系统。
图14示出了处理器的框图的实施例。
图15示出了包括处理器的计算系统的框图的另一实施例。
图16示出了包括多个处理器插口的计算系统的框图的实施例。
图17示出了计算系统的框图的另一实施例。
图18示出了计算系统的框图的另一实施例。
具体实施方式
在以下描述中,阐述了许多具体细节,例如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定尺寸/高度、特定处理器流水线阶段和操作等的示例,以便提供对本教导的透彻理解。然而,对于本领域技术人员将显而易见的是,不需要采用这些具体细节来实践本教导。在其它实例中,为了避免不必要地模糊本教导,尚未详细描述公知的组件或方法,例如特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实施方式、代码中算法的特定表达、特定的掉电和门控技术/逻辑以及计算机系统的其它特定操作细节。
虽然可以参考特定集成电路中(例如,计算平台或微处理器中)的节能和能量效率来描述以下实施例,但是其它实施例也适用于其它类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于其它类型的电路或半导体设备,其也可以受益于更好的能量效率和节能。例如,所公开的实施例不限于台式计算机系统或UltrabooksTM。并且还可以用于其它设备,例如手持设备、平板电脑、其它薄型笔记本电脑、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行下文教导的功能和操作的任何其它系统。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于节能和能量效率的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件还是其组合)对于与性能考量平衡的“绿色技术”未来是至关重要的。
随着计算系统的前进,其中的组件正变得更加复杂。作为结果,在组件之间耦合和通信的互连架构的复杂性也在增加,以确保对最佳组件操作的带宽要求被满足。此外,不同的细分市场需要互连架构的不同方面适应市场需求。例如,服务器需要更高的性能,而移动生态系统有时能够为了功率节省而牺牲整体性能。然而,大多数结构的单一目的是在最大功率节省的情况下提供尽可能最高的性能。下面,讨论了多种互连,所述互连将潜在地受益于本文所述的教导的各方面。本说明书使用PCIe作为适合于与本公开内容一起使用的互连的特定示例。然而,本说明书的教导与许多不同种类的互连兼容。
架构(IA)可以指代微处理器和支持硬件的组合,其创建许多不同计算系统的构建块。例如,IA可以包括一个或多个微处理器(每个微处理器具有一个或多个核心)、平台控制器集线器(PCH)和其它支持硬件。一些实施例还包括“北桥”和“南桥”,但是在一些较新的实施例中,北桥的功能被并入到处理器本身中,并且南桥的功能可以被并入到PCH中。本文提供的讨论北桥和南桥的任何示例应当被理解为还包括没有它们的实施例,并且具有PCH且没有北桥或南桥的示例应当被理解为也包含具有它们的实施例,除非另行明确指出。
在许多其它应用当中,IA在服务器平台上提供强大、灵活、通用的计算能力。除了其他的之外,该计算能力还为NFV(网络功能虚拟化)提供了基础,或者换言之,对提供先前由专门的硬件装备(appliance)提供的网络功能的“虚拟装备”的创建。在NFV中,强大的计算平台(例如,刀片服务器的机架)可以动态供应NFV以满足不断变化的网络需求。相对硬件装备使用NFV的一个动机是使软件和硬件解耦。然而,这也呈现了新的挑战。例如,网络I/O(输入/输出)吞吐量变得至关重要,这是因为许多虚拟装备可以正共享单个硬件平台。高速缓存和存储器子系统以及I/O总线带宽容量和效率也成为重要因素。
PCIe(外围连接快速接口)是在IA和许多其它平台上被频繁使用的标准I/O总线。在典型的计算系统中,许多高吞吐量I/O设备经由PCIe接口直接连接到IA。通过非限制性示例的方式,这些可以包括以太网或其它网络控制器、硬件加密加速卡、NVMe(非易失性存储器主机控制器快速接口)控制器、图形卡和/或显示适配器、声卡或音频卡、以及外围接口。随着性能需求的增加,PCIe事务带宽通常一代一代地增加。
然而,从整体上看PCIe事务的数据转换效率,DMA(直接存储器访问)事务开销在某些情况下可能非常高,并且尤其是在缓冲器有效载荷小的情况下。例如,考虑处理许多小的传入和传出事务的以太网卡。根据当前的PCIe实践,对于每个PCIe事务消息,每个事务从低层报头(例如,事务层分组(TLP)/数据链路层(DLL)/物理层(PL))引起开销。与附加的对齐填充一起,与大缓冲器相比单个小缓冲器引起多得多的相对开销。然而,这些小分组可以是成功提供NFV的重要因素。
PCIe端点(例如,外围设备)可以通过出于PCIe总线目的将多个小缓冲器视为单个大缓冲器来优化某些通信。以要被串行发送到PCIe总线的六个小缓冲器为例。如果将这六个小缓冲器分别发送到PCIe总线,则引起六次PCIe开销。但是如果这六个小缓冲器被“向量化”(即,聚合成包括六个小“标量”缓冲器的单个向量缓冲器),则该向量可以被发送到PCIe总线,因此仅引起一次开销。在这种情况下,六个小缓冲器一起引起与一个大缓冲器大致相同的相对开销。
在一个示例中,PCIe端点将相同大小的若干小缓冲器(例如,若干16字节的描述符)聚合成大PCIe事务有效载荷。当缓冲器排队时,它们可以聚合成连续的存储器区域。小的有效载荷在触发时形成单个PCIe事务,例如,聚合足够的有效载荷以达到门限(例如,以确保有效载荷不变得太大),计时器到期(以确保排队的第一分组不延迟超过可接受的时间),或者不是相同类型的或超过大小门限的有效载荷的接收。注意到,在某些实施例中,有效载荷必须是相同类型的,而在其它实施例中,它们仅需要低于特定门限。
该方法的说明性示例是DMA描述符提取。即使在合并DMA描述符提取时,用于将数据与每个描述符相关联的读/写操作也是独立的PCIe事务。对合并描述符所指向的缓冲器进行批处理可以是有帮助的。但那些缓冲器可以不是连续的。对于分散-收集缓冲器,PCIe读/写事务不合并非连续缓冲器。CPU可以将这些数据移动到连续的时间缓冲器中,而仅以多个CPU周期为代价。因此,PCIe端点能够自主地构建向量缓冲器以使得可以批量发送事务是有利的。
贯穿本说明书,传统PCIe读和写事务(分别被称为MRd和MWr)可以被称为“标量”事务。聚合那些标量事务的过程可以被称为“向量化”,并且所得到的事务可以被称为“向量”事务。为此,本文还描述了新颖的向量读取(vMRd)和向量写入(vMWr)事务。在示例中,在提取一批DMA存储器地址之后,PCIe端点可以决定发布将多个缓冲器向量化成一个事务的向量MRd/MWr事务。此外,向量操作允许在不涉及CPU的情况下在一个PCIe事务中发送小的DMA分散缓冲器(非连续存储器)。
该新颖方法的一个实施例包括三个协作部分:
a.PCIe根联合体中的PCIe向量控制器(PCIe控制器);
b.用于向量事务的一些新颖PCIe TLP;以及
c.PCIe端点中的PCIe向量引擎(包括适当的逻辑和/或硬件)。
本说明书的教导可以显著改善主机存储器和PCIe I/O端点之间的小缓冲器传输的PCIe效率。所有PCIe设备(或更一般地,连接到采用该方法的任何种类的互连的设备)都可以受益于这些教导,并且特别是网络接口卡(NIC)、QAT(QuickAssist技术)、SmartNIC和eSwitch(嵌入式交换机)NIC。
参考图1,描绘了包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)或其它执行代码的设备。在一个实施例中,处理器100包括至少两个核心——核心101和102,其可以包括不对称核心或对称核心(所示实施例)。然而,处理器100可以包括可以是对称或不对称的任何数量的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心和/或任何其它元件,其能够保存处理器的状态,例如执行状态或架构状态。换言之,在一个实施例中,处理元件指的是能够独立地与代码相关联的任何硬件,例如软件线程、操作系统、应用或其它代码。物理处理器(或处理器插口)通常是指集成电路,其潜在地包括任何数量的其它处理元件,例如核心或硬件线程。
核心常指代位于能够维护独立架构状态的集成电路上的逻辑,其中,每个独立维护的架构状态与至少一些专门的执行资源相关联。与核心形成对比,硬件线程通常指代位于能够维护独立架构状态的集成电路上的任何逻辑,其中,独立维护的架构状态共享对执行资源的访问。可以看出,当某些资源被共享而其它资源专用于架构状态时,在硬件线程和核心的命名之间的线重叠。然而,核心和硬件线程常由操作系统视为个体的逻辑处理器,其中,操作系统能够个别地在每个逻辑处理器上调度操作。
如图1所示,物理处理器100包括两个核心——核心101和102。这里,核心101和102被认为是对称核心,即具有相同配置、功能单元和/或逻辑的核心。在另一实施例中,核心101包括乱序处理器核心,而核心102包括有序处理器核心。然而,核心101和102可以从任何类型的核心中个别地选择,所述核心例如本机核心、软件管理核心、适于执行本机指令集架构(ISA)的核心、适于执行转换的指令集架构(ISA)的核心、共同设计的核心、或其它已知核心。在异构核心环境(即,非对称核心)中,可以利用某个形式的转换(例如,二进制转换)来在一个或两个核心上调度或执行代码。然而,为了进一步讨论,核心101中示出的功能单元在下面被更详细地描述,这是因为核心102中的单元在所描绘的实施例中以类似的方式操作。
如所描绘的,核心101包括两个硬件线程,它们还可以被称为硬件线程槽。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器100视为四个单独的处理器,即能够并行执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器101A相关联,第二线程与架构状态寄存器101B相关联,第三线程可以与架构状态寄存器102A相关联,并且第四线程可以与架构状态寄存器102B相关联。这里,架构状态寄存器(101A、101B、102A和102B)中的每个架构状态寄存器可以被称为处理元件、线程槽或线程单元,如上所述。如图所示,架构状态寄存器101A在架构状态寄存器101B中被复制,因此能够为逻辑处理器存储个体架构状态/上下文。在核心101中,还可以为线程复制其它较小的资源,例如重命名器/分配器130中的指令指针和重命名逻辑。可以通过分区来共享一些资源,例如重新排序/引退单元135中的重新排序缓冲器、BTB/I-TLB 120、加载/存储缓冲器和队列。其它资源(例如,通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB、调度器/执行单元140以及乱序单元的部分)是潜在完全共享的。
处理器100常包括其它资源,其可以是完全共享的、通过分区共享的或由处理元件专用的/专用于处理元件的。在图1中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任何功能单元,以及包括未描绘的任何其它已知的功能单元、逻辑或固件。如图所示,核心101包括简化的、代表性的乱序(OOO)处理器核心。但是可以在不同的实施例中利用有序处理器。OOO核心包括用于预测待执行/采用的分支的分支目标缓冲器(BTB)/用于存储用于指令的地址转换条目的指令转换缓冲器(I-TLB)120。
核心101还包括解码器125,其耦合到提取单元以解码所提取的元素。在一个实施例中,提取逻辑包括分别与线程槽相关联的个体定序器。通常,核心101与第一ISA相关联,所述第一ISA定义/指定可在处理器100上执行的指令。是第一ISA的部分的机器代码指令常包括指令的一部分(被称为操作码),其引用/指定待执行的指令或操作。解码器125包括从这些指令的操作码识别这些指令并在流水线中传递解码的指令以如由第一ISA定义的那样进行处理的电路。例如,如下面更详细地讨论的,在一个实施例中,解码器125包括被设计或适于识别特定指令的逻辑,例如事务指令。作为由解码器125识别的结果,架构或核心101采取特定的预先定义的动作来执行与适当指令相关联的任务。重要的是要注意,可以响应于单个或多个指令来执行本文描述的任务、块、操作和方法中的任何一个;所述指令中的一些指令可以是新指令或旧指令。注意,在一个实施例中,解码器126识别相同的ISA(或其子集)。替代地,在异构核心环境中,解码器126识别第二ISA(其是第一ISA的子集或不同的ISA)。
在一个示例中,重命名器/分配器130包括用于保留资源的分配器,例如用于存储指令处理结果的寄存器文件。然而,线程潜在地能够被乱序执行,其中,重命名器/分配器130还保留其它资源,例如用于跟踪指令结果的重新排序缓冲器。重命名器/分配器130还可以包括寄存器重命名器,其用于将程序/指令引用寄存器重命名为处理器100内部的其它寄存器。重新排序/引退单元135包括诸如上述的重新排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持乱序执行和对乱序执行的指令的稍后的有序引退。
在一个实施例中,调度器/执行单元140包括调度器单元,其用于在执行单元上调度指令/操作。例如,浮点指令在具有可用浮点执行单元的执行单元的端口上被调度。还包括与执行单元相关联的寄存器文件以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其它已知的执行单元。
较低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合到执行单元140。数据高速缓存用于存储近期被使用/操作的元素,例如数据操作数,其潜在地保存在存储器一致性状态下。D-TLB用于存储近期的虚拟/线性到物理地址转换。作为特定示例,处理器可以包括页面表结构,其用于将物理存储器分成多个虚拟页面。
这里,核心101和102共享对更高级或更远的高速缓存的访问,例如与片上接口110相关联的第二级高速缓存。注意,更高级或更远指的是增加的或更远离执行单元的高速缓存级。在一个实施例中,更高级高速缓存是最后一级数据高速缓存(处理器100上的存储器层级中的最后的高速缓存),例如第二或第三级数据高速缓存。然而,更高级的高速缓存并不限于此,这是因为它可以与指令高速缓存相关联或包括指令高速缓存。跟踪高速缓存(一种类型的指令高速缓存)相反可以在解码器125之后耦合以存储最近解码的跟踪(trace)。这里,指令潜在地涉及宏指令(即,由解码器识别的一般指令),其可以解码成多个微指令(微操作)。
在所描绘的配置中,处理器100还包括片上接口110。历史上,下面更详细描述的存储器控制器已被包括在处理器100外部的计算系统中。在这种情况下,片上接口110用于与处理器100外部的设备进行通信,所述设备例如系统存储器175、芯片组(常包括用于连接到系统存储器175的存储器控制器集线器和用于连接到外围设备的I/O控制器集线器)、存储器控制器集线器、北桥或其它集成电路。并且在这种情况下,总线105可以包括任何已知的互连,例如多点总线、点对点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差分总线和GTL总线。
系统存储器175可以专用于处理器100或与系统中的其它设备共享。系统存储器175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其它已知的存储设备。注意,设备180可以包括:耦合到存储器控制器集线器的图形加速器、处理器或卡,耦合到I/O控制器集线器的数据存储装置,无线收发机,闪存设备,音频控制器,网络控制器,或其它已知设备。
然而,近期随着更多逻辑和设备被集成在单个管芯上(例如,SOC),这些设备中的每个设备可以并入在处理器100上。例如,在一个实施例中,存储器控制器集线器与处理器100在相同封装和/或管芯上。这里,核心的一部分(核心上部分)包括一个或多个控制器,其用于与诸如系统存储器175或图形设备之类的其它设备接合。包括互连和与这样的设备接合的控制器的配置通常被称为核心上(on-core)(或非核心配置)。作为示例,片上接口110包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路。然而,在SOC环境中,更加多的设备(例如,网络接口、协处理器、系统存储器175、图形处理器和任何其它已知的计算机设备/接口)可以集成在单个管芯或集成电路上以提供小形状因子以及高功能性和低功耗。
在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177以编译、转换和/或优化应用代码176,以支持本文描述的装置和方法或与其接合。编译器常包括用于将源文本/代码转换成目标文本/代码的程序或程序集。通常,用编译器编译程序/应用代码是在多个阶段和步骤中完成的,以将高级编程语言代码转换成低级机器或汇编语言代码。然而,单遍编译器(single pass compiler)仍可以用于简单的编译。编译器可以利用任何已知的编译技术并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
较大的编译器常包括多个阶段,但大多数情况下这些阶段被包括在两个一般阶段内:(1)前端,即通常句法处理、语义处理和一些转换/优化可以发生之处,以及(2)后端,即通常分析、转换、优化和代码生成发生之处。一些编译器引用了中间件,其说明了在编译器的前端和后端之间描绘的模糊。作为结果,对编译器的插入、关联、生成或其它操作的引用可以在上述阶段或步骤中的任何阶段或步骤中以及在编译器的任何其它已知阶段或步骤中发生。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数等,例如在编译的前端阶段中插入调用/操作,然后在转换阶段期间将调用/操作转换成较低级别的代码。注意,在动态编译期间,编译器代码或动态优化代码可以将这样的操作/调用插入,以及优化代码以在运行时执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已经编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。
与编译器类似,转换器(例如,二进制转换器)静态或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可以指代:(1)动态地或静态地执行编译器程序、优化代码优化器或转换器,以编译程序代码、维护软件结构、执行其它操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,例如已被优化/编译的应用代码;(3)执行与主程序代码相关联的其它程序代码(例如,库),以维护软件结构、执行其它软件相关操作或优化代码;或(4)其组合。
一种互连结构架构包括外围组件快速互连(PCIe)架构(外围组件互连为PCI)。PCIe的主要目标是使来自不同供应商的组件和设备能够在开放式架构中、跨越多个细分市场、客户端(桌上型和移动设备)、服务器(标准和企业)以及嵌入式和通信设备进行互操作。快速PCI是针对各种各样的未来的计算和通信平台定义的高性能通用I/O互连。一些PCI属性(例如,其使用模型、加载-存储架构和软件接口)已通过其修订版进行维护,而先前的并行总线实施方式已由高度可扩展的完全串行接口取代。最近期的版本的快速PCI利用点对点互连、基于交换机的技术和分组化协议的发展来递送新水平的性能和特征。由快速PCI支持的先进特征中的一些特征包括功率管理、服务质量(QoS)、热插拔/热调换支持、数据完整性和错误处理。
参考图2,示出了由互连组件集的点对点链路组成的结构的实施例。系统200包括耦合到控制器集线器215的处理器205和系统存储器210。处理器205包括任何处理元件,例如微处理器、主处理器、嵌入式处理器、协处理器或其它处理器。处理器205通过前端总线(FSB)206耦合到控制器集线器215。在一个实施例中,FSB 206是如下所述的串行点对点互连。在另一实施例中,FSB 206包括与不同互连标准兼容的串行差分互连架构。
系统存储器210包括任何存储器设备,例如随机存取存储器(RAM)、非易失性(NV)存储器或系统200中的设备可访问的其它存储器。系统存储器210通过存储器接口216耦合到控制器集线器215。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器215是在外围组件快速互连(PCIe或PCIE)互连层级中的根集线器、根联合体或根控制器。控制器集线器215的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥和根控制器/集线器。术语“芯片组”常指代两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ICH)的存储器控制器集线器(MCH)。注意,当前系统常包括与处理器205集成的MCH,而控制器集线器215用于以与下面描述的方式类似的方式与I/O设备通信。在一些实施例中,可选地通过根联合体支持对等路由。
这里,控制器集线器215通过串行链路219耦合到交换机/桥220。输入/输出模块217和221(还可以被称为接口/端口217和221)包括/实现分层协议栈以提供在控制器集线器215和交换机220之间的通信。在一个实施例中,多个设备能够耦合到交换机220。
交换机/桥220将来自设备225的分组/消息向上游(即,沿层级朝根联合体向上)路由到控制器集线器215,并且从处理器205或系统存储器210向下游(即,从根控制器沿层级向下)路由到设备225。在一个实施例中,交换机220被称为多个虚拟PCI到PCI桥设备的逻辑组装件。设备225包括待耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡(add-in card)、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪和其它输入/输出设备。在PCIe白化中,例如设备,常被称为端点。尽管没有具体示出,但是设备225可以包括PCIe到PCI/PCI-X桥,以支持传统或其它版本的PCI设备。PCIe中的端点设备常被分类为传统、PCIe或根复合集成端点。
图形加速器230还通过串行链路232耦合到控制器集线器215。在一个实施例中,图形加速器230耦合到MCH,所述MCH耦合到ICH。然后交换机220以及因此I/O设备225耦合到ICH。I/O模块231和218还用于实现分层协议栈以在图形加速器230和控制器集线器215之间通信。类似于上面讨论的MCH,图形控制器或图形加速器230本身可以集成在处理器205中。
转到图3,示出了分层协议栈的实施例。分层协议栈300包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其它分层栈。虽然下面参考图2-5的讨论是关于PCIe栈的,但是相同的构思可以应用于其它互连栈。在一个实施例中,协议栈300是包括事务层305、链路层310和物理层320的PCIe协议栈。诸如PCIe之类的接口可以被表示为通信协议栈300。作为通信协议栈的表示还可以被称为实现/包括协议栈的模块或接口。
快速PCI使用分组在组件之间传送信息。在事务层305和数据链路层310中形成分组以将信息从发送组件携带到接收组件。当发送的分组流经其它层时,它们被扩展有在那些层处处理分组所需的附加信息。在接收侧处,反向过程发生并且分组从其物理层320表示变换到数据链路层310表示,并且最终(对于事务层分组)变换为可以由接收设备的事务层305处理的形式。
事务层
在一个实施例中,事务层305用于提供在设备的处理核心和互连架构之间的接口,例如数据链路层310和物理层320。在这方面中,事务层305的主要责任是分组(即,事务层分组或TLP)的组装和拆解(disassembly)。事务层305通常管理TLP的基于信用的流控制。PCIe实现分离事务(即,具有由时间分隔的请求和响应的事务),以允许链路在目标设备收集响应数据时携带其它业务。
此外,PCIe利用基于信用的流控制。在该方案中,设备在事务层305中为接收缓冲器中的每个接收缓冲器通告初始信用量。在链路的相对端处的外部设备(例如,图2中的控制器集线器215)对由每个TLP消费的信用数量进行计数。如果事务不超过信用限制,则事务可以被发送。在接收到响应时,恢复一定量的信用。信用方案的优点是,在没有遇到信用限制的情况下,信用返还的延时不影响性能。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括读取请求和写入请求中的一个或多个,以传送去往/来自存储器映射位置的数据。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如短地址格式(例如,32比特地址)或长地址格式(例如,64比特地址)。配置空间事务用于访问PCIe设备的配置空间。到配置空间的事务包括读取请求和写入请求。消息空间事务(或简称消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层305组装分组报头/有效载荷306。用于当前分组报头/有效载荷的格式可以在PCIe规范网站处的PCIe规范中找到。
快速参考图4,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符400是用于携带事务信息的机制。在这方面中,事务描述符400支持系统中事务的标识。其它潜在用途包括跟踪默认事务排序的修改以及事务与信道的关联。
事务描述符400包括全局标识符字段402、属性字段404和信道标识符字段406。在所示示例中,全局标识符字段402被描绘为包括本地事务标识符字段408和源标识符字段410。在一个实施例中,全局事务标识符402对于所有未完成的请求是唯一的。
根据一种实施方式,本地事务标识符字段408是由请求代理生成的字段,并且其对于针对该请求代理需要完成的所有未完成请求而言是唯一的。此外,在该示例中,源标识符410唯一地标识PCIe层级内的请求者代理。因此,与源ID 410一起,本地事务标识符408字段提供层级域内的事务的全局标识。
属性字段404指定事务的特性和关系。在这方面中,属性字段404潜在地用于提供允许修改对事务的默认处理的附加信息。在一个实施例中,属性字段404包括优先级字段412、保留字段414、排序字段416和非侦听字段418。这里,优先级子字段412可以由发起者修改以将优先级指派给事务。保留属性字段414被保留用于将来或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全性属性的可能的使用模型。
在该示例中,排序属性字段416用于提供传达可以修改默认排序规则的排序类型的可选信息。根据一个示例性实施方式,排序属性“0”表示要应用默认排序规则,其中,排序属性“1”表示放宽的排序,其中,写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。非侦听属性字段418用于确定事务是否被侦听。如图所示,信道ID字段406标识了与事务相关联的信道。
链路层
链路层310(还被称为数据链路层310)充当在事务层305和物理层320之间的中间级。在一个实施例中,数据链路层310的责任是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层310的一侧接受由事务层305组装的TLP,应用分组序列标识符311(即,标识号或分组号),计算并应用错误检测码(即,CRC 312),并且将经修改的TLP提交给物理层320以用于跨物理到外部设备的传输。
物理层
在一个实施例中,物理层320包括逻辑子块321和电气子块322,以物理地将分组发送到外部设备。这里,逻辑子块321负责物理层320的“数字”功能。在这方面中,逻辑子块包括发送部分和接收机部分,所述发送部分用于准备用于由电气子块322传输的传出信息,所述接收机部分用于在将所接收的信息传递到链路层310之前识别并准备所接收的信息。
电气子块322包括发射机和接收机。发射机由逻辑子块321提供有符号,发射机将所述符号进行串行化并发送到外部设备上。接收机被提供有来自外部设备的串行化符号,并且将所接收的信号转换成比特流。比特流被反序列化并且被提供给逻辑子块321。在一个实施例中,采用8b/10b传输码,其中,10比特符号被发送/接收。这里,特殊符号用于用帧323对分组进行帧化。此外,在一个示例中,接收机还提供从传入串行流恢复的符号时钟。
如上所述,虽然参考PCIe协议栈的特定实施例讨论了事务层305、链路层310和物理层320,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;用于对分组进行排序的第二层,即链路层;以及用于发送分组的第三层,即物理层。作为具体示例,公共标准接口(CSI)分层协议被利用。
接下来参考图5,示出了PCIe串行点对点结构的实施例。虽然示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,这是因为它包括用于发送串行数据的任何传输路径。在所示实施例中,基本PCIe链路包括两个低压差分驱动信号对:发送对506/511和接收对512/507。因此,设备505包括用于将数据发送到设备510的发送逻辑506以及用于从设备510接收数据的接收逻辑507。换言之,两个发送路径(即,路径516和517)以及两个接收路径(即,路径518和519)被包括在PCIe链路中。
发送路径指的是用于发送数据的任何路径,例如传输线、铜线、光线、无线通信信道、红外通信链路或其它通信路径。在两个设备(例如,设备505和设备510)之间的连接被称为链路,例如链路515。链路可以支持一个通道(lane)——每个通道代表一组差分信号对(一对用于发送,一对用于接收)。为了缩放带宽,链路可以聚合由xN表示的多个通道,其中,N是任何支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对指的是用于发送差分信号的两条发送路径(例如,线516和517)。作为示例,当线516从低电压水平切换到高电压水平(即,上升沿)时,线517从高逻辑水平驱动到低逻辑水平(即,下降沿)。差分信号潜在地展现出更好的电特性,例如更好的信号完整性(即,交叉耦合)、电压过冲/下冲、振铃等。这允许更好的定时窗口,其实现更快的传输频率。
转到图6,在该示例中示出了PCIe总线670,其是与本说明书的教导兼容的互连的一个非限制性示例。通过非限制性示例,可以与本说明书的教导兼容的其它总线或互连包括USB、PCI、PCI-X、ISA、HPI、MIPI、AGP和SATA。
PCIe总线670由PCIe根联合体672控制,包括例如PCIe控制器610和PCIe向量控制器616。图7中公开了PCIe根联合体672的附加细节。
在该示例中,PCIe总线670将DMA控制器618和CPU 630通信地耦合到充当PCIe端点的若干外围设备。这使得PCIe端点能够与CPU 630通信,并且能够直接访问存储器620。
在该示例中,PCIe端点包括图形卡602、加密加速器卡604、音频卡606和网卡608。这些PCIe端点中的一些或全部PCIe端点可以是与本文公开的方法不兼容的传统端点。根联合体672可以被配置为与这样的传统端点向后兼容。然而,在这种情况下,至少网卡608包括PCIe向量引擎612,其被配置为提供如本文所述的PCIe事务的向量化。更具体而言,PCIe向量引擎612可以包括任何必要的硬件、软件和/或固件,以提供用于执行本文公开的PCIe向量化方法的逻辑。这可以包括例如嵌入式处理器、ASIC、ROM或FPGA,其被编码有用于提供向量化逻辑的指令。这还可以包括用于加载和处理指令的易失性或非易失性存储器。
图7示出了本说明书的教导的附加逻辑视图。PCIe端点730包括PCIe向量引擎722。PCIe端点730可以是图6中公开的PCIe端点中的任何PCIe端点,或任何其它PCIe端点。PCIe向量引擎722可以与图6的PCIe向量引擎612相对应。
PCIe根联合体706可以与图6的根联合体672相对应,并且PCIe向量控制器708可以与图6的PCIe向量控制器616相对应。在该示例中,根联合体706直接与最后一级高速缓存(LLC)704(例如,通常在核心之间共享的最高级高速缓存)通信,其为CPU核心710和PCIe设备提供缓存的数据和指令。LLC 704本身与存储器控制器(MC)732通信,所述MC 732访问主存储器720以取回数据以存储在高速缓存中并且将数据从高速缓存写入到主存储器。
当PCIe向量控制器708接收PCIe向量读取或写入事务时,它识别向量化的存储器请求,并且将个体(标量)PCIe请求拆分成多个存储器访问操作。然后可以将这些发送到存储器控制器732,其可以与图6的DMA控制器618相对应。
面对MC 732,PVC 708通过非限制性示例的方式负责以下内容:
a.对于来自端点730的向量事务,在将操作发送到LLC 704或MC
732之前,PVC 708将事务分解成标量(个体)存储器操作。
b.对于来自存储器控制器732或LLC 704的响应,PVC 708对标量存储器操作进行向量化,并且将它们作为单个向量事务发送到端点730。
在某些实施例中,MC 732还可以被配置为处理向量事务。在那种情况下,PVC 708可以将事务作为向量事务传递给MC 732。
在PCIe端点730上,用于触发向量PCIe事务的机制可以基于门限、计时器或任何其它合适的聚合触发器。例如,当PCIe端点730遇到“小”分组(即,在大小门限以下的分组)时,如果在该PCIe端点上启用了向量特征,则保存分组以便以向量格式聚合。可以继续聚合分组,直到整个向量事务超过最大向量大小门限,或达到超时。这实现了相对于较早的PCIe规范的优点,其中,任何存储器读/写(Rd/Wr)动作都采用一个PCIe事务,而无论大小如何。这意味着事务对于小存储器操作而言效率低下。
注意,在一些示例中,诸如向量大小门限和超时之类的因素可以是用户可配置的。例如,可以提供用户接口以使用户能够配置值。例如,用户接口可以包括API、GUI、文本用户接口、命令行界面、跳线(jumper)、寄存器或提供配置的信号线。
在某些较早的系统中,分组可以由CPU 710聚合到较大的缓冲器中。例如,软件可以收集小缓冲其并将它们聚集到一个大缓冲器中。然后可以经由PCIe总线发出该单个缓冲器。然而,就CPU周期而言,这种类型的操作是昂贵的。在NFV的特定情况下,保留CPU周期用于工作负载处理而不是微管理存储器事务是有利的。
有利地,PCIe端点730内的PCIe向量引擎722可以对软件透明地管理小存储器事务,并且不需要对现有DMA驱动程序进行任何改变。这种改进直接有利于诸如小缓冲器的“分散(scatter)”之类的操作。不需要任何附加的CPU周期来增加大容量小分组。
图8示出了根据本说明书的一个或多个示例的PCIe向量引擎的所选逻辑组件。
PCIe控制器706(即,PCIe根联合体)包括PCIe向量控制器708。PCIe向量控制器708与输入/输出存储器管理单元(IOMMU)812交互。IOMMU 812将CPU可见的虚拟地址转换为设备可见的虚拟地址。
PCIe向量控制器708内的标量存储器适配器806负责将新的向量PCIe事务转换为标量存储器访问。例如,在PCIe端点730将足够小的读取聚合成向量读取820(例如,在“收集(gather)”中)之后,PCIe端点730将向量读取发送到PCIe控制器706。然后,标量存储器适配器806将向量读取820分解成个体的标量读取操作。然后,存储器访问代理804负责将每个个体的标量存储器访问发送到存储器或高速缓存。
PCIe向量控制器708还可以响应于向量读取820中的读取操作而接收个体的读取完成。存储器访问代理804接收这些,并且将它们传递给标量存储器适配器806,所述标量存储器适配器806将响应聚合到向量读取完成中,所述向量读取完成然后被传递到PCIe端点730。
当PCIe端点730需要将写入聚合到存储器时,它可以将若干小的写入(例如,“分散”操作)聚合成向量写入830。PCIe端点730将向量写入830发送到PCIe控制器706,并且标量存储器适配器806将写入分解成个体写入操作。然后将这些提供给存储器访问代理804,所述存储器访问代理804将个体的标量存储器操作提供给存储器720。
图9、图10和图11是根据本说明书的一个或多个示例的示例性向量TLP消息的框图。注意,这些向量TLP消息格式是通过非限制性示例和说明的方式提供的。这些示例使用32比特地址,其中,每个分组四个标量操作。这是为了说明一个实施例,但是应当注意,可以将任何合适数量的分组附加到TLP向量消息,并且所公开的格式可以适于其它地址总线大小,例如64或128比特地址。
图9是PCIe向量读取(vRd)消息格式的框图。
快速PCIe使用基于分组的协议在彼此通信的两个组件的事务层之间交换信息。PCIe 3.0规范支持以下基本事务TLP类型:存储器、I/O、配置和消息。存储器事务类型支持存储器读取(MRd)和存储器写入(MWr)请求,其中,前者用于从存储器到PCIe端点的DMA读取,而后者用于从PCIe端点到存储器的DMA写入。该规范将那些现有功能扩展到向量读取和写入功能中。
在示例中,用于向量消息的路由基于第一地址。如果向量读取/写入失败,则报告错误。此外,在示例中,可以查询对TLP向量操作的支持。
图9、图10和图11的消息格式的某些元素与现有的PCIe实践一致。作为非限制性示例,新颖的元素和字段包括:
a.V:第一数据字的第24比特被定义为“向量启用”比特,以指示这是否是向量消息。
b.Num:替代现有PCIe消息格式中的“length”字段,以指示在V被设置时被向量化在一起的小分组的数量。
c.Lenx:指示每个小分组的长度。在该示例中,字段是10比特宽的,以使个体的“小”分组能够长达4千比特。注意,4千比特可以但不必是标量存储器操作是否被聚合成向量操作的门限。在该示例中,每个Len占用10比特,之后是六个保留比特。因此,每四个字节(32比特)包括两个Lenx字段。如果Num是奇数,则最后的Len之后的保留字段可以扩展为22比特以进行对齐。
d.SrcAddrx:指示每个小分组的标量源地址。
图10示出了向量TLP读取完整格式。在这种情况下,再一次地,一些字段可以与现有的PCIe“读取完成”消息格式一致。上面结合图9描述了其它字段。
TLP读取完成还可以提供以下附加字段:
a.Payloadx:有效载荷字段用于保存由向量读取操作提供的多个有效载荷。
图11示出了向量TLP写入格式。在这种情况下,再一次地,一些字段可以与现有的PCIe写入消息格式一致。以上结合图9描述了其它字段。
TLP向量写入还可以提供以下附加字段:
a.DstAddrx:这些指示每个小分组的标量目的地地址。
图12是PCIe向量引擎722(图7)可以根据本说明书的一个或多个示例执行的方法1200的流程图。
方法1200以PCIe向量引擎722读取或写入分组开始。在框1202中,PCIe向量引擎722首先确定向量操作是否被启用。这可以包括例如接收信号或读取内部存储的标志。
如果向量读取和写入未启用,则在框1218中,PCIe向量引擎722根据已知方法简单地将分组作为标准TLP读取或写入事务发送,并且方法1200完成。
返回到框1202,如果向量操作被启用,则在判定框1204中,PCIe向量引擎722确定当前分组是否是“小”分组。这可以包括确定分组的大小是否低于门限。门限的一个示例是4千比特,对应于上面公开的10比特“Len”字段。然而,根据特定实施方式的需要,门限可以比这大或小。具体而言,即使使用10比特“Len”字段,门限也不需要一定是4千比特。
如果分组不是小分组,则再次地,在框1218中,PCIe向量引擎722发送标准TLP消息,并且该方法完成。
如果分组是小的,则在判定框1206中,PCIe向量引擎722确定可用计时器是否已开始。这可以是监视“超时”条件的计时器,其中,用于发送分组的可允许的时间已经过去。例如,当第一小分组被聚合并且计时器开始时,可以将其设置为在发送该分组之前等待的最大可允许时间。如果该计时器到期,则向量事务可以被发送,无论是否存在“足够的”标量事务以使向量饱和。
如果计时器尚未开始,则在框1208中,新计时器开始。
在框1210中,将小分组聚合到PCIe向量缓冲器中。如果没有现有的向量缓冲器,则可以在该块中分配新的向量缓冲器。如果存在现有的向量缓冲器,则可以将小事务添加到现有向量缓冲器。
在框1212中,PCIe向量引擎722确定向量缓冲器中是否有足够的分组来使向量缓冲器“饱和”(即,标量操作的总数的总大小是否超过门限,或者向量缓冲器的总大小是否超过门限)。注意,在分散/收集的情况下,标量分组可以采用相同的格式,因此最大大小可以与分组最大数量精确地相关。但是分组不需要是统一大小或类型的,以使得在一些情况下,向量可以包括多个异构小分组。因此,可以聚合较大数量的较小的“小”分组,或者较小数量的较大的“小”分组。
如果没有足够的分组来使向量缓冲器饱和,则在框1216中,PCIe向量引擎722继续等待附加分组,以使得向量传送可以被完成。
返回到框1212,如果存在足够的分组以使向量缓冲器饱和,则在框1214中,PCIe向量引擎722清除超时计时器。这也可以由超时单独触发,所述超时可以异步发生(例如,作为中断)。
在PCIe向量引擎722清除计时器之后,在框1220中,其发送TLP向量读取或写入操作,并且该方法完成。
注意,上述装置、方法和系统可以在如上所述的任何电子设备或系统中实现。作为具体说明,下面的附图提供了用于利用本文所述教导的示例性系统。由于下文更详细地描述了系统,因此从上面的讨论中公开、描述和再次讨论了许多不同的互连。并且显而易见的是,上述进步可以应用于那些互连、结构或架构中的任何一种。
现在参考图13,示出了多核处理器的实施例的框图。如图13的实施例所示,处理器1300包括多个域。具体而言,核心域1330包括多个核心1330A-1330N,图形域1360包括具有媒体引擎1365的一个或多个图形引擎,以及系统代理域1310。
在各种实施例中,系统代理域1310处理功率控制事件和功率管理,以使得域1330和1360的个体单元(例如,核心和/或图形引擎)可独立控制以根据在给定单元中发生的活动(或不活动)以适当的功率模式/水平(例如,活动的、涡轮、睡眠、休眠、深度睡眠、或其它先进配置功率接口类状态)动态操作。域1330和1360中的每个域可以以不同的电压和/或功率下操作,并且域内的个体单元均潜在地以独立的频率和电压操作。注意,虽然仅被示出具有三个域,但应理解本教导的范围不在这方面受限,并且附加的域可以存在于其它实施例中。
如图所示,除了各种执行单元和附加处理元件之外,每个核心1330还包括低级高速缓存。这里,各个核心彼此耦合并耦合到由最后一级高速缓存(LLC)1340A-1340N的多个单元或切片形成的共享高速缓冲存储器;这些LLC常包括存储和高速缓存控制器功能,并且在核心当中以及潜在的在图形引擎当中是共享的。
如图所示,环形互连1350将核心耦合在一起,并且经由多个环形站(ring stop)1352A-1352N提供在核心域1330、图形域1360和系统代理电路1310之间的互连,每个所述环形站在核心和LLC切片之间的耦合处。如图13所示,互连1350用于携带各种信息,包括地址信息、数据信息、确认信息和侦听/无效信息。虽然示出了环形互连,但是可以利用任何已知的管芯上互连或结构。作为说明性示例,上面讨论结构中的一些结构(例如,另一管芯上互连、英特尔片上系统结构(IOSF)、先进微控制器总线架构(AMBA)互连、多维网状结构或其它已知互连架构)可以以类似的方式来利用。
如进一步描绘的,系统代理域1310包括显示引擎1312,其用于提供对相关联的显示器的控制和到其的接口。系统代理域1310可以包括其它单元,例如:集成存储器控制器1320,其提供到系统存储器的接口(例如,用多个DIMM实现的DRAM;用于执行存储器一致性操作的一致性逻辑1322)。可以存在多个接口,以实现在处理器和其它电路之间的互连。例如,在一个实施例中,提供至少一个直接媒体接口(DMI)1316接口以及一个或多个PCIeTM接口1314。显示引擎和这些接口通常经由PCIeTM桥1318耦合到存储器。此外,为了提供其它代理(例如,附加处理器或其它电路)之间的通信,可以提供一个或多个其它接口(例如,快速路径互连(QPI)结构)。
现在参考图14,示出了代表性核心的框图;具体而言,核心的后端的逻辑块,例如来自图13的核心1330。通常,图14所示的结构包括乱序处理器,其具有前端单元1470,所述前端单元1470用于提取传入指令、执行各种处理(例如,缓存、解码、分支预测等)并且将指令/操作传递到乱序(OOO)引擎1480。OOO引擎1480对经解码的指令执行进一步的处理。
具体而言,在图14的实施例中,乱序引擎1480包括分配单元1482,其用于从前端单元1470接收经解码的指令,其可以采用一个或多个微指令或微操作(uops)的形式,并且将它们分配给适当的资源,例如寄存器等。接下来,将指令提供给保留站1484,所述保留站1484保留资源并且调度它们以在多个执行单元1486A-1486N中的一个执行单元上执行。可以存在各种类型的执行单元,包括例如算术逻辑单元(ALU)、加载和存储单元、向量处理单元(VPU)、浮点执行单元等。来自这些不同执行单元的结果被提供给重新排序缓冲器(ROB)1488,其采用未经排序结果并将它们返回为正确的程序顺序。
仍然参考图14,注意前端单元1470和乱序引擎1480二者都耦合到存储器层级的不同级别。具体示出的是指令级高速缓存1472,其又耦合到中级高速缓存1476,所述中级高速缓存1476又耦合到最后一级高速缓存1495。在一个实施例中,最后一级高速缓存1495在片上(有时被称为非核心)单元1490上被实现。作为示例,单元1490类似于图13的系统代理1310。如上所述,非核心1490与系统存储器1499通信,所述系统存储器1499在所示实施例中经由ED RAM被实现。还要注意,乱序引擎1480内的各种执行单元1486与第一级高速缓存1474通信,所述第一级高速缓存1474还与中级高速缓存1476通信。还要注意,附加核心1430N-2-1430N可以耦合到LLC 1495。虽然在图14的实施例中以该高级别示出,但应理解可以存在各种改动以及附加组件。
转到图15,示出了根据本教导的一个实施例的形成有处理器的示例性计算机系统的框图,所述处理器包括用于执行指令的执行单元,其中,互连中的一个或多个互连实现一个或多个特征。例如在本文描述的实施例中,根据本教导,系统1500包括诸如处理器1502之类的组件,以采用包括用于执行用于处理数据的算法的执行单元。系统1500代表基于可从加利福尼亚州圣克拉拉的英特尔公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,但是也可以使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统1500执行可从华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的版本,但是也可以使用其它操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户接口。因此,本教导的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本教导的替代实施例可以用在其它设备中,例如手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或根据至少一个实施的可以执行一个或多个指令的任何其它系统。
在该示出的实施例中,处理器1502包括一个或多个执行单元1508,其用于实现用于执行至少一个指令的算法。可以在单个处理器桌上型或服务器系统的上下文中描述一个实施例,但是替代实施例可以被包括在多处理器系统中。系统1500是“集线器”系统架构的示例。计算机系统1500包括用于处理数据信号的处理器1502。作为一个说明性示例,处理器1502包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器、或任何其它处理器设备(例如,数字信号处理器)。处理器1502耦合到处理器总线1510,所述处理器总线1510在处理器1502和系统1500中的其它组件之间发送数据信号。系统1500的元件(例如,图形加速器1512、存储器控制器集线器1516、存储器1520、I/O控制器集线器1525、无线收发机1526、快闪BIOS 1528、网络控制器1534、音频控制器1536、串行扩展端口1538、I/O控制器1540等)执行它们的、本领域技术人员公知的传统功能。
在一个实施例中,处理器1502包括级别1(L1)内部高速缓冲存储器1504。取决于架构,处理器1502可以具有单个内部高速缓存或多个级别的内部高速缓存。其它实施例包括内部和外部高速缓存二者的组合,这取决于特定的实施方式和需要。寄存器文件1506用于在各种寄存器中存储不同类型的数据,所述各种寄存器包括整数寄存器、浮点寄存器、向量寄存器、分组(banked)寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。
包括用于执行整数和浮点运算的逻辑的执行单元1508也驻留在处理器1502中。在一个实施例中,处理器1502包括用于存储微代码(ucode)的微代码ROM,所述微代码在被执行时用于执行用于某些宏指令的算法或处理复杂场景。这里,微代码是潜在地可更新的,以处理处理器1502的逻辑错误/修复。对于一个实施例,执行单元1508包括用于处理打包的指令集1509的逻辑。通过将打包指令集1509连同用于执行指令的相关联的电路包括在通用处理器1502的指令集中,由许多多媒体应用使用的操作可以使用通用处理器1502中的打包的数据来执行。因此,通过使用处理器的数据总线的全宽度来对打包的数据执行操作,可以更高效地加速和执行许多多媒体应用。这潜在地消除了跨处理器的数据总线传送较小的数据单元以执行一个或多个操作(一次一个数据元素)的需要。
执行单元1508的替代实施例还可以用在微控制器、嵌入式处理器、图形设备、DSP和其它类型的逻辑电路中。系统1500包括存储器1520。存储器1520包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其它存储器设备。存储器1520存储由要由处理器1502执行的数据信号表示的指令和/或数据。
注意,可以在图15中所示的一个或多个互连上利用本教导的任何上述特征或方面。例如,用于耦合处理器1502的内部单元的管芯上互连(ODI)(未示出)实现了上述教导的一个或多个方面。或者,本教导与以下各项相关联:处理器总线1510(例如,英特尔快速路径互连(QPI)或其它已知的高性能计算互连)、到存储器1520的高带宽存储器路径1518、到图形加速器1512的点对点链路(例如,外围组件快速互连(PCIe)兼容结构)、控制器集线器互连1522、用于耦合其它所示组件的I/O或其它互连(例如,USB、PCI、PCIe)。这样的组件的一些示例包括音频控制器1536、固件集线器(快闪BIOS)1528、无线收发机1526、数据存储装置1524、包含用户输入和键盘接口1542的传统I/O控制器1540、诸如通用串行总线(USB)之类的串行扩展端口1538、以及网络控制器1534。数据存储设备1524可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备或其它大容量存储设备。
现在参考图16,示出了根据本教导的实施例的第二系统1600的框图。如图16所示,多处理器系统1600是点对点互连系统,并且包括经由点对点互连1650耦合的第一处理器1670和第二处理器1680。处理器1670和1680中的每个处理器可以是处理器的某个版本。在一个实施例中,1652和1654是串行点对点一致性互连结构(例如,英特尔的快速路径互连(QPI)架构)的部分。作为结果,可以在QPI架构内实现该教导。
虽然仅示出了两个处理器1670、1680,但是应当理解,本教导的范围不限于此。在其它实施例中,一个或多个附加处理器可以存在于给定处理器中。
处理器1670和1680被示出为分别包括集成存储器控制器单元1672和1682。处理器1670还包括点对点(P-P)接口1676和1678作为其总线控制器单元的部分;类似地,第二处理器1680包括P-P接口1686和1688。处理器1670、1680可以使用P-P接口电路1678、1688经由点对点(P-P)接口1650交换信息。如图16所示,IMC 1672和1682将处理器耦合到相应的存储器,即存储器1632和存储器1634,其可以是本地附接到相应处理器的主存储器的部分。
处理器1670、1680均使用点对点接口电路1676、1694、1686、1698经由个体P-P接口1652、1654与芯片组1690交换信息。芯片组1690还经由接口电路1692沿着高性能图形互连1639与高性能图形电路1638交换信息。
共享高速缓存(未示出)可以被包括在任一处理器中或在两个处理器外部;但是经由P-P互连与处理器连接,以使得如果处理器被置于低功率模式下,则任一或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片组1690可以经由接口1696耦合到第一总线1616。在一个实施例中,第一总线1616可以是外围组件互连(PCI)总线,或者诸如快速PCI总线或另一第三代I/O互连总线之类的总线,但是本教导的范围不限于此。
如图16所示,各种I/O设备1614连同总线桥1618耦合到第一总线1616,所述总线桥1618将第一总线1616耦合到第二总线1620。在一个实施例中,第二总线1620包括低引脚数(LPC)总线。在一个实施例中,各种设备耦合到第二总线1620,所述各种设备包括例如键盘和/或鼠标1622、通信设备1627和存储单元1628,所述存储单元例如磁盘驱动器或其它大容量存储设备,其常包括指令/代码和数据1630。此外,音频I/O 1624被示出耦合到第二总线1620。注意,其它架构是可能的,其中,所包括的组件和互连架构是变化的。例如,代替图16的点对点架构,系统可以实现多点总线或其它这样的架构。
图17
现在参考图17,示出了根据本教导的实施例的计算机系统中存在的组件的框图。如图17所示,系统1700包括组件的任何组合。这些组件可以被实现为IC、其部分、分立电子设备、或者适于计算机系统中的其它模块、逻辑、硬件、软件、固件或其组合,或者被实现为以其它方式被包括在计算机系统的机箱内的组件。还要注意,图17的框图旨在示出计算机系统的许多组件的高级视图。然而,应当理解,可以省略所示组件中的一些组件,可以存在附加组件,并且在其它实施方式中可以出现所示组件的不同布置。作为结果,上述教导可以在下面示出或描述的互连中的一个或多个互连的任何部分中被实现。
如图17所示,在一个实施例中,处理器1710包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器或其它已知处理元件。在所示的实施方式中,处理器1710充当主处理单元和中央集线器,其用于与系统1700的许多不同组件通信。作为一个示例,处理器1710被实现为片上系统(SoC)。作为具体的说明性示例,处理器1710包括基于 架构核心TM的处理器,例如可从加利福尼亚州圣克拉拉的英特尔公司获得的i3、i5、i7或另一这样的处理器。然而,理解其它低功率处理器(例如,可从加利福尼亚州桑尼维尔的美国超威半导体公司(AMD)获得的)、来自加利福尼亚州桑尼维尔的MIPS科技公司的基于MIPS的设计、由ARM控股有限公司(或其客户、或其被许可人或采用者)许可的基于ARM的设计可以替代地存在于其它实施例中,例如苹果A5/A6处理器、高通骁龙处理器或TI OMAP处理器。注意,此类处理器的许多客户版本都经过修改和改变;然而,它们可以支持或识别执行如由处理器许可者阐述的所定义的算法的特定指令集。这里,微架构实施方式可能是不同的,但处理器的架构功能通常是一致的。以下将进一步讨论关于一个实施方式中的处理器1710的架构和操作的某些细节以提供说明性示例。
在一个实施例中,处理器1710与系统存储器1715通信。作为说明性示例,在一个实施例中,这可以经由多个存储器设备来实现以提供给定量的系统存储器。例如,存储器可以符合基于联合电子器件工程委员会(JEDEC)低功率双倍数据速率(LPDDR)的设计,例如根据JEDEC JESD 209-2E(2009年4月发布)的当前LPDDR2标准,或者下一代LPDDR标准,其将被称为LPDDR3或LPDDR4,其将为LPDDR2提供扩展以增加带宽。在各种实施方式中,个体存储器设备可以是不同封装类型的,例如单管芯封装(SDP)、双管芯封装(DDP)或四管芯封装(15P)。在一些实施例中,这些设备直接焊接到母板上以提供较低轮廓的解决方案(lower profilesolution),而在其它实施例中,设备被配置为一个或多个存储器模块,其又由给定的连接器耦合到母板。当然,其它存储器实施方式也是可能的,例如其它类型的存储器模块,例如,不同种类的双列直插式存储器模块(DIMM),包括但不限于microDIMM、MiniDIMM。在特定说明性实施例中,存储器的大小在2GB到16GB之间,并且可以被配置为经由球栅阵列(BGA)焊接到母板上的DDR3LM封装或LPDDR2或LPDDR3存储器。
为了提供诸如数据、应用、一个或多个操作系统等的信息的持久性存储装置,大容量存储装置1720还可以耦合到处理器1710。在各种实施例中,为了实现更薄更轻的系统设计以及改进系统响应性,该大容量存储装置可以经由SSD实现。然而,在其它实施例中,大容量存储设备可以通过以下方式实现:主要使用硬盘驱动器(HDD),其中,较小量的SSD存储装置充当SSD高速缓存,以在掉电事件期间实现对上下文状态和其它这样的信息的非易失性存储,以使得在重新启动系统活动时可以发生快速启动。还在图17中示出的是,闪存设备1722可以例如经由串行外围接口(SPI)耦合到处理器1710。该闪存设备可以提供系统软件的非易失性存储,包括基本输入/输出软件(BIOS)以及系统的其它固件。
在各种实施例中,系统的大容量存储装置由SSD单独实现或者被实现为具有SSD高速缓存的磁盘、光学或其它驱动器。在一些实施例中,大容量存储装置被实现为SSD或被实现为HDD以及恢复(RST)高速缓存模块。在各种实施方式中,HDD提供320GB-4太字节(TB)以及以上的存储,而RST高速缓存用具有24GB-256GB的容量的SSD来实现。注意,这样的SSD高速缓存可以被配置为单级高速缓存(SLC)或多级高速缓存(MLC)选项,以提供适当级别的响应性。在仅SSD的选项中,模块可以容适于各种位置中,例如mSATA或NGFF插槽中。作为示例,SSD具有从120GB-1TB的容量范围。
系统1700内可以存在各种输入/输出(IO)设备。在图17的实施例中具体地示出了显示器1724,其可以是被配置在机箱的盖子部分内的高清晰度LCD或LED面板。该显示面板还可以提供触摸屏1725,例如在显示面板外部适配,以使得经由与该触摸屏的用户交互,可以向系统提供用户输入以实现期望的操作,所述操作例如关于信息的显示、信息的访问等。在一个实施例中,显示器1724可以经由显示互连耦合到处理器1710,所述显示互连可以被实现为高性能图形互连。触摸屏1725可以经由另一互连耦合到处理器1710,在一个实施例中,所述互连可以是I2C互连。如图17中进一步所示,除了触摸屏1725之外,通过触摸方式的用户输入还可以经由触摸板1730发生,所述触摸板1730可以被配置在机箱内并且还可以耦合到与触摸屏1725相同的I2C互连。
显示面板可以以多种模式操作。在第一模式下,显示面板可以被布置在透明状态下,其中,显示面板对可见光是透明的。在各种实施例中,除了围绕周边的边框(bezel)之外,显示面板的大部分可以是显示器。当系统以笔记本模式操作并且显示面板以透明状态操作时,用户可以查看在显示面板上呈现的信息,同时还能够查看显示器后面的对象。另外,显示在显示面板上的信息可以由位于显示器后面的用户查看。或者显示面板的操作状态可以是不透明状态,其中,可见光不传播通过显示面板。
在平板模式下,系统被折叠关闭,以使得当基板的底表面搁置在表面上或由用户持有时,显示面板的后显示表面搁置在使其向外面向用户的位置。在平板操作模式下,后显示表面起到显示和用户接口的作用,这是因为该表面可以具有触摸屏功能并且可以执行传统触摸屏设备(例如,平板设备)的其它已知功能。为此,显示面板可以包括设置在触摸屏层和前显示表面之间的透明度调节层。在一些实施例中,透明度调节层可以是电致变色层(EC)、LCD层、或EC和LCD层的组合。
在各种实施例中,显示器可以是不同尺寸的,例如,11.6”或13.3”屏幕,并且可以具有16:9的纵横比以及至少300尼特的亮度。显示器还可以是全高清晰度(HD)分辨率(至少1920x 1080p),与嵌入式显示器端口(eDP)兼容,并且是具有面板自刷新的低功率面板。
关于触摸屏功能,系统可以提供是多触摸电容并且至少支持5个手指的显示器多触摸面板。并且在一些实施例中,显示器可以支持10个手指。在一个实施例中,触摸屏容适于防损坏和防刮玻璃和涂层(例如,Gorilla GlassTM或Gorilla Glass 2TM)内,以实现低摩擦,来减少“手指烧灼”并避免“手指跳过(finger skipping)”。为了提供增强的触摸体验和响应性,在一些实施方式中,触摸面板具有多点触控功能(例如,在捏缩放期间每静态视图少于2帧(30Hz))以及在200ms(手指到指针滞后)的情况下每帧(30Hz)小于1cm的单触摸功能。在一些实施方式中,显示器支持边缘到边缘玻璃,其具有也与面板表面齐平的极小屏幕边框并且在使用多点触控时具有有限的IO干扰。
出于感知计算和其它目的,各种传感器可以存在于系统内并且可以以不同的方式耦合到处理器1710。某些惯性和环境传感器可以通过传感器集线器1740耦合到处理器1710,例如经由I2C互连。在图17所示的实施例中,这些传感器可以包括加速度计1741、环境光传感器(ALS)1742、指南针1743和陀螺仪1744。其它环境传感器可以包括一个或多个处理器热传感器1746,其在一些实施例中经由系统管理总线(SMBus)总线耦合到处理器1710。
使用平台中存在的各种惯性和环境传感器,可以实现许多不同的用例。这些用例实现包括感知计算的先进计算操作,并且还允许关于功率管理/电池寿命、安全性和系统响应性的增强。
例如,关于功率管理/电池寿命问题,至少部分地基于来自环境光传感器的信息,确定平台位置中的环境光条件并因此控制显示器的亮度。因此,在某些光条件下减少了操作显示器所消耗的功率。
关于安全操作,基于从传感器获得的诸如位置信息之类的上下文信息,可以确定是否允许用户访问某些安全文档。例如,可以允许用户在工作场所或家庭位置处访问这样的文档。然而,当平台存在于公共位置处时,阻止用户访问这些文档。在一个实施例中,该确定基于位置信息,例如,经由对地标的GPS传感器或相机识别来确定。其它安全操作可以包括提供彼此近距离内的设备的配对,例如本文所述的便携式平台和用户的桌上型计算机、移动电话等。在一些实施方式中,当这些设备如此配对时,经由近场通信实现某些共享。然而,当设备超过某个范围时,可以禁用这种共享。此外,当将本文所述的平台与智能手机配对时,警报可被配置为当设备移动超过离彼此预定距离时被触发(当在公共位置中时)。作为对比,当这些配对设备在安全位置(例如,工作场所或家庭位置)中时,设备可以超过该预定限制而不触发这种警报。
还可以使用传感器信息来增强响应性。例如,即使当平台在低功率状态下时,仍然可以使传感器能够以相对低的频率运行。因此,平台位置的任何变化(例如,由惯性传感器、GPS传感器等确定的)被确定。如果没有任何这样的变化被注册,则发生到先前无线集线器(例如,Wi-FiTM接入点或类似的无线实现器(enabler))的更快连接,这是因为在该情况下不需要针对可用的无线网络资源进行扫描。因此,实现了从低功率状态唤醒时的较高水平的响应性。
应当理解,可以使用经由本文所述的平台内的集成传感器获得的传感器信息来实现许多其它用例,并且以上示例仅用于说明的目的。使用本文所述的系统,感知计算系统可以允许添加替代输入模态(包括手势识别),并且使系统能够感测用户操作和意图。
在一些实施例中,可以存在一个或多个红外或其它热感测元件,或用于感测用户的存在或移动的任何其它元件。这种感测元件可以包括一起工作、顺序工作或二者的多个不同元件。例如,感测元件包括提供初始感测的元件(例如,光或声音投影),之后由例如超声飞行时间相机或图案化光照相机感测手势检测。
同样在一些实施例中,系统包括光发生器以产生照明线。在一些实施例中,该线提供关于虚拟边界的视觉提示,即空间中的虚构或虚拟位置,其中,用户穿过或突破虚拟边界或平面的动作被解释为参与用计算系统的意图。在一些实施例中,当计算系统转换到关于用户的不同状态下时,照明线可以改变颜色。照明线可以用于为用户提供对空间中的虚拟边界的视觉提示,并且可以由系统用于确定关于用户的计算机状态的转换,包括确定用户何时希望参与用计算机。
在一些实施例中,计算机感测用户位置并且操作以将用户的手通过虚拟边界的移动解释为指示期望参与用计算机的用户手势。在一些实施例中,在用户穿过虚拟线或平面时,由光发生器生成的光可以改变,由此向用户提供关于用户已进入用于提供手势以将输入提供给计算机的区域的视觉反馈。
显示屏可以提供关于用户的计算系统的状态转换的视觉指示。在一些实施例中,在第一状态下提供第一屏幕,其中,系统例如通过使用感测元件中的一个或多个感测元件来感测用户的存在。
在一些实施方式中,系统用于例如通过面部识别来感测用户身份。这里,可以在第二状态下提供到第二屏幕的转换,其中,计算系统已识别出用户身份,其中,该第二屏幕向用户提供关于用户已转换到新状态下的视觉反馈。转换到第三屏幕可以在第三状态下发生,其中,用户已确认对用户的识别。
在一些实施例中,计算系统可以使用转换机制来确定用户的虚拟边界的位置,其中,虚拟边界的位置可以随用户和上下文而变化。计算系统可以生成光(例如,照明线),以指示用于参与用系统的虚拟边界。在一些实施例中,计算系统可以在等待状态下,并且可以以第一颜色产生光。计算系统可以检测用户是否已经超过虚拟边界,例如通过使用感测元件感测用户的存在和移动。
在一些实施例中,如果用户已被检测到已越过虚拟边界(例如,与用户的手相比虚拟边界线更靠近计算系统),则计算系统可以转换到用于从用户接收手势输入的状态,其中,用于指示转换的机制可以包括指示虚拟边界改变为第二颜色的光。
在一些实施例中,计算系统然后可以确定是否检测到手势移动。如果检测到手势移动,则计算系统可以继续进行手势识别过程,所述手势识别过程可以包括使用来自手势数据资料库(data library)的数据,所述手势数据资料库可以驻留在计算设备中的存储器中或者可以由计算设备以其它方式访问。
如果识别出用户的手势,则计算系统可以响应于输入而执行功能,并且如果用户在虚拟边界内,则返回以接收附加手势。在一些实施例中,如果未识别到手势,则计算系统可以转换到错误状态下,其中,用于指示错误状态的机制可以包括指示虚拟边界改变为第三颜色的灯,其中,如果用户在虚拟边界内以参与用计算系统,则系统返回以接收附加手势。
如上所述,在其它实施例中,系统可以被配置为可转换平板系统,其可以在至少两种不同模式(平板模式和笔记本模式)下使用。可转换系统可以具有两个面板,即显示面板和基板,以使得在平板模式下,两个面板堆叠地设置在彼此之上。在平板模式下,显示面板面向外并且可以提供如在传统平板中找到的触摸屏功能。在笔记本模式下,两个面板可以以打开的翻盖(clamshell)配置进行布置。
在各种实施例中,加速计可以是具有至少50Hz的数据速率的3轴加速计。还可以包括陀螺仪,其可以是3轴陀螺仪。此外,可以存在电子指南针/磁力计。而且,可以提供一个或多个接近度传感器(例如,用于打开盖子(lid)以感测人何时接近(或不接近)系统并调节功率/性能以延长电池寿命)。对于一些OS的传感器融合功能(包括加速度计、陀螺仪和指南针)可以提供增强功能。另外,经由具有实时时钟(RTC)的传感器集线器,可以实现来自传感器机构的唤醒,以在系统的其余部分在低功率状态下时接收传感器输入。
在一些实施例中,内盖/显示器打开开关或传感器用于指示盖子何时关闭/打开,并且可以用于将系统置于连接待机或自动从连接待机状态唤醒。其它系统传感器可以包括用于内部处理器、存储器和皮肤温度检测的ACPI传感器,以基于感测到的参数来实现处理器和系统操作状态的改变。
在实施例中,OS可以是实现连接待机的8OS(在本文中还被称为Win8 CS)。Windows 8连接待机或具有类似状态的另一OS可以经由本文所述的平台提供非常低的超空闲功率,以使应用能够以非常低的功耗保持连接,例如连接到基于云的位置。该平台可支持3种功率状态,即屏幕开启(正常);连接待机(作为默认的“关闭”状态);以及关机(零瓦特功耗)。因此,在连接待机状态下,即使屏幕关闭,平台也在逻辑上开启(以极小功率水平)。在这样的平台中,部分地由于用于使最低电动组件能够执行操作的卸载技术,因此可以使功率管理对应用透明并保持恒定连接。
还如图17所示,各种外围设备可以经由低引脚数(LPC)互连耦合到处理器1710。在所示的实施例中,各种组件可以通过嵌入式控制器1735耦合。这样的组件可以包括键盘1736(例如,经由PS2接口耦合)、风扇1737和EC热传感器1739。在一些实施例中,触摸板1730还可以经由PS2接口耦合到EC 1735。另外,安全处理器(例如,根据2003年10月2日的可信计算组(TCG)TPM规范版本1.2的可信平台模块(TPM)1738)还可以经由该LPC互连耦合到处理器1710。然而,理解本教导的范围不限于此方面,并且安全信息的安全处理和存储可以在另一受保护的位置中,例如安全协处理器中的静态随机存取存储器(SRAM)、或者仅在受安全飞地(SE)处理器模式保护时才解密的加密数据块。
在特定实施方式中,外围端口可以包括:高清媒体接口(HDMI)连接器(其可以是不同形状因子的,例如全尺寸、迷你或微型);一个或多个USB端口,例如根据通用串行总线修订版3.0规范(2008年11月)的全尺寸外部端口,其中,当系统在连接待机状态下并被插入到AC墙电源中时,至少一个USB端口被供电以用于对USB设备(例如,智能手机)充电。此外,可以提供一个或多个ThunderboltTM端口。其它端口可以包括外部可访问的读卡器,例如全尺寸SD-XC读卡器和/或用于WWAN的SIM卡读卡器(例如,8引脚读卡器)。对于音频,可以存在3.5mm插孔,其具有立体声和麦克风功能(例如,组合功能),具有对插孔检测(例如,仅支持使用盖子中的麦克风的耳机或电缆中的麦克风的耳机)的支持。在一些实施例中,该插孔可以是在立体声耳机和立体声麦克风输入之间重新分派任务的。而且,可以提供电源插孔以耦合到AC砖。
系统1700可以以各种方式(包括无线地)与外部设备通信。在图17所示的实施例中,存在各种无线模块,每个所述无线模块可以与被配置用于特定无线通信协议的无线电单元相对应。用于诸如近场的短距离(例如,近场)无线通信的一种方式可以是经由近场通信(NFC)单元1745,其在一个实施例中可以经由SMBus与处理器1710通信。注意,经由该NFC单元1745,彼此靠近的设备可以通信。例如,用户可以使系统1700能够与另一(例如)便携式设备(例如,用户的智能手机)经由将两个设备紧密地适配在一起并且使得能够传送诸如识别信息支付信息之类的信息、诸如图像数据之类的数据等进行通信。还可以使用NFC系统来执行无线功率传送。
使用本文描述的NFC单元,用户可以并排地将设备碰撞以及将设备并排放置以通过利用这样的设备中的一个或多个设备的线圈之间的耦合来用于近场耦合功能(例如,近场通信和无线功率传送(WPT))。更具体而言,实施例提供具有策略性成形和放置的铁氧体材料的设备,以提供线圈的更好耦合。每个线圈具有与之相关联的电感,其可以结合系统的电阻、电容和其它特性来选择,以实现系统的共同谐振频率。
如图17中进一步所示,附加无线单元可以包括其它短程无线引擎,包括WLAN单元1750和蓝牙单元1752。使用WLAN单元1750,可以实现根据给定的电气和电子工程师协会(IEEE)802.11标准的Wi-FiTM通信,而经由蓝牙单元1752,可以发生经由蓝牙协议的短程通信。这些单元可以例如经由USB链路或通用异步接收机发射机(UART)链路与处理器1710通信。或者,这些单元可以经由互连耦合到处理器1710,所述互连根据外围组件快速互连TM(PCIeTM)协议(例如,根据快速PCITM规范基本规范版本3.0(2007年1月17日公布))或者诸如串行数据输入/输出(SDIO)标准之类的其它这样的协议。当然,可以被配置在一个或多个附加卡上的这些外围设备之间的实际物理连接可以通过适于母板的NGFF连接器的方式。
另外,例如,根据蜂窝或其它无线广域协议的无线广域通信可以经由WWAN单元1756发生,所述WWAN单元1756又可以耦合到订户身份模块(SIM)1757。此外,为了使得能够接收和使用位置信息,还可以存在GPS模块1755。注意,在图17所示的实施例中,WWAN单元1756和诸如相机模块1754之类的集成捕获设备可以经由给定的USB协议(例如,USB 2.0或3.0链路,或UART或I2C协议)进行通信。再次地,这些单元的实际物理连接可以经由将NGFF附加卡适配到被配置在母板上的NGFF连接器。
在特定实施例中,可以模块化地提供无线功能,例如,利用WiFiTM 802.11ac解决方案(例如,与IEEE 802.11abgn向后兼容的附加卡)以及对Windows 8CS的支持。该卡可以被配置在内部插槽中(例如,经由NGFF适配器)。附加模块可以提供蓝牙功能(例如,具有向后兼容性的蓝牙4.0)以及无线显示功能。此外,NFC支持可以经由单独的设备或多功能设备提供,并且可以作为示例定位在机箱的右前部分中以便于访问。又一附加模块可以是WWAN设备,其可以提供对3G/4G/LTE和GPS的支持。该模块可以在内部(例如,NGFF)插槽中被实现。可以为WiFiTM、蓝牙、WWAN、NFC和GPS提供集成天线支持,以使得能够从WiFiTM无缝转换到WWAN无线电、无线千兆位(WiGig)(根据无线千兆规范(2010年7月)),反之亦然。
如上所述,集成相机可以被包括在盖子中。作为一个示例,该相机可以是高分辨率相机,例如具有至少2.0百万像素(MP)的分辨率并且延伸到6.0MP或更高。
为了提供音频输入和输出,可以经由数字信号处理器(DSP)1760实现音频处理器,其可以经由高清晰度音频(HDA)链路耦合到处理器1710。类似地,DSP 1760可以与集成编码器/解码器(CODEC)和放大器1762通信,CODEC和放大器1762又可以耦合到可以在机箱内实现的输出扬声器1763。类似地,放大器和CODEC 1762可以耦合以接收来自麦克风1765的音频输入,在实施例中,所述麦克风1765可以经由双阵列麦克风(例如,数字麦克风阵列)来实现,以提供高质量的音频输入,以使得能够对系统内各种操作进行语音激活的控制。还要注意,音频输出可以从放大器/CODEC 1762提供给耳机插孔1764。虽然在图17的实施例中用这些特定组件示出,但应理解本教导的范围不在这方面受限。
在特定实施例中,数字音频编解码器和放大器能够驱动立体声耳机插孔、立体声麦克风插孔、内部麦克风阵列和立体声扬声器。在不同的实施方式中,编解码器可以集成到音频DSP中或者经由HD音频路径耦合到外围控制器集线器(PCH)。在一些实施方式中,除了集成立体声扬声器之外,还可以提供一个或多个低音扬声器,并且扬声器解决方案可以支持DTS音频。
在一些实施例中,处理器1710可以由外部电压调节器(VR)和集成在处理器管芯内部的多个内部电压调节器(被称为完全集成的电压调节器(FIVR))供电。在处理器中使用多个FIVR使得能够将组件分组到单独的功率平面中,以使得功率由FIVR调节并仅供应给组中的那些组件。在功率管理期间,当处理器被置于某个低功率状态下时,一个FIVR的给定功率平面可以掉电或断电,而另一FIVR的另一功率平面保持活动或完全供电。
在一个实施例中,可以在一些深度睡眠状态期间使用维持功率平面来将I/O引脚上电以用于若干I/O信号,例如在处理器和PCH之间的接口、与外部VR的接口以及与EC 1735的接口。该维持功率平面还为管芯上电压调节器供电,所述电压调节器支持板载SRAM或在睡眠状态期间存储处理器上下文的其它高速缓冲存储器。维持功率平面还用于将处理器的唤醒逻辑上电,所述唤醒逻辑检测和处理各种唤醒源信号。
在功率管理期间,当其它功率平面在处理器进入某些深度睡眠状态时掉电或断电时,维持功率平面保持上电以支持上述组件。然而,当不需要这些组件时,这可以导致不必要的功率消耗或耗散。为此,实施例可以提供连接待机睡眠状态,以使用专用功率平面来维持处理器上下文。在一个实施例中,连接待机睡眠状态促进使用PCH的资源的处理器唤醒,所述PCH本身可以与处理器一起存在于封装中。在一个实施例中,连接待机睡眠状态促进维持PCH中的处理器架构功能,直到处理器唤醒,这使得能够关闭先前在深度睡眠状态期间保持上电的所有不必要的处理器组件,包括关闭所有时钟。在一个实施例中,PCH包含时间戳计数器(TSC)和连接备用逻辑,以用于在连接待机状态期间控制系统。用于维持功率平面的集成电压调节器也可以驻留在PCH上。
在实施例中,在连接待机状态期间,集成电压调节器可以充当专用功率平面,其保持上电以支持专用高速缓冲存储器,其中,在处理器进入深度睡眠状态和连接待机状态时存储处理器上下文(例如,临界状态变量)。该临界状态可以包括与架构、微架构、调试状态相关联的状态变量和/或与处理器相关联的类似状态变量。
在连接待机状态期间,来自EC 1735的唤醒源信号可以被发送到PCH而不是处理器,以使得PCH而不是处理器可以管理唤醒处理。此外,TSC被维护在PCH中以促进维持处理器架构功能。虽然在图17的实施例中示出了这些特定组件,但应理解本教导的范围不在这方面受限。
处理器中的功率控制可以引起增强的功率节省。例如,可以在核心之间动态分配功率,个体核心可以改变频率/电压,并且可以提供多个深度低功率状态以实现非常低的功耗。另外,对核心或独立核心部分的动态控制可以通过在组件不正被使用时使它们断电来提供降低的功耗。
一些实施方式可以提供特定的功率管理IC(PMIC)以控制平台功率。使用该解决方案,当在给定的待机状态下时(例如,当在Win8连接待机状态下时),系统可以在延长的持续时间(例如,16小时)期间看到非常低(例如,小于5%)的电池下降(battery degradation)。在Win8空闲状态下,可以实现超过例如9小时的电池寿命(例如,150尼特)。对于视频回放,可以实现长的电池寿命,例如全HD视频回放可以在最少6小时内发生。在一个实施方式中,对于使用SSD的Win8 CS,平台可以具有例如35瓦小时(Whr)的能量容量,并且对于使用具有RST高速缓存配置的HDD的Win8CS具有(例如)40-44Whr的能量容量。
特定实施方式可以提供对15W标称CPU热设计功率(TDP)的支持,其具有高达约25WTDP设计点的可配置CPU TDP。由于上述热特征,因此平台可以包括极小的通风口。此外,该平台是枕头友好(pillow-friendly)的(这是因为没有热空气吹向用户)。取决于机箱材料,可以实现不同的最高温度点。在塑料机箱的一个实施方式中(至少具有塑料的盖子或基部),最高操作温度可以是52摄氏度(C)。并且对于金属机箱的实施方式,最高操作温度可以是46℃。
在不同的实施方式中,诸如TPM之类的安全模块可以集成到处理器中,或者可以是诸如TPM 2.0设备之类的分立设备。用集成的安全模块(还被称为平台信任技术(PTT)),可以使得BIOS/固件能够暴露用于某些安全特征的某些硬件特征,所述安全特征包括安全指令、安全启动、防盗技术(TXT)、身份保护技术、可信执行技术(TXT)以及可管理性引擎技术以及安全用户接口(例如,安全键盘和显示器)。
接下来转到图18,描绘了根据教导的系统片上(SOC)设计的实施例。作为特定说明性示例,SOC 1800被包括在用户设备(UE)中。在一个实施例中,UE指的是要由终端用户用于通信的任何设备,例如手持电话、智能手机、平板电脑、超薄笔记本电脑、具有宽带适配器的笔记本电脑、或任何其它类似的通信设备。UE常连接到基站或节点,其本质上潜在地与GSM网络中的移动站(MS)相对应。
这里,SOC 1800包括2个核心——1806和1807。类似于上面的讨论,核心1806和1807可以符合指令集架构,例如基于架构核心TM的处理器、美国超威半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计、或其客户、以及他们的被许可人或采用者。核心1806和1807耦合到高速缓存控制1808,其与总线接口单元1809和L2高速缓存1810相关联以与系统1800的其它部分通信。互连1812包括片上互连,例如IOSF、AMBA或如上所述的其它互连,其潜在地实现了所描述的教导的一个或多个方面。
互连1812将通信信道提供给其它组件,例如用于与SIM卡接合的订户身份模块(SIM)1830、用于保存引导代码以供核心1806和1807执行以初始化和引导SOC 1800的引导rom 1835、用于与外部存储器(例如,DRAM 1860)接合的SDRAM控制器1840、用于与非易失性存储器(例如,闪存1865)接合的闪存控制器1845、用于与外围接合的外围控制(例如,串行外围接口)、用于显示和接收输入(例如,触摸启用的输入)的视频编解码器1820和视频接口1825、用于执行图形相关计算的GPU 1815等。这些接口中的任何接口可以包括本文所述教导的各方面。
另外,系统示出了用于通信的外围设备,例如蓝牙模块1870、3G调制解调器1875、GPS 1880和WiFi 1885。注意,如上所述,UE包括用于通信的无线电单元。作为结果,这些外围通信模块并非都是必需的。然而,在UE中,将包括用于外部通信的某个形式的无线电。
虽然已经关于有限数量的实施例描述了本教导,但是本领域技术人员将从中领会到许多修改和变型。所附权利要求旨在覆盖落入本教导的真实精神和范围内的所有这样的修改和变型。
设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。另外,可以在设计过程的一些阶段处产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中各种设备的物理位置的数据级别。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是针对用于生产集成电路的掩模指定在不同掩模层上各种特征的存在或不存在的数据。在设计的任何表示中,数据可以以任何形式的机器可读介质存储。存储器或者磁或光存储装置(例如,盘)可以是机器可读介质,其用于存储经由调制或以其它方式生成以发送这种信息的光波或电波发送的信息。当发送指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重发的程度上,进行新的复制。因此,通信提供商或网络提供商可以至少临时地在有形的机器可读介质上存储体现本教导的实施例的技术的物品,例如编码成载波的信息。
本文使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂时性介质相关联的硬件(例如,微控制器),以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用指代硬件,其被具体配置为识别和/或执行要被保存在非暂时性介质上的代码。此外,在另一实施例中,模块的使用指代包括代码的非暂时性介质,其特别适于由微控制器执行以执行预定操作。并且可以推断,在又一实施例中,术语模块(在该示例中)可以指代微控制器和非暂时性介质的组合。常被示出为单独的模块边界通常变化并且潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,例如晶体管、寄存器、或其它硬件,例如可编程逻辑设备。
在一个实施例中,短语“用于”或“被配置为”的使用指代安排、组合、制造、提供销售、导入和/或设计装置、硬件、逻辑或元件,以执行指定或确定的任务。在该示例中,如果未正在操作的装置或其元件被设计、耦合和/或互连以执行所述指定的任务,则其仍被“配置为”执行指定的任务。作为纯说明性的示例,逻辑门可以在操作期间提供0或1。但是,“被配置为”将使能信号提供给时钟的逻辑门不包括可以提供1或0的每个潜在的逻辑门。相反,逻辑门是以某种方式(在操作期间输出1或0将启用时钟)耦合的逻辑门。再次注意,术语“被配置为”的使用不需要操作,而是关注于装置、硬件和/或元件的潜在状态,其中,在潜在状态下装置、硬件和/或元件被设计为在装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用“能够/用于”和“或可操作以”的短语是指代以使得能够以指定的方式使用该装置、逻辑、硬件和/或元件的方式设计的一些装置、逻辑、硬件和/或元件。注意,如上所述,在一个实施例中,使用“用于”、“能够用于”或“可操作以”指的是装置、逻辑、硬件和/或元件的潜在状态,其中,装置、逻辑、硬件和/或元件未正在操作,但是以使得能够以指定方式使用装置的方式被设计。
本文使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,使用逻辑电平、逻辑值或逻辑值也称为1和0,它们仅表示二进制逻辑状态。例如,1指代高逻辑电平,并且0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元的存储单元可以是能够保存单个逻辑值或多个逻辑值的。然而,计算机系统中的值的其它表示已被使用。例如,十进制数十还可以表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的任何信息表示。
此外,状态可以由值或值的部分表示。作为示例,第一值(例如,逻辑一)可以表示默认或初始状态,而第二值(例如,逻辑0)可以表示非默认状态。另外,在一个实施例中,术语“重置”和“设置”分别指代默认和更新的值或状态。例如,默认值潜在地包括高逻辑值,即重置,而更新值潜在地包括低逻辑值,即设置。注意,可以利用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以经由存储在可由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。非暂时性机器可访问/可读介质包括以机器(例如,计算机或电子系统)可读形式提供(即,存储和/或发送)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器设备;电存储设备;光学存储设备;声学存储设备;用于保存从暂时性(传播的)信号(例如,载波、红外信号、数字信号)接收到的信息的其它形式的存储设备;等等,其区别于可以从其接收信息的非暂时性介质。
用于编程逻辑以执行本教导的实施例的指令可以存储在系统中的存储器内,所述存储器例如DRAM、高速缓存、闪速存储器或其它存储装置。此外,指令可以经由网络或通过其它计算机可读介质来分发。因此,机器可读介质可以包括用于存储或发送采用机器(例如,计算机)可读形式的信息的任何机制,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或有形的机器可读存储设备,其用于通过互联网经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)的信息传输。因此,计算机可读介质包括适合于以机器(例如,计算机)可读的形式存储或发送电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在本教导的至少一个实施例中。因此,贯穿本说明书在各处出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
在前述说明书中,已经参考特定示例性实施例给出了详细描述。然而,将显而易见的是,在不脱离所附权利要求中阐述的教导的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被视为说明性意义而非限制性意义。此外,实施例的前述使用和其它示例性语言不一定指代相同的实施例或相同的示例,而是可以指代不同且有区别的实施例,以及潜在地相同的实施例。
通过示例的方式公开了一种用于互连的端点装置,包括:到所述互连的机械接口和电接口;以及一个或多个逻辑元件,其包括接口向量引擎,所述接口向量引擎用于:接收用于所述接口的第一标量事务;确定所述第一标量事务满足用于向量化的标准;接收用于所述接口的第二标量事务;确定该第二事务满足所述用于向量化的标准;将所述第一标量事务和第二标量事务向量化成向量事务;以及经由所述电接口发送所述向量事务。
还公开了示例,其中,所述接口向量引擎还用于:确定没有接收到所述第二标量事务的超时已到期,以及经由所述电接口发送所述第一标量事务。
还公开了示例,其中,所述接口向量引擎还用于:接收上至最多n个标量事务的多个附加标量事务,以及将所述第一标量事务、所述第二标量事务和所述附加标量事务向量化成所述向量事务。
还公开了示例,其中,所述接口向量引擎还用于:确定在接收到m个标量事务之后的超时已到期,其中,m<n,以及将所述第一标量事务、所述第二标量事务和所述附加标量事务向量化成所述向量事务。
还公开了示例,还包括用于供用户配置所述超时的单元。
还公开了示例,其中,所述接口向量引擎还用于:接收m个标量事务,其中,m<n;接收第k个标量事务;确定所述第k个标量事务不满足所述用于向量化的标准;将所述m个标量事务向量化成所述向量事务;以及经由所述电接口发送所述第k个标量事务。
还公开了示例,其中,所述用于向量化的标准是最大事务大小。
还公开了示例,还包括用于供用户配置所述最大事务大小的单元。
还公开了示例,其中,所述向量引擎还用于提供向量读取消息,所述向量读取消息包括用于待执行的标量读取的数量的字段、用于所述标量读取的个体长度的字段、以及多个源地址。
还公开了示例,其中,所述向量引擎还用于提供向量写入消息,所述向量写入消息包括用于待执行的标量写入的数量的字段、用于所述标量写入的个体长度的字段、以及多个写入目的地地址。
还公开了示例,其中,所述向量引擎还用于提供向量读取完成消息,所述向量读取完成消息包括多个有效载荷。
还公开了示例,其中,所述互连是PCIe互连。
还公开了一个或多个其上存储有可执行指令的有形的非暂时性计算机可读介质的示例,所述可执行指令用于命令处理器执行以下操作:经由电接口通信地耦合到互连;以及提供接口向量引擎,其用于:接收用于所述接口的第一标量事务;确定所述第一标量事务满足用于向量化的标准;接收用于所述接口的第二标量事务;确定该第二事务满足所述用于向量化的标准;将所述第一标量事务和第二标量事务向量化成向量事务;以及经由所述电接口发送所述向量事务。
还公开了示例,其中,所述接口向量引擎还用于:确定没有接收到所述第二标量事务的超时已到期,以及经由所述电接口发送所述第一标量事务。
还公开了示例,其中,所述接口向量引擎还用于:接收上至最多n个标量事务的多个附加标量事务,以及将所述第一标量事务、所述第二标量事务和所述附加标量事务向量化成所述向量事务。
还公开了示例,其中,所述接口向量引擎还用于:确定在接收到m个标量事务之后的超时已到期,其中,m<n,以及将所述第一标量事务、所述第二标量事务和所述附加标量事务向量化成所述向量事务。
还公开了示例,还包括用于供用户配置所述超时的单元。
还公开了示例,其中,所述接口向量引擎还用于:接收m个标量事务,其中,m<n;接收第k个标量事务;确定所述第k个标量事务不满足所述用于向量化的标准;将所述m个标量事务向量化成所述向量事务;以及经由所述电接口发送所述第k个标量事务。
还公开了示例,其中,所述用于向量化的标准是最大事务大小。
还公开了示例,其中,所述向量引擎还用于提供向量读取消息,所述向量读取消息包括用于待执行的标量读取的数量的字段、用于所述标量读取的个体长度的字段、以及多个源地址。
还公开了示例,其中,所述向量引擎还用于提供向量写入消息,所述向量写入消息包括用于待执行的标量写入的数量的字段、用于所述标量写入的个体长度的字段、以及多个写入目的地地址。
还公开了示例,其中,所述向量引擎还用于提供向量读取完成消息,所述向量读取完成消息包括多个有效载荷。
还公开了示例,其中,所述互连是PCIe互连。
还公开了一种互连控制器的示例,包括:到互连的机械接口和电接口;以及一个或多个逻辑元件,其包括标量存储器适配器,所述标量存储器适配器用于:经由所述互连接收向量存储器消息;将所述向量存储器消息转换成多个标量存储器消息;以及经由所述互连发送所述标量存储器消息。
还公开了示例,其中,所述标量存储器适配器还用于:经由所述互连接收多个标量存储器消息,所述标量存储器消息响应于第一向量存储器消息;将所述多个标量存储器消息聚合成第二向量存储器消息;以及经由所述互连发送所述第二向量存储器消息。
还公开了示例,其中,所述互连是PCIe互连。
Claims (25)
1.一种用于互连的端点装置,包括:
到所述互连的机械和电接口;以及
一个或多个逻辑元件,其包括接口向量引擎,所述接口向量引擎用于:
接收用于所述接口的第一标量事务;
确定所述第一标量事务满足用于向量化的标准;
接收用于所述接口的第二标量事务;
确定所述第二标量事务满足所述用于向量化的标准;
将所述第一标量事务和所述第二标量事务向量化成向量事务;以及
经由所述电接口发送所述向量事务。
2.根据权利要求1所述的装置,其中,所述接口向量引擎还用于:确定超时已到期而没有接收到所述第二标量事务,以及经由所述电接口发送所述第一标量事务。
3.根据权利要求1所述的装置,其中,所述接口向量引擎还用于:接收上至最多n个标量事务的多个附加标量事务,以及将所述第一标量事务、所述第二标量事务和所述附加标量事务向量化成所述向量事务。
4.根据权利要求3所述的装置,其中,所述接口向量引擎还用于:确定在接收到m个标量事务之后超时已到期,其中,m<n,以及将所述第一标量事务、所述第二标量事务和所述附加标量事务向量化成所述向量事务。
5.根据权利要求4所述的装置,还包括用于供用户配置所述超时的单元。
6.根据权利要求3所述的装置,其中,所述接口向量引擎还用于:
接收m个标量事务,其中,m<n;
接收第k个标量事务;
确定所述第k个标量事务不满足所述用于向量化的标准;
将所述m个标量事务向量化成所述向量事务;以及
经由所述电接口发送所述第k个标量事务。
7.根据权利要求1所述的装置,其中,所述用于向量化的标准是最大事务大小。
8.根据权利要求7所述的装置,还包括用于供用户配置所述最大事务大小的单元。
9.根据权利要求1所述的装置,其中,所述向量引擎还用于提供向量读取消息,所述向量读取消息包括用于待执行的标量读取的数量的字段、用于所述标量读取的个体长度的字段、以及多个源地址。
10.根据权利要求1所述的装置,其中,所述向量引擎还用于提供向量写入消息,所述向量写入消息包括用于待执行的标量写入的数量的字段、用于所述标量写入的个体长度的字段、以及多个写入目的地地址。
11.根据权利要求1所述的装置,其中,所述向量引擎还用于提供向量读取完成消息,所述向量读取完成消息包括多个有效载荷。
12.根据权利要求1-11中任一项所述的装置,其中,所述互连是PCIe互连。
13.一个或多个有形的非暂时性计算机可读介质,其上存储有可执行指令,所述可执行指令用于命令处理器执行以下操作:
经由电接口通信地耦合到互连;以及
提供接口向量引擎,其用于:
接收用于所述接口的第一标量事务;
确定所述第一标量事务满足用于向量化的标准;
接收用于所述接口的第二标量事务;
确定所述第二标量事务满足所述用于向量化的标准;
将所述第一标量事务和所述第二标量事务向量化成向量事务;以及
经由所述电接口发送所述向量事务。
14.根据权利要求13所述的一个或多个有形的非暂时性计算机可读介质,其中,所述接口向量引擎还用于:确定超时已到期而没有接收到所述第二标量事务,以及经由所述电接口发送所述第一标量事务。
15.根据权利要求13所述的一个或多个有形的非暂时性计算机可读介质,其中,所述接口向量引擎还用于:接收上至最多n个标量事务的多个附加标量事务,以及将所述第一标量事务、所述第二标量事务和所述附加标量事务向量化成所述向量事务。
16.根据权利要求15所述的一个或多个有形的非暂时性计算机可读介质,其中,所述接口向量引擎还用于:确定在接收到m个标量事务之后超时已到期,其中,m<n,以及将所述第一标量事务、所述第二标量事务和所述附加标量事务向量化成所述向量事务。
17.根据权利要求16所述的一个或多个有形的非暂时性计算机可读介质,还包括用于供用户配置所述超时的单元。
18.根据权利要求15所述的一个或多个有形的非暂时性计算机可读介质,其中,所述接口向量引擎还用于:
接收m个标量事务,其中,m<n;
接收第k个标量事务;
确定所述第k个标量事务不满足所述用于向量化的标准;
将所述m个标量事务向量化成所述向量事务;以及
经由所述电接口发送所述第k个标量事务。
19.根据权利要求13所述的一个或多个有形的非暂时性计算机可读介质,其中,所述用于向量化的标准是最大事务大小。
20.根据权利要求13所述的一个或多个有形的非暂时性计算机可读介质,其中,所述向量引擎还用于提供向量读取消息,所述向量读取消息包括用于待执行的标量读取的数量的字段、用于所述标量读取的个体长度的字段、以及多个源地址。
21.根据权利要求13所述的一个或多个有形的非暂时性计算机可读介质,其中,所述向量引擎还用于提供向量写入消息,所述向量写入消息包括用于待执行的标量写入的数量的字段、用于所述标量写入的个体长度的字段、以及多个写入目的地地址。
22.根据权利要求13所述的一个或多个有形的非暂时性计算机可读介质,其中,所述向量引擎还用于提供向量读取完成消息,所述向量读取完成消息包括多个有效载荷。
23.根据权利要求13-22中任一项所述的一个或多个有形的非暂时性计算机可读介质,其中,所述互连是PCIe互连。
24.一种互连控制器,包括:
到互连的机械和电接口;以及
一个或多个逻辑元件,其包括标量存储器适配器,所述标量存储器适配器用于:
经由所述互连接收向量存储器消息;
将所述向量存储器消息转换成多个标量存储器消息;以及
经由所述互连发送所述标量存储器消息。
25.根据权利要求24所述的互连控制器,其中,所述标量存储器适配器还用于:
经由所述互连接收多个标量存储器消息,所述标量存储器消息响应于第一向量存储器消息;
将所述多个标量存储器消息聚合成第二向量存储器消息;以及
经由所述互连发送所述第二向量存储器消息。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2016/112710 WO2018119778A1 (en) | 2016-12-28 | 2016-12-28 | System and method for vector communication |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN110121703A CN110121703A (zh) | 2019-08-13 |
| CN110121703B true CN110121703B (zh) | 2023-08-01 |
Family
ID=62710878
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201680091200.XA Active CN110121703B (zh) | 2016-12-28 | 2016-12-28 | 用于向量通信的系统和方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US11232056B2 (zh) |
| CN (1) | CN110121703B (zh) |
| WO (1) | WO2018119778A1 (zh) |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018119778A1 (en) | 2016-12-28 | 2018-07-05 | Intel Corporation | System and method for vector communication |
| TWI720345B (zh) | 2018-09-20 | 2021-03-01 | 威盛電子股份有限公司 | 多核心系統的內連線結構 |
| US11055256B2 (en) * | 2019-04-02 | 2021-07-06 | Intel Corporation | Edge component computing system having integrated FaaS call handling capability |
| US20210109759A1 (en) * | 2019-10-15 | 2021-04-15 | EMC IP Holding Company LLC | Pipelined method to improve backup and restore performance |
| US11182312B2 (en) * | 2020-04-02 | 2021-11-23 | Micron Technology, Inc. | Memory sub-system manufacturing mode |
| CN113343893B (zh) * | 2021-06-24 | 2022-08-05 | 武汉虹信技术服务有限责任公司 | 基于人员通行规律的设备人脸识别控制方法及其应用 |
| CN115617862A (zh) * | 2021-07-15 | 2023-01-17 | 华为技术有限公司 | 优化数据访问性能的方法和中间设备 |
| CN115695878B (zh) * | 2022-10-27 | 2023-08-04 | 北京华建云鼎科技股份公司 | 基于spi的通信系统 |
| CN120705105A (zh) * | 2024-03-25 | 2025-09-26 | 杭州阿里云飞天信息技术有限公司 | 数据传输方法、电子设备和存储介质 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2009137996A1 (zh) * | 2008-05-13 | 2009-11-19 | 华为技术有限公司 | 存储设备级联方法、存储系统及存储设备 |
| US8122177B1 (en) * | 2009-05-19 | 2012-02-21 | Xilinx, Inc. | Direct memory access technique for use with PCIe endpoints |
| WO2015108522A1 (en) * | 2014-01-16 | 2015-07-23 | Intel Corporation | An apparatus, method, and system for a fast configuration mechanism |
| US9286261B1 (en) * | 2011-11-14 | 2016-03-15 | Emc Corporation | Architecture and method for a burst buffer using flash technology |
| CN105718391A (zh) * | 2014-12-20 | 2016-06-29 | 英特尔公司 | 事务性缓冲式存储器中的提早识别 |
| CN105760138A (zh) * | 2012-06-29 | 2016-07-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
Family Cites Families (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5175856A (en) * | 1990-06-11 | 1992-12-29 | Supercomputer Systems Limited Partnership | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution |
| US5802375A (en) * | 1994-11-23 | 1998-09-01 | Cray Research, Inc. | Outer loop vectorization |
| KR0157924B1 (ko) * | 1995-12-23 | 1998-12-15 | 문정환 | 데이타 전송 시스템 및 그 방법 |
| DE69726400T2 (de) * | 1996-09-20 | 2004-08-26 | Koninklijke Philips Electronics N.V. | Festkörper-datenprozessor mit vielseitiger mehrquellen-unterbrechungsorganisation |
| US6408295B1 (en) * | 1999-06-16 | 2002-06-18 | International Business Machines Corporation | System and method of using clustering to find personalized associations |
| US6647438B1 (en) * | 2000-09-19 | 2003-11-11 | Intel Corporation | Direct memory access transfer reduction method and apparatus to overlay data on to scatter gather descriptors for bus-mastering I/O controllers |
| US7080365B2 (en) * | 2001-08-17 | 2006-07-18 | Sun Microsystems, Inc. | Method and apparatus for simulation system compiler |
| US20030198188A1 (en) * | 2002-04-20 | 2003-10-23 | Castlebury Michael J. | Combined hardware and software architecture for remote monitoring |
| US7493427B2 (en) * | 2004-07-14 | 2009-02-17 | International Business Machines Corporation | Apparatus and method for supporting received data processing in an offload of network protocol processing |
| US7500029B2 (en) * | 2004-10-29 | 2009-03-03 | Intel Corporation | Maximal length packets |
| US7768989B2 (en) * | 2005-03-04 | 2010-08-03 | Itt Manufacturing Enterprises, Inc. | Method and apparatus for multipoint voice operation in a wireless, Ad-Hoc environment |
| US7627735B2 (en) | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
| US20090158298A1 (en) * | 2007-12-12 | 2009-06-18 | Abhishek Saxena | Database system and eventing infrastructure |
| US8204985B2 (en) | 2008-04-28 | 2012-06-19 | Alcatel Lucent | Probabilistic aggregation over distributed data streams |
| US8255884B2 (en) * | 2008-06-06 | 2012-08-28 | International Business Machines Corporation | Optimized scalar promotion with load and splat SIMD instructions |
| US8209525B2 (en) * | 2008-08-15 | 2012-06-26 | Apple Inc. | Method and apparatus for executing program code |
| US20100332792A1 (en) | 2009-06-30 | 2010-12-30 | Advanced Micro Devices, Inc. | Integrated Vector-Scalar Processor |
| US8495607B2 (en) * | 2010-03-01 | 2013-07-23 | International Business Machines Corporation | Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations |
| US8723877B2 (en) * | 2010-05-20 | 2014-05-13 | Apple Inc. | Subbuffer objects |
| US8352484B1 (en) * | 2010-07-02 | 2013-01-08 | Symantec Corporation | Systems and methods for hashing executable files |
| US20120054379A1 (en) * | 2010-08-30 | 2012-03-01 | Kafai Leung | Low power multi-touch scan control system |
| US8832412B2 (en) | 2011-07-20 | 2014-09-09 | Broadcom Corporation | Scalable processing unit |
| US9052888B2 (en) * | 2013-02-21 | 2015-06-09 | International Business Machines Corporation | Vectorization in an optimizing compiler |
| US9361267B2 (en) | 2013-09-03 | 2016-06-07 | International Business Machines Corporation | Splitable and scalable normalizer for vector data |
| US9342284B2 (en) * | 2013-09-27 | 2016-05-17 | Intel Corporation | Optimization of instructions to reduce memory access violations |
| US9720667B2 (en) | 2014-03-21 | 2017-08-01 | Intel Corporation | Automatic loop vectorization using hardware transactional memory |
| US9710245B2 (en) * | 2014-04-04 | 2017-07-18 | Qualcomm Incorporated | Memory reference metadata for compiler optimization |
| US9608936B1 (en) * | 2014-07-03 | 2017-03-28 | Sanmina Corporation | Network system with offload services for flash storage |
| MX391875B (es) * | 2014-11-11 | 2025-03-21 | Samsung Electronics Co Ltd | Aparato de transmisión, aparato de recepción y método de control del mismo. |
| WO2018119778A1 (en) | 2016-12-28 | 2018-07-05 | Intel Corporation | System and method for vector communication |
-
2016
- 2016-12-28 WO PCT/CN2016/112710 patent/WO2018119778A1/en not_active Ceased
- 2016-12-28 US US16/464,560 patent/US11232056B2/en active Active
- 2016-12-28 CN CN201680091200.XA patent/CN110121703B/zh active Active
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2009137996A1 (zh) * | 2008-05-13 | 2009-11-19 | 华为技术有限公司 | 存储设备级联方法、存储系统及存储设备 |
| US8122177B1 (en) * | 2009-05-19 | 2012-02-21 | Xilinx, Inc. | Direct memory access technique for use with PCIe endpoints |
| US9286261B1 (en) * | 2011-11-14 | 2016-03-15 | Emc Corporation | Architecture and method for a burst buffer using flash technology |
| CN105760138A (zh) * | 2012-06-29 | 2016-07-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
| CN105786665A (zh) * | 2012-06-29 | 2016-07-20 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
| WO2015108522A1 (en) * | 2014-01-16 | 2015-07-23 | Intel Corporation | An apparatus, method, and system for a fast configuration mechanism |
| CN105718391A (zh) * | 2014-12-20 | 2016-06-29 | 英特尔公司 | 事务性缓冲式存储器中的提早识别 |
Non-Patent Citations (3)
| Title |
|---|
| sAES: A high throughput and low latency secure cloud storage with pipelined DMA based PCIe interface;Chen Yongzhen;《万方数据库》;20150110;全文 * |
| 事务存储系统;彭林等;《计算机研究与发展》;20090815(第08期);全文 * |
| 众线程宽向量体系结构建模与性能分析;郑超;《中国优秀硕士学位论文全文数据库信息科技辑》;20150115(第1期);全文 * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20200301861A1 (en) | 2020-09-24 |
| WO2018119778A1 (en) | 2018-07-05 |
| US11232056B2 (en) | 2022-01-25 |
| CN110121703A (zh) | 2019-08-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11106474B2 (en) | System, method, and apparatus for DVSEC for efficient peripheral management | |
| US12135581B2 (en) | System, method, and apparatus for SRIS mode selection for PCIE | |
| JP6286551B2 (ja) | 処理要素構成のための装置、デバイス構成のための装置および方法、高速デバイス構成のための装置、プログラム、並びに、非一時的コンピュータ可読ストレージ媒体 | |
| CN108027785B (zh) | 用于对链路拆分进行去偏斜的方法、设备和系统 | |
| US11239843B2 (en) | Width and frequency conversion with PHY layer devices in PCI-express | |
| CN109643299B (zh) | 在具有现有tlp定义的pcie上的持久存储器写入语义 | |
| US11163717B2 (en) | Reduced pin count interface | |
| CN110121703B (zh) | 用于向量通信的系统和方法 | |
| US9953001B2 (en) | Method, apparatus, and system for plugin mechanism of computer extension bus | |
| TWI524184B (zh) | 用於在分散式記憶體組織架構中處理位址衝突之方法、設備及系統 | |
| US11126554B2 (en) | Prefetching write permissions into address translation cache | |
| CN109643577B (zh) | 用于存储器训练的电参数的多维优化 | |
| US11016550B2 (en) | Controller to transmit data for components of a physical layer device |
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 |