发布信息

缓存控制方法、装置、计算机设备和计算机可读存储介质与流程 专利技术说明

作者:admin      2023-06-28 22:05:19     371



计算;推算;计数设备的制造及其应用技术1.本技术涉及计算机技术领域,具体而言,涉及一种缓存控制方法、装置、计算机设备和计算机可读存储介质。背景技术:2.随着计算机技术的发展,各种多媒体系统进入了人们的工作生活中。比如,人们可以利用多媒体系统保存、传递和/或显示一些图像、视频、音频、文档等数据。3.相关技术中,一般在多媒体系统中,常常会使用系统缓存作为数据的传输媒介,并且系统缓存很有可能同时被前后环节调用。比如,数据写入环节在一个缓存块写入图像数据的过程中,数据读取环节就需要读取这一个缓存块中的图像数据,并将读取出的图像数据保存并输出到显示设备上。或者,在数据读取环节读取一个缓存块中的图像数据时,数据写入环节同时向这个缓存块中写入新的图像数据。4.由上可见,相关技术中的方案存在容易造成缓存不同步、以及数据读取环节不能正确地从缓存中读取相应的数据的问题。技术实现要素:5.本技术的目的在于提供一种缓存控制方法、装置、计算机设备和计算机可读存储介质,可以达到实现使得缓存同步、以及确保各模块能正确访问缓存块的效果。6.本技术的实施例是这样实现的:7.本技术实施例的一方面,提供一种缓存控制方法,所述方法包括:8.获取目标缓存块的初始缓存状态并确定所述目标缓存块的目标动作,所述初始缓存状态包括写入完成状态、读取完成状态、正在读取状态和正在写入状态;9.根据所述目标动作,确定所述目标缓存块的中间缓存状态;10.根据所述目标缓存块的初始缓存状态,确定所述目标缓存块是否能够切换至所述中间缓存状态,若是,则将所述目标缓存块的状态切换为所述中间缓存状态并执行所述目标动作;11.在所述目标动作执行完成的情况下,将所述目标缓存块的状态调整为执行所述目标动作后的缓存状态。12.可选地,所述根据所述目标缓存块的初始缓存状态,确定所述目标缓存块是否能够切换至所述中间缓存状态,包括:13.根据所述初始缓存状态和所述中间缓存状态确定所述目标缓存块的过渡属性,所述过渡属性包括:阻塞、非阻塞和无效;14.根据所述过渡属性以及所述初始缓存状态,确定所述目标缓存块是否能够切换至所述中间缓存状态。15.可选地,所述根据所述初始缓存状态和所述中间缓存状态确定所述目标缓存块的过渡属性,包括:16.确定所述初始缓存状态是否满足预设状态,所述预设状态包括写入完成状态和读取完成状态;17.若满足,则确定所述过渡属性为非阻塞;18.若不满足,则确定所述初始缓存状态和所述中间缓存状态是否满足转换条件;19.若是,则确定所述过渡属性为阻塞,否则确定所述过渡属性为无效。20.可选地,所述根据所述过渡属性以及所述初始缓存状态,确定所述目标缓存块是否能够切换至所述中间缓存状态,包括:21.若所述过渡属性为非阻塞,则确定所述目标缓存块能够切换至所述中间缓存状态;22.若所述过渡属性为阻塞或无效,则监测所述目标缓存块的实时缓存状态,并在所述实时缓存状态发生变化时重新确定所述过渡属性,直至确定所述过渡属性为非阻塞,确定所述目标缓存块能够切换至所述中间缓存状态。23.可选地,所述获取目标缓存块的初始缓存状态并确定所述目标缓存块的目标动作,包括:24.确定访问所述目标缓存块的访问模块;25.根据所述访问模块,确定所述目标动作;26.获取所述目标缓存块的初始缓存状态。27.可选地,所述根据所述模块的标识,确定所述目标动作,包括:28.若所述访问模块为数据读取模块,则确定所述目标动作为读取动作;29.若所述访问模块为数据写入模块,则确定所述目标动作为写入动作。30.可选地,在所述获取目标缓存块的初始缓存状态并确定所述目标缓存块的目标动作之后,所述方法还包括:31.若确定所述目标缓存块的初始缓存状态为正在读取状态,且所述目标动作为读取动作,则执行所述读取动作;32.在所述读取动作执行完成的情况下,将所述目标缓存块调整为读取完成状态。33.本技术实施例的第二方面,提供了一种缓存控制装置,所述缓存控制装置包括:34.获取确定模块,用于获取目标缓存块的初始缓存状态并确定所述目标缓存块的目标动作,所述初始缓存状态包括写入完成状态、读取完成状态、正在读取状态和正在写入状态;35.第一确定模块,用于根据所述目标动作,确定所述目标缓存块的中间缓存状态;36.第二确定模块,用于根据所述目标缓存块的初始缓存状态,确定所述目标缓存块是否能够切换至所述中间缓存状态,若是,则将所述目标缓存块的状态切换为所述中间缓存状态并执行所述目标动作;37.调整模块,用于在所述目标动作执行完成的情况下,将所述目标缓存块的状态调整为执行所述目标动作后的缓存状态。38.本技术实施例的第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面所述的缓存控制方法。39.本技术实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的缓存控制方法。40.本技术实施例的有益效果包括:41.本技术实施例提供的一种缓存控制方法,通过获取目标缓存块的初始缓存状态并确定该目标缓存块的目标动作,不但可以准确地确定出当前时刻该目标缓存块的缓存状态,以确定该目标缓存块当前是否正在被读取数据或写入数据,还可以准确地确定出需要针对该目标缓存块执行的目标动作,以便确保能正确执行后续步骤。42.根据该目标动作,确定该目标缓存块的中间缓存状态。根据该目标缓存块的初始缓存状态,确定该目标缓存块是否能够切换至该中间缓存状态,若是,则将该目标缓存块的状态切换为该中间缓存状态并执行该目标动作。由于只有在将该目标缓存块的状态切换为与该目标动作对应的该中间缓存状态的情况下,才可以执行该目标动作,而若该目标缓存块的状态无法切换到该中间缓存状态,则无法执行该目标动作。这样,就可以确保不会出现一个模块从该目标缓存块中读取数据时,另一个模块向该目标缓存块中写入数据的情况、以及两个模块同时向该目标缓存块中写入数据的情况。43.在该目标动作执行完成的情况下,将该目标缓存块的状态调整为执行该目标动作后的缓存状态。这样,可以确保能够即时、准确地更新该目标缓存块的状态,进而可以在下一次访问该目标缓存块和/或重新执行各步骤时能够正确地执行该缓存控制方法。44.如此,可以达到实现使得缓存同步、以及确保各模块能正确访问缓存块的效果。附图说明45.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。46.图1为本技术实施例提供的第一种缓存控制方法的流程图;47.图2为本技术实施例提供的第二种缓存控制方法的流程图;48.图3为本技术实施例提供的第三种缓存控制方法的流程图;49.图4为本技术实施例提供的第四种缓存控制方法的流程图;50.图5为本技术实施例提供的第五种缓存控制方法的流程图;51.图6为本技术实施例提供的第六种缓存控制方法的流程图;52.图7为本技术实施例提供的一种缓存控制装置的结构示意图;53.图8为本技术实施例提供的一种计算机设备的结构示意图。具体实施方式54.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。55.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。56.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。57.在本技术的描述中,需要说明的是,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。58.在相关技术中,一般在多媒体系统中,常常会使用系统缓存作为数据的传输媒介,并且系统缓存很有可能同时被前后环节调用。比如,数据写入环节在一个缓存块写入图像数据的过程中,数据读取环节就需要读取这一个缓存块中的图像数据,并将读取出的图像数据保存并输出到显示设备上。或者,在数据读取环节读取一个缓存块中的图像数据时,数据写入环节同时向这个缓存块中写入新的图像数据。59.比如,在数据写入环节在一个缓存块写入图像数据的过程中,数据读取环节就开始读取这个缓存块中的图像数据,会导致该显示设备显示出的图像上半部分正常,但下半部分不能显示出正确的图像内容,会引起画面上下两部分撕裂。又比如,在数据读取环节在读取这个缓存块中数据的过程中,数据写入环节就开始向这个缓存块写入新的数据,若数据写入环节的写入速度大于数据读取环节的读取速度,那么数据读取环节读取到的前半部分的数据正常,而后半部分的数据就是被数据写入环节覆写的新的数据,也会造成无法正确读取数据的问题。60.由上可见,相关技术中的方案存在容易造成缓存不同步、以及数据读取环节不能正确地从缓存中读取相应的数据的问题。61.为此,本技术实施例提供了缓存控制方法,通过获取目标缓存块的初始缓存状态并确定该目标缓存块的目标动作,根据该目标动作,确定该目标缓存块的中间缓存状态;根据该目标缓存块的初始缓存状态,确定该目标缓存块是否能够切换至该中间缓存状态,若是,则执行该目标动作;在该目标动作执行完成的情况下,将该目标缓存块的状态调整为执行该目标动作后的缓存状态。可以达到实现使得缓存同步、以及确保各模块能正确访问缓存块的效果。62.本技术实施例以应用在缓存控制系统中的缓存控制方法为例进行说明。但不表明本技术实施例仅能应用于缓存控制系统中进行缓存控制。63.可选地,该缓存控制系统可以包括至少一个数据读取模块和至少一个数据写入模块。64.各数据读取模块可以用于从缓存块中读取出图像、视频、音频、文档等数据。而各数据写入模块可以用于向缓存块中写入图像、视频、音频、文档等数据。65.另外,该缓存控制系统还可以包括具有控制、处理等功能的处理设备,本技术实施例对此不做限定。66.下面对本技术实施例提供的缓存控制方法进行详细地解释说明。67.图1为本技术提供的一种缓存控制方法的流程图,该方法可以应用于上述缓存控制系统。参见图1,本技术实施例提供一种缓存控制方法,包括:68.步骤1001:获取目标缓存块的初始缓存状态并确定该目标缓存块的目标动作。69.可选地,该目标缓存块可以是指缓存器中任意一个内存块。该目标缓存块中可以存储一些数据,以供其他模块、装置和/或设备进行读取、修改。另外,其他模块、装置和/或设备将数据写入该目标缓存块中。70.可选地,该初始缓存状态可以是指在当前时刻下该目标缓存块的缓存状态。71.该初始缓存状态包括写入完成状态、读取完成状态、正在读取状态和正在写入状态。72.示例性地,若该目标缓存块的初始缓存状态为正在读取状态,则表明在当前时刻,有其他模块正在从该目标缓存块中读取数据。若该目标缓存块的初始缓存状态为正在写入状态,则表明在当前时刻,有其他模块正在向该目标缓存块中写入数据。73.若该目标缓存块的初始缓存状态为读取完成状态,则表明在当前时刻没有其他模块向该目标缓存块写入数据或从该目标缓存块中读取数据,且前一次有其他模块访问该目标缓存块时是从该目标缓存块中读取数据。若该目标缓存块的初始缓存状态为写入完成状态,则表明在当前时刻没有其他模块向该目标缓存块写入数据或从该目标缓存块中读取数据,且前一次有其他模块访问该目标缓存块时是向该目标缓存块中写入数据。74.可选地,该目标动作可以是指其他模块访问该目标缓存块时要执行的动作,该目标动作可以包括写入动作和读取动作。75.可以理解的是,该写入动作就是由其他模块向该目标缓存块中写入数据,而该读取动作就是从该目标缓存块中读取数据。76.值得注意的是,这样,就可以准确地确定出当前时刻该目标缓存块的缓存状态,以确定该目标缓存块当前是否正在被读取数据或写入数据。还可以准确地确定出需要针对该目标缓存块执行的目标动作,以便确保能正确执行后续步骤。77.步骤1002:根据该目标动作,确定该目标缓存块的中间缓存状态。78.可选地,该中间缓存状态是与该目标动作对应的。也即,该中间缓存状态可以指示在执行该目标动作时该目标缓存块的状态。79.一般地,该中间缓存状态可以包括正在读取状态和正在写入状态。80.值得说明的是,由于该中间缓存状态可以指示在执行该目标动作时,该目标缓存块的状态,这样,就便于在后续步骤中准确地确定出该初始缓存状态和该中间缓存状态之间的关系。81.步骤1003:根据该目标缓存块的初始缓存状态,确定该目标缓存块是否能够切换至该中间缓存状态,若是,则将该目标缓存块的状态切换为该中间缓存状态并执行该目标动作。82.示例性地,可以根据该初始缓存状态所指示的具体状态来确定是否能切换至该中间缓存状态。也可以根据该初始缓存状态所指示的具体状态和该中间缓存状态所指示的具体状态之间的关系来确定是否能切换至该中间缓存状态。83.值得注意的是,若该目标缓存块能够切换至该中间缓存状态,则表明当前可以直接执行该目标动作。若该目标缓存块无法切换至该中间缓存状态,则表明当前不能执行该目标动作。84.可以理解的是,在执行该目标动作的过程中,该目标缓存块的状态则可以持续保持为该中间缓存状态。也就是说,只有在将该目标缓存块的状态切换为与该目标动作对应的该中间缓存状态的情况下,才可以执行该目标动作,而若该目标缓存块的状态无法切换到该中间缓存状态,则无法执行该目标动作。85.这样,就可以确保不会出现一个模块从该目标缓存块中读取数据时,另一个模块向该目标缓存块中写入数据的情况、以及两个模块同时向该目标缓存块中写入数据的情况。如此,可以保证该目标缓存块的同步,进而确保各模块能正确访问缓存块。86.步骤1004:在该目标动作执行完成的情况下,将该目标缓存块的状态调整为执行该目标动作后的缓存状态。87.可选地,该目标动作执行完成可以是指本次的读取动作完成、本次需要读取的数据全部读取完毕,或者本次的写入动作完成、本地需要写入的数据全部写入该目标缓存块。88.可选地,执行该目标动作后的缓存状态可以包括写入完成状态、读取完成状态。89.值得说明的是,若该目标动作执行完成,则表明本次访问已经从该目标缓存块中读取出了所有需要读取的数据,或者已经向该目标缓存块中写入了所有需要写入的数据。因此,需要将该目标缓存块的状态调整为写入完成状态或读取完成状态。如此,可以确保能够即时、准确地更新该目标缓存块的状态,进而可以在下一次访问该目标缓存块和/或重新执行步骤1001时能够正确地执行该缓存控制方法。90.在本技术实施例中,通过获取目标缓存块的初始缓存状态并确定该目标缓存块的目标动作,不但可以准确地确定出当前时刻该目标缓存块的缓存状态,以确定该目标缓存块当前是否正在被读取数据或写入数据,还可以准确地确定出需要针对该目标缓存块执行的目标动作,以便确保能正确执行后续步骤。91.根据该目标动作,确定该目标缓存块的中间缓存状态。根据该目标缓存块的初始缓存状态,确定该目标缓存块是否能够切换至该中间缓存状态,若是,则将该目标缓存块的状态切换为该中间缓存状态并执行该目标动作。由于只有在将该目标缓存块的状态切换为与该目标动作对应的该中间缓存状态的情况下,才可以执行该目标动作,而若该目标缓存块的状态无法切换到该中间缓存状态,则无法执行该目标动作。这样,就可以确保不会出现一个模块从该目标缓存块中读取数据时,另一个模块向该目标缓存块中写入数据的情况、以及两个模块同时向该目标缓存块中写入数据的情况。92.在该目标动作执行完成的情况下,将该目标缓存块的状态调整为执行该目标动作后的缓存状态。这样,可以确保能够即时、准确地更新该目标缓存块的状态,进而可以在下一次访问该目标缓存块和/或重新执行步骤1001时能够正确地执行该缓存控制方法。93.如此,可以达到实现使得缓存同步、以及确保各模块能正确访问缓存块的效果。94.一种可能的实现方式中,参见图2,根据该目标缓存块的初始缓存状态,确定该目标缓存块是否能够切换至该中间缓存状态,包括:95.步骤1005:根据该初始缓存状态和该中间缓存状态确定该目标缓存块的过渡属性。96.可选地,该过渡属性可以用于指示执行该目标动作的时机,也可以用于表征该目标缓存块当前是否可以从该初始缓存状态切换到该中间缓存状态。97.该过渡属性包括:阻塞、非阻塞和无效。98.示例性地,若该过渡属性为非阻塞,则表明当前可以将该目标缓存块的状态直接从该初始缓存状态切换为该中间缓存状态。99.若该过渡属性为无效,则表明无法将该目标缓存块的状态从该初始缓存状态切换为该中间缓存状态。100.若该过渡属性为阻塞,则表明当前无法将该目标缓存块的状态直接从该初始缓存状态切换为该中间缓存状态,且需要等待该目标缓存块执行完当前正在执行的动作或者该目标缓存块的状态发生变化之后才能将该目标缓存块的状态直接从该初始缓存状态切换为该中间缓存状态。101.步骤1006:根据该过渡属性以及该初始缓存状态,确定该目标缓存块是否能够切换至该中间缓存状态。102.这样,就可以准确地确定出该目标缓存块是否能够切换至该中间缓存状态,便于后续确定执行上述目标动作的时机并执行该目标动作。103.一种可能的实现方式中,参见图3,根据该初始缓存状态和该中间缓存状态确定该目标缓存块的过渡属性,包括:104.步骤1007:确定该初始缓存状态是否满足预设状态。105.可选地,该预设状态包括写入完成状态和读取完成状态。106.示例性地,若该初始缓存状态所指示的具体状态为写入完成状态或读取完成状态,那么则可以确定该初始缓存状态满足该预设状态。若该初始缓存状态所指示的具体状态为正在读取状态或正在写入状态,那么则可以确定该初始缓存状态不满足该预设状态。107.步骤1008:若满足,则确定该过渡属性为非阻塞。108.值得注意的是,若该初始缓存状态满足预设状态,则表明当前无需等待,而可以将该目标缓存块的状态切换为该中间缓存状态并直接执行上述目标动作。109.步骤1009:若不满足,则确定该初始缓存状态和该中间缓存状态是否满足转换条件。110.可选地,该转换条件可以是用于指示是否可以从该初始缓存状态转换到该中间缓存状态的条件。111.步骤1010:若是,则确定该过渡属性为阻塞,否则确定该过渡属性为无效。112.示例性地,可以根据下表1所示出的该初始缓存状态、该中间缓存状态和该过渡属性之间的关系来确定该初始缓存状态和该中间缓存状态是否满足该转换条件,具体参见下表1。113.表1[0114][0115]其中,now代表该目标缓存块在当前时刻的状态,next代表该目标缓存块在执行该目标动作时需要切换的状态。也即now可以代表该初始缓存状态,next代表该中间缓存状态。[0116]wi代表正在写入状态,ri代表正在读取状态,rdy代表写入完成状态,rd代表读取完成状态,0则代表过渡属性为阻塞,1则代表过渡属性为非阻塞,-1则代表过渡属性为无效。[0117]例如,从上表1可见,若该初始缓存状态为wi,则可以确定该初始缓存状态不满足预设状态,且该中间缓存状态为wi,则表示该初始缓存状态和该中间缓存状态不满足转换条件,则可以确定该过渡属性为无效。若该初始缓存状态为ri,则可以确定该初始缓存状态不满足预设状态,且该中间缓存状态为wi,则表示该初始缓存状态和该中间缓存状态满足转换条件,则可以确定该过渡属性为阻塞。[0118]又例如,从上表1可见,若该初始缓存状态为rdy或rd,则可以确定该初始缓存状态满足预设状态,那么无论该中间缓存状态为wi或ri,都可以确定该过渡属性为非阻塞。[0119]可以理解的是,若该初始缓存状态和/或该中间缓存状态为其他状态,都可以通过上表1所示出的关系确定出该过渡属性。并且以上仅仅是为了举例说明,并不代表本技术实施例提供的缓存控制方法只能以这样的方式确定该过渡属性,本技术实施例对此不做限定。[0120]这样,可以准确地确定出该过渡属性,以及执行该目标动作的时机,以确保不会出现一个模块从该目标缓存块中读取数据时,另一个模块向该目标缓存块中写入数据的情况、以及两个模块同时向该目标缓存块中写入数据的情况。进而实现使得缓存同步、以及确保各模块能正确访问缓存块的效果。[0121]一种可能的实现方式中,参见图4,根据该过渡属性以及该初始缓存状态,确定该目标缓存块是否能够切换至该中间缓存状态,包括:[0122]步骤1011:若该过渡属性为非阻塞,则确定该目标缓存块能够切换至该中间缓存状态。[0123]具体地,若该过渡属性为非阻塞具体可以确定当前无需等待、并可以直接将该目标缓存块的状态切换为该中间缓存状态。[0124]步骤1012:若该过渡属性为阻塞或无效,则监测该目标缓存块的实时缓存状态,并在该实时缓存状态发生变化时重新确定该过渡属性,直至确定该过渡属性为非阻塞,确定该目标缓存块能够切换至该中间缓存状态。[0125]可选地,该实时缓存状态可以是指当前时刻检测到的该目标缓存块的状态。[0126]若该实时缓存状态与该初始缓存状态相同,则表示该实时缓存状态未发生变化。若该实时缓存状态与该初始缓存状态不同,则表示该实时缓存状态发生变化。[0127]可选地,在重新确定该过渡属性时,可以按照与步骤1005、步骤1007-步骤1010类似的步骤根据该实时缓存状态和该中间缓存状态确定新的过渡属性。本技术实施例对此不做限定。[0128]值得注意的是,这样,就可以准确、即时地在该目标缓存块的状态发生变化时,重新确定出新的过渡属性,并根据新的过渡属性确定是否需要将该目标缓存块的状态切换为该中间缓存状态并执行该目标动作。[0129]并且,可以通过该过渡属性来确定执行该目标动作的时机,以确保不会出现一个模块从该目标缓存块中读取数据时,另一个模块向该目标缓存块中写入数据的情况、以及两个模块同时向该目标缓存块中写入数据的情况。[0130]如此,可以确保该缓存控制方法可以正确执行。[0131]一种可能的实现方式中,参见图5,获取目标缓存块的初始缓存状态并确定该目标缓存块的目标动作,包括:[0132]步骤1013:确定访问该目标缓存块的访问模块。[0133]可选地,该访问模块可以包括上述的数据读取模块和/或上述的数据写入模块。[0134]步骤1014:根据该访问模块,确定该目标动作。[0135]值得注意的是,由于该目标动作是指其他模块访问该目标缓存块时要执行的动作,因此若访问该目标缓存块的该访问模块不同,那么该目标动作就不相同,进而与该目标动作对应的该中间缓存状态就不相同。[0136]这样,可以确保能准确、正确地得到该目标动作,以及确定后续能够得到该目标动作对应的中间缓存状态并正确执行该目标动作。[0137]步骤1015:获取该目标缓存块的初始缓存状态。[0138]如此,可以准确地获取到该初始缓存状态并确定出该目标动作,以确保后续步骤的正确执行。[0139]一种可能的实现方式中,根据该模块的标识,确定该目标动作,包括:[0140]若该访问模块为数据读取模块,则确定该目标动作为读取动作。[0141]值得注意的是,由于该数据读取模块可以用于从缓存块中读取出图像、视频、音频、文档等数据,那么若该数据读取模块访问该目标缓存块,则可以确定该目标动作为读取动作。[0142]若该访问模块为数据写入模块,则确定该目标动作为写入动作。[0143]值得注意的是,由于该数据写入模块可以用于向缓存块中写入图像、视频、音频、文档等数据,那么若该数据写入模块访问该目标缓存块,则可以确定该目标动作为写入动作。[0144]这样,就可以准确地确定出该目标动作,以确保后续能得到正确的中间缓存状态。[0145]一种可能的实现方式中,参见图6,在获取目标缓存块的初始缓存状态并确定该目标缓存块的目标动作之后,该方法还包括:[0146]步骤1016:若确定该目标缓存块的初始缓存状态为正在读取状态,且该目标动作为读取动作,则执行该读取动作。[0147]示例性地,继续参见上表1,若该目标动作为读取动作,则可以确定与该目标动作对应的中间缓存状态也为ri,因此在执行该目标动作时,该目标缓存块的状态也是ri。若该目标缓存块的初始缓存状态为ri,也即now为ri,由于该目标缓存块的next也为ri,可见,在这种情况下,该过渡属性为非阻塞状态。[0148]由于该目标缓存块的初始缓存状态和该读取动作对应的中间缓存状态均为正在读取状态。因此,可以直接执行该读取动作。[0149]值得注意的是,若该目标缓存块的初始缓存状态为正在读取状态,那么可以表明当前正在有一个访问模块从该目标缓存块中读取数据,在这种情况,如果另一个访问模块同时向该目标缓存块中写入数据就可能会造成缓存不同步、覆写旧有的数据,进而导致访问模块无法从该目标缓存块中读取正确的数据。[0150]然而,在这种情况下,若另一个访问模块同时从该目标缓存块中读取数据,并不会出现覆写旧有数据的问题,因此可以允许多个访问模块同时从该目标缓存块中读取数据。这样,就可以提高多个访问模块同时从该目标缓存块中读取数据的效率。[0151]步骤1017:在该读取动作执行完成的情况下,将该目标缓存块调整为读取完成状态。[0152]如此,可以确保能够即时、准确地更新该目标缓存块的状态。[0153]一种可能的实现方式中,在每次有访问模块或其他模块访问该目标缓存块时,均可以依次执行步骤1001-1004以及其他相应的步骤。[0154]比如,假设上述数据读取模块在访问该目标缓存块时,获取到该目标缓存块的初始缓存状态为写入完成状态,并且可以确定该目标缓存块的目标动作为读取动作,进而可以确定该读取动作的中间缓存状态为正在读取状态。[0155]进而该数据写入模块或相应的处理设备可以确定该初始缓存状态满足上述预设状态,则确定该过渡属性为非阻塞,确定该目标缓存块能够切换至该中间缓存状态。[0156]然后可以将该目标缓存块的状态切换为该正在读取状态并直接执行该读取动作,并在该读取动作执行完成的情况下,将该目标缓存块调整为读取完成状态。[0157]又例如,假设在执行该读取动作的过程中,也即该数据读取模块正在从该目标缓存块中读取数据的过程中,上述数据写入模块也访问该目标缓存块,此时,获取到该目标缓存块的新的初始缓存状态为正在读取状态,并且可以确定该目标缓存块的新的目标动作为写入动作,进而可以确定该读取动作的新的中间缓存状态为正在写入状态。[0158]进而该数据写入模块或相应的处理设备可以确定该新的初始缓存状态不满足该预设状态,则继续确定该初始缓存状态和该中间缓存状态满足该转换条件,确定该过渡属性为阻塞。[0159]然后,则监测该目标缓存块的实时缓存状态,那么在该数据写入模块将所有需要写入的数据均写入该目标缓存块之后,该实时缓存状态就会发生变化为写入完成状态。此时重新确定出新的过渡属性为非阻塞,那么就可以确定该目标缓存块能够切换至该新的中间缓存状态。[0160]然后可以将该目标缓存块的状态切换为正在写入状态并直接执行该写入动作,并在该写入动作执行完成的情况下,将该目标缓存块调整为写入完成状态。[0161]以上仅仅是为了举例说明,并不代表本技术实施例提供的缓存控制方法只能在这样的访问方式时来响应各访问模块的访问,也可以在其他任意的访问模块来访问该目标缓存块时依次执行步骤1001-1004以及其他相应的步骤。比如,可以响应多次连续的写入访问、多次连续的读取访问、至少一次的读取访问和至少一次的写入访问,本技术实施例对此不做限定。[0162]下述对用以执行的本技术所提供缓存控制方法的装置、设备及计算机可读存储介质等进行说明,其具体的实现过程以及技术效果参见上述,下述不再赘述。[0163]图7是本技术实施例提供的一种缓存控制装置的结构示意图,参见图7,该装置包括:[0164]获取确定模块201,用于获取目标缓存块的初始缓存状态并确定该目标缓存块的目标动作。[0165]可选地,该初始缓存状态包括写入完成状态、读取完成状态、正在读取状态和正在写入状态。[0166]第一确定模块202,用于根据该目标动作,确定该目标缓存块的中间缓存状态。[0167]第二确定模块203,用于根据该目标缓存块的初始缓存状态,确定该目标缓存块是否能够切换至该中间缓存状态,若是,则将该目标缓存块的状态切换为该中间缓存状态并执行该目标动作。[0168]调整模块204,用于在该目标动作执行完成的情况下,将该目标缓存块的状态调整为执行该目标动作后的缓存状态。[0169]上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。[0170]以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个微处理器,或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。[0171]图8是本技术实施例提供的一种计算机设备的结构示意图。参见图8,计算机设备包括:存储器301、处理器302,存储器301中存储有可在处理器302上运行的计算机程序,处理器302执行计算机程序时,实现上述任意各个方法实施例中的步骤。[0172]本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。[0173]可选地,本技术还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述任一缓存控制方法实施例。[0174]在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0175]作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0176]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。[0177]上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文:read-only memory,简称:rom)、随机存取存储器(英文:random access memory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0178]上仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。[0179]以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部