一种面向GPU实现的虚拟IOringbuffer的方法与流程

文档序号:12063449阅读:354来源:国知局

本发明属于软件设计领域,涉及一种面向GPU实现的虚拟IO ringbuffer的方法。



背景技术:

ringbuffer是GPU设计中图形命令传输的重要组成部分,负责主机的GPU之间的命令交互,主机和GPU交互一般由主机接口完成,公开的资料中ringbuffer设计都是直接IO操作,直接IO操作导致ringbuffer数据存储时要进行频繁IO操作,性能低且会导致主机接口操作频繁切换降低主机接口带宽利用率。



技术实现要素:

发明目的:

为了解决现有技术中的问题,本发明提供一种面向GPU实现的虚拟IO ringbuffer的方法,数据存储时频繁的IO操作,提高ringbuffer数据存储速率和主机接口带宽利用率。

技术方案:

本发明的技术方案是:

一种面向GPU实现的虚拟IO ringbuffer的方法,包括:

步骤1、ringbuffer接口(1)初始化ringbuffer虚拟IO控制(2)和ringbuffer IO控制(3)所包含的所有信息;所述所有信息包括:ringbuffer IO控制(3)的读指针、写指针、ringbuffer大小、数据传输启动控制;ringbuffer虚拟IO控制(2)的空闲空间首地址和空闲空间大小;所述ringbuffer虚拟IO控制(2)的空闲空间首地址是指ringbuffer IO控制(3)中ringbuffer的空闲空间首地址;所述ringbuffer虚拟IO控制(2)的空闲空间大小是指ringbuffer IO控制(3)中ringbuffer的空闲空间大小;

步骤2、当有数据需要存储到ringbuffer上时,首先判断ringbuffer虚拟IO控制(2)中记载的ringbuffer的空闲空间大小是否能够存储当前数据,若可以则直接将待存储数据写入ringbuffer的空闲空间首地址开始的连续空间内,数据存储完成后更新ringbuffer IO控制(3)中的写指针信息;若不可以则ringbuffer虚拟IO控制(2)向ringbuffer IO控制(3)发起同步操作,更新ringbuffer虚拟IO控制(2)信息,重新进行数据存储操作;

步骤3、当收到数据传输启动命令时,发送ringbuffer IO控制(3)中ringbuffer上存储的数据信息,发送完成后更新ringbuffer IO控制(3)中的读指针信息;当ringbuffer中的数据存储满空间时,主动发起数据传输操作,发送完成后更新ringbuffer IO控制(3)中的读指针信息。

ringbuffer IO控制(3)中:

读指针:表示当前ringbuffer数据搬移到的地址或地址标记;

写指针:表示当前ringbuffer数据存储的地址或者地址标记;

ringbuffer大小:ringbuffer空间总大小;

数据传输启动:用于控制ringbuffer中当前存储数据的传输,可被动启动数据传输操作,也可主动启动数据传输操作。

有益效果:

本发明的优点是:本发明提供了一种面向GPU实现的虚拟IO ringbuffer的方法,通过建立虚拟IO操作方式,减少ringbuffer软硬件同步次数,尤其是在ringbuffer频繁的IO操作时,大幅提高ringbuffer数据存储速率和主机接口带宽利用率。

附图说明

图1为一种面向GPU实现的虚拟IO ringbuffer的方法示意图。

具体实施方式

下面结合附图和实施例对本发明做进一步的说明:

一种面向GPU实现的虚拟IO ringbuffer的方法,如图1所示,包括:

步骤1、ringbuffer接口(1)初始化ringbuffer虚拟IO控制(2)和ringbuffer IO控制(3)所包含的所有信息;所述所有信息包括:ringbuffer IO控制(3)的读指针、写指针、ringbuffer大小、数据传输启动控制;ringbuffer虚拟IO控制(2)的空闲空间首地址和空闲空间大小;所述ringbuffer虚拟IO控制(2)的空闲空间首地址是指ringbuffer IO控制(3)中ringbuffer的空闲空间首地址;所述ringbuffer虚拟IO控制(2)的空闲空间大小是指ringbuffer IO控制(3)中ringbuffer的空闲空间大小;

步骤2、当有数据需要存储到ringbuffer上时,首先判断ringbuffer虚拟IO控制(2)中记载的ringbuffer的空闲空间大小是否能够存储当前数据,若可以则直接将待存储数据写入ringbuffer的空闲空间首地址开始的连续空间内,数据存储完成后更新ringbuffer IO控制(3)中的写指针信息;若不可以则ringbuffer虚拟IO控制(2)向ringbuffer IO控制(3)发起同步操作,更新ringbuffer虚拟IO控制(2)信息,重新进行数据存储操作;

步骤3、当收到数据传输启动命令时,发送ringbuffer IO控制(3)中ringbuffer上存储的数据信息,发送完成后更新ringbuffer IO控制(3)中的读指针信息;当ringbuffer中的数据存储满空间时,主动发起数据传输操作,发送完成后更新ringbuffer IO控制(3)中的读指针信息。

ringbuffer IO控制(3)中:

读指针:表示当前ringbuffer数据搬移到的地址或地址标记;

写指针:表示当前ringbuffer数据存储的地址或者地址标记;

ringbuffer大小:ringbuffer空间总大小;

数据传输启动:用于控制ringbuffer中当前存储数据的传输,可被动启动数据传输操作,也可主动启动数据传输操作。

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