CN109460369A - 基于闪存的加速器及包括该加速器的计算设备 - Google Patents
基于闪存的加速器及包括该加速器的计算设备 Download PDFInfo
- Publication number
- CN109460369A CN109460369A CN201810954424.XA CN201810954424A CN109460369A CN 109460369 A CN109460369 A CN 109460369A CN 201810954424 A CN201810954424 A CN 201810954424A CN 109460369 A CN109460369 A CN 109460369A
- Authority
- CN
- China
- Prior art keywords
- memory
- flash memory
- flash
- kernel
- processor
- 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 350
- 238000003860 storage Methods 0.000 claims abstract description 57
- 238000013507 mapping Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 23
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 238000004064 recycling Methods 0.000 claims description 7
- 210000003205 muscle Anatomy 0.000 claims description 4
- 238000000034 method Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 230000003068 static effect Effects 0.000 description 10
- QRYFCNPYGUORTK-UHFFFAOYSA-N 4-(1,3-benzothiazol-2-yldisulfanyl)morpholine Chemical compound C1COCCN1SSC1=NC2=CC=CC=C2S1 QRYFCNPYGUORTK-UHFFFAOYSA-N 0.000 description 8
- 239000010410 layer Substances 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000005538 encapsulation Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 3
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 239000011229 interlayer Substances 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 101150047251 knl-1 gene Proteins 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及基于闪存的加速器及包括该加速器的计算设备。提供了一种被配置为连接到包括CPU和系统存储器的主机的基于闪存的加速器。多个处理器执行从主机卸载的多个内核。存储器系统包括用于将每个内核的数据段映射到闪存存储器的第一存储器。监督者处理器基于第一消息,将由第一内核的数据段指向的第一存储器的区域映射到闪存存储器的区域,以允许第一数据在第一存储器的区域和闪存存储器的区域之间移动,第一消息根据由多个处理器中的第一处理器对第一内核的执行被传递。网络集成了闪存主干、存储器系统、多个处理器和监督者处理器。
Description
相关申请的交叉引用
本申请要求分别于2017年9月6日和2018年4月20日向韩国知识产权局提交的第10-2017-0114029号和第10-2018-0046379号的韩国专利申请的优先权和权益,这两个专利申请的全部内容通过引用并入本文。
背景
(a)领域
所描述的技术涉及基于闪存的加速器及包括该加速器的计算设备。
(b)相关技术的描述
在过去几年中,异构计算在广泛的数据处理应用中经历了显著的性能改进。这通过结合许多不同的协处理器(诸如图形处理单元(GPU)和集成众核(MIC))是可能实现的。这些基于众核的加速器可以通过使用成百上千个硬件线程来处理从主机卸载的程序,而这些硬件线程又可以表现出比中央处理单元(CPU)好几个数量级的性能。
加速器可以处理比它们之前曾经处理的数据更多的数据,并且预期这样的数据的量将增加。然而,加速器采用大小与主存储器相比相对较小的内部存储器。因此,加速器使用与主机连接的非易失性存储器(例如固态盘(SSD))来处理大数据集。
然而,加速器和非易失性存储器彼此完全断开连接且由不同的软件栈管理。因此,在用户空间和内核空间之间存在很多冗余的存储器分配/释放和数据拷贝,以便从非易失性存储器读取数据或将数据写入非易失性存储器。另外,由于内核模块不能直接访问用户空间存储器,因此在内核空间和用户空间之间的存储器管理和数据拷贝开销是不可避免的。此外,内核模式和用户模式切换开销连同数据拷贝同样带来数据移动的长延迟。相比于加速器的性能,这些开销导致加速改进不明显。
概述
本发明的实施例提供了一种能够执行不同的内核的基于闪存的加速器和包括该加速器的计算设备。
根据本发明的实施例,提供了一种被配置为连接到包括CPU和系统存储器的主机的基于闪存的加速器。该基于闪存的加速器包括:闪存主干,其包括闪存存储器和闪存控制器;多个处理器,其执行从主机卸载的多个内核;存储器系统;监督者(supervisor)处理器;以及网络。存储器系统包括用于将每个内核的数据段映射到闪存存储器的第一存储器。监督者处理器基于第一消息,将由第一内核的数据段指向的第一存储器的区域映射到闪存存储器的区域,以允许第一数据在第一存储器的区域和闪存存储器的区域之间移动,所述第一消息根据由多个处理器中的第一处理器对第一内核的执行被传递的。网络集成了闪存主干、存储器系统、多个处理器和监督者处理器。
第一数据可以在第一存储器和闪存存储器之间移动,而无需主机的操作系统(OS)的帮助。
第一数据可以在第一存储器和闪存存储器之间移动,而不修改现有计算设备中使用的指令集架构。
监督者处理器可将指示闪存存储器的区域的存储器请求传递到闪存控制器,且闪存控制器可根据存储器请求在第一存储器的区域与闪存存储器的区域之间移动第一数据。
第一处理器可以通过存储器请求访问闪存主干,而不修改现有的加载/存储指令。
当第一内核从闪存存储器读取第一数据时,第一消息可以包括指向第一内核的数据段的指针和基于字或字节的地址,并且监督者处理器可以将基于字或字节的地址转换为闪存存储器中的物理地址。存储器系统还可以包括第二存储器,该第二存储器存储用于将基于字或字节的地址转换成物理地址的映射信息。
映射信息可以包括对应于基于字或字节的地址的逻辑页组号和对应于物理地址的物理页组号之间的映射信息。
当基于字或字节的地址的范围与另一内核用于写入的地址的范围重叠时,监督者处理器可以阻止对第一消息的处理。
多个处理器中的第二处理器可以根据对第二内核的执行向监督者处理器传递用于将第二数据写入闪存存储器的第二消息,并且第二消息可以包括指向第二内核的数据段的指针。监督者处理器可以为第二消息分配闪存存储器的新区域,以允许第二数据从由第二内核的数据段指向的第一存储器的区域移动到闪存存储器的新区域。
监督者处理器可以传递指示闪存存储器的新区域的存储器请求,且闪存控制器可根据存储器请求将第二数据从由指向第二内核的数据段的指针所指向的第一存储器的区域传递到闪存存储器的新区域。
监督者处理器可基于与闪存存储器的新区域对应的物理地址和包含在第二消息中的基于字或字节的地址来更新映射信息。
当包括在第二消息中的基于字或字节的地址的范围与另一内核用于读取的地址的范围重叠时,监督者处理器可以阻止对第二消息的处理。
监督者处理器可通过增加先前写入中使用的物理页组号来分配对应于新区域的物理页组号。
基于闪存的加速器还可以包括存储处理器。在这种情况下,当闪存存储器中没有可用的物理页组号时,监督者处理器可以向存储处理器传递用于回收物理块的请求,以分配与新区域相对应的物理页组号。存储处理器可以通过在闪存存储器的空间中选择牺牲块来回收物理块。
存储处理器可以记录第二存储器的快照。
根据本发明的另一实施例,提供了包括上述基于闪存的加速器、主机和连接基于闪存的加速器和主机的接口的计算设备。
根据本发明的又一实施例,提供了一种被配置为连接到包括CPU和系统存储器的主机的基于闪存的加速器。基于闪存的加速器包括:闪存主干,其包括闪存存储器和闪存控制器;多个处理器,其执行从主机卸载的多个内核;存储器系统;监督者处理器;以及网络。该存储器系统包括:第一存储器,其用于将每个内核的数据段映射到闪存存储器;以及第二存储器,其存储映射信息,所述映射信息用于将映射到由数据段指向的第一存储器的区域的基于字或字节的地址转换为闪存存储器中的物理地址。当根据每个内核的执行从闪存存储器中读取读数据时,监督者处理器可以基于映射信息将基于字或字节的地址转换成闪存存储器的物理地址,并将存储器请求传递到闪存控制器,以允许读数据从闪存存储器移动到第一存储器的区域。网络集成了闪存主干、存储器系统、多个处理器和监督者处理器。
读数据可以在闪存存储器和第一存储器之间移动,而无需主机的OS的帮助。
读数据可以在闪存存储器和第一存储器之间移动,而不修改现有计算设备中使用的指令集架构。
多个处理器中的每一个处理器可以通过存储器请求访问闪存主干,而不修改现有的加载/存储指令。
根据本发明的实施例,通过将多个处理器与闪存存储器物理集成以实施基于闪存的加速器,可以降低由于数据拷贝/移动引起的开销。此外,通过将多个处理器与闪存存储器集成,基于闪存的加速器可以执行不同的内核,而无需主机的OS帮助,并且处理器可以在内核的执行时直接访问闪存存储器。
附图说明
图1是根据本发明的实施例的计算设备的示意性方框图。
图2示出了现有计算设备中的物理数据路径。
图3示出了现有计算设备中的软件栈。
图4示出了现有计算设备的加速器中的内核执行模型。
图5是根据本发明的实施例的基于闪存的加速器的示意性方框图。
图6是在根据本发明的实施例的基于闪存的加速器中的LWP的示意性方框图。
图7示出了在根据本发明的实施例的基于闪存的加速器中包括在一个应用程序中的多核执行。
图8示出了在根据本发明实施例的基于闪存的加速器中包括在多个应用程序中的多核执行。
图9是示出在根据本发明的实施例的基于闪存的加速器中的内核卸载方法的流程图。
图10示出了在根据本发明的实施例的基于闪存的加速器中的读取操作。
图11示出了在根据本发明的实施例的基于闪存的加速器中的写入操作。
图12示出了两个应用程序的示例。
图13示出了静态内核间调度的示例。
图14示出了动态内核间调度的示例。
图15示出了内核的示例。
图16示出了两个应用程序的另一个示例。
图17示出了有序内核内调度的示例。
图18示出了无序内核内调度的示例。
图19示出了多应用程序执行链。
具体实施方式
在以下详细描述中,简单地通过说明的方式,只示出和描述了本发明的某些实施例。本领域的技术人员将会认识到,在全都不偏离本发明的精神或范围的情况下,所描述的实施例可以以各种不同的方式进行修改。因此,附图和描述被视为本质上是说明性的而不是限制性的。在整个说明书中,类似的参考标号表示类似的元素。
图1是根据本发明的实施例的计算设备的示意性方框图。图1示出了计算设备的示例,并且根据本发明的实施例的计算设备可以通过使用各种结构来实现。
参照图1,根据本发明实施例的计算设备包括CPU 110、CPU侧存储器120和基于闪存的加速器130。加速器130是与通用CPU不同的补充数据处理设备,并且可以是用于通过补充CPU的功能来执行数据处理或者独立于CPU来执行数据处理的计算机硬件。加速器130可以是基于众核的加速器,并且图形处理单元(GPU)或集成众核(MIC)设备是加速器130的一个示例。
计算设备还可以包括用于将存储器120和加速器130与CPU 110连接的北桥140。加速器130可以连接至位于CPU侧的北桥140。例如,加速器130可以经由PCIe(高速外围组件互连)链路连接至北桥140。北桥140也可以称为存储器控制器集线器(MCH)。
虽然传统的加速器仅包括用于并行机制的多个处理器,但是根据本发明的实施例的加速器130是将与加速器核相对应的多个处理器131与闪存存储器132物理地集成的基于闪存的加速器。
在一些实施例中,加速器130的每个处理器可以是轻量级处理器(LWP)。在一个实施例中,LWP可以是通过高速网络连接的低功率处理器。在这种情况下,LWP可以通过高速网络与诸如加速器控制器和闪存存储器的其他内部资源进行通信。下文中,为了方便起见,加速器130的每个处理器被描述为LWP。
在一些实施例中,包括CPU 110和存储器120的系统可以被称为主机。
计算设备将各种应用程序卸载到加速器130,这允许加速器130直接执行应用程序的内核。因此,主机可以访问加速器130,以卸载内核或者处理数据的读取/写入。在这种情况下,加速器130的LWP在执行内核时能够直接访问闪存存储器。因此,可以去除由传统加速器从非易失性存储器读取数据或者将数据写入非易失性存储器所需要的很多冗余的存储器分配/释放以及数据拷贝。
首先,参照图2至图4描述现有计算设备的问题。
图2示出了现有计算设备中的物理数据路径,图3示出了现有计算设备中的软件栈,而图4示出了现有计算设备的加速器中的内核执行模型。
参照图2,在加速器26需要处理大量数据的情况下,CPU 21生成I/O请求,并通过连接到北桥22的I/O控制器23将其发送到SSD 24(S21)。SSD 24的控制器然后将数据从闪存存储器传递到内部DRAM,并且主机控制器通过存储接口将数据从SSD 24的内部DRAM移动到主机侧DRAM 25(S22)。在此期间,数据能够被重构并且被编列为加速器26能够识别的对象的形式。最后,CPU 21通过PCIe接口将数据从主机侧DRAM 25传递到加速器26的内部DRAM 26a(S23)。此时,加速器26的所有内核执行仍然停滞不前,因为输入数据正在进行传递,并且还没有准备好进行处理。一旦数据被成功下载到加速器26的DRAM 26a,加速器26的嵌入式多核处理器(EMP)26b开始处理数据,并且结果以与输入数据加载过程相反的顺序被传送到SSD 24。
在这种情况下,在加速器26开始实际处理数据之前,数据跨越不同物理接口边界的移动施加了长的延迟的限制,并且导致能源浪费,这是产生冗余存储器拷贝所导致的。此外,物理数据路径会恶化内核执行的并行度。例如,由于加速器26的内部DRAM 26a的容量限制,单个应用程序任务不得不被分割成多个内核,进而串行化执行,并且因此恶化并行度。
用于现有计算的软件栈分别存在用于加速器38和SSD 35。参照图3,主机采用加速器驱动器(即,设备驱动器)37和运行时间库36作为加速器38的软件栈,并且采用闪存固件34、主机块适配器(HBA)驱动器33、文件系统32和I/O运行时间库31作为软件栈,以将SSD 35识别为存储设备。加速器运行时间库36和I/O运行时间库31被提供在用户空间上,并且提供不同的接口组,这些接口组允许用户应用程序30适当地服务文件或卸载数据处理。设置在内核空间上的加速器驱动器37和HBA驱动器33参与在设备侧DRAM(加速器侧或SSD侧DRAM)和主机侧DRAM之间传递数据。因此,用户应用程序30首先通过I/O运行时间库31向SSD 35请求数据(S31),并且然后通过加速器运行时间库36将数据写入加速器38(S33)。该活动导致在主机侧DRAM内拷贝多项数据(S32)。此外,当设置在内核空间上的文件系统32和加速器驱动器37从应用程序30接收数据时,来自用户缓冲器的所有数据被拷贝到OS内核缓冲器,这在主机侧DRAM内造成了额外的存储器拷贝(S32)。出现该问题是因为OS内核模块不能直接访问用户存储器空间,因为不能保证当前的OS内核模块正在I/O请求已被启动的进程中执行。除了在主机侧DRAM中的这些不必要的数据拷贝之外,离散软件栈还增加了数据移动延迟并消耗能量,因为它们在运行时间库和OS内核驱动器之间强制执行许多用户/内核模式切换。
参照图4,内核执行模型可以实施为包括序言(prologue)、主体(body)和结尾(epilogue)的三种状态。在序言中,数据处理应用程序打开文件[fopen()]并为SSD和加速器分配存储资源[Malloc()、Acc-Malloc()]。在主体中,数据处理应用程序迭代读取文件的一部分[fread()]的代码段,将其传递到加速器[Acc-Memcpy()],执行内核[Acc-kernel()],从加速器[Acc-Memcpy()]获取结果,并将它们写回到SSD[fwrite()]。在结尾部分,一旦主体循环的执行完成,数据处理应用程序通过释放所有文件和存储器资源[free()、Acc-Free()]来结束[fcbloose()]。
在这种情况下,诸如fopen()、malloc()、fread()、fwrite()、free()和fclose()的代码可以通过I/O运行时间执行,并且诸如Acc-Malloc()、Acc-Memcpy()、Acc-kernel()和Acc-Free()的代码可以通过加速器运行时间执行。
在这个内核执行模型中,应用程序的文件访问通过不同的软件运行时间库和堆栈,这又会在计算开始之前显著增加开销,并降低系统性能。此外,加速器的小存储器大小会强制单个数据处理任务分割成多个功能,这些功能只能由加速器以串行顺序执行。因此,并行度会被恶化。
接下来,参考图5和图6描述根据本发明的实施例的加速器。
图5是根据本发明的实施例的基于闪存的加速器的示意性方框图,并且图6是根据本发明的实施例的基于闪存的加速器中的LWP的示意性方框图。
参照图5,基于闪存的加速器300包括多个LWP(LWP0至LWPn)310、存储器系统320、网络330、闪存主干(backbone)340和加速器控制器350。
每个LWP 310对应于加速器300的用于执行数据处理的核。LWP 310全都通过网络330(例如,交叉开关网络(crossbar network))连接。LWP 310可以通过消息队列接口彼此通信,消息队列接口通过与连接到网络330的硬件队列360协作来实现。在一些实施例中,LWP 310可以构建在超长指令字(VLIW)架构上。
参照图6,每个LWP 310可以包括多个功能单元,例如八个功能单元。功能单元可以包括乘法功能单元FU0和FU4、加载/存储功能单元FU1和FU5以及通用处理功能单元FU2、FU3、FU6和FU7。在图6中作为示例示出了功能单元包括两个乘法功能单元FU0和FU4、两个加载/存储功能单元FU1和FU5以及四个通用处理功能单元FU2、FU3、FU6和FU7。每个LWP 310还可以包括多个寄存器文件,例如两个寄存器文件Reg0和Reg1。在这种情况下,乘法功能单元FU0、加载/存储功能单元FU1以及通用处理功能单元FU2和FU3可以连接到寄存器文件Reg0,并且乘法功能单元FU4、加载/存储功能单元FU5以及通用处理功能单元FU6和FU7可以连接到寄存器文件Reg1。此外,两个寄存器文件Reg0和Reg1可以彼此连接。因此,可以降低加速器的硬件复杂度,同时可以满足低功率数据处理应用程序的不同需求。
此外,LWP 310可以共享单个存储器地址空间,并且每个LWP 310可以还包括高速缓存。在一些实施例中,每个LWP 310的高速缓存可以包括1级(L1)高速缓存和2级(L2)高速缓存,并且L1高速缓存可以包括L1指令(L1I)高速缓存和L1数据(L1D)高速缓存。
存储器系统320包括连接到LWP 310的不同存储器系统,例如,第一存储器321和第二存储器322。在一些实施例中,存储器系统320可作为用于以页读取和写入数据的闪存存储器与用于以字或字节读取和写入数据的LWP 310之间的缓冲存储器来操作。页可以是例如4KB到16KB。在一个实施例中,第一存储器321可以是字或字节寻址存储器。
在一些实施例中,第一存储器321可以是诸如动态随机存取存储器(DRAM)的低功率存储器。例如,DRAM可以是DDR3L(DDR3低电压)SDRAM(同步DRAM)。第一存储器321可用于将每个内核的数据段映射到闪存存储器,从而隐藏由闪存访问影响导致的长延迟。此外,第一存储器321可以集成去往闪存主干340的多个I/O请求,并且可以缓存大部分闪存写入,这可以取代传统SSD内部高速缓存的角色。第二存储器322可以是用于快速处理的存储器。例如,高速暂存存储器(SPM)可用作第二存储器332。SPM可以包括例如多个高速SRAM(静态随机存取存储器)组。第二存储器322可以通过虚拟化闪存和由通信接口排队的条目来服务管理I/O请求,其速度与L2高速缓存一样快。
网络330连接LWP 310、存储器系统320和闪存主干340。在一些实施例中,网络330可以是将大型网络分成两组交叉配置331和332的部分交叉开关。两组交叉配置331和332可以是流式交叉(层-1)331和多个简化的交叉(层-2)332。在一个实施例中,层-1网络331连接到LWP 310和存储器系统320,并且可以被设计成高性能,从而将LWP 310与存储器系统320集成。层-2网络332连接到闪存主干340,并且可以通过夹层卡333(例如AMC(高级夹层卡))连接到闪存主干340的夹层卡(例如FMC(FPGA夹层卡))。在这种情况下,层-2网络332的AMC333和闪存主干340的FMC 343可以通过多个SRIO(串行RapidIO)通道334(例如四个SRIO通道)彼此连接。层-2网络332的吞吐量可足以用于AMC 333和接口(例如,PCIe接口)展示的性能。
闪存主干340包括闪存存储器341和闪存控制器342。闪存存储器341可包括多个闪存封装(package)。在一个实施例中,闪存存储器341可以包括多个闪存通道,每个闪存通道包括多个闪存封装。闪存控制器342将输入I/O请求转换成闪存时钟域,并且可以是基于FPGA(现场可编程门阵列)的控制器。在一个实施例中,可以为每个闪存通道提供闪存控制器342。在一个实施例中,闪存控制器342可以实现入站和出站标签队列,每个标签队列用于缓存请求。闪存控制器342处理闪存事务并将对应的数据从网络330传递到闪存341。因此,闪存固件的角色可以被最小化。
加速器控制器350通过连接到主机的接口管理主机和加速器300之间的通信。在一些实施例中,当加速器300通过PCIe接口连接到主机(例如主机的北桥140)时,加速器控制器350可以是PCIe控制器。
在一些实施例中,加速器300可以包括电源/睡眠控制器(PSC)370。PSC 370根据下面将描述的对监督者LWP的控制来控制其他LWP 310的模式。监督者LWP可以使用PSC 370将每个LWP 310置于睡眠模式(其可以被称为空闲模式),或者撤销每个LWP 310。
接下来,参考图7和图8描述根据本发明的实施例的加速器中的内核执行。
图7示出了在根据本发明实施例的基于闪存的加速器中包括在一个应用程序中的多核执行,以及图8示出了在根据本发明实施例的基于闪存的加速器中包括在多个应用程序中的多核执行。
与使用单指令多线程(SIMT)模型的传统加速器不同,根据本发明实施例的基于闪存的加速器的多个LWP可以并行执行不同类型的内核,每个内核包括不同的操作功能。这使用户能够卸载不同的应用程序并协同执行不同类型的数据处理,这称为多核执行。
在一个实施例中,如图7所示,一个应用程序App可以包括多个内核(Kn10、Knl1和Kn12),并且主机可以在基于闪存的加速器中卸载内核(Kn10、Kn1和Kn12),以并行执行。在另一实施例中,如图8所示,主机可以在基于闪存的加速器中卸载与不同应用程序(App0、App1和App2)相关联的多个内核(Knl00、Knl01、Knl02、Knl10、Knl11、Knl12、Knl20、Knl21和Knl22),以并行执行。多核执行可以允许用户在闪存附近执行更灵活的数据处理,并且开辟了使数据处理比在传统加速器中更节能的机会。
在一些实施例中,缺少文件和运行时间系统可能给多核执行带来若干技术挑战,包括存储器空间管理、I/O管理和资源保护。解决这些问题的一种易于实现的机制是通过闪存固件可提供的一组定制接口在闪存上读取和写入数据。这是大多数主动SSD方法中通常采用的机制。然而,这种方法对于低功率加速器平台可能是不够的。具体地,由于内核彼此独立,因此它们不能与闪存固件接口动态链接。此外,对于主动SSD方法,必须通过考虑闪存接口来修改所有现有用户应用程序,从而导致不灵活的执行模型。
在一些实施例中,代替允许多个内核通过一组静态固件接口直接访问闪存固件,可以分配预定处理器,以通过考虑闪存地址空间来管理每个LWP的数据段的存储器空间。如图7和图8所示,预定处理器311可以通过将每个内核的数据段映射到物理闪存存储器(即闪存主干340)来虚拟化闪存主干340。在一些实施例中,加速器中包括的多个LWP中的预定LWP可以是预定处理器311。在下文中,预定LWP 311被称为“监督者LWP”。因此,加速器的每个LWP可以通过监督者LWP的存储器请求直接访问闪存主干340的闪存存储器,而无需指令集架构(即在现有计算设备中使用的加载/存储指令)的任何修改或帮助,或者无需主机侧存储堆栈的任何帮助。
在一个实施例中,监督者LWP 311可以通过对闪存主干340的物理页进行分组来管理闪存主干340的逻辑和物理地址空间,并将逻辑地址映射到内核的数据段。在一个实施例中,监督者LWP 311可以跨不同闪存通道(和不同裸片(die))对闪存主干340的物理页面进行分组。
在一些实施例中,映射信息可以存储到SPM 322,并且与每个内核的数据段相关联的数据可以存储到低功率存储器321。此外,监督者LWP 311可以隔离和保护闪存主干340的物理地址空间免于多个内核的执行。在一个实施例中,每当加载到LWP中的特定LWP的内核需要访问其数据段时,内核可以通过向监督者LWP 311传递消息来通知监督者LWP 311存在目标数据的逻辑地址空间。监督者LWP 311然后可以检查这种访问的许可,并将其转换为物理闪存地址。最后,监督者LWP 311可以向闪存主干340发出请求,并且闪存控制器341可以将与该请求相对应的数据带到低功率存储器321。在一个实施例中,诸如垃圾收集或存储器转储的耗时任务可以由不同的LWP周期性地执行,这可以解决由监督者LWP的闪存管理带来的潜在开销。
接下来,参考图9到图11描述在根据本发明的实施例的基于闪存的加速器中的内核执行。
图9是示出在根据本发明的实施例的基于闪存的加速器中的内核卸载方法的流程图。
用户应用程序可包括一个或更多个内核。在一些实施例中,内核可以由称为内核描述表的可执行对象表示。在一个实施例中,内核可以由供应商提供的代码生成工具编译。在一个实施例中,内核描述表可以是可执行和可链接格式(ELF)的变体,并且可以包括包含若干类型的区段信息(诸如内核代码(.text)、数据段(.ddr3_arr)、堆(.heap)和堆栈(.stack))的可执行文件。这些区段的地址可以指向每个LWP的L2高速缓存,除了数据段,其由监督程序LWP管理。
参照图9,用户应用程序的目标内核通过接口从主机卸载到低功率存储器321的指定存储空间(S910)。在一个实施例中,接口可以是PCIe接口。在一个实施例中,主机可以通过加速器控制器(图5的350),例如PCIe控制器,将与目标内核相关联的内核描述表写入PCIe基址寄存器(BAR)。BAR可以被映射到低功率存储器321。
在内核下载完成后,主机向加速器控制器350发出中断,例如PCIe中断(S920),并且然后加速器控制器350将中断转发给监督者LWP(S930)。然后,监督者LWP将下载的内核的低功率存储器321的地址存储到多个LWP中的目标LWP的专用寄存器中(S950)。在一些实施例中,专用寄存器可以是引导地址寄存器。在一些实施例中,在通过PSC 370将目标LWP置于睡眠模式(S940)之后,监督者LWP可以将低功率存储器321的地址存储到目标LWP的专用寄存器。
然后,监督者LWP写入目标LWP的进程间中断寄存器,迫使目标LWP跳转到写入目标LWP的专用寄存器中的地址(S960)。在一些实施例中,监督者LWP可以通过PSC 370将目标LWP从睡眠模式拉出(S970)。然后,目标LWP加载并执行指定的内核(S980)。因此,监督者LWP可以决定LWP内或跨多个LWP的内核执行的顺序。
图10示出了在根据本发明的实施例的基于闪存的加速器中的读取操作,并且图11示出了在根据本发明的实施例的基于闪存的加速器中的写入操作。
参照图10,当加载到特定LWP的目标内核380被执行并访问其数据段时,目标内核380将用于将数据段映射到闪存的数据段映射请求传递到监督者LWP 311(S1010)。在这种情况下,目标内核380可以传递队列消息作为数据段映射请求。LWP上的内核可以将由其自身的数据段指向的低功率存储器的存储区域映射到指定的闪存主干地址。因此,目标内核380可以通过将队列消息传递给监督者LWP 311来说明目标内核380的每个数据段(例如,低功率存储器上的输入向量)的闪存映射空间。也就是说,监督者LWP 311可以说明存在目标数据的逻辑地址空间。
在一些实施例中,队列消息可以包括请求类型(例如,读或写)、指向数据段的指针和闪存主干地址。在一个实施例中,闪存主干地址可以是闪存主干的基于字的地址或基于字节的地址。在一个实施例中,闪存主干地址可以被映射到目标内核的数据段的存储器(即,低功率存储器)。
在一些实施例中,在队列消息的请求类型是读取的情况下,当从目标LWP的高速缓存(例如L1高速缓存)未命中内核执行所请求的存储器访问时,目标内核380可以将队列消息传递给监督者LWP。
监督者LWP 311将队列消息中包括的基于字或字节的闪存主干地址转换成基于页的闪存地址(1030)。在一个实施例中,监督者LWP 311可以参考存储在SPM 322中的页映射表322a,以将闪存主干地址转换为闪存地址。
在一些实施例中,监督者LWP 311可以从闪存主干地址计算逻辑页组号。在一个实施例中,监督者LWP 311可以将闪存主干地址划分为闪存主干的通道号(Ch#)和逻辑页组号(页组#)。当请求类型为读取时,监督者LWP 311可以用页组号来查阅存储在SPM 322中的页映射表322a,以检索包括物理页组号的相应的页映射表条目。因此,闪存主干地址可以转换为物理页组号。接下来,监督者LWP 311可以根据物理页组号计算相应的封装中的封装索引和页号。可选地,当由多个通道中的封装形成路径时,监督者LWP 311可以根据物理页组号计算包括在相应的路径中的每个封装中的路径索引和页号。
接下来,监督者LWP 311产生针对闪存主干340的存储器请求,并且然后将存储器请求(即,I/O请求)传递到闪存主干340的闪存控制器(S1040)。存储器请求可以包括物理闪存地址。然后,闪存控制器从对应于物理闪存地址(即,基于页面的闪存地址)的闪存中读取数据,并将数据传递到低功率存储器321(S1050)。在一些实施例中,数据可以被存储到由指向包括在队列消息中的数据段的指针所指向的低功率存储器321的地址。在这种情况下,数据可以通过直接存储器访问(DMA)从闪存主干340的闪存移动到低功率存储器321。目标LWP可以将数据从低功率存储器321读取到高速缓存,例如L1高速缓存中(S1060)。
如上所述,由于每个内核可以通过监督者LWP 311访问闪存主干340,所以在闪存控制器和处理闪存附近数据的其他LWP之间没有直接的数据路径。由于与闪存主干340相关的请求由监督者LWP 311控制,监督者LWP 311需要保护闪存主干340。为了保护闪存主干340,监督者LWP 311可以将每个页面的许可信息和所有者的内核编号添加到页映射表条目。然而,加速器的页映射表被写入诸如SPM的永久存储器中,并且考虑到诸如垃圾收集的闪存I/O服务而定期更新。因此,将诸如许可信息和所有者内核编号的临时信息添加到页映射表中会增加虚拟化系统的复杂性,这会降低整体系统性能并缩短闪存的寿命。因此,在一些实施例中,可以使用锁定机构来保护闪存主干340。
在一个实施例中,加速器可以对数据段使用范围锁定。在这种情况下,一旦接收到数据段映射请求,即队列消息(S1010),如果根据考虑请求类型,闪存主干地址的范围与另一地址范围重叠,则监督者LWP 311可以阻止数据段映射请求(S1020)。例如,在请求类型是读取的情况下(即,内核的数据段被映射到用于读取的闪存),如果闪存主干地址正被另一内核用于写入,则监督者LWP 311可以阻止数据段映射请求。如果闪存主干地址的范围不与另一地址范围重叠,则监督者LWP 311可以将闪存主干地址转换为物理闪存地址(S1030)。
在一个实施例中,监督者LWP 311可以通过使用红黑树结构来实施范围锁定。在这种情况下,数据段映射请求的起始页号可以用作索引(key),并且每个节点可以用数据段映射请求的最后页号来扩充。
参照图11,当数据段被用于通过目标LWP执行目标内核380进行写入时,目标内核380将数据写入低功率存储器321(S1110)。然后,目标内核380将用于将数据段映射到闪存的数据段映射请求传递到监督者LWP 311(S1120)。在这种情况下,目标内核380可以将数据段映射请求作为队列消息进行传递。队列消息的请求类型可以是写入。
监督者LWP 311为队列消息分配新的页组号,并产生针对闪存主干340存储器请求的存储器请求,并且然后将存储器请求(即I/O请求)传递到闪存主干340的闪存控制器(S1150)。在一些实施例中,监督者LWP 311可以根据分配的物理页组号计算基于页的闪存地址,并将基于页的闪存地址添加到存储器请求。在一个实施例中,映射到新页组号的逻辑页组号可以被存储为页映射表的条目(S1160)。也就是说,监督者LWP 311可以更新存储在SPM 322中的页映射表,并且添加与新页面组号相对应的页映射表条目。例如,对应于包括在队列消息中的基于字或字节的地址的逻辑页组号可以被存储为映射到新页组号的逻辑页组号。因此,闪存控制器可以将存储在低功率存储器321中的数据段的数据存储到与新页组号(即物理闪存地址)相对应的闪存中。
在一些实施例中,在存在可用页组号的情况下,监督者LWP 311可以通过增加在前一次写入中使用的页组号来分配新页组号。在没有更多可用页组号的情况下,监督者LWP311可以从闪存主干340回收页组(S1140)。在一些实施例中,监督者LWP 311可以回收物理块以回收页组。在这种情况下,监督者LWP 311可以对要回收的物理块执行擦除操作,并且可以基于回收的物理块回收页组。在一些实施例中,监督者LWP可以更新与存储在SPM 322中的页映射表中的回收的物理块(或页面组)相关联的页映射表条目。因此,闪存控制器可以将存储在低功率存储器321中的数据段的数据存储到与回收的页组号相对应的闪存存储器中。在一个实施例中,与每个物理块相关联的页映射表条目可以作为元数据存储在闪存主干340的目标物理块内的一些页面(例如,前两个页面)中。
在一些实施例中,加速器可以对数据段使用范围锁定。在这种情况下,在接收到数据段映射请求(即队列消息)时(S1120),如果根据考虑请求类型,闪存骨干地址的范围与另一地址范围重叠,则监督者LWP 311可以阻止数据段映射请求(S1130)。例如,在请求类型是写入的情况下(即,内核的数据段被映射到闪存以用于写入),如果闪存主干地址正被另一内核用于读取,则监督者LWP 311可以阻止数据段映射请求。
在一些实施例中,预定LWP 312可被分配用于多个LWP中的存储管理。在下文中,预定LWP 312被称为“存储LWP”。监督者LWP 311可将回收物理块的请求传递到存储LWP 312,并且存储LWP 312可从闪存主干340回收物理块(S1140)。在一个实施例中,存储LWP 312可以通过在闪存主干340的闪存地址空间中选择牺牲块来回收物理块。在一个实施例中,代替查找页映射表的所有信息,存储LWP 312可以基于循环方式选择牺牲块号,并将元数据加载到驻留在这样的块上的元数据页面。牺牲块中的有效页面可以基于元数据迁移到空闲块(例如,位于闪存地址空间末端的空闲块)。一旦牺牲块选择完成,可以在SPM 322中更新与牺牲块和迁移块相关联的页映射表条目。存储LWP 312的这些活动可以与监督者LWP 311的地址转换并行地执行,并且具体地可以在后台执行。因此,可以降低由多核执行带来的开销。
在一个实施例中,存储LWP 312可以周期性地将存储在SPM 322中的页映射表条目转储到相对应的块的预定页面(例如,前两个页面)。也就是说,存储LWP 312可以记录SPM322的快照。
在一个实施例中,存储LWP 312的上述活动可以与监督者LWP 311的地址转换并行地执行,特别是可以在后台执行。因此,存储LWP 312生成的地址范围可以被锁定用于日志记录或块回收,但是这样的活动可以在后台执行,使得它们可以与内核执行和地址转换重叠。
如上所述,根据本发明实施例的加速器可以同时处理来自具有不同类型的操作功能的不同应用程序的数据,并且可以允许多个内核在没有主机级文件系统或I/O运行时间库的帮助的情况下直接访问闪存。此外,根据本发明实施例的加速器可以在没有主机的操作系统(OS)的帮助的情况下管理内部硬件资源,使得多个内核可以直接访问闪存。
接下来,参考图12到图17描述根据本发明的实施例的基于闪存的加速器中的多内核调度。
跨多个LWP执行不同的内核(每个内核具有许多功能),会带来诸如负载平衡和资源争用的技术挑战。为了应对这些挑战,所有内部LWP的资源可以暴露给主机,使得用户可以自己精细地控制一切。然而,这种方法会导致严重的安全问题,因为未经授权的用户可以访问内部资源并对其进行不当使用。此外,这种方法还可能引入另一种类型的数据移动开销,因为需要频繁的通信来使用来自外部的不同资源。因此,根据本发明的实施例,可以为多核执行调度提供两种不同的调度模型,包括内核间执行调度和内核内执行调度。在内核间执行调度中,每个LWP可以执行特定内核,该特定内核作为单个指令流从头到尾执行数据处理。内核内执行调度可将内核分割成多个代码块,并基于输入数据布局跨多个LWP同时执行它们。
首先,参照图12、图13和图14描述根据本发明实施例的基于闪存的加速器中的内核间执行调度。
图12示出了两个应用程序的示例,图13示出了静态内核间调度的示例,以及图14示出了动态内核间调度的示例。
内核间执行调度可以分为静态内核间调度和动态内核间调度。
参照图12所示的示例,提供了两个用户应用程序App0和App2,应用程序App0包括两个内核k0和k1,并且应用程序App2包括两个内核k2和k3。假设应用程序App2比应用程序App0更晚地被卸载到加速器,并且比应用程序App0更晚地被调度。
在根据一个实施例的静态内核间调度中,从主机接收的输入内核基于其应用程序号被静态地分配给特定LWP。例如,参照图13,在静态内核间调度中,监督者LWP可以将与应用程序App0相关联的内核k0和k1静态地分配给LWP(LWP0),并且将与应用程序App2相关联的内核k2和k3静态地分配给LWP(LWP2)。一旦主机发出与每个应用程序App0或App2相关联的所有内核(k0和k1,或者,k2和k3),加速器不需要与主机进行任何进一步通信,直到完成所有计算。
尽管静态内核间调度在多核执行模型中易于实现和管理,但由于内核负载的不平衡,这种调度会导致资源利用率低。例如,在图13中所示的示例中,当其他LWP(LWP1和LWP3)处于空闲时,加速器应当暂停内核k1和k3的执行,直到先前发出的内核k0和k2的执行完成。
在根据另一实施例的动态内核间调度中,为了解决静态内核间调度背后的低利用率问题,监督者可以在LWP之间动态地分配和分发不同的内核。如果新的应用程序已经到达,则监督者LWP将与到达的应用程序相关联的内核分配给任何可用的LWP。例如,监督者LWP可以以循环方式将与到达的应用程序相关联的内核分配给LWP。每个LWP可以例如通过硬件队列(图5的360)将内核执行的完成通知给监督者LWP。因此,监督者LWP可以连续地将下一个内核分配给目标LWP。例如,如图14所示,监督者LWP可以将两个应用程序App0和App2的内核k0、k1、k2和k3顺序分配给四个LWP(LWP0、LWP1、LWP2和LWP3)。然后,内核k1和k3可以与内核k0和k2并行执行。因此,与静态内核间调度的情况相比,内核k1和k3的延迟可以被减少。因此,在动态内核间调度中,可以提高资源利用率,并且可以减少内核的延迟。
接下来,参照图15、图16、图17、图18和图19描述根据本发明实施例的基于闪存的加速器中的内核内执行调度。
图15示出内核的示例,图16示出两个应用程序的另一示例,图17示出有序内核内调度的示例,图18示出无序内核内调度的示例,以及图19示出多应用程序执行链。
内核内执行调度可以分为有序内核内调度和无序内核内调度。
内核实际上可以由称为微块的多组代码段形成。每个组依赖于其输入/输出数据进行执行。尽管不同微块的执行被串行化,在微块内存在称为分屏(screen)的操作,其可以并行处理输入向量的不同部分。不同的分屏可以在不同的LWP上执行。
参照图15所示的示例,该内核的目标是通过处理输入向量(_fict_)获得最终输出矩阵(hz)。在微块0(m0)中,内核首先将作为输入向量的一维数组(_fict_)转换为二维数组(ey)。内核然后通过在微块1(m1)中计算ey/hz和ex/hz差分来准备新的ey和ex向量。接下来,内核在微块2(m2)处使用临时向量(ey和ex)以获得最终输出矩阵(hz)。在m2中,每个内环迭代的执行代码生成输出向量(hz)的一个元素。因为在微块2(m2)中没有写后写或写后读的风险,所以我们可以将微块2(m2)的外环分成四个分屏,并且可以跨不同的LWP分配四个分屏以并行执行。
参照图16所示的示例,提供了两个用户应用程序App0和App2,应用程序App0包括两个内核k0和k1,并且应用程序App2包括两个内核k2和k3。每个内核包括两个微块,即微块0和微块1。在这种情况下,内核k0的微块0包括两个分屏s01和s02,并且内核k0的微块1包括两个分屏s0a和s0b。内核k1的微块0包括一个分屏s11,并且内核k1的微块1包括一个分屏s1a。内核k2的微块0包括两个分屏s21和s22,并且内核k2的微块1包括一个分屏s2a。内核k3的微块0包括两个分屏s31和s32,并且内核k3的微块1包括两个分屏s3a和s3b。
在根据一个实施例的有序内核内调度中,可以顺序执行各种微块,并且每个微块的所有分屏可以由不同的LWP同时执行。例如,如图17所示,在时间T0执行内核k0中的微块0的分屏s01和s02之后,在时间T1执行内核k0中的微块1的分屏s0a和s0b。此后,在时间T2执行内核k1中的微块0的分屏S11,并且然后在时间T3执行内核k1中的微块1的分屏s1a。随后,在时间T4执行内核k2中的微块0的分屏s21和s22之后,在时间T5执行内核k2中的微块1的分屏s2a。此后,在时间T6执行内核k3中的微块0的分屏s31和s32,并且然后在时间T7执行内核k3中的微块1的分屏s3a和s3b。内核k0中的微块0的两个分屏s01和s02可以由不同的LWP(LWP0和LWP1)同时执行。类似地,内核中相同微块的多个分屏可以由不同的LWP同时执行。
这样,由于同时执行多个分屏,所以与顺序执行一个内核的分屏的内核间执行调度相比,可以降低执行时间。
在根据另一实施例的无序内核内调度中,与有序内核内调度不同,与不同内核以及不同微块相关联的许多分屏可以以无序方式执行。也就是说,如果在某个时间存在任何可用的LWP,则无序内核内调度可以从跨不同内核或应用程序边界存在的不同微块借用一些分屏,并将这些分屏分配给可用的LWP。因此,可以降低微块的执行时间,并且可以提高整体系统性能。
如图17所示,由于两个LWP(LWP2和LWP3)在时间T0处于空闲状态,不同微块的分屏可以在时间T0被填充,如图18所示。例如,监督者LWP可以从时间T2拉出内核k1中的微块0的分屏s11,并且在时间T1将分屏s11分配给LWP2,使得LWP2可以执行分屏s11。类似地,监督者LWP可以从时间T3拉出内核k1中的微块1的分屏s1a,并且在时间T1将分屏s1a分配给LWP2,使得LWP2可以执行分屏s1a。监督者LWP可以从时间T4拉出内核k2中的微块0的分屏s21,并且在时间T1将分屏s21分配给LWP3,使得LWP3可以执行分屏s1a。此外,在时间T2,内核k2中的微块0的分屏s22以及内核k3中的微块0的分屏s31和s32可以分别被分配给LWP0、LWP1和LWP2。在时间T3,内核k2中的微块1的分屏s2a以及内核k3中的微块1的分屏sa和sb可以分别被分配给LWP0、LWP1和LWP2。因此,可以降低内核的延迟。
如图18的示例所示,在前一个微块的所有分屏完成之前,可以不调度分屏。在加速器中,这个规则可以由多应用程序执行链来管理,多应用程序执行链是包括每个应用程序的数据依赖性信息的列表。参照图19,多应用程序执行链的根包括多个指针。每个指针可以对应于应用程序Appi并指示节点列表。节点列表可以对应于微块,并且列表的每个节点可以对应于分屏。每个节点列表可以指示下一个微块中的节点列表。每个节点可以保留每个微块的一系列分屏信息,例如LWP ID和执行状态。这些节点的顺序可指示微块之间的数据依赖性关系。
接下来,描述在真实硬件上实施根据本发明实施例的基于闪存的加速器300之后测量的结果。
如以下表1所示,在性能测量中使用8个工作在1GHz时钟下的LWP,每个LWP具有自己的64KB L1高速缓存和512KB的L2高速缓存。在8个LWP中,一个LWP用作监督者LWP,并且另一个LWP用作存储LWP。在存储器系统中,基于4MB SRAM的SPM用作SPM,且2GB DDR3L DRAM用作低功率存储器。此外,16个闪存裸片被用作闪存存储器。
表1
部件 | 规格 | 工作频率 | 典型功率 | 估计带宽 |
LWP | 8个处理器 | 1GHz | 0.8W/核 | 16GB/s |
L1/L2高速缓存 | 64KB/512KB | 500MHz | N/A | 16GB/s |
SPM | 4MB | 500MHz | N/A | 16GB/s |
低功率存储器 | DDR3L,1GB | 800MHz | 0.7W | 6.4GB/s |
闪存 | 16个裸片,32GB | 200MHz | 11W | 3.2GB/s |
PCIe | v2.0,2通道 | 5GHz | 0.17W | 1GB/s |
层-1交叉 | 256通道 | 500MHz | N/A | 1.6GB/s |
层-2交叉 | 128通道 | 333MHz | N/A | 5.2GB/s |
评估结果显示,与传统的异构计算方法相比,根据本发明实施例的加速器可以将数据处理的带宽提高127%,同时将能耗降低78.4%。
尽管已经结合目前被认为是实际实施例的内容描述了本发明,但是应当理解,本发明不限于所公开的实施例,而是相反,本发明旨在覆盖包括在所附权利要求的精神和范围内的各种修改和等效布置。
Claims (20)
1.一种基于闪存的加速器,所述基于闪存的加速器被配置为连接到包括中央处理单元(CPU)和系统存储器的主机,所述基于闪存的加速器包括:
闪存主干,所述闪存主干包括闪存存储器和闪存控制器;
多个处理器,所述多个处理器执行从所述主机卸载的多个内核;
存储器系统,所述存储器系统包括第一存储器,所述第一存储器用于将每个内核的数据段映射到所述闪存存储器;
监督者处理器,所述监督者处理器基于第一消息,将由第一内核的数据段指向的所述第一存储器的区域映射到所述闪存存储器的区域,以允许第一数据在所述第一存储器的所述区域和所述闪存存储器的所述区域之间移动,所述第一消息根据由所述多个处理器中的第一处理器对所述第一内核的执行被传递;以及
网络,所述网络集成了所述闪存主干、所述存储器系统、所述多个处理器和所述监督者处理器。
2.根据权利要求1所述的基于闪存的加速器,其中,在没有所述主机的操作系统(OS)的辅助的情况下,所述第一数据在所述第一存储器和所述闪存存储器之间移动。
3.根据权利要求1所述的基于闪存的加速器,其中,在不修改在现有计算设备中使用的指令集架构的情况下,所述第一数据在所述第一存储器和所述闪存存储器之间移动。
4.根据权利要求1所述的基于闪存的加速器,其中,所述监督者处理器向所述闪存控制器传递指示所述闪存存储器的所述区域的存储器请求,并且
其中,所述闪存控制器根据所述存储器请求在所述第一存储器的所述区域和所述闪存存储器的所述区域之间移动所述第一数据。
5.根据权利要求4所述的基于闪存的加速器,其中,在不修改现有的加载/存储指令的情况下,所述第一处理器通过所述存储器请求访问所述闪存主干。
6.根据权利要求4所述的基于闪存的加速器,其中,当所述第一内核从所述闪存存储器读取所述第一数据时,所述第一消息包括指向所述第一内核的数据段的指针和基于字或字节的地址,
其中,所述监督者处理器将所述基于字或字节的地址转换为所述闪存存储器中的物理地址,并且
其中,所述存储器系统还包括存储映射信息的第二存储器,所述映射信息用于将所述基于字或字节的地址转换为所述物理地址。
7.根据权利要求6所述的基于闪存的加速器,其中,所述映射信息包括与所述基于字或字节的地址相对应的逻辑页组号和与所述物理地址相对应的物理页组号之间的映射信息。
8.根据权利要求6所述的基于闪存的加速器,其中,当所述基于字或字节的地址的范围与另一内核用于写入的地址的范围重叠时,所述监督者处理器阻止对所述第一消息的处理。
9.根据权利要求1所述的基于闪存的加速器,其中,所述多个处理器中的第二处理器根据第二内核的执行向所述监督者处理器传递用于将第二数据写入所述闪存存储器的第二消息,
其中,所述第二消息包括指向所述第二内核的数据段的指针,并且
其中,所述监督者处理器为所述第二消息分配所述闪存存储器的新区域,以允许所述第二数据从由所述第二内核的数据段所指向的所述第一存储器的区域移动到所述闪存存储器的所述新区域。
10.根据权利要求9所述的基于闪存的加速器,其中,所述监督者处理器传递指示所述闪存存储器的新区域的存储器请求,并且
其中,所述闪存控制器根据所述存储器请求,将所述第二数据从由指向所述第二内核的所述数据段的指针所指向的所述第一存储器的所述区域传递到所述闪存存储器的所述新区域。
11.根据权利要求9所述的基于闪存的加速器,其中,所述监督者处理器基于与所述闪存存储器的所述新区域相对应的物理地址和包括在所述第二消息中的基于字或字节的地址来更新所述映射信息。
12.根据权利要求9所述的基于闪存的加速器,其中,当包括在所述第二消息中的所述基于字或字节的地址的范围与另一内核用于读取的地址的范围重叠时,所述监督者处理器阻止对所述第二消息的处理。
13.根据权利要求9所述的基于闪存的加速器,其中,所述监督者处理器通过增加在先前写入中使用的物理页组号来分配与所述新区域相对应的物理页组号。
14.根据权利要求9所述的基于闪存的加速器,还包括存储处理器,
其中,当所述闪存存储器中没有可用的物理页组号时,所述监督者处理器向所述存储处理器传递用于回收物理块的请求,以分配对应于所述新区域的物理页组号,并且
其中,所述存储处理器通过在所述闪存存储器的空间中选择牺牲块来回收所述物理块。
15.根据权利要求14所述的基于闪存的加速器,其中,所述存储处理器记录所述第二存储器的快照。
16.一种计算设备,包括:
根据权利要求1所述的基于闪存的加速器;
主机,以及
接口,所述接口连接所述基于闪存的加速器和所述主机。
17.一种基于闪存的加速器,所述基于闪存的加速器被配置为连接到包括中央处理单元(CPU)和系统存储器的主机,所述基于闪存的加速器包括:
闪存主干,所述闪存主干包括闪存存储器和闪存控制器;
多个处理器,所述多个处理器执行从所述主机卸载的多个内核;
存储器系统,所述存储器系统包括用于将每个内核的数据段映射到所述闪存存储器的第一存储器以及存储映射信息的第二存储器,所述映射信息用于将映射到由所述数据段指向的所述第一存储器的区域的基于字或字节的地址转换为所述闪存存储器中的物理地址;
监督者处理器,所述监督程序处理器当根据每个内核的执行从所述闪存存储器读取读数据时,基于所述映射信息将所述基于字或字节的地址转换成所述闪存存储器的所述物理地址,并将存储器请求传递到所述闪存控制器,以允许所述读数据从所述闪存存储器移动到所述第一存储器的所述区域;
网络,所述网络集成了所述闪存主干、所述存储器系统、所述多个处理器和所述监督者处理器。
18.根据权利要求17所述的基于闪存的加速器,其中,在没有所述主机的操作系统(OS)的辅助的情况下,所述读数据在所述闪存存储器和所述第一存储器之间移动。
19.根据权利要求17所述的基于闪存的加速器,其中,在不修改在现有计算设备中使用的指令集架构的情况下,所述读数据在所述闪存存储器和所述第一存储器之间移动。
20.根据权利要求17所述的基于闪存的加速器,其中,在不修改现有的加载/存储指令的情况下,所述多个处理器中的每一个处理器通过所述存储器请求访问所述闪存主干。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20170114029 | 2017-09-06 | ||
KR10-2017-0114029 | 2017-09-06 | ||
KR10-2018-0046379 | 2018-04-20 | ||
KR1020180046379A KR101943312B1 (ko) | 2017-09-06 | 2018-04-20 | 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109460369A true CN109460369A (zh) | 2019-03-12 |
Family
ID=65323006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810954424.XA Pending CN109460369A (zh) | 2017-09-06 | 2018-08-21 | 基于闪存的加速器及包括该加速器的计算设备 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR101943312B1 (zh) |
CN (1) | CN109460369A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110083469A (zh) * | 2019-05-11 | 2019-08-02 | 肖银皓 | 一种异构硬件组织运行统一内核方法及系统 |
CN112764822A (zh) * | 2021-02-07 | 2021-05-07 | 中国第一汽车股份有限公司 | 操作系统启动方法、装置、设备及介质 |
CN112948070A (zh) * | 2019-12-10 | 2021-06-11 | 百度(美国)有限责任公司 | 用于由数据处理加速器处理数据的方法及数据处理加速器 |
US11989142B2 (en) | 2021-12-10 | 2024-05-21 | Samsung Electronics Co., Ltd. | Efficient and concurrent model execution |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070294496A1 (en) * | 2006-06-19 | 2007-12-20 | Texas Instruments Incorporated | Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices |
US20080028187A1 (en) * | 2006-07-28 | 2008-01-31 | Drc Computer Corporation | Configurable Processor Module Accelerator Using A Programmable Logic Device |
WO2008084473A1 (en) * | 2007-01-11 | 2008-07-17 | Sandisk Il Ltd. | Systems for supporting readydrive and ready boost accelerators in a single flash-memory storage device |
US20120239904A1 (en) * | 2011-03-15 | 2012-09-20 | International Business Machines Corporation | Seamless interface for multi-threaded core accelerators |
US20160283158A1 (en) * | 2015-03-25 | 2016-09-29 | International Business Machines Corporation | Accessing global data from accelerator devices |
JP2017068804A (ja) * | 2015-10-02 | 2017-04-06 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置、アクセスコントローラ、および情報処理方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101038167B1 (ko) * | 2008-09-09 | 2011-05-31 | 가부시끼가이샤 도시바 | 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 |
KR20130084846A (ko) * | 2012-01-18 | 2013-07-26 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법 |
US9575807B2 (en) * | 2014-04-15 | 2017-02-21 | Intel Corporation | Processing accelerator with queue threads and methods therefor |
KR101936950B1 (ko) * | 2016-02-15 | 2019-01-11 | 주식회사 맴레이 | 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램 |
-
2018
- 2018-04-20 KR KR1020180046379A patent/KR101943312B1/ko active IP Right Grant
- 2018-08-21 CN CN201810954424.XA patent/CN109460369A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070294496A1 (en) * | 2006-06-19 | 2007-12-20 | Texas Instruments Incorporated | Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices |
US20080028187A1 (en) * | 2006-07-28 | 2008-01-31 | Drc Computer Corporation | Configurable Processor Module Accelerator Using A Programmable Logic Device |
WO2008084473A1 (en) * | 2007-01-11 | 2008-07-17 | Sandisk Il Ltd. | Systems for supporting readydrive and ready boost accelerators in a single flash-memory storage device |
US20120239904A1 (en) * | 2011-03-15 | 2012-09-20 | International Business Machines Corporation | Seamless interface for multi-threaded core accelerators |
US20160283158A1 (en) * | 2015-03-25 | 2016-09-29 | International Business Machines Corporation | Accessing global data from accelerator devices |
JP2017068804A (ja) * | 2015-10-02 | 2017-04-06 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置、アクセスコントローラ、および情報処理方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110083469A (zh) * | 2019-05-11 | 2019-08-02 | 肖银皓 | 一种异构硬件组织运行统一内核方法及系统 |
CN110083469B (zh) * | 2019-05-11 | 2021-06-04 | 广东财经大学 | 一种异构硬件组织运行统一内核方法及系统 |
CN112948070A (zh) * | 2019-12-10 | 2021-06-11 | 百度(美国)有限责任公司 | 用于由数据处理加速器处理数据的方法及数据处理加速器 |
CN112764822A (zh) * | 2021-02-07 | 2021-05-07 | 中国第一汽车股份有限公司 | 操作系统启动方法、装置、设备及介质 |
US11989142B2 (en) | 2021-12-10 | 2024-05-21 | Samsung Electronics Co., Ltd. | Efficient and concurrent model execution |
Also Published As
Publication number | Publication date |
---|---|
KR101943312B1 (ko) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831376B2 (en) | Flash-based accelerator and computing device including the same | |
US11645099B2 (en) | Parallel hardware hypervisor for virtualizing application-specific supercomputers | |
CN109460369A (zh) | 基于闪存的加速器及包括该加速器的计算设备 | |
US11556396B2 (en) | Structure linked native query database management system and methods | |
CN103930875B (zh) | 用于加速业务数据处理的软件虚拟机 | |
TWI726899B (zh) | 用於簡化用於有效平行計算的以任務為基礎的運行時間之方法 | |
CN103229171A (zh) | 基于快照的复制 | |
US8930732B2 (en) | Fast speed computer system power-on and power-off method | |
US10268592B2 (en) | System, method and computer-readable medium for dynamically mapping a non-volatile memory store | |
CN108463803A (zh) | 对异构缓冲区的随机访问不相交并发稀疏写入 | |
CN109783012A (zh) | 基于闪存的储存器及其控制器 | |
CN111684431A (zh) | 数据存储装置空闲时间处理 | |
EP1760580A1 (en) | Processing operation information transfer control system and method | |
Pellegrini et al. | Transparent multi-core speculative parallelization of DES models with event and cross-state dependencies | |
CN103140834A (zh) | 用于填充存储器区域的处理器支持 | |
Bayati et al. | Exploiting gpu direct access to non-volatile memory to accelerate big data processing | |
CN108845969B (zh) | 适用于不完全对称多处理微控制器的操作控制方法及操作系统 | |
Wang et al. | A dynamic partial reconfigurable system with combined task allocation method to improve the reliability of FPGA | |
WO2020248512A1 (zh) | 一种构造终端应用行为的运行时模型的方法 | |
Alvarez et al. | Main Memory Management on Relational Database Systems | |
Plauth et al. | Improving the accessibility of NUMA‐aware C++ application development based on the PGASUS framework | |
KR20230123761A (ko) | 낸드 플래시 메모리를 이용하여 딥 뉴럴 네트워크 모델을 학습시키는 가속기 시스템 및 그 동작 방법 | |
Yoon et al. | Harmonized memory system for object-based cloud storage | |
Lee et al. | Optimizing back-and-forth live migration | |
Duffy et al. | A Hash-Based Key-Value SSD FTL with Efficient Small-Value Support |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190312 |