【技术实现步骤摘要】
协作并行存储器分配
[0001]至少一个实施例涉及用于由一个或更多个软件程序执行多线程存储器分配的处理资源。例如,至少一个实施例涉及用于由一个或更多个程序使用用于并行计算的应用程序编程接口(诸如CUDA)并行分配、搜索和解除分配存储器的处理器或计算系统,其实现本文描述的各种新颖技术。
技术介绍
[0002]并行处理单元(PPU)(诸如图形处理单元(GPU))允许并行执行多个软件程序。促进并行计算的现代应用程序编程接口(API)(例如计算统一设备架构(CUDA))允许软件程序请求PPU上的暂存存储器区,以便存储用于各种计算的数据。随着多个软件应用在PPU上并行运行,存储器分配和解除分配已经成为重要的性能瓶颈。
附图说明
[0003]图1是示出了根据至少一个实施例由一个或更多个协作组进行的暂存存储器操作的框图;
[0004]图2是示出了根据至少一个实施例的用于执行存储器操作的动态基数树的框图;
[0005]图3是示出了根据至少一个实施例的用于执行存储器操作的存储在动态基数树中的状态值的框图;
[0006]图4A是示出了根据至少一个实施例的认领状态的框图;
[0007]图4B是示出了根据至少一个实施例的计数状态的框图;
[0008]图5A是示出了根据至少一个实施例的使用动态基数树的并行存储器解除分配的框图;
[0009]图5B示出了根据至少一个实施例的用于执行并行存储器解除分配的过程;
[0010]图6A是示出了根据至少一个实施例的使用动态基数树的并行 ...
【技术保护点】
【技术特征摘要】
1.一种处理器,包括:一个或更多个电路,用于至少部分地基于一个或更多个存储器部分的大小而将所述一个或更多个存储器部分专门地分配给一个或更多个指令线程,而另一线程能够分配一个或更多个其他存储器部分。2.根据权利要求1所述的处理器,其中:所述一个或更多个存储器部分被包含在相关存储器块树的存储器块中;所述一个或更多个指令线程的第一组并发地检查所述相关存储器块树,并且确定所述第一组中的第一线程和用于分配的第一存储器块;所述第一线程在所述第一存储器块中定位用于所述分配的第一一个或更多个存储器部分;所述第一线程更新所述第一存储器块的状态,以指示所述第一一个或更多个存储器部分被分配;所述第一线程解锁所述第一存储器块;以及当所述第一线程定位所述第一一个或更多个存储器部分时,第二线程能够分配或解除分配所述相关存储器块树的第二块中的所述一个或更多个其他存储器部分。3.根据权利要求2所述的处理器,其中至少部分地基于所述大小来确定包含所述一个或更多个存储器部分的所述相关存储器块树的所述存储器块。4.根据权利要求2所述的处理器,其中所述第一组通过由所述第一组中的每个线程投票来确定所述第一线程和所述第一存储器块。5.根据权利要求2所述的处理器,其中所述状态包括指示关于所述存储器块中包含的所述一个或更多个存储器部分的信息的一个或更多个值。6.根据权利要求2所述的处理器,其中如果所述第一存储器块不包含待分配的所述第一一个或更多个存储器部分,则所述第一线程在所述相关存储器块树的第三存储器块中定位待分配的所述第一一个或更多个存储器部分,所述第三存储器块在所述相关存储器块树的不同分支中。7.根据权利要求2所述的处理器,其中所述第一线程通过修改所述第一块的所述状态来锁定所述第一块。8.根据权利要求2所述的处理器,其中所述状态包括指示所述相关存储器块树中将被并发地检查的附加存储器块的一个或更多个值。9.根据权利要求2所述的处理器,其中所述第一块的第一存储器部分和第二存储器部分指示包含第三一个或更多个存储器部分的第三块。10.根据权利要求2所述的处理器,其中如果由于所述第一存储器块被锁定,所述第二线程不能够解除分配所述一个或更多个其他存储器部分,则所述第一线程执行所述一个或更多个其他存储器部分的解除分配。11.根据权利要求1所述的处理器,其中通过执行对应用程序编程接口的函数调用以由所述一个或更多个指令线程并行计算,来专门地分配所述一个或更多个存储器部分。12.一种系统,包括:一个或更多个处理器,用于至少部分地基于一个或更多个存储器部分的大小来将所述一个或更多个存储器部分专门地分配给一个或更多个指令线程,而另一线程能够分配一个
或更多个其他存储器部分。13.根据权利要求12所述的系统,其中:所述一个或更多个存储器部分被包含在存储器块集合的第一块中;所述第一块由所述一个或更多个指令线程的第一组中的第一线程锁定;所述第一块中的所述一个或更多个存储器部分由所述第一线程认领;以及当所述第一块由所述第一线程锁定时,所述一个或更多个指令线程的第二组中的第二线程能够认领或不认领所述存储器块集合中的第二块中的所述一个或更多个其他存储器部分。14.根据权利要求13所述的系统,其中在认领所述第一块中的所述一个或更多个存储器部分之后,所述第一线程解锁所述第一块。15.根据权利要求13所述的系统,其中所述第二块不被所述第一线程锁定。16.根据权利要求13所述的系统,其中至少部分地基于所述大小来确定所述存储器块集合中的所述第一块和所述第二块。17.根据权利要求13所述的系统,其中所述存储器块集合中的每个块与指示关于所述块的信息的状态值相关联。18.根据权利要求17所述的系统,其中通过在与所述第一块相关联的所述状态中递增引用计数来锁定所述第一块。19.根据权利要求17所述的系统,其中通过更新与所述第一块相关联的所述状态来认领所述第一块中的所述一个或更多个存储器部分。20.根据权利要求12所述的系统,其中通过执行对应用程序编程接口的函数调用以由所述一个或更多个指令线程并行计算,来专门地分配所述一个或更多个存储器部分。21.一种机器可读介质,具有存储在其上的应用程序编程接口(API),所述API如果由一个或更多个处理器执行,则使所述一个或更多个处理器至少:由所述API至少部分地基于一个或更多个存储器部分的大小来将所述一个或更多个存储器部分专门地分配给一个或更多个指令线程,而另一线程能够分配一个或更多个其他存储器部分。22.根据权利要求21所述的机器可读介质,其中:所述一个或更多个存储器部分和所述一个或更多个其他存储器部分被...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。