CN113325999B - 用于处理非结构化源数据的方法和系统 - Google Patents
用于处理非结构化源数据的方法和系统 Download PDFInfo
- Publication number
- CN113325999B CN113325999B CN202110141151.9A CN202110141151A CN113325999B CN 113325999 B CN113325999 B CN 113325999B CN 202110141151 A CN202110141151 A CN 202110141151A CN 113325999 B CN113325999 B CN 113325999B
- Authority
- CN
- China
- Prior art keywords
- data
- blocks
- chip storage
- temporary
- block
- 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.)
- Active
Links
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0661—Format or protocol conversion 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/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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0658—Controller construction 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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]
-
- 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/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
提供了用于处理非结构化源数据的方法和系统。具有范围V的输入数据从片外存储装置加载到片上存储装置。输入数据经由片上存储装置被划分为P个临时父区块,其中,所述P个临时父区块中的特定临时父区块具有范围V/P。所述P个临时父区块从片上存储装置被存储到片外存储装置。对所述P个临时父区块进行划分以生成P个临时子区块,直到目标数量的T个区块被生成为止,其中,来自所述P个临时父区块的数据是用于递归地加载、划分和存储源数据的源数据。应用被配置为从所述T个区块访问被划分的数据以生成输出。对被划分的数据的访问是对片外存储装置的顺序读取访问。
Description
本申请要求于2020年02月13日提交的名称为“一种在有效的时间内将低局部性和随机存储器访问转换为顺序访问的技术(A TECHNIQUE TO CONVERT LOW LOCALITY ANDRANDOM MEMORY ACCESSES INTO SEQUENTIAL ACCESSES IN EFFICIENT TIME)”的第62/976,296号美国临时申请和于2020年02月19日提交的第16/795,510号美国申请的优先权和权益,所述美国申请的全部内容通过引用包含于此。
技术领域
本申请涉及访问存储在外部存储装置中的非结构化、低局部性数据,更具体地,涉及以有效的方式将这样的数据转换为高局部性数据。
背景技术
处理非结构化数据的系统所经历的瓶颈之一是这样的数据会以随机方式存储在存储器中。因此,对存储的数据的数据访问也会是随机的。因为数据内的相邻或邻近条目之间可具有宽范围,所以非结构化数据可被称为低局部性数据。
当低局部性数据被存储在外部存储装置和/或片外存储装置(诸如,以动态随机存取存储器(DRAM)或闪存固态驱动器(SSD)为例)中时,对数据的随机访问可对处理数据的应用造成瓶颈。这样的应用的示例包括参与大规模数据分析的那些应用(诸如,图形处理应用和机器学习核)。这样的应用所经历的瓶颈通常是由于以下事实:访问外部存储装置上的数据的延迟通常远高于例如使用集成处理器计算存储在片上存储器中的数据所经历的延迟。这样的片上存储器的示例可包括静态随机存取存储器(SRAM),并且这样的集成处理器的示例可包括现场可编程门阵列(FPGA)。当低局部性随机数据从外部存储装置被访问并且列线数据被每次检索时,由于数据被存储在外部存储装置中的随机方式,所以相对小部分的数据可被使用,从而浪费了大部分的带宽。因此,对外部存储装置的频繁访问和存储器带宽的不良利用可为上述处理非结构化数据的应用造成瓶颈。
因此,需要减轻对外部存储装置的随机访问的不利影响以增强利用非结构化数据的应用的性能和可扩展性的系统和方法。
发明内容
本公开的实施例涉及一种用于处理非结构化源数据的方法。处理器确定区块(partition)的目标数量T并将输入数据从片外存储装置加载到片上存储装置。输入数据具有范围V。输入数据经由片上存储装置被划分(partition)为P个临时父区块,其中,所述P个临时父区块中的特定临时父区块具有范围V/P。所述P个临时父区块从片上存储装置被存储到片外存储装置。对所述P个临时父区块进行划分以生成P个临时子区块,直到所述目标数量的T个区块被生成为止。在一个实施例中,来自所述P个临时父区块的数据是用于递归地加载、划分和存储源数据的源数据。应用被配置为从所述T个区块访问被划分的数据以生成输出。对被划分的数据的访问是对片外存储装置的顺序读取访问。在一个实施例中,T、V和P是大于0的数值。
根据一个实施例,T基于片上存储装置的存储容量,其中,生成的T个区块中的特定区块中的被划分的数据的范围在片上装置的存储容量内。
根据一个实施例,用于第一级划分的输入数据是源数据,其中,源数据具有范围R,其中,生成的T个区块中的特定区块中的被划分的数据的范围是R/T。
根据一个实施例,被划分的数据具有比源数据的局部性高的局部性。
根据一个实施例,经由片外存储装置的顺序读取操作按批加载输入数据,并且经由片外存储装置的顺序写入操作存储所述P个临时父区块。
根据一个实施例,在片外存储装置中分配固定的存储器空间,其中,在特定递归步骤生成的所有区块被存储在固定的存储器空间中。
根据一个实施例,存储所述P个临时子区块的步骤包括调用数据存储处理,所述数据存储处理包括:动态地分配固定大小的数据块,其中,所述数据块存储来自给定父区块的P个临时子区块中的第一临时子区块的一部分和来自下一邻近父区块的P个临时子区块中的对应的第一临时子区块的一部分,以使数据块的存储空间的使用最大化。
根据一个实施例,从片外存储装置访问的被划分的数据的一部分被存储在片上存储装置上,所述方法还包括:经由随机数据访问来访问片上存储装置上的被划分的数据。
根据一个实施例,片上存储装置是静态随机存取存储器,并且片外存储装置是动态随机存取存储器或固态驱动器。
根据一个实施例,非结构化源数据是图形数据,并且所述应用是图形处理应用。
本公开的实施例还涉及一种用于处理非结构化源数据的系统。所述系统包括片外存储装置、片上存储装置以及连接到片上存储装置和片外存储装置的处理器。处理器被配置为:确定区块的目标数量T;将输入数据从片外存储装置加载到片上存储装置,输入数据具有范围V;经由片上存储装置将输入数据划分为P个临时父区块,其中,所述P个临时父区块中的特定临时父区块具有范围V/P;将所述P个临时父区块从片上存储装置存储到片外存储装置;以及对所述P个临时父区块进行划分以生成P个临时子区块,直到所述目标数量的T个区块被生成为止,其中,来自所述P个临时父区块的数据是用于递归地加载、划分和存储源数据的源数据,其中,应用被配置为从所述T个区块访问被划分的数据以生成输出,其中,对被划分的数据的访问是对片外存储装置的顺序读取访问,其中,T、V和P是大于0的数值。
附图说明
图1是产生由目标系统访问的数据的源系统的示意框图;
图2是根据示例性实施例的配置有低局部性数据转换方法的系统的框图;
图3是根据一个示例性实施例的响应于将低局部性数据转换方法应用于输入源数据而生成的区块的示意框图;
图4是根据一个示例性实施例的由低局部性数据转换方法生成的树状递归划分的示意布局图;
图5是根据一个示例性实施例的用于由划分模块创建划分的处理的示意布局图;
图6是根据一个示例性实施例的用于将数据打包到片外存储装置上的处理的示意布局图;
图7是根据一个示例性实施例的在每个级别的划分期间被交替使用的片外存储装置的两个工作卷(work volume)的布局框图;
图8A和图8B是根据一个示例性实施例的以交替方式使用图7的两个工作卷在每个级别的划分生成划分的处理的示意布局图;以及
图9是根据一个示例性实施例的用于以交替方式使用图7的两个工作卷创建划分的处理的流程图。
具体实施方式
可使用各种技术来解决随机数据访问模式的问题,以减轻由随机数据访问造成的瓶颈。一种这样的技术(称为排序优先(Sort-First)技术)包括采用高速排序算法(诸如,合并排序(MergeSort)算法)来首先将生成的低局部性随机数据排序为高局部性(例如,排序的、高速缓存友好的)数据,使得数据的后续处理可从顺序访问模式中受益。因此,高局部性数据意味着数据内的相邻或邻近条目在彼此的近范围内。这样的技术的一个特征是,可将计算上昂贵的随机访问与对存储数据的多次顺序访问进行折衷,以提高性能。因为对存储器的顺序数据访问模式可比随机访问更好地执行,所以整体性能可提高。合并排序算法可与FPGA平台结合使用。此外,在FPGA中实现可去除对片外存储器(例如,DRAM或SSD)的任何随机访问,从而使片上存储器(例如,SRAM)的超低延迟特权最大化。这使得在FPGA上有效实现的合并排序具有低开销,并且性能增益可被实现。
然而,尽管具有益处,但是使用合并排序的排序优先技术仍然遭受许多问题。首先,利用排序优先技术,在可开始高局部性数据访问之前对数据进行排序。这意味着对整个数据进行最少log(N)次传递(pass)以完成完整的排序。特别是当处理大数据大小(诸如,图形处理域中的那些大数据大小)时,这个数量可很高。因此,使用通过输入数据的传递的次数较少的技术可产生更好的性能。
其次,当处理大数据大小(即,数据太大而不能放入系统的可用DRAM)时,使用合并排序策略的邻近的内部排序块之间的依赖性可导致对外部存储装置的频繁访问。合并排序可通过将邻近的内部排序块连续地“合并”为更大的块直到整个数据被完全排序来操作。在数据太大而不能放入DRAM的情况下,这可需要超过理论数量的对外部SSD的额外访问调用,从而潜在地导致性能缺陷。
本公开的实施例提供了一种用于在时间上有效地并使用有限的空间将存储在外部存储装置中的相对大尺寸和低局部性数据转换为高局部性数据的技术。低局部性输入数据可以是随机输入数据(例如,随机键值对(random key-value pair))、来自应用上下文的工作负载(例如,图形处理工作负载)等。在一个实施例中,通过以迭代方式对外部存储装置中的原始数据进行划分(partition)直到特定粒度被实现,低局部性数据可被转换为高局部性数据。在一个实施例中,划分的步骤经由集成处理器在片上发生。此外,在一个实施例中,划分方案不要求所得到的数据被完全排序。因为原始输入数据不需要被完全排序,所以对外部存储装置中的输入数据进行较少的顺序传递,从而与对数据进行完全排序的现有技术相比,提供了提高的性能。
在一个实施例中,数据表示方案用于在划分处理的每次迭代存储被划分的数据,这确保在每个级别/每次迭代生成的被划分的数据使用相同的固定空间被存储。根据一个实施例,以这样的方式存储被划分的数据:对于被分配用于进行存储的每个数据块,实现最大数据打包。因此,不管迭代的数量和生成的区块(partition)的数量如何,都使用相同的存储器空间来存储被划分的数据。
将较高局部性数据作为原始输入数据的区块存储在外部存储装置中有助于在处理非结构化数据的多个处理上下文中加速随机访问模式。因此,在不尝试提供数据的完美排序的情况下,存储器/存储装置访问的局部性被改善。当从外部存储装置访问被划分的数据时,这样的访问是顺序的,从而允许存储器带宽饱和。因此,公开的实施例通过减少对外部存储装置的随机访问(这在计算上是昂贵的)并且将对外部存储装置的随机访问与对输入数据的少次顺序传递进行折衷来提供时间效率。因为顺序访问可比随机访问有效,所以优异的性能被实现。可用作区块的高局部性数据输出还可具有更低延迟的SRAM处理。
图1是产生由目标系统102访问的数据的源系统100的示意框图,其例示了随机访问模式的一个问题。在图1的实施例中,源系统100生成未排序的数据104。未排序的数据104可以是例如来自应用上下文的随机键值对或工作负载(例如,图形处理工作负载)。在图形处理上下文中,源系统100可以是图形的节点(例如,节点106),其中,每个节点生成意在由目标系统102的节点(例如,节点110)消耗/提交(consume/commit)的值(例如,值108)。如图1的示例中所描绘的,源数据104是随机的且未排序的数据(低局部性数据),而目的地数据112是顺序的。源数据104到目的地数据112的消耗/提交涉及随机访问模式。例如,将数据提交到目标系统102可基于以顺序访问数据的函数(诸如,以广度优先搜索函数(breadth-first-search function)为例)。因为源系统100中的数据是未排序的,所以对高局部性目标中的数据的访问受到随机数据访问模式的影响,这损害了目标系统102的性能。
在一个实施例中,针对图1讨论的随机访问模式问题,经由在有效的时间内并使用有限的空间将低局部性数据转换为高局部性数据的系统和方法来解决。由系统和方法执行的方法被称为动作(ACT)。
图2是根据示例性实施例的配置有低局部性数据转换方法的系统的框图。该系统可包括结合到片上存储装置202和外部存储器接口(EMI)204的处理器200。在一个实施例中,处理器200、片上存储装置202和EMI 204被包含在单个集成电路芯片206中。EMI 204还结合到片外/外部存储装置208。
处理器200可以是配置有处理电路硬件的任何处理器(诸如,以中央处理器(CPU)核、现场可编程门阵列(FPGA)等为例)。片上存储装置202可以是例如SRAM。片外存储装置208可以是例如DRAM或SSD。EMI 204可以是配置有用于在集成电路芯片206与片外存储装置208之间通信的适当总线协议的总线。
在一个实施例中,处理器200可被配置为执行划分模块(partitioning module)210,划分模块210用于加载存储在片外存储装置208中的数据和使存储在片外存储装置208中的数据区块,并且将被划分的数据紧凑地重新加载回片外存储装置208中。在这方面,划分模块210可配置有使处理器200将源数据的多个批(batch)从片外存储装置208加载到片上存储装置202中的指令。每个加载的批被划分为P(例如,2)个临时区块。从每个加载的批生成的P个临时区块的数量可被称为区块扇出(fan-out)。P个临时区块可被加载回片外存储装置208中,以完成第一级划分。在一个实施例中,以使分配的存储器空间最大化的方式将多个区块加载回片外存储装置208中。
在一个实施例中,从第一级生成的每个子区块(child partition)成为用于第二级划分的输入源数据(因此,充当父级(parent)),其中,这样的输入源数据从片外存储装置208被加载到片上存储装置202,被划分并被存储回片外存储装置中。在一个实施例中,划分模块210参与每个父区块的树状递归划分以生成子区块,直到目标数量的区块被获得为止。在一个实施例中,区块的目标数量基于片上存储装置202的存储容量。更具体地,划分模块210对片外存储装置208中的数据进行划分,直到每个区块中的键的范围在片上存储装置202的容量内为止。以这种方式,代替执行片外存储装置中的数据的完全排序,数据被划分为与片上存储装置202的容量匹配的粒度级别。与对输入数据进行完全排序的传统机制(诸如,排序优先技术)相比,这导致通过输入源的更少次数的传递。任何随机访问发生在片上存储装置202上,使得这样的访问比对片外存储装置208的随机访问快且有效。
在一个实施例中,处理器还可被配置为执行数据计算模块212,数据计算模块212用于在与发生划分的时间基本相同的时间进行计算。例如,数据计算模块212可包括被配置为使用被划分的数据执行顶点函数的图形处理模块。本公开的实施例通过避免对片外存储装置的高延迟随机访问来帮助加速这样的计算。例如,本公开的实施例可加速社交网络的图形分析以检测恐怖分子网络,加速电网的图形分析以优化电力分配等。
尽管划分模块210被描述为与数据计算模块212分开的功能单元,但是本领域技术人员将认识到,在不脱离本发明构思的精神和范围的情况下,多个模块的功能可被组合或集成到单个模块中,或者被进一步细分为子模块。例如,划分模块210的功能可由数据计算模块212在执行顶点函数的同时执行,从而允许图形工作负载被同时计算和划分。
图3是根据一个示例性实施例的响应于将低局部性数据转换方法应用于输入源数据而生成的区块的示意框图。经由低局部性数据转换方法302处理存储在片外存储装置208中的低局部性数据300,以将低局部性数据300转换为高局部性数据304。然后将高局部性数据304存储回片外存储装置208中。例如由数据计算模块212确定的高局部性目的地306现在可经由对片外存储装置208的顺序访问来消耗高局部性数据,从而使片外存储装置208的可用带宽最大化并提高数据计算模块212的性能。在一个实施例中,可减少和/或消除对片外存储装置208的随机访问。相反,在片外存储装置208中的数据被顺序地访问并被加载到片上存储装置之后,对数据的任何随机访问(例如,由于区块本身中的数据可不被完全排序的事实)可在片上存储装置202上发生。这样的顺序访问可在通过数据计算模块212的计算功能期间发生。因此,在需要对数据的随机访问的情况下,片上存储装置202的较低延迟可被利用和最大化。因此,根据一个实施例,系统的性能可取决于片外存储装置208的带宽,从而允许利用以存储器为中心的架构提供的大的内部带宽。
图4是根据一个示例性实施例的由低局部性数据转换方法生成的树状递归划分的示意布局图。划分从原始输入源数据400开始,原始输入源数据400可以是采用随机键值对形式的非结构化数据。在一个示例中,非结构化源数据是图形数据。在图4的示例中,输入源数据的最低键是1,并且最高键是11。因此,输入源数据400具有10的范围。
在第一级划分402期间,输入源数据400被划分为区块A 404和区块B406。在一个实施例中,每个划分的范围计算如下:
划分的范围=输入批的范围(V)/区块扇出(P)
将上述公式用于图4的示例,第一级划分402中的每个区块404、406具有10/2=5的范围。在这方面,当从片外存储装置208读取输入源数据400时,根据键是较小的(在这种情况下,输入源数据400被写入区块A 404)还是较大的(在这种情况下,输入源数据400被写入区块B406),输入源数据400被缓冲到片上存储装置202的正确区块(区块A 404或区块B406)中。因此,在图4的示例中,区块A中的数据仅具有1与5之间的键值,而区块B中的数据仅具有6与11之间的键值。在一个实施例中,在每个级别的划分期间,由当前级别的划分产生的被划分的数据具有比先前级别的划分产生的被划分的数据的局部性高的局部性。
在一个实施例中,第一级划分402调用对原始输入源数据400的单次顺序的读取和写入传递以创建P(例如,2)个子区块。在一个实施例中,写入传递的块大小与片外存储装置208中的一个I/O块大小匹配。这有助于提供片外存储装置208的可用带宽的最大利用。
另一单个顺序读取和写入传递可在第二级划分408期间发生,以从父区块A 404生成区块C 410和D 412,并且从父区块B 406生成区块E 414和区块F 416。因此,在完成第二级划分408之后,生成一个或多个指数数量(P2=22)的区块。一系列附加递归划分被执行,直到目标数量的T个区块被获得为止。在一个实施例中,区块的目标数量T基于片上存储装置202的存储容量来确定,并且作为输入参数与扇出值P一起被馈送到低局部性数据转换方法。
在一个实施例中,低局部性数据转换方法包含用于将区块有效地存储在片上存储器202和片外存储器208两者中的数据存储技术。在一个实施例中,数据存储技术允许存储装置中的动态存储器分配和数据的紧密打包,使得不仅使存储装置使用最大化,而且还提高性能。例如,应用于片上存储装置202的数据存储技术有助于支持更高的扇出数量P,因为扇出数量越高,在生成目标数量的T个区块之前通过输入数据的传递次数越少,所以这转化为更好的性能。
图5是根据一个示例性实施例的用于由划分模块210创建划分的处理的示意布局图。该处理开始,并且存储在片外存储装置208中的一批输入源数据400被访问并且以块的形式被流传输到片上存储装置202。在一个实施例中,这是从片外存储装置208的顺序读取操作。如图5中所示,输入源数据400可以是键值对(例如,<K,V>)的形式。
划分模块210根据例如由用户定义的划分函数f(P)将加载的批划分为P个临时区块。假设P被设置为2,则两个区块(例如,区块A 404和区块B406)被生成,并且划分的结果被缓冲在片上存储装置202中。在一个实施例中,由于片上存储装置202的低延迟,所以划分函数f(P)使用单个处理器时钟周期。
生成的临时区块404、406可被流传输回片外存储装置208,并且可被存储在片外存储装置208的分配空间中。在一个示例中,可在片外存储装置中分配固定的存储器空间,其中,在特定递归步骤生成的所有区块被存储在固定的存储器空间中。针对当前批中的每个块继续这个处理,直到块被加载、划分并存储回片外存储装置208以完成第一级划分为止。在一个实施例中,将块存储回片外存储装置208调用顺序写入操作。在一个实施例中,每个写入操作的块大小可与片外存储装置208中的一个I/O块大小匹配,从而允许外部存储装置208的可用带宽的最大利用。
在一个实施例中,划分模块210可被配置为调用用于在存储器中对数据进行紧密地打包的数据存储技术,以使存储空间最大化并提高性能。将数据存储在片上存储器装置202和片外存储器装置208中发生在每个级别的划分期间。根据一个实施例的数据存储技术使用数据表示方案,该数据表示方案有助于确保使用存储器中的相同空间来存储在每个级别的划分中的数据。如本领域技术人员将认识到的,根据现实世界工作负载,生成的区块可包含更多或更少的数据。也就是说,在划分期间,一些区块可包含比其他区块多或少的数据。因此,将目的地区块表示为片外存储装置208中的固定阵列会是低效率的并且会导致存储器中的数据溢出。
在一个实施例中,由低局部性数据转换方法采用的数据存储技术被配置为提高数据打包效率。当处理大尺寸数据时,划分模块212可生成许多区块。因此,可在不同的划分级别生成附加的不同区块,并且将区块打包在一起的低效率也可在每个相应的级别指数地增加。在一个实施例中,数据存储技术被配置为将数据完全且紧密地打包在存储装置中,使得无论划分的级别或数量如何,相同的存储器大小都足以存储被划分的数据。
在一个实施例中,由低局部性数据转换方法采用的数据存储技术还被配置为提高生成划分的性能。可影响这样的性能的一个参数是区块扇出(P)参数。在每个级别生成的区块越多(P的值越高),用于生成所需数量(T)个划分的通过输入源的传递的次数越少。在一个实施例中,通过输入数据的传递的次数被计算为logp(T)。例如,如果P为16且T为65,536,则划分模块210进行通过输入数据的四(4)次传递以实现65,536个区块。然而,如果P是256,则划分模块210仅进行两(2)次传递以生成相同目标数量(65,536)个区块。在一个实施例中,在每一级划分(即,每个递归步骤)期间,可以仅部分临时父区块被划分为子区块,只要在至少一级划分后最终划分出的区块的数量达到T即可。由于片上存储器的限制,表示具有许多固定大小阵列的片上(例如,SRAM)子区块将导致片上存储装置202的溢出。然而,通过经由本公开的实施例的数据存储技术表示片上子区块,可使用有限的片上资源来表示许多子区块(即,相对大的P值),从而实现性能的整体提高。
图6是根据一个示例性实施例的用于将数据打包到片外存储装置208上的处理的示意布局图。相同的处理也可用于将数据打包在片上存储装置202中。此外,尽管数据存储技术被描述为由划分模块210实现,但是本领域技术人员将认识到,可经由专用于响应于划分模块210的命令进行数据打包的单独模块来实现数据存储技术。
在图6的示例中,划分模块210在第二级划分期间从父区块A 404和B 406生成子区块C 410至F 416。在一个实施例中,划分模块210被配置为将子区块410至416存储在片外存储装置208的分配空间中,使得不留下空的空间。在这方面,可动态地分配数据块600至612(例如,存储装置中的固定宽度阵列空间)以存储增长的被划分的数据。在一个实施例中,区块被存储为动态分配的数据块的链表。每当属于划分的数据将被存储在存储装置中,并且为其分配的可用空间(例如,区块C的块600)被填满时,为其分配另一数据块(例如,块602)并将其链接到与该区块相关联的最后一个数据块(例如,块600)。
在一个实施例中,划分模块210存储用于跟踪哪些数据块属于哪些划分的元数据信息614。在这方面,针对经由区块标识符616标识的每个区块,元数据信息614可包括标识存储划分的块的数据块偏移618。如图6中所示,数据块偏移618指示区块C被存储在块B0和B1中,区块D被存储在块B2和B3中,区块E被存储在块B1和B4中,区块F被存储在块B3、B5和B6中。文件开始(sof)620和文件结束(eof)622针对每个区块标识在所标识的块内被划分的数据所在的位置。
在一个实施例中,使用第(1/D)(即,NB/D)元数据空间(其中,D是数据块大小,NB是输入批的大小)对NB数量的键值对进行划分。如果NB=1,000,000键值(kv),D=10,000键值,则第1/10000(即,100个kv)用于元数据空间。如果NB=1,000,000,000键值,D=10,000键值,则第1/10000(即,100,000个kv)用于元数据空间。
在一个实施例中,当子区块410至416被存储在数据存储装置中时,数据存储技术使得它们的数据从在先前[父的]父区块中的对应的子区块停止的位置被存储。对应的子区块可根据需要被预设。例如,假设区块Pi1(例如,区块C)是父区块Pi(例如,父区块A)的第一子区块,并且区块P(i+1)1(例如,区块E)是父区块P(i+1)(例如,父区块B)的第一子区块。还假设区块Pi2(例如,区块D)是区块Pi(例如,父区块A)的第二子区块,而区块P(i+1)2(例如,区块F)是区块P(i+1)(例如,父区块B)的第二子区块。在一个示例中,数据存储技术可被配置为使得区块P(i+1)1(例如,区块E)在区块Pi1(例如,区块C)结束之处开始存储其数据,并且区块P(i+1)2(例如,区块F)从区块Pi2(例如,区块D)结束之处开始存储其数据。以这种方式,可在允许使用相同的(固定宽度)空间(工作卷(或称为工作空间,work volume))存储任意数量的子区块的同时,实现划分级别中的所有对应的子区块的紧密结合。当然,本领域技术人员应当认识到,其他类型的对应的子区块配置也是可行的。
在图6的示例中,划分模块210通过将区块C数据存储在动态分配的块600和602中开始。仅块602的部分602a填充有区块C数据。然后,划分模块210继续将区块D数据存储在动态分配的块604、606中。因此,块606的部分606a填充有区块D数据。
在图6的示例中,划分模块210然后继续将区块E数据存储在存储装置中。在这样做时,划分模块210首先通过在分配另一数据块608以存储剩余的区块E数据之前将区块E数据的一部分存储到部分602b中来使块602的使用最大化。类似地,当区块F数据被存储在存储装置中时,划分模块210首先通过在动态地分配块610和612以存储剩余的区块F数据之前将区块F数据的一部分存储到部分606b中来使块606的使用最大化。
在一个实施例中,划分模块210还被配置有存储器管理技术,该存储器管理技术在创建区块时进一步提供空间效率。在一个实施例中,使用片外存储装置208中的相等的固定大小的两个工作空间/卷来生成多个区块。
图7是根据一个示例性实施例的在每个级别的划分期间交替使用的片外存储装置208的两个工作卷700、702的布局框图。在一个实施例中,在第一级划分402期间,工作卷700存储原始输入源数据400。在这方面,在第一级划分402期间,工作卷700可被称为源工作卷。划分模块210可使用源工作卷700中的输入源数据400将数据加载并划分为两个目的地区块(区块A404和区块B406)。一旦被划分,区块A 404和B 406就被存储在工作卷702中,工作卷702可在第一级划分期间被称为目的地工作卷。
在第二级划分408期间,存储在工作卷702中的在第一级划分中生成的每个区块(例如,区块A和B)现在成为被加载并被划分为区块410至416的源数据。因为源数据(区块A和B)被存储在工作卷702中,所以工作卷700中的数据可能不再有用。因此,在第二级划分期间,工作卷702是源工作卷,并且工作卷700是目的地工作卷。在第二级划分期间生成的区块410至416被存储在目的地工作卷700中,覆写原始输入源数据400。
随着进一步级别的划分发生,工作卷700和702交换作为源工作卷和目的地工作卷的角色,直到目标数量的区块被生成为止。将工作卷作为源工作卷和目的地工作卷进行交换有助于提供空间效率,使得在一个实施例中,低局部性数据转换方法仅需要2×NB(其中,NB是输入批的大小)来产生目标数量(T)个区块。另外,由于低局部性数据转换方法使用的数据打包技术,提供了划分的最大空间打包,使得不管在每个级别将存储的划分的数量如何,每个工作卷700、702可以是足够的。
图8A和图8B是根据一个示例性实施例的以交替方式使用两个工作卷700和702在每个级别的划分生成划分的处理的示意布局图。在如图8A所描绘的第一级划分期间,工作卷700是从其加载源输入数据的批800的源工作卷。运行取决于区块扇出值P的划分函数f(x)以生成P个区块(例如,区块A 404和区块B406)。生成的区块被存储在片上存储器202的输出缓冲器804中,并且被加载到片外存储装置208的工作卷702。
在如图8B中所描绘的第二级划分期间,工作卷702是从其加载源输入数据的批810的源工作卷。运行划分函数以生成P个区块(例如,区块E 414和区块F 416)。区块414和416然后被存储在片上存储器202的输出缓冲器804中,并且以使数据打包最大化的方式被存储到片外存储装置208的工作卷700。
根据各种实施例的低局部性数据转换方法允许以块级(例如,SSD的NAND物理页大小)将大的低局部性数据转换为高局部性数据(被存储为区块),而不是在较多的时间内存储整个数据集。由于其处理的数据的低局部性而遭受随机访问模式的大数据应用(例如,图形处理应用)可因此经由将低局部性数据转换为高局部性的被划分的数据而受益。此外,低局部性数据转换方法可不需要数据的完美顺序性。相反,在一个实施例中,为对存储装置的随机访问提供SSD页级(page-level)局部性。利用存储装置附近的可用资源(诸如,FPGA)来合并对存储装置的随机和细粒度访问。
在一个实施例中,低局部性数据转换方法提供树状递归划分策略,树状递归划分策略允许(当与片外存储装置的延迟相比时)片上存储装置的低得多的延迟被利用和最大化。对于每个连续级别的划分(L),进行通过输入数据源的单个顺序扫描以生成指数数量(PL)的区块。在一个实施例中,公开的系统可避免对片外存储器装置的许多形式的随机访问。因此,可使系统的性能取决于片外(例如,DRAM)位宽。在一个实施例中,片外存储装置经历顺序数据访问模式。由于更高的带宽效率,这样的顺序访问模式可比随机访问模式更有效。
在一个实施例中,片上存储装置中的子区块的数据表示允许低局部性数据转换系统支持转换为更好性能的大数量的P。高数量的P转换为在最终生成T个区块之前通过输入数据的传递的较少次数。
在一个实施例中,片外存储的数据打包技术允许空间效率。在每个级别的划分,生成附加指数数量的区块。因此,低局部性数据转换方法的数据存储技术允许将数据紧密地打包在存储装置中,使得无论NB(输入批大小)的值、L(划分的当前级别)的值或T(所需的区块的目标数量)的值如何,相同的工作卷大小都将是足够的。
图9是根据一个示例性实施例的用于使用工作卷700和702来创建多个划分的处理的流程图。该处理开始,并且在动作900中,划分模块210确定将被生成的多个区块的目标数量T。
根据一个实施例,片外存储装置208的工作卷700最初充当源工作卷,并且片外存储装置的工作卷702最初充当目的地工作卷。在这方面,在动作902中,划分模块210从工作卷700(当前源工作卷)加载数据。
在动作904中,划分模块210将数据划分为P个区块。
在动作906中,划分模块210将P个区块加载回片外存储装置中,并将P个区块保存到工作卷702(当前目的地工作卷)中。
在动作908中,确定是否已经创建了目标数量的T个区块。如果答案为是,则该处理结束,并且当前目的地工作卷中的被划分的数据可被数据计算模块212访问。
如果答案为否,则划分模块将当前目的地工作卷(工作卷702)设置为源工作卷,并进一步将当前源工作卷(工作卷700)设置为目的地工作卷。重复加载902、划分904和回加载906的动作,直到目标数量的T个区块被生成为止。
在一些实施例中,包括划分模块210和数据计算模块212的上述模块在一个或多个处理电路中实现。如在此所使用的术语“处理电路”可表示用于处理数据或数字信号的硬件、固件和软件的任何组合。处理电路硬件可包括例如专用集成电路(ASIC)、通用或专用中央处理器(CPU)、数字信号处理器(DSP)、图形处理器(GPU)和可编程逻辑器件(诸如,现场可编程门阵列(FPGA))。在处理电路中,如在此所使用的,每个功能由被配置(即,硬连线)以执行所述功能的硬件执行,或由被配置以执行存储在非暂时性存储介质中的指令的更通用硬件(诸如,CPU)执行。处理电路可制造在单个印刷电路板(PCB)上或者分布在多个互连的PCB上。处理电路可包含其他处理电路;例如,处理电路可包括在PCB上互连的两个处理电路(FPGA和CPU)。
将理解,尽管在此可使用“第一”、“第二”、“第三”等的术语来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应被这些术语限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分进行区分。因此,在不脱离发明构思的精神和范围的情况下,在此讨论的第一元件、第一组件、第一区域、第一层或第一部分可被称为第二元件、第二组件、第二区域、第二层或第二部分。
在此使用的术语仅用于描述特定实施例的目的,并且不意在限制发明构思。如在此使用的,术语“基本上”、“约”和类似术语用作近似术语而不是程度术语,并且意在解释本领域普通技术人员将认识到的测量值或计算值的固有偏差。
如在此使用的,除非上下文另外清楚地指示,否则单数形式也意在也包括复数形式。还将理解,当术语“包括”和/或“包含”在本说明书中被使用时,说明存在陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。如在此使用的,术语“和/或”包括相关所列项中的一个或多个的任何组合和所有组合。诸如“……中的至少一个”的表述在一列元素之后时,修饰整列元素,而不修饰列中的单个元素。此外,当描述发明构思的实施例时使用“可”表示“本公开的一个或多个实施例”。此外,术语“示例性”意在表示示例或说明。如在此使用的,术语“使用”及其变型可被认为与术语“利用”及其变型同义。
将理解,当元件或层被称为“在”另一元件或层“上”、“连接到”、“结合到”或“邻近”另一元件或层时,该元件或层可直接在另一元件或层上、直接连接到、直接结合到或直接邻近另一元件或层,或者可存在一个或多个中间元件或层。相反,当元件或层被称为“直接在”另一元件或层“上”、“直接连接到”、“直接结合到”或“紧邻”另一元件或层时,不存在中间元件或层。
在此所列的任何数值范围意在包括包含在所列的范围内的相同数值精度的全部子范围。例如,“1.0至10.0”的范围意在包括所列的最小值1.0与所列的最大值10.0之间(并且包括所列的最小值1.0和所列的最大值10.0)的全部子范围(即,具有等于或大于1.0的最小值以及等于或小于10.0的最大值(诸如,以2.4至7.6为例))。在此所列的任何最大数值限制意在包括包含在其中的全部较低数值限制,并且本说明书中所列的任何最小数值限制意在包括包含在其中的全部较高数值限制。
尽管在此已经具体描述和示出了用于将低局部性数据转换为高局部性数据的系统和方法的示例性实施例,但是对于本领域技术人员来说,许多修改和变化将是清楚的。因此,将理解,根据本公开的原理构造的用于知识蒸馏的系统和方法可以以不同于在此具体描述的方式来实现。本公开还在权利要求及其等同物中被限定。
Claims (20)
1.一种用于处理非结构化源数据的方法,所述方法包括:
确定区块的目标数量T;
将非结构化源数据识别为用于第一级递归的输入数据;
基于输入数据递归地生成区块,直到所述目标数量的T个区块被生成,其中,递归地生成的步骤包括:
将输入数据从片外存储装置加载到片上存储装置,输入数据具有范围V;
经由片上存储装置将输入数据划分为P个临时区块,其中,所述P个临时区块中的特定临时区块具有范围V/P;
将所述P个临时区块从片上存储装置存储到片外存储装置;以及
将所述P个临时区块中的一个临时区块中的数据识别为用于下一级递归的输入数据,
其中,应用被配置为从所述T个区块执行对被划分的数据的访问以生成输出,其中,对被划分的数据的访问是对片外存储装置的顺序读取访问,其中,T、V和P是大于1的数值。
2.根据权利要求1所述的方法,其中,T基于片上存储装置的存储容量来确定,其中,生成的T个区块中的特定区块中的被划分的数据的范围在片上装置的存储容量内。
3.根据权利要求2所述的方法,其中,用于第一级递归的输入数据具有范围R,其中,生成的T个区块中的特定区块中的被划分的数据的范围是R/T。
4.根据权利要求1所述的方法,其中,被划分的数据具有比输入数据的局部性高的局部性。
5.根据权利要求1所述的方法,其中,经由片外存储装置的顺序读取操作来按批加载输入数据,并且经由片外存储装置的顺序写入操作来存储所述P个临时区块。
6.根据权利要求1所述的方法,其中,在片外存储装置中分配固定的存储器空间,其中,在每一级递归生成的所有区块被存储在所述固定的存储器空间中。
7.根据权利要求1所述的方法,其中,在递归生成步骤的第一级递归期间,所述P个临时区块是P个临时父区块,在递归生成步骤的第二级递归期间,所述P个临时区块是P个临时子区块,
其中,在第二级递归期间存储所述P个临时子区块的步骤包括调用数据存储处理,所述数据存储处理包括:
动态地分配固定大小的数据块,其中,所述数据块存储来自所述P个临时父区块中的第一父区块的P个临时子区块中的第一临时子区块的一部分、和来自所述P个临时父区块中的第二父区块的P个临时子区块中的第二临时子区块的一部分,以使数据块的存储空间的使用最大化。
8.根据权利要求1所述的方法,其中,从片外存储装置访问的被划分的数据的一部分被存储在片上存储装置上,所述方法还包括:
经由随机数据访问来访问片上存储装置上的被划分的数据。
9.根据权利要求1所述的方法,其中,片上存储装置是静态随机存取存储器,并且片外存储装置是动态随机存取存储器或固态驱动器。
10.根据权利要求1所述的方法,其中,非结构化源数据是图形数据,并且所述应用是图形处理应用。
11.一种用于处理非结构化源数据的系统,所述系统包括:
片外存储装置;
片上存储装置;以及
处理器,连接到片上存储装置和片外存储装置,处理器被配置为:
确定区块的目标数量T;
将非结构化源数据识别为用于第一级递归的输入数据;
基于输入数据递归地生成区块,直到所述目标数量的T个区块被生成,其中,处理器被配置为:
将输入数据从片外存储装置加载到片上存储装置,输入数据具有范围V;
经由片上存储装置将输入数据划分为P个临时区块,其中,所述P个临时区块中的特定临时区块具有范围V/P;
将所述P个临时区块从片上存储装置存储到片外存储装置;以及
将所述P个临时区块递中的一个临时区块中的数据识别为用于下一级递归的输入数据,
其中,应用被配置为从所述T个区块执行对被划分的数据的访问以生成输出,其中,对被划分的数据的访问是对片外存储装置的顺序读取访问,
其中,T、V和P是大于1的数值。
12.根据权利要求11所述的系统,其中,T基于片上存储装置的存储容量来确定,其中,生成的T个区块中的特定区块中的被划分的数据的范围在片上装置的存储容量内。
13.根据权利要求11所述的系统,其中,用于第一级递归的输入数据具有范围R,其中,生成的T个区块中的特定区块中的被划分的数据的范围是R/T。
14.根据权利要求11所述的系统,其中,被划分的数据具有比输入数据的局部性高的局部性。
15.根据权利要求11所述的系统,其中,经由片外存储装置的顺序读取操作成批加载输入数据,并且经由片外存储装置的顺序写入操作来存储所述P个临时区块。
16.根据权利要求11所述的系统,其中,在片外存储装置中分配固定的存储器空间,其中,处理器被配置为:使用所述固定的存储器空间来存储在每一级递归生成的所有区块。
17.根据权利要求11所述的系统,其中,在递归生成步骤的第一级递归期间,所述P个临时区块是P个临时父区块,在递归生成步骤的第二级递归期间,所述P个临时区块是P个临时子区块,
其中,处理器被配置为:经由数据存储处理在第二级递归期间存储所述P个临时子区块,所述数据存储处理包括:
动态地分配固定大小的数据块,其中,所述数据块存储来自所述P个临时父区块中的第一父区块的P个临时子区块中的第一临时子区块的一部分、和来自所述P个临时父区块中的第二父区块的P个临时子区块中的第二临时子区块的一部分,以使数据块的存储空间的使用最大化。
18.根据权利要求11所述的系统,其中,处理器被配置为:将从片外存储装置访问的被划分的数据的一部分存储在片上存储装置上,处理器还被配置为:
经由随机数据访问来访问片上存储装置上的被划分的数据。
19.根据权利要求11所述的系统,其中,片上存储装置是静态随机存取存储器,并且片外存储装置是动态随机存取存储器或固态驱动器。
20.根据权利要求11所述的系统,其中,非结构化源数据是图形数据,并且所述应用是图形处理应用。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062976296P | 2020-02-13 | 2020-02-13 | |
US62/976,296 | 2020-02-13 | ||
US16/795,510 US11442643B2 (en) | 2020-02-13 | 2020-02-19 | System and method for efficiently converting low-locality data into high-locality data |
US16/795,510 | 2020-02-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113325999A CN113325999A (zh) | 2021-08-31 |
CN113325999B true CN113325999B (zh) | 2023-09-15 |
Family
ID=77273447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110141151.9A Active CN113325999B (zh) | 2020-02-13 | 2021-02-02 | 用于处理非结构化源数据的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11442643B2 (zh) |
KR (1) | KR20210103385A (zh) |
CN (1) | CN113325999B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9715502B1 (en) * | 2015-03-25 | 2017-07-25 | Amazon Technologies, Inc. | Distributed data migration using chunking |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6813701B1 (en) | 1999-08-17 | 2004-11-02 | Nec Electronics America, Inc. | Method and apparatus for transferring vector data between memory and a register file |
WO2002057917A2 (en) | 2001-01-22 | 2002-07-25 | Sun Microsystems, Inc. | Peer-to-peer network computing platform |
US8756404B2 (en) | 2006-12-11 | 2014-06-17 | International Business Machines Corporation | Cascaded delayed float/vector execution pipeline |
US8219749B2 (en) * | 2007-04-27 | 2012-07-10 | Netapp, Inc. | System and method for efficient updates of sequential block storage |
US8886796B2 (en) | 2008-10-24 | 2014-11-11 | Microsoft Corporation | Load balancing when replicating account data |
US9213732B2 (en) | 2012-12-28 | 2015-12-15 | Sap Ag | Hash table and radix sort based aggregation |
US9465622B2 (en) | 2012-10-17 | 2016-10-11 | Samsung Electronics Co., Ltd. | Application defined computing component configuration |
US8959301B2 (en) * | 2012-11-09 | 2015-02-17 | International Business Machines Corporation | Accessing data in a storage system |
JP6149595B2 (ja) | 2013-08-13 | 2017-06-21 | 富士通株式会社 | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 |
CN105320466A (zh) | 2014-07-29 | 2016-02-10 | 广明光电股份有限公司 | 固态硬盘安排操作的方法 |
US10356150B1 (en) * | 2014-12-15 | 2019-07-16 | Amazon Technologies, Inc. | Automated repartitioning of streaming data |
US10146806B2 (en) * | 2015-02-12 | 2018-12-04 | Oracle International Corporation | Adaptive resolution hsitogram |
WO2016154079A1 (en) * | 2015-03-20 | 2016-09-29 | Burlywood, LLC | Configurable multi-level error correction in a storage controller |
US10496283B2 (en) * | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
US10468093B2 (en) | 2016-03-03 | 2019-11-05 | Nvidia Corporation | Systems and methods for dynamic random access memory (DRAM) sub-channels |
CN105843775B (zh) * | 2016-04-06 | 2018-12-04 | 中国科学院计算技术研究所 | 片上数据划分读写方法、系统及其装置 |
US10409727B2 (en) | 2017-03-31 | 2019-09-10 | Intel Corporation | System, apparatus and method for selective enabling of locality-based instruction handling |
KR102172866B1 (ko) | 2017-04-17 | 2020-11-02 | 딥시그 인크. | 라디오 신호 프로세싱 데이터플로 연산들의 배치 및 스케줄링 |
-
2020
- 2020-02-19 US US16/795,510 patent/US11442643B2/en active Active
- 2020-12-10 KR KR1020200172139A patent/KR20210103385A/ko not_active Application Discontinuation
-
2021
- 2021-02-02 CN CN202110141151.9A patent/CN113325999B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9715502B1 (en) * | 2015-03-25 | 2017-07-25 | Amazon Technologies, Inc. | Distributed data migration using chunking |
Also Published As
Publication number | Publication date |
---|---|
CN113325999A (zh) | 2021-08-31 |
TW202131174A (zh) | 2021-08-16 |
US11442643B2 (en) | 2022-09-13 |
KR20210103385A (ko) | 2021-08-23 |
US20210255792A1 (en) | 2021-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10942673B2 (en) | Data processing using resistive memory arrays | |
EP3757901A1 (en) | Schedule-aware tensor distribution module | |
JP7381429B2 (ja) | ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法 | |
KR20210002676A (ko) | 집약성을 개선하기 위한 머신 학습 모델들의 수정 | |
JP7201802B2 (ja) | 3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末 | |
US20190228308A1 (en) | Deep learning accelerator system and methods thereof | |
Han et al. | A novel ReRAM-based processing-in-memory architecture for graph traversal | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
US20210286551A1 (en) | Data access ordering for writing-to or reading-from memory devices | |
US20200090051A1 (en) | Optimization problem operation method and apparatus | |
CN109491934B (zh) | 一种集成计算功能的存储管理系统控制方法 | |
US20210200439A1 (en) | Matrix storage method, matrix access method, apparatus and electronic device | |
US11429299B2 (en) | System and method for managing conversion of low-locality data into high-locality data | |
Ji et al. | Memory-efficient deep learning inference with incremental weight loading and data layout reorganization on edge systems | |
KR20210024751A (ko) | 이종 메모리 장치를 포함하는 그래프 처리 시스템 및 그래프 처리 시스템의 동작방법 | |
CN113325999B (zh) | 用于处理非结构化源数据的方法和系统 | |
US20220350863A1 (en) | Technology to minimize the negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding | |
CN111694513A (zh) | 包括循环指令存储器队列的存储器器件和方法 | |
TWI843934B (zh) | 用於處理無結構源資料的方法及系統 | |
US20220350514A1 (en) | Memory mapping of activations for convolutional neural network executions | |
KR101967857B1 (ko) | 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법 | |
Kim et al. | FPGA Prototyping of Low-Precision Zero-Skipping Accelerator for Neural Networks | |
Walter et al. | LION: real-time I/O transfer control for massively parallel processor arrays | |
US20220107844A1 (en) | Systems, methods, and devices for data propagation in graph processing | |
Wang et al. | SH-GAT: Software-hardware co-design for accelerating graph attention networks on FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |