能使多个通信信道独立工作的集成电路的制作方法

文档序号:6569667阅读:124来源:国知局
专利名称:能使多个通信信道独立工作的集成电路的制作方法
技术领域
本发明涉及一种集成电路,其能够使多个通信信道独立工作。
背景技术
在一种传统的数据存储方案中,计算机节点包括主机总线适配器
(HBA)。 HBA包括协议引擎,其根据至少一种通信协议经由一个或多个 通信链路与数据存储系统通信。在传统的系统中,主机系统可包括向HBA 发出一个或多个任务的软件和/或固件。多个任务可以包括经由协议引擎从
主机系统传输到数据存储系统的一个或多个i/o数据传输命令。此外,在传
统的系统中,协议引擎至少很大一部分是用软件和/或固件实现的,因此, 任务是用固件和/或软件来处理的。
以软件和/或固件对任务进行处理需要至少一个嵌入式处理器来执行由 软件和/或固件产生的指令。当利用软件和/或固件处理任务时,传统的协议 引擎需要多次中断,这增加了任务处理的总等待时间,并且还需要用软件 和/或固件经由协议引擎对任务进度进行实时监控。另外,如果协议引擎有 多个信道用于处理由主机系统发出的多个任务,则一个嵌入式处理器无法 使多个通信信道独立工作。因此,如果嵌入式处理器忙于为一个通信信道 处理一个任务,则在剩余通信信道上对剩余任务的处理就会延迟。因此, 在一个通信信道上遇到的任何困难都会对剩余通信信道上的通信产生不利 的影响。
另外,如果软件和/或固件嵌入主机系统中,则这些任务可能会降低主 机处理器和/或芯片组的性能。因此,当协议速度和复杂度增加时,软件和/ 或固件对任务进行的处理可能变到慢得难以进行有效的数据传输,在主机 系统发出涉及经由多个通信信道和关联端口的多个数据传输的多个任务时 尤其如此。


在参考以下详细描述和附图之后,本发明实施例的特征和优点将变得 非常明显,其中相同的附图标记表示相同的部分,其中 图1是示出系统实施例的附图; 图2是详细示出图1的集成电路的附图3是详细示出图2的集成电路中任务管理电路的任务通信电路的一 个示例性实施例的附图4是详细示出图2的集成电路中任务管理电路的任务通信电路的另 一个示例性实施例的附图5是详细示出图2的集成电路中任务管理电路的任务调度电路的附
图6是详细示出图2的集成电路中任务管理电路的任务调度电路中宽
端口电路的附图7是详细示出图2的集成电路中上下文高速缓存管理电路的附图; 图8是详细示出图2的集成电路中协议引擎电路的传输层管理电路的
附图9是详细示出图2的集成电路中数据高速缓存管理电路的附图; 图10是详细示出图2的集成电路中协议引擎电路的链路层管理电路的 附图;图11是示出根据一个实施例可执行的操作的流程图。 虽然说明书是结合举例说明性的实施例进行描述的,但对于本领域普
通技术人员而言,很多替换、修改和变化都是很明显的。据此,所主张的
发明主题应作宽泛解释,其仅由权利要求来加以界定。
具体实施例方式
图1示出了本发明的系统实施例100。系统100 —般可包括主机系统 107、电路卡120和至少一个远程节点104。主机系统107可包括主机处理 器112、总线122、用户接口系统116、芯片组114、系统存储器121和电路 卡插槽130。主机处理器112可包括本领域公知的任何类型的处理器,例如 来自本申请的受让人的商用Intel Pentium IV处理器。总线122可包括用于传输数据和命令的多种类型总线。例如,总线122遵循可从PCI Special Interest Group, Portland Oregon,U.S.A得到的2002年7月22日公布的 Peripheral Component Interconnect (PCI) Express Base Specification Revision 1.0 (此后称之为"PCI Express 总线")。总线122还遵循可以 从前述的PCI Special Interest Group, Portland, Oregon, U.S.A得到的2000年 7月24日的PCI-X Specification Rev. 1.0a (此后称之为"PCI-X总线")。
用户接口 116可包括用户用于输入命令和/或数据并监控系统的多种设 备,例如键盘、指示设备和视频显示器。芯片组114可包括把处理器112、 系统存储器121和用户接口系统116彼此耦合起来并耦合到总线122的主 机桥/集线器系统(未显示出)。芯片组114可包括集成电路芯片,例如从本 发明的受让人所提供的商用集成电路芯片组中选择出来的那些芯片组(例
如,图形存储器和i/o控制器集线器芯片组),但也可以再使用其它集成电
路芯片或可替换地使用其它集成电路芯片。可以将处理器112、系统存储器 121、芯片组114和电路卡插槽130集成到电路板132 (例如系统主板)上。
电路卡120的构造允许将其插入插槽130中。当将电路卡120正确插 入到插槽130中时,连接器134和137彼此保持电耦合及机械耦合。当连 接器134和137如此相互耦合时,电路卡120电耦合到总线122,由此可以 经由总线122和芯片组114与系统存储器121、主机处理器112和/或用户 接口系统116交换数据和/或命令。
电路卡120可包括主机总线适配器(HBA),其可包括至少一个集成电 路140,集成电路140能够在主机系统107和至少一个远程节点104之间启 动通信。电路卡120可以利用多种通信协议经由至少一个通信链路(例如 160a、 160b…160n)与一个或多个远程节点通信。在一个实施例中,远程 节点170可包括扩充装置(expander)。扩充装置170可经由一个或多个额 外的链路162a、 162b、 162c…162n连接一个或多个链路160a、 160b…160n 与远程节点104。当然,电路卡120可以经由链路160a、 160b…160n直接 耦合到远程节点104 (即,不使用扩充装置170),这没有脱离这个实施例。 此夕卜,链路160a、 160b…160n中的一个或多个可以连接到其它远程节点(未 显示出),这也没有脱离这个实施例。
远程节点104可包括例如大容量存储阵列,该大容量存储阵列包括多个大容量存储器件(例如硬盘驱动)104a、 104b、 104c和104d。可替换的 是或另外,远程节点可包括扩展设备、桥接器、另一个主机系统和/或其它 中间设备和/或电路卡120外部的其它设备,这并不脱离该实施例。在至少 一个实施例中,大容量存储阵列可包括例如一个或多个独立磁盘冗余阵列
(RAID)。可以实现的RAID级别可以是O级、1级或大于1级的RAID。 可替换的是或另外, 一个或多个大容量存储器件可包括固态存储器件,例 如闪存驱动、静态随机存取存储器(SRAM)驱动等。
集成电路140可包括能够在主机系统107和远程节点104之间启动通 信以在它们之间交换数据和/或命令的电路。在本申请的任何实施例中使用 的术语"集成电路"可以定义成半导体器件或微电子器件,例如半导体集 成电路芯片。同样,在本申请的任何实施例中使用的术语"电路"和"电 路系统"可包括,例如以下的单个或任意组合硬连线电路、可编程电路、 状态机电路和/或用以存储由可编程电路执行的指令的固件。同样,在本申 请的任何实施例中,电路可以体现为一个或多个集成电路和/或其组成部分。
电路卡120还可以包括存储器138。存储器138可包括以下一种或多种 存储器半导体固件存储器、可编程存储器、非易失性存储器、只读存储 器、电可编程存储器、随机存取存储器、闪存、磁盘存储器和/或光盘存储 器。另外或可替换的是,存储器138可包括其它和/或随后研发的多种计算 机可读存储器。机器可读固件程序指令可存储于存储器138中。这些指令 可以由集成电路140存取并执行。当由集成电路140执行时,这些指令可 使集成电路140执行如本申请描述的由集成 电路140执行的操作。另外, 存储器138和/或其它存储器(未显示出)可以存储与集成电路140的操作 相关联的数据,下文将对此做出详细描述。
可替换的是,在不脱离该实施例的情况下,电路卡120的操作电路可 包括在其它结构、系统和/或器件中。这些其它结构、系统和/或器件可以例 如包括在主机系统107的主板132中并耦合到总线122。因此,例如,本申 请描述的与集成电路140相关联的操作电路可以包括在芯片组114中。可 替换的是,本申请描述的与集成电路140相关联的操作电路可包括在远程 节点140的存储阵列中。当然,本申请描述的与集成电路140相关联的操 作电路还可以包括在多于一个的集成电路中,这并不脱离该实施例。主机系统107可以产生一个或多个任务150A、 150B……150N,并把这 些任务传送给(电路卡120的)IC 140以供执行。任务150A、 150B……或 150N可包括,例如由主机系统107产生的数据传输、控制和/或管理指令。 例如,任务150A、 150B 或150N可以包括一个或多个I/O指令,以用
于从远程节点104的一个或多个器件读取数据和/或将数据写入远程节点 104的一个或多个器件。因此,可为主机系统107配置软件和/或驱动器(可 以在例如主机处理器112上执行),以用于产生一个或多个任务。
一个任务(例如任务150A)可包括任务指令152A和上下文信息154A。 任务指令可包括与特定任务相关联的指令,例如用于为1/0事务(例如数据 传输任务)、原语序列任务(即,当通信协议需要时,集成电路的指令用以 产生一个或多个原语信号序列)、手控帧任务(manual frame task)等启动与 一个或多个远程节点进行通信的指令。
上下文信息154A可包括例如调度上下文信息(其可包括例如本地端口 号、远程节点号、优先级信息等)、任务上下文(其可包括例如i/o操作的 传输大小、数据缓冲指针、协议类型等)和/或远程节点上下文(其可包括 例如远程节点端口地址、远程节点支持的通信协议、远程节点端口宽度、 每一端口的远程节点队列深度、连接速率信息等)。
集成电路140可包括多个通信信道。每一个信道可以由相应的协议引 擎电路144a、 144b 144n (图1中缩写为PEC)来定义。集成电路140
还可包括任务管理电路142 (图1中缩写为TMC)。由相应的协议引擎电路 144a、 144b……144n定义的每一个信道可以根据多种通信协议中的至少一 种通信协议与至少一个远程节点104通信。例如,如果光纤信道(FC)协 议由协议引擎电路144用于与远程节点104交换数据和/或命令,则其符合 在"ANSI Standard Fibre Channel Physical and Signaling Interface-3 X3.303:1998 Specification"中描述的接口/协议或与该接口/协议兼容。可替 换的是或另外,如果串行ATA (SATA)协议由协议引擎电路144用于与远 程节点104交换数据和域命令,则其符合或可兼容于由串行ATA工作组在 2003年1月7日公布的"Serial ATA: High Speed Serialized AT Attachment"修 订版1.0a中描述的协议和/或由串行ATA工作组在2004年8月27日公布的 "Serial ATA II: Extensions to Serial ATA 1.0a"修订版1,2中描述的协议和/或早期和/或随后公布的SATA标准的版本。
进一步可替换的是或另外,如果串行连接小型计算机系统接口 (SAS) 协议由协议引擎电路144用于与远程节点104交换数据和/或命令,则其符 合或兼容于由美国国家标准学会在2003年9月18日公布的Working Draft American National Standard of International Committee For Information Technology Standards (INCITS) T10 Technical Committee, Project Tl0/1562-D, "Information Technology画Serial Attached SCSI - 1.1 ,"修订版1 中描述的协议(此后称为"SAS标准")和/或早期和/或随后公布的SAS标 准版本。SAS通信协议可包括一个或多个通信传输协议,例如串行高级技 术连接(ATA)隧道协议(STP)和串行小型计算机系统接口 (SCSI)协议 (SSP)。当然,协议引擎电路144也可以利用其它通信协议进行通信,这 并不脱离该实施例。
在这个实施例中,每一个通信信道144a、 144b 144n可以是两点之
间的虚拟链路和/或物理链路。因此,例如,每一个通信信道144a、 144b…… 144n可以在主机系统107和一个或多个远程节点(例如远程节点170和/或 104)之间提供通信路径。如下文将详细描述的那样,每一个通信信道可包 括一个端口 (例如一个或多个链路160a、 160b 160n可耦合到该端口)。
根据特定的通信协议, 一个端口可包括多个链路(宽端口)或单个链路(窄 端口)。例如,在SAS通信协议中,可以将多个链路分配给一个端口,从而 定义宽端口。在本申请描述的至少一个实施例中,各通信信道144a、 144b……144n可以彼此独立工作,并独立于该主机系统107工作。因此, 当发生故障和/或错误情况时,所述通信信道的一个或多个信道并不降低其 它信道的性能。另外,由于独立于主机系统107而工作,所以每一个通信 信道可以增强数据传输能力。
任务管理电路142可以从主机系统107接收一个或多个任务150A、 150B……150N。任务管理电路142可以独立于主机系统107执行多个任务。 例如,任务管理电路142可以将多个任务排队,发现适当的协议引擎电路 144a、 144b……144n以处理特定任务,并将一个或多个任务传送给一个或 多个协议引擎电路144a、 144b……144n。任务管理电路142可调度多个任 务以供执行、在多个所调度的任务中选择一个任务用于执行,并且在通过协议引擎电路144执行任务之后,将任务状态报告给在主机系统107上执 行的软件/驱动器。
协议引擎电路144可以执行由任务管理电路142调度的一个或多个任 务,并将任务状态传送给任务管理电路142。因此,在本申请描述的至少一 个实施例中,集成电路140可以调度多个任务、选择至少一个任务用于执 行、执行任务并将所选择的任务的状态独立报告给主机系统107上的软件/ 驱动器。在至少一个实施例中,任务管理电路142和协议引擎电路144可 以用一个或多个专用硬件电路和/或状态机电路来实现,只要能执行本申请 描述的操作即可。
当集成电路140从主机系统107接收到要向远程节点104传输数据或 从远程节点104接收数据的任务时,任务管理电路142和协议引擎电路144 可沿着主机系统107和远程节点104之间的多个通信信道留驻。因此,相 比软件和/或固件实现方式而言,以专用硬件电路和/或状态机电路实现的任 务管理电路142和协议引擎电路144具有增强的数据传输能力以及增强的 '性能,因为主机处理器112或嵌入式处理器不涉及执行指令。当然,这里 也可以预期到用软件和/或固件实现的任务管理电路142和/或协议引擎电路 144和/或其中的部分,这并不脱离该实施例。任务管理电路142和协议引 擎电路144的操作将在下文做详细描述。
图2是详细示出图1的实施例的集成电路140的附图200。在图2中, 为了清楚器件,省略了图1中描述的系统100的某些部分(例如电路板132、 电路卡120和远程节点104),但需要理解的是,图2与图1的相同部分可 以用与图1中描述的实施例一致的方式来实现,或可替换的是,用其它系 统实现方案来实现,这并不脱离该实施例。例如,图2中描述的集成电路 140可包括片上集成系统(SoC)和/或片上RAID (ROC)和/或协议桥和/ 或外部存储控制器,所述部件的每一个可包括图1中提及的元件和/或其它 元件和/或另外的元件,例如,如在其它系统实施例中使用的元件。
在这个实施例中,任务管理电路142可包括任务通信电路202和任务 调度电路204。在这个实施例中,协议引擎电路一般用附图标记144来描述, 并可包括传输层管理电路206和链路层管理电路208。在一个实施例中,每 一个通信信道可以定义成传输层/链路层对。集成电路140还可包括模拟前端(AFE)电路210、上下文高速缓存管理电路212和数据高速缓存管理电 路220。在一个实施例中,集成电路140还可包括上下文高速缓存管理电路 212、调度器上下文存储器214、任务上下文高速缓存216和远程节点上下 文高速缓存218。任务通信电路202可以耦合到后端接口总线226。 一般而言,任务通信 电路202可以充当主机系统107的软件/驱动器和集成电路140的剩余部分 之间的通信接口。任务通信电路202可以从主机系统107接收任务并将任 务状态传递给主机系统107的软件/驱动器。任务通信电路202可以与上下 文高速缓存管理电路212通信,上下文高速缓存管理电路212可将来自多 种任务的上下文信息存储在不同的存储器位置中,例如调度器上下文存储 器214、任务上下文高速缓存216和远程节点上下文高速缓存218。任务通信电路202可以使用本地和/或远程任务工作队列和本地和/或远 程状态队列。任务工作队列可以存储从主机系统107发出的多个任务的任 务指令。实质上,任务工作队列为等待由协议引擎电路144进行处理的一 个或多个任务提供存储位置。状态队列可存储与特定任务的状态相关联的 数据。因此,例如, 一个任务的状态(例如任务的完成、正在进行中和/或 故障状态)可以存储于该状态队列中,然后可将该状态报告给主机系统107。 任务通信电路202可以工作在主模式或从模式下。主模式和从模式之间的 主要差别在于任务工作队列和状态队列所处的位置。图3示出了图2的任务通信电路202的主模式实施例。在主模式下, 可以将任务工作队列和状态队列存储于任务通信电路202a和协议引擎电路 144外部。图3的任务通信电路202a可包括任务和状态队列管理电路302 以及任务派遣电路(task dispatcher circuit) 304。任务和状态队列管理电路 302可管理任务工作队列和状态队列,以便从任务工作队列取得任务信息, 并将状态报告给状态工作队列。各通信信道的主模式任务通信电路202a可 以一样,例如在一个实施例中,对于与8个外部端口关联的8通信信道可 以有8个任务通信电路202a。任务派遣电路304可以将任务发送给任务调度电路204的本地适当端 口。因此,对于相同的功能而言,主机系统107的固件/驱动器仅需要产生 一个任务给任务工作队列,或从状态工作队列取回状态信息,而不管将多少或哪些本地端口分配给该功能或虚拟映射到该功能。基于固件在发任务时给出的本地端口数,任务派遣电路304可将任务发送给适当的本地端口 。 任务派遣电路304还可基于任务上下文索引或远程节点索引,将提供给任 务通信电路202或任务通信电路202取得的任务的上下文信息解析到适当 的上下文存储器中,例如将调度器上下文解析到调度器上下文存储器214 中,将任务上下文解析到任务上下文存储器216中,以及将远程节点上下 文解析到远程节点上下文存储器218中。三个上下文存储器214、 216和218 的上下文缓冲管理工作可以由上下文高速缓存管理电路212进行管理。因为在主模式实施例中任务工作队列和状态队列可以放置于协议引擎 电路144外部,因此协议引擎电路144可监控二者队列的状态,并可以通 过主机系统107的软件/驱动器得到通知,以从任务工作队列取得主机系统 107分配的任务,并将任务完成状态信息或协议引擎状态信息发送给状态队 列。任务工作状态和状态队列的位置可以由主机系统107的固件/驱动器进 行初始化。如果主机系统107的固件/驱动器发布外部任务工作队列中的一 个或多个任务,则其可提供"门铃(doorbell)"信号给任务和状态队列管理 电路302,以将此情形通知给任务和状态队列管理电路302,从而开始调度 及处理该任务。图4示出了图2中任务通信电路202的从模式实施例。在从模式下, 任务工作队列/控制电路402以及状态队列/控制电路404可以位于任务通信 电路202b的本地。任务通信电路202b的从模式实施例还可包括任务派遣 电路304,其与图3中主模式实施例的任务派遣电路相同,因此,为了清楚 起见,这里不再赘述。在从模式实施例中,主机系统107的固件/驱动器可将任务分配给本地 任务工作队列402,并从本地状态队列404中取回状态信息。相比主模式, 主机系统107的固件/驱动器负责监控从模式下的状态队列。主模式或从模 式实施例可以根据具体的实施方式和使用模型需求来选择。图5详细示出了图2的任务调度电路204的实施例。一般而言,任务 调度电路204发现需要执行的任务,并将该任务分配给协议引擎电路144 的可用任务执行资源。任务调度电路204可包括多个调度器宽端口组 502A……502N。每一个调度器宽端口组电路(例如调度器宽端口组502A电路)可包括端口任务调度电路504和宽端口管理及控制电路506。端口任 务调度电路504可执行所有调度并分配任务给协议引擎电路144的可用资 源。宽端口管理及控制电路506可以将所有可用链路连接到本地端口。任 务和事件超时管理电路508可监控在一个或多个端口任务调度电路上活动 的所有任务以及具有入站状态(inbound status)的所有任务。任务和事件超 时管理电路508还可以监控由传输层管理电路206或链路层管理电路208 产生的所有超时事件。图6详细示出了图5的调度宽端口组电路502A。端口任务调度电路504 在每一个信道或与本地端口关联的链路可以包括一个端口任务调度电路。 例如,端口任务调度电路O可以经由关联信道与本地端口 O关联,端口任 务调度电路1可以经由关联信道与本地端口 1关联,等等。如果所使用的 特定通信协议支持宽端口功能,例如SAS通信协议,则多个信道可形成宽 端口,例如宽端口 604和606。宽端口可能仅需要多个端口任务调度电路中 的一个,而将未使用的端口任务调度电路禁用。例如,宽端口 604可使用 "端口任务调度电路0"并且可禁用"端口任务调度电路l"、"端口任务调 度电路2"和"端口任务调度电路3"。在端口配置期间,未使用的端口任 务调度电路可以由主机系统107的固件禁用。每一个端口任务调度电路可调度每一个远程节点的所有任务,用于随后传输给远程节点。每一个端口任务调度电路并不是必需要调度从远程节 点接收的处于"帧接收状态"的任务。因此,如果远程节点没有活动任务 或者是脱机的,则端口任务调度电路可从任务调度电路暂时剔除特定的远程节点,以改善调度性能。每一个端口任务调度电路可以充当水平调度器、垂直调度器或本地端口管理器。水平调度器可以选择接下来需要服务哪个远程节点,并且可以 记住哪些远程节点具有当前活动连接。水平调度器还可以保持远程节点的 连接重试状态并管理连接超时失败管理,其中该远程节点的连接尝试失败 了。水平调度器还可以支持连接内的一个或多个远程节点,如果相关通信 协议支持这种配置的话,例如SATA端口倍增器、FC结构的FL一端口等。每一个端口任务调度电路还可以充当垂直调度器。该垂直调度器可以 管理对于所有远程节点是活动的任务,所述远程节点可以从关联的本地电压端口进行访问。例如,该垂直调度器可以将新任务插入到关联远程节点 的任务列表中。该垂直调度器还可以保持活动任务计数并管理每一个远程 节点的队列深度。该垂直调度器还可以管理任何远程任务列表内的任务的 执行顺序。该垂直调度器还可以保持远程节点内的多任务列表,例如操作 模式任务列表、通信协议特定任务列表和优先权(高、低)任务列表。垂 直调度器还可以对任何未完成的任务重新进行调度。响应于未完成的任务 种类,该垂直调度器可以将该未完成的任务置于特定任务列表的开始或末 端。每一个端口任务调度电路还可以充当本地端口管理器。该本地端口管 理器可以管理端口配置和状态,例如链路到端口的分配情况、可允许的连 接数和连接调度公平性等。本地端口管理器还可以执行队列深度管理并与链路层管理电路208互动用以进行连接管理。宽端口管理和控制电路506可包括X-阶标路由器(X-barrouter) 602, 其包括X-阶标路由逻辑。当X-阶标路由逻辑初始化协议引擎电路144并配 置任何硬件端口映射时,其可由主机系统107的固件/驱动器进行配置。在 宽端口配置协议已完成(例如,交换SAS通信协议中的身份帧)之后,固 件也可将传输层管理电路206/链路层管理电路208映射/路由到关联的端口 任务调度电路。同样,可以禁用任何未使用的端口任务调度电路。图7详细示出了图2中集成电路140的上下文高速缓存管理电路212。 一般而言,上下文高速缓存管理电路212可以将上下文存储到调度器上下 文存储器214、任务上下文高速缓存216和远程节点上下文高速缓存218中, 以及,提供从调度器上下文存储器214、任务上下文高速缓存216和远程节 点上下文高速缓存218中提供上下文。在需要时,上下文高速缓存管理电 路212可以将上下文提供给任务调度电路204、传输层管理电路206和链路 层管理电路208。上下文高速缓存管理电路212可高速缓存上下文并从外部 存储器预先取得上下文,以便为任务调度电路204、传输层管理电路206和 链路层管理电路208使用做好准备。上下文高速缓存管理电路212还可执 行上下文锁定、上下文解锁、预先取得和调度要使用的上下文。上下文高 速缓存管理电路212还可执行任务上下文索引到高速缓存上下文地址的映 射/转换。每一个上下文存储器214、 216和218的大小可以根据实施方案而改变。上下文高速缓存管理电路212可包括内部总线708,内部总线708耦合 到任务上下文高速缓存管理电路704、远程节点上下文高速缓存管理电路 706和调度上下文管理电路702。任务上下文高速缓存管理电路704可管理 任务上下文高速缓存并把所请求的任务上下文提供给传输层管理电路206。 远程节点上下文高速缓存管理电路706可管理远程节点上下文高速缓存, 并把所请求的远程节点上下文提供给链路层管理电路208。调度上下文管理 电路702以虚线方框示出,因为其也可以位于任务调度电路204内。调度 上下文管理电路702可以将下一个任务上下文提供给具有活动连接的传输 层管理电路206和接下来选择的待服务的远程节点。图8详细示出了图2的集成电路中协议引擎电路的传输层管理电路 206。 一般而言,传输层管理电路206可执行由任务调度电路204分配的任 务。根据上层映射通信协议,传输层管理电路206可将一个任务分成或分 解为多个控制和/或数据出站帧或包。传输层管理电路206还可以处理上层 映射通信协议指定的入站帧或包,并将其重组。如果协议支持的话,传输 层管理电路206还可能需要与其它传输层电路通信用于进行宽端口管理。 此外,传输层电路206可以执行数据传输命令处理。传输层管理电路206可包括宽端口接口管理电路802A和关联的宽端口 传输层任务控制器组804A。宽端口传输层控制器组可包括多个传输层(TL) 任务控制器806A……806N。宽端口接口管理电路802A可提供通信控制路 径,以用于在传输层(TL)任务控制器806A……806N和关联的端口任务 调度器之间路由控制、状态和/或数据路径信息。宽端口传输层任务控制器组804A可包括由关联的宽端口可支持的最 大数目的协议引擎。其可支持该组内的一个或多个端口。传输层(TL)任 务控制器806A……806N可以是执行端口任务调度器分配的任务的传输层 引擎,如由上层映射协议所定义的那样。宽端口传输层任务控制器组804A 也可以支持如由特定通信协议支持的传输层重试电路(未显示出)。传输层 重试电路可执行由特定通信协议例如SAS定义的重试功能,并且还可以记 住在重试期间要使用的上下文快照。宽端口传输层任务控制器组804A还可 以支持信用证(credit)(传输和接收)管理电路(未显示出)。该信任管理电路可管理每一个传输层任务控制器处的入站和出站信道的信用证。后端直接存储器访问(DMA)控制器808可将IC上的数据移到存储器 中和将数据从存储器移到IC上。对于高度流水线的架构,在链路上待处理 的任务可能不同于在后端待处理的任务。因此,后端DMA控制器808可处 理在传输和接收帧缓冲区之间到后端接口的数据移动。DMA控制器808可 以管理上下文部分,并与前端传输层任务控制器通信。数据域转换管理器810可在多个域之间自动转换逻辑块寻址(LBA) 信息,而无需主机系统107的固件/驱动器介入。数据域转换管理器810使 得协议引擎电路144能够支持不同的RAID级别和量虚拟化,例如逻辑单 元号(LUN)虚拟化或LBA块级别虚拟化。图9详细示出了图2的数据缓存管理单元220。数据高速缓存管理单元 220可包括数据高速缓存(LBA/域)转换控制电路902和地址及逻辑块寻 址(LBA)转换表906。 一般而言,数据高速缓存管理单元220支持数据高 速缓存,以改善数据传输性能。数据高速缓存管理单元220可将LBA值转 换为关联LBA数据的高速缓存地址。数据高速缓存转换控制电路902可对 数据高速缓存缓冲区地址转换控制执行LBA。表906可以是存储器区域, 用以存储LBA和地址映射信息。图10详细示出了图2中集成电路140的协议引擎电路144的链路层管 理电路208。数据链路层管理电路208可包括远程节点上下文管理电路 1002、远程启动器索引映射表1004、多个PHY层宽端口组1006A…1006N 和关联的模拟前端(AFE)电路210A…210N。远程节点上下文管理电路1002 可管理在连接请求和连接仲裁期间对远程节点上下文的访问。远程节点上 下文管理电路1002还可管理远程节点上下文的更新。远程启动器索引映射表1004可用于将启动器地址映射成用于寻址远程 节点上下文的本地上下文索引。其它实施方案可以不使用远程启动器索引 映射表1004,因为它们不需要启动器索引转换,例如FCAL地址。PHY层宽端口组1006A可包括如宽端口传输层任务控制器组所需的多 个PHY层控制器。PHY层宽端口组1006A可包括连接管理电路1010和PHY 层数据路径1012。根据传输层管理电路206的请求,连接管理器1010可与 适当的远程节点建立连接。响应于通信协议需求,例如SCSI模式页指定的链路闲置超时,连接管理电路1010可管理自动终结连接。连接管理电路1010 还可以在由适用的通信协议(例如SAS)定义的入站或出站连接请求之间 进行仲裁。如果连接请求在一些通信协议例如SAS中失败的话,则连接管 理电路IOIO还可以管理连接请求重试。PHY层数据路径1012可提供基本功能,用以执行大多数串行协议接口 需要的低级链路层功能。PHY层数据路径1012还可包括自动链路初始化, 例如环路初始化、FCAL中的速度协商等。模拟前端电路210A……210N可 为通信链路提供物理链路接口。模拟前端电路还可包括检测逻辑,用以自 动识别并选择所支持的通信协议,例如SAS、 SATA和FC。图11是根据一个实施例的操作的流程图1100。操作1102可包括根 据通信协议与集成电路外部的至少一个远程节点通信,该集成电路包括多 个通信信道。操作1104可包括使多个通信信道分别彼此独立地并独立于 主机系统而工作。总的来说,在一个实施例中,提供了一种包括集成电路的装置。根据 一个实施例的装置可包括集成电路。该集成电路可包括多个通信信道。该 集成电路可以根据至少一种通信协议经由至少一个通信信道与集成电路外 部的至少一个远程节点通信。所述多个通信信道的每一个可在主机系统和 至少一个远程节点之间提供通信路径。该集成电路还可以使每一个通信信 道彼此独立地并独立于主机系统工作。一个系统实施例可包括电路卡,该电路卡包括集成电路。该电路卡可 以耦合到主机系统的总线。该集成电路可包括多个通信信道。该集成电路 可以根据至少一种通信协议经由至少一个通信信道与集成电路外部的至少 一个远程节点通信。所述多个通信信道的每一个可在主机系统和至少一个 远程节点之间提供通信路径。该集成电路还可使每一个通信信道彼此独立 地并独立于主机系统工作。有益的是,在这些实施例中,该集成电路可提供增强的通信能力。一 个通信信道的任何降低,例如执行一个通信信道的任务的困难,对执行剩 余的通信信道的任务不会带来不利的影响。此外,该集成电路可独立于主 机系统进行工作,这可进一步提高通信速度。该集成电路还可以为多个通 信信道之一执行多个任务之一,同时为多个通信信道中的另一个信道执行多个任务中的另一个任务,以进一步加快通信速度。
本申请中使用的术语和措辞是用来解释说明的,而无限制性意味,并 且,使用这些术语和措辞并没有将所显示和描述的特征的任何等同物(或 其部分)排除在外的意图,并且可以明白的是,多种修改仍在本发明的保 护范围内。也可以有其它修改、变化和替换。因此,权利要求旨在涵盖所 有的这些等同物。
权利要求
1、一种装置,包括集成电路,包括多个通信信道,所述集成电路能够根据至少一种通信协议经由至少一个所述通信信道与所述集成电路外部的至少一个远程节点进行通信,所述多个通信信道中的每一个在主机系统和至少一个所述远程节点之间提供通信路径,所述集成电路还能够使各所述通信信道彼此独立地并独立于所述主机系统工作。
2、 如权利要求l所述的装置,其中,如果所述多个通信信道中有一个 通信信道出现故障和/或错误情况的话,则所述集成电路能够使所述多个通 信信道中的剩余信道工作。
3、 如权利要求l所述的装置,其中,所述集成电路包括 任务管理电路,能够从所述主机系统接收多个任务,所述任务管理电路还能够独立于所述主机系统调度所述多个任务,并且,所述任务调度电路还能够独立于所述主机系统选择任务;协议引擎电路,能够独立于所述主机系统执行所选择的任务,所述协 议引擎电路还能够将所选择的任务的结果报告给所述任务管理电路。
4、 如权利要求3所述的装置,其中,所述任务管理电路和所述协议引 擎电路是用硬件电路实现的。
5、 如权利要求3所述的装置,其中,所述至少一种通信协议包括串行 连接小型计算机系统接口 (SAS)协议。
6、 如权利要求3所述的装置,其中,所述协议引擎电路还能够为所述 多个通信信道之一执行所述多个任务之一,同时为所述多个通信信道中的 另 一个通信信道执行所述多个任务中的另 一个任务。
7、 一种系统,包括电路卡,其包括集成电路,所述电路卡能够耦合到主机系统的总线, 所述集成电路包括多个通信信道,所述集成电路能够根据至少一种通信协 议经由至少一个所述通信信道与所述集成电路外部的至少一个远程节点通 信,所述多个通信信道中的每一个在主机系统和至少一个所述远程节点之 间提供通信路径,所述集成电路还能够使各所述通信信道彼此独立地并独 立于所述主机系统工作。
8、 如权利要求7所述的系统,还包括电路板,所述电路板包括所述总线和总线接口插槽,所述电路卡能够 耦合到所述总线接口插槽。
9、 如权利要求7所述的系统,其中,所述至少一个远程节点包括大容量存储阵列。
10、 如权利要求9所述的系统,其中,所述大容量存储器件包括独立 磁盘冗余阵列(RAID)。
11、 如权利要求7所述的系统,其中,所述集成电路包括 任务管理电路,能够从所述主机系统接收多个任务,所述任务管理电路还能够独立于所述主机系统调度所述多个任务,并且,所述任务调度电 路还能够独立于所述主机系统选择任务;协议引擎电路,能够独立于所述主机系统执行所选择的任务,所述协 ^C引擎电路还能够将所选择的任务的结果报告给所述任务管理电路。
12、 如权利要求ll所述的系统,其中,所述任务管理电路和所述协议 引擎电路是用硬件电路实现的。
13、 一种方法,包括根据至少一种通信协议经由至少一个通信信道与至少一个远程节点进行通信,所述多个通信信道中的每一个在主机系统和至少一个所述远程节点之间提供通信路径;使各所述通信信道彼此独立地并独立于所述主机系统工作。
14、 如权利要求13所述的方法,其中,如果所述多个通信信道中有一 个遇到故障,则集成电路能够使所述多个通信信道中的剩余信道工作。
15、 如权利要求13所述的方法,其中,所述工作还包括 为所述多个通信信道之一执行多个任务之一,同时为所述多个通信信道中的另一个通信信道执行所述多个任务中的另一个任务。
16、 如权利要求13所述的方法,其中,所述集成电路包括 任务管理电路,能够从所述主机系统接收多个任务,所述任务管理电路还能够独立于所述主机系统调度所述多个任务,并且所述任务调度电路 还能够独立于所述主机系统选择任务;协议引擎电路,能够独立于所述主机系统执行所选择的任务,并且所 述协议引擎电路还能够将所选择的任务的结果报告给所述任务管理电路, 所述协议引擎电路包括所述多个端口 ,其中所述任务管理电路和所述协议 引擎电路是用硬件电路实现的。
17、 如权利要求13所述的方法,其中,所述通信协议包括串行连接小 型计算机系统接口 (SAS)协议。
18、 一种集成电路,包括第一个电路模块,用于从主机系统接收多个任务,独立于所述主机系 统调度所述多个任务,并选择一个任务,所述电路模块能够独立于所述主 机系统工作;第二个电路模块,其包括多个通信信道,所述第二个电路模块能够经 由至少一个所述通信信道执行所选择的任务,以及,使各所述通信信道彼 此独立地并独立于所述主机系统工作。
19、 如权利要求18所述的集成电路,其中,如果所述多个通信信道中 有一个遇到故障,则所述集成电路能够使所述多个通信信道中的剩余信道 工作。
20、 如权利要求18所述的集成电路,其中,所述第二个电路模块还能 够在所述多个通信信道之一上执行多个任务之一,同时在所述多个通信信 道中的另一个通信信道上执行所述多个任务中的另一个任务。
全文摘要
根据一个实施例所述的装置可包括集成电路。该集成电路可包括多个通信信道。该集成电路可以根据至少一种通信协议经由至少一个通信信道与该集成电路外部的至少一个远程节点通信。所述多个通信信道中的每一个可在主机系统和至少一个远程节点之间提供通信路径。该集成电路还可以使各通信信道彼此独立地并独立于主机系统工作。当然,在不偏离该实施例的情况下,可以有很多替换、变动和修改。
文档编号G06F13/38GK101310262SQ200680042880
公开日2008年11月19日 申请日期2006年12月11日 优先权日2005年12月28日
发明者G·Y·曹, P-L·塞托 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1