CN103582877A - 计算机系统中断处理 - Google Patents

计算机系统中断处理 Download PDF

Info

Publication number
CN103582877A
CN103582877A CN201180060123.9A CN201180060123A CN103582877A CN 103582877 A CN103582877 A CN 103582877A CN 201180060123 A CN201180060123 A CN 201180060123A CN 103582877 A CN103582877 A CN 103582877A
Authority
CN
China
Prior art keywords
cpu
task
apd
interrupt
queue
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
CN201180060123.9A
Other languages
English (en)
Other versions
CN103582877B (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
Priority claimed from US13/292,721 external-priority patent/US8667201B2/en
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN103582877A publication Critical patent/CN103582877A/zh
Application granted granted Critical
Publication of CN103582877B publication Critical patent/CN103582877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Bus Control (AREA)
  • Cash Registers Or Receiving Machines (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供一种用于加速处理设备(APD)请求中央处理器(CPU)处理任务的系统、方法以及制品,其包括:使用所述APD来使多个任务入队到队列上;产生用户级中断;以及使用与CPU线程相关的中断处理程序来将所述队列中的所述多个任务传输到所述CPU。

Description

计算机系统中断处理
背景
发明领域
本发明大体上是针对计算系统。更具体来说,本发明是针对处理计算系统中断。
背景技术
对使用图形处理单元(GPU)来进行一般计算的渴望在最近由于GPU的示例性每单位功率性能和/或成本而变得更加显著。一般来说,GPU的计算能力已以超过对应中央处理器(CPU)平台的计算能力的速率增长。随着移动计算市场(例如,笔记本计算机、移动智能电话、平板计算机等)和其所必需的支持服务器/企业系统的蓬勃发展,这种增长已被用来提供指定品质的所需用户体验。因此,组合使用CPU和GPU来执行具有数据并行内容的工作量正在成为一项体积技术(volume technology)。
然而,GPU传统上已在约束程序设计环境中进行操作,其可主要用于图形的加速。这些约束由以下事实而引起:GPU并不具有与CPU一样丰富的程序设计生态系统。因此,它们的使用已主要限于2D和3D图形以及少数前沿的多媒体应用,这些多媒体应用已被习惯地用于处理图形和视频应用程序设计接口(API)。
随着多厂商支持的OpenCL
Figure BDA00003343707100011
和DirectCompute
Figure BDA00003343707100012
标准API和支持工具的出现,GPU在传统应用中的限制已被扩展到传统图形的范围之外。虽然OpenCL和DirectCompute是有希望的开端,但是在创建允许将CPU和GPU组合来像CPU一样流畅地用于大多数程序设计任务的环境和生态系统方面仍存在着许多障碍。
现有的计算系统常常包括多个处理装置。例如,一些计算系统包括在独立芯片上的CPU和GPU(例如,CPU可能位于母板上,而GPU可能位于图形卡上)或在单个芯片封装中的CPU和GPU。然而,这两种布置仍包括与以下各项相关的重大挑战:(i)独立的存储系统、(ii)有效调度、(iii)提供进程之间的服务质量(QoS)保证、(iv)程序设计模型以及(v)编译至多个目标指令集体系结构(ISA)—全部都要同时使功耗降到最小。
例如,离散的芯片布置迫使系统和软件体系结构设计者利用芯片间接口来使每一个处理器存取存储器。虽然这些外部接口(例如,芯片间接口)对用于配合异构型处理器的存储器等待时间和功耗具有负效应,但是独立的存储系统(即,独立的地址空间)和驱动器管理的共享存储器产生开销,所述开销对细粒卸荷(fine grain offload)来说变得不可接受。
在包括CPU和GPU的计算系统中,某些命令不能够在GPU上有效地执行,并且需要CPU的注意。在常规系统中,GPU向CPU发出处理命令和指令的请求。当CPU接收到所述请求时,CPU调用操作系统(“OS”)来发出中断并且使用OS处理所述请求。然而,调用OS来处理来自GPU的每个请求是昂贵并且低效率的,特别是当GPU内的多个工作项目发出重复请求时。
实施方案概述
因此,所需要的是用于由CPU对GPU请求进行改进处理的系统和方法。
虽然GPU、加速处理单元(APU)以及通用用途的图形处理单元(GPGPU)是这个领域中常用的术语,但是表述“加速处理设备(APD)”被认为是更广义的表述。例如,APD是指硬件和/或软件的任何配合集合,与常规CPU、常规GPU、软件和/或其组合相比,所述任何配合集合以加速方式完成与加速图形处理任务、数据并行任务或嵌套数据并行任务相关的那些功能和计算。
在某些情况下,本发明的实施方案包括一种用于APD请求CPU处理多个任务的方法、系统以及制品。所述方法包括:使用APD来使所述多个任务入队到队列中;产生用户级中断;以及使用与CPU线程相关的中断处理程序来将队列中的多个任务传输到CPU。
本发明的实施方案还包括一种用于CPU处理来自APD的多个任务的方法、系统以及制品,其包括:从APD接收用户级中断;存取CPU线程上的与所述用户级中断相关的中断处理程序,其中所述中断处理程序存取队列;使所述多个任务从所述队列离队,其中所述多个任务是使用APD来入队的;以及处理所述离队的任务。
以下参照附图详细地描述本发明的额外特征和优点,连同本发明的各种实施方案的结构和操作。应该指出,本发明不限于本文所描述的具体实施方案。本文所提出的这类实施方案仅用于说明性目的。基于本文所包括的教义,一个或多个相关领域的技术人员将会明白额外的实施方案。
附图/图表简述
并入本文并且形成本说明书的一部分的附图示出本发明,并且与描述一起,进一步用于解释本发明的原理并且用于使相关领域技术人员能够制作并使用本发明。以下参照附图描述本发明的各种实施方案,在所述附图中,相似参考数字自始至终用于指示相似元件。
图1A是根据本发明的实施方案的处理系统的说明性方框图。
图1B是图1A中所示的APD的说明性方框图图解。
图2是能够处理用户级中断(“ULI”)的CPU线程的初始化进程的说明性流程图。
图3是APD发出ULI并且CPU处理APD的请求的说明性流程图。
图4是APD使用ULI请求CPU处理队列的说明性流程图。
将参看附图描述本发明。一般来说,元件第一次出现所在的附图通常由对应元件符号的最左边的一个或多个数字指示。
详述
在以下详述中,对“一个实施方案”、“实施方案”、“示例实施方案”等的参考指示所描述的实施方案可以包括具体特征、结构或特点,但是每个实施方案可能并没有必要包括所述具体特征、结构或特点。此外,这类短语没有必要是指同一实施方案。另外,当结合一个实施方案描述具体特征、结构或特点时,所主张的是本领域技术人员知道结合无论是否被明确地描述的其它实施方案来实现这种特征、结构或特点。
术语“本发明的实施方案”不要求本发明的所有实施方案都包括所论述的特征、优点或操作模式。在不脱离本发明的范围的情况下,可以设计出替代实施方案,并且可能并未详细描述或可能省略本发明的众所周知的元件,以免模糊本发明的相关细节。另外,本文所使用的术语仅出于描述具体实施方案的目的,而并不意图限制本发明。例如,如本文所使用,单数形式的“一个(种)”以及“所述”也意图包括复数形式,除非上下文另有明确指示。还将进一步理解的是,术语“包括”、“包括了”、“包含”和/或“包含了”在本文中使用时指明所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但是并不排除一个或多个其它特征、整体、步骤、操作、元件、部件和/或其群组的存在或添加。
图1A是包括两个处理器(即,CPU102和APD104)的统一计算系统100的示例性图解。CPU102可以包括一个或多个单核或多核CPU。在本发明的一个实施方案中,系统100被形成在单个硅芯片或封装上,组合CPU102和APD104以提供统一的程序设计和执行环境。这个环境使得APD104能够像CPU102一样流畅地用于一些程序设计任务。然而,CPU102和APD104被形成在单个硅芯片上并不是本发明的绝对要求。在一些实施方案中,CPU和APD有可能被单独地形成并且被安装在相同或不同的衬底上。
在一个实施例中,系统100还包括存储器106、操作系统108以及通信基础设施109。以下更详细地论述操作系统108和通信基础设施109。
系统100还包括内核模式驱动器(KMD)110、软件调度器(SWS)112,以及存储器管理单元116,如输入/输出存储器管理单元(IOMMU)。系统100的部件可以被实施为硬件、固件、软件或其任何组合。本领域技术人员将会理解,除了图1A中所示的实施方案中所示的各项之外,系统100可以包括一个或多个软件、硬件以及固件部件,或与图1A中所示的实施方案中所示的各项不同的一个或多个软件、硬件以及固件部件。
在一个实施例中,驱动器(如KMD110)典型地通过计算机总线或通信子系统来与装置进行通信,硬件连接至所述计算机总线或通信子系统。当调用程序调用驱动器中的例程时,所述驱动器向装置发出命令。一旦装置将数据发送回到驱动器,所述驱动器就可以调用原始调用程序中的例程。在一个实施例中,驱动器是与硬件有关的并且是操作系统特定的。所述驱动器常常提供任何必要的异步的时间有关的硬件接口所需要的中断处理。
装置驱动器,特别是在现代Microsoft Windows
Figure BDA00003343707100051
平台上的,能够以内核模式(环0)或以用户模式(环3)进行运行。以用户模式运行驱动器的主要益处是改进的稳定性,因为写入不良的用户模式装置驱动器不会通过盖写内核存储器来使系统崩溃。另一方面,用户/内核模式转换常常强加相当大的性能开销,从而针对短等待时间和高吞吐量要求禁止用户模式驱动器。内核空间可以由用户模块仅通过使用系统调用来存取。最终用户程序,像UNIX操作系统外壳或其它基于GUI的应用程序,是用户空间的一部分。这些应用程序通过内核支持的功能来与硬件进行交互。
CPU102可以包括(未图示)控制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或数字信号处理器(DSP)中的一个或多个。例如,CPU102执行控制计算系统100的操作的控制逻辑,所述控制逻辑包括操作系统108、KMD110、SWS112以及应用程序111。在这个说明性实施方案中,根据一个实施方案,CPU102通过例如以下操作来发起并且控制应用程序111的执行:在CPU102和其它处理资源(如APD104)上分配与那个应用程序相关的处理。
尤其是APD104执行用于所选定的功能的命令和程序,所述所选定的功能如图形操作和可能例如特别适用于并行处理的其它操作。一般来说,APD104可以被频繁地用于执行图形流水线操作(如像素操作、几何计算),并且将图像渲染至显示器。在本发明的各种实施方案中,APD104还可以基于从CPU102所接收的命令或指令来执行计算处理操作(例如,与图形无关的那些操作,例如像视频操作、物理模拟、计算流体动力学等)。
例如,命令可以被认为是典型地不是定义在指令集体系结构(ISA)中的特殊指令。可以通过特殊处理器(如分派处理器、命令处理器或网络控制器)来执行命令。另一方面,指令可以被认为是例如计算机体系结构内部的处理器的单一操作。在一个实施例中,当使用两个ISA集时,一些指令被用于执行x86程序,而一些指令被用于执行APD单元上的内核。
在一个说明性实施方案中,CPU102将所选定的命令传输至APD104。这些所选定的命令可以包括图形命令和服从并行执行的其它命令。可以大致上独立于CPU102来执行还可以包括计算处理命令在内的这些所选定的命令。
APD104可以包括其自己的计算单元(未图示),如但不限于一个或多个SIMD处理核心。如本文所提及,SIMD是流水线或程序设计模型,其中通过每个处理元件自己的数据和共享的程序计数器,在多个处理元件中的每一个上同时地执行内核。所有处理元件执行一个完全相同的指令集。预测的使用使得工作项目能够参与或不参与每个所发出的命令。
在一个实施例中,每个APD104计算单元可以包括一个或多个标量和/或向量浮点单元和/或算术逻辑单元(ALU)。APD计算单元还可以包括专用处理单元(未图示),如反平方根单元和正弦/余弦单元。在一个实施例中,APD计算单元在本文中统称为着色器核心122。
一般来说,具有一个或多个SIMD使得APD104理想地适用于数据并行任务(如在图形处理中常见的那些)的执行。
一些图形流水线操作(如像素处理)和其它并行计算操作可能要求对输入数据元素的流或集合执行同一命令流或计算内核。同一计算内核的相应实例化可以在着色器核心122中的多个计算单元上同时地执行,以便并行地处理这类数据元素。如本文所提及,例如,计算内核是含有在程序中陈述并且在APD上执行的指令的功能。这个功能还被称为内核、着色器、着色器程序或程序。
在一个说明性实施方案中,每个APD计算单元(例如,SIMD处理核心)可以执行特定工作项目的相应实例化来处理传入数据。工作项目是由命令在装置上所调用的内核的并行执行的集合中的一个。工作项目可以由一个或多个处理元件执行为在APD计算单元上执行的工作群组的一部分。
工作项目通过其全局ID和局部ID来与所述集合内的其它执行区别开。在一个实施例中,一起同时在SIMD上执行的工作群组中的工作项目子集可以被称为波前136。波前的宽度是计算单元(例如,SIMD处理核心)的硬件的特点。如本文所提及,工作群组是在单一计算单元上执行的相关工作项目的集合。群组中的工作项目执行同一内核并且共享本地存储器和工作群组屏障。
在示例性实施方案中,在同一SIMD处理核心上处理来自工作群组的所有波前。一次一个地发出波前上的指令,并且在所有工作项目遵循同一控制流时,每个工作项目执行同一程序。波前还可以被称为弯曲、向量或线程。
执行掩码和工作项目预测用于使得发散的控制流能够在一个波前内,其中每个单独的工作项目实际上可以采取通过内核的唯一的代码路径。当工作项目的全集不可在波前开始时间使用时,可以处理部分填充的波前。例如,着色器核心122可以同时执行预定数量的波前136,每个波前136包括多个工作项目。
在系统100内,APD104包括其自己的存储器,如图形存储器130(但存储器130不限于仅供图形使用)。图形存储器130提供用于在APD104中进行计算期间使用的本地存储器。着色器核心122内的单独计算单元(未图示)可以具有其自己的本地数据储存器(未图示)。在一个实施方案中,APD104包括存取本地图形存储器130以及存取存储器106。在另一个实施方案中,APD104可以包括存取动态随机存取存储器(DRAM)或直接附接至APD104并且与存储器106分离的其它此类存储器(未图示)。
在所示实施例中,APD104还包括一个或“n”数量个命令处理器(CP)124。CP124控制APD104内的处理。CP124还从存储器106中的命令缓冲区125检索待执行的命令,并且对这些命令在APD104上的执行进行协调。
在一个实施例中,CPU102将基于应用程序111的命令输入适当的命令缓冲区125中。如本文所提及,应用程序是将在CPU和APD内的计算单元上执行的程序部分的组合。
多个命令缓冲区125可以用被调度来在APD104上执行的每个进程来维护。
CP124可以用硬件、固件或软件或其组合来实施。在一个实施方案中,CP124被实施为具有用于实施包括调度逻辑在内的逻辑的微代码的精简指令集计算机(RISC)引擎。
APD104还包括一个或“n”数量个分派控制器(DC)126。在本申请中,术语“分派”是指由分派控制器执行的命令,所述分派控制器使用上下文状态来为计算单元集合上的工作群组集合发起内核的执行的开始。DC126包括用以发起着色器核心122中的工作群组的逻辑。在一些实施方案中,DC126可以被实施为CP124的一部分。
系统100还包括用于从运行列表150选择进程以在APD104上执行的硬件调度器(HWS)128。HWS128可以使用循环法、优先级或基于其它调度策略来从运行列表150选择进程。例如,可以动态地确定优先级。HWS128还可以包括用以管理运行列表150的功能性,例如通过添加新的进程以及通过从运行列表150删除现有进程来管理。HWS128的运行列表管理逻辑有时被称为运行列表控制器(RLC)。
在本发明的各种实施方案中,当HWS128发起执行来自运行列表150的进程时,CP124开始从对应的命令缓冲区125检索并且执行命令。在一些情况下,CP124可以生成待在APD104内部执行的一个或多个命令,这些命令对应于从CPU102接收的命令。在一个实施方案中,CP124与其它部件一起对APD104上的命令进行区分优先次序并且调度,其方式为改进或最大化对APD104资源和/或系统100的资源的利用率。
APD104可以存取或可以包括中断生成器146。中断生成器146可以由APD104配置来在APD104遇到如页面错误等中断事件时中断操作系统108。例如,APD104可以依赖于IOMMU116内的中断生成逻辑来产生以上所指出的页面错误中断。
APD104还可以包括用于抢先取得当前正在着色器核心122内运行的一个进程的抢先和上下文切换逻辑120。例如,上下文切换逻辑120包括用以停止所述进程并且保存其当前状态(例如,着色器核心122状态和CP124状态)的功能性。
如本文所提及,术语“状态”可以包括初始状态、中间状态和/或最终状态。初始状态是机器根据程序设计次序处理输入数据集以产生数据输出集合的开始点。存在例如需要在几个点处被存储以使得处理能够向前进的中间状态。这个中间状态有时被存储来允许当由某一其它进程中断时在稍后时间处继续执行。还存在可以被记录为输出数据集的一部分的最终状态。
抢先和上下文切换逻辑120还可以包括用以将另一个进程上下文切换至APD104中的逻辑。用以将另一个进程上下文切换成在APD104上运行的功能性可以包括例如通过CP124和DC126来实例化所述进程以在APD104上运行,为这个进程恢复任何先前保存的状态,并且开始其执行。
存储器106可以包括非永久性存储器,如DRAM(未图示)。存储器106可以在执行应用程序或其它处理逻辑的若干部分期间存储例如处理逻辑指令、常量值以及变量值。例如,在一个实施方案中,用以在CPU102上执行一个或多个操作的控制逻辑的若干部分可以在由CPU102执行操作的相应部分期间驻留在存储器106内。
在执行期间,相应的应用程序、操作系统功能、处理逻辑命令以及系统软件可以驻留在存储器106中。对操作系统108很重要的控制逻辑命令在执行期间通常将驻留在存储器106中。包括例如内核模式驱动器110和软件调度器112在内的其它软件命令在系统100的执行期间也可以驻留在存储器106中。
在这个实施例中,存储器106包括由CPU102使用来将命令发送到APD104的命令缓冲区125。存储器106还包含进程列表和进程信息(例如,活动列表152和进程控制块154)。这些列表以及信息由在CPU102上执行的调度软件使用来将调度信息传递至APD104和/或相关调度硬件。存取存储器106可以由耦合到存储器106的存储器控制器140管理。例如,来自CPU102或来自其它装置的对从存储器106读取或写入存储器106的请求由所述存储器控制器140管理。
转回参看系统100的其它方面,IOMMU116是一个多上下文存储器管理单元。
如本文所使用,上下文可以认为是内核在其中执行的环境和在其中定义同步与存储器管理的领域。上下文包括装置集合、可由这些装置存取的存储器、对应的存储器特性以及用来调度一个或多个内核的执行或在存储器对象上的操作的一个或多个命令队列。
转回参看图1A中所示的实施例,IOMMU116包括用以执行用于包括APD104在内的装置的存储器页面存取的虚拟至物理地址翻译的逻辑。IOMMU116还可以包括用以生成中断的逻辑,例如当由如APD104等装置的页面存取导致页面错误时生成中断。IOMMU116还可以包括或能够存取翻译旁视缓冲区(TLB)118。作为实例,TLB118可以在内容可寻址存储器(CAM)中实施,以便应由APD104对存储器106中的数据所做出的请求而加速逻辑(即,虚拟)存储器地址至物理存储器地址的翻译。
在所示实施例中,通信基础设施109视需要互连系统100的部件。通信基础设施109可以包括(未图示)外围部件互连(PCI)总线、扩展的PCI(PCI-E)总线、高级微控制器总线体系结构(AMBA)总线、高级图形端口(AGP)或其它此类通信基础设施中的一个或多个。通信基础设施109还可以包括以太网,或类似网络,或满足应用程序的数据传送速率要求的任何适当物理通信基础设施。通信基础设施109包括用以互连包括计算系统100的部件在内的部件的功能性。
在这个实施例中,操作系统108包括用以管理系统100的硬件部件以及用以提供常见服务的功能性。在各种实施方案中,操作系统108可以在CPU102上执行,并且提供常见服务。这些常见服务可以包括例如调度用于在CPU102内部执行的应用程序、错误管理、中断服务以及处理其它应用程序的输入和输出。
在一些实施方案中,基于由如中断控制器148的中断控制器生成的中断,操作系统108调用适当的中断处理例程。例如,在检测到页面错误中断之后,操作系统108可以即刻调用中断处理程序来起始将相关页面加载到存储器106中,并且更新对应页面表。
操作系统108还可以包括用以通过确保以下操作来保护系统100的功能性:存取硬件部件是通过操作系统管理的内核功能性来进行调解。事实上,操作系统108确保了应用程序(如应用程序111)在用户空间中在CPU102上运行。操作系统108还确保了应用程序111调用由操作系统提供的内核功能性,以便存取硬件和/或输入/输出功能性。
举例来说,应用程序111包括用以执行用户计算的各种程序或命令,这些用户计算也在CPU102上执行。CPU102能够无缝地发送所选定的命令以用于在APD104上处理。在一个实施例中,KMD110实施应用程序设计接口(API),通过所述应用程序设计接口,CPU102或在CPU102上执行的应用程序或其它逻辑可以调用APD104功能性。例如,KMD110可以使来自CPU102的命令排队到命令缓冲区125,APD104随后将从命令缓冲区检索这些命令。此外,KMD110可以与SWS112一起执行待在APD104上执行的进程的调度。例如,SWS112可以包括用以维护待在APD上执行的进程的已区分优先次序的列表的逻辑。
在本发明的其它实施方案中,在CPU102上执行的应用程序可以在对命令进行排队时完全绕过KMD110。
在一些实施方案中,SWS112维护待在APD104上执行的进程的在存储器106中的活动列表152。SWS112还在活动列表152中选择进程子集来由硬件中的HWS128管理。关于在APD104上运行每个进程的信息通过进程控制块(PCB)154而从CPU102传递至APD104。
用于应用程序、操作系统以及系统软件的处理逻辑可以包括在如C语言的程序设计语言中和/或如Verilog、RTL或网表的硬件描述语言中指定的命令,以便使得能够最终通过掩模作品(maskwork)/光掩模的产生而配置制造过程,从而生产体现本文所描述的本发明的方面的硬件装置。
本领域技术人员在阅读本描述后将了解,计算系统100可以包括比图1A中所示更多或更少的部件。例如,计算系统100可以包括一个或多个输入接口、非易失性储存器、一个或多个输出接口、网络接口以及一个或多个显示器或显示器接口。
图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。
在图1B中,图形流水线162可以包括块集合,本文称为有序流水线164。作为一个实例,有序流水线164包括顶点群组翻译器(VGT)164a、图元汇编器(PA)164b、扫描变换器(SC)164c以及着色器输出后期渲染单元(SX/RB)176。有序流水线164内的每个块可以表示图形流水线162内的不同图形处理级。有序流水线164可以是固定功能硬件流水线。可以使用也将在本发明的精神和范围内的其它实施方式。
尽管只有少量数据可以被提供为到图形流水线162的输入,但这些数据将在被提供为从图形流水线162的输出时被放大。图形流水线162还包括用于在从CP流水线124a接收的工作项目群组内的整个范围中进行计数的DC166。通过DC166提交的计算工作与图形流水线162是半同步的。
计算流水线160包括着色器DC168和170。所述DC168和170中的每一个被配置来在从CP流水线124b和124c接收的工作群组内的整个计算范围中进行计数。
在图1B中示出的DC166、168以及170接收输入范围,将这些范围分解成工作群组,然后将这些工作群组转发到着色器核心122。
由于图形流水线162通常是固定功能流水线,因而难以保存并恢复其状态,并且因此,图形流水线162难以进行上下文切换。因此,在大多数情况下,如本文所论述,上下文切换不涉及在图形进程之间进行上下文切换。一个例外是对于在着色器核心122中的图形工作,它可以进行上下文切换。
在图形流水线162内部的工作处理已经完成之后,通过后期渲染单元176处理所完成的工作,所述后期渲染单元进行深度和色彩计算,并且然后将其最终结果写入存储器130。
着色器核心122可以由图形流水线162和计算流水线160共享。着色器核心122可以是被配置来运行波前的一般处理器。在一个实施例中,在计算流水线160内部的所有工作是在着色器核心122中进行处理的。着色器核心122运行可编程的软件代码,并且包括各种形式的数据,例如状态数据。
当所有工作项目都不能存取APD资源时,发生QoS破坏。本发明的实施方案有助于向APD104内的资源有效地且同时地启动两个或更多个任务,从而使得所有工作项目都能够存取各种APD资源。在一个实施方案中,APD输入方案通过管理APD的工作量来使得所有工作项目都能够有权并行使用APD资源。当APD的工作量接近最大水平时(例如,在达到最大I/O速率期间),这个APD输入方案会提供帮助,因为原本未使用的处理资源可以在众多情景下被同时使用。例如,能够使串行输入流抽象化为看起来像对APD的并行同时输入。
举例来说,每个CP124都可以将一个或多个任务作为输入提交给APD104内的其它资源,其中每个任务都可以表示多个波前。在提交第一任务作为输入之后,可以允许这个任务在一段时间上斜升,从而利用完成相应任务所必需的所有APD资源。单独地,这个第一任务可以达到或者可以不达到最大APD利用率阈值。然而,随着其它任务入队并且等待在APD104内进行处理,可以管理APD资源的分配以确保所有任务可以同时使用APD104,每个任务实现APD的最大利用率的某个百分比。这种多个任务对APD104的同时使用以及它们的组合利用率百分比确保实现预定的最大APD利用率阈值。
图2为能够处理ULI的CPU线程的初始化进程的说明性流程图。
在操作202处,CPU102初始化CPU线程。在初始化进程期间,CPU102对硬件表编程负责处理ULI的子例程的存储器地址。CPU102还将ULI寄存器设置为指示未从APD1104接收到ULI的值。
在操作204处,CPU线程为APD104调度任务。在操作206处,APD104开始执行在操作204中所调度的任务。APD104使用一个或多个着色器核心122执行所调度的任务,如本文所描述。
同时地,在操作208处,CPU线程开始处理由CPU102委派给CPU线程的任务。本领域技术人员将了解,在操作208处执行的CPU线程可以由CPU102定期地取消调度并且重新调度。
当APD104需要CPU102的注意时,APD104发出ULI。
图3为APD发出ULI并且CPU处理APD的请求的说明性流程图300。在操作302处,APD104需要CPU102的注意并且发出ULI。在操作304处,CPU102接收来自CPU104的ULI。
在操作306处,CPU102确定在操作204中调度APD104上的任务的CPU线程是否正在CPU102上执行。如果所述线程正在CPU102上执行,那么流程图进行到操作308。否则,流程图进行到本文所描述的操作318。
在操作308处,CPU线程将其当前状态保存到系统存储器106中。本领域技术人员将了解,当前状态有关于当线程CPU102从APD104接收到ULI时线程CPU102正在处理的任务,并且可以包括寄存器和在未来复原CPU线程的状态所必需的其它信息。
在操作310处,CPU线程存取包括子例程的中断处理程序。CPU线程通过存取存储子例程的存储器地址的硬件表来存取子例程。
在操作312处,CPU线程开始执行所述子例程,并且因此处理由APD104产生的ULI请求。如本文所描述,子例程可以含有为APD104而使另外工作入队的代码,这样使得APD104在CPU102处理ULI时不保持闲置。
在操作314处,CPU线程完成在子例程中处理指令。CPU线程发信号通知APD104:所请求的工作已经使用命令缓冲区125来完成。在ULI完成之后,CPU线程返回至操作208,并且APD104返回至操作206。
在计算环境中,CPU102处理多个CPU线程。例如,CPU102可以根据CPU线程的优先级、CPU核心的数量等来调度和取消调度CPU线程。通常,当CPU102取消调度CPU线程时,CPU102使用XSAVE功能来保存CPU线程的寄存器的状态。
然而,即使CPU102取消调度CPU线程,APD104仍继续处理CPU线程在APD104上启动的任务。因为APD104继续处理这些任务,所以APD104可以在CPU102取消调度CPU线程时发出ULI。
为了使CPU线程确定在其由CPU102取消调度时接收到ULI,将ULI事件保存在系统存储器106中,在系统存储器中,ULI事件可由KMD110存取。当CPU102复原CPU线程时,KMD110指示ULI已发生。被复原的CPU线程接着引导到子例程并且开始处理ULI。通常,CPU102使用XRSTOR功能来复原CPU线程。
回到图3,当CPU102确定为被取消调度的CPU线程发出ULI时,CPU102进行到操作316。
在操作316处,将ULI路由至KMD110,直到CPU102重新调度对应的CPU线程。在一个实施方案中,产生CPU线程的进程识别符(“进程ID”)和CPU线程识别符(“线程ID”)也与ULI一起路由至KMD110。在一个替代实施方案中,CPU102可以将ULI、进程ID和线程ID保存到系统存储器106中,并且避免使用KMD110。
在操作318处,CPU102复原CPU线程。CPU102使用XRSTOR功能来从系统存储器106中检索CPU线程的状态。在一个实施方案中,CPU102可以在独立于是否已向CPU线程发出ULI的时间处恢复CPU线程。
在另一个说明性实施方案中,KMD110可以致使CPU102在其接收到针对具体CPU线程的ULI时更快速地复原CPU线程。例如,KMD110可以提高CPU线程的优先级,因此致使CPU102在其它被取消调度的CPU线程之前复原所述CPU线程。
在操作320处,CPU线程确定是否已由APD104发出任何ULI。如果已为CPU线程发出ULI,那么示例性流程图300进行到操作308。否则,CPU线程进行到如本文所描述的操作308。
当APD104需要CPU102的注意时,APD104发出ULI,如本文所描述。除了使APD104向CPU102请求对单个任务的注意之外,APD104还可以请求CPU102在单个ULI中处理多个任务。在APD104发出ULI之前,APD104使许多任务入队到一个公用队列上。本领域技术人员将了解到,公用队列是CPU102和CPU104处理器可见的。在一个实施方案中,多个着色器核心122可以使任务入队到一个队列上。
当APD104向CPU102发出ULI时,CPU线程引导到包括子例程的中断处理程序。所述子例程能够存取公用队列,并且可以使已排队的任务离队且处理所述已排队的任务。在一个实施方案中,CPU线程在处理之前对已离队的任务进行扫描并且区分优先次序。例如,CPU线程可以确定如何基于任务的优先级、任务类型、特定的服务质量等来对任务进行区分优先次序。
图4为APD使用ULI请求CPU处理队列的说明性流程图400。在操作402处,APD104使任务入队到队列上。在操作404处,APD104向CPU102发出ULI。
在操作406处,CPU102接收来自APD104的ULI并且处理所述ULI,如本文所描述。当CPU102如本文所描述地执行或重新调度CPU线程(所述CPU线程为APD104调度工作)时,流程图进行到操作408。
在操作408处,CPU线程保存其当前工作量并且引导到子例程。在所述子例程的内部,CPU线程如本文所描述地开始使任务离队并且处理所述任务。一旦CPU线程完成对任务的处理,则CPU线程通知APD104(如果需要的话)且/或返回处理其所保存的工作量。
本发明的各种方面可以由软件、固件、硬件或其组合来实施。例如,由图2的流程图200、图3的流程图300、图4的流程图400所示的方法可以在图1的统一计算系统100中实施。依据这个示例性统一计算系统100描述了本发明的各种实施方案。相关领域技术人员将清楚如何使用其它计算机系统和/或计算机体系结构来实施本发明。
在本文献中,术语“计算机程序介质”和“计算机可用介质”用以大体上指代如可装卸存储单元或硬盘驱动器等介质。计算机程序介质和计算机可用介质还可以指代存储器,如系统存储器106和图形存储器130,其可以是存储器半导体(例如,DRAM等)。这些计算机程序产品是用于向统一计算系统100提供软件的手段。
本发明还针对包括存储在任何计算机可用介质上的软件的计算机程序产品。这些软件当在一个或多个数据处理装置中执行时致使数据处理装置如本文中描述那样来操作,或者,如上文提到,允许合成和/或制造计算装置(例如,ASIC或处理器)来执行本文中所描述的本发明的实施方案。本发明的实施方案采用现在已知或将来知道的任何计算机可用或可读介质。计算机可用介质的实例包括(但不限于)主要存储装置(例如,任何类型的随机存取存储器)、次要存储装置(例如,硬盘驱动器、软盘、CD ROM、ZIP磁盘、磁带、磁性存储装置、光学存储装置、MEMS、纳米技术存储装置等)以及通信介质(例如,有线和无线通信网络、局域网、广域网、企业内部网等)。
尽管上文已经描述了本发明的各种实施方案,但应当了解,仅以实例方式而非限制方式来呈现所述各种实施方案。相关领域技术人员将了解,可以在不脱离如所附权利要求中所界定的本发明的精神和范围的情况下在其中做出各种形式和细节改变。应理解,本发明不限于这些实施例。本发明适用于如本文所描述那样进行操作的任何元件。因此,本发明的宽度和范围不应被任何上文描述的示例性实施方案所限制,而是应该仅根据所附权利要求及其等效物来限定。

Claims (29)

1.一种用于加速处理设备(APD)请求中央处理器(CPU)处理任务的方法,其包括:
使用所述APD来产生用户级中断;以及
使用与在所述CPU上执行的CPU线程相关的中断处理程序来将所述任务传输到所述CPU。
2.如权利要求1所述的方法,其进一步包括:
响应于处理所述任务而接收来自所述CPU线程的结果。
3.如权利要求1所述的方法,其进一步包括:
使用所述APD来使多个任务入队到队列上;以及
使用所述用户级中断来将所述队列中的所述多个任务传输到所述CPU。
4.如权利要求3所述的方法,其中使用一个或多个着色器核心来使所述多个任务入队。
5.一种用于中央处理器(CPU)处理来自加速处理设备(APD)的任务的方法,其包括:
从所述APD接收用户级中断;
存取CPU线程上的与所述用户级中断相关的中断处理程序,其中所述中断处理程序存取所述任务;以及
处理所述任务。
6.如权利要求5所述的方法,其进一步包括:
响应于处理所述任务而将来自所述CPU线程的结果传输到所述APD。
7.如权利要求5所述的方法,其中所述中断处理程序存取在所述任务正被处理时向所述APD提供工作的子例程。
8.如权利要求5所述的方法,其中子例程查询所述APD上的状态。
9.如权利要求5所述的方法,其中所述用户级中断为异步中断。
10.如权利要求5所述的方法,其中所述CPU线程包括用以指示所述用户级中断何时发生的寄存器。
11.如权利要求5所述的方法,其中所述中断处理程序存取队列,所述队列包括多个任务,并且所述方法进一步包括:
使所述多个任务从所述队列离队,其中所述多个任务是使用所述APD来入队的;以及
处理所述多个任务中的每个离队的任务。
12.如权利要求11所述的方法,其进一步包括所述中断处理程序扫描所述多个任务。
13.如权利要求12所述的方法,其进一步包括基于扫描来对所述多个任务进行区分优先次序。
14.如权利要求11所述的方法,其进一步包括将所述所处理的任务的结果传输到所述APD。
15.一种用于加速处理设备(APD)请求中央处理器(CPU)处理任务的系统,其包括:
所述APD,其被配置来:
产生用户级中断;以及
使用与在所述CPU上执行的CPU线程相关的中断处理程序来将所述任务传输到所述CPU。
16.如权利要求15所述的系统,其中所述APD响应于处理所述任务而接收来自所述CPU线程的结果。
17.如权利要求15所述的系统,其进一步包括:
被配置来存储队列的存储器,其中所述队列被配置来包括多个任务;以及
其中所述APD进一步被配置来:
使所述多个任务入队到所述队列上;以及
将所述用户级中断传输到所述CPU,其中所述用户级中断激活CPU线程上的中断处理程序,所述中断处理程序致使所述CPU线程使所述多个任务离队以用于在所述CPU上处理。
18.如权利要求17所述的系统,其中使用一个或多个着色器核心来使所述多个任务入队。
19.一种用于中央处理器(CPU)处理来自加速处理设备(APD)的任务的系统,其包括:
所述CPU;
存储器;以及
CPU线程,其在所述CPU上执行并且被配置来:
从所述APD接收用户级中断;
存取与所述用户级中断相关的中断处理程序,其中所述中断处理程序存取存储在所述存储器中的所述任务;以及
处理所述任务。
20.如权利要求19所述的系统,其中所述CPU响应于处理所述任务而将来自所述CPU线程的结果传输到所述APD。
21.如权利要求19所述的系统,其中所述中断处理程序存取在所述任务正被处理时向所述APD提供工作的子例程。
22.如权利要求19所述的系统,其中子例程查询所述APD上的状态。
23.如权利要求19所述的系统,其中所述用户级中断为异步中断。
24.如权利要求19所述的系统,其中所述CPU线程包括用以指示所述用户级中断何时发生的寄存器。
25.如权利要求19所述的系统,其进一步包括:
被配置来存储队列的存储器,所述队列包括多个任务;以及
所述CPU线程,其进一步被配置来:
接收用户级中断,其中所述用户级中断激活所述中断处理程序;以及
使所述多个任务从存储在存储器中的所述队列离队;以及
处理所述多个任务。
26.如权利要求25所述的系统,其中所述CPU线程被配置来扫描所述多个任务。
27.如权利要求25所述的系统,其进一步包括基于扫描来对所述队列中的所述多个任务进行区分优先次序。
28.一种上面记录有指令的计算机可读介质,所述指令在由计算装置执行时致使所述计算装置执行用于加速处理设备(APD)请求中央处理器(CPU)处理多个任务的方法,其包括:
使用所述APD来使所述多个任务入队到队列上;
产生用户级中断;以及
使用与CPU线程相关的中断处理程序来将所述队列中的所述多个任务传输到所述CPU以用于在所述CPU上处理。
29.一种上面记录有指令的计算机可读介质,所述指令在由计算装置执行时致使所述计算装置引起中央处理器(CPU)处理来自加速处理设备(APD)的多个任务,所述处理包括:
从所述APD接收用户级中断;
存取CPU线程上的与所述用户级中断相关的中断处理程序,其中所述中断处理程序存取队列;
使所述多个任务从所述队列离队,其中所述多个任务是使用所述APD来入队的;以及
处理所述离队的任务。
CN201180060123.9A 2010-12-15 2011-12-09 计算机系统中断处理 Active CN103582877B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US42348310P 2010-12-15 2010-12-15
US61/423,483 2010-12-15
US13/292,721 US8667201B2 (en) 2010-12-15 2011-11-09 Computer system interrupt handling
US13/292,721 2011-11-09
PCT/US2011/064169 WO2012082556A2 (en) 2010-12-15 2011-12-09 Computer system interrupt handling

Publications (2)

Publication Number Publication Date
CN103582877A true CN103582877A (zh) 2014-02-12
CN103582877B CN103582877B (zh) 2015-09-23

Family

ID=49326938

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180060123.9A Active CN103582877B (zh) 2010-12-15 2011-12-09 计算机系统中断处理

Country Status (5)

Country Link
EP (1) EP2663926B1 (zh)
JP (1) JP5805783B2 (zh)
KR (1) KR101791182B1 (zh)
CN (1) CN103582877B (zh)
WO (1) WO2012082556A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109388592A (zh) * 2017-08-02 2019-02-26 伊姆西Ip控股有限责任公司 采用用户空间存储驱动器内的多个排队结构来提高速度
CN112470125A (zh) * 2018-07-24 2021-03-09 三菱电机株式会社 中断处理方法、计算机系统以及程序产品
CN113051082A (zh) * 2021-03-02 2021-06-29 长沙景嘉微电子股份有限公司 软件硬件数据同步方法、装置、电子设备和存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465620B2 (en) * 2012-12-20 2016-10-11 Intel Corporation Scalable compute fabric
US10387343B2 (en) 2015-04-07 2019-08-20 International Business Machines Corporation Processing of events for accelerators utilized for parallel processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015627A1 (en) * 2002-07-19 2004-01-22 Giuseppe Desoli Synchronization of asynchronous emulated interrupts
CN1609812A (zh) * 2003-02-18 2005-04-27 微软公司 用于增强协处理器性能的系统和方法
US20070260796A1 (en) * 2006-05-05 2007-11-08 Ati Technologies, Inc. Event handler for context-switchable and non-context-switchable processing tasks
US20090153571A1 (en) * 2007-12-17 2009-06-18 Crow Franklin C Interrupt handling techniques in the rasterizer of a GPU
CN101667284A (zh) * 2008-08-22 2010-03-10 Arm有限公司 用于中央处理单元和图形处理单元之间通信的设备和方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02188866A (ja) * 1989-01-17 1990-07-24 Fujitsu Ltd コプロセッサにおける事象管理方式
JPH0496857A (ja) * 1990-08-15 1992-03-30 Fujitsu Ltd コプロセッサにおける事象通知方式
US6128672A (en) * 1998-03-10 2000-10-03 Motorola, Inc. Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device
US7340547B1 (en) 2003-12-02 2008-03-04 Nvidia Corporation Servicing of multiple interrupts using a deferred procedure call in a multiprocessor system
EP1958163A4 (en) * 2005-12-08 2011-08-17 Agency 9 Ab METHOD FOR REPRODUCING A ROOT-FREE SCENE GRAPH WITH A USER-CONTROLLED ORDER OF THE PLAYBACK
WO2008063153A2 (en) 2006-10-12 2008-05-29 United Technologies Corporation Managing low pressure turbine maximum speed in a turbofan engine
JP4990250B2 (ja) * 2008-09-18 2012-08-01 株式会社日立産機システム 割込制御装置、割込制御システム、割込制御方法および割込制御プログラム
JP2010181989A (ja) * 2009-02-04 2010-08-19 Renesas Electronics Corp データ処理装置
US8255603B2 (en) 2009-08-14 2012-08-28 Advanced Micro Devices, Inc. User-level interrupt mechanism for multi-core architectures

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015627A1 (en) * 2002-07-19 2004-01-22 Giuseppe Desoli Synchronization of asynchronous emulated interrupts
CN1609812A (zh) * 2003-02-18 2005-04-27 微软公司 用于增强协处理器性能的系统和方法
US20070260796A1 (en) * 2006-05-05 2007-11-08 Ati Technologies, Inc. Event handler for context-switchable and non-context-switchable processing tasks
US20090153571A1 (en) * 2007-12-17 2009-06-18 Crow Franklin C Interrupt handling techniques in the rasterizer of a GPU
CN101667284A (zh) * 2008-08-22 2010-03-10 Arm有限公司 用于中央处理单元和图形处理单元之间通信的设备和方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109388592A (zh) * 2017-08-02 2019-02-26 伊姆西Ip控股有限责任公司 采用用户空间存储驱动器内的多个排队结构来提高速度
CN109388592B (zh) * 2017-08-02 2022-03-29 伊姆西Ip控股有限责任公司 采用用户空间存储驱动器内的多个排队结构来提高速度
CN112470125A (zh) * 2018-07-24 2021-03-09 三菱电机株式会社 中断处理方法、计算机系统以及程序产品
CN112470125B (zh) * 2018-07-24 2024-02-20 三菱电机株式会社 中断处理方法、计算机系统以及存储介质
CN113051082A (zh) * 2021-03-02 2021-06-29 长沙景嘉微电子股份有限公司 软件硬件数据同步方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
KR101791182B1 (ko) 2017-10-27
EP2663926A4 (en) 2015-01-07
KR20130136499A (ko) 2013-12-12
WO2012082556A2 (en) 2012-06-21
EP2663926A2 (en) 2013-11-20
CN103582877B (zh) 2015-09-23
JP2014503899A (ja) 2014-02-13
WO2012082556A3 (en) 2013-11-14
EP2663926B1 (en) 2017-02-22
JP5805783B2 (ja) 2015-11-10

Similar Documents

Publication Publication Date Title
JP6381734B2 (ja) グラフィックス計算プロセススケジューリング
CN103262002B (zh) 优化系统调用请求通信
CN103608776B (zh) 异构型处理设备上的动态工作划分
KR101922681B1 (ko) 셰이더 코어에서 셰이더 자원 할당을 위한 정책
EP2652614B1 (en) Graphics processing dispatch from user mode
US20120229481A1 (en) Accessibility of graphics processing compute resources
US9430281B2 (en) Heterogeneous enqueuing and dequeuing mechanism for task scheduling
CN103582877B (zh) 计算机系统中断处理
CN103262039A (zh) 用于处理装置的同步操作的方法和系统
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant