CN107621926B - 栈区数据存取方法、装置、可读存储介质和计算机设备 - Google Patents
栈区数据存取方法、装置、可读存储介质和计算机设备 Download PDFInfo
- Publication number
- CN107621926B CN107621926B CN201710852358.0A CN201710852358A CN107621926B CN 107621926 B CN107621926 B CN 107621926B CN 201710852358 A CN201710852358 A CN 201710852358A CN 107621926 B CN107621926 B CN 107621926B
- Authority
- CN
- China
- Prior art keywords
- data
- buffer
- cached
- stack area
- cache
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种栈区数据读取方法、装置、可读存储介质和计算机设备。该方法包括:检测缓存器的已缓存容量状态;若缓存器的已缓存容量状态为未超过半满状态,则在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器;若缓存器的已缓存容量状态为超过半满且未全满状态,则在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区;在接收到出栈请求时,按照出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。可减少栈区访问次数,处理速度高。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种栈区数据存取方法、装置、可读存储介质和计算机设备。
背景技术
计算机***中,CPU(Central Processing Unit中央处理器)可通过压栈操作向RAM(Ramdom Access Memory易挥发性随机存取存储器)中的栈区存入数据,通过出栈操作从RAM的栈区读取数据。
传统的对栈区数据进行存取的操作,通常是当函数调用或中断响应等事件发生时,CPU通过压栈操作、出栈操作读写RAM。一般来说RAM的存储容量比较大,对大容量的RAM进行读写操作需要耗费的较长时间,导致处理速度慢。
发明内容
基于此,有必要针对传统的对栈区数据存取速度慢的问题,提供一种可提高存取速度的栈区数据存取方法、装置、可读存储介质和计算机设备。
一种栈区数据存取方法,包括:
检测缓存器的已缓存容量状态;
若所述缓存器的已缓存容量状态为未超过半满状态,则在接收到压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器;
若所述缓存器的已缓存容量状态为超过半满且未全满状态,则在接收到所述压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器,并按照时间先后顺序从所述缓存器中选取已缓存的数据存入栈区;
在接收到出栈请求时,按照所述出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。
一种栈区数据存取装置,包括:
状态检测模块,用于检测缓存器的已缓存容量状态;
第一存数据模块,用于在所述缓存器的已缓存容量状态为未超过半满状态、接收到压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器;
第二存数据模块,用于在所述缓存器的已缓存容量状态为超过半满且未全满状态、接收到所述压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器,并按照时间先后顺序从所述缓存器中选取已缓存的数据存入栈区;
数据读取模块,用于在接收到出栈请求时,按照所述出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。
上述栈区数据存取方法和装置,通过检测缓存器的已缓存容量状态后,对于缓存器的已缓存容量状态为未超过半满状态的情况,在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器;对于缓存器的已缓存容量状态为超过半满且未全满状态的情况,在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区;在接收到出栈请求时,按照出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。如此,在对栈区进行数据存入过程中采用缓存器进行缓存处理,读取数据时可从缓存器或栈区读取,由于对缓存器进行读写操作的处理速度大于向栈区读写操作的处理速度,缓存器的使用可有效减少对栈区的访问次数,从而提高对栈区数据的存取速度。
一种可读存储介质,存储有计算机程序,存储的计算机程序被处理器执行时实现上述栈区数据存取方法的步骤。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述栈区数据存取方法的步骤。
上述可读存储介质和计算机设备,由于实现了上述栈区数据存取方法,同理可提高对栈区数据的存取速度,且可进一步降低CPU运行的动态功耗。
附图说明
图1为一实施例中栈区数据存取方法的流程图;
图2为一应用例中8位缓存位的缓存环的示意图;
图3为另一实施例中栈区数据存取方法的流程图;
图4为一应用例中对栈区进行压栈操作和出栈操作的示意图;
图5为一实施例中栈区数据存取装置的结构图。
具体实施方式
参考图1,一实施例中的栈区数据存取方法,包括步骤S110至步骤S150。
S110:检测缓存器的已缓存容量状态。
其中,已缓存容量状态是缓存器中已缓存的数据占用的容量占缓存器可缓存的总容量的比例状态。缓存器可缓存的总容量小,小于存储栈区的RAM的总容量。
S120:若缓存器的已缓存容量状态为未超过半满状态,则在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器。
其中,未超过半满状态为缓存器已缓存的数据占用的容量小于或等于缓存器可缓存的总容量的一半所对应的存储状态,包括已缓存的数据占用的容量等于缓存器可缓存的总容量的一半所对应的半满状态和已缓存的数据占用的容量小于缓存器可缓存的总容量的一半所对应的未达到半满状态。压栈请求为向栈区存入数据的请求。
缓存器的总容量小,容易出现缓存占满的情况。已缓存容量状态可以反映出缓存器的存储状态,采用半满状态作为临界条件,若已缓存容量状态为未超过半满状态,则表示缓存器的存储状态未超过临界条件,可继续缓存数据,此时直接将压栈请求对应的数据缓存至缓存器。
S130:若缓存器的已缓存容量状态为超过半满且未全满状态,则在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区。
超过半满且未全满状态,为缓存器已缓存的数据占用的容量大于缓存器可缓存的总容量的一半且小于缓存器可缓存的总容量所对应的存储状态。已缓存容量状态为超过半满且未全满状态,表示缓存器的存储状态超过临界条件。在缓存器的存储状态超过临界条件的情况下,启动缓存器的自动写回,从缓存器中选取已缓存的数据存入栈区,可使得缓存器提供更多存储空间,缓存器的存储不会过于堵塞;同时可响应压栈请求,将压栈请求对应的数据缓存至缓存器。具体地,按照时间先后顺序选取已缓存的数据存入栈区,可以保证先缓存的数据先存入栈区,避免栈区中存储数据的先后顺序错乱。
S140:在接收到出栈请求时,按照出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。
出栈请求为从栈区读取数据的请求。出栈请求对应的存储数据结构为栈,栈的出栈规则为“先进后出”,即先入栈的数据后出栈。因此,出栈请求对应的读取操作顺序为时间倒序。若接收到出栈请求,则按照时间倒序从栈区或缓存器中读取数据。
步骤S120、步骤S130和步骤S140均在步骤S110之后执行,步骤S120、步骤S130和步骤S140之间的执行先后顺序不限,步骤S140可以在步骤S120或步骤S130之前执行,也可以在步骤S120或步骤S130之后执行。
上述栈区数据存取方法,通过检测缓存器的已缓存容量状态后,对于缓存器的已缓存容量状态为未超过半满状态的情况,在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器;对于缓存器的已缓存容量状态为超过半满且未全满状态的情况,在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区;在接收到出栈请求时,按照出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。如此,在对栈区进行数据存入过程中采用缓存器进行缓存处理,读取数据时可从缓存器或栈区读取,由于对缓存器进行读写操作的处理速度大于向栈区读写操作的处理速度,缓存器的使用可有效减少对栈区的访问次数,从而提高对栈区数据的存取速度,且可进一步降低CPU运行的动态功耗。
具体地,可采用环指针指向缓存器中当前已缓存有数据的地址或者指向当前缓存数据的地址之后的下一个空地址。步骤S110可以根据检测缓存器的环指针所指向的地址和最大地址获取缓存器的已缓存容量状态。比如,缓存器用于缓存数据的地址有10个且顺序排列,环指针指向当前已缓存有数据的地址,若环指针所指向的地址为第3位,则已缓存容量为总容量的3/10,已缓存容量状态为未达到半满。此外,也可以是通过对缓存器缓存的数据进行计数,此时,步骤S110可根据计数的数量占缓存器可缓存数据的总数量的比值得到已缓存容量状态。
例如,缓存器可以采用环形结构,作为缓存环进行数据缓存。参考图2,为具体采用8位缓存位的缓存环的示意图,对应压栈和出栈操作过程,采用起始栈指针指向缓存环的起始位置的地址,采用缓存栈指针作为环指针指向当前已缓存有数据的地址;若缓存环的4号缓存位(第5个缓存位)已缓存有数据,则缓存环的已缓存容量状态为超过半满状态,若缓存环的7号缓存位(第8个缓存位)已缓存有数据,则缓存环的已缓存容量状态为全满状态。
在一实施例中,步骤S130中的在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区,包括步骤(a1)。
步骤(a1):在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区,使缓存器的已缓存容量状态为半满状态。
在缓存器的已缓存容量状态为超过半满且未全满状态下,继续响应压栈请求、将压栈请求对应的数据缓存至缓存器,将使得缓存器的缓存数量继续增大,可能出现缓存堵塞的情况。通过从缓存器中选取已缓存的数据存入栈区,使缓存器的已缓存容量状态保持在半满状态,如此,缓存器的存储不会过于堵塞,可提高存入数据的效率。
具体地,可通过控制存入栈区的已缓存的数据的数量,使缓存器中已缓存的数据的数量占缓存器可缓存数据的总数量的一半,从而使已缓存容量状态保持在半满状态。
具体地,步骤(a1)中在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器的步骤,与按照时间先后顺序从缓存器中选取已缓存的数据存入栈区的步骤可以同时进行。通过同时进行栈区的写与缓存器的缓存,可以减少时间开销。
同样地,S120中的在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器之后,还可包括步骤(a2)。
步骤(a2):若已缓存容量状态超过半满状态,则按照时间先后顺序从缓存器中选取已缓存的数据存入栈区,使缓存器的已缓存容量状态保持在半满状态。
在一实施例中,步骤S120中的在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器之后,以及步骤S130中的在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区之后,还包括指针调整步骤:根据缓存至缓存器的数据占用的地址数量,分别调整缓存器的环指针和栈区的栈指针的指向地址。
具体地,调整后环指针和栈指针的指向地址增加的值等于缓存至缓存器的数据占用的地址数量。通过在调整缓存器的环指针之外,一并将栈区的栈指针对应调整,便于CPU根据栈区的栈指针的变动确认已完成压栈请求的响应。
在一实施例中,参考图3,步骤S110之后,还包括步骤S150。
S150:若缓存器的已缓存容量状态为全满状态,则按照时间先后顺序从缓存器中选取已缓存的数据存入栈区,在缓存器的已缓存状态为非全满状态时再接收压栈请求,将压栈请求对应的数据缓存至缓存器。
全满状态为已缓存的数据占用的容量等于缓存器可缓存的总容量所对应的存储状态。
在缓存器的已缓存容量状态为全满时,暂时不响应压栈请求,先启动缓存器的自动写回,当缓存器里面的数据压入栈区使缓存器空出后再响应压栈请求避免因缓存器全满而造成存堵塞,可提高数据存储效率。
在一实施例中,步骤S110之后,还包括步骤(b1)和步骤(b2)。
步骤(b1):若接收到删除数据请求且缓存器的已缓存容量状态为非空状态,则调整缓存器的环指针和栈区的栈指针分别指向对应的初始位置,并删除缓存器中已缓存的数据和栈区中已存储的数据。
步骤(b2):若接收到删除数据请求且缓存器的已缓存容量状态为空状态,则调整栈区的栈指针指向对应的初始位置,并删除栈区中已存储的数据。
非空状态为缓存器内已缓存有数据的存储状态。空状态为缓存器内没有缓存数据的存储状态。
在接收到数据删除请求时,只需要恢复缓存器的环指针和栈区的栈指针,缓存器和栈区中的数据无需读取出来只需要全部舍弃即可,如此将数据快速删除,效率高。
例如,在一具体应用场景中,如计算机的进程被杀掉,可直接恢复缓存器的环指针和栈区的栈指针,直接删除缓存器和栈区中的数据,将buf_clr置一,从而CPU可根据buf_clr的数值确定已经删除数据。
在一实施例中,步骤S110之后,还包括步骤(c1)。
步骤(c1):若接收到数据访问请求且缓存器的已缓存容量状态为非空状态,则将缓存器中已缓存的所有数据均存入栈区。
数据访问请求用于请求访问栈区中的数据,表示有主机或外设请求访问。接收到数据访问请求时,如果缓存器的已缓存容量状态为非空状态,表示有数据缓存在缓存器,此时,通过将缓存器中已缓存的所有数据均存入栈区,保证栈区中数据的完整性,便于主机或外设从栈区中访问到完整的数据。
例如,在一具体应用场景中,比如栈区的栈区数据需要被其他主机或外设所访问,将buf_wb_set置一,表示可以启动将缓存器的数据存入栈区;此时将缓存器中已缓存的所有数据均存入栈区,并将buf_wb_ack置一,表示写回完成,其他主机或外设设备可以访问栈区数据。
在一实施例中,步骤S140包括步骤(d1)和步骤(d2)。
步骤(d1):在接收到出栈请求时,若缓存器的已缓存容量状态为空状态,则按照出栈请求对应的读取操作顺序从栈区中读取数据。
缓存器的已缓存容量状态为空状态,表示缓存器还未缓存数据,无法从缓存器读取到数据;此时,直接从栈区中读取数据。
步骤(d2):在接收到出栈请求时,若缓存器的已缓存容量状态为非空状态,则按照出栈请求对应的读取操作顺序从缓存器中读取数据。
缓存器的已缓存容量状态为非空状态,表示缓存器已经缓存有数据。数据先经过缓存器缓存再写入栈区,因此缓存器中已缓存的数据排列在栈区中已存储的数据之后。按照出栈请求对应的时间倒序的读取操作顺序,需要从缓存器读取数据。
通过针对缓存器的已缓存容量状态,选择从栈区或缓存器中读取数据,确保读取数据的准确性。
参考图4,为对栈区进行压栈操作push和出栈操作pop的示意图。
上述栈区数据存取方法可应用于连接CPU和RAM的栈区控制器,具体地,在栈区控制器空闲的时候,栈区控制器不提供时钟,在CPU请求压栈或请求出栈或栈区控制器自动写回数据至栈区时,提供运行时钟,对运行的动态功耗起到降低的作用。
参考图5,一实施例中的栈区数据存取装置,包括状态检测模块210、第一存数据模块220、第二存数据模块230和数据读取模块240。
状态检测模块210用于检测缓存器的已缓存容量状态。
其中,已缓存容量状态是缓存器中已缓存的数据占用的容量占缓存器可缓存的总容量的比例状态。缓存器可缓存的总容量小,小于存储栈区的RAM的总容量。
第一存数据模块220用于在缓存器的已缓存容量状态为未超过半满状态、接收到压栈请求时,将压栈请求对应的数据缓存至缓存器。
第二存数据模块230用于在缓存器的已缓存容量状态为超过半满且未全满状态、接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区。
数据读取模块240用于在接收到出栈请求时,按照出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。
上述栈区数据存取装置,通过在状态检测模块210检测缓存器的已缓存容量状态后,第一存数据模块220在缓存器的已缓存容量状态为未超过半满状态、接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,第二存数据模块230在缓存器的已缓存容量状态为超过半满且未全满状态、接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区,数据读取模块240在接收到出栈请求时,按照出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。如此,在对栈区进行数据存入过程中采用缓存器进行缓存处理,读取数据时可从缓存器或栈区读取,由于对缓存器进行读写操作的处理速度大于向栈区读写操作的处理速度,缓存器的使用可有效减少对栈区的访问次数,从而提高对栈区数据的存取速度,且可进一步降低CPU运行的动态功耗。
具体地,可采用环指针指向缓存器中当前已缓存有数据的地址或者指向当前缓存数据的地址之后的下一个空地址。状态检测模块210可以根据检测缓存器的环指针所指向的地址和最大地址获取缓存器的已缓存容量状态。
在一实施例中,第二存数据模块230在缓存器的已缓存容量状态为超过半满且未全满状态时,具体用于:在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器,并按照时间先后顺序从缓存器中选取已缓存的数据存入栈区,使缓存器的已缓存容量状态为半满状态。如此,缓存器的存储不会过于堵塞,可提高存入数据的效率。
具体地,可通过控制存入栈区的已缓存的数据的数量,使缓存器中已缓存的数据的数量占缓存器可缓存数据的总数量的一半,从而使已缓存容量状态保持在半满状态。
具体地,第二存数据模块230在接收到压栈请求时,可以在将压栈请求对应的数据缓存至缓存器的同时,按照时间先后顺序从缓存器中选取已缓存的数据存入栈区。通过同时进行栈区的写与缓存器的缓存,可以减少时间开销。
同样地,第一存数据模块220在接收到压栈请求时,将压栈请求对应的数据缓存至缓存器之后,还可用于:若已缓存容量状态超过半满状态,则按照时间先后顺序从缓存器中选取已缓存的数据存入栈区,使缓存器的已缓存容量状态保持在半满状态。
在一实施例中,上述栈区数据存取装置还包括指针调整模块(图未示),用于在第一存数据模块220和第二存数据模块230之后,根据缓存至缓存器的数据占用的地址数量,分别调整缓存器的环指针和栈区的栈指针的指向地址。
具体地,调整后环指针和栈指针的指向地址增加的值等于缓存至缓存器的数据占用的地址数量。通过在调整缓存器的环指针之外,一并将栈区的栈指针对应调整,便于CPU根据栈区的栈指针的变动确认已完成压栈请求的响应。
在一实施例中,上述栈区数据存取装置还包括第三存数据模块(图未示),用于在缓存器的已缓存容量状态为全满状态时,按照时间先后顺序从缓存器中选取已缓存的数据存入栈区,在缓存器的已缓存状态为非全满状态时再接收压栈请求,将压栈请求对应的数据缓存至缓存器。如此,当缓存器里面的数据压入栈区使缓存器空出后再响应压栈请求避免因缓存器全满而造成存堵塞,可提高数据存储效率。
在一实施例中,上述栈区数据存取装置还包括删除响应模块(图未示),用于在状态检测模块210检测缓存器的已缓存容量状态后,在接收到删除数据请求且缓存器的已缓存容量状态为非空状态时,调整缓存器的环指针和栈区的栈指针分别指向对应的初始位置,并删除缓存器中已缓存的数据和栈区中已存储的数据;在接收到删除数据请求且缓存器的已缓存容量状态为空状态时,调整栈区的栈指针指向对应的初始位置,并删除栈区中已存储的数据。如此需要恢复缓存器的环指针和栈区的栈指针,将数据快速删除,效率高。
在一实施例中,上述栈区数据存取装置还包括访问响应模块(图未示),用于在状态检测模块210检测缓存器的已缓存容量状态后,在接收到数据访问请求且缓存器的已缓存容量状态为非空状态时,将缓存器中已缓存的所有数据均存入栈区。如此,通过将缓存器中已缓存的所有数据均存入栈区,保证栈区中数据的完整性,便于主机或外设从栈区中访问到完整的数据。
在一实施例中,数据读取模块240用于:在接收到出栈请求时,若缓存器的已缓存容量状态为空状态,则按照出栈请求对应的读取操作顺序从栈区中读取数据;在接收到出栈请求时,若缓存器的已缓存容量状态为非空状态,则按照出栈请求对应的读取操作顺序从缓存器中读取数据。通过针对缓存器的已缓存容量状态,选择从栈区或缓存器中读取数据,确保读取数据的准确性。
一种可读存储介质,存储有计算机程序,存储的计算机程序被处理器执行时实现上述栈区数据存取方法的步骤。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述栈区数据存取方法的步骤。
上述可读存储介质和计算机设备,由于实现了上述栈区数据存取方法,同理可提高对栈区数据的存取速度,且可进一步降低CPU运行的动态功耗。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种栈区数据存取方法,其特征在于,包括:
检测缓存器的已缓存容量状态;
若所述缓存器的已缓存容量状态为未超过半满状态,则在接收到压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器;
若所述缓存器的已缓存容量状态为超过半满且未全满状态,则在接收到所述压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器,并按照时间先后顺序从所述缓存器中选取已缓存的数据存入栈区;
若所述缓存器的已缓存容量状态为全满状态,则按照时间先后顺序从所述缓存器中选取已缓存的数据存入所述栈区,在所述缓存器的已缓存状态为非全满状态时再接收所述压栈请求,将所述压栈请求对应的数据缓存至所述缓存器;
在接收到出栈请求时,按照所述出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。
2.根据权利要求1所述的栈区数据存取方法,其特征在于,所述在接收到所述压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器,并按照时间先后顺序从所述缓存器中选取已缓存的数据存入栈区,包括:
在接收到所述压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器,并按照时间先后顺序从所述缓存器中选取已缓存的数据存入栈区,使所述缓存器的已缓存容量状态保持在半满状态。
3.根据权利要求1所述的栈区数据存取方法,其特征在于,所述在接收到所述压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器之后,以及所述在接收到所述压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器,并按照时间先后顺序从所述缓存器中选取已缓存的数据存入栈区之后,还包括:
根据缓存至所述缓存器的数据占用的地址数量,分别调整所述缓存器的环指针和所述栈区的栈指针的指向地址。
4.根据权利要求1所述的栈区数据存取方法,其特征在于,所述检测缓存器的已缓存容量状态之后,还包括:
若接收到删除数据请求且所述缓存器的已缓存容量状态为非空状态,则调整所述缓存器的环指针和所述栈区的栈指针分别指向对应的初始位置,并删除所述缓存器中已缓存的数据和所述栈区中已存储的数据;
若接收到所述删除数据请求且所述缓存器的已缓存容量状态为空状态,则调整所述栈区的栈指针指向对应的初始位置,并删除所述栈区中已存储的数据。
5.根据权利要求1所述的栈区数据存取方法,其特征在于,所述检测缓存器的已缓存容量状态之后,还包括:
若接收到数据访问请求且所述缓存器的已缓存容量状态为非空状态,则将所述缓存器中已缓存的所有数据均存入所述栈区。
6.根据权利要求1-5任一项所述的栈区数据存取方法,其特征在于,所述在接收到出栈请求时,按照所述出栈请求对应的读取操作顺序从栈区或缓存器中读取数据,包括:
在接收到所述出栈请求时,若所述缓存器的已缓存容量状态为空状态,则按照所述出栈请求对应的读取操作顺序从所述栈区中读取数据;
在接收到所述出栈请求时,若所述缓存器的已缓存容量状态为非空状态,则按照所述出栈请求对应的读取操作顺序从所述缓存器中读取数据。
7.一种栈区数据存取装置,其特征在于,包括:
状态检测模块,用于检测缓存器的已缓存容量状态;
第一存数据模块,用于在所述缓存器的已缓存容量状态为未超过半满状态、接收到压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器;
第二存数据模块,用于在所述缓存器的已缓存容量状态为超过半满且未全满状态、接收到所述压栈请求时,将所述压栈请求对应的数据缓存至所述缓存器,并按照时间先后顺序从所述缓存器中选取已缓存的数据存入栈区;
第三存数据模块,用于若所述缓存器的已缓存容量状态为全满状态,则按照时间先后顺序从所述缓存器中选取已缓存的数据存入所述栈区,在所述缓存器的已缓存状态为非全满状态时再接收所述压栈请求,将所述压栈请求对应的数据缓存至所述缓存器;
数据读取模块,用于在接收到出栈请求时,按照所述出栈请求对应的读取操作顺序从栈区或缓存器中读取数据。
8.一种可读存储介质,存储有计算机程序,其特征在于,存储的计算机程序被处理器执行时实现如权利要求1-6中任一项所述方法的步骤。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710852358.0A CN107621926B (zh) | 2017-09-19 | 2017-09-19 | 栈区数据存取方法、装置、可读存储介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710852358.0A CN107621926B (zh) | 2017-09-19 | 2017-09-19 | 栈区数据存取方法、装置、可读存储介质和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107621926A CN107621926A (zh) | 2018-01-23 |
CN107621926B true CN107621926B (zh) | 2020-06-16 |
Family
ID=61090442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710852358.0A Active CN107621926B (zh) | 2017-09-19 | 2017-09-19 | 栈区数据存取方法、装置、可读存储介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107621926B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4551799A (en) * | 1983-02-28 | 1985-11-05 | Honeywell Information Systems Inc. | Verification of real page numbers of stack stored prefetched instructions from instruction cache |
CN1991852A (zh) * | 2005-12-26 | 2007-07-04 | 上海乐金广电电子有限公司 | 寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置 |
CN101038542A (zh) * | 2007-05-16 | 2007-09-19 | 中兴通讯股份有限公司 | 一种堆栈缓冲区管理方法 |
CN104699627A (zh) * | 2013-12-06 | 2015-06-10 | 上海芯豪微电子有限公司 | 一种缓存***和方法 |
CN106776368A (zh) * | 2016-11-29 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种数据读取时的缓存管理方法、装置及*** |
US9690703B1 (en) * | 2012-06-27 | 2017-06-27 | Netapp, Inc. | Systems and methods providing storage system write elasticity buffers |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7962731B2 (en) * | 2005-10-20 | 2011-06-14 | Qualcomm Incorporated | Backing store buffer for the register save engine of a stacked register file |
-
2017
- 2017-09-19 CN CN201710852358.0A patent/CN107621926B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4551799A (en) * | 1983-02-28 | 1985-11-05 | Honeywell Information Systems Inc. | Verification of real page numbers of stack stored prefetched instructions from instruction cache |
CN1991852A (zh) * | 2005-12-26 | 2007-07-04 | 上海乐金广电电子有限公司 | 寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置 |
CN101038542A (zh) * | 2007-05-16 | 2007-09-19 | 中兴通讯股份有限公司 | 一种堆栈缓冲区管理方法 |
US9690703B1 (en) * | 2012-06-27 | 2017-06-27 | Netapp, Inc. | Systems and methods providing storage system write elasticity buffers |
CN104699627A (zh) * | 2013-12-06 | 2015-06-10 | 上海芯豪微电子有限公司 | 一种缓存***和方法 |
CN106776368A (zh) * | 2016-11-29 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种数据读取时的缓存管理方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN107621926A (zh) | 2018-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11550477B2 (en) | Processing host write transactions using a non-volatile memory express controller memory manager | |
US10133679B2 (en) | Read cache management method and apparatus based on solid state drive | |
US8214595B2 (en) | Storage system which utilizes two kinds of memory devices as its cache memory and method of controlling the storage system | |
US8892520B2 (en) | Storage device including a file system manager for managing multiple storage media | |
US9817761B2 (en) | Methods, systems, and computer readable media for optimization of host sequential reads or writes based on volume of data transfer | |
US20200151134A1 (en) | Bandwidth limiting in solid state drives | |
US10860494B2 (en) | Flushing pages from solid-state storage device | |
US20230333774A1 (en) | Buffer optimization for solid-state drives | |
CN111338561B (zh) | 存储器控制器与存储器页面管理方法 | |
WO2021238265A1 (zh) | 一种文件预读方法、装置、设备及存储介质 | |
US11010094B2 (en) | Task management method and host for electronic storage device | |
WO2021238260A1 (zh) | 一种预读数据缓存方法、装置、设备及存储介质 | |
US11360706B2 (en) | Memory system with program mode switching based on mixed and sequential workloads | |
CN110858188A (zh) | 具有分布式信箱结构的多处理器***及其沟通方法 | |
US20130067168A1 (en) | Caching for a file system | |
US20210263668A1 (en) | Information processing device and computer-readable recording medium recording storage control program | |
US9342472B2 (en) | PRD (physical region descriptor) pre-fetch methods for DMA (direct memory access) units | |
EP3968186A1 (en) | Video data storage method, apparatus, terminal device, and storage medium | |
CN110647476B (zh) | 一种固态硬盘写数据的方法、装置、设备及存储介质 | |
CN107621926B (zh) | 栈区数据存取方法、装置、可读存储介质和计算机设备 | |
CN104123243A (zh) | 数据缓存***及方法 | |
WO2017095429A1 (en) | Method and apparatus for caching in software-defined storage systems | |
CN116048430B (zh) | 随机写入指令处理方法、smr硬盘及计算机设备 | |
CN115525219A (zh) | 一种对象数据的存储方法、装置及介质 | |
JP2001306481A (ja) | 入出力命令実行装置 |
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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province Patentee after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province Patentee before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. |