CN106649143B - 一种访问缓存的方法、装置及电子设备 - Google Patents
一种访问缓存的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN106649143B CN106649143B CN201510717175.9A CN201510717175A CN106649143B CN 106649143 B CN106649143 B CN 106649143B CN 201510717175 A CN201510717175 A CN 201510717175A CN 106649143 B CN106649143 B CN 106649143B
- Authority
- CN
- China
- Prior art keywords
- access instruction
- cache
- delay
- identifier
- carried
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请公开了一种访问缓存的方法和装置,以及一种电子设备。其中,所述方法包括:读取用于获取数据的访问指令,根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟,若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作,根据获取到所述访问指令需求的数据的位置,修改所述访问指令携带的延迟标识和位置标识。所述技术方案解决了访问缓存时,命中率不高的问题,降低了发生缺失的概率,并降低了在获取目标数据时逐级的访问每级缓存带来的访问延迟,相应的减少了访问缓存时产生的功耗,提高了CPU的性能。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种访问缓存的方法以及一种访问缓存的装置;本申请同时涉及一种电子设备。
背景技术
为了缓解访问内存时的慢速问题,引入了根据数据的时间局域和空间局域特性引入了多层缓存架构来缓解这个问题。缓存是一个或多个小型高速相联存储器,当处理器在读取或写入时,首先检查缓存中是否存在目标数据,如果存在,处理器首先指向缓存而不是其他存储器(例如内存)。通过多层缓存架构可以提高访问性能,在访问一级缓存时,若一级缓存中不存在目标数据,即,发生缺失则访问二级缓存,若二级缓存中也不存在目标数据,则继续访问下一级缓存直至获取到目标数据。虽然多层缓存架构设置一级与二级缓存的目的是减少访问延迟,设置三级缓存目的是减少缺失率,但是多层缓存架构引入的同时也增加了访问每级缓存时的延迟,例如:从访问一级缓存时发生缺失,到访问二级缓存时需要6个周期,从访问二级缓存时发生缺失,到访问三级缓存时需要8个周期。
由此可见,虽然设置多层缓存架构的目的是为了减少访问延迟,但是在访问缓存时发生缺失,命中率不高的情况下,逐级的访问每级缓存带来的访问延迟会逐级累加,最终带来十分明显的延迟,并且逐级的访问每级缓存会产生冗余功耗。若同时访问每级缓存,虽然能提高获取目标数据的命中率,降低缺失,但会带来更多的冗余功耗。
发明内容
本申请提供一种访问缓存的方法以及一种访问缓存的装置,以解决现有技术中访问缓存时的延迟问题。本申请同时涉及一种电子设备。
本申请提供了一种访问缓存的方法,所述访问缓存的方法包括:
读取用于获取数据的访问指令;
根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;
若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;
根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
可选的,所述访问指令携带的延迟标识和位置标识是在所述访问指令的缓存行上设置的使用比特标注的标识。
可选的,所述延迟,包括:
数据缺失时逐层访问缓存时产生的延迟或者所述访问指令执行计算时产生的延迟。
可选的,所述根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟,包括:
读取所述访问指令携带的使用比特标注的延迟标识的数值判断所述访问指令是否会产生延迟。
可选的,所述读取所述访问指令携带的使用比特标注的延迟标识的数值判断所述访问指令是否会产生延迟,具体包括:
读取所述访问指令携带的使用二进制比特标注的延迟标识的数值,判断所述访问指令携带的使用二进制比特标注的延迟标识的数值是否大于1;
若大于1,说明所述访问指令会产生延迟,并执行访问缓存并根据所述访问指令携带的位置标识执行预取操作的步骤。
可选的,所述访问缓存并根据所述访问指令携带的位置标识执行预取操作,包括:
读取所述访问指令携带的使用比特标注的位置标识的数值;
访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问。
可选的,在所述访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问的步骤之后,包括:
判断在所述一级缓存和对应于所述位置标识的数值的缓存层或内存中,是否获取到所述访问指令需求的数据;
若否,则按照多层缓存的层级顺序依次访问每级缓存与内存,直至获取到所述访问指令需求的数据。
可选的,在获取到所述访问指令需求的数据之后,还包括:
记录所述访问指令获取到的数据的位置。
可选的,所述根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识,包括:
判断已记录的所述访问指令获取到的数据的位置是否为一级缓存;
若是,将所述访问指令携带的使用比特标注的延迟标识向下置位;
若否,将所述访问指令携带的使用比特标注的延迟标识向上置位,并判断已记录的所述访问指令获取到的数据的位置是否为对应于所述位置标识的数值的缓存层或内存;
若否,则根据已记录的所述访问指令获取到的数据的位置,将所述访问指令携带的位置标识进行置位,使所述访问指令携带的位置标识表征获取到所述访问指令需求的数据的缓存层或内存。
可选的,在所述将所述访问指令携带的使用比特标注的延迟标识向下置位的步骤之后,包括:
判断已记录的所述访问指令获取到的数据的位置是否包括对应于所述位置标识的数值的缓存层或内存;
若是,则丢弃对应于所述位置标识的数值的缓存层或内存获取到所述访问指令需求的数据。
相应的,本申请还提供了一种访问缓存的装置,所述访问缓存的装置包括:
访问指令读取单元,用于读取用于获取数据的访问指令;
延迟标识判断单元,用于根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;
缓存访问预取单元,用于接收所述延迟标识判断单元的判断结果,若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;
标识修改单元,用于根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
可选的,所述延迟标识判断单元,具体用于根据所述访问指令的缓存行上设置的使用比特标注的标识判断所述访问指令是否会产生延迟。
可选的,所述延迟标识判断单元,具体用于根据所述访问指令携带的延迟标识判断所述访问指令是否会产生数据缺失时逐层访问缓存时产生的延迟或者所述访问指令执行计算时产生的延迟。
可选的,所述延迟标识判断单元,具体用于读取所述访问指令携带的使用比特标注的延迟标识的数值判断所述访问指令是否会产生延迟。
可选的,所述延迟标识判断单元,包括:
数值读取子单元,用于读取所述访问指令携带的使用二进制比特标注的延迟标识的数值,判断所述访问指令携带的使用二进制比特标注的延迟标识的数值是否大于1;
缓存访问预取触发子单元,用于接收所述数值读取子单元的判断结果,若大于1,则触发所述缓存访问预取单元。
可选的,所述缓存访问预取单元,包括:
比特数值读取子单元,用于读取所述访问指令携带的使用比特标注的位置标识的数值;
缓存访问预取子单元,用于访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问。
可选的,所述缓存访问预取单元,还包括:
数据获取判断子单元,用于在所述访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问之后,判断在所述一级缓存和对应于所述位置标识的数值的缓存层或内存中,是否获取到所述访问指令需求的数据;
逐层访问子单元,用于接收所述数据获取判断子单元的判断结果,若否,则按照多层缓存的层级顺序依次访问每级缓存与内存,直至获取到所述访问指令需求的数据。
可选的,所述访问缓存的装置,还包括:
位置记录单元,用于记录所述访问指令获取到的数据的位置。
可选的,所述标识修改单元,包括:
位置判断子单元,用于判断已记录的所述访问指令获取到的数据的位置是否为一级缓存;
向下置位子单元,用于接收所述位置判断判断子单元的判断结果,若是,将所述访问指令携带的使用比特标注的延迟标识向下置位;
向上置位子单元,用于接收所述位置判断判断子单元的判断结果,若否,将所述访问指令携带的使用比特标注的延迟标识向上置位,并判断已记录的所述访问指令获取到的数据的位置是否为对应于所述位置标识的数值的缓存层或内存;
位置标识置位子单元,用于接收所述向上置位子单元的判断结果,若否,则根据已记录的所述访问指令获取到的数据的位置,将所述访问指令携带的位置标识进行置位,使所述访问指令携带的位置标识表征获取到所述访问指令需求的数据的缓存层或内存。
可选的,所述向下置位子单元,包括:
重复位置判断子单元,用于在所述将所述访问指令携带的使用比特标注的延迟标识向下置位之后,判断已记录的所述访问指令获取到的数据的位置是否包括对应于所述位置标识的数值的缓存层或内存;
丢弃数据子单元,用于接收所述重复位置判断子单元的判断结果,若是,则丢弃对应于所述位置标识的数值的缓存层或内存获取到所述访问指令需求的数据。
此外,本申请还提供了一种电子设备,所述电子设备包括:
显示器;
处理器;
存储器,用于存储缓存并行访问程序,所述程序在被所述处理器读取执行时,执行如下操作:读取用于获取数据的访问指令;根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
与现有技术相比,本申请具有以下优点:
本申请提供的访问缓存的方法、访问缓存的装置以及电子设备,通过读取用于获取数据的访问指令;根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;根据获取到所述访问指令需求的数据的位置,修改所述访问指令携带的延迟标识和位置标识。所述技术方案解决了访问缓存时,命中率不高的问题,降低了发生缺失的概率,并降低了在获取目标数据时逐级的访问每级缓存带来的访问延迟,相应的减少了访问缓存时产生的功耗,提高了CPU的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的实施例提供的访问缓存的方法的流程图;
图2示出了根据本申请的实施例提供的访问缓存并根据所述访问指令携带的位置标识执行预取操作的流程图;
图3示出了根据本申请的实施例提供的防止发生缺失方法的流程图;
图4示出了根据本申请的实施例提供的数据丢弃方法的流程图;
图5示出了根据本申请的实施例提供的访问缓存的装置的示意图;
图6示出了根据本申请的实施例提供的电子设备的示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
本申请的实施例提供了一种访问缓存的方法以及一种访问缓存的装置,本申请的实施例同时提供了一种电子设备。在下面的实施例中逐一进行详细说明。
通过多层缓存架构可以提高访问性能,在访问一级缓存时,若一级缓存中不存在目标数据,即,发生缺失则访问二级缓存,若二级缓存中也不存在目标数据,则继续访问下一级缓存直至获取到目标数据。虽然多层缓存架构设置一级与二级缓存的目的是减少访问延迟,设置三级缓存目的是减少缺失率,但是多层缓存架构引入的同时也增加了访问每级缓存时的延迟,例如:从访问一级缓存时发生缺失,到访问二级缓存时需要6个周期,从访问二级缓存时发生缺失,到访问三级缓存时需要8个周期。由此可见,虽然设置多层缓存架构的目的是为了减少访问延迟,但是在访问缓存时发生缺失,命中率不高的情况下,逐级的访问每级缓存带来的访问延迟会逐级累加,最终带来十分明显的延迟,并且逐级的访问每级缓存会产生冗余功耗。若同时访问每级缓存,虽然能提高获取目标数据的命中率,降低缺失,但会带来更多的冗余功耗。针对这一问题,本申请的技术方案通过读取用于获取数据的访问指令,根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟,若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作,根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识,从而实现了访问内存时降低访问延迟的功能。
本申请实施例所提供的访问缓存的方法和装置可应用于计算机等智能设备中,也可以应用于智能手机、掌上电脑、平板电脑等其他可以安装应用程序的电子设备中,以实现降低访问内存的延迟,方便用户的使用。
为了便于理解本申请提供的技术方案,在对实施例进行详细描述之前,先对本申请的技术方案作简要说明。
缓存就是数据交换的缓冲区(称作Cache),某一硬件要读取一个数据时,首先从一级缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就继续访问下一级缓存;如果在缓存中找不到的话则从速度相对较慢的内存中读取并送给CPU处理,,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
缓存通常采用多层缓存架构,包括一级缓存(Level 1Cache)简称L1 Cache,位于CPU内核的旁边,是与CPU结合最为紧密的CPU缓存,也是历史上最早出现的CPU缓存。由于一级缓存的技术难度和制造成本最高,提高容量所带来的技术难度增加和成本增加非常大,所带来的性能提升却不明显,性价比很低,而且现有的一级缓存的命中率已经很高,所以一级缓存是所有缓存中容量最小的,比二级缓存要小得多。
二级缓存(Level 2 Cache)简称L2 Cache是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能。
三级缓存(Level 3 Cache)简称L3 Cache分为两种,早期的是外置,内存延迟,同时提升大数据量计算时处理器的性能。降低内存延迟和提升大数据量计算能力都很有帮助。而在服务器领域增加L3缓存在性能方面仍然有显著的提升。设置第三级缓存的主要目的是减少缺失率。
内存(Memory)是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。内存也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
本申请的实施例提供了一种访问缓存的方法。所述访问缓存的方法实施例如下:
请参考图1,其示出了根据本申请的实施例提供的访问缓存的方法的流程图。
所述访问缓存的方法包括:
步骤S101,读取用于获取数据的访问指令。
在本实施例中,所述读取用于获取数据的访问指令,包括:从访问指令存储器中提取出所述用于获取数据的访问指令,并加载该访问指令。其中,在步骤S101中,读取用于获取数据的访问指令时,获取所述访问指令需要获取的数据的数量信息。
需要说明的是,当CPU执行某一条访问指令时,需要先把它从指令存储器中提取出来,即完成提取指令的过程,然后对所述访问指令进行译码或测试,并产生相应的操作控制信号,以便对所述访问指令需要获取的数据启动相应的动作。例如一次内存读/写操作,一个算术逻辑运算操作,或一个输入/输出操作等。所述访问指令的执行过程实际上就是从指令存储器中提取指令、分析指令以及执行指令的循环过程。
步骤S103,根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟。
根据步骤S101中,读取用于获取数据的访问指令时,还需读取所述访问指令上携带的延迟标识。所述访问指令携带的延迟标识是在所述访问指令的缓存行上设置的使用比特标注的标识。
在本实施例中,所述根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟,可以采用如下方式实现:读取所述访问指令携带的使用比特标注的延迟标识的数值判断所述访问指令是否会产生延迟。
在CPU执行访问指令的过程中,若所述访问指令在访问缓存或访问内存时发生了延迟,那么在该访问指令在之后再次执行时仍然会在同一级缓存或内存进行访问时发生延迟,导致性能阻塞。基于上述特性,通过预测阻塞可以判断访问指令在执行时是否会产生延迟。
具体的,所述访问指令的缓存行上设置的使用比特标注的延迟标识是由两位二进制比特进行标注,即在所述访问指令的缓存行上设置两位Bit 1和Bit 0进行标注,由于是二进制,所以访问指令携带的延迟标识具有如下取值:
其中,Bit 1和Bit 0是所述访问指令的缓存行上设置的两位二进制比特,Bit 1和Bit 0下面的4组二进制数值是对应于Bit 1和Bit 0的具体取值。
需要说明的是,在上述取值中,Bit 1和Bit 0取值为0和0以及Bit 1和Bit 0取值为0和1时,即:两位二进制比特的数值在转化为十进制的数值时小于1,说明所述访问指令在访问缓存时不会发生延迟;Bit 1和Bit 0取值为1和0以及Bit 1和Bit 0取值为1和1时,即:两位二进制比特的数值在转化为十进制的数值时大于1,说明所述访问指令在访问缓存时会发生延迟。
在上述4组Bit 1和Bit 0的具体取值中,每组取值是根据所述访问指令实际执行的结果进行赋值的,并且每组取值对应的具体意义是预先设定的并用于判断所述访问指令在执行时是否会发生延迟。
需要说明的是,在本实施例中,所述访问指令在访问缓存时会发生的延迟,包括以下两种延迟:
第一种是,数据缺失时逐层访问缓存时产生的延迟。
需要说明的是,CPU通过采用多层缓存架构提高访问性能,访问时的顺序为一级缓存,二级缓存,三级缓存,内存,但是访问每一级缓存时都会产生不同程度的延迟影响性能。
在第一种情况下,访问一级缓存后发现缺失(一级缓存中未获取到需求的数据)才访问二级缓存,访问二级缓存后发现缺失(二级缓存中未获取到需求的数据)才访问三级缓存,直至访问到内存。
具体的,访问一级缓存后发现缺失,到访问二级缓存时需要6个周期,访问二级缓存后发现缺失,到访问三级缓存时需要8个周期。
第二种是,所述访问指令执行计算时产生的延迟。
需要说明的是,所述访问指令在访问缓存后执行复杂计算时产生的延迟。例如,在缓存中获取到需求的数据后,基于该数据进行计算时,由于计算式或计算方法本身十分的复杂,而产生的计算延迟。
在具体实施时,步骤S103根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟,可以采用如下方式实现:读取所述访问指令携带的使用二进制比特标注的延迟标识的数值,判断所述访问指令携带的使用二进制比特标注的延迟标识的数值是否大于1,若大于1,说明所述访问指令会产生延迟,并执行访问缓存并根据所述访问指令携带的位置标识执行预取操作的步骤;若小于等于1,则按照正常访问缓存的顺序访问缓存。
需要说明的是,所述判断所述访问指令携带的使用二进制比特标注的延迟标识的数值是否大于1具体是,将二进制比特标注的延迟标识的数值转换为十进制数值,并判断该十进制数值是否大于1。
步骤S105,若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作。
如果步骤S103根据所述访问指令携带的使用二进制比特标注的延迟标识的数值大于1,说明所述访问指令在访问缓存或者内存时会发生延迟,这种情况下执行步骤105。
在判断出所述访问指令在访问缓存或者内存时会发生延迟后,就可以针对所述访问指令携带的位置标识执行预取操作,所述访问缓存并根据所述访问指令携带的位置标识执行预取操作,具体包括步骤S105-1至步骤S105-2,下面结合图2进行说明。
请参考图2,其示出了根据本申请的实施例提供的访问缓存并根据所述访问指令携带的位置标识执行预取操作的流程图。
步骤S105-1,读取所述访问指令携带的使用比特标注的位置标识的数值。
在CPU执行访问指令的过程中,若所述访问指令在访问缓存或访问内存时发生了延迟,那么在该访问指令在之后再次执行时仍然会在同一级缓存或内存进行访问时发生延迟,导致性能阻塞,即:说明在同一级缓存或内存中获取到数据。基于上述特性,通过预测阻塞可以判断所述访问指令需要获取的数据在哪一级缓存或内存。
需要说明的是,所述访问指令携带的延迟标识是在所述访问指令的缓存行上设置的使用比特标注的标识。
具体的,所述访问指令的缓存行上设置的使用比特标注的位置标识是由两位二进制比特进行标注,即在所述访问指令的缓存行上设置两位Bit 3和Bit 2进行标注,由于是二进制,所以访问指令携带的延迟标识具有如下取值:
其中,Bit 3和Bit 2是所述访问指令的缓存行上设置的两位二进制比特,Bit 3和Bit 2下面的4组二进制数值是对应于Bit 3和Bit 2的具体取值。
需要说明的是,在上述取值中,Bit 3和Bit 2取值为0和0时,该两位二进制比特的数值在转化为十进制的数值为0,说明在一级缓存中获取到所述访问指令需求的数据,即:所述访问指令在执行时产生的延迟来源于执行复杂的计算;Bit 3和Bit 2取值为0和1时,该两位二进制比特的数值在转化为十进制的数值为1,说明在二级缓存中获取到所述访问指令需求的数据;Bit 3和Bit 2取值为1和0时,该两位二进制比特的数值在转化为十进制的数值为2,说明在三级缓存中获取到所述访问指令需求的数据;Bit 3和Bit 2取值为1和1时,该两位二进制比特的数值在转化为十进制的数值为3,说明在内存中获取到所述访问指令需求的数据。
可以理解的,根据产生延迟的位置,可以推算出所述访问指令需求的数据的位置是由于:在开始读取缓存中的数据到读取到需求的数据需要若干的周期,例如:在正常访问时,在访问二级缓存时,由于先要读取一级缓存后(一级缓存中未获取到需求的数据,到访问二级缓存时需要6个周期),才开始读取二级缓存,在读取二级缓存是同样需要周期(例如需要8个周期),由于在二级缓存中获取到所述访问指令需求的数据后,不继续访问三级缓存,所以不会产生读取三级缓存的周期,所以在访问缓存时最后产生延迟的位置就是所述访问指令需求的数据的位置。
在上述4组Bit 3和Bit 2的具体取值中,每组取值是根据所述访问指令实际获取到需求的数据的位置进行赋值的,并且每组取值对应的具体意义是预先设定的并用于判断所述访问指令需求的数据的位置。
步骤S105-2,访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问。
本步骤接收步骤S105-1中,读取到的所述访问指令携带的使用比特标注的位置标识的数值,在访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问。
例如,读取到的所述访问指令携带的使用比特标注的位置标识的数值为2,则在读取一级缓存中的数据时,并行访问三级缓存中的数据。
需要说明的是,所述访问对应于所述位置标识的数值的缓存层或内存进行访问,可以是在所述访问指令访问一级缓存的同时,访问对应于所述位置标识的数值的缓存层或内存进行访问;也可以是在所述访问指令访问一级缓存的过程中,访问对应于所述位置标识的数值的缓存层或内存进行访问,只要是在所述访问指令访问完一级缓存之前,访问对应于所述位置标识的数值的缓存层或内存进行访问,均在本申请的保护范围之内。
在执行所述访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问的步骤之后,为了防止所述访问指令在访问一级缓存和执行预取操作时发生缺失,本实施例的技术方案提供了一种优选实施方式,在优选方式下,具体包括步骤S106-1至S106-2,下面结合图3作进一步说明。
请参考图3,其示出了根据本申请的实施例提供的防止发生缺失方法的流程图。
步骤S106-1,判断在所述一级缓存和对应于所述位置标识的数值的缓存层或内存中,是否获取到所述访问指令需求的数据。
根据步骤S101中,读取用于获取数据的访问指令时,获取所述访问指令需要获取的数据的数量信息,判断在所述一级缓存和对应于所述位置标识的数值的缓存层或内存中,是否获取到所述访问指令需求的数据。
具体的,读取在所述一级缓存和对应于所述位置标识的数值的缓存层或内存中的数据,判断在读取时是否获取到与所述访问指令需要获取的数据的数量信息与数据类型相同的数据。
步骤S106-2,若否,则按照多层缓存的层级顺序依次访问每级缓存与内存,直至获取到所述访问指令需求的数据。
在本实施例中,所述则按照多层缓存的层级顺序依次访问每级缓存与内存,直至获取到所述访问指令需求的数据,可以采用如下方式实现:若在读取时没有获取到与所述访问指令需要获取的数据的数量信息与数据类型相同的数据,则按照二级缓存、三级缓存和内存的顺序依次访问,直至获取到所述访问指令需求的数据。
例如,读取到的所述访问指令携带的使用比特标注的位置标识的数值为2,则在读取一级缓存中的数据时,并行访问三级缓存中的数据后,没有获取到所述访问指令需求的数据,则访问二级缓存,若在二级缓存中获取到所述访问指令需求的数据,则停止访问缓存且不防问内存。
在获取到所述访问指令需求的数据后,为了得到所述获取到所述访问指令需求的数据的位置,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在获取到所述访问指令需求的数据之后,记录所述访问指令获取到的数据的位置。
例如,在二级缓存中获取到所述访问指令需求的数据,则记录所述访问指令获取到的数据的位置为二级缓存。
步骤S107,根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
本实施例中,在执行步骤S105若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作后,为了使所述访问指令携带的延迟标识和位置标识更加准确,防止由于数据位置变动而产生的误差,所述根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识,具体包括步骤S107-1至S107-4如下:
步骤S107-1,判断已记录的所述访问指令获取到的数据的位置是否为一级缓存。
在本实施例中,所述判断已记录的所述访问指令获取到的数据的位置是否为一级缓存,可以采用如下方式实现:获取记录的所述访问指令获取到的数据的位置,并判断该记录的所述访问指令获取到的数据的位置是否为一级缓存。
步骤S107-2,若是,将所述访问指令携带的使用比特标注的延迟标识向下置位。
本步骤接收步骤S107-1中的判断结果,若记录的所述访问指令获取到的数据的位置为一级缓存,则将所述访问指令携带的使用比特标注的延迟标识向下置位。
具体的,所述将所述访问指令携带的使用比特标注的延迟标识向下置位是:获取所述访问指令的缓存行上设置两位Bit 1和Bit 0的取值,将Bit 0的取值减1,若Bit 0的取值为0,由于是二进制,则向Bit 1借位。
例如,Bit 1和Bit 0的取值1和1,则将Bit 0的取值减1后,Bit 1和Bit 0的取值为1和0;若Bit 1和Bit 0的取值1和0,则将Bit 0的取值减1时向Bit 1借位,Bit 1和Bit 0的取值为0和1。
需要说明的是,若Bit 1和Bit 0的取值0和0,将所述访问指令携带的使用比特标注的延迟标识向下置位后,Bit 1和Bit 0的取值还是0和0。
在执行预取操作时,为了防止读取一级缓存和对应于所述位置标识的数值的缓存层或内存时获取重复数据,本实施例的技术方案提供了一种优选实施方式,在优选方式下,具体包括步骤S107-2-1至S107-2-2,下面结合图4作进一步说明。
请参考图4,其示出了根据本申请的实施例提供的数据丢弃方法的流程图。
步骤S107-2-1,判断已记录的所述访问指令获取到的数据的位置是否包括对应于所述位置标识的数值的缓存层或内存。
根据已记录的所述访问指令获取到的数据的位置,判断已记录的所述访问指令获取到的数据的位置中是否还包含对应于所述位置标识的数值的缓存层或内存,即记录了2个所述访问指令获取到的数据的位置。
例如,一级缓存和三级缓存中都包含所述访问指令需求的数据,且在访问时执行预取操作的位置为三级缓存,则记录所述访问指令获取到的数据的位置时,会记录下一级缓存和三级缓存。
步骤S107-2-2,若是,则丢弃对应于所述位置标识的数值的缓存层或内存获取到所述访问指令需求的数据。
本步骤接收步骤S107-2-1中的判断结果,若已记录的所述访问指令获取到的数据的位置中还包含对应于所述位置标识的数值的缓存层或内存,则将从对应于所述位置标识的数值的缓存层或内存获取到所述访问指令需求的数据丢弃。
例如,从一级缓存和三级缓存中都获取到了所述访问指令需求的数据,则将从三级缓存中通过预取操作获取到的数据丢弃。
步骤S107-3,若否,将所述访问指令携带的使用比特标注的延迟标识向上置位,并判断已记录的所述访问指令获取到的数据的位置是否为对应于所述位置标识的数值的缓存层或内存。
本步骤接收步骤S107-1中的判断结果,若记录的所述访问指令获取到的数据的位置不为一级缓存,则将所述访问指令携带的使用比特标注的延迟标识向上置位,并判断已记录的所述访问指令获取到的数据的位置是否为对应于所述位置标识的数值的缓存层或内存。
具体的,所述将所述访问指令携带的使用比特标注的延迟标识向上置位是:获取所述访问指令的缓存行上设置两位Bit 1和Bit 0的取值,将Bit 0的取值加1,若Bit 0的取值为1,由于是二进制,则向Bit 1进位。
例如,Bit 1和Bit 0的取值0和1,则将Bit 0的取值加1时向Bit 1进位,Bit 1和Bit 0的取值为1和0;若Bit 1和Bit 0的取值1和0,则将Bit0的取值加1,Bit 1和Bit 0的取值为1和1。
需要说明的是,若Bit 1和Bit 0的取值1和1,将所述访问指令携带的使用比特标注的延迟标识向上置位后,由于比特饱和,所以Bit 1和Bit 0的取值还是1和1。
在本实施例中,所述判断已记录的所述访问指令获取到的数据的位置是否为对应于所述位置标识的数值的缓存层或内存,可以采用如下方式实现:获取记录的所述访问指令获取到的数据的位置与对应于所述位置标识的数值的缓存层或内存,判断记录的所述访问指令获取到的数据的位置与对应于所述位置标识的数值的缓存层或内存是否一致。
例如,记录的所述访问指令获取到的数据的位置为二级缓存,对应于所述位置标识的数值的位置是三级缓存。
步骤S107-4,若否,则根据已记录的所述访问指令获取到的数据的位置,将所述访问指令携带的位置标识进行置位,使所述访问指令携带的位置标识表征获取到所述访问指令需求的数据的缓存层或内存。
本步骤接收步骤S107-3中的判断结果,若记录的所述访问指令获取到的数据的位置与对应于所述位置标识的数值的缓存层或内存不一致,则根据已记录的所述访问指令获取到的数据的位置,将所述访问指令携带的位置标识进行置位,使所述访问指令携带的位置标识表征获取到所述访问指令需求的数据的缓存层或内存。
在本实施例中,所述根据已记录的所述访问指令获取到的数据的位置,将所述访问指令携带的位置标识进行置位,使所述访问指令携带的位置标识表征获取到所述访问指令需求的数据的缓存层或内存,可以采用如下方式实现:获取记录的所述访问指令获取到的数据的位置,将记录的所述访问指令获取到的数据的位置按照预先设定Bit 3和Bit 2的对应关系,转换为对应Bit 3和Bit 2的具体取值,并按照Bit 3和Bit 2的具体取值将所述访问指令携带的位置标识进行置位。
例如,记录的所述访问指令获取到的数据的位置为二级缓存,所述访问指令携带的位置标识Bit 3和Bit 2的取值为1和0表征预取操作时访问三级缓存,则将记录的所述访问指令获取到的数据的位置为二级缓存转换为对应Bit 3和Bit 2的具体取值0和1,使所述访问指令携带的位置标识Bit 3和Bit 2的取值进行置位,将所述访问指令携带的位置标识Bit 3和Bit 2的取值更新为0和1。
由于传统的访问缓存与内存的步骤是,按照缓存的多层缓存架构依次进行每级的访问,因此在访问缓存和内存时会产生访问延迟,例如:所述访问指令需求的数据在内存中,在访问时按照多层缓存架构依次进行每级的访问,则在访问到内存之前,需要访问一级缓存、二级缓存以及三级缓存,从而产生访问延迟。而本申请的实施例提供的技术方案通过预测阻塞可以判断访问指令在执行时是否会产生延迟,并判断所述访问指令需要获取的数据在哪一级缓存或内存,在按照多层缓存架构依次进行每级的访问的同时,对所述访问指令需要获取的数据的预测位置进行访问,节约访问缓存或内存时的时间,提高了获取数据的命中率,降低了访问缓存或内存时的缺失率,相应的减少了访问缓存时产生的功耗,提高了CPU的性能。
在上述的实施例中,提供了一种访问缓存的方法,与上述访问缓存的方法相对应的,本申请还提供了一种访问缓存的装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述访问缓存的装置实施例如下:
请参考图5,其示出了根据本申请的实施例提供的访问缓存的装置的示意图。
所述访问缓存的装置,包括:访问指令读取单元501、延迟标识判断单元503、缓存访问预取单元505以及标识修改单元507;
所述访问指令读取单元501,用于读取用于获取数据的访问指令;
所述延迟标识判断单元503,用于根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;
所述缓存访问预取单元505,用于接收所述延迟标识判断单元的判断结果,若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;
所述标识修改单元507,用于根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
可选的,所述延迟标识判断单元503,具体用于根据所述访问指令的缓存行上设置的使用比特标注的标识判断所述访问指令是否会产生延迟。
可选的,所述延迟标识判断单元503,具体用于根据所述访问指令携带的延迟标识判断所述访问指令是否会产生数据缺失时逐层访问缓存时产生的延迟或者所述访问指令执行计算时产生的延迟。
可选的,所述延迟标识判断单元503,具体用于读取所述访问指令携带的使用比特标注的延迟标识的数值判断所述访问指令是否会产生延迟。
可选的,所述延迟标识判断单元503,,包括:数值读取子单元以及缓存访问预取触发子单元;
所述数值读取子单元,用于读取所述访问指令携带的使用二进制比特标注的延迟标识的数值,判断所述访问指令携带的使用二进制比特标注的延迟标识的数值是否大于1;
所述缓存访问预取触发子单元,用于接收所述数值读取子单元的判断结果,若大于1,则触发所述缓存访问预取单元。
可选的,所述缓存访问预取单元505,包括:比特数值读取子单元以及缓存访问预取子单元;
所述比特数值读取子单元,用于读取所述访问指令携带的使用比特标注的位置标识的数值;
所述缓存访问预取子单元,用于访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问。
可选的,所述缓存访问预取单元505,还包括:数据获取判断子单元以及逐层访问子单元;
所述数据获取判断子单元,用于在所述访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存进行访问之后,判断在所述一级缓存和对应于所述位置标识的数值的缓存层或内存中,是否获取到所述访问指令需求的数据;
所述逐层访问子单元,用于接收所述数据获取判断子单元的判断结果,若否,则按照多层缓存的层级顺序依次访问每级缓存与内存,直至获取到所述访问指令需求的数据。
可选的,所述访问缓存的装置,还包括:位置记录单元;
所述位置记录单元,用于记录所述访问指令获取到的数据的位置。
可选的,所述标识修改单元507,包括:位置判断子单元、向下置位子单元、向上置位子单元以及位置标识置位子单元;
所述位置判断子单元,用于判断已记录的所述访问指令获取到的数据的位置是否为一级缓存;
所述向下置位子单元,用于接收所述位置判断判断子单元的判断结果,若是,将所述访问指令携带的使用比特标注的延迟标识向下置位;
所述向上置位子单元,用于接收所述位置判断判断子单元的判断结果,若否,将所述访问指令携带的使用比特标注的延迟标识向上置位,并判断已记录的所述访问指令获取到的数据的位置是否为对应于所述位置标识的数值的缓存层或内存;
所述位置标识置位子单元,用于接收所述向上置位子单元的判断结果,若否,则根据已记录的所述访问指令获取到的数据的位置,将所述访问指令携带的位置标识进行置位,使所述访问指令携带的位置标识表征获取到所述访问指令需求的数据的缓存层或内存。
可选的,所述向下置位子单元,包括:重复位置判断子单元以及丢弃数据子单元;
所述重复位置判断子单元,用于在所述将所述访问指令携带的使用比特标注的延迟标识向下置位之后,判断已记录的所述访问指令获取到的数据的位置是否包括对应于所述位置标识的数值的缓存层或内存;
所述丢弃数据子单元,用于接收所述重复位置判断子单元的判断结果,若是,则丢弃对应于所述位置标识的数值的缓存层或内存获取到所述访问指令需求的数据。
在上述的实施例中,提供了一种访问缓存的方法以及一种访问缓存的装置,此外,本申请还提供了一种电子设备;所述电子设备实施例如下:
请参考图6,其示出了根据本申请的实施例提供的电子设备的示意图。
所述电子设备,包括:显示器601、处理器603、存储器605;
所述存储器605,用于存储缓存并行访问程序,所述程序在被所述处理器读取执行时,执行如下操作:读取用于获取数据的访问指令;根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (17)
1.一种访问缓存的方法,其特征在于,包括:
读取用于获取数据的访问指令;
根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;
若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;其中,所述访问指令携带的延迟标识和位置标识是在所述访问指令的缓存行上设置的使用比特标注的标识;其中,所述访问缓存并根据所述访问指令携带的位置标识执行预取操作,包括:读取所述访问指令携带的使用比特标注的位置标识的数值;访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存;
根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
2.根据权利要求1所述的访问缓存的方法,其特征在于,所述延迟,包括:
数据缺失时逐层访问缓存时产生的延迟或者所述访问指令执行计算时产生的延迟。
3.根据权利要求1所述的访问缓存的方法,其特征在于,所述根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟,包括:
读取所述访问指令携带的使用比特标注的延迟标识的数值判断所述访问指令是否会产生延迟。
4.根据权利要求3所述的访问缓存的方法,其特征在于,所述读取所述访问指令携带的使用比特标注的延迟标识的数值判断所述访问指令是否会产生延迟,具体包括:
读取所述访问指令携带的使用二进制比特标注的延迟标识的数值,判断所述访问指令携带的使用二进制比特标注的延迟标识的数值是否大于1;
若大于1,说明所述访问指令会产生延迟,并执行访问缓存并根据所述访问指令携带的位置标识执行预取操作的步骤。
5.根据权利要求1所述的访问缓存的方法,其特征在于,在所述访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存的步骤之后,包括:
判断在所述一级缓存和对应于所述位置标识的数值的缓存层或内存中,是否获取到所述访问指令需求的数据;
若否,则按照多层缓存的层级顺序依次访问每级缓存与内存,直至获取到所述访问指令需求的数据。
6.根据权利要求5所述的访问缓存的方法,其特征在于,在获取到所述访问指令需求的数据之后,还包括:
记录所述访问指令获取到的数据的位置。
7.根据权利要求6所述的访问缓存的方法,其特征在于,所述根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识,包括:
判断已记录的所述访问指令获取到的数据的位置是否为一级缓存;
若是,将所述访问指令携带的使用比特标注的延迟标识向下置位;所述将所述访问指令携带的使用比特标注的延迟标识向下置位,是将所述延迟标识的多个比特位的最后一个比特位的数值减1;
若否,将所述访问指令携带的使用比特标注的延迟标识向上置位,所述将所述访问指令携带的使用比特标注的延迟标识向上置位,是将所述延迟标识的多个比特位的最后一个比特位的数值加1;并判断已记录的所述访问指令获取到的数据的位置是否为对应于所述位置标识的数值的缓存层或内存;
若否,则根据已记录的所述访问指令获取到的数据的位置,将所述访问指令携带的位置标识进行置位,使所述访问指令携带的位置标识表征获取到所述访问指令需求的数据的缓存层或内存。
8.根据权利要求7所述的访问缓存的方法,其特征在于,在所述将所述访问指令携带的使用比特标注的延迟标识向下置位的步骤之后,包括:
判断已记录的所述访问指令获取到的数据的位置是否包括对应于所述位置标识的数值的缓存层或内存;
若是,则丢弃对应于所述位置标识的数值的缓存层或内存获取到所述访问指令需求的数据。
9.一种访问缓存的装置,其特征在于,包括:
访问指令读取单元,用于读取用于获取数据的访问指令;
延迟标识判断单元,用于根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;其中,所述延迟标识判断单元,具体用于根据所述访问指令的缓存行上设置的使用比特标注的标识判断所述访问指令是否会产生延迟;
缓存访问预取单元,用于接收所述延迟标识判断单元的判断结果,若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;其中,所述缓存访问预取单元,包括:比特数值读取子单元,用于读取所述访问指令携带的使用比特标注的位置标识的数值;缓存访问预取子单元,用于访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存;
标识修改单元,用于根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
10.根据权利要求9所述的访问缓存的装置,其特征在于,所述延迟标识判断单元,具体用于根据所述访问指令携带的延迟标识判断所述访问指令是否会产生数据缺失时逐层访问缓存时产生的延迟或者所述访问指令执行计算时产生的延迟。
11.根据权利要求9所述的访问缓存的装置,其特征在于,所述延迟标识判断单元,具体用于读取所述访问指令携带的使用比特标注的延迟标识的数值判断所述访问指令是否会产生延迟。
12.根据权利要求11所述的访问缓存的装置,其特征在于,所述延迟标识判断单元,包括:
数值读取子单元,用于读取所述访问指令携带的使用二进制比特标注的延迟标识的数值,判断所述访问指令携带的使用二进制比特标注的延迟标识的数值是否大于1;
缓存访问预取触发子单元,用于接收所述数值读取子单元的判断结果,若大于1,则触发所述缓存访问预取单元。
13.根据权利要求9所述的访问缓存的装置,其特征在于,所述缓存访问预取单元,还包括:
数据获取判断子单元,用于在所述访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存之后,判断在所述一级缓存和对应于所述位置标识的数值的缓存层或内存中,是否获取到所述访问指令需求的数据;
逐层访问子单元,用于接收所述数据获取判断子单元的判断结果,若否,则按照多层缓存的层级顺序依次访问每级缓存与内存,直至获取到所述访问指令需求的数据。
14.根据权利要求13所述的访问缓存的装置,其特征在于,还包括:
位置记录单元,用于记录所述访问指令获取到的数据的位置。
15.根据权利要求14所述的访问缓存的装置,其特征在于,所述标识修改单元,包括:
位置判断子单元,用于判断已记录的所述访问指令获取到的数据的位置是否为一级缓存;
向下置位子单元,用于接收所述位置判断判断子单元的判断结果,若是,将所述访问指令携带的使用比特标注的延迟标识向下置位;所述将所述访问指令携带的使用比特标注的延迟标识向下置位,是将所述延迟标识的多个比特位的最后一个比特位的数值减1;
向上置位子单元,用于接收所述位置判断判断子单元的判断结果,若否,将所述访问指令携带的使用比特标注的延迟标识向上置位,所述将所述访问指令携带的使用比特标注的延迟标识向上置位,是将所述延迟标识的多个比特位的最后一个比特位的数值加1;并判断已记录的所述访问指令获取到的数据的位置是否为对应于所述位置标识的数值的缓存层或内存;
位置标识置位子单元,用于接收所述向上置位子单元的判断结果,若否,则根据已记录的所述访问指令获取到的数据的位置,将所述访问指令携带的位置标识进行置位,使所述访问指令携带的位置标识表征获取到所述访问指令需求的数据的缓存层或内存。
16.根据权利要求15所述的访问缓存的装置,其特征在于,所述向下置位子单元,包括:
重复位置判断子单元,用于在所述将所述访问指令携带的使用比特标注的延迟标识向下置位之后,判断已记录的所述访问指令获取到的数据的位置是否包括对应于所述位置标识的数值的缓存层或内存;
丢弃数据子单元,用于接收所述重复位置判断子单元的判断结果,若是,则丢弃对应于所述位置标识的数值的缓存层或内存获取到所述访问指令需求的数据。
17.一种电子设备,其特征在于,所述电子设备包括:
显示器;
处理器;
存储器,用于存储缓存并行访问程序,所述程序在被所述处理器读取执行时,执行如下操作:读取用于获取数据的访问指令;根据所述访问指令携带的延迟标识判断所述访问指令是否会产生延迟;若产生延迟,则访问缓存并根据所述访问指令携带的位置标识执行预取操作;其中,所述访问指令携带的延迟标识和位置标识是在所述访问指令的缓存行上设置的使用比特标注的标识;其中,所述访问缓存并根据所述访问指令携带的位置标识执行预取操作,包括:读取所述访问指令携带的使用比特标注的位置标识的数值;访问一级缓存时,根据所述访问指令携带的使用比特标注的位置标识的数值,访问对应于所述位置标识的数值的缓存层或内存;根据所述访问指令获取到的数据的位置,修改所述访问指令携带的延迟标识和位置标识。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510717175.9A CN106649143B (zh) | 2015-10-29 | 2015-10-29 | 一种访问缓存的方法、装置及电子设备 |
PCT/US2016/059352 WO2017075372A1 (en) | 2015-10-29 | 2016-10-28 | Accessing cache |
JP2018522055A JP7038656B2 (ja) | 2015-10-29 | 2016-10-28 | キャッシュへのアクセス |
US15/337,287 US10261905B2 (en) | 2015-10-29 | 2016-10-28 | Accessing cache with access delay reduction mechanism |
EP16860891.7A EP3368987A4 (en) | 2015-10-29 | 2016-10-28 | ACCESS TO A CACHE MEMORY |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510717175.9A CN106649143B (zh) | 2015-10-29 | 2015-10-29 | 一种访问缓存的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106649143A CN106649143A (zh) | 2017-05-10 |
CN106649143B true CN106649143B (zh) | 2020-06-26 |
Family
ID=58631157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510717175.9A Active CN106649143B (zh) | 2015-10-29 | 2015-10-29 | 一种访问缓存的方法、装置及电子设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10261905B2 (zh) |
EP (1) | EP3368987A4 (zh) |
JP (1) | JP7038656B2 (zh) |
CN (1) | CN106649143B (zh) |
WO (1) | WO2017075372A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321997B (zh) * | 2018-03-31 | 2021-10-19 | 赛灵思公司 | 高并行度计算平台、系统及计算实现方法 |
CN111290755B (zh) * | 2020-02-04 | 2023-07-07 | 北京字节跳动网络技术有限公司 | 呈现数据的方法、装置、电子设备及存储介质 |
CN111338986B (zh) * | 2020-03-13 | 2023-08-04 | 北京艾克斯特科技有限公司 | 一种获取三维模型数据结构中数据的方法 |
CN113010455B (zh) * | 2021-03-18 | 2024-09-03 | 北京金山云网络技术有限公司 | 数据处理方法、装置和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6138213A (en) * | 1997-06-27 | 2000-10-24 | Advanced Micro Devices, Inc. | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line |
US6578130B2 (en) * | 2001-10-18 | 2003-06-10 | International Business Machines Corporation | Programmable data prefetch pacing |
CN101334759A (zh) * | 2007-06-28 | 2008-12-31 | 国际商业机器公司 | 访问处理器缓存的方法和系统 |
CN102999443A (zh) * | 2012-11-16 | 2013-03-27 | 广州优倍达信息科技有限公司 | 一种计算机缓存系统的管理方法 |
CN104335177A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 有选择地控制事务处理中的指令执行 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6535958B1 (en) * | 1999-07-15 | 2003-03-18 | Texas Instruments Incorporated | Multilevel cache system coherence with memory selectively configured as cache or direct access memory and direct memory access |
JP3683248B2 (ja) * | 2002-10-22 | 2005-08-17 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US7177985B1 (en) | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US20060168401A1 (en) * | 2005-01-26 | 2006-07-27 | International Business Machines Corporation | Method and structure for high-performance linear algebra in the presence of limited outstanding miss slots |
US7594078B2 (en) * | 2006-02-09 | 2009-09-22 | International Business Machines Corporation | D-cache miss prediction and scheduling |
JP5205777B2 (ja) * | 2007-03-14 | 2013-06-05 | 富士通株式会社 | プリフェッチ処理装置、プリフェッチ処理プログラムおよびプリフェッチ処理方法 |
US9405548B2 (en) * | 2011-12-07 | 2016-08-02 | International Business Machines Corporation | Prioritizing instructions based on the number of delay cycles |
US9552298B2 (en) * | 2013-12-27 | 2017-01-24 | Sybase, Inc. | Smart pre-fetch for sequential access on BTree |
-
2015
- 2015-10-29 CN CN201510717175.9A patent/CN106649143B/zh active Active
-
2016
- 2016-10-28 EP EP16860891.7A patent/EP3368987A4/en not_active Withdrawn
- 2016-10-28 US US15/337,287 patent/US10261905B2/en active Active
- 2016-10-28 WO PCT/US2016/059352 patent/WO2017075372A1/en active Application Filing
- 2016-10-28 JP JP2018522055A patent/JP7038656B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6138213A (en) * | 1997-06-27 | 2000-10-24 | Advanced Micro Devices, Inc. | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line |
US6578130B2 (en) * | 2001-10-18 | 2003-06-10 | International Business Machines Corporation | Programmable data prefetch pacing |
CN101334759A (zh) * | 2007-06-28 | 2008-12-31 | 国际商业机器公司 | 访问处理器缓存的方法和系统 |
CN104335177A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 有选择地控制事务处理中的指令执行 |
CN102999443A (zh) * | 2012-11-16 | 2013-03-27 | 广州优倍达信息科技有限公司 | 一种计算机缓存系统的管理方法 |
Non-Patent Citations (4)
Title |
---|
An intelligent I-cache prefetch mechanism;Young等;《IEEE International Conference on Computer Design: Vlsi in Computers & Processors》;20021231;第44-49页 * |
Prefetch structure of L2 Cache for multi-core multi-thread pocessor;Ke等;《Computer Engineering and Applications》;20091231;第69-71页 * |
一种智能终端数据共享中的预取缓存技术;杨培勇等;《网络新媒体技术》;20121231;第31-36页 * |
流媒体服务系统中一种基于数据预取的缓存策略;巫旭敏等;《电子与信息学报》;20101231;第2440-2445页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3368987A1 (en) | 2018-09-05 |
JP7038656B2 (ja) | 2022-03-18 |
WO2017075372A1 (en) | 2017-05-04 |
US20170123989A1 (en) | 2017-05-04 |
CN106649143A (zh) | 2017-05-10 |
EP3368987A4 (en) | 2019-05-15 |
US10261905B2 (en) | 2019-04-16 |
JP2018536230A (ja) | 2018-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9164676B2 (en) | Storing multi-stream non-linear access patterns in a flash based file-system | |
KR102424121B1 (ko) | 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법 | |
EP2710472B1 (en) | Memory with metadata stored in a portion of the memory pages | |
CN106649143B (zh) | 一种访问缓存的方法、装置及电子设备 | |
WO2016141735A1 (zh) | 缓存数据的确定方法及装置 | |
US20150186280A1 (en) | Cache replacement policy methods and systems | |
US11366757B2 (en) | File pre-fetch scheduling for cache memory to reduce latency | |
US9875191B2 (en) | Electronic device having scratchpad memory and management method for scratchpad memory | |
US9582422B2 (en) | Hardware prefetcher for indirect access patterns | |
CN111367831B (zh) | 翻译页表的深度预取方法、部件、微处理器及计算机设备 | |
CN105095104B (zh) | 数据缓存处理方法及装置 | |
CN108874691B (zh) | 数据预取方法和内存控制器 | |
US8028118B2 (en) | Using an index value located on a page table to index page attributes | |
CN115269454A (zh) | 数据访问方法、电子设备和存储介质 | |
CN114661442B (zh) | 处理方法及装置、处理器、电子设备及存储介质 | |
WO2019177867A1 (en) | Data structure with rotating bloom filters | |
US11080195B2 (en) | Method of cache prefetching that increases the hit rate of a next faster cache | |
CN111381881A (zh) | 一种基于ahb总线接口的低功耗指令缓存方法及装置 | |
US11449428B2 (en) | Enhanced read-ahead capability for storage devices | |
US9542318B2 (en) | Temporary cache memory eviction | |
CN110825652B (zh) | 淘汰磁盘块上的缓存数据的方法、装置及设备 | |
CN112256205A (zh) | 非易失缓存数据预取方法、装置、电子设备及存储介质 | |
CN114358179B (zh) | 处理器的预取训练方法、处理装置、处理器和计算设备 | |
US12099723B2 (en) | Tag and data configuration for fine-grained cache memory | |
CN116126546B (zh) | 一种性能调优的方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |