CN117716339A - 用于在处理元件之间传输触发指令的数据处理装置和方法 - Google Patents

用于在处理元件之间传输触发指令的数据处理装置和方法 Download PDF

Info

Publication number
CN117716339A
CN117716339A CN202280052101.6A CN202280052101A CN117716339A CN 117716339 A CN117716339 A CN 117716339A CN 202280052101 A CN202280052101 A CN 202280052101A CN 117716339 A CN117716339 A CN 117716339A
Authority
CN
China
Prior art keywords
processing element
instruction
processing
consumer
instructions
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
Application number
CN202280052101.6A
Other languages
English (en)
Inventor
巴拉吉·韦尼
姆布·埃约勒
贾科莫·加布雷利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM 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 ARM Ltd filed Critical ARM Ltd
Publication of CN117716339A publication Critical patent/CN117716339A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供了一种数据处理装置和操作数据处理装置的方法。该数据处理装置包括在单个芯片上经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构。每个处理元件包括前端电路,该前端电路被配置为生成触发指令的,该触发指令被传递到解码电路以使得该处理元件执行处理操作。一些处理元件被配置为在生产模式下操作,其中该处理元件将该触发指令作为消费者指令来传输,以便由一组处理元件中的每个处理元件在消费模式下操作时执行。一些处理元件被配置为在该消费模式下操作,其中该处理元件检索从在生产模式下操作的处理元件传输的消费者指令,并且将该消费者指令传递到该解码电路。

Description

用于在处理元件之间传输触发指令的数据处理装置和方法
一些数据处理装置在单个芯片上设置有经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构。触发式空间架构的处理元件响应于处理元件的执行状态满足与每个指令相关联的触发条件而执行该指令,而非以由程序计数器限定的次序执行。以此方式,处理元件中的每个处理元件能够独立于其他处理元件并且与其他处理元件异步地操作。
在一些配置中,提供了一种数据处理装置,其包括在单个芯片上经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构,该多个处理元件中的每个处理元件包括:前端电路,该前端电路被配置为处理多个指令,并且生成触发指令,每个触发指令响应于处理元件的执行状态满足与该多个指令中的一个指令相关联的触发条件而生成;以及解码电路,该解码电路被配置为响应于接收到触发指令而生成控制信号;以及执行电路,该执行电路被配置为响应于控制信号执行处理操作并且修改处理元件的执行状态,其中:解码电路被配置为响应于开始消费指令,生成开始消费控制信号以控制处理元件在消费模式下操作;并且处理元件被配置为当在消费模式下操作时,检索从在生产模式下操作的对应处理元件传输的消费者指令,并且将消费者指令作为触发指令传递到解码电路。
在一些配置中,提供了一种数据处理装置,其包括在单个芯片上经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构,该多个处理元件中的每个处理元件包括:前端电路,该前端电路被配置为处理多个指令,并且生成触发指令,每个触发指令响应于处理元件的执行状态满足与该多个指令中的一个指令相关联的触发条件而生成;以及解码电路,该解码电路被配置为响应于接收到触发指令而生成控制信号;以及执行电路,该执行电路被配置为响应于控制信号执行处理操作并且修改处理元件的执行状态,其中:解码电路被配置为响应于开始生产指令,生成开始生产控制信号以控制处理元件在生产模式下操作;并且处理元件被配置为当在生产模式下操作时,将触发指令作为消费者指令传输到该多个处理元件中的一组处理元件,当在消费模式下操作时,消费者指令将由该组处理元件中的每个处理元件执行。
在一些配置中,提供了一种用于操作数据处理装置的数据处理方法,该数据处理装置包括在单个芯片上经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构,每个处理元件包括前端电路、解码电路和执行电路,该方法包括:使用前端电路处理多个指令,并且生成触发指令,每个触发指令响应于处理元件的执行状态满足与该多个指令中的一个指令相关联的触发条件而生成;响应于接收到触发指令,使用解码电路生成控制信号;响应于控制信号执行处理操作执行电路,并且修改处理元件的执行状态;响应于开始消费指令,使用解码电路生成开始消费控制信号以控制处理元件在消费模式下操作;并且当在消费模式下操作时,检索从在生产模式下操作的对应处理元件传输的消费者指令,并且将消费者指令作为触发指令传递到解码电路。
在一些配置中,提供了一种用于操作数据处理装置的数据处理方法,该数据处理装置包括在单个芯片上经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构,每个处理元件包括前端电路、解码电路和执行电路,该方法包括:使用前端电路处理多个指令,并且生成触发指令,每个触发指令响应于处理元件的执行状态满足与该多个指令中的一个指令相关联的触发条件而生成;响应于接收到触发指令,使用解码电路生成控制信号;并且响应于控制信号使用执行电路执行处理操作,并且修改处理元件的执行状态;响应于开始生产指令,使用解码电路生成开始生产控制信号以控制处理元件在生产模式下操作;并且当在生产模式下操作时,将触发指令作为消费者指令传输到该多个处理元件中的一组处理元件,当在消费模式下操作时,消费者指令将由该组处理元件中的每个处理元件执行。
将参考如附图所示的本发明的实施方案,仅以举例的方式进一步描述本技术,其中:
图1示意性地示出了根据本技术的各种配置的包括布置在单个芯片上以形成空间架构的多个处理元件的数据处理装置;
图2示意性地示出了根据本技术的各种配置的数据处理装置的处理元件的操作;
图3a示意性地示出了根据本技术的各种配置的包括多个处理元件的数据处理装置;
图3b示意性地示出了根据本技术的各种配置的包括多个处理元件的数据处理装置;
图4a示意性地示出了根据本技术的各种配置的在生产模式下操作的数据处理装置;
图4b示意性地示出了根据本技术的各种配置的在消费模式下操作的数据处理装置;
图5a示意性地示出了根据本技术的各种配置的在生产模式下操作的数据处理装置;
图5b示意性地示出了根据本技术的各种配置的在消费模式下操作的数据处理装置;
图6示意性地示出了根据本技术的各种配置的包括多个处理元件的数据处理装置;
图7示意性地示出根据本技术的各种配置的由能够在生产模式下操作的处理元件执行的步骤序列;并且
图8示意性地示出了根据本技术的各种配置的能够在消费模式下操作的处理元件所执行的步骤序列。
在一些配置中,提供了一种数据处理装置。该数据处理装置包括在单个芯片上经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构。该多个处理元件中的每个处理元件包括被配置为处理多个指令的前端电路。该前端电路还被配置为生成触发指令,其中每个触发指令响应于处理元件的执行状态满足与该多个指令中的一个指令相关联的触发条件而生成。每个处理元件还设置有:解码电路,该解码电路用于响应于接收到触发指令而生成控制信号;以及执行电路,该执行电路被配置为响应于控制信号执行处理操作并且修改处理元件的执行状态。该解码电路被配置为响应于开始生产指令而生成开始生产控制信号以控制处理元件在生产模式下操作。处理元件被配置为当在生产模式下操作时,将触发指令作为消费者指令传输到该多个处理元件中的一组处理元件,当在消费模式下操作时,消费者指令将由该组处理元件中的每个处理元件执行。
与基于程序计数器确定指令次序的典型架构不同,触发式空间架构的处理元件包括前端电路以响应于处理元件的处理状态满足与每个指令相关联的触发条件而生成触发指令。前端电路将触发指令传递到解码电路,该解码电路生成控制信号以使处理电路执行处理操作。此外,在处理操作完成时,处理电路被配置为更新处理状态。以此方式,前端电路能够响应于处理电路的处理状态的当前指示而生成触发指令。因此,触发式空间架构的每个处理元件能够独立于触发式空间架构的其他处理元件并且与其他处理元件异步地操作。在空间架构的多个处理元件被指派以相同次序但(任选地)以不同数据位执行同一组操作的情况下,与每个处理元件相关联的每组前端电路必须执行基于处理元件的处理状态确定何时生成触发指令的任务。
发明人已经认识到,当情况是这样时,存在在执行同一组操作的多个拼块(tile)中的每个拼块之间共享前端电路的可能性。由于这个原因,处理元件的解码电路被配置为通过将处理元件置于生产模式来对开始生产指令做出响应。开始生产指令是指令集架构的一部分并且与特定操作码相关联,该特定操作码由解码电路解译以便产生所需控制信号以控制处理元件在生产模式下操作。当处于生产模式时,处理元件的前端电路如先前所描述操作以在处理电路的处理状态满足与该多个指令中的一个指令相关联的触发条件时产生触发指令。然而,除了将触发指令传递到解码电路之外,处理元件还被配置为经由网络将触发指令作为消费者指令来传输(广播)。消费者指令可以以与触发指令相同的格式传输,使得它们具有由其他处理元件的解码电路直接使用的适当格式。另选地,消费者指令可被压缩并作为指令组或与附加元数据一起传输,例如,以指示哪些处理元件要接收消费者指令。然后,当在消费模式下操作时,消费者指令可以由一组处理元件中的每个处理元件执行。该组处理元件可以在传输时接收消费者指令,并且没有延迟地执行它们。然而,该组处理元件在传输时不需要在消费模式下操作。相反,该组处理元件可以在某一时间各自进入消费模式,而与处理元件进入生产模式的时间无关(异步)。具体地,该组处理元件中的一些处理元件可能已经处于等待消费者指令的消费模式。另选地,该组处理元件中的一些处理元件可能还没有进入消费模式,并且在处于生产模式的处理元件已经传输指令之后(并且可能是在生产模式下操作的处理元件已经退出生产模式之后)的将来时刻,可以进入消费模式并且执行消费者指令。以此方式,处理元件能够维持其异步操作,但可共享由在生产模式下操作的处理元件生成的触发指令。
生产模式的持续时间可以各种方式限定,但在一些配置中,解码电路被配置为响应于结束生产指令而生成结束生产控制信号以控制处理元件停止在生产模式下操作。结束生产指令是指令集架构的一部分并且与特定操作码相关联,该特定操作码由解码电路解译以便产生所需控制信号以控制处理元件停止在生产模式下操作。以此方式,在控制处理元件的操作模式方面为程序员提供了更大程度的灵活性。另选地,在一些配置中,开始生产指令指定处理元件保持在生产模式下的指令的数量。该替代方案允许处理元件具备所描述的功能,同时仅提供单个专用指令来控制处理元件是否处于生产模式。
在消费者模式下操作的该组处理元件可以通过检测传输的消费者指令的缺失来确定该处理元件已经退出生产模式。然而,在一些配置中,解码电路被配置为响应于结束生产指令而将结束消费模式指示传输到该组处理元件。这提供了前端电路的功能正被转移回在消费模式下操作的处理元件的直接指示,并且在消费者模式下操作的处理元件可以采取行动来停止在消费模式下操作。在一些配置中,结束消费模式指示是专用指令。然而,在另选配置中,消费模式结束指示包括附加到传输到该组处理元件的最终消费者指令的结束消费模式标签。结束消费模式标签可以采取任何形式,但在一些配置中可以是附加到结束消费者指令的单个位。
处理元件被配置为异步地操作,使得处理元件能够在生产模式下操作并且能够传输消费者指令,同时该组处理元件中的处理元件继续对由它们自己的前端电路生成的触发指令进行解码。在一些配置中,当处于生产模式时,处理元件被配置为响应于从该组处理元件中的一个处理元件接收的消费者队列满信号而暂停触发指令的生成。在处理模式下操作的处理元件继续传输消费者指令。这些指令被缓冲,使得该组处理元件中的每个处理元件能够在该处理元件在消费模式下操作时检索指令以用于执行。为了避免缓冲器溢出,生产处理元件对消费者队列满信号做出响应。当消费者队列满时,该信号被断言(例如,设置为逻辑1),但是当队列具有容量(例如,队列具有用于一个或多个另外的消费者指令的空间)时,该信号被清除(例如,设置为逻辑0)。
处理元件的处理状态可以以各种方式定义。然而,在一些配置中,处理元件还包括用于存储执行状态的执行状态存储电路;并且前端电路被配置为针对该多个指令中的每个指令通过将处理元件的执行状态与对应于该指令的预期执行状态进行比较来确定该执行状态是否满足相关联的触发条件。在一些配置中,执行状态存储电路是被配置为存储响应于完成的指令而设置的执行状态的一个或多个专用寄存器。在其他配置中,执行存储电路是处理电路和前端电路能够访问的一个或多个通用寄存器或一个或多个断言寄存器(predicate register)。
消费者指令以各种方式从处于生产模式的处理元件传输到该组处理元件。在一些配置中,消费者指令经由网络传输。这种方法最小化了对附加电路的需要并且产生了紧凑的设计。在另选配置中,数据处理装置还包括独立于网络的生产者-消费者通信网络,其中消费者指令经由生产者-消费者通信网络传输。这种方法提供了消费者指令的传输与网络上发生的其他数据事务的独立性,并且防止了消费者指令由于网络流量而被延迟。
在一些配置中,除了响应于开始生产指令之外,解码电路还被配置为响应于开始消费指令而生成开始消费控制信号以控制处理元件在消费模式下操作;并且处理元件被配置为当在消费模式下操作时,检索从在生产模式下操作的对应处理元件传输的消费者指令,并且将消费者指令作为触发指令传递到解码电路。开始消费指令是指令集架构的一部分并且与特定操作码相关联,该特定操作码由解码电路解译以便产生所需控制信号以控制处理元件在消费模式下操作。当在消费模式下操作时,处理元件从生成其自己的触发指令切换到检索(获得)消费者指令并且将这些指令用作触发指令。因此,在消费模式,前端电路的操作被暂停。消费者指令由解码电路解码,并且如同它们已经由与该处理元件相关联的前端电路提供一样被执行。
虽然已经描述了其中解码电路响应于开始生产指令以及任选地响应于开始消费指令的配置,但是在一些配置中,提供了一种数据处理装置,该数据处理装置包括在单个芯片上经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构。该多个处理元件中的每个处理元件包括被配置为处理多个指令并且生成触发指令的前端电路。每个触发指令响应于处理元件的执行状态满足与该多个指令中的一个指令相关联的触发条件而生成。每个处理元件还包括:解码电路,该解码电路被配置为响应于接收到触发指令而生成控制信号;以及执行电路,该执行电路被配置为响应于控制信号执行处理操作并且修改处理元件的执行状态。该解码电路被配置为响应于开始消费指令而生成开始消费控制信号以控制处理元件在消费模式下操作。该处理元件被配置为当在消费模式下操作时,检索从在生产模式下操作的对应处理元件传输的消费者指令,并且将消费者指令作为触发指令传递到解码电路。
在一些配置中,处理装置设置有处理元件,处理元件被配置为在生产模式和(任选地)消费模式下操作。通过提供能够在生产模式和消费模式两者下操作的处理元件,可以提供具有高度灵活性的设计。在其他配置中,处理装置设置有仅能够在生产模式和消费模式中的一者下操作的多个处理元件。在其他配置中,处理装置设置有能够在生产模式下操作的第一子组的处理元件和能够在消费模式下操作的第二子组的处理元件。通过提供能够在生产模式下操作的第一子组的处理元件和能够在消费模式下操作的第二子组的处理元件,所提供的附加硬件的量可保持为最小。
在一些配置中,对于被配置为在消费模式下操作的处理元件,该处理元件还包括消费者指令存储电路,以缓冲从在生产模式下操作的对应处理元件传输的消费者指令;并且当在消费模式下操作时,处理元件从消费者指令存储电路检索消费者指令。可以以多种方式提供消费者指令存储装置。在一些示例性配置中,可以为每个处理元件提供专用存储缓冲器。另选地,在其他示例性配置中,消费者指令存储装置由针对每个处理元件提供的本地暂存存储装置提供。在一些示例性配置中,消费者指令存储电路是先入先出队列。
在一些配置中,能够在消费模式下操作的处理元件被配置为在消费者指令存储电路达到容量时,向对应的处理元件传输消费者队列满信号。以此方式,处理元件被配置为发信号通知在生产模式下操作的对应处理元件,以防止对应处理元件传输可能在作为消费者操作的处理元件处引起缓冲器溢出的另外的消费者指令。
当在消费模式下操作时,处理元件不使用前端电路。因此,在一些配置中,处理元件被配置为当在消费模式下操作时使前端电路进入功率节省状态。在一些配置中,进入功率节省状态的选项被硬连线到处理元件中。在另选配置中,功率节省状态由开始消费指令指定。以此方式,例如基于程序员可能具有的关于当在消费模式下操作时可能由处理器接收的指令的数量的知识,向程序员提供确定前端电路是否进入功率节省状态的选项。
功率节省状态可以被不同地定义,并且是使得前端电路消费较少功率的任何状态。在一些配置中,处理元件被配置为当在消费模式下操作时,通过对前端电路进行时钟门控来使前端电路进入功率节省状态。对前端电路进行时钟门控防止前端电路的内部状态改变。因此,在处于该模式时前端电路的功率使用被减少,并且前端电路保持接通并且可以以低时间和初始化成本从功率节省状态退出。
在一些配置中,处理元件被配置为当在消费模式下操作时,通过对前端电路进行功率门控来使前端电路进入功率节省模式。对前端电路进行功率门控导致前端电路被关断并且导致比时钟门控更大的功率节省。然而,与功率门控电路相关联的初始化时间或接通功率可能较高,并且因此功率门控可能不适于处理元件针对较少数量的指令进入消费模式。在一些示例性配置中,提供功率节省状态的选择并且可以在开始消费指令中对其进行指定。以此方式,为程序员提供了确定功率节省状态的水平的选项,从而提供了程序员可以使用以获得功率效率的最佳水平的灵活配置。
在一些配置中,处理元件被配置为当在消费模式下操作时,检测结束消费模式指示,并且响应于检测到结束消费模式指示,退出消费模式。如关于在生产模式下操作的处理元件所论述的,在一些配置中,结束消费模式指示被提供为离散指令(例如,将由在消费模式下操作的处理元件的解码电路解译)。在另选配置中,结束消费模式指示包括附加到由在生产模式下操作的对应处理元件传输的最终消费者指令的结束消费模式标签。在一些示例性配置中,由解码电路直接解译结束消费模式指示,以使处理元件退出消费模式。在另选配置中,结束消费模式指示触发处理元件运行作为触发指令的结束消费模式指令。结束消费模式指令是指令集架构的一部分,并且由处理元件的解码电路解译以生成致使处理元件停止在(退出)消费模式下操作的控制信号。
在一些配置中,当退出消费模式时,处理元件被配置为当退出消费模式时执行初始化例程以从前端电路清除数据。当例如通过将时钟门控或功率门控应用于前端电路而使前端电路进入功率节省模式时,前端电路可包含不再与处理元件的处理状态相关的旧数据。因此,初始化例程用于从前端电路清除旧数据,并且使处理元件的前端电路开始操作以基于处理元件的当前处理状态生成触发指令。
在消费模式期间,处理元件解码并执行消费者指令,该消费者指令由在生产模式下操作时的对应处理元件传输。因此,当在消费模式下操作时,处理元件不需要跟踪当前执行状态,因为仅当前端电路用于确定要传递到解码电路的触发指令时才需要该信息。因此,当退出消费模式时,处理元件的执行状态可能不正确。因此,在一些示例性配置中,处理元件还包括下一执行状态存储装置,以存储处理元件的下一执行状态;处理元件被配置为当在消费模式下操作时并且响应于检测到结束消费模式指示,将电路的执行状态设置为下一执行状态。该下一执行状态由程序员指定,并且在一些示例性配置中,被包括作为开始消费指令的一部分。因此,前端电路能够获得在确定是否已经满足与指令相关联的触发条件时要使用的处理电路的状态。
可以以各种方式提供下一执行状态存储装置。在一些配置中,下一执行状态存储装置被提供为指示在退出消费模式时要使用的执行状态的单个专用寄存器。在一些示例性配置中,下一执行状态存储装置被提供为其中记录有存储器位置的单个寄存器,该存储器位置提供在退出消费模式时由处理电路使用的执行状态。在其他示例性配置中,下一执行状态存储装置被布置为先入先出缓冲器,该先入先出缓冲器被配置为存储多个下一执行状态。以此方式,可以提供下一执行状态序列,以使得处理元件能够确定在消费模式下操作的实例序列之后将由前端电路使用的执行状态。
在一些示例性配置中,处理元件被配置为当在消费模式下操作时独立于处理元件的执行状态将消费者指令作为触发指令传递到解码电路。当在消费模式下操作时,确定指令被触发的次序的功能被委托给在生产模式下操作的对应处理元件。在消费模式下操作的处理元件不需要重复该过程,并且因此可以跳过与设置处理元件的执行状态相关联的步骤。这提供了节省功率的进一步手段,从而导致功率高效的设计。
如关于能够在生产模式下操作的处理元件所讨论的,在一些配置中,处理元件还包括用于存储执行状态的执行状态存储电路;并且前端电路被配置为针对特定指令通过将处理元件的执行状态与对应于该特定指令的预期执行状态进行比较来确定该执行状态是否满足对应条件。在一些配置中,执行状态存储电路是被配置为存储响应于完成的指令而设置的执行状态的一个或多个专用寄存器。在其他配置中,执行存储电路是处理电路和前端电路能够访问的一个或多个通用寄存器或一个或多个断言寄存器。
此外,并且如关于能够在生产模式下操作的处理元件所讨论的,在一些配置中,经由网络传输消费者指令。在另选配置中,数据处理装置还包括独立于网络的生产者-消费者通信网络,其中消费者指令经由生产者-消费者通信网络传输。
在能够在消费模式下操作的上述处理元件的一些配置中,解码电路被配置为响应于开始生产指令而生成开始生产控制信号以控制处理元件在生产模式下操作;并且处理元件被配置为当在生产模式下操作时,将触发指令作为消费者指令传输到该多个处理元件中的一组处理元件,当在消费模式下操作时,消费者指令将由该组处理元件中的每个处理元件执行。因此,提供其中处理元件可在生产模式、消费模式或在生产模式和消费模式两者下操作的配置。在这些情况中的每种情况下,设想这样的配置,其中在生产和/或消费模式下操作的处理元件根据上述配置中的任一种进行操作。
对应的处理元件可以是能够向多个处理元件传输消费者指令的任何处理元件。在一些配置中,对应处理元件是该多个处理元件中的一个处理元件。在此类配置中,该多个处理元件包括被配置为在生产模式下操作的处理元件和被配置为在消费模式下操作的处理元件两者。在另选配置中,对应处理元件是与该多个处理元件分开的外部处理元件。在此类配置中,作为初始化步骤的一部分,外部处理元件可以向处理元件传输消费者指令以预填充消费者队列。对应的处理元件可以是在单个芯片上(例如,在芯片的不同电源域或不同区域中)提供的外部处理元件。另选地,外部处理元件可以设置在与单个芯片不同(空间上分离)的单独芯片上。这消除了在空间架构中包括能够在消费模式下操作的处理元件的需要。
现在将参考附图描述特定的示例性配置。
图1示意性地示出了根据本技术的各种示例的被布置为空间架构的数据处理装置10。空间架构可通过在空间上而非在时间上铺开或展开形成程序执行的最耗时部分的计算来加速一些应用。通过使用能够同时操作的多个硬件单元在空间中铺开计算。除了利用由已经散布在芯片上的分散应用所提供的并发机会之外,空间架构诸如数据处理装置10还利用分布式片上存储器。以此方式,每个处理元件与其紧邻其的一个或多个存储器块相关联。因此,空间架构可以规避阻碍许多传统架构的性能的冯·诺伊曼瓶颈(von-Neumannbottleneck)。
数据处理装置10包括经由接口节点连接到高速缓存层级结构或主存储器的处理元件阵列,该接口节点另外被称为接口拼块(IT)并且经由多路复用器(X)连接到网络。根据本文描述的配置的数据处理装置10中的处理元件包括两种不同类型的电路。每个处理元件包括处理电路(另外被称为计算拼块(CT))和存储器控制电路(另外被称为存储器拼块(MT))。CT的作用是执行大量的数据处理操作和算术计算。MT的作用是执行对本地连接的存储器(本地存储电路)的数据访问以及到/从存储器的更远区域的数据传送,以及处理元件和其他处理元件之间的处理元件间存储器传送。
在一些示例性配置中,数据处理装置10的处理元件中的每个处理元件包括连接到每个存储器控制电路(MT)的本地存储电路,并且每个存储器控制电路(MT)具有到一个处理电路(CT)的直接连接。每个MT-CT簇连接到片上网络,该片上网络用于在存储器控制电路(MT)之间以及在每个存储器控制电路(MT)与接口节点(IT)之间传送数据。在另选配置中,本地存储电路设置在多个处理元件之间并且能够由多个存储器控制电路(MT)访问。处理元件可以是常规处理元件。另选地,处理元件可以是其中当满足相应的一个或多个触发条件时执行指令的触发处理元件。
图1中示出的数据处理装置10的处理元件各自经由一组输入和输出通道连接到片上网络,该片上网络包括开关,并且这些开关之间的数据链路形成二维环面拓扑布局。可以使用任何算法在片上网络周围路由数据。然而,一种特别有效的路由算法是被修改以考虑环面布局的xy路由算法。xy算法通过禁止沿y方向路由的数据随后沿x方向路由来防止网络内的路由死锁(routing deadlock)(处理元件和/或网络资源之间的循环依赖,这使得向前进展不可能)。
作为数据处理装置10的一部分示出的处理元件的子组包括能够在消费模式和/或生产模式两者下操作的处理元件。在更紧凑的配置中,一些处理元件仅能够在生产模式和消费模式中的一者下操作。在其他更灵活的配置中,处理元件的该子组中的处理元件中的每个处理元件能够在生产模式和消费模式两者下操作。在一些配置中,处理元件的该子组包括所有处理元件。
图2示意性地示出了处理步骤序列,这些处理步骤说明了由被配置为作为触发式空间架构进行操作的数据处理装置执行的典型工作流程。空间架构未在图2中示出,并且处理电路和存储器电路按照所执行的步骤的次序来布局。该示例考虑用于估计映射到空间架构上的运动的光流过程(optical flow process)的映射。在步骤12,提供两个帧:帧1和帧2。这些帧经由多路复用器X被传递到空间架构。在步骤14,存储器拼块MT0和MT1从网络获取帧,并且将它们传递到对应的计算拼块CT0、CT1和CT2。这里,为同一处理元件所共有的存储器拼块和计算拼块被分配相同的编号。在步骤16,计算拼块CT0、CT1和CT2计算梯度(导数滤波器和外积)。然后,在步骤18,外积由存储器拼块MT6-MT10保存,并且在步骤20,积分由对应的计算拼块CT6-CT10计算。精确的计算细节并不重要,然而,应注意,在运行时间期间,许多拼块执行相同的代码段。特别地,拼块CT0和CT1使用相同的算法来计算梯度,除了保存在CT0和CT1本地的寄存器中的滤波器值之外,所执行的指令是相同的。类似地,步骤14中的MT0至MT1、步骤18中的MT6至MT10以及步骤20中的CT6至CT10在运行时间期间执行相同的指令。发明人已经认识到,由于在不同处理元件上执行公共指令,因此存在在处理元件之间共享功能的可能性。特别地,在每个处理元件上的指令解码之前的步骤对于执行相同指令的所有处理元件是共同的。
图3a提供了根据本技术的各种示例性配置的数据处理装置30的概况。数据处理装置30包括在单个芯片42上经由网络34连接的多个处理元件32,该多个处理元件被布置为形成触发式空间架构。示出了处理元件32(1)、32(2)和32(N)。然而,可以提供以任何可想到的空间布置而布置在单个芯片42上的任何数量的处理元件32。每个处理元件32包括前端电路40,该前端电路被配置为处理多个指令并且生成触发指令。每个触发指令由前端电路40响应于处理元件32的执行状态满足与指令中的一个指令相关联的触发条件而生成。处理元件32还设置有解码电路38,以响应于从前端电路40接收到触发指令而生成控制信号,以使得处理电路36响应于控制信号而执行处理操作并修改处理元件的执行状态。
数据处理装置30的处理元件32中的任一处理元件可以被布置为响应于由解码电路38接收到的开始生产指令而在生产模式下操作。能够在生产模式下操作的处理元件32被配置为当处于生产模式时将由前端电路40生成的触发指令作为消费者指令来传输,该消费者指令将由被配置为在消费模式下操作的一组处理元件中的每个处理单元执行。类似地,数据处理装置30的处理元件32中的任一处理元件可以被布置为响应于由解码电路38接收到的开始消费指令而在消费模式下操作。能够在消费模式下操作的处理元件32被配置为当处于消费模式时检索从在生产模式下操作的对应处理元件传输的消费者指令,并且将消费者指令作为触发指令传递到解码电路38。
图3b提供了根据本技术的各种示例性配置的数据处理装置230的概况。数据处理装置230包括在单个芯片242上经由网络234连接的多个处理元件232,该多个处理元件被布置为形成触发式空间架构。示出了处理元件232(1)、232(2)和232(N)。然而,可以提供以任何可想到的空间布置而布置在单个芯片242上的任何数量的处理元件232。每个处理元件232包括前端电路240,该前端电路被配置为处理多个指令并且生成触发指令。每个触发指令由前端电路240响应于处理元件232的执行状态满足与指令中的一个指令相关联的触发条件而生成。处理元件232还设置有解码电路238,以响应于从前端电路240接收到触发指令而生成控制信号,以使得处理电路236响应于控制信号而执行处理操作并修改处理元件的执行状态。
数据处理装置230的处理元件232可被布置成响应于由解码电路238接收的开始消费指令而在消费模式下操作。能够在消费模式下操作的处理元件232被配置为当处于消费模式时检索从在生产模式下操作的对应处理元件传输的消费者指令,并且将消费者指令作为触发指令传递到解码电路238。与图3a相反,消费者指令从与多个处理元件232分开的在生产模式下操作的对应处理元件200提供。作为初始化步骤的一部分,对应的处理元件被布置成在生产模式下操作并且产生当在消费者模式下操作时由处理元件232执行的消费者指令以预填充消费者队列。
图4a和图4b提供在生产模式和消费模式下操作的处理元件的进一步细节。图4a示意性地示出了包括前端电路52(A)、解码电路56(A)和处理电路58(A)的处理元件50(A)。前端电路包括指令高速缓存62(A)并且被配置为在处理电路58(A)的执行状态60(A)满足与存储在指令高速缓存62(A)中的指令中的一个指令相关联的触发条件时生成触发指令。解码电路56(A)接收触发指令并且生成被传递到处理电路58(A)的控制信号。处理电路响应于控制信号执行处理操作并且修改处理元件的执行状态60(A)。该信息接着反馈到前端电路52(A),该前端电路通过将执行状态60(A)与指令高速缓存中的指令的触发条件进行比较来确定是否触发另外的指令。
当解码电路56(A)从前端电路52(A)接收到开始生产指令时,解码电路56(A)使处理元件50(A)进入生产模式。处理元件50(A)被配置为当在生产模式下操作时,将触发指令从前端电路52(A)传递到解码电路56(A),并且使开关54将触发指令作为消费者指令66输出。以此方式,处理元件50(A)继续生成触发指令,而与处理元件是否处于生产模式无关。然而,当处于生产模式时,处理元件50(A)执行将触发指令作为消费者指令来传递的附加功能。消费者指令66可经由专用通信信道输出或可经由网络64传递。
图4b示意性地示出了在消费模式下操作的处理元件50(B)。如图4a所示,处理元件设置有包括指令高速缓存62(B)的前端电路52(B)。处理元件50(B)还设置有解码电路56(B)和处理电路58(B)。当处理元件50(B)不在消费模式下操作时,这些元件的操作与已经描述的相同。因此,这里将省略这些细节。当在消费模式下操作时,处理元件50(B)切换操作,使得经由开关68从消费者指令66(例如,从处理元件50(A)传输并存储在消费者指令存储电路中)提供触发指令。当在消费模式下操作时,解码电路56(B)接收消费者指令66作为触发指令,并且生成控制信号以使处理电路58(B)执行处理操作。当在消费模式下操作时,不需要执行状态60(B)和前端电路52(B),并且可以(任选地)通过对这些部件进行时钟门控或功率门控来将前端电路置于功率节省模式。消费者指令66被示出为经由专用通信信道接收。然而,在一些配置中,消费者指令可经由网络64传递。
图5a和图5b提供了关于处理元件在正常操作、在生产模式和在消费模式的操作的进一步细节。首先,当处于正常操作(即,不在生产模式或消费模式下)时,如图5a中阐述的触发处理元件的操作。处理元件包括:当前状态锁存器70,该当前状态锁存器用于锁存处理电路的当前执行状态;指令高速缓存72、74,该指令高速缓存用于存储指令操作码72的序列以及对应的触发条件;以及下一状态信息74,该下一状态信息指示处理元件在成功执行对应指令时将达到的下一状态。处理元件还包括预解码电路76以执行初始预解码步骤以将存储在指令高速缓存72、74中的指令分割为适合于在功能单元80中处理的微操作。处理元件还包括:下一状态锁存器84,该下一状态锁存器用于存储处理电路在当前指令完成时将进入的下一状态;以及已完成锁存器82,该已完成锁存器用于锁存关于指令是否已完成的指示。最后,处理元件包括开关(去多路复用器)86,以响应于完成锁存器82指示当前指令已完成而更新存储在当前状态锁存器70中的处理电路的当前状态。当前状态锁存器70、指令高速缓存72、74、预解码电路76、已完成锁存器和下一状态锁存器一起形成前端电路,该前端电路负责基于处理元件的当前执行状态而生成触发指令。
在操作中,处理元件基于锁存在当前状态锁存器70中的当前执行状态而将存储在指令高速缓存72、74中的指令确定为下一触发指令。如果在当前状态锁存器70中锁存的当前状态匹配与存储在指令高速缓存72、74中的指令相关联的触发条件,则将该指令传递到预解码电路76以分解成微操作,这些微操作继而作为触发指令传递到解码电路78。另外,指令高速缓存72、74确定与满足触发条件的指令相关联的对应下一状态74。下一状态74被传递到下一状态锁存器84。此时,指令未完成,并且因此,完成锁存器存储是这种情况的指示。因此,当前状态锁存器70不用存储在下一状态锁存器84中的下一状态来更新。相反,存储在当前状态锁存器70中的当前状态经由开关86被反馈到当前状态锁存器70的输入,并且以此方式,当前状态锁存器被维持在当前执行状态。触发指令被传递到解码电路78,该解码电路生成控制信号以使功能单元80基于触发指令执行处理操作。当处理操作完成时,处理操作完成的指示被存储在完成锁存器中。另外,来自功能单元80的输出可用于基于在处理期间执行的操作来更新下一状态。一旦处理元件已在完成锁存器82中锁存处理已完成,则当前状态锁存器被更新以包含先前在下一状态锁存器中锁存的值。在当前状态锁存器70中锁存的新的当前状态然后可以被处理元件用来确定将被用来生成触发指令的下一指令。处理元件还可以被修改以在生产模式下操作。在这种情况下,当处于生产模式时,处理元件输出触发指令作为消费者指令88。
图5b示意性地示出了如何修改图5a中阐述的电路以使得处理元件能够在消费模式下操作。图5a的未修改的处理元件和图5b的修改的处理元件两者所共有的元件被分配相同的附图标记。处理元件还设置有下一状态队列92,以提供在处理元件退出消费模式之后的处理电路的下一执行状态的指示。经由附加开关90将下一状态队列馈送到开关86中。开关86和开关90组合在一起使得当前状态锁存器70采用:当结束消费模式指示被断言并且完成状态未被断言时的下一状态队列的值;当结束消费模式指示未被断言时以及当完成状态未被断言时当前执行状态的值;并且当断言完成状态时采用下一执行状态的值(独立于结束消费模式指示的值)。处理元件进一步设置有消费者队列94(消费者指令存储装置)以缓冲从在生产模式下操作的对应处理元件传输的消费者指令。消费者队列94存储消费者指令,当处理元件处于消费模式时,该消费者指令作为触发指令经由开关98馈送到解码电路78。当在消费模式下操作时,处理元件不需要前端电路96,该前端电路包括当前状态锁存器70、指令高速缓存72、74、预解码电路76、下一状态锁存器84和完成锁存器82。因此,在一些配置中,处理元件被配置为(例如)通过对前端电路96中的部件进行功率门控或时钟门控而致使前端电路96进入功率节省模式。
图6示意性地示出了根据一些示例性配置的数据处理装置100。数据处理装置100包括四个处理元件102。处理元件中的每个处理元件包括相同的电路,并且每个处理元件能够在正常模式(即,不在生产模式或消费模式下)、生产模式和消费模式下操作。处理元件中的每个处理元件中的相同部件各自都用相同的附图标记来标记,括号中提供的字母指示该电路所属的处理元件。每个处理元件102包括具有指令高速缓存106的前端电路104、解码电路108、具有执行状态存储装置112的处理电路110、下一执行状态队列122和消费者指令队列118。每个处理元件还包括开关114以及门116和120,以控制不同部件之间在不同模式中的每个模式下的交互。每个处理元件还连接到网络130。处理元件内的电路仅用于说明性目的。在一些示例性配置中,处理元件如图6中所阐述的那样被配置成具有用于前端电路104、解码电路108、处理电路110、下一执行状态队列122、消费者指令队列118、开关114以及门116和120中的每一者的单独功能块。然而,在其他示例性配置中,这些功能块中的任一者可组合为提供所描述功能的单个块。此外,处理元件可被修改为结合图4和图5中阐述的详细特征中的任一者。
在例示的实施方案中,数据处理装置100包括在生产模式下操作的第一处理元件102(A)。当在生产模式下操作时,处理元件102(A)不使用下一执行状态队列122(A),因为结束消费模式信号被设置为0,处理元件102(A)也不使用消费者队列118(A),因为消费模式信号被设置为零,并且因此门120(A)对于消费器队列118(A)是关闭的。前端电路104(A)基于存储在指令高速缓存106(A)中的指令和处理元件102(A)的当前执行状态112(A)生成触发指令。生成的指令作为消费者指令经由门116(A)输出(传输)到网络130。触发指令也被传递到解码电路108(A)。解码电路108(A)生成控制信号以使处理电路110(A)处理触发指令并更新执行状态112(A)。以此方式,处理元件102(A)既处理触发指令又将触发指令作为消费者指令传输到网络130。
第二处理元件102(B)是在正常模式下操作(即,其不在生产模式或消费模式下操作)的处理元件。第二处理元件102(B)从网络130接收消费者指令并将这些指令缓冲在消费者指令队列118(B)中。第二处理元件102(B)还可监视消费者指令队列118(B)并且响应于检测到消费者队列118(B)已满而向第一处理元件102(A)发出消费者队列满指示。第二处理元件102(B)还包括下一执行状态存储装置122(B),该下一执行状态存储装置可用于存储第二处理元件102(B)的下一执行状态,作为一旦第二处理元件102(B)进入并完成在消费模式下的操作时将被设置的执行状态。当在正常模式下操作时,门116(B)和120(B)各自关闭,使得第二处理元件102(B)既不传输消费者指令示也不检索消费者指令以作为触发指令传递到解码电路108(B)。在操作中,第二处理元件102(B)以与第一处理元件102(A)相同的方式操作,显著不同之处在于其不产生消费者指令,而是可缓冲从网络130接收的消费者指令以供在处理元件随后进入消费模式时执行。
第三处理元件102(C)是在消费模式下操作的处理元件。第三处理元件102(C)从网络130接收消费者指令并将这些指令缓冲在消费者指令队列118(C)中。第三处理元件102(C)还可监视消费者指令队列118(C)并且响应于检测到消费者队列118(C)已满而向第一处理元件102(A)发出消费者队列满指示。第三处理元件102(C)还包括下一执行状态存储装置122(C),该下一执行状态存储装置用于存储第三处理元件102(C)的下一执行状态,作为一旦第三处理元件102(B)完成在消费模式下的操作时将被设置的执行状态。当处于消费模式时,门116(C)被关闭,使得第三处理元件102(C)不能生成消费者指令。门120(C)是打开的(消费模式=1),使得存储在消费者指令队列118(C)中的消费者指令被传递到解码电路108(C)。解码电路108(C)接收消费者指令作为触发指令,并且生成控制信号以使处理电路110(C)根据消费者指令执行处理操作。
第四处理元件102(D)是结束消费模式的处理元件。第四处理元件102(D)从以与第三处理元件102(C)相同的方式运作转变为以与第二处理元件102(B)相同的方式运作。当处理元件响应于完成由第一处理元件102(A)发出的最终消费者指令而从在消费模式下操作转变为在正常模式下操作时,断言结束消费模式信号(结束消费模式=1)。这使得开关114(D)将存储在下一执行状态队列122(D)中的下一执行状态作为处理元件102(D)的当前执行状态。前端电路104(D)接着确定指令高速缓存106(D)中将用以生成待传递到解码电路108(D)并且因此控制处理电路110(D)的触发指令的下一指令。
图7示意性地示出了根据一些示例性配置的由被配置为在生产模式下操作的处理元件执行的步骤序列。处理元件是布置在单个芯片上以形成触发式空间架构的多个处理元件中的一个处理元件。该方法开始于步骤S70,其中处理元件将多个指令存储在例如与处理元件相关联的指令高速缓存中。该多个指令与处理元件在对应指令完成时将进入的对应多个存储的下一执行状态一起存储。流程然后进行到步骤S72,其中确定处理元件的执行状态是否满足与存储在指令高速缓存中的多个指令中的一个指令相关联的触发条件。如果为否,则流程在步骤S72等待。如果在步骤S72确定处理元件的执行状态满足触发条件,则流程进行到步骤S74,其中处理元件生成要被传递到解码电路并且当在生产模式下操作时要被传输到经由网络连接到处理元件的另外一组处理元件的触发指令。
然后流程进行到步骤S76,其中确定处理元件是否在生产模式下操作。如果在步骤S76确定处理元件未在生产模式下操作,则流程进行到步骤S78,其中确定触发指令是否包括开始生产指令。如果在步骤S78确定指令包括开始生产指令,则流程进行到步骤S84,其中处理元件的解码电路生成控制信号以使处理元件进入生产模式。然后流程返回到步骤S70。然而,如果在步骤S78确定触发指令不包括开始生产指令,则流程进行到步骤S80,其中解码电路生成控制信号。流程然后进行到步骤S82,其中处理元件的处理电路响应于控制信号执行处理操作。
另一方面,如果在步骤S76确定处理元件正在生产模式下操作,则流程进行到步骤S86,其中确定触发指令是否包括结束生产指令。如果为是,则流程进行到步骤S92,其中处理元件向连接到该处理元件的另外一组处理元件传输结束消费指示,以向那些处理元件指示该处理元件正在结束生产模式。流程然后进行到步骤S94,其中处理元件停止在生产模式下操作。然后流程返回到步骤S70。另一方面,如果在步骤S86确定触发指令不包括结束生产指令,则流程进行到步骤S88,其中确定消费者队列满信号是否被断言。如果在步骤S88确定消费者队列满信号被断言,则流程进行到步骤S92,其中处理元件等待(暂停)预先确定长度的时间。流程然后返回到步骤S88以确定消费者队列满信号是否仍然被断言。如果在步骤S88确定没有断言消费者队列满信号,则流程进行到步骤S90,其中将触发指令作为消费者指令传输到另外一组处理元件。流程然后进行到步骤S80,其中处理元件使用解码电路生成控制信号。流程然后进行到步骤S82,其中处理元件响应于控制信号执行处理操作。然后流程返回到步骤S70。
图8示意性地示出了根据一些示例性配置的由处理元件执行的步骤序列。处理元件是布置在单个芯片上以形成触发式空间架构的多个处理元件中的一个处理元件。流程开始于步骤S100,其中确定处理元件是否在消费模式下操作。如果确定处理元件不在消费模式下操作,则流程进行到步骤S102,其中处理元件将多个指令存储在例如与处理元件相关联的指令高速缓存中。该多个指令与处理元件在对应指令完成时将进入的对应多个存储的下一执行状态一起存储。流程然后进行到步骤S104,其中确定处理元件的执行状态是否满足与存储在指令高速缓存中的多个指令中的一个指令相关联的触发条件。如果为否,则流程在步骤S104等待。如果在步骤S104确定处理元件的执行状态满足触发条件,则流程进行到步骤S106,其中处理元件生成要被传递到解码电路并且当在生产模式下操作时要被传输到经由网络连接到处理元件的另外一组处理元件的触发指令。
流程然后进行到步骤S108,其中确定触发指令是否包括开始消费指令。如果确定触发指令包括开始消费指令,则流程进行到步骤S114,其中处理元件进入消费模式。例如,解码电路生成控制信号以使处理元件在消费模式下操作。流程然后进行到步骤S116,其中(任选地)处理元件使前端电路进入功率节省状态。功率节省状态可以例如由开始消费指令来指定。然后流程返回到步骤S100。另选地,如果在步骤S108确定触发指令不包括开始消费指令,则流程进行到步骤S110,其中处理元件的解码电路生成控制信号。流程然后进行到步骤S112,其中处理元件响应于控制信号执行处理元件。然后流程返回到步骤S100。
如果在步骤S100确定处理元件正在消费模式下操作,则流程进行到步骤S118。在步骤S118处,处理元件检索已从在生产模式下操作的对应处理元件传输并且已缓冲于与处理元件相关联的消费者指令存储装置中的消费者指令。流程然后进行到步骤S120,其中确定检索的指令是否包括结束消费模式指示。如果确定已经检索到结束消费模式指示,则流程进行到步骤S124,其中处理元件退出消费模式。例如,解码电路基于结束消费模式指示生成控制信号,该控制信号使得处理元件退出消费模式。然后流程返回到步骤S100。
另选地,如果在步骤S120确定检索的消费者指令不包括消费结束指示,则流程进行到步骤S122,其中消费者指令作为触发指令被传递到解码电路。流程然后进行到步骤S110,其中处理元件的解码电路生成控制信号。流程然后进行到步骤S112,其中处理元件响应于控制信号执行处理元件。然后流程返回到步骤S100。
作为具体示例,处理元件可以被配置为当在正常模式下操作(不在生产模式或消费模式下操作)时执行如在以下伪代码中阐述的操作:
#接收数据输入
当%p==0000_0000with%i0.0:
mov.h%r0,%i0;deq%i0;set%p=0000_0001;
#平方输入(将%r0乘以%r0并存储在%r1中)
当%p==0000_0001:
mul.h%r1,%r0,%r0;set%p=0000_0010;
#除(将%r1的内容除以%r2)
当%p==0000_0010:
sdiv.h%r3,%r1,%r2;set%p=0000_0011;
#将数据发送到其他拼块
当%p==0000_0011:
mov.h%o0,%r3;set%p=0000_0100;
#CT自然停止
当%p==0000_0100:
hlt;
在上述代码中,%p表示电路的执行状态,%i0表示输入通道,%o0表示输出通道,并且$r0、%r1……表示与处理元件相关联的寄存器。因此,该代码在输入通道%i0.0上接收数据值并且使该数据出队。输入数据然后被平方并除以另一值。结果被存储在寄存器%r3中,然后在处理元件停止之前经由输出通道被传输。每个步骤的结构相同。处理元件等待直到电路的执行状态满足期望的条件。然后执行指令。最后,处理元件的执行状态被设置为新值,从而使得能够触发另外的指令。
当上述代码由多个处理元件运行时,仅执行与检查和设置单个处理元件上的执行状态相关联的步骤可能是有益的。根据本文所公开的各种配置,处理元件可在生产模式下操作并且可例如执行以下指令序列:
当%p==0000_0000:
begin_producing%o0;set%p=0000_0001;
#处理元件现在正在生产模式下操作。该
#以下指令在处理元件上运行,并且
#作为消费者指令传输到另外一组处理元件
#接收数据输入
当%p==0000_0001with%i0.0:
mov.h%r0,%i0;deq%i0;set%p=0000_0010;
#平方输入(将%r0乘以%r0并存储在%r1中)
当%p==0000_0010:
mul.h%r1,%r0,%r0;set%p=0000_0011;
#除(将%r1的内容除以%r2)
当%p==0000_0011:
sdiv.h%r3,%r1,%r2;set%p=0000_0100;
#将数据发送到其他拼块
当%p==0000_0100:
mov.h%o0,%r3;set%p=0000_0101;
#退出生产模式
当%p==0000_0101:
end_producing%o0;set%p=0000_0110;
#CT自然停止
当%p==0000_0110:
hlt;
上述伪代码与由在正常模式(不是生产模式或消费模式)下操作的处理元件运行的伪代码相同。然而,代码已经被修改为包括开始生产指令和结束生产指令,以使得处理元件在中间指令的执行期间在生产模式下操作。在该示例中,经由输出通道%o0传输中间指令以供其他处理元件使用。消费者指令被传输到的处理元件可以被预先指定或者作为开始生产指令的一部分。
在消费者侧,像正常数据一样经由网络接收指令(另选地,在其他示例性配置中,可以使用专用信道)。指令被缓冲在本地消费者指令存储装置中,以便在处理元件进入消费模式时使用。在一些配置中,“.tail”属性可用于指示从在消费者模式下操作的对应处理器接收的指令的结束。接收处理元件将接收的指令存储在以结束消费指令结束的消费者指令队列中。在稍后的某个时刻,接收处理器可以执行开始消费指令,使得接收处理元件从消费者指令存储装置检索消费者指令并且将这些指令作为触发指令传递到解码电路。当处理元件已完成执行存储的指令时,执行的最终指令为结束消费指令。结束消费指令使处理元件从下一执行状态队列检索下一执行状态并恢复正常处理任务。在一些示例性配置中,处理元件可以使用以下指令退出消费模式:
当%p==0000_0000with%i0.tail:
end_consuming;deq%i0;set%p=<<next state from next state queue>>;在一些示例性配置中,处理元件可以使用以下指令进入消费模式:
当%p==0000_0001with%i0:
begin_consuming;deq%i0;
开始消费指令被执行以使得处理元件在消费模式下操作。在消费模式下完成消费者指令的执行之后,处理元件将处理器的执行状态设置为从下一状态队列检索的下一状态。
简而言之,提供了一种数据处理装置和操作数据处理装置的方法。该数据处理装置包括在单个芯片上经由网络连接的多个处理元件,该多个处理元件被布置为形成触发式空间架构。每个处理元件包括前端电路,该前端电路被配置为生成触发指令的,该触发指令被传递到解码电路以使得该处理元件执行处理操作。一些处理元件被配置为在生产模式下操作,其中该处理元件将该触发指令作为消费者指令来传输,以便由一组处理元件中的每个处理元件在消费模式下操作时执行。一些处理元件被配置为在该消费模式下操作,其中该处理元件检索从在生产模式下操作的处理元件传输的消费者指令,并且将该消费者指令传递到该解码电路。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可以具有提供所限定的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围的前提下,本领域的技术人员可在其中实现各种变化、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征一起进行各种组合。

Claims (30)

1.一种数据处理装置,所述数据处理装置包括在单个芯片上经由网络连接的多个处理元件,所述多个处理元件被布置为形成触发式空间架构,所述多个处理元件中的每个处理元件包括:
前端电路,所述前端电路被配置为处理多个指令,并且生成触发指令,每个触发指令响应于所述处理元件的执行状态满足与所述多个指令中的一个指令相关联的触发条件而生成;
解码电路,所述解码电路被配置为响应于接收到所述触发指令而生成控制信号;以及
执行电路,所述执行电路被配置为响应于所述控制信号执行处理操作并且修改所述处理元件的所述执行状态,
其中:
所述解码电路被配置为响应于开始消费指令而生成开始消费控制信号以控制所述处理元件在消费模式下操作;并且
所述处理元件被配置为当在所述消费模式下操作时,检索从在生产模式下操作的对应处理元件传输的消费者指令,并且将所述消费者指令作为触发指令传递到所述解码电路。
2.根据权利要求1所述的数据处理装置,其中:
所述处理元件还包括消费者指令存储电路,以缓冲从在所述生产模式下操作的所述对应处理元件传输的所述消费者指令;并且
当在所述消费模式下操作时,所述处理元件从所述消费者指令存储电路检索所述消费者指令。
3.根据权利要求2所述的数据处理装置,其中所述消费者指令存储电路是先入先出队列。
4.根据权利要求2至3中任一项所述的数据处理装置,其中所述处理元件被配置为当所述消费者指令存储电路达到容量时,向所述对应处理元件传输消费者队列满信号。
5.根据任一前述权利要求中任一项所述的数据处理装置,其中所述处理元件被配置为当在所述消费模式下操作时使所述前端电路进入功率节省状态。
6.根据权利要求5所述的数据处理装置,其中所述处理元件被配置为当在所述消费模式下操作时,通过对所述前端电路进行时钟门控来使所述前端电路进入所述功率节省状态。
7.根据权利要求5所述的数据处理装置,其中所述处理元件被配置为当在所述消费模式下操作时,通过对所述前端电路进行功率门控来使所述前端电路进入所述功率节省模式。
8.根据任一前述权利要求所述的数据处理装置,其中所述处理元件被配置为当在所述消费模式下操作时,检测结束消费模式指示,并且响应于检测到所述结束消费模式指示,退出所述消费模式。
9.根据权利要求8所述的数据处理装置,其中所述结束消费模式指示包括附加到由在所述生产模式下操作的所述对应处理元件传输的最终消费者指令的结束消费模式标签。
10.根据权利要求8或权利要求9所述的数据处理装置,其中所述处理元件被配置为当退出所述消费模式时执行初始化例程以从所述前端电路清除数据。
11.根据权利要求8至10中任一项所述的数据处理装置,其中:
所述处理元件还包括下一执行状态存储装置,以存储所述处理元件的下一执行状态;
所述处理元件被配置为当在所述消费模式下操作时并且响应于检测到所述结束消费模式指示,将所述电路的所述执行状态设置为所述下一执行状态。
12.根据权利要求11所述的数据处理装置,其中所述下一执行状态存储装置被布置为先入先出缓冲器,所述先入先出缓冲器被配置为存储多个下一执行状态。
13.根据任一前述权利要求所述的数据处理装置,其中所述处理元件被配置为当在所述消费模式下操作时独立于所述处理元件的所述执行状态将所述消费者指令作为触发指令传递到所述解码电路。
14.根据任一前述权利要求所述的数据处理装置,其中:
所述处理元件还包括用于存储所述执行状态的执行状态存储电路;并且
所述前端电路被配置为针对特定指令通过将所述处理元件的所述执行状态与对应于所述特定指令的预期执行状态进行比较来确定所述执行状态是否满足对应条件。
15.根据任一前述权利要求所述的数据处理装置,其中所述消费者指令经由所述网络传输。
16.根据任一前述权利要求所述的数据处理装置,还包括独立于所述网络的生产者-消费者通信网络,其中所述消费者指令经由所述生产者-消费者通信网络传输。
17.根据任一前述权利要求所述的数据处理装置,其中:
所述解码电路被配置为响应于开始生产指令而生成开始生产控制信号以控制所述处理元件在所述生产模式下操作;并且
所述处理元件被配置为当在所述生产模式下操作时,将所述触发指令作为消费者指令传输到所述多个处理元件中的一组处理元件,当在所述消费模式下操作时,所述消费者指令将由所述一组处理元件中的每个处理元件执行。
18.根据任一前述权利要求所述的数据处理装置,其中所述对应处理元件是所述多个处理元件中的一个处理元件。
19.根据权利要求1至17中任一项所述的数据处理装置,其中所述对应处理元件是与所述多个处理元件分开的外部处理元件。
20.一种数据处理装置,所述数据处理装置包括在单个芯片上经由网络连接的多个处理元件,所述多个处理元件被布置为形成触发式空间架构,所述多个处理元件中的每个处理元件包括:
前端电路,所述前端电路被配置为处理多个指令,并且生成触发指令,每个触发指令响应于所述处理元件的执行状态满足与所述多个指令中的一个指令相关联的触发条件而生成;
解码电路,所述解码电路被配置为响应于接收到所述触发指令而生成控制信号;和
执行电路,所述执行电路被配置为响应于所述控制信号执行处理操作并且修改所述处理元件的所述执行状态,
其中:
所述解码电路被配置为响应于开始生产指令而生成开始生产控制信号以控制所述处理元件在生产模式下操作;并且
所述处理元件被配置为当在所述生产模式下操作时,将所述触发指令作为消费者指令传输到所述多个处理元件中的一组处理元件,当在消费模式下操作时,所述消费者指令将由所述一组处理元件中的每个处理元件执行。
21.根据权利要求20所述的数据处理装置,其中所述解码电路被配置为响应于结束生产指令而生成结束生产控制信号以控制所述处理元件停止在所述生产模式下的操作。
22.根据权利要求21所述的数据处理装置,其中所述解码电路被配置为响应于所述结束生产指令而将结束消费模式指示传输到所述一组处理元件。
23.根据权利要求22所述的数据处理装置,其中消费模式结束指示包括附加到传输到所述一组处理元件的最终消费者指令的结束消费模式标签。
24.根据权利要求20至23中任一项所述的数据处理装置,其中当处于所述生产模式时,所述处理元件被配置为响应于从所述一组处理元件中的一个处理元件接收的消费者队列满信号而暂停触发指令的生成。
25.根据权利要求20至24中任一项所述的数据处理装置,其中:
所述处理元件还包括用于存储所述执行状态的执行状态存储电路;并且
所述前端电路被配置为针对所述多个指令中的每个指令通过将所述处理元件的所述执行状态与对应于所述指令的预期执行状态进行比较来确定所述执行状态是否满足相关联的触发条件。
26.根据权利要求20至25中任一项所述的数据处理装置,其中所述消费者指令经由所述网络传输。
27.根据权利要求20至26中任一项所述的数据处理装置,还包括独立于所述网络的生产者-消费者通信网络,其中所述消费者指令经由所述生产者-消费者通信网络传输。
28.根据权利要求20至27中任一项所述的数据处理装置,其中:
所述解码电路被配置为响应于开始消费指令而生成开始消费控制信号以控制所述处理元件在所述消费模式下操作;并且
所述处理元件被配置为当在所述消费模式下操作时,检索从在所述生产模式下操作的对应处理元件传输的消费者指令,并且将所述消费者指令作为触发指令传递到所述解码电路。
29.一种用于操作数据处理装置的数据处理方法,所述数据处理装置包括在单个芯片上经由网络连接的多个处理元件,所述多个处理元件被布置为形成触发式空间架构,每个处理元件包括前端电路、解码电路和执行电路,所述方法包括:
使用所述前端电路处理多个指令,并且生成触发指令,每个触发指令响应于所述处理元件的执行状态满足与所述多个指令中的一个指令相关联的触发条件而生成;
响应于接收到所述触发指令,使用所述解码电路生成控制信号;
响应于所述控制信号执行处理操作执行电路,并且修改所述处理元件的所述执行状态;
响应于开始消费指令,使用所述解码电路生成开始消费控制信号以控制所述处理元件在消费模式下操作;并且
当在所述消费模式下操作时,检索从在生产模式下操作的对应处理元件传输的消费者指令,并且将所述消费者指令作为触发指令传递到所述解码电路。
30.一种用于操作数据处理装置的数据处理方法,所述数据处理装置包括在单个芯片上经由网络连接的多个处理元件,所述多个处理元件被布置为形成触发式空间架构,每个处理元件包括前端电路、解码电路和执行电路,所述方法包括:
使用所述前端电路处理多个指令,并且生成触发指令,每个触发指令响应于所述处理元件的执行状态满足与所述多个指令中的一个指令相关联的触发条件而生成;
响应于接收到所述触发指令,使用所述解码电路生成控制信号;以及
响应于所述控制信号使用所述执行电路执行处理操作,并且修改所述处理元件的所述执行状态;
响应于开始生产指令,使用所述解码电路生成开始生产控制信号以控制所述处理元件在生产模式下操作;并且
当在所述生产模式下操作时,将所述触发指令作为消费者指令传输到所述多个处理元件中的一组处理元件,当在消费模式下操作时,所述消费者指令将由所述一组处理元件中的每个处理元件执行。
CN202280052101.6A 2021-07-26 2022-06-22 用于在处理元件之间传输触发指令的数据处理装置和方法 Pending CN117716339A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2110727.1A GB2609243B (en) 2021-07-26 2021-07-26 A data processing apparatus and method for transmitting triggered instructions between processing elements
GB2110727.1 2021-07-26
PCT/GB2022/051589 WO2023007114A1 (en) 2021-07-26 2022-06-22 A data processing apparatus and method for transmitting triggered instructions between processing elements

Publications (1)

Publication Number Publication Date
CN117716339A true CN117716339A (zh) 2024-03-15

Family

ID=77540954

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280052101.6A Pending CN117716339A (zh) 2021-07-26 2022-06-22 用于在处理元件之间传输触发指令的数据处理装置和方法

Country Status (4)

Country Link
KR (1) KR20240035590A (zh)
CN (1) CN117716339A (zh)
GB (1) GB2609243B (zh)
WO (1) WO2023007114A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4897779A (en) * 1988-07-20 1990-01-30 Digital Equipment Corporation Method and apparatus for optimizing inter-processor instruction transfers
EP1821202B1 (en) * 2006-02-16 2011-01-12 VNS Portfolio LLC Execution of instructions directly from input source

Also Published As

Publication number Publication date
GB2609243A (en) 2023-02-01
WO2023007114A1 (en) 2023-02-02
GB2609243B (en) 2024-03-06
KR20240035590A (ko) 2024-03-15
GB202110727D0 (en) 2021-09-08

Similar Documents

Publication Publication Date Title
US10942737B2 (en) Method, device and system for control signalling in a data path module of a data stream processing engine
US10445234B2 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10915471B2 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10467183B2 (en) Processors and methods for pipelined runtime services in a spatial array
US9753729B2 (en) System for selecting a task to be executed according to an output from a task control circuit
US8996761B2 (en) Virtual queue processing circuit and task processor
WO2020005448A1 (en) Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator
US9405552B2 (en) Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
US20190004955A1 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US7376952B2 (en) Optimizing critical section microblocks by controlling thread execution
TW202115575A (zh) 靜止可重組態的資料處理器
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
KR20190044572A (ko) 명령 세트
WO2020005449A1 (en) Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
JP3709040B2 (ja) 非同期データ処理装置
JP2000047872A (ja) 低消費電力動作機能を備えたマイクロプロセッサ
US20170147345A1 (en) Multiple operation interface to shared coprocessor
US11907713B2 (en) Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US10659396B2 (en) Joining data within a reconfigurable fabric
KR20190044573A (ko) 컴퓨터 프로세싱의 타이밍 제어
Leibson et al. Configurable processors: a new era in chip design
EP1766510B1 (en) Microprocessor output ports and control of instructions provided therefrom
CN117716339A (zh) 用于在处理元件之间传输触发指令的数据处理装置和方法
KR20090016645A (ko) 컴퓨터의 입력을 모니터링하는 방법과 장치
US20090210653A1 (en) Method and device for treating and processing data

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