CN116955251A - 一种基于重排序缓冲器的读请求处理方法及相关装置 - Google Patents

一种基于重排序缓冲器的读请求处理方法及相关装置 Download PDF

Info

Publication number
CN116955251A
CN116955251A CN202310328701.7A CN202310328701A CN116955251A CN 116955251 A CN116955251 A CN 116955251A CN 202310328701 A CN202310328701 A CN 202310328701A CN 116955251 A CN116955251 A CN 116955251A
Authority
CN
China
Prior art keywords
request
preset
buffer
bus
identifier
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.)
Pending
Application number
CN202310328701.7A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310328701.7A priority Critical patent/CN116955251A/zh
Publication of CN116955251A publication Critical patent/CN116955251A/zh
Pending legal-status Critical Current

Links

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

Abstract

本申请公开一种基于重排序缓冲器的读请求处理方法及相关装置,从多个预设设备发送的多个预设读请求中确定第一读请求,通过共享请求转换器将第一读请求转换为第一总线请求,该第一读请求携带多个预设设备中第一设备的第一设备标识。若多个用于向总线发送总线请求的预设请求标识中存在使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定空闲状态的第一请求标识;若基于第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,将第一缓冲地址对应第一请求标识。以第一请求标识向总线发送第一总线请求得到总线返回的携带第一请求标识的第一读数据;基于第一请求标识向第一缓冲地址写入第一读数据。

Description

一种基于重排序缓冲器的读请求处理方法及相关装置
技术领域
本申请涉及计算机技术领域,特别是涉及一种基于重排序缓冲器的读请求处理方法及相关装置。
背景技术
重排序缓冲器(reorder buffer,rob)在处理器中的应用十分广泛,通常用于将乱序的数据或指令重排序为有序的序列。处理器在读取多种源头数据进行处理时,通过总线发送多个读请求以读取多种源头数据,而读取数据的顺序和发送请求的顺序不一致,需要配置rob对读取的数据进行重排序。
相关技术中,处理器中多个主设备中每个主设备配置一个请求转换器和一个rob,请求转换器用于将主设备发送的读请求转换为总线识别的总线请求,通过向总线发送总线请求得到总线返回的读数据,rob用于写入总线返回的读数据进行重排序。
然而,上述方法针对多个主设备需要配置与多个主设备数量相同的多个请求转换器和多个rob,占用大量的处理器面积,导致处理器面积开销较大;且多个主设备配置的多个rob之间的缓冲地址资源相互独立,在应用时无法均衡导致rob的缓冲地址资源利用率低。
发明内容
为了解决上述技术问题,本申请提供了一种基于重排序缓冲器的读请求处理方法及相关装置,减少请求转换器和重排序缓冲器占用的处理器面积,以降低处理器面积开销,并最大化利用重排序缓冲器的缓冲地址资源,从而提高重排序缓冲器的缓冲地址资源利用率。
本申请实施例公开了如下技术方案:
一方面,本申请实施例提供一种基于重排序缓冲器的读请求处理方法,所述方法包括:
从多个预设设备发送的多个预设读请求中确定第一读请求;所述第一读请求携带所述多个预设设备中第一设备的第一设备标识;
通过共享请求转换器将所述第一读请求转换为总线识别的第一总线请求;
若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从所述多个预设请求标识中确定所述使用状态为所述空闲状态的第一请求标识;每个预设请求标识用于向所述总线发送总线请求;
若根据所述第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到所述使用状态为所述空闲状态的第一缓冲地址,确定所述第一缓冲地址对应所述第一请求标识;
根据所述第一请求标识向所述总线发送所述第一总线请求,获得所述总线返回的第一读数据;所述第一读数据携带所述第一请求标识;
根据所述第一请求标识向所述共享重排序缓冲器的所述第一缓冲地址写入所述第一读数据。
另一方面,本申请实施例提供一种基于重排序缓冲器的读请求处理器,所述处理器包括:多个预设设备、仲裁器、共享请求转换器、请求标识管理器、重排序缓冲器管理器、总线和共享重排序缓冲器;
所述仲裁器,用于从多个预设设备发送的多个预设读请求中确定第一读请求;所述第一读请求携带所述多个预设设备中第一设备的第一设备标识;
所述共享请求转换器,用于将所述第一读请求转换为总线识别的第一总线请求;
所述请求标识管理器,用于若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从所述多个预设请求标识中确定所述使用状态为所述空闲状态的第一请求标识;每个预设请求标识用于向所述总线发送总线请求;
所述重排序缓冲器管理器,用于若根据所述第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到所述使用状态为所述空闲状态的第一缓冲地址,确定所述第一缓冲地址对应所述第一请求标识;
所述共享请求转换器,还用于根据所述第一请求标识向所述总线发送所述第一总线请求;
所述共享重排序缓冲器,用于获得所述总线返回的第一读数据,并根据所述第一请求标识向所述第一缓冲地址写入所述第一读数据;所述第一读数据携带所述第一请求标识。
另一方面,本申请实施例提供一种计算机设备,所述计算机设备包括处理器以及存储器:
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器用于根据所述计算机程序中的指令执行前述任一方面所述的方法。
由上述技术方案可以看出,首先,从多个预设设备发送的多个预设读请求中确定第一读请求,通过共享请求转换器将第一读请求转换为总线识别的第一总线请求,其中,第一读请求携带多个预设设备中第一设备的第一设备标识;该方式针对多个预设设备仅配置共享请求转换器,无需每个预设设备配置一个请求转换器,减少请求转换器占用的处理器面积,以降低处理器面积开销。然后,若多个用于向总线发送总线请求的预设请求标识中存在使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;若基于第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,将第一缓冲地址对应第一请求标识;该方式针对多个预设设备仅配置共享重排序缓冲器,无需每个预设设备配置一个重排序缓冲器,减少重排序缓冲器占用的处理器面积,以降低处理器面积开销。最后,基于第一请求标识向总线发送第一总线请求,该总线返回的携带第一请求标识的第一读数据;以便基于第一请求标识向共享重排序缓冲器的第一缓冲地址写入第一读数据;该方式使得多个预设设备中每个预设设备均可使用共享重排序缓冲器的多个缓冲地址资源,以最大化利用缓冲地址资源,从而提高重排序缓冲器的缓冲地址资源利用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术成员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术提供的一种基于重排序缓冲器的读请求处理方法的示意图;
图2为本申请实施例提供的一种基于重排序缓冲器的读请求处理方法的系统架构示意图;
图3为本申请实施例提供的一种基于重排序缓冲器的读请求处理方法的流程图;
图4为本申请实施例提供的一种多个预设请求标识的使用状态、以及从多个预设请求标识中确定使用状态为空闲状态的第一请求标识的示意图;
图5为本申请实施例提供的另一种多个预设请求标识的使用状态的示意图;
图6为本申请实施例提供的一种重排序缓冲器的多个预设缓冲地址的使用状态、以及从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址的示意图;
图7为本申请实施例提供的另一种重排序缓冲器的多个预设缓冲地址的使用状态的示意图;
图8为本申请实施例提供的一种根据第一请求标识和第一记录数据,确定第一请求标识对应的第一缓冲地址的示意图;
图9为本申请实施例提供的一种第二记录数据的示意图;
图10为本申请实施例提供的一种基于重排序缓冲器的读请求处理方法的整体架构示意图;
图11为本申请实施例提供的一种基于重排序缓冲器的读请求处理装置的结构图;
图12为本申请实施例提供的一种服务器的结构图;
图13为本申请实施例提供的一种终端的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
现阶段,处理器通过总线发送多个读请求以读取多种源头数据,不同读请求访问不同读地址,不同读地址的访问响应时间不同,存在后发送的读请求的访问响应时间小于先发送的读请求的访问响应时间,通过配置rob对读取的数据进行重排序,以确保读取数据的顺序和发送请求的顺序一致。在处理器中部署多个主设备的基础上,相关技术中,每个主设备配置一个请求转换器和一个rob,通过请求转换器将主设备发送的读请求转换为总线识别的总线请求,通过向总线发送总线请求得到总线返回的读数据,通过rob写入总线返回的读数据进行重排序。
作为一种示例,参见图1,图1为相关技术提供的一种基于重排序缓冲器的读请求处理方法的示意图。其中,处理器中部署“主设备1”、“主设备2”和“主设备3”,“主设备1”配置“请求转换器1”和“rob1”,“主设备2”配置“请求转换器2”和“rob2”,“主设备”3配置“请求转换器3”和“rob3”。在“主设备1”发送“主设备1_请求1”之后,通过“请求转换器1”将“主设备1_请求1”转换为总线识别的“总线请求1”,在“主设备2”发送“主设备2_请求1”之后,通过“请求转换器2”将“主设备2_请求1”转换为总线识别的“总线请求2”,在“主设备3”发送“主设备3_请求1”之后,通过“请求转换器3”将“主设备3_请求1”转换为总线识别的“总线请求3”。通过仲裁器对“总线请求1”、“总线请求2”和“总线请求3”进行调度,向总线发送“总线请求1”、“总线请求2”和“总线请求3”,得到总线返回的“主设备1_读数据1”、“主设备2_读数据2”和“主设备3_读数据3”,通过“rob1”写入“主设备1_读数据1”进行重排序,通过“rob2”写入“主设备2_读数据2”进行重排序,通过“rob3”写入“主设备3_读数据3”进行重排序。
但是,经过研究发现,上述方法针对多个主设备需要配置与多个主设备数量相同的多个请求转换器和多个rob,占用大量的处理器面积,导致处理器面积开销较大;且多个主设备配置的多个rob之间的缓冲地址资源相互独立,在应用时无法均衡导致rob的缓冲地址资源利用率低。即,在上述示例的基础上,针对3个主设备需要配置3个请求转换器和3个rob,占用大量的处理器面积,导致处理器面积开销较大;且3个主设备配置的3个rob之间的缓冲地址资源相互独立,在应用时无法均衡导致rob的缓冲地址资源利用率低。
本申请实施例提供一种基于重排序缓冲器的读请求处理方法及相关装置,从多个预设设备发送的多个预设读请求中确定第一读请求,通过共享请求转换器将第一读请求转换为总线识别的第一总线请求,其中,第一读请求携带多个预设设备中第一设备的第一设备标识;该方式针对多个预设设备仅配置共享请求转换器,无需每个预设设备配置一个请求转换器,减少请求转换器占用的处理器面积,以降低处理器面积开销。若多个用于向总线发送总线请求的预设请求标识中存在使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;若基于第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,将第一缓冲地址对应第一请求标识;该方式针对多个预设设备仅配置共享重排序缓冲器,无需每个预设设备配置一个重排序缓冲器,减少重排序缓冲器占用的处理器面积,以降低处理器面积开销。基于第一请求标识向总线发送第一总线请求,该总线返回的携带第一请求标识的第一读数据;以便基于第一请求标识向共享重排序缓冲器的第一缓冲地址写入第一读数据;该方式使得多个预设设备中每个预设设备均可使用共享重排序缓冲器的多个缓冲地址资源,以最大化利用缓冲地址资源,从而提高重排序缓冲器的缓冲地址资源利用率。
接下来,将对基于重排序缓冲器的读请求处理方法的系统架构进行介绍。参见图2,图2为本申请实施例提供的一种基于重排序缓冲器的读请求处理方法的系统架构示意图,该系统架构中包括处理器200,该处理器200中部署多个预设设备201、仲裁器202、共享请求转换器203、请求标识管理器204、重排序缓冲器管理器205、总线206和共享重排序缓冲器207。
其中,处理器200可以是基于重排序缓冲器的读请求处理设备,例如,终端或服务器。终端包括但不限于智能手机、平板电脑、笔记本电脑、台式计算机、智能语音交互设备、智能家电、车载终端、飞行器、扩展现实设备(增强现实设备、虚拟现实设备、混合现实设备)等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。例如终端以及服务器可以通过网络连接,该网络可以是有线或无线网络。
处理器200通过仲裁器202从多个预设设备201发送的多个预设读请求中确定第一读请求;第一读请求携带多个预设设备201中第一设备的第一设备标识。作为一种示例,多个预设设备201包括“主设备1”、“主设备2”和“主设备3”,多个预设读请求包括“主设备1”发送的“主设备1_请求1”、“主设备2”发送的“主设备2_请求1”和“设备3”发送的“主设备3_请求1”;处理器200可以通过仲裁器202从“主设备1”、“主设备2”和“主设备3”发送的“主设备1_请求1”、“主设备2_请求1”和“主设备3_请求1”中确定第一读请求为“主设备2_请求1”,该“主设备2_请求1”携带“主设备2”的“主设备2_标识”。
处理器200通过共享请求转换器203将第一读请求转换为总线206识别的第一总线请求。作为一种示例,在上述示例的基础上,处理器200可以通过共享请求转换器203将“主设备2_请求1”转换为总线206识别的第一总线请求,即,“总线请求1”。
若多个预设请求标识包括使用状态为空闲状态的预设请求标识,处理器200通过请求标识管理器204从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;每个预设请求标识用于向总线206发送总线请求。作为一种示例,请求标识管理器204中多个预设请求标识包括用于向总线206发送总线请求的“请求标识0”、“请求标识1”、……和“请求标识m”,m为正整数;在上述示例的基础上,在“请求标识0”、“请求标识1”、……和“请求标识m”包括使用状态为空闲状态的预设请求标识时,处理器200通过请求标识管理器204可以从“请求标识0”、“请求标识1”、……和“请求标识m”中确定使用状态为空闲状态的第一请求标识为“请求标识5”。
若处理器200通过重排序缓冲器管理器205根据第一设备标识从共享重排序缓冲器207的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,确定第一缓冲地址对应第一请求标识。作为一种示例,共享重排序缓冲器207的多个预设缓冲地址包括“缓冲地址0”、“缓冲地址1”、……和“缓冲地址n”,n为正整数;在上述示例的基础上,在处理器200通过重排序缓冲器管理器205基于“主设备2_标识”从共享重排序缓冲器207的“缓冲地址0”、“缓冲地址1”、……和“缓冲地址n”中查找到使用状态为空闲状态的第一缓冲地址为“缓冲地址6”时,可以确定“缓冲地址6”对应“请求标识5”。
处理器200通过共享请求转换器203根据第一请求标识向总线206发送第一总线请求,通过共享重排序缓冲器207获得总线206返回的第一读数据;第一读数据携带第一请求标识。作为一种示例,在上述示例的基础上,处理器200可以通过共享请求转换器203基于“请求标识5”向总线206发送“总线请求1”,以通过共享重排序缓冲器207得到总线206返回的第一读数据为“主设备2_读数据1”,该“主设备2_读数据1”携带“请求标识5”。
处理器200通过共享重排序缓冲器207根据第一请求标识向第一缓冲地址写入第一读数据。作为一种示例,在上述示例的基础上,处理器200可以通过共享重排序缓冲器207基于“请求标识5”向“缓冲地址6”写入“主设备2_读数据1”。
也就是说,该方法针对多个预设设备仅配置共享请求转换器,无需每个预设设备配置一个请求转换器,减少请求转换器占用的处理器面积,以降低处理器面积开销;针对多个预设设备仅配置共享重排序缓冲器,无需每个预设设备配置一个重排序缓冲器,减少重排序缓冲器占用的处理器面积,以降低处理器面积开销。且该方法使得多个预设设备中每个预设设备均可使用共享重排序缓冲器的多个缓冲地址资源,以最大化利用缓冲地址资源,从而提高重排序缓冲器的缓冲地址资源利用率。
在上述示例的基础上,该方法针对“主设备1”、“主设备2”和“主设备3”仅配置共享请求转换器和共享重排序缓冲器,无需“主设备1”“主设备1”配置“请求转换器1”和“rob1”、“主设备2”配置“请求转换器2”和“rob2”、以及“主设备”3配置“请求转换器3”和“rob3”,减少请求转换器和重排序缓冲器占用的处理器面积,以降低处理器面积开销。且该方法使得“主设备1”、“主设备2”和“主设备3”中每个预设设备均可使用共享重排序缓冲器的多个缓冲地址资源,以最大化利用缓冲地址资源,从而提高重排序缓冲器的缓冲地址资源利用率。
本申请实施例可应用于各种场景,包括但不限于可应用于云技术场景、人工智能场景、智慧交通场景、辅助驾驶场景、地图场景和车载场景等。
接下来,结合附图对本申请实施例提供的基于重排序缓冲器的读请求处理方法进行详细介绍。参见图3,图3为本申请实施例提供的一种基于重排序缓冲器的读请求处理方法的流程图,方法包括:
S301:从多个预设设备发送的多个预设读请求中确定第一读请求;第一读请求携带多个预设设备中第一设备的第一设备标识。
由于相关技术中,处理器中每个主设备配置一个请求转换器,即,针对多个主设备需要配置与多个主设备数量相同的多个请求转换器,占用大量的处理器面积,导致处理器面积开销较大。因此,本申请实施例中,为了减少请求转换器占用的处理器面积,以降低处理器面积开销,无需每个预设设备配置一个请求转换器,可以针对多个主设备仅配置一个共享请求转换器,该共享请求转换器用于将每个预设设备发送的每个预设读请求转换为总线识别的总线请求。
基于此,在处理器中多个预设设备发送多个预设读请求的情况下,为了避免共享请求转换器并发接收多个预设读请求,影响共享请求转换器的转换性能,首先可以在多个预设读请求中确定当前需要处理的一个预设读请求作为第一读请求。基于此,将发送第一读请求的预设设备作为第一设备,第一读请求需要携带第一设备的设备标识,即,第一设备标识。
在S301具体实现时,实际上是按照一定调度策略对多个预设设备发送的多个预设读请求进行调度,以确定当前需要处理的一个预设读请求作为第一读请求。考虑到多个预设设备的优先级可能相同或不同,在多个预设设备的优先级不同时,可以按照优先级调度策略对多个预设设备发送的多个预设读请求进行调度,即,按照多个预设设备的优先级调度多个预设设备发送的多个预设读请求,将最高优先级的预设设备发送的一个预设读请求调度为当前需要处理的一个预设读请求以确定第一读请求。在多个预设设备的优先级相同时,可以按照轮询调度策略对多个预设设备发送的多个预设读请求进行调度,即,对多个预设读请求进行轮询调度,将当前轮询到的一个预设读请求调度为当前需要处理的一个预设读请求以确定第一读请求。因此,本申请提供了一种可能的实现方式,S301例如可以包括如下S3011或S3012:
S3011:若多个预设设备的优先级不同,根据多个预设设备的优先级对多个预设读请求进行调度,将最高优先级的预设设备发送的一个预设读请求确定为第一读请求。
S3012:若多个预设设备的优先级相同,对多个预设读请求进行轮询调度,确定第一读请求。
其中,本申请提供了一种可能的实现方式,上述调度处理可以通过仲裁器执行。
作为一种示例,多个预设设备包括“主设备1”、“主设备2”和“主设备3”,多个预设读请求包括“主设备1”发送的“主设备1_请求1”、“主设备2”发送的“主设备2_请求1”和“设备3”发送的“主设备3_请求1”。在“主设备2”的优先级>“主设备1”的优先级>“主设备3”的优先级时,通过仲裁器根据“主设备1”、“主设备2”和“主设备3”的优先级对“主设备1_请求1”、“主设备2_请求1”和“主设备3_请求1”进行调度,将最高优先级的“主设备2”发送的“主设备2_请求1”确定为第一读请求,该“主设备2_请求1”携带“主设备2”的“主设备2_标识”。
在“主设备1”的优先级=“主设备2”的优先级=“主设备3”的优先级时,通过仲裁器对“主设备1_请求1”、“主设备2_请求1”和“主设备3_请求1”进行轮询调度,将当前轮询到的“主设备2_请求1”确定为第一读请求,该“主设备2_请求1”携带“主设备2”的“主设备2_标识”。
S302:通过共享请求转换器将第一读请求转换为总线识别的第一总线请求。
本申请实施例中,在执行S301从多个预设设备发送的多个预设读请求中确定第一读请求之后,由于第一读请求并不能直接被总线识别;因此,还需要通过针对多个预设设备配置的一个共享请求转换器,将第一读请求转换为能够直接被总线识别的第一总线请求。
作为一种示例,在上述示例的基础上,通过共享请求转换器将“主设备2_请求1”转换为能够直接被总线识别的第一总线请求,即,“总线请求1”。
S303:若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;每个预设请求标识用于向总线发送总线请求。
本申请实施例中,在执行S302将第一读请求转换为总线识别的第一总线请求之后,需要向总线发送第一总线请求以得到总线返回的第一读数据并写入重排序缓冲器。由于相关技术中,处理器中每个主设备配置一个重排序缓冲器,即,针对多个主设备需要配置与多个主设备数量相同的多个重排序缓冲器,占用大量的处理器面积,导致处理器面积开销较大;因此,本申请实施例中,为了减少重排序缓冲器占用的处理器面积,以降低处理器面积开销,无需每个预设设备配置一个重排序缓冲器,可以针对多个主设备仅配置一个共享重排序缓冲器,该重排序缓冲器用于写入总线返回的每个读数据进行重排序。
上述向总线发送第一总线请求不仅需要从用于向总线发送总线请求的多个预设请求标识中查找到用于向总线发送第一总线请求的预设请求标识,而且需要从重排序缓冲器的多个预设缓冲地址中查找到用于写入第一读数据的预设缓冲地址;则是否可以向总线发送第一总线请求,还需要判断多个预设请求标识的使用状态是否均处于占用状态,以及多个预设缓冲地址的使用状态是否均处于占用状态。其中,考虑到总线接收总线请求的并发数量限制因素,多个预设请求标识的数量不能超过总线接收的总线请求的最大并发数量;即,多个预设请求标识的数量小于或等于总线接收的总线请求的最大并发数量。
基于此,在执行S302将第一读请求转换为总线识别的第一总线请求之后,首先需要判断多个预设请求标识的使用状态是否均处于占用状态,只有在多个预设请求标识的使用状态并非均处于占用状态,即,多个预设请求标识包括使用状态为空闲状态的预设请求标识时,才能从多个预设请求标识中确定一个使用状态为空闲状态的预设请求标识,作为用于向总线发送第一读请求的第一请求标识。
在S303具体实现时,可以将多个预设请求标识的使用状态进行“与”计算,以确定多个预设请求标识的使用状态是否均处于占用状态,即,确定多个预设请求标识是否包括使用状态为空闲状态的预设请求标识。在多个预设请求标识包括使用状态为空闲状态的预设请求标识的基础上,为了增加用于向总线发送第一读请求的第一请求标识的确定随机性,可以随机确定一个预设请求标识作为开始,依次对多个预设请求标识的使用状态进行检测,直至检测到第一个使用状态为空闲状态的预设请求标识作为第一请求标识。因此,本申请提供了一种可能的实现方式,S303中从多个预设请求标识中确定使用状态为空闲状态的第一请求标识的步骤,例如可以包括如下S3031-S3032:
S3031:从多个预设请求标识中随机确定一个预设请求标识为目标请求标识。
S3032:从目标请求标识开始按序检测多个预设请求标识的使用状态,将第一个使用状态为空闲状态的预设请求标识确定为第一请求标识。
其中,本申请提供了一种可能的实现方式,可以通过空闲状态检测器执行上述S3031-S3032,空闲状态检测器例如可以为前导零检测器。
作为一种示例,参见图4,图4为本申请实施例提供的一种多个预设请求标识的使用状态、以及从多个预设请求标识中确定使用状态为空闲状态的第一请求标识的示意图。请求标识管理器维护多个预设请求标识的使用状态表,多个预设请求标识包括用于发送总线请求的“请求标识0”、“请求标识1”、……和“请求标识m”,m为正整数。在上述示例的基础上,将“请求标识0”、“请求标识1”、……和“请求标识m”的使用状态进行“与”计算,确定“请求标识0”、“请求标识1”、……和“请求标识m”包括使用状态为空闲状态的预设请求标识时,通过空闲状态检测器从“请求标识0”、“请求标识1”、……和“请求标识m”中随机确定目标请求标识为“请求标识1”;通过空闲状态检测器从“请求标识1”开始按序检测“请求标识1”、……、“请求标识m”和“请求标识0”的使用状态,将第一个使用状态为空闲状态的“请求标识5”确定为第一请求标识。
此外,本申请实施例中,在多个预设请求标识的使用状态均处于占用状态,即,多个预设请求标识不包括使用状态为空闲状态的预设请求标识时,表示多个预设请求标识中暂时无空闲状态的、可被使用的、用于向总线发送第一总线请求的预设请求标识,则需要暂停向总线发送第一总线请求。因此,本申请提供了一种可能的实现方式,方法例如还可以包括S1:若多个预设请求标识不包括使用状态为空闲状态的预设请求标识,暂停向总线发送第一总线请求。
作为一种示例,参见图5,图5为本申请实施例提供的另一种多个预设请求标识的使用状态的示意图。请求标识管理器维护多个预设请求标识的使用状态表,多个预设请求标识包括用于发送总线请求的“请求标识0”、“请求标识1”、……和“请求标识m”,m为正整数。在上述示例的基础上,将“请求标识0”、“请求标识1”、……和“请求标识m”的使用状态进行“与”计算,确定“请求标识0”、“请求标识1”、……和“请求标识m”不包括使用状态为空闲状态的预设请求标识时,暂停向总线发送“总线请求1”。
S304:若根据第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,确定第一缓冲地址对应第一请求标识。
本申请实施例中,在执行S303从多个预设请求标识中确定使用状态为空闲状态的第一请求标识之后,进一步基于第一设备标识判断共享重排序缓冲器的多个预设缓冲地址的使用状态是否均处于占用状态,只有在多个预设缓冲地址的使用状态并非均处于占用状态,即,在多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址时,才能将第一缓冲地址对应第一请求标识;即,将第一缓冲地址作为用于写入第一读数据的预设缓冲地址。
在S304具体实现时,考虑到针对预设设备需要配置预设头指针和预设尾指针,以确定针对预设设备用于写入读数据的多个预设缓冲地址的地址检测范围,则多个预设设备对应与多个预设设备数量相同的多个预设头指针和多个预设尾指针;基于此,首先,需要基于第一设备的第一设备标识在多个预设头指针和多个预设尾指针中,确定第一设备对应的第一头指针和第一尾指针;然后,通过重排序缓冲器中第一尾指针指向的预设缓冲地址至第一头指针指向的预设缓冲地址,确定可能写入第一读数据的多个预设缓冲地址的地址检测范围;最后,从第一尾指针指向的预设缓冲地址开始,依次对前述地址检测范围内的多个预设缓冲地址的使用状态进行升序检测,将检测到的第一个使用状态为空闲状态的预设缓冲地址确定为第一缓冲地址。因此,本申请提供了一种可能的实现方式,S304例如可以包括如下S3041-S3043:
S3041:从多个预设设备对应的多个预设头指针和多个预设尾指针中,根据第一设备标识确定第一设备对应的第一头指针和第一尾指针。
其中,本申请提供了一种可能的实现方式,可以通过第一多路选择器执行上述S3041。
S3042:确定第一尾指针指向的预设缓冲地址至第一头指针指向的预设缓冲地址的地址检测范围。
S3043:升序检测地址检测范围内的多个预设缓冲地址的使用状态,将检测到的第一个使用状态为空闲状态的预设缓冲地址确定为第一缓冲地址。
其中,本申请提供了一种可能的实现方式,可以通过使用状态检测器执行上述S3042-S3043。
作为一种示例,参见图6,图6为本申请实施例提供的一种重排序缓冲器的多个预设缓冲地址的使用状态、以及从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址的示意图。重排序缓冲器管理器维护共享重排序缓冲器的多个预设缓冲地址的使用状态表,多个预设缓冲地址包括“缓冲地址0”、“缓冲地址1”、……和“缓冲地址n”,n为正整数;多个预设设备对应的多个预设头指针和多个预设尾指针包括“主设备1”对应的“主设备1_头指针”和“主设备1_尾指针”、“主设备2”对应的“主设备2_头指针”和“主设备2_尾指针”、以及“主设备3”对应的“主设备3_头指针”和“主设备3_尾指针”。
在上述示例的基础上,首先,通过第一多路选择器基于第一设备标识“主设备2_标识”从“主设备1_头指针”、“主设备1_尾指针”、“主设备2_头指针”、“主设备2_尾指针”、“主设备3_头指针”和“主设备3_尾指针”中,确定“主设备2”对应的第一头指针和第一尾指针为“主设备2_头指针”和“主设备2_尾指针”。然后,通过使用状态检测器将重排序缓冲器中“主设备2_尾指针”指向的预设缓冲地址至“主设备2_头指针”指向的预设缓冲地址确定为地址检测范围,即,“缓冲地址3”、“缓冲地址4”、……和“缓冲地址0”。最后,通过使用状态检测器从“缓冲地址3”开始,依次对“缓冲地址3”、“缓冲地址4”、……和“缓冲地址0”的使用状态进行升序检测,将检测到的第一个使用状态为空闲状态的“缓冲地址6”确定为第一缓冲地址,并确定“缓冲地址6”对应第一请求标识“请求标识5”。
此外,本申请实施例中,在共享重排序缓冲器的多个预设缓冲地址的使用状态均处于占用状态,即,基于第一设备标识从多个预设缓冲地址中查找不到第一缓冲地址时,表示多个预设缓冲地址中暂时无空闲状态的、可被使用的、用于写入第一读数据的预设缓冲地址,同样需要暂停向总线发送第一总线请求。因此,本申请提供了一种可能的实现方式,方法例如还可以包括S2:若根据第一设备标识从多个预设缓冲地址中查找不到第一缓冲地址,暂停向总线发送第一总线请求。
其中,参见S304的具体说明,在确定可能写入第一读数据的预设缓冲地址的地址检测范围基础上,从第一尾指针指向的预设缓冲地址开始,依次对地址检测范围内的多个预设缓冲地址的使用状态进行升序检测,在检测到地址检测范围内的多个预设缓冲地址的使用状态均为占用状态时,即可确定基于第一设备标识从多个预设缓冲地址中查找不到第一缓冲地址。因此,本申请提供了一种可能的实现方式,S2中根据第一设备标识从多个预设缓冲地址中查找不到第一缓冲地址的步骤例如可以包括如下S21-S23:
S21:从多个预设设备对应的多个预设头指针和多个预设尾指针中,根据第一设备标识确定第一设备对应的第一头指针和第一尾指针。
S22:确定第一尾指针指向的预设缓冲地址至第一头指针指向的预设缓冲地址的地址检测范围。
S23:升序检测地址检测范围内的多个预设缓冲地址的使用状态均为占用状态,确定查找不到第一缓冲地址。
作为一种示例,参见图7,图7为本申请实施例提供的另一种重排序缓冲器的多个预设缓冲地址的使用状态的示意图。相较于图6所示的内容而言,通过使用状态检测器从“缓冲地址3”开始,依次对“缓冲地址3”、“缓冲地址4”、……和“缓冲地址0”的使用状态进行升序检测,检测到的“缓冲地址3”、“缓冲地址4”、……和“缓冲地址0”的使用状态均为占用状态,确定查找不到第一缓冲地址,暂停向总线发送“总线请求1”。
S305:根据第一请求标识向总线发送第一总线请求,获得总线返回的第一读数据;第一读数据携带第一请求标识。
本申请实施例中,在执行S304基于第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址之后,表示不仅可以从用于向总线发送总线请求的多个预设请求标识中查找到用于向总线发送第一总线请求的第一请求标识,而且可以从重排序缓冲器的多个预设缓冲地址中查找到用于写入第一读数据的第一缓冲地址;此时,需要基于第一请求标识向总线发送第一总线请求以得到总线返回的第一读数据。其中,第一总线请求是第一请求标识转换得到的,该第一读数据还可以携带第一请求标识。
在S305具体实现时,首先需要将用于向总线发送第一总线请求的第一请求标识的使用状态由空闲状态更新为占用状态,并将用于写入第一读数据的第一缓冲地址的使用状态由空闲状态更新为占用状态,表示第一总线请求的发送需要占用第一请求标识,以及第一读数据的写入需要占用第一缓冲地址,从而基于第一请求标识向总线发送第一总线请求以得到总线返回的第一读数据。因此,本申请提供了一种可能的实现方式,S305例如可以包括如下S3051-S3053:
S3051:将第一请求标识的使用状态由空闲状态更新为占用状态。
S3052:将第一缓冲地址的使用状态由空闲状态更新为占用状态。
S3053:根据第一请求标识向总线发送第一总线请求,获得第一读数据。
作为一种示例,在上述示例的基础上,将第一请求标识“请求标识5”的使用状态由空闲状态更新为占用状态,将第一缓冲地址“缓冲地址6”的使用状态由空闲状态更新为占用状态,共享求转换器基于“请求标识5”向总线发送第一总线请求“总线请求1”,共享重排序缓冲器获得第一读数据为“主设备2_读数据1”,该“主设备2_读数据1”携带“请求标识5”。
S306:根据第一请求标识向共享重排序缓冲器的第一缓冲地址写入第一读数据。
本申请实施例中,在执行S305基于第一请求标识向总线发送第一总线请求得到总线返回的第一读数据之后,由于第一读数据携带第一请求标识,而第一请求标识对应用于写入第一读数据的第一缓冲地址,因此,向第一缓冲地址写入第一读数据,以便共享重排序缓冲器对第一读数据进行重排序。
此外,本申请实施例中,在从多个预设请求标识中确定用于向总线发送第一总线请求的第一请求标识、以及从共享重排序缓冲器的多个预设缓冲地址中查找到用于写入第一读数据的第一缓冲地址之后,还需要将第一请求标识和第一缓冲地址之间的对应关系记录到第一记录数据。基于此,在S306具体现实时,先基于第一读数据携带第一请求标识结合第一记录数据,确定第一请求标识对应的第一缓冲地址,再向共享重排序缓冲器的第一缓冲地址写入第一读数据。因此,本申请提供了一种可能的实现方式,在S303-S304之后,方法例如还可以包括S3:将第一请求标识和第一缓冲地址之间的对应关系记录在第一记录数据;对应地,S306例如可以包括如下S3061-S3062:
S3061:根据第一请求标识和第一记录数据,确定第一请求标识对应的第一缓冲地址。
其中,本申请提供了一种可能的实现方式,通过第二多路选择器执行上述S3061。
作为一种示例,参见图8,图8为本申请实施例提供的一种根据第一请求标识和第一记录数据,确定第一请求标识对应的第一缓冲地址的示意图。在上述示例的基础上,重排序缓冲器管理器将第一请求标识“请求标识5”和第一缓冲地址“缓冲地址6”之间的对应关系记录在第一记录数据中;通过第二多路选择器基于“请求标识5”在第一记录数据中确定“请求标识5”对应“缓冲地址6”。
S3062:向第一缓冲地址写入第一读数据。
作为一种示例,在上述示例的基础上,共享重排序缓冲器向第一缓冲地址“缓冲地址6”写入第一读数据“主设备2_读数据1”。
此外,本申请实施例中,考虑到多个预设请求标识中使用状态为占用状态的预设请求标识、以及共享重排序缓冲器的多个预设缓冲地址中使用状态为占用状态的预设缓冲地址在写入有效的读数据后,还需要及时由占用状态更新为空闲状态;则需要记录多个预设缓冲地址是否写入有效的读数据得到第二记录数据,在第二记录数据表示多个预设头指针中第二头指针指向的多个预设缓冲地址中第二缓冲地址写入有效的第二读数据时,表示使用状态为占用状态的第二缓冲地址写入有效的读数据,可以将第二缓冲地址的使用状态由占用状态更新为空闲状态,同时还需要将第二缓冲地址对应的多个预设请求标识中第二请求标识的使用状态由占用状态更新为空闲状态。因此,本申请提供了一种可能的实现方式,方法例如还可以包括如下S4-S6:
S4:记录多个预设缓冲地址是否写入有效的读数据,获得第二记录数据。
S5:若第二记录数据表示多个预设头指针中第二头指针指向的多个预设缓冲地址中第二缓冲地址写入有效的第二读数据,将第二缓冲地址的使用状态由占用状态更新为空闲状态。
S6:并将第二缓冲地址对应的多个预设请求标识中第二请求标识的使用状态由占用状态更新为空闲状态。
作为一种示例,参见图9,图9为本申请实施例提供的一种第二记录数据的示意图,重排序缓冲器管理器记录多个预设缓冲地址“缓冲地址0”、“缓冲地址1”、……和“缓冲地址n”是否写入有效的读数据得到第二记录数据;第二记录数据表示第二头指针“主设备1_头指针”指向的第二缓冲地址“缓冲地址0”写入有效的第二读数据,将“缓冲地址0”的使用状态由占用状态更新为空闲状态,请求标识管理器将“缓冲地址0”对应的“请求标识0”、“请求标识1”、……和“请求标识m”中第二请求标识的使用状态由占用状态更新为空闲状态。此外,其他的预设头指针“主设备2_头指针”和“主设备3_头指针”指向的预设缓冲地址还未写入有效的读数据,则“主设备2_头指针”和“主设备3_头指针”指向的预设缓冲地址的使用状态仍然为占用状态,且“主设备2_头指针”和“主设备3_头指针”指向的预设缓冲地址对应的预设请求标识的使用状态仍然为占用状态。
此外,本申请实施例中,在上述第二记录数据表示第二头指针指向的第二缓冲地址写入有效的第二读数据时,还需要将第二缓冲地址写入的第二读数据返回至对应的预设设备;由于第二头指针对应多个预设设备中第二设备,则可以向第二设备返回第二读数据。因此,本申请提供了一种可能的实现方式,方法例如还可以包括如下S7-S8:
S7:若第二记录数据表示第二头指针指向的第二缓冲地址写入有效的第二读数据,在多个预设设备中确定第二头指针对应的第二设备。
S8:向第二设备发送第二读数据。
其中,本申请提供了一种可能的实现方式,通过分路器执行上述S7-S8。
作为一种示例,在上述示例的基础上,第二记录数据表示第二头指针“主设备2_头指针”指向的第二缓冲地址“缓冲地址4”写入有效的第二读数据,分路器在多个预设设备“主设备1”、“主设备2”和“主设备3”中,确定“主设备2_头指针”对应的第二设备为“主设备2”,向“主设备2”发送第二读数据。
由上述技术方案可以看出,首先,从多个预设设备发送的多个预设读请求中确定第一读请求,通过共享请求转换器将第一读请求转换为总线识别的第一总线请求,其中,第一读请求携带多个预设设备中第一设备的第一设备标识;该方式针对多个预设设备仅配置共享请求转换器,无需每个预设设备配置一个请求转换器,减少请求转换器占用的处理器面积,以降低处理器面积开销。然后,若多个用于向总线发送总线请求的预设请求标识中存在使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;若基于第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,将第一缓冲地址对应第一请求标识;该方式针对多个预设设备仅配置共享重排序缓冲器,无需每个预设设备配置一个重排序缓冲器,减少重排序缓冲器占用的处理器面积,以降低处理器面积开销。最后,基于第一请求标识向总线发送第一总线请求,该总线返回的携带第一请求标识的第一读数据;以便基于第一请求标识向共享重排序缓冲器的第一缓冲地址写入第一读数据;该方式使得多个预设设备中每个预设设备均可使用共享重排序缓冲器的多个缓冲地址资源,以最大化利用缓冲地址资源,从而提高重排序缓冲器的缓冲地址资源利用率。
基于上述示例,参见图10,图10为本申请实施例提供的一种基于重排序缓冲器的读请求处理方法的整体架构示意图。其中,处理器针对“主设备1”、“主设备2”和“主设备3”仅配置一个共享请求转换器和一个共享重排序缓冲器,该共享请求转换器关联请求标识管理器,该共享重排序缓冲器关联重排序缓冲器管理器。
首先,通过仲裁器接收“主设备1”、“主设备2”和“主设备3”发送的多个预设读请求,从多个预设读请求中确定第一读请求,向共享请求转换器、请求标识管理器和重排序缓冲器管理器发送第一读请求;该第一读请求携带“主设备1”、“主设备2”和“主设备3”中第一设备的第一设备标识;共享请求转换器在接收第一读请求之后,将第一读请求转换为总线识别的第一总线请求。
然后,若请求标识管理器接收第一读请求之后,判断得到其维护的多个用于向总线发送总线请求的预设请求标识中存在使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识,并向共享请求转换器和重排序缓冲器管理器发送第一请求标识;若重排序缓冲器管理器接收第一读请求和第一请求标识之后,基于第一设备标识从其维护的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,将第一缓冲地址对应第一请求标识,并向共享请求转换器和共享重排序缓冲器发送第一缓冲地址。
最后,共享请求转换器在接收第一请求标识和第一缓冲地址之后,基于第一请求标识向总线发送第一总线请求,该总线返回的携带第一请求标识的第一读数据;共享重排序缓冲器接收第一读数据之后,基于第一请求标识向第一缓冲地址写入第一读数据。在上述实现方式将“主设备1”、“主设备2”和“主设备3”发送的多个预设读请求均向总线发送得到总线返回的多个读数据并写入共享重排序缓冲器后,分路器向“主设备1”、“主设备2”和“主设备3”发送共享重排序缓冲器写入的读数据。
需要说明的是,本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
接下来,基于图2对应实施例提供的基于重排序缓冲器的读请求处理方法,本申请实施例还提供一种基于重排序缓冲器的读请求处理器,参见图11,图11为本申请实施例提供的一种基于重排序缓冲器的读请求处理器的结构图,该基于重排序缓冲器的读请求处理器1100包括:多个预设设备1101、仲裁器1102、共享请求转换器1103、请求标识管理器1104、重排序缓冲器管理器1105、总线1106和共享重排序缓冲器1107;
仲裁器1102,用于从多个预设设备1101发送的多个预设读请求中确定第一读请求;第一读请求携带多个预设设备中第一设备的第一设备标识;
共享请求转换器1103,用于将第一读请求转换为总线1106识别的第一总线请求;
请求标识管理器1104,用于若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;每个预设请求标识用于向总线发送总线请求;
重排序缓冲器管理器1105,用于若根据第一设备标识从共享重排序缓冲器1107的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,确定第一缓冲地址对应第一请求标识;
共享请求转换器1103,还用于根据第一请求标识向总线1106发送第一总线请求;
共享重排序缓冲器1107,用于获得总线1106返回的第一读数据,并根据第一请求标识向第一缓冲地址写入第一读数据;第一读数据携带第一请求标识。
在一种可能的实现方式中,请求标识管理器1104包括:空闲状态检测器;
空闲状态检测器,用于若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从多个预设请求标识中随机确定一个预设请求标识为目标请求标识;
空闲状态检测器,还用于从目标请求标识开始按序检测多个预设请求标识的使用状态,将第一个使用状态为空闲状态的预设请求标识确定为第一请求标识。
在一种可能的实现方式中,多个预设请求标识的数量小于或等于总线接收的总线请求的最大并发数量。
在一种可能的实现方式中,重排序缓冲器管理器1105包括:第一多路选择器和使用状态检测器;
第一多路选择器,用于从多个预设设备对应的多个预设头指针和多个预设尾指针中,根据第一设备标识确定第一设备对应的第一头指针和第一尾指针;
使用状态检测器,用于确定第一尾指针指向的预设缓冲地址至第一头指针指向的预设缓冲地址的地址检测范围;
使用状态检测器,还用于升序检测地址检测范围内的多个预设缓冲地址的使用状态,将检测到的第一个使用状态为空闲状态的预设缓冲地址确定为第一缓冲地址。
在一种可能的实现方式中,请求标识管理器1104,还用于将第一请求标识的使用状态由空闲状态更新为占用状态;
重排序缓冲器管理器1105,还用于将第一缓冲地址的使用状态由空闲状态更新为占用状态;
共享请求转换器1103,具体用于根据第一请求标识向总线1106发送第一总线请求;
共享重排序缓冲器1107,具体用于获得第一读数据。
在一种可能的实现方式中,重排序缓冲器管理器1105,还用于:
将第一请求标识和第一缓冲地址之间的对应关系记录在第一记录数据;
共享重排序缓冲器1107包括:第二多路选择器和读写器;
第二多路选择器,用于根据第一请求标识和第一记录数据,确定第一请求标识对应的第一缓冲地址;
读写器,用于向第一缓冲地址写入第一读数据。
在一种可能的实现方式中,共享请求转换器1104,还用于:
若多个预设请求标识不包括使用状态为空闲状态的预设请求标识,暂停向总线发送第一总线请求;或,
若根据第一设备标识从多个预设缓冲地址中查找不到第一缓冲地址,暂停向总线发送第一总线请求。
在一种可能的实现方式中,重排序缓冲器管理器1105包括:第一多路选择器和使用状态检测器;
第一多路选择器,用于从多个预设设备对应的多个预设头指针和多个预设尾指针中,根据第一设备标识确定第一设备对应的第一头指针和第一尾指针;
使用状态检测器,用于确定第一尾指针指向的预设缓冲地址至第一头指针指向的预设缓冲地址的地址检测范围;
使用状态检测器,还用于升序检测地址检测范围内的多个预设缓冲地址的使用状态均为占用状态,确定查找不到第一缓冲地址。
在一种可能的实现方式中,重排序缓冲器管理器1105,还用于:
记录多个预设缓冲地址是否写入有效的读数据,获得第二记录数据;
若第二记录数据表示多个预设头指针中第二头指针指向的多个预设缓冲地址中第二缓冲地址写入有效的第二读数据,将第二缓冲地址的使用状态由占用状态更新为空闲状态;
请求标识管理器1104,还用于:
将第二缓冲地址对应的多个预设请求标识中第二请求标识的使用状态由占用状态更新为空闲状态。
在一种可能的实现方式中,处理器还包括:分路器;
分路器,用于若第二记录数据表示第二头指针指向的第二缓冲地址写入有效的第二读数据,在多个预设设备中确定第二头指针对应的第二设备;
分路器,还用于向第二设备发送第二读数据。
在一种可能的实现方式中,仲裁器1102,具体用于:
若多个预设设备的优先级不同,根据多个预设设备的优先级对多个预设读请求进行调度,将最高优先级的预设设备发送的一个预设读请求确定为第一读请求;
若多个预设设备的优先级相同,对多个预设读请求进行轮询调度,确定第一读请求。
由上述技术方案可以看出,首先,从多个预设设备发送的多个预设读请求中确定第一读请求,通过共享请求转换器将第一读请求转换为总线识别的第一总线请求,其中,第一读请求携带多个预设设备中第一设备的第一设备标识;该方式针对多个预设设备仅配置共享请求转换器,无需每个预设设备配置一个请求转换器,减少请求转换器占用的处理器面积,以降低处理器面积开销。然后,若多个用于向总线发送总线请求的预设请求标识中存在使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;若基于第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,将第一缓冲地址对应第一请求标识;该方式针对多个预设设备仅配置共享重排序缓冲器,无需每个预设设备配置一个重排序缓冲器,减少重排序缓冲器占用的处理器面积,以降低处理器面积开销。最后,基于第一请求标识向总线发送第一总线请求,该总线返回的携带第一请求标识的第一读数据;以便基于第一请求标识向共享重排序缓冲器的第一缓冲地址写入第一读数据;该方式使得多个预设设备中每个预设设备均可使用共享重排序缓冲器的多个缓冲地址资源,以最大化利用缓冲地址资源,从而提高重排序缓冲器的缓冲地址资源利用率。
本申请实施例还提供了一种计算机设备,该计算机设备可以是服务器,参见图12,图12为本申请实施例提供的一种服务器的结构图,服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器,例如中央处理器(Central ProcessingUnits,CPU)1222,以及存储器1232,一个或一个以上存储应用程序1242或数据1244的存储介质1230(例如一个或一个以上海量存储设备)。其中,存储器1232和存储介质1230可以是短暂存储或持久存储。存储在存储介质1230的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1222可以设置为与存储介质1230通信,在服务器1200上执行存储介质1230中的一系列指令操作。
服务器1200还可以包括一个或一个以上电源1226,一个或一个以上有线或无线网络接口1250,一个或一个以上输入输出接口1258,和/或,一个或一个以上操作系统1241,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
在本实施例中,由服务器1200中的中央处理器1222可以执行以下步骤:
从多个预设设备发送的多个预设读请求中确定第一读请求;第一读请求携带多个预设设备中第一设备的第一设备标识;
通过共享请求转换器将第一读请求转换为总线识别的第一总线请求;
若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;每个预设请求标识用于向总线发送总线请求;
若根据第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,确定第一缓冲地址对应第一请求标识;
根据第一请求标识向总线发送第一总线请求,获得总线返回的第一读数据;第一读数据携带第一请求标识;
根据第一请求标识向共享重排序缓冲器的第一缓冲地址写入第一读数据。
本申请实施例提供的计算机设备还可以是终端,参见图13,图13为本申请实施例提供的一种终端的结构图。以终端为智能手机为例,智能手机包括:射频(RadioFrequency,RF)电路1310、存储器1320、输入单元1330、显示单元1340、传感器1350、音频电路1360、无线保真(Wireless Fidelity,WiFi)模块1370、处理器1380、以及电源1390等部件。输入单元1330可包括触控面板1331以及其他输入设备1332,显示单元1340可包括显示面板1341,音频电路1360可以包括扬声器1361和传声器1362。本领域技术人员可以理解,图13中示出的智能手机结构并不构成对智能手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储器1320可用于存储软件程序以及模块,处理器1380通过运行存储在存储器1320的软件程序以及模块,从而执行智能手机的各种功能应用以及数据处理。存储器1320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1380是智能手机的控制中心,利用各种接口和线路连接整个智能手机的各个部分,通过运行或执行存储在存储器1320内的软件程序和/或模块,以及调用存储在存储器1320内的数据,执行智能手机的各种功能和处理数据。可选的,处理器1380可包括一个或多个处理单元;优选的,处理器1380可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1380中。
在本实施例中,智能手机中的处理器1380可以执行以下步骤:
从多个预设设备发送的多个预设读请求中确定第一读请求;第一读请求携带多个预设设备中第一设备的第一设备标识;
通过共享请求转换器将第一读请求转换为总线识别的第一总线请求;
若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从多个预设请求标识中确定使用状态为空闲状态的第一请求标识;每个预设请求标识用于向总线发送总线请求;
若根据第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到使用状态为空闲状态的第一缓冲地址,确定第一缓冲地址对应第一请求标识;
根据第一请求标识向总线发送第一总线请求,获得总线返回的第一读数据;第一读数据携带第一请求标识;
根据第一请求标识向共享重排序缓冲器的第一缓冲地址写入第一读数据。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请的具体实施方式中,若预设对象、实际交互数据等相关数据涉及到用户信息,当本申请以上实施例运用到具体产品或技术中时,需要获得用户单独许可或者单独同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储计算机程序的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术成员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (20)

1.一种基于重排序缓冲器的读请求处理方法,其特征在于,所述方法包括:
从多个预设设备发送的多个预设读请求中确定第一读请求;所述第一读请求携带所述多个预设设备中第一设备的第一设备标识;
通过共享请求转换器将所述第一读请求转换为总线识别的第一总线请求;
若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从所述多个预设请求标识中确定所述使用状态为所述空闲状态的第一请求标识;每个预设请求标识用于向所述总线发送总线请求;
若根据所述第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到所述使用状态为所述空闲状态的第一缓冲地址,确定所述第一缓冲地址对应所述第一请求标识;
根据所述第一请求标识向所述总线发送所述第一总线请求,获得所述总线返回的第一读数据;所述第一读数据携带所述第一请求标识;
根据所述第一请求标识向所述共享重排序缓冲器的所述第一缓冲地址写入所述第一读数据。
2.根据权利要求1所述的方法,其特征在于,所述从所述多个预设请求标识中确定所述使用状态为所述空闲状态的第一请求标识,包括:
从所述多个预设请求标识中随机确定一个预设请求标识为目标请求标识;
从所述目标请求标识开始按序检测所述多个预设请求标识的使用状态,将第一个所述使用状态为所述空闲状态的预设请求标识确定为所述第一请求标识。
3.根据权利要求1或2所述的方法,其特征在于,所述多个预设请求标识的数量小于或等于所述总线接收的总线请求的最大并发数量。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到所述使用状态为所述空闲状态的第一缓冲地址,包括:
从所述多个预设设备对应的多个预设头指针和多个预设尾指针中,根据所述第一设备标识确定所述第一设备对应的第一头指针和第一尾指针;
确定所述第一尾指针指向的预设缓冲地址至所述第一头指针指向的预设缓冲地址的地址检测范围;
升序检测所述地址检测范围内的多个预设缓冲地址的使用状态,将检测到的第一个所述使用状态为所述空闲状态的预设缓冲地址确定为所述第一缓冲地址。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述第一请求标识向所述总线发送所述第一总线请求,获得所述总线发送的第一读数据,包括:
将所述第一请求标识的使用状态由所述空闲状态更新为占用状态;
将所述第一缓冲地址的使用状态由所述空闲状态更新为所述占用状态;
根据所述第一请求标识向所述总线发送所述第一总线请求,获得所述第一读数据。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一请求标识和所述第一缓冲地址之间的对应关系记录在第一记录数据;
所述根据所述第一请求标识向所述共享重排序缓冲器的所述第一缓冲地址写入所述第一读数据,包括:
根据所述第一请求标识和所述第一记录数据,确定所述第一请求标识对应的所述第一缓冲地址;
向所述第一缓冲地址写入所述第一读数据。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述多个预设请求标识不包括所述使用状态为所述空闲状态的预设请求标识,暂停向所述总线发送所述第一总线请求;或,
若根据所述第一设备标识从所述多个预设缓冲地址中查找不到所述第一缓冲地址,暂停向所述总线发送所述第一总线请求。
8.根据权利要求7所述的方法,其特征在于,所述根据所述第一设备标识从所述多个预设缓冲地址中查找不到所述第一缓冲地址,包括:
从所述多个预设设备对应的多个预设头指针和多个预设尾指针中,根据所述第一设备标识确定所述第一设备对应的第一头指针和第一尾指针;
确定所述第一尾指针指向的预设缓冲地址至所述第一头指针指向的预设缓冲地址的地址检测范围;
升序检测所述地址检测范围内的多个预设缓冲地址的使用状态均为占用状态,确定查找不到所述第一缓冲地址。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
记录所述多个预设缓冲地址是否写入有效的读数据,获得第二记录数据;
若所述第二记录数据表示所述多个预设头指针中第二头指针指向的所述多个预设缓冲地址中第二缓冲地址写入有效的第二读数据,将所述第二缓冲地址的使用状态由占用状态更新为所述空闲状态;
将所述第二缓冲地址对应的所述多个预设请求标识中第二请求标识的使用状态由所述占用状态更新为所述空闲状态。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若所述第二记录数据表示所述第二头指针指向的所述第二缓冲地址写入有效的第二读数据,在所述多个预设设备中确定所述第二头指针对应的第二设备;
向所述第二设备发送所述第二读数据。
11.根据权利要求1所述的方法,其特征在于,所述从多个预设设备发送的多个预设读请求中确定第一读请求,包括:
若所述多个预设设备的优先级不同,根据所述多个预设设备的优先级对所述多个预设读请求进行调度,将最高优先级的预设设备发送的一个预设读请求确定为所述第一读请求;
若所述多个预设设备的优先级相同,对所述多个预设读请求进行轮询调度,确定所述第一读请求。
12.一种基于重排序缓冲器的读请求处理器,其特征在于,所述处理器包括:多个预设设备、仲裁器、共享请求转换器、请求标识管理器、重排序缓冲器管理器、总线和共享重排序缓冲器;
所述仲裁器,用于从多个预设设备发送的多个预设读请求中确定第一读请求;所述第一读请求携带所述多个预设设备中第一设备的第一设备标识;
所述共享请求转换器,用于将所述第一读请求转换为总线识别的第一总线请求;
所述请求标识管理器,用于若多个预设请求标识包括使用状态为空闲状态的预设请求标识,从所述多个预设请求标识中确定所述使用状态为所述空闲状态的第一请求标识;每个预设请求标识用于向所述总线发送总线请求;
所述重排序缓冲器管理器,用于若根据所述第一设备标识从共享重排序缓冲器的多个预设缓冲地址中查找到所述使用状态为所述空闲状态的第一缓冲地址,确定所述第一缓冲地址对应所述第一请求标识;
所述共享请求转换器,还用于根据所述第一请求标识向所述总线发送所述第一总线请求;
所述共享重排序缓冲器,用于获得所述总线返回的第一读数据,并根据所述第一请求标识向所述第一缓冲地址写入所述第一读数据;所述第一读数据携带所述第一请求标识。
13.根据权利要求12所述的处理器,其特征在于,所述请求标识管理器包括:空闲状态检测器;
所述空闲状态检测器,用于若所述多个预设请求标识包括所述使用状态为所述空闲状态的预设请求标识,从所述多个预设请求标识中随机确定一个预设请求标识为目标请求标识;
所述空闲状态检测器,还用于从所述目标请求标识开始按序检测所述多个预设请求标识的使用状态,将第一个所述使用状态为所述空闲状态的预设请求标识确定为所述第一请求标识。
14.根据权利要求12所述的处理器,其特征在于,所述重排序缓冲器管理器包括:第一多路选择器和使用状态检测器;
所述第一多路选择器,用于从所述多个预设设备对应的多个预设头指针和多个预设尾指针中,根据所述第一设备标识确定所述第一设备对应的第一头指针和第一尾指针;
所述使用状态检测器,用于确定所述第一尾指针指向的预设缓冲地址至所述第一头指针指向的预设缓冲地址的地址检测范围;
所述使用状态检测器,还用于升序检测所述地址检测范围内的多个预设缓冲地址的使用状态,将检测到的第一个所述使用状态为所述空闲状态的预设缓冲地址确定为所述第一缓冲地址。
15.根据权利要求12所述的处理器,其特征在于,所述重排序缓冲器管理器,还用于:
将所述第一请求标识和所述第一缓冲地址之间的对应关系记录在第一记录数据;
所述共享重排序缓冲器包括:第二多路选择器和读写器;
所述第二多路选择器,用于根据所述第一请求标识和所述第一记录数据,确定所述第一请求标识对应的所述第一缓冲地址;
所述读写器,用于向所述第一缓冲地址写入所述第一读数据。
16.根据权利要求12所述的处理器,其特征在于,所述共享请求转换器,还用于:
若所述多个预设请求标识不包括所述使用状态为所述空闲状态的预设请求标识,暂停向所述总线发送所述第一总线请求;或,
若根据所述第一设备标识从所述多个预设缓冲地址中查找不到所述第一缓冲地址,暂停向所述总线发送所述第一总线请求。
17.根据权利要求16所述的处理器,其特征在于,所述重排序缓冲器管理器包括:第一多路选择器和使用状态检测器;
所述第一多路选择器,用于从所述多个预设设备对应的多个预设头指针和多个预设尾指针中,根据所述第一设备标识确定所述第一设备对应的第一头指针和第一尾指针;
所述使用状态检测器,用于确定所述第一尾指针指向的预设缓冲地址至所述第一头指针指向的预设缓冲地址的地址检测范围;
所述使用状态检测器,还用于升序检测所述地址检测范围内的多个预设缓冲地址的使用状态均为占用状态,确定查找不到所述第一缓冲地址。
18.根据权利要求12所述的处理器,其特征在于,所述重排序缓冲器管理器,还用于:
记录所述多个预设缓冲地址是否写入有效的读数据,获得第二记录数据;
若所述第二记录数据表示所述多个预设头指针中第二头指针指向的所述多个预设缓冲地址中第二缓冲地址写入有效的第二读数据,将所述第二缓冲地址的使用状态由占用状态更新为所述空闲状态;
所述请求标识管理器,还用于:
将所述第二缓冲地址对应的所述多个预设请求标识中第二请求标识的使用状态由所述占用状态更新为所述空闲状态。
19.根据权利要求18所述的处理器,其特征在于,所述处理器还包括:分路器;
所述分路器,用于若所述第二记录数据表示所述第二头指针指向的所述第二缓冲地址写入有效的第二读数据,在所述多个预设设备中确定所述第二头指针对应的第二设备;
所述分路器,还用于向所述第二设备发送所述第二读数据。
20.一种计算机设备,其特征在于,所述计算机设备包括处理器以及存储器:
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器用于根据所述计算机程序中的指令执行权利要求1-11任一项所述的方法。
CN202310328701.7A 2023-03-24 2023-03-24 一种基于重排序缓冲器的读请求处理方法及相关装置 Pending CN116955251A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310328701.7A CN116955251A (zh) 2023-03-24 2023-03-24 一种基于重排序缓冲器的读请求处理方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310328701.7A CN116955251A (zh) 2023-03-24 2023-03-24 一种基于重排序缓冲器的读请求处理方法及相关装置

Publications (1)

Publication Number Publication Date
CN116955251A true CN116955251A (zh) 2023-10-27

Family

ID=88460807

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310328701.7A Pending CN116955251A (zh) 2023-03-24 2023-03-24 一种基于重排序缓冲器的读请求处理方法及相关装置

Country Status (1)

Country Link
CN (1) CN116955251A (zh)

Similar Documents

Publication Publication Date Title
CN110389935B (zh) 一种启动小程序的方法、设备和计算机存储介质
CN110377369B (zh) 一种运行小程序的方法、设备和计算机存储介质
CN108279979B (zh) 一种为应用程序容器绑定cpu的方法及装置
CN110532208B (zh) 一种数据处理方法、接口转换结构及数据处理设备
CN110119304B (zh) 一种中断处理方法、装置及服务器
CN112650558B (zh) 数据处理方法、装置、可读介质和电子设备
CN112765084B (zh) 计算机设备、虚拟化加速设备、数据传输方法及存储介质
CN114417373A (zh) 一种NVMe-oF用户态客户端的数据访问方法和装置
CN114817120A (zh) 一种跨域数据共享方法、系统级芯片、电子设备及介质
CN116774933A (zh) 存储设备的虚拟化处理方法、桥接设备、系统及介质
US8909892B2 (en) Method, apparatus, and computer program product for fast context switching of application specific processors
CN109857553B (zh) 内存管理方法及装置
CN116028455A (zh) 一种数据处理方法、装置、存储介质及电子设备
CN115421787A (zh) 指令执行方法、装置、设备、系统、程序产品及介质
CN115237589A (zh) 一种基于sr-iov的虚拟化方法、装置和设备
CN113609055A (zh) 一种后端设备获取描述符的方法、装置、设备及可读介质
CN210428500U (zh) 一种智能卡管理装置
CN106933646B (zh) 一种创建虚拟机的方法及装置
CN116633900A (zh) 逻辑地址分配方法、装置、电子设备及存储介质
CN116955251A (zh) 一种基于重排序缓冲器的读请求处理方法及相关装置
CN111208953A (zh) 一种分布式存储方法及其装置
CN110569933A (zh) 一种智能卡管理装置及方法
CN114422537B (zh) 多云存储系统、多云数据读写方法及电子设备
CN116009770A (zh) 读响应电路、方法、数据传输系统及相关设备
CN116418848A (zh) 网络节点的配置和访问请求的处理方法、装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication