CN104395890A - 使用异构处理器来为应用程序提供低潜伏时间的系统和方法 - Google Patents

使用异构处理器来为应用程序提供低潜伏时间的系统和方法 Download PDF

Info

Publication number
CN104395890A
CN104395890A CN201380033791.1A CN201380033791A CN104395890A CN 104395890 A CN104395890 A CN 104395890A CN 201380033791 A CN201380033791 A CN 201380033791A CN 104395890 A CN104395890 A CN 104395890A
Authority
CN
China
Prior art keywords
request
memory
processor
gpu
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380033791.1A
Other languages
English (en)
Other versions
CN104395890B (zh
Inventor
亚历山大·洛希夫斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN104395890A publication Critical patent/CN104395890A/zh
Application granted granted Critical
Publication of CN104395890B publication Critical patent/CN104395890B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开用于响应请求的方法、装置和计算机可读介质。一种响应请求的方法可包括接收包括回调函数的请求。所述一个或多个请求可接收于与第一类型的处理器相关联的第一存储器中,所述第一类型的处理器可为CPU。所述请求可被移动至第二存储器。所述第二存储器可与第二类型的处理器相关联,所述第二类型的处理器可为GPU。GPU线程可在所述请求的数量为至少阈值数量时处理所述请求,以便确定所述请求的结果。所述方法可包括将所述结果移动至所述第一存储器。所述方法可包括所述CPU利用所述对应结果来执行所述一个或多个回调函数。GPU持久线程可检查请求的数量,以便确定何时达到请求的阈值数量。

Description

使用异构处理器来为应用程序提供低潜伏时间的系统和方法
相关申请的交叉引用
本申请要求2012年6月8日申请的美国临时专利申请序列号61/657,404的优先权,所述申请的完整内容特此以引用方式并入,如同完全阐明一样。
技术领域
本发明的实施方案涉及为应用程序提供低潜伏时间(latency),并且更具体来说,涉及使用异构处理器提供低潜伏时间。
背景
一些计算机系统包括多于一种的处理器类型。例如,一些计算机系统包括一个或多个中央处理器单元(CPU)(即,第一处理器类型)和许多外围处理器(即,不同或第二处理器类型)。外围处理器常常为图形处理单元(GPU),但是其它处理器类型对于本领域的普通技术人员是已知的。可能存在可具有与CPU单独共享的存储器的许多GPU。一些应用程序仅使用CPU,或以不太有效的方式使用GPU。
另外,一些应用程序需要来自计算机系统的低潜伏时间或延迟,以响应来自应用程序的请求。常常必须采购其它硬件来确保响应来自应用程序的请求的延迟不是很长。
因此,本领域中需要使用异构处理来为应用程序提供低潜伏时间的系统和方法。
实施方案概述
本发明公开用于响应请求的方法、装置和计算机可读介质。一种用于响应请求的方法可包括一个或多个中央处理单元(CPU)接收一个或多个请求。所述方法可包括将一个或多个请求从与一个或多个CPU相关联的第一存储器移动至与一个或多个图形处理单元(GPU)相关联的第二存储器。所述方法可包括一个或多个GPU确定一个或多个请求中的每一个的指针。所述指针可基于请求中的信息来确定。所述方法可包括将确定的指针移动至第一存储器。对于确定的指针中的每一个,所述方法可包括检索由确定的指针所指向的数据。所述数据可从第一存储器中的第一数据结构检索。而且,所述方法可包括一个或多个CPU通过发送对应检索数据来响应接收的请求。
在另一个实施方案中,响应请求的方法可包括接收包括回调函数的一个或多个请求。所述一个或多个请求可接收于与一个或多个CPU相关联的第一存储器中。所述方法可包括将一个或多个请求移动至第二存储器。第二存储器可与一个或多个GPU相关联。所述方法可包括一个或多个GPU线程在一个或多个请求的数量为至少阈值数量时处理一个或多个请求,以便确定一个或多个请求中的每一个的结果。所述方法可包括将结果移动至第一存储器。而且,所述方法可包括一个或多个CPU利用对应结果执行一个或多个回调函数中的每一个。
本发明公开一种用于响应请求的系统。所述系统可包括一个或多个CPU,所述CPU被配置来接收包括回调函数的一个或多个请求。所述一个或多个请求可接收于与一个或多个CPU相关联的第一存储器中。一个或多个CPU可被配置来将一个或多个请求移动至第二存储器。第二存储器可与一个或多个GPU相关联。而且,一个或多个CPU可被配置来利用对应结果执行一个或多个回调函数中的每一个。一个或多个GPU可被配置来执行一个或多个GPU线程,以在一个或多个请求的数量为至少阈值数量时处理一个或多个请求,从而确定一个或多个请求中的每一个的结果。而且,一个或多个GPU可被配置来将确定的结果移动至第一存储器中。
附图简述
本发明的实施方案在附图的各图中以举例而非限制的方式示出,附图中的相同参考数字指示类似元件,并且其中:
图1为可实施一个或多个公开的实施方案的示例性设备的框图;
图2示出根据一些公开的实施方案的使用异构处理器来实现低潜伏时间应用程序的系统;
图3和图4示意性地示出可需要低潜伏时间以用于响应请求的存储器超高速缓存应用程序的操作;
图5和图6示出根据一些公开的实施方案的对存储器超高速缓存应用程序使用异构处理器来实现低潜伏时间应用程序的系统的操作;
图7示意性地示出根据一些公开的实施方案的使用异构处理器来实现低潜伏时间应用程序的系统的实施方案;
图8示出根据一些公开的实施方案的GPU可运行的内核;
图9示出用于调用根据一些公开的实施方案的用于异构处理器的低潜伏时间应用程序的系统的数据结构和调用;以及
图10示出根据一些公开的实施方案的对存储器超高速缓存应用程序使用异构处理器来提供低潜伏时间的系统和方法的经验检验的结果表。
详述
图1为可实施一个或多个公开的实施方案的示例性设备100的框图。设备100可包括例如计算机、游戏设备、手持式设备、机顶盒、电视、移动电话或平板计算机。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108和一个或多个输出设备110。设备100还可任选地包括输入驱动器112和输出驱动器114。应理解的是,设备100可包括图1中未示出的其它部件。
处理器102可包括具有第一类型的一个或多个第一处理器(例如,中央处理单元(CPU))128,其可包括一个或多个核心132;以及如图形处理单元(GPU)130的一个或多个第二类型的处理器,其可包括一个或多个计算单元(CU)134或GPU核心。CPU 128和GPU 130可定位在同一晶粒或多个晶粒上。CU 134可组织成群组,所述群组具有控制一组CU 134的处理控件(未示出)。处理控件可控制一组CU 134,以使得一组CU 134作为单指令多数据(SIMD)处理单元(未示出)执行。CU 134可包括可与一个或多个其它CU 134共享的存储器139。例如,处理控件可控制一百三十二个CU 134,并且这一百三十二个CU 134可全部与处理控件共享同一存储器139。
除了GPU 130和CPU 128以外,可能存在其它类型的处理器或计算元件,如数字信号处理器(DSP)、应用程序处理器等。CPU 128可包括在CPU 128的核心间共享的存储器136。在一些公开的实施方案中,存储器136为L2超高速缓存。GPU 130可包括在一个或多个GPU 130的CU 134间共享的存储器138。数据可通过存储器136与存储器138与存储器139之间的传递137。GPU 130和CPU 128可包括其它存储器,如用于每个核心132的存储器和用于未示出的CU 134的处理单元中的每一个的存储器。存储器136、138和104可为相干超高速缓存系统(未示出)的一部分。在一些实施方案中,存储器136、138和104的一个或多个可不为相干存储器。存储器104可定位在与处理器102相同的晶粒上,或可定位成与处理器102分开。存储器104可包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM(DRAM)或超高速缓存。
存储装置106可包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108可包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110可包括显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并且容许处理器102接收来自输入设备108的输入。输出驱动器114与处理器102和输出设备110通信,并且容许处理器102发送输出至输出设备110。应指出的是,输入驱动器112和输出驱动器114为任选部件,并且即使输入驱动器112和输出驱动器114不存在,设备100也将以相同方式操作。
图2示出使用异构处理器来实现低潜伏时间应用程序的系统。图2中示出CPU 128、GPU 130、CU 134、存储器138、请求202、响应204、设置220、网络线程206、主机线程208、出站队列210、CPU数据结构216、GPU线程212、入站队列214和GPU数据结构218。请求202由网络线程206接收并且传递至主机线程208,所述主机线程208将请求202放置在入站队列214中。GPU线程212使用GPU数据结构218处理入站队列214中的请求202,并且将响应204发送至出站队列210,在所述出站队列210处,主机线程208可使用CPU数据结构216处理响应204。响应204可接着被发送至网络线程206以供发送。网络线程206可接收设置220,所述设置220可用于建立或修改CPU数据结构216和GPU数据结构218。
请求202可为从应用程序(未示出)接收的用于参考或用于处理的请求202。请求202可通过计算机网络(未示出)接收。请求202的实例可为对数据222的请求,所述数据222对应于请求202中的秘钥。请求202可包括回调函数(参见图9)。
响应204可为对请求202的响应204。示例性响应204可为对应于请求202中的秘钥(参见图3)的数据222。设置220可为用于修改或建立CPU数据结构216的指令。示例性设置220可为将被嵌入至CPU数据结构216中的新数据222。
网络线程206可被配置来从输入设备108获得请求202和设置220,并且通过输入设备108发出响应204。例如,网络线程206可为多任务操作系统中的线程,所述线程使用插口来监控用于请求202和设置220的一个或多个传输控制协议(TCP)端口,并且使用TCP通过一个或多个端口发出响应204。网络线程206可被配置来发送或传递请求202和设置220至主机线程208,并且从主机线程208接收响应204。CPU 128可执行网络线程206。在一些实施方案中,网络线程206可驻留在存储器136(参见图1)中,和或存储器104或与核心132相关联的另一个存储器(未示出)中。在一些实施方案中,网络线程206可为应用程序线程。
主机程序208可被配置来接收请求202并且将所述请求202放置在入站队列214中以供GPU 130进行处理。主机线程208可被配置来从出站队列210接收响应204。在一些公开的实施方案中,主机线程208可监控出站队列210,并且当一个或多个响应204变得可用时,主机线程208可获得响应204并且根据CPU数据结构216对响应204执行进一步处理。例如,主机线程208可从入站队列214获得响应204,并且在响应204中使用指针224来从CPU数据结构216检索数据222,并且修改响应204来包括数据222。主机线程208可接着发送响应204至网络线程206。在一些实施方案中,如果响应204的数量低于阈值数量或频率,则主机线程208可满足响应204。在一些实施方案中,可存在多于一个的主机线程208。在一些实施方案中,每个出站队列210可存在一个主机线程208。在一些实施方案中,主机线程208可驻留在与CPU 128相关联的存储器中。在一些实施方案中,网络线程206可驻留在存储器136中,和或存储器104或与核心132相关联的另一个存储器(未示出)中。
出站队列210可为放置有已被GPU线程212处理的请求202的队列。在一些实施方案中,出站队列210的数量和主机线程208的数量可成比例。在一些实施方案中,每个主机线程208可存在一个出站队列210。在一些实施方案中,出站队列210可驻留在存储器136中或CPU 128可访问的另一个存储器中。
GPU线程212可被配置来处理请求202。在一些实施方案中,GPU 130可组织成m个组,每组n个GPU线程212。一组n个GPU线程212可各自在单独的CU 134上运行。例如,n可为64并且m可为24。那么,将存在64*24个或1536个GPU线程212。可存在针对这组n个GPU线程212的每一个的入站队列214。例如,入站队列214.1可由GPU线程212.1至212.n提供服务。这组n个GPU线程212可为单指令多数据(SIMD)CU 134。这组n个GPU线程212可同时处理一组请求202。例如,如GPU线程212.1至GPU线程212.n(其中n=64)的一组n个GPU线程212可监控入站队列214.1,并且当入站队列214.1上存在64个可用请求202时,这组GPU线程212.1至GPU线程212.64可同时处理64个请求202。在一些实施方案中,这组n个GPU线程212中的GPU线程212中的一个可监控针对这组n个GPU线程212的入站队列214。GPU线程212可运行相同内核或程序,或被配置来以相同方式处理请求202。GPU线程212可发送响应204至出站队列210。
入站队列214可为放置有请求202的一个或多个队列。入站队列214可驻留在存储器138或另一个存储器中。GPU数据结构218可为驻留在与GPU 130相关联的存储器中的数据结构218。GPU数据结构218可基于一个或多个设置220构建,并且可基于其它信息构建。GPU数据结构218可包括指针224,所述指针224可为可用于从CPU数据结构216检索数据222的指针224。GPU数据结构218可由GPU130使用来处理请求202。在一些实施方案中,GPU数据结构218可驻留在存储器138中,和或存储器104或与GPU 130相关联的另一个存储器(未示出)中。
CPU数据结构216可为驻留在与CPU 128相关联的存储器中的数据结构216。CPU数据结构216可基于一个或多个设置220构建,并且可基于其它信息构建。CPU数据结构216可包括数据222,所述数据222可为由指针224所指向的数据222。CPU数据结构216可由CPU 128使用来处理请求202。在一些实施方案中,CPU数据结构216可驻留在存储器136中,和或存储器104(参见图1)或与CPU 128相关联的另一个存储器(未示出)中。
图3和图4示意性地示出可需要低潜伏时间以用于响应请求的存储器超高速缓存应用程序的操作。图3和图4中示出客户端302、设置220、确认330、服务器390、散列表326以及请求202和响应204。客户端302选择服务器390并且接着向选择的服务器390.1发送设置220,所述设置220可为用于将值338.15与秘钥322.15相关联的命令。存储器超高速缓存应用程序(未示出)接收设置220并且在数据结构中存储与秘钥322.15相关联的值338.15,所述数据结构可为散列表326并且可发送确认330至客户端302。客户端302可接着发送具有秘钥322.15的请求202(参见图4),并且服务器390.1通过搜索散列表326发送具有与秘钥322.15相关联的值338.15的响应204。
客户端302可通过如LAN或互联网(未示出)的通信网络与服务器390.1通信。在一些实施方案中,客户端302可驻留在服务器390.1上。设置220可为包括秘钥322和值338的对324的命令。秘钥322和值338可为数据。秘钥322可为识别值338的唯一方式。确认330可为设置220是否成功的指示。散列表326可为将索引328与秘钥322和值338的对324相关联的表。
客户端302可选择服务器390。在一些实施方案中,客户端302基于秘钥322选择服务器390。例如,客户端302可基于确定秘钥322的散列值(如秘钥322的模量)来确定服务器390。例如,服务器390可基于在如图3中示出存在三个服务器390时确定(秘钥322模量3)+1的值来进行选择。
客户端302可接着发送设置220至服务器390.1。存储器超高速缓存应用程序(未示出)可确定秘钥322的索引328,在一些实施方案中这被称为确定散列值。例如,如果散列表为9个条目,则存储器超高速缓存应用程序可将索引确定为[秘钥322模量9]+1,以使得具有为30的值的秘钥322将具有[30mod 9]+1=4的散列值或索引。存储器超高速缓存应用程序将接着在散列表326中存储秘钥322.15和值338.15的对324.15。索引328的每一个可具有一连串的对324,所述一连串的对324可需要加以遍历来搜索对324。
以这种方式,客户端302可使得服务器390.1建立存储秘钥322和值338的对324的散列表326。客户端302可通过基于如上所述的秘钥322选择服务器390来检索与秘钥322相关联的值338,并且接着发送请求202至具有秘钥322.15的服务器390.1(参见图4)。服务器390.1接着获得秘钥322.15并且计算秘钥322.15的散列值,以确定索引328.4,并且接着在与索引328.4相关联的对324中搜索具有秘钥322.15的对324.15。当找到秘钥322.15时,存储器超高速缓存应用程序检索值338.15,并且向客户端302发送具有值338.15的响应204。
因此,客户端302可在散列表326中设置220值秘钥322和值338的对324,并且使用秘钥322从散列表326请求202值338。在一些实施方案中,散列表326可较大并且散列表326可存储在如104、136或138的随机存取存储器(参见图1)中,以使得请求202可较快速。在一些实施方案中,可为重要的是:快速地执行设置220和/或请求202命令,以使得当客户端302请求202值338时与当值338实际上在响应204中返回时之间存在低潜伏时间。例如,散列表326可用于为需要非常快速的响应204的路由选择存储网络地址。
图5和图6示出根据一些公开的实施方案的对存储器超高速缓存应用程序使用异构处理器来实现低潜伏时间应用程序的系统的操作。图5和图6中示出客户端302、设置220、确认330、服务器390.1、CPU数据结构216、GPU数据结构218以及(参见图6)请求202和响应204。CPU数据结构216可具有地址570和值338的数据结构。值338可使用地址570来设置或检索。GPU数据结构218包括秘钥322和地址570的由索引528访问的对524。在一些实施方案中,GPU数据结构218可为散列表527。
从客户端302的角度,存储器超高速缓存应用程序的操作与结合图3和图4的描述相同。参考图2和图5,在操作中,客户端302发送设置220至服务器390.1。服务器390.1的网络线程206发送设置220至主机线程208。主机线程208在CPU数据结构216的地址570.7处设置值338.15。主机线程208接着在入站队列214中放置秘钥322.15和地址570.7的对524.15。在一些实施方案中,主机线程208可基于入站队列214的内容确定将对524.15放置在哪个入站队列214上。GPU线程212接着为秘钥322.15确定索引528,并且以索引528将秘钥322.15和地址570.7的对524.15放置在散列表527中,所述索引528为如图5中示出的索引528.4。在一些实施方案中,对524可存储在散列表527中,作为与索引528相关联的连接表。确认330可被发送至客户端302以确认设置220是成功的。
参考图2和图6,客户端302可发送请求202至服务器390.1。网络线程206可接受请求202。网络线程206可发送请求202至主机线程208。主机线程208可将请求202放置在入站队列214中。GPU线程212可通过确定对应于秘钥322的索引528处理请求202。如图6中示出,索引528.4对应于秘钥322.15,并且GPU线程212可搜索列表,以找出秘钥322.15和地址570.7的对524.15。GPU线程212可接着将秘钥322.15和地址570.7的对524.15移动至出站队列210。主机线程208可接着使用地址570.7以从CPU数据结构216检索值338.15。主机线程208可接着向网络线程206指示具有值338.15的响应204应发送至客户端302。网络线程206可接着发送具有值338.15的响应204至客户端302。
在一些公开的实施方案中,CPU数据结构216可驻留在存储器136中。在一些公开的实施方案中,GPU数据结构218可驻留在存储器138中。一些公开的实施方案具有的优势在于,可为大量数据的值338可不需要传递至如存储器138的存储器,这种传递是耗时的。
在一些公开的实施方案中,可能存在比CPU 128核心132更多的请求202。在一些公开的实施方案中,许多请求202在入站队列214中排队,直到请求202的数量等于或大于GPU 130的计算单元134的数量,并且接着一个或多个请求202被分配至GPU 130的计算单元134中的每一个。
在一些公开的实施方案中,CPU 128和GPU 130使用原子读取/写入指令。在一些公开的实施方案中,GPU 130轮询存储器位置来获得由CPU 128写入的入站队列指针。在一些实施方案中,在GPU 130上运行的线程中的一个线程可轮询存储器位置,以用于更新入站队列214。在一些公开的实施方案中,GPU 130通过将指针写入CPU 128轮询的存储器位置来更新出站队列210。
在一些公开的实施方案中,GPU线程212可为保持活动与内核保持活动一样久的持久线程。内核可具有响应停机消息的无限外循环。在一些公开的实施方案中,GPU 130的每个计算单元134可由两个持久线程使用OpenCL。每个计算单元134两个持久线程可提供的优势在于:虽然第一线程可正在等待数据抵达,但第二线程可执行。
图7示意性地示出使用异构处理器来实现低潜伏时间应用程序的系统的实施方案。系统700包括CPU 128、主机线程708、出站队列210、GPU 130、GPU线程212、入站队列214。应用程序线程706可发送请求202,并且系统700可处理请求202并且发送响应204至应用程序线程706。
应用程序线程706可为在CPU 128或另一个CPU 128上运行的应用程序。请求202可为用于处理任务的请求。例如,结合图3、图4、图5和图6,设置220和请求202如结合存储器超高速缓存应用程序所公开。响应204可为对请求202的响应。例如,响应204可为如结合存储器超高速缓存应用程序所公开的响应204。
主机线程708可为接收请求202并且发送响应204的线程。在一些实施方案中,应用程序线程706可为密码学应用程序、网络应用程序和嵌入式应用程序。
图8示出根据一些公开的实施方案的GPU可运行的内核。GPU线程212(参见图2)可运行gpuGenericApplication内核800,所述内核800允许GPU线程212运行通用应用程序。内核800具有从804至816的无限do循环的流程控制,所述无限do循环(do loop)可被如中的EOS的中断信号阻断。在805处,内核800读取可能为入站队列214的__in_control_queue,并且为_in_control_queue中的第一队列202设置read_ptr。在806处,当_in_control_queue中存在请求时,内核800在while循环(while loop)中循环。在808处,内核800根据由curr_ptr所指向的请求202调用应用程序。在810处,内核800将响应放在可为出站队列210的_out_control_queue上。在812处,内核800增加curr_ptr++。如果curr_ptr指向in_control_queue中的需要获得服务的请求202,则内核800接着循环回到806。如果curr_ptr并未指向请求202,那么内核800前往814并且更新protocol_control。内核800接着在816处检查是否在816处接收到中断信号EOS。如果接收到中断信号EOS,则内核800结束。否则,内核800循环回到804。内核800具有的优势在于,其可被调用一次并且保持持久地响应许多请求202。
图9示出用于调用根据一些公开的实施方案的用于异构处理器的低潜伏时间应用程序的系统的数据结构和调用。称为LOLALY_REQ的结构902可由应用程序id 903和回调函数904填充(populated)。那么,lolalySendRequest 906可用于为系统700执行请求202。
图10示出对存储器超高速缓存应用程序使用异构处理器来提供低潜伏时间的系统和方法的经验检验的结果表。表1000包括请求大小1002并且还包括两组数据,一组针对的产品APU BrazosTM、HD631/430 1004,而另一组针对的产品AP TrinityTM、HD7660/600。例如,在具有2048个请求1020的情况下,APU BrazosTM具有为197μ秒的潜伏时间1010以及为0.19的吞吐量MR 1006和为3.23的带宽GB 1008。在具有2048个请求1020的情况下,AP TrinityTM具有为140μ秒的潜伏时间1018以及为0.31的吞吐量MR 1014和为5.26的带宽GB 1016。因此,即使具有较大数量的请求,系统也提供可接受的潜伏时间。
应了解,可能存在基于本说明书公开内容的许多变型。尽管上述特征和元件具有特定组合,但是每个特征和元件可以在独立于其它特征和元件的情况下单独使用,或者可以用于包括或不包括其它特征和元件的各种组合中。
所提供的方法可在通用计算机、处理器或处理器核心中实施。举例来说,合适的处理器包括通用处理器、图形处理单元(GPU)、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其它类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网络列表的其它中间数据(这些指令能够存储在计算机可读介质上)的结果配置制造过程来制造这些处理器。这种处理的结果可以是光罩作品,所述光罩作品接着用于半导体制造过程中,以制造实施公开的实施方案的各方面的处理器。
本文提供的方法或流程图可以实现在并入计算机可读存储介质中的计算机程序、软件或固件中,以由通用计算机或处理器执行。在一些实施方案中,计算机可读存储介质为非暂时性计算机可读存储介质。计算机可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、超高速缓存存储器、半导体存储设备、如内部硬盘和可移动磁盘的磁性介质、磁光介质以及如CD-ROM盘和数字多功能盘(DVD)的光学介质。

Claims (20)

1.一种用于响应请求的方法,所述方法包括:
第一类型的一个或多个处理器接收一个或多个请求;
将所述一个或多个请求从与所述第一类型的所述一个或多个处理器相关联的第一存储器移动至与第二类型的一个或多个处理器相关联的第二存储器;
所述第二类型的所述一个或多个处理器确定所述一个或多个请求中的每一个的指针,其中所述指针基于所述请求中的信息来确定;
将所述确定的指针移动至所述第一存储器;
对于所述确定的指针中的每一个,所述第一类型的所述一个或多个处理器检索由所述确定的指针所指向的数据,其中从所述第一存储器中的第一数据结构检索所述数据;以及
所述第一类型的所述一个或多个处理器通过发送所述对应检索数据来响应所述接收的请求。
2.如权利要求1所述的方法,其中所述第一类型的所述一个或多个处理器包括一个或多个CPU核心,并且所述第二类型的所述一个或多个处理器包括一个或多个GPU核心。
3.如权利要求2所述的方法,其中所述一个或多个GPU核心中的每一个正基于GPU内核运行持久线程。
4.如权利要求2所述的方法,其中所述一个或多个GPU核心访问所述第二存储器可远快于所述一个或多个CPU核心访问所述第二存储器。
5.如权利要求2所述的方法,其中所述一个或多个CPU核心对所述第一存储器的第一访问时间远小于所述一个或多个GPU核心对所述第一存储器的第二访问时间。
6.如权利要求1至5中任一项所述的方法,其中所述第二类型的所述一个或多个处理器确定指针还包括:
所述第二类型的所述一个或多个处理器确定所述一个或多个请求中的每一个的指针,其中所述指针基于所述请求中的信息和所述第二存储器中的第二数据结构来确定。
7.如权利要求6所述的方法,其还包括:
将所述设置请求移动至所述第二存储器;以及
所述第二类型的所述一个或多个处理器基于所述设置请求修改所述第二存储器中的第二数据结构。
8.如权利要求1至7中任一项所述的方法,其还包括:
所述第一类型的所述一个或多个处理器接收设置请求;以及
所述第一类型的所述一个或多个处理器基于所述设置请求修改所述第一数据结构。
9.如权利要求1至8中任一项所述的方法,其中传递还包括:
当所述一个或多个请求达到阈值数量时将所述一个或多个请求从所述第一存储器传递至所述第二存储器。
10.如权利要求1至9中任一项所述的方法,其中所述数据远大于所述指针。
11.一种响应请求的方法,所述方法包括:
接收包括回调函数的一个或多个请求,其中所述一个或多个请求被接收于与一个或多个CPU核心相关联的第一存储器中;
将所述一个或多个请求移动至第二存储器,其中所述第二存储器与一个或多个GPU核心相关联;
当所述一个或多个请求的数量为至少阈值数量时,那么一个或多个持久GPU线程处理所述一个或多个请求,以便确定所述一个或多个请求中的每一个的结果;
将所述结果移动至所述第一存储器;以及
所述一个或多个CPU核心利用所述对应结果执行所述回调函数中的每一个。
12.如权利要求11所述的方法,其中将所述一个或多个请求移动至所述第二存储器还包括:
将所述一个或多个请求移动至所述第二存储器中的入站队列。
13.如权利要求11或12所述的方法,其中当所述一个或多个请求的所述数量为至少阈值数量时,所述方法还包括:
所述一个或多个GPU线程的GPU线程检查所述第二存储器中的所述入站队列,以确定所述一个或多个请求的所述数量何时为至少所述阈值数量,其中所述GPU线程为持久GPU线程。
14.一种用于响应请求的系统,所述系统包括:
第一类型的一个或多个处理器,其被配置来接收包括回调函数的一个或多个请求,其中所述一个或多个请求接收于与所述第一类型的所述一个或多个处理器相关联的第一存储器中,并且其中所述第一类型的所述一个或多个处理器被配置来将所述一个或多个请求移动至第二存储器,其中所述第二存储器与第二类型的一个或多个处理器相关联,并且被配置来利用对应结果执行所述一个或多个回调函数中的每一个;以及
所述第二类型的所述一个或多个处理器,其被配置来执行一个或多个线程以处理所述一个或多个请求,从而在所述一个或多个请求的数量为至少阈值数量时,确定所述一个或多个请求中的每一个的所述结果,并且被配置来将所述确定的结果移动至所述第一存储器。
15.如权利要求14所述的系统,其中所述第一类型的所述一个或多个处理器包括一个或多个CPU核心,并且所述第二类型的所述一个或多个处理器包括一个或多个GPU核心,并且其中所述一个或多个线程为一个或多个GPU线程。
16.如权利要求15所述的系统,其中所述一个或多个GPU线程为基于GPU内核的持久线程。
17.如权利要求14至16中任一项所述的系统,其中所述第二类型的所述一个或多个处理器对所述第二存储器的访问时间远小于所述第一类型的所述一个或多个处理器对所述第二存储器的访问时间。
18.如权利要求14至17中任一项所述的系统,其中所述第一类型的所述一个或多个处理器还被配置来将所述一个或多个请求移动至所述第二存储器中的入站队列。
19.如权利要求18所述的系统,其中所述第二类型的所述一个或多个处理器还被配置来执行所述一个或多个线程的线程,以便检查所述第二存储器中的所述入站队列,从而确定所述一个或多个请求的所述数量何时为至少所述阈值数量,并且其中所述线程为持久线程。
20.如权利要求14至19中任一项所述的系统,其中所述第二类型的所述一个或多个处理器还被配置来将所述确定的结果移动至所述第一存储器中的出站队列。
CN201380033791.1A 2012-06-08 2013-06-07 使用异构处理器为应用程序提供低潜伏时间的系统和方法 Active CN104395890B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261657404P 2012-06-08 2012-06-08
US61/657,404 2012-06-08
PCT/US2013/044682 WO2013185015A2 (en) 2012-06-08 2013-06-07 System and method for providing low latency to applications using heterogeneous processors

Publications (2)

Publication Number Publication Date
CN104395890A true CN104395890A (zh) 2015-03-04
CN104395890B CN104395890B (zh) 2018-12-07

Family

ID=48670839

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380033791.1A Active CN104395890B (zh) 2012-06-08 2013-06-07 使用异构处理器为应用程序提供低潜伏时间的系统和方法

Country Status (6)

Country Link
US (1) US9495718B2 (zh)
EP (1) EP2859448A2 (zh)
JP (1) JP6170553B2 (zh)
KR (1) KR102086019B1 (zh)
CN (1) CN104395890B (zh)
WO (1) WO2013185015A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111447561A (zh) * 2020-03-16 2020-07-24 北京百度网讯科技有限公司 车辆的图像处理系统

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3103007A4 (en) * 2014-02-04 2017-10-25 Tactual Labs Co. Low-latency visual response to input via pre-generation of alternative graphical representations of application elements and input handling on a graphical processing unit
US9342384B1 (en) 2014-12-18 2016-05-17 Intel Corporation Function callback mechanism between a central processing unit (CPU) and an auxiliary processor
US9711194B2 (en) * 2015-01-28 2017-07-18 Xilinx, Inc. Circuits for and methods of controlling the operation of a hybrid memory system
KR102352756B1 (ko) 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
KR101923210B1 (ko) * 2016-01-14 2018-11-28 서울대학교산학협력단 이종 멀티코어 프로세서를 활용한 암호화 처리 장치 및 암호화 처리 방법
US11513805B2 (en) * 2016-08-19 2022-11-29 Wisconsin Alumni Research Foundation Computer architecture with synergistic heterogeneous processors
US10929944B2 (en) * 2016-11-23 2021-02-23 Advanced Micro Devices, Inc. Low power and low latency GPU coprocessor for persistent computing
US10795840B2 (en) 2018-11-12 2020-10-06 At&T Intellectual Property I, L.P. Persistent kernel for graphics processing unit direct memory access network packet processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1777918A (zh) * 2003-02-18 2006-05-24 舍弗塞德集团有限公司 处理图像的设备及方法
US7554959B1 (en) * 1999-12-02 2009-06-30 Cisco Technology, Inc. Apparatus and method for cluster network device discovery
CN102156658A (zh) * 2010-02-26 2011-08-17 微软公司 对象的低等待时间呈现
US20120069029A1 (en) * 2010-09-20 2012-03-22 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0285927A (ja) * 1988-09-22 1990-03-27 Hitachi Vlsi Eng Corp 記憶装置
FR2767939B1 (fr) * 1997-09-04 2001-11-02 Bull Sa Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur
US8484647B2 (en) * 2009-07-24 2013-07-09 Apple Inc. Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU
US8400458B2 (en) 2009-09-09 2013-03-19 Hewlett-Packard Development Company, L.P. Method and system for blocking data on a GPU
CN103262064A (zh) * 2010-12-16 2013-08-21 Et国际有限公司 分布式计算体系结构

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7554959B1 (en) * 1999-12-02 2009-06-30 Cisco Technology, Inc. Apparatus and method for cluster network device discovery
CN1777918A (zh) * 2003-02-18 2006-05-24 舍弗塞德集团有限公司 处理图像的设备及方法
CN102156658A (zh) * 2010-02-26 2011-08-17 微软公司 对象的低等待时间呈现
US20120069029A1 (en) * 2010-09-20 2012-03-22 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JEFF A.STUART,MICHAEL COX,JOHN D.OWENS: "GPU-to-CPU Callbacks", 《EURO-PAR 2010 PARALLEL PROCESSING WORKSHOPS》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111447561A (zh) * 2020-03-16 2020-07-24 北京百度网讯科技有限公司 车辆的图像处理系统
CN111447561B (zh) * 2020-03-16 2023-04-18 阿波罗智联(北京)科技有限公司 车辆的图像处理系统

Also Published As

Publication number Publication date
WO2013185015A2 (en) 2013-12-12
US9495718B2 (en) 2016-11-15
WO2013185015A3 (en) 2014-01-30
CN104395890B (zh) 2018-12-07
JP2015522878A (ja) 2015-08-06
KR20150024884A (ko) 2015-03-09
KR102086019B1 (ko) 2020-04-14
US20130328891A1 (en) 2013-12-12
JP6170553B2 (ja) 2017-07-26
EP2859448A2 (en) 2015-04-15

Similar Documents

Publication Publication Date Title
CN104395890A (zh) 使用异构处理器来为应用程序提供低潜伏时间的系统和方法
US10079879B2 (en) Weighted rendezvous hashing
US9678813B2 (en) Method, apparatus, and system for mutual communication between processes of many-core processor
US9413683B2 (en) Managing resources in a distributed system using dynamic clusters
EP3531290B1 (en) Data backup method, apparatus, electronic device, storage medium, and system
US11586544B2 (en) Data prefetching method and terminal device
US10484468B2 (en) Method and device for downloading file
US10044799B2 (en) Implementing synchronization of state information betweeen instances of an application as well as between different applications in an efficient, scalable manner
EP3029576B1 (en) Method, device and system for remote memory exchange partition
EP3369238B1 (en) Method, apparatus, computer-readable medium and computer program product for cloud file processing
US20170052979A1 (en) Input/Output (IO) Request Processing Method and File Server
KR20170041816A (ko) 이종 프로세서 시스템 내 캐시들 간에 데이터 이동
CN110650209A (zh) 实现负载均衡的方法和装置
US11687381B2 (en) Multi-phase distributed task coordination
US9648098B2 (en) Predictive peer determination for peer-to-peer digital content download
US8667157B2 (en) Hardware bus redirection switching
US20140229940A1 (en) Methods and apparatus for synchronizing multiple processors of a virtual machine
US9358467B2 (en) Game load management
WO2016201998A1 (zh) 一种缓存分配、数据访问、数据发送方法、处理器及系统
CN108028851B (zh) 设备群组管理方法、装置和系统
US9602594B2 (en) Processing requests
US20200210244A1 (en) Virtual resource placement
CN114710501B (zh) 服务请求处理方法、装置、服务器及计算机可读存储介质
US10313438B1 (en) Partitioned key-value store with one-sided communications for secondary global key lookup by range-knowledgeable clients
CN113867940B (zh) 一种内存管理方法和相关装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant