CN106445472A - 一种字符操作加速方法、装置、芯片、处理器 - Google Patents

一种字符操作加速方法、装置、芯片、处理器 Download PDF

Info

Publication number
CN106445472A
CN106445472A CN201610676302.XA CN201610676302A CN106445472A CN 106445472 A CN106445472 A CN 106445472A CN 201610676302 A CN201610676302 A CN 201610676302A CN 106445472 A CN106445472 A CN 106445472A
Authority
CN
China
Prior art keywords
character
character manipulation
address
manipulation
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610676302.XA
Other languages
English (en)
Other versions
CN106445472B (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.)
Smartcore Beijing Co ltd
Institute of Computing Technology of CAS
Original Assignee
Smartcore Beijing Co ltd
Institute of Computing Technology of CAS
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 Smartcore Beijing Co ltd, Institute of Computing Technology of CAS filed Critical Smartcore Beijing Co ltd
Priority to CN201610676302.XA priority Critical patent/CN106445472B/zh
Publication of CN106445472A publication Critical patent/CN106445472A/zh
Application granted granted Critical
Publication of CN106445472B publication Critical patent/CN106445472B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (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

一种字符操作加速方法、装置、芯片、处理器
技术领域
本发明涉及计算机体系结构设计领域,特别涉及一种字符操作加速方法、装置、芯片、处理器。
背景技术
随着大数据时代的到来,计算机软件应用重心从数值计算向业务处理应用转移,其中,字符类操作在大数据应用中占用较大比例,其重要性也越来越凸显,字符操作作为一种非常基础通用性的操作,应用广泛,包括诸如字符串拷贝、字符串比较、字符查找等操作,几乎所有的编程语言中都有针对字符操作的函数库。
目前学术界并没有很多对字符操作深入研究,针对字符相关研究,大多都集中在基于字符的特定应用和特定问题,包括如车牌字符识别等的特定应用,以及非常典型的字符模式匹配问题,在字符模式匹配问题上有诸多软件、硬件方面的研究成果,但并不适应于大数据应用领域中涉及到的通用字符操作。
针对大数据领域的字符基本操作问题,可以考虑使用通用加速器如GPU等方式来进行加速,然而通用加速器往往强调计算性能,对于像字符操作这种简单问题,只能发挥其作为众核结构的并行性支持,单个核心的使用效率并不高,对于像适用于大数据应用的Tile64这样的处理器,其并发性以及高吞吐毋庸置疑,但其单个核心上处理能力太过通用简单,并没有特殊性设计。
字符操作相对微观且字符串操作非常广泛,几乎所有的应用中都有可能使用到以字符和字符串作为变量的不同操作。因此,加速字符操作,一定程度上就加速了整个应用的运行速度,尤其在大数据应用领域中,字符操作时间占比非常高,通过加速字符操作,能够更大幅度的提高运行速度。
发明内容
针对现有技术的不足,本发明提出一种字符操作加速方法、装置、芯片、处理器。
本发明提出一种字符操作加速方法,包括:
步骤1,获取字符操作指令在流水线中的地址并将所述字符操作指令译码,根据所述地址获取双地址,将包括所述双地址的字符操作请求消息存储在字符操作访存请求队列中;
步骤2,根据所述字符操作请求消息对缓存进行命中检查,当所述双地址均命中时,获取所述双地址在所述缓存中相对应的两个数据,若未命中,则向所述缓存发送读请求;
步骤3,对所述两个数据进行并发处理,并将处理结果返回到通用寄存器。
所述字符操作请求消息包括字符操作请求类型与地址信息,请求类型包括字符串拷贝、字符串粘贴、字符查找。
所述步骤2包括
移动两行数据,将需要进行比较操作或者进行拷贝操作的数据位对齐,同时计算掩码信息;
对移位处理后的两行数据进行比较,分别获取第一次的比较信息;
根据所述字符操作类型与所述比较信息,进行并发处理,并将处理结果返回到通用寄存器。
本发明还提出一种字符操作加速装置,包括:
双地址访存模块,用于获取字符操作指令在流水线中的地址并将所述字符操作指令译码,根据所述地址获取双地址,将包括所述双地址的字符操作请求消息存储在字符操作访存请求队列中;
双地址命中处理模块,用于根据所述字符操作请求消息对缓存进行命中检查,当所述双地址均命中时,获取所述双地址在所述缓存中相对应的两个数据,若未命中,则向所述缓存发送读请求;
字符操作处理模块,用于对所述两个数据进行并发处理,并将处理结果返回到通用寄存器。
所述字符操作请求消息包括字符操作请求类型与地址信息,请求类型包括字符串拷贝、字符串粘贴、字符查找。
所述双地址命中处理模块包括
移动两行数据,将需要进行比较操作或者进行拷贝操作的数据位对齐,同时计算掩码信息;
对移位处理后的两行数据进行比较,分别获取第一次的比较信息;
根据所述字符操作类型与所述比较信息,进行并发处理,并将处理结果返 回到通用寄存器。
所述字符操作处理模块包括存储器阵列模块,所述存储器模块为长度与cacheline大小相同的存储器阵列。
所述字符操作处理模块还包括阵列比较模块,所述阵列比较模块同时将cacheline size个数据进行比较。
本发明还提出一种利用所述字符操作加速方法制造的芯片。
本发明还提出一种包括所述字符操作加速装置的处理器。
由以上方案可知,本发明的优点在于:
1、利用本发明,实现了对字符操作的加速,使得含有大量字符操作的算法和应用获得了高运行效率;
2、充分利用了本发明的并行处理特点,大大降低了访存次数,从而降低了存储系统的压力,降低了能耗;
3、充分结合了通用处理器和专用设计的特点,在兼容的原则下,降低了所有与字符操作相关的应用的运行时间。
附图说明
图1为本发明装置的核心思想示意图;
图2为本发明字符操作处理模块的流水步骤;
图3为本发明装置的整体结构图;
图4为本发明装置针对字符串拷贝、粘贴操作的输出信息图;
图5为本发明装置针对字符串拷贝的操作结构图;
图6为本发明装置针对字符串比较的操作结构示意图。
具体实施方式
本发明的主要目的是将传统体系结构与字符操作加速结构相结合,提供一种字符操作加速方法、装置、芯片、处理器,通过并发式的处理来加速执行字符操作,以此提高计算机运行效率。
为实现该目的,本发明提供的字符操作加速装置包括:
双地址访存模块DLSU、字符操作访存请求队列COQ、双地址命中处理模块和字符操作处理模块。所述DLSU与LSU(访存模块)并列,其功能是同时计 算两个地址并将字符操作请求递交给cache;所述COQ与LSQ(访存队列)并列,用来缓存暂时不能处理的字符操作请求;所述双地址命中处理模块用于确定字符操作请求是否可以处理,当两个地址均在cache中命中则可以处理,若未命中,向cache发送读请求。
上述技术方案中,所述字符操作处理模块是本发明的思想核心,其结构如图1所示,其特点在于将连续地址的数据处理101放在与cache同级的位置进行处理,直接将处理结果返回102给通用寄存器。其结构还包括存储器阵列、移位处理模块、阵列比较器和结果处理模块,所述存储器阵列为长度与cache line大小相同的存储器阵列;所述阵列比较器能够同时处理cache line size个数据比较。所述cache line(cache行)指处理器L1Cache的一个行的大小,通常大小为64Byte。
为达到本发明的字符操作加速效果,使用所述字符操作加速装置的方法,包括如下步骤:
1)指令在流水线中通过公共步骤取地址并将指令译码,将所述地址发送到DLSU模块,DLSU模块根据所述地址计算得两个对应的内存地址,并发出含有双地址的字符操作请求消息到COQ。所发出消息包含字符操作请求类型和地址信息,字符操作请求类型包括字符串拷贝、字符串粘贴、字符查找等字符操作类型;
2)双地址命中处理模块根据COQ中的消息对cache进行命中检查,当一条消息中的两个地址均命中时,将所对应cache line内容读出,送给字符操作处理模块;若地址未命中,则向cache发出读请求;
3)字符操作处理模块根据操作请求类型,对两个cache line的数据进行并发处理,并将处理结果返回到通用寄存器。
所述字符操作加速装置中,字符操作处理模块是本发明装置的核心,可以流水化的对连续地址数据的并发处理,其流水包括如图2步骤:
1)201,两个cache line的数据读取。当请求的两个地址均在cache中命中时,读取两个地址所对应的cache line;
2)202,移位处理。移动两行数据,将需要比较或者拷贝的数据位对齐,同时计算掩码信息;
3)203,阵列比较。对移位处理后的两行数据进行比较,分别得到第一次 大于、小于或相等的比较信息,供第204步做结果处理;
4)204,处理结果。根据字符操作请求类型和第203步的比较信息,进行结果处理,并将处理好的结果返回到通用寄存器。
下面结合附图,对本发明做进一步的详细描述。
首先,本发明装置的整体结构如图3所示:包括302双地址访存模块DLSU、303字符操作访存请求队列COQ、304双地址命中处理模块和306字符操作处理模块。其中,301所示为与通用处理器公用的流水线取址、译码、发射、执行等流水阶段的逻辑,305为处理器数据Cache,在双地址未全部命中的情况下,305向下一级存储307发出读请求,并完成一系列的如cache替换等操作。306字符操作处理模块为本发明装置的核心。
分别以字符串拷贝和字符串比较为例,假如cache line size大小为64Byte,详细说明本发明装置的结构和加速方法。
对于字符串拷贝,字符操作处理模块的输入包含两个地址以及操作类型,输出信息如图4所示,分别为:
1)0,拷贝完成;
2)>0,拷贝未完成,返回值为已经拷贝的字符长度。
详细结构如图5所示。501为cache命中后两个cache line的数据读取,502为分别对两个cache line数据的移位处理,503为通过阵列比较器对数据做处理,504将对应地址的数据进行拷贝复制504-1,并处理结果504-2,将结果返回到通用寄存器。详细模块操作步骤如下:
501:两个待比较字符串首地址所在的cache line数据到位;
502:根据地址信息进行移位等处理,502-2目的地dst所在行不动,502-1将src行地址左移(addr1&0x3f)-(addr2&0x3f)位;502-3mask前addr2&0x3f位为0,其他位为1;
503:用阵列比较器503-1进行比较和计算,所比较的目的成立为1,不成立为0,得到data1与’\0’比较结果的第一个1的位置(全0记为65),记为len1;503-2 64-max{addr1&0x3f,addr2&0x3f}记为len2,表示目的行最多可写的字节数;503-3len是针对定长情况的输入值,无需计算;
504:根据比较结果,504-1将src的min{len1,len2,len}位值选通到dst,并且504-2将dst行写回cache。定长拷贝时,如果min{len1,len2,len}=len2, 返回len2,表示未拷贝完,处理了len2位;如果min{len1,len2,len}=len,返回0,表示拷贝完成。非定长拷贝时,如果min{len1,len2,len}=len1,返回0,表示拷贝完;如果min{len1,len2,len}=len2,返回len2,表示未拷贝完,已处理len2位。
通过本发明装置对字符串拷贝操作,在最理想情况下,可以将长度为64Byte的字符串拷贝的64次单字节load->store变成一次操作,速度提升接近64倍。
对于字符串比较,字符操作处理模块的输入包含两个地址以及操作类型,输出信息如图4所示,分别为:
1)0,大于;
2)-1,等于;
3)-2,小于;
4)>0,比较未完成,所返回数值为已经处理过的字节数。
其详细结构如图6所示。601为cache命中后两个cache line的数据读取,602为分别对两个cache line数据的移位处理,603为通过阵列比较器对数据做处理,604处理结果并将结果返回到通用寄存器。详细模块操作步骤如下:
601:两个待比较字符串首地址所在的cache line数据到位;
602:根据地址信息进行移位等处理,分别602-1左移addr1&0x3f和602-2左移addr2&0x3f;602-3Mask的值为前64-max{addr1&0x3f,addr2&0x3f}位为1,其余位为0,从而将cache line中与字符串比较无关的数据位mask掉;
603:用阵列比较器进行比较和计算,所比较的目的成立为1,不成立为0,得到603-1data1与’\0’、603-4data2与’\0’、603-2data1>data2、603-3data1<data2四个比较结果的第一个1的位置(没有1则为65),分别记为tail1、tail2、greater、littler;len是针对定长情况的输入值,无需计算;
604:根据比较结果,计算返回值:若min{tail1,tail2,greater,littler,len}==littler,则小于,返回-2;如果min{tail1,tail2,greater,littler,len}==greater,则大于,返回0;如果min{tail1,tail2,greater,littler,len}=len或min{tail1,tail2,greater,littler,len}==tail1且tail1==tail2,则字符串相等,返回-1;否则,返回64-max{addr1&0x3f,addr2&0x3f}。
通过本发明装置对字符串比较操作,在最理想情况下,可以将长度为64Byte的字符串比较的64次单字节load->load->cmp变成一次操作,速度提升接近64倍。
本发明还提出一种利用所述字符操作加速方法制造的芯片。
本发明还提出一种包括所述字符操作加速装置的处理器。

Claims (10)

1.一种字符操作加速方法,其特征在于,包括:
步骤1,获取字符操作指令在流水线中的地址并将所述字符操作指令译码,根据所述地址获取双地址,将包括所述双地址的字符操作请求消息存储在字符操作访存请求队列中;
步骤2,根据所述字符操作请求消息对缓存进行命中检查,当所述双地址均命中时,获取所述双地址在所述缓存中相对应的两个数据,若未命中,则向所述缓存发送读请求;
步骤3,对所述两个数据进行并发处理,并将处理结果返回到通用寄存器。
2.如权利要求1所述的字符操作加速方法,其特征在于,所述字符操作请求消息包括字符操作请求类型与地址信息,请求类型包括字符串拷贝、字符串粘贴、字符查找。
3.如权利要求1或2所述的字符操作加速方法,其特征在于,所述步骤2包括
移动两行数据,将需要进行比较操作或者进行拷贝操作的数据位对齐,同时计算掩码信息;
对移位处理后的两行数据进行比较,分别获取第一次的比较信息;
根据所述字符操作类型与所述比较信息,进行并发处理,并将处理结果返回到通用寄存器。
4.一种字符操作加速装置,其特征在于,包括:
双地址访存模块,用于获取字符操作指令在流水线中的地址并将所述字符操作指令译码,根据所述地址获取双地址,将包括所述双地址的字符操作请求消息存储在字符操作访存请求队列中;
双地址命中处理模块,用于根据所述字符操作请求消息对缓存进行命中检查,当所述双地址均命中时,获取所述双地址在所述缓存中相对应的两个数据,若未命中,则向所述缓存发送读请求;
字符操作处理模块,用于对所述两个数据进行并发处理,并将处理结果返回到通用寄存器。
5.如权利要求4所述的字符操作加速装置,其特征在于,所述字符操作请求消息包括字符操作请求类型与地址信息,请求类型包括字符串拷贝、字符串粘贴、字符查找。
6.如权利要求4或5所述的字符操作加速装置,其特征在于,所述双地址命中处理模块包括
移动两行数据,将需要进行比较操作或者进行拷贝操作的数据位对齐,同时计算掩码信息;
对移位处理后的两行数据进行比较,分别获取第一次的比较信息;
根据所述字符操作类型与所述比较信息,进行并发处理,并将处理结果返回到通用寄存器。
7.如权利要求4所述的字符操作加速装置,其特征在于,所述字符操作处理模块包括存储器阵列模块,所述存储器模块为长度与cache line大小相同的存储器阵列。
8.如权利要求7所述的字符操作加速装置,其特征在于,所述字符操作处理模块还包括阵列比较模块,所述阵列比较模块同时将cache line size个数据进行比较。
9.一种利用如权利要求1-3任意一项所述字符操作加速方法制造的芯片。
10.一种包括如权利要求4-8任意一项所述字符操作加速装置的处理器。
CN201610676302.XA 2016-08-16 2016-08-16 一种字符操作加速方法、装置、芯片、处理器 Active CN106445472B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610676302.XA CN106445472B (zh) 2016-08-16 2016-08-16 一种字符操作加速方法、装置、芯片、处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610676302.XA CN106445472B (zh) 2016-08-16 2016-08-16 一种字符操作加速方法、装置、芯片、处理器

Publications (2)

Publication Number Publication Date
CN106445472A true CN106445472A (zh) 2017-02-22
CN106445472B CN106445472B (zh) 2019-01-11

Family

ID=58181182

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610676302.XA Active CN106445472B (zh) 2016-08-16 2016-08-16 一种字符操作加速方法、装置、芯片、处理器

Country Status (1)

Country Link
CN (1) CN106445472B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762812A (zh) * 2018-05-21 2018-11-06 北京中科睿芯科技有限公司 面向通用字符串处理的硬件加速结构装置及控制方法
CN109298884A (zh) * 2018-08-29 2019-02-01 北京中科睿芯科技有限公司 一种通用字符操作加速处理硬件装置及控制方法
CN111382557A (zh) * 2020-03-31 2020-07-07 字节跳动有限公司 非定长输入数据的批量处理方法、装置、终端及存储介质
CN117270968A (zh) * 2023-11-21 2023-12-22 芯来智融半导体科技(上海)有限公司 字符串比较方法、装置、终端设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02128223A (ja) * 1988-11-09 1990-05-16 Nec Corp 演算処理装置
US20050223204A1 (en) * 2004-03-30 2005-10-06 Nec Electronics Corporation Data processing apparatus adopting pipeline processing system and data processing method used in the same
CN101650718A (zh) * 2008-08-15 2010-02-17 华为技术有限公司 字符串匹配方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02128223A (ja) * 1988-11-09 1990-05-16 Nec Corp 演算処理装置
US20050223204A1 (en) * 2004-03-30 2005-10-06 Nec Electronics Corporation Data processing apparatus adopting pipeline processing system and data processing method used in the same
CN101650718A (zh) * 2008-08-15 2010-02-17 华为技术有限公司 字符串匹配方法和装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762812A (zh) * 2018-05-21 2018-11-06 北京中科睿芯科技有限公司 面向通用字符串处理的硬件加速结构装置及控制方法
CN108762812B (zh) * 2018-05-21 2021-12-03 北京中科睿芯科技集团有限公司 面向通用字符串处理的硬件加速结构装置及控制方法
CN109298884A (zh) * 2018-08-29 2019-02-01 北京中科睿芯科技有限公司 一种通用字符操作加速处理硬件装置及控制方法
CN109298884B (zh) * 2018-08-29 2021-05-25 北京中科睿芯科技集团有限公司 一种通用字符操作加速处理硬件装置及控制方法
CN111382557A (zh) * 2020-03-31 2020-07-07 字节跳动有限公司 非定长输入数据的批量处理方法、装置、终端及存储介质
CN111382557B (zh) * 2020-03-31 2023-09-22 字节跳动有限公司 非定长输入数据的批量处理方法、装置、终端及存储介质
CN117270968A (zh) * 2023-11-21 2023-12-22 芯来智融半导体科技(上海)有限公司 字符串比较方法、装置、终端设备以及存储介质
CN117270968B (zh) * 2023-11-21 2024-03-15 芯来智融半导体科技(上海)有限公司 字符串比较方法、装置、终端设备以及存储介质

Also Published As

Publication number Publication date
CN106445472B (zh) 2019-01-11

Similar Documents

Publication Publication Date Title
CN104133780B (zh) 一种跨页预取方法、装置及系统
US8370575B2 (en) Optimized software cache lookup for SIMD architectures
CN111382327B (zh) 一种字符串匹配装置及方法
CN108268283A (zh) 用于利用约简操作来支持数据并行循环的计算引擎架构
CN108431831B (zh) 循环代码处理器优化
CN106445472B (zh) 一种字符操作加速方法、装置、芯片、处理器
CN109558168A (zh) 低等待时间加速器
EP2423821A2 (en) Processor, apparatus, and method for fetching instructions and configurations from a shared cache
CN104221005B (zh) 用于从多线程发送请求至加速器的机制
CN106708753A (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN104536911B (zh) 一种多路组相联的高速缓冲存储器及其处理方法
US10866902B2 (en) Memory aware reordered source
CN108268385A (zh) 具有集成目录高速缓存的优化的高速缓存代理
CN102446087B (zh) 指令预取方法与预取装置
CN105573711B (zh) 一种数据缓存方法及装置
CN104102549B (zh) 一种实现多线程互斥操作的方法、装置和芯片
CN107038125A (zh) 具有加速预取请求的独立流水线的处理器高速缓存
JP3498673B2 (ja) 記憶装置
CN115269454A (zh) 数据访问方法、电子设备和存储介质
CN115640047A (zh) 指令操作方法及装置、电子装置及存储介质
US11030714B2 (en) Wide key hash table for a graphics processing unit
CN112860596B (zh) 一种神经网络张量处理器的数据流高速缓存装置
US20180089141A1 (en) Data processing device
CN111126619B (zh) 一种机器学习方法与装置
CN107491809A (zh) 一种fpga实现残差网络中激活函数的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant