CN109426628A - 基于电阻开关存储器的加速器 - Google Patents
基于电阻开关存储器的加速器 Download PDFInfo
- Publication number
- CN109426628A CN109426628A CN201810929808.6A CN201810929808A CN109426628A CN 109426628 A CN109426628 A CN 109426628A CN 201810929808 A CN201810929808 A CN 201810929808A CN 109426628 A CN109426628 A CN 109426628A
- Authority
- CN
- China
- Prior art keywords
- memory
- resistance switch
- accelerator
- data
- processing unit
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 452
- 238000012545 processing Methods 0.000 claims abstract description 106
- 239000000872 buffer Substances 0.000 claims description 93
- 230000006870 function Effects 0.000 claims description 6
- 230000009471 action Effects 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims description 2
- 230000007704 transition Effects 0.000 claims description 2
- 230000005611 electricity Effects 0.000 claims 1
- 230000008859 change Effects 0.000 description 15
- 239000012782 phase change material Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- 238000005192 partition Methods 0.000 description 6
- 238000010438 heat treatment Methods 0.000 description 5
- 101100046663 Pseudomonas aeruginosa (strain ATCC 15692 / DSM 22644 / CIP 104116 / JCM 14847 / LMG 12228 / 1C / PRS 101 / PAO1) toxR gene Proteins 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000000034 method Methods 0.000 description 4
- 101150031750 regA gene Proteins 0.000 description 4
- 101150090336 regB gene Proteins 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 229910045601 alloy Inorganic materials 0.000 description 2
- 239000000956 alloy Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000002425 crystallisation Methods 0.000 description 2
- 230000008025 crystallization Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 101000682328 Bacillus subtilis (strain 168) 50S ribosomal protein L18 Proteins 0.000 description 1
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 229910052787 antimony Inorganic materials 0.000 description 1
- WATWJIUSRGPENY-UHFFFAOYSA-N antimony atom Chemical compound [Sb] WATWJIUSRGPENY-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 229910052732 germanium Inorganic materials 0.000 description 1
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical compound [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 229910052714 tellurium Inorganic materials 0.000 description 1
- PORWMNRCUJJQNO-UHFFFAOYSA-N tellurium atom Chemical compound [Te] PORWMNRCUJJQNO-UHFFFAOYSA-N 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10N—ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10N70/00—Solid-state devices without a potential-jump barrier or surface barrier, and specially adapted for rectifying, amplifying, oscillating or switching
- H10N70/20—Multistable switching devices, e.g. memristors
- H10N70/231—Multistable switching devices, e.g. memristors based on solid-state phase change, e.g. between amorphous and crystalline phases, Ovshinsky effect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0004—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10N—ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10N70/00—Solid-state devices without a potential-jump barrier or surface barrier, and specially adapted for rectifying, amplifying, oscillating or switching
- H10N70/801—Constructional details of multistable switching devices
Abstract
提供了一种基于电阻开关存储器的加速器,其被配置为连接到包括CPU和系统存储器的主机。电阻开关存储器模块包括存储器单元阵列,该存储器单元阵列包括多个电阻开关存储器单元,并存储从主机卸载的内核。加速器核包括多个处理单元,并且内核由多个处理单元中的目标处理单元执行。MCU管理根据目标处理单元对内核的执行而生成的存储器请求。存储器控制器连接到电阻开关存储器模块,并根据从MCU传递的存储器请求,允许根据存储器请求的数据在电阻开关存储器模块和目标处理单元之间移动。网络集成了加速器核、多个处理单元和存储器控制器。
Description
相关申请的交叉引用
本申请要求分别于2017年9月4日和2018年4月20日向韩国知识产权局提交的第10-2017-0112840号和第10-2018-100046378号韩国专利申请的优先权和权益,这两个专利申请的全部内容通过引用并入本文。
背景
(a)领域
所描述的技术总体上涉及基于电阻开关存储器的加速器。
(b)相关技术的描述
近年来,诸如图形处理单元(GPU)或集成众核(MIC)等基于多核的加速器通过使用成百上千个核来提高计算能力。
加速器可以通过并行方式处理比以往更多的数据,但是使用连接到主机的非易失性存储器(例如固态盘(SSD))来处理大量数据。
然而,加速器和非易失性存储器彼此不连接,并由不同的软件栈管理。因此,为了从非易失性存储器读取数据或将数据写入非易失性存储器,存在许多不必要的软件干预和数据移动/拷贝。与加速器性能相比,这些开销导致加速改善不显著,并且消耗大量能量。
概述
本发明的实施例提供了一种用于去除不必要的软件干预和数据移动/拷贝的基于电阻开关存储器的加速器。
根据本发明的实施例,提供了一种配置成连接到包括中央处理单元(CPU)和系统存储器的主机的基于电阻开关存储器的加速器。基于电阻开关存储器的加速器包括电阻开关存储器模块、加速器核心、存储器控制器单元(MCU)、存储器控制器和网络。电阻开关存储器模块包括包含多个电阻开关存储器单元的存储器单元阵列,并存储从主机卸载的内核。加速器核包括多个处理单元,并且内核由多个处理单元中的目标处理单元执行。MCU管理根据目标处理单元对内核的执行而生成的存储器请求。存储器控制器连接到电阻开关存储器模块,并根据从MCU传递的存储器请求,允许根据存储请求的数据在电阻开关存储器模块和目标处理单元之间移动。网络集成了加速器核、多个处理单元和存储器控制器。
根据存储器请求的数据可以在不借助主机的操作系统(OS)的情况下,在电阻开关存储器模块和目标处理单元之间移动。
目标处理单元可以通过存储器请求访问电阻开关存储器模块,而不修改现有的加载/存储指令。
MCU可以包括在除所述多个处理单元之外的处理单元中。
MCU可以包括在目标处理单元中。
电阻开关存储器模块还可以包括多个行数据缓冲器,所述多个行数据缓冲器包括第一行数据缓冲器和第二行数据缓冲器。多个电阻开关存储器单元可以被划分为包括第一分区和第二分区的多个分区。在这种情况下,存储器控制器可以并行地处理根据第一存储器请求的第一操作和根据第二存储器请求的第二操作,所述第一操作将第一数据从第一分区带到第一行数据缓冲器,而所述第二操作将已经从第二分区传递到第二行数据缓冲器的第二数据移动到与第二存储器请求相对应的目标处理单元。
电阻开关存储器模块还可以包括多个行地址缓冲器和多个行数据缓冲器,并且多个电阻开关存储器单元可以被划分成多个分区。在这种情况下,存储器控制器可以执行三阶段寻址。三阶段寻址可以包括:预活动阶段、活动阶段和读/写阶段,所述预活动阶段将用于根据存储器请求访问电阻开关存储器模块的、被至少分为高位地址和低位地址的行地址的高位地址存储到多个行地址缓冲器中的目标行地址缓冲器,活动阶段用于在读取的情况下,基于通过将低位地址与存储到目标行地址缓冲器的高位地址合并而构成的行地址,将来自存储器单元阵列的读数据带到多个行数据缓冲器中的目标行数据缓冲器,读/写阶段用于将来自目标行数据缓冲器的读数据传递到目标处理单元。
电阻开关存储器模块还可以包括覆盖窗口,该覆盖窗口包括一组控制寄存器和程序缓冲器。在写的情况下,当行地址在覆盖窗口的地址范围内时,写数据可以在活动阶段存储到程序缓冲器,并且存储到程序缓冲器的写数据可以在读/写阶段编程到存储器单元阵列。
所述多个分区可包括第一分区和第二分区,以及
在这种情况下,存储器控制器可以根据第一存储器请求对第一分区执行读/写阶段,同时根据第二存储器请求对第二分区执行预活动阶段和活动阶段。
存储器控制器可执行选择性擦除,以将对应于由于内核的执行而要被重写的地址的电阻开关存储器单元设置为重置状态。
存储器控制器可以在内核的执行之前执行选择性擦除。
MCU可以将存储到电阻开关存储器模块的内核的存储器地址存储到目标处理单元的高速缓存中作为引导地址,以用于内核的执行。
基于电阻开关存储器的加速器还可以包括控制目标处理单元的睡眠模式的功率睡眠控制器。在这种情况下,MCU可以在将内核的存储器地址存储到目标处理单元之前,使用功率睡眠控制器将目标处理单元置于睡眠模式中,并且在将内核的存储器地址存储到目标处理单元之后,使用功率睡眠控制器撤销目标处理单元。
目标处理单元可以包括L2高速缓存;连接到MCU、生成存储器请求并将存储器请求传递到MCU的第一片上存储器控制器;以及连接到L2高速缓存、并在L2高速缓存和电阻开关存储器模块之间移动数据的第二片上存储器控制器。
电阻开关存储器模块可以包括相变存储模块、电阻存储器模块或磁阻存储器模块。
根据本发明的另一实施例,提供了一种被配置为连接到包括CPU和系统存储器的主机的基于电阻开关存储器的加速器。基于电阻开关存储器的加速器包括电阻开关存储器模块、加速器核、MCU、存储器控制器和网络。电阻开关存储器模块存储从主机卸载的内核,并包括被划分为包括第一分区和第二分区的多个分区的多个电阻开关存储器单元,以及包括包含第一行数据缓冲器和第二行数据缓冲器的多个行数据缓冲器。加速器核包括多个处理单元,每个内核由多个处理单元中的对应的目标处理单元执行。MCU管理根据目标处理单元对每个内核的执行而生成的存储器请求。存储器控制器连接到电阻开关存储器模块,并且并行处理根据第一存储器请求的第一操作和根据第二存储器请求的第二操作,第一操作将第一数据从第一分区带到第一行数据缓冲器,而第二操作将第二数据从第二行数据缓冲器移动到与第二存储器请求相对应的目标处理单元;以及
网络集成了电阻开关存储器模块、加速器核和存储器控制器。
在存储器控制器将第一数据从第一分区带到第一行数据缓冲器之前,第二数据可能已经从第二分区传递到第二行数据缓冲器。
存储器控制器可以执行包括预活动阶段、活动阶段和读/写阶段的三阶段寻址。在这种情况下,可以在对第一数据执行预活动阶段和活动阶段的同时执行第二数据的读/写阶段。
根据本发明的又一实施例,提供了一种配置成连接到包括CPU和系统存储器的主机的基于电阻开关存储器的加速器。基于电阻开关存储器的加速器包括电阻开关存储器模块、加速器核、MCU、存储器控制器和网络。电阻开关存储器模块存储从主机卸载的内核,并包括包含多个电阻开关存储器单元的存储器单元阵列。加速器核包括多个处理单元,并且内核由多个处理单元中的目标处理单元执行。MCU管理根据目标处理单元对内核的执行而生成的存储器请求。存储器控制器连接到电阻开关存储器模块,允许根据存储器请求的数据根据从MCU传递的存储器请求在电阻开关存储器模块和目标处理单元之间移动,并且对预定数据进行编程,用于由于内核的执行而要被重写的存储器单元阵列的地址。网络集成了电阻开关存储器模块、加速器核和存储器控制器。
预定数据可以是用于将对应于地址的电阻开关存储器单元设置为重置状态的数据。
根据本发明的实施例,通过提供基于电阻开关存储器的加速器,可以去除不必要的软件干预和数据移动/拷贝。
附图说明
图1是根据本发明的实施例的计算设备的示意性框图。
图2示意性地示出了PRAM中的一个存储器单元。
图3示出了施加到图2中所示的存储器单元的电流。
图4示出了当图3中所示的电流被施加到图2中所示的存储器单元时的温度变化。
图5是根据本发明的实施例的基于PRAM的加速器中的PRAM模块的示意性框图。
图6示出了根据本发明的实施例的PRAM模块的存储器单元阵列中的分区方案的示例。
图7示意性地示出了根据本发明的实施例的PRAM模块中的半分区。
图8是示出根据本发明的实施例的基于PRAM的加速器的示意性框图。
图9是示出根据本发明的实施例的基于PRAM的加速器中的代理的示意性框图。
图10示出了根据本发明的实施例的基于PRAM的加速器中的三阶段寻址。
图11示出了根据本发明的实施例的基于PRAM的加速器的覆盖窗口。
图12和图13示出了根据本发明的实施例的基于PRAM的加速器的操作。
图14是示出根据本发明的实施例的基于PRAM的加速器的数据移动方法的流程图。
图15示出了传统计算设备的加速器上的数据移动。
图16示出了根据本发明的实施例的计算设备的基于PRAM的加速器上的数据移动。
图17示出了根据本发明的实施例的基于PRAM的加速器上的编程模型。
图18示出了根据本发明的实施例的基于PRAM的加速器中的读定时。
图19示出了根据本发明的实施例的基于PRAM的加速器中的写定时。
图20和图21示出了根据本发明的实施例的基于PRAM的加速器中的存储器请求交错。
图22示出了根据本发明的实施例的基于PRAM的加速器中的选择性擦除。
图23是根据本发明的实施例的基于PRAM的加速器中的存储器控制器的示意性框图。
具体实施方式
在下面的详细描述中,仅通过说明的方式示出和描述了本发明的某些实施例。如本领域技术人员将认识到的,可以以各种不同的方式修改所描述的实施例,所有这些都不脱离本发明的精神或范围。因此,附图和描述应被认为本质上是说明性的而非限制性的。在整个说明书中,相似的附图标记表示相似的元素。
图1是根据本发明的实施例的计算设备的示意性框图。图1示出了计算设备的示例,并且根据本发明的实施例的计算设备可以通过使用各种结构来实现。
参照图1,计算设备包括CPU 110、系统存储器120和基于电阻开关存储器的加速器130。
电阻开关存储器包括作为非易失性存储器的使用电阻介质(相变材料)的电阻率的相变存储器(PCM)、使用存储器设备的电阻的电阻存储器或磁阻存储器。尽管在下面的实施例中,PCM特别是相变随机存取存储器(PRAM)被描述为电阻开关存储器的示例,但是本发明的实施例不限于PCM(或PRAM),而是可以应用于电阻存储器,例如电阻随机存取存储器(RRAM)或磁阻存储器,例如磁阻随机存取存储器(MRAM),例如自旋传递矩MRAM(STT-MRAM)。
系统存储器120是计算设备的主存储器,并且可以是例如动态随机存取存储器(DRAM)。在基于PRAM的加速器130中使用的加速器是不同于通用CPU的补充数据处理设备,并且可以是用于以补充CPU的功能来进行数据处理或独立于CPU执行数据处理的计算机硬件。图形处理单元(GPU)或集成众核(MIC)设备可以是这种加速器的示例。
在一些实施例中,计算设备可以进一步包括用于将系统存储器120和基于PRAM的加速器130与CPU 110连接的存储器桥140。基于PRAM的加速器130可以连接到位于CPU侧的存储器桥140。例如,基于PRAM的加速器130可以经由PCIe(高速外围组件互连)接口连接到存储器桥140。存储器桥140可以是例如北桥或存储器控制器集线器(MCH)。
此外,存储器桥140可以连接到输入/输出(I/O)桥150。I/O桥150可以是例如南桥或I/O控制器集线器(ICH)。I/O桥150可以从用户输入设备(未示出)接收用户输入,并且经由存储器桥140将用户输入传递到CPU 110。
虽然传统加速器仅包括多个用于并行机制的处理单元,但是根据本发明的实施例的基于PRAM的加速器130是将对应于加速器核的多个处理单元131与电阻开关存储器模块132物理集成的加速器。如上所述,电阻开关存储器模块132被假设为PRAM模块132。这样,通过将加速器130与作为非易失性存储器的PRAM模块132集成,可以在不与存储设备交换数据的情况下执行加速器130的操作。
在一些实施例中,包括CPU 110、系统存储器120、存储器桥140和I/O桥150的系统可以被称为主机。
计算设备可以将内核卸载到基于PRAM的加速器130,这允许基于PRAM的加速器130直接执行内核。内核意味着可以在加速器130上执行的任何类型的功能或程序。例如,这些应用程序可以是将计算从主机卸载到基于PRAM的加速器130的应用程序。这些应用程序可以称为内核。因此,主机可以访问基于PRAM的加速器130,以卸载内核或处理数据的读/写。在这种情况下,基于PRAM的加速器130的处理单元可以在执行内核时直接访问基于PRAM的加速器130的PRAM模块132。因此,传统加速器从外部存储器读取数据或将数据写入外部存储器所需要的许多冗余存储器分配/释放和数据拷贝可以被去除。
接下来,描述包括在根据本发明的实施例的基于PRAM的加速器130中的PRAM模块132的示例。
图2示意性地示出了PRAM中的一个存储器单元,图3示出了施加到图2所示的存储器单元的电流,以及图4示出了当图3所示的电流施加到图2所示的存储器单元时的温度变化。
图2所示的存储器单元是示例性存储器单元,并且根据本发明的实施例的PRAM的存储器单元可以以各种形式实现。
参照图2,PRAM的存储器单元200包括相变元件210和开关元件220。开关元件220可以用多种元件实现,例如晶体管或二极管。相变元件210包括相变层211、形成在相变层211上方的上电极212和形成在相变层211下方的下电极213。例如,相变层210可以包括通常称为GST合金的锗(Ge)、锑(Sb)和碲(Te)的合金作为相变材料。
相变材料可以在具有相对高电阻率的非晶态和具有相对低电阻率的晶态之间切换。相变材料的状态可以由加热温度和加热时间确定。
再次参照图2,当电流施加到存储器单元200时,所施加的电流流过下电极213。当在短时间内向存储器单元200施加电流时,相变层211的邻近下电极213的部分被电流加热。相变层211的交叉阴影部分根据电流的加热廓线切换到结晶状态和非结晶状态之一。结晶状态称为置位状态,非晶状态称为重置状态。
参照图3和图4,当在短时间tRST期间向存储器单元200以高电流施加重置脉冲RESET时,相变层211被编程到重置状态。当相变层211的相变材料被施加的重置脉冲RESET加热时,如果相变材料的温度Tr达到熔点,则相变材料熔化,并且然后切换到非晶态。当在长于时间tRST的时间tSET期间向存储器单元200施加具有比重置脉冲RESET低的电流的置位脉冲SET时,相变层211被编程到置位状态。当相变材料被施加的置位电流SET加热时,如果相变材料的温度Ts达到低于熔点的结晶温度,则相变材料转变成结晶状态。由于当以比置位脉冲SET低的电流或比置位脉冲SET短的电流施加脉冲时,可以保持重置状态和置位状态,所以可以将数据编程到存储器单元200。
重置状态和置位状态可以分别设置为数据“1”和“0”,并且可以通过测量存储器单元200中的相变元件210的电阻率来感测数据。可选地,重置状态和置位状态可以分别设置为数据“0”和“1”。
因此,通过向存储器单元200施加读取脉冲READ,可以读取存储在存储器单元200中的数据。在非常短的时间tREAD内以低电流施加读取脉冲READ,使得存储器单元200的状态不改变。读取脉冲READ的电流可以低于置位脉冲SET的电流,并且读取脉冲READ的施加时间可以短于重置脉冲RESET的施加时间tRST。因为存储器单元200中的相变元件210的电阻率根据相变元件210的状态而不同,所以相变元件210的状态,即存储在存储器单元200中的数据,可以通过流向相变元件210的电流大小或相变元件210上的电压降来读取。
在一个实施例中,当施加读取脉冲READ时,可以通过存储器单元200处的电压来读取存储器单元200的状态。在这种情况下,由于存储器单元200的相变元件210在重置状态下具有相对高的电阻率,所以在相变元件210处感测的电压相对高的情况下,状态可以被确定为重置状态,而在相变元件210处感测的电压相对低的情况下,状态可以被确定为置位状态。在另一实施例中,当电压施加到存储器单元200时,存储器单元200的状态可由输出电流读取。在这种情况下,在相变元件210处感测的电流相对较低的情况下,状态可以被确定为重置状态,而在相变元件210处感测的电流相对较高的情况下,状态可以被确定为置位状态。
由于写入数据实际上是PRAM中的重置和设置处理的序列,所以写操作由于其重置脉冲具有较长施加时间而比读操作慢得多。
图5是根据本发明的实施例的基于PRAM的加速器中的PRAM模块的示意性框图。图5所示的PRAM模块可以是PRAM芯片或PRAM组。
参考图5,PRAM模块500包括存储器单元阵列510、行地址缓冲器520、行数据缓冲器530、行解码器540、感测放大器550和写入驱动器560。
存储器单元阵列510包括基本上在行方向上延伸的多条字线(未示出)、基本上在列方向上延伸的多条位线(未示出)、以及连接到字线和位线并以基本上矩阵的格式形成的多个存储器单元(未示出)。存储器单元可以是例如参考图2描述的存储器单元200。
行地址缓冲器520和行数据缓冲器530两者形成行缓冲器。为了解决写操作比读操作慢的异步延迟问题,提供了多个行缓冲器,即多个行地址缓冲器520和多个行数据缓冲器530。每个行缓冲器由行地址缓冲器520和行数据缓冲器530逻辑配对,并通过缓冲器地址进行选择。
行地址缓冲器520存储来自存储器控制器(未示出)的命令和地址(特别是行地址)。行数据缓冲器530存储来自存储器单元阵列510的数据。
在一些实施例中,PRAM模块500可采用非易失性存储器(NVM)接口来使用多个行缓冲器520和530。在一个实施例中,非易失性存储器接口可以是双数据速率(DDR)接口,例如LPDDR2-NVM(低功率双数据速率2非易失性存储器)接口。在这种情况下,行地址缓冲器520经由NVM接口接收行地址和存储体地址,并且行数据缓冲器530经由NVM接口输出数据。
行解码器540解码行地址以从存储器单元阵列510中的多个行中选择目标行。即,行解码器540从存储器单元阵列510的多个字线中选择用于读取数据或写入数据的目标字线。
在一些实施例中,从存储器控制器传递的行地址可分为高位地址和低位地址。在这种情况下,可以将高位地址传送到行地址缓冲器520,并且可以将低位地址直接传送到行解码器540。行解码器540可将容纳在行地址缓冲器520中的高位地址与直接传送的低位地址组合以选择目标行。
感测放大器550读取存储在存储器单元阵列510中的数据。感测放大器550可以通过多条位线从连接到由行解码器540选择的字线的多个存储器单元读取数据。写入驱动器560将输入数据写入存储器单元阵列510。写入驱动器560可通过多条位线将数据写入连接到由行解码器540选择的字线的多个存储器单元。
在一些实施例中,为了解决写操作比读操作慢的问题,PRAM模块500可以首先将输入数据存储到缓冲器,并且然后将存储的数据写入存储器单元阵列510。为此,PRAM模块500可以包括覆盖窗口570和580作为存储器映射寄存器。覆盖窗口可以包括覆盖窗口寄存器570和程序缓冲器580。在一个实施例中,关于写数据的信息(例如,第一数据地址和要编程的字节数)可以被写入寄存器570,并且然后写数据可以被存储到程序缓冲器580。接下来,当预定值被写入覆盖窗口寄存器570时,存储到程序缓冲器580的数据可以被写入存储器单元阵列510。在这种情况下,存储器控制器可以通过轮询覆盖窗口寄存器570来确定写操作是否完成。
图6示出了根据本发明的实施例的PRAM模块的存储器单元阵列中的分区方案的示例,且图7示意性地示出了根据本发明的实施例的PRAM模块中的半分区。
参照图6,在一些实施例中,存储器单元阵列510,例如PRAM组,可以被划分成多个分区PART0至PART15。在图6中示出了存储器单元阵列510通过在行方向上被分成两部分和在列方向上被分成八部分而被分成十六个分区PART0至PART15。多个行缓冲器520和530可以被连接到分区PART0至PART15。每个分区可以被分成两部分(以下称为“半分区”),以减少位线和字线的寄生电阻,并解决潜通路问题。例如,每个半分区可以执行128位并行I/O处理。在一些实施例中,PART0至PART15可共享读取电路,例如感测放大器(图5的550)和行解码器(图5的540)。
参照图7,在一些实施例中,每个半分区可以包括被称为瓦片(tile)的多个子阵列。在图7中示出,一个半分区包括64个瓦片Tile0到Tile63。
每个瓦片包括多个存储器单元,即连接到多个位线(例如,2048个位线)BL和多个字线(例如,4096个字线)WL的PRAM核。为了方便起见,在图7中示出了多个存储器单元中的一个存储器单元以及连接到该一个存储器单元的一个位线BL和一个字线WL。此外,形成存储器单元的相变元件和开关元件分别被示为电阻器和二极管。
本地列解码器(以下称为“LYDEC”)710可以连接到每个瓦片。LYDEC 710连接到对应的瓦片的多个位线BL。在一些实施例中,两个LYDEC 710可分别连接到对应的瓦片的两端。此外,可以在半分区中形成分别对应于多个瓦片的多个全局位线GBL。每个全局位线GBL可以连接到对应的瓦片的多个位线BL和全局列解码器(以下称为“GYDEC”)。在一些实施例中,LYDEC 710与GYDEC一起可用于选择对应的半分区的对应的瓦片中的位线BL。感测放大器(图5的550)可通过所选位线BL读取数据,或写入驱动器(图5的560)可通过所选位线BL写入数据。
子字线驱动器(以下称为“SWD”)720可以连接到每个瓦片以最大化并行度。全局字线GWL可以形成在半分区中,并且可以连接到主字线驱动器(以下称为“MWD”)730。在这种情况下,形成在半分区中的多个字线WL可以连接到全局字线GWL。在一些实施例中,如图7所示,连接到MWD 730的两个全局字线GWL可以形成在半分区中。这种方案称为双字线方案。在这种情况下,包括在半分区中的多个瓦片可以被分组为两个瓦片组,并且两个全局字线GWL可以分别对应于两个瓦片组。半分区内的所有SWD都连接到主字线驱动器(MWD)。此外,可以通过双字线方案将两个瓦片分组为块。在一些实施例中,SWD 720与MWD 730一起可用于驱动对应的瓦片中的字线WL。被驱动的字线WL可通过行解码器(图5的540)选择。
当PRAM模块500使用图6和图7中所示的分区时,PRAM模块500可以同时执行每个半分区64个I/O操作。因此,由于每个分区可以执行128位并行I/O操作,并且在图6和图7所示的分区中可以并行访问两个分区,因此PRAM模块500可以同时操纵256位数据。为此,感测放大器550和写入驱动器560可以位于连接到行缓冲器的存储体的前面。
接下来,参照图8至图13描述了根据本发明的实施例的基于PRAM的加速器。
图8是示出根据本发明的实施例的基于PRAM的加速器的示意性框图,而图9是示出根据本发明的实施例的基于PRAM的加速器中的代理的示意性框图。
参照图8,基于PRAM的加速器800包括加速器核810和PRAM子系统,并且PRAM子系统包括存储器控制器820和PRAM模块830。
加速器核810包括多个处理单元PE0至PEn,并且每个处理单元包括处理单元核和高速缓存。在一些实施例中,高速缓存可以包括L1高速缓存(一级高速缓存)和L2高速缓存(二级高速缓存),并且L1高速缓存可以包括L1指令(L1I)高速缓存和L1数据(L1D)高速缓存。
处理单元PE0至PEn可以根据它们的功能被分类为服务器PE0和代理PE1至PEn。大多数处理单元PE1到PEn被分配来处理主机提供的内核。这些处理单元PE1至PEn被称为代理。一个或几个处理单元PE0被分配来恢复和暂停代理上的内核执行,并且被称为服务器。服务器PE0可以管理代理PE至PEn请求的存储器业务。
在一些实施例中,由于服务器PE0管理代理PE1到PEn生成的存储器请求,所以服务器PE0可以由控制器而不是用作核的处理单元来实现。
在一些实施例中,服务器PE0可包括存储器控制器单元(MCU),其接管代理的高速缓存未命中(cache miss),特别是L2高速缓存未命中,并通过与存储器控制器820协作来管理相关联的PRAM访问。
在一些实施例中,如图9所示,代理可以包括处理单元811、高速缓存812a、812b和812c、高速缓存控制器813a、813b和813c以及片上存储器控制器814a和814b。
在一个实施例中,高速缓存可以包括L1I高速缓存812a、L1D高速缓存812b和L2高速缓存812c。在这种情况下,高速缓存控制器可以包括分别连接到L1I高速缓存812a、L1D高速缓存812b和L2高速缓存812c的L1I高速缓存控制器813a、L1D高速缓存控制器813b和L2高速缓存控制器813c。高速缓存控制器813a、813b和813c中的每一个可以确定请求是高速缓存812a、812b和812c中的相对应的一个中的高速缓存命中还是高速缓存未命中。L1I高速缓存812a和L1D高速缓存812b可以分别经由L1I高速缓存控制器813a和L1D高速缓存控制器813b连接到处理单元811,并且L2高速缓存812c可以经由连接到L1D高速缓存控制器813b的L2高速缓存控制器813c连接到处理单元811。例如,L1I高速缓存控制器813a可以经由128位总线连接到L1I高速缓存812a,L1D高速缓存控制器813b可以经由128位总线连接到L2高速缓存控制器813c,并且L2高速缓存控制器813c可以经由128位总线连接到L2高速缓存812c。
在一些实施例中,核811可以包括多个功能单元和通用寄存器。在一个实施例中,核811可以包括两组功能单元和两个通用寄存器regA和regB。例如,一组功能单元可以包括四个功能单元.M、.L、.S和.D。功能单元.M、.L、.S和.D和寄存器regA和regB可以通过取指令(IF)模块连接到L1I高速缓存812a。功能单元.D可执行与存储器操作相关的典型加载和存储(L/S)指令。例如,功能单元.D可以将数据从存储器加载到寄存器regA和regB,或者可以将来自寄存器regA和regB的结果存储到存储器。功能单元.M可以执行乘法,功能单元.S和.L可以执行算术、逻辑和分支函数的广义集合。
此外,L1D高速缓存控制器813b可以分别经由64位总线连接到核811,即两组功能单元,并且可以经由8个32位总线并行连接到L1D高速缓存812b。
在一个实施例中,片上存储器控制器可以连接到高速缓存控制器,特别是L2高速缓存控制器813c。片上存储器控制器可以包括分别连接到服务器PE0和存储器控制器820的片上存储器控制器814a和814b。例如,片上存储器控制器814a可以经由256位总线连接到L2高速缓存控制器813c,并且经由256位总线连接到服务器PE0。片上存储器控制器814b可以分别经由256位总线连接到L2高速缓存控制器813c和经由128位总线连接到两个存储器控制器820。
在一些实施例中,片上存储器控制器814a和814b可以是直接存储器访问(DMA)控制器。
在一个实施例中,当在L2高速缓存812c中发生高速缓存未命中时,L2高速缓存控制器813c可以通过片上存储器控制器814a生成存储器请求。存储器请求可以经由片上存储器控制器814a传递到服务器PE0。存储器控制器820根据存储器请求从PRAM模块830读取的数据可以经由片上存储器控制器814b和L2高速缓存控制器813c存储到L2高速缓存812c。这样,由片上存储器控制器814a生成的存储器请求通过服务器PE0,特别是通过服务器PE0的MCU,而被发布到PRAM子系统820和830,而目标数据可以被直接转发到连接到每个代理的L2高速缓存的片上存储器控制器814b。
虽然在图8中示出了处理单元PE0至PEn中的一个被分配给服务器,并且剩余的处理单元PE1至PEn被分配给代理,但是两个或更多个处理单元可以被分配给服务器。
在一些实施例中,处理单元PE1至PEn中的每一个可以包括MCU,而不是提供处理单元PE0作为服务器。在这种情况下,每个MCU可以管理对应的处理单元的存储器请求。
存储器控制器820经由信道(可称为总线)840连接到PRAM模块830。存储器控制器820从服务器接收存储器请求,并通过信道840将存储器请求传递到PRAM模块830。因此,存储器控制器820可以通过信道840向PRAM模块830传递存储器读/写命令和地址以及与PRAM模块830交换数据。
在一些实施例中,PRAM模块830可以采用NVM接口。在一个实施例中,NVM接口可以是DDR接口,例如LPDDR2-NVM接口。在PRAM模块830采用DDR接口的情况下,信道840可以是DDR信道,例如LPDDR信道。在一些实施例中,多个PRAM组(例如,十六个PRAM组)可共同连接到一个信道840。
在一些实施例中,可以提供多个存储器控制器820。在图8和图9中示出了提供两个存储器控制器820。在这种情况下,多个存储器控制器820分别连接到不同的信道840。
基于PRAM的加速器800还可以包括网络850,以用于将处理单元PE0至PEn连接到存储器控制器820,以集成处理单元PE0至PEn、存储器控制器820和PRAM模块830。在一些实施例中,网络850可以是用于p:q通信的交叉开关网(p和q是大于1的整数)。
在一些实施例中,基于PRAM的加速器800还可以包括用于与主机通信的接口模块860。接口模块860可以是例如用于PCIe接口的PCIe模块。主机可通过接口模块860与加速器核810(特别是加速器核810的服务器PE0)和存储器控制器820通信。为了通信,接口模块860也连接到网络850。
在一些实施例中,基于PRAM的加速器800还可以包括功率睡眠控制器(PSC)870。PSC 870可以根据服务器PE0的控制来控制代理PE1至PEn中的每一个的模式。服务器PE0可以使用PSC 870将代理PE1至PEn中的每个代理置于睡眠模式(其可以被称为空闲模式)中,或者将代理PE1至PEn中的每个代理撤销。因此,服务器PE0可以暂停或恢复代理PE1至PEn中的每一个代理的内核执行。
在一些实施例中,处理单元PE0至PEn中的每一个可以经由主端口和从端口连接到网络850,并且存储器控制器820可以经由主端口和从端口连接到网络850。在一个实施例中,接口模块860可以经由主端口和从端口连接到网络850,使得主机可以与服务器PE0和存储器控制器820通信。PSC 870可以经由主端口和从端口连接到网络850。
根据上述实施例,服务器PE0可以经由网络850接管代理PE1-PEn中的每个代理的高速缓存未命中,且然后通过与存储器控制器820协作来管理相关联的PRAM访问。服务器PE0可通过总线向存储器控制器820发送存储器读或写消息,并且然后,存储器控制器820可管理PRAM模块830上的事务。
在一些实施例中,在PRAM模块830采用DDR接口(例如LPDDR2-NVM接口)的情况下,存储器控制器820可以将服务器PE0的请求转换为LPDDR2-NVM事务。为此,存储器控制器820可执行三阶段寻址。
存储器地址,即要从存储器控制器820传递到PRAM模块830的行地址,可以被分为高位地址和低位地址。例如,当行地址使用(n+1)位时,高位地址可以使用高(n-m+1)位(a[n:m]),并且低位地址可以使用低(m-x)位(a[m-1:x))(n、m和x是大于零的整数)。
图10示出了根据本发明的实施例的基于PRAM的加速器中的三阶段寻址。
参照图10,在作为三阶段寻址的第一阶段的预活动阶段中,存储器控制器(图8的820)通过发送缓冲器地址(BA)选择信号来选择行地址缓冲器(RAB)520,并将与目标行相关联的行地址的高位地址(a[n,m])存储到目标RAB 520中。
在作为第二阶段的活动阶段,存储器控制器820向目标PRAM模块(图8的830)发送行地址的剩余部分,即低位地址(a[m-1,x)。传送到PRAM模块830的低位地址(a[m-1,x])可与从所选RAB 520检索的高位地址(a[n,m])合并以构成实际行地址。因此,目标PRAM模块830从存储器单元阵列510加载目标行数据,并将它们存储到行数据缓冲器(RDB)530,即与所选RAB 520相关联的RDB 530。例如,RPAM模块830可将行地址传送到目标行解码器(图5的540),且行解码器540可使用行地址从存储器单元阵列510中选择目标行。感测放大器550可将目标数据从目标行传递到目标RDB 530。
在活动阶段之后,可以通过读/写阶段命令来传送所选RDB 530内的特定数据位置(即,列地址)。例如,如果命令是读,则在作为最后阶段的读阶段,存储器控制器820使用缓冲器地址BA选择目标RDB 530,并使用列地址选择读数据的起始地址。因此,存储器控制器820可以读取和输出存储在RDB 530中的目标数据。目标数据可用于在接口时钟信号的每一下降沿和上升沿从指定RDB 530中拉出。
这样,存储器控制器820通过将行地址划分为高位地址和低位地址,将行地址传递到PRAM模块830,使得基于PRAM的加速器可以使用DDR接口(特别是LPDDR2-NVM接口)来实现。
在一些实施例中,如果目标行的高位地址已经存在于RAB 520中,则存储器控制器820可以跳过预活动阶段并直接启用活动阶段。在一些实施例中,如果目标行的数据在RDB530上准备好,则存储器控制器830可以跳过活动阶段。
例如,如果命令是写,则存储器控制器820可以将目标数据传递到由目标PRAM模块830提供的一组特殊寄存器和缓冲器。寄存器组和缓冲器可以是覆盖窗口寄存器(图5的570)和程序缓冲器(图5的580)。例如,行解码器540可以将高位地址和低位地址的合并的行地址传送到覆盖窗口寄存器570。然后,可以通过覆盖窗口寄存器570将目标数据存储在程序缓冲器580中。因此,服务器PE0或主机可以识别目标数据被写到PRAM模块830,从而可以解决写操作比读操作慢的问题。此外,由于存储在程序缓冲器580中的数据被编程到存储器单元阵列510,所以存储器控制器820可以通过轮询覆盖窗口寄存器570来确定对存储器单元阵列510的写操作是否实际完成。
这样,由于基于PRAM的加速器使用覆盖窗口寄存器570和程序缓冲器580执行写操作,所以可以解决PRAM模块中写操作比读操作慢的问题。
在一些实施例中,为了减少对PRAM模块830的访问次数,服务器PE0可以基于每个信道的预定字节(例如,每个信道512字节(每个存储体32字节))通过利用其L2高速缓存来发起存储器请求,并且通过使用跨不同存储体所有RDB 530来预取数据。
图11示出了根据本发明的实施例的基于PRAM的加速器的覆盖窗口。
参照图11,在一些实施例中,覆盖窗口,即覆盖窗口寄存器570和程序缓冲器580被映射到存储器单元阵列的地址空间,作为一组特殊的存储器映射寄存器。覆盖窗口寄存器570包括元信息571和一组控制寄存器572作为存储器映射寄存器组。元信息571可以包括覆盖窗口大小、设备ID、程序缓冲器偏移量和程序缓冲器大小,并且具有例如128字节。控制寄存器组572可以包括各种寄存器,例如命令代码寄存器572a、地址寄存器572b、多用途寄存器572c、执行寄存器572d和状态寄存器572e。
在一些实施例中,程序缓冲器580的地址可以被映射到覆盖窗口空间的预定位置,例如,覆盖窗口空间的末端。在一个实施例中,程序缓冲器580可以位于具有写驱动器560的分区的前面。在一个实施例中,作为覆盖窗口的一部分的程序缓冲器580可以在元信息571和控制寄存器572之后开始。
覆盖窗口570和580可具有可映射到存储器单元阵列510的地址空间的地址范围。例如,覆盖窗口570和580的地址范围可以通过覆盖窗口基址(OWBA)映射到存储器单元阵列510的地址空间。因此,在配置OWBA之后,存储器控制器可以通过三阶段寻址将数据写入程序缓冲器580。
每当主机需要将数据持久地编程到PRAM模块时,存储器控制器可通过更新命令来启动程序并执行覆盖窗口寄存器570。然后,PRAM模块可以自动从程序缓冲器580获取数据,并将数据存储到指定分区中,这基于存储在覆盖窗口的地址寄存器572b中的行地址。一旦程序开始,存储器控制器可经由覆盖窗口中的状态寄存器572e检查目标分区的进度。如果存在高数据局部性和长请求间隔,则覆盖窗口上的这些存储器操作可能是有用的,因为在将数据编程到目标分区时,覆盖窗口可以并行映射到其他地址。
覆盖窗口570和580的寄存器操纵可以通过遵循三阶段寻址接口来执行。因此,存储器控制器可适当地将进入请求转换成三阶段寻址操作。行缓冲器可以通过感测放大器550连接到目标存储器单元阵列的分区,但是与覆盖窗口570和580分离。
图12和图13示出了根据本发明的实施例的基于PRAM的加速器的操作,并且图14是示出了根据本发明的实施例的基于PRAM的加速器的数据移动方法的流程图。
参照图12和图14,主机向基于PRAM的加速器发出中断,例如PCIe中断。因此,来自主机的中断从接口模块860转发到基于PRAM的加速器内的服务器PE0(S1210)。然后,存储器控制器820通过接口模块860从主机侧存储器下载包括内核的数据,并将数据存储到PRAM模块830(S1220)。在一些实施例中,可以将数据下载到PRAM模块830的指定图像空间中。
一旦执行下载,服务器PE0将待执行的内核的存储器地址(即PRAM模块830的图像地址)作为引导地址存储到多个代理中的目标代理PE1的高速缓存中(S1240)。在一些实施例中,用于存储存储器地址的高速缓存可以是L2高速缓存。在一些实施例中,在存储内核的存储器地址之前,服务器PE0可以使用PSC 870将目标代理PE1置于睡眠模式(S1230)。
一旦存储了内核的存储器地址,目标代理PE1就基于存储在高速缓存中的存储器地址从PRAM模块830加载内核,并执行内核(S1260),因为存储器地址存储在高速缓存中作为引导地址。在一些实施例中,服务器PE0可以经由PSC 870撤销睡眠模式的目标代理PE1(S1250)。然后,当目标代理PE1唤醒时,其可以基于存储在高速缓存中的存储器地址从PRAM模块830加载内核并执行内核(S1260)。
参照图13和图14,在内核执行期间,如果代理PE1请求的数据命中高速缓存,例如L2高速缓存,则代理PE1可以使用存储在高速缓存中的数据。然而,在高速缓存未命中的情况下,代理PE1向服务器PE0(即服务器PE0的MCU)发出由高速缓存未命中产生的存储器请求(S1270)。然后,服务器PE0通过存储器控制器(图8的820)在代理PE1和PRAM模块830的行数据缓冲器(图5的530)或覆盖窗口(图5的570和580)之间移动数据(S1280和S1290)。在一些实施例中,服务器PE0可以通过存储器控制器820在代理PE1和PRAM模块830的行数据缓冲器530或覆盖窗口570和580之间发起DMA(S1280),使得数据可以在代理PE1和PRAM模块830之间移动(S1290)。
在一个实施例中,服务器PE0将存储器请求传递到PRAM模块830的存储器控制器820(S1280)。在一些实施例中,存储器控制器820可根据存储器请求通过将行地址划分为高位地址和低位地址来将用于访问PRAM模块830的行地址传递到PRAM模块830。存储器控制器820向代理PE1发送具有与存储器请求相对应的数据的响应(S1290)。存储器控制器820可根据存储器请求将数据从由PRAM模块830的行地址缓冲器(图5的520)选择的存储器单元阵列(图5的510)的目标行移动到行数据缓冲器(图5的530),并将移动到行数据缓冲器530的数据传递到代理PE1。在这种情况下,如果行数据缓冲器530上的数据就绪,则存储器控制器820可以跳过将数据从存储器单元阵列510移动到行数据缓冲器520。例如,存储器控制器820可以将从PRAM模块830读取的数据上传到代理PE1的L2高速缓存。这样,基于PRAM的加速器可以使用PRAM模块830的行缓冲器520和530将数据存储到代理PE1的L2高速缓存,而无需主存储器(图1的120)或计算设备的其他存储器的辅助。
此外,代理PE1可以向服务器PE0发出请求将数据写入PRAM模块830的存储器请求(S1270)。然后,服务器PE0可将存储器请求传递到PRAM模块830的存储器控制器820(S1280),并且存储器控制器820可将对应于存储器请求的数据从代理PE1写入PRAM模块830,并向代理PE1发送响应(S1290)。也就是说,存储器控制器820可使用行地址缓冲器520确定目标行地址,并根据存储器请求将代理PE1的写数据存储到PRAM模块830的程序缓冲器580,并将存储在程序缓冲器580中的数据写入到存储器单元阵列510的目标行。例如,存储器控制器820可以从代理的L2高速缓存中获取数据并将数据写入PRAM模块830。这样,基于PRAM的加速器可以从代理PE1的L2高速缓存加载数据,并使用PRAM模块830的行地址缓冲器520将数据写入PRAM模块830,而无需主存储器120或计算设备的其他存储器的辅助。
因此,服务器PE0可以通过存储器控制器820在代理PE1和PRAM模块830的行数据缓冲器530或程序缓冲器580之间传递数据。这样,每个处理单元可以通过现有的加载/存储指令直接访问基于PRAM的加速器内的存储设备核,即PRAM模块830。也就是说,PRAM模块访问可以在不修改现有指令集体系结构的情况下进行,并且不需要计算设备的操作系统(OS)的帮助。因此,主机存储设备和加速器之间的数据移动可以被删除。
图15示出了传统计算设备的加速器上的数据移动,而图16示出了根据本发明的实施例的计算设备的基于PRAM的加速器上的数据移动。
参照图15,应用程序响应于用户的应用程序执行,通过OS创建用于读和/或写的文件描述符(S1501)。然后,将虚拟存储器分配给系统存储器,例如用于从存储设备读取数据或将数据写入存储设备的DRAM(S1502)。此外,加速器的存储器被分配用于向加速器写入数据或从加速器读取数据(S1503)。
然后,应用程序通过OS请求对存储设备的文件读取(S1504),并且物理存储器被分配给DRAM(S1505)。通过OS向存储设备请求文件数据(S1506)。然后,文件数据从存储设备传递到DRAM的物理存储器,并且从DRAM的物理存储器拷贝到虚拟存储器(S1507和S1508)。然后,应用程序将文件数据从DRAM传递到加速器的存储器(S1509)。因此,加速器处理文件数据。接下来,将文件数据的结果数据从加速器的存储器传递到DRAM的虚拟存储器(S1510)。
然后,应用程序请求对存储设备的文件写入(S1511)。将物理存储器分配给DRAM,使得结果数据从虚拟存储器拷贝到DRAM的物理存储器(S1512和S1513),并且从DRAM的物理存储器传递到存储设备(S1514)。
接下来,应用程序释放分配给读和/或写的DRAM的虚拟存储器(S1515),并释放分配给写和/或读的加速器的存储器(S1516)。此外,应用程序删除为读和/或写创建的文件描述符(S1517)。
在图15中,步骤S1501至S1506、S1511、S1512和S1515至S1517表示系统操作,而步骤S1507至S1510、S1513和S1514表示数据移动。
如上所述,传统计算设备需要创建文件描述符并分配驻留在主机端存储器(DRAM)和加速器存储器中的多个存储空间。然后,可以执行对存储设备的输入/输出以及在主机侧存储器和加速器的存储器之间的数据移动。在这种情况下,CPU经常需要干预加速器和存储堆栈中涉及的多个用户软件和内核模块之间的数据传递。这些干预引入了用户/内核模式切换和冗余数据拷贝,这在存储设备和加速器之间移动数据时浪费了大量周期。但是,从用户的角度来看,CPU根本不需要访问主要用于目标加速器的输入(或输出)数据。
相反,根据本发明的实施例,如图16所示,内核由用户生成并存储在系统存储器(例如DRAM)中(S1610)。内核从DRAM传递到基于PRAM的加速器(S1620),并且内核的任务在基于PRAM的加速器内执行和完成(S1630)。
因此,根据本发明的实施例的基于PRAM的加速器统一了计算资源和存储资源,并且因此,用户可以在主机上构成内核,并且简单地将内核传递到目标加速器用于执行。因此,可以消除CPU、存储设备和加速器之间不必要的主机侧软件干预和存储器拷贝。此外,内核可以在没有DRAM辅助的情况下执行。
图17示出了根据本发明的实施例的关于基于PRAM的加速器的编程模型。
参照图17,用户通过packData接口[packData()]打包内核,并通过pushData接口[pushData()]将内核卸载到基于PRAM的加速器。packData接口[pushData()]的参数可以包括元数据(meta),其定义加速器的存储器地址以为多个应用程序(app0,app1,...,appN)和共享公共代码(shared)下载代码段。pushData接口打包内核以返回内核映像。pushData接口[pushData()]的参数可以包括指针,其指要下载的内核映像(img)的主机存储器地址和加速器的存储器地址(&pram_addr)。一旦内核映像到达加速器的存储器中,服务器可以开始经由unpackData接口[unpackData(img)]从内核映像提取元数据信息,并将代码段加载到元数据[load()]中描述的目标地址。加载接口[load()]的参数可以包括每个代码段(seg)和目标地址(&addr)。
解析内核映像后,服务器可以开始通过轮询接口[polling()]检查每个代理的可用性。轮询接口[polling()]的参数可以包括可用代理(available_pe)并返回空闲的代理。如果一个代理处于空闲状态,服务器可以通过睡眠接口[sleep(pe)]将该代理置于睡眠模式(即关断该代理),通过writeMemory接口[writeMemory()]将内核分配给代理,并通过启动接口[boot()]撤销(即重新启动)代理。writeMemory接口[writeMemory()]可以包括魔术地址(magic address)(MAGIC_ADDR)和引导条目地址(&app.boot_addr)作为参数,以用内核的引导条目地址(即,内核存储的地址)更新代理的魔术地址(即,引导地址)。因此,每个代理(pei)可以保持继续执行内核,直到完成数据处理(处理appi)。
接下来,参照图18和图19描述根据本发明的实施例的基于PRAM的加速器中的读定时和写定时。
图18示出了根据本发明的实施例的基于PRAM的加速器中的读定时,而图19示出了根据本发明的实施例的基于PRAM的加速器中的写定时。
如参考图10所述,用于读和写的行访问可以在三阶段寻址中的预活动阶段和活动阶段执行。参照图18和图19,基于PRAM的加速器处理目标行地址缓冲器(RAB),以在预活动阶段的预激活时间tRP内存储高位地址。tRP时间可以类似于传统DRAM中使用的DDR接口的行预充电时间。
活动阶段的活动时间tRCD可以通过行地址到列地址延迟来分类,行地址到列地址延迟可以包括目标行位置的地址合成时间(通过组合存储在目标RAB中的值和低位地址)和存储器操作时间。在写命令的情况下,目标PRAM模块可以检查在tRCD时间内,所合成的行地址是否在覆盖窗口的地址范围内。如果目标行地址与覆盖窗口的地址匹配,则与目标行地址相关联的目标数据可通过覆盖窗口的一组寄存器进行处理并存储到程序缓冲器中。否则,目标数据可通过指定的存储器单元阵列进行参照。在读命令的情况下,tRCD时间还可以包括从目标行获取行数据到目标行数据缓冲器(RDB)的时间。
参照图18,在读阶段,消耗了包括读延迟时钟(RL)和数据选通信号(DQS)输出访问时间(即,来自时钟的DQS访问时间(tDQSCK))的读前导周期。然后,在数据突发时间(tBURST)期间,通过参照嵌入在读阶段命令中的列地址,从RDB传送出数据。
参照图19,在写阶段,写阶段命令的存储器定时与读阶段命令的存储器定时相似。特别地,写阶段命令在写前导周期中呈现写延迟时钟(WL)而不是RL,并且在写前导周期中呈现到时钟边缘(tDQSS)的DQS锁存转变而不是tDQSCK。然后,在数据突发时间(tBURST)期间,通过参照嵌入在写阶段命令中的列地址,将数据从覆盖窗口RDB的程序缓冲器编程到指定的存储器单元阵列。写阶段的编程时序还可以包括写恢复周期(tWR),其是确保程序缓冲器中的所有数据被完全被编程到目标存储器单元阵列的时间。
在一些实施例中,对于同一PRAM模块中的不同分区的存储器请求可以是交错的。参照图20和图21描述这些实施例。
图20和图21示出了根据本发明的实施例的基于PRAM的加速器中的存储器请求交错。
为方便起见,在图20和图21中描述了并行处理两个读存储器请求req-0和req-1。在这种情况下,两个存储器请求req-0和req-1针对相同的PRAM模块中的不同分区。
在一些实施例中,为了减少PRAM模块(图8的830)和目标代理(图8的PE1)的L2高速缓存之间的数据移动延迟,存储器控制器(图8的820)可以通过知道PRAM模块830的多个分区和行缓冲器来调度存储器请求。PRAM模块830可以感测从分区到行数据缓冲器(RDB)(图5的530)的数据输出,同时并行地将数据从其他RDB 530传递到目标高速缓存。因此,传递数据的时间可以与访问分区的延迟重叠。
参照图20和图21,存储器控制器820发出存储器请求req-0的预活动命令(S2010)。假设刚好在发出存储器请求req-0的预活动命令之前,存储器请求req-1的预活动命令和活动命令已经被启动。当耗费与存储器请求req-0相关的预活动时间tRP和活动时间tRCD时(S2010、S2020和S2040),存储器控制器820发送用于具有不同RDB地址的不同目标分区的读阶段命令(S2030)。换句话说,在将高位地址存储到目标行地址缓冲器(RAB)之(S2010)后,存储器控制器820访问分区并将数据从分区带到目标RDB(S2020和S2040)时,存储器控制器820并行地发送用于不同目标分区的读阶段命令(S2030)。因为与存储器请求req-1相关联的RDB准备好传递数据,所以在存储器请求req-0的tRCD时间期间(S2020和S2040),存储器控制器820可以从RDB中取出存储器请求req-1的数据,并将它们放置在目标L2高速缓存上(S2030)。换句话说,可以顺序地消耗存储器请求req-1的RL时间、tDQSCK时间和tBURST时间(S2030)。一旦存储器请求req-1的所有数据已经被传递,当存储器控制器820正在访问另一分区时,存储器请求req-0的读阶段操作(RL、tDQSCK和tBURST)(S2050)。这样,存储器控制器可以使代理PE1看不见数据传递。
如上所述,由于可以并行处理存储器请求req-0和req-1,所以可以减少访问存储器的延迟。另一方面,参照图20和图21描述的交错可以与存储体交错不同,在此意义上,所有存储器请求在单个PRAM模块(例如,单个PRAM存储体)内交错。
在一些实施例中,基于PRAM的加速器可以执行选择性擦除以减少重写开销。参照图22描述这样的实施例。
图22示出了根据本发明的实施例的基于PRAM的加速器中的选择性擦除。
与其他NVM技术(例如闪存)类似,PRAM也可以支持对目标块执行预重置的擦除操作,这可以从重写中移除重置操作。在传统的擦除操作在PRAM模块中执行的情况下,由于擦除操作引起的延迟可能比不使用擦除操作的重写的延迟更长。擦除操作的这种长延迟可能阻止所有即将到来的请求。
因此,在一些实施例中,基于PRAM的加速器使用选择性擦除。由于重置操作是简单地将目标单元从编程状态切换到原始状态的过程,PRAM子系统可以选择性地对用于仅为将被重写的地址设置重置状态的数据(例如,数据“0”)进行编程。在一个实施例中,PRAM子系统的存储器控制器(图8的820)可以选择性地仅对在加载目标内核时将被重写的地址进行编程。在这种情况下,在目标内核的执行完成之前,存储器控制器820可以选择性地仅对在加载目标内核时将被重写的地址进行编程。
在一个实施例中,参考图22,当服务器PE0将目标代理PE1置于睡眠模式(S1230),将待执行内核的存储器地址存储到目标代理PE1的高速缓存中(S1240),并且撤销睡眠模式的目标代理PE1(S1250)时,存储器控制器820可以通过选择性地对用于设置仅由内核的执行重写的地址的重置状态的数据进行编程来执行选择性擦除(S2210)。在这种情况下,当内核被下载时,主机可以提供由于内核的执行而要被访问(即,重写)的地址。
通过在PRAM模块上实现选择性擦除并对其进行测试,确认选择性擦除可将重写延迟平均减少55%,并且在选择性擦除期间和擦除操作之后每次访问没有位错误。
图23是根据本发明的实施例的基于PRAM的加速器中的存储器控制器的示意性框图。
参照图23,存储器控制器2300包括转换器2310、存储器控制逻辑2320和数据路径2330。
转换器2310包括地址寄存器2311和模式寄存器2312,它们可以链接到服务器(图8的PE0),例如服务器PE0的MCU。地址寄存器2311和模式寄存器2312中的每一个可以是32位寄存器。因为数据不是直接写入存储器单元阵列,而是如上所述首先写入程序缓冲器,所以转换器2310使用地址寄存器2311和模式寄存器2312代表服务器PE0处理目标PRAM模块2340的覆盖窗口。
在一些实施例中,对于写操作,转换器2310可以首先将写操作代码存储到代码寄存器(图11的572a),该代码寄存器被映射到覆盖窗口基址(OWBA)的预定地址(例如0x80),以将存储器操作类型通知给目标PRAM模块2340通知。然后,转换器2310可在映射到预定地址(例如,OWBA+0x8B)的地址寄存器(图11的572b)处记录目标行地址,并通过映射到预定地址(例如,OWBA+0x93)的多用途寄存器(图11的572c)以字节为单位向目标PRAM模块2340通知数据突发大小。在覆盖窗口上设置这些寄存器572a、572b和572c之后,转换器2310可以开始将数据写入映射到预定地址(例如,OWBA+0x800)的程序缓冲器,并且然后通过配置映射到预定地址(例如,OWBA+0xC0)的执行寄存器(图11的572d)来执行写操作。转换器2310的这些操作可由相同存储器控制器中的存储器控制器逻辑2320管理。对于读操作,转换器2310可将读取转发到存储器控制器逻辑2320。
在一些实施例中,用于读和写的数据可通过16个数据引脚传送到目标PRAM模块2340(每周期4字节)。因为处理单元使用的加载和存储指令的操作数大小是32字节,所以用于加载(读)操作和存储(写)操作的256位寄存器可以在数据路径230中实现。
存储器控制逻辑2320可以包括命令生成器2321和初始化器2322。
初始化器2322可以通过启用自动初始化和校准管芯上阻抗任务来处理所有PRAM模块的启动过程。在启动过程之后,初始化器2322可以通过考虑I/O大小(例如,每个存储体32字节)来设置突发长度和覆盖窗口地址。
命令生成器2321可以处理三阶段寻址和事务(例如,LPDDR2事务)。命令生成器2321可以处理PRAM物理层(PHY)上的三阶段寻址和事务。由于单个操作在PRAM模块的接口中被分成预活动、活动和读/写阶段,所以命令生成器2321可以将转换器2310请求的所有存储器引用(memory reference)转换成三阶段寻址请求。具体而言,命令生成器2321可以将目标地址分解成高位地址、低位地址、行缓冲器地址和列地址。然后,这些分解的地址可以通过信号分组(例如,20位DDR信号分组)传送到PRAM模块。信号分组可以包括覆盖窗口或目标PRAM分区的操作类型(2到4位)、行缓冲器地址(2位)、目标地址(7到15位)。在预活动阶段,命令生成器2321可以通过传送缓冲器地址(BA)选择信号来选择目标行地址缓冲器,并将高位地址存储到所选择的行地址缓冲器。在活动阶段,命令生成器2321可以向目标PRAM模块2340发信号通知低位地址和缓冲器地址。因此,目标行可以被激活,并且由程序缓冲器存储的数据可以被传送和编程到目标行。在读取中,目标PRAM模块的内部感测放大器可将数据从目标行传递到与所选行地址缓冲器相关联的行数据缓冲器。
接下来,描述在真实硬件上实现根据本发明的实施例的基于PRAM的加速器之后测量的结果。
为了进行性能评估,实现了一种将3x纳米多分区PRAM插入28纳米技术FPGA逻辑单元的存储器控制器。基于PRAM的加速器由该存储器控制器构建,具有商业上可获得的硬件平台,该硬件平台在PCIe结构上采用并行嵌入式核。表1所示的参数用作参照图18和图19描述的读/写定时中的参数。在表1中,tCK表示时钟周期,并且BL4、BL8和BL16分别表示4、8和16的突发长度。
在这种情况下,当使用参照图20至图22描述的存储器请求交错和选择性擦除时,评估结果显示,基于PRAM的加速器与存储设备和硬件加速器之间使用对等DMA的高级异构计算方法相比,获得平均47%的更优的性能。
表1
尽管已经结合目前被认为是实际实施例的内容描述了本发明,但是应当理解,本发明不限于所公开的实施例,而是相反,本发明旨在覆盖包括在所附权利要求的精神和范围内的各种修改和等效布置。
Claims (20)
1.一种基于电阻开关存储器的加速器,所述基于电阻开关存储器的加速器被配置为连接到包括中央处理单元(CPU)和系统存储器的主机,所述基于电阻开关存储器的加速器包括:
电阻开关存储器模块,所述电阻开关存储器模块包括存储器单元阵列并存储从所述主机卸载的内核,所述存储器单元阵列包括多个电阻开关存储器单元;
加速器核,所述加速器核包括多个处理单元,所述内核由所述多个处理单元中的目标处理单元执行;
存储器控制器单元(MCU),所述存储器控制器单元管理根据所述目标处理单元对所述内核的执行而生成的存储器请求;
存储器控制器,所述存储器控制器连接到所述电阻开关存储器模块,并根据从所述MCU传递的所述存储器请求,允许根据所述存储器请求的数据在所述电阻开关存储器模块和所述目标处理单元之间移动;和
网络,所述网络集成了所述加速器核、所述多个处理单元和所述存储器控制器。
2.如权利要求1所述的基于电阻开关存储器的加速器,其中,在没有所述主机的操作系统(OS)辅助的情况下,根据所述存储器请求的所述数据在所述电阻开关存储器模块和所述目标处理单元之间移动。
3.如权利要求1所述的基于电阻开关存储器的加速器,其中,在不修改现有的加载/存储指令的情况下,所述目标处理单元通过所述存储器请求访问所述电阻开关存储器模块。
4.如权利要求1所述的基于电阻开关存储器的加速器,其中,所述MCU包括在除所述多个处理单元之外的处理单元中。
5.如权利要求1所述的基于电阻开关存储器的加速器,其中,所述MCU包括在所述目标处理单元中。
6.如权利要求1所述的基于电阻开关存储器的加速器,其中,所述电阻开关存储器模块还包括多个行数据缓冲器,所述多个行数据缓冲器包括第一行数据缓冲器和第二行数据缓冲器,
其中,所述多个电阻开关存储器单元被划分为包括第一分区和第二分区的多个分区,
其中,所述存储器控制器并行地处理根据第一存储器请求的第一操作和根据第二存储器请求的第二操作,所述第一操作将第一数据从所述第一分区带到所述第一行数据缓冲器,以及所述第二操作将已经从所述第二分区传递到所述第二行数据缓冲器的第二数据移动到与所述第二存储器请求相对应的所述目标处理单元。
7.如权利要求1所述的基于电阻开关存储器的加速器,其中,所述电阻开关存储器模块还包括:
多个行地址缓冲器;以及
多个行数据缓冲器,
其中,所述多个电阻开关存储器单元被划分成多个分区;
其中,所述存储器控制器执行三阶段寻址,并且
其中,所述三阶段寻址包括:
预活动阶段,所述预活动阶段将用于根据所述存储器请求访问所述电阻开关存储器模块的、至少被划分为高位地址和低位地址的行地址的所述高位地址,存储到所述多个行地址缓冲器中的目标行地址缓冲器;
活动阶段,所述活动阶段用于在读的情况下,基于通过将所述低位地址与存储到所述目标行地址缓冲器中的所述高位地址合并而构成的行地址,将来自所述存储器单元阵列的读数据带到所述多个行数据缓冲器中的目标行数据缓冲器;和
读/写阶段,所述读/写阶段用于将所述读数据从所述目标行数据缓冲器传递到所述目标处理单元。
8.如权利要求7所述的基于电阻开关存储器的加速器,其中,所述电阻开关存储器模块还包括覆盖窗口,所述覆盖窗口包括一组控制寄存器和程序缓冲器,以及
其中,在写的情况下,当所述行地址在所述覆盖窗口的地址范围内时,在所述活动阶段写数据被存储到所述程序缓冲器,并且在所述读/写阶段,将存储到所述程序缓冲器的所述写数据编程到所述存储器单元阵列。
9.如权利要求8所述的基于电阻开关存储器的加速器,其中,所述多个分区包括第一分区和第二分区,以及
其中,所述存储器控制器根据第一存储器请求对所述第一分区执行所述读/写阶段,同时根据第二存储器请求对所述第二分区执行所述预活动阶段和所述活动阶段。
10.如权利要求1所述的基于电阻开关存储器的加速器,其中,所述存储器控制器执行选择性擦除,以将对应于由于所述内核的执行而要被重写的地址的电阻开关存储器单元设置为重置状态。
11.如权利要求10所述的基于电阻开关存储器的加速器,其中,所述存储器控制器在所述内核的执行之前执行所述选择性擦除。
12.如权利要求1所述的基于电阻开关存储器的加速器,其中,所述MCU将存储到所述电阻开关存储器模块的所述内核的存储器地址存储到所述目标处理单元的高速缓存中作为引导地址,以用于所述内核的执行。
13.如权利要求12所述的基于电阻开关存储器的加速器,还包括功率睡眠控制器,所述功率睡眠控制器控制所述目标处理单元的睡眠模式,以及
其中,在将所述内核的存储器地址存储到所述目标处理单元之前,所述MCU使用所述功率睡眠控制器将所述目标处理单元置于所述睡眠模式中,并且在将所述内核的存储器地址存储到所述目标处理单元之后,使用所述功率睡眠控制器撤销所述目标处理单元。
14.如权利要求1所述的基于电阻开关存储器的加速器,其中,所述目标处理单元包括:
L2高速缓存;
第一片上存储器控制器,所述第一片上存储器控制器连接到所述MCU,生成所述存储器请求,并将所述存储器请求传递到所述MCU;和
第二片上存储器控制器,所述第二片上存储器控制器连接到所述L2高速缓存,并在所述L2高速缓存和所述电阻开关存储器模块之间移动所述数据。
15.如权利要求1所述的基于电阻开关存储器的加速器,其中,所述电阻开关存储器模块包括相变存储器模块、电阻存储器模块或磁阻存储器模块。
16.一种基于电阻开关存储器的加速器,所述基于电阻开关存储器的加速器被配置为连接到包括中央处理单元(CPU)和系统存储器的主机,所述基于电阻开关存储器的加速器包括:
电阻开关存储器模块,所述电阻开关存储器模块存储从所述主机卸载的内核,并且包括多个电阻开关存储器单元和多个行数据缓冲器,所述多个电阻开关存储器单元被划分为包括第一分区和第二分区的多个分区,所述多个行数据缓冲器包括第一行数据缓冲器和第二行数据缓冲器;
加速器核,所述加速器核包括多个处理单元,每个内核由所述多个处理单元中的相对应的目标处理单元执行;
存储器控制器单元(MCU),所述存储器控制器单元管理根据所述目标处理单元对每个内核的执行而生成的存储器请求;
存储器控制器,所述存储器控制器连接到所述电阻开关存储器模块,并且并行地处理根据第一存储器请求的第一操作和根据第二存储器请求的第二操作,所述第一操作将第一数据从所述第一分区带到所述第一行数据缓冲器,以及所述第二操作将第二数据从所述第二行数据缓冲器移动到与所述第二存储器请求相对应的所述目标处理单元;和
网络,所述网络集成了所述电阻开关存储器模块、所述加速器核和所述存储器控制器。
17.如权利要求16所述的基于电阻开关存储器的加速器,其中,在所述存储器控制器将所述第一数据从所述第一分区带到所述第一行数据缓冲器之前,所述第二数据已经从所述第二分区被传递到所述第二行数据缓冲器。
18.如权利要求16所述的基于电阻开关存储器的加速器,其中,所述存储器控制器执行包括预活动阶段、活动阶段和读/写阶段的三阶段寻址,以及
其中,对所述第一数据执行所述预活动阶段和所述活动阶段,同时对所述第二数据执行所述读/写阶段。
19.一种基于电阻开关存储器的加速器,所述基于电阻开关存储器的加速器被配置为连接到包括中央处理单元(CPU)和系统存储器的主机,所述基于电阻开关存储器的加速器包括:
电阻开关存储器模块,所述电阻开关存储器模块存储从主机卸载的内核,并包括存储器单元阵列,该存储器单元阵列包括多个电阻开关存储器单元;
加速器核,所述加速器核包括多个处理单元,所述内核由所述多个处理单元中的目标处理单元执行;
存储器控制器单元(MCU),所述存储器控制器单元管理根据所述目标处理单元对所述内核的执行而生成的存储器请求;
存储器控制器,所述存储器控制器连接到所述电阻开关存储器模块,根据从所述MCU传递的所述存储器请求,允许根据所述存储器请求的数据在所述电阻开关存储器模块和所述目标处理单元之间移动,并且,对用于由于所述内核的执行而要被重写的所述存储器单元阵列的地址的预定数据进行编程;
网络,所述网络集成了所述加速器核、所述多个处理单元和所述存储器控制器。
20.如权利要求19所述的基于电阻开关存储器的加速器,其中,所述预定数据是用于将对应于所述地址的电阻开关存储器单元设置为重置状态的数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0112840 | 2017-09-04 | ||
KR20170112840 | 2017-09-04 | ||
KR10-2018-0046378 | 2018-04-20 | ||
KR1020180046378A KR101944037B1 (ko) | 2017-09-04 | 2018-04-20 | 저항 변화 메모리 기반 가속기 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109426628A true CN109426628A (zh) | 2019-03-05 |
Family
ID=65277183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810929808.6A Pending CN109426628A (zh) | 2017-09-04 | 2018-08-14 | 基于电阻开关存储器的加速器 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR101944037B1 (zh) |
CN (1) | CN109426628A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490818A (zh) * | 2002-06-25 | 2004-04-21 | ��ʽ���������Ƽ� | 薄膜磁性体存储器及与之相关的半导体集成电路器件 |
US20110173155A1 (en) * | 2010-01-12 | 2011-07-14 | Nec Laboratories America, Inc. | Data aware scheduling on heterogeneous platforms |
CN102543179A (zh) * | 2010-11-16 | 2012-07-04 | 美光科技公司 | 串行接口存储器中的同时读取与写入存储器操作 |
US20130083048A1 (en) * | 2011-09-29 | 2013-04-04 | Advanced Micro Devices, Inc. | Integrated circuit with active memory and passive variable resistive memory with shared memory control logic and method of making same |
CN103309425A (zh) * | 2012-03-06 | 2013-09-18 | 富士施乐株式会社 | 图像形成装置和信息处理装置 |
US20140240327A1 (en) * | 2013-02-22 | 2014-08-28 | The Trustees Of Princeton University | Fine-grained cpu-gpu synchronization using full/empty bits |
US20150039712A1 (en) * | 2013-07-31 | 2015-02-05 | Oracle International Corporation | Direct access persistent memory shared storage |
CN104981789A (zh) * | 2013-03-15 | 2015-10-14 | 美光科技公司 | 用于可变延时存储器操作的设备及方法 |
US20160147467A1 (en) * | 2014-11-26 | 2016-05-26 | Advanced Micro Devices, Inc. | Reliable wear-leveling for non-volatile memory and method therefor |
US20170040054A1 (en) * | 2015-08-05 | 2017-02-09 | University Of Rochester | Resistive memory accelerator |
KR20170064259A (ko) * | 2015-12-01 | 2017-06-09 | 에스케이하이닉스 주식회사 | 메모리 및 이를 포함하는 전자 장치 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101097471B1 (ko) * | 2008-12-26 | 2011-12-23 | 주식회사 하이닉스반도체 | 비휘발성 메모리 장치 |
KR102131324B1 (ko) * | 2014-07-08 | 2020-07-07 | 삼성전자 주식회사 | 저항성 메모리 장치 및 저항성 메모리 장치의 동작방법 |
KR102402672B1 (ko) * | 2015-09-01 | 2022-05-26 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법 |
US10025741B2 (en) * | 2016-01-13 | 2018-07-17 | Samsung Electronics Co., Ltd. | System-on-chip, mobile terminal, and method for operating the system-on-chip |
-
2018
- 2018-04-20 KR KR1020180046378A patent/KR101944037B1/ko active IP Right Grant
- 2018-08-14 CN CN201810929808.6A patent/CN109426628A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490818A (zh) * | 2002-06-25 | 2004-04-21 | ��ʽ���������Ƽ� | 薄膜磁性体存储器及与之相关的半导体集成电路器件 |
US20110173155A1 (en) * | 2010-01-12 | 2011-07-14 | Nec Laboratories America, Inc. | Data aware scheduling on heterogeneous platforms |
CN102543179A (zh) * | 2010-11-16 | 2012-07-04 | 美光科技公司 | 串行接口存储器中的同时读取与写入存储器操作 |
US20130083048A1 (en) * | 2011-09-29 | 2013-04-04 | Advanced Micro Devices, Inc. | Integrated circuit with active memory and passive variable resistive memory with shared memory control logic and method of making same |
CN103309425A (zh) * | 2012-03-06 | 2013-09-18 | 富士施乐株式会社 | 图像形成装置和信息处理装置 |
US20140240327A1 (en) * | 2013-02-22 | 2014-08-28 | The Trustees Of Princeton University | Fine-grained cpu-gpu synchronization using full/empty bits |
CN104981789A (zh) * | 2013-03-15 | 2015-10-14 | 美光科技公司 | 用于可变延时存储器操作的设备及方法 |
US20150039712A1 (en) * | 2013-07-31 | 2015-02-05 | Oracle International Corporation | Direct access persistent memory shared storage |
US20160147467A1 (en) * | 2014-11-26 | 2016-05-26 | Advanced Micro Devices, Inc. | Reliable wear-leveling for non-volatile memory and method therefor |
US20170040054A1 (en) * | 2015-08-05 | 2017-02-09 | University Of Rochester | Resistive memory accelerator |
KR20170064259A (ko) * | 2015-12-01 | 2017-06-09 | 에스케이하이닉스 주식회사 | 메모리 및 이를 포함하는 전자 장치 |
Non-Patent Citations (1)
Title |
---|
JOE STAM: ""Maximizing GPU Efficiency in Extreme Throughput Applicaitons"" * |
Also Published As
Publication number | Publication date |
---|---|
KR101944037B1 (ko) | 2019-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10929059B2 (en) | Resistance switching memory-based accelerator | |
TWI783369B (zh) | 準揮發性系統級記憶體 | |
CN107967124B (zh) | 一种分布式持久性内存存储系统及方法 | |
CN105900069B (zh) | 对被存储在闪存存储器中的数据的推测性预取 | |
US9286212B2 (en) | Semiconductor device and method of controlling non-volatile memory device | |
CN103946826B (zh) | 用于在公共存储器通道上实现多级存储器层级的设备和方法 | |
CN104115129B (zh) | 用于从处理器到存储器子系统智能刷新数据的系统和方法 | |
EP2003649B1 (en) | Emulated combination memory device | |
CN103890688B (zh) | 一种flash‑dram混合存储器模块 | |
CN104011690B (zh) | 具有直接存取的多级存储器 | |
US10936198B2 (en) | Resistance switching memory-based coprocessor and computing device including the same | |
KR101936951B1 (ko) | 메모리 제어 장치 및 이를 포함하는 메모리 시스템 | |
CN108074593A (zh) | 用于非易失性存储器的接口 | |
US20180136877A1 (en) | Command control for multi-core non-volatile memory | |
CN109901791A (zh) | 信息处理装置以及信息处理装置的执行方法 | |
CN108431896A (zh) | 用于非易失性储存阵列操作的数据寄存器复制 | |
CN110447075A (zh) | 多内核管芯上存储器微控制器 | |
CN110322914A (zh) | 非易失性文件更新介质 | |
CN105677576B (zh) | 一种面向相变存储器的Bank控制器读写控制装置及方法 | |
KR20220050177A (ko) | 3단의 계층적 메모리 시스템 | |
Zhang et al. | DRAM-less: Hardware acceleration of data processing with new memory | |
CN109426628A (zh) | 基于电阻开关存储器的加速器 | |
CN106293491B (zh) | 写请求的处理方法和内存控制器 | |
Jung | Nearzero: An integration of phase change memory with multi-core coprocessor | |
US11775215B2 (en) | Storage device with host-controlled operation mode, electronic system including the same, 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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190305 |
|
WD01 | Invention patent application deemed withdrawn after publication |