CN101981543A - 用于处理一般及图形工作量的统一处理器 - Google Patents
用于处理一般及图形工作量的统一处理器 Download PDFInfo
- Publication number
- CN101981543A CN101981543A CN2008801247663A CN200880124766A CN101981543A CN 101981543 A CN101981543 A CN 101981543A CN 2008801247663 A CN2008801247663 A CN 2008801247663A CN 200880124766 A CN200880124766 A CN 200880124766A CN 101981543 A CN101981543 A CN 101981543A
- Authority
- CN
- China
- Prior art keywords
- instruction
- processor
- unit
- instruction set
- deciphered
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title abstract description 11
- 230000015654 memory Effects 0.000 claims description 69
- 230000006870 function Effects 0.000 abstract description 4
- 238000007667 floating Methods 0.000 description 62
- 238000003860 storage Methods 0.000 description 15
- 239000013598 vector Substances 0.000 description 12
- 239000011159 matrix material Substances 0.000 description 10
- 239000000463 material Substances 0.000 description 9
- 230000015572 biosynthetic process Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 239000000284 extract Substances 0.000 description 5
- 238000000034 method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000003199 nucleic acid amplification method Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 238000009415 formwork Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 206010011968 Decreased immune responsiveness Diseases 0.000 description 1
- 235000012364 Peperomia pellucida Nutrition 0.000 description 1
- 240000007711 Peperomia pellucida Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
Abstract
本发明提供一种处理器,包括一或多个控制单元、多个第一执行单元及一或多个第二执行单元。所撷取的指令中,符合处理器指令集者分派(dispatch)至该等第一执行单元。所撷取的指令中,符合第二指令集(不同于该处理器指令集)者分派至该第二执行单元。该第二执行单元可配置以运行图形运算或者其它专用的功能,如执行爪哇位码、列管码、视讯/音讯处理(video/audio processing)运算、加密/解密运算(encryption/decryption operation)等。该第二执行单元可配置在共处理器般的方式进行下运算。单一控制单元可以掌控所有该等执行单元的撷取、译码及排程。或者,多个控制单元可以各自掌控该等执行单元的不同子集。
Description
技术领域
本发明是有关在单一处理器运行通用处理及专用处理(如图形描绘)的系统及方法。
背景技术
目前,个人计算机架构已经自单一处理器(Intel 8088)系统演化成多处理器系统。其工作量也自简单的使用者程序及操作系统功能成为错综复杂的图形使用者接口、多任务操作系统(multitasking operating system)、多媒体应用(multimedia application)等等的混合。大多数的PC具有专用的图形处理器,一般称为GPU,系用以分担CPU的图形计算(graphics computation),俾便CPU能专注于需要高度控管(control-intensive)的工作。GPU一般位于PC的输入输出总线(I/O bus)。再者,GPU近期已经用于执行大量的并行计算工作(parallel computational task)。因此,现今计算机系统具有两个复杂的处理单元,各自适合不同特性的工作,各个处理单元具有其程序语法(programming paradigm)及指令集。在典型的应用场合里,该二处理单元均未被充分利用。然而,每一个处理单元都显著消耗一部分的电能以及主机板上的面积。
3D图形的计算形式不适合使用传统的X86处理器进行。因此,没有图形加速器硬件支持,一般而言,使用X86处理器进行3D图形的软件应用是非常缓慢的。透过图形硬件加速可以快速进行图形处理工作,然而,软件应用将在提出以该加速器进行图形工作的要求时面临较长的等待时间(latency),因为该等命令/数据指定之该工作必须经过该计算机的基础共享软件(software infrastructure)(包含操作系统及装置驱动器)送到该加速器。使用大量小图形工作的软件应用将花费大量的时间在此种通讯等待时间上而未能充分利用该图形加速器。
发明内容
于某些实施例中,处理器包含多个执行单元、图形执行单元(graphics execution unit;GEU)以及控制单元。该控制单元耦接该GEU及该多个执行单元,并且配置该控制单元俾便自系统内存(例如经由指令缓存(instruction cache))撷取(fetch)指令流(stream of instruction)。该指令流包含符合处理器指令集的第一指令及用于运行图形运算之第二指令。该处理器指令集系包含至少一组通用处理指令的指令集。该「第二指令」包含一或多个图形指令。图形指令之范例包括,在图元(pixel)上运行图元着色的指令、对几何图元(geometric primitive)运行几何着色之指令及对几何图元运行图元着色之指令。该控制单元系配置为:对该第一指令及该第二指令进行译码;排程已译码之该第一指令之至少一子集在该多个执行单元执行;以及排程已译码之该第二指令之至少一子集在该GEU执行。可配置该处理器俾便该第一指令及该第二指令使用统一内存空间,亦即,该第一指令所使用之地址及该第二指令所使用之地址系指相同的内存空间。于一实施例中,该处理器还包括接口单元及要求路由器。该接口单元系配置为透过该要求路由器传送已译码之该第二指令至该GEU,其中,该GEU系配置为在共处理器方式(coprocessor fashion)下进行运算。该要求路由器可安排(route)自该处理器至系统内存(或者如北桥之中间装置)之内存存取要求的路径。
于一实施例中,该处理器复包含执行爪哇位码(Java bytecode)之执行单元。于本实施例中,系配置该控制单元俾便辨认所撷取之指令流中任何的爪哇位码并且排程该爪哇位码在该执行单元执行。
于另一实施例,该处理器亦包含执行列管码之第二执行单元。于本实施例中,系配置该控制单元以辨认所撷取之指令流中任何的列管码并且排程该列管码在该第二执行单元执行。
于一实施例中,该GEU包含一或多个顶点着色器(vertex shader)、几何着色器(geometry shader)、点阵转化器(rasterizer)及图元着色器(pixel shader)。
于某些实施例中,处理器包括多个第一执行单元、一或多个第二执行单元、第一控制单元及第二控制单元。该控制单元耦接该多个第一执行单元,并且配置该控制单元俾便撷取第一指令流。该第一指令流包含符合通用处理器指令集的第一指令。配置该控制单元以对该第一指令进行译码并且排程已译码之该第一指令之至少一子集在该多个执行单元执行。该第二控制单元耦接该一或多个第二执行单元,并且配置该第二控制单元俾便撷取第二指令流。该第二指令流包含符合第二指令集的第二指令,该第二指令集不同于该处理器指令集。配置该第二控制单元以对该第二指令进行译码并且排程已译码之该第二指令之至少一子集在该一或多个第二执行单元执行。于一实施例中,该第一指令及该第二指令寻址相同的内存空间。
于一实施例中,该处理器还包括接口单元及要求路由器。该接口单元系配置为透过该要求路由器传送已译码之该第二指令至该一或多个第二执行单元。该一或多个第二执行单元可配置为如同共处理器进行运算。
于多种实施例中,该第二指另及可包含一或多个图形指令(亦即运行图形运算之指令)、爪哇位码、列管码、视讯处理指令、矩阵/向量数学指令、加密/解密(encryption/decryption)指令、音讯处理指令或者该等类型之指令之任意组合。
于一实施例中,该一或多个第二执行单元中之至少一个,包含使用于图元及顶点之顶点着色器、几何着色器、图元着色器及统一着色器。
于某些实施例中,处理器可包括控制单元、多个第一执行单元及一或多个第二执行单元。该控制单元耦接该多个第一执行单元及该一或多个第二执行单元,并且配置该控制单元俾便撷取指令流。该指令流包含符合处理器指令集的第一指令以及符合第二指令集的第二指令,该第二指令集不同于该处理器指令集。该控制单元系进一步配置为对该第一指令进行译码,排程已译码之该第一指令之至少一子集在该多个第一执行单元执行,对该第二指令进行译码,以及排程已译码之该第二指令之至少一子集在该一或多个第二执行单元执行。可配置该处理器使得该第一指令及该第二指令寻址相同的内存空间。
附图说明
配合下列图式,可以更进一步了解本发明之该等较佳实施例之叙述;
图1显示处理器之一实施例,具有单一撷取-译码-排程单元,并且配置为支持包含处理器指令集及第二指令集的统一指令集;
图2显示处理器之一实施例,具有单一撷取-译码-排程(FDS)单元,其中,若干似共处理器的执行单元藉由接口及要求路由器耦接该FDS单元;
图3显示被撷取之指令流具有来自该处理器指令集及该第二指令集(例如图形指令)之混合指令;
图4显示处理器之一实施例,具有两撷取-译码-排程单元,换言之,第一FDS单元系译码以执行单元之第一集合为对象之指令,第二单元系译码以执行单元之第二集合为对象之指令;
图5显示处理器之一实施例,具有两撷取-译码-排程单元,其中,若干似共处理器的执行单元藉由接口及要求路由器耦接该等FDS单元之一;
图6系显示该第一指令流及第二指令流各自为该二FDS单元所撷取之范例;以及
图7显示图形执行单元之一实施例。
尽管本发明容许(is susceptible to)多种修改及替代形式,其特定实施例系经由配合图式之范例呈现,并且于说明书中详加叙述。惟,应理解该等图式及随附详细叙述并非意图限制本发明于所揭露之该等特有形式,反之,其意图在于涵盖所有属于权利要求书所定义之本发明之精神与范畴的修改、等效及替代。
具体实施方式
图1显示处理器100之一实施例。处理器100包含指令缓存110、撷取-译码-排程(fetch-decode-and-schedule;FDS)单元114、执行单元122-1至122-N(N为正整数)、加载/储存单元150、寄存器档案(register file)160及数据缓存170。再者,该处理器100包含一或多个额外的执行单元,如一或多个:运行图形运算之图形执行单元(graphics execution unit;GEU)130、执行爪哇位码(Java byte code)之爪哇位码单元(JBU)134、执行列管码之列管码单元(MCU)138、运行加密/解密(encryption/decryption)运算之加密/解密单元(EDU)142、执行视讯处理运算之视讯执行单元、运行整数与/或浮点数(floating-point)矩阵及向量运算之矩阵数学单元。于部份实施例中,可以不包含该JBU 134及该MCU 138。该爪哇位码与/或该列管码亦可由该FDS单元114代管。例如,该FDS单元114可将该爪哇位码或该列管码译码为该通用处理器指令集之指令,或者将它们译码成微码例程(microcode routine)的呼叫(call)。
根据Sun Microsystems,Inc.的定义,爪哇位码是一种透过爪哇虚拟机器(Java virtual machine)执行的指令的形式。列管码是透过微软的CLR虚拟机器执行的指令的形式。
该指令缓存110储存最近自系统内存中被存取的指令的复本(系统内存位于处理器100之外)。该FDS单元114自该指令缓存110撷取指令流S。该指令流S之指令系抽取自该处理器100所支持之统一指令集U。该统一指令集包含(a)处理器指令集P之指令及(b)第二指令集Q之指令;该第二指令集Q不同于该处理器指令集P。
此处所用之词汇「处理器指令集」系包含至少如用于运行整数与浮点数算术(arithmetic)、逻辑运算、位操作、分支(branching)及内存存取之指令的一组通用处理指令集。「处理器指令集」亦可包含其它指令,例如对于整数向量与/或浮点数向量运行单指令多数据(simultaneous-instruction multiple-data;SIMD)之运算。
于部份实施例,该处理器指令集P可包含X86指令集,例如来自Intel的IA-32指令集或者AMD所定义的AMD-64TM指令集。于其它实施例,该处理器指令集可包含如MIPS处理器、SPARC处理器、ARM处理器、PowerPC处理器之处理器的指令集等。该处理器指令集P可定义于一指令集架构中。
于一实施例中,该第二指令集Q包含运行图形运算之指令集。于另一实施例,该第二指令集Q包含爪哇位码。于又一实施例,该第二指令集Q包含列管码。概言之,该第二指令集Q可包含一或多个指令集,例如一或多个:用以运行图形运算、爪哇位码、列管码、加密/解密运算、视讯处理以及矩阵及向量算术之指令集。本发明亦考虑到一或多个该等指令集的不同组合的各种实施例。
建立该处理器100之应用程序时,程序设计师可以自由地混合该处理器指令集P的指令及该第二指令集Q的指令。因此,被撷取之该指令流S可包含该处理器指令集P及该第二指令集Q的指令的混合。该指令流S中指令混合的一个范例图标于图3,于此特例中,该第二指令集Q系图形指令集。范例指令流300包含来自该处理器指令集P之指令I0、I1、I3、...以及来自该第二指令集Q之指令G0、G1、G2、...。于另一实施例中,该处理器100可实现多线程(multithreading)(或超线程(hyperthreading))。每一个线程(thread)可包含混合指令或可包含来自源指令集P及Q之一的指令。
根据上述记载,部分实施例中,该第二指令集Q可包含用以运行图形运算之指令集。例如,该第二指令集Q可包含用以运行对顶点之顶点着色之指令、对几何图元(如三角形)运行几何着色之指令、运行几何图元之描画(rasterization)之指令、及用以对图元运行图元着色之指令。于一实施例中,该第二指令集Q可包含符合Direct3D10API(「API」系「应用程序撰写接口」(application programming interface)或「应用程序发展接口」(application programmer′s interface)的缩写)之指令集。于另一实施例中,该第二指令集Q可包含符合OpenGL API之指令集。
FDS单元114将撷取之指令流译码成可执行的op(executable operation)。每一个被撷取之指令系译码成一或多个op。可透过存取微码只读内存而译码部分该等被撷取之指令(例如部分更复杂的指令)。再者,部分该等被撷取之指令可以一对一方式译码,换言之,以致该指令产生单一、该指令独有之op。例如可对部分该等被撷取之指令进行译码,使所得op与该被撷取之指令相同(或相似)。于一实施例中,可对图形指令、爪哇位、列管码、加密//解密码及浮点数指令进行译码以一对一之方式对每一个指令产生一个op。
该FDS单元114排程该等op以于该等执行单元上执行,该等执行单元包括:该等执行单元122-1至122-N、该一或多个额外执行单元以及加载/储存单元150。在包含GEU 130之该等实施例中,该FDS单元114辨认在该指令流S中的所有(属于该第二指令集Q的)图形指令并且排程该等图形指令(亦即以译码该等图形指令产生之该等op)于GEU130中执行。
于包含JBU 134之该等实施例中,该FDS单元114辨认在该被撷取之指令流S中的所有爪哇位码并且排程该爪哇位码于JBU 134中执行。
于包含MCU 138之该等实施例中,该FDS单元114辨认在该被撷取之指令流S中的所有列管码并且排程该列管码于MCU 138中执行。
于包含EDU 142之该等实施例中,该FDS单元114辨认在该被撷取之指令流S中的所有加密或解密指令并且排程该等指令于EDU 142中执行。
根据以上所述,该FDS单元114将该被撷取之指令流S的每一个指令译码成一或多个op并且排程该一或多个op在适当的执行单元执行。于部分实施例中,系配置该FDS单元114俾便超纯量运算、非依序(out-of-order;OOO)执行、多线程执行、预测式执行、分支预测或其任意组合。因此,于多个实施例中,FDS单元114可包含决定执行单元的可用性之逻辑、每当有两个或更多执行单元处于可以使用的状态,平行(于给定时脉周期)分派两个或更多op之逻辑、排程op之非依序执行并且确保op之依序撤回(in-order retirement)的逻辑、在多线程与/或多处理之间运行上下文交换(context switching)的逻辑、根据目前执行码形式,对特有之未定义指令产生陷阱的逻辑等等。
加载/储存单元150耦接数据缓存170,并且该加载/储存单元150系配置以进行内存写入及内存读取运算。对于内存写入运算,该加载/储存单元150可产生实体地址及相关写入数据。该实体地址及该写入数据可进入储存队列(未图标)俾便稍后传输至该数据缓存170。内存读取数据可自数据缓存170(或者以近来的储存而言,系自该储存队列的记录(entry))供应至加载/储存单元150。
执行单元122-1至122-N可包含一或多个整数管线(integer pipeline)及一或多个浮点数单元。该一或多个整数管线可包含运行整数运算(如加减乘除)、逻辑运算(如AND、OR及否定)、位操作(如移位或循环移位)之资源。于部份实施例中,该一或多个整数管线之资源可运行SIMD整数运算。该一或多个浮点数单元可包含运行浮点数运算之资源。于部份实施例中,该一或多个浮点数单元之资源可运行SIMD浮点数运算。
于一组实施例中,该等执行单元122-1至122-N包含一或多个SIMD单元,该SIMD单元系配置以运行整数与/或浮点数SIMD运算。
如图1所示,该等执行单元可耦接分派总线118以及结果总线155。该等执行单元自该FDS单元114透过该分派总线118收到op,并且透过该结果总线155传递执行结果给该寄存器档案160。该寄存器档案160耦接回馈路径158,该回馈路径158使得来自该寄存器档案160之数据可供该执行单元作为源操作数。旁通路径157耦接结果总线155及回馈路径之间,该旁通路径157使得该等执行结果可以不经过该寄存器档案160,因此可更为直接地作为该等执行单元之源操作数。对于一组已设计完成之寄存器,寄存器档案160可包含实体储存。
如上所述,该等执行单元122-1至122-N可包含一或多个浮点数单元。每一个浮点数单元可配置以执行浮点数指令(例如X87浮点数指令或符合IEEE 754/854的浮点数指令)。每一个浮点数单元可包含加法器单元、乘法器单元、除法/方根单元(divide/square-root unit)等。每一个浮点数单元可以类似共处理器的方式进行运算,而FDS单元114直接分派该等浮点数指令至该等浮点数单元。该浮点数单元可包含一组浮点数寄存器(未图标)的储存装置。
如上所述,该处理器100支持包含该处理器指令集P及该第二指令集Q之该统一指令集U。该统一指令集U之定义使得该处理器指令集P之指令(此后略称P指令)及该第二指令集Q之指令(此后略称Q指令)寻址相同内存空间。因此,程序设计师可以容易地建立程序,该程序的P部份可快速地与该程序的Q部份沟通。例如,P指令可写入一内存位置(或寄存器档案160之寄存器),随后Q指令可自该内存位置(或寄存器)读取。因为该程序系以单处理器(亦即,处理器100)执行,因此不需利用该操作系统之设备以建立该程序之该P部份及该Q部份之沟通。
如上所述,建立使用处理器100之程序时,该程序设计师可以随意地混合P指令及Q指令。该程序设计师可以安排来自该统一指令集U之该等指令以增加执行效率,例如尽可能保持许多的执行单元以平行的形式工作。
于一实施例中,处理器100可配置于单一集成电路上。于另一实施例中,处理器100可包含多个集成电路。
图2
图2显示处理器200之一实施例。处理器200包含要求路由器210、指令缓存214、撷取-译码-排程(FDS)单元217、执行单元220-1至220-N、加载/储存单元224、接口228、寄存器档案232以及数据缓存236。再者,该处理器200包含一或多个额外执行单元,例如一或多个:运行图形运算之图形执行单元(GEU)250、执行爪哇位码之爪哇位码单元(JBU)254、执行列管码之列管码单元(MCU)258、运行加密/解密运算之加密/解密单元(EDU)262、执行视讯处理运算之视讯执行单元以及运行整数与/或浮点数矩阵及向量运算之矩阵数学单元。于部份实施例中,并不包含该JBU单元254及该MCU单元258。反之,该爪哇位码与/或该列管码系以该FDS单元217掌控。例如,该FDS单元217可将该爪哇位码与/或该列管码译码成通用处理器指令集之指令,或者译码成微码例程的呼叫。
要求路由器210耦接指令缓存214、接口228、数据缓存236、以及该一或多个额外的执行单元(如GEU 250、JBU 254、MCU 258以及EDU 262)。再者,要求路由器210系配置以耦接一或多个外部总线。例如,可配置要求路由器210耦接前端总线以帮助沟通北桥。于部份实施例中,亦可配置该要求路由器210耦接超传输总线(Hypertransport bus;HT Bus)。
可配置要求路由器210以规划内存存取要求自指令缓存214及自数据缓存236至系统内存(例如透过该北桥)之路径、规划指令自系统内存至指令缓存214之路径,并且规划数据自系统内存至数据缓存236之路径。此外,可配置要求路由器210规划接口228及该一或多个额外执行单元如GEU 250、JBU 254、MCU 258及EDU 262之间的指令及数据之路径。该一或多个额外执行单元可以类似共处理器的方式运行。例如,一个指令可以传输至一给定的额外执行单元。该给定单元可独立执行该指令并且回传完成指示给该接口单元228。
指令缓存214接收来自FDS单元217对于指令的要求并且透过要求路由器210声明内存存取要求(对于根本上来自系统内存之指令)。该指令缓存214储存近来已经从系统内存被存取过的指令的复本。
FDS单元217撷取来自该指令缓存214的指令流,将每一个该等被撷取的指令译码成一或多个op,并且排程该等op在该等执行单元(包含执行单元220-1至220-N、加载/储存单元224及该一或多个额外的执行单元)执行。当执行单元的状态为可使用的时候,该FDS单元217透过分派总线分派该等op至该等执行单元。
于部份实施例中,处理器200系配置以支持该统一指令集U,如上所述,该统一指令集U包含该处理器指令集P及该第二指令集Q。因此该撷取指令流之指令系自该统一指令集U抽出。如上所述,该处理器指令集P包含至少一组通用处理指令。该处理器指令集P亦可包含整数与/或浮点数SIMD指令。如上所述,该第二指令集Q可包含一或多个指令集,例如一或多个:一组运行图形运算之指令、爪哇位码、列管码、一组运行加密/解密运算之指令、一组运行视讯处理运算之指令以及一组运行矩阵及向量算术之指令。该被撷取指令之流可为来自该处理器指令集P及该第二指令集Q之指令之混合,例如图3所示者。
如上所述,该FDS单元217将每一个该等被撷取的指令译码成一或多个op。部份该等被撷取的指令(例如部份更复杂的指令)可透过存取微码只读内存译码。再者,部份该等被撷取的指令可以一对一的方式译码。例如,可以将部份该等被撷取的指令译码使得产生的op相同(或相似)该被撷取的指令。于部份实施例中,任何对应于(corresponding to)该一或多个额外执行单元的指令可以一对一方式译码。于一实施例中,该等图形指令、爪哇位码、列管码、加密/解密码及浮点数指令可以一对一方式译码。
再者,如上所述,该FDS单元217排程op以于该等执行单元上执行。于包含GEU 250的该等实施例中,该FDS单元217辨认该所撷取指令流中任何的图形指令(亦即译码该等图形指令所得之该等op)并且排程该等图形指令于GEU 250执行。该FDS单元217可分派每一个图形指令至接口228,因而每一个图形指令系透过要求路由器210传送至GEU 250。于一实施例中,该GEU 250可配置以执行来自私有(private)指令源之独立、同时(concurrent)、局部(local)指令流。传送自该FDS单元217之该运算可能使得该局部指令流内的特定例程被执行。
包含JBU 254之该等实施例中,该FDS单元217辨认该所撷取指令流中任何的爪哇位码并且排程该爪哇位码于JBU 254执行。该FDS单元217可分派每一个爪哇位码至接口单元,因而每一个爪哇位系透过要求路由器210传送至JBU 254。
包含MCU 258之该等实施例中,该FDS单元217辨认该所撷取指令流中任何的列管码并且排程该列管码于MCU 258执行。该FDS单元217可分派每一个列管码指令至接口228,因而每一个列管码指令系透过要求路由器210传送至MCU 258。
包含EDU 262之该等实施例中,该FDS单元217辨认该所撷取指令流中任何的加密或解密指令并且排程该等指令于EDU 262执行。该FDS单元217可分派每一个加密或解密指令至接口228,因而每一个加密或解密指令系透过要求路由器210传送至EDU 262。
各GEU 250、JBU 254、MCU 258及EDU 262接收op、执行该等op并且送出信息到该接口单元228指示op完成。各GEU 250、JBU 254、MCU 258及EDU 262具有其内部寄存器以储存执行结果。
如上所述,该FDS单元217将该所撷取指令流的每一个指令译码成一或多个op并且排程该一或多个op于该多种执行单元执行。于部份实施例中,系配置该FDS单元217俾便超纯量运算、非依序执行(OOO)、多线程执行、预测式执行、分支预测或其任意组合。因此,该FDS单元217可包含:监视该等执行单元的可用性的逻辑、每当有两个或更多执行单元处于可以使用的状态,平行(于给定时脉周期)分派两个或更多op之逻辑、排程op之非依序执行并且确保op之依序撤回的逻辑、在多线程与/或多处理之间运行上下文交换的逻辑等。
加载/储存单元224透过加载/储存总线226耦接数据缓存236,并且配置该加载/储存单元224以运行内存写入及内存读取运算。对于内存写入运算,该加载/储存单元224可产生实体地址及该写入数据。该实体地址及该写入数据可进入储存队列(未图标)俾便稍后传输至该数据缓存236。内存读取数据可自数据缓存236(或者以近来的储存而言,系自该储存队列的记录)供应至加载/储存单元224。
该等执行单元220-1至220-N可包含一或多个整数管线及一或多个浮点数单元,例如以上关于处理器100的叙述。于部份实施例中,该等执行单元220-1至220-N可包含配置一或多个SIMD单元以运行整数与/或浮点数SIMD运算。
如图2所示,该等执行单元220-1至220-N、加载/储存单元224及接口228可耦接分派总线218及结果总线230。该等执行单元220-1至220-N、加载/储存单元224及接口228自该FDS单元217透过该分派总线218接收op,并且透过该结果总线230传递执行结果给寄存器档案232。该寄存器档案232耦接回馈路径234,该回馈路径234使得来自该寄存器档案232之数据可供该等执行单元220-1至220-N作为源操作数。旁通路径231耦接结果总线230及回馈路径234之间,该旁通路径231使得该等执行结果可以不经过该寄存器档案232,因此可更为直接地作为源操作数。对于一组已设计完成之寄存器,寄存器档案232可包含实体储存。
如上所述,该处理器200系配置为支持包含该处理器指令集P及该第二指令集Q之该统一指令集U。该统一指令集U之定义使得该处理器指令集P之指令(此后略称P指令)及该第二指令集Q之指令(此后略称Q指令)寻址相同内存空间。因此,程序设计师可以容易地建立程序,该程序的P部份可快速地与该程序的Q部份沟通。例如,P指令可写入一内存位置(或寄存器档案232之寄存器),随后Q指令可自该内存位置(或寄存器)读取。因为该程序系以单处理器(亦即,处理器200)执行,不需利用该操作系统之设备以建立该程序之该P部份及该Q部份之沟通。
如上所述,建立使用处理器200之程序时,该程序设计师可以随意地混合P指令及Q指令。该程序设计师可以安排来自该统一指令集U之该等指令以增加执行效率,例如尽可能保持许多的执行单元以平行的形式工作。
于一实施例中,处理器200可配置于单一集成电路上。于另一实施例中,处理器200可包含多个集成电路。例如,于一实施例中,要求路由器210及图2的要求路由器210左侧的该等组件可配置于单一集成电路,而该一或多个执行单元(图标于要求路由器210右侧)可配置于一或多个额外的集成电路。
图4
图4图标处理器400之一实施例。处理器400包含指令缓存410、撷取-译码-排程(FDS)单元414及418、执行单元426-1至426-N、加载/储存单元430、寄存器档案464以及数据缓存468。再者,该处理器400包含一或多个额外执行单元如一或多个:运行图形运算之图形执行单元(GEU)450、执行爪哇位码之爪哇位码单元(JBU)454、执行列管码之列管码单元(MCU)458、运行加密/解密运算之加密/解密单元(EDU)460。于部份实施例中,可以不包含该JBU 454及该MCU 458。该爪哇位码与/或该列管码亦可由该FDS单元414代管。例如,该FDS单元414可将该爪哇位码或该列管码译码成该通用处理器指令集之指令,或者将它们译码成微码例程的呼叫。
该指令缓存410储存最近自系统内存中被存取的指令的复本(系统内存位于处理器400之外)。FDS单元414自该指令缓存110撷取指令流S1,FDS单元418自该指令缓存110撷取指令流S2。于部份实施例中,该指令流S1之指令系抽取自如上所述之该处理器指令集P,而该指令流S2之指令系抽取自如上所述之该第二指令集Q。图6显示该指令流S1之一范例610及该指令流S2之一范例620。该等指令I0、I1、I2、I3...系该处理器指令集P之指令。该等指令V0、V1、V2、V3...系该第二指令集Q之指令。
如上所述,该处理器指令集P包含至少一组通用处理指令。该处理器指令集P亦可包含整数与/或浮点数SIMD指令。
如上所述,该第二指令集Q可包含一或多个指令集,例如一或多个:一组运行图形运算之指令、爪哇位码、列管码、一组运行加密/解密运算之指令、一组运行视讯处理运算之指令以及一组运行矩阵及向量算术之指令。
FDS单元414将撷取之指令流S1译码成可执行的op。每一个被撷取之指令系译码成一或多个op。可透过存取微码只读内存而译码部分该等被撷取之指令(例如部分更复杂的指令)。再者,部分该等指令可以一对一方式译码。例如可译码部分该等被撷取之指令,使所得op系与被撷取之该指令相同(或相似)。于一实施例中,可对该指令流S1中任何浮点数指令以一对一之方式译码。该FDS单元414排程该等op(产生自译码该指令流S1)于该等执行单元426-1至426-N及加载/储存单元430执行。
FDS单元418将撷取之指令流S2译码成可执行的op。该指令流S2中,每一个被撷取之指令系译码成一或多个op。该指令流S2之部分(或全部)指令可以一对一方式译码。例如可对部分该等被撷取之指令进行译码,使所得op与该被撷取之指令相同(或相似)。于一实施例中,可对该指令流S2中任何图形指令、爪哇位码、列管码或加密/解密码以一对一之方式译码。该FDS单元418排程该等op(产生自译码该流S2)于该一或更多额外执行单元(如GEU 450、JBU 454、MCU 458及EDU460)执行。
于包含GEU 450的该等实施例中,该FDS单元418辨认该所撷取指令流S2中任何的图形指令并且排程该等图形指令(亦即译码该等图形指令所得之该等op)于GEU 450执行。
包含JBU 454之该等实施例中,该FDS单元418辨认该所撷取指令流S2中任何的爪哇位码并且排程该爪哇位码于JBU 454执行。
包含MCU 458之该等实施例中,该FDS单元418辨认该所撷取指令流S2中任何的列管码并且排程该列管码于MCU 458执行。
包含EDU 460之该等实施例中,该FDS单元418辨认该所撷取指令流S2中任何的加密或解密指令并且排程该等指令于EDU 460执行。
如上所述,该等FDS单元414及418各别将该等指令流S1及S2之指令译码成op并且排程该等op在该等执行单元中适当之一者执行。于部分实施例中,系配置该FDS单元414俾便超纯量运算、非依序执行(OOO)、多线程执行、预测式执行、分支预测或其任意组合。可同样配置FDS单元418。因此,于多个实施例中,FDS单元414与/或FDS单元418可包含如下之各种组合:决定该等执行单元之可用性之逻辑、每当有两个或更多执行单元处于可以使用的状态,平行(于给定时脉周期)分派两个或更多op之逻辑、排程op之非依序执行并且确保op之依序撤回的逻辑、在多线程与/或多处理之间运行上下文交换的逻辑等。
加载/储存单元430耦接数据缓存468,并且该加载/储存单元430系配置以进行内存写入及内存读取运算。对于内存写入运算,该加载/储存单元430可产生实体地址及相关写入数据。该实体地址及该写入数据可进入储存队列(未图标)俾便稍后传输至该数据缓存468。内存读取数据可自数据缓存468(或者以近来的储存而言,系自该储存队列的记录)供应至加载/储存单元430。
执行单元426-1至426-N可包含一或多个整数管线及一或多个浮点数单元。该一或多个整数管线可包含运行整数运算(如加减乘除)、逻辑运算(如AND、OR及否定)、位操作(如移位或循环移位)之资源。于部份实施例中,该一或多个整数管线之资源可运行SIMD整数运算。该一或多个浮点数单元可包含运行浮点数运算之资源。于部份实施例中,该一或多个浮点数单元之资源可运行SIMD浮点数运算。
于一组实施例中,该等执行单元426-1至426-N包含一或多个SIMD单元,该等SIMD单元系配置以运行整数与/或浮点数SIMD运算。
如图4所示,该等执行单元426-1至426-N及加载/储存单元430可耦接分派总线420以及结果总线462。该等执行单元426-1至426-N及加载/储存单元430自该FDS单元414透过该分派总线420收到op,并且透过结果总线462传递执行结果给寄存器档案464。该一或多个额外单元(如GEU 450、JBU 454、MCU 458及EDU 460)自该FDS单元418透过该分派总线422收到op,并且透过结果总线462传递执行结果给该寄存器档案。该寄存器档案464耦接回馈路径472,该回馈路径472使得来自该寄存器档案464之数据可供该等执行单元(包含该等执行单元426-1至426-N、加载/储存单元430及该一或多个额外执行单元)作为源操作数。
旁通路径470耦接结果总线462及回馈路径472之间,该旁通路径470使得该等执行结果可以不经过该寄存器档案464,因此可更为直接地作为该等执行单元之源操作数。对于一组已设计完成之寄存器,寄存器档案464可包含实体储存。
于部分实施例中,除了该一或多个额外执行单元及加载/储存单元430之外,该FDS单元418系配置以分派op给执行单元426-1至426-N(或该等单元之一子集)。因此,除了耦接该一或多个额外执行单元及该加载/储存单元430,分派总线422可耦接一或多个该等执行单元426-1至426-N。
如上所述,该等执行单元426-1至426-N可包含一或多个浮点数单元。每一个浮点数单元可配置以执行浮点数指令(例如X87浮点数指令或符合IEEE 754/854的浮点数指令)。每一个浮点数单元可包含加法器单元、乘法器单元、除法/方根单元等。每一个浮点数单元可以类似共处理器的方式进行运算,而FDS单元418直接分派该等浮点数指令至该等浮点数单元。该浮点数单元可包含一组浮点寄存器(未图标)的储存装置。
如上所述,于部分实施例中,该处理器400支持该处理器指令集P及该第二指令集Q。注意该处理器指令集P之指令(此后略称P指令)及该第二指令集Q之指令(此后略称Q指令)寻址相同内存空间。因此,程序设计师可以容易地建立使用P指令之第一程序线程及使用Q指令之第二线程,该两线程快速地透过系统内存或内部寄存器(例如该寄存器档案464之寄存器)沟通。因为该等线程程序系以单处理器(亦即,处理器400)执行,不需利用该操作系统之设备以建立该等线程之沟通。
于一实施例中,处理器400可配置于单一集成电路上。于另一实施例中,处理器400可包含多个集成电路。例如,该一或多个执行单元可实现于一或多个集成电路。
图5
图5显示处理器500之一实施例。处理器500包含要求路由器510、指令缓存514、撷取-译码-排程(FDS)单元518及522、执行单元526-1至526-N、加载/储存单元530、接口534、寄存器档案538以及数据缓存542。再者,该处理器500包含一或多个额外执行单元如一或多个:运行图形运算之图形执行单元(GEU)550、执行爪哇位码之爪哇位码单元(JBU)554、执行列管码之列管码单元(MCU)558、运行加密/解密运算之加密/解密单元(EDU)562。于部份实施例中,可以不包含该JBU 554及该MCU 558。该爪哇位码与/或该列管码亦可由该FDS单元518代管。例如,该FDS单元518可将该爪哇位码或该列管码译码成该通用处理器指令集之指令,或者将它们译码成微码例程的呼叫。
要求路由器510耦接指令缓存514、接口534、数据缓存542、以及该一或多个额外的执行单元(如GEU 550、JBU 554、MCU 558以及EDU 562)。再者,要求路由器510系配置以耦接一或多个外部总线。例如,可配置要求路由器510耦接前端总线(frontside bus)以帮助沟通北桥。于部份实施例中,亦可配置该要求路由器耦接超传输(HT)总线。
要求路由器510系配置以规划内存存取要求自指令缓存514及自数据缓存542至系统内存(例如透过该北桥)之路径、规划指令自系统内存至指令缓存514之路径,以及规划数据自系统内存至数据缓存542之路径。此外,可配置要求路由器510规划接口534及该一或多个额外执行单元(如GEU 550、JBU 554、MCU 558及EDU 562)之间的指令及数据之路径。该一或多个额外执行单元可以类似共处理器的方式运行。
该指令缓存514储存近来从系统内存被存取过的指令的复本(系统内存位于处理器500之外)。FDS单元518自该指令缓存514撷取第一指令流,FDS单元522自该指令缓存514撷取第二指令流。于部份实施例中,该第一指令流之指令系抽取自如上所述之该处理器指令集P,而该第二指令流之指令系抽取自如上所述之该第二指令集Q。图6显示该第一指令流之一范例610及该第二指令流之一范例620。该等指令I0、I1、I2、I3...系该处理器指令集P之指令。该等指令V0、V1、V2、V3...系该第二指令集Q之指令。
如上所述,该处理器指令集P包含至少一组通用处理指令。该处理器指令集P亦可包含整数与/或浮点数SIMD指令。
如上所述,该第二指令集Q可包含一或多个指令集,例如一或多个:一组运行图形运算之指令、爪哇位码、列管码、一组运行加密及解密运算之指令、一组运行视讯处理运算之指令以及一组运行矩阵及向量算术之指令。
FDS单元518将该等所撷取之第一指令流译码成可执行的op。每一个被撷取之指令系译码成一或多个op。可透过存取微码只读内存而译码部分该等被撷取之指令(例如部分更复杂的指令)。再者,部分该等指令可以一对一方式译码。例如可译码部分该等被撷取之指令,使所得op系与被撷取之该指令相同(或相似)。于一实施例中,可对该第一指令流中任何浮点数指令以一对一之方式译码。该FDS单元518排程该等op(产生自译码该第一流)于该等执行单元526-1至526-N及加载/储存单元530执行。
FDS单元522将该等所撷取之第二指令流译码成可执行的op。该第二指令流中,每一个被撷取之指令系译码成一或多个op。该第二指令流之部分(或全部)指令可以一对一方式译码。例如,于一实施例中,可对该第二指令流中任何图形指令、爪哇位码、列管码或加密/解密码以一对一之方式译码。该FDS单元522排程该等op(产生自译码该第二指令流)于该一或更多额外执行单元(如GEU 550、JBU 554、MCU 558及EDU 562)执行。该FDS单元522透过分派总线523、接口单元534及要求路由器510分派op至该一或更多额外执行单元。
于包含GEU 550的该等实施例中,该FDS单元522辨认该第二指令流中任何的图形指令并且排程该等图形指令(亦即译码该等图形指令所得之该等op)于GEU 550执行。该FDS单元522可分派每一个图形指令至接口534,因而每一个图形指令透过要求路由器510传送至GEU550。
包含JBU 554之该等实施例中,该FDS单元522辨认该第二指令流中任何的爪哇位码并且排程该爪哇位码于JBU 554执行。该FDS单元522可分派每一个爪哇位码至接口534,因而每一个爪哇位码系透过要求路由器510传送至JBU 554。
包含MCU 558之该等实施例中,该FDS单元522辨认该第二指令流中任何的列管码并且排程该列管码于MCU 558执行。该FDS单元217可分派每一个列管码指令至接口534,因而每一个列管码指令系透过要求路由器510传送至MCU 558。
包含EDU 562之该等实施例中,该FDS单元522辨认该第二指令流中任何的加密或解密指令并且排程该等指令于EDU 562执行。该FDS单元522可分派每一个加密或解密指令至接口534,因而每一个加密或解密指令系透过要求路由器510传送至EDU 562。
各该一或多个额外执行单元(如GEU 550、JBU 554、MCU 558及EDU 562)接收op、执行该等op,并且透过要求路由器510回传信息到接口534指示该等op已完成。
如上所述,该等FDS单元518及522将该第一指令流及该第二指令流之指令译码成op并且排程该等op在该等执行单元中适当之一者执行。于部分实施例中,系配置该FDS单元518俾便超纯量运算、非依序执行、多线程执行、预测式执行、分支预测或其任意组合。可同样配置FDS单元522。因此,于多个实施例中,FDS单元518与/或FDS单元522可包含如下之各种组合:决定该等执行单元之可用性之逻辑、每当有两个或更多执行单元处于可以使用的状态,平行(于给定时脉周期)分派两个或更多op之逻辑、排程op之非依序执行并且确保op之依序撤回的逻辑、在多线程与/或多处理之间运行上下文交换的逻辑等。
加载/储存单元530耦接数据缓存542,并且该加载/储存单元530系配置以进行内存写入及内存读取运算。对于内存写入运算,该加载/储存单元530可产生实体地址及相关写入数据。该实体地址及该写入数据可进入储存队列(未图标)俾便稍后传输至该数据缓存542。内存读取数据可自数据缓存542(或者以近来的储存而言,系自该储存队列的记录)供应至加载/储存单元530。
执行单元526-1至526-N可包含一或多个整数管线及一或多个浮点数单元。该一或多个整数管线可包含运行整数运算(如加减乘除)、逻辑运算(如AND、OR及否定(negate))、位操作(如移位或循环移位)之资源。于部份实施例中,该一或多个整数管线之资源可运行SIMD整数运算。该一或多个浮点数单元可包含运行浮点数运算之资源。于部份实施例中,该一或多个浮点数单元之资源可运行SIMD浮点数运算。
于一组实施例中,该等执行单元526-1至526-N包含一或多个SIMD单元,该等SIMD单元系配置以运行整数与/或浮点数SIMD运算。
如图5所示,该等执行单元526-1至526-N及加载/储存单元530可耦接分派总线519以及结果总线536。该等执行单元526-1至526-N及加载/储存单元530自该FDS单元518透过该分派总线519收到op,并且透过结果总线536传递执行结果给寄存器档案538。该一或多个额外单元(如GEU 550、JBU 554、MCU 558及EDU 562)自该FDS单元522透过该分派总线523、接口534以及要求路由器510收到op,并且透过要求路由器510送出各个op执行完成的指示给该接口534。
该寄存器档案538耦接回馈路径546,该回馈路径538使得来自该寄存器档案538之数据可供该等执行单元(包含该等执行单元526-1至526-N、加载/储存单元530及该一或多个额外执行单元)作为源操作数。
旁通路径544耦接结果总线536及回馈路径546之间,该旁通路径544使得该等执行结果可以不经过该寄存器档案538,因此可更为直接地作为该等执行单元之源操作数。对于一组已设计完成之寄存器,寄存器档案538可包含实体储存。
于部分实施例中,除了该一或多个额外执行单元及加载/储存单元530之外,该FDS单元522系配置以分派op给执行单元526-1至526-N(或该等单元之一部分)。因此,除了加载/储存单元530及接口534,分派总线523可耦接一或多个该等执行单元526-1至526-N。
如上所述,该等执行单元526-1至526-N可包含一或多个浮点数单元。每一个浮点数单元可配置以执行浮点数指令(例如X87浮点数指令或符合IEEE 754/854的浮点数指令)。每一个浮点数单元可包含加法器单元、乘法器单元、除法/方根单元等。每一个浮点数单元可以类似共处理器的方式进行运算,而FDS单元518直接分派该等浮点数指令至该等浮点数单元。
如上所述,于部分实施例中,该处理器500支持该处理器指令集P及该第二指令集Q。注意该处理器指令集P之指令及该第二指令集Q之指令寻址相同内存空间。因此,程序设计师可以容易地建立使用P指令之第一程序线程及使用Q指令之第二线程,该两线程快速地透过系统内存或内部寄存器(例如该寄存器档案538之寄存器)沟通。因为该等线程程序系以单处理器(亦即,处理器400)执行,不需利用该操作系统之设备以建立该等线程之沟通。
于一实施例中,处理器500可配置于单一集成电路上。于另一实施例中,处理器500可包含多个集成电路。例如,该一或多个执行单元可实现于一或多个集成电路。
如上所述,于部分实施例中,任何(或全部)处理器100、200、400及500可包含可执行符合工业标准图形API如DirectX之给定版本之指令之图形执行单元(GEU)。该API标准的日后更新可以软件实现。(对比于传统实务上所费不赀地重新设计图形加速器及其主机板内建GPU以支持新版本的图形API)
处理器100、200、400及500的部分实施例中,指令及数据系储存于相同内存。于其它实施例中,它们系储存于不同的内存。
图形执行单元
上述该图形执行单元之种种实施例(例如GEU 130、GEU 250、GEU450及GEU 550)可以图7之GEU 700实现。GEU 700系配置以接受该图形指令集之该等指令并且运行图形运算以响应该等图形指令。于一实施例中,系形成GEU 700如同包含输入单元715、顶点着色器720、几何着色器725、描画单元735、图元着色器740以及输出/融合(merge)单元745之管线。该GEU 700亦可包含流输出单元(stream output unit)730。
该输入单元715系配置以接收输入数据流,并且将该等数据如接收之该等图形指令之指示以组合成图元(如三角形、线及点)。该输入单元715供应该等图元给该图形管线的其余部分。
该顶点着色器720系配置以根据所接收之图形指令以进行顶点之运算。例如,可程序化该顶点着色器720对顶点进行转换(transformation)、贴皮(skinning)及光源(lighting)运算。于部分实施例中,该顶点着色器720对于供给的每一个输入顶点产生单一输出顶点。于部分实施例中,一或多个顶点着色器程序系供应作为所接收之该等图形指令之部分,而该顶点着色器720系配置以接收该一或多个顶点着色器程序,并且在顶点上执行该一或多个顶点着色器程序。
该几何着色器725根据该等所得之图形指令之指示处理全体图元(例如三角形、线或点)。对于每一个输入图元,该几何着色器可抛弃(discard)该输入图元或产生一或更多新图元作为输出。于一实施例中,该几何着色器亦系设置以运行几何增幅(amplification)或衰减(de-amplification)。于部分实施例中,该几何着色器725系设置以接收一或多个几何着色器程序,该一或多个几何着色器程序系作为所接收之该等图形指令之一部分,并且设置该几何着色器725以于图元执行该一或多个几何着色器程序。
该流输出单元730系设置以输出图元数据作为自该图形管线至系统内存之数据流。此输出特征系为该等所接收之图形指令所控制。送至内存之该数据流可回传至该图形管线作为输入数据(如有需要)。
该描画单元735系配置以自几何着色器725接收图元,并且根据该等图形指令之指示描画(rasterize)该等图元成为图元。描画系有关在跨越该给定图元之图元位置对所选定之顶点构件(component)进行内插(interpolate)。描画动作亦可包含将该等图元夹在(clip)该视野范围(view frustum),运行透视分割(perspective divide)运算及映像(map)顶点至视埠(viewport)。
该图元着色器单元740产生每一图元(per-pixel)之数据(例如颜色)予一给定图元之每一图元。例如该图元着色器单元740可应用于每一图元之光源(lighting)。于部分实施例中,该图元着色器740系配置以接收一或多个图元着色器程序,该一或多个图元着色器程序作为该等所接收之图形指令之一部分,并且该图元着色器740在每一个图元执行该一或多个图元着色器程序。该描画单元可引起该一或多个图元着色器程序之执行作为该描画处理的一部份。
该输出单元745系配置以结合(combine)一或多个型式的输出数据(例如图元着色器值、深度信息及模板(stencil)信息)与目标缓冲(target buffer)之该等内容及该等深度/模板缓冲以产生最后的管线输出。于部分实施例中,该GEU 700亦可包含材质取样器(texture sampler)737及材质缓存738。该材质取样器737系配置以透过材质缓存738自系统内存存取材质图元(texel)数据并且于该等材质图元数据运行材质内插(如MIP MAP数据)以支持材质映像。以该材质取样器产生之该内插数据可供给该图元着色器740。
于部分实施例中,可配置该GEU 700以进行平行运算。例如,该GEU 700可管线化以更有效率地运算顶点流、图元流及图元流。再者,该GEU 700内的多种单元可配置以运算多种向量操作数。例如,于一实施例中,该GEU 700可支持具64元素之向量(64-element vector),每一个元素是单精度浮点数(32位)值(quantity)。
多核心
该等叙述于此之任何处理器实施例可配置多个核心。例如,处理器100可包含多个核心,每一个核心包含如图1所示之该等元素。每一个核心可具有其专属的(dedicated)材质内存及L1缓存。处理器200、300及400可配置类似的多个核心。使用多核心架构,日后仅以增加处理器的核心数目即可增进效能。
任意该等多核心实施例均可能发生因为制造过程的瑕疵导致处理器的一或多个核心发生缺陷。因此,该处理器可包含使任何该处理器内被判定为具有缺陷的核心失能的逻辑,使得该处理器可利用其它良好的核心运行。
需注意部份实施例中实现该多核心之方式,其多个核心可共享一或多个处理器的一部分。
于部份之实施例中,于多线程多核心处理器(multi-threaded multi-core processor)上,藉由平衡执行通用处理工作的线程及执行图形描绘工作的线程的数量,可达成通用处理及图形描绘之间的负载平衡(load balancing)。因此,该程序设计师可更明确地控制该负载平衡。因为多线程之软件设计可倾向减少OOO处理的机会的数量,相较于例如AMD生产的Opteron处理器,可配置每一个核心具有较为简化之OOO处理复杂度。每一个核心可配置以在多个线程之间切换。该线程切换趋向隐藏内存及指令存取之等待时间。
于部份实施例中,该处理器内的RAM或者该处理器内的缓存内存位置(L1缓存位置)可映像至该内存空间的某部份以帮助核心之间的沟通。因此,于一核心执行之线程可写入保留地址范围内的地址。该写入数据随后被储存于相应的RAM位置或缓存内存位置。于另一核心(或者于相同核心)执行之另一线程可随后自该相同地址读取。因此,线程与线程之间及核心与核心之间,可在没有该关于存取系统内存的冗长等待时间下进行沟通。
于部份实施例中,可使用一组行为类似FIFO、在多核心处理器内的非内存映像之位置,俾便进行多核心处理器内线程之间的沟通。该指令集可包含若干指令,其中每一个指令倚赖该FIFO作为其隐含的(implied)源或目标。例如,该指令集可包含隐含地指定自该FIFO加载数据之加载指令。如果此时该FIFO是空的,可暂停(suspend)目前之该线程或者可声明陷阱。同样的,该指令集可包含隐含地指定储存数据至该FIFO之储存指令。如果此时该FIFO是空的,可暂停目前之该线程或者可声明陷阱。
Claims (10)
1.一种处理器,包括:
多个执行单元;
图形执行单元GEU;以及
第一单元,其耦接该图形执行单元GEU及该多个执行单元,并且配置为撷取指令流,其中,该指令流包含符合处理器指令集的第一指令以及用于运行图形运算的第二指令,其中,该第二指令包含至少一个在图元上运行图元着色的指令,其中,该第一单元配置为:对该第一指令及该第二指令进行译码;排程已译码的该第一指令的至少一个子集在该多个执行单元执行;以及排程已译码的该第二指令的至少一个子集在该图形执行单元GEU上执行。
2.如权利要求1所述的处理器,其中,该第一指令及该第二指令寻址相同的内存空间。
3.如权利要求1所述的处理器,还包括:接口单元及要求路由器,其中该接口单元配置为通过该要求路由器传送已译码的该第二指令至该图形执行单元GEU,其中,该图形执行单元GEU配置为在共处理器方式下进行运算。
4.如权利要求1所述的处理器,其中,该第二指令包含对几何图元运行几何着色的指令。
5.如权利要求1所述的处理器,其中,该第二指令包含对几何图元运行图元着色的指令。
6.一种处理器,包括:
多个第一执行单元;
一个或多个第二执行单元;
第三单元,其耦接该多个第一执行单元,并且配置为撷取第一指令流,其中,该第一指令流包含符合处理器指令集的第一指令,其中,配置该第三单元以对该第一指令进行译码并且排程已译码的该第一指令的至少一个子集在该多个执行单元执行;以及
第四单元,其耦接该一个或多个第二执行单元,并且配置为撷取第二指令流,其中,该第二指令流包含符合第二指令集的第二指令,该第二指令集不同于该处理器指令集,其中,配置该第四单元以对该第二指令进行译码并且排程已译码的该第二指令的至少一个子集在该一个或多个第二执行单元执行。
7.如权利要求6所述的处理器,其中,该第一指令及该第二指令寻址相同的内存空间。
8.如权利要求6所述的处理器,还包括:接口单元及要求路由器,其中该接口单元配置为通过该要求路由器传送已译码的该第二指令至该一个或多个第二执行单元,其中,该一个或多个第二执行单元配置为如同协处理器进行运算。
9.一种处理器,包括:
多个第一执行单元;
一个或多个第二执行单元;以及
控制单元,其耦接该多个第一执行单元及该一个或多个第二执行单元,并且配置为撷取指令流,其中,该指令流包含符合处理器指令集的第一指令以及符合第二指令集的第二指令,该第二指令集不同于该处理器指令集,其中,该控制单元进一步配置为对该第一指令进行译码,排程已译码的该第一指令的至少一个子集在该多个第一执行单元执行,对该第二指令进行译码,以及排程已译码的该第二指令的至少一个子集在该一个或多个第二执行单元执行。
10.如权利要求9所述的处理器,还包括:接口单元及要求路由器,其中该接口单元配置为通过该要求路由器传送已译码的该第二指令至该一个或多个第二执行单元,其中,该一个或多个第二执行单元配置为以协处理器方式进行运算。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/962,778 | 2007-12-21 | ||
US11/962,778 US20090160863A1 (en) | 2007-12-21 | 2007-12-21 | Unified Processor Architecture For Processing General and Graphics Workload |
PCT/US2008/013304 WO2009082428A1 (en) | 2007-12-21 | 2008-12-03 | Unified processor architecture for processing general and graphics workload |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101981543A true CN101981543A (zh) | 2011-02-23 |
Family
ID=40289447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801247663A Pending CN101981543A (zh) | 2007-12-21 | 2008-12-03 | 用于处理一般及图形工作量的统一处理器 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20090160863A1 (zh) |
JP (1) | JP2011508918A (zh) |
KR (1) | KR20100110831A (zh) |
CN (1) | CN101981543A (zh) |
DE (1) | DE112008003470T5 (zh) |
GB (1) | GB2468461A (zh) |
TW (1) | TW200929063A (zh) |
WO (1) | WO2009082428A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102903001A (zh) * | 2012-09-29 | 2013-01-30 | 上海复旦微电子集团股份有限公司 | 指令的处理方法和智能卡 |
CN103649922A (zh) * | 2011-07-19 | 2014-03-19 | 高通股份有限公司 | 着色器操作的同步 |
WO2016078069A1 (en) * | 2014-11-21 | 2016-05-26 | Intel Corporation | Apparatus and method for efficient graphics processing in virtual execution environment |
CN106447035A (zh) * | 2015-10-08 | 2017-02-22 | 上海兆芯集成电路有限公司 | 具有可变率执行单元的处理器 |
CN112540796A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 一种指令处理装置、处理器及其处理方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
GB2458487B (en) * | 2008-03-19 | 2011-01-19 | Imagination Tech Ltd | Pipeline processors |
US8638850B2 (en) | 2009-05-06 | 2014-01-28 | Advanced Micro Devices, Inc. | Execution units for context adaptive binary arithmetic coding (CABAC) |
KR101292670B1 (ko) * | 2009-10-29 | 2013-08-02 | 한국전자통신연구원 | 벡터 프로세싱 장치 및 방법 |
US8669990B2 (en) * | 2009-12-31 | 2014-03-11 | Intel Corporation | Sharing resources between a CPU and GPU |
KR101869939B1 (ko) | 2012-01-05 | 2018-06-21 | 삼성전자주식회사 | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 |
CN102930322B (zh) * | 2012-09-29 | 2015-08-26 | 上海复旦微电子集团股份有限公司 | 智能卡和指令的处理方法 |
US9471372B2 (en) | 2013-03-21 | 2016-10-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and device for scheduling communication schedulable unit |
US9665975B2 (en) * | 2014-08-22 | 2017-05-30 | Qualcomm Incorporated | Shader program execution techniques for use in graphics processing |
KR101646194B1 (ko) * | 2014-12-31 | 2016-08-05 | 서경대학교 산학협력단 | 멀티 스레드 그래픽 처리 장치 |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10417734B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
CN107133045A (zh) * | 2017-05-09 | 2017-09-05 | 上海雪鲤鱼计算机科技有限公司 | 跨平台游戏引擎多线程通信方法、装置、存储介质及设备 |
CN117311817B (zh) * | 2023-11-30 | 2024-03-08 | 上海芯联芯智能科技有限公司 | 一种协处理器控制方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5909572A (en) * | 1996-12-02 | 1999-06-01 | Compaq Computer Corp. | System and method for conditionally moving an operand from a source register to a destination register |
US5991865A (en) * | 1996-12-31 | 1999-11-23 | Compaq Computer Corporation | MPEG motion compensation using operand routing and performing add and divide in a single instruction |
US7162620B2 (en) * | 2002-03-13 | 2007-01-09 | Sony Computer Entertainment Inc. | Methods and apparatus for multi-processing execution of computer instructions |
-
2007
- 2007-12-21 US US11/962,778 patent/US20090160863A1/en not_active Abandoned
-
2008
- 2008-12-03 KR KR1020107016294A patent/KR20100110831A/ko not_active Application Discontinuation
- 2008-12-03 WO PCT/US2008/013304 patent/WO2009082428A1/en active Application Filing
- 2008-12-03 GB GB1011501A patent/GB2468461A/en not_active Withdrawn
- 2008-12-03 JP JP2010539420A patent/JP2011508918A/ja active Pending
- 2008-12-03 DE DE112008003470T patent/DE112008003470T5/de not_active Ceased
- 2008-12-03 CN CN2008801247663A patent/CN101981543A/zh active Pending
- 2008-12-16 TW TW097148880A patent/TW200929063A/zh unknown
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103649922A (zh) * | 2011-07-19 | 2014-03-19 | 高通股份有限公司 | 着色器操作的同步 |
CN103649922B (zh) * | 2011-07-19 | 2017-02-15 | 高通股份有限公司 | 着色器操作的同步方法及装置 |
CN102903001A (zh) * | 2012-09-29 | 2013-01-30 | 上海复旦微电子集团股份有限公司 | 指令的处理方法和智能卡 |
CN102903001B (zh) * | 2012-09-29 | 2015-09-30 | 上海复旦微电子集团股份有限公司 | 指令的处理方法和智能卡 |
WO2016078069A1 (en) * | 2014-11-21 | 2016-05-26 | Intel Corporation | Apparatus and method for efficient graphics processing in virtual execution environment |
GB2538119A (en) * | 2014-11-21 | 2016-11-09 | Intel Corp | Apparatus and method for efficient graphics processing in virtual execution environment |
US9996892B2 (en) | 2014-11-21 | 2018-06-12 | Intel Corporation | Apparatus and method for efficient graphics processing in a virtual execution environment |
GB2538119B (en) * | 2014-11-21 | 2020-05-20 | Intel Corp | Apparatus and method for efficient graphics processing in virtual execution environment |
CN106447035A (zh) * | 2015-10-08 | 2017-02-22 | 上海兆芯集成电路有限公司 | 具有可变率执行单元的处理器 |
CN106447035B (zh) * | 2015-10-08 | 2019-02-26 | 上海兆芯集成电路有限公司 | 具有可变率执行单元的处理器 |
CN112540796A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 一种指令处理装置、处理器及其处理方法 |
CN112540796B (zh) * | 2019-09-23 | 2024-05-07 | 阿里巴巴集团控股有限公司 | 一种指令处理装置、处理器及其处理方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2011508918A (ja) | 2011-03-17 |
GB2468461A (en) | 2010-09-08 |
GB201011501D0 (en) | 2010-08-25 |
US20090160863A1 (en) | 2009-06-25 |
KR20100110831A (ko) | 2010-10-13 |
DE112008003470T5 (de) | 2010-10-28 |
WO2009082428A1 (en) | 2009-07-02 |
TW200929063A (en) | 2009-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101981543A (zh) | 用于处理一般及图形工作量的统一处理器 | |
US10896479B2 (en) | Handling pipeline submissions across many compute units | |
US10242419B2 (en) | Compiler optimization to reduce the control flow divergence | |
US20170300361A1 (en) | Employing out of order queues for better gpu utilization | |
JP2011518398A (ja) | 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ | |
US10089115B2 (en) | Apparatus to optimize GPU thread shared local memory access | |
EP4220405A1 (en) | Workload scheduling and distribution on a distributed graphics device | |
WO2018052606A2 (en) | Apparatus and method for optimized ray tracing | |
CN110187977A (zh) | 用于基于软件提示和硬件线程切换来降低寄存器区块冲突的系统和方法 | |
US10908939B2 (en) | Efficient fine grained processing of graphics workloads in a virtualized environment | |
US20180113713A1 (en) | Compiler-based instruction scoreboarding | |
US10754651B2 (en) | Register bank conflict reduction for multi-threaded processor | |
WO2016160226A1 (en) | Value sorter | |
US10699362B2 (en) | Divergent control flow for fused EUs | |
US10409571B1 (en) | Apparatus and method for efficiently accessing memory when performing a horizontal data reduction | |
US10796472B2 (en) | Method and apparatus for simultaneously executing multiple contexts on a graphics engine | |
CN111798362A (zh) | 硬件索引映射机制 | |
EP3513373B1 (en) | Load-balanced tessellation distribution for parallel architectures | |
WO2019055174A1 (en) | METHOD AND APPARATUS FOR EFFICIENTLY PROCESSING DERIVED UNIFORM VALUES IN A GRAPHIC PROCESSOR | |
US20180121202A1 (en) | Simd channel utilization under divergent control flow | |
WO2017074377A1 (en) | Boosting local memory performance in processor graphics | |
WO2017222663A1 (en) | Progressively refined volume ray tracing | |
CN111724294A (zh) | 分布式拷贝引擎 | |
CN116069459A (zh) | 使用可变命令列表的可编程gpu命令缓冲器 | |
US9542192B1 (en) | Tokenized streams for concurrent execution between asymmetric multiprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110223 |