一种用于管理协议栈的时间的设备、方法和系统 【技术领域】
本发明涉及管理协议栈的时间。
背景技术
计算机平台一般情况下包括通过各种互连耦合的多个半导体组件。这些互连或链路通常具有不同的协议,使得在不同链路上的通信以不同的速度并根据不同的协议进行。在一些系统中,输入/输出(I/O)协议的通信能通过另一个互连被隧道化(tunneled)。隧道化(tunneling)一般涉及根据第一协议进行通信,并通过根据第二协议操作的互连提供它们,使得例如通过将第二协议的报头应用到第一协议的分组并沿互连发送它们来隧道化第一协议的分组。一般情况下,此类协议隧道化在极高级别进行,使得虽然两个协议可能具有相同的软件抽象,但协议之间没有共享的硬件。因此,在软件兼容性、性能和推向市场的时间方面,对于此类隧道化有极小的优势。
【发明内容】
本发明提供一种设备,包括:第一协议栈,根据第一协议处理数据,所述第一协议栈包括接口逻辑以将所述第一协议栈接口到隧道化互连;以及所述隧道化互连,将所述第一协议栈耦合到链路并具有与其相关联的时序延迟,其中所述接口逻辑要至少部分地基于所述时序延迟来控制所述第一协议栈的至少一个定时器。
本发明还提供一种方法,包括:在耦合到隧道化互连的第一协议栈的接口逻辑中接收通信;确定所述通信的通信类型是否要服从改变的时序以适应与所述隧道化互连相关联的延迟;调整所述第一协议栈的至少一个栈逻辑的时序以适应所述延迟;以及使用所调整的时序在 所述第一协议栈中处理所述通信。
本发明还提供一种系统,包括:传送器,包括耦合到链路的物理层和耦合到所述物理层的协议栈;接收器,经所述链路耦合到所述传送器,并包括第一协议栈以根据第一协议处理数据,所述第一协议栈包括第一接口逻辑以将所述第一协议栈经具有与其相关联的时序延迟的隧道化物理层接口到所述链路,其中所述第一接口逻辑要至少部分地基于所述时序延迟来改变所述第一协议栈的至少一个第一栈逻辑的时序;以及动态随机访问存储器(DRAM),耦合到所述接收器。
【附图说明】
图1是根据本发明的一个实施例的协议栈经共享物理层到链路的连接的框图。
图2是根据本发明的另一个实施例的具有耦合到共享物理层的多个通信栈的系统的框图。
图3是根据本发明的一个实施例的方法的流程图。
图4是根据本发明的另一个实施例的操作协议栈的接口的方法的流程图。
图5是根据本发明的一个实施例的系统的框图。
【具体实施方式】
在各种实施例中,能在较低级别通过在本文中称为隧道化互连的另一个互连来隧道化一个或多个现有IO协议。在一个实施例中,融合IO(converged IO)(CIO)可以是此类互连的示例,该互连能用于隧道化根据PCI Express
TM规范基础规范2.0版(2007年1月17日公布)(以下称为PCIe
TM规范)的高速外围组件互连(PeripheralComponent Interconnect Express)(PCIe)协议或另一个此类协议以及其它协议的通信。对于CIO,很多PCIe硬件栈直接实现,这在软件兼容性、性能和推向市场的时间方面提供了优势。也就是说,在低级 别隧道化中,实现了大部分被隧道化的协议栈。与此相反,对于高级别隧道化,软件架构被保持,但不一定使用来自被隧道化的协议的分组、编码或连线协议机制。经此低级别隧道化,PCIe协议栈的分组能被隧道化通过CIO互连,例如,通过使CIO报头适应隧道化分组。当在接收器中接收到此类传送的被隧道化的分组时,接收器的CIO协议栈能将报头解码,并将PCIe分组传递到接收器的对应PCIe协议栈。
然而,融合互连的此类方案经此低级别隧道化带来了问题,不同于在更高级别的抽象发生的隧道化协议。即,通常存在协议时序约束,一些是隐式的,这些约束在互连协议的非被隧道化的、本地的实例化(native instantiation)中平凡地得到满足,但是由于用于隧道化的互连引入的延迟,这些约束在对互连协议隧道化时会变得更难以管理。这些延迟可由隧道化互连本身或来自其它被隧道化的协议的业务而引起。
实施例提供用于在通过隧道化互连隧道化时管理被隧道化的协议的显式和隐式定时器的机制。虽然本文中所述的一个实施例使用通过CIO的被隧道化的PCIe协议的示例,但要理解,本发明的范围在此方面并无限制,并且相同的原理能应用到其它被隧道化的互连和用于隧道化的其它互连,包括有线和无线互连。
显式和隐式的互连的时序要求能分成两个宽的类别,在本文中称为链路和挂钟(wall clock)时间要求。链路时序要求与例如链路协议的较低级别相关联,其存在一般是为确保平滑的链路操作和将验证角落情况(validation corner case)降到最低。挂钟时序要求与在更高级别例如对于操作系统(OS)和应用软件可观察到的事件相关联。链路时序要求能直接受协议隧道化引起的延迟影响,并且是实施例解决的要求。一般情况下,链路时序要求可以为大约不到近似10微秒(μs),而挂钟时序要求大于近似10微秒(μs)。挂钟要求基本上不受协议隧道化的影响,这是因为它们一般与足够长(例如数毫秒(ms))的时间值相关联,从而不受协议隧道化造成的较短延迟(例如,数微秒)影响, 并且此外,这些要求与使得防止用户对应用软件的可视停止的属性相关联,其是同等合乎需要的,而不考虑用于传达特定互连协议的硬件机制(本地的与被隧道化的)。
下面的表1列出与PCIe相关联的多个时序要求,并且示出每个要求如何与此论述相关。注意,具体实施方式部分中的引用取自PCIExpress
TM规范。
表1 描述 类型 注释
确认/非确认(Ack/NaK) 传送和重放定时器 (Transmission and Replay Timer) 链路 严格要求(firm requirement) ‑如果隧道化互连不满足时 间要求,则将触发(虚假) 错误。
链路状态零备用(L0)调用 政策:“如果对于不超过7 微秒的时间期满足定义的 空闲条件(下述),则端口... 必须将其传送通道转变为 L0状态。” 链路 链路不在使用中时触发链路 电源管理;这是根据隧道化互 连分配而不是实际使用的来 计数时间的情况的示例。
链路状态1(L1)进入协商 (Entry Negotiation)‑“上游 组件重复发送此DLLP,不 超过四个空闲的符号时间” 链路 隐式时序要求。这种情况下, 到PCIe栈的业务的出现受到 管理,屏蔽插入的延迟
流控制更新 链路 指导方针,不是要求
PCI‑电源管理(PM)和活动 状态电源管理(ASPM):“从 L1退出时,建议下游组件从 L1退出的1微秒内开始,为所 有启用的虚拟信道(VCC) 和流控制(FC)类型发送流 控制更新数据链路层分组数 据链路层分组(DLLP)。” 链路 指导方针,不是要求
L0/L1退出等待时间 挂钟 这些时序参数存在是为允许 确定对通过PCIe的业务的影 响,不是作为基本的PCIe链 路操作
电源管理事件(PME)‑“如 果在100毫秒(+50%/‑5%) 后,请求代理的PME_Status 比特尚未清除,则PME服务 超时机制到期,触发PME请 求代理重新发送暂时丢失的 PM_PME消息。” 挂钟 要求的存在是为防止PME完 全丢失;选取特定时间以将虚 假触发降到最低,同时足够 短,使得PME将仍以较及时 的方式得到处理
10微秒的公布请求接受限制 (Posted Request Acceptance Limit) 挂钟 旨在限制构造拥塞(fabric congestion)造成的平台可观察 延迟
30微秒的流控制最小更新频 率和更新FCP定时器‑200 微秒 挂钟 旨在限制由流控制分组的丢 失造成的停止(stall)
注意,表1旨在说明关注的一些示例,但无意作为PCIe中所有时序相关要求的完整列表。
链路时序要求由PCIe栈本身“测量”,因此,如果更改PCIe栈的时间观(view of time),则能改变这些时间将被感知的方式。为实现此改变,可提供用以实现时间改变的机制,以及确定何时及如何改变栈时序的硬件、软件或固件。
用于改变PCIe栈的时间观的机制能以多种方式完成。例如,这能通过选通或关闭到PCIe栈逻辑中各种部件的时钟,从而有效地使时间对于该逻辑静止不动而完成。注意,此方案具有另一个益处是在PCIe栈逻辑未使用时降低其消耗的功率。在其它实施例中,显式控制信号能添加到PCIe栈逻辑,指示何时将计数时间。注意,通常,将不足以将整个栈作为一个单元来控制,而是能半独立地控制栈的子部件,这是因为不同的协议机制能不同地影响不同的逻辑块。类似地,并非所有通信将需要改变时序以便符合链路时序要求。在一个实施例中,控制逻辑能用于确定何时及如何调整PCIe栈的时间观,并且此逻辑可以是PCIe栈的部分。
现在参照图1,图中所示是PCIe栈(和其它被隧道化的协议)如何接口到共享隧道化链路的框图,该链路在一个实施例中能是CIO链路。如图1所示,系统10包括第一栈20
a和第二栈20
b(统称为协议栈20)。在一个实施例中,第一协议栈20
a可以是PCIe栈,而第二协议栈20
b可以是通用串行总线(USB)、显示互连或其它此类协议栈。为便于说明,只示出PCIe协议栈的细节。具体来说,协议栈20
a包括事务层22、数据链路层24及在PCIe协议与隧道化协议之间充当接口的接口或垫层(gasket layer)26。此类接口逻辑的操作的细节将在下面进一步论述。
还如图1所示,融合IO层可耦合在第一和第二协议栈20与链路70之间,链路70在一个实施例中可以是光链路、电链路或其它此类链路。如图1所示,CIO协议栈可包括CIO协议传输层30、物理层的逻辑块40、物理层的电块50和物理层的光块60。这样,块40‑60充当能由与物理层通信的多个协议共享的共享物理层,从而沿链路70隧道化这些多个协议的信息。
现在参照图2,图中所示是具有耦合到共享物理层的多个通信栈的系统的表示。具体来说,在图2中,除PCIe传送(TX)和接收(RX)栈20
a外,可存在多个其它传送和接收栈20
b‑20
d。如图所示,一对复 用器35
a和35
b(统称为复用器35)可耦合在这些栈与共享物理层40‑60之间。复用器35可在协议传输层控制30的控制下操作。如图2所示,CIO协议传输(PT)层30实现复用(经复用器35
a和35
b)和控制机制以便隧道化PCIe和其它协议。PT层控制30实现对于传送器的仲裁和对于独立于传送器的接收器的操纵。虽然此类型的结构用于本论述的剩余部分,但要注意,实施例能适用于以不同方式(例如,通过同时为两者仲裁或通过具有单个双向连接)控制传送器和接收器的其它类型的互连。
实现互连的时序控制的不同方式能在不同的实施例中实现。例如,在一些实现中,可进行动态后期绑定,使得此类接口逻辑能动态确定它要耦合到的隧道化互连,并动态控制协议的任何时序要求以适应隧道化互连。在其它实施例中,设计者可在系统开发期间确定要由一个或多个协议栈使用的隧道化互连,使得可受隧道化互连影响的链路时序要求能在系统设计期间确定。因此,逻辑能在协议栈与隧道化互连之间结合在例如接口逻辑中,以控制协议栈的时序,如通过改变协议栈的时间观,从而适应经隧道化互连招致的任何附加的延迟。
现在参照图3,图中所示是处理链路时序要求的较前的方式的实现,即可经接口逻辑本身实现使得协议栈能动态耦合到共享物理层或另一个物理层的动态后期绑定。具体来说,图3示出方法100的流程图,该方法能在例如协议栈的接口逻辑中实现,以用于在协议栈(它可以是给定协议的标准栈)与例如能隧道化各种协议的分组的融合互连的公共物理层之间的通信。如图3所示,方法100可通过获得用于隧道化互连的时序延迟信息开始(框110)。获得此信息的各种方式可以实现。例如,在一个实施例中,共享物理层可将延迟信息的预定清单提供给接口逻辑。备选地,接口逻辑可分析与共享物理层的分组通信以确定时序延迟信息。更一般地说,一些实施例可以预定方式获得时序信息,而其它实现可动态计算此类信息。每种实现能有几种变化,例如,人与机器预定,或者对于计算的情况,可在某个时间执行 检查或定期重复执行检查。注意,此类信息的各种实例可存在,其中,根据涉及的逻辑实体和通信的性质,不同类型的通信发生不同的延迟。
仍参照图3,控制传递到框120,其中,时序延迟信息可映射到第一协议栈的时序要求。作为一个示例,如上面表1所述,协议栈可具有关于链路层通信的变化的时序要求。控制随后传递到菱形130,其中,可基于映射确定第一协议栈的时序观(timing view)是否需要改变。也就是说,由于在公共物理层中可存在的等待时间,例如,经加速、减速、禁用等,能控制与协议栈的给定逻辑相关联的一个或多个定时器。如果无需时序观的此类改变,则控制传递到框135,其中,可使用标准协议栈时序传送和/或接收数据。
仍参照图3,相反,如果确定应改变时序观,则控制传递到框140,其中,可控制至少一个栈逻辑的时序以改变第一协议栈时序。如上所述,时序的此改变可经定时器的控制,控制逻辑来计数给定间隔(或不计数)或诸如此类来完成。在此类时序控制已执行后,可使用此改变的协议栈时序传送/接收期望数据(框150)。还如图3所示,随后可确定通信(即,给定事务)是否已完成(菱形160)。如果已完成,则方法可结束。备选地,控制往回传递以进行框140和150的重复迭代。虽然在图3的实施例中以此特定实现示出,但本发明的范围在此方面并无限制。
例如,在其它实现中,系统设计可以固定,使得给定协议栈将通过具有已知延迟的已知隧道化互连来隧道化。相应地,在系统设计期间,逻辑能实现为根据需要来处理各种协议事务的时序的控制,以适应在隧道化互连中固有的任何延迟。上面的表1提供此类链路层时序要求的示例。
现在参照图4,图中所示是根据本发明的另一个实施例的操作协议栈的接口的方法的流程图。如图4所示,方法200可由能基于静态设计参数根据需要改变协议栈的时序观的接口逻辑来实现。如图4所 示,方法200可通过接收至隧道化互连/来自隧道化互连的通信而开始(框205)。此通信因而在外出或进入方向上在协议栈的接口逻辑中接收。各种通信类型可在接口逻辑中处理,包括数据分组的传送和接收以及例如确认的各种协议分组、例如用于电源管理、流控制等的控制分组。
基于分组的类型,可在接口逻辑中确定给定通信类型是否要服从改变的时序(菱形210)。例如,接口逻辑可包括表格或者可与表格相关联(如在非易失性存储器中存在),该表格识别事务类型和是否应为该类型的通信改变协议栈的时序观,以及适用的延迟的指示及要由接口逻辑应用以相应地改变时序的控制措施的类型的其它标识符或指令。注意,表格中可存在多个部分,每个部分与给定栈相关联,使得每个部分提供对于专用栈‑隧道化互连关系的映射。
仍参照图4,如果无需改变,则标准协议栈时序可用于处理通信,因此,数据可使用标准协议栈时序传送/接收(框220)。相反,如果确定应改变时序观,则控制传递到框230,其中,可控制至少一个栈逻辑的时序以改变其时序。随后,可使用此改变的协议栈时序来传送/接收期望数据(框240)。还如图4所示,随后可确定通信(即,给定事务)是否已完成(菱形260)。如果已完成,则方法可结束。备选地,控制往回传递以进行框230和240的重复迭代。因此,能实现处理链路时序要求的静态控制。
如上图3和4中所示,能为某些通信类型改变时序控制,而其它通信类型能根据其常规协议栈时序继续而无改变。下面的论述提供其中可改变协议栈的时序以适应链路时序要求的情况的一些示例。
在一个实施例中,PT层控制30可提供分配给PCIe的传送器“时隙”,但所述传送器“时隙”在不存在要传送的PCIe业务时能用于其它类型的业务。因此,为第一协议栈分配的时隙能在第一协议栈无业务要传送时由另一个协议栈使用。同样地,在接收器,可存在将接收PCIe业务的时间,但由于其它组件不具有PCIe业务要传送,或者由于它 具有不同类型的更高优先级业务,接收器未在那个时间期间接收任何PCIe业务。
为正确地将“PCIe时间”的概念传达给PCIe栈,能稍微独立考虑接收和传送时间。在表1中所述的诸如L0调用政策和“从L1退出时...”要求等一些情况下,只从一个观察点(在这些情况下,是传送器的)测量时间。
然而,对于Ack/Nak协议,接收器和传送器观察点均需要考虑。PCIe传送器如果假定通过基于物理PCIe端口的传送管道传播的特定等待时间,而且如果CIO传送管道具有不同的延迟,则它对事务层分组(TLP)被传送的时间的观察可能不正确。另一个(即,接收器)组件只在其PCIe栈已在共享链路上分配了PCIe时间时才能做出响应,其由接收器感知为需要调整它的(接收器)的时间观。假设PCIe栈预期50毫微秒(ns)的传送管道延迟,但CIO链路提供70ns的传送管道延迟。这种情况下,将必需停止或以其它方式调整传送器的时间观(对取决于知道此延迟的协议方面)20ns以考虑到(account for)差异。因此,传送器将为来自接收器的ACK信号(其可能被共享物理层延迟)等待适当的时间间隔,以便不会不当地引起错误信号。
对于接收器,它必须考虑到其它组件的传送器为PCIe提供的已分配时间(未使用时间)。在一些情况下,这将直接为接收器所知,然而,在其它情况下,例如消息的隧道化协议机制可提供以指示另一个组件的接收器应为每个被隧道化的协议提前多少时间观。例如,如果两个100ns时隙分配给PCIe传送器,但由于缺少要传送的PCIe业务,该传送器只使用一个时隙,因而接收器必须考虑到200ns的时间。这样,如果另一个组件通过不利用可用于传送的时隙而违反时序规则,则接收器可看到这个违反。只要考虑到已用(与已分配相对)的传送时隙,则情况将不是这样。
注意,对于某些协议,多种优化可能实现。例如,可使用计数器机制考虑到已知带宽业务,而不考虑实际准许的链路仲裁。在协议具 有保证相等的接收和传送分配的情况下,利用另一方的(接收器的)时间观必须匹配的理解,有可能只考虑一方(例如,传送器)。
如前面所述,实施例决不取决于CIO或PCIe的细节,并且可适用于正在被隧道化的其它协议,如显示、USB、网络等。实施例也适用于其它隧道化协议/环境,例如,通过有线或无线USB互连的隧道化PCIe。
通过根据本发明的一个实施例执行隧道化,更一般的硬件的公共集合能满足更大数量的不同IO应用。例如,平台可包括12个USB端口,8个PCIe端口和多个专用端口(例如,显示)。通过隧道化,这些端口能融合成例如16个融合的端口的集合,其中每一个端口能用作原先端口的任何一个(或多个)。
实施例能在许多不同的系统类型中实现。参照图5,根据本发明的一个实施例的系统的框图包括经隧道化互连(其是串行链路)耦合到控制器中心(controller hub)的装置。系统300包括处理器305和耦合到控制器中心315的系统存储器310。处理器305包括任何处理部件,如微处理器、主机处理器、嵌入式处理器、协处理器或其它处理器。处理器305通过前端总线(FSB)306耦合到控制器中心315。在一个实施例中,FSB 306是串行点到点(PtP)互连。
系统存储器310包括任何存储器装置,如随机访问存储器(RAM)、非易失性(NV)存储器或可由系统300中装置访问的其它存储器。系统存储器310通过存储器接口316耦合到控制器中心315。
在一个实施例中,控制器中心315是PCIe互连层次中的根中心或根控制器。控制器中心315的示例包括芯片组、存储器控制器中心(MCH)、北桥、输入/输出控制器中心(ICH)、南桥以及根控制器/中心。此处,控制器中心315通过串行链路319耦合到交换器(switch)/桥接器(bridge)320。输入/输出模块317和321(也可称为接口/端口317和321)包括/实现分层协议栈以在控制器中心315与交换器320之间提供通信。在一个实施例中,多个装置能耦合到交换器320。
交换器320将分组/消息从装置325往上游(即层次向上)朝控制器中心315路由,并且往下游(即层次向下)离开控制器中心315路由到装置325。IO模块322和326实现分层协议栈以在交换器320与装置325之间通信。在一个实施例中,IO模块326可以是隧道化物理层以隧道化多个协议栈(即,栈327和328)的分组。装置325包括要耦合到电子系统的任何内部或外部装置或组件,例如IO装置、网络接口控制器(NIC)、插卡(add‑in card)、音频处理器、网络处理器、硬盘驱动器、存储装置、监视器、打印机、鼠标、键盘、路由器、便携式存储装置、火线(Firewire)装置、通用串行总线(USB)装置、扫描仪及其它输入/输出装置。
图形加速器330也通过串行链路332耦合到控制器中心315。在一个实施例中,图形加速器330耦合到MCH,而MCH耦合到ICH。交换器320和相应地IO装置325因而耦合到ICH。IO模块331和318也要实现分层协议栈以在图形加速器330与控制器中心315之间通信。
实施例可以代码形式实现,并可存储在上面存储有指令的存储介质上,这些指令能用于对系统编程以执行指令。存储介质可包括但不限于任一类型的盘,包括软盘、光盘、紧致磁盘只读存储器(CD‑ROM)、可重写紧致磁盘(CD‑RW)和磁光盘,以及半导体装置,例如只读存储器(ROM)、例如动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)的随机访问存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡,或适用于存储电子指令的任何其它类型的媒体。
虽然本发明已相对有限数量的实施例进行了描述,但本领域的技术人员将由此理解许多修改和变化。所附权利要求旨在涵盖属于本发明真正精神和范围的所有这些修改和变化。