CN106445472B - 一种字符操作加速方法、装置、芯片、处理器 - Google Patents
一种字符操作加速方法、装置、芯片、处理器 Download PDFInfo
- Publication number
- CN106445472B CN106445472B CN201610676302.XA CN201610676302A CN106445472B CN 106445472 B CN106445472 B CN 106445472B CN 201610676302 A CN201610676302 A CN 201610676302A CN 106445472 B CN106445472 B CN 106445472B
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000012545 processing Methods 0.000 claims abstract description 63
- 238000007689 inspection Methods 0.000 claims abstract description 6
- 230000006870 function Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000003111 delayed effect Effects 0.000 claims 1
- 238000000151 deposition Methods 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 4
- 230000001133 acceleration Effects 0.000 abstract description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 235000015170 shellfish Nutrition 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding 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 (7)
1.一种字符操作加速方法,其特征在于,包括:
步骤1,获取字符操作指令在流水线中的地址并将所述字符操作指令译码,根据所述地址获取双地址,将包括所述双地址的字符操作请求消息存储在字符操作访存请求队列中;
步骤2,根据所述字符操作请求消息对缓存进行命中检查,当所述双地址均命中时,获取所述双地址在所述缓存中相对应的两个数据,若未命中,则向所述缓存发送读请求;
步骤3,对所述两个数据进行并发处理,并将处理结果返回到通用寄存器;
其中所述并发处理包括:
移动两行数据,将需要进行比较操作或者进行拷贝操作的数据位对齐,同时计算掩码信息;
对移位处理后的两行数据进行比较,分别获取第一次的比较信息;
根据所述字符操作请求消息的字符操作类型与所述比较信息,进行并发处理,并将处理结果返回到通用寄存器。
2.如权利要求1所述的字符操作加速方法,其特征在于,所述字符操作请求消息包括字符操作请求类型与地址信息,请求类型包括字符串拷贝、字符串粘贴、字符查找。
3.一种字符操作加速装置,其特征在于,包括:
双地址访存模块,用于获取字符操作指令在流水线中的地址并将所述字符操作指令译码,根据所述地址获取双地址,将包括所述双地址的字符操作请求消息存储在字符操作访存请求队列中;
双地址命中处理模块,用于根据所述字符操作请求消息对缓存进行命中检查,当所述双地址均命中时,获取所述双地址在所述缓存中相对应的两个数据,若未命中,则向所述缓存发送读请求;
字符操作处理模块,用于对所述两个数据进行并发处理,并将处理结果返回到通用寄存器;
其中所述并发处理包括:
移动两行数据,将需要进行比较操作或者进行拷贝操作的数据位对齐,同时计算掩码信息;
对移位处理后的两行数据进行比较,分别获取第一次的比较信息;
根据所述字符操作请求消息的字符操作类型与所述比较信息,进行并发处理,并将处理结果返回到通用寄存器。
4.如权利要求3所述的字符操作加速装置,其特征在于,所述字符操作请求消息包括字符操作请求类型与地址信息,请求类型包括字符串拷贝、字符串粘贴、字符查找。
5.如权利要求3所述的字符操作加速装置,其特征在于,所述字符操作处理模块包括存储器阵列模块,所述存储器阵列模块为长度与cacheline大小相同的存储器阵列。
6.如权利要求3所述的字符操作加速装置,其特征在于,所述字符操作处理模块还包括阵列比较模块,所述阵列比较模块同时将cachelinesize个数据进行比较。
7.一种包括如权利要求3-6任意一项所述字符操作加速装置的处理器。
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 CN106445472A (zh) | 2017-02-22 |
CN106445472B true 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) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762812B (zh) * | 2018-05-21 | 2021-12-03 | 北京中科睿芯科技集团有限公司 | 面向通用字符串处理的硬件加速结构装置及控制方法 |
CN109298884B (zh) * | 2018-08-29 | 2021-05-25 | 北京中科睿芯科技集团有限公司 | 一种通用字符操作加速处理硬件装置及控制方法 |
CN111382557B (zh) * | 2020-03-31 | 2023-09-22 | 字节跳动有限公司 | 非定长输入数据的批量处理方法、装置、终端及存储介质 |
CN117270968B (zh) * | 2023-11-21 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 字符串比较方法、装置、终端设备以及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 华为技术有限公司 | 字符串匹配方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02128223A (ja) * | 1988-11-09 | 1990-05-16 | Nec Corp | 演算処理装置 |
-
2016
- 2016-08-16 CN CN201610676302.XA patent/CN106445472B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 华为技术有限公司 | 字符串匹配方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106445472A (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8370575B2 (en) | Optimized software cache lookup for SIMD architectures | |
CN106445472B (zh) | 一种字符操作加速方法、装置、芯片、处理器 | |
CN108431831B (zh) | 循环代码处理器优化 | |
CN103729306B (zh) | 高速缓存块无效的方法和数据处理设备 | |
US10866902B2 (en) | Memory aware reordered source | |
CN105653790A (zh) | 一种基于人工神经网络的乱序处理器Cache访存性能评估方法 | |
CN109461113B (zh) | 一种面向数据结构的图形处理器数据预取方法及装置 | |
CN104536911B (zh) | 一种多路组相联的高速缓冲存储器及其处理方法 | |
KR102268601B1 (ko) | 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템 | |
CN108268385A (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
US9804896B2 (en) | Thread migration across cores of a multi-core processor | |
CN102968395B (zh) | 用于微处理器的内存拷贝加速方法及装置 | |
KR20190033084A (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
CN108874691B (zh) | 数据预取方法和内存控制器 | |
US11030714B2 (en) | Wide key hash table for a graphics processing unit | |
US20180089141A1 (en) | Data processing device | |
CN111736900B (zh) | 一种并行双通道的cache设计方法和装置 | |
CN113095026A (zh) | 一种支持乱序多读写的寄存器组电路装置 | |
US11748107B2 (en) | Complex I/O value prediction for multiple values with physical or virtual addresses | |
CN108874690A (zh) | 数据预取的实现方法和处理器 | |
CN111653317A (zh) | 基因比对加速装置、方法及*** | |
CN111126619A (zh) | 一种机器学习方法与装置 | |
CN108762812B (zh) | 面向通用字符串处理的硬件加速结构装置及控制方法 | |
CN100397365C (zh) | 解决分支目标地址快取中死结提取条件的装置与方法 | |
CN101819608B (zh) | 一种微处理器指令级随机验证中加速取指的装置和方法 |
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 |