共享硬件运算单元的局部缓存方法技术

技术编号:38231930 阅读:15 留言:0更新日期:2023-07-25 17:59
本申请涉及集成电路设计技术领域,公开了一种共享硬件运算单元的局部缓存方法。硬件运算单元连接有至少一个输入寄存器和至少一个输出寄存器,每个输入寄存器连接有至少一级缓冲,所述方法包括:在中央处理器对所述至少一个输入寄存器的写入过程中,如果所述硬件运算单元收到中断指令,每个输入寄存器将存储其中的值写入对应的第一级缓冲;所述中央处理器在所述至少一个输入寄存器中写入新的值,所述硬件运算单元对新的值执行运算;所述硬件运算单元检测到所述中央处理器对特定的输出寄存器的读指令后,每个第一级缓冲将存储其中的值返回到对应的输入寄存器。本申请通过在硬件运算单元内部增加缓存的方法来允许多个软件线程随机访问。随机访问。随机访问。

【技术实现步骤摘要】
共享硬件运算单元的局部缓存方法


[0001]本申请涉及集成电路设计
,特别涉及一种共享硬件运算单元的局部缓存方法。

技术介绍

[0002][0003]在现有系统级芯片(SoC)设计中,如果需要中央处理器(CPU)执行某个不在指令集中的运算,比如乘除,指数,开方,三角函数等运算,需要通过软件模拟,花费时间比较长。为了加快速度,会增加专门的硬件运算电路作为硬件加速单元。
[0004]硬件加速单元作为共享的硬件资源,会被多个软件线程调用。如果有多个线程需要利用该硬件作为加速单元,可能正好会在写入输入数据和读出结果之间被中断,插入的线程如果同样需要硬件加速,使用后会影响上一个线程的结果。软件不得不花费额外的开销做处理,影响整体的效率。
[0005]硬件运算单元一般需要输入一个或者多个变量,计算结束后读出计算结果。在输入变量和读出结果之间,如果被其他软件线程中断,在新的线程中又做了一次运算,输入的变量可能会被修改。被中断的线程如果用修改后的变量结算,结果就会错误。
[0006]在计算机系统中,一些共享设备比如打印机,外设等,都是由操作系统来管理,对上层软件来说,都是通过驱动程序去操作共享设备。很多微控制器(MCU)的应用没有操作系统,一般通过下面几种方式来处理被中断的情况:1.关闭中断,避免其他线程插入。该方按需要额外的操作,且会影响实时性。
[0007]2.利用CPU指令集的原子操作,在计算结果读出之前不允许插入其他操作。然而,有的CPU不支持原子操作,且同样会影响实时性。且CPU的原子操作只支持对一个寄存器地址的读



写,不支持对多个地址的连续操作,无法把一个运算当作一个原子操作。
[0008]3.插入的软件线程在运算前保存现场,运算后恢复现场,使被打算的软件线程能继续执行。比如中断程序会自动对某些寄存器做压栈出栈的处理,但是其他寄存器需要手工处理。该方案需要额外的压栈和出栈操作,增加处理时间,降低效率。
[0009]4.增加多个硬件运算单元,分配个不同线程使用,互不干扰。该方案会增加芯片的面积和功耗。
[0010]上述提高的每个方法都存在一定的缺点,在某些应用场景下会受到限制。硬件运算单元能通过牺牲面积增加硬件逻辑来加速运算,最快能在一个周期内完成运算,但为了避免多个软件线程同时使用该硬件运算单元,可能需要花费多余的时间或者成本,影响了整个系统的效率。

技术实现思路

[0011]本申请的目的在于提供一种共享硬件运算单元的局部缓存方法,通过在硬件运算单元内部增加缓存的方法来允许多个软件线程随机访问。
[0012]本申请公开了一种共享硬件运算单元的局部缓存方法,硬件运算单元连接有至少一个输入寄存器和至少一个输出寄存器,每个输入寄存器连接有至少一级缓冲,所述方法包括:在中央处理器对所述至少一个输入寄存器的写入过程中,如果所述硬件运算单元收到中断指令,每个输入寄存器将存储其中的值写入对应的第一级缓冲;所述中央处理器在所述至少一个输入寄存器中写入新的值,所述硬件运算单元对新的值执行运算;以及所述硬件运算单元检测到所述中央处理器对特定的输出寄存器的读指令后,每个第一级缓冲将存储其中的值返回到对应的输入寄存器。
[0013]在一个优选例中,还包括:每个输入寄存器将存储其中的值写入对应的第一级缓冲时,每个第一级缓冲将存储其中的值写入对应的第二级缓冲。
[0014]在一个优选例中,还包括:每个第一级缓冲将存储其中的值返回到对应的输入寄存器时,每个第二级缓冲将存储其中的值返回到对应的第一级缓冲。
[0015]在一个优选例中,所述硬件运算单元检测到所述中央处理器对特定的输出寄存器的读指令包括:所述硬件运算单元在总线上检测到所述中央处理器对特定的输出寄存器的地址的读取命令。
[0016]在一个优选例中,每个第一级缓冲在所述硬件运算单元检测到所述中央处理器对特定的输出寄存器的读指令后的一个或多个时钟周期,将存储其中的值返回到对应的输入寄存器。
[0017]在一个优选例中,还包括:每个第一级缓冲将存储其中的值返回到对应的输入寄存器后,所述中央处理器继续对所述至少一个输入寄存器中未被写入的输入寄存器的写入过程。
[0018]在一个优选例中,在所述中央处理器对所述至少一个输入寄存器的写入过程结束后,如果所述硬件运算单元收到中断指令,每个输入寄存器将存储其中的值写入对应的第一级缓冲;所述中央处理器在所述至少一个输入寄存器中写入新的值,所述硬件运算单元对新的值执行运算;所述硬件运算单元检测到所述中央处理器对特定的输出寄存器的读指令后,每个第一级缓冲将存储其中的值返回到对应的输入寄存器,并且,所述硬件运算单元对返回的值执行运算。
[0019]在一个优选例中,每个输入寄存器包括一级至八级缓冲。
[0020]在一个优选例中,所述硬件远算单元执行乘法、除法、开方和三角函数运算。
[0021]本申请实施方式相对于现有技术具有以下有益效果:本申请的硬件运算单元的每个输入寄存器连接有至少一级缓冲,在对至少输入寄存器的写入过程中,如果硬件运算单元收到中断指令,每个输入寄存器将存储其中的值写入对应的缓冲中,在输入寄存器中写入新的值,硬件运算单元对新的值执行运算,在输出寄存器中的计算结果均被读取后,每个缓冲将存储其中的值返回到对应的输入寄存器。本申请只需要给输入寄存器增加几个缓冲,可以实现多个线程共享同一硬件运算单元,硬件开销小。并且,线程中断的处理过程对软件来说完全透明,不需要任何处理,和单独操作硬件运算单元一样。
[0022]本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列
出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述
技术实现思路
中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均应该视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。
附图说明
[0023]图1是根据本申请一个实施例中的共享硬件运算单元的局部缓存方法流程示意图。
[0024]图2是根据常规的硬件运算单元的的结构示意图。
[0025]图3是根据本申请一个实施例中的共享硬件运算单元的结构示意图。
具体实施方式
[0026]在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种共享硬件运算单元的局部缓存方法,其特征在于,硬件运算单元连接有至少一个输入寄存器和至少一个输出寄存器,每个输入寄存器连接有至少一级缓冲,所述方法包括:在中央处理器对所述至少一个输入寄存器的写入过程中,如果所述硬件运算单元收到中断指令,每个输入寄存器将存储其中的值写入对应的第一级缓冲;所述中央处理器在所述至少一个输入寄存器中写入新的值,所述硬件运算单元对新的值执行运算;以及所述硬件运算单元检测到所述中央处理器对特定的输出寄存器的读指令后,每个第一级缓冲将存储其中的值返回到对应的输入寄存器。2.如权利要求1所述的局部缓存方法,其特征在于,还包括:每个输入寄存器将存储其中的值写入对应的第一级缓冲时,每个第一级缓冲将存储其中的值写入对应的第二级缓冲。3.如权利要求1所述的局部缓存方法,其特征在于,还包括:每个第一级缓冲将存储其中的值返回到对应的输入寄存器时,每个第二级缓冲将存储其中的值返回到对应的第一级缓冲。4.如权利要求1所述的局部缓存方法,其特征在于,所述硬件运算单元检测到所述中央处理器对特定的输出寄存器的读指令包括:所述硬件运算单元在总线上检测到所述中央处理器对特定的输出寄存器的地址的读取...

【专利技术属性】
技术研发人员:请求不公布姓名
申请(专利权)人:上海灵动微电子股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1