用于从多线程发送请求至加速器的机制的制作方法

文档序号:6498467阅读:254来源:国知局
用于从多线程发送请求至加速器的机制的制作方法
【专利摘要】一种装置被描述为拥有多个核,每个核具有a)CPU、b)加速器、和c)在该CPU和该加速器之间耦合的控制器以及多个排序缓冲器。每个排序缓冲器专用于一个不同的CPU线程。每一个排序缓冲器保持从它的相应的线程处发送至加速器的一个或多个请求。该控制器控制将该排序缓冲器的各个请求发送至加速器。
【专利说明】用于从多线程发送请求至加速器的机制

【技术领域】
[0001]

【技术领域】一般地涉及计算系统设计,且更特别地,涉及用于从多线程发送请求至 加速器的机制。

【背景技术】
[0002] 协处理器的传统集成
[0003] 随着半导体制造过程到达了每个管芯一百万兆晶体管的时代,设计工程师将面对 如何最有效地利用所有可用晶体管的问题。一种设计方法是使用管芯上的专用硬件"加速" 以及一个或多个通用的CPU核来实现特定的计算密集型函数。加速器以被设计为执行特定 计算密集型函数的专用的逻辑块实现。此专用逻辑块的迁移密集型计算将通用CPU核从执 行大量指令释放,因此增加 CPU核的效力和效率。
[0004] 虽然以协处理器(诸如制图法协处理器)为形式的"加速"在本领域是公知的, 但是此传统的协处理器被0S视为操作系统(0S)在其上运行的CPU核外部的单独的"设 备"(在更大的计算系统中)。这些协处理器因此通过特定设备驱动器软件被访问且不在与 (PU核相同的虚拟存储器空间外操作。同样地,传统协处理器不分享或预期在通用CPU核上 执行的虚拟地址到物理的地址转换机制。
[0005] 此外,当0S卸载任务至传统协处理器时,发生大的延迟。特定地,因为CPU和传统 协处理器本质上对应单独的、隔离的子系统,当运行在CPU核上应用中限定的任务从应用 通过0S "内核"传递至管理协处理器的驱动器时,重要的通信资源被消耗了。这种大的延 迟支持这样的系统设计:从主0S调用协处理器上相对不频繁的任务,但每个任务有大量相 关联的数据块。实际上,传统协处理器主要以粗粒方式而不是以细粒方式被利用。
[0006] 随着当前的系统设计者对以细粒度的使用方式将更快的加速引入计算系统中感 兴趣,用于在计算系统中集成加速的新范式正在形成。
[0007] 附图简述
[0008] 本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考 标号表示类似的元件,其中:
[0009] 图1示出计算系统,其每个处理核包括通用CPU和紧密耦合于通用CPU的加速器。
[0010] 图2示出用于在通用CPU上的线程以调用加速器的技术。
[0011] 图3示出排序缓冲器和相关的状态图。
[0012] 图4不出线程切换过程;
[0013] 图5示出用于处理页面错误的过程;
[0014] 图6示出第一计算系统实施例。
[0015] 图7示出第二计算系统实施例。
[0016] 图8示出第三计算系统实施例。
[0017] 图9示出第四计算系统实施例。
[0018] 图10示出软件指令转换器。
[0019] 详细描述
[0020] 图1示出新处理核100_1架构,其中加速器101类似于设计在核100_1中且紧密 耦合于核的通用CPU102的大规模功能单元。该多个核100_1至核100_0可以被放置在集 成入半导体芯片中的单个处理器120上。如下文更详细的描述,在典型的实现中,该加速器 101支持多个不同的计算密集型任务。
[0021] 此处,参考诸如核100_1之类的单核的操作,从存储器和/或高速缓存处读取标准 指令且通过核的通用CPU102被执行。但是,由处理核100_1接收的其他类型的指令将触发 加速器101行动。在具体的实现中,底层硬件支持软件以代码调用特定加速任务的能力。也 就是说,特定命令可以通过软件编程器(或通过编译器)嵌入代码中,此处,该特定命令调 用并定义将通过加速器101执行的特定加速任务和用于该特定任务的输入操作数。
[0022] 该命令最后以目标代码的某种形式表示。在运行时间期间,底层硬件"执行"该目 标代码且在执行时调用加速器101和传递相关输入数据至加速器101。图1示出加速器101 耦合至通用CPU102以示出命令发送至加速器101。下文还将更详细地讨论关于用于调用加 速器单元的特定技术的更多细节。
[0023] 在被调用之后,该加速器101在与通用CPU102相同的存储器空间之外操作。类似 地,数据操作数可以通过虚拟地址由加速器识别,该虚拟地址的对应转换为物理地址空间 与通用CPU102使用的那些相同。以其他方式来说,该加速器101在与CPU102相同的虚拟 存储器空间之外操作。此外,一般地,加速器执行命令的执行时间比在通用CPU102内执行 传统/标准指令的时间长(由于加速器101正在执行的任务的复杂本质)。输入操作数和 /或结果也可能比通用CPU102的功能单元使用的标准寄存器尺寸更大。
[0024] 因此加速器101可以一般地被视为比传统功能单位和通用CPU102的相关的指令 更粗粒(有更大的执行时间和/或在更大的数据块上操作)。同时,加速器101还可以一般 地被视为比传统协处理器更细粒或至少更紧地耦合于通用CPU102。
[0025] 特定地,加速器的耗时"驱动器调用"的调用的避免和通过加速器101和通用 CPU102对相同存储器空间(包括虚拟至物理地址转换)的分享对应于比典型协处理器更 紧地耦合于通用CPU102。此外,加速器101可以调用以执行的特定个别任务还可以比协处 理器传统执行的更大的、大规模的任务更细粒。适合于以加速器实现为单个"可调用的"操 作的特定个别任务包括结构取样、运动搜索或运动补偿、安全相关计算(例如,密码、加密 等),特定金融计算、和/或特定科学计算。
[0026] 现代通用CPU核典型地能够同时执行多线程(例如因特尔处理器使用同时多线程 技术)。注意的是,通用CPU102可以有一个或多个流水线以处理传统指令。以多流水线同 时执行多线程是直接的概念。但是,单个流水线还可以被设计以支持多线程的同时执行。
[0027] 因此,如图1所示,处理核100_1可以由特定的逻辑103设计,逻辑103被设计为 允许由核的通用CPU102执行的任何/所有多线程调用加速器101。回忆,在通用CPU102和 加速器101之间更紧耦合的特征利用了在两者之间相同的虚拟到物理的地址转换,在多线 程核的情况下,每个线程可以有它自己独特的虚拟到物理的地址转换机制。
[0028] 因此,当加速器执行用于具体线程的任务时,它采用了线程的虚拟到物理的地址 转换机制(例如,通过在其中保持与用于线程的CPU102中的相同的转换后备缓冲器(TLB) 中和/或在用于线程的CPU102中利用TLB)。参考图2至图5,关于用于特定逻辑103的可 能设计的细节将在下文更详细地呈现。
[0029] 图2描述机制的实施例,通过此机制线程可以调用加速器。如图2所示,负责调用 特定加速器的目标代码在存储器地址空间210块中首先构建用于加速器的命令。命令的内 容是否真的存储在存储器中或在相同半导体芯片上的高速缓存中是设计者选择的问题。
[0030] 当写命令时,通用CPU202在存储器地址空间210块(无论在高速缓存或在系统存 储器中)中写。1)将执行的任务211 ;和2)用于任务的输入数据212。存储器空间块还拥 有用于关于任务的状态信息213的空间,和用于指示执行任务214中的任何错误的空间字 段。CPU202可以初始设置状态字段213以指示新请求是待定的。任务的输出/结果215可 以被写入在为输入212保留的存储器空间中和/或块210内放置输入信息以外的额外地址 空间中。加速器201可以向任何字段213、214写入且将输出/结果写入在存储器地址空间 中。
[0031] 在命令被写入存储器地址空间中后,通用CPU202发送请求至排序缓冲器220。排 序缓冲器220为已经调用加速器201的线程保留且本质地对应于用于追踪和控制由线程对 加速器201做出的多请求的队列或其他结构。
[0032] 在实施例中,存在用于由通用CPU202支持的N个线程中的每一个线程的N个排序 缓冲器。根据一个实施例,如果通用CPU202可以支持最大量的N个活动线程,则在核200 中的特定逻辑203被设计为还包括N个排序缓冲器(在最差情况下每个线程一个排序缓冲 器)。
[0033] 如果通用CPU202还支持活动的线程转换,其中M>N个线程被CPU202识别但只有 最大N个线程可同时活动(目前能够执行目标代码),如果其正支持的线程被切换"在外" 以支持被切换"在内"的另一个线程,排序缓冲器的内容可以被切换。也就是说,当线程被 切换到核200外作为其正在被带出目前活动状态的部分时,连同用于线程的通用CPU的相 关上下文信息一起(例如,内部寄存器内容),用于线程的排序缓冲器之内的上下文信息被 切换到核200之外(例如进入L2高速缓存或存储器)。在它的位置,用于最近激活的线程 的对应上下文信息被分别加载(例如,从L2高速缓存或存储器)到通用CPU202和排序缓 冲器中。关于上下文切换的更多信息将在下文更详细提供。
[0034] 回到图2的描述,一旦线程已经发送请求至其相应排序缓冲器220用于由加速器 201执行的具体任务,该请求在线程的排序缓冲器220中有效地排队直到其由控制对加速 器201的访问的控制器230服务。控制器230可以被设计为实现一个或多个各种负载平衡 技术和/或公平算法,例如,根据跨N个线程/排序缓冲器的循环服务方案允许访问加速器 201。例如,这可以通过控制器230以循环方式轮询每个排序缓冲器来实现。
[0035] -旦请求由控制器230服务,该请求本质上被转发至加速器201。在实施例中,请 求240包括请求的任务211和相关输入数据212所驻留的上述的存储器地址空间210块上 的存储器地址指针216。在更多的实施例中,请求还包括输入数据212大小217的指示。
[0036] 作为响应,加速器201取回任务211和输入数据212,和在存储器地址空间210的 适合部分中执行特定的任务和写回结果的信息。与任务相关联的的状态字段213由加速器 201设置以指示任务完成。初始发出对加速器的请求的线程还监控状态字段213并识别来 自加速器的操作的数据结果是可用的。在这一点,线程开始利用结果且随着依靠它的无论 什么操作向前移动。
[0037] 此外,随着请求的完成,控制器230自由地从考虑到控制器的负载平衡方案而适 合的任何排序缓冲器发送下一请求。恰当的是注意到,加速器201可以被设计为同时执行 多个任务。例如,加速器201可以被设计为包括多功能单位,每个多功能单位被设计为处理 它自己的任务并可以同时或另外地与其他功能单位的操作并行操作。因此,在任何请求由 加速器完成之前,控制器230可以被设计为发送多个请求至加速器201。此外,如果任何两 个或多个功能单位被设计为支持相同任务,在任何一个请求完成之前,控制器可以发送相 同任务的多个请求至加速器。
[0038] 图3示出用于具体线程的排序缓冲器320的示例性实施例和相关的状态图。如图 3所示,头、尾和下一指针指向在排序缓冲器320内的特定条目。排序缓冲器320本质上包 括从排序缓冲器专用于的线程最近发送的请求和每个该请求的状态。如上文所提,每个请 求可以作为识别请求任务和输入数据可以在哪里被找到的存储器地址指针被嵌入。如上所 述,请求也可以包括输入数据大小的指示(例如在高速缓存线的单元中)。排序缓冲器320 可以由用于保存实际请求的寄存器实现,且逻辑电路可以被用来实现下文描述的指针和状 态图。
[0039] 在实施例中,除了其相关的请求,在缓冲器320中的每个条目可以指定请求状态。 在更多的实施例中,每个请求的状态是如下之一:
[0040] i)N…新:请求还没有由控制器服务。
[0041] ii)E…执行:请求由控制器服务且假设利用加速器执行。
[0042] iii)D…完成:加速器已经执行由请求所请求的任务。
[0043] iv)P…页面错误:在试图执行所请求的任务时已经引起页面错误。
[0044] v)I…条目无效。
[0045] 将在下文更充分地描述以上状态的每一个。
[0046] 状态图301描述"下一"指针的操作。"下一"指针指向下一请求,下一请求在排序 缓冲器中被提供给控制器用于加速器的后续执行。根据状态图301,下一指针持续地调整自 己以执行排序缓冲器中具有新(N)状态的最早条目。此处,条目在排序缓冲器中按以下顺 序列出:从缓冲器的对应的线程接收他们对应的请求(例如,条目2的请求在条目1的请求 之后被接收)。因此,排序缓冲器被设计为以它们被线程发送的相同顺序将请求提供给控制 器。当状态N的请求由控制器服务时,请求的状态变为E (执行)。因此,下一指针调节至下 一具有状态N的最早请求。频繁地,这是在缓冲器中的下一稍后条目。
[0047] 状态图302描述了"头"指针的操作。头指针指向在排序缓冲器中具有状态D(完 成)或新(N)的最早条目。因此,头指针本质地指向最早"有效"请求(或,以另一方式来说, 还没有完成的最早请求)。在典型的流程中,具有状态D或N的最早条目是具有状态E (执 行)的最早请求。即,"头"指针典型地指向在加速器中还在执行的最早请求。
[0048] 当由头指针指向的请求最后成功完成时,它的状态在排序缓冲器中从E变为D。因 此,头指针需要移至缓冲器中的不具有状态D或N的下一最早请求。典型地,这需要改变头 指针以指向缓冲器中的下一更迟的条目。注意到,虽然这可能是通常的情况,但并不保证, 因为加速器可能同时接受多个来自相同缓冲器的请求,且不同任务可能有不同执行时间以 完成。因此,更迟的请求可能比更早的请求更早结束。因此,"EDE"的状态模式和其类似 (两个E之间的D)可以跨缓冲器条目存在。
[0049] 状态图303描述指向具有状态N的最迟条目的尾指针的操作。频繁地,缓冲器中 的具有状态N的最迟条目是缓冲器中的最迟条目(是最近接收(最迟)的请求和还没有被 服务)。
[0050] 状态图304示出用于从排序缓冲器去除条目的状态图。根据该状态图,比具有状 态E的最早条目更早的具有状态D的任何条目从排序缓冲器被去除。
[0051] 在实施例中,没有包括在头和尾指针间的任何条目被给予无效状态。
[0052] 图4关于上下文切换的详情。如图4所观察,排序缓冲器的相关逻辑接收指示,该 指示指出缓冲器专用的线程正在被切换出活动状态401。此后,从线程接收的任何请求被忽 视402(直到线程变回活动状态)。头和尾指针之间的缓冲器中的不具有完成(D)状态的所 有条目从缓冲器清除且在外部存留403 (例如,保存在存储器或高速缓存中)。
[0053] 此处,对于每个条目,存留存储器地址指针、输入数据大小和状态指示。如同正在 被停用的线程的上下文,用于每个其条目正在被存留的任务的加速器上下文(例如加速器 寄存器空间中的数据值)也被存留。例如,线程的上下文可以包括通用CPU的寄存器中的 正在用以支持线程的值(除操作数数据之外,存储在此寄存器中的其他值可以对应于虚拟 至物理地址转换)。
[0054] 其后,缓冲器重新专用的重新激活的线程的存留条目被加载进缓冲器404。重新激 活的线程的存留状态和用于正在被加载的任何缓冲器条目的加速器状态各自被加载进通 用CPU和加速器中。在实施例中,如果加速器没有用于重新激活的线程的加速器任务的状 态信息的空间(例如,因为正在恢复的加速器任务与现在执行的另一个线程的有效任务是 相同的),当空间可用时,该加速器被配置为加载存留的状态信息。
[0055] 使用对该情况的认知,控制器可以被设计为防止从另一个线程至加速器对具体任 务的任何更多发送,直到重新恢复的加速器任务被加载和完成。一旦缓冲器以存留的条目 被加载,且存留的加速器任务的状态被加载入加速器,当重新恢复的线程先被放入不活动 状态时,加速器可以"在其停止处捡起(pick up)"。
[0056] 某些时间后,重新激活的线程被停用405且在过程401-403中不活动的原始线程 参考过程404通过以上描述的本质上相同的过程被重新设定。
[0057] 图5示出页面错误的处理。此处,回想到,加速器可以被设计为参考与调用加速器 的通用CPU的线程相同的虚拟地址空间和利用与调用加速器的通用CPU的线程相同的虚拟 至物理地址转换。由此,正如通用CPU可以遭受页面错误,加速器也可以。页面错误本质上 对应在虚拟至物理地址转换中由硬件对问题的识别,该硬件尝试通过转换定位数据或指令 (例如转换丢失,虚拟地址无效等)。
[0058] 如图5所示,当加速器在执行具体请求任务中检测到页面错误时,控制器或加速 器将对应缓冲器条目中的状态从执行(E)变为页面错误(PF)501。在实施例中,控制器或加 速器在为请求保留的存储器地址空间块的错误状态部分中指示页面错误,和在存储器地址 空间块的错误部分中写入指定页面错误类型的代码502。
[0059] 然后页面错误被处理503。页面错误处理在本领域公知且因此不需详细地重复。 页面错误处理是经常伴随着不合适转换被纠正或以其它方式被固定的过程,通过此过程检 测的页面错误被解决。一般地,页面错误可以在软件或硬件中被处理。在硬件页面错误处 理情况下,特定的逻辑电路被设计为探查错误的类型(例如,未命中转换、无效的虚拟地址 等)和提供可能的正确动作。
[0060] 在软件页面错误处理情况下,典型地,检测页面错误的硬件抛出异常,且写指示错 误类型的错误代码。用户、操作系统或虚拟机监控进程接着检测抛来的异常且尝试纠正问 题。在本讨论中,负责处理页面错误的硬件和/或软件负责错误的检测且在存储器地址块 的错误部分中查看核以了解问题的准确本质。
[0061] 当页面错误被解决,例如通过固定转换问题解决时,检查排序缓冲器以确定具有 页面错误请求的排序缓冲器中的哪些请求还没有完成504。此处,完全可能的是其他请 求-甚至于比错误请求更迟发送(至排序缓冲器和/或加速器)的请求-可能不会遭受页 面错误和相应地完成。因此,仅那些在页面错误被认为处理时仍保持未完成的请求从控制 器重新发送至加速器504。在实施例中,仅通过在队列中移动下一指针以指向头位置来完成 它。
[0062] 示例性计算机架构
[0063] 图6-9是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持 PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字 信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放 器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够含 有本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
[0064] 现在参考图6,所示出的是根据本发明一个实施例的系统600的框图。系统600可 以包括一个或多个处理器610、615,这些处理器耦合到控制器中枢620。在一个实施例中, 控制器中枢620包括图形存储器控制器中枢(GMCH) 690和输入/输出中枢(Ι0Η) 650 (其可 以在分开的芯片上);GMCH 690包括存储器和图形控制器,存储器640和协处理器645耦合 到该图形控制器;I0H650将输入/输出(I/O)设备660耦合到GMCH 690。替换地,存储器 和图形控制器中的一个或两个集成在处理器(如本文中所描述的)内,存储器640和协处 理器645直接耦合到处理器610,且控制器中枢620与I0H650在单一芯片中。
[0065] 附加处理器615的可选性质用虚线表不在图6中。每一处理器610、615可包括本 文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。
[0066] 存储器640可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者 的组合。对于至少一个实施例,控制器中枢620经由诸如前端总线(FSB)之类的多点总线 (multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接695与处 理器610、615进行通信。
[0067] 在一个实施例中,协处理器645是专用处理器,诸如例如高吞吐量MIC处理器、网 络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控 制器中枢620可以包括集成图形加速器。
[0068] 按照包括架构、微架构、热、功耗特征等等优点的度量谱,物理资源610、615之间 存在各种差别。
[0069] 在一个实施例中,处理器610执行控制一般类型的数据处理操作的指令。嵌入在 这些指令中的可以是协处理器指令。处理器610将这些协处理器指令识别为应当由附连的 协处理器645执行的类型。因此,处理器610在协处理器总线或者其他互连上将这些协处 理器指令(或者表示协处理器指令的控制信号)发布到协处理器645。协处理器645接受 并执行所接收的协处理器指令。
[0070] 现在参照图7,所示出的是根据本发明实施例的更具体的第一示例性系统700的 框图。如图7所示,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合 的第一处理器770和第二处理器780。处理器770和780中的每一个都可以是处理器1100 的某一版本。在本发明的一个实施例中,处理器770和780分别是处理器610和615,而协 处理器738是协处理器645。在另一实施例中,处理器770和780分别是处理器610和协处 理器645。
[0071] 处理器770和780被示为分别包括集成存储器控制器(MC)单元772和782。处 理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口 776和778 ;类似地, 第二处理器780包括点对点接口 786和788。处理器770、780可以使用点对点(P-P)接口 电路778、788经由P-P接口 750来交换信息。如图7所示,MC 772和782将诸处理器耦 合至相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连至相应的处理 器的主存储器的一部分。
[0072] 处理器770、780可各自使用点对点接口电路776、794、786、798经由各个P-P接口 752、754与芯片组790交换信息。芯片组790可以可选地经由高性能接口 739与协处理器 738交换信息。在一个实施例中,协处理器738是专用处理器,诸如例如高吞吐量MIC处理 器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
[0073] 共享高速缓存(未示出)可以被包括在两个处理的任一个之内或被包括两个处理 器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可 将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
[0074] 芯片组790可经由接口 796耦合至第一总线716。在一个实施例中,第一总线716 可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之 类的总线,但本发明的范围并不受此限制。
[0075] 如图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的点对点架构, 系统可实现多点总线或者其他此类架构。
[0076] 现在参考图8,示出了根据本发明的一个实施例的更具体的第二示例性系统800 的方框图。图7和图8中的相同部件用相同附图标记表示,并从图8中省去了图7中的某 些方面,以避免使图8的其它方面变得难以理解。
[0077] 图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。
[0078] 现在参照图9,所示出的是根据本发明一个实施例的SoC 900的框图。虚线框是 更先进的SoC的可选特征。在图9中,互连单元902被耦合至:应用处理器910,该应用处 理器包括一个或多个核902A-N的集合以及共享高速缓存单元906 ;系统代理单元910 ;总 线控制器单元916 ;集成存储器控制器单元914 ;一组或一个或多个协处理器920,其可包括 集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元 930 ;直接存储器存取(DMA)单元932 ;以及用于耦合至一个或多个外部显示器的显示单元 940。在一个实施例中,协处理器920包括专用处理器,诸如例如网络或通信处理器、压缩引 擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
[0079] 本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组 合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程 系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至 少一个输入设备以及至少一个输出设备。
[0080] 诸如图7所示的代码730之类的程序代码可应用于输入指令,以执行本文中所描 述的功能并生成输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了 本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电 路(ASIC)或微处理器之类的处理器的任何系统。
[0081] 程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统 通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描 述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解译 语目。
[0082] 至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令 来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执 行本文所述的技术的逻辑。被称为"IP核"的这些表示可以被存储在有形的机器可读介质 上,并被提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
[0083] 这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品 的非瞬态、有形配置,其包括存储介质,诸如硬盘;任何其它类型的盘,包括软盘、光盘、紧致 盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)的以及磁光盘;半导体器件,例如只读存储 器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储 器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPR0M); 相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
[0084] 因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含指令或包 含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/ 或系统特性。这些实施例也被称为程序产品。
[0085] 仿真(包括二进制变换、代码变形等)
[0086] 在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如, 指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形 (morph)、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换 器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者 部分在处理器上部分在处理器外。
[0087] 图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的软件、固件、硬件或其组合。
【权利要求】
1. 一种装置,包括: 多个核,每个核具有: a) CPU ; b) 加速器; 在所述CPU和所述加速器之间耦合的控制器以及多个排序缓冲器,每个所述排序缓冲 器专用于所述CPU的线程中不同的一个线程,每一个所述的排序缓冲器保持从其相应的线 程发送至所述加速器的一个或多个请求,所述控制器控制将所述排序缓冲器各自的请求发 送至所述加速器。
2. 如权利要求1所述的装置,其特征在于,所述请求中的一个由标识存储器地址的指 针组成,在所述存储器地址中能找到用于所述加速器的所述请求的相关输入数据。
3. 如权利要求2所述的装置,其特征在于,所述请求还由指示所述输入数据有多大的 指示符组成。
4. 如权利要求3所述的装置,其特征在于,所述输入数据的大小被指定为高速缓存线 的数量。
5. 如权利要求1所述的装置,其特征在于,所述请求的状态信息与所述输入数据一起 被存储。
6. 如权利要求1所述的装置,其特征在于,所述加速器使用与已经请求所述加速器执 行任务的所述CPU上的线程相同的虚拟到物理地址转换。
7. 如权利要求1所述的装置,其特征在于,所述加速器具有多个功能单元从而使得所 述加速器能够同时执行多个任务。
8. 如权利要求7所述的装置,其特征在于,所述加速器能同时执行同一个任务的不同 例程。
9. 一种方法,包括: 在多核半导体芯片的核内的CPU上执行第一和第二线程; 将第一加速请求从所述第一线程发送至专用于所述第一线程的第一排序缓冲器; 将第二加速请求从所述第二线程发送至专用于所述第二线程的第二排序缓冲器; 将所述第一加速请求从所述第一排序缓冲器发送到加速器,所述加速器使用由所述第 一线程使用的第一虚拟到物理地址转换机制处理所述第一请求;以及 将所述第二加速请求从所述第二排序缓冲器发送到加速器,所述加速器使用由所述第 二线程使用的第二虚拟到物理地址转换机制处理所述第二请求。
10. 如权利要求9所述的方法,其特征在于,所述第一请求包含标识所述第一任务的输 入数据能在哪里找到的存储器地址指针。
11. 如权利要求10所述的方法,其特征在于,所述第一请求还包含关于所述输入数据 有多大的指示。
12. 如权利要求11所述的方法,其特征在于,所述指示被表达为高速缓存线的数量。
13. 如权利要求9所述的方法,其特征在于,还包括在所述第一请求被所述第一排序缓 冲器接收后在所述第一排序缓冲器中将所述第一请求的状态标识为新请求,以及调节尾指 针指向所述排序缓冲器中的所述第一请求的条目。
14. 如权利要求13所述的方法,其特征在于,还包括当所述第一请求为所述第一排序 缓冲器中最早的新条目时调节下一指针以指向所述排序缓冲器中所述第一请求的条目。
15. 如权利要求14所述的方法,其特征在于,还包括当所述第一请求被传递至所述加 速器时将所述排序缓冲器中所述第一请求的状态从新的改变为正在执行,并且当所述第一 请求为所述第一排序缓冲器中最老的未完成请求时调节头指针指向所述第一排序缓冲器 中的所述第一请求的条目。
16. 如权利要求15所述的方法,其特征在于,还包括在所述加速器完成所述第一请求 的相关任务后将所述第一请求的状态从正在执行改变为已完成,并且从所述第一排序缓冲 器中删除所述第一请求。
17. -种方法,包括: 在多核半导体芯片的核内的CPU上执行第一和第二线程; 将第一加速请求从所述第一线程发送至专用于所述第一线程的第一排序缓冲器; 将第二加速请求从所述第二线程发送至专用于所述第二线程的第二排序缓冲器; 将所述第一加速请求从所述第一排序缓冲器发送到加速器,所述加速器使用由所述第 一线程使用的第一虚拟到物理地址转换机制处理所述第一请求;以及 将所述第二加速请求从所述第二排序缓冲器发送到加速器,所述加速器使用由所述第 二线程使用的第二虚拟到物理地址转换机制处理所述第二请求;以及 将所述第一线程从活动状态切换至非活动状态并且将第三进程从非活动状态切换至 活动状态,包括用来自所述第三线程的请求替换具有来自所述第一线程的请求的所述第一 排序缓冲器的内容。
18. 如权利要求17所述的方法,其特征在于,所述切换所述第一线程以及所述切换所 述第三线程包括将所述第一线程的虚拟到物理地址转换切换出所述CPU外,以及,将所述 第三线程的虚拟到物理地址转换切换到所述CPU内。
19. 如权利要求18所述的方法,其特征在于,所述加速器同时处理所述第一和第二请 求。
20. 如权利要求17所述的方法,其特征在于,所述加速器检测到在处理所述第二请求 中的页面错误并且将所述页面错误的指示写入存储所述第二请求的输入数据的存储器地 址空间块中。
【文档编号】G06F9/38GK104221005SQ201280072132
【公开日】2014年12月17日 申请日期:2012年3月30日 优先权日:2012年3月30日
【发明者】R·罗恩, B·靳兹伯格, E·威斯曼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1