CN102282540A - 带有共享指令流的协处理器单元 - Google Patents

带有共享指令流的协处理器单元 Download PDF

Info

Publication number
CN102282540A
CN102282540A CN2009801549140A CN200980154914A CN102282540A CN 102282540 A CN102282540 A CN 102282540A CN 2009801549140 A CN2009801549140 A CN 2009801549140A CN 200980154914 A CN200980154914 A CN 200980154914A CN 102282540 A CN102282540 A CN 102282540A
Authority
CN
China
Prior art keywords
unit
coprocessor
processor
instruction
group
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
CN2009801549140A
Other languages
English (en)
Other versions
CN102282540B (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 CN102282540A publication Critical patent/CN102282540A/zh
Application granted granted Critical
Publication of CN102282540B publication Critical patent/CN102282540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • 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 or 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了一种处理器单元和协处理器单元。在一实施方式中,处理器单元包括在指令流中接收一组指令并且将所述一组指令提供给协处理单元的功能单元。协处理器单元执行所述指令并且发起将响应于所述一组指令的一组执行结果传输给处理器单元的功能单元。处理器功能单元可以通过实现基于数据包的协议的共享总线电路耦合到协处理器单元上。在不同的实施方式中,功能单元可以更改位于协处理器单元内的转换后备缓冲器(TLB)中的条目、恢复和中止在协处理器单元上执行的线程等等。

Description

带有共享指令流的协处理器单元
技术领域
本发明大体上涉及计算机处理,具体地说是,涉及在共享指令流的处理器单元和协处理器单元上执行指令。
发明内容
公开了用于在协处理器单元上执行指令的各种技术。
在一种实施方式中,公开了包含第一处理器功能单元的一种设备,所述第一处理器功能单元耦合至协处理器单元。在一种实施方式中,所述第一处理器功能单元配置成从调度器单元(scheduler unit)接收第一指令流中的第一组指令,并将所述第一组指令提供给协处理器单元。然后,所述第一处理器功能单元配置成从所述协处理器单元接收响应于所述第一组指令的第一组执行结果,在那里,所述协处理器单元发起(initiate)对所述第一组执行结果的传输。在某些实施方式中,所述设备包含总线电路,所述总线电路使所述第一处理器功能单元耦合至所述协处理器单元,并且所述总线电路配置成实现基于数据包的协议。在一些实施方式中,所述基于数据包的协议是超传输协议或者PCI-Express协议。在其他实施方式中,所述第一处理器功能单元配置成更改(alter)位于所述协处理器单元内的转换后备缓冲器(TLB)中的条目(entry)。
在又一实施方式中,公开了包含处理器接口单元和处理核(processing core)的协处理器单元。所述处理器接口单元配置成从相伴(companion)处理器单元中的协处理器接口单元中接收指令,在那里,所述指令来自由所述相伴处理器单元共享的指令流。所述处理核配置成执行所接收的所述指令,以便产生第一组执行结果并且发起将所述第一组执行结果通过所述处理器接口单元传送至所述相伴处理器单元。在某些实施方式中,所述处理核包含转换后备缓冲器(TLB),并且配置成通过所述处理器接口将页错误的指示传输至在所述相伴处理器上执行的操作系统,并且通过所述处理器接口来接收所述操作系统已对所述页错误进行了维护的指示。在各种实施方式中,所述处理核配置成实施页表搜索。在一些实施方式中,所述协处理器单元与所述相伴处理器单元一起分享对存储器的一致查看(coherent view)。
在又一实施方式中,公开了一种有形的计算机可读的存储介质,所述存储介质存储能够由包含协处理器单元和相伴处理器单元的计算机系统执行的程序指令。所存储的所述程序指令包含第一组程序指令,每个所述第一组程序指令具有一个第一组操作码,在那里,所述第一组程序指令能够由所述相伴处理器单元之内的一个或多个功能单元来执行。所存储的所述程序指令还包含第二组程序指令,每个所述第二组程序指令具有一个第二组操作码,在那里,所述第二组程序指令能够在所述协处理器单元之内执行。响应于接收所述第二组程序指令之内的程序指令,所述相伴处理器单元设置成将这些指令提供给耦合到所述协处理器单元上的所述相伴处理器单元的协处理器接口单元。所述协处理器接口单元配置成将所述第二组程序指令之内的程序指令传送给所述协处理器单元以便执行,并且随后接收由协处理器单元发起的、对所传送的所述指令的执行结果的传输。
附图说明
下面的详细描述参考了附图,现在对附图进行简要描述。
图1示出计算机系统的实施方式的框图。
图2示出包含处理器单元和一个或多个协处理器单元的处理器子系统的一个实施方式的框图。
图3示出包含协处理器接口单元的处理器单元的一个实施方式的框图。
图4示出协处理器单元的一个实施方式的框图。
图5示出协处理器接口的一个实施方式的框图。
图6A至图6D示出协处理器单元的各种实施方式的框图。
图7示出通过协处理器接口在协处理器上执行指令的方法的一个实施方式的流程图。
图8示出在协处理器单元上切换线程的方法的实施方式的流程图。
图9示出由协处理器单元利用虚拟地址空间来实现的方法的一个实施方式的流程图。
图10示出由第一处理器功能单元实现的方法的一个实施方式的流程图。
图11示出由协处理器单元实现的方法的一个实施方式的流程图。
图12示出计算机可读的介质的一个实施方式的框图。
具体实施方式
本说明书包含参考“一个(one)实施方式”或者“一(an)实施方式”。短语“在一个实施方式中”或者“在一实施方式中”的出现不一定是指相同的实施方式。特定的特征、结构或者特性能够以与本公开文本一致的任何合适的方式组合。
专业术语。以下段落针对本公开文本中的术语提供定义和/或语境(包含附加的权利要求):
“包括”。该术语是开放式的。像在附加的权利要求中所用到的那样,该术语不排斥另外的结构或步骤。考虑权利要求这样描述:“一种包括第一处理器功能单元的设备”。此项权利要求不排斥所述设备包含另外的部件(例如第二处理器功能单元、高速缓存器等)。
“计算机系统”。该术语具有其在现有技术中通常的且已被接受的含义,并且包含一个或多个一起操作的计算装置,每个计算装置包含一个或多个处理器单元和存储器。
“配置”。像在这里用到的那样,该术语的含义是:某一块硬件或者软件在操作时被布置用于实施某一特别的任务或者某些特别的任务。因此,“配置成”实施任务A的计算机系统的含义是:所述计算机系统包含电路、存储在存储器中的程序指令或者其他结构,它们在操作所述计算机系统期间实施或者能够用于实施任务A。类似地,“配置成”实施任务B的计算机系统包含如下指令,即,如果由计算机系统来执行这些指令,就实施任务B。
“软件”。该术语具有其在现有技术中通常的且已被接受的含义,其包含任何形式的计算机程序;程序包含对计算机系统的操作进行指引的指令组。
“软件应用”。从广义上讲,该术语是指软件实例。计算机备份程序是一种类型的软件应用。该术语“软件应用”除了运行在操作系统上的程序之外还包含操作系统。
“处理器单元”。该术语具有其在现有技术中通常的且已被接受的含义,其至少包含配置成执行程序指令的任何电路系统(例如中央处理单元(CPU))。像在这里用到的那样,处理器单元可以是指“主”处理器单元或者协处理器单元。与协处理器单元配合进行操作的主处理器单元可以被认为是“主机(host)”或“相伴(companion)”处理器单元。处理器单元可以在单个电路小片(die)上具有一个或多个处理“核”。另外,处理器单元可以横跨多个电路小片地分布。
“处理核”。该术语具有其在现有技术中通常的且已被接受的含义,其具有在处理器单元内部的多数个处理电路(例如CPU)之一。例如,处理核可以是指多核(芯片级多处理器)装置中的一个核。
“协处理器单元”。从广义上讲,该术语是指用于对相伴处理器的功能进行增补的任何处理器单元。与相伴处理器共享指令流的协处理器单元不同于如下加速器单元,所述加速器单元接收与所述相伴处理器的指令流分开的指令流。
“指令”。该术语具有其在现有技术中通常的且已被接受的含义,其至少包含指引处理器单元或核实施某组操作的一组比特(bits)。在各种实施方式中,指令可以包含操作标识符(例如操作码)、直接数据(例如操作数)、地址等。
“指令流”。该术语可以描述提供给处理器单元或核的一系列连续及时指令(例如来自软件应用)。指令流可以包含在地址空间内连续的指令,以及相对于某原始排序来说无序地执行的指令。
“执行结果”。从广义上讲,该术语是指作为处理器单元或核执行指令的结果而出现的任何状态上的变化。例如,执行结果可以包含合成值(resultant value)(例如相加和)、状态/完成通知、异常指示(例如指示页错误的标志)、命令(例如告知处理器单元中止执行线程)等。
“调度器单元”。从广义上讲,该术语是指处理器单元或核内部的电路系统,其准备用于执行的指令(例如在处理器单元或核中读取、解码和/或调度用于执行的指令的电路系统,或者将指令指引至处理器单元或核内部的合适功能单元的电路系统)。
“功能单元”。该术语具有其在现有技术中通常的且已被接受的含义,其从广义上讲是指处理器单元或核内部执行指令或者使指令以其名义得以执行的任何电路系统。处理器单元或核可以包含每个都致力于实现特定功能的多个功能单元(例如定点运算指令、浮点运算指令、加载/保存指令等)。“功能单元”包含如下电路系统,所述电路系统例如接收由协处理器发起的、对执行结果的传输,并且使所述指令引退(retire)。
“共享的总线电路”。该术语是指由三个或更多个装置共享的任何总线电路。因此,共享的总线电路不同于两个装置之间的“点对点”总线。
“存储器访问装置”。从广义上讲,该术语是指能够使一个或多个处理单元访问存储器的电路系统(典型地是分立芯片)。
“线程”。像在这里用到的那样,该术语是指一部分程序,所述一部分程序能够独立于所述程序的其他方面运行。
“多线程”。该术语是指处理器单元或核支持同步执行多线程的能力。
“响应线程”。从广义上讲,该术语是指在不同处理器单元或核上执行的相关线程。例如,如果在处理器上执行线程激活了在另一处理器上开始执行的线程,那么这些线程中的每个线程都可以被描述为“响应于”另一线程。在不同处理器单元或核上执行时与另一线程通信的线程也可以被描述为“响应线程”。
“恢复”。该术语是指在多线程处理的处理器单元或核上重启执行线程的动作。
“中止”。该术语是指在多线程处理的处理器单元或核上停止执行线程的动作。
“转换后备缓冲器(TLB)”。该术语具有其在现有技术中通常的且已被接受的含义,其包含保存有从虚拟地址到物理地址的转换的高速缓存器。
“页表搜索(Page table walk)”。该术语具有其在现有技术中通常的且已被接受的含义,并且包含:在TLB内部找寻从虚拟地址到物理地址的转换失败后,在存储器中查找所述转换的过程。
***
现在看图1,描绘了计算机系统100的一个实施方式。本公开文本描述了包含在计算机系统内部的处理器单元和协处理器的各种实施方式。公开的计算机系统可以是任何合适类型的计算装置。如图所示,计算机系统100包含处理器子系统180,该计算机子系统180通过互连线160(例如系统总线)耦合到存储器120和I/O接口140上。I/O接口140耦合到一个或多个I/O装置150上。计算机系统100可以是任何不同类型的装置,包括(但不限于):个人电脑系统、台式电脑、便携式或笔记本电脑、大型电脑系统、掌上电脑、工作站、网络计算机、消费电子设备,如移动电话、寻呼机、个人数据助理(PDA)。计算机系统100也可以是任何类型的网络化外围装置,例如像存储装置、交换机、调制解调器、路由器等。虽然单个的计算机系统100是为了方便起见而在图1中示出的,但是系统100也可以作为两个或两个以上的计算机系统一起运行来实现。
处理器子系统180可以包括一个或多个处理器或处理单元。例如,处理器子系统180可以包括一个或多个处理器单元,所述一个或多个处理器单元耦合至一个或多个协处理器单元。在计算机系统100的各种实施方式中,处理器子系统180的多个实例可以耦合至互连线160。在不同的实施方式中,处理器子系统180(或180内的每个处理器单元)都可以包含高速缓存器或者其他形式的板上存储器。在下面会结合图2对处理器子系统180加以详细描述。
存储器120可以由处理器子系统180来使用。存储器120可以用不同的物理存储器介质来实现,如硬盘存储、软盘存储、可移动磁盘存储、闪速存储器、随机存取存储器(RAM-SRAM、EDORAM、SDRAM、DDR SDRAM、
Figure BDA0000076924490000091
RAM等)、ROM(PROM、EEPROM等),诸如此类。计算机系统100中的存储器不限于存储器120。更确切地说,计算机系统100可以被说成是具有包含各种类型存储器/存储器单元的“存储器子系统”。例如,在一个实施方式中,计算机系统100的存储器子系统可以包括存储器120、处理器子系统180中的高速缓存存储器以及I/O装置150上的存储器(例如硬盘驱动器、存储阵列)。因此,短语“存储器子系统”代表计算机系统100中各种类型的可能的存储器介质。在一些实施方式中,存储器子系统保存着能由处理器子系统180执行的程序指令。
根据不同的实施方式,I/O接口140可以是任何配置成耦合至其他装置并且与其他装置通信的各种类型的接口。在一个实施方式中,I/O接口140是从前端总线至一个或多个后端总线的桥接芯片。I/O接口140可以通过一个或多个响应的总线或其他接口耦合到一个或多个I/O装置150上。I/O装置的例子包括存储装置(硬盘驱动器、光盘驱动器、可移动闪存驱动器、存储阵列、SAN(存储区域网)或者它们的相关控制器)、网络接口装置(例如至本地网络或广域网)或者其他装置(例如图形、用户界面装置等)。在一个实施方式中,计算机系统100通过网络接口装置耦合到网络上。
现在看图2,图示说明了处理器子系统180的一个实施方式。如图所示,处理器子系统180包括处理器单元220、协处理器单元260A和260B,以及存储器控制器280,它们全部通过互连线240(例如点对点或共享总线电路)耦合在一起。在一个实施方式中,处理器单元220和协处理器单元260可以位于同一电路小片上。在另一实施方式中,处理器单元220和协处理器单元260可以位于分开的电路小片上。协处理器单元260B和存储器控制器280用虚线示出,以表明处理子系统180的所有实施方式都无需包括这些方框。(这并不是说,子系统180的其他部件是必需的。)例如,处理器单元220可以仅耦合至单个协处理器单元(如260A);可供选择地,单元220可以耦合至多个协处理器单元(例如260A和260B)。在其他实施方式中,可以有附加的协处理器单元。在不同的实施方式中,处理器单元220和协处理器单元260可以共享一个共同的存储器控制器280。存储器控制器280例如可以配置成访问主系统存储器(例如存储器120)。在其他实施方式中,每个处理器单元220和协处理器单元260可以耦合至各自的存储器控制器。
在一个实施方式中,处理器单元220是一种通用处理器单元(如中央处理单元(CPU)),其包括一个或多个执行单元。可供选择地,单元220可以是特殊用途的处理器,例如图形处理器。在一个实施方式中,处理器单元220配置成执行使用存储器控制器280从存储器120中读取的指令。单元220的体系结构可以具有不同的特征,例如它可以是流水线式的。在其他实施方式中,处理器单元220可以实现用于同时执行多个线程的多线程体系结构。处理器单元220可以执行(没有限制)特定应用的指令以及操作系统指令。这些指令可以允许实现任何数量的特征,包括(只是其中的一个例子)虚拟存储器。
如图2所示,处理器单元220可以作为相伴处理器耦合至一个或多个协处理器单元260,允许单元220向协处理器单元260提供指令。由相伴处理器单元220提供给协处理器单元260的指令可以在一个共同的指令流(即单元220读取有待执行的指令,并提供那些读取的指令中的某些指令给单元260用于执行)之内。从处理器单元220提供给协处理器单元260的某些指令可以是由处理器单元220内部的功能单元所产生的“控制”指令,用于控制对协处理器单元260的操作。在下面会结合图3对处理器单元220加以详细描述。
协处理器单元260A和260B可以被用来帮助实施处理器单元220的工作。像处理器单元220那样,协处理器单元260并不局限于任何特殊的功能或体系结构。在各种实施方式中,协处理器单元260A和260B可以是通用的或者特殊用途的处理器(例如图形处理单元(GPU)、视频解码处理器、加密处理器、队列管理器等)。在一个实施方式中,协处理器单元260可以作为现场可编程门阵列(FPGA)来实现。在一些实施方式中,协处理器单元260可以是流水线式的。在一些实施方式中,协处理器单元260可以采用多线程体系结构。在不同的实施方式中,协处理器单元260可以配置成执行微代码指令,以便执行从单元220收到的某些指令。在某些实施方式中,协处理器单元260可以支持虚拟存储器的使用。在下面会结合图4对协处理器单元260加以详细描述。
在一个实施方式中,互连线240是一个共享的总线电路,其将处理器单元220耦合至协处理器单元260。在一个实施方式中,互连线240可以实现“虚拟通道”,其允许处理器单元220通过基于数据包的协议,例如超传输协议或者PCI-Express协议,与协处理器单元260通信。在一些实施方式中,互连线240可以是前端总线。在一个实施方式中,协处理器单元260可以通过北桥型装置耦合到处理器单元220上。
在一个实施方式中,存储器控制器280配置成提供用于处理器单元220和/或协处理器单元260的接口,以便访问存储器(例如存储器120)。存储器控制器280可以用于例如读取指令或者加载和保存数据。在一个实施方式中,处理器单元220可以用存储器控制器280来读取在处理器单元220或协处理器单元260中的用于执行的指令。在另一个实施方式中,协处理器单元260可以用存储器控制器280来读取其自身的指令或数据。
在某些实施方式中,处理器单元220和协处理器单元260配置成用于实现共享存储器(例如存储器120)的统一,在该共享存储器中,处理器单元220和/或协处理器单元260改变(例如无效或更新)保存在各自的处理器中的高速缓存的条目。在一个实施方式中,处理器单元220和协处理器单元260实现“探听(snooping)”协议,在该协议中,每个处理器都监视存储器总线(例如互连线160),以确定是否使高速缓存的条目失效/更新高速缓存的条目。在可供选择的实施方式中,当高速缓存的条目将要失效或者更新时,处理器单元220和协处理器单元260相互指示。在一些实施方式中,处理器单元220和协处理器260配置成共享对虚拟存储器的统一查看(coherent view)。例如,处理器单元220和协处理器单元260可以针对一个由操作系统在处理器之一(例如处理器单元220)上执行而产生的、共同的页表而维持分开的TLB。
现在看图3,图示说明了处理器单元220。处理器单元220是可以耦合到一个或多个协处理器单元260上的相伴处理器单元的实施方式。如图所示,处理器单元220包括调度器单元310、定点单元320A和浮点单元320B、加载保存单元(LSU)330、协处理器接口单元350和引退单元360。在所示的实施方式中,调度器单元310耦合到处理器单元220内部的指令高速缓存器340上,虽然其他的实施方式可以不包括高速缓存器340。同样地,LSU330可以耦合到数据高速缓存器345上,如图3所示。单元220的其他实施方式可以不包括高速缓存器345。在不同的实施方式中,处理器单元220包括一个或多个功能单元。需要注意的是,在不同的实施方式中,图3所示的功能单元320、330和350是示例性的,并且可以不被包括在处理器单元220中。在不同的实施方式中,处理器单元220可以包括单一的功能单元320或多数个功能单元320(如图所示)。在一些实施方式中,处理器单元220可以包括多数个协处理器接口单元350,其中,每个协处理器接口单元350都耦合到一个或多个协处理器单元260上。在一个实施方式中,协处理器接口单元350可以位于处理器单元220的外部。
处理器单元220可以是配置成执行多个线程(例如4个线程)的多线程处理器单元。不同线程的指令通过调度器单元310被调度至调度器单元320、330或350用于执行。正如下文将描述的那样,协处理器接口单元350配置成将其接收到的指令提供给协处理器单元260用于执行,随后收到协处理器发起的执行结果的传输。当单元320、330和350可用时,将执行结果提供给引退单元360。
调度器单元310可以包含逻辑电路来读取和解码指令,从而准备在随后的框中将它们用于执行。在一个实施方式中,调度器单元310可以包括逻辑电路,以从指令高速缓存器340读取指令。调度器单元310也可以实现逻辑电路,以应对指令高速缓存器缺失以及从虚拟指令读取地址至物理地址的转换(例如,调度器单元310可以包括指令转换后备缓冲器(ITLB)或硬件来实施页表搜索)。在一些实施方式中,调度器单元310可以基于指令中的信息将解码的指令路由至单元320、330和350。例如,调度器单元310可以基于指令内部的操作代码(操作码)将指令路由至协处理器接口350。在不同的实施方式中,调度器单元310可以实现多种调度技术。例如,在一个实施方式中,调度器单元310可以使指令排队并且使用无序执行(OoOE)算法来调度它们。此外,在一些实施方式中,调度器单元310可以包括逻辑电路,用于预测分支结果和/或读取目标地址。
定点单元320A和浮点单元320B仅代表可以存在于处理器单元220的实施方式内部的功能单元。这些单元可以包含用于执行各种类型的指令并生成结果的逻辑电路。例如,各种指令可以实施算法、逻辑或移位操作。在不同的实施方式中,单元320可以包括用于执行这样的操作的一个或多个算术逻辑单元(ALU)。
加载保存单元330包含用于执行加载和保存指令的逻辑电路。在一个实施方式中,加载保存单元330可以包括用于将数据加载和保存到数据高速缓存器345的逻辑电路。在某些实施方式中,加载保存单元330可以实现逻辑电路,以应对数据高速缓存器缺失以及从虚拟地址至物理地址的转换(例如,加载保存单元330可以包括数据转换后备缓冲器(DTLB)或硬件来实施页表搜索)。
协处理器接口单元350是将指令352提供给一个或多个协处理器单元260并且接收响应的执行结果354的功能单元。在不同的实施方式中,指令352可以包括由单元350(例如从单元310)接收的指示,以及由单元350生成的命令/指示。例如,协处理器接口单元350可以接收与从调度器单元310的指令流相关的一组指令352,并且将所述一组指令352提供给协处理器单元260,在该协处理器单元260处生成一组执行结果354。在该实施例中,协处理器单元260正在实施来自处理器单元220的指令流的指令。此外,协处理器接口单元350可以将指令或者命令352提供给协处理器单元260,所述指令或者命令352不是处理器单元220的指令流的一部分。这些指令/命令可用于控制协处理器单元260的操作和/或协处理器单元260相对于处理器单元220的同步,以及任何其他合适的目的。在任何情况下,一旦协处理器单元260生成了一组执行结果354,协处理器接口单元350就接收一组执行结果354。在一个实施方式中,单元350将执行结果354提供给引退单元360。在下面会结合图5对协处理器接口单元350加以详细描述。
在一个实施方式中,引退单元360包含用于使从单元320、330和350接收的执行结果引退的逻辑电路。在一些实施方式中,引退单元360可以耦合至(或者物理上包含)一个或多个用于保存状态信息的寄存器组,在所述寄存器组中,当收到执行结果时,引退单元360可以更新寄存器中的状态信息。在一个实施方式中,该状态信息可以包括识别执行中的线程(例如线程ID)或所述执行中的线程的响应进程(例如进程ID)的数据。在另一个实施方式中,状态信息可以包括在协处理器单元260上执行的线程的一个或多个状态信息。在不同的实施方式中,引退单元360可以包含如下逻辑电路,所述逻辑电路用于:当在无序执行(OoOE)之后接收到一组指令的时候,使指令组排队,并且在引退期间使所述指令组重新排序。在另一个实施方式中,引退单元360可以包含用于处理在执行不同指令期间引发的(thrown)异常(例如页错误异常)的俘获逻辑电路(trap logic)。
现在看图4,示出的是协处理器单元260。协处理器单元260是可以通过互连线240耦合到处理器单元220的协处理器单元的实施方式。在一个实施方式中,互连线240可以是控制外围设备或者实施特定功能的处理电路的、单独的总线。如图所示,协处理器单元260包括相伴处理器接口420和处理核440,它们通过互连线430耦合在一起。在一个实施方式中,处理核440可以包括功能单元442和寄存器组444。在另一个实施方式中,处理核440可以耦合至存储器控制器280并且包括高速缓存器446。相伴处理器接口420配置成接收指令352,并且将执行结果354传输给处理器单元220的协处理器接口单元350。寄存器组444、高速缓存器446和至存储器控制器280的连接用虚线示出,以便指明协处理器单元260能够以各种方式实现(例如,在一些实施方式中,可以根据需要将不同的框包括在内或排除在外)。要注意的是,示出的协处理器单元260包括单个处理核440和单个功能单元442,而在不同的实施方式中,协处理器单元260可以包括多数个处理核440/或多数个功能单元442。在其他实施方式中,协处理器单元260可以被附加在额外的协处理器单元上。
相伴处理器接口420是协处理器单元260与处理器单元220的协处理器接口单元350之间的接口。在一个实施方式中,相伴处理器接口420可以配置成在执行之前将所接收到的指令保存在指令队列中,并且将它们转送给处理核440,在该处理核处,随后执行所述指令。在另一个实施方式中,相伴处理器接口420可以配置成在由处理核440生成之后将执行结果354保存在另一队列中,并且可以将所述执行结果354传输给协处理器接口单元350。在一个实施方式中,响应于处理器单元220通过协处理器接口单元350传输针对执行结果354的请求,相伴处理器接口420可以将执行结果354传输给协处理器接口350。在可供选择的实施方式中,相伴处理器接口420可以在执行结果354可用后立即发起对所述执行结果的传输(也就是说,无需从处理器单元220接收这样做的明确指令。)
处理核440配置成执行指令352,以便使用一个或多个功能单元442生成执行结果354。指令352可以具有不同程度的复杂性,并且具有不同的执行要求。在一个实施方式中,处理核440可以执行不要求访问存储器或寄存器的指令352(例如只包含直接数据的指令)。在其他实施方式中,处理核440可以在执行指令352时访问寄存器组444。在一些实施方式中,处理核440可以执行利用存储器控制器存储器控制器280来访问板载高速缓存器或存储器120的指令(例如包括地址信息的指令,如加载/保存指令)。在一些实施方式中,处理核440可以在访问存储器120时将虚拟地址转换成物理地址。
处理核440可以执行来自各种来源的指令。在一个实施方式中,处理核440可以只执行由处理器单元220提供的指令352。在另一个实施方式中,处理核440可以在从处理器单元220接收一组初始指令352之后,读取额外的指令。在不同的实施方式中,处理核440可以在执行之前从指令352生成微代码指令。
如上面提及的那样,在一个实施方式中,指令352可以包括是处理器单元220的指令流的一部分的一组指令。提供给协处理器单元260的指令可以例如包括协处理器操作码,用于标明它们在单元260内部(例如在特定的功能单元442上)是可执行的。在另一种实施方式中,指令352可以是由控制对协处理器单元260的执行的单元350生成的指令/命令(即与处理器单元220的指令流不相关的指令)。例如,在一个实施方式中,这些命令可以是可执行的,用于控制处理器单元220和协处理器单元260的通信(例如调整相伴处理器接口420的方位)。在另一个例子中,这些命令可以指导处理器核440,以执行各种操作,例如改变(即更新或无效)所保存的(例如寄存器组444或高速缓存器446中的)数据、管理存储器访问(例如更新或者无效TLB中的转换)、保存执行线程的状态信息(例如扩展的保存命令(EXSAVE)等。
执行结果354可以包括各种作为执行指令352的结果所产生的信息中的任何信息。在一个实施方式中,执行结果354可以包括所生成的合成值(例如,一组加密指令可以产生一组加密的数据)。在另一种实施方式中,执行结果354可以包括状态/完成通知信息(例如,指示出在处理核440上执行的特殊线程的完成)。在其他的实施方式中,执行结果354可以包括异常或故障信息(例如页错误指示)。在一些实施方式中,执行结果354可以包括用于控制对协处理器接口单元350的操作的命令(例如控制处理器单元220和协处理器单元260的通信的命令)。
在下面会结合图6A至6D对协处理器单元260的各种实施方式加以详细描述。
现在看图5,示出的是协处理器接口单元350。协处理器接口单元350是用于将处理器单元220耦合至协处理器单元260的协处理器接口单元的实施方式。如图所示,协处理器接口单元350包括调度器接口单元510、路由接口单元520、引退接口单元530、协处理器命令单元540和寄存器组550。在所描绘的实施方式中,路由接口单元520包括路由表524。在单元350的各种实施方式中,寄存器组550和/或路由表524可以(或者可以不)被包括在内,如由它们各自的虚线所指示的那样。
如上面指出的那样,协处理器接口单元350配置成将来自处理器单元220的指令流的指令提供给协处理器单元260。在一个实施方式中,协处理器接口单元350通过调度器接口单元510接收指令,并且通过路由接口单元520将指令352传输至协处理器单元260。一旦协处理器单元260执行完所述指令,路由接口单元520就接收执行结果354,然后协处理器接口单元350通过引退接口单元530将执行结果提供给引退单元360。
在一个实施方式中,路由接口单元520是通过互连线240生成和接收总线流量(bus traffic)(例如指令/命令352和执行结果354)的接口。在一些实施方式中,路由接口单元520采用基于数据包的通信协议,如超传输、PCI Express、快速路径(Quick Path)等。在某些实施方式中,路由接口单元520可以将路由信息保存在路由表524中,这可以保存针对多个协处理器单元260的源和目标地地址信息。
在一个实施方式中,协处理器命令单元540配置成产生不是处理器单元220指令流的一部分的指令/命令。例如,协处理器命令单元540可以生成对协处理器单元260的操作进行控制的命令,如上面在图4的内容中所描述的那样。在一些实施方式中,协处理器命令单元540可以生成对互连线240和/或相伴处理器接口420的操作进行控制的命令(例如调整超传输通信参数的命令等)。在不同的实施方式中,协处理器命令单元540可以生成响应于外部指示(例如调度器单元310、引退单元360等)的命令。在其他实施方式中,协处理器命令单元540可以分析与调度器接口单元510和/或引退接口单元530相关的流量,以确定是否生成命令。
在不同的实施方式中,协处理器接口单元350包括寄存器组550,用于保存与单元350的各种操作相关的信息。例如,协处理器接口单元350可以保存与具有响应的协处理器线程的、处理器单元220上的线程相关的信息。在一些实施方式中,协处理器接口单元350保存与不同协处理器260相关的信息,例如与执行协处理器线程相关的信息、针对特殊指令组352的完成状态信息等。
在不同实施方式中,协处理器接口单元350(例如在寄存器组550和/或存储器120中)储存如下信息,所述信息涉及某些协处理器单元260(例如在CPUID树中)的不同性能/功能。在一些实施方式中,协处理器接口单元350也可以配置成引发(throw)如下事件中的异常:任何来自处理器单元220的指令流试图以无效的方式查询协处理器单元260(例如查询不存在的协处理器单元260、查询协处理器单元260的不可用的特征)。
现在看图6A至图6D,一系列框图展现的是协处理器单元260的各种实施方式。
图6A图示说明了实现多线程处理核的协处理器单元260的实施方式。如图所示,协处理器单元260包括通过互连线430耦合的相伴处理器接口420和处理核440。在一个实施方式中,处理核440包括功能单元610A、功能单元610B和寄存器组620。在一些实施方式中,每个功能单元610都配置成针对给定的线程执行指令352,并且生成一组响应的执行结果354。在某些实施方式中,寄存器组620可以保存表示特殊线程的信息(例如线程标识、进程标识PID、内容标识CID等)。所示的协处理器单元260带有具有多个功能单元610的单个处理核440,而在其他实施方式中,协处理器单元260包括含有多数个功能单元610的多数个处理核440。
如前面提及的那样,在处理器单元220上执行的线程可以调用(invoke)在协处理器单元260上执行的特殊线程和/或与在协处理器单元260上执行的特殊线程通信。例如,在一个实施方式中,只有一个单独的协处理器线程可以与响应的单独的处理器线程配对。在另一个实施方式中,多个协处理器线程可以与响应的单独的处理器线程配对。在一些实施方式中,单独的处理器线程可以配对成在多个功能单元610和/或多个协处理器单元260上执行的响应的协处理器线程。
在不同的实施方式中,协处理器接口单元350提供控制响应的协处理器线程的执行的指令/命令(例如通过由协处理器命令单元540生成的指令/命令)。例如,这些指令/命令可以包括用于中止正在协处理器单元260上执行的线程或者恢复执行先前正在协处理器单元260上执行的线程的指令。在不同的实施方式中,在处理器单元220上执行的操作系统使用指令352将新的协处理器线程初始化。在一些实施方式中,指令352可以包括用于执行内容切换(context switch)的命令,其中协处理器单元260中止执行中的线程并且切换到另一个非执行中的线程。在这种实施例中,协处理器单元260可以执行指令,以保存执行中的线程的状态和复原非执行中的线程的状态(例如使用EXSAVE指令)。在某些实施方式中,协处理器单元260将执行中的线程的所保存的状态从寄存器组620传送至存储器120。在一个实施方式中,协处理器单元260可以直接访问存储器120,以存储和检索(retrieve)状态信息。在另一个实施方式中,协处理器单元260可以通过处理器单元220存储和取回状态信息。在下面会结合图8对线程切换的方法加以详细描述。
在一些实施方式中,协处理器单元260可以通过执行结果354控制响应的处理器线程的执行。在一个实施方式中,执行结果354可以包括完成状态信息,所述完成状态信息用于恢复和/或中止响应的处理器线程(例如,处理器线程可以阻止未完成的响应的执行中的协处理器线程)。在其他实施方式中,执行结果354可以包括用于恢复或中止处理器线程的明确的命令(例如,当在处理器单元220上执行内容切换时)。
图6B图示说明了执行微代码指令的协处理器单元260的实施方式。如图所示,协处理器单元260包括通过互连线430耦合的相伴处理器接口420和处理核440。在所示的实施方式中,处理核440包括微代码汇编编译器630和功能单元610。在一般情况下,微代码汇编编译器630配置成接收一组指令(例如指令352),并生成能在功能单元610上执行的一组响应的微代码指令。微代码汇编编译器630用虚线示出,用以表明在不同实施方式中它可以(或者可以不)包含在协处理器单元260内部。例如,微代码汇编编译器630可以位于处理器单元220内部(例如位于协处理器接口350内部),以便指令352包括从处理器单元220的指令流中产生的微代码指令。
图6C图示说明了实现虚拟存储器的协处理器单元260的实施方式。如图所示,协处理器单元260包括通过互连线430耦合的相伴处理器接口420和处理核440。在所示的实施方式中,处理核440包括读取单元640、功能单元610、加载保存单元(LSU)650和存储器管理单元(MMU)660。此外,读取单元640和LSU650各自包括指令转换后备缓冲器(ITLB)642和数据转换后备缓冲器(DTLB)。在不同的实施方式中,可以(或者可以不)实现框的其他组合,例如,可以省略读取单元640和/或LSU650,可以采用不同于ITLB642和DTLB652的单个TLB,等等。
在不同的实施方式中,协处理器单元260可以配置成通过读取额外的指令或者执行加载/存储指令来访问存储器。在一个实施方式中,读取单元640、LSU650各自检索高速缓存在ITLB642和DTLB652中的虚拟存储器转换(translation)。如果在适当的TLB中没有找到转换,那么在一些实施方式中,存储器管理单元(MMU)660配置为针对所述转换实施页表搜索。在某些实施方式中,MMU660查询CR3寄存器662,以便在实施页表搜索之前获取当前页表的存储器地址。如果在页表中没有找到所述转换,那么在一些实施方式中,MMU660针对在处理器220上执行的操作系统引发页错误异常。在下面会结合图9对访问存储器和实施页表搜索的方法加以详细描述。
如上面提及的那样,在不同的实施方式中,处理器单元220和协处理器单元260配置成维持对存储器的统一查看。就这点而论,指令352和执行结果354可以包括管理存储器一致性的命令。在一个实施方式中,指令352可以包括用于改变(例如更新/无效)高速缓存的数据的命令,所述数据如高速缓存在ITLB642和DTLB652中的译文。在其他实施方式中,指令352可以包括用于更新CR3寄存器662的命令。同样地,在不同的实施方式中,执行结果354可以包括用于更新或者无效处理器220中(例如在指令高速缓存器340、数据高速缓存器345、任何TLB等的内部)的高速缓存的数据的命令。
图6D图示说明了实现图形引擎(graphics engine)的协处理器单元260的实施方式。如图所示,协处理器单元260包括通过互连线430耦合的相伴处理器接口420和处理核440。此外,处理核440包括图形编译器前端(graphical frontend)670和存储器管理单元(MMU)660。在所示的实施方式中,图形编译器前端670耦合至图形编译器后端692,相应地,该图形编译器后端耦合至显示单元694。如虚线所示,MMU660可以访问存储器120(例如通过存储器控制器280)和/或本地存储器682。处理核440包括图形编译器前端670,而在一个实施方式中,处理核440可以包括图形编译器后端692。可供选择地,图形编译器后端692可以位于其他地方(例如图形卡或显示单元694中)。
在不同的实施方式中,协处理器单元260执行来自处理器220的指令流的专门的图形指令。在一般情况下,图形编译器前端670实施在图像处理之前发生的各种图形操作,例如多边形生成、光照效果,或者其他现有技术公知的图形操作。在一些实施方式中,图形编译器前端760可以包括指令汇编编译器672,所述指令汇编编译器672生成用于响应的图形编译器后端692的图形指令。
现在看图7,描绘了方法700的流程图。方法700是由处理器单元220实现的、用于在协处理器单元260上执行指令的方法的一个实施方式。方法700以步骤710开始,所述步骤710包括处理器单元220读取、解码和调度一组指令。此时,在不同的实施方式中,调度器单元310解码指令,并将它们路由到各自的功能单元(例如单元320、330和350)。在一个实施方式中,当指令包含与协处理器指令相关的特定操作码时,调度器单元310将所述指令路由至协处理器接口单元350。在可供选择的实施方式中,可以基于其他标准,例如特定范围的存储器地址、PID等,路由指令。在步骤720中,协处理器接口单元350将指令组352传输至协处理器单元260(例如使用超传输或PCI-Express协议通过耦合到协处理器单元260上的北桥型装置)。在那里,协处理器单元260执行指令352,以产生一组响应的执行结果354。在步骤730中,协处理器接口单元350通过协处理器单元所发起的传输来接收执行结果354,并且在步骤750中,例如通过引退单元360使相应的指令引退。在各种实施方式中,引退单元360可以存储执行结果354的合成值,并处理任何引发的异常。
现在看图8,描绘了方法800的流程图。方法800是用于在协处理器单元260上切换线程的方法的实施方式。例如,当在处理器单元220上执行的处理器线程对新的线程进行初始化或者恢复执行在协处理器单元260存在的线程时,可以实施步骤810至840。如果所述处理器线程使未完成的新的/存在的线程中止,那么可以实施步骤850至860,以恢复所述处理器线程。需要注意的是,在不同的实施方式中,能够以各种方式实施方法800(例如,方法800可以不包括实施步骤850至860,可以包括额外的未示出的步骤等)。
方法800以步骤810开始,其中在处理器单元220上执行的线程需要使用相应的协处理器线程。在一个实施方式中,执行中的处理器线程指出这一要求,方法是:通过针对操作系统引发异常来调度新的或存在的线程。
在步骤820中,处理器单元220确定是否存在可用的协处理器资源。在一个实施方式中,处理器单元220通过访问协处理器接口单元350(例如寄存器组550)中的信息来确定这种可用性。在另一实施方式中,处理器单元220通过协处理器命令来询问协处理器单元260。如果协处理器资源可用,那么方法800继续进行步骤840。否则,方法800继续进行步骤830。
在步骤830中,处理器单元220指令协处理器单元260,以中止执行中的协处理器线程。在不同的实施方式中,协处理器单元260可以存储被中止的所述线程的状态信息(例如通过直接将所述状态存储在存储器120中,或者将所述状态传输给处理器单元220用于存储)。
在步骤840中,处理器单元220的操作系统为了在协处理器单元260上执行而调度所请求的线程。如果所请求的线程先前已经在执行中,那么协处理器单元260可以加载与线程相关的任何先前的状态信息。
一旦完成所请求的协处理器线程的执行,协处理器单元260就可以产生指明这种完成的执行结果354。如果处理器线程在步骤850中受阻(即处理器线程阻碍了未完成的协处理器线程),那么处理器单元220在步骤860中恢复执行所述处理器线程。需要注意的是,在一些实施方式中,协处理器单元260可以直接指令操作系统恢复所述处理器线程(例如通过在完成执行响应的协处理器线程时引发异常)。
现在看图9,描述了方法900的流程图。方法900是一种采用虚拟地址空间由协处理器单元260实现的方法的实施方式。
方法900以步骤910开始,其中协处理器单元260生成将虚拟地址转换成物理地址910的请求。例如,当读取指令或访问存储器时,协处理器单元260可以实施虚拟存储器转换。
在步骤920中,协处理器单元260确定:在协处理器TLB(例如ITLB642或DTLB 652)中是否发现(即存在)虚拟地址。如果在TLB中发现虚拟地址,那么所述转换被用来在步骤930中确定相应的物理地址。但是,如果未在TLB中发现虚拟地址,那么方法900继续进行步骤940。
在步骤940中,协处理器单元260实施页表搜索(例如使用MMU660),以便寻找相应的转换。如果在步骤950中,在页表中发现虚拟地址,那么协处理器单元260可将所述转换加载到TLB中,并在步骤960中确定相应的物理地址。另一方面,如果在步骤950中,在页表中未发现虚拟地址,那么方法900继续进行步骤970。
在步骤970中,协处理器单元260用信号将页错误传达给处理器单元220。在一个实施方式中,协处理器单元260生成如下执行结果354,所述执行结果354包括可由在处理器单元220上执行的操作系统使用的页错误异常。在一些实施方式中,当操作系统已对页错误进行了维护时,协处理器接口单元350可以告知协处理器单元260(例如通过由协处理器命令单元540生成的命令)。
现在看图10,描述了方法1000的流程图。方法1000是由第一处理器功能单元(例如协处理器接口单元350)实现的方法的一个实施方式。在步骤1010中,第一处理器功能单元在来自调度器单元310的第一指令流中接收第一组指令(例如指令352)。在步骤1020中,第一处理器功能单元将所述第一组指令提供给协处理器单元(例如单元260)。然后,协处理器单元260可以执行指令352,生成一组响应的执行结果354。在步骤1030中,第一处理器功能单元接收响应于来自协处理器单元260的所述第一组指令的第一组执行结果(例如执行结果354),其中所述协处理器单元260发起所述传输。
现在看图11,描绘了方法1100的流程图。方法1100是由协处理器单元260实现的方法的一个实施方式。在步骤1110中,协处理器单元260在相伴处理器接口单元(例如相伴处理器接口420)处,接收来自相伴处理器单元(例如处理器单元220)中的协处理器接口单元(例如协处理器接口单元350)的指令352。在步骤1120中,协处理器单元260在处理核440上执行所收到的指令352,以生成第一组执行结果354。在步骤1130中,协处理器单元260发起所述第一组执行结果354通过相伴处理器接口单元(例如相伴处理器接口420)至所述相伴处理器单元(例如处理器单元220)的传送。
现在看图12,描述了计算机可读介质1210。计算机可读介质1210是存储如下指令的产品的实施方式,所述指令能由包括处理器单元220和协处理器单元260的计算机系统100执行。如图所示,计算机可读介质1210包括能由处理器单元220内部的一个或多个功能单元执行的一组处理器指令1221和由协处理器单元260执行的一组协处理器指令1222。在所示的实施方式中,组1221中的每个处理器指令1231都包括处理器操作码位1241,而组1222中的每个协处理器指令1232都包括协处理器操作码位1242。在不同的实施方式中,指令1231和1232可以包括地址位1244和/或直接数据1246。(指令1231和1232的不同于已述那些情况的其他布置当然也是有可能的。例如,所有指令都无需包括直接数据或地址位。)
调度器单元310可以使用不同标准来调度/路由指令。在一个实施方式中,调度器310基于操作码位路由指令(例如,处理器指令1231包括处理器操作码位1241,而协处理器指令1232包括协处理器操作码位1242)。在另一种实施方式中,调度器310基于地址位1244路由指令(例如,某些地址与处理器指令相关,而另一些则与协处理器指令相关)。在其他实施方式中,调度器310基于其他标准,例如程序1220之内的指令的顺序,来调度用于执行的指令。
计算机可读介质1210可以包括各种介质,所述介质存储在执行期间使用的程序指令和/或数据。在一个实施方式中,计算机可读介质1210是一种产品,例如有形的计算机可读的存储介质,其可以包括计算机系统100的存储器子系统的不同部分。在其他实施方式中,有形的计算机可读介质1210可以包括存储介质或存储器介质,如磁介质(例如磁盘)或光学介质(例如CD、DVD及相关技术等)。有形的计算机可读介质1210可以是易失性的或非易失性的存储器。例如,有形的计算机可读介质1210可以是(但不限于)SDRAM、DDR SDRAM、RDRAM、SRAM、闪速存储器,并且具有各种类型的ROM,等等。图1例如包括有形的计算机可读介质(例如存储器120),其相应地能够用于存储能由处理器单元220或协处理器单元260执行的程序指令。
在其他实施方式中,计算机可读介质1210是非有形的介质,其可以对信号(例如电信号、电磁信号或光信号)上的指令和/或数据进行存储/编码,这些信号通过通信介质、链路和/或系统(例如电缆、网络等)无论有线地、无线地还是两者兼而有之地进行传送。这样的信号可以根据上述说明运载实现的指令和/或数据。例如,能在计算机系统100上执行的指令可以传输到遍及不同类型的计算机网络。
***
虽然上面已经描述了具体实施方式,但这些实施方式并非意在限制本公开文本的保护范围,即使其中关于特定特征仅描述了一个单一的实施方式。本公开文本中的特征的示例意在进行说明而不是限制,除非另作说明。上面的描述意在覆盖对于从本公开文本中得到启示的本领域技术人员来说显而易见的替换、修改和等同。
本公开文本的保护范围包括在这里(明确地或暗示地)公开的特征中的任何特征或者其组合,或者对其的任何概括,不管其是否有利于解决在这里论述的问题中的任何之一或者全部。因此,可能在本申请的申请过程中针对特征的任何组合提出新的权利要求(或对其主张优先权的请求)。尤其是,参考附加的权利要求,从属权利要求的特征能够与独立权利要求的特征组合,而相应的独立权利要求的特征能够以任何合适的方式组合并且不仅仅以在附加的权利要求中列举的具体组合方式来组合。

Claims (20)

1.一种设备,包括:
第一处理器功能单元,其配置成从调度器单元接收第一指令流中的第一组指令,将所述第一组指令提供给协处理器单元,并且从所述协处理器单元接收响应于所述第一组指令的第一组执行结果,其中,所述第一组执行结果的传输由所述协处理器单元发起。
2.根据权利要求1所述的设备,还包括:
处理器单元,其包含所述第一处理器功能单元和所述调度器单元的;以及
所述协处理器单元。
3.根据权利要求1所述的设备,还包括第二处理器功能单元,所述第二处理器功能单元配置成从所述调度器单元接收所述第一指令流中的第二组指令,其中,所述第二处理器功能单元还配置成实施一个或多个执行操作,以产生响应于所述第二组指令的第二组执行结果。
4.根据权利要求2所述的设备,其中,所述设备是包含所述处理器单元和所述协处理器单元的计算机系统。
5.根据权利要求2所述的设备,还包括:
共享的总线电路,其使所述第一处理器功能单元耦合至所述协处理器单元,其中,所述总线电路配置成实现基于数据包的协议;以及
耦合至所述共享的总线电路的存储器访问装置。
6.根据权利要求5所述的设备,其中,所述基于数据包的协议是如下协议之一:超传输协议、PCI-Express协议。
7.根据权利要求1所述的设备,还包括:
包含所述协处理器单元的多数个协处理器单元;
其中,所述第一处理器功能单元配置成将指令组提供给所述多数个协处理器单元中的不同协处理器单元,并且从所述多数个协处理器单元中的不同协处理器单元接收相应的执行结果组;
其中,所述第一处理器功能单元还配置成保存路由信息,并且基于所述路由信息将所述指令组路由至所述多数个协处理器单元中的所述不同协处理器单元。
8.根据权利要求1所述的设备,其中,所述第一处理器功能单元配置成更改位于所述协处理器单元内的转换后备缓冲器(TLB)中的条目。
9.根据权利要求1所述的设备,其中,所述第一处理器功能单元还配置成:
从所述协处理器单元接收页错误的指示;
将所述页错误通知所述设备的操作系统;以及
向所述协处理器单元指明所述操作系统已对所述页错误进行了维护。
10.根据权利要求1所述的设备,还包括:
包含所述第一处理器功能单元和所述调度器单元的多线程的处理器单元;以及
其中,所述协处理器单元配置成执行如下线程,所述线程具有在所述处理器单元上执行的响应线程。
11.根据权利要求1所述的设备,其中,所述第一处理器功能单元配置成恢复和中止在所述协处理器单元上执行的线程。
12.根据权利要求1所述的设备,其中,所述设备是计算机系统,包括:
包含所述第一处理器功能单元和引退单元的处理器单元;以及
其中,所述引退单元配置成利用所述第一组执行结果来使所述第一组指令引退。
13.根据权利要求1所述的设备,其中,所述第一处理器功能单元配置成在所述协处理器单元处存储在所述协处理器单元上执行的线程的执行状态。
14.一种协处理器单元,包括:
相伴处理器接口单元,其配置成从相伴处理器单元中的协处理器接口单元中接收指令,其中,所述指令来自由所述相伴处理器单元共享的指令流;
处理核,其配置成执行所接收的所述指令,以便产生第一组执行结果并且发起所述第一组执行结果通过所述相伴处理器接口单元至所述相伴处理器单元的传送。
15.根据权利要求14所述的协处理器单元,其中,所述处理核包含转换后备缓冲器(TLB),并且其中,所述处理核配置成:
通过所述相伴处理器接口单元来将页错误的指示传输至在所述相伴处理器上执行的操作系统;以及
通过所述相伴处理器接口单元来接收所述操作系统已对所述页错误进行了维护的指示。
16.根据权利要求14所述的协处理器单元,其中,所述协处理器单元包含高速缓存器,并且其中,所述相伴处理器还配置成更改所述协处理器单元的所述高速缓存器中的条目。
17.根据权利要求14所述的协处理器单元,其中,所述处理核配置成实施页表搜索。
18.根据权利要求14所述的协处理器单元,其中,所述协处理器单元配置成中止和恢复在所述相伴处理器单元上执行的线程。
19.根据权利要求14所述的协处理器单元,其中,所述协处理器单元配置成产生微代码指令,以便实现所接收的所述指令。
20.一种有形的计算机可读的存储介质,所述存储介质存储能够由包含相伴处理器单元和协处理器单元的计算机系统执行的程序指令,其中,所存储的所述程序指令包括:
第一组程序指令,每个所述第一组程序指令具有第一组操作码中的一个,其中,所述第一组程序指令能够由所述相伴处理器单元之内的一个或多个功能单元来执行;
第二组程序指令,每个所述第二组程序指令具有第二组操作码中的一个,其中,所述第二组程序指令能够在所述协处理器单元之内执行;并且
其中,响应于接收所述第二组程序指令之内的程序指令,所述相伴处理器单元配置成将所述指令提供给耦合到所述协处理器单元上的所述相伴处理器单元的协处理器接口单元;以及
其中,所述协处理器接口单元配置成将所述第二组程序指令之内的程序指令传送给所述协处理器单元以便执行,并且随后接收由协处理器单元发起的、对所传送的所述指令的执行结果的传输。
CN200980154914.0A 2008-12-17 2009-12-10 带有共享指令流的协处理器单元 Active CN102282540B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/337,159 2008-12-17
US12/337,159 US7930519B2 (en) 2008-12-17 2008-12-17 Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
PCT/US2009/067409 WO2010077751A2 (en) 2008-12-17 2009-12-10 Coprocessor unit with shared instruction stream

Publications (2)

Publication Number Publication Date
CN102282540A true CN102282540A (zh) 2011-12-14
CN102282540B CN102282540B (zh) 2015-07-01

Family

ID=41820594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980154914.0A Active CN102282540B (zh) 2008-12-17 2009-12-10 带有共享指令流的协处理器单元

Country Status (6)

Country Link
US (1) US7930519B2 (zh)
EP (1) EP2374060B1 (zh)
JP (1) JP5676470B2 (zh)
KR (1) KR101507096B1 (zh)
CN (1) CN102282540B (zh)
WO (1) WO2010077751A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137060A (zh) * 2011-12-30 2014-11-05 英特尔公司 高速缓存协处理单元
CN104301253A (zh) * 2014-10-21 2015-01-21 合肥星服信息科技有限责任公司 线程池和共享池组合优化大负荷通讯服务器
CN104871132A (zh) * 2012-10-18 2015-08-26 超威半导体公司 介质硬件资源分配
WO2016202001A1 (zh) * 2015-06-17 2016-12-22 华为技术有限公司 计算机指令处理方法、协处理器和系统
CN107368450A (zh) * 2016-05-11 2017-11-21 国际商业机器公司 实现维护被拒指令的加载/存储单元的多片处理器的操作
CN108475196A (zh) * 2015-12-02 2018-08-31 斯瓦姆64有限责任公司 数据处理
CN111858228A (zh) * 2019-04-26 2020-10-30 三星电子株式会社 用于存储装置中的加速内核的状态监测的方法及系统

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391865B2 (en) 1999-09-20 2008-06-24 Security First Corporation Secure data parser method and system
CN101375284B (zh) 2004-10-25 2012-02-22 安全第一公司 安全数据分析方法和系统
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
JP4868012B2 (ja) * 2009-03-09 2012-02-01 日本電気株式会社 コンピュータシステム、コンピュータシステムの制御方法、及びプログラム
CN104917780A (zh) 2009-11-25 2015-09-16 安全第一公司 对移动中数据进行保护的系统和方法
JP4809497B2 (ja) 2010-02-25 2011-11-09 ファナック株式会社 複数の独立したシーケンスプログラムを並列実行するプログラマブルコントローラ
CA2795206C (en) * 2010-03-31 2014-12-23 Rick L. Orsini Systems and methods for securing data in motion
EP2577936A2 (en) 2010-05-28 2013-04-10 Lawrence A. Laurich Accelerator system for use with secure data storage
US9304774B2 (en) 2011-02-04 2016-04-05 Qualcomm Incorporated Processor with a coprocessor having early access to not-yet issued instructions
US20120236010A1 (en) * 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US8683175B2 (en) * 2011-03-15 2014-03-25 International Business Machines Corporation Seamless interface for multi-threaded core accelerators
US9405550B2 (en) 2011-03-31 2016-08-02 International Business Machines Corporation Methods for the transmission of accelerator commands and corresponding command structure to remote hardware accelerator engines over an interconnect link
US9633407B2 (en) * 2011-07-29 2017-04-25 Intel Corporation CPU/GPU synchronization mechanism
SE537552C2 (sv) * 2011-12-21 2015-06-09 Mediatek Sweden Ab Digital signalprocessor
US9075623B2 (en) * 2012-01-18 2015-07-07 International Business Machines Corporation External auxiliary execution unit interface for format conversion of instruction from issue unit to off-chip auxiliary execution unit
US9405701B2 (en) 2012-03-30 2016-08-02 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
KR20160122278A (ko) 2012-08-18 2016-10-21 퀄컴 테크놀로지스, 인크. 프리페칭을 갖는 변환 색인 버퍼
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9417873B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
TWI477121B (zh) * 2012-12-28 2015-03-11 Askey Computer Corp 多級模組擴充系統及多級模組通訊方法
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US20140189333A1 (en) * 2012-12-28 2014-07-03 Oren Ben-Kiki Apparatus and method for task-switchable synchronous hardware accelerators
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
KR20160037827A (ko) * 2013-01-17 2016-04-06 엑소케츠 인코포레이티드 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들
US10203958B2 (en) * 2013-07-15 2019-02-12 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching
US9535490B2 (en) * 2013-12-16 2017-01-03 Qualcomm Incorporated Power saving techniques in computing devices
USRE49652E1 (en) 2013-12-16 2023-09-12 Qualcomm Incorporated Power saving techniques in computing devices
US11449452B2 (en) * 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
US9727944B2 (en) * 2015-06-22 2017-08-08 Apple Inc. GPU instruction storage
WO2018004590A1 (en) 2016-06-30 2018-01-04 Intel Corporation Method and apparatus for remote field programmable gate array processing
US20180150125A1 (en) * 2016-11-28 2018-05-31 Qualcomm Incorporated Wifi memory power minimization
KR102235803B1 (ko) * 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치
US10437739B2 (en) * 2017-09-26 2019-10-08 Intel Corporation Low-latency accelerator
CN108196849A (zh) * 2018-01-12 2018-06-22 江苏华存电子科技有限公司 一种低延迟指令调度器
CN110618833B (zh) * 2018-06-19 2022-01-11 深圳大心电子科技有限公司 指令处理方法及存储控制器
US10776125B2 (en) 2018-12-05 2020-09-15 Apple Inc. Coprocessor memory ordering table

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR920004414B1 (ko) * 1990-06-21 1992-06-04 삼성전자 주식회사 프로세서와 코프로세서의 프로세서간 통신방식
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5764939A (en) 1995-10-06 1998-06-09 Lsi Logic Corporation RISC processor having coprocessor for executing circular mask instruction
US6105127A (en) * 1996-08-27 2000-08-15 Matsushita Electric Industrial Co., Ltd. Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
JP3189727B2 (ja) * 1997-04-15 2001-07-16 日本電気株式会社 コプロセッサ内蔵パケット型メモリlsi、それを用いたメモリシステム及びそれらの制御方法
US5923893A (en) 1997-09-05 1999-07-13 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6557065B1 (en) 1999-12-20 2003-04-29 Intel Corporation CPU expandability bus
EP1139222A1 (en) * 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
US20020010848A1 (en) 2000-05-29 2002-01-24 Shoichi Kamano Data processing system
US6754804B1 (en) 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US7237090B1 (en) 2000-12-29 2007-06-26 Mips Technologies, Inc. Configurable out-of-order data transfer in a coprocessor interface
US6684305B1 (en) * 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
GB2378271B (en) * 2001-07-30 2004-12-29 Advanced Risc Mach Ltd Handling of coprocessor instructions in a data processing apparatus
US7260424B2 (en) 2002-05-24 2007-08-21 Schmidt Dominik J Dynamically configured antenna for multiple frequencies and bandwidths
US20030225816A1 (en) * 2002-06-03 2003-12-04 Morrow Michael W. Architecture to support multiple concurrent threads of execution on an arm-compatible processor
US8090928B2 (en) 2002-06-28 2012-01-03 Intellectual Ventures I Llc Methods and apparatus for processing scalar and vector instructions
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
KR101130361B1 (ko) * 2003-02-18 2012-09-18 마이크로소프트 코포레이션 코프로세서 내의 연산을 스트림라인하는 방법
US7079147B2 (en) * 2003-05-14 2006-07-18 Lsi Logic Corporation System and method for cooperative operation of a processor and coprocessor
JP2008538620A (ja) * 2005-01-25 2008-10-30 ルーシッド インフォメイション テクノロジー リミテッド モノリシック構成のシリコン・チップ上に多数のグラフィックス・コアを用いるグラフィック処理及び表示システム
US7647475B2 (en) 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
DE102007025397B4 (de) * 2007-05-31 2010-07-15 Advanced Micro Devices, Inc., Sunnyvale System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137060A (zh) * 2011-12-30 2014-11-05 英特尔公司 高速缓存协处理单元
CN104871132A (zh) * 2012-10-18 2015-08-26 超威半导体公司 介质硬件资源分配
CN104871132B (zh) * 2012-10-18 2019-02-22 超威半导体公司 介质硬件资源分配
CN104301253A (zh) * 2014-10-21 2015-01-21 合肥星服信息科技有限责任公司 线程池和共享池组合优化大负荷通讯服务器
WO2016202001A1 (zh) * 2015-06-17 2016-12-22 华为技术有限公司 计算机指令处理方法、协处理器和系统
US10514929B2 (en) 2015-06-17 2019-12-24 Huawei Technologies Co., Ltd. Computer instruction processing method, coprocessor, and system
CN108475196A (zh) * 2015-12-02 2018-08-31 斯瓦姆64有限责任公司 数据处理
CN107368450A (zh) * 2016-05-11 2017-11-21 国际商业机器公司 实现维护被拒指令的加载/存储单元的多片处理器的操作
CN111858228A (zh) * 2019-04-26 2020-10-30 三星电子株式会社 用于存储装置中的加速内核的状态监测的方法及系统

Also Published As

Publication number Publication date
KR101507096B1 (ko) 2015-03-30
JP2012512490A (ja) 2012-05-31
US7930519B2 (en) 2011-04-19
EP2374060B1 (en) 2018-08-22
WO2010077751A2 (en) 2010-07-08
KR20110106368A (ko) 2011-09-28
JP5676470B2 (ja) 2015-02-25
CN102282540B (zh) 2015-07-01
EP2374060A2 (en) 2011-10-12
WO2010077751A3 (en) 2011-01-27
US20100153686A1 (en) 2010-06-17

Similar Documents

Publication Publication Date Title
CN102282540A (zh) 带有共享指令流的协处理器单元
US10114652B2 (en) Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US8447911B2 (en) Unordered load/store queue
TWI740844B (zh) 用於資料處理的方法、設備、及電腦程式
JP2003114798A (ja) スーパースカラープロセッシングシステムのデータ処理方法
TW202240383A (zh) 用以保護影子堆疊之處理器、方法、系統和指令
JP2018509687A (ja) ユーザレベルの分岐及び結合を行うプロセッサ、方法、システム、及び命令
JP2001067220A (ja) トラップ処理方法及び例外処理方法並びに処理装置及びマイクロプロセッサ
CN104615411A (zh) 控制寄存器对应于异质指令集架构处理器
EP2523099B1 (en) Method for selective routing of local memory accesses and device thereof
US11188341B2 (en) System, apparatus and method for symbolic store address generation for data-parallel processor
Cristal et al. Large virtual ROBs by processor checkpointing
CN105247479A (zh) 指令次序实施指令对、处理器、方法和系统
JP6911102B2 (ja) アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法
US6851044B1 (en) System and method for eliminating write backs with buffer for exception processing
US20110083030A1 (en) Cache memory control device, cache memory device, processor, and controlling method for storage device
US11194577B2 (en) Instruction issue according to in-order or out-of-order execution modes
US20230028929A1 (en) Execution elision of intermediate instruction by processor
TW201250597A (en) Emulation of execution mode banked registers
US20230409335A1 (en) Selective disable of history-based predictors on mode transitions
EP4254177A1 (en) Synchronous microthreading
EP4258109A1 (en) Synchronous microthreading
US20230315445A1 (en) Synchronous microthreading
JP2000039996A (ja) ス―パ―スカラ処理システム及びデ―タ処理方法
JP2000029698A (ja) ス―パ―スカラ処理システム及びデ―タ処理方法

Legal Events

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