CN109643299B - 在具有现有tlp定义的pcie上的持久存储器写入语义 - Google Patents
在具有现有tlp定义的pcie上的持久存储器写入语义 Download PDFInfo
- Publication number
- CN109643299B CN109643299B CN201780053196.2A CN201780053196A CN109643299B CN 109643299 B CN109643299 B CN 109643299B CN 201780053196 A CN201780053196 A CN 201780053196A CN 109643299 B CN109643299 B CN 109643299B
- Authority
- CN
- China
- Prior art keywords
- write
- volatile memory
- write access
- data
- header
- 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; 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/12—Replacement control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的各方面涉及包括应用处理器的系统、方法和设备。所述应用处理器包括接口逻辑,所述接口逻辑用于使用符合快速外围部件互连(PCIe)协议的双向互连链路与通信模块接口。所述接口逻辑用于从链路上接收数据分组,所述数据分组包括报头和数据有效载荷;确定在所述数据分组的报头中设置的提示位;基于所设置的提示位来确定在所述数据分组报头中的转向标签值;并且基于在报头中设置的转向标签将数据有效载荷传送到非易失性存储器。
Description
相关申请的交叉引用
本申请要求2016年9月29日提交的发明名称为“PERSISTENT MEMORY WRITESEMANTICES ON PCIE WITH EXISTING TLP DEFINITION”的美国非临时专利申请No.15/280,730的优先权,其全部内容通过引用合并于此。
技术领域
本公开涉及计算系统,并且特别地(但非排他地)涉及在具有现有TLP定义的PCIe上的持久存储器写入语义。
背景技术
系统存储器可以使用易失性存储器(例如DRAM)来实现,其中预期在移除电源时数据会丢失。写入非易失性存储器的关键语义是写入数据的源能够知道数据何时是持久的,并且保护其免受电力损失的影响。对于IO设备,传送这一信息涉及跨PCIe进行传送。目前还不存在IO设备如何与目标子系统通信以实现持久写入数据保证的标准模型。
附图说明
图1示出了包括多核处理器的计算系统的框图的实施例。
图2是根据本公开实施例的示例性计算系统的示意图。
图3是根据本公开实施例的具有示例性转向标签字段302的PCIe报头的示意图。
图4A是根据本公开实施例的存储器写入存取的示意图。
图4B是根据本公开实施例的存储器写入存取的示意图。
图5是根据本公开实施例的用于写入非易失性存储器的过程流程图。
图6示出了根据本公开实施例的包括互连架构的计算系统的实施例。
图7示出了根据本公开实施例的包括分层堆栈的互连架构的实施例。
图8示出了根据本公开实施例的要在互连架构内生成或接收的请求或分组的实施例。
图9示出了根据本公开实施例的用于互连架构的发射器和接收器对的实施例。
图10示出了根据本公开实施例的包括处理器的计算系统的框图的另一实施例。
图11示出了根据本公开实施例的包括多个处理器插座的计算系统的块的实施例。
具体实施方式
在以下描述中,阐述了许多具体细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统部件、特定测量值/高度、特定处理器管线阶段和操作等的示例,以便提供对本发明的透彻理解。然而,对于本领域技术人员显而易见的是,不需要采用这些具体细节来实施本发明。在其他实例中,为了避免不必要地模糊本发明,没有详细描述众所周知的部件或方法,例如特定和替代的处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、代码中算法的特定表达、特定的断电和门控技术/逻辑以及计算机系统的其他特定操作细节。
虽然可以参考特定集成电路中的节能和能量效率来描述以下实施例,例如在计算平台或微处理器中,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于其他类型的电路或半导体设备,其也可以受益于更好的能量效率和节能。例如,所公开的实施例不限于台式计算机系统或UltrabooksTM。并且还可以用于其他设备,例如手持设备、平板计算机、其他薄型笔记本计算机、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行下文教导的功能和操作的任何其他系统。此外,这里描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于节能和能量效率的软件优化。如将在以下描述中变得容易理解的,本文描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件还是其组合)对于与性能考虑平衡的“绿色技术”未来是至关重要的。
随着计算系统的发展,其中的部件变得更加复杂。结果,在部件之间耦合和通信的互连架构的复杂性也在增加,以确保满足最佳部件操作的带宽要求。此外,不同的细分市场要求互连架构的不同方面以满足市场需求。例如,服务器需要更高的性能,而移动生态系统有时会牺牲整体性能以节省电力。然而,大多数结构的独特目的是提供最高可能的性能和最大功率节省。下面讨论了许多互连,这些互连将潜在地受益于本文所述的本发明的各方面。
参考图1,描绘了包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上系统(SOC)或执行代码的其他设备。在一个实施例中,处理器100包括至少两个核心—核心101和102,其可以包括不对称核心或对称核心(所示实施例)。然而,处理器100可以包括可以是对称或不对称的任何数量的处理元件。
在一个实施例中,处理元件指的是支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元,线程槽,线程,处理单元,上下文,上下文单元,逻辑处理器,硬件线程,核心和/或任何其他元件,其能够保持处理器的状态,例如执行状态或架构状态。换句话说,在一个实施例中,处理元件指的是能够独立地与代码相关联的任何硬件,例如软件线程、操作系统、应用或其他代码。物理处理器(或处理器插座)通常是指集成电路,其潜在地包括任何数量的其他处理元件,例如核心或硬件线程。
核心通常是指位于能够维护独立架构状态的集成电路上的逻辑,其中每个独立维护的架构状态与至少一些专用执行资源相关联。与核心相比,硬件线程通常是指位于能够维护独立架构状态的集成电路上的任何逻辑,其中独立维护的架构状态共享对执行资源的存取。可以看出,当特定资源被共享而其他资源专用于架构状态时,在硬件线程和核心的命名之间的界限重叠。然而,操作系统通常将核心和硬件线程视为单独的逻辑处理器,其中操作系统能够单独地调度在每个逻辑处理器上的操作。
物理处理器100如图1中所示包括两个核心—核心101和102。这里,核心101和102被认为是对称核心,即具有相同的配置、功能单元和/或逻辑的核心。在另一实施例中,核心101包括乱序处理器核心,而核心102包括有序处理器核心。然而,核心101和102可以从任何类型的核心中单独选择,例如本机核心、软件管理核心、适于执行本机指令集架构(ISA)的核心、适于执行转换的指令集架构(ISA)的核心、共同设计的核心或其他已知核心。在异构核心环境(即,非对称核心)中,可以利用特定形式的转换(例如二进制转换)来在一个或两个核心上调度或执行代码。然而,为了进一步讨论,在所描绘的实施例中,核心101中示出的功能单元在下面进一步详细描述,因为核心102中的单元以类似的方式操作。
如图所示,核心101包括两个硬件线程101a和101b,它们也可以被称为硬件线程槽101a和101b。因此,在一个实施例中,诸如操作系统的软件实体潜在地将处理器100视为四个单独的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程可以与架构状态寄存器102a相关联,并且第四线程可以与架构状态寄存器102b相关联。这里,每个架构状态寄存器(101a、101b、102a和102b)可以被称为处理元件、线程槽或线程单元,如上所述。如图所示,架构状态寄存器101a在架构状态寄存器101b中被复制,因此能够为逻辑处理器101a和逻辑处理器101b存储单独的架构状态/上下文。在核心101中,还可以为线程101a和101b复制其他较小的资源,例如分配器和重命名器块130中的指令指针和重命名逻辑。可以通过分区而共享一些资源,例如重新排序/引退单元135中的重新排序缓冲器、I-LTB 120、加载/存储缓冲器和队列。其他资源(例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据-TLB 115、执行单元140以及乱序单元135的部分)被潜在地完全共享。
处理器100通常包括其他资源,其可以是完全共享的,通过分区共享的,或由处理元件专用的。在图1中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任何一个,并且包括未示出的任何其他已知功能单元、逻辑或固件。如图所示,核心101包括简化的、代表性的乱序(OOO)处理器核心。但是可以在不同的实施例中使用有序处理器。OOO核心包括用于预测要被执行/采用的分支的分支目标缓冲器120和用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)120。
核心101还包括解码模块125,其耦合到获取单元120以对所获取的元素进行解码。在一个实施例中,获取逻辑包括分别与线程槽101a、101b相关联的单独的定序器。通常,核心101与第一ISA相关联,该第一ISA定义/指定在处理器100上可执行的指令。通常作为第一ISA的一部分的机器代码指令包括指令的一部分(被称为操作码),其引用/指定要执行的指令或操作。解码逻辑125包括从其操作码识别这些指令并在管线中传递解码的指令以用于由第一ISA定义的处理的电路。例如,如下面更详细地讨论的,在一个实施例中,解码器125包括被设计或适于识别特定指令(例如事务指令)的逻辑。作为解码器125的识别结果,架构或核心101采取特定的预定义动作来执行与适当指令相关联的任务。需要着重注意,可以响应于单个或多个指令来执行本文描述的任何任务、块、操作和方法;其中的一些可以是新的或旧的指令。注意到,在一个实施例中,解码器126识别相同的ISA(或其子集)。替代地,在异构核心环境中,解码器126识别第二ISA(第一ISA或不同ISA的子集)。
在一个示例中,分配器和重命名器块130包括用于预留资源的分配器,该资源例如是用于存储指令处理结果的寄存器文件。然而,线程101a和101b潜在地能够乱序执行,其中分配器和重命名器块130还预留其他资源,例如用于跟踪指令结果的重新排序缓冲器。单元130还可以包括寄存器重命名器,以将程序/指令参考寄存器重命名为处理器100内部的其他寄存器。重新排序/引退单元135包括诸如上面提及的重新排序缓冲器、加载缓冲器和存储缓冲器的部件,以支持乱序执行和稍后的被乱序执行的指令的有序引退。
在一个实施例中,调度器和执行单元块140包括调度器单元,用于调度执行单元上的指令/操作。例如,浮点指令在具有可用浮点执行单元的执行单元的端口上被调度。还包括与执行单元相关联的寄存器文件以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。
较低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合到执行单元140。数据高速缓存用于存储最近使用/操作的元素,例如数据操作数,其被潜在地保持在存储器一致性状态中。D-TLB用于存储最近的虚拟/线性到物理地址转换。作为特定示例,处理器可以包括页表结构以将物理存储器分成多个虚拟页面。
这里,核心101和102共享对更高级或更远的高速缓存的存取,例如与片上接口110相关联的第二级高速缓存。注意到,更高级或更远是指高速缓存级增加或进一步远离执行单元。在一个实施例中,更高级高速缓存是最后一级数据高速缓存(在处理器100上的存储器层级中的最后一级高速缓存),例如第二或第三级数据高速缓存。然而,更高级高速缓存不是如此限制的,因为它可以与指令高速缓存相关联或包括指令高速缓存。跟踪高速缓存(一种类型的指令高速缓存)反而可以被耦合在解码器125之后以存储最近解码的轨迹。这里,指令潜在地指代宏指令(即,由解码器识别的一般指令),其可以被解码为多个微指令(微操作)。
在所描绘的配置中,处理器100还包括片上接口模块110。历史上,下面更详细描述的存储器控制器已被包括在处理器100外部的计算系统中。在这种情况下,片上接口11与处理器100外部的设备通信,例如系统存储器175、芯片组(通常包括连接到存储器175的存储器控制器中心和连接外围设备的I/O控制器中心)、存储器控制器中心、北桥或其他集成电路。在这种情况下,总线105可以包括任何已知的互连,例如多点总线、点对点互连、串行互连、并行总线、一致性(例如高速缓存一致性)总线、分层协议架构、差分总线和GTL总线。
存储器175可以专用于处理器100或与系统中的其他设备共享。存储器175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知的存储设备。注意,设备180可以包括图形加速器、耦合到存储器控制器中心的处理器或卡、耦合到1/O控制器中心的数据存储设备、无线收发器、闪存设备、音频控制器、网络控制器或其他已知设备。
然而,最近,随着更多的逻辑和设备被集成在诸如SOC的单个管芯上,这些设备中的每一个可以被合并在处理器100上。例如,在一个实施例中,存储器控制器中心与处理器100位于同一封装和/或管芯上。这里,核心的一部分(核心上部分)110包括一个或多个控制器,用于与诸如存储器175或图形设备180的其他设备接口。包括用于与这些设备接口的互连和控制器的该配置通常被称为核心上(或非核心配置)。作为示例,片上接口110包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路105。然而,在SOC环境中,甚至更多的设备(例如网络接口、协处理器、存储器175、图形处理器180和任何其他已知的计算机设备/接口)可以被集成在单个管芯或集成电路上以提供小形状因子以及高功能和低功耗。
在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177,以编译、转换和/或优化应用代码176来支持本文描述的装置和方法或与其接口。编译器通常包括将源文本/代码转换成目标文本/代码的程序或程序集。通常,使用编译器对程序/应用代码的编译是在多个阶段中完成的,并且进行到将高级编程语言代码转换为低级机器或汇编语言代码。然而,单通道编译器仍可以用于简单的编译。编译器可以利用任何已知的编译技术并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
较大的编译器通常包括多个阶段,但大多数情况下这些阶段被包含在两个一般阶段中:(1)前端,即,在该处通常可以进行句法处理、语义处理和一些转换/优化,以及(2)后端,即,在该处通常进行分析、转换、优化和代码生成。一些编译器引用了中间部分,这说明在编译器的前端和后端之间描绘的模糊。结果,对编译器的插入、关联、生成或其他操作的引用可以在任何上述阶段或过程的任意一个中以及编译器的任何其他已知阶段或过程中发生。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数等,例如在编译的前端阶段中插入调用/操作,并且然后在转换阶段期间将调用/操作转换到较低级别代码。注意到,在动态编译期间,编译器代码或动态优化代码可以被插入这样的操作/调用,并且优化代码用于在运行时执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已经编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。
与编译器类似,诸如二进制转换器的转换器静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指代:(1)动态地或静态地执行编译器程序、优化代码优化器或转换器以编译程序代码、维护软件结构、执行其他操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,例如已经被优化/编译的应用代码;(3)执行其他程序代码,例如与主程序代码相关联的库以维护软件结构、执行其他软件相关操作或优化代码;或(4)其组合。
随着高性能非易失性存储器(NVM)解决方案被并入系统中,并且新的NVM技术将NVM引入系统存储器,期望从IO源存取非易失性存储器。本公开描述了一种输入/输出设备(IO设备),其可以与目标子系统通信以识别持久的写入数据。
本公开利用现有的PCIe报头字段来传送将由根复合体或目标对等设备解码的事务以满足持久性存储器保证。该保证表明只有当写入的数据不受系统电源故障的影响时,才能够完成对持久存储器的写入。通过特殊使用PCIe报头字段,IO设备可以在根复合体内使用PCIe上的投递式(posted)写入事务来将数据写入到非易失性存储器(NVM),并且之后是完成确认写入数据是持久的事务。
根复合体可以定义以NVM为目标的存储器地址范围;然而,这样做可能会限制在系统运行时可以被动态分配和释放的存储器范围数量的灵活性和可扩展性。此外,使用存储器地址范围作为将操作与NVM或易失性存储器相关联的唯一方法可能会导致不必要的性能损失。
本公开允许由根复合体(或另一PCIe IO端口、存储器控制器、CPU代理等)处理的到任何地址的单独写入事务作为对持久存储器的写入,从而提高灵活性和性能。这对待解码的地址范围没有限制。这里描述的系统、方法和装置可以结合写入数据的提示使用,该写入数据可选地被高速缓存,或者相对于先前的写入在顺序上是松散的(relaxed)。
图2是根据本公开实施例的示例性计算系统200的示意图。计算系统200可以类似于图6中所示的计算系统。在图2中,网络设备210通过网络212与计算系统202通信。网络设备210可以通过网络212发送和接收数据分组。计算系统202还可以通过网络212发送和接收分组。例如,计算系统202可以通过网络接口控制器(NIC)204从网络设备210接收分组。NIC204可以是例如远程直接存储器存取(RDMA)NIC(RNIC)。包括对存储器208的写入请求的分组可以由CPU 206处理以存取非易失性存储器208并旁路易失性存储器209和/或高速缓存207。
NIC 204可以通过PCIe链路216连接到CPU 206。由NIC 204接收到的分组可以与PCIe协议兼容。CPU 206可以处理包含待写入易失性存储器的数据分组,并且可以处理具有要被写入到持久性或非易失性存储器的数据的数据分组。例如,与CPU 206相关联的根复合体218可以被配置为将具有到非易失性存储器的写入数据的分组与具有到易失性存储器207的写入数据的分组区分开。根复合体218可以使用事务层分组(TLP)处理提示(TPH)能力,其包括分组报头中的转向标签(ST)以确定分组数据应该被存储在非易失性存储器208中,并且在一些情况下,应该旁路高速缓存207。
利用该能力,作为写入命令的发起者的网络设备210可以执行存取模型,其中知道何时将保证写入数据是持久的。要完成保证,发起者必须完成两个操作:
1、将数据写入根复合体218,其包括持久性存储器指示符;以及
2、当需要保证先前写入完成时(即,为了获得在非易失性存储器上执行了写入事务的保证),对根复合体执行冲洗读取操作。
图3是根据本公开实施例的具有示例性转向标签字段302的PCIe报头300的示意图。PCIe规范定义了用于为根复合体提供附加路由指示符的扩展能力。TLP处理提示(TPH)能力包括用于引导写入数据路由(例如,到非易失性存储器)的转向标签(ST)302字段。报头的TH位304被设置为1以指示报头是支持TPH的。图3突出显示了示例性PCIe写入报头中的这些字段。
TLP处理提示可以通过将分组与给定处理器高速缓存相关联(可能这有点像处理器关联)来改善存储器延迟。报头300中的TH位304指示存在提示(例如,被设置为1的TH位304指示报头是支持TPH的)。提示被包含在通常被保留的地址字段的最后2位中。2个提示位表示对数据的频繁读取/写入存取:
i.00-双向:由主机和设备
ii.01-请求者:由设备
iii.10-目标(完成者):由主机
iv.11-具有优先级的目标:由具有高时间局部性的主机(尽可能使用本地高速缓存)
转向标签(ST)位302是系统特定值,其指示由请求者明确地定为目标的处理资源。对于投递式写入,8位标签字段被重新用于ST字段302。
PCIe设备使用协商的ST值,根复合体对该ST值进行解码以写入持久存储器。该值可以是预定义的固定值,例如FFh,或者可以是编程值。设备驱动器可以从平台查询支持TPH功能以及用于PM解码的ST值。然后,设备驱动器可以在IO设备中启用对PM的写入,并且对ST值进行编程以与对持久存储器的任何写入一起使用。
在一些实施例中,可以在报头中使用扩展转向标签(例如,对于16位ST,包括附加8位的转向标签)。报头可以包括TLP中的附加DWORD(例如,TLP前缀),其可以包括8个附加ST字段位。
图4A是根据本公开实施例的存储器写入存取的示意图400。图4A示出了IO设备402将遵循以写入持久性存储器408并接收持久性保证的序列。在图4A所示的示例中,IO设备402可以发送用于持久性存储器408的一系列写入412-416,如被相应地设置的报头字段所指示的(TH=1且ST=FF)。注意,也可以设置用于高速缓存和松散排序的提示,但未示出。
一旦PCI根端口404已经接收到写入事务并且该写入事务在根复合体404中,根端口404就对分组中的报头位进行解码,并且写入被发送到存储器控制器(MC)406。写入412-416可以被有序或乱序地放置在非易失性存储器408中,而不背离本公开。在写入被发出之后,IO设备402发送读取请求,该读取请求作为冲洗读取来执行。PCIe根端口404直到所有先前写入完成之后才处理读取418。假定写入412-416是到NVM 408,写入412-416在持久化之前将不会完成。在先前写入完成之后,根端口404返回读取完成420,并且现在IO设备402被保证先前写入现在是持久的。读取完成420可以被认为是对持久存储器的写入完成的保证。
图4B是根据本公开实施例的存储器写入事务的示意图450。在图4B中,进入根端口404的数据可以在被存储在非易失性存储器408中之前被高速缓存。在实施例中,数据分组报头可以包括高速缓存提示。PCIe根复合体404可以处理高速缓存提示以在数据分组有效载荷被存储在非易失性存储器408中之前将该数据分组有效载荷存储到高速缓存410中。
可以由PCIe根复合体404以与上述类似的方式处理冲洗读取418。在PCIe根端口404从存储器控制器406接收写入完成422之后,可以从高速缓存410处理读取完成424。读取完成424可以被认为是对持久性存储器的写入完成的保证。
图5是根据本公开实施例用于写入非易失性存储器的过程流程图500。可以在CPU的PCIe兼容端口处在与PCIe协议兼容的数据链路上从数据分组写入请求的发起者接收一个或多个数据分组(502)(例如,可以通过网络接口控制器将数据分组路由到端口)。每个数据分组可以包括对非易失性存储器的写入请求。端口可以是根端口。端口可以解码数据分组的报头以识别在数据报头中设置的提示位的存在(504)。例如,端口可以确定数据分组中的TH位已被设置。基于确定TH位被设置,端口可以确定用于对非易失性存储器的直接写入存取的转向标签值(506)。端口可以基于数据分组报头中的转向标签的值来执行对非易失性存储器的写入存取(508)。在一些实施例中,端口可以可选地高速缓存用于写入请求的数据(516)。对于由发起者请求的每个写入存取,端口可以从存储器控制器接收写入完成(510)。端口可以从发起者接收读取请求,端口可以将其解释为冲洗读取(512)。端口可以基于接收到针对所有写入存取完成的写入完成来向发起者发送读取完成(514)。端口可以延迟读取完成消息的传输,直到来自发起者的每个写入请求都已完成。
参见图6,示出了由互连一组部件的点对点链路组成的结构的实施例。系统600包括耦合到控制器中心615的处理器605和系统存储器610。处理器605包括任何处理元件,例如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器605通过前端总线(FSB)606耦合到控制器中心615。在一个实施例中,FSB 606是如下所述的串行点对点互连。在另一实施例中,链路606包括符合不同互连标准的串行差分互连架构。
系统存储器610包括任何存储器设备,例如随机存取存储器(RAM)、非易失性(NV)存储器或系统600中的设备可存取的其他存储器。系统存储器610通过存储器接口616耦合到控制器中心615。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器中心615是快速外围部件互连(PCIe或PCIE)互连层级中的根集线器、根复合体或根控制器。控制器615可以设置寄存器位以定义在成功接收PTM请求消息时要发送的多个重复的ACK DLLP。可以基于链路质量和/或处理开销来动态地改变寄存器位。例如,对于具有高质量的链路,其特征在于ACK DLLP损坏的低发生率(或由其他质量属性表征),可以减少重复的ACK DLLP的数量。对于较差的链路质量,可以增加重复的ACK DLLP。
控制器中心615的示例包括芯片组、存储器控制器中心(MCH)、北桥、互连控制器中心(ICH)、南桥和根控制器/集线器。通常,术语“芯片组”指的是两个物理上分离的控制器中心,即,耦合到互连控制器中心(ICH)的存储器控制器中心(MCH)。注意,当前系统通常包括与处理器605集成的MCH,而控制器615以与下面描述的类似方式与1/O设备通信。在一些实施例中,可选地通过根复合体615支持对等路由。
这里,控制器中心615通过串行链路619耦合到交换机/桥620。输入/输出模块617和621(也可以被称为接口/端口617和621)包括/实现分层协议栈以提供在控制器中心615和交换机620之间的通信。在一个实施例中,多个设备能够耦合到交换机620。
交换机/桥620将分组/消息从设备625向上游(即,朝向根复合体向上的层级)路由到控制器中心615并且从处理器605或系统存储器610向下游(即,远离根控制器向下的层级)路由到设备625。在一个实施例中,交换机620被称为多个虚拟PCI到PCI桥设备的逻辑组件。设备625包括待耦合到电子系统的任何内部或外部设备或部件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、Firewire设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。通常在PCIe本地,例如设备被称为端点。虽然没有具体示出,但是设备625可以包括PCIe到PCI/PCI-X桥,以支持传统或其他版本的PCI设备。PCIe中的端点设备通常被分类为传统、PCIe或根复合体集成端点。
图形加速器630还通过串行链路632耦合到控制器中心615。在一个实施例中,图形加速器630耦合到MCH,该MCH耦合到ICH。然后,将交换机620和相应的1/O设备625耦合到ICH。1/O模块631和618还用于实现分层协议栈以在图形加速器630和控制器中心615之间通信。类似于上面讨论的MCH,图形控制器或图形加速器630本身可以被集成在处理器605中。
转到图7,示出了分层协议栈的实施例。分层协议栈700包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCie栈、下一代高性能计算互连栈或其他分层栈。虽然下面参考图6-11进行的讨论与PCIe堆栈有关,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈700是包括事务层705、链路层710和物理层720的PCIe协议栈。接口(例如图6中的接口617、618、621、622、626和631)可以被表示为通信协议栈700。作为通信协议栈的表示也可以被称为实现/包含协议栈的模块或接口。
快速PCI使用分组来在部件之间传送信息。在事务层705和数据链路层710中形成分组以将信息从发送部件承载到接收部件。当传输的分组流经其他层时,它们会扩展有用于在这些层处理分组所需的附加信息。在接收侧,发生反向过程,并且分组从其物理层720表示变换到数据链路层710表示,并且最终(对于事务层分组)变换为可以由接收设备的事务层705处理的形式。
事务层
在一个实施例中,事务层705用于提供在设备的处理核心和互连架构(例如数据链路层710和物理层720)之间的接口。在这方面,事务层705的主要职责是分组(即,事务层分组或TLP)的组装和分解。转换层705通常管理TLP的基于信用的流控制。PCIe实现分离事务,即,具有由时间分隔的请求和响应的事务,这允许链路在目标设备收集响应数据时承载其他业务。
此外,PCIe利用基于信用的流控制。在该方案中,设备在事务层705中为每个接收缓冲器通告初始信用量。在链路的相对端处的外部设备(例如图1中的控制器中心115)对每个TLP消耗的信用数量进行计数。如果事务未超过信用限制,则可以发送事务。在接收到响应后,信用量将被恢复。信用方案的优点在于:如果没有遇到信用限度,则信用返还的延迟不会影响性能。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括一个或多个读取请求和写入请求以将数据转移到/转移自存储器映射位置。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如短地址格式(如32位地址)或长地址格式(如64位地址)。配置空间事务用于存取PCIe设备的配置空间。配置空间的事务包括读取请求和写入请求。消息空间事务(或简称为消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层705组装分组报头/有效载荷706。可以在PCIe规范网站的PCIe规范中找到当前分组报头/有效载荷的格式。
简要参考图8,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符800是用于承载事务信息的机制。在这方面,事务描述符800支持系统中事务的识别。其他潜在用途包括跟踪默认事务排序的修改以及事务与信道的关联。
事务描述符800包括全局标识符字段802、属性字段804和信道标识符字段806。在所示的示例中,全局标识符字段802被描绘为包括本地事务标识符字段808和源标识符字段810。在一个实施例中,全局事务标识符802对于所有未解决请求是唯一的
根据一种实现,本地事务标识符字段808是由请求代理生成的字段,并且对于要求完成该请求代理的所有未解决请求是唯一的。此外,在该示例中,源标识符810唯一地标识PCIe层级内的请求者代理。因此,与源ID810一起,本地事务标识符808字段提供层级域内的事务的全局标识。
属性字段804指定事务的特性和关系。在这方面,属性字段804可以用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段804包括优先级字段812、保留字段814、排序字段816和非侦听字段818。这里,优先级子字段812可以由发起者修改以向事务分配优先级。保留属性字段814保留用于将来或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全性属性的可能使用模型。
在该示例中,排序属性字段816用于提供传达可以修改默认排序规则的排序类型的可选信息。根据一个示例性实现,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示放宽的排序,其中写入可以在相同方向上传递写入,并且读取完成可以在同一方向上传递写入。侦听属性字段818用于确定事务是否被侦听。如图所示,信道ID字段806标识与事务相关联的信道。
链路层
返回图7,链路层710(也被称为数据链路层710)充当事务层705和物理层720之间的中间级。在一个实施例中,数据链路层710的职责是提供用于在链路中两个部件之间交换事务层分组(TLP)的可靠机制。数据链路层710的一侧接受由事务层705组装的TLP,应用分组序列标识符711(即,标识号或分组号),计算并应用错误检测码(即,CRC 712),并将修改后的TLP提交给物理层720用于跨物理到外部设备的传输。
物理层
在一个实施例中,物理层720包括逻辑子块721和电子子块722,以物理地将分组发送到外部设备。这里,逻辑子块721负责物理层721的“数字”功能。在这方面,逻辑子块包括用于准备用于由物理子块722发送的输出信息的发送部分,以及用于在将接收到的信息传递到链路层710之前识别并准备该接收到的信息的接收器部分。
物理块722包括发射器和接收器。发射器由逻辑子块721提供有符号,发射器串行化所述符号并将其发送到外部设备。接收器提供有来自外部设备的串行化符号,并将接收到的信号转换为比特流。比特流被反序列化并被提供给逻辑子块721。在一个实施例中,采用8b/10b传输码,其中发送/接收10比特符号。这里,特殊符号用于用帧723来对分组进行帧化。此外,在一个示例中,接收器还提供从输入串行流恢复的符号时钟。
如上所述,虽然参考PCIe协议栈的特定实施例讨论了事务层705、链路层710和物理层720,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;用于对分组进行排序的第二层,即链路层;以及用于发送分组的第三层,即物理层。作为具体示例,使用公共标准接口(CSI)分层协议。
接下来参考图9,示出了PCIe串行点对点结构的实施例。虽然示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,因为它包括用于发送串行数据的任何传输路径。在所示的实施例中,基本PCIe链路包括两个低压差分驱动信号对:发送对906/911和接收对912/907。因此,设备905包括发送逻辑906以将数据发送到设备910以及接收逻辑907以从设备910接收数据。换句话说,两个发送路径(即路径916和917)以及两个接收路径(即路径918和919)被包含于PCIe链路中。
发送路径指的是用于发送数据的任何路径,例如传输线、铜线、光学线、无线通信信道、红外通信链路或其他通信路径。两个设备(例如设备905和设备910)之间的连接被称为链路,例如链路915。链路可以支持一个通道—每个通道代表一组差分信号对(一对用于发送,一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多个通道,其中N是任何支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对指的是两个发送路径(例如线路916和917)以发送差分信号。作为示例,当线路916从低电压电平切换到高电压电平(即上升沿)时,线路917从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号可以表现出更好的电特性,例如更好的信号完整性,即交叉耦合,电压过冲/下冲,振铃等。这允许更好的定时窗口,使得更快的传输频率成为可能。
注意,上述装置、方法和系统可以在如上所述的任何电子设备或系统中实现。作为具体说明,下图提供了用于利用如本文所述的本发明的示例性系统。由于下文更详细地描述了系统,因此从上面的讨论中公开、描述和重新考虑了许多不同的互连。并且显而易见的是,上述进步可以应用于那些互连、结构或架构中的任何一种。
转到图10,示出了根据本发明一个实施例的示例性计算机系统的框图,该计算机系统形成有包括执行单元以执行指令的处理器,其中一个或多个互连实现一个或多个特征。系统1000包括诸如处理器1002的部件以采用执行单元,该执行单元包括用于执行根据本发明的处理数据的算法,例如在本文所述的实施例中。系统1000代表基于可从SantaClara,California的Intel公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,但是也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统1000执行可从Redmond,Washington的Microsoft公司获得的WINDOWSTM操作系统的版本,但是也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本发明的替代实施例可以用在其他设备中,例如手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机或可以根据至少一个实施例执行一个或多个指令的任何其他系统。
在该示出的实施例中,处理器1002包括一个或多个执行单元1008,以实现用于执行至少一个指令的算法。可以在单处理器桌面或服务器系统的上下文中描述一个实施例,但是替代实施例可以被包含于多处理器系统中。系统1000是“中心”系统架构的示例。计算机系统1000包括处理数据信号的处理器1002。作为一个说明性示例,处理器1002包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或者任何其他处理器设备,例如数字信号处理器。处理器1002耦合到处理器总线1010,该处理器总线1010在处理器1002和系统1000中的其他部件之间传输数据信号。系统1000的元件(例如,图形加速器1012、存储器控制器中心1016、存储器1020、I/O控制器中心1024、无线收发器1026、闪存BIOS 1028、网络控制器1034、音频控制器1036、串行扩展端口1038、I/O控制器1040等)执行熟悉本领域的技术人员熟知的传统功能。
在一个实施例中,处理器1002包括级别1(L1)内部高速缓存1004。取决于架构,处理器1002可以具有单个内部高速缓存或多级内部高速缓存。其他实施例包括内部和外部高速缓存的组合,这取决于特定的实现和需要。寄存器文件1006用于在各种寄存器中存储不同类型的数据,包括整数寄存器、浮点寄存器、向量寄存器、分组寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。
包括执行整数和浮点运算的逻辑的执行单元1008也驻留在处理器1002中。在一个实施例中,处理器1002包括用于存储微代码(ucode)的微代码ROM,所述微代码在被执行时将执行用于确定宏指令或处理复杂场景的算法。这里,微代码可以是可更新的,以处理处理器1002的逻辑错误/修复。对于一个实施例,执行单元1008包括处理打包指令集1009的逻辑。通过将打包指令集1009包括在通用处理器1002的指令集中,以及执行指令的相关电路,许多多媒体应用使用的操作可以使用通用处理器1002中的打包数据来执行。因此,通过使用处理器的数据总线的全宽度来执行对打包数据的操作,可以更有效地加速和执行许多多媒体应用。这潜在地消除了在处理器的数据总线上传输较小的数据单元以执行一个或多个操作(例如,一次一个数据元素)的需要。
执行单元1008的替代实施例还可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。系统1000包括存储器1020。存储器1020包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器1020存储由要由处理器1002执行的数据信号表示的指令和/或数据。
注意,本发明的任何前述特征或方面可以用在图10中所示的一个或多个互连上。例如,用于耦合处理器1002的内部单元的管芯上互连(ODI)(未示出)实现了上述本发明的一个或多个方面。或者,本发明与以下相关联:处理器总线1010(例如,Intel快速路径互连(QPI)或其他已知的高性能计算互连),到存储器1020的高带宽存储器路径1018,到图形加速器1012的点对点链路(例如,快速外围部件互连(PCIe)兼容结构),控制器中心互连1022,I/O或用于耦合其他所示部件的其他互连(例如,USB、PCI、PCIe)。这些部件的一些示例包括音频控制器1036、固件集线器(闪存BIOS)1028、无线收发器1026、数据存储设备1024、包含用户输入和键盘接口1042的传统I/O控制器1040、诸如通用串行总线(USB)的串行扩展端口1038以及网络控制器1034。数据存储设备1024可以包括硬盘驱动、软盘驱动、CD-ROM设备、闪存设备或其他大容量存储设备。
现在参考图11,示出了根据本发明实施例的系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个可以是处理器的某个版本。在一个实施例中,1152和1154是串行点对点一致性互连结构的一部分,例如Intel的快速路径互连(QPI)架构。结果,本发明可以在QPI架构内实现。
虽然仅示出了两个处理器1170、1180,但应理解,本发明的范围不限于此。在其他实施例中,一个或多个附加处理器可以存在于给定处理器中。
示出的处理器1170和1180分别包括集成存储器控制器单元1172和1182。处理器1170还包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可以使用P-P接口电路1178、1188经由点对点(P-P)接口1150交换信息。如图11所示,IMC 1172和1182将处理器耦合到各自的存储器,即存储器1132和存储器1134,它们可以是本地附接到各个处理器的主存储器的一部分。
处理器1170、1180各自使用点对点接口电路1176、1194、1186、1198经由各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190还经由接口电路1192沿着高性能图形互连1139与高性能图形电路1138交换信息。
共享高速缓存(未示出)可以被包含于处理器中或两个处理器之外;然后经由P-P互连与处理器连接,从而如果处理器被置于低功率模式,则处理器的本地高速缓存信息中的任一个或两者可以被存储在共享高速缓存中。
芯片组1190可以经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围部件互连(PCI)总线,或者诸如快速PCI总线或另一第三代I/O互连总线的总线,但是本发明的范围不限于此。
如图11所示,各种I/O设备1114连同总线桥1118耦合到第一总线1116,所述总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,第二总线1120包括低引脚计数(LPC)总线。各种设备耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信设备1127和存储单元1128,诸如磁盘驱动或其他大容量存储设备,其在一个实施例中通常包括指令/代码和数据1130。此外,音频I/O 1124被示出耦合到第二总线1120。注意,其他架构是可能的,其中所包括的部件和互连架构是变化的。例如,代替图11的点对点架构,系统可以实现多点总线或其他这样的架构。
在各种实施例中,系统的大容量存储设备由SSD单独实现或者被实现为具有SSD高速缓存的磁盘、光学驱动或其他驱动。在一些实施例中,大容量存储设备被实现为SSD或HDD以及恢复(RST)高速缓存模块。在各种实现中,HDD提供320GB-4太字节(TB)和向上的存储,而RST高速缓存实现有容量为24GB-256GB的SSD。注意,这种SSD高速缓存可以被配置为单级高速缓存(SLC)或多级高速缓存(MLC)选项,以提供适当级别的响应。在仅SSD的选项中,模块可以被容纳在各种位置,例如在mSATA或NGFF插槽中。作为示例,SSD的容量范围为120GB-1TB。
显示面板可以以多种模式操作。在第一模式中,显示面板可以被布置在透明状态,其中显示面板对可见光是透明的。在各种实施例中,除了围绕外围的边框之外,显示面板的大部分可以是显示器。当系统以笔记本模式操作并且显示面板以透明状态操作时,用户可以查看在显示面板上呈现的信息,同时还能够查看显示器后面的对象。另外,显示在显示面板上的信息可以由位于显示器后面的用户观看。或者显示面板的操作状态可以是不透明状态,其中可见光不透过显示面板。
在平板模式中,系统被折叠闭合,从而当基板的底表面被搁置在表面上或由用户持有时,显示面板的后显示表面停留在使其朝向用户向外的位置。在平板操作模式中,后显示表面起到显示器和用户界面的作用,因为该表面可以具有触摸屏功能并且可以执行传统触摸屏设备的其他已知功能,例如平板设备。为此,显示面板可以包括设置在触摸屏层和前显示表面之间的透明度调节层。在一些实施例中,透明度调节层可以是电致变色层(EC)、LCD层或EC和LCD层的组合。
在各种实施例中,显示器可以具有不同的尺寸,例如11.6”或13.3”的屏幕,并且可以具有16:9的纵横比,并且具有至少300尼特的亮度。此外,显示器可以是全高清(HD)分辨率(至少1920x 1080p),与嵌入式显示器端口(eDP)兼容,并且是具有面板自刷新功能的低功率面板。
关于触摸屏能力,系统可以提供作为多触摸电容并且至少支持5个手指的显示器多触摸面板。并且在一些实施例中,显示器可以支持10个手指。在一个实施例中,触摸屏被容纳在防损坏和防刮擦的玻璃和涂层(例如,Gorilla GlassTM或Gorilla Glass 2TM)内,以获得低摩擦力,从而减少“手指烧伤”并避免“手指跳过”。为了提供增强的触摸体验和响应性,在一些实现中,触摸面板具有多点触摸功能,例如在捏缩放期间每静态视图少于2帧(30Hz),并且具有200ms(手指到指针滞后)的小于1cm每帧(30Hz)的单触摸功能。在一些实现中,显示器支持边对边玻璃,其具有最小屏幕边框,其也与面板表面齐平,并且在使用多点触摸时具有有限的IO干扰。
使用平台中存在的各种惯性和环境传感器,可以实现许多不同的用例。这些用例支持高级计算操作,包括感知计算,并且还允许在电源管理/电池寿命、安全性和系统响应性方面进行增强。
例如,关于电源管理/电池寿命问题,至少部分地基于来自环境光传感器的信息,确定平台位置中的环境光条件并相应地控制显示器的强度。因此,在特定光条件下减少了操作显示器所消耗的功率。
关于安全操作,基于从传感器获得的上下文信息(例如位置信息),可以确定是否允许用户访问特定安全文档。例如,可以允许用户在工作场所或家庭位置访问这些文档。然而,当平台存在于公共场所时,阻止用户访问这些文档。在一个实施例中,该确定基于位置信息,例如,经由GPS传感器或地标的相机识别来确定。其他安全操作可以包括提供彼此近距离内的设备的配对,例如,如本文所述的便携式平台和用户的台式计算机,移动电话等。在一些实现中,当这些设备如此配对时,经由近场通信实现特定共享。然而,当设备超过特定范围时,可以禁用这种共享。此外,当将如本文所述的平台与智能电话配对时,警报可以被配置为当设备在公共场所移动超过彼此预定距离时被触发。相反,当这些配对设备处于安全位置时,例如工作场所或家庭位置时,设备可以超过该预定限制而不会触发这种警报。
还可以使用传感器信息来增强响应性。例如,即使当平台处于低功率状态时,仍然可以使传感器能够以相对低的频率运行。因此,确定平台位置的任何变化,例如由惯性传感器、GPS传感器等确定。如果没有登记这样的改变,则发生到先前无线集线器(例如Wi-FiTM接入点或类似的无线使能器)的更快连接,因为在这种情况下不需要扫描可用的无线网络资源。因此,实现了从低功率状态唤醒时的更高水平的响应性。
应当理解,可以使用经由如本文所述的平台内的集成传感器获得的传感器信息来启用许多其他用例,并且以上示例仅用于说明的目的。使用如本文所述的系统,感知计算系统可以允许添加替代输入模态,包括手势识别,并且使系统能够感测用户操作和意图。
在一些实施例中,可以存在一个或多个红外或其他热感测元件,或用于感测用户的存在或移动的任何其他元件。这种感测元件可以包括一起工作、顺序工作或两者的多个不同元件。例如,感测元件包括提供初始感测的元件,例如光或声音投影,然后通过例如超声飞行时间相机或图案化光照相机来感测手势检测。
同样在一些实施例中,该系统包括光发生器以产生照明线。在一些实施例中,该线提供关于虚拟边界的视觉提示,即空间中的虚构或虚拟位置,其中通过或突破虚拟边界或平面的用户动作被解释为与计算系统接合的意图。在一些实施例中,当计算系统相对于用户转变到不同状态时,照明线可以改变颜色。照明线可以用于为空间中的虚拟边界的用户提供视觉提示,并且可以由系统用于确定计算机关于用户的状态的转变,包括确定用户何时希望与计算机接合。
在一些实施例中,计算机感测用户位置并操作以通过虚拟边界解释用户的手的移动,作为指示用户与计算机接合的意图的手势。在一些实施例中,在用户通过虚拟线或平面时,由光发生器生成的光可以改变,由此向用户提供用户已经进入用于提供手势以向计算机提供输入的区域的视觉反馈。
显示屏可以提供关于用户的计算系统的状态转变的视觉指示。在一些实施例中,在第一状态下提供第一屏幕,其中系统感测用户的存在,例如通过使用一个或多个感测元件。
在一些实现中,系统用于感测用户身份,例如通过面部识别。这里,可以在第二状态中提供到第二屏幕的转换,其中计算系统已经识别出用户身份,其中该第二屏幕向用户提供用户已经转换到新状态的视觉反馈。转换到第三屏幕可以在用户已经确认用户的识别的第三状态中发生。
在一些实施例中,计算系统可以使用转换机制来确定用户的虚拟边界的位置,其中虚拟边界的位置可以随用户和上下文而变化。计算系统可以生成光,例如照明线,以指示用于与系统接合的虚拟边界。在一些实施例中,计算系统可以处于等待状态,并且光可以以第一颜色产生。计算系统可以检测用户是否已经到达虚拟边界,例如通过使用感测元件感测用户的存在和移动。
在一些实施例中,如果已经检测到用户已经越过虚拟边界(例如用户的手比虚拟边界线更靠近计算系统),则计算系统可以转换到用于从用户接收手势输入的状态,其中指示转换的机制可以包括指示虚拟边界改变为第二颜色的光。
在一些实施例中,计算系统然后可以确定是否检测到手势移动。如果检测到手势移动,则计算系统可以继续进行手势识别过程,该手势识别过程可以包括使用来自手势数据库的数据,该手势数据库可以驻留在计算设备中的存储器中或者可以由计算设备以其他方式访问。
如果识别出用户的手势,则计算系统可以响应于输入而执行功能,并且如果用户在虚拟边界内则返回以接收附加手势。在一些实施例中,如果未识别到手势,则计算系统可以转换到错误状态,其中指示错误状态的机制可以包括指示虚拟边界改变为第三颜色的光,如果用户在虚拟边界内则系统返回以接收附加手势用于与计算系统接合。
如上所述,在其他实施例中,系统可以被配置为可转换平板系统,其可以用于至少两种不同模式:平板模式和笔记本模式。可转换系统可以具有两个面板,即显示面板和基板,从而在平板模式下,两个面板堆叠地设置在彼此之上。在平板模式中,显示面板朝向外面并且可以提供如传统平板计算机中发现的触摸屏功能。在笔记本模式中,两个面板可以被布置为打开的翻盖配置。
在各种实施例中,加速计可以是具有至少50Hz的数据速率的3轴加速计。还可以包括陀螺仪,其可以是3轴陀螺仪。此外,可以存在电子罗盘/磁力计。而且,可以提供一个或多个接近度传感器(例如,用于打开盖子以感测人何时接近(或不接近)系统并调节功率/性能以延长电池寿命)。对于一些OS的传感器融合能力,包括加速度计、陀螺仪和罗盘可以提供增强特征。另外,经由具有实时时钟(RTC)的传感器中心,可以实现来自传感器机制的唤醒,以在系统的其余部分处于低功率状态时接收传感器输入。
在一些实施例中,内部盖子/显示器打开开关或传感器以指示盖子何时关闭/打开,并且可以用于将系统置于连接待机或从连接待机状态自动唤醒。其他系统传感器可以包括用于内部处理器、存储器和皮肤温度监视的ACPI传感器,以基于感测到的参数实现处理器和系统操作状态的改变。
在实施例中,OS可以是实现连接待机的8OS(在此也被称为Win8 CS)。Windows 8连接待机或具有类似状态的另一OS可以经由如本文所述的平台提供非常低的超空闲功率,以使应用能够以非常低的功耗保持连接到例如基于云的位置。该平台可以支持3种功率状态,即屏幕开启(正常);连接待机(默认为“关闭”状态);以及关机(零瓦特功耗)。因此,在连接待机状态下,即使屏幕关闭,平台也会在逻辑上开启(最低功率水平)。在这样的平台中,可以使电源管理对应用透明并保持恒定连接,部分原因是卸载技术以使最低功率部件能够执行操作。
在特定实现中,外围端口可以包括高清晰度媒体接口(HDMI)连接器(其可以具有不同的形状因子,例如全尺寸、迷你或微型);一个或多个USB端口,例如符合通用串行总线修订版3.0规范(2008年11月)的全尺寸外部端口,当系统处于连接待机状态并被插入AC墙电源时,至少一个端口被供电以用于USB设备(如智能手机)的充电。此外,还可以提供一个或多个ThunderboltTM端口。其他端口可以包括外部可访问的读卡器,例如全尺寸SD-XC读卡器和/或用于WWAN的SIM卡读卡器(例如,8引脚读卡器)。对于音频,可以存在具有立体声和麦克风能力(例如,组合功能)的3.5mm插孔,支持插孔检测(例如,仅支持使用盖子中的麦克风的耳机或具有电缆中的麦克风的耳机)。在一些实施例中,该插孔可以在立体声耳机和立体声麦克风输入之间重新调度任务。而且,可以提供电源插孔以耦合到AC块(brick)。
虽然已经关于有限数量的实施例描述了本发明,但是本领域技术人员将从中意识到许多修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这些修改和变化。
设计可以经历从创建到仿真到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在仿真中有用的,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在特定阶段达到表示硬件模型中各种设备的物理位置的数据级别。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定用于制造集成电路的掩模在不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可以以任何形式的机器可读介质被存储。诸如盘的存储器或者磁或光学存储设备可以是机器可读介质,用于存储经由被调制或以其他方式生成以传输这种信息的光学或电波传输的信息。当发送指示或承载代码或设计的电载波时,在执行电信号的复制、缓冲或重新传输的程度上,进行新的复制。因此,通信提供商或网络提供商可以至少临时地在有形的机器可读介质上存储制品,例如被编码到载波中的信息,体现本发明的实施例的技术。
这里使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的硬件,例如微控制器,以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,其被特别配置为识别和/或执行待保持在非瞬态介质上的代码。此外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,其特别适于由微控制器执行以执行预定操作。并且可以推断,在又一实施例中,术语“模块”(在该示例中)可以指代微控制器和非瞬态介质的组合。通常被示为单独的模块边界通常变化并且可以重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时可以保留一些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括硬件,例如晶体管、寄存器或其他硬件,例如可编程逻辑器件。
在一个实施例中,短语“用于”或“被配置为”的使用是指布置、组合、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或确定的任务。在该示例中,如果被设计、耦合和/或互连以执行指定任务,则未被操作的装置或其元件仍“被配置为”执行所述指定任务。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或者1。但是,“被配置为”向时钟提供使能信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。相反,逻辑门是以某种方式耦合的,其在操作期间输出1或0用于启用时钟。再次注意,术语“被配置为”的使用不需要操作,而是关注于装置、硬件和/或元件的潜在状态,其中处于潜在状态的装置、硬件和/或元件被设计用于在装置、硬件和/或元件在运行时执行特定任务。
此外,在一个实施例中,使用短语“能够/用于”和/或“可操作用于”是指以这样的方式设计的一些装置、逻辑、硬件和/或元件,以使得能够以指定方式使用该装置、逻辑、硬件和/或元件。注意,如上所述,在一个实施例中,使用“用于”、“能够”或“可操作用于”指的是装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没有操作,但是被以这样的方式设计,以便能够以特定的方式使用装置。
这里使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,使用逻辑电平、逻辑值,或者逻辑值也被称为1和0,其仅表示二进制逻辑状态。例如,1表示高逻辑电平,0表示低逻辑电平。在一个实施例中,诸如晶体管或闪存单元的存储单元能够保持单个逻辑值或多个逻辑值。但是,已经使用了计算机系统中的值的其它表示。例如,十进制数“十”也可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的任何信息表示。
此外,状态可以由值或值的一部分表示。作为示例,第一值(例如逻辑1)可以表示默认或初始状态,而第二值(例如逻辑0)可以表示非默认状态。另外,在一个实施例中,术语“重置”和“设置”分别指代默认值和更新值或状态。例如,默认值可以包括高逻辑值,即重置;而更新值可以包括低逻辑值,即设置。注意,可以使用任何值的组合来表示任何数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在能够由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。非瞬态机器可访问/可读介质包括以机器(例如计算机或电子系统)可读的形式提供(即,存储和/或传输)信息的任何机制。例如,非瞬态机器可访问介质包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪存设备;电存储设备;光学存储设备;声学存储设备;用于保持从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储设备;等等,以区别于可以从其接收信息的非瞬态介质。
用于对逻辑进行编程以执行本发明的实施例的指令可以被存储在系统中的存储器内,例如DRAM、高速缓存、闪存或其他存储设备。此外,指令可以经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不限于,软盘、光盘、压缩盘只读存储器(CD-ROM),以及磁光盘,只读存储器(ROM),随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),电可擦除可编程只读存储器(EEPROM),磁卡或光学卡,闪存或有形的机器可读存储设备,用于通过互联网经由电、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)传输信息。因此,计算机可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
以下示例涉及根据本说明书的实施例。一个或多个实施例可以提供装置、系统、机器可读存储设备、机器可读介质、基于硬件和/或软件的逻辑,以及解释数据分组报头中的转向标签值以将数据有效载荷存储到非瞬态存储器中的方法。
示例1是一种装置,包括:应用处理器,其包括接口逻辑,用于使用符合快速外围部件互连(PCIe)协议的双向互连链路与通信模块接口。所述接口逻辑被配置为:从链路上接收数据分组,所述数据分组包括报头和数据有效载荷;确定在所述数据分组的报头中设置的提示位;基于所设置的提示位确定在所述数据分组报头中的转向标签值;并且基于在报头中设置的转向标签将所述数据有效载荷传送到非易失性存储器。
示例2可以包括示例1的主题,并且还包括存储器控制器逻辑,其用于将写入完成消息传送给接口逻辑;并且所述存储器控制器逻辑还包括接口逻辑,其用于从所述存储器控制器逻辑接收针对到非易失性存储器的写入存取的写入完成;接收用于写入存取的读取完成请求;在从所述存储器控制器逻辑接收到每个写入完成之后传送读取完成。
示例3可以包括示例2的主题,并且还包括接口逻辑,其用于延迟响应所述读取完成消息,直到所述先前写入完成已被所述接口逻辑接收为止。
示例4可以包括示例2的主题,并且还包括接口逻辑,其用于接收多个写入存取请求;并且所述接口逻辑还包括存储器控制器逻辑,其用于执行多个写入存取请求;并且将多个写入存取完成消息发送到所述接口逻辑。
示例5可以包括示例1-4的主题,其中,所述提示位包括事务层分组处理提示位。
示例6可以包括示例1-5的主题,并且还包括存储器控制器逻辑,其用于:从分组报头识别高速缓存提示;以及在执行到非易失性存储器的写入存取之前对写入请求进行高速缓存。
示例7可以包括示例1-6的主题,并且还包括接口逻辑,用于对所述转向标签值进行解码以确定所述数据有效载荷将别写入到非易失性存储器。
示例8可以包括示例1-7的主题,其中,所述接口逻辑包括PCIe根端口逻辑。
示例9是一种方法,包括:接收一个或多个数据分组,每个数据分组包括数据分组报头以及数据有效载荷,所述数据分组报头包括提示位和转向标签位;确定提示位被设置;基于确定提示位被设置来确定转向标签值;解释所述转向标签值以将所述数据有效载荷写入非易失性存储器;以及基于所述转向标签值将所述数据有效载荷传送到所述非易失性存储器。
示例10可以包括示例9的主题,其中,所述提示位包括事务层分组处理提示位。
示例11可以包括示例9-10的主题,并且还包括:接收对于写入存取的冲洗读取完成请求;以及在接收到针对到非易失性存储器的每次写入存取的写入完成之后传送读取完成。
示例12可以包括示例11的主题,并且还包括延迟传送所述读取完成,直到在接收到针对到非易失性存储器的每个先前的写入存取的写入存取完成消息之后为止。
示例13可以包括示例9-12的主题,并且还包括:从分组报头识别高速缓存提示;以及在对非易失性存储器执行写入存取之前对写入请求进行高速缓存。
示例14可以包括示例9-13的主题,并且还包括:解码所述转向标签值以确定所述一个或多个数据分组中的写入存取是对非易失性存储器的写入存取。
示例15可以包括示例9-14的主题,其中,从与快速外围部件互连(PCIe)协议兼容的链路上接收所述数据分组。
示例16可以包括示例9-15的主题,并且还包括:识别来自分组报头的排序提示,用于对非易失性存储器中的写入完成进行排序;以及以与所述数据分组被接收的次序不同的次序执行写入存取。
示例17是至少一种机器可访问存储介质,其上存储有代码,所述代码在机器上执行时使所述机器:接收一个或多个数据分组,每个数据分组包括数据分组报头,所述数据分组报头包括提示位和转向标签位;确定提示位被设置;确定转向标签值;将被设置的提示位和所述转向标签值解释为对非易失性存储器的写入请求;以及基于所述转向标签值执行到非易失性存储器的写入存取。
示例18可以包括示例17的主题,其中,所述提示位包括事务层分组处理提示位。
示例19可以包括示例17-18的主题,所述代码在机器上被执行时还使得所述机器:接收针对写入存取的冲洗读取完成请求;以及在接收到针对到非易失性存储器的每次写入的写入完成之后传送读取完成。
示例20可以包括示例17-19的主题,所述代码在机器上被执行时还使得所述机器延迟传送所述读取完成,直到在接收到针对到非易失性存储器的每个先前的写入存取的写入存取完成消息之后为止。
示例21可以包括示例17-19的主题,所述代码在机器上被执行时还使得所述机器:从分组报头识别高速缓存提示;以及在执行到非易失性存储器的写入存取之前对写入请求进行高速缓存。
示例22可以包括示例17-19的主题,所述代码在机器上被执行时还使得所述机器:解码所述转向标签值以确定在所述一个或多个数据分组中的写入存取是对非易失性存储器的写入存取。
示例23可以包括示例17-19的主题,其中,从与快速外围部件互连(PCIe)协议兼容的链路上接收所述数据分组。
示例24可以包括示例17-19的主题,所述代码在机器上被执行时还使得所述机器:识别来自分组报头的排序提示,用于对非易失性存储器中的写入完成进行排序;以及以与数据分组被接收的次序不同的次序执行写入存取。
示例25是一种系统,包括:接口控制器,用于从输入/输出设备接收分组;中央处理单元,其包括根复合体逻辑,所述根复合体逻辑用于:从链路上接收数据分组;确定在所述数据分组的报头中设置的提示位;确定在所述数据分组报头中的转向标签值;以及将到非易失性存储器的写入存取和来自数据分组的数据传送到存储器控制器。
示例26可以包括示例25的主题,并且还包括存储器控制器逻辑,用于向接口逻辑传送写入完成消息。示例26还可以包括接口逻辑,其用于从所述存储器控制器逻辑接收针对到非易失性存储器的写入存取的写入完成;接收针对写入存取的读取完成请求;在从所述存储器控制器逻辑接收到每个写入完成之后传送读取完成。
示例27可以包括示例26的主题,并且还包括接口逻辑,其用于延迟响应所述读取完成消息,直到所有的先前写入完成已被所述接口逻辑接收。
示例28可以包括示例27的主题,并且还包括接口逻辑,其用于接收多个写入存取请求。该示例还包括存储器控制器逻辑,其用于执行多个写入存取请求;并且将多个写入存取完成消息发送到接口逻辑。
示例29可以包括示例25-28的主题,其中,所述提示位包括事务层分组处理提示位。
示例30可以包括示例25-29的主题,并且还包括存储器控制器逻辑,其用于:从分组报头识别高速缓存提示;并且在执行到非易失性存储器的写入存取之前对写入请求进行高速缓存。
示例31可以包括示例25-30的主题,并且还包括接口逻辑,用于解码所述转向标签值以确定所述写入存取是对非易失性存储器的写入存取。
示例32可以包括示例25-31的主题,其中,所述接口逻辑包括PCIe根端口逻辑。
示例33可以包括示例1的主题,还包括接口逻辑,其用于利用转向标签值来扩充分组的出站分组报头,该转向标签值识别该分组包括用于非易失性存储器的写入事务。
示例34可以包括示例9的主题,并且还可以包括:利用转向标签值来扩充分组的输出分组报头,该转向标签值识别该分组包括用于非易失性存储器的写入事务。
本说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包含于本发明的至少一个实施例中。因此,贯穿本说明书在各处出现的短语“在一个实施例中”或“在实施例中”不一定都指的是同一实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
在前述说明书中,已经参考特定的示例性实施例给出了详细描述。然而,显而易见的是,在不背离所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被视为说明性意义而非限制性意义。此外,实施例的前述使用和其他示例性语言不一定指代相同的实施例或相同的示例,而是可以指代不同且有区别的实施例,以及可能相同的实施例。
Claims (25)
1.一种用于对非易失性存储器进行数据写入的装置,包括:
应用处理器,包括:
接口逻辑,用于使用符合快速外围部件互连(PCIe)协议的双向互连链路与通信模块接合,所述接口逻辑用于:
通过链路从请求者设备接收数据分组,所述数据分组包括报头和数据有效载荷;
确定在所述数据分组的报头中设置的提示位,所设置的提示位指示所述报头中的转向标签值待被解码;
基于所设置的提示位确定所述报头中的转向标签值,所述转向标签值指示到非易失性存储器的写入存取;以及
基于所确定的所述报头中的转向标签值将所述数据有效载荷传送到所述非易失性存储器。
2.根据权利要求1所述的装置,还包括存储器控制器逻辑,所述存储器控制器逻辑用于:
将写入完成消息传送到所述接口逻辑;并且
还包括接口逻辑,用于:
从所述存储器控制器逻辑接收针对到非易失性存储器的写入存取的写入完成;
接收对于所述写入存取的读取完成请求;
在从所述存储器控制器逻辑接收每个写入完成之后传送读取完成。
3.根据权利要求2所述的装置,还包括接口逻辑,所述接口逻辑用于:延迟响应所述读取完成,直到所有先前的写入完成已被所述接口逻辑接收为止。
4.根据权利要求2所述的装置,还包括接口逻辑,所述接口逻辑用于:
接收多个写入存取请求;并且
还包括存储器控制器逻辑,所述存储器控制器逻辑用于:
执行多个写入存取请求;并且
将多个写入存取完成消息传送到所述接口逻辑。
5.根据权利要求1所述的装置,其中,所述提示位包括事务层分组处理提示位。
6.根据权利要求1所述的装置,还包括存储器控制器逻辑,所述存储器控制器逻辑用于:
从分组报头识别高速缓存提示;以及
在执行到所述非易失性存储器的写入存取之前对写入请求进行高速缓存。
7.根据权利要求1所述的装置,还包括接口逻辑,所述接口逻辑用于对所述转向标签值进行解码以确定所述写入存取是到非易失性存储器的写入存取。
8.根据权利要求1所述的装置,其中,所述接口逻辑包括快速外围部件互连根端口逻辑。
9.一种用于对非易失性存储器进行数据写入的方法,包括:
在目标设备处从请求者设备接收一个或多个数据分组,每个数据分组包括数据分组报头以及数据有效载荷,所述数据分组报头包括提示位和转向标签位;
确定所述提示位被设置,所设置的提示位指示所述数据分组报头中的转向标签值待被解码;
基于确定所述提示位被设置来确定所述转向标签值;
将所述转向标签值解释为对于到所述目标设备的非易失性存储器的写入存取的指示,所述写入存取用于将所述数据有效载荷写入所述非易失性存储器;以及
基于所述转向标签值将所述数据有效载荷传送到所述非易失性存储器。
10.根据权利要求9所述的方法,其中,所述提示位包括事务层分组处理提示位。
11.根据权利要求9所述的方法,还包括:
接收对于写入存取的冲洗读取完成请求;以及
在接收到针对到所述非易失性存储器的每个写入存取的写入完成之后传送读取完成。
12.根据权利要求11所述的方法,还包括延迟传送所述读取完成,直到在接收到针对到所述非易失性存储器的每个先前的写入存取的写入存取完成消息之后为止。
13.根据权利要求9所述的方法,还包括:
从分组报头识别高速缓存提示;以及
在执行到所述非易失性存储器的写入存取之前对写入请求进行高速缓存。
14.根据权利要求9所述的方法,还包括对所述转向标签值进行解码以确定在所述一个或多个数据分组中的写入存取是对非易失性存储器的写入存取。
15.根据权利要求9所述的方法,其中,从与快速外围部件互连(PCIe)协议兼容的链路上接收所述数据分组。
16.根据权利要求9所述的方法,还包括:
识别来自分组报头的排序提示,用于对非易失性存储器中的写入完成进行排序;以及
以与所述数据分组被接收的次序不同的次序执行写入存取。
17.至少一种机器可访问存储介质,其上存储有代码,所述代码在机器上被执行时使所述机器:
在目标设备处从请求者设备接收一个或多个数据分组,每个数据分组包括数据分组报头以及数据有效载荷,所述数据分组报头包括提示位和转向标签位;
确定所述提示位被设置,所设置的提示位指示所述数据分组报头中的转向标签值待被解码;
基于确定所述提示位被设置来确定所述转向标签值;
将所述转向标签值解释为对于到所述目标设备的非易失性存储器的写入存取的指示,所述写入存取用于将所述数据有效载荷写入所述非易失性存储器;以及
基于所述转向标签值将所述数据有效载荷传送到所述非易失性存储器。
18.根据权利要求17所述的至少一种机器可访问存储介质,其中,所述提示位包括事务层分组处理提示位。
19.根据权利要求17所述的至少一种机器可访问存储介质,所述代码在机器上被执行时使得所述机器:
接收对于所述写入存取的冲洗读取完成请求;以及
在接收到针对到所述非易失性存储器的每个写入存取的写入完成之后传送读取完成。
20.根据权利要求19所述的至少一种机器可访问存储介质,所述代码在机器上被执行时使得所述机器延迟传送所述读取完成,直到在接收到针对到所述非易失性存储器的每个先前的写入存取的写入存取完成消息之后为止。
21.根据权利要求17所述的至少一种机器可访问存储介质,所述代码在机器上被执行时使得所述机器:
从分组报头识别高速缓存提示;以及
在执行到所述非易失性存储器的所述写入存取之前对写入请求进行高速缓存。
22.根据权利要求17所述的至少一种机器可访问存储介质,所述代码在机器上被执行时使得所述机器对所述转向标签值进行解码以确定在所述一个或多个数据分组中的写入存取是到非易失性存储器的写入存取。
23.根据权利要求17所述的至少一种机器可访问存储介质,其中,从与快速外围部件互连(PCIe)协议兼容的链路上接收所述数据分组。
24.根据权利要求17所述的至少一种机器可访问存储介质,所述代码在机器上被执行时使得所述机器:
识别来自分组报头的排序提示,用于对非易失性存储器中的写入完成进行排序;以及
以与数据分组被接收的次序不同的次序执行所述写入存取。
25.一种计算系统,包括:
接口控制器,用于从输入/输出设备接收分组;
中央处理单元,其包括根复合体逻辑,所述根复合体逻辑用于:
通过链路从请求者设备接收数据分组,所述数据分组包括报头和数据有效载荷;
确定在所述数据分组的报头中设置的提示位,所设置的提示位指示所述报头中的转向标签值待被解码;
基于所设置的提示位确定所述报头中的转向标签值,所述转向标签值指示到非易失性存储器的写入存取;以及
将到非易失性存储器的写入存取和来自所述数据分组的数据有效载荷传送到存储器控制器;以及
存储器控制器逻辑,用于执行到所述非易失性存储器的写入存取。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/280,730 US11216396B2 (en) | 2016-09-29 | 2016-09-29 | Persistent memory write semantics on PCIe with existing TLP definition |
US15/280,730 | 2016-09-29 | ||
PCT/US2017/051947 WO2018063832A1 (en) | 2016-09-29 | 2017-09-18 | Persistent memory write semantics on pcie with existing tlp definition |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643299A CN109643299A (zh) | 2019-04-16 |
CN109643299B true CN109643299B (zh) | 2023-08-04 |
Family
ID=61687921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780053196.2A Active CN109643299B (zh) | 2016-09-29 | 2017-09-18 | 在具有现有tlp定义的pcie上的持久存储器写入语义 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11216396B2 (zh) |
CN (1) | CN109643299B (zh) |
DE (1) | DE112017004897T5 (zh) |
WO (1) | WO2018063832A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628791B (zh) * | 2018-05-07 | 2020-05-19 | 北京智芯微电子科技有限公司 | 基于pcie接口的高速安全芯片 |
US10866895B2 (en) | 2018-12-18 | 2020-12-15 | Advanced Micro Devices, Inc. | Steering tag support in virtualized environments |
US11775470B2 (en) * | 2019-11-20 | 2023-10-03 | Intel Corporation | Transaction layer packet format |
US20210311897A1 (en) * | 2020-04-06 | 2021-10-07 | Samsung Electronics Co., Ltd. | Memory with cache-coherent interconnect |
US11258887B2 (en) * | 2020-06-22 | 2022-02-22 | Mellanox Technologies, Ltd. | Payload cache |
US20200327041A1 (en) * | 2020-06-25 | 2020-10-15 | Gilad Shayevitz | Closed chassis debugging through tunneling |
US11669473B2 (en) * | 2020-06-26 | 2023-06-06 | Advanced Micro Devices, Inc. | Allreduce enhanced direct memory access functionality |
JP2022105928A (ja) * | 2021-01-05 | 2022-07-15 | 住友電気工業株式会社 | 光トランシーバおよび光トランシーバの制御方法 |
US11762785B2 (en) * | 2021-05-03 | 2023-09-19 | Mellanox Technologies, Ltd. | Peripheral component interconnect attributes shared using address bits |
CN118175166A (zh) * | 2022-12-09 | 2024-06-11 | 华为技术有限公司 | 一种有线串行总线数据传输方法、系统及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010138230A2 (en) * | 2009-05-29 | 2010-12-02 | Intel Corporation | Method and apparatus for enabling id based streams over pci express |
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN103117929A (zh) * | 2013-01-31 | 2013-05-22 | 中国科学院计算技术研究所 | 一种基于PCIe数据交换的通信方法及系统 |
CA2838836A1 (en) * | 2012-10-27 | 2014-04-27 | Huawei Technologies Co., Ltd. | Method, device, system and storage medium for implementing packet transmission in pcie switching network |
CN104050112A (zh) * | 2013-03-15 | 2014-09-17 | 英特尔公司 | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306442A1 (en) * | 2009-06-02 | 2010-12-02 | International Business Machines Corporation | Detecting lost and out of order posted write packets in a peripheral component interconnect (pci) express network |
US8266383B1 (en) * | 2009-09-28 | 2012-09-11 | Nvidia Corporation | Cache miss processing using a defer/replay mechanism |
US20110276744A1 (en) | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US8694737B2 (en) | 2010-06-09 | 2014-04-08 | Micron Technology, Inc. | Persistent memory for processor main memory |
US9083769B2 (en) * | 2011-09-14 | 2015-07-14 | Barco N.V. | Electronic tool and methods for meetings |
BR112014013390A2 (pt) * | 2011-12-20 | 2017-06-13 | Intel Corp | redução de potência parcial dinâmica de cache de lado de memória em hierarquia de memória de 2 níveis |
US20130173834A1 (en) * | 2011-12-30 | 2013-07-04 | Advanced Micro Devices, Inc. | Methods and apparatus for injecting pci express traffic into host cache memory using a bit mask in the transaction layer steering tag |
WO2013109640A1 (en) * | 2012-01-17 | 2013-07-25 | Intel Corporation | Techniques for command validation for access to a storage device by a remote client |
US20130346655A1 (en) * | 2012-06-22 | 2013-12-26 | Advanced Micro Devices, Inc. | Bus agent capable of supporting extended atomic operations and method therefor |
US9081606B2 (en) | 2012-11-13 | 2015-07-14 | International Business Machines Corporation | Asynchronous persistent stores for transactions |
US9424219B2 (en) * | 2013-03-12 | 2016-08-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Direct routing between address spaces through a nontransparent peripheral component interconnect express bridge |
US10489158B2 (en) | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
US9747245B2 (en) * | 2014-12-17 | 2017-08-29 | Intel Corporation | Method, apparatus and system for integrating devices in a root complex |
US20180279429A1 (en) * | 2015-09-17 | 2018-09-27 | Innosys, Inc. | Solid State Lighting Systems |
US20180088978A1 (en) * | 2016-09-29 | 2018-03-29 | Intel Corporation | Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container |
EP3622529A1 (en) * | 2017-05-08 | 2020-03-18 | Masimo Corporation | System for pairing a medical system to a network controller by use of a dongle |
US11465631B2 (en) * | 2017-12-08 | 2022-10-11 | Tesla, Inc. | Personalization system and method for a vehicle based on spatial locations of occupants' body portions |
US11614986B2 (en) * | 2018-08-07 | 2023-03-28 | Marvell Asia Pte Ltd | Non-volatile memory switch with host isolation |
-
2016
- 2016-09-29 US US15/280,730 patent/US11216396B2/en active Active
-
2017
- 2017-09-18 CN CN201780053196.2A patent/CN109643299B/zh active Active
- 2017-09-18 DE DE112017004897.4T patent/DE112017004897T5/de active Pending
- 2017-09-18 WO PCT/US2017/051947 patent/WO2018063832A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010138230A2 (en) * | 2009-05-29 | 2010-12-02 | Intel Corporation | Method and apparatus for enabling id based streams over pci express |
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CA2838836A1 (en) * | 2012-10-27 | 2014-04-27 | Huawei Technologies Co., Ltd. | Method, device, system and storage medium for implementing packet transmission in pcie switching network |
CN103117929A (zh) * | 2013-01-31 | 2013-05-22 | 中国科学院计算技术研究所 | 一种基于PCIe数据交换的通信方法及系统 |
CN104050112A (zh) * | 2013-03-15 | 2014-09-17 | 英特尔公司 | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 |
Non-Patent Citations (1)
Title |
---|
TLP PROCESSING HINTS.PCI-SIG ENGINEERING CHANGE NOTICE;无;《IBM》;20081231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109643299A (zh) | 2019-04-16 |
US20180089115A1 (en) | 2018-03-29 |
US11216396B2 (en) | 2022-01-04 |
DE112017004897T5 (de) | 2019-06-13 |
WO2018063832A1 (en) | 2018-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643299B (zh) | 在具有现有tlp定义的pcie上的持久存储器写入语义 | |
CN108027785B (zh) | 用于对链路拆分进行去偏斜的方法、设备和系统 | |
CN107924380B (zh) | 使用业务类别分配高速缓存的方法、装置和系统 | |
US11194751B2 (en) | Power management of re-driver devices | |
JP6286551B2 (ja) | 処理要素構成のための装置、デバイス構成のための装置および方法、高速デバイス構成のための装置、プログラム、並びに、非一時的コンピュータ可読ストレージ媒体 | |
CN112506844B (zh) | 针对pcie进行sris模式选择的系统、方法和装置 | |
JP6147840B2 (ja) | ルートポート及びRPIE(RootPortIntegratedEndpoint)のレジューム時間を向上させるための方法、装置及びシステム | |
US9953001B2 (en) | Method, apparatus, and system for plugin mechanism of computer extension bus | |
CN112540940B (zh) | 用于多通道链路的部分链路宽度状态 | |
CN109074341B (zh) | 减少引脚计数接口 | |
CN111865338A (zh) | 用于带内链路管理的重定时器机制 | |
US10969992B2 (en) | Address translation for scalable linked devices | |
CN112866105A (zh) | 多通道链路的部分链路宽度状态 | |
CN110121703B (zh) | 用于向量通信的系统和方法 | |
CN113742277A (zh) | 适应性较低功率状态进入和退出 | |
TWI736559B (zh) | 用以針對實體層裝置的組件傳輸資料之控制器 | |
CN109643577B (zh) | 用于存储器训练的电参数的多维优化 | |
US11126554B2 (en) | Prefetching write permissions into address translation cache | |
CN113849442A (zh) | 通过隧道传输的封闭式底盘调试 | |
CN112579496B (zh) | 减少引脚计数接口 |
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 |