存内计算设备及其数据处理方法与流程

阅读: 评论:0


存内计算设备及其数据处理方法


背景技术:



1.相似度搜索已广泛应用于各种计算领域,包括多媒体数据库、数据挖掘、机器学习等。top-k函数可以应用于相似度搜索的任务中,以在给定元素(例如,n个元素)中到k个相似度最大或k个相似度最小的元素。例如,top-k函数用于快速区域卷积神经网络(region-convolution neural network,简称rcnn)等。传统上,top-k函数使用软件来实现。
2.然而,top-k函数的传统软件实现方式无法在合理期限内处理大量元素,因此不适用于一些对延迟要求严格的应用。随着数据库规模的快速增长,因有限的存储性能,处理单元和存储设备之间的大量数据传输成为top-k函数的性能瓶颈。


技术实现要素:



3.本公开的实施例提供了一种存内计算(processing in memory,简称pim)设备。存内计算设备包括存储器阵列和计算电路。存储器阵列被配置为存储数据。计算电路被配置为执行指令集以使存内计算设备执行以下步骤:基于来自主机的配置,在包括第一排序模式和第二排序模式的多个计算模式之间进行选择,主机与存内计算设备通信耦合;访问存内计算设备的存储器阵列中的数据元素;以及在第一排序模式或第二排序模式下,将该数据元素中的前k个数据元素输出到存储器阵列或主机。k在第一排序模式被选择的情况下为大于阈值的整数,在第二排序模式被选择的情况下为小于或等于阈值的整数。
4.本公开的实施例还提供了一种数据处理方法。数据处理方法包括:基于配置在存内计算设备的多个计算模式之间进行选择,多个计算模式包括第一排序模式和第二排序模式;访问存内计算设备的存储器阵列中的多个数据元素;以及,在第一排序模式或第二排序模式下,将多个数据元素中的前k个数据元素输出到存储器阵列或输出到与存内计算设备通信耦合的主机,其中,k在第一排序模式被选择的情况下为大于阈值的整数,在第二排序模式被选择的情况下为小于或等于阈值的整数。
5.本公开的实施例还提供了一种非暂时性的计算机可读存储介质。非暂时性的计算机可读存储介质存储指令集,指令集可由装置的一个或多个计算电路执行以使装置开始执行数据处理方法。数据处理方法包括:基于配置在多个计算模式之间进行选择,多个计算模式包括第一排序模式和第二排序模式;访问装置的存储器阵列中的多个数据元素;以及在第一排序模式或第二排序模式下,将该多个数据元素中的前k个数据元素输出到存储器阵列或输出到与装置通信连接的主机。k在第一排序模式被选择的情况下为大于阈值的整数,在第二排序模式被选择的情况下为小于或等于阈值的整数。
6.本公开的实施例还提供了一种数据处理系统。数据处理系统包括主机和通信耦合到主机的多个存内计算设备。多个存内计算设备中的任一个包括存储器阵列和计算电路,存储器阵列被配置为存储数据,计算电路被配置为执行指令集以使存内计算设备执行以下步骤:基于来自主机的配置在多个计算模式之间进行选择,多个计算模式包括第一排序模式和第二排序模式;访问存内计算设备的存储器阵列中的多个数据元素;以及在第一排序
方式或第二排序方式下,将该多个数据元素中的前k个数据元素输出到主机。k在第一排序模式被选择的情况下为大于阈值的整数,在第二排序模式被选择的情况下为小于或等于阈值的整数。
7.所公开的实施例的附加特征和优点将部分地在以下描述中阐述,并且部分地将由于描述而显而易见,或者可以通过实施例的实施来了解。所公开的实施例的特征和优点可以通过权利要求中阐述的元素及组合来实现和获得。
8.应当理解,如所声明的,上述一般描述和以下详细描述都仅是示例性的和解释性的,并不限制所公开的实施例。
附图说明
9.图1示出了与本公开的一些实施例一致的示例性的存内计算块的结构;
10.图2a示出了与本公开的一些实施例一致的示例性的神经网络加速器架构;
11.图2b示出了与本公开的一些实施例一致的示例性的包括神经网络加速器架构的云系统的示意图;
12.图3示出了与本公开的一些实施例一致的示例性的存储片的结构;
13.图4示出了与本公开的一些实施例一致的示例性的存内计算处理单元;
14.图5示出了与本公开的一些实施例的示例性的由图4中的存内计算处理单元针对一种top-k排序方法执行的操作;
15.图6示出了与本公开一些的实施例一致的示例性的由图4中的存内计算处理单元针对另一种top-k排序方法执行的操作;
16.图7a和图7b示出了与本公开的一些实施例一致的示例性的存内计算处理单元;
17.图8示出了与本公开的一些实施例一致的示例性的基于存内计算的加速器架构;
18.图9示出了与本公开的一些实施例一致的示例性的由图7a和图7b中的存内计算处理单元针对相似度搜索执行的操作;
19.图10示出了与本公开的一些实施例的示例性的由图7a和图7b中的存内计算处理单元针对相似度搜索执行的操作;
20.图11和图12示出了与本公开的一些实施例一致的示例性的由图7a和图7b中的存内计算处理单元针对k均值(k-means)聚类计算执行的操作;
21.图13示出了与本公开的一些实施例一致的示例性的执行数据处理方法的流程图;
22.图14示出了根据本公开的一些实施例一致的示例性的执行数据处理方法的流程图。
具体实施方式
23.现在将详细描述示例性的实施例,其示例在附图中示出。以下描述参考附图,除非另有说明,否则不同图中的相同数字表示相同或类似的元件。下面在示例性的实施例的描述中阐述的实现并不代表与本技术一致的所有实现。相反,它们只是与所附权利要求中所述的、与本公开相关的各个方面一致的装置、系统和方法的示例。如果与通过引用并入的术语或定义相冲突,则以本文提供的术语和定义为准。
24.除非另有明确说明,否则术语“或”涵盖所有可能的组合,不可行的除外。例如,如
果声明一个组件包括a或b,那么除非另有明确说明或不可行,否则该组件可以包括a,或b,或a和b。作为第二个示例,如果声明一个组件包括a、b或c,那么除非另有明确说明或不可行,否则该组件可以包括a、或b、或c、或a和b、或a和c、或b和c、或a和b和c。术语“示例性的”在含义上用为“示例”而不是“最佳的”。
25.如今,数据库和数据处理任务的规模在各种应用中显著而迅速地增长。此外,为了提供令人满意的用户体验,许多应用程序旨在满足严格的延迟要求。目前,许多并行度高的简单计算,如相似度搜索和k均值计算,都受到系统中存储器组件的带宽和容量的限制,这已成为主要的性能瓶颈之一。
26.本公开的实施例通过提供用于执行top-k排序、k均值聚类或其他相似度搜索计算的数据处理的设备和方法来缓解上述问题。通过存内计算技术和动态随机存取存储器(dynamic random access memory,简称dram)的高带宽,减少不必要的数据移动,实现高效的并行计算。因此,能够大大减少相似度搜索和k均值计算中的存储器性能瓶颈。通过各实施例所公开的设备和方法,尽管数据增加,计算时间仍然可以保持在可接受的范围内,并且各种计算的整体性能和效率得到提高。所提出的用于数据处理的设备和方法可以应用于具有大型数据库和大量数据处理任务的各种应用,包括利用人工智能(artificial intelligence,简称ai)计算的各种云系统。
27.具体地,本文所公开的实施例可以用于各种应用或环境中,例如人工智能训练和推理、数据库和大数据分析加速等。人工智能相关的应用涉及基于神经网络的机器学习(machine learning,简称ml)或深度学习(machine learning,简称dl)。例如,一些实施例可用于神经网络架构,例如深度神经网络(deep neural networks,简称dnn)、卷积神经网络(convolutional neural network,简称cnn)、循环神经网络(recurrent neural network,简称rnn)等。此外,一些实施例被配置为支持各种处理架构,例如数据处理单元(data processing unit,简称dpu)、神经网络处理单元(neural network processing unit,简称npu)、图形处理单元(graphics processing unit,简称gpu)、现场可编程门阵列(field programmable gate array,简称fpga)、张量处理单元(tensor processing unit,简称tpu)、专用集成电路(application-specific integrated circuit,简称asic)、任何其他类型的异构加速器处理单元(heterogeneous accelerator processing unit,简称hapu)等。
28.本文所使用的术语“加速器”是指用于加速某些计算的硬件。例如,加速器被配置为加速top-k排序计算、k均值聚类计算或在相似度搜索中执行的其他计算。在一些实施例中,加速器可以被配置为加速任意人工智能相关应用中的工作负载(例如,神经网络计算任务)。具有动态随机存取存储器(dynamic random-access memory,简称dram)或嵌入式动态随机存取存储器(embedded dynamic random-access memory,简称edram)的加速器称为基于动态随机存取存储器或基于嵌入式动态随机存取存储器的加速器。
29.图1示出了与本公开的一些实施例一致的示例性的存内计算块的结构。存内计算块100包括存储单元阵列110、块控制器120、块行驱动器131和块列驱动器132。虽然使用动态随机存取存储器作为示例来说明一些实施例,但应当理解,根据本公开实施例的存内计算块100可以基于包括静态随机存取存储器(static random-access memory,简称sram)、电阻式随机存取存储器(resistive random-access memory,简称reram)等在内的各种存
储器技术来实现。存储单元阵列110包括r1到rm的m个行和c1到cn的n个列。如图1所示,存储单元111连接在r1到rm的m个行中的每一行和c1到cn的n个列中的每一列之间。在一些实施例中,数据可以如多位忆阻器存储在交叉存储器中。
30.块行驱动器131和块列驱动器132可以向r1到rm的m个行和c1到cn的n个列提供诸如电压信号的信号以用于处理相应的操作。在一些实施例中,块行驱动器131和块列驱动器132被配置为使模拟信号穿过存储单元111。在一些实施例中,模拟信号由数字输入数据转换而来。
31.块控制器120可以包括用于存储指令的指令寄存器。在一些实施例中,指令包括块行驱动器131或块列驱动器132何时向相应的列或行提供信号、提供哪些信号等的指令。块控制器120可以将存储在寄存器中的指令解码为由块行驱动器131或块列驱动器132使用的信号。
32.存内计算块100还可以包括用于从存储单元读出数据或用于将数据存储到存储单元中的行读出放大器141或列读出放大器142。在一些实施例中,行读出放大器141和列读出放大器142存储缓冲的数据。在一些实施例中,存内计算块100还包括数模转换器(digital-to-analog converter,简称dac)151或模数转换器(analog-to-digital converter,简称adc)152,以在模拟域和数字域之间转换输入信号或输出数据。在本公开的一些实施例中,省略行读出放大器141或列读出放大器142,因为存内计算块100中的计算可以直接对存储单元中存储的值执行,而无需读出这些值也无需使用任意读出放大器。
33.根据本公开的实施例,存内计算块100通过将存储器用作多个单指令多数据(single instruction,multiple data,简称simd)处理单元来实现并行计算。存内计算块100可以支持包括针对整数和浮点值的逐位操作、加法、减法、乘法以及除法在内的计算操作。例如,在图1的存储单元阵列110中,第一列c1和第二列c2分别存储第一向量a和第二向量b。通过将格式化信号施加到第一至第三列c
1-c3及向量a、b和c长度所对应的行,可以将向量a和b相加的向量运算结果c存储在第三列c3中。类似地,图1的存储器单元阵列110也可以支持向量乘法和加法运算。例如,可以通过将对应于乘数a的电压信号施加到第一列c1并将对应于乘数b的电压信号施加到第二列c2,以及通过将格式化信号施加到相应的列和行来执行加法并将结果c保存在第三列c3中,来执行计算c=aa+bb。
34.在一些实施例中,一个向量存储在多个列中,用于表示元素的n位(n-bit)数值。例如,将一个其中元素具有2位数值的向量存储在两列存储单元中。在一些实施例中,当向量的长度超过构成存储块的存储单元阵列110的行数时,可以将向量存储在多个存储块中。多个存储块可以被配置为并行计算不同的向量段。尽管实施例中存内计算架构并没有使用存储单元之外的算术逻辑来执行计算操作,但本公开也可以为了执行存内计算架构中的算术逻辑而应用于包括算术逻辑的存内计算架构。如前文所示,加法、乘法等计算操作也可以作为存内计算架构中的逐列向量计算来执行。所公开的实施例提供了一种存内计算加速器架构,能够在大型数据库中实现高效的top-k运算、k均值聚类或相似度搜索。在一些实施例中,top-k运算,即从集合中到k个最大或最小的元素,可广泛用于信息检索、机器学习和数据挖掘中的预测建模。
35.图2a示出了与本公开的一些实施例一致的示例性的加速器架构200。在一些实施例中,加速器架构200被称为神经网络处理单元架构。在本公开的上下文中,神经网络加速
器也被称为机器学习加速器或深度学习加速器。在各种实施例中,加速器架构200还可以应用在具有各种功能的存内计算加速器中,例如用于并行图形处理、用于数据库查询或用于其他计算任务的加速器。如图2a所示,加速器架构200包括存内计算加速器210、接口212等。应当理解,存内计算加速器210基于所传送的数据执行算法操作。
36.存内计算加速器210包括一个或多个存储片2024。在一些实施例中,存储片2024包括用于数据存储和计算的多个存储块。存储块被配置为对所传送的数据执行一个或多个操作(例如,乘法、加法、乘法累加等)。在一些实施例中,包括在存储片2024中的每个存储块具有与图1所示的存内计算块100相同的配置。由于存内计算加速器210的分层设计,存内计算加速器210能够提供通用性和可扩展性。存内计算加速器210可以包括任意数量的存储片2024且每个存储片2024可以具有任意数量的存储块。
37.接口212(例如快速外围组件互联(peripheral component interconnect express,简称pcie)接口)可以用作芯片间总线,提供存内计算加速器210和主机单元222之间的通信。芯片间总线将存内计算加速器210与其他设备(例如片外存储器或外围设备)连接。在一些实施例中,加速器架构200还包括直接存储器访问(direct memory access,简称dma)单元。直接存储器访问单元可被认为是接口212的一部分或者是存内计算加速器210中的单独组件(未示出),其有助于在主机存储器224和存内计算加速器210之间传输数据。此外,直接存储器访问单元能够协助多个加速器之间传输数据。直接存储器访问单元允许片外设备访问片内和片外存储器,而不会导致主机的中央处理器(central processing unit,简称cpu)中断。因此,直接存储器访问单元也可以生成存储地址并启动存储器读取或写入周期。直接存储器访问单元还可以包含可由一个或多个处理器读取和写入的多个硬件寄存器。多个硬件寄存器包括存储地址寄存器、字节计数寄存器、一个或多个控制寄存器以及其他类型的寄存器,这些寄存器能够指定源、目标、传输方向(从输入/输出(input/output,简称i/o)设备读取或写入到输入/输出设备)、传输单元的大小或一次突发中传输的字节数的某种组合。应当理解,加速器架构200可以包括第二直接存储器访问单元,第二直接存储器访问单元用于在其他加速器架构之间传输数据以允许多个加速器架构直接通信而不涉及主机中央处理器。
38.虽然图2a的加速器架构200被解释为包括具有存储块(例如,图1的存内计算块100)的存内计算加速器210,但应理解,所公开的实施例可以应用于支持算术运算的任意类型的存储块以加速某些应用(例如深度学习)。
39.加速器架构200还可以与主机单元222通信。主机单元222可以是一个或多个处理单元(例如,x86中央处理单元)。在一些实施例中,存内计算加速器210被认为是主机单元222的协处理器。
40.如图2a所示,主机单元222可以与主机存储器224相关联。在一些实施例中,主机存储器224是集成存储器或与主机单元222相关联的外部存储器。主机存储器224可以是本地或全局存储器。在一些实施例中,主机存储器224包括主机磁盘。主机磁盘被配置成为主机单元222提供额外存储的外部存储器。主机存储器224可以是双倍数据速率同步动态随机存取存储器(double data rate synchronousdynamic random-access memory,简称ddrsdram)等。与存内计算加速器210的片上存储器相比,主机存储器224被配置为以较慢的访问速度存储大量数据,并充当更高级别的缓存。存储在主机存储器224中的数据可以传送
到存内计算加速器210,以用于各种计算任务或执行神经网络模型。
41.在一些实施例中,具有主机单元222和主机存储器224的主机系统220包括编译器(未示出)。编译器是将用一种编程语言编写的计算机代码转换为指令以创建可执行程序的程序或计算机软件。在机器学习应用中,编译器可以执行各种操作,例如预处理、词汇分析、语法解析、语义分析、将输入程序转换为中间表示、代码优化和代码生成,或它们的组合。
42.在一些实施例中,编译器将一个或多个命令推送到主机单元222。基于这些命令,主机单元222可以将任意数量的任务分配给一个或多个存储片(例如,存储片2024)或处理元件。一些命令可以指示直接存储器访问单元将指令和数据从主机存储器(例如,图2a的主机存储器224)加载到加速器(例如,图2a的存内计算加速器210)中。指令可以被加载到分配有相应任务的每个存储片(例如,图2a的存储片2024),并且一个或多个存储片可以处理这些指令。
43.应当理解,前几个指令可以指示将数据从主机存储器224加载/存储到存储片的一个或多个本地存储器中。然后每个存储片可以启动指令流水线,这涉及从本地存储器中获取指令(例如,通过获取单元)、对指令进行解码(例如,通过指令解码器)和生成本地存储地址(例如,对应于操作数),读取源数据,执行或加载/存储操作,然后写回结果。
44.图2b示出了与本公开的一些实施例一致的示例性的包括神经网络加速器架构的云系统的示意图。如图2b所示,云系统230提供具有人工智能功能的云服务且包括多个计算服务器(例如,计算服务器232和234)。在一些实施例中,示例性地,计算服务器232可以并入图2a的加速器架构200。为了简单和清楚起见,在图2b中以简化的方式示出加速器架构200。
45.在加速器架构200的协助下,云系统230能够提供扩展的数据处理功能。例如,在一些实施例中,云系统230能够提供图像识别、面部识别、翻译、3d建模等人工智能功能。应当理解,加速器架构200可以以其他形式部署到计算设备。例如,加速器架构200也可以集成在计算设备中,计算设备例如智能手机、平板电脑和可穿戴设备。
46.图3示出了与本公开的一些实施例一致的示例性的存储片的结构。存储片300包括存储块组件310、控制器320、行驱动器331、列驱动器332、全局缓冲器340、指令存储器350、数据传输表360和块表370。根据本公开的一些实施例,存储块组件310包括布置在二维网格中的多个存储块。
47.控制器320通过行驱动器331、列驱动器332和全局缓冲器340向存储块组件310中的每个存储块提供命令。行驱动器331连接到存储块组件310中的每一行存储块,且列驱动器332连接到存储块组件310中的每一列存储块。在一些实施例中,包括在每个存储块中的块控制器(例如,图1中的块控制器120)被配置为通过行驱动器331或列驱动器332从控制器320接收命令和向块行驱动器(例如,图1中的块行驱动器131)和块列驱动器(例如,图1中的块列驱动器132)发出信号,以在存储器中执行相应的操作。根据本公开的实施例,通过使用存储块组件310的存储块中的块控制器,存储块能够独立地执行不同操作,从而能够执行块级并行处理,数据能够通过块控制器在相应的存储块中按行和列排列的存储单元之间有效地传输。
48.在一些实施例中,全局缓冲器340用于在存储块组件310中的存储块之间传输数据。例如,控制器320在将数据从存储块组件310中的一个存储块传输到另一存储块时使用全局缓冲器340。根据本公开的一些实施例,全局缓冲器340由存储块组件310中的所有存储
块共享。全局缓冲器340可以被配置为每个存储块存储命令,以处理在处理神经网络模型中分配的任务。在一些实施例中,控制器320被配置为通过行驱动器331和列驱动器332将存储在全局缓冲器340中的命令发送到相应的存储块。在一些实施例中,这些命令从主机单元(例如,图2a的主机单元222)传输而来。全局缓冲器340可以被配置为存储用于处理所分配任务的数据并将数据发送到存储块。在一些实施例中,存储在全局缓冲器340中并从全局缓冲器340发送的数据从主机单元(例如,图2a的主机单元222)或存储块组件310中的其他存储块传输而来。在一些实施例中,控制器320被配置为将来自存储块组件310中存储块的数据存储到全局缓冲器340中。在一些实施例中,控制器320在一个周期内接收存储块组件310中的一个存储块的整行数据并将其存储到全局缓冲器340中。类似地,控制器320在一个周期内将整行的数据从全局缓冲器340发送到另一存储块。
49.在一些实施例中,图3的存储片300包括指令存储器350,指令存储器350被配置为以流水线方式将执行神经网络模型的指令存储在存储块组件310中。指令存储器350可以存储计算指令或存储块组件310的存储块之间数据移动的指令。控制器320可以被配置为访问指令存储器350以调取存储在指令存储器350中的指令。指令存储器350可以被配置为具有被分配给每个存储块的单独指令段。在一些实施例中,存储片300包括用于记录存储片300中数据传输的数据传输表360。数据传输表360可以被配置为记录存储块之间的数据传输。在一些实施例中,数据传输表360可以被配置为记录待处理的数据传输。在一些实施例中,存储片300可以包括用于记录存储块状态的块表370。块表370可以具有存储相应存储块的当前状态的状态字段(state)。根据本公开的一些实施例,在执行计算期间,存储块组件310可以具有例如包括空闲状态、计算状态和就绪状态的一些状态中的一种。
50.图4示出了与本公开的一些实施例一致的示例性的存内计算处理单元400。在一些实施例中,存内计算处理单元400应用到与图2a中所示加速器架构200相同或相似的架构以及图3中所示的存储片配置(例如,存储片300)。在一些实施例中,存内计算处理单元400被称为存内计算数据处理单元(processing-in-memory data processing unit,简称pim-dpu)。存内计算处理单元400包括存储器阵列410、存储器接口420、计算电路430、主机接口440、配置寄存器450和控制器460,它们可以集成到同一芯片或同一裸片或嵌入到同一封装中。例如,在一些实施例中,存内计算处理单元400在动态随机存取存储器的裸片上,其中存储设备是具有存储器阵列410的动态随机存取存储器或嵌入式动态随机存取存储器,存储器阵列410包括按行和列布置的存储单元。此外,存储器阵列410可以被划分为多个逻辑块或分区,也称为用于存储数据的“主干”每个主干包括存储器阵列410的一行或多行。例如,存内计算处理单元400包括4g比特的动态随机存取存储器,但本公开不限于此。存内计算处理单元400还可以包括具有各种容量的动态随机存取存储器单元。在一些实施例中,具有动态随机存取存储器或嵌入式动态随机存取存储器单元的存内计算处理单元400被称为基于动态随机存取存储器或基于嵌入式动态随机存取存储器的加速器。
51.诸如主机之类的外部代理可以通过外围接口(例如,主机接口440)通信耦合并通过外围接口相互传输命令、指令或数据,以与存内计算处理单元400及程序配置寄存器450进行通信,从而为执行计算来配置各种参数。例如,主机接口440可以是快速外围组件互连接口,但本公开不限于此。配置寄存器450可以存储包括参数的配置,例如用于top-k排序计算的k值、动态随机存取存储器的存储器阵列410中的存储器块的分区块大小等。
52.控制器460可以与配置寄存器450通信以访问存储的参数,并相应地指示计算电路430执行一系列操作以执行各种计算,例如top-k排序计算、k均值聚类计算或其他用于加速大型数据集上的相似度搜索方法的计算。例如,在top-k排序计算中,计算电路430计算并输出数据集中的第一个到第k个最大或最小值,其中k可以是任意整数。在k均值聚类计算中,计算电路430可以将n个数据点(或“观测值”)划分为k个集合(或“簇”),以便最小化簇内平方和(within-cluster sum of square,简称wcss)或方差。k可以是任意大于1的整数,n可以是任意大于k的整数。在某些应用中,top-k排序或k均值计算的k值是64到1500之间的数字,但本公开不限于此。在一些实施例中,用于top-k排序或k均值计算的数据集中的向量的数量在108到10
10
左右,但本公开不限于此。
53.在一些实施例中,来自控制器460的指令被解码,然后由计算电路430执行。计算电路430包括用于执行计算的存储组件和计算组件。例如,计算电路430中的存储组件包括一个或多个向量寄存器432和一个或多个向量寄存器436,以及计算电路430中的计算组件包括一个或多个缩减器434和标量算术逻辑单元(arithmetic-logic unit,简称alu)438。计算电路430可以经由存储器接口420从存储块410读取数据或向存储块410写入数据。例如,存储器接口420可以是连接存储块410和计算电路430的宽输入/输出接口,它提供每个周期(例如2纳秒)1024位的读/写。
54.现参考图5,其示出了与本公开的一些实施例一致的示例性的由存内计算处理单元400针对一种top-k排序方法执行的操作。在图5所示的实施例中,存内计算处理单元400执行top-k排序方法,其中k值大于向量可容纳元素的数量。例如,如果数据以32位存储,则1024位的向量可以容纳32个数据元素。响应于配置寄存器450中编程的k值大于32,控制器460可以指示计算电路430执行图5所示的方法。
55.在这种情景下,存储器阵列410包括存储数据元素的多个逻辑块412、414和416。计算电路430从逻辑块412、414和416接收数据元素,并进一步计算逻辑块412、414和416中的每一个的块最大或最小元素。
56.例如,计算电路430读取向量(例如,存储多个数据元素的1024位的向量),并将存储在向量中的最小值与当前逻辑块中的当前最小值的标量值进行比较。通过重复上述过程并读取当前逻辑块中的每个向量,计算电路430可以获得当前逻辑块中的最小元素,以及与该块最小元素相关联的块标识(identification,简称id)。计算电路430还可以执行类似的操作以获得当前逻辑块中的最大元素以及与该块最大元素相关的块标识。
57.计算电路430可以将逻辑块412、414和416中的每一个的最小(或最大)元素存储在多个向量寄存器432中的一个向量寄存器的一个条目中。然后,计算电路430可以使用缩减器434基于逻辑块412、414和416的块最小(或最大)元素来确定全局最小(或最大)元素。例如,使用最小缩减器来确定全局最小元素,且使用最大缩减器确定全局最大元素。
58.在将全局最小(或最大)元素存储为前k个数据元素中的一个之后,计算电路430禁用所存储的全局最小(或最大)元素并重复上述操作,以获得与所存储的、禁用的的全局最小(或最大)元素相关联的逻辑块的新的块最小(或最大)元素。
59.在获得逻辑块的新的块最小(或最大)元素之后,计算电路430可以再次使用缩减器434基于逻辑块412、414和416的块最小(或最大)元素来确定第二个全局最小(或最大)元素。因此,为了确定前k个数据元素(可能是最大的k个数据元素或最小的k个数据元素),计
算电路430可以重复上述操作k个周期来获得第一到第k个全局最小(或最大)元素。
60.现在参考图6,其示出了与本公开的一些实施例一致的示例性的由存内计算处理单元针对另一种top-k排序方法执行的操作。与图5所示的实施例相比,在图6所示的实施例中,存内计算处理单元400执行top-k排序方法,其中k值小于或等于向量可容纳元素的数量。例如,如果数据以32位存储在1024位的向量中,响应于在配置寄存器450中编程的k值小于或等于32,控制器460可以指示计算电路430执行图6所示的方法。
61.在这种情景下,向量寄存器432被配置为存储当前最小k个值。计算电路430使用缩减器434(例如,最大缩减器)来获得当前最小k个值的最大值并将该最大值存储在标量寄存器436中。
62.当计算电路430从存储器阵列410读取向量(例如,存储多个数据元素的1024位的向量)时,计算电路430将向量中的一个或多个最小值存储在标量寄存器436中。标量算术逻辑单元438可以与标量寄存器436通信并将向量中的一个或多个最小值与当前最小k个值的最大值进行比较。响应于向量中的一个或多个最小值小于当前最小k个值的最大值,计算电路430可以用向量中的一个或多个最小值替换向量寄存器432中的当前最小k个值的最大值,然后重新计算向量寄存器432中当前最小k个值的新的最大值。
63.计算电路430可以重复执行上述操作,直到所有数据元素都被读出和处理。因此,在该迭代过程之后保留在向量寄存器432中的k个值是最小的k个数据元素。
64.通过将当前最大的k个值存储在向量寄存器432中,通过标量算术逻辑单元438将从存储器阵列410读取的向量的一个或多个最大值与存储在标量寄存器436中的当前最大k个值的最小值进行比较,以及基于比较结果更新向量寄存器432,计算电路430可以执行类似操作来将最大的k个数据元素存储在向量寄存器432中。因此,计算电路430可以确定前k个数据元素,前k个数据元素可以是最大的k个数据元素或最小的k个数据元素。
65.现在参考图7a和图7b,其示出了与本公开的一些实施例一致的示例性的存内计算处理单元700。类似于图4中的存内计算处理单元400,在一些实施例中,存内计算处理单元700可以应用到与图2a中所示加速器架构200相同或相似的架构以及图3中所示的存储片配置(例如,存储片300)。与图4中的存内计算处理单元400相比较,在一些实施例中,存内计算处理单元700包括更多的执行计算的存储器组件和计算组件。例如,存内计算处理单元700中的计算电路430还可以包括静态随机存取存储器732、解码器734和单指令多数据处理器736,单指令多数据处理器736包括一个或多个加法器、减法器、乘法器、乘法累加器或它们的任意组合。
66.图7b示出存内计算处理单元700中的存储组件和计算组件如何通信和协作来执行各种计算任务。在一些实施例中,存内计算处理单元700使用静态随机存取存储器732和解码器734来执行乘积量化(product quantization,简称pq)压缩方法,以压缩或重构从存储器阵列410或控制器460接收到的数据,用于计算电路430中稍后的数据处理或操作。
67.在一些实施例中,计算电路430执行相似度搜索或k均值算法,并使用单指令多数据处理器736和缩减器434以高并行计算可扩展方式来计算两个向量之间的距离。在计算之后,计算电路430可以将计算的距离值存储在向量寄存器432或标量寄存器436中。计算电路430可以通过它的寄存器(例如向量寄存器432或标量寄存器436)和缩减器434中的最大缩减器,基于堆排序算法或任意其他合适算法来执行top-k排序操作。详细操作将在以下段落
中进一步讨论。
68.图8示出了与本公开的一些实施例一致的基于存内计算的加速器架构800。如图8所示,在一些实施例中,存内计算处理单元810a-810n由图4中的存内计算处理单元400或图7a中的存内计算处理单元700来实现,并且提供高可扩展性和高容量。在图8所示的基于存内计算的加速器架构800中,存内计算系统可以包括多个存内计算处理单元810a-810n,且存内计算处理单元810a-810n中的每一个通过握手协议、双倍数据速率(double data rate,简称ddr)协议或任意其他合适的协议与主机820通信。
69.在一些实施例中,存内计算处理单元810a-810n不具备直接通信的功能。或者说,存内计算处理单元810a-810n仅与主机820通信,但本公开不限于此。在一些其他实施例中,存内计算处理单元810a-810n中的部分或全部也可以通过适当的协议与另一个或多个存内计算处理单元810a-810n直接通信。在一些实施例中,基于存内计算的加速器架构800根据各种应用中的不同容量需求包括数百或数千个存内计算处理单元810a-810n。一般来说,图8中的存内计算处理单元810a-810n可以操纵和处理许多不同类型的高并行计算并将最终的计算结果发送到主机820。因此,存内计算芯片和主机820之间的数据通信得以减少。
70.现在参考图9,其示出了与本公开的一些实施例一致的示例性的由存内计算处理单元执行的、用于执行相似度搜索的非同步计算的操作。如图9所示,存储器阵列410可以包括4个动态随机存取存储器块。在一些实施例中,在相似度搜索期间,存内计算处理单元700计算存储在动态随机存取存储器块中向量之间的距离值,并执行top-k排序方法来对计算出的距离值进行排序。
71.如上所述,计算电路430可以通过单指令多数据处理器736和缩减器434中的和缩减器以高并行计算的方式计算向量之间的距离值。来自单指令多数据处理器736的并行计算输出可以存储或累加在向量累加器738中。
72.对于图9中的非同步计算,累加或存储在向量累加器738中的距离值然后可以被写回到存储器阵列410中的一个动态随机存取存储器块中。然后,计算电路430可以访问存储器阵列410中的距离值,并基于合并排序算法或任意其他合适的算法通过其寄存器(例如,向量寄存器432或标量寄存器436)和缩减器434(例如,最小缩减器)执行top-k排序操作。动态随机存取存储器块的最小值和对应的标签可以存储在计算电路430的寄存器中。因此,计算电路430可以首先使用缩减器434中的最小缩减器来到存储在寄存器中的最小值,然后继续在存储距离值的动态随机存取存储器块中查对应最小值并将最小值输出到主机。也就是说,在图9的非同步计算中,距离值的计算和top-k排序操作是在不同的时间段内进行的。
73.现在参考图10,其示出了与本公开的一些实施例一致的示例性的由存内计算处理单元700执行的、用于执行相似度搜索的同步计算的操作。与图9中的非同步计算相比,对于图10中所示的同步计算,距离值可以存储在寄存器中并且不写回存储器阵列410。
74.计算电路430基于堆排序算法通过其寄存器(例如向量寄存器432或标量寄存器436)和缩减器434(例如最大缩减器)执行top-k排序操作。具体地,计算电路430可以使用缩减器434中的最大缩减器来维持最小top-k堆并且使用寄存器来存储堆。因此,在图10的同步计算中,距离值的计算和top-k排序操作在计算电路430内同时同步进行。
75.现在参考图11和图12,其示出了与本公开实施例一致的示例性的由存内计算处理
单元700针对k均值聚类计算执行的操作。k均值聚类是一种矢量量化方法,旨在将n个观测值划分为k个集合(例如,簇)。每个观测值都是一个向量且属于具有最近均值的簇。也就是说,每个观测值都分配给具有最近簇中心(即簇质心)的簇。
76.给定一组初始的k均值,k均值聚类计算通过在分配步骤和更新步骤之间交替而进行。图11示出了分配步骤的示例性操作,其中存内计算处理单元700将每个向量分配给具有最近均值的簇(例如,具有最小平方欧几里得距离的簇)。图12示出了更新步骤的示例性操作,其中存内计算处理单元700针对分配给每个簇的向量重新计算均值或质心(即,簇中心虚构的或实际存在的数据点)。例如,在一些实施例中,可以基于以下公式计算和定义簇的质心:
[0077][0078]
其中,x1到xn是要聚类的n个向量,且m
1(t)
到m
k(t)
分别表示k个簇s
1(t)
到s
k(t)
在第t次迭代中的质心。
[0079]
如图11所示,存储器阵列410将向量存储在其存储块1010中并且将簇的当前质心(均值)存储在它的一个行缓冲器1020中。在一些实施例中,当分配行缓冲器1020存储当前质心时,相关联的存储块将不会被分配存储向量,因此存储在存储器阵列410中的向量可以相应地通过各自的行缓冲器被读取。计算电路430可以将存储器阵列410中的特征向量和行缓冲器1020中的所有质心读取到寄存器432或436。因此,计算电路430可以通过单指令多数据处理器736和缩减器434中的和缩减器以高度并行计算方式计算特征向量和质心之间的距离值,并将计算出的特征向量和质心之间的距离存储在静态随机存取存储器732中。
[0080]
然后,计算电路430可以使用缩减器434中的最小缩减器来到存储在静态随机存取存储器732中的最小值,以将特征向量分配给具有最近均值的簇。因此,计算电路430可以将指示质心与特征向量最近的簇标识标记到该特征向量,并将具有簇标识的该特征向量写回存储器阵列410。
[0081]
如图12所示,在更新步骤中,计算电路430将存储器阵列410中标有簇标识的向量读取到寄存器432或436,并通过单指令多数据处理器736根据一个或多个标有对应簇标识(例如,同一簇标识)的向量计算更新的质心。然后可以将更新的质心写回到行缓冲器1020中。在更新步骤中,可以通过改变向量和质心的访问顺序来减少随机访问,这减少了k均值聚类计算中的随机存储器访问。
[0082]
通过重复分配步骤和更新步骤,计算电路430可以对存储在存储器阵列410中的向量进行聚类,直到达到收敛。响应于在更新步骤之后质心未改变(例如,在分配步骤中没有向量被分配到不同的簇),计算电路430可以将簇结果输出到主机或将簇结果存储到存储器阵列410中。
[0083]
图13示出了与本公开的一些实施例一致的示例性的在基于存内计算的加速器架构上执行数据处理方法1300的流程图。根据本公开的一些实施例,基于存内计算的加速器架构(例如,图2a中的加速器架构200、图3中的存储片300和图8中的基于存内计算的加速器架构800)用于执行top-k排序、k均值聚类或相似度搜索。具体地,基于存内计算的加速器架构中的任意存内计算处理单元(例如图8中的存内计算处理单元810a-810n)可以基于与存内计算处理单元通信连接的主机(例如图8中的主机820)的配置在存内计算处理单元的计
算模式之间进行选择。计算模式可以包括第一top-k排序模式、第二top-k排序模式和k均值聚类模式中的一个或多个。根据所选择的模式,存内计算处理单元可以访问存储器阵列中的数据元素以执行相应的操作。
[0084]
图13中的数据处理方法1300说明了当选择top-k排序模式时,由基于存内计算的加速器架构执行的top-k排序计算的操作。在步骤1310,基于存内计算的加速器架构中的存内计算处理单元(例如,图8中的存内计算处理单元810a-810n)从通信连接到存内计算处理单元的主机(例如,图8中的主机820)接收配置。存内计算处理单元可以根据配置在计算模式之间进行选择。在数据处理方法1300中,计算模式包括第一top-k排序模式和第二top-k排序模式。
[0085]
在步骤1320,存内计算处理单元确定是以第一top-k排序模式还是第二top-k排序模式操作。具体地,存内计算处理单元将配置中的k值与阈值进行比较。响应于配置中的k值大于阈值(步骤1320为是),存内计算处理单元选择第一top-k排序模式并执行步骤1331-1338。响应于配置中的k值小于或等于阈值(步骤1320为否),存内计算处理单元选择第二top-k排序模式并执行步骤1341-1346。
[0086]
在第一top-k排序模式中,在步骤1331,存内计算处理单元的计算电路从存储器阵列中的多个逻辑块接收数据元素。
[0087]
在步骤1332,计算电路为每个逻辑块计算块最大(或最小)元素。例如,如果使用top-k排序模式来确定最大k个数据,则计算电路计算块最大元素。另一方面,如果使用top-k排序模式来确定最小k个数据,则计算电路计算块最小元素。
[0088]
在步骤1333,计算电路将逻辑块的块最大(或最小)元素存储在计算电路中的一个或多个向量寄存器中。然后,计算电路重复步骤1334-1338,直到确定了前k个数据元素。
[0089]
在步骤1334,计算电路基于逻辑块的块最大(或最小)元素确定全局最大(或最小)元素。在步骤1335,计算电路将所确定的全局最大(或最小)元素存储为前k个数据元素中的一个。在存储全局最大(或最小)元素之后,在步骤1336,计算电路禁用相关联的逻辑块中的全局最大(或最小)元素。在步骤1337,计算电路获得与存储的、被禁用的全局最大或最小元素相关联的逻辑块的下一个块最大或最小元素。
[0090]
也就是说,通过步骤1336和1337,当全局最大(或最小)元素被确定并存储时,计算电路只需要为这个对应的逻辑块重新计算和更新一个新的块最大(或最小)元素,并且其他逻辑块的块最大(或最小)元素可以在下一次迭代中重新使用,以确定下一个全局最大(或最小)元素。
[0091]
在步骤1338,计算电路确定是否确定和获得所有前k个数据元素。如果确定并存储了所有前k个数据元素(步骤1338为是),则计算电路执行步骤1350并将数据元素中的前k个数据元素输出到主机或存储器阵列。否则(步骤1338为否),重复步骤1334-1338以依顺序确定和存储前k个数据元素。
[0092]
当基于步骤1320的确定选择第二top-k排序模式时,在步骤1341,存内计算处理单元的计算电路首先将来自存储器阵列的k个初始数据元素存储到第一寄存器。然后,计算电路通过重复步骤1342-1346来重复更新第一寄存器,直到来自存储器阵列的数据元素都被接收和处理。
[0093]
在步骤1342,计算电路选择第一寄存器中的最大(或最小)元素作为目标元素。例
如,如果使用top-k排序模式来确定最大的k个数据,则计算电路选择第一寄存器中的最小元素作为目标元素。另一方面,如果使用top-k排序模式来确定最小的k个数据,则计算电路计算第一寄存器中的最大元素来作为目标元素。即,目标元素是可以在后续更新过程中从第一寄存器中逐出并被另一个数据元素替换的元素。
[0094]
在步骤1343,计算电路从存储器阵列接收的一个或多个剩余的数据元素中确定前k个候选元素。例如,剩余的数据元素可以是从动态随机存取存储器数据阵列的尚未处理的向量中读取的新数据。计算电路可以从存储器阵列接收向量,并选择向量中的最小(或最大)元素作为前k个候选元素。
[0095]
在步骤1344,计算电路比较前k个候选元素和目标元素。如果使用top-k排序模式来确定最大k个数据,则计算电路确定前k个候选元素是否大于第一寄存器中当前存储的目标元素。如果使用top-k排序模式来确定最小k个数据,则计算电路确定前k个候选元素是否小于第一寄存器中当前存储的目标元素。因此,计算电路可根据比较结果确定是否用前k个候选元素替换第一寄存器中的目标元素。具体地,在一些实施例中,计算电路将目标元素和前k个候选元素存储在计算电路中的第二寄存器中,并通过标量算术逻辑单元将前k个候选元素与目标元素进行比较以获得比较结果。
[0096]
如果计算电路确定应该替换第一寄存器中的目标元素(步骤1344为是),则计算电路执行步骤1345以使用前k个候选元素替换目标元素。否则(步骤1344为否),避开步骤1345且存储在第一寄存器中的数据保持不变。
[0097]
在步骤1346,计算电路确定是否处理了存储器阵列中所有感兴趣的数据元素。如果还有剩余的数据元素(例如,尚未处理向量中的数据)需要处理(步骤1346为否),则重复步骤1342-1346以更新存储在第一寄存器中的当前的前k个数据元素。在存储器阵列中所有感兴趣的数据元素都被处理的情况下(步骤1346为是),计算电路执行步骤1350并将存储在第一寄存器中的前k个数据元素输出到主机或存储器阵列。
[0098]
因此,通过上述操作,图13中的数据处理方法1300可以实现top-k排序计算以输出k个最大(或最小)的数据元素,其中k的值可以大于或小于向量寄存器中一个向量所容纳元素的数量。具体地,如果k的值是大于阈值的整数,则选择第一种top-k排序模式;如果k的值是小于或等于阈值的整数,则选择第二种top-k排序模式。
[0099]
图14示出了与本公开的一些实施例一致的示例性的在基于存内计算的加速器架构上执行另一数据处理方法1400的流程图。图14中的数据处理方法1400示出了k均值聚类模式下,由基于存内计算的加速器架构(例如,图2a中的加速器架构200、图3中的存储片300和图8中的基于存内计算的加速器架构800)执行的k均值聚类计算的操作。
[0100]
在k均值聚类模式下,在步骤1410,至少一个存内计算处理单元(例如图8中的存内计算处理单元810a-810n)初始化簇的质心。例如,为了具有k个簇,存内计算处理单元可以提供k个初始质心并将初始质心存储在存储器阵列的行缓冲器中。然后,存内计算处理单元通过重复分配步骤1420和更新步骤1430对存储在存储器阵列中的多个矢量进行聚类。在分配步骤1420中,存内计算处理单元基于向量点和簇的质心之间的距离将每个向量分配给当前簇之一。在更新步骤1430中,存内计算处理单元基于相应的向量更新每个簇的质心。各质心是分配步骤1420中分配给同一簇的向量的平均值。
[0101]
具体地,分配步骤1420包括子步骤1421-1425。在步骤1421,计算电路从行缓冲器
接收质心。在步骤1422,计算电路接收从存储器阵列的向量中选择的特征向量。在步骤1423,计算电路将簇标识标记到特征向量上,其中簇标识指示离特征向量最近的质心。在步骤1424,计算电路将具有簇标识的特征向量写回到存储器阵列。
[0102]
在步骤1425,计算电路确定存储器阵列中的所有感兴趣向量是否都被分配给相关联的簇。如果有剩余向量要处理(步骤1425为否),则重复步骤1421-1425以分配剩余向量。在存储器阵列中的所有感兴趣向量都被分配的情况下(步骤1425为是),计算电路进入更新步骤1430。
[0103]
更新步骤1430还包括子步骤1431和1432。在步骤1431,计算电路根据一个或多个标有相应的簇标识的向量计算更新的质心。在步骤1432,计算电路根据在步骤1420获得的最新分配结果确定是否更新所有簇标识的质心。如果有剩余质心要更新(步骤1432为否),则重复步骤1431和1432。
[0104]
当所有质心都被更新时(步骤1432为是),在步骤1440,计算电路检查在当前周期中在步骤1430之后质心是否都未改变。如果一个或多个质心被改变(步骤1440为否),则存内计算处理单元重复分配步骤1420和更新步骤1430,直到达到收敛。
[0105]
响应于更新操作之后质心未改变(步骤1440为是),存内计算处理单元执行步骤1450并将聚类结果输出至主机或将聚类结果存储到存储器阵列。因此,通过上述操作,图14中的数据处理方法1400可以实现k均值聚类计算并输出聚类结果。
[0106]
综上所述,如在本公开的各个实施例中所提出的,所提出的设备和方法可以利用动态随机存取存储器的高带宽并保证高效、并行和快速的计算。通过存储器阵列(例如,动态随机存取存储器数据阵列)和计算电路之间的宽输入/输出(例如,每个周期1024位的读/写),相似度搜索和k均值计算中的存储性能瓶颈得以显著减少。
[0107]
此外,通过使用所提出的设备和方法执行k均值聚类计算,存储器阵列和计算电路之间不必要的数据移动得以减少和最小化。此外,通过将质心存储在一个行缓冲器中并在k均值聚类计算的更新步骤中更改向量和质心的访问顺序,随机存储器访问得以减少。因此,k均值聚类的整体效率得以提高。在一些实施例中,相似度搜索的效率可以仅取决于带宽和存储器容量的比值。随着数据的增加,相似度搜索的计算时间仍然可以保持在几十毫秒。
[0108]
本公开的实施例可以应用于许多产品、环境和场景。例如,本公开的一些实施例可以应用于存内计算,例如人工智能的存内计算,包括基于动态随机存取存储器的处理单元。本公开的一些实施例还可以应用于张量处理单元、数据处理单元、神经网络处理单元等。
[0109]
本公开的实施例还提供了一种计算机程序产品。该计算机程序产品包括非暂时性的计算机可读存储介质,计算机可读存储介质上具有用于使处理器执行上述方法的计算机可读程序指令。
[0110]
计算机可读存储介质可以是能够存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如,但不限于,电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任意合适的组合。计算机可读存储介质的更具体示例性的非详尽列表包括以下设备:便携式计算机软盘、硬盘、随机存取存储器、只读存储器、可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom)、静态随机存取存储器、便携式光盘只读存储器(compact disc read-only memory,简称cd-rom)、数字多功能磁盘(digital versatile disk,简称dvd)、记忆棒、软盘、机械编码设备(例如穿
孔卡或具有记录其上的指令的凹槽中的凸起结构)以及前述的任意合适的组合。
[0111]
用于执行上述方法的计算机可读程序指令可以是汇编指令、指令集架构(instruction-set-architecture,简称isa)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据或以一种或多种编程语言(包括面向对象的编程语言和传统的过程化编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以作为独立软件包在计算机系统上完全执行,或者部分在第一计算机上并且部分在远离第一计算机的第二计算机上执行。在后一种情况下,远程的第二计算机可以通过任何类型的网络(包括局域网(local area network,简称lan)或广域网(wide area network,简称wan))连接到第一计算机。
[0112]
可以将计算机可读程序指令提供给计算机的处理器或其他可编程数据处理装置以形成机器,这样,由计算机的处理器或其他可编程数据处理装置执行的指令创建了实现上述方法的装置。
[0113]
图中的流程图和图表说明了根据本说明书的各种实施例的设备、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或图表中的块可以表示软件程序、一段或一部分代码,其包括用于实现特定功能的一个或多个可执行指令。还应注意,在一些替代实施方式中,方框中标注的功能可以不按图中标注的顺序出现。例如,连续显示的两个块实际上基本上同时执行,或者这些块有时以相反的顺序执行,这取决于所涉及的功能。还将注意,图表或流程图的每个块,以及图表和流程图中的块的组合,可以由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
[0114]
应当理解,为了清楚起见,在不同实施例的上下文中描述的本公开的某些特征也可以在单个实施例中以组合方式提供。相反地,为简洁起见,在单个实施例的上下文中描述的本公开的各种特征也可以单独提供,或在任意合适的子组合中提供,或在本公开的任意其他描述的实施例中是适合的。在各种实施例的上下文中描述的某些特征不应被认为是那些实施例的基本特征,除非实施例在没有这些要素的情况下无法实行。
[0115]
可以使用以下权项进一步描述实施例:
[0116]
1.一种存内计算设备,包括:
[0117]
存储器阵列,被配置为存储数据;和
[0118]
计算电路,被配置为执行指令集以使所述存内计算设备执行以下步骤:
[0119]
基于来自主机的配置在多个计算模式之间选择,所述主机通信耦合到所述存内计算设备,其中,所述多个计算模式包括第一排序模式和第二排序模式;
[0120]
访问所述存内计算设备的存储器阵列中的多个数据元素;以及
[0121]
在所述第一排序模式或所述第二排序模式下,将所述多个数据元素中的前k个数据元素输出到所述存储器阵列或所述主机;
[0122]
其中,k在所述第一排序模式被选择的情况下为大于阈值的整数,在所述第二排序模式被选择的情况下为小于或等于所述阈值的整数。
[0123]
2.根据权利要求1所述的存内计算设备,所述计算电路还包括向量寄存器,其中,在所述第一排序模式下,所述计算电路从所述存储器阵列中的多个逻辑块接收所述多个数据元素,且其中所述计算电路还被配置为执行所述指令集以使所述存内计算设备通过以下步骤确定所述前k个数据元素:
[0124]
为所述多个逻辑块中的每一个计算块最大或最小元素;
[0125]
将所述多个逻辑块的所述块最大或最小元素存储在所述向量寄存器中;以及
[0126]
重复以下操作,直到确定所述前k个数据元素:
[0127]
基于所述多个逻辑块的块最大或最小元素确定全局最大或最小元素;
[0128]
将所述全局最大或最小元素存储为所述前k个数据元素中的一个;
[0129]
禁用其逻辑块中的所述全局最大或最小元素;以及
[0130]
获得与被禁用的全局最大或最小元素相关联的逻辑块的下一个块最大或最小元素。
[0131]
3.根据权利要求1或2所述的存内计算设备,所述计算电路包括第一寄存器,其中在所述第二排序模式下,所述计算电路还被配置为执行所述指令以使所述存内计算设备通过以下步骤确定所述前k个数据元素:
[0132]
将来自所述存储器阵列的多个初始数据元素存储到所述第一寄存器;以及
[0133]
通过重复以下操作,更新所述第一寄存器,直到来自所述存储器阵列的所述多个数据元素被接收并处理:
[0134]
将所述第一寄存器中的最大或最小元素选为目标元素;
[0135]
从所述存储器阵列接收的一个或多个剩余数据元素中的确定候选元素;以及
[0136]
根据所述候选元素与所述目标元素的比较结果,确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素。
[0137]
4.根据权利要求3所述的存内计算设备,所述计算电路包括第二寄存器和标量算术逻辑单元,其中,所述计算电路还被配置为执行所述指令以使所述存内计算设备确定是否使用所述候选元素替换所述第一个寄存器中的所述目标元素:
[0138]
将所述目标元素和所述候选元素存储在所述第二个寄存器中;以及
[0139]
通过所述标量算术逻辑单元将所述候选元素与所述目标元素进行比较。
[0140]
5.根据权利要求1-4中任一项所述的存内计算设备,其中,所述计算电路还被配置为执行所述指令集以使所述存内计算设备执行以下步骤:
[0141]
响应于所述配置中的k值大于所述阈值,选择所述第一排序方式;以及
[0142]
响应于所述配置中的k值小于或等于所述阈值,选择所述第二排序方式。
[0143]
6.根据权利要求1-5中任一项所述的存内计算设备,其中,所述多个计算模式包括k均值聚类模式,其中在所述k均值聚类模式下,所述计算电路还被配置为执行所述指令集以使所述存内计算设备执行以下步骤:
[0144]
通过重复以下步骤将存储在所述存储器阵列中的多个向量聚类:
[0145]
将所述多个向量中的每一个分配给多个簇中的一个;以及
[0146]
更新所述多个簇的多个质心,其中,所述多个质心中的每一个是分配给同一簇的一个或多个相应的向量的平均值。
[0147]
7.根据权利要求6所述的存内计算设备,其中,在所述k均值聚类模式下,所述计算电路还被配置为执行所述指令集以使所述存内计算设备通过以下步骤分配所述多个向量中的每一个:
[0148]
从所述存储器阵列的行缓冲器接收所述多个质心;
[0149]
从所述存储器阵列接收从所述多个向量中选择的特征向量;
[0150]
将簇标识标记到所述特征向量,所述簇标识指示所述多个质心中与所述特征向量最近的一个;以及
[0151]
将具有所述簇标识的所述特征向量写回所述存储器阵列。
[0152]
8.根据权利要求7所述的存内计算设备,其中,在所述k均值聚类模式下,所述计算电路还被配置为执行所述指令集以使所述存内计算设备通过以下步骤更新所述多个质心中的每一个:
[0153]
根据所述存储器阵列中的一个或多个具有对应簇标识的向量,计算更新的质心。
[0154]
9.根据权利要求6-8中任一项所述的存内计算设备,其中,在k均值聚类模式下,计算电路还被配置为执行所述指令集以使所述存内计算设备:
[0155]
响应于更新所述多个质心中的每一个之后所述多个质心未改变,将聚类结果输出到所述主机或所述存储器阵列。
[0156]
10.根据权利要求1-9中任一项所述的存内计算设备,还包括:
[0157]
主机接口,被配置为将所述存内计算设备与主机通信;
[0158]
配置寄存器,被配置为存储来自所述主机的所述配置;和
[0159]
控制器,被配置为根据所述配置发送所述指令集。
[0160]
11.根据权利要求1-10中任一项所述的存内计算设备,其中,所述计算电路还包括:
[0161]
一个或多个寄存器,被配置为存储用于计算的数据;
[0162]
存储设备,被配置为存储所述指令集;和
[0163]
解码器,被配置为对所述指令集进行解码。
[0164]
12.根据权利要求1-11中任一项所述的存内计算设备,其中,所述计算电路还包括一个或多个单指令多数据单元、一个或多个缩减器单元、一个或多个算术逻辑单元,或其任意组合。
[0165]
13.根据权利要求1-12中任一项所述的存内计算设备,其中,所述存储器阵列包括动态随机存取存储器阵列,且所述存内计算设备还包括用于所述动态随机存取存储器阵列和所述计算电路通信的输入/输出接口。
[0166]
14.一种数据处理方法,包括:
[0167]
基于配置在存内计算设备的多个计算模式之间选择,其中,所述多个计算模式包括第一排序模式和第二排序模式;
[0168]
访问所述存内计算设备的存储器阵列中的多个数据元素;以及
[0169]
在所述第一排序模式或所述第二排序模式下,将所述多个数据元素中的前k个数据元素输出到所述存储器阵列或与所述存内计算设备通信耦合的主机;
[0170]
其中,k在所述第一排序模式被选择的情况下为大于阈值的整数,在所述第二排序模式被选择的情况下为小于或等于所述阈值的整数。
[0171]
15.根据权利要求14所述的数据处理方法,还包括:
[0172]
在所述存内计算设备被配置为在所述第一排序模式运行的情况下:
[0173]
从所述存储器阵列中的多个逻辑块接收所述多个数据元素;以及
[0174]
通过以下步骤确定所述前k个数据元素:
[0175]
为所述多个逻辑块中的每一个计算和存储块最大或最小元素;以及
[0176]
重复以下操作,直到确定所述前k个数据元素:
[0177]
基于所述多个逻辑块的所述块最大或最小元素确定全局最大或最小元素:
[0178]
将所述全局最大或最小元素存储为所述前k个数据元素中的一个:
[0179]
禁用其逻辑块中的所述全局最大或最小元素;以及
[0180]
获得与被禁用的全局最大或最小元素相关联的逻辑块的下一个块最大或最小元素。
[0181]
16.根据权利要求14或15所述的数据处理方法,还包括:
[0182]
在所述存内计算设备被配置为在第二排序模式运行的情况下,通过以下步骤确定所述前k个数据元素:
[0183]
将来自所述存储器阵列的多个初始数据元素存储到第一寄存器;以及
[0184]
通过重复以下操作,更新所述第一寄存器,直到来自所述存储器阵列的所述多个数据元素被接收并处理:
[0185]
将所述第一寄存器中的最大或最小元素选为目标元素;
[0186]
从所述存储器阵列接收的一个或多个剩余数据元素中确定候选元素;以及
[0187]
根据所述候选元素与所述目标元素的比较结果,确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素。
[0188]
17.根据权利要求16所述的数据处理方法,其中,确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素,包括:
[0189]
将所述目标元素和所述候选元素存储在第二寄存器中;以及
[0190]
将所述候选元素与所述目标元素进行比较。
[0191]
18.根据权利要求14-17中任一项所述的数据处理方法,其中,所述多个计算模式还包括k均值聚类模式,所述数据处理方法还包括:
[0192]
在所述存内计算设备被配置为以k均值聚类模式操作的情况下,通过重复以下步骤将存储在所述储器存阵列中的多个向量聚类:
[0193]
将所述多个向量中的每一个分配给多个簇中的一个;以及
[0194]
更新所述多个簇的多个质心,其中,所述多个质心中的每一个是分配给同一簇的一个或多个相应向量的平均值。
[0195]
19.根据权利要求18所述的数据处理方法,其中,分配所述多个向量中的每一个,包括:
[0196]
接收所述多个质心;
[0197]
接收从所述多个向量中选择的特征向量;
[0198]
将簇标识标记到所述特征向量,所述簇标识指示所述多个质心中与所述特征向量最近的一个;以及
[0199]
将具有所述簇标识的所述特征向量写回所述存储器阵列。
[0200]
20.根据权利要求19所述的数据处理方法,还包括:
[0201]
在所述存内计算设备被配置为以k均值聚类模式操作的情况下,通过根据所述存储器阵列中的一个或多个具有相应簇标识的向量计算更新的质心来更新所述多个质心中的每一个。
[0202]
21.根据权利要求18-20中任一项所述的数据处理方法,还包括:
[0203]
在所述存内计算设备被配置为以k均值聚类模式操作的情况下,响应于更新所述多个质心中的每一个之后所述多个质心未改变,将聚类结果输出到所述主机或所述存储器阵列。
[0204]
22.一种非暂时性的计算机可读介质,所述计算机可读存储介质存储指令集,所述指令集由装置的一个或多个计算电路执行以使所述装置开始实施数据处理方法,所述数据处理方法包括:
[0205]
基于配置在多个计算模式之间选择,其中,所述多个计算模式包括第一排序模式和第二排序模式;
[0206]
访问所述装置的存储器阵列中的多个数据元素;以及
[0207]
在所述第一排序模式或所述第二排序模式下,将所述多个数据元素中的前k个数据元素输出到所述存储器阵列或与所述装置通信连接的主机;
[0208]
其中,k在所述第一排序模式被选择的情况下为大于阈值的整数,在所述第二排序模式被选择的情况下为小于或等于所述阈值的整数。
[0209]
23.根据权利要求22所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置还在所述第一排序模式下执行:
[0210]
从所述存储器阵列中的多个逻辑块接收所述多个数据元素,以及
[0211]
通过以下步骤确定所述前k个数据元素:
[0212]
为所述多个逻辑块中的每一个计算和存储块最大或最小元素;以及
[0213]
重复以下操作,直到确定所述前k个数据元素:
[0214]
基于所述多个逻辑块的所述块最大或最小元素确定全局最大或最小元素;
[0215]
将所述全局最大或最小元素存储为所述前k个数据元素中的一个;
[0216]
禁用其逻辑块中的所述全局最大或最小元素;以及
[0217]
获得与被禁用的全局最大或最小元素相关联的逻辑块的下一个块最大或最小元素。
[0218]
24.根据权利要求22或23所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置还在所述第二排序模式下执行:
[0219]
通过以下步骤确定所述前k个数据元素:
[0220]
将来自存储器阵列的多个初始数据元素存储到第一寄存器;以及
[0221]
通过重复以下操作,更新所述第一寄存器,直到来自所述存储器阵列的所述多个数据元素被接收并处理:
[0222]
将所述第一寄存器中的最大或最小元素选为目标元素;
[0223]
从所述存储器阵列接收的一个或多个剩余数据元素中确定候选元素;以及
[0224]
根据所述候选元素与所述目标元素的比较结果,确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素。
[0225]
25.根据权利要求24所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置通过以下步骤确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素:
[0226]
将所述目标元素和所述候选元素存储在第二个寄存器中;以及
[0227]
将所述候选元素与所述目标元素进行比较。
[0228]
26.根据权利要求22-25中任一项所述的非暂时性的计算机可读介质,其中,所述多个计算模式包括k均值聚类模式,且所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置还在k均值聚类模式下执行:
[0229]
通过重复以下步骤将存储在所述存储器阵列中的多个向量聚类:
[0230]
将所述多个向量中的每一个分配给多个簇中的一个;以及
[0231]
更新所述多个簇的多个质心,其中,所述多个质心中的每一个是分配给同一簇的一个或多个相应向量的平均值。
[0232]
27.根据权利要求26所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置通过以下步骤分配所述多个向量中的每一个:
[0233]
从所述存储器阵列的行缓冲器接收所述多个质心;
[0234]
从所述存储器阵列接收从所述多个向量中选择的特征向量;
[0235]
将簇标识标记到所述特征向量,所述簇标识指示所述多个质心中与所述特征向量最近的一个;以及
[0236]
将具有所述簇标识的所述特征向量写回所述存储器阵列。
[0237]
28.根据权利要求27所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置通过以下步骤更新所述多个质心中的每一个:
[0238]
根据所述存储器阵列中的一个或多个具有相应簇标识的向量,计算更新的质心。
[0239]
29.根据权利要求26-28中任一项所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置在k均值聚类模式下还执行:
[0240]
响应于更新所述多个质心中的每一个之后所述多个质心未改变,将聚类结果输出到所述主机或所述存储器阵列。
[0241]
30.一种数据处理系统,包括:
[0242]
主机;和
[0243]
通信耦合到所述主机的多个存内计算设备,其中,所述多个存内计算设备中的任一个包括存储器阵列和计算电路,所述存储器阵列被配置为存储数据,所述计算电路被配置为执行指令集以使所述存内计算设备执行以下步骤:
[0244]
基于来自所述主机的配置,在多个计算模式之间进行选择,所述多个计算模式包括第一排序模式和第二排序模式;
[0245]
访问所述存内计算设备的存储器阵列中的多个数据元素;以及
[0246]
在所述第一排序方式或所述第二排序方式下,将所述多个数据元素中的前k个数据元素输出到所述主机;
[0247]
其中,k在所述第一排序模式被选择的情况下为大于阈值的整数,在第二排序模式被选择的情况下为小于或等于所述阈值的整数。
[0248]
在前述说明书中,实施例已经参考许多具体细节进行了描述,这些细节可以随实施方式的变化而变化。可以对所描述的实施例进行某些调整和修改。通过考虑此文所公开的本公开的说明书和实践,其他实施例对于本领域技术人员来说可以是显而易见的。说明
书和实施例意在仅被认为是示例性的。图中所示的步骤顺序也意在仅用于说明目的,并不意在限制于任何特定的步骤顺序。因此,本领域的技术人员可以理解,这些步骤可以以不同的顺序执行而实施相同的方法。在附图和说明书中,已经公开了示例性的实施例。然而,这些实施例可以作许多变化和修改。因此,虽然使用了特定术语,但它们仅用于一般和描述性的意义,而不是为了限制的目的。实施例的范围由所附权利要求限定。

技术特征:


1.一种存内计算设备,包括:存储器阵列,被配置为存储数据;和计算电路,被配置为执行指令集以使所述存内计算设备执行以下步骤:基于来自主机的配置在多个计算模式之间进行选择,所述主机通信耦合到所述存内计算设备,其中,所述多个计算模式包括第一排序模式和第二排序模式;访问所述存内计算设备的存储器阵列中的多个数据元素;以及在所述第一排序模式或所述第二排序模式下,将所述多个数据元素中的前k个数据元素输出到所述存储器阵列或所述主机;其中,k在所述第一排序模式被选择的情况下为大于阈值的整数,在所述第二排序模式被选择的情况下为小于或等于所述阈值的整数。2.根据权利要求1所述的存内计算设备,所述计算电路还包括向量寄存器,其中,在所述第一排序模式下,所述计算电路从所述存储器阵列中的多个逻辑块接收所述多个数据元素,且其中所述计算电路还被配置为执行所述指令集以使所述存内计算设备通过以下步骤确定所述前k个数据元素:为所述多个逻辑块中的每一个计算块最大或最小元素;将所述多个逻辑块的所述块最大或最小元素存储在所述向量寄存器中;以及重复以下操作,直到确定所述前k个数据元素:基于所述多个逻辑块的块最大或最小元素确定全局最大或最小元素;将所述全局最大或最小元素存储为所述前k个数据元素中的一个;禁用其逻辑块中的所述全局最大或最小元素;以及获得与被禁用的全局最大或最小元素相关联的逻辑块的下一个块最大或最小元素。3.根据权利要求1所述的存内计算设备,所述计算电路包括第一寄存器,其中,在所述第二排序模式下,所述计算电路还被配置为执行所述指令集以使所述存内计算设备通过以下步骤确定所述前k个数据元素:将来自所述存储器阵列的多个初始数据元素存储到所述第一寄存器;以及通过重复以下操作,更新所述第一寄存器,直到来自所述存储器阵列的所述多个数据元素被接收并处理:将所述第一寄存器中的最大或最小元素选为目标元素;从所述存储器阵列接收的一个或多个剩余数据元素中确定候选元素;以及根据所述候选元素与所述目标元素的比较结果,确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素。4.根据权利要求3所述的存内计算设备,所述计算电路包括第二寄存器和标量算术逻辑单元,其中,所述计算电路还被配置为执行所述指令集以使所述存内计算设备确定是否使用所述候选元素替换所述第一个寄存器中的所述目标元素:将所述目标元素和所述候选元素存储在所述第二个寄存器中;以及通过所述标量算术逻辑单元将所述候选元素与所述目标元素进行比较。5.根据权利要求1所述的存内计算设备,其中,所述计算电路还被配置为执行所述指令集以使所述存内计算设备执行以下步骤:响应于所述配置中的k值大于所述阈值,选择所述第一排序方式;以及
响应于所述配置中的k值小于或等于所述阈值,选择所述第二排序方式。6.根据权利要求1所述的存内计算设备,其中,所述多个计算模式包括k均值聚类模式,在所述k均值聚类模式下,所述计算电路还被配置为执行所述指令集以使所述存内计算设备执行以下步骤:通过重复以下步骤将存储在所述存储器阵列中的多个向量聚类:将所述多个向量中的每一个分配给多个簇中的一个;以及更新所述多个簇的多个质心,其中,所述多个质心中的每一个是分配给同一簇的一个或多个相应向量的平均值。7.根据权利要求6所述的存内计算设备,其中,在所述k均值聚类模式下,所述计算电路还被配置为执行所述指令集以使所述存内计算设备通过以下步骤分配所述多个向量中的每一个:从所述存储器阵列的行缓冲器接收所述多个质心;从所述存储器阵列接收从所述多个向量中选择的特征向量;将簇标识标记到所述特征向量,所述簇标识指示所述多个质心中与所述特征向量最近的一个;以及将具有所述簇标识的所述特征向量写回所述存储器阵列。8.根据权利要求1所述的存内计算设备,还包括:主机接口,被配置为将所述存内计算设备与主机通信;配置寄存器,被配置为存储来自所述主机的所述配置;和控制器,被配置为根据所述配置发送所述指令集。9.根据权利要求1所述的存内计算设备,其中,所述计算电路还包括:一个或多个寄存器,被配置为存储用于计算的数据;存储设备,被配置为存储所述指令集;和解码器,被配置为对所述指令集进行解码。10.根据权利要求1所述的存内计算设备,其中所述计算电路还包括一个或多个单指令多数据单元、一个或多个缩减单元、一个或多个算术逻辑单元,或其任意组合。11.一种数据处理方法,包括:基于配置在存内计算设备的多个计算模式之间进行选择,其中,所述多个计算模式包括第一排序模式和第二排序模式;访问所述存内计算设备的存储器阵列中的多个数据元素;以及在所述第一排序模式或所述第二排序模式下,将所述多个数据元素中的前k个数据元素输出到所述存储器阵列或输出到与所述存内计算设备通信耦合的主机;其中,k在所述第一排序模式被选择的情况下为大于阈值的整数,在所述第二排序模式被选择的情况下为小于或等于所述阈值的整数。12.根据权利要求11所述的数据处理方法,还包括:在所述存内计算设备被配置为在所述第一排序模式运行的情况下:从所述存储器阵列中的多个逻辑块接收所述多个数据元素;以及通过以下步骤确定所述前k个数据元素:为所述多个逻辑块中的每一个计算和存储块最大或最小元素;以及
重复以下操作,直到确定所述前k个数据元素:基于所述多个逻辑块的所述块最大或最小元素确定全局最大或最小元素:将所述全局最大或最小元素存储为所述前k个数据元素中的一个:禁用其逻辑块中的所述全局最大或最小元素;以及获得与被禁用的全局最大或最小元素相关联的逻辑块的下一个块最大或最小元素。13.根据权利要求11所述的数据处理方法,还包括:在所述存内计算设备被配置为在第二排序模式运行的情况下,通过以下步骤确定所述前k个数据元素:将来自所述存储器阵列的多个初始数据元素存储到第一寄存器;以及通过重复以下操作,更新所述第一寄存器,直到来自所述存储器阵列的所述多个数据元素被接收并处理:将所述第一寄存器中的最大或最小元素选为目标元素;从所述存储器阵列接收的一个或多个剩余数据元素中确定候选元素;以及根据所述候选元素与所述目标元素的比较结果,确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素。14.根据权利要求13所述的数据处理方法,其中,确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素,包括:将所述目标元素和所述候选元素存储在第二寄存器中;以及将所述候选元素与所述目标元素进行比较。15.根据权利要求11所述的数据处理方法,其中,所述多个计算模式还包括k均值聚类模式,所述数据处理方法还包括:在所述存内计算设备被配置为k均值聚类模式的情况下,通过重复以下步骤将存储在所述储器存阵列中的多个向量聚类:将所述多个向量中的每一个分配给多个簇中的一个;以及更新所述多个簇的多个质心,其中,所述多个质心中的每一个是分配给同一簇的一个或多个相应向量的平均值。16.一种非暂时性的计算机可读介质,所述计算机可读存储介质存储指令集,所述指令集由装置的一个或多个计算电路执行以使所述装置开始实施数据处理方法,所述数据处理方法包括:基于配置在多个计算模式之间进行选择,其中,所述多个计算模式包括第一排序模式和第二排序模式;访问所述装置的存储器阵列中的多个数据元素;以及在所述第一排序模式或所述第二排序模式下,将所述多个数据元素中的前k个数据元素输出到所述存储器阵列或输出到与所述装置通信连接的主机;其中,k在所述第一排序模式被选择的情况下为大于阈值的整数,在所述第二排序模式被选择的情况下为小于或等于所述阈值的整数。17.根据权利要求16所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置还在所述第一排序模式下执行:从所述存储器阵列中的多个逻辑块接收所述多个数据元素,以及
通过以下步骤确定所述前k个数据元素:为所述多个逻辑块中的每一个计算和存储块最大或最小元素;以及重复以下操作,直到确定所述前k个数据元素:基于所述多个逻辑块的所述块最大或最小元素确定全局最大或最小元素;将所述全局最大或最小元素存储为所述前k个数据元素中的一个;禁用其逻辑块中的所述全局最大或最小元素;以及获得与被禁用的全局最大或最小元素相关的逻辑块的下一个块最大或最小元素。18.根据权利要求16所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置还在所述第二排序模式下执行:通过以下步骤确定所述前k个数据元素:将来自存储器阵列的多个初始数据元素存储到第一寄存器;以及通过重复以下操作,更新所述第一寄存器,直到来自所述存储器阵列的所述多个数据元素被接收并处理:将所述第一寄存器中的最大或最小元素选为目标元素;从所述存储器阵列接收的一个或多个剩余数据元素中确定候选元素;以及根据所述候选元素与所述目标元素的比较结果,确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素。19.根据权利要求18所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置通过以下步骤确定是否使用所述候选元素替换所述第一寄存器中的所述目标元素:将所述目标元素和所述候选元素存储在第二个寄存器中;以及将所述候选元素与所述目标元素进行比较。20.根据权利要求16所述的非暂时性的计算机可读介质,其中,所述多个计算模式包括k均值聚类模式,且所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置还在k均值聚类模式下执行:通过重复以下步骤将存储在所述存储器阵列中的多个向量聚类:将所述多个向量中的每一个分配给多个簇中的一个;以及更新所述多个簇的多个质心,其中,所述多个质心中的每一个是分配给同一簇的一个或多个相应向量的平均值。21.根据权利要求20所述的非暂时性的计算机可读介质,其中,所述指令集由所述装置的所述一个或多个计算电路执行以使所述装置通过以下步骤分配所述多个向量中的每一个:从所述存储器阵列的行缓冲器接收所述多个质心;从所述存储器阵列接收从所述多个向量中选择的特征向量;将簇标识标记到所述特征向量,所述簇标识指示所述多个质心中与所述特征向量最近的一个;以及将具有所述簇标识的所述特征向量写回所述存储器阵列。22.一种数据处理系统,包括:主机;和
通信耦合到所述主机的多个存内计算设备,其中,所述多个存内计算设备中的任一个包括存储器阵列和计算电路,所述存储器阵列被配置为存储数据,所述计算电路被配置为执行指令集以使所述存内计算设备执行以下步骤:基于来自所述主机的配置,在多个计算模式之间进行选择,所述多个计算模式包括第一排序模式和第二排序模式;访问所述存内计算设备的存储器阵列中的多个数据元素;以及在所述第一排序方式或所述第二排序方式下,将所述多个数据元素中的前k个数据元素输出到所述主机;其中,k在所述第一排序模式被选择的情况下为大于阈值的整数,在第二排序模式被选择的情况下为小于或等于所述阈值的整数。

技术总结


本公开涉及一种存内计算设备。该存内计算设备包括存储器阵列和计算电路,存储器阵列被配置为存储数据,计算电路被配置为执行指令集以使存内计算设备执行以下步骤:基于来自主机的配置在包括第一和第二排序模式的多个计算模式之间进行选择,主机与存内计算设备通信耦合;访问存内计算设备的存储器阵列中的数据元素;在第一或第二排序方式下,将该数据元素中的前K个数据元素输出到存储器阵列或主机。K在第一排序模式被选择的情况下为大于阈值的整数,在第二排序模式被选择的情况下为小于或等于阈值的整数。于阈值的整数。于阈值的整数。


技术研发人员:

张雅文 关天婵 范小鑫 王雨豪 郑宏忠 李双辰 柳春笙

受保护的技术使用者:

阿里巴巴集团控股有限公司

技术研发日:

2020.09.07

技术公布日:

2023/3/21

本文发布于:2023-03-31 13:47:46,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/85181.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   多个   元素   存储器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图