CN113703660B - 数据预取方法和数据预取装置 - Google Patents

数据预取方法和数据预取装置 Download PDF

Info

Publication number
CN113703660B
CN113703660B CN202010444153.0A CN202010444153A CN113703660B CN 113703660 B CN113703660 B CN 113703660B CN 202010444153 A CN202010444153 A CN 202010444153A CN 113703660 B CN113703660 B CN 113703660B
Authority
CN
China
Prior art keywords
instruction
logical address
processing system
storage device
data
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
Application number
CN202010444153.0A
Other languages
English (en)
Other versions
CN113703660A (zh
Inventor
杨瑞
唐鲲
谢军宏
王升
覃朗
严华兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202010444153.0A priority Critical patent/CN113703660B/zh
Publication of CN113703660A publication Critical patent/CN113703660A/zh
Application granted granted Critical
Publication of CN113703660B publication Critical patent/CN113703660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例公开了一种数据预取方法和数据预取装置,用于提高预取数据的准确率,提高预取效果。本申请实施例方法应用于处理系统,所述处理系统包括第一存储设备和第二存储设备,所述方法包括:对所述处理系统的待执行指令进行语义分析;识别所述待执行指令中的具有读写语义的指令;根据所述具有读写语义的指令确定待预取数据的逻辑地址,所述待预取数据为所述处理系统执行所述具有读写语义的指令时将访问的且未存储于所述第一存储设备的数据,所述待预取数据存储于所述第二存储设备中,所述第一存储设备的访问速度大于所述第二存储设备的访问速度。

Description

数据预取方法和数据预取装置
技术领域
本申请涉及存储技术领域,尤其涉及一种数据预取方法和数据预取装置。
背景技术
不同的存储设备的访问速度通常不同。在二级存储系统中,通常对待访问的数据进行预测,并提前将预测的数据从访问速度较慢的存储设备中加载到访问速度较快的存储设备中,以提高系统访问性能。
目前,主要是通过历史访问记录抓取特定的数据访问模式,然后通过该数据访问模式预测未来访问地址,再将未来访问地址所对应的数据从访问速度较慢的存储设备提前预取到访问速度较快的存储设备中。
但是,针对随机访问类型的访问方式,由于不能从历史访问记录推测到未来访问地址,那么在该随机访问类型的访问方式下,系统访问的数据并没有提前预取到访问速度较快的存储设备中,导致通过上述方案中提前预取的数据的准确率较低,预取效果较差。
发明内容
本申请实施例提供了一种数据预取方法和数据预取装置,用于提高预取数据的准确率,提高预取效果。
本申请实施例第一方面提供一种数据预取方法,该方法包括:
该处理系统对处理系统的待执行指令进行语义分析,并识别待执行指令中的具有读写语义的指令,再根据该具有读写语义的指令确定待预取数据的逻辑地址,该待预取数据为该处理系统执行该具有读写语义的指令时将访问的且未存储于第一存储设备的数据其中,该处理系统包括第一存储设备和第二存储设备,该待预取数据存储于第二存储设备中,该第一存储设备的访问速度大于第二存储设备的访问速度。
本实施例中,处理系统通过对处理系统的待执行指令进行语义分析确定具有读写语义的指令,再结合该具有读写语义的指令确定待预取数据的逻辑地址,这样可以通过该待预取数据的逻辑地址将该待预取数据提前从第二存储设备载入第一存储设备中,从而准确预测处理系统的未来访问数据,以提高预取数据的准确率,提高预取效果。由于本申请实施例的方法是通过对处理系统的待执行指令的语义分析确定待预取数据,所以针对随机访问类型的访问方式同样可以通过分析待执行指令准确预测未来访问数据,并提前从第二存储设备载入第一存储设备中,从而提高预取数据的准确率和预取效果。
一种可能的实现方式中,该待执行指令包括第一指令;对该待执行指令进行语义分析包括:判断该第一指令的所有操作数是否已知;若是,则分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作;若否,则预测该第一指令的未知操作数,再分析第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作。
在该可能的实现方式中,提供了一种具体的对待执行执行进行语义分析的方式,通过判断指令的所有操作数是否已知,并判断指令的操作类型来实现对指令的语义分析,从而提升方案的可实现性。
另一种可能的实现方式中,在对该处理系统的待执行指令进行语义分析之前,该方法还包括:确定当满足预设条件时第一逻辑地址所对应的第一虚拟页面有效,该预设条件包括该处理系统发生中断异常,或者,该处理系统发生页面错误异常,或者,该处理系统的应用程序执行发生错误,该第一逻辑地址为该处理系统当前执行的第二指令所对应的逻辑地址,该第一虚拟页面为该第一逻辑地址所对应的虚拟页面,该第一逻辑地址为该第二指令的逻辑地址。
在该可能的实现方式中,提供了多种处理系统对待执行指令进行语义分析的具体应用场景。例如,在处理系统发生虚拟页面错误异常时,触发处理系统对处理系统的待执行指令进行语义,以实现对待预取数据的预取。
另一种可能的实现方式中,第一虚拟页面对应第一逻辑地址;在对该处理系统的待执行指令进行语义分析之前,该方法还包括:判断第一长度是否大于第一预设长度,该第一长度为该第一逻辑地址至该第一逻辑地址段中的最后一个逻辑地址之间的第二逻辑地址段的长度;若是,则将该一物理内存中的指令作为该待执行指令,该第一物理内存包括第三逻辑地址段所对应的该第一存储设备的物理内存,该第三逻辑地址段为以该第一逻辑地址为起点的该第一逻辑地址段中包括的该第一预设长度的逻辑地址段。
在该可能的实现方式中,提供了一种处理系统确定待执行指令的具体方式,提升了方案的可实现性。
另一种可能的实现方式中,若第一长度小于等于第一预设长度;该方法还包括:确定第二虚拟页面所对应的页表项有效,该第二虚拟页面为与该第一虚拟页面相邻的下一个虚拟页面,该第二虚拟页面对应第四逻辑地址段;将第二物理内存中的指令和第三物理内存中的指令作为该待执行指令,该第二物理内存为该第二逻辑地址段所对应的该第一存储设备的物理内存,该第三物理内存为第五逻辑地址段所对应的该第一存储设备的物理内存,该第五逻辑地址段为以该第四逻辑地址段中的首个逻辑地址为起点的该第四逻辑地址段中包括的第二预设长度的逻辑地址段,该第二预设长度加上该第一长度等于该第一预设长度。
在该可能的实现方式中,提供了处理系统针对跨虚拟页面确定待执行指令的具体过程,在实际应用,提升了方案的完整性和实用性。
另一种可能的实现方式中,若该第一物理内存中的指令包括分支跳转指令;该方法还包括:确定第一分支跳转指令的第二逻辑地址和该第一分支跳转指令的跳转分支方向的第三逻辑地址,该第一分支跳转指令为该第一物理内存中的首条分支跳转指令;判断该第三逻辑地址所对应的第三虚拟页面是否有效,该第三虚拟页面对应第六逻辑地址段;若是,则将第四物理内存中的指令和第五物理内存中的指令作为该待执行指令,该第四物理内存为第七逻辑地址段所对应的第一存储设备的物理内存,该第五物理内存为第八逻辑地址段所对应的第一存储设备的物理内存,该第七逻辑地址段为该第一逻辑地址至该第二逻辑地址之间的逻辑地址段,该第八逻辑地址段为以该第三逻辑地址为起点的该第六逻辑地址段中包括的第三预设长度的逻辑地址段,该第三预设长度加上该第七逻辑地址段的长度等于该第一预设长度;若否,则将该第四物理内存中的指令作为该待执行指令。
在该可能的实现方式中,提供了一种针对分支跳转指令的跳转分支方向为跨虚拟页面的逻辑地址的场景下,处理系统确定待执行指令的具体实现方式。
另一种可能的实现方式中,该对该处理系统的待执行指令进行语义分析之前,该方法还包括:对该待执行指令分别进行分解,得到第一微码;将该第一微码转换为第一中间代码;该对该处理系统的待执行指令进行语义分析包括:根据中间代码的语义定义格式对该第一中间代码进行语义分析。
在该可能的实现方式中,在处理系统对待执行指令进行语义分析之前,处理系统可以先将待执行指令的格式进行转换,以便于对待执行指令的语义分析。
另一种可能的实现方式中,该方法还包括:根据该待预取数据的逻辑地址从第二存储设备中获取该待预取数据;将该待预取数据存储到该第一存储设备中,该待预取数据用于当该处理系统执行该待执行指令时,通过该待预取数据的逻辑地址从该第一存储设备中访问该待预取数据。
在该可能的实现方式中,处理系统可以从第二存储设备预取该待预取数据,并存储至第一存储设备中,以便于后续处理系统执行待执行指令时,能够从第一存储设备获取该待预取数据,提升处理系统访问数据的速率,提升系统访问性能。
本申请实施例第二方面提供一种处理系统,该处理系统第一存储设备和第二存储设备;该处理系统包括:
分析单元,用于对该处理系统的待执行指令进行语义分析;
识别单元,用于识别该待执行指令中的具有读写语义的指令;
第一确定单元,用于根据该具有读写语义的指令确定待预取数据的逻辑地址,该待预取数据为该处理系统执行该具有读写语义的指令时将访问的且未存储于该第一存储设备的数据,该待预取数据存储于该第二存储设备中,该第一存储设备的访问速度大于该第二存储设备的访问速度。
一种可能的实现方式中,该待执行指令包括第一指令;该识别单元具体用于:
判断该第一指令的所有操作数是否已知;
若是,则分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作;
若否,则预测该第一指令的未知操作数,再分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作。
另一种可能的实现方式中,该处理系统还包括第二确定单元;
该第二确定单元,用于确定当满足预设条件时第一逻辑地址所对应的第一虚拟页面有效,该预设条件包括该处理系统发生中断异常,或者,该处理系统发生页面错误异常,或者,该处理系统的应用程序执行发生错误,第一逻辑地址为该处理系统当前执行的第二指令的逻辑地址,该第一虚拟页面为该第一逻辑地址所对应的虚拟页面,该第一逻辑地址为该第二指令的逻辑地址。
另一种可能的实现方式中,该第一虚拟页面对应第一逻辑地址段;该处理系统还包括第一判断单元和第三确定单元;
第一判断单元,用于判断第一长度是否大于第一预设长度,该第一长度为该第一逻辑地址至该第一逻辑地址段中的最后一个逻辑地址之间的第二逻辑地址段的长度;
第三确定单元,用于若该第一长度大于该第一预设长度,则将第一物理内存中的指令作为所述待执行指令,该第一物理内存包括第三逻辑地址段所对应的该第一存储设备的物理内存,该第三逻辑地址段为以该第一逻辑地址为起点的该第一逻辑地址段中包括的该第一预设长度的逻辑地址段。
另一种可能的实现方式中,该第二确定单元还用于:
确定第二虚拟页面所对应的页表项有效,该第二虚拟页面为与该第一虚拟页面相邻的下一个虚拟页面,该第二虚拟页面对应第四逻辑地址段;
该第三确定单元还用于:
将第二物理内存中的指令和第三物理内存中的指令作为所述待执行指令,该第二物理内存为该第二逻辑地址段所对应的该第一存储设备的物理内存,该第三物理内存为第五逻辑地址段所对应的该第一存储设备的物理内存,该第五逻辑地址段为以该第四逻辑地址段中的首个逻辑地址为起点的该第四逻辑地址段中包括的第二预设长度的逻辑地址段,该第二预设长度加上该第一长度等于该第一预设长度。
另一种可能的实现方式中,若该第一物理内存中的指令包括分支跳转指令;该第二确定单元还用于:
确定第一分支跳转指令的第二逻辑地址和该第一分支跳转指令的跳转分支方向的第三逻辑地址,该第一分支跳转指令为该第一物理内存中的首条分支跳转指令;
该第一判断单元还用于:
判断该第三逻辑地址所对应的第三虚拟页面是否有效,该第三虚拟页面对应第六逻辑地址段;
该第三确定单元还用于:
若第三虚拟页面有效,则将第四物理内存中的指令和第五物理内存中的指令作为该待执行指令,该第四物理内存为第七逻辑地址段所对应的第一存储设备的物理内存,该第五物理内存为第八逻辑地址段所对应的第一存储设备的物理内存,该第七逻辑地址段为该第一逻辑地址至该第二逻辑地址之间的逻辑地址段,该第八逻辑地址段为以该第三逻辑地址为起点的该第六逻辑地址段中包括的第三预设长度的逻辑地址段,该第三预设长度加上该第七逻辑地址段的长度等于该第一预设长度;
若第三虚拟页面无效,则将该第四物理内存中的指令作为该待执行指令。
另一种可能的实现方式中,该处理系统还包括分解单元和转换单元;
该分解单元,用于对该待执行指令分别进行分解,得到第一微码;
该转换单元,用于将该第一微码转换为第一中间代码;
该分析单元具体用于:
根据中间代码的语义定义格式对该第一中间代码进行语义分析。
另一种可能的实现方式中,该处理系统还包括获取单元和存储单元;
该获取单元,用于根据该待预取数据的逻辑地址从第二存储设备中获取该待预取数据;
该存储单元,用于将该待预取数据存储到所述第一存储设备中,该待预取数据用于当该处理系统执行该待执行指令时,通过该待预取数据的逻辑地址从该第一存储设备中访问该待预取数据。
本申请实施例第三方面提供一种处理系统,可以包括:
处理器、存储器以及输入输出接口,该处理器、该存储器与该输入输出接口连接;该存储器,用于存储程序代码;该处理器调用该存储器中的程序代码用于执行以下步骤,下面进行介绍:
处理器,用于对该处理系统的待执行指令进行语义分析;识别该待执行指令中的具有读写语义的指令;根据该具有读写语义的指令确定待预取数据的逻辑地址,该待预取数据为该处理系统执行该具有读写语义的指令时将访问的且未存储于该第一存储设备的数据,该待预取数据存储于该第二存储设备中,该第一存储设备的访问速度大于该第二存储设备的访问速度。
一种可能的实现方式中,该待执行指令包括第一指令;该处理器具体用于:
判断该第一指令的所有操作数是否已知;
若是,则分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作;
若否,则预测该第一指令的未知操作数,再分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作。
另一种可能的实现方式中,该处理器还用于:
确定当满足预设条件时第一逻辑地址所对应的第一虚拟页面有效,该预设条件包括该处理系统发生中断异常,或者,该处理系统发生页面错误异常,或者,该处理系统的应用程序执行发生错误,第一逻辑地址为该处理系统当前执行的第二指令的逻辑地址,该第一虚拟页面为该第一逻辑地址所对应的虚拟页面,该第一逻辑地址为该第二指令的逻辑地址。
另一种可能的实现方式中,该第一虚拟页面对应第一逻辑地址段;该处理器还用于:
判断第一长度是否大于第一预设长度,该第一长度为该第一逻辑地址至该第一逻辑地址段中的最后一个逻辑地址之间的第二逻辑地址段的长度;
若该第一长度大于该第一预设长度,则将第一物理内存中的指令作为所述待执行指令,该第一物理内存包括第三逻辑地址段所对应的该第一存储设备的物理内存,该第三逻辑地址段为以该第一逻辑地址为起点的该第一逻辑地址段中包括的该第一预设长度的逻辑地址段。
另一种可能的实现方式中,该处理器还用于:
确定第二虚拟页面所对应的页表项有效,该第二虚拟页面为与该第一虚拟页面相邻的下一个虚拟页面,该第二虚拟页面对应第四逻辑地址段;
将第二物理内存中的指令和第三物理内存中的指令作为所述待执行指令,该第二物理内存为该第二逻辑地址段所对应的该第一存储设备的物理内存,该第三物理内存为第五逻辑地址段所对应的该第一存储设备的物理内存,该第五逻辑地址段为以该第四逻辑地址段中的首个逻辑地址为起点的该第四逻辑地址段中包括的第二预设长度的逻辑地址段,该第二预设长度加上该第一长度等于该第一预设长度。
另一种可能的实现方式中,若该第一物理内存中的指令包括分支跳转指令;该处理器还用于:
确定第一分支跳转指令的第二逻辑地址和该第一分支跳转指令的跳转分支方向的第三逻辑地址,该第一分支跳转指令为该第一物理内存中的首条分支跳转指令;
判断该第三逻辑地址所对应的第三虚拟页面是否有效,该第三虚拟页面对应第六逻辑地址段;
若第三虚拟页面有效,则将第四物理内存中的指令和第五物理内存中的指令作为该待执行指令,该第四物理内存为第七逻辑地址段所对应的第一存储设备的物理内存,该第五物理内存为第八逻辑地址段所对应的第一存储设备的物理内存,该第七逻辑地址段为该第一逻辑地址至该第二逻辑地址之间的逻辑地址段,该第八逻辑地址段为以该第三逻辑地址为起点的该第六逻辑地址段中包括的第三预设长度的逻辑地址段,该第三预设长度加上该第七逻辑地址段的长度等于该第一预设长度;
若第三虚拟页面无效,则将该第四物理内存中的指令作为该待执行指令。
另一种可能的实现方式中,该处理器还用于:
对该待执行指令分别进行分解,得到第一微码;
将该第一微码转换为第一中间代码;
该处理器具体用于:
根据中间代码的语义定义格式对该第一中间代码进行语义分析。
另一种可能的实现方式中,该处理器还用于:
根据该待预取数据的逻辑地址从第二存储设备中获取该待预取数据;
将该待预取数据存储到所述第一存储设备中,该待预取数据用于当该处理系统执行该待执行指令时,通过该待预取数据的逻辑地址从该第一存储设备中访问该待预取数据。
本申请实施例第四方面提供一种存储介质,包括指令,当其在计算机上运行时,用于执行上述第一方面中处理系统所设计的程序。
本申请实施例第五方面提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如本申请第一方面任一可选实施方式中所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
经由上述技术方案可知,该处理系统对处理系统的待执行指令进行语义分析,并识别待执行指令中的具有读写语义的指令,再根据该具有读写语义的指令确定待预取数据的逻辑地址,该待预取数据为该处理系统执行该具有读写语义的指令时将访问的且未存储于第一存储设备的数据其中,该处理系统包括第一存储设备和第二存储设备,该待预取数据存储于第二存储设备中,该第一存储设备的访问速度大于第二存储设备的访问速度。由此可知,处理系统通过对处理系统的待执行指令进行语义分析确定具有读写语义的指令,再结合该具有读写语义的指令确定待预取数据的逻辑地址,这样可以通过该待预取数据的逻辑地址将该待预取数据提前从第二存储设备载入第一存储设备中,从而准确预测处理系统的未来访问数据,以提高预取数据的准确率,提高预取效果。由于本申请实施例的方法是通过对处理系统的待执行指令的语义分析确定待预取数据,所以针对随机访问类型的访问方式同样可以通过分析待执行指令准确预测未来访问数据,并提前从第二存储设备载入第一存储设备中,从而提高预取数据的准确率和预取效果。
附图说明
图1A为本申请实施例数据预取方法的一个场景示意图;
图1B为本申请实施例处理系统的一个架构示意图;
图1C为本申请实施例虚拟机管理器的一个结构示意图;
图2A为本申请实施例数据预取方法的一个实施例示意图;
图2B为本申请实施例数据预取方法的一个场景示意图;
图2C为本申请实施例数据预取方法的另一个场景示意图;
图2D为本申请实施例数据预取方法的另一个场景示意图;
图3A为本申请实施例数据预取方法的另一个实施例示意图;
图3B为本申请实施例数据预取方法的另一个场景示意图;
图3C为本申请实施例数据预取方法的另一个场景示意图;
图3D为本申请实施例数据预取方法的另一个场景示意图;
图3E为本申请实施例数据预取方法的另一个实施例示意图;
图3F为本申请实施例数据预取方法的另一个场景示意图;
图3G为本申请实施例数据预取方法的另一个场景示意图;
图3H为本申请实施例数据预取方法的另一个场景示意图;
图4A为本申请实施例数据预取方法的另一个实施例示意图;
图4B为本申请实施例数据预取方法的另一个场景示意图;
图4C为本申请实施例数据预取方法的另一个场景示意图;
图4D为本申请实施例数据预取方法的另一个场景示意图;
图5为本申请实施例处理系统的一个结构示意图;
图6为本申请实施例处理系统的另一个结构示意图。
具体实施方式
本申请实施例提供了一种数据预取方法和数据预取装置,用于提高预取数据的命中率,提高预取效果。
为了便于读者理解本申请实施例的方案,下面对本申请实施例涉及的一些技术术语进行说明。
1、逻辑地址:指从处理系统的应用程序、OS内核或虚拟机管理器角度看到的内存单元(memory cell)或存储单元(storage element)等。例如,本申请实施例中,该待预取数据的逻辑地址是针对处理系统中的应用程序、OS内核或虚拟机管理器而言的,应用程序、OS内核或虚拟机管理器通过该待预取数据的逻辑地址访问该待预取数据。
2、物理地址:指存储设备中以字节为单位存储信息,为正确地存取信息,每个字节单元给以一个唯一的存储地址。例如,该待预取数据在第二存储设备的第二物理地址指第二存储设备中存放该待预取数据的物理地址。
3、逻辑地址段:指由多个连续的逻辑地址组成的地址段。例如,逻辑地址段1包括逻辑地址0x12345678、逻辑地址0x12345679和逻辑地址0x1234567A,在本申请实施例中将逻辑地址段1简称为:0x12345678至0x1234567A之间的逻辑地址段。
4、物理地址段:指由同一存储设备中的多个连续的物理地址组成的地址段。例如,物理地址段1包括第一存储设备的物理地址0x54321678、第一存储设备的物理地址0x54321679和第一存储设备的物理地址0x5432167A,在本申请实施例中将物理地址段1简称为:0x54321678至0x5432167A之间的物理地址段。
5、逻辑地址段的长度:指逻辑地址段中所包括的逻辑地址的个数。例如,逻辑地址段1为0x12345678至0x1234567A之间的逻辑地址段,可知该逻辑地址段1包括三个逻辑地址,则该逻辑地址段1的长度为3。
6、以逻辑地址B为起点的逻辑地址段A中的预设长度的逻辑地址段C:指以逻辑地址B为起点且包括逻辑地址B的逻辑地址段A中的预设长度的逻辑地址段;或者,指以逻辑地址B为起点且不包括逻辑地址B的逻辑地址段A中的预设长度的逻辑地址段。例如,逻辑地址段A为0x12345000至Ox12345FFF之间的逻辑地址段,逻辑地址B为0x12345678,预设长度为3,则以逻辑地址B为起点且包括逻辑地址B的逻辑地址段C为0x12345678至0x1234567A之间的逻辑地址段。或者,例如,逻辑地址段A为0x12345000至Ox12345FFF之间的逻辑地址段,逻辑地址B为0x12345678,预设长度为3,则以逻辑地址B为起点且不包括逻辑地址B的逻辑地址段C为0x12345679至0x1234567B之间的逻辑地址段。
7、指令的逻辑地址:指从处理系统的应用程序、OS内核或虚拟机管理器角度看到的存储该指令的逻辑地址。例如,指令Load R1,R3的逻辑地址为0x12345678,处理系统中的应用程序、OS内核或虚拟机管理器通过0x12345678读取该指令Load R1,R3。
8、指令顺序:指按照指令的逻辑地址进行顺序排序,或者,指按照指令在第一存储设备的物理地址进行顺序排序。例如,如图1A所示,第一逻辑地址段为0x12345000至0x12345FFF之间的逻辑地址段,指令1的逻辑地址为0x12345678,0x12345678对应第一存储设备的物理地址0x54321678。以每个指令占两个字节为例进行说明。指令1的下一个指令为指令2,该指令2的逻辑地址为0x1234567A,0x1234567A对应第一存储设备的物理地址0x5432167A;而指令2的下一个指令为指令3,该指令3的逻辑地址为0x1234567C,0x1234567C对应第一存储设备的物理地址0x5432167C。将0x5432167A至0x54321FFF之间的物理地址段所对应的物理内存称为物理内存1,若指令2和指令3均为分支跳转指令,则指令2为该物理内存1中的首条分支跳转指令。
本申请实施例应用于处理系统,该处理系统是由多个硬件和软件组成的集合。该处理系统为二级存储系统或者为多级存储系统,该处理系统可以集成在节点设备或服务器中,具体本申请不做限定。下面结合图1B以该处理系统为二级存储系统为例进行说明。
请参阅图1B,图1B为本申请实施例处理系统的一个架构示意图。该处理系统包括虚拟机管理器、OS内核、应用程序(application,app)、第一内存控制器、第一存储设备、第二内存控制器和第二存储设备。其中,虚拟机管理器(hypervisor)、操作系统(operatingsystem,OS)内核和该app为该处理系统的中央处理器(central processing unit,CPU)上运行的软件。
本申请实施例提供的数据预取方法可以由虚拟机管理器来执行,也可以是由OS内核来执行,或者是由虚拟机管理器和OS内核共同执行,具体本申请不做限定。
下面以本申请实施例提供的数据预取方法可以由虚拟机管理器来执行介绍本申请实施例中的虚拟机管理器。请参阅图1C,该虚拟机管理器包括页面错误异常处理模块、指令分析模块和预取模块。
页面错误异常处理模块用于处理页面错误(page fault)。当该处理系统发生页面错误异常时,该页面错误异常处理模块触发指令分析模块对处理系统的待执行指令进行分析。
指令分析模块用于对待执行指令进行语义分析,识别具有读写语义的指令,抓取待预取数据的逻辑地址。该指令分析模块包括动态二进制转换(dynamic binarytranslator,DBT)子模块和指令分析(code analyzer,CA)子模块。
DBT子模块用于将待执行指令转换为第一微码(micro operation code),再将第一微码转换为第一中间代码。具体的,该DBT子模块包括分解器和中间代码生成器。该分解器用于将待执行指令分解成第一微码。中间代码生成器用于按照中间代码词典将第一微码转换为第一中间代码。
CA子模块用于对第一中间代码进行语义分析,识别具有读写语义的第二中间代码,抓取待预取数据的逻辑地址。
预取模块用于根据待预取数据的逻辑地址将待预取数据从第二存储设备预取到第一存储设备中。
另一种可能的实现方式中,本申请实施例提供的数据预取方法由OS内核执行,则该OS内核包括页面错误异常处理模块、指令分析模块和预取模块。具体的,该指令分析模块、页面错误异常处理模块和预取模块请参阅前述图1C中的相关介绍,这里不再赘述。
第一内存控制器用于对第一存储设备的物理内存的管理和对第一存储设备的数据进行操作和管理。
第二内存控制器用于对第二存储设备的物理内存的管理和对第二存储设备的数据进行操作和管理。
第一存储设备和第二存储设备用于存储数据,第一存储设备的存储介质与第二存储设备的存储介质为同一种存储介质,或者为不同的两种存储介质。并且,第一存储设备的访问速度大于第二存储设备的访问速度。
可选的,存储设备的访问速度通过以下两种可能的参数体征:
a、存储设备的访问时延。
其中,存储设备的访问时延越小,则存储设备的访问速度越大;反之,则存储设备的访问速度越小。
需要说明的是,存储设备的访问时延与存储设备的存储介质、存储设备的数据存储方式(压缩存储和非压缩存储)和存储设备与处理系统的CPU的距离相关。
示例一:第一存储设备为DRAM,而第二存储设备为SCM,由存储介质本身的属性决定DRAM的访问时延小于SCM的访问时延。
示例二:当第一存储设备的存储介质与第二存储设备的存储介质相同时,由于第一存储设备的数据存储方式为非压缩存储(即数据直接存储至第一存储设备),而第二存储设备的数据存储方式为压缩存储(即数据是经过压缩处理后再存储至第二存储设备中)。因此,处理系统在从第二存储设备读取数据时,需要对数据进行解压缩。而对数据进行解压缩的过程需要时间,导致第二存储设备的访问时延大于第一存储设备的访问时延。
示例三:当第一存储设备的存储介质与第二存储设备的存储介质相同时,处理系统通过近程从第一存储设备访问数据,而处理系统通过远程从第二存储设备访问数据。而近程访问数据的访问时延小于远程访问数据的时延,所以第二存储设备的访问时延大于第一存储设备的访问时延。
b、存储设备的传输带宽。
其中,存储设备的传输带宽越大,存储设备的访问速度越大;反之,则存储设备的访问速度越小。
需要说明的是,存储设备的传输带宽与存储设备的存储介质和存储设备的物理封装格式相关。
示例一:第一存储设备为DRAM,而第二存储设备为SCM,由存储介质本身的属性决定DRAM的传输带宽大于SCM的带宽。
示例二:当第一存储设备的存储介质与第二存储设备的存储介质相同时,第一存储设备为片上三维堆叠存储器(on chip 3D die-stacking),第二存储设备为片外双列直插式存储器(off chip dual in line memory,off chip DIMM),而通常片上三维堆叠存储器的传输带宽大于片外双列直插式存储器。即由于存储设备的物理封装格式不同导致第一存储设备的传输带宽大于第二存储设备的传输带宽。
本申请实施例中,该处理系统从第一存储设备和第二存储设备中访问数据的方式包括以下任一种:
1、该处理系统通过同步访问方式从第一存储设备中访问数据,通过异步访问方式从第二存储设备中访问数据;
2、该处理系统均通过同步访问方式从第一存储设备和第二存储设备中访问数据;
3、该处理系统均通过异步访问方式从第一存储设备和第二存储设备中访问数据。
需要说明的是,本申请实施例应用于基于页面的存储系统(page based memorysystem),或者,基于分段的存储系统(segment based memory system),或者其他类型的存储系统,具体本申请不做限定。在后续的实施例中,仅以本申请实施例的技术方案应用于基于页面的存储系统为例进行说明。
上述图1B所示的处理系统仅仅是为了介绍本申请实施例所应用的系统架构,并不对本申请实施例所应用的系统架构进行限定。例如,本申请实施例的数据预取方法同样适用于芯片系统,当芯片系统发生异常导致芯片系统发生中断时,芯片系统获取待执行指令,并识别具有读写语义的指令,抓取待预取数据的逻辑地址。
为便于理解,下面对本申请实施例中的数据预取方法进行介绍。请参阅图2A,图2A为本申请实施例数据预取方法的一个实施例示意图,该方法包括:
201、处理系统对该处理系统的待执行指令进行语义分析。
其中,该待执行指令为该处理系统将执行的指令。该处理系统包括第一存储设备和第二存储设备,第一存储设备和第二存储设备的相关介绍请参阅前述图1B中的详细介绍,这里不再赘述。
可选的,该待执行指令为该处理系统未来十分钟内将执行的指令;或者,该待执行指令为该处理系统中的某个app将执行的指令,具体本申请不做限定。
具体的,步骤201包括步骤201a至步骤201c。下面结合步骤201a至步骤201c介绍该步骤201的执行过程。
步骤201a:该处理系统判断该第一指令的所有操作数是否已知,若是,则执行步骤201b;若否,则执行步骤201c。
其中,该待执行指令包括第一指令。
具体的,该处理系统按照指令的执行顺序对该待执行指令进行语义分析,这里以对第一指令进行语义分析为例进行说明。该处理系统判断第一指令的所有操作数是否已知,如果是,则执行步骤201b;如果不是,则执行步骤201c。而该处理系统判断该第一指令的所有操作数是否在第一存储设备和/或从寄存器上下文可以直接得到或推导得到,该寄存器上下文为在指令断点处CPU所包含的寄存器组中各个寄存器值组成的状态集合。
例如,第一指令为Load R1,Addr2,如果逻辑地址Addr2的数据未存储在第一存储设备中,那么则无法获取该第一指令的操作数。再例如,第一指令为Store Addr3,R5,如果R5寄存器中正在等待从内存中载入某个数据,而R5寄存器的值是未知的,则无法获取该第一指令的操作数。
步骤201b:该处理系统分析该第一指令的操作类型,按照该第一指令的操作类型对第一指令的所有操作数进行操作。
例如,这里以第一指令为第二指令的下一条指令为例进行介绍处理系统对第一指令的语义分析过程,该第二指令为处理系统发生异常时处理系统正在执行的指令。
该处理系统在对第一指令进行语义分析的过程中,该处理系统中维护有一个虚拟执行器的状态。处理系统将CPU所包含的寄存器的初始状态作为该虚拟执行器的初始状态。该CPU所包含的寄存器的初始状态是指该处理系统发生异常时CPU所包含的寄存器的状态。由于第二指令Load R5,Addr2中,Addr2所对应的虚拟页面无效,即此时Addr2的数据未存储于第一存储设备中。可选的,该处理系统可以预测Addr2的数据为数据A,然后将数据A存储至R5寄存器所对应的虚拟寄存器中,那么该虚拟执行器的状态改变。
如图2B所示,第一指令为Add R3,R2,第一指令的机器码为0x110302,操作码为“11”,操作数为“03”和“02”。该处理系统通过分析该第一指令的操作码确定第一指令的操作类型为加法运算,即“11”代表加法运算,“03”代表虚拟执行器中的虚拟寄存器3,“02”代表虚拟执行器中的虚拟寄存器2。然后,该处理系统将虚拟寄存器3的数据加上虚拟寄存器2的数据相加,得到的计算结果放入虚拟寄存器3中,或者是放入虚拟执行器定义的另一个虚拟寄存器X中,具体此处不做限定。
步骤201c:预测该第一指令的未知操作数,再按照该第一指令的操作类型对第一指令的所有操作数进行操作。
其中,处理系统预测该第一指令的未知操作数可以通过以下两种方式进行预测:
方式1:基于历史的方法,处理系统根据第一指令的历史状态或与第一指令类似的其他指令的历史状态预测该第一指令的未知操作数。
方式2:基于关联的已知数据的方法,处理系统根据与该未知操作数相关的其他操作数的值预测该第一指令的未知操作数。
例如,如图2B所示,第一指令为Add R3,R2,第一指令的机器码为0x110302,操作码为“11”,操作数为“03”和“02”。该处理系统通过分析该第一指令的操作码确定第一指令的操作类型为加法运算,即“11”代表加法运算。由于虚拟寄存器2中的数据未知,因此处理系统预测该虚拟寄存器2的数据,再将该预测的虚拟寄存器2的数据加上虚拟寄存器3的数据,并将计算结果放入虚拟寄存器3。
需要说明的是,步骤201c以处理系统预测第一指令的未知操作数的实现方式为例进行说明。在实际应用中,处理系统也可以对第一指令的未知操作数进行标识,然后再将按照第一指令的操作类型对第一指令进行操作。
例如,第一指令为Add R3,R2,第一指令的机器码为0x110302。该处理系统通过分析该第一指令的操作码确定第一指令的操作类型为加法运算,即“11”代表加法运算。由于虚拟寄存器2中的数据未知,处理系统将该虚拟寄存器2的数据标识为Y,并将Y传递给虚拟寄存器3。
202、处理系统识别该待执行指令中的具有读写语义的指令。
本实施例中,具有读写语义的指令包括以下任一种或任多种:
1、简单指令集中的Load或者Store类型的指令。
例如,Load R1,Addr1或Store Addr3,R5。
2、复杂指令集中的具有加减、乘除等运算类型的指令。
例如,Add R4,R3,R2,该指令Add R4,R3,R2的机器码为0x11040302,操作码“11”代表加法运算,操作数为“03”和“02”。“03”指寄存器3中的数据作为地址偏移加上基地址寄存器中的数据,得到数据1,再将该数据1作为逻辑地址从该逻辑地址取出数据B。“02”指寄存器2中的数据作为地址偏移加上基地址寄存器中的数据,得到数据2,再将该数据2作为逻辑地址再从该逻辑地址中取出数据C。“04”代表寄存器4。
203、处理系统根据该具有读写语义的指令确定该待预取数据的逻辑地址。
其中,该待预取数据为该处理系统执行该具有读写语义的指令时将访问的且未存储于第一存储设备的数据,且该待预取数据存储于第二存储设备中。
例如,处理系统通过分析指令Load R5,Addr2,并确定逻辑地址Addr2的数据不在第一存储设备中,那么该处理系统确定该逻辑地址Addr2为待预取数据的逻辑地址。再举例说明,处理系统通过分析指令Store Addr3,R5确定该逻辑地址Addr3所对应的数据不在第一存储设备中,那么该处理系统确定该逻辑地址Addr3为待预取数据的逻辑地址。
需要说明的是,针对Store类型的指令,例如,Store Addr3,R5。由于Addr3并没有分配对应第一存储设备的物理内存,所以处理系统将Addr3作为待预取数据的逻辑地址。这样,处理系统通过该待预取数据的逻辑地址为该Addr3分配第一存储设备的物理内存,并将该Addr3对应的第二存储设备的物理内存中的数据存储至该Addr3所对应的第一存储设备的物理内存中。当该处理系统执行Store Addr3,R5时,可以将R5寄存器的数据存储至Addr3所对应的第一存储设备的物理内存中,即R5寄存器的数据覆盖Addr3所对应的第一存储设备的物理内存中的数据。
本申请实施例中,处理系统通过对处理系统的待执行指令进行语义分析,识别具有读写语义的指令,再结合该具有读写语义的指令确定待预取数据的逻辑地址。这样,处理系统可以通过该待预取数据的逻辑地址将该待预取数据提前从第二存储设备载入第一存储设备中,该第一存储设备的访问速度大于第二存储设备的访问速度,从而准确预测处理系统的未来访问数据,以提高预取数据的准确率,提高预取效果。由于本申请实施例的方法是通过对处理系统的待执行指令的语义分析确定待预取数据,所以针对随机访问类型的访问方式同样可以通过分析待执行指令准确预测未来访问数据,从而提高预取数据的准确率和预取效果。
本申请实施例中,可选的,上述图2A所示的实施例还包括步骤201d且步骤201d在步骤201之前执行。
步骤201d:确定该处理系统的待执行指令。
请参阅图2B,该处理系统中的应用程序执行Load R5,Addr2时,从页表中查看该Addr2所对应的虚拟页面的页表项无效,则该处理系统发生页面错误异常。那么,该处理系统以指令Load R5,Addr2为起点(这里称为页面错误异常导致的指令断点)获取该应用程序的待执行指令。例如,该待执行执行包括Add R3,R2、Load R3,Addr3和Jump Addr4。
本申请实施例中,在上述步骤201d中,确定该处理系统的待执行指令具有具体的应用场景,下面通过举例进行介绍。可选的,在上述步骤201d之前,该方法还包括步骤201e。
步骤201e:确定当满足预设条件时,第一逻辑地址所对应的第一虚拟页面有效。
其中,第一逻辑地址为该处理系统当前执行的第二指令的逻辑地址,该第一虚拟页面为第一逻辑地址所对应的虚拟页面。
本实施例中,该预设条件包括以下任一种或任多种:
a、该处理系统发生中断异常;
可选的,该处理系统发生中断异常包括该处理系统发生IO中断异常,或者,该处理系统发生计时器中断异常。
b、该处理系统发生页面错误异常;
具体的,如图2B所示的,当该处理系统中的应用程序访问的虚拟页面无效时,CPU会触发页面错误异常。例如,第二指令为Load R5,Addr2,该应用程序在执行该第二指令时,通过查询该Addr2所对应的虚拟页面的页表项,由该页表项确定该Addr2所对应的虚拟页面无效(即该Addr2未映射对应的第一存储设备的物理内存)。
c、该处理系统的应用程序执行发生错误。
本实施例中,当满足上述预设条件时,处理系统通过CPU上报的错误报告确定该处理系统当前执行的第二指令的第一逻辑地址。结合图2B和图2C所示,第二指令为Load R5,Addr2,第二指令的第一逻辑地址为0x12345678,处理系统从页表中查找该第一逻辑地址所对应的第一虚拟页面的逻辑页面号(0x12345)的页表项,并确定该页表项的状态位有效,则可知第一虚拟页面有效。其中,状态位为“1”时,代表第一虚拟页面有效;状态位为“0”时,代表第一虚拟页面无效。
请参阅图2D,第一虚拟页面所对应的第一逻辑地址段为0x12345000至0x12345FFF之间的逻辑地址段,第一逻辑地址段所对应的第一存储设备的物理地址段为0x54321000至0x54321FFF之间的物理地址段。当处理系统确定第一虚拟页面有效时,处理系统可以以第一逻辑地址为起点,从该第一逻辑地址段所对应的第一存储设备中的物理内存中获取待执行指令。当处理系统确定第一虚拟页面无效时,处理系统无法获取待执行指令,则处理系统终止执行。
本实施例中,可选的,上述步骤201d有具体的执行过程,下面通过图3A所示的实施例进行介绍。上述步骤201d包括步骤3001至步骤3004。请参阅图3A,图3A为本申请实施例数据预取方法的另一个实施例示意图,该方法包括:
3001、判断第一长度是否大于第一预设长度,若是,则执行步骤3002;若否,则执行步骤3003。
其中,第一长度为第一逻辑地址至该第一逻辑地址段中的最后一个逻辑地址之间的第二逻辑地址段的长度。
例如,由上述图3B可知,第一逻辑地址为0x12345678,第一逻辑地址段为0x12345000至0x12345FFF之间的逻辑地址段,即该第一逻辑地址段中的最后一个逻辑地址为0x12345FFF,则可知第一逻辑地址段的长度为4096。第二逻辑地址段为0x12345678至0x12345FFF之间的逻辑地址段,即第一长度为2440。
如图3B所示,若第一预设长度为2000,即第一预设长度为第三逻辑地址段(0x12345678至0x12345E47之间的逻辑地址段)的长度,则第一长度大于第一预设长度,执行步骤3002。
而若第一预设长度为3000,而第二逻辑地址段(0x12345678至0x12345FFF之间的逻辑地址段)的长度为2440,则第一长度小于第一预设长度,则执行步骤3003。
3002、将第一物理内存中的指令作为待执行指令。
其中,第一物理内存包括第三逻辑地址段所对应的第一存储设备的物理内存,第三逻辑地址段为以第一逻辑地址为起点的第一逻辑地址段中包括的第一预设长度的逻辑地址段。
例如,如图3B所示,第一逻辑地址0x12345678,第一逻辑地址所对应的第一存储设备的物理地址为0x54321678。第一预设长度为2000,则可知第三逻辑地址为0x12345678至0x12345E47之间的逻辑地址段,而第三逻辑地址段所对应的第一存储设备中的物理地址段为0x54321678至0x54321E47之间的物理地址段,那么第一物理内存为第一存储设备中的0x54321678至0x54321E47之间的物理地址段的物理内存。处理系统从该第一存储设备中的0x54321678至0x54321E47之间的物理地址段的物理内存中获取指令,将获取的指令作为待执行指令。
3003、判断第二虚拟页面是否有效;若是,则执行步骤3004;若否,则执行步骤3005。
其中,第二虚拟页面为与第一虚拟页面相邻的下一个虚拟页面,第二虚拟页面对应第四逻辑地址段。
例如,如图3C所示,第一虚拟页面的逻辑页面号为0x12345,则可知第二虚拟页面的逻辑页面号为0x12346。该处理系统从页表中查找该逻辑页面号所对应的页表项,并确定该页表项的状态位有效,那么可知该第二虚拟页面有效,则执行步骤3004;如果该页表项无效,则第二虚拟页面无效,则执行步骤3005。其中,状态位为“1”时,代表第二虚拟页面有效;状态位为“0”时,代表第二虚拟页面无效。
如图3D所示,第二虚拟页面对应的第四逻辑地址段为0x12346000至0x12346FFF之间的逻辑地址段,第四逻辑地址段中的首个逻辑地址为0x12346000。
3004、将第二物理内存中的指令和第三物理内存中的指令作为待执行指令。
其中,第二物理内存为第二逻辑地址段所对应的第一存储设备的物理内存。第三物理内存为第五逻辑地址段所对应的第一存储设备的物理内存。第五逻辑地址段为以第四逻辑地址段中的首个逻辑地址为起点的第四逻辑地址段中包括的第二预设长度的逻辑地址段。该第二预设长度加上第一长度等于第一预设长度。
例如,如图3D所示,第二逻辑地址段为0x12345678至0x12345FFF之间的逻辑地址段,即可知第一长度为2440。0x12345678至0x12345FFF之间的逻辑地址段对应0x54321678至0x54321FFF之间的物理地址段,即第二物理内存为0x54321678至0x54321FFF之间的物理地址段所对应的物理内存。而第一预设长度为3000,那么可知第二预设长度为560。第五逻辑地址段为0x12346000至0x12346022F之间的逻辑地址段,而0x12346000至0x1234622F之间的逻辑地址段对应0x54322000至0x5432222F之间的物理地址段,即第三物理内存为0x54322000至0x5432222F之间的物理地址段所对应的物理内存。然后,处理系统将该第二物理内存中的指令和第三物理内存中的指令作为该待执行指令。
3005、将第二物理内存中的指令作为待执行指令。
本申请实施例中,可选的,处理系统确定待执行指令的过程中,针对分支跳转指令,处理系统可以根据分支跳转指令的跳转分支方向确定待执行指令。下面通过图3E所示的实施例进行介绍。其中,图3E所示的实施例是以第一物理内存中包括第一分支跳转指令为例进行说明。而针对上述第二物理内存或第三物理内存中包括分支跳转指令的情况,同样适用于图3E所示的实施例,这里不一一举例介绍。请参阅图3E,图3E为本申请实施例数据预取方法的另一个实施例示意图,该方法包括步骤3006至步骤3009。
3006、确定第一分支跳转指令的第二逻辑地址和第一分支跳转指令的跳转分支方向的第三逻辑地址。
其中,第一分支跳转指令为第一物理内存中的首条分支跳转指令。该第一分支跳转指令的跳转分支方向为第一分支跳转指令跳转到除第二逻辑地址的下一个逻辑地址之外的其他逻辑地址所指向的指令。该第三逻辑地址为除第二逻辑地址的下一个逻辑地址之外的其他逻辑地址。
例如,如图3F所示,第一分支跳转指令的第二逻辑地址为0x1234567B,该第一分支跳转指令为Jump R1,R2。Jump R1,R2指如果R2寄存器的值为0,则往下继续执行该第一分支跳转指令的下一条指令;如果R2寄存器的值不为0,则跳转到R1寄存器中保存的地址指向的指令,那么跳转到R1寄存器中保存的地址为该第三逻辑地址。例如,如图3G所示,第三逻辑地址为0x12348042。
3007、判断第三逻辑地址所对应的第三虚拟页面是否有效,若是,则执行步骤3008;若否,则执行步骤3009。
例如,如图3G所示,第三逻辑地址对应第三虚拟页面的逻辑页面号为0x12348,处理系统从页表中查找该逻辑地址页面号(0x12348)所对应的页表项,并根据该页表项的状态位确定该第三虚拟页面有效,那么处理系统执行步骤3008;如果该页表项的状态位无效,则第三虚拟页面无效,则处理系统执行步骤3009。其中,状态位为“1”时,代表第三虚拟页面有效;状态位为“0”时,代表第三虚拟页面无效。
需要说明的是,第三虚拟页面与第一虚拟页面为同一虚拟页面或者不同的两个虚拟页面,具体视第三逻辑地址是否为第一逻辑地址段中的逻辑地址。当第三逻辑地址为第一虚拟页面所对应的第一逻辑地址段中的逻辑地址时,那么第三虚拟页面与第一虚拟页面为同一虚拟页面;当第三逻辑地址不属于第一逻辑地址段中的逻辑地址时,那么第三虚拟页面与第一虚拟页面为不同的两个虚拟页面。在本实施例的示例中,仅以第三虚拟页面与第一虚拟页面为不同的两个虚拟页面为例进行说明。
3008、将第四物理内存中的指令和第五物理内存中的指令作为该待执行指令。
其中,第四物理内存为第七逻辑地址段所对应的第一存储设备的物理地址段的物理内存,第五物理内存为第八逻辑地址段所对应的第一存储设备的物理地址段的物理内存。第七逻辑地址段为第一逻辑地址至第二逻辑地址之间的逻辑地址段,第八逻辑地址段为以第三逻辑地址为起点的该第六逻辑地址段中包括的第三预设长度的逻辑地址。
可选的,第三预设长度加上第七逻辑地址段的长度等于第一预设长度。
例如,如图3H所示,第一逻辑地址为0x12345678,第一分支跳转指令的第二逻辑地址为0x1234567B。第七逻辑地址段为0x12345678至0x1234567B之间的逻辑地址段,即第七逻辑地址段的长度为4。那么第七逻辑地址段所对应的第一存储设备的物理地址段为0x54321678至0x5432167B之间的物理地址段,即第四物理内存为该0x54321678至0x5432167B之间的物理地址段的物理内存。
第三虚拟页面对应的第六逻辑地址段为0x12348000至0x12348FFF之间的逻辑地址段。第一分支跳转指令的跳转分支方向的第三逻辑地址为0x12348042,第一预设长度为2000,则可知第三预设长度为1996。所以,第八逻辑地址段为0x12348042至0x1234880D之间的逻辑地址段,该第八逻辑地址段所对应的第一存储设备的物理地址段为0x54324042至0x5432480D之间的物理地址段,那么第五物理内存为0x54324042至0x5432480D之间的物理地址段的物理内存。然后,处理系统将第四物理内存中保存的指令和第五物理内存中保存的指令作为该待执行指令。
3009、将第四物理内存中的指令作为该待执行指令。
其中,第四物理内存为第七逻辑地址段所对应的第一存储设备的物理地址段的物理内存,第七逻辑地址段为第一逻辑地址至第二逻辑地址之间的逻辑地址段。
例如,如图3H所示,第一逻辑地址为0x12345678,第二逻辑地址为0x1234567B,那么第七逻辑地址段为0x12345678至0x1234567B之间的逻辑地址段。而第七逻辑地址所对应的第一存储设备的物理地址段为0x54321678至0x5432167B之间的物理地址段,那么第四物理内存为该0x54321678至0x5432167B之间的物理地址段的物理内存。处理系统将该0x54321678至0x5432167B之间的物理地址段的物理内存中的指令作为该待执行指令。
本申请实施例中,图3A和图3E所示的实施例以处理系统将第一存储设备中对应的预设长度的物理内存中的指令作为该待执行指令为例进行说明,而实际应用中,处理还可以通过其他方式确定该待执行指令,具体本申请不做限定。
例如,处理系统设定读取指令的预设数量为1000,处理系统从以第一逻辑地址为起点的第一逻辑地址段所对应的第一存储设备的物理内存按照指令顺序逐条读取指令,并将按照指令顺序读取的前1000条指令作为该待执行指令。或者是,处理系统设定读取指令的预设数量为1000,且设定读取指令的预设长度的物理内存为前述步骤3002中的第一物理内存。处理系统按照指令顺序从第一物理内存中读取指令,将从该第一物理内存中读取的前1000条指令作为该待执行指令。需要说明的是,如果从该第一物理内存中读取的指令数量超过1000,则取读取的前1000条指令作为该待执行指令;如果从第一物理内存中读取的指令数量不超过1000,则将从该第一物理内存中读取到的指令作为该待执行指令。
本申请实施例中,可选的,在上述图2A所示的实施例中的处理系统对待执行指令进行语义分析之前,处理系统可以先对待执行指令进行格式转换。处理系统对待执行指令进行格式转换包括以下两种可能的实现方式:
方式1、处理系统对待执行指令进行分解,得到第一微码。
具体的,处理系统将待执行指令转换为第一微码,再按照微码的语义定义格式对第一微码进行语义分析。
方式2、处理系统对待执行指令进行分解,得到第一微码,再将第一微码转换为第一中间代码。
具体的,处理系统先将待执行指令转换为第一微码,再将第一微码转换为第一中间代码;然后,处理系统按照中间代码的语义定义格式对第一中间代码进行语义分析。
下面以方式2为例进行介绍。本申请实施例中,可选的,上述图2A所示的实施例还包括步骤201f至步骤201g,且步骤201f至步骤201g在步骤201之前执行。
步骤201f、对该待执行指令分别进行分解,得到第一微码。
其中,该处理系统为高级经典指令集机器指令集(advanced RISC machineinstruction set architecture,ARM ISA)或者x86 ISA,即该待执行指令为ARM指令或者x86指令。如图1C所示,如果该待执行指令为ARM指令,则由支持ARM的分解器对该待执行指令进行分解;如果该待执行指令为x86指令,则由支持x86的分解器对该待执行指令进行分解。然后,处理系统将分解得到的第一微码保存在分解器中的cache中。
例如,该待执行指令包括第三指令Add R3,R2。该处理系统根据微码的格式生成第三指令对应的微码。具体的,处理系统通过微码映射关系表确定该第三指令对应的微码,该微码映射关系表包括操作码和操作码所对应的映射关系。例如,如表1所示:
表1
操作码 微码映射关系
0x02 映射关系1
而微码映射关系1具体表示为:
operation_add(vCPUState vCPU){
vCPU.Operand2=vCPU.Operand1+vCPU.Operand2;
}。
该微码映射关系1可以理解为第三指令Add R3,R2的微码表示。
本实施例中,微码的格式为自定义的。例如,该处理系统所使用的微码格式为快速仿真器(quick emulator,QEMU)的微操作(micro operation)。具体如上述微码映射关系1的格式,即为QEMU的micro operation的格式。
步骤201g、将第一微码转换为第一中间代码。
具体的,该处理系统按照中间代码的格式将第一微码转换为第一中间代码。例如,该处理系统通过中间代码词典确定该第一微码所对应的第一中间代码,该中间代码词典包括微码与中间代码之间的对应关系。例如,处理系统通过该中间代码词典确定微码映射关系1对应中间代码映射关系a,而该中间代码映射关系a具体表示为:
operation_add_a(vCPUState vCPU){
move%1,vCPU.Operand1;
move%2,vCPU.Operand2;
call operation_add_implementation(%1,%2);
}
上述中间代码映射关系a可以理解为第三指令Add R3,R2的中间代码表示。
需要说明的是,中间代码词典的选择与微码格式和中间代码格式相关,不同的微码格式和中间代码格式对应不同的中间代码词典。例如,中间代码的格式可以选用低级虚拟机器中间表示(low level virtual machine intermediate representation,LLVM IR)语言,LLVM IR为业界标准的中间代码,这样有助于处理系统对中间代码的语义分析。
那么,基于步骤201f至步骤201g,相应的,上述图2A所示的实施例中的步骤201包括:
根据中间代码的语义定义格式对所述第一中间代码进行语义分析。
例如,处理系统分析上述步骤201b中的中间代码映射关系a转换为operation_add_a(vCPUState vCPU){
call operation_add_analyze(vCPU.Operand1,vCPU.Operand2);
move%1,vCPU.Operand1;
move%2,vCPU.Operand2;
call operation_add_implementation(%1,%2);
}
然后,处理系统通过调用call operation_add_analyze(vCPU.Operand1,vCPU.Operand2;)分析该operation_add_a(vCPUState vCPU)为加法操作。
相应的,上述图2A所示的实施例中的步骤202包括:
识别待执行指令中的具有读写语义的第二中间代码。
例如,指令Load R1,R2所对应的第二中间代码为:
operation_load_a(vCPUState vCPU){
move%1,vCPU.Operand1;
move%2,vCPU.Operand2;
call operation_load_implementation(%1,%2);
}。
处理系统将上述第二中间代码转换为operation_load_a(vCPUState vCPU){
call operation_load_analyze(vCPU.operand1,vCPU.Operand2);
move%1,vCPU.Operand1;
move%2,vCPU.Operand2;
call operation_load_implementation(%1,%2);
}
然后,处理系统通过调用call operation_load_analyze(vCPU.Operand1,vCPU.Operand2;)分析确定第二中间代码为具有读写语义的中间代码。
相应的,上述图2A所示的实施例中的步骤203包括:
根据该具有读写语义的第二中间代码确定待预取数据的逻辑地址。
例如,处理系统分析上述步骤202中指令Load R1,R2所对应的第二中间代码。处理系统以R2寄存器中的数据作为逻辑地址寻找页表项;然后,处理系统确定该页表项无效,则处理系统将该R2寄存器中的数据作为逻辑地址加入该待预取数据的逻辑地址。
本申请实施例中,可选的,在上述图2A所示的实施例中的根据该具有读写语义的指令确定该待预取数据的逻辑地址。上述图2A所示的实施例还包括步骤204至步骤205,且步骤204至步骤205在步骤203之后执行。
步骤204、根据待预取数据的逻辑地址从第二存储设备中获取该待预取数据。
具体的,处理系统确定该待预取数据的逻辑地址所对应的第二存储设备的第二物理地址;然后,处理系统通过该第二物理地址从第二存储设备中获取该待预取数据。
可选的,处理系统通过该待预取数据的逻辑地址所对应的虚拟页面的页表项确定该待预取数据在第二存储设备的第二物理地址中。
步骤205、将该待预取数据存储到第一存储设备中。
具体的,处理系统为该待预取数据分配第一存储设备的第一物理地址,并将该待预取数据存储至该第一存储设备中。
本申请实施例的数据预取方式由虚拟机管理器来执行,或者由OS内核来执行,或者是由虚拟机管理器和OS内核共同执行,具体本申请不做限定。下面以本申请实施例的数据预取方法由虚拟机管理器来执行为例进行说明。而由OS内核来执行的方式下,即将图4A所示的实施例中虚拟机管理器的执行步骤替换为由OS内核来执行,具体不再一一举例说明。而对于虚拟机管理器和OS内核共同执行的方式下,则图4A所示的实施例中的虚拟机管理器的执行步骤可以替换为由虚拟机管理器或OS内核来执行,具体步骤由谁来执行可以根据处理系统的配置来决定,具体本申请不做限定。
本申请实施例中,该处理系统从第一存储设备和第二存储设备中访问数据的方式有多种,在图4A所示的实施例中,仅以处理系统通过同步访问方式从第一存储设备中访问数据,通过异步访问方式从第二存储设备中访问数据为例进行说明。
请参阅图4A,图4A为本申请实施例数据预取方法的另一个实施例示意图。在图4A中,该方法包括:
401、虚拟机管理器确定处理系统的待执行指令。
可选的,虚拟机管理器执行步骤401之前,虚拟机管理器执行前述步骤201e。其中,预设条件包括多种,具体请参阅前述步骤201e的相关介绍。在这里以该预设条件为处理系统发生页面错误异常为例并结合虚拟机管理器的结构介绍步骤401。
如图1A所示的处理系统中,应用程序访问的第一虚拟页面所对应的页表项无效时,处理系统发生页面错误异常。
可选的,页面错误异常的产生原因包括以下任一种:
原因1:取指令操作失败;
应用程序在执行过程中,处理系统中的CPU确定第一逻辑地址所对应的第一虚拟页面无效,即第一存储设备未存储有第一逻辑地址所对应的第二指令。那么,处理系统中的CPU无法从第一存储设备获取该第二指令,导致处理系统发生页面错误异常。
原因2:第二指令的操作数未知。
应用程序在执行过程中,处理系统中的CPU通过第一逻辑地址从第一存储设备获取到第二指令;然后,处理系统中的CPU执行第二指令。而由于第二指令的部分或全部操作数未知,导致处理系统发生页面错误异常。
下面结合图4B介绍由于原因2导致的页面错误异常。处理系统为DRAM与SCM的混合内存系统,在该混合内存系统中,DRAM作为SCM的cache。即DRAM可以理解为第一存储设备,SCM可以理解为第二存储设备。若当前访问的第一虚拟页面无效时,页面错误异常处理模块确定该Addr2所对应的SCM的物理地址,并启动IO流程,以便于将Addr2所对应的SCM的物理地址的数据载入DRAM中。然后,页面错误异常处理模块触发指令分析模块确定该待执行指令并对该待执行指令进行分析。
那么,在该IO流程返回之前或者之后,虚拟机管理器的指令分析模块执行步骤401。由于SCM的访问时延是微秒级的,因此该处理系统采用物理CPU与vCPU绑定设定。而处理系统发生页面错误异常时,CPU不切换CPU的上下文(context),而是在该IO流程返回之前(当前CPU处于空闲状态),虚拟机管理器利用CPU的空闲时间对待执行指令进行分析,从而提高CPU的利用率。
而对于上述由于原因1导致的页面错误异常,由于虚拟机管理器无法获取到第二指令,那么虚拟机管理器无法获取待执行指令,虚拟机管理器终止执行并退出;
402、虚拟机管理器将该待执行指令分解为第一微码。
请参阅图1B和图4C,虚拟机管理器中的分解器从应用程序的指令断点开始,对待执行指令Add R3,R2、Load R3,Addr3和Jump Addr4进行分解,分别得到对应的第一微码,再将第一微码存入分解器中的微码cache中。具体的分解过程请参阅前述步骤201f中的相关介绍,这里不再赘述。
403、虚拟机管理器将第一微码转换为第一中间代码。
请参阅图4C,图4C中虚拟机管理器中的中间代码生成器通过查询中间代码词典将第一微码转换为第一中间代码,然后再将第一中间代码存入中间代码生成器中的中间代码cache。例如,Add R3,R2转换为中间代码:
operation_add_a(vCPUState vCPU){
move%1,vCPU.Operand1;
move%2,vCPU.Operand2;
call operation_add_implementation(%1,%2);
}
具体的转换过程请参阅前述步骤201g中的相关介绍,这里不再赘述。
404、虚拟机管理器根据中间代码的语义定义格式对第一中间代码进行语义分析。
例如,如图4D所示,虚拟机管理器中的CA子模块对第一中间代码进行语义分析。
405、虚拟机管理器识别第一中间代码中的具有读写语义的第二中间代码。
406、虚拟机管理器根据该第二中间代码确定该待预取数据的逻辑地址。
本实施例中,步骤404至步骤406的更多相关介绍请参阅前述图2A所示的实施例中的步骤201至步骤203的相关说明,这里不再赘述。
407、虚拟机管理器将该待预取数据的逻辑地址和该待预取数据在第二存储设备的第二物理地址加入预取队列中。
例如,如图4D所示,虚拟机管理器中维护的虚拟执行器识别Load R3,Addr3所对应的中间代码,确定逻辑地址Addr3所对应的虚拟页面的页表项无效。虚拟执行器确定Addr3的数据在第二存储设备的物理地址1中,并将Addr3和该物理地址1加入该预取队列中。
需要说明的是,步骤407中示出了该虚拟机管理器将待预取数据的逻辑地址和第二物理地址加入预取队列中的方案。在实际应用中,虚拟机管理器还可以仅仅将待预取数据的逻辑地址加入预取队列中,并维护待预取数据的逻辑地址与第二物理地址的映射表。这样后续虚拟机管理器在预取待预取数据时,根据该映射表和预取队列生成IO请求。或者是,虚拟机管理器可以将待预取数据的逻辑地址、第二物理地址以及为待预取数据分配第一存储设备的第一物理地址都加入预取队列中。这样,后续虚拟机管理器在预取该待预取数据时,根据该预取队列生成IO请求,具体本申请不做限定。
408、虚拟机管理器根据该预取队列生成IO请求。
具体的,虚拟机管理器为该待预取数据分配第一存储设备的第一物理地址;然后,虚拟机管理器生成IO请求。该IO请求携带该待预取数据的逻辑地址、为该待预取数据分配的第一存储设备的第一物理地址和第二物理地址。
409、虚拟机管理器向第二内存控制器发送该IO请求。
410、第二内存控制器通过IO请求携带的待预取数据的第二存储设备的第二物理地址从第二存储设备中获取该待预取数据。
411、第二内存控制器向第一内存控制器发送该待预取数据和第一存储设备的第一物理地址。
可选的,第二内存控制器通过通信总线向第一内存控制器发送该待预取数据和第一物理地址。
412、第一内存控制器将该待预取数据存储至第一存储设备的第一物理地址中。
具体的,第一内存控制器接收该待预取数据,并将该待预取数据保存至第一物理地址中。
413、第一内存控制器向第二内存控制器发送完成通知消息。
其中,该完成通知消息用于通知第二内存控制器对该待预取数据存储完成。
414、第二内存控制器向虚拟机管理器发送IO响应。
其中,该IO响应用于通知该虚拟机管理器完成对待预取数据的预取操作。
415、虚拟机管理器更新该待预取数据的逻辑地址与第一存储设备的第一物理地址之间的映射关系。
具体的,虚拟机管理器中的页面错误异常处理模块更新该待预取数据的逻辑地址所对应的虚拟页面的页表项(在该待预取数据的逻辑地址所对应的虚拟页面的页表项中填写该待预取数据的逻辑地址所对应的第一存储设备的第一物理地址)。
需要说明的是,页面错误异常处理模块检测第一虚拟页面所对应的IO流程是否已返回,如果已返回,则页面错误异常处理模块更新该第一虚拟页面所对应的页表项(在该第一虚拟页面所对应的页表项中填写该第一虚拟页面所对应的第一逻辑地址段所对应的第一存储设备的物理地址段),并刷新处理系统中的CPU的传输查找缓冲区(translationlook-aside buffer,TLB),在应用程序的指令断点处恢复vCPU的执行;如果未返回,则继续等待。
上面对本申请实施例中的数据预取方法进行了描述,下面对本申请实施例中的处理系统进行描述:
请参阅图5,本申请实施例处理系统的一个结构示意图。该处理系统包括分析单元501、识别单元502和第一确定单元503。可选的,该处理系统还包括第二确定单元504、第一判断单元505、第三确定单元506、分解单元507、转换单元508、获取单元509和存储单元510。
分析单元501,用于对该处理系统的待执行指令进行语义分析;
识别单元502,用于识别该待执行指令中的具有读写语义的指令;
第一确定单元503,用于根据该具有读写语义的指令确定待预取数据的逻辑地址,该待预取数据为该处理系统执行该具有读写语义的指令时将访问的且未存储于该第一存储设备的数据,该待预取数据存储于该第二存储设备中,该第一存储设备的访问速度大于该第二存储设备的访问速度。
一种可能的实现方式中,该待执行指令包括第一指令;该识别单元502具体用于:
判断该第一指令的所有操作数是否已知;
若是,则分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作;
若否,则预测该第一指令的未知操作数,再分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作。
另一种可能的实现方式中,该处理系统还包括第二确定单元504;
该第二确定单元504,用于确定当满足预设条件时第一逻辑地址所对应的第一虚拟页面有效,该预设条件包括该处理系统发生中断异常,或者,该处理系统发生页面错误异常,或者,该处理系统的应用程序执行发生错误,第一逻辑地址为该处理系统当前执行的第二指令的逻辑地址,该第一虚拟页面为该第一逻辑地址所对应的虚拟页面,该第一逻辑地址为该第二指令的逻辑地址。
另一种可能的实现方式中,该第一虚拟页面对应第一逻辑地址段;该处理系统还包括第一判断单元505和第三确定单元506;
第一判断单元505,用于判断第一长度是否大于第一预设长度,该第一长度为该第一逻辑地址至该第一逻辑地址段中的最后一个逻辑地址之间的第二逻辑地址段的长度;
第三确定单元506,用于若该第一长度大于该第一预设长度,则将第一物理内存中的指令作为所述待执行指令,该第一物理内存包括第三逻辑地址段所对应的该第一存储设备的物理内存,该第三逻辑地址段为以该第一逻辑地址为起点的该第一逻辑地址段中包括的该第一预设长度的逻辑地址段。
另一种可能的实现方式中,该第二确定单元504还用于:
确定第二虚拟页面所对应的页表项有效,该第二虚拟页面为与该第一虚拟页面相邻的下一个虚拟页面,该第二虚拟页面对应第四逻辑地址段;
该第三确定单元506还用于:
将第二物理内存中的指令和第三物理内存中的指令作为所述待执行指令,该第二物理内存为该第二逻辑地址段所对应的该第一存储设备的物理内存,该第三物理内存为第五逻辑地址段所对应的该第一存储设备的物理内存,该第五逻辑地址段为以该第四逻辑地址段中的首个逻辑地址为起点的该第四逻辑地址段中包括的第二预设长度的逻辑地址段,该第二预设长度加上该第一长度等于该第一预设长度。
另一种可能的实现方式中,若该第一物理内存中的指令包括分支跳转指令;该第二确定单元504还用于:
确定第一分支跳转指令的第二逻辑地址和该第一分支跳转指令的跳转分支方向的第三逻辑地址,该第一分支跳转指令为该第一物理内存中的首条分支跳转指令;
该第一判断单元505还用于:
判断该第三逻辑地址所对应的第三虚拟页面是否有效,该第三虚拟页面对应第六逻辑地址段;
该第三确定单元506还用于:
若第三虚拟页面有效,则将第四物理内存中的指令和第五物理内存中的指令作为该待执行指令,该第四物理内存为第七逻辑地址段所对应的第一存储设备的物理内存,该第五物理内存为第八逻辑地址段所对应的第一存储设备的物理内存,该第七逻辑地址段为该第一逻辑地址至该第二逻辑地址之间的逻辑地址段,该第八逻辑地址段为以该第三逻辑地址为起点的该第六逻辑地址段中包括的第三预设长度的逻辑地址段,该第三预设长度加上该第七逻辑地址段的长度等于该第一预设长度;
若第三虚拟页面无效,则将该第四物理内存中的指令作为该待执行指令。
另一种可能的实现方式中,该处理系统还包括分解单元507和转换单元508;
该分解单元507,用于对该待执行指令分别进行分解,得到第一微码;
该转换单元508,用于将该第一微码转换为第一中间代码;
该分析单元501具体用于:
根据中间代码的语义定义格式对该第一中间代码进行语义分析。
另一种可能的实现方式中,该处理系统还包括获取单元509和存储单元510;
该获取单元509,用于根据该待预取数据的逻辑地址从第二存储设备中获取该待预取数据;
该存储单元510,用于将该待预取数据存储到所述第一存储设备中,该待预取数据用于当该处理系统执行该待执行指令时,通过该待预取数据的逻辑地址从该第一存储设备中访问该待预取数据。
本申请实施例中,分析单元501对处理系统的待执行指令进行语义分析;识别单元502识别待执行指令中的具有读写语义的指令;然后,第一确定单元503根据该具有读写语义的指令确定待预取数据的逻辑地址,该待预取数据为该处理系统执行该具有读写语义的指令时将访问的且未存储于第一存储设备的数据其中,该处理系统包括第一存储设备和第二存储设备,该待预取数据存储于第二存储设备中,该第一存储设备的访问速度大于第二存储设备的访问速度。由此可知,分析单元501对处理系统的待执行指令进行语义分析,识别单元502识别具有读写语义的指令,第一确定单元503结合该具有读写语义的指令确定待预取数据的逻辑地址,这样可以通过该待预取数据的逻辑地址将该待预取数据提前从第二存储设备载入第一存储设备中,从而准确预测处理系统的未来访问数据,以提高预取数据的准确率,提高预取效果。
请参阅图6,该处理系统600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对处理系统中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在处理系统600上执行存储介质630中的一系列指令操作。
处理系统600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作系统641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例图2A、图3A、图3E和图4A中由处理系统所执行的具体步骤可以基于该图6所示的处理系统结构。下面具体介绍。
该中央处理器622,用于对该处理系统的待执行指令进行语义分析;识别该待执行指令中的具有读写语义的指令;根据该具有读写语义的指令确定待预取数据的逻辑地址,该待预取数据为该处理系统执行该具有读写语义的指令时将访问的且未存储于该第一存储设备的数据,该待预取数据存储于该第二存储设备中,该第一存储设备的访问速度大于该第二存储设备的访问速度。
一种可能的实现方式中,该待执行指令包括第一指令;该中央处理器622具体用于:
判断该第一指令的所有操作数是否已知;
若是,则分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作;
若否,则预测该第一指令的未知操作数,再分析该第一指令的操作类型,按照该第一指令的操作类型对该第一指令的所有操作数进行操作。
另一种可能的实现方式中,该中央处理器622还用于:
确定当满足预设条件时第一逻辑地址所对应的第一虚拟页面有效,该预设条件包括该处理系统发生中断异常,或者,该处理系统发生页面错误异常,或者,该处理系统的应用程序执行发生错误,第一逻辑地址为该处理系统当前执行的第二指令的逻辑地址,该第一虚拟页面为该第一逻辑地址所对应的虚拟页面,该第一逻辑地址为该第二指令的逻辑地址。
另一种可能的实现方式中,该第一虚拟页面对应第一逻辑地址段;该中央处理器622还用于:
判断第一长度是否大于第一预设长度,该第一长度为该第一逻辑地址至该第一逻辑地址段中的最后一个逻辑地址之间的第二逻辑地址段的长度;
若该第一长度大于该第一预设长度,则将第一物理内存中的指令作为所述待执行指令,该第一物理内存包括第三逻辑地址段所对应的该第一存储设备的物理内存,该第三逻辑地址段为以该第一逻辑地址为起点的该第一逻辑地址段中包括的该第一预设长度的逻辑地址段。
另一种可能的实现方式中,该中央处理器622还用于:
确定第二虚拟页面所对应的页表项有效,该第二虚拟页面为与该第一虚拟页面相邻的下一个虚拟页面,该第二虚拟页面对应第四逻辑地址段;
将第二物理内存中的指令和第三物理内存中的指令作为所述待执行指令,该第二物理内存为该第二逻辑地址段所对应的该第一存储设备的物理内存,该第三物理内存为第五逻辑地址段所对应的该第一存储设备的物理内存,该第五逻辑地址段为以该第四逻辑地址段中的首个逻辑地址为起点的该第四逻辑地址段中包括的第二预设长度的逻辑地址段,该第二预设长度加上该第一长度等于该第一预设长度。
另一种可能的实现方式中,若该第一物理内存中的指令包括分支跳转指令;该中央处理器622还用于:
确定第一分支跳转指令的第二逻辑地址和该第一分支跳转指令的跳转分支方向的第三逻辑地址,该第一分支跳转指令为该第一物理内存中的首条分支跳转指令;
判断该第三逻辑地址所对应的第三虚拟页面是否有效,该第三虚拟页面对应第六逻辑地址段;
若第三虚拟页面有效,则将第四物理内存中的指令和第五物理内存中的指令作为该待执行指令,该第四物理内存为第七逻辑地址段所对应的第一存储设备的物理内存,该第五物理内存为第八逻辑地址段所对应的第一存储设备的物理内存,该第七逻辑地址段为该第一逻辑地址至该第二逻辑地址之间的逻辑地址段,该第八逻辑地址段为以该第三逻辑地址为起点的该第六逻辑地址段中包括的第三预设长度的逻辑地址段,该第三预设长度加上该第七逻辑地址段的长度等于该第一预设长度;
若第三虚拟页面无效,则将该第四物理内存中的指令作为该待执行指令。
另一种可能的实现方式中,该中央处理器622还用于:
对该待执行指令分别进行分解,得到第一微码;
将该第一微码转换为第一中间代码;
该中央处理器622具体用于:
根据中间代码的语义定义格式对该第一中间代码进行语义分析。
另一种可能的实现方式中,该中央处理器622还用于:
根据该待预取数据的逻辑地址从第二存储设备中获取该待预取数据;
将该待预取数据存储到所述第一存储设备中,该待预取数据用于当该处理系统执行该待执行指令时,通过该待预取数据的逻辑地址从该第一存储设备中访问该待预取数据。
本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得该计算机执行如上述图2A、图3A、图3E和图4A中所示的实施例的数据预取方法。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当该指令在计算机上运行时,使得计算机执行如上述图2A、图3A、图3E和图4A中所示的实施例的数据预取方法。
在另一种可能的设计中,当该处理系统为终端内的芯片时,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使该终端内的芯片执行上述图2A、图3A、图3E和图4A中所示的实施例的数据预取方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述终端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制上述图2A、图3A、图3E和图4A所示的实施例中的数据预期方法的程序执行的集成电路。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一图像可以被称为第二图像,并且类似地,第二图像可以被称为第一图像。第一图像和第二图像都可以是图像,并且在某些情况下,可以是单独且不同的图像。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”“,an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (18)

1.一种数据预取方法,其特征在于,所述方法应用于处理系统,所述处理系统包括第一存储设备和第二存储设备,所述方法包括:
对所述处理系统的待执行指令进行语义分析;
识别所述待执行指令中的具有读写语义的指令;
确定所述具有读写语义的指令的未知操作数;
根据所述具有读写语义的指令的未知操作数确定待预取数据的逻辑地址,所述待预取数据为所述处理系统执行所述具有读写语义的指令时将访问的且未存储于所述第一存储设备的数据,所述待预取数据存储于所述第二存储设备中,所述第一存储设备的访问速度大于所述第二存储设备的访问速度。
2.根据权利要求1所述的方法,其特征在于,所述待执行指令包括第一指令;所述对所述待执行指令进行语义分析包括:
判断所述第一指令的所有操作数是否已知;
若是,则分析所述第一指令的操作类型,按照所述第一指令的操作类型对所述第一指令的所有操作数进行操作;
若否,则预测所述第一指令的未知操作数,再分析所述第一指令的操作类型,按照所述第一指令的操作类型对所述第一指令的所有操作数进行操作。
3.根据权利要求1或2所述的方法,其特征在于,所述对所述处理系统的待执行指令进行语义分析之前,所述方法还包括:
确定当满足预设条件时第一逻辑地址所对应的第一虚拟页面有效,所述预设条件包括所述处理系统发生中断异常,或者,所述处理系统发生页面错误异常,或者,所述处理系统的应用程序执行发生错误,所述第一逻辑地址为所述处理系统当前执行的第二指令的逻辑地址。
4.根据权利要求3所述的方法,其特征在于,所述第一虚拟页面对应第一逻辑地址段;所述对所述处理系统的待执行指令进行语义分析之前,所述方法还包括:
判断第一长度是否大于第一预设长度,所述第一长度为所述第一逻辑地址至所述第一逻辑地址段中的最后一个逻辑地址之间的第二逻辑地址段的长度;
若是,则将第一物理内存中的指令作为所述待执行指令,所述第一物理内存包括第三逻辑地址段所对应的所述第一存储设备的物理内存,所述第三逻辑地址段为以所述第一逻辑地址为起点的所述第一逻辑地址段中包括的所述第一预设长度的逻辑地址段。
5.根据权利要求4所述的方法,其特征在于,若第一长度小于等于所述第一预设长度;所述方法还包括:
确定第二虚拟页面所对应的页表项有效,所述第二虚拟页面为与所述第一虚拟页面相邻的下一个虚拟页面,所述第二虚拟页面对应第四逻辑地址段;
将第二物理内存中的指令和第三物理内存中的指令作为所述待执行指令,所述第二物理内存为所述第二逻辑地址段所对应的所述第一存储设备的物理内存,所述第三物理内存为第五逻辑地址段所对应的所述第一存储设备的物理内存,所述第五逻辑地址段为以所述第四逻辑地址段中的首个逻辑地址为起点的所述第四逻辑地址段中包括的第二预设长度的逻辑地址段,所述第二预设长度加上所述第一长度等于所述第一预设长度。
6.根据权利要求4所述的方法,其特征在于,若所述第一物理内存中的指令包括分支跳转指令;所述方法还包括:
确定第一分支跳转指令的第二逻辑地址和所述第一分支跳转指令的跳转分支方向的第三逻辑地址,所述第一分支跳转指令为所述第一物理内存中的首条分支跳转指令;
判断所述第三逻辑地址所对应的第三虚拟页面是否有效,所述第三虚拟页面对应第六逻辑地址段;
若是,则将第四物理内存中的指令和第五物理内存中的指令作为所述待执行指令,所述第四物理内存为第七逻辑地址段所对应的第一存储设备的物理内存,所述第五物理内存为第八逻辑地址段所对应的第一存储设备的物理内存,所述第七逻辑地址段为所述第一逻辑地址至所述第二逻辑地址之间的逻辑地址段,所述第八逻辑地址段为以所述第三逻辑地址为起点的所述第六逻辑地址段中包括的第三预设长度的逻辑地址段,所述第三预设长度加上所述第七逻辑地址段的长度等于所述第一预设长度;
若否,则将所述第四物理内存中的指令作为所述待执行指令。
7.根据权利要求1或2所述的方法,其特征在于,所述对所述处理系统的待执行指令进行语义分析之前,所述方法还包括:
对所述待执行指令分别进行分解,得到第一微码;
将所述第一微码转换为第一中间代码;
所述对所述处理系统的待执行指令进行语义分析包括:
根据中间代码的语义定义格式对所述第一中间代码进行语义分析。
8.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据所述待预取数据的逻辑地址从第二存储设备中获取所述待预取数据;
将所述待预取数据存储到所述第一存储设备中,所述待预取数据用于当所述处理系统执行所述待执行指令时,通过所述待预取数据的逻辑地址从所述第一存储设备中访问所述待预取数据。
9.一种处理系统,其特征在于,所述处理系统包括第一存储设备和第二存储设备,所述处理系统包括:
分析单元,用于对所述处理系统的待执行指令进行语义分析;
识别单元,用于识别所述待执行指令中的具有读写语义的指令;
第一确定单元,用于确定所述具有读写语义的指令的未知操作数;根据所述具有读写语义的指令的未知操作数确定待预取数据的逻辑地址,所述待预取数据为所述处理系统执行所述具有读写语义的指令时将访问的且未存储于所述第一存储设备的数据,所述待预取数据存储于所述第二存储设备中,所述第一存储设备的访问速度大于所述第二存储设备的访问速度。
10.根据权利要求9所述的处理系统,其特征在于,所述待执行指令包括第一指令;所述识别单元具体用于:
判断所述第一指令的所有操作数是否已知;
若是,则分析所述第一指令的操作类型,按照所述第一指令的操作类型对所述第一指令的所有操作数进行操作;
若否,则预测所述第一指令的未知操作数,再分析所述第一指令的操作类型,按照所述第一指令的操作类型对所述第一指令的所有操作数进行操作。
11.根据权利要求9或10所述的处理系统,其特征在于,所述处理系统还包括第二确定单元;
所述第二确定单元,用于确定当满足预设条件时第一逻辑地址所对应的第一虚拟页面有效,所述预设条件包括所述处理系统发生中断异常,或者,所述处理系统发生页面错误异常,或者,所述处理系统的应用程序执行发生错误,所述第一逻辑地址为所述处理系统当前执行的第二指令的逻辑地址。
12.根据权利要求11所述的处理系统,其特征在于,所述第一虚拟页面对应第一逻辑地址段;所述处理系统还包括第一判断单元和第三确定单元;
第一判断单元,用于判断第一长度是否大于第一预设长度,所述第一长度为所述第一逻辑地址至所述第一逻辑地址段中的最后一个逻辑地址之间的第二逻辑地址段的长度;
第三确定单元,用于若所述第一长度大于所述第一预设长度,则将第一物理内存中的指令作为所述待执行指令,所述第一物理内存包括第三逻辑地址段所对应的所述第一存储设备的物理内存,所述第三逻辑地址段为以所述第一逻辑地址为起点的所述第一逻辑地址段中包括的所述第一预设长度的逻辑地址段。
13.根据权利要求12所述的处理系统,其特征在于,所述第二确定单元还用于:
确定第二虚拟页面所对应的页表项有效,所述第二虚拟页面为与所述第一虚拟页面相邻的下一个虚拟页面,所述第二虚拟页面对应第四逻辑地址段;
所述第三确定单元还用于:
将第二物理内存中的指令和第三物理内存中的指令作为所述待执行指令,所述第二物理内存为所述第二逻辑地址段所对应的所述第一存储设备的物理内存,所述第三物理内存为第五逻辑地址段所对应的所述第一存储设备的物理内存,所述第五逻辑地址段为以所述第四逻辑地址段中的首个逻辑地址为起点的所述第四逻辑地址段中包括的第二预设长度的逻辑地址段,所述第二预设长度加上所述第一长度等于所述第一预设长度。
14.根据权利要求12所述的处理系统,其特征在于,若所述第一物理内存中的指令包括分支跳转指令;所述第二确定单元还用于:
确定第一分支跳转指令的第二逻辑地址和所述第一分支跳转指令的跳转分支方向的第三逻辑地址,所述第一分支跳转指令为所述第一物理内存中的首条分支跳转指令;
所述第一判断单元还用于:
判断所述第三逻辑地址所对应的第三虚拟页面是否有效,所述第三虚拟页面对应第六逻辑地址段;
所述第三确定单元还用于:
若第三虚拟页面有效,则将第四物理内存中的指令和第五物理内存中的指令作为所述待执行指令,所述第四物理内存为第七逻辑地址段所对应的第一存储设备的物理内存,所述第五物理内存为第八逻辑地址段所对应的第一存储设备的物理内存,所述第七逻辑地址段为所述第一逻辑地址至所述第二逻辑地址之间的逻辑地址段,所述第八逻辑地址段为以所述第三逻辑地址为起点的所述第六逻辑地址段中包括的第三预设长度的逻辑地址段,所述第三预设长度加上所述第七逻辑地址段的长度等于所述第一预设长度;
若第三虚拟页面无效,则将所述第四物理内存中的指令作为所述待执行指令。
15.根据权利要求9或10所述的处理系统,其特征在于,所述处理系统还包括分解单元和转换单元;
所述分解单元,用于对所述待执行指令分别进行分解,得到第一微码;
所述转换单元,用于将所述第一微码转换为第一中间代码;
所述分析单元具体用于:
根据中间代码的语义定义格式对所述第一中间代码进行语义分析。
16.根据权利要求9或10所述的处理系统,其特征在于,所述处理系统还包括获取单元和存储单元;
所述获取单元,用于根据所述待预取数据的逻辑地址从第二存储设备中获取所述待预取数据;
所述存储单元,用于将所述待预取数据存储到所述第一存储设备中,所述待预取数据用于当所述处理系统执行所述待执行指令时,通过所述待预取数据的逻辑地址从所述第一存储设备中访问所述待预取数据。
17.一种处理系统,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如权利要求1至如权利要求8中任一所述的步骤。
18.一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至如权利要求8中任意一项所述的方法。
CN202010444153.0A 2020-05-22 2020-05-22 数据预取方法和数据预取装置 Active CN113703660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010444153.0A CN113703660B (zh) 2020-05-22 2020-05-22 数据预取方法和数据预取装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010444153.0A CN113703660B (zh) 2020-05-22 2020-05-22 数据预取方法和数据预取装置

Publications (2)

Publication Number Publication Date
CN113703660A CN113703660A (zh) 2021-11-26
CN113703660B true CN113703660B (zh) 2024-03-19

Family

ID=78646432

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010444153.0A Active CN113703660B (zh) 2020-05-22 2020-05-22 数据预取方法和数据预取装置

Country Status (1)

Country Link
CN (1) CN113703660B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287483A (en) * 1988-07-06 1994-02-15 Kabushiki Kaisha Toshiba Prefetched operand storing system for an information processor
JPH0651982A (ja) * 1992-08-04 1994-02-25 Fujitsu Ltd 演算処理装置
CN101630291A (zh) * 2009-08-03 2010-01-20 中国科学院计算技术研究所 虚拟存储系统和方法
CN103077069A (zh) * 2012-12-28 2013-05-01 华为技术有限公司 指令解析的方法及装置
CN109219804A (zh) * 2016-12-28 2019-01-15 华为技术有限公司 非易失内存访问方法、装置和系统
CN110895446A (zh) * 2018-09-12 2020-03-20 三星电子株式会社 存储设备以及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024547B2 (en) * 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
JP5238797B2 (ja) * 2010-12-20 2013-07-17 パナソニック株式会社 コンパイラ装置
US9292446B2 (en) * 2012-10-04 2016-03-22 International Business Machines Corporation Speculative prefetching of remote data
US9378021B2 (en) * 2014-02-14 2016-06-28 Intel Corporation Instruction and logic for run-time evaluation of multiple prefetchers
US10684857B2 (en) * 2018-02-01 2020-06-16 International Business Machines Corporation Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287483A (en) * 1988-07-06 1994-02-15 Kabushiki Kaisha Toshiba Prefetched operand storing system for an information processor
JPH0651982A (ja) * 1992-08-04 1994-02-25 Fujitsu Ltd 演算処理装置
CN101630291A (zh) * 2009-08-03 2010-01-20 中国科学院计算技术研究所 虚拟存储系统和方法
CN103077069A (zh) * 2012-12-28 2013-05-01 华为技术有限公司 指令解析的方法及装置
CN109219804A (zh) * 2016-12-28 2019-01-15 华为技术有限公司 非易失内存访问方法、装置和系统
CN110895446A (zh) * 2018-09-12 2020-03-20 三星电子株式会社 存储设备以及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
以基本块为单位的非顺序指令预取;沈立,戴葵,王志英;计算机工程与科学;第25卷(第04期);第94-98页 *

Also Published As

Publication number Publication date
CN113703660A (zh) 2021-11-26

Similar Documents

Publication Publication Date Title
US4347565A (en) Address control system for software simulation
US20210397425A1 (en) Systems and Methods for Performing Binary Translation
US7434030B2 (en) Processor system having accelerator of Java-type of programming language
JP5218998B2 (ja) バッファを用いて高効率でロード処理を実行する方法およびプログラム
WO2017092409A1 (zh) 语言虚拟机中热点中间代码的识别方法以及装置
WO2004061659A2 (en) Methods and systems to manage machine state in virtual machine operations
US7823140B2 (en) Java bytecode translation method and Java interpreter performing the same
US9477505B2 (en) Method for reducing the overhead associated with a virtual machine exit when handling instructions related to descriptor tables
CN112559049A (zh) 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置
JP2015516601A (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
CN112631657B (zh) 用于字符串处理的字节比较方法以及指令处理装置
JP2007535241A (ja) 条件付で実行可能モジュールを縮小するシステムおよび方法
JP2015513376A (ja) 命令オペレーション・コードによるランタイム計装間接サンプリング
US20040049657A1 (en) Extended register space apparatus and methods for processors
US11436146B2 (en) Storage control apparatus, processing apparatus, computer system, and storage control method
US6820254B2 (en) Method and system for optimizing code using an optimizing coprocessor
CN113703660B (zh) 数据预取方法和数据预取装置
EP1103898A2 (en) Microprocessor and memory
US9342303B2 (en) Modified execution using context sensitive auxiliary code
US10802854B2 (en) Method and apparatus for interpreting bytecode instruction stream
CN114780447A (zh) 内存数据读取方法、装置、设备及存储介质
US7404064B2 (en) Method and device for calculating addresses of a segmented program memory
EP1901171A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
CN113885943A (zh) 处理单元、片上系统、计算装置及方法
US8732721B2 (en) Method for reducing trap overhead when executing a guest in a virtual machine

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
TA01 Transfer of patent application right

Effective date of registration: 20211222

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Applicant after: xFusion Digital Technologies Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant