CN113821260B - 用于处理器中的电路、操作处理器中的电路的方法和介质 - Google Patents

用于处理器中的电路、操作处理器中的电路的方法和介质 Download PDF

Info

Publication number
CN113821260B
CN113821260B CN202110655648.2A CN202110655648A CN113821260B CN 113821260 B CN113821260 B CN 113821260B CN 202110655648 A CN202110655648 A CN 202110655648A CN 113821260 B CN113821260 B CN 113821260B
Authority
CN
China
Prior art keywords
input
output
circuit
state
processing channel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110655648.2A
Other languages
English (en)
Other versions
CN113821260A (zh
Inventor
K·C·洛维斯
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN113821260A publication Critical patent/CN113821260A/zh
Application granted granted Critical
Publication of CN113821260B publication Critical patent/CN113821260B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/3824Operand accessing
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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
    • G06F9/3889Concurrent 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/0008Arrangements for reducing power consumption
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Image Processing (AREA)

Abstract

本发明涉及用于处理器中的电路、操作处理器中的电路的方法和介质。一种用于处理器中的电路。所述电路包括:包括第一逻辑单元的第一处理通道;包括第二逻辑单元的第二处理通道;以及复用电路。复用电路包括:输入复用器,所述输入复用器被布置成在第一状态和相应第二状态之间切换,在第一状态中,第一逻辑单元的输入耦接到第一处理通道的输入线,在相应第二状态中,第一逻辑单元的输入转而耦接到第二处理通道的输入线;以及输出复用器,所述输出复用器被布置成在第一状态和第二状态之间切换,在第一状态中,第二处理通道的输出线耦接到第二逻辑单元的输出,在第二状态中,第二处理通道的输出线转而耦接到第一逻辑单元的输出。

Description

用于处理器中的电路、操作处理器中的电路的方法和介质
技术领域
本发明涉及不同处理通道之间的复用。
背景技术
处理器是用于执行机器代码指令的装置。给定处理器被配置成识别指令类型的特定预定义集合,称为处理器的指令集。每个指令类型由相应的操作码和零或更多操作数字段定义。处理器被配置成从存储器获取指令以用于执行。处理器可以包括许多不同种类的子单元,以用于根据正在执行的指令的类型,执行不同类别的操作。例如,处理器可以包括用于响应于算术指令类型而执行整数算术运算的整数算术逻辑单元,用于响应于浮点指令类型而执行浮点运算的浮点算术逻辑单元,以及用于响应于加载和存储指令类型而执行存储器访问操作的加载存储单元。
例如,在精简指令集计算机(RISC)中,加载指令需要至少两个操作数:源存储器地址和在处理器的寄存器文件中指定目的地寄存器的标识符。执行时,加载指令会作用于加载存储单元,以将来自源地址的值加载到目的地寄存器中。取决于指令的类型,逻辑指令可以获取不同数目的操作数。例如,诸如加或乘指令等的逻辑指令可以采用三个操作数:两个在寄存器文件中指定两个相应的源寄存器,一个在寄存器文件中指定目的地寄存器。当执行时,逻辑指令作用于相关逻辑单元,例如整数或浮点算术逻辑单元,以便对指定源寄存器中的值执行相关逻辑操作,并将结果置于指定目的地寄存器中。要执行的操作以及触发哪个逻辑单元以执行此操作将取决于相关指令的操作码。将逻辑操作的结果存储回到存储器涉及存储指令。存储指令需要至少两个操作数:一个指定寄存器文件中的源寄存器,一个指定存储器中的目的地地址。当执行时,存储指令作用于加载-存储单元以将指定源寄存器中的值存储到目的地存储器地址。
可以针对特定应用定制诸如图形处理单元(GPU)等专用处理器的一种方式是将一种或多种专用指令类型包括在处理器的指令集中。此类指令类型将执行比响应相关类型的单个机器代码指令的单个实例而触发的简单加载、存储、加或乘等更复杂的操作。例如,这可以是特定的数学运算,例如在相关应用中经常出现的乘法累加(MAC)。相同的操作可以通过通用加和乘指令等的组合来构建,但是与使用更专业化指令集的指令相比,这会降低代码密度。
在一些种类的处理器中,例如矢量处理器、SIMD(单指令多数据)或SIMT(单指令多线程)处理器中,处理器包括多个并行处理通道。所述并行处理通道中的每一个可以包括相同种类的逻辑单元中的至少一个的相应实例。例如,每个通道可以包括相应的算术逻辑单元(ALU),例如整数算术逻辑单元或浮点算术逻辑单元。响应于在单个提取操作中提取的相同指令的相同实例的执行,触发不同并行通道中的一些或所有逻辑单元以对不同数据执行相同操作,例如对指定为操作源的矢量寄存器中的矢量的不同元素执行相同操作。例如,每个ALU可操作以执行乘法累加(MAC),也称为乘加。这需要两个乘法输入(有时称为乘数和被乘数)和加数输入(也称为累加数),并且将加数添加到两个乘法输入的乘积。MAC可以实施为融合的乘法加法,由此在一个融合步骤中执行乘法累加。每个并行逻辑单元的MAC的结果可以放置在目的地矢量寄存器的相应元件中。
这种处理器的示例性应用是在图形处理中发现的,其中经常需要并行地对不同像素执行相同的操作。例如,GB 2,553,010(Nield等人)公开了一种具有四个并行ALU的处理器,其用于针对2x2集群中的四个相邻像素或图像片段执行相同操作的不同实例。响应于相同MAC指令的相同实例,每个ALU可以在其相应输入值(例如,像素值)上并行执行相应的乘法累加。
在大多数操作中,每个通道的相应ALU或处理单元仅在该通道自己的输入数据上操作。然而,Nield还公开了包括复用电路,其允许将来自一个通道的输入线的输入值交换到另一个通道的逻辑单元。这可以用于实现例如响应于梯度指令而执行的梯度操作。例如,这可以是确定x方向上的相邻像素之间的梯度的ds/dx操作,或确定y方向上的相邻像素之间的梯度的ds/dy操作。可以响应于处理器的指令集中的专用DSDX或DSDY指令而执行这些操作。
发明内容
本文中认识到,向Nield提供替代设计将是合乎需要的。例如,本文认识到,Nield所公开的复用电路比它可能的情况更复杂,并且与Nield中使用的方法相比,还有机会节省功耗。
根据本文公开的一个方面,提供了一种用于处理器中的电路,所述电路包括第一处理通道、第二处理通道、复用电路和控制电路。所述第一处理通道包括:相应第一输入线,第二输入线和输出线,以及第一逻辑单元,所述第一逻辑单元被配置成对第一逻辑单元的相应第一输入和第二输入执行操作,以在第一逻辑单元的相应输出处产生相应结果,其中,第一逻辑单元的第一输入耦接到第一处理通道的第一输入线。所述第二处理通道包括:相应第一输入线,第二输入线和输出线,以及第二逻辑单元,所述第二逻辑单元被配置成对第二逻辑单元的相应第一输入和第二输入执行操作,以在第二逻辑单元的相应输出处产生相应结果,其中,第二逻辑单元的第一输入耦接到第二处理通道的第一输入线。所述复用电路至少包括第一输入复用器和第一输出复用器。所述第一输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,第一逻辑单元的第二输入耦接到第一处理通道的第二输入线,在所述相应第二状态中,第一逻辑单元的第二输入转而耦接到第二处理通道的第一输入线。所述第一输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,第二处理通道的输出线耦接到第二逻辑单元的输出,在所述相应第二状态中,第二处理通道的输出线转而耦接到第一逻辑单元的输出。所述电路还包括控制电路,所述控制电路被布置成响应于正执行指令而控制复用电路。
所公开的电路基于以下认识:当执行Nield中的梯度操作时,每个ALU始终必须执行其自身的有关操作(例如,梯度操作)的实例,以便在其相应输出处产生相应值,即使这些操作中的一些彼此完全相同。即,在两个ALU间复制相同的操作。例如,参考Nields的图4和图5c至图5d,为了执行细ds/dx梯度操作,顶部两个ALU都执行从像素1减去像素0,并且底部两个ALU都执行从像素2减去像素3(基于在x方向上从一个像素到下一像素的梯度在小距离上大致恒定的近似)。然而,本文认识到,这种重复不是必要的。本文公开的电路实际上仅使用一对逻辑单元(例如ALU)中的一个来执行给定操作,并且使用输出处的复用电路将一个逻辑单元的输出路由到两个相应处理通道的输出线。这将通过将本文给出的图1和图3c至图3d(对应于Nield的图4和图5a至图5d)与本公开的图4和图5a至图5b(示出本文公开的方法的实施例)进行比较而很快得到更详细的说明。
可以利用所公开的原理以便提供至少两个可能优点中的一个或两个。首先,它可以节省复用电路,因为无需将输入信号路由到逻辑单元的输入,逻辑单元无论如何只会执行重复计算。其次,它可以省电,因为成对逻辑单元中的一个不需要执行重复操作。
例如,在实施例中,所述控制电路可以被布置成在第一模式与第二模式之间切换,在所述第一模式中,第一输入复用器和输出复用器各自被设置成相应第一状态,在所述第二模式中,第一输入复用器和输出复用器各自被设置成相应第二状态,其中,第一处理通道的输出线在第一模式和第二模式两者中都耦接到第一处理通道的输出。
在一些此类实施例中,控制电路可以被配置成当处于第二模式时将第二处理单元设置成空闲、功率减小状态。
通过将一个逻辑单元的输出路由至两个通道的输出线,并将未使用的逻辑单元设置成空闲状态,因此与如在Nield中公开的在一对逻辑单元间重复操作的方法相比,有可能省电。这可以包括例如对未使用的逻辑单元进行时钟选通,或者向未使用的逻辑单元赋予例如0的固定输入。
在实施例中,所述电路还可以包括第三处理通道,并且复用电路可以包括第二输入复用器和第二输出复用器。在这样的实施例中,所述第三处理通道包括:相应第一输入线,第二输入线和输出线,以及第三逻辑单元,所述第三逻辑单元被配置成对第三逻辑单元的相应第一输入和第二输入执行操作,以在第三逻辑单元的相应输出处产生相应结果,其中,第三逻辑单元的第一输入耦接到第三处理通道的第一输入线。所述第二输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,第三逻辑单元的第二输入耦接到第三处理通道的第二输入线,在所述相应第二状态中,第三逻辑单元的第二输入转而耦接到第一处理通道的第一输入线。所述第二输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,第一处理通道的输出线耦接到第一逻辑单元的输出,在所述相应第二状态中,第一处理通道的输出线转而耦接到第三逻辑单元的输出。
在实施例中,所述控制电路可以被配置成在所述第一模式、所述第二模式与第三模式之间切换;其中,在所述第一模式中,第二输入复用器和输出复用器各自被设置成相应第一状态,在所述第二模式中,第二输出复用器被设置成相应第一状态,并且在所述第三模式中,第一输出复用器被设置成相应第一状态,并且第二输入复用器和输出复用器各自被设置成相应第二状态。
与Nield中使用的方法相比,这样减少了所需的复用电路的量。因为第一逻辑单元的输入线只需要被路由到第三逻辑单元的输入,而不是第二逻辑单元的输入,所以当前公开的方法只需要在每个逻辑单元的输入处有一个两路复用器,在每个逻辑单元的输出处有一个两路复用器。而在Nield中,逻辑单元输入的一个输入上需要两路复用器,而同一逻辑单元的另一个输入上需要三路复用器。例如,将本公开的图4和图5a至图5b中的第二逻辑单元102与其在图1和图3c至图3d中(Nield中的图4和图5c至图5d)的对应物进行比较。
在一些此类实施例中,所述控制电路可以被配置成在处于第二模式时将第三逻辑单元设置成空闲、功率减小状态;并且在处于第三模式时将第一逻辑单元设置成空闲、功率减小状态。
在其它实施例中,所述电路可以包括第四处理通道;并且复用电路可以包括第三输入复用器、第四输入复用器、第三输出复用器和第四输出复用器。在这样的实施例中,所述第四处理通道包括:相应第一输入线,第二输入线和输出线,以及第四逻辑单元,所述第四逻辑单元被配置成对第四逻辑单元的相应第一输入和第二输入执行操作,以在第四逻辑单元的相应输出处产生相应结果,其中,第四逻辑单元的第一输入耦接到第四处理通道的第一输入线。所述第三输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,第二逻辑单元的第二输入耦接到第二处理通道的第二输入线,在所述相应第二状态中,第二逻辑单元的第二输入转而耦接到第四处理通道的第一输入线。所述第四输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,第四逻辑单元的第二输入耦接到第四处理通道的第二输入线,在所述相应第二状态中,第四逻辑单元的第二输入转而耦接到第三处理通道的第一输入线。此外,所述第三输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,第四处理通道的输出线耦接到第四逻辑单元的输出,在所述相应第二状态中,第四处理通道的输出线转而耦接到第二逻辑单元的输出。并且所述第四输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,第三处理通道的输出线耦接到第三逻辑单元的输出,在所述相应第二状态中,第三处理通道的输出线转而耦接到第四逻辑单元的输出。
在实施例中,在第一模式中,所述第三输入复用器和所述第四输入复用器以及所述第三输出复用器和所述第四输出复用器可以各自被设置成相应第一状态,在第二模式中,第四输入复用器和第四输出复用器各自被设置成相应第二状态,而第三输出复用器被设置成相应第一状态,在第三模式中,第三输入复用器和第三输出复用器各自被设置成相应第二状态,而第四输出复用器被设置成相应第一状态。
在一些此类实施例中,控制电路可以被配置成在第三模式将第四逻辑单元设置成空闲、功率减小状态。
所述电路可以包含在集成电路上的硬件中。
根据本文公开的另一方面,可以提供一种操作本文公开的任何实施例的电路的对应方法。
根据另一方面,可以提供一种在集成电路制造系统处制造电路的方法。可以提供一种集成电路定义数据集,当其在集成电路制造系统中被处理时配置所述系统以制造电路。可以提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有电路的计算机可读描述,所述计算机可读描述当在集成电路制造系统中处理时,使得所述集成电路制造系统制造包含本文公开的电路的集成电路。
可以提供一种集成电路制造系统,包括:非暂态计算机可读存储介质,其上存储有电路的计算机可读描述;布局处理系统,其被配置成处理所述计算机可读描述,以便生成包含所述电路的集成电路的电路布局描述;以及集成电路生成系统,其被配置成根据所述电路布局描述制造所述电路。
可以提供一种用于执行本文中描述的任一方法的计算机程序代码。可以提供非暂态计算机可读存储介质,在其上存储有计算机可读指令,所述计算机可读指令在计算机系统处执行时使计算机系统执行本文中描述的任何方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
提供此发明内容仅仅是为了说明本文公开的一些概念及其可能的实施方式。发明内容部分所述的并非全部内容都是为了限制本公开的范围。相反,本公开的范围仅受权利要求的限制。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是用于处理器的处理块中的已知电路的示意性框图,
图2示意性地示出了四个相邻像素的集群,
图3a示意性地示出了当执行用于确定x方向上的梯度的粗梯度指令时图1的电路的操作,
图3b示意性地示出了当执行用于确定y方向上的梯度的粗梯度指令时图1的电路的操作,
图3c示意性地示出了当执行用于确定x方向上的梯度的细梯度指令时图1的电路的操作,
图3d示意性地示出了当执行用于确定y方向上的梯度的细梯度指令时图1的电路的操作,
图4是根据本文公开的实施例的用于处理器的执行单元中的电路的示意性框图,
图5a示意性地示出了第二操作模式中的图4的电路的操作,例如,用于执行确定x方向上的梯度的梯度指令,
图5b示意性地示出了第三操作模式中的图4的电路的操作,例如,用于执行确定y方向上的梯度的梯度指令,
图6a示意性地示出了第四操作模式中的图4的电路的操作,例如,用于执行在x方向上交换值的交换指令,
图6b示意性地示出了第四操作模式中的图4的电路的操作,例如,用于执行在y方向上交换值的交换指令,
图7是本文公开的示例性方法的流程图,
图8是其中实施有图形处理系统的计算机系统的示意性框图,
图9是用于生成包含图形处理系统的集成电路的集成电路制造系统的示意性框图,
图10是根据本文公开的替代实施例的用于处理器的执行单元中的电路的示意性框图,
图11是根据本文公开的另一替代实施例的用于处理器的执行单元中的电路的示意性框图,
图12是根据本文公开的实施例的四个逻辑单元(例如ALU)的配置的高级示意图。
附图示出各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其它形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施例,并且对所公开的实施例的各种修改对于所属领域的技术人员而言将是显而易见的。现在仅通过示例的方式来描述实施例。
本文件的图1复制了先前在GB 2,553,010(Nield等人)中公开的现有电路100的示意图。(这对应于Nield中的图4。)电路100被设计成用于诸如GPU(图形处理单元)的处理器的处理块中。
Nield的电路100包括多个并行处理通道P,在此情况下,包括四个处理通道P0……P3。每个处理通道P0……P3包括分别标记为101、102、103、104的相应逻辑单元。例如,这些单元中的每一个可以包括相应的算术逻辑单元(ALU)。每个处理通道P0……P3包括相应的第一输入线和第二输入线:第一通道P0的相应第一输入线105a和第二输入线105b;第二通道P1的相应第一输入线106a和第二输入线106b;第三通道P2的相应第一输入线107a和第二输入线107b;以及第四通道P3的相应第一输入线108a和第二输入线108b。每个相应的逻辑单元101……104至少还包括逻辑单元本身的相应第一和第二输入,以及逻辑单元的相应输出(即,逻辑单元的输入和输出端子)。
电路100还包括复用电路113-116c。这包括:第一处理通道P0的三路复用器113,第二处理通道P1的两路复用器114a和三路复用器114c,第三处理通道P2的两路复用器115a和三路复用器115c,以及第四处理通道P3的四路复用器116a和三路复用器116c。
第一处理通道P0的第一输入线105a耦接到第一逻辑单元101的第一输入。第一处理通道P0的三路复用器113被布置成选择性地将第一逻辑单元101的第二输入耦接到以下中的任何选定一个:第一通道P0的第二输入线105b、第二通道P1的第一输入线106a或第三通道P2的第一输入线107a。
第二处理通道P1的两路复用器114a被布置成选择性地将第二逻辑单元102的第一输入耦接到以下中的任何选定一个:第二通道P1的第一输入线106a或第一通道P0的第一输入线105a。第二处理通道P1的三路复用器114c被布置成选择性地将第二逻辑单元102的第二输入耦接到以下中的任何选定一个:第二通道P1的第二输入线106b、第三通道P2的第一输入线107a或第四通道P3的第一输入线108a。
第三处理通道P2的两路复用器115a被布置成选择性地将第三逻辑单元103的第一输入耦接到以下中的任何选定一个:第三通道P2的第一输入线107a或第一通道P0的第一输入线105a。第三处理通道P2的三路复用器被布置成选择性地将第三逻辑单元103的第二输入耦接到以下中的任何选定一个:第三通道P2的第二输入线107b、第二通道P1的第一输入线106a或第四通道P3的第一输入线108a。
第四处理通道P3的四路复用器116a被布置成选择性地将第四逻辑单元104的第一输入耦接到以下中的任何选定一个:第四通道P3的第一输入线108a、第一通道P0的第一输入线105a、第二通道P1的第一输入线106a或第三通道P2的第一输入线107a。第四处理通道P3的三路复用器116c被布置成选择性地将第四逻辑单元104的第二输入耦接到以下中的任何选定一个:第四通道P3的第二输入线108b、第二通道P1的第一输入线106a或第三通道P2的第一输入线107a。
每个逻辑单元101……104可以操作以响应于处理器执行一个或多个类型的逻辑指令而执行一种或多种类型的操作。所支持的操作至少包括减法操作,并且优选地还包括乘法累加(MAC)操作。在支持MAC的情况下,每个逻辑单元101……104包括至少三个相应的输入:两个相应的乘法输入(乘数和被乘数输入)和加数输入(也称为累加数输入)。在这种情况下,如上所述的每个逻辑单元的第一输入是相应乘法输入中的一个,并且如上所述的第二输入是相应的加数输入。每个逻辑单元的两个乘法输入可操作以接收两个相应的乘法值,有时称为被乘数和乘数。加数输入可操作以接收加数值(累加数值)。当执行乘法累加(MAC)时,逻辑单元确定两个乘法值的乘积并将加数加到乘积。这种逻辑单元也可以用于执行减法。根据实施方式,这可以通过例如通过将乘法输入中的一个设置为-1,或通过将逻辑切换到替代模式来完成,在替代模式中,它从加数输入减去乘法输入中的一个(并且忽略另一个乘法输入),而不是执行MAC。
在第一正常操作模式中,复用器113-116c简单地被设置成将其自身的相应处理通道P0……P3的相应第一和第二输入线耦接到该通道的相应逻辑单元101……104的第一输入和第二输入。因此,第一通道P0的输入线105a、105b耦接到第一逻辑单元101的输入;并且输入线106a、106b耦接到第二逻辑单元102的输入;等等。这种模式可以用于使每个逻辑单元101……104能够对在其自身相应通道P0……P3的相应第一和第二输入线上接收的相应值执行乘法累加(MAC)操作(也使用每个逻辑单元的相应其它乘法输入,图1中未示出)。
然而,在另外的操作模式中,图1的电路100中的复用器113-116c可以被设置成执行交叉(cross-over)操作,由此一个通道的输入线被路由到另一个通道的逻辑单元。这些操作包括梯度操作,用于确定不同处理通道的输入线上输入的值之间的差。
图2示出了图1的电路100(和图4的电路400的,稍后将更详细地论述)的示例性应用。图2示出了四个相邻像素的2x2块:左上像素201TL、右上像素201TR、左下像素201BL和右下像素201BR。此处的“右”表示更大的x坐标,“左”表示更小的x坐标,而“上”表示更小的y坐标,而“下”表示更大的y坐标。顶部像素201TL和201TR在块中的最顶端,但不一定是图像或屏幕区域作为整体的最顶端;同样,右侧像素201TR和201BR是块中最右的,但同样不一定是图像或屏幕作为整体的最右的。四个像素201TL、201TR、201BL、201BR彼此相邻,这意味着在所讨论的操作中,在处理像素所在的任何分辨率下都具有x和/或y坐标的相继值。
每个像素201TL、201TR、201BL和201BR分别具有相应的关联信号值s0、s1、s2、s3。这些是对像素执行的操作的输入值。例如,每个输入信号可以是像素的强度,或诸如RGB或YUV的颜色空间中的特定颜色通道的值,或阴影或纹理值等。对于要执行的给定类型的操作(例如,梯度操作),信号s0……s3通常都表示彼此相同种类的量(例如,强度或纹理等)。
来自每个像素201TL、201TR、201BL和201BR的相应输入信号s0……s3与并行处理通道P0……P3中的不同相应一个相关联。可以在处理通道P0……P3中的不同相应一个的输入线之一(例如,相应的第一输入线105a、106a、107a、108a)上输入每个信号s0……s3。在第一正常(非交叉)模式中,每个逻辑单元101……104对其自身相应处理通道P0……P3的输入信号值s0……sP3进行操作,而不对其它输入信号值进行操作。例如,它可以将像素值乘以相应的乘数值(未示出),并将乘积与在相应的第二输入线105b、106b、107b、108b上接收的加数输入进行累加。
注意:虽然通过像素的示例进行了描述,但是输入信号s0……s3可以同样是表示图像片段的信号。如本领域技术人员将熟悉的,在典型的图形流水线中,应用程序输出根据多个方面,例如三角形小面而定义的3D模型。在相继流水线级中,这些可以被平移、旋转并且施加光照效果。在另一相继级中,将小面从3D空间投影到屏幕区域的2D空间,并且可以剔除位于屏幕区域之外的一些小面。在另一流水线级中,小面的2D投影被光栅化,意味着将它们映射到像素网格上。在这一级,像素网格上的点可以被称为图像片段。x-y平面中的片段和像素之间存在一对一映射。然而,不同小面的一些片段可能在z方向上前后彼此相继。因此,另一个流水线级将执行隐藏表面移除(也称为z测试或深度测试),以确定哪些片段在其它片段后面,以便剔除这些片段。隐藏表面移除之后的剩余点是屏幕上待点亮的实际像素。还可以根据流水线级的顺序对片段或像素执行其它流水线级,例如纹理化和着色。根据实施方式,可以对片段或像素执行本文中任何地方所公开的图形操作,并且本文中任何地方描述的信号s0……s3可以表示与片段相关联的像素值或值。为了方便起见,可以通过举例根据像素来描述实施例,但应了解,这并非限制性的,并且任何所公开的实施例可以同等地应用于片段。还应注意,图形流水线中的级可以以不同顺序实施。
图3a示出了图1的电路100如何可以用于在x方向上执行粗梯度操作,例如执行来自处理器的指令集的粗ds/dx指令。此指令在本文中可以称为DSX,但这并不意图将本公开的范围限制于任何特定指令集的任何特定指令。复用电路113-116c被设置成将s0路由到每个逻辑单元101……104的第一输入,并且将s1路由到每个逻辑单元101……104的第二输入。每个逻辑单元101……104被设置成一种状态,其中其执行从其第二输入减去其相应的第一输入,而不是MAC(例如,通过使第一输入反号(negating)并将另一个乘法输入(未示出)设置为1;或简单地将逻辑单元设置为其中它忽略另一个乘法输入并执行减法运算而非MAC的模式)。因此,逻辑单元101……104中的每一个执行s1-s0并将此结果输出为与相应处理通道P0……P3相关联的相应像素(或片段)201TL、201TR、201BL、201BR的梯度。这样做出了2x2块内每个像素处的梯度大致相同的近似。还应注意,dx的量值是1,因此确定ds/dx相当于在相关方向(在此情况下,正x方向)上确定ds(减法)。
图3b示出了图1的电路100如何可以用于在y方向上执行粗梯度操作,例如执行来自处理器的指令集的粗ds/dy指令。此指令在本文中可以称为DSY,但这并不意图将本公开的范围限制于任何特定指令集的任何特定指令。复用电路113-116c被设置成将s0路由到每个逻辑单元101……104的第一输入,并且将s2路由到每个逻辑单元101……104的第二输入。每个逻辑单元101……104被设置成其执行从其第二输入减去其相应第一输入(例如,同样通过使第一输入反号)的状态。因此,逻辑单元101……104中的每一个都执行s2-s0。这样再次做出了每个像素处的梯度大致相同的近似。
图3c示出了图1的电路100如何可以用于在x方向上执行细梯度操作,例如执行来自处理器的指令集的细ds/dx指令。此指令在本文中可以称为DSDX,但这并不意图将本公开的范围限制于任何特定指令集的任何特定指令。复用电路113-116c被设置成将s0路由到第一和第二逻辑单元101、102的每一个的第一输入,并且将s2路由到第三和第四逻辑单元103、104的每一个的第一输入。复用电路113-116c还将s1路由到第一和第二逻辑单元101、102的每一个的第二输入,并且将s3路由到第三和第四逻辑单元103、104的每一个的第二输入。每个逻辑单元101……104被设置成其执行从其第二输入减去其相应第一输入(例如,如上所述)的状态。因此,第一和第二逻辑单元101、102中的每一个执行s1-s0并将此结果分别输出为其相应像素(或片段)201TL、201TR的梯度。第三和第四逻辑单元中的每一个执行s3-s2并将此结果分别输出为其相应像素(或片段)201BL、201BR的梯度。由此做出以下近似,即梯度对于x方向上的两个相邻像素是大致相同的,即s|x-s|(x-1)近似等于s|(x+1)-s|x(其中“|”表示“评估于(evaluated at)”)。换句话说,x方向上的梯度被建模为在x方向上是伪恒定的,即在x方向上从一个像素(或片段)到下一个像素的较小距离上是大致相同的。因此,在x方向上,s0的梯度被视为与s1的梯度相同(s0的ds/dx大致等于s1的ds/dx)。在s2和s3之间作必要的修改,做出相同的近似。
图3d示出了图1的电路100如何可以用于在y方向上执行细梯度操作,例如执行来自处理器的指令集的细ds/dy指令。此指令在本文中可以称为DSDY,但这并不意图将本公开的范围限制于任何特定指令集的任何特定指令。复用电路113-116c被设置成将s0路由到第一和第三逻辑单元101、103的每一个的第一输入,并且将s1路由到第二和第四逻辑单元102、104的每一个的第一输入。复用电路113-116c还将s2路由到第一和第三逻辑单元101、103的每一个的第二输入,并且将s3路由到第二和第四逻辑单元102、104的每一个的第二输入。每个逻辑单元101……104再次被设置成其执行从其第二输入减去其相应第一输入的状态。因此,第一和第三逻辑单元101、103中的每一个执行s2-s0并将此结果分别输出为其相应像素(或片段)201TL、201BL的梯度。第二和第四逻辑单元102、104中的每一个执行s3-s1并将此结果分别输出为其相应像素(或片段)201TR、201BR的梯度。由此做出以下近似,即梯度对于y方向上的两个相邻像素是大致相同的,即s|y-s|(y-1)近似等于s|(y+1)-s|y。
注意,每个相应像素的梯度值需要由与相应像素相关联的每个处理通道输出。给定像素的梯度或与给定像素相关联的梯度是本文用于表示信号s在相应像素的x和y坐标处的梯度的简写。如果在x或y方向上以1个像素为步长计算梯度,则dx或dy的量值为1,并且确定梯度相当于确定正x或y方向上的差。
在本文中指出后,可以看到,在图3c中,第一逻辑单元101和第二逻辑单元102两者各自执行相同操作s1-s0的重复实例。第三逻辑单元和第四逻辑单元两者各自执行相同操作s3-s2的重复实例。可以在图3d中在y方向上作必要的修改后进行类似观察。
图4公开了通过在处理通道P0……P3的输出线而不是仅在输入线上应用复用中的一些来避免这种重复的电路400的示例。
电路400包括多个并行处理通道P,在此示例中,包括四个处理通道P0……P3。每个处理通道P0……P3同样包括分别标记为101、102、103、104的相应逻辑单元。例如,这些通道中的每一个可以包括相应的算术逻辑单元(ALU),例如整数算术逻辑单元或浮点算术逻辑单元。如图1中那样,每个处理通道P0……P3包括相应的第一输入线和第二输入线:第一通道P0的相应第一输入线105a和第二输入线105b;第二通道P1的相应第一输入线106a和第二输入线106b;第三通道P2的相应第一输入线107a和第二输入线107b;以及第四通道P3的相应第一输入线108a和第二输入线108b。每个处理通道P0……P3还包括相应的输出线425、426、427、428。每个相应的逻辑单元101……104至少还包括逻辑单元本身的相应第一输入A和第二输入C,以及逻辑单元的相应输出Q(即,逻辑单元的输入和输出端子)。
每个处理通道P0……P3的第一输入线耦接到相应逻辑单元101……104的相应第一输入A0……A3。亦即,第一处理通道P0的第一输入线105a耦接到第一逻辑单元101的第一输入A0。第二处理通道P1的第一输入线106a耦接到第二逻辑单元102的第一输入A1。第三处理通道P2的第一输入线107a耦接到第三逻辑单元103的第一输入A2。第四处理通道P3的第一输入线108a耦接到第四逻辑单元104的第一输入A3。
电路400进一步包括复用电路410i-iv、420i-iv,用于选择性地将输入线耦接到逻辑单元101……104的输入,并且将处理通道的输出线选择性地耦接到逻辑单元的输出。这使得每个处理通道P0……P3的输入线能够以某些组合选择性地路由到逻辑单元101、102、103、104中的不同逻辑单元的输入。
输入复用器包括第一输入复用器410i、第二输入复用器410ii、第三输入复用器410iii和第四输入复用器410iv。输出复用器包括第一输出复用器420i、第二输出复用器420ii、第三输出复用器420iii和第四输出复用器420iv。电路400进一步包括控制电路450,其耦接到逻辑单元中的每一个的相应控制输入;并且耦接到复用器410i-iv、420i-iv中的每一个的相应控制输入。控制电路450被布置成分别将相应的控制信号M_in0……M_in3和M_out0……M_out3供应到输入复用器410i……410iv和输出复用器420i……420iv中的每一个,以切换复用器。控制电路450还被布置成将相应的控制信号Ctrl0……Ctrl3分别供应到每个逻辑单元(例如ALU)101……104,以便控制逻辑单元101……104自身,例如,以(例如在MAC和减法之间)切换模式和/或将它们中的一些例如通过对单元进行时钟选通,在未使用时设置为空闲、低功率状态。(注意,在实施例中,Ctrl0……Ctrl3中的每一个可以表示用于不同控制目的的多个个别组成信号,例如用于控制模式的相应模式信号和用于在空闲状态和操作状态之间切换单元的相应功率状态信号)。或者,例如通过将相应单元的数据输入A、B、C设置成静态值例如0,可以创建功率降低状态。
第一输入复用器410i被布置成选择性地将第一逻辑单元101的第二输入C0耦接到以下中的任何选定一个:第一处理通道P0的第二输入线105b或第二处理通道P1的第一输入线106a。所述选择是经由从控制电路450接收的相应控制信号M_in0进行的。
第二输入复用器410ii被布置成选择性地将第三逻辑单元103的第二输入C2耦接到以下中的任何选定一个:第三处理通道P2的第二输入线107b或第一处理通道P0的第一输入线105a。所述选择是经由从控制电路450接收的相应控制信号M_in2进行的。
第三输入复用器410iii被布置成选择性地将第二逻辑单元102的第二输入C1耦接到以下中的任何选定一个:第二处理通道P1的第二输入线106b或第四处理通道P3的第一输入线108a。所述选择是在从控制电路接收的相应控制信号M_in1控制下进行的。所述选择是经由从控制电路450接收的相应控制信号M_in1进行的。
第四输入复用器410iv被布置成选择性地将第四逻辑单元104的第二输入C3耦接到以下中的任何选定一个:第四处理通道P3的第二输入线108b或第三处理通道P2的第一输入线107a。所述选择是经由从控制电路450接收的相应控制信号M_in3进行的。
第一输出复用器420i被布置成选择性地将第二处理通道P1的输出线426耦接到以下中的任何选定一个:第二处理单元102的输出Q1,或第一逻辑单元101的输出Q0。所述选择是经由从控制电路450接收的相应控制信号M_out1进行的。
第二输出复用器420ii被布置成选择性地将第一处理通道P0的输出线425耦接到以下中的任何选定一个:第一逻辑单元101的输出Q0,或第三逻辑单元103的输出Q2。所述选择是通过从控制电路450接收的相应控制信号M_out0进行的。
第三输出复用器420iii被布置成选择性地将第四处理通道P3的输出线428耦接到以下中的任何选定一个:第四逻辑单元104的输出Q3,或第二逻辑单元102的输出Q1。所述选择是通过从控制电路450接收的相应控制信号M_out3进行的。
第四输出复用器420iv被布置成选择性地将第三处理通道P2的输出线427耦接到以下中的任何选定一个:第三逻辑单元103的输出Q2,或第四逻辑单元104的输出Q3。所述选择是通过从控制电路450接收的相应控制信号M_out3进行的。
注意:在本文中,在说到复用器选择性地将电路中的一个点耦接到电路中的两个(或更多)其它点中的一个点时,这意味着其选择仅耦接到那些其它点中的一个点而不是两个点(或不超过一个点)。这适用于逻辑单元输入耦接到多个输入线中的任一个,以及输出线耦接到多个可能逻辑单元输出中的任一个。而且,本文中的术语“耦接”意指可操作地耦接,其涵盖直接连接(其间仅有导体)或经由一个或多个中间部件耦接的可能性。在实施例中,本文任何地方的术语“耦接”可以替换为“连接”或“直接连接”。
每个逻辑单元101……104可以操作以响应于处理器执行一个或多个类型的指令(例如,整数或浮点指令)而执行一种或多种类型的操作。所支持的操作至少包括减法操作,并且在实施例中还包括乘法累加(MAC)操作。在支持MAC的情况下,每个逻辑单元101……104包括至少三个相应的输入:两个相应的乘法输入A、B(乘数和被乘数输入)和加数输入C(也称为累加数输入)。在这种情况下,出于本发明的目的,每个逻辑单元的“第一”输入是相应乘法输入中的一个(在所示示例中是A,但在其它实施方式中可以是B);并且“第二”输入是相应的加数输入C。每个逻辑单元的两个乘法输入A、B可操作以接收两个相应乘法值,有时称为被乘数和乘数。加数输入C可操作以接收加数值(累加数值)。当执行乘法累加(MAC)时,逻辑单元确定在其乘法输入A、B处接收到的两个乘法值的乘积,将在加数输入C处接收到的加数加到所述乘积,并且在相应输出Q处输出结果。换句话说,它执行Q=AB+C。在实施例中,这可以实施为融合乘法加法(FMA)。
用于执行MAC的逻辑单元也可以用于执行减法。取决于实施方式,这可以通过多种方式来完成。例如,一种方式是通过将乘法输入中的一个设置为-1(例如,-1*A+C=C-A)。或者另一种方式是通过将逻辑单元切换到替代模式,在替代模式中,它从加数输入减去乘法输入中的一个并且简单地忽略另一个乘法输入,而不是执行MAC。又一种可能性是,当A具有如浮点格式的符号-量值表示时,颠倒A的符号,随后进行加法。
在实施例中,控制电路450可以耦接到每个逻辑单元101……104的相应控制输入,被布置成从控制电路450接收相应的控制信号Ctrl0……Ctrl3。这使控制电路450能够控制ALU 101……104自身,此外能够经由信号M_in0……3和M_out0……3控制复用电路410、420。例如,这可以供控制电路450用以控制逻辑单元101……104以在例如MAC和减法的不同类型的逻辑操作之间切换;和/或将逻辑单元101……104中的未使用的逻辑单元切换到降低的功率状态。
每个处理通道P0……P3的第一输入线105a、106a、107a、108a被布置成接收相应的输入信号s0……s3。在实施例中,这些信号中的每一个可以是与相邻像素或片段的2x2块中的不同相应像素或图像片段201TL、201TR、201BL、201BR相关联的信号,如先前关于图2所述。例如,每个信号可以表示块200中像素(或片段)中的不同相应一个的强度、颜色通道值、纹理或阴影值。
每个处理通道P0……P3的第二输入线105b、106b、107b、108b可以被布置成接收与相应信号相关联的另一个值,例如,累加数。
每个处理通道P0……P3的输出线425、426、427、428被布置成提供相应结果r0……r3作为相应处理通道的输出。在实施例中,由每个通道P0……P3输出的相应结果r0……r3与块中的像素(或片段)201TL、201TR、201BL、201BR中的不同相应一个相关联。
在第一正常操作模式中,控制电路450设置输入复用器410i-iv以将每个处理通道P0……P3的相应第一输入线和第二输入线耦接到所述相同通道的相应逻辑单元101……104的相应第一输入A和第二输入C。并且输出复用器简单地被设置成将每个通道P0……P3的相应输出线耦接到该通道的相应逻辑单元101……104的输出Q0……Q3。因此,第一通道P0的输入线105a、105b耦接到第一逻辑单元101的输入A0、C0;并且输入线106a、106b耦接到第二逻辑单元102的输入A1、C1;并且第三通道P2的输入线107a、107b耦接到第三逻辑单元103的输入A2、C2;并且输入线108a、108b耦接到第四逻辑单元104的输入A3、C3。在这种模式中,第一通道P0的输出线425耦接到第一逻辑单元101的输出Q0,第二通道P1的输出线426耦接到第二逻辑单元102的输出Q1,第三通道P2的输出线427耦接到第三逻辑单元103的输出Q2,第四通道的输出线428耦接到第四逻辑单元104的输出Q3。复用器由控制电路450设置成这种配置,所述控制电路通过其相应的控制输入M_in0……M_in3、M_out0……M_out3将输入和输出复用器410i-iv、420i-iv设置成相关设置。
在实施例中,这种模式可以用于使每个逻辑单元101……104能够对在其自身相应通道P0……P3的相应第一和第二输入线上接收的相应值执行乘法累加(MAC)操作(也使用每个逻辑单元的相应其它乘法输入B)。控制电路450可以经由供应到其相应控制输入的控制信号Ctrl0……3控制逻辑单元101……104中的每一个,以进入其对其相应输入A、B、C执行MAC操作并在其相应输出Q处输出结果的状态。
在实施例中,控制电路450可以被配置成响应于MAC指令的实例的执行而在第一模式中操作电路400,所述MAC指令是处理器指令集的专用机器代码指令。
图5a示出了可以如何以第二替代操作模式操作图4的电路以确定不同处理通道P0……P3的输入信号s0……s3之间的差。在实施例中,这可以用于在x方向上执行细梯度操作,例如执行DSDX指令。图5a中的粗体线示出了信号被复用器路由的位置。
在第二操作模式中,控制电路450控制第一输入复用器410i(经由M_in0)以将第一逻辑单元101的第二输入C0耦接到第二处理通道P1的第一输入线106a,以便接收s1。控制电路450还(经由M_in3)控制第四输入复用器410iv以将第四逻辑单元104的第二输入C3耦接到第三处理通道P2的第一输入线107a,以便接收s2。第二复用器410ii和第三复用器410iii的状态在此模式中并不重要。
此外,在第二模式中,控制电路450(经由M_out1)控制第一输出复用器420i以将第二处理通道P1的输出线426耦接到第一逻辑单元101的输出Q0。控制电路450还(经由M_out0)控制第二输出复用器420ii以将第一处理通道P0的输出线425耦接到第一逻辑单元101的输出Q0。在此第二模式中,控制电路450还(经由M_out3)控制第三输出复用器420iii以将第四处理通道P3的输出线428耦接到第四逻辑单元104的输出Q3。它还(经由M_out2)控制第四输出复用器420iv以将第三处理通道P2的输出线427耦接到第四逻辑单元104的输出Q3。
因此,来自第二处理通道P1的第一输入线106a的信号s1被路由到第一处理通道P0的逻辑单元101;来自第三处理通道P2的第一输入线107a的信号s2被路由到第四处理通道P3的逻辑单元104。第一处理通道P0中第一逻辑单元101的输出Q0被路由到输出线425、426,其供应第一通道P0和第二通道P1两者(例如,对应于顶行像素201TL、201TR两者)的结果r0、r1。第四处理通道P3中第四逻辑单元104的输出Q3被路由到输出线427、428,其供应第三通道P2和第四通道P3两者(例如,对应于底行像素201BL、201BR两者)的结果r2、r3。
在第二操作模式中,控制电路450还控制第一逻辑单元101以切换到其执行从其第二输入C0减去其第一输入A0的状态。这可以通过如下方式完成:经由供应到其相应控制输入的信号Ctrl0控制逻辑单元101,以切换到其忽略其它乘法输入(例如,被乘数)B并使第一输入A反号以便从C中减去A的模式。或者,可以通过例如将B设置为-1并将逻辑单元101留在MAC模式中来实现相同的结果(因为-1*A+C=C-A)。
控制电路450还控制第四逻辑单元104以切换到其执行从其第一输入A3减去其第二输入C3的状态。这可以通过如下方式完成:(经由Ctrl3)控制逻辑单元104,到达其忽略其它乘法输入(例如,被乘数)B并使第二输入C反号以便从A中减去C的模式。或者,可以通过例如将B设置为-1,执行MAC并将输出Q反号来实现相同的结果(因为-(-1*A+C)=A-C)。
因此,图4的电路400利用了逻辑单元执行C-A或A-C的能力。
在第二模式中,第一逻辑单元101执行s1-s0,并且输出复用电路420i、420ii将输出Q0路由到第一处理通道P0和第二处理通道P1两者的输出线425、426,以递送两个通道的相应结果r0、r1。第四逻辑单元104执行s3-s1,并且输出复用电路420iii、420iv将输出Q3路由到第三处理通道P2和第四处理通道P3两者的输出线427、428,以递送这两个通道的相应结果r2、r3。第二逻辑单元102和第三逻辑单元103不在第二模式中使用。
由于不需要将信号路由到未使用的逻辑单元102、103,因此图4的电路400仅需要每个通道两个两路复用器(每个通道一个两路输入复用器,以及每个通道一个两路输出复用器)。与图1的电路100相比,这减少了电路的量,其中第二到第四通道P1……P3中的每一个需要一个输入上的两路复用器和另一个输入上至少三路复用器。注意,三路复用器基本上是仅由两个两路复用器形成的。
此外,在实施例中,控制电路450被配置成当电路400处于第二模式时(例如,分别经由Ctrl1和Ctrl2)控制第二逻辑单元102和第三逻辑单元103以进入低功率状态。换句话说,它们被去活到它们不执行逻辑操作的状态,以便比执行逻辑操作时消耗更少的功率。然而,控制逻辑单元102、103的内部模式以将其置于实现至少一些功率节省的低功率状态并非必要。在替代实施例中,还可以通过向每个未使用的逻辑单元(在此情况下,第二逻辑单元102和第三逻辑单元103)提供静态输入,例如0,来节省功率,所述静态输入仍将节省一些功率。
此外,图4的电路400未被配置成能够执行粗梯度操作DSX或DSY。这省去了第四通道P3中的四路复用器116c的需要。
在示范性应用中,第二模式可以用于确定与像素(或片段)201中的每一个相关联的x方向上的梯度。即,在2x2块200中的每个像素(或片段)的点处,信号s在x方向上的近似梯度。
这再次使用了梯度在基本增量上是伪恒定的假设,即s|x–s|(x-1)大约等于s|(x+1)–s|x。因此,对于第一通道P0上的左上像素201TL和第二通道P1上的右上像素201TR两者,输出相同的梯度。并且对于第三通道P2上的左下像素201BL和第四通道P3上的右下像素201BR两者,输出相同的梯度。
在实施例中,控制电路450可以被配置成在第二模式中操作电路400,以便执行x方向梯度指令的实例,所述梯度指令是处理器指令集的专用机器代码指令。例如,这可以是DSDX指令。
图5b示出了图4的电路可以如何在另外的第三替代操作模式中操作。在实施例中,这可以用于在y方向上执行细梯度操作,例如执行DSDY指令。图5b中的粗体线再次示出信号在此特定模式中由复用器路由的位置。
在第三操作模式中,控制电路450(经由M_in1)控制第三输入复用器410iii以将第二逻辑单元102的第二输入C1耦接到第四处理通道P0的第一输入线108a,以便接收s3。控制电路450还(经由M_in2)控制第二输入复用器410ii以将第三逻辑单元103的第二输入C2耦接到第一处理通道P0的第一输入线105a,以便接收s0。第一复用器410i和第四复用器410iv的状态在第三模式中并不重要。
此外,在第三模式中,控制电路450(经由M_out1)控制第一输出复用器420i以将第二处理通道P1的输出线426耦接到第二逻辑单元102的输出Q1。控制电路450还(经由M_out0)控制第二输出复用器420ii以将第一处理通道P0的输出线425耦接到第三逻辑单元103的输出Q2。在此第三模式中,控制电路450还(经由M_out3)控制第三输出复用器410iii以将第四处理通道P3的输出线428耦接到第二逻辑单元102的输出Q1。它还(经由M_out2)控制第四输出复用器420iv以将第三处理通道P2的输出线427耦接到第三逻辑单元103的输出Q2。
因此,来自第一处理通道P0的第一输入线105a的信号s0被路由到第三处理通道P2的逻辑单元103;来自第四处理通道P3的第一输入线108a的信号s3被路由到第二处理通道P1的逻辑单元102。第二处理通道P1中第二逻辑单元102的输出Q1被路由到输出线426、428,其供应第二通道P1和第四通道P3两者(例如,对应于右侧像素201TR、201BR两者)的结果r1、r3。第三处理通道P2中第三逻辑单元103的输出Q2被路由到输出线425、427,其供应第一通道P0和第三通道P2两者(例如,对应于左侧像素201TL、201BL两者)的结果r0、r2。
在第三操作模式中,控制电路450还控制第二逻辑单元102以切换到其执行从其第二输入C减去其第一输入A的状态。这可以通过如下方式完成:经由供应到其相应控制输入的信号Ctrl1控制逻辑单元102,以切换到其忽略其它乘法输入(例如,被乘数)B并使第一输入A反号以便从C中减去A的模式。或者,例如,可以通过将B设置为-1并将逻辑单元102留在MAC模式中来实现相同的结果。
控制电路450还控制第三逻辑单元103以切换到其执行从其第一输入A2减去其第二输入C2的状态。这可以通过如下方式完成:(经由Ctrl2)控制逻辑单元103,到达其忽略其它乘法输入(例如,被乘数)B并使第二输入C反号以便从A中减去C的模式。或者,可以通过例如将B设置为-1,执行MAC并将输出Q反号来实现相同的结果。
在第三模式中,第二逻辑单元102执行s3-s1,并且输出复用电路420i、420iii将输出Q1路由到第二处理通道P1和第四处理通道P3两者的输出线426、428,以递送两个通道的相应结果r1、r3。第三逻辑单元103执行s2-s0,并且输出复用电路420ii、420iv将输出Q2路由到第一处理通道P0和第三处理通道P2两者的输出线425、427,以递送这两个通道的相应结果r0、r2。第一逻辑单元101和第四逻辑单元104不在第三模式中使用。
在实施例中,控制电路450被配置成当电路400处于第三模式时控制第一逻辑单元101和第四逻辑单元104以进入空闲低功率状态。即,它们被设置成它们不执行操作的状态,以便比执行操作时消耗更少的功率。这可以通过完全去除电力(即,电压)来完成,但这种方法通常不在此尺度下完成,因为它需要大量逻辑来安全地保存状态并关闭。因此,在所讨论的电路的尺度上,在一个或多个时钟周期中,可以使用时钟选通,或保持信号稳定的另一种方式。这样节省了电力,因为它正在改变在诸如这个的逻辑电路中消耗大部分功率的信号。通过不改变电路中的信号来节省能量,时钟选通通过简单地不注册新值(在时钟信号的上升沿或下降沿上发生)来实现这一点。另一种可能性是简单地将逻辑单元的每个数据输入A、B、C设置为静态值,例如0。将输入设置为0还实现了一些功率节省,但仅在其“停留”于0时的第二时钟循环上(或加以必要修改,静态输入值为1)。
在示范性应用中,第三模式可以用于确定与像素(或片段)201中的每一个相关联的y方向上的梯度。即,在2x2块200中的每个像素(或片段)的点处,信号s在y方向上的近似梯度。
这再次使用了梯度在基本增量上是伪恒定的假设,在这种情况下即s|y–s|(y-1)近似等于s|(y+1)–s|y。于是,对于第一通道P0上的左上像素201TL和第三通道P2上的左下像素201BL两者,输出相同的梯度。并且对于第二通道P1上的右上像素201TR和第四通道P3上的右下像素201BR两者,输出相同的梯度。
在实施例中,控制电路450可以被配置成在第三模式中操作电路400,以便执行y方向梯度指令的实例,所述梯度指令是处理器指令集的专用机器代码指令。例如,这可以是DSDY指令。
图6a示出了可以如何在第四操作模式中操作图4的电路的变体以在x方向上执行交换操作,例如以执行SWPX指令。在此处,第一处理通道P0的第一输入线105a上输入的输入信号s0被交换至第二处理通道P1的输出线426,并且第二处理通道P1的第一输入线106a上输入的输入信号s1被交换至第一处理通道P0的输出线425;并且对于s2和s3情况类似。
图6b示出了可以如何在第五操作模式中操作图4的电路的变体以在y方向上执行交换操作,例如以执行SWPY指令。在此处,第一处理通道P0的第一输入线105a上输入的输入信号s0被交换至第三处理通道P2的输出线427,并且第三处理通道P2的第一输入线107a上输入的输入信号s2被交换至第一处理通道P0的输出线425;并且对于s2和s4情况类似。
交换会重复使用已经可用于梯度指令的复用器。交换通过使用逻辑单元之一内的单独通道而起作用。所需的额外输出可以几乎完全地从关键路径中廉价地产生,使得它几乎完全免费(因为可以很早就知道哪些信号将被输出)。因此,在实施例中,执行交换的能力提供了以所公开的方式结构化逻辑单元和相关联的复用电路的额外优点。
交换x和交换y操作(例如SWPX和SWPY)需要通过逻辑单元101……104(中的一些)移动两条数据。在两个逻辑单元实例(例如101,102)之间的交换是通过在输入侧将一个实例的值发送到另一个,而另一个实例将其自身的输入在输出侧上发送回到的一个实例来实现的。
为此,每个逻辑单元101……104的相应输出可以包括两个独立的输出端子,分别为O0……O3和Q0……Q3。在该变体中实施梯度模式可以通过使Q和O保持相同值来实现,在这种情况下,图6a和图6b中所示的电路简化成图4的电路。因此,要指出的是,在图4和图5a至图5b等的描述中,参考给定输出Q实际上在一些实施例中可以指相应逻辑单元的逻辑输出,而未必是单个直接物理输出连接。
另一方面,在交换模式中,给定逻辑单元的Q和O彼此独立地设置,并且可以取不同值。复用器420在其自身逻辑单元的Q与另一个实例的O之间选择。对于SWPX指令,s1从102被发送到101,然后其通过O0输出s0,并通过Q0输出s1。复用器420ii将Q0发送至r0。复用器420i将O0发送至r1。观察到102可以在此操作期间关闭。103和104的行为是相似的,并且SWPY操作是对称的。
因此,要执行交换x操作(例如,要执行SWPX),所述复用电路经由第一逻辑单元101的第一输入A0和第一独立输出O0将第一处理通道P0的第一输入线105a上输入的信号s0路由到第二处理通道P1的输出线r1,并且经由第一逻辑单元101的第二输入C0和第二独立输出Q0将第二处理通道P1的第一输入线106a上输入的信号s1路由到第一处理通道P0的输出线r0。它还经由第四逻辑单元104的第二输入C3和第二独立输出Q3将第三处理通道P2的第一输入线107a上输入的信号s2路由到第四处理通道P3的输出线r3,并且经由第四逻辑单元104的第一输入A3和第一独立输出Q3将第四处理通道P3的第一输入线108a上输入的信号s3路由到第三处理通道P2的输出线r2。不需要使用第二逻辑单元102和第三逻辑单元103。
要执行交换y操作(例如,要执行SWPY),所述复用电路经由第三逻辑单元103的第一输入A2和第一独立输出O2将第三处理通道P2的第一输入线107a上输入的信号s2路由到第一处理通道P0的输出线r0,并且经由第三逻辑单元103的第二输入C2和第二独立输出Q2将第一处理通道P0的第一输入线105a上输入的信号s0路由到第三处理通道P3的输出线r2。它还经由第二逻辑单元102的第二输入C1和第二独立输出Q1将第四处理通道P3的第一输入线108a上输入的信号s3路由到第二处理通道P1的输出线r1,并且经由第二逻辑单元102的第一输入A1和第一独立输出O1将第二处理通道P1的第一输入线106a上输入的信号s1路由到第四处理通道P3的输出线r3。不需要使用第一逻辑单元101和第四逻辑单元104。
为了执行梯度操作,简单地将每个逻辑单元的两个相应的独立输出O、Q保持在彼此相同的值,从而实际上形成如图4和图5a至图5b所示的相同的输出。即,将O0和Q0保持在彼此相同的值,而将O1和Q1保持在彼此相同的值,并且将O2和Q2保持在彼此相同的值,将O3和Q3保持在彼此相同的值。
图7示出了根据本文公开的实施例的示例性方法。在步骤705处,处理器从存储器获取机器代码指令。在步骤S710处,处理器解码指令以确定其基于操作码的指令类型,并在执行阶段提供由指令的操作数在电路400的输入线上指定的相关输入数据。如果确定所述指令是第一类型,例如多乘法累加(MAC)指令,则方法分支到步骤S715,在此步骤控制电路450将电路400设置为第一模式。如果确定所述指令是第二类型,例如DSDX指令,则方法分支到步骤S720,在此步骤控制电路450将电路400设置为第二模式。
在实施例中,可以支持采用电路400的其它模式的其它类型的指令。例如,在实施例中,如果确定所述指令是第三类型,例如DSDY,则方法分支到步骤725,在此步骤控制电路450将电路400设置为第三模式。作为另一示例,如果确定所述指令是第四类型,例如SWPX,则方法分支到步骤730,在此步骤控制电路450将电路400设置为第四模式。作为另一示例,如果确定所述指令是第五类型,例如SWPY,则方法分支到步骤735,在此步骤控制电路450将电路设置为第五模式。
在确定正在执行哪种类型的指令且电路400已设置为相关模式之后,方法前进到步骤740,在此电路400在选定模式中执行指令。
图12给出了如图4、图5a至图5b和图6a至图6b所示的四个逻辑单元(例如ALU)的配置的高级示意图。逻辑单元(例如ALU)101……104中的不同逻辑单元位于图示的每个角部,其输入位于内部,其输出位于外部。
通过研究图12揭示了另一种可能的操作模式。在这种配置中,DSDX(或SWPX)指令由左上方和右下方ALU计算,而DSDY(或SWPY)指令由右上方和左下方ALU计算。这实际上意味着,在实施例中,可以并行计算DSDX和DSDY。换句话说,可以并行执行,即同时执行ds/dx梯度操作和ds/dy梯度操作。此配置还能够进行4路顺时针或逆时针交换。
图示的配置不能同时交换左上方与右上方、左下方与右下方、左上方与左下方,以及右上方与右下方(即,同时交换x并交换y)。实际上,它可以交换它们,但由于每个通道只有一条输出线,因此一次只能输出其中一个交换。在另外的实施例中,可以再次用附加的输出线扩展电路,以使交换x和交换y能够并行地执行(与仅x方向交换或y方向交换,或仅顺时针或逆时针交换相反)。
将要认识到,上述实施例已通过举例方式进行了描述。例如,逻辑单元101……104是能够在第一模式中执行MAC操作的ALU或浮点单元并非是必要的。在逻辑单元的输入和输出处交叉通道的数据线的原理也可以用于处理通道包括其它类型的逻辑单元的其它布置中。逻辑单元可以在第一模式中执行与在第二模式中(如上所述)不同类型的操作;或者,它们可以在第一模式和第二模式中执行相同类型的操作,但对输入数据的不同组合执行操作。例如,在第一模式中,给定处理通道可以确定其自身两个相应输入之间的差;而在第二模式中,它可以确定交叉输入线之间的差。
本文公开的原理也可以推广到具有其它数量的处理通道的执行电路。图10示出了仅具有第一通道P0和第二通道P1的电路400’的最简单情况;例如,用于处理像素200’的2x1块。在第一模式中,电路400’可以用于使用每个通道P0、P1的相应逻辑单元101、102执行并行操作(例如,并行MAC),以仅对在其各自的输入线上接收到的信号进行操作。在第二模式中,第一通道P0中的逻辑单元101用于计算s1-s0并输出两个通道P0、P1的结果。当电路处于第二模式时,第二通道P1中的逻辑单元102可以设置为空闲、低功率状态(例如,通过断电,或更优选地通过时钟选通或将输入设置为静态值,如先前所述)。
图11示出了电路的另一变体400”,这次具有三个通道:P0、P1、P2。这可以用于在第一模式中执行三个并行操作(例如,三个并行MAC),或者在第一模式中执行在s1和s0之间的ds/dx,或在第三模式中执行在s2和s0之间的ds/dy。例如,这可以用于处理三个像素200”的L形块。
此外,有可能将概念扩展超过四个通道,例如用于3x2或2x3像素块。与图4所示的电路相比,这将涉及额外的复用电路。例如,考虑具有六个处理通道的电路处理2x3像素块(x方向上的2个乘以y方向上的3个),其中,底部行上的额外两个像素的信号从左到右分别标记为s4和s5。例如,所有三个左侧像素在y方向上的梯度可以被近似为相同,并且所有三个像素的输入信号s0、s2、s4可以被路由到一个处理单元的逻辑单元以代表它们所有三个执行梯度操作。
所公开的技术还可以用于并行处理像素块之外的其它应用。本公开的电路可以用于涉及并行处理信号的任何应用中,其中有时,希望使每个处理通道仅在其各自的输入上操作,在其它时间,希望确定与不同通道相关联的信号之间的梯度或差,或甚至更一般地对不同通道的输入进行操作。
图8示出了其中可以实现本文所述的任何电路的计算机系统。计算机系统包括中央处理单元(CPU)802、图形处理单元(GPU)804、存储器806和一个或多个其它装置814,例如显示器816、扬声器818和/或相机819。在实施例中,GPU 804可以被布置为加速器处理器,并且CPU 802可以被布置为GPU的主机。存储器806包括一个或多个存储器单元,其采用一个或多个易失性和/或非易失性存储器介质,例如磁介质,例如硬盘;或电子介质,例如ROM、EEPROM、闪存存储器(SSD)等。
在GPU 804中实现包括上述电路400的处理块810。在其它示例中,可以在CPU 802或另一形式的处理器(未示出)中实现处理块810,所述处理器例如是数字信号处理器、神经网络加速器处理器、密码处理器等,或任何其它形式的专用或通用处理器。而且,虽然此处示出了主机(CPU)和加速器处理器(例如GPU)的布置,但在替代布置中,实现处理块810的处理器可以布置在独立处理器中或在多处理器系统内布置成另一种关系。计算机系统的部件被布置成能够经由通信总线820或其它此类互连彼此进行通信。
实现处理块810的处理器,例如GPU 804被布置成从存储器806获取指令并将其传递到处理块810以进行解码和执行。处理块810包括用于执行所提取的指令指定的逻辑操作的一种或多种类型的逻辑单元。此处理块810包括上文所描述的电路400,包括包括逻辑单元(例如ALU)101-104的处理通道,所述处理通道被布置成执行逻辑指令(例如,诸如MAC、梯度指令和交换指令等算术或浮点指令)。
在精简指令集(RISC)类型处理器中,可以对在与处理块810相同的处理器上实施的寄存器文件(未示出)中保存的值执行操作,在这种情况下,处理块810进一步包括用于分别响应于加载和存储指令将值从存储器806加载到寄存器文件中以及将值从寄存器文件存储回存储器的加载存储单元。数据可以存储在与处理器的总存储器806的指令相同的存储器单元中或不同存储器单元中。逻辑单元和加载存储单元可以相对于彼此进行流水线连接。
图4至图6b的电路被示出为包括许多功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。
本文中所描述的电路可以在集成电路上包含在硬件中。本文中所描述的电路可以被配置成执行本文所描述的任一种方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行码的一个或多个处理器执行,所述码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并且可以由机器存取的其它存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提供一种计算机可读存储介质,所述计算机可读存储介质上编码有呈集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理(即,运行)时,所述集成电路定义数据集将系统配置成制造被配置成执行本文所描述的任何方法的电路,或者制造包括本文所描述的任何设备的电路。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所描述的电路或处理器的方法。此外,可提供一种集成电路定义数据集,其在集成电路制造系统中处理时使制造电路或处理器的方法得以执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图8描述在集成电路制造系统中处理集成电路定义数据集以便配置该系统来制造电路或处理器的示例。
图9示出了集成电路(IC)制造系统902的示例,该集成电路制造系统被配置为制造如本文中任何示例中描述的电路或处理器。具体而言,IC制造系统902包括布局处理系统904和集成电路生成系统906。IC制造系统902被配置成接收IC定义数据集901(例如,定义如本文任何示例中描述的电路或处理器)、处理IC定义数据集以及根据IC定义数据集来生成IC 905(例如,其包含如本文任何示例中所述的电路或处理器)。IC定义数据集的处理将IC制造系统902配置成制造包含如本文的任一示例中所描述的电路或处理器的集成电路。
布局处理系统904被配置成接收并处理IC定义数据集901以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统904确定了电路布局,布局处理系统可以将电路布局定义903输出到IC生成系统906。电路布局定义可以是例如电路布局描述。
如所属领域中已知的,IC生成系统906根据电路布局定义903生成IC 905。举例来说,IC生成系统906可实施生成IC的半导体装置制造工艺,其可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统906的电路布局定义可呈计算机可读代码的形式,IC生成系统906可使用所述计算机可读代码来形成用于生成IC的合适掩模。
布局处理系统可以被配置成确定从集成电路描述导出的电路的逻辑部件的位置信息,以生成包含该图形处理系统的集成电路的电路布局描述。
由IC制造系统902执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统902可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩码;以及(iv)使用掩模来制造集成电路。
在其它示例中,在集成电路制造系统处对集成电路定义数据集进行处理可将系统配置成制造电路或处理器,而无需对IC定义数据集进行处理来确定电路布局。例如,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,由集成电路制造定义数据集以上文参考图9描述的方式对集成电路制造系统进行配置,可以制造如本文所述的装置。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图9所示的示例中,IC生成系统可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或者以其它方式向集成电路提供与集成电路一起使用的程序代码。
当在装置、设备、模块和/或系统中(以及在本文实施的方法中)实施时,与已知的实施方式相比,本申请中阐述的概念提供了性能改进,例如增加的计算性能、减少的延时、增加的吞吐量和/或降低的功耗中的一种或多种。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅和/或使用更少功率。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方式的改进(诸如硅面积和/或功耗减小)的概念可以针对计算性能提高进行权衡。此外,为了(例如在集成电路中)制造此类装置、设备、模块和系统,可以朝向物理实施例调整性能改进,从而改进制造方法。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
根据本文公开的一个方面,提供了一种如发明内容部分中阐述的电路。
在实施例中,控制电路可以进一步可操作以同时在第二模式和第三模式中操作电路。
在实施例中,每个逻辑单元可以包括算术逻辑单元,每个逻辑单元被配置成执行的操作是算术运算。
在实施例中,每个逻辑单元被配置成执行的操作可以包括在第二模式中的差操作,以确定相应第一和第二输入之间的差,所述差为相应结果。
在实施例中,控制电路可以被配置成响应于执行第一类型梯度指令的实例而触发每个逻辑单元在第二模式中执行操作,所述梯度指令是处理器指令集的单个机器代码指令。
在实施例中,在第三模式中,操作还可以包括差操作。
在实施例中,所述电路可以被配置成响应于执行第二类型梯度指令的实例而触发每个逻辑单元在第三模式中执行操作,所述梯度指令是处理器指令集的单个机器代码指令。
在实施例中,所述逻辑单元中的每一个的第一输入可以是一对相应乘法输入中的一个,并且所述逻辑单元中的每一个的第二输入可以是相应加数输入。在这种情况下,每个逻辑单元被配置成执行的操作可以包括在第一模式中的乘法累加操作,以确定以下的总和:相应的加数输入,和相应的乘法输入的乘积;所述总和为相应结果。
在实施例中,所述电路可以被配置成响应于执行乘法累加指令的实例而触发每个逻辑单元在第一模式中执行操作,所述乘法累加指令是处理器指令集的单个机器代码指令。
在实施例中,控制电路可被配置成使得在交换模式中控制复用电路以将第一输入线的值放置在第二输出线上,以及将第二输入线的值放置在第一输出线上。
在实施例中,所述电路可以被配置成响应于执行第一交换指令的实例而触发每个逻辑单元在所述交换模式中触发操作,所述第一交换指令是处理器指令集的单个机器代码指令。
在实施例中,控制电路可以被配置成使得在另一交换模式中控制复用电路以将第三输入线的值放置在第四输出线上,以及将第四输入线的值放置在第三输出线上。
在实施例中,所述电路可以被配置成响应于执行第二交换指令的实例而触发每个逻辑单元在所述另一交换模式中触发操作,所述第二交换指令是处理器指令集的单个机器代码指令。
在实施例中,处理器可以被编程以在所述处理通道的相应不同处理通道中的相应第一输入线上供应不同像素或图像片段的值,并且使用第二模式和第三模式中的至少一个来执行梯度计算,以确定像素或片段之间的梯度。
在实施例中,处理器可以被编程以在所述通道的相应不同处理通道中的相应第一输入线上供应不同像素或图像片段的值,并且使用交换操作模式中的至少一个来交换像素或片段值的位置。
在实施例中,每个处理通道的相应输出可以包括两个单独的输出端子。在第一、第二和/或第三模式(例如,MAC和/或梯度模式)中,两个相应输出端子可以保持在相同值(因此形成单个逻辑输出)。在交换模式中,可以允许每个逻辑单元的两个相应输出端子不同。可以通过如下方式来执行交换:操作复用电路将处理通道之一的逻辑单元的输入线中的一个路由到两个相应输出端子中的一个,将该输出端子连接至处理通道的所述一个的输出线;而将另一个处理通道的输入线中的一个路由到处理通道中的所述一个的逻辑单元的两个输出端子中的另一个,并将这一输出端子连接至所述另一处理通道的输出线。
根据本文公开的其它方面,可以提供操作电路的对应方法和被配置成操作电路的对应计算机程序。根据其它方面,可以提供一种制造电路的对应方法,布置成制造电路的对应制造设施,以及包含在计算机可读存储装置上的对应电路设计数据集。
例如,根据一个方面,可以提供一种非暂态计算机可读存储介质,在该非暂态计算机可读存储介质上存储有如本文任何实施例所述的电路的计算机可读描述,当在集成电路制造系统中进行处理时,使得集成电路制造系统:使用布局处理系统对电路的计算机可读描述进行处理,以生成包含所述电路的集成电路的电路布局描述;并且使用集成电路生成系统根据电路布局描述制造图形处理系统。
根据另一方面,还提供了一种集成电路制造系统,包括:非暂态计算机可读存储介质,其上存储有本文公开的任何实施例所述电路的计算机可读描述;布局处理系统,其被配置成处理所述计算机可读描述,以便生成包含所述电路的集成电路的电路布局描述;以及集成电路生成系统,其被配置成根据所述电路布局描述制造所述电路。
根据另一个方面,可以提供一种使用集成电路制造系统制造根据本文公开的任何实施例所述的电路的方法,所述方法包括:使用布局处理系统对所述电路的计算机可读描述进行处理,以生成包含所述电路的集成电路的电路布局描述;并且使用集成电路生成系统根据电路布局描述制造所述电路。
一旦本文给出本公开,所公开的技术的其它变体和/或应用对于本领域技术人员就可能变得显而易见。本公开的范围不受上述实施例限制,而仅受权利要求书限制。

Claims (20)

1.一种用于处理器中的电路,所述电路包括:
第一处理通道,所述第一处理通道包括:相应第一输入线,第二输入线和输出线,以及第一逻辑单元,所述第一逻辑单元被配置成对所述第一逻辑单元的相应第一输入和第二输入执行操作,以在所述第一逻辑单元的相应输出处产生相应结果,其中,所述第一逻辑单元的所述第一输入耦接到所述第一处理通道的所述第一输入线;
第二处理通道,所述第二处理通道包括:相应第一输入线,第二输入线和输出线,以及第二逻辑单元,所述第二逻辑单元被配置成对所述第二逻辑单元的相应第一输入和第二输入执行操作,以在所述第二逻辑单元的相应输出处产生相应结果,其中,所述第二逻辑单元的所述第一输入耦接到所述第二处理通道的所述第一输入线;
复用电路,包括:
-第一输入复用器,所述第一输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第一逻辑单元的所述第二输入耦接到所述第一处理通道的所述第二输入线,在所述相应第二状态中,所述第一逻辑单元的所述第二输入转而耦接到所述第二处理通道的所述第一输入线,以及
-第一输出复用器,所述第一输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第二处理通道的所述输出线耦接到所述第二逻辑单元的所述输出,在所述相应第二状态中,所述第二处理通道的所述输出线转而耦接到所述第一逻辑单元的所述输出;以及
控制电路,所述控制电路被布置成响应于正执行的指令而控制所述复用电路。
2.根据权利要求1所述的电路,其中,所述控制电路被布置成在第一模式与第二模式之间切换,在所述第一模式中,所述第一输入复用器和所述第一输出复用器各自被设置成相应第一状态,在所述第二模式中,所述第一输入复用器和所述第一输出复用器各自被设置成相应第二状态,其中,所述第一处理通道的所述输出线在所述第一模式和所述第二模式两者中都耦接到所述第一逻辑单元的所述输出。
3.根据权利要求2所述的电路,其中,所述控制电路被配置成当处于所述第二模式时将所述第二逻辑单元设置为空闲、功率减小状态。
4.根据权利要求1所述的电路,还包括:
第三处理通道,所述第三处理通道包括:相应第一输入线,第二输入线和输出线,以及第三逻辑单元,所述第三逻辑单元被配置成对所述第三逻辑单元的相应第一输入和第二输入执行操作,以在所述第三逻辑单元的相应输出处产生相应结果,其中,所述第三逻辑单元的所述第一输入耦接到所述第三处理通道的所述第一输入线;
其中,所述复用电路包括:
-第二输入复用器,所述第二输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第三逻辑单元的所述第二输入耦接到所述第三处理通道的所述第二输入线,在所述相应第二状态中,所述第三逻辑单元的所述第二输入转而耦接到所述第一处理通道的所述第一输入线,以及
-第二输出复用器,所述第二输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第一处理通道的所述输出线耦接到所述第一逻辑单元的所述输出,在所述相应第二状态中,所述第一处理通道的所述输出线转而耦接到所述第三逻辑单元的所述输出。
5.根据权利要求4所述的电路,其中:
所述控制电路被布置成在第一模式与第二模式之间切换,在所述第一模式中,所述第一输入复用器和所述第一输出复用器各自被设置成相应第一状态,在所述第二模式中,所述第一输入复用器和所述第一输出复用器各自被设置成相应第二状态,其中,所述第一处理通道的所述输出线在所述第一模式和所述第二模式两者中都耦接到所述第一逻辑单元的所述输出;并且
所述控制电路被配置成在所述第一模式、所述第二模式与第三模式之间切换;其中,在所述第一模式中,所述第二输入复用器和所述第二输出复用器各自被设置成所述相应第一状态,在所述第二模式中,所述第二输出复用器被设置成所述相应第一状态,并且在所述第三模式中,所述第一输出复用器被设置成所述相应第一状态,并且所述第二输入复用器和所述第二输出复用器各自被设置成所述相应第二状态。
6.根据权利要求5所述的电路,其中,所述控制电路被配置成在处于所述第二模式时将所述第三逻辑单元设置成空闲、功率减小状态;并且在处于所述第三模式时将所述第一逻辑单元设置成空闲、功率减小状态。
7.根据权利要求4所述的电路,还包括:
第四处理通道,所述第四处理通道包括:相应第一输入线,第二输入线和输出线,以及第四逻辑单元,所述第四逻辑单元被配置成对所述第四逻辑单元的相应第一输入和第二输入执行操作,以在所述第四逻辑单元的相应输出处产生相应结果,其中,所述第四逻辑单元的所述第一输入耦接到所述第四处理通道的所述第一输入线;
其中,所述复用电路包括:
-第三输入复用器,所述第三输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第二逻辑单元的所述第二输入耦接到所述第二处理通道的所述第二输入线,在所述相应第二状态中,所述第二逻辑单元的所述第二输入转而耦接到所述第四处理通道的所述第一输入线,
-第四输入复用器,所述第四输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第四逻辑单元的所述第二输入耦接到所述第四处理通道的所述第二输入线,在所述相应第二状态中,所述第四逻辑单元的所述第二输入转而耦接到所述第三处理通道的所述第一输入线,
-第三输出复用器,所述第三输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第四处理通道的所述输出线耦接到所述第四逻辑单元的所述输出,在所述相应第二状态中,所述第四处理通道的所述输出线转而耦接到所述第二逻辑单元的所述输出,以及
-第四输出复用器,所述第四输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第三处理通道的所述输出线耦接到所述第三逻辑单元的所述输出,在所述相应第二状态中,所述第三处理通道的所述输出线转而耦接到所述第四逻辑单元的所述输出。
8.根据权利要求5所述的电路,还包括:
第四处理通道,所述第四处理通道包括:相应第一输入线,第二输入线和输出线,以及第四逻辑单元,所述第四逻辑单元被配置成对所述第四逻辑单元的相应第一输入和第二输入执行操作,以在所述第四逻辑单元的相应输出处产生相应结果,其中,所述第四逻辑单元的所述第一输入耦接到所述第四处理通道的所述第一输入线;
其中,所述复用电路包括:
-第三输入复用器,所述第三输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第二逻辑单元的所述第二输入耦接到所述第二处理通道的所述第二输入线,在所述相应第二状态中,所述第二逻辑单元的所述第二输入转而耦接到所述第四处理通道的所述第一输入线,
-第四输入复用器,所述第四输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第四逻辑单元的所述第二输入耦接到所述第四处理通道的所述第二输入线,在所述相应第二状态中,所述第四逻辑单元的所述第二输入转而耦接到所述第三处理通道的所述第一输入线,
-第三输出复用器,所述第三输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第四处理通道的所述输出线耦接到所述第四逻辑单元的所述输出,在所述相应第二状态中,所述第四处理通道的所述输出线转而耦接到所述第二逻辑单元的所述输出,以及
-第四输出复用器,所述第四输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第三处理通道的所述输出线耦接到所述第三逻辑单元的所述输出,在所述相应第二状态中,所述第三处理通道的所述输出线转而耦接到所述第四逻辑单元的所述输出;并且
其中,在所述第一模式中,所述第三输入复用器和所述第四输入复用器以及所述第三输出复用器和所述第四输出复用器各自被设置成所述相应第一状态,在所述第二模式中,所述第四输入复用器和所述第四输出复用器各自被设置成所述相应第二状态,而所述第三输出复用器被设置成所述相应第一状态,在所述第三模式中,所述第三输入复用器和所述第三输出复用器各自被设置成所述相应第二状态,而所述第四输出复用器被设置成所述相应第一状态。
9.根据权利要求8所述的电路,其中,所述控制电路被配置成将所述第四逻辑单元设置成在所述第三模式中处于空闲、功率减小状态。
10.根据权利要求5所述的电路,其中,所述控制电路还可操作以同时在所述第二模式和所述第三模式中操作所述电路。
11.根据权利要求1所述的电路,其中,每个所述逻辑单元包括算术逻辑单元,每个逻辑单元被配置成执行的操作是算术运算。
12.根据权利要求2所述的电路,其中,每个所述逻辑单元被配置成执行的所述操作包括在所述第二模式中的差操作,以确定所述相应第一输入和第二输入之间的差,所述差为所述相应结果。
13.根据权利要求12所述的电路,其中,所述控制电路被配置成响应于执行第一类型梯度指令的实例而触发每个逻辑单元在所述第二模式中执行操作,所述梯度指令是处理器指令集的单个机器代码指令。
14.根据权利要求5所述的电路,其中:
每个所述逻辑单元被配置成执行的所述操作包括在所述第二模式中的差操作,以确定所述相应第一输入和第二输入之间的差,所述差为所述相应结果;并且
在所述第三模式中,所述操作还包括所述差操作。
15.根据权利要求14所述的电路,所述电路被配置成响应于执行第二类型梯度指令的实例而触发每个逻辑单元在所述第三模式中执行操作,所述梯度指令是处理器指令集的单个机器代码指令。
16.根据权利要求2所述的电路,其中,每个所述逻辑单元的所述第一输入是一对相应乘法输入中的一个,并且每个所述逻辑单元的所述第二输入是相应加数输入;其中,每个所述逻辑单元被配置成执行的所述操作包括在所述第一模式中的乘法累加操作,以确定所述相应加数输入和所述相应乘法输入的乘积的总和;所述总和为所述相应结果。
17.根据权利要求16所述的电路,所述电路被配置成响应于执行乘法累加指令的实例而触发每个逻辑单元在第一模式中执行操作,所述乘法累加指令是处理器指令集的单个机器代码指令。
18.根据权利要求1所述的电路,其中,所述控制电路被配置成使得在交换模式中控制所述复用电路以将所述第一输入线的值放置在所述第二输出线上,以及将所述第二输入线的值放置在所述第一输出线上。
19.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使所述集成电路制造系统制造包含用于处理器中的电路的集成电路;所述电路包括:
第一处理通道,所述第一处理通道包括:相应第一输入线,第二输入线和输出线,以及第一逻辑单元,所述第一逻辑单元被配置成对所述第一逻辑单元的相应第一输入和第二输入执行操作,以在所述第一逻辑单元的相应输出处产生相应结果,其中,所述第一逻辑单元的所述第一输入耦接到所述第一处理通道的所述第一输入线;
第二处理通道,所述第二处理通道包括:相应第一输入线,第二输入线和输出线,以及第二逻辑单元,所述第二逻辑单元被配置成对所述第二逻辑单元的相应第一输入和第二输入执行操作,以在所述第二逻辑单元的相应输出处产生相应结果,其中,所述第二逻辑单元的所述第一输入耦接到所述第二处理通道的所述第一输入线;
复用电路,包括:
-第一输入复用器,所述第一输入复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第一逻辑单元的所述第二输入耦接到所述第一处理通道的所述第二输入线,在所述相应第二状态中,所述第一逻辑单元的所述第二输入转而耦接到所述第二处理通道的所述第一输入线,以及
-第一输出复用器,所述第一输出复用器被布置成在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第二处理通道的所述输出线耦接到所述第二逻辑单元的所述输出,在所述相应第二状态中,所述第二处理通道的所述输出线转而耦接到所述第一逻辑单元的所述输出;以及
控制电路,所述控制电路被布置成响应于正执行的指令而控制所述复用电路。
20.一种操作处理器中的电路的方法,所述电路包括:
第一处理通道,所述第一处理通道包括:相应第一输入线,第二输入线和输出线,以及第一逻辑单元,所述第一逻辑单元被配置成对所述第一逻辑单元的相应第一输入和第二输入执行操作,以在所述第一逻辑单元的相应输出处产生相应结果,其中,所述第一逻辑单元的所述第一输入耦接到所述第一处理通道的所述第一输入线;以及
第二处理通道,所述第二处理通道包括:相应第一输入线,第二输入线和输出线,以及第二逻辑单元,所述第二逻辑单元被配置成对所述第二逻辑单元的相应第一输入和第二输入执行操作,以在所述第二逻辑单元的相应输出处产生相应结果,其中,所述第二逻辑单元的所述第一输入耦接到所述第二处理通道的所述第一输入线;
其中,所述方法包括响应于由所述处理器执行指令而控制复用电路,包括:
操作所述复用电路的第一输入复用器以在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第一逻辑单元的所述第二输入耦接到所述第一处理通道的所述第二输入线,在所述相应第二状态中,所述第一逻辑单元的所述第二输入转而耦接到所述第二处理通道的所述第一输入线,以及
操作所述复用电路的第一输出复用器以在相应第一状态和相应第二状态之间切换,在所述相应第一状态中,所述第二处理通道的所述输出线耦接到所述第二逻辑单元的所述输出,在所述相应第二状态中,所述第二处理通道的所述输出线转而耦接到所述第一逻辑单元的所述输出。
CN202110655648.2A 2020-06-18 2021-06-11 用于处理器中的电路、操作处理器中的电路的方法和介质 Active CN113821260B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2009274.8 2020-06-18
GB2009274.8A GB2590521B (en) 2020-06-18 2020-06-18 Multiplexing between different processing channels

Publications (2)

Publication Number Publication Date
CN113821260A CN113821260A (zh) 2021-12-21
CN113821260B true CN113821260B (zh) 2023-01-10

Family

ID=71838347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110655648.2A Active CN113821260B (zh) 2020-06-18 2021-06-11 用于处理器中的电路、操作处理器中的电路的方法和介质

Country Status (4)

Country Link
US (2) US11366637B2 (zh)
EP (1) EP3929862B1 (zh)
CN (1) CN113821260B (zh)
GB (1) GB2590521B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6883084B1 (en) * 2001-07-25 2005-04-19 University Of New Mexico Reconfigurable data path processor
CN107408041A (zh) * 2015-04-23 2017-11-28 谷歌公司 用于图像处理器的能量高效的处理器核心架构
CN108399594A (zh) * 2017-01-16 2018-08-14 畅想科技有限公司 处理器的高效数据选择
CN110574007A (zh) * 2017-05-12 2019-12-13 谷歌有限责任公司 执行双输入值绝对值和求和操作的电路

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119141A (en) * 1998-05-06 2000-09-12 Integrated Device Technology, Inc. Resistive decoupling of function selection signals from input multiplexers in arithmetic logical units ALU
US6577317B1 (en) * 1998-08-20 2003-06-10 Apple Computer, Inc. Apparatus and method for geometry operations in a 3D-graphics pipeline
US7526632B1 (en) * 2003-10-22 2009-04-28 Stretch, Inc. System, apparatus and method for implementing multifunctional memory in reconfigurable data path processing
US9098932B2 (en) * 2004-08-11 2015-08-04 Ati Technologies Ulc Graphics processing logic with variable arithmetic logic unit control and method therefor
US7242216B1 (en) * 2004-11-08 2007-07-10 Herman Schmit Embedding memory between tile arrangement of a configurable IC
JP4619252B2 (ja) * 2005-09-29 2011-01-26 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
US7636835B1 (en) * 2006-04-14 2009-12-22 Tilera Corporation Coupling data in a parallel processing environment
US8521800B1 (en) * 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US7694112B2 (en) * 2008-01-31 2010-04-06 International Business Machines Corporation Multiplexing output from second execution unit add/saturation processing portion of wider width intermediate result of first primitive execution unit for compound computation
JP5599987B2 (ja) * 2009-06-12 2014-10-01 スパンション エルエルシー 多重化用補助peおよび半導体集積回路
US9471305B2 (en) * 2014-05-09 2016-10-18 Samsung Electronics Co., Ltd. Micro-coded transcendental instruction execution
US9966960B2 (en) * 2014-12-17 2018-05-08 Silicon Laboratories Inc. Configurable logic circuit including dynamic lookup table
US9959247B1 (en) * 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
US11182200B2 (en) * 2017-06-29 2021-11-23 Texas Instruments Incorporated Streaming engine with short cut start instructions
US10521226B2 (en) * 2018-03-30 2019-12-31 Intel Corporation Efficient implementation of complex vector fused multiply add and complex vector multiply
US10942985B2 (en) * 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6883084B1 (en) * 2001-07-25 2005-04-19 University Of New Mexico Reconfigurable data path processor
CN107408041A (zh) * 2015-04-23 2017-11-28 谷歌公司 用于图像处理器的能量高效的处理器核心架构
CN108399594A (zh) * 2017-01-16 2018-08-14 畅想科技有限公司 处理器的高效数据选择
CN110574007A (zh) * 2017-05-12 2019-12-13 谷歌有限责任公司 执行双输入值绝对值和求和操作的电路

Also Published As

Publication number Publication date
US11782679B2 (en) 2023-10-10
EP3929862A1 (en) 2021-12-29
CN113821260A (zh) 2021-12-21
EP3929862B1 (en) 2023-03-08
US11366637B2 (en) 2022-06-21
GB2590521A (en) 2021-06-30
GB2590521B (en) 2022-02-23
US20220317974A1 (en) 2022-10-06
GB202009274D0 (en) 2020-08-05
US20220012014A1 (en) 2022-01-13

Similar Documents

Publication Publication Date Title
Lee et al. Design and implementation of the MorphoSys reconfigurable computing processor
CN108399594B (zh) 处理器的高效数据选择
US11175920B2 (en) Efficient work execution in a parallel computing system
KR101703797B1 (ko) 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛
CN110574007B (zh) 执行双输入值绝对值和求和操作的电路
KR102000894B1 (ko) 이미지 프로세서용 다기능 실행 레인
Chalamalasetti et al. MORA-an architecture and programming model for a resource efficient coarse grained reconfigurable processor
CN113821260B (zh) 用于处理器中的电路、操作处理器中的电路的方法和介质
Jain et al. Coarse Grained FPGA Overlay for Rapid Just-In-Time Accelerator Compilation
US11276223B2 (en) Merged data path for triangle and box intersection test in ray tracing
Gierenz et al. Parameterized MAC unit generation for a scalable embedded DSP core
Boutros et al. Specializing for efficiency: Customizing AI inference processors on FPGAs
CN110349074A (zh) 边缘和深度处理硬件
Hoare et al. An 88-way multiprocessor within an FPGA with customizable instructions
Rose Development of parallel Image Processing architecture in VHDL
GB2602686A (en) Efficient convolution operations
Karthigaikumar A novel FPGA architecture for a reconfigurable Alu
Kesler et al. Design and verification of dynamically reconfigurable architecture
Fabric Mua'ad Majed Abu-Faraj, Ph. D. University of Connecticut, 2012
Vagheeswar et al. Design of a reconfigurable optical microprocessor for smart-pixel applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant