CN104221005B - 用于从多线程发送请求至加速器的机制 - Google Patents

用于从多线程发送请求至加速器的机制 Download PDF

Info

Publication number
CN104221005B
CN104221005B CN201280072132.4A CN201280072132A CN104221005B CN 104221005 B CN104221005 B CN 104221005B CN 201280072132 A CN201280072132 A CN 201280072132A CN 104221005 B CN104221005 B CN 104221005B
Authority
CN
China
Prior art keywords
request
accelerator
thread
order buffer
cpu
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.)
Active
Application number
CN201280072132.4A
Other languages
English (en)
Other versions
CN104221005A (zh
Inventor
R·罗恩
B·靳兹伯格
E·威斯曼
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Priority to CN201810259320.7A priority Critical patent/CN108681519B/zh
Publication of CN104221005A publication Critical patent/CN104221005A/zh
Application granted granted Critical
Publication of CN104221005B publication Critical patent/CN104221005B/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/301In special purpose processing node, e.g. vector processor

Abstract

一种装置被描述为拥有多个核,每个核具有a)CPU、b)加速器、和c)在该CPU和该加速器之间耦合的控制器以及多个排序缓冲器。每个排序缓冲器专用于一个不同的CPU线程。每一个排序缓冲器保持从它的相应的线程处发送至加速器的一个或多个请求。该控制器控制将该排序缓冲器的各个请求发送至加速器。

Description

用于从多线程发送请求至加速器的机制
技术领域
技术领域一般地涉及计算系统设计,且更特别地,涉及用于从多线程发送请求至加速器的机制。
背景技术
协处理器的传统集成
随着半导体制造过程到达了每个管芯一百万兆晶体管的时代,设计工程师将面对如何最有效地利用所有可用晶体管的问题。一种设计方法是使用管芯上的专用硬件“加速”以及一个或多个通用的CPU核来实现特定的计算密集型函数。加速器以被设计为执行特定计算密集型函数的专用的逻辑块实现。此专用逻辑块的迁移密集型计算将通用CPU核从执行大量指令释放,因此增加CPU核的效力和效率。
虽然以协处理器(诸如图形协处理器)为形式的“加速”在本领域是公知的,但是此传统的协处理器被OS视为操作系统(OS)在其上运行的CPU核外部的单独的“设备”(在更大的计算系统中)。这些协处理器因此通过特定设备驱动器软件被访问且不在与CPU核相同的虚拟存储器空间外操作。同样地,传统协处理器不分享或预期在通用CPU核上执行的虚拟地址到物理的地址转换机制。
此外,当OS卸载任务至传统协处理器时,发生大的延迟。特定地,因为CPU和传统协处理器本质上对应单独的、隔离的子系统,当运行在CPU核上应用中限定的任务从应用通过OS“内核”传递至管理协处理器的驱动器时,重要的通信资源被消耗了。这种大的延迟支持这样的系统设计:从主OS调用协处理器上相对不频繁的任务,但每个任务有大量相关联的数据块。实际上,传统协处理器主要以粗粒方式而不是以细粒方式被利用。
随着当前的系统设计者对以细粒度的使用方式将更快的加速引入计算系统中感兴趣,用于在计算系统中集成加速的新范式正在形成。
附图简述
本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考标号表示类似的元件,其中:
图1示出计算系统,其每个处理核包括通用CPU和紧密耦合于通用CPU的加速器。
图2示出用于在通用CPU上的线程以调用加速器的技术。
图3示出排序缓冲器和相关的状态图。
图4示出线程切换过程;
图5示出用于处理页面错误的过程;
图6示出第一计算系统实施例。
图7示出第二计算系统实施例。
图8示出第三计算系统实施例。
图9示出第四计算系统实施例。
图10示出软件指令转换器。
详细描述
图1示出新处理核100_1架构,其中加速器101类似于设计在核100_1中且紧密耦合于核的通用CPU102的大规模功能单元。该多个核100_1至核100_Q可以被放置在集成入半导体芯片中的单个处理器120上。如下文更详细的描述,在典型的实现中,该加速器101支持多个不同的计算密集型任务。
此处,参考诸如核100_1之类的单核的操作,从存储器和/或高速缓存处读取标准指令且通过核的通用CPU102被执行。但是,由处理核100_1接收的其他类型的指令将触发加速器101行动。在具体的实现中,底层硬件支持软件以代码调用特定加速任务的能力。也就是说,特定命令可以通过软件编程器(或通过编译器)嵌入代码中,此处,该特定命令调用并定义将通过加速器101执行的特定加速任务和用于该特定任务的输入操作数。
该命令最后以目标代码的某种形式表示。在运行时间期间,底层硬件“执行”该目标代码且在执行时调用加速器101和传递相关输入数据至加速器101。图1示出加速器101耦合至通用CPU102以示出命令发送至加速器101。下文还将更详细地讨论关于用于调用加速器单元的特定技术的更多细节。
在被调用之后,该加速器101在与通用CPU102相同的存储器空间之上操作。类似地,数据操作数可以通过虚拟地址由加速器识别,该虚拟地址的对应的到物理地址空间的转换结果与通用CPU102使用的那些相同。换言之,加速器101在与CPU102相同的虚拟存储器空间之上操作。此外,一般地,加速器执行命令的执行时间比在通用CPU102内执行传统/标准指令的时间长(由于加速器101正在执行的任务的复杂本质)。输入操作数和/或结果也可能比通用CPU102的功能单元使用的标准寄存器尺寸更大。
因此加速器101可以大致被视为比通用CPU102的传统功能单位和相关的指令更为粗粒化(有更大的执行时间和/或在更大的数据块上操作)。同时,加速器101也可以大致被视为比传统协处理器更为细粒化或至少更紧地耦合于通用CPU102。
特定地,避免加速器的耗时的“驱动器调用”的调用,和由加速器101与通用CPU102对相同存储器空间(包括虚拟至物理地址转换)进行分享,对应于比典型协处理器更紧地耦合于通用CPU102。此外,可以调用加速器101来执行的特定个别任务也可以比协处理器传统执行的更大的、大规模的任务更为细粒化。适合于采用加速器实现为单个“可调用的”操作的具体个别任务包括:结构取样、运动搜索或运动补偿、安全相关计算(例如,密码、加密等),特定金融计算、和/或特定科学计算。
现代通用CPU核典型地能够同时执行多线程(例如因特尔处理器使用同时多线程技术)。注意的是,通用CPU102可以有一个或多个流水线以处理传统指令。以多流水线同时执行多线程是直接的概念。但是,单个流水线还可以被设计以支持多线程的同时执行。
因此,如图1所示,处理核100_1可以由特定的逻辑103设计,逻辑103被设计为允许由核的通用CPU102执行的任何/所有多线程调用加速器101。回忆,在通用CPU102和加速器101之间更紧耦合的特征利用了在两者之间相同的虚拟到物理的地址转换,在多线程核的情况下,每个线程可以有它自己独特的虚拟到物理的地址转换机制。
因此,当加速器执行用于具体线程的任务时,它采用了线程的虚拟到物理的地址转换机制(例如,通过在其中保持与用于线程的CPU102中的相同的转换后备缓冲器(TLB)中和/或在用于线程的CPU102中利用TLB)。参考图2至图5,关于用于特定逻辑103的可能设计的细节将在下文更详细地呈现。
图2描述机制的实施例,通过此机制线程可以调用加速器。如图2所示,负责调用特定加速器的目标代码在存储器地址空间210块中首先构建用于加速器的命令。命令的内容是否真的存储在存储器中或在相同半导体芯片上的高速缓存中是设计者选择的问题。
当写命令时,通用CPU202在存储器地址空间210块(无论在高速缓存或在系统存储器中)中写。1)将执行的任务211;和2)用于任务的输入数据212。存储器空间块还拥有用于关于任务的状态信息213的空间,和用于指示执行任务214中的任何错误的空间字段。CPU202可以初始设置状态字段213以指示新请求是待定的。任务的输出/结果215可以被写入在为输入212保留的存储器空间中和/或块210内放置输入信息以外的额外地址空间中。加速器201可以向任何字段213、214写入且将输出/结果写入在存储器地址空间中。
在命令被写入存储器地址空间中后,通用CPU202发送请求至排序缓冲器220。排序缓冲器220为已经调用加速器201的线程保留且本质地对应于用于追踪和控制由线程对加速器201做出的多请求的队列或其他结构。
在实施例中,存在用于由通用CPU202支持的N个线程中的每一个线程的N个排序缓冲器。根据一个实施例,如果通用CPU202可以支持最大量的N个活动线程,则在核200中的特定逻辑203被设计为还包括N个排序缓冲器(在最差情况下每个线程一个排序缓冲器)。
如果通用CPU202还支持活动的线程转换,其中M>N个线程被CPU202识别但只有最大N个线程可同时活动(目前能够执行目标代码),如果其正支持的线程被切换“出去”以利于被切换“进来”的另一个线程,排序缓冲器的内容可以被切换。也就是说,当线程,作为其正在被带出目前活动状态的一部分,被切换到核200以外时,用于线程的排序缓冲器之内的上下文信息,连同用于线程的通用CPU的相关上下文信息一起(例如,内部寄存器内容),被切换到核200之外(例如进入L2高速缓存或存储器)。在它的位置,用于最近激活的线程的对应上下文信息被分别加载(例如,从L2高速缓存或存储器加载)到通用CPU202和排序缓冲器中。关于上下文切换的更多信息将在下文更详细提供。
回到图2的描述,一旦线程已经发送请求至其相应排序缓冲器220用于由加速器201执行的具体任务,该请求在线程的排序缓冲器220中有效地排队直到其由控制对加速器201的访问的控制器230服务。控制器230可以被设计为实现一个或多个各种负载平衡技术和/或公平算法,例如,根据跨N个线程/排序缓冲器的循环服务方案允许访问加速器201。例如,这可以通过控制器230以循环方式轮询每个排序缓冲器来实现。
一旦请求由控制器230服务,该请求本质上被转发至加速器201。在实施例中,请求240包括请求的任务211和相关输入数据212所驻留的上述的存储器地址空间210块上的存储器地址指针216。在更多的实施例中,请求还包括输入数据212大小217的指示。
作为响应,加速器201取回任务211和输入数据212,和在存储器地址空间210的适合部分中执行特定的任务和写回结果的信息。与任务相关联的的状态字段213由加速器201设置以指示任务完成。初始发出对加速器的请求的线程还监控状态字段213并识别来自加速器的操作的数据结果是可用的。在这一点,线程开始利用结果且随着依靠它的无论什么操作向前移动。
此外,随着请求的完成,控制器230自由地从考虑到控制器的负载平衡方案而适合的任何排序缓冲器发送下一请求。恰当的是注意到,加速器201可以被设计为同时执行多个任务。例如,加速器201可以被设计为包括多功能单位,每个多功能单位被设计为处理它自己的任务并可以同时或另外地与其他功能单位的操作并行操作。因此,在任何请求由加速器完成之前,控制器230可以被设计为发送多个请求至加速器201。此外,如果任何两个或多个功能单位被设计为支持相同任务,在任何一个请求完成之前,控制器可以发送相同任务的多个请求至加速器。
图3示出用于具体线程的排序缓冲器320的示例性实施例和相关的状态图。如图3所示,头、尾和下一指针指向在排序缓冲器320内的特定条目。排序缓冲器320本质上包括从排序缓冲器专用于的线程最近发送的请求和每个该请求的状态。如上文所提,每个请求可以作为识别请求任务和输入数据可以在哪里被找到的存储器地址指针被嵌入。如上所述,请求也可以包括输入数据大小的指示(例如在高速缓存线的单元中)。排序缓冲器320可以由用于保存实际请求的寄存器实现,且逻辑电路可以被用来实现下文描述的指针和状态图。
在实施例中,除了其相关的请求,在缓冲器320中的每个条目可以指定请求状态。在更多的实施例中,每个请求的状态是如下之一:
i)N…新:请求还没有由控制器服务。
ii)E…执行:请求由控制器服务且假设利用加速器执行。
iii)D…完成:加速器已经执行由请求所请求的任务。
iv)P…页面错误:在试图执行所请求的任务时已经引起页面错误。
v)I…条目无效。
将在下文更充分地描述以上状态的每一个。
状态图301描述“下一”指针的操作。“下一”指针指向下一请求,下一请求在排序缓冲器中被提供给控制器用于加速器的后续执行。根据状态图301,下一指针持续地调整自己以执行排序缓冲器中具有新(N)状态的最早条目。此处,条目在排序缓冲器中按以下顺序列出:从缓冲器的对应的线程接收他们对应的请求(例如,条目2的请求在条目1的请求之后被接收)。因此,排序缓冲器被设计为以它们被线程发送的相同顺序将请求提供给控制器。当状态N的请求由控制器服务时,请求的状态变为E(执行)。因此,下一指针调节至下一具有状态N的最早请求。频繁地,这是在缓冲器中的下一稍后条目。
状态图302描述了“头”指针的操作。头指针指向在排序缓冲器中具有状态D(完成)或新(N)的最早条目。因此,头指针本质地指向最早“有效”请求(或,以另一方式来说,还没有完成的最早请求)。在典型的流程中,具有状态D或N的最早条目是具有状态E(执行)的最早请求。即,“头”指针典型地指向在加速器中还在执行的最早请求。
当由头指针指向的请求最后成功完成时,它的状态在排序缓冲器中从E变为D。因此,头指针需要移至缓冲器中的不具有状态D或N的下一最早请求。典型地,这需要改变头指针以指向缓冲器中的下一更迟的条目。注意到,虽然这可能是通常的情况,但并不保证,因为加速器可能同时接受多个来自相同缓冲器的请求,且不同任务可能有不同执行时间以完成。因此,更迟的请求可能比更早的请求更早结束。因此,“EDE”的状态模式和其类似(两个E之间的D)可以跨缓冲器条目存在。
状态图303描述指向具有状态N的最迟条目的尾指针的操作。频繁地,缓冲器中的具有状态N的最迟条目是缓冲器中的最迟条目(是最近接收(最迟)的请求和还没有被服务)。
状态图304示出用于从排序缓冲器去除条目的状态图。根据该状态图,比具有状态E的最早条目更早的具有状态D的任何条目从排序缓冲器被去除。
在实施例中,没有包括在头和尾指针间的任何条目被给予无效状态。
图4关于上下文切换的详情。如图4所观察,排序缓冲器的相关逻辑接收指示,该指示指出缓冲器专用的线程正在被切换出活动状态401。此后,从线程接收的任何请求被忽视402(直到线程变回活动状态)。头和尾指针之间的缓冲器中的不具有完成(D)状态的所有条目从缓冲器清除且在外部存留403(例如,保存在存储器或高速缓存中)。
此处,对于每个条目,存留存储器地址指针、输入数据大小和状态指示。如同正在被停用的线程的上下文,用于每个其条目正在被存留的任务的加速器上下文(例如加速器寄存器空间中的数据值)也被存留。例如,线程的上下文可以包括通用CPU的寄存器中的正在用以支持线程的值(除操作数数据之外,存储在此寄存器中的其他值可以对应于虚拟至物理地址转换)。
其后,缓冲器重新专用的重新激活的线程的存留条目被加载进缓冲器404。重新激活的线程的存留状态和用于正在被加载的任何缓冲器条目的加速器状态各自被加载进通用CPU和加速器中。在实施例中,如果加速器没有用于重新激活的线程的加速器任务的状态信息的空间(例如,因为正在恢复的加速器任务与现在执行的另一个线程的有效任务是相同的),当空间可用时,该加速器被配置为加载存留的状态信息。
使用对该情况的认知,控制器可以被设计为防止从另一个线程至加速器对具体任务的任何更多发送,直到重新恢复的加速器任务被加载和完成。一旦缓冲器以存留的条目被加载,且存留的加速器任务的状态被加载入加速器,当重新恢复的线程先被放入不活动状态时,加速器可以“在其停止处捡起(pick up)”。
某些时间后,重新激活的线程被停用405且在过程401-403中不活动的原始线程参考过程404通过以上描述的本质上相同的过程被重新设定。
图5示出页面错误的处理。此处,回想到,加速器可以被设计为参考与调用加速器的通用CPU的线程相同的虚拟地址空间和利用与调用加速器的通用CPU的线程相同的虚拟至物理地址转换。由此,正如通用CPU可以遭受页面错误,加速器也可以。页面错误本质上对应在虚拟至物理地址转换中由硬件对问题的识别,该硬件尝试通过转换定位数据或指令(例如转换丢失,虚拟地址无效等)。
如图5所示,当加速器在执行具体请求任务中检测到页面错误时,控制器或加速器将对应缓冲器条目中的状态从执行(E)变为页面错误(PF)501。在实施例中,控制器或加速器在为请求保留的存储器地址空间块的错误状态部分中指示页面错误,和在存储器地址空间块的错误部分中写入指定页面错误类型的代码502。
然后页面错误被处理503。页面错误处理在本领域公知且因此不需详细地重复。页面错误处理是经常伴随着不合适转换被纠正或以其它方式被固定的过程,通过此过程检测的页面错误被解决。一般地,页面错误可以在软件或硬件中被处理。在硬件页面错误处理情况下,特定的逻辑电路被设计为探查错误的类型(例如,未命中转换、无效的虚拟地址等)和提供可能的正确动作。
在软件页面错误处理情况下,典型地,检测页面错误的硬件抛出异常,且写指示错误类型的错误代码。用户、操作系统或虚拟机监控进程接着检测抛来的异常且尝试纠正问题。在本讨论中,负责处理页面错误的硬件和/或软件负责错误的检测且在存储器地址块的错误部分中查看核以了解问题的准确本质。
当页面错误被解决,例如通过固定转换问题解决时,检查排序缓冲器以确定具有页面错误请求的排序缓冲器中的哪些请求还没有完成504。此处,完全可能的是其他请求-甚至于比错误请求更迟发送(至排序缓冲器和/或加速器)的请求-可能不会遭受页面错误和相应地完成。因此,仅那些在页面错误被认为处理时仍保持未完成的请求从控制器重新发送至加速器504。在实施例中,仅通过在队列中移动下一指针以指向头位置来完成它。
示例性计算机架构
图6-9是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够含有本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
现在参考图6,所示出的是根据本发明一个实施例的系统600的框图。系统600可以包括一个或多个处理器610、615,这些处理器耦合到控制器中枢620。在一个实施例中,控制器中枢620包括图形存储器控制器中枢(GMCH)690和输入/输出中枢(IOH)650(其可以在分开的芯片上);GMCH 690包括存储器和图形控制器,存储器640和协处理器645耦合到该图形控制器;IOH650将输入/输出(I/O)设备660耦合到GMCH 690。替换地,存储器和图形控制器中的一个或两个集成在处理器(如本文中所描述的)内,存储器640和协处理器645直接耦合到处理器610,且控制器中枢620与IOH650在单一芯片中。
附加处理器615的可选性质用虚线表示在图6中。每一处理器610、615可包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。
存储器640可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢620经由诸如前端总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接695与处理器610、615进行通信。
在一个实施例中,协处理器645是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢620可以包括集成图形加速器。
按照包括架构、微架构、热、功耗特征等等优点的度量谱,物理资源610、615之间存在各种差别。
在一个实施例中,处理器610执行控制一般类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器610将这些协处理器指令识别为应当由附连的协处理器645执行的类型。因此,处理器610在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器645。协处理器645接受并执行所接收的协处理器指令。
现在参照图7,所示出的是根据本发明实施例的更具体的第一示例性系统700的框图。如图7所示,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个都可以是处理器1100的某一版本。在本发明的一个实施例中,处理器770和780分别是处理器610和615,而协处理器738是协处理器645。在另一实施例中,处理器770和780分别是处理器610和协处理器645。
处理器770和780被示为分别包括集成存储器控制器(IMC)单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括点对点接口786和788。处理器770、780可以使用点对点(P-P)接口电路778、788经由P-P接口750来交换信息。如图7所示,IMC 772和782将诸处理器耦合至相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连至相应的处理器的主存储器的一部分。
处理器770、780可各自使用点对点接口电路776、794、786、798经由各个P-P接口752、754与芯片组790交换信息。芯片组790可以可选地经由高性能接口739与协处理器738交换信息。在一个实施例中,协处理器738是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在两个处理的任一个之内或被包括两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组790可经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图7所示,各种I/O设备714可以连同总线桥718耦合到第一总线716,总线桥718将第一总线716耦合至第二总线720。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器715被耦合到第一总线716。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线720,在一个实施例中这些设备包括例如键盘/鼠标722、通信设备727以及诸如可包括指令/代码和数据730的盘驱动器或其它海量存储设备的存储单元728。此外,音频I/O 724可以被耦合至第二总线720。注意,其它架构是可能的。例如,代替图7的点对点架构,系统可实现多点总线或者其他此类架构。
现在参考图8,示出了根据本发明的一个实施例的更具体的第二示例性系统800的方框图。图7和图8中的相同部件用相同附图标记表示,并从图8中省去了图7中的某些方面,以避免使图8的其它方面变得难以理解。
图8例示了处理器770、780可分别包括集成存储器和I/O控制逻辑(CL)772和782。因此,CL 772、782包括集成存储器控制器单元并包括I/O控制逻辑。图8示出:不仅存储器732、734耦合至CL 772、782,I/O设备814也耦合至控制逻辑772、782。传统I/O设备815被耦合至芯片组790。
现在参照图9,所示出的是根据本发明一个实施例的SoC 900的框图。虚线框是更先进的SoC的可选特征。在图9中,互连单元902被耦合至:应用处理器910,该应用处理器包括一个或多个核902A-N的集合以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个协处理器920,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及用于耦合至一个或多个外部显示器的显示单元940。在一个实施例中,协处理器920包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
诸如图7所示的代码730之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解译语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态、有形配置,其包括存储介质,诸如硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)的以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形(morph)、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
图10是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图10示出了用高级语言1002的程序可以使用x86编译器1004来编译,以生成可以由具有至少一个x86指令集核的处理器1016原生执行的x86二进制代码1006。具有至少一个x86指令集核的处理器1016表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分(substantial portion),或2)目标旨在在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的对象代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1004表示用于生成x86二进制代码1006(例如,对象代码)的编译器,该二进制代码1006可通过或不通过附加的可链接处理在具有至少一个x86指令集核的处理器1016上执行。类似地,图10示出用高级语言1002的程序可以使用替代的指令集编译器1008来编译,以生成可以由不具有至少一个x86指令集核的处理器1014(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集,和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)来原生执行的替代指令集二进制代码1010。指令转换器1012被用来将x86二进制代码1006转换成可以由不具有x86指令集核的处理器1014原生执行的代码。该经转换的代码不大可能与替换性指令集二进制代码1010相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器1012表示:通过仿真、模拟或任何其它过程来允许不具有x86指令集处理器或核的处理器或其它电子设备得以执行x86二进制代码1006的软件、固件、硬件或其组合。

Claims (21)

1.一种用于从多线程发送请求至加速器的装置,包括:
多个核,每个核具有:
a)CPU;
b)加速器;
c)控制器以及多个排序缓冲器,它们耦合在所述CPU和所述加速器之间,并且所述控制器与所述多个排序缓冲器耦合,每个所述排序缓冲器专用于所述CPU的线程中不同的一个线程,每一个所述排序缓冲器用于保持从其相应的线程发送至所述加速器的一个或多个请求,所述控制器用于控制将所述排序缓冲器各自的请求发送至所述加速器,
所述加速器使用与已经请求所述加速器执行任务的所述CPU上的线程相同的虚拟到物理地址转换。
2.如权利要求1所述的装置,其特征在于,所述请求中的一个由标识存储器地址的指针组成,在所述存储器地址中能找到用于所述加速器的所述请求的相关输入数据。
3.如权利要求2所述的装置,其特征在于,所述请求还由指示所述输入数据有多大的指示符组成。
4.如权利要求3所述的装置,其特征在于,所述输入数据的大小被指定为高速缓存线的数量。
5.如权利要求2所述的装置,其特征在于,所述请求的状态信息与所述输入数据一起被存储。
6.如权利要求1所述的装置,其特征在于,所述加速器具有多个功能单元从而使得所述加速器能够同时执行多个任务。
7.如权利要求6所述的装置,其特征在于,所述加速器能同时执行同一个任务的不同例程。
8.一种用于从多线程发送请求至加速器的方法,包括:
在多核半导体芯片的核内的CPU上,执行第一和第二线程;
将第一加速请求从所述第一线程发送至专用于所述第一线程的第一排序缓冲器;
将第二加速请求从所述第二线程发送至专用于所述第二线程的第二排序缓冲器;
将所述第一加速请求从所述第一排序缓冲器发送到加速器,所述加速器使用由所述第一线程使用的第一虚拟到物理地址转换机制处理所述第一请求;以及
将所述第二加速请求从所述第二排序缓冲器发送到加速器,所述加速器使用由所述第二线程使用的第二虚拟到物理地址转换机制处理所述第二请求。
9.如权利要求8所述的方法,其特征在于,所述第一请求包含标识第一任务的输入数据能在哪里找到的存储器地址指针。
10.如权利要求9所述的方法,其特征在于,所述第一请求还包含关于所述输入数据有多大的指示。
11.如权利要求10所述的方法,其特征在于,所述指示被表达为高速缓存线的数量。
12.如权利要求8所述的方法,其特征在于,还包括在所述第一请求被所述第一排序缓冲器接收后在所述第一排序缓冲器中将所述第一请求的状态标识为新请求,以及调节尾指针指向所述排序缓冲器中的所述第一请求的条目。
13.如权利要求12所述的方法,其特征在于,还包括当所述第一请求为所述第一排序缓冲器中最早的新条目时调节下一指针以指向所述排序缓冲器中所述第一请求的条目。
14.如权利要求13所述的方法,其特征在于,还包括当所述第一请求被传递至所述加速器时将所述排序缓冲器中所述第一请求的状态从新的改变为正在执行,并且当所述第一请求为所述第一排序缓冲器中最老的未完成请求时调节头指针指向所述第一排序缓冲器中的所述第一请求的条目。
15.如权利要求14所述的方法,其特征在于,还包括在所述加速器完成所述第一请求的相关任务后将所述第一请求的状态从正在执行改变为已完成,并且从所述第一排序缓冲器中删除所述第一请求。
16.一种用于从多线程发送请求至加速器的方法,包括:
在多核半导体芯片的核内的CPU上,执行第一和第二线程;
将第一加速请求从所述第一线程发送至专用于所述第一线程的第一排序缓冲器;
将第二加速请求从所述第二线程发送至专用于所述第二线程的第二排序缓冲器;
将所述第一加速请求从所述第一排序缓冲器发送到加速器,所述加速器使用由所述第一线程使用的第一虚拟到物理地址转换机制处理所述第一请求;以及
将所述第二加速请求从所述第二排序缓冲器发送到加速器,所述加速器使用由所述第二线程使用的第二虚拟到物理地址转换机制处理所述第二请求;以及
将所述第一线程从活动状态切换至非活动状态并且将第三线程从非活动状态切换至活动状态,包括用来自所述第三线程的请求替换具有来自所述第一线程的请求的所述第一排序缓冲器的内容。
17.如权利要求16所述的方法,其特征在于,所述切换所述第一线程以及所述切换所述第三线程包括将所述第一线程的虚拟到物理地址转换切换出所述CPU外,以及,将所述第三线程的虚拟到物理地址转换切换到所述CPU内。
18.如权利要求17所述的方法,其特征在于,所述加速器同时处理所述第一和第二请求。
19.如权利要求16所述的方法,其特征在于,所述加速器检测到在处理所述第二请求中的页面错误并且将所述页面错误的指示写入存储所述第二请求的输入数据的存储器地址空间块中。
20.一种计算机可读存储介质,所述计算机可读介质包括存储在其上的指令,所述指令在被计算机执行时,使得所述计算机执行如权利要求8-19中任一项所述的方法。
21.一种计算机实现的系统,包括多个装置,所述多个装置分别用于执行如权利要求8-19中任一项所述的方法中的对应步骤。
CN201280072132.4A 2012-03-30 2012-03-30 用于从多线程发送请求至加速器的机制 Active CN104221005B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810259320.7A CN108681519B (zh) 2012-03-30 2012-03-30 用于从多线程发送请求至加速器的机制

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/031650 WO2013147881A1 (en) 2012-03-30 2012-03-30 Mechanism for issuing requests to an accelerator from multiple threads

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810259320.7A Division CN108681519B (zh) 2012-03-30 2012-03-30 用于从多线程发送请求至加速器的机制

Publications (2)

Publication Number Publication Date
CN104221005A CN104221005A (zh) 2014-12-17
CN104221005B true CN104221005B (zh) 2018-04-27

Family

ID=49260935

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280072132.4A Active CN104221005B (zh) 2012-03-30 2012-03-30 用于从多线程发送请求至加速器的机制

Country Status (4)

Country Link
US (2) US10558490B2 (zh)
EP (2) EP2831750A4 (zh)
CN (1) CN104221005B (zh)
WO (1) WO2013147881A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US10719420B2 (en) * 2015-02-10 2020-07-21 International Business Machines Corporation System level testing of multi-threading functionality including building independent instruction streams while honoring architecturally imposed common fields and constraints
US10489178B2 (en) 2015-04-28 2019-11-26 Altera Corporation Network functions virtualization platforms with function chaining capabilities
US9606836B2 (en) * 2015-06-09 2017-03-28 Microsoft Technology Licensing, Llc Independently networkable hardware accelerators for increased workflow optimization
EP3136645A1 (en) * 2015-08-27 2017-03-01 Gemalto Sa Mixed hardware and software instructions for cryptographic functionalities implementation
US10013212B2 (en) * 2015-11-30 2018-07-03 Samsung Electronics Co., Ltd. System architecture with memory channel DRAM FPGA module
US11086660B2 (en) * 2016-03-09 2021-08-10 Hewlett Packard Enterprise Development Lp Server virtual address space
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
CN110032452B (zh) * 2019-04-19 2021-08-24 上海兆芯集成电路有限公司 处理系统与异构处理器加速方法
US11468001B1 (en) * 2021-03-30 2022-10-11 Advanced Micro Devices, Inc. Processing-in-memory concurrent processing system and method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538296A (zh) * 2003-02-18 2004-10-20 图形处理单元的多线程内核

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US20030033345A1 (en) * 2002-06-27 2003-02-13 Keefer Christopher E. Thread-based methods and systems for using the idle processing power of one or more networked computers to solve complex scientific problems
US6716737B2 (en) * 2002-07-29 2004-04-06 Hewlett-Packard Development Company, L.P. Method of forming a through-substrate interconnect
US7421694B2 (en) 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7472390B2 (en) 2003-10-01 2008-12-30 Intel Corporation Method and apparatus to enable execution of a thread in a multi-threaded computer system
GB0516454D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Coprocessor support in a computing device
US8914618B2 (en) 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US20080046684A1 (en) * 2006-08-17 2008-02-21 International Business Machines Corporation Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same
US7492649B2 (en) * 2006-11-09 2009-02-17 Kabushiki Kaisha Toshiba Systems and methods for improving memory reliability by selectively enabling word line signals
JP5214262B2 (ja) * 2008-01-30 2013-06-19 株式会社東芝 半導体集積回路及び電源制御方法
US8055872B2 (en) * 2008-02-21 2011-11-08 Arm Limited Data processor with hardware accelerator, accelerator interface and shared memory management unit
US8423749B2 (en) * 2008-10-22 2013-04-16 International Business Machines Corporation Sequential processing in network on chip nodes by threads generating message containing payload and pointer for nanokernel to access algorithm to be executed on payload in another node
JP2010181989A (ja) * 2009-02-04 2010-08-19 Renesas Electronics Corp データ処理装置
US8451281B2 (en) * 2009-06-23 2013-05-28 Intel Corporation Shared virtual memory between a host and discrete graphics device in a computing system
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8719543B2 (en) 2009-12-29 2014-05-06 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
CN102346661A (zh) * 2010-07-30 2012-02-08 国际商业机器公司 一种用于对硬件加速器的请求队列维护状态的方法和系统
US8359453B2 (en) * 2010-09-13 2013-01-22 International Business Machines Corporation Real address accessing in a coprocessor executing on behalf of an unprivileged process
US8683175B2 (en) * 2011-03-15 2014-03-25 International Business Machines Corporation Seamless interface for multi-threaded core accelerators
US20140007098A1 (en) * 2011-12-28 2014-01-02 Paul M. Stillwell, Jr. Processor accelerator interface virtualization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538296A (zh) * 2003-02-18 2004-10-20 图形处理单元的多线程内核

Also Published As

Publication number Publication date
US20200218568A1 (en) 2020-07-09
CN104221005A (zh) 2014-12-17
EP3654178A3 (en) 2020-06-17
EP3654178B1 (en) 2023-07-12
EP2831750A1 (en) 2015-02-04
US20140359629A1 (en) 2014-12-04
WO2013147881A1 (en) 2013-10-03
US10558490B2 (en) 2020-02-11
EP2831750A4 (en) 2016-05-11
EP3654178A2 (en) 2020-05-20

Similar Documents

Publication Publication Date Title
CN104221005B (zh) 用于从多线程发送请求至加速器的机制
CN104205042B (zh) 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制
KR101764187B1 (ko) 가속기들의 낮은-레이턴시 인보크를 위한 장치 및 방법
CN104204990B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
TWI529620B (zh) 推理執行和回復
CN102652309B (zh) 处理资源管理的计算机实现的方法
CN101802798B (zh) 在多核处理器中使用干预消息来避免活锁
CN104813278B (zh) 对二进制转换的自修改代码以及交叉修改代码的处理
KR20170039237A (ko) 영구적 저장 펜스 프로세서, 방법, 시스템, 및 명령어
CN101454753A (zh) 处理异构资源的地址转换和异常
US9904553B2 (en) Method and apparatus for implementing dynamic portbinding within a reservation station
JP5643903B2 (ja) 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置
WO2010034035A1 (en) Gpu assisted garbage collection
CN114667508B (zh) 为加速器取回数据的方法和系统
CN108710582A (zh) 用于基于局部性的指令处理的选择性启用的系统、设备和方法
EP3716055A1 (en) System, apparatus and method for symbolic store address generation for data-parallel processor
US20130346683A1 (en) Cache Sector Dirty Bits
CN109508206A (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
CN106663471A (zh) 用于反向存储器备份的方法和装置
US20070260754A1 (en) Hardware Assisted Exception for Software Miss Handling of an I/O Address Translation Cache Miss
EP3716057A1 (en) Method and apparatus for a multi-level reservation station with instruction recirculation
US20070180195A1 (en) Method and apparatus for allowing uninterrupted address translations while performing address translation cache invalidates and other cache operations
CN108681519A (zh) 用于从多线程发送请求至加速器的机制
JPH03175548A (ja) マイクロプロセッサ及びアドレス制御方式
EP2915039B1 (en) Store replay policy

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