具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种命令处理方法,图1是本发明实施例的命令处理方法的流程图,如图1所示,根据本发明实施例的命令处理方法包括:
步骤101,接收主机通过处理层数据包下发的命令。
步骤102,获取处理层数据包包头的高位地址空间中携带的基地址。该基地址由主机预先分配,并用于标识命令的操作类型。
具体地,该基地址是发送命令的地址段的起始地址,设备可以通过自身的配置空间向主机申请,也就是说,主机通过以基地址为起始地址的地址空间发送该命令。在本发明实施例中,该基地址还用于标识命令的操作类型。
步骤103,根据基地址标识的命令的操作类型进行相应的操作。
具体地,上述命令的操作类型可以包括:读操作和写操作。需要说明的是,在本发明实施例中,命令的操作类型还可以包括查询操作等多种操作类型。
下面,对上述处理过程中的细节进行详细的说明。
在本发明实施例下面的描述中,为了描述方便,以接收主机下发的读操作和写操作命令为例进行说明。
具体地,为执行本发明实施例所述技术方案,设备需要通过自身的配置空间向主机申请基地址。图2是本发明实施例的设备的配置空间的示意图,如图2所示,在该设备的配置空间00-15中,包括保存第一基地址(BaseAddress 0)至第六基地址(Base Address 5)的地址空间,设备可以通过这六段地址空间向主机(或系统)申请基地址,申请的基地址数量可以根据实际需要进行设置,本实施例中以申请两个基地址为例进行说明,设备向主机申请的两个基地址分别用于标识读操作和写操作。上述两个基地址为主机分配的地址空间或地址段的起始地址,该地址空间或地址段所占的比特数可以根据实际情况进行调整。需要说明的是,由于配置空间中仅包括六段地址空间,因此,设备最多只能通过配置空间向主机申请六个基地址。
主机在接收到设备的地址段申请后,会对应分配两个地址段给设备,一段地址用于发送读操作命令,该段地址的基地址(即,该段地址的起始地址)用于标识读操作命令,另一段地址用于发送写操作命令,该段地址的基地址用于标识写操作命。随后,主机将分配给设备的两个地址段的基地址写入设备配置空间的相应的地址空间中,如图2所示,在本发明的实施例中,主机将表示读操作的地址段的基地址写入了配置空间的第一基地址空间中,所有主机下发给该设备的读命令都通过该基地址来下发,即,主机在下发读操作时,将该基地址携带在TLP包头的高位地址空间中;主机将表示写操作的地址段的基地址写入了配置空间的第二基地址空间中,所有主机下发给该设备的写命令都通过该基地址来下发,即,主机在下发写操作时,将该基地址携带在TLP包头的高位地址空间中。
具体的,主机在下发读操作命令时,将分配给该设备的标识读操作的基地址携带在TLP包头的高位地址空间中,该高位地址用于路由至接收该命令的设备。例如,如图3所示,图3是本发明实施例的32位TLP包头的示意图,如图3所示,地址[31:2](Address[31:2])为TLP包头中的高位地址空间,在实际应用中,可以根据基地址所占的具体比特数从高位地址空间的最高位依次写入TLP包头的Address[31:2]中。图4是本发明实施例的64位TLP包头的示意图,如图4所示,地址[63:32](Address[63:32])和地址[31:2](Address[31:2])为TLP包头中的高位地址空间,在实际应用中,可以根据基地址所占的具体比特数从高位地址空间的最高位依次写入TLP包头的Address[63:32]和/或Address[31:2]中。上述高位地址空间中携带的基地址作为起始地址参与路由。当设备接收到命令后,可以从包头的高位地址空间中的最高位开始,解析TLP包头高位地址空间中的基地址,并根据解析出的基地址确定收到命令的操作类型是读操作还是写操作。从而根据命令的操作类型进行相应的操作。
需要说明的是,本发明实施例所述的设备为具有快速外设组件互联标准接口的设备,包括具有快速外设组件互联标准接口的固态硬盘(SolidState Disk;以下简称:SSD)。本领域技术人员可以理解的是,本发明实施例不仅可以用在具有PCIE接口的SSD中,还可以用于所有通过PCIE总线互连的两个设备之间的通信。
通过上述处理,在TLP包的有效载荷中,就不需要使用专门的字节来表示命令的操作类型,从而可以减少命令本身的长度,同时可以减少由于频繁执行读写命令而进行的存储器读写操作的次数,从而提高了链路的利用率,并提高了系统在单位时间内能处理的最大输入/输出频度(Input/Output Per Second;以下简称:IOPS)和连续读写性能。
此外,从上述的处理过程可以看出,本发明实施例直接使用高位地址空间中的基地址标识命令的操作类型,命令中不再需要使用专门的字节来表示命令的操作类型,从而增加了命令中的保留位,该保留位可以用来进行命令的扩展。当命令需要扩展时,就不需要再多发一次读写命令,在一定程度上也可以提高链路的利用率、IOPS以及连续读写性能。
根据本发明的另一实施例,提供了一种命令发送方法,图5是本发明实施例的命令发送方法的流程图,如图5所示,根据本发明实施例的命令发送方法包括:
步骤501,主机根据设备的申请向设备下发基地址,该基地址用于标识主机向设备下发的命令的操作类型。
具体地,命令的操作类型可以包括:读操作和写操作。需要说明的是,在本发明实施例中,命令的操作类型还可以包括查询操作等多种操作类型,但是,在本发明实施例下面的描述中,仅以读操作和写操作为例进行说明。
首先,设备需要通过自身的配置空间向主机申请基地址,设备的配置空间可以参照图2进行理解,此外,在上面的实施例中,已经对设备通过配置空间向主机申请基地址的过程进行了详细的说明,具体内容可以参照上述实施例中的相应内容进行理解,在此不再赘述。
主机在接收到设备的地址段申请后,会对应分配两个地址段给设备,一段地址用于标识读操作,另一段地址用于标识写操作。随后,主机将分配给设备的两个地址段的基地址(即,地址段的起始地址)写在设备配置空间的相应的地址空间中,如图2所示,在本发明的实施例中,主机将表示读操作的地址段的基地址写入了配置空间的第一基地址空间中,所有主机下发给该设备的读命令都通过该基地址来下发,即,主机在下发读操作时,将该基地址携带在TLP包头的高位地址空间中;主机将表示写操作的地址段的基地址写入了配置空间的第二基地址空间中,所有主机下发给该设备的写命令都通过该基地址来下发。
步骤502,主机通过处理层数据包向设备下发命令,其中,处理层数据包的高位地址空间中携带有基地址,该基地址用于标识命令的操作类型。
具体的,当主机在下发读操作时,将分配给该设备的标识读操作命令的基地址携带在TLP包头的高位地址空间中,该高位地址用于路由至接收该命令的设备。如图3所示,地址[31:2](Address[31:2])为TLP包头中的高位地址空间,在实际应用中,可以根据基地址所占的具体比特数从高位地址空间的最高位依次写入TLP包头的Address[31:2]中。如图4所示,地址[63:32](Address[63:32])和地址[31:2](Address[31:2])为TLP包头中的高位地址空间,在实际应用中,可以根据基地址所占的具体比特数从高位地址空间的最高位依次写入TLP包头的Address[63:32]和/或Address[31:2]中。
在主机通过TLP向设备下发命令后,其中携带的该基地址作为起始地址参与路由,使接收该命令的设备可以根据TLP包头中的基地址确定命令的操作类型,并根据命令的操作类型进行相应的操作。
通过上述处理,通过利用TLP包头中地址的部分信息来标识命令类型,减少主机向设备发送数据的读写命令时的命令长度,从而减少进行存储器读写操作的次数,进而提高链路的利用率。此外,增加了命令中的保留位,使命令能有更多的扩展。
根据本发明的实施例,提供了一种具有快速外设组件互联标准接口的设备,图6是本发明实施例的具有快速外设组件互联标准接口的设备的结构示意图,如图6所示,根据本发明实施例的具有快速外设组件互联标准接口的设备包括:接收模块60、获取模块62、第一处理模块64。下面,结合附图,对本发明实施例的设备进行详细说明。
接收模块60,用于接收主机通过TLP下发的命令;
获取模块62,用于获取TLP包头的高位地址空间中携带的基地址,其中,该基地址由主机预先分配,并用于标识命令的操作类型;
具体地,该基地址是发送命令的地址段的起始地址,设备可以通过自身的配置空间向主机申请,也就是说,主机通过以基地址为起始地址的地址空间发送该命令。在本发明实施例中,该基地址还用于标识命令的操作类型;
可选地,命令的操作类型可以包括:读操作和写操作。需要说明的是,在本发明实施例中,命令的操作类型还可以包括查询操作等多种操作类型,但是,在本发明实施例下面的描述中,仅以读操作和写操作为例进行说明。
具体地,在接收模块60接收主机通过TLP下发的命令之前,设备中的申请模块会首先通过设备的配置空间向主机申请所述基地址。如图2所示,在该设备的配置空间00-15中,包括保存第一基地址(Base Address 0)至第六基地址(Base Address 5)的地址空间,申请模块可以通过这六段地址空间向主机(或系统)申请基地址,申请基地址的数量可以根据实际需要进行设置,本实施例中以申请两个基地址为例进行说明。上述两个基地址分别用于标识读操作和写操作。上述两个基地址为主机分配的地址空间的起始地址,该地址空间所占的比特数可以根据实际情况进行调整。需要说明的是,由于配置空间中仅包括六段地址空间,因此,设备最多只能通过配置空间向主机申请的六个基地址。随后,主机会对应分配两个地址段给设备,并将两段地址的基地址写入配置空间中的地址空间,需要说明的是,基地址在TLP包头中的具体位置可以参照图3、图4进行理解,在此不再赘述。
当主机下发一个数据的读写命令时,将分配给该设备的标识读操作的基地址携带在TLP包头的高位地址空间中,该高位地址用于路由至接收该命令的设备,其中,基地址作为起始地址参与路由。获取模块62通过解析TLP包头高位地址空间中的基地址,可以确定收到命令的操作类型。
第一处理模块64,用于根据基地址标识的的命令的操作类型进行相应的操作。
需要说明的是,本发明实施例所述的设备为具有快速外设组件互联标准接口的设备,更具体地,本发明实施例所述的设备为具有快速外设组件互联标准接口的固态硬盘(Solid State Disk;以下简称:SSD)。也就是说,本发明实施例不仅可以用在具有PCIE接口的SSD中,还可以用于所有通过PCIE总线互连的两个设备之间的通信。
通过上述处理,设备通过向主机申请基地址,并解析TLP包头中携带的基地址,就可以确定命令的操作类型,同时可以减少命令本身的长度,并减少了由于频繁执行读写命令而进行的存储器写操作的次数,从而提高了链路的利用率以及系统在单位时间内能处理的最大输入/输出频度和连续读写性能。
根据本发明的实施例,提供了一种主机设备,图7是本发明实施例的主机设备的结构示意图,如图7所示,根据本发明实施例的主机设备包括:第二处理模块70、发送模块72,下面,结合附图,对本发明实施例的主机设备进行详细的说明。
第二处理模块70,用于在处理层数据包的高位地址空间中携带基地址,该基地址用于标识命令的操作类型。
具体地,命令的操作类型可以包括:读操作和写操作。需要说明的是,在本发明实施例中,命令的操作类型还可以包括查询操作等多种操作类型,但是,在本发明实施例下面的描述中,仅以读操作和写操作为例进行说明。
首先,设备需要通过自身的配置空间向主机申请基地址,设备的配置空间可以参照图2进行理解,此外,在上面的实施例中,已经对设备通过配置空间向主机申请基地址的过程进行了详细的说明,具体内容可以参照上述实施例中的相应内容进行理解,在此不再赘述。
主机在接收到设备的地址段申请后,会对应分配两个地址段给设备,一段地址用于标识读操作,另一端地址用于标识写操作。随后,主机将分配给设备的两个地址段的基地址(即,地址段的起始地址)写在设备配置空间的相应的地址空间中,如图2所示,在本发明的实施例中,主机将表示读操作的地址段的基地址写入了配置空间的第一基地址空间中,下发给该设备的所有读命令都通过该基地址来下发,主机将表示写操作的地址段的基地址写入了配置空间的第二基地址(Base Address 2)空间中,下发给该设备的所有写命令都通过该基地址来下发。
基地址在TLP包头中的具体位置可以参照图3、图4进行理解,在此不再赘述。
发送模块72,用于通过处理层数据包向设备下发命令,其中,处理层数据包的高位地址空间中携带有基地址,该基地址用于标识命令的操作类型。
在发送模块72通过TLP向设备下发命令后,包头中的高位地址用于路由至接收该命令的设备,高位地址空间中携带的该基地址作为起始地址参与路由。使接收该命令的可以根据TLP包头中的基地址确定命令的操作类型,并根据命令的操作类型进行相应的操作。
通过上述处理,主机设备通过在TLP包头中携带基地址的方式来标识命令类型,减少了主机向设备发送数据的读写命令时的命令长度,从而减少进行存储器读写操作的次数,进而提高链路的利用率。此外,还增加了读写命令中的保留位,使命令能有更多的扩展。
根据本发明的实施例,还提供了一种命令处理系统,包括上述实施例中的具有快速外设组件互联标准接口的设备以及主机设备,在上述实施例中,已经对具有快速外设组件互联标准接口的设备以及主机设备进行了详细的说明,在此不再赘述。
本发明实施例的命令处理系统减少了进行存储器读写操作的次数,进而提高链路的利用率。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。