CN101310262A - 能使多个通信信道独立工作的集成电路 - Google Patents

能使多个通信信道独立工作的集成电路 Download PDF

Info

Publication number
CN101310262A
CN101310262A CNA2006800428802A CN200680042880A CN101310262A CN 101310262 A CN101310262 A CN 101310262A CN A2006800428802 A CNA2006800428802 A CN A2006800428802A CN 200680042880 A CN200680042880 A CN 200680042880A CN 101310262 A CN101310262 A CN 101310262A
Authority
CN
China
Prior art keywords
task
computer system
host computer
circuitry
integrated circuit
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.)
Granted
Application number
CNA2006800428802A
Other languages
English (en)
Other versions
CN101310262B (zh
Inventor
P-L·塞托
G·Y·曹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101310262A publication Critical patent/CN101310262A/zh
Application granted granted Critical
Publication of CN101310262B publication Critical patent/CN101310262B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Channel Selection Circuits, Automatic Tuning Circuits (AREA)
  • Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
  • Transmitters (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

根据一个实施例所述的装置可包括集成电路。该集成电路可包括多个通信信道。该集成电路可以根据至少一种通信协议经由至少一个通信信道与该集成电路外部的至少一个远程节点通信。所述多个通信信道中的每一个可在主机系统和至少一个远程节点之间提供通信路径。该集成电路还可以使各通信信道彼此独立地并独立于主机系统工作。当然,在不偏离该实施例的情况下,可以有很多替换、变动和修改。

Description

能使多个通信信道独立工作的集成电路
技术领域
本发明涉及一种集成电路,其能够使多个通信信道独立工作。
背景技术
在一种传统的数据存储方案中,计算机节点包括主机总线适配器(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
Figure A20068004288000071
Pentium
Figure A20068004288000072
IV处理器。总线122可包括用于传输数据和命令的多种类型总线。例如,总线122遵循可从PCI SpecialInterest Group,Portland Oregon,U.S.A得到的2002年7月22日公布的Peripheral Component Interconnect(PCI)ExpressTM Base SpecificationRevision 1.0(此后称之为“PCI ExpressTM总线”)。总线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级别可以是0级、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。任务指令可包括与特定任务相关联的指令,例如用于为I/O事务(例如数据传输任务)、原语序列任务(即,当通信协议需要时,集成电路的指令用以产生一个或多个原语信号序列)、手控帧任务(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-3X3.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 DraftAmerican National Standard of International Committee For InformationTechnology Standards(INCITS)T10 Technical Committee,ProjectT10/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在每一个信道或与本地端口关联的链路可以包括一个端口任务调度电路。例如,端口任务调度电路0可以经由关联信道与本地端口0关联,端口任务调度电路1可以经由关联信道与本地端口1关联,等等。如果所使用的特定通信协议支持宽端口功能,例如SAS通信协议,则多个信道可形成宽端口,例如宽端口604和606。宽端口可能仅需要多个端口任务调度电路中的一个,而将未使用的端口任务调度电路禁用。例如,宽端口604可使用“端口任务调度电路0”并且可禁用“端口任务调度电路1”、“端口任务调度电路2”和“端口任务调度电路3”。在端口配置期间,未使用的端口任务调度电路可以由主机系统107的固件禁用。
每一个端口任务调度电路可调度每一个远程节点的所有任务,用于随后传输给远程节点。每一个端口任务调度电路并不是必需要调度从远程节点接收的处于“帧接收状态”的任务。因此,如果远程节点没有活动任务或者是脱机的,则端口任务调度电路可从任务调度电路暂时剔除特定的远程节点,以改善调度性能。
每一个端口任务调度电路可以充当水平调度器、垂直调度器或本地端口管理器。水平调度器可以选择接下来需要服务哪个远程节点,并且可以记住哪些远程节点具有当前活动连接。水平调度器还可以保持远程节点的连接重试状态并管理连接超时失败管理,其中该远程节点的连接尝试失败了。水平调度器还可以支持连接内的一个或多个远程节点,如果相关通信协议支持这种配置的话,例如SATA端口倍增器、FC结构的FL_端口等。
每一个端口任务调度电路还可以充当垂直调度器。该垂直调度器可以管理对于所有远程节点是活动的任务,所述远程节点可以从关联的本地电压端口进行访问。例如,该垂直调度器可以将新任务插入到关联远程节点的任务列表中。该垂直调度器还可以保持活动任务计数并管理每一个远程节点的队列深度。该垂直调度器还可以管理任何远程任务列表内的任务的执行顺序。该垂直调度器还可以保持远程节点内的多任务列表,例如操作模式任务列表、通信协议特定任务列表和优先权(高、低)任务列表。垂直调度器还可以对任何未完成的任务重新进行调度。响应于未完成的任务种类,该垂直调度器可以将该未完成的任务置于特定任务列表的开始或末端。
每一个端口任务调度电路还可以充当本地端口管理器。该本地端口管理器可以管理端口配置和状态,例如链路到端口的分配情况、可允许的连接数和连接调度公平性等。本地端口管理器还可以执行队列深度管理并与链路层管理电路208互动用以进行连接管理。
宽端口管理和控制电路506可包括X-阶标路由器(X-bar router)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可包括远程节点上下文管理电路1 002、远程启动器索引映射表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中失败的话,则连接管理电路1010还可以管理连接请求重试。
PHY层数据路径1012可提供基本功能,用以执行大多数串行协议接口需要的低级链路层功能。PHY层数据路径1012还可包括自动链路初始化,例如环路初始化、FCAL中的速度协商等。模拟前端电路210A……210N可为通信链路提供物理链路接口。模拟前端电路还可包括检测逻辑,用以自动识别并选择所支持的通信协议,例如SAS、SATA和FC。
图11是根据一个实施例的操作的流程图1100。操作1102可包括:根据通信协议与集成电路外部的至少一个远程节点通信,该集成电路包括多个通信信道。操作1104可包括:使多个通信信道分别彼此独立地并独立于主机系统而工作。
总的来说,在一个实施例中,提供了一种包括集成电路的装置。根据一个实施例的装置可包括集成电路。该集成电路可包括多个通信信道。该集成电路可以根据至少一种通信协议经由至少一个通信信道与集成电路外部的至少一个远程节点通信。所述多个通信信道的每一个可在主机系统和至少一个远程节点之间提供通信路径。该集成电路还可以使每一个通信信道彼此独立地并独立于主机系统工作。
一个系统实施例可包括电路卡,该电路卡包括集成电路。该电路卡可以耦合到主机系统的总线。该集成电路可包括多个通信信道。该集成电路可以根据至少一种通信协议经由至少一个通信信道与集成电路外部的至少一个远程节点通信。所述多个通信信道的每一个可在主机系统和至少一个远程节点之间提供通信路径。该集成电路还可使每一个通信信道彼此独立地并独立于主机系统工作。
有益的是,在这些实施例中,该集成电路可提供增强的通信能力。一个通信信道的任何降低,例如执行一个通信信道的任务的困难,对执行剩余的通信信道的任务不会带来不利的影响。此外,该集成电路可独立于主机系统进行工作,这可进一步提高通信速度。该集成电路还可以为多个通信信道之一执行多个任务之一,同时为多个通信信道中的另一个信道执行多个任务中的另一个任务,以进一步加快通信速度。
本申请中使用的术语和措辞是用来解释说明的,而无限制性意味,并且,使用这些术语和措辞并没有将所显示和描述的特征的任何等同物(或其部分)排除在外的意图,并且可以明白的是,多种修改仍在本发明的保护范围内。也可以有其它修改、变化和替换。因此,权利要求旨在涵盖所有的这些等同物。

Claims (20)

1、一种装置,包括:
集成电路,包括多个通信信道,所述集成电路能够根据至少一种通信协议经由至少一个所述通信信道与所述集成电路外部的至少一个远程节点进行通信,所述多个通信信道中的每一个在主机系统和至少一个所述远程节点之间提供通信路径,所述集成电路还能够使各所述通信信道彼此独立地并独立于所述主机系统工作。
2、如权利要求1所述的装置,其中,如果所述多个通信信道中有一个通信信道出现故障和/或错误情况的话,则所述集成电路能够使所述多个通信信道中的剩余信道工作。
3、如权利要求1所述的装置,其中,所述集成电路包括:
任务管理电路,能够从所述主机系统接收多个任务,所述任务管理电路还能够独立于所述主机系统调度所述多个任务,并且,所述任务调度电路还能够独立于所述主机系统选择任务;
协议引擎电路,能够独立于所述主机系统执行所选择的任务,所述协议引擎电路还能够将所选择的任务的结果报告给所述任务管理电路。
4、如权利要求3所述的装置,其中,所述任务管理电路和所述协议引擎电路是用硬件电路实现的。
5、如权利要求3所述的装置,其中,所述至少一种通信协议包括串行连接小型计算机系统接口(SAS)协议。
6、如权利要求3所述的装置,其中,所述协议引擎电路还能够为所述多个通信信道之一执行所述多个任务之一,同时为所述多个通信信道中的另一个通信信道执行所述多个任务中的另一个任务。
7、一种系统,包括:
电路卡,其包括集成电路,所述电路卡能够耦合到主机系统的总线,所述集成电路包括多个通信信道,所述集成电路能够根据至少一种通信协议经由至少一个所述通信信道与所述集成电路外部的至少一个远程节点通信,所述多个通信信道中的每一个在主机系统和至少一个所述远程节点之间提供通信路径,所述集成电路还能够使各所述通信信道彼此独立地并独立于所述主机系统工作。
8、如权利要求7所述的系统,还包括:
电路板,所述电路板包括所述总线和总线接口插槽,所述电路卡能够耦合到所述总线接口插槽。
9、如权利要求7所述的系统,其中,所述至少一个远程节点包括大容量存储阵列。
10、如权利要求9所述的系统,其中,所述大容量存储器件包括独立磁盘冗余阵列(RAID)。
11、如权利要求7所述的系统,其中,所述集成电路包括:
任务管理电路,能够从所述主机系统接收多个任务,所述任务管理电路还能够独立于所述主机系统调度所述多个任务,并且,所述任务调度电路还能够独立于所述主机系统选择任务;
协议引擎电路,能够独立于所述主机系统执行所选择的任务,所述协议引擎电路还能够将所选择的任务的结果报告给所述任务管理电路。
12、如权利要求11所述的系统,其中,所述任务管理电路和所述协议引擎电路是用硬件电路实现的。
13、一种方法,包括:
根据至少一种通信协议经由至少一个通信信道与至少一个远程节点进行通信,所述多个通信信道中的每一个在主机系统和至少一个所述远程节点之间提供通信路径;
使各所述通信信道彼此独立地并独立于所述主机系统工作。
14、如权利要求13所述的方法,其中,如果所述多个通信信道中有一个遇到故障,则集成电路能够使所述多个通信信道中的剩余信道工作。
15、如权利要求13所述的方法,其中,所述工作还包括:
为所述多个通信信道之一执行多个任务之一,同时为所述多个通信信道中的另一个通信信道执行所述多个任务中的另一个任务。
16、如权利要求13所述的方法,其中,所述集成电路包括:
任务管理电路,能够从所述主机系统接收多个任务,所述任务管理电路还能够独立于所述主机系统调度所述多个任务,并且所述任务调度电路还能够独立于所述主机系统选择任务;
协议引擎电路,能够独立于所述主机系统执行所选择的任务,并且所述协议引擎电路还能够将所选择的任务的结果报告给所述任务管理电路,所述协议引擎电路包括所述多个端口,其中所述任务管理电路和所述协议引擎电路是用硬件电路实现的。
17、如权利要求13所述的方法,其中,所述通信协议包括串行连接小型计算机系统接口(SAS)协议。
18、一种集成电路,包括:
第一个电路模块,用于从主机系统接收多个任务,独立于所述主机系统调度所述多个任务,并选择一个任务,所述电路模块能够独立于所述主机系统工作;
第二个电路模块,其包括多个通信信道,所述第二个电路模块能够经由至少一个所述通信信道执行所选择的任务,以及,使各所述通信信道彼此独立地并独立于所述主机系统工作。
19、如权利要求18所述的集成电路,其中,如果所述多个通信信道中有一个遇到故障,则所述集成电路能够使所述多个通信信道中的剩余信道工作。
20、如权利要求18所述的集成电路,其中,所述第二个电路模块还能够在所述多个通信信道之一上执行多个任务之一,同时在所述多个通信信道中的另一个通信信道上执行所述多个任务中的另一个任务。
CN2006800428802A 2005-12-28 2006-12-11 能使多个通信信道独立工作的集成电路 Expired - Fee Related CN101310262B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/319,855 US7809068B2 (en) 2005-12-28 2005-12-28 Integrated circuit capable of independently operating a plurality of communication channels
US11/319,855 2005-12-28
PCT/US2006/047323 WO2007075328A1 (en) 2005-12-28 2006-12-11 Integrated circuit capable of independently operating a plurality of communication channels

Publications (2)

Publication Number Publication Date
CN101310262A true CN101310262A (zh) 2008-11-19
CN101310262B CN101310262B (zh) 2010-06-09

Family

ID=37831742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800428802A Expired - Fee Related CN101310262B (zh) 2005-12-28 2006-12-11 能使多个通信信道独立工作的集成电路

Country Status (7)

Country Link
US (1) US7809068B2 (zh)
EP (1) EP1966710B1 (zh)
CN (1) CN101310262B (zh)
AT (1) ATE495495T1 (zh)
DE (1) DE602006019640D1 (zh)
TW (1) TWI339796B (zh)
WO (1) WO2007075328A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676605B1 (en) * 2005-04-06 2010-03-09 Teradici Corporation Methods and apparatus for bridging a bus controller
US7908335B1 (en) 2005-04-06 2011-03-15 Teradici Corporation Methods and apparatus for bridging a USB connection
US7675931B1 (en) * 2005-11-08 2010-03-09 Altera Corporation Methods and apparatus for controlling multiple master/slave connections
US7826349B2 (en) * 2006-05-30 2010-11-02 Intel Corporation Connection management mechanism
US8392745B2 (en) * 2010-04-26 2013-03-05 Broadcom Corporation Modular integrated circuit with clock control circuit
US8386688B2 (en) * 2010-04-29 2013-02-26 Broadcom Corporation Modular integrated circuit with common interface
US8345459B2 (en) * 2011-02-10 2013-01-01 Ati Technologies Ulc Architecture to facilitate reuse in multiple applications
US8621113B2 (en) * 2011-05-31 2013-12-31 Micron Technology, Inc. Apparatus including host bus adapter and serial attachment programming compliant device and related methods
US9547472B2 (en) 2013-09-18 2017-01-17 HGST Netherlands B.V. ACK-less protocol for noticing completion of read requests
US9778859B2 (en) 2013-09-18 2017-10-03 Western Digital Technologies, Inc. Doorless protocol having multiple queue read requests in flight

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247671A (en) 1990-02-14 1993-09-21 International Business Machines Corporation Scalable schedules for serial communications controller in data processing systems
US5293486A (en) 1991-06-28 1994-03-08 Digital Equipment Corporation Deterministic method for allocation of a shared resource
US6542951B1 (en) * 1999-08-04 2003-04-01 Gateway, Inc. Information handling system having integrated internal scalable storage system
US7248592B1 (en) * 2002-08-14 2007-07-24 Hewlett-Packard Development Company, L.P. Partitionable data fabric and computing arrangement
US7231581B2 (en) 2003-12-31 2007-06-12 Intel Corporation Communicating using a partial block in a frame
US20050223141A1 (en) 2004-03-31 2005-10-06 Pak-Lung Seto Data flow control in a data storage system
US20060004929A1 (en) * 2004-06-30 2006-01-05 International Business Machines Corporation Method and apparatus for recovering from inefficient behavior of devices on I/O buses
US7272745B2 (en) 2004-06-30 2007-09-18 Intel Corporation Data protection system
US20060004935A1 (en) 2004-06-30 2006-01-05 Pak-Lung Seto Multi-protocol bridge
US7453904B2 (en) 2004-10-29 2008-11-18 Intel Corporation Cut-through communication protocol translation bridge
US7685350B2 (en) 2005-06-24 2010-03-23 Intel Corporation Remote node index mapping mechanism for serial attached storage devices
US8112564B2 (en) 2005-06-28 2012-02-07 Intel Corporation Hard disk drive staggered spin-up mechanism
US20070005850A1 (en) 2005-06-29 2007-01-04 Intel Corporation Port multiplier mapping apparatus, systems, and methods
US7376789B2 (en) 2005-06-29 2008-05-20 Intel Corporation Wide-port context cache apparatus, systems, and methods
US7366817B2 (en) 2005-06-29 2008-04-29 Intel Corporation Frame order processing apparatus, systems, and methods
US7797463B2 (en) 2005-06-30 2010-09-14 Intel Corporation Hardware assisted receive channel frame handling via data offset comparison in SAS SSP wide port applications
US7805543B2 (en) 2005-06-30 2010-09-28 Intel Corporation Hardware oriented host-side native command queuing tag management
US7747788B2 (en) 2005-06-30 2010-06-29 Intel Corporation Hardware oriented target-side native command queuing tag management
US20070011333A1 (en) 2005-06-30 2007-01-11 Victor Lau Automated serial protocol initiator port transport layer retry mechanism
US8135869B2 (en) 2005-06-30 2012-03-13 Intel Corporation Task scheduling to devices with same connection address
US7970953B2 (en) 2005-06-30 2011-06-28 Intel Corporation Serial ATA port addressing
US20070005898A1 (en) 2005-06-30 2007-01-04 William Halleck Method, apparatus and system for task context cache replacement
US20070005833A1 (en) 2005-06-30 2007-01-04 Pak-Lung Seto Transmit buffers in connection-oriented interface
US8149854B2 (en) 2005-06-30 2012-04-03 Intel Corporation Multi-threaded transmit transport engine for storage devices
US8370581B2 (en) 2005-06-30 2013-02-05 Intel Corporation System and method for dynamic data prefetching
US7221531B2 (en) 2005-09-12 2007-05-22 Intel Corporation Staggered spin-up disable mechanism
US7506080B2 (en) 2005-09-16 2009-03-17 Inter Corporation Parallel processing of frame based data transfers
US7516257B2 (en) 2005-09-27 2009-04-07 Intel Corporation Mechanism to handle uncorrectable write data errors
US7620751B2 (en) * 2005-09-27 2009-11-17 Intel Corporation Command scheduling and affiliation management for serial attached storage devices
US7418615B2 (en) 2005-09-27 2008-08-26 Intel Corporation Universal timeout mechanism
US8112507B2 (en) 2005-09-27 2012-02-07 Intel Corporation Remote node list searching mechanism for storage task scheduling
US7415549B2 (en) 2005-09-27 2008-08-19 Intel Corporation DMA completion processing mechanism
US7451255B2 (en) 2005-09-28 2008-11-11 Intel Corporation Hardware port scheduler (PTS) having register to indicate which of plurality of protocol engines PTS is to support
US7664889B2 (en) 2005-09-29 2010-02-16 Intel Corporation DMA descriptor management mechanism
US20070076685A1 (en) 2005-09-30 2007-04-05 Pak-Lung Seto Programmable routing for frame-packet based frame processing
US7676604B2 (en) 2005-11-22 2010-03-09 Intel Corporation Task context direct indexing in a protocol engine
US20070198761A1 (en) 2005-12-28 2007-08-23 Duerk Vicky P Connection management mechanism

Also Published As

Publication number Publication date
EP1966710A1 (en) 2008-09-10
US20070147522A1 (en) 2007-06-28
DE602006019640D1 (de) 2011-02-24
US7809068B2 (en) 2010-10-05
WO2007075328A1 (en) 2007-07-05
ATE495495T1 (de) 2011-01-15
EP1966710B1 (en) 2011-01-12
TWI339796B (en) 2011-04-01
TW200741467A (en) 2007-11-01
CN101310262B (zh) 2010-06-09

Similar Documents

Publication Publication Date Title
CN101310262B (zh) 能使多个通信信道独立工作的集成电路
US7664909B2 (en) Method and apparatus for a shared I/O serial ATA controller
CN101221551B (zh) 用于对称多处理器互连的方法和设备以及多处理器
CN100543709C (zh) 迁移数据页面的方法和装置
EP2126705B1 (en) Serial advanced technology attachment (sata) and serial attached small computer system interface (scsi) (sas) bridging
JP4508612B2 (ja) クラスタ型ストレージシステム及びその管理方法
JP4528551B2 (ja) ストレージシステム
CN101784990B (zh) 向卷管理器中的镜像卷的快速写入操作
CN106598480B (zh) 具有接口控制机制的电子系统及其操作方法
US8332542B2 (en) Communication with input/output system devices
JP5069732B2 (ja) 計算機装置、計算機システム、アダプタ承継方法
US20100088456A1 (en) Storage-sharing bus switch
CN103678201B (zh) 具有逻辑设备能力的pci express切换器
CN101663650B (zh) 用于适配卡故障转移的设备、系统和方法
JP2008537805A (ja) ディスクアレイ内に組み込まれ得る高可用性大容量記憶装置用シェルフにおいて組み合わせて使用するためのストレージシェルフ・ルータおよびパス制御カードの集積回路実装
CN101102305A (zh) 管理网络信息处理的系统和方法
CN103201722A (zh) 非一致存储器访问i/o框架
CN104615572B (zh) 热插拔处理系统及方法
US5146605A (en) Direct control facility for multiprocessor network
JP4441286B2 (ja) ストレージシステム
CN110209606B (zh) 一种基于PCIe的多接口存储设备的控制方法
US7962676B2 (en) Debugging multi-port bridge system conforming to serial advanced technology attachment (SATA) or serial attached small computer system interface (SCSI) (SAS) standards using idle/scrambled dwords
JP2006227856A (ja) アクセス制御装置及びそれに搭載されるインターフェース
CN105009100A (zh) 计算机系统及计算机系统的控制方法
CN106648851A (zh) 一种多控存储中io管理的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100609

Termination date: 20181211