CN111324777A - 用于分片创建的装置和系统 - Google Patents
用于分片创建的装置和系统 Download PDFInfo
- Publication number
- CN111324777A CN111324777A CN201911151417.7A CN201911151417A CN111324777A CN 111324777 A CN111324777 A CN 111324777A CN 201911151417 A CN201911151417 A CN 201911151417A CN 111324777 A CN111324777 A CN 111324777A
- Authority
- CN
- China
- Prior art keywords
- vertex
- data elements
- processor circuit
- dynamic
- active
- 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 claims abstract description 63
- 239000012634 fragment Substances 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 50
- 238000003860 storage Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 34
- 238000005192 partition Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 17
- 230000008859 change Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000013467 fragmentation Methods 0.000 description 6
- 238000006062 fragmentation reaction Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000002513 implantation Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000003826 tablet Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000000739 chaotic effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 235000012773 waffles Nutrition 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
- G06F16/287—Visualization; Browsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Generation (AREA)
- Debugging And Monitoring (AREA)
Abstract
根据一个一般方面,一种用于分片创建的装置可包括主机处理器接口电路,所述主机处理器接口电路被配置成与外部主机处理器电路传送数据及命令。所述装置可包括控制器处理器电路,所述控制器处理器电路被配置成将图形数据元合并成合并动态分片,其中合并动态分片包括相同数目的图形数据元。所述装置可包括非易失性存储器,所述非易失性存储器被配置成将数据存储在至少部分的图形结构中,其中图形结构包括各自包含顶点及边缘的数据元,且其中数据元的子部分被分组成分片。也提供一种用于分片创建的系统。
Description
[相关申请的交叉参考]
本申请主张2018年12月14日提出申请、标题为“用于图形工作负荷的存储体中的最佳动态分片创建(OPTIMAL DYNAMIC SHARD CREATION IN STORAGE FOR GRAPHWORKLOADS)”且序列号为62/780,186的临时专利申请的优先权。此先前提交的申请的主题并入本文供参考。
技术领域
本说明涉及数据的存储及处理,且更具体来说,涉及用于图形工作负荷的存储体中的最佳动态分片创建。
背景技术
在计算机科学中,图形理论是对图形的研究,图形是用来对对象之间的成对(pairwise)关系进行建模的数据结构。本上下文中的图形由通过边缘、弧或线连接的顶点、节点、或者点构成。在计算中,图形数据库(graph database,GDB)是使用具有节点、边缘及属性的用于语义查询的图形结构来表示及存储数据的数据库。所述系统的关键概念是图形(或边缘或关系),图形与存储的数据节点的集合以及表示节点之间的关系的边缘的数据项直接关联。所述关系使得存储中的数据直接联系在一起,且在许多情况下通过一个操作进行检索。图形数据库优先保存数据之间的关系。由于图形数据库内的关系永久存储在数据库本身内,因此查询图形数据库内的关系非常快。使用图形数据库可将关系直观地可视化,从而使其适用于相互联系度非常高的数据。
随着大数据应用(Big Data application)已变得更加实用,图形计算近来已变得流行。作为几个实例,在计算机科学中使用图形来表示计算的流程。在操作系统中,将资源分配图形用于进程及死锁检测及纠正。图形用于对分子的研究中、用于对化学中键的构造进行研究及对原子的研究。图形用于生物学及保护工作中,其中顶点表示特定种类存在的区域且边缘表示在区域之间的迁移路径或移动。谷歌地图以及一般来说在全球定位系统(global positioning system,GPS)应用中,使用图形来构建交通系统,其中两条(或更多条)道路的交叉点被认为是顶点且连接两个顶点的道路被认为是边缘,因此它们的导航系统采用图形来计算两个顶点之间的最短路径。同样,在搜索及推荐引擎中使用图形来识别页面相关性及互连性。在脸书(Facebook)及社交媒体中,用户被认为是顶点且如果他们是朋友的话,那么他们之间就会存在边缘。脸书的朋友建议技术(Friend suggestiontechnique)使用图形理论。
图形应用的重要的性能瓶颈是巨大的图形大小以及随机输入/输出(input/output,IO或I/O)存取模式。标准稀疏图形格式(standard sparse graph format)(例如压缩稀疏行(compressed sparse row,CSR)及压缩稀疏列(compressed sparse column,CSC))涉及边缘值的随机存取。由于具有数百万个顶点及数十亿条边缘的大的图形不适合动态随机存取存储器(dynamic random access memory,DRAM),因此标准稀疏图形格式会导致随机磁盘存取将图形数据存储在磁盘上并从磁盘加载图形数据。计算量少的IO密集型图形工作负荷由于其随机IO存取模式而遭受高的IO延迟,这是由于即使是快的非易失性存储器快速(non-volatile memory express,NVME)器件也会具有与它们的顺序性存取速度相比低得多的随机读取及写入速度。
发明内容
根据一个一般方面,一种装置可包括主机处理器接口电路,所述主机处理器接口电路被配置成与外部主机处理器电路传送数据及命令。所述装置可包括控制器处理器电路,所述控制器处理器电路被配置成将图形数据元合并成合并动态分片,其中所述合并动态分片中的每一个合并动态分片包括相同数目的图形数据元。所述装置可包括非易失性存储器,所述非易失性存储器被配置成将数据存储在至少部分的图形结构中,其中所述图形结构包括各自包含顶点及边缘的数据元,且其中所述数据元的子部分被分组成分片。
根据另一一般方面,一种系统可包括主机处理器电路,所述主机处理器电路被配置成执行与图形数据结构有关的指令。所述系统可包括至少一个存储器件。每一个存储器件可包括主机处理器接口电路,所述主机处理器接口电路被配置成与所述主机处理器电路传送数据。所述存储器件可包括控制器处理器电路,所述控制器处理器电路被配置成将图形数据元合并成合并动态分片,其中每一个合并动态分片包括相同数目的图形数据元。所述存储器件可包括非易失性存储器,所述非易失性存储器被配置成将数据存储在至少部分的图形结构中,其中所述图形结构包括各自包含顶点及边缘的数据元,且其中所述数据元的子部分被分组成分片。
在附图及以下说明中阐述一种或多种实施方式的细节。通过本说明及附图以及通过权利要求书,其他特征将明显。
实质上在各图中的至少一个图中示出和/或结合各图中的至少一个图阐述的一种对数据进行存储及处理的系统和/或方法,且更具体来说,关于用于图形工作负荷的存储体中的最佳动态分片创建在权利要求书中予以更完整的阐述。
附图说明
图1是根据所公开主题的系统的示例性实施例的方块图。
图2A及图2B是根据所公开主题的数据结构的示例性实施例的图。
图3A、图3B及图3C是根据所公开主题的数据结构的示例性实施例的图。
图3D、图3E及图3F是根据所公开主题的数据结构的示例性实施例的图。
图4A及图4B是根据所公开主题的数据结构的示例性实施例的图。
图5是可包括根据所公开主题的原理形成的器件的信息处理系统的示意性方块图。
各个附图中相同的参考符号指示相同的元件。
[符号的说明]
1A、1B、1C、1D、1E、1F、2A、2B、2C、2E、2F、3A、3B、3C、3D、3E:数据元/元;
1G、2G、3G:元;
2D、3F、122、270、272、274、276、278、280:数据元;
100、300:系统;
102:主机处理器件/主机处理器件或电路/主机处理器;
104:系统存储器/存储器/存储器件;
106:存储器件;
112:控制器处理器电路;
114:输入/输出(IO或I/O)系统或电路;
116:存储器存储体;
118:存储系统接口或电路/存储系统接口;
200:数据结构/图形;
204:数据结构/数据元;
206:数据结构/结构;
212、402:顶点;
214、X:边缘;
252:来源顶点识别符(ID)/子元;
254:目标顶点ID/子元;
256:边缘值/子元;
301:系统/系统或存储器件;
304:系统存储器/存储器;
306:存储器件或存储单元/存储体;
312:数据结构/分片/原始分片;
314:数据结构;
314A、314B、314C:处理中的分片/分片;
315A、315B、315C:框/活跃元;
316A、316B、316C:动态分片/数据结构;
317:动态分片/分片;
354:合并或处理电路/合并操作及合并电路;
356:存储单元/存储器;
364D、364E、364F:元/子集;
366D、366E、366F:合并动态分片/合并分片;
400、401:数据结构/图形结构/图形;
500:信息处理系统;
505:系统总线;
510:逻辑或处理器;
515:组合逻辑块(CLB);
520:易失性存储器;
530:非易失性存储器;
540:网络接口;
550:用户接口单元;
560:其他器件或硬件组件;
570:软件组件;
A、B、C、D、E、F、G、H、I、J、K、L:索引或识别符/顶点。
具体实施方式
在下文中,将参照附图更充分地阐述各种示例性实施例,在所述附图中示出一些示例性实施例。然而,本发明所公开主题可被实施为许多不同形式,而不应被视为仅限于本文所述示例性实施例。确切来说,提供这些示例性实施例是为了使本公开将透彻及完整,并将向所属领域中的技术人员充分传达本发明所公开主题的范围。在附图中,为清晰起见,可夸大各个层及各个区的大小及相对大小。
应理解,当称一元件或层位于另一元件或层“上(on)”、“连接到(connected to)”或“耦合到(coupled to)”另一元件或层时,所述元件或层可直接位于所述另一元件或层上、直接连接到或直接耦合到所述另一元件或层,或者可存在中间元件或层。相比之下,当称一元件“直接位于(directly on)”另一元件或层上、“直接连接到(directly connectedto)”或“直接耦合到(directly coupled to)”另一元件或层时,则不存在中间元件或层。相同的编号自始至终指代相同的元件。本文所用用语“和/或(and/or)”包括相关列出项中的一个或多个项的任意及所有组合。
应理解,尽管在本文中可使用“第一(first)”、“第二(second)”、“第三(third)”等用语来阐述各个元件、组件、区、层和/或区段,然而这些元件、组件、区、层和/或区段不应受限于这些用语。这些用语仅用于区分各个元件、组件、区、层或区段。因此,以下论述的第一元件、组件、区、层或区段也可被称为第二元件、组件、区、层或区段,而此并不背离本发明所公开主题的教示内容。
为易于说明,在本文中可使用例如“在…之下(beneath)”、“在…下面(below)”、“下部的(lower)”、“在…上方(above)”、“上部的(upper)”等空间相对性用语来阐述图中所示一个元件或特征与另一(其他)元件或特征的关系。应理解,空间相对性用语旨在除图中所绘示的取向外还囊括器件在使用或操作中的不同取向。举例来说,如果图中所示器件被翻转,则被阐述为位于其他元件或特征“下面”或“之下”的元件此时将被取向为位于所述其他元件或特征“上方”。因此,示例性用语“在…下面”可囊括“上方”及“下面”两种取向。器件可具有其他取向(旋转90度或处于其他取向)且本文所用的空间相对性描述语可相应地进行解释。
同样地,为易于说明,在本文中可使用例如“高(high)”、“低(low)”、“上拉(pullup)”、“下拉(pull down)”、“1”、“0”等电性用语来阐述图中所示电压电平或电流相对于其他电压电平或电流的关系或者相对于另一(其他)元件或特征的关系。应理解,所述电性相对用语旨在除了图中所绘示的电压或电流之外还囊括器件在使用或操作中的不同的参考电压。举例来说,如果图中所示器件或信号被反相或使用其他参考电压、电流或电荷,则被阐述为“高”或“被上拉”的元件此时与新的参考电压或电流相比将为“低”或“被下拉”的。因此,示例性用语“高”可囊括相对低的电压或电流或者相对高的电压或电流二者。器件可另外地基于不同的电性参考框架且本文所用的电性相对描述语可相应地加以解释。
本文所用术语仅是出于阐述特定示例性实施例的目的而并非旨在限制本发明所公开主题。除非上下文清楚地另外指明,否则本文所用单数形式“一(a、an)”及“所述(the)”旨在也包括复数形式。还应理解,当在本说明书中使用用语“包括(comprises和/或comprising)”时,是指明所陈述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
在本文中参照剖视图阐述示例性实施例,所述剖视图是对理想示例性实施例(及中间结构)的示意性例示。由此,预期会因例如制造技术和/或容差而导致相对于例示形状的变化。因此,示例性实施例不应被视为仅限于本文所示区的特定形状,而是应包含由例如制造引起的形状偏差。举例来说,被例示为矩形的注入区将通常具有圆形特征或曲线特征和/或在其边缘存在注入浓度的梯度而非从注入区到非注入区为二元变化。同样地,通过注入而形成的掩埋区可在所述掩埋区与在进行注入时所经过的表面之间的区中引起一些注入。因此,图中所例示的区为示意性的且其形状并非旨在例示器件的区的实际形状且并非旨在限制本发明所公开主题的范围。
除非另外定义,否则本文所用所有用语(包括技术及科学用语)的含义均与本发明所公开主题所属领域中的一般技术人员所通常理解的含义相同。还应理解,用语(例如在常用词典中所定义的用语)应被解释为具有与其在相关技术的上下文中的含义一致的含义,且除非在本文中明确定义,否则不应将其解释为具有理想化或过于正式的意义。
在下文中,将参照附图详细阐释示例性实施例。
图1是根据所公开主题的系统100的示例性实施例的方块图。在各种实施例中,系统100可包括计算器件,例如(举例来说)膝上型计算机(laptop)、台式计算机、工作站、个人数字助理、智能手机、平板计算机、系统芯片(system-on-a-chip,SoC)及其他适合的计算机或者虚拟机或虚拟机的虚拟计算器件。应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
如上所述,图形计算通常涉及将大量数据存储在大型存储系统(常常是分布式存储系统)上。同样,图形数据结构的处理通常在多个计算器件上并行地执行。趋势是将处理从所述多个器件移离且移到单个计算器件上。尽管如此,但所公开主题可应用于包括分布的多个系统的实施例。
如上所述,图形应用的重要的性能瓶颈是巨大的图形大小以及随机输入/输出(IO或I/O)存取模式。标准稀疏图形格式(例如压缩稀疏行(CSR)及压缩稀疏列(CSC))涉及边缘值的随机存取。由于具有数百万个顶点及数十亿条边缘的大的图形不适合动态随机存取存储器(DRAM),因此标准稀疏图形格式会导致随机磁盘存取将图形数据存储在磁盘上并从磁盘加载图形数据。计算量少的IO密集型图形工作负荷由于其随机IO存取模式而遭受高的IO延迟,这是由于即使是快的非易失性存储器快速(NVME)器件也会具有与它们的顺序性存取速度相比低得多的随机读取及写入速度。
在所示实施例中,系统100可用来尝试减少对图形结构进行处理所需的IO存取的量。系统100示出其中在存储器件106上执行图形结构处理中的部分处理的一个实施例。在另一实施例中,相同的处理或所述处理中的部分处理仍可由主机处理器件102执行。应理解,以上仅为一个例示性实例,所公开主题并非仅限于此。
在所示实施例中,系统100可包括主机处理器件或电路102。在此种实施例中,主机处理器102可被配置成执行一个或多个机器可执行指令或者一个或多个软件、固件或其组合。在各种实施例中,主机处理器102可包括中央处理器(central processing unit,CPU)或其他通用处理器。在另一实施例中,主机处理器102可包括专用处理器(例如,图形处理单元(graphical processing unit,GPU)或其他并行的面向计算的(computation-oriented)处理器)。在此种实施例中,主机处理器102可执行图形结构的总体处理中的大部分处理。应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
在所示实施例中,系统100可包括系统存储器104。在各种实施例中,系统存储器104可包括易失性存储器(例如,DRAM)、非易失性存储器、或其组合。在各种实施例中,存储器104可被配置成以临时或半永久的形式存储数据。
在所示实施例中,系统100可包括存储器件106。在各种实施例中,存储器件106可被配置成以半永久或实质上永久的形式存储数据。在所示实施例中,存储器件106可包括非易失性存储器(例如闪存、磁性存储器)。此外,在所示实施例中,存储器件106可被配置成至少部分地处理图形数据结构。在各种实施例中,系统100可包括多个存储器件106。
在此种实施例中,存储器件106可包括存储系统接口或电路118,存储系统接口或电路118被配置成与主机处理器件102或存储管理系统(未示出)进行通信(例如,进行数据及命令二者的通信),存储管理系统又与主机处理器102进行通信。
在此种实施例中,存储器件106可包括存储器存储体(memory storage)116或用于存储数据的多个存储单元、电路或元件。在所示实施例中,存储器存储体116可被配置成存储构成图形数据结构或图形数据结构的一部分的多个数据元122。
在各种实施例中,存储器件106可包括被配置成在存储器存储体116与存储系统接口118之间进行通信的输入/输出(IO或I/O)系统或电路114。在各种实施例中,IO系统114可包括闪存转换层(flash translation layer,FTL)电路或其他结构。在此种实施例中,IO系统114可包括各种高速缓冲存储器(cache)、表、或数据结构及用于实施这些高速缓冲存储器(cache)、表、或数据结构的电路。
在所示实施例中,存储器件106可包括控制器处理器电路112。在各种实施例中,控制器处理器电路112可被配置成在存储器件104内执行各种数据管理活动。在此种实施例中,这可包括磨损均衡(wear-leveling)、写入合并(write merging)等。在所示实施例中,控制器处理器电路112还可被配置成至少部分地处理图形数据的数据元122。在一些实施例中,主机处理器102可能够将一些处理任务卸载到控制器处理器电路112。具体来说,在此种实施例中,控制器处理器电路112可被配置成将图形数据元合并成合并动态分片、预测活跃边缘/顶点、和/或重新指派顶点识别符(identifier,ID)。应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
图2A及图2B是根据所公开主题的数据结构200、204及206的示例性实施例的图。在各种实施例中,这些数据结构200、204及206可至少部分地存储在存储器件或存储单元中。
数据结构200示出示例性图形数据结构。如上所述,图形数据结构可包括多个顶点212(例如,顶点A、B、C、D及E)。这些顶点212可表示各种现实世界或概念事物(例如,人、十字路口、网页、待售商品等)。这些顶点212可通过边缘214连接。一般来说,每一条边缘214包括与其相关联的强度或值,所述强度或值指示顶点212之间的关联的一些属性。此外,每一条边缘214可包括方向。一些图形可为单向的或者双向的。举例来说,边缘X 214可将来源顶点A212与目的地或目标顶点B 212连接起来。在各种实施例中,大量的其他属性可与顶点212及边缘214相关联。
数据结构204示出:在一个实施例中,每一条边缘214可被存储为数据元204。在此种实施例中,数据元204可包括包含来源顶点识别符(ID)252、目标顶点ID 254及边缘值256的三重数据。在各种实施例中,这些子元252、254及256可包括它们自己的数据结构(例如,数组、关联数组、键值对(key-value pair))或者指向数据结构的指针。在各种实施例中,数据元204可包括附加属性或值。应理解,以上仅为一个例示性实例,所公开主题并非仅限于此。
数据结构206示出:在一个实施例中,数据结构200可实际上存储在存储器件中。在此种实施例中,数据结构206可包括图形200的每一条边缘214的数据元270、272、274、276、278及280(统称为数据元204)。在各种实施例中,数据元204可由来源顶点ID 252进行分类或组织。
图3A、图3B及图3C是根据所公开主题的系统300及数据结构312、314A到314C及316A到316C的示例性实施例的图。在所示实施例中,系统300可还包括主机处理器(示出在图1中)。
在所示实施例中,图形数据结构可被修剪或减少成被称为“分片(shard)”的可管理的部分。图形结构常常包含数十亿条边缘。这意味着它们必须在大型并行计算集群上进行处理。为了解决这个问题,并行滑动窗口(Parallel Sliding Window,PSW)已被用于处理来自磁盘的非常大的图形。由于将较大的图形分成较小的子部分,因而每一个子部分可由单个计算器件(例如,主机处理器)单独处理,而不需要巨大的集群或分布式计算系统。
如上所述,图形可被分组成包含共性(commonality)的分片312,例如,所有边缘具有相同的目的地顶点或来源顶点。在此种实施例中,可对分片的大小进行选择以平衡计算任务的大小与更多数据的效率。
此外,图形结构一般会以循环(loop)形式或通过多次迭代进行处理。在重新开始整个进程之前,计算系统将处理或分析整个图形。如上所述,在每次迭代之间,边缘/顶点之间的值或连接可能会改变。以一定方式发生改变的值被认为是“活跃的”,而不发生改变的边缘/顶点常常被认为是“非活跃的”。
在所示实施例中,存储器件或存储单元306存储原始分片312。在所示实施例中,示出三个分片312。第一个分片包括数据元1A、1B、2A、2B、3A及3B。第二个分片包括数据元1C、1D、2C、2D、3C及3D。第三个分片包括数据元1E、1F、2E、2F、3E及3F。
在所示实施例中,处理器件(例如,主机处理器)可将期望的数据元从分片312加载或读取到系统存储器304(例如,DRAM)中。在图3A的所示实施例中,期望的数据元可包括第一个分片的全部元(1A、1B、2A、2B、3A及3B)、第二个分片的元1C及1D以及第三个分片的元1E及1F。这些数据元可包括处理中(in-process)的分片314A。
在此处理期间,处理器件可检测到分片314A的一部分已发生改变或者是活跃的。这由框315A表示,框315A指示元1A、1C及1E自上次迭代以来已发生改变且是活跃的。
在此种实施例中,处理器件可将活跃元315A写回到存储体306。这些活跃元315A可包括在一组动态分片316A中,所述一组动态分片316A是分片312的编辑形式(redactedversion)或最小化形式。在此种实施例中,这些动态分片316A可仅包括活跃元、具有活跃边缘的元、或者在一些实施例中具有活跃顶点的元。
继续进行说明,图3B示出下一个处理步骤。在第二个处理步骤或阶段中,处理器件(例如,主机处理器)可将期望的数据元从分片312加载或读取到系统存储器304中。在图3B的所示实施例中,期望的数据元可包括第一个分片的元2A及2B、第二个分片的所有元以及第三个分片的元2E及2F。这些数据元可包括处理中的分片314B。
在此处理期间,处理器件可检测到分片314B的一部分已发生改变或者是活跃的(元1A、1C及1E已被检测为活跃的)。这由框315B表示,框315B指示元2A、2C及2E自上次迭代以来已发生改变且是活跃的。在此种实施例中,处理器件可将活跃元315B写回到存储体306。这些活跃的元315B可包括在一组动态分片316B中或者附加/添加到一组动态分片316B。
图3C示出下一个处理步骤。在第三个处理步骤或阶段中,处理器件(例如,主机处理器)可将期望的数据元从分片312加载或读取到系统存储器304中。在图3C的所示实施例中,期望的数据元可包括第一个分片的元3A及3B、第二个分片的元3C及3D以及第三个分片的所有元。这些数据元可包括处理中的分片314C。
在此处理期间,处理器件可检测到分片314C的一部分已发生改变或者是活跃的。这由框315C表示,框315C指示元3A、3C及3E自上次迭代以来已发生改变且是活跃的。在此种实施例中,处理器件可将活跃元315C写回到存储体306。这些活跃元315C可包括在一组动态分片316C中或者附加/添加到一组动态分片316C。
在所示实施例中,创建三个动态分片316C。第一个动态分片包括元1A、2A及3A。第二个动态分片包括元1C、2C及3C。另外,第三个动态分片包括元1E、2E及3E。应理解,以上仅为一个例示性实例,所公开主题并非仅限于此。在此种实施例中,由于活跃元可发生改变,因此动态分片316C可在图形处理的每次迭代之后发生改变。
在此种实施例中,由于需要在存储器304与存储体306之间传输较少的数据,因此使用动态分片316C可减少未来处理(在未来迭代中)的IO低效性。然而,小的分片大小会减少图形处理的并行性的程度并增加磁盘存取的数目。图形工作负荷的磁盘存取的数目保持相同,同时数据的量减少,从而导致对可用存储器预算的低效利用。
图3D、图3E及图3F是根据所公开主题的系统301的示例性实施例的图。在所公开主题中,并不接受及使用以上创建的动态分片316,而是可创建提供更高效率的新的动态分片。此外,这种创建可通过卸载电路或引擎来进行。在一些实施例中,这可包括存储器件本身(进一步减少IO业务量(traffic))且可由控制器处理器(而非主机处理器)来执行。
在所示实施例中,系统或存储器件301可包括位于存储部分中的多个存储单元356以及包括合并或处理电路354。在各种实施例中,合并电路354可包括存储器件301的控制器处理器。在另一实施例中,合并操作及合并电路354可包括在主机处理器中。然而,本地化的(而非外部的)合并电路354可减少IO开销并进一步提高效率,如下所述。
在图3D的所示实施例中,多个动态分片317(例如,通过上述技术创建的动态分片)可存储在存储单元356中。这些分片317可然后被加载到合并电路354中。在另一实施例中,合并电路354可在数据仍处于存储体356中的情况下执行其工作。
在此种实施例中,合并电路354可将元的子集364D(1A、1C、1E及1G)加载到合并电路354的缓冲器中(作为元364D)。合并电路354可然后根据期望的分片大小及元的数目对元364D进行重新分组。在所示实施例中,合并电路354可将四个较小的动态分片317重新形成为两个较大的合并动态分片366D。应理解,以上仅为一个例示性实例,所公开主题并非仅限于此。
在所示实施例中,元1A及1C可被写回到存储单元356成为第一合并动态分片。同时,元1E及1G可被写回到存储单元356成为第二合并动态分片。这些分片可包括在合并动态分片366D中。
继续图3E,合并电路354可将元的子集364E(2A、2C、2E及2G)加载到合并电路354的缓冲器中(作为元364E)。合并电路354可然后根据期望的分片大小及元的数目对元364E进行重新分组。
在所示实施例中,元2A及2C可被写回或附加到存储单元356成为第一合并动态分片。同时,元2E及2G可被写回或附加到存储单元356成为第二合并动态分片。这些分片可包括在合并动态分片366E中。
继续图3F,合并电路354可将元的子集364F(3A、3C、3E及3G)加载到合并电路354的缓冲器中(作为元364F)。合并电路354可然后根据期望的分片大小及元的数目对元364F进行重新分组。
在所示实施例中,元3A及3C可被写回或附加到存储单元356成为第一合并动态分片。同时,而元3E及3G可被写回或附加到存储单元356成为第二合并动态分片。这些分片可包括在合并动态分片366F中。
在各种实施例中,合并操作可涉及每一个间隔(或每多个间隔)进行重复的读取操作及写入操作。在此种实施例中,合并电路354可对多个动态分片317执行读取以获得最近更新的值。在此种实施例中,合并电路354可然后对新的合并分片366D到366F执行写入操作。在一个实施例中,在合并过程完成之后,合并电路354可释放或不再阻止向动态分片317的写入,这是由于所有活跃边缘或元均被合并到合并分片366D到366F。
在此种实施例中,用于合并操作的(以及由合并电路354进行的)存储器存取模式可为顺序性存取模式和/或串流式(streaming)存取模式。这可能是由于已按来源顶点索引或ID对输入分片317进行了分类,且合并电路354然后基于边缘的来源顶点索引或ID对输出进行分类。在此种实施例中,用于动态分片317的存储器存取模式可包括顺序性读取且合并分片366D到366F的存储器存取模式可包括顺序性写入。
在各种实施例中,合并操作可在存储器件内执行,且可不(或最小程度地)影响较大的系统(例如,消耗通往RAM的带宽、消耗CPU循环等)。如上所述,合并电路354可包括在存储器件的控制器处理器中。在各种实施例中,这可包括也执行一般存储维护(例如,磨损均衡、写入合并等)的控制器处理器。然而,在另一实施例中,合并电路356可包括专用处理器,例如嵌入式处理器、并行计算处理器或可重新编程处理器(例如,现场可编程门阵列(field-programmable gate array,FPGA)等)。此外,在各种实施例中,在存储器件内实施合并操作可减少所需的RAM的量,这是由于所述操作要求只可将来自每一个动态分片的仅一个边缘表项放置在缓冲器中以供比较。
如上所述,动态分片316的典型创建及用于图形计算目的的分片的处理通常涉及三个阶段:读取、处理及写入。从存储器件读取原始数据(读取阶段)。然后进行处理,在这种情况下包括创建动态分片316(处理阶段)。并且,接着最后写回到存储体(写入阶段)。
在所示实施例中,合并动态分片366D到366F的创建及处理可在以上过程中在存储器件不被使用或者在存储器件具有多余的资源能力(例如,带宽、存储单元356上的读取/写入端口等)时进行。在此种实施例中,合并电路354可等待创建合并分片366D到366F直到主机处理器已进入处理阶段为止。在读取及写入阶段期间,存储器件可被使用,但在处理阶段期间,存储器件可能一般是空闲的。在此种实施例中,所公开主题可在图形结构的整个处理期间利用未被使用的IO带宽及计算能力。
返回图3A,由图可见,动态分片的创建是基于对活跃边缘(例如,活跃元315A、315B及315C)的检测。在各种实施例中,对活跃边缘的检测和/或预测可使图形数据的处理更高效。在各种实施例中,处理器(主机或控制器)可利用多种活跃边缘(或元)的检测或预测策略。在此种实施例中,处理器可被配置成基于所采用的图形应用或设置而在这多种策略之间动态地切换或者动态地修改这些策略的值或阈值。应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
在此种实施例中,处理器(主机或控制器)可被配置成确定顶点及边缘的活跃性,且还使用不同的预测策略确定活跃边缘预测的未命中率。因此,失败的策略可由更准确的策略来代替。在此种实施例中,可针对不同的预测策略来确定不同的参数,这是由于每一个预测策略利用不同的参数进行预测。在各种实施例中,多种预测策略可为正交的,且可加以组合以进行更好的预测。
第一预测策略可包括改变用于预测的预测频率或历史深度。基于仅一次先前的迭代来决定活跃边缘对于紧接在所述先前的迭代后面的下一次迭代来说可能是高效的优化。但可能并非对于接下来的所有迭代来说均是最高效的场景。在此种实施例中,在每次迭代中不更新活跃边缘可能是有益的。在各种实施例中,先前活跃的边缘可在短时间空闲后再次变为活跃的。因此,在动态分片中保持先前活跃的或休眠的边缘(并使用较大的子图形)可能比从子图形移除立即非活跃的边缘具有较低的未命中预测,因此可具有更低的性能开销。在此种实施例中,在边缘被认为非活跃之前非活跃性的水平(交互的数目)可通过确定未命中率来动态地调整预测频率。在各种实施例中,这可能涉及到使用阈值。
返回图2B,边缘更新一般有两种分类:被观察到的更新或未被观察到的更新。被观察到的更新是在图形处理的当前迭代期间已知的更新。然而,未被观察到的更新是直到图形处理的下一次迭代才知道的更新。被观察到的更新是其中目标顶点ID大于来源顶点ID(例如,数据元270、272、274及278)的更新。这一般是由于数据元以其来源顶点ID的次序进行处理。未被观察到的更新是其中目标顶点ID小于来源顶点ID(例如,数据元276及280)的更新。
在各种实施例中,与未被观察到的更新相比,活跃边缘确定/预测机制在如何处置被观察到的更新方面可能会不同。在一个此种实施例中,所有未被观察到的边缘可被认为是活跃的,而不管它们的状态或值发生任何改变。在此种实施例中,可仅对被观察到的更新进行测试以查看它们是否实际上发生改变,且因此是活跃的。在此种实施例中,消除未改变的被观察到的更新对于下一次迭代来说可能更IO高效。此外,对边缘的更新也是关于顶点及边缘处于“热的”状态且未来可能涉及更多更新的指示。
在各种实施例中,一种确定/预测活跃数据元的策略可包括基于顶点的预测及分析。在一个此种实施例中,当给定顶点的传入边缘(incoming edge)中的一者发生更新时,处理器可将与此顶点有关的所有边缘标记为活跃的。在一些实施例中,处理器可被设定成仅传出边缘(outgoing edge)是活跃的。在各种实施例中,基于顶点的预测可导致大的动态分片大小,但也可具有比基于边缘的预测低的未命中预测率且因此具有比基于边缘的预测低的性能开销。
在再一实施例中,另一种用于确定/预测活跃数据元的策略可包括基于值的预测模型。在一个实施例中,可采用可变阈值进行活跃边缘预测。在此种实施例中,并非将任何发生改变的边缘标记为活跃的,而是可要求边缘在被认为是活跃的之前改变有意义的(由阈值定义的)量。在此种实施例中,边缘(或者顶点-如果与以上基于顶点的策略结合使用的话)在被认为是活跃的之前可被允许有特定量的变化。在一个此种实施例中,如果变化的量低于阈值,则处理器可将所述边缘从活跃边缘中除去,且因此通过减少被处理的边缘的量来改善总体系统性能。应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
图4A及图4B是根据所公开主题的数据结构400及401的示例性实施例的图。在各种实施例中,数据结构400及401可至少部分地存储在存储介质或器件中,如上所述。在各种实施例中,以下阐述的动作可由控制器处理器(或其他处理器,例如主机处理器)来执行。在此种实施例中,控制器处理器可在没有主机处理器的帮助或未使用主机处理器的情况下以及在其中存储器件可能原本空闲或具有多余资源的时间段期间执行动作。应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
在所示实施例中,数据结构400可包括多个顶点402,所述多个顶点402由索引或识别符(ID)A到L标记。如图4A中所示,这些索引可能有些混乱。举例来说,顶点A经由两条边缘连接到顶点L,但从未连接到顶点B。顶点K连接到顶点A、B及J。在此种实施例中,顶点ID可能已由于顶点被添加到数据结构400而被指派,或者由于其他原因被指派。同样,在许多图形应用中,数据结构可包括数十亿个顶点。在一些实施例中,数据结构400可表示较大图形的子图形,其中子图形存储在单个存储器件中。
在各种实施例中,处理器(例如,控制器处理器)可被配置成重新指派顶点ID。在此种实施例中,处理器可被配置成将目的地顶点的顶点ID重新指派为更接近(在数值上更接近,或者在所示实施例中在字母顺序上更接近)来源顶点ID的ID。
在各种实施例中,这可通过遍历图形结构400来完成。举例来说,处理器可遍历图形结构400、确定来源及目的地、然后根据需要或尽可能地重新指派顶点ID。在一些实施例中,处理器可使用例如广度优先搜索(Breath First Search,BFS)或深度优先搜索(DepthFirst Search,DFS)等技术来执行遍历;尽管如此,但应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
在一个此种实施例中,重新指派技术可产生图4B的图形结构401。同样,顶点402具有从A到L的ID,但这些ID指派的随机性可小得多或者可更具有顺序性。举例来说,通过将顶点L重新指派为顶点B,顶点A与顶点B现在彼此接近并共享边缘。应理解,这种重新指派并不会改变顶点L/B的含义或其值,重新指派仅会改变与其相关联的索引或识别符。同样,最初在图形400中被标记或识别为B的顶点在图形401中没有“移动”;它仅被重命名或重新指派为标签D。
然而,在图2B的结构206中可看出,数据元倾向于基于它们的顶点ID进行分类或存储。因此,通过重新指派顶点ID以使得来源与目的地彼此更靠近,它们的相关联的数据元会因而被存储得彼此更靠近。这可能会实现更高效的数据存取,这是由于数据存取可能更常常是顺序性的,而不是随机的或非顺序性的。因此会减少磁盘存取的数目。顶点ID的重新指派可实现图形的实际数据结构的分类或更高效存储。
在各种实施例中,这种重新指派可仅对活跃顶点执行。在各种实施例中,活跃顶点的数目通常比整个图形或子图形内的顶点的数目小得多。在此种实施例中,将ID重新指派到更少的顶点可增加指派更靠近其来源顶点的ID的可能性。如上所述,在一些实施例中,可采用各种边缘预测技术来定义什么是活跃顶点。
在一些实施例中,重新指派技术可实现更快的活跃顶点/边缘确定或预测。在此种实施例中,当活跃顶点被指派较低的ID时,所述活跃顶点在图形处理(倾向于根据ID按次序处理数据元)的每次迭代的开始(或更接近开始)时被处理。一般来说,为了识别顶点或边缘是否活跃,处理器需要等到顶点的所有传入边缘都被处理完。同样,通过重新指派数据元或对数据元进行分类以使得相关联的数据元被分组在一起,可减少等待时间。
在各种实施例中,顶点重新指派可与动态分片的并发合并(concurrent merging)一起使用。如上所述,合并操作可包括在每一个间隔期间进行重复的读取操作及写入操作。在此种实施例中,通过重新指派ID以使得更新被部分的化成单个分片,可减少合并动态分片所需的分片存取的数目。这继而可使收集与新的分片相关联的所有更新的时间更短。
图5是可包括根据所公开主题的原理形成的半导体器件的信息处理系统500的示意性方块图。
参照图5,信息处理系统500可包括根据所公开主题的原理构造而成的一个或多个器件。在另一实施例中,信息处理系统500可采用或执行根据所公开主题的原理的一种或多种技术。
在各种实施例中,信息处理系统500可包括计算器件,例如(举例来说)膝上型计算机、台式计算机、工作站、服务器、刀片服务器(blade server)、个人数字助理、智能手机、平板计算机及其他适合的计算机或者虚拟机或虚拟机的虚拟计算器件。在各种实施例中,信息处理系统500可由用户(图中未示出)使用。
根据所公开主题的信息处理系统500还可包括中央处理器(central processingunit,CPU)、逻辑、或处理器510。在一些实施例中,处理器510可包括一个或多个功能单元块(functional unit block,FUB)或组合逻辑块(combinational logic block,CLB)515。在此种实施例中,组合逻辑块可包括各种布尔逻辑运算(例如,与非、或非、非、异或)、稳定化逻辑器件(例如,触发器、锁存器)、其他逻辑器件或其组合。这些组合逻辑运算可以简单方式或复杂方式进行配置,以对输入信号进行处理来实现期望结果。应理解,尽管阐述了同步组合逻辑运算的几个例示性实例,然而所公开主题并不受限于此且可包括异步运算或其混合。在一个实施例中,组合逻辑运算可包括多个互补金属氧化物半导体(complementarymetal oxide semiconductor,CMOS)晶体管。在各种实施例中,这些CMOS晶体管可被排列成用于执行逻辑运算的门;但是应理解,也可使用其他技术且所述其他技术也处于所公开主题的范围内。
根据所公开主题的信息处理系统500还可包括易失性存储器520(例如,随机存取存储器(RAM))。根据所公开主题的信息处理系统500还可包括非易失性存储器530(例如,硬驱动器、光学存储器、与非存储器或闪存存储器)。在一些实施例中,易失性存储器520、非易失性存储器530或它们的组合或一些部分可被称为“存储介质”。在各种实施例中,易失性存储器520和/或非易失性存储器530可被配置成以半永久形式或实质上永久形式存储数据。
在各种实施例中,信息处理系统500可包括一个或多个网络接口540,所述一个或多个网络接口540被配置成使信息处理系统500成为通信网络的一部分且通过通信网络进行通信。Wi-Fi协议的实例可包括但不限于电气及电子工程师协会(Institute ofElectrical and Electronics Engineers,IEEE)802.11g、IEEE 802.11n。蜂窝协议的实例可包括但不限于:IEEE 802.16m(又名,先进无线城域网(Metropolitan Area Network,MAN))、先进长期演进(Long Term Evolution,LTE)、增强数据速率全球移动通信系统(Global System for Mobile Communications,GSM)演进(Enhanced Data rates for GSMEvolution,EDGE)、演进高速数据包存取(Evolved High-Speed Packet Access,HSPA+)。有线协议的实例可包括但不限于IEEE 802.3(又名以太网)、光纤信道、电力线通信(例如,家庭插座(HomePlug)、IEEE 1901)。应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
根据所公开主题的信息处理系统500还可包括用户接口单元550(例如,显示适配器、触觉接口、人机接口器件)。在各种实施例中,这种用户接口单元550可被配置成从用户接收输入和/或向用户提供输出。也可使用其他种类的器件来实现与用户的交互;举例来说,提供到用户的反馈可为任意形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;且来自用户的输入可以任意形式接收,包括声学输入、语音输入或触觉输入。
在各种实施例中,信息处理系统500可包括一个或多个其他器件或硬件组件560(例如,显示器或监视器、键盘、鼠标、相机、指纹读取器、视频处理器)。应理解,以上仅为几个例示性实例,所公开主题并非仅限于此。
根据所公开主题的信息处理系统500还可包括一条或多条系统总线505。在此种实施例中,系统总线505可被配置成对处理器510、易失性存储器520、非易失性存储器530、网络接口540、用户接口单元550及一个或多个硬件组件560进行通信耦合。经处理器510处理的数据或从非易失性存储器530外部输入的数据可存储在非易失性存储器530中或易失性存储器520中。
在各种实施例中,信息处理系统500可包括或执行一个或多个软件组件570。在一些实施例中,软件组件570可包括操作系统(operating system,OS)和/或应用。在一些实施例中,OS可被配置成向应用提供一种或多种服务并管理或充当应用与信息处理系统500的各种硬件组件(例如,处理器510、网络接口540)之间的中介。在此种实施例中,信息处理系统500可包括一种或多种本地应用,所述一种或多种本地应用可在本地安装(例如,安装在非易失性存储器530内)且被配置成由处理器510直接执行并与OS直接进行交互作用。在此种实施例中,本地应用可包括预先编译的机器可执行代码。在一些实施例中,本地应用可包括脚本解释器(例如,C shell(csh)、苹果脚本(AppleScript)、AutoHotkey)或虚拟执行机(virtual execution machine,VM)(例如,Java虚拟机、微软公共语言运行时环境(Microsoft Common Language Runtime)),脚本解释器及虚拟执行机被配置成将源代码或目标代码转换成可执行代码,然后由处理器510来执行所述可执行代码。
上述半导体器件可使用各种封装技术来进行包封。举例来说,根据所公开主题的原理构造而成的半导体器件可使用以下中的任意一种来进行包封:层叠封装(package onpackage,POP)技术、球栅阵列(ball grid array,BGA)技术、芯片尺寸封装(chip scalepackage,CSP)技术、塑料引线芯片载体(plastic leaded chip carrier,PLCC)技术、塑料双列直插式封装(plastic dual in-line package,PDIP)技术、华夫包装式裸片(die inwaffle pack)技术、晶片式裸片(die in wafer form)技术、板上芯片(chip on board,COB)技术、陶瓷双列直插封装(ceramic dual in-line package,CERDIP)技术、塑料公制四方扁平封装(plastic metric quad flat package,PMQFP)技术、塑料四方扁平封装(plastic quad flat package,PQFP)技术、小外形集成电路封装(small outlineintegrated circuit package,SOIC)技术、缩小型小外形封装(shrink small outlinepackage,SSOP)技术、薄型小外形封装(thin small outline package,TSOP)技术、薄型四方扁平封装(thin quad flat package,TQFP)技术、系统级封装(system in package,SIP)技术、多芯片封装(multi-chip package,MCP)技术、晶片级构造封装(wafer-levelfabricated package,WFP)技术、晶片级处理堆叠封装(wafer-level processed stackpackage,WSP)技术或所属领域中的技术人员将知晓的其他技术。
方法步骤可由一个或多个可编程处理器执行计算机程序来执行,以通过对输入数据进行操作并产生输出来执行功能。方法步骤还可由专用逻辑电路系统(例如,现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specificintegrated circuit,ASIC))来执行,且装置可被实施为所述专用逻辑电路系统。
在各种实施例中,计算机可读介质可包括指令,所述指令在被执行时会使器件执行方法步骤的至少一部分。在一些实施例中,计算机可读介质可包括在磁性介质、光学介质、其他介质或其组合(例如,压缩盘只读存储器(compact disc read only memory,CD-ROM)、硬驱动器、只读存储器、闪存驱动器)中。在此种实施例中,计算机可读介质可为以有形的及非暂时方式实施的制品。
尽管已参照示例性实施例阐述了所公开主题的原理,然而对所属领域中的技术人员来说明显的是,在不背离这些所公开概念的精神及范围的条件下,可对其作出各种改变及修改。因此,应理解,以上实施例并非限制性的,而是仅为例示性的。因此,所公开概念的范围将由以上权利要求及其等效范围所许可的最广范围的解释来确定,而不应受上述说明约束或限制。因此,应理解,随附权利要求旨在涵盖落于实施例的范围内的所有这种修改及改变。
Claims (20)
1.一种用于分片创建的装置,包括:
主机处理器接口电路,被配置成与外部的主机处理器电路传送数据及命令;
控制器处理器电路,被配置成将图形数据元合并成合并动态分片,其中所述合并动态分片中的每一者包括相同数目的所述图形数据元;以及
非易失性存储器,被配置成将数据存储在至少部分的图形结构中,其中所述图形结构包括各自包含顶点及边缘的数据元,且其中所述数据元的子部分被分组成分片。
2.根据权利要求1所述的装置,其中所述控制器处理器电路被配置成从仅包括活跃边缘的数据元创建动态分片。
3.根据权利要求1所述的装置,其中所述控制器处理器电路被配置成至少部分地基于何时所述装置不被由所述主机处理器接口电路接收的命令占用来执行所述图形数据元的合并。
4.根据权利要求1所述的装置,其中所述主机处理器接口电路被配置成:
将分片提供到外部的所述主机处理器电路进行处理,其中处理包括更新所述分片内的零个或更多个数据元;以及
若有更新的所述数据元,将更新后的所述数据元写入到所述非易失性存储器作为动态分片的一部分。
5.根据权利要求4所述的装置,其中所述控制器处理器电路被配置成:
收集经由所述主机处理器电路写入的所述动态分片的大小;
决定要合并成合并动态分片的相邻的动态分片或部分的分片的数目;以及
按来源识别符对活跃边缘进行分类,以维持所述分片的次序性质。
6.根据权利要求1所述的装置,其中所述控制器处理器电路包括缓冲存储器;且
其中所述控制器处理器电路被配置成:
对于要被合并成合并动态分片的每一个分片,
将来自所述分片中的每一个分片的仅一个数据元从所述非易失性存储器复制到所述缓冲存储器,
将所述数据元分组成一个或多个合并动态分片,以及
将所述数据元作为所述一个或多个合并动态分片的部分写入到所述非易失性存储器。
7.根据权利要求2所述的装置,其中通过活跃边缘预测策略确定活跃边缘。
8.根据权利要求7所述的装置,其中所述活跃边缘是基于由所述主机处理器电路进行的多次先前的处理迭代与动态调整阈值的比较来确定。
9.根据权利要求7所述的装置,其中所述活跃边缘包括在处理迭代内未被观察到的更新后的活跃边缘。
10.根据权利要求7所述的装置,其中所述活跃边缘预测策略至少部分地基于在处理迭代内被观察到的更新后的活跃边缘的未命中率来动态地调整。
11.根据权利要求7所述的装置,其中所述活跃边缘通过以下方式确定:
检测与所述边缘相关联的顶点是否已发生改变,
如果所述顶点已发生改变,则将与所述顶点相关联的所有边缘或者至少特定类型的边缘视为活跃边缘。
12.根据权利要求1所述的装置,其中每一个顶点与顶点索引号相关联;且
其中所述控制器处理器电路被配置成:
将目的地顶点的索引号从第一索引号重新指派为第二索引号,使得所述目的地顶点的所述第二索引号比所述目的地顶点的所述第一索引号在数值上更接近来源顶点的索引号,其中所述来源顶点与所述目的地顶点相关联。
13.根据权利要求12所述的装置,其中所述控制器处理器电路被配置成:
将所述至少部分的图形结构划分成多个子图形结构;以及
采用从第一顶点的遍历技术来识别来源顶点与目的地顶点关联性;以及
至少部分地基于所述来源顶点与目的地顶点关联性来重新指派相应的顶点索引号。
14.根据权利要求12所述的装置,其中所述控制器处理器电路被配置成:
如果目的地顶点是活跃顶点,则仅重新指派所述目的地顶点的索引号。
15.根据权利要求12所述的装置,其中所述控制器处理器电路被配置成:
创建包括已被重新指派顶点索引号的数据元的一个或多个新的分片。
16.根据权利要求1所述的装置,其中所述控制器处理器电路被配置成:
利用顶点识别号的重新指派来使活跃的更新后数据元局部化于一个或多个分片内。
17.一种用于分片创建的系统,包括:
主机处理器电路,被配置成执行与图形数据结构有关的指令;以及
至少一个存储器件,其中所述至少一个存储器件中的每一个存储器件包括:
主机处理器接口电路,被配置成与所述主机处理器电路传送数据;
控制器处理器电路,被配置成将图形数据元合并成合并动态分片,其中所述合并动态分片包括相同数目的所述图形数据元;以及
非易失性存储器,被配置成将数据存储在至少部分的图形结构中,其中所述图形结构包括各自包含顶点及边缘的数据元,且其中所述数据元的子部分被分组成分片。
18.根据权利要求17所述的系统,其中所述控制器处理器电路被配置成从仅包括活跃边缘的数据元创建动态分片;且
所述控制器处理器电路被配置成至少部分地基于何时所述每一个存储器件不被由所述主机处理器接口电路接收的命令占用来执行所述图形数据元的合并。
19.根据权利要求17所述的系统,其中所述主机处理器电路被配置成采用活跃边缘预测策略来确定哪些边缘是活跃边缘。
20.根据权利要求17所述的系统,其中每一个顶点与顶点索引号相关联;且
其中所述主机处理器电路被配置成:
将目的地顶点的索引号从第一索引号重新指派为第二索引号,使得所述目的地顶点的第二索引号比所述目的地顶点的第一索引号在数值上更接近来源顶点的索引号,其中所述来源顶点与所述目的地顶点相关联。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862780186P | 2018-12-14 | 2018-12-14 | |
US62/780,186 | 2018-12-14 | ||
US16/274,232 | 2019-02-12 | ||
US16/274,232 US20200192880A1 (en) | 2018-12-14 | 2019-02-12 | Optimal dynamic shard creation in storage for graph workloads |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111324777A true CN111324777A (zh) | 2020-06-23 |
Family
ID=71071623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911151417.7A Pending CN111324777A (zh) | 2018-12-14 | 2019-11-21 | 用于分片创建的装置和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200192880A1 (zh) |
JP (1) | JP7469026B2 (zh) |
KR (1) | KR20200073979A (zh) |
CN (1) | CN111324777A (zh) |
TW (1) | TWI833806B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231589A (zh) * | 2020-10-10 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 信息管理方法及装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11120082B2 (en) | 2018-04-18 | 2021-09-14 | Oracle International Corporation | Efficient, in-memory, relational representation for heterogeneous graphs |
US11281695B2 (en) * | 2020-01-24 | 2022-03-22 | Cisco Technology, Inc. | Partitioning a temporal graph for distributed storage |
CN111858771A (zh) * | 2020-07-30 | 2020-10-30 | 杭州复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
US11791838B2 (en) | 2021-01-15 | 2023-10-17 | Samsung Electronics Co., Ltd. | Near-storage acceleration of dictionary decoding |
KR102614966B1 (ko) * | 2021-10-12 | 2023-12-19 | 서울대학교산학협력단 | 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법 |
KR102596700B1 (ko) * | 2022-06-03 | 2023-11-09 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법 |
KR102628759B1 (ko) * | 2022-06-14 | 2024-01-23 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법 |
KR20240024465A (ko) * | 2022-08-17 | 2024-02-26 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 다이나믹 샤딩 시스템 및 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254175A1 (en) * | 2011-04-01 | 2012-10-04 | Eliot Horowitz | System and method for optimizing data migration in a partitioned database |
US20140032579A1 (en) * | 2012-07-26 | 2014-01-30 | Dwight Merriman | Aggregation framework system architecture and method |
CN104881466A (zh) * | 2015-05-25 | 2015-09-02 | 百度在线网络技术(北京)有限公司 | 数据分片的处理以及垃圾文件的删除方法和装置 |
US20160350662A1 (en) * | 2015-05-28 | 2016-12-01 | GraphSQL, Inc. | System and method for real-time graph-based recommendations |
US20180285477A1 (en) * | 2011-04-20 | 2018-10-04 | Google Inc. | Data backup in a graph processing system |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4897422B2 (ja) | 2006-09-29 | 2012-03-14 | アイシン・エィ・ダブリュ株式会社 | データ更新システム、端末装置、ナビゲーション装置、及びデータ更新方法 |
US8438364B2 (en) | 2010-12-30 | 2013-05-07 | Facebook Inc. | Distributed cache for graph data |
US20150186427A1 (en) * | 2013-12-26 | 2015-07-02 | Telefonica Digital Espana, S.L.U. | Method and system of analyzing dynamic graphs |
US10002205B2 (en) * | 2015-11-20 | 2018-06-19 | Oracle International Corporation | Efficient method for indexing data transferred between machines in distributed graph processing systems |
US20170255708A1 (en) * | 2016-03-01 | 2017-09-07 | Linkedin Corporation | Index structures for graph databases |
US10180992B2 (en) * | 2016-03-01 | 2019-01-15 | Microsoft Technology Licensing, Llc | Atomic updating of graph database index structures |
US10089761B2 (en) * | 2016-04-29 | 2018-10-02 | Hewlett Packard Enterprise Development Lp | Graph processing using a shared memory |
US10409782B2 (en) * | 2016-06-15 | 2019-09-10 | Chen Zhang | Platform, system, process for distributed graph databases and computing |
US20180089324A1 (en) * | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US10810210B2 (en) * | 2017-05-12 | 2020-10-20 | Battelle Memorial Institute | Performance and usability enhancements for continuous subgraph matching queries on graph-structured data |
US10740733B2 (en) * | 2017-05-25 | 2020-08-11 | Oracle International Corporaton | Sharded permissioned distributed ledgers |
-
2019
- 2019-02-12 US US16/274,232 patent/US20200192880A1/en active Pending
- 2019-09-19 TW TW108133793A patent/TWI833806B/zh active
- 2019-10-11 KR KR1020190126498A patent/KR20200073979A/ko active Search and Examination
- 2019-11-15 JP JP2019207293A patent/JP7469026B2/ja active Active
- 2019-11-21 CN CN201911151417.7A patent/CN111324777A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254175A1 (en) * | 2011-04-01 | 2012-10-04 | Eliot Horowitz | System and method for optimizing data migration in a partitioned database |
US20180285477A1 (en) * | 2011-04-20 | 2018-10-04 | Google Inc. | Data backup in a graph processing system |
US20140032579A1 (en) * | 2012-07-26 | 2014-01-30 | Dwight Merriman | Aggregation framework system architecture and method |
CN104881466A (zh) * | 2015-05-25 | 2015-09-02 | 百度在线网络技术(北京)有限公司 | 数据分片的处理以及垃圾文件的删除方法和装置 |
US20160350662A1 (en) * | 2015-05-28 | 2016-12-01 | GraphSQL, Inc. | System and method for real-time graph-based recommendations |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231589A (zh) * | 2020-10-10 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 信息管理方法及装置 |
CN112231589B (zh) * | 2020-10-10 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 信息管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20200073979A (ko) | 2020-06-24 |
TWI833806B (zh) | 2024-03-01 |
TW202040384A (zh) | 2020-11-01 |
JP2020095701A (ja) | 2020-06-18 |
JP7469026B2 (ja) | 2024-04-16 |
US20200192880A1 (en) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324777A (zh) | 用于分片创建的装置和系统 | |
Zhang et al. | Degree-aware hybrid graph traversal on FPGA-HMC platform | |
US9152601B2 (en) | Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units | |
US9053067B2 (en) | Distributed data scalable adaptive map-reduce framework | |
KR102592979B1 (ko) | 딥-솔리드 스테이트 장치 및 신경망 기반의 영구적 데이터 스토리지 | |
US20190146837A1 (en) | Distributed real-time computing framework using in-storage processing | |
KR102513446B1 (ko) | 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법 | |
WO2018194722A1 (en) | Systems and methods for proactive spilling of probe records in hybrid hash join | |
US9632831B2 (en) | Distributed real-time computing framework using in-storage processing | |
Yang et al. | Random walks on huge graphs at cache efficiency | |
CN107391508B (zh) | 数据加载方法和系统 | |
US8543722B2 (en) | Message passing with queues and channels | |
US20240303277A1 (en) | Graph data processing | |
CN105830160A (zh) | 用于将经屏蔽数据写入到缓冲器的设备及方法 | |
US20170300407A1 (en) | Managing database index by leveraging key-value solid state device | |
US10198293B2 (en) | Distributed real-time computing framework using in-storage processing | |
Tench et al. | GraphZeppelin: Storage-friendly sketching for connected components on dynamic graph streams | |
US9501328B2 (en) | Method for exploiting parallelism in task-based systems using an iteration space splitter | |
WO2023083241A1 (zh) | 图数据划分 | |
CN111580969A (zh) | 一种基于多gpu的a*搜索方法 | |
Zhang et al. | Highly efficient breadth-first search on cpu-based single-node system | |
CN112580296B (zh) | 用于处理电路版图的方法、设备和存储介质 | |
Jin et al. | Software systems implementation and domain-specific architectures towards graph analytics | |
WO2018222064A1 (en) | Systems and methods of hierarchical community detection in graphs | |
Li et al. | Concurrent hybrid breadth-first-search on distributed powergraph for skewed graphs |
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 |