CN107223237A - 用于存储器访问的方法和装置 - Google Patents

用于存储器访问的方法和装置 Download PDF

Info

Publication number
CN107223237A
CN107223237A CN201580076202.7A CN201580076202A CN107223237A CN 107223237 A CN107223237 A CN 107223237A CN 201580076202 A CN201580076202 A CN 201580076202A CN 107223237 A CN107223237 A CN 107223237A
Authority
CN
China
Prior art keywords
look
vector
data
stored
memory banks
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
CN201580076202.7A
Other languages
English (en)
Other versions
CN107223237B (zh
Inventor
赵程昱
金硕镇
徐东宽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN107223237A publication Critical patent/CN107223237A/zh
Application granted granted Critical
Publication of CN107223237B publication Critical patent/CN107223237B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Complex Calculations (AREA)

Abstract

公开了一种装置,包括:多个存储体;以及控制单元,用于生成存储从在多个存储体中所存储的数据复制的、对于向量算术操作必需的数据的多个查找表,并且通过读取生成的查找表中的数据来生成向量数据。

Description

用于存储器访问的方法和装置
技术领域
本发明构思涉及一种处理器访问存储器的方法和装置,并且更具体地,涉及一种向量处理器集中来自存储器的多个数据并将多个数据分散回存储器中的方法和装置。
背景技术
处理器可以访问存储器以读取操作所必需的数据并且将操作的结果存储回存储器中。例如,处理器可以执行从存储器读取数据的加载指令和将数据存储在存储器中的存储指令。
在早期处理器技术中,已经使用采用单指令单数据(SISD)方法的标量处理器,该单指令单数据(SISD)方法是用单个指令处理单个数据的方法。
然而,随着智能电话和高清晰度电视的普及,对于能够处理诸如图像处理、视觉处理、图像质量处理和图形渲染等领域的大量数据的处理器的必要性增加。因此,已经推广了采用单指令多数据(SIMD)方法的向量处理器,该单指令多数据(SIMD)方法是用单个指令处理多个数据的方法。向量处理器是用于以高速对构成向量的多个数据重复执行相同操作的处理器。向量处理器可以同时从存储器读取并且处理多个数据,以及然后将其结果存储回存储器中。
当向量处理器同时从存储器读取多个数据或将多个数据存储在存储器中时,向量处理器频繁访问相同的存储体。在这种情况下,存储体冲突导致失速(stall),并且因此系统的性能退化。
因此,为了使向量处理器同时从存储器中读取多个数据或将多个数据存储在存储器中,可能额外地需要专用硬件来预测存储体冲突并且通过基于预测而调度向量处理器的存储器访问来最小化冲突的发生。
然而,额外的硬件可能会增加处理器的总体面积并且增加设计复杂度。此外,软件中的复杂实现可能会导致处理器的另一个性能下降。
发明内容
本发明构思提供了一种方法和装置,通过该方法和装置,处理器以查找表的形式从存储器中读取多个数据,或者以查找表的形式将多个数据存储在存储器中。
此外,本发明构思提供了一种计算机可读记录介质,其中,记录了使计算机执行该方法的程序。本发明构思的实施例的技术目的不限于上述目的,并且可以从以下实施例中推导出其他目的。
附图说明
图1是示出根据一个实施例的向量处理器从存储器读取数据和向存储器写入数据的结构的图。
图2是示出根据一个实施例的向量处理器执行集中和分散的方法的图。
图3是示出根据一个实施例的向量处理器的结构的图。
图4是示出根据一个实施例的在主存储器中生成的多个查找表的图。
图5是示出根据一个实施例的在主存储器中生成的多个查找表的图。
图6a是示出根据一个实施例的向量处理器的结构的图。
图6b是示出根据一个实施例的向量处理器同步多个查找表的方法的图。
图7是示出根据一个实施例的向量处理器的结构的图。
图8a是示出根据一个实施例的向量处理器执行集中的方法的图。
图8b是示出根据一个实施例的向量处理器执行集中的方法的图。
图9是示出根据一个实施例的向量处理器执行分散的方法的图。
图10是示出根据一个实施例的向量处理器执行集中的方法的流程图。
图11是示出根据一个实施例的向量处理器生成多个查找表的方法的流程图。
图12是示出根据一个实施例的向量处理器执行分散的方法的流程图。
图13是示出根据一个实施例的向量处理器执行集中和分散的方法的流程图。
具体实施方式
技术方案
根据本发明构思的一个方面,提供了一种包括多个存储体和控制器的装置,该控制器被配置为生成多个查找表并且通过从多个查找表读取数据来生成向量数据,在查找表中,在多个存储体中所存储的数据之中的、对于向量操作必需的数据被复制和存储。
控制器可以包括:查找表生成单元,被配置为生成多个查找表;和集中单元,被配置为从多个查找表读取数据并且生成向量数据。
控制器可以为多个存储体中的每个生成一个查找表,其中,生成的查找表的数量与多个存储体的数量相同。
控制器可以将多个存储体划分成预定数量的组,并且为每个组生成一个查找表,以及为每个组所生成的一个查找表可以以交织(interleaving)的形式存储在包括在组中的多个存储体中。
控制器可以使用包括多个随机生成的索引的索引向量来访问查找表中的每个,并且读取在查找表中的每个的索引的位置处所存储的数据。
控制器可以将通过对向量数据执行预定向量操作所获得的结果向量数据划分成元素,并且在多个查找表中存储按元素划分的结果向量。
控制器可以在查找表中的每个中的预定索引位置处存储元素中的每个。
当在多个查找表中的任何一个查找表中的第一索引中所存储的数据的值改变时,控制器可以用改变的值来更新在剩余查找表中的每个中的第一索引中所存储的、其值没有改变的数据。
装置还可以包括开关单元(switching unit),其包括与查找表相对应的多个子开关单元(sub-switch unit),其中,多个子开关单元可以确定是否允许控制器访问查找表中的每个的预定索引位置。
多个子开关单元可以包括与多个存储体中的每个相对应的多个开关,并且每个开关可以确定控制器是否可访问多个存储体中的每个。
根据本发明构思的另一方面,提供了一种方法,包括:生成多个查找表,其中,多个存储体中所存储的数据之中的、对于向量操作必需的数据被复制和存储;以及通过从查找表读取数据来生成向量数据。
生成查找表可以包括为多个存储体中的每个生成一个查找表,其中,对于每个存储体,生成的查找表的数量与多个存储体的数量相同。
生成查找表可以包括将多个存储体划分成预定数量的组并且为每个组生成一个查找表,以及将为每个组所生成的一个查找表以交织的形式存储在包括在组中的多个存储体中。
通过从查找表读取数据来生成向量数据可以包括:使用包括多个随机生成的索引的索引向量来访问每个查找表,并且读取在每个查找表中的索引的位置处所存储的数据。
方法还可以包括将通过对向量数据执行预定向量操作所获得的结果向量数据划分成元素,并且在多个查找表中存储按元素划分的结果向量。
在多个查找表中存储按元素划分的结果向量可以包括将每个元素存储在每个查找表中的预定索引位置处。
在多个查找表中存储按元素划分的结果向量可以包括:当在多个查找表中的任何一个查找表中的第一索引中所存储的数据的值改变时,用改变的值来更新在每个剩余查找表中的第一索引中所存储的、其值没有改变的数据。
通过从查找表读取数据来生成向量数据可以包括通过读取存在于每个查找表中允许访问的预定索引位置处的数据来生成向量数据,并且在多个查找表中存储按元素划分的结果向量可以包括将结果向量数据存储在每个查找表中允许访问的预定索引位置处。
通过从查找表读取数据来生成向量数据和在多个查找表中存储按元素划分的结果向量可以包括确定是否允许访问每个存储体。
根据本发明构思的另一方面,提供了一种计算机可读记录介质,其中记录了使计算机执行方法的程序。
本发明的详细描述
在下文中,将参照附图详细描述实施例。由于本说明书中描述的实施例和附图中所示的配置仅是本发明构思的示例性实施例,并且不代表本发明构思的总体技术范围,因此应理解,本发明构思涵盖了在提交本申请时的各种等同物、修改和替代。
图1是示出根据一个实施例的向量处理器从存储器读取数据和向存储器写入数据的结构的图。
主存储器110可以是构成计算机、电视、移动电话、移动设备等的随机存取存储器(RAM),但是本发明构思不限于此。
在下文中,术语“主存储器”是指构成预定机器的存储器设备的存储器的全部或一些区域。根据一个实施例的主存储器110可以具有包括一个或多个存储体(以下称为“存储体(bank)”)的多存储体结构,以最小化存储器冲突。
向量处理器180可以是能够同时处理多个数据的处理器,并且向量处理器180中的指令可以以单指令多数据(SIMD)或多指令多数据(MIMD)的形式被处理,但是本发明构思不限于此。
向量处理器180可以从主存储器110读取多个数据,以向量的形式生成多个数据,对其执行向量运算,以及将向量运算的结果存储回主存储器110中。向量处理器180可以访问主存储器110中的多个存储体120、121、122、123、124、125、126和127,以同时读取或存储多个数据。
向量处理器180可以包括向量寄存器160。向量寄存器160是可以存储用于访问构成向量操作的元素(element)的存储器的地址并且可以通过向量指令进行读取或写入的寄存器。
向量寄存器160可以被划分成多个元素。例如,当16字节向量寄存器160存储8路向量时,向量寄存器160可以由8个元素组成并且一个元素可以具有2个字节的大小。
尽管图1中未示出,但是向量处理器180可以包括:用于使用流水线架构每个时钟执行操作的向量功能单元,用于从存储器读取和存储数据的向量加载/存储单元,用于存储存储器地址和控制信号的标量寄存器,以及用于连接寄存器的交叉条(cross-bar)。
根据一个实施例的向量处理器180可以使用各种方法来访问主存储器110,以便从主存储器110读取多个数据或者将多个数据写入主存储器110。
例如,向量处理器180可以从主存储器110顺序地读取多个数据,同时将存储器地址递增1,并且以向量的形式生成多个数据。向量处理器180可以使用单位步幅技术(unitstride technique),其使用所生成的向量执行向量操作并且将所执行的向量操作的结果顺序地存储回主存储器110中。
此外,例如,向量处理器180可以从主存储器110读取多个数据,同时将存储器地址递增存储在标量寄存器(未示出)中的常数值,并且以向量的形式生成多个数据。向量处理器180可以使用步幅访问技术(stride access technique),其使用所生成的向量执行向量操作并且将通过执行向量操作所获得的结果存储回主存储器110中,同时以相同的方法将存储器地址递增常数值。
此外,例如,向量处理器180可以从主存储器110随机读取数据,并且以向量的形式生成多个读取数据。向量处理器180可以使用索引的加载和存储技术,其使用所生成的向量执行向量操作,并且将通过执行向量操作所获得的结果随机存储回主存储器110中。索引的加载和存储技术是使用索引向量在主存储器110中读取分散数据以生成向量并且将向量操作的结果存储回主存储器110中的技术。
通常,使用索引向量读取分散在主存储器110中的多个数据被称为集中(gather),而使用索引向量将多个数据(即向量)分散并且存储在主存储器110中被称为分散。
根据一个实施例的向量处理器180可以在通过将存储在索引向量中的多个偏移值添加到基地址计算的存储器地址处读取多个数据,以对其执行集中,并且可以以向量的形式在向量寄存器160中存储多个数据。
例如,在执行8路向量运算的向量处理器180中,可以将8个索引(即存储有8个数据的存储器的相对地址)存储在索引向量中,并且向量处理器180可以通过将8个索引添加到基地址来读取相对应的地址的数据。8个读取数据以向量的形式存储在向量寄存器160中。
执行分散的处理是集中的逆处理。存储在向量寄存器160中的向量被划分为8个元素,并且8个元素被存储在通过将索引向量的偏移添加到基地址所获得的存储器地址处。
然而,当向量处理器180在执行集中和分散时来同时地读取或存储多个数据的情况下,向量处理器180可以频繁地访问相同的存储体。在这种情况下,存储体冲突可能导致失速,并且因此向量处理器的性能和效率可能会显着退化。
如上所述,向量处理器180需要同时访问主存储器110以从主存储器110读取多个数据,并且将多个数据存储在主存储器110中。因此,为了使向量处理器180同时地访问主存储器110,主存储器110可以具有多存储体结构,并且向量处理器180可能额外需要可以独立地控制存储体的地址的存储器系统(未示出)。
图2是示出根据一个实施例的向量处理器执行集中和分散的方法的图。
向量处理器180可以生成多个查找表(阴影部分)210、220、230、240、250、260、270和280,其中,存储在主存储器110中的多个数据之中的、对于向量操作必需的数据被复制和存储。主存储器110具有包括多个存储体的多存储体结构。
向量处理器180可以从生成的查找表210、220、230、240、250、260、270和280集中存储在查找表中的每个的预定索引位置处的多个数据,并且以向量形式生成多个数据。
根据一个实施例的向量处理器180可以分别从查找表210、220、230、240、250、260、270和280集中多个数据A、B、C、D、E、F、G和H。多个集中的数据A、B、C、D、E、F、G和H可以以向量的形式存储在向量寄存器160中,并且向量寄存器160中的向量可以是向量操作的操作数。
向量处理器180可以将存储在向量寄存器160中的向量划分成元素,并将按元素划分的向量分散在查找表210、220、230、240、250、260、270和280中的每个查找表中的预定索引位置处。作为分散对象的向量寄存器160中的向量可以是通过对集中的和生成的向量数据执行预定向量操作所获得的结果向量数据。
如上所述,当在向量处理器180访问主存储器110的多个存储体以执行集中和分散的同时发生存储体冲突时,向量处理器180的性能显着退化。在下文中,将参照图3至图10详细描述根据一个实施例的向量处理器180使用查找表执行集中和分散以减少存储体冲突的数量的方法。
图3是示出根据一个实施例的向量处理器的结构的图。
如上所述,主存储器110可以具有多存储体结构。为了便于描述,假设主存储器110包括8个存储体120、121、122、123、124、125、126和127,并且向量处理器180执行8路向量操作。
在图3中,示出向量处理器180执行8路向量操作并且向量寄存器160存储8路向量,但本发明构思不限于此。将明显的是,向量处理器180和向量寄存器160可以处理和存储n路向量。
根据一个实施例的向量处理器180可以包括集中单元320和查找表生成单元340。此外,向量处理器180可以包括控制器(未示出),该控制器包括集中单元320和查找表生成单元340。
根据一个实施例的查找表生成单元340可以生成多个查找表。查找表生成单元340可以为主存储器110中的存储体120、121、122、123、124、125、126和127中的每个生成一个查找表,或者可以将预定数量的存储体组合成一个组,并且为每个组生成一个查找表。也就是说,查找表生成单元340可以将主存储器110中的多个存储体划分为N个组,并且为每个组生成一个查找表。N是大于1的整数。
查找表是指其中当前正在主存储器110中执行的向量操作必需的数据被复制并且存储的表。例如,需要提高8K超高分辨率(UHD)图像的质量,可以以图像的光栅(raster)顺序应用16×16高斯滤波器(Gaussian filter)。应用16×16高斯滤波器必需的256个高斯系数可以被分散并且存储在主存储器110中。在执行图像质量改进之前的初始化步骤中,根据一个实施例的查找表生成单元340可以生成多个查找表,在多个查找表中,分散并且存在于主存储器110中的用于所有高斯系数的多个数据被复制并且存储。
根据一个实施例的查找表生成单元340可以为8个存储体120、121、122、123、124、125、126和127生成相同的查找表,如图4所示。在这种情况下,生成8个查找表,并且8个生成的查找表可以分别存储在八个存储体120、121、122、123、124、125、126和127中。
另外,如图5所示,根据一个实施例的查找表生成单元340可以将主存储器110的存储体分成第一组(包括存储体0 120和存储体1 121)、第二组(包括存储体2 122和存储体3123)、第三组(包括存储体4 124和存储体5125)和第四组(包括存储体6 126和存储体7127),并且为每个组生成一个查找表。在这种情况下,生成4个查找表,并且4个生成的查找表可以被划分并且存储在两个存储体中。
此外,根据一个实施例的查找表生成单元340可以将主存储器110的存储体分组为第一组(包括存储体0 120、存储体1 121、存储体2 122和存储体3 123),以及第二组(包括存储体4 124、存储体5 125、存储体6 126和存储体7 127),并且为每个组生成一个查找表。在这种情况下,生成两个查找表。
根据一个实施例的查找表生成单元340可以考虑存储查找表的主存储器110中存储的空间以及当向量处理器180访问查找表时发生的存储体冲突的数量来确定查找表的数量。也就是说,由于每个查找表都需要主存储器110中的存储空间,并且随着生成的查找表的数量增加,存储体中发生的冲突的数量减少,所以在查找表的数量与存储体冲突的数量之间存在权衡。
换句话说,当查找表生成单元340生成与存储体120、121、122、123、124、125、126和127的数量相对应的查找表,并且集中单元320生成包括与存储体的数量相同的数量的元素的向量时,即使当多个数据同时被随机读取时,也仅在一个存储体上执行一次访问。在这种情况下,不存在存储体冲突,但是存储查找表的空间最大化。然而,当为每个预定数量的存储体生成一个查找表时,可以增加存储体冲突的数量,但是可以减少存储查找表的空间。
当向量处理器180的性能很重要时,查找表生成单元340可以生成最大数量的查找表(即,对于每个存储体),并且可以将预定数量的存储体分组成一个组,以考虑将存储查找表的存储空间为每个组生成一个查找表。当查找表生成单元340将预定数量的存储体分成一个组以为每个组生成一个查找表时,查找表可以以交织形式存储在多个存储体中。将参照图5详细描述查找表生成单元的处理。
集中单元320可以使用查找表从主存储器110读取多个数据。多个数据可以以向量的形式存储在向量寄存器160中。集中单元320可以使用包括在访问多个查找表时随机生成的多个索引的索引向量来访问存在于主存储器110中的查找表中的每个的索引位置。
例如,集中单元320可以使用包括8个索引的索引向量来生成8路向量。更具体地,集中单元320可以使用通过将存储在索引向量中的每个偏移添加到基地址所获得的存储器地址来访问查找表中的每个的预定索引位置以从其读取数据。
集中单元320可以从多个查找表读取数据,并且通过在预定读取周期之后集中构成向量的所有数据来生成向量数据。
图4是示出根据一个实施例的在主存储器中生成的多个查找表的图。
根据一个实施例的主存储器110具有512KB的大小(从0x800x_0000到0x800x_FFFF的范围),并且存储体120、121、122、123、124、125、126和127中的每个具有64KB的大小。在图4中的存储体120、121、122、123、124、125、126和127的顶部示出的值0x8000x到0x807x分别被称为存储体的存储体的起始地址。
如上所述,可以为8个存储体中的每个生成查找表,或者可以通过将预定数量的存储体分组成一个组来为每个组生成查找表。查找表生成单元340可以生成多个查找表。
图4示出对于8个存储体中的每个生成查找表的情况,而图5示出为2个存储体生成一个查找表的情况。
在图4中,仅示出用于8个存储体中的存储体0 120、存储体3 123和存储体7 127的查找表410、415和420,并且省略了剩余的查找表。此外,为了便于描述,查找表410、415和420中的每个中的数据被示出为具有与每个索引相同的值。
根据一个实施例的查找表生成单元340可以以二维(2D)数组的形式生成查找表。也就是说,当生成的查找表的数量为I并且向量操作必需的数据的数量为J时,查找表可以生成为I×J的2D数组。可以通过不同的顶部地址区分查找表。
在向量处理器180执行向量操作之前,可以在初始化步骤中生成2D数组。在图4中,由于为所有8个存储体120、121、122、123、124、125、126和127生成查找表,因此可以生成8个查找表。由于每个查找表包括256个数据,因此可以声明8×256的2D数组。
根据一个实施例的向量处理器180可以使用下表1中所示的软件代码执行集中。将明显的是,表1中的软件代码仅仅是执行集中的一个实施例,并且可以以其他形式实现。
【表1】
参照表1中的代码,“ret”表示通过执行集中操作生成的向量。“ret”向量表示包括无符号短类型数据的8路向量。也就是说,表1中所示的“I_intr_gather8_uh”函数可以使用8个索引从8个存储体读取数据以生成向量。
“_I_src1”表示包括由无符号短类型数据组成的8个索引的8路索引向量。“_I_src1.s0”到“_I_src1.s7”可以表示在其处存在将从每个查找表读取的多个数据的索引位置,并且可以是随机生成的索引。
“_I_src2”表示被声明为无符号字符类型2D数组的查找表。对查找表中的每个(例如,“_I_src2[0:7]”)只执行一次访问。例如,可以使用“_I_src1.s0”的索引从“_I_src2[0]”的查找表中读取数据,并且可以使用“_I_src1.s1”的索引从“_I_src2[1]”的查找表中读取数据。也就是说,可以使用对于每个查找表的不同索引读取数据。也就是说,由于即使当使用随机生成的索引向量从主存储器110读取多个数据时,也从不同存储体读取8个数据,因此不会发生存储体冲突。
图5是示出根据一个实施例的在主存储器中生成的多个查找表的图。
也就是说,可以生成用于存储体0 120和存储体1 121的查找表530,可以生成用于存储体2 122和存储体3 123的查找表540,可以生成用于存储体4 124和存储体5 125的查找表550,以及可以生成用于存储体6 126和存储体7 127的查找表560。
四个生成的查找表中的每个被划分并存储在两个存储体中。例如,查找表530可以被划分并且存储在存储体0 120和存储体121中,并且查找表550可以被划分并存储在存储体4 124和存储体5 125中。
根据一个实施例的查找表可以以交织形式510存储在多个存储体中。也就是说,由于位于相邻存储器中的数据交替地存储在两个不同的存储体中,因此存储体冲突可能被最小化。例如,{0,2,4,...,252和254}的索引数据可以存储在存储体0 120中,并且索引数据{1,3,5,...,253和255}可以存储在存储体1 121中。
根据一个实施例的向量处理器180可以使用下表2中所示的软件代码来执行集中操作。将明显的是,表2中的软件代码仅仅是执行集中操作的一个实施例,并且可以以其他形式实现。
【表2】
在表2的代码中,由于变量与表1相同,因此将省略其说明。与表1的区别在于,通过参照相同的查找表来生成构成最终返回的向量“ret”的8个元素之中的2个元素。例如,“ret”的第一元素和第二元素是通过参照查找表530读取的数据,并且其第三元素和第四元素是通过参照查找表540读取的数据。
由于当生成的查找表的数量减少时,多个元素参照一个查找表,因此存储体冲突的数量增加。然而,如上所述,当以交织形式实现存在于多个存储体中的一个查找表时,可以使存储体冲突的数量最小化。
如图5所示,查找表以交织形式510实现,其中,偶数索引的数据存储在存储体0120、存储体2 122、存储体4 124和存储体6 126中,而奇数索引的数据存储在存储体1 121、存储体3 123、存储体5 125和存储体7 127中。当调用的(calling)索引向量是包括{偶数,奇数,偶数,奇数,偶数,奇数,偶数,奇数}的8路向量时,不发生存储体冲突。
图6a是示出根据一个实施例的向量处理器的结构的图。
根据一个实施例的向量处理器180可以包括集中单元320、查找表生成单元340和分散单元630。由于上面已经参照图3描述了集中单元320和查找表生成单元340,将省略其描述。
分散单元630执行与由集中单元320执行的处理的逆处理相对应的处理。因此,即使下面省略图2至图5中描述的集中单元320和查找表生成单元340的内容,也可以将内容以同样的方式适用于根据图6的实施例的分散单元630。
分散单元630可以将存储在向量寄存器160中的向量数据划分成元素,并将按元素划分的向量存储回多个查找表中。通过对由集中单元320生成的向量数据执行预定向量操作所获得的结果向量数据可以存储在向量寄存器160中。
根据一个实施例的分散单元630可以使用下表3中所示的软件代码来执行分散。将明显的是,表3中的软件代码仅仅是用于执行分散操作的一个实施例,并且可以以其他形式实现。
【表3】
参照表3中的代码,“_intr_scatter8_uh”函数可以将存储在向量寄存器160中的向量(8路向量)划分为元素,并且将按元素划分的向量存储在为每个存储体生成的查找表的预定位置处。“_I_src3”表示存储在向量寄存器160中的向量,并且可以存储通过执行向量操作所获得的结果向量。“_I_src3”表示包括无符号整数类型数据的8路向量。
“_I_src1”表示包括无符号短类型数据的8路索引向量。例如,“_intr_scatter8_uh”函数可以将“_I_src3.s3”存储在查找表“_I_src2[3]”的“_I_src1.s3”位置。
图6b是示出根据一个实施例的向量处理器同步多个查找表的方法的图。
如上所述,由于查找表生成单元340在初始化步骤中生成多个相同的查找表,因此多个查找表的数据可以彼此同步。也就是说,与集中单元320不同,分散单元630可以改变存储在各个查找表中的每个查找表的预定索引位置处的值,并且使用改变的值更新存储在不同查找表的相同索引位置处的值。查找表之间的同步可以由开关单元745来实现,该开关单元将在下面参照图7进行描述。
换句话说,当存储在向量寄存器160中的向量的元素的值被改变并且存储在预定查找表的预定索引处的值被更新时,分散单元630还可以使用相同值来更新在剩余查找表的预定索引处存储的数据。
例如,当在执行向量操作之后,当存储体0 120的第十二索引620的值改变为X时,剩余存储体120、121、123、124、125、126和127的每个的第十二索引位置的值也可以使用相同的X来更新。
然而,分散单元630没有必要在所有情况下都将所有查找表的值改变为相同值,并且可以使用开关单元745选择性地执行分散操作,其将在下面参照图8至图10描述。
图7是示出根据一个实施例的向量处理器的结构的图。
根据实施例的向量处理器可以包括集中单元320、分散单元630、开关单元745和查找表生成单元340。
开关单元745可以控制集中单元320和分散单元630对每个存储体的访问,以确定是否对每个查找表的预定索引位置执行集中和分散。开关单元745可以包括与每个查找表相对应的子开关单元(未示出),并且子开关单元可以确定是否允许集中单元320和分散单元630访问其中存在查找表的存储体中的预定索引位置。
每个子开关单元可以具有用于其中存在多个查找表的每个存储体的打开/关闭开关。也就是说,每个子开关单元可以包括与存储体数量相同数量的开关,并且开关可以确定集中单元320和分散单元630是否可以访问存储体中的每个。
当子开关单元关闭用于预定存储体的开关时,集中单元320可能无法从关闭的存储体读取数据,并且分散单元630也可能无法将数据存储在关闭的存储体中。此外,当用于预定存储体的开关打开时,集中单元320和分散单元630可以分别在打开的存储体的预定索引位置执行集中和分散。
例如,当主存储器110中存在8个存储体时,为每个存储体生成一个查找表,并且存在8个查找表,开关单元745可以包括8个子开关单元,并且每个子开关单元可以包括与存储体数量相同数量的开关。当需要同步多个相同的查找表时,向量处理器180可以适当地打开开关单元745中的每个子开关单元中的开关,并且对多个相同的查找表执行分散。下面将参照图9描述向量处理器180的处理。
此外,当向量处理器180从每个查找表集中一个或两个数据来以向量的形式生成数据时,向量处理器180可以仅将开关单元745中每个子开关单元中的一个或两个开关设置为打开,并且对一个或两个开关执行集中。下面将参照图8a和图8b描述向量处理器180的处理。
图8a是示出根据一个实施例的向量处理器执行集中的方法的图。
为了便于描述,假设对于向量操作必需的数据的数量为8,并且每个查找表以交织形式存储在两个存储体中。例如,查找表850以交织形式存储在存储体0 120和存储体1 121中。集中单元320可以集中用于每个查找表的两个数据以生成8路向量。
开关单元745可以包括与查找表相对应的4个子开关单元810、820、830和840。子开关单元810、820、830和840中的每个可以包括与存储体120、121、122、123、124、125、126和127的数量相同数量的开关。子开关单元810、820、830和840中的每个中的左侧最上的开关可以控制对存储体0 120的访问,并且其中的右侧最下的开关可以控制对存储体7 127的访问。
在子开关单元810、820、830和840中的每个的开关之中被设置为打开的开关被画有阴影。在下文中,子开关单元中的左侧最上的开关被称为第一开关,并且开关按从左到右从上到下的顺序编号。也就是说,子开关单元810、820、830和840中的每个中的右侧最下的开关是第八开关。
根据一个实施例的集中单元320可以使用第一开关和第二开关打开的子开关单元810读取分别存储在存储体0 120和存储体1 121中的查找表850的索引0和索引5的数据。此外,例如,集中单元320可以使用第五开关和第六开关打开的子开关单元830读取分别存储在存储体4 124和存储体5 125中的查找表870的索引4和索引1的数据。
图8b是示出根据一个实施例的向量处理器执行集中的方法的图。
图8b示出为存储体120、121、122、123、124、125、126或127中的每个生成查找表的情况。开关单元745可以包括与各个查找表相对应的8个子开关单元815、825、835、845、855、865、875和885。子开关单元815、825、835、845、855、865、875和885中的每个可以包括等于存储体数量的8个开关。
根据一个实施例的向量处理器180可以将包括在子开关单元815、825、835、845、855、865、875和885中的每个中的8个开关之中的仅一个开关设置为打开,并且读取查找表818、828、838、848、858、868、878和888中的每个的预定索引位置处存在的一个数据。
例如,集中单元320可以使用第一开关打开的子开关单元815读取在存储体0 120中的查找表818的索引0处所存储的数据,并且可以使用第六开关打开的子开关单元865读取在存储体5 125中的查找表868的索引7处所存储的数据。
图9是示出根据一个实施例的向量处理器执行分散的方法的图。
为了便于描述,假设一个查找表存储四个数据,并且该查找表以交织形式存储在两个存储体中。例如,查找表950以交织形式存储在存储体0 120和存储体1 121中。也就是说,查找表的索引0和2存在于偶数存储体120、122、124和126中,其索引1和3存在于奇数存储体121、123、125和127中。
根据一个实施例的分散单元630可以将存储在向量寄存器160中的向量划分为元素并且在查找表950、960、970和980中分散并且存储按元素划分的向量。
例如,假设先前存储在向量寄存器160中的向量是4路向量,并且在执行向量操作之后更新向量的所有元素。分散单元630可以将4路向量的第一元素存储在查找表950中,将第二元素存储在查找表960中,将第三元素存储在查找表970中,以及将第四元素存储在查找表980中。也就是说,四个元素可以分散并且存储在各个查找表950、960、970和980的不同索引中。
然而,如上所述,可能需要多个查找表的同步。向量处理器180可以适当地将存在于子开关单元910、920、930和940中的每个中的8个开关设置为打开,并且对各个查找表中的所有索引位置执行分散。
也就是说,可以打开子开关单元910的第一开关、第三开关、第五开关和第七开关,以将数据存储在查找表950、960、970和980中的每个的索引2中。
此外,可以打开子开关单元920的第二开关、第四开关、第六开关和第八开关,以将数据存储在查找表950、960、970和980中的每个的索引3中。
此外,可以打开子开关单元930的第一开关、第三开关、第五开关和第七开关,以将数据存储在查找表950、960、970和980中的每个的索引0中。
此外,可以打开子开关单元940的第二开关、第四开关、第六开关和第八开关,以将数据存储在查找表950、960、970和980中的每个的索引1中。
结果,可以更新存储在查找表950、960、970和980中的每个的索引0至3中的所有数据。
将明显的是,向量处理器180可以仅将子开关单元910、920、930和940中的每个的开关中的一些设置为打开,并且当不需要同步查找表时对查找表执行分散。例如,尽管图9中未示出,可以仅打开子开关单元910的第一开关,以在存储体0 120中所存储的查找表950的索引2的位置处存储数据。另外,可以仅打开子开关单元920的第四开关,以在存储体3123中所存储的查找表960的索引3的位置处存储数据。另外,可以仅打开子开关单元930的第五开关,以在存储体4 124中所存储的查找表970的索引0的位置处存储数据。另外,可以仅打开子开关单元940的第八开关,以在存储体7 127中所存储的查找表980的索引1的位置处存储数据。
根据一个实施例的集中单元320、分散单元630、开关单元745和查找表生成单元340可以通过生成查找表并且仅扩展向量处理器的加载和存储操作而不改变向量处理器180的结构来实现。因此,根据实施例的集中单元320、分散单元630、开关单元745和查找表生成单元340可以以固有形式实现,其中,向量处理器180的指令集架构(ISA)不改变,并且因此可以在不修改向量处理器180的结构或者不需要额外的硬件的情况下实现。
在下文中,将参照图10至图13中的流程图来描述根据一个实施例的向量处理器180访问存储器并且执行数据集中和分散的方法。图10至图13是用于描述图1至图9所示的向量处理器180执行集和分散的方法的流程图。因此,即使省略以上关于图1至图9中的向量处理器180所描述的内容,内容适用于根据图10至图13的实施例的集中和分散方法。
图10是示出根据一个实施例的向量处理器执行集中的方法的流程图。
在步骤1020,向量处理器180可以为主存储器生成多个查找表。查找表是指其中在主存储器所存储的数据之中的、对于当前正在执行的向量操作必需的数据被复制并且存储的表。主存储器可以具有多存储体结构。生成的查找表可以存储在每个存储体中,或者可以被划分并且存储在多个存储体。
在步骤1030,向量处理器180可以执行用于从查找表读取多个数据并且生成向量数据的集中。更具体地,根据一个实施例的向量处理器180可以使用所生成的查找表来执行从主存储器读取多个数据并且将多个数据以向量的形式存储在向量寄存器中的集中操作。
在步骤1030,向量处理器180可以使用包括多个随机生成的索引的索引向量访问存在于主存储器中的每个查找表的索引位置,以读取数据。
图11是示出根据一个实施例的向量处理器生成多个查找表的方法的流程图。
在步骤1110,向量处理器180可以确定将生成的查找表的数量。根据一个实施例的向量处理器180可以考虑存储查找表的主存储器中的空间与访问查找表的向量处理器引起的存储器冲突的数量之间的权衡来确定将生成的查找表的数量。
在步骤1120,向量处理器180确定是否生成与存储体的数量相同数量的查找表。当确定生成的查找表的数量等于存储体的数量时,处理进行到步骤1140,否则处理进行到步骤1130。
在步骤1130,向量处理器180可以将生成的查找表中的每个划分并且存储在多个存储体中。根据一个实施例的向量处理器180可以以交织形式将每个查找表划分并且存储在多个存储体中。也就是说,可以将多个数据交替地存储在不同存储体中,从而可以最小化存储体冲突。
在步骤1140,向量处理器180可以为每个存储体生成一个查找表。查找表分别存储在存储体中。
图12是示出根据一个实施例的向量处理器执行分散的方法的流程图。
由于已经参照图10描述了步骤1020和1030。在图10中,将省略其描述。
根据一个实施例的向量处理器180可以执行分散,以用于将向量数据分散并且存储在查找表中。
在步骤1230,根据一个实施例的向量处理器180可以将存储在向量寄存器中的向量划分为元素以将元素存储回查找表中。存储在向量寄存器中的向量可以对在步骤1030中生成的向量执行向量操作,存储通过执行操作所获得的结果向量数据,以及可以在步骤1230将结果向量数据存储回多个查找表。
在步骤1230,当根据本实施例的向量处理器180更新存储在预定查找表的预定索引中的值以便同步查找表时,存储在剩余查找表中的每个的预定索引中的数据也可以使用相同值被更新。
图13是示出根据一个实施例的向量处理器执行集中和分散的方法的流程图。
由于已经参照图10和图12描述了步骤1020、1030和1230,将省略其描述。
根据一个实施例的向量处理器180可以在执行集中(步骤1030)或执行分散(步骤1230)之前,在步骤1310确定是否允许访问每个查找表的预定索引位置。也就是说,向量处理器180可以通过确定存储在查找表中的每个存储体是否可访问来确定要执行集中(步骤1030)或要执行分散(步骤1230)的查找表的索引位置。
在步骤1030,可以通过读取在每个查找表中允许访问的预定索引位置处存在的数据来生成向量数据。根据一个实施例的向量处理器180可以通过读取在存在于可访问存储体中的查找表的预定位置处所存储的数据来生成向量数据。
在步骤1230,向量数据可以存储在每个查找表中允许访问的预定索引位置。根据一个实施例的向量处理器180可以将数据存储在存在于可访问存储体中的查找表的预定位置处。
根据一个实施例的向量处理器180可以应用于执行向量操作的大多数处理器,诸如通用处理器、数字信号处理处理器(DSP)、应用特定指令集处理器(ASIP)图形处理单元等等。
同时,方法可以被实现为计算机可读记录介质上的计算机可读代码。计算机可读记录介质包括存储由计算机系统可以读取的数据的所有种类的记录装置。例如,计算机可读记录介质包括只读存储器(ROM)、RAM、压缩盘(CD)-ROM、磁带、软盘、光数据存储装置等,并且包括以诸如通过互联网传输的载波的形式实现的设备。
此外,计算机可读记录介质可以分发到经由网络连接的计算机系统,因此可以以分布式方式存储和执行由处理器可以读取的代码。
尽管本发明构思已经在其最佳实施例中进行了描述,但是鉴于上述描述,对于本领域技术人员来说,本发明构思的替代、修改和变化是明显的。也就是说,权利要求应被解释为包括本发明构思的所有这些替代、修改和变化。因此,包含在说明书和附图中的所有内容应被解释为说明性的并且为非限制性的含义。

Claims (15)

1.一种装置,包括:
多个存储体;以及
控制器,被配置为生成多个查找表并且通过从多个查找表读取数据来生成向量数据,在多个查找表中,在多个存储体中所存储的数据之中的、对于向量操作必需的数据被复制和存储。
2.根据权利要求1所述的装置,其中,控制器包括:
查找表生成单元,被配置为生成多个查找表;以及
集中单元,被配置为从多个查找表读取数据并且生成向量数据。
3.根据权利要求1所述的装置,其中,控制器为多个存储体中的每个生成一个查找表,其中,生成的查找表的数量与多个存储体的数量相同。
4.根据权利要求1所述的装置,其中:
控制器将多个存储体划分成预定数量的组,并且为每个组生成一个查找表;以及
将为每个组所生成的一个查找表以交织的形式存储在包括在组中的多个存储体中。
5.根据权利要求1所述的装置,其中,控制器使用包括多个随机生成的索引的索引向量来访问查找表中的每个,并且读取在查找表中的每个中的索引的位置处所存储的数据。
6.根据权利要求1所述的装置,其中,控制器将通过对向量数据执行预定向量操作所获得的结果向量数据划分成元素,并且在多个查找表中存储按元素划分的结果向量。
7.根据权利要求6所述的装置,其中,控制器在查找表中的每个中的预定索引位置处存储元素中的每个。
8.根据权利要求6所述的装置,其中,当在多个查找表中的一个查找表中的第一索引中所存储的数据的值改变时,控制器用改变的值来更新在剩余查找表中的每个中的第一索引中所存储的、其值没有改变的数据。
9.根据权利要求6所述的装置,还包括:开关单元,包括与查找表相对应的多个子开关单元,
其中,多个子开关单元确定是否允许控制器访问查找表中的每个的预定索引位置。
10.根据权利要求9所述的装置,其中:
多个子开关单元包括与多个存储体中的每个相对应的多个开关;以及
多个开关中的每个确定控制器是否可访问多个存储体中的每个。
11.一种方法,包括:
生成多个查找表,在多个查找表中,在多个存储体中所存储的数据之中的、对于向量操作必需的数据被复制和存储;以及
通过从查找表读取数据来生成向量数据。
12.根据权利要求11所述的方法,其中,生成查找表包括为多个存储体中的每个生成一个查找表,其中,对于每个存储体,生成的查找表的数量与多个存储体的数量相同。
13.根据权利要求11所述的方法,其中,生成查找表包括:
将多个存储体划分成预定数量的组,并且为每个组生成一个查找表;以及
将为每个组所生成的一个查找表以交织的形式存储在包括在组中的多个存储体中。
14.根据权利要求11所述的方法,其中,通过从查找表读取数据来生成向量数据包括:使用包括多个随机生成的索引的索引向量来访问查找表中的每个,并且读取在查找表中的每个中的索引的位置处所存储的数据。
15.一种其中记录有程序的计算机可读记录介质,所述程序用于使计算机执行根据权利要求11至14中任一项所述的方法。
CN201580076202.7A 2014-12-15 2015-11-17 用于存储器访问的方法和装置 Active CN107223237B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2014-0180501 2014-12-15
KR1020140180501A KR102357863B1 (ko) 2014-12-15 2014-12-15 메모리 접근 방법 및 장치
PCT/KR2015/012317 WO2016099036A1 (ko) 2014-12-15 2015-11-17 메모리 접근 방법 및 장치

Publications (2)

Publication Number Publication Date
CN107223237A true CN107223237A (zh) 2017-09-29
CN107223237B CN107223237B (zh) 2021-09-21

Family

ID=56126864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580076202.7A Active CN107223237B (zh) 2014-12-15 2015-11-17 用于存储器访问的方法和装置

Country Status (5)

Country Link
US (1) US10409596B2 (zh)
EP (1) EP3220274B1 (zh)
KR (1) KR102357863B1 (zh)
CN (1) CN107223237B (zh)
WO (1) WO2016099036A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109496306B (zh) 2016-07-13 2023-08-29 莫鲁米有限公司 多功能运算装置及快速傅里叶变换运算装置
WO2019168739A1 (en) * 2018-02-27 2019-09-06 Google Llc Large lookup tables for an image processor
KR102545189B1 (ko) * 2018-09-07 2023-06-19 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US11226822B2 (en) 2019-05-27 2022-01-18 Texas Instmments Incorporated Look-up table initialize
KR102316271B1 (ko) * 2019-08-29 2021-10-22 동국대학교 산학협력단 데이터 저장장치의 주소 맵핑 테이블 운용 방법
US11630667B2 (en) * 2019-11-27 2023-04-18 Advanced Micro Devices, Inc. Dedicated vector sub-processor system
KR20210112949A (ko) 2020-03-06 2021-09-15 삼성전자주식회사 데이터 버스, 그것의 데이터 처리 방법 및 데이터 처리 장치
KR20220145656A (ko) * 2021-04-22 2022-10-31 에스케이하이닉스 주식회사 호스트 및 이를 포함하는 컴퓨팅 시스템
US11836527B2 (en) * 2021-08-02 2023-12-05 Nvidia Corporation Accelerating table lookups using a decoupled lookup table accelerator in a system on a chip
KR102545175B1 (ko) * 2022-05-02 2023-06-20 삼성전자주식회사 어드레스 테이블을 포함하는 메모리 장치, 및 메모리 컨트롤러의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1698304A (zh) * 2002-09-06 2005-11-16 美国邮政服务公司 用于通过对所提供的访问信息安全地进行预处理来有效地检索安全数据的方法和系统
US20090150644A1 (en) * 2007-12-10 2009-06-11 Electronics And Telecommunication Research Institute Apparatus and method for reducing memory access conflict
US20110075170A1 (en) * 2009-09-30 2011-03-31 Kyocera Mita Corporation Image processing apparatus and image forming apparatus using same
US20130212353A1 (en) * 2002-02-04 2013-08-15 Tibet MIMAR System for implementing vector look-up table operations in a SIMD processor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093102B1 (en) 2000-03-29 2006-08-15 Intel Corporation Code sequence for vector gather and scatter
US6430672B1 (en) * 2000-07-17 2002-08-06 International Business Machines Corporation Method for performing address mapping using two lookup tables
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US7339592B2 (en) * 2004-07-13 2008-03-04 Nvidia Corporation Simulating multiported memories using lower port count memories
KR100800552B1 (ko) * 2005-06-13 2008-02-04 재단법인서울대학교산학협력재단 벡터 메모리, 이를 구비한 프로세서 및 그 데이터 처리방법
US7627735B2 (en) 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US7441099B2 (en) * 2006-10-03 2008-10-21 Hong Kong Applied Science and Technology Research Institute Company Limited Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
US8191056B2 (en) 2006-10-13 2012-05-29 International Business Machines Corporation Sparse vectorization without hardware gather/scatter
US8266408B2 (en) 2009-03-17 2012-09-11 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US20130185540A1 (en) * 2011-07-14 2013-07-18 Texas Instruments Incorporated Processor with multi-level looping vector coprocessor
US9158683B2 (en) * 2012-08-09 2015-10-13 Texas Instruments Incorporated Multiport memory emulation using single-port memory devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130212353A1 (en) * 2002-02-04 2013-08-15 Tibet MIMAR System for implementing vector look-up table operations in a SIMD processor
CN1698304A (zh) * 2002-09-06 2005-11-16 美国邮政服务公司 用于通过对所提供的访问信息安全地进行预处理来有效地检索安全数据的方法和系统
US20090150644A1 (en) * 2007-12-10 2009-06-11 Electronics And Telecommunication Research Institute Apparatus and method for reducing memory access conflict
US20110075170A1 (en) * 2009-09-30 2011-03-31 Kyocera Mita Corporation Image processing apparatus and image forming apparatus using same

Also Published As

Publication number Publication date
KR102357863B1 (ko) 2022-02-04
US10409596B2 (en) 2019-09-10
EP3220274B1 (en) 2022-03-16
CN107223237B (zh) 2021-09-21
WO2016099036A1 (ko) 2016-06-23
EP3220274A1 (en) 2017-09-20
EP3220274A4 (en) 2017-11-22
KR20160072620A (ko) 2016-06-23
US20170344369A1 (en) 2017-11-30

Similar Documents

Publication Publication Date Title
CN107223237A (zh) 用于存储器访问的方法和装置
JP7245338B2 (ja) ニューラルネットワークプロセッサ
EP3526665B1 (en) Sorting for data-parallel computing devices
Khoram et al. Accelerating graph analytics by co-optimizing storage and access on an FPGA-HMC platform
CN109255829A (zh) 用于光线跟踪的混合层级
JP2019533868A (ja) ニューラルネットワーク命令セットアーキテクチャ
CN108805261A (zh) 基于八叉树的卷积神经网络
CN111860807B (zh) 分形计算装置、方法、集成电路及板卡
CN105843591B (zh) 多维数组滑动生成数据的方法、装置及处理器
CN103543983B (zh) 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
CN114118348A (zh) 加速器、操作加速器的方法以及包括加速器的电子装置
CN107908696A (zh) 一种并行高效的基于网格与密度的多维空间数据聚类算法griden
Chen et al. 2-Disjoint-path-coverable panconnectedness of crossed cubes
Emoto et al. An optimal parallel algorithm for computing the summed area table on the GPU
US20220365891A1 (en) Accelerator and electronic device including the same
CN113360187B (zh) 一种基于CUDA与OpenMP的三维Kriging算法协同加速方法
US20040215928A1 (en) Method for manipulating data in a group of processing elements to transpose the data using a memory stack
CN116185377A (zh) 计算图的优化方法、计算装置及相关产品
CN117063182A (zh) 一种数据处理方法和装置
JP2021005242A (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
CN109543835A (zh) 运算方法、装置及相关产品
Tapia et al. Data-parallel algorithms for large-scale real-time simulation of the cellular Potts model on graphics processing units
Tran et al. A massively parallel algorithm for polyline simplification using an associative computing model
CN109543834A (zh) 运算方法、装置及相关产品

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