CN111651396B - 一种优化的pcie完成包乱序管理电路实现方法 - Google Patents
一种优化的pcie完成包乱序管理电路实现方法 Download PDFInfo
- Publication number
- CN111651396B CN111651396B CN202010338966.1A CN202010338966A CN111651396B CN 111651396 B CN111651396 B CN 111651396B CN 202010338966 A CN202010338966 A CN 202010338966A CN 111651396 B CN111651396 B CN 111651396B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- interface
- read request
- implementation method
- 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.)
- Active
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
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种优化的PCIE完成包乱序管理电路实现方法,属于通信数据传输领域,包括系统接口缓存区、读请求发送模块、数据搬移及控制模块、PRD表及控制模块;其特征在于:将系统缓存按页为单位分割为若干空间;针对PCIE完成包乱序返回,而采用的读命令标签乱序发放,返回数据包先到先存,先存先取走到系统缓存的FIFO管理机制,从而降低数据的在接口缓存的停滞时间,尽量减少接口数据到系统缓存的气泡,从而提供数据搬运效率。同时本法所述实现方法可以使标签乱序回收,乱序发放,提高标签的周转利用效率。
Description
技术领域
本发明属于通信数据传输领域,尤其涉及一种优化的PCIE完成包乱序管理电路实现方法。
背景技术
随着信息技术的日益发达,对服务器及个人电脑的数据访问的带宽,延时性,高IOPS,大容量等要求越来越高。PCIE的接口协议,从PCIE第一代到目前正在制定中的第六代,接口的速度处于飞快的发展之中。PCIE 接口以其可扩展性,高效率日益成为存储设备的主流接口。接口速度提高之后, 需要内部控制逻辑也有与之匹配的发展。NVMe协议则是为了满足更高并行度,更高效率的数据传输而发展起来的主流命令层协议。在NVMe协议与PCIE 协议对接时,以及NVMe与总线对接时,对数据流流畅度的控制将是系统前端设计的重点。设备端PCIE 读请求发出时,每个读请求对应一个读标签,待完成的读请求的标签具有唯一性。PCIE 协议通常模式下支持32个标签,标签值以0-31标识,扩展模式下支持256个标签,标签值0-255标识。读请求发出后,从主机侧回来的完成包与读请求发出的顺序不一致,是乱序的。而放到系统缓存的数据通常又是要求以页为单位存放,页内的数据是顺序的。
通常的做法是通过标签对应等手段将乱序回来的数据按标签放入各自对应的缓存,按请求发出的顺序重新摆放好之后,按调整后的顺序发给总线,放入系统缓存。
上述办法解决了乱序的问题,但是,由于接收回来的乱序数据只能按顺序发给总线,对于后发出的请求而先收到完成包的数据一直被阻塞在接口缓存内,数据无法及时拖走,导致标签无法及时释放,读请求的发送断续;同时接口缓存两侧的数据流是断续的,有气泡存在,影响效率;而且每个标签都需要一个对应的接口缓存,如果支持256个标签,则需要256块缓存,需要的接口缓存空间大。
发明内容
本发明旨在解决上述问题,提供一种以PCIE为接口协议的存储的优化的PCIE完成包乱序管理电路实现方法。
本发明所述优化的PCIE完成包乱序管理电路实现方法,包括系统接口缓存区、读请求发送模块、数据搬移及控制模块、PRD表及控制模块;
将系统缓存按页为单位分割为若干空间;
具体的实现方法如下步骤:
1)系统设备侧收到写命令时,若写命令对应的数据长度大于一页数据大小时,将写命令切割成多个以页数据大小为长度单位的写命令请求;若写命令对应的数据长度小于一页数据大小时,按实际长度下发下发写命令请求;将数据长度切割后的写命令请求填入请求列表PRD中;同时系统填写缓存管理状态表;
2) 系统的接口缓存区对应设置一接口缓存状态表,先返回的数据包先储存,同时更新接口缓存状态表;每一数据包对应一数据有效状态位valid;该数据包的数据写入完成时置位valid;当数据被读出后清零有效状态位valid;数据包的完成状态按接收的顺序填写状态到接口缓存状态表中;
3)每一读请求标签对应一已发布命令信息项及一个用于表示该读请求标签对应的数据是否已经返回并处理完成的状态位P;当P位为0时,表示该标签为闲置状态,可以回收给读请求发送模块发送读请求时使用;
4)从PRD表中读出读请求,按读请求数据包最大长度切割成若干个PCIE读请求;在读请求发出前检测接口缓存区是否有对应长度的数据空间;若有,则发送读请求,并将该读请求返回数据的信息填入已发布命令信息表中;
5)当接收到一个完成数据包时,根据步骤2)所述将数据包顺序写入接口缓存功能区中,同时将信息填入接口缓存状态表,且置位对应有效状态位valid;
6)数据搬移及控制模块检测接口缓存状态表的当前表项对应的有效状态位valid,有效状态位valid为非清零状态根据步骤3)所述的已发布命令信息表找到该数据应该写入的系统缓存的地址,启动数据搬移及控制模块完成数据搬移;搬移完成则清零接口缓存状态表中对应的有效状态位valid;
7)判断数据全部搬移完毕后更新系统缓存管理状态表。
本发明所述优化的PCIE完成包乱序管理电路实现方法,所述判断数据全部搬移完毕的具体过程包括:根据已发布命令信息表中对应标签要求的数据长度,判断该标签对应的数据是否全部接受完,若对应全部数据已经搬完,则清零P位,表示对应的标签值释放;
若只是搬了部分数据,此时将系统缓存绝对地址更新为当前写入地址,将长度信息更新为剩余未完成长度;待剩余的数据完成包收到并完成搬移之后,再清零P位。
本发明所述优化的PCIE完成包乱序管理电路实现方法,所述PRD表中包括请求数据的长度及在系统缓存中的起始偏移地址。
本发明所述优化的PCIE完成包乱序管理电路实现方法,所述页数据大小包括4k或8k或16k或32k。
本发明所述优化的PCIE完成包乱序管理电路实现方法,所述读请求返回数据的信息包括将要写入的系统缓存绝对地址。
本发明所述优化的PCIE完成包乱序管理电路实现方法,针对PCIE完成包乱序返回,而采用的读命令标签乱序发放,返回数据包先到先存,先存先取走到系统缓存的FIFO管理机制,从而降低数据的在接口缓存的停滞时间,尽量减少接口数据到系统缓存的气泡,从而提供数据搬运效率。同时本法所述实现方法可以使标签乱序回收,乱序发放,提高标签的周转利用效率。
附图说明
图1为本发明所述优化的PCIE完成包乱序管理电路实现方法流程示意图;
图2为本发明所述优化的PCIE完成包乱序管理电路实现方法控制实现框图。
具体实施方式
下面通过附图及实施例对本发明所述优化的PCIE完成包乱序管理电路实现方法进行详细说明。
本发明所述优化的PCIE完成包乱序管理电路实现方法,如图2所示,包括系统接口缓存区、读请求发送模块、数据搬移及控制模块、PRD表及控制模块;
将系统缓存按页为单位分割为若干空间;
具体的实现方法如下步骤:
1)系统设备侧收到写命令时,若写命令对应的数据长度大于一页数据大小时,将写命令切割成多个以页数据大小为长度单位的写命令请求;若写命令对应的数据长度小于一页数据大小时,按实际长度下发写命令请求;将数据长度切割后的写命令请求填入请求列表PRD(physical region description)中;同时系统填写缓存管理状态表;每个PRD中包含了请求数据的长度以及在系统缓存中的起始偏移地址。同时,系统填写缓存管理状态表,表示该缓存中每个页区域的数据状态等信息,包括但不限于数据长度,读写进度等状态;
2) 系统的接口缓存区对应设置一个接口缓存状态表,先返回的数据包先储存,同时更新接口缓存状态表;每一数据包对应一个数据有效状态位valid;该数据包的数据写入完成时置位valid;当数据被读出后清零有效状态位valid;数据包的完成状态按接收的顺序填写状态到接口缓存状态表中;
3)每一读请求标签对应一个已发布命令信息项及一个用于表示该读请求标签对应的数据是否已经返回并处理完成的状态位P;当P位为0时,表示该标签为闲置状态,可以回收给读请求发送模块发送读请求时使用;
4)从PRD表中读出读请求,按读请求数据包最大长度切割成若干个PCIE读请求;在读请求发出前检测接口缓存区是否有对应长度的数据空间;若有,则发送读请求,并将该读请求返回数据将要写入的系统缓存绝对地址以及其他信息计算出来填入已发布命令信息表中;
5)当接收到一个完成数据包时,根据步骤2)所述将数据包顺序写入接口缓存功能区中,同时将信息填入接口缓存状态表,且置位对应有效状态位valid;
6)数据搬移及控制模块检测接口缓存状态表的当前表项对应的有效状态位valid,有效状态位valid为非清零状态根据步骤3)所述的已发布命令信息表找到该数据应该写入的系统缓存的地址,启动数据搬移及控制模块完成数据搬移;搬移完成则清零接口缓存状态表中对应的有效状态位valid;
然后,根据已发布命令信息表项中对应标签要求的数据长度,判断该标签对应的数据是否全部接受完,如果对应全部数据已经搬完,则清零P位,表示对应的标签值释放。如果只是搬了部分数据(一个读标签对应的数据,可能会被拆分成多个完成包返回),此时将系统缓存绝对地址更新为当前写入地址(之前填入的绝对地址加上已经搬运数据长度),将长度信息更新位及剩余未完成长度。 待剩余的数据完成包收到并完成搬移之后,再清零P位;
7)数据搬移完成后,更新系统缓存管理状态表, 缓存管理状态表用来统计并表示按页分割的页数据是否完成;通过以上步骤,该系统的各个环节不用互相等待,提高了数据传输效率。
如图1所示,在本实施例中以4个标签为例,读请求标签按乱序回收,乱序发送,数据先到先取走;虽然返回的完成包是乱序收到,但每收到一个完成包,系统就立即将数据搬移走,及时释放读标签,读请求可以更高效回收并发送;数据在接口缓存滞留的时间很短,搬移到总线上的数据也相对更连贯,少有气泡,数据带宽更高;下面以系统有4个标签为例,来描述具体读取过程如下:
a)假定系统总共有4个标签(tag)可用,分别为0,1,2,3,开始时,所有的标签(tag)都空闲,系统可以连续发出4个读请求,标签分别为0,1,2,3;
b)主机侧乱序返回读数据,返回的读数据包的标签顺序依次为2,3,1,0;依接收到的次序放入接口缓存FIFO(图2中121模块);每放入接口缓存FIFO(图2中121模块)一个完整的数据包,则置位接口缓存管理状态表中对应的状态位valid;
c)数据搬移及控制模块DMA(图2中123模块)检测到当前(状态表的表项从0开始)对应的状态位valid位,如果为0,表示数据还没接收到,继续等待,为1表示一个完整数据包已经接收到,则启动数据搬移及控制模块DMA(图2中123模块)搬移走接口缓存FIFO(图2中121模块)中最早接收到的数据包(标签为2的数据包)。搬移完成后则清零对应的状态位valid。并开始检测下一个(状态表的表项1)状态位valid,如果为1,则继续搬运(标签为3的数据包)…重复该步骤,依次完成标签为2,3,1,0,3,1,0,2的数据包的搬移;
d)根据步骤c),接收到的数据包不停的被搬移走,则相应就不断有对应的读标签(tag)释放出来,如图2所示,标签释放的顺序是2,3,1,0,3,1,0,2… 释放出的标签可以立即被使用。用来发送下一个读数据包。 所以发送出去的读请求标签顺序为0,1,2,3,2,3,1,0…;
e)系统重复步骤a)-- d),就可以实现数在各部分的连续传输。
本发明所述优化的PCIE完成包乱序管理电路实现方法在PCIE读请求的返回数据包乱序返回时,按先到先存的机制放入接口缓存,先存先取的机制,收到一个完整的数据包就立即送给总线取走,减少了数据在接口缓存的停留时间,减少数据时延,同时解决了数据包与数据包在总线上因为数据重新排序而造成的气泡问题,使数据在总线上的传输更流畅。接收到一个返回完成包,数据立即读走, 就可以释放一个标签,从而可以发出新的读请求,提高了读请求的发送效率。接口缓存采用FIFO机制,按照接收数据的顺序存放和读取,不用每个标签对应一个接口缓存,大大减少缓存容量。
Claims (5)
1.一种优化的PCIE完成包乱序管理电路实现方法,包括系统接口缓存区、读请求发送模块、数据搬移及控制模块、PRD表及控制模块;
其特征在于:将系统缓存按页为单位分割为若干空间;
具体的实现方法如下步骤:
1)系统设备侧收到写命令时,若写命令对应的数据长度大于一页数据大小时,将写命令切割成多个以页数据大小为长度单位的写命令请求;若写命令对应的数据长度小于一页数据大小时,按实际长度下发下发写命令请求;将数据长度切割后的写命令请求填入请求列表PRD中;同时系统填写缓存管理状态表;
2)系统的接口缓存区对应设置一接口缓存状态表,先返回的数据包先储存,同时更新接口缓存状态表;每一数据包对应一数据有效状态位valid;该数据包的数据写入完成时置位valid;当数据被读出后清零有效状态位valid;数据包的完成状态按接收的顺序填写状态到接口缓存状态表中;
3)每一读请求标签对应一已发布命令信息项及一个用于表示该读请求标签对应的数据是否已经返回并处理完成的状态位P;
4)从PRD表中读出读请求,按读请求数据包最大长度切割成若干个PCIE读请求;在读请求发出前检测接口缓存区是否有对应长度的数据空间;若有,则发送读请求,并将该读请求返回数据的信息填入已发布命令信息表中;
5)当接收到一个完成数据包时,根据步骤2)所述将数据包顺序写入接口缓存功能区中,同时将信息填入接口缓存状态表,且置位对应有效状态位valid;
6)数据搬移及控制模块检测接口缓存状态表的当前表项对应的有效状态位valid,有效状态位valid为非清零状态根据步骤3)所述的已发布命令信息表找到该数据应该写入的系统缓存的地址,启动数据搬移及控制模块完成数据搬移;搬移完成则清零接口缓存状态表中对应的有效状态位valid;
7)判断数据全部搬移完毕后更新系统缓存管理状态表。
2.根据权利要求1所述优化的PCIE完成包乱序管理电路实现方法,其特征在于:所述判断数据全部搬移完毕的具体过程包括:根据已发布命令信息表中对应标签要求的数据长度,判断该标签对应的数据是否全部接受完,若对应全部数据已经搬完,则清零P位,表示对应的标签值释放;
若只是搬了部分数据,此时将系统缓存绝对地址更新为当前写入地址,将长度信息更新为剩余未完成长度;待剩余的数据完成包收到并完成搬移之后,再清零P位。
3.根据权利要求2所述优化的PCIE完成包乱序管理电路实现方法,其特征在于:所述PRD表中包括请求数据的长度及在系统缓存中的起始偏移地址。
4.根据权利要求3所述优化的PCIE完成包乱序管理电路实现方法,其特征在于:所述页数据大小包括4k或8k或16k或32k。
5.根据权利要求4所述优化的PCIE完成包乱序管理电路实现方法,其特征在于:所述读请求返回数据的信息包括将要写入的系统缓存绝对地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010338966.1A CN111651396B (zh) | 2020-04-26 | 2020-04-26 | 一种优化的pcie完成包乱序管理电路实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010338966.1A CN111651396B (zh) | 2020-04-26 | 2020-04-26 | 一种优化的pcie完成包乱序管理电路实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111651396A CN111651396A (zh) | 2020-09-11 |
CN111651396B true CN111651396B (zh) | 2021-08-10 |
Family
ID=72346660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010338966.1A Active CN111651396B (zh) | 2020-04-26 | 2020-04-26 | 一种优化的pcie完成包乱序管理电路实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111651396B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328519B (zh) * | 2020-09-30 | 2022-02-18 | 郑州信大捷安信息技术股份有限公司 | 一种pcie设备、基于sr-iov的数据包有序传输方法和系统 |
CN112328520B (zh) * | 2020-09-30 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种pcie设备、基于pcie设备的数据传输方法和系统 |
CN114553776B (zh) * | 2022-02-28 | 2023-10-10 | 深圳市风云实业有限公司 | 一种信号乱序控制与速率自适应的传输装置及其传输方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541778A (zh) * | 2010-12-17 | 2012-07-04 | 西安奇维测控科技有限公司 | 一种超高速超大容量存储装置及其实现方法 |
CN102804151A (zh) * | 2009-06-29 | 2012-11-28 | 惠普开发有限公司 | 访问作为缓存一致性域的部分的内存刀片的内存代理 |
CN109213691A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
CN109240944A (zh) * | 2018-08-16 | 2019-01-18 | 南京天数智芯科技有限公司 | 一种基于可变长缓存行的数据读写方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9990298B2 (en) * | 2014-05-12 | 2018-06-05 | Western Digital Technologies, Inc | System and method for caching solid state device read request results |
-
2020
- 2020-04-26 CN CN202010338966.1A patent/CN111651396B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102804151A (zh) * | 2009-06-29 | 2012-11-28 | 惠普开发有限公司 | 访问作为缓存一致性域的部分的内存刀片的内存代理 |
CN102541778A (zh) * | 2010-12-17 | 2012-07-04 | 西安奇维测控科技有限公司 | 一种超高速超大容量存储装置及其实现方法 |
CN109213691A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
CN109240944A (zh) * | 2018-08-16 | 2019-01-18 | 南京天数智芯科技有限公司 | 一种基于可变长缓存行的数据读写方法 |
Non-Patent Citations (2)
Title |
---|
"A Parallel and Pipelined Architecture for Accelerating Fingerprint Computation in High Throughput Data Storages";Dongyang Li等;《2015 IEEE 23rd Annual International Symposium on Field-Programmable Custom Computing Machines》;20150716;全文 * |
"基于Tag的PCIe总线事务并行处理技术研究";李少博;《中国优秀硕士学位论文全文数据库 信息科技辑》;20190115;I137-258 * |
Also Published As
Publication number | Publication date |
---|---|
CN111651396A (zh) | 2020-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111651396B (zh) | 一种优化的pcie完成包乱序管理电路实现方法 | |
US8868809B2 (en) | Interrupt queuing in a media controller architecture | |
US9921955B1 (en) | Flash write amplification reduction | |
CN107766270B (zh) | 用于PCIe设备的数据读取管理方法及装置 | |
CN100590609C (zh) | 一种基于非连续页的动态内存管理方法 | |
US9384147B1 (en) | System and method for cache entry aging | |
US6850998B2 (en) | Disk array system and a method for controlling the disk array system | |
US6917992B2 (en) | Method and apparatus for efficient command queuing within a serial ATA environment | |
CN1510589A (zh) | 共享存储器数据传送设备 | |
US9672180B1 (en) | Cache memory management system and method | |
CN112256624B (zh) | 用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法 | |
KR20080072447A (ko) | 읽기 요청 처리 시스템 및 방법 | |
CN101303685B (zh) | 可提升通用序列总线储存设备的读写数据速率的方法 | |
CN105681222A (zh) | 一种数据接收缓存方法、装置及通信系统 | |
JP2006252358A (ja) | ディスクアレイ装置及びその共有メモリ装置、ディスクアレイ装置の制御プログラム及び制御方法 | |
CN115344200A (zh) | 一种基于NVMe接口的存储系统 | |
CN101056316A (zh) | 一种pci以太网媒体访问控制器传输数据的方法 | |
US7409486B2 (en) | Storage system, and storage control method | |
US10733118B2 (en) | Computer system, communication device, and storage control method with DMA transfer of data | |
CN111694777B (zh) | 基于PCIe接口的DMA传输方法 | |
CN102184150A (zh) | 高功能环形缓冲缓存系统及其控制方法 | |
US7430634B2 (en) | Data transfer apparatus and data transfer method | |
KR100903051B1 (ko) | 읽기 요청 처리 시스템 및 방법 | |
CN118427145A (zh) | 一种用于pcie总线通信的数据传输装置及方法 | |
CN117873392A (zh) | 数据写入方法、装置、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |