CN103620571A - 光纤信道输入/输出数据路由系统和方法 - Google Patents
光纤信道输入/输出数据路由系统和方法 Download PDFInfo
- Publication number
- CN103620571A CN103620571A CN201280024327.1A CN201280024327A CN103620571A CN 103620571 A CN103620571 A CN 103620571A CN 201280024327 A CN201280024327 A CN 201280024327A CN 103620571 A CN103620571 A CN 103620571A
- Authority
- CN
- China
- Prior art keywords
- acw
- data
- transmission
- address
- channel
- 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
Links
Images
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/38—Information transfer, e.g. on bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
Abstract
一个实施例包括用于执行一种方法的计算机程序产品,所述方法包括:在主机计算机系统中在信道子系统获得关于I/O操作的信息,产生寻址信息,并将寻址信息从至少一个信道转送到信道子系统与至少一个I/O装置之间的网络接口,所述寻址信息规定本地信道存储器中的位置;经由网络接口将I/O命令消息转送至至少一个I/O装置;响应于I/O命令消息,从网络接口接收数据传输请求,其包括寻址信息;响应于接收到数据传输请求,访问多个地址控制字(ACW)中的一个,每一个ACW规定主机计算机存储器中的位置的地址;以及将数据传输请求路由到ACW中规定的主机存储器位置。
Description
技术领域
本公开总的涉及输入/输出处理,并且具体地涉及在输入/输出处理期间在信道子系统与网络接口之间促进数据的传输。
背景技术
输入/输出(I/O)操作用来在主机计算机系统存储器与I/O处理系统的I/O装置之间传输数据。具体来说,通过执行I/O操作,从存储器向一个或多个I/O装置写入数据,并且从一个或多个I/O装置向存储器读取数据。
为了促进I/O操作的处理,采用I/O处理系统的I/O子系统。I/O子系统耦接到主存储器以及I/O处理系统的I/O装置,并且指引存储器与I/O装置之间的信息流。I/O子系统的一个示例是信道子系统。该信道子系统使用信道路径作为通信介质。每一个信道路径包括耦接到控制单元的信道,所述控制单元进一步耦接到一个或多个I/O装置。
该信道子系统可以采用信道命令字(CCW)以在I/O装置与存储器之间传输数据。CCW规定要执行的命令。对于启动特定I/O操作的命令,CCW指定与操作相关联的存储器区域、一旦完成从或向该区域的传输所要采取的动作以及其他选项。
该信道子系统和I/O装置可以在这样的传输模式下操作:所述传输模式支持一个或多个命令控制块的传输,以在I/O装置与存储器之间传输数据。传输控制子(TCW)规定要执行的一个或多个I/O命令。对于启动特定I/O操作的命令,TCW指定与操作相关联的存储器区域、一旦完成从或向该区域的传输所要采取的动作以及其他选项。
一般而言,主机计算机系统和信道子系统在经由主机总线适配卡(HBA)通过链路连接到I/O装置。HBA耦接到信道,所述信道包括硬件,所述硬件包括信道微处理器和作为对于HBA的主机系统出现的本地信道存储器。信道硬件将HBA与主机计算机及其存储空间隔离。对于该隔离的性能损失在于,所有客户数据流过该隔离硬件,作为通过本地信道存储器的存储和转送。
因此,现有技术中存在解决上述问题的需求。
发明内容
一个实施例包括用于在主机计算机系统中执行输入/输出(I/O)处理操作的计算机程序产品,所述主机计算机系统配置为用于与控制单元的通信。所述计算机程序产品包括可由处理电路读取的实体的存储介质,并存储用于由处理电路执行以进行一方法的指令,所述方法包括:在主机计算机系统中在信道子系统中获得关于I/O操作的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;产生寻址信息,并将寻址信息从至少一个信道转送到信道子系统与至少一个I/O装置之间的网络接口,所述寻址信息规定本地信道存储器中的位置;经由网络接口将I/O命令消息转送至至少一个I/O装置;响应于I/O命令消息,从网络接口接收数据传输请求,其包括寻址信息;响应于接收到数据传输请求,访问多个地址控制字(ACW)中的一个,每一个ACW规定主机计算机存储器中的位置的地址;以及将数据传输请求路由到ACW中规定的主机存储器位置。
另一个实施例包括在主机计算机系统执行输入/输出(I/O)处理操作的方法,所述主机计算机系统配置用于与控制单元的通信,所述方法包括:在主机计算机系统中在信道子系统获得关于I/O操作的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;产生寻址信息,并将寻址信息从至少一个信道转送到信道子系统与至少一个I/O装置之间的网络接口,所述寻址信息规定本地信道存储器中的位置;经由网络接口将I/O命令消息转送至至少一个I/O装置;响应于I/O命令消息,从网络接口接收数据传输请求,其包括寻址信息;响应于接收到数据传输请求,访问多个地址控制字(ACW)中的一个,每一个ACW规定主机计算机存储器中的位置的地址;以及将数据传输请求路由到ACW中规定的主机存储器位置。
另一个实施例包括在主机计算机系统执行输入/输出(I/O)处理操作的设备,所述主机计算机系统配置用于与控制单元的通信,所述主机计算机系统包括信道子系统,所述信道子系统配置以经由网络接口与控制单元通信。所述信道子系统被配置为执行:在主机计算机系统中在信道子系统获得关于I/O操作的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;产生寻址信息,并将寻址信息从至少一个信道转送到信道子系统与至少一个I/O装置之间的网络接口,所述寻址信息规定本地信道存储器中的位置;经由网络接口将I/O命令消息转送至至少一个I/O装置;响应于I/O命令消息,从网络接口接收数据传输请求,其包括寻址信息;响应于接收到数据传输请求,访问多个地址控制字(ACW)中的一个,每一个ACW规定主机计算机存储器中的位置的地址;以及将数据传输请求路由到ACW中规定的主机存储器位置。
从进一步的方面看,本发明提供了用于在主机计算机系统执行输入/输出(I/O)处理操作的计算机程序产品,所述主机计算机系统配置用于与控制单元的通信,所述计算机程序产品包括:计算机可读存储介质,可由处理电路读取,并且存储由处理电路执行以进行用于执行本发明的步骤的方法的指令。
从进一步的方面看,本发明提供了一种计算机程序,存储在计算机可读介质上并可加载到数字计算机的内部存储器,包括软件代码部分,当所述程序在计算机上运行时,用于执行本发明的各步骤。
基于以下附图和详细描述,根据实施例的其他设备、方法和/或计算机程序产品将对于本领域技术人员是或者变得显然。意图全部这样的额外系统、方法和/或计算机产品包括在此描述中,处于本发明的范围内,并且受所附权利要求保护。
附图说明
现在将参照如附图中所示的优选实施例,仅通过示例的方式,来描述本发明,其中:
图1绘示了根据现有技术的I/O处理的一个实施例,并且其中可以实施本发明的优选实施例;
图2绘示了根据本发明的优选实施例的、对于传输模式I/O操作由主机计算机系统产生的示例性控制块;
图3绘示了根据现有技术的、包括连接到信道子系统的主机总线适配卡(HBA)的I/O处理系统的配置;
图4绘示了根据本发明的优选实施例的、包括连接到信道子系统的主机总线适配卡(HBA)的I/O处理系统的一个实施例;
图5绘示了根据本发明的优选实施例的、地址控制结构的地址字段的实施例;
图6绘示了根据本发明的优选实施例的、在传输模式I/O操作期间在信道与控制单元之间发送的各种消息的示例;
图7是绘示了根据本发明的优选实施例的、在I/O操作期间经由信道数据路由器和HBA的处理数据传输的示例性方法的流程图;
图8绘示了根据本发明的优选实施例的、由图7的数据路由器利用的信道本地存储区域的优选实施例;
图9(包括图9A和9B)是绘示了根据本发明的优选实施例的、经过图7的数据路由器的逻辑组件的数据流的框图;
图10绘示了根据本发明的优选实施例的、地址控制字(ACW)的一个实施例;
图11绘示了根据本发明的优选实施例的、图10的ACW的优选实施例;
图12绘示了根据本发明的优选实施例的、图10的ACW的优选实施例;
图13绘示了根据本发明的优选实施例的、图10的ACW的优选实施例;
图14绘示了根据本发明的优选实施例的、图10的ACW的优选实施例;以及
图15绘示了根据本发明的优选实施例的、地址控制结构的地址字段的优选实施例。
参照附图,通过示例的方式,详细描述解释了本发明的优选实施例,以及优点和特征。
具体实施方式
根据本发明的一个方面,促进了输入/输出(I/O)处理。例如,通过在信道子系统的信道中提供数据路由器来促进I/O处理,所述信道子系统允许连接到信道的主机总线适配卡(HBA)在I/O操作期间直接访问主机计算机中的主机存储器,而不需要在信道中存储输入或输出数据。与现有技术信道存储和转送设计(其中,由信道微处理器校验、转化并转送主机计算机与HBA之间的所有事务)相比,该配置提供了信道的I/O开始速率的实质增大(如,以2为系数)和每一个I/O操作的响应时间的减小。
例如,信道配备有数据路由器硬件,其配置为以一个或多个地址控制结构产生并提供HBA,信道通过其向HBA通知分配给HBA的本地信道存储区域。为了允许HBA寻址主机存储器中的多个地址空间,每一个地址控制结构包括关于包含主机存储器地址的关于本地信道存储器中的位置的信息。在一个实施例中,一个或多个地址控制结构包括包含规定对应地址命令字(ACW)的本地信道存储器地址的字段的地址(如,64位PCIe地址)。例如,地址控制结构包括ACW索引字段,其包括对于本地信道存储器中ACW的连续块的索引。
在一个实施例中,提供系统和方法:用于在HBA在I/O操作期间直接寻址主机存储器的时候校验HBA。例如,ACW对于数据路由器提供了用以提供校验已直接访问主机存储器的装置的必要数据的级别的能力以及用以将失败的HBA从主机计算机隔离的能力。例如,地址控制结构和相关联的ACW包括验证和偏移字段,当接收到HBA数据传输请求时,由数据路由器校验该验证和偏移字段。
在一个实施例中,提供系统和方法,用于向HBA与主机存储器之间的存储器请求插入报头(header)或者从HBA与主机存储器之间的存储器请求移除报头。在现有技术系统中,信道可以从本地信道存储器中的HBA读请求接收并存储报头信息,或者响应于HBA写请求产生报头并将报头附加到输出数据。这里描述的优选实施例允许信道(经由数据路由器硬件)将读请求报头存储在本地信道存储器中,同时将输入数据直接存储在主机存储器中,并且还产生并附加报头到经由HBA写请求已经从主机存储器直接访问的输出数据。例如,对于HBA读请求提供读ACW,而对于HBA写请求提供写ACW。读ACW用于存储与输入数据一起接收到的报头信息,而写ACW用于存储用以产生报头并将报头附加到输出数据的报头信息。
在一个实施例中,提供系统和方法,用于将校验字段插入到输出数据,并在I/O操作期间校验在HBA与主机存储器之间的直接数据传输期间输入的数据,以提供用于检测所传输的数据是否已经破坏的部件。在现有技术系统中,对于写(输出)操作,信道以本地信道存储器中存储的客户输出数据设立数据校验字。对于读(输入)操作,信道在本地信道存储器中存储输入数据和数据校验字,并执行数据的校验。数据校验字的示例包括循环冗余校验(CRC)字、纵向冗余校验(LRC)字以及校验和数据。在这里描述的实施例中,信道数据路由器硬件使用ACW以插入和/或校验数据校验字(在这种情况下,从本地信道存储器存储或产生数据校验字,同时在主机存储器与HBA之间直接传输客户数据,即输入或输出数据)。
例如,数据路由器使用发送到HBA的地址(如,分割PCIe地址),以参照包括依据其存储或产生数据校验字的一个或多个位置的ACW。地址中的字段(如,ACW索引字段)用以参照ACW,所述ACW包括数据校验字的初始值或“开始种子”以及用以保存中间数据校验字和状态的位置。在一个实施例中,如果在I/O操作中使用间接数据寻址,则ACW还包括相关联的传输间接数据地址字(TIDAW),其提供主机存储器地址、计数和向哪里插入关于出站(outbound)数据的中间数据校验字以及最终数据校验字的控制信息。对于入站(inbound)数据,如果规定的话,则TIDAW提供主机存储器地址、计数和标志位,所述标志位向硬件通知要存储还是丢弃数据。
在一个实施例中,系统和方法提供数据路由器当无序地接收HBA读请求时确定如何将客户数据存储到主机存储器中的能力。另外,数据路由器具有检测错过或丢失中间数据的能力。输入和输出数据应该以发送其的相同次序存储在主机存储器中,以便正确地计算数据校验字。在一个实施例中,I/O操作的地址控制结构(如,读或写地址控制结构)包括对于发送到信道用于I/O操作的每一个HBA传输请求的增量的偏移字段。对应的ACW包括与地址控制结构所关联的每一个HBA传输请求中的偏移字段进行比较的下一期望的偏移字段。如果这些字段值不匹配,则接收到的HBA请求例如在HBA接收队列的底部重新排队。
在一个实施例中,提供系统和方法,用于终止经由HBA(在其期间,HBA正在直接访问主机存储器)执行的多个I/O操作中之一,而不初始化HBA。在一些情况下,I/O操作将遇到主机存储器异常,并且如果在主机计算机上正在执行多个I/O操作,则期望仅终止那个I/O操作。该优选实施例允许仅终止引起异常的操作,从而不初始化HBA(这可能引起终止经由HBA正在执行的所有I/O操作)。
在该实施例中,用于数据传输的ACW可以包括读丢弃位(Read Discardbit)、写抛弃位(Write Drop bit)或固件读丢弃位(Firmware Read Discard Bit),其指示是否已经发生主机存储器异常。如果所有这些位为零,则数据路由器将HBA请求处理为用于数据传输的主机存储器请求。如果从主机存储器请求返回异常,则将异常原因与设置为1的写抛弃位或读丢弃位一起存储到相关联ACW。例如,如果I/O操作是写,那么HBA被发信号,以中断接收到取回存储异常的I/O操作。在ACW中将写抛弃位设置为1,如果HBA做出了对于那个I/O操作的新请求,则这将使得HBA被发信号以再次中断I/O操作。如果I/O操作是读,那么接收到的关于主机存储器存储请求的存储异常使得ACW中的读丢弃位被设置为1。将抛弃对于从HBA接收到的那个I/O操作的所有接下来的数据。
图1图示I/O处理系统100的示例性优选实施例,I/O处理系统100包括主机计算机系统102,其包括数据存储器和/或处理系统(如,国际商业机器公司(IBM)的大型计算机)。主机计算机系统102包括各种处理、存储和通信元件。在一个实施例中,主机计算机系统102包括一个或多个中央处理单元(CPU)104、诸如主储存器或存储器106和/或扩展储存器或存储器108(统称为“主机存储器”)之类的存储器组件(如,zSeries存储器)。系统102还包括一个或多个操作系统(OS)110,其由一个或多个CPU104执行。例如,一个CPU104可以执行操作系统110和/或z/操作系统110,作为不同的虚拟机情况。CPU104是I/O处理系统100的控制中心。它包含用于指令执行、中断动作、定时功能、初始程序加载和其他机器相关功能的排序和处理设施。CPU104经由连接113(如,双向或单向总线)耦接到主存储器106和/或扩展存储器108。IBM、zSeries和z/OS是国际商业机器公司在全球许多司法管辖区注册的商标。这里使用的许多名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名。Linux是美国、其他国家或二者中的Linus Torvalds的注册商标。
主机计算机系统102还包括信道子系统114,其提供主机计算机系统102与各个I/O装置116之间的通信接口,这可以由一个或多个控制单元118控制。I/O装置包括诸如打印机、磁带单元、直接访问存储装置、显示器、键盘、通信控制器、远程处理装置和基于传感器器材之类的器材。信道子系统114引导I/O装置116与主机计算机系统102之间的信息流。它减轻了CPU104直接与I/O装置116通信的任务,并且允许数据处理与I/O处理同时进行。信道子系统114经由连接120(如,总线)耦接到CPU104、主存储器106和/或扩展存储器108。
在一个实施例中,信道子系统114经由相应“信道路径”122连接到每一个I/O装置116,所述相应“信道路径”122经由连接124(如,串行或并行链路)将信道子系统114连接到每一个控制单元118。控制单元118可以经由多于一个的信道路径122附着于信道子系统114,并且I/O装置116可以附接于多于一个的控制单元118。总的来说,各个I/O装置116可以通过多个信道路径是可访问的。信道路径可以使用各种类型的连接,如并行接口、串行-I/O接口和FICON I/O接口。例如,串行信道路径可以包括在光线信道结构中的经由例如动态开关126连接到控制单元118的一个或多个光纤,并且并行接口可以包括多个电导体。在ANSI标准文件“Fibre Channel-Single-ByteCommand Code Sets Mapping Protocol–4(FC-SB-4),”T11Project2122-D,Revision3.00,2000年9月22日中描述了FICON I/O接口。
在一个实施例中,信道子系统114包括一个或多个单独的信道128,其每一个经由一个或多个信道路径122连接到一个或多个控制单元118和/或I/O装置116。每一个信道128包括处理电子装置,如本地信道微处理器130以及连接到本地信道微处理器130且通过本地信道微处理器130可访问的本地信道存储器132。本地信道存储器132可以包括诸如信道-程序指定、信道-路径标识符、装置编号、装置计数、状态指示以及关于路径可用性以及未决或正在执行的功能的信息之类的信息。
同样位于每一个信道128内的是一个或多个子信道。每一个子信道是位于信道存储器132内的数据结构,其提供关于相关联的I/O装置116及其到信道子系统114的附件的信息。子信道还提供关于I/O操作和涉及相关联的I/O装置116的其他功能的信息。子信道是这样的部件:信道子系统114通过其将关于相关联的I/O装置116的信息提供给CPU104。连接到多个控制单元122或多个I/O装置116的信道128可以具有多个子信道,每一个子信道专用于单个的I/O装置116。在一个实施例中,由信道子系统提供的子信道的数量不依赖于至相关联的I/O装置116的信道路径122的数量。例如,通过替代的信道路径122可访问的装置116仍然由单个子信道表示。
每一个控制单元118提供用以操作并控制一个或多个I/O装置116的逻辑,并通过公共设施的使用,来将每一个I/O装置116的特性适应到由信道128提供的链路接口。公共设施对于I/O操作的执行而提供关于I/O装置116以及控制单元118的状态、在信道路径122之上的数据传输的定时的控制以及I/O装置控制的特定级别的指示。控制单元118可以分离地封装,或者可以与I/O装置、信道子系统或CPU物理地且逻辑地集成。
将I/O操作描述为涉及主机计算机系统102与I/O装置116之间的数据传输的任意操作。如这里所述,I/O操作包括信道子系统114和装置116之间(在一个实施例中,经由控制单元118)的通信,其中将单个命令(如,信道命令字或CCW)、包括多个命令的单个命令消息(如,传输传输命令控制块(TCCB)的传输命令信息单元)或多个链路命令(如,多个CCW)从信道子系统114发送到装置。I/O操作还可以包括由装置116或相关联的控制单元118响应于接收和/或执行命令或关联命令而产生的一个或多个响应消息。
在一个实施例中,通过由OS110产生的、指定与装置116相关联的子信道的I/O指令的执行,以装置116来启动I/O操作。通过将参数发送到请求信道子系统114通过某一信道128在I/O操作中执行各种功能的信道子信道,由CPU104在主机系统中执行这种指令。
例如,CPU104通过将参数传递到请求信道子系统114以与子信道相关联的I/O装置116执行启动功能的目标子信道来执行开始子信道(STARTSUBCHANNEL)。信道子系统114通过使用子信道处的信息(包括在开始子信道指令的执行期间传递的信息)来执行启动功能,以寻找至装置116的可访问信道路径,并且一旦已经选择了信道路径就执行I/O操作。
当由CPU104执行诸如开始子信道指令之类的指令时,信道128开始执行I/O操作。在一个实施例中,信道子系统114在用于信道子系统114与装置116和/或控制单元118之间的通信的光纤信道协议(如,High PerformanceFICON(HPF))之下操作。FICON和HPF及其阶段进一步在“Fibre Channel:Single-Byte Command Code Sets Mapping Protocol–4(FC-SB-4),”T11Project2122-D,Revision3.00,2000年9月22日中描述。
在一个实施例中,开始子信道指令的执行将操作请求块(ORB)的内容传递到信道子系统114。ORB规定信道程序,所述信道程序包括一个或多个命令字(如,下面进一步描述的信道命令字或传输命令字)的地址。存在两种模式的子信道操作。在一个实施例中,主机计算机系统102在命令模式下操作,并且以信道命令字(CCW)的形式规定命令字。在另一个实施例中,主机系统在传输模式下操作,并以传输命令字(TCW)的形式规定命令字。
当安装FCX(光线信道扩展)设施并且作为规定TCW信道程序的开始子信道指令的执行的结果而在子信道处设置启动功能时,子信道可以进入传输模式。子信道仍然处于传输模式,直到在子信道处复位启动功能为止。在所有其他时间,子信道处于命令模式。
在命令模式中,信道执行CCW信道程序,所述CCW信道程序包括单个信道-命令字或顺序执行的信道-命令字序列,其控制特定序列的信道操作。控制单元通过由I/O装置解码、接受和执行CCW命令来执行CCW I/O操作。对于顺序执行而排列的一个或多个CCW形成CCW信道程序并分别执行为一个或多个I/O操作。
光纤信道扩展(FCX)设施是提供由指定传输命令控制块(TCCB)和传输状态块(TSB)的传输控制字(TCW)组成的传输模式信道程序的可选设施。TCCB包括传输命令区域(TCA),其包含一个或多个(如,最多30个)以装置命令字(DCW)的形式的I/O命令的列表。TCW及其TCCB可以规定写或读操作。在一个实施例中,FCX双向数据传输设施可以安装在支持传输模式操作的系统中,如果连接的装置116和控制单元118支持双向数据传输,则所述操作允许主机计算机系统102规定在单一传输模式I/O操作中输入和输出数据二者的传输。当控制单元118识别出双向数据传输时,TCW及其TCCB可以根据装置来规定读和写数据传输二者。
在传输模式中,单个的传输命令字(TCW)规定在单个消息中发送的TCCB而非命令模式中的分离的单个CCW的存储器中的位置(以及一个或多个数据区域的存储器106中的位置)。控制单元118通过解码、接受和执行TCCB和在其中包括的各个DCW来执行传输模式I/O操作。如果ORB规定TCW信道程序,则信道子系统114使用指定的TCW中的信息来将TCCB传输到控制单元118。在将TCCB传输到控制单元118之后,TCCB的内容被信道子系统114忽略,并且仅对于控制单元118和相关联的I/O装置116具有意义。
在示例性实施例中,控制单元118响应于执行信道程序而产生响应消息。控制单元118还可以在有限数量的通信场景下产生响应消息而不执行信道程序,例如以向信道子系统114通知将不执行信道程序。控制单元118可以包括多个元件以支持I/O通信适配卡与I/O装置之间的通信以及支持信道程序执行。例如,除了一个或多个队列、计时器和寄存器来促进通信和状态监控之外,控制单元118可以包括控制逻辑,以解析和处理消息。
图2示出了在OS软件执行将开始子信道消息传递到信道子系统114中的I/O处理器(IOP)用于HPF I/O操作的指令(如,开始子信道指令)之前,通过软件在主机存储器中设置的示例性控制块。这些控制块和I/O处理系统100的一个或多个的以上组件的架构进一步在“z/Architecture Principlesof Operation,”Publication No.SA22-7832-8,9th Edition,2010年8月中描述。
如图2所示,将Start Subchannel消息140传递到信道子系统114,该消息指定子信道142、TCW144和传输状态块(TSB)146。TCW包含TCCB148的主机存储器中的地址、对于I/O操作指定的读数据的位置150和/或对于I/O操作指定的写数据的位置152。例如,TCCB148以及位置150和152可以通过例如传输间接数据地址列表(TIDAL)153来直接寻址或间接寻址。
图3图示在主机系统102、信道子系统114和控制单元118之间的通信链路的现有技术配置的优选实施例。信道128经由信道微处理器130与主机CPU通信,并且被配置为在主机存储器与本地信道存储器132之间传输数据,例如,用于检索TCCB148或TCCB148的组分(component)。网络或链路接口(如,主机总线适配卡(HBA)154)经由例如PCIe总线155连接到信道128。HBA154例如经由控制单元HBA156协调信道128与控制单元118之间的信息流。在该实施例中,HBA154与信道128通信,并且仅对于本地信道存储器132的访问。因此,HBA154与主机计算机和主机存储器隔离。将发送到HBA154或从HBA154发送的数据存储在本地信道存储器132中或从本地信道存储器132取回。利用该隔离进行主机存储器与控制单元118之间传输的数据的错误校验。对于该隔离的性能损失在于,所有客户数据流经该隔离硬件,作为经过本地信道存储器132的存储和转送。
图4图示允许用于错误校验的隔离同时允许HBA154直接访问主机存储器而不需要在信道的本地存储器132中存储输入或输出数据的通信链路的实施例。相比于图3的配置,信道128包括微处理器以及数据路由器160。在一个实施例中,数据路由器160是高性能光纤信道数据路由器(HPF-DR),其支持FC-SB-4(也称为HPF)协议。数据路由器160允许HBA154直接访问主机存储器,而不需要在本地信道存储器132中存储每一I/O操作请求的输入或输出数据(即,客户数据)。在一个实施例中,路由器160包括数据路由器硬件162和本地信道存储区域164,其中对于数据路由器设置状态信息以处理HBA数据传输请求。如这里所述,“HBA数据传输请求”包括请求从主机存储器到控制单元118的输出数据的传输(即,写或取回数据)(如,“HBA写请求”或“HBA取回请求”)或者请求从控制单元118到主机存储器的输入数据的传输(即,读或存储数据)(如,“HBA读请求”或“HBA存储请求”)的从HBA154到信道128的任意通信。另外,在一个实施例中,本地信道存储器132包括分配给HBA154并且可由HBA154访问的区域166(如,在4千兆行之前),其用于处理本地信道请求和操作。
在从主机接收到I/O指令和ORB之后,并且在执行I/O操作并将I/O操作发送到HBA154之前,信道128设置一个或多个地址控制结构以及相关联的地址控制字(ACW),其用以产生对于主机计算机102的主机存储器请求并允许HBA154直接访问主机存储器。ACW和数据控制结构还提供一部件,通过该部件,数据路由器160可以向或从由HBA154发送的HBA数据传输请求附加或存储报头,并且ACW和数据控制结构还提供用于校验HBA请求的错误而不在本地信道存储器132中存储输入或输出数据的部件。
例如,在将开始子信道消息140传递到信道128(如,经由信道子系统114中的I/O处理器)之后,运行固件的信道微处理器130接收开始子信道消息140以便从和向装置116读和/或写数据,并且向和从主机存储器读和/或写数据。信道128使用开始子信道消息140中的信息以取回子信道142。在子信道142中的是,信道固件使用以取回TCW144的主机存储器地址。信道128使用来自开始子信道消息140、子信道142和TCW144的消息以设置各种ACW。每一个ACW是数据路由器160使用以将HBA数据传输请求路由到在TCW144中规定的主机存储器地址的控制块。可以设置多个ACW,包括用于读命令的一个ACW(其包括至少一个用于存储输入数据的主机存储器地址)、用于写命令的一个ACW(其包括至少一个用于输出数据的主机存储器地址)、用于集合I/O命令消息(如包括TCCB148的传输命令信息单元(IU))的ACW以及用于接收和存储状态信息的ACW。
与设置ACW一起,信道128根据TCW144中的信息,对于每一个ACW设置“地址控制结构”,并在向HBA154通知I/O操作之前,通过本地信道存储器132将地址控制结构传递到HBA154(如,经由本地信道存储器HBA工作队列)。将多个地址控制结构传递到HBA154,并且由HBA154使用以向或从主机存储器取回或存储信息。地址控制结构允许HBA154寻址多个地址空间,同时还允许数据路由器硬件校验所存储或所取回的数据的错误。例如,一个地址控制结构用于取回构成命令消息(如,传输命令IU)的信息,一个用于在I/O操作的完成时根据控制单元响应(如,传输状态IU)来存储结束状态,并且多个“数据地址控制结构”可以由HBA154使用以传输输入或输出数据。例如,从装置116向主机存储器传输的读数据的每8兆字节使用一个“读地址控制结构”,并且从主机存储器请求的数据的每8兆字节使用一个“写地址控制结构”。如果I/O操作仅在一个方向中传输数据,则仅需要读或写地址控制结构。
每一个地址控制结构包括发送到HBA154的地址,其由HBA使用以做出对于信道128的请求。该地址由HBA154看作单一地址,但是用于表示(referto)主机存储器中的多个地址空间。示例性地址控制结构均包括64位PCIe地址、数据字节计数、方向位和控制信息。例如,每一个地址控制结构包括要由地址控制结构传输的数据量的数据字节计数以及通知HBA154要传输数据的方向和需要多少地址控制结构来传输数据的控制位。
图5图示示例性地址控制结构170的地址字段172的实施例。在该示例中,地址字段172包括64位PCIe地址,但是不限于此。地址字段172包括控制(CTL)字段174(如,地址172的字节2),其指示是否将HBA请求路由到要由信道128内部处理的本地信道存储器,或者是否经由数据路由器160处理并将HBA请求路由到主机存储器。例如,如果地址字段172包括设置为零的CTL字段174,则数据路由器160将请求路由到本地信道存储区域166。然而,如果CTL字段174设置为所选择的值(如,0x02),则地址172被配置为允许HBA154经由数据路由器硬件寻址主机存储器。在该配置中,将地址172(图5的行3中所示)分割为四个字段:ACW索引字段176(如,字节0和1)、CTL字段174(如,字节2)、验证字段178(如,字节3和4)、偏移字段180(如,字节5-7)。在一个实施例中,ACW索引字段176是本地信道存储区域164中ACW的连续块中的索引,并且由数据路由器硬件使用以定位用于相关联的HBA请求和地址控制结构的ACW。将验证字段178(如,16位字段)设置为对于本地信道存储区域164中限定的每一个ACW的唯一值。
在信道128设置用于I/O操作的ACW和地址控制结构170之后,信道128向HBA154通知待处理的I/O操作,并发送执行I/O操作所需的对应地址控制结构170。
图6图示I/O操作期间在信道128与控制单元118之间发送的各种消息。在信道微处理器130已经以所需的信息设置数据路由器160之后,HBA154取回并存储各种信息单元(IU)。传输命令IU182包括TCCB148和报头信息,并且在信道路径122之上发送到控制单元118。在I/O操作的执行期间,发送包括读传输数据IU184和/或写传输数据IU186的数据IU以发送输入和/或输出数据。在一个实施例中,每一个数据IU根据其大小而可以作为一个或多个帧188发送。帧188是在链路或信道路径上的链路包装(link wrapper)内发送的数据的单元或分组,并且具有取决于链路架构的最大大小。在I/O操作结束时,从控制单元118发送传输状态IU190,其指示操作的传输状态(如,完成或中断)。通常地,传输命令IU182和传输状态IU190均以一帧在链路上发送。在一个实施例中,IU的每一帧要求来自HBA154的至少一个HBA请求(如,PCIe请求)。
在一个实施例中,IU包括位于IU端部或靠近IU端部的一个或多个数据校验字192(如,CRC)。例如,对于传输命令IU182的数据校验字192是从IU端部起的1或2个字。写传输数据IU182可以具有多个中间数据校验字192,每一个校验写传输数据IU182的一部分。传输状态IU190具有对于IU报头的数据校验字192和对于传输状态的数据校验字192。
示出图7、8和9以图示执行I/O操作的方法200的优选实施例。所述方法包括一个或多个阶段201-206。在一个实施例中,所述方法包括以所述次序执行所有阶段201-206。然而,可以省略特定阶段,可以添加阶段,或者改变各阶段的次序。
在第一阶段201,信道128从主机CPU104接收指令消息140和ORB,并取回子信道142,然后TCW以及其他所需数据。
在第二阶段202,信道128或数据路由器160产生地址控制结构170和对应的ACW210(图8中所示)。示例性控制结构170和ACW210(下面参照图10-15进一步描述)包括与传输命令IU182对应的传输命令ACW和传输命令地址控制结构、与一个或多个读传输数据IU184或帧对应的传输读数据ACW和一个或多个传输读数据地址控制结构、与一个或多个写传输数据IU186或帧对应的传输写数据ACW和一个或多个传输写数据地址控制结构、以及与传输状态IU190对应的传输状态ACW和传输结束状态地址控制结构。数据路由器160将地址控制结构170发送到HBA154。在本地信道存储区域164中集合ACW210的列表212。
图8图示数据路由器160的配置,其包括本地地址存储区域164中存储的ACW210。在一个实施例中,存储区域164是位于本地信道存储器132中所选边界(如,1兆兆字节(TB)边界)以上的HBA地址空间,所述本地信道存储器132容纳用以寻址主机存储器的ACW210的列表212。在一个实施例中,列表212是连续ACW的列表。ACW起点寄存器214是ACW210的列表212的起始地址。将来自数据控制结构中的ACW索引字段176的ACW索引176添加到ACW起点214,以产生本地地址,其中对应的ACW位于本地信道存储区域164中。ACW界限寄存器216是ACW210的列表212的结束地址。当将ACW索引176添加到ACW起点以取回ACW时,结果不能比ACW界限减去ACW大小更大。
在第三阶段203中,在HBA154处集合传输命令IU182,用于到控制单元118的传输。HBA154使用传输命令地址控制结构以通过向数据路由器160发送HBA取回请求,来初始化从主机存储器的TCCB148的取回。在一个实施例中,尽管可以使用其他协议,但是通过PCI Express(PCIe)协议来控制发送至HBA和从HBA发送的请求。
在第四阶段204,HBA取回请求到达数据路由器160,这由接收逻辑202接收,所述接收逻辑202将从HBA154发送的位转换为数据分组,并且基于每一分组中的HBA地址172由路由逻辑222来路由该HBA取回请求。
例如,将具有指定本地存储区域(如,下面的240)的所有HBA请求路由到信道微处理器224和本地信道存储器166,并作为本地信道存储器请求而内部地处理。在一个实施例中,无论何时PCIe总线处于64位寻址模式且CTL字段174为0x00或者当PCIe操作处于32位模式时,将HBA请求路由到本地信道存储器。这允许HBA154对于HBA154具有访问权限的本地信道村区域具有直接访问。未赋予HBA154对于ACW210所位于的本地信道存储区域164的直接访问权限。
将具有存储区域164中的地址的所有请求(如,240以上)路由到取回阵列队列226或存储阵列队列228,以便由数据路由器160处理。将从接收逻辑220接收到的整个数据分组(报头和数据)保存为这两个阵列的任一个中的项。取回阵列队列226和存储阵列队列228分别位于数据路由器取回硬件230和数据路由器存储硬件232中,其将来自这些队列的HBA请求处理为要发送到主机存储器的主机存储器请求。
在第五阶段205中,处理逻辑234排队并使得控制本地信道存储器164中的信道请求以及队列226和228中的HBA请求优先,并将请求分组处理为主机存储器分组。
处理逻辑234取得HBA请求分组中(来传输命令地址数据控制结构)的HBA地址的ACW索引字段176,以索引到在ACW起点寄存器214开始的ACW的ACW210组的列表,以取回与HBA地址170对应的ACW。例如,处理逻辑234取得ACW索引值,并将其添加到ACW起点寄存器214以产生从其取回ACW的本地信道存储器地址。基于ACW中的存储器地址字段,处理逻辑234产生从发送逻辑236(例如,经由主机存储器接口238)发送到主机存储器的主机存储器请求,其指示从其发送数据或向其存储数据的存储器地址。来自ACW的另外的信息,包括区域ID、密钥值、数据长度,也可以用以产生主机存储器请求。
在该实施例中,ACW的存储器地址字段中的地址是TCCB148的一个或多个位置。如果在ACW中未使能间接数据寻址,则主机存储器地址是整个TCCB148的地址。如果在ACW中使能间接数据寻址,则数据路由器160从主机存储器地址取回传输间接数据地址字(TIDAW),然后使用TIDAW中的地址作为主机存储器地址。
在一个实施例中,如果ACW中的值指示正在使用的间接数据地址(如,图10中所示的HPF-DR控制258位17为0),则规定TIDAW。TIDAW包括地址和计数二者。TIDAW中的TIDAW数据地址字段用以对于TIDAW中规定的数据的字节数,寻址主机存储器位置。示例性TIDAW包括四个字,包括具有标志字段的第一字、规定要以该TIDAW传送的字节数的计数字段、TIDAW数据地址高字和TIDAW数据地址低字。如下标志可以包括在标志字段中:
位0-最后TIDAW:设置为一的该标志位通知数据路由器硬件这是该TIDAL中可以用于该操作的最后TIDAW。如果当前TIDAW标志位0‘最后TIDAW’不是活动的,则当当前TIDAW中的字节计数转换为零且ACW工作计数尚未转换为零时,数据路由器硬件将使用TIDAL中的下一TIDAW继续数据传输,以寻址主机存储器;
位1-读跳过:设置为一的该标志位通知数据路由器硬件每一该TIDAW的字节计数字段,丢弃正从装置接收到的数据。然而,当丢弃数据时,继续计算数据校验字。如果I/O操作是写,则忽略该标志位;
位2-数据传输中断:该位使得数据路由器硬件设置HPF-DR响应字254中的TIDAW格式校验位10,并且当该TIDAW试图由HPF-DR硬件使用时结束I/O操作;
位3-T-TIC:设置为一的该标志位通知数据路由器硬件该TIDAW中的地址不用于数据,而是用于新TIDAL的开始的主机存储器地址,所述新的TIDAL必须从主机存储器取回以获得下一TIDAW以用于该I/O操作;以及
位4-插入填充&&数据校验字:设置为一的该标志位,通知数据路由器硬件,如果不在字边界,则插入填充字节直至下一字边界,并且插入计算出的书校验字的当前值。在已经发送了由该TIDAW项规定的数据的字节计数之后插入填充字节(如果有的话)和数据校验字,并且标志位0(最后TIDAW)不设置为一。然后将当前ACW数据校验字重新补种回ACW中的数据校验字种子。
在第六阶段206,数据路由器160经由主机存储器接收逻辑240接收主机存储器响应,在该实施例中主机存储器响应包括TCCB148。在其他实施例中,取决于主机存储器请求,主机存储器响应可以包括用于写命令的输出数据或用于读命令的状态消息。路由逻辑242将主机存储器响应路由到数据缓冲器和逻辑246。数据缓冲器和逻辑246合并来自传输命令ACW(即,来自IU报头字段)的IU报头信息与响应分组中的TCCB148,所述响应分组可以经由与HBA154接口连接的输出逻辑244返回到HBA154。对于包括多个输出数据请求的I/O操作,数据缓冲器246可以累积来自多个请求的数据,以产生返回到HBA154的完整的响应分组。
如上所述,在I/O操作的执行期间,传输数据IU可以在HBA154与控制单元118之间传送。为了执行写命令,HBA154请求用以集合写传输数据IU186的信息,包括来自主机存储器(其地址由写ACW的存储器地址字段规定)的输出数据和从写ACW获得的IU报头信息。为了执行读命令,HBA将来自读传输数据IU184的输入数据存储到读ACW的存储器地址字段中规定的主机存储器地址,并且将来自读传输数据IU184的IU报头信息存储到读ACW。
例如,HBA154接收读传输数据IU184,并产生被发送到信道128的一个或多个HBA读请求,以将输入数据存储到主机存储器。每一个读请求包括来自读数据地址控制结构的地址字段172。HBA读请求由接收逻辑220接收,并且路由逻辑222将HBA读请求路由到存储阵列队列228。如上所述,地址字段172的ACW索引字段176用以索引到ACW210的列表,并且取回读ACW。读传输数据IU报头信息存储在读数据ACW中,并且将主机存储器读请求发送到主机存储器,以请求在由读数据ACW规定的地址中的输入数据的存储。
在一个实施例中,可以采用多个主机存储器读请求,以存储一个HBA读请求。例如,如果每一个主机存储器读请求是256字节且HBA读请求是2048字节,则采用八个主机存储器请求来存储一个HBA读请求。在该实施例中,主机存储器读响应从主机存储器接口238返回到数据路由器硬件,这将每一个响应与做出的每一个读请求关联。
在另一个示例中,HBA154可以向控制单元118发送写传输数据IU186。在一个实施例中,除非禁止传输准备,否则信道128要求在发送每一个写传输数据IU186之前从控制单元118发送传输准备IU。控制单元118可以通过发送另外的传输准备IU来请求额外的数据,除非已经请求了TCCB148规定的所有数据。
如果禁止传输准备(这允许HBA154在装置116不请求数据IU的情况下将数据的IU发送到装置116),那么HBA154向数据路由器160发起HBA写请求。HBA154使用来自每一个写数据地址控制结构的地址字段172来发送每一个HBA写请求,以开始从主机存储器取回数据。每一个HBA写请求由路由逻辑222接收,所述路由逻辑222将每一个HBA写请求路由到取回阵列队列226。来自地址字段172的ACW索引字段用以从本地信道存储区域164取回写数据ACW。一个或多个主机存储器写请求用以请求输出数据,所述输出数据在主机存储器写响应中从主机存储器接收到,并经由路由逻辑242和数据缓冲器246至HBA154发送到HBA154。如果需要多个主机存储器写响应来处理一个HBA写请求,则如参照上述读请求所述那样处理每一个主机存储器写响应。
在一个实施例中,当装置116通过将传输状态IU190发送到HBA154来结束I/O操作时,HBA154使用传输结束状态地址控制结构来发送HBA存储请求,以开始将结束状态存储到主机存储器。数据路由器160通过使用HBA存储请求来取回传输状态ACW,并将结束状态报头存储在状态ACW的IU报头区域并将主机存储器存储请求发送到主机存储器以将扩展状态存储在状态ACW中规定的地址中。在HBA154已经完成I/O操作之后,HBA154以被路由并被存储在本地信道存储器132中的完成状态而产生HBA请求,并且I/O操作的控制返回到信道128固件。
当HBA将I/O操作返回到信道微处理器固件时,不存在在取回阵列队列中排队的取回请求,这是因为当将请求的数据返回到HBA154时HBA154知道它们何时被完成。然而,可能存在仍然在存储阵列队列228中排队的一个或多个主机存储器存储请求,这是因为HBA154未接收对于(多个)HBA存储请求的完成响应。因此,在一个实施例中,当HBA154将I/O操作返回到例如固件I/O完成队列上的信道微处理器时,微处理器固件可以执行传输读ACW和传输状态ACW中的各个位的如下测试:对于传输状态ACW,如果ACW尚未在状态2,则固件等待ACW状态字段以移动到2(下面进一步描述ACW状态字段)。当固件看到该ACW处于状态2时,然后固件检查IU报头字段,以确定ACW正在与哪一装置一起工作。现在,在分配给I/O操作的四个ACW的任一个中检查或改变任何字段之前,固件通过观察每一个ACW中要设置为一的活动请求计数=零位,等待对于读ACW和状态ACW二者的活动请求计数,以递减到零。一旦活动请求计数对于ACW二者为零,固件检查传输状态ACW中的传输状态IU报头,然后将结束I/O状态存储在子信道142中。固件然后产生到信道子系统114的I/O处理器(IOP)的中断,通知IOP已经完成子信道的I/O操作。IOP然后产生回到OS110的终端,通知OS110已经完成I/O操作。
图10示出了由本地信道存储器中的固件设置且由数据路由器160使用以在HBA存储器请求与主机存储器请求之间转换的地址控制字(ACW)210的优选实施例。在处理每一个主机存储器请求之后,数据路由器硬件更新ACW210中的信息,以便通过使用该ACW210准备用于下一HBA请求。示例性ACW210包括如下字段。
ACW状态字段250(如,字0字节0)提供ACW的状态。例如,当对于I/O操作设置ACW时,位0(ACW有效位)由固件设置为一,指示ACW是有效的ACW。以例如位4-7限定状态,并且包括如下代码:
0-空闲/读设置。当已经设置ACW以接收数据时固件设置该状态;
1-写设置。当已经设置ACW以发送数据时固件设置该状态;
2-ACW IU报头区域保护。当整个IU报头已经传输到HBA或者已经从HBA传输用于取回或存储时,数据路由器硬件将ACW状态从状态0、1或3改变为状态2。当从链路接收到数据时,一定已经接收到整个IU报头,并且在将ACW状态250设置到状态2之前,将其存储到ACW报头区域。一旦将ACW状态设置为2,数据路由器硬件不访问ACW中的IU报头区域。一旦将ACW设置到状态2,它维持在状态2,直到固件改变它为止。如果对于IU不存在报头数据,则固件可以将ACW状态设置到状态2。
3-进行中的IU报头。当PCIe请求仅传输一部分IU报头时,硬件从状态0或1中设置状态3。ACW状态维持在状态3,直到后续的PCIe请求完成整个IU报头的传输为止,然后将ACW状态设置到状态2。
如果当转送主机存储器请求到主机存储器时出现异常时,则可以由数据路由器设置读丢弃或抛弃位(如,ACW状态250的位2)。对于HBA存储请求,设置读丢弃位,以便将数据存储到主机存储器的所有的HBA请求将导致数据被丢弃,并且也不在数据校验字保存区域280中累积。设置该位的条件包括对于该ACW在主机存储器上接收到的任何异常以及只要该ACW的HPF-DR响应字254位8(“丢失PCIe请求”)设置为一时。对于HBA取回请求,可以设置写抛弃位(如,ACW状态250,位3),以便对于该ACW的任何HBA取回请求将以设置到完成者中断的完成状态接收PCIe‘事务层协议’(TLP)完成。设置该位的条件是:关于对于该ACW的主机存储器取回请求接收到的任何异常;当对于该ACW由固件请求时由全局取回停顿硬件设置。
在一个实施例中,当处理入站HBA请求且设置固件读丢弃位252时,数据路由器硬件将读丢弃位设置为一,并且将丢失PCIe请求位设置为一。然后由数据路由器采取的动作列出在位8以下的HPF-DR响应字(下面描述)中。固件使用该位以恢复具有卡在存储阵列队列228中的HBA存储请求的ACW,由于对于该ACW尚未接收到之前的HBA请求因此不能处理该HBA存储请求。
HPF-DR响应字字段254(如,字0字节1、2、3)包括HPF-DR响应字,其为在I/O操作的完成时由数据路由器硬件提供给固件的ACW结束状态信息。结束状态的示例及其对应的示例位包括:
位8-丢失HBA请求:当对于该ACW的“延迟的”HBA存储事务超过配置的‘生存时间’时,可以将该位设置为一。如果数据路由器硬件由于乱序情形而在之前已经重新排队了该HBA请求,并且对于要接收的丢失的HBA请求,请求已经在存储阵列队列228中等待的时间超出配置的生存时间,则这发生。当处理入站HBA(读)请求且ACW固件读丢弃位设置为一时,该位也可以设置为一。当丢失HBA请求条件时执行的动作包括在ACW中存储IU报头(如果有的话)、丢弃IU数据(如果有的话)而不将其累积在数据校验字中并将ACW状态字段250的读丢弃位2设置为一。在执行这些动作之后,对于该ACW的活动请求计数递减一。
位9-超过存储器请求阈值:需要满足一个HBA请求的主机存储器请求的数量超过了所设置的存储器请求阈值。
位10-TIDAL格式检查:TIDA列表地址或TIDAW不遵循协议格式规则。将失败的TIDAW的地址写入该ACW的失败zSeries存储器地址字段。
位11-关于工作计数的溢出:当通过数据路由器从主机存储器取回或向主机存储器存储数据时,试图传输到PCIe总线或从PCIe总线传输的数据的总字节计数、填充字节和数据校验字超过由ACW工作计数规定的数据的字节计数。
位12-从HBA接收到的复制HBA取回请求或无效HBA存储请求:将不处理复制的HBA取回请求,代替地,完成者中断完成TLP将返回到HBA。写抛弃位(ACW状态字节位3)设置为一;或者,对于无效的HBA存储请求,该位和读丢弃(ACW状态字节位2)设置为一,并且丢弃对于该ACW的所有后续HBA存储请求。
位13-活动请求计数=零:一旦数据路由器硬件更新ACW中的ACW活动请求计数,就设置该位等于下面限定的活动请求计数字段290的所有位的”异或”。
位14-绕回ACW:当24位接下来期望的16兆字节偏移字段从0xFFFFFF到0x000000绕回时,将该位设置为一。该ACW绕回位设置为一妨碍数据路由器硬件将对于该ACW的0x000000到0x00001F的16兆字节偏移值翻译为IU报头信息。
位15-TIDA取回主机存储器错误:当如下声明全部为真时设置该位:对于TIDA列表中的TIDAW项,响应于主机存储器取回请求,接收到异常或坏的硬件响应;从要求该不可用的TIDAW的HBA接收到对于数据的HBA请求;以及对于该I/O操作未检测到之前的错误。从接收逻辑240接收到的错误指示存储在ACW TIDA硬件响应字段ACW字9字节2和3中。将引起该错误的地址写入失败zSeries存储器地址字段ACW字16和17。
位17-数据校验字不匹配:对于至主机存储器的存储,计算出的数据校验字不匹配接收到的数据校验字。仅如果通过HPF-控制位3在ACW中使能数据校验字检查并且读丢弃(位2)不设置为一才公布(post)。
位18-方向错误:HPF-DR控制字中的ACW方向位0不匹配对于该ACW的HBA请求的方向。
位21-主机存储器响应错误:从主机存储器请求接收到错误。在一个实施例中,将来自主机存储器响应的错误字节(详述错误)写入该ACW状态字段的位19-20以上和位24-31以下。将导致该错误的主机存储器地址写入该ACW的失败zSeries存储器地址字段。
位22-IU报头数据校验字不匹配:如果在ACW中未由HPF-DR控制字位16禁止,则对于所有进入的IU,硬件关于28字节的IU报头信息检查IU报头数据校验字。如果IU报头数据校验字失败,则丢弃在IU中存在的任何数据有效载荷。
如果在将数据从HBA存储到主机存储器的同时,遇到HPF-DR响应字中的结束状态中指示的以上错误的任何一个,则丢弃在HBA请求中以及对于IU的所有后续HBA请求的剩余字节。当在该字中错误位8-12、15、17、18、21和22中的任意一个设置为一时,这在ACW状态中的读丢弃位设置为一的情况下强制实施。如果在从主机存储器取回数据以传输经过PCIe总线的同时检测到错误,则HPF-DR硬件将向PCIe输出逻辑244发信号以返回具有设置为完成者中断的完成状态的完成TLP。这将导致HBA中断发起导致异常的主机存储器取回请求的交换。以具有设置为完成者中断的完成状态的相同完成TLP来响应对于该ACW的所有后续HBA请求。当在该字中错误位8-12、15、17、18、21和22中的任意一个设置为一时,这在ACW状态中的写抛弃位设置为一的情况下强制实施。如果HPF-DR硬件遇到具有有效(位0)设置为0的ACW,或者具有无效ACW状态(对于取回的0和4-F,或者对于存储的1和4-F),则公布HPF-DR硬件信道控制检查。
再次参照图10,ACW也可以包括工作计数字段256。当由数据路由器处理对于该ACW的第一HBA请求时,该字段从开始计数字段(下面描述)的字7初始化。当数据从主机存储器取回或将数据存储到主机存储器中时,数据路由器硬件递减该计数。在该计数已经递减到零之后,不再将数据存储到主机存储器中。抛弃在该计数达到零之后从PCIe总线接收到的任何数据,并且在HPF-响应字字段中将‘关于工作计数的溢出’位设置为一。如果在ACW状态字节中,写抛弃或读丢弃位设置为一,则对于丢弃或抛弃的数据字节,该计数不递减。如果在HPF-响应字254中任意错误位已经设置为一(其指示在主机存储器响应中接收到错误),则该计数的残值无效。
由固件设置HPF-DR控制字字段258,并控制数据路由器执行的功能。(在该字段中对应于示例性位的)示例性功能描述如下:
位0-ACW方向:对于从主机存储器的取回设置为'1'b。对于到主机存储器的存储设置为'0'b。该位必须匹配参照该ACW的HBA请求,否则将HPF-DR响应字中的‘方向错误’位18设置为一。
位1-2-“IU数据-数据校验字选择”:以如下代码点编码这些位,以向数据路由器硬件通知对于数据IU的数据校验字类型。如果下面的位3(使能数据校验字)设置为一,则如下代码指示所使用的数据校验字的类型:
-使用数据校验字类型1。(LRC)
-使用数据校验字类型2。(校验和)
-使用数据校验字类型3。(CRC)
-使用数据校验字类型4。
位3-“IU数据-数据校验字使能”:'0'b的值指示OFF,即对于该项不存在数据校验字检查/产生。'1'b的值指示ON,即,对于该ACW使能以上的位1-2的每一编码的数据校验字检查/产生。
位4-5-IU报头数据校验字选择编码:如果下面的位16设置为零(使能IU报头数据校验字),则以如下代码点编码位4-5,以向数据路由器通知对于IU报头的数据校验字类型:
-使用数据校验字类型1。(LRC)
-使用数据校验字类型2。(校验和)
-使用数据校验字类型3。(CRC)
-使用数据校验字类型4。
位16-抑制IU报头数据校验字:'0'b(OFF)的值指示对于该ACW使能位4-5以上的每一编码的IU报头数据校验字检查/产生。'1'b(ON)的值指示不检查入站IU报头中的数据校验字字段。不修改出战报头中的数据校验字字段,并且如在ACW中设置的一样发送。
位17-BYPASS TIDAL:'0'b的值指示要使用TIDAL处理。ACW中的地址是TIDAW的列表的起始地址。每一个TIDAW具有主机存储器地址以及用以取回或存储数据的计数。'1'b的值指示忽略(bypass)TIDAL处理,并且在ACW中的主机存储器地址开始连续地取回或存储数据。
位22-23-有效载荷数据校验字位置:对于写操作,这两位编码表示从数据校验字所位于的有效载荷的结束起的字数。对于读操作,忽略该编码。对于'00'b以外的值,开始工作计数必须是4字节的倍数(即,无填充)。数据校验字之后的IU中的字不包括在数据校验字计算中。示例性代码包括:
'00'b:当工作计数=0时,插入产生的数据校验字。这将数据校验字放置在发送的IU加上填充字节的结束,以将数据校验字放在字边界上。该代码点用于发送每件事,除了传输命令IU。
'01'b:当工作计数=4时,以产生的数据校验字覆盖现有字。这从发送的IU的结束起一个字(4字节)放置数据校验字。该代码点仅用于发送传输命令IU。
'10'b:当工作计数=8时,以产生的数据校验字覆盖现有字。这从发送的IU的结束起两个字(8字节)放置数据校验字。该代码字仅用于发送传输命令IU。
'11'b:无效
再次参照图10,ACW也可以包括由固件设置的密钥259。该密钥从ACW取得,并由数据路由器硬件插入在用以访问主机存储器的主机存储器请求中。由固件设置区域ID字段260,并从ACW取得,并由数据路由器硬件插入在用以访问主机存储器的主机存储器请求中。
主机存储器地址字段262指示主机存储器中的起始地址,其中用于该ACW的数据要从其取回或存储到其(例如,如果控制字字段的位17是一)或者指示TIDAL间接数据地址列表(TIDAL)(例如,如果位17是零)的起始地址。ACW中的主机存储器地址是数据的主机存储器地址或称为TIDAL的传输间接地址列表的开始的地址。TIDAL中的每一项是作为对于TIDAW中的计数字段中的数据的字节数的起始主机存储器地址的TIDAW。如果在HPF-DR控制字中由位17指示TIDAL,则HPF-DR硬件从主机存储器取回TIDAL,然后使用每一TIDAW中的地址以在主机存储器中取回或存储的数据。
IU报头计数字段263由数据路由器硬件使用以跟踪要从ACW发送到PCIe总线或从PCIe总线发送到ACW的剩余IU报头字节的数量。IU报头计数由固件初始化到在IU的发送或接收开始时要从ACW底部发送到PCIe总线或从PCIe总线发送到ACW底部的IU报头字节的数量。
当设置ACW时,由固件初始化24位“下一期望的16兆字节偏移”字段264。尽管描述为16兆字节偏移,但该偏移字段可以对于其他期望的偏移配置而配置。当处理每一个HBA取回或存储请求时,数据路由器硬件将相对于ACW中的下一期望的16兆字节偏移字段,检查HBA地址中的16兆字节偏移180。如果它们匹配,则如果它是IU报头则数据路由器硬件向或从ACW底部移动数据,并且如果是任何客户数据,则数据路由器硬件向或从主机存储器移动数据。然后数据路由器硬件将ACW中下一期望的16兆字节偏移字段递增HBA事务大小。在一个实施例中,为了利用4字节工作计数字段,通过使用3字节的下一期望的16兆字节偏移字段,在工作计数转换到零之前,下一期望的偏移可以从0xFFFFFF向0x000000绕回直至255次。下一期望的偏移第一次绕回时,在该ACW中将ACW绕回位(HPF-响应字字段254中位14)设置为一。
由固件使用开始计数字段266以在该ACW的控制下加载对于I/O操作要传输的数据的字节数。该计数包括关于发送数据的所有的插入填充和数据校验字字节,但是不包括IU报头字节或关于发送或接收数据的最终填充和数据校验字字节。当对于该ACW处理第一HBA请求时,数据路由器硬件将该计数传输到工作计数字段256。数据路由器硬件不修改ACW中的开始计数。
由数据路由器硬件将CTL字段268和验证字段270与从HBA接收到的地址字段172中的对应CTL字段174和验证字段178进行比较。如果它们不相同,则公布错误,并且不执行主机存储器操作。该错误导致信道控制检查。
对于HBA存储,由数据路由器硬件使用数据校验字状态字段272,以跟踪ACW中的最后4数据字节保存区域(下面描述)中的哪一数据字节将用于对于该ACW的下一事务中的数据校验字计算。对于HBA存储请求未在字边界结束的情况,这是必要的,并且数据校验字的计算仅在字边界关于数据的四字节字进行。因此,在ACW中必须保存等于三字节的先前接收到的数据和边界状态信息,直到接收到后续字节的数据为止,以继续数据校验字的计算。
TIDAL硬件响应字段274用于存储对于取回的TIDA列表接收到的主机存储器异常或坏的数据路由器硬件响应。该字段的位2-15具有与HPF-DR响应字字段254的位18-31相同的限定。由于TIDA列表可以在需要其使用之前由HPF-DR硬件预先取回,因此该坏的响应将不会由固件报告为错误,除非从HBA接收到HBA请求以传输将使用该不可用的TIDAW的数据。通过HPF-DR响应字字段254的位15来向固件指示该后一情况。
由数据路由器硬件使用先前的数据校验字保存区域,以在每一个HBA存储事务(transaction)的结束处保存靠近最后的临时数据校验字值。该临时值未通过使用接收到的最后4数据字节的计算而修改。因此,如果当前HBA事务完成了操作,则该字段包含对于操作的最终计算出的数据校验字值,并且接收到的最后4数据字节是在该ACW中的后面字段中保存的接收到的数据校验字。
由硬件使用最后的4数据字节保存区域278,以保存在每一HBA请求上接收到的最后4数据字节。对于最后以外的HBA请求,如果当前HBA请求未在字边界上结束,则对于后续的数据校验字累积,最多可能需要三个这些字节。关于需要哪些字节的信息记录在数据校验字状态272中。对于最后的HBA请求,该字段包含接收到的数据校验字。在一个实施例中,对于HBA PCIe取回,该字段基于最后上一4字节PCIe边界而保存最多最后四个数据字节。因此,如果PCIe地址以1结束,则该字段保存发送的最后一个字节。如果PCIe总线以2结束,则该字段保存发送的最后两个字节,等等,直至最后四个字节。
在每一个HBA事务(取回或存储)的结束时,由数据路由器硬件使用数据校验字保存区域280,以保存临时计算的数据校验字值,其用以播种对于该ACW的下一事务。
TIDAL工作区域地址282是位于本地信道存储器中的256字节工作区域的地址,并且由数据路由器硬件使用以缓冲通过数据路由器硬件从主机存储器预先取回的TIDA列表元素。固件设置该字段以指向对于该ACW分配的区域。TIDAL工作区域索引284是到本地信道存储器TIDAL工作区域的索引,其指向当前活动的TIDAW项,并由数据路由器硬件维持。
由固件使用数据校验字种子字段286,以在该字中写入初始的数据校验字种子值。在关于读和写二者的对于该ACW的数据传输开始时,该字用作数据校验字计算的开始种子,并且对于写,还用于当TIDAW计数转换为零时,在TIDAW中‘插入数据校验字’TIDAW标志的处理之后的‘重新播种’。对于传输命令ACW,固件取得传输命令IU的原始种子,并通过以IU报头以及位于传输IU结束处的写和或读长度字段来更新传输命令IU的开始数据校验字种子,对于传输命令IU ACW种子计算新的值。因此,尽管数据路由器硬件从ACW取得种子并且仅关于IU的传输命令IU数据部分计算数据校验字,但是传输命令IU数据校验字覆盖整个传输命令IU。然后数据路由器硬件将数据校验字插入IU,并且随后发送写或的长度字段,或者如果I/O操作在两个方向中发送数据,则发送写和读长度字段二者。失败zSeries存储器地址288用以存储导致异常的存储器区域的地址,并且在HPF-DR响应字254中设置合适的错误位。
由ACW使用活动请求计数计数器290,以明了对于该ACW当前有多少HBA请求驻留于存储阵列队列288中。该计数器对于存储在该ACW的存储阵列队列中的每一个HBA请求递增,而当已经处理了HBA请求时递减。当对于请求出现如下之一时认为处理了对于该ACW的HBA请求:已经以主机存储器响应完成了对于HBA请求的所有主机存储器请求;如果读丢弃位(位2)设置为一,则已经抛弃了对于HBA请求的所有数据;或者在对于仅包含IU报头信息的HBA请求的ACW中存储所有IU报头信息。一旦数据路由器硬件更新了ACW中的ACW活动请求计数,它将活动请求计数=零(HPD-DR响应字254,位13)设置为活动请求计数的各个位的“异或”。因此,当HPF-DR硬件将活动请求计数递减为0时,活动请求计数=零位将被设置为一。
IU报头信息字段292用以存储在I/O操作中使用的命令、状态和/或数据IU报头。在一个实施例中,该字段是‘IU报头’信息的8个字的区域。如果IU包含IU报头,则IU报头信息是在链路上传送到IU中的装置或从IU中的装置传送的第一个数据。IU报头信息由信道使用或产生,但不是要存储到主机存储器或从主机存储器取回的数据的一部分。因此,该信息由信道微处理器固件检查或产生。ACW控制块的底部8个字用以缓冲IU报头,并且用作数据路由器硬件与对于IU报头的固件之间的接口。
IU报头信息是当ACW是读数据ACW或写数据ACW时传送经过PCIe总线的第一个数据。当数据路由器硬件完成IU报头的传输时,它将ACW状态字段250值改变为2。对于IU发送,固件在向HBA发信号以发送IU之前在ACW中建立IU报头。对于接收到的IU,当固件已经由HBA通知已经完成I/O操作且已经验证ACW处于ACW状态2时,固件检查ACW中的IU报头。
固件还控制IU报头的最后一个字(在本实施例中,其总是处于16兆字节偏移28,0x00001C)是表示数据还是表示对于IU报头的IU报头数据校验字。HPF-DR控制位16(抑制IU报头数据校验)通知数据路由器硬件是否要产生或检查对于IU报头的数据校验字。如果使能的数据路由器硬件产生IU报头数据校验字,则当将IU报头发送到HBA时,以产生的数据校验字代替来自ACW的IU报头的最后一个字。如果使能的数据路由器硬件检查关于接收到的HBA IU报头数据校验字,并且在位22中在HPF-DR响应字254中报告结果。
固件可以设置ACW,以便数据路由器硬件发送小于8个字的IU报头信息。通过调整状态、报头计数、下一期望的16兆字节偏移和由PCIe HBA使用的初始16兆字节偏移来进行,以便要发送或接收的最后IU报头字处于28的16兆字节偏移处(0x00001C),并且有效载荷(如果有的话)的第一字节处于32的16兆字节偏移处(0x000020)。IU报头通常是整数个字。
在一个实施例中,如果对于IU不需要IU报头,则固件设置ACW如下:
1.将ACW IU报头计数设置为零。ACW字6字节0;
2.将ACW状态设置为状态2;
3.将ACW绕回位设置为一(HPF-DR响应字位14),在赋予HBA的地址控制结构中设置开始16兆字节偏移到0x000000,并且设置相同的值到ACW中下一期望的16兆字节偏移字段;
4.将ACW工作计数256设置为等于ACW开始计数266;
5.将ACW数据校验字状态设置为值0x00;以及
6.将先前的数据校验字保存区域276和数据校验字保存区域280设置为等于数据校验字种子286。现在,对于数据路由器硬件而言,对于该ACW分配到的IU已经接收或发送了IU报头。
以上描述的ACW中的一些字段由信道微处理器基于从I/O指令的接收而得到的信息来设置。示例性字段包括ACW状态字段、响应字字段、HPF-DR控制字段、主机存储器或TIDA存储器地址字段、报头计数、“下一期望的16兆字节偏移字段”、D字段、CTL字段、验证字段、TIDAL工作区域地址字段、数据校验字种子字段和IU报头字段。ACW中的其他字段是由HPF-DR硬件在执行I/O操作中使用的控制字段,并且是用于在I/O操作已经完成之后向固件呈现结束状态信息。
图11-14图示在本地信道存储器中存储并由数据路由器硬件使用的ACW中由固件设置的示例性值。参照图11,为了产生传输命令ACW300,其由HPF-DR使用以集合传输命令IU,应用如下设置:
1)对于ACW状态字段,ACW有效位设置为一并且设置状态编码为1;
2)将ACW绕回字段设置为零(当将HPF-DR响应字设置为0x000000时设置);
3)对于HPF-DR控制字段,设置如下值:
位0(将ACW方向)设置为一。正从信道发送数据;
位1-2(IU数据-数据校验字选择)设置为'00'b,以指示正在使用LRC字;
位3(IU数据-数据校验字使能)设置为一;
位4-5(IU报头数据校验字选择)不使用;
位16(抑制IU报头‘数据校验字’)设置为一;
位17(忽略TIDAL)设置为TCW中TCCB TIDAL标志位的反;
位22-23(有效载荷数据校验字位置)以代码值'10'b设置;
4)从子信道取得密钥值;
5)从TCW取得主机存储器地址;
6)对于传输命令ACW,将IU报头计数设置在0x0C处。
7)对于传输命令ACW,将下一期望的16兆字节偏移字段设置在0x000014处;
8)从TCW翻译开始计数字段值;
9)当设置ACW时将固件写抛弃位(D)设置为零;
10)对于所有传输ACW,将CTL字段设置到0x02;
11)在信道初始化时,将验证字段设置到对于该ACW的唯一值;
12)在信道初始化时,将TIDAL工作区域地址设置到对于该ACW的唯一值;
13)数据校验字种子:对于传输命令ACW,固件取得原始的传输命令种子,根据该ACW中IU报头101数据设置和从TCW得到的写&读长度字段,计算数据路由器硬件的新的种子值;以及
14)IU报头101:根据子信道和TCW设置12字节的IU报头101。
参照图12,由数据路由器使用传输读数据ACW302,以接收读传输-数据IU,并产生主机存储器命令以将读数据传送到主机存储器。传输读ACW通过应用如下设置来产生:
1)对于ACW状态字段,将ACW有效位设置为一,并且设置状态编码为2;
2)当将HPF-DR响应字段设置为0x020000时,将ACW绕回字段设置为一;
3)对于HPF-DR控制字段,设置如下值:
位0(ACW方向)设置为零。正在信道处接收数据;
位1-2(IU数据-数据校验字选择)设置为'10'b,以指示正在使用CRC字;
位3(IU数据-数据校验字使能)设置为一;
位4-5(IU报头数据校验字选择)不使用。设置以上ACW绕回位;
位16(抑制IU报头‘数据校验字’)不使用。设置以上ACW绕回位;
位17(忽略TIDAL)设置为TCW中TIDAL读标志位的反;
位22-23(有效载荷数据校验字位置)以'00'b的代码值设置,由于其未用于该ACW;
4)从子信道取得密钥值;
5)从TCW取得主机存储器地址;
6)对于传输读数据ACW,将IU报头计数设置在0x00;
7)对于传输读数据ACW,将下一期望的16兆字节偏移字段设置在0x000000;
8)在TCW中从读数据计数取得开始计数字段值;
9)当设置ACW时,将固件写抛弃位(D)设置为零;
10)对于所有传输ACW,将CTL字段设置到0x02;
11)在信道初始化时,将验证字段设置为对于该ACW的唯一的值;
12)在信道初始化时,将TIDAL工作区域地址设置为对于该ACW的唯一的值;以及
13)对于传输读数据ACW,将数据校验字种子设置到0XFF FF FF FF。
参照图13,由数据路由器使用传输写数据ACW304以产生写传输-数据IU,以将写数据传送到控制单元。传输写ACW通过应用如下设置来产生:
1)对于ACW状态字段,将ACW有效位设置为一,并且设置状态编码为2;
2)当将HPF-DR响应字段设置为0x020000时,将ACW绕回字段设置为一;
3)对于HPF-DR控制字段,设置如下值:
位0(ACW方向)设置为一。正在将数据发送到控制单元;
位1-2(IU数据-数据校验字选择)设置为'10'b,以指示正在使用CRC字;
位3(IU数据-数据校验字使能)设置为一;
位4-5(IU报头数据校验字选择)不使用。设置以上ACW绕回位;
位16(抑制IU报头‘数据校验字’)不使用。设置以上ACW绕回位;
位17(忽略TIDAL)设置为TCW中TIDAL读标志位的反;
位22-23(有效载荷数据校验字位置)以代码值'00'b设置;
4)从子信道取得密钥值;
5)从TCW取得主机存储器地址;
6)对于传输写数据ACW,将IU报头计数设置在0x00处;
7)对于传输写数据ACW,将下一期望的16兆字节偏移字段设置在0x000000处;
8)在TCW中从读数据计数取得开始计数字段值;
9)当设置ACW时,将固件写抛弃位(D)设置为零;
10)对于所有传输ACW,将CTL字段设置到0x02;
11)在信道初始化时,将验证字段设置为对于该ACW的唯一的值;
12)TIDAL工作区域地址与作为传输命令ACW的工作区域相同;以及
13)对于传输写数据ACW,将数据校验字种子设置到0XFF FF FF FF。
参照图14,由数据路由器使用传输状态ACW306,以存储根据接收到的传输状态IU的扩展状态数据,并将该状态转送至主机存储器。通过应用如下设置来产生传输状态块ACW:
1)对于ACW状态字段,将ACW有效位设置为一,并且设置状态编码为2;
2)当将HPF-DR响应字段设置为0x000000时,将ACW绕回字段设置为零;
3)对于HPF-DR控制字段,设置如下值:
位0(ACW方向)设置为零。正从控制单元接收数据;
位1-2(IU数据-数据校验字选择)设置为'00'b,以指示正在使用LRC字;
位3(IU数据-数据校验字使能)设置为一;
位4-5(IU报头数据校验字选择)设置为'00'b,以指示正在使用LRC字;
位16(抑制IU报头‘数据校验字’)设置为零,不抑制IU报头数据校验字;
位17(忽略TIDAL)设置为一,因为不使用间接的寻址;
位22-23(有效载荷数据校验字位置)以代码值'00'b设置,并且不
用于该ACW;
4)对于该ACW将密钥值设置到0x0;
5)从TCW取得主机存储器地址;
6)对于传输状态ACW,将IU报头计数设置在0x20处;
7)对于传输状态ACW,将下一期望的16兆字节偏移字段设置在0x000000处;
8)每一光纤信道架构,将开始计数字段值设置到0x40;
9)当设置ACW时,将固件写抛弃位(D)设置为零;
10)对于所有传输ACW,将CTL字段设置到0x02;
11)在信道初始化时,将验证字段设置为对于该ACW的唯一的值;以及
12)对于传输状态ACW,将数据校验字种子设置到0xA55A A55A。
参照图15,描述各种类型的地址控制结构的HBA地址部分的示例。在这些示例中,当CTL字段174等于0x02时,16兆字节偏移180仅为对于用于I/O操作的、来自HBA的连续HBA请求累加的HBA地址172的一部分。要发送或接收的信息单元(IU)的HBA请求数据的第一个32字节可以是从ACW控制块的底部获得或者存储到ACW控制块的底部的IU报头信息。数据路由器硬件对于范围从0x000000到0x00001F的PCIe16兆字节偏移地址,从ACW的底部取回该信息或者将该信息存储到ACW的底部。这允许对于发送到装置或从装置接收的传输-数据IU附加或剥离最多32字节IU报头。当16兆字节偏移绕回时,其绕回回0x000000,但是对于该情况,由于它是绕回情况并且在ACW中将ACW绕回位设置为一,因此接收或发送的数据继续从主机存储器且不向或不从ACW存储或取回。固件具有设置ACW的能力,以便如果在IU的开头不存在IU报头信息,则不从ACW取回或不向ACW存储IU报头信息。ACW绕回位是ACW的HPF-DR响应字字段中的位14。
对于传输命令地址控制结构,从TCW得到的字节计数从不会使得16兆字节偏移字段180绕回,因此数据路由器硬件和HBA仅需要一个地址控制结构来发送传输命令IU。命令IU的方向总是从信道侧HBA到控制单元。
对于传递到HBA的传输状态地址控制结构,字节计数从不会使得16兆字节偏移字段绕回,因此对于数据路由器硬件和HBA只需要一个地址控制结构来接收传输状态IU。状态IU的方向总是从控制单元到信道侧HBA。
对于传输读数据地址控制结构,要从装置传送到HBA的读数据的总量由TCW中的读数据计数提供。如果读数据计数大于16兆字节,则传递到HBA以传送读数据的数据地址控制结构的数量是总的读数据计数除以223,并且如果有余数的话,则向上舍入。传递到HBA的每一个读数据地址控制结构具有相同的64位PCIe地址。除了完成I/O数据传输的最后的数据地址控制结构之外,每一个数据地址控制结构中的计数字段是223。这使得对于数据路由器硬件来说,223兆字节偏移字段一直从0x7FFFFF绕回到0x000000。主机存储器地址是来自ACW的不断增加的主机存储器地址262,或者来自从由存储器地址262寻址的TIDAL的每一个TIDAW的主机存储器地址。
对于(多个)传输写数据地址控制结构,要从HBA传送到装置的写数据的总量由来自TCW的写数据计数提供。以与关于读数据地址控制结构相同的方式计算对于传输写IU的地址控制结构的数量。
这里描述的系统和方法提供了用于检查由数据路由器160处理的数据的错误的机制。例如,无论何时HBA154参照主机存储器,数据路由器160都检查大量参考点。在一个示例中,数据路由器160检查HBA地址字段172的ACW索引字段176中的ACW地址位置处于由ACW起点寄存器214和ACW界限寄存器216界定的存储器区域内。
在另一个示例中,通过检查HBA地址字段172中的CTL字段和验证字段匹配由HBA请求参照的ACW中的CTL字段和验证字段,数据路由器160检查到HBA154对于HBA请求正在使用正确的ACW。如果这些字段不匹配,则信道128将以信道控制检查结束I/O操作。数据路由器160还检查地址字段172中的偏移字段(如,HBA地址的低24位)等于取回的ACW中的下一期望的16兆字节偏移。
数据路由器160还包括产生或检查数据校验字(如,LRC、CRC)的能力,所述数据校验字允许数据路由器160以检测正在传送的数据是否已经被破坏。
例如,当数据路由器从主机存储器收集要发送到HBA154的数据(如TCCB148或输出数据)时,数据路由器通过使用传输命令ACW中的数据校验字种子和使用TCCB数据,并将数据校验字插入传输命令IU(如,在从IU结束起的两个字),来产生数据校验字192。传输命令ACW中的数据校验字种子由固件以传输命令IU报头和长度字段预先计算。这允许数据校验字覆盖整个传输命令IU,包括在发送的IU中的数据校验字之后的长度字段。
在一个实施例中,通常在字边界上计算数据校验字。如果由数据校验字覆盖的数据的字节数的字节计数不是4的倍数,则在发送数据校验字之前,需要填充字节以填充到字边界。对于到控制单元118的发送,填充字节通常为零。对于到主机存储器的接收,必须接受任何值的填充字节。填充字节包括在数据校验字计算中。
数据路由器160还产生在横跨信道路径的传输期间检查整个传输写数据IU的数据校验字。以传输写ACW中的数据校验字种子开始,产生该数据校验字,并且当正在从主机存储器取回数据时,以取回的数据计算新的数据校验字。当取回并然后发送所有数据时,附加产生的数据校验字,并以填充字节对齐到字边界,如发送到HBA的最后4字节数据。TIDAW字可以具有设置为一的插入填充和数据校验字标志位,这将使得数据路由器硬件插入中间数据校验字到传输写数据IU中。控制单元将比较(多个)接收到的数据校验字与其自己(多个)计算的数据校验字,以验证接收到的数据IU有效。对于从主机存储器的取回,当TIDAW计数递减为零,且TIDAW插入数据校验字标志位设置为一时,在字边界上的填充字节之后,总是插入和发送计算出的数据校验字。
数据路由器160也可以产生检查经过信道路径发送的传输读数据IU的数据校验字。以传输读ACW中的数据校验字种子开始,计算数据校验字,然后,当在主机存储器中存储输入数据时,以读数据计算更新的数据校验字。当已经接收到所有数据并存储到主机存储器时,将结果的计算出的数据校验字与从装置接收到的数据校验字进行比较。计算出的数据校验字与接收到的数据校验字的比较验证了接收到的数据IU是有效的。如果两个字段不比较,则I/O操作以接口控制检查来终止。例如,在接收数据IU结尾,如果‘数据校验字使能’位3设置为一,并且如果期望的数据校验字不匹配接收到的数据校验字,则数据路由器硬件将‘数据校验字不匹配’位17设置为一。
在一个实施例中,当数据路由器160正从装置接收数据时,存在这样的情况:数据路由器160必须应对确定何时已经接收到数据校验字。例如,执行计数匹配来验证数据校验字是ACW工作计数转换到零之后接收到的4字节加上填充字节,以将数据校验字放在字边界。在已经接收到数据校验字之后不能接收额外的数据,否则HPF-DR响应字(关于工作计数的溢出)的位11将设置为一。
在另一个示例中,如果在控制单元118发送传输状态IU时ACW工作计数尚未转换到零,则遇到‘早期结束’情形。对于该情况,当以通过HBA154的I/O完成中断信道128时,信道128首先验证对于对应的ACW,活动请求计数=零位设置为一,然后通过将作为接收到的数据校验字的ACW中的‘最后4字节保存区域’与包含关于接收数据的计算出的数据校验字的ACW中的‘先前数据校验字保存区域’进行比较,来验证数据校验字是正确的。
数据路由器硬件还计算检查从链路接收到的传输状态IU数据的数据校验字。以传输状态ACW中的数据校验字种子开始,计算数据校验字,并且当正在主机存储器中存储传输状态IU数据时,计算新的数据校验字。当已经接收到对于IU的所有数据并将其存储到主机存储器时,将结果的计算出的数据校验字与来自装置的接收到的数据校验字进行比较。计算出的数据校验字与接收到的数据校验字的比较验证了接收到的数据IU是有效的。如果两个字段不比较,则以接口控制检查终止I/O操作。
TIDAW的架构及其T-TIC标志位允许需要满足4k字节的一个PCIExpress总线(PCIe)请求的zSeries存储器请求的数量为超过12,000个zSeires存储器请求。如果每一个TIDAW中的字节计数字段和T-TIC标志位均设置为一,使得每一个TIDAW后面跟着作为下一TIDAW的新的zSeries存储器地址的信道字中的传输-传送,则发生对于数据路由器硬件进行所有这些zSeries存储器请求的时间量可以超过HBA对于一个HBA请求使用的超时值。产生的错误将看起来像是zSeries存储器超时,其指示zSeries存储器子系统丢失了zSeries存储器请求。
为了对于需要满足HBA请求的主机存储器请求的数量施加限制,数据路由器硬件中的可编程的请求阈值计数器可以限制用以满足一个HBA请求的主机存储器请求的数量。如果达到限制,则将“超出存储器请求阈值”(HPF-DR响应字位9)设置为一。当初始化信道硬件时设置该阈值计数器。
如上所述,给予HBA154直接将客户数据存储到存储器或从存储器取回客户数据的能力,以改善信道的性能。然而,通过本地信道存储器132执行微处理器130上运行的固件与HBA154之间的全部通信。通过将HBA154处理在HBA工作队列上的I/O操作的所有需要信息存储到本地信道存储器区域164,微处理器130将工作传递到HBA154。同样地,当HBA已经完成了I/O操作或I/O操作失败时,HBA将具有状态的I/O操作返回到本地信道存储器132中的固件I/O完成队列中的信道。
对于使用ACW210以处理HBA主机存储器请求的固件、HBA154和数据路由器硬件的适当交互,提供关于ACW使用期和ACW可分性的如下规则。
在I/O操作期间,信道固件拥有对于I/O操作规定的四个ACW(即,传输命令ACW、传输读ACW、写数据ACW和传输状态ACW),直到固件重新排队在HBA工作队列上的I/O操作时。从在信道固件重新排队HBA工作队列上的I/O操作时直到HBA154将具有状态的I/O操作(四个相关联的ACW)返回到固件I/O完成队列上的固件为止,数据路由器160和间接的HBA154拥有用于I/O操作的四个ACW。对于成功完成的I/O操作,在HBA154已经接收并且处理结束了I/O操作的传输状态IU之后,HBA154将I/O操作返回到在固件I/O完成队列上的固件。在数据路由器硬件和HBA154拥有四个ACW的间隔期间,固件不更新四个ACW的任意一个中的任意字段,除了极少情况(如,ACW中的固件读丢弃位设置为一)之外。
为了停顿(quiesce)处于数据路由器160控制下的ACW以发送数据到装置,固件使用取回停顿硬件和逻辑310(图9中所示)。为了停顿处于数据路由器160控制下的ACW以从装置接收数据,固件使用固件读丢弃位252以及存储停顿硬件和逻辑312(图9中所示)。
在一个实施例中,提供基本(atomocity)规则,以便IU报头和ACW中的所有状态字段已经由固件从固件I/O完成队列上的HBA154接收到结束完成状态的时间更新,这将对于I/O操作的ACW的所有权返回到固件。第一规则声明数据路由器硬件必须在接收到的结束完成状态id或对于该ACW的ACW状态改变为状态2(即,ACW IU报头区域保护)之前,已经将整个IU报头信息存储到ACW。设计ACW中的固件读丢弃位,以便在不影响一起工作的数据路由器硬件和更新相同ACW中的任何字段的情况下,可以将其设置为一。
第二规则声明,当数据路由器硬件向HBA154发送PCIe‘具有设置为完成者中断的完成状态的事务层协议(TLP)完成’时,数据路由器硬件必须确保在处理用以存储到本地信道存储器的任何接下来的HBA请求之前,完成对于对应ACW的所有挂起的更新。第三规则声明,当两个背靠背HBA请求到达路由逻辑222,并且第一请求路由到存储阵列队列228而第二请求路由到本地信道存储器时,在路由第二或后续HBA请求并将其存储到本地信道存储器之前,必须由数据路由器硬件更新ACW中的活动请求计数和活动请求计数=零位。
存在这样的情形(如,当出现错误时):其中,固件不能等待I/O操作完成,而是代替地,必须阻碍从主机存储器取回新的HBA数据取回请求或者阻碍来自HBA数据存储请求的数据存储到主机存储器。全局取回停顿硬件310提供用于固件停顿数据路由器硬件所拥有的ACW并积极地从主机存储器取回数据的部件。
为了停顿设置为从主机存储器取回数据的活动ACW,固件以固件要求停止的ACW的索引设置全局取回停顿逻辑310中的ACW索引寄存器。在固件写入ACW索引寄存器之后,全局取回停顿逻辑310执行如下操作:
1.将全局取回停顿逻辑中的停顿忙碌位设置为一,其使得取回硬件230停止处理来自取回阵列队列226的任何新的HBA取回或写请求,并停止取回硬件230中排队的主机存储器取回或写请求传送到处理逻辑234,用于到主机存储器的传输。然而,不影响已经排队的和当前正在处理逻辑234和发送逻辑236或在接收逻辑240和路由逻辑242处理的主机存储器取回请求;
2.除去已经在取回硬件230中排队的主机存储器取回请求,并且标记具有取回硬件230中的目标ACW索引的任何主机存储器取回请求,以便当稍后处理主机存储器请求时,强制具有完成状态的TLP完成设置为完成者中断;
3.在目标ACW中,写丢弃位、ACW状态250位3设置为一;
4.然后解冻数据路由器硬件,并且现在处理取回硬件230中排队的主机存储器取回请求以及在取回阵列队列226中排队的HBA取回请求;以及
5.复位全局取回停顿逻辑中的停顿忙碌位。
在固件设置全局取回停顿逻辑310中的ACW索引寄存器之后,固件监控停顿忙碌位,以确定全局取回停顿逻辑310何时已经完成停顿操作。一旦已经完成停顿操作,固件可以依赖于如下:
1.具有目标ACW的索引的取回硬件230中排队的任何主机存储器取回请求将接收具有设置为完成者中断状态的完成状态的TLP完成。
2.作为在该ACW中写抛弃位、ACW状态250位3设置为一的结果,取回阵列队列226中排队的任何HBA请求或对于目标ACW的来自HBA的任何新的HBA请求将响应于具有设置为完成者中断的完成状态的TLP完成。
当HBA154接收到具有设置为完成者中断的完成状态的TLP完成时,HBA154将用于I/O操作的中断发送到控制单元118和装置116。当HBA154已经从完成中断序列的装置116接收到响应时,HBA154将通过本地信道存储器中的固件I/O完成队列,将该I/O操作返回到固件。
也可以存在这样的情形:其中,对于I/O操作,固件具有阻碍(停顿)任何新的HBA数据存储请求存储到主机存储器的要求。通过固件读丢弃位来提供该能力。固件将ACW中的固件读丢弃位252设置为一,然后存储阵列队列228中排队的所有新的和现存的HBA请求将被存储硬件232丢弃。
与使得数据路由器160丢弃对于ACW的HBA存储请求一起,固件还可以具有确定由存储硬件232对于ACW向主机存储器进行的所有先前的主机存储器存储请求何时已经以主机存储器完成响应完成。在路由逻辑242接收到主机存储器完成响应,并将其路由到做出请求的请求者,然后以做出请求的相同顺序处理,这包括递减全局存储停顿逻辑312中的计数器。全局存储停顿逻辑和硬件312提供用于固件知道由存储硬件232向主机存储器做出的所有先前的主机存储器存储请求何时已经完成的部件。
一旦在ACW中读丢弃位设置为一,那么知道对于ACW的所有先前的主机存储器存储请求已经完成的方式是等待直到主机存储器流水线(由处理逻辑234、发送逻辑236、接收逻辑240和路由逻辑242表示)中排队的所有当前HBA存储请求已经处理为止。为了在不停止新的存储请求在存储阵列队列中排队或者不停止存储阵列队列中现有项的处理的情况下进行此,以主机存储器流水线中排队的项的当前总数加载快照计数器。然后该快照计数器对于接收到的每一主机存储器响应而递减。然后,当快照计数器达到零时,固件知道已经处理了对于感兴趣的ACW的存储器流水线位置中的队列中排队等候的所有先前的主机存储器存储请求。该功能可以由全局存储停顿逻辑312执行,其由如下计数器构成:
1.全局活动请求计数器明了主机存储器流水线中排队的所有ACW的HBA存储请求的总数。该计数器每当数据路由器硬件232产生到主机存储器的HBA存储请求时递增,而每当通过从路由逻辑242路由到数据路由器控制逻辑的返回的主机存储器响应而将完成HBA存储请求的最终的主机存储器存储请求确认为完成时递减。在一些实施例中,一个HBA存储请求可能需要最多16个主机存储器存储请求,以存储HBA存储请求中的所有数据。
2.全局活动快照计数器仅递减,且从不递增。该计数器在固件的控制下以全局活动请求计数器的当前值加载。该计数器以递减“全局活动请求计数器”的相同信号递减。一旦该计数器递减到零,则其维持在零,直到由固件以全局活动请求计数器的新拷贝再次加载为止。固件可以读取全局活动快照计数器,以确定其何时转换到零。
可以由固件使用如下过程来停止先前设置以将数据存储到主机存储器的ACW然后确定对于该ACW的所有先前的主机存储器请求何时已经完成:
1.固件将每一个受影响的ACW中的‘固件读丢弃’位设置为一,之前设置该位以将数据存储到主机存储器;
2.固件将全局活动请求计数器传送到全局活动快照计数器。然后,当每一个主机存储器存储请求完成时,全局活动快照计数器递减;
3.固件轮询全局活动快照计数器,直到其读出零。现在,对于使得固件读丢弃位设置为一的所有感兴趣的ACW,当固件向全局活动快照计数器传送全局活动请求计数器时做出的所有主机存储器存储请求已经完成。不再由数据路由器硬件代表这些ACW做出另外的主机存储器存储请求。
在一些情况下,可以由数据路由器硬件以与从装置发送数据的顺序不同的顺序接收来自HBA的数据。这引起的问题在于,必须以当发送数据时原始产生数据校验字的相同的数据顺序计算关于接收到的数据的一些类型的数据校验字计算。数据路由器硬件通过使用下一期望的16兆字节偏移字段来检测该情形。当处理每一个HBA取回或存储请求时,数据路由器硬件针对ACW中下一期望的16兆字节偏移字段,检查HBA请求中PCIe16兆字节偏移。如果它们匹配,则数据路由器硬件将下一期望的16兆字节偏移字段递增HBA事务大小,将数据移动到主机存储器或从主机存储器移动数据,并处理数据校验字。如果字段不匹配且HBA地址大于期望的HBA地址,则由数据路由器硬件乱序地接收当前的HBA事务,并且数据路由器硬件将在存储或取回阵列队列的底部重新排列该HBA请求。
当第一次在队列的底部重新排列HBA请求时,在对于该HBA请求的控制数据中写入时间戳。该控制数据用以跟踪队列中的HBA请求。每当该帧再次‘上浮(bubble)’到队列顶部用于处理,且由于未接收到具有匹配16兆字节偏移字段的HBA请求而必须重新排队时,检查时间戳。如果时间戳超出可配置的‘生存时间’(即,超时时段),则该HBA请求正在等待的之前帧被认为丢失。当检测到丢失帧情形时,ACW丢失HBA请求(HPF-DR响应字位8)设置为一。
可以将用于主机存储器存储的乱序HBA请求处理如下。一旦ACW丢失HBA请求位设置为一,丢弃对于该HBA请求的有效载荷,并且也将读丢弃位252设置为一。这确保了丢弃具有对于该ACW的要存储到主机存储器的数据的所有后续的HBA请求。然而,任何IU报头信息(如果存在的话)通常存储在ACW中且从不被丢弃。
当每一个HBA请求被丢弃时,ACW中的活动请求计数290递减,就像当HBA请求正常处理时一样那么做。对于丢弃的HBA请求不检查16兆字节偏移。在固件从HBA接收到对于该I/O操作的完成中断之后,然后固件检查以看对于该ACW的活动请求计数290是否已经转换到零。当活动请求计数已经转换到零时,已经处理了对于该ACW的存储阵列队列中的所有HBA请求。
对于用以将数据存储到主机存储器中的接收到的HBA请求中的16兆字节偏移180小于下一期望的16兆字节偏移264的情况,由于对于该请求的数据之前已经存储到主机存储器中,因此丢弃该请求。如果由于先前存储的数据用于计算ACW中的数据校验字的当前值,而使得主机存储器中存储的先前数据不正确,则数据校验字将标记错误。
可以将用于主机存储器取回的乱序HBA请求如下处理。一旦在ACW中将丢失HBA请求为设置为一,且在等待丢失的HBA取回请求的同时超过‘生存时间’,则数据路由器硬件将以具有设置为完成者中断的完成状态的TLP完成来响应HBA取回请求,并且在该ACW中将写抛弃位252设置为一,以确保对于该ACW接收到的所有后续HBA取回请求将以具有设置为完成者中断的完成状态的TLP完成而响应。
对于在用以从主机存储器取回数据的接收到的HBA请求中的地址小于下一期望的偏移的情况,数据路由器硬件将以具有设置为完成者中断的完成状态的TLP完成来响应该请求。
示例性实施例的技术效果和优点包括网络接口经由信道直接访问主机存储器的能力,同时提供信道存储报头信息的能力,并且提供错误检查而不需要在信道存储输入或输出数据。通过允许主机存储器的直接寻址,这里描述的系统和方法允许安装高性能HBA(如,支持8千兆位或以上的链路速度),而不需要重新设计提供微处理器速度和本地信道存储器带宽的存储和转送信道模型以支持这种高性能HBA。它们还提供用于当前提供的失败HBA的错误检查的必要隔离。另外,这里描述的系统和方法允许仅以一个地址空间配置以在主机存储器中寻址多个地址空间的HBA的使用。
通过使得HBA直接寻址主机存储器的这种方法,本地信道存储器的微处理器性能和带宽要求不需要重新设计以满足新的HBA的提高的性能要求。
其他技术效果包括:提供一部件,用以向附接的HBA给予访问主机存储器中任意区域中任意地址以及本地信道存储器中的区域的能力;提供一部件,用以实现HBA从zSeries主机的等效隔离,与对于当前信道实现存在的一样;提供一部件,用于当数据路由器正从主机存储器取回用于IU的数据或正向主机存储器存储用于IU的数据时,信道在输出的IU上插入信息单元(IU)报头,并从信道中本地的进入IU去除和保存IU报头信息;提供一部件,用以当数据路由器正将数据存储到主机存储器并从主机存储器取回数据时,在TIDAL的控制下,验证关于进入数据的数据校验字,并关于输出的数据以及在输出数据的结尾产生和插入中间数据校验字;提供一部件,用以如果HBA请求未以正确的逻辑帧顺序从HBA接收,则重新排序从HBA接收到的请求,并检测HBA请求或帧是否丢失;提供一合适的部件,用以在数据路由器可以与之工作的许多I/O操作之中终止一个I/O操作,而不干扰其他活动的I/O操作的任意一个;以及提供一部件,用以检测正在使用不现实但架构有效的传输间接数据地址列表,其需要处理过多的主机存储器请求,因此以及时的方式防止主机存储器请求处理。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读信号介质可以包括传播的数据信号,在其中实施的计算机可读程序代码,例如,在基带或作为载波的一部分。这种传播信号可以采取多种形式中的任意一种,包括但不限于,电磁、光、或其任何合适的组合。计算机可读信号介质可以是任意计算机可读介质,其不是计算机可读存储介质且能够通信、传播或传输由指令执行系统、设备或装置使用或与指令执行系统、设备或装置有关的程序。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
这里描绘的流程图仅为示例。对于这里描述的该图或各步骤(或各操作)可能存在许多变更,而不脱离本发明。例如,可以以不同的顺序执行各步骤,或者可以增加、删除或修改各步骤。所有这些变更被认为是所声明的本发明的一部分。
尽管已经描述了对于本发明的优选实施例,但是本领域的技术人员将理解,不论现在还是将来,均可以做出落在下面的权利要求的范围内的各种改进和提高。这些权利要求应该理解为对于首先描述的发明维持适当的保护。
Claims (18)
1.一种在主机计算机系统执行输入/输出(I/O)处理操作的方法,所述主机计算机系统配置用于与控制单元的通信,所述方法包括:
在主机计算机系统中在信道子系统获得关于I/O操作的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;
产生寻址信息,并将该寻址信息从该至少一个信道转送到信道子系统与至少一个I/O装置之间的网络接口,所述寻址信息规定本地信道存储器中的位置;
经由网络接口将I/O命令消息转送至该至少一个I/O装置;
响应于I/O命令消息,从网络接口接收数据传输请求,其包括寻址信息;
响应于接收到数据传输请求,访问多个地址控制字(ACW)中的一个,每一个ACW规定主机计算机存储器中的位置的地址;以及
将数据传输请求路由到ACW中规定的主机存储器位置。
2.根据权利要求1所述的方法,其中所述寻址信息包括具有地址字段的一个或多个地址控制结构,每一个地址控制结构对应于由I/O操作规定的数据传输,并且转送寻址信息包括在转送I/O命令消息之前将一个或多个地址控制结构转送到网络接口。
3.根据权利要求2所述的方法,其中所述地址控制结构的地址字段包括控制字段(CTL),该CTL字段中的第一值指示数据传输请求要被路由到本地信道存储器的第一区域,该CTL字段中的第二值指示数据传输请求要被路由到本地信道存储器的第二区域,所述第一区域由用于本地信道操作的网络接口直接可访问,所述第二区域包括由信道中的数据路由器使用以寻址主机存储器的多个ACW。
4.根据权利要求2所述的方法,其中所述地址字段包括具有第二值的CTL字段,所述地址字段包括规定了第二区域中ACW列表中的一个的ACW索引字段。
5.根据权利要求1至4中任意一个所述的方法,其中所述I/O操作是传输模式操作,并且获得信息包括在信道子系统处获得传输命令字(TCW),TCW包括包含传输命令控制块(TCCB)的地址的TCCB地址字段,该TCCB包括每一个均包括I/O命令的多个装置命令字(DCW)。
6.根据权利要求5所述的方法,其中所述多个ACW包括规定主机存储器中的TCCB的地址的传输命令ACW,规定用于经由数据传输请求从控制单元接收到的输入数据的存储的主机存储器中的位置的地址的传输读ACW,规定用于到控制单元的传输的输出数据的获得的主机存储器中的位置的地址的传输写ACW,以及规定用于在I/O操作结束时由控制单元发送的结束状态的存储的主机存储器中的位置的传输状态ACW。
7.根据权利要求6所述的方法,其中所述一个或多个地址控制结构包括规定传输命令ACW的ACW列表内的位置的至少一个传输命令地址控制结构、规定传输读ACW的ACW列表内的位置的一个或多个传输读地址控制结构、规定传输写ACW的ACW列表内的位置的一个或多个传输写地址控制结构以及规定传输状态ACW的ACW列表内的位置的传输结束状态地址控制结构。
8.根据权利要求1到7中任意一个所述的方法,其中所述网络接口是主机总线适配卡(HBA)。
9.一种在主机计算机系统执行输入/输出(I/O)处理操作的设备,所述主机计算机系统配置用于与控制单元的通信,所述主机计算机系统包括信道子系统,所述信道子系统配置为经由网络接口与该控制单元通信,所述设备包括:
获得组件,用于在该信道子系统获得关于I/O操作的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;
产生组件,用于产生寻址信息,并将寻址信息从至少一个信道转送到信道子系统与至少一个I/O装置之间的网络接口,所述寻址信息规定本地信道存储器中的位置;
转送组件,用于经由网络接口将I/O命令消息转送至至少一个I/O装置;
接收组件,响应于I/O命令消息,用于从网络接口接收数据传输请求,其包括寻址信息;
访问组件,响应于接收到数据传输请求,访问多个地址控制字(ACW)中的一个,每一个ACW规定主机计算机存储器中的位置的地址;以及
路由组件,用于将数据传输请求路由到在ACW中规定的主机存储器位置。
10.根据权利要求9所述的设备,其中所述寻址信息包括具有地址字段的一个或多个地址控制结构,每一个地址控制结构对应于由I/O操作规定的数据传输,并且转送组件进一步可操作,用于在转送I/O命令消息之前将一个或多个地址控制结构转送到网络接口。
11.根据权利要求10所述的设备,其中所述地址控制结构的地址字段包括控制字段(CTL),该CTL字段中的第一值指示数据传输请求要被路由到本地信道存储器的第一区域,该CTL字段中的第二值指示数据传输请求要被路由到本地信道存储器的第二区域,所述第一区域由用于本地信道操作的网络接口直接可访问,所述第二区域包括由信道中的数据路由器使用以寻址主机存储器的多个ACW。
12.根据权利要求11所述的设备,其中所述地址字段包括具有第二值的CTL字段,所述地址字段包括规定第二区域中ACW列表中的一个的ACW索引字段。
13.根据权利要求9至12中任意一个所述的设备,其中所述I/O操作是传输模式操作,并且其中获得组件进一步可操作,用于在信道子系统处获得传输命令字(TCW),TCW包括包含传输命令控制块(TCCB)的地址的TCCB地址字段,该TCCB包括每一个均包括I/O命令的多个装置命令字(DCW)。
14.根据权利要求13所述的设备,其中所述多个ACW包括规定主机存储器中的TCCB的地址的传输命令ACW,规定用于经由数据传输请求从控制单元接收到的输入数据的存储的主机存储器中的位置的地址的传输读ACW,规定用于到控制单元的传输的输出数据的获得的主机存储器中的位置的地址的传输写ACW,以及规定用于在I/O操作结束时由控制单元发送的结束状态的存储的主机存储器中的位置的传输状态ACW。
15.根据权利要求14所述的设备,其中所述一个或多个地址控制结构包括规定传输命令ACW的ACW列表内的位置的至少一个传输命令地址控制结构、规定传输读ACW的ACW列表内的位置的一个或多个传输读地址控制结构、规定传输写ACW的ACW列表内的位置的一个或多个传输写地址控制结构以及规定传输状态ACW的ACW列表内的位置的传输结束状态地址控制结构。
16.根据权利要求9到15中任意一个所述的设备,其中所述网络接口是主机总线适配卡(HBA)。
17.一种用于在主机计算机系统执行输入/输出(I/O)处理操作的计算机程序产品,所述主机计算机系统配置用于与控制单元的通信,所述计算机程序产品包括:
计算机可读存储介质,可由处理电路读取,并且存储由处理电路执行的、进行根据权利要求1到8中任意一个所述的方法的指令。
18.一种计算机程序,存储在计算机可读介质上并可加载到数字计算机的内部存储器,包括软件代码部分,当所述程序在计算机上运行时,用于执行权利要求1到8中任意一个所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/150,530 | 2011-06-01 | ||
US13/150,530 US8738811B2 (en) | 2011-06-01 | 2011-06-01 | Fibre channel input/output data routing system and method |
PCT/IB2012/052489 WO2012164428A1 (en) | 2011-06-01 | 2012-05-17 | Fibre channel input/output data routing system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103620571A true CN103620571A (zh) | 2014-03-05 |
CN103620571B CN103620571B (zh) | 2016-03-16 |
Family
ID=47258464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280024327.1A Active CN103620571B (zh) | 2011-06-01 | 2012-05-17 | 光纤信道输入/输出数据路由系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8738811B2 (zh) |
CN (1) | CN103620571B (zh) |
GB (1) | GB2505592B (zh) |
WO (1) | WO2012164428A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106463039A (zh) * | 2014-05-16 | 2017-02-22 | 凌力尔特有限公司 | 配置信号处理系统 |
CN109101343A (zh) * | 2017-06-21 | 2018-12-28 | 慧与发展有限责任合伙企业 | 响应于提交请求提交已确认的数据 |
CN112486270A (zh) * | 2019-09-12 | 2021-03-12 | 株式会社东芝 | 电子设备、电子设备系统以及磁盘装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364854B2 (en) * | 2011-06-01 | 2013-01-29 | International Business Machines Corporation | Fibre channel input/output data routing system and method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100030918A1 (en) * | 2008-07-31 | 2010-02-04 | International Business Machines Corporation | Transport control channel program chain linked branching |
US20100274876A1 (en) * | 2009-04-28 | 2010-10-28 | Mellanox Technologies Ltd | Network interface device with memory management capabilities |
US20110060848A1 (en) * | 2006-10-10 | 2011-03-10 | International Business Machines Corporation | System and program products for facilitating input/output processing by using transport control words to reduce input/output communications |
US20110113159A1 (en) * | 2009-11-12 | 2011-05-12 | International Business Machines Corporation | Communication with input/output system devices |
Family Cites Families (219)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1264096A (zh) | 1970-06-27 | 1972-02-16 | ||
US3693161A (en) | 1970-07-09 | 1972-09-19 | Burroughs Corp | Apparatus for interrogating the availability of a communication path to a peripheral device |
US4004277A (en) | 1974-05-29 | 1977-01-18 | Gavril Bruce D | Switching system for non-symmetrical sharing of computer peripheral equipment |
US3943283A (en) | 1974-06-17 | 1976-03-09 | International Business Machines Corporation | Bidirectional single wire data transmission and wrap control |
US4080649A (en) | 1976-12-16 | 1978-03-21 | Honeywell Information Systems Inc. | Balancing the utilization of I/O system processors |
US4207609A (en) | 1978-05-08 | 1980-06-10 | International Business Machines Corporation | Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system |
US4380046A (en) | 1979-05-21 | 1983-04-12 | Nasa | Massively parallel processor computer |
US4374415A (en) | 1980-07-14 | 1983-02-15 | International Business Machines Corp. | Host control of suspension and resumption of channel program execution |
US4414644A (en) | 1981-04-03 | 1983-11-08 | International Business Machines Corporation | Method and apparatus for discarding data from a buffer after reading such data |
US4455605A (en) | 1981-07-23 | 1984-06-19 | International Business Machines Corporation | Method for establishing variable path group associations and affiliations between "non-static" MP systems and shared devices |
US4497022A (en) | 1982-10-19 | 1985-01-29 | International Business Machines Corporation | Method and apparatus for measurements of channel operation |
US4564903A (en) | 1983-10-05 | 1986-01-14 | International Business Machines Corporation | Partitioned multiprocessor programming system |
US4779188A (en) | 1983-12-14 | 1988-10-18 | International Business Machines Corporation | Selective guest system purge control |
US4870566A (en) | 1984-08-27 | 1989-09-26 | International Business Machines Corp. | Scannerless message concentrator and communications multiplexer |
US4837677A (en) | 1985-06-14 | 1989-06-06 | International Business Machines Corporation | Multiple port service expansion adapter for a communications controller |
US4760518A (en) | 1986-02-28 | 1988-07-26 | Scientific Computer Systems Corporation | Bi-directional databus system for supporting superposition of vector and scalar operations in a computer |
JPS6336461A (ja) | 1986-07-31 | 1988-02-17 | Pfu Ltd | 汎用チャネル制御方式 |
US4926320A (en) | 1987-04-07 | 1990-05-15 | Nec Corporation | Information processing system having microprogram-controlled type arithmetic processing unit |
US4843541A (en) | 1987-07-29 | 1989-06-27 | International Business Machines Corporation | Logical resource partitioning of a data processing system |
US4866609A (en) | 1988-06-22 | 1989-09-12 | International Business Machines Corporation | Byte count handling in serial channel extender with buffering for data pre-fetch |
JPH0283757A (ja) | 1988-09-21 | 1990-03-23 | Hitachi Ltd | 通信制御システム |
US5016160A (en) | 1988-12-15 | 1991-05-14 | International Business Machines Corporation | Computer system having efficient data transfer operations |
US5185736A (en) | 1989-05-12 | 1993-02-09 | Alcatel Na Network Systems Corp. | Synchronous optical transmission system |
EP0412268B1 (en) | 1989-08-11 | 1996-09-11 | International Business Machines Corporation | Apparatus for interconnecting a control unit having a parallel bus with a channel having a serial link |
GB9012970D0 (en) | 1989-09-22 | 1990-08-01 | Ibm | Apparatus and method for asynchronously delivering control elements with pipe interface |
EP0424618A3 (en) | 1989-10-24 | 1992-11-19 | International Business Machines Corporation | Input/output system |
DE3938520A1 (de) | 1989-11-21 | 1991-05-29 | Teves Gmbh Alfred | Verfahren und system zur messdatenerfassung und -auswertung |
AU650242B2 (en) | 1989-11-28 | 1994-06-16 | International Business Machines Corporation | Methods and apparatus for dynamically managing input/output (I/O) connectivity |
JPH04649A (ja) | 1990-04-18 | 1992-01-06 | Nec Corp | リモートチャネル装置の障害情報転送方式 |
CA2037708C (en) | 1990-05-04 | 1998-01-20 | Richard J. Eickemeyer | General purpose compound apparatus for instruction-level parallel processors |
US5170472A (en) | 1991-03-28 | 1992-12-08 | International Business Machines Corp. | Dynamically changing a system i/o configuration definition |
US5644712A (en) | 1991-06-05 | 1997-07-01 | International Business Machines Corporation | Indirect addressing of channels via logical channel groups |
US5386512A (en) | 1991-07-19 | 1995-01-31 | International Business Machines Corporation | System for deriving and testing mutual capability set after receiving updated capability from other processors and before requesting service information |
US5388219A (en) | 1992-03-02 | 1995-02-07 | International Business Machines Corporation | Efficient channel and control unit for host computer |
US5317739A (en) | 1992-03-30 | 1994-05-31 | International Business Machines Corp. | Method and apparatus for coupling data processing systems |
CA2086691C (en) | 1992-03-30 | 1997-04-08 | David A. Elko | Communicating messages between processors and a coupling facility |
US5414851A (en) | 1992-06-15 | 1995-05-09 | International Business Machines Corporation | Method and means for sharing I/O resources by a plurality of operating systems |
US5600805A (en) | 1992-06-15 | 1997-02-04 | International Business Machines Corporation | Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems |
US5452455A (en) | 1992-06-15 | 1995-09-19 | International Business Machines Corporation | Asynchronous command support for shared channels for a computer complex having multiple operating systems |
US5265240A (en) | 1992-07-24 | 1993-11-23 | International Business Machines Corporation | Channel measurement method and means |
US5301323A (en) | 1992-10-30 | 1994-04-05 | International Business Machines Corp. | Data processing system including dynamic channel path management |
JP2566728B2 (ja) | 1992-10-30 | 1996-12-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 論理径路スケジューリング装置及び実行方法 |
US5526484A (en) | 1992-12-10 | 1996-06-11 | International Business Machines Corporation | Method and system for pipelining the processing of channel command words |
JP2840511B2 (ja) | 1992-12-10 | 1998-12-24 | 富士通株式会社 | 磁気テープ装置を用いたサブシステムのエラー回復処理装置及び方法 |
US5528755A (en) | 1992-12-22 | 1996-06-18 | International Business Machines Corporation | Invalid data detection, recording and nullification |
US5517670A (en) | 1992-12-30 | 1996-05-14 | International Business Machines Corporation | Adaptive data transfer channel employing extended data block capability |
US5461721A (en) | 1993-04-14 | 1995-10-24 | International Business Machines Corporation | System for transferring data between I/O devices and main or expanded storage under dynamic control of independent indirect address words (IDAWs) |
US5465359A (en) | 1993-11-01 | 1995-11-07 | International Business Machines Corporation | Method and system for managing data and users of data in a data processing system |
US5584039A (en) | 1993-11-08 | 1996-12-10 | International Business Machines Corporation | System for coordinating execution of multiple concurrent channel programs without host processor involvement using suspend and resume commands to control data transfer between I/O devices |
JP3528094B2 (ja) | 1994-02-09 | 2004-05-17 | 株式会社日立製作所 | バス利用方法および記憶制御装置 |
US6769009B1 (en) | 1994-05-31 | 2004-07-27 | Richard R. Reisman | Method and system for selecting a personalized set of information channels |
US5907684A (en) | 1994-06-17 | 1999-05-25 | International Business Machines Corporation | Independent channel coupled to be shared by multiple physical processing nodes with each node characterized as having its own memory, CPU and operating system image |
US5548791A (en) | 1994-07-25 | 1996-08-20 | International Business Machines Corporation | Input/output control system with plural channel paths to I/O devices |
US5860022A (en) | 1994-07-26 | 1999-01-12 | Hitachi, Ltd. | Computer system and method of issuing input/output commands therefrom |
US5564040A (en) | 1994-11-08 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for providing a server function in a logically partitioned hardware machine |
EP0712220A1 (en) | 1994-11-08 | 1996-05-15 | International Business Machines Corporation | Hop-by-hop flow control in an ATM network |
US5613163A (en) | 1994-11-18 | 1997-03-18 | International Business Machines Corporation | Method and system for predefined suspension and resumption control over I/O programs |
US5671441A (en) | 1994-11-29 | 1997-09-23 | International Business Machines Corporation | Method and apparatus for automatic generation of I/O configuration descriptions |
US5600793A (en) | 1994-12-20 | 1997-02-04 | International Business Machines Corporation | Method and system of bi-directional parallel port data transfer between data processing systems |
US5680580A (en) | 1995-02-28 | 1997-10-21 | International Business Machines Corporation | Remote copy system for setting request interconnect bit in each adapter within storage controller and initiating request connect frame in response to the setting bit |
US5742845A (en) | 1995-06-22 | 1998-04-21 | Datascape, Inc. | System for extending present open network communication protocols to communicate with non-standard I/O devices directly coupled to an open network |
JP3225804B2 (ja) | 1995-09-05 | 2001-11-05 | 株式会社日立製作所 | 入出力チャネルの拡張方式 |
US5996026A (en) | 1995-09-05 | 1999-11-30 | Hitachi, Ltd. | Method and apparatus for connecting i/o channels between sub-channels and devices through virtual machines controlled by a hypervisor using ID and configuration information |
US6125411A (en) | 1995-09-13 | 2000-09-26 | Hitachi, Ltd. | System storing plural I/O arrangement information wherein each I/O arrangement information corresponding to each operating system is created in response to more than two operating systems |
GB2291990A (en) | 1995-09-27 | 1996-02-07 | Memory Corp Plc | Flash-memory management system |
US5831985A (en) | 1995-11-09 | 1998-11-03 | Emc Corporation | Method and apparatus for controlling concurrent data transmission from multiple sources in a channel communication system |
US5793983A (en) | 1996-01-22 | 1998-08-11 | International Business Machines Corp. | Input/output channel interface which automatically deallocates failed subchannel and re-segments data block for transmitting over a reassigned subchannel |
US5812877A (en) | 1996-03-15 | 1998-09-22 | Adaptec, Inc. | I/O command block chain structure in a memory |
US5758190A (en) | 1996-04-09 | 1998-05-26 | International Business Machines Corporation | Control unit threshold timeout controls for software missing interrupt handlers in operating systems |
US5768620A (en) | 1996-04-09 | 1998-06-16 | International Business Machines Corporation | Variable timeout method in a missing-interrupt-handler for I/O requests issued by the same operating system |
US5894583A (en) | 1996-04-09 | 1999-04-13 | International Business Machines Corporation | Variable timeout method for improving missing-interrupt-handler operations in an environment having I/O devices shared by one or more systems |
US5901327A (en) | 1996-05-28 | 1999-05-04 | Emc Corporation | Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring |
US6108655A (en) | 1996-07-19 | 2000-08-22 | Cisco Technology, Inc. | Method and apparatus for transmitting images and other objects over a computer network system |
SG101460A1 (en) | 1997-02-14 | 2004-01-30 | Canon Kk | Data communication apparatus and method |
JP3697831B2 (ja) | 1997-04-18 | 2005-09-21 | 株式会社日立製作所 | コンピュータシステム |
TW375529B (en) | 1997-05-14 | 1999-12-01 | Sega Corp | Data transmission method and game system using the same |
US5918028A (en) | 1997-07-08 | 1999-06-29 | Motorola, Inc. | Apparatus and method for smart host bus adapter for personal computer cards |
US6263380B1 (en) | 1997-10-14 | 2001-07-17 | Mitutoyo Corporation | Measurement data processing unit |
US6460087B1 (en) | 1998-02-25 | 2002-10-01 | Kdd Corporation | Method of transferring file |
US6360282B1 (en) | 1998-03-25 | 2002-03-19 | Network Appliance, Inc. | Protected control of devices by user applications in multiprogramming environments |
US6353612B1 (en) | 1998-06-19 | 2002-03-05 | Brocade Communications Systems, Inc. | Probing device |
US6693880B2 (en) | 1998-09-10 | 2004-02-17 | International Business Machines Corporation | System of controlling the flow of information between senders and receivers across links being used as channels |
US6185631B1 (en) | 1998-10-14 | 2001-02-06 | International Business Machines Corporation | Program for transferring execution of certain channel functions to a control unit and having means for combining certain commands and data packets in one sequence |
US6230218B1 (en) | 1998-10-14 | 2001-05-08 | International Business Machines Corporation | Apparatus for transferring execution of certain channel functions to a control unit and having means for combining certain commands and data packets in one sequence |
US6343335B1 (en) | 1998-10-29 | 2002-01-29 | International Business Machines Corporation | System for repositioning an I/O device to a predetermined position to retry a program without knowledge of which part of the program caused the retry |
US6195330B1 (en) | 1998-11-05 | 2001-02-27 | David C. Sawey | Method and system for hit-less switching |
KR100273641B1 (ko) | 1998-11-11 | 2000-12-15 | 윤종용 | 공통 메모리 스위치에서 셀 그룹 처리장치 및 그 처리방법 |
JP3990833B2 (ja) | 1998-12-11 | 2007-10-17 | キヤノン株式会社 | 通信制御方法及び装置 |
US6347334B1 (en) | 1999-01-06 | 2002-02-12 | Mcdata Corporation | Self-description extended link service for networks |
US6772207B1 (en) | 1999-01-28 | 2004-08-03 | Brocade Communications Systems, Inc. | System and method for managing fibre channel switching devices |
US6351779B1 (en) | 1999-03-12 | 2002-02-26 | Agilent Technologies, Inc. | Extension library to standard visa library for support of complex I/O functions |
US6484217B1 (en) | 1999-04-20 | 2002-11-19 | International Business Machines Corporation | Managing shared devices in a data processing system |
US6401223B1 (en) | 1999-05-21 | 2002-06-04 | Unisys Corporation | Programmable system for invalidating pending requests within a data processing system |
TW549004B (en) | 1999-06-15 | 2003-08-21 | Matsushita Electric Works Ltd | Portable programming device for supervisory remote control system |
US6718139B1 (en) | 1999-09-13 | 2004-04-06 | Ciena Corporation | Optical fiber ring communication system |
US6609165B1 (en) | 1999-09-27 | 2003-08-19 | International Business Machines Corporation | Method and apparatus for using fibre channel extended link service commands in a point-to-point configuration |
US6651125B2 (en) | 1999-09-28 | 2003-11-18 | International Business Machines Corporation | Processing channel subsystem pending I/O work queues based on priorities |
US6584511B1 (en) | 2000-03-24 | 2003-06-24 | Unisys Corporation | Loop initialization procedure exception handling for fibre channel transmissions |
US6658603B1 (en) | 2000-04-17 | 2003-12-02 | International Business Machines Corporation | Method and apparatus for efficiently generating and implementing engine error codes and verifying the correctness of the implementation of the engine error codes |
US6594785B1 (en) | 2000-04-28 | 2003-07-15 | Unisys Corporation | System and method for fault handling and recovery in a multi-processing system having hardware resources shared between multiple partitions |
US6862322B1 (en) | 2000-05-19 | 2005-03-01 | International Business Machines Corporation | Switchable-bandwidth optical receiver |
US6609161B1 (en) | 2000-06-01 | 2003-08-19 | Adaptec, Inc. | Two-dimensional execution queue for host adapters |
JP2002016655A (ja) | 2000-06-28 | 2002-01-18 | Sony Corp | 伝送方法、伝送システム、伝送装置及び伝送制御装置 |
US6662319B1 (en) | 2000-08-31 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Special encoding of known bad data |
EP1362499B1 (en) | 2000-08-31 | 2012-02-15 | Dolby Laboratories Licensing Corporation | Method for apparatus for audio matrix decoding |
US6694390B1 (en) | 2000-09-11 | 2004-02-17 | Intel Corporation | Managing bus transaction dependencies |
US6751683B1 (en) | 2000-09-29 | 2004-06-15 | International Business Machines Corporation | Method, system and program products for projecting the impact of configuration changes on controllers |
US6950888B1 (en) | 2000-09-29 | 2005-09-27 | International Business Machines Corporation | Method, system and program products for determining whether I/O constraints exist for controllers of a computing environment |
US6678748B2 (en) | 2000-09-29 | 2004-01-13 | Emc Corporation | Method for optimizing multiple input/output requests to a single logical device |
US6697983B1 (en) | 2000-10-24 | 2004-02-24 | At&T Wireless Services, Inc. | Data link layer tunneling technique for high-speed data in a noisy wireless environment |
US6622268B2 (en) | 2000-11-29 | 2003-09-16 | Intel Corp | Method and apparatus for propagating error status over an ECC protected channel |
US7127514B2 (en) | 2000-12-28 | 2006-10-24 | Microsoft Corporation | Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client |
US7155569B2 (en) | 2001-02-28 | 2006-12-26 | Lsi Logic Corporation | Method for raid striped I/O request generation using a shared scatter gather list |
US6834363B2 (en) | 2001-03-22 | 2004-12-21 | International Business Machines Corporation | Method for prioritizing bus errors |
US6898202B2 (en) | 2001-06-27 | 2005-05-24 | International Business Machines Corporation | Method, apparatus and computer program for informing a requesting device of port configuration changes in a computer network switching device |
US20030056000A1 (en) | 2001-07-26 | 2003-03-20 | Nishan Systems, Inc. | Transfer ready frame reordering |
US7315911B2 (en) | 2005-01-20 | 2008-01-01 | Dot Hill Systems Corporation | Method for efficient inter-processor communication in an active-active RAID system using PCI-express links |
US6754738B2 (en) | 2001-09-28 | 2004-06-22 | International Business Machines Corporation | Low overhead I/O interrupt |
US6859866B2 (en) | 2001-10-01 | 2005-02-22 | International Business Machines Corporation | Synchronizing processing of commands invoked against duplexed coupling facility structures |
US6745299B2 (en) | 2001-11-19 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method for evaluation of scalable symmetric multiple processor cache coherency protocols and algorithms |
US7512133B2 (en) | 2001-12-03 | 2009-03-31 | International Business Machines Corporation | Method and apparatus for obtaining multiple port addresses by a fibre channel from a network fabric |
US7599360B2 (en) | 2001-12-26 | 2009-10-06 | Cisco Technology, Inc. | Methods and apparatus for encapsulating a frame for transmission in a storage area network |
US7085860B2 (en) | 2002-01-11 | 2006-08-01 | International Business Machines Corporation | Method and apparatus for a non-disruptive recovery of a single partition in a multipartitioned data processing system |
US7007142B2 (en) | 2002-02-19 | 2006-02-28 | Intel Corporation | Network data storage-related operations |
US7099814B2 (en) | 2002-03-29 | 2006-08-29 | International Business Machines Corportion | I/O velocity projection for bridge attached channel |
US6898723B2 (en) | 2002-04-01 | 2005-05-24 | Mitac International Corp. | Method for verifying clock signal frequency of computer sound interface that involves checking whether count value of counter is within tolerable count range |
US7543087B2 (en) | 2002-04-22 | 2009-06-02 | Alacritech, Inc. | Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device |
JP4704659B2 (ja) | 2002-04-26 | 2011-06-15 | 株式会社日立製作所 | 記憶装置システムの制御方法および記憶制御装置 |
US20030208581A1 (en) | 2002-05-02 | 2003-11-06 | Behren Paul D. Von | Discovery of fabric devices using information from devices and switches |
US7120728B2 (en) | 2002-07-31 | 2006-10-10 | Brocade Communications Systems, Inc. | Hardware-based translating virtualization switch |
US7107385B2 (en) | 2002-08-09 | 2006-09-12 | Network Appliance, Inc. | Storage virtualization by layering virtual disk objects on a file system |
US6826661B2 (en) | 2002-08-30 | 2004-11-30 | Veritas Operating Corporation | Methods and systems for storage architectures |
US20040054776A1 (en) | 2002-09-16 | 2004-03-18 | Finisar Corporation | Network expert analysis process |
US7539777B1 (en) | 2002-10-25 | 2009-05-26 | Cisco Technology, Inc. | Method and system for network time protocol forwarding |
US7080094B2 (en) | 2002-10-29 | 2006-07-18 | Lockheed Martin Corporation | Hardware accelerated validating parser |
US7418574B2 (en) | 2002-10-31 | 2008-08-26 | Lockheed Martin Corporation | Configuring a portion of a pipeline accelerator to generate pipeline date without a program instruction |
US7202801B2 (en) | 2002-12-11 | 2007-04-10 | Geospatial Technologies, Inc. | Method and apparatus for an automated location-based, dynamic notification system (ALDNS) |
US7277387B2 (en) | 2003-01-30 | 2007-10-02 | Wind River Systems, Inc. | Package manager |
US7324455B2 (en) | 2003-03-14 | 2008-01-29 | International Business Machines Corporation | Transfer of error-analysis and statistical data in a fibre channel input/output system |
US6915378B2 (en) | 2003-04-23 | 2005-07-05 | Hypernova Technologies, Inc. | Method and system for improving the performance of a processing system |
US7000036B2 (en) | 2003-05-12 | 2006-02-14 | International Business Machines Corporation | Extended input/output measurement facilities |
US7085898B2 (en) | 2003-05-12 | 2006-08-01 | International Business Machines Corporation | Coherency management for a “switchless” distributed shared memory computer system |
US7058735B2 (en) | 2003-06-02 | 2006-06-06 | Emulex Design & Manufacturing Corporation | Method and apparatus for local and distributed data memory access (“DMA”) control |
TWI271626B (en) | 2003-06-17 | 2007-01-21 | Delta Electronics Inc | Data transmission method for microprocessors of programmable logic controller |
US7684401B2 (en) | 2003-07-21 | 2010-03-23 | Qlogic, Corporation | Method and system for using extended fabric features with fibre channel switch elements |
US7124207B1 (en) | 2003-08-14 | 2006-10-17 | Adaptec, Inc. | I2O command and status batching |
US7149823B2 (en) | 2003-08-29 | 2006-12-12 | Emulex Corporation | System and method for direct memory access from host without processor intervention wherein automatic access to memory during host start up does not occur |
EP1675327B1 (en) | 2003-10-17 | 2013-01-02 | Nippon Telegraph And Telephone Corporation | Mail distribution system, mail distribution method, and mail distribution program |
KR20050043426A (ko) | 2003-11-06 | 2005-05-11 | 삼성전자주식회사 | 파이프라인 버스 시스템에서 커맨드 전송 방법 및 장치 |
US20050105456A1 (en) | 2003-11-18 | 2005-05-19 | Cookson Christopher J. | Double-sided optical disc |
US7634582B2 (en) | 2003-12-19 | 2009-12-15 | Intel Corporation | Method and architecture for optical networking between server and storage area networks |
US7564791B2 (en) | 2003-12-29 | 2009-07-21 | Intel Corporation | Monitoring packet flows |
US7382733B2 (en) | 2004-02-12 | 2008-06-03 | International Business Machines Corporation | Method for handling reordered data packets |
US7133988B2 (en) | 2004-02-25 | 2006-11-07 | Hitachi, Ltd. | Method and apparatus for managing direct I/O to storage systems in virtualization |
US20050223291A1 (en) | 2004-03-24 | 2005-10-06 | Zimmer Vincent J | Methods and apparatus to provide an execution mode transition |
JP2005293363A (ja) | 2004-04-01 | 2005-10-20 | Toshiba Corp | ディスクアレイコントローラおよび情報処理装置 |
US8171170B2 (en) | 2004-04-30 | 2012-05-01 | Emc Corporation | Storage switch task processing synchronization |
US7240273B2 (en) | 2004-05-13 | 2007-07-03 | Industrial Technology Research Institute | Cyclic redundancy check modification for message length detection and error detection |
US7555554B2 (en) | 2004-08-06 | 2009-06-30 | Microsoft Corporation | System and method for generating selectable extension to media transport protocol |
US7711871B1 (en) | 2004-08-30 | 2010-05-04 | Crossroads Systems, Inc. | Interface device and method for command processing |
US7443798B2 (en) | 2004-09-03 | 2008-10-28 | Agere Systems Inc. | Transmit adaptive equalization for communication system with one or more serial data channels |
US7577772B2 (en) | 2004-09-08 | 2009-08-18 | Qlogic, Corporation | Method and system for optimizing DMA channel selection |
GB2419198A (en) | 2004-10-14 | 2006-04-19 | Hewlett Packard Development Co | Identifying performance affecting causes in a data storage system |
US7398335B2 (en) | 2004-11-22 | 2008-07-08 | Qlogic, Corporation | Method and system for DMA optimization in host bus adapters |
JP4575119B2 (ja) | 2004-11-25 | 2010-11-04 | 株式会社日立製作所 | ストレージシステム |
US7164425B2 (en) | 2004-12-21 | 2007-01-16 | Qlogic Corporation | Method and system for high speed network application |
US7672323B2 (en) | 2005-01-14 | 2010-03-02 | Cisco Technology, Inc. | Dynamic and intelligent buffer management for SAN extension |
US7526633B2 (en) | 2005-03-23 | 2009-04-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
JP2006277583A (ja) | 2005-03-30 | 2006-10-12 | Hitachi Ltd | データ処理システム、データ処理方法、及びプログラム |
US7970953B2 (en) | 2005-06-30 | 2011-06-28 | Intel Corporation | Serial ATA port addressing |
JP2007058646A (ja) | 2005-08-25 | 2007-03-08 | Hitachi Ltd | データ処理システム |
US20070072543A1 (en) | 2005-09-06 | 2007-03-29 | Nokia Corporation | Enhanced signaling of pre-configured interaction message in service guide |
US7577773B1 (en) | 2005-09-09 | 2009-08-18 | Qlogic, Corporation | Method and system for DMA optimization |
JP4527640B2 (ja) | 2005-09-15 | 2010-08-18 | 株式会社ソニー・コンピュータエンタテインメント | データ読出装置 |
JP2007122108A (ja) | 2005-10-25 | 2007-05-17 | Hitachi Ltd | セルフチェック機能を有するディスクドライブ装置を用いたストレージシステムの制御 |
US7484021B2 (en) | 2005-10-27 | 2009-01-27 | Cisco Technology, Inc. | Technique for implementing virtual fabric membership assignments for devices in a storage area network |
US20070162631A1 (en) | 2005-12-28 | 2007-07-12 | International Business Machines Corporation | Method for selectable software-hardware internet SCSI |
US7594057B1 (en) | 2006-01-09 | 2009-09-22 | Qlogic, Corporation | Method and system for processing DMA requests |
JP2007199975A (ja) | 2006-01-26 | 2007-08-09 | Hitachi Ltd | データ処理システム及びデータ処理方法 |
US9032164B2 (en) | 2006-02-17 | 2015-05-12 | Emulex Corporation | Apparatus for performing storage virtualization |
US7743197B2 (en) | 2006-05-11 | 2010-06-22 | Emulex Design & Manufacturing Corporation | System and method for virtualizing PCIe devices |
US20080040519A1 (en) | 2006-05-02 | 2008-02-14 | Alacritech, Inc. | Network interface device with 10 Gb/s full-duplex transfer rate |
US8381214B2 (en) | 2006-05-05 | 2013-02-19 | Microsoft Corporation | Extensible job submission |
US7826349B2 (en) | 2006-05-30 | 2010-11-02 | Intel Corporation | Connection management mechanism |
US20080043563A1 (en) | 2006-08-15 | 2008-02-21 | International Business Machines Corporation | Flexibly controlling the transfer of data between input/output devices and memory |
US8032581B2 (en) | 2006-08-30 | 2011-10-04 | International Business Machines Corporation | Persistent information unit pacing |
US7500030B2 (en) | 2006-08-30 | 2009-03-03 | International Business Machines Corporation | Control of information units in fibre channel communications |
US7502873B2 (en) | 2006-10-10 | 2009-03-10 | International Business Machines Corporation | Facilitating access to status and measurement data associated with input/output processing |
US7797414B2 (en) | 2007-01-31 | 2010-09-14 | International Business Machines Corporation | Establishing a logical path between servers in a coordinated timing network |
US8406248B2 (en) | 2007-04-13 | 2013-03-26 | Hart Communication Foundation | Priority-based scheduling and routing in a wireless network |
US7765336B2 (en) | 2007-06-11 | 2010-07-27 | Emulex Design & Manufacturing Corporation | Autonomous mapping of protected data streams to fibre channel frames |
US8020074B2 (en) | 2007-08-24 | 2011-09-13 | Datadirect Networks, Inc. | Method for auto-correction of errors in a RAID memory system |
US8082481B2 (en) | 2008-02-14 | 2011-12-20 | International Business Machines Corporation | Multiple CRC insertion in an output data stream |
US7840717B2 (en) | 2008-02-14 | 2010-11-23 | International Business Machines Corporation | Processing a variable length device command word at a control unit in an I/O processing system |
US7917813B2 (en) | 2008-02-14 | 2011-03-29 | International Business Machines Corporation | Exception condition determination at a control unit in an I/O processing system |
US8214562B2 (en) | 2008-02-14 | 2012-07-03 | International Business Machines Corporation | Processing of data to perform system changes in an input/output processing system |
US7937507B2 (en) | 2008-02-14 | 2011-05-03 | International Business Machines Corporation | Extended measurement word determination at a channel subsystem of an I/O processing system |
US8095847B2 (en) | 2008-02-14 | 2012-01-10 | International Business Machines Corporation | Exception condition handling at a channel subsystem in an I/O processing system |
US8108570B2 (en) | 2008-02-14 | 2012-01-31 | International Business Machines Corporation | Determining the state of an I/O operation |
US8312189B2 (en) | 2008-02-14 | 2012-11-13 | International Business Machines Corporation | Processing of data to monitor input/output operations |
US8478915B2 (en) | 2008-02-14 | 2013-07-02 | International Business Machines Corporation | Determining extended capability of a channel path |
US9052837B2 (en) | 2008-02-14 | 2015-06-09 | International Business Machines Corporation | Processing communication data in a ships passing condition |
US7890668B2 (en) | 2008-02-14 | 2011-02-15 | International Business Machines Corporation | Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous |
US8166206B2 (en) | 2008-02-14 | 2012-04-24 | International Business Machines Corporation | Cancel instruction and command for determining the state of an I/O operation |
US8196149B2 (en) | 2008-02-14 | 2012-06-05 | International Business Machines Corporation | Processing of data to determine compatability in an input/output processing system |
US8176222B2 (en) | 2008-02-14 | 2012-05-08 | International Business Machines Corporation | Early termination of an I/O operation in an I/O processing system |
US7904605B2 (en) | 2008-02-14 | 2011-03-08 | International Business Machines Corporation | Computer command and response for determining the state of an I/O operation |
US7840718B2 (en) | 2008-02-14 | 2010-11-23 | International Business Machines Corporation | Processing of data to suspend operations in an input/output processing log-out system |
US8001298B2 (en) | 2008-02-14 | 2011-08-16 | International Business Machines Corporation | Providing extended measurement data in an I/O processing system |
US8117347B2 (en) | 2008-02-14 | 2012-02-14 | International Business Machines Corporation | Providing indirect data addressing for a control block at a channel subsystem of an I/O processing system |
US7908403B2 (en) | 2008-02-14 | 2011-03-15 | International Business Machines Corporation | Reserved device access contention reduction |
US7941570B2 (en) | 2008-02-14 | 2011-05-10 | International Business Machines Corporation | Bi-directional data transfer within a single I/O operation |
US7899944B2 (en) | 2008-02-14 | 2011-03-01 | International Business Machines Corporation | Open exchange limiting in an I/O processing system |
GB2460841B (en) | 2008-06-10 | 2012-01-11 | Virtensys Ltd | Methods of providing access to I/O devices |
US7983257B2 (en) | 2008-07-18 | 2011-07-19 | Emulex Design & Manufacturing Corporation | Hardware switch for hypervisors and blade servers |
US7937504B2 (en) | 2008-07-31 | 2011-05-03 | International Business Machines Corporation | Transport control channel program message pairing |
US8055807B2 (en) | 2008-07-31 | 2011-11-08 | International Business Machines Corporation | Transport control channel program chain linking including determining sequence order |
US20100064072A1 (en) | 2008-09-09 | 2010-03-11 | Emulex Design & Manufacturing Corporation | Dynamically Adjustable Arbitration Scheme |
JP5107880B2 (ja) | 2008-12-10 | 2012-12-26 | 株式会社日立製作所 | データ転送処理装置及び方法 |
-
2011
- 2011-06-01 US US13/150,530 patent/US8738811B2/en active Active
-
2012
- 2012-05-17 GB GB1321241.0A patent/GB2505592B/en active Active
- 2012-05-17 CN CN201280024327.1A patent/CN103620571B/zh active Active
- 2012-05-17 WO PCT/IB2012/052489 patent/WO2012164428A1/en active Application Filing
- 2012-10-22 US US13/657,036 patent/US8683083B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110060848A1 (en) * | 2006-10-10 | 2011-03-10 | International Business Machines Corporation | System and program products for facilitating input/output processing by using transport control words to reduce input/output communications |
US20100030918A1 (en) * | 2008-07-31 | 2010-02-04 | International Business Machines Corporation | Transport control channel program chain linked branching |
US20100274876A1 (en) * | 2009-04-28 | 2010-10-28 | Mellanox Technologies Ltd | Network interface device with memory management capabilities |
US20110113159A1 (en) * | 2009-11-12 | 2011-05-12 | International Business Machines Corporation | Communication with input/output system devices |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106463039A (zh) * | 2014-05-16 | 2017-02-22 | 凌力尔特有限公司 | 配置信号处理系统 |
CN109101343A (zh) * | 2017-06-21 | 2018-12-28 | 慧与发展有限责任合伙企业 | 响应于提交请求提交已确认的数据 |
CN112486270A (zh) * | 2019-09-12 | 2021-03-12 | 株式会社东芝 | 电子设备、电子设备系统以及磁盘装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2505592B (en) | 2014-08-06 |
CN103620571B (zh) | 2016-03-16 |
US8683083B2 (en) | 2014-03-25 |
WO2012164428A1 (en) | 2012-12-06 |
US8738811B2 (en) | 2014-05-27 |
GB2505592A (en) | 2014-03-05 |
US20130046905A1 (en) | 2013-02-21 |
GB201321241D0 (en) | 2014-01-15 |
US20120311286A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102810081B (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN102819504B (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN102811112B (zh) | 光纤信道输入/输出数据路由系统和方法 | |
US9986028B2 (en) | Techniques to replicate data between storage servers | |
CN102819503B (zh) | 光纤信道输入/输出数据路由系统和方法 | |
US9298379B2 (en) | Bi-directional data transfer within a single I/O operation | |
JP5181141B2 (ja) | 入出力処理システムにおいて間接データ・アドレッシングを提供するための装置、並びにその方法およびコンピュータ・プログラム | |
US10360176B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
US7475170B2 (en) | Data transfer device for transferring data to and from memory via a bus | |
JP2011512591A5 (zh) | ||
CN103620571B (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN102819505B (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN103562893A (zh) | 促进通道子系统与输入/输出设备之间的传输模式输入/输出操作 | |
CN104346234A (zh) | 一种内存访问的方法、设备及系统 | |
CN110059030A (zh) | 一种基于uart串联环路网络的数据传输系统及方法 | |
CN103597458A (zh) | 促进在信道子系统和输入/输出设备之间的传输模式输入/输出操作 | |
CN103562899A (zh) | 促进通道子系统与输入/输出设备之间的传输模式输入/输出操作 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |