CN112000371A - 用于异构数据流的向量处理器 - Google Patents

用于异构数据流的向量处理器 Download PDF

Info

Publication number
CN112000371A
CN112000371A CN202010186469.4A CN202010186469A CN112000371A CN 112000371 A CN112000371 A CN 112000371A CN 202010186469 A CN202010186469 A CN 202010186469A CN 112000371 A CN112000371 A CN 112000371A
Authority
CN
China
Prior art keywords
data
vector
vector processor
samples
bins
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
CN202010186469.4A
Other languages
English (en)
Inventor
P·文卡塔拉加万
T·W·史密斯
S·N·基鲁马维拉
R·谢卡尔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN112000371A publication Critical patent/CN112000371A/zh
Pending legal-status Critical Current

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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • 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
    • 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/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

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)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了用于异构数据流的向量处理器。向量处理器包括耦合至分组存储器的分组存储器功能单元,该分组存储器具有多个箱。向量处理器还包括位格式化功能单元,该位格式化功能单元使用任何合适的技术或网络(例如,Benes网络)来执行位级数据布置。向量处理器接收和读取包括多个数据流的部分(例如,位)的输入数据向量,并使用位格式化功能单元使数据对齐而将与相应的数据流对应的每个部分并行地写入到相应的箱。向量处理器还或替代地并行地接收和读取多个传出数据流,通过使用位格式化功能单元使数据对齐,将数据流的部分并行地写入在分组存储器的相应的箱中,并且将这些部分并行地散布在传出数据向量中。

Description

用于异构数据流的向量处理器
背景技术
本公开总体上涉及异构数据,并且更具体地涉及对异构数据的并行处理。
本节旨在向读者介绍可能涉及在下文描述和/或要求保护的本公开的各个方面的本领域的各方面。本讨论被认为有助于向读者提供背景信息,以促进更好地理解本公开的各个方面。因此,可理解,这些陈述应从这个角度来阅读,而不是作为对现有技术的承认。
当接收某个输入时,诸如当使用某些通信网络(例如,4G蜂窝网络、5G蜂窝网络、mmWave(毫米波))进行操作时,可接收和传送由多个数据流组成的数据向量。虽然每个数据流可具有相同的格式、压缩方案、紧缩方案等等(因此被称为同构数据流),但所接收或所传送的向量可包括具有不同格式、压缩方案、紧缩方案等等的多个数据流,其中,取决于通信协议中所指定的数据紧缩格式,来自多个流的样本可能以不同的可能次序来交织和布置(因此,统称为异构向量或异构数据流)。
在接收到异构向量时,接收设备可将数据的部分(例如,位)从所接收的向量分离,并且将它们重组为它们的原始的相应同构流。可使用这些得到的同构数据流来进行进一步处理。类似地,传送设备可将来自多个同构数据流的数据的部分组合成异构数据向量(例如,以字节长度)以供传送至接收设备。然而,对所接收的异构数据流进行串行或顺序的处理以重组原始的相应同构流可能是低效率且缓慢的。同样地,对各种同构流进行串行或顺序的处理以形成同构向量以供传送可能同样是低效率且缓慢的。
附图说明
在阅读下列具体实施方式时并在参考附图时,可更好地理解本公开的各方面,在附图中:
图1是根据本公开的实施例的数据处理系统的框图,该数据处理系统具有处理异构数据流的向量处理器;
图2是根据本公开的实施例的控制器的框图,该控制器具有处理异构数据流的图1的向量处理器;
图3是根据本公开的实施例的异构数据和同构数据的示图;
图4是根据本公开的实施例的图1的向量处理器和支持该向量处理器的硬件组件的示例的框图;
图5是根据本公开的实施例的用于将输入向量中的异构数据转换为分组存储器中的同构数据的过程的流程图;
图6是根据本公开的实施例的用于将同构数据转换为要输出在向量中的异构数据的过程的流程图;
图7是根据本公开的实施例的图4的向量处理器的位格式化功能单元的框图;
图8是根据本公开的实施例的图4的向量处理器的分组存储器的电路图;
图9是根据本公开的实施例的图8的分组存储器的分组箱的电路图;
图10是根据本公开的实施例的在1读取M写入模式下进行操作的图8的分组存储器的示图;
图11是根据本公开的实施例的示例数据处理循环;
图12是根据本公开的实施例的可采用图4的向量处理器的无线基站架构的框图;
图13是根据本公开的实施例的可采用图4的向量处理器的人工智能推断系统的框图;以及
图14是根据本公开的实施例的可采用图4的向量处理器的自主或辅助驾驶系统的框图。
具体实施方式
下文将描述一个或多个具体的实施例。为了提供对这些实施例的简要描述,说明书中并未描述实际实现方式的所有特征。可领会,在任何此类实际实现方式的开发中,如同在任何工程或设计项目中一样,为了实现开发人员的特定目标,必须作出众多特定于实现方式的决策,诸如遵守与系统相关的约束和与业务相关的约束,这些约束可能从一个实现方式到另一个实现方式而有所不同。而且,可领会,此类开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言,这仍将是设计、制作和制造的例程任务。
当前所公开的系统和方法包括具有多个并行处理单元(例如,单输入多数据(SIMD)单元)的向量处理器,这些并行处理单元耦合至具有多个箱的分组存储器。向量处理器可并行地接收和读取包括多个数据流的部分(例如,位)的输入数据向量,并将与相应的数据流对应的每个部分并行地写入到相应的箱。向量处理器还可以或替代地并行地接收和读取多个传出数据流、将数据流的部分并行地写入在分组存储器的相应的箱中、并且将这些部分并行地散布在传出数据向量中。
相较于标量处理,这可加速对输入数据向量和输出数据向量的处理(例如,对于字节长度向量,加速8倍)。例如,标量处理器可针对每个数据流循环通过输入数据向量一次,以确定针对数据流的数据的部分,并且随后将这些部分写入到该数据流的数据字。替代地,所公开的向量处理器可循环通过输入向量一次,同时将来自输入向量的数据并行地写入到对应的存储器或分组箱中,从而提供降低多个循环的开销的更高效的方式。类似地,标量处理器可针对每个数据流一次循环通过一个数据字,以确定要写入到传出数据向量的数据的部分,并且随后将这些部分写入到该传出向量。替代地,所公开的向量处理器可将数据字写入到对应的分组箱并且循环通过这些分组箱以将数据从这些分组箱并行地写入到传出向量,从而提供降低多个循环的开销的更高效的方式。
作为介绍,图1图示出根据本公开的实施例的数据处理系统10的框图,该数据处理系统10具有处理异构数据流的向量处理器12。虽然系统10被图示为数据处理系统,但是应当理解,系统10可以是实现用于处理异构数据流的向量处理器12的任何合适的系统,诸如,通信系统、联网系统等等。而且,应当理解,虽然向量处理器12按照硬件(例如,处理和/或支持电路)来描述,但是向量处理器12中的至少一些能以软件(例如,存储器设备中所存储的指令)来实现。
数据处理系统10可包括处理电路52(例如,主机处理器)、存储器/存储电路54、以及网络接口56。数据处理系统10可包括更多或更少的组件(例如,电子显示器、用户界面结构、专用集成电路(ASIC))。虽然向量处理器12被图示为在处理电路52外部,但是在一些实施例中,向量处理器12可在处理电路52内部或者可以是处理电路52的部分。处理电路52可包括可管理针对数据处理系统10的数据处理请求(例如,用于执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式标识、空间导航等等)的任何附加的合适的处理器,诸如英特尔
Figure BDA0002414367180000041
至强
Figure BDA0002414367180000042
(Xeon
Figure BDA0002414367180000043
)处理器或精简指令处理器(例如,精简指令集计算机(RISC)、高级RISC机器(ARM)处理器)。
存储器和/或存储电路54可包括随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬驱动器、闪存等等,并且存储要由数据处理系统10处理的数据。网络接口56可允许数据处理系统10与其他(例如,外部)电子设备进行通信。数据处理系统10可包括若干个不同的封装或者可被包含在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统10可以是处理各种不同请求的数据中心的部分。例如,数据处理系统10可经由网络接口56接收数据处理请求,以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式标识、空间导航、或某种其他专业化的任务。
图2是根据本公开的实施例的控制器70的框图,该控制器70具有处理异构数据流的向量处理器12。控制器70可以是使用处理异构数据流的向量处理器12的任何合适的控制器,诸如,基带单元、无线电装备控制器、网络控制器、通信控制器、视频控制器、图形控制器、数据管理控制器等等。控制器70可包括数据处理系统10的处理电路52,该处理电路52可以通信地耦合至向量处理器12。在一些实施例中,控制器70可以是芯片上系统(SoC)的部分,以使得处理电路52、向量处理器12和其他组件可被设置在集成电路或芯片上。
在一些实施例中,控制器70还可包括收发器76或者可耦合至收发器76,该收发器76可使用任何合适的通信协议将数据发送至外部设备78并从外部设备78接收数据,该外部设备78与数据处理系统10分离或隔开。收发器76可以是图1的数据处理系统10的网络接口56的部分。在一些实施例中,收发器76可被拆分成发射器和接收器。收发器76还可以通信地耦合至处理电路52,并且可经由处理电路52将异构或不规则的数据发送至向量处理器12或从向量处理器12接收异构或不规则的数据。例如,在远程无线电头端中,来自多个流的数据可被紧缩为输入数据向量,其中,每个流可包括具有不同的尺寸、对齐性、格式等等的相应的数据元素。每个数据元素、部分或样本的格式可通过规范或配置指定。也就是说,在某些电信系统中,与多个数据流相关联的通信数据可具有不规则的数据格式。虽然向量处理器12、处理电路52、以及收发器76被示出为控制器70的部分,但是应当理解,在替代或附加实施例中,这些组件可以不被包含在控制器70中或者不是控制器70的部分(例如,可以在控制器70外部)。
每个数据流可随压缩、专用紧缩、和/或数据协议而变化。由此,输入数据向量可以是异构的或不规则的,因为其可由具有这些不同特性或属性的数据样本组成。也就是说,异构数据流可包括具有不同的数据类型、格式、和/或对齐性的数据样本,而同构数据流可包括具有相同数据类型、格式、和/或对齐性的数据样本。出于本公开的目的,术语“异构的”和“不规则的”可互换地使用并且意指同一事物。图3是根据本公开的实施例的异构数据90和同构数据92的示图。如所图示,异构数据90和同构数据92由三个不同的数据流——流A(例如,如由以字母“a”开始的数据样本表示,数据样本94是流A的示例)、流B(例如,如由以字母“b”开始的数据样本表示,数据样本96是流B的示例)和流C(例如,如由以字母“c”开始的数据样本表示,数据样本98是流C的示例)组成。
向量处理器12可经由收发器76从外部源或设备78接收异构数据90。向量处理器12可将异构数据90转换、组织、或分类为同构数据92以供使用(例如,由控制器70的部分使用)。向量处理器12还可或替代地(例如,从控制器70的内部源或组件)接收同构数据92,并且将同构数据92转换、组织或分类为异构数据90以供传输(例如,由收发器76传输)。
一些数据处理系统能以串行的方式(例如,逐流地)处理输入数据流或准备具有异构数据的输出数据流。然而,随着高带宽无线电通信系统的演进(例如,实现4G、5G和/或mmWave技术),对数据的单流处理可能不足以应对增加的数据速率。因此,并行处理技术可改善处理具有异构数据的数据流的性能。向量处理器12可包括使用并行处理技术来处理此类数据流的单输入多数据(SIMD)超大指令字(VLIW)处理器。
图4是根据本公开的实施例的向量处理器12和支持该向量处理器12的硬件组件的示例的框图。所图示的向量处理器12可包括多个并行的标量和单输入多数据功能单元110(标记为“FU1”、“FU2”、……“FU‘n’”),这些功能单元执行作为一组指令提供的、可被存储在程序存储器112中的算术操作、逻辑操作、或任何其他合适的数据处理操作。虽然程序存储器112被图示为向量处理器12的部分,但是在附加或替代实施例中,程序存储器112可在向量处理器12外部并且支持向量处理器12。所图示的向量处理器12还可包括向量加载和存储单元113,该向量加载和存储单元113从向量存储器块114(被标记为“VMEM0”、“VMEM1”)传输数据和/或将数据传输至向量存储器块114,该向量存储器块114存储输入和/或输出数据。所图示的向量处理器12可包括加载-存储单元控制器115(被标记为“LSUCtl”),加载-存储单元控制器115执行加载和存储指令、生成加载和存储操作的虚拟地址、和/或加载来自存储器块116(被标记为“DMEMCtl”)的数据或将数据存储到存储器块116,该存储器块116存储控制数据。
所图示的向量处理器12还可包括用于存储要被处理的来自输入向量或作为输出向量的数据的分组存储器118。分组存储器118可以是分组存储器功能单元(被标记为“GMEMFU”)120的部分。分组存储器功能单元120可以是将数据样本并行地写入到多个箱和/或从多个箱并行地读取数据样本的单输入多数据功能单元(例如,110)。分组存储器118可包括多个箱,并且每个箱(其可以是一个向量宽)可以保存属于一个单流的数据样本。所图示的向量处理器12还可包括位格式化功能单元122(被标记为“Bitfmt FU(位格式化功能单元)”),该位格式化功能单元122可包括控制模式存储器124(被标记为“Ctrl Pattern Mem(控制模式存储器)”)。位格式化功能单元122可使用任何合适的技术或网络(诸如,Benes网络)来执行位级数据布置。如下文进一步详细解释,控制模式存储器124可实现灵活的(例如,可重新配置的、可编程的)功能,以将异构数据流改变为同构数据流,并且反之亦然。如所图示,向量处理器12还包括基本功能126以及寄存器堆和连接网络存储和功能128,基本功能126促进向量处理器12的操作。虽然寄存器堆和连接网络存储和功能128被示出为向量处理器12的部分,但是在附加或替代实施例中,寄存器堆和连接网络存储和功能128可在向量处理器12外部并支持向量处理器12。
向量处理器12可将来自被存储在单个输入向量中的不同的流的数据样本写入到分组存储器118的不同的箱中,以产生同构数据。图5是根据本公开的实施例的用于将输入向量中的异构数据转换为分组存储器118中的同构数据的过程140的流程图。虽然使用以特定的顺序的各步骤来描述过程140,但应当理解,本公开构想了所描述的步骤能以与所图示的顺序不同的顺序来执行,并且某些所描述的步骤可被跳过或完全不被执行。在一些实施例中,过程140可通过使用处理器(诸如,处理电路52和/或向量处理器12)执行有形的非瞬态计算机可读介质(诸如,存储器/存储电路54、程序存储器112、和/或控制模式存储器124)中所存储的指令来实现。
如所图示,在过程框142中,处理电路52和/或向量处理器12接收异构数据输入。具体而言,异构数据输入可包括输入数据向量中的具有不同数据类型的多个数据样本。输入向量可以是任何合适的尺寸,诸如,一个字或字节(例如,八位)长。输入向量可经由收发器76被接收。
在过程框144中,处理电路52和/或向量处理器12可应用位级Benes网络(例如,如由位格式化功能单元122所实现)来确定每个数据样本属于哪个数据流并将属于同一数据流的数据样本对齐。在过程框146和148中,处理电路52和/或向量处理器12可使用分组存储器功能单元120来采用单输入多数据算术处理以将数据样本并行地(例如,与顺序地或串行地相反,同时地或在相同或近似相同的时刻)写入到与多个数据流对应的分组存储器118中。在过程框150中,处理电路52和/或向量处理器12可使用分组存储器功能单元120来读取分组存储器118中所存储的数据样本以输出同构数据。以此种方式,过程140可使得处理电路52和/或向量处理器12能够使用并行处理技术将数据样本以其原始的流形式对齐。
向量处理器12还可或替代地在(例如,从控制器70的内部源)接收同构数据输入时从分组存储器118的不同的箱读取数据样本并将这些数据样本组合为单个输出向量。图6是根据本公开的实施例的用于将同构数据转换为要输出在向量中的异构数据的过程160的流程图。虽然使用以特定的顺序的各步骤来描述过程160,但应当理解,本公开构想了所描述的步骤能以与所图示的顺序不同的顺序来执行,并且某些所描述的步骤可被跳过或完全不被执行。在一些实施例中,过程160可通过使用处理器(诸如,处理电路52和/或向量处理器12)执行有形的非瞬态计算机可读介质(诸如,存储器/存储电路54、程序存储器112、和/或控制模式存储器124)中所存储的指令来实现。
如所图示,在过程框162中,处理电路52和/或向量处理器12接收同构数据输入。具体而言,同构数据输入可包括多个数据样本流,其中,每个流具有相同的数据类型、格式和/或对齐性。可从例如控制器70内的内部源发送同构数据输入。在过程框164中,处理电路52和/或向量处理器12将同构数据输入存储到分组存储器118中。具体而言,分组存储器118的每个箱可与数据流对应,以使得来自流的样本可被存储在相同的一个或多个箱中。
在过程框166和168中,处理电路52和/或向量处理器12可使用分组存储器功能单元120的输出以采用单输入多数据算术处理和位级Benes网络(例如,如由位格式化功能单元122所实现)将来自多个箱(例如,可与不同的数据流对应)的数据样本并行地(例如,如与顺序地或串行地相反,同时地或在相同或近似相同的时刻)写入到输出向量。在过程框170中,处理电路52和/或向量处理器12可将输出向量发送至接收方(例如,控制器70外部的设备78)。以此种方式,过程160可使得处理电路52和/或向量处理器12能够使用并行处理技术生成具有异构数据的输出向量以供输出。
图7是根据本公开的实施例的位格式化功能单元122的框图。位格式化功能单元122可包括位级Benes网络180,该位级Benes网络180可包括提供对数据的任意排列和重新布置的蝶形(例如,一个源对多个目的地)和/或逆蝶形(例如,多个源对一个目的地)网络。虽然当前所公开的系统和方法按照使用位级Benes网络180来讨论,但是其他电路拓扑(包括Clos网络或交叉开关)可执行位级格式化。如本文中所采用,如由位格式化控制模式表182所控制,位级Benes网络180可生成数据的位级排列和/或布置,位格式化控制模式表182可被存储在控制模式存储器124中。
当接收异构数据输入186(被标记为“input(输入)”)时,位级Benes网络180可基于控制模式表182中所存储的控制模式(其可由被标记为“pattern_select(模式_选择)”的选择信号184选择)将数据样本排列和对齐到规则的和/或所识别的(例如,字节、半字和字)边界。另外或替代地,当生成异构数据输出188(被标记为“output(输出)”)时,位级Benes网络180可基于控制模式表182中所存储的控制模式将数据样本排列和对齐到任何合适的输出格式。
控制模式可基于数据流中的数据样本的格式、对齐性和/或尺寸来定义应当如何排列或对齐来自某些数据流的数据样本。也就是说,可基于(例如,数据流的)格式规范来预先计算控制模式。一般而言,可将数个控制模式存储在控制模式表182中,并且可选择针对每个流或者数据输入或输出的适当的控制模式。在一些实施例中,与相应的流对应的控制模式的选择可(例如,在运行时之前)被预先选择,而在附加或替代实施例中,该选择可在运行时作出。可在处理输入和/或输出向量的开始处重新初始化控制模式表182,以支持格式化类型或规范的不同集合。应当注意,位级Benes网络180还可执行对数据流的解交织和到规则边界的对齐。在一些情形下,位级Benes网络180还可通过处置(例如,添加、移除、编辑)冗余位、压缩指数、和/或错误校验位来促进对数据流的压缩和/或解压缩。以此种方式,控制模式表182可使得位级Benes网络180能够标识数据样本属于的数据流(例如,将数据样本与数据流相关联)并且由此从输入向量读取数据样本或将数据样本写入到输出向量。
图8是根据本公开的实施例的分组存储器118的电路图。分组存储器118可以是采用触发器和逻辑电路的专用存储器架构。分组存储器118可基于(例如,由位格式化功能单元122发送的)控制信号204(被标记为“ctrl_in(控制_输入)”)和交叉多路复用器206将传入数据200(被标记为“indata(传入数据)”)(例如,大约n倍的字长度或字节)布置在一系列箱202中,其中,每个箱202可与数据流相关联。在一些实施例中,控制信号204可在接收到异构数据输入时将来自共同的数据流的数据单元(例如,位、字、字节、或半字)存储在共同的箱中。控制信号204还可或替代地在产生异构数据输出时使得分组存储器118基于异构数据输出的规范对来自不同数据流的数据单元进行加扰。数据(例如,大约n倍的字长度或字节)可经由读取端口208从箱202被读取(并移除)并使用元素宽多路复用器210被选择,并且使用交叉多路复用器214(例如,如由控制信号204控制)输出212(被标记为“outdata(输出数据)”)(例如,大约n倍的字长度或字节)。
图9是根据本公开的实施例的分组箱202的电路图。如所图示,分组箱202可作为逻辑的先入先出(FIFO)缓冲器逐流地操作。分组箱202可包括输入旋转器电路230、输出旋转器电路232、以及具有多个触发器236的FIFO缓冲器234。控制信号238(被标记为“ctrl(控制)”)可经由多路复用器240选择由分组箱202输出的数据。还图示出使能信号242(被标记为“enable(使能)”),该使能信号242可启用输入旋转器电路230、输出旋转器电路232、和/或多路复用器240。虽然电路可(例如,经由读指针、写指针)维护分组箱202的状态,但分组箱202的状态可附加地或替代地由控制生成器软件(例如,在使用分组箱202的每个迭代时)确定,并且可经由图8中示出的控制信号ctrl_in(控制_输入)204转换并提供至分组存储器118。
箱202可在数据样本作为输入和/或输出的处理期间提供临时存储。如本文中所描述,分组存储器功能单元120可对分组存储器118(例如,基于诸如程序存储器112之类的任何合适的介质中所存储的指令)执行下文所描述的操作,但是构想诸如处理电路52之类的任何合适的处理器执行所描述的操作。具体而言,当处理电路52确定箱202中所存储的数据量超出阈值时,分组存储器功能单元120可通过从分组箱202读取并移除数据来对分组箱202进行“驱逐”。例如,在一些实施例中,处理电路52可确定分组箱202已满和/或无法存储附加数据,并且由此可指令分组存储器功能单元120驱逐箱202中所存储的数据。在附加或替代实施例中,当新的或附加数据无法被存储在现有的箱202中并且分组存储器118的所有可用的箱202均被占用时,分组存储器功能单元120可对箱202进行驱逐。来自所驱逐的箱的数据随后可用于由功能单元FU1……FU‘n’110、位格式化功能单元Bitfmt FU 122中任一者进行的后续处理和/或存储到向量存储器块VMEM0、VMEM1 114中。
分组存储器118可在至少两个不同的模式下操作。可用于在接收到异构数据输入时进行分组的1读取M写入模式以及可用于加扰(例如,“取消分组”)以生成异构数据输出的1写入M读取模式。在1读取M写入模式下,分组存储器118可读取一个分组箱202并且并行地(例如,如与顺序地或串行地相反,同时地或者在相同或近似相同的时刻)执行对‘M’个箱202的部分写入。在1写入M读取模式下,分组存储器118可读取多个箱202(例如,所有的箱202)并且逐样本地执行写入操作以将数据样本加扰在输出向量中。一般而言,可基于流和/或分布(例如,数据样本在输出向量中的分布)的数量来选择箱202的数量。例如,对于每个流,可存在一个箱202、两个箱202、或者任何其他合适数量的箱202。
图10是根据本公开的实施例的在1读取M写入模式下进行操作的分组存储器118的示图。具体而言,图10图示出如何基于数据流从输入向量读取数据样本并将数据样本写入到分组箱202。第一输入向量260(例如,其可被存储在分组存储器118的共同的箱中)包括来自数据流0的数据样本(例如,位0)、来自数据流1的数据样本(例如,位0、1、2)、来自数据流2的数据样本(例如,位0、1)、以及来自数据流3的数据样本(例如,位0、1)。如所图示,第一输入向量260中每个数据流的数据样本或位可能是不连续的。
如所图示,分组存储器功能单元120基于与数据样本相关联的数据流将第一输入向量260中所存储的数据样本并行地(例如,与顺序地或串行地相反,同时地或者在相同的或近似相同的时刻)写入到分组箱202中。具体而言,箱0与流0对应,箱1与流1对应,箱2与流2对应,并且箱3与流3对应。由此,分组存储器功能单元120并行地将来自数据流0的数据样本(例如,位0)写入到箱0中,将来自数据流1的数据样本(例如,位0、1、2)写入到箱1中,将来自数据流2的数据样本(例如,位0、1)写入到箱2中,并且将来自数据流流3的数据样本(例如,位0、1)写入到箱3中。分组存储器功能单元120类似地基于与数据样本相关联的数据流将第二输入向量262、第三输入向量264和第四输入向量266中所存储的数据样本并行地写入到分组箱202中。
当处理电路52(例如,通过执行可预先计算每个分组箱202的充满状态并确定要对哪个(哪些)分组箱202进行驱逐的软件)确定分组箱202已达到阈值存储量时,诸如当分组箱202已满时,则处理电路52可指令分组存储器功能单元120对分组箱202进行驱逐。在一些实施例中,处理电路52可向与对一个或多个分组箱202进行驱逐对应的软件控制头写入,并且分组存储器功能单元120可对那些分组箱202进行驱逐。如所图示,在处理第三输入向量264期间,箱0达到阈值存储量(例如,变成已满的)。由此,分组存储器功能单元120可通过从箱0读取数据样本和/或将数据样本写入到程序存储器112并从箱0移除数据样本来对箱0进行驱逐。类似地,在处理第四输入向量266期间,箱1达到阈值存储量,并且由此,分组存储器功能单元120对箱1进行驱逐。如所图示,当可用于那些流的箱(例如,箱1)已满时,可指派附加的分组箱202(诸如箱4)用于存储来自流的数据样本。可在运行时作出此种指派。此外,虽然在图10中图示出仅五个分组箱202,但是应当理解,分组存储器118可具有任何合适数量的分组箱202。
而且,虽然以上示例描述了在分组箱202已满时对该分组箱202进行驱逐,但是应当理解,分组箱202可在达到分组箱202的任何合适的阈值充满度时被驱逐。也就是说,处理电路52可在分组箱202部分地充满(例如,在50-100%充满之间,75%充满的、80%充满的、85%充满的、90%充满的、95%充满的)时、在该分组箱202中针对特定流的所有样本已经完成到达时、基于实现较好的整体性能的充满度等等对分组箱202进行驱逐。事实上,可针对特定应用来设计得到对分组箱202更高效的驱逐的任何合适的算法。由此,可将箱状态管理的复杂度移动至(例如,被存储在数据处理系统10的存储器/存储电路54中的要由处理电路52执行的)离线软件,从而释放控制器70中的处理资源。
分组存储器118可在1写入M读取模式下操作,以促进以相反次序执行上文所描述的1读取M写入模式的动作。具体而言,分组存储器118可(例如,从控制器70的内部源或组件)接收多个数据流,这些数据流将经由收发器76被发送至例如外部源或设备78。可将多个数据流存储在分组箱202中,其中,每个分组箱202可与数据流对应(如图10中所示)。分组存储器118可通过迭代通过分组箱202并将数据样本从分组箱202并行地(例如,与顺序地或串行地相反,同时地或者在相同或近似相同的时刻)写入到输出向量(并且将数据样本从分组箱202移除)来形成输出向量(例如,260、262、264、266)。
向量处理器12可采用控制头来实现数据处理循环技术,以处理或生成异构向量。图11是根据本公开的实施例的示例数据处理循环。图11中所图示的通用处理迭代280包括可被执行以处理某个量的输入数据的一系列指令282。每条执行指令282的特定行为可由控制头284定义,控制头284可以是针对每条指令282的一组控制输入286。如所图示,向量处理器12可生成针对通用处理迭代280中的指令282的控制头284。控制头284可包括指向输入数据(被存储在输入缓冲器290中)、输出数据(被存储在输出缓冲器292中)的指针288、系数、和/或用于迭代280的每条指令282的控制。一般而言,任何处理循环可被实现为通用处理迭代280的循环,并且通用处理迭代280的循环可具有对应的控制头序列294。头284可顺序地被存储在存储器296(例如,程序存储器112)中并在循环298中被处理。对循环298的执行可以是软件流水线化的。通过执行诸如图11中所图示的数据处理循环之类的数据处理循环,可降低与指令282的执行相关联的开销量。此类实现方式在其中执行调用的总数量不是特别高以及其中控制存储器要求可管理的情形下可能是合适的。此类情形的示例包括无线电头端,其中,每个流的输入块尺寸可以小到满足低等待时间要求。
在一些实施例中,可在通信基础设施中(诸如,在如图12中所图示的无线基站架构310中)采用向量处理器12。具体而言,向量处理器12可执行调解基带单元(例如,无线电装备控制器312)与无线电单元316的数字前端314之间的交互的操作。例如,基带单元312可包括处理电路318以及一个或多个基带调制解调器,处理电路318包括向量处理器12。向量处理器12可处理传入或传出异构向量以实现某些功能和协议,由此提高处理以异构向量形式的数据的速度和效率,这些功能和协议诸如,通用公共无线电接口(CPRI)、无线电接入网络(RAN)、开放式RAN(oRAN)、虚拟化RAN(vRAN)、或可扩展RAN(xRAN)。基带调制解调器320可将(例如,包括来自多个不同数据流的数据样本的)异构数据向量发送至向量处理器12或从向量处理器12接收异构数据向量。
基带数字前端数字接口322可在基带单元312的基带调制解调器320与无线电单元316的数字前端314之间传输异构数据向量。数字前端314可将异构数据向量发送至模数(被标记为“A/D”)和/或数模(被标记为“D/A”)转换器323并且从模数和/或数模转换器323接收同构数据向量(例如,将被转换为异构数据向量),该模数和/或数模转换器323可耦合至射频单元324和射频放大器326。耦合至射频放大器326的天线328可使用任何合适的无线通信协议将异构数据向量发送至无线基站架构310外部的设备或者从这些设备接收异构数据向量。由此,无线电单元316可以是如图2中所示的与数据处理系统10(例如,基带单元312)分离或隔开的外部设备78的示例。
在附加或替代实施例中,如图13中所图示,向量处理器12可被并入在人工智能推断系统340中。具体而言,人工智能推断引擎342可包括处理电路344,该处理电路344从知识库346接收训练数据并使得人工智能推断引擎342从使用训练数据的重复迭代进行学习以得到更准确的结果。具体而言,处理电路344可包括向量处理器12,该向量处理器12能从知识库346接收以异构向量的形式的训练数据。向量处理器12可将训练数据的异构向量转换为同构向量以供人工智能推断引擎342使用。以此种方式,向量处理器12可提高人工智能推断引擎342的处理以异构向量形式的数据的效率,由此提高训练该人工智能推断引擎342的速度。人工智能推断引擎342可向用户界面348输出结果或预测,该用户界面348还可服务于输入用户命令或偏好。由此,知识库346可以是如图2中所示的与数据处理系统10(例如,人工智能推断引擎342)分离或隔开的外部设备78的示例。
在又一实施例中,如图14中所图示,向量处理器12可被并入在自主或辅助驾驶系统360中。具体而言,自主或辅助驾驶控制单元362可包括处理电路364,该处理电路364从一个或多个交通工具传感器366接收传感器信息。例如,交通工具传感器366可包括接近度传感器、加速度计、位置传感器、相机、胎压传感器、湿度传感器、温度传感器等等。具体而言,处理电路364可包括向量处理器12,该向量处理器12能从一个或多个交通工具传感器366接收以异构向量的形式的传感器信息。向量处理器12可将传感器信息的异构向量转换为同构向量以供自主或辅助驾驶控制单元362使用。以此种方式,向量处理器12可提高自主或辅助驾驶控制单元362的处理以异构向量形式的数据的效率,由此提高处理传感器信息的速度。自主或辅助驾驶控制单元362可基于经处理的传感器信息来控制交通工具控制系统368。也就是说,自主或辅助驾驶控制单元362可对转向控制装置370、制动装置372、节流装置374和/或变速杆376进行操作以使得交通工具转向、改变速度、停止、加速等等。在一些实施例中,向量处理器12可将同构控制数据转换为异构数据,该异构数据可由交通工具控制系统368处理并用于控制该交通工具控制系统368。由此,向量处理器12可提高控制(例如,在正常操作中或者用于执行规避或事故避免动作的)交通工具控制系统368的速度。相应地,交通工具传感器366和/或交通工具控制系统368可以是如图2中所示的与数据处理系统10(例如,自主或辅助驾驶控制单元362)分离或隔开的外部设备78的示例。
应当理解,所公开的示例不是限制性的,并且可在任何合适的系统或应用中采用向量处理器12。
虽然本公开中阐述的实施例易于具有各种修改、实现方式和/或替代形式,但是特定实施例已作为示例在附图中示出并已在本文中详细描述。然而,可理解,本公开并不旨在被限制于所公开的特定形式。本公开将涵盖落入如由所附权利要求所限定的本公开的精神和范围内的所有修改、实现方式、等效方案和替代方案。
本文所提出和要求保护的技术被引用并应用于实际性质的实物和具体示例,这些实物和示例明显改善了当前技术领域,因此不是抽象的、无形的或纯理论的。进一步地,如果本说明书末尾所附的任何权利要求包含一个或多个被指定为“用于[执行][功能]的装置”或“用于[执行][功能]的步骤”的要素,则其旨在基于35 U.S.C.112(f)来解释此类要素。然而,对于包含以任何其他方式指定的要素的任何权利要求,其旨在不基于35U.S.C.112(f)来解释此类要素。

Claims (21)

1.一种系统,包括:
向量处理器,所述向量处理器用于从与所述系统分离的设备接收异构数据向量或将所述异构数据向量发送至与所述系统分离的所述设备,其中,所述异构数据包括具有不同数据类型、格式、对齐性、或以上各项的任何组合的多个数据流,其中,所述向量处理器包括:
分组存储器,所述分组存储器包括用于存储多个同构数据流的多个数据样本的多个箱,其中,所述多个同构数据流中的每个同构数据流包括相同的数据类型、格式、对齐性、或以上各项的任何组合;
位格式化功能单元,所述位格式化功能单元用于将所述异构数据向量中的所述多个数据样本与所述多个同构数据流相关联;以及
分组存储器功能单元,所述分组存储器功能单元用于将所述多个数据样本并行地写入到所述多个箱。
2.如权利要求1所述的系统,其中,所述分组存储器功能单元用于从所述多个箱并行地读取所述多个数据样本并将所述多个数据样本并行地写入到输出向量。
3.如权利要求1所述的系统,其中,所述向量处理器用于接收一个或多个输入向量中的所述多个数据样本。
4.如权利要求3所述的系统,其中,所述一个或多个输入向量中的输入向量的尺寸为一个字节。
5.如权利要求1所述的系统,其中,所述多个数据样本中的至少一个数据样本的尺寸为一个位。
6.如权利要求1-5中任一项所述的系统,其中,所述多个箱中的至少一个箱的尺寸为一个字节。
7.如权利要求1-5中任一项所述的系统,其中,所述向量处理器包括用于存储所述多个同构数据流的多个格式化类型或规范的控制模式表,其中,所述位格式化功能单元用于基于所述控制模式表中所存储的所述多个格式化类型或规范将所述多个数据样本与所述多个同构数据流相关联。
8.如权利要求1-5中任一项所述的系统,其中,所述向量处理器包括用于执行算术操作、逻辑操作、或任何其他数据处理操作的多个单输入多数据单元。
9.一种集成电路,包括:
处理电路,所述处理电路用于从与所述集成电路隔开的设备接收异构数据向量或将所述异构数据向量发送至与所述集成电路隔开的所述设备;以及
向量处理电路,所述向量处理电路用于接收所述异构数据向量并从所述异构数据向量并行地生成同构数据流。
10.如权利要求9所述的集成电路,其中,所述向量处理电路包括用于存储所述同构数据流的样本的多个箱。
11.如权利要求10所述的集成电路,其中,所述向量处理电路从所述多个箱并行地读取所述样本并且将所述样本并行地写入到输出向量。
12.如权利要求9所述的集成电路,其中,所述同构数据流中的至少一个同构数据流包括具有相同的尺寸、对齐性、格式、或以上各项的任何组合的一组样本。
13.如权利要求9所述的集成电路,其中,所述向量处理电路包括使得所述向量处理电路能够对所述异构数据向量或所述同构数据流中的至少一个同构数据流执行并行处理技术的单输入多数据超大指令字处理器。
14.如权利要求9所述的集成电路,其中,所述向量处理电路采用控制头来实现数据处理循环技术以生成所述同构数据流。
15.如权利要求14所述的集成电路,其中,所述控制头包括:
针对要由所述向量处理器执行的指令的一组控制输入;以及
指向输入数据的指针和指向输出数据的指针。
16.一种向量处理器,包括:
分组存储器功能单元;
分组存储器,所述分组存储器包括多个箱;以及
位格式化功能单元,其中,所述向量处理器用于接收第一数据布置中的第一数据样本并且用于在由所述位格式化功能单元、所述分组存储器、以及所述分组存储器功能单元执行之后将所述第一数据样本提供在第二数据布置中,所述第二数据布置不同于所述第一数据布置。
17.如权利要求16所述的向量处理器,其中,所述第一数据布置包括来自多个不同数据流的多个数据样本,其中,所述多个数据样本包括所述第一数据样本。
18.如权利要求17所述的向量处理器,其中,所述多个箱包括与所述多个不同数据流对应的一组箱。
19.如权利要求16-18中任一项所述的向量处理器,其中,当所述多个箱中的箱的存储超出阈值存储量时,所述分组存储器功能单元移除所述箱中所存储的数据样本。
20.如权利要求19所述的向量处理器,其中,所述阈值存储量包括所述箱的存储容量。
21.如权利要求16-18中任一项所述的向量处理器,其中,所述位格式化功能单元包括Benes网络。
CN202010186469.4A 2019-05-11 2020-03-17 用于异构数据流的向量处理器 Pending CN112000371A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IN201941018869 2019-05-11
IN201941018869 2019-05-11
US16/729,253 2019-12-27
US16/729,253 US11126430B2 (en) 2019-05-11 2019-12-27 Vector processor for heterogeneous data streams

Publications (1)

Publication Number Publication Date
CN112000371A true CN112000371A (zh) 2020-11-27

Family

ID=73046283

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010186469.4A Pending CN112000371A (zh) 2019-05-11 2020-03-17 用于异构数据流的向量处理器

Country Status (2)

Country Link
US (1) US11126430B2 (zh)
CN (1) CN112000371A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114513335A (zh) * 2022-01-18 2022-05-17 郑州大学 一种基于单向光闸的数据流融合高效传输方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4162534A (en) * 1977-07-29 1979-07-24 Burroughs Corporation Parallel alignment network for d-ordered vector elements
US20080282034A1 (en) * 2005-09-19 2008-11-13 Via Technologies, Inc. Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor
US8069190B2 (en) * 2007-12-27 2011-11-29 Cloudscale, Inc. System and methodology for parallel stream processing
CN102947798B (zh) * 2010-05-14 2016-08-17 国际商业机器公司 计算机系统及其控制方法
US8984499B2 (en) * 2011-12-15 2015-03-17 Intel Corporation Methods to optimize a program loop via vector instructions using a shuffle table and a blend table
US9602437B1 (en) * 2012-10-03 2017-03-21 Tracey M. Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
US10108672B2 (en) * 2014-10-03 2018-10-23 Netscout Systems Texas, Llc Stream-based object storage solution for real-time applications
US10459723B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
US10338920B2 (en) * 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
US20170177351A1 (en) 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Even and Odd Vector Get Operations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114513335A (zh) * 2022-01-18 2022-05-17 郑州大学 一种基于单向光闸的数据流融合高效传输方法
CN114513335B (zh) * 2022-01-18 2022-11-29 郑州大学 一种基于单向光闸的数据流融合高效传输方法

Also Published As

Publication number Publication date
US20200356368A1 (en) 2020-11-12
US11126430B2 (en) 2021-09-21

Similar Documents

Publication Publication Date Title
CN110352412B (zh) 矩阵压缩加速器系统和方法
EP2126710B1 (en) Content-terminated dma
KR20210086420A (ko) 신경망 데이터 처리 장치, 방법 및 전자 장비
US8799536B2 (en) Data processing apparatus, data processing method and computer-readable medium
EP3827356A1 (en) Unified address space for multiple hardware accelerators using dedicated low latency links
US11695704B2 (en) Reduced sized encoding of packet length field
US11803391B2 (en) Self-scheduling threads in a programmable atomic unit
CN114385240A (zh) 组织可编程原子单元指令存储器的方法
CN116547644A (zh) 检测可编程原子事务中的无限循环
CN114399035A (zh) 搬运数据的方法、直接存储器访问装置以及计算机系统
US11797311B2 (en) Asynchronous pipeline merging using long vector arbitration
CN116636189A (zh) 用于网络装置中的缓冲包的包仲裁
CN116583829A (zh) 可编程原子操作符资源锁定
CN114385236A (zh) 传递可编程原子操作符到存储器控制器
US10489322B2 (en) Apparatus and method to improve performance in DMA transfer of data
US11126430B2 (en) Vector processor for heterogeneous data streams
CN100479450C (zh) 用于减少对存储器的访问的方法和系统
US7590117B2 (en) Multichannel processor
EP3739839A1 (en) Vector processor for heterogeneous data streams
CN117992125A (zh) 减少用于基于存储器的通信队列的索引更新消息
US11714655B2 (en) Pipeline merging in a circuit
CN102547276B (zh) 多功能编码器和解码器设备及其方法
CN116635824A (zh) 桶式处理器中的线程调度控制及存储器分割
US9785592B2 (en) High density mapping for multiple converter samples in multiple lane interface
KR101706201B1 (ko) 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법

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