通过sas的pcie隧穿的制作方法

文档序号:6546680阅读:389来源:国知局
通过sas的pcie隧穿的制作方法
【专利摘要】本发明提供了用于通过SAS域来隧穿PCIe数据的系统和方法。数据系统(100)包括SAS扩展器(101)、与扩展器耦接的PCIe目标设备(111)、以及与主机系统(105)及扩展器通信耦接的SAS控制器(104)。控制器可操作用于经由SAS协议来开启与扩展器间的连接,并且用于经由PCIe协议通过该连接在目标设备与主机系统之间传输分组数据。例如,控制器和扩展器可以操作用于在连接中缓存数据分组。控制器可以发出要在连接中传输的若干数目的数据分组。然后,所发出的数目的数据包经由PCIe协议通过该连接在目标设备与主机系统之间传输。
【专利说明】 通过SAS的PCIE隧穿
[0001]相关申请的交叉引用
[0002]本文要求题目为“通过SAS的PCIE隧穿(PCIE TUNNELING THROUGH SAS) ”的美国临时专利申请N0.61/836,282 (在2013年6月18日提交)等的优先权,该专利申请以提及方式全文并入本文。

【技术领域】
[0003]本发明一般地涉及经由PCIe协议通过SAS域的串行连接的小型计算机系统接口(SAS)连接来隧穿外围组件互连 Express (Peripheral Component InterconnectExpress (PCIe))业务。

【背景技术】
[0004]现存有众多存储设备接口,并且它们不断地挑战传统的SAS域。例如,基于PCIe的存储设备现在被配置为与传统的SAS域平行的。这些PCIe存储设备可能需要向上游的SAS存储控制器传输数据和从上游的SAS存储控制器传输数据,然后在该SAS存储控制器中数据能够被放置于本机PCIe接口上。但是,PCIe是基于分组(packet)的无连接传输协议,并且SAS是基于端到端连接的协议不提供无连接传输,使得互通(interworking)变得尤其具有挑战性。


【发明内容】

[0005]本文所给出的系统和方法提供了通过SAS域来隧穿PCIe业务(traffic),该SAS域包括一个或多个有PCIe能力的(PCIe capable) SAS扩展器、一个或多个传统的SAS扩展器以及一个或多个有PCIe能力的SAS控制器的拓扑。PCIe业务的隧穿允许SAS拓扑中的PCIe目标设备(例如,SCS1-Over-PCIe (SOP)设备、非易失性存储器Express (NVMe)设备以及串行AT嵌入式接口 Express (SATA express)设备)通过SAS域连接至基于PCIe的主机系统,包括SAS扩展器和SAS控制器。在一种实施例中,数据系统包括串行连接的小型计算机系统接口扩展器、与扩展器耦接的外围组件互连Express(PCIe)目标设备、以及与主机系统及扩展器通信耦接的串行连接的小型计算机系统接口控制器。控制器可操作用于打开与扩展器间经由串行连接的小型计算机系统接口协议进行的SAS连接,并且用于通过经由外围组件互连Express (PCIe)协议进行的连接在目标设备与主机系统之间传输分组数据。例如,控制器和扩展器可操作用于在连接中缓存数据分组。控制器可以发出要在连接中传输的若干数目的数据分组(data packet)。然后,所发出的数目的数据分组通过经由外围组件互连Express (PCIe)协议进行的SAS连接在目标设备与主机系统之间传输。
[0006]本文所公开的各种实施例可以作为设计选择的事项按照多种方式来实现。例如,实施例可以采用计算机硬件、软件、固件或者它们的组合的形式。以下将描述其他示例性的实施例。

【专利附图】

【附图说明】
[0007]现在将通过举例(仅作示例)的方式参照附图来描述本发明的某些实施例。相同的附图标记代表全部附图中相同的元件或相同类型的元件。
[0008]图1是通过SAS域来隧穿PCIe数据的示例性数据系统的框图。
[0009]图2是用于通过SAS域来隧穿PCIe数据的示例性过程的流程图。
[0010]图3是可操作用于建立在SAS域中的SAS构件之间的SAS连接并隧穿PCIe数据分组的SAS链路的示例性框图。
[0011]图4是通过SAS域的示例性PCIe隧穿的框图。
[0012]图5是通过SAS域的示例性PCIe隧穿的另一个框图。
[0013]图6是示例性的有PCIe能力的SAS扩展器的框图。
[0014]图7是图6的有PCIe能力的SAS扩展器的示例性PCIe目标聚合器的框图。
[0015]图8是示例性有PCIe能力的SAS控制器的框图。
[0016]图9是图8的有PCIe能力的SAS控制器的示例性PCIe/SAS互通启动器(interworking initiator)的框图。
[0017]图10是其中计算机可读介质提供用于执行本文的方法的指令的示例性计算系统的框图。

【具体实施方式】
[0018]附图及下面的描述示出了本发明的具体示例性实施例。因而应当意识到,本领域技术人员将能够设计出用于实现本发明的原理并包含于本发明的范围之内的各种布局,尽管在本文中没有明确地描述或示出。而且,本文所描述的任何实例均旨在帮助理解本发明的原理,并且应当被理解为并不限制于这样具体叙述的实例和条件。因此,本发明并不限制于以下所描述的具体实施例或实例。
[0019]图1是用于通过SAS域100来隧穿PCIe数据的示例性数据系统的框图。在本实施例中,SAS域100配置有具有PCIe能力的SAS扩展器(PCIe/SAS扩展器101)、传统的SAS扩展器102、以及通过有PCIe能力的SAS控制器(PCIe/SAS控制器104)与PCIe主机系统105耦接的另一个有PCIe能力的SAS扩展器(PCIe/SAS扩展器103)。扩展器102被耦接于扩展器101和103之间,并且可操作用于经由SAS协议连接至多个SAS目标设备110。PCIe/SAS扩展器101和103两者均可操作用于经由PCIe协议与PCIe目标设备111以及经由SAS协议与SAS目标设备110 (以及其他SAS扩展器102)连接和通信。PCIe/SAS控制器104与PCIe/SAS扩展器101/103的结合允许数据系统100通过经由SAS协议来隧穿PCIe分组数据来传输通过SAS域100的在PCIe主机系统105与PCIe目标设备111之间的PCIe分组通信。PCIe/SAS控制器104还将PCIe数据转换为SAS以将来自PCIe主机系统105的数据路由至适当的SAS目标设备110。在一种实施例中,若干数目的PCIe目标设备111按照允许PCIe分组流过PCIe/SAS控制器104的端口层和PCIe/SAS互通启动器(将在下文更详细地说明)的方式直接附接至PCIe/SAS控制器104,由此单独在PCIe/SAS控制器104内提供隧穿。
[0020]PCIe目标设备111和SAS目标设备110的实例包括存储设备,例如,磁盘驱动器和固态驱动器(SSD)。在这点上,目标设备110和111可以为PCIe主机系统105提供数据存储。并且,PCIe主机系统105可以经由PCIe协议为了与目标设备110和111中的任一个之间的通过扩展器101、102和103的SAS域100的输入/输出(I/O)操作来配置读/写请求。PCIe主机系统105可以是可操作用于经由PCIe协议来执行I/O操作的任意合适的计算设备或系统,例如,服务器、工作站、个人计算机等。
[0021]PCIe/SAS控制器104是可操作用于执行设备发现,管理目标设备110和111的数据以及处理指向该数据的I/o命令的任意设备、系统、软件、或者它们的组合。例如,PCIe/SAS控制器104可以被实现为定制电路、用于执行存储于关联的程序存储器内的程序指令的专用或通用处理器、或者它们的某种组合。PCIe/SAS控制器104可以是独立的SAS设备、主机的主机总线适配器(HBA)、或者PCIe主机系统105的集成构件。
[0022]PCIe/SAS控制器104包括适合于经由PCIe协议与PCIe主机系统105耦接并传输分组数据的前端接口(将在下文更详细地示出和描述)。PCIe/SAS控制器104还包括适合于耦接并支持PCIe设备(例如,PCIe/SAS扩展器101和103及PCIe目标设备111)与SAS设备(例如,SAS目标设备110和SAS扩展器102)两者的后端接口(将在下文更详细地示出和描述)。例如,PCIe/SAS控制器104提供PCIe控制、SAS连接信用管理、以及用于支持多个远程/SAS扩展器(例如,扩展器101和103)的缓存。PCIe/SAS控制器104还充当着可经由SAS域100访问的PCIe目标设备111的根复合体。PCIe/SAS控制器104执行下游所附接的目标设备110和111的PCIe系统枚举,有助于SAS域管理。
[0023]SAS扩展器102是可操作用于经由SAS协议来提供基于连接的数据传输的任意设备、系统、软件、或者它们的组合。在这点上,SAS扩展器102可以经由多个物理收发器或“Phy”连接至其他SAS构件,例如,SAS目标设备110和其他扩展器。PCIe/SAS扩展器101和103是任意设备、系统、软件或者它们的组合,可操作用于支持SAS目标设备110以及所附接的PCIe设备111、SAS扩展器102和其他PCIe/SAS扩展器,并且与它们通信。在这点上,PCIe/SAS扩展器101和103每个都具有用于服务分别到目标设备110和111的PCIe和SAS两种业务的多个SAS Phy/PCIe链路(将在下文更详细地示出)。PCIe/SAS扩展器101和103可操作用于提供PCIe控制、设备信用管理、以及用于支持多个PCIe设备111的缓存。PCIe/SAS扩展器101和103同样可操作用于给出到SAS扩展器102的标准的SAS接口,并且与扩展器102及其他SAS设备(例如,SAS目标设备110)通信。
[0024]尽管SAS域100针对一定数目的PCIe/SAS扩展器、传统的SAS扩展器、PCIe目标设备和SAS设备进行了示出及描述,但是本发明并非意指是在SAS域100中除了可以由SAS协议所限制的构件之外的任何特定数目的构件。现在将针对图2的流程图来讨论关于数据系统(更具体为SAS域100)的某些操作细节。
[0025]图2是用于通过SAS域100来隧穿PCIe数据的示例性过程200的流程图。在本实施例中,PCIe目标设备111链接至SAS扩展器(处理元素201),而扩展器链接至PCIe/SAS控制器104 (处理元素202)。如上所述,PCIe/SAS控制器104链接至PCIe主机系统105 (要么作为PCIe主机系统105的一部分,要么不同于PCIe主机系统105),以便为PCIe主机系统105传输PCIe数据分组。因而,具有PCIe构件的端点的SAS域100被建立(例如,要么通过PCIe/SAS控制器104到PCIe/SAS扩展器103,要么通过PCIe/SAS控制器104到 PCIe/SAS 扩展器 101)。
[0026]在处理元素203中,在SAS域100内的SAS构件之一开启在PCIe/SAS控制器104与SAS扩展器之间的SAS连接。例如,PCIe目标设备111之一可能需要将基于PCIe的数据分组传输到PCIe主机105。因此,PCIe目标111可以引导PCIe/SAS扩展器101/103开启与PCIe/SAS控制器104间的连接。作为选择,PCIe主机系统105可能需要将基于PCIe的数据分组传输到PCIe目标设备111。PCIe主机系统105然后可以引导PCIe/SAS控制器104以开启到目标设备111的SAS连接。在任一种情形中,PCIe数据分组被缓存于处理元素204中的SAS连接的端点处,要么缓存于PCIe/SAS控制器104处,要么缓存于PCIe/SAS扩展器101/103处,直到可以开启SAS连接以使PCIe数据分组的传输生效的时间。
[0027]在SAS连接的端点之间传输数据分组之前,处理元素205中PCIe/SAS构件(即,控制器104或扩展器101/103)发出待通过SAS连接传输的若干数目的PCIe数据分组。例如,由于PCIe协议是无连接数据传输协议,因而PCIe数据分组通过SAS连接来跟踪以确保它们到达适当的PCIe端点。在一种实施例中,SAS连接的每个端点经由PCIe协议的数据链路层分组(DLLP)来传输可在下一缓存节点获得的信用量(例如,代表可用缓存空间),使得数据分组的信用管理可以在SAS连接的端点处进行处理。
[0028]在连接已被建立并且该数目的PCIe数据分组正被监测的情况下,SAS连接的每个端点可以从端点中的缓存检索PCI事务层分组(TLP),以经由PCIe协议在处理元素206中通过SAS连接在目标设备111与PCIe主机系统105之间传输所发出的数目的数据分组,由此通过SAS连接来隧穿PCIe业务。有关通过SAS域100的PCIe隧穿的实现方式的更多细节将在下面的实施例中示出和描述。
[0029]图3是可操作用于在SAS设备之间建立SAS连接以隧穿PCIe数据分组的SAS链路的示例性框图。个体SAS连接及关联的数据传输在“xl”的Phy宽度下发生,然而PCIe可以具有用来促进逻辑互连的“ΧΓ’、“Χ2”、“χ4”或更多的实际Phy。在图1的SAS域100内的连接可操作用于如同本文所说明的那样传输业务的动态混合。在本例中,PCIe和SAS业务的混合在4-phy的SAS宽端口上执行。
[0030]典型的SAS连接协议发出开启地址巾贞(Open Address Frame) (OAF),作为应答接收到开启接受(OpenAcc^pt) (OA),由此建立SAS连接,如同在SAS链路250中所示出的那样。一旦SAS连接被开启,SAS数据帧或者PCIe数据分组及关联的控制在开启的SAS连接中被交换。当CLOSE基元被交换时,SAS连接随后关闭,提示服务于该连接的所有扩展器拆除该路线,如同在SAS链路250、251和253中所示的。
[0031 ] 在本例中还示出了四种不同的协议——在SAS链路250中的串行SCSI协议(SSP)、在SAS链路253中的串行ATA隧道协议(STP)、在SAS链路250中的串行管理协议(SMP)、以及在SAS链路250和253中的PCIe隧道协议(PTP)。更具体地,SAS链路250示出了经由SSP进行的SAS连接的开启,使得SSP帧和基元可以在端点之间传输。在该连接被关闭之后,SAS构件(例如,扩展器101/103和/或PCIe/SAS控制器104)可操作用于经由PTP来开启SAS连接,使得PCIe数据分组可以经由PCIe协议的事务层分组(TLP)和数据链路层分组(DLLP)来传输。在PCIe数据分组被传输之后,SAS连接被关闭并且可用于另外的数据传输,在此情形中经由SMP来传输。
[0032]SAS链路251示出了一种类似的实施例,在该实施例中,PCIe数据分组通过SAS连接经由PTP来传输。在此,PTP开启并关闭连接,允许在SAS链路251上然后的SSP连接。
[0033]SAS链路252完全致力于经由PTP来提供PCIe数据业务。例如,如果PCIe带宽的静态分配是所希望的,则为了传输PCIe分组而建立的SAS连接可以是持久性的连接。PTP能够通过在某些附加资格下杠杆效果地影响遗留(Iengacy) OAF在包括中间遗留SAS扩展器(例如,SAS扩展器102)的SAS域内工作。例如,PTP连接可以使用在OAF中具有兼容的特征字段的遗留STP协议来开启,由此使作为PTP的隧穿类型具有资格。中间扩展器在此情形中照常工作,因为一旦SAS连接在等待将要于SAS连接的连接端点之间交换的SAS的CLOSE基元时开启,它仅简单地转发DWORDS。
[0034]SAS链路253连同用于STP的SAS连接的开启和关闭一起示出了具有PTP的SAS连接的类似的开启和关闭。因而,SAS链路并不限制于任何特定的协议。也就是,SAS链路在此可以被用来专用于通过SAS域100的PCIe业务,和/或包括经由SSP、STP、SMP和PTP通过在任何特定链路上的SAS连接的SAS开启和关闭进行的其他形式的数据业务。
[0035]图4是通过SAS域100的示例性PCIe隧穿的框图,如同类似于图1所示出的那样。该图示出了在TLP数据流303内的PCIe TLP在端部PCIe设备301之间流动,而PCIe DLLP穿过DLLP分组流304-1和304-3的本机PCIe链路,并且被隧穿通过DLLP分组流304-2。为了图示的目的,SAS域100配置有PCIe/SAS扩展器101、一对SAS扩展器102-1和102-2、以及PCIe/SAS控制器104。SAS连接是为了整体的PCIe分组路径310而建立的,对应于路径304-2如同以上所讨论的那样使用SAS协议的OAF和OA来建立。PCIe端点301由与PCIe/SAS控制器104耦接的PCIe主机系统105以及由与PCIe/SAS扩展器101耦接的PCIe目标设备111来建立。SAS域连接端点302基于通过扩展器101、扩展器102和控制器104的SAS构件的SAS连接来建立。
[0036]如上所述,为了实现通过SAS域100的PCIe隧穿,PCIe数据分组可以被缓存于SAS域100中的连接端点302处。于是,PCIe协议的DLLP分组可以被用来跟踪PCIe协议中的TLP数据分组。例如,PCIe协议提供TLP和DLLP两者。DLLP分组流304_1、304_2和304-3可以沿着PCIe分组路径310配置于各个连接端点301和302处,用于在它们相应的连接端点301处跟踪在PCIe目标设备111与PCIe/SAS控制器104之间的TLP数据流303内的TLP数据分组。TLP支持终端用户数据传输,而DLLP分组被用于PCIe的链路功能之间,以管理流控制并确认TLP。图4示出了 TLP如何沿着在它们于本机PCIe路径端点301之间的路径上的PCIe分组路径310内的TLP数据路径303传递通过SAS域100而DLLP终结于SAS域100的SAS连接端点302处。
[0037]独立的DLLP分组流304-2经由PCIe分组路径310的SAS连接部分在PCIe/SAS扩展器101与PCIe/SAS控制器104之间交换,用于在PCIe分组穿过SAS域100时管理PCIe流控制和TLP确认。虽然图中仅示出单个TLP分组流303,但是多个TLP分组流能够并且典型地经由单个SAS连接来支持(例如,多个PCIe目标设备111可以被服务于一个SAS连接中)。多个TLP分组流可以用与PCIe/SAS扩展器101和103中的任一个附接的目标设备111的PCIe/SAS聚合来实现,如同类似于图1所示的。
[0038]适当的TLP序列编号替代发生于PCIe/SAS扩展器101和PCIe/SAS控制器105的Phy/链路层内。另外,PCIe “重放”缓存可以沿着DLLP分组流304-2配置于每个DLLP端点302处。这些重放缓存可以针对在传统的PCIe片段之间以及在PCIe分组路径310内的丢失的或出错的TLP而被调用。作为选择,DLLP终端及关联的PCIe重放缓存能够沿着DLLP分组流304-2实现于中间PCIe/SAS扩展器103处,如图5所示。例如,PCIe协议确认被移动的每个TLP。如果TLP的目的地节点在TLP中检测到错误(例如,坏的CRC、坏的符号等),则目的地节点将NAK DLLP发送回到源节点,这与ACK DLLP相反。源节点保留已经发送但却尚未在重放缓存得到确认的每个TLP的副本。当源节点接收到NAK DLLP时,它重新发送存储于重放缓存内的所有TLP,从已到达的有错误的TLP开始。
[0039]图6是示例性的PCIe/SAS扩展器101/103的框图。PCIe/SAS扩展器101/103可操作用于支持SAS目标设备110和PCIe目标设备111。在这点上,PCIe业务和SAS业务两者均通过相应的PCIe的Phy/链路351-1 - 4,SAS的Phy/链路360-1 - 4以及SAS的Phy/链路361-1 - 4由扩展器模块353来服务。例如,SAS的Phy/链路361-1 - 4可以与上游的SAS扩展器102耦接。因而,SAS的Phy/链路361-1 - 4可操作用于耦接至上游SAS扩展器102的相应的SAS的Phy/链路,并且建立PCIe数据可以用以传输自另一有PCIe能力的设备(例如,另一 PCIe/SAS扩展器或PCIe/SAS控制器104)的SAS连接。
[0040]扩展器模块353包括扩展器连接路由器355、扩展器连接管理器354和广播传播处理器356。扩展器连接管理器354服务于用于在扩展器内建立各种链路层的连接的请求。扩展器连接路由器355提供在扩展器内的链路层之间的开关功能。广播传播处理器356可操作用于通过PCIe/SAS聚合器352来发现所附接的PCIe目标设备111,处理传入的广播请求,并且确保请求按照SAS协议要求来转发。一般地,与所附接的PCIe目标设备111有关的所发现的信息通过例如厂商唯一的SMP功能或者新的标准化的SMPPCIe设备发现功能来提供给有PCIe能力的SAS启动器(例如,PCIe/SAS控制器104)使用,从而实际上使信息免受传统的遗留SAS控制器影响。一般地,这些模块每个保留其标准的SAS行为,同时服务于PCIe隧道连接。
[0041]PCIe/SAS聚合器352提供PCIe控制、每个设备信用管理、以及为支持多个PCIe目标设备111所需的、同时给出到扩展器模块353的标准的SAS扩展器功能的标准接口的缓存。PCIe信用管理是的PCIe协议的方案,用于允许PCIe设备在其事务层(即,TLP)中为每个接收缓存广告初始的信用量。在链路的相对端的设备在给该设备发送事务时会对每个TLP从其账户中消费的信用数进行计数。发送PCIe的设备在其所消费的信用数还没有超过其信用限制时传输TLP。当接收设备完成了对来自其缓存的TLP的处理时,接收设备给发送设备发送信用返还的通知,这会使信用限制增加所恢复的量。当PCIe数据分组按这种方式通过SAS连接来隧穿时,DLLP通过中间扩展器来传递,使得PCIe/SAS聚合器352和PCIe/SAS互通启动器(将在下文更详细地说明)能够在SAS连接期间直接交换DLLP帧。
[0042]因为PCIe业务被分组化,所以它允许多个PCIe目标设备111共用单个物理SAS连接。并且,如此,PCIe业务正在从PCIe/SAS聚合器352到扩展器连接管理器354和扩展器连接路由器355的一个或多个连接请求上传送,以建立服务于所附接的PCIe目标设备111的适当带宽。换言之,在所服务的PCIe目标设备111的数目与所使用的扩展器功能接口的数目之间不存在基本的关系。
[0043]当在多个PCIe目标设备111当中共用多个SAS连接时,单独为每个PCIe目标设备111跟踪TLP序列编号。TLP序列编号被用来确保分组按顺序地传递到它们规定的目的地。在一种实施例中,路径标识符连同TLP序列编号一起包含于待传输穿过SAS域100的TLP准备分组的起始处。例如,在TLP中与TLP序列编号相邻的第一半字节通常被设定为全部为逻辑“O”。第一半字节作为代替能够被用来编码到唯一的PCIe目标设备111的多个不同的路径(例如,16)。作为选择或除此以外,PCIe/SAS聚合器352能够检查TLP报头以识别应用于TLP的特定寻址和路由,由此去除能够共用一组SAS连接的PCIe目标设备111的数目的限制。
[0044]图7是图6的PCIe/SAS扩展器101/103的示例性的PCIe/SAS聚合器352的框图。在本实施例中,PCIe/SAS聚合器352包括扩展器接口 404,它可操作用于处理向PCIe/SAS扩展器101/103的扩展器连接管理器354和扩展器连接路由器355的SAS连接的请求和来自PCIe/SAS扩展器101/103的扩展器连接管理器354和扩展器连接路由器355的SAS连接的请求。一旦SAS连接被建立,一个或多个PCIe分组流就可以通过扩展器接口 101来传递。在这点上,DLLP连接端点301为每个开启的SAS连接都设置有DLLP终端模块403-1 - 4,用于终结经由SAS域100在PCIe/SAS扩展器101/103与PCIe/SAS控制器104之间传输的DLLP分组。如上所述,这些DLLP分组确认端到端的TLP分组,并且管理可用于通过SAS域100的PCIe分组传输的信用。
[0045]PCIe TLP通过DLLP终端模块403-1 - 4移动到PCIe数据分组开关401之内。PCIe数据分组开关401为每个PCIe的Phy/链路(Phy/Link)保持流控制信用信息,并且作出关于是在DLLP终端403-1 - 4与PCIe的Phy/链路之间转发数据分组还是临时缓存由于缺少信用而无法立即传递下去的数据分组的基于信用的判决。当信用变为可用时,PCIe数据分组开关401将存储于PCIe分组缓存402内的TLP转发至PCIe的Phy/链路或DLLP终端403-1 - 4,取决于数据分组的目的地。
[0046]如上所述,当特定的SAS链路的带宽将要为了 PCIe业务而被最大化时,SAS连接可以专用于PCIe业务的持久性用途。否则,可为PCIe目标设备111使用的带宽一般为可在PCIe/SAS聚合器352中获得的信用的函数,该信用一般为PCIe主机系统105的可用的SAS带宽及上游带宽的函数。
[0047]图8是示例性的PCIe/SAS控制器104的框图。PCIe/SAS控制器104可操作用于支持传统的SAS目标设备110和PCIe目标设备111。PCIe/SAS控制器104可操作用于执行下游的PCIe目标设备111的PCIe枚举,以建立与SAS域100附接的PCIe目标设备111的拓扑,由此作为用于PCIe目标设备111的“根复合体”来操作。PCIe/SAS控制器104包括用于根据PCIe协议来管理PCIe控制以及PCIe/SAS连接信用管理的PCIe/SAS互通启动器415。在这点上,PCIe/SAS互通启动器415提供用于支持多个下游的PCIe/SAS扩展器101/103的缓存。例如,由于PCIe协议是无连接协议,数据分组需要缓存于SAS域100内的PCIe连接端点处,以控制并跟踪通过SAS连接的PCIe数据分组传输。PCIe/SAS互通启动器415为来自PCIe主机系统105的数据分组提供缓存,并且管理与正被传输到其目的地PCIe/SAS扩展器101/103的PCIe数据分组关联的信用。
[0048]PCIe/SAS互通启动器415在一定程度上作为非透明的PCIe桥来操作,从而使PCIe主机系统105免受与可通过SAS域100来访问的PCIe/SAS扩展器101/103附接的PCIe目标设备111的连接细节影响。换言之,通过SAS域100朝向/来自各种PCIe目标设备111的连接、路由以及数据分组传输的复杂性被向下推到PCIe/SAS控制器104之内,使得PCIe主机系统105能够将其处理能力用于其他任务。在这点上,PCIe/SAS互通启动器415与SAS端口层414 一起工作,以将数据分组路由至它们的目的地PCIe/SAS扩展器101/103。换言之,SAS端口层414作为开关功能来操作,以如同PCIe/SAS互通启动器415所引导的那样来路由PCIe数据分组。
[0049]PCIe/SAS控制器104还包括SAS传输模块416,用于在与SAS域100中的扩展器(遗留SAS扩展器102或PCIe/SAS扩展器101/103)附接的SAS目标设备110之间路由SAS数据。SAS传输模块416操作用于经由SAS端口层414的开关将传统的SAS通信提供给SAS目标设备110。
[0050]PCIe主机接口 417被以PCIe/SAS控制器104配置,用于提供在SAS域100与PCIe主机系统105的PCIe域之间的通信。例如,“xN” PCIe的Phy/链路418根据PCIe主机系统105的PCIe逻辑互连(例如,xlPhys、x2Phys、x4Phys等)来接收PCIe数据分组。如果那些数据分组是发给SAS目标设备110的,则PCIe主机接口 417将那些数据分组转译成SAS数据,以便通过SAS域100经由SAS传输模块416传输到SAS目标设备110。
[0051]图9是图8的PCIe/SAS控制器104的示例性的PCIe/SAS互通启动器415的框图。PCIe/SAS互通启动器415与SAS端口层控制器451交互,以便为了向PCIe/SAS扩展器101/103传输PCIe的TLP数据分组和从PCIe/SAS扩展器101/103传输PCIe的TLP数据分组而建立SAS连接。PCIe的TLP数据分组被存储于PCIe分组缓存454内,该PCIe分组缓存454受PCIe缓存管理器和主机系统接口 452控制。再次,根据上述实施例,在PCIe数据分组于PCIe主机系统105与PCIe目标设备111之间传输期间PCIe数据分组被缓存于SAS域100中的连接端点处。在这点上,PCIe分组缓存454作为SAS端点302和PCIe端点301的非透明的桥互通点来操作。
[0052]DLLP终端模块453-1 - 4按照与PCIe/SAS聚合器352的DLLP终端模块403类似的方式来终结在PCIe/SAS扩展器101/103与PCIe/SAS控制器104之间传递的DLLP分组。这允许DLLP分组确认TLP分组,并且管理可为通过SAS连接的PCIe分组传输所用的信用。
[0053]为了提供进一步的说明,当PCIe数据分组将要在同PCIe/SAS扩展器101/103附接的PCIe目标设备111与PCIe/SAS控制器104之间传输时,来自需要传输PCIe数据分组的构件的标准的SAS OAF在两个构件之间建立SAS连接。SAS连接是开启的,只要在PCIe数据分组传输中的任一构件具有要发送的或者由SAS协议所另外引导的PCIe数据分组。当构件不再需要传输PCIe数据分组时,该构件发出SAS协议的CLOSE基元。如同STP连接一样,一旦在两个方向上交换了 CLOSE基元,SAS连接就被终结,并随后由参与连接的扩展器101/102/103 拆除。
[0054]为了提高已开启的连接的全双工利用率,连接的一侧可以在发送其CLOSE基元之前等待,直到它在发起SAS连接的连接中接收到来自的构件CLOSE基元之后。作为选择或除此以外,SAS连接的关闭可以通过解译正在SAS连接中于PCIe目标设备111与PCIe/SAS控制器104之间传输的TLP数据分组来执行。这会有助于预测在后续的SAS连接中的带宽要求。但是,持久性的SAS连接能够如同以上所讨论的那样来实现,以为PCIe业务提供必要的带宽。持久性的SAS连接可以使用SAS协议的EXTEND_C0NNECT10N基元及关联的计时器来实现为SPL-3持久性连接的变体。
[0055]在任何情形中,扩展器101/103的PCIe/SAS聚合器352以及PCIe/SAS控制器104的PCIe/SAS互通启动器405都将SAS连接的关闭看作是保持任何PCIe信用、TLP序列编号以及与SAS构建之间的DLLP路径关联的任何其他参数的当前状态的指示。在SAS协议中的显式编码可以被用来实现PTP,并且在SAS域100中标识PTP连接。作为选择,在PCIe/SAS控制器104处的单独的全球广域名称(WffN)可以被用来将PTP连接引导至PCIe/SAS互通启动器405。于是,唯一的WffN在PCIe/SAS扩展器101/103处可以被用来标识多个附接的PCIe目标设备111,并且提示扩展器连接管理器354来完成到PCIe/SAS聚合器352的SAS连接。SAS连接同样可以使用STP来建立,直到接收到OA时,并且DWORD由中间扩展器转发,从而可与遗留扩展器(例如,扩展器102) —起操作。
[0056]一旦通过SAS域100的PTP连接已经被开启,PCIe规则就一般地按照与应用于在SAS域100中的STP数据传输的STP规则类似的方式应用于所有PCIe数据分组传输。例如,当SAS连接为开启时,DWORDS通过中间扩展器来转发,使得PCIe通信可以在SAS连接的端部被精确地呈现。在一种实施例中,SAS连接可以基于PCIe数据分组在PCIe/SAS扩展器101/103和/或PCIe/SAS控制器104内的缓存器电平来关闭。举例来说,如果PCIe/SAS控制器104无法将PCIe数据分组发送到PCIe/SAS扩展器101,因为它缺少信用来这样做(即,因为PCIe分组缓存402没有可用的缓存空间),则PCIe/SAS控制器104可以选择关闭到PCIe/SAS扩展器101的SAS连接。该连接同样可以基于在发送某些预定数量的分组方面的进展或者基于缓存器电平是否变为零来关闭。
[0057]本发明能够采用完全硬件的实施例、完全软件的实施例或者含有硬件及软件两种要素的实施例的形式。在一种实施例中,本发明以软件来实现,该软件包括(但不限于)固件、常驻软件、微代码等。图10示出了其中计算机可读介质506可以提供用于执行本文所公开的任意方法的指令的计算系统500。
[0058]而且,本发明能够采用可从计算机可读介质506中存取的计算机程序产品的形式,该计算机可读介质506提供由计算机或任何指令执行系统使用或者与其结合使用的程序代码。为了本描述的目的,计算机可读介质506能够是能够确实地存储由指令执行系统、装置或设备(包括计算机系统500)使用或者与其结合使用的程序的任何装置。
[0059]介质506能够是任何有形的电子的、磁的、光学的、电磁的、红外的或半导体的系统(或者装置或设备)。计算机可读介质506的实例包括半导体存储器或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括只读型光盘存储器(CD-ROM),读/写型光盘(CD-R/W)和DVD。
[0060]适用于存储和/或执行程序代码的计算系统500能够包括通过系统总线510与存储器508直接或间接耦接的一个或多个处理器502。存储器508能够包括在程序代码的实际执行期间所采用的本地存储器、大容量存储器、以及为至少一些程序代码提供临时存储以便减少代码在执行期间被从大容量存储器中检索的次数的高速缓冲存储器。输入/输出或I/O设备504 (包括但不限于键盘、显示器、指点设备等)能够直接地或者通过介于中间的I/O控制器与系统耦接。网络适配器同样可以与系统耦接,以允许计算系统500通过例如主机系统接口 512与其他数据处理系统耦接,或者通过介于中间的专用或公用网络与远程打印机或存储设备耦接。调制解调器、电缆调制解调器及以太网卡只是当前可获得的多种网络适配器当中的几种。
【权利要求】
1.一种可在串行连接的小型计算机系统接口体系结构中操作的方法,所述方法的特征在于包括: 将PCIe目标设备链接至串行连接的小型计算机系统接口扩展器(201); 将所述扩展器链接至串行连接的小型计算机系统接口控制器(202); 开启所述控制器与所述扩展器(203)之间的串行连接的小型计算机系统接口连接; 在所述连接(204)中的端点处缓存数据分组; 发出要在所述连接(205)中传输的若干数目的所述数据分组;以及经由所述PCIe的协议(206)通过所述连接在所述目标设备与主机系统之间传输所发出的数目的数据分组。
2.根据权利要求1所述的方法,还包括: 将所述扩展器连接至多个PCIe目标设备;以及 将PCIe数据从所述主机系统路由至所述PCIe目标设备。
3.根据权利要求2所述的方法,还包括: 聚合所述多个PCIe目标设备以将所述PCIe目标设备向另一串行连接的小型计算机系统接口扩展器表示为单个PCIe目标设备。
4.根据权利要求1所述的方法,还包括: 在所述扩展器与所述控制器之间交换数据链路层分组。
5.根据权利要求4所述的方法,还包括: 在所述控制器处终结并处理所述数据链路层分组;以及 在所述控制器处经由所述数据链路层分组来执行事务层分组的信用管理。
6.一种数据系统(100),该数据系统的特征在于包括: 串行连接的小型计算机系统接口扩展器(101); 与所述扩展器(111)耦接的PCIe目标设备;以及 与主机系统(105)和所述扩展器通信耦接的串行连接的小型计算机系统接口控制器(104),其中所述控制器可操作用于经由所述串行连接的小型计算机系统接口的协议来开启与所述扩展器间的连接,并且用于经由所述PCIe的协议通过所述连接在所述目标设备与所述主机系统之间传输分组数据。
7.根据权利要求6所述的数据系统,其中: 所述扩展器包括可操作用于连接至多个PCIe目标设备并且将PCIe数据从所述主机系统路由至所述PCIe目标设备的聚合器(352)。
8.根据权利要求7所述的数据系统,其中: 所述聚合器还可操作用于将所述PCIe目标设备向另一串行连接的小型计算机系统接口扩展器表示为单个PCIe目标设备。
9.根据权利要求6所述的数据系统,其中: 所述扩展器包括可操作用于提供串行连接的小型计算机系统接口到另一串行连接的小型计算机系统接口扩展器的聚合器(352)。
10.根据权利要求6所述的数据系统,其中: 所述控制器包括可操作用于与所述扩展器交换数据链路层分组的启动器(415)。
【文档编号】G06F13/40GK104239256SQ201410206877
【公开日】2014年12月24日 申请日期:2014年5月16日 优先权日:2013年6月18日
【发明者】W·W·沃尔赫斯, G·O·派诺奇, W·K·佩蒂, R·拉格哈万, E·萨基 申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1