首页> 中国专利> 基于分布式仲裁的可编程输入输出PIO写合并装置和方法

基于分布式仲裁的可编程输入输出PIO写合并装置和方法

摘要

本发明实施例提供一种基于分布式仲裁的可编程输入输出PIO写合并装置和方法,属于数据通信领域。至少一个写合并缓存器模块中的每个写合并缓存器模块对应一个分布式仲裁器模块,所述PIO接口模块用于将接收到的PIO写请求处理为适合所述至少一个写合并缓存器模块的格式,其中所述PIO写请求包括写地址和写数据;每个写合并缓存器模块用于接收所述PIO写请求,并且存储有与所述写地址相同的缓存器地址的写合并缓存器模块输出命中信号;每个分布式仲裁器模块用于在接收到所述命中信号时输出使能信号,使对应的写合并缓存器模块根据所述写地址的地址偏移写入所述写数据。本发明易于实现、扩展性好、通用性强,可以最大限度的简化数据处理过程。

著录项

  • 公开/公告号CN107861895A

    专利类型发明专利

  • 公开/公告日2018-03-30

    原文格式PDF

  • 申请/专利权人 深圳市楠菲微电子有限公司;

    申请/专利号CN201710996013.2

  • 发明设计人 王克非;张磊;徐亚东;黄文斌;

    申请日2017-10-23

  • 分类号

  • 代理机构北京润平知识产权代理有限公司;

  • 代理人金旭鹏

  • 地址 518057 广东省深圳市南山区西丽街道高新北六道25号风云科技大厦一楼

  • 入库时间 2023-06-19 04:56:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-19

    授权

    授权

  • 2018-04-24

    实质审查的生效 IPC(主分类):G06F13/28 申请日:20171023

    实质审查的生效

  • 2018-03-30

    公开

    公开

说明书

技术领域

本发明涉及数据通信,具体地涉及基于分布式仲裁的PIO写合并装置和方法。

背景技术

现有技术中,CPU通过PIO指令方式访问I/O设备,根据CPU字长的不同,PIO指令中的数据长度通常为1/2/4/8字节。当I/O设备的字长大于CPU字长时,例如CPU字长为4字节,而I/O设备内部的寄存器访问粒度固定为8字节,CPU访问设备寄存器时会发出两个连续地址的4字节PIO写请求,I/O设备必须能够支持将多个PIO请求进行合并,完成一次寄存器写操作。当多个应用并发访问设备时,PIO写请求会交叉乱序,这使得PIO写合并更加复杂,I/O设备完成困难。

发明内容

本发明实施例的目的是提供一种基于分布式仲裁的PIO写合并装置和方法,该基于分布式仲裁的PIO写合并装置和方法易于实现、扩展性好、通用性强,可以最大限度的简化数据处理过程。

为了实现上述目的,本发明实施例提供一种基于分布式仲裁的可编程输入输出PIO写合并装置,该装置包括:至少一个写合并缓存器模块、至少一个分布式仲裁器模块以及PIO接口模块,其中,所述至少一个写合并缓存器模块中的每个写合并缓存器模块对应一个分布式仲裁器模块,所述PIO接口模块用于将接收到的PIO写请求处理为适合所述至少一个写合并缓存器模块的格式,其中所述PIO写请求包括写地址和写数据;所述至少一个写合并缓存器模块中的每个写合并缓存器模块用于接收所述PIO写请求,并且存储有与所述写地址相同的缓存器地址的写合并缓存器模块输出命中信号;所述至少一个分布式仲裁器模块中的每个分布式仲裁器模块用于在接收到所述命中信号时输出使能信号,使对应的写合并缓存器模块根据所述写地址的地址偏移写入所述写数据。

优选地,所述每个写合并缓存器模块包括用于写入所述写数据的写合并数据单元,该写合并数据单元用于根据数据存储的状态输出空状态信号或满状态信号;所述每个分布式仲裁器模块还用于接收所述空状态信号,并且在未接收到所述命中信号时,接收到所述空状态信号的至少一个分布式仲裁器模块的其中一个分布式仲裁器模块输出所述使能信号,使对应的写合并数据单元根据所述写地址的地址偏移写入所述写数据。

优选地,所述每个写合并缓存器模块还包括:写合并地址单元,在所述写合并数据单元输出空状态信号的情况下,所述写合并地址单元用于在接收到所述使能信号时存储所述写地址以作为所述缓存器地址。

优选地,所述每个写合并缓存器模块还包括:写合并超时单元,用于在所述写合并数据单元写入所述写数据时开始计时,以及当预定时间内所述写合并数据单元未输出所述满状态信号时,清空所述写合并缓存器模块。

优选地,该装置还包括:输出仲裁器模块,用于接收所述满状态信号,输出并清空存储在发出所述满状态信号的写合并缓存器模块中的地址和数据。

本发明还提供一种基于分布式仲裁的可编程输入输出PIO写合并装置执行的方法,该方法包括:PIO接口模块将接收到的PIO写请求处理为适合至少一个写合并缓存器模块的格式,其中所述PIO写请求包括写地址和写数据;至少一个写合并缓存器模块中的每个写合并缓存器模块接收所述PIO写请求,并且存储有与所述写地址相同的缓存器地址的写合并缓存器模块输出命中信号;至少一个分布式仲裁器模块中的每个分布式仲裁器模块在接收到所述命中信号时输出使能信号,使对应的写合并缓存器模块根据写地址的地址偏移写入所述写数据。

优选地,所述每个写合并缓存器模块包括用于写入所述写数据的写合并数据单元,该方法还包括:写合并数据单元根据数据存储的状态输出空状态信号或满状态信号;每个分布式仲裁器模块接收所述空状态信号,并且在未接收到所述命中信号时,接收到所述空状态信号的至少一个分布式仲裁器模块的其中一个分布式仲裁器模块输出所述使能信号,使对应的写合并数据单元根据所述写地址的地址偏移写入所述写数据。

优选地,所述每个写合并缓存器模块包括写合并地址单元,该方法还包括:在所述写合并数据单元输出空状态信号的情况下,在接收到所述使能信号时,写合并地址单元存储所述写地址以作为所述缓存器地址。

优选地,该方法还包括:在所述写合并数据单元写入所述写数据时,写合并超时单元开始计时,当预定时间内所述写合并数据单元未输出所述满状态信号时,清空所述写合并缓存器模块。

优选地,该方法还包括:输出仲裁器模块接收所述满状态信号,输出并清空存储在发出所述满状态信号的写合并缓存器模块中的地址和数据。

通过上述技术方案,采用本发明提供的基于分布式仲裁的PIO写合并装置和方法,所述PIO接口模块用于将接收到的PIO写请求处理为适合所述至少一个写合并缓存器模块的格式,其中所述PIO写请求包括写地址和写数据;所述至少一个写合并缓存器模块中的每个写合并缓存器模块用于接收所述PIO写请求,并且存储有与所述写地址相同的缓存器地址的写合并缓存器模块输出命中信号;所述至少一个分布式仲裁器模块中的每个分布式仲裁器模块用于在接收到所述命中信号时输出使能信号,使对应的写合并缓存器模块根据所述写地址的地址偏移写入所述写数据。该基于分布式仲裁的PIO写合并装置和方法使用上述模块进行数据的处理和写合并,可以支持乱序写合并,易于实现、扩展性好、通用性强,可以最大限度的简化数据处理过程。

本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:

图1是本发明一实施例提供的基于分布式仲裁的PIO写合并装置的结构示意图;

图2是本发明一实施例提供的基于分布式仲裁的PIO写合并装置的结构示意图;

图3是本发明一实施例提供的基于分布式仲裁的PIO写合并装置的交互示意图;以及

图4是本发明一实施例提供的基于分布式仲裁的PIO写合并方法的流程图。

附图标记说明

1 PIO接口模块 2写合并缓存器模块

3 分布式仲裁器模块4输出仲裁器模块

21写合并地址单元22 写合并数据单元

23写合并超时单元。

具体实施方式

以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。

图1是本发明一实施例提供的基于分布式仲裁的PIO写合并装置的结构示意图。如图1所示,本发明实施例提供一种基于分布式仲裁的PIO写合并装置,该装置包括:至少一个写合并缓存器模块2、至少一个分布式仲裁器模块3以及PIO接口模块1,其中,所述至少一个写合并缓存器模块2中的每个写合并缓存器模块2对应一个分布式仲裁器模块,所述PIO接口模块1用于将接收到的PIO写请求处理为适合所述至少一个写合并缓存器模块2的格式,其中所述PIO写请求包括写地址和写数据;所述至少一个写合并缓存器模块2中的每个写合并缓存器模块2用于接收所述PIO写请求,并且存储有与所述写地址相同的缓存器地址的写合并缓存器模块输出命中信号;所述至少一个分布式仲裁器模块3中的每个分布式仲裁器模块3用于在接收到所述命中信号时输出使能信号,使对应的写合并缓存器模块2根据所述写地址的地址偏移写入所述写数据。

PIO接口模块1将CPU发出的PIO写请求处理成统一的格式(主要是数据长度)以适应至少一个写合并缓存器模块2,PIO写请求包括数据有效信号(reg_wt_valid),写地址(reg_wt_addr)和写数据(reg_data),并发送给写合并缓存器模块2,其中数据有效信号(reg_wt_valid)在有PIO写请求发送时即为有效,以下说明书描述的过程均是在数据有效信号有效时发生的。根据需要PIO接口模块1可以支持多种CPU总线接口,例如PCI/PCIe总线接口,AXI总线接口,Local Bus总线接口等。

写合并缓存器模块2是一个宽度为2N(N>=0)字节的数据寄存器(buf_data)加上一个64位宽的地址寄存器(buf_addr)组成的寄存器组,数据寄存器(buf_data)能够以2k字节(0<=k<=N)为单位进行读写访问,每个写合并缓存器模块2可以将2(N-k)个2k字节的PIO写请求合并成1个2N字节的写请求。多个PIO写请求之间可以乱序,写合并缓存器模块2可以根据地址对数据进行合并。

在本实施例中,每个写合并缓存器模块2对应一个分布式仲裁器模块3。写合并缓存器模块2可以具有“命中状态”(buf_hit),表示写合并缓存器模块2中有部分数据,每一个写合并缓存器模块2将接收到的PIO写请求中的写地址(reg_wt_addr)与自身存储的缓存器地址比较,在某一个写合并缓存器模块2中上述两个地址相同时,发出命中信号(buf_hit=1),表示该写请求命中了该写合并缓存器模块2,以表示该写合并缓存器模块2可以写入该PIO写请求中的写数据(reg_data),其中,针对每一个PIO写请求,有且只有一个写合并缓存器模块会发出命中信号(buf_hit=1)。与该写合并缓存器模块2对应的分布式仲裁器模块3接收到该命中信号时,发出使能信号(buf_en=1)至写合并缓存器模块2,使写合并缓存器模块2按照写地址(reg_wt_addr)的地位地址偏移将写数据(reg_data)写入写合并缓存器模块2的相应位置,其中缓存器地址的由来将在下文详细描述。

图2是本发明一实施例提供的基于分布式仲裁的PIO写合并装置的结构示意图。如图2所示,每个写合并缓存器模块2包括写合并数据单元22、写合并地址单元21以及写合并超时单元23,用于写入所述写数据的写合并数据单元22用于根据数据存储的状态输出空状态信号或满状态信号;所述每个分布式仲裁器模块3还用于接收所述空状态信号,并且在未接收到所述命中信号时,接收到所述空状态信号的至少一个分布式仲裁器模块3的其中一个分布式仲裁器模块3输出所述使能信号,使对应的写合并数据单元22根据所述写地址的地址偏移写入所述写数据;写合并地址单元21在所述写合并数据单元输出空状态信号的情况下,用于在接收到所述使能信号时存储所述写地址以作为所述缓存器地址;写合并超时单元23用于在所述写合并数据单元22写入所述写数据时开始计时,以及当预定时间内所述写合并数据单元22未输出所述满状态信号时,清空所述写合并缓存器模块2。

写合并数据单元22包括数据寄存器(buf_data),不仅可以在接收到使能信号(buf_en=1)时写入写数据(reg_data),还可以根据自身的状态输出空状态信号(buf_empty=1)或满状态信号(buf_full=1)。

写合并地址单元21包括地址寄存器(buf_addr),不仅可以判断写地址(reg_wt_addr)是否与缓存器地址相同以及输出命中信号(buf_hit=1),还可以在接收到使能信号(buf_en=1)时存储写地址(reg_wt_addr)以作为缓存器地址。

写合并超时单元23在写合并数据单元22写入写数据(reg_data)时清0并开始计时,当预定时间内写合并数据单元22未输出满状态信号(buf_full=1)时,清空包含该写合并单元的写合并缓存器模块2,该清空指的是写合并数据单元22的数据清空(buf_data=0),写合并地址单元21的缓存器地址清空(buf_addr=0),写合并数据单元22恢复空状态(buf_empty=1,buf_full=0)以及清除命中信号(buf_hit=0)。

在本实施例中,写合并缓存器模块2还具有两种状态,分别为:空状态(buf_empty),表示写合并缓存器模块2中无任何数据,可以接收一个新的写合并请求;满状态(buf_full),表示写合并缓存器模块2完成了一个64bit数据的写合并,可以进行输出。写合并数据单元22可以输出空状态信号(buf_empty=1)至对应的分布式仲裁器模块3。在每一个写合并缓存器模块2的写合并地址单元21发现没有任何一个写合并缓存器模块2的缓存器地址与写地址(reg_wt_addr)相同时,即每个分布式仲裁器模块3均不能接收到命中信号,则分布式仲裁器模块3选择向某一个输出空状态信号(buf_empty=1)的写合并缓存器模块2发出使能信号(buf_en=1),使该写合并数据单元22写入写数据(reg_data),使写合并地址单元21存储写地址(reg_wt_addr)以作为缓存器地址。

另外,可以提前设置写合并缓存器模块2的编号,以控制分布式仲裁器的选择顺序,即在分布式仲裁器模块3选择输出空状态信号(buf_empty=1)的写合并缓存器模块2时,以编号顺序选择,可以使写数据(reg_data)的写入更加规律。但是,无论分布式仲裁器如何选择写合并缓存器模块2,在同一PIO写请求期间,只能有一个分布式仲裁器向对应的写合并缓存器模块2发送使能信号(buf_en=1)。

在开始接收第一个PIO写请求前,可以初始化所有写合并缓存器模块,包括写合并数据单元22的数据清空(buf_data=0),写合并地址单元21的缓存器地址清空(buf_addr=0),写合并数据单元22恢复空状态(buf_empty=1,buf_full=0)以及清除命中信号(buf_hit=0)。

图3是本发明一实施例提供的基于分布式仲裁的PIO写合并装置的交互示意图。如图3所示,该基于分布式仲裁的PIO写合并装置还包括:输出仲裁器模块4,用于接收所述满状态信号,输出并清空存储在发出所述满状态信号的写合并缓存器模块2中的地址和数据。

输出仲裁器模块4接收所述满状态信号(buf_full=1),对所有发出满状态信号(buf_full=1)的写合并缓存器模块2进行仲裁,选择一个写合并缓存器模块2,输出写合并地址单元21的地址和写合并数据单元22的数据,并清空写合并缓存器模块2。该清空指的是写合并数据单元22的数据清空(buf_data=0),写合并地址单元21的缓存器地址清空(buf_addr=0),写合并数据单元22恢复空状态(buf_empty=1,buf_full=0)以及清除命中信号(buf_hit=0)。

图4是本发明一实施例提供的基于分布式仲裁的PIO写合并方法的流程图。如图4所示,本发明还提供一种基于分布式仲裁的PIO写合并方法,该方法包括:所述PIO接口模块将接收到的PIO写请求处理为适合至少一个写合并缓存器模块的格式,其中所述PIO写请求包括写地址和写数据(步骤S41);至少一个写合并缓存器模块中的每个写合并缓存器模块接收所述PIO写请求,并且存储有与所述写地址相同的缓存器地址的写合并缓存器模块输出命中信号(步骤S42);至少一个分布式仲裁器模块中的每个分布式仲裁器模块在接收到所述命中信号时输出使能信号(步骤S43);对应的写合并缓存器模块根据所述写地址的地址偏移写入所述写数据(步骤S44)。

优选地,所述每个写合并缓存器模块包括用于写入所述写数据的写合并数据单元,该方法还包括:写合并数据单元根据数据存储的状态输出空状态信号或满状态信号;每个分布式仲裁器模块接收所述空状态信号,并且在未接收到所述命中信号时,接收到所述空状态信号的至少一个分布式仲裁器模块的其中一个分布式仲裁器模块输出所述使能信号,使对应的写合并数据单元根据所述写地址的地址偏移写入所述写数据。

优选地,所述每个写合并缓存器模块包括写合并地址单元,该方法还包括:在所述写合并数据单元输出空状态信号的情况下,在接收到所述使能信号时,写合并地址单元存储所述写地址以作为所述缓存器地址。

优选地,该方法还包括:在所述写合并数据单元写入所述写数据时,写合并超时单元开始计时,当预定时间内所述写合并数据单元未输出所述满状态信号时,清空所述写合并缓存器模块。

优选地,该方法还包括:输出仲裁器模块接收所述满状态信号,输出并清空存储在发出所述满状态信号的写合并缓存器模块中的地址和数据。

通过上述技术方案,采用本发明提供的基于分布式仲裁的PIO写合并装置和方法进行数据的处理和写合并,可以支持乱序写合并,易于实现、扩展性好、通用性强,可以最大限度的简化数据处理过程。

以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号