CN115080464B - 数据处理方法和数据处理装置 - Google Patents

数据处理方法和数据处理装置 Download PDF

Info

Publication number
CN115080464B
CN115080464B CN202210738722.1A CN202210738722A CN115080464B CN 115080464 B CN115080464 B CN 115080464B CN 202210738722 A CN202210738722 A CN 202210738722A CN 115080464 B CN115080464 B CN 115080464B
Authority
CN
China
Prior art keywords
pointer
instruction
data
address
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
Application number
CN202210738722.1A
Other languages
English (en)
Other versions
CN115080464A (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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology 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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202210738722.1A priority Critical patent/CN115080464B/zh
Publication of CN115080464A publication Critical patent/CN115080464A/zh
Application granted granted Critical
Publication of CN115080464B publication Critical patent/CN115080464B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

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

本公开提供了一种数据处理方法以及数据处理装置,该数据处理方法包括如下的步骤:获取目标指针的指针值;使用指针值在处理器核外进行地址翻译,获取目标指针指向的指针数据的物理地址;使用物理地址对指针数据进行预取。该数据处理方法改善了对于涉及指针数据预取的处理效率,由此改善了***性能。

Description

数据处理方法和数据处理装置
技术领域
本公开的一个或多个实施例涉及数据处理方法和数据处理装置。
背景技术
在计算机技术发展过程中,低价格、大容量的存储通常延迟较高,无法及时给处理器提供数据。低延迟、小容量的存储作为处理器和大容量存储的中间缓冲区域,有效地缓解了数据传输高延迟对处理器性能的影响。这种低延迟、小容量的存储技术之一就是缓存技术。为了平衡容量和延迟,缓存分为多级。常用的处理器通常有三级缓存,从一级到三级,容量依次增大。一级缓存(L1 Cache)的容量通常为几十KB,二级缓存(L2 Cache)的容量为几MB,三级缓存(L3 Cache)的容量为几百MB。这里,级数数字较低的缓存容量较小,延迟较低;级数数字较大的缓存反之。在多级缓存体系中,最后一级缓存也简称LLC缓存(Last LevelCache)。
在中央处理器(CPU)架构中,程序指令与数据都保存在内存中。CPU核运行频率远远高于内存运行频率,因此,从内存获取数据与指令可能需要上百个CPU核时钟,往往会造成CPU核由于等待相关指令与数据而空转,造成性能损失。因此,当前的CPU核通常都包含上述多级缓存架构来保存最近被访问的数据,同时利用预取器发现指令/数据访问的规律,来提前预取即将被访问的指令/数据到缓存中。如果预取的是指令,则称为指令预取器;如果预取的是数据,则称为数据预取器。后者根据目标缓存位置,可以进一步细分为L1D数据预取器(预取到一级数据缓存),L2数据预取器,LLC数据预取器。
缓存通常通过静态随机存储器(SRAM)存储装置实现,而内存通过动态随机存储器(DRAM)存储装置实现。
计算机操作***的重要职能之一是内存管理。在多进程操作***中,每个进程都有自己的虚拟地址空间,可以使用***规定范围内的任意虚拟地址(Virtual Address)。中央处理器(Central Processing Unit,CPU)执行应用程序时所使用的地址是虚拟地址。操作***给进程分配内存时,需要把使用到的虚拟地址映射到物理地址(PhysicalAddress),物理地址才是真正的物理内存访问地址。通过这种将地址区分为虚拟地址和物理地址的方式,可以简化程序编译,使编译器基于连续的、充足的虚拟地址空间来编译程序,并且不同进程的虚拟地址被分配到不同的物理地址,使得***能够同时运行多个进程,从而提高整个计算机***的运行效率。此外,由于应用程序可以使用但无法更改地址翻译,因此一个进程无法访问到另一个进程的内存内容,从而增加了***的安全性。
发明内容
本公开至少一个实施例提供了一种数据处理方法,其包括:获取目标指针的指针值;使用所述指针值在处理器核外进行地址翻译,获取所述目标指针指向的指针数据的物理地址;使用所述物理地址对所述指针数据进行预取。
例如,在根据本公开至少一个实施例的数据处理方法中,所述使用所述指针值在所述处理器核外进行地址翻译,包括:获取所述指针值对应的虚拟地址;使用所述虚拟地址查询在所述处理器核外的翻译后备缓冲器;响应于在所述处理器核外的翻译后备缓冲器查询命中,返回所述目标指针对应的物理地址。
例如,在根据本公开至少一个实施例的数据处理方法中,使用所述指针值在所述处理器核外进行地址翻译,还包括:响应于在所述处理器核外的翻译后备缓冲器查询缺失,不再对所述指针数据进行预取操作。
例如,在根据本公开至少一个实施例的数据处理方法中,所述获取所述指针值对应的虚拟地址,包括:获取所述指针值与所述指针数据的虚拟地址之间的偏移值;使用所述指针值与所述偏移值得到所述指针值对应的虚拟地址。
例如,在根据本公开至少一个实施例的数据处理方法中,所述处理器核外的翻译后备缓冲器对应于所述处理器核外的缓存或对应于内存设置。
例如,在根据本公开至少一个实施例的数据处理方法中,在所述获取所述目标指针的指针值之前,还包括:执行第一指令以用于获取所述目标指针的指针值,其中,所述第一指令为指针值读取指令类型。
例如,在根据本公开至少一个实施例的数据处理方法中,在所述执行所述第一指令之前,还包括:接收所述第一指令,响应于所述第一指令为所述指针值读取指令类型,记录所述第一指令的信息。
例如,在根据本公开至少一个实施例的数据处理方法中,所述记录所述第一指令的信息,包括:记录所述第一指令对应的所述指针值与所述指针数据的虚拟地址之间的偏移值。
例如,在根据本公开至少一个实施例的数据处理方法中,所述记录所述第一指令的信息,还包括:记录所述第一指令的指令地址。
例如,在根据本公开至少一个实施例的数据处理方法中,所述记录所述第一指令的信息,还包括:使用指针值读取指令缓冲记录所述第一指令的信息。
例如,在根据本公开至少一个实施例的数据处理方法中,所述接收所述第一指令之后,还包括:识别所述第一指令是否为所述指针值读取指令类型。
例如,在根据本公开至少一个实施例的数据处理方法中,识别所述第一指令是否为所述指针值读取指令类型,包括:响应于所述第一指令为读取指令且所述第一指令所读出的数据被在所述第一指令之后的另一指令作为地址计算的基地址使用,确定所述第一指令为所述指针值读取指令类型。
例如,在根据本公开至少一个实施例的数据处理方法中,执行所述第一指令以用于获取所述目标指针的指针值,包括:使用所述第一指令的目标数据地址查询所述处理器核外的缓存,响应于查询所述处理器核外的所述缓存命中,返回所述目标指针的指针值,或者响应于查询所述处理器核外的所述缓存缺失,向所述处理器核外的所述缓存的后级存储装置读取所述目标指针的指针值。
例如,在根据本公开至少一个实施例的数据处理方法中,向所述处理器核外的所述缓存的后级存储装置读取,包括:在指针缓冲写入所述目标数据地址的信息;使用所述目标数据地址从所述后级存储装置读取到所述目标指针的指针值;响应于在所述指针缓冲查询命中所述目标指针的指针值的地址,返回所述目标指针的指针值。
例如,在根据本公开至少一个实施例的数据处理方法中,所述使用所述物理地址对所述指针数据进行预取,包括:将所述指针数据预取到所述处理器核内。
根据本公开至少一个实施例提供了一种数据处理装置,其包括:处理器核,配置为获取目标指针的指针值;核外地址翻译模块,位于所述处理器核外且配置使用所述指针值在处理器核外进行地址翻译,获取所述目标指针指向的指针数据的物理地址,其中,所述处理器核还使用所述物理地址对所述指针数据进行预取。
例如,根据本公开至少一个实施例的数据处理装置还包括:指针指令读取缓冲,配置为记录被识别为指针值读取指令类型的第一指令的信息。
例如,在根据本公开至少一个实施例的数据处理装置中,所述第一指令的信息包括:所述第一指令的取值地址;所述第一指令对应的所述指针值与所述指针数据的虚拟地址之间的偏移值。
例如,根据本公开至少一个实施例的数据处理装置还包括:指针缓冲,配置为记录所述第一指令对应的指针值的信息。
例如,在根据本公开至少一个实施例的数据处理装置中,所述第一指令对应的指针值的信息包括:所述指针值的物理地址;所述第一指令对应的所述指针值与所述指针数据的虚拟地址之间的偏移值。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种地址翻译流程的示意图;
图2A为一种多核处理器的架构示意图;
图2B为在图2A所示的处理器中使用缓存读取数据流程的示意图;
图2C示出了一个常规的TLB项的内容的一个示意图;
图3示出了无指针数据预取时处理器核的操作过程的示意图;
图4A为根据本公开的至少一实施例的数据处理方法的流程图;
图4B为根据本公开的至少一实施例的数据处理装置的示意图;
图4C示出了在本公开的至少一实施例中在有指针数据预取时处理器核的操作过程;
图5A示出了根据本公开实施例的数据处理装置的一个示例的示意图;
图5B示出了根据本公开实施例的数据处理装置的另一个示例的示意图;
图6A示出了本公开至少一个实施例提供的处理器中的缓存的架构的示例性示意图;
图6B示出了本公开至少一实施例中的第一级页表项缓冲器中一个数据项的内容的示意图;
图6C示出了本公开至少一实施例提供的处理器进行数据读请求处理的示意性流程图;
图7A示出了本公开至少一实施例的指针值读取指令缓冲(PLB)的示意图;
图7B示出了根据本公开至少一实施例的指针缓冲(PB)的示意图;
图8示出了本公开至少一个实施例中对于指针值读取请求的示例性处理流程;
图9示出了根据本公开至少一实施例的另一数据处理装置的示意图;
图10为本公开至少一个实施例提供的一种电子装置的示意框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另作定义,此处使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
在计算机操作***处理任务时,需要将应用程序使用的虚拟地址转换为物理地址,从而基于物理地址进行内存访问,以获取数据。将虚拟地址转换为物理地址的过程被称为地址翻译(Address Translation)。
图1为一种计算机***中使用页表进行地址翻译流程的示意图,图中示出了使用四级页表的地址翻译过程。如图1所示,该***中的一个虚拟地址被划分为几段,例如,分别表示为EXT、OFFSET_lvl4、OFFSET_lvl3、OFFSET_lvl2、OFFSET_lvl1、OFFSET_pg。在该示例中,高位的虚拟地址段EXT没有被使用。虚拟地址段OFFSET_lvl4、OFFSET_lvl3、OFFSET_lvl2、OFFSET_lvl1分别表示四级页表的偏移值,也即是,虚拟地址段OFFSET_lvl4表示第四级页表的偏移值,虚拟地址段OFFSET_lvl3表示第三级页表的偏移值,虚拟地址段OFFSET_lvl2表示第二级页表的偏移值,虚拟地址段OFFSET_lvl1表示第一级页表的偏移值。
最高一级页表(也即第四级页表)的初始地址存放在架构寄存器REG_pt中,其内容由操作***设定,应用程序无法更改。在第二级页表、第三级页表、第四级页表中,每一级页表的页表项中存放的是下一级页表的起始地址。第一级页表项(Page Table Entry,PTE)存放的是相应内存页的物理地址的高位,它与一项虚拟地址的虚拟地址偏移(OFFSET_pg)合并即可得到该虚拟地址对应的物理地址。由此,通过这种方式逐级获取下一级页表的起始地址,最终可以得到第一级页表项(PTE),从而进一步得到对应的物理地址,实现了从虚拟地址到物理地址的翻译。
需要说明的是,虽然图1示出了4级页表,但是本公开的实施例不限于此,可以采用任意数量的多级页表,例如2级页表、3级页表、5级页表等,还可以采用单级页表,这可以根据实际需求而定,本公开的实施例对此不作限制。例如,一个***可能支持不同大小的内存页,每个内存页的大小由虚拟地址偏移OFFSET_pg的位数来表示,例如,每个内存页的大小可以为4K。同一个***中,越大的内存页所需的地址翻译级数越少。需要说明的是,可以适用任何内存页大小的***,如果***支持多个内存页大小,不同内存页大小对应的页表级数也不一样,本公开对此不作限制。
地址翻译是一个非常耗时的过程,对于多级页表,通常需要多次访问内存才能获得相应的物理地址。例如,以图1所示的4级页表为例,需要访问内存4次才能获得相应的物理地址。
例如,可以为每个处理器核单独提供页表遍历器以用于进行页表浏览过程。为了节省地址翻译时间、提升计算机***性能,还可以在每个处理器核中设置翻译后备缓冲(Translation Lookaside Buffer,TLB)来存放之前使用过的第一级页表项(PTE)。当需要进行地址翻译时,首先到TLB中查询是否有需要的PTE,如果命中,则可以立即获得相应的物理地址,否则需要进行页表浏览进行查找。翻译后备缓冲可以包括针对指令的翻译后备缓冲(ITLB)和针对数据的翻译后备缓冲(DTLB),这里ITLB和DTLB都设置在处理核内。
图2A为一种多核处理器的架构示意图。例如,如图2A所示,该处理器具有4个处理器核(CPU Core)。同时,该多核处理器还具有多级缓存,例如第一级缓存(L1 Cache)、第二级缓存(L2 Cache)和最后一级缓存(Last Level Cache,LLC)。在该示例中,这里最后一级缓存是第三级缓存(L3 Cache)并且与内存通信连接。在图示的情形中,最后一级缓存是多个处理器核共享的,第一级缓存和第二级缓存是各个处理器核私有的。也即是,多个处理器核共用一个最后一级缓存,而每个处理器核被单独提供一个专用的第二级缓存。最后一级缓存和第二级缓存用于存储指令与数据,最后一级缓存与内存连接。
例如,为每个处理器核单独设置一个专用的第一级缓存,第一级缓存设置在处理器核内部。例如,第一级缓存可以包括第一级指令缓存(L1I缓存)和第一级数据缓存(L1D缓存),分别用于缓存指令和数据。该处理器还可以进一步访问内存,处理器核通过多级缓存实现指令传递和数据读取;当最高一级缓存(L1缓存)没有命中时,再搜索下(后)一级缓存,知道最后一级缓存(LLC缓存)。
上述每级缓存都可以有多种架构,比如全相联(Fully Associative)、组相联(SetAssociative)、直接索引(Directly Indexed)等,并且可以有多种适用的替换策略。而且,与CPU缓存架构类似,TLB也可以有多种架构,比如全相联、组相联、直接索引等。例如,TLB架构也可以是具有多级结构,最高一级TLB的尺寸最小且速度最快,当最高一级TLB没有命中时,再搜索下(后)一级TLB。本公开的实施例对于缓存、TLB等的架构不做限制。
通常的缓存空间(例如第二级缓存等)包括控制逻辑、存储器(例如静态随机存取存储器(SRAM))以及填充缓冲器(fill buffer)。控制逻辑即该缓存空间的控制模块,用于控制该缓存空间的操作,存储器用于存储被缓存的数据(包括操作数据和/或指令数据),而填充缓冲器则用于在该缓存空间被一项数据读请求查询而未命中时,暂存该数据读请求,由此对该数据读请求的执行状态进行监控。当该数据读请求针对的目标数据从下级缓存或内存被读取到该缓存空间时,则从填充缓冲器中删除该数据读请求,例如,还将读取的目标数据写入该缓存空间的存储器中,以备后续使用。
图2B示出在上述处理器中使用一级或多级缓存读取数据的流程。这里,假设在处理器中所要执行的需要读取数据的指令是读取指令(例如Load),例如,将位于内存中目标地址的目标数据读取到目标寄存器中。在处理器核执行该读取指令时,首先进行地址翻译获得与目标地址对应的内存的物理地址(图中未示出),产生数据读取请求(步骤201),然后使用该物理地址查询所请求的目标数据是否已经存在第一级缓存(L1缓存)中(步骤202),如果查询命中目标数据(Y),则从该第一级缓存获取目标数据(步骤203),并将获取的数据返回给处理器核(步骤206);如果查询未命中目标数据(N),则需要继续使用该目标数据的物理地址至少从后面的第二级缓存(L2缓存)尝试读取目标数据;并且,例如在查询第二级缓存之前还可以将该数据读取请求写入填充缓冲(fill buffer)中。如果在该第二级缓存中命中目标数据,则将该目标数据返回第一级缓存以及处理器核,如果在第二级缓存中仍然没有命中(缺失)目标数据,则继续向更后级的缓存(例如LLC缓存)乃至内存中获取目标数据(步骤204),在获取了目标数据之后,将目标数据返回给上级缓存或处理器核(步骤206),而且根据需要更新一级或多级缓存(步骤205)。对于每一级缓存,根据该缓存是包含(inclusive)类型或排他(exclusive)类型的,决定在该缓存中是否保存从下级缓存/内存获得的目标数据以及目标数据的物理内存的地址信息(tag)等。对于包含(inclusive)类型,则某一地址的数据可以同时存在多级缓存中;对于排他(exclusive)类型,则某一地址的数据缓存只会存在于多级缓存中的其中一级。
图2C示出了一个常规的TLB项的内容的一个示意图。如图2C所示,该TLB中的每一项(TLB数据项)对应于一项之前用过的第一页表项(PTE),可以包括有效位(Valid)、翻译位、虚拟地址位(虚拟页号,PageVA)、物理地址位(物理页号,PagePA)。
有效位为有效值时表示该数据项为有效项,有效位为无效值时表示该数据项为无效项。例如,在一些示例中,有效位是1bit,其数值为1时是有效值,其数值为0时是无效值。虚拟地址位存放内存页的虚拟地址(PageVA,虚拟页号)或者该地址的哈希值,物理地址位存放内存页的物理地址(PagePA,物理页号)。
并且很多高性能CPU支持虚拟机模式,即一台物理机(单机或服务器)运行多个虚拟机,每个虚拟机中运行有相应的操作***。虚拟机使用虚拟地址,在对虚拟机的***中的虚拟地址进行翻译时,需要先将虚拟机中的虚拟地址翻译为宾客物理地址,该宾客物理地址实际上仍然是计算机***中的虚拟地址而非真正的物理地址,之后将该宾客物理地址翻译为***物理地址,该***物理地址则是真正的物理地址。也即,在虚拟机模式下,每一个地址翻译需要经历宾客虚拟地址到宾客物理地址、宾客物理地址到***物理地址的转换过程。在4级页表的架构下,一个宾客虚拟地址到***物理地址的翻译过程最多可能访问内存24次。在虚拟机模式下,为了尽量减少地址翻译次数,因此增加了翻译位来区别***物理地址PTE与宾客物理地址PTE。翻译位为有效值(例如为“1”)时表示提供宾客物理地址(也可以被称为中间物理地址(IPA,Intermediate Physical Address))到***物理地址的翻译,翻译位为无效值(例如为“0”)时表示提供宾客虚拟地址直接到***物理地址的翻译,或是表示当前***不在虚拟机模式下。
在计算机***中,很多内存访问指令的内存访问虚拟地址是动态生成的,使用一个或者多个寄存器来计算地址。基于指令的寻址方式,一种常用的地址生成形式是:使用一个寄存器的值作为基地址(base),使用另一个寄存器或者一个立即数提供偏移量(一个大小受限的值),并且对应的虚拟地址可以是基地址和偏移量这两者之和。
当前软件应用大量使用指针来实现复杂的数据结构,比如二叉树、哈希表、链表、图等。指针是一种特殊类型的数据,该数据的内容是另一块数据的虚拟地址。如前所述,在处理器核中,可以利用预取器发现数据访问的规律,来提前预取即将被访问的数据到缓存中,由此提升***的读取性能。但是,现有处理器核的数据预取器很难对使用指针的数据结构进行预取,这是由以下几个问题造成的。首先,指针数据访问的地址之间往往没有特别明显的规律来进行预取。其次,当一个指令获得指针值后,往往会马上被使用到,使得处理器核没有时间去预取相应的数据。因此,从内存获取指针数据所造成的长时延是制约CPU***性能的一个重要因素。
在本公开中,“指针数据”(Pointed Data)表示的是一个指针指向的数据块的内容;“指针值”(Pointer Value)表示该指针本身的内容,即“指针数据”的虚拟地址,“指针值”是以虚拟地址形式保存在内存数据段中的,需要将它转换为物理地址,才能从内存中获取其指向的指针数据。例如,在使用指针的数据读取指令(例如load指令)中,指针是该指令的源操作数。
图3示出了在无指针数据预取时处理器核的操作过程,这里假设指针值及其指向的指针数据都没有缓存在某一级缓存中。如图3所示,当一个指针值及其指向的指针数据不在缓存中时,首先,为了获得指针值,处理器核需要使用对应于指针值的物理地址浏览多级缓存(但是都处于查询缺失状态)以及内存,在内存中找到存储指针值的物理地址以读取指针值,然后使用该指针值翻译得到指针指值指向的指针数据的物理地址,然后使用该物理地址再次浏览多级缓存(但是都处于查询缺失状态)以及内存,在内存中找到存储指针数据的物理地址,由此可以读取该指针数据。在该流程中,为了从指针获得该指针指向的指针数据,处理器核需要串行访问内存两次:首先,需要从内存获得指针值,即数据的虚拟地址;其次,在将该地址翻译为物理地址后,再次访问内存获得指针数据。该流程导致数量较大的时间延迟,导致了***开销增加、性能下降。
本公开的至少一实施例提供了一种数据处理方法,该数据处理方法例如可以由单核或多核处理器执行,参见图4A,该数据处理方法包括如下的步骤:
步骤100,获取目标指针的指针值;
步骤200,使用指针值在处理器核外进行地址翻译,获取目标指针指向的指针数据的物理地址;
步骤300,使用物理地址对所述指针数据进行预取。
对应地,本公开的至少一实施例提供了一种数据处理装置,参见图4B,数据处理装置10包括处理器核101和核外地址翻译模块102。处理器核101配置为获取目标指针的指针值;核外地址翻译模块102,位于处理器核外且配置使用指针值在处理器核外进行地址翻译,获取目标指针指向的指针数据的物理地址;处理器核101还使用物理地址对指针数据进行预取。
图4C示出了根据本公开至少一实施例在有指针数据预取时处理器核的操作过程,这里假设指针值及其指向的指针数据都没有缓存在某一级缓存中。如图4C所示,当一个指针值及其指向的指针数据不在缓存中时,首先,为了获得指针值,处理器核需要使用对应于指针值的物理地址浏览多级缓存(但是都处于查询缺失状态)以及内存,在内存中找到存储指针值的物理地址以读取指针值,然后,在处理器核外,例如在L2缓存或者最后一级LLC缓存,使用该读取的指针值进行地址翻译得到指针指值指向的指针数据的物理地址,然后使用该物理地址浏览某一级缓存(例如对应于L2缓存,但是处于缺失状态)以及内存,或直接浏览内存(例如对应于LLC缓存或内存本身),找到存储指针数据的物理地址,读取该指针数据,将该指针数据预取到某一级缓存中,例如预取到处理器核内的缓存(例如L1缓存),则在后面执行使用该指针数据的指令时,可以直接在处理器核内的缓存中就可以命中该指针数据,由此提高了***性能。
在本公开至少一实施例提出的数据处理方法中,处理器核在核外缓存(L2缓存或者最后一级缓存LLC)或者内存中获得指针对应的指针值后,使用该指针值在本地(即核外缓存或内存)进行地址翻译获得指针数据的物理地址,然后向缓存或内存请求相应的指针数据。因此,处理器核可以更快获得指针指向的指针数据,从而提高处理器的性能。
图5A示出了根据本公开实施例的数据处理装置的一个示例的示意图。如图5A所示,该数据处理装置为处理器,该处理器具有多个(例如以4个为例)处理器核(CPU Core),但是本公开的实施例也可以用于单核处理器。
该示例性的多核处理器具有多级缓存,例如第一级缓存(L1 Cache)、第二级缓存(L2 Cache)和最后一级缓存(Last Level Cache,LLC)。在该示例中,这里最后一级缓存是第三级缓存(L3 Cache)并且与内存通信连接。在图示的情形中,最后一级缓存是多个处理器核共享的,第一级缓存和第二级缓存是各个处理器核私有的。也即是,多个处理器核共用一个最后一级缓存,而每个处理器核被单独提供一个专用的第二级缓存。最后一级缓存和第二级缓存用于存储指令与数据,最后一级缓存与内存连接。需要说明的是,在另一些示例中,第二级缓存也可以是共享类型的缓存,本公开的实施例对此不作限制。
例如,为每个处理器核单独设置一个专用的第一级缓存,第一级缓存设置在处理器核内部。例如,第一级缓存可以包括第一级指令缓存(L1I缓存)和第一级数据缓存(L1D缓存),分别用于缓存指令和数据。该处理器还可以进一步访问内存,处理器核通过多级缓存实现指令传递和数据读取。
每个处理器核包括例如单独为其提供的页表遍历器以用于进行页表浏览过程,以及包括翻译后备缓冲(Translation Lookaside Buffer,TLB),用于进行地址翻译。翻译后备缓冲可以包括针对指令的翻译后备缓冲(ITLB)和针对数据的翻译后备缓冲(DTLB),这里ITLB和DTLB都设置在处理核内。
与图2A所示的处理器不同的是,图5A所示的本公开实施例的上述示例的处理器还包括对应于第二级缓存(L2缓存)设置的核外翻译后备缓冲(L2C TLB),该L2C TLB用于在L2缓存进行本地地址翻译,而无需将例如指针值返回到处理器核内再使用核内TLB进行地址翻译。在该示例中,核外地址翻译模块包括该L2C TLB,并且可以通过该处理器核内的页表遍历器以进行在L2缓存的本地地址翻译。
在另一个示例中,图5A所示的处理器也可以进一步包括对应于第二级缓存设置的核外页表遍历器以(L2C PTW,图中未示出),通过该L2C PTW使用核外TLB进行在L2缓存的本地地址翻译,而无需将例如指针值返回到处理器核内再使用核内TLB进行地址翻译。在该示例中,核外地址翻译模块包括对应于L2缓存设置的L2C TLB以及L2C PTW。
在上述示例中,核外的L2C TLB例如可以采用与核内TLB相同或不同的架构(例如全相联、组相联、直接索引等),由于对应于L2缓存设置,因此与L2缓存例如直接通信连接。
图5B示出了根据本公开实施例的数据处理装置的一个示例的示意图。如图5B所示,该数据处理装置为处理器,与图5A所示的示例不同之处在于,该示例中的处理器还包括对应于最后级缓存(LLC缓存)设置的核外翻译后备缓冲(LLC TLB),该LLC TLB用于在LLC缓存进行本地地址翻译,而无需将例如指针值返回到处理器核内再使用核内TLB进行地址翻译。在该示例中,核外地址翻译模块包括该LLC TLB,并且可以通过该处理器核内的页表遍历器以进行在LLC缓存的本地地址翻译。
在另一个示例中,图5B所示的处理器也可以进一步包括对应于最后级缓存设置的核外页表遍历器以(LLC PTW,图中未示出),通过该LLC PTW使用核外TLB进行在LLC缓存的本地地址翻译,而无需将例如指针值返回到处理器核内再使用核内TLB进行地址翻译。在该示例中,核外地址翻译模块包括对应于LLC缓存设置的LLC TLB以及LLC PTW。
在上述示例中,核外的LLC TLB例如可以采用与核内TLB相同或不同的架构(例如全相联、组相联、直接索引等),由于对应于LLC缓存设置,因此与LLC缓存例如直接通信连接。
本公开的实施例中,数据处理装置不限于例如对应于L2缓存或LLC缓存设置核外TLB,例如还可以对应于内存设置核外TLB,由此使用核外TLB进行在内存的本地地址翻译,而无需将例如指针值返回到处理器核内再使用核内TLB进行地址翻译,对于该种方式可以参考上面的示例,这里不再详述。
为了进行核外TLB管理,在本公开实施例的缓存空间中增设了第一级页表项(PTE)缓冲器(或称为“PTE读请求缓冲器”(PTE request buffer))。第一级页表项缓冲器配置为存储一项第一级页表项读请求携带的信息。例如,在至少一个示例中,缓存空间包括控制逻辑、存储器(例如静态随机存取存储器)、第一级页表项缓冲器以及填充缓冲器(fillbuffer)。第一级页表项缓冲器用于在查询未命中的情况下缓存第一级页表项读请求,而填充缓冲器则如上所述在查询未命中的情况下缓存通常的数据读请求。
图6A示出了本公开至少一个实施例提供的处理器中的缓存的架构的示例性示意图。该处理器例如是图5A或图5B所示的处理器。
如图6A所示,该处理器包括依序通信连接形成通信链路的上级缓存空间601、当前缓存空间602、下级缓存空间/内存603,同样地,当前缓存空间602是当前要描述的缓存空间。例如,上级缓存空间601是指当前缓存空间602上级的缓存空间,例如,在当前缓存空间为第二级缓存空间的情形,则上级缓存空间为第一级缓存空间,在当前缓存空间为第三级缓存空间(或者LLC缓存)的情形,则上级缓存空间为第二级缓存空间。下级缓存空间603是指当前缓存空间602下级的缓存空间,在当前缓存空间为第二级缓存空间的情形,则下级缓存空间为第三级缓存空间(或前述的LLC)。第一翻译后备缓冲器604与当前缓存空间602通信连接,设置在同一路径等级。
当前缓存空间602中包括控制逻辑605、存储器(例如静态随机存取存储器)606、第一级页表项缓冲器607以及填充缓冲器(fill buffer)608。静态随机存取存储器606作为存储器的示例,用于保存缓存的数据与标签。控制逻辑605用于控制当前缓存空间602的操作。控制逻辑605的操作包括在接收到一项数据读请求时,比较数据读请求与当前所缓存的各个缓存行的标签,以决定所请求的数据是否在缓存中。如果所请求的数据在缓存中,则返回相应的数据,如果查询所请求的数据未命中缓存(即不在缓存中),则将该数据读请求填入填充缓冲器608中,例如,填充缓冲器608将数据读请求传递给下级缓存空间/内存603,并等待请求的数据的返回。同样地,控制逻辑605在接收到一项第一级页表项读请求时,如果所请求的第一级页表项数据在缓存中,则返回相应的数据,如果查询所请求的第一级页表项数据未命中缓存,则将该第一级页表项读请求填入第一级页表项缓冲器607中,保存该第一级页表项读请求携带的信息,第一级页表项缓冲器607将该第一级页表项读请求传递给下级缓存空间/内存603,并等待请求的第一级页表项数据的返回。
例如,当处理器核需要进行地址翻译时,首先到翻译后备缓冲器(例如核外TLB)查询是否有需要的PTE,如果未命中,则需要进行页表浏览,由此处理器中的页表遍历器会生成第一级页表项读请求(PTE读请求),并且将该第一级页表项读请求依次到各级缓存直至内存进行数据读取,因此在多级缓存结构中将该第一级页表项读请求依次向下传递。当作为描述对象的目标预设缓存空间接收到该第一级页表项读请求时,那么会到该目标预设缓存空间中的存储器(如后面详细描述的)中查询是否有需要的PTE,如果命中,则返回查询得到的PTE,如果未命中,则页表遍历器会到目标预设缓存空间的下级缓存空间或内存中继续进行查询,以便尝试得到PTE。
例如,第一级页表项读请求包括对应的内存页的虚拟地址,在一些示例中,第一级页表项读请求还包括翻译位。对应的内存页的虚拟地址为需要进行翻译的虚拟地址中的虚拟页号。例如,内存页大小为X=2Y字节(例如4096=212),且内存页总是X字节对齐的,因此内存页的物理地址和虚拟地址的低Y位内容总为0,所以内存页的虚拟地址可以不保存地址的低Y位以节省硬件资源。例如,通常虚拟页和物理页为4K,又或者32K等。
图6B示出了本公开至少一实施例中的第一级页表项缓冲器中一个数据项的内容的示意图。
如图6B所示,例如,第一级页表项缓冲器中每一数据项用于存储一项第一级页表项读请求携带的信息,例如,存储被请求的第一级页表项的信息,这些信息的内容包括对应于被请求的第一级页表项的有效位、翻译位、内存页的虚拟地址和PTE本身的物理地址。有效位为有效值(例如为“1”)时表示该数据项为有效项,有效位为无效值(例如为“0”)时表示该数据项为无效项。翻译位为有效值(例如为“1”)时表示该数据项用于提供宾客物理地址到***物理地址的翻译,翻译位为无效值(例如为“0”)时表示该数据项用于提供宾客虚拟地址到***物理地址的翻译,或者表示不在虚拟机模式下。对于一个***而言,缓存中保存的以及缓存间传递的数据的大小都是固定的,例如64字节。一个第一级页表项数据往往小于一个缓存行的大小,仅占用所在的缓存行的一部分。因此,被缓存的第一级页表项的物理地址需要有足够多位以从读取的缓存行中获得正确的第一级页表项数据。
例如,在一个示例中,PTE本身的物理地址包括缓存行地址和缓存行偏移值,缓存行地址用于与对应于第一级页表项读请求的返回的数据的地址进行比较以确定数据是否包括第一级页表项数据,缓存行偏移值表示相应的第一级页表项数据在缓存行中的偏移值。
又例如,该PTE本身的物理地址可以是***中常规的物理地址,例如包括物理页号以及页内偏移等,这里不再详述。
缓存内的第一级页表项缓冲器的大小可以根据实际需求而决定。如果第一级页表项缓冲器不是很大,则会出现来了新的第一级页表项读请求而第一级页表项缓冲器已满的情况。为了避免这种情况的发生,缓存需要通过令牌(Token)等机制通知处理器核或上级缓存暂停发送新的第一级页表项读请求。令牌技术是已知的方法,可以参考通常设计,在此不再赘述。
图6C为采用本公开至少一实施例提供的处理器进行数据读请求处理的示意性流程图。下面结合图6A和图6B所示的缓存空间的设置对本公开实施例提供的数据读请求处理方法进行说明。
如图6C所示,首先,当前缓存空间602接收到例如处理器核生成的数据读请求。接着,判断该数据读请求是否命中当前缓存空间602。
响应于该数据读请求命中当前缓存空间602,从该当前缓存空间的存储器606中获得相应的数据。接着判断该数据读请求是否是PTE读请求,响应于该数据读请求是PTE读请求,将根据该PTE读请求获得的数据(即PTE)写入第一翻译后备缓冲器604中,以备后续地址翻译时使用并将所请求的数据返回给上级缓存空间601。响应于该数据读请求不是PTE读请求,则直接将所请求的数据返回给上级缓存空间601。
响应于该数据读请求未命中当前缓存空间602,将数据读请求写入当前缓存空间的填充缓冲器608中,接着判断该数据读请求是否是PTE读请求。响应于该数据读请求是PTE读请求,将该PTE读请求写入PTE缓冲器607中,然后,从下级缓存空间/内存603获得所请求的数据。或者,响应于该数据读请求不是PTE请求,则直接从下级缓存空间/内存603获得所请求的数据。接着,上述两种情形中,对于从下级缓存空间/内存603获得的所请求的数据,都需要利用获得的所请求的数据更新当前缓存空间的存储器606中缓存的数据/标签以供后续使用。
接着,将获得的所请求的数据的物理地址会与PTE缓冲器607中的有效项的物理地址进行比较,如果相等,则表示所请求的数据是PTE数据,那么从所请求的数据中提取出所请求的PTE,从PTE缓冲器607中删除匹配的数据项,将该获得的所请求的PTE写入第一翻译后备缓冲器(604)中以供后续使用,并返回所请求的数据(即PTE)给上级缓存空间601。如果所请求的数据的地址与PTE缓冲器(607)中的有效项的物理地址不相等,则表示所请求的数据不是PTE数据,那么按照普通数据的方式处理,即直接向上级缓存空间601返回所请求的数据。
在本公开的至少一个实施例中,处理器核配置为获取目标指针的指针值。该目标指针为数据读取指令中的源操作数(之一)。对于源操作数为指针的数据读取指令,在本公开中被称为“指针值读取指令型”指令。
处理器核在根据取值地址(例如PC)获取一条指令之后,进行例如译码操作等,在确认当前被处理的指令为数据读取指令后,进一步识别该数据读取指令是否为指针值读取指令型,如果识别出当前被处理的指令(以下也简称“第一指令”)为指针值读取指令型之后,则记录该第一指令的信息。例如,所记录的信息包括第一指令的取值地址;例如,所记录的信息还可以包括第一指令对应的指针值与指针数据的虚拟地址之间的偏移值。第一指令对应的指针值指的是在第一指令中包括的作为源操作数的指针的指针值。如上所述,在至少一些示例中,指针数据的虚拟地址与相应的指针值有一定的偏移量(Offset)。当指针值读取指令类型的指令被识别出时,那么其相应偏移值也可以被计算出来,由此可以被记录,以用于后续计算指针数据的物理地址。在至少一些示例中,所记录的信息还可以进一步包括所记录信息是否有效、所记录信息的读写权限等。
例如,在至少一个实施例中,被识别出指针值读取指令类型的指令(例如上述第一指令)的信息可以存放在指针值读取指令缓冲(Pointer Load Buffer,PLB)中,以供后续操作读取。该PLB例如可以是单独设置的,也可以是与某一缓存(例如L1缓存、L2缓存等)共享某一物理存储装置。
图7A示出了本公开至少一实施例提供的示例性指针值读取指令缓冲的示意图。该指针值读取指令缓冲(PLB)可以包括多个项,如图7A所示,PLB的每个项包括四个域(四项内容):VALID、IVA(Instruction Virtual Address)、DAO(Data Address Offset)、R/W,对它们分别说明如下:
·VALID:表示当前项是否包含有效数据;
·IVA:当前项对应的指针值读取指令的指令地址;
·DAO:当前项对应的指针数据的虚拟地址与指针值之间的偏移值;
·R/W:表示当前项对应的指针数据访问是只读或会被改写。
如上所述,PLB可以包括多个项,并且PLB的多个项的组织架构可以参考例如缓存的方式,可以是全相联、组相联、直接索引,并且在填充PLB的多个项时所采用的替换策略也可以参考例如缓存中的替换策略,例如最近使用(Least Recently Used,LRU)最不常使用(Least-Frequently Used,LFU)等,本公开的实施例对于PLB的架构以及替换策略不作限制。
在上述PLB中,IVA全部地址或部分地址高位(而地址低位则作为偏移)可以被用于进行索引,以便于后续查询在处理器核的处理流水线中的某条指令是否为正在被处理的指针值读取指令。
在本公开的至少一个实施例中,如果一条数据读取指令(例如Load指令),如果该指令所读取的数据被后面一条指令作为地址计算的基地址(base)来使用,那么这条数据读取指令就被识别为指针值读取指令,并且该指令的指令地址被***PLB的一项(空白项或被替换的项)中,并且如果需要,写入该项的VALID、DAO、R/W等域中的值。
例如,如果处理器核识别出当前被处理的指令(“第一指令”)为指针值读取指令型之后并且记录了该第一指令的信息之后,该第一指令例如进入指令队列中等待发射、执行,在执行该第一指令的过程中,如果在PLB中查询该第一指令命中(即确认该第一指令为指针值读取指令型)且所读取的数据(指针值)在L1D缓存中缺失,则产生指针值读取请求,将该指针值读取请求发送到后级缓存(L2缓存)以进行处理,由此查询L2缓存以及,如果需要,进一步查询LLC缓存等。该指针值读取请求包括如下四项内容,以便计算指针对应的指针数据的物理地址:
·VALID:表示当前项是否包含有效数据;
·PRPA:指针值的物理地址;
·DAO:从命中PLB项中提取;
·R/W:从命中PLB项中提取。
PRPA(Pointer Request Physical Address)表示的是对第一指令中作为源操作数的指针进行地址翻译后获得的存储指针值的存储位置的物理地址。由于具有上述内容,该指针值读取请求不同于处理器核中原有非涉及指针的数据/指令读写请求。
例如上述指针值读取请求的信息可以记录在指针缓冲(Pointer Buffer,PB)内。图7B示出了根据本公开实施例的示例性指针缓冲的示意图。如图7B所示,PB的每个项包括四个域(四项内容):VALID、PRPA、DAO、R/W,其中,如上所述,DAO和R/W与对应的PLB项中的取值相同。该PB例如可以是单独设置的,也可以是与某一缓存(例如L1缓存、L2缓存等)共享某一物理存储装置。
同样地,PB可以包括多个项,并且PB的多个项的组织架构可以参考例如缓存的方式,可以是全相联、组相联、直接索引,并且在填充PB的多个项时所采用的替换策略也可以参考例如缓存中的替换策略,例如最近使用(Least Recently Used,LRU)最不常使用(Least-Frequently Used,LFU)等,本公开的实施例对于PB的架构以及替换策略不作限制。在上述PB中,PRPA可以被用于进行索引以便于后续查询被读取返回的数据是否为指针值。
例如,PRPA(Pointer Request Physical Address)表示指针值的物理地址,用于从缓存或内存中读取指针值。在计算机中,缓存的基本单位——缓存行(cache line)——比如为64字节,对应地,内存的基本单位——存储行——也为64字节,这个大小往往大于指针值的大小,比如64位的计算机中指针值为8字节,因此为了从一条缓存行或存储行里面提取出指针值,上面PRPA也对应地包括足够多地址低位,而地址高位则作为索引。
图8示出了本公开至少一个实施例中对于指针值读取请求的示例性处理流程。在本公开的实施例中,对于非指针值读取请求的处理可以没有任何变化。当处理器核确认当前被处理的指令(以下简称“第一指令”)为数据读取指令后,进一步识别该第一指令为指针值读取指令型,则在PLB的一项中记录该第一指令的信息。该PLB的项如图7A所示;该第一指令的源操作数为目标指针。之后,在执行该第一指令的过程中,在PLB中查询该第一指令命中且所要读取的数据在L1D缓存中缺失,产生指针值读取请求,将该指针值读取请求发送到后级缓存(L2缓存)以进行处理,由此查询L2缓存(步骤801)。
如果所要读取的数据在L2缓存查询命中,则从L2缓存获取所要读取的数据,即目标指针的指针值(步骤802),判断当前要读取的数据是否为指针值(例如可通过判断当前的数据请求是否为指针值读取请求来实现)(步骤803),如果是(Y),则返回该指针值(步骤810),如果当前的数据读取请求不是指针值读取请求(N),则返回所要求的读取数据(步骤804)。
如果所要读取的数据在L2缓存查询缺失,则判断当前要求读取的数据是否为指针值(步骤805);并且,例如在判断是否为指针值之前还可以将该指针值读取请求写入填充缓冲(fill buffer)中。如果当前为指针值读取请求(Y),则将所要读取的数据的信息写入PB中的一项(步骤806),然后从后级缓存或内存中获取所要读取的数据(步骤807),如果当前不是指针值读取请求(N),则直接从后级缓存或内存中获取所要读取的数据(步骤807)。在从后级缓存或内存中获取所要读取的数据之后,更新处理器核所对应的多级缓存中的一级或多级(步骤808);之后,使用所读取的数据的物理地址在PB中查询PRPA(步骤809),如果命中,则表示所读取的数据为指针值,返回该指针值(步骤810),否则所读取的数据不是指针值,返回所要求的读取数据(步骤804)。这里,PB的项如图7B所示,其中的DAO以及W/R来自对应的PLB的项。
从所读取的数据中提取指针值(步骤811),使用指针值作为基地址以及使用从对应的PB项中读取的DAO作为偏移,得到指针值指向的指针数据的虚拟地址(步骤812),然后在处理器核外对该虚拟地址进行地址翻译,使用该虚拟地址查询核外TLB(例如L2C TLB或LLC TLB)(步骤813),如果在核外TLB中未命中该指针数据的虚拟地址(N),则不再进行指针数据的预取操作(步骤814),由此避免了对于核外TLB的填充等后续操作;如果在核外TLB中命中该指针数据的虚拟地址(Y),则通过该核外TLB将该指针数据的地址翻译为指针数据的物理地址(步骤815)。之后,使用该指针数据的物理地址查询缓存(例如L1D缓存)(步骤816),此时如果查询缓存命中,则从该缓存中获取指针数据(步骤817),处理器核使用该指针数据进行预取操作,将该指针数据填充到一级或多级缓存中,例如处理器核内的L1缓存(步骤819);相反,此时如果查询缓存未命中,则从当前缓存的后级缓存(例如L2缓存或LLC缓存)或内存获取指针数据(步骤818);并且,例如在查询后级缓存之前还可以将该预取请求写入填充缓冲(fill buffer)中。,处理器核使用该指针数据进行预取操作,将该指针数据填充到一级或多级缓存中,例如处理器核内的L1缓存(步骤819)。
图9示出了根据本公开至少一实施例的数据处理装置,该数据处理装置相对于图4B所示出的数据处理装置,进一步包括指针值读取缓存(PLB)和/或指针缓冲(PB)。
该指针指令读取缓冲(PLB)配置为记录被识别为指针值读取指令类型的指令(第一指令)的信息;该第一指令的信息包括该第一指令的取值地址、第一指令对应的指针值与指针数据的虚拟地址之间的偏移值。例如,该指针指令读取缓冲例如可以参考图7A所示的示例。
该指针缓冲(PB)配置为记录第一指令对应的指针值的信息。该第一指令对应的指针值的信息包括指针值的物理地址、第一指令对应的指针值与指针数据的虚拟地址之间的偏移值。例如,该指针缓冲例如可以参考图7B所示的示例。
在本公开至少一实施例的数据处理装置中,参考图4A和图4B所示,核外地址翻译模块包括对应于处理器核外的缓存(例如L2缓存或LLC缓存)或内存设置的翻译后备缓冲(TLB),或者,还可以进一步包括对应于处理器核外的缓存(例如L2缓存或LLC缓存)设置的页表遍历器。
在本公开的实施例对于处理器核的微架构的类型不作限制,例如可以为ARM架构、RISC-V架构、MIPS架构等。
图10为本公开至少一个实施例提供的一种电子装置的示意框图。本公开实施例中的电子装置可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图10示出的电子装置1000仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
例如,如图10所示,在一些示例中,电子装置1000包括处理装置(例如中央处理器、图形处理器等)1001,该处理装置可以包括上述任一实施例的数据处理装置,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储装置1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有计算机***操作所需的各种程序和数据。处理器1001、ROM 1002以及RAM 1003通过总线1004被此相连。输入/输出(I/O)接口1005也连接至总线1004。
例如,以下部件可以连接至I/O接口1005:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1006;包括诸如液晶显示器(LCD)、扬声器、振动器等的输出装置1007;包括例如磁带、硬盘等的存储装置1008;例如还可以包括诸如LAN卡、调制解调器等的网络接口卡的通信装置1009。通信装置1009可以允许电子装置1000与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储装置1008。虽然图10示出了包括各种装置的电子装置1000,但是应理解的是,并不要求实施或包括所有示出的装置。可以替代地实施或包括更多或更少的装置。
例如,该电子装置1000还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置1009可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信***(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
例如,电子装置1000可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。

Claims (13)

1.一种数据处理方法,包括:
接收第一指令;
响应于所述第一指令为指针值读取指令,使用指针值读取指令缓冲记录所述第一指令的信息;
执行所述第一指令以用于获取目标指针的指针值,其中,所述第一指令为指针值读取指令;
获取所述目标指针的指针值;
使用所述指针值在处理器核外进行地址翻译,获取所述目标指针指向的指针数据的物理地址;
使用所述物理地址对所述指针数据进行预取;
其中,执行所述第一指令以用于获取所述目标指针的指针值,包括:
使用所述第一指令的目标数据地址查询所述处理器核外的缓存,
响应于查询所述处理器核外的所述缓存命中,返回所述目标指针的指针值,或者,响应于查询所述处理器核外的所述缓存缺失,向所述处理器核外的所述缓存的后级存储装置读取所述目标指针的指针值;
其中,向所述处理器核外的所述缓存的后级存储装置读取所述目标指针的指针值,包括:
在指针缓冲写入所述目标数据地址的信息;
使用所述目标数据地址从所述后级存储装置读取到所述目标指针的指针值;
响应于在所述指针缓冲查询命中所述目标指针的指针值的地址,返回所述目标指针的指针值。
2.根据权利要求1所述的数据处理方法,其中,所述使用所述指针值在所述处理器核外进行地址翻译,包括:
获取所述指针值对应的虚拟地址;
使用所述虚拟地址查询在所述处理器核外的翻译后备缓冲器;
响应于在所述处理器核外的翻译后备缓冲器查询命中,返回所述目标指针对应的物理地址。
3.根据权利要求2所述的数据处理方法,其中,使用所述指针值在所述处理器核外进行地址翻译,还包括:
响应于在所述处理器核外的翻译后备缓冲器查询缺失,不再对所述指针数据进行预取操作。
4.根据权利要求2所述的数据处理方法,其中,所述获取所述指针值对应的虚拟地址,包括:
获取所述指针值与所述指针数据的虚拟地址之间的偏移值;
使用所述指针值与所述偏移值得到所述指针值对应的虚拟地址。
5.根据权利要求2所述的数据处理方法,其中,所述处理器核外的翻译后备缓冲器对应于所述处理器核外的缓存或对应于内存设置。
6.根据权利要求1的数据处理方法,其中,所述记录所述第一指令的信息,包括:
记录所述第一指令对应的所述指针值与所述指针数据的虚拟地址之间的偏移值。
7.根据权利要求6的数据处理方法,其中,所述记录所述第一指令的信息,还包括:
记录所述第一指令的指令地址。
8.根据权利要求1的数据处理方法,所述接收所述第一指令之后,还包括:
识别所述第一指令是否为所述指针值读取指令。
9.根据权利要求8的数据处理方法,其中,识别所述第一指令是否为所述指针值读取指令,包括:
响应于所述第一指令为读取指令且所述第一指令所读出的数据被在所述第一指令之后的另一指令作为地址计算的基地址使用,确定所述第一指令为所述指针值读取指令。
10.根据权利要求1所述的数据处理方法,其中,所述使用所述物理地址对所述指针数据进行预取,包括:
将所述指针数据预取到所述处理器核内。
11.一种数据处理装置,包括:
处理器核,配置为获取目标指针的指针值;
核外地址翻译模块,位于所述处理器核外且配置使用所述指针值在处理器核外进行地址翻译,获取所述目标指针指向的指针数据的物理地址;
指针指令读取缓冲,配置为记录被识别为指针值读取指令的第一指令的信息;
指针缓冲,配置为记录所述第一指令对应的指针值的信息,
其中,所述处理器核还使用所述物理地址对所述指针数据进行预取。
12.根据权利要求11所述的数据处理装置,其中,所述第一指令的信息包括:
所述第一指令的取值地址;
所述第一指令对应的所述指针值与所述指针数据的虚拟地址之间的偏移值。
13.根据权利要求11所述的数据处理装置,其中,所述第一指令对应的指针值的信息包括:
所述指针值的物理地址;
所述第一指令对应的所述指针值与所述指针数据的虚拟地址之间的偏移值。
CN202210738722.1A 2022-06-24 2022-06-24 数据处理方法和数据处理装置 Active CN115080464B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210738722.1A CN115080464B (zh) 2022-06-24 2022-06-24 数据处理方法和数据处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210738722.1A CN115080464B (zh) 2022-06-24 2022-06-24 数据处理方法和数据处理装置

Publications (2)

Publication Number Publication Date
CN115080464A CN115080464A (zh) 2022-09-20
CN115080464B true CN115080464B (zh) 2023-07-07

Family

ID=83256271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210738722.1A Active CN115080464B (zh) 2022-06-24 2022-06-24 数据处理方法和数据处理装置

Country Status (1)

Country Link
CN (1) CN115080464B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3115904A1 (en) * 2015-07-06 2017-01-11 Alcatel Lucent Method for managing a distributed cache
CN113722246A (zh) * 2021-11-02 2021-11-30 超验信息科技(长沙)有限公司 处理器中物理内存保护机制的实现方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140317333A1 (en) * 2013-04-17 2014-10-23 Microchip Technology Incorporated Direct Memory Access Controller with Hybrid Scatter-Gather Functionality
US9747218B2 (en) * 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
CN106560798B (zh) * 2015-09-30 2020-04-03 杭州华为数字技术有限公司 一种内存访问方法、装置及计算机***
CN108874691B (zh) * 2017-05-16 2021-04-30 龙芯中科技术股份有限公司 数据预取方法和内存控制器
CN114238167B (zh) * 2021-12-14 2022-09-09 海光信息技术股份有限公司 信息预取方法、处理器、电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3115904A1 (en) * 2015-07-06 2017-01-11 Alcatel Lucent Method for managing a distributed cache
CN113722246A (zh) * 2021-11-02 2021-11-30 超验信息科技(长沙)有限公司 处理器中物理内存保护机制的实现方法及装置

Also Published As

Publication number Publication date
CN115080464A (zh) 2022-09-20

Similar Documents

Publication Publication Date Title
TWI437490B (zh) 微處理器及縮短分頁表尋訪時間之方法
US8924648B1 (en) Method and system for caching attribute data for matching attributes with physical addresses
US8151085B2 (en) Method for address translation in virtual machines
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US20210089470A1 (en) Address translation methods and systems
CN112416817B (zh) 预取方法、信息处理装置、设备以及存储介质
US20240086323A1 (en) Storage management apparatus, storage management method, processor, and computer system
WO2023108938A1 (zh) 解决高速缓冲存储器地址二义性问题的方法和装置
US20060106991A1 (en) Victim prefetching in a cache hierarchy
US20170371797A1 (en) Pre-fetch mechanism for compressed memory lines in a processor-based system
US10684857B2 (en) 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
US20180060241A1 (en) Instruction to query cache residency
CN114238167B (zh) 信息预取方法、处理器、电子设备
CN114637700A (zh) 针对目标虚拟地址的地址转换方法、处理器及电子设备
CN108874691B (zh) 数据预取方法和内存控制器
CN115934170A (zh) 预取方法及装置、预取训练方法及装置、存储介质
CN115080464B (zh) 数据处理方法和数据处理装置
CN115061955A (zh) 处理器、电子设备、地址翻译方法以及缓存页表项方法
US11494300B2 (en) Page table walker with page table entry (PTE) physical address prediction
CN115098410A (zh) 处理器、用于处理器的数据处理方法及电子设备
US11061820B2 (en) Optimizing access to page table entries in processor-based devices
US11036512B2 (en) Systems and methods for processing instructions having wide immediate operands
CN111198827A (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