CN108874690B - 数据预取的实现方法和处理器 - Google Patents

数据预取的实现方法和处理器 Download PDF

Info

Publication number
CN108874690B
CN108874690B CN201710343785.6A CN201710343785A CN108874690B CN 108874690 B CN108874690 B CN 108874690B CN 201710343785 A CN201710343785 A CN 201710343785A CN 108874690 B CN108874690 B CN 108874690B
Authority
CN
China
Prior art keywords
pointer
address
data
cache memory
memory
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
CN201710343785.6A
Other languages
English (en)
Other versions
CN108874690A (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.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp 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 Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201710343785.6A priority Critical patent/CN108874690B/zh
Publication of CN108874690A publication Critical patent/CN108874690A/zh
Application granted granted Critical
Publication of CN108874690B publication Critical patent/CN108874690B/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

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

数据预取的实现方法和处理器
技术领域
本发明涉及计算机技术领域的处理器设计,尤其涉及一种数据预取的实现方法和处理器。
背景技术
现代处理器普遍采用多级高速缓存结构,以弥补处理器与主储存器之间的速度差距。为了进一步提高处理器的执行效率和数据吞吐率,通常采用数据预取技术。该技术将处理器随后要处理的数据提前放置在高速缓存中,以减少临时访问数据时,需要的较长延迟。
目前市场上大多数的处理器中,数据预取通常采用顺序预取和跨步预取技术。顺序预取是指一个接一个地连续读取数据的预取方法,例如读取:地址1的数据、地址2的数据、地址3的数据....。跨步预取是指按照一定的规律读取数据的预取方法,例如读取:地址1的数据、地址3的数据、地址5的数据...。顺序预取和跨步预取多应用于提升数据局部性较好或者访存模式比较规律的应用程序的访存性能。数据的空间局部性较好,则数据在存储器中的存放方式是连续的或者是有规律的。因此,对于这些数据集,采用顺序预取和跨步预取的方式可以达到很好的预取效率和预取精度。
但是,对于基于链式数据结构(Linked Data Structure,简称LDS)(例如指针,链表,栈,图)等的不规则数据集,物理存储上表现为不连续或者根本没有规律性。这种情况下,顺序预取和跨步预取就无法应对这种非规则的访存模式,因此导致传统的预取方法对链式数据结构的预取效率和准确率较低、预取效果往往很差。
发明内容
本发明提供一种数据预取的实现方法和处理器,提高了链式数据预取的效率和准确率。
本发明提供的数据预取的实现方法,包括:
处理器取访存指令,所述访存指令指示将待访问数据从存储器中加载到处理器核中;
若所述待访问数据为指针,则所述处理器对所述访存指令译码,生成访存请求;所述访存请求包括加载地址和链式数据预取标识,所述加载地址中存储所述待访问数据,所述链式数据预取标识指示了所述待访问数据为指针,所述指针指向链式数据;
所述处理器根据所述加载地址获取所述指针,并根据所述指针和所述链式数据预取标识预取所述链式数据。
本发明提供的处理器,包括:
处理器核,用于取访存指令,所述访存指令指示将待访问数据从存储器中加载到处理器核中;若所述待访问数据为指针,则对所述访存指令译码,生成访存请求;所述访存请求包括加载地址和链式数据预取标识,所述加载地址中存储所述待访问数据,所述链式数据预取标识指示了所述待访问数据为指针,所述指针指向链式数据;
存储部件,用于根据所述加载地址获取所述指针,并根据所述指针和所述链式数据预取标识预取所述链式数据。
本发明提供一种数据预取的实现方法和处理器,处理器对访存指令进行译码后,可以生成携带有链式数据预取标识的访存请求。通过链式数据预取标识,可以明确提示本次访存操作基于链式数据结构。处理器执行访存请求实现将一个指针从存储器中加载到处理器核中,并根据该指针预取指针指向的链式数据。当处理器后续需要获取该链式数据时,可以直接获取,无需再进行内存读取操作。从而缩短了链式数据预取访问时延,提高了链式数据预取的效率和准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例适用的存储器体系结构示意图;
图2为本发明实施例一提供的数据预取的实现方法的流程图;
图3为本发明实施例二提供的数据预取的实现方法的流程图;
图4为本发明实施例三提供的数据预取的实现方法的流程图;
图5为本发明实施例三提供的预取链式数据一种实现方式的方法流程图;
图6为本发明实施例三提供的预取链式数据另一种实现方式的方法流程图;
图7为本发明实施例四提供的数据预取的实现方法的流程图;
图8为本发明实施例提供的处理器的结构示意图;
图9为本发明实施例提供的地址提取器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现代处理器普遍采用多级高速缓存结构。图1为本发明实施例适用的存储器体系结构示意图。如图1所示,存储器体系结构可以包括:高速缓冲存储器(Cache Memory,简称Cache)、内存15和内存控制器(Memory Controller,简称MC)14。Cache可以包括一级缓存(L1 Cache)12和二级缓存(L2 Cache)13。在本发明实施例中,L1 Cache12还可以包括高速缓存侧链式数据访存预取器16,MC14还可以包括内存侧链式数据访存预取器17。其中,MC14是计算机系统内部控制内存、并且使内存与中央处理器(Central Processing Unit,简称CPU)之间交换数据的重要器件。预取器16和预取器17,可以实现数据预取功能,对于CPU将来要访问的数据,可以提前从存储器中取出,存储器可以包括Cache和内存。需要说明,本发明对于预取器16和预取器17的实现方式不做限定,可以通过软件程序实现,也可以通过硬件实现,或者通过软件程序结合硬件实现,只要实现数据预取功能即可。而且,预取器16可以与现有的L1 Cache结构相结合,预取器17可以与现有的MC结构相结合。也就是说,预取器16或者预取器17可以不是独立的软件程序或者硬件,可以与现有的L1 Cache或者内存控制器结构相结合共同实现数据预取功能。
处理器核11取数据的流程如下:首先在L1 Cache查找。如果L1 Cache命中,则直接取出。如果L1 Cache缺失,则向L2 Cache查找。如果L2 Cache命中,则直接取出。如果L2Cache缺失,则通过MC向更低存储器层次的内存查找。通过引入存储器层次和数据预取技术,可以将处理器核要用到的数据提前放置在Cache中,减少数据访问时延。
本发明提供的数据预取方法,主要应用于基于链式数据结构的数据预取,旨在解决目前现有技术中对于LDS等不规则数据进行预取时预取效率和准确率低的技术问题。通过访存请求中携带链式数据预取标识,指示了该访存请求返回一个指针,Cache或者MC可以根据该指针预取该指针指向的链式数据,提升了链式数据预取的效率和准确率。
需要说明,本发明提供的数据预取的实现方法,其中关于内存控制器实现数据预取以及预取器17的实现部分,可以参考本申请人申请的另一篇发明名称为《数据预取方法和内存控制器》的发明专利申请。
图2为本发明实施例一提供的数据预取的实现方法的流程图。本实施例提供的数据预取的实现方法,执行主体可以为处理器。处理器可以包括处理器核和存储部件。存储部件可以包括一级高速缓冲存储器、二级高速缓冲存储器和内存控制器。如图2所示,本实施例提供的数据预取的实现方法,可以包括:
S101、处理器取访存指令。
其中,访存指令指示将待访问数据从存储器中加载到处理器核中。
具体的,取访存指令的操作由处理器中的处理器核完成。访存指令为处理器指令集中的一种存储器数据加载指令。该访存指令指示将待访问数据从存储器中加载到处理器核中。其中,存储器可以包括Cache和内存。在本步骤中,待访问数据可能是一个指针,该指针指向了一个链式数据。待访问数据也可能是普通数据结构的数据,例如单字节数据、双字节数据、字符型数据等。在程序代码具体实现时,访存指令可以为程序员人为插入的,也可以是编译器根据程序特点自动编译生成的。
S102、若待访问数据为指针,则处理器对访存指令译码,生成访存请求。
其中,访存请求包括加载地址和链式数据预取标识,加载地址中存储待访问数据,链式数据预取标识指示了待访问数据为指针,指针指向链式数据。
具体的,对访存指令译码,生成访存请求,由处理器中的处理器核完成。处理器核对访存指令译码生成访存请求后,可以将访存请求发送给存储部件,使得存储部件执行访存请求,向处理器核返回待访问数据。如果待访问数据为指针,该指针指向链式数据,此时,访存指令和访存请求基于链式数据结构,可以实现将一个地址从存储器中加载到处理器核中,而且,存储部件还可以进一步根据该指针进行链式数据的预取。
需要说明,若待访问数据为指针,则该访存指令可以参考本申请人申请的另一篇发明名称为《数据预取方法、处理器和设备》的发明专利申请。
需要说明,若待访问数据不是指针,则该访存指令可以为现有的任意一种访存指令,本实施例不做特别限定。
S103、处理器根据加载地址获取指针,并根据指针和链式数据预取标识预取链式数据。
具体的,处理器中的存储部件接收处理器核发送的访存请求后,执行该访存请求。由于访存请求中包括链式数据预取标识,因此存储部件可以获知加载地址中存储的是指针。存储部件可以根据加载地址获取加载地址中存储的指针,并将该指针返回至处理器核,实现向处理器核中加载一个地址。需要说明,根据加载地址获取指针的实现方式,可以采用现有的任意一种存储部件执行访存请求的方法。
存储部件在获取指针后,可以根据该指针对指针指向的链式数据进行预取。这样,当处理器需要获取该链式数据时,可以节省进行内存读取的时间,降低了链式数据内存访问的延迟,提高了链式数据预取的效率和准确率,进而提升了处理器读取数据的效率。
可见,本实施例提供的数据预取的实现方法,处理器对指示向处理器核中加载一个指针的访存指令进行译码,可以生成携带有链式数据预取标识的访存请求。通过链式数据预取标识,可以明确提示本次访存操作基于链式数据结构。处理器执行访存请求,实现了将一个指针从存储器中加载到处理器核中,并根据该指针预取指针指向的链式数据。当处理器后续需要获取该链式数据时,可以直接获取,无需再进行内存读取操作。从而缩短了链式数据预取访问时延,提高了链式数据预取的效率和准确率,进而提升了处理器效率。
图3为本发明实施例二提供的数据预取的实现方法的流程图。本实施例在上述实施例一的基础上,提供了数据预取的实现方法的另一种实现方式,具体提供了当一级高速缓冲存储器命中访存请求中的加载地址时,如何将指针加载到处理器核中以及如何预取链式数据的方法。在本实施中,一级高速缓冲存储器可以包括控制模块、预取标识寄存器、地址寄存器和地址提取器,地址寄存器和地址提取器连接。其中,作为一种实现方式,预取标识寄存器、地址寄存器和地址提取器可以组成图1中的预取器16。如图3所示,本实施例提供的数据预取的实现方法,S103,处理器根据加载地址获取指针,可以包括:
S201、控制模块将链式数据预取标识存储在预取标识寄存器中。
具体的,处理器核在对访存指令译码生成访存请求后,将该访存请求发送给一级高速缓冲存储器进行处理。一级高速缓冲存储器接收到访存请求后,其中的控制模块将链式数据预取标识存储在预取标识寄存器中。
其中,控制模块可以实现一级高速缓冲存储器在数据访存过程中的控制功能,可以通过软件程序实现,也可以通过软件程序与硬件相结合的方式实现,本实施例对此不做限定。预取标识寄存器为一级高速缓冲存储器中的一个存储部件,用于存储链式数据预取标识。
S202、控制模块判断一级高速缓冲存储器中是否命中加载地址。
若一级高速缓冲存储器中命中加载地址,说明加载地址中存储的指针已经存储在了一级高速缓冲存储器中,执行S203~S204。
S203、地址提取器根据加载地址获得加载地址中存储的指针,并将指针存储在地址寄存器中。
具体的,在数据访存过程中通常都是以cache行作为基本单位。地址提取器可以从一个cache行中快速提取出需要的数据。在本步骤中,地址提取器根据加载地址获得加载地址中存储的指针,并将指针存储在地址寄存器中。需要说明,地址提取器可以通过硬件实现,本实施例对于地址提取器的具体结构不做限定,可以通过电路、芯片等实现。其中,地址寄存器为一级高速缓冲存储器中的一个存储部件,用于在链式数据预取过程中缓存地址。
S204、控制模块将指针返回至处理器核。
可见,存储部件在执行访存请求时,将首先由一级高速缓冲存储器执行。判断一级高速缓冲存储器中是否命中加载地址。如果命中,说明指针已经存储在一级高速缓冲存储器中,则直接在一级高速缓冲存储器中根据加载地址获取指针后,将指针返回至处理器核。之后,一级高速缓冲存储器可以根据指针预取链式数据。
可选的,S103、处理器根据指针和链式数据预取标识预取链式数据,可以包括:
S205、控制模块判断一级高速缓冲存储器中是否命中指针。
若一级高速缓冲存储器中没有命中指针,说明指针指向的链式数据没有存储在一级高速缓冲存储器中,需要进一步到下一级存储层次(二级高速缓冲存储器)中查找,执行S206~S207。相应的,若一级高速缓冲存储器中命中指针,说明指针指向的链式数据已经存储在一级高速缓冲存储器中,结束流程。
S206、控制模块将指针发送至二级高速缓冲存储器。
需要说明,本实施例对于如何将指针发送至二级高速缓冲存储器的具体实现方式不做限定。例如,可以根据指针构造一级高速缓冲存储器与二级高速缓冲存储器之间的访存请求,通过发送该访存请求从而将指针发送给二级高速缓冲存储器。
S207、二级高速缓冲存储器判断二级高速缓冲存储器中是否命中指针。
若二级高速缓冲存储器中命中指针,说明指针指向的链式数据已经存储在二级高速缓冲存储器中,执行S208。若二级高速缓冲存储器中没有命中指针,说明指针指向的链式数据没有存储在二级高速缓冲存储器中,需要进一步到下一级存储层次(内存)中查找,执行S209~S210。
S208、二级高速缓冲存储器根据指针获得链式数据,并将链式数据返回至一级高速缓冲存储器。
S209、二级高速缓冲存储器将指针发送至内存控制器。
S210、内存控制器根据指针获取链式数据,并将链式数据返回至二级高速缓冲存储器。
可见,在一级高速缓冲存储器将指针返回至处理器核之后,一级高速缓冲存储器可以根据指针预取链式数据。这样,当处理器需要获取该链式数据时,节省了进行内存读取的时间,降低了链式数据内存访问的延迟,提高了链式数据预取的效率和准确率,进而提升了处理器读取数据的效率。
图4为本发明实施例三提供的数据预取的实现方法的流程图。本实施例在上述实施例一和实施例二的基础上,提供了数据预取的实现方法的又一种实现方式,具体提供了当一级高速缓冲存储器没有命中访存请求中的加载地址、二级高速缓冲存储器命中加载地址时,如何将指针加载到处理器核中以及如何预取链式数据的方法。如图4所示,本实施例提供的数据预取的实现方法,当S202控制模块判断一级高速缓冲存储器中是否命中加载地址、判断结果为一级高速缓冲存储器中没有命中加载地址时,还可以包括:
S301、控制模块将加载地址和链式数据预取标识发送至二级高速缓冲存储器。
需要说明,本实施例对于如何将加载地址和链式数据预取标识发送至二级高速缓冲存储器的具体实现方式不做限定。例如,可以根据加载地址和链式数据预取标识构造一级高速缓冲存储器与二级高速缓冲存储器之间的访存请求,通过发送该访存请求从而将加载地址和链式数据预取标识发送给二级高速缓冲存储器。
S302、二级高速缓冲存储器判断二级高速缓冲存储器中是否命中加载地址。
若二级高速缓冲存储器中命中加载地址,说明加载地址中存储的指针已经存储在二级高速缓冲存储器中,执行S303。
S303、二级高速缓冲存储器根据加载地址获得加载地址中存储的指针,并将指针返回至处理器核。
可见,存储部件在执行访存请求时,首先由一级高速缓冲存储器判断一级高速缓冲存储器中是否命中加载地址。当一级高速缓冲存储器没有命中加载地址时,则由二级高速缓冲存储器判断二级高速缓冲存储器中是否命中加载地址。如果命中,说明指针已经存储在二级高速缓冲存储器中,则直接在二级高速缓冲存储器中根据加载地址获取指针后,将指针通过一级高速缓冲存储器返回至处理器核。之后,一级高速缓冲存储器或者内存控制器可以根据指针预取链式数据。
可选的,作为一种实现方式,由内存控制器实现链式数据的预取。图5为本发明实施例三提供的预取链式数据一种实现方式的方法流程图。如图5所示,S103、处理器根据指针和链式数据预取标识预取链式数据,可以包括:
S401、二级高速缓冲存储器将指针发送至内存控制器。
需要说明,本实施例对于二级高速缓冲存储器如何将指针发送至内存控制器的具体实现方式不做限定。例如,可以根据指针构造二级高速缓冲存储器与内存控制器之间的访存请求,通过发送该访存请求从而将指针发送给内存控制器。
S402、内存控制器根据指针获取链式数据,并存储链式数据。
具体的,由于一级高速缓冲存储器中没有命中加载地址,二级高速缓冲存储器中命中加载地址,所以可以认为指针指向的链式数据已经存储在Cache中的可能性较小。所以二级高速缓冲存储器将指针发送至内存控制器,由内存控制器在内存中查找获取指针指向的链式数据并进行存储,可以简化预取步骤,节省二级高速缓冲存储器的存储空间,减小了链式数据内存访问的延迟。
可选的,作为另一种实现方式,由一级高速缓冲存储器实现链式数据的预取。图6为本发明实施例三提供的预取链式数据另一种实现方式的方法流程图。如图6所示,S103、处理器根据指针和链式数据预取标识预取链式数据,可以包括:
S501、地址提取器将指针存储在地址寄存器中。
S502、控制模块根据指针预取链式数据。
其中,控制模块根据指针预取链式数据,可见参见实施例二中S205~S210,此处不再赘述。
具体的,当二级高速缓冲存储器将指针返回至处理器核之后,一级高速缓冲存储器可以根据指针预取指针指向的链式数据,从存储器层次的高层次(一级高速缓冲存储器)至低层次(内存)逐层查找获取链式数据,提升了链式数据预取的准确性。
本实施例提供了一种数据预取的实现方法,当一级高速缓冲存储器没有命中访存请求中的加载地址时,将链式数据预取标识发送给二级高速缓冲存储器,可以明确提示本次访存操作基于链式数据结构。在二级高速缓冲存储器将指针返回至处理器核之后,一级高速缓冲存储器或者内存控制器可以根据指针预取链式数据。这样,当处理器需要获取该链式数据时,节省了进行内存读取的时间,降低了链式数据内存访问的延迟,提高了链式数据预取的效率和准确率,进而提升了处理器读取数据的效率。
图7为本发明实施例四提供的数据预取的实现方法的流程图。本实施例在上述实施例一、实施例二和实施例三的基础上,提供了数据预取的实现方法的又一种实现方式,具体提供了当一级高速缓冲存储器、二级高速缓冲存储器均没有命中访存请求中的加载地址时,如何将指针加载到处理器核中以及如何预取链式数据的方法。如图7所示,本实施例提供的数据预取的实现方法,当S302二级高速缓冲存储器判断二级高速缓冲存储器中是否命中加载地址、判断结果为二级高速缓冲存储器中没有命中加载地址时,还可以包括:
S601、二级高速缓冲存储器将加载地址和链式数据预取标识发送至内存控制器。
需要说明,本实施例对于二级高速缓冲存储器如何将加载地址和链式数据预取标识发送至内存控制器的具体实现方式不做限定。例如,可以根据加载地址和链式数据预取标识构造二级高速缓冲存储器与内存控制器之间的访存请求,通过发送该访存请求从而将加载地址和链式数据预取标识发送给内存控制器。
S602、内存控制器根据加载地址获取指针,并将指针返回至处理器核。
可见,存储部件在执行访存请求时,首先由一级高速缓冲存储器判断一级高速缓冲存储器中是否命中加载地址。当一级高速缓冲存储器没有命中加载地址时,则由二级高速缓冲存储器判断二级高速缓冲存储器中是否命中加载地址。当二级高速缓冲存储器没有命中加载地址时,则二级高速缓冲存储器将加载地址和链式数据预取标识发送至内存控制器,通过链式数据预取标识明确提示本次访存操作基于链式数据结构,由内存控制器根据加载地址获取加载地址中存储的指针。当内存控制器通过二级高速缓冲存储器、一级高速缓冲存储器将指针返回至处理器核之后,内存控制器可以进一步根据指针预取链式数据。
可选的,S103、处理器根据指针和链式数据预取标识预取链式数据,可以包括:
内存控制器根据指针和链式数据预取标识获取链式数据,并存储链式数据。
具体的,内存控制器可以根据链式数据预取标识获知需要返回的数据为一个指针,并且可以根据该指针进行链式数据预取,将链式数据提前存储在内存控制器中。这样,当处理器需要获取该链式数据时,节省了进行内存读取的时间,降低了链式数据内存访问的延迟,提高了链式数据预取的效率和准确率,进而提升了处理器读取数据的效率。
需要说明,内存控制器根据加载地址获取指针,并将指针返回至处理器核,以及内存控制器根据指针获取链式数据,并存储链式数据,可以参考本申请人申请的另一篇发明名称为《数据预取方法和内存控制器》的发明专利申请。
表1 汇编代码示例
Figure BDA0001295914800000111
进一步的,结合上述实施例一、实施例二、实施例三和实施例四,通过汇编代码的一个示例,详细说明本发明提供的数据预取的实现方法。请参见表1。表1为一个汇编代码示例。
1、处理器核取到表1中编号1的汇编代码时,经过译码,产生链式数据预取标志iflag=1,指示地址(offset($head))中存储的数据为指针。经过执行阶段,计算出访存的虚地址。在访存阶段经过虚实地址转换后,向L1 Cache发出访存请求。访存请求中包括链式数据预取标志iflag=1、加载地址offset($head)。
2、如果在L1 Cache中命中该加载地址offset($head),则返回请求数据(包含指针的cache行)。同时,地址提取器提取出返回请求数据中的指针,存储在地址寄存器中。L1Cache根据指针进行预取操作。也即,以写入$cu的值作为地址,预取一个cache行或多个cache行。当处理器取到表1中编号2的汇编代码时,就可以在cache中直接命中(L1 Cache命中或者L2 Cache命中)。
3、如果在L1 Cache中未命中该加载地址offset($head),则将加载地址和iflag位发送给L2 Cache,在L2 Cache中进行查找。在L2-Cache中查找offset($head),可能命中也可能不命中。
如果在L2 Cache中命中加载地址offset($head),则返回请求数据。在一种实现方式中,L2-Cache将写入$cu的值发送给内存控制器,由内存控制器进行预取操作。为了节省面积,预取返回的值(链式数据)存储在内存控制器中,而不返回L2 Cache。L2 Cache中可以不设置虚实地址转换装置。
如果在L2 Cache中没有命中加载地址offset($head),则将iflag位和加载地址发送给内存控制器。
4、内存控制器根据iflag位和加载地址offset($head),返回请求数据,并将要写入$cu的数值作为地址进行预取操作,将预取结果存储在内存控制器中。
随后,表1中编号3、4的汇编代码与编号1、2的汇编代码相似,也如上述工作和预取过程。
图8为本发明实施例提供的处理器的结构示意图。本实施例提供的处理器,用于执行图2~图7所示实施例提供的数据预取的实现方法。如图8所示,本实施例提供的处理器,可以包括:
处理器核21,用于取访存指令,访存指令指示将待访问数据从存储器中加载到处理器核21中。若待访问数据为指针,则对访存指令译码,生成访存请求。访存请求包括加载地址和链式数据预取标识,加载地址中存储待访问数据,链式数据预取标识指示了待访问数据为指针,指针指向链式数据。
存储部件,用于根据加载地址获取指针,并根据指针和链式数据预取标识预取链式数据。
其中,存储部件可以包括一级高速缓冲存储器22、二级高速缓冲存储器23和内存控制器24。
其中,一级高速缓冲存储器22、二级高速缓冲存储器23和内存控制器24均通过软件程序与硬件相结合的方式实现,硬件可以包括电路、芯片等。
需要说明,本实施例对于处理器核21、一级高速缓冲存储器22、二级高速缓冲存储器23和内存控制器24之间的连接方式不做限定,可以采用现有处理器中的连接方式。
可选的,一级高速缓冲存储器22可以包括控制模块221、预取标识寄存器222、地址提取器223和地址寄存器224,地址提取器223与地址寄存器224连接。其中,作为一种实现方式,本实施例中的预取标识寄存器222、地址提取器223和地址寄存器224可以组成图1中的预取器16,实现数据预取功能。
控制模块221具体用于,将链式数据预取标识存储在预取标识寄存器222中。判断一级高速缓冲存储器中是否命中加载地址。
地址提取器223具体用于,若一级高速缓冲存储器中命中加载地址,根据加载地址获得加载地址中存储的指针,并将指针存储在地址寄存器224中。
控制模块221具体用于,将指针返回至处理器核。
其中,控制模块221可以实现一级高速缓冲存储器在数据访存过程中的控制功能,可以通过软件程序实现,也可以通过软件程序与硬件相结合的方式实现,本实施例对此不做限定。
预取标识寄存器222为一级高速缓冲存储器22中的一个存储部件,用于存储链式数据预取标识。本实施例对于预取标识寄存器222的具体实现方式不做限定,例如可以为易挥发性随机存取存储器(RamdomAccessMemory,RAM)等。其中,预取标识寄存器222可以为新增的存储部件,也可以是一级高速缓冲存储器22中现有的存储部件用于存储链式数据预取标识,本实施例不做特别限定。
地址寄存器224为一级高速缓冲存储器22中的一个存储部件,用于在链式数据预取过程中缓存地址。本实施例对于地址寄存器224的具体实现方式不做限定,例如可以为RAM等。其中,地址寄存器224可以为新增的存储部件,也可以是一级高速缓冲存储器22中现有的存储部件用于在链式数据预取过程中缓存地址,本实施例不做特别限定。
地址提取器223可以从一个cache行中快速提取出需要的数据。需要说明,地址提取器223可以通过硬件实现,本实施例对于地址提取器223的具体结构不做限定,可以通过电路、芯片等实现。可选的,作为一种实现方式,图9为本发明实施例提供的地址提取器的结构示意图。如图9所示,地址提取器223有两个输入,分别是Cache行和加载地址。Cache行中包含了加载地址中存储的指针。加载地址的低地址位(Offset)指明了指针在该Cache行中的具体位置。地址提取器223根据加载地址的offset域,从Cache行中找到指针,并进行输出。因此,地址提取器223只有一个输出,该输出结果放入地址寄存器224。
可选的,控制模块221具体用于,判断一级高速缓冲存储器中是否命中指针。若一级高速缓冲存储器中没有命中指针,则将指针发送至二级高速缓冲存储器。
二级高速缓冲存储器23具体用于,判断二级高速缓冲存储器中是否命中指针。若二级高速缓冲存储器中命中指针,则根据指针获得链式数据,并将链式数据返回至一级高速缓冲存储器。
可选的,二级高速缓冲存储器23还用于,若二级高速缓冲存储器中没有命中指针,将指针发送至内存控制器。
内存控制器24用于,根据指针获取链式数据,并将链式数据返回至二级高速缓冲存储器。
可选的,控制模块221还用于,若一级高速缓冲存储器中没有命中加载地址,将加载地址和链式数据预取标识发送至二级高速缓冲存储器。
二级高速缓冲存储器23还用于,判断二级高速缓冲存储器中是否命中加载地址。若二级高速缓冲存储器中命中加载地址,根据加载地址获得加载地址中存储的指针,并将指针返回至处理器核。
可选的,二级高速缓冲存储器23具体用于,将指针发送至内存控制器。
内存控制器24具体用于,根据指针获取链式数据,并存储链式数据。
可选的,地址提取器223具体用于,将指针存储在地址寄存器224中。
控制模块221具体用于,根据指针预取链式数据。
可选的,二级高速缓冲存储器23还用于,
若二级高速缓冲存储器中没有命中加载地址,将加载地址和链式数据预取标识发送至内存控制器。
内存控制器24还用于,根据加载地址获取指针,并将指针返回至处理器核。
可选的,内存控制器24具体用于,根据指针和链式数据预取标识获取链式数据,并存储链式数据。
本实施例提供的处理器,用于执行图2~图7所示方法实施例提供的数据预取的实现方法,其技术原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (16)

1.一种数据预取的实现方法,其特征在于,包括:
处理器取访存指令,所述访存指令指示将待访问数据从存储器中加载到处理器核中;
若所述待访问数据为指针,则所述处理器对所述访存指令译码,生成访存请求;所述访存请求包括加载地址和链式数据预取标识,所述加载地址中存储所述待访问数据,所述链式数据预取标识指示了所述待访问数据为指针,所述指针指向链式数据;
所述处理器根据所述加载地址获取所述指针,并根据所述指针和所述链式数据预取标识预取所述链式数据;
其中,所述处理器包括一级高速缓冲存储器,所述一级高速缓冲存储器包括控制模块、地址提取器和地址寄存器,所述地址提取器与所述地址寄存器连接;
所述处理器根据所述加载地址获取所述指针,包括:
若一级高速缓冲存储器中命中所述加载地址,则所述地址提取器根据所述加载地址获得所述加载地址中存储的所述指针,并将所述指针存储在所述地址寄存器中;
所述控制模块将所述指针返回至所述处理器核。
2.根据权利要求1所述的方法,其特征在于,所述处理器还包括处理器核、二级高速缓冲存储器和内存控制器,所述一级高速缓冲存储器还包括预取标识寄存器;所述处理器根据所述加载地址获取所述指针,还包括:
所述控制模块将所述链式数据预取标识存储在所述预取标识寄存器中;
所述控制模块判断所述一级高速缓冲存储器中是否命中所述加载地址。
3.根据权利要求2所述的方法,其特征在于,所述处理器根据所述指针和所述链式数据预取标识预取所述链式数据,包括:
所述控制模块判断所述一级高速缓冲存储器中是否命中所述指针;
若所述一级高速缓冲存储器中没有命中所述指针,则所述控制模块将所述指针发送至所述二级高速缓冲存储器;
所述二级高速缓冲存储器判断所述二级高速缓冲存储器中是否命中所述指针;
若所述二级高速缓冲存储器中命中所述指针,则所述二级高速缓冲存储器根据所述指针获得所述链式数据,并将所述链式数据返回至所述一级高速缓冲存储器。
4.根据权利要求3所述的方法,其特征在于,还包括:
若所述二级高速缓冲存储器中没有命中所述指针,则所述二级高速缓冲存储器将所述指针发送至所述内存控制器;
所述内存控制器根据所述指针获取所述链式数据,并将所述链式数据返回至所述二级高速缓冲存储器。
5.根据权利要求2所述的方法,其特征在于,还包括:
若所述一级高速缓冲存储器中没有命中所述加载地址,则所述控制模块将所述加载地址和所述链式数据预取标识发送至所述二级高速缓冲存储器;
所述二级高速缓冲存储器判断所述二级高速缓冲存储器中是否命中所述加载地址;
若所述二级高速缓冲存储器中命中所述加载地址,则所述二级高速缓冲存储器根据所述加载地址获得所述加载地址中存储的所述指针,并将所述指针返回至所述处理器核。
6.根据权利要求5所述的方法,其特征在于,所述处理器根据所述指针和所述链式数据预取标识预取所述链式数据,包括:
所述二级高速缓冲存储器将所述指针发送至所述内存控制器;
所述内存控制器根据所述指针获取所述链式数据,并存储所述链式数据。
7.根据权利要求5所述的方法,其特征在于,所述处理器根据所述指针和所述链式数据预取标识预取所述链式数据,包括:
所述地址提取器将所述指针存储在所述地址寄存器中;
所述控制模块根据所述指针预取所述链式数据。
8.根据权利要求5所述的方法,其特征在于,还包括:
若所述二级高速缓冲存储器中没有命中所述加载地址,则所述二级高速缓冲存储器将所述加载地址和所述链式数据预取标识发送至所述内存控制器;
所述内存控制器根据所述加载地址获取所述指针,并将所述指针返回至所述处理器核。
9.一种处理器,其特征在于,包括:
处理器核,用于取访存指令,所述访存指令指示将待访问数据从存储器中加载到处理器核中;若所述待访问数据为指针,则对所述访存指令译码,生成访存请求;所述访存请求包括加载地址和链式数据预取标识,所述加载地址中存储所述待访问数据,所述链式数据预取标识指示了所述待访问数据为指针,所述指针指向链式数据;
存储部件,用于根据所述加载地址获取所述指针,并根据所述指针和所述链式数据预取标识预取所述链式数据;
其中,所述存储部件包括一级高速缓冲存储器,所述一级高速缓冲存储器包括控制模块、地址提取器和地址寄存器,所述地址提取器与所述地址寄存器连接;
所述地址提取器具体用于,若所述一级高速缓冲存储器中命中所述加载地址,根据所述加载地址获得所述加载地址中存储的所述指针,并将所述指针存储在所述地址寄存器中;
所述控制模块具体用于,将所述指针返回至所述处理器核。
10.根据权利要求9所述的处理器,其特征在于,所述存储部件还包括二级高速缓冲存储器和内存控制器,所述一级高速缓冲存储器还包括预取标识寄存器;
所述控制模块具体用于,将所述链式数据预取标识存储在所述预取标识寄存器中;判断所述一级高速缓冲存储器中是否命中所述加载地址。
11.根据权利要求10所述的处理器,其特征在于,所述控制模块具体用于,判断所述一级高速缓冲存储器中是否命中所述指针;若所述一级高速缓冲存储器中没有命中所述指针,则将所述指针发送至所述二级高速缓冲存储器;
所述二级高速缓冲存储器具体用于,判断所述二级高速缓冲存储器中是否命中所述指针;若所述二级高速缓冲存储器中命中所述指针,则根据所述指针获得所述链式数据,并将所述链式数据返回至所述一级高速缓冲存储器。
12.根据权利要求11所述的处理器,其特征在于,
所述二级高速缓冲存储器还用于,若所述二级高速缓冲存储器中没有命中所述指针,将所述指针发送至所述内存控制器;
所述内存控制器用于,根据所述指针获取所述链式数据,并将所述链式数据返回至所述二级高速缓冲存储器。
13.根据权利要求10所述的处理器,其特征在于,
所述控制模块还用于,若所述一级高速缓冲存储器中没有命中所述加载地址,将所述加载地址和所述链式数据预取标识发送至所述二级高速缓冲存储器;
所述二级高速缓冲存储器还用于,判断所述二级高速缓冲存储器中是否命中所述加载地址;若所述二级高速缓冲存储器中命中所述加载地址,根据所述加载地址获得所述加载地址中存储的所述指针,并将所述指针返回至所述处理器核。
14.根据权利要求13所述的处理器,其特征在于,所述二级高速缓冲存储器具体用于,将所述指针发送至所述内存控制器;
所述内存控制器具体用于,根据所述指针获取所述链式数据,并存储所述链式数据。
15.根据权利要求13所述的处理器,其特征在于,所述地址提取器具体用于,将所述指针存储在所述地址寄存器中;
所述控制模块具体用于,根据所述指针预取所述链式数据。
16.根据权利要求13所述的处理器,其特征在于,所述二级高速缓冲存储器还用于,
若所述二级高速缓冲存储器中没有命中所述加载地址,将所述加载地址和所述链式数据预取标识发送至所述内存控制器;
所述内存控制器还用于,根据所述加载地址获取所述指针,并将所述指针返回至所述处理器核。
CN201710343785.6A 2017-05-16 2017-05-16 数据预取的实现方法和处理器 Active CN108874690B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710343785.6A CN108874690B (zh) 2017-05-16 2017-05-16 数据预取的实现方法和处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710343785.6A CN108874690B (zh) 2017-05-16 2017-05-16 数据预取的实现方法和处理器

Publications (2)

Publication Number Publication Date
CN108874690A CN108874690A (zh) 2018-11-23
CN108874690B true CN108874690B (zh) 2020-12-15

Family

ID=64320600

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710343785.6A Active CN108874690B (zh) 2017-05-16 2017-05-16 数据预取的实现方法和处理器

Country Status (1)

Country Link
CN (1) CN108874690B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111538679B (zh) * 2020-05-12 2023-06-06 中国电子科技集团公司第十四研究所 一种基于内嵌dma的处理器数据预取方法
CN112527395B (zh) * 2020-11-20 2023-03-07 海光信息技术股份有限公司 数据预取方法和数据处理装置
CN117251387A (zh) * 2022-06-10 2023-12-19 华为技术有限公司 一种数据预取方法、编译方法及相关装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561766B (zh) * 2009-05-26 2011-06-15 北京理工大学 一种支持多核帮助线程的低开销的块同步方法
CN102779098B (zh) * 2012-06-14 2016-04-20 国家超级计算深圳中心(深圳云计算中心) 混合缓存的协同式自适应预取方法、装置和系统
CN103729142B (zh) * 2012-10-10 2016-12-21 华为技术有限公司 内存数据的推送方法及装置
US9424309B2 (en) * 2013-01-09 2016-08-23 Indian Institute Of Technology Bombay Method for optimizing performance of database/web-service backed applications by automatically prefetching query results
CN104750696B (zh) * 2013-12-26 2018-07-20 华为技术有限公司 一种数据预取方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向非规则大数据分析应用的多核帮助线程预取方法;张建勋等;《通信学报》;20140831;第35卷(第8期);137-146 *

Also Published As

Publication number Publication date
CN108874690A (zh) 2018-11-23

Similar Documents

Publication Publication Date Title
US9632776B2 (en) Preload instruction control
CN106537362B (zh) 数据处理装置和在数据处理装置中处理地址转换的方法
US7769983B2 (en) Caching instructions for a multiple-state processor
EP1891530B1 (en) Configurable cache system depending on instruction type
US20090006803A1 (en) L2 Cache/Nest Address Translation
US7680985B2 (en) Method and apparatus for accessing a split cache directory
US9690707B2 (en) Correlation-based instruction prefetching
CN112416817B (zh) 预取方法、信息处理装置、设备以及存储介质
TW201351145A (zh) 指令快取的減少耗能
US7937530B2 (en) Method and apparatus for accessing a cache with an effective address
CN108874691B (zh) 数据预取方法和内存控制器
WO2005088455A2 (en) Cache memory prefetcher
US20100011165A1 (en) Cache management systems and methods
US6915415B2 (en) Method and apparatus for mapping software prefetch instructions to hardware prefetch logic
CN112579175B (zh) 分支预测方法、分支预测装置和处理器核
CN108874690B (zh) 数据预取的实现方法和处理器
CN105446898B (zh) 用于数据处理的装置及方法
US10552334B2 (en) Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
US8195889B2 (en) Hybrid region CAM for region prefetcher and methods thereof
US8661169B2 (en) Copying data to a cache using direct memory access
CN116521578A (zh) 一种提高指令缓存预取执行效率的芯片系统及方法
US20210081323A1 (en) Method of improving l1 icache performance with large programs
CN111198827B (zh) 页表预取方法及装置
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses
US20070239939A1 (en) Apparatus for Performing Stream Prefetch within a Multiprocessor System

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.