CN111009268A - 执行存储器内预取的存储器设备和包括存储器设备的系统 - Google Patents

执行存储器内预取的存储器设备和包括存储器设备的系统 Download PDF

Info

Publication number
CN111009268A
CN111009268A CN201910742115.0A CN201910742115A CN111009268A CN 111009268 A CN111009268 A CN 111009268A CN 201910742115 A CN201910742115 A CN 201910742115A CN 111009268 A CN111009268 A CN 111009268A
Authority
CN
China
Prior art keywords
memory
target
data
array
elements
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
CN201910742115.0A
Other languages
English (en)
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
Priority claimed from KR1020180119527A external-priority patent/KR102664213B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111009268A publication Critical patent/CN111009268A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种存储器设备包括存储器单元阵列、信息寄存器和预取电路。存储器单元阵列存储有效数据阵列、基阵列和目标数据阵列,其中有效数据阵列包括第一数据的元素中的有效元素,基阵列包括指示与有效元素对应的位置值的位置元素,目标数据阵列包括第二数据的与位置值对应的目标元素。信息寄存器存储包括目标数据阵列的起始地址和目标元素的单位大小的间接存储器访问信息。预取电路基于间接存储器访问信息预取与从存储器单元阵列读取的位置元素对应的目标元素。

Description

执行存储器内预取的存储器设备和包括存储器设备的系统
相关申请的交叉引用
本申请要求2018年10月8日向韩国知识产权局(KIPO)递交的韩国专利申请No.10-2018-0119527的优先权,其全部公开内容通过引用合并于此。
技术领域
示例性实施例总体上涉及半导体集成电路,更具体地,涉及执行存储器内预取的存储器设备和包括存储器设备的系统。
背景技术
预取是计算机处理器用来通过在实际需要之前将指令或数据从较慢的存储器中的原始存储装置预取到较快的本地存储器以提高执行性能的技术。在诸如间接存储器访问之类的不规则数据访问的情况下,当基于数据的位置进行预取时难以提高操作速度。尽管已经提出了考虑间接存储器访问模式的软件和硬件预取方法,但是在检测和预测间接存储器访问时可能会消耗过多的带宽,或者由于不正确的检测和预测而读取不必要的数据时可能会消耗带宽。
发明内容
本发明构思的至少一个示例性实施例可以提供一种能够提高间接存储器访问效率的存储器设备和包括存储器设备的系统。
本发明构思的至少一个示例性实施例可以提供一种存储器设备和包括存储器设备的系统,能够通过间接存储器访问来提高存储器内处理(PIM)架构的效率。
根据本发明构思的示例性实施例,一种存储器设备包括:存储器单元阵列、信息寄存器和预取电路。所述存储器单元阵列存储有效数据阵列、基阵列和目标数据阵列,其中所述有效数据阵列顺序地包括第一数据的元素中的有效元素,所述基阵列顺序地包括指示与所述有效元素对应的位置值的位置元素,所述目标数据阵列顺序地包括第二数据的与所述位置值对应的目标元素。所述信息寄存器存储包括所述目标数据阵列的起始地址和所述目标元素的单位大小的间接存储器访问信息。所述预取电路基于所述间接存储器访问信息预取与从所述存储器单元阵列读取的所述位置元素对应的所述目标元素。
根据本发明构思的示例性实施例,一种存储器设备包括:沿竖直方向堆叠的多个存储器半导体管芯,在所述多个存储器半导体管芯中形成存储器单元阵列;多个穿硅通孔,电连接所述多个存储器半导体管芯;信息寄存器;和预取电路。所述存储器单元阵列存储有效数据阵列、基阵列和目标数据阵列。所述有效数据阵列顺序地包括第一数据的元素中的有效元素。所述基阵列顺序地包括指示与所述有效元素对应的位置值的位置元素。所述目标数据阵列顺序地包括第二数据的与所述位置值对应的目标元素。所述信息寄存器被配置为存储包括所述目标数据阵列的起始地址和所述目标元素的单位大小的间接存储器访问信息。所述预取电路被配置为基于所述间接存储器访问信息预取与从所述存储器单元阵列读取的所述位置元素对应的所述目标元素。
根据本发明构思的示例性实施例,一种系统包括:存储器设备和主机设备,所述主机设备包括被配置为控制对所述存储器设备的访问的存储器控制器。所述存储器设备包括:存储器单元阵列,被配置为存储有效数据阵列、基阵列和目标数据阵列:信息寄存器;和预取电路。所述有效数据阵列顺序地包括第一数据的元素中的有效元素。所述基阵列顺序地包括指示与所述有效元素对应的位置值的位置元素。所述目标数据阵列顺序地包括第二数据的与所述位置值对应的目标元素。所述信息寄存器被配置为存储包括所述目标数据阵列的起始地址和所述目标元素的单位大小的间接存储器访问信息。所述预取电路被配置为基于所述间接存储器访问信息预取与从所述存储器单元阵列读取的所述位置元素对应的所述目标元素。
根据本发明构思的示例性实施例,一种存储器设备包括:存储器单元阵列,被配置为存储有效数据阵列;RAM;和控制器。所述有效数据阵列顺序地包括第一数据的元素中的有效元素。所述基阵列顺序地包括指示与所述有效元素对应的位置值的位置元素。所述目标数据阵列顺序地包括第二数据的与所述位置值对应的目标元素。所述控制器被配置为从外部设备接收包括所述目标数据阵列的起始地址和所述目标元素的单位大小的间接存储器访问信息。所述控制器响应于接收到所述间接存储器访问信息而执行预取操作,其中,所述预取操作使用所述起始地址和所述单位大小读取所述目标元素,并将读取的目标元素存储到所述RAM中。
根据本发明构思的至少一个示例性实施例的存储器设备和系统可以通过基于从存储器控制器提供的间接存储器访问信息来执行间接存储器访问,以增强存储器内预取的准确性和效率。
此外,根据本发明构思的至少一个示例性实施例的存储器设备和系统可以通过并行化用于间接存储器访问的数据布置并且利用存储器设备内的带宽,来减少间接存储器访问的延迟并且增加存储器内预取的速度。
此外,根据本发明构思的至少一个示例性实施例的存储器设备和系统可以通过使用存储器内预取执行存储器内处理操作来高效地执行稀疏数据运算。
附图说明
根据结合附图的以下详细描述,将更清楚地理解本公开的示例性实施例。
图1是示出了根据本发明构思的示例性实施例的包括存储器设备的存储器系统的框图。
图2是示出了根据本发明构思的示例性实施例的控制存储器设备的方法的流程图。
图3是示出了稀疏矩阵向量乘法(SpMV)的示例的图。
图4A和图4B是示出了与图3的SpMV对应的数据阵列的图。
图5是示出了根据本发明构思的示例性实施例的存储器设备的框图。
图6A、图6B和图6C是示出了根据本发明构思的示例性实施例的用于存储器内预取的间接存储器访问信息的示例性实施例的图。
图7是示出了根据本发明构思的示例性实施例的用于间接存储器访问的数据并行布置(disposition)的示例的图。
图8是示出了根据本发明构思的示例性实施例的存储器设备中包括的预取电路的示例性实施例的图。
图9是示出了根据本发明构思的示例性实施例的包括存储器设备的系统的框图。
图10是示出了根据本发明构思的示例性实施例的存储器设备中包括的用于存储器内处理的运算单元的示例性实施例的图。
图11和图12是根据本发明构思的示例性实施例的包括堆叠存储器设备的系统的分解透视图。
图13和图14是示出了根据本发明构思的示例性实施例的堆叠存储器设备的封装结构的图。
图15是示出了根据本发明构思的示例性实施例的堆叠存储器设备的示例结构的图。
图16是示出了根据本发明构思的示例性实施例的计算系统的框图。
具体实施方式
下面将参照附图更全面地描述本发明构思,在附图中示出了一些示例性实施例。在附图中,相同的附图标记始终表示相同的元件。可以省略重复的描述。
图1是示出了根据本发明构思的示例性实施例的包括存储器设备的存储器系统的框图。
参考图1,存储器系统10包括存储器控制器20和半导体存储器设备30。
存储器控制器20可以控制存储器系统10的整体操作。存储器控制器20可以控制外部主机和半导体存储器设备30之间的全部数据交换。例如,存储器控制器20可以响应于来自主机的请求,向半导体存储器设备30写入数据或从半导体存储器设备30读取数据。另外,存储器控制器20可以向半导体存储器设备30发出操作命令(例如,读取命令、写入命令等)以控制半导体存储器设备30。在示例性实施例中,存储器控制器20位于主机设备内。
在一些示例性实施例中,半导体存储器设备30可以是包括动态存储器单元的存储器设备,例如动态随机存取存储器(DRAM)、双倍数据速率4(DDR4)同步DRAM(SDRAM)、低功耗DDR4(LPDDR4)SDRAM或LPDDR5SDRAM。
存储器控制器20可以向半导体存储器设备30发送时钟信号CLK、命令CMD和地址(信号)ADDR,并且与半导体存储器设备30交换数据DQ。另外,存储器控制器20可以根据主机的请求向半导体存储器设备30提供间接存储器访问信息IMAI。间接存储器访问信息IMAI可以作为附加控制信号提供给半导体存储器设备30,或者通过用于设置半导体存储器设备30中包括的模式寄存器的模式寄存器写入命令来提供。
半导体存储器设备30可以包括存储器单元阵列MC 40、信息寄存器IREG 100和预取电路PFC 200。在实施例中,控制器(例如,控制电路)包括信息寄存器IREG 100和预取电路PFC 200,并且控制器响应于从主机设备或存储器控制器接收到存储器访问信息IMAI而执行预取。
存储器单元阵列40可以包括多个存储器单元以存储数据。存储器单元可以被分组为多个存储体,并且每个存储体可以包括多个数据块。
根据存储器控制器20的控制,可以将有效数据阵列、基阵列和目标数据阵列存储在存储器单元阵列40中。有效数据阵列可以顺序地包括第一数据的元素中的有效元素。基阵列可以顺序地包括指示与有效元素相对应的位置值的位置元素。目标数据阵列可以顺序地包括第二数据的与位置值对应的目标元素。将参考图3、图4A和图4B进一步描述有效数据阵列、基阵列和目标数据阵列。
信思奇存器100可以存储从存储器控制器20提供的间接存储器访问信息IMAI。在实施例中,间接存储器访问信息IMAI至少包括目标数据阵列的起始地址和目标元素的单位大小。下面将参考图6A、图6B、图6C和图7进一步描述从存储器控制器提供的间接存储器访问信息IMAI。
在实施例中,预取电路200基于间接存储器访问信息IMAI预取与从存储器单元阵列40读取的位置元素对应的目标元素。
用于加速存储器访问的方法是预取,并且传统的预取采用流式或步幅方案(stride scheme),其同时读取相邻存储器区域中的数据。传统的预取假设数据的空间局部性以同时读取相邻数据。然而,传统的预取可能会不必要地消耗存储器带宽。
根据本发明构思的示例性实施例的新预取技术包括检测间接存储器访问、预测间接存储器访问的地址以及从预测的地址读取数据。
必须最小化预取成本,以防止由于预取而导致的其他存储器访问的延迟。精确地检测和预测间接存储器访问并优化预取操作非常重要。如果错误的检测和预测消耗了带宽或预取本身消耗了相当大的带宽,则整个系统的性能可能会因为引起其他工作负载的延迟而降低。
在实施例中,用于减少间接存储器访问的延迟的预取技术分为软件预取和硬件预取。
基于软件访问与硬件访问相比具有准确性优势的事实,软件预取的重点在于间接存储器访问的检测和预测的准确性。换言之,与无法掌握主机设备执行的应用工作负载的内容的硬件相比,软件可以通过源代码检查以较低成本确切地预测何时发生间接存储器访问以及必须访问存储器设备的哪个部分。例如,当在扫描源代码时编译器捕获间接存储器访问代码时,编译器可以在间接存储器访问代码之前插入预取命令。可以通过基于插入的预取命令预取数据并在后续操作中使用预取数据来防止间接存储器访问的延迟。
但是,软件预取可能无法充分降低预取成本。尽管与硬件预取相比可以更容易地执行软件预取,但是可能无法通过自动代码分析来完美地检测间接存储器访问,并且可能发生错误检测或检测忽视。另外,每个检测到的代码的命令插入可能会显著增加预取命令的数量。
硬件预取可以解决软件预取的这些问题。例如,可以通过监测紧接在预取表访问之后发生的高速缓存未命中来预测未来的高速缓存未命中,以便获得关于间接存储器访问的信息。可以通过这种监测和预测计算待预取数据的地址来执行预取。
然而,硬件预取可能无法避免准确性和成本的问题。硬件无法捕获每个工作负载的执行上下文,因此在硬件预取中,紧接在预取表访问之后的高速缓存未命中被认为是间接存储器访问。不充足的信息可能不足以提高检测和预测的准确性,因此可能由于间接存储器访问的检测错误而导致不必要的预取。
相反,根据本发明构思的示例性实施例的存储器设备和系统可以通过基于从存储器控制器提供的间接存储器访问信息而执行间接存储器访问来增强存储器内预取的准确性和效率。
图2是示出了根据本发明构思的示例性实施例的控制存储器设备的方法的流程图。
参考图1和图2,从存储器控制器20提供的有效数据阵列、基阵列和目标数据阵列被存储在存储器设备30中包括的存储器单元阵列40中(S100)。在实施例中,有效数据阵列顺序地包括第一数据的元素中的有效元素。在实施例中,基阵列顺序地包括指示与有效元素对应的位置值的位置元素。在实施例中,目标数据阵列顺序地包括第二数据的与位置值对应的目标元素。
从存储器控制器20向存储器设备30提供间接存储器访问信息IMAI(S200),并且存储器设备30将间接存储器访问信息IMAI存储在存储器设备30中包括的信息寄存器100中(S300)。间接存储器访问信息IMAI至少包括目标数据阵列的起始地址和目标元素的单位大小。
使用存储器设备30中包括的预取电路200并基于间接存储器访问信息IMAI,预取与从存储器单元阵列40读取的位置元素对应的目标元素(S400)。可以使用预取电路200并基于间接存储器访问信息IMAI来高效地执行存储器内预取。在实施例中,在执行需要使用读取的目标元素或从读取的目标元素导出的数据的操作之前,将读取的目标元素临时存储在存储器30的快速存储器(例如,DRAM、SRAM、寄存器等)中作为预取的一部分。
在下文中,参考图3、图4A和图4B描述示例稀疏矩阵向量乘法(SpMV),作为可以应用根据示例性实施例的间接存储器访问的预取的示例。例如,如果主机设备的处理预测出主机设备将很快需要SpMV的数据结果,则处理主机设备可以输出间接存储器访问信息IMAI以触发对SpMV的预取和执行。例如,该处理可以通过解析由主机设备执行的可执行文件的源代码以获得与SpMV对应的指令来预测主机设备将很快需要数据结果。
图3是示出了SpMV的示例的图,并且图4A和图4B是示出了与图3的SpMV对应的数据阵列的图。
图3示出了一个稀疏矩阵SM和一个列向量CV。图4A示出了与图3的稀疏矩阵SM对应的有效数据阵列AA和基阵列BA,图4B示出了与图3的列向量CV对应的目标数据阵列。将参考图3、图4A和图4B描述稀疏矩阵SM和列向量CV的示例乘法,并且将理解,相同的描述可以应用于各种乘法,诸如行向量和稀疏矩阵的乘法、稀疏矩阵和另一矩阵的乘法等。
高性能计算、机器学习、深度学习、图形分析等共同的工作负载之一是稀疏数据运算。例如,稀疏数据运算是有限元模拟中的基本运算,其广泛用于诸如力学、热力学、流体动力学等工程分析、用于处理随时间变化的语音数据的递归神经网络(RNN)、根据网络文档的相对重要性在网络文档上分配权重值的页面排名算法等中。这里,作为图3的稀疏矩阵SM,稀疏数据指示全部数据元素的一小部分是具有有效值(例如,除了零之外的值)的有效元素。
针对稀疏数据,为了存储空间效率,仅存储有效元素(例如,非零)。在图3的稀疏矩阵SM的情况下,所有的五十个元素中的七个元素是有效元素。仅存储所有元素中的七个有效元素和对应的信息以节省存储器设备的存储空间。如图4A所示,仅存储顺序地包括五十个元素中的有效元素A(1)~A(7)的有效数据阵列AA以及顺序地包括指示与有效元素A(1)~A(7)对应的位置值的位置元素B(1)~B(7)的基阵列BA。
稀疏矩阵的主要运算是与向量的乘法,即如图3所示的SpMV。要与矩阵元素(即,有效元素)相乘的向量元素(即,目标元素)的位置由矩阵元素的列位置确定,这可以被称为间接存储器访问。
考虑到图3的SpMV中的列向量CV的被访问的向量元素,对于稀疏矩阵SM的第一行执行计算7*1+(-2.5)*5,因此必须读取列向量CV的第一元素和第八元素。对于稀疏矩阵SM的第二行执行计算(-5)*(-5),因此必须读取列向量CV的第四元素。
总之,仅存储稀疏矩阵SM的有效元素,存储的有效元素的列位置是不规则的,如1、8、4、2、1、3和8。向量元素或目标元素的位置由有效元素的不规则列位置确定,因此向量元素被不规则地访问。
为归纳上述情况,包括稀疏矩阵的有效元素的阵列可以被称为有效数据阵列AA,包括与有效元素对应的位置或列信息的阵列可以被称为基阵列BA,包括向量元素的阵列可以被称为目标数据阵列TA。关于图3、图4A和图4B的情况,AA={A(1),A(2),A(3),A(4),A(5),A(6),A(7)}={7,-2.5,-5,3,-6,37,9},BA={B(1),B(2),B(3),B(4),B(5),B(6),B(7)}={1,8,4,2,1,3,8},TA={T(1),T(2),T(3),T(4),T(5),T(6),T(7),T(8),T(9),T(10)}={1,32,4,-5,8,7,13,5,43,-7}。SpMV可以用A(i)*T[B(i)]表示,其中i=1~7并且T[B(i)]是引起间接存储器访问的运算。
用于加速存储器访问的代表性方法是预取,并且传统预取采用流式或步幅方案,其同时读取相邻的存储器区域中的数据以防止重复读取。在执行SpMV的运算A(i)*T[B(i)]时,A(i)对应于顺序访问,并且传统的预取可以是有效的。然而,在仅存储稀疏矩阵的有效元素时,T[B(i)]变得不规则,因此T[B(i)]的地址变得不规则。
在图3、图4A和图4B的示例中,BA={1,8,4,2,1,3,8},并且因此作为目标元素的必要的向量元素是T[1]、T[8]、T[4]、T[2]、T[1]、T[3]和T[8],这导致不规则的访问。对于这种不规则访问,传统的预取几乎没有效果,这是因为目标元素在需要时分别被读取。因此,可能导致对存储器设备的访问的显著延迟,并且SpMV的执行可能劣化。
根据示例性实施例,可以通过在间接存储器访问时高效地预取存储器设备内的目标元素来增强SpMV的执行。
图5是示出了根据本发明构思的示例性实施例的存储器设备的框图。
虽然参考图5将DRAM描述为存储器设备的示例,但是根据示例性实施例的存储器设备可以是各种存储器单元架构中的任何一种,包括但不限于诸如DRAM、(晶闸管RAM)TRAM和SRAM之类的易失性存储器架构,或诸如只读存储器(ROM)、闪存存储器、铁电RAM(FRAM)、磁RAM(MRAM)之类的非易失性存储器架构等。
参考图5,存储器设备400包括控制逻辑410(例如,逻辑电路)、地址寄存器420、存储体控制逻辑430(例如,逻辑电路)、行地址复用器440、列地址锁存器450、行解码器460(例如,解码电路)、列解码器470(例如,解码电路)、存储器单元阵列480、读出放大器单元485、输入/输出(I/O)选通电路490、数据输入/输出(I/O)缓冲器495、刷新计数器445(例如,计数电路)、信息寄存器IREG 100和预取电路PFC 200。
存储器单元阵列480可以包括多个存储体阵列480a~480h。行解码器460可以包括分别耦接到存储体阵列480a~480h的多个存储体行解码器460a~460h,列解码器470可以包括分别耦接到存储体阵列480a~480h的多个存储体列解码器470a~470h,并且读出放大器单元485可以包括分别耦接到存储体阵列480a~480h的多个存储体读出放大器485a~485h。
地址寄存器420可以从存储器控制器接收包括存储体地址BANK_ADDR、行地址ROW_ADDR和列地址COL_ADDR在内的地址ADDR。地址寄存器420可以将接收的存储体地址BANK_ADDR提供给存储体控制逻辑430,可以将接收的行地址ROW_ADDR提供给行地址复用器440,并且可以将接收的列地址COL_ADDR提供给列地址锁存器450。
存储体控制逻辑430可以响应于存储体地址BANK_ADDR产生存储体控制信号。可以响应于存储体控制信号而激活与存储体地址BANK_ADDR相对应的存储体行解码器460a~460h之一,并且可以响应于存储体控制信号而激活与存储体地址BANK_ADDR相对应的存储体列解码器470a~470h之一。
行地址复用器440可以从地址寄存器420接收行地址ROW_ADDR,并且可以从刷新计数器445接收刷新行地址REF_ADDR。行地址复用器440可以选择性地输出行地址ROW_ADDR或刷新行地址REF_ADDR,作为行地址RA。从行地址复用器440输出的行地址RA可以施加于存储体行解码器460a~460h。
存储体行解码器460a~460h中激活的一个可以对从行地址复用器440输出的行地址RA进行解码,并且可以激活与行地址RA相对应的字线。例如,所激活的存储体行解码器可以将字线驱动电压施加到与行地址RA相对应的字线。
列地址锁存器450可以从地址寄存器420接收列地址COL_ADDR,并且可以临时存储接收的列地址COL_ADDR。在一些实施例中,在突发模式下,列地址锁存器450可以产生从接收的列地址COL_ADDR递增的列地址。列地址锁存器450可以将临时存储或产生的列地址施加于存储体列解码器470a~470h。
存储体列解码器470a~470h中激活的一个可以对从列地址锁存器450输出的列地址COL_ADDR进行解码,并且可以控制输入/输出选通电路490,以输出与列地址COL_ADDR相对应的数据。
I/O选通电路490可以包括用于对输入/输出数据进行选通的电路。I/O选通电路490还可以包括:用于存储从存储体阵列480a~480h输出的数据的读数据锁存器、以及用于将数据写入到存储体阵列480a~480h的写驱动器。
要从存储体阵列480a~480h中的一个存储体阵列中读取的数据可以由与要从其读取数据的该一个存储体阵列耦接的存储体读出放大器485a~485h感测,并且可以被存储在读数据锁存器中。存储在读数据锁存器中的数据可以经由数据I/O缓冲器495提供给存储器控制器。要写入存储体阵列480a~480h中的一个存储体阵列中的数据DQ可以从存储器控制器提供给数据I/O缓冲器495。写驱动器可以将数据DQ写入存储体阵列480a~480h中的一个存储体阵列中。
控制逻辑410可以控制存储器设备400的操作。例如,控制逻辑410可以产生针对存储器设备400的控制信号,以执行写操作或读操作。控制逻辑410可以包括:对从存储器控制器接收的命令CMD进行解码的命令解码器411、以及设置存储器设备400的操作模式的模式寄存器412。例如,命令解码器411可以通过对写使能信号、行地址选通信号、列地址选通信号、芯片选择信号等进行解码来产生与命令CMD相对应的控制信号。
在示例性实施例中,信息寄存器100存储从外部存储器控制器提供的间接存储器访问信息IMAI。在示例性实施例中,间接存储器访问信息IMAI至少包括目标数据阵列TA的起始地址TSADD和目标数据阵列TA中包括的目标元素的单位大小TSZ。根据示例性实施例,间接存储器访问信息IMAI还包括基阵列BA的起始地址BSADD、基阵列BA中包括的位置元素的单位大小BSZ、位置元素的总数NT以及同时从存储器单元阵列480读取的位置元素的读取数量NR。下面将描述根据示例性实施例的使用间接存储器访问信息IMAI的方法。
在示例性实施例中,预取电路200基于间接存储器访问信息IMAI预取与从存储器单元阵列480读取的位置元素对应的目标元素。在示例性实施例中,间接存储器访问信息IMAI中的目标数据阵列TA的起始地址TSADD和目标元素的单位大小TSZ提供给预取电路200,以计算目标地址TADDR,并且其他信息BSADD、BSZ、NT和NR可以提供给控制逻辑410,以进行对存储器设备400的整体控制。在示例性实施例中,其他信息BSADD、BSZ、NT和NR可以存储在模式寄存器412中。
图6A、图6B和图6C是示出了根据本发明构思的示例性实施例的用于存储器内预取的间接存储器访问信息的示例性实施例的图。
参考图6A,间接存储器访问信息IMAI1包括目标数据阵列TA的起始地址TSADD和目标数据阵列TA中包括的目标元素的单位大小TSZ。在示例性实施例中,紧接在有效数据阵列AA、基阵列BA和目标数据阵列TA的写入操作完成之后,将间接存储器访问信息IMAI1从存储器控制器提供给存储器设备。在示例性实施例中,利用指示间接存储器访问的命令或模式信号将间接存储器访问信息IMAI1从存储器控制器提供给存储器设备。如下面参考图8所述,预取电路200可以使用目标数据阵列TA的起始地址TSADD和目标元素的单位大小TSZ来计算目标地址TADDR。
参考图6B,间接存储器访问信息IMAI2包括目标数据阵列TA的起始地址TSADD和目标数据阵列TA中包括的目标元素的单位大小TSZ、基阵列BA的起始地址BSADD、基阵列BA中包括的位置元素的单位大小BSZ、位置元素的总数NT以及同时从存储器单元阵列读取的位置元素的读取数量NR。
参考图6C,间接存储器访问信息IMAI3包括目标数据阵列TA的起始地址TSADD和目标数据阵列TA中包括的目标元素的单位大小TSZ、有效数据阵列AA的起始地址ASADD、有效数据阵列AA中包括的有效元素的单位大小ASZ、基阵列BA的起始地址BSADD、基阵列BA中包括的位置元素的单位大小BSZ、位置元素的总数NT以及同时从存储器单元阵列读取的位置元素的读取数量NR。
如下所述,在计算地址和控制重复预取操作时,可以使用信息TSADD、TSZ、ASADD、ASZ、BSADD、BSZ、NT和NR。
图7是示出了根据本发明构思的示例性实施例的用于间接存储器访问的数据并行布置的示例的图。
通常,存储器设备可以包括多个存储体,并且图7作为非限制性示例示出了第一存储体MBK1、第二存储体MBK2和第三存储体MBK3。
参考图7,有效数据阵列AA、基阵列BA和目标数据阵列TA存储在不同的存储体中。例如,有效数据阵列AA存储在第一存储体MBK1中,基阵列BA存储在第二存储体MBK2中,目标数据阵列TA存储在第三存储体MBK3中。
有效数据阵列AA顺序地包括第一数据的元素中的有效元素A(i)(其中i是元素的索引)。基阵列BA顺序地包括指示与有效元素A(i)对应的位置值的位置元素B(i)。目标数据阵列TA顺序地包括第二数据的与位置元素B(i)的位置值对应的目标元素T(i)。如参考图3、图4A和图4B所述,第一数据可以是稀疏矩阵,第二数据可以是向量。在这种情况下,位置元素B(i)的位置值可以是有效元素A(i)的列位置。
通常,对不同存储体的访问延迟小于对相同存储体的访问延迟。可以从不同的存储体或不同的存储体组基本上同时读出数据。这样,通过将有效数据阵列AA、基阵列BA和目标数据阵列TA存储在不同的存储体中,可以提供存储器访问和预取的速度。
间接存储器访问信息IMAI可以用于计算待读出的数据的地址。例如,当有效数据阵列AA中的第k个有效元素A(k)的地址是AADDR{A(k)}时,基阵列BA中的与第k个有效元素A(k)对应的第k个位置元素B(k)可以计算为表达式1和表达式2。
表达式1
AADDR{A(k)}=ASADD+AOFS=ASADD+(k-1)*ASZ,
(k-1)=(AADDR{A(k)}-ASADD)/ASZ
表达式2
BADDR{B(k)}=BSADD+BOFS=BSADD+(k-1)*BSZ
=BSADD+(AADDR{A(k)}-ASADD)*BSZ/ASZ
这样,当从存储器控制器向存储器设备提供第k个有效元素A(k)的地址AADDR{A(k)}时,可以使用存储的间接存储器访问信息IMAI在存储器设备内计算对应的第k个位置元素B(k)的地址BADDR{B(k)},并且可以读出第k个位置元素B(k)。因此,可以减少或消除传送地址的延迟,并且可以进一步提高预取和存储器内处理的速度。下面将参考图8描述使用目标数据阵列TA的起始地址TSADD和目标元素的单位大小TSZ对目标地址的计算。
图8是示出了根据本发明构思的示例性实施例的存储器设备中包括的预取电路的示例性实施例的图。
参考图8,预取电路200包括算术电路210(例如,一个或多个算术逻辑单元)、目标地址寄存器TAREG 220和目标数据寄存器TDREG 230。为了表示数据流向,图8还示出了信息寄存器IREG 100、存储基阵列BA的存储体MBKB和存储目标数据阵列TA的存储体MBKT。
算术电路210可以基于读取的位置元素B(i)、目标数据阵列TA的起始地址TSADD和目标元素T(i)的单位大小TSZ来计算与从存储体MBKB读取的位置元素B(i)对应的目标地址TADDR{B(i)}。
计算出的目标地址TADDR{B(i)}存储在目标地址寄存器220中,并被提供用于访问存储体MBKT。从目标地址TADDR{B(i)}读出目标元素T(i),并且可以将读取的目标元素T(i)存储在目标数据寄存器230中。
在示例性实施例中,算术电路210使用表达式3计算目标地址TADDR{B(i)}。
表达式3
TADDR{T(i)}=TSADD+TSZ*(B(i)-1)
在表达式3中,T(i)表示第i个目标元素,TADDR{T(i)}表示第i个目标元素的目标地址,TSADD表示目标数据阵列的起始地址,TSZ表示目标元素的单位大小,B(i)表示基阵列的第i个位置元素。
表达式3中的乘法可以使用移位器(例如,移位寄存器)来执行。在实施例中,每个目标元素用2n个比特表示,其中n是整数,因此移位器可以代替昂贵的乘法器。在实施例中,每个算术单元(AU)用一个移位器和一个加法器实现。
需要提高间接存储器访问的检测和预测的准确性,并优化预取操作,以降低间接存储器访问的延迟和成本。提供了示例性实施例来解决这两个问题,即,间接存储器访问的检测和预测的准确性以及预取操作的优化,以确保用于预取的附加带宽。如上所述,预取成本的最小化是为了防止由于预取而导致的其他存储器访问的延迟,以及确保预取本身的带宽。
存储器带宽可以包括外部带宽和内部带宽。即使增加外部带宽,如果工作负载优化来得到增加的外部带宽,则可能也无法保证附加的带宽,因此必须确保内部带宽以进行预取。因此,提出了根据示例性实施例的存储器内预取以确保用于预取的带宽。
对于根据本发明构思的示例性实施例的存储器内预取,存储器控制器根据主机设备的请求将间接存储器访问信息IMAI提供给存储器设备,以便提高间接存储器访问的检测和预测的准确性。可以至少需要关于基阵列BA和目标数据阵列TA的信息以用于存储器内预取。
在一些示例性实施例中,每当要求间接存储器访问时,存储器控制器都将信息提供给存储器设备。如上所述,关于基阵列BA,该信息可以包括基阵列BA的起始地址BSADD、基阵列BA中的位置元素的单位大小BSZ、位置元素的总数NT和同时从存储单元阵列读取的位置元素的读取数量NR。关于目标阵列TA,该信息可以包括目标数据阵列TA的起始地址TSADD和目标数据阵列TA中的目标元素的单位大小TSZ。
因为可以在间接存储器访问开始之前传送间接存储器访问信息IMAI,所以不会消耗由于错误检测而导致的过量带宽。
为了优化预取操作,根据本发明构思的示例性实施例,可以执行间接存储器访问的地址计算的并行化,即,单指令多数据(SIMD)。为此,如图8所示,算术电路210可以包括NR个算术单元AU,其被配置为基于从存储器单元阵列同时读取的NR个位置元素来并行提供NR个目标地址,其中NR是大于1的自然数。
当位置元素的总数是NT时,NR个算术单元AU可以通过重复执行NT/NR次地址计算来提供NT个目标地址,其中NT是大于1的自然数。尽管为了便于说明,图8示出了四个算术单元AU,但是示例性实施例不限于此。
四个算术单元AU可以并行接收从存储体MBKB读取的基阵列BA的四个位置元素B(k)~B(k+3),并且通过表达式3的计算并行提供四个目标地址TADDR{T(k)}~TADDR{(Tk+3)}。
此后,可以执行关于后续的四个位置元素B(k+4)~B(k+7)的地址计算以及基于计算的地址的读取操作。这样,操作可以重复NT/NR次,以顺序地预取与所有NT个位置元素对应的目标元素。可以使用寄存器220和230通过流水线方案执行目标元素的地址计算和读取操作。换言之,先前目标元素的读取操作和后续地址计算可以同时执行或者可以重叠。通过这种并行的流水线操作,可以进一步减少整个预取时间。
在示例性实施例中,目标数据寄存器230用静态随机存取存储器(SRAM)实现。在计算中使用并且不需要存储的诸如间接存储器访问信息IMAI和目标地址TADDR之类的中间数据不被传送到外部设备,因此仅运算(例如,SpMV)中使用的目标元素被存储在SRAM中,并且外部设备可以快速访问SRAM中的数据,以减少整个操作时间。
图9是示出了根据本发明构思的示例性实施例的包括存储器设备的系统的框图。
参考图9,系统11包括主机设备50和半导体存储器设备30。主机设备可以包括处理器(未示出)、存储器控制器MCTR 20和高速缓存存储器CCM 51。在示例性实施例中,存储器控制器20被实现为与主机设备50不同的组件。半导体存储器设备30可以包括存储器单元阵列MC 40、信息寄存器IREG 100、预取电路PFC 200和计算电路PIMC 300。由于图9包括图1的一些元件,因此在下文中省略它们的描述。
如参考图8所述,预取电路200中的目标数据寄存器230可以用具有快速访问速度的SRAM来实现。在示例性实施例中,存储器控制器20根据主机设备50的请求,将目标数据寄存器230中预取的目标元素加载到主机设备51的高速缓存存储器51。在示例性实施例中,主机设备50使用目标数据寄存器230作为另一高速缓存存储器。在这种情况下,目标数据寄存器230具有比主机设备50中的高速缓存存储器51低的高速缓存级别。
在实施例中,计算电路300基于第一数据和第二数据执行存储器内处理(PIM)操作,以提供计算结果数据。如上所述,第一数据可以是稀疏矩阵,第二数据可以是向量,并且计算电路300可以执行SpMV作为PIM操作。
图10是示出了根据本发明构思的示例性实施例的存储器设备中包括的用于执行存储器内处理运算的运算单元的示例实施例的图。图9中的计算电路300可以包括如图10所示的多个运算单元,以执行并行计算。
参考图10,每个运算单元500包括乘法电路520和累加电路540。乘法电路520包括缓冲器521和522以及乘法器523,被配置为将与第一数据对应的有效数据阵列AA的有效元素和与第二数据对应的目标数据阵列TA的目标元素相乘。累加电路540包括加法器541(例如,加法电路)和缓冲器542,用于累加乘法电路520的输出,以提供相应的计算结果数据DRi。例如,乘法器523可以将有效元素中的第一有效元素乘以目标元素中的第一目标元素以生成第一结果,加法器541可以将第一结果加到从缓冲器542接收的初始值(例如,0),来产生第一总和以存储在缓冲器542中,乘法器523可以将有效元素中的第二有效元素乘以目标元素中的第二目标元素以产生第二结果,加法器541可以将第二结果加到从缓冲器542接收的第一总和等等。可以响应于复位信号RST而初始化累加电路540,并且响应于输出使能信号OUTEN而输出相应的计算结果数据DRi。例如,响应于复位信号RST,可以将缓冲器542的值设置为0。例如,相应的计算结果数据DRi可以是在累加电路540被复位之前存储在缓冲器542中的ADDER 541的最后输出。使用如图10所示的运算单元500,可以高效地执行诸如上述SpMV之类的运算。
图11和图12是根据本发明构思的示例性实施例的包括堆叠存储器设备的系统的分解透视图。
参考图11,系统800包括堆叠存储器设备1000和主机设备2000。
堆叠存储器设备1000可以包括基部半导体管芯或逻辑半导体管芯1010、以及与逻辑半导体管芯1010堆叠的多个存储器半导体管芯1070和1080。图11示出了一个逻辑半导体管芯和两个存储器半导体管芯的非限制性示例。堆叠结构中可以包括两个或更多个逻辑半导体管芯、以及一个、三个或更多个存储器半导体管芯。另外,图11示出了存储器半导体管芯1070和1080与逻辑半导体管芯1010竖直堆叠的非限制性示例。如下面将参考图13所述,除了逻辑半导体管芯1010之外的存储器半导体管芯1070和1080可以竖直堆叠,并且逻辑半导体管芯1010可以通过内插器和/或基底基板电连接到存储器半导体管芯1070和1080。
在实施例中,逻辑半导体管芯1010包括存储器接口MIF 1020和逻辑(例如,逻辑电路),以访问形成在存储器半导体管芯1070和1080中的存储器集成电路1071和1081。这种逻辑可以包括控制电路CTRL1030、全局缓冲器GBF 1040和数据转换逻辑DTL 1050。在实施例中,逻辑DTL 1050由二极管-晶体管逻辑来实现。
存储器接口1020可以通过互连设备12执行与诸如主机设备2000之类的外部设备的通信。例如,存储器接口1020可以与主机设备2000的主机接口(HIF)2110接口连接。主机设备2000可以包括半导体管芯2100,HIF 2110安装在该半导体管芯2100上。附加组件CR12120和CR22130(例如,处理器)可以安装在主机设备2000的半导体管芯2100上。控制电路1030可以控制堆叠存储器设备1000的整体操作。数据转换逻辑1050可以对与存储器半导体管芯1070和1080交换的数据或通过存储器接口1020交换的数据执行逻辑运算。例如,数据转换逻辑可以执行最大池化运算、修正线性单元(ReLU)运算、逐通道加法等。
存储器半导体管芯1070和1080可以分别包括存储器集成电路1071和1081。存储器半导体管芯1070和1080中的至少一个可以是包括计算电路300的计算半导体管芯1080。计算半导体管芯1080可以包括上述用于执行间接存储器预取的信息寄存器100和预取电路200。
图12的系统801与图11的系统800基本相同,并且省略重复的描述。参考图12,上述信息寄存器100、预取电路200和计算电路300可以包括在逻辑半导体管芯1010中。
存储器带宽和延迟是许多处理系统中的性能瓶颈。通过使用堆叠存储器设备可以增加存储器容量,在该堆叠存储器设备中多个半导体设备堆叠在存储器芯片的封装中。堆叠的半导体管芯可以通过使用穿硅通孔或穿基板通孔(TSV)而电连接。这种堆叠技术可以提高存储器容量并且还抑制带宽和延迟代价。外部设备对堆叠存储器设备的每次访问涉及堆叠半导体管芯之间的数据通信。在这种情况下,对于每次访问,设备间带宽和设备间延迟代价可能会发生两次。因此,当外部设备的任务需要对堆叠存储器设备进行多次访问时,设备间带宽和设备间延迟可能对系统的处理效率和功耗具有显著影响。
根据至少一个示例性实施例的堆叠存储器设备和系统可以通过高效地使用设置在逻辑半导体管芯或存储器半导体管芯中的信息寄存器、预取电路和计算电路,组合存储器密集型或数据密集型的数据处理和存储器访问,来减少延迟和功耗。
参考图11和图12描述了对信息寄存器100、预取电路200和计算电路300的设置的示例性实施例,但是本发明构思的示例性实施例不限于此。根据本发明构思的示例性实施例,信息寄存器100和预取电路200设置在存储器半导体管芯中,并且计算电路300设置在逻辑半导体管芯中。
图13和图14是示出了根据本发明构思的示例性实施例的堆叠存储器设备的封装结构的图。
参考图13,存储器芯片2001包括内插器ITP和堆叠在内插器ITP上的堆叠存储器设备。内插器ITP可以由电气接口来实现,该电气接口用于一个插座与另一插座之间的接口连接或连接到另一插座。堆叠存储器设备可以包括逻辑半导体管芯LSD和多个存储器半导体管芯MSD1~MSD4。
参考图14,存储器芯片2002包括基底基板BSUB和堆叠在基底基板BSUB上的堆叠存储器设备。堆叠存储器设备可以包括逻辑半导体管芯LSD和多个存储器半导体管芯MSD1~MSD4。
图13示出了除了逻辑半导体管芯LSD之外的存储器半导体管芯MSD1~MSD4竖直堆叠并且逻辑半导体管芯LSD通过内插器ITP或基底基板电连接到存储器半导体管芯MSD1~MSD4的结构。相反,图14示出了逻辑半导体管芯LSD与存储器半导体管芯MSD1~MSD4竖直堆叠的结构。
如上所述,存储器半导体管芯MSD1~MSD4中的至少一个可以包括上述信息寄存器IREG和预取电路PFC。尽管未示出,但是上述计算电路可以包括在存储器半导体管芯MSD1~MSD4中和/或逻辑半导体管芯LSD中。
基底基板BSUB可以与内插器ITP相同或包括内插器ITP。基底基板BSUB可以是印刷电路板(PCB)。诸如导电凸块BMP之类的外部连接元件可以形成在基底基板BSUB的下表面上,并且诸如导电凸块之类的内部连接元件可以形成在基底基板BSUB的上表面上。在图13的示例性实施例中,逻辑半导体管芯LSD和存储器半导体管芯MSD1~MSD4可以通过穿硅通孔电连接。可以使用树脂RSN来封装堆叠的半导体管芯LSD和MSD1~MSD4。
图15是示出了根据本发明构思的示例性实施例的堆叠存储器设备的示例结构的图。
参考图15,高带宽存储器(HBM)1100可以被配置为具有多个DRAM半导体管芯1120、1130、1140和1150的堆叠。堆叠结构的HBM 1100可以通过被称为通道的多个独立接口来优化。每个DRAM堆叠可以根据HBM标准支持多达八个通道。图15示出了包含四个DRAM半导体管芯1120、1130、1140和1150的示例堆叠,并且每个DRAM半导体管芯支持两个通道CHANNEL0和CHANNEL1。
每个通道提供对一组独立的DRAM存储体的访问。来自一个通道的请求不会访问附于其他通道的数据。通道是独立时控的,不需要同步。
HBM 1100还可以包括设置在堆叠结构的底部的接口管芯1110或逻辑管芯,以提供信号路由和其他功能。DRAM半导体管芯1120、1130、1140和1150的一些功能可以在接口管芯1110中实现。
DRAM半导体管芯1120、1130、1140和1150中的至少一个可以包括上述用于执行间接存储器预取的信息寄存器100和预取电路200以及用于PIM运算的计算电路300,如上所述。
图16是示出了根据本发明构思的示例性实施例的计算系统的框图。
参考图16,计算系统4000包括处理器4100、输入/输出集线器IOH 4200、输入/输出控制器集线器ICH 4300、至少一个存储器模块4400和图形卡4500。
处理器4100可以执行各种计算功能,诸如执行用于执行计算或任务的软件。例如,处理器4100可以是微处理器、中央处理单元(CPU)、数字信号处理器等。处理器4100可以包括用于控制存储器模块4400的操作的存储器控制器4110。存储器模块4400可以包括存储从存储器控制器4110提供的数据的多个存储器设备。存储器模块4400中的至少一个存储器设备可以包括上述用于执行间接存储器预取的信息寄存器100和预取电路200。在实施例中,处理器4100是主机设备的一部分。
输入/输出集线器4200可以管理处理器4100与诸如图形卡4500之类的设备之间的数据传送。在实施例中,输入/输出集线器4200由微芯片实现。图形卡4500可以控制用于显示图像的显示设备。输入/输出控制器集线器4300可以执行数据缓冲和接口仲裁,以高效地操作各种系统接口。图16中的组件可以耦合到各种接口,例如加速图形端口(AGP)接口、外围组件接口(PCI)、外围组件接口快速(PCIe)、通用串行总线(USB)端口、串行高级技术附件(SATA)端口、低引脚数(LPC)总线、串行外围接口(SPI)、通用输入/输出(GPIO)等。
如上所述,根据本发明构思的至少一个示例性实施例的存储器设备和系统可以通过基于从存储器控制器提供的间接存储器访问信息而执行间接存储器访问来增强存储器内预取的准确性和效率。另外,根据本发明构思的至少一个示例性实施例的存储器设备和系统可以通过并行化用于间接存储器访问的数据布置并且更有效地利用存储器设备内的带宽,来减少间接存储器访问的延迟并且提高存储器内预取的速度。此外,根据至少一个示例性实施例的存储器设备和系统可以通过使用存储器内预取执行存储器内处理操作来高效地执行稀疏数据运算。
本发明构思可以应用于存储器设备和包括存储器设备的系统。例如,本发明构思可以应用于诸如存储卡、固态驱动器(SSD)、嵌入式多媒体卡(eMMC)、移动电话、智能电话、个人数字助理(PDA)、便携式多媒体播放器(PMP)、数码相机、便携式摄像机、个人计算机(PC)、服务器计算机、工作站、笔记本计算机、数字TV、机顶盒、便携式游戏机、导航系统、可穿戴设备、物联网(IoT)设备、万物互联网(IoE)设备、电子书、虚拟现实(VR)设备、增强现实(AR)设备等的系统。
前述是对本发明构思的示例实施例的说明,且不应被解释为对其的限制。尽管已经描述了一些示例性实施例,但本领域技术人员将容易地理解,可以在示例性实施例中进行各种修改,而本质上不脱离本发明构思。

Claims (20)

1.一种存储器设备,包括:
存储器单元阵列,被配置为存储有效数据阵列、基阵列和目标数据阵列,所述有效数据阵列顺序地包括第一数据的元素中的有效元素,所述基阵列顺序地包括指示与所述有效元素对应的位置值的位置元素,所述目标数据阵列顺序地包括第二数据的与所述位置值对应的目标元素;
信息寄存器,被配置为存储包括所述目标数据阵列的起始地址和所述目标元素的单位大小的间接存储器访问信息;以及
预取电路,被配置为基于所述间接存储器访问信息,预取与从所述存储器单元阵列读取的所述位置元素对应的所述目标元素。
2.根据权利要求1所述的存储器设备,其中,所述间接存储器访问信息是从外部存储器控制器提供给所述存储器设备的。
3.根据权利要求1所述的存储器设备,其中,所述第一数据是稀疏矩阵,所述第二数据是向量。
4.根据权利要求1所述的存储器设备,其中,所述存储器单元阵列包括多个存储体,并且
其中,所述有效数据阵列、所述基阵列和所述目标数据阵列存储在所述多个存储体中的不同存储体中。
5.根据权利要求1所述的存储器设备,其中,所述预取电路包括:
算术电路,被配置为基于读取的位置元素、所述目标数据阵列的起始地址和所述目标元素的单位大小,计算与读取的位置元素对应的目标地址;
目标地址寄存器,被配置为存储由所述算术电路计算的所述目标地址;以及
目标数据寄存器,被配置为存储从所述存储器单元阵列的所述目标地址读取的所述目标元素。
6.根据权利要求5所述的存储器设备,其中,所述算术电路通过将所述单位大小乘以B(i)-1并将所述起始地址加到乘法的结果来计算所述目标地址中的第i个目标地址,其中,B(i)表示所述基阵列中的所述位置元素中的第i个位置元素,其中i是大于或等于1的自然数。
7.根据权利要求5所述的存储器设备,其中,所述算术电路包括:
NR个算术单元,被配置为基于从所述存储器单元阵列同时读取的读取数量NR个所述位置元素来并行提供NR个目标地址,其中,NR是大于1的自然数。
8.根据权利要求7所述的存储器设备,其中,当所述位置元素的总数是NT时,所述NR个算术单元通过重复执行NT/NR次地址计算来提供NT个目标地址,其中,NT是大于1的自然数。
9.根据权利要求5所述的存储器设备,其中,所述目标数据寄存器用静态随机存取存储器SRAM实现。
10.根据权利要求1所述的存储器设备,其中,所述间接存储器访问信息还包括所述基阵列的起始地址、所述位置元素的单位大小、所述位置元素的总数以及从所述存储器单元阵列同时读取的所述位置元素的读取数量。
11.根据权利要求1所述的存储器设备,还包括:
计算电路,被配置为基于所述第一数据和所述第二数据执行存储器内处理操作,以提供计算结果数据。
12.根据权利要求11所述的存储器设备,其中,所述第一数据是稀疏矩阵,所述第二数据是向量,并且
其中,所述存储器内处理操作执行稀疏矩阵向量乘法。
13.一种存储器设备,包括:
沿竖直方向堆叠的多个存储器半导体管芯,在所述多个存储器半导体管芯中形成存储器单元阵列,所述存储器单元阵列存储有效数据阵列、基阵列和目标数据阵列,所述有效数据阵列顺序地包括第一数据的元素中的有效元素,所述基阵列顺序地包括指示与所述有效元素对应的位置值的位置元素,所述目标数据阵列顺序地包括第二数据的与所述位置值对应的目标元素;
多个穿硅通孔,电连接所述多个存储器半导体管芯;
信息寄存器,被配置为存储包括所述目标数据阵列的起始地址和所述目标元素的单位大小的间接存储器访问信息;以及
预取电路,被配置为基于所述间接存储器访问信息预取与从所述存储器单元阵列读取的所述位置元素对应的所述目标元素。
14.根据权利要求13所述的存储器设备,其中,所述预取电路位于存储所述有效数据阵列、所述基阵列和所述目标数据阵列的所述存储器单元阵列所位于的所述存储器半导体管芯中。
15.根据权利要求13所述的存储器设备,还包括:
逻辑半导体管芯,包括用于控制对所述存储器单元阵列的访问的电路,
其中,所述预取电路形成在所述逻辑半导体管芯中。
16.根据权利要求13所述的存储器设备,其中,所述间接存储器访问信息是从外部存储器控制器提供给所述存储器设备的。
17.根据权利要求13所述的存储器设备,其中,所述预取电路基于从所述存储器单元阵列同时读取的NR个位置元素来并行提供NR个目标地址,其中,NR是大于1的自然数。
18.一种存储器设备,包括:
存储器单元阵列,被配置为存储有效数据阵列、基阵列和目标数据阵列,所述有效数据阵列顺序地包括第一数据的元素中的有效元素,所述基阵列顺序地包括指示与所述有效元素对应的位置值的位置元素,所述目标数据阵列顺序地包括第二数据的与所述位置值对应的目标元素;
随机存取存储器RAM;以及
控制器,被配置为从外部设备接收包括所述目标数据阵列的起始地址和所述目标元素的单位大小的间接存储器访问信息,
其中,所述控制器响应于接收到所述间接存储器访问信息而执行预取操作,其中,所述预取操作使用所述起始地址和所述单位大小来读取所述目标元素,并将读取的目标元素存储到所述RAM中。
19.根据权利要求18所述的存储器设备,其中,所述预取操作基于读取的位置元素、所述起始地址和所述单位大小来计算与读取的位置元素对应的目标地址,并使用计算的目标地址执行读取。
20.根据权利要求19所述的存储器设备,其中,所述控制器通过将所述单位大小乘以B(i)-1并将所述起始地址加到乘法的结果来计算所述目标地址中的第i个目标地址,其中,B(i)表示所述基阵列中的所述位置元素中的第i个位置元素,其中i是大于或等于1的自然数。
CN201910742115.0A 2018-10-08 2019-08-12 执行存储器内预取的存储器设备和包括存储器设备的系统 Pending CN111009268A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0119527 2018-10-08
KR1020180119527A KR102664213B1 (ko) 2018-10-08 인-메모리 프리페칭을 수행하는 메모리 장치 및 이를 포함하는 시스템

Publications (1)

Publication Number Publication Date
CN111009268A true CN111009268A (zh) 2020-04-14

Family

ID=67658594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910742115.0A Pending CN111009268A (zh) 2018-10-08 2019-08-12 执行存储器内预取的存储器设备和包括存储器设备的系统

Country Status (4)

Country Link
US (1) US11221953B2 (zh)
EP (1) EP3637265B1 (zh)
CN (1) CN111009268A (zh)
SG (1) SG10201908441VA (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113571109A (zh) * 2020-07-14 2021-10-29 台湾积体电路制造股份有限公司 存储器电路及其操作方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210357154A1 (en) * 2019-09-23 2021-11-18 SK Hynix Inc. Processing-in-memory (pim) devices
US20200135259A1 (en) * 2019-12-23 2020-04-30 Intel Corporation High bandwidth dram memory with wide prefetch
KR20210093127A (ko) * 2020-01-17 2021-07-27 에스케이하이닉스 주식회사 Aim 장치
US11900161B2 (en) * 2020-03-24 2024-02-13 Advanced Micro Devices, Inc. Memory allocation for processing-in-memory operations
KR20220049396A (ko) 2020-10-14 2022-04-21 삼성전자주식회사 간접 어드레싱을 위한 시스템, 장치 및 방법
US20220206685A1 (en) * 2020-12-31 2022-06-30 Advanced Micro Devices, Inc. Reusing remote registers in processing in memory
KR20220101518A (ko) * 2021-01-11 2022-07-19 에스케이하이닉스 주식회사 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치
CN115469800A (zh) 2021-06-10 2022-12-13 三星电子株式会社 数据处理系统以及用于访问异构存储器系统的方法
US20230205539A1 (en) * 2021-12-29 2023-06-29 Advanced Micro Devices, Inc. Iommu collocated resource manager
KR20240009812A (ko) * 2022-07-14 2024-01-23 삼성전자주식회사 프리페치 기능을 지원하는 스토리지 모듈 및 그것의 동작 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2625277B2 (ja) 1991-05-20 1997-07-02 富士通株式会社 メモリアクセス装置
US5964867A (en) 1997-11-26 1999-10-12 Digital Equipment Corporation Method for inserting memory prefetch operations based on measured latencies in a program optimizer
US7366882B2 (en) * 2001-05-10 2008-04-29 Zohair Sahraoui Address calculation unit for an object oriented processor having differentiation circuitry for selectively operating micro-instructions
US7734895B1 (en) 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US7383401B2 (en) * 2006-06-05 2008-06-03 Sun Microsystems, Inc. Method and system for identifying multi-block indirect memory access chains
US8209488B2 (en) 2008-02-01 2012-06-26 International Business Machines Corporation Techniques for prediction-based indirect data prefetching
US7539844B1 (en) 2008-06-24 2009-05-26 International Business Machines Corporation Prefetching indirect array accesses
US9201848B2 (en) * 2012-07-27 2015-12-01 The United States Of America As Represented By The Secretary Of The Air Force Floating point matrix multiplication co-processor
US20140181415A1 (en) 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Prefetching functionality on a logic die stacked with memory
US20150067273A1 (en) * 2013-08-30 2015-03-05 Microsoft Corporation Computation hardware with high-bandwidth memory interface
US9582422B2 (en) * 2014-12-24 2017-02-28 Intel Corporation Hardware prefetcher for indirect access patterns
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
US20170083338A1 (en) 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Prefetching associated with predicated load instructions
US20170091103A1 (en) * 2015-09-25 2017-03-30 Mikhail Smelyanskiy Instruction and Logic for Indirect Accesses

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113571109A (zh) * 2020-07-14 2021-10-29 台湾积体电路制造股份有限公司 存储器电路及其操作方法

Also Published As

Publication number Publication date
SG10201908441VA (en) 2020-05-28
EP3637265B1 (en) 2021-09-29
US20200110705A1 (en) 2020-04-09
US11221953B2 (en) 2022-01-11
KR20200039930A (ko) 2020-04-17
EP3637265A1 (en) 2020-04-15

Similar Documents

Publication Publication Date Title
EP3637265B1 (en) Memory device performing in-memory prefetching and system including the same
US11221762B2 (en) Common platform for one-level memory architecture and two-level memory architecture
US11468944B2 (en) Utilization of data stored in an edge section of an array
TWI761360B (zh) 位元組可定址快閃式記憶體模組及其儲存資料的方法
US11194579B2 (en) Memory device supporting skip calculation mode and method of operating the same
US20190212918A1 (en) Near-memory compute module
US11003596B2 (en) Multiple memory type memory module systems and methods
CN107068176B (zh) 半导体存储器设备及包括半导体存储器设备的存储器系统
US10867662B2 (en) Apparatuses and methods for subarray addressing
CN114153373A (zh) 用于执行存储器设备内的数据操作的存储器系统及其操作方法
CN114341802A (zh) 用于执行存储器内处理操作的方法及相关存储器装置和系统
KR101732841B1 (ko) 내장된 ecc 어드레스 맵핑
KR20200115114A (ko) 메모리에서 계산 동작들을 수행하기 위한 스케일링가능 아키텍처를 제공하는 기술들
US11281397B2 (en) Stacked memory device performing function-in-memory (FIM) operation and method of operating the same
KR20210113099A (ko) 조정 가능한 기능-인-메모리 컴퓨팅 시스템
KR102664213B1 (ko) 인-메모리 프리페칭을 수행하는 메모리 장치 및 이를 포함하는 시스템
US11281554B2 (en) System and method for in-memory computation
CN115114186A (zh) 用于多核架构的近数据加速的技术
US20230013611A1 (en) Memory device for performing in-memory processing
EP3964971A1 (en) Memory device performing configurable mode setting and method of operating the same

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