CN114546488B - 一种向量跨步指令的实现方法、装置、设备及存储介质 - Google Patents
一种向量跨步指令的实现方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114546488B CN114546488B CN202210437981.0A CN202210437981A CN114546488B CN 114546488 B CN114546488 B CN 114546488B CN 202210437981 A CN202210437981 A CN 202210437981A CN 114546488 B CN114546488 B CN 114546488B
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- access
- data
- stride
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种向量跨步指令的实现方法、装置、设备及存储介质,该方法包括:从指令计数器所指的地址处,获取向量跨步指令;根据RISC‑V指令集的编码格式,对获取的向量跨步指令进行译码后,根据译码信息确定指令操作信息;将向量跨步指令和指令操作信息发送到对应的执行部件;执行向量跨步指令,以通过TLB和缓存聚合访问从内存中获取每个元素的地址所指的数据;将访问获取的数据合并后写回到向量跨步指令的目的寄存器中。本发明实现了减少指令执行延迟,降低执行功耗,并提升处理器性能的目的,同时具有实现简单、使用灵活的优点。
Description
技术领域
本发明涉及微处理器的数据访存技术领域,尤其涉及一种向量跨步指令的实现方法、装置、设备及存储介质。
背景技术
RISC-V是第五代精简指令集的缩写,是目前使用较广泛的一种精简指令集。RISC-V指令集中提供了丰富的指令类型,提高了程序编写的灵活性。RISC-V指令集中提供了一种向量跨步指令,例如指令,向量跨步指令的操作元素为64位,获取的存储地址一般不是连续的,相邻元素之间的地址间隔为源寄存器rs2中指定的固定值。假设向量跨步指令vlse64.v的源寄存器rs1所指的基地址为a,跨步访问步长为源寄存器rs2中的值k,如图1所示,那么第一个元素的内存地址为基地址a,第二个元素的内存地址为,第n个元素的内存地址为。由于每个向量跨步指令的元素个数为64位,将从每个元素的内存地址处获取64位数据,然后将数据合并后存放到一个向量跨步指令的目的寄存器vd中。
由于向量跨步指令的每个元素所指向的数据在内存中不是连续的,可能相隔较远,因此在实现时,最直接的实现方法就是将每个元素的访问进行拆分,独立访问内存,每个元素获得数据之后再将数据进行合并,并生成最终的结果。在具有虚拟系统的微处理器上,向量跨步指令的执行过程为:第一个元素计算出访存的虚拟地址a,经过虚拟地址到物理地址的转换后得到物理地址,然后访问存储,将地址处的数据取回,并暂存在临时数据存储中;第二个元素将计算出访存的虚拟地址,经过虚拟地址到物理地址的转换后得到物理地址,然后访问存储,将地址处的数据取回,将数据和第一个元素的数据合并后暂存在临时数据存储中;以此类推,待最后一个元素将数据从存储中取回,最后合并临时数据存储中已有的数据,将结果写到结果总线上,作为向量跨步指令的最终结果并写入对应的寄存器。这样的实现方法不能挖掘该类指令的访存特征,存在访存次数过多,延迟较高,浪费功耗的问题。
发明内容
基于此,本发明提供一种向量跨步指令的实现方法、装置、设备及存储介质,以解决现有方法不能挖掘该类指令的访存特征,存在访存次数过多,延迟较高,浪费功耗的问题。
基于上述目的,本发明提供一种向量跨步指令的实现方法,包括:
从指令计数器所指的地址处,获取向量跨步指令;
根据RISC-V指令集的编码格式,对获取的所述向量跨步指令进行译码后,根据译码信息确定指令操作信息;
将所述向量跨步指令和所述指令操作信息发送到对应的执行部件;
执行所述向量跨步指令,以通过TLB和缓存聚合访问从内存中获取每个元素的地址所指的数据;
将访问获取的数据合并后写回到所述向量跨步指令的目的寄存器中。
优选地,所述指令操作信息包含指令操作码、元素个数、目的操作数寄存器号和从源操作数寄存器号获取的源操作数;所述通过TLB和缓存聚合访问从内存中获取每个元素的地址所指的数据,包括:
根据所述指令操作信息中的元素个数和源操作数,计算元素访问的虚拟页面的数量,并根据多个所述虚拟页面通过TLB聚合访问得到的物理页面地址,获取每个元素的物理地址;
计算所述元素访问的缓存行的数量,并基于每个所述元素的物理地址,访问多个所述缓存行获取每个元素的数据;
将每个所述元素访问获取的数据进行格式转换,得到标准格式的数据。
优选地,所述源操作数包括第一源寄存器中的访存首地址和第二源寄存器的跨步大小;所述根据所述指令操作信息中的元素个数和源操作数,计算元素访问的虚拟页面的数量,并根据多个所述虚拟页面通过TLB聚合访问得到的物理页面地址,获取每个元素的物理地,包括:
获取虚拟页面的大小、虚拟页面内地址位数、元素个数、第一源寄存器中的访存首地址以及第二源寄存器中的跨步大小;
根据所述跨步大小和所述虚拟页面的大小判断所述元素是否满足TLB聚合访问条件;
若是,则计算所述元素访问的虚拟页面的数量,该虚拟页面的数量计算公式为:
其中,N为所述虚拟页面的数量;a为所述第一源寄存器中的访存首地址;k为所述第二源寄存器中的跨步大小;m为所述虚拟页面内地址位数;M为所述虚拟页面的大小;n为所述元素个数;表示取所述访存首地址a的低m位;
根据元素序号和所述访存首地址获取每个所述元素的页内偏移量,与根据N个所述虚拟页面通过TLB聚合访问得到的物理页面地址进行拼接,获取每个所述元素的物理地址。
优选地,所述计算所述元素访问的缓存行的数量,并基于每个所述元素的物理地址,访问多个所述缓存行获取每个元素的数据,包括:
获取缓存行的大小、物理页面内地址位数、元素个数、第一源寄存器中的访存首地址以及第二源寄存器中的跨步大小;
根据所述跨步大小和所述缓存行的大小判断所述元素是否满足缓存聚合访问条件;
若是,则计算所述元素访问的缓存行的数量,该缓存行的数量计算公式为:
从首个所述元素的物理地址开始,顺序访问C个所述缓存行,并从C个所述缓存行中,根据每个所述元素的物理地址获取对应的数据。
优选地,所述的向量跨步指令的实现方法,还包括:
根据所述向量跨步指令的访问特征,生成多个包含预取地址的预取请求;
将所述预取地址进行TLB虚实地址转换,得到物理地址,并在判断到所述物理地址不在缓存中时,将所述预取请求发送至下一级存储,等待下一级存储返回预取数据后,将所述预取数据存放到缓存中。
优选地,所述译码信息包括指令操作码、元素个数、源操作数寄存器号和目的操作数寄存器号;所述根据译码信息确定指令操作信息,包括:
从所述译码信息中的源操作数寄存器号获取源操作数,并与所述译码信息中的指令操作码、元素个数和目的操作数寄存器号进行组合,得到指令操作信息。
此外,本发明还提供一种向量跨步指令的实现装置,包括:
指令获取模块,用于从指令计数器所指的地址处,获取向量跨步指令;
指令译码模块,用于根据RISC-V指令集的编码格式,对获取的所述向量跨步指令进行译码后,根据译码信息确定指令操作信息;
指令发送模块,用于将所述向量跨步指令和所述指令操作信息发送到对应的执行部件;
指令执行模块,用于执行所述向量跨步指令,以通过TLB和缓存聚合访问从内存中获取每个元素的地址所指的数据;
结果写回模块,用于将访问获取的数据合并后写回到所述向量跨步指令的目的寄存器中。
优选地,所述指令执行模块包括:
TLB聚合访问子模块,用于根据所述指令操作信息中的元素个数和源操作数,计算元素访问的虚拟页面的数量,并根据多个所述虚拟页面通过TLB聚合访问得到的物理页面地址,获取每个元素的物理地址;
缓存聚合访问子模块,用于计算所述元素访问的缓存行的数量,并基于每个所述元素的物理地址,访问多个所述缓存行获取每个元素的数据;
数据整理子模块,用于将每个所述元素访问获取的数据进行格式转换,得到标准格式的数据。
基于同一个发明构思,本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的向量跨步指令的实现方法。
基于同一个发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令用于使计算机执行如实现上述任一项所述的向量跨步指令的实现方法。
本发明提供的向量跨步指令的实现方法、装置、设备及存储介质,从指令计数器所指的地址处获取向量跨步指令之后,首先对获取的向量跨步指令进行译码,并根据译码信息确定指令操作信息,然后将指令和指令操作信息发送到对应的执行部件,以通过TLB和缓存聚合访问将每个元素的地址所指的数据从内存中获取,并将数据合并后写回到目的寄存器中,本发明可以实现减少指令执行延迟,降低执行功耗,提升处理器性能的目的,同时具有实现简单、使用灵活的优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明背景技术中RISC-V向量跨步指令的访存示例图;
图2为本发明一实施例中向量跨步指令的实现方法的流程示意图;
图3为本发明一实施例中向量跨步指令的实现方法步骤S40的流程示意图;
图4为本发明一实施例中向量跨步指令的实现装置的结构示意图;
图5为本发明一实施例中向量跨步指令的实现装置的指令执行模块的结构示意图;
图6为本发明另一实施例中向量跨步指令的实现装置的结构示意图;
图7为本发明一实施例中电子设备的示意图。
具体实施方式
为使本发明所要解决的技术问题、技术方案及有益效果更为清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明中涉及的部分名词解释如下:
TLB:Translation Look-aside Buffer,地址变换高速缓存。
如图2所示,本发明一实施例提供的一种向量跨步指令的实现方法,具体包括以下步骤:
步骤S10,指令获取,从程序计数器所指的地址处,获取向量跨步指令。
其中,向量跨步指令为RISC-V指令集中的一种数据访存指令;程序计数器是微处理器中的寄存器,包含当前正在执行的指令的地址,当每个指令被获取之后,程序计数器的存储地址加一,也即指向顺序中的下一个指令。
具体的,步骤S10与普通处理器的指令获取过程相同,也即从程序计数器所指的地址处,获取当前正在运行的向量跨步指令。
步骤S20,指令译码,根据RISC-V指令集的编码格式,对获取的向量跨步指令进行译码后,根据译码信息确定指令操作信息。
在本实施例中,指令操作信息包含指令操作码、元素个数、目的操作数寄存器号、从源操作数寄存器中获取的源操作数等信息。可选地,源操作数寄存器包含用于存储访问首地址a的第一源寄存器rs1和用于存储跨步大小k的第二源寄存器rs2。
具体的,根据RISC-V向量扩展中的指令格式,对步骤S10获取的向量跨步指令进行译码,得到向量跨步指令的译码信息,译码信息包括但不限于指令操作码、元素个数、源操作数寄存器号、目的操作数寄存器号等信息;进一步地,从源操作数寄存器号中获取源操作数,并与译码信息中的指令操作码、元素个数和目的操作数寄存器号组合,得到指令操作信息。
进一步地,对于微处理器,在指令译码后,对向量跨步指令的目的寄存器进行重命名操作。
步骤S30,指令发送,将向量跨步指令和指令操作信息发送到对应的执行部件。
也即,将向量跨步指令协同指令操作信息,发送到执行部件,以通过执行部件执行向量跨步指令;其中,向量跨步指令的执行部件为微处理器的存储执行部件。
步骤S40,指令执行,执行向量跨步指令,以通过TLB和缓存聚合访问(即TLB和Cache聚合访问)从内存中获取每个元素的地址所指的数据。
在本实施例中,TLB和Cache聚合访问是指,利用向量跨步指令中元素之间访问地址具有固定跨步的特征,根据指令操作信息中的元素个数和源操作数计算所有元素需要访问的虚拟页面的数量和缓存行(即Cache行)的数量之后,先基于多个虚拟页面通过TLB聚合访问得到的物理页面地址,获得的每个元素的物理地址,再基于每个元素的物理地址,访问多个缓存行获取所有元素的数据。其中,源操作数包括第一源寄存器rs1中的访存首地址a和第二源寄存器rs2的跨步大小k;虚拟页面的数量为TLB访问次数,缓存行的数量为Cache访问次数。
步骤S50,结果写回,将访问获取的数据合并后写回到向量跨步指令的目的寄存器中。
本实施例中,通过步骤S10至步骤S50将当前的向量跨步指令的功能执行完成,并将结果写到寄存器文件中,即可确定整个向量跨步指令的生命周期已完成。
由上述可知,本实施例提供的向量跨步指令的实现方法,从指令计数器所指的地址处获取向量跨步指令之后,首先对获取的向量跨步指令进行译码,并根据译码信息确定指令操作信息,然后将指令和指令操作信息发送到对应的执行部件,以通过TLB和Cache聚合访问将每个元素的地址所指的数据从内存中获取,并将数据合并后写回到目的寄存器中,该方法可以实现减少指令执行延迟,降低执行功耗,提升处理器性能的目的,同时具有实现简单、使用灵活的优点。
在一可选实施例中,如图3所示,步骤S40中通过TLB和Cache聚合访问从内存中获取每个元素的地址所指的数据,包括以下步骤:
步骤S401,TLB聚合访问,根据指令操作信息中的元素个数和源操作数,计算元素访问的虚拟页面的数量,并根据多个虚拟页面通过TLB聚合访问的物理页面地址,获取每个元素的物理地址。
在具有虚拟系统的微处理器中,向量跨步指令计算出的地址为虚拟地址,要访问内存需要经过虚拟地址到物理地址的转换。由于向量跨步指令的跨步为常数,每个元素的访问地址是按照跨步递增的,具有较强的规律性。如果每个元素都进行TLB访问,那么n个元素将进行n次的TLB访问,实际中,n个元素很可能只分布在少数页面上,甚至在同一个页面上,那么n次的TLB访问至少需要n个时钟周期,另外还会有n次的访问功耗。本实施例利用向量跨步指令的访问特征,通过指令操作信息中的元素个数n和源操作数计算出所有元素需要访问的虚拟页面的数量,并由虚拟页面的数量来确定TLB访问次数,从而达到减少TLB访问次数,减少指令执行延迟和TLB访问功耗的目的。
作为优选,在源操作数包括第一源寄存器中的访存首地址以及第二源寄存器中的跨步大小时,步骤S401包括以下步骤:
步骤S4012,根据跨步大小k和虚拟页面的大小M判断元素是否满足TLB聚合访问条件;
步骤S4013,若是,则计算所有元素访问的虚拟页面的数量N,该虚拟页面的数量计算公式为:
步骤S4014,根据元素序号和访存首地址获取每个元素的页内偏移量,与根据N个虚拟页面通过TLB聚合访问得到的物理页面地址进行拼接,获取每个元素的物理地址。
在本实施例中,若检测到跨步大小k小于虚拟页面的大小M,即,则判定元素满足TLB聚合访问条件,此时可以根据上述公式(1)计算所有元素需要访问的虚拟页面的数量N,对于N个页面的虚拟地址,从首个元素的地址a开始,顺序访问N个页面即可;而若检测到跨步大小k大于或等于虚拟页面的大小M,即,则判断元素不满足TLB聚合访问条件, 此时可以确定所有访问都处于不同的页面,不能进行TLB聚合访问,需要单独计算每个元素需要访问的虚拟页面,再逐个进行TLB访问。
进一步地,对于每个元素的物理地址,首先根据首个元素的地址a和元素序号i得到每个元素的页内偏移量offset,然后与根据N个连续的虚拟页面通过TLB聚合访问得到N个不连续的物理页面地址进行拼接,得到完整的物理地址。其中,第i个元素的页内偏移量offset的计算公式为:
可理解的,本实施例采用TLB聚合访问,一方面通过简单运算可以完成所有元素需要访问的虚拟页面的计算,可以减少地址计算量,缩短指令执行延迟,并降低硬件开销;另一方面同一个页面的访问通过聚合访问的方式,利用单个TLB访问实现了多个元素共享页面的访问,可以减少TLB访问次数,从而减少TLB访问功耗。
步骤S402,Cache聚合访问,计算元素访问的缓存行的数量,并基于每个元素的物理地址,访问多个缓存行获取每个元素的数据。
微处理器中一般集成了多级Cache,由于Cache中缓存了最近常访问的数据,可以降低访问存储的延迟。与TLB访问相同,如果按照单个元素访问,那么一个具有n个元素的向量跨步指令将进行n次的Cache访问,指令执行延迟较长,并且指令执行功耗高。本实施例利用向量跨步指令中元素之间访问地址具有固定跨步的特征(即向量跨步指令的访问特征),将Cache访问进行聚合,可以减少Cache访问次数,缩短指令执行延迟,降低Cache访问功耗,提高处理器性能。
作为优选,步骤S402包括以下步骤:
步骤S4022,根据跨步大小k和缓存行的大小B判断元素是否满足Cache聚合访问条件;
步骤S4023,若是,则计算元素访问的缓存行的数量C,该缓存行的数量计算公式为:
步骤S4024,从首个元素的物理地址开始,顺序访问C个缓存行,并从C个缓存行中,根据每个元素的物理地址获取对应的数据。
在本实施例中,若检测到跨步大小k小于缓存行的大小B,即,则判定元素满足Cache聚合访问条件,此时可以根据上述公式(3)计算所有元素需要访问的缓存行的数量C,此时由于缓存行的大小B远远大于虚拟页面的大小M,因此C个缓存行在相同的一个页面或者相邻的两个页面上;而若检测到跨步大小k大于或等于缓存行的大小B,即,则判断元素不满足Cache聚合访问条件,此时可以确定所有访问都处于不同的缓存行,不能进行Cache聚合访问,需要根据每个元素的物理地址进行Cache访问。
进一步地,从首个元素的物理地址开始,顺序访问C个缓存行,并从C个缓存行中,根据每个元素的物理地址获取n个元素的数据。
步骤S403,数据整理,将每个元素聚合访问获取的数据进行格式转换,得到标准格式的数据。
具体的,将每个元素聚合访问获取的数据,根据元素个数、大小端对齐等信息,对数据进行格式转换,得到标准格式的数据。
在一可选实施例中,所述向量跨步指令的实现方法,还包括以下步骤:
步骤S60,预取请求生成,根据向量跨步指令的访问特征,生成多个包含预取地址的预取请求。
在本实施例中,利用向量跨步指令的访问特征,可以根据当前的向量跨步指令访问的最后一个数据的虚拟地址,预测出下一个的向量跨步指令访问数据的候选地址。
假设当前的向量跨步指令访问的最后一个数据的虚拟地址为,那么可以预测出下一个的向量跨步指令访问候选地址为、处的数据,根据上述特征,可以生成多个预取请求,其中多个预取请求是指两个或两个以上的预取请求。此时,当下一次循环执行到同一个向量跨步指令时,该向量跨步指令对应的数据已预取到Cache中,从Cache中获取数据而无需从内存中获取数据,可以降低数据访问延迟,提高微处理器性能。
可选地,预取请求的数量与候选地址的数量相同,并且预取请求的预取地址取决于候选地址,可以为,也即,当候选地址为、时,可以生成两个预取请求,分别为包含预取地址为的第一预取请求,以及包含预取地址为的第二预取请求。
步骤S70,预取请求发送,将预取地址进行TLB虚实地址转换,得到物理地址,并在判断到物理地址不在Cache时,将预取请求发送至下一级存储,等待下一级存储返回预取数据后,将预取数据存放到Cache中。
具体的,微处理器首先将预取地址进行TLB虚实地址转换,得到对应的物理地址,然后访问Cache,判断物理地址是否在Cache中,若物理地址在Cache中,则驳回预取请求,也即确定Cache中包含下一个向量跨步指令对应的预取数据,无需向下一级存储发送预取请求;而若物理地址不在Cache中,则将预取请求发送至下一级存储,并在接收到下一级存储返回的数据后,将返回的数据作为预取数据存放到Cache中。
需要说明的是,预取请求生成与预取请求发送可以发生在指令执行的任何时机,也可以发生在指令执行之后。
可理解的,本实施例可以根据当前的向量跨步指令的访问特征生成预取请求,并根据预取请求将未来的向量跨步指令需要访问的数据提前取至Cache中,进一步提升了微处理器性能。
此外,如图4所示,与上述任意实施例方法相对应的,本发明一实施例还提供了一种向量跨步指令的实现装置,包括指令获取模块110、指令译码模块120、指令发送模块130、指令执行模块140和结果写回模块150,各功能模块的详细说明如下:
指令获取模块110,用于从指令计数器所指的地址处,获取向量跨步指令;
指令译码模块120,用于根据RISC-V指令集的编码格式,对获取的向量跨步指令进行译码后,根据译码信息确定指令操作信息;
指令发送模块130,用于将向量跨步指令和指令操作信息发送到对应的执行部件;
指令执行模块140,用于执行向量跨步指令,以通过TLB和缓存聚合访问从内存中获取每个元素的地址所指的数据;
结果写回模块150,用于将访问获取的数据合并后写回到向量跨步指令的目的寄存器中。
在一可选实施例中,所述指令译码模块120包括信息处理子模块,用于从译码信息中的源操作数寄存器号获取源操作数,并与译码信息中的指令操作码、元素个数和目的操作数寄存器号进行组合,得到指令操作信息。
在一可选实施例中,如图5所示,所述指令执行模块140包括以下TLB聚合访问子模块141、缓存聚合访问子模块142和数据整理子模块143,各功能子模块的详细说明如下:
TLB聚合访问子模块141,用于根据指令操作信息中的元素个数和源操作数,计算元素访问的虚拟页面的数量,并根据多个虚拟页面通过TLB聚合访问的物理页面地址,获取每个元素的物理地址;
缓存聚合访问子模块142,用于计算元素访问的缓存行的数量,并基于每个元素的物理地址,访问多个缓存行获取每个元素的数据;
数据整理子模块143,用于将每个元素访问获取的数据进行格式转换,得到标准格式的数据。
在一可选实施例中,所述TLB聚合访问子模块141包括以下单元,各功能单元的详细说明如下:
初始化单元,用于获取虚拟页面的大小、虚拟页面内地址位数、元素个数、第一源寄存器中的访存首地址以及第二源寄存器中的跨步大小;
TLB聚合访问检测单元,用于根据跨步大小和虚拟页面的大小判断元素是否满足TLB聚合访问条件;
页面数计算单元,用于若是,则计算元素访问的虚拟页面的数量,该虚拟页面的数量计算公式为:
物理地址获取单元,用于根据元素序号和访存首地址获取每个元素的页内偏移量,与根据N个虚拟页面通过TLB聚合访问得到的物理页面地址进行拼接,获取每个元素的物理地址。
在一可选实施例中,所述缓存聚合访问子模块142包括以下单元,各功能单元的详细说明如下:
初始化单元,用于获取缓存行的大小、物理页面内地址位数、元素个数、第一源寄存器中的访存首地址以及第二源寄存器中的跨步大小;
缓存聚合访问检测单元,用于根据跨步大小和缓存行的大小判断元素是否满足缓存聚合访问条件;
缓存行计算单元,用于若是,则计算元素访问的缓存行的数量,该缓存行的数量计算公式为:
缓存聚合访问单元,用于从首个元素的物理地址开始,顺序访问C个缓存行,并从C个缓存行中,根据每个元素的物理地址获取对应的数据。
在一可选实施例中,如图6所示,所述向量跨步指令的实现装置还包括预取请求生成模块160和预取请求发送模块170,各功能模块的详细说明如下:
预取请求生成模块160,用于根据向量跨步指令的访问特征,生成多个包含预取地址的预取请求;
预取请求发送模块170,用于将预取地址进行TLB虚实地址转换,得到物理地址,并在判断到物理地址不在缓存中时,将预取请求发送至下一级存储,等待下一级存储返回预取数据后,将预取数据存放到缓存中。
上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本发明一实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的向量跨步指令的实现方法。
图7示出了本实施例所提供的一种更为具体的电子设备硬件示意图,该设备可以包括:处理器100、存储器200、输入/输出接口300、通信接口400和总线500。其中处理器100、存储器200、输入/输出接口300与通信接口400、总线500实现彼此之间在设备内部的通信连接。
处理器100可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit, ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本发明实施例所提供的技术方案。
存储器200可以采用ROM (Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备、动态存储设备等形式实现。存储器200可以存储操作系统和其他应用程序,在通过软件或者固件来实现本发明实施例所提供的技术方案时,相关的程序代码保存在存储器200中,并由处理器100来调用执行。
输入/输出接口300用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出) ,也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触控屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口400用于连接通信模块(图中未示出) ,以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线500包括一通路,在设备的各个组件(例如处理器100、存储器200,输入/输出接口300和通信接口400)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器100、存储器200、输入/输出接口300、通信接口400以及总线500,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
基于同一发明构思,与上述任意实施例方法相对应的,本发明一实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行如上述任一实施例所述的向量跨步指令的实现方法。
本实施例的计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储;该信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算机设备访问的信息。
上述实施例的计算机存储介质存储的计算机指令用于使计算机执行如上任一实施例所述的向量跨步指令的实现方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明的范围限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明实施例的,不同方面的许多其它变化,为了简明它们没有在细节中提供。
本发明实施例旨在涵盖落入本发明的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种向量跨步指令的实现方法,其特征在于,包括:
从指令计数器所指的地址处,获取向量跨步指令;
根据RISC-V指令集的编码格式,对获取的所述向量跨步指令进行译码后,根据译码信息确定指令操作信息;
将所述向量跨步指令和所述指令操作信息发送到对应的执行部件;
执行所述向量跨步指令,以通过TLB和缓存聚合访问从内存中获取每个元素的地址所指的数据;
将访问获取的数据合并后写回到所述向量跨步指令的目的寄存器中;
其中,所述指令操作信息包含指令操作码、元素个数、目的操作数寄存器号和从源操作数寄存器号获取的源操作数;所述通过TLB和缓存聚合访问从内存中获取每个元素的地址所指的数据,包括:
根据所述指令操作信息中的元素个数和源操作数,计算元素访问的虚拟页面的数量,并根据多个所述虚拟页面通过TLB聚合访问的物理页面地址,获取每个元素的物理地址;在所述源操作数包括第一源寄存器中的访存首地址和第二源寄存器的跨步大小时,包括:
获取虚拟页面的大小、虚拟页面内地址位数、元素个数、第一源寄存器中的访存首地址以及第二源寄存器中的跨步大小;
根据所述跨步大小和所述虚拟页面的大小判断所述元素是否满足TLB聚合访问条件;
若是,则计算所述元素访问的虚拟页面的数量,该虚拟页面的数量计算公式为:
其中,N为所述虚拟页面的数量;a为所述第一源寄存器中的访存首地址;k为所述第二源寄存器中的跨步大小;m为所述虚拟页面内地址位数;M为所述虚拟页面的大小;n为所述元素个数;表示取所述访存首地址a的低m位;
根据元素序号和所述访存首地址获取每个所述元素的页内偏移量,与根据N个所述虚拟页面通过TLB聚合访问得到的物理页面地址进行拼接,获取每个所述元素的物理地址;
计算所述元素访问的缓存行的数量,并基于每个所述元素的物理地址,访问多个所述缓存行获取每个元素的数据;
将每个所述元素访问获取的数据进行格式转换,得到标准格式的数据。
2.根据权利要求1所述的向量跨步指令的实现方法,其特征在于,所述计算所述元素访问的缓存行的数量,并基于每个所述元素的物理地址,访问多个所述缓存行获取每个元素的数据,包括:
获取缓存行的大小、物理页面内地址位数、元素个数、第一源寄存器中的访存首地址以及第二源寄存器中的跨步大小;
根据所述跨步大小和所述缓存行的大小判断所述元素是否满足缓存聚合访问条件;
若是,则计算所述元素访问的缓存行的数量,该缓存行的数量计算公式为:
从首个所述元素的物理地址开始,顺序访问C个所述缓存行,并从C个所述缓存行中,根据每个所述元素的物理地址获取对应的数据。
3.根据权利要求1所述的向量跨步指令的实现方法,其特征在于,所述译码信息包括指令操作码、元素个数、源操作数寄存器号和目的操作数寄存器号;
所述根据译码信息确定指令操作信息,包括:
从所述译码信息中的源操作数寄存器号获取源操作数,并与所述译码信息中的指令操作码、元素个数和目的操作数寄存器号进行组合,得到指令操作信息。
4.根据权利要求1所述的向量跨步指令的实现方法,其特征在于,还包括:
根据所述向量跨步指令的访问特征,生成多个包含预取地址的预取请求;
将所述预取地址进行TLB虚实地址转换,得到物理地址,并在判断到所述物理地址不在缓存中时,将所述预取请求发送至下一级存储,等待下一级存储返回预取数据后,将所述预取数据存放到缓存中。
5.一种向量跨步指令的实现装置,其特征在于,包括:
指令获取模块,用于从指令计数器所指的地址处,获取向量跨步指令;
指令译码模块,用于根据RISC-V指令集的编码格式,对获取的所述向量跨步指令进行译码后,根据译码信息确定指令操作信息;其中,所述指令操作信息包含指令操作码、元素个数、目的操作数寄存器号和从源操作数寄存器号获取的源操作数;
指令发送模块,用于将所述向量跨步指令和所述指令操作信息发送到对应的执行部件;
指令执行模块,用于执行所述向量跨步指令,以通过TLB和缓存聚合访问从内存中获取每个元素的地址所指的数据;
结果写回模块,用于将访问获取的数据合并后写回到所述向量跨步指令的目的寄存器中;
其中,所述指令执行模块包括:
TLB聚合访问子模块,用于根据所述指令操作信息中的元素个数和源操作数,计算元素访问的虚拟页面的数量,并根据多个所述虚拟页面通过TLB聚合访问得到的物理页面地址,获取每个元素的物理地址;在所述源操作数包括第一源寄存器中的访存首地址和第二源寄存器的跨步大小时,该TLB聚合访问子模块包括以下单元:
初始化单元,用于获取虚拟页面的大小、虚拟页面内地址位数、元素个数、第一源寄存器中的访存首地址以及第二源寄存器中的跨步大小;
TLB聚合访问检测单元,用于根据所述跨步大小和所述虚拟页面的大小判断所述元素是否满足TLB聚合访问条件;
页面数计算单元,用于若是,则计算所述元素访问的虚拟页面的数量,该虚拟页面的数量计算公式为:
其中,N为所述虚拟页面的数量;a为所述第一源寄存器中的访存首地址;k为所述第二源寄存器中的跨步大小;m为所述虚拟页面内地址位数;M为所述虚拟页面的大小;n为所述元素个数;表示取所述访存首地址a的低m位;
物理地址获取单元,用于根据元素序号和所述访存首地址获取每个所述元素的页内偏移量,与根据N个所述虚拟页面通过TLB聚合访问得到的物理页面地址进行拼接,获取每个所述元素的物理地址;
缓存聚合访问子模块,用于计算所述元素访问的缓存行的数量,并基于每个所述元素的物理地址,访问多个所述缓存行获取每个元素的数据;
数据整理子模块,用于将每个所述元素访问获取的数据进行格式转换,得到标准格式的数据。
6.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的向量跨步指令的实现方法。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,其特征在于,所述计算机指令用于使计算机执行如权利要求1至4中任一项所述的向量跨步指令的实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210437981.0A CN114546488B (zh) | 2022-04-25 | 2022-04-25 | 一种向量跨步指令的实现方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210437981.0A CN114546488B (zh) | 2022-04-25 | 2022-04-25 | 一种向量跨步指令的实现方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114546488A CN114546488A (zh) | 2022-05-27 |
CN114546488B true CN114546488B (zh) | 2022-07-29 |
Family
ID=81666777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210437981.0A Active CN114546488B (zh) | 2022-04-25 | 2022-04-25 | 一种向量跨步指令的实现方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546488B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118277292A (zh) * | 2022-12-30 | 2024-07-02 | 华为技术有限公司 | 一种数据预取方法和数据预取装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
CN102750150B (zh) * | 2012-06-14 | 2015-05-13 | 中国科学院软件研究所 | 基于x86架构的稠密矩阵乘法汇编代码自动生成方法 |
CN104133780B (zh) * | 2013-05-02 | 2017-04-05 | 华为技术有限公司 | 一种跨页预取方法、装置及系统 |
US20150134933A1 (en) * | 2013-11-14 | 2015-05-14 | Arm Limited | Adaptive prefetching in a data processing apparatus |
US9424039B2 (en) * | 2014-07-09 | 2016-08-23 | Intel Corporation | Instruction for implementing vector loops of iterations having an iteration dependent condition |
US9996350B2 (en) * | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
US20170192783A1 (en) * | 2015-12-30 | 2017-07-06 | Elmoustapha Ould-Ahmed-Vall | Systems, Apparatuses, and Methods for Stride Load |
US10282204B2 (en) * | 2016-07-02 | 2019-05-07 | Intel Corporation | Systems, apparatuses, and methods for strided load |
US10379855B2 (en) * | 2016-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers |
GB2576528B (en) * | 2018-08-22 | 2021-06-23 | Advanced Risc Mach Ltd | Performing address translation on predicted virtual memory address |
US11687341B2 (en) * | 2019-08-29 | 2023-06-27 | Intel Corporation | Multi-variate strided read operations for accessing matrix operands |
CN113986774A (zh) * | 2021-11-16 | 2022-01-28 | 中国科学院上海高等研究院 | 一种基于指令流和访存模式学习的缓存替换系统及方法 |
CN114116016B (zh) * | 2022-01-27 | 2022-04-22 | 广东省新一代通信与网络创新研究院 | 基于处理器的指令预取方法及装置 |
-
2022
- 2022-04-25 CN CN202210437981.0A patent/CN114546488B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114546488A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106716434B (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
CN108292215B (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108369516B (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
TWI512615B (zh) | 用於一處理器之存取映射型樣匹配為基礎之預先擷取單元 | |
US8683136B2 (en) | Apparatus and method for improving data prefetching efficiency using history based prefetching | |
RU2662394C2 (ru) | Инструкция и логика для доступа к памяти в кластерной машине широкого исполнения | |
JP6718454B2 (ja) | 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと | |
US9158705B2 (en) | Stride-based translation lookaside buffer (TLB) prefetching with adaptive offset | |
US20170123796A1 (en) | Instruction and logic to prefetch information from a persistent memory | |
RU2663362C1 (ru) | Команда и логическая схема для сортировки и выгрузки команд сохранения | |
US10402334B1 (en) | Prefetch circuit for a processor with pointer optimization | |
WO2017172173A1 (en) | Instruction, circuits, and logic for graph analytics acceleration | |
CN107925420B (zh) | 用于经优化压缩比的异构压缩架构 | |
CN110419030B (zh) | 测量非均匀存储器访问(numa)系统内按节点的带宽 | |
US10157136B2 (en) | Pipelined prefetcher for parallel advancement of multiple data streams | |
EP3394742A1 (en) | Instructions and logic for load-indices-and-scatter operations | |
EP3335109A1 (en) | Determining prefetch instructions based on instruction encoding | |
CN114546488B (zh) | 一种向量跨步指令的实现方法、装置、设备及存储介质 | |
CN115934170A (zh) | 预取方法及装置、预取训练方法及装置、存储介质 | |
EP4020230A1 (en) | Application programming interface for fine grained low latency decompression within processor core | |
US20050172210A1 (en) | Add-compare-select accelerator using pre-compare-select-add operation | |
US8578135B2 (en) | Apparatus for calculating and prefetching a branch target address | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
CN114253606A (zh) | 用于早期流水线重定向的指令集架构和微架构 | |
US9524170B2 (en) | Instruction and logic for memory disambiguation in an out-of-order processor |
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 | ||
CP03 | Change of name, title or address |
Address after: 17017-17032, 17th Floor, Building T3, Fuxing Commercial Plaza, No. 303, Section 1, Furong Middle Road, Dongfeng Road Street, Kaifu District, Changsha City, Hunan Province, China Patentee after: Chaorui Technology (Changsha) Co.,Ltd. Address before: 410006 ka-657, 7th floor, Yannong complex building, Dongfanghong community, No. 459, lushong Road, high tech Development Zone, Changsha, Hunan Patentee before: Transcendence information technology (Changsha) Co.,Ltd. |
|
CP03 | Change of name, title or address |