CN116521095B - 响应输出系统、方法、电子设备、存储介质及程序产品 - Google Patents

响应输出系统、方法、电子设备、存储介质及程序产品 Download PDF

Info

Publication number
CN116521095B
CN116521095B CN202310806646.8A CN202310806646A CN116521095B CN 116521095 B CN116521095 B CN 116521095B CN 202310806646 A CN202310806646 A CN 202310806646A CN 116521095 B CN116521095 B CN 116521095B
Authority
CN
China
Prior art keywords
request
response
mth
memory
storage unit
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
Application number
CN202310806646.8A
Other languages
English (en)
Other versions
CN116521095A (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.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads 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 Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202310806646.8A priority Critical patent/CN116521095B/zh
Publication of CN116521095A publication Critical patent/CN116521095A/zh
Application granted granted Critical
Publication of CN116521095B publication Critical patent/CN116521095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开涉及数据处理领域,提出一种响应输出系统、方法、电子设备、存储介质及程序产品,所述系统包括第一存储器、请求管理模块、缓存模块、第二存储器,第一存储器输出第一请求到地址并输出第二编号到请求管理模块,请求管理模块根据第二编号得到第二请求并输出;缓存模块接收并存储来自目标模块的第一响应,响应于第二请求输出第一响应到第二存储器,第二存储器接收并存储来自缓存模块的第一响应,以先入先出方式将第一响应输出到发起第一请求的对象处。根据本公开实施例的响应输出系统,能够在顺序接收到来自系统外部的请求时,也顺序输出对应的响应到系统外部,从而使得后续的数据处理流程简化,提高后续的数据处理效率。

Description

响应输出系统、方法、电子设备、存储介质及程序产品
技术领域
本公开涉及数据处理领域,尤其涉及一种响应输出系统、方法、电子设备、存储介质及程序产品。
背景技术
数据处理领域中,涉及到数据以及指令的传输的场景有很多。例如,用户在用户设备侧操作应用或程序时,可能需要获取存储在数据源上的数据。对此,用户设备侧可以产生多个数据读请求,这些数据读请求可能是读取数据源上的数据的请求。数据读请求发送给可与数据源进行数据交换的电子设备/装置/系统,电子设备/装置/系统以一定的顺序将数据读请求输出给数据源,数据源对于接收到的数据读请求给出相应的数据读响应,但数据读响应返回到电子设备/装置/系统时的顺序可能与数据源接收数据读请求的顺序不一致。
现有技术中,电子设备/装置/系统只能按照接收到数据读响应的顺序将数据读响应输出给用户设备。也就是说,对于电子设备/装置/系统顺序接收的数据读请求,可能会以乱序输出对应的数据读响应。这对用户设备来说可能会加大数据处理难度,降低数据处理效率。
发明内容
有鉴于此,本公开提出了一种响应输出系统、方法、电子设备、存储介质及程序产品,根据本公开实施例的响应输出系统,能够在顺序接收到来自系统外部的请求时,也顺序输出对应的响应到系统外部,从而使得后续的数据处理流程简化,提高后续的数据处理效率。
根据本公开的另一方面,提供了一种响应输出系统,所述系统包括第一存储器、请求管理模块、缓存模块、第二存储器,所述第一存储器用于,根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,所述第一编号是目标模块上的通道的编号,所述地址是所述目标模块上、所述第一编号指示的通道的地址,所述第二编号与所述第一编号对应;所述请求管理模块用于,根据接收到的第二编号得到第二请求,该第二请求包括所述第二编号,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;所述缓存模块用于,接收并存储来自所述目标模块的第一响应,在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器;所述第二存储器用于,接收并存储来自所述缓存模块的第一响应,以先入先出方式将所述第一响应输出到发起所述第一请求的对象处;其中,所述第一请求是所述第一存储器接收的第i个第一请求,所述第二编号是所述第一存储器输出的第i个第二编号,所述第二请求是所述请求管理模块输出的第i个第二请求,所述第一响应是所述第二存储器输出的第i个第一响应,i是正整数。
在一种可能的实现方式中,所述目标模块包括M个通道,所述第一存储器包括M个请求存储单元、M个计数单元和轮询仲裁单元,第m个请求存储单元对应于第m个计数单元和第m个通道,m≤M,m和M是正整数,所述第m个请求存储单元用于,接收并存储包括所述第m个通道的编号的第一请求,根据该第一请求所包括的编号,输出所述第二编号到所述请求管理模块,从所述第m个计数单元处获取计数结果;所述第m个计数单元用于,记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,在所述第m个请求存储单元获取所述计数结果时,发送所述计数结果到所述第m个请求存储单元;所述第m个请求存储单元还用于,在获取到的计数结果小于第一阈值时,输出所述第m个通道的编号到所述轮询仲裁单元;所述轮询仲裁单元用于,在接收到所述第m个通道的编号时检测所述第m个请求存储单元的优先级,根据所述优先级确定所述第m个请求存储单元存储的第一请求的输出顺序,控制所述M个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
在一种可能的实现方式中,所述记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,包括:检测到所述目标模块接收一次包括所述第m个通道的编号的第一请求,所述第m个计数单元的计数结果加一;检测到所述缓存模块输出一次来自所述第m个通道的第一响应,所述第m个计数单元的计数结果减一。
在一种可能的实现方式中,所述请求管理模块包括第三存储器和第一标识存储单元,所述第一标识存储单元存储M个第一标识,第m个第一标识对应所述第m个通道,所述第二编号与所述第一编号相同,所述第二编号由所述第三存储器接收,所述第二请求还包括与第二编号对应的第一标识,所述第一标识指示从所述缓存模块中输出所述第一响应的位置;所述第三存储器用于,根据所述第二编号从所述第一标识存储单元处获取与该第二编号对应的第一标识,并将所述第二编号以及所述第一标识作为所述第二请求存储,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;所述第一标识存储单元用于,在所述第三存储器获取所述第一标识时,发送所述第一标识到所述第三存储器。
在一种可能的实现方式中,所述缓存模块包括M组寄存器和第二标识存储单元,所述第二标识存储单元存储M个第二标识,所述第二标识指示所述第一响应存入所述缓存模块中的位置,第m个第二标识对应第m组寄存器以及所述第m个通道;每组寄存器包括两个寄存器,每个寄存器对应一个第三标识,所述第三标识具备无效和有效两种状态;所述第m组寄存器用于,接收来自所述目标模块的第m个通道的第一响应,并从所述第二标识存储单元处获取所述第m个第二标识,根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,将存入所述第一响应的寄存器的第三标识变更为有效状态;所述第二标识存储单元用于,在所述第m组寄存器获取所述第m个第二标识时,发送所述第m个第二标识到所述第m组寄存器。
在一种可能的实现方式中,所述第二标识具备第一状态和第二状态,所述根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,包括:在所述第m个第二标识为第一状态时,将所述第一响应存储在所述第m组寄存器中的第一个寄存器;在所述第m个第二标识为第二状态时,将所述第一响应存储在所述第m组寄存器中的第二个寄存器;所述第二标识存储单元还用于,在发送所述第m个第二标识到所述第m组寄存器后,变更该第m个第二标识的状态。
在一种可能的实现方式中,所述第一标识具备第三状态和第四状态,所述预设条件为所述第二请求包括第m个通道的编号时,存储的第一响应也包括第m个通道的编号,在满足所述预设条件且所述第二请求包括第m个第一标识时,所述第m组寄存器还用于,在所述第二请求包括的第一标识为第三状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第一个寄存器;在所述第二请求包括的第一标识为第四状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第二个寄存器;在该寄存器的第三标识为有效状态时,输出该寄存器存储的所述第一响应;将该寄存器的第三标识变更为无效状态;所述第一标识存储单元还用于,在发送第一标识到所述第三存储器后,变更该第一标识的状态。
在一种可能的实现方式中,所述目标模块包括M个通道,所述第一存储器包括N个请求存储单元、N个计数单元和轮询仲裁单元,第n个请求存储单元对应于第n个计数单元以及所述M个通道中的K个通道,N<M,n≤N,K=M/N,N、n、K是正整数,M个通道中的每个通道对应于一个请求存储单元,不同的请求存储单元对应的通道不同;所述第n个请求存储单元用于,接收并存储包括该第n个请求存储单元对应的K个通道的编号的第一请求,根据接收的第一请求所包括的编号和地址,输出第二编号到所述请求管理模块,所述第二编号是所述第n个请求存储单元的编号;所述第n个计数单元用于,记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,在所述第n个请求存储单元获取计数结果时,发送所述计数结果到所述第n个请求存储单元,与所述第n个请求存储单元对应的区域用于存储来自所述第n个请求存储单元对应的K个通道的第一响应;所述第n个请求存储单元还用于,从所述第n个计数单元处获取所述计数结果,在获取到的计数结果小于第二阈值时,输出所述第n个请求存储单元的编号到所述轮询仲裁单元;所述轮询仲裁单元用于,在接收到所述第n个请求存储单元的编号时检测所述第n个请求存储单元的优先级,根据所述优先级确定所述第n个请求存储单元存储的第一请求的输出顺序,控制所述N个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
在一种可能的实现方式中,所述记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,包括:检测到所述目标模块接收一次包括所述第n个请求存储单元对应的任意通道的编号的第一请求,所述第n个计数单元的计数结果加一;检测到所述缓存模块输出一次来自所述第n个请求存储单元对应的任意通道的第一响应,所述第n个计数单元的计数结果减一。
在一种可能的实现方式中,所述缓存模块包括N个区域,第n个区域与所述第n个请求存储单元对应,每个区域包括读写控制器以及缓存队列,每个区域的缓存队列包括多个条目,每个条目对应一个第四标识,所述第四标识具备无效和有效两种状态;在所述第n个请求存储单元对应的K个通道包括第m个通道时,所述第n个请求存储单元还用于,接收包括所述第m个通道的编号的第一请求,输出写指针申请到与所述第n个请求存储单元对应的所述第n个区域,该写指针申请包括所述第m个通道的编号,该写指针申请在所述第一存储器前次输出的写指针申请被所述缓存模块响应后输出;m≤M,m和M是正整数;在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的读写控制器用于,响应于来自所述第n个请求存储单元的写指针申请,将所述缓存队列中优先级最高的未分配条目的地址分配给所述第m个通道;在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的缓存队列用于,接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,将存入所述第一响应的条目的第四标识变更为有效状态。
在一种可能的实现方式中,第n个区域的读写控制器包括写指针计数单元和K个写指针存储单元,第k个写指针存储单元与所述第n个区域对应的第k个通道对应,k≤K,k是正整数,所述第n个区域的写指针计数单元用于:响应于来自所述第n个请求存储单元的写指针申请,将当前记录的计数结果存储至所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元,在所述当前记录的计数结果的计数结果小于第三阈值时,该写指针计数单元的计数结果加一,在所述当前记录的计数结果等于所述第三阈值时,该写指针计数单元的计数结果清零;所述第n个区域的缓存队列中与所述当前记录的计数结果对应的条目的地址,作为分配给所述第m个通道的条目的地址。
在一种可能的实现方式中,所述接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,包括:接收所述第m个通道输出的所述第一响应,并从所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元处获取其存储的计数结果;将所述第一响应存储至获取的计数结果对应的条目。
在一种可能的实现方式中,所述第n个区域的读写控制器还包括读指针计数单元,所述读指针计数单元的计数结果指示所述第n个区域的缓存队列中优先级最高的已分配条目,所述预设条件为所述第二请求包括的第二编号是第n个区域的编号、且存储的第一响应包括的编号是第n个区域的缓存队列中优先级最高的已分配条目对应的通道的编号,在满足所述预设条件时,所述第n个区域的缓存队列还用于,在所述第二请求包括的第二编号是所述第n个区域的编号时,输出读指针申请到所述第n个区域的读指针计数单元;所述读指针计数单元用于,响应于所述读指针申请,将所述读指针计数单元当前记录的计数结果输出至所述第n个区域的缓存队列,输出的计数结果小于第四阈值时,该读指针计数单元的计数结果加一,输出的计数结果等于所述第四阈值时,该读指针计数单元的计数结果清零;所述第n个区域的缓存队列还用于,在接收的计数结果对应的条目的第四标识为有效状态时,输出该条目存储的第一响应,将该条目的第四标识变更为无效状态。
在一种可能的实现方式中,所述系统还包括第一计数器,所述第一计数器用于记录所述第二存储器的已用存储空间,检测到所述目标模块接收一次第一请求,所述第一计数器的计数结果加一;检测到所述第二存储器输出一次第一响应,所述第一计数器的计数结果减一;在自身的计数结果达到第五阈值时,所述第一计数器输出第一反馈信号到所述第一存储器,所述第一反馈信号指示所述第一存储器暂停所述第一请求的输出。
根据本公开的另一方面,提供了一种响应输出方法,所述方法应用于响应输出系统,所述系统包括第一存储器、请求管理模块、缓存模块、第二存储器,所述方法包括:所述第一存储器根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,所述第一编号是目标模块上的通道的编号,所述地址是所述目标模块上、所述第一编号指示的通道的地址,所述第二编号与所述第一编号对应;所述请求管理模块根据接收到的第二编号得到第二请求,该第二请求包括所述第二编号,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;所述缓存模块接收并存储来自所述目标模块的第一响应,在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器;所述第二存储器接收并存储来自所述缓存模块的第一响应,以先入先出方式将所述第一响应输出到发起所述第一请求的对象处;其中,所述第一请求是所述第一存储器接收的第i个第一请求,所述第二编号是所述第一存储器输出的第i个第二编号,所述第二请求是所述请求管理模块输出的第i个第二请求,所述第一响应是所述第二存储器输出的第i个第一响应,i是正整数。
在一种可能的实现方式中,所述目标模块包括M个通道,所述第一存储器包括M个请求存储单元、M个计数单元和轮询仲裁单元,第m个请求存储单元对应于第m个计数单元和第m个通道,m≤M,m和M是正整数,所述第一存储器根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,包括:所述第m个请求存储单元接收并存储包括所述第m个通道的编号的第一请求,根据该第一请求所包括的编号,输出所述第二编号到所述请求管理模块,从所述第m个计数单元处获取计数结果;所述第m个计数单元记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,在所述第m个请求存储单元获取所述计数结果时,发送所述计数结果到所述第m个请求存储单元;所述第m个请求存储单元在获取到的计数结果小于第一阈值时,输出所述第m个通道的编号到所述轮询仲裁单元;所述轮询仲裁单元在接收到所述第m个通道的编号时检测所述第m个请求存储单元的优先级,根据所述优先级确定所述第m个请求存储单元存储的第一请求的输出顺序,控制所述M个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
在一种可能的实现方式中,所述记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,包括:检测到所述目标模块接收一次包括所述第m个通道的编号的第一请求,所述第m个计数单元的计数结果加一;检测到所述缓存模块输出一次来自所述第m个通道的第一响应,所述第m个计数单元的计数结果减一。
在一种可能的实现方式中,所述请求管理模块包括第三存储器和第一标识存储单元,所述第一标识存储单元存储M个第一标识,第m个第一标识对应所述第m个通道,所述第二编号与所述第一编号相同,所述第二编号由所述第三存储器接收,所述第二请求还包括与第二编号对应的第一标识,所述第一标识指示从所述缓存模块中输出所述第一响应的位置;所述请求管理模块根据接收到的第二编号得到第二请求,该第二请求包括所述第二编号,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出,包括:所述第三存储器根据所述第二编号从所述第一标识存储单元处获取与该第二编号对应的第一标识,并将所述第二编号以及所述第一标识作为所述第二请求存储,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;所述第一标识存储单元在所述第三存储器获取所述第一标识时,发送所述第一标识到所述第三存储器。
在一种可能的实现方式中,所述缓存模块包括M组寄存器和第二标识存储单元,所述第二标识存储单元存储M个第二标识,所述第二标识指示所述第一响应存入所述缓存模块中的位置,第m个第二标识对应第m组寄存器以及所述第m个通道;每组寄存器包括两个寄存器,每个寄存器对应一个第三标识,所述第三标识具备无效和有效两种状态;所述缓存模块接收并存储来自所述目标模块的第一响应,包括:所述第m组寄存器接收来自所述目标模块的第m个通道的第一响应,并从所述第二标识存储单元处获取所述第m个第二标识,根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,将存入所述第一响应的寄存器的第三标识变更为有效状态;所述第二标识存储单元在所述第m组寄存器获取所述第m个第二标识时,发送所述第m个第二标识到所述第m组寄存器。
在一种可能的实现方式中,所述第二标识具备第一状态和第二状态,所述根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,包括:在所述第m个第二标识为第一状态时,将所述第一响应存储在所述第m组寄存器中的第一个寄存器;在所述第m个第二标识为第二状态时,将所述第一响应存储在所述第m组寄存器中的第二个寄存器;所述第二标识存储单元在发送所述第m个第二标识到所述第m组寄存器后,变更该第m个第二标识的状态。
在一种可能的实现方式中,所述第一标识具备第三状态和第四状态,所述预设条件为所述第二请求包括第m个通道的编号时,存储的第一响应也包括第m个通道的编号,所述在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器,包括:在满足所述预设条件且所述第二请求包括第m个第一标识时,所述第m组寄存器在所述第二请求包括的第一标识为第三状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第一个寄存器;在所述第二请求包括的第一标识为第四状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第二个寄存器;在该寄存器的第三标识为有效状态时,输出该寄存器存储的所述第一响应;将该寄存器的第三标识变更为无效状态;所述第一标识存储单元在发送第一标识到所述第三存储器后,变更该第一标识的状态。
在一种可能的实现方式中,所述目标模块包括M个通道,所述第一存储器包括N个请求存储单元、N个计数单元和轮询仲裁单元,第n个请求存储单元对应于第n个计数单元以及所述M个通道中的K个通道,N<M,n≤N,K=M/N,N、n、K是正整数,M个通道中的每个通道对应于一个请求存储单元,不同的请求存储单元对应的通道不同;所述第一存储器根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,包括:所述第n个请求存储单元接收并存储包括该第n个请求存储单元对应的K个通道的编号的第一请求,根据接收的第一请求所包括的编号和地址,输出第二编号到所述请求管理模块,所述第二编号是所述第n个请求存储单元的编号;所述第n个计数单元记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,在所述第n个请求存储单元获取计数结果时,发送所述计数结果到所述第n个请求存储单元,与所述第n个请求存储单元对应的区域用于存储来自所述第n个请求存储单元对应的K个通道的第一响应;所述第n个请求存储单元从所述第n个计数单元处获取所述计数结果,在获取到的计数结果小于第二阈值时,输出所述第n个请求存储单元的编号到所述轮询仲裁单元;所述轮询仲裁单元在接收到所述第n个请求存储单元的编号时检测所述第n个请求存储单元的优先级,根据所述优先级确定所述第n个请求存储单元存储的第一请求的输出顺序,控制所述N个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
在一种可能的实现方式中,所述记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,包括:检测到所述目标模块接收一次包括所述第n个请求存储单元对应的任意通道的编号的第一请求,所述第n个计数单元的计数结果加一;检测到所述缓存模块输出一次来自所述第n个请求存储单元对应的任意通道的第一响应,所述第n个计数单元的计数结果减一。
在一种可能的实现方式中,所述缓存模块包括N个区域,第n个区域与所述第n个请求存储单元对应,每个区域包括读写控制器以及缓存队列,每个区域的缓存队列包括多个条目,每个条目对应一个第四标识,所述第四标识具备无效和有效两种状态;所述方法还包括:在所述第n个请求存储单元对应的K个通道包括第m个通道时,所述第n个请求存储单元接收包括所述第m个通道的编号的第一请求,输出写指针申请到与所述第n个请求存储单元对应的所述第n个区域,该写指针申请包括所述第m个通道的编号,该写指针申请在所述第一存储器前次输出的写指针申请被所述缓存模块响应后输出;m≤M,m和M是正整数;在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的读写控制器响应于来自所述第n个请求存储单元的写指针申请,将所述缓存队列中优先级最高的未分配条目的地址分配给所述第m个通道;所述缓存模块接收并存储来自所述目标模块的第一响应,包括:在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的缓存队列接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,将存入所述第一响应的条目的第四标识变更为有效状态。
在一种可能的实现方式中,第n个区域的读写控制器包括写指针计数单元和K个写指针存储单元,第k个写指针存储单元与所述第n个区域对应的第k个通道对应,k≤K,k是正整数,所述第n个区域的读写控制器响应于来自所述第n个请求存储单元的写指针申请,将所述缓存队列中优先级最高的未分配条目的地址分配给所述第m个通道,包括:所述第n个区域的写指针计数单元响应于来自所述第m个请求存储单元的写指针申请,将当前记录的计数结果存储至所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元,在所述当前记录的计数结果的计数结果小于第三阈值时,该写指针计数单元的计数结果加一,在所述当前记录的计数结果等于所述第三阈值时,该写指针计数单元的计数结果清零;所述第n个区域的缓存队列中与所述当前记录的计数结果对应的条目的地址,作为分配给所述第m个通道的条目的地址。
在一种可能的实现方式中,所述接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,包括:接收所述第m个通道输出的所述第一响应,并从所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元处获取其存储的计数结果;将所述第一响应存储至获取的计数结果对应的条目。
在一种可能的实现方式中,所述第n个区域的读写控制器还包括读指针计数单元,所述读指针计数单元的计数结果指示所述第n个区域的缓存队列中优先级最高的已分配条目,所述预设条件为所述第二请求包括的第二编号是第n个区域的编号、且存储的第一响应包括的编号是第n个区域的缓存队列中优先级最高的已分配条目对应的通道的编号,所述在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器,包括:在满足所述预设条件时,所述第n个区域的缓存队列在所述第二请求包括的第二编号是所述第n个区域的编号时,输出读指针申请到所述第n个区域的读指针计数单元;所述读指针计数单元响应于所述读指针申请,将所述读指针计数单元当前记录的计数结果输出至所述第n个区域的缓存队列,输出的计数结果小于第四阈值时,该读指针计数单元的计数结果加一,输出的计数结果等于所述第四阈值时,该读指针计数单元的计数结果清零;所述第n个区域的缓存队列在接收的计数结果对应的条目的第四标识为有效状态时,输出该条目存储的第一响应,将该条目的第四标识变更为无效状态。
在一种可能的实现方式中,所述系统还包括第一计数器,所述第一计数器用于记录所述第二存储器的已用存储空间,所述方法还包括:检测到所述目标模块接收一次第一请求,所述第一计数器的计数结果加一;检测到所述第二存储器输出一次第一响应,所述第一计数器的计数结果减一;在自身的计数结果达到第五阈值时,所述第一计数器输出第一反馈信号到所述第一存储器,所述第一反馈信号指示所述第一存储器暂停所述第一请求的输出。
根据本公开的另一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据本公开实施例的响应输出系统,第一存储器根据接收的第一请求所包括的第一编号和地址,输出第一请求到地址,由于地址是目标模块上、第一编号指示的通道的地址,从而实现第一请求从响应输出系统到目标模块的传输;第一存储器发送第二编号到请求管理模块,由于第二编号对应于第一请求包括的第一编号,请求管理模块根据接收到的第二编号得到第二请求,因此请求管理模块通过第二请求实现记录第一请求进入响应输出系统的顺序。该第二请求在请求管理模块前次发出的第二请求被缓存模块响应后发出,第一请求是第一存储器接收的第i个第一请求时,第二编号是第一存储器输出的第i个第二编号,第二请求是请求管理模块输出的第i个第二请求,因此发出第二请求的顺序与第一请求进入响应输出系统的顺序相同。缓存模块接收并存储来自目标模块的第一响应,在请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出第一响应到第二存储器,从而可以将第一请求对应的第一响应发送至第二存储器;第二存储器接收并存储来自缓存模块的第一响应,并以先入先出方式将第一响应输出到发起第一请求的对象处,使得响应输出系统最终完成对第一请求的响应。由于第二存储器是以先入先出方式接收并输出第一响应,第一请求是第一存储器接收的第i个第一请求时,第一响应是第二存储器输出的第i个第一响应,因此,从第二存储器输出的第一响应的顺序与从缓存模块输出的第一响应的顺序相同,并且与系统接收的第一请求的顺序也一致。因此,根据本公开实施例的响应输出系统,能够在顺序接收到来自系统外部的请求时,也顺序输出对应的响应到系统外部,从而使得后续的数据处理流程简化,提高后续的数据处理效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的响应输出系统的示例性应用场景。
图2a示出根据本公开实施例的响应输出系统的示例性架构图。
图2b示出根据本公开实施例的响应输出系统从接收到第一请求到输出第一响应的工作流程的示意图。
图2c示出根据本公开实施例的响应输出系统从接收到多个第一请求到输出多个对应的第一响应的工作流程的示意图。
图3a示出根据本公开实施例的第一存储器的结构的示意图。
图3b示出根据本公开实施例的请求管理模块的结构的示意图。
图4a示出根据本公开实施例的缓存模块的工作方式的示意图。
图4b示出根据本公开实施例的缓存模块的工作方式的示意图。
图5示出根据本公开实施例的响应输出系统的示例性架构图。
图6示出根据本公开实施例的第一存储器的结构的示意图。
图7示出根据本公开实施例的缓存模块的结构和工作方式的示意图。
图8示出本公开实施例的读写控制器的示例性结构及其实现条目地址的分配的示例性方式的示意图。
图9示出本公开实施例的读写控制器的示例性结构及工作方式的示意图。
图10示出根据本公开实施例的响应输出方法的示例性流程图。
图11示出根据本公开实施例的一种电子设备1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
下面先对本文中可能出现的术语进行解释。
先入先出(first in first out,FIFO):一种存储器的输入输出机制,代表先进入的数据先输出,后进入的数据后输出。
valid/ready握手协议:数据发送端和数据接收端通过总线连接,数据发送端可以发出握手信号valid,数据接收端可以发出握手信号ready。数据发送端将数据准备好后将握手信号valid拉高,表示已将数据保持于总线上。数据接收端准备好接收数据则将握手信号ready拉高,表示开始从总线接收数据。在握手信号valid和握手信号ready同时拉高后,开始数据传输,传输完成后握手信号valid和握手信号ready同时拉低。
数据处理领域中,涉及到数据以及指令的传输的场景有很多。例如,用户在用户设备侧操作应用或程序时,可能需要获取存储在数据源上的数据。对此,用户设备侧可以产生多个数据读请求,这些数据读请求可能是读取数据源上的数据的请求。数据读请求发送给可与数据源进行数据交换的电子设备/装置/系统,电子设备/装置/系统以一定的顺序将数据读请求输出给数据源,数据源对于接收到的数据读请求给出相应的数据读响应,但数据读响应返回到电子设备/装置/系统时的顺序可能与数据源接收数据读请求的顺序不一致。
现有技术中,电子设备/装置/系统只能按照接收到数据读响应的顺序将数据读响应输出给用户设备。也就是说,对于电子设备/装置/系统顺序接收的数据读请求,可能会以乱序输出对应的数据读响应。这对用户设备来说可能会加大数据处理难度,降低数据处理效率。
有鉴于此,本公开提出了一种响应输出系统、方法、电子设备、存储介质及程序产品,根据本公开实施例的响应输出系统,能够在顺序接收到来自系统外部的请求时,也顺序输出对应的响应到系统外部,从而使得后续的数据处理流程简化,提高后续的数据处理效率。
图1示出根据本公开实施例的响应输出系统的示例性应用场景。
如图1所示,该应用场景中可包括第一设备、第二设备和用户设备,其中第一设备和第二设备的时钟同步。第一设备上可设置有响应输出系统,第二设备上可设置有多个通道(例如通道T1-通道T3)的目标模块,例如多通道数据源。目标模块和响应输出系统可以进行数据和指令的交换。用户设备可以与响应输出系统进行数据和指令的交换。
其中,用户设备可以产生多个第一请求,这些第一请求可以与目标模块有关,可能是读取目标模块上的某一通道存储的数据的请求,或者也可能是将数据写入目标模块的某一通道的请求,除请求之外,还可以是令牌(token)或者其他指示标志等等。用户设备可以将多个第一请求以一定顺序输入响应输出系统。响应输出系统可将多个第一请求发送给目标模块,其中每一个第一请求进入目标模块中的一个通道。响应输出系统接收第一请求的顺序与发出第一请求的顺序可以相同也可以不同。目标模块对于接收到的第一请求给出相应的第一响应,第一响应返回到响应输出系统。响应输出系统接收第一响应后可以先存储在自身的缓存(例如下文所述的缓存模块)中,并在满足预设条件时输出第一响应,使得响应输出系统最终输出的第一响应是以与响应输出系统接收的第一请求相同的顺序输出到用户设备处。
本领域技术人员应理解,目标模块和响应输出系统也可以设置在同一电子设备上,只要目标模块和响应输出系统的时钟同步即可,本公开对目标模块和响应输出系统的具体设置方式不作限制。
图2a示出根据本公开实施例的响应输出系统的示例性架构图。
如图2a所示,在一种可能的实现方式中,本公开提出一种响应输出系统,所述系统包括第一存储器、请求管理模块、缓存模块、第二存储器,
所述第一存储器用于,根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,所述第一编号是目标模块上的通道的编号,所述地址是所述目标模块上、所述第一编号指示的通道的地址,所述第二编号与所述第一编号对应;
所述请求管理模块用于,根据接收到的第二编号得到第二请求,该第二请求包括所述第二编号,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;
所述缓存模块用于,接收并存储来自所述目标模块的第一响应,在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器,
所述第二存储器用于,接收并存储来自所述缓存模块的第一响应,以先入先出方式将所述第一响应输出到发起所述第一请求的对象处;
其中,所述第一请求是所述第一存储器接收的第i个第一请求时,所述第二编号是所述第一存储器输出的第i个第二编号,所述第二请求是所述请求管理模块输出的第i个第二请求,所述第一响应是所述第二存储器输出的第i个第一响应,i是正整数。
举例来说,如图2a所示,响应输出系统可包括四个模块,分别是第一存储器、请求管理模块、缓存模块和第二存储器。其中,请求管理模块可以和第一存储器、缓存模块通信,缓存模块还可以和第二存储器、第一存储器通信。每个模块都可以由软件或硬件实现,因此响应输出系统也可以是软件或者硬件的系统,本公开对此不作限制。其中,第一存储器和缓存模块可以与目标模块进行数据交换。下面分别介绍各模块的主要功能。
图2b示出根据本公开实施例的响应输出系统从接收到第一请求到输出第一响应的工作流程的示意图。
如图2b所示,第一存储器可以负责存储输入响应输出系统的每一笔第一请求,例如第一请求Q1。第一请求可包括第一编号和地址,其中第一编号可以是目标模块上的通道的编号,地址是目标模块上、第一编号指示的通道的地址。例如目标模块可包括3个通道,编号分别为T1-T3,其中通道T1对应的地址区间可以是[X1;Y1],通道T2对应的地址区间可以是[X2;Y2],通道T3对应的地址区间可以是[X3;Y3]。则第一请求Q1包括的第一编号可以是T1。
第一存储器还可根据接收的第一请求所包括的第一编号和地址,输出第一请求Q1到地址并输出第二编号Z1到请求管理模块。第二编号Z1与第一编号相对应,可以与第一编号相同或者与第一编号不同但相关联。
其中,在输出第一请求到地址时,可以用到现有技术的valid/ready握手协议。此时第一存储器作为数据发送端,目标模块作为数据接收端。举例来说,假设第一存储器接收并存储的第一请求Q1包括第一编号T1、且包括地址区间[X1;Y1]中的一段地址。则第一存储器准备好发送第一请求Q1时,可以将握手信号valid拉高,此时第一请求Q1相当于已经保持在第一存储器与目标模块的通道T1之间的总线上。目标模块的通道T1准备好接收第一请求Q1时,可以将握手信号ready拉高,此时第一请求Q1进入目标模块的通道T1,被发送至地址区间[X1;Y1]中的对应地址处。此时可以认为第一请求Q1是已经被目标模块接收的请求。第一存储器在接收第一请求的同时,可将第一编号T1对应的第二编号Z1发送到请求管理模块处。可以用到现有技术的valid/ready握手协议发送第二编号Z1,在此不再对具体发送过程进行赘述。
请求管理模块可根据接收到的第二编号得到第二请求,第二请求用于对目标模块已接收的第一请求进行记录。在此情况下,第二请求可包括请求管理模块接收的第二编号。例如接收到第二编号Z1时,请求管理模块可产生第二请求Q11,第二请求Q11包括请求管理模块接收的第二编号Z1,第二编号Z1与第一编号T1相对应。该第二请求可以在请求管理模块前次发出的第二请求被缓存模块响应后发出,请求管理模块发出第二请求到缓存模块时,也可以用到现有技术的valid/ready握手协议,也就是说,同一时刻在请求管理模块到缓存模块之间的总线上仅有一个第二请求存在。在此不再对第二请求的具体发送过程进行赘述。
目标模块接收到第一请求后,可以给出相应的第一响应,并发送到缓存模块。其中,第一请求是读取目标模块上的某一通道存储的数据的请求时,第一响应可以包括读取出的数据;第一请求是将数据写入目标模块的某一通道的请求,第一响应可以包括数据成功写入或者写入失败的反馈信息。例如,目标模块接收到第一请求Q1后,可以给出相应的第一响应X1。目标模块发出第一响应到缓存模块时,也可以用到现有技术的valid/ready握手协议,在此不再对具体发送过程进行赘述。
缓存模块可接收并存储来自目标模块的第一响应。缓存模块上可设置有与通道对应的存储区域(示例可参见图4a的M组寄存器或图7的N个区域),第一响应的通道编号表示该第一响应是来自目标模块的对应通道。在存储第一响应时,按照第一响应的通道编号存储至缓存模块中与该通道对应的区域。例如,在存储第一响应X1时,根据第一响应X1的通道编号T1,将第一响应X1存入与通道T1对应的区域。缓存模块还在请求管理模块输出的第二请求与存储的第一响应满足预设条件(示例参见下文对图4b或图9的相关描述)时,响应该第二请求,输出第一响应到第二存储器,从而将第一请求对应的第一响应传输至第二存储器。例如,请求管理模块还发出第二请求Q11,第二请求Q11与存储的第一响应X1满足预设条件,缓存模块即可发出第一响应X1到第二存储器。缓存模块发出第一响应时,也可以用到现有技术的valid/ready握手协议,在此不再对具体发送过程进行赘述。
第二存储器可负责将第一响应输出到响应输出系统外部。第二存储器接收来自缓存模块的第一响应后,可将第一响应输出到发起第一请求的对象,也即用户设备处,从而将第一请求对应的第一响应传输至用户设备。例如,第二存储器可发出第一响应X1到用户设备。第二存储器发出第一响应时,也可以用到现有技术的valid/ready握手协议,在此不再对具体发送过程进行赘述。
通过这种方式,使得响应输出过程中科学合理使用了valid/ready协议。
图2c示出根据本公开实施例的响应输出系统从接收到多个第一请求到输出多个对应的第一响应的工作流程的示意图。
如图2c所示,用户设备将多个第一请求Q1-Q3输入第一存储器,其中第一请求Q1包括第一编号T1,第一请求Q2包括第一编号T2,第一请求Q3包括第一编号T3。对于第一存储器而言,第一请求有两种输出方式。第一种输出方式中,第一存储器可以是先入先出存储器,从而使得输出到目标模块的第一请求的第一编号顺序得以保持,例如在第一存储器接收到的第一请求的顺序是Q1-Q2-Q3时,第一存储器输出的第一请求的顺序也是Q1-Q2-Q3。第二种输出方式中,第一请求的输出顺序可以根据缓存模块上对应于目标模块的每个通道的存储区域的余量确定,使得第一请求的输出更快,此时输出到目标模块的第一请求的第一编号顺序可能无法保持,例如在第一存储器接收到的第一请求的顺序是Q1-Q2-Q3时,第一存储器输出的第一请求的顺序也可能是Q2-Q1-Q3。两种输出方式下第一存储器、缓存模块的结构也不同,在下文中给出每种输出方式以及第一存储器、缓存模块的结构的进一步的描述。对于任意一种输出方式,在当前发出的第一请求未被目标模块接收前,该第一请求可以一直保持在第一存储器与目标模块之间的总线上。
第一存储器按照其接收的第一请求顺序,将与每个第一请求(包括的第一编号)对应的第二编号发送到请求管理模块。也即,第一请求是第一存储器接收的第i个第一请求时,第二编号是第一存储器输出的第i个第二编号。例如,第一存储器接收第一请求的顺序是Q1-Q2-Q3时,第一存储器输出的第二编号的顺序是Z1-Z2-Z3,其中第二编号Z1对应于第一编号T1,第二编号Z2对应于第一编号T2,第二编号Z3对应于第一编号T3。
响应于第一请求,目标模块可输出第一响应,其中输出的第一响应的通道编号的顺序与目标模块接收的第一请求的通道编号的顺序(即第一存储器输出的第一请求所包括的第一编号的顺序)可能不同。例如,目标模块输出的第一响应的顺序可以是X1-X3-X2,其中第一响应X1包括通道编号T1,第一响应X2包括通道编号T2,第一响应X3包括通道编号T3。也即,目标模块输出的第一响应的通道编号的顺序可以是T1-T3-T2,与目标模块接收的第一请求的第一编号的顺序T1-T2-T3或T2-T1-T3不同。
请求管理模块根据接收到的第二编号的顺序Z1-Z2-Z3,得到具有相同第二编号顺序的第二请求Q11-Q12-Q13,其中第二请求Q11包括第二编号Z1,第二请求Q12包括第二编号Z2,第二请求Q13包括第二编号Z3。也即,第一请求是第一存储器接收的第i个第一请求时,第二编号是第一存储器输出的第i个第二编号,第二请求是请求管理模块输出的第i个第二请求。每个第二请求在请求管理模块前次发出的第二请求被缓存模块响应后发出,也即,第二请求Q12在第二请求Q11被缓存模块响应后发出,第二请求Q13在第二请求Q12被缓存模块响应后发出。
第一响应被缓存模块存储时,可以存储至通道编号对应的存储区域处,即对于缓存模块来说,其上存储的各第一响应的通道编号是已知的。例如,缓存模块已知其上存储的第一响应X1的通道编号是T1,其上存储的第一响应X2的通道编号是T2,其上存储的第一响应X3的通道编号是T3。缓存模块可以在请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应该第二请求,输出第一响应到第二存储器。
其中,第一响应从缓存模块输出时,已经恢复了与第二请求的通道编号相同的顺序,也即,缓存模块响应第二请求Q11时,输出的可以是第一响应X1;响应第二请求Q12时,输出的可以是第一响应X2;响应第二请求Q13时,输出的可以是第一响应X3。也即,第二请求是请求管理模块输出的第i个第二请求,第一响应是缓存模块输出的第i个第一响应。
第二存储器可以是先入先出存储器,由于第一响应从缓存模块输出时,已经恢复了与第二请求的通道编号相同的顺序,因此,通过设置先入先出的第二存储器,使得最终从响应输出系统输出的第一响应的通道编号的顺序与第二请求的第二编号的顺序相同,从而与输入响应输出系统的第一请求的第一编号的顺序也相同。例如,在图2c的示例中,第一响应从缓存模块输出的顺序可以是X1-X2-X3,则经过先入先出的第二存储器,使得最终从响应输出系统输出到用户设备的第一响应的顺序也是X1-X2-X3,因此,最终从响应输出系统输出的第一响应的通道编号的顺序与输入响应输出系统的第一请求的第一编号的顺序相同,均为T1-T2-T3。
在此情况下,如果第一请求是第一存储器输出的请求序列中的第i个第一请求,则第一响应也必然是从第二存储器输出的响应序列中的第i个第一响应(i是正整数),从而能实现顺序输出请求时,也顺序输出对应的响应的效果。
根据本公开实施例的响应输出系统,第一存储器根据接收的第一请求所包括的第一编号和地址,输出第一请求到地址,由于地址是目标模块上、第一编号指示的通道的地址,从而实现第一请求从响应输出系统到目标模块的传输;第一存储器发送第二编号到请求管理模块,由于第二编号对应于第一请求包括的第一编号,请求管理模块根据接收到的第二编号得到第二请求,因此请求管理模块通过第二请求实现记录第一请求进入响应输出系统的顺序。该第二请求在请求管理模块前次发出的第二请求被缓存模块响应后发出,第一请求是第一存储器接收的第i个第一请求时,第二编号是第一存储器输出的第i个第二编号,第二请求是请求管理模块输出的第i个第二请求,因此发出第二请求的顺序与第一请求进入响应输出系统的顺序相同。缓存模块接收并存储来自目标模块的第一响应,在请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出第一响应到第二存储器,从而可以将第一请求对应的第一响应发送至第二存储器;第二存储器接收并存储来自缓存模块的第一响应,并以先入先出方式将第一响应输出到发起第一请求的对象处,使得响应输出系统最终完成对第一请求的响应。由于第二存储器是以先入先出方式接收并输出第一响应,第一请求是第一存储器接收的第i个第一请求时,第一响应是第二存储器输出的第i个第一响应,因此,从第二存储器输出的第一响应的顺序与从缓存模块输出的第一响应的顺序相同,并且与系统接收的第一请求的顺序也一致。因此,根据本公开实施例的响应输出系统,能够在顺序接收到来自系统外部的请求时,也顺序输出对应的响应到系统外部,从而使得后续的数据处理流程简化,提高后续的数据处理效率。
本领域技术人员应理解,在实际应用中,目标模块可以包括更多的通道,本公开对于目标模块的通道数量不作限制。
本公开的响应输出系统以硬件方式实现时,电路面积和功耗较小,因此便于实现。
示例性地,本公开实施例的响应输出系统有多种示例性实现方式,均可实现在顺序接收到来自系统外部的请求时也顺序输出对应的响应到系统外部。下面先结合图3a-图5介绍本公开实施例的响应输出系统的第一种示例性实现方式。
图3a示出根据本公开实施例的第一存储器的结构的示意图。
如图3a所示,所述目标模块包括M个通道,所述第一存储器包括M个请求存储单元、M个计数单元和轮询仲裁单元,第m个请求存储单元对应于第m个计数单元和第m个通道,m≤M,m和M是正整数,
所述第m个请求存储单元用于,接收并存储包括所述第m个通道的编号的第一请求,根据该第一请求所包括的编号,输出所述第二编号到所述请求管理模块,从所述第m个计数单元处获取计数结果;
所述第m个计数单元用于,记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,在所述第m个请求存储单元获取所述计数结果时,发送所述计数结果到所述第m个请求存储单元;
所述第m个请求存储单元还用于,在获取到的计数结果小于第一阈值时,输出所述第m个通道的编号到所述轮询仲裁单元;
所述轮询仲裁单元用于,在接收到所述第m个通道的编号时检测所述第m个请求存储单元的优先级,根据所述优先级确定所述第m个请求存储单元存储的第一请求的输出顺序,控制所述M个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
举例来说,在响应输出系统的第一种示例性实现方式中,在图3a的示例中,在M=3时,目标模块有3个通道T1-T3,第一存储器可以包括3个请求存储单元、3个计数单元和轮询仲裁单元,第1个请求存储单元对应于第1个计数单元、通道T1,第2个请求存储单元对应于第2个计数单元、通道T2,第3个请求存储单元对应于第3个计数单元、通道T3。
下面介绍第m个请求存储单元和第m个计数单元、轮询仲裁单元的工作方式。在此以第1个请求存储单元和第1个计数单元为例。
第一存储器依次接收第一请求Q1、Q2、Q3,其中第一请求Q1包括第1个通道的编号T1,因此可以被第1个请求存储单元接收并存储。第1个请求存储单元根据第一请求Q1所包括的编号T1和地址,输出第二编号Z1到请求管理模块,在响应输出系统的第一种示例性实现方式中,第二编号可以与第一编号相同,也即,第二编号也可以是目标模块的通道的编号。
第1个请求存储单元可以从第1个计数单元处获取计数结果。该计数结果指示缓存模块上、用于存储来自第1个通道的第一响应的一组寄存器的已用存储空间。在获取到的计数结果小于第一阈值时,输出第1个通道的编号到轮询仲裁单元。例如第一阈值可等于2,表示缓存模块上、用于存储来自第1个通道的第一响应的一组寄存器最多可存储2个第一请求,则获取到的计数结果小于2时,表示该组寄存器尚有余量,此时允许第1个请求存储单元输出第一请求。
第一存储器所包括的M个请求存储单元具有优先级,优先级决定M个请求存储单元输出各自存储的第一请求的先后顺序。轮询仲裁单元接收到第1个通道的编号时检测第1个请求存储单元的优先级,根据优先级确定第1个请求存储单元存储的第一请求的输出顺序,控制M个请求存储单元以确定的输出顺序输出第一请求到目标模块。例如,第1个请求存储单元的优先级可以是2,第2个请求存储单元的优先级可以是1,第3个请求存储单元的优先级可以是3,在允许第1个请求存储单元、第2个请求存储单元、第3个请求存储单元输出第一请求时,确定的输出顺序可以是第2个请求存储单元输出一次第一请求(例如Q2)后,第1个请求存储单元再输出一次第一请求(例如Q1),第3个请求存储单元输出一次第一请求(例如Q3),因此,第一请求的输出顺序可以是Q2-Q1-Q3。
每个请求存储单元可能同时存储多个第一请求。此时先输入请求存储单元的第一请求先输出,即每个请求存储单元都是先入先出的请求存储单元。
可以理解的是,第一存储器输出第一请求的顺序取决于多个请求存储单元的优先级以及每个请求存储单元是否允许输出第一请求,因此,对于第一存储器接收的多个第一请求而言,以任意的顺序输出均有可能,例如第一请求的输出顺序也可以和接收顺序相同,可以是Q1-Q2-Q3。只要满足每个请求存储单元都是先入先出的请求存储单元、且每个第一请求都是由允许输出第一请求的请求存储单元输出即可,本公开对于第一请求被第一存储器输出的具体顺序不作限制。
通过这种方式,使得第一存储器可以更快地输出第一请求,提升响应输出系统的工作效率。
下面介绍第一存储器中的计数单元的示例性工作方式。
在一种可能的实现方式中,所述记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,包括:
检测到所述目标模块接收一次包括所述第m个通道的编号的第一请求,所述第m个计数单元的计数结果加一;
检测到所述缓存模块输出一次来自所述第m个通道的第一响应,所述第m个计数单元的计数结果减一。
举例来说,以第1个计数单元为例,检测到目标模块接收包括第1个通道的编号的第一请求,可以是通过检测目标模块的第一个通道和第1个请求存储单元之间的握手信号ready来实现。每出现一次握手信号ready即可认为目标模块接收一次包括第1个通道的编号的第一请求。此时可在缓存模块上、用于存储来自第1个通道的第一响应的一组寄存器中预留出该第一请求对应的第一响应的存储位置,因此,可以使得第1个计数单元的计数结果加一。在检测到缓存模块输出一次来自第1个通道的第一响应时,可以使得第1个计数单元的计数结果减一。
通过这种方式,可以准确记录缓存模块上存储来自每个通道的第一响应的一组寄存器的已用存储空间。
图3b示出根据本公开实施例的请求管理模块的结构的示意图。
如图3b所示,所述请求管理模块包括第三存储器和第一标识存储单元,所述第一标识存储单元存储M个第一标识,第m个第一标识对应所述第m个通道,所述第二编号与所述第一编号相同,所述第二编号由所述第三存储器接收,所述第二请求还包括与第二编号对应的第一标识,所述第一标识指示从所述缓存模块中输出所述第一响应的位置;
所述第三存储器用于,根据所述第二编号从所述第一标识存储单元处获取与该第二编号对应的第一标识,并将所述第二编号以及所述第一标识作为所述第二请求存储,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;
所述第一标识存储单元用于,在所述第三存储器获取所述第一标识时,发送所述第一标识到所述第三存储器。
举例来说,在响应输出系统的第一种示例性实现方式中,请求管理模块包括第三存储器和第一标识存储单元,第三存储器可以是先入先出存储器,用于产生并输出第二请求。来自第一存储器的第二编号可由第三存储器接收,使得第二请求可包括该第二编号。除此之外,第二请求还可以包括该第二编号对应的第一标识。第一标识可以从第一标识存储单元处获取。由上文描述可知,目标模块发出的第一响应是由缓存模块存储,第一标识可指示从缓存模块中读出第一响应的位置,以便缓存模块可以读出第一响应。
目标模块可包括M个通道,第一标识存储单元可存储有M个第一标识,使得M个第一标识与M个通道一一对应,即第m个第一标识对应目标模块的第m个通道,m是正整数。由于第二编号与第一编号对应,第一编号是通道的编号,因此,对应相同通道的第二编号与第一标识也相对应。例如,如图3b所示,在M=3时,目标模块有3个通道T1-T3,第一标识存储单元可存储有3个第一标识flag1-flag3,其中第一标识flag1对应目标模块的第1个通道T1,也对应第二编号Z1;第一标识flag2对应目标模块的第2个通道T2,也对应第二编号Z2;第一标识flag3对应目标模块的第3个通道T3,也对应第二编号Z3。
第三存储器产生并输出第二请求,可以是根据接收到的第二编号从第一标识存储单元处获取与该第二编号对应的第一标识,相应地,第一标识存储单元可在第三存储器获取第一标识时,发送第一标识到第三存储器。第三存储器可将第二编号以及第一标识作为第二请求存储,发送第二请求到缓存模块,其中该第二请求在请求管理模块前次发出的第二请求被缓存模块响应后发出,即第三存储器也是以先入先出方式发出第二请求。
第三存储器接收到的第二编号的顺序可以是Z1-Z2-Z3,根据接收到的第二编号Z1,第三存储器可从第一标识存储单元处获取对应的第一标识flag1,并得到包括第二编号Z1和第一标识flag1的第二请求Q11,存储并发送到缓存模块。以此类推,根据接收到的第二编号Z2、Z3也可分别得到包括第二编号Z2和第一标识flag2的第二请求Q12、包括第二编号Z3和第一标识flag3的第二请求Q13,依次存储并发送到缓存模块。在存储和发送第二请求时,以先入先出方式,因此顺序可以是Q11-Q12-Q13。
本领域技术人员应理解,在实际应用中,第一标识存储单元可以包括更多的第一标识,只要第一标识的数量与目标模块的通道数量相同即可,本公开对此不作限制。
通过这种方式,可以实现第二请求的发送。由于第一标识指示从缓存模块中读出第一响应的位置,因此使得根据第二请求能够准确读出第一响应。
图4a和图4b分别示出根据本公开实施例的缓存模块的工作方式的示意图。
在一种可能的实现方式中,缓存模块包括M组寄存器和第二标识存储单元,所述第二标识存储单元存储M个第二标识,所述第二标识指示所述第一响应存入所述缓存模块中的位置,第m个第二标识对应所述第m组寄存器以及所述第m个通道;
每组寄存器包括两个寄存器,每个寄存器对应一个第三标识,所述第三标识具备无效和有效两种状态;
所述第m组寄存器用于,接收来自所述目标模块的第m个通道的第一响应,并从所述第二标识存储单元处获取所述第m个第二标识,根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,将存入所述第一响应的寄存器的第三标识变更为有效状态;
所述第二标识存储单元用于,在所述第m组寄存器获取所述第m个第二标识时,发送所述第m个第二标识到所述第m组寄存器。
举例来说,在响应输出系统的第一种示例性实现方式中,缓存模块可包括M组寄存器和第二标识存储单元,其中,M组寄存器可以用于接收和输出第一响应。M组寄存器可以与目标模块的M个通道一一对应,即第m组寄存器用于接收目标模块的第m个通道发出的第一响应,m是正整数。第二标识存储单元可以存储M个第二标识,M个第二标识可以和M个通道一一对应,即第m个第二标识对应第m组寄存器以及目标模块的第m个通道。
第二标识指示第一响应存入缓存模块中的位置,在第m组寄存器接收目标模块的第m个通道发出的第一响应后,可以从第二标识存储单元处获取第m个通道对应的第m个第二标识。相应地,第二标识存储单元可用于在第m组寄存器获取第m个第二标识时,发送第m个第二标识到第m组寄存器。
每组寄存器可包括两个寄存器,两个寄存器交替地完成响应的接收和输出的操作,可避免响应出现丢失。第m组寄存器根据第m个第二标识的指示,可将第一响应存入第m组寄存器中两个寄存器之一。每个寄存器可对应一个第三标识,第三标识具备无效和有效两种状态,在存入第一响应到某一寄存器后,该寄存器的第三标识可变更为有效状态。相应地,在该寄存器存储的第一响应被读出时,该寄存器的第三标识可变更为无效状态。
例如,如图4a所示,在M=3时,目标模块有3个通道T1-T3,第二标识存储单元可存储有3个第二标识flag11-flag13,缓存模块可包括3组寄存器,其中第二标识flag11对应第1组寄存器以及目标模块的第1个通道T1,第二标识flag12对应第2组寄存器以及目标模块的第2个通道T2,第二标识flag13对应第3组寄存器以及目标模块的第3个通道T3。第1组寄存器中,第一个寄存器对应第三标识v11,第二个寄存器对应第三标识v12;第2组寄存器中,第一个寄存器对应第三标识v21,第二个寄存器对应第三标识v22;第3组寄存器中,第一个寄存器对应第三标识v31,第二个寄存器对应第三标识v32。第三标识具备有效状态和无效状态,例如有效状态可以是“1”,无效状态可以是“0”。
缓存模块接收到的第一响应的顺序可以是X1-X3-X2。第1组寄存器接收目标模块的第1个通道发出的第一响应(即通道编号为T1的第一响应X1)后,可以从第二标识存储单元处获取第1个通道对应的第1个第二标识(即第二标识flag11)。根据第二标识flag11,第1组寄存器可将第一响应X1存入第1组寄存器中的一个寄存器,并变更该寄存器的第三标识为有效状态“1”。以此类推,目标模块的第2个通道发出的第一响应(即通道编号为T2的第一响应X2)可存储到第2组寄存器中的一个寄存器,目标模块的第3个通道发出的第一响应(即通道编号为T3的第一响应X3)可存储到第3组寄存器中的一个寄存器。每个存储第一响应的寄存器的第三标识均为有效状态“1”。
通过这种方式,可以实现第一响应的存储。由于每个通道都有对应的寄存器用于存储该通道发出的第一响应,因此即便第一响应被目标模块输出的顺序与第一请求被第一存储器接收的顺序不一致,也可以通过寄存器与通道的对应关系找到第一请求对应的第一响应,使得缓存模块中,第一响应以与第一请求被第一存储器接收的相同顺序读出成为可能。
本领域技术人员应理解,在实际应用中,第二标识存储单元可以包括更多的第二标识,缓存模块可以包括更多组寄存器,只要第二标识的数量以及寄存器的组数与目标模块的通道数量相同即可,本公开对第二标识的数量不作限制。
下面结合图4a介绍本公开根据第m个第二标识将第一响应存入第m组寄存器的一种示例性方式。
在一种可能的实现方式中,第二标识具备第一状态和第二状态,根据第m个第二标识将第一响应存入第m组寄存器中的一个寄存器,包括:
在第m个第二标识为第一状态时,将第一响应存储在第m组寄存器中的第一个寄存器;
在第m个第二标识为第二状态时,将第一响应存储在第m组寄存器中的第二个寄存器;
第二标识存储单元还用于,在发送第m个第二标识到第m组寄存器后,变更该第m个第二标识的状态。
举例来说,第二标识具备第一状态和第二状态,例如第一状态可以是“0”,第二状态可以是“1”,两种状态指示第一响应存入缓存模块中的位置可以不同。根据第m个第二标识将第一响应存入第m组寄存器,可以是在第m个第二标识为第一状态时,将第一响应存储在第m组寄存器中的第一个寄存器,在第m个第二标识为第二状态时,将第一响应存储在第m组寄存器中的第二个寄存器。
如图4a所示,第二标识存储单元中,每个第二标识的状态均可以是第一状态“0”或第二状态“1”,以第二标识flag11为例,在flag11状态是“0”时,第1组寄存器可以将第一响应X1存储在第1组寄存器的第一个寄存器中,在flag11状态是“1”时,则存储在第1组寄存器的第二个寄存器中。
进一步地,为使得每组寄存器中的两个寄存器能够交替接收和输出第一响应,在第二标识存储单元发送第m个第二标识到第m组寄存器后,还可以变更该第m个第二标识的状态,使得第m组寄存器相邻两次接收到的第一响应,可以存储在不同的寄存器中,避免出现前次接收到的第一响应尚未读出便被后次接收的第一响应覆盖的情况。
如图4a所示,以第二标识flag11为例,假设发出第二标识flag11时,第二标识flag11的状态是“0”,则发送第二标识flag11到第1组寄存器后,可以变更第二标识存储单元中的第二标识flag11的状态为“1”。
通过这种方式,使得第二标识指示第一响应存入缓存模块中的位置时,不会出现数据冲突,避免数据丢失。
下面结合图4b介绍第m组寄存器输出其上存储的第一响应的示例性方式。
在一种可能的实现方式中,所述第一标识具备第三状态和第四状态,所述预设条件为所述第二请求包括第m个通道的编号时,存储的第一响应也包括第m个通道的编号,
在满足所述预设条件且所述第二请求包括第m个第一标识时,所述第m组寄存器还用于,在所述第二请求包括的第一标识为第三状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第一个寄存器;在所述第二请求包括的第一标识为第四状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第二个寄存器;在该寄存器的第三标识为有效状态时,输出该寄存器存储的所述第一响应;将该寄存器的第三标识变更为无效状态;
所述第一标识存储单元还用于,在发送第一标识到所述第三存储器后,变更该第一标识的状态。
举例来说,在响应输出系统的第一种示例性实现方式中,预设条件可为第二请求包括第m个通道的编号时,存储的第一响应也包括第m个通道的编号。由上文描述可知,目标模块的第m个通道发出的第一响应存储在第m组寄存器中的一个寄存器上,且第二请求中的第一标识指示从缓存模块中读出第一响应的位置。
第二请求包括第m个第一标识时,可以认为待输出的响应也存储在缓存模块的第m组寄存器中。第一标识具备第三状态和第四状态,例如第三状态可以是“0”,第四状态可以是“1”,两种状态指示从缓存模块中输出第一响应的寄存器可以不同。可以是在第二请求包括的第一标识为第三状态时,确定输出第一响应的寄存器是第m组寄存器中的第一个寄存器,在第二请求包括的第一标识为第四状态时,确定输出第一响应的寄存器是第m组寄存器中的第二个寄存器。
参见图3b的相关描述,每个第一标识的状态均可以是第三状态“0”或第四状态“1”,以第一标识flag1为例,在flag1状态是“0”时,如图4b所示,可以确定输出第一响应的寄存器是第1组寄存器中的第一个寄存器,在flag1状态是“1”时,可以确定输出第一响应的寄存器是第1组寄存器中的第二个寄存器。
第m组寄存器可以判断该寄存器的第三标识的状态,在该寄存器的第三标识为有效状态时,输出其上存储的第一响应到第二存储器。由于第一响应已经输出,因此第m组寄存器还可以将该寄存器的第三标识变更为无效状态,第m组寄存器判断该寄存器的第三标识的状态为无效状态时,可不输出第一响应,而是等待该寄存器的第三标识变更为有效状态后输出第一响应。使第三标识变更为有效状态的方式可以是有新的第一响应存入该寄存器,其具体实现方式在上文中已经描述过,在此不再赘述。通过及时变更第三标识的状态,以使得下一次有第一响应存入该寄存器之前,有其他包括第m个通道的通道编号的第二请求到来时,不会将已经读出过的第一响应重复输出,避免数据输出错误。
如图4b所示,在请求管理模块发出的第二请求包括的通道编号与缓存模块存储的第一响应的通道编号一致,且第一响应是第1个通道发出时(即第一响应是X1),第1组寄存器还可根据第二请求Q1中的第一标识flag1的指示,确定第1组寄存器中的哪个寄存器是输出第一响应的寄存器。第1组寄存器可以判断该寄存器的第三标识的状态,在该寄存器的第三标识为有效状态时,输出该寄存器存储的第一响应X1到第二存储器。第1组寄存器还可以将输出第一响应X1的寄存器的第三标识变更为无效状态。以此类推,在请求管理模块发出的第二请求包括的通道编号与缓存模块存储到的第一响应的通道编号一致,且第一响应是第2个通道发出时(即第一响应是X2),第2组寄存器可以输出第一响应X2,变更输出第一响应X2的寄存器的第三标识变更为无效状态;在请求管理模块发出的第二请求包括的通道编号与缓存模块存储到的第一响应的通道编号一致,且第一响应是第3个通道发出时(即第一响应是X3),第3组寄存器可以输出第一响应X3,变更输出第一响应X3的寄存器的第三标识变更为无效状态。在此情况下,第一响应从缓存模块输出的顺序可以是X1-X2-X3。
由于缓存模块具备同一组寄存器中的两个寄存器交替接收第一响应的特性,因此,输出第一响应也应该是从一组寄存器中交替输出。而第一标识指示缓存模块中读出第一响应的位置,并具体指示从一组寄存器中的哪一个寄存器输出第一响应,所以,在第一标识存储单元发送第一标识到第三存储器后,第一标识存储单元还可以变更该第一标识的状态。在此情况下,请求管理模块发出的具有相同通道编号的相邻的第二请求,所包括的第一标识的状态可以不同,从而使得缓存模块中对应的一组寄存器读出第一响应时,也分别是从不同的两个寄存器处读出。
例如,参见图3b,以第一标识flag1为例,假设发出第一标识flag1时,第一标识flag1的状态是“0”,则发送第一标识flag1到第三存储器后,可以变更第一标识存储单元中的第一标识flag1的状态为“1”。通过这种方式,使得可以避免同一第一响应重复读出,保证读出的第一响应的准确度。
通过这种方式,使得缓存模块中的每一组寄存器均可以响应于第二请求,准确地输出具有相同编号的第一响应,使得第一响应的输出顺序与第二请求的发出顺序相对应,从而与第一请求的接收顺序也对应。
图5示出根据本公开实施例的响应输出系统的示例性架构图。
如图5所示,在一种可能的实现方式中,所述系统还包括第一计数器,所述第一计数器用于记录所述第二存储器的已用存储空间,
检测到所述目标模块接收一次第一请求,所述第一计数器的计数结果加一;
检测到所述第二存储器输出一次第一响应,所述第一计数器的计数结果减一;
在自身的计数结果达到第五阈值时,所述第一计数器输出第一反馈信号到所述第一存储器,所述第一反馈信号指示所述第一存储器暂停所述第一请求的输出。
举例来说,在响应输出系统的第一种示例性实现方式中,响应输出系统还可包括第一计数器,第一计数器用于判断请求管理模块输出第二请求的速度与第二存储器接收第一响应的速度是否差距过大,在差距过大时,从源头上控制第一存储器输出第一请求的速度,使得请求管理模块输出第二请求的速度也降低,从而降低请求管理模块输出第二请求的速度与第二存储器接收第一响应的速度的差距。
示例性地,第一计数器检测到目标模块接收第一请求,可以是通过检测目标模块的M个通道和第一存储器的M个请求存储单元之间的握手信号ready来实现。每出现一次握手信号ready即可认为目标模块接收一次第一请求。此时可在第二存储器中预留出该第一请求对应的第一响应的存储位置,因此,可以使得第一计数器的计数结果加一。在检测到第二存储器输出一次第一响应时,第二存储器有一个响应存储位置被释放,因此可以使得第一计数器的计数结果减一。在自身的计数结果达到第五阈值时,第一计数器输出第一反馈信号到第一存储器,第一反馈信号指示第一存储器暂停第一请求的输出。第五阈值相当于第一计数器的宽度,可等于第二存储器的可用存储空间最大值。本公开实施例对于第五阈值的具体取值不作限制。在第一计数器的计数结果小于第五阈值时,则可不再输出第一反馈信号,第一存储器继续输出第一请求。
通过这种方式,使得响应输出系统具备反压第一存储器的能力,减轻响应输出系统的负载压力。
在响应输出系统的第一种示例性实现方式中,各模块具备对应的参数,调节参数可以使得响应输出系统与应用场景需求更为适应。例如,对于第一存储器,其参数可包括深度和宽度,其中深度决定了第一存储器能够同时存储的第一请求的最大个数,宽度决定了第一存储器能够存储的第一请求的最大长度。对于请求管理模块,其参数可包括第三存储器的深度和宽度、第一标识个数,其中第三存储器的深度决定了第三存储器能够同时存储的第二请求的最大个数,第三存储器的宽度决定了第三存储器能够存储的第二请求的最大长度。第一标识个数决定第一标识存储单元能够存储的第一标识的最大数量。对于缓存模块,其参数可包括寄存器组数、第二标识个数、每个寄存器大小,其中寄存器组数决定缓存模块最多包括多少组寄存器,第二标识个数决定第二标识存储单元能够存储的第二标识的最大数量,每个寄存器大小决定单个寄存器能够存储的数据量最大值。对于第二存储器,其参数可包括深度和宽度,其中第二存储器的深度决定了第二存储器能够同时存储的第一响应的最大个数,第二存储器的宽度决定了第二存储器能够存储的第一响应的最大长度。对于第一计数器,其参数可包括宽度,即第五阈值。
其中,第一存储器、第二存储器、第三存储器的深度、寄存器组数、第一标识个数、第二标识个数可以大于或等于目标模块的通道数,第一存储器、第二存储器、第三存储器的深度可以相同或不同。第一计数器宽度可小于或等于第一存储器、第二存储器的深度中的最大值。
例如,应用场景中的目标模块包括3个通道时,第一存储器、第二存储器、第三存储器的深度均可设置为6。假设单位数据宽度256比特,则每个寄存器大小可以设置为2*256比特。第一寄存器宽度可以设置为(2+w)比特,其中2比特用于存储通道编号,w比特用于存储地址。第二寄存器宽度可以设置为(2+1)比特,其中2比特用于存储通道编号,1比特用于存储第一标识。第一计数器宽度可设置为3比特。每组寄存器包括2个寄存器。
通过这种方式,使得各先入先出存储器的深度可以随时调整,从而与场景需求更为适应,具备可扩展性。
下面结合图6-图9介绍本公开实施例的响应输出系统的第二种示例性实现方式。
图6示出根据本公开实施例的第一存储器的结构的示意图。
如图6所示,在一种可能的实现方式中,所述目标模块包括M个通道,所述第一存储器包括N个请求存储单元、N个计数单元和轮询仲裁单元,第n个请求存储单元对应于第n个计数单元以及所述M个通道中的K个通道,N<M,n≤N,K=M/N,N、n、K是正整数,M个通道中的每个通道对应于一个请求存储单元,不同的请求存储单元对应的通道不同;
所述第n个请求存储单元用于,接收并存储包括该第n个请求存储单元对应的K个通道的编号的第一请求,根据接收的第一请求所包括的编号和地址,输出第二编号到所述请求管理模块,所述第二编号是所述第n个请求存储单元的编号;
所述第n个计数单元用于,记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,在所述第n个请求存储单元获取计数结果时,发送所述计数结果到所述第n个请求存储单元,与所述第n个请求存储单元对应的区域用于存储来自所述第n个请求存储单元对应的K个通道的第一响应;
所述第n个请求存储单元还用于,从所述第n个计数单元处获取所述计数结果,在获取到的计数结果小于第二阈值时,输出所述第n个请求存储单元的编号到所述轮询仲裁单元;
所述轮询仲裁单元用于,在接收到所述第n个请求存储单元的编号时检测所述第n个请求存储单元的优先级,根据所述优先级确定所述第n个请求存储单元存储的第一请求的输出顺序,控制所述N个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
举例来说,在响应输出系统的第二种示例性实现方式中,在图6的示例中,在M=4、N=2、K=M/N=2时,目标模块有4个通道T1-T4,第一存储器可包括2个请求存储单元、2个计数单元和轮询仲裁单元,每个请求存储单元对应于一个计数单元以及4个通道中的2个通道,例如第1个请求存储单元对应于第1个计数单元以及通道T1-T2,第2个请求存储单元对应于第2个计数单元以及通道T3-T4。
下面介绍第n个请求存储单元和第n个计数单元、轮询仲裁单元的工作方式。在此以第1个请求存储单元和第1个计数单元为例。
第一存储器依次接收第一请求Q1、Q2、Q3、Q4,其中第一请求Q1包括第1个通道的编号T1,第一请求Q2包括第2个通道的编号T2,因此第一请求Q1和Q2可以被第1个请求存储单元依次接收并存储。第1个请求存储单元根据第一请求Q1所包括的编号T1得到第二编号Z1,根据第一请求Q1进入第1个请求存储单元的顺序输出第二编号Z1到请求管理模块,根据第一请求Q2所包括的编号T2得到第二编号Z2,根据第一请求Q2进入第1个请求存储单元的顺序输出第二编号Z2到请求管理模块。输出顺序可以是第二编号Z1输出之后,输出第二编号Z2。第一存储器根据接收的第一请求顺序,依次向请求管理模块发送对应的第二编号Z1、Z2、Z3、Z4。在响应输出系统的第二种示例性实现方式中,第二编号可以与第一编号不同,例如可以是输出第二编号的请求存储单元的编号。因此不同的第一编号所对应的第二编号可能相同。
缓存模块上可存在与每个请求存储单元对应的区域(示例参见图7),第n个请求存储单元对应的区域用于存储来自第n个请求存储单元对应的K个通道的第一响应,例如第1个请求存储单元对应的区域用于存储来自第1个请求存储单元对应的2个通道T1-T2的第一响应。第1个计数单元的计数结果可指示第1个请求存储单元对应的区域的已用存储空间。
每个请求存储单元具有不同的编号,例如第1个请求存储单元的编号可以是D1,第2个请求存储单元的编号可以是D2。第1个请求存储单元可以从第1个计数单元处获取计数结果。在获取到的计数结果小于第二阈值时,输出第1个请求存储单元的编号D1到轮询仲裁单元。例如第二阈值可等于2,表示缓存模块上、用于存储来自通道T1-T2的第一响应的区域最多可存储2个第一请求,则获取到的计数结果小于2时,表示该区域尚有余量,此时允许第1个请求存储单元输出第一请求。
第一存储器所包括的N个请求存储单元具有优先级,优先级决定N个请求存储单元输出各自存储的第一请求的先后顺序。轮询仲裁单元接收到第1个请求存储单元的编号D1时检测第1个请求存储单元的优先级,根据优先级确定第1个请求存储单元存储的第一请求的输出顺序,以确定的输出顺序输出第一请求到目标模块。例如,在第一请求Q1未发出时,第1个请求存储单元的优先级可以是2,第2个请求存储单元的优先级可以是1,允许第1个请求存储单元、第2个请求存储单元输出第一请求。由于第1个请求存储单元中第一请求Q1先接收、第一请求Q2后接收,第2个请求存储单元中第一请求Q3先接收、第一请求Q4后接收,因此确定的输出顺序可能是Q3-Q4-Q1-Q2。轮询仲裁单元可控制2个请求存储单元以确定的输出顺序输出第一请求到目标模块。
每个请求存储单元可能同时存储多个第一请求。此时先输入请求存储单元的第一请求先输出,即每个请求存储单元都是先入先出的请求存储单元。
可以理解的是,第一存储器输出第一请求的顺序取决于多个请求存储单元的优先级以及每个请求存储单元是否允许输出第一请求,因此,对于第一存储器接收的多个第一请求而言,以任意的顺序输出均有可能,例如第一请求的输出顺序也可能和接收顺序相同,可以是Q1-Q2-Q3-Q4。只要满足每个请求存储单元都是先入先出的请求存储单元、且每个第一请求都是由允许输出第一请求的请求存储单元输出即可,本公开对于第一请求被第一存储器输出的具体顺序不作限制。
通过这种方式,使得第一存储器可以更快地输出第一请求,提升响应输出系统的工作效率。
下面介绍第一存储器中的计数单元的示例性工作方式。
在一种可能的实现方式中,所述记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,包括:
检测到所述目标模块接收一次包括所述第n个请求存储单元对应的任意通道的编号的第一请求,所述第n个计数单元的计数结果加一;
检测到所述缓存模块输出一次来自所述第n个请求存储单元对应的任意通道的第一响应,所述第n个计数单元的计数结果减一。
举例来说,以第1个计数单元为例,检测到目标模块接收包括第1个请求存储单元对应的任意通道(通道T1和通道T2)的编号的第一请求,可以是通过检测第1个请求存储单元对应的每个通道和第1个请求存储单元之间的握手信号ready来实现。每出现一次握手信号ready即可认为目标模块接收一次包括第1个请求存储单元对应的任意通道的编号的第一请求。此时可在缓存模块上与第1个请求存储单元对应的区域中预留出该第一请求对应的第一响应的存储位置,因此,可以使得第1个计数单元的计数结果加一。在检测到缓存模块输出一次来自第1个通道的第一响应时,该区域有一个响应存储位置被释放,可以使得第1个计数单元的计数结果减一。
通过这种方式,可以准确记录缓存模块上与每个请求存储单元对应的区域的已用存储空间。
在响应输出系统的第二种示例性实现方式中,请求管理模块可以是先入先出的存储器,只要完成上述根据接收到的第二编号得到第二请求,并使该第二请求在请求管理模块前次输出的第二请求被缓存模块响应后输出的功能即可,在此不再对其结构以及具体实现方式进行赘述。
图7示出根据本公开实施例的缓存模块的结构和工作方式的示意图。
如图7所示,在一种可能的实现方式中,所述缓存模块包括N个区域,第n个区域与所述第n个请求存储单元对应,每个区域包括读写控制器以及缓存队列,每个区域的缓存队列包括多个条目,每个条目对应一个第四标识,所述第四标识具备无效和有效两种状态;
在所述第n个请求存储单元对应的K个通道包括第m个通道时,所述第n个请求存储单元还用于,接收包括所述第m个通道的编号的第一请求,输出写指针申请到与所述第n个请求存储单元对应的所述第n个区域,该写指针申请包括所述第m个通道的编号,该写指针申请在所述第一存储器前次输出的写指针申请被所述缓存模块响应后输出;m≤M,m和M是正整数;
在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的读写控制器用于,响应于来自所述第n个请求存储单元的写指针申请,将所述缓存队列中优先级最高的未分配条目的地址分配给所述第m个通道;
在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的缓存队列用于,接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,将存入所述第一响应的条目的第四标识变更为有效状态。
举例来说,在响应输出系统的第二种示例性实现方式中,缓存模块可包括N个区域,N个区域与N个请求存储单元一一对应,也即,第n个区域与第n个请求存储单元对应。其中,N个区域可以用于接收和输出第一响应。第n个区域与第n个请求存储单元对应的K个通道相对应,即第n个区域用于接收第n个请求存储单元对应的K个通道发出的第一响应。例如,在图7的示例中,在M=4、N=2、K=M/N=2时,第1个区域与第1个请求存储单元对应的2个通道T1-T2相对应,第2个区域与第2个请求存储单元对应的2个通道T3-T4相对应。在此情况下,第1个存储单元的编号D1也可以是第1个区域的编号,第2个存储单元的编号D2也可以是第2个区域的编号。
每个区域包括读写控制器以及缓存队列,每个区域的缓存队列包括多个条目,第一响应可存储在条目中,即每个缓存队列允许同时存储多个第一响应。每个条目可对应一个第四标识,第四标识具备无效和有效两种状态,例如有效状态可以是“1”,无效状态可以是“0”。在存入第一响应到某一条目后,该条目的第四标识可变更为有效状态。相应地,在该条目存储的第一响应被读出时,该条目的第四标识可变更为无效状态。
每个请求存储单元用于在接收到第一请求时发出写指针申请到该请求存储单元对应的区域,写指针申请用于申请一个条目来等待存储目标模块针对该第一请求发出的第一响应。例如,在图7的示例中,第1个请求存储单元依次接收包括通道T1的编号的第一请求Q1和包括通道T2的编号的第一请求Q2,先输出第1个写指针申请到与第1个请求存储单元对应的第1个区域,该第1个写指针申请包括通道T1的编号,该第1个写指针申请在第一存储器前次输出的写指针申请被缓存模块响应后输出。再输出第2个写指针申请到与第1个请求存储单元对应的第1个区域,该第2个写指针申请包括通道T2的编号,该第2个写指针申请在第1个写指针申请被缓存模块响应后输出。也就是说,每个请求存储单元输出的写指针申请所包括的编号的顺序,和其接收的第一请求所包括的编号的顺序可以相同。比如,第1个请求存储单元输出的写指针申请中,所包括的编号的顺序可以是T1-T2,与接收的第一请求所包括的编号的顺序T1-T2相同。同理,第2个请求存储单元输出的写指针申请中,所包括的编号的顺序可以是T3-T4,与接收的第一请求所包括的编号的顺序T3-T4相同。
每个读写控制器用于响应于来自对应的请求存储单元的写指针申请,将缓存队列中优先级最高的未分配条目的地址分配给写指针申请所包括的编号对应的通道。每个缓存队列用于接收该缓存队列所属区域所对应的任意通道输出的第一响应,从所属区域的读写控制器处获取分配给发出该第一响应的通道的条目的地址,将第一响应存储至该地址处,将存入第一响应的条目的第四标识变更为有效状态。在此情况下,对个单个区域而言,已分配的条目可存储的第一响应所包括的编号的顺序,与第一存储器输出的写指针申请中,与该区域所对应的通道编号的顺序可以相同。
例如,在图7的示例中,第1个请求存储单元依次发送了2个写指针申请,其中第1个写指针申请包括编号T1,第2个写指针申请包括编号T2。第1个区域中的读写控制器依次响应第1个写指针和第2个写指针申请,先将缓存队列中优先级最高的未分配条目(优先级最高的可例如是第1个条目)的地址分配给第1个写指针申请所包括的编号对应的通道T1,再将缓存队列中优先级最高的未分配条目(在第1个条目已经被分配给通道T1的情况下,优先级最高的可例如是第2个条目)的地址分配给第2个写指针申请所包括的编号对应的通道T2。
目标模块(未示出)将第一响应X1-X3-X2-X4依次输出到缓存模块。第1个区域中的缓存队列接收第1个区域所对应的通道T1输出的第一响应X1和通道T2输出的第一响应X2,从第1个区域的读写控制器处获取分配给发出第一响应X1的通道T1的第1个条目的地址,将第一响应X1存储至该地址处的条目(第1个条目),将第1个条目的第四标识变更为有效状态。从第1个区域的读写控制器处获取分配给发出第一响应X2的通道T2的第2个条目的地址,将第一响应X2存储至该地址处的条目(第2个条目),将第2个条目的第四标识变更为有效状态。
在此情况下,对于第1个区域,可存储的第一响应所包括的编号的顺序可以是T1-T2,也即,无论第一响应X1(包括编号T1)和第一响应X2(包括编号T2)哪个先收到,第一响应X1存储位置均在先,第一响应X2存储位置均在后。第一响应X3(包括编号T3)和第一响应X4(包括编号T4)可以采用相同的方法存储至第2个区域,在此不再对存储第一响应X3和第一响应X4的具体方式进行描述。
通过这种方式,使得第一响应存储至任意区域时,在该区域中的所有第一响应的存储顺序,与该区域对应的请求存储单元输出的第一请求的顺序相一致。
图8示出本公开实施例的读写控制器的示例性结构及其实现条目地址的分配的示例性方式的示意图。
如图8所示,在一种可能的实现方式中,第n个区域的读写控制器包括写指针计数单元和K个写指针存储单元,第k个写指针存储单元与所述第n个区域对应的第k个通道对应,k≤K,k是正整数,所述第n个区域的写指针计数单元用于:
响应于来自所述第n个请求存储单元的写指针申请,将当前记录的计数结果存储至所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元,在所述当前记录的计数结果的计数结果小于第三阈值时,该写指针计数单元的计数结果加一,在所述当前记录的计数结果等于所述第三阈值时,该写指针计数单元的计数结果清零;
所述第n个区域的缓存队列中与所述当前记录的计数结果对应的条目的地址,作为分配给所述第m个通道的条目的地址。
举例来说,在响应输出系统的第二种示例性实现方式中,每个区域的读写控制器可包括写指针计数单元和K个写指针存储单元,K个写指针存储单元与该区域对应的K个通道一一对应,即第k个写指针存储单元与所述第n个区域对应的第k个通道以及所述第n个区域的缓存队列的第k个条目对应。
写指针计数单元用于根据自身的计数结果为自身所对应的通道提供写指针,使得缓存模块后续接收到来自相应通道的第一响应时,能够按照提供给该通道的写指针(写指针计数单元的计数结果)完成第一响应的存储。相应地,写指针存储单元用于存储提供给各通道的写指针(写指针计数单元的计数结果)。
因此,第n个区域的写指针计数单元的工作方式可以是:响应于来自第m个请求存储单元的写指针申请,将当前记录的计数结果存储至K个写指针存储单元中、与第m个通道对应的写指针存储单元。第n个区域的缓存队列中与当前记录的计数结果对应的条目的地址,作为分配给第m个通道的条目的地址。
可以预设写指针计数单元的计数结果的最大值,例如设置为第三阈值,第三阈值可以是缓存队列允许同时存储的条目个数的最大值。在当前记录的计数结果的计数结果小于第三阈值时,该写指针计数单元的计数结果加一,在当前记录的计数结果等于第三阈值时,该写指针计数单元的计数结果清零。
如图8所示,以第1个区域中的写指针计数单元、第1个写指针存储单元、第2个写指针存储单元为例,第1个区域和第1个请求存储单元对应,第1个写指针存储单元和通道T1对应,第2个写指针计数单元和通道T2对应。第1个请求存储单元依次发送了2个写指针申请,其中第1个写指针申请包括编号T1,第2个写指针申请包括编号T2。因此,第1个区域中的写指针计数单元先响应包括编号T1的第1个写指针申请,后响应包括编号T2的第2个写指针申请。
响应于来自第1个请求存储单元的第1个写指针申请,第1个区域中的写指针计数单元将当前记录的计数结果(例如1)存储至第1个写指针存储单元。第1个区域的缓存队列中与当前记录的计数结果对应的条目(例如第1个条目)的地址,作为分配给第1个通道的条目的地址。假设第三阈值等于2,由于1小于第三阈值,因此当前记录的计数结果加一,变为2。
之后,响应于来自第1个请求存储单元的第2个写指针申请,第1个区域中的写指针计数单元将当前记录的计数结果(例如2)存储至第1个写指针存储单元。第1个区域的缓存队列中与当前记录的计数结果对应的条目(例如第2个条目)的地址,作为分配给第2个通道的条目的地址。由于2等于第三阈值,因此当前记录的计数结果清零,变为0。
通过这种方式实现条目地址的分配时,可保证条目地址的分配顺序与该区域对应的请求存储单元输出的第一请求的顺序相一致。
下面介绍本公开实施例的缓存队列存储第一响应的示例性方式。
在一种可能的实现方式中,所述接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,包括:
接收所述第m个通道输出的所述第一响应,并从所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元处获取其存储的计数结果;
将所述第一响应存储至获取的计数结果对应的条目。
举例来说,由于在响应输出系统的第二种示例性实现方式中,是以写指针计数单元记录的计数结果作为写指针,并且通过写指针存储单元完成了通道的写指针的分配,因此,对于缓存队列,在接收到第一响应时,根据发出第一响应的通道的编号直接找到对应的写指针存储单元,从该写指针存储单元处获取其存储的计数结果,将第一响应写入该计数结果对应的条目处即可。
通过这种方式,使得第一响应存储至缓存模块时在单个区域内的存储顺序可控制。
图9示出本公开实施例的读写控制器的示例性结构及工作方式的示意图。下面结合图9介绍本公开实施例的缓存模块输出第一响应的示例性方式。
如图9所示,在一种可能的实现方式中,所述第n个区域的读写控制器还包括读指针计数单元,所述读指针计数单元的计数结果指示所述第n个区域的缓存队列中优先级最高的已分配条目,所述预设条件为所述第二请求包括的第二编号是第n个区域的编号、且存储的第一响应包括的编号是第n个区域的缓存队列中优先级最高的已分配条目对应的通道的编号,
在满足所述预设条件时,所述第n个区域的缓存队列还用于,在所述第二请求包括的第二编号是所述第n个区域的编号时,输出读指针申请到所述第n个区域的读指针计数单元;
所述读指针计数单元用于,响应于所述读指针申请,将所述读指针计数单元当前记录的计数结果输出至所述第n个区域的缓存队列,输出的计数结果小于第四阈值时,该读指针计数单元的计数结果加一,输出的计数结果等于所述第四阈值时,该读指针计数单元的计数结果清零;
所述第n个区域的缓存队列还用于,在接收的计数结果对应的条目的第四标识为有效状态时,输出该条目存储的第一响应,将该条目的第四标识变更为无效状态。
举例来说,在响应输出系统的第二种示例性实现方式中,预设条件可为第二请求包括的第二编号是第n个区域的编号、且存储的第一响应包括的编号是第n个区域的缓存队列中优先级最高的已分配条目对应的通道的编号。其中,存储的第一响应包括的编号也即发出该第一响应的通道的编号,第n个区域的缓存队列中优先级最高的已分配条目指第n个区域下一次输出的第一响应的位置处的条目,可以根据读指针计数单元的计数结果确定。借助于读指针计数单元,使得缓存队列需对第二请求作出响应时,能够按照提供给该缓存队列的读指针(读指针计数单元的计数结果)完成第一响应的输出。
相应地,第n个区域的缓存队列还用于在第二请求包括的第二编号是第n个区域的编号时,输出读指针申请到第n个区域的读指针计数单元。响应于读指针申请,第n个区域的读指针计数单元将当前记录的计数结果输出至第n个区域的缓存队列。
可以预设读指针计数单元的计数结果的最大值,例如设置为第四阈值,第四阈值可以等于第三阈值。输出的计数结果小于第四阈值时,该读指针计数单元的计数结果加一,输出的计数结果等于第四阈值时,该读指针计数单元的计数结果清零。
第n个区域的缓存队列接收到的计数结果作为读指针,表示待响应的第二请求对应的第一响应可从该计数结果对应的条目处输出。由上文描述可知,每个条目可对应一个第四标识,第四标识具备无效和有效两种状态,在存入第一响应到某一条目后,该条目的第四标识可变更为有效状态。相应地,在该条目存储的第一响应被读出时,该条目的第四标识可变更为无效状态。因此,在接收的计数结果对应的条目的第四标识为有效状态时,表示该条目处当前存储的第一响应确实是该第二请求对应的。第n个区域的缓存队列可以输出该条目存储的第一响应,将该条目的第四标识变更为无效状态。如果接收的计数结果对应的条目的第四标识为无效状态,表示该第二请求对应的第一响应尚未接收到,第n个区域的缓存队列可以暂不输出第一响应,该第二请求得不到响应会一直在缓存模块和请求管理模块之间的总线上保持,请求管理模块不会输出新的第二请求;直到该第二请求对应的第一响应被接收并存储至该条目,该条目的第四标识变更为有效状态,第n个区域的缓存队列再输出该条目存储的第一响应,完成对该第二请求的响应,从而保证缓存模块输出的第一响应的顺序。
如图9所示,假设请求管理模块依次发出第二请求Q11、Q12、Q13、Q14,分别对应于输入到响应输出系统的第一请求Q1、Q2、Q3、Q4。其中,第二请求Q11和Q12发送给缓存模块的第1个区域,第二请求Q13和Q14发送给缓存模块的第2个区域。第1个区域和第1个请求存储单元对应,第1个区域的缓存队列中第1个条目、第2个条目都是已分配条目,第1个条目优先级最高,其中第1个条目和通道T1对应,第2个条目和通道T2对应。第2个区域的缓存队列中第3个条目、第4个条目都是已分配条目,第3个条目优先级最高,其中第3个条目和通道T3对应,第4个条目和通道T4对应。
缓存模块先接收到第二请求Q11。在第二请求Q11包括的第二编号Z1是第1个区域的编号D1(编号D1也是第1个请求存储单元的编号)、且存储的第一响应X1包括第1个区域对应的通道T1的编号时,满足预设条件。根据第二请求Q11,第1个区域的缓存队列输出读指针申请到第1个区域的读指针计数单元。响应于读指针申请,第1个区域的读指针计数单元将当前记录的计数结果(例如1)输出至第1个区域的缓存队列。假设第四阈值等于2,由于1小于第四阈值,因此当前记录的计数结果加一,变为2。第1个区域的缓存队列根据接收的计数结果(例如1)确定该计数结果对应的条目(即第1个条目)的第四标识是否有效。假设第四标识为有效状态,此时缓存队列输出该条目(即第1个条目)存储的第一响应X1,完成对第二请求Q11的响应,并将该条目(即第1个条目)的第四标识变更为无效状态。此时第1个区域的缓存队列中,优先级最高的已分配条目变更为第2个条目。
由于第二请求Q11已经被响应,因此请求管理模块再发出第二请求Q12。缓存模块再接收到第二请求Q12。在第二请求Q12包括的第二编号Z2是第1个区域的编号D1、且存储的第一响应X2包括第1个区域对应的通道T2的编号时,满足预设条件。根据第二请求Q12,第1个区域的缓存队列输出读指针申请到第1个区域的读指针计数单元。响应于读指针申请,第1个区域的读指针计数单元将当前记录的计数结果(例如2)输出至第1个区域的缓存队列。假设第四阈值等于2,由于2等于第四阈值,因此当前记录的计数结果清零。第1个区域的缓存队列根据接收的计数结果(例如2)确定该计数结果对应的条目(即第2个条目)的第四标识是否有效。假设第四标识为有效状态,此时缓存队列输出该条目(即第2个条目)存储的第一响应X2,完成对第二请求Q12的响应,并将该条目(即第2个条目)的第四标识变更为无效状态。此时缓存模块依次输出了第一响应X1和第一响应X2。
由于第二请求Q12已经被响应,因此请求管理模块再发出第二请求Q13。缓存模块再接收到第二请求Q13。在第二请求Q13包括的第二编号Z2是第2个区域的编号D2(编号D2也是第2个请求存储单元的编号)、且存储的第一响应X3包括第2个区域对应的通道T3的编号时,满足预设条件。根据第二请求Q13,第2个区域的缓存队列输出读指针申请到第2个区域的读指针计数单元。响应于读指针申请,第2个区域的读指针计数单元将当前记录的计数结果(例如3)输出至第2个区域的缓存队列。假设第四阈值等于4,由于3小于第四阈值,因此当前记录的计数结果加一,变为4。第2个区域的缓存队列根据接收的计数结果(例如3)确定该计数结果对应的条目(即第3个条目)的第四标识是否有效。假设第四标识为有效状态,此时缓存队列输出该条目(即第3个条目)存储的第一响应,将该条目(即第3个条目)的第四标识变更为无效状态。此时第2个区域的缓存队列中,优先级最高的已分配条目变更为第4个条目。缓存模块依次输出了第一响应X1、第一响应X2、第一响应X3。
由于第二请求Q13已经被响应,因此请求管理模块再发出第二请求Q14。缓存模块再接收到第二请求Q14。在第二请求Q14包括的第二编号Z2是第2个区域的编号D2、且存储的第一响应X4包括第2个区域对应的通道T4的编号时,满足预设条件。根据第二请求Q14,第2个区域的缓存队列输出读指针申请到第2个区域的读指针计数单元。响应于读指针申请,第2个区域的读指针计数单元将当前记录的计数结果(例如4)输出至第2个区域的缓存队列。假设第四阈值等于4,由于4等于第四阈值,因此当前记录的计数结果清零。第2个区域的缓存队列根据接收的计数结果(例如4)确定该计数结果对应的条目(即第4个条目)的第四标识是否有效。假设第四标识为有效状态,此时缓存队列输出该条目(即第4个条目)存储的第一响应,将该条目(即第4个条目)的第四标识变更为无效状态。此时缓存模块依次输出了第一响应X1、X2、X3、X4。
通过这种方式,使得从缓存模块输出的第一响应所包括的编号顺序和响应输出系统接收的第一请求所包括的编号顺序可以相同。
在一种可能的实现方式中,在响应输出系统的第二种示例性实现方式中,也可以包括第一计数器,第一计数器的用途与响应输出系统的第二种示例性实现方式中的用途可以相同,在此不再赘述。
在一种可能的实现方式中,所述目标模块包括M个通道,所述缓存模块包括X个区域,所述第一存储器包括X个请求存储单元、X个计数单元和轮询仲裁单元,第x个请求存储单元对应于第x个计数单元和所述M个通道中的M/X个通道,X≤M,x≤X,x、X、M/X是正整数,M个通道中的每个通道对应于一个请求存储单元,不同的请求存储单元对应的通道不同;
所述第x个请求存储单元用于,以一定顺序接收并存储包括该第x个请求存储单元对应的M/X个通道的编号的第一请求,根据该第一请求所包括的编号和地址,输出所述第二编号到所述请求管理模块,从所述第x个计数单元处获取计数结果;
所述第x个计数单元用于,记录所述缓存模块上与所述第x个请求存储单元对应的区域的已用存储空间,在所述第x个请求存储单元获取所述计数结果时,发送所述计数结果到所述第x个请求存储单元,与所述第x个请求存储单元对应的区域用于存储来自所述第x个请求存储单元对应的M/X个通道的第一响应;
所述第x个请求存储单元还用于,在接收到的计数结果小于或等于第一阈值时,输出所述第x个通道的编号到所述轮询仲裁单元;
所述轮询仲裁单元用于,在接收到所述第x个通道的编号时检测所述第x个请求存储单元的优先级,根据所述优先级确定所述第x个请求存储单元存储的第一请求的输出顺序,以所述输出顺序输出所述第一请求到所述目标模块。
其中,将X看作上文所述的M、将x看作上文所述的m时,即为响应输出系统的第一种示例性实现方式。此时X个区域可看作上文所述的M组寄存器。将X看作上文所述的N、将x看作上文所述的n、将M/X看作上文所述的K时,即为响应输出系统的第二种示例性实现方式。此时X个区域可看作上文所述的N个区域。
本公开还提出一种响应输出方法。图10示出根据本公开实施例的响应输出方法的示例性流程图。
如图10所示,在一种可能的实现方式中,所述方法应用于响应输出系统,所述系统包括第一存储器、请求管理模块、缓存模块、第二存储器,所述方法包括:步骤S61,所述第一存储器根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,所述第一编号是目标模块上的通道的编号,所述地址是所述目标模块上、所述第一编号指示的通道的地址,所述第二编号与所述第一编号对应;步骤S62,所述请求管理模块根据接收到的第二编号得到第二请求,该第二请求包括所述第二编号,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;步骤S63,所述缓存模块接收并存储来自所述目标模块的第一响应,在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器;步骤S64,所述第二存储器接收并存储来自所述缓存模块的第一响应,以先入先出方式将所述第一响应输出到发起所述第一请求的对象处;其中,所述第一请求是所述第一存储器接收的第i个第一请求,所述第二编号是所述第一存储器输出的第i个第二编号,所述第二请求是所述请求管理模块输出的第i个第二请求,所述第一响应是所述第二存储器输出的第i个第一响应,i是正整数。
在一种可能的实现方式中,所述目标模块包括M个通道,所述第一存储器包括M个请求存储单元、M个计数单元和轮询仲裁单元,第m个请求存储单元对应于第m个计数单元和第m个通道,m≤M,m和M是正整数,所述第一存储器根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,包括:
所述第m个请求存储单元接收并存储包括所述第m个通道的编号的第一请求,根据该第一请求所包括的编号,输出所述第二编号到所述请求管理模块,从所述第m个计数单元处获取计数结果;
所述第m个计数单元记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,在所述第m个请求存储单元获取所述计数结果时,发送所述计数结果到所述第m个请求存储单元;
所述第m个请求存储单元在获取到的计数结果小于第一阈值时,输出所述第m个通道的编号到所述轮询仲裁单元;
所述轮询仲裁单元在接收到所述第m个通道的编号时检测所述第m个请求存储单元的优先级,根据所述优先级确定所述第m个请求存储单元存储的第一请求的输出顺序,控制所述M个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
在一种可能的实现方式中,所述记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,包括:
检测到所述目标模块接收一次包括所述第m个通道的编号的第一请求,所述第m个计数单元的计数结果加一;
检测到所述缓存模块输出一次来自所述第m个通道的第一响应,所述第m个计数单元的计数结果减一。
在一种可能的实现方式中,所述请求管理模块包括第三存储器和第一标识存储单元,所述第一标识存储单元存储M个第一标识,第m个第一标识对应所述第m个通道,所述第二编号与所述第一编号相同,所述第二编号由所述第三存储器接收,所述第二请求还包括与第二编号对应的第一标识,所述第一标识指示从所述缓存模块中输出所述第一响应的位置;所述请求管理模块根据接收到的第二编号得到第二请求,该第二请求包括所述第二编号,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出,包括:
所述第三存储器根据所述第二编号从所述第一标识存储单元处获取与该第二编号对应的第一标识,并将所述第二编号以及所述第一标识作为所述第二请求存储,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;
所述第一标识存储单元在所述第三存储器获取所述第一标识时,发送所述第一标识到所述第三存储器。
在一种可能的实现方式中,所述缓存模块包括M组寄存器和第二标识存储单元,所述第二标识存储单元存储M个第二标识,所述第二标识指示所述第一响应存入所述缓存模块中的位置,第m个第二标识对应所述第m组寄存器以及所述第m个通道;每组寄存器包括两个寄存器,每个寄存器对应一个第三标识,所述第三标识具备无效和有效两种状态;所述缓存模块接收并存储来自所述目标模块的第一响应,包括:
所述第m组寄存器接收来自所述目标模块的第m个通道的第一响应,并从所述第二标识存储单元处获取所述第m个第二标识,根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,将存入所述第一响应的寄存器的第三标识变更为有效状态;
所述第二标识存储单元在所述第m组寄存器获取所述第m个第二标识时,发送所述第m个第二标识到所述第m组寄存器。
在一种可能的实现方式中,所述第二标识具备第一状态和第二状态,所述根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,包括:
在所述第m个第二标识为第一状态时,将所述第一响应存储在所述第m组寄存器中的第一个寄存器;
在所述第m个第二标识为第二状态时,将所述第一响应存储在所述第m组寄存器中的第二个寄存器;
所述第二标识存储单元在发送所述第m个第二标识到所述第m组寄存器后,变更该第m个第二标识的状态。
在一种可能的实现方式中,所述第一标识具备第三状态和第四状态,所述预设条件为所述第二请求包括第m个通道的编号时,存储的第一响应也包括第m个通道的编号,所述在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器,包括:
在满足所述预设条件且所述第二请求包括第m个第一标识时,所述第m组寄存器在所述第二请求包括的第一标识为第三状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第一个寄存器;在所述第二请求包括的第一标识为第四状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第二个寄存器;在该寄存器的第三标识为有效状态时,输出该寄存器存储的所述第一响应;将该寄存器的第三标识变更为无效状态;
所述第一标识存储单元在发送第一标识到所述第三存储器后,变更该第一标识的状态。
在一种可能的实现方式中,所述目标模块包括M个通道,所述第一存储器包括N个请求存储单元、N个计数单元和轮询仲裁单元,第n个请求存储单元对应于第n个计数单元以及所述M个通道中的K个通道,N<M,n≤N,K=M/N,N、n、K是正整数,M个通道中的每个通道对应于一个请求存储单元,不同的请求存储单元对应的通道不同;所述第一存储器根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,包括:
所述第n个请求存储单元接收并存储包括该第n个请求存储单元对应的K个通道的编号的第一请求,根据接收的第一请求所包括的编号和地址,输出第二编号到所述请求管理模块,所述第二编号是所述第n个请求存储单元的编号;
所述第n个计数单元记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,在所述第n个请求存储单元获取计数结果时,发送所述计数结果到所述第n个请求存储单元,与所述第n个请求存储单元对应的区域用于存储来自所述第n个请求存储单元对应的K个通道的第一响应;
所述第n个请求存储单元从所述第n个计数单元处获取所述计数结果,在获取到的计数结果小于第二阈值时,输出所述第n个请求存储单元的编号到所述轮询仲裁单元;
所述轮询仲裁单元在接收到所述第n个请求存储单元的编号时检测所述第n个请求存储单元的优先级,根据所述优先级确定所述第n个请求存储单元存储的第一请求的输出顺序,控制所述N个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
在一种可能的实现方式中,所述记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,包括:
检测到所述目标模块接收一次包括所述第n个请求存储单元对应的任意通道的编号的第一请求,所述第n个计数单元的计数结果加一;
检测到所述缓存模块输出一次来自所述第n个请求存储单元对应的任意通道的第一响应,所述第n个计数单元的计数结果减一。
在一种可能的实现方式中,所述缓存模块包括N个区域,第n个区域与所述第n个请求存储单元对应,每个区域包括读写控制器以及缓存队列,每个区域的缓存队列包括多个条目,每个条目对应一个第四标识,所述第四标识具备无效和有效两种状态;所述方法还包括:
在所述第n个请求存储单元对应的K个通道包括第m个通道时,所述第n个请求存储单元接收包括所述第m个通道的编号的第一请求,输出写指针申请到与所述第n个请求存储单元对应的所述第n个区域,该写指针申请包括所述第m个通道的编号,该写指针申请在所述第一存储器前次输出的写指针申请被所述缓存模块响应后输出;m≤M,m和M是正整数;
在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的读写控制器响应于来自所述第n个请求存储单元的写指针申请,将所述缓存队列中优先级最高的未分配条目的地址分配给所述第m个通道;
所述缓存模块接收并存储来自所述目标模块的第一响应,包括:
在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的缓存队列接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,将存入所述第一响应的条目的第四标识变更为有效状态。
在一种可能的实现方式中,第n个区域的读写控制器包括写指针计数单元和K个写指针存储单元,第k个写指针存储单元与所述第n个区域对应的第k个通道对应,k≤K,k是正整数,所述第n个区域的读写控制器响应于来自所述第n个请求存储单元的写指针申请,将所述缓存队列中优先级最高的未分配条目的地址分配给所述第m个通道,包括:
所述第n个区域的写指针计数单元响应于来自所述第m个请求存储单元的写指针申请,将当前记录的计数结果存储至所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元,在所述当前记录的计数结果的计数结果小于第三阈值时,该写指针计数单元的计数结果加一,在所述当前记录的计数结果等于所述第三阈值时,该写指针计数单元的计数结果清零;
所述第n个区域的缓存队列中与所述当前记录的计数结果对应的条目的地址,作为分配给所述第m个通道的条目的地址。
在一种可能的实现方式中,所述接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,包括:
接收所述第m个通道输出的所述第一响应,并从所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元处获取其存储的计数结果;
将所述第一响应存储至获取的计数结果对应的条目。
在一种可能的实现方式中,所述第n个区域的读写控制器还包括读指针计数单元,所述读指针计数单元的计数结果指示所述第n个区域的缓存队列中优先级最高的已分配条目,所述预设条件为所述第二请求包括的第二编号是第n个区域的编号、且存储的第一响应包括的编号是第n个区域的缓存队列中优先级最高的已分配条目对应的通道的编号,所述在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器,包括:
在满足所述预设条件时,所述第n个区域的缓存队列在所述第二请求包括的第二编号是所述第n个区域的编号时,输出读指针申请到所述第n个区域的读指针计数单元;
所述读指针计数单元响应于所述读指针申请,将所述读指针计数单元当前记录的计数结果输出至所述第n个区域的缓存队列,输出的计数结果小于第四阈值时,该读指针计数单元的计数结果加一,输出的计数结果等于所述第四阈值时,该读指针计数单元的计数结果清零;
所述第n个区域的缓存队列在接收的计数结果对应的条目的第四标识为有效状态时,输出该条目存储的第一响应,将该条目的第四标识变更为无效状态。
在一种可能的实现方式中,所述系统还包括第一计数器,所述第一计数器用于记录所述第二存储器的已用存储空间,所述方法还包括:
检测到所述目标模块接收一次第一请求,所述第一计数器的计数结果加一;
检测到所述第二存储器输出一次第一响应,所述第一计数器的计数结果减一;
在自身的计数结果达到第五阈值时,所述第一计数器输出第一反馈信号到所述第一存储器,所述第一反馈信号指示所述第一存储器暂停所述第一请求的输出。
本公开还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
电子设备的示例可以参见图1中的第一设备,电子设备可以是服务器,也可以是其他终端设备,只要能够与目标模块进行数据交换即可,本公开对于电子设备的具体类型不作限制。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图11示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图11,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958(I/O接口)。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (18)

1.一种响应输出系统,其特征在于,所述系统包括第一存储器、请求管理模块、缓存模块、第二存储器,
所述第一存储器用于,根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,所述第一编号是目标模块上的通道的编号,所述地址是所述目标模块上、所述第一编号指示的通道的地址,所述第二编号与所述第一编号对应;
所述请求管理模块用于,根据接收到的第二编号得到第二请求,该第二请求包括所述第二编号,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;
所述缓存模块用于,接收并存储来自所述目标模块的第一响应,在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器;
所述第二存储器用于,接收并存储来自所述缓存模块的第一响应,以先入先出方式将所述第一响应输出到发起所述第一请求的对象处;
其中,所述第一请求是所述第一存储器接收的第i个第一请求,所述第二编号是所述第一存储器输出的第i个第二编号,所述第二请求是所述请求管理模块输出的第i个第二请求,所述第一响应是所述第二存储器输出的第i个第一响应,i是正整数;
其中,所述第一请求是读取所述目标模块上的通道存储的数据的请求,或者将数据写入所述目标模块的通道的请求。
2.根据权利要求1所述的系统,其特征在于,所述目标模块包括M个通道,所述第一存储器包括M个请求存储单元、M个计数单元和轮询仲裁单元,第m个请求存储单元对应于第m个计数单元和第m个通道,m≤M,m和M是正整数,
所述第m个请求存储单元用于,接收并存储包括所述第m个通道的编号的第一请求,根据该第一请求所包括的编号,输出所述第二编号到所述请求管理模块,从所述第m个计数单元处获取计数结果;
所述第m个计数单元用于,记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,在所述第m个请求存储单元获取所述计数结果时,发送所述计数结果到所述第m个请求存储单元;
所述第m个请求存储单元还用于,在获取到的计数结果小于第一阈值时,输出所述第m个通道的编号到所述轮询仲裁单元;
所述轮询仲裁单元用于,在接收到所述第m个通道的编号时检测所述第m个请求存储单元的优先级,根据所述优先级确定所述第m个请求存储单元存储的第一请求的输出顺序,控制所述M个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
3.根据权利要求2所述的系统,其特征在于,所述记录所述缓存模块上、用于存储来自所述第m个通道的第一响应的一组寄存器的已用存储空间,包括:
检测到所述目标模块接收一次包括所述第m个通道的编号的第一请求,所述第m个计数单元的计数结果加一;
检测到所述缓存模块输出一次来自所述第m个通道的第一响应,所述第m个计数单元的计数结果减一。
4.根据权利要求2或3所述的系统,其特征在于,所述请求管理模块包括第三存储器和第一标识存储单元,所述第一标识存储单元存储M个第一标识,第m个第一标识对应所述第m个通道,所述第二编号与所述第一编号相同,所述第二编号由所述第三存储器接收,所述第二请求还包括与第二编号对应的第一标识,所述第一标识指示从所述缓存模块中输出所述第一响应的位置;
所述第三存储器用于,根据所述第二编号从所述第一标识存储单元处获取与该第二编号对应的第一标识,并将所述第二编号以及所述第一标识作为所述第二请求存储,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;
所述第一标识存储单元用于,在所述第三存储器获取所述第一标识时,发送所述第一标识到所述第三存储器。
5.根据权利要求4所述的系统,其特征在于,所述缓存模块包括M组寄存器和第二标识存储单元,所述第二标识存储单元存储M个第二标识,所述第二标识指示所述第一响应存入所述缓存模块中的位置,第m个第二标识对应第m组寄存器以及所述第m个通道;
每组寄存器包括两个寄存器,每个寄存器对应一个第三标识,所述第三标识具备无效和有效两种状态;
所述第m组寄存器用于,接收来自所述目标模块的第m个通道的第一响应,并从所述第二标识存储单元处获取所述第m个第二标识,根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,将存入所述第一响应的寄存器的第三标识变更为有效状态;
所述第二标识存储单元用于,在所述第m组寄存器获取所述第m个第二标识时,发送所述第m个第二标识到所述第m组寄存器。
6.根据权利要求5所述的系统,其特征在于,所述第二标识具备第一状态和第二状态,所述根据所述第m个第二标识将所述第一响应存入所述第m组寄存器中的一个寄存器,包括:
在所述第m个第二标识为第一状态时,将所述第一响应存储在所述第m组寄存器中的第一个寄存器;
在所述第m个第二标识为第二状态时,将所述第一响应存储在所述第m组寄存器中的第二个寄存器;
所述第二标识存储单元还用于,在发送所述第m个第二标识到所述第m组寄存器后,变更该第m个第二标识的状态。
7.根据权利要求6所述的系统,其特征在于,所述第一标识具备第三状态和第四状态,所述预设条件为所述第二请求包括第m个通道的编号时,存储的第一响应也包括第m个通道的编号,
在满足所述预设条件且所述第二请求包括第m个第一标识时,所述第m组寄存器还用于,在所述第二请求包括的第一标识为第三状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第一个寄存器;在所述第二请求包括的第一标识为第四状态时,确定输出所述第一响应的寄存器是所述第m组寄存器中的第二个寄存器;在该寄存器的第三标识为有效状态时,输出该寄存器存储的所述第一响应;将该寄存器的第三标识变更为无效状态;
所述第一标识存储单元还用于,在发送第一标识到所述第三存储器后,变更该第一标识的状态。
8.根据权利要求1所述的系统,其特征在于,所述目标模块包括M个通道,所述第一存储器包括N个请求存储单元、N个计数单元和轮询仲裁单元,第n个请求存储单元对应于第n个计数单元以及所述M个通道中的K个通道,N<M,n≤N,K=M/N,N、n、K是正整数,M个通道中的每个通道对应于一个请求存储单元,不同的请求存储单元对应的通道不同;
所述第n个请求存储单元用于,接收并存储包括该第n个请求存储单元对应的K个通道的编号的第一请求,根据接收的第一请求所包括的编号和地址,输出第二编号到所述请求管理模块,所述第二编号是所述第n个请求存储单元的编号;
所述第n个计数单元用于,记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,在所述第n个请求存储单元获取计数结果时,发送所述计数结果到所述第n个请求存储单元,与所述第n个请求存储单元对应的区域用于存储来自所述第n个请求存储单元对应的K个通道的第一响应;
所述第n个请求存储单元还用于,从所述第n个计数单元处获取所述计数结果,在获取到的计数结果小于第二阈值时,输出所述第n个请求存储单元的编号到所述轮询仲裁单元;
所述轮询仲裁单元用于,在接收到所述第n个请求存储单元的编号时检测所述第n个请求存储单元的优先级,根据所述优先级确定所述第n个请求存储单元存储的第一请求的输出顺序,控制所述N个请求存储单元以所述输出顺序输出所述第一请求到所述目标模块。
9.根据权利要求8所述的系统,其特征在于,所述记录所述缓存模块上与所述第n个请求存储单元对应的区域的已用存储空间,包括:
检测到所述目标模块接收一次包括所述第n个请求存储单元对应的任意通道的编号的第一请求,所述第n个计数单元的计数结果加一;
检测到所述缓存模块输出一次来自所述第n个请求存储单元对应的任意通道的第一响应,所述第n个计数单元的计数结果减一。
10.根据权利要求8或9所述的系统,其特征在于,所述缓存模块包括N个区域,第n个区域与所述第n个请求存储单元对应,每个区域包括读写控制器以及缓存队列,每个区域的缓存队列包括多个条目,每个条目对应一个第四标识,所述第四标识具备无效和有效两种状态;
在所述第n个请求存储单元对应的K个通道包括第m个通道时,所述第n个请求存储单元还用于,接收包括所述第m个通道的编号的第一请求,输出写指针申请到与所述第n个请求存储单元对应的所述第n个区域,该写指针申请包括所述第m个通道的编号,该写指针申请在所述第一存储器前次输出的写指针申请被所述缓存模块响应后输出;m≤M,m和M是正整数;
在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的读写控制器用于,响应于来自所述第n个请求存储单元的写指针申请,将所述缓存队列中优先级最高的未分配条目的地址分配给所述第m个通道;
在所述第n个请求存储单元对应的K个通道包括所述第m个通道时,所述第n个区域的缓存队列用于,接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,将存入所述第一响应的条目的第四标识变更为有效状态。
11.根据权利要求10所述的系统,其特征在于,第n个区域的读写控制器包括写指针计数单元和K个写指针存储单元,第k个写指针存储单元与所述第n个区域对应的第k个通道对应,k≤K,k是正整数,所述第n个区域的写指针计数单元用于:
响应于来自所述第n个请求存储单元的写指针申请,将当前记录的计数结果存储至所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元,在所述当前记录的计数结果的计数结果小于第三阈值时,该写指针计数单元的计数结果加一,在所述当前记录的计数结果等于所述第三阈值时,该写指针计数单元的计数结果清零;
所述第n个区域的缓存队列中与所述当前记录的计数结果对应的条目的地址,作为分配给所述第m个通道的条目的地址。
12.根据权利要求11所述的系统,其特征在于,所述接收所述第m个通道输出的所述第一响应,从所述第n个区域的读写控制器处获取分配给该第m个通道的条目的地址,将所述第一响应存储至所述地址处,包括:
接收所述第m个通道输出的所述第一响应,并从所述K个写指针存储单元中、与所述第m个通道对应的写指针存储单元处获取其存储的计数结果;
将所述第一响应存储至获取的计数结果对应的条目。
13.根据权利要求12所述的系统,其特征在于,所述第n个区域的读写控制器还包括读指针计数单元,所述读指针计数单元的计数结果指示所述第n个区域的缓存队列中优先级最高的已分配条目,所述预设条件为所述第二请求包括的第二编号是第n个区域的编号、且存储的第一响应包括的编号是第n个区域的缓存队列中优先级最高的已分配条目对应的通道的编号,
在满足所述预设条件时,所述第n个区域的缓存队列还用于,在所述第二请求包括的第二编号是所述第n个区域的编号时,输出读指针申请到所述第n个区域的读指针计数单元;
所述读指针计数单元用于,响应于所述读指针申请,将所述读指针计数单元当前记录的计数结果输出至所述第n个区域的缓存队列,输出的计数结果小于第四阈值时,该读指针计数单元的计数结果加一,输出的计数结果等于所述第四阈值时,该读指针计数单元的计数结果清零;
所述第n个区域的缓存队列还用于,在接收的计数结果对应的条目的第四标识为有效状态时,输出该条目存储的第一响应,将该条目的第四标识变更为无效状态。
14.根据权利要求1所述的系统,其特征在于,所述系统还包括第一计数器,所述第一计数器用于记录所述第二存储器的已用存储空间,
检测到所述目标模块接收一次第一请求,所述第一计数器的计数结果加一;
检测到所述第二存储器输出一次第一响应,所述第一计数器的计数结果减一;
在自身的计数结果达到第五阈值时,所述第一计数器输出第一反馈信号到所述第一存储器,所述第一反馈信号指示所述第一存储器暂停所述第一请求的输出。
15.一种响应输出方法,其特征在于,所述方法应用于响应输出系统,所述系统包括第一存储器、请求管理模块、缓存模块、第二存储器,所述方法包括:
所述第一存储器根据接收的第一请求所包括的第一编号和地址,输出所述第一请求到所述地址并输出第二编号到所述请求管理模块,所述第一编号是目标模块上的通道的编号,所述地址是所述目标模块上、所述第一编号指示的通道的地址,所述第二编号与所述第一编号对应;
所述请求管理模块根据接收到的第二编号得到第二请求,该第二请求包括所述第二编号,该第二请求在所述请求管理模块前次输出的第二请求被所述缓存模块响应后输出;
所述缓存模块接收并存储来自所述目标模块的第一响应,在所述请求管理模块输出的第二请求与存储的第一响应满足预设条件时,响应于该第二请求,输出所述第一响应到所述第二存储器;
所述第二存储器接收并存储来自所述缓存模块的第一响应,以先入先出方式将所述第一响应输出到发起所述第一请求的对象处;
其中,所述第一请求是所述第一存储器接收的第i个第一请求,所述第二编号是所述第一存储器输出的第i个第二编号,所述第二请求是所述请求管理模块输出的第i个第二请求,所述第一响应是所述第二存储器输出的第i个第一响应,i是正整数;
其中,所述第一请求是读取所述目标模块上的通道存储的数据的请求,或者将数据写入所述目标模块的通道的请求。
16.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令时实现权利要求15所述的方法。
17.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求15所述的方法。
18.一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,其特征在于,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行权利要求15所述的方法。
CN202310806646.8A 2023-07-03 2023-07-03 响应输出系统、方法、电子设备、存储介质及程序产品 Active CN116521095B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310806646.8A CN116521095B (zh) 2023-07-03 2023-07-03 响应输出系统、方法、电子设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310806646.8A CN116521095B (zh) 2023-07-03 2023-07-03 响应输出系统、方法、电子设备、存储介质及程序产品

Publications (2)

Publication Number Publication Date
CN116521095A CN116521095A (zh) 2023-08-01
CN116521095B true CN116521095B (zh) 2023-09-08

Family

ID=87390724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310806646.8A Active CN116521095B (zh) 2023-07-03 2023-07-03 响应输出系统、方法、电子设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN116521095B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4458316A (en) * 1981-03-06 1984-07-03 International Business Machines Corporation Queuing commands in a peripheral data storage system
US5131081A (en) * 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
CN101907986A (zh) * 2010-08-30 2010-12-08 威盛电子股份有限公司 访问多个存储器的数据处理设备和数据处理方法
US8051227B1 (en) * 2010-05-10 2011-11-01 Telefonaktiebolaget L M Ericsson (Publ) Programmable queue structures for multiprocessors
CN108958649A (zh) * 2018-05-17 2018-12-07 天津飞腾信息技术有限公司 一种用于存储系统的安全隔离方法及装置
CN111611185A (zh) * 2020-06-18 2020-09-01 中国人民解放军国防科技大学 一种多pcie端口的msi中断过滤装置
CN112199309A (zh) * 2020-10-10 2021-01-08 北京泽石科技有限公司 基于dma引擎的数据读取方法、装置和数据传输系统
CN112363763A (zh) * 2020-11-13 2021-02-12 山东云海国创云计算装备产业创新中心有限公司 数据处理方法、装置及计算机可读存储介质
CN114297100A (zh) * 2021-12-28 2022-04-08 摩尔线程智能科技(北京)有限责任公司 用于缓存的写策略调整方法、缓存装置及计算设备
CN114356223A (zh) * 2021-12-16 2022-04-15 深圳云天励飞技术股份有限公司 存储器的访问方法及装置、芯片、电子设备
CN114691571A (zh) * 2020-12-28 2022-07-01 上海寒武纪信息科技有限公司 数据处理方法、重排序缓存器及互联设备
CN116010109A (zh) * 2023-02-23 2023-04-25 摩尔线程智能科技(北京)有限责任公司 缓存资源分配方法、装置、电子设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934046B2 (en) * 2008-07-02 2011-04-26 International Business Machines Corporation Access table lookup for bus bridge

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4458316A (en) * 1981-03-06 1984-07-03 International Business Machines Corporation Queuing commands in a peripheral data storage system
US5131081A (en) * 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
US8051227B1 (en) * 2010-05-10 2011-11-01 Telefonaktiebolaget L M Ericsson (Publ) Programmable queue structures for multiprocessors
CN101907986A (zh) * 2010-08-30 2010-12-08 威盛电子股份有限公司 访问多个存储器的数据处理设备和数据处理方法
CN108958649A (zh) * 2018-05-17 2018-12-07 天津飞腾信息技术有限公司 一种用于存储系统的安全隔离方法及装置
CN111611185A (zh) * 2020-06-18 2020-09-01 中国人民解放军国防科技大学 一种多pcie端口的msi中断过滤装置
CN112199309A (zh) * 2020-10-10 2021-01-08 北京泽石科技有限公司 基于dma引擎的数据读取方法、装置和数据传输系统
CN112363763A (zh) * 2020-11-13 2021-02-12 山东云海国创云计算装备产业创新中心有限公司 数据处理方法、装置及计算机可读存储介质
CN114691571A (zh) * 2020-12-28 2022-07-01 上海寒武纪信息科技有限公司 数据处理方法、重排序缓存器及互联设备
CN114356223A (zh) * 2021-12-16 2022-04-15 深圳云天励飞技术股份有限公司 存储器的访问方法及装置、芯片、电子设备
CN114297100A (zh) * 2021-12-28 2022-04-08 摩尔线程智能科技(北京)有限责任公司 用于缓存的写策略调整方法、缓存装置及计算设备
CN116010109A (zh) * 2023-02-23 2023-04-25 摩尔线程智能科技(北京)有限责任公司 缓存资源分配方法、装置、电子设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
通用多通道高性能DMA控制器设计;梁科等;《天津大学学报》(第05期);全文 *

Also Published As

Publication number Publication date
CN116521095A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
US9432299B2 (en) System and method for ordering of data transferred over multiple channels
US11201836B2 (en) Method and device for managing stateful application on server
CN107704325B (zh) 用于进程间传输消息的方法和装置
CN111400212B (zh) 一种基于远程直接数据存取的传输方法、设备
EP3896964A1 (en) Data processing method, apparatus and device, and storage medium
US12019572B2 (en) Bridging module, data transmission system, and data transmission method
CN117640271B (zh) 数据广播装置及系统
CN116521095B (zh) 响应输出系统、方法、电子设备、存储介质及程序产品
JP6290761B2 (ja) データ転送制御システム、データ転送制御方法、及び、データ転送制御プログラム
CN107566543B (zh) 一种节点标识设置方法和装置
CN116303126B (zh) 缓存、数据的处理方法及电子设备
US11960427B2 (en) Bridging module, data transmission system, and data transmission method
CN111857546A (zh) 用于处理数据的方法、网络适配器和计算机程序产品
CN107085557A (zh) 直接存储器访问系统以及相关方法
US20150193201A1 (en) Flow control with buffer reclamation
CN116594570B (zh) 存储器访问电路及存储器访问方法、集成电路和电子设备
CN111865675B (zh) 容器的收发限速方法、装置及系统
JP7363344B2 (ja) メモリ制御装置、および制御方法
US11507441B2 (en) Asymmetric fulfillment of remote procedure calls by multi-core systems
CN118012798B (zh) 芯片间互联控制方法、装置和存储介质
CN117539636A (zh) 总线模块的内存管理方法、装置、电子设备和存储介质
CN118672950A (zh) 一种中断处理方法、设备、主机及系统
CN117176813A (zh) 一种处理业务请求的方法和装置
EP4054140A1 (en) Method for processing non-buffer data write request, and buffer and node
CN117472796A (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