发明内容
本发明的目的是为了克服现有的缓存方法的不足,提出了一种FC交换机的数据缓存方法。
本发明的技术方案是:一种光纤通道交换机的数据缓存方法,包括步骤:
步骤81:FC交换机输入端口一直处于监测输入端口是否有FC数据到来的状态,当正确检测到有FC数据到来时,则输入端口会立即向缓存器发出数据缓存请求;
步骤82:当输入端口发出数据缓存请求时,缓存器接受数据缓存请求,立即在输入端口的缓存器中为FC数据分配一个缓冲器,然后将FC数据缓存在指定的缓冲器;同时缓冲器一直监测该FC数据是否被转发出去,如果转发成功,则缓冲器可以重新被指定为另一个FC数据的缓冲器,这样每一个缓冲器可以作为一个共享的缓冲器;如果没有转发成功,当FC交换机输入端口监测到有另一个FC数据到来时,则FC交换机为这个FC数据分配另外一个缓冲器;
步骤83:在缓存FC数据的时候,同时产生FC数据必须的FC数据描述信息,FC数据描述信息记录着FC数据的优先级和FC数据所在缓存器中数据缓冲器的基地址;
步骤84:输入端口在产生正确的FC数据描述信息时,将FC数据描述信息根据FC数据所要转发输出端口,存入到VOQ缓存器中对应的数据描述信息缓冲器中;同时数据描述信息缓冲器将其中最先缓存在数据描述信息缓冲器的FC数据描述信息,作为数据转发请求信号向仲裁器进行仲裁请求;如果该数据转发请求信号没有被仲裁器所接受,则一直保持该数据转发请求信号;如果该数据转发请求信号被仲裁器所接受,同时数据描述信息缓冲器有FC数据描述信息,则读取下一个FC数据描述信息作为数据转发请求信号,继续向仲裁器进行仲裁请求;
步骤85:仲裁器将对接收到的数据转发请求信号进行判断,当数据的优先级不相等时,仲裁器根据优先级从大到小的顺序,首先接受最大优先级的数据转发请求信号,然后再接受低优先级的数据转发请求信号;当数据的优先级相等时,仲裁器会根据轮询的方式依次接受数据转发请求信号;
步骤86:FC交换机根据与每个输出端口相关联的仲裁器的仲裁结果,来转发数据。当FC数据被成功转发到输出端口时,FC交换机就通过数据所在的输入端口的相对应的输出端口向与FC交换机相连接的硬件设备回复RDY数据。
本发明的有益效果:本发明对输入端口送过来的FC数据随机的缓存在不同的缓冲器中,FC数据描述信息记录这FC数据的优先级和FC数据所在缓冲器中的基地址,FC数据描述信息根据FC数据所要转发的输出端口存储在VOQ缓存器中对应的数据描述信息缓冲器中。因为VOQ缓存器中每个数据描述信息缓冲器和一个仲裁器相关联,一个仲裁器和一个输出端口相对应。当输入端口接收到有去往不同输出端口的FC数据时,数据能够随机的被缓存在缓冲器中,FC数据描述信息被缓存在VOQ缓存器中不同的缓冲器中。由于FC交换机根据每个仲裁器的结果将FC数据进行转发,所以同一输入端口的FC数据去往不同输出端口中间不会出现队头阻塞。由于缓存器中缓冲器的个数决定了与交换机相连接的硬件设备的BB_credit值,在缓冲到缓冲的流量控制下不会出现数据丢失现象。由于缓存器能够被随机存储FC数据,所以缓存器的利用率得到了提高,同时交换机所需要缓存器的资源大大减少,利于在单芯片上实现。
具体实施方式
下面结合附图和具体的实施例对本发明做详细的说明。
为了更好的描述本实施例,首先作出如下定义:
缓冲到缓冲的信用(BB_credit,buffer to buffer credit)值,表示与当前硬件设备相连接的对方硬件设备的输入端口最多能够缓存FC数据的个数。本实施例中,当前硬件设备也被称为源设备,即主机2、3、4或存储设备5,对方硬件设备为FC交换机1。
缓冲到缓冲的计数(BB_count,buffer to buffer count)值,表示前硬件设备向与当前硬件设备相连接的对方硬件设备的输入端口发送FC数据的个数。
RDY数据:表示FC交换机1在正确接收并成功转发数据时,则会向源设备发送一个固定的32bit数据(即为32’hbc954a4a)。
源设备信用量:源设备的BB_credit值减去源设备的BB_count值所得到的值,表示中间设备即本实施例中的FC交换机1当前能接受的FC数据个数。
图1是本实施例的FC交换机的示例图示。FC交换机1分别耦合到主机2、主机3、主机4和存储设备5中。在本实施例中,主机2、主机3、主机4是支持FC协议的服务器或者客户端,而存储设备5可以是任何形式的存储子系统,如单个磁盘或者磁盘阵列。主机2、主机3、主机4和存储设备5之间可以通过FC交换机1相互传输数据。本实施例中,从主机2和主机3同时发送数据到主机4时,就表明主机2和主机3同时竞争主机4,FC交换机1需要将主机2和主机3发送过来的数据,先进行缓存,然后采用轮询的方式将两个主机发送过来的数据依次发送给主机4。
图2是光纤通道协议中缓冲到缓冲(buffer to buffer)的流量控制过程示意图。根据FC协议中缓冲到缓冲的流量控制特性,支持FC协议的硬件设备有一个BB_credi值和一个BB_count值,本实施例中定义BB_count值的初始值为零,当源设备每发送一个数据时,源设备的BB_count值就会加1,当源设备每接收到一个RDY数据时,源设备的BB_count值就会减1。源设备的BB_credit减去源设备的BB_count所得到的值称之为源设备信用量,源设备信用量表示中间设备当前能接受的FC数据个数,当源设备信用量大于零时则源设备可以发送数据,否则源设备停止发送数据。本实施例中主机2为源设备,FC交换机1为中间设备,主机2到FC交换机1的线条代表信道6,FC交换机1到主机2的线条代表信道7,信道6上的矩形代表源设备向中间设备发送的FC数据,信道7上的三角形代表中间设备向源设备回复的RDY数据。主机2通过信道6向FC交换机1发送FC数据时,FC交换机1在成功转发数据之后就会通过信道7向主机回复RDY数据。主机2每次发送完一个FC数据,主机2中的BB_count值就加1,如果主机2每次接收到一个RDY数据,主机2中的BB_count值就会减1。主机2准备再次发送数据时,需要检查主机2中的源设备信用量是否大于零;如果主机2中的源设备信用量大于零,就可以继续发送数据,否则就停止发送数据。
如图3所示,是光纤通道交换机的结构示意图。本实施例中FC交换机1具有四个输入端口141、输入端口142、输入端口143和输入端口144,四个缓存器111、缓存器112、缓存器113和缓存器114,四个VOQ缓存器121、VOQ缓存器122、VOQ缓存器123和VOQ缓存器124,四个仲裁器131、仲裁器132、仲裁器133和仲裁器134,四个输出端口151、输出端口152、输出端口153和输出端口154。四个输入端口141、输入端口142、输入端口143和输入端口144分别和主机发送端口21、主机发送端口31、主机发送端口41和存储设备发送端口51对应。四个输出端口151、输出端口152、输出端口153和输出端口154分别和主机接收端口22、主机接收端口32、主机接收端口42和存储设备接收端口52对应。
每个缓存器包括四个缓冲器,每个缓冲器能够存储一个最大值为FC数据(本实施例为2148KB),其中,缓存器111包含缓冲器1111、缓冲器1112、缓冲器1113和缓冲器1114,缓存器112包含缓冲器1121、缓冲器1122、缓冲器1123和缓冲器1124,缓存器113包含缓冲器1131、缓冲器1132、缓冲器1133和缓冲器1134,缓存器114包含缓冲器1141、缓冲器1142、缓冲器1143和缓冲器1144。每个输入端口关联一个缓存器,从同一输入端口过来的FC数据可以随机的存储到同一个缓存器的不同缓冲器中。缓存器111与输入端口141相对应,缓存器112与输入端口142相对应,缓存器113与输入端口143相对应,缓存器114与输入端口144相对应。
每个VOQ缓存器包括四个数据描述信息缓冲器,每个数据描述信息缓冲器能够存储四个数据描述信息(本实施例为4X10bit),其中,VOQ缓存器121包含数据描述信息缓冲器1211、数据描述信息缓冲器1212、数据描述信息缓冲器1213和数据描述信息缓冲器1214,VOQ缓存器122包含数据描述信息缓冲器1221、数据描述信息缓冲器1222、数据描述信息缓冲器1223和数据描述信息缓冲器1224,VOQ缓存器123包含数据描述信息缓冲器1231、数据描述信息缓冲器1232、数据描述信息缓冲器1233和数据描述信息缓冲器1234,VOQ缓存器124包含数据描述信息缓冲器1241、数据描述信息缓冲器1242、数据描述信息缓冲器1243和数据描述信息缓冲器1244。每个VOQ缓存器关联一个缓存器,VOQ缓存器分为四个数据描述信息缓冲器,四个数据描述信息缓冲器又分别和四个仲裁器相关联,每个仲裁器对应一个输出端口。在FC数据被随机的存储到缓存器中的同时,由于FC数据包含了输出端口的信息,因此包含了FC数据的优先极和FC数据所在缓冲器的基地址的FC数据描述信息可以根据输出端口的不同被存储到VOQ缓存器中不同的数据描述信息缓冲器中。
数据描述信息缓冲器1211、数据描述信息缓冲器1221、数据描述信息缓冲器1231和数据描述信息缓冲器1241与仲裁器131相关联,数据描述信息缓冲器1212、数据描述信息缓冲器1222、数据描述信息缓冲器1232和数据描述信息缓冲器1242与仲裁器132相关联,数据描述信息缓冲器1213、数据描述信息缓冲器1223、数据描述信息缓冲器1233和数据描述信息缓冲器1243和与裁器133相关联,数据描述信息缓冲器1214、数据描述信息缓冲器1224、数据描述信息缓冲器1234和数据描述信息缓冲器1244与仲裁器134对应。仲裁器131与输出端口151对应,与仲裁器132输出端口152对应,仲裁器133与输出端口153对应,仲裁器134与输出端口154对应。
下面,结合图4对光纤通道交换机的数据缓存方法进行说明。在对方法进行说明前,假定本实施例中主机2、主机3、主机4通过FC交换机1向存储设备5以一定的时间间隙连续发送三个FC数据,其中主机4发送第一个数据的优先级,大于主机3发送第一个数据的优先级。主机3发送第一个数据的优先级,大于主机2发送第一个数据的优先级。主机2、主机3、主机4发送的第二、第三个数据的优先级都相等。然后主机2以相同的时间间隙通过FC交换机1向主机3发送第四个FC数据,主机3、主机4以相同的时间间隙通过FC交换机1向存储设备5发送第四个FC数据。主机2、主机3、主机4所发送的第四个FC数据的优先级和之前的第二、三个FC数据的优先级相等。当主机2发送一个FC数据时,主机2的BB_count值就加一;主机3发送一个FC数据时,主机3的BB_count值就加一;主机4发送一个FC数据时,主机4的BB_count值就加一。主机发送端口21、主机发送端口31、主机发送端口41以一定时间间隙分别同时向FC交换机1的输入端口141、输入端口142、输入端口143连续发送三个FC数据。然后主机发送端口21以相同时间间隙向FC交换机1的输入端口141发送第四个FC数据,主机发送端口31、主机发送端口41以相同时间间隙分别同时向输入端口142、输入端口143发送第四个FC数据。
基于上述前提,光纤通道交换机的数据缓存方法包括步骤:
步骤81:FC交换机1输入端口一直处于监测输入端口是否有FC数据到来的状态,当正确检测到有FC数据到来时,则输入端口会立即向FC交换机1发出数据缓存请求。
本实施例中,输入端口141、输入端口142、输入端口143则立即会向FC交换机1发出数据缓存请求。
步骤82:当输入端口发出数据缓存请求时,FC交换机1接受数据缓存请求,立即在输入端口的缓存器中为FC数据分配一个缓冲器,然后将FC数据缓存在指定的缓冲器。同时缓冲器一直监测该FC数据是否被转发出去,如果转发成功,则缓冲器可以重新被指定为另一个FC数据的缓冲器,这样每一个缓冲器可以作为一个共享的缓冲器。如果没有转发成功,当FC交换机1输入端口监测到有另一个FC数据到来时,则FC交换机1为这个FC数据分配另外一个缓冲器。
本实施例中,FC交换机1为主机发送端口21发送过来的第一个FC数据分配一个缓冲器1111,第二个FC数据分配一个缓冲器1112,第三个FC数据分配一个缓冲器1113,第四个FC数据分配一个缓冲器1114;为主机发送端口13发送过来的第一个FC数据分配一个缓冲器1121,第二个FC数据分配一个缓冲器1122,第三个FC数据分配一个缓冲器1123,第四个FC数据分配一个缓冲器1124;为主机发送端口41发送过来的第一个FC数据分配一个缓冲器1131,第二个FC数据分配一个缓冲器1132,第三个FC数据分配一个缓冲器1133,第四个FC数据分配一个缓冲器1134。同时输入端口141将接收到的四个FC数据依次缓存到指定的缓冲器1111、缓冲器1112、缓冲器1113和缓冲器1114,输入端口142将接收到的四个FC数据依次缓存到指定的缓冲器1121、缓冲器1122、缓冲器1123和缓冲器1124,输入端口143将接收到的四个FC数据依次缓存到指定的缓冲器1131、缓冲器1132、缓冲器1133和缓冲器1134。同时缓冲器1111、缓冲器1112、缓冲器1113、缓冲器1114,缓冲器1121、缓冲器1122、缓冲器1123、缓冲器1124,缓冲器1131、缓冲器1132、缓冲器1133和缓冲器1134监测FC数据是否被转发成功,如果转发成功则缓冲器1111、缓冲器1112、缓冲器1113、缓冲器1114,缓冲器1121、缓冲器1122、缓冲器1123、缓冲器1124,缓冲器1131、缓冲器1132、缓冲器1133和缓冲器1134就可以作为其他FC数据的缓冲器。
步骤83:在缓存FC数据的时候,同时产生FC数据必须的FC数据描述信息,FC数据描述信息记录着FC数据的优先级和FC数据所在缓存器中数据缓冲器的基地址。
本实施例中,输入端口141、输入端口142和输入端口143分别依次产生四个FC数据描述信息,每个FC数据描述信息记录着对应FC数据的优先级,以及FC数据所在缓冲器1111、缓冲器1112、缓冲器1113、缓冲器1114,缓冲器1121、缓冲器1122、缓冲器1123、缓冲器1124,缓冲器1131、缓冲器1132、缓冲器1133和缓冲器1134的基地址。
步骤84:输入端口在产生正确的FC数据描述信息时,将FC数据描述信息根据FC数据所要转发输出端口,存入到VOQ缓存器中对应的数据描述信息缓冲器中。同时数据描述信息缓冲器将其中最先缓存在数据描述信息缓冲器的FC数据描述信息,作为数据转发请求信号向仲裁器进行仲裁请求。如果该数据转发请求信号没有被仲裁器所接受,则一直保持该数据转发请求信号;如果该数据转发请求信号被仲裁器所接受,同时数据描述信息缓冲器有FC数据描述信息,则读取下一个FC数据描述信息作为数据转发请求信号,继续向仲裁器进行仲裁请求。
本实施例中,输入端口141将产生的前面三个FC数据描述信息缓依次存在数据描述信息缓冲器1214中,将第四个FC数据描述信息缓存在数据描述信息缓冲器1212中;输入端口142将产生的四个FC数据描述信息依次缓存在1224中,输入端口143将产生的四个FC数据描述信息依次缓存在1234中。同时数据描述信息缓冲器1214、数据描述信息缓冲器1224和数据描述信息缓冲器1234将分别读取其中最先缓存在数据描述信息缓冲器1214、数据描述信息缓冲器1224和数据描述信息缓冲器1234中的FC数据描述信息,作为数据转发请求信号向仲裁器134进行仲裁请求;数据描述信息缓冲器1212,将读取其中最先缓存在数据描述信息缓冲器1212中的FC数据描述信息,作为数据转发请求信号向仲裁器132进行仲裁请求。当仲裁器134接受数据描述信息缓冲器1214、数据描述信息缓冲器1224和数据描述信息缓冲器1234中一个数据转发请求信号,则对应的数据描述信息缓冲器将读取其中下一个FC数据描述信息作为新的数据转发信号向仲裁器134进行仲裁请求,对于其他没有接受的数据转发请求信号,则对应的数据描述信息缓冲器将保持当前的数据转发请求信号继续向仲裁器134进行仲裁请求。当仲裁器132接受数据描述信息缓冲器1212的数据转发请求信号,则判断数据描述信息缓冲器1212中是否有FC数据描述信息,如果有FC数据描述信息,则读取下一个FC数据描述信息作为新的数据转发请求信号,向仲裁器132进行仲裁请求;如果没有FC数据描述信息,则停止向仲裁器132进行仲裁请求。当仲裁器132没有接受数据描述信息缓冲器1212的数据转发请求信号,则数据描述信息缓冲器1212,继续保持当前数据转发请求信号。
步骤85:仲裁器将接受到的数据转发请求信号进行判断,当数据的优先级不相等时,仲裁器根据优先级从大到小的顺序,首先接受最大优先级的数据转发请求信号,然后再接受低优先级的数据转发请求信号;当数据的优先级相等时,仲裁器会根据轮询的方式依次接受数据转发请求信号。
本实施例中,仲裁器134将缓冲器1214、缓冲器1224和缓冲器1234发送过来数据转发请求信号进行优先级判断,仲裁器134首先接受缓冲器1234发送过来的数据转发请求信号作为仲裁结果,然后再接受缓冲器1224发送过来的数据转发请求信号作为仲裁结果,其次接受缓冲器1214发送过来的数据转发请求信号作为仲裁结果;最后将按照轮询的方式依次接受数据描述信息缓冲器1234、数据描述信息缓冲器1224和数据描述信息缓冲器1214发送过来的数据转发请求信号作为仲裁结果。仲裁器132接受数据描述信息缓冲器1212发送过来的数据转发请求信号作为仲裁结果。
步骤86:FC交换机1根据与每个输出端口相关联的仲裁器的仲裁结果,来转发数据。当FC数据被成功转发到输出端口时,FC交换机1就通过数据所在的输入端口的相对应的输出端口向与FC交换机相连接的硬件设备回复RDY数据。
本实施例中,FC交换机1根据仲裁器134的仲裁结果,将输入端口143中缓冲器1131的FC数据转发到输出端口154,FC交换机1通过输出端口154将FC数据发送到存储设备接收端口5中;当缓冲器1131中的FC数据成功转发时,FC交换机1输出端口153向主机接收端口4发送RDY数据。
然后将输入端口142中缓冲器1121的FC数据转发到输出端口154,FC交换机1通过输出端口154将FC数据发送到存储设备接收端口5中;当缓冲器1121中的FC数据成功转发时,FC交换机1输出端口152向主机接收端口3发送RDY数据。
其次将输入端口141中缓冲器1111的FC数据转发到输出端口154,FC交换机1通过输出端口151将FC数据发送到存储设备接收端口5中;当缓冲器1111中的FC数据成功转发时,FC交换机1输出端口151向主机接收端口2发送RDY数据。
最后将依次将缓冲器1132、缓冲器1122、缓冲器1112、缓冲器1133、缓冲器1123、缓冲器1113、缓冲器1134和缓冲器1124的FC数据转发到输出端口154,FC交换机1通过对应的输出端口发送RDY数据到对应的主机接收端口。
FC交换机1根据仲裁器132的仲裁结果,将数据缓冲器1114中的FC数据转发到输出端口152中;当缓冲器1114中FC数据成功转发时,FC交换机1输出端口1向主机接收端口2发送RDY数据。
当主机2接收到一个RDY时,主机2的BB_count值就减一;主机3接收到一个RDY数据时,主机3的BB_count值就减一;主机4接收到一个RDY数据时,主机4的BB_count值就减一。当主机(2、3、4)中的源设备信用量不为零,则继续可以发送数据,FC交换机1则重复如图4所示81、82、83、84、85、86步骤直到FC数据被全部转发成功。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。