内存监测方法、装置、处理器及存储介质与流程

文档序号:26628276发布日期:2021-09-14 22:17阅读:65来源:国知局
1.本发明实施例涉及计算机领域,特别是涉及一种内存监测方法、装置、处理器及存储介质。
背景技术
::2.随着人工智能等高新技术的不断发展,计算机芯片的设计越来越复杂,为了实现对芯片性能的进一步优化,开发人员对于计算机内存监测管理的需求愈加迫切。3.现有技术中,开发人员在确定内存使用情况时,往往是通过硬件计数器粗略地获取转译后备缓冲器(translationlookasidebuffer,tlb)的总体使用情况,这样,无法实现对内存的细粒度监测,进而也无法实现对内存的精准化管理和优化。技术实现要素:4.本发明实施例提供一种内存监测方法、装置、处理器及存储介质,以实现对内存区域的细粒度监测。5.第一方面,提供了一种内存监测方法,应用于处理器,所述处理器包括第一寄存器和第二寄存器;所述方法包括:6.当针对待监测内存区域开启监测时,向所述第一寄存器中写入预设信息;所述预设信息包括所述待监测内存区域的地址范围;7.通过页表遍历器读取所述预设信息并根据所述预设信息确定所述待监测内存区域,以便所述页表遍历器在将页表中的页表项写入转译后备缓冲器tlb时,若判断出所述页表项对应的内存区域属于所述待监测内存区域,则累加所述第二寄存器的数值;8.根据所述第二寄存器的数值,确定所述待监测内存区域的目标操作次数。9.可选的,所述方法还包括:10.在接收到停止监测指令的情况下,或者,在针对所述待监测内存区域的监测时长达到预设时长阈值的情况下,停止对所述待监测内存区域的监测。11.可选的,当针对所述待监测内存区域开启监测时,和/或当停止对所述待监测内存区域的监测时,所述方法还包括:将所述第二寄存器清零;12.则所述根据所述第二寄存器的数值,确定所述待监测内存区域的目标操作次数,包括:13.读取所述第二寄存器的数值,并将读取到的数值作为所述目标操作次数。14.可选的,所述预设信息还包括指定位;所述通过所述页表遍历器读取所述预设信息,包括:15.判断所述指定位是否为第一预设特定数值;16.在所述指定位不为所述第一预设特定数值的情况下,读取所述预设信息中的所述待监测内存区域的地址范围。17.可选的,所述停止对所述待监测区域的监测,包括:18.删除所述第一寄存器中的预设信息;或者,将所述预设信息中的指定位设置为所述第一预设特定数值。19.可选的,所述累加所述第二寄存器的数值,包括:20.读取所述第二寄存器的当前数值,得到第一数值;21.将所述第一数值增加第二预设特定数值,得到第二数值;22.将所述第二寄存器的当前数值更新为所述第二数值。23.可选的,所述方法还包括:24.检测所述目标操作次数是否小于预设操作次数阈值;25.在所述目标操作次数不小于预设操作次数阈值的情况下,将所述待监测内存区域添加至热点区域列表。26.第二方面,提供了一种内存监测装置,应用于处理器,所述处理器包括第一寄存器和第二寄存器;所述装置包括:27.写入模块,用于当针对待监测内存区域开启监测时,向所述第一寄存器中写入预设信息;所述预设信息包括所述待监测内存区域的地址范围;28.读取模块,用于通过页表遍历器读取所述预设信息并根据所述预设信息确定所述待监测内存区域,以便所述页表遍历器在将页表中的页表项写入转译后备缓冲器tlb时,若判断出所述页表项对应的内存区域属于所述待监测内存区域,则累加所述第二寄存器的数值;29.确定模块,用于根据所述第二寄存器的数值,确定所述待监测内存区域的目标操作次数。30.可选的,所述装置还包括:31.删除模块,用于在接收到停止监测指令的情况下,或者,在针对所述待监测内存区域的监测时长达到预设时长阈值的情况下,停止对所述待监测内存区域的监测。32.可选的,当针对所述待监测内存区域开启监测时,和/或当停止对所述待监测内存区域的监测时,所述装置还包括:33.清零模块,用于将所述第二寄存器清零;34.所述确定模块,具体用于:35.读取所述第二寄存器的数值,并将读取到的数值作为所述目标操作次数。36.可选的,所述预设信息还包括指定位,所述读取模块,具体用于:37.判断所述指定位是否为第一预设特定数值;38.在所述指定位不为所述第一预设特定数值的情况下,读取所述预设信息中的所述待监测内存区域的地址范围。39.可选的,所述删除模块,具体用于:40.删除所述第一寄存器中的预设信息;或者,将所述预设信息中的指定位设置为所述第一预设特定数值。41.可选的,所述读取模块,还用于:42.读取所述第二寄存器的当前数值,得到第一数值;43.将所述第一数值增加第二预设特定数值,得到第二数值;44.将所述第二寄存器的当前数值更新为所述第二数值。45.可选的,所述装置还包括:46.检测模块,用于检测所述目标操作次数是否小于预设操作次数阈值;47.添加模块,用于在所述目标操作次数不小于预设操作次数阈值的情况下,将所述待监测内存区域添加至热点区域列表。48.第三方面,提供了一种处理器,所述处理器中包括第一寄存器和第二寄存器;所述处理器执行如本发明实施例所述的内存监测方法。49.第四方面,提供了一个或多个机器可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行所述内存监测方法。50.本发明实施例中,当针对待监测内存区域开启监测时,处理器向第一寄存器中写入预设信息;预设信息包括待监测内存区域的地址范围;通过页表遍历器读取预设信息并根据该预设信息确定待监测内存区域,以便页表遍历器在将页表中的页表项写入tlb时,若判断出页表项对应的内存区域属于待监测内存区域,则累加第二寄存器的数值;根据第二寄存器的数值,确定待监测内存区域的目标操作次数。这样,本发明实施例中,通过设置需要监测的内存区域的地址范围并进行实时计数,能够快速实现对特定内存区域的监测,实现了对内存区域的细粒度监测,进而能够实现对内存的精准化管理和优化。51.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明52.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:53.图1是本发明的一种内存监测方法的步骤流程图;54.图2是本发明的另一种内存监测方法的步骤流程图;55.图3是一种本发明的内存监测方法的原理示意图;56.图4是本发明的一种内存监测装置实施例的结构框图。具体实施方式57.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。58.参照图1,示出了本发明实施例提供的一种内存监测方法实施例的步骤流程图,应用于处理器。本发明实施例中,处理器可以是指中央处理器(centralprocessingunit,cpu),是计算机的运算和控制核心。当处理器启用分页管理机制时,将内存空间划分成等长的若干区域,每个区域称为一个物理页。将程序的逻辑空间按照同样大小也划分成若干页面,称为虚拟页。59.处理器通过建立页表(pagetable)来记录虚拟页与物理页之间的对应关系,从而实现虚拟地址到物理地址的映射转换。页表遍历器(pagewalk)用于根据页表的格式在页表中找到虚拟地址对应的页表项(页表项也可称为页表条目),该页表遍历器可以通过软件实现,也可以通过硬件实现,本发明实施例对于页表遍历器的具体实现形式不作限定。60.具体的,内存管理单元(memorymanagementunit,mmu)可以用于管理虚拟存储器、物理存储器的控制线路,同时也负责将虚拟地址映射为物理地址。mmu进行虚拟地址到物理地址的转换时,需要多次访问内存中的页表,降低了cpu的性能。而在程序执行的过程中,用到的指令和数据的内存地址往往集中在一个很小的范围内,即,程序执行访问过程中存在局部性。在此基础上,设置了高速、容量相对较小的tlb用来存储近期用到的页表项,即tlb中只记录页表中的一小部分页表项,这样可以避免mmu每次地址转换都需要到内存的页表中查找,可以大幅提高cpu的性能。示例性地,当cpu发出一个虚拟地址时,mmu首先访问tlb,如果tlb中存在该虚拟地址对应的页表项,则mmu可以直接利用该页表项进行地址转换和权限检查,直接访问对应的物理地址,这样能够提高运算速度;如果tlb中不存在该虚拟地址对应的页表项,则mmu会利用页表遍历器从内存的页表中进行查找,并访问对应的物理地址,同时可以将从页表中查找到的页表项写入tlb中。61.需要注意的是,由于tlb的容量有限,经常会出现页表项被更新替换的情况。tlb中的页表项被替换后,mmu再次进行地址转换时在tlb中找不到对应页表项,此时mmu就会利用页表遍历器在页表中进行查找,并将查找到的页表项再次写入tlb中,这个过程称为重填过程。目前,为了提高内存管理效率,需要通过tlb的重填次数来监测内存的使用情况,但是现有技术中仅能记录tlb总体的重填次数,无法对内存进行精细化的监测。62.在本发明实施例中,以页表遍历器硬件实现为例进行示例说明。为页表遍历器分配了第一寄存器和第二寄存器,第一寄存器和第二寄存器可以设置在页表遍历器外部,页表遍历器与第一寄存器、第二寄存器耦合;第一寄存器和第二寄存器也可以设置在页表遍历器内部。在一种实施方式中,页表遍历器中可以包括计数器,该计数器可以用于对脉冲的个数进行计数,实现测量、计数和控制的功能,例如可以是记录tlb的重填次数等;第一寄存器和第二寄存器可以设置于计数器中。显然第一寄存器和第二寄存器也可以直接设置在页表遍历器中,本发明实施例对此不做限定。需要说明的是,页表遍历器既可通过上述硬件逻辑实现,也可通过软件逻辑实现。对于软件逻辑实现的页表遍历器,第一寄存器与第二寄存器作为该页表遍历器的辅助硬件逻辑,配合页表遍历器实现对特定内存区域的监控。63.第一寄存器和第二寄存器可以用于存储二进制数据,用户(开发人员、运维人员等)可以基于实际需求对第一寄存器、第二寄存器进行编程,选择较小地址范围的特定内存区域进行监控,实现对特定内存区域的各种计数、监测功能,实现对内存区域的细粒度监测。64.该方法具体可以包括如下步骤:65.步骤101、当针对待监测内存区域开启监测时,向所述第一寄存器中写入预设信息;所述预设信息包括待监测内存区域的地址范围。66.本发明实施例中,第一寄存器可以辅助页表遍历器进行特定区域的内存监测。待监测内存区域可以是指用户需要监测的内存区域。预设信息可以是指预先设置的具有约定格式的、用于指示页表遍历器对特定内存区域开启/停止监测的控制信息。待监测内存区域的地址范围指示出了待监测内存区域的起始地址和待监测内存区域的结束地址。实际实施时,地址范围可以用起始地址和地址范围大小(或长度)来表示。67.本步骤中,由于待监测内存区域的地址范围可以依据程序代码进行软件编程,用户可以基于实际的监测需求,灵活选择地址范围确定待监测内存区域并进行代码编写。基于待监测内存区域的地址范围,处理器通过内存监控线程将包括地址范围的预设信息写入第一寄存器中,实现对指定待监测内存区域的监测。内存监控线程的创建可以在处理器上运行的操作系统启动时构建,构建后台休眠等待唤醒,也可以是在实际需要对某特定内存区域进行监测时进行构建,本发明实施例对此不做限定。当针对待监测内存区域开启监测时,由相关进程向内存监控线程发送待监测区域的地址范围。例如,可以通过用户进程将待监测内存区域的地址范围发送给内存监控线程,以使得内存监控线程将包括地址范围的预设信息写入第一寄存器。也可以通过基于内核的虚拟机(kernel‑basedvirtualmachine,kvm)进程将待监测内存区域的地址范围发送给内存监控线程来实现针对待监测内存区域的监测开启。68.步骤102、通过页表遍历器读取所述预设信息并根据所述预设信息确定所述待监测内存区域,以便所述页表遍历器在将页表中的页表项写入tlb时,若判断出所述页表项对应的内存区域属于所述待监测内存区域,则累加所述第二寄存器的数值。69.本发明实施例中,处理器内存监控线程在向第一寄存器写入预设信息后,页表遍历器读取第一寄存器中的预设信息。这样,页表遍历器可以通过解析预设信息得到地址范围,确定当前需要监测的待监测内存区域,后续可以执行针对该待监测内存区域的监测过程。页表遍历器将页表中的页表项写入tlb即为重填操作。第二寄存器可以用于待监测内存区域重填次数的计数,该第二寄存器中可以存储计数的具体数值。70.本步骤中,页表遍历器在执行重填操作时,即,页表遍历器将在页表中查找到的页表项写入tlb时,判断该页表项对应的内存区域是否属于待监测内存区域,若属于,则页表遍历器累加第二寄存器的数值以对重填操作次数进行计数。示例性地,可以将第二寄存器的数值增加预设固定数值。例如,预设固定数值为1,则累加第二寄存器的数值的具体方式为:将第二寄存器的数值加1。71.需要注意的是,页表遍历器读取预设信息并根据预设信息确定待监测内存区域的操作,可以是在tlb重填操作之前执行。即,处理器的内存监控线程在将预设信息写入第一寄存器之后,页表遍历器读取该预设信息并确定出待监测区域,然后页表遍历器在执行tlb重填操作之后可以进行相应的计数操作。此外,页表遍历器读取预设信息并根据预设信息确定待监测内存区域的操作,也可以是在tlb重填操作之后执行。即,页表遍历器执行了一次tlb重填操作之后,可以读取预设信息并根据预设信息确定待监测内存区域,然后再确定该次tlb重填操作所针对的内存区域是否属于待监测内存区域,若属于,则进行累加计数。本发明实施例对于读取预设信息操作以及tlb重填操作的先后执行顺序不作限定。72.步骤103、根据所述第二寄存器的数值,确定所述待监测内存区域的目标操作次数。73.本发明实施例中,目标操作次数可以是指对应于待监测内存区域的页表项的重填次数。具体的,本步骤中,当针对待监测内存区域开启监测时,内存监控线程可以记录第二寄存器的初始数值,当停止监测时可以读取第二寄存器的当前数值,将该当前数值减去初始数值的差值作为待监测内存区域的目标操作次数。74.综上所述,本技术提出的内存监测方法,当针对待监测内存区域开启监测时,处理器向第一寄存器中写入预设信息;预设信息包括待监测内存区域的地址范围;通过页表遍历器读取预设信息并根据该预设信息确定待监测内存区域,以便页表遍历器在将页表中的页表项写入转译后备缓冲器时,若判断出页表项对应的内存区域属于待监测内存区域,则累加第二寄存器的数值;根据第二寄存器的数值,确定待监测内存区域的目标操作次数。这样,本发明实施例中,通过设置需要监测的内存区域的地址范围并进行实时计数,能够快速实现对特定内存区域的监测,实现了对内存区域的细粒度监测,进而能够实现对内存的精准化管理和优化。75.可选的,参照图2,示出了本发明的另一种内存监测方法实施例的步骤流程图,该方法应用于处理器,所述处理器包括第一寄存器和第二寄存器。该方法具体可以包括如下步骤:76.步骤201、当针对待监测内存区域开启监测时,向所述第一寄存器中写入预设信息;所述预设信息包括待监测内存区域的地址范围。77.具体的,本步骤的实现方式可以参照前述步骤101,本发明实施例在此不做赘述。78.步骤202、通过页表遍历器读取所述预设信息并根据所述预设信息确定所述待监测内存区域,以便所述页表遍历器在将页表中的页表项写入tlb时,若判断出所述页表项对应的内存区域属于所述待监测内存区域,则累加所述第二寄存器的数值。79.可选的,本发明实施例中,所述预设信息还包括指定位。相应的,所述通过页表遍历器读取所述预设信息,具体包括以下步骤s31至步骤s32:80.步骤s31、判断所述指定位是否为第一预设特定数值。81.本发明实施例中,指定位可以是指预设信息中预先设置的标识位,该标识位用于指示监测的开启或停止。第一预设特定数值可以是指预先设置的特定数值,例如第一预设特定数值可以为数值0,本发明实施例对此不作具体限定。82.本步骤中,页表遍历器在读取第一寄存器中的预设信息时,可以先对预设信息中指定位进行判断。若该指定位的数值为第一预设特定数值,例如为数值0,则可以判定此时处理器并未开启对内存区域的监测,页表遍历器无需执行后续读取地址范围的操作;若该指定位的数值为非零值,则可以判定此时处理器开启了对于特定内存区域的监测过程,页表遍历器可以读取预设信息中待监测内存区域的地址范围并执行后续监测过程。83.步骤s32、在所述指定位不为所述第一预设特定数值的情况下,读取所述预设信息中的所述待监测内存区域的地址范围。84.本发明实施例中,在第一寄存器中的指定位不为第一预设特定数值,即预设信息为非零值的情况下,页表遍历器可以读取预设信息中待监测内存区域的地址范围,并基于该地址范围确定出待监测内存区域并执行后续针对待监测内存区域的监测过程。85.本发明实施例中,判断指定位是否为第一预设特定数值;在指定位不为第一预设特定数值的情况下,读取预设信息中的待监测内存区域的地址范围。这样,页表遍历器在预设信息中的指定位为非零值的情况下再读取预设信息中待监测内存区域的地址范围,能够提高读取操作的有效性,避免不必要的信息读取操作。86.可选的,本发明实施例中,步骤202中累加所述第二寄存器的数值这一步骤,具体可以包括以下步骤2021至步骤2023:87.步骤2021、读取所述第二寄存器的当前数值,得到第一数值。88.本发明实施例中,第一数值可以是指第二寄存器中当前存储的数值,例如3、4、5等。89.在针对待监测内存区域进行监测并对该待监测内存区域的重填次数进行计数时,处理器可以先读取第二寄存器的当前数值,得到第一数值并进行记录,以方便后续针对目标操作次数的计算。90.步骤2022、将所述第一数值增加第二预设特定数值,得到第二数值。91.本发明实施例中,第二预设特定数值可以是指预先设置的用于更新重填次数的数值,例如可以是数值1等。92.本步骤中,在tlb重填的页表项对应的内存区域属于待监测内存区域的情况下,可以判定针对待监测内存区域执行了一次重填操作,此时可以将第二寄存器中的第一数值增加第二预设特定数值,得到第二数值。示例性地,若第一数值为3,在检测到针对待监测内存区域执行了一次重填操作之后,可以在第一数值3的基础上增加第二预设特定数值1,得到第二数值4。93.步骤2023、将所述第二寄存器的当前数值更新为所述第二数值。94.本发明实施例中,在确定出第二数值后,可以将第二数值写入第二寄存器中,将第二寄存器中的第一数值更新为第二数值,实现第二寄存器的动态累加更新。95.本发明实施例中,读取第二寄存器的当前数值,得到第一数值;将第一数值增加第二预设特定数值,得到第二数值;将第二寄存器的当前数值更新为第二数值。这样,页表遍历器在执行了针对待监测内存区域的重填操作之后,能够对第二寄存器的数值进行实时累加更新,提高了重填操作计数的准确性。96.步骤203、根据所述第二寄存器的数值,确定所述待监测内存区域的目标操作次数。97.可选的,本发明实施例中,当针对所述待监测内存区域开启监测时,和/或当停止对所述待监测区域的监测时,该内存监测方法还可以包括以下步骤s41:98.步骤s41、将所述第二寄存器清零。99.本发明实施例中,处理器在开启对待监测内存区域的监测后,可以将第二寄存器中的数值清零,即,第二寄存器在对重填操作进行计数时的初始数值为0。这样,能够方便后续的数值累加更新和计算,提高目标操作次数计算的准确性。100.相应的,步骤203具体可以包括以下步骤s42:101.步骤s42、读取所述第二寄存器的数值,并将读取到的数值作为所述目标操作次数。102.本发明实施例中,处理器的监控线程在向第一寄存器写入预设信息的同时,可以将第二寄存器的数值清零。若后续页表遍历器重填的内存区域属于待监测内存区域的地址范围,则将第二寄存器的数值加1。在监测过程结束时,可以读取第二寄存器的数值,由于第二寄存器的初始数值为0,此时可以直接将第二寄存器的数值作为目标操作次数。103.本发明实施例中,处理器将第二寄存器清零;后续读取第二寄存器的数值,并将读取到的数值作为目标操作次数。这样,能够简化目标操作次数的运算逻辑,提高重填操作计数的准确性。104.当然,本发明实施例中,处理器也可以在不将第二寄存器清零的情况下完成后续计数过程。具体的,针对待监测内存区域开启监测时,监控线程记录第二寄存器的初始数值。相应的,在根据第二寄存器的数值,确定待监测内存区域的目标操作次数时,将读取到的第二寄存器的数值减去之前记录的第二寄存器的初始数值,即可得到该待监测内存区域的目标操作次数。105.需要注意的是,本发明实施例中s31、s32、s41、s42等步骤的序号,仅是用于区别不同的步骤,而不用于描述特定的顺序或先后次序。应该理解这样的执行顺序在适当情况下可以互换,以便本发明的实施例能够以除了此处描述的执行顺序以外的顺序实施。106.步骤204、在接收到停止监测指令的情况下,或者,在针对所述待监测内存区域的监测时长达到预设时长阈值的情况下,停止对所述待监测内存区域的监测。107.本发明实施例中,停止监测指令可以是指预先设置的用于停止对于待监测内存区域进行监测的指令。在接收到该停止监测指令后,处理器可以停止对于待监测内存区域的监测。预设时长阈值可以是指预先设置的时长临界值,在监测时长达到(即等于)该预设时长阈值时,处理器可以停止对于待监测内存区域的监测,该预设时长阈值可以基于实际需求进行设置,具体可以是3分钟、5分钟、10分钟等,本发明实施例对此不作限定。108.具体的,处理器在停止对于待监测区域的监测时,可以直接删除第一寄存器中的预设信息,即将第一寄存器中的预设信息清零,也可以仅将预设信息中的指定位更新为零值。后续页表遍历器在读取预设信息并确定预设信息中的指定位为零值时,则不再执行后续的监测操作。109.本发明实施例中,在接收到停止监测指令或者针对待监测内存区域的监测时长达到预设时长阈值的情况下,停止对待监测内存区域的监测。这样,能够提高对内存区域监测控制的灵活性,更能契合用户的实际监测需求。110.可选的,本发明实施例中,步骤204具体可以通过以下步骤2041实现:111.步骤2041、删除所述第一寄存器中的预设信息;或者,将所述预设信息中的指定位设置为所述第一预设特定数值。112.本发明实施例中,预设信息中包括有指定位和待监测区域的地址范围,其中该指定位用于指示监测的开启或停止。在接收到停止监测指令的情况下,或者,在针对待监测内存区域的监测时长达到预设时长阈值的情况下,处理器可以有两种处理方式。即,处理器可以直接将第一寄存器中的预设信息删除,也可以将预设信息中的指定位设置为第一预设特定数值。之后,页表遍历器在读取预设信息后,可以判断出预设信息的指定位为第一预设特定数值,这样,页表遍历器不再执行后续的监测过程。在将指定位设置为零值的情况下,可以基于实际需求,删除预设信息中的地址范围,或者也可以保留预设信息中的地址范围,进而在一定程度上可以提高停止内存监测时设置的灵活度。113.本发明实施例中,在接收到停止监测指令的情况下,或者,在针对待监测内存区域的监测时长达到预设时长阈值的情况下,处理器可以通过删除第一寄存器中的预设信息,或者,将预设信息中的指定位设置为第一预设特定数值,以停止对待监测内存区域的监测。这样,通过删除预设信息或者仅将预设信息中指定位设置为第一预设特定数值来停止对待监测内存区域的监测,能够提高内存监测过程中设置的灵活程度,更能够适应开发人员的各种实际需求。114.步骤205、检测所述目标操作次数是否小于预设操作次数阈值。115.本发明实施例中,预设操作次数阈值可以是指预先设置的操作次数的临界阈值。在目标操作次数大于或等于预设操作次数阈值的情况下,可以确定待监测内存区域的访问频率较高,属于热点区域,后续可以进行相应的优化管理。在目标操作次数小于预设操作次数阈值的情况下,可以确定待监测内存区域的访问频率较低,不属于热点区域。116.步骤206、在所述目标操作次数不小于预设操作次数阈值的情况下,将所述待监测内存区域添加至热点区域列表。117.本发明实施例中,热点区域列表可以是指访问频率较高的内存区域的列表。在目标操作次数达到预设操作次数阈值的情况下,可以将待监测内存区域添加至热点区域列表中,以方便开发人员进行统一优化管理。118.本发明实施例中,检测目标操作次数是否小于预设操作次数阈值;在目标操作次数不小于预设操作次数阈值的情况下,将待监测内存区域添加至热点区域列表。这样,能够准确、高效地判断出内存中的热点内存区域,为开发人员对内存进行管理优化提供必要支持。119.可选的,本发明实施例中,所述第一寄存器以及所述第二寄存器为所述处理器中的闲置寄存器。120.本发明实施例中,第一寄存器与第二寄存器可以是处理器中的闲置寄存器,这样能够提高处理器中的硬件利用率,减少硬件投入。当然,该第一寄存器、第二寄存器也可以是处理器中的特定寄存器,本发明实施例对此不作限定。121.示例性地,图3示出了本发明实施例的一种内存监测方法的原理示意图。如图3所示出的,内存监控线程301向第一寄存器302中写入预设信息并将第二寄存器304清零。页表遍历器303读取第一寄存器302中的预设信息,在预设信息中的指定位为非零值时,读取解析预设信息中的待监测内存区域的地址范围并确定监控线程监控的待监测内存区域。页表遍历器303将页表项写入tlb时,判断该页表项对应的内存区域是否属于待监测内存区域,若属于则累加第二寄存器304的数值,具体可以是将第二寄存器中的数值加1。之后,内存监控线程301读取第二寄存器304中的数值,得到目标操作次数。当停止监测待监测内存区域时,更新第一寄存器302的数值为0。122.综上所述,本发明实施例提供的一种内存监测方法,当针对待监测内存区域开启监测时,处理器向第一寄存器中写入预设信息;预设信息包括待监测内存区域的地址范围;通过页表遍历器读取预设信息并根据该预设信息确定待监测内存区域,以便页表遍历器在将页表中的页表项写入转译后备缓冲器时,若判断出页表项对应的内存区域属于待监测内存区域,则累加第二寄存器的数值;根据第二寄存器的数值,确定待监测内存区域的目标操作次数;在接收到停止监测指令的情况下,或者,在针对待监测内存区域的监测时长达到预设时长阈值的情况下,删除第一寄存器中的预设信息,以停止对待监测内存区域的监测;检测目标操作次数是否小于预设操作次数阈值;在目标操作次数不小于预设操作次数阈值的情况下,将待监测内存区域添加至热点区域列表。这样,本发明实施例中,通过灵活设置需要监测的内存区域的地址范围并进行计数能够快速实现对特定内存区域的监测,实现了对内存区域的细粒度监测,进而能够实现对内存的精准化管理和优化;同时能够实现灵活控制内存监测过程,也能够高效地识别热点内存区域,为内存管理优化提供支持。123.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。124.参照图4,示出了本发明的一种内存监测装置实施例的结构框图,应用于处理器,所述处理器中包括第一寄存器和第二寄存器。该装置40具体可以包括如下模块:125.写入模块401,用于当针对待监测内存区域开启监测时,向所述第一寄存器中写入预设信息;所述预设信息包括待监测内存区域的地址范围。126.读取模块402,用于通过页表遍历器读取所述预设信息并根据所述预设信息确定所述待监测内存区域,以便所述页表遍历器在将页表中的页表项写入tlb时,若判断出所述页表项对应的内存区域属于所述待监测内存区域,则累加所述第二寄存器的数值。127.本发明实施例中,页表遍历器可以通过硬件实现,相应地,在通过硬件实现的方式下,读取模块402执行的操作可以具体是由页表遍历器执行的,进一步地,第一寄存器、第二寄存器可以设置在页表遍历器外部并与该页表遍历器耦合,该第一寄存器、第二寄存器也可以设置在页表遍历器的内部。或者,页表遍历器也可以通过软件逻辑实现,具体可以通过可编程语言的软件逻辑实现,相应地,在通过软件逻辑实现的方式下,读取模块402执行的操作可以具体是由软件逻辑定义的。本发明实施例对于页表遍历器的具体实现形式不作限定。128.确定模块403,用于根据所述第二寄存器的数值,确定所述待监测内存区域的目标操作次数。129.可选的,所述装置40还包括:130.删除模块,用于在接收到停止监测指令的情况下,或者,在针对所述待监测内存区域的监测时长达到预设时长阈值的情况下,停止对所述待监测内存区域的监测。131.可选的,当针对所述待监测内存区域开启监测时,和/或当停止对所述待监测内存区域的监测时,所述装置40还包括:132.清零模块,用于将所述第二寄存器清零;133.所述确定模块403,具体用于:134.读取所述第二寄存器的数值,并将读取到的数值作为所述目标操作次数。135.可选的,所述预设信息还包括指定位,所述读取模块401,具体用于:136.判断所述指定位是否为第一预设特定数值;137.在所述指定位不为所述第一预设特定数值的情况下,读取所述预设信息中的所述待监测内存区域的地址范围。138.可选的,所述删除模块,具体用于:139.删除所述第一寄存器中的预设信息;或者,将所述预设信息中的指定位设置为所述第一预设特定数值。140.可选的,所述读取模块402,用于:141.读取所述第二寄存器的当前数值,得到第一数值;142.将所述第一数值增加第二预设特定数值,得到第二数值;143.将所述第二寄存器的当前数值更新为所述第二数值。144.可选的,所述装置40还包括:145.检测模块,用于检测所述目标操作次数是否小于预设操作次数阈值;146.添加模块,用于在所述目标操作次数不小于预设操作次数阈值的情况下,将所述待监测内存区域添加至热点区域列表。147.综上所述,本发明实施例提供的一种内存监测装置,当针对待监测内存区域开启监测时,处理器向第一寄存器中写入预设信息;预设信息包括待监测内存区域的地址范围;通过页表遍历器读取预设信息并根据该预设信息确定待监测内存区域,以便页表遍历器在将页表中的页表项写入tlb时,若判断出页表项对应的内存区域属于待监测内存区域,则累加第二寄存器的数值;根据第二寄存器的数值,确定待监测内存区域的目标操作次数。这样,本发明实施例中,通过设置需要监测的内存区域的地址范围并进行实时计数,能够快速实现对特定内存区域的监测,实现了对内存区域的细粒度监测,进而能够实现对内存的精准化管理和优化。148.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。149.可选的,本发明实施例还提供了一种处理器,所述处理器中包括第一寄存器和第二寄存器;所述处理器执行上述内存监测方法。150.可选的,本发明实施例还提供了一个或多个可读存储介质,该可读存储介质上存储有指令,该指令被处理器执行时实现上述实施例提供的内存监测方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read‑onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。151.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。152.本领域技术人员易于想到的是:上述各个实施例的任意组合应用都是可行的,故上述各个实施例之间的任意组合都是本发明的实施方案,但是由于篇幅限制,本说明书在此就不一一详述了。153.在此提供的方法不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造具有本发明方案的系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。154.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。155.类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。156.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。157.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。158.本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的设备处理方法中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。159.应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1