CN111651383A - 用于具有数据流管理器的处理器中的数据流的方法和装置 - Google Patents

用于具有数据流管理器的处理器中的数据流的方法和装置 Download PDF

Info

Publication number
CN111651383A
CN111651383A CN202010140200.2A CN202010140200A CN111651383A CN 111651383 A CN111651383 A CN 111651383A CN 202010140200 A CN202010140200 A CN 202010140200A CN 111651383 A CN111651383 A CN 111651383A
Authority
CN
China
Prior art keywords
processing
memory
processing elements
data
subset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010140200.2A
Other languages
English (en)
Other versions
CN111651383B (zh
Inventor
J·赫里茨
T·施米茨
罗法隆
D·赫尔顿
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Priority to CN202410029292.5A priority Critical patent/CN117873929A/zh
Publication of CN111651383A publication Critical patent/CN111651383A/zh
Application granted granted Critical
Publication of CN111651383B publication Critical patent/CN111651383B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • G06F9/3891Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

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)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及用于具有数据流管理器的处理器中的数据流的方法和装置。本文描述了用于在处理器中实现数据流的方法、装置和系统。数据流管理器可以被配置为基于所述处理器的多个处理元件的状态信息生成用于计算操作的配置分组。因此,处理器的多个处理元件可以基于所述配置分组并发地处理数据流。例如,所述多个处理元件可以实现处理元件到存储器的映射,同时还实现针对所述数据流的通过所述处理器的识别路径。在所述处理器的某些处理元件上执行所述计算操作之后,可以提供处理结果。在语音信号处理操作中,可以将所述处理结果与音素进行比较以识别所述处理结果中人类语音的此类组成部分。一旦被动态地识别,所述处理元件就可以继续比较人类语音的附加组成部分以例如促进音频录制的处理。

Description

用于具有数据流管理器的处理器中的数据流的方法和装置
技术领域
本申请一般涉及数据处理和存储器设备。
背景技术
可以使用一些硬件(例如,硅)计算平台来实现用于无线通信的数字信号处理,诸如数字基带处理或数字前端实现方案。例如,多媒体处理和数字射频(RF)处理可以在无线收发器的数字前端实现方案中完成,如由专用集成电路(ASIC)所实现的那样。各种硬件平台均可以实现这种数字信号处理,诸如ASIC、作为现场可编程门阵列(FPGA)的一部分实现的数字信号处理器(DSP)或片上系统(SoC)。然而,这些解决方案中的每个通常都需要实现特定于硬件实现方案的定制信号处理方法。例如,数字信号处理器可以在蜂窝基站处实现数字处理的特定部分,其中单个硬件部件(例如,处理器)被配置为实现特定功能。例如,所执行的整个信号处理的每个部分可以由不同的、专门设计的硬件来实现,从而使得较为复杂。
此外,对于将无线通信转移到“第五代”(5G)系统感兴趣。5G有望带来更高的速度和普遍性,但是尚未建立处理5G无线通信的方法论。在5G无线通信的一些实现方案中,可以比传统无线通信设备更低的功率要求操作的“物联网”(IoT)设备可以利用窄带无线通信标准,所述窄带无线通信标准可以称为窄带IoT(NB-IoT)。例如,3GPP规范的版本13描述了窄带无线通信标准。
同时,高速存储器访问和降低的功耗是半导体设备所要求的特征。近年来,已经采用多核处理器来执行应用程序的系统已经导致了对用作主存储器(例如,动态随机存取存储器(DRAM))的存储器设备的更快访问模式以及更多的随机访问模式。例如,对DRAM的典型访问模式按顺序重复存储体激活、读取访问或写入访问以及存储体预充电。需要数据流往返于存储器设备以进行更快访问。计算设备的效率和性能可能受到不同的存储器设备和/或处理器架构的影响。因此,例如,需要快速且有效的访问模式以促进多核处理器中的数据流。
发明内容
在本公开中,提供了一种方法。所述方法包括:接收与多个处理元件相关联的状态信息,所述状态信息包括每个处理元件的可用性状态和每个处理元件的相对位置,每个处理元件包括至少一个操作数处理单元和缓冲器;基于所述状态信息来为计算操作选择所述多个处理元件的子集;基于对所述处理元件的所述子集的选择,识别到所述子集中的每个处理元件的多个数据流,所述多个数据流被配置为实现所述计算操作;将所述子集中的每个处理元件映射到一或多个存储器地址以生成配置分组,所述配置分组包含指示所述映射和所述多个数据流的数据;以及将所述配置分组提供给所述多个处理元件。
在本公开中,提供了一种装置。所述装置包括:多个处理元件,其可配置为处理计算操作;和数据流管理器,其耦合到所述多个处理元件并且被配置为:接收与所述多个处理元件相关联的状态信息;基于所述状态信息来为计算操作选择所述处理元件的子集;以及将配置分组提供给所述多个处理元件,所述配置分组包含指示用于所述多个处理元件的存储器地址的映射和多个数据流的数据,所述多个数据流被布置为实现所述计算操作。
在本公开中,提供了一种方法。所述方法包括:在处理元件处读取与计算操作相关联的配置分组;读取存储在缓冲器中的数据,所述数据与从所述配置分组中读取的至少一个存储器地址相关联;在所述处理元件处对与所述配置分组相关联的数据流执行所述计算操作的一部分以生成处理结果;将所述处理结果与存储在存储器中的数据进行比较;以及基于所述比较,将所述处理结果提供给所述存储器或另一个处理元件。
附图说明
图1是根据本文描述的示例布置的计算系统的框图。
图2是根据图1的示例布置的处理器的框图。
图3是根据本文描述的示例布置的方法的流程图。
图4是根据本文描述的示例布置的方法的流程图。
图5A至5B是根据本文描述的示例实现的处理器的示意图。
图6是根据本文描述的示例布置的计算系统的框图。
图7示出了根据本公开的各方面的系统的示例。
具体实施方式
本文描述了用于在处理器中实现数据流的方法、装置和系统。处理器的多个处理元件可以并发地处理数据流。例如,多个处理元件可以实现处理元件到存储器单元和/或共享本地存储器的映射,同时还实现针对数据流的通过处理器的识别路径。可以包括共享存储器空间的数据流管理器可以被配置为基于处理器的多个处理元件的状态信息生成用于计算操作的配置分组。配置分组包含指示处理元件的映射和所识别的数据流的数据。在将此类配置分组提供给处理器的某些处理元件时,与硬件实现方案特定的常规方案相比,处理器中的数据流可以被更快地实现(例如,更快访问存储器)并且可以利用更少功率。例如,在执行其中数据流管理器已经将配置分组提供给某些处理元件的计算操作中,处理器可以根据配置分组的所识别的数据流来访问物理上更接近处理器的存储器单元。或者,作为另一个示例,在执行计算操作时,处理器可以利用数据流管理器的共享存储器空间来存储中间处理结果和/或将中间处理结果提供给某些处理元件;而不是例如将中间处理结果存储在外部存储器单元中,后者可能需要更多功率或更多时间来访问。
作为计算操作的示例,在本文描述的处理器中实现的数据流可以包含用于语音信号处理应用(诸如用于在子集的每个相应处理元件中处理话语的单个音素)的数据流。
如本文所述,有利地,在处理器或计算设备的某些处理元件中执行或实现的计算操作可以包含将包含指示映射和数据流的数据的配置分组提供给那些处理元件。在将配置分组提供给某些处理元件时,处理器和/或计算设备可以有效地利用可用的处理元件和/或数量减少的处理元件。因此,与可以分配某些处理元件以执行特定功能的常规硬件方案相反,本文描述的系统和方法可以基于某些处理元件的可用性和物理位置来促进对计算操作的高效且灵活处理。另外地或可选地,此类系统和方法可以促进对IoT设备的处理,所述IoT可以比传统计算/通信设备更低的功率要求来操作。例如,在数据流管理器已经选择了特定数量的处理元件时,相较于向并非实现所述特定操作所需的处理元件供电的常规处理器,利用选定的处理元件实现计算操作的处理器和/或计算设备可以利用更少的功率。
图1是根据本文中描述的实例布置的计算系统100的示意图。计算系统100包含耦合到存储器单元140a、140b的处理器105。处理器可以实现包含共享存储器空间130的数据流管理器120。例如,共享存储器空间130可以是SRAM存储器单元。数据流管理器120经由控制总线133将配置分组127提供给处理元件115。处理元件115可以经由存储器接口135a、135b耦合到存储器单元140a、140b。例如,可以经由处理器105的数据总线来实现这种耦合。处理器105可以实现从各种数据源接收的计算操作或在处理器105上执行的程序。计算操作可以是任何操作数处理操作,诸如在数字信号处理操作(例如,语音信号处理操作)中经常出现的那些操作数处理操作。例如,计算操作可能需要操作数处理单元处理某些操作数,以生成计算操作的处理结果。作为一个示例,计算操作可以包含操作数乘法和/或操作数加法。多个这种操作数运算可以级联在一起以执行更复杂的信号处理操作,或者诸如滤波、均衡、变换、矩阵计算等的计算操作。因此,为了通过处理元件115(每个处理元件具有操作数处理单元)执行此类计算操作,数据流管理器120利用映射和所识别的数据流将配置分组127提供给处理元件115,以访问存储器单元140a、140b中的一或多个并执行任何数量的计算操作。
处理器105可以利用数据流管理器120的所生成的配置分组127来执行计算操作。在各种示例中,处理器105在一些示例中可以包含多个核心的多核处理器。可以例如使用独立地读取和执行程序指令的处理元件115来实现多个核心。例如,可以将程序指令提供给单个处理元件115来实现计算操作,其中每个处理元件115将指令存储在与相应的处理元件115相关联的高速缓存中。在一些示例中,每个处理元件115可以包含高速缓存(例如,SRAM单元)以存储针对计算操作的检索的程序指令。
数据流管理器120可以将配置分组127提供给处理元件115,以指示处理元件如何例如经由从处理器105到存储器系统的数据总线利用可以在处理器105外部的存储器系统来实现计算操作。例如,数据流管理器120可以在配置分组127中提供指示处理元件115的地址到存储器单元140a、140b的相应地址的映射的数据。数据流管理器120可以例如在执行计算操作之前将此类配置分组127提供给处理元件115。在一些示例中,处理元件115可以从共享存储器空间130的地址而不是从存储器单元140a、140b的地址中检索数据。配置分组127中所包含的映射可以用于实现计算操作,诸如语音信号处理操作,如本文的方法(例如,方法400)中所描述的。
处理元件115中的每个可以使用一或多个操作数处理单元(诸如算术逻辑单元(ALU)、位操作单元、乘法单元、累加单元、加法器单元、查找表单元、存储器查找单元或其任意组合)来实现。在一些示例中,处理元件115中的每个可以包含用于执行计算操作的电路(包含定制电路)和/或固件。处理元件115中的每个可以被实现为微处理器或数字信号处理器(DSP)或其任意组合。例如,处理元件115中的每个可以包含多个级别的高速缓存,诸如一级高速缓存和二级高速缓存、内核和寄存器。处理元件115可以从存储器单元140a、140b或共享存储器空间130接收和/或传输数据。例如,共享存储器空间130可以被处理元件115中的任一个访问,例如以访问要在计算操作中进行处理的数据。在一些示例中,共享存储器空间130可以是数据流管理器120的本地高速缓存。另外,处理元件115中的每个可以包括缓冲器,所述缓冲器被配置为基于针对相应处理元件115的在配置分组中提供的待执行指令来传输用于计算操作的数据。关于图2和图5A至5B描述了具有操作数处理单元和传输缓冲器的处理元件115的示例。
尽管图1的示例描绘了三个处理元件115,但是可以预期,处理器105中可以包含任意数量的处理元件115来与数据管理器120进行交互。例如,处理元件115的数量可以是一个、两个、三个、四个、五个、十个、二十个、五十个或另一数量的处理元件115。通常,数据管理器120可以选择任何或所有处理元件115以实现计算操作。
一般而言,为了生成配置分组127,数据流管理器120基于指示处理元件115中的每个的状态的状态信息来选择多个处理元件115的子集。状态信息可以包含每个处理元件115的可用性状态和每个处理元件115的物理位置。处理器105中的处理元件115可以基于其处理能力或调度程序而具有变化的可用性状态。例如,处理元件115可以具有可用状态、预留状态、部分可用性状态或非功能性状态。基于这种状态信息,数据流管理器120为特定的计算操作选择多个处理元件的子集。为了选择处理元件115的子集,数据流管理器120在状态信息中例如参照存储器单元140、140b中的一个来识别每个处理元件115的位置。每个处理元件115的此类位置可以是物理位置或相对位置。相对位置可以参照另一个处理元件115,参照特定的存储器单元140a或140b,或者参照计算系统100的任何元件。在这种情况下,数据流管理器120可以确定从每个处理元件115到存储器单元140a和存储器单元140b两者的物理距离。使用物理距离,数据流管理器120可以确定特定处理元件能够比可能更远的另一个处理元件更快地从特定存储器单元接收数据和/或向特定存储器单元提供数据。有利地,可以基于从处理元件115到存储在计算操作中使用的或由计算操作产生的数据所涉及的存储器单元的距离来选择所述处理元件,以用于计算操作。
数据流管理器120还在状态信息中识别每个处理元件115的可用性状态。在识别了每个处理元件115的相应位置(例如,相对位置)和可用性状态之后,数据流管理器120根据所识别的相对位置和/或可用性状态为计算操作选择处理元件115的子集。例如,数据流管理器120可以使用距特定处理元件的物理距离或相对距离与可用性状态(例如,处理元件115在其一个操作数处理单元处具有部分可用性)的组合,来选择某个处理元件115作为处理元件115的子集的一部分。在一个示例中,数据流管理器120可以选择物理上最接近共享存储器空间130并且至少部分可用的一组处理元件115。因此,可以认为选定的一组处理元件比其它处理元件相对地更接近共享存储器空间130定位。作为另一个示例,数据流管理器120还可以选择在物理上最接近存储器单元140b并且可用的第一组处理元件;同时还选择并非第一组的一部分的一些处理组件作为第二组,其中那些处理组件最接近共享存储器空间130并且可用。第一组和第二组处理元件均可以形成用于计算操作的子集。因此,数据流管理器120可以利用各种规则和/或优先级来选择处理元件115的子集。
在选择了子集之后,数据流管理器120还可以识别多个数据流以实现计算操作。数据流指定处理元件115的选定子集中的哪个相应处理元件115要从共享存储器空间130或外部存储器单元140a、140b中检索和/或访问数据。例如,某个处理元件115可以直接(例如,通过迹线)连接到存储器单元140b。如果计算操作是处理存储在存储器单元140b中的数据,则数据流管理器120可以将所述特定处理元件115与存储器单元140b之间的连接识别为用于所述计算操作的数据流。所识别的多个数据流可以用于实现计算操作,数据流管理器120为所述计算操作生成了配置分组127。例如,所识别的数据流可以将数据路由往返于特定处理元件115,所述特定处理元件与要存储/访问所述数据的其它处理元件相比在物理上更接近存储器单元140a、140b中的一个。在一些示例中,为了识别到所述子集中的每个处理元件115的多个数据流,数据流管理器120计算从存储器单元140a、140b到所述子集中的每个处理元件115的多个传输时间。基于此类传输时间,数据流管理器120确定传输时间的特定部分的使用减少了计算操作的计算时间。传输时间的所述特定部分(例如,减少计算时间)可以由数据流管理器120识别为多个数据流中的所识别的数据流。每个所识别的数据流可以与对应的、计算出的传输时间相关联。有利地,在识别此类数据流时,处理器105可以相较于常规方案更快地执行计算操作,所述常规方案可能依赖于使用到处理器的元件的固定路由来执行计算操作。
选定的处理元件115——处理元件的子集,根据配置分组127中所提供的映射来实现多个数据流。为了生成映射,数据流管理器120将子集中的每个处理元件115的地址映射到相应的存储器地址,例如,外部存储器单元140a、140b的存储器地址或数据流管理器120的共享存储器空间130的存储器地址。因此,所述映射包含指示处理元件115的被映射到存储器地址的地址的数据,使得处理元件115可以利用映射来访问数据,从而执行计算操作。例如,存储器单元140a、140b和/或共享存储器空间130可以被配置为存储用于计算操作的数据。数据流管理器120可以动态地重新配置映射以用于进行进一步的计算操作,由此有利地促进在要由处理器105实现的各种计算操作中灵活地使用处理元件115。例如,当执行第一计算操作时,数据流管理器可以生成将处理元件115的地址映射到存储器单元140以获取某些数据的映射;并且在随后的第二计算操作中,数据流管理器120可以将共享存储器空间130的地址映射到处理元件115。在所述示例中,共享存储器空间130可以存储由处理元件115的子集生成的第一计算操作的中间处理结果。因此,对于第二计算操作,数据流管理器120可以确定处理元件115之间的数据流以将数据业务重新路由到共享存储器空间130;而不是将中间处理结果存储在存储器单元140a中,后者可能需要附加的传输时间并且会增加第二计算操作的计算时间。
在执行配置分组127中所提供的用于实现计算操作的指令时,处理元件115可以与存储器接口135a、135b进行交互以提供用于实现计算操作的命令以及将任何时钟信号、命令信号和/或地址信号提供到任何存储器单元140a、140b。例如,存储器单元140a、140b的相应外围电路区域可以包含时钟端子、地址端子、命令端子以及数据输入/输出(I/O)端子(DQ)。例如,数据I/O端子可以处理八位数据通信。数据输入输出(I/O)缓冲器可以耦合到数据输入/输出端子(DQ)以用于数据访问,诸如存储器的读取访问和写入访问。地址端子可以接收地址信号和存储体地址信号。存储体地址信号可以用于在多个存储体中选择一个存储体。可以提供行地址和列地址作为地址信号。命令端子可以包含芯片选择(/CS)引脚、行地址选通(/RAS)引脚、列地址选通(/CAS)引脚、写使能(/WE)引脚等。命令解码器可以对在命令端子处经由存储器接口135a、135中的一个从存储器控制器110接收的命令信号进行解码,以接收包含读命令和/或写命令的各种命令。这种命令解码器可以提供与接收到的命令相对应的控制信号以控制存储单元阵列区域。可以从例如存储器接口135a、135中的一个向时钟端子提供外部时钟信号。
尽管图1的示例描绘了两个存储器单元140a、140b,但是可以预期,处理元件115可以与任何数量的存储器单元进行交互。例如,可以包含八个存储器单元,并且每个存储器单元可以包含具有八位宽度的数据总线,因此,由处理器105访问的存储器系统可以具有六十四位宽度。存储器单元140a、140b可以是静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或非易失性随机存取存储器(RAM),诸如铁电RAM(FeRAM)、自旋转移力矩RAM(STT-RAM)、相变RAM(PCRAM)、电阻变化RAM(ReRAM)、3D XPoint存储器等。在一些示例中,存储器单元140a和140b可以是不同类型的RAM,诸如图形DDR SDRAM(GDDR SDRAM),或者可以是不同类型的三维Ram,诸如可以与HBM接口进行交互的RAM。在一个示例中,存储器单元140a可以包含与被实现为HBM接口的存储器接口135a进行交互的3D堆叠DRAM;存储器单元140b可以是与存储器接口135b进行交互的GDDR SRAM单元。在各种实施例中,此类存储器单元可以被称为存储芯片、存储模块、存储裸片、存储卡、存储设备、存储阵列和/或存储单元。在物理上,存储器单元140a、140b可以被布置和设置为一层,或者可以被设置为堆叠层。在一些实施例中,存储器单元140a、140b可以被设置为在彼此顶部的多层,以形成垂直存储器,诸如3D NAND快闪存储器。
图2是根据图1的示例布置的处理器205的框图。例如,处理器205可以被实现为图2的示例中的处理器104。图2的类似描述的元件可以如关于图1所述进行操作,但是也可以包含如关于图2所述的附加特征。例如,图2描绘了图1的处理元件115中的单个处理元件115,以描述处理元件115可以包含的附加特征。此类特征也可以在图1的处理元件115中实现,使得对图2中的单个处理元件115的描述可互换为贯穿本文描述的示例实现的处理元件。因此,可以明白,在参考图2中的单个处理元件115时,如图1,处理器205可以具有多个处理元件115,也具有与关于单个处理元件所描述的相同的特征。
处理器205的处理元件115包含多个操作数处理单元组220、230、240和250。每个处理元件115可以具有一组操作数处理单元以执行不同的操作数处理操作。例如,可以将一组操作数处理单元一起配置为对一个操作数执行乘法累加运算;而另一组操作数处理单元可以被配置为执行更复杂的操作数操作,诸如滤波操作。在一些示例中,处理元件115可以表示特定的数字信号处理功能,所述处理元件通过使用每一组操作数处理单元来执行所述数字信号处理功能。在一个示例中,所述组操作数处理单元可以各自表示执行低通滤波操作的计算操作,而这可能需要一组操作数处理单元执行滤波操作并需要至少另一组操作数处理单元执行乘法运算。
所述组220操作数处理单元包含A1操作数处理单元、B1操作数处理单元和传输(TX)缓冲器。类似地,所述组240操作数处理单元包含A3操作数处理单元、B3操作数处理单元和传输缓冲器。通常,数据流管理器120可以提供具有映射的配置分组127,所述映射包含指示操作数处理单元的某些地址的数据。所述映射可以指定哪些操作数处理单元将从存储器地址中检索和/或访问数据。另外,配置分组127可以包含用于计算操作的一部分的指令。例如,基于配置分组127中所包含的指令,处理元件115可以被配置为使用A1和A3操作数处理单元来计算一部分计算操作。尽管指示A1和A3地址的数据可以指向计算操作的开始,但是配置数据分组127中的信息也可以指示分别在处理数据A1和A3之后将在计算操作中分别利用B1和B3。
在经由配置分组127接收到用于计算操作的指令之后,操作数处理单元A1、B1、A3和B3可以执行指令以根据配置分组127来执行计算操作。例如,配置分组127可以包含指示处理元件115是执行计算操作的子集的一部分的数据。在这种情况下,一旦在操作数处理单元A1、B1、A3和B3处执行指令,就可以生成处理结果,例如,A3和B3的输出。此类处理结果可以分别存储在组220和240的相应的传输缓冲器中。可以基于指示在处理元件115处的这种存储的配置分组127来将存储在传输缓冲器中的处理结果存储在其中。一旦被存储,处理结果就可以被其它处理元件115利用,条件是例如,相同的配置分组127或另一个配置分组127指示此类处理结果将在随后的计算操作中利用或将要写入存储器单元140a、140b或数据流管理器的共享存储器空间(例如,数据流管理器120的共享存储器空间130)。
在一些示例中,提供配置分组127可以在某些其它操作数处理单元上执行指令时发生。在图2的示例中,所述组230操作数处理单元230包含A3操作数处理单元、B3操作数处理单元和传输缓冲器,其中A3和B3操作数处理单元具有预留状态,所述预留状态指示在正在进行的操作(例如,正在执行指令)中利用或预留以供将来的计算操作使用的那些操作数处理单元。因为多组操作数处理单元220、230、240中的每个可以从数据流管理器120接收并执行变化的指令,所以处理元件115可以被称为可重新配置的,由此允许处理器205被称为可重新配置的硬件平台。
可重新配置的硬件平台(诸如可重新配置的处理器205)可以改变和/或更新被发送给某些处理元件115的指令。可重新配置的处理器205上的一些操作数处理单元组(例如,组230)可能正在执行或进行某个功能,诸如相加或累加;而其它操作数处理单元(例如,组220和240)可以被重新配置为接收可以改变或变更其相应功能的不同指令。例如,组220和240可以在配置分组127中接收指令,因为此类指令可以与操作数处理单元A1、B1、A3或B3的一或多个地址相关联。与通过配置分组127向处理元件115动态地提供指令有关的此类优点可以使得可重新配置的处理器205的处理时间比常规的ASIC或专门配置的DSP单元更快。
如关于图1所指出的,处理元件115的操作数处理单元可以是乘法单元或累加单元。例如,组220的操作数处理单元可以包含例如使用ALU所实现的多个乘法器、多个累加单元和/或多个加法器。在一些示例中,A1可以是乘法单元,而A2可以是累加单元,它们可以包含各自分别执行乘法和加法的相应的乘法器和相应的加法器。被实现为乘法和累加单元的A1和A2的输入-输出关系可以被表示为:
Figure BDA0002398826980000091
其中“I”表示要在所述单元中执行乘法的数量,Ci表示系数,所述系数可以从存储器(诸如存储器单元140a)中访问,并且Bin(i)表示输入数据,例如通过A1的地址到存储器地址(例如,共享存储器空间130中的地址或另一个操作数处理单元(例如,组240的传输缓冲器)的输出)的映射提供以在配置分组中访问的输入数据。在一个示例中,乘法单元/累加单元的集合的输出Bout等于系数数据Ci乘以乘法单元/累加单元的另一个集合的输出Bin(i)之和。因此,在对乘积求和时,Bout表示被实现为乘法单元和累加单元的A1和A2的累加。Bin(i)也可以是输入数据使得乘法单元/累加单元的集合的输出Bout等于系数数据Ci乘以输入数据之和。
尽管图2的示例描绘了用于每个组220、230、240和250的两个操作数处理单元,但是可以预期,处理元件115中可以包含任意数量的操作数处理单元。例如,操作数处理单元的数量可以是一个、两个、三个、四个、五个、十个、二十个、五十个或另一数量的处理元件115。通常,任何或所有操作数处理单元都可以实现计算操作。
数据流管理器(诸如图1的数据流管理器120)可以请求并检查图2中所示的处理元件115的组220、230、240或250中的操作数处理单元的状态。例如,为了生成如本文所述的配置分组127,数据流管理器基于指示每个处理元件115的状态(例如,要执行数据流管理器正为其生成配置分组127的计算操作的处理元件的状态)的状态信息来选择多个处理元件115的子集。在一些示例中,状态信息还可以包含单个组220、230、240和250的状态,和/或单个处理元件115的整体状态。例如,组220和240由于其相应的操作数处理单元A1、B1、A3和B3可用而可以具有可用状态;而组230由于A2和B2被预留而可以具有预留状态(如图2中以垂直阴影所指示);并且组250由于操作数处理单元A4为非功能性(如图2中以A4的阴影所指示)而可以具有部分可用性状态。因此,单个操作数处理单元可以具有某种状态,诸如A4非功能性;多组处理元件115可以具有某种状态,诸如组250具有部分可用性状态,并且图2的处理元件115本身具有部分可用性状态。有利地,在从可重新配置的处理器205的多个处理元件115请求和检查这种状态信息时,数据流管理器可以使用与处理元件115的距离(无论是物理距离还是相对距离)与处理元件的相应部分可用性状态的组合来选择作为处理元件115的子集的一部分的处理元件115,以执行计算操作。
图3是根据本文描述的示例布置的数据流配置方法300的流程图。方法300可以由数据流管理器(诸如图1的数据流管理器120)来实现。方法300可以包含框308,其叙述“确定处理元件的可用性和相对位置”。由处理器(诸如处理器105或205)实现的数据流管理器120可以从处理元件115获得状态信息。例如,数据流管理器120可以从任何或所有处理元件115请求状态信息以确定每个处理元件115的可用性状态,所述可用性状态可以包含单个操作数处理单元的可用性。这种状态信息还可以包含处理器本身中每个处理元件115的相对位置。可以在状态信息中例如参照计算系统(例如,计算系统100)的另一个部件或参照特定的存储器部件(诸如共享存储器空间130或存储器单元140b)提供每个处理元件115的相对位置。
框308之后可以是框312,其叙述“基于处理元件的可用性和相对位置来选择处理元件的子集”。数据流管理器120可以基于所有处理元件的所获得的可用性信息和物理位置信息来选择处理元件的子集。例如,数据流管理器120可以仅基于状态信息来选择子集,从而仅选择至少部分可用的处理元件。在一个示例中,数据流管理器120还可以仅基于相对位置(例如,参照共享存储器空间130或存储器单元140a、140b的物理距离)来选择子集。在各种示例中,数据流管理器120可以部分地基于所获得的可用性信息并且部分地基于处理元件的相应的相对位置来选择处理元件的子集。例如,数据流管理器120可以根据计算操作的需要利用各种规则或优先级,以确定哪些信息应优先处理和/或用于选择处理元件的子集。
框312之后可以是框316,其叙述“基于对处理元件的子集的选择来识别到单个处理元件的数据流”。数据流管理器120可以基于对处理元件的子集的选择来识别到单个处理元件的数据流。数据流管理器120可以基于状态信息或相对位置信息来识别数据往返于特定处理元件115的路由。例如,数据流管理器可以基于将输出某个处理结果的处理元件来路由数据流,所述处理元件比要存储/访问所述数据的其它处理元件相对更接近某个存储器元件(例如,共享存储器空间130)。在所述示例中,数据流管理器120可以计算所述处理元件和其它处理元件的传输时间,以将所述特定处理结果提供给所述存储器元件以将来自所述处理元件的特定数据流识别为与来自其它处理元件的其它路由的潜在数据流的计算时间相比具有减少的计算时间。有利地,在识别这种数据流时,处理器105可以相较于常规方案更快地执行特定的计算操作,所述常规方案可以依赖于使用到处理器的元件的固定路由来执行计算操作。
在框316之后可以是框320,其叙述“将处理元件的子集映射到存储器地址以生成包括映射和所识别流的配置分组”。数据流管理器120可以将子集中的每个处理元件的地址映射到相应的存储器地址,例如,外部存储器单元140a、140b的存储器地址或共享存储器空间130的存储器地址。在一些示例中,数据流管理器120还可以基于所映射的地址来生成和/或关联指令集以访问存储器。例如,指令集可以被包含在所生成的配置分组127中,或者与所接收的配置分组127同时提供。在这种情况下,数据流管理器120可以将具有映射地址的指令集提供给相应的处理元件。处理元件一旦被指示执行或进行计算操作,就可以使用指令和映射地址来执行计算操作。在配置分组127具有映射和所识别的数据流时,可以有利地由处理元件的子集有效地执行计算操作,以生成用于计算操作的处理结果。例如,在数据流管理器120已识别出数据流时,利用配置分组127的处理器或计算设备可以利用可用的处理元件或相对更接近某些存储器单元的处理元件来灵活地执行计算操作,由此与常规处理器相比减少了计算操作的计算时间,所述常规处理器可以固定处理器的某些元件之间的数据流或限制某些元件与特定存储器单元交互。
框320之后可以是框324,其叙述“将配置分组提供给处理元件”。数据流管理器120可以将配置分组提供给处理元件的子集。例如,可以在计算操作开始时提供配置分组127,以分配处理元件的一部分,从而高效且灵活地执行计算操作的一部分。在一些示例中,可以在计算操作开始之前提供配置分组127,使得可以将处理元件映射到特定的存储器地址,而这可能需要附加时间。在用于在处理器105或计算设备中配置数据流的方法300完成之后,处理器105或计算设备可以执行由配置分组127提供的计算操作。在一些示例中,作为参考图4描述的方法400,处理器105或计算设备可以执行所提供的和/或与配置分组127相关联的指令。在框324之后,方法300在框328处结束。
图4是根据本文描述的示例布置的处理元件比较方法400的流程图。方法400可以由处理元件(诸如图1或2的处理元件115)来实现。方法400可以包含框408,其叙述“读取与计算操作相关联的配置分组”。一旦将配置分组127提供给处理元件,处理元件115可以获得映射地址和/或相关联的指令集,由此根据配置分组来执行一或多个计算操作。例如,处理元件115可以获得指定一组操作数处理单元的映射地址以执行计算操作。在一个示例中,如果包含操作数处理单元A1和A3的组220、240是映射地址的一部分,则处理元件115可以根据配置分组127中所提供的映射将A1和A3映射到相应的存储器地址。在所述示例中,操作数处理单元A1和A3可以分别被映射到存储器单元140a和140b的存储器地址,使得每个组220、240可以分别执行与存储于在存储器单元140a、140b中指定的存储器地址处的数据相关联的计算操作。有利地,因为映射是基于距离生成的,所以可以更快地执行计算操作,例如因为数据流管理器120已确定组220的操作数处理单元A1相对更接近存储器单元140a而不是存储器单元140b,和/或组240的操作数处理单元A3相对更接近存储器单元140b而不是存储器单元140a。例如,这种确定表示组220的操作数处理单元A1相对更接近存储器单元140a定位而不是存储器单元140b,并且组230的操作数处理单元A3相对更接近存储器单元140b定位而不是存储器单元140a。
框408之后可以是框412,其叙述“基于配置分组中的存储器地址从缓冲器或存储器中读取数据”。在所述示例中,用于实现计算操作的一或多个处理元件可以基于配置分组中的映射的存储器地址从共享存储器空间130的缓冲器或存储器单元140a、140b中读取数据。例如,存储器单元140a中的存储单元的特定存储器地址可以被映射到操作数处理单元A1。因此,操作数处理单元A1可以访问存储器单元140a的所述存储单元以读取存储于其中的数据。同时,例如,操作数处理单元B4可以从共享存储器空间中的缓冲器的映射地址中读取数据,以访问要由操作数处理单元B4实现的计算操作的一部分的数据。在所述示例中,为了读取与缓冲器的映射地址相关联的信息,处理元件115将指令提供给缓冲器,所述指令允许请求信息的操作数处理单元B4读取与缓冲器的映射地址相关联的数据。例如,当执行的计算操作是语音信号处理操作的一部分时,存储在缓冲器中的数据可以是人类语音的音素。
框412之后可以是框416,其叙述“对与配置分组相关联的数据流执行计算操作以生成处理结果”。在处理元件115的子集已经访问了用于计算操作的相应数据时,处理元件115可以对与配置分组相关联的数据流执行计算操作。在执行计算操作时,处理元件的子集中的一或多个可以生成处理结果。在所述示例中,各种操作数处理单元可以执行与所述操作数处理单元相关联的相应功能。例如,如果操作数处理单元A1是乘法处理单元,则操作数处理单元A1可以将从存储器单元140a获得的存储数据与A1的操作数相乘。在语音信号处理操作的示例中,处理结果可以是人类语音的组成部分(例如,音素)。子集的处理元件执行计算操作,使得根据配置分组127路由数据流。例如,操作数处理单元A1和B1可以联合操作以对存储在存储器单元140a中的特定存储器地址处的数据执行计算操作的一部分。操作数处理单元B1可以生成处理结果,所述处理结果输出到所述组操作数处理单元220的传输(TX)缓冲器。这种处理结果可以存储在用于由处理元件115实现的数据流的传输缓冲器中。在所述示例中,在框420处,存储在缓冲器中的数据可以流动到或提供给另一个处理元件或存储器,直到处理元件得出比较结果。
框416之后可以是框420,其叙述“将存储在缓冲器中的处理结果与共享存储器或本地存储器中的数据进行比较”。在获得存储在处理元件的各种传输缓冲器中的处理结果之后,可以将处理结果中的一或多个与共享存储器空间130或本地存储器(诸如存储器单元140a或140b)中的数据进行比较。在语音信号处理操作中,处理结果可以是人类语音的将与存储在共享存储器空间130或存储器单元140a、140b中的音素进行比较的组成部分。可以将处理结果与这种音素进行比较以确定是否存在匹配。在判定框422处,如果存在匹配,则方法400的流程沿着‘是’路线前进到框424。如果不存在匹配,则方法400的流程沿着‘否’路线前进返回到框412,其中一或多个处理元件115可以在从共享存储器空间130的缓冲器或存储器单元140a、140b中读取附加数据之后执行附加计算操作。例如,待读取的附加数据可以是人类语音的将被一或多个处理元件处理的另一个组成部分。一些处理元件115可以相较于其它处理元件115更快地执行计算操作,使得确定人类语音的一些方面比其它方面更快。例如,特定音素可以在操作数处理单元处更快地处理,使得需要较少的计算时间,由此促进例如在录音或音频输入中对人类语音的组成部分进行进一步的计算操作。
有利地,在一些示例中,在处理元件将各种处理结果与存储在存储器中的数据进行比较时,计算操作可以相较于常规方案更快地执行,所述常规方案可能采用其中循序地比较各种处理结果的中央储存库。本文描述的系统和方法促进了灵活的处理器框架,其中当生成处理结果时,处理元件可以将生成的处理结果动态地与音素进行比较。此类处理增益允许更快地执行计算操作的几个方面。例如,语音信号处理操作可以被划分为人类语音的各个组成部分,其中每个处理元件将人类语音的那些相应的组成部分与存储在存储器地址处的特定音素进行比较。几个处理元件可以联合工作以相较于常规方案更快地执行语音信号操作,所述常规方案可能利用每个音素迭代地解析人类语音的每个组成部分。因此,方法400可以在没有这种繁琐方法的情况下促进语音信号处理操作的处理,同时在计算操作中有效地利用可用的处理元件。
框420之后可以是框424,其叙述“将处理结果提供给共享存储器或另一个处理元件”。在一些示例中,可以将生成的处理结果提供给共享存储器空间130或其它处理元件115。例如,如果生成的处理结果已经被识别为特定音素,则可以将生成的处理结果提供给共享存储器空间130以与人类语音的组成部分的其它所识别的音素进行组合,例如,在录音说明中进行组合。在一些示例中,即使识别了音素,也可以将生成的处理结果提供给另一个处理元件。例如,另一个处理元件115可以获取两个所识别的音素,以与存储在存储器中的数据进行比较,从而确定这两个音素是否以某种顺序形成了双元音。一旦被确定,就可以将所识别的双元音处理结果提供给共享本地存储器130,以与人类语音的组成部分的其它识别的音素组合,例如,从而进一步用双元音的指示来注释录音说明。在框424之后,方法400在框428处结束。
所描述的示例性方法300和400中所包含的框是出于说明目的。在一些实施例中,可以不同顺序执行框。在一些其它实施例中,可以消除各种框。在其它实施例中,可以将各种框划分为附加框,以其它框补充,或者一起组合为更少的框。可以预期这些特定框的其它变型,其包含框顺序的变化、被分割或组合为其它框的框内容的变化等。
图5A至5B是根据本文描述的示例实现的处理器205的示意图。例如,图5A和5B示出了实现方法400的各方面的处理器205的各方面。除了在方法400中可以是任选的其它方面之外,图5A和5B还示出了方法400的实现方案。
图5A示出了根据本文描述的示例实现的处理器205。例如,图5A中描绘的操作可以在例如处理器205指令流水线的三个指令周期中发生。指令周期可以包含如由处理器205或经由外部源(诸如经由网络接口)提供的时钟信号所定义的多个时钟周期。在(1)(例如,第一指令周期)处,处理器205接收与配置分组相关联的配置分组。例如,处理器205可以接收配置分组127,所述配置分组包含用于处理元件115的操作数处理单元的地址的映射和将由处理元件115实现的数据流。
在(2)(例如,第二指令周期)处,组220的操作数处理单元A1从存储器单元140a读取第一数据;并且组240的操作数处理单元B3从存储器单元140b中读取第二数据。例如,如参考方法400的框412所描述的,可以从存储器单元140a、140b中读取数据。在(3)(例如,第三指令周期)处,操作数处理单元A1执行第一计算操作;并且操作数处理单元B3执行第二计算操作以产生相应的第二处理结果。例如,操作数处理单元可以如参考方法400的框416所述执行计算操作。
在图5B中进一步描绘了处理器205实现两个计算操作。图5B中描绘的操作也可以在处理器205指令流水线的三个指令周期中发生。在(4)(例如,第四指令周期)处,操作数处理单元B1继续执行第一计算操作以生成相应的第一处理结果;同时处理元件115还将存储在组240的传输缓冲器中的第二处理结果与本地存储器560处的数据进行比较。本地存储器560可以在单个处理元件115的本地,例如,在语音信号处理操作的示例中,本地存储器560可以存储每个组220或240在第一和第二计算操作中正在比较的一或多个音素。
在(5)(例如,第五指令周期)处,处理元件115将存储在组220的传输缓冲器中的第一处理结果与本地存储器560处的数据进行比较。例如,第一处理结果可以被识别为存储在本地存储器560中的音素。此外,在(5)处,组240的传输缓冲器将第二处理结果提供给另一个处理元件115。例如,第二处理结果可以被提供给另一个处理元件115的组250,以进行进一步处理并与本地存储器560中的附加音素进行比较,例如,以识别双元音为两个连续音素的一部分。
在(6)(例如,第六指令周期)处,组220的传输缓冲器将第一处理结果提供给共享存储器(例如,共享存储器空间130)。例如,在已经将第一处理结果识别为音素之后,可以将第一处理结果存储在共享存储器中以被组合为录音说明,所述录音已经被识别为人类语音的组成部分。因此,如参考图5A和5B所描述的,包含不同组的操作数处理单元的各种处理元件可以并发地处理一或多个计算操作以获得可以存储在共享存储器中或提供给另一个处理元件115进行进一步处理的处理结果。
图6是根据本文中描述的实例布置的计算系统的示意图。计算系统600可以根据本文描述的任何实施例进行操作。所述计算设备可以是智能电话、可穿戴电子设备、服务器、计算机、电器、车辆或任何类型的电子设备。计算系统600包含计算设备610、处理器605和I/O接口670、内部总线680、耦合到网络695的网络接口690,以及耦合到总线的存储器单元640。计算设备610包含具有共享存储器空间630的数据流管理器620,其中这两者都根据本文关于数据流管理器和共享存储器空间描述的功能进行操作。图6中编号相似的元件包含与图1或图2中编号相似的功能。例如,存储器单元640可以如图1的存储器单元140a、140b一样操作和配置。处理器605可以包含任何类型的微处理器、中央处理器(CPU)、专用集成电路(ASIC)、被实现为现场可编程门阵列(FPGA)的一部分的数字信号处理器(DSP)、片上系统(SoC)或其它硬件来为系统600提供处理。
计算设备610还包含处理元件615和本地存储器660,所述本地存储器可以是非暂时性硬件可读介质550,所述非暂时性硬件可读介质分别包含用于诸如分别由方法300和400实现的数据流配置和/或处理元件比较的指令。例如,本地存储器可以存储用于例如执行方法300或方法400的程序的指令。经由处理器内部总线680提供处理器605、I/O接口670和网络接口690之间的通信。处理器元件615可以执行可以访问共享存储器空间630或经由内部总线680访问存储器单元640的计算操作。
总线680可以包含一或多条物理总线、通信线路/接口和/或点对点连接,诸如外围部件互连(PCI)总线。I/O接口670可以包含各种用户界面,所述用户界面包含用于用户的视频和/或音频接口,诸如具有麦克风的平板显示器。网络接口690通过网络695与其它计算设备(诸如计算系统600或云计算服务器)进行通信。例如,网络接口690可以是USB接口。
图7示出了根据本公开的各方面的系统700和750的示例。系统700和系统750可以分别包含计算设备715和765,所述计算设备可以包含如本文所述的实现方法300和/或400的计算系统或处理器。在所述示例中,计算设备715或765的处理器可以是处理器105、处理器205;或者计算设备可以是例如图6的计算设备610。
系统700或750中的人可以分别说出话语710或话语760。计算设备715和765可以检测相应的话语710和760以处理那些话语,作为用于识别人类语音的组成部分的计算操作。因此,系统700和750可以提供连接到诸如计算设备715或765的设备或“事物”的通信链路,以提供物联网(“IoT”)框架。IoT中的连接事物可以在蜂窝网络服务提供商许可或控制的频段内操作,或者此类设备或事物可以在蜂窝网络服务提供商许可或控制的频段内操作。此类频段和操作可以被称为窄带IoT(NB-IoT),因为相对于整个系统带宽,分配给IoT操作的频段可能很小或很窄。分配给NB-IoT的频段可以具有例如50、100、300或500kHz的带宽。
另外或可选地,IoT可以包含以与传统蜂窝技术不同的频率进行操作的设备或事物,以促进无线频谱的使用。例如,IoT框架可以允许系统700中的多个设备在低于6GHz频带或其它工业、科学和医学(ISM)无线电频带下操作,其中设备可以在共享频谱上进行操作以用于非授权用途。低于6GHz的频带也可以被表征为NB-IoT频带。例如,在低频范围内操作时,提供语音数据的计算设备715和765可以利用较少能量,从而提高功率效率,并且可以利用不太复杂的信令框架,使得计算设备715和765可以在低于6GHz频带下异步传输。因此,系统700和750可以利用相同的NB-IoT频带;同时还在计算设备中利用更少功率,所述计算设备可以有效地利用它们相应处理器的可用处理元件来处理话语710、760。
术语“5G”或“5G通信系统”可以指代根据其相应的赞助组织在例如LTE版本13或14或WiMAX 802.16e-2005之后开发或讨论的标准化协议进行操作的系统。本文描述的特征可以在根据其它几代无线通信系统配置的系统(包含根据上述标准配置的那些系统)中采用。
与本文中的公开内容结合描述的各种说明性框和模块可以用以下各项实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或其它可编程逻辑装置、分立门或晶体管逻辑、分立硬件部件或被设计以用于执行本文所述的功能的其任意组合。通用处理器可以是微处理器,但是可选地,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合(例如,DSP和微处理器的组合、多个微处理器、与DSP核结合的一或多个微处理器,或任何其它这种配置)。
本文描述的功能可以在硬件、由处理器执行的软件、固件或其任意组合中实现。如果以由处理器执行的软件实现,则功能可以作为一或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输。计算机可读介质包含非暂时性计算机存储介质和通信介质(包含促进将计算机程序从一处转移到另一处的任何介质)两者。非暂时性存储介质可以为可以由通用或专用计算机访问的任何可用介质。例如且无限制,非暂时性计算机可读介质可以包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)或光盘存储装置、磁盘存储装置或其它磁性存储设备,或可以用于携带或存储指令或数据结构形式的所需程序代码并且可以通过通用或专用计算机或通用或专用处理器访问的任何其它介质。
此外,将任何连接适当地称为计算机可读介质。例如,如果使用同轴电缆、光缆、双绞线、数字用户线(DSL)或等无线技术(诸如红外线、无线电和微波)从网站、服务器或其它远程源传输软件,则在介质的定义中包含同轴电缆、光纤电缆、双绞线、DSL或无线技术(诸如红外线、无线电和微波)。上述组合也包含在计算机可读介质的范围内。
其它示例和实现方案在本公开和所附权利要求的范围内。例如,由于软件的本质,可以使用由处理器执行的软件、硬件、固件、硬接线或这些的任意组合来实现上述功能。实现功能的特征还可以物理地位于各种位置,包含被分布使得功能的各部分在不同的物理位置处实现。
此外,如本文中所使用的,包含在权利要求中,如在项目列表(例如,以诸如“……中的至少一个”或“……中的一或多个”的短语为开头的项目列表)中使用的“或”指示包含性列表,使得例如A、B或C中的至少一个表示A或B或C或AB或AC或BC或ABC(即,A和B以及C)。此外,如本文中所使用的,短语“基于”不应解释为对闭合条件集合的引用。例如,在不脱离本公开的范围的情况下,被描述为“基于条件A”的示例性步骤可以基于条件A和条件B两者。换句话说,如本文中所使用的,短语“基于”应以与短语“至少部分基于”相同的方式来解释。
从前述内容可以明白,尽管本文中出于说明目的已经描述了特定示例,但是在不脱离所要求保护的技术范围的情况下可以进行各种修改。提供本文的描述以使得本领域技术人员能够制作或使用本公开。在一些情况下,未详细示出公知的无线通信部件、电路、控制信号、定时协议、计算系统部件和软件操作,以免不必要地使本公开的所描述的实施例难以理解。对于本领域技术人员来说,对本公开的各种修改将是显而易见的,并且在不脱离本公开的范围的情况下,可以将本文定义的一般原理应用于其它变型。因此,本公开未被限于本文中描述的示例和设计,而是应被赋予与本文中揭示的原理和新颖特征一致的最广泛范围。

Claims (24)

1.一种方法,其包括:
接收与多个处理元件相关联的状态信息,所述状态信息包括每个处理元件的可用性状态和每个处理元件的相对位置,每个处理元件包括至少一个操作数处理单元和缓冲器;
基于所述状态信息来为计算操作选择所述多个处理元件的子集;
基于对所述处理元件的所述子集的选择,识别到所述子集中的每个处理元件的多个数据流,所述多个数据流被配置为实现所述计算操作;
将所述子集中的每个处理元件映射到一或多个存储器地址以生成配置分组,所述配置分组包含指示所述映射和所述多个数据流的数据;以及
将所述配置分组提供给所述多个处理元件。
2.根据权利要求1所述的方法,其还包括:
参照存储用于所述计算操作的数据的至少一个存储器单元识别所述多个处理元件中的每个处理元件的所述相对位置;
识别所述多个处理元件中的每个处理元件的可用性状态;以及
部分地基于每个处理元件的所识别的相对位置和可用性状态来为所述计算操作选择所述处理元件的所述子集。
3.根据权利要求2所述的方法,其中每个处理元件的所述可用性状态包括可用状态、预留状态、部分可用性状态或非功能性状态中的一个。
4.根据权利要求2所述的方法,其还包括:确定从所述多个处理元件中的每个处理元件到所述至少一个存储器单元的物理距离。
5.根据权利要求1所述的方法,其还包括:
在所述多个处理元件的所述子集处,根据所述配置分组执行所述计算操作;和
基于所述计算操作的所述执行来生成多个处理结果,每个相应的处理结果存储在所述多个处理元件的所述子集中的所述相应处理元件的相应缓冲器中。
6.根据权利要求1所述的方法,其还包括:
计算从至少一个存储器单元到所述子集中的每个处理元件的多个传输时间;
确定使用所述多个传输时间的特定部分减少所述计算操作的计算时间;以及
识别所述多个数据流中的每个数据流,每个数据流与所述多个传输时间中的对应传输时间相关联。
7.根据权利要求2所述的方法,其还包括:
将每个处理元件的地址映射到所述至少一个存储器单元的相应存储器地址;和
在所述配置分组中存储所述至少一个存储器单元的所述相应的存储器地址。
8.根据权利要求7所述的方法,其中所述至少一个存储器单元对应于DRAM、SRAM、NAND或3D XPoint存储器中的至少一个。
9.根据权利要求1所述的方法,其中将所述配置分组提供给所述多个处理元件包括仅将所述配置分组提供给所述多个处理元件的所述子集中的每个处理元件。
10.根据权利要求1所述的方法,其中所述至少一个操作数处理单元对应于算术逻辑单元ALU、位操作单元、乘法单元、累加单元、加法器单元、查找表单元、存储器查找单元或其任意组合中的至少一个。
11.一种装置,其包括:
多个处理元件,其可配置为处理计算操作;和
数据流管理器,其耦合到所述多个处理元件并且被配置为:
接收与所述多个处理元件相关联的状态信息;
基于所述状态信息来为计算操作选择所述处理元件的子集;以及
将配置分组提供给所述多个处理元件,所述配置分组包含指示用于所述多个处理元件的存储器地址的映射和多个数据流的数据,所述多个数据流被布置为实现所述计算操作。
12.根据权利要求11所述的装置,其中所述配置分组包括指示共享存储器空间的存储器地址到所述子集中的每个处理元件的地址的映射的数据,所述共享存储器空间可由所述多个处理元件访问。
13.根据权利要求12所述的装置,其中存储器地址的所述映射还包括至少一个存储器单元的存储器地址到处理元件的所述子集的至少一个地址的映射,其中所述至少一个存储器单元被配置为存储用于所述计算操作的数据。
14.根据权利要求13所述的装置,其中所述数据流管理器还被配置为:
在所述状态信息中参照所述至少一个存储器单元识别所述多个处理元件中的每个处理元件的相对位置;
在所述状态信息中识别所述多个处理元件中的每个处理元件的可用性状态;以及
部分地基于每个处理元件的所识别的相对位置和可用性状态来为所述计算操作选择所述处理元件的所述子集。
15.根据权利要求13所述的装置,其还包括:
存储器接口,其耦合到所述至少一个存储器单元并且被配置为与所述数据流管理器进行通信。
16.根据权利要求11所述的装置,其中所述状态信息包括所述多个处理元件中的每个处理元件的可用性状态和所述多个处理元件中的每个处理元件的物理位置。
17.根据权利要求11所述的装置,其中所述数据流管理器还被配置为:
基于对所述处理元件的所述子集的选择,识别到所述子集中的每个处理元件的所述多个数据流;和
根据计算出的数据流,确定所述多个数据流实现所述计算操作减少了所述计算操作的计算时间。
18.一种方法,其包括:
在处理元件处读取与计算操作相关联的配置分组;
读取存储在缓冲器中的数据,所述数据与从所述配置分组中读取的至少一个存储器地址相关联;
在所述处理元件处对与所述配置分组相关联的数据流执行所述计算操作的一部分以生成处理结果;
将所述处理结果与存储在存储器中的数据进行比较;以及
基于所述比较,将所述处理结果提供给所述存储器或另一个处理元件。
19.根据权利要求18所述的方法,其还包括:
确定所述处理结果与存储在存储器中的数据相匹配以完成所述数据流。
20.根据权利要求19所述的方法,其中计算操作是语音信号处理操作,所述处理结果对应于人类语音的组成部分,并且存储在存储器中的所述数据对应于音素。
21.根据权利要求19所述的方法,其还包括:
将所述处理结果存储在所述处理元件的传输缓冲器中。
22.根据权利要求18所述的方法,其还包括:
确定所述处理结果与存储在所述存储器中的数据不匹配;和
读取存储在所述缓冲器中的附加数据,所述数据与所述配置分组中的另一个存储器地址相关联。
23.根据权利要求18所述的方法,其中所述缓冲器对应于共享存储器的缓冲器,所述共享存储器可由包含所述处理元件的多个处理元件访问。
24.根据权利要求23所述的方法,其中在所述处理元件处读取所述配置分组包括:
在所述配置分组中,识别与所述共享存储器的所述缓冲器相关联的至少一个存储器地址。
CN202010140200.2A 2019-03-04 2020-03-03 用于具有数据流管理器的处理器中的数据流的方法和装置 Active CN111651383B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410029292.5A CN117873929A (zh) 2019-03-04 2020-03-03 用于具有数据流管理器的处理器中的数据流的方法和装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/292,091 US11269661B2 (en) 2019-03-04 2019-03-04 Providing, in a configuration packet, data indicative of data flows in a processor with a data flow manager
US16/292,091 2019-03-04

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202410029292.5A Division CN117873929A (zh) 2019-03-04 2020-03-03 用于具有数据流管理器的处理器中的数据流的方法和装置

Publications (2)

Publication Number Publication Date
CN111651383A true CN111651383A (zh) 2020-09-11
CN111651383B CN111651383B (zh) 2024-01-23

Family

ID=72334629

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202410029292.5A Pending CN117873929A (zh) 2019-03-04 2020-03-03 用于具有数据流管理器的处理器中的数据流的方法和装置
CN202010140200.2A Active CN111651383B (zh) 2019-03-04 2020-03-03 用于具有数据流管理器的处理器中的数据流的方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202410029292.5A Pending CN117873929A (zh) 2019-03-04 2020-03-03 用于具有数据流管理器的处理器中的数据流的方法和装置

Country Status (2)

Country Link
US (2) US11269661B2 (zh)
CN (2) CN117873929A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114817125A (zh) * 2021-01-28 2022-07-29 华邦电子股份有限公司 具有运算功能的内存装置及其操作方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269661B2 (en) 2019-03-04 2022-03-08 Micron Technology, Inc. Providing, in a configuration packet, data indicative of data flows in a processor with a data flow manager
US20220414051A1 (en) * 2021-06-28 2022-12-29 Silicon Laboratories Inc. Apparatus for Array Processor with Program Packets and Associated Methods

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953738A (en) * 1997-07-02 1999-09-14 Silicon Aquarius, Inc DRAM with integral SRAM and arithmetic-logic units
CN108780434A (zh) * 2016-03-14 2018-11-09 华为技术有限公司 用于计算机系统的可重配置数据接口单元

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1173301A (ja) * 1997-08-29 1999-03-16 Matsushita Electric Ind Co Ltd 情報処理装置
US7028170B2 (en) * 2000-03-08 2006-04-11 Sun Microsystems, Inc. Processing architecture having a compare capability
US7181595B1 (en) * 2000-05-11 2007-02-20 Mindspeed Technologies, Inc. Method for decoding composite VLIW packets utilizing a tree structure
US7353516B2 (en) 2003-08-14 2008-04-01 Nvidia Corporation Data flow control for adaptive integrated circuitry
US7596430B2 (en) * 2006-05-03 2009-09-29 International Business Machines Corporation Selection of processor cores for optimal thermal performance
US8990543B2 (en) * 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
US8843730B2 (en) * 2011-09-09 2014-09-23 Qualcomm Incorporated Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination
US20140208072A1 (en) * 2013-01-18 2014-07-24 Nec Laboratories America, Inc. User-level manager to handle multi-processing on many-core coprocessor-based systems
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
US9747139B1 (en) * 2016-10-19 2017-08-29 International Business Machines Corporation Performance-based multi-mode task dispatching in a multi-processor core system for high temperature avoidance
US10372495B2 (en) * 2017-02-17 2019-08-06 Qualcomm Incorporated Circuits and methods providing thread assignment for a multi-core processor
US11269661B2 (en) 2019-03-04 2022-03-08 Micron Technology, Inc. Providing, in a configuration packet, data indicative of data flows in a processor with a data flow manager

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953738A (en) * 1997-07-02 1999-09-14 Silicon Aquarius, Inc DRAM with integral SRAM and arithmetic-logic units
CN108780434A (zh) * 2016-03-14 2018-11-09 华为技术有限公司 用于计算机系统的可重配置数据接口单元

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114817125A (zh) * 2021-01-28 2022-07-29 华邦电子股份有限公司 具有运算功能的内存装置及其操作方法

Also Published As

Publication number Publication date
US20200285486A1 (en) 2020-09-10
US11269661B2 (en) 2022-03-08
CN111651383B (zh) 2024-01-23
CN117873929A (zh) 2024-04-12
US11893398B2 (en) 2024-02-06
US20220171634A1 (en) 2022-06-02

Similar Documents

Publication Publication Date Title
US11704031B2 (en) Memory system and SOC including linear address remapping logic
US11893398B2 (en) Methods, systems, and apparatuses to perform a compute operation according to a configuration packet and comparing the result to data in local memory
CN109102065B (zh) 一种基于PSoC的卷积神经网络加速器
US11573903B2 (en) Memory devices and methods which may facilitate tensor memory access with memory maps based on memory operations
US20160283111A1 (en) Read operations in memory devices
CN109219805B (zh) 一种多核系统内存访问方法、相关装置、系统及存储介质
KR102540964B1 (ko) 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작
US20140181483A1 (en) Computation Memory Operations in a Logic Layer of a Stacked Memory
RU2643499C2 (ru) Управление памятью
JP2023178385A (ja) 情報処理装置および情報処理方法
US20210210125A1 (en) Processing-in-memory (pim) system and operating methods of the pim system
KR101533685B1 (ko) 다중 프로세서용 메모리 장치 및 이를 포함하는 메모리 시스템
US20200293452A1 (en) Memory device and method including circular instruction memory queue
US20220405019A1 (en) Processing-in-memory (pim) system and operating methods of the pim system
US11467973B1 (en) Fine-grained access memory controller
US20200082898A1 (en) Multi-lvel memory hierarchy
US20210132909A1 (en) Processing-in-memory (pim) devices and methods of testing the pim devices
US20210133543A1 (en) Neural processing unit and electronic apparatus including the same
US10108377B2 (en) Storage processing unit arrays and methods of use
US12001699B2 (en) Memory device performing configurable mode setting and method of operating the same
US11829760B2 (en) Processing-in-memory device and processing-in-memory system including the same
US11704052B2 (en) Processing-in-memory (PIM) systems

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