基于光线追踪的数据调度方法、装置及设备、存储介质转让专利

申请号 : CN202310331358.1

文献号 : CN116049032B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名

申请人 : 摩尔线程智能科技(北京)有限责任公司

摘要 :

本公开实施例提供了一种基于光线追踪的数据调度方法、装置及设备、存储介质,其中,所述方法包括:确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,所述第一目标存储块和所述目标存储块组中分别存储有具有对应关系的光线数据和块数据;从所述第一目标存储块中读取所述光线数据;在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。根据本公开实施例,能够提高块数据的读调度效率。

权利要求 :

1.一种基于光线追踪的数据调度方法,其特征在于,所述方法包括:

确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,所述第一目标存储块和所述目标存储块组中分别存储有具有对应关系的光线数据和块数据;所述目标存储块组中对应于第二目标地址的多个存储块共同存储所述块数据,所述块数据包括第一子数据和第二子数据;

从所述第一目标存储块中读取所述光线数据;

在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度;

其中,所述在两个调度周期内,从所述目标存储块组中读取所述块数据,包括:在所述第一个调度周期内,在所述第二目标地址对应的多个存储块中存在当前无数据写入的至少一个第二目标存储块的情况下,从所述至少一个第二目标存储块中读取所述第一子数据;

在所述第二个调度周期内,在所述第二目标地址对应的多个存储块中存在除所述第二目标存储块之外的至少一个第三目标存储块的情况下,对所述至少一个第三目标存储块进行读锁定,并从所述至少一个第三目标存储块中读取所述第二子数据。

2.根据权利要求1所述的数据调度方法,其特征在于,所述从所述第一目标存储块中读取所述光线数据,包括:从所述第一目标存储块中读取所述光线数据至运算单元;

所述在两个调度周期内,从所述目标存储块组中读取所述块数据,包括:

在两个调度周期内,从所述目标存储块组中读取所述块数据至所述运算单元,以使所述运算单元对所述光线数据和所述块数据进行求交运算。

3.根据权利要求1所述的数据调度方法,其特征在于,所述在两个调度周期内,从所述目标存储块组中读取所述块数据,还包括:在所述第二个调度周期内,在所述目标存储块组中的第四目标存储块当前有数据写请求、且所述第四目标存储块未被读锁定的情况下,向所述第四目标存储块中写入数据。

4.根据权利要求1至3中任一项所述的数据调度方法,其特征在于,所述确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,包括:从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组;其中,每一对候选存储块和候选存储块组中均分别存储有具有对应关系的光线数据和块数据;

基于每一所述候选存储块组中可读存储块的数量,从各所述候选存储块组中确定所述目标存储块组;

将与所述目标存储块组对应的候选存储块确定为所述第一目标存储块。

5.根据权利要求4所述的数据调度方法,其特征在于,所述基于每一所述候选存储块组中可读存储块的数量,从各所述候选存储块组中确定所述目标存储块组,包括:确定每一所述候选存储块组中可读存储块的数量;其中,所述可读存储块的读写状态为可读状态;

将各所述候选存储块组中可读存储块的数量最多的存储块组确定为所述目标存储块组。

6.根据权利要求5所述的数据调度方法,其特征在于,所述方法还包括:

获取每一所述候选存储块组中各存储块的写锁定状态和读锁定状态;其中,所述写锁定状态包括以下之一:表征存储块中当前有数据写入的第一状态、表征存储块中当前无数据写入的第二状态;所述读锁定状态包括以下之一:表征存储块当前已被读锁定的第三状态、表征存储块当前未被读锁定的第四状态;

针对每一所述存储块,在所述存储块的写锁定状态为第二状态、且所述存储块的读锁定状态为第四状态的情况下,确定所述存储块的读写状态为可读状态。

7.根据权利要求4所述的数据调度方法,其特征在于,所述基于每一所述候选存储块组中可读存储块的数量,从各所述候选存储块组中确定所述目标存储块组,包括:确定各所述候选存储块组中可读存储块的数量最多的第一存储块组;

在所述第一存储块组的数量有多个的情况下,按照预设的选取方式,从各所述第一存储块组中选取一个第一存储块组作为所述目标存储块组。

8.根据权利要求4所述的数据调度方法,其特征在于,所述从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组,包括:从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组,以及每一对候选存储块和候选存储块组中所述候选存储块对应的第一目标地址、和所述候选存储块组对应的第二目标地址;其中,对于每一对候选存储块和候选存储块组,所述候选存储块的第一目标地址内、和所述候选存储块组的第二目标地址内分别存储有具有对应关系的光线数据和块数据。

9.一种基于光线追踪的数据调度装置,其特征在于,所述装置包括:

第一确定模块,用于确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,所述第一目标存储块和所述目标存储块组中分别存储有具有对应关系的光线数据和块数据;所述目标存储块组中对应于第二目标地址的多个存储块共同存储所述块数据,所述块数据包括第一子数据和第二子数据;

第一读取模块,用于从所述第一目标存储块中读取所述光线数据;

第二读取模块,用于在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度;

其中,所述第二读取模块还用于:在所述第一个调度周期内,在所述第二目标地址对应的多个存储块中存在当前无数据写入的至少一个第二目标存储块的情况下,从所述至少一个第二目标存储块中读取所述第一子数据;在所述第二个调度周期内,在所述第二目标地址对应的多个存储块中存在除所述第二目标存储块之外的至少一个第三目标存储块的情况下,对所述至少一个第三目标存储块进行读锁定,并从所述至少一个第三目标存储块中读取所述第二子数据。

10.一种基于光线追踪的数据调度系统,其特征在于,所述系统包括:

第一存储器,用于存储光线数据;

第二存储器,用于存储块数据;

调度器,与所述第一存储器和所述第二存储器通信连接,用于执行权利要求1至8中任一项所述的方法。

11.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至8任一项所述方法中的步骤。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至8任一项所述方法中的步骤。

说明书 :

基于光线追踪的数据调度方法、装置及设备、存储介质

技术领域

[0001] 本公开涉及但不限于信息技术领域,尤其涉及一种基于光线追踪的数据调度方法、装置及设备、存储介质。

背景技术

[0002] 在光线追踪处理中,光线和对象块(如包围盒(BOX)、或者三角形(Triangle)等)的求交计算需要同时获取光线的光线数据和对象块的块数据后才能送到运算单元(Arithmetic And Logic unit,ALU)进行求交运算。但是,相关技术中,由于存储器中的存储块的读写冲突,会导致数据的读取需要等待,从而影响数据读取的效率。

发明内容

[0003] 有鉴于此,本公开实施例至少提供一种基于光线追踪的数据调度方法、装置及设备、存储介质,能够提高块数据的读调度效率,从而提高后续基于光线数据与块数据进行运算的运算效率。
[0004] 本公开实施例的技术方案是这样实现的:
[0005] 本公开实施例提供一种基于光线追踪的数据调度方法,所述方法包括:
[0006] 确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,所述第一目标存储块和所述目标存储块组中分别存储有具有对应关系的光线数据和块数据;
[0007] 从所述第一目标存储块中读取所述光线数据;
[0008] 在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。
[0009] 在一些实施例中,所述从所述第一目标存储块中读取所述光线数据,包括:从所述第一目标存储块中读取所述光线数据至运算单元;所述在两个调度周期内,从所述目标存储块组中读取所述块数据,包括:在两个调度周期内,从所述目标存储块组中读取所述块数据至所述运算单元,以使所述运算单元对所述光线数据和所述块数据进行求交运算。
[0010] 在一些实施例中,所述块数据存储在所述目标存储块组中的第二目标地址内,所述第二目标地址对应所述目标存储块组中的多个存储块,所述块数据包括第一子数据和/或第二子数据;所述在两个调度周期内,从所述目标存储块组中读取所述块数据,包括:在所述第一个调度周期内,在所述第二目标地址对应的多个存储块中存在当前无数据写入的至少一个第二目标存储块的情况下,从所述至少一个第二目标存储块中读取所述第一子数据;在所述第二个调度周期内,在所述第二目标地址对应的多个存储块中存在除所述第二目标存储块之外的至少一个第三目标存储块的情况下,对所述至少一个第三目标存储块进行读锁定,并从所述至少一个第三目标存储块中读取所述第二子数据。
[0011] 在一些实施例中,所述在两个调度周期内,从所述目标存储块组中读取所述块数据,还包括:在所述第二个调度周期内,在所述目标存储块组中的第四目标存储块当前有数据写请求、且所述第四目标存储块未被读锁定的情况下,向所述第四目标存储块中写入数据。
[0012] 在一些实施例中,所述确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,包括:从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组;其中,每一对候选存储块和候选存储块组中均分别存储有具有对应关系的光线数据和块数据;基于每一所述候选存储块组中可读存储块的数量,从各所述候选存储块组中确定所述目标存储块组;将与所述目标存储块组对应的候选存储块确定为所述第一目标存储块。
[0013] 在一些实施例中,所述基于每一所述候选存储块组中可读存储块的数量,从各所述候选存储块组中确定所述目标存储块组,包括:确定每一所述候选存储块组中可读存储块的数量;其中,所述可读存储块的读写状态为可读状态;将各所述候选存储块组中可读存储块的数量最多的存储块组确定为所述目标存储块组。
[0014] 在一些实施例中,所述方法还包括:获取每一所述候选存储块组中各存储块的写锁定状态和读锁定状态;其中,所述写锁定状态包括以下之一:表征存储块中当前有数据写入的第一状态、表征存储块中当前无数据写入的第二状态;所述读锁定状态包括以下之一:表征存储块当前已被读锁定的第三状态、表征存储块当前未被读锁定的第四状态;针对每一所述存储块,在所述存储块的写锁定状态为第二状态、且所述存储块的读锁定状态为第四状态的情况下,确定所述存储块的读写状态为可读状态。
[0015] 在一些实施例中,所述基于每一所述候选存储块组中可读存储块的数量,从各所述候选存储块组中确定所述目标存储块组,包括:确定各所述候选存储块组中可读存储块的数量最多的第一存储块组;在所述第一存储块组的数量有多个的情况下,按照预设的选取方式,从各所述第一存储块组中选取一个第一存储块组作为所述目标存储块组。
[0016] 在一些实施例中,所述从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组,包括:从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组,以及每一对候选存储块和候选存储块组中所述候选存储块对应的第一目标地址、和所述候选存储块组对应的第二目标地址;其中,对于每一对候选存储块和候选存储块组,所述候选存储块的第一目标地址内、和所述候选存储块组的第二目标地址内分别存储有具有对应关系的光线数据和块数据。
[0017] 本公开实施例提供一种基于光线追踪的数据调度装置,所述装置包括:
[0018] 第一确定模块,用于确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,所述第一目标存储块和所述目标存储块组中分别存储有具有对应关系的光线数据和块数据;
[0019] 第一读取模块,用于从所述第一目标存储块中读取所述光线数据;
[0020] 第二读取模块,用于在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。
[0021] 本公开实施例提供一种基于光线追踪的数据调度系统,所述系统包括:
[0022] 第一存储器,用于存储光线数据;
[0023] 第二存储器,用于存储块数据;
[0024] 调度器,与所述第一存储器和所述第二存储器通信连接,用于执行上述方法中的部分或全部步骤。
[0025] 本公开实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
[0026] 本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
[0027] 本公开实施例中,确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,第一目标存储块和目标存储块组中分别存储有具有对应关系的光线数据和块数据;从第一目标存储块中读取光线数据;在两个调度周期内,从目标存储块组中读取块数据;其中,两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。这样,可以将块数据的读取分两拍进行,一方面,在第一个调度周期内采用写优先的方式进行数据读调度,可以尽可能地为目标存储块组中的数据写入保持较高地优先级,另一方面,在第二个调度周期内采用读优先的方式进行数据读调度,可以使得至多在两个调度周期内即可从目标存储块组中读取到完整的块数据。如此,通过动态调整两个调度周期中数据读调度的读写优先级,可以兼顾目标存储块组中数据的读写需求,提高块数据的读调度效率,从而提高后续基于光线数据与块数据进行运算的运算效率。
[0028] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。

附图说明

[0029] 此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
[0030] 图1A为本公开实施例提供的一种基于光线追踪的数据调度方法的实现流程示意图一;
[0031] 图1B为本公开实施例提供的一种基于光线追踪的数据调度方法中读取光线数据和块数据的实现示意图;
[0032] 图2A为本公开实施例提供的一种基于光线追踪的数据调度方法的实现流程示意图二;
[0033] 图2B为本公开实施例提供的一种确定第一目标存储块和目标存储块组的实现流程示意图;
[0034] 图3A为本公开实施例提供的一种基于光线追踪的数据调度系统的组成结构示意图一;
[0035] 图3B为本公开实施例提供的一种基于光线追踪的数据调度系统的组成结构示意图二;
[0036] 图4为本公开实施例提供的一种基于光线追踪的数据调度装置的组成结构示意图;
[0037] 图5为本公开实施例提供的一种计算机设备的硬件实体示意图。

具体实施方式

[0038] 为了使本公开的目的、技术方案和优点更加清楚,下面结合附图和实施例对本公开的技术方案进一步详细阐述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
[0039] 在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
[0040] 所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
[0041] 除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开的目的,不是旨在限制本公开。
[0042] 为了更好地理解本公开实施例提供的基于光线追踪的数据调度方法,下面先对相关技术中的数据调度方案进行说明。
[0043] 在光线追踪处理中,光线和对象块的求交计算需要同时获取光线的光线数据和对象块的块数据后才能送到运算单元进行求交运算。相关技术中,块数据的存放一般使用双倍速率同步动态随机存储器(Double Data Rate,DDR)+高速缓冲存储器(Cache)的结构,一般Cache为单口随机存取存储器(Random Access Memory,RAM),并设定写为绝对高优先级,当有数据写请求时,读调度只能暂停,从而影响块数据的读调度效率,进而影响运算单元的利用率。
[0044] 在此基础上,本公开实施例提供一种基于光线追踪的数据调度方法,该方法可以应用于处理器的调度器(Scheduler)中。处理器可以例如包括但不限于中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)等中的至少一种。图1A为本公开实施例提供的一种基于光线追踪的数据调度方法的实现流程示意图,如图1A所示,该方法可以包括如下步骤S101至步骤S103:
[0045] 步骤S101,确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,所述第一目标存储块和所述目标存储块组中分别存储有具有对应关系的光线数据和块数据。
[0046] 这里,第一存储器和第二存储器均可以是根据实际情况确定的任意合适的存储器,例如包括但不限于Cache、缓冲器(Buffer)等中的至少之一。在一些实施方式中,第一存储器可以是用于存储光线数据的Buffer,第二存储器可以是用于存储块数据的Cache。
[0047] 第一存储器中可以包括多个存储块。第二存储器中可以包括多个存储块组,每一存储块组中包括多个存储块。可以通过写操作向第一存储器中的至少一个存储块中写入光线数据,也可以通过写操作向第二存储器中的至少一个存储块组中的存储块中写入块数据。在一些实施方式中,第一存储器中的每一地址可以对应至少一个存储块,第二存储器中的每一地址可以对应一个存储块组中的至少一个存储块,第一存储器中的一个存储块可以存储一个光线数据,在第二存储器中的存储块组中,一个地址对应的至少一个存储块可以共同存储一个完整的块数据。
[0048] 在实施时,可以分别对第一存储器中的各存储块、以及第二存储器中的各存储块组中存储的数据进行预取,以检测第一存储器和第二存储器中是否存在分别存储有具有对应关系的光线数据和块数据的第一目标存储块和目标存储块组,并在确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组后,分别从第一目标存储块和目标存储块组中读取具有对应关系的光线数据和块数据。例如,具有对应关系的光线数据和块数据可以是待进行相交运算的一对光线数据和块数据,通过对该对光线数据和块数据进行相交运算,可以确定该光线数据对应的光线与该块数据对应的对象块是否相交。
[0049] 步骤S102,从所述第一目标存储块中读取所述光线数据。
[0050] 这里,在确定第一目标存储块后,可以进行数据读调度,从该第一目标存储块中读取光线数据。
[0051] 在实施时,可以采用任意合适的方式对第一目标存储块进行读调度,以读取该第一目标存储块中的光线数据,本公开实施例对此并不限定。例如,可以采用读优先的方式或者写优先的方式,从对第一目标存储块进行读调度,以读取该第一目标存储块中的光线数据。
[0052] 在一些实施方式中,可以将该光线数据从第一目标存储块中读取至调度器中,调度器可以将读取到的光线数据传输至其他单元(如运算单元)中。在一些实施方式中,调度器可以向第一存储器发送读调度指令,以使第一存储器将第一目标存储块中存储的该光线数据传输至其他单元(如运算单元)中。
[0053] 步骤S103,在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。
[0054] 这里,可以在第一个调度周期内以写优先的方式进行数据读调度,然后再在第二个调度周期内以读优先的方式进行数据读调度,以分两拍从目标存储块组中读取块数据。
[0055] 可以理解的是,在第一个调度周期内以写优先的方式进行数据读调度,指的是在该第一个调度周期内数据写入操作的优先级最高,如果在该第一个调度周期内存在对目标存储块组中至少一个存储块的数据写入需求,则需要优先满足对该至少一个存储块的数据写入需求,而在该第一调度周期内只能对出该至少一个存储块之外的其他存储块中的数据进行读取。在第二个调度周期内以读优先的方式进行数据读调度,指的是在该第二个调度周期内数据读取操作的优先级最高,若目标存储块组中在第一个调度周期内有至少一个存储块中的数据未被读取,则在该第二个调度周期内,优先满足对该至少一个存储块中的数据进行读取的需求,从而使得至多在两个调度周期内即可从目标存储块组中读取到完整的块数据。
[0056] 图1B为本公开实施例提供的一种数据读调度方法中读取光线数据和块数据的实现示意图。如图1B所示,用于存储光线数据的第一存储器100中包括多个存储块110,用于存储块数据的第二存储器200中包括多个存储块组210,每一存储块组210中包括多个存储块211;调度器300可以从第一存储器100中确定第一目标存储块,并从第二存储器200中确定目标存储块组,其中,第一目标存储块和目标存储块组中分别存储有具有对应关系的光线数据和块数据;在确定第一目标存储块和目标存储块组后,调度器300可以从第一目标存储块中读取光线数据,并在两个调度周期内,从目标存储块组中读取块数据,其中,这两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度;读取到光线数据和块数据后,调度器300可以将该光线数据和该块数据传输至运算单元进行求交运算,以得到该光线数据对应的光线与该块数据对应的对象块之间的相交状态。
[0057] 在一些实施方式中,光线数据可以存储在第一目标存储块的第一目标地址内,块数据可以存储在目标存储块组中的第二目标地址内。在实施时,可以从第一目标存储块的第一目标地址内读取光线数据,并在两个调度周期内,从目标存储块组中的第二目标地址内读取块数据。
[0058] 本公开实施例中,确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,第一目标存储块和目标存储块组中分别存储有具有对应关系的光线数据和块数据;从第一目标存储块中读取光线数据;在两个调度周期内,从目标存储块组中读取块数据;其中,两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。这样,可以将块数据的读取分两拍进行,一方面,在第一个调度周期内采用写优先的方式进行数据读调度,可以尽可能地为目标存储块组中的数据写入保持较高地优先级,另一方面,在第二个调度周期内采用读优先的方式进行数据读调度,可以使得至多在两个调度周期内即可从目标存储块组中读取到完整的块数据。如此,通过动态调整两个调度周期中数据读调度的读写优先级,可以兼顾目标存储块组中数据的读写需求,提高块数据的读调度效率,从而提高后续基于光线数据与块数据进行运算的运算效率。
[0059] 在一些实施例中,上述步骤S102可以包括:从所述第一目标存储块中读取所述光线数据至运算单元。
[0060] 上述步骤S103可以包括:在两个调度周期内,从所述目标存储块组中读取所述块数据至所述运算单元,以使所述运算单元对所述光线数据和所述块数据进行求交运算。
[0061] 在实施时,调度器可以采用任意合适的方式,将光线数据从第一目标存储块中读取至运算单元,并将块数据从目标存储块组中读取至运算单元,本公开实施例对此并不限定。
[0062] 在一些实施方式中,调度器可以先通过读取第一目标存储块获得该光线数据,并通过读取目标存储块组获得该块数据,然后调度器可以将读取的光线数据和数据块传输至运算单元。
[0063] 在一些实施方式中,调度器可以向第一存储器发送读调度指令,以使第一存储器将第一目标存储块中存储的该光线数据传输至运算单元,调度器还可以向第二存储器发送读调度指令,以使第二存储器将目标存储块组中存储的该块数据传输至运算单元。
[0064] 运算单元可以对该光线数据和块数据进行求交运算,得到该光线数据对应的光线与该块数据对应的对象块之间的相交状态。该相交状态可以表征该关系与该对象块之间是否相交。
[0065] 这样,从第一目标存储块中读取光线数据至运算单元,并在两个调度周期内,从目标存储块组中读取块数据至运算单元,以使运算单元对光线数据和块数据进行求交运算,如此可以提高块数据的读调度效率,从而提高运算单元的利用率,进而提高求交运算的运算效率。
[0066] 在一些实施例中,所述块数据存储在所述目标存储块组中的第二目标地址内,所述第二目标地址对应所述目标存储块组中的多个存储块;所述块数据包括第一子数据和/或第二子数据;上述步骤S103可以包括如下步骤S111至步骤S112:
[0067] 步骤S111,在所述第一个调度周期内,在所述第二目标地址对应的多个存储块中存在当前无数据写入的至少一个第二目标存储块的情况下,从所述至少一个第二目标存储块中读取所述第一子数据;
[0068] 步骤S112,在所述第二个调度周期内,在所述第二目标地址对应的多个存储块中存在除所述第二目标存储块之外的至少一个第三目标存储块的情况下,对所述至少一个第三目标存储块进行读锁定,并从所述至少一个第三目标存储块中读取所述第二子数据。
[0069] 这里,第二目标地址对应的多个存储块中,第二目标存储块和第三目标存储块的数量可以根据实际情况确定。
[0070] 例如,在第一个调度周期内,若目标存储块组中第二目标地址对应的各存储块均无数据写入,则目标存储块组中第二目标地址对应的各存储块均为第二目标存储块,可以在该第一个调度周期内从各第二目标存储块中读取第一子数据;而在第二个调度周期内,由于目标存储块组中第二目标地址对应的各存储块均为第二目标存储块,即第二目标地址对应的各存储块中不存在第三目标存储块,则在该第二个调度周期内不需要在目标存储块组中第二目标地址对应的各存储块中继续进行数据读调度;这样,读取的块数据中仅包括第一子数据,也即在第一调度周期内即可读取到完整的块数据。
[0071] 又如,在第一个调度周期内,若目标存储块组中第二目标地址对应的各存储块中有至少一个存储块有数据写入,则将目标存储块组中第二目标地址对应的各存储块中无数据写入的各存储块确定为第二目标存储块,可以在该第一个调度周期内从各第二目标存储块中读取第一子数据;而在第二个调度周期内,可以将目标存储块组中第二目标地址对应的各存储块中除第二目标存储块之外的各存储块确定为第三目标存储块,也即将在第一个调度周期内有数据写入的各存储块确定为第三目标存储块,可以在该第二个调度周期内从各第三目标存储块中读取第二子数据;这样,读取的块数据中包括第一子数据和第二子数据,也即在第一调度周期和第二调度周期内读取到完整的块数据。
[0072] 再如,在第一个调度周期内,若目标存储块组中第二目标地址对应的各存储块均有数据写入,则目标存储块组中第二目标地址对应的各存储块中不存在第二目标存储块,则在该第一个调度周期内不能在目标存储块组中进行数据读调度,也即无法读取第一子数据;而在第二个调度周期内,由于目标存储块组中第二目标地址对应的各存储块中不存在第二目标存储块,即第二目标地址对应的各存储块均为第三目标存储块,则可以在该第二个调度周期内从各第三目标存储块中读取第二子数据;这样,读取的块数据中仅包括第二子数据,也即在第二调度周期内即可读取到完整的块数据。
[0073] 可以理解的是,在从第三目标存储块中读取完第二子数据后,可以将该第三目标存储块的读锁定解除,读锁定解除后第三目标存储块则处于未被读锁定状态。
[0074] 本公开实施例中,在第一个调度周期内,在第二目标地址对应的多个存储块中存在当前无数据写入的至少一个第二目标存储块的情况下,从至少一个第二目标存储块中读取所述第一子数据;在第二个调度周期内,在第二目标地址对应的多个存储块中存在除第二目标存储块之外的至少一个第三目标存储块的情况下,对至少一个第三目标存储块进行读锁定,并从至少一个第三目标存储块中读取所述第二子数据。这样,可以简单快速地在至多两个调度周期内从目标存储块组中读取到完整的块数据。
[0075] 在一些实施例中,上述步骤S103还可以包括如下步骤S121:
[0076] 步骤S121,在所述第二个调度周期内,在所述目标存储块组中的第四目标存储块当前有数据写请求、且所述第四目标存储块未被读锁定的情况下,向所述第四目标存储块中写入数据。
[0077] 这里,在第二个调度周期内,调度器采用读优先的方式进行数据读调度,若第四目标存储块有数据写请求,则可以先判断该第四目标存储块是否被读锁定。若该第四目标存储块未被读锁定,则可以向该第四目标存储块中写入数据;若该第四目标存储块已被读锁定,则在该第二个调度周期内不能向该第四目标存储块中写入数据,需要等待下一个调度周期。
[0078] 在实施时,第四目标存储块可以为目标存储块组中的任意合适的存储块,本公开实施例对此并不限定。例如,第四目标存储块可以是在第一个调度周期内无数据写入的第二目标存储块,即在该第一个调度周期内可以从该第四目标存储块中读取数据,且在第二个调度周期内该第四目标存储块不会被读锁定,这样,在第二个调度周期内,在该第四目标存储块当前有数据写请求的情况下,由于该第四目标存储块未被读锁定,则可以向该第四目标存储块中写入数据。又如,第四目标存储块可以是第二目标地址对应的多个存储块中除第二目标存储块之外的第三目标存储块,在第二个调度周期内该第四目标存储块会被读锁定,这样,在第二个调度周期内,在该第四目标存储块当前有数据写请求的情况下,由于该第四目标存储块已被读锁定,则无法向该第四目标存储块中写入数据。
[0079] 上述实施例中,在第二个调度周期内,在目标存储块组中的第四目标存储块当前有数据写请求、且第四目标存储块未被读锁定的情况下,向第四目标存储块中写入数据。这样,可以尽可能地为目标存储块组中的数据写入保持较高地优先级,以更好地兼顾目标存储块组中数据的读写需求。
[0080] 本公开实施例提供一种基于光线追踪的数据调度方法,该方法可以应用于处理器的调度器中。图2A为本公开实施例提供的一种基于光线追踪的数据调度方法的实现流程示意图,如图2A所示,该方法可以包括如下步骤S201至步骤S205:
[0081] 步骤S201,从第一存储器中的多个存储块、以及第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组;其中,每一对候选存储块和候选存储块组中均分别存储有具有对应关系的光线数据和块数据。
[0082] 这里,可以通过对第一存储器中的各存储块、以及第二存储器中的各存储块组中存储的数据进行预取,并在第一存储器的一个存储块中预取到一个光线数据、且在第二存储器的一个存储块组中预取到与该光线数据具有对应关系的块数据的情况下,确定第一存储器中的该存储块和第二存储器中的该存储块组中分别存储有具有对应关系的光线数据和块数据,从而将该存储块和该存储块组确定为一对候选存储块和候选存储块组。
[0083] 在一些实施方式中,可以在确定第一存储器中的一个存储块和第二存储器中的一个存储块组中分别存储有具有对应关系的光线数据和块数据,且第一存储器中的该存储块未被其他操作占用的情况下,将该存储块和该存储块组确定为一对候选存储块和候选存储块组。
[0084] 步骤S202,基于每一所述候选存储块组中可读存储块的数量,从各所述候选存储块组中确定目标存储块组。
[0085] 这里,可读存储块指的是当前处于可读状态的存储块。在实施时,可以通过获取候选存储块组中各存储块的读写状态,来确定各存储块是否处于可读状态,也即各存储块是否为可读存储块,进而确定该候选存储块组中可读存储块的数量。
[0086] 在一些实施方式中,可以将各候选存储块组中可读存储块的数量最多的一个候选存储块组确定为目标存储块组。
[0087] 在一些实施方式中,可以从各候选存储块组中可读存储块的数量最多的多个候选存储块组中随机选取一个候选存储块组确定为目标存储块组。
[0088] 步骤S203,将与所述目标存储块组对应的候选存储块确定为第一目标存储块。
[0089] 这里,与目标存储块组对应的候选存储块可以是与该目标存储块组属于同一对候选存储块和候选存储块组中的候选存储块。
[0090] 在一些实施方式中,目标存储块组可以对应一个候选存储块,可以将该候选存储块确定为第一目标存储块。
[0091] 在一些实施方式中,目标存储块组可以对应至少两个候选存储块,可以采用任意合适的选取规则,从该至少两个候选存储块中选择一个候选存储块作为第一目标存储块。例如,可以将该至少两个候选存储块中标识最小的候选存储块确定为第一目标存储块。又如,可以从至少两个候选存储块中随机确定一个候选存储块作为第一目标存储块。
[0092] 步骤S204,从所述第一目标存储块中读取所述光线数据。
[0093] 步骤S205,在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。
[0094] 这里,步骤S204至步骤S205分别对应于前述实施例中的步骤S102至步骤S103,在实施时可以参照前述步骤S102至步骤S103的实施方式。
[0095] 本公开实施例中,从第一存储器中的多个存储块、以及第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组;其中,每一对候选存储块和候选存储块组中均分别存储有具有对应关系的光线数据和块数据;基于每一候选存储块组中可读存储块的数量,从各候选存储块组中确定目标存储块组;将与目标存储块组对应的候选存储块确定为第一目标存储块。这样,在确定目标存储块组和第一目标存储块的过程中结合考虑了每一候选存储块组中可读存储块的数量,从而可以确定更加合适的目标存储块组以及第一目标存储块。
[0096] 在一些实施例中,所述步骤S202可以包括如下步骤S211至步骤S212:
[0097] 步骤S211,确定每一所述候选存储块组中可读存储块的数量。
[0098] 其中,所述可读存储块的读写状态为可读状态。
[0099] 步骤S212,将各所述候选存储块组中可读存储块的数量最多的存储块组确定为所述目标存储块组。
[0100] 这样,由于目标存储块组为各候选存储块组中可读存储块的数量最多的存储块组,因此,在第一个调度周期内可以确定更多的第二目标存储块,从而在第二个调度周期内需要进行读锁定的第三目标存储块的数量更少,如此,可以进一步减少块数据读取过程中的数据读写冲突,进而可以更好地兼顾目标存储块组中数据的读写需求。
[0101] 在一些实施方式中,在各候选存储块组中可读存储块的数量最多的存储块组有多个的情况下,可以按照预设的选取方式,从可读存储块的数量最多的多个存储块组中选取一个存储块组作为目标存储块组。
[0102] 在一些实施方式中,在各候选存储块组中可读存储块的数量最多的存储块组仅有一个的情况下,可以直接将该可读存储块的数量最多的存储块组确定为目标存储块组。
[0103] 在一些实施例中,步骤S211可以包括如下步骤S221:
[0104] 步骤S221,针对每一所述候选存储块组,确定所述候选存储块组中各存储块的读写状态,并对所述候选存储块组中读写状态为可读状态的存储块进行统计,得到所述候选存储块组中可读存储块的数量。
[0105] 这里,各存储块的读写状态可以包括可读状态或不可读状态。通过对候选存储块组中读写状态为可读状态的存储块的数量进行统计,可以确定该候选存储块组中可读存储块的数量。
[0106] 在一些实施例中,上述方法还可以包括如下步骤S231至步骤S232:
[0107] 步骤S231,获取每一所述候选存储块组中各存储块的写锁定状态和读锁定状态。
[0108] 其中,所述写锁定状态包括以下之一:表征存储块中当前有数据写入的第一状态、表征存储块中当前无数据写入的第二状态;所述读锁定状态包括以下之一:表征存储块当前已被读锁定的第三状态、表征存储块当前未被读锁定的第四状态。
[0109] 这里,存储块的写锁定状态可以表征该存储块是否被写锁定,也即该存储块是否正被其他数据写入操作锁定。存储块的读锁定状态可以表征该存储块是否被读锁定,也即该存储块是否正被其他数据读取操作锁定。
[0110] 在一些实施方式中,在存储块当前正被其他数据读取操作锁定的情况下,可以确定该存储块的读锁定状态为第三状态;在存储块当前未被其他数据读取操作锁定的情况下,可以确定该存储块的读锁定状态为第四状态。
[0111] 在一些实施方式中,对该存储块进行读锁定的其他数据读取操作可以是在当前调度周期之前,对该存储块进行读锁定以从该存储块中读取数据的操作。该其他数据读取操作在从存储块中读取完数据后,可以将该存储块的读锁定解除,读锁定解除后存储块则处于未被读锁定状态。例如,若对该存储块进行读锁定的其他数据读取操作在当前调度周期之前对该存储块进行读锁定,但直到进入当前调度周期仍未完成对该存储块中数据的读取,在这种情况下,该存储块的读锁定不会被解除,也即该存储块仍会被读锁定,从而在当前调度周期内,该存储块的读锁定状态为表征存储块当前已被读锁定的第三状态。又如,若对该存储块进行读锁定的其他数据读取操作在当前调度周期之前对该存储块进行读锁定,但在进入当前调度周期之前已完成对该存储块中数据的读取,在这种情况下,该存储块的读锁定会在当前调度周期之前被解除,从而在当前调度周期内,该存储块的读锁定状态为表征存储块当前未被读锁定的第四状态。
[0112] 在实施时,本领域技术人员可以根据实际情况采用任意合适的方式确定各存储块的写锁定状态和读锁定状态,本公开实施例对此并不限定。
[0113] 在一些实施方式中,可以为每一存储块设置两个状态信息:写锁定状态和读锁定状态。在该存储块中当前有数据写入的情况下,可以将该存储块对应的写锁定状态设置为第一状态,在该存储块中当前无数据写入的情况下,可以将该存储块对应的写锁定状态设置为第二状态。在该存储块当前已被读锁定的情况下,可以将该存储块对应的读锁定状态设置为第三状态,在该存储块当前未被读锁定的情况下,可以将该存储块对应的读锁定状态设置为第四状态。
[0114] 在一些实施方式中,每一存储块对应的读锁定状态和写锁定状态可以分别存储在寄存器中,调度器可以通过读取该寄存器中的取值确定各存储块对应的读锁定状态和写锁定状态。在实施时,读锁定状态和写锁定状态可以存储在同一个寄存器中,也可以存储在不同的寄存器中,本公开实施例对此并不限定。
[0115] 在一些实施方式中,调度器可以通过设定的接口向第二存储器请求查询各存储块的写锁定状态和读锁定状态,第二存储器可以在接收到调度器发送的查询写锁定状态和读锁定状态的请求后,向调度器发送各存储块的写锁定状态和读锁定状态。
[0116] 步骤S232,针对每一所述存储块,在所述存储块的写锁定状态为第二状态、所述存储块的读锁定状态为第四状态的情况下,确定所述存储块的读写状态为可读状态。
[0117] 上述实施例中,获取候选存储块组中各存储块的写锁定状态和读锁定状态,并针对候选存储块组中的每一存储块,在该存储块的写锁定状态为未被写锁定、且读锁定状态为未被读锁定的情况下,确定该存储块的读写状态为可读状态。这样,可以简单高效地确定各候选存储块组中的可读存储块。
[0118] 在一些实施例中,上述步骤S202可以包括如下步骤S241至步骤S242:
[0119] 步骤S241,确定各所述候选存储块组中可读存储块的数量最多的第一存储块组;
[0120] 步骤S242,在所述第一存储块组的数量有多个的情况下,按照预设的选取方式,从各所述第一存储块组中选取一个第一存储块组作为所述目标存储块组。
[0121] 这里,预设的选取方式可以是用户预先设定的,本公开实施例对此并不限定。例如,可以采用随机选取的方式,从各第一存储块组中随机选取一个第一存储块组作为目标存储块组。又如,可以从各第一存储块组中选取对应的组标识最小的一个第一存储块组作为目标存储块组。
[0122] 在一些实施方式中,在各所述候选存储块组中可读存储块的数量均相同的情况下,各候选存储块组均为第一存储块组,可以按照预设的选取方式,从各候选存储块组中选取一个候选存储块组作为目标存储块组。
[0123] 在一些实施方式中,在各所述候选存储块组中可读存储块的数量不相同的情况下,可以将各候选存储块组中可读存储块的数量最多的候选存储块确定为第一存储块组。在第一存储块组的数量为多个的情况下,可以按照预设的选取方式,从各第一存储块组中选取一个第一存储块组作为目标存储块组;在第一存储块组的数量为一个的情况下,可以直接将该第一存储块组确定为目标存储块组。
[0124] 在一些实施例中,上述步骤S201可以包括如下步骤S251:
[0125] 步骤S251,从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组,以及每一对候选存储块和候选存储块组中所述候选存储块对应的第一目标地址、和所述候选存储块组对应的第二目标地址;其中,对于每一对候选存储块和候选存储块组,所述候选存储块的第一目标地址内、和所述候选存储块组的第二目标地址内分别存储有具有对应关系的光线数据和块数据。
[0126] 这里,可以通过对第一存储器中的各存储块、以及第二存储器中的各存储块组中存储的数据进行预取,并在第一存储器的一个存储块中预取到一个光线数据、且在第二存储器的一个存储块组中预取到与该光线数据具有对应关系的块数据的情况下,确定第一存储器中的该存储块和第二存储器中的该存储块组中分别存储有具有对应关系的光线数据和块数据,从而将该存储块和该存储块组确定为一对候选存储块和候选存储块组,并将该存储块中存储相应的光线数据的地址确定为该候选存储块对应的第一目标地址,将该存储块组中存储相应的块数据的多个存储块对应的地址确定为该候选存储块组对应的第二目标地址。
[0127] 在一些实施方式中,可以将存储块和存储块组中预取到的第一对具有对应关系的光线数据和块数据各自所在的地址,分别确定为该光线数据对应的候选存储块的第一目标地址、和该块数据对应的候选存储块组的第二目标地址。
[0128] 在一些实施方式中,可以将存储块和存储块组中预取到的多对具有对应关系的光线数据和块数据中,最早存储的一对光线数据和块数据各自所在的地址,分别确定为该光线数据对应的候选存储块的第一目标地址、和该块数据对应的候选存储块组的第二目标地址。
[0129] 在一些实施例中,上述步骤S201可以包括如下步骤S261至步骤S262:
[0130] 步骤S261,针对从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中确定的每一对存储块和存储块组,检测所述存储块和所述存储块组中是否分别存储有具有对应关系的光线数据和块数据。
[0131] 步骤S262,针对分别存储有具有对应关系的光线数据和块数据的每一对存储块和存储块组,在所述存储块的读写状态为可读状态的情况下,将所述存储块和所述存储块组确定为一对候选存储块和候选存储块组。
[0132] 这里,一对候选存储块和候选存储块组可以是分别存储有具有对应关系的光线数据和块数据的存储块和存储块组,且候选存储块的读写状态为可读状态。
[0133] 这样,确定的第一目标存储块是处于可读状态的,从而可以直接从该第目标存储块中读取光线数据,不需要等待与其他操作之间的读写冲突,从而可以进一步提高光线数据读调度的效率,进而进一步提高运算单元的利用率以及求交运算的运算效率。
[0134] 在一些实施例中,对于每一对候选存储块和候选存储块组,所述候选存储块的第一目标地址内、和所述候选存储块组的第二目标地址内分别存储有具有对应关系的光线数据和块数据;上述步骤S202可以包括:基于每一所述候选存储块组中第一目标地址对应的多个存储块中可读存储块的数量,从各所述候选存储块组中确定所述目标存储块组。
[0135] 在一些实施方式中,可以将各所述候选存储块组中第一目标地址对应的多个存储块中可读存储块的数量最多的存储块组,确定为所述目标存储块组。
[0136] 图2B为本公开实施例提供的一种确定第一目标存储块和目标存储块组的实现流程示意图。如图2B所示,假设第一存储器中包括4个存储块rbank0、rbank1、rbank2和rbank3,第二存储器中包括16个存储块nbank0至nbank15,这16个存储块nbank0至nbank15分别位于4个存储块组group0、group1、group2和group3中;可以首先获取第二存储器中的存储块nbank15至nbank0的写锁定状态wr_bank_status[15:0]、以及读锁定状态lock_bank[15:0];对存储块nbank15至nbank0的写锁定状态wr_bank_status[15:0]和读锁定状态lock_bank[15:0]进行掩码运算,得到存储块nbank15至nbank0的空闲状态idle_bank[15:0](即读写状态),其中,idle_bank[15:0]=(wr_bank_status[15:0]|| lock_bank[15:
~
0]);然后根据存储块nbank15至nbank0的空闲状态idle_bank[15:0],分组统计存储块组group0、group1、group2和group3中分别具有的空闲存储块(也即可读存储块)的数量sum0至sum3,并将空闲存储块的数量最大的存储块组确定为目标存储块组sel_group;此外,可以针对第一存储器中4个存储块与第二存储器中4个存储块组分别组成的16对存储块与存储块组,通过数据预取的方式,确定每一对存储块与存储块组中是否分别存储有具有对应关系的光线数据和块数据,记为tri_valid[15:0],若一对存储块与存储块组中分别存储有具有对应关系的光线数据和块数据,则该对存储块与存储块组在tri_valid[15:0]中对应的数据位的值为0,反之,则为1;还可以获取第一存储器中4个存储块rbank3至rbank0分别对应的读写状态(也即是否被其他操作占用)rtram_rts_use[3:0],若存储块未被其他操作占用,则该对存储块在rtram_rts_use[3:0]中对应的数据位的值为0,反之,则为1;对于存储块rbank3至rbank0中的每一存储块,可以对包含该存储块的4对存储块与存储块组中是否分别存储有具有对应关系的光线数据和块数据(即tri_valid[15:0]中与该存储块对应的4bit数据)、以及该存储块对应的读写状态(即rtram_rts_use[3:0]中与该存储块对应的
1bit数据)进行掩码运算,得到包含该存储块的4对存储块与存储块组分别对应的选取状态sel[3:0]/sel[7:4]/sel[11:8]/sel[15:12](即相应的一对存储块与存储块组是否为可选取进行调度的状态,若一对存储块与存储块组为可选取进行调度的状态,则该对存储块与存储块组在sel[3:0]/sel[7:4]/sel[11:8]/sel[15:12]中对应的数据位的取值为1,反之,则为0);根据每一存储块对应的4对存储块与存储块组分别对应的选取状态sel[3:0]/sel[7:4]/sel[11:8]/sel[15:12],可以确定每一存储块组对应的4对存储块与存储块组分别对应的选取状态sel[12/8/4/0]/sel[13/9/5/1]/ sel[14/10/8/2]/ sel[15/11/7/3];对于每一存储块组,可以将该存储块组对应的4对存储块与存储块组中第一对选取状态为可选取进行调度的状态的一对存储块与存储块组,确定为一对候选存储块和候选存储块组,也即对每一存储块组对应的4对存储块与存储块组分别对应的选取状态sel[12/8/4/0]/ sel[13/9/5/1]/sel[14/10/8/2]/ sel[15/11/7/3]取首1的数据位(即首个为1的数据位),该数据位对应的一对存储块与存储块组即为一对候选存储块和候选存储块组;最后,利用数据选择器MUX,根据目标存储块组sel_group,从各对候选存储块和候选存储块组中选取与该目标存储块组sel_group对应的第一目标存储块sel_bank。需要说明的是,在确定目标存储块组sel_group的过程中,仅对选取状态为可选取进行调度的状态的每一对存储块与存储块组中的存储块组进行空闲存储块的数量的统计,以减少计算量。
[0137] 本公开实施例提供一种基于光线追踪的数据调度系统,如图3A所示,该系统包括:
[0138] 第一存储器100,用于存储光线数据;
[0139] 第二存储器200,用于存储块数据;
[0140] 调度器300,与第一存储器100和第二存储器200通信连接,用于实现上述实施例中所述的基于光线追踪的数据调度方法。
[0141] 在一些实施例中,调度器300用于:确定第一存储器100中的第一目标存储块和第二存储器200中的目标存储块组,所述第一目标存储块和所述目标存储块组中分别存储有具有对应关系的光线数据和块数据;从所述第一目标存储块中读取所述光线数据;在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。
[0142] 在一些实施例中,如图3B所示,该系统还可以包括:运算单元400,与第一存储器100和第二存储器200通信连接,并用于接收分别来自第一存储器100和第二存储器200的光线数据和块数据以用于求交运算。调度器300还用于:从第一目标存储块中读取光线数据至运算单元400;在两个调度周期内,从目标存储块组中读取块数据至运算单元400,以使运算单元400对光线数据和块数据进行求交运算。
[0143] 需要说明的是,调度器300与第一存储器100和第二存储器200之间可以采用任意合适的方式进行通信连接,运算单元400与第一存储器100和第二存储器200之间可以采用任意合适的方式进行通信连接,本公开实施例对此并不限定。例如,通信连接可以包括但不限于基于总线、接口和/或共享存储空间等方式进行地通信连接。
[0144] 基于前述的实施例,本公开实施例提供一种基于光线追踪的数据调度装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(Field ProgrammableGate Array,FPGA)等。
[0145] 图4为本公开实施例提供的一种基于光线追踪的数据调度装置的组成结构示意图,如图4所示,基于光线追踪的数据调度装置500包括:第一确定模块510、第一读取模块520和第二读取模块530,其中:
[0146] 第一确定模块510,用于确定第一存储器中的第一目标存储块和第二存储器中的目标存储块组,所述第一目标存储块和所述目标存储块组中分别存储有具有对应关系的光线数据和块数据;
[0147] 第一读取模块520,用于从所述第一目标存储块中读取所述光线数据;
[0148] 第二读取模块530,用于在两个调度周期内,从所述目标存储块组中读取所述块数据;其中,所述两个调度周期中的第一个调度周期和第二个调度周期分别采用写优先的方式和读优先的方式进行数据读调度。
[0149] 在一些实施例中,第一读取模块还用于:从所述第一目标存储块中读取所述光线数据至运算单元;第二读取模块还用于:在两个调度周期内,从所述目标存储块组中读取所述块数据至所述运算单元,以使所述运算单元对所述光线数据和所述块数据进行求交运算。
[0150] 在一些实施例中,所述块数据存储在所述目标存储块组中的第二目标地址内,所述第二目标地址对应所述目标存储块组中的多个存储块,所述块数据包括第一子数据和/或第二子数据;第二读取模块还用于:在所述第一个调度周期内,在所述第二目标地址对应的多个存储块中存在当前无数据写入的至少一个第二目标存储块的情况下,从所述至少一个第二目标存储块中读取所述第一子数据;在所述第二个调度周期内,在所述第二目标地址对应的多个存储块中存在除所述第二目标存储块之外的至少一个第三目标存储块的情况下,对所述至少一个第三目标存储块进行读锁定,并从所述至少一个第三目标存储块中读取所述第二子数据。
[0151] 在一些实施例中,第二读取模块还用于:在所述第二个调度周期内,在所述目标存储块组中的第四目标存储块当前有数据写请求、且所述第四目标存储块未被读锁定的情况下,向所述第四目标存储块中写入数据。
[0152] 在一些实施例中,第一确定模块还用于:从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组;其中,每一对候选存储块和候选存储块组中均分别存储有具有对应关系的光线数据和块数据;基于每一所述候选存储块组中可读存储块的数量,从各所述候选存储块组中确定所述目标存储块组;将与所述目标存储块组对应的候选存储块确定为所述第一目标存储块。
[0153] 在一些实施例中,第一确定模块还用于:确定每一所述候选存储块组中可读存储块的数量;其中,所述可读存储块的读写状态为可读状态;将各所述候选存储块组中可读存储块的数量最多的存储块组确定为所述目标存储块组。
[0154] 在一些实施例中,所述装置还包括:获取模块,用于获取每一所述候选存储块组中各存储块的写锁定状态和读锁定状态;其中,所述写锁定状态包括以下之一:表征存储块中当前有数据写入的第一状态、表征存储块中当前无数据写入的第二状态;所述读锁定状态包括以下之一:表征存储块当前已被读锁定的第三状态、表征存储块当前未被读锁定的第四状态;第二确定模块,用于针对每一所述存储块,在所述存储块的写锁定状态为第二状态、且所述存储块的读锁定状态为第四状态的情况下,确定所述存储块的读写状态为可读状态。
[0155] 在一些实施例中,第一确定模块还用于:确定各所述候选存储块组中可读存储块的数量最多的第一存储块组;在所述第一存储块组的数量有多个的情况下,按照预设的选取方式,从各所述第一存储块组中选取一个第一存储块组作为所述目标存储块组。
[0156] 在一些实施例中,第一确定模块还用于:从所述第一存储器中的多个存储块、以及所述第二存储器中的多个存储块组中,确定至少一对候选存储块和候选存储块组,以及每一对候选存储块和候选存储块组中所述候选存储块对应的第一目标地址、和所述候选存储块组对应的第二目标地址;其中,对于每一对候选存储块和候选存储块组,所述候选存储块的第一目标地址内、和所述候选存储块组的第二目标地址内分别存储有具有对应关系的光线数据和块数据。
[0157] 以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本公开装置实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
[0158] 需要说明的是,本公开实施例中,如果以软件功能模块的形式实现上述的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本公开实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
[0159] 本公开实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
[0160] 本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
[0161] 本公开实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
[0162] 本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
[0163] 这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
[0164] 需要说明的是,图5为本公开实施例中计算机设备的一种硬件实体示意图,如图5所示,该计算机设备600的硬件实体包括:处理器601、通信接口602和存储器603,其中:
[0165] 处理器601通常控制计算机设备600的总体操作。
[0166] 通信接口602可以使计算机设备通过网络与其他终端或服务器通信。
[0167] 存储器603配置为存储由处理器601可执行的指令和应用,还可以缓存待处理器601以及计算机设备600中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。处理器601、通信接口602和存储器603之间可以通过总线604进行数据传输。
[0168] 应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本公开的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0169] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0170] 在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0171] 上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本公开各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0172] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0173] 或者,本公开上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
[0174] 以上所述,仅为本公开的实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。