当前位置: 首页 > 专利查询>英特尔公司专利>正文

对计算机平台的异构处理器的双向通信支持制造技术

技术编号:7901724 阅读:229 留言:0更新日期:2012-10-23 13:39
计算机系统可以包括计算机平台和输入-输出设备。计算机平台可以包括多个异构处理器,所述多个异构处理器例如包括中央处理单元(CPU)和图形处理单元(GPU)。GPU可以耦合到GPU编译器和GPU链接器/加载器,而CPU可以耦合到CPU编译器和CPU链接器/加载器。用户可以用面向对象语言创建共享对象,而且共享对象可以包括虚函数。共享对象可以在异构处理器之间被细粒度划分。GPU编译器可以向CPU分配共享对象并可以创建用于允许GPU调用共享对象的虚函数的第一和第二使能通路。因此,可以包括虚函数的共享对象可以无缝地在CPU与GPU之间共享。

【技术实现步骤摘要】
【国外来华专利技术】对计算机平台的异构处理器的双向通信支持
技术介绍
计算机系统可以包括支持异构处理器(诸如中央处理单元(CPU)与图形处理单元(GPU)、对称与非对称处理器)的平台。面向对象语言的类实例(或对象)可以位于与CPU-GPU平台的第一侧(例如,CPU)相关联的第一存储器中。第二侧(GPU侧)不能调用位于与CPU-GPU平台的第一侧(CPU侧)相关联的第一存储器中的对象和相关联的成员函数。而且,第一侧不能调用位于第二侧(GPU侧)上的第二存储器中的对象和相关联的成员函数。由于类实例或对象被存储在不同的地址空间中,所以现有的通信机制可以仅允许异构处理器(CPU和GPU)之间的单向通信来调用类实例和相关联的虚函数。这种单向通信方法防止了类实例在异构处理器之间的自然功能划分。对象可以包括面向吞吐量的成员函数和一些标量成员函数。例如,游戏应用程序中的场景类可以具有可以适用于GPU的渲染函数,而且还可以包括可以适用于在CPU上执行的物理和人工智能 (Al)函数。通过采用目前的单向通信机制,典型地必须具有分别包括CPU (上面示例中的物理和Al)成员函数和GPU (适用于GPU的渲染函数)成员函数的两种不同的场景类。通过采用一个用于CPU数据而另一个用于GPU数据的两种不同的场景类,会不得不在这两种场景类之间来回复制。附图说明在附图中,通过示例而非限制性的方式示出了本文描述的专利技术。出于说明简化和清楚的目的,附图中所示的元件不必按照尺寸绘制。例如,清楚起见,一些元件的尺寸可以相对于其它元件而被放大。此外,在认为合适的情况中,将附图标记在各图之间重复以指示相应或相似的元件。图I示出根据一个实施例的用于在异构处理器(诸如CPU和GPU)之间提供双向通信支持的平台100。图2是示出了根据一个实施例的由用于在异构处理器(诸如CPU和GPU)之间提供双向通信支持的平台100执行的操作的流程图。图3示出根据一个实施例的包括诸如CPU和GPU之类的异构处理器的平台300,其中CPU和GPU分别耦合到提供对共享对象的细粒度划分的面向对象语言支持的CPU传统编译器和GPU专用编译器。图4示出根据一个实施例的包括诸如CPU和GPU之类的异构处理器的平台300,其中CPU和GPU分别耦合到提供对共享对象的细粒度划分的面向对象语言支持的CPU专用编译器和GPU专用编译器。图5是示出了根据第一实施例的由用于提供异构处理器之间的双向通信的平台100执行的操作的流程图。图6示出根据一个实施例的描述通过共享对象的成员函数实现异构处理器之间的双向通信的流程图。图7A-7C示出根据本专利技术第一实施例的共享对象和该共享对象在存储器中的布局。图8示出根据第一实施例的描述由CPU侧按实际执行的GPU虚函数和GPU函数调用的过程的流程图。图9示出根据第一实施例的描述由GPU侧执行的CPU虚函数和CPU函数调用的过程的流程图。图10是示出了根据第二实施例的由用于提供异构处理器之间的双向通信的平台100执行的操作的流程图。图11A-11C示出根据本专利技术第二实施例的共享对象和该共享对象在存储器中的布局。 图12示出根据第二实施例的描述由CPU侧按实际执行的GPU虚函数和GPU函数调用的过程的流程图。图13示出根据第二实施例的描述由GPU侧执行的CPU虚函数和CPU函数调用的过程的流程图。图14示出根据一个实施例的可以通过使用共享对象的细粒度划分来提供平台的异构处理器之间的双向通信支持的计算机系统。具体实施例方式下面的描述描述了通过支持共享对象的细粒度划分来提供计算机平台的异构处理器之间的双向通信的技术。在下面的描述中,阐述了若干具体细节,诸如逻辑实现方式、资源划分或共享、或复制实现方式、系统部件的类型与相互关系、以及逻辑划分或集成选择,以便提供对本专利技术的更透彻的理解。然而,本领域技术人员应当意识到,可以在没有这些具体细节的情况下实践本专利技术。在其他实例中,没有详细示出控制结构、门级电路和全软件指令序列,以免模糊本专利技术。通过采用所包含的描述,本领域普通技术人员将能够在不进行过度实验的情况下实施适当的功能。本说明书中提及的“ 一个实施例”、“实施例”或“示例性实施例”表示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以不是必须地包括这些特定的特征、结构或特性。而且,这些短语不是必然地指代相同的实施例。此外,当结合实施例描述特定的特征、结构或特性时,应当认为,不论是否明确地进行描述,在本领域技术人员的知识范围内都可以结合其它实施例来实现这些特征、结构或特性。本专利技术的实施例可以在硬件、固件、软件或它们的任意组合中实施。还可以将本专利技术的实施例实施为存储在机器可读介质上的指令,这些指令可以由一个或多个处理器读取和执行。机器可读存储介质可以包括用于以机器(例如,计算设备)可读的形式来存储或传送信息的任何机制。例如,机器可读存储介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储媒介;光存储媒介;闪存设备;电、光形式的信号。此外,本文中可以将固件、软件、例程和指令描述为执行特定的动作。然而,应当意识到,这些描述仅是出于方便的目的,而且这些动作实际上源自计算设备、处理器、控制器以及执行固件、软件、例程和指令的其他设备。在一个实施例中,计算机平台可以支持用于通过共享对象的细粒度划分来通过该共享对象的成员函数允许异构处理器(例如,CPU和GPU)之间的双向通信(函数调用)的一种或多种技术。在一个实施例中,计算机平台可以通过使用可由用户并入的宏导致的第一技术(下文中称为“用户介入技术”)来允许CPU与GPU之间的双向通信。在其他实施例中,计算机平台可以通过使用独立于用户介入的第二技术(下文中称为“自动技术”)来允许CPU与GPU之间的双向通信。在一个实施例中,当使用用户介入技术时,共享对象可以在第一侧(即CPU)上被分配并之后在第二侧(即GPU)上被使用,以便GPU可以调用可以用CPU分配的共享对象的第一成员函数。在一个实施例中,用GPU分配的共享对象的第二成员函数可以被CPU调用。结果,异构处理器之间的双向通信可以由计算机平台支持。在一个实施例中,用户可以促使对象(共享对象)被存储在共享存储器中,并之后向CPU或GPU中的其中一者分配成员函数。在一个实施例中,用户可以用注释标签来注释成员函数,以将成员函数分配给CPU或GPU中的其中一者。在一个实施例中,仅由GPU执行但是可以由CPU调用的第一成员函数用第一注释标签注释。而且,仅可以由CPU执行并可以由GPU调用的第二成员函数可以用第二注释标签注释。在一个实施例中,GPU或CPU编译器在编译对象时可以识别与成员函数相关联的注释标签。在一个实施例中,用户可以添加用于分别声明和初始化指向虚函数表(Vtable)的指针的宏(诸如指针宏和初始化宏)。在一个实施例中,诸如(const void*constpGPUvptr)之类的指针宏可以声明指向GPU侧虚函数表(GPU vtable)的指针,而且可以用共享存储器分配/释放运行时间调用来覆盖新/删除操作符。在一个实施例中,诸如(pGPUvptr=GetGPUvtabIeAddr())之类的初始化宏可以用恰当的运行时间调用来初始化指向GPU vtable的指针。在一个本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:S·严X·周Y·高M·拉贾戈帕兰R·德奥达尔D·普措卢C·纳尔逊M·吉尔卡尔R·杰瓦T·陈S·罗S·琼金斯B·萨哈D·普措卢R·纳拉亚纳斯瓦米S·罗P·席
申请(专利权)人:英特尔公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1