CN113270126A - 流访问存储器设备、系统和方法 - Google Patents

流访问存储器设备、系统和方法 Download PDF

Info

Publication number
CN113270126A
CN113270126A CN202110133869.3A CN202110133869A CN113270126A CN 113270126 A CN113270126 A CN 113270126A CN 202110133869 A CN202110133869 A CN 202110133869A CN 113270126 A CN113270126 A CN 113270126A
Authority
CN
China
Prior art keywords
memory
stream
access
control circuitry
request
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
CN202110133869.3A
Other languages
English (en)
Inventor
N·乔拉
T·勃伊施
A·格罗弗
S·P·辛格
G·德索利
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.)
STMicroelectronics International NV Switzerland
STMicroelectronics SRL
Original Assignee
STMicroelectronics International NV Switzerland
STMicroelectronics SRL
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 STMicroelectronics International NV Switzerland, STMicroelectronics SRL filed Critical STMicroelectronics International NV Switzerland
Publication of CN113270126A publication Critical patent/CN113270126A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/04Arrangements for selecting an address in a digital store using a sequential addressing device, e.g. shift register, counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/08Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)
  • Image Generation (AREA)

Abstract

本公开的实施例涉及流访问存储器设备、系统和方法。一种系统包括随机存取存储器,该随机存取存储器被组织成可单独寻址的字。流访问控制电路装置被耦合到随机存取存储器的字线。流访问控制电路装置通过生成控制信号以驱动字线流访问确定区域的多个可单独寻址的字来对用于访问随机存取存储器的确定区域的多个可单独寻址的字的请求做出响应。该请求指示与确定区域相关联的偏移和与流访问相关联的模式。

Description

流访问存储器设备、系统和方法
技术领域
本公开总体上涉及一种存储器阵列的字线选择电路。例如,本公 开涉及在人工神经网络(ANN)和流应用中使用的存储器系统。
背景技术
处理核以及包括处理核的设备和系统(诸如处理器、移动电话、 平板电脑、笔记本电脑、台式计算机、嵌入式处理系统等)通常可以 包括一个或多个存储器(诸如缓存存储器、主存储器、次级存储器等)。 存储器可以是易失性的或非易失性的。
存储器可以是共享存储器,其可以例如由多个处理核(诸如主机 处理核和应用加速器核)、多个进程(例如主机系统进程、应用进程 等)使用。可以使用一个或多个集成电路来实现这样的处理系统。集 成电路可以包括例如处理核、存储器阵列、存储器控制器、分立电路 装置等以及它们的各种组合。
存储器可以被组织成位的行和列的阵列。每行可以具有用于访问 存储器的最小可寻址单元的线,通常称为字线,其跨越阵列的所有列 或列的集合。与字对应的列的集合可以跨越阵列的一整行,或每行可 以包含多个字(例如,列0-7对应于第一字,列8-15对应于第二字; 列0-15对应于第一字,列16-31对应于第二字;等等)。每一列可具 有横跨行的位线。通过断言一个字线,可以访问与该字对应的列的集 合的对应行中的所有位。
发明内容
在一个实施例中,设备包括:一个或多个输入,被配置为接收用 于访问随机存取存储器的确定区域的多个可单独寻址的字的流访问 请求,该请求指示与确定区域相关联的偏移和流访问的模式;多个输 出,其被配置为耦合到随机存取存储器的字线;以及流访问控制电路 装置,其耦合到一个或多个输入和多个输出,并被配置为通过生成控 制信号来驱动字线以访问确定区域的多个可单独寻址的字来对流访 问请求做出响应。该请求可以包括与确定区域相关联的偏移。该请求 可以包括对流访问的序列的指示。流访问控制电路装置可以基于偏移 和对流访问的序列的指示来标识确定区域。流访问控制电路装置可以 包括被配置为存储流访问控制信息的存储器,并且该指示是基于所存 储的流访问控制信息来执行流访问的命令。该请求可以指示限定确定 区域的多个偏移。流访问控制电路装置可以包括:流控制电路装置, 其被配置为生成控制信号以驱动字线,该流控制电路装置包括多个移 位寄存器和耦合至多个移位寄存器的多路复用器组;以及配置控制电 路装置,其被配置为生成寄存器数据和控制信号,以控制将寄存器数 据加载到多个移位寄存器中以及对多个移位寄存器进行移位。多路复 用器组的每个多路复用器的第一数据输入可以耦合到多个移位寄存 器中的一个移位寄存器的相应输出,并且多路复用器组的每个多路复 用器的选择输入可以耦合到多个移位寄存器中的另一移位寄存器的 相应输出。多路复用器组的每个多路复用器的第二数据输入可以耦合 到多路复用器组中的相邻多路复用器的输出,并且多个输出可以耦合 到多路复用器组中的多路复用器的相应输出。随机存取存储器可以在 三维地址空间中可寻址。在一个实施例中,流访问请求包括序列访问 请求。
在一个实施例中,一种系统包括:流访问存储器,被组织成可单 独寻址的字;以及耦合到流访问存储器的字线的流访问控制电路装 置,其中流访问控制电路装置在操作中通过生成控制信号来驱动字线 以访问确定区域的多个可单独寻址的字来对用于访问流访问存储器 的确定区域的多个可单独寻址的字的请求做出响应,其中该请求指示 与确定区域相关联的偏移以及对流访问存储器的访问模式的指示。该 请求可以包括与确定区域相关联的偏移。该请求可以包括对流访问存 储器的访问的序列的指示。流访问控制电路装置可以基于偏移和对流 访问存储器的访问的序列的指示来标识确定区域。该请求可以指示与 确定区域相关联的多个偏移。多个偏移可以限定确定区域。流访问控 制电路装置可以包括:流控制电路装置,被配置为生成控制信号以驱 动字线,该流控制电路装置包括多个移位寄存器和耦合至多个移位寄 存器的多路复用器组;配置控制电路装置,其配置为生成寄存器数据 和控制信号,以控制将寄存器数据加载到多个移位寄存器中以及对多 个移位寄存器进行移位。流访问存储器可以在三维地址空间中可寻 址。在一个实施例中,该系统包括耦合到随机存取存储器的字线的随 机访问控制电路装置,其中,该随机访问控制电路装置在操作中对用 于访问该随机存取存储器的可单独寻址的字的请求做出响应。在一个实施例中,该系统包括一个或多个卷积加速器,该一个或多个卷积加 速器被耦合到流访问控制电路装置和随机存取存储器,其中,在操作 中,一个或多个卷积加速器向流访问控制电路装置提供用于访问随机 存取存储器的确定区域的多个可单独寻址的字的请求,并从流访问存 储器接收对请求的响应。在一个实施例中,流访问存储器是随机存取 存储器。该系统可以包括串联或并联耦合在一起的多个流访问存储 器。
在一个实施例中,一种方法包括:通过流访问存储器的流访问控 制电路装置接收流访问请求,以访问随机存取存储器的确定区域的多 个可单独寻址的字,该请求指示与确定区域相关联的偏移和流访问的 模式;以及通过生成控制信号由通过流访问控制电路装置对该请求做 出响应,该控制信号用来驱动随机存取存储器的字线以访问确定区域 的多个可单独寻址的字。该请求可以包括与确定区域相关联的偏移。 该请求可以包括对流访问的序列的指示。该方法可以包括:由流访问 控制电路装置基于偏移和对与流访问相关联的模式的指示来标识确 定区域。该方法可以包括:在流访问控制电路装置的存储器中存储访问模式控制信息,其中,指示是用于基于所存储的访问模式控制信息 来执行访问的命令。该请求可以指示限定确定区域的多个偏移。流访 问存储器可以在三维地址空间中可寻址。
在一个实施例中,非暂态计算机可读介质的内容配置流访问存储 器的流访问控制器以执行一种方法,该方法包括:接收用于访问流访 问存储器的确定区域的多个可单独寻址的字的流访问请求,该请求指 示与确定区域相关联的偏移和访问模式;以及通过生成控制信号来驱 动流访问存储器的字线以访问确定区域的多个可单独寻址的字,来对 该请求做出响应。该请求可以包括对与确定区域相关联的偏移和流访 问的模式的指示。流访问存储器可以在三维地址空间中可寻址,并且 确定区域可以是三维地址空间中的三维区域。内容可以包括查找表, 该查找表存储注册表和定时信息,注册表和定时信息由流访问控制器 使用以生成用于驱动字线的控制信号。
附图说明
现在将通过举例的方式参考附图。在附图中,除非上下文另外指 出,否则相同的附图标记表示相似的元件或动作。但是,在某些附图 中,可以使用不同的附图标记表示相同或相似的元件。图中元件的尺 寸和相对位置不一定按比例绘制。这些元素中的某些元素可能会被放 大并定位以提高图形清晰度。所描绘的元件的特定形状不一定旨在传 达有关特定元件的实际形状的任何信息,并且仅是为了便于在附图中 识别而选择的。
图1是具有处理核和存储器并实现人工神经网络的电子设备或系 统的实施例的功能框图。
图2是实现人工神经网络的电子设备或系统的实施例的功能框 图。
图3是可配置加速器框架(CAF)的实施例的功能框图。
图4是卷积加速器的实施例的功能框图。
图5是随机存取存储器的实施例的功能框图。
图6是随机存取存储器的随机访问解码电路装置的实施例的功能 框图。
图7是流访问存储器的实施例的功能框图。
图8从概念上图示了组织成二维的存储器阵列的访问区域。
图9概念性地图示了流访问存储器中的多维数据结构的访问区 域。
图10是可在流访问存储器中采用的流访问控制电路装置的实施 例的功能框图。
图11是可以在流访问控制器中采用的流控制电路装置的实施例 的功能框图。
图12是具有随机访问解码电路装置和流访问控制电路装置的共 享存储器的实施例的功能框图。
图13示出了访问存储器的方法的实施例。
具体实施方式
在以下描述中,阐述了某些细节以便提供对设备、系统、方法和 物品的各种实施例的透彻理解。然而,本领域技术人员将理解,可以 在没有这些细节的情况下实践其他实施例。在其他情况下,在一些附 图中未示出或详细描述与例如电路(诸如晶体管、乘法器、加法器、 除法器、比较器、集成电路、逻辑门、有限状态机、存储器、接口、 总线系统等)相关联的公知结构和方法,以避免不必要地混淆实施例 的描述。
除非上下文另有要求,否则在以下整个说明书和权利要求书中, 词语“包括”及其变体(例如“含有”和“包含”)应以开放的、包 容性的意义来解释,即“包括但不仅限于”。除非上下文另外指出, 否则对“至少一个”的引用应被解释为表示析取性和包容性之一或两者。
在整个说明书中,对“实施例”或“一个实施例”的引用是指结 合该实施例描述的特定特征,结构或特性包括在至少一个实施例中。 因此,在整个说明书中各处出现的短语“在实施例中”或“在一个实 施例中”不一定是指同一实施例或所有实施例。此外,特定特征、结 构或特性可以在一个或多个实施例中以任何合适的方式组合以获得 进一步的实施例。
提供这些标题仅是为了方便,并且不解释本公开的范围或含义。
即使使用随机访问解码电路装置访问随机存取存储器,视频流和 人工神经网络系统通常也可以使用流存储器存取而不是随机存储器 存取。针对这些应用的存储器存取方法的示例包括线缓冲器和内核缓 冲器存储器存取。通常,通过设置初始行并使用随机访问解码电路装 置通过整个阵列提供循环串行存储器存取来执行对随机存取存储器 的流访问。
发明人已经意识到,当将数据存储在随机存取存储器中时,用于 流访问的字线选择电路装置可能比用于随机存储器存取的字线选择 电路更简单并且更加面积高效。换句话说,通过代之以使用流访问控 制技术和电路装置来访问所存储的数据流,可以避免随机访问解码进 程以及相关的电路装置和延迟。
在一个实施例中,可以提供更灵活类型的字线选择,其通过从目 标数据结构开始的存储器阵列行开始访问存储器阵列,到目标数据结 构结束的存储器阵列行结束访问存储器阵列,来促进节省时间。实施 例可以促进通过各种进程同时进行的流存储器存取,同时有利于避免 在使用随机存储器存取技术来实现流访问时可能发生的时间和面积 损失。
图1是将要描述的实施例可以应用于的类型的电子设备或系统 100的实施例的功能框图。系统100包括一个或多个处理核或电路 102。处理核102可以包括例如一个或多个处理器、状态机、微处理 器、可编程逻辑电路、分立电路装置、逻辑门、寄存器等、以及它们的各种组合。处理核可以控制系统100的整体操作、由系统100执行 的应用程序等。
系统100包括一个或多个存储器,例如一个或多个易失性和/或非 易失性存储器,其可以存储例如与系统100的控制、由系统100执行 的应用和操作等有关的全部或部分指令和数据。如图所示,系统100 包括一个或多个缓存存储器104、一个或多个主存储器106以及一个 或多个次级存储器108,每个都包括存储器管理电路装置或MMU 110。存储器104、106、108中的一个或多个包括存储器阵列(例如, 参见图2的存储器阵列208,图7的存储器阵列708),该存储器阵 列在操作中可以由系统100执行的一个或多个进程共享。
系统100可包括一个或多个传感器120(例如,加速度计、压力 传感器、温度传感器等)、一个或多个接口130(例如,无线通信接 口、有线通信接口等)、一个或多个ANN电路(如所图示的卷积神 经网络(CNN)加速器电路140和其他电路150,其他电路150可以 包括其他功能电路、天线、电源等)以及主总线系统160。主总线系 统160可以包括耦合到系统100的各个组件的一个或多个数据、地址、 电源和/或控制总线。系统100还可以包括其他总线系统,例如,将缓 存存储器104和处理核102通信耦合的总线系统162、将缓存存储器 104和主存储器106通信耦合的总线系统164、将主存储器106和处 理核102通信耦合的总线系统166以及将主存储器106和次级存储器 108通信耦合的总线系统168。
一个或多个主存储器106通常是系统100的工作存储器(例如, 处理核102在其上工作或诸如CNN加速器电路装置140之类的协处 理器在其上工作的一个或多个存储器),并且通常可以是有限大小的 易失性存储器(例如,DRAM),其存储与由系统100执行的处理有关的代码和数据。为了方便起见,本文中对存储在存储器中的数据的 引用也可以指存储在存储器中的代码。在一个实施例中,诸如SRAM、 ReRAM、PCM、MRAM、FRAM、多级存储器等的非易失性存储器 可以用作一个或多个主存储器或在一个或多个主存储器中。次级存储 器108通常可以是非易失性存储器,其存储指令和数据,当系统100 需要时,可以将指令和数据取回并存储在主存储器106中。与次级存 储器108相比,缓存存储器104可以是相对较快的存储器,并且通常 具有有限的大小,该大小可以大于主存储器106的大小。
缓冲器存储器104临时存储代码和数据,以供系统100以后使用。 代替从次级存储器108中取回所需的代码或数据以存储在主存储器 106中,系统100可以首先检查缓存存储器104以查看数据或代码是 否已经存储在缓存存储器104中。缓存存储器104可通过减少取回数 据和代码以供系统100使用所需的时间和其他资源,来显著提高系统 (例如系统100)的性能。当代码和数据被(例如,从次级存储器108) 取回以供系统100使用时,或者当数据或代码被写入(例如,写入主 存储器106或次级存储器108)时,数据或代码的副本可以存储在缓 存存储器104中,以供系统100以后使用。可以采用各种缓存管理例 程来控制存储在一个或多个缓存存储器104中的数据。
图2是将要描述的实施例可应用于的类型的电子设备或系统200 的实施例的功能框图。系统200可以例如用于实施ANN以对传感器 数据进行分类。注意,图1的实施例可以用来实现图2的实施例,并 且可以包括片上系统(SoC)。
系统200包括全局存储器202,其对于ANN 203进程或群集,以 及对于主机系统204进程或群集,可以用作例如主存储器(参见图1 的主存储器106)。全局存储器202包括存储器管理电路装置206和 一个或多个共享存储器阵列208。存储器管理电路装置206在操作中采用一个或多个存储器管理例程来将全局存储器202的区域(例如共 享存储器阵列208的区域)分配给由系统200执行的各种进程,并控 制对全局存储器202的访问,例如对共享存储器阵列208的区域的访 问。
存储器阵列208可包括非易失性存储器单元、静态存储器单元、 电阻(ReRAM)存储器单元、多级ReRam存储器单元、铁电(FRAM) 存储器单元、可编程存储器(PROM)、电可擦除存储器、具有存储 和计算元件的经修改的位单元等,以及它们的各种组合。
例如,移动数据可能会花费大量能量。流和数据流会影响数据移 动的方式。除了移动数据,还可以在存储器中执行计算以减少能耗。 使用同时具有存储和计算元件的存储器单元可以大大降低功耗。计算 元件可以是例如加法器或感测电路,其对存储在存储器阵列的区域中 的数据求和(例如,对由区域的一个或多个列的一个或多个行限定的 群集中的值求和)。计算/逻辑元件可以在位单元中或在存储器阵列中 的其他位置提供类似XNOR/XOR的功能,在BNN(二进制神经网 络)的情况下,可以用于实现乘法。位单元内部或周围的增强功能还 可以用于实现乱码电路进行加密和描述,例如在神经网络计算中。具 有计算和存储元件的存储器的使用可以促进增加系统的安全性;当数 据通过系统传输时,其实际值将被加密。修改的位单元存储器方案及 其作为计算元件的编排也可能导致交叉(cross-bar)(并行访问的多 个位线和字线)体系结构,以促进高吞吐量的存储器内计算操作。
在一个实施例中,用于访问存储器阵列的管理例程、访问类型和 控制电路装置可以基于请求类型信息,例如,如参考图7至图12更 详细讨论的。
如图所示,ANN 203包括一个或多个数据移动器210、一个或多 个存储器桥220、一个或多个传感器230和相应的传感器接口232、 一个或多个卷积加速器引擎240、以及一个或多个完全连接的引擎 250,其可以以其他常规方式实施和操作,以产生分类输出260。
通过使用分层存储器系统和本地数据的有效重用,可以促进高效 的低功耗操作。加速的CDNN卷积层可能占总操作量的90%以上。 高效地平衡针对带宽和面积的计算和存储器资源,可以在不达到相关 上限的情况下实现更好的吞吐量。可以基于经由可配置数据移动器源 /宿传输数据流的单向链路来使用设计时可配置加速器框架(CAF)(如 图3所示),该可配置数据移动器源/宿是I/O接口(例如相机)、存 储器分层结构和各种类型的加速器,包括卷积加速器(CA)。
数据移动器210在操作中在IO(例如,传感器接口232)、存储 器分层结构(例如,全局存储器202、存储器桥220)、卷积加速器 240和完全连接的引擎250之间移动数据流。在一个实施例中,全功 能的背压机构处理数据流控制和流多播,促进数据流在多个块实例处的重用。链路列表可以控制ANN中整个卷积层的完全自主处理。可 以将多个加速器组合或链接起来,以并行处理特征映射数据和多个内 核的各种大小。
在一个实施例中,卷积加速器引擎240可以包括集群乘积累加 (MAC)单元或电路的阵列,其在操作中实现ANN中的卷积层处理。 卷积加速器引擎可以包括一个线缓冲器,以与单个存储器存取并行地 获取多个特征映射数据字。可以使用基于寄存器的内核缓冲器,该缓 冲器提供多个读取端口,而每个时钟周期中有多个多位定点MAC单 元或电路执行多个MAC操作。可以使用加法器树对每个内核列的 MAC结果求和。MAC操作的基于列的重叠计算有利于多个MAC的 特征映射数据的最佳重用,并减少了与冗余存储器存取相关的功耗。
在一些实施例中,系统100或系统200可以包括比图示更多的组 件,可以包括比图示更少的组件,可以将图示的组件划分为单独的组 件,可以组合图示的组件等,以及它们的各种组合。例如,除内部次 级存储器之外或代替内部次级存储器,图1的次级存储器108可以包 括通过接口耦合到系统100的外部存储器。在一些实施例中,主存储 器106和次级存储器108可以组合成单个存储器。在一些实施例中, 可以省略缓存存储器104。在另一示例中,除单独的MMU 110之外 或代替单独的MMU 110,一个或多个主存储器106可以共享公共的 存储器管理电路装置。
在嵌入式ANN系统的上下文中,可能需要ANN系统的大量片上 存储器来存储经常访问的内核数据、中间部分和以及特征数据,而可 能只需要较小的部分来存储访问频率较低的配置/层序列数据。因此, 基于存储器请求的类型来访问共享存储器(例如,由ANN加速器电 路装置进行的流存储器存取)可以显着减少处理时间。发明人已经意 识到,基于随机访问例程的常规流存储器存取具有内置的时间损失, 从而减慢了访问时间。例如,在第一行初始化的存储器阵列可能会不 必要地访问行,直到到达具有所需数据或指令的行为止。重复访问同 一数据使时间损失更加昂贵。并发进程的存储器存取可能会因必须等 待访问进程完成其存储器存取而受到阻碍。
图3是可配置加速器框架(CAF)300的实施例的功能框图,当 被实现为SOC时,其可以被组织为SoC的图像和深度卷积神经网络 (DCNN)协处理器子系统,例如图2的系统200。如本文所述,CAF 300包括可重新配置的数据流加速器结构,其将高速相机接口与传感 器处理管道、裁剪器、颜色转换器、特征检测器、视频编码器、八通 道数字麦克风接口、流DMA和多个卷积加速器中的任何一个或多个 相连。简而言之,CAF 300诸如从相机接口或其他传感器接收传入的 图像数据,并将传入的数据分发到CAF 300的各个组件(例如卷积加 速器)和/或多个DSP中的一个或多个DSP,以采用DCNN并识别传 入图像中的对象。
CAF 300利用单向链路通过可配置的、完全连接的交换机 (switch)从不同类型的源组件或向不同类型的宿组件传输数据流。 例如,可配置的完全连接的交换机可以通过直接存储器存取(DMA) 将数据传输到SoC全局存储器(请参见图2的全局存储器202)、I/O 接口(例如相机)和各种类型的加速器(例如,卷积加速器(CA))。
在每个CA中,基于寄存器的内核缓冲器提供了多个读取端口(例 如36个),而多个定点乘积累加(MAC)单元(例如36个16位 MAC单元)在每个时钟周期执行多次MAC操作(例如,每个时钟周 期最多进行36个操作)。一个加法器树累积针对每个内核列的MAC 结果。MAC操作的基于列的重叠计算允许对多个MAC的特征映射数 据进行可接受的重用,从而减少与冗余存储器存取相关的功耗。
内核集被分割为按序列进行处理的批次,并且中间结果可以存储 在SoC全局存储器中(请参见图2的全局存储器202)。单个CA实 例可以处理各种内核大小(例如,达12×12)、各种批次处理大小(例 如,达16)和并行内核(例如,达4),但是累加器输入可以容纳任何大小的内核。
可配置的批次大小和可变数目的并行内核使得可以在不同单元 之间共享的可用输入和输出带宽以及可用的计算逻辑资源之间进行 取舍。CAF 300包括流交换机302,其提供设计时参数的运行时可重 新配置的加速器互连框架以支持基于数据流的处理链。
图4示出了卷积加速器(CA)实施例400,其可以例如在图1的 系统100的实施例、图2的系统200的实施例、或者用作图3的卷积 加速器中的任何一个或多个中采用。CA 400包括三个输入数据接口 和一个输出数据接口,每个接口都布置为耦合到流交换机302(请参见图3)。第一CA输入数据接口402被布置用于耦合至第一流交换 机输出端口,第二CA输入数据接口404被布置用于耦合至第二流交 换机输出端口,并且第三CA输入数据接口406被布置用于耦合至第 三流交换机输出端口。CA输出数据接口408被布置用于耦合到选择 的流交换机输入端口。
在示例性实施例中,第一CA输入数据端口402被布置为将批次 数据流传递到CA400,第二CA输入数据端口404被布置为将内核数 据流传递给CA 400,并且第三CA输入数据端口406用于将特征数据 流传递到CA 400中。输出数据端口408被布置为传递来自CA 400的输出数据流。
CA 400包含几个内部存储器缓冲器。在一些实施例中,内部存 储器缓冲器可以共享公共存储器空间。在其他实施例中,一些或全部 内部存储器缓冲器可以是分离的并且彼此不同。内部存储器缓冲器可 以形成为寄存器、触发器、静态或动态随机存取存储器(SRAM或 DRAM)或其他某种结构配置。在某些情况下,内部存储器缓冲器可 以使用多端口体系结构形成,该体系结构允许例如一个设备在存储器 中执行数据“存储”操作,而另一设备在存储器中执行数据“读取” 操作。
第一CA内部缓冲器410在物理上或虚拟地与第一CA输入数据 接口402对齐。以这种方式,流到CA 400中的批次数据可以被自动 存储在第一CA内部缓冲器410中,直到该数据被传递到CA 400中 的特定数学单元,例如加法器树422。第一CA内部缓冲器410可以 固定为在设计时确定的大小。可替换地,第一CA内部缓冲器410可 以被限定为可变大小,该可变大小在启动时间或运行时间以编程方式 确定。第一CA内部缓冲器410可以是64字节、128字节、256字节 或一些其他大小。
沿着第一CA内部缓冲器410的线形成第二CA内部缓冲器412 和第三CA内部缓冲器414。也就是说,第二和第三CA内部缓冲器 412、414可以各自具有在设计时确定的它们自己的固定大小。备选地, 第二和第三CA内部缓冲器412、414可以具有可变大小,该可变大 小在启动时间或运行时间以编程方式确定。第二和第三CA内部缓冲 器412、414可以是64字节、128字节、256字节或其他大小。第二 CA内部缓冲器412在物理上或虚拟地与第二CA输入数据接口404 一致地布置,以自动存储流传输的内核数据,直到内核数据被传递到 专用于存储内核缓冲器数据的专用第四CA内部缓冲器416为止。第 三CA内部缓冲器414在物理上或虚拟地与加法器树422一致地布置, 以自动存储求和的数据,直到其可以被传递通过CA输出接口404为 止。
第四CA内部缓冲器416是专用缓冲器,其被布置为期望地存储 内核数据并将所存储的内核数据应用于多个CA乘积累加(MAC)单 元420。
第五CA内部缓冲器是特征线缓冲器418,其被布置为接收经过 第三CA输入接口406的流传输的特征数据。一旦存储在特征线缓冲 器中,就将特征数据应用于多个CA MAC单元420。根据卷积运算, 将应用于CA MAC单元420的特征和内核缓冲器数据进行数学组合, 并将来自CA MAC单元420的输出结果传递到CA加法器树422。CA 加法器树422数学地组合(例如,求和)传递通过第一CA输入数据 端口的传入的MAC单元数据和批次数据。
在某些情况下,CA 400还包括可选的CA总线端口接口424。当 包括CA总线端口接口424时,CA总线端口接口424可以用于将数 据从SoC全局存储器(参见图2的全局存储器202)或某个其他位置 传递到CA 400中或从CA 400传递数据。在某些情况下,CA 400还 可以包括CA配置逻辑426。
图5是具有存储器阵列502、地址解码逻辑504的随机存取存储 器(RAM)500的实施例的俯视图,地址解码逻辑504如图所示包括 预解码逻辑506和后解码逻辑508。存储器阵列502按行和列组织。 地址和时钟信号被提供给地址预解码逻辑506,其对地址进行解码以生成控制信号以控制后解码逻辑508。后解码逻辑驱动字线缓冲器 520,字线缓冲器520又驱动行或使能字线(未示出)。被使能的字 线可以允许访问(读取或写入)存储器阵列的相应行的位内容。随机 存取存储器500通常采用专用于地址预解码逻辑506和地址后解码逻辑508的大量组合逻辑电路装置,以将输入的存储地址转换为到存储 器阵列502的字线输出。
图6示出了常规地址解码逻辑604的示例实施例,包括预解码逻 辑606和后解码逻辑608。解码逻辑604包括多个逻辑门610、612, 其影响用于字线选择的面积和功率以及响应于存储器存取而与选择 字线相关联的延迟。根据各种功率、性能和面积的权衡,门610、612 可以是动态的、静态的或其各种组合。
发明人已经意识到在流访问的上下文中使用确定性或已限定的 模式访问存储器阵列可以有助于避免较大的布局面积和与常规地从 初始起始地址以序列方式访问RAM相关的高功耗。例如,访问与ANN 线缓冲器(请参见图4的特征线缓冲器418)和内核缓冲器(请参见 图4的内核缓冲器416)相关的RAM。可以采用促进流访问、串行访 问或以其他以流方式访问存储器阵列的模式来简化用于访问存储器 阵列的电路装置,减少相关的时间延迟和功率成本等。实施例可以采 用具有简化访问电路装置的专用存储器(例如,专用于存储用于流访 问的数据的一个或多个存储器阵列,该流访问诸如是与ANN线缓冲 器、内核缓冲器等相关的访问,其地址电路装置基于所限定的模式以 流方式访问存储器),或者具有常规RAM访问电路装置的共享存储 器以及基于确定性或限定的模式以流方式访问存储器的访问电路装 置(例如,具有动态分配给使用常规RAM访问的进程和使用流访问 的进程以及使用相应的访问电路装置来响应这种访问请求的进程的 部分的共享存储器)等。
图7是流访问存储器700的实施例的俯视图,其包括以行和列组 织的随机存取存储器阵列702。字线缓冲器720驱动字线。使能的字 线可以允许访问(读取或写入)存储器阵列702的相应行的位内容。 流访问控制电路装置704包括配置控制电路装置708和流控制电路装 置710,并控制字线信号的产生。流访问控制电路装置704可以使用 比用于常规RAM存储器阵列的地址解码逻辑少得多的面积。偏移信 息和流访问配置信息被提供给配置控制电路装置708,配置控制电路 装置708可以基于偏移信息和流访问配置信息来生成控制信号以控制 流控制电路装置710。偏移和配置信息可以包括一个或多个偏移地址 以限定要被访问的存储器的区域(例如,用于标识访问的开始行的偏 移,用于标识访问请求的结束行的偏移,用于标识访问的开始列的偏 移,用于标识访问的结束列的偏移,用于标识三维存储器阵列的起始 切片的z轴偏移,用于标识三维存储器阵列的结束切片的z轴偏移, 用于标识与跨步访问相关的区域的偏移等,以及其各种组合),以及 一个或多个访问请求类型以限定访问的类型(例如,访问请求大小, 访问跨步距离,向后访问指示以及重新访问或重复访问等)。对于临 时串行访问,配置信息可以包括标识多流访问和到达时间阈值的信息。配置信息可以包括要执行的计算操作(例如,将存储在诸如访问 区域的行之类的存储器的区域中的值相加,要应用于流访问存储器的 区域中所存储的数据的XOR函数等)。这样的计算操作可以被实现 为存储器内计算操作(例如,在位单元中、在存储器中的其他地方), 或者与存储器分离。基于配置控制电路装置708响应于偏移地址和配 置信息而生成的控制信号,流控制电路装置710生成信号以例如经由 字线缓冲器720来控制位线和字线的激活(见图10)。
如上所述,存储器可以组织成行和列的阵列。每行可以具有用于 访问存储器的最小可寻址单元的线,通常称为字线,其跨越阵列的所 有列或列的集合。对应于字的列的集合可以跨越所述阵列的一整行, 或各行可包含多个字(例如,列0-7对应于第一字,列8-15对应于第 二字;列0-15对应于第一字,列16-31对应于第二字;等)。每列 可具有横跨行的位线。通过断言一个或多个字线,可以访问与一个或 多个字对应的列的集合的对应行中的所有位。通常,一个字对应于16 位或列。但是,可以为随机存取存储器配置不同于16位的大小的字。
另外,存储器可以被组织为阵列的集合。因此,可以例如通过一 个或多个z或深度偏移(例如,一个偏移,它指定阵列的集合的一个 或多个阵列包含要访问的单元的集合),通过一个或多个x或列或字 偏移(例如,哪些列或字包含要访问的单元的集合)以及通过一个或 多个y或行偏移(例如,已标识阵列的哪些行包含要访问的单元的集 合)来指定存储器中的一个地址或地址的集合。可以采用限定要访问 的单元的集合的替代方式(例如,使用起始偏移以及要访问的单元的 集合跨越的一些阵列,行,列或字)。也可以采用由阵列块组成的帧。 例如,存储器可以在逻辑上或物理上组织成帧,每个帧包括Z阵列的 集合,每个Z阵列具有X列(位、字或字节)和Z行(位、字或字 节)。可以采用流访问存储器的级联阵列,其中数据在流访问存储器 之间流动。
图8示出了存储器阵列802的一部分的二维表示以及可以以流方 式访问的存储器阵列的示例区域。为了便于说明,示出了二维阵列, 但是在一些实施例中可以采用三维阵列。如图所示,显示了第0至15 列的第0至13行。如图所示,行的第0至7列对应于第一字,行的 第8至15列对应于第二字。
要被流访问的存储器单元的第一示例区域840跨越从第1行第2 列的单元到第11行第5列的单元的单元。提供给配置控制电路装置 708的偏移信息可以指示第1行和第11行的偏移地址,可以指示第1 行的偏移地址以及11行的大小等,以及各种其他类型的偏移信息以 向配置控制电路指示期望的访问是对区域840的流访问。偏移信息还 可以指示所期望的列的偏移地址(例如,在存储器阵列可逐位而不是 按字寻址的情况下),或者不需要的列的输出可以在响应访问请求的 输出字中被简单忽略。当阵列在列中存储字的多个集合时,还可以采 用列或字偏移,以标识存储所期望区域的位的字。例如,字0可以以 偏移表示。配置信息还可以包括存储器内计算信息(例如,要应用于 要流传输的数据的功能,例如加法,加密功能等)。可以采用默认的 配置信息,诸如在流传输数据时自动在存储器中应用加密功能。
要被流访问的存储器单元的第二示例区域842跨越从第3行第8 列的单元到第13行第8列的单元的单元。提供给配置控制电路装置 708的偏移信息可以指示第3行和第13行的偏移地址,可以指示第3 行的偏移地址以及11行的大小等,以及各种其他类型的偏移信息以 向配置控制电路指示期望的访问是对区域840的流访问。偏移信息还 可以指示期望的第8列的偏移地址(例如,在可按位寻址的存储器阵 列的情况下),或者字(例如,字1)和不需要的列的输出可以在响 应访问请求的输出字中被简单忽略。
要被流访问的存储器单元的第三示例区域844跨越从第1行第7 列的单元到第2行第13列的单元的单元。提供给配置控制电路装置 708的偏移信息可以指示第1行和第2行的偏移地址,可以指示第1 行的偏移地址以及2行的大小等,以及各种其他类型的偏移信息以向 配置控制电路指示期望的访问是对区域840的流访问。偏移信息还可 以指示期望的第7列至第13列的偏移地址,或者列7的偏移和7的 列数(例如,在可按位寻址的存储器阵列的情况下),或者字(例如, 字0和1,因为要访问的区域跨越两个字,或者字0的偏移量,以及字2的数目)和不需要的列的输出在响应访问请求的输出字中可以被 简单忽略。
请求可以包括指示例如期望的流访问应当重复一定次数的配置 信息。例如,在一个实施例中,对访问区域840的请求可以被重复四 次,因此可以将存储在行区域的每个列2-5中的数据流传输到加法器 树。可以采用诸如本文其他地方所讨论的其他类型的配置信息。
对存储器的区域的流存储器存取的概念可以扩展为存储器区域 的三维表示。图9示出了存储器900的一部分的三维表示以及可以以 流方式访问的存储器900的单元的示例区域。如图所示,存储器被组 织为F个帧950(示出了三个帧F)。如图所示,每个帧具有:深度或z尺寸952,它表示帧950中阵列954的数目Z(每帧四个阵列, 如图所示);宽度或x尺寸956,它表示每个阵列的像素(字)宽度 X(如图所示为五个像素);以及高度或y尺寸958,表示每个阵列 的线高Y(如图所示为5个线)。帧偏移960以字节为单位指示第一 帧的阵列与相邻帧的对应阵列之间的阵列数目(如图所示,帧偏移为 5)。可以通过指定帧偏移f、深度偏移z、宽度偏移x和高度偏移y (例如,偏移{f,z,x,y})来访问阵列中的元素(像素)。可以通 过指定帧f、开始z偏移z1、结束z偏移z2、开始x偏移x1、结束x 偏移x2、开始y偏移y1和结束y偏移y2来限定流访问中要访问的区 域(例如,一个区域可以由{f,z1,z2,x1,x2,y1,y2}限定)。如 图9所示,区域970(仅显示其中一部分)可以由参数{2(帧),1 (开始帧偏移),2(结束帧偏移),1(开始宽度偏移),4(结束 宽度偏移),0(开始行偏移),2(结束行偏移)}。
可以指定距离而不是指定结束偏移。例如,可以通过指定帧f、 开始的z偏移z1、阵列的数目zn、开始的x偏移x1、像素的数目xn、 开始的y偏移y1和线数目yn来限定要访问的区域(例如,区域可以 由{f,z1,zn,x1,xn,y1,yn}限定)。十六进制表示可以用来指定 偏移和距离。参数可以按各种序列指定。
可以限定省略的信息以指示特定参数的偏移范围不适用。例如, 可以限定仅由帧数参数限定的区域,以指示该区域包括整个帧。在另 一示例中,可以将由帧、深度偏移和像素偏移限定的区域而不指定任 何线偏移限定为包括指定像素在指定深度处的所有线都包括在该区 域中。在另一示例中,由帧数、深度偏移、像素偏移和起始行偏移所 限定的区域可以指示该区域包括以起始行偏移开始的所有行。可以使 用其他限定来解释指定存储器内区域的参数。
可以指定其他配置信息或参数以指示如何访问限定的区域。例 如,可以提供参数以:指示将以特定序列处理区域;指示要重复访问 每一列或每一行特定次数;指示要访问每隔一行,而不是区域中的每 一行;等等。
在另一示例中,可以设置跨步参数以指示将要访问给定尺寸的第 一区域,然后将要访问具有相同大小的相邻区域,将要访问距离第一 区域一定距离的区域,等等。可以限定滑动窗口,并以步长大小(对 应于已限定大小的重叠或非重叠区域)来指定要访问的存储器中的连 续区域。
图9可以看作是滑动窗口或跨步应用的图示,其中窗口大小为框 架。第一次访问将对按照帧大小参数Z,X和Y限定的第一帧像素进 行处理(例如,从指定的像素0,0,0开始)。起始像素移动一个帧偏 移(例如960),并且帧大小参数用于限定第二次访问的第二区域。 重复该进程以限定用于第三次访问的第三区域等,直到指定数目的帧 (区域)被处理为止。
图10示出了例如可以在图7的实施例中用作访问控制电路装置 704的流访问控制电路装置1004的功能框图。访问控制电路装置1004 包括配置控制电路装置1008和流控制电路装置1010。流控制电路装 置包括多个圈1012的移位寄存器1014、多路复用器1018的组1016 以及字线缓冲器组1020,其驱动耦合到存储器阵列1002的字线1022。 在一些实施例中,访问控制电路装置1004可以耦合到多个存储器阵 列,例如,逻辑地或物理地被组织成三维存储器(见图9)。
配置控制电路装置1008接收偏移信息1030(例如,一个或多个 偏移限定了存储器区域或存储器中的起点,例如在三维空间中组织的 存储器(请参见图9))和配置信息1032(例如,访问存储器中限定 区域的存储器单元或从存储器中限定的起始点开始的序列)、存储器 内计算信息(例如,要应用于要访问的数据的功能),并且如图所示 包括时钟生成或控制电路装置1028。基于接收到的偏移信息1030和 接收到的配置信息1032,配置控制电路装置生成要加载到移位寄存器 1014中的注册表数据1034和控制移位寄存器1014的时钟、初始化/ 加载和移位(递增/递减)的流控制信号1036。注册表数据1034和控 制信号可以以并行或串行方式(例如,经由耦合到移位寄存器组1012 的移位寄存器1014的相应输入的多个线)被加载到移位寄存器组1012中。移位寄存器的输出1038耦合到多路复用器组1016的多路复 用器1018的相应输入和选择线。查找表可以用来生成注册表数据 1034和由配置控制电路装置1008提供给移位寄存器组1012的控制信 号。该多路复用器组的输出1040耦合到该字线缓冲器组1020的各个 字线缓冲器。
如图所示的配置控制电路装置1008包括配置控制存储器1060, 其用于存储关于一个或多个存储器阵列1002中的数据区域的信息。 例如,区域限定、大小、形状、访问控制参数、存储器内计算参数等 可以存储在配置控制存储器1060中(例如,通过偏移信息1030和配 置信息1032输入),并通过提供给配置控制电路装置1008的命令进 行取回或激活。存储器映射可以存储在配置控制存储器1060中,并 用于控制对存储器阵列1002的流访问。
多个进程可以利用访问控制电路装置1004来访问存储器阵列 1002。配置控制电路装置1008可以确定访问一个或多个存储器阵列 1002的进程,并确定与该进程相关联的存储器区域以及与该进程相关 联的流访问算法(例如,通过标识与所标识的进程相关联的所存储的 区域限定和所存储的访问算法(可以包括存储器内计算操作))。
图11是示出图10的流控制电路装置1010的一部分的示例配置 的功能框图。移位寄存器组1012包括移位寄存器1014a和1014b。移 位寄存器1014a和1014b通过流控制信号线1036耦合到配置控制电 路装置1008,控制寄存器数据1034的接收以及移位寄存器1014a和 1014b中包含的数据的移位。移位寄存器1014A包括联接在一起的M 个数据位,使得当选择信号被断言,并且发生有效的时钟边沿时,移 位寄存器1014a的位沿由流控制线1036的上/下控制信号指示的方向 移位到相邻的位单元。移位寄存器1014a可以被配置为循环移位内容, 使得移位寄存器1014a的第一位可以接收移位寄存器1014a的最后一 位的内容,或者根据移位的方向反之亦然。移位寄存器1014b通过配 置控制或流控制线1036耦合到配置控制电路装置1008,并以与移位 寄存器1014a相似的方式配置。
移位寄存器1014b的输出耦合到多路复用器组1016的相应的第 一多路复用器输入1076。当选择多路复用器1016的阵列的第一多路 输入1076时,移位寄存器1014b的内容被输出到字线1022。
该组多路复用器1016耦合在该移位寄存器组1012与(多个)存 储器阵列1002之间。多路复用器组1016中的每个多路复用器1018 具有输出1078,其经由缓冲器组1020中的相应缓冲器耦合至(多个) 存储器阵列1002中的相应字线1022。移位寄存器1014a的每个位输 出耦合到多路复用器组1016的相应多路复用器1018的多路复用器控 制输入1080。多路复用器组1016的多路复用器1018以循环方式耦合 在一起,每个多路复用器的相应第二输入耦合到多路复用器组中的相 邻多路复用器的输出。
图12是示出采用访问控制电路装置1204的存储器1202的实施 例的功能框图,该访问控制电路装置1204包括随机访问控制电路装 置504(类似于图5的随机访问控制电路装置504)和流访问控制电 路装置1004(类似于图10的流访问控制电路装置1004),以访问存 储器1202的多个存储器阵列1208。响应于接收到存储器存取请求(例 如,在存储器阵列1208中指定要访问的地址的随机访问请求或流访 问请求),访问控制电路装置1204确定访问请求的类型,并根据所 确定的访问请求的类型来处理该请求。例如,发起存储器存取请求的 进程的类型可以指示请求的类型;在其上接收到请求的控制线可以指 示请求的类型;请求格式可以指示请求的类型;等等。响应于确定请 求是随机访问请求,访问控制电路装置1204使用随机访问控制电路 装置504来访问存储器阵列1208中的地址。响应于确定请求是流访 问请求,访问控制电路使用流访问控制电路装置1004来访问存储器 阵列1208中的存储器的区域。图12的存储器1202的实施例可以例 如用作共享存储器,例如,作为图2的全局存储器202,与使用随机 访问控制电路装置执行对存储器的流访问相比,它可以以更低的功率 成本提供针对流存储器存取的更高的吞吐量。
存储器1202的实施例可以包括比图示更多的组件,可以包含比 图示更少的组件,可以组合图示的组件,并且可以以各种方式分离图 示的组件。例如,实施例可以包括多路复用电路,以将随机访问控制 电路装置504和流访问控制电路装置1004之一选择性地耦合到多个 存储器阵列1208的地址线。在另一个示例中,可以将随机访问控制 电路装置504和流访问控制电路装置1004组合在一个实施例中。
图13示出了访问随机存取存储器的方法1300的实施例,该随机 存取存储器的实施例可以例如由图1的系统100、图2的系统200、 图7的系统700、或图12的存储器1202采用。为了方便起见,将参 照图7和图10-图12来描述图13的方法1300。
方法1300开始于1302。例如,可以响应于诸如图12的随机存取 存储器1208之类的随机存取存储器的加电来开始方法1300,以对用 于访问随机存取存储器的请求做出响应。方法1300从1302进行到 1304。
在1304,方法1300接收用于访问随机存取存储器的请求。可以 例如从主机系统(诸如图2的主机系统204)、从与卷积加速器引擎 相关联的数据移动器(诸如,与图2的卷积加速器引擎240相关联的 数据移动器210)、从卷积加速器或与该卷积加速器相关联的进程(诸 如图4的卷积加速器400等)接收该请求。方法1300从1304进行到 1306。
在1306,方法1300确定该请求是随机访问请求还是流访问请求。 如本文其他地方所讨论的,这可以例如基于请求的来源、请求的格式 等及其各种组合来完成。
当在1306确定该请求是随机访问请求时,方法1300从1306进 行到1308,在该方法中执行随机访问请求。可以以常规方式来执行随 机访问请求,例如,如以上参考图5、图6和图12所讨论的。该方法 从1308进行到1316。
当在1306确定该请求是流访问请求时,方法1300从1306进行 到1310。在1310,该方法基于流访问请求来确定与所确定的随机存 取存储器的区域相关联的偏移和流访问请求的模式。可以例如基于流 访问请求中包含的明确指示、基于与流访问请求中包括的命令相关联 的存储信息、基于默认设置、基于查询表、基于流访问请求的来源等, 以及它们的各种组合来完成此操作。动作1310可以例如由图7的流 访问控制电路装置704,由图10和图12的流访问控制电路装置1004 执行。
在1312,方法1300基于与所确定的随机存取存储器的区域相关 联的所确定的偏移和流访问请求的所确定的模式来执行流访问请求。 例如,可以通过基于偏移或基于偏移和模式来标识确定区域,并激活 随机存取存储器的字线以根据模式来访问确定区域的字来完成此操 作。动作1312可以例如由图7的流访问控制电路装置704、由图10 和图12的流访问控制电路装置1004执行。方法1300从1312进行到 1316。执行流访问请求可以包括执行存储器内计算操作,诸如添加存 储在存储器区域中的数据,对数据流进行XOR等等。
在1316处,方法1300可选地执行与所接收的用于访问随机存取 存储器的请求相关联的其他处理,例如指示随机存取存储器可以处理 另一请求的处理。方法1300从1316进行到1318。
在1318,方法1300诸如响应于主机控制信号来确定方法1300是 否完成或应该继续。当在1318处确定对存储器存取请求的处理完成 时(在1318处为“是”),方法1300进行至1320。在1320,方法 1300可以终止,可以执行其他处理(例如误差处理)等。当在1318 中确定存储器存取请求的处理未完成时,方法1300返回至1304以等 待另一请求访问随机存取存储器。
处理对随机存取存储器的访问请求的方法的实施例可能包含图 13中未显示的其他行为,可能不包含图13中所示的所有行为,可能 以各种序列执行图13中所示的行为,并且可能在各个方面进行了修 改。例如,当存储器专用于流存储器存取请求时,方法1300可以省 略动作1306和1308。
一些实施例可以采取计算机程序产品的形式或包括计算机程序 产品。例如,根据一个实施例,提供了一种计算机可读介质,其包括 适于执行上述方法或功能中的一个或多个的计算机程序。介质可以是 物理存储介质(诸如例如只读存储器(ROM)芯片),还可以是磁盘 (诸如数字多功能盘(DVD-ROM)、光盘(CD-ROM)、硬盘)、 存储器、网络或通过适当的驱动器或通过适当的连接读取的便携式媒 体制品(包括编码为一种或多种条形码或其他相关代码的编码,这些 条形码或其他相关代码存储在一种或多种这样的计算机可读介质上,并且可由适当的读取器设备读取)。
此外,在一些实施例中,可以以其他方式实现或提供一些或所有 方法和/或功能,诸如至少部分地在固件和/或硬件中,包括但不限于 一个或多个专用集成电路(ASIC)、数字信号处理器、分立电路、逻 辑门、标准集成电路、控制器(例如,通过执行适当的指令,并包括 微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂 的可编程逻辑设备(CPLD)等,以及采用RFID技术的设备及其各 种组合。
可以将上述各种实施例组合以提供其他实施例。如果需要采用各 种实施例和出版物的概念来提供其他实施例,则可以修改实施例的各 方面。
可以根据上述详细描述对实施例进行这些和其他改变。通常,在 以下权利要求中,所使用的术语不应解释为将权利要求限制为在说明 书和权利要求书中公开的特定实施例,而应解释为包括所有可能的实 施例以及这些权利要求享有的等同物的全部范围。因此,权利要求不 受公开内容的限制。

Claims (34)

1.一种设备,包括:
一个或多个输入,被配置为接收用于访问随机存取存储器的确定区域的多个可单独寻址的字的流访问请求,所述请求指示与所述确定区域相关联的偏移以及与所述流访问相关联的模式;
多个输出,被配置为耦合到所述随机存取存储器的字线;以及
流访问控制电路装置,被耦合到所述一个或多个输入以及所述多个输出,并且被配置为:通过生成用于驱动所述字线以访问所述确定区域的所述多个可单独寻址的字的控制信号,对所述流访问请求做出响应。
2.根据权利要求1所述的设备,其中所述请求包括与所述确定区域相关联的所述偏移。
3.根据权利要求2所述的设备,其中所述请求包括对与所述流访问相关联的所述模式的指示。
4.根据权利要求3所述的设备,其中所述流访问控制电路装置基于所述偏移和对与所述流访问相关联的所述模式的所述指示来标识所述确定区域。
5.根据权利要求3所述的设备,其中所述流访问控制电路装置包括存储器,所述存储器被配置为存储流访问控制信息,并且所述指示是用于基于所存储的流访问控制信息来执行流访问的命令。
6.根据权利要求1所述的设备,其中所述请求指示限定所述确定区域的多个偏移。
7.根据权利要求1所述的设备,其中所述流访问控制电路装置包括:
流控制电路装置,被配置为生成用于驱动所述字线的所述控制信号,所述流控制电路装置包括多路复用器组和多个移位寄存器,所述多路复用器组被耦合至所述多个移位寄存器;以及
配置控制电路装置,被配置为生成寄存器数据和控制信号,所述控制信号用于控制:将所述寄存器数据加载到所述多个移位寄存器中以及对所述多个移位寄存器移位。
8.根据权利要求7所述的设备,其中所述多路复用器组中的每个多路复用器的第一数据输入被耦合到所述多个移位寄存器中的一个移位寄存器的相应输出,并且所述多路复用器组中的每个多路复用器的选择输入被耦合到所述多个移位寄存器中的另一移位寄存器的相应输出。
9.根据权利要求8所述的设备,其中所述多路复用器组中的每个多路复用器的第二数据输入被耦合到所述多路复用器组中的相邻多路复用器的输出,并且所述多个输出被耦合到所述多路复用器组中的多路复用器的相应输出。
10.根据权利要求1所述的设备,其中所述随机存取存储器在三维地址空间中是可寻址的。
11.根据权利要求1所述的设备,其中所述流访问控制电路装置被配置为生成用于执行与所述流访问请求相关联的一个或多个存储器内计算操作的控制信号。
12.一种系统,包括:
随机存取存储器,被组织成可单独寻址的字;以及
流访问控制电路装置,被耦合到所述随机存取存储器的字线,其中所述流访问控制电路装置在操作中通过生成用于驱动所述字线以访问所述随机存取存储器的确定区域的多个可单独寻址的字的控制信号,来对用于流访问所述确定区域的所述多个可单独寻址的字的请求做出响应,其中所述请求指示与所述确定区域相关联的偏移以及与所述流访问相关联的模式。
13.根据权利要求12所述的系统,其中所述请求包括与所述确定区域相关联的所述偏移。
14.根据权利要求13所述的系统,其中所述请求包括对所述流访问的序列的指示。
15.根据权利要求14所述的系统,其中所述流访问控制电路装置基于所述偏移和对所述流访问的所述序列的所述指示,来标识所述确定区域。
16.根据权利要求12所述的系统,其中所述请求指示与所述确定区域相关联的多个偏移。
17.根据权利要求12所述的系统,其中所述请求指示限定所述确定区域的多个偏移。
18.根据权利要求12所述的系统,其中所述流访问控制电路装置包括:
流控制电路装置,被配置为生成用于驱动所述字线的所述控制信号,所述流控制电路装置包括多路复用器组和多个移位寄存器,所述多路复用器组被耦合至所述多个移位寄存器;以及
配置控制电路装置,被配置为生成寄存器数据和控制信号,所述控制信号用于控制:将所述寄存器数据加载到所述多个移位寄存器中以及对所述多个移位寄存器移位。
19.根据权利要求12所述的系统,其中所述随机存取存储器在三维地址空间中是可寻址的。
20.根据权利要求12所述的系统,包括随机访问控制电路装置,所述随机访问控制电路装置被耦合到所述随机存取存储器的所述字线,其中所述随机访问控制电路装置在操作中对用于访问所述随机存取存储器的可单独寻址的字的请求做出响应。
21.根据权利要求12所述的系统,包括一个或多个卷积加速器,所述一个或多个卷积加速器被耦合到所述流访问控制电路装置和所述随机存取存储器,其中在操作中,所述一个或多个卷积加速器向所述流访问控制电路装置提供用于流访问所述随机存取存储器的确定区域的多个可单独寻址的字的请求,并且从所述随机存取存储器接收对所述请求的响应。
22.根据权利要求12所述的系统,其中所述随机存取存储器包括存储元件和一个或多个存储器内计算元件,并且所述流访问控制电路装置在操作中通过生成用于使用所述随机存取存储器的存储器内计算元件执行存储器内计算操作的控制信号,对与所述存储器内计算操作相关联的流访问请求做出响应。
23.一种方法,包括:
由随机存取存储器的流访问控制电路装置,接收用于访问所述随机存取存储器的确定区域的多个可单独寻址的字的流访问请求,所述请求指示与所述确定区域相关联的偏移以及与所述流访问相关联的模式;以及
由所述流访问控制电路装置,通过生成用于驱动所述随机存取存储器的字线以访问所述确定区域的所述多个可单独寻址的字的控制信号,来对所述请求做出响应。
24.根据权利要求23所述的方法,其中所述请求包括与所述确定区域相关联的所述偏移。
25.根据权利要求24所述的方法,其中所述请求包括对所述流访问的所述模式的指示。
26.根据权利要求25所述的方法,包括:由所述流访问控制电路装置,基于所述偏移和对所述流访问的所述模式的所述指示,来标识所述确定区域。
27.根据权利要求25所述的方法,包括:在所述流访问控制电路装置的存储器中存储流访问控制信息,其中所述指示是用于基于所存储的流访问控制信息来执行流访问的命令。
28.根据权利要求23所述的方法,其中所述请求指示限定所述确定区域的多个偏移。
29.根据权利要求23所述的方法,其中所述随机存取存储器在三维地址空间中是可寻址的。
30.根据权利要求23所述的方法,其中所述流访问请求与存储器内计算操作相关联,并且所述方法包括:执行所述存储器内计算操作,作为对所述流访问请求的所述响应的一部分。
31.一种具有内容的非暂态计算机可读介质,所述内容配置随机存取存储器的流访问控制器以执行方法,所述方法包括:
接收用于访问所述随机存取存储器的确定区域的多个可单独寻址的字的流访问请求,所述请求指示与所述确定区域相关联的偏移以及与所述流访问相关联的模式;
通过生成用于驱动所述随机存取存储器的字线以访问所述确定区域的所述多个可单独寻址的字的控制信号,对所述请求做出响应。
32.根据权利要求31所述的非暂态计算机可读介质,其中所述请求包括与所述确定区域相关联的所述偏移以及对所述流访问的所述模式的指示。
33.根据权利要求31所述的非暂态计算机可读介质,其中所述随机存取存储器在三维地址空间中是可寻址的,并且所述确定区域是所述三维地址空间中的三维区域。
34.根据权利要求31所述的非暂态计算机可读介质,其中所述内容包括查找表,所述查找表存储注册表和定时信息,所述注册表和所述定时信息由所述流访问控制器使用,以生成用于驱动所述字线的所述控制信号。
CN202110133869.3A 2020-01-30 2021-02-01 流访问存储器设备、系统和方法 Pending CN113270126A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062968026P 2020-01-30 2020-01-30
US62/968,026 2020-01-30
US17/158,875 US11823771B2 (en) 2020-01-30 2021-01-26 Streaming access memory device, system and method
US17/158,875 2021-01-26

Publications (1)

Publication Number Publication Date
CN113270126A true CN113270126A (zh) 2021-08-17

Family

ID=74285378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110133869.3A Pending CN113270126A (zh) 2020-01-30 2021-02-01 流访问存储器设备、系统和方法

Country Status (3)

Country Link
US (1) US11823771B2 (zh)
EP (1) EP3859535B1 (zh)
CN (1) CN113270126A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI776760B (zh) * 2021-12-27 2022-09-01 財團法人工業技術研究院 神經網路之處理方法及其伺服器與電子裝置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050240745A1 (en) * 2003-12-18 2005-10-27 Sundar Iyer High speed memory control and I/O processor system
CN101069391A (zh) * 2004-12-03 2007-11-07 皇家飞利浦电子股份有限公司 流式存储控制器
US20090196116A1 (en) * 2008-02-01 2009-08-06 Jong-Hoon Oh Semiconductor memory having a bank with sub-banks
US20100100714A1 (en) * 2008-10-18 2010-04-22 Micron Technology, Inc. System and Method of Indirect Register Access
US20100138587A1 (en) * 2004-11-23 2010-06-03 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
CN107667403A (zh) * 2015-06-24 2018-02-06 英特尔公司 长突发长度的内部连续行存取
CN108268940A (zh) * 2017-01-04 2018-07-10 意法半导体股份有限公司 用于创建可重新配置的互连框架的工具
US10437758B1 (en) * 2018-06-29 2019-10-08 Apple Inc. Memory request management system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4683555A (en) 1985-01-22 1987-07-28 Texas Instruments Incorporated Serial accessed semiconductor memory with reconfigureable shift registers
US6188377B1 (en) 1997-11-14 2001-02-13 Aurora Systems, Inc. Internal row sequencer for reducing bandwidth and peak current requirements in a display driver circuit
US9257152B2 (en) 2012-11-09 2016-02-09 Globalfoundries Inc. Memory architectures having wiring structures that enable different access patterns in multiple dimensions
US20180189641A1 (en) 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Hardware accelerator engine
JP2020035502A (ja) * 2018-08-28 2020-03-05 キオクシア株式会社 半導体集積回路

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050240745A1 (en) * 2003-12-18 2005-10-27 Sundar Iyer High speed memory control and I/O processor system
US20100138587A1 (en) * 2004-11-23 2010-06-03 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
CN101069391A (zh) * 2004-12-03 2007-11-07 皇家飞利浦电子股份有限公司 流式存储控制器
US20090196116A1 (en) * 2008-02-01 2009-08-06 Jong-Hoon Oh Semiconductor memory having a bank with sub-banks
US20100100714A1 (en) * 2008-10-18 2010-04-22 Micron Technology, Inc. System and Method of Indirect Register Access
CN107667403A (zh) * 2015-06-24 2018-02-06 英特尔公司 长突发长度的内部连续行存取
CN108268940A (zh) * 2017-01-04 2018-07-10 意法半导体股份有限公司 用于创建可重新配置的互连框架的工具
US10437758B1 (en) * 2018-06-29 2019-10-08 Apple Inc. Memory request management system

Also Published As

Publication number Publication date
EP3859535B1 (en) 2024-02-28
EP3859535A1 (en) 2021-08-04
US11823771B2 (en) 2023-11-21
US20210241806A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
US10153042B2 (en) In-memory computational device with bit line processors
US10783942B2 (en) Modified decode for corner turn
US10210935B2 (en) Associative row decoder
CN110990060B (zh) 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法
US10789182B2 (en) System and method for individual addressing
CN109427384B (zh) 存储器内处理
KR20210065830A (ko) 에너지 효율적인 컴퓨팅 니어 메모리 이진 신경망 회로들
CN103890857A (zh) 采用环形寄存器的可移位的存储器
CN111752530A (zh) 对块稀疏度的机器学习架构支持
US11947979B2 (en) Systems and devices for accessing a state machine
US20220391128A1 (en) Techniques to repurpose static random access memory rows to store a look-up-table for processor-in-memory operations
US20240161830A1 (en) Apparatuses and methods for organizing data in a memory device
CN115129658A (zh) 针对上下文无关语法解析字符串的存储器内处理实施方案
US7483283B2 (en) Apparatus for efficient streaming data access on reconfigurable hardware and method for automatic generation thereof
US11823771B2 (en) Streaming access memory device, system and method
KR20210113099A (ko) 조정 가능한 기능-인-메모리 컴퓨팅 시스템
Arora et al. CoMeFa: Deploying Compute-in-Memory on FPGAs for Deep Learning Acceleration
CN114072778A (zh) 存储器处理单元架构
US11941371B2 (en) Bit string accumulation
US11403096B2 (en) Acceleration circuitry for posit operations
신현승 McDRAM: Low Latency and Energy-Efficient Matrix Computation in DRAM
TW202411857A (zh) 用於高效率逐元素聚合、縮放及位移之特殊用途數位運算硬體
Kim et al. DRAM-Based Processing-in-Memory

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