KR20200073979A - 그래프 작업 부하들을 위한 스토리지에서의 최적의 동적 샤드 생성 - Google Patents

그래프 작업 부하들을 위한 스토리지에서의 최적의 동적 샤드 생성 Download PDF

Info

Publication number
KR20200073979A
KR20200073979A KR1020190126498A KR20190126498A KR20200073979A KR 20200073979 A KR20200073979 A KR 20200073979A KR 1020190126498 A KR1020190126498 A KR 1020190126498A KR 20190126498 A KR20190126498 A KR 20190126498A KR 20200073979 A KR20200073979 A KR 20200073979A
Authority
KR
South Korea
Prior art keywords
vertex
shards
data elements
graph
processor circuit
Prior art date
Application number
KR1020190126498A
Other languages
English (en)
Inventor
세예데 하니에 하세미
이주환
기양석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20200073979A publication Critical patent/KR20200073979A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • G06F16/287Visualization; Browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning 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

그래프 작업 부하들을 위한 스토리지에서의 최적의 동적 샤드 생성{OPTIMAL DYNAMIC SHARD CREATION IN STORAGE FOR GRAPH WORKLOADS}
본 발명은 데이터의 처리 및 저장에 관한 것으로, 좀 더 구체적으로 그래프 작업 부하들을 위한 스토리지에서의 최적의 동적 샤드 생성에 관한 것이다.
컴퓨터 과학에서, 그래프 이론은 오브젝트들 사이의 쌍 관계들을 모델링 하는데 사용되는 데이터 구조들인 그래프들에 대한 학문이다. 이러한 문맥에서 그래프는 엣지들, 아크(호)들, 또는 라인들에 의하여 연결되는 버텍스(꼭지점)들, 노드들, 또는 포인트들로 구성된다. 컴퓨팅에서, 그래프 데이터베이스(graph database, GDB)는 속성들, 엣지들, 및 노드들을 갖는 시맨틱(semantic) 쿼리들을 위한 그래프 구조들을 사용하여 데이터를 저장하고 나타내는 데이터베이스이다. 시스템의 핵심적인 개념은 그래프 (또는 엣지 또는 관계)이며, 그래프는 노드들 사이의 관계들을 나타내는 엣지들 및 데이터의 노드들의 모음을 저장소의 데이터 항목들과 직접적으로 관련된다. 이러한 관계들은 저장소의 데이터가 직접적으로 함께 연결되도록 하고, 많은 경우들에 하나의 동작으로 검색되도록 한다. 그래프 데이터베이스들은 우선순위로 데이터 사이의 관계들을 유지하고 있다. 그래프 데이터베이스 내의 쿼리 관계들은 그것들이 데이터베이스 자체 내에 영구적으로 저장되기 때문에 빠르다. 관계들은 그래프 데이터베이스들을 사용하여 직관적으로 시각화될 수 있고, 강하게 상호 연결된 데이터에 유용하다.
빅 데이터 어플리케이션들이 더욱 실질적이 되면서, 그래프 컴퓨팅이 최근 대중적이 되고 있다. 몇 가지 예들로, 그래프들은 컴퓨터 과학에 사용되어 계산의 흐름을 나타낸다. 운영 체제들에서 리소스 할당 그래프들은 처리(prosess), 교착 상태(deadlock) 검출, 및 정정에 사용된다. 그래프들은 분자들의 연구에 사용되고, 화학에서 결합 구조를 연구하기 위하여 사용되고, 원자들의 연구에 사용된다. 그래프들은 생물학 및 자연 보호 활동에 이용되며, 버텍스(vertex)는 특정 종들(species)이 존재하는 영역들을 나타내고 엣지(edge)들은 영역들 사이의 이동 경로 또는 움직임을 나타낸다. 구글 맵들, 그리고 GPS(global positioning system) 어플리케이션들은 일반적으로, 운송 시스템들을 구축하기 위한 그래프들을 사용하며, 2개의 (또는 더 많은) 도로들의 교차로가 버텍스인 것으로 간주되고 2개의 버텍스들을 연결하는 도로가 엣지인 것으로 간주된다. 따라서, 이들의 네비게이션 시스템은 그래프들을 이용하여 2개의 버텍스들 사이의 가장 짧은 경로를 계산한다. 이와 같이, 그래프들은 검색 및 추천 엔진들에 사용되어 페이지 관련성 및 상호 연결들을 확인한다. 페이스북 및 소셜 미디어에서, 사용자들은 버텍스들인 것으로 간주되고, 만약 그들이 친구들이라면 그들 사이를 잇는 엣지가 존재한다. 페이스북의 친구 제안 기술은 그래프 이론을 사용한다.
그래프 어플리케이션들에 대한 상당한 성능 병목 현상은 막대한 그래프 사이즈 및 랜덤 입/출력 (IO 또는 I/O) 액세스 패턴에 의한다. CSR(compressed sparse row) 및 CSC(compressed sparse column)과 같은 표준 희소(sparse) 그래프 포맷들은 엣지 값들의 랜덤 액세스를 수반한다. 수백만의 버텍스들 및 수십억의 엣지들을 갖는 거대한 그래프들은 DRAM(dynamic random access memory)에 맞지 않기 때문에, 표준 희소 그래프 포맷들은 랜덤한 디스크 액세스를 초래하여 그래프 데이터를 디스크에 저장하게 하고 디스크로부터 로드하게 한다. 적은 계산량을 갖는 IO 집중적인 그래프 작업 부하들은 그들의 랜덤한 IO 액세스 패턴으로 인하여 높은 IO 레이턴시를 겪게 되는데, 고속의 NVME(non-volatile memory express) 장치들이라 할지라도 그들의 순차적인 액세스 속도와 비교하여 상당히 더 낮은 랜덤 읽기 및 쓰기 속도를 갖기 때문이다.
본 발명은 효율성이 증가되도록 최적의 동적 샤드를 생성하는 장치 및 시스템을 제공한다.
일 실시예에 따르면, 장치는 외부의 호스트 프로세서 회로와 데이터 및 커맨드들을 통신하는 호스트 프로세서 인터페이스 회로를 포함할 수 있다. 장치는 그래프 데이터 요소들을 머지된 동적 샤드들로 머지하는 컨트롤러 프로세서 회로를 포함할 수 있으며, 머지된 동적 샤드 각각은 동일한 개수의 그래프 데이터 요소들을 포함한다. 장치는 그래프 구조의 적어도 일부의 데이터를 저장하는 불휘발성 메모리를 포함할 수 있으며, 그래프 구조는 각각이 버텍스들 및 엣지를 포함하는 데이터 요소들을 포함하고, 데이터 요소들의 서브-부분들은 샤드들로 그룹화된다.
다른 실시예에 따르면, 시스템은 그래프 데이터 구조와 연관된 명령어들을 실행하는 호스트 프로세서 회로를 포함할 수 있다. 시스템은 적어도 하나의 스토리지 장치를 포함할 수 있다. 스토리지 장치 각각은 호스트 프로세서 회로와 데이터를 통신하는 호스트 프로세서 인터페이스 회로를 포함할 수 있다. 스토리지 장치(들)는 그래프 데이터 요소들을 머지된 동적 샤드들로 머지하는 컨트롤러 프로세서 회로를 포함할 수 있으며, 머지된 동적 샤드들 각각은 동일한 개수의 그래프 데이터 샤드들을 포함할 수 있다. 스토리지 장치(들)는 그래프 구조의 적어도 일부의 데이터를 저장하는 불휘발성 메모리를 포함할 수 있으며, 그래프 구조는 각각이 버텍스들 및 엣지를 포함하는 데이터 요소들을 포함하고, 데이터 요소들의 서브-부분들은 샤드들로 그룹화된다.
하나 이상의 구현들의 세부적인 설명들은 아래의 도면들 및 설명을 동반하여 진술된다. 다른 특징들은 설명 및 도면들, 및 청구항들로부터 명확해질 것이다.
데이터의 처리 및 저장을 위한 시스템 및/또는 방법, 그리고 더 구체적으로 그래프 작업 부하들을 위한 스토리지에서의 최적의 동적 샤드 생성은 실질적으로 적어도 하나의 도면들과 관련하여 도시 및/또는 설명된 바와 같이, 청구항들에서 더욱 완전하게 진술된다.
본 발명은 그래프 작업 부하들을 위한 최적의 동적 샤드를 생성함으로써, 효율성이 증가된 장치 또는 시스템을 제공할 수 있다.
도 1은 본 발명에 따른 시스템의 예시적인 실시예의 블록도이다.
도 2a 및 도 2b는 본 발명에 따른 데이터 구조들의 예시적인 실시예의 다이어그램들이다.
도 3a, 도 3b, 및 도 3c는 본 발명에 따른 데이터 구조들의 예시적인 실시예의 다이어그램들이다
도 3d, 도 3e, 및 도 3f는 본 발명에 따른 데이터 구조들의 예시적인 실시예의 다이어그램들이다.
도 4a 및 도 4b는 본 발명에 따른 데이터 구조들의 예시적인 실시예의 다이어그램들이다.
도 5는 정보 처리 시스템의 개략적인 블록도이며, 본 발명의 원리들에 따라 형성된 반도체 장치들을 포함할 수 있다.
다양한 도면들에서의 같은 참조 부호들은 같은 구성 요소들을 나타낸다.
다양한 실시예들은 일부 실시예들이 도시된 첨부 도면들을 참조하여 더욱 상세하게 설명된다. 그러나, 본 발명의 개시된 주제는 다른 수많은 형식들로 구현될 수 있고, 여기에서 진술되는 실시예들에 한정되는 것으로 해석되지 않아야 한다. 오히려, 이러한 실시예들은 개시물이 철저하고 완전하도록 제공되고, 본 발명의 개시된 주제의 개념을 통상의 기술자에 상세하게 전달할 것이다. 도면들에서, 레이어들 및 영역들의 크기 및 관련된 크기는 명확성을 기하기 위하여 과장될 수 있다.
구성 요소 또는 레이어가 다른 구성 요소 또는 레이어 “상에 있다”거나, “연결된다”거나, “결합된다”로 지칭되는 경우, 이는 직접적으로 다른 구성 요소 또는 레이어 위에 있거나, 연결되거나, 또는 결합되는 것, 혹은 사이에 끼인 구성 요소 또는 레이어들이 있을 수 있는 것으로 이해될 것이다. 반면에, 구성 요소 또는 레이어가 다른 구성 요소 또는 레이어 “상에 직접적으로 있다”거나, “직접적으로 연결된다”거나, “직접적으로 결합된다”로 지칭되는 경우, 끼어있는 구성 요소 또는 레이어들이 없다. 유사한 부호들은 유사한 구성 요소들을 지칭한다. 여기에서 사용되는 용어 “및/또는”은 관련된 열거 항목들 중 하나 또는 더 많은 수의 임의의 모든 조합을 포함한다.
비록 제1, 제2, 제3 등의 용어들은 여기에서 다양한 구성 요소들, 컴포넌트들, 영역들, 레이어들, 및/또는 구역들을 설명하는데 사용될 수 있지만, 이러한 구성 요소들, 컴포넌트들, 영역들, 레이어들, 및/또는 구역들은 이러한 용어들에 제한되지 않는다. 이러한 용어들은 단지 하나의 구성 요소, 컴포넌트, 영역, 레이어, 또는 구역을 구별하기 위하여 사용된다. 따라서, 아래에 논의된 제1 구성 요소, 컴포넌트, 영역, 레이어, 또는 구역은 현재 개시된 내용의 교시들로부터 벗어나지 않고 제2 구성 요소, 컴포넌트, 영역, 레이어, 또는 구역으로 지칭될 수 있다.
"아래", "밑", "하부", "위", "상부" 등과 같은 공간적으로 상대적인 용어들은 설명의 편의상 여기에서 사용되어, 도면들에 도시된 바와 같이, 다른 구성 요소(들) 또는 특징(들)에 대한 하나의 구성 요소 또는 특징의 관계를 설명할 수 있다. 공간적으로 상대적인 용어들은 도면에 도시된 방향에 덧붙여서, 사용 또는 동작 중인 장치의 다른 방향들을 포함하는 것으로 의도된다. 예를 들어, 도면들에서 장치가 뒤집어진다면, 다른 구성 요소들 또는 특징들 "아래" 또는 "밑"에 있는 것으로 설명되는 구성 요소들은 다른 소자들 또는 특징들 "위"로 향할 것이다. 따라서, "아래"라는 예시적인 용어는 위 또는 아래를 모두 포함할 수 있다. 따라서, 장치는 다시 말해서 90도 회전되거나 다른 방향들로 향할 것이고, 여기에서 사용되는 공간적으로 상대적인 설명들은 이에 따라 해석될 것이다.
마찬가지로, "하이", "로우", "풀 업", "풀 다운", "1", "0" 등과 같은 전기적인 용어들은 설명의 편의상 여기에서 사용되어, 도면들에 도시된 바와 같이, 다른 전압 레벨들 또는 다른 구성 요소(들) 또는 특징(들)에 대한, 하나의 전압 레벨 또는 전류를 설명할 수 있다. 전기적인 상대적인 용어들은 도면에 도시된 전압들 또는 전류들에 덧붙여서, 사용 또는 동작 중인 장치의 다른 기준 전압들을 포함하는 것으로 의도된다. 예를 들어, 도면들에서 장치 또는 신호들이 반전되거나 다른 기준 전압들, 전류들, 또는 전하들을 사용한다면, "하이" 또는 "풀 업"으로 설명되는 구성 요소들은 새로운 기준 전압 또는 전류와 비교하여 "로우" 또는 "풀 다운"일 것이다. 따라서, "하이"라는 예시적인 용어는 상대적으로 로우 또는 하이 전압 또는 전류 모두를 포함할 수 있다. 장치는 다시 말해서 기준의 다른 전기적인 프레임들에 기초할 수 있고, 여기에서 사용되는 전기적인 상대적인 설명들은 이에 따라 해석될 것이다.
여기에서 사용된 용어는 단지 특정 실시예들을 설명하는 목적을 위한 것이고, 본 발명의 개시된 주제를 제한하는 것으로 의도되지 않는다. 여기에서 사용되는 단수들은 문맥상 명백하게 다르게 지칭하지 않는 이상 복수 형식들을 포함하는 것으로 의도된다. "포함한다" 및/또는 "포함하는" 용어들은 상세한 설명에서 사용될 때 명시된 특징들, 숫자들, 단계들, 동작들, 구성 요소들, 및/또는 컴포넌트들의 존재를 명확히 하는 것이고, 하나 이상의 다른 특징들, 숫자들, 단계들, 동작들, 구성 요소들, 컴포넌트들, 및/또는 이의 그룹들의 추가 또는 존재를 배제하는 것은 아니다.
실시예들은 이상적인 실시예들 (그리고 중간 구조들)의 개략적인 도면들인 단면도를 참조하여 여기에서 설명된다. 이를테면, 도면들의 형태 변화들, 예를 들어, 제조 기술들 및/또는 허용 오차들은 결과로써 예상될 수 있다. 따라서, 실시예들은 여기에서 도시된 영역들의 특정 형태들로 제한되도록 해석되지 않아야 하고, 예를 들어, 제조로 인한 형태들의 편차들을 포함할 것이다. 예를 들어, 직사각형으로 도시된 주입된 영역은 주입된 영역으로부터 주입되지 않은 영역으로의 이진법적 변화라기보다는 오히려 둥글거나 곡선적인 특징들 및/또는 이것의 모서리들에서 집중적으로 주입된 경사를 갖는다. 이와 같이, 주입에 의하여 형성된 숨겨진 영역은 숨겨진 영역 및 주입이 발생되는 표면 사이의 영역에 일부 주입을 초래할 수 있다. 따라서, 도면에 도시된 영역들은 모식도이고 그것들의 형태들은 장치의 영역의 실제 형태를 도시한 것으로 의도되지 않고, 본 발명의 개시된 주제의 범위를 제한하는 것으로 의도되지 않는다.
달리 정의되지 않는다면, 여기에서 사용되는 (기술적이고 과학적인 용어들을 포함하는) 모든 용어들은 통상적으로 본 발명의 개시된 주제가 속하는 분야의 당업자에 의하여 이해되는 것과 동일한 의미를 갖는다. 통상적으로 사용되는 사전에 정의되는 것들과 같은 용어들은 관련 기술의 문맥상 의미와 일치하는 의미를 갖도록 해석되어야 하고, 여기에서 명백하게 정의되지 않는다면 이상적이거나 지나치게 형식적인 의미로 해석되지 않을 것이다.
이하, 실시예들은 첨부한 도면들을 참조하여 상세히 설명될 것이다.
도 1은 본 발명에 따른 시스템(100)의 예시적인 실시예의 블록도이다. 다양한 실시예들에서, 시스템(100)은 예를 들어, 랩탑, 데스크탑, 워크 스테이션, PDA(personal digital assistant), 스마트폰, 테블릿, SoC(system on a chip), 및 다른 적합한 컴퓨터들과 같은 컴퓨팅 장치, 또는 이들의 가상 머신 이나 가상 컴퓨팅 장치를 포함할 수 있다. 상술된 내용은 단지 몇 개의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
상술한 바와 같이, 그래프 컴퓨팅은 전형적으로 거대한 스토리지 시스템에서의 거대한 양의 데이터의 저장을 수반하며, 종종 분산 스토리지 시스템에서의 거대한 데이터 양의 저장을 수반한다. 마찬가지로, 그래프 데이터 구조들의 처리는 전형적으로 다수의 컴퓨팅 장치들에서 병렬로 수행되었다. 현재 추세는 처리들이 다수의 장치들에서 단일 컴퓨팅 장치로 옮겨지는 경향이다. 비록 그렇지만, 본 발명은 다수의 시스템들을 포함하거나 분산되는 실시예들에 적용될 수 있다.
상술한 바와 같이, 그래프 어플리케이션들에 대한 상당한 성능 병목 현상은 막대한 그래프 사이즈 및 랜덤 입/출력 (IO 또는 I/O) 액세스 패턴에 의한다. CSR(compressed sparse row) 및 CSC(compressed sparse column)과 같은 표준 희소(sparse) 그래프 포맷들은 엣지 값들의 랜덤 액세스를 수반한다. 수백만의 버텍스들 및 수십억의 엣지들을 갖는 거대한 그래프들은 DRAM(dynamic random access memory)에 맞지 않기 때문에, 표준 희소 그래프 포맷들은 랜덤한 디스크 액세스를 초래하여 그래프 데이터를 디스크에 저장하게 하고 디스크로부터 로드하게 한다. 적은 계산량을 갖는 IO 집중적인 그래프 작업 부하들은 그들의 랜덤한 IO 액세스 패턴으로 인하여 높은 IO 레이턴시를 겪게 되는데, 고속의 NVME(non-volatile memory express) 장치들이라 할지라도 그들의 순차적인 액세스 속도와 비교하여 상당히 더 낮은 랜덤 읽기 및 쓰기 속도를 갖기 때문이다.
도시된 실시예에서, 시스템(100)은 그래프 구조를 처리하는데 필요로 하는 IO 액세스 양을 감소시키는데 이용될 수 있다. 시스템(100)은 그래프 구조의 처리 중 일부가 스토리지 장치(106)에서 수행되는 하나의 실시예를 도시한다. 다른 실시예에서, 동일한 처리 또는 처리 중 일부가 여전히 호스트 프로세싱 장치(102)에 의하여 수행될 수 있다. 상술된 내용은 단지 하나의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
도시된 실시예에서, 시스템(100)은 호스트 프로세싱 장치 또는 회로(102)를 포함할 수 있다. 이러한 실시예에서, 호스트 프로세서(102)는 하나 이상의 머신 실행 명령어들 또는 여러 소프트웨어, 펌웨어, 또는 이의 조합을 실행하도록 구성될 수 있다. 다양한 실시예들에서, 호스트 프로세서(102)는 CPU(central processing unit) 또는 다른 범용 프로세서를 포함할 수 있다. 다른 실시예에서, 호스트 프로세서(102)는 특수화 프로세서 (예를 들어, GPU(graphical processing unit) 또는 다른 병렬 계산-지향 프로세서)를 포함할 수 있다. 이러한 실시예에서, 호스트 프로세서(102)는 그래프 구조의 전체 프로세싱 중 대다수를 수행할 수 있다. 상술된 내용은 단지 몇 개의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
도시된 실시예에서, 시스템(100)은 시스템 메모리(104)를 포함할 수 있다. 다양한 실시예들에서, 시스템 메모리(104)는 휘발성 메모리 (예를 들어, DRAM), 불휘발성 메모리 또는 이의 조합을 포함할 수 있다. 다양한 실시예들에서, 메모리(104)는 일시적 또는 반-영구적 방식으로 데이터를 저장하도록 구성될 수 있다.
도시된 실시예에서, 시스템(100)은 스토리지 장치(106)를 포함할 수 있다. 다양한 실시예들에서, 스토리지 장치(106)는 반-영구적 또는 실질적으로 영구적인 방식으로 데이터를 저장하도록 구성될 수 있다. 도시된 실시예에서, 스토리지 장치(106)는 불휘발성 메모리 (예를 들어, 플래시 메모리, 자기 메모리)를 포함할 수 있다. 나아가, 도시된 실시예에서, 스토리지 장치(106)는 그래프 데이터 구조를 적어도 부분적으로 처리하도록 구성될 수 있다. 다양한 실시예들에서, 시스템(100)은 복수의 스토리지 장치들(106)을 포함할 수 있다.
이러한 실시예에서, 스토리지 장치(106)는 호스트 프로세싱 장치(102)와 (예를 들어, 데이터 및 커맨드들 모두를) 통신하도록 구성되거나, 메모리 관리 시스템(미도시)과 통신하여 결과적으로 호스트 프로세서(102)와 통신하도록 구성되는 스토리지 시스템 인터페이스 또는 회로(118)를 포함할 수 있다.
이러한 실시예에서, 스토리지 장치(106)는 메모리 스토리지(116) 또는 데이터를 저장하는 복수의 메모리 셀들, 회로들, 또는 요소들을 포함할 수 있다. 도시된 실시예에서, 메모리 스토리지(116)는 그래프 데이터 구조, 또는 그래프 데이터 구조의 일부를 이루는 복수의 데이터 요소들(122)을 저장하도록 구성될 수 있다.
다양한 실시예들에서, 스토리지 장치(106)는 메모리 스토리지(116) 및 스토리지 시스템 인터페이스(118) 사이에서 통신하는 입/출력(IO 또는 I/O) 시스템 또는 회로(114)를 포함할 수 있다. 다양한 실시예들에서, IO 시스템(114)은 FTL(flash translation layer) 회로 또는 다른 구조를 포함할 수 있다. 이러한 실시예에서, IO 시스템(114)은 다양한 캐시들, 테이블들, 또는 데이터 구조들, 및 그들을 구현하기 위한 회로를 포함할 수 있다.
도시된 실시예에서, 스토리지 장치(106)는 컨트롤러 프로세서 회로(112)를 포함할 수 있다. 다양한 실시예들에서, 컨트롤러 프로세서(112)는 스토리지 장치(104) 내의 다양한 데이터 관리 활동들을 수행하도록 구성될 수 있다. 이러한 실시예에서, 이러한 관리 활동들은 웨어-레벨링(wear-leveling), 쓰기 머징(write merging) 등을 포함할 수 있다. 도시된 실시예에서, 컨트롤러 프로세서(112)는 또한 그래프 데이터의 데이터 요소들(122)을 적어도 부분적으로 처리하도록 구성될 수 있다. 일부 실시예들에서, 호스트 프로세서(102)는 일부 프로세싱 태스크들을 컨트롤러 프로세서(112)로 오프로드(offload)할 수 있다. 구체적으로, 이러한 실시예에서, 컨트롤러 프로세서(112)는 그래프 데이터 요소들을 머지된 동적 샤드들(shards)로 머지하고, 활성화 엣지들/버텍스들을 예측하고, 및/또는 버텍스 식별자들(IDs)을 재할당하도록 구성될 수 있다. 상술된 내용은 단지 몇 개의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
도 2a 및 도 2b는 본 발명에 따른 데이터 구조들(200, 204, 및 206)의 예시적인 실시예의 다이어그램들이다. 다양한 실시예들에서, 이러한 데이터 구조들(200, 204, 및 206)은 스토리지 장치 또는 메모리 셀들에 적어도 일부 저장될 수 있다.
데이터 구조(200)는 예시적인 그래프 데이터 구조를 도시한다. 상술한 바와 같이, 그래프 데이터 구조는 복수의 버텍스들(212) (예를 들어, 버텍스들 A, B, C, D, 및 E)을 포함할 수 있다. 이러한 버텍스들(212)은 현실 세계 또는 개념적인 것들 (예를 들어, 사람들, 교차로들, 웹 페이지들, 판매되는 상품들 등)을 나타낼 수 있다. 이러한 버텍스들(212)은 엣지들(214)을 통하여 연결될 수 있다. 일반적으로, 각각의 엣지(214)는 버텍스들(212) 사이의 연관성에 대한 일부 속성을 지칭하는 것과 연관된 세기(strength) 또는 값을 포함한다. 나아가, 각각의 엣지(214)는 방향을 포함할 수 있다. 일부 그래프들은 단방향성이거나 양방향성일 수 있다. 예를 들어, 엣지 X(214)는 소스 버텍스 A(212)를 목적 또는 타겟 버텍스 B(212)에 연결할 수 있다. 다양한 실시예들에서, 무수한 다른 속성들이 버텍스들(212) 및 엣지들(214)과 연관될 수 있다.
데이터 구조(204)는 하나의 실시예에서, 각각의 엣지(214)가 데이터 요소(204)로 저장될 수 있음을 도시한다. 이러한 실시예에서, 데이터 요소(204)는 소스 버텍스 식별자(ID)(252), 타겟 버텍스 ID(254), 및 엣지 값(256)을 포함하는 데이터의 트리플릿(triplet)을 포함할 수 있다. 다양한 실시예들에서, 이러한 서브-요소들(252, 254, 및 256)은 그들 자체의 데이터 구조들 (예를 들어, 어레이들, 연관 어레이들, 키-밸류 쌍들) 또는 데이터 구조로의 포인터를 포함할 수 있다. 다양한 실시예들에서, 데이터 요소(204)는 추가적인 속성들 또는 값들을 포함할 수 있다. 상술된 내용은 단지 하나의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
데이터 구조(206)는 하나의 실시예에서, 실제로 스토리지 장치에 저장될 수 있는 데이터 구조(200)를 도시한다. 이러한 실시예에서, 데이터 구조(206)는 그래프(200)의 엣지(214) 각각에 대한 데이터 요소(270, 272, 274, 276, 278, 및 280) (전체로서 데이터 요소들(204))를 포함할 수 있다. 다양한 실시예들에서, 데이터 요소들(204)은 소스 버텍스 ID(252)에 의하여 정렬 또는 조직화될 수 있다.
도 3a, 도 3b, 및 도 3c는 본 발명에 따른 시스템(300) 및 데이터 구조들(312, 314, 및 316)의 예시적인 실시예의 다이어그램들이다. 도시된 실시예에서, 시스템(300)은 또한 (도 1에 도시된) 호스트 프로세서를 포함할 수 있다.
도시된 실시예에서, 그래프 데이터 구조는 “샤드들(shards)”로 언급되는 관리 가능한 부분들로 프루닝(prune) 또는 감소될 수 있다. 종종 그래프 구조들은 수십억의 엣지들을 포함할 수 있다. 이는 그것들이 거대한 병렬 컴퓨팅 클러스터들로 처리되어야 함을 의미한다. 이러한 문제를 해결하기 위하여, PSW(Parallel Sliding Windows)가 디스크로부터 매우 거대한 그래프들을 처리하기 위하여 사용될 수 있다. 더 큰 그래프가 더 작은 서브-부분들로 나누어짐에 따라, 각각의 서브-부분은 거대 클러스터 또는 분산 컴퓨팅 시스템의 요구 없이, 단일한 컴퓨팅 장치 (예를 들어, 호스트 프로세서)에 의하여 별도로 다루어질 수 있다.
상술한 바와 같이, 그래프는 샤드들(312)로 그룹화될 수 있으며, 샤드들(312)은 동일한 목적지 또는 소스 버텍스를 갖는 모든 엣지들과 같은, 공통점들을 포함할 수 있다. 이러한 실시예에서, 샤드의 사이즈는 더 많은 데이터의 효율성을 갖는 컴퓨팅 태스크의 사이즈와 균형을 맞추기 위해 선택될 수 있다.
나아가, 그래프 구조들은 일반적으로 수많은 반복들에 걸쳐 또는 루프(loop)로 처리된다. 컴퓨팅 시스템은 전체 프로세스를 다시 시작하기 전에, 전체 그래프를 처리 또는 분석할 것이다. 상술한 바와 같이, 각각의 반복들 사이에서, 엣지들/버텍스들 사이의 값들 또는 연결들이 변화할 수 있다. 일부 방식에서 변화하는 값들은 "활성화(active)" 되는 것으로 여겨지며, 변하지 않는 엣지들/버텍스들은 종종 "비활성화(inactive)" 되는 것으로 여겨진다.
도시된 실시예에서, 스토리지 장치 또는 메모리 셀들(306)은 원본 샤드들(312)을 저장한다. 도시된 실시예에서, 3개의 샤드들(312)이 도시된다. 제1 샤드는 데이터 요소들(1A, 1B, 2A, 2B, 3A, 및 3B)을 포함한다. 제2 샤드는 데이터 요소들(1C, 1D, 2C, 2D, 3C, 및 3D)을 포함한다. 제3 샤드는 데이터 요소들(1E, 1F, 2E, 2F, 3E, 3F)을 포함한다.
도시된 실시예에서, 프로세싱 장치 (예를 들어, 호스트 프로세서)는 샤드들(312)로부터 시스템 메모리(304) (예를 들어, DRAM)로 원하는 데이터 요소들을 로드하거나 읽을 수 있다. 도 3a의 도시된 실시예에서, 원하는 데이터 요소들은 제1 샤드(1A, 1B, 2A, 2B, 3A, 및 3B)의 전체, 제2 샤드의 요소들(1C 및 1D), 및 제3 샤드의 요소들(1E 및 1F)을 포함할 수 있다. 이러한 데이터 요소들은 처리 중인 샤드들(314A)을 포함할 수 있다.
이러한 처리 동안, 프로세싱 장치는 샤드들(314A)의 일부가 변화하거나 활성화되는 것을 검출할 수 있다. 이는 박스(315A)로 나타나며, 박스(315A)는 요소들(1A, 1C, 1E)이 마지막 반복 이후에 변화하고 활성화됨을 지칭한다.
이러한 실시예에서, 프로세싱 장치는 활성화 요소들(315A)을 스토리지(306)로 다시 쓸 수 있다. 이러한 활성화 요소들(315A)은 동적 샤드들(316A)의 세트에 포함될 수 있으며, 동적 샤드들(316A)은 샤드들(312)의 수정되거나 최소화된 버전들이다. 이러한 실시예에서, 이러한 동적 샤드들(316A)은 활성화 요소들, 활성화 엣지들을 갖는 요소들, 또는 일부 실시예들에서 활성화 버텍스들을 갖는 요소들 만을 포함할 수 있다.
계속해서, 도 3b는 다음 처리 단계를 도시한다. 제2 처리 단계 또는 스테이지에서, 프로세싱 장치 (예를 들어, 호스트 프로세서)는 샤드들(312)로부터 시스템 메모리(304)로 원하는 데이터 요소들을 로드하거나 읽을 수 있다. 도 3b의 도시된 실시예에서, 원하는 데이터 요소들은 제1 샤드의 요소들(2A 및 2B), 제2 샤드의 모든 요소들, 및 제3 샤드의 요소들(2E 및 2F)을 포함할 수 있다. 이러한 데이터 요소들은 처리 중인 샤드들(314B)을 포함할 수 있다.
이러한 처리 동안, 프로세싱 장치는 샤드들(314B)의 일부가 변화하거나 활성화되는 것을 검출할 수 있다. (요소들 1A, 1C 및 1E는 이미 활성화로 검출됨.) 이는 박스(315B)로 나타나며, 박스(315B)는 요소들(2A, 2C, 및 2E)이 마지막 반복 이후에 변화하고 활성화됨을 지칭한다. 이러한 실시예에서, 프로세싱 장치는 활성화 요소들(315B)을 스토리지(306)로 다시 쓸 수 있다. 이러한 활성화 요소들(315B)은 동적 샤드들(316B)의 세트에 포함되거나 덧붙이기/추가될 수 있다.
도 3c는 다음 처리 단계를 도시한다. 제3 처리 단계 또는 스테이지에서, 프로세싱 장치 (예를 들어, 호스트 프로세서)는 샤드들(312)로부터 시스템 메모리(304)로 원하는 데이터 요소들을 로드하거나 읽을 수 있다. 도 3c의 도시된 실시예에서, 원하는 데이터 요소들은 제1 샤드의 요소들(3A 및 3B), 제2 샤드의 요소들(3C 및 3D), 및 제3 샤드의 모든 요소들을 포함할 수 있다. 이러한 데이터 요소들은 처리 중인 샤드들(314C)을 포함할 수 있다.
이러한 처리 동안, 프로세싱 장치는 샤드들(314C)의 일부가 변화하거나 활성화되는 것을 검출할 수 있다. 이는 박스(315C)로 나타나며, 박스(315C)는 요소들(3A, 3C, 및 3E)이 마지막 반복 이후에 변화하고 활성화됨을 지칭한다. 이러한 실시예에서, 프로세싱 장치는 활성화 요소들(315C)을 스토리지 장치(306)로 다시 쓸 수 있다. 이러한 활성화 요소들(315C)은 동적 샤드들(316C)의 세트에 포함되거나 덧붙이기/추가될 수 있다.
도시된 실시예에서, 3개의 동적 샤드들(316C)이 생성된다. 제1 동적 샤드는 요소들(1A, 2A, 및 3A)을 포함한다. 제2 동적 샤드는 요소들(1C, 2C, 및 3C)을 포함한다. 그리고, 제3 동적 샤드는 요소들(1E, 2E, 및 3E)을 포함한다. 상술된 내용은 단지 하나의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다. 이러한 실시예에서, 활성화 요소들이 변화함에 따라, 그래프 처리에 대한 각각의 반복 이후에 동적 샤드들(316C)은 변화할 수 있다.
이러한 실시예에서, 동적 샤드들(316C)의 사용은, 더 적은 데이터가 메모리(304) 및 스토리지(306) 사이에서 전달될 필요가 있음에 따라, (미래의 반복들에서) 미래의 처리에 대한 IO 비효율성을 감소시킬 수 있다. 그러나, 작은 샤드 사이즈는 그래프 처리를 위한 병렬 처리량을 감소시키고, 디스크 액세스들의 개수를 증가시킨다. 그래프 작업 부하들의 디스크 액세스들의 개수가 동일하게 유지되면서, 데이터의 양이 감소되면, 이용 가능한 메모리 비용의 비효울적인 이용을 초래한다.
도 3d, 도 3e, 및 도 3f는 본 발명에 따른 시스템(301)의 예시적인 실시예의 다이어그램들이다. 본 발명에서, 위에서 생성된 동적 샤드들(316)을 사용하고 수용하는 대신에, 새로운 동적 샤드들이 더 많은 효율성을 제공하도록 생성될 수 있다. 나아가, 이러한 생성은 오프로드 회로 또는 엔진을 통하여 발생할 수 있다. 일부 실시예들에서, 이는 (더욱 IO 트래픽을 감소시키도록) 스토리지 장치 자체를 포함할 수 있고, (호스트 프로세서가 아닌) 컨트롤러 프로세서에 의하여 수행될 수 있다.
도시된 실시예에서, 시스템 또는 스토리지 장치(301)는 스토리지 부분에서의 복수의 메모리 셀들(356), 및 머지 또는 프로세싱 회로(354)을 포함할 수 있다. 다양한 실시예들에서, 머지 회로(354)는 스토리지 장치(301)의 컨트롤러 프로세서를 포함할 수 있다. 다른 실시예에서, 머지 동작 및 머지 회로(354)는 호스트 프로세서에 포함될 수 있다. 그러나, 후술할 바와 같이, (외부가 아닌) 지역화(localize)된 머지 회로(354)가 IO 오버헤드를 줄일 수 있고 나아가 효율성을 증가시킬 수 있다.
도 3d의 도시된 실시예에서, (예를 들어, 상술된 기술들을 통하여 생성된) 다수의 동적 샤드들(317)은 메모리 셀들(356)에 저장될 수 있다. 이러한 샤드들(317)은 이후 머지 회로(354)에 로드될 수 있다. 다른 실시예에서, 머지 회로(354)는 스토리지(356)에 위치한 데이터로 이러한 작업을 수행할 수 있다.
이러한 실시예에서, 머지 회로(354)는 요소들의 서브 세트(365D) (1A, 1C, 1E, 및 1G)를 머지 회로(354)의 버퍼들에 (요소들(364D)로) 로드할 수 있다. 머지 회로(354)는 이후, 원하는 샤드 사이즈 및 요소들의 개수에 따라 요소들(364D)을 재-그룹화할 수 있다. 도시된 실시예에서, 머지 회로(354)는 4개의 더 작은 동적 샤드들(317)을 2개의 더 큰 머지된 동적 샤드들(366D)로 리폼할 수 있다. 상술된 내용은 단지 하나의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
도시된 실시예에서, 요소들(1A 및 1C)은 메모리 셀들(356)에 제1 머지된 동적 샤드로 다시 쓰여질 수 있다. 반면, 요소들(1E 및 1G)은 메모리 셀들(356)에 제2 머지된 동적 샤드로 다시 쓰여질 수 있다. 이러한 샤드들은 머지된 동적 샤드들(366D)에 포함될 수 있다.
계속해서 도 3e에서, 머지 회로(354)는 요소들의 서브 세트(365E) (2A, 2C, 2E, 및 2G)를 머지 회로(354)의 버퍼들에 (요소들(364E)로) 로드할 수 있다. 머지 회로(354)는 이후, 원하는 샤드 사이즈 및 요소들의 개수에 따라 요소들(364E)을 재-그룹화할 수 있다.
도시된 실시예에서, 요소들(2A 및 2C)은 메모리 셀들(356)에 제1 머지된 동적 샤드로 다시 쓰여지거나 덧붙여질 수 있다. 반면, 요소들(2E 및 2G)은 메모리 셀들(356)에 제2 머지된 동적 샤드로 다시 쓰여지거나 덧붙여질 수 있다. 이러한 샤드들은 머지된 동적 샤드들(366E)에 포함될 수 있다.
계속해서 도 3f에서, 머지 회로(354)는 요소들의 서브 세트(365F) (3A, 3C, 3E, 및 3G)를 머지 회로(354)의 버퍼들에 (요소들(364F)로) 로드할 수 있다. 머지 회로(354)는 이후, 원하는 샤드 사이즈 및 요소들의 개수에 따라 요소들(364F)을 재-그룹화할 수 있다.
도시된 실시예에서, 요소들(3A 및 3C)은 메모리 셀들(356)에 제1 머지된 동적 샤드로 다시 쓰여지거나 덧붙여질 수 있다. 반면, 요소들(3E 및 3G)은 메모리 셀들(356)에 제2 머지된 동적 샤드로 다시 쓰여지거나 덧붙여질 수 있다. 이러한 샤드들은 머지된 동적 샤드들(366F)에 포함될 수 있다.
다양한 실시예들에서, 머지 동작은 모든 구간 (또는 다수의 구간들)에서 반복된 읽기 및 쓰기 동작들을 수반한다. 이러한 실시예에서, 머지 회로(354)는 다수의 동적 샤드들(317)에 대한 읽기를 수행하여 최신의 업데이트된 값들을 얻을 수 있다. 이러한 실시예에서, 머지 회로(354)는 이후 새롭게 머지된 샤드들(366)에 대한 쓰기 동작을 수행할 수 있다. 하나의 실시예에서, 머지 처리가 완료된 후, 머지 회로(354)는 동적 샤드들(317)로의 쓰기를 더 이상 막지 않거나, 풀어줄(release) 수 있다. 모든 활성화 엣지들 또는 요소들이 머지된 샤드들(366)로 머지되기 때문이다.
이러한 실시예에서, 머지 동작을 위한 (그리고, 머지 회로(354)에 의한) 메모리 액세스 패턴은 순차적 및/또는 스트림 액세스들의 패턴일 수 있다. 이는 입력 샤드들(317)이 이미 소스 버텍스 인덱스 또는 ID에 의하여 정렬되고, 머지 회로(354)가 이후 엣지의 소스 버텍스 인덱스 또는 ID에 기초한 출력을 정렬하기 때문일 수 있다. 이러한 실시예에서, 동적 샤드들(317)에 대한 메모리 액세스 패턴은 순차적인 읽기들을 포함할 수 있고, 머지된 샤드들(366)에 대한 메모리 액세스 패턴은 순차적인 쓰기들을 포함할 수 있다.
다양한 실시예들에서, 머지 동작은 스토리지 장치 내에서 수행될 수 있고, 더 큰 시스템에 영향을 미치지 않을 수 (또는 최소한으로 영향을 미칠 수) 있다. (예를 들어, RAM의 대역폭 소모, CPU 사이클 소모 등.) 상술한 바와 같이, 머지 회로(354)는 스토리지 장치의 컨트롤러 프로세서에 포함될 수 있다. 다양한 실시예들에서, 이는 또한 일반적인 스토리지 유지 관리 (예를 들어, 웨어-레벨링, 쓰기 머징 등)를 수행하는 컨트롤러 프로세서를 포함할 수 있다. 그러나, 다른 실시예에서, 머지 회로(356)는, 임베디드 프로세서, 병렬-컴퓨팅 프로세서, 또는 재프로그래머블 프로세서 (예를 들어, FPGA(field-programmable gate array) 등)와 같은, 특수화 프로세서를 포함할 수 있다. 나아가, 다양한 실시예들에서, 스토리지 장치 내에 머지 동작을 구현하는 것은 요구되는 RAM의 양을 줄일 수 있다. 각각의 동적 샤드로부터 하나의 엣지 엔트리만 요구하는 동작이 비교를 위한 버퍼에서 처리될 수 있기 때문이다.
상술한 바와 같이, 동적 샤드들(316)의 전형적인 생성 및 그래프 컴퓨팅 목적들을 위한 샤드들의 처리는 전형적으로 3개의 단계들, 읽기, 처리, 및 쓰기를 수반한다. 로우 데이터(raw data)는 스토리지 장치로부터 읽혀진다 (읽기 단계). 이후 처리되며, 이 경우에는 동적 샤드들(316)을 생성하는 것을 포함한다 (처리 단계). 그리고, 이후 마지막으로 스토리지에 다시 쓰여진다 (쓰기 단계).
도시된 실시예에서, 머지된 동적 샤드들(366)의 생성 및 처리는 상술한 처리과정에서 다음과 같은 때 즉, 스토리지 장치가 사용 중이 아니거나, 초과적인 리소스 능력들 (예를 들어, 대역폭, 메모리 셀들(356)에 대한 읽기/쓰기 포트들 등)을 가질 때일 수 있다. 이러한 실시예에서, 머지 회로(354)는 호스트 프로세서가 처리 단계로 들어갈 때까지 머지된 샤드들(366)을 생성하는 것을 기다릴 수 있다. 읽기 및 쓰기 단계들 동안 스토리지 장치는 사용 중일 수 있으나, 처리 단계 동안 스토리지 장치는 일반적으로 유휴 상태(idle)일 수 있다. 이러한 실시예에서, 본 발명은 그래프 구조의 전체 처리 동안 컴퓨팅 전력 및 사용되지 않은 IO 대역폭을 이용할 수 있다.
다시 도 3a로 돌아와서, 보이는 것처럼, 동적 샤드들의 생성이 활성화 엣지들 (예를 들어, 활성화 요소들(315A, 315B, 및 315C))의 검출에 기초한다. 다양한 실시예들에서, 활성화 엣지들의 검출 및/또는 예측은 그래프 데이터의 처리가 더 효율적이도록 할 수 있다. 다양한 실시예들에서, 프로세서 (호스트 또는 컨트롤러)는 다수의 활성화 엣지 (또는 요소) 검출 또는 예측 정책들을 이용할 수 있다. 이러한 실시예들에서, 프로세서는 그래프 어플리케이션 또는 이용되는 설정들에 기초하여 이러한 정책들의 문턱들 또는 값들을 동적으로 조정하거나 이러한 다수의 정책들 사이에서 동적으로 스위칭하도록 구성될 수 있다. 상술된 내용은 단지 몇 개의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
이러한 실시예에서, 프로세서 (호스트 또는 컨트롤러)는 버텍스들 및 엣지들의 활성화를 프로파일하도록 구성될 수 있고, 또한 다양한 예측 정책들을 사용하여 활성화 엣지 예측의 실패율을 프로파일하도록 구성될 수 있다. 이와 같이, 실패 정책은 더 정확한 것으로 대체될 수 있다. 이러한 실시예에서, 다양한 파라미터들이 다양한 예측 정책들에 대하여 프로파일될 수 있으며, 각각의 예측 정책은 예측을 위한 다양한 파라미터들을 이용하기 때문이다. 다양한 실시예들에서, 다수의 예측 정책들이 서로 직교(독립적)(orthogonal)할 수 있고, 더 나은 예측을 위하여 조합될 수 있다.
제1 예측 정책은 예측에 사용되는 예측 빈도 또는 과거 깊이(historical depth)를 바꾸는 것을 포함할 수 있다. 오직 하나의 이전 반복에 기초한 활성화 엣지들에 관한 결정은 직후의 반복을 위한 효율적인 최적화일 수 있다. 그러나, 이는 모든 뒤이은 반복들을 위한 가장 효율적인 시나리오는 아닐 수 있다. 이러한 실시예에서, 모든 반복에서 활성화 엣지들을 업데이트하지 않는 것은 유용할 수 있다. 다양한 실시예들에서, 이전의 활성화 엣지는 유휴 상태인 짧은 시간 이후에 다시 활성화될 수 있다. 그러므로, 동적 샤드에서 이전의 활성화 또는 활동을 중단한 엣지들을 유지하는 것 (그리고 더 큰 서브-그래프를 사용하는 것)은 더 낮은 실패 예측을 가질 수 있고, 따라서 서브-그래프로부터 즉시 비활성화 엣지들을 제거하는 것보다 더 낮은 성능 오버헤드를 가질 수 있다. 이러한 실시예에서, 엣지가 비활성화로 간주되기 전에 비활성화 레벨 (상호 작용들의 개수)은 실패율 프로파일에 의한 동적으로 조절하는 예측 빈도일 수 있다. 다양한 실시예들에서, 이는 문턱 값의 사용을 수반할 수 있다.
다시 도 2b로 돌아와서, 엣지 업데이트들은 일반적으로 2개의 부류들로, 관측된 것과 관측되지 않은 것이 있다. 관측된 업데이트는 그래프 처리의 현재 반복 동안 알려지는 것이다. 반면, 관측되지 않은 업데이트는 그래프 처리의 다음 반복까지 알려지지 않는 것이다. 관측된 업데이트는 타겟 버텍스 ID가 소스 버텍스 ID보다 큰 것이다 (예를 들어, 데이터 요소들(270, 272, 274, 및 278)). 이는 일반적으로 데이터 요소들이 그들의 소스 버텍스 ID의 순서로 처리되기 때문이다. 관측되지 않은 업데이트는 타겟 버텍스 ID가 소스 버텍스 ID보다 작은 것이다 (예를 들어, 데이터 요소들(276 및 280)).
다양한 실시예들에서, 활성화 엣지 판단/예측 매커니즘은 관측된 업데이트들이 관측되지 않은 업데이트들과 비교하여 어떻게 다루어지는에 따라 다를 수 있다. 하나의 이러한 실시예에서, 모든 관측되지 않은 엣지들은 그들의 상태 또는 값들의 임의의 변화와 무관하게 활성화로 간주될 수 있다. 이러한 실시예에서, 관측된 업데이트들만 그것들이 실제로 변화되는지, 그래서 활성화인지 보기 위하여 테스트될 수 있다. 이러한 실시예에서, 변화되지 않은 관측된 업데이트들을 제거하는 것은 다음 반복을 위하여 더욱 IO 효율적일 수 있다. 나아가, 엣지에 대한 업데이트는 또한 버텍스 및 엣지가 “핫(hot)”인 지시자이고, 미래의 더 많은 업데이트들을 수반할 수 있다.
다양한 실시예들에서, 활성화 데이터 요소를 판단/예측하는 하나의 정책은 버텍스-기반 예측 및 분석을 포함할 수 있다. 이러한 실시예에서, 주어진 버텍스의 입력 방향 엣지들 중 하나에 대한 업데이트가 발생할 때, 프로세서는 해당 버텍스와 관련된 모든 엣지들을 활성화로 마크할 수 있다. 일부 실시예들에서, 프로세서는 출력 방향 엣지들만 활성화로 설정할 수 있다. 다양한 실시예들에서, 버텍스-기반 예측은 거대한 동적 샤드 사이즈를 초래할 수 있으나, 또한 더 낮은 실패 예측율을 가질 수 있으므로, 엣지-기반의 예측보다 더 낮은 성능 오버헤드를 가질 수 있다.
또 다른 실시예에서, 활성화 데이터 요소를 판단/예측하기 위한 다른 정책은 값-기반 예측 모델을 포함할 수 있다. 하나의 실시예에서, 가변적인 문턱 값들은 활성화 엣지 예측을 위하여 이용될 수 있다. 이러한 실시예에서, 임의의 변화된 엣지들을 활성화로 마킹하는 대신에, 활성화로 간주되기 전에 의미있는 (문턱 값에 의하여 정의되는) 양 만큼 엣지가 변화하는 것이 요구될 수 있다. 이러한 실시예에서, 엣지 (또는 상술한 버텍스-기반 정책과 함께 사용된다면 버텍스)는 활성화로 간주되기 전에 특정한 변동량을 허용할 수 있다. 이러한 실시예에서, 번동량이 문턱 값보다 낮다면, 프로세서는 활성화 엣지들로부터 해당 엣지를 제외할 수 있고, 그러므로 처리되는 엣지들의 양을 감소시킴으로써, 전체 시스템 성능을 개선할 수 있다. 상술된 내용은 단지 몇 개의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
도 4a 및 도 4b는 본 발명에 따른 데이터 구조들(400 및 401)의 예시적인 실시예의 다이어그램들이다. 다양한 실시예들에서, 데이터 구조들(400 및 401)은 상술된 것처럼, 스토리지 매체 또는 장치에 적어도 일부 저장될 수 있다. 다양한 실시예들에서, 후술될 동작들은 컨트롤러 프로세서 (또는 다른 프로세서, 예를 들어, 호스트 프로세서)에 의하여 수행될 수 있다. 이러한 실시예에서, 컨트롤러 프로세서는 호스트 프로세서의 사용 또는 도움 없이 동작들을 수행할 수 있고, 스토리지 장치가 달리 유휴 상태이거나 초과적인 리소스들을 가질 수 있는 시간 구간들 동안 동작들을 수행할 수 있다. 상술된 내용은 단지 몇 개의 예시적인 실시예로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
도시된 실시예에서, 데이터 구조(400)는 인덱스 또는 식별자들(ID들) A-L로 라벨링된 다수의 버텍스들(402)을 포함할 수 있다. 도 4a에 도시된 바와 같이, 이러한 인덱스들은 다소 조직화되지 않을 수 있다. 예를 들어, 버텍스 A는 2개의 엣지들을 통하여 버텍스 L에 연결되나, 버텍스 B에 절대 연결되지 않는다. 버텍스 K는 버텍스들 A, B, 및 J에 연결된다. 이러한 실시예에서, 버텍스 ID들은 버텍스들이 데이터 구조(400)에 추가되도록 할당될 수 있거나 다른 이유들로 그들의 할당이 주어질 수 있다. 다시, 수많은 그래프 어플리케이션들에서 데이터 구조는 수십억의 버텍스들을 포함할 수 있다. 일부 실시예들에서, 데이터 구조(400)는 더 큰 그래프의 서브-그래프를 나타낼 수 있으며, 서브-그래프는 단일 스토리지 장치 내에 저장된다.
다양한 실시예들에서, 프로세서 (예를 들어, 컨트롤러 프로세서)는 버텍스 ID들을 재할당하도록 구성될 수 있다. 이러한 실시예에서, 프로세서는 목적 버텍스의 버텍스 ID를 소스 버텍스 ID에 (수치적으로 또는, 도시된 실시예에서 알파벳 순서로) 더 가까운 ID로 재할당하도록 구성될 수 있다.
다양한 실시예들에서, 이는 그래프 구조(400)를 순회(traversing)함으로써 수행될 수 있다. 예를 들어, 프로세서는 그래프 구조(400)를 돌아다닐 수 있고, 소스들 및 목적지들을 판단하고, 이후 가능한 또는 필요로 하는 버텍스 ID들을 재할당할 수 있다. 일부 실시예들에서, 프로세서는 BFS(Breath First Search) 또는 DFS(Depth First Search)와 같은 기술들을 사용하여 순회를 수행할 수 있다. 비록, 상술된 내용은 단지 몇 개의 예시적인 실시예로 이해될 것이나, 개시된 주제가 이에 제한되지 않을 것이다.
이러한 실시예에서, 재할당 기술은 도 4b의 그래프 구조(401)를 초래할 수 있다. 다시, 버텍스들(402) A-L의 ID들을 가지나, 이러한 ID 할당들은 훨씬 적게 랜덤하거나 더욱 순차적일 수 있다. 예를 들어, 버텍스 L 에서 B로 재할당함으로써, 버텍스들 A 및 B는 서로 다음이고 엣지들을 공유한다. 이러한 재-할당은 버텍스 L/B의 의미 또는 이의 값을 변화시키지 않는 것으로 이해될 것이며, 재-할당은 오직 이와 연관된 인덱스 또는 식별자 만을 변화시킨다. 마찬가지로, 그래프(400)에서 원래 B로 식별되거나 라벨링되는 버텍스는 그래프(401)에서 “이동(move)”하지 않으며, 단지 라벨 D로 재-할당 또는 개칭되는 것이다.
그러나, 도 2b의 구조(206)에서 보여질 수 있는 바와 같이, 데이터 요소들은 그들의 버텍스 ID들에 기초하여 저장 또는 정렬되는 경향이 있다. 그러므로, 소스 및 목적지들이 다른 하나에 더 가까워지도록 버텍스 ID들을 재-할당함으로써, 그들의 연관된 데이터 요소들은 이후 다른 하나에 더 가깝도록 저장된다. 이는 더 효율적인 데이터 액세스들을 초래할 수 있으며, 데이터 액세스들은 랜덤 또는 비-순차적인 아닌, 더욱 순차적일 수 있기 때문이다. 따라서, 디스크 액세스들의 개수가 감소될 수 있다. 버텍스 ID들의 재-할당은 그래프의 실제 데이터 구조에 대한 더욱 효율적인 저장 또는 정렬을 초래할 수 있다.
다양한 실시예들에서, 이러한 재-할당은 활성화 버텍스들에서만 수행될 수 있다. 다양한 실시예들에서, 활성화 버텍스들의 개수는 전체 그래프 또는 서브-그래프 내의 버텍스들의 개수보다 보통 훨씬 적을 수 있다. 이러한 실시예에서, 더 적은 버텍스들에 대한 ID들의 재-할당은 그들의 소스 버텍스들에 더 가까운 ID들을 할당하는 가능성을 증가시킬 수 있다. 상술한 바와 같이, 일부 실시예들에서, 다양한 엣지 예측 기술들이 활성화 버텍스가 무엇인지 정의하는데 이용될 수 있다.
일부 실시예들에서, 재-할당 기술은 더 빠른 활성화 버텍스/엣지 판단 또는 예측을 초래할 수 있다. 이러한 실시예에서, 활성화 버텍스들이 더 낮은 ID들로 할당될수록, 그들은 (ID에 의한 순서로 데이터 요소들을 처리하는 경향이 있는) 그래프 처리의 각 반복의 처음에 (또는 처음에 더 가깝게) 처리된다. 일반적으로, 버텍스 또는 엣지가 활성화인지 식별하기 위해서, 프로세서는 버텍스들의 입력 엣지들 모두가 처리될 때까지 기다릴 필요가 있다. 다시, 관련된 데이터 요소들이 함께 그룹화되도록 데이터 요소들을 정렬 또는 재-할당함으로써, 이러한 기다리는 시간이 감소될 수 있다.
다양한 실시예들에서, 버텍스 재할당은 동적 샤드들의 동시의 머징과 함께 사용될 수 있다. 상술한 바와 같이, 머지 동작은 각각의 구간 동안 반복되는 읽기 및 쓰기 동작들을 포함할 수 있다. 이러한 실시예에서, 업데이트들이 단일 샤드들로 지역화되도록 ID들을 재-할당함으로써, 동적 샤드들을 머지할 필요가 있는 샤드 액세스들의 개수가 감소될 수 있다. 이는 결국 새로운 샤드와 연관된 모든 업데이트들을 모으는데 더 짧은 시간을 제공할 수 있다.
도 5는 정보 처리 시스템(500)의 개략적인 블록도이며, 본 발명의 원리들에 따라 형성된 반도체 장치들을 포함할 수 있다.
도 5를 참조하면, 정보 처리 시스템(500)은 본 발명의 원리들에 따라 구성된 하나 이상의 장치들을 포함할 수 있다. 다른 실시예에서, 정보 처리 장치(400)는 본 발명의 원리들에 따른 하나 이상의 기술들을 이용하거나 실행할 수 있다.
다양한 실시예들에서, 정보 처리 시스템(500)은, 예를 들어, 랩탑, 데스크탑, 워크 스테이션, 서버, 블레이드 서버, PDA(personal digital assistant), 스마트폰, 테블릿, 및 다른 적합한 컴퓨터들과 같은 컴퓨팅 장치, 또는 이들의 가상 머신 또는 가상 컴퓨팅 장치를 포함할 수 있다. 다양한 실시예들에서, 정보 처리 시스템(500)은 사용자 (미도시)에 의하여 이용될 수 있다.
본 발명에 따른 정보 처리 시스템(500)은 중앙 처리 장치(CPU), 로직, 또는 프로세서(510)를 더 포함할 수 있다. 일부 실시예들에서, 프로세서(510)는 하나 이상의 기능 유닛 블록들(FUBs) 또는 조합 로직 블록들(CLBs, 515)을 포함할 수 있다. 이러한 실시예에서, 조합 로직 블록은 다양한 부울 로직 연산들 (예를 들어, NAND, NOR, NOT, XOR), 안정화 로직 장치들 (예를 들어, 플립플롭들, 래치들), 다른 로직 장치들, 또는 이들의 조합을 포함할 수 있다. 이러한 조합 로직 동작들은 원하는 결과를 달성하도록, 입력 신호들을 처리하는 단순하거나 복잡한 방식으로 구성될 수 있다. 동기 조합 로직 동작들의 몇 개의 예시적인 실시예들이 설명되나, 개시된 주제는 이에 제한되지 않고, 비동기 동작들 또는 이의 조합을 포함할 수 있는 것으로 이해될 것이다. 일 실시예에서, 조합 로직 동작들은 복수의 상보성 금속 산화물 반도체(CMOS) 트랜지스터들을 포함할 수 있다. 비록 다른 기술들이 이용될 수 있고, 다른 기술들이 개시된 주제의 범위 내에 있는 것으로 이해되지만, 다양한 실시예들에서, 이러한 CMOS 트랜지스터들은 로직 동작들을 수행하는 게이트들에 배치될 수 있다.
본 발명에 따른 정보 처리 시스템(500)은 휘발성 메모리(520) (예를 들어, 랜덤 액세스 메모리(RAM))를 더 포함할 수 있다. 본 발명에 따른 정보 처리 시스템(500)은 불휘발성 메모리(530) (예를 들어, 하드 드라이브, 광학 메모리, NAND 또는 플래시 메모리 등)를 더 포함할 수 있다. 일부 실시예들에서, 휘발성 메모리(520), 불휘발성 메모리(530), 또는 이의 조합 또는 일부들 중 어느 하나는 “기억 매체(storage medium)”로 언급될 수 있다. 다양한 실시예들에서, 휘발성 메모리(520) 및/또는 불휘발성 메모리(530)는 데이터를 반영구적 또는 실질적으로 영구적인 방식으로 저장하도록 구성될 수 있다.
다양한 실시예들에서, 정보 처리 시스템(500)은, 정보 처리 시스템(500)이 통신 네트워크의 일부이고, 통신 네트워크를 경유하여 통신하도록 구성되는 하나 이상의 네트워크 인터페이스들(540)을 포함할 수 있다. 와이파이 프로토콜의 예시들은, 이에 제한되지 않으나, IEEE(Institute of Electrical and Electronics Engineers) 802.11g IEEE 802.11n 등을 포함할 수 있다. 셀룰러 프로토콜의 예시들은, 이에 제한되지 않으나, IEEE 802.16m (일명, Wireless-MAN (Metropolitan Area Network)) Advanced, Long Term Evolution(LTE)), EDGE(Enhanced Data rates for GSM(Global System for Mobile Communication)), HSPA+(High-Speed Packet Access) 등을 포함할 수 있다. 유선 프로토콜의 예시들은, 이에 제한되지 않으나, IEEE 802.3 (일명, Ethernet), Fibre Channel, Power Line communication (예를 들어, HomePlug, IEEE 1901 등) 등을 포함할 수 있다. 상술된 내용은 단지 몇 개의 예시적인 실시예들로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
본 발명에 따른 정보 처리 시스템(500)은 사용자 인터페이스 부(550) (예를 들어, 디스플레이 어댑터, 햅틱 인터페이스, 인간 인터페이스 장치)을 더 포함할 수 있다. 다양한 실시예들에서, 이러한 사용자 인터페이스 부(550)는 사용자로부터 입력을 수신하도록 구성되거나 사용자에 출력을 제공하도록 구성될 수 있다. 뿐만 아니라, 다른 종류의 장치들은 사용자와의 상호 작용을 제공하는데 사용될 수 있다. 예를 들어, 사용자에 제공되는 피드백은, 예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백과 같은 감각 피드백의 임의의 형태일 수 있다. 그리고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
다양한 실시예들에서 정보 처리 시스템(500)은 하나 이상의 다른 장치들 또는 하드웨어 구성 요소들(560) (예를 들어, 디스플레이나 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 프로세서)을 포함할 수 있다. 상술된 내용은 단지 몇 개의 예시적인 실시예들로 이해될 것이며, 개시된 주제가 이에 제한되지 않을 것이다.
본 발명에 따른 정보 처리 시스템(500)은 하나 이상의 시스템 버스들(505)을 더 포함할 수 있다. 이러한 실시예에서 시스템 버스(505)는 프로세서(510), 휘발성 메모리(520), 불휘발성 메모리(530), 네트워크 인터페이스(540), 사용자 인터페이스 부(550), 및 하나 이상의 하드웨어 구성 요소들(560)을 통신 결합하도록 구성될 수 있다. 프로세서(510)에 의하여 처리된 데이터 또는 불휘발성 메모리(530)의 외부로부터 입력된 데이터는 불휘발성 메모리(530) 또는 휘발성 메모리(520)중 어느 하나에 저장될 수 있다.
다양한 실시예들에서, 정보 처리 시스템(500)은 하나 이상의 소프트웨어 구성 요소들(570)을 포함하거나 실행할 수 있다. 일부 실시예들에서, 소프트웨어 구성 요소들(570)은 운영 체제(OS) 및/또는 어플리케이션을 포함할 수 있다. 일부 실시예들에서, 운영 체제는 하나 이상의 서비스들을 어플리케이션에 제공하도록 구성될 수 있고, 어플리케이션 및 정보 처리 시스템(500)의 다양한 하드웨어 구성 요소들(예를 들어, 프로세서(510), 네트워크 인터페이스(540)) 사이에 매개체로써 관리 또는 작동하도록 구성될 수 있다. 이러한 실시예에서, 정보 처리 시스템(500)은 하나 이상의 기본 어플리케이션들(native applications)을 포함할 수 있다. 하나 이상의 기본 어플리케이션들은 로컬 설치될 수 있고 (예를 들어, 불휘발성 메모리(530) 내에), 프로세서(510)에 의하여 직접 실행되도록 구성될 수 있고, 운영 체제와 직접적으로 상호작용 할 수 있다. 이러한 실시예에서, 기본 어플리케이션들은 미리-컴파일된 머신 실행 코드를 포함할 수 있다. 일부 실시예들에서, 기본 어플리케이션들은 소스 또는 오브젝트 코드를 프로세서(510)에 의하여 실행되는 실행 코드로 변환하는 스크립트 번역기 (예를 들어, C shell (csh), AppleScript, AutoHotkey) 또는 가상 실행 머신(VM) (예를 들어, Java Virtual Machine, the Microsoft Common Language Runtime)을 포함할 수 있다.
상술된 반도체 장치들은 다양한 패키지 기술들을 이용하여 캡슐화될 수 있다. 예를 들어, 본 발명의 원리들에 따라 구성된 반도체 장치들은 POP(package on package) 기술, BGAs(ball grid arrays) 기술, CSPs(chip scale packages) 기술, PLCC(plastic leaded chip carrier) 기술, PDIP(plastic dual in-line package) 기술, die in waffle pack 기술, die in wafer form 기술, COB(chip on board) 기술, CERDIP(ceramic dual in-line package) 기술, PMQFP(plastic metric quad flat package) 기술, PQFP(plastic quad flat package) 기술, SOIC(small outline package) 기술, SSOP(shrink small outline package) 기술, TSOP(thin small outline package) 기술, TQFP(thin quad flat package) 기술, SIP(system in package) 기술, MCP(multi-chip package) 기술, WFP(wafer-level fabricated package) 기술, WSP(wafer-level processed stack package) 기술, 또는 통상의 기술자에 알려진 다른 기술 중 임의의 하나의 기술을 이용하여 캡슐화될 수 있다.
방법 단계들은 입력 데이터를 작동시키고 출력을 생성함으로써 기능들을 수행하도록 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래머블 프로세서들에 의하여 수행될 수 있다. 또한, 방법 단계들은, 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)와 같은 전용 로직 회로에 의하여 수행될 수 있고, 장치는 전용 로직 회로로 구현될 수 있다.
다양한 실시예들에서, 컴퓨터 판독 매체는 실행 시, 장치가 방법 단계들의 적어도 일부를 수행하게 하는 명령어들을 포함할 수 있다. 일부 실시예들에서 컴퓨터 판독 매체는 자기 매체(magnetic medium), 광학 매체(optical medium), 다른 매체, 또는 이의 조합 (예를 들어, CD-ROM, 하드 드라이브, ROM, 플래시 드라이브)에 포함될 수 있다. 이러한 실시예에서, 컴퓨터 판독 매체는 유형적이고 비일시적으로 실시되는 제조물일 수 있다.
본 발명의 원리들이 예시적인 실시예들을 참조하여 설명되었으나, 다양한 변경들 및 수정들이 이러한 본 발명의 개념들의 사상 및 범위를 벗어나지 않고 이루어질 수 있음은 당업자에게 명백할 것이다. 그러므로, 상술된 실시예들은 제한되지 않고 단순히 예시적인 것으로 이해되어야 한다. 따라서, 본 발명의 개념들의 범위는 아래의 청구항들 및 그것들의 균등물의 가장 넓은 허용 가능한 해석에 의하여 결정될 것이고, 전술한 설명에 의하여 한정 또는 제한되어서는 안된다. 그러므로, 첨부된 청구항들은 이러한 실시예들의 범위 내에 있는 모든 변경 및 수정들을 포함하는 것으로 고려된다.
100, 300, 301: 시스템
102: 호스트 프로세싱 장치
104, 304: 시스템 메모리
106, 306: 스토리지 장치
112: 컨트롤러 프로세서 회로
114: I/O 시스템
116: 메모리 스토리지
118: 스토리지 시스템 인터페이스
122, 270, 272, 274, 276, 278, 280: 데이터 요소
200, 204, 206, 400, 401: 데이터 구조들
212, 402: 버텍스
214: 엣지
252: 소스 버텍스 ID
254: 목적/타겟 버텍스 ID
256: 엣지 값
312: 원본 샤드들
314A, 314B, 314C: 처리되는 샤드들
316A, 316B, 316C, 317: 동적 샤드들
364D, 364E, 365F: 처리되는 데이터 요소들
366D, 366E, 366F: 머지된 동적 샤드들
354: 머지 회로
356: 메모리 셀들

Claims (20)

  1. 외부의 호스트 프로세서 회로와 데이터 및 커맨드들을 통신하는 호스트 프로세서 인터페이스 회로;
    그래프 데이터 요소들을 머지된 동적 샤드들로 머지하는 컨트롤러 프로세서 회로; 및
    그래프 구조의 적어도 일부의 데이터를 저장하는 불휘발성 메모리를 포함하되,
    상기 머지된 동적 샤드들의 각각은 동일한 개수의 상기 그래프 데이터 요소들을 포함하고,
    상기 그래프 구조는, 각각이 버텍스들 및 엣지를 포함하는 데이터 요소들을 포함하고, 상기 데이터 요소들의 서브-부분들은 샤드들로 그룹화되는 장치.
  2. 제1 항에 있어서,
    상기 컨트롤러 프로세서 회로는 활성화 엣지들만을 포함하는 데이터 요소들로부터 동적 샤드를 생성하는 장치.
  3. 제1 항에 있어서,
    상기 컨트롤러 프로세서는, 상기 장치가 상기 호스트 프로세서 인터페이스 회로에 의하여 수신된 커맨드에 관여하지 않는 시간에 적어도 일부 기초하여, 상기 데이터 요소들의 머지를 수행하는 장치.
  4. 제1 항에 있어서,
    상기 호스트 프로세서 인터페이스 회로는,
    샤드 내의 0 이상의 데이터 요소들의 업데이트를 포함하는 처리를 위하여 상기 외부의 호스트 프로세서 회로로 상기 샤드를 제공하고,
    상기 업데이트된 데이터 요소들이 있다면, 상기 불휘발성 메모리 장치에 상기 업데이트된 데이터 요소들을 동적 샤드의 일부로 쓰는 장치.
  5. 제4 항에 있어서,
    상기 컨트롤러 프로세서 회로는,
    상기 호스트 프로세서 회로를 통하여 상기 동적 샤드의 사이즈를 수집하고,
    머지된 동적 샤드로 머지하도록, 이웃한 동적 샤드들 또는 일부 샤드들의 개수를 결정하고,
    상기 샤드들의 순서 속성들을 유지하도록 소스 식별자로 활성화 엣지들을 정렬하는 장치.
  6. 제1 항에 있어서,
    상기 컨트롤러 프로세서 회로는 버퍼 메모리를 포함하고,
    상기 컨트롤러 프로세서 회로는,
    머지된 동적 샤드로 머지되는 샤드 각각에 대하여,
    상기 불휘발성 메모리로부터 상기 버퍼 메모리로 상기 샤드들 각각에서 하나의 데이터 요소만을 복사하고,
    하나 이상의 머지된 동적 샤드들로 상기 데이터 요소들을 그룹화하고,
    상기 불휘발성 메모리에 상기 데이터 요소들을 상기 하나 이상의 머지된 동적 샤드들의 일부로 쓰는 장치.
  7. 제2 항에 있어서,
    활성화 엣지는 활성화 엣지 예측 정책에 의하여 판단되는 장치.
  8. 제7 항에 있어서,
    상기 활성화 엣지는, 동적으로 조절하는 문턱 값과 비교되어, 상기 호스트 프로세서 회로에 의한 처리의 복수의 이전 반복들에 기초하여 판단되는 장치.
  9. 제7 항에 있어서,
    상기 활성화 엣지들은 처리 반복 내에서 관측되지 않은 업데이트된 활성화 엣지들을 포함하는 장치.
  10. 제7 항에 있어서,
    상기 활성화 엣지 예측 정책은 처리 반복 내에서 관측된 업데이트된 활성화 엣지들의 실패율에 적어도 일부 기초하여, 동적으로 조절되는 장치.
  11. 제7 항에 있어서,
    상기 활성화 엣지는, 상기 엣지와 연관된 버텍스가 변화하는지 검출하고, 상기 버텍스가 변화한다면 상기 버텍스와 연관되는 모든 엣지들 또는 적어도 일부의 특정 타입을 활성화 엣지들로 간주함으로써, 판단되는 장치.
  12. 제1 항에 있어서,
    각각의 버텍스가 버텍스 인덱스 수와 연관되고,
    상기 컨트롤러 프로세서 회로는,
    제1 인덱스 수에서 제2 인덱스 수로 목적 버텍스의 인덱스 수를 재할당하여, 상기 목적 버텍스의 제2 인덱스 수가 상기 목적 버텍스의 제1 인덱스 수보다 수치적으로 소스 버텍스의 인덱스 수에 가깝도록 하고, 상기 소스 버텍스는 상기 목적 버텍스에 연관되는 장치.
  13. 제12 항에 있어서,
    상기 컨트롤러 프로세서 회로는,
    상기 적어도 일부 그래프 구조를 복수의 서브-그래프 구조들로 분리하고,
    소스 버텍스 및 목적 버텍스의 연관성들을 식별하도록, 제1 버텍스에 순회 기술을 이용하고,
    상기 소스 버텍스 및 목적 버텍스 연관성들에 적어도 일부 기초하여, 버텍스 인덱스 수들 각각을 재할당하는 장치.
  14. 제12 항에 있어서,
    상기 컨트롤러 프로세서 회로는,
    상기 목적 버텍스가 활성화 버텍스인 경우에 한하여 목적 버텍스의 인덱스 수를 재할당하는 장치.
  15. 제12 항에 있어서,
    상기 컨트롤러 프로세서 회로는,
    데이터 요소들을 포함하는 하나 이상의 새로운 샤드들을 생성하되,
    상기 데이터 요소들의 버텍스들의 인덱스 수들은 재할당되는 장치.
  16. 제1 항에 있어서,
    상기 컨트롤러 프로세서 회로는,
    하나 이상의 샤드들 내의 활성화 업데이트된 데이터 요소들을 지역화하도록 버텍스 식별 수들의 재할당을 이용하는 장치.
  17. 그래프 데이터 구조와 관련된 명령어들을 실행하는 호스트 프로세서 회로; 및
    적어도 하나의 스토리지 장치를 포함하되,
    상기 적어도 하나의 스토리지 장치의 각각은,
    상기 호스트 프로세서 회로와 데이터를 통신하는 호스트 프로세서 인터페이스 회로;
    그래프 데이터 요소들을 머지된 동적 샤드들로 머지하는 컨트롤러 프로세서 회로; 및
    그래프 구조의 적어도 일부에 데이터를 저장하는 불휘발성 메모리를 포함하되,
    상기 머지된 동적 샤드들은 동일한 개수의 상기 그래프 데이터 요소들을 포함하고,
    상기 그래프 구조는, 각각이 버텍스들 및 엣지를 포함하는 데이터 요소들을 포함하고, 상기 데이터 요소들의 서브-부분들은 샤드들로 그룹화되는 시스템.
  18. 제17 항에 있어서,
    상기 컨트롤러 프로세서 회로는 활성화 엣지들만을 포함하는 데이터 요소들로부터 동적 샤드를 생성하고,
    상기 컨트롤러 프로세서는, 상기 스토리지 장치 각각이 상기 호스트 인터페이스 회로에 의하여 수신된 커맨드에 관여하지 않는 시간에 적어도 일부 기초하여, 상기 데이터 요소들의 머지를 수행하는 시스템.
  19. 제17 항에 있어서,
    상기 호스트 프로세서 회로는 활성화 엣지 예측 정책을 이용함으로써 엣지들이 활성화 엣지들인지 판단하는 시스템.
  20. 제17 항에 있어서,
    각각의 버텍스가 버텍스 인덱스 수와 연관되고,
    상기 호스트 프로세서 회로는,
    제1 인덱스 수에서 제2 인덱스 수로 목적 버텍스의 인덱스 수를 재할당하여, 상기 목적 버텍스의 제2 인덱스 수가 상기 목적 버텍스의 제1 인덱스 수보다 수치적으로 소스 버텍스의 인덱스 수에 가깝도록 하고, 상기 소스 버텍스는 상기 목적 버텍스에 연관되는 시스템.

KR1020190126498A 2018-12-14 2019-10-11 그래프 작업 부하들을 위한 스토리지에서의 최적의 동적 샤드 생성 KR20200073979A (ko)

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
KR20200073979A true KR20200073979A (ko) 2020-06-24

Family

ID=71071623

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190126498A KR20200073979A (ko) 2018-12-14 2019-10-11 그래프 작업 부하들을 위한 스토리지에서의 최적의 동적 샤드 생성

Country Status (4)

Country Link
US (1) US20200192880A1 (ko)
JP (1) JP7469026B2 (ko)
KR (1) KR20200073979A (ko)
CN (1) CN111324777A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230051841A (ko) * 2021-10-12 2023-04-19 서울대학교산학협력단 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법
WO2023234526A1 (ko) * 2022-06-03 2023-12-07 주식회사 블룸테크놀로지 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법
WO2023243881A1 (ko) * 2022-06-14 2023-12-21 주식회사 블룸테크놀로지 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법
WO2024039129A1 (ko) * 2022-08-17 2024-02-22 주식회사 블룸테크놀로지 블록체인 네트워크에서 다이나믹 샤딩 시스템 및 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
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 杭州复杂美科技有限公司 分布式数据存储方法、设备和存储介质
CN112231589B (zh) * 2020-10-10 2023-09-29 腾讯科技(深圳)有限公司 信息管理方法及装置
US11791838B2 (en) 2021-01-15 2023-10-17 Samsung Electronics Co., Ltd. Near-storage acceleration of dictionary decoding

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4897422B2 (ja) 2006-09-29 2012-03-14 アイシン・エィ・ダブリュ株式会社 データ更新システム、端末装置、ナビゲーション装置、及びデータ更新方法
US9262462B2 (en) 2012-07-26 2016-02-16 Mongodb, Inc. Aggregation framework system architecture and method
US8612688B2 (en) 2010-12-30 2013-12-17 Facebook, Inc. Distributed cache for graph data
US9495477B1 (en) 2011-04-20 2016-11-15 Google Inc. Data storage in a graph processing system
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
US10180992B2 (en) * 2016-03-01 2019-01-15 Microsoft Technology Licensing, Llc Atomic updating of graph database index structures
US20170255708A1 (en) * 2016-03-01 2017-09-07 Linkedin Corporation Index structures for graph databases
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230051841A (ko) * 2021-10-12 2023-04-19 서울대학교산학협력단 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법
WO2023234526A1 (ko) * 2022-06-03 2023-12-07 주식회사 블룸테크놀로지 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법
WO2023243881A1 (ko) * 2022-06-14 2023-12-21 주식회사 블룸테크놀로지 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법
WO2024039129A1 (ko) * 2022-08-17 2024-02-22 주식회사 블룸테크놀로지 블록체인 네트워크에서 다이나믹 샤딩 시스템 및 방법

Also Published As

Publication number Publication date
JP2020095701A (ja) 2020-06-18
JP7469026B2 (ja) 2024-04-16
TW202040384A (zh) 2020-11-01
US20200192880A1 (en) 2020-06-18
CN111324777A (zh) 2020-06-23

Similar Documents

Publication Publication Date Title
JP7469026B2 (ja) ストレージでの最適な動的シャードを生成する装置及びシステム
US9152601B2 (en) Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
Siddique et al. Apache Hama: An emerging bulk synchronous parallel computing framework for big data applications
CN110633248A (zh) 高性能计算环境中的序列优化
CN108475212B (zh) 使用动态分区处理数据的方法、系统和计算机可读介质
US20180300330A1 (en) Proactive spilling of probe records in hybrid hash join
US20190146837A1 (en) Distributed real-time computing framework using in-storage processing
Marconi Online scheduling and placement of hardware tasks with multiple variants on dynamically reconfigurable field-programmable gate arrays
Wu et al. Performance analysis of graph neural network frameworks
Zhu et al. An iterated local search methodology for the qubit mapping problem
US10198293B2 (en) Distributed real-time computing framework using in-storage processing
KR102238600B1 (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
You et al. Scalable and efficient spatial data management on multi-core CPU and GPU clusters: A preliminary implementation based on Impala
TWI833806B (zh) 用於分片創建的裝置及系統
US10402533B1 (en) Placement of cells in a multi-level routing tree
CN110325984B (zh) 在图形中进行层次社区检测的系统和方法
Kimura et al. Accelerating the Held-Karp Algorithm for the Symmetric Traveling Salesman Problem
Tench et al. GraphZeppelin: Storage-friendly sketching for connected components on dynamic graph streams
Jayalath et al. Efficient Geo-distributed data processing with rout
Jin et al. Software systems implementation and domain-specific architectures towards graph analytics
Li et al. Concurrent hybrid breadth-first-search on distributed powergraph for skewed graphs
Aher et al. Accelerate the execution of graph processing using GPU
CN112580296B (zh) 用于处理电路版图的方法、设备和存储介质
Qiao et al. A customizable MapReduce framework for complex data-intensive workflows on GPUs
Kalms et al. Clustering and Mapping Algorithm for Application Distribution on a Scalable FPGA Cluster

Legal Events

Date Code Title Description
A201 Request for examination