CN107193757B - 数据预取方法、处理器和设备 - Google Patents
数据预取方法、处理器和设备 Download PDFInfo
- Publication number
- CN107193757B CN107193757B CN201710344881.2A CN201710344881A CN107193757B CN 107193757 B CN107193757 B CN 107193757B CN 201710344881 A CN201710344881 A CN 201710344881A CN 107193757 B CN107193757 B CN 107193757B
- Authority
- CN
- China
- Prior art keywords
- data
- accessed
- mode
- operation code
- access mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing 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 DataStructure,简称LDS)(例如指针,链表,栈,图)等不规则数据集。
处理器在取数时需要执行访存指令,从而将数据从存储器中取到处理器核中。而对于数据的预取,处理器需要分析当前处理器的访存模式和访存规律,然后按照此模式或规律提前将随后可能用到的数据取到处理器中。由于处理器预取是基于之前的访存操作对随后的访存操作进行预测,因此对于规律比较简单的访存模式,比较容易通过传统的顺序预取或者跨步预取获得较高性能。但是,对于链式数据结构,往往是先加载指针,然后再以该指针进行访存。由于处理器无法对指针进行准确预测,因此,使用传统的预取方法对链式数据结构进行预取,往往会导致较低的预取效率和准确率。
发明内容
本发明提供一种数据预取方法、处理器和设备,提升了数据预取的效率和准确率。
本发明提供的数据预取方法,包括:
取访存指令,所述访存指令指示将指定数据长度的待访问数据从存储器中加载到处理器核中,且指示按照指定的访存模式预取数据;
对所述访存指令译码,生成访存请求;所述访存请求包括预取标识,所述预取标识指示了所述指定的访存模式;
执行所述访存请求,以将所述待访问数据从所述存储器中加载到所述处理器核中,并根据所述预取标识按照所述指定的访存模式预取数据。
本发明提供的处理器,包括:
处理器核,用于取访存指令,所述访存指令指示将指定数据长度的待访问数据从存储器中加载到处理器核中,且指示按照指定的访存模式预取数据;对所述访存指令译码,生成访存请求;所述访存请求包括预取标识,所述预取标识指示了所述指定的访存模式;
存储部件,用于执行所述访存请求,以将所述待访问数据从所述存储器中加载到所述处理器核中,并根据所述预取标识按照所述指定的访存模式预取数据。
本发明提供的计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任一实施例提供的数据预取方法。
本发明提供了一种数据预取方法、处理器和设备,通过访存指令,可以给处理器提供明确的访存模式提示,处理器可以直接根据指定的访存模式完成数据预取,提升了处理器的处理效率、数据预取效率和准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据预取方法的流程图;
图2为本发明实施例提供的数据存储模型示意图;
图3为本发明实施例提供的访存指令的一种实现方式的结构示意图;
图4为本发明实施例提供的访存指令的另一种实现方式的结构示意图;
图5为本发明实施例提供的处理器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的数据预取方法,可以适用于基于链式数据结构的预取技术,也适用于其他的预取技术。
需要说明,本发明实施例提供的访存指令,也可以适用于本申请人申请的发明名称为《数据预取方法和内存控制器》以及发明名称为《数据预取的实现方法和处理器》的专利申请中涉及的访存指令(也是译码后的访存请求)的相关内容。
图1为本发明实施例提供的数据预取方法的流程图。本实施例提供的数据预取方法,执行主体可以为处理器。处理器可以包括处理器核、高速缓冲存储器(Cache Memory,简称Cache)和内存控制器,Cache可以包括一级缓存(L1Cache)和二级缓存(L2Cache)。如图1所示,本实施例提供的数据预取方法,可以包括:
S101、取访存指令。
其中,访存指令为处理器指令集中的一种存储器数据加载指令。该访存指令指示将指定数据长度的待访问数据从存储器中加载到处理器核中,且指示按照指定的访存模式预取数据。在程序代码具体实现时,访存指令可以为程序员人为插入的,也可以是编译器根据程序特点自动编译生成的。其中,存储器可以包括Cache和内存。
可见,本实施例提供的访存指令,可以区分不同数据长度的数据加载,以及区分不同访存模式的数据预取。通过访存指令,可以为处理器提供明确的访存模式提示。从而,处理器不需要在众多访存模式中自行选择一种,而是可以直接根据访存指令指定的访存模式完成数据预取,提升了数据预取效率和准确性。
可选的,数据长度可以包括:字节(Byte)、半字(Half Word)、字(Word)、双字(Double Word、DWord)和四字(Quad Word,QWord)。
在计算机中,用二进制表示的0或者1称为一位,也称为比特(bit)。8位称为1个字节,即,8bit=1Byte。两个字节是一个字,也称为双字节,即,2Byte=1Word=16bit。两个字是一个双字,即,2Word=1DWord=4Byte=32bit。两个双字是一个四字,即,2DWord=1QWord=8Byte=64bit。
需要说明的是,数据长度还可以包括其他的数据长度,本实施例不做特别限定。
可选的,访存模式可以包括:顺序方式、跨步方式、链式数据访存方式和间接索引访存方式。
下面结合数据存储模型、不同访存模式对应的程序代码,对上述的顺序方式、跨步方式、链式数据访存方式和间接索引访存方式进行详细说明。
表1示出了不同访存模式对应的程序代码的一种示例。图2为本发明实施例提供的数据存储模型示意图。在图2中,假设每一行均为一个cache行。其中,数组A包括21个数据,分别为A[0]~A[20],存储在第1~3行。数组B包括8个数据,分别为B[0]~B[7],存储在第7~8行。数据a、b、c、d、e为链式数据,存储在第4~7行。请参照表1和图2。
1、顺序方式
所谓顺序方式,是指一个接一个地连续取数。程序代码可以参考表1中第1行的示例。
假设,针对图2中的数组A,访存指令指示了将A[3]从存储器中加载到处理器核中。则每次取cache时,将同时预取下一行。即,取A[3]所在第一行的同时预取第二行,连续读取16个数据。这样,当处理器后续要访问A[8]时,就无需再从存储器中读取了。
2、跨步方式
所谓跨步方式,是指按照一定的规律间隔取数。程序代码可以参考表1中第2行的示例。
假设,针对图2中的数组A,取数间隔为15,则取数顺序为A[3]、A[18]。访存指令指示了将A[3]从存储器中加载到处理器核中。则每次取cache时,将按照取数间隔同时预取相应的行。即,取A[3]所在第一行的同时预取第三行。这样,当处理器后续要访问A[18]时,就无需再从存储器中读取了。
3、链式数据访存方式
所谓链式数据,物理存储上表现为不连续或者根本没有规律性。对于链式数据,上一个链式数据通常指示了下一个链式数据的存储位置。例如,将上一次取出来的数值(或者加上一个偏移量)作为地址再进行取数。链式数据访存方式对应的程序代码可以参考表1中第3行的示例。
假设,针对图2中的数据a~e,取数过程可以为a->b->c->d->e。访存指令指示了将b从存储器中加载到处理器核中。则预取的cache行将根据取得的数据来决定。即,将b所在的第4行取入cache的同时,由于b(加上某一偏移量)将会作为下一次的访存地址,因此将下一次的访存地址所在的数据行(第7行)进行预取。这样,当处理器后续要访问数据c时,就无需再从存储器中读取了。
表1:不同访存模式对应的程序代码
4、间接索引访存方式
间接索引访存方式每次需要对存储器进行两次访问。通常,将初始偏移量(数组索引)加上基地址得到的值再作为偏移量,然后加上某一基地址得到最终的数据地址。间接索引访存方式对应的程序代码可以参考表1中第4行的示例。
假设,针对图2中的数组A、B,取数过程可以为A[B[0]]->A[B[1]]->…。访存指令指示了将B[0]从存储器中加载到处理器核中。则从存储器得到B[0]的值的同时,计算A[B[0]]的地址,提前预取A[B[0]]。同样,若访存指令指示了将B[1]从存储器中加载到处理器核中。则从存储器得到B[1]的值的同时,计算A[B[1]]的地址,提前预取A[B[1]]。
需要说明的是,访存模式还可以包括其他的访存模式,本实施例不做特别限定。
S102、对访存指令译码,生成访存请求。
其中,访存请求可以包括预取标识,预取标识指示了指定的访存模式。
具体的,访存请求由处理器核根据访存指令译码生成,处理器核将访存请求发送给存储部件,由存储部件执行。本发明对于访存请求的具体实现方式和访存请求中包括的其他信息不做限定。本发明中的访存请求是在现有访存请求的基础上包括预取标识,用于指示访存模式。访存请求还包括加载地址,该加载地址中存储有待访问数据。
需要说明,本发明对于预取标识的实现方式不做限定。可选的,可以通过设置预取标识的不同取值指示不同的访存模式。例如,预取标识的取值为1、2、3、4时,分别对应了顺序方式、跨步方式、链式数据访存方式和间接索引访存方式。可选的,每一种访存模式对应一个预取标识,访存指令指定的访存模式对应的预取标识的取值可以为1,其他未指定的访存模式对应的预取标识的取值可以为0。例如,预取标识可以包括顺序预取标识、跨步预取标识、链式数据预取标识和间接索引预取标识,分别对应于顺序方式、跨步方式、链式数据访存方式和间接索引访存方式。若链式数据预取标识取值为1,则说明链式数据访存方式为指定的访存模式。
S103、执行访存请求,以将待访问数据从存储器中加载到处理器核中,并根据预取标识按照指定的访存模式预取数据。
具体的,处理器核在完成访存指令的译码之后,将生成的访存请求发送给存储部件。存储部件执行该访存请求。由于访存请求中包括的预取标识指示了指定的访存模式,因此,存储部件可以实现将待访问数据从存储器中加载到处理器核中,并根据预取标识指示的访存模式预取数据。
可见,本实施例提供的数据预取方法,在处理器指令集中增加了可以区分访存模式和数据长度的访存指令。通过访存指令,可以给处理器提供明确的访存模式提示,处理器可以直接根据指定的访存模式完成数据预取,提升了处理器的处理效率、数据预取效率和准确性。
进一步地,作为访存指令的一种具体实现方式,访存指令可以包括:第一指令码、源寄存器编号、目的寄存器编号和地址偏移值。
其中,第一指令码指示了待访问数据的数据长度以及访存模式,源寄存器存储待访问数据在存储器中的基地址,地址偏移值指示了待访问数据在存储器中的偏移地址,目的寄存器位于处理器核中、存储待访问数据。
具体的,通过访存指令中的第一指令码,可以实现指定数据长度的加载以及指定访存模式的数据预取。此时,访存指令可以称为分离模式。
在该种实现方式下,处理器待执行的访存指令通过处理器的取指令操作预先存储在处理器中,存储形式如图3所示,图3为本发明实施例提供的访存指令的一种实现方式的结构示意图。其中,opcode表示第一指令码,base表示源寄存器编号,rt表示目的寄存器编号,offset表示地址偏移值。本实施例对于opcode、base、rt、offset分别占用的比特数以及存储顺序不做特别限定。
在该种实现方式下,访存指令对应的汇编指令可以为:
opcode$rt,offset($base)
其中,本实施例对于汇编指令中各个参数的顺序不做限定。
表2访存指令中第一指令码示例
表3第一操作码~第二十作码示例
数据长度 | 顺序方式 | 跨步方式 | 链式数据访存方式 | 间接索引访存方式 |
字节 | LB-STM | LB-STD | LB-LDS | LB-II |
半字 | LH-STM | LH-STD | LH-LDS | LH-II |
字 | LW-STM | LW-STD | LW-LDS | LW-II |
双字 | LD-STM | LD-STD | LD-LDS | LD-II |
四字 | LQ-STM | LQ-STD | LQ-LDS | LQ-II |
可选的,作为第一指令码的实现方式,请参照表2。作为第一操作码~第二十操作码的一种示例,请参见表3。
第一指令码可以为第一操作码,第一操作码指示了待访问数据的数据长度为字节、访存模式为顺序方式;或者,
第一指令码可以为第二操作码,第二操作码指示了待访问数据的数据长度为半字、访存模式为顺序方式;或者,
第一指令码可以为第三操作码,第三操作码指示了待访问数据的数据长度为字、访存模式为顺序方式;或者,
第一指令码可以为第四操作码,第四操作码指示了待访问数据的数据长度为双字、访存模式为顺序方式;或者,
第一指令码可以为第五操作码,第五操作码指示了待访问数据的数据长度为四字、访存模式为顺序方式;或者,
第一指令码可以为第六操作码,第六操作码指示了待访问数据的数据长度为字节、访存模式为跨步方式;或者,
第一指令码可以为第七操作码,第七操作码指示了待访问数据的数据长度为半字、访存模式为跨步方式;或者,
第一指令码可以为第八操作码,第八操作码指示了待访问数据的数据长度为字、访存模式为跨步方式;或者,
第一指令码可以为第九操作码,第九操作码指示了待访问数据的数据长度为双字、访存模式为跨步方式;或者,
第一指令码可以为第十操作码,第十操作码指示了待访问数据的数据长度为四字、访存模式为跨步方式;或者,
第一指令码可以为第十一操作码,第十一操作码指示了待访问数据的数据长度为字节、访存模式为链式数据访存方式;或者,
第一指令码可以为第十二操作码,第十二操作码指示了待访问数据的数据长度为半字、访存模式为链式数据访存方式;或者,
第一指令码可以为第十三操作码,第十三操作码指示了待访问数据的数据长度为字、访存模式为链式数据访存方式;或者,
第一指令码可以为第十四操作码,第十四操作码指示了待访问数据的数据长度为双字、访存模式为链式数据访存方式;或者,
第一指令码可以为第十五操作码,第十五操作码指示了待访问数据的数据长度为四字、访存模式为链式数据访存方式;或者,
第一指令码可以为第十六操作码,第十六操作码指示了待访问数据的数据长度为字节、访存模式为间接索引访存方式;或者,
第一指令码可以为第十七操作码,第十七操作码指示了待访问数据的数据长度为半字、访存模式为间接索引访存方式;或者,
第一指令码可以为第十八操作码,第十八操作码指示了待访问数据的数据长度为字、访存模式为间接索引访存方式;或者,
第一指令码可以为第十九操作码,第十九操作码指示了待访问数据的数据长度为双字、访存模式为间接索引访存方式;或者,
第一指令码可以为第二十操作码,第二十操作码指示了待访问数据的数据长度为四字、访存模式为间接索引访存方式。
根据表3,下面通过几个示例说明上述实施方式提供的访存指令。
1)访存指令的汇编指令可以为:LH-STM$base_a,$x,$i;
该访存指令指示了将一个半字长度的数据从存储器的地址($base_a+$i)加载到处理器核(编号为$x的寄存器)中,并按照顺序方式预取数据。
2)访存指令的汇编指令可以为:LW-LDS$base_a,$x,$i
该访存指令指示了将一个字长度的数据从存储器的地址($base_a+$i)加载到处理器核(编号为$x的寄存器)中,并按照链式数据预取方式预取数据。
3)访存指令的汇编指令可以为:LD-II$base_a,$x,$i
该访存指令指示了将一个双字长度的数据从存储器的地址($base_a+$i)加载到处理器核(编号为$x的寄存器)中,并按照间接索引访存方式预取数据。
需要说明,表3仅是第一操作码~第二十操作码的一种示例,本实施例对于第一操作码~第二十操作码的实现方式不做限定。
进一步地,作为访存指令的另一种具体实现方式,访存指令可以包括:第二指令码、源寄存器编号、目的寄存器编号、地址偏移值和模式值。
其中,第二指令码指示了待访问数据的数据长度,模式值指示了访存模式,源寄存器存储待访问数据在存储器中的基地址,地址偏移值指示了待访问数据在存储器中的偏移地址,目的寄存器位于处理器核中、存储待访问数据。
具体的,通过访存指令中的第二指令码,可以实现指定数据长度的加载,通过访存指令中的模式值,可以实现指定访存模式的数据预取。此时,访存指令可以称为聚合模式,聚合模式与分离模式相对应。当指令集架构中的剩余指令槽充足时,可以选择使用分离模式。当指令集架构中的剩余指令槽比较有限时,可以选择使用聚合模式。
在该种实现方式下,处理器待执行的访存指令通过处理器的取指令操作预先存储在处理器中,存储形式如图4所示,图4为本发明实施例提供的访存指令的另一种实现方式的结构示意图。其中,opcode表示第二指令码,base表示源寄存器编号,rt表示目的寄存器编号,offset表示地址偏移值,mode表示模式值。本实施例对于opcode、base、rt、offset、mode分别占用的比特数以及存储顺序不做特别限定。例如,mode可以占用3比特,二进制取值可以为000、001、010、011、100、101、110、111,每个取值对应一种访存模式,共计对应8种访存模式。
在该种实现方式下,访存指令对应的汇编指令可以为:
opcode$rt,offset($base),mode
其中,本实施例对于汇编指令中各个参数的顺序不做限定。
可选的,作为第二指令码的实现方式,请参照表4。作为第二十一操作码~第二十五操作码的一种示例,请参见表5。
第二指令码可以为第二十一操作码,第二十一操作码指示了待访问数据的数据长度为字节;或者,
第二指令码可以为第二十二操作码,第二十二操作码指示了待访问数据的数据长度为半字;或者,
第二指令码可以为第二十三操作码,第二十三操作码指示了待访问数据的数据长度为字;或者,
第二指令码可以为第二十四操作码,第二十四操作码指示了待访问数据的数据长度为双字;或者,
第二指令码可以为第二十五操作码,第二十五操作码指示了待访问数据的数据长度为四字。
表4访存指令中第二指令码和模式值示例
表5第二十一操作码~第二十五操作码、第一数值~第四数值示例
可选的,作为模式值的实现方式,请参照表4。作为第一数值~第四数值的一种示例,请参见表5,取值为十进制数值。其中,
模式值可以为第一数值,第一数值指示了访存模式为顺序方式;或者,
模式值可以为第二数值,第二数值指示了访存模式为跨步方式;或者,
模式值可以为第三数值,第三数值指示了访存模式为链式数据访存方式;或者,
模式值可以为第四数值,第四数值指示了访存模式为间接索引访存方式。
根据表5,下面通过几个示例说明上述实施方式提供的访存指令。
1)访存指令的汇编指令可以为:LW-M$base_a,$x,1,$i
该访存指令指示了将一个字长度的数据从存储器的地址($base_a+$i)加载到处理器核(编号为$x的寄存器)中,并按照跨步方式(模式值为1)预取数据。
2)访存指令的汇编指令可以为:LW-M$base_a,$x,2,$i
该访存指令指示了将一个字长度的数据从存储器的地址($base_a+$i)加载到处理器核(编号为$x的寄存器)中,并按照链式数据预取方式(模式值为1)预取数据。
3)访存指令的汇编指令可以为:LD-M$base_a,$x,3,$i
该访存指令指示了将一个双字长度的数据从存储器的地址($base_a+$i)加载到处理器核(编号为$x的寄存器)中,并按照间接索引方式预取数据。
需要说明,表5仅是第二十一操作码~第二十五操作码、第一数值~第四数值的一种示例,本实施例对于第二十一操作码~第二十五操作码、第一数值~第四数值的实现方式不做限定。
本实施例提供了一种数据预取方法,包括:取访存指令,访存指令指示将指定数据长度的待访问数据从存储器中加载到处理器核中,且指示按照指定的访存模式预取数据,对访存指令译码,生成访存请求,访存请求包括预取标识,预取标识指示了指定的访存模式,执行访存请求,以将待访问数据从存储器中加载到处理器核中,并根据预取标识按照指定的访存模式预取数据。本实施例提供的数据预取方法,访存指令可以区分数据长度和访存模式,通过访存指令可以给处理器提供明确的访存模式提示,处理器直接根据指定的访存模式完成数据预取,提升了处理器的处理效率、数据预取效率和准确性。
图5为本发明实施例提供的处理器的结构示意图。本实施例提供的处理器,用于执行图1~图4所示实施例提供的数据预取方法。如图5所示,本实施例提供的处理器,可以包括:
处理器核11,用于取访存指令,访存指令指示将指定数据长度的待访问数据从存储器中加载到处理器核中,且指示按照指定的访存模式预取数据。对访存指令译码,生成访存请求,访存请求包括预取标识,预取标识指示了指定的访存模式。
存储部件12,用于执行访存请求,以将待访问数据从存储器中加载到处理器核中,并根据预取标识按照指定的访存模式预取数据。
其中,存储部件12可以包括一级高速缓冲存储器、二级高速缓冲存储器和内存控制器。
可选的,访存模式包括:顺序方式、跨步方式、链式数据访存方式和间接索引访存方式。
可选的,数据长度包括:字节、半字、字、双字和四字。
可选的,访存指令包括:第一指令码、源寄存器编号、目的寄存器编号和地址偏移值;
第一指令码指示了待访问数据的数据长度以及访存模式,源寄存器存储待访问数据在存储器中的基地址,地址偏移值指示了待访问数据在存储器中的偏移地址,目的寄存器位于处理器核中、存储待访问数据。
可选的,第一指令码为第一操作码,第一操作码指示了待访问数据的数据长度为字节、访存模式为顺序方式;或者,
第一指令码为第二操作码,第二操作码指示了待访问数据的数据长度为半字、访存模式为顺序方式;或者,
第一指令码为第三操作码,第三操作码指示了待访问数据的数据长度为字、访存模式为顺序方式;或者,
第一指令码为第四操作码,第四操作码指示了待访问数据的数据长度为双字、访存模式为顺序方式;或者,
第一指令码为第五操作码,第五操作码指示了待访问数据的数据长度为四字、访存模式为顺序方式;或者,
第一指令码为第六操作码,第六操作码指示了待访问数据的数据长度为字节、访存模式为跨步方式;或者,
第一指令码为第七操作码,第七操作码指示了待访问数据的数据长度为半字、访存模式为跨步方式;或者,
第一指令码为第八操作码,第八操作码指示了待访问数据的数据长度为字、访存模式为跨步方式;或者,
第一指令码为第九操作码,第九操作码指示了待访问数据的数据长度为双字、访存模式为跨步方式;或者,
第一指令码为第十操作码,第十操作码指示了待访问数据的数据长度为四字、访存模式为跨步方式;或者,
第一指令码为第十一操作码,第十一操作码指示了待访问数据的数据长度为字节、访存模式为链式数据访存方式;或者,
第一指令码为第十二操作码,第十二操作码指示了待访问数据的数据长度为半字、访存模式为链式数据访存方式;或者,
第一指令码为第十三操作码,第十三操作码指示了待访问数据的数据长度为字、访存模式为链式数据访存方式;或者,
第一指令码为第十四操作码,第十四操作码指示了待访问数据的数据长度为双字、访存模式为链式数据访存方式;或者,
第一指令码为第十五作码,第十五操作码指示了待访问数据的数据长度为四字、访存模式为链式数据访存方式;或者,
第一指令码为第十六操作码,第十六操作码指示了待访问数据的数据长度为字节、访存模式为间接索引访存方式;或者,
第一指令码为第十七操作码,第十七操作码指示了待访问数据的数据长度为半字、访存模式为间接索引访存方式;或者,
第一指令码为第十八操作码,第十八操作码指示了待访问数据的数据长度为字、访存模式为间接索引访存方式;或者,
第一指令码为第十九操作码,第十九操作码指示了待访问数据的数据长度为双字、访存模式为间接索引访存方式;或者,
第一指令码为第二十作码,第二十操作码指示了待访问数据的数据长度为四字、访存模式为间接索引访存方式。
可选的,访存指令包括:第二指令码、源寄存器编号、目的寄存器编号、地址偏移值和模式值;
第二指令码指示了待访问数据的数据长度,模式值指示了访存模式,源寄存器存储待访问数据在存储器中的基地址,地址偏移值指示了待访问数据在存储器中的偏移地址,目的寄存器位于处理器核中、存储待访问数据。
可选的,第二指令码为第二十一操作码,第二十一操作码指示了待访问数据的数据长度为字节;或者,
第二指令码为第二十二操作码,第二十二操作码指示了待访问数据的数据长度为半字;或者,
第二指令码为第二十三操作码,第二十三操作码指示了待访问数据的数据长度为字;或者,
第二指令码为第二十四操作码,第二十四操作码指示了待访问数据的数据长度为双字;或者,
第二指令码为第二十五操作码,第二十五操作码指示了待访问数据的数据长度为四字。
可选的,模式值为第一数值,第一数值指示了访存模式为顺序方式;或者,
模式值为第二数值,第二数值指示了访存模式为跨步方式;或者,
模式值为第三数值,第三数值指示了访存模式为链式数据访存方式;或者,
模式值为第四数值,第四数值指示了访存模式为间接索引访存方式。
本实施例提供的处理器,用于执行图1~图4所示方法实施例提供的数据预取方法,其技术原理和技术效果类似,此处不再赘述。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现图1~图4任一方法实施例提供的数据预取方法的方法步骤。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种数据预取方法,其特征在于,包括:
取访存指令,所述访存指令指示将指定数据长度的待访问数据从存储器中加载到处理器核中,且指示按照指定的访存模式预取数据;
对所述访存指令译码,生成访存请求;所述访存请求包括预取标识,所述预取标识指示了所述指定的访存模式;
执行所述访存请求,以将所述待访问数据从所述存储器中加载到所述处理器核中,并根据所述预取标识按照所述指定的访存模式预取数据。
2.根据权利要求1所述的方法,其特征在于,所述访存模式包括:顺序方式、跨步方式、链式数据访存方式和间接索引访存方式。
3.根据权利要求1所述的方法,其特征在于,所述数据长度包括:字节、半字、字、双字和四字。
4.根据权利要求1所述的方法,其特征在于,所述访存指令包括:第一指令码、源寄存器编号、目的寄存器编号和地址偏移值;
所述第一指令码指示了所述待访问数据的数据长度以及访存模式,所述源寄存器存储所述待访问数据在存储器中的基地址,所述地址偏移值指示了所述待访问数据在存储器中的偏移地址,所述目的寄存器位于所述处理器核中、存储所述待访问数据。
5.根据权利要求4所述的方法,其特征在于,所述第一指令码为下列中的至少一种情况:
所述第一指令码为第一操作码,所述第一操作码指示了所述待访问数据的数据长度为字节、所述访存模式为顺序方式;
所述第一指令码为第二操作码,所述第二操作码指示了所述待访问数据的数据长度为半字、所述访存模式为顺序方式;
所述第一指令码为第三操作码,所述第三操作码指示了所述待访问数据的数据长度为字、所述访存模式为顺序方式;
所述第一指令码为第四操作码,所述第四操作码指示了所述待访问数据的数据长度为双字、所述访存模式为顺序方式;
所述第一指令码为第五操作码,所述第五操作码指示了所述待访问数据的数据长度为四字、所述访存模式为顺序方式;
所述第一指令码为第六操作码,所述第六操作码指示了所述待访问数据的数据长度为字节、所述访存模式为跨步方式;
所述第一指令码为第七操作码,所述第七操作码指示了所述待访问数据的数据长度为半字、所述访存模式为跨步方式;
所述第一指令码为第八操作码,所述第八操作码指示了所述待访问数据的数据长度为字、所述访存模式为跨步方式;
所述第一指令码为第九操作码,所述第九操作码指示了所述待访问数据的数据长度为双字、所述访存模式为跨步方式;
所述第一指令码为第十操作码,所述第十操作码指示了所述待访问数据的数据长度为四字、所述访存模式为跨步方式;
所述第一指令码为第十一操作码,所述第十一操作码指示了所述待访问数据的数据长度为字节、所述访存模式为链式数据访存方式;
所述第一指令码为第十二操作码,所述第十二操作码指示了所述待访问数据的数据长度为半字、所述访存模式为链式数据访存方式;
所述第一指令码为第十三操作码,所述第十三操作码指示了所述待访问数据的数据长度为字、所述访存模式为链式数据访存方式;
所述第一指令码为第十四操作码,所述第十四操作码指示了所述待访问数据的数据长度为双字、所述访存模式为链式数据访存方式;
所述第一指令码为第十五操作码,所述第十五操作码指示了所述待访问数据的数据长度为四字、所述访存模式为链式数据访存方式;
所述第一指令码为第十六操作码,所述第十六操作码指示了所述待访问数据的数据长度为字节、所述访存模式为间接索引访存方式;
所述第一指令码为第十七操作码,所述第十七操作码指示了所述待访问数据的数据长度为半字、所述访存模式为间接索引访存方式;
所述第一指令码为第十八操作码,所述第十八操作码指示了所述待访问数据的数据长度为字、所述访存模式为间接索引访存方式;
所述第一指令码为第十九操作码,所述第十九操作码指示了所述待访问数据的数据长度为双字、所述访存模式为间接索引访存方式;
所述第一指令码为第二十操作码,所述第二十操作码指示了所述待访问数据的数据长度为四字、所述访存模式为间接索引访存方式。
6.根据权利要求1所述的方法,其特征在于,所述访存指令包括:第二指令码、源寄存器编号、目的寄存器编号、地址偏移值和模式值;
所述第二指令码指示了所述待访问数据的数据长度,所述模式值指示了访存模式,所述源寄存器存储所述待访问数据在存储器中的基地址,所述地址偏移值指示了所述待访问数据在存储器中的偏移地址,所述目的寄存器位于所述处理器核中、存储所述待访问数据。
7.根据权利要求6所述的方法,其特征在于,所述第二指令码为下列中的至少一种情况:
所述第二指令码为第二十一操作码,所述第二十一操作码指示了所述待访问数据的数据长度为字节;
所述第二指令码为第二十二操作码,所述第二十二操作码指示了所述待访问数据的数据长度为半字;
所述第二指令码为第二十三操作码,所述第二十三操作码指示了所述待访问数据的数据长度为字;
所述第二指令码为第二十四操作码,所述第二十四操作码指示了所述待访问数据的数据长度为双字;
所述第二指令码为第二十五操作码,所述第二十五操作码指示了所述待访问数据的数据长度为四字。
8.根据权利要求6所述的方法,其特征在于,所述模式值为下列中的至少一种情况:
所述模式值为第一数值,所述第一数值指示了所述访存模式为顺序方式;
所述模式值为第二数值,所述第二数值指示了所述访存模式为跨步方式;
所述模式值为第三数值,所述第三数值指示了所述访存模式为链式数据访存方式;
所述模式值为第四数值,所述第四数值指示了所述访存模式为间接索引访存方式。
9.一种处理器,其特征在于,包括:
处理器核,用于取访存指令,所述访存指令指示将指定数据长度的待访问数据从存储器中加载到处理器核中,且指示按照指定的访存模式预取数据;对所述访存指令译码,生成访存请求;所述访存请求包括预取标识,所述预取标识指示了所述指定的访存模式;
存储部件,用于执行所述访存请求,以将所述待访问数据从所述存储器中加载到所述处理器核中,并根据所述预取标识按照所述指定的访存模式预取数据;所述存储部件包括一级高速缓冲存储器、二级高速缓冲存储器和内存控制器。
10.根据权利要求9所述的处理器,其特征在于,所述访存模式包括:顺序方式、跨步方式、链式数据访存方式和间接索引访存方式。
11.根据权利要求9所述的处理器,其特征在于,所述数据长度包括:字节、半字、字、双字和四字。
12.根据权利要求9所述的处理器,其特征在于,所述访存指令包括:第一指令码、源寄存器编号、目的寄存器编号和地址偏移值;
所述第一指令码指示了所述待访问数据的数据长度以及访存模式,所述源寄存器存储所述待访问数据在存储器中的基地址,所述地址偏移值指示了所述待访问数据在存储器中的偏移地址,所述目的寄存器位于所述处理器核中、存储所述待访问数据。
13.根据权利要求9所述的处理器,其特征在于,所述访存指令包括:第二指令码、源寄存器编号、目的寄存器编号、地址偏移值和模式值;
所述第二指令码指示了所述待访问数据的数据长度,所述模式值指示了访存模式,所述源寄存器存储所述待访问数据在存储器中的基地址,所述地址偏移值指示了所述待访问数据在存储器中的偏移地址,所述目的寄存器位于所述处理器核中、存储所述待访问数据。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述权利要求1-8中任意一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710344881.2A CN107193757B (zh) | 2017-05-16 | 2017-05-16 | 数据预取方法、处理器和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710344881.2A CN107193757B (zh) | 2017-05-16 | 2017-05-16 | 数据预取方法、处理器和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107193757A CN107193757A (zh) | 2017-09-22 |
CN107193757B true CN107193757B (zh) | 2020-03-13 |
Family
ID=59872743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710344881.2A Active CN107193757B (zh) | 2017-05-16 | 2017-05-16 | 数据预取方法、处理器和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193757B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128703A (en) * | 1997-09-05 | 2000-10-03 | Integrated Device Technology, Inc. | Method and apparatus for memory prefetch operation of volatile non-coherent data |
CN1650260A (zh) * | 2002-05-01 | 2005-08-03 | 皇家飞利浦电子股份有限公司 | 基于存储区的数据预取 |
CN101105773A (zh) * | 2007-08-20 | 2008-01-16 | 杭州华三通信技术有限公司 | 一种利用缓存实现数据存储的方法和装置 |
US7660933B2 (en) * | 2007-10-11 | 2010-02-09 | Broadcom Corporation | Memory and I/O bridge |
CN104699465A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 向量处理器中支持simt的向量访存装置和控制方法 |
CN104820659A (zh) * | 2015-05-28 | 2015-08-05 | 东南大学 | 一种面向粗粒度可重构系统的多模式动态可配高速访存接口 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040243767A1 (en) * | 2003-06-02 | 2004-12-02 | Cierniak Michal J. | Method and apparatus for prefetching based upon type identifier tags |
-
2017
- 2017-05-16 CN CN201710344881.2A patent/CN107193757B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128703A (en) * | 1997-09-05 | 2000-10-03 | Integrated Device Technology, Inc. | Method and apparatus for memory prefetch operation of volatile non-coherent data |
CN1650260A (zh) * | 2002-05-01 | 2005-08-03 | 皇家飞利浦电子股份有限公司 | 基于存储区的数据预取 |
CN101105773A (zh) * | 2007-08-20 | 2008-01-16 | 杭州华三通信技术有限公司 | 一种利用缓存实现数据存储的方法和装置 |
US7660933B2 (en) * | 2007-10-11 | 2010-02-09 | Broadcom Corporation | Memory and I/O bridge |
CN104699465A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 向量处理器中支持simt的向量访存装置和控制方法 |
CN104820659A (zh) * | 2015-05-28 | 2015-08-05 | 东南大学 | 一种面向粗粒度可重构系统的多模式动态可配高速访存接口 |
Also Published As
Publication number | Publication date |
---|---|
CN107193757A (zh) | 2017-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6274672B2 (ja) | 装置および方法 | |
KR101581177B1 (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
EP2923266B1 (en) | Software and hardware coordinated prefetch | |
US20200364054A1 (en) | Processor subroutine cache | |
JP7244046B2 (ja) | 遠隔アトミックオペレーションの空間的・時間的マージ | |
US20150227366A1 (en) | Processor with granular add immediates capability & methods | |
US10261790B2 (en) | Memory copy instructions, processors, methods, and systems | |
KR20170097008A (ko) | 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치 | |
US7802078B2 (en) | REP MOVE string instruction execution by selecting loop microinstruction sequence or unrolled sequence based on flag state indicative of low count repeat | |
US10241810B2 (en) | Instruction-optimizing processor with branch-count table in hardware | |
JP6687232B2 (ja) | データ投機実行のためのシステム、装置および方法 | |
KR20150079809A (ko) | 축소된 다중 네스트된 루프들의 벡터화 | |
JP2017539008A (ja) | データ投機実行のためのシステム、装置および方法 | |
JP6807073B2 (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
JP2021051727A (ja) | グラフアプリケーション内の圧縮されたリストに効率的にアクセスするための間接参照のロード及びストアへのisaサポートのシステム及び方法 | |
JP6457836B2 (ja) | プロセッサおよび命令コード生成装置 | |
US10761979B2 (en) | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value | |
EP3568755A1 (en) | Implementation of register renaming, call-return prediction and prefetch | |
US11934830B2 (en) | Method and apparatus for data-ready memory operations | |
CN107193757B (zh) | 数据预取方法、处理器和设备 | |
CN108241506B (zh) | 对基于高性能串的循环加速器中的加载做控制推测的方法 | |
JP2012150634A (ja) | ベクトル命令制御回路及びリストベクトルの追い越し制御方法 | |
US10255072B2 (en) | Architectural register replacement for instructions that use multiple architectural registers | |
CN104615408A (zh) | 微处理器、集成电路与提供微码指令储存空间的方法 | |
TWI751990B (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 | ||
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. |
|
CP01 | Change in the name or title of a patent holder |