CN104572509B - 一种在龙芯计算平台上实现独立显卡显存分配的方法 - Google Patents
一种在龙芯计算平台上实现独立显卡显存分配的方法 Download PDFInfo
- Publication number
- CN104572509B CN104572509B CN201410830800.6A CN201410830800A CN104572509B CN 104572509 B CN104572509 B CN 104572509B CN 201410830800 A CN201410830800 A CN 201410830800A CN 104572509 B CN104572509 B CN 104572509B
- Authority
- CN
- China
- Prior art keywords
- cache
- video memory
- data
- functions
- fence
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种在龙芯计算平台上实现独立显卡显存分配的方法,采用TTM显存管理方法解决了显存访问控制问题。步骤一:基于TTM算法设计面向TTM算法的数据结构定义,创建buffer object数据结构及其基类,实现数据的替换与CPU的映射;步骤二:设计隔离机制实现数据同步,通过对创建的缓冲区fence以实现对缓冲区加锁,进而实现对数据的同步,实现同一时刻多进程或多处理器核对同一缓冲区对象空间的访问:步骤三:采用基于龙芯3B处理器芯片二级cache锁机制的内核调用方法,通过在操作***内核中增加两个***调用sys_scache_lock和sys_scacheunlock,实现对龙芯芯片内二级缓存进行加锁,提高DMA对显存数据的快速存取和读写,结合步骤二的数据同步,实现显卡显存数据访问控制。
Description
技术领域
本发明涉及一种在龙芯计算平台上实现独立显卡显存分配的方法,属于图形图像处理领域。
背景技术
显卡作为计算机中负责处理图形信号的专用设备,在显示器上输出的图形信息均由显卡生成并传送给显示器,因此显卡的性能好坏决定着计算机的显示效果。显卡分为集成显卡和独立显卡。集成显卡是将GPU集成在CPU或北桥芯片中,显存及其相关电路与主板融为一体。独立显卡是指将高性能显示芯片、显存及其相关电路单独集成在一块电路板上,自成一体而作为一块独立的板卡存在,通过标准PCI-E扩展插槽与主板相连接,目前主流的显卡均采用标准PCI-E×16金手指硬件接口。
目前,应用于图形图像处理的国产计算平台主要采用基于国外GPU芯片的商用独立显卡。但是,由于商用高性能显卡不公开其基于Windows+X86平台的驱动程序源码,将目前主流的显卡移植到自主软硬件平台技术能力受限。当前只有有限的几款非主流独立显卡的驱动实现了在自主可控平台上的移植,且驱动程度不彻底,无法彻底发挥独立显卡性能。同时由于自主硬件平台本身的性能局限,CPU对DDR的读写速率较低,支持内存容量有限,极大限制了大容量图形图像数据动态分享***内存,影响图形图像显示效果。
显存分配是显卡驱动程序的核心,其效率决定了显卡驱动程序的效率。目前基于开源社区的驱动程序源码在显存分配上采用GEM或类似GEM的显存管理算法,在不清楚GPU内部细节的情况下,该类方法无法高效地完成显存的动态分配和高效快速存取,影响了显卡驱动程序的运行效率。
由于国产计算平台面世时间不长,相关类似技术或发明较少。目前,未见与本发明类似的发明专利、技术成果或实现方案。
发明内容
本发明提供一种在龙芯计算平台上实现独立显卡显存分配的方法,采用TTM显存管理方法解决了显存访问控制问题,重点实现了基于TTM的显存同步机制;同时针对龙芯CPU的二级cache锁结构,通过修改操作***内核实现基于二级cache的锁机制,实现对局部性显存数据的直接cache高效存取,进而提升显存数据的存取效率。
该一种在龙芯计算平台上实现独立显卡显存分配的方法,包括以下步骤:
步骤一:基于TTM算法设计面向TTM算法的数据结构定义,创建bufferobject数据结构及其基类,实现数据的替换与CPU的映射;
步骤二:设计隔离机制实现数据同步,通过对创建的缓冲区fence以实现对缓冲区加锁,进而实现对数据的同步,实现同一时刻多进程或多处理器核对同一缓冲区对象空间的访问:
2.1定义fence及其对象的数据结构,每当创建一个缓冲区对象时,TTM会生成一个对应的fence,当其他的进程想要访问这个缓冲区对象时,首先申请fence,如果不成功则将此进程放入等待队列,当fence被释放时,触发fence完成中断,并去等待队列中寻找优先级最高的进程,唤醒进程,执行相应操作;
2.2当应用程序调用步骤一所述的buffer object时,首先查看fence中的count值;若其大于0则将对count实行减1操作,同时对缓冲区对象进行相应操作,操作完毕后将对count值实行加1操作,调用needed_flush函数查看哪些信号需要被触发,其中needed_flush函数为通知哪些类型的信号在被调用的时候会被触发的函数;之后调用flush函数,其中flush函数为触发位域中对应的信号类型的函数,并且通过needed_flush函数的结果来管理位域的各个位;若count值小于或者等于0,则将此应用程序放入等待队列中;然后调用wait函数,wait函数用于判断当前进程或子进程是否结束,其返回值为非零值时说明驱动会覆盖TTM的wait函数,返回0表明wait函数返回正常,如果wait函数返回值非0,则调用驱动的wait函数,然后继续等待;当应用程序在等待队列的首位时,等待信号的到来,如果信号发生,进行和上面的程序同样的操作;如果等待时间超过fence的生存周期,则触发lockup函数,lockup函数为返回向量或数组中的数值函数,判断是GPU的lockup还是其他,如果是GPU,重启GPU,继续等待;如果不是,增加生存周期,继续等待;
步骤三:采用基于龙芯3B处理器芯片二级cache锁机制的内核调用方法,通过在操作***内核中增加两个***调用sys_scache_lock和sys_scacheunlock,实现对龙芯芯片内二级缓存进行加锁,提高DMA对显存数据的快速存取和读写,结合步骤二的数据同步,实现显卡显存数据访问控制。
步骤三中对龙芯芯片内二级缓存进行加锁,具体为:Linux Kernel中增加两个***调用sys_scache_lock和sys_scacheunlock,把物理地址addr开始的size字节大小的数据锁到二级cache;其中,***调用sys_scache_lock通过配置总线对二级cache模块内部的4组锁窗口寄存器进行动态配置,落在被锁区域中的二级cache块会被锁住,因而不会被替换出二级cache;需要释放时调用sys_scacheunlock进行解锁;此外当二级cache收到DMA写请求时,如果被写的区域在二级cache中命中且被锁住,那么DMA写请求将直接写入到二级cache而不是显存或内存;对于独立显卡DMA设备,通过修改驱动程序,使用二级cache锁机制把缓冲区锁到二级cache,显著提升显存的访问效率。
其中创建完成buffer object及其基类后,每一次应用程序调用bufferobject,***均为其分配到一段内存。
所述的一段内存可被不同程序共享,这一区域仅可被GPU识别,需通调用显卡驱动实现buffer object地址空间与CPU地址空间的映射。
步骤一中利用Linux虚拟内存机制,虚拟显存可获得最大4G的空间,每个bufferobject分配到的显内存空间不一定分配到物理显存,只有当buffer object及其基类被读取或调用时,即触发中断,告知TTM显存管理***并为其分配空间;若在此情况下仍存在显存空间不足,则将暂时不用的buffer object交换出显存并放入硬盘中,等到需要的时候再置换回来。
本发明的有益效果:
1)本发明采用TTM算法实现独立显卡显存管理,在基于国产CPU的计算平台上实现了高性能显卡显存的访问控制,显著提升了国产显控计算平台的图形图像处理能力。
2)本发明充分结合龙芯3B处理器体系结构特征,利用其二级缓存带锁的硬件模块,采用在开源操作***内核中加入***调用的方法实现将局部性数据加入二级缓存的锁中,实现了独立显卡对缓存数据的快速读写,进而提升图形图像处理能力。
附图说明
图1为基于TTM算法的显存访问控制模块实现结构图;
图2为TTM算法执行流程图;
图3为同步机制流程图。
具体实施方式
下面结合附图详细说明本发明.
一、TTM显存管理算法优化与实现
TTM算法是一种通用显存访问控制管理方法,可面向不同CPU计算平台、不同厂商显卡(核心显卡或独立显卡)提供高效的显存数据读写控制机制,实现了全面的功能和良好的效率。
1)TTM算法执行流程
a)上层应用程序通过用户态DRM动态链接库调用DRM设备对象,之后便调用TTM文件对象。TTM对DRM是以文件的形式存在的,即它封装了真正的缓冲区对象,这主要是与Linux下的文件***相匹配。
b)之后,TTM模块被设计成可以高效管理显存的控制模块,从用户角度看,TTM管理的对象是一系列buffer object。buffer object是应用程序分配的一段内存,可以被不同程序共享,它包括一段可以被GPU读取的内存区域。一旦用户创建了一个缓冲区对象,他便可以将这个对象映射到用户的地址空间。只要有应用程序引用一个buffer object,它就被保证不会消失,但是buffer的位置应该会不断变化。
c)一旦应用程序创建一个缓冲区对象,它就会将这个对象映射到自己的地址空间中,尽管可能由于这个缓冲区的地址比较特殊,需要将这个缓冲区重新分配到可以被CPU存取的地址空间中。TTM通过硬件交互层中的ioctl功能模块实现一种称为‘确认’的机制,当缓冲区被确认之前,它是可以任意移动的;但当缓冲区被确认之后,即意味着它一定可以被GPU所存取。之后便是对应的缓冲区对象和fence对象,最终会传递到显卡驱动,实现相应的操作。从而实现了显存的即时、快速存取。
2)TTM算法数据结构设计
TTM显存管理中有很多重要的数据结构,本发明所采用的TTM算法中重点使 用了名为buffer object的数据结构及其基类,通过它的结构与元素,可清晰了解TTM的处理流程。buffer object是TTM模块管理的主要对象,在程序中主要是通过ttm_buffer_object结构体来管理buffer object,它是TTM_buffer_object的基类,实现了数据的替换与CPU的映射。GPU映射由驱动实现,不过对于简单的GPU设计来说,下面的offset可以直接用作GPU的虚拟地址。对于存在多个GPU显存管理上下文来说,驱动应该单独管理这些地址空间,并且用这些object来实现正确的替换和GPU映射。
下面是ttm_buffer_object的定义:
结构里有几个比较重要的项:
Struct drm_user_object_base:user objeet使每个buffer object都对应一个用户空间的32位的handle,并且由此可以追踪object;
Struct ttm_bo_deviee*bdev:是指向buffer object设备结构体的指针;
Struct kref kref:指这个buffer object的引用次数,当refcount等于O时,这个对象被放进delay列表中;
unsigned long buffer_start:用户空间映射的地址的起始位置;
unsigned long num_pages:实际上占用的页数;
struct fenee_object*fence:与buffer object对应的fence object;
struct map list_map_list:bo_type_deviee类型buffer在device里映射的空间;
3)TTM显存管理的同步机制
TTM中的同步是通过隔离机制(也称fence)方法实现。fence类似于信号量,只不过fence加锁的对象是缓冲区对象。每当创建一个缓冲区对象时,TTM会生成一个对应的fence,当其他的进程想要访问这个缓冲区对象时,首先去申请fence,如果不成功的话将此进程放入等待队列,当fence被释放时,触发fence完成中断,并去等待队列中寻找优先级最高的进程,唤醒进程,执行相应操作。
接下来是fence对象的定义:
struct ttm_fence_device{
struct ttm_mem_gIobal*mem_glob:
struct ttm_fence_class_manager*fence_class;
uint32_t num_classes;
atomic t count;
const struct ttm_fence_driver*driver;
};
其中count指的是当前fence对象的个数,这是非常重要的一个变量,当count的值大于0时说明fence管理的区域是可以被读取的,如果等于或小于0,说明此块区域已经被其他程序所占用,此时当前进程只能被放到waiting list里面,直到别的进程释放这一区域;fence_class是所有fence的管理者;driver是fence相应的一系列操作函数,接下来介绍下driver的定义:
它的成员都是一系列回调函数,这些函数实现了fence的一系列操作。
Has_irq函数是由等待者调用的,返回1表明的信号的触发是自动实现的,返回0表明信号的触发需要调用poll函数来实现。
singaied函数是在原子上下文中被调用的,当信号类型改变时此函数便会被调用;
当等待时间超过fence对象的生存时间时,lockup回调函数便会被调用,如果是GPU的lockup,这个函数会重置GPU,调用ttm_fence_handier,传入错误状态然后返回.如果不是这种情况,它会增加生存时间的值,然后继续等待;
Wait函数的返回值为非零值时说明驱动会覆盖TTM的wait函数,返回0表明wait函数返回正常;
Emit函数用来确定所给参数的fence是否存在,返回的是breadcrumb中的序列值;
Frush函数用来触发位域ttm_fenee_class_manager中的pending_flush对应的信号类型,并且通过needed_flush函数的结果来管理位域的各个位;
Needed_flush函数告诉flush函数哪些类型的信号在nush函数被调用的 时候会被触发;
Fence功能的使用流程如下:
a.当应用程序访问一个缓冲区对象时,首先查看fence中的count值。若其大于0将对count实行减1操作,同时对缓冲区对象进行相应操作,操作完毕后将对count值实行加1操作,调用needed_flush函数,查看哪些信号需要被触发,之后调用flush函数;
b.若count值小于或者等于0,则将此程序放入等待队列中,等待队列是以FIFO的形式来存储的。接下来调用wait函数,如果wait函数返回值非0,调用驱动的wait函数,然后继续等待。当程序在等待队列的首位时,等待信号的到来,如果信号发生,进行和上面的程序同样的操作。如果等待时间很长,都己经超过了fence的生存周期时,便会触发lockup函数,判断是GPU的lockup还是其他,如果是GPU,重启GPU,继续等待;如果不是,增加生存周期,继续等待。
图2描述了fence执行的流程。其中count的初始值如果设为1,表明这是一种互斥类型的fence;如果设为大于1的值,则表明这个fence可以实现多个应用程序同时读写并且可以接受竞态,即竞态是可接受范围内。
二、二级缓存锁机制设计及实现
缓存(cache)缓解了CPU数据处理速率与显存存取访问速率之间的矛盾。对于具有良好数据局部性的程序,cache效率将更好发挥.二级cache锁机制通过把数据和指令锁到cache,降低了cache缺失率,从而提高了部分特定应用的性能.二级cache锁机制包括静态和动态,静态锁cache在程序编译时,把程序需要频繁访问的数据锁到cache,直到整个程序运行结束;动态二级cache锁机制,则是在程序运行时,剖析程序运行时特点,把需要经常访问的数据锁到cache.
龙芯3B处理器的二级cache在设计时增加了锁机制,提高一些特定计算任务的性能.通过配置锁窗口寄存器,落在被锁区域中的二级cache块会被锁住,因而不会被替换出二级cache。通过配置总线可以对二级cache模块内部的4组锁窗口寄存器进行动态配置,但必须保证4路二级cache中一定有1路没有被锁住。此外当二级cache收到DMA写请求时,如果被写的区域在二级cache中命中且被锁住,那么DMA写将直接写入到二级cache而不是内存。对于独立显卡(DMA设备)来说,通过修改驱动程序,使用二级cache锁机制把缓冲区锁到二级cache,可以提高IO访问的性能,显著提升显存的访问效率。
具体实现上,Linux Kernel中增加两个***调用sys_scache_lock(unsignedlong addr,unsigned int size)和sys_scacheunlock(unsigned long addr,unsignedint size),把物理地址addr开始的size字节大小的数据锁到二级cache。
Claims (5)
1.一种在龙芯计算平台上实现独立显卡显存分配的方法,其特征在于,包括以下步骤:
步骤一:基于TTM算法设计面向TTM算法的数据结构定义,创建buffer object数据结构及其基类,实现数据的替换与CPU的映射;
步骤二:设计隔离机制实现数据同步,通过对创建的缓冲区fence以实现对缓冲区加锁,进而实现对数据的同步,实现同一时刻多进程或多处理器核对同一缓冲区对象空间的访问:
2.1定义fence及所对应对象的数据结构,每当创建一个缓冲区对象时,TTM会生成一个对应的fence,当其他的进程想要访问这个缓冲区对象时,首先申请fence,如果不成功则将其他的进程放入等待队列,当fence被释放时,触发fence完成中断,并去等待队列中寻找优先级最高的进程,唤醒进程,执行相应操作;
2.2当应用程序调用步骤一所述的buffer object时,首先查看fence中的count值;若其大于0则将对count实行减1操作,同时对缓冲区对象进行相应操作,操作完毕后将对count值实行加1操作,调用needed_flush函数查看哪些信号需要被触发,其中needed_flush函数为通知哪些类型的信号在被调用的时候会被触发的函数;之后调用flush函数,其中flush函数为触发位域中对应的信号类型的函数,并且通过needed_flush函数的结果来管理位域的各个位;若count值小于或者等于0,则将此应用程序放入等待队列中;然后调用wait函数,wait函数用于判断当前进程或子进程是否结束,wait函数的返回值为非零值时说明驱动会覆盖TTM的wait函数,返回0表明wait函数返回正常,如果wait函数返回值非0,则调用驱动的wait函数,然后继续等待;当应用程序在等待队列的首位时,等待信号的到来,如果信号发生,则返回执行2.2所描述的查看fence中的count值操作及后续步骤,直至通过needed_flush函数的结果来管理位域的各个位;如果等待时间超过fence的生存周期,则触发lockup函数,lockup函数为返回向量或数组中的数值函数,判断是GPU的lockup还是其他,如果是GPU,重启GPU,继续等待;如果不是,增加生存周期,继续等待;
步骤三:采用基于龙芯3B处理器芯片二级cache锁机制的内核调用方法,通过在操作***内核中增加两个***调用sys_scache_lock和sys_scacheunlock,实现对龙芯芯片内二级缓存进行加锁,结合步骤二的数据同步,实现显卡显存数据访问控制。
2.如权利要求1所述的一种在龙芯计算平台上实现独立显卡显存分配的方法,其特征在于,步骤三中对龙芯芯片内二级缓存进行加锁,具体为:Linux Kernel中增加两个***调用sys_scache_lock和sys_scacheunlock,把物理地址addr开始的size字节大小的数据锁到二级cache;其中,***调用sys_scache_lock通过配置总线对二级cache模块内部的4组锁窗口寄存器进行动态配置,落在被锁区域中的二级cache块会被锁住,因而不会被替换出二级cache;需要释放时调用sys_scacheunlock进行解锁;此外当二级cache收到DMA写请求时,如果被写的区域在二级cache中命中且被锁住,那么DMA写请求将直接写入到二级cache而不是显存或内存;对于独立显卡DMA设备,通过修改驱动程序,使用二级cache锁机制把缓冲区锁到二级cache。
3.如权利要求1所述的一种在龙芯计算平台上实现独立显卡显存分配的方法,其特征在于,其中创建完成buffer object及其基类后,每一次应用程序调用buffer object,***均为应用程序所调用的buffer object分配到一段内存。
4.如权利要求3所述的一种在龙芯计算平台上实现独立显卡显存分配的方法,其特征在于,所述的一段内存可被不同程序共享,且仅可被GPU识别,需要通过调用显卡驱动实现buffer object地址空间与CPU地址空间的映射。
5.如权利要求1所述的一种在龙芯计算平台上实现独立显卡显存分配的方法,其特征在于,步骤一中利用Linux虚拟内存机制,虚拟显存可获得最大4G的空间,每个bufferobject分配到的显示内存空间不一定分配到物理显存,只有当buffer object及其基类被读取或调用时,即触发中断,告知TTM显存管理***并为buffer object分配空间;若在所述4G的空间均使用的情况下仍存在显存空间不足,则将暂时不用的buffer object交换出显存并放入硬盘中,等到需要的时候再置换回来。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410830800.6A CN104572509B (zh) | 2014-12-26 | 2014-12-26 | 一种在龙芯计算平台上实现独立显卡显存分配的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410830800.6A CN104572509B (zh) | 2014-12-26 | 2014-12-26 | 一种在龙芯计算平台上实现独立显卡显存分配的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572509A CN104572509A (zh) | 2015-04-29 |
CN104572509B true CN104572509B (zh) | 2017-11-07 |
Family
ID=53088627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410830800.6A Active CN104572509B (zh) | 2014-12-26 | 2014-12-26 | 一种在龙芯计算平台上实现独立显卡显存分配的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572509B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017035813A1 (zh) * | 2015-09-02 | 2017-03-09 | 华为技术有限公司 | 一种数据访问方法、装置及*** |
CN107688494B (zh) * | 2016-08-05 | 2021-05-11 | 深圳中电长城信息安全***有限公司 | 一种内存分配方法和装置 |
CN109144578B (zh) * | 2018-06-28 | 2021-09-03 | 中国船舶重工集团公司第七0九研究所 | 一种基于龙芯计算机的显卡资源配置方法及装置 |
CN109656868B (zh) * | 2018-11-19 | 2022-12-06 | 浙江大学宁波理工学院 | 一种cpu与gpu之间的内存数据转移方法 |
CN111158625A (zh) * | 2019-12-31 | 2020-05-15 | 中国电子科技集团公司第十五研究所 | 一种基于飞腾平台的双独立显卡动态切换装置及方法 |
CN111478947B (zh) * | 2020-03-20 | 2023-02-17 | 珠海高凌信息科技股份有限公司 | 主备控制板实时同步方法及*** |
CN111737019B (zh) * | 2020-08-31 | 2020-12-11 | 西安芯瞳半导体技术有限公司 | 一种显存资源的调度方法、装置及计算机存储介质 |
CN112465689B (zh) * | 2020-10-21 | 2023-04-07 | 武汉凌久微电子有限公司 | 基于可见显存交换区的gpu不可见显存管理方法及*** |
CN112698874B (zh) * | 2020-12-29 | 2022-12-09 | 麒麟软件有限公司 | 一种麒麟***中ast显卡和独立显卡同时显示的方法 |
CN113377545B (zh) * | 2021-07-08 | 2023-11-14 | 支付宝(杭州)信息技术有限公司 | 用于分配gpu物理内存的方法及装置 |
CN116188240B (zh) * | 2022-12-28 | 2024-04-05 | 摩尔线程智能科技(北京)有限责任公司 | 一种用于容器的gpu虚拟化方法及装置、电子设备 |
CN116959289B (zh) * | 2023-09-21 | 2024-03-22 | 山东通维信息工程有限公司 | 一种基于车路协同技术的智慧停车***及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101351773A (zh) * | 2005-12-30 | 2009-01-21 | 英特尔公司 | 基于存储器访问数据结构执行直接高速缓存访问事务 |
CN102455886A (zh) * | 2011-07-05 | 2012-05-16 | 中标软件有限公司 | 一种动态识别和配置外接显示器的方法 |
CN102789384A (zh) * | 2012-07-12 | 2012-11-21 | 北京航空航天大学 | 一种面向龙芯3b处理器的服务器操作***实现方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947051B2 (en) * | 2003-02-18 | 2005-09-20 | Microsoft Corporation | Video memory management |
US20080143720A1 (en) * | 2006-12-13 | 2008-06-19 | Autodesk, Inc. | Method for rendering global illumination on a graphics processing unit |
-
2014
- 2014-12-26 CN CN201410830800.6A patent/CN104572509B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101351773A (zh) * | 2005-12-30 | 2009-01-21 | 英特尔公司 | 基于存储器访问数据结构执行直接高速缓存访问事务 |
CN102455886A (zh) * | 2011-07-05 | 2012-05-16 | 中标软件有限公司 | 一种动态识别和配置外接显示器的方法 |
CN102789384A (zh) * | 2012-07-12 | 2012-11-21 | 北京航空航天大学 | 一种面向龙芯3b处理器的服务器操作***实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104572509A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572509B (zh) | 一种在龙芯计算平台上实现独立显卡显存分配的方法 | |
US20210349763A1 (en) | Technique for computational nested parallelism | |
US9195786B2 (en) | Hardware simulation controller, system and method for functional verification | |
US10217183B2 (en) | System, method, and computer program product for simultaneous execution of compute and graphics workloads | |
US9928109B2 (en) | Method and system for processing nested stream events | |
US9329988B2 (en) | Parallel dynamic memory allocation using a nested hierarchical heap | |
US9755994B2 (en) | Mechanism for tracking age of common resource requests within a resource management subsystem | |
US9436504B2 (en) | Techniques for managing the execution order of multiple nested tasks executing on a parallel processor | |
US9836325B2 (en) | Resource management subsystem that maintains fairness and order | |
US20130198760A1 (en) | Automatic dependent task launch | |
CN103207774B (zh) | 用于解决线程发散的方法和*** | |
CN114816664A (zh) | Gpu虚拟化 | |
US9507638B2 (en) | Compute work distribution reference counters | |
US9921873B2 (en) | Controlling work distribution for processing tasks | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
WO2011009638A1 (en) | Scheduling and communication in computing systems | |
CN103218309A (zh) | 多级指令高速缓存预取 | |
US20140173258A1 (en) | Technique for performing memory access operations via texture hardware | |
US20180349291A1 (en) | Cache drop feature to increase memory bandwidth and save power | |
US11429534B2 (en) | Addressing cache slices in a last level cache | |
US8935475B2 (en) | Cache management for memory operations | |
WO2013148441A1 (en) | Memory heaps in a memory model for a unified computing system | |
US9171525B2 (en) | Graphics processing unit with a texture return buffer and a texture queue | |
US9165396B2 (en) | Graphics processing unit with a texture return buffer and a texture queue | |
US20230289242A1 (en) | Hardware accelerated synchronization with asynchronous transaction support |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220624 Address after: 100083 No. 211 middle Fourth Ring Road, Haidian District, Beijing Patentee after: NO.15 INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp. Patentee after: CLP Taiji (Group) Co., Ltd Address before: 100083 No. 211 middle Fourth Ring Road, Haidian District, Beijing Patentee before: NO.15 INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp. |
|
TR01 | Transfer of patent right |