CN112749103A - 数据缓存系统和数据缓存系统的控制方法 - Google Patents
数据缓存系统和数据缓存系统的控制方法 Download PDFInfo
- Publication number
- CN112749103A CN112749103A CN201911053590.3A CN201911053590A CN112749103A CN 112749103 A CN112749103 A CN 112749103A CN 201911053590 A CN201911053590 A CN 201911053590A CN 112749103 A CN112749103 A CN 112749103A
- Authority
- CN
- China
- Prior art keywords
- data
- flag bit
- address range
- value
- consumer
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000003860 storage Methods 0.000 claims abstract description 71
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000001351 cycling effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种数据缓存系统以及数据缓存系统的控制方法,能够提高数据缓存系统的管理效率。该数据缓存系统包括:缓存空间,包括K个地址范围,K个地址范围分别用于存储K个条目,每个条目包括拥有者标志位,拥有者标志位用于记录存储标识或空闲标识,存储标识用于指示对应的条目内存储有数据,空闲标识用于指示对应的条目内未存储数据;生产者控制单元,被配置为执行以下操作:向生产者指针指示的第一地址范围中写入数据,并将第一地址范围中的第一拥有者标志位更新为存储标识;消费者控制单元,被配置为执行以下操作:根据消费者指针指示的第二地址范围中的第二拥有者标志位,确定是否从第二地址范围中读取数据。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及数据缓存系统和数据缓存系统的控制方法。
背景技术
随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求也在迅猛上涨。而最近几年,随着人工智能、高性能数据分析和金融分析等计算密集型领域的兴起,异构计算也开始称为热门领域。异构计算系统是由主处理器和加速器两种不同体系结构处理器搭建的计算机系统。例如,主流的异构计算机系统包括中央处理器(centralprocessor unit,CPU)+专用集成电路(application specific integrated circuit,ASIC)ASIC、CPU+现场可编程阵列(field programmable gate array,FPGA)等。
当前异构计算系统的通信机制中,通常可以采用门铃(doorbell DB)握手方式来传递命令。在这种方式下,主处理器和加速器共同维护用于存储命令的数据缓存系统。例如,主处理器可以维护数据缓存系统的头指针,并用于向数据缓存系统中写入命令;加速器用于维护数据缓存系统的尾指针,并用于从数据缓存系统中读取命令。在这种情况下,用于主处理器和加速器之间需要频繁地进行通信,以确定数据缓存系统中当前存储的命令的状态。
随着异构计算系统计算能力的不断攀升,相对滞后的数据通信能力逐渐成为异构计算系统性能能够进一步提升的瓶颈。如何避免主处理器和加速器之间频繁的数据通信、提高数据传输效率是异构计算系统高效协同及性能优化的关键。
发明内容
本申请提供了一种数据缓存系统和数据缓存系统的控制方法,能够提高数据缓存系统的管理效率。
第一方面,提供了一种数据缓存系统,包括:缓存空间,所述缓存空间包括K个地址范围,所述K个地址范围分别用于存储K个条目,K为大于0的整数,所述每个条目包括拥有者标志位,所述拥有者标志位用于记录存储标识或空闲标识,所述存储标识用于指示所述对应的条目内存储有数据,所述空闲标识用于指示对应的条目内未存储数据;生产者控制单元,被配置为执行以下操作:向生产者指针指示的第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位更新为所述存储标识;消费者控制单元,被配置为执行以下操作:根据消费者指针指示的第二地址范围中的第二拥有者标志位,确定是否从所述第二地址范围中读取数据。
可选地,所述生产者指针用于指向所述K个地址范围中的下一个写入数据的地址范围。
可选地,所述消费者指针用于指向所述K个地址范围中的下一个读取数据的地址范围。
可选地,所述缓存空间可以设置于计算机系统中的存储单元中,上述存储单元包括但不限于双倍数据速率同步动态随机存储器(double data rate synchronous dynamicrandom access memory,DDR-SDRAM,DDR)、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、存储阵列等各种可以存储数据的存储介质。
可选地,所述生产者控制单元和所述消费者控制单元可以由计算机系统中的处理器执行。所述处理器包括但不限于中央处理器(central processor unit,CPU)、现场可编程阵列(field programmable gate array,FPGA)或者专用集成电路(applicationspecific integrated circuit,ASIC)。所述生产者控制单元和所述消费者控制单元可以由同一处理器执行,也可以分别由不同的处理器执行。
可选地,所述缓存空间、所述生产者控制单元和所述消费者控制单元可以设置于同一设备中,也可以分别设置于不同设备中。
在本申请实施例中,通过在数据缓存系统中的每个地址范围存储的条目中配置拥有者标志位,以指示对应的条目中是否存储有数据。写数据线程可以在写数据时设置拥有者标志位,而读数据线程通过读取拥有者标志位中的存储标识或空闲标识,以判断条目中是否存储有数据。这种数据缓存系统可以减少写数据线程和读数据线程之间的交互,从而简化了数据缓存系统的管理流程。
结合第一方面,在第一方面的一种可能的实现方式中,所述消费者控制单元被配置为具体执行以下操作:在所述第二拥有者标志位记录为所述存储标识的情况下,从所述第二地址范围中读取数据;在所述第二拥有者标志位记录为所述空闲标识的情况下,确定所述第二地址范围中未存储有数据。
在本申请实施例中,数据缓存系统中消费者控制单元可以通过读取拥有者标志位的存储标识或空闲标识,以判断条目中是否存储有数据,这种数据缓存系统可以减少写数据线程和用于读取数据的线程之间的交互,甚至允许独立运行写数据线程和读数据线程,从而简化了数据缓存系统的管理流程。
结合第一方面,在第一方面的一种可能的实现方式中,数据缓存系统还包括:生产者环寄存器,用于存储生产者环标志位,所述生产者环标志位用于记录所述生产者指针在所述K个地址范围的循环次数为奇数次或偶数次,其中所述拥有者标志位的赋值是根据所述生产者环标志位的赋值确定的;所述生产者控制单元被配置为具体执行以下操作:确定所述生产者环标志位指示的循环次数为奇数次;在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从第二值更新为第一值;或者,所述生产者控制单元被配置为具体执行以下操作:确定所述生产者环标志位指示的循环次数为偶数次;在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从所述第一值更新为所述第二值。
应理解,针对生产者指针指示的地址范围中的拥有者标志位,在所述生产者环标志位指示的循环次数为奇数次时,所述第一值表示存储标识,所述第二值表示空闲标识。在所述生产者环标志位指示的循环次数为偶数次时,所述第二值表示存储标识,所述第一值表示空闲标识。
可选地,本申请实施例对第一值和第二值的具体取值不作限定,只要其能分别表示存储标识和空闲标识即可。可选地,第一值和第二值均可以采用二进制数表示。例如,第一值为可以为0,第二值可以为1。或者,第一值可以为00,第二值可以为11。
在本申请实施例中,写数据线程根据生产者指针的循环次数的奇偶性,来确定存储标识对应的拥有者标志位的赋值,以便于读数据线程在读取数据时可以根据消费者指针的循环次数的奇偶性以及拥有者标志位的赋值确定该条目中是否存储有数据,这种数据缓存系统可以减少写数据线程和用于读取数据的线程之间的交互,从而简化了数据缓存系统的管理流程。
结合第一方面,在第一方面的一种可能的实现方式中,所述数据缓存系统还包括:消费者环寄存器,用于存储消费者环标志位,所述消费者环标志位用于记录所述消费者指针在所述K个地址范围的循环次数为奇数次或偶数次;所述消费者控制单元被配置为具体执行以下操作:确定所述消费者环标志位指示的循环次数为奇数次;在所述第二拥有者标志位记录为所述第一值的情况下,从所述第二地址范围中读取数据;或者,所述消费者控制单元被配置具体执行以下操作:确定所述消费者环标志位指示的循环次数为偶数次;在所述第二拥有者标志位的赋值为所述第二值的情况下,从所述第二地址范围中读取数据。
在本申请实施例中,读数据线程根据消费者环寄存器记录的消费者指针的循环次数的奇偶性,确定消费者指针指示的条目中的拥有者标志位的赋值指示的为存储标识或空闲标识,进而判断条目中是否存储有数据,这种数据缓存系统的定义方式可以减少生产者线程和消费者线程之前的交互,从而简化了数据缓存系统的管理流程。
结合第一方面,在第一方面的一种可能的实现方式中,所述消费者控制单元被配置为具体执行以下操作:确定所述消费者环标志位指示的循环次数为奇数次;在所述第二拥有者标志位的赋值为所述第二值的情况下,确定所述第二地址范围中未存储数据;确定所述消费者环标志位指示的循环次数为偶数次;在所述第二拥有者标志位的赋值为所述第一值的情况下,确定所述第二地址范围中未存储有数据。
结合第一方面,在第一方面的一种可能的实现方式中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
第二方面,提供了一种数据缓存系统的控制方法,所述数据缓存系统包括:
缓存空间,所述缓存空间包括K个地址范围,所述K个地址范围分别用于存储K个条目,K为大于0的整数,所述每个条目包括拥有者标志位,所述拥有者标志位用于记录存储标识或空闲标识,所述存储标识用于指示所述对应的条目内存储有数据,所述空闲标识用于指示对应的条目内未存储数据;生产者指针,所述生产者指针用于指向所述K个地址范围中的下一个写入数据的地址范围;消费者指针,所述消费者指针用于指向所述K个地址范围中的下一个读取数据的地址范围;所述方法包括:向生产者指针指示的第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位更新为所述存储标识;根据消费者指针指示的第二地址范围中的第二拥有者标志位,确定是否从所述第二地址范围中读取数据。
可选地,所述生产者指针用于指向所述K个地址范围中的下一个写入数据的地址范围。
可选地,所述消费者指针用于指向所述K个地址范围中的下一个读取数据的地址范围。
可选地,所述缓存空间可以设置于计算机系统中的存储单元中,上述存储单元包括但不限于双倍数据速率同步动态随机存储器(double data rate synchronous dynamicrandom access memory,DDR-SDRAM,DDR)、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、存储阵列等各种可以存储数据的存储介质。
可选地,所述生产者控制单元和所述消费者控制单元可以由计算机系统中的处理器执行。所述处理器包括但不限于中央处理器(central processor unit,CPU)、现场可编程阵列(field programmable gate array,FPGA)或者专用集成电路(applicationspecific integrated circuit,ASIC)。所述生产者控制单元和所述消费者控制单元可以由同一处理器执行,也可以分别由不同的处理器执行。
可选地,所述缓存空间、所述生产者控制单元和所述消费者控制单元可以设置于同一设备中,也可以分别设置于不同设备中。
在本申请实施例中,通过在数据缓存系统中的每个地址范围存储的条目中配置拥有者标志位,以指示对应的条目中是否存储有数据。写数据线程可以在写数据时设置拥有者标志位,而读数据线程通过读取拥有者标志位中的存储标识或空闲标识,以判断条目中是否存储有数据。这种数据缓存系统可以减少写数据线程和读数据线程之间的交互,从而简化了数据缓存系统的管理流程。
结合第二方面,在第二方面的一种可能的实现方式中,所述根据消费者指针指示的第二地址范围中的第二拥有者标志位,确定是否从所述第二地址范围中读取数据,包括:在所述第二地址范围中的第二拥有者标志位记录为所述存储标识的情况下,从所述第二地址范围中读取数据;或者,在所述第二拥有者标志位记录为所述空闲标识的情况下,确定所述第二地址范围中未存储有数据。
结合第二方面,在第二方面的一种可能的实现方式中,所述数据缓存系统还包括:生产者环寄存器,用于存储生产者环标志位,所述生产者环标志位用于记录所述生产者指针在所述K个地址范围的循环次数为奇数次或偶数次,其中所述拥有者标志位的赋值是根据所述生产者环标志位的赋值确定的;所述在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位更新为所述存储标识,包括:确定所述生产者环标志位指示的循环次数为奇数次;在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从第二值更新为第一值;或者,确定所述生产者环标志位指示的循环次数为偶数次;在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从所述第一值更新为所述第二值。
应理解,针对生产者指针指示的地址范围中的拥有者标志位,在所述生产者环标志位指示的循环次数为奇数次时,所述第一值表示存储标识,所述第二值表示空闲标识。在所述生产者环标志位指示的循环次数为偶数次时,所述第二值表示存储标识,所述第一值表示空闲标识。
可选地,本申请实施例对第一值和第二值的具体取值不作限定,只要其能分别表示存储标识和空闲标识即可。可选地,第一值和第二值均可以采用二进制数表示。例如,第一值为可以为0,第二值可以为1。或者,第一值可以为00,第二值可以为11。
结合第二方面,在第二方面的一种可能的实现方式中,所述数据缓存系统还包括:消费者环寄存器,用于存储消费者环标志位,所述消费者环标志位用于记录所述消费者指针在所述K个地址范围的循环次数为奇数次或偶数次;所述在所述第二地址范围中的第二拥有者标志位记录为所述存储标识的情况下,从所述第二地址范围中读取数据,包括:确定所述消费者环标志位指示的循环次数为奇数次;在所述第二拥有者标志位记录为所述第一值的情况下,从所述第二地址范围中读取数据;或者,所述消费者控制单元被配置具体执行以下操作:确定所述消费者环标志位指示的循环次数为偶数次;在所述第二拥有者标志位的赋值为所述第二值的情况下,从所述第二地址范围中读取数据。
结合第二方面,在第二方面的一种可能的实现方式中,在所述第二拥有者标志位记录为所述空闲标识的情况下,确定所述第二地址范围中未存储有数据,包括:确定所述消费者环标志位指示的循环次数为奇数次;在所述第二拥有者标志位的赋值为所述第二值的情况下,确定所述第二地址范围中未存储数据;或者,确定所述消费者环标志位指示的循环次数为偶数次;在所述第二拥有者标志位的赋值为所述第一值的情况下,确定所述第二地址范围中未存储有数据。
结合第二方面,在第二方面的一种可能的实现方式中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
第三方面,提供了一种芯片,所述芯片上设置有如第一方面或第一方面中任一种可能的实现方式中所述的数据缓存系统。
第四方面,提供了一种计算机系统,所述计算机系统包括如第一方面或第一方面中任一种可能的实现方式中所述的数据缓存系统。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码包括用于执行第二方面或第二方面任一种可能的实现方式的方法的指令。
第六方面,提供了一种计算机程序代码,所述计算机程序代码在计算机上运行时,所述计算机用于执行第二方面或第二方面任一种可能的实现方式的方法。
第七方面,提供了一种数据缓存系统,包括:缓存空间,所述缓存空间包括K个地址范围,所述K个地址范围分别用于存储K个条目,K为大于0的整数,所述每个条目包括拥有者标志位,所述拥有者标志位用于记录存储标识或空闲标识,所述存储标识用于指示所述对应的条目内存储有数据,所述空闲标识用于指示对应的条目内未存储数据;所述缓存空间被配置为:在生产者指针指示的第一地址范围接收数据的情况下,所述第一地址范围中的第一拥有者标志位被更新为所述存储标识;所述缓存空间还被配置为:在消费者指针指示的第二地址范围中的第二拥有者标志位记录为所述存储标识的情况下,所述第二地址范围中的数据被读取。
可选地,所述生产者指针用于指向所述K个地址范围中的下一个写入数据的地址范围。
可选地,所述消费者指针用于指向所述K个地址范围中的下一个读取数据的地址范围。
可选地,所述缓存空间还被配置为:在消费者指针指示的第二地址范围中的第二拥有者标志位记录为所述空闲标识的情况下,未在所述第二地址范围中存储数据。
可选地,所述缓存空间可以设置于计算机系统中的存储单元中,上述存储单元包括但不限于双倍数据速率同步动态随机存储器(double data rate synchronous dynamicrandom access memory,DDR-SDRAM,DDR)、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、存储阵列等各种可以存储数据的存储介质。
在本申请实施例中,通过在数据缓存系统中的每个地址范围存储的条目中配置拥有者标志位,以指示对应的条目中是否存储有数据。写数据线程可以在写数据时设置拥有者标志位,而读数据线程通过读取拥有者标志位中的存储标识或空闲标识,以判断条目中是否存储有数据。这种数据缓存系统可以减少写数据线程和读数据线程之间的交互,从而简化了数据缓存系统的管理流程。
结合第七方面,在第七方面的一种可能的实现方式中,还包括:生产者环寄存器,用于存储生产者环标志位,所述生产者环标志位用于记录所述生产者指针在所述K个地址范围的循环次数为奇数次或偶数次;所述缓存空间被具体配置为:在所述生产者环标志位指示的循环次数为奇数次,且所述第一地址范围接收数据的情况下,将所述第一拥有者标志位从第二值更新为第一值;或者,在所述生产者环标志位指示的循环次数为偶数次,且所述第一地址范围中接收数据的情况下,将所述第一拥有者标志位从所述第一值更新为所述第二值。
应理解,针对生产者指针指示的地址范围中的拥有者标志位,在所述生产者环标志位指示的循环次数为奇数次时,所述第一值表示存储标识,所述第二值表示空闲标识。在所述生产者环标志位指示的循环次数为偶数次时,所述第二值表示存储标识,所述第一值表示空闲标识。
可选地,本申请实施例对第一值和第二值的具体取值不作限定,只要其能分别表示存储标识和空闲标识即可。可选地,第一值和第二值均可以采用二进制数表示。例如,第一值为可以为0,第二值可以为1。或者,第一值可以为00,第二值可以为11。
结合第七方面,在第七方面的一种可能的实现方式中,还包括:消费者环寄存器,用于存储消费者环标志位,所述消费者环标志位用于记录所述消费者指针在所述K个地址范围的循环次数为奇数次或偶数次;所述缓存空间被具体配置为:在所述消费者环标志位指示的循环次数为奇数次,且所述第二拥有者标志位记录为所述第一值的情况下,所述第二地址范围中的数据被读取;或者,在所述消费者环标志位指示的循环次数为偶数次,且所述第二拥有者标志位的赋值为所述第二值的情况下,所述第二地址范围中的数据被读取。
结合第七方面,在第七方面的一种可能的实现方式中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
附图说明
图1是本申请一实施例的应用环境的示意图。
图2是本申请又一实施例的应用环境的示意图。
图3是本申请又一实施例的应用环境的示意图。
图4是本申请又一实施例的应用环境的示意图。
图5是本申请又一实施例的应用环境的示意图。
图6是本申请又一实施例的应用环境的示意图。
图7是本申请一实施例的数据缓存系统的结构图。
图8是本申请一实施例的数据缓存系统的工作状态示意图。
图9是本申请一实施例的数据缓存系统中的条目的结构示意图。
图10是本申请一实施例的数据缓存系统的工作状态示意图。
图11是本申请又一实施例的数据缓存系统的工作状态示意图。
图12是本申请又一实施例的应用环境的示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
图1是本申请实施例的一种可能的应用环境,如图1所示,本申请实施例的数据缓存系统可以应用于异构计算系统中。异构计算系统中可包括主处理器101和加速器201。主处理器101和加速器201可以为相同类型的处理器,也可以为不同类型的处理器。例如,主处理器101可以是CPU,加速器201可以包括FPGA、ASIC等。或者,在一些示例中,主处理器101可以为复杂指令集计算机(complex instruction set computer,CISC),所述加速器201可以为精简指令集计算机(reduced instruction set computer,RISC)。可选地,所述主处理器101还包括内存102。
所述主处理器101和所述加速器201可以用于共同维护所述数据缓存系统。例如,所述数据缓存系统中的缓存空间可以设置于所述主处理器101的内存中,也可以设置于所述加速器201中。在本申请实施例中,可以将用于向数据缓存系统写入数据的上层软件称为生产者或生产者线程,将用于从数据缓存系统读取数据的上层软件称为消费者或消费者线程。
图1中的主处理器101和加速器201可以分别用于维护生产者线程和消费者线程。需要说明的是,主处理器101和加速器201之间可以维护一个或多个数据缓存系统。对于不同的数据缓存系统,主处理器101可以作为生产者,也可以作为消费者。同样地,对于不同的数据缓存系统,加速器201可以作为消费者,也可以作为生产者。另外,图1中的主处理器101或加速器201也可以单独维护本申请实施例中的数据缓存系统。例如,主处理器101可以作为同一个数据缓存系统的生产者和消费者。
例如,图2是本申请又一实施例的一种可能的应用场景。如图2所示,所述主处理器101和所述加速器201之间共同维护一个数据缓存系统。其中,主处理器101为生产者,用于维护生产者线程,并向所述缓存空间写入数据。加速器201为消费者,用于维护消费者线程,并从所述缓存空间读取数据。需要说明的是,所述缓存空间可以设置于所述主处理器101的内存中,也可以设置于所述加速器201中。或者,也可以设置于与所述主处理器101或所述加速器201相连的其它存储设备中,只要所述缓存空间可以满足主处理器101和加速器201均可以访问的要求即可。
又例如,图3是本申请又一实施例的一种可能的应用场景。如图3所示,所述主处理器101和所述加速器201之间共同维护一个数据缓存系统。其中,加速器201为生产者,用于维护生产者线程,并向所述缓存空间写入数据。主处理器101为消费者,用于维护消费者线程,并从所述缓存空间读取数据。
又例如,图4是本申请又一实施例的一种可能的应用场景。如图4所示,所述主处理器101也可以单独维护一个数据缓存系统。主处理器101可以同时作为一个数据缓存系统中的生产者和消费者,并且同时维护生产者线程和消费者线程。
又例如,图5是本申请又一实施例的一种可能的应用场景。如图5所示,所述加速器201也可以单独维护一个数据缓存系统。加速器201可以同时作为一个数据缓存系统的生产者和消费者,并且同时维护生产者线程和消费者线程。
本领域技术人员能够理解,所述主处理器101和加速器201可以同时维护图2至图5中的多个数据缓存系统。即所述主处理器101和加速器201可以同时作为不同数据缓存系统的生产者或消费者。
需要说明的是,图1至图5中的应用环境仅仅作为示例,本申请实施例的数据缓存系统并不限于异构计算系统。所述数据缓存系统也可以由非异构计算系统中的单一的处理设备维护,即生产者线程和消费者线程由同一个处理设备执行。
例如,图6是本申请又一实施例的一种可能的应用场景。图6为数据缓存系统应用于非异构计算系统中的场景。如图6所示,计算设备301也可以单独维护一个数据缓存系统。计算设备301可以同时作为一个数据缓存系统的生产者和消费者,并且同时维护生产者线程和消费者线程。需要说明的是,所述缓存空间可以设置于所述计算设备301的内存中。或者,也可以设置于与所述计算设备301相连的其它存储设备中,只要所述缓存空间可以满足计算设备301可以访问的要求即可。
所述计算设备301可以包括但不限于CPU、FPGA、ASIC、RISC等。
接下来结合附图,继续介绍本申请实施例中的数据缓存系统,在本申请实施例中,该数据缓存系统也可以称为队列环缓存结构,或者极简环结构(extremely simple ringinterface,ESRI)。
图7是本申请一实施例的数据缓存系统的结构示意图。如图7所示,该数据缓存系统可包括缓存空间、生产者控制单元和消费者控制单元。其中,所述缓存空间用于存储数据,所述生产者控制单元和所述消费者控制单元均可以访问所述缓存空间。所述生产者控制单元用于执行生产者线程,所述消费者控制单元用于执行消费者线程。生产者控制单元和消费者控制单元的功能可以由软件实现。在一些示例中,所述生产者控制单元和所述消费者控制单元可以位于不同的处理设备中。例如,可以由图1中的主处理器101执行生产者控制单元的功能,由图1中的加速器201执行消费者控制单元的功能。可选地,所述生产者控制单元和消费者控制单元的功能可以由同一处理设备执行。例如,生产者控制单元和消费者控制单元的功能可以均由图1中的主处理器101执行,或者均由图7中的加速器201执行,或者也可以均由图6中的计算设备301执行。
图8是本申请一实施例的数据缓存系统的工作状态示意图。该数据缓存系统包括缓存空间。其中,该缓存空间可以设置于生产者和消费者均能访问的存储设备中。例如,上述缓存空间的位置可以如图1至图6所述,此处不再赘述。如图8所示,所述缓存空间包括K个地址范围,所述K个地址范围分别用于存储K个条目,所述每个条目包括拥有者标志位,所述拥有者标志位用于指示所述每个条目内是否存储有数据。K为大于0的整数,作为示例,图8中的K=16。其中,所述拥有者标志位用于记录存储标识或空闲标识,所述存储标识用于指示所述对应的条目内存储有数据,所述空闲标识用于指示对应的条目内未存储数据。
需要说明的是,在本申请实施例中,每个条目中存储的数据可以为命令,或者也可以为除命令之外的其它类型的数据。
作为示例,图9是本申请一实施例的数据缓存系统中的条目的结构示意图。如图9所示,条目包括两个域段,分别为拥有者(ownership)标志位和命令(command)。其中,ownership可以是生产者和消费者通信的标志。例如,在对数据缓存系统进行初始化时,可以将所有条目中的拥有者标志位的赋值设置为0,以指示条目中未存储有数据。上层软件每向数据缓存系统中的条目中写入一个命令,可以将该条目的拥有者标志位由0更新为1,1表示该条目中存储有命令。上层软件在读取命令时,可以根据拥有者标志位的赋值,判断该条目中是否存储有命令。可选地,图9中的命令域段也可以被数据(data)域段替代。
继续参见图8,所述数据缓存系统使用生产者指针(producer indicator,PI)和消费者指针(consumer indicator,CI)维护缓存空间,所述生产者指针用于指向所述K个地址范围中的下一个写入数据的地址范围,所述消费者指针用于指向所述K个地址范围中的下一个读取数据的地址范围。在本申请实施例中,写入数据可以指在生产者指针指向的地址范围中的条目中写入数据,读取数据可以在消费者指针指向的地址范围中的条目中读取数据。
其中,所述数据缓存系统可以分别维护所述生产者指针对应的寄存器和所述消费者指针对应的寄存器。在一些示例中,若生产者线程和消费者线程由不同的处理设备执行,则所述生产者指针和所述消费者指针可以由不同的处理设备维护。例如,可以由图1中的主处理器101维护生产者指针,由图1中的加速器201维护消费者指针。可选地,若生产者线程和消费者线程由同一处理设备执行,则所述生产者指针和消费者指针可以由同一处理设备维护。
可选地,所述生产者控制单元被配置为执行以下操作:确定所述生产者指针指示的第一地址范围;在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位更新为所述存储标识。
可选地,所述消费者控制单元被配置为执行以下操作:确定所述消费者指针指示的第二地址范围;根据所述第二拥有者标志位,确定是否从所述第二地址范围中读取数据。
例如,所述消费者控制单元被具体配置为:在所述第二地址范围中的第二拥有者标志位记录为所述存储标识的情况下,从所述第二地址范围中读取数据;在所述第二拥有者标志位记录为所述空闲标识的情况下,确定所述第二地址范围中未存储有数据。
在本申请实施例中,通过在数据缓存系统中的每个地址范围存储的条目中配置拥有者标志位,以指示对应的条目中是否存储有数据,从而读数据线程可以通过读取拥有者标志位的存储标识或空闲标识,以判断条目中是否存储有数据,这种数据缓存系统可以减少写数据线程和用于读取数据的线程之间的交互,甚至允许独立运行写数据线程和读数据线程,从而简化了数据缓存系统的管理流程。
可选地,继续参见图8,所述数据缓存系统还包括生产者环(producer loop,PLoop)寄存器,用于存储生产者环标志位,所述生产者环标志位用于记录所述生产者指针指示所述K个地址范围的循环次数为奇数次或偶数次。例如,可以设置PLoop=0表示奇数次,PLoop=1表示偶数次。或者,也可以设置PLoop=1表示奇数次,PLoop=0表示偶数次。
所述生产者控制单元被配置为具体执行以下操作:确定所述生产者环标志位指示的循环次数为奇数次;在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从第二值更新为第一值;或者,所述生产者控制单元被配置为具体执行以下操作:确定所述生产者环标志位指示的循环次数为偶数次;在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从所述第一值更新为所述第二值。
可选地,所述第一值=1,所述第二值=0;或者,所述第一值=0,所述第二值=1。
可选地,所述生产者环标志位遵循以下的规则进行赋值:所述生产者指针每循环一个轮次,所述生产者环标志位的赋值就翻转一次。例如,若所述生产者环标志位的初始赋值为0,则生产者在进行第一个轮次的循环过程中,生产者环标志位的初始赋值维持为0。在生产者指针完成第一个轮次的循环之后,所述生产者环标志位的赋值由0翻转为1。生产者在进行第二个轮次的循环过程中,生产者环标志位的初始赋值维持为1。在生产者指针完成第二个轮次的循环之后,所述生产者环标志位的赋值由1翻转为0。生产者在进行第三个轮次的循环过程中,生产者环标志位的初始赋值维持为0。换句话说,所述生产者环标志位在生产者指针进行奇数次循环时的赋值均为0,所述生产者环标志位在生产者指针进行偶数次循环时的赋值均为1。因此,所述生产者环标志位可以用于指示所述生产者指针循环次数的奇偶性。
可选地,所述拥有者标志位遵循以下的规则进行赋值:所述生产者指针每循环一个轮次,所述存储标识对应的拥有者标志位的赋值就翻转一次。假设拥有者标志位的初始赋值为第二值,在生产者指针进行奇数次循环时,生产者控制单元在写入数据时将拥有者标志位的赋值由第二值更新为第一值。当生产者指针进行偶数次循环时,生产者控制单元在写入数据时,需要将拥有者标志位的赋值由第一值更新为第二值。因此,生产者控制单元需要根据生产者指针指示的循环次数的奇偶性,来确定写入拥有者标志位的赋值是第一值还是第二值。
可选地,本申请实施例中可以只允许生产者控制单元更新拥有者标志位的赋值,而消费者控制单元不能用于更新拥有者标志位的赋值。
由上述描述可知,所述拥有者标志位的赋值是根据所述生产者环标志位的赋值确定的。根据所述生产者指针的循环次数为奇数次或偶数次,所述拥有者标志位的赋值的含义不同。因此,上层软件在数据缓存系统中的条目中写入数据时,可以根据PLoop的当前赋值,确定该条目的拥有者标志位的赋值。从而便于上层软件在读取数据时确定拥有者标志位的赋值所指示的含义是存储有数据或者未存储有数据。
在本申请实施例中,写数据线程可以根据生产者指针的循环次数的奇偶性,来确定存储标识对应的拥有者标志位的赋值,以便于读数据线程在读取数据时根据消费者指针的循环次数的奇偶性以及拥有者标志位的赋值确定该条目中是否存储有数据。因此,读数据的线程无需通过与写数据的线程进行交互来获知哪些条目中存储有数据。这种数据缓存系统可以减少写数据线程和用于读取数据的线程之前的交互,甚至可以独立地运行写数据线程和读数据线程,从而简化了数据缓存系统的管理流程。
所述数据缓存系统还包括消费者环(consumer loop,CLoop)寄存器,用于存储消费者环标志位,所述消费者环标志位用于记录所述生产者指针指示所述K个地址范围的循环次数为奇数次或偶数次。例如,可以设置CLoop=0表示奇数次,CLoop=1表示偶数次。或者,也可以设置CLoop=1表示奇数次,CLoop=0表示偶数次。
所述消费者控制单元被配置为具体执行以下操作:所述在所述第二地址范围中的第二拥有者标志位记录为所述存储标识的情况下,从所述第二地址范围中读取数据,包括:确定所述消费者环标志位指示的循环次数为奇数次;在所述第二拥有者标志位记录为所述第一值的情况下,从所述第二地址范围中读取数据;或者,所述消费者控制单元被配置具体执行以下操作:确定所述消费者环标志位指示的循环次数为偶数次;在所述第二拥有者标志位的赋值为所述第二值的情况下,从所述第二地址范围中读取数据。
应理解,针对生产者指针指示的地址范围中的拥有者标志位,在所述生产者环标志位指示的循环次数为奇数次时,所述第一值表示存储标识,所述第二值表示空闲标识。在所述生产者环标志位指示的循环次数为偶数次时,所述第二值表示存储标识,所述第一值表示空闲标识。
可选地,本申请实施例对第一值和第二值的具体取值不作限定,只要其能分别表示存储标识和空闲标识即可。可选地,第一值和第二值均可以采用二进制数表示。例如,所述第一值=1,所述第二值=0;或者,所述第一值=0,所述第二值=1。
可选地,所述消费者环标志位遵循以下的规则进行赋值:所述消费者指针每循环一个轮次,所述消费者环标志位的赋值就翻转一次。例如,若所述消费者环标志位的初始赋值为0,则消费者在进行第一个轮次的循环过程中,消费者环标志位的初始赋值维持为0。在消费者指针完成第一个轮次的循环之后,所述消费者环标志位的赋值由0翻转为1。消费者在进行第二个轮次的循环过程中,消费者环标志位的初始赋值维持为1。在消费者指针完成第二个轮次的循环之后,所述消费者环标志位的赋值由1翻转为0。消费者在进行第三个轮次的循环过程中,消费者环标志位的初始赋值维持为0。换句话说,所述消费者环标志位在消费者指针进行奇数次循环时的赋值均为0,所述消费者环标志位在消费者指针进行偶数次循环时的赋值均为1。因此,所述消费者环标志位可以用于指示所述消费者指针循环次数的奇偶性。
可选地,所述消费者控制单元在判断所述拥有者标志位的含义时需遵循以下的规则:所述消费者指针每循环一个轮次,所述存储标识对应的拥有者标志位的赋值就翻转一次。需要说明的是,所述消费者控制单元在判断拥有者标志位的赋值含义的规则与生产者控制单元为拥有者标志位赋值的规则有关。例如,假设拥有者标志位的初始赋值为第二值,在生产者针进行奇数次循环时,生产控制单元在写入数据时将拥有者标志位的赋值由第二值更新为第一值。因此,当消费者指针进行奇数次循环时,若拥有者标志位的赋值为第一值,则表示对应条目中存储有数据,若拥有者标志位的赋值为第二值,则表示对应的条目中未存储有数据。当消费者指针进行偶数次循环时的判断规则类似,此处不再赘述。
在本申请实施例中,读数据线程根据消费者环寄存器记录的消费者指针的循环次数的奇偶性,确定消费者指针指示的条目中的拥有者标志位的赋值指示的为存储标识或空闲标识,进而判断条目中是否存储有数据,这种数据缓存系统的定义方式可以减少写数据线程和读数据线程之间的交互,甚至允许独立运行写数据线程和读数据线程,从而简化了数据缓存系统的管理流程。
例如,当生产者指针循环次数为奇数次时,PLoop=0,所述数据缓存系统在所述生产者指针指向的地址范围写入命令时,将拥有者标志位的赋值配置为1,1表示该拥有者标志位对应的条目中存储有命令,0表示该拥有者标志位对应的条目内未存储有命令。当生产者指针循环次数为偶数次时,PLoop=1,所述数据缓存系统在所述生产者指针指向的地址范围中写入命令时,将拥有者标志位的赋值配置为0,0表示该拥有者标志位对应的条目中存储有命令,1表示该拥有者标志位对应的条目中未存储有命令。
可选地,消费者指针在读取命令时根据消费者环标志位的赋值确定当前拥有者标志的的赋值的含义。例如,当消费者指针的循环次数为奇数次时,CLoop=0,在根据消费者指针读取命令时,若所述拥有者标志位的赋值配置为1,则表示所述条目中存储有命令,上层软件可以读取命令;若拥有者标志位的赋值配置为0,则表示所述条目中未存储有命令,上层软件不读取命令。当消费者指针的循环次数为偶数次时,CLoop=1,在根据消费者指针读取命令时,若所述拥有者标志位的赋值配置为0,则表示所述条目中存储有命令,上层软件可以读取命令;若拥有者标志位的赋值配置为1,则表示所述条目中未存储有命令,上层软件不读取命令。
可选地,本申请实施例中的数据缓存系统包括的地址范围的数量K可以为2x个,x为大于等于1的正整数。
在一些示例中,数据缓存系统可以由生产者和消费者管理。其中,生产者可以指为对条目进行写操作的上层软件模块,消费者可以指为对条目进行读操作的上层软件模块。生产者用于维护生产者指针,用于表示已经生产的位置,生产者还用于维护生产者环标志位,表示生产了一个轮次的条目。消费者还用于维护一个消费者指针,表示读取下一个条目的位置。消费者还维护消费者环标志位,表示消费了一个轮次的条目。在本申请实施例中,生产条目指在数据缓存系统中写入条目中的命令,消费条目指在数据缓存系统中读取条目中的命令。
在本申请实施例中,可以由上层软件确保数据缓存系统不会发生上溢,例如,生产者可以确保最多K个命令发送给数据缓存系统,因此PI永远不会超过CI,不会出现上溢的情况。因此数据缓存系统中可以不设置指示满状态的寄存器和指示空状态的寄存器。其中满状态是指数据缓存系统中未被读取的条目的数量已经达到K个,空状态是指数据缓存系统中写入命令的条目的数量为0。这种数据缓存系统的定义方式可以简化数据缓存系统的管理流程。
图10是本申请一实施例的数据缓存系统的工作状态示意图。图10示出了生产者指针循环从第一轮到第二轮的过程。其中,可以将向数据缓存系统写入命令称为生产命令或生产条目,将从数据缓存系统读取命令称为消费命令或消费条目。如图10所示,系统初始化时,PI=0,CI=0,PLoop=0,CLoop=0,所有条目的ownership=0,表示条目中的命令未被生产。在生产第一个条目时,以PI=0为索引地址,将条目中的ownership域段设置为1,将command域段设置为命令0(command 0),表示PI=0的条目已生产出来。然后将PI的值更新为PI=PI+1,即PI=1,以指向下一个待生产的条目。PI根据这种方式一直生产条目,在PI=K-1之后,PI的下一个取值为PI=0。此时PLoop的值由0改变为1,表示生产者指针已经完成第一轮的生产,而PI返回到初始值0。
图11是本申请又一实施例的数据缓存系统的工作状态示意图。图11示出了消费者指针循环从第一轮到第二轮的过程。如图11所示,在第一个轮次中,消费者在CLoop=0时,以CI值为索引,检查条目中的ownership值,如果ownership=1,则表示该条目的命令已经被生产出来,消费者以CI为索引,读取条目中对应的命令。若ownership=0,则表示该条目的命令未被生产出来。
随着消费者不断地消费条目中的命令,CI值不断增加,数据缓存系统中的待处理命令的个数已经低于最大值K,生产者可以继续生产。此时生产者开始第二轮次的生产,PLoop=1。生产者生产出一个新的命令后,将对应的ownership的取值改变,即将ownership的取值从1改变为0,表示第二轮次的条目已经生产出来。
当消费者消费完第一个轮次中的K个条目之后,CI的取值返回到初始值0,CLoop的值由0变为1,表示消费者已消费完第一个轮次的条目。在第二个轮次中,消费者需要判断ownership值是否为0,ownership=0表示该条目已被生产出来,而ownership=1表示该条目未被生产出来。
由此可见,生产者和消费者各自拥有环寄存器(PLoop和CLoop),来表明ownership值的含义。例如,当PLoop(或者CLoop)的取值为0时,表示生产者(或者消费者)循环次数为奇数次,ownership=1表示该条目已被生产出来,可以消费。而当PLoop(或者CLoop)的取值为1时,表示生产者(或者消费者)的循环次数为偶数次,ownership=0表示该条目已被生产出来,可以消费。
在本申请实施例中,通过生产者环寄存器和消费者环寄存器来记录生产者指针和消费者指针的循环次数状态,以便于上层软件通过读取生产者环寄存器和消费者环寄存器的赋值,来确定条目中的拥有者标志位的赋值含义,进而判断条目中是否存储有命令,这种数据缓存系统可以减少写数据线程和读数据线程之间的交互,甚至允许独立运行写数据线程和读数据线程,从而简化了数据缓存系统的管理流程。
继续参见图10,在PLoop=1,Cloop=0的情况下,数据缓存系统中已经存满K个命令,而消费者还没有消费任何条目,数据缓存系统中的命令数目已达到系统的命令上限。在本申请实施例中,为了避免数据缓存系统溢出,可以通过上层软件进行设计,保证生产者在命令数据达到上限的情况下,不会继续更新命令。其中,上述对上层软件进行设计的方式可以具体参见图12中的描述。
图12是本申请又一实施例的应用场景的示意图。图12中,主处理器101和加速器201之间可以维护两个数据缓存系统,一个用于存储命令队列,另一个用于存储完成队列。所述命令队列用存储待处理的命令,所述完成队列用于存储已完成的命令。对于命令队列来说,主处理器101为生产者,加速器201为消费者。主处理器101用于在命令队列中写入命令,加速器201用于从命令队列中读取命令。对于完成队列来说,加速器201为生产者,主处理器101为消费者。具体地,加速器201在读取命令之后,可以对命令进行处理,并且在完成命令之后,向完成队列中写入已完成的命令,主处理器101可以从完成队列中读取命令以获知当前已完成的命令。主控制器可以控制缓存在命令队列中的命令的数目,并在通过完成队列每接收一个命令的完成消息之后,再向命令队列发送一条新的命令,保证在线的命令的数量不超过上限。
例如,假设命令队列存储命令数目的上限为256条。则主处理器101可以首先向命令队列中写入256条命令。然后主处理器101被限定不再向命令队列发送新的命令。当加速器201完成一个命令之后,可以向完成队列中写入该命令的完成条目。主处理器101可以通过读取完成队列中的完成条目,来获知该命令已完成。其中,该命令的完成条目可以理解为该命令的完成消息。因此主处理器101可以向命令队列中发送一条新的命令。在后续过程中,主处理器101每接收到一条命令的完成消息之后,就可以向命令队列中发出一条新的命令,直至没有新的命令产生。这种上层软件设计方式可以保证命令队列中的命令数目小于或等于256条,从而避免数据缓存系统中发生命令溢出的情况。
在本申请实施例中,计算机系统可以通过上层软件确保数据缓存系统不会发生上溢,因此数据缓存系统中可以不设置指示满状态的寄存器和指示空状态的寄存器,这种数据缓存系统的定义方式可以简化数据缓存系统的管理流程。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种数据缓存系统,其特征在于,包括:
缓存空间,所述缓存空间包括K个地址范围,所述K个地址范围分别用于存储K个条目,K为大于0的整数,所述每个条目包括拥有者标志位,所述拥有者标志位用于记录存储标识或空闲标识,所述存储标识用于指示所述对应的条目内存储有数据,所述空闲标识用于指示对应的条目内未存储数据;
生产者控制单元,被配置为执行以下操作:向生产者指针指示的第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位更新为所述存储标识;
消费者控制单元,被配置为执行以下操作:根据消费者指针指示的第二地址范围中的第二拥有者标志位,确定是否从所述第二地址范围中读取数据。
2.如权利要求1所述的数据缓存系统,其特征在于,所述消费者控制单元被配置为具体执行以下操作:
在所述第二拥有者标志位记录为所述存储标识的情况下,从所述第二地址范围中读取数据;或者,
在所述第二拥有者标志位记录为所述空闲标识的情况下,确定所述第二地址范围中未存储有数据。
3.如权利要求1或2所述的数据缓存系统,其特征在于,还包括:
生产者环寄存器,用于存储生产者环标志位,所述生产者环标志位用于记录所述生产者指针在所述K个地址范围的循环次数为奇数次或偶数次;
所述生产者控制单元被配置为具体执行以下操作:
确定所述生产者环标志位指示的循环次数为奇数次;
在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从第二值更新为第一值;或者,
所述生产者控制单元被配置为具体执行以下操作:
确定所述生产者环标志位指示的循环次数为偶数次;
在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从所述第一值更新为所述第二值。
4.如权利要求3所述的数据缓存系统,其特征在于,还包括:
消费者环寄存器,用于存储消费者环标志位,所述消费者环标志位用于记录所述消费者指针在所述K个地址范围的循环次数为奇数次或偶数次;
所述消费者控制单元被配置为具体执行以下操作:
确定所述消费者环标志位指示的循环次数为奇数次;
在所述第二拥有者标志位记录为所述第一值的情况下,从所述第二地址范围中读取数据;或者,
所述消费者控制单元被配置具体执行以下操作:
确定所述消费者环标志位指示的循环次数为偶数次;
在所述第二拥有者标志位的赋值为所述第二值的情况下,从所述第二地址范围中读取数据。
5.如权利要求4所述的数据缓存系统,其特征在于,所述消费者控制单元被配置为具体执行以下操作:
确定所述消费者环标志位指示的循环次数为奇数次;
在所述第二拥有者标志位的赋值为所述第二值的情况下,确定所述第二地址范围中未存储数据;或者,
确定所述消费者环标志位指示的循环次数为偶数次;
在所述第二拥有者标志位的赋值为所述第一值的情况下,确定所述第二地址范围中未存储有数据。
6.如权利要求3至5中任一项所述的数据缓存系统,其特征在于,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
7.一种数据缓存系统的控制方法,其特征在于,所述数据缓存系统包括:缓存空间,所述缓存空间包括K个地址范围,所述K个地址范围分别用于存储K个条目,K为大于0的整数,所述每个条目包括拥有者标志位,所述拥有者标志位用于记录存储标识或空闲标识,所述存储标识用于指示所述对应的条目内存储有数据,所述空闲标识用于指示对应的条目内未存储数据;
所述方法包括:
向生产者指针指示的第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位更新为所述存储标识;
根据消费者指针指示的第二地址范围中的第二拥有者标志位,确定是否从所述第二地址范围中读取数据。
8.如权利要求7所述的方法,其特征在于,所述根据消费者指针指示的第二地址范围中的第二拥有者标志位,确定是否从所述第二地址范围中读取数据,包括:
在所述第二地址范围中的第二拥有者标志位记录为所述存储标识的情况下,从所述第二地址范围中读取数据;或者,
在所述第二拥有者标志位记录为所述空闲标识的情况下,确定所述第二地址范围中未存储有数据。
9.如权利要求8或9所述的方法,其特征在于,所述数据缓存系统还包括:
生产者环寄存器,用于存储生产者环标志位,所述生产者环标志位用于记录所述生产者指针在所述K个地址范围的循环次数为奇数次或偶数次,其中所述拥有者标志位的赋值是根据所述生产者环标志位的赋值确定的;
所述在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位更新为所述存储标识,包括:
确定所述生产者环标志位指示的循环次数为奇数次;
在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从第二值更新为第一值;或者,
确定所述生产者环标志位指示的循环次数为偶数次;
在所述第一地址范围中写入数据,并将所述第一地址范围中的第一拥有者标志位从所述第一值更新为所述第二值。
10.如权利要求9所述的方法,其特征在于,还包括:
消费者环寄存器,用于存储消费者环标志位,所述消费者环标志位用于记录所述消费者指针在所述K个地址范围的循环次数为奇数次或偶数次;
所述在所述第二地址范围中的第二拥有者标志位记录为所述存储标识的情况下,从所述第二地址范围中读取数据,包括:
确定所述消费者环标志位指示的循环次数为奇数次;
在所述第二拥有者标志位记录为所述第一值的情况下,从所述第二地址范围中读取数据;或者,
所述消费者控制单元被配置具体执行以下操作:
确定所述消费者环标志位指示的循环次数为偶数次;
在所述第二拥有者标志位的赋值为所述第二值的情况下,从所述第二地址范围中读取数据。
11.如权利要求10所述的方法,其特征在于,还包括:
在所述第二拥有者标志位记录为所述空闲标识的情况下,确定所述第二地址范围中未存储有数据,包括:
确定所述消费者环标志位指示的循环次数为奇数次;
在所述第二拥有者标志位的赋值为所述第二值的情况下,确定所述第二地址范围中未存储数据;或者,
确定所述消费者环标志位指示的循环次数为偶数次;
在所述第二拥有者标志位的赋值为所述第一值的情况下,确定所述第二地址范围中未存储有数据。
12.如权利要求9至11中任一项所述的方法,其特征在于,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
13.一种数据缓存系统,其特征在于,包括:
缓存空间,所述缓存空间包括K个地址范围,所述K个地址范围分别用于存储K个条目,K为大于0的整数,所述每个条目包括拥有者标志位,所述拥有者标志位用于记录存储标识或空闲标识,所述存储标识用于指示所述对应的条目内存储有数据,所述空闲标识用于指示对应的条目内未存储数据;
所述缓存空间被配置为:在生产者指针指示的第一地址范围接收数据的情况下,所述第一地址范围中的第一拥有者标志位被更新为所述存储标识;
所述缓存空间还被配置为:在消费者指针指示的第二地址范围中的第二拥有者标志位记录为所述存储标识的情况下,所述第二地址范围中的数据被读取。
14.如权利要求13所述的数据缓存系统,其特征在于,还包括:
生产者环寄存器,用于存储生产者环标志位,所述生产者环标志位用于记录所述生产者指针在所述K个地址范围的循环次数为奇数次或偶数次;
所述缓存空间被具体配置为:在所述生产者环标志位指示的循环次数为奇数次,且所述第一地址范围接收数据的情况下,将所述第一拥有者标志位从第二值更新为第一值;或者,
在所述生产者环标志位指示的循环次数为偶数次,且所述第一地址范围中接收数据的情况下,将所述第一拥有者标志位从所述第一值更新为所述第二值。
15.如权利要求14所述的数据缓存系统,其特征在于,还包括:
消费者环寄存器,用于存储消费者环标志位,所述消费者环标志位用于记录所述消费者指针在所述K个地址范围的循环次数为奇数次或偶数次;
所述缓存空间被具体配置为:在所述消费者环标志位指示的循环次数为奇数次,且所述第二拥有者标志位记录为所述第一值的情况下,所述第二地址范围中的数据被读取;或者,
在所述消费者环标志位指示的循环次数为偶数次,且所述第二拥有者标志位的赋值为所述第二值的情况下,所述第二地址范围中的数据被读取。
16.如权利要求14或15所述的数据缓存系统,其特征在于,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
17.一种数据处理芯片,其特征在于,包括:如权利要求1至6中任一项所述的数据缓存系统。
18.一种计算机系统,其特征在于,包括:如权利要求1至6中任一项所述的数据缓存系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911053590.3A CN112749103A (zh) | 2019-10-31 | 2019-10-31 | 数据缓存系统和数据缓存系统的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911053590.3A CN112749103A (zh) | 2019-10-31 | 2019-10-31 | 数据缓存系统和数据缓存系统的控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112749103A true CN112749103A (zh) | 2021-05-04 |
Family
ID=75645615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911053590.3A Pending CN112749103A (zh) | 2019-10-31 | 2019-10-31 | 数据缓存系统和数据缓存系统的控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112749103A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434544A (zh) * | 2021-06-02 | 2021-09-24 | 中科驭数(北京)科技有限公司 | 数据库数据读取方法、数据库数据写入方法及装置 |
CN117234431A (zh) * | 2023-11-14 | 2023-12-15 | 苏州元脑智能科技有限公司 | 缓存管理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040222997A1 (en) * | 2001-11-15 | 2004-11-11 | Crook Neal A. | Method of distributed caching |
CN103218176A (zh) * | 2013-04-02 | 2013-07-24 | 中国科学院信息工程研究所 | 数据处理方法及装置 |
CN104516832A (zh) * | 2013-10-08 | 2015-04-15 | 国际商业机器公司 | 操作数据处理系统的方法、数据处理系统以及处理器 |
-
2019
- 2019-10-31 CN CN201911053590.3A patent/CN112749103A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040222997A1 (en) * | 2001-11-15 | 2004-11-11 | Crook Neal A. | Method of distributed caching |
CN103218176A (zh) * | 2013-04-02 | 2013-07-24 | 中国科学院信息工程研究所 | 数据处理方法及装置 |
CN104516832A (zh) * | 2013-10-08 | 2015-04-15 | 国际商业机器公司 | 操作数据处理系统的方法、数据处理系统以及处理器 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434544A (zh) * | 2021-06-02 | 2021-09-24 | 中科驭数(北京)科技有限公司 | 数据库数据读取方法、数据库数据写入方法及装置 |
CN113434544B (zh) * | 2021-06-02 | 2022-11-18 | 中科驭数(北京)科技有限公司 | 数据库数据读取方法、数据库数据写入方法及装置 |
CN117234431A (zh) * | 2023-11-14 | 2023-12-15 | 苏州元脑智能科技有限公司 | 缓存管理方法、装置、电子设备及存储介质 |
CN117234431B (zh) * | 2023-11-14 | 2024-02-06 | 苏州元脑智能科技有限公司 | 缓存管理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086792B2 (en) | Cache replacing method and apparatus, heterogeneous multi-core system and cache managing method | |
EP3155521B1 (en) | Systems and methods of managing processor device power consumption | |
CN107526546B (zh) | 一种Spark分布式计算数据处理方法及系统 | |
US9734056B2 (en) | Cache structure and management method for use in implementing reconfigurable system configuration information storage | |
US20210279054A1 (en) | Implementing a micro-operation cache with compaction | |
KR101443231B1 (ko) | 라이트-백 동작시 라이트-백 데이터의 버스트 길이를조절할 수 있는 캐시 메모리와 이를 포함하는 시스템 | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的系统和方法 | |
US9170753B2 (en) | Efficient method for memory accesses in a multi-core processor | |
US20180060235A1 (en) | Non-volatile memory compression devices and associated methods and systems | |
CN105493053A (zh) | 多核处理器中的高速缓存划分 | |
CN110806900B (zh) | 一种访存指令处理方法及处理器 | |
US12020065B2 (en) | Hierarchical processor selection | |
CN112749103A (zh) | 数据缓存系统和数据缓存系统的控制方法 | |
CN115794682A (zh) | 缓存替换方法及装置、电子设备、存储介质 | |
CN113641596A (zh) | 缓存管理方法、缓存管理装置、处理器 | |
US10235299B2 (en) | Method and device for processing data | |
US20140215161A1 (en) | Balanced p-lru tree for a "multiple of 3" number of ways cache | |
US6973540B2 (en) | Method and apparatus for selecting cache ways available for replacement | |
JP4439288B2 (ja) | 同時多重スレッディングプロセッサ、動作するスレッドの数に基づいて相異なる性能レベルで動作するように構成されるコンピュータプログラム格納媒体及びこれらを動作させる方法 | |
CN101699391B (zh) | 提高Java处理器取指令带宽的字节码缓冲装置及使用方法 | |
KR20130131135A (ko) | QoS 기반 캐시 컨트롤러 및 그 동작 방법 | |
US10073723B2 (en) | Dynamic range-based messaging | |
CN114168522B (zh) | 一种数据传输方法、装置及传输部件 | |
KR102663496B1 (ko) | 프로세서의 레지스터 캐시 인덱스 결정 방법 및 이를 수행하는 전자 장치 | |
US20230096138A1 (en) | Encoded enable clock gaters |
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 |