CN104866454A - 面向板级高速总线的写报文前瞻处理方法及装置 - Google Patents
面向板级高速总线的写报文前瞻处理方法及装置 Download PDFInfo
- Publication number
- CN104866454A CN104866454A CN201510171449.9A CN201510171449A CN104866454A CN 104866454 A CN104866454 A CN 104866454A CN 201510171449 A CN201510171449 A CN 201510171449A CN 104866454 A CN104866454 A CN 104866454A
- Authority
- CN
- China
- Prior art keywords
- write
- message
- data
- writing
- wdata
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种面向板级高速总线的写报文前瞻处理方法及装置,方法包括接收链路层的写报文,进行校验并设置错误标志位,校验不通过则请求重传;识别写报文的写命令和写数据,通过FIFO队列缓存并输出给报文的后续处理逻辑;同时检测写报文的错误标志位,如果报文出错,则循环接收重发的写报文直至校验通过,如果FIFO队列非空,则覆盖缓存的写报文;否则生成新的纠错写报文并写入FIFO队列中;装置则包括方法对应的链路层接收单元和报文缓存及前瞻处理单元。本发明能够提升存储系统的性能,能够免去后续处理对写请求和写数据类型进行区分以及作废错误的写请求和数据,简化后续处理逻辑的设计和验证。
Description
技术领域
本发明涉及板级互连总线的报文处理延时优化技术领域,具体涉及一种面向板级高速总线的写报文前瞻处理方法及装置。
背景技术
随着众核处理器片上集成核心数目的飞速发展,处理器对存储系统性能的需求成倍增长,而与此同时,主流的DDRx存储器的性能提升速度远远落后于需求的增长速度。于是单个处理器配备越来越多的主存通道成为当前主流的解决方案。例如,IBM的power7处理器设置了8个DDR3通道,而power8处理器则增加到了16个DDR3通道。
由于DDR采用并行总线接口,一个数据宽度为72的DDR接口所需的IO数目就超过150个。大量的DDR通道会将有限的IO资源耗尽。为了解决IO资源矛盾,新处理器偏向于采用高速串行总线或精简的并行总线作为与片外DDR存储器通信的接口。此时,需要在处理器和DDR控制器之间增加一级控制逻辑(即片外存储控制逻辑),一端用于控制多个DDR通道,另一端与处理器通信、提供存储访问接口。增加的片外存储控制逻辑可以承担更为智能和复杂的DDR访问任务,比如自动刷新、出错重传、可变长度传输等,从而大大简化处理器的片上访存控制逻辑。
为提高可靠性、可扩展性和数据传输效率,处理器与片外存储控制芯片的通信经常采用基于报文的链路通讯协议。典型的报文类型包括读请求报文和写请求报文。读请求报文由于不携带数据,报文长度较短;写请求报文需要携带写数据,故报文长度通常大于读请求报文。
为增强报文传输可靠性,通常在报文内设置专门的报文校验域,如循环冗余校验码,用于接收方对报文正确性进行校验。同时,为解决报文出错、丢失、接收方溢出等问题,需要链路层协议支持错误重传和流量控制。比如典型的滑动窗口协议,发送方将已发送的报文临时保存于重传缓冲,等待接收方确认之后才将报文从重传缓冲删除。重传缓冲满时,发送方不能再发送报文,从而避免接收方报文溢出。另外,如果一个报文传输出错或者超出一定时间还未得到确认,发送方将报文从重传缓冲取出,重新发送,从而保证报文传输的可靠性。
为保证请求命令和写数据的正确性,典型的链路层通讯协议只在接收的报文通过校验之后才将报文提交给后续处理逻辑。这种方式会增加写请求报文的处理延时,且报文越长,处理延时也越大。假设处理器的写请求的报文通道为32位DDR通道,发送一个64字节的写报文需要8+1=9拍,其中8拍用于传输写数据,1拍用于传输写命令。如果后续写请求报文的处理不需要等待报文校验结果,则写请求报文的处理延时在每个报文校验结点可以缩短8拍。对于高性能处理器,如果访存通路上的每个校验结点能节省8拍,则整体访存通路的绝对延时将大大降低。当前高性能处理器的DDR通道数快速增加,而IO数增长缓慢,导致片外访存总线的数据宽度不断缩小,于是传输相同数据所需的报文长度不断增加,改善写请求处理延时的技术就显得日益重要。
要解决写请求报文处理延时过长的问题,最直接的方法是允许对写请求报文的前瞻处理,即先假设接收的报文都是正确的,报文在接收的同时就开始后续处理流程。当报文校验发现错误时,启动错误纠正程序,对之前接收的错误写请求进行纠正。常用的纠正措施为作废操作:作废操作跟随写数据设置作废标志位,后续逻辑发现作废标志时主动丢弃对应的写请求和数据。作废操作需要后续的处理模块添加专门的逻辑进行支持,增加硬件设计复杂度,且写请求的最终执行仍然需要等待校验结果,无法真正消除写请求报文的校验延时。
发明内容
本发明要解决的技术问题是:针对现有技术的上述问题,提供一种能够在保证数据一致性的前提下降低处理器访存通路的写请求报文处理延时、提升存储系统的性能,能够免去后续处理逻辑作废错误写请求和数据的需要,简化后续处理逻辑的设计和验证的面向板级高速总线的写报文前瞻处理方法及装置。
为了解决上述技术问题,本发明采用的技术方案为:
一种面向板级高速总线的写报文前瞻处理方法,步骤包括:
1)接收链路层的写报文,解析接收的写报文并进行校验,如果校验不通过则请求重传写报文,并标记写报文的错误标志位Error为1;
2)对接收的写报文进行边界判断,识别写报文的写命令cmd和写数据wdata,不区分报文是否校验通过,直接将写命令cmd和写数据wdata分别通过FIFO队列缓存并输出给报文的后续处理逻辑;同时检测写报文的错误标志位Error,如果错误标志位Error为1,则循环接收重发的写报文直至重发的写报文校验通过;当重发的写报文校验通过时,如果FIFO队列非空,则使用重发的写报文覆盖FIFO队列中缓存的写报文;如果错误的写命令和写数据已经被发送给报文的后续处理逻辑使得FIFO队列为空,则使用重发的写报文生成新的纠错写报文并写入FIFO队列中。
优选地,所述步骤2)的详细步骤包括:
2.1)接收写报文的有效位Valid、报文头标志位Head、报文尾标志位Tail和错误标志位Error,对写报文的内容进行解析,发出写报文的写信号write;同时建立状态State包括空闲状态IDLE、写数据正常接收状态WDATA_RECV、写数据错误重传状态WDATA_RETRANS的报文解析状态机,将报文解析状态机的状态State初始为空闲状态IDLE,如果收到写报文的报文头标志位Head则进入写数据正常接收状态WDATA_RECV;当写报文接收结束时,如果写报文的错误标志位Error为1则进入写数据错误重传状态WDATA_RETRANS;
2.2)根据写报文的内容解析结果识别出写报文的写命令cmd和写数据wdata,检测所述报文解析状态机的状态State,如果报文解析状态机处于写数据正常接收状态WDATA_RECV,则输出写报文的写命令cmd以及写数据wdata;如果报文解析状态机处于写数据错误重传状态WDATA_RETRANS,则输出写报文的写命令cmd、写数据wdata以及覆盖控制信号replace,并循环接收重发的写报文的写命令cmd和写数据wdata直至重发的写报文的错误标志位Error为0,当重发的写报文的错误标志位Error为0时,检查用于缓存写数据的写数据FIFO存储队列wdatQ的空状态empty;
2.3)如果收到写报文的写信号write、写命令cmd,未收到覆盖控制信号replace,则判定报文解析状态机处于写数据正常接收状态WDATA_RECV,将写报文的写命令cmd写入用于缓存写命令的写命令FIFO存储队列cmdQ中,并将写报文的写数据wdata写入写数据FIFO存储队列wdatQ中;如果同时收到写报文的写信号write、写命令cmd、覆盖控制信号replace,则判定报文解析状态机处于写数据错误重传状态WDATA_RETRANS,检查重发的写报文的错误标志位Error,当重发的写报文的错误标志位Error为0时,获取的写数据FIFO存储队列wdatQ的空状态empty,如果写数据FIFO存储队列wdatQ非空,则将重发的写报文的写命令cmd覆盖写命令FIFO存储队列cmdQ中的最后一项写命令、将接收写报文的写数据wdata覆盖写数据FIFO存储队列wdatQ中的最后一项写数据;如果写数据FIFO存储队列wdatQ为空,则判定错误的写命令和写数据已经被发送给后续处理逻辑,根据重发的写报文生成用于纠正错误写命令的新的纠错写命令并保存到写命令FIFO存储队列cmdQ中,同时生成纠错后的写数据wdata并保存到写数据FIFO存储队列wdatQ中;将写命令FIFO存储队列cmdQ中的写命令或者纠错写命令、写数据FIFO存储队列wdatQ中的写数据按照顺序输出给报文的后续处理逻辑。
优选地,所述步骤1)中解析接收写报文并进行校验的校验具体是指进行CRC校验。
本发明还提供一种面向板级高速总线的写报文前瞻处理装置,包括:
链路层接收单元,用于接收链路层的写报文,解析接收的写报文并进行校验,如果校验不通过则请求重传写报文,并标记写报文的错误标志位Error为1;
报文缓存及前瞻处理单元,用于对接收的写报文进行边界判断,识别写报文的写命令cmd和写数据wdata,不区分报文是否校验通过,直接将写命令cmd和写数据wdata分别通过FIFO队列缓存并输出给报文的后续处理逻辑;同时检测写报文的错误标志位Error,如果错误标志位Error为1,则循环接收重发的写报文直至重发的写报文校验通过,如果FIFO队列非空,则使用重发的写报文覆盖FIFO队列中缓存的写报文;如果写报文已输出给报文的后续处理逻辑,则使用重发的写报文生成新的纠错写报文并写入FIFO队列中。
优选地,所述报文缓存及前瞻处理单元包括:
报文解析状态机模块,用于接收写报文的有效位Valid、报文头标志位Head、报文尾标志位Tail和错误标志位Error,对写报文的内容进行解析,发出写报文的写信号write;同时建立状态State包括空闲状态IDLE、写数据正常接收状态WDATA_RECV、写数据错误重传状态WDATA_RETRANS的报文解析状态机,将报文解析状态机的状态State初始为空闲状态IDLE,如果收到写报文的报文头标志位Head则进入写数据正常接收状态WDATA_RECV;当写报文接收结束时,如果写报文的错误标志位Error为1则进入写数据错误重传状态WDATA_RETRANS;
数据覆盖控制模块,用于根据写报文的内容解析结果识别出写报文的写命令cmd和写数据wdata,检测所述报文解析状态机的状态State,如果报文解析状态机处于写数据正常接收状态WDATA_RECV,则输出写报文的写命令cmd以及写数据wdata;如果报文解析状态机处于写数据错误重传状态WDATA_RETRANS,则输出写报文的写命令cmd、写数据wdata以及覆盖控制信号replace,并循环接收重发的写报文的写命令cmd和写数据wdata直至重发的写报文的错误标志位Error为0,当重发的写报文的错误标志位Error为0时,检查用于缓存写数据的写数据FIFO存储队列wdatQ的空状态empty;
写命令和写数据FIFO存储队列wdatQ单元,包括写命令FIFO存储队列cmdQ和写数据FIFO存储队列wdatQ,如果收到写报文的写信号write、写命令cmd,未收到覆盖控制信号replace,则判定报文解析状态机处于写数据正常接收状态WDATA_RECV,将写报文的写命令cmd写入用于缓存写命令的写命令FIFO存储队列cmdQ中,并将写报文的写数据wdata写入写数据FIFO存储队列wdatQ中;如果同时收到写报文的写信号write、写命令cmd、覆盖控制信号replace,则判定报文解析状态机处于写数据错误重传状态WDATA_RETRANS,检查重发的写报文的错误标志位Error,当重发的写报文的错误标志位Error为0时,获取的写数据FIFO存储队列wdatQ的空状态empty,如果写数据FIFO存储队列wdatQ非空,则将重发的写报文的写命令cmd覆盖写命令FIFO存储队列cmdQ中的最后一项写命令、将接收写报文的写数据wdata覆盖写数据FIFO存储队列wdatQ中的最后一项写数据;如果写数据FIFO存储队列wdatQ为空,则判定错误的写命令和写数据已经被发送给后续处理逻辑,在写命令FIFO存储队列cmdQ中生成用于纠正错误写命令的新的纠错写命令,并将重发的写报文的写数据wdata在写数据FIFO存储队列wdatQ中生成用于纠正错误写数据的写数据;将写命令FIFO存储队列cmdQ中的写命令或者纠错写命令、写数据FIFO存储队列wdatQ中的写数据按照顺序输出给报文的后续处理逻辑。
优选地,所述链路层接收单元解析接收写报文并进行校验的校验具体是指进行CRC校验。
本发明面向板级高速总线的写报文前瞻处理方法具有下述优点:
1、本发明通过对写报文进行前瞻处理,包括数据校验以及校验出错后的重发机制,不区分报文是否校验通过,直接将写命令cmd和写数据wdata分别通过FIFO队列缓存并输出给报文的后续处理逻辑,同时根据校验的错误标志位Error进行重发机制,将写请求报文的接收和后续处理流水重叠执行,从而隐藏写请求报文的接收和校验延时,有效降低报文处理延时,提升存储系统的性能;针对串行总线的广泛应用以及对存储带宽需求的增加导致单个片外访存通道分配的IO数目不断减少、写请求报文的长度有不断增大的趋势,本发明隐藏写请求报文接收和校验延时的技术于变得日益重要,对系统性能的提升也将日益明显。
2、本发明利用FIFO队列缓存作为访存通道对同一存储地址维序访问的特性,检测写报文的错误标志位Error,如果错误标志位Error为1,则循环接收重发的写报文直至重发的写报文校验通过,当重发的写报文校验通过时,如果FIFO队列非空,则使用重发的写报文覆盖FIFO队列中缓存的写报文;如果错误的写命令和写数据已经被发送给报文的后续处理逻辑使得FIFO队列为空,则使用重发的写报文生成新的纠错写报文并写入FIFO队列中,实现了低开销的写报文错误恢复机制,从而支持对写请求报文进行前瞻处理的同时保证数据的正确性,本发明的硬件开销包括增加了专门的数据覆盖控制器以及扩充了写数据FIFO队列的覆盖功能,相对错误写数据作废机制,本发明免去后续处理对写请求和写数据类型进行区分,并及时作废错误写请求和数据的必要,简化后续处理逻辑的设计和验证。
本发明面向板级高速总线的写报文前瞻处理装置为本发明面向板级高速总线的写报文前瞻处理方法完全对应的装置,因此也具有本发明本发明面向板级高速总线的写报文前瞻处理方法相同的技术效果,故在此不再赘述。
附图说明
图1为本发明实施例方法的流程示意图。
图2为本发明实施例方法中报文解析状态机的状态转换示意图。
图3为本发明实施例装置的框架结构示意图。
具体实施方式
如图1所示,本实施例面向板级高速总线的写报文前瞻处理方法的步骤包括:
1)接收链路层的写报文,解析接收的写报文并进行校验,如果校验不通过则请求重传写报文,并标记写报文的错误标志位Error为1;
2)对接收的写报文进行边界判断,识别写报文的写命令cmd和写数据wdata,不区分报文是否校验通过,直接将写命令cmd和写数据wdata分别通过FIFO队列缓存并输出给报文的后续处理逻辑;同时检测写报文的错误标志位Error,如果错误标志位Error为1,则循环接收重发的写报文直至重发的写报文校验通过;当重发的写报文校验通过时,如果FIFO队列非空,则使用重发的写报文覆盖FIFO队列中缓存的写报文;如果错误的写命令和写数据已经被发送给报文的后续处理逻辑使得FIFO队列为空,则使用重发的写报文生成新的纠错写报文并写入FIFO队列中。
本实施例中,步骤1)中解析接收写报文并进行校验的校验具体是指进行CRC校验(即循环冗余校验码校验)。CRC校验是对报文进行差错校验的常用方式之一,毫无疑问,本领域的技术人员也可以根据需要采用其他形式的差错校验方式,例如采用md5,sha1等算法,在此不再赘述。
本实施例中,步骤2)的详细步骤包括:
2.1)接收写报文的有效位Valid、报文头标志位Head、报文尾标志位Tail和错误标志位Error,对写报文的内容进行解析,发出写报文的写信号write;同时建立状态State包括空闲状态IDLE、写数据正常接收状态WDATA_RECV、写数据错误重传状态WDATA_RETRANS的报文解析状态机,将报文解析状态机的状态State初始为空闲状态IDLE,如果收到写报文的报文头标志位Head则进入写数据正常接收状态WDATA_RECV;当写报文接收结束时,如果写报文的错误标志位Error为1则进入写数据错误重传状态WDATA_RETRANS;
2.2)根据写报文的内容解析结果识别出写报文的写命令cmd和写数据wdata,检测所述报文解析状态机的状态State,如果报文解析状态机处于写数据正常接收状态WDATA_RECV,则输出写报文的写命令cmd以及写数据wdata;如果报文解析状态机处于写数据错误重传状态WDATA_RETRANS,则输出写报文的写命令cmd、写数据wdata以及覆盖控制信号replace,并循环接收重发的写报文的写命令cmd和写数据wdata直至重发的写报文的错误标志位Error为0,当重发的写报文的错误标志位Error为0时,检查用于缓存写数据的写数据FIFO存储队列wdatQ的空状态empty;
2.3)如果收到写报文的写信号write、写命令cmd,未收到覆盖控制信号replace,则判定报文解析状态机处于写数据正常接收状态WDATA_RECV,将写报文的写命令cmd写入用于缓存写命令的写命令FIFO存储队列cmdQ中,并将写报文的写数据wdata写入写数据FIFO存储队列wdatQ中;如果同时收到写报文的写信号write、写命令cmd、覆盖控制信号replace,则判定报文解析状态机处于写数据错误重传状态WDATA_RETRANS,检查重发的写报文的错误标志位Error,当重发的写报文的错误标志位Error为0时,获取的写数据FIFO存储队列wdatQ的空状态empty,如果写数据FIFO存储队列wdatQ非空,则将重发的写报文的写命令cmd覆盖写命令FIFO存储队列cmdQ中的最后一项写命令、将接收写报文的写数据wdata覆盖写数据FIFO存储队列wdatQ中的最后一项写数据;如果写数据FIFO存储队列wdatQ为空,则判定错误的写命令和写数据已经被发送给后续处理逻辑,根据重发的写报文生成用于纠正错误写命令的新的纠错写命令并保存到写命令FIFO存储队列cmdQ中,同时生成纠错后的写数据wdata并保存到写数据FIFO存储队列wdatQ中;将写命令FIFO存储队列cmdQ中的写命令或者纠错写命令、写数据FIFO存储队列wdatQ中的写数据按照顺序输出给报文的后续处理逻辑。
如图2所示,报文解析状态机的状态State包括空闲状态IDLE、写数据正常接收状态WDATA_RECV、写数据错误重传状态WDATA_RETRANS共三个状态,空闲状态IDLE是报文解析状态机的初始状态,当系统复位时,将状态机置于该状态,当完成一个完整报文的接收后,也会回到该状态。写数据正常接收状态WDATA_RECV用于接收写命令报文所携带的数据。由于写命令报文携带写数据,报文解析状态机需要对数据长度进行计数;当计数器完成计数时,检查报文错误标志位Error,如果发现CRC错误,则进入写数据错误重传状态WDATA_RETRANS,否则回到空闲状态IDLE。写数据错误重传状态WDATA_RETRANS用于在发生写报文校验错误时,循环接收重传的写数据,直到接收到的数据通过校验为止回到空闲状态IDLE。上述三个状态之间包括下文的①~⑥共六种状态转换条件。
状态转换条件①:该条件是空闲状态IDLE保持本状态(空闲状态IDLE)的状态转换条件,当完成报文头部接收且解析得出的报文为读请求报文时状态转换条件①成立,否则状态转换条件①不成立,即如果接收的报文为读报文,则报文解析状态机的状态State保持空闲状态IDLE不变,从而使得报文解析状态机的状态State切换和读请求报文无关。
状态转换条件②:该条件是空闲状态IDLE向数据正常接收状态WDATA_RECV的状态转换条件,当完成报文头部接收且解析得出的报文为写报文时,状态转换条件②成立,否则状态转换条件②不成立。状态转换条件③:该条件是数据正常接收状态WDATA_RECV向空闲状态IDLE的状态转换条件。报文解析状态机使用数据长度计数器记录已接收的写数据长度,当接收的写数据长度达到预设的值时,完成报文边界定位,此时如果写报文的校验错误标志位Error为0,则状态转换条件③成立,否则状态转换条件③不成立。
状态转换条件④:该条件是数据正常接收状态WDATA_RECV向写数据错误重传状态WDATA_RETRANS的状态转换条件,当报文解析状态机接收的写数据长度达到预设的值时检查报文校验错误标志位Error,如果发现写报文的写数据校验错误(即Error为1),则状态转换条件④成立,否则状态转换条件④不成立。
状态转换条件⑤:该条件是写数据错误重传状态WDATA_RETRANS向空闲状态IDLE的状态转换条件,当报文解析状态机接收的写数据长度达到预设的值时检查报文校验错误标志位Error,如果发现重发写报文的写数据校验错误标志位Error为0,则状态转换条件⑤成立,否则状态转换条件⑤不成立。
状态转换条件⑥:该条件是写数据错误重传状态WDATA_RETRANS保持本状态(写数据错误重传状态WDATA_RETRANS)的状态转换条件,当报文解析状态机接收的写数据长度达到预设的值时检查报文校验错误标志位Error,如果发现重发写报文的写数据校验错误标志位Error为1,则状态转换条件⑥成立,否则状态转换条件⑥不成立。
如图3所示,本实施例面向板级高速总线的写报文前瞻处理装置包括:
链路层接收单元,用于接收链路层(图3中的link表示链路层)的写报文(图3中以pkt表示),解析接收的写报文并进行校验,如果校验不通过则请求重传写报文,并标记写报文的错误标志位Error为1;
报文缓存及前瞻处理单元,用于对接收的写报文进行边界判断,识别写报文的写命令cmd和写数据wdata,不区分报文是否校验通过,直接将写命令cmd和写数据wdata分别通过FIFO队列缓存并输出给报文的后续处理逻辑;同时检测写报文的错误标志位Error,如果错误标志位Error为1,则循环接收重发的写报文直至重发的写报文校验通过,如果FIFO队列非空,则使用重发的写报文覆盖FIFO队列中缓存的写报文;如果写报文已输出给报文的后续处理逻辑,则使用重发的写报文生成新的纠错写报文并写入FIFO队列中。
同理,本实施例中链路层接收单元解析接收写报文并进行校验的校验具体是指进行CRC校验,本领域的技术人员也可以根据需要采用其他形式的差错校验方式,例如采用md5,sha1等算法,在此不再赘述。
如图3所示,本实施例中的报文缓存及前瞻处理单元包括:
报文解析状态机模块,用于接收写报文的有效位Valid、报文头标志位Head、报文尾标志位Tail和错误标志位Error,对写报文的内容进行解析,发出写报文的写信号write;同时建立状态State包括空闲状态IDLE、写数据正常接收状态WDATA_RECV、写数据错误重传状态WDATA_RETRANS的报文解析状态机,将报文解析状态机的状态State初始为空闲状态IDLE,如果收到写报文的报文头标志位Head则进入写数据正常接收状态WDATA_RECV;当写报文接收结束时,如果写报文的错误标志位Error为1则进入写数据错误重传状态WDATA_RETRANS;
数据覆盖控制模块,用于根据写报文的内容解析结果识别出写报文的写命令cmd和写数据wdata,检测所述报文解析状态机的状态State,如果报文解析状态机处于写数据正常接收状态WDATA_RECV,则输出写报文的写命令cmd以及写数据wdata;如果报文解析状态机处于写数据错误重传状态WDATA_RETRANS,则输出写报文的写命令cmd、写数据wdata以及覆盖控制信号replace,并循环接收重发的写报文的写命令cmd和写数据wdata直至重发的写报文的错误标志位Error为0,当重发的写报文的错误标志位Error为0时,检查用于缓存写数据的写数据FIFO存储队列wdatQ的空状态empty;
写命令和写数据FIFO存储单元,包括写命令FIFO存储队列cmdQ和写数据FIFO存储队列wdatQ,如果收到写报文的写信号write、写命令cmd,未收到覆盖控制信号replace,则判定报文解析状态机处于写数据正常接收状态WDATA_RECV,将写报文的写命令cmd写入用于缓存写命令的写命令FIFO存储队列cmdQ中,并将写报文的写数据wdata写入写数据FIFO存储队列wdatQ中;如果同时收到写报文的写信号write、写命令cmd、覆盖控制信号replace,则判定报文解析状态机处于写数据错误重传状态WDATA_RETRANS,检查重发的写报文的错误标志位Error,当重发的写报文的错误标志位Error为0时,获取的写数据FIFO存储队列wdatQ的空状态empty,如果写数据FIFO存储队列wdatQ非空,则将重发的写报文的写命令cmd覆盖写命令FIFO存储队列cmdQ中的最后一项写命令、将接收写报文的写数据wdata覆盖写数据FIFO存储队列wdatQ中的最后一项写数据;如果写数据FIFO存储队列wdatQ为空,则判定错误的写命令和写数据已经被发送给后续处理逻辑,根据重发的写报文生成用于纠正错误写命令的新的纠错写命令并保存到写命令FIFO存储队列cmdQ中,同时生成纠错后的写数据wdata并保存到写数据FIFO存储队列wdatQ中;将写命令FIFO存储队列cmdQ中的写命令或者纠错写命令、写数据FIFO存储队列wdatQ中的写数据按照顺序输出给报文的后续处理逻辑。
本实施例中,链路层接收单元的输入端连接处理器与片外访存控制芯片的通讯IO,用于接收存储访问请求报文,链路层接收单元的输出端连接报文解析状态机模块和数据覆盖控制模块,报文解析状态机模块和数据覆盖控制模块则分别与写命令和写数据FIFO存储单元相连,写命令和写数据FIFO存储单元包括写命令FIFO存储模块cmdQ和写数据FIFO存储队列wdatQ。本实施例通过修改典型的链路层协议,增加对写报文前瞻处理的支持,即允许写报文在完成校验之前流出,从而使得写报文的后续处理和报文校验可以重叠执行,降低报文处理通路的绝对延时。当报文校验发现错误时,链路层接收单元启动错误重传机制,同时将报文错误标志位置为1;后续逻辑在发现报文出错后启动错误报文纠正程序,以消除错误报文的影响,保证数据一致性。需要说明的是,由于读报文通常只有一个头部不携带数据,报文长度很短,不需要进行前瞻处理,故不在本实施例的技术方案之内。
报文解析状态机模块的输入端接收来链路层的接收写报文的有效位Valid、报文头标志位Head、报文尾标志位Tail和错误标志位Error,对报文内容进行解析;接收完写数据时,如果发现报文的错误标志位Error置1,则报文解析状态机模块进入写数据错误重传状态WDATA_RETRANS,直到接收的写数据正确为止。报文解析状态机模块的输出端分别与数据覆盖控制模块、写命令FIFO存储模块cmdQ、写数据FIFO存储队列wdatQ相连,用于控制写命令FIFO存储模块cmdQ写入报文的命令部分,写数据FIFO存储队列wdatQ写入报文的数据部分及通知数据覆盖控制模块在条件满足的情况下执行错误数据覆盖操作。
数据覆盖控制模块的输入端接收来自报文解析状态机模块的报文解析状态机的状态State,及来自写数据FIFO存储队列wdatQ的空标志位empty,数据覆盖控制模块的输出端连接写命令FIFO存储模块cmdQ、写数据FIFO存储队列wdatQ相连,当写报文发生校验错误时,控制写数据FIFO存储队列wdatQ用正确的写数据覆盖FIFO队列的最后一项,如果写报文发生校验错误时写数据FIFO存储队列wdatQ为空,则将正确的数据写入写数据FIFO存储队列wdatQ,并生成对应的纠错写命令写入写命令FIFO存储模块cmdQ。数据覆盖控制模块根据报文解析状态机的状态解析报文中的命令部分和数据部分,分别发送到写命令FIFO存储模块cmdQ、写数据FIFO存储队列wdatQ,同时监控接收的写报文是否发生校验错误。对于发生校验错误的写数据,需要在正确的写数据接收完成之后,生成对写数据FIFO存储队列wdatQ的覆盖控制信号replace。如果发生校验错误的写数据已经被发送给后续处理逻辑,则将正确的写数据当成新数据写入写数据FIFO存储队列wdatQ,同时生成一个新的纠错写命令写入写命令FIFO存储模块cmdQ,用于纠正之前发送的错误写数据。
写命令FIFO存储模块cmdQ的输入端接收来自报文解析状态机模块和数据覆盖控制模块的控制信号,写入报文命令或者用于覆盖的写请求;写命令FIFO存储模块cmdQ的输出端连接报文接收完成后的后续处理逻辑。写命令FIFO存储模块cmdQ采用标准的FIFO结构,用于保存报文命令。报文解析状态机模块对从链路层接收端口接收的报文进行解析,将报文的命令部分保存在写命令FIFO存储模块cmdQ中。完整的命令包括操作码,地址,事务ID等信息。此外,当发生写数据校验错误时,如果错误的写数据和写命令已经被发送给后续处理逻辑,则数据覆盖控制模块负责生成纠错写命令,用于纠正之前错误写命令所写入的数据。这里需要假设所有的写操作是维序的,即对同一地址的连续写操作的执行顺序与命令的发送时间顺序保持一致。
写数据FIFO存储队列wdatQ的输入端接收来自报文解析状态机模块和数据覆盖控制模块的控制信号,写入报文携带的写数据或者用于覆盖的写数据;写数据FIFO存储队列wdatQ的输出端连接报文完成后的后续处理逻辑。写数据FIFO存储队列wdatQ是在标准的FIFO结构基础上,增加对最后写入的数据进行覆盖的操作,当发送写数据校验错误时,链路层立刻进入重传状态,直到正确的写数据被接收完成为止。故在接收到正确的写数据之前,不会有属于新请求的写数据被接收,所以数据覆盖操作只需要针对写数据FIFO存储队列wdatQ的最后一项;但是,如果写数据FIFO存储队列wdatQ为空,则需要生成纠错写命令,从而对已经输出的错误的写数据进行纠错。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种面向板级高速总线的写报文前瞻处理方法,其特征在于步骤包括:
1)接收链路层的写报文,解析接收的写报文并进行校验,如果校验不通过则请求重传写报文,并标记写报文的错误标志位Error为1;
2)对接收的写报文进行边界判断,识别写报文的写命令cmd和写数据wdata,不区分报文是否校验通过,直接将写命令cmd和写数据wdata分别通过FIFO队列缓存并输出给报文的后续处理逻辑;同时检测写报文的错误标志位Error,如果错误标志位Error为1,则循环接收重发的写报文直至重发的写报文校验通过;当重发的写报文校验通过时,如果FIFO队列非空,则使用重发的写报文覆盖FIFO队列中缓存的写报文;如果错误的写命令和写数据已经被发送给报文的后续处理逻辑使得FIFO队列为空,则使用重发的写报文生成新的纠错写报文并写入FIFO队列中。
2.根据权利要求1所述的面向板级高速总线的写报文前瞻处理方法,其特征在于,所述步骤2)的详细步骤包括:
2.1)接收写报文的有效位Valid、报文头标志位Head、报文尾标志位Tail和错误标志位Error,对写报文的内容进行解析,发出写报文的写信号write;同时建立状态State包括空闲状态IDLE、写数据正常接收状态WDATA_RECV、写数据错误重传状态WDATA_RETRANS的报文解析状态机,将报文解析状态机的状态State初始为空闲状态IDLE,如果收到写报文的报文头标志位Head则进入写数据正常接收状态WDATA_RECV;当写报文接收结束时,如果写报文的错误标志位Error为1则进入写数据错误重传状态WDATA_RETRANS;
2.2)根据写报文的内容解析结果识别出写报文的写命令cmd和写数据wdata,检测所述报文解析状态机的状态State,如果报文解析状态机处于写数据正常接收状态WDATA_RECV,则输出写报文的写命令cmd以及写数据wdata;如果报文解析状态机处于写数据错误重传状态WDATA_RETRANS,则输出写报文的写命令cmd、写数据wdata以及覆盖控制信号replace,并循环接收重发的写报文的写命令cmd和写数据wdata直至重发的写报文的错误标志位Error为0,当重发的写报文的错误标志位Error为0时,检查用于缓存写数据的写数据FIFO存储队列wdatQ的空状态empty;
2.3)如果收到写报文的写信号write、写命令cmd,未收到覆盖控制信号replace,则判定报文解析状态机处于写数据正常接收状态WDATA_RECV,将写报文的写命令cmd写入用于缓存写命令的写命令FIFO存储队列cmdQ中,并将写报文的写数据wdata写入写数据FIFO存储队列wdatQ中;如果同时收到写报文的写信号write、写命令cmd、覆盖控制信号replace,则判定报文解析状态机处于写数据错误重传状态WDATA_RETRANS,检查重发的写报文的错误标志位Error,当重发的写报文的错误标志位Error为0时,获取的写数据FIFO存储队列wdatQ的空状态empty,如果写数据FIFO存储队列wdatQ非空,则将重发的写报文的写命令cmd覆盖写命令FIFO存储队列cmdQ中的最后一项写命令、将接收写报文的写数据wdata覆盖写数据FIFO存储队列wdatQ中的最后一项写数据;如果写数据FIFO存储队列wdatQ为空,则判定错误的写命令和写数据已经被发送给后续处理逻辑,根据重发的写报文生成用于纠正错误写命令的新的纠错写命令并保存到写命令FIFO存储队列cmdQ中,同时生成纠错后的写数据wdata并保存到写数据FIFO存储队列wdatQ中;将写命令FIFO存储队列cmdQ中的写命令或者纠错写命令、写数据FIFO存储队列wdatQ中的写数据按照顺序输出给报文的后续处理逻辑。
3.根据权利要求1或2所述的面向板级高速总线的写报文前瞻处理方法,其特征在于:所述步骤1)中解析接收写报文并进行校验的校验具体是指进行CRC校验。
4.一种面向板级高速总线的写报文前瞻处理装置,其特征在于包括:
链路层接收单元,用于接收链路层的写报文,解析接收的写报文并进行校验,如果校验不通过则请求重传写报文,并标记写报文的错误标志位Error为1;
报文缓存及前瞻处理单元,用于对接收的写报文进行边界判断,识别写报文的写命令cmd和写数据wdata,不区分报文是否校验通过,直接将写命令cmd和写数据wdata分别通过FIFO队列缓存并输出给报文的后续处理逻辑;同时检测写报文的错误标志位Error,如果错误标志位Error为1,则循环接收重发的写报文直至重发的写报文校验通过,如果FIFO队列非空,则使用重发的写报文覆盖FIFO队列中缓存的写报文;如果写报文已输出给报文的后续处理逻辑,则使用重发的写报文生成新的纠错写报文并写入FIFO队列中。
5.根据权利要求4所述的面向板级高速总线的写报文前瞻处理方法,其特征在于,所述报文缓存及前瞻处理单元包括:
报文解析状态机模块,用于接收写报文的有效位Valid、报文头标志位Head、报文尾标志位Tail和错误标志位Error,对写报文的内容进行解析,发出写报文的写信号write;同时建立状态State包括空闲状态IDLE、写数据正常接收状态WDATA_RECV、写数据错误重传状态WDATA_RETRANS的报文解析状态机,将报文解析状态机的状态State初始为空闲状态IDLE,如果收到写报文的报文头标志位Head则进入写数据正常接收状态WDATA_RECV;当写报文接收结束时,如果写报文的错误标志位Error为1则进入写数据错误重传状态WDATA_RETRANS;
数据覆盖控制模块,用于根据写报文的内容解析结果识别出写报文的写命令cmd和写数据wdata,检测所述报文解析状态机的状态State,如果报文解析状态机处于写数据正常接收状态WDATA_RECV,则输出写报文的写命令cmd以及写数据wdata;如果报文解析状态机处于写数据错误重传状态WDATA_RETRANS,则输出写报文的写命令cmd、写数据wdata以及覆盖控制信号replace,并循环接收重发的写报文的写命令cmd和写数据wdata直至重发的写报文的错误标志位Error为0,当重发的写报文的错误标志位Error为0时,检查用于缓存写数据的写数据FIFO存储队列wdatQ的空状态empty;
写命令和写数据FIFO存储队列wdatQ单元,包括写命令FIFO存储队列cmdQ和写数据FIFO存储队列wdatQ,如果收到写报文的写信号write、写命令cmd,未收到覆盖控制信号replace,则判定报文解析状态机处于写数据正常接收状态WDATA_RECV,将写报文的写命令cmd写入用于缓存写命令的写命令FIFO存储队列cmdQ中,并将写报文的写数据wdata写入写数据FIFO存储队列wdatQ中;如果同时收到写报文的写信号write、写命令cmd、覆盖控制信号replace,则判定报文解析状态机处于写数据错误重传状态WDATA_RETRANS,检查重发的写报文的错误标志位Error,当重发的写报文的错误标志位Error为0时,获取的写数据FIFO存储队列wdatQ的空状态empty,如果写数据FIFO存储队列wdatQ非空,则将重发的写报文的写命令cmd覆盖写命令FIFO存储队列cmdQ中的最后一项写命令、将接收写报文的写数据wdata覆盖写数据FIFO存储队列wdatQ中的最后一项写数据;如果写数据FIFO存储队列wdatQ为空,则判定错误的写命令和写数据已经被发送给后续处理逻辑,根据重发的写报文生成用于纠正错误写命令的新的纠错写命令并保存到写命令FIFO存储队列cmdQ中,同时生成纠错后的写数据wdata并保存到写数据FIFO存储队列wdatQ中;将写命令FIFO存储队列cmdQ中的写命令或者纠错写命令、写数据FIFO存储队列wdatQ中的写数据按照顺序输出给报文的后续处理逻辑。
6.根据权利要求4或5所述的面向板级高速总线的写报文前瞻处理方法,其特征在于:所述链路层接收单元解析接收写报文并进行校验的校验具体是指进行CRC校验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510171449.9A CN104866454B (zh) | 2015-04-13 | 2015-04-13 | 面向板级高速总线的写报文前瞻处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510171449.9A CN104866454B (zh) | 2015-04-13 | 2015-04-13 | 面向板级高速总线的写报文前瞻处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866454A true CN104866454A (zh) | 2015-08-26 |
CN104866454B CN104866454B (zh) | 2017-10-03 |
Family
ID=53912295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510171449.9A Active CN104866454B (zh) | 2015-04-13 | 2015-04-13 | 面向板级高速总线的写报文前瞻处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866454B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254035A (zh) * | 2016-08-08 | 2016-12-21 | 青岛海信宽带多媒体技术有限公司 | 通信接口的数据接收方法和装置 |
CN109390025A (zh) * | 2017-08-07 | 2019-02-26 | 慧荣科技股份有限公司 | 存储器装置以及操作指令错误处理方法 |
CN110727530A (zh) * | 2019-09-12 | 2020-01-24 | 无锡江南计算技术研究所 | 基于窗口的错误访存请求重传系统及方法 |
CN110928578A (zh) * | 2019-12-05 | 2020-03-27 | 潍柴动力股份有限公司 | 一种数据处理方法、装置及系统 |
CN112579478A (zh) * | 2020-12-28 | 2021-03-30 | 中国电子科技集团公司第十四研究所 | 一种基于srio的fpga接收引擎设计 |
CN113726605A (zh) * | 2021-08-30 | 2021-11-30 | 北京计算机技术及应用研究所 | 一种快速丢弃错误报文的装置及方法 |
CN113806108A (zh) * | 2021-08-25 | 2021-12-17 | 海光信息技术股份有限公司 | 一种重传方法、内存控制器、处理器系统及电子设备 |
CN114157401A (zh) * | 2021-12-03 | 2022-03-08 | 中国人民解放军国防科技大学 | 一种支持长短两种报文格式的重传缓冲装置 |
CN116991479A (zh) * | 2023-09-28 | 2023-11-03 | 中国人民解放军国防科技大学 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050080946A1 (en) * | 2003-10-14 | 2005-04-14 | Mutsumi Hosoya | Data transfer method and disk control unit using it |
CN1949695A (zh) * | 2006-10-28 | 2007-04-18 | 华为技术有限公司 | 一种帧数据传输中错帧丢弃的方法和系统 |
US20100005214A1 (en) * | 2008-07-01 | 2010-01-07 | International Business Machines Corporation | Enhancing bus efficiency in a memory system |
CN101980468A (zh) * | 2010-12-06 | 2011-02-23 | 南京恩瑞特实业有限公司 | 网络热备数据传输方法 |
US20140156887A1 (en) * | 2011-04-26 | 2014-06-05 | Florian Hartwich | Method and device for serial data transmission which is adapted to memory sizes |
-
2015
- 2015-04-13 CN CN201510171449.9A patent/CN104866454B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050080946A1 (en) * | 2003-10-14 | 2005-04-14 | Mutsumi Hosoya | Data transfer method and disk control unit using it |
CN1949695A (zh) * | 2006-10-28 | 2007-04-18 | 华为技术有限公司 | 一种帧数据传输中错帧丢弃的方法和系统 |
US20100005214A1 (en) * | 2008-07-01 | 2010-01-07 | International Business Machines Corporation | Enhancing bus efficiency in a memory system |
CN101980468A (zh) * | 2010-12-06 | 2011-02-23 | 南京恩瑞特实业有限公司 | 网络热备数据传输方法 |
US20140156887A1 (en) * | 2011-04-26 | 2014-06-05 | Florian Hartwich | Method and device for serial data transmission which is adapted to memory sizes |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254035A (zh) * | 2016-08-08 | 2016-12-21 | 青岛海信宽带多媒体技术有限公司 | 通信接口的数据接收方法和装置 |
CN109390025A (zh) * | 2017-08-07 | 2019-02-26 | 慧荣科技股份有限公司 | 存储器装置以及操作指令错误处理方法 |
CN110727530A (zh) * | 2019-09-12 | 2020-01-24 | 无锡江南计算技术研究所 | 基于窗口的错误访存请求重传系统及方法 |
CN110928578A (zh) * | 2019-12-05 | 2020-03-27 | 潍柴动力股份有限公司 | 一种数据处理方法、装置及系统 |
CN112579478A (zh) * | 2020-12-28 | 2021-03-30 | 中国电子科技集团公司第十四研究所 | 一种基于srio的fpga接收引擎设计 |
CN113806108A (zh) * | 2021-08-25 | 2021-12-17 | 海光信息技术股份有限公司 | 一种重传方法、内存控制器、处理器系统及电子设备 |
CN113726605A (zh) * | 2021-08-30 | 2021-11-30 | 北京计算机技术及应用研究所 | 一种快速丢弃错误报文的装置及方法 |
CN114157401A (zh) * | 2021-12-03 | 2022-03-08 | 中国人民解放军国防科技大学 | 一种支持长短两种报文格式的重传缓冲装置 |
CN114157401B (zh) * | 2021-12-03 | 2024-01-23 | 中国人民解放军国防科技大学 | 一种支持长短两种报文格式的重传缓冲装置 |
CN116991479A (zh) * | 2023-09-28 | 2023-11-03 | 中国人民解放军国防科技大学 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
CN116991479B (zh) * | 2023-09-28 | 2023-12-12 | 中国人民解放军国防科技大学 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104866454B (zh) | 2017-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104866454A (zh) | 面向板级高速总线的写报文前瞻处理方法及装置 | |
CN111641474A (zh) | 基于flit的并行前向纠错和奇偶校验 | |
US8255560B2 (en) | System for transmitting and receiving packets | |
US7840873B2 (en) | Partial CRC insertion in data packets for early forwarding | |
US10841039B2 (en) | System and method for transferring data and a data check field | |
US9652322B2 (en) | User station of a bus system and method for transmitting messages between user stations of a bus system | |
JP2010514264A (ja) | Crcのオーバーヘッドを軽減するためのコマンドパケットのパッキング | |
US8255601B2 (en) | Transmitting system, apparatus, and method | |
CN103368703B (zh) | 数据包重传方法、数据包接收方法及装置 | |
US7701846B2 (en) | Bad data packet capture device | |
JP4807828B2 (ja) | ブロードバンド・エンジンのためのエンベロープ・パケット・アーキテクチュア | |
US20050144339A1 (en) | Speculative processing of transaction layer packets | |
EP3896881B1 (en) | Harq data storage management method and device and harq data buffer | |
JP5857568B2 (ja) | 情報処理システム、受信装置、及び情報処理方法 | |
CN114489718A (zh) | 树状连接系统的固件升级方法、装置、设备及存储介质 | |
CN103873192A (zh) | 数据处理方法及装置 | |
JP6295609B2 (ja) | 受信装置、通信システム、およびプログラム | |
US20110161767A1 (en) | Apparatus and method of communicating automatic repeat request (arq) feedback in a wireless communication network | |
US11068334B2 (en) | Method and system for enhancing communication reliability when multiple corrupted frames are received | |
JP5182417B2 (ja) | 伝送データのエラーチェック装置および方法 | |
US20140064298A1 (en) | Data transmission device and data transmission method | |
CN118113207A (zh) | 数据写入方法、存储装置及电子设备 | |
JPH09326782A (ja) | シリアル通信方法 | |
CN117650999A (zh) | 一种具有故障检测功能的以太网集线器及其工作方法 | |
CN116226014A (zh) | 一种信用管理下的溢出处理方法,处理装置及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |