用于加速器的可扩展输入/输出数据机制的制作方法

文档序号:8430668阅读:612来源:国知局
用于加速器的可扩展输入/输出数据机制的制作方法
【技术领域】
[0001]本发明涉及加速器的数据处理,更具体地说,涉及一种用于由加速器使用的可扩展输入/输出数据机制的系统。
【背景技术】
[0002]一般而言,中央处理器(CPU)或主机将特定处理任务卸载到加速器,以降低CPU上的工作负荷。用于处理特定任务、诸如场可编程门阵列(FPGA)和图形处理单元(GPU)的加速器的使用变得更加广泛。
[0003]当前,主机和加速器之间的接口是被作为主机上的队列实现,其对加速器将要工作的任务进行异步排队。控制结构通常被主机使用,用于传递任务信息,诸如加速器将执行什么操作、存储器中输入数据的位置、以及存储器中将写输出数据的位置。传统上这些数据位置值对于任务寿命(其是从队列中控制块的创建直到任务完成)而言是静态的。数据位置值的静态属性将任务限制在固定的输入/输出数据量,其必须在创建控制结构以前被确定。
[0004]在许多情况下,在创建控制结构以前,主机存储器中的整个输入/输出区域的规格会要求锁定大量数据/存储器空间用于任务的整个持续时间,包括加速器排队花费的时间在内。此外,由于在创建控制结构时数据输出量可能不是已知的,最差情况估计通常被用于为输出数据预留足够的空间。

【发明内容】

[0005]实施例包括用于提供用于在加速器上执行指令的可扩展任务结构的方法、系统和计算机程序产品。该方法包括使用处理设备创建多个数据描述块,其中多个数据描述块中的每一个具有固定数量的与多个数据描述块中每一个相关联的数据存储位置地址、以及指向多个数据描述块中下一个数据描述块的指针。该方法还包括创建最后数据描述块,其包括固定数量的与最后数据描述块相关联的数据存储位置地址、以及最后块指示器,其中指向多个数据描述块中下一个数据描述块的指针中的一个指向最后数据描述块。基于确定需要其它存储器用于在加速器上执行的指令,该方法包括将最后数据描述块修改成为数据扩展块,数据扩展块包括指向一个或多个新的数据描述块中的一个的指针,一个或多个新的数据描述块中的每一个包括固定数量的数据存储位置地址,并且创建新的最后数据描述块,其包括固定数量的与新的最后数据描述块相关联的数据存储位置、以及最后块指示器。
[0006]其它特征和有益效果是通过本发明的技术实现。本发明的其它实施例和方面在本文被详细描述,并被视为宣告的发明的一部分。为了更好地理解本发明的有益效果和特征,参考说明书和附图。
【附图说明】
[0007]在说明书的结论处,被认为是本发明的主题被特别指出,并在权利要求中被明确地宣告。通过以下结合附图的详细描述,本发明的前述和其它特征以及有益效果是显而易见的,其中:
[0008]图1示出根据示例性实施例的用于实现本文教导的计算机系统的框图;
[0009]图2示出根据示例性实施例的具有用于加速器的可扩展输入/输出数据机制的系统的框图;
[0010]图3示出根据示例性实施例的用于加速器的初始任务结构的框图;
[0011]图4示出根据示例性实施例的数据描述块的框图;
[0012]图5示出根据示例性实施例的用于加速器的扩展任务结构的框图;
[0013]图6示出根据示例性实施例的用于加速器的扩展任务结构的框图;
[0014]图7示出根据示例性实施例的用于加速多个队列处理操作的方法的流程图;
[0015]图8A示出根据示例性实施例的用于加速器的初始任务结构的框图;以及
[0016]图SB示出根据示例性实施例的用于加速器的扩展任务结构的框图。
【具体实施方式】
[0017]本文公开的实施例包括具有用于在加速器上处理任务的可扩展输入/输出数据机制的系统。可扩展输入/输出数据机制被配置为允许在任务运行时对该任务使用的输入和输出区域的扩展。在示例性实施例中,应用可在创建任务时指定输入和输出,并还能在任务正在被加速器处理时,如果加速器靠近充满预定义输出区域,则增加更多用于加速器的输入数据或扩展输出区域。在示例性实施例中,输入/输出数据机制在等待其他方做该其他方被请求的一些事情时,不需要主机或加速器旋转。在示例性实施例中,输入/输出数据机制也可被用于分配和释放来自输入的页面,从而创建当加速器处理输入数据时仅仅一部分输入数据必须被锁定的滑动窗口。
[0018]现在参考图1,其示出用于以本文的教导使用的示例性计算机系统100的框图。本文描述的方法可以以硬件、软件(例如固件)、或其组合实现。在示例性实施例中,本文描述的方法是以硬件实现,并且是诸如个人电脑、工作站、微型计算机、或主计算机的专用或通用数字计算机的一部分。因此,系统100包括通用计算机101。
[0019]在示例性实施例中,就图1中所示的硬件架构而言,计算机101包括处理器105、经由存储器控制器115连接的存储器110、存储设备120、以及一个或多个经由本地输入/输出控制器135通信连接的输入和/或输出(I/O)设备140、145(或外围设备)。输入/输出控制器135可以是例如但不局限于本领域已知的一个或多条总线、或其它有线或无线连接。输入/输出控制器135可具有其它元件,出于简化目的它们被省略,诸如控制器、缓冲器(高速缓冲存储器)、驱动器、中继器、以及接收机,以便实现通信。此外,本地接口可包括实现前述构件之间适当通信的地址、控制、和/或数据连接。存储设备120可包括一个或多个硬盘驱动器(HDD)、固态盘驱动器(SSD)、或任何其它适当形式的存储器。
[0020]处理器105是用于执行(特别是存储在存储器110中的)硬件指令或软件的计算设备。处理器105可以是任何定制或商业上可用的处理器、中央处理单元(CPU)、与计算机101相关联的多个处理器中的辅助处理器、基于半导体的微处理器(以单片机或芯片组形式)、宏处理器、或通常用于执行指令的任何设备。处理器105可包括缓存170,其可以被组织为多个缓存级(L1、L2等)的分层。
[0021]存储器110可包括易失性存储单元(例如随机存取存储器(例如DRAM、SRAM,SDRAM等的RAM))和非易失性存储单元(例如ROM、可擦写可编程只读存储器(EPROM)、电可擦写可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、压缩光盘只读存储器(⑶-ROM)、光盘、磁盘、编码磁带、盒式磁带等)中的任何一个或组合。此外,存储器110可包括电、磁、光、和/或其它类型的存储媒质。注意存储器110可具有分布式结构,其中各个构件远离彼此设置,但可被处理器105访问。
[0022]存储器110中的指令可包括一个或多个分开的程序,每个包括用于实现逻辑功能的可执行指令的顺序列表。在图1的实例中,存储器110中的指令包括合适的操作系统
(OS)111。操作系统111实质上控制其它计算机程序的执行,并提供调度、输入-输出控制、文件和数据管理、存储器管理、以及通信控制和相关服务。
[0023]在示例性实施例中,常规键盘150和鼠标155可被连接到输入/输出控制器135。其它诸如I/o设备140、145的输出设备可包括输入设备,例如但不局限于打印机、扫描仪、麦克风等。最后,I/O设备140、145还可包括与输入和输出通信的设备,例如但不局限于网络接口卡(NIC)或调制器/解调器(用于访问其它文件、设备、系统或网络)、射频(RF)或其它的收发信机、电话接口、桥、路由器等。系统100还可包括连接到显示器130的显示控制器125。在示例性实施例中,系统100还可包括用于连接到网络165的网络接口 160。网络165可以是用于计算机101和任何外部服务器、客户端等之间经由宽带连接通信的、基于IP的网络。网络165在计算机101和外部系统之间传输和接收数据。在
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1