会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际申请 / 请求书 / 请求 / 优化系统调用请求通信

优化系统调用请求通信

阅读:1026发布:2020-06-21

IPRDB可以提供优化系统调用请求通信专利检索,专利查询,专利分析的服务。并且本文提供了一种用于优化系统调用通信的方法。所述方法包括为波前中的每个工作项目存储系统调用以及将所述所存储的系统调用传输至处理器以用于执行。所述方法还包括响应于所述传输,针对所述波前中的每个工作项目来接收结果。,下面是优化系统调用请求通信专利的具体信息内容。

1.一种用于优化系统调用通信的方法,其包括:在对应的单指令多数据(SIMD)元素中为波前中的每个工作项目存储信息以处理系统调用请求;

将所述SIMD元素集合为SIMD向量以创建系统调用请求数据结构;

将所述SIMD向量传输至处理器以用于执行;以及针对每个工作项目来接收结果。

2.如权利要求1所述的方法,其还包括使中央处理器(CPU)可见的高优先级队列内的所述SIMD向量入队。

3.如权利要求1所述的方法,其中每个SIMD元素包括功能选择器、自变量列表以及用于所述结果的存储空间。

4.如权利要求1所述的方法,其中所述SIMD向量包括来自多个波前的系统调用请求。

5.一种在具有至少一个处理器的计算机中执行的方法,其包括:接收单指令多数据(SIMD)向量,其中所述SIMD向量包括与来自波前中的每个工作项目的系统调用请求对应的SIMD元素;

执行每个SIMD元素中的每个系统调用请求;以及通过所述SIMD向量将每个系统调用的结果传输至所述波前中的每个工作项目。

6.如权利要求5所述的方法,其中所述接收包括接收图形处理设备可见的高优先级队列中的SIMD向量。

7.一种用于优化系统调用通信的系统,其包括:存储器,其被配置来在对应的单指令多数据(SIMD)元素中为波前中的每个工作项目存储信息以处理系统调用请求,其中所述SIMD元素被集合为SIMD向量;以及CPU,其被配置来:执行存储在所述SIMD元素中的每个系统调用请求,以及将每个系统调用请求的结果传输至所述波前中的每个工作项目。

8.如权利要求7所述的系统,其中所述存储器是被配置来使所述单指令多数据(SIMD)向量入队的高优先级队列,所述高优先级队列是CPU可见的。

9.如权利要求7所述的系统,其中每个SIMD元素包括功能选择器、自变量列表以及用于所述结果的存储空间。

10.如权利要求8所述的系统,其中所述SIMD向量包括来自多个波前的系统调用请求。

11.一种用于优化系统调用通信的系统,其包括:存储器;以及

CPU,其被配置来:

接收单指令多数据(SIMD)向量,其中所述SIMD向量包括SIMD元素,所述SIMD元素包含信息以处理针对波前中的每个工作项目的对应的系统调用请求,执行存储在所述SIMD向量中的每个系统调用,以及将每个系统调用的结果传输至所述波前中的每个工作项目。

12.如权利要求11所述的系统,其中所述CPU进一步被配置来:接收来自高优先级队列的所述SIMD向量。

13.一种用于优化系统调用通信的系统,其包括:用于在对应的单指令多数据(SIMD)元素中为波前中的每个工作项目存储信息以处理系统调用请求的装置;

用于将所述SIMD元素集合为SIMD向量以创建系统调用请求数据结构的装置;

用于将所述SIMD向量传输至处理器以用于执行的装置;以及用于针对每个工作项目来接收结果的装置。

14.如权利要求13所述的系统,其还包括用于使中央处理器(CPU)可见的高优先级队列内的所述SIMD向量入队的装置。

15.一种用于优化系统调用通信的系统,其包括:用于接收单指令多数据(SIMD)向量的装置,其中所述SIMD向量包括与来自波前中的每个工作项目的系统调用请求对应的SIMD元素;

用于执行每个SIMD元素中的每个系统调用请求的装置;以及用于通过所述SIMD向量将每个系统调用的结果传输至所述波前中的每个工作项目的装置。

16.如权利要求15所述的系统,其中所述接收包括接收图形处理设备可见的高优先级队列中的所述SIMD向量。

说明书全文

优化系统调用请求通信

[0001] 发明背景发明领域
[0002] 本发明大体上是针对计算系统。更具体来说,本发明是针对一种用于统一计算系统内部的计算部件的体系结构。

背景技术

[0003] 对使用图形处理单元(GPU)来进行一般计算的渴望在最近由于GPU的示例性每单位功率性能和/或成本而变得更加显著。一般来说,GPU的计算能力已以超过对应中央处理器(CPU)平台的计算能力的速率增长。随着移动计算市场和其所必需的支持服务器/企业系统的蓬勃发展,这种增长已被用来提供指定品质的所需用户体验。因此,组合使用CPU和GPU来执行具有数据并行内容的工作量正在成为一项体积技术(volume technology)。
[0004] 然而,GPU传统上已在约束程序设计环境中进行操作,其仅可用于图形的加速。这些约束由以下事实而引起:GPU并不具有与CPU一样丰富的程序设计生态系统。因此,它们的使用已主要限于二维(2D)和三维(3D)图形以及少数前沿的多媒体应用,这些多媒体应用已被习惯地用于处理图形和视频应用程序设计接口(API)。
[0005] 随着多厂商支持的OpenCL 和DirectCompute 标准API和支持工具的出现,GPU在传统应用中的限制已被扩展到传统图形的范围之外。虽然OpenCL和DirectCompute是有希望的开端,但是在创建允许将CPU和GPU组合来像CPU一样流畅地用于大多数程序设计任务的环境和生态系统方面仍存在着许多障碍。
[0006] 现有的计算系统常常包括多个处理设备。例如,一些计算系统包括在独立芯片上的CPU和GPU(例如,CPU可能位于母板上,而GPU可能位于图形卡上)或在单个芯片封装中的CPU和GPU。然而,这两种布置仍包括与以下各项相关的重大挑战:(i)独立的存储系统、(ii)有效调度、(iii)提供进程之间的服务质量(QoS)保证、(iv)程序设计模型以及(v)编译至多个目标指令集体系结构(ISA)-全部都要同时使功耗降到最小。
[0007] 例如,离散的芯片布置迫使系统和软件体系结构设计者利用芯片间接口来使每一个处理器存取存储器。虽然这些外部接口(例如,芯片间接口)对用于配合异构型处理器的存储器等待时间和功耗具有负效应,但是独立的存储系统(即,独立的地址空间)和驱动器管理的共享存储器产生开销,所述开销对细粒卸荷(fine grain offload)来说变得不可接受。
[0008] 在另一个实施例中,一些命令不能在GPU上有效地执行。例如,GPU不能有效地执行涉及操作系统(“OS”)的命令,例如像分配存储器的指令或者将数据打印到计算机屏幕仅可以使用CPU来处理。因为GPU不能执行这些任务,所以GPU向CPU做出请求来执行这些任务。这些请求称为系统调用(syscall)。
[0009] 系统调用对CPU处理来说是昂贵的。经常,系统调用是需要CPU立即注意的高优先级命令。每当CPU接收到系统调用请求时,CPU都会停止处理其当前进程,调用OS,处理所述系统调用,并且接着返回处理其工作。
[0010] 当GPU处理波前时,每个工作项目都可以需要用于存储器分配或GPU不能处理(或不能轻松处理)的其它指令的系统调用。在常规系统中,GPU为每个工作项目向CPU做出单独的系统调用请求。因为工作项目并行地执行,所以每个工作项目向CPU做出相同系统调用请求。
[0011] 每当系统调用请求到达CPU时,CPU都会停止处理其工作,调用OS,处理GPU的请求,并且返回处理其自己的工作。当多个工作项目同时做出单独系统调用请求时,CPU由于重复地暂停其自己的工作、调用OS并且尝试处理来自GPU的系统调用请求而浪费了处理时间。
[0012] 实施方案概述
[0013] 因此,所需要的是用于优化(即,改进)涉及系统调用的CPU与GPU之间的通信的系统和方法。
[0014] 虽然GPU、加速处理单元(APU)以及通用用途的图形处理单元(GPGPU)是这个领域中常用的术语,但是表述“加速处理设备(APD)”被认为是更广义的表述。例如,APD是指硬件和/或软件的任何配合集合,相对于如常规CPU、常规GPU和/或其组合等资源来说,所述任何配合集合以加速方式完成与加速图形处理任务、数据并行任务或嵌套数据并行任务相关的那些功能和计算。
[0015] 本发明的实施方案包括一种用于优化系统调用通信的系统、方法以及制品。所述方法包括为在波前中的每个工作项目存储系统调用以及将所述所存储的系统调用传输至处理器以用于执行。所述方法还包括响应于所述传输,针对所述波前中的每个工作项目来接收结果。
[0016] 以下参照附图详细地描述本发明的另外特征和优点,连同本发明的各种实施方案的结构和操作。应该指出,本发明不限于本文所描述的具体实施方案。本文所提出的这类实施方案仅用于说明性目的。基于本文所包括的教义,一个或多个相关领域的技术人员将会明白额外的实施方案。
[0017] 附图/图表简述
[0018] 并入本文并且形成本说明书的一部分的附图示出本发明,并且与描述一起,进一步用于解释本发明的原理并且用于使相关领域技术人员能够制作并使用本发明。以下参照附图描述本发明的各种实施方案,在所述附图中,相似参考数字自始至终用于指示相似元件。
[0019] 图1A是根据本发明的实施方案的处理系统的说明性方框图。
[0020] 图1B是图1A中所示的APD的说明性方框图图解。
[0021] 图2是在CPU与APD之间的优化通信处理的说明性方框图图解200。
[0022] 图3是APD使用单指令多数据(SIMD)向量来将系统调用请求传递至CPU的说明性流程图300。
[0023] 发明详述
[0024] 在以下详述中,对“一个实施方案”、“实施方案”、“示例实施方案”等的参考指示所描述的实施方案可以包括具体特征、结构或特点,但是每个实施方案可能并没有必要包括所述具体特征、结构或特点。此外,这类短语没有必要是指同一实施方案。另外,当结合一个实施方案描述具体特征、结构或特点时,所主张的是本领域技术人员知道结合无论是否被明确地描述的其它实施方案来实现这种特征、结构或特点。
[0025] 术语“本发明的实施方案”不要求本发明的所有实施方案都包括所论述的特征、优点或操作模式。在不脱离本发明的范围的情况下,可以设计出替代实施方案,并且可能并未详细描述或可能省略本发明的众所周知的元件,以免模糊本发明的相关细节。另外,本文所使用的术语仅出于描述具体实施方案的目的,而并不意图限制本发明。例如,如本文所使用,单数形式的“一个(种)”以及“所述”也意图包括复数形式,除非上下文另有明确指示。还将进一步理解的是,术语“包括”、“包括了”、“包含”和/或“包含了”在本文中使用时指明所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但是并不排除一个或多个其它特征、整体、步骤、操作、元件、部件和/或其群组的存在或添加。
[0026] 图1A是包括CPU102和APD104的统一计算系统100的示例性图解。CPU102可以包括一个或多个单核或多核CPU。在本发明的一个实施方案中,系统100被形成在单个硅芯片或封装上,组合CPU102和APD104以提供统一的程序设计和执行环境。这个环境使得APD104能够像CPU102一样流畅地用于一些程序设计任务。然而,CPU102和APD104被形成在单个硅芯片上并不是本发明的绝对要求。在一些实施方案中,CPU和APD有可能被单独地形成并且被安装在相同或不同的衬底上。
[0027] 在一个实施例中,系统100还包括存储器106、操作系统108以及通信基础设施109。以下更详细地论述操作系统108和通信基础设施109。
[0028] 系统100还包括内核模式驱动器(KMD)110、软件调度器(SWS)112,以及存储器管理单元116,如输入/输出存储器管理单元(IOMMU)。系统100的部件可以被实施为硬件、固件、软件或其任何组合。本领域技术人员将会理解,除了图1A中所示的实施方案中所示的各项之外,系统100可以包括一个或多个软件、硬件以及固件部件,或与图1A中所示的实施方案中所示的各项不同的一个或多个软件、硬件以及固件部件。
[0029] 在一个实施例中,驱动器(如KMD110)典型地通过计算机总线或通信子系统来与设备进行通信,硬件连接至所述计算机总线或通信子系统。当调用程序调用驱动器中的例程时,所述驱动器向设备发出命令。一旦设备将数据发送回到驱动器,所述驱动器就可以调用原始调用程序中的例程。在一个实施例中,驱动器是与硬件有关的并且是操作系统特定的。所述驱动器常常提供任何必要的异步的时间有关的硬件接口所需要的中断处理。设备驱动器,特别是在现代Windows平台上的,能够以内核模式(环0)或以用户模式(环3)进行运行。
[0030] 以用户模式运行驱动器的益处是改进的稳定性,因为写入不良的用户模式设备驱动器不会通过盖写内核存储器来使系统崩溃。另一方面,用户/内核模式转换常常强加相当大的性能开销,从而针对短等待时间和高吞吐量要求禁止用户模式驱动器。内核空间可以由用户模块仅通过使用系统调用来存取。最终用户程序,像UNIX操作系统外壳或其它基于GUI的应用程序,是用户空间的一部分。这些应用程序通过内核支持的功能来与硬件进行交互。
[0031] CPU102可以包括(未图示)控制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或数字信号处理器(DSP)中的一个或多个。例如,CPU102执行控制计算系统100的操作的控制逻辑,所述控制逻辑包括操作系统108、KMD110、SWS112以及应用程序111。在这个说明性实施方案中,根据一个实施方案,CPU102通过例如以下操作来发起并且控制应用程序111的执行:在CPU102和其它处理资源(如APD104)上分配与那个应用程序相关的处理。
[0032] 尤其是APD104执行用于所选定的功能的命令和程序,所述所选定的功能如图形操作和可能例如特别适用于并行处理的其它操作。一般来说,APD104可以被频繁地用于执行图形流水线操作(如像素操作、几何计算),并且将图像渲染至显示器。在本发明的各种实施方案中,APD104还可以基于从CPU102所接收的命令或指令来执行计算处理操作。
[0033] 例如,命令可以被认为是未在ISA中定义并且通常由来自给定ISA或独特硬件块的指令集实现的特殊指令。可以通过特殊处理器(如分派处理器、命令处理器或网络控制器)来执行命令。另一方面,指令可以被认为是例如计算机体系结构内部的处理器的单一操作。在一个实施例中,当使用两个ISA集时,一些指令被用于执行x86程序,而一些指令被用于执行APD/GPU计算单元上的内核。
[0034] 在一个说明性实施方案中,CPU102将所选定的命令传输至APD104。这些所选定的命令可以包括图形命令和服从并行执行的其它命令。可以大致上独立于CPU102来执行还可以包括计算处理命令在内的这些所选定的命令。
[0035] APD104可以包括其自己的计算单元(未图示),如但不限于一个或多个单指令多数据(SIMD)处理核心。如本文所提及,SIMD是数学流水线或程序设计模型,其中通过每个处理元件自己的数据和共享的程序计数器,在多个处理元件中的每一个上同时地执行内核。所有处理元件执行一个完全相同的指令集。预测的使用使得工作项目能够参与或不参与每个所发出的命令。
[0036] 在一个实施例中,每个APD104计算单元可以包括一个或多个标量和/或向量浮点单元和/或算术逻辑单元(ALU)。APD计算单元还可以包括专用处理单元(未图示),如反平方根单元和正弦/余弦单元。在一个实施例中,APD计算单元在本文中统称为着色器核心122。
[0037] 一般来说,具有一个或多个SIMD使得APD104理想地适用于数据并行任务(如在图形处理中常见的)的执行。
[0038] 一些图形流水线操作(如像素处理)和其它并行计算操作可能要求对输入数据元素的流或集合执行同一命令流或计算内核。同一计算内核的相应实例化可以在着色器核心122中的多个计算单元上同时地执行,以便并行地处理这类数据元素。如本文所提及,例如,计算内核是含有在程序中陈述并且在APD/GPU计算单元上执行的指令的功能。这个功能还被称为内核、着色器、着色器程序或程序。
[0039] 在一个说明性实施方案中,每个计算单元(例如,SIMD处理核心)可以执行特定工作项目的相应实例化来处理传入数据。工作项目是由命令在设备上所调用的内核的并行执行的集合中的一个。工作项目可以由一个或多个处理元件执行为在计算单元上执行的工作群组的一部分。
[0040] 工作项目通过其全局ID和局部ID来与所述集合内的其它执行区别开。在一个实施例中,一起同时在单个SIMD引擎上执行的工作群组中的工作项目子集可以被称为波前136。波前的宽度是硬件SIMD引擎的特点。如本文所提及,工作群组是在单一计算单元上执行的相关工作项目的集合。群组中的工作项目执行同一内核并且共享本地存储器和工作群组屏障。
[0041] 在同一SIMD引擎上处理来自一个工作群组的所有波前。一次一个地发出波前上的指令,并且在所有工作项目遵循同一控制流时,每个工作项目执行相同程序。执行掩码和工作项目预测用于使得发散的控制流能够在一个波前内,其中每个单独工作项目实际上可以采取通过内核的唯一代码路径。当工作项目的全集不可在波前开始时间使用时,可以处理部分填充的波前。波前还可以被称为弯曲、向量或线程。
[0042] 可以为波前一次一个地发出命令。当所有工作项目遵循同一控制流时,每个工作项目可以执行相同程序。在一个实施例中,执行掩码和工作项目预测用于启用发散的控制流,其中每个单独工作项目实际上可以采取通过内核驱动器的唯一代码路径。当工作项目的全集不可在开始时间处使用时,可以处理部分波前。例如,着色器核心122可以同时执行预定数量的波前136,每个波前136包括预定数量的工作项目。
[0043] 在系统100内,APD104包括其自己的存储器,如图形存储器130。图形存储器130提供用于在APD104中进行计算期间使用的本地存储器。着色器核心122内的单独计算单元(未图示)可以具有其自己的本地数据储存器(未图示)。在一个实施方案中,APD104包括存取本地图形存储器130以及存取存储器106。在另一个实施方案中,APD104可以包括存取动态随机存取存储器(DRAM)或直接附接至APD104并且与存储器106分离的其它此类存储器(未图示)。
[0044] 在所示实施例中,APD104还包括一个或许多(n个)命令处理器(CP)124。CP124控制APD104内的处理。CP124还从存储器106中的命令缓冲区125检索待执行的命令,并且对这些命令在APD104上的执行进行协调。
[0045] 在一个实施例中,CPU102将基于应用程序111的命令输入适当的命令缓冲区125中。如本文所提及,应用程序是将在CPU和APD内的计算单元上执行的程序部分的组合。
[0046] 多个命令缓冲区125可以用被调度来在APD104上执行的每个进程来维护。
[0047] CP124可以用硬件、固件或软件或其组合来实施。在一个实施方案中,CP124被实施为具有用于实施包括调度逻辑在内的逻辑的微代码的精简指令集计算机(RISC)引擎。
[0048] APD104还包括一个或许多(n个)分派控制器(DC)126。在本申请中,术语“分派”是指由分派控制器执行的命令,所述分派控制器使用上下文状态来为计算单元集合上的工作群组集合发起内核的执行的开始。DC126包括用以发起着色器核心122中的工作群组的逻辑。在一些实施方案中,DC126可以被实施为CP124的一部分。
[0049] 系统100还包括用于从运行列表150选择进程以在APD104上执行的硬件调度器(HWS)128。HWS128可以使用循环法、优先级或基于其它调度策略来从运行列表150选择进程。例如,可以动态地确定优先级。HWS128还可以包括用以管理运行列表150的功能性,例如通过添加新的进程以及通过从运行列表150删除现有进程来管理。HWS128的运行列表管理逻辑有时被称为运行列表控制器(RLC)。
[0050] 在本发明的各种实施方案中,当HWS128发起执行来自RLC150的进程时,CP124开始从对应的命令缓冲区125检索并且执行命令。在一些情况下,CP124可以生成待在APD104内部执行的一个或多个命令,这些命令对应于从CPU102接收的命令。在一个实施方案中,CP124与其它部件一起对APD104上的命令进行区分优先次序并且调度,其方式为改进或最大化对APD104和/或系统100的资源的利用率。
[0051] APD104可以存取或可以包括中断生成器146。中断生成器146可以由APD104配置来在APD104遇到如页面错误等中断事件时中断操作系统108。例如,APD104可以依赖于IOMMU116内的中断生成逻辑来产生以上所指出的页面错误中断。
[0052] APD104还可以包括用于抢先取得当前正在着色器核心122内运行的一个进程的抢先和上下文切换逻辑120。例如,上下文切换逻辑120包括用以停止所述进程并且保存其当前状态(例如,着色器核心122状态和CP124状态)的功能性。
[0053] 如本文所提及,术语“状态”可以包括初始状态、中间状态和最终状态。初始状态是机器根据程序来处理输入数据集以便产生数据输出集合的开始点。存在例如需要在几个点处被存储以使得处理能够向前进的中间状态。这个中间状态有时被存储来允许当由某一其它进程中断时在稍后时间处继续执行。还存在可以被记录为输出数据集的一部分的最终状态。
[0054] 抢先和上下文切换逻辑120还可以包括用以将另一个进程上下文切换至APD104中的逻辑。用以将另一个进程上下文切换成在APD104上运行的功能性可以包括例如通过CP124和DC126来实例化所述进程以在APD104上运行,为这个进程恢复任何先前保存的状态,并且开始其执行。
[0055] 存储器106可以包括非永久性存储器,如DRAM(未图示)。存储器106可以在执行应用程序或其它处理逻辑的若干部分期间存储例如处理逻辑指令、常量值以及变量值。例如,在一个实施方案中,用以在CPU102上执行一个或多个操作的控制逻辑的若干部分可以在由CPU102执行操作的相应部分期间驻留在存储器106内。如本文所使用的术语“处理逻辑”或“逻辑”是指控制流命令、用于执行计算的命令以及用于相关资源存取的命令。
[0056] 在执行期间,相应的应用程序、操作系统功能、处理逻辑命令以及系统软件可以驻留在存储器106中。对操作系统108很重要的控制逻辑命令在执行期间通常将驻留在存储器106中。包括例如KMD110和软件调度器112在内的其它软件命令在系统100的执行期间也可以驻留在存储器106中。
[0057] 在这个实施例中,存储器106包括由CPU102使用来将命令发送到APD104的命令缓冲区125。存储器106还包含进程列表和进程信息(例如,活动列表152和进程控制块154)。这些列表以及信息由在CPU102上执行的调度软件使用来将调度信息传递至APD104和/或相关调度硬件。存取存储器106可以由耦合到存储器106的存储器控制器140管理。
例如,来自CPU102或来自其它设备的对从存储器106读取或写入存储器106的请求由所述存储器控制器140管理。
[0058] 转回参看系统100的其它方面,IOMMU116是一个多上下文存储器管理单元。
[0059] 如本文所使用,上下文(有时称为进程)可以被认为是内核在其中执行的环境和在其中定义同步与存储器管理的领域。上下文包括设备集合、可由这些设备存取的存储器、对应的存储器特性以及用来调度一个或多个内核的执行或在存储器对象上的操作的一个或多个命令队列。另一方面,进程可以被认为是程序的执行,因为应用程序将创建在计算机上运行的进程。操作系统可以创建数据记录和虚拟存储器地址空间来使程序执行。程序执行的存储器和当前状态可以被称作进程。操作系统将为进程调度任务以在存储器上从初始状态至最终状态进行操作。
[0060] 转回参看图1A中所示的实施例,IOMMU116包括用以执行用于包括APD104在内的设备的存储器页面存取的虚拟至物理地址翻译的逻辑。IOMMU116还可以包括用以生成中断的逻辑,例如当由如APD104等设备的页面存取导致页面错误时生成中断。IOMMU116还可以包括或能够存取翻译旁视缓冲区(TLB)118。作为实例,TLB118可以在内容可寻址存储器(CAM)中实施,以便应由APD104对存储器106中的数据所做出的请求而加速逻辑(即,虚拟)存储器地址至物理存储器地址的翻译。
[0061] 在所示实施例中,通信基础设施109视需要互连系统100的部件。通信基础设施109可以包括(未图示)外围部件互连(PCI)总线、扩展的PCI(PCI-E)总线、高级微控制器总线体系结构(AMBA)总线、加速图形端口(AGP)或此类通信基础设施中的一个或多个。通信基础设施109还可以包括以太网,或类似网络,或满足应用程序的数据传送速率要求的任何适当物理通信基础设施。通信基础设施109包括用以互连包括计算系统100的部件在内的部件的功能性。
[0062] 在这个实施例中,操作系统108包括用以管理系统100的硬件部件以及用以提供常见服务的功能性。在各种实施方案中,操作系统108可以在CPU102上执行,并且提供常见服务。这些常见服务可以包括例如调度用于在CPU102内部执行的应用程序、错误管理、中断服务以及处理其它应用程序的输入和输出。
[0063] 在一些实施方案中,基于由如中断控制器148的中断控制器生成的中断,操作系统108调用适当的中断处理例程。例如,在检测到页面错误中断之后,操作系统108可以即刻调用中断处理程序来起始将相关页面加载到存储器106中,并且更新对应页面表。
[0064] 操作系统108还可以包括用以通过确保以下操作来保护系统100的功能性:存取硬件部件是通过操作系统管理的内核功能性来进行调解。事实上,操作系统108确保了应用程序(如应用程序111)在用户空间中在CPU102上运行。操作系统108还确保了应用程序111调用由操作系统提供的内核功能性,以便存取硬件和/或输入/输出功能性。
[0065] 举例来说,应用程序111包括用以执行用户计算的各种程序或命令,这些用户计算也在CPU102上执行。统一的概念可以允许CPU102无缝地发送所选定的命令以用于在APD104上处理。在这个统一APD/CPU框架下,来自应用程序111的输入/输出请求将通过对应的操作系统功能性来处理。
[0066] 在一个实施例中,KMD110实施应用程序设计接口(API),通过所述应用程序设计接口,CPU102或在CPU102上执行的应用程序或其它逻辑可以调用APD104功能性。例如,KMD110可以使来自CPU102的命令排队到命令缓冲区125,APD104随后将从命令缓冲区检索这些命令。此外,KMD110可以与SWS112一起执行待在APD104上执行的进程的调度。例如,SWS112可以包括用以维护待在APD上执行的进程的已区分优先次序的列表的逻辑。
[0067] 在本发明的其它实施方案中,在CPU102上执行的应用程序可以在对命令进行排队时完全绕过KMD110。
[0068] 在一些实施方案中,SWS112维护待在APD104上执行的进程的在存储器106中的活动列表152。SWS112还在活动列表152中选择进程子集来由硬件中的HWS128管理。关于在APD104上运行每个进程的信息通过进程控制块(PCB)154而从CPU102传递至APD104。
[0069] 用于应用程序、操作系统以及系统软件的处理逻辑可以包括在如C语言的程序设计语言中和/或如Verilog、RTL或网表的硬件描述语言中指定的命令,以便使得能够最终通过掩模作品(maskwork)/光掩模的产生而配置制造过程,从而生产体现本文所描述的本发明的方面的硬件设备。
[0070] 本领域技术人员在阅读本描述后将了解,计算系统100可以包括比图1A中所示更多或更少的部件。例如,计算系统100可以包括一个或多个输入接口、非易失性储存器、一个或多个输出接口、网络接口以及一个或多个显示器或显示器接口。
[0071] 图1B为示出图1A中所示的APD104的更详细的图解的实施方案。在图1B中,CP124可以包括CP流水线124a、124b以及124c。CP124可以被配置来处理命令列表,这些命令列表被提供为来自图1A中所示的命令缓冲区125的输入。在图1B的示例性操作中,CP输入0(124a)负责将命令驱动到图形流水线162中。CP输入1和2(124b和124c)将命令转发到计算流水线160。还提供了用于控制HWS128的操作的控制器机构166。
[0072] 在图1B中,图形流水线162可以包括块集合,本文称为有序流水线164。作为一个实例,有序流水线164包括顶点群组翻译器(VGT)164a、图元汇编器(PA)164b、扫描变换器(SC)164c以及着色器输出后期渲染单元(SX/RB)176。有序流水线164内的每个块可以表示图形流水线162内的不同图形处理级。有序流水线164可以是固定功能硬件流水线。但可以使用将在本发明的精神和范围内的其它实施方式。
[0073] 尽管只有少量数据可以被提供为到图形流水线162的输入,但这些数据将在被提供为从图形流水线162的输出时被放大。图形流水线162还包括用于在从CP流水线124a接收的工作项目群组内的整个范围中进行计数的DC166。通过DC166提交的计算工作与图形流水线162是半同步的。
[0074] 计算流水线160包括着色器DC168和170。每个DC被配置来在从CP流水线124b和124c接收的工作群组内的整个计算范围中进行计数。
[0075] 在图1B中示出的DC166、168以及170接收输入范围,将这些范围分解成工作群组,然后将这些工作群组转发到着色器核心122。
[0076] 由于图形流水线162通常是固定功能流水线,因而难以保存并恢复其状态,并且因此,图形流水线162难以进行上下文切换。因此,在大多数情况下,如本文所论述,上下文切换不涉及在图形进程之间进行上下文切换。例外情况是对于在着色器核心122中的图形工作,它可以进行上下文切换。
[0077] 着色器核心122可以由图形流水线162和计算流水线160共享。着色器核心122可以是被配置来运行波前的一般处理器。
[0078] 在一个实施例中,在计算流水线160内部的所有工作是在着色器核心122中进行处理的。着色器核心122运行可编程的软件代码,并且包括各种形式的数据,例如状态数据。然而,计算流水线160不将工作发送至图形流水线162来处理。在图形流水线162内部的工作处理已经完成之后,通过后期渲染单元176处理所完成的工作,所述后期渲染单元进行深度和色彩计算,并且然后将其最终结果写入图形存储器130。
[0079] 本领域技术人员将明白,如下文所描述,本发明可以在软件、硬件、固件和/或图中所示的实体的许多不同实施方案中实施。用以实施本发明的具有专业硬件控制的任何实际软件代码不对本发明构成限制。因此,考虑到本文呈现的详细程度,本发明的操作行为将在理解实施方案的修改形式和变体形式是可能的情况下来进行描述。
[0080] 此外,并且如本领域技术人员将明白,对本发明的各种实施方案的模拟、合成和/或制造可以部分地通过使用计算机可读代码(如上文所指出)来实现,所述计算机可读代码包括:通用程序设计语言(如C或C++);包括Verilog HDL、VHDL、Altera HDL(AHDL)等的硬件描述语言(HDL);或其它可用的程序设计和/或原理图捕获工具(如电路捕获工具)。这个计算机可读代码可以安置在包括半导体、磁盘、光盘(如CD-ROM、DVD-ROM)的任何已知的计算机可用介质中,并且可以作为计算机数据信号嵌入计算机可用(例如,可读)传输介质(如载波或包括基于数字、光学或模拟的介质在内的任何其它介质)中。
[0081] 因而,代码可以在包括因特网和企业内部网在内的通信网络上传输。应理解,由上文所描述的系统和技术实现的功能和/或提供的结构可以被表示在具体表现为程序代码的核心(如APD核心和/或CPU核心)中并且可以作为集成电路生产的一部分而转变为硬件。
[0082] 本发明的实施方案允许程序员编写应用程序,这些应用程序无缝地在CPU与APD之间转变数据处理,从而从每个必须提供的最佳属性中受益。统一的单个程序设计平台可以为开发采用并行性的语言、框架以及应用程序提供强大基础。
[0083] 本发明的实施方案允许程序员编写应用程序,这些应用程序无缝地在CPU与APD之间转变数据处理,从而从每个必须提供的最佳属性中受益。统一的单个程序设计平台可以为开发采用并行性的语言、框架以及应用程序提供强大基础。
[0084] 图2是用于系统调用请求的在APD与CPU之间的优化通信进程的说明性方框图200。方框图200包括波前136、SIMD向量208以及队列210。
[0085] 波前136由着色器核心122依序处理。每个波前包括多个工作项目204。每个工作项目204被指派要处理的任务或任务的一部分。着色器核心122并行地并且用同一指令集处理波前136中的工作项目204。因此,波前136中的每个工作项目204可以同时向CPU102发出系统调用。
[0086] 与其中APD单独地将来自每个工作项目的系统调用请求发送至CPU的常规系统不同,APD104使用SIMD向量206来发送请求,因此将这些系统调用请求集合成单个数据结构。SIMD向量206包括SIMD元素208。每个SIMD元素包括一个系统调用数据结构。所述系统调用数据结构包括功能选择器参数(具体系统调用请求)、自变量列表以及用以使系统调用请求的结果返回到APD104的存储空间。本文描述了一个实施方案—示例性系统调用数据结构。
[0087] 当工作项目204需要涉及OS的进程时,APD104将来自每个工作项目204的系统调用请求存储在对应的SIMD元素208中。例如,在图1中,工作项目WI1将系统调用SC1存储在SIMD元素208中,工作项目WI1将系统调用SC2存储在另一个SIMD元素208中,如此等等。APD104将来自每个工作项目204的系统调用请求的类型保存到功能选择器参数中。如果需要,APD104还可以将自变量列表插入到自变量列表区中。APD104还可以将来自多个波前136的工作项目的系统调用存储到一个SIMD向量206中。
[0088] 队列210是高优先级公用存储器队列。队列根据先进先出(“FIFO”)原则来操作。公用队列是CPU102和APD104处理器可见的队列。也就是说,先入队到队列的工作负荷是先从队列离队的工作负荷。此外,本领域技术人员将了解的是,以实例方式而非限制方式给出使用队列数据结构的实施例,并且可以使用其它数据结构。
[0089] APD104使SIMD向量206入队到队列210。在APD104使SIMD向量206入队之后,在一个实施方案中,APD暂停并且等待CPU102处理SIMD向量206(即,接收SIMD向量206,处理存储在其中的系统调用并且将每个系统调用的结果传输至APD104)。在另一个实施方案中,在APD104入队到队列210之后,APD104将波前的状态保存到存储器106中并且开始处理另一个波前。当APD104从CPU102接收到表示处理已完成的信号时,APD104从存储器106中检索原始波前136并且复原所述处理。
[0090] CPU102先于它的其它进程来处理从高优先级队列接收的任务。因此,当CPU102从如队列210的高优先级队列接收到请求时,CPU102保存其当前进程并且处理所接收的请求。以实例方式而非限制方式给出本文所描述的使用高优先级公用队列的实施例,并且本领域技术人员将了解,可以使用其它存储器存储结构。
[0091] CPU102使SIMD向量206从队列210离队,并且开始处理SIMD元素208。CPU102调用OS并且开始处理在每个SIMD元素208中的存储在功能选择器参数中的系统调用请求。如果需要,CPU102还读取存储在SIMD元素208中的自变量列表。在CPU102完成每个系统调用请求之后,CPU102将结果写入到在每个SIMD元素208中分配的存储器地址中。
[0092] 在CPU102完成处理所有SIMD元素208之后,在一个实施方案中,CPU102使SIMD向量206入队到队列210上并且使SIMD向量206返回到APD104。通常,CPU102使SIMD向量206入队到APD104可见的存储器队列210上。
[0093] 在另一个实施方案中,当CPU102完成处理SIMD向量206时,CPU102使用信号量机制来将信号发送至APD104。本领域技术人员将了解,信号量机制确保了APD104在其等待CPU102完成处理所请求的系统调用时不处理其它波前。
[0094] 在APD104使SIMD向量206离队或从CPU102接收表示已经处理了系统调用的信号之后,APD104开始使用所请求的系统调用的结果来处理波前136。在其中APD104在等待CPU处理SIMD向量206时可以处理另一个波前的实施方案中,APD104在继续处理之前从APD存储器130中检索波前136。
[0095] 系统调用的一个实施例可以是对存储器的请求,如malloc()函数。malloc()请求在系统存储器106中为具体进程或功能分配存储器。因为APD104不能存取OS,所以APD104不能处理malloc()请求。因此,APD104将对malloc()请求的系统调用发送至CPU102。
[0096] 当波前136中的工作项目204请求存储器时,APD104做出malloc()请求。与其中APD将来自每个工作项目的单独malloc()请求发送至CPU的常规系统不同,APD104将包括用于波前136中的每个工作项目204的malloc()请求的一个SIMD向量206发送至CPU102。APD104将用于每个工作项目的malloc()请求所必要的信息存储在对应的SIMD元素208中。所必要的信息包括:功能选择器,其为到malloc()函数的存储器地址;自变量列表,其包括CPU102需要分配给每个工作项目204的存储器大小;以及空参数,CPU102将所分配的空间的地址存储在所述空参数中。
[0097] 一旦每个工作项目包括了处理每个系统调用所必要的malloc()参数,APD104就如本文所描述地使SIMD向量206入队到队列210上。CPU102从队列210中检索SIMD向量206,并且开始处理SIMD元素208。当CPU102处理SIMD向量206中的malloc()请求时,CPU102对OS做出一次调用。CPU102接着着手在调用OS中为每个工作项目204分配存储器。随后,CPU102将为每个工作项目204分配的存储空间的地址存储在SIMD元素208中。
在CPU102完成所有系统调用请求之后,CPU102使SIMD向量206返回到APD104。
[0098] SIMD元素208包括用于将系统调用传递至CPU102的多个结构。在一个实施方案中,每个SIMD元素208均可以包括用于存储功能选择器参数、自变量列表以及系统调用结果的数据结构。在一个非限制性实施例中,示例性数据结构被描述为:
[0099]
[0100]
[0101] MyTask结构包括:用于在APD104上处理指令的MyPtrmyAPDCodePtr指针;用于在CPU102上处理指令的MyPtrmyCPUCodePtr指针;以及数据指针myPtr_myDataPtr。当工作项目204向CPU102请求系统调用时,myAPDCodePtr和myCPUCodePtr指针指向具体系统调用功能的存储器地址。mtDataPtr指针包括用于自变量列表的参数以及指向包含每个系统调用的结果的主存储器106中的存储器地址的指针。
[0102] 此外,MyTask结构包括MyNotification机制。APD104使用所述通知机制来通知CPU102:MyTask存在于需要处理的队列110中。类似地,CPU102使用MyNotification来通知APD104:CPU102完成了处理系统调用。
[0103] 图3为系统100使用SIMD向量206来处理系统调用请求的说明性流程图200。在步骤302处,当在波前136中的工作项目204请求需要使用CPU102处理的系统调用时,APD104初始化SIMD向量206。在步骤304处,每个工作项目204将用于处理系统调用请求所必要的信息存储至对应SIMD元素208中,如本文所描述。在步骤306处,APD104使SIMD向量206入队到队列210上。在步骤308处,CPU102使SIMD向量206从队列210离队。在CPU102使SIMD向量206离队之后,CPU102调用OS并且开始处理在每个SIMD元素208中的系统调用。
[0104] 在步骤310处,CPU102将每个系统调用的结果写入SIMD元素208中。本领域技术人员将了解,步骤310可以与步骤308一起执行。在步骤312处,CPU102通知APD104:已经处理了系统调用。在一个实施方案中,CPU102使用APD104可见的队列210来将SIMD向量206发送回APD104。在另一个实施方案中,CPU102使用信号量向APD104发信号。在步骤314处,APD104使SIMD向量206从队列210离队并且继续处理波前136。
[0105] 本发明的各种方面可以通过软件、固件、硬件或其组合来实施。举例来说,由图3的流程图300所示的方法可以在图1的统一计算系统100中实施。根据这个实例性统一计算系统100来描述本发明的各种实施方案。相关领域技术人员将明白如何使用其它计算机系统和/或计算机体系结构来实施本发明。
[0106] 在本文献中,术语“计算机程序介质”和“计算机可用介质”用以大体上指代如可装卸存储单元或硬盘驱动器等介质。计算机程序介质和计算机可用介质还可以指代存储器,如系统存储器106和图形存储器130,其可以是存储器半导体(例如,DRAM等)。这些计算机程序产品是用于向统一计算系统100提供软件的手段。
[0107] 本发明还针对包括存储在任何计算机可用介质上的软件的计算机程序产品。这类软件当在一个或多个数据处理设备中执行时致使一个或多个数据处理设备如本文中描述那样来操作,或者,如上文提到,允许合成和/或制造计算设备(例如,ASIC或处理器)来执行本文中所描述的本发明的实施方案。本发明的实施方案采用现在已知或将来知道的任何计算机可用或可读介质。计算机可用介质的实例包括(但不限于)主要存储设备(例如,任何类型的随机存取存储器)、次要存储设备(例如,硬盘驱动器、软盘、CD ROM、ZIP磁盘、磁带、磁性存储设备、光学存储设备、MEMS、纳米技术存储设备等)以及通信介质(例如,有线和无线通信网络、局域网、广域网、企业内部网等)。
[0108] 尽管上文已经描述了本发明的各种实施方案,但应当了解,仅以实例方式而非限制方式来呈现所述各种实施方案。相关领域技术人员将了解,可以在不脱离如所附权利要求中所界定的本发明的精神和范围的情况下在其中做出各种形式和细节改变。应理解,本发明不限于这些实例。本发明适用于如本文所描述那样进行操作的任何元件。因此,本发明的宽度和范围不应被任何上文描述的示例性实施方案所限制,而是应该仅根据所附权利要求及其等效物来限定。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用