CN116257479A - 重排序缓冲器、***、装置、设备及传输方法 - Google Patents

重排序缓冲器、***、装置、设备及传输方法 Download PDF

Info

Publication number
CN116257479A
CN116257479A CN202310546003.4A CN202310546003A CN116257479A CN 116257479 A CN116257479 A CN 116257479A CN 202310546003 A CN202310546003 A CN 202310546003A CN 116257479 A CN116257479 A CN 116257479A
Authority
CN
China
Prior art keywords
identifier
module
transaction
transaction response
transaction request
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
Application number
CN202310546003.4A
Other languages
English (en)
Other versions
CN116257479B (zh
Inventor
冯小成
刘义
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xiangdixian Computing Technology Co Ltd
Original Assignee
Beijing Xiangdixian Computing Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Xiangdixian Computing Technology Co Ltd filed Critical Beijing Xiangdixian Computing Technology Co Ltd
Priority to CN202310546003.4A priority Critical patent/CN116257479B/zh
Publication of CN116257479A publication Critical patent/CN116257479A/zh
Application granted granted Critical
Publication of CN116257479B publication Critical patent/CN116257479B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4013Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开提供一种重排序缓冲器、***、装置、设备及传输方法。该重排序缓冲器包括排序模块和第一缓存模块;排序模块接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识;将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块;其中,该事务请求的第二标识不同于第一缓存模块中记录的其它映射关系中的第二标识;接收从模块通过总线反馈的事务响应,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块。一定程度上避免了死锁情况的发生,且不损耗***的超前传输性能。

Description

重排序缓冲器、***、装置、设备及传输方法
技术领域
本公开涉及总线技术领域,尤其涉及一种重排序缓冲器、***、装置、设备及传输方法。
背景技术
片上***(System on chip,SOC)内部总线的互联协议有高级可扩展接口(Advanced eXtensible Interface,AXI)协议等。主模块发出的事务请求由互联总线(Interconnect)通过地址控制信号来判断目的从模块,从模块返回的响应(response)根据标志符来识别发出对应的事务请求的主模块,这种机制导致AXI总线在使用过程中会出现由于标志符相同的事务请求(或标志符相同的事务响应)彼此之间需要保序,导致的死锁问题。目前,防止总线死锁的常用方法为,在互联总线与各主模块相连的端口添加检查模块,主模块发出的每笔事务都需要经过检查模块,检查模块会检查主模块之前是否发出相同标志符但访问不同从模块的事务,如果有则暂时堵塞该笔事务,并由互联总线发起一个提高优先级的请求,让从模块加快处理已经接收的该标志符对应的事务。但是这种方案中仍旧会存在一定程度的堵塞,还会导致***超前传输(outstanding)性能的损失。
发明内容
本公开的目的是提供一种重排序缓冲器、***、装置、设备及传输方法,解决了现有技术中防止总线死锁的方案会损失***超前传输(outstanding)性能的技术问题。
根据本公开的一个方面,提供一种重排序缓冲器,应用于总线***,包括:排序模块和第一缓存模块;
排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块;其中,该事务请求的第二标识不同于第一缓存模块中记录的其它映射关系中的第二标识;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;其中,事务响应与其针对的事务请求具有相同的第二标识;
根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块。
在一些实施例中,上述重排序缓冲器中,还包括第二缓存模块;
排序模块,具体被配置为:
将具有第二标识的事务请求通过总线转发至从模块,并确认第一缓存模块中当前记录的映射关系中与该事务请求对应同一第一标识的映射关系的数量,将该数量加上一预设阈值,作为该事务请求的第三标识;
将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识;
将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处;
根据第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块。
在一些实施例中,上述重排序缓冲器中,排序模块,还被配置为:
每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第二标识的映射关系清除。
在一些实施例中,上述重排序缓冲器中,排序模块,被配置为根据第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块,包括:
排序模块,被配置为每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1;
监测第一缓存模块中记录的各个映射关系中的第三标识的值,在第一缓存模块中记录的一映射关系中的第三标识的值为预设阈值时,以该映射关系中的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块。
在一些实施例中,上述重排序缓冲器中,排序模块,还被配置为:
每当将一事务响应返回主模块后,在将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之前,将第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值为预设阈值的映射关系清除;或,
每当将一事务响应返回主模块后,在将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之后,将第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值小于预设阈值的映射关系清除。
在一些实施例中,上述重排序缓冲器中,排序模块,被配置为将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,包括:
排序模块,被配置为判断该事务响应的第二标识对应的第三标识的值是否大于预设阈值,若是,则将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,否则,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的该事务响应直接返回主模块。
在一些实施例中,上述重排序缓冲器中,还包括:
多路选择模块,被配置为接收排序模块输出的事务响应和第二缓存模块输出的事务响应,并从中选择其一返回主模块。
在一些实施例中,上述重排序缓冲器中,排序模块,被配置为将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块,包括:
排序模块,被配置为以该事务请求的第二标识为写指针,将该事务请求的第一标识、第二标识和第三标识的映射关系写入第一缓存模块的对应位置处;
排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识、第二标识和第三标识的映射关系,以得到该事务响应的第二标识对应的第一标识和第三标识。
在一些实施例中,上述重排序缓冲器中,排序模块,被配置为将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块,包括:
排序模块,被配置为以该事务请求的第二标识为写指针,将该事务请求的第一标识与第三标识写入第一缓存模块的对应位置处;
排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识和第三标识。
在一些实施例中,上述重排序缓冲器中,排序模块,具体被配置为:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识与第二标识的映射关系写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识与第二标识的映射关系,以将该事务响应的第二标识替换为对应的第一标识。
在一些实施例中,上述重排序缓冲器中,排序模块,具体被配置为:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识,以将该事务响应的第二标识替换为对应的第一标识。
在一些实施例中,上述重排序缓冲器中,排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识,包括:
排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识,并确认第一缓存模块中是否有存储空位,若是,则将任一存储空位对应的写指针的值作为该事务请求的第二标识,并替换该事务请求的第一标识。
在一些实施例中,上述重排序缓冲器中,第一缓存模块包括多个寄存器,第二标识为寄存器的标识;
排序模块,具体被配置为:
接收主模块的事务请求,读取该事务请求的第一标识,并确认第一缓存模块中是否有空寄存器,若是,则将任一空寄存器的标识作为该事务请求的第二标识,并替换该事务请求的第一标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系,缓存至该事务请求的第二标识对应的寄存器中,或,将该事务请求的第一标识,缓存至该事务请求的第二标识对应的寄存器中。
根据本公开的另一方面,提供一种总线***,包括总线、主模块、从模块和上述任一实施例的重排序缓冲器。
根据本公开的另一方面,提供一种电子装置,包括上述任一实施例的总线***。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子装置。
根据本公开的另一个方面,提供一种总线***的数据传输方法,包括:
接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块;其中,该事务请求的第二标识不同于第一缓存模块中记录的其它映射关系中的第二标识;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;其中,事务响应与其针对的事务请求具有相同的第二标识;
根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块。
在一些实施例中,上述总线***的数据传输方法中,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
将具有第二标识的事务请求通过总线转发至从模块,并确认第一缓存模块中当前记录的映射关系中与该事务请求对应同一第一标识的映射关系的数量,将该数量加上一预设阈值,作为该事务请求的第三标识;
将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识;
将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处;
根据第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块。
在一些实施例中,上述总线***的数据传输方法中,还包括:
每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第二标识的映射关系清除。
在一些实施例中,上述总线***的数据传输方法中,根据第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块,包括:
每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1;
监测第一缓存模块中记录的各个映射关系中的第三标识的值,在第一缓存模块中记录的一映射关系中的第三标识的值为预设阈值时,以该映射关系中的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块。
在一些实施例中,上述总线***的数据传输方法中,还包括:
每当将一事务响应返回主模块后,在将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之前,将第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值为预设阈值的映射关系清除;或,
每当将一事务响应返回主模块后,在将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之后,将第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值小于预设阈值的映射关系清除。
在一些实施例中,上述总线***的数据传输方法中,将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,包括:
判断该事务响应的第二标识对应的第三标识的值是否大于预设阈值,若是,则将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,否则,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的该事务响应直接返回主模块。
在一些实施例中,上述总线***的数据传输方法中,将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块,包括:
以该事务请求的第二标识为写指针,将该事务请求的第一标识、第二标识和第三标识的映射关系写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识、第二标识和第三标识的映射关系,以得到该事务响应的第二标识对应的第一标识和第三标识。
在一些实施例中,上述总线***的数据传输方法中,将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块,包括:
以该事务请求的第二标识为写指针,将该事务请求的第一标识与第三标识写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识和第三标识。
在一些实施例中,上述总线***的数据传输方法中,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识与第二标识的映射关系写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识与第二标识的映射关系,以将该事务响应的第二标识替换为对应的第一标识。
在一些实施例中,上述总线***的数据传输方法中,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识,以将该事务响应的第二标识替换为对应的第一标识。
在一些实施例中,上述总线***的数据传输方法中,接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识,包括:
接收主模块的事务请求,读取该事务请求的第一标识,并确认第一缓存模块中是否有存储空位,若是,则将任一存储空位对应的写指针的值作为该事务请求的第二标识,并替换该事务请求的第一标识。
在一些实施例中,上述总线***的数据传输方法中,第一缓存模块包括多个寄存器,第二标识为寄存器的标识;
接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
接收主模块的事务请求,读取该事务请求的第一标识,并确认第一缓存模块中是否有空寄存器,若是,则将任一空寄存器的标识作为该事务请求的第二标识,并替换该事务请求的第一标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系,缓存至该事务请求的第二标识对应的寄存器中,或,将该事务请求的第一标识,缓存至该事务请求的第二标识对应的寄存器中。
附图说明
图1为本公开一个实施例提供的重排序缓冲器的连接结构示意图;
图2为本公开一个实施例提供的总线***的连接结构示意图;
图3为本公开一个实施例提供的总线***的数据传输方法的流程示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种重排序缓冲器、***、装置、设备及传输方法,该重排序缓冲器包括排序模块和第一缓存模块;排序模块接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识;将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块;其中,该事务请求的第二标识不同于第一缓存模块中记录的其它映射关系中的第二标识;接收从模块通过总线反馈的事务响应,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块。
这种重排序方案中,在一定程度上实现了总线和从模块接收到的事务请求携带的标识是唯一的,避免了死锁情况的发生,且不损耗***的超前传输(outstanding)性能。
本公开的一个实施例提供一种重排序缓冲器,应用于总线***,如图1所示,包括:排序模块和第一缓存模块;
排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块;其中,该事务请求的第二标识不同于第一缓存模块中记录的其它映射关系中的第二标识;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;其中,事务响应与其针对的事务请求具有相同的第二标识;
根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块。
总线将事务请求发送给从模块之后,从模块会根据接收到的事务请求生成该事务请求对应的事务响应并赋予对应的标志符。在一些情况下,主模块发出的事务请求的标志符为请求标志A加上第一标识,通过排序模块将第一标识替换为对应的第二标识后,从模块接收到的事务请求的标志符为请求标志A加上第二标识,从模块针对接收到的事务请求对应反馈的事务响应的标志符为响应标志R加上第二标识,其中,事务响应的第二标识与其针对的事务请求的第二标识是相同的。
其中,事务请求的第一标识是指事务请求的原始标识,可以为总线ID。
在一些实施例中,上述总线可以为AXI总线、BUS总线等。当上述总线为AXI总线时,事务请求的第一标识为AXI-ID。
当主模块在一个时间段内发出的多个事务请求具有相同的标志符(即第一标识相同)时,为了实现该多个标志符相同的事务请求的彼此区分,该多个事务请求彼此之间需要保持一定的顺序(即需要保序),即需要按照主模块发送事务请求的顺序来返回响应。
而本提案中,主模块发出的事务请求通过在重排序缓冲器中将第一标识替换为对应的第二标识,且排序模块为接收到的该事务请求赋予与第一缓存模块中记录的其它映射关系中的第二标识不同的第二标识(也即第一缓存模块保持其记录的各个映射关系对应不同的第二标识),使得各个事务请求通过总线传输至从模块的过程中都是能够彼此区分的,且从模块对应反馈的事务响应也具有不同的第二标识,也能够彼此区分,保证了事务请求通过总线传输至从模块、从模块对应反馈的事务响应以及通过总线返回响应的过程中,不会出现由于需要保序导致的死锁问题。且事务响应的第二标识会在重排序缓冲器重新恢复为第一标识再返回主模块,也不会影响主模块的正常运行。
在一些实施例中,第二标识可以为任意标识,满足排序模块在接收主模块的事务请求时,为当前接收到的事务请求赋予的第二标识,与第一缓存模块内当前记录的各个映射关系中的第二标识均不相同,使得该将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块后,第一缓存模块中记录的各个映射关系仍然对应不同的第二标识即可。
在一些实施例,排序模块为当前接收到的事务请求赋予的第二标识为第一缓存模块的写指针的当前值(每次写入数据后,更新写指针的值),也可以是第一缓存模块中任一存储空位对应的写指针的值,对应的,排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识,包括:
排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识,并确认第一缓存模块中是否有存储空位,若是,则将任一存储空位对应的写指针的值作为该事务请求的第二标识,并替换该事务请求的第一标识。
在一些实施例中,在第二标识为第一缓存模块的写指针的对应值的场景下,排序模块,具体被配置为:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识与第二标识的映射关系写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识与第二标识的映射关系,以将该事务响应的第二标识替换为对应的第一标识。
可以理解为,在第一缓存模块中第二标识指向的存储位置上缓存了对应的第一标识与第二标识的映射关系,因此,以排序模块当前接收到的事务响应携带的第二标识为读指针,就可以从第一缓存模块中读取对应位置处缓存的第一标识与第二标识的映射关系,就可以将当前接收到的事务响应携带的第二标识映射为对应的第一标识。
在另一些实施例中,排序模块,具体被配置为:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识,以将该事务响应的第二标识替换为对应的第一标识。
可以理解为,由于以该事务请求的第二标识为写指针,将该事务请求的第一标识写入第一缓存模块的对应位置处,这样在第一缓存模块内自然形成了各个第二标识与各个第二标识指向的存储位置处缓存的第一标识的映射关系,根据对应的第二标识即可找到对应的第一标识,同样可以实现将事务请求的第一标识与第二标识的映射关系记录于第一缓存模块的目的。以排序模块当前接收到的事务响应携带的第二标识为读指针,就可以从第一缓存模块中读取对应位置处缓存的第一标识,就可以将当前接收到的事务响应携带的第二标识替换为对应的第一标识。
在一些实施例中,第一缓存模块包括多个寄存器,第二标识为寄存器的标识,即一个第二标识对应一个寄存器。
在一些实施例中,寄存器的标识可以为寄存器的序号。例如,当第一缓存模块中包括256个寄存器时,该256个寄存器的标识分别为0~255,即第0个寄存器对应的第二标识为0,第1个寄存器对应的第二标识为1,以此类推。
在第二标识为寄存器的标识的场景下,排序模块,具体被配置为:
接收主模块的事务请求,读取该事务请求的第一标识,并确认第一缓存模块中是否有空寄存器,若是,则将任一空寄存器的标识作为该事务请求的第二标识,并替换该事务请求的第一标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系,缓存至该事务请求的第二标识对应的寄存器中,或,将该事务请求的第一标识,缓存至该事务请求的第二标识对应的寄存器中。
在一些实施例中,在为当前接收到的事务请求赋予对应的第二标识时,查找空寄存器的方式可以为以上一次接收到的事务请求的第二标识对应的寄存器为起点,沿寄存器的序号增大的方向进行轮询,轮询到的第一个空寄存器的标识为当前事务请求的第二标识。
在一些实施例中,在为当前接收到的事务请求赋予对应的第二标识时,查找空寄存器的方式可以为每次都以第0个寄存器为起点,沿寄存器的序号增大的方向进行轮询,轮询到的第一个空寄存器的标识为当前事务请求的第二标识。
在一些实施例中,寄存器是否为空,通过一状态标志符指示,一寄存器的状态标志符的有效和无效分别指示了该寄存器是否为空。当该状态标志符为1-bit时,1表示有效(即为空),0表示无效(即不为空)。
对应的,在确认一寄存器是否为空时,通过确认该寄存器的状态标志符是否有效,即可确认该寄存器是否为空。
第一缓存模块中各个寄存器的状态标志符通过一标志寄存器来缓存。256个寄存器的状态标志符可以通过一256 bits的标志寄存器来缓存。
可以理解为,在将该事务请求的第一标识,缓存至该事务请求的第二标识对应的寄存器中的场景下,各个第一标识分别缓存在了对应的第二标识对应的寄存器中,这样在第一缓存模块内自然形成了各个第二标识与各个第二标识对应的寄存器中缓存的第一标识的映射关系,根据对应的第二标识即可找到对应的第一标识,同样可以实现将事务请求的第一标识与第二标识的映射关系记录于第一缓存模块的目的。
在将该事务请求的第一标识与第二标识的映射关系,缓存至该事务请求的第二标识对应的寄存器中的场景下,第一缓存模块的读取过程为,排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,包括:
排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,从第一缓存模块中读取该事务响应的第二标识对应的寄存器中缓存的第一标识与第二标识的映射关系,以将该事务响应的第二标识替换为对应的第一标识。
在将该事务请求的第一标识,缓存至该事务请求的第二标识对应的寄存器中的场景下,第一缓存模块的读取过程为,排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,包括:
排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,从第一缓存模块中读取该事务响应的第二标识对应的寄存器中缓存的第一标识,以将该事务响应的第二标识替换为对应的第一标识。
为了进一步实现事务响应从重排序缓冲器返回主模块过程中的保序,即为了进一步实现具有相同标志符(相同第一标识)的事务响应按照主模块发出对应的事务请求的顺序,返回主模块,以进一步避免响应通道中的死锁问题的发生,在一些实施例中,重排序缓冲器,还包括第二缓存模块,被配置为对排序模块接收到的事务响应进行缓存,再按照顺序返回主模块。
具体的保序实现方案为,排序模块,被配置为将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
排序模块,被配置为将具有第二标识的事务请求通过总线转发至从模块,并确认第一缓存模块中当前记录的映射关系中与该事务请求对应同一第一标识的映射关系的数量,将该数量加上一预设阈值,作为该事务请求的第三标识;
将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块。
其中,上述预设阈值可以为任意数值,例如0、1等。
第一缓存模块中当前记录的映射关系中与该事务请求对应同一第一标识的映射关系的数量,指示为除了当前接收到的事务请求(用第一请求表示)外,排序模块已经接收到请求但是响应还未返给主模块的事务请求中,具有该同一第一标识的请求的数量,也即具有该同一第一标识的在途(pengding)事务请求(用第二请求表示)的数量。当该数量为0,说明除了当前接收到的事务请求(用第一请求表示),当前不存在与当前接收到的事务请求具有同一第一标识且在途(pengding)的事务请求(用第二请求表示),在接下来的一个时间段内,该第一请求是具有同一第一标识的事务请求中,排在第一个的事务请求,对应的事务响应需要优先返回主模块;当该数量为1,说明除了当前接收到的事务请求(用第一请求表示),还存在1个与当前接收到的事务请求具有同一第一标识且在途(pengding)的事务请求(用第二请求表示),在接下来的一个时间段内,这1个第二请求是具有同一第一标识的事务请求中,排在第一个的事务请求,对应的事务响应需要优先返回主模块,其次是第一请求的事务响应,以此类推。
在前述记录第三标识的场景下,排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块,包括:
排序模块,被配置为接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识;
将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处;
根据第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块。
具体的,一种按序返回响应(响应保序)的方式为:
1)当第一缓存模块中出现一第三标识的值为预设阈值的映射关系时,那么可以以对应的第二标识为读指针,确认第二缓存模块中对应位置处是否已经缓存了事务响应,若是,则直接读取该事务响应返回主模块,否则,则等待该位置处缓存了事务响应之后,再读取该事务响应返回主模块;
2)返回第三标识的值为预设阈值的事务响应之后,查找第一缓存模块中与该事务响应对应同一第一标识的映射关系中值为预设阈值加1的第三标识,以对应的第二标识为读指针,确认第二缓存模块中对应位置处是否已经缓存了事务响应,若是,则直接读取该事务响应返回主模块,否则,则等待该位置处缓存了事务响应之后,再读取该事务响应返回主模块;
3)返回第三标识的值为预设阈值加1的事务响应之后,继续查找第一缓存模块中域该事务响应对应同一第一标识的映射关系中值为预设阈值加2的第三标识,以此类推。
另一种按序返回响应(响应保序)的方式为,排序模块,被配置为每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1;监测第一缓存模块中记录的各个映射关系中的第三标识的值,在第一缓存模块中记录的一映射关系中的第三标识的值为预设阈值时,以该映射关系中的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块。
也即,这种响应保序的方式为:1)当第一缓存模块中出现一第三标识的值为预设阈值的映射关系时,那么可以以对应的第二标识为读指针,确认第二缓存模块中对应位置处是否已经缓存了事务响应,若是,则直接读取该事务响应返回主模块,否则,则等待该位置处缓存了事务响应之后,再读取该事务响应返回主模块;2)返回该事务响应之后,将第一缓存模块中与该事务响应对应同一第一标识的映射关系中的第三标识的值减1,然后重复步骤1)。
上述两种响应保序的方式中,都可以通过第三标识实现响应保序,即以一个较小的资源代价实现事务响应的按顺序返回。
在一些实施例中,在每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1的场景下,排序模块,还被配置为:
每当将一事务响应返回主模块后,在将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之前,将第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值为预设阈值的映射关系清除;或,
每当将一事务响应返回主模块后,在将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之后,将第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值小于预设阈值的映射关系清除。
也就是说,在一事务响应返回主模块后,根据第一标识和第三标识,从第一缓存模块中查找到已经返回主模块的事务响应,并将其从第一缓存模块中清除,避免了第一缓存模块的资源占用。
在另一些实施例中,还可以根据第二标识,从第一缓存模块中查找到已经返回主模块的事务响应,并将其从第一缓存模块中清除,对应的,排序模块,还被配置为:
每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第二标识的映射关系清除。
也就是说,在事务响应返回主模块后,可以将第一缓存模块中记录的与该事务响应对应同一第二标识的映射关系清除。
在一些实施例中,为了在排序模块接收到第三标识为预设阈值的事务响应时,能够立即返回响应给主模块,缩短响应时间,排序模块,被配置为将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,包括:
排序模块,被配置为判断该事务响应的第二标识对应的第三标识的值是否大于预设阈值,若是,则将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,否则,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的该事务响应直接返回主模块。
也即,排序模块针对接收从模块通过总线反馈的事务响应,在该事务响应的第二标识对应的第三标识的值大于预设阈值时,说明在具有相同第一标识的事务响应中,该事务响应当前不是最优先的(排序最靠前)的事务响应,所以需要将具有第一标识的该事务响应写入第二缓存模块的对应位置处。而当该事务响应的第二标识对应的第三标识的值不大于预设阈值(等于预设阈值时),说明在具有相同第一标识的事务响应中,该事务响应当前是最优先的(排序最靠前)的事务响应,可以立即返回主模块。
在上述可以立即返回响应给主模块的场景下,事务响应可以通过排序模块输出,也可以通过第一缓存模块输出,所以,在该场景下,重排序缓冲器,如图1所示,还包括:多路选择模块(Mux),被配置为接收排序模块输出的事务响应和第二缓存模块输出的事务响应,并从中选择其一返回主模块。
在记录第三标识的场景下,排序模块,被配置为将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块,包括:
排序模块,被配置为以该事务请求的第二标识为写指针,将该事务请求的第一标识、第二标识和第三标识的映射关系写入第一缓存模块的对应位置处。
与第一缓存模块的写入过程对应的,排序模块,被配置为根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
排序模块,被配置为以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识、第二标识和第三标识的映射关系,以得到该事务响应的第二标识对应的第一标识和第三标识。
可以理解为,在第一缓存模块中第二标识指向的存储位置上缓存了对应的第一标识、第二标识和第三标识的映射关系,所以以排序模块当前接收到的事务响应携带的第二标识为读指针,就可以从第一缓存模块中读取对应位置处缓存的第一标识、第二标识和第三标识的映射关系,就可以将当前接收到的事务响应携带的第二标识映射为对应的第一标识和第三指标。
其中,第一标识、第二标识和第三标识的映射关系可以拆分为第一标识与第二标识的映射关系,和对应的第三标识,在上述第一缓存模块包括多个寄存器的场景下,第三标识可以记录在第二标识对应寄存器的标签(tag)区中,第一标识与第二标识的映射关系可以记录在第二标识对应寄存器的数据(data)区中。
在另一些实施例中,排序模块,被配置为将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块,包括:
排序模块,被配置为以该事务请求的第二标识为写指针,将该事务请求的第一标识与第三标识写入第一缓存模块的对应位置处。
可以理解为,由于以该事务请求的第二标识为写指针,将该事务请求的第一标识和第三标识写入第一缓存模块的对应位置处,这样在第一缓存模块内自然形成了各个第二标识与各个第二标识指向的存储位置处缓存的第一标识和第三标识的映射关系,根据对应的第二标识即可找到对应的第一标识和第三标识,同样可以实现将事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块的目的。
与第一缓存模块的写入过程对应的,排序模块,被配置为根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
排序模块,被配置为以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识和第三标识。
可以理解为,在第一缓存模块中第二标识指向的存储位置上缓存了对应的第一标识和第三标识,所以以排序模块当前接收到的事务响应携带的第二标识为读指针,就可以从第一缓存模块中读取对应位置处缓存的第一标识和第三标识。
其中,在上述第一缓存模块包括多个寄存器的场景下,第三标识可以记录在第二标识对应寄存器的标签(tag)区中,第一标识可以记录在第二标识对应寄存器的数据(data)区中。
对应的,在上述第一缓存模块包括多个寄存器的场景下,排序模块,被配置为将具有第二标识的事务请求通过总线转发至从模块,并确认第一缓存模块中当前记录的映射关系中与该事务请求对应同一第一标识的映射关系的数量,将该数量加上一预设阈值,作为该事务请求的第三标识,包括:
排序模块,被配置为将具有第二标识的事务请求通过总线转发至从模块,并确认第一缓存模块中当前记录了与该事务请求对应同一第一标识的映射关系的寄存器的数量,将该数量加上一预设阈值,作为该事务请求的第三标识。
在一些实施例中,在第一缓存模块和第二缓存模块同时以第二标识为写指针和读指针的场景下,第一缓存模块和第二缓存模块的存储位置可以是一一对应的,例如,一个事务请求的第一标识和第二标识的映射关系记录于第一缓存模块的第N个存储位置上,那么排序模块在接收到其对应的事务响应时,可以将该事务响应缓存于第二缓存模块的第N个存储位置上。
基于相同的发明构思,本公开实施例还提供一种总线***,如图2所示,包括总线、主模块、从模块和上述任一实施例的重排序缓冲器。
其中,上述总线***为需要通过总线实现读写操作的处理芯片或片上***(System-on-a-chip,SOC)芯片。
在一些实施例中,重排序缓冲器可以设置在主模块上。对应的,第一缓存模块和第二缓存模块可以使用主模块中现有的缓存区域(缓存空间)实现,可以减少存储资源的消耗。
在一些实施例中,重排序缓冲器可以设置在主模块与总线之间。
在一些实施例中,重排序缓冲器可以设置在总线上。
基于相同的发明构思,本公开实施例还提供一种电子装置,该电子装置包括上述任一实施例中的总线***。
在一些使用场景下,该电子装置的产品形式体现为显卡;在另一些使用场景下,该电子装置的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
基于相同的发明构思,本公开实施例还提供一种总线***的数据传输方法,如图3所示,包括:
步骤S110:接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识;
步骤S120:将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块;其中,该事务请求的第二标识不同于第一缓存模块中记录的其它映射关系中的第二标识;
步骤S130:接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;其中,事务响应与其针对的事务请求具有相同的第二标识;
步骤S140:根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块。
在一些实施例中,上述总线***的数据传输方法中,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
将具有第二标识的事务请求通过总线转发至从模块,并确认第一缓存模块中当前记录的映射关系中与该事务请求对应同一第一标识的映射关系的数量,将该数量加上一预设阈值,作为该事务请求的第三标识;
将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回主模块,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识;
将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处;
根据第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块。
在一些实施例中,上述总线***的数据传输方法中,还包括:
每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第二标识的映射关系清除。
在一些实施例中,上述总线***的数据传输方法中,根据第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块,包括:
每当将一事务响应返回主模块后,将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1;
监测第一缓存模块中记录的各个映射关系中的第三标识的值,在第一缓存模块中记录的一映射关系中的第三标识的值为预设阈值时,以该映射关系中的第二标识为读指针,从第二缓存模块中读出对应位置处缓存的事务响应返回主模块。
在一些实施例中,上述总线***的数据传输方法中,还包括:
每当将一事务响应返回主模块后,在将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之前,将第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值为预设阈值的映射关系清除;或,
每当将一事务响应返回主模块后,在将第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之后,将第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值小于预设阈值的映射关系清除。
在一些实施例中,上述总线***的数据传输方法中,将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,包括:
判断该事务响应的第二标识对应的第三标识的值是否大于预设阈值,若是,则将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,否则,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的该事务响应直接返回主模块。
在一些实施例中,上述总线***的数据传输方法中,将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块,包括:
以该事务请求的第二标识为写指针,将该事务请求的第一标识、第二标识和第三标识的映射关系写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识、第二标识和第三标识的映射关系,以得到该事务响应的第二标识对应的第一标识和第三标识。
在一些实施例中,上述总线***的数据传输方法中,将该事务请求的第一标识、第二标识和第三标识的映射关系记录于第一缓存模块,包括:
以该事务请求的第二标识为写指针,将该事务请求的第一标识与第三标识写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识和第三标识。
在一些实施例中,上述总线***的数据传输方法中,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识与第二标识的映射关系写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识与第二标识的映射关系,以将该事务响应的第二标识替换为对应的第一标识。
在一些实施例中,上述总线***的数据传输方法中,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识写入第一缓存模块的对应位置处;
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识,根据第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,包括:
接收从模块通过总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从第一缓存模块中读取对应位置处缓存的第一标识,以将该事务响应的第二标识替换为对应的第一标识。
在一些实施例中,上述总线***的数据传输方法中,接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识,包括:
接收主模块的事务请求,读取该事务请求的第一标识,并确认第一缓存模块中是否有存储空位,若是,则将任一存储空位对应的写指针的值作为该事务请求的第二标识,并替换该事务请求的第一标识。
在一些实施例中,上述总线***的数据传输方法中,第一缓存模块包括多个寄存器,第二标识为寄存器的标识;
接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
接收主模块的事务请求,读取该事务请求的第一标识,并确认第一缓存模块中是否有空寄存器,若是,则将任一空寄存器的标识作为该事务请求的第二标识,并替换该事务请求的第一标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系,缓存至该事务请求的第二标识对应的寄存器中,或,将该事务请求的第一标识,缓存至该事务请求的第二标识对应的寄存器中。
上述总线***的数据传输方法的具体实施过程可参见上述任一实施例的重排序缓冲器,此处不再赘述。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (20)

1.一种重排序缓冲器,应用于总线***,包括:排序模块和第一缓存模块;
所述排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于所述第一缓存模块;其中,该事务请求的第二标识不同于所述第一缓存模块中记录的其它映射关系中的第二标识;
接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识;其中,所述事务响应与其针对的所述事务请求具有相同的第二标识;
根据所述第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回所述主模块。
2.根据权利要求1所述的重排序缓冲器,还包括第二缓存模块;
所述排序模块,具体被配置为:
将具有第二标识的事务请求通过总线转发至从模块,并确认所述第一缓存模块中当前记录的映射关系中与该事务请求对应同一第一标识的映射关系的数量,将该数量加上一预设阈值,作为该事务请求的第三标识;
将该事务请求的第一标识、第二标识和第三标识的映射关系记录于所述第一缓存模块;
接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识,根据所述第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识;
将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入所述第二缓存模块的对应位置处;
根据所述第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为所述预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从所述第二缓存模块中读出对应位置处缓存的事务响应返回所述主模块。
3.根据权利要求2所述的重排序缓冲器,所述排序模块,还被配置为:
每当将一事务响应返回所述主模块后,将所述第一缓存模块中记录的与该事务响应对应同一第二标识的映射关系清除。
4.根据权利要求2所述的重排序缓冲器,所述排序模块,被配置为根据所述第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为所述预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从所述第二缓存模块中读出对应位置处缓存的事务响应返回所述主模块,包括:
所述排序模块,被配置为每当将一事务响应返回所述主模块后,将所述第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1;
监测所述第一缓存模块中记录的各个映射关系中的第三标识的值,在所述第一缓存模块中记录的一映射关系中的第三标识的值为所述预设阈值时,以该映射关系中的第二标识为读指针,从所述第二缓存模块中读出对应位置处缓存的事务响应返回所述主模块。
5.根据权利要求4所述的重排序缓冲器,所述排序模块,还被配置为:
每当将一事务响应返回所述主模块后,在将所述第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之前,将所述第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值为所述预设阈值的映射关系清除;或,
每当将一事务响应返回所述主模块后,在将所述第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1之后,将所述第一缓存模块中记录的与该事务响应对应同一第一标识且第三标识的值小于所述预设阈值的映射关系清除。
6.根据权利要求2所述的重排序缓冲器,所述排序模块,被配置为将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入所述第二缓存模块的对应位置处,包括:
所述排序模块,被配置为判断该事务响应的第二标识对应的第三标识的值是否大于所述预设阈值,若是,则将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入所述第二缓存模块的对应位置处,否则,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的该事务响应直接返回所述主模块。
7.根据权利要求6所述的重排序缓冲器,还包括:
多路选择模块,被配置为接收所述排序模块输出的事务响应和所述第二缓存模块输出的事务响应,并从中选择其一返回所述主模块。
8.根据权利要求2所述的重排序缓冲器,所述排序模块,被配置为将该事务请求的第一标识、第二标识和第三标识的映射关系记录于所述第一缓存模块,包括:
所述排序模块,被配置为以该事务请求的第二标识为写指针,将该事务请求的第一标识、第二标识和第三标识的映射关系写入所述第一缓存模块的对应位置处;
所述排序模块,被配置为接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识,根据所述第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
所述排序模块,被配置为接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从所述第一缓存模块中读取对应位置处缓存的第一标识、第二标识和第三标识的映射关系,以得到该事务响应的第二标识对应的第一标识和第三标识。
9.根据权利要求2所述的重排序缓冲器,所述排序模块,被配置为将该事务请求的第一标识、第二标识和第三标识的映射关系记录于所述第一缓存模块,包括:
所述排序模块,被配置为以该事务请求的第二标识为写指针,将该事务请求的第一标识与第三标识写入所述第一缓存模块的对应位置处;
所述排序模块,被配置为接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识,根据所述第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识,包括:
所述排序模块,被配置为接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从所述第一缓存模块中读取对应位置处缓存的第一标识和第三标识。
10.根据权利要求1所述的重排序缓冲器,所述排序模块,具体被配置为:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识与第二标识的映射关系写入所述第一缓存模块的对应位置处;
接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从所述第一缓存模块中读取对应位置处缓存的第一标识与第二标识的映射关系,以将该事务响应的第二标识替换为对应的第一标识。
11.根据权利要求1所述的重排序缓冲器,所述排序模块,具体被配置为:
将具有第二标识的事务请求通过总线转发至从模块,并以该事务请求的第二标识为写指针,将该事务请求的第一标识写入所述第一缓存模块的对应位置处;
接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识;
以该事务响应的第二标识为读指针,从所述第一缓存模块中读取对应位置处缓存的第一标识,以将该事务响应的第二标识替换为对应的第一标识。
12.根据权利要求8至11中任一项所述的重排序缓冲器,所述排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识,包括:
所述排序模块,被配置为接收主模块的事务请求,读取该事务请求的第一标识,并确认所述第一缓存模块中是否有存储空位,若是,则将任一存储空位对应的写指针的值作为该事务请求的第二标识,并替换该事务请求的第一标识。
13.根据权利要求1所述的重排序缓冲器,所述第一缓存模块包括多个寄存器,所述第二标识为所述寄存器的标识;
所述排序模块,具体被配置为:
接收主模块的事务请求,读取该事务请求的第一标识,并确认所述第一缓存模块中是否有空寄存器,若是,则将任一空寄存器的标识作为该事务请求的第二标识,并替换该事务请求的第一标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系,缓存至该事务请求的第二标识对应的寄存器中,或,将该事务请求的第一标识,缓存至该事务请求的第二标识对应的寄存器中。
14.一种总线***,包括总线、主模块、从模块和权利要求1至13中任一项所述的重排序缓冲器。
15.一种电子装置,包括权利要求14所述的总线***。
16.一种电子设备,包括权利要求15所述的电子装置。
17.一种总线***的数据传输方法,包括:
接收主模块的事务请求,读取该事务请求的第一标识并将其替换为对应的第二标识;
将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块;其中,该事务请求的第二标识不同于所述第一缓存模块中记录的其它映射关系中的第二标识;
接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识;其中,所述事务响应与其针对的所述事务请求具有相同的第二标识;
根据所述第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回所述主模块。
18.根据权利要求17所述的方法,将具有第二标识的事务请求通过总线转发至从模块,并将该事务请求的第一标识与第二标识的映射关系记录于第一缓存模块,包括:
将具有第二标识的事务请求通过总线转发至从模块,并确认所述第一缓存模块中当前记录的映射关系中与该事务请求对应同一第一标识的映射关系的数量,将该数量加上一预设阈值,作为该事务请求的第三标识;
将该事务请求的第一标识、第二标识和第三标识的映射关系记录于所述第一缓存模块;
接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识,根据所述第一缓存模块中记录的映射关系,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的事务响应返回所述主模块,包括:
接收所述从模块通过所述总线反馈的事务响应,并读取该事务响应的第二标识,根据所述第一缓存模块中记录的映射关系,确认该事务响应的第二标识对应的第一标识和第三标识;
将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处;
根据所述第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为所述预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从所述第二缓存模块中读出对应位置处缓存的事务响应返回所述主模块。
19.根据权利要求18所述的方法,根据所述第一缓存模块中记录的对应相同第一标识的各个映射关系中的第三标识和第二标识,从值为所述预设阈值的第三标识开始按照第三标识从小到大的顺序,依次以对应的第二标识为读指针,从所述第二缓存模块中读出对应位置处缓存的事务响应返回所述主模块,包括:
每当将一事务响应返回所述主模块后,将所述第一缓存模块中记录的与该事务响应对应同一第一标识的映射关系中的第三标识的值减1;
监测所述第一缓存模块中记录的各个映射关系中的第三标识的值,在所述第一缓存模块中记录的一映射关系中的第三标识的值为所述预设阈值时,以该映射关系中的第二标识为读指针,从所述第二缓存模块中读出对应位置处缓存的事务响应返回所述主模块。
20.根据权利要求18所述的方法,将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,包括:
判断该事务响应的第二标识对应的第三标识的值是否大于所述预设阈值,若是,则将该事务响应的第二标识替换为对应的第一标识,并以该事务响应对应的第二标识为写指针,将具有第一标识的该事务响应写入第二缓存模块的对应位置处,否则,将该事务响应的第二标识替换为对应的第一标识,并将具有第一标识的该事务响应直接返回所述主模块。
CN202310546003.4A 2023-05-16 2023-05-16 重排序缓冲器、***、装置、设备及传输方法 Active CN116257479B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310546003.4A CN116257479B (zh) 2023-05-16 2023-05-16 重排序缓冲器、***、装置、设备及传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310546003.4A CN116257479B (zh) 2023-05-16 2023-05-16 重排序缓冲器、***、装置、设备及传输方法

Publications (2)

Publication Number Publication Date
CN116257479A true CN116257479A (zh) 2023-06-13
CN116257479B CN116257479B (zh) 2023-08-15

Family

ID=86682939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310546003.4A Active CN116257479B (zh) 2023-05-16 2023-05-16 重排序缓冲器、***、装置、设备及传输方法

Country Status (1)

Country Link
CN (1) CN116257479B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118034638A (zh) * 2024-04-12 2024-05-14 北京象帝先计算技术有限公司 重排序缓冲器、***、组件、设备及传输方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150161065A1 (en) * 2013-12-09 2015-06-11 Atmel Corporation System bus transaction queue reallocation
CN105653481A (zh) * 2014-11-14 2016-06-08 华为技术有限公司 基于PCIe总线的数据传输方法和装置
CN108205510A (zh) * 2016-12-20 2018-06-26 Arm 有限公司 数据处理
WO2022114272A1 (ko) * 2020-11-25 2022-06-02 오픈엣지테크놀로지 주식회사 적응형 트랜잭션 처리 방법 및 이를 위한 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150161065A1 (en) * 2013-12-09 2015-06-11 Atmel Corporation System bus transaction queue reallocation
CN105653481A (zh) * 2014-11-14 2016-06-08 华为技术有限公司 基于PCIe总线的数据传输方法和装置
CN108205510A (zh) * 2016-12-20 2018-06-26 Arm 有限公司 数据处理
WO2022114272A1 (ko) * 2020-11-25 2022-06-02 오픈엣지테크놀로지 주식회사 적응형 트랜잭션 처리 방법 및 이를 위한 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118034638A (zh) * 2024-04-12 2024-05-14 北京象帝先计算技术有限公司 重排序缓冲器、***、组件、设备及传输方法

Also Published As

Publication number Publication date
CN116257479B (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
US6820143B2 (en) On-chip data transfer in multi-processor system
CN105900076B (zh) 用于处理多个交易的数据处理***及方法
CN102460405B (zh) 用于通过存储器装置来控制主机存储器存取的方法及***
US5594882A (en) PCI split transactions utilizing dual address cycle
US7069373B2 (en) USB endpoint controller flexible memory management
US6330630B1 (en) Computer system having improved data transfer across a bus bridge
US8244950B2 (en) Buffering non-posted read commands and responses
US6170030B1 (en) Method and apparatus for restreaming data that has been queued in a bus bridging device
JP2005258918A (ja) ストレージシステムおよびストレージシステムのキャッシュメモリ制御方法
US7016994B2 (en) Retry mechanism for blocking interfaces
WO2006038717B1 (en) External data interface in a computer architecture for broadband networks
US8332548B2 (en) Monitoring device, semiconductor integrated circuit, and monitoring method
CN116257479B (zh) 重排序缓冲器、***、装置、设备及传输方法
US5293487A (en) Network adapter with high throughput data transfer circuit to optimize network data transfers, with host receive ring resource monitoring and reporting
CN115481048A (zh) 一种内存***及芯片
CN117707994B (zh) 请求缓冲器、***、组件、设备及传输方法
US7409486B2 (en) Storage system, and storage control method
US6195722B1 (en) Method and apparatus for deferring transactions on a host bus having a third party agent
US6513090B1 (en) Bidirectional data transfer during buffer flushing operations
US6301627B1 (en) Method/system for identifying delayed predetermined information transfer request as bypassable by subsequently-generated information transfer request using bypass enable bit in bridge translation control entry
US6898684B2 (en) Control chip with multiple-layer defer queue
US6026032A (en) High speed data buffer using a virtual first-in-first-out register
US8239652B2 (en) Data processing system
USRE38514E1 (en) System for and method of efficiently controlling memory accesses in a multiprocessor computer system
KR100950356B1 (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛

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