掌桥专利:专业的专利平台
掌桥专利
首页

独立显卡管理方法、独立显卡和电子设备

文献发布时间:2023-06-19 13:29:16


独立显卡管理方法、独立显卡和电子设备

技术领域

本申请属于计算机技术领域,具体涉及一种独立显卡管理方法、独立显卡和电子设备。

背景技术

参考图1,传统的独立显卡中的管理模块以固定管线的方式对独立显卡内的各子引擎进行管理。管理模块执行的任务包括:从主机端处理器接收寄存器指令(寄存器指令仅包含简单的命令信息,比如说启动渲染),读取主机端内存中的命令块(独立显卡进行图形渲染所需要的大量信息来自于命令块,命令块中的命令例如是渲染多少个三角形,以及指定三角形的位置,一个命令块存储一个命令),将读取到的命令解释成指令发送至各子引擎;调度各子引擎的任务执行顺序;管理各子引擎的上电初始化、动态功率调节、以及处理各子引擎发出的中断请求等。

以上管理模块的管理方式存在多个缺点:第一、硬件逻辑复杂,需要执行大量的判断语句,需要主机端处理器进行补偿,性能损失较大;第二、不能快速适应子引擎算法的更新。

发明内容

本申请的目的在于针对现有技术的不足之处,提供一种独立显卡管理方法、独立显卡和电子设备,以至少部分解决现有技术中存在的不足。

为解决上述技术问题,本申请采用如下技术方案:一种独立显卡管理方法,包括:第一可编程管理模块进行显卡业务管理,包括通过主机总线接口从主机端内存获取命令,将所述命令解释成指令,控制所述独立显卡中的子引擎执行所述指令;第二可编程管理模块进行显卡系统管理,包括管理所述独立显卡中的子引擎的上电初始化、复位以及工作性能动态调节,并管理显卡内存的上电初始化。

为解决上述技术问题,本申请采用如下技术方案:一种独立显卡,包括第一可编程管理模块、第二可编程管理模块、多个子引擎以及显卡内存;所述第一可编程管理模块用于进行显卡业务管理,包括通过主机总线接口从主机端内存获取命令,将所述命令解释成指令,控制所述独立显卡中的子引擎执行所述指令;所述第二可编程管理模块用于进行显卡系统管理,包括管理所述独立显卡中的子引擎的上电初始化、复位以及工作性能动态调节,并管理显卡内存的上电初始化。

为解决上述技术问题,本申请采用如下技术方案:一种电子设备,包括前述的独立显卡,以及包括主机端处理器、主机端内存,所述主机端处理器用于向所述主机端内存写入供所述第一可编程管理模块解释的命令。

与现有技术相比,本申请的有益效果为:第一可编程管理模块与第二可编程管理模块相互隔离,二者负责不同类型的管理任务(一个是处理主机端处理器发布的任务,调度各子引擎执行该任务;一个是对独立显卡内部各功能模块的工作状态的管理),简化了二者的硬件逻辑,减少对主机端处理器的性能要求,提高整机的性能。如某个子引擎算法更新,则仅需对第一控制模块的控制逻辑更新,由于第一控制模块的控制逻辑相对简单,对其控制逻辑的更新的复杂程度得到降低。

附图说明

图1是现有技术中包含独立显卡的电子设备的结构框图。

图2是本申请实施例提供的包含独立显卡的电子设备的结构框图。

具体实施方式

在本申请中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中存在所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,但是并不排除存在一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。

另外还需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

下面结合附图所示的实施例对本申请作进一步说明。

参考图2,本申请的实施例提供的独立显卡中设置两个独立的可编程管理模块,即第一可编程管理模块1和第二可编程管理模块2。二者将传统独立显卡可编程管理模块执行的任务进行了拆分。

基于图2所示的结构,本申请的实施例提供一种独立显卡管理方法,包括:第一可编程管理模块1进行显卡业务管理,包括通过主机总线接口从主机端内存6获取命令,将所述命令解释成指令,控制所述独立显卡中的子引擎执行所述指令;第二可编程管理模块2进行显卡系统管理,包括管理所述独立显卡中的子引擎的上电初始化、复位以及工作性能动态调节,并管理显卡内存34的上电初始化。

本文的子引擎指的是独立显卡中执行不同类型任务的硬件模块。子引擎例31如是图形渲染子引擎(也称GPU),其可用于3D图像渲染。子引擎32例如是视频编解码子引擎,其可用于视频编解码。子引擎33例如是显示控制子引擎,其可用于将独立显卡中的显卡内存34中帧缓冲区内的显示数据传输至视频编解码子引擎以供视频编解码子引擎进行视频编码。以上均是独立显卡中常见的功能模块,本申请对这些功能模块的功能和结构不作限定。

独立显卡内部各功能模块(即各子引擎)之间通过显卡内部总线4进行通信。

具体地,简单而言,一条命令例如是:画100个三角形。第一可编程管理模块1将该命令解析成指令。例如是第一可编程管理模块1对图形渲染子引擎的特定的寄存器执行写操作,写入值为100。从而图形渲染子引擎绘制100个三角形。当然,一条命令也可以翻译成多条指令。或者第一可编程管理模块1也可以在显卡内存34中写入特定指令。某个子引擎从显卡内存34的特定区域读取指令。

第二可编程管理模块2分别根据各子引擎的忙碌程度调整各子引擎的工作频率和/或工作电压。

例如子引擎的负载增大,则提其工作电压并升高其工作频率;子引擎的负载减小,则降低子引擎的工作频率以及工作电压。

如果某个子引擎发生错误,就需要对该子引擎进行复位。第二可编程管理模块2如收到某个子引擎发送的错误中断,则根据该错误中断判断是否需要对该子引擎进行复位。

第二可编程管理模块2还对各子引擎以及对显卡内存34进行初始化设置。具体地,对各子引擎以及对显示内存中特定寄存器进行设置,从而设定它们的工作状态。

例如配置某个子引擎的使能寄存器为1,使能该子引擎。

例如配置某个子引擎的工作区域内存地址寄存器,使该子引擎在显卡内存34中能够有工作区域。

例如配置某个子引擎的中断信号使能寄存器,使该子引擎能够向第二可编程管理模块2上报中断请求。

通常子引擎复位后的状态与初始化时之后的状态是相同的。

例如配置显卡内存34自身的工作频率、设置内存训练参数等。

可以发现,对各子引擎的业务管理交给第一可编程管理模块1处理,将与业务无关的系统管理任务交给第二可编程管理模块2处理。

主机端处理器5向独立显卡发出的任何命令都是发送给第一可编程管理模块1的,第二可编程管理模块2与主机端处理器5无通信。第二可编程管理模块2是自洽的自管理的。第一可编程管理模块1与第二可编程管理模块2相互隔离,二者负责不同类型的管理任务(一个是处理主机端处理器5发布的任务,调度各子引擎执行该任务;一个是对独立显卡内部各功能模块的工作状态的管理),简化了二者的硬件逻辑,减少对主机端处理器5的性能要求,提高整机的性能。如某个子引擎算法更新,则仅需对第一可编程管理模块1的控制逻辑更新,由于第一可编程管理模块1的控制逻辑相对简单,对其控制逻辑的更新的复杂程度得到降低。同样道理,对第二可编程管理模块2的控制逻辑的更新也是更简单的。

在一些实施例中,从主机端内存6所获取的命令经第一可编程管理模块1解释成的指令包括:任务指令和同步指令。

任务指令是要求子引擎执行具体的任务。任务指令例如是要求GPU画一个红色三角形。

同步指令是控制各子引擎的步调的同步。同步指令例如控制视频编码子引擎等待GPU渲染完一帧图像后,开始对这一帧图像进行视频编码。

在一些实施例中,主机端内存6存储一个命令队列,第一可编程管理模块1定期从命令队列获取命令;或者,主机端内存6存储多个命令队列,第一可编程管理模块1轮流且定期从各命令队列获取命令。

命令队列是主机端处理器5中的显卡驱动程序写在主机端内存6里,供GPU渲染连续多帧图像的命令。

命令队列是个先进先出的结构,主机端处理器5向命令队列中写入命令,第一可编程管理模块1通过PCIe总线7读取命令队列中的命令,第一可编程管理模块1不需要存储这些命令。

独立显卡可以在多个命令队列之间按一定粒度轮流执行这些命令队列中的命令。例如按照命令队列A->命令队列B->命令队列C->命令队列A这样的顺序循环执行。第一可编程管理模块1在切换队列时做上下文(context)切换动作。

主机端处理器5向命令队列中的写入动作与第一控制模块的读取动作互不影响,提供了独立显卡的工作性能。

在一些实施例中,第二可编程管理模块2接收子引擎发送的错误中断,根据错误中断对发出错误中断的子引擎执行复位操作或对全部子引擎执行复位操作。

即第二可编程管理模块2根据该错误中断的严重程度进行判断是对单个子引擎进行复位还是对全部子引擎进行复位。

在一些实施例中,第一可编程管理模块1接收来自于第二可编程管理模块2的复位指令而对其自身执行复位操作。

即第二可编程管理模块2还可以在第一可编程管理模块1发生错误时控制第一可编程管理模块1进行复位。独立显卡的安全性和稳定性得到保证。

在一些实施例中,第一可编程管理模块1接收来自于主机端处理器5的关闭指令而关闭第一可编程管理模块1。

第一可编程管理模块1只负责具体独立显卡业务的管理,如果主机端处理器5上运行的显卡驱动程序判断当前独立显卡没有业务要执行,主机端处理器5可以关闭第一可编程管理模块1。

第二可编程管理模块2则需要一直处于工作状态,保证独立显卡始终处于待命状态。

如此,在保证独立显卡性能的前提下降低功耗。

具体地,第一可编程管理模块1和第二可编程管理模块2均为微处理单元MCU。由于MCU是可编程的,第一可编程管理模块1以及第二可编程管理模块2的控制逻辑都能动态的更新,并且更新的复杂程度得到了降低。

基于与前述实施例相同的发明构思,本申请的实施例还挺一种独立显卡,参考图2,其包括第一可编程管理模块1、第二可编程管理模块2、多个子引擎以及显卡内存34;第一可编程管理模块1用于进行显卡业务管理,包括通过主机总线接口从主机端内存6获取命令,将所述命令解释成指令,控制独立显卡中的子引擎执行命令对应的指令;第二可编程管理模块2用于进行显卡系统管理,包括管理所述独立显卡中子引擎的上电初始化、复位以及工作性能动态调节,并管理显卡内存34的上电初始化。

在一些实施例中,从主机端内存6所获取的命令经第一可编程管理模块1解释成的指令包括:任务指令和同步指令。

在一些实施例中,主机端内存6存储一个命令队列,第一可编程管理模块1具体用于:定期从命令队列获取命令;或者,主机端内存6存储多个命令队列,第一可编程管理模块1具体用于轮流且定期从各命令队列获取命令。

在一些实施例中,第二可编程管理模块2具体用于:接收子引擎发送的错误中断,根据错误中断对发出错误中断的子引擎执行复位操作或对全部子引擎执行复位操作。

在一些实施例中,第二可编程管理模块2具体用于:分别根据各子引擎的忙碌程度调整各子引擎的工作频率和/或工作电压。

在一些实施例中,第一可编程管理模块1具体用于:接收来自于第二可编程管理模块2的复位指令而进行复位操作,和/或,接收来自于主机端处理器5的关闭指令而关闭第一可编程管理模块1。

在一些实施例中,第一可编程管理模块1和第二可编程管理模块2均为微处理单元MCU。

本申请的实施例还提供一种电子设备,包括前述的独立显卡,以及包括主机端处理器5、主机端内存6,主机端处理器5用于向主机端内存6写入供第一可编程管理模块1解释的命令。

该电子设备例如是个人电脑、游戏机等。

在一些实施例中,主机端处理器5向主机端内存6中的命令队列写入命令,主机端处理器5向命令队列写入指令与第一可编程管理模块1读取命令队列中的指令两个操作是异步的。

本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。

本申请的保护范围不限于上述的实施例,显然,本领域的技术人员可以对本申请进行各种改动和变形而不脱离本申请的范围和精神。倘若这些改动和变形属于本申请权利要求及其等同技术的范围,则本申请的意图也包含这些改动和变形在内。

相关技术
  • 独立显卡管理方法、独立显卡和电子设备
  • 独立显卡的数据流控制方法、装置和独立显卡
技术分类

06120113694037