双模式浮点除法平方根的电路的制作方法

文档序号:16780474发布日期:2019-02-01 19:05阅读:282来源:国知局
双模式浮点除法平方根的电路的制作方法

本发明涉及数字信号处理领域,尤其涉及一种基于srt-16算法的可以处理一种双精度和并行处理两种单精度的高效双模式浮点除法开方的电路结构



背景技术:

在数字信号处理中,浮点除法和平方根运算是处理器中非常重要的功能部件,该部件性能的好坏严重影响整个处理器的性能。srt-16算法是实现浮点除法和开方运算的一种高基的数字循环算法。srt-16算法是采用加法方法进行循环迭代计算得到商q,每次迭代产生4位的冗余商,第i次迭代公式如下:

其中qi表示每次迭代产生的4位二进制冗余商值,它由冗余的2位二进制高位商qhi和低位商qli组合而成;w[i]表示第i次循环的部分余数和;v[i]表示迭代中间值;fhi和fli为迭代加法项;w[i+1]表示第i次迭代后的部分余数;x表示被除数或被开方数;d表示除数;s[i]表示平方根运算中,第i次迭代后非冗余的商值。

从迭代公式可知,浮点除法运算qhi的值由d,16w[i]组成的函数决定,qli的值由d,v[i]和qhi组成的函数决定;浮点平方根运算qhi的值由s[i],16w[i]组成的函数决定,qli的值由s[i],v[i]和qhi组成的函数决定,这些函数统称为商选择函数qsel,由于商选择函数中选择区间的重叠,使得d,16w[i],v[i],s[i]并不需要全位宽输入到qsel中,只需要选用截断位宽的同时v[i]可由16w[i]和fhi决定,故选择函数的表达式为:

目前单一实现浮点除法和平方根运算的电路结构研究较多,两种浮点运算通过两种电路结构进行计算,但是在实际的应用平台中使用这种方法进行两种浮点运算的效率是较低的。因此需要一种统一的电路结构,在只增加少量的硬件条件下,既能实现浮点除法运算,又能实现浮点平方根运算。

同时,传统的浮点运算体系结构只能处理一种精度的浮点计算,对于需要大量处理不同精度浮点运算的应用平台,这种体系结构性能较低。



技术实现要素:

(一)要解决的技术问题

本发明提供了一种双模式浮点除法平方根的电路,以解决上述的至少一项技术问题。

(二)技术方案

本发明实施例提供了一种双模式浮点除法平方根的电路,包括:

数据处理单元,用于对被操作数进行平方根操作、或者对被操作数和操作数进行除法操作,确定操作结果q的符号位和指数位,其中,所述被操作数x和所述操作数d均为单路双精度64位数据,或者均为双路单精度32位数据;

迭代输入初始化单元,用于根据所述符号位和指数位,确定迭代初始化输入数据w[0];

迭代单元,用于对w[0]进行迭代处理,在每一次迭代结束后,对所述q进行数值转换,确定迭代后的q;

舍入单元,用于所述迭代后的q的尾数q_man(q1_man/q2_man)进行舍入,确定舍入结果;

输出单元,用于将所述舍入结果与所述符号位和指数位进行拼接,确定并输出所述操作结果q。

在本发明的一些实施例中,在每一次迭代中,所述迭代单元产生4位冗余操作值,q的取值范围为[1/4,1],双路单精度32位数据迭代的次数为7次,单路双精度64位数据迭代的次数为14次。

在本发明的一些实施例中,对于单路双精度64位数据x,最高位x[63]为x符号位,x[62∶52]为x的11位指数,x[51∶0]为x的52位尾数;对于双路单精度32位数据x1和x2,x1和x2共同组成64比特的x,其中x[63]为x1符号位,x[62∶55]为x1的8位指数位,x[54∶32]为x1的23位尾数,x[31]为x2符号位,x[30∶23]为x2的8位指数位,x[22∶0]为x2的23位尾数。

在本发明的一些实施例中,所述电路的可配置控制信号func等于1时,电路配置成除法运算;func等于0,电路配置成平方根运算;配置电路的模式信号op等于1时,电路配置成并行处理的双路单精度32位数据运算;op等于0,电路配置成单路双精度64位数据运算。

在本发明的一些实施例中,所述数据处理单元包括两个减法器,所述两个减法器的运算结果的奇偶标志位为odd,用于平方根运算中尾数的移位操作:odd等于1时,被操作数指数为奇数,需要对指数进行加1操作,同时尾数需要右移一位;odd等于0时,被操作数指数为偶数,指数和尾数保持不变。

在本发明的一些实施例中,所述迭代单元中,对于除法运算,w[0]=x-d;对应平方根运算,w[0]=x-1。

在本发明的一些实施例中,对于除法运算,被操作数的尾数初始化范围为[1/4,1/2],操作数的尾数初始化范围为[1/2,1];对于平方根运算,被操作数的尾数初始化范围为[1/4,1]。

在本发明的一些实施例中,所述迭代单元包括两个寄存器a1和a2、以及两个寄存器b1和b2,用于对所述q进行数值转换为非冗余形式,以及存储第i次迭代后的操作结果值s[i];

在本发明的一些实施例中,用于存储双精度浮点运算中操作结果值,以及存储一种单精度浮点运算中操作结果值;a2,b2为28位的寄存器,用于存储另一种单精度浮点中的操作结果值;迭代后的操作结果的尾数值q_man在a1、a2中获得;d_man为除数d的尾数,对应的输入d[54∶0],d_man既包含了双精度运算下,除数d的尾数,又包含了并行处理两种单精度运算,除数d1和d2的尾数。

在本发明的一些实施例中,所述迭代单元还包括:两个双模式的csa1和csa2、双模式操作结果产生单元和双模式加法项产生单元,所述迭代单元还用于:

根据所述双模式操作结果产生单元产生6位的高位操作结果qh[i]和低位操作结果ql[i],高位操作结果qh[i]既可以表示双精度浮点运算的3位高位操作结果,后3位高位操作结果为零,又可以表示两个并行计算的单精度浮点运算的3位高位操作结果;低位操作结果ql[i]既可以表示双精度浮点运算的3位低位操作结果,后3位低位操作结果为零,又可以表示两个并行计算的单精度浮点运算的3位低位操作结果;

所述迭代单元还用于将所述qh[i]和ql[i]作为双模式加法项产生单元的输入,产生高位加法项fhi和低位加法项fli;

对于第i次迭代初始部分余数,左移4位后得到16ws_i和16wc_i,将fhi,16ws_i和16wc_i作为csa1的输入用来产生vs_i,vc_i,同时产生的vs_i,vc_i与fli作为csa2的输入用来产生ws_i+1,wc_i+1作为下一次迭代的输入。

在本发明的一些实施例中,还包括预处理单元,用于对x,d进行检测,去除不满足ieee-754标准中规格化的数据,输出满足ieee-754标准中规格化的数据。

(三)有益效果

本发明的双模式浮点除法平方根的电路,相较于现有技术,至少具有以下优点:

1、基于srt-16算法,电路原理简单,计算精度高,面积消耗低等优点。针对srt-16算法中,除法、平方根的运算中只有加法项不同的特点,在只增加少量硬件的情况下,能够动态配置实现浮点除法和平方根两种运算,能够处理一种精度的浮点运算,而且在保证面积消耗的前提下,能够动态配置成并行处理两个同种精度的浮点运算;

2、采用双模式的电路设计方式,在只增加少量硬件的情况下,既能处理一种双精度浮点运算,又能并行处理两路单精度浮点运算,大大提高了浮点运算单元处理不同精度运算时的性能;

3、采用流水线结构实现srt-16算法中的迭代过程,相比于现有的基于srt-4的算法的迭代运算通常采用的循环结构,数据吞吐量大大提高,更适于高性能运算。

附图说明

图1为本发明实施例的双模式浮点除法平方根电路的结构示意图。

图2为本发明实施例规定的输入数据x,d的形式示意图。

图3为本发明实施例的数据处理单元的示意图。

图4为本发明实施例的迭代输入初始化单元的示意图。

图5为本发明实施例的迭代单元的示意图。

图6为本发明实施例的迭代单元流水线的结构示意图。

图7为本发明实施例的双模式fh-generate(高位加法项fh[i]产生单元)的示意图。

图8为本发明实施例的浮点平方根运算中p[i]项的实现示意图。

图9(a)为本发明实施例的单路双精度64位数据的q-generate的示意图。

图9(b)为本发明实施例的并行的双路单精度32位数据的q-generate的示意图。

图10为本发明实施例的统一商选择函数查找表。

图11为本发明实施例的双模式csa的结构示意图。

具体实施方式

目前,浮点运算体系结构正朝着从标量运算到矢量运算的发展,即一种双模式高性能浮点运算处理结构。基于此,本发明提供了一种双模式浮点除法平方根的电路,基于srt-16算法,除法、平方根的运算中只有加法项不同的特点,在只增加少量硬件的情况下,能够动态配置实现浮点除法和平方根两种运算,能够处理一种精度的浮点运算,而且在保证面积消耗的前提下,能够动态配置成并行处理两个同种精度的浮点运算。

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

本发明提供了一种双模式浮点除法平方根的电路,如图1所示,包括:

数据处理单元,用于对被操作数进行平方根操作、或者对被操作数和操作数进行除法操作,确定操作结果q的符号位和指数位,其中,所述被操作数x和所述操作数d均为单路双精度64位数据,或者均为双路单精度32位数据;

迭代输入初始化单元,用于根据所述符号位和指数位,确定迭代初始化输入数据w[0];

迭代单元,用于对w[0]进行迭代处理,在每一次迭代结束后,对所述q进行数值转换,确定迭代后的q;

舍入单元,用于所述迭代后的q的尾数q_man(q1_man/q2_man)进行舍入,确定舍入结果;

输出单元,用于将所述舍入结果与所述符号位和指数位进行拼接,确定并输出所述操作结果q。

根据本发明的一种实施例,在每一次迭代中,所述迭代单元产生4位冗余操作值,q的取值范围为[1/4,1],双路单精度32位数据迭代的次数为7次,单路双精度64位数据迭代的次数为14次。

根据本发明的一种实施例,对于单路双精度64位数据x,最高位x[63]为x符号位,x[62∶52]为x的11位指数,x[51∶0]为x的52位尾数;对于双路单精度32位数据x1和x2,x1和x2共同组成64比特的x,其中x[63]为x1符号位,x[62∶55]为x1的8位指数位,x[54∶32]为x1的23位尾数,x[31]为x2符号位,x[30∶23]为x2的8位指数位,x[22∶0]为x2的23位尾数。

根据本发明的一种实施例,所述电路的可配置控制信号func等于1时,电路配置成除法运算;func等于0,电路配置成平方根运算;配置电路的模式信号op等于1时,电路配置成并行处理的双路单精度32位数据运算;op等于0,电路配置成单路双精度64位数据运算。

根据本发明的一种实施例,所述数据处理单元包括两个减法器,所述两个减法器的运算结果的奇偶标志位为odd,用于平方根运算中尾数的移位操作:odd等于1时,被操作数指数为奇数,需要对指数进行加1操作,同时尾数需要右移一位;odd等于0时,被操作数指数为偶数,指数和尾数保持不变。

根据本发明的一种实施例,所述迭代单元中,对于除法运算,w[0]=x-d;对应平方根运算,w[0]=x-1。

在本发明的一些实施例中,对于除法运算,被操作数的尾数初始化范围为[1/4,1/2],操作数的尾数初始化范围为[1/2,1];对于平方根运算,被操作数的尾数初始化范围为[1/4,1]。

根据本发明的一种实施例,所述迭代单元包括两个寄存器a1和a2、以及两个寄存器b1和b2,用于对所述q进行数值转换为非冗余形式,以及存储第i次迭代后的操作结果值s[i];

根据本发明的一种实施例,用于存储双精度浮点运算中操作结果值,以及存储一种单精度浮点运算中操作结果值;a2,b2为28位的寄存器,用于存储另一种单精度浮点中的操作结果值;迭代后的操作结果的尾数值q_man在a1、a2中获得;d_man为除数d的尾数,对应的输入d[54∶0],d_man既包含了双精度运算下,除数d的尾数,又包含了并行处理两种单精度运算,除数d1和d2的尾数。

根据本发明的一种实施例,所述迭代单元还包括:两个双模式的csa1和csa2、双模式操作结果产生单元和双模式加法项产生单元,所述迭代单元还用于:

根据所述双模式操作结果产生单元产生6位的高位操作结果qh[i]和低位操作结果ql[i],高位操作结果qh[i]既可以表示双精度浮点运算的3位高位操作结果,后3位高位操作结果为零,又可以表示两个并行计算的单精度浮点运算的3位高位操作结果;低位操作结果ql[i]既可以表示双精度浮点运算的3位低位操作结果,后3位低位操作结果为零,又可以表示两个并行计算的单精度浮点运算的3位低位操作结果;

所述迭代单元还用于将所述qh[i]和ql[i]作为双模式加法项产生单元的输入,产生高位加法项fhi和低位加法项fli;

对于第i次迭代初始部分余数,左移4位后得到16ws_i和16wc_i,将fhi,16ws_i和16wc_i作为csa1的输入用来产生vs_i,vc_i,同时产生的vs_i,vc_i与fli作为csa2的输入用来产生ws_i+1,wc_i+1作为下一次迭代的输入。

根据本发明的一种实施例,还包括预处理单元,用于对x,d进行检测,去除不满足ieee-754标准中规格化的数据,输出满足ieee-754标准中规格化的数据。

图2为本发明实施例规定的输入数据x,d的形式示意图,如图2所示,本发明支持一种双精度的数据运算和并行的两种单精度的运算,输入数据的位宽为64比特。以被除数或被开方数x为例,对于双精度数据,最高位x[63]为x符号位,x[62∶52]为x的11位指数,x[51∶0]为x的52位尾数;对于两种单精度数据,x1,x2都为32比特,x1和x2共同组成64比特的x,其中x[63]为x1符号位,x[62∶55]为x1的8位指数位,x[54∶32]为x1的23位尾数,x[31]为x2符号位,x[30∶23]为x2的8位指数位,x[22∶0]为x2的23位尾数。对于除数d也是采用相同的数据输入形式。

本发明还可以包括预处理单元,对输入浮点数据x,d进行检测。对于不满足ieee-754标准中规格化的数据和本发明规定的数据格式的数据,作为数据输入异常处理。由此,得到如图2所示的被操作数和操作数。

接下来,就以除法操作为例,对本发明进行详细解释。

x为被除数或者被开方数,d为除数,q为商值。func、op作为整个电路模块的可配置控制信号,其中func等于1,将电路配置成浮点除法运算,func等于0,将电路配置成浮点平方根运算。op用于配置电路的双模式(单路双精度和双路单精度)功能。op等于1,将电路配置成并行处理两路单精度浮点运算,op等于0,将电路配置成单路双精度浮点运算。odd为奇偶标志位,用于平方根运算中尾数的移位操作。odd等于1,代表被开方数指数为奇数,需要对指数进行加1操作,同时尾数需要右移一位。odd等于0,代表被开方数指数为偶数,指数和尾数保持不变。

数据处理单元计算商q的符号位和指数位(sign&exp)。

迭代输入初始化单元。为双模式尾数处理单元提供迭代初始化输入数据w[0],为了减小电路延时,迭代过程中采用csa(carrysaveadder,进位保留加法器),w[0]被分解为加法和ws[0]、以及进位和wc[0]两部分。

迭代单元,用于完成整个加法迭代运算。由于采用srt-16算法,每一次迭代产生4位冗余商值,浮点除法商值q的取值范围为[1/4,1],为了满足精度要求,双路单精度32位数据迭代的次数为7次,单路双精度64位数据迭代的次数为14次。这是因为双路单精度32位数据是并行(同时)计算,每一次迭代产生4位商,一共需要产生24位商,需要6次迭代,增加一次迭代进行舍入操作,故需要7次迭代。单路双精度64位数据,每一次迭代产生4位商,一共需要产生52位商,需要13次迭代,增加一次迭代进行舍入操作,故需要14次。

每一次迭代产生的4位冗余商值需要转换为非冗余形式,为了减少延时,采用商飞速转换(on-the-fly)的技术(参照文献m.d.ercegovacandt.lang,“on-the-flyconversionfromredundantintoconventionalrepresentation”,ieeetransactionsoncomputers,vol.c-36,pp.895-897,july1987),每一次迭代结束后,立刻进行商值转换。为了提高电路吞吐率,电路采用全流水的设计结构。

舍入单元,对商q的尾数q_man(q1_man/q2_man)进行舍入,其中,舍入操作则可以采用ieee-754标准中的最近舍入的方法。

输出单元,将完成舍入操作的q_man(q1_man/q2_man)和对应的符号指数位进行拼接,输出最后的商值q。

图3为本发明实施例的数据处理单元的示意图,如图3所示,其中的exp_x,exp_d分别为双精度数据x,d的指数位,exp_x1,exp_x2,exp_d1,exp_d2分别为并行输入的单精度数据x1,x2,d1,d2的指数位。图中虚线左边部分为双精度数据x,d指数运算电路结构,为了减少电路开销,对电路资源进行复用,单精度数据x1,d1的指数的运算同样采用该电路结构,图中虚线右边则进行单精度数据x2,d2的指数运算。func和op信号作为可配置信号动态配置电路,使电路实现不同的运算。

mux1,mux2,mux6,sub1和sub2在fun,op的控制下完成x和d,x1和d1,x2和d2指数相减的运算,odd为sub1和sub2运算结果的奇偶标志位,对于平方根指数运算,指数为奇数需要加1再除2,同时尾数要右移一位。指数为偶数则直接除2。add1和add3完成加1操作,移位器右移一位完成除2操作。mux4和mux8作为偏置bias的选择器,加法器add2和add4完成指数规格化操作。

图4为本发明实施例的迭代输入初始化单元的示意图,如图4所示,初始化单元为尾数迭代模块提供初始化输入w[0]。为了减小电路延时,w[0]被分解为加法和ws[0]、进位和wc[0]两部分。对于除法运算,w[0]=x-d。对于平方根运算w[0]=x-1。可配置控制信号func,odd共同配置选择器mux1,mux2,mux3,完成平方根指数为奇数时,尾数的移位操作和不同精度除法和平方根运算中尾数初始化。对于除法运算x的尾数初始化范围为[1/4,1/2],d的尾数初始化范围为[1/2,1]。对于平方根运算x的尾数初始化范围为[1/4,1]。op信号配置选择器mux4和mux5,完成双模式功能的切换。加法器add支持双模式运算,既可以进行一个55位加法器运算,同时可以拆分为一个28位加法器和一个27位加法器。

图5为本发明实施例的迭代单元的示意图,如图5所示,迭代电路模块主要由两个(csa1和csa2)双模式的csa、双模式q-generate(商产生单元)以及f-generate(双模式加法项产生单元)三个部分组成。可配置信号func和op对三个模块进行动态配置,实现除法、开方的浮点运算和双模式功能。ys[i],yc[i]为截断的部分余数,为了支持双模式的功能,ys[i],yc[i]的位宽由只支持一种精度运算的9位宽,变成18位位宽。在浮点平方根运算中,为了支持商的飞速转换,使用两个寄存器a,b存储第i次迭代后的商值s[i]。为了支持双模式功能,a1,b1为56位的寄存器,既能存储双精度浮点运算中商值,又能存储一种单精度浮点运算中商值。a2,b2为28位的寄存器,用于存储另一种单精度浮点中的商值。最终商的尾数值q_man在a1、a2中获得。d_man为除数d的尾数,对应的输入d[54∶0],d_man既包含了双精度运算下,除数d的尾数,又包含了并行处理两种单精度运算,除数d1和d2的尾数。

ys[i]、yc[i]、作为双模式q-generate模块中选择函数的输入,产生6位的高位商qh[i]和低位商ql[i],高位商qh[i]既可以表示双精度浮点运算的3位(1位符号位,2位商值)高位商(剩下低3位补零),又可以表示两个并行计算的单精度浮点运算的3位高位商,ql[i]也用同样的方式表示低位商。

qhi和qli同时作为双模式f-generate单元的输入,产生高位加法项fhi和低位加法项fli。fh_i,16ws_i和16wc_i作为csa1的输入用来产生srt-16算法中的v[i]项(vs_i,vc_i),v[i],fl_i作为csa2的输入用来产生srt-16算法中的w[i+1](ws_i+1,wc_i+1),w[i+1]又作为下次迭代的输入。

图6为本发明实施例的迭代单元流水线的结构示意图,如图6所示,电路共采用14级流水线结构,有效提高数据吞吐率。

图7为本发明实施例的双模式fh-generate(高位加法项fh[i]产生单元)的示意图,如图7所示,图中productgenerator(倍积器)产生不同高位商对应的高位加法项,qh[i]作为选择项对高位加法项进行选择。对于浮点除法运算,倍积产生器产生的高位加法项为8d,4d,-4d,-8d,只需要对尾数d_man进行移位操作即可。对于浮点平方根运算,倍积器产生的高位加法项为8p[i-1],4p[i-1],-4p[i-1],-8p[i-1],其中p[i-1]与qh[i]、a[i-1]、b[i-1]的关系如图7所示,对转换得到的p[i-1]进行移位操作得到高位加法项。

fl-generate(低位加法项fl[i]产生单元)电路结构与fh-generate基本一致,只是由productgenerator产生倍积不同。对于浮点除法运算,倍积产生器产生的低位加法项为2d,d,-2d,-d,只需要对尾数d_man进行移位操作即可。对于浮点平方根运算,倍积器产生的低位加法项为2p[i-1],p[i-1],-2p[i-1],-p[i-1]。

为了支持浮点除法和平方根运算,通过func的动态配置,产生不同加法项。对于双精度浮点运算,其加法项fhi有58位,为了支持双模式功能,其加法项可由两个单精度的29位加法项拼接而成。

图8为本发明实施例的浮点平方根运算中p[i]项的实现示意图,如图8所示,当s[i+1]取不同值时,根据当前迭代的i值,对寄存器a和寄存器b中的第i组和第i-1组进行修改即可,其中,a,b表示当前寄存器中的值,表示对两位二进制值取反。

图9(a)为本发明实施例的单路双精度64位数据的q-generate(商产生单元)的示意图,图9(b)为本发明实施例的并行的双路单精度32位数据的q-generate的示意图,如图所示,ys[i]和yc[i]输入后,先通过加法器add相加得到截断的部分余数y,在func的配置下,y、和截断的作为高位商选择函数的输入产生高位商qh[i],qh[i]产生后选择截断的加法项与y相加得到新的截断部分余数v,v与作为低位商选择函数的输入产生低位商ql[i]。为了支持双模式功能,qsel1_h(高位商选择函数)和qsel1_l(低位商选择函数)既能支持双精度运算高低位商值选择,也能支持一个单精度运算高低位商值选择。qsel2_h和qsel2_l则完成对另一个单精度运算高低位的商值选择。为了完成浮点除法和平方根的运算,采用一种统一的商选择函数,其示意图如图10所示,截断的部分余数y,在确定的情况下,y在不同的选择区间内,选出不同的商值q。

图11为本发明实施例的双模式csa(进位保留加法器)示意图,对于58位的csa,既可以当做一个58位的加法器,又可以拆分成两个29位加法器,58为的加法器用于双精度运算中迭代加法器,通过op配置成两个29位的加法器,用于并行的两个单精度浮点运算迭代中的加法运算。具体原理为:当配置成两个29位加法器是,第28位进位和cin[28]置为零,即可将加法器拆分成两个进位保留加法器。

综上,本发明的双模式浮点除法平方根的电路,基于srt-16算法,实现了双模式的电路设计方式,在只增加少量硬件的情况下,既能处理一种双精度浮点运算,又能并行处理两路单精度浮点运算,大大提高了浮点运算单元处理不同精度运算时的性能。

除非有所知名为相反之意,本说明书及所附权利要求中的数值参数是近似值,能够根据通过本发明的内容所得的所需特性改变。具体而言,所有使用于说明书及权利要求中表示组成的含量、反应条件等等的数字,应理解为在所有情况中是受到“约”的用语所修饰。一般情况下,其表达的含义是指包含由特定数量在一些实施例中±10%的变化、在一些实施例中±5%的变化、在一些实施例中±1%的变化、在一些实施例中±0.5%的变化。

再者,“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的“一”或“一个”不排除存在多个这样的元件。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1