KR102551726B1 - Memory system - Google Patents
Memory system Download PDFInfo
- Publication number
- KR102551726B1 KR102551726B1 KR1020180155681A KR20180155681A KR102551726B1 KR 102551726 B1 KR102551726 B1 KR 102551726B1 KR 1020180155681 A KR1020180155681 A KR 1020180155681A KR 20180155681 A KR20180155681 A KR 20180155681A KR 102551726 B1 KR102551726 B1 KR 102551726B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- data
- map operation
- interface
- pulled
- Prior art date
Links
Images
Classifications
-
- 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
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명의 실시예는 메모리 시스템에 관한 것으로, 대용량 메모리 장치의 가속기(Accelerator)에 관한 기술이다. 이러한 본 발명의 실시예는 데이터를 저장하는 복수의 메모리 및 복수의 메모리에 저장된 데이터를 리드하여 맵 연산을 수행하고, 맵 연산의 결과 데이터를 복수의 메모리에 저장하는 풀드 메모리 컨트롤러를 포함한다. An embodiment of the present invention relates to a memory system, and is a technology related to an accelerator of a large-capacity memory device. This embodiment of the present invention includes a plurality of memories for storing data and a pulled memory controller for reading data stored in the plurality of memories, performing a map operation, and storing result data of the map operation in the plurality of memories.
Description
본 발명은 메모리 시스템에 관한 것으로, 대용량 메모리 장치의 가속기(Accelerator)에 관한 기술이다. The present invention relates to a memory system and relates to an accelerator for a large-capacity memory device.
최근 스마트 폰, 태블릿 PC와 같은 이동 통신 단말기의 보급이 대중화되고 있다. 그리고, 소셜 네트워크 서비스(SNS, Social Network Service), 사물 네트워크(M2M, Machine to Machine), 센서 네트워크(Sensor Network) 등의 사용이 증가하고 있다. 이에 따라, 데이터의 양, 생성 속도 및 그 다양성이 기하급수적으로 증가하고 있다. 빅 데이터의 처리를 위해서는 메모리의 속도도 중요하지만 저장 용량이 큰 메모리 장치 및 메모리 모듈이 요구된다.Recently, the spread of mobile communication terminals such as smart phones and tablet PCs has become popular. In addition, the use of social network services (SNS), machine to machine (M2M), sensor networks, and the like is increasing. Accordingly, the amount of data, the speed of generation and the variety thereof are increasing exponentially. In order to process big data, memory speed is also important, but memory devices and memory modules with large storage capacity are required.
이에, 메모리 시스템은 메모리의 물리적 한계를 극복하면서 데이터의 저장 용량을 늘리기 위하여 복수의 통합된 메모리들을 구비한다. 일 예로, 클라우드 데이터 센터(Cloud Data Center)의 서버 구조(Server Architecture)가 빅 데이터 어플리케이션(Big-Data Application)을 효율적으로 실행시키기 위한 구조로 바뀌고 있다. Accordingly, the memory system includes a plurality of integrated memories to increase data storage capacity while overcoming physical limitations of the memory. For example, the server architecture of a cloud data center is being changed to a structure for efficiently executing a big-data application.
빅 데이터를 효율적으로 처리하기 위해 복수의 메모리들이 통합된 풀드 메모리(Pooled Memory)를 사용한다. 풀드 메모리는 많은 용량과 높은 대역폭(Bandwidth)를 제공할 수 있으며, 인메모리 데이터베이스(In-memory Database) 등에서 유용하게 사용할 수 있다. In order to efficiently process big data, pooled memory in which multiple memories are integrated is used. The pooled memory can provide a large capacity and a high bandwidth, and can be usefully used in an in-memory database.
본 발명의 실시예는 풀드 메모리 내부에 가속기를 포함하여 시스템의 에너지 소모를 줄이고 아울러 성능을 향상시킬 수 있도록 하는 메모리 시스템을 제공한다. An embodiment of the present invention provides a memory system that includes an accelerator inside a pulled memory to reduce energy consumption and improve performance of the system.
본 발명의 실시예에 따른 메모리 시스템은, 데이터를 저장하는 복수의 메모리; 및 복수의 메모리에 저장된 데이터를 리드하여 맵 연산을 수행하고, 맵 연산의 결과 데이터를 복수의 메모리에 저장하는 풀드 메모리 컨트롤러를 포함한다. A memory system according to an embodiment of the present invention includes a plurality of memories for storing data; and a pulled memory controller that reads data stored in a plurality of memories, performs a map operation, and stores result data of the map operation in the plurality of memories.
또한, 본 발명의 다른 실시예에 따른 메모리 시스템은, 프로세서와 연결된 패브릭 네트워크; 및 패브릭 네트워크를 통해 프로세서와 패킷을 중계하며, 프로세서의 요청시 메모리에 저장된 데이터를 프로세서에 전달하는 풀드 메모리를 포함하며, 풀드 메모리는 메모리에 저장된 데이터를 리드하여 맵 연산을 오프-로딩하고, 맵 연산의 결과 데이터를 메모리에 저장하는 풀드 메모리 컨트롤러를 포함한다. Also, a memory system according to another embodiment of the present invention may include a fabric network connected to a processor; and a pulled memory that relays packets with the processor through a fabric network and delivers data stored in the memory to the processor upon request of the processor, wherein the pulled memory reads the data stored in the memory to off-load map operation, It includes a pulled memory controller that stores result data of an operation in a memory.
본 발명의 실시예는 시스템의 성능을 향상시키고, 데이터 연산을 위해 필요한 에너지를 절약할 수 있도록 하는 효과를 제공한다. Embodiments of the present invention provide an effect of improving system performance and saving energy required for data operation.
도 1은 본 발명의 실시예에 따른 메모리 시스템의 개념을 설명하기 위한 도면.
도 2는 본 발명의 실시예에 따른 메모리 시스템의 구성을 보여주는 도면.
도 3은 도 2의 풀드 메모리 컨트롤러에 관한 상세 구성을 보여주는 도면.
도 4 내지 도 6은 본 발명의 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 도면.
도 7은 본 발명의 실시예에 따른 메모리 시스템의 성능 개선을 보여주는 도면.1 is a diagram for explaining the concept of a memory system according to an embodiment of the present invention;
2 is a diagram showing the configuration of a memory system according to an embodiment of the present invention;
3 is a diagram showing a detailed configuration of the pulled memory controller of FIG. 2;
4 to 6 are diagrams for explaining the operation of a memory system according to an embodiment of the present invention;
7 is a diagram showing performance improvement of a memory system according to an embodiment of the present invention;
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명하고자 한다. 본 발명의 실시예를 설명함에 있어서 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때 이는 "직접적으로 연결"되어 있는 경우뿐만 아니라 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함" 또는 "구비"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함하거나 구비할 수 있는 것을 의미한다. 또한, 명세서 전체의 기재에 있어서 일부 구성요소들을 단수형으로 기재하였다고 해서, 본 발명이 그에 국한되는 것은 아니며, 해당 구성요소가 복수 개로 이루어질 수 있음을 알 것이다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. In describing an embodiment of the present invention, when a part is said to be "connected" to another part, this is not only when it is "directly connected" but also when it is "electrically connected" with another element interposed therebetween. Also includes In addition, when a part "includes" or "includes" a certain component, this means that it may further include or include other components, not excluding other components unless otherwise specified. . In addition, even if some components are described in the singular form in the description of the entire specification, the present invention is not limited thereto, and it will be appreciated that the corresponding components may consist of a plurality of pieces.
데이터 센터 어플리케이션은 데이터의 크기가 점점 더 커짐에 따라 더 많은 하드웨어 자원을 필요로 한다. 서버 아키텍처(Server Architecture)는 하드웨어 자원을 보다 효율적으로 사용하려는 방향으로 진화하고 있다. Data center applications require more hardware resources as the size of data grows. Server architecture is evolving in the direction of using hardware resources more efficiently.
일 예로, 클라우드 데이터 센터(Cloud Data Center)에서는 딥 러닝(Deep Learning)을 비롯한 많은 머신 러닝(Machine Learning) 어플리케이션들이 실행되고 있다. 위와 같은 딥 러닝, 머신 러닝 등의 어플리케이션들은 대부분 시간적 지역성(Temporal Locality)이 낮아서 중앙처리장치(CPU; Central Processing Unit) 보다는 그래픽처리장치(GPU; Graphic Processing Unit)나 FPGA(Field Programmable Gate Array) 등의 하드웨어 가속기(Hardware Accelerator)를 통해 연산을 수행하는 것이 일반적이다. For example, many machine learning applications including deep learning are being executed in a cloud data center. Most of the applications such as deep learning and machine learning above have low temporal locality, so they require a graphic processing unit (GPU) or a field programmable gate array (FPGA) rather than a central processing unit (CPU). It is common to perform calculations through a hardware accelerator.
여기서, 시간적 지역성(temporal locality)은 한번 접근했던 데이터에 비교적 가까운 시간 내에 다시 접근하는 것을 의미한다. 즉, 위의 어플리케이션들은 빈번하게 접근되는 핫(hot) 데이터 보다 한동안 접근이 없는 콜드(cold) 데이터를 사용한다. Here, temporal locality means that once accessed data is accessed again within a relatively close time. That is, the above applications use cold data that has not been accessed for a while rather than frequently accessed hot data.
프로세서(예를 들면, 중앙처리장치)가 가속기(Accelerator)에게 잡(Job)을 오프-로딩(Off-loading)하는 과정을 살펴보면 다음과 같다. 먼저, 프로세서의 로컬 메모리(Local Memory)에서 가속기의 로컬 메모리로 데이터를 옮긴다. 이후에, 가속기가 연산을 마치면 그 결과 데이터를 프로세서 쪽으로 다시 옮겨야 한다. A process of off-loading a job from a processor (eg, a central processing unit) to an accelerator is as follows. First, data is moved from the local memory of the processor to the local memory of the accelerator. Later, when the accelerator finishes its operation, it must move the resulting data back to the processor.
만일, 데이터를 옮기는 비용이 데이터를 연산하는 비용보다 크다면 데이터를 가급적 덜 옮길 수 있도록 아키텍처를 구현하는 것이 전체 비용을 절감할 수 있다. 이를 위해, 최근에는 메모리 구동 컴퓨팅 컨셉(Memory-Driven Computing Concept)이 제안되었다.If the cost of moving data is greater than the cost of calculating data, implementing an architecture to move data as little as possible can reduce the overall cost. To this end, a memory-driven computing concept has recently been proposed.
도 1은 본 발명의 실시예에 따른 메모리 시스템의 개념을 설명하기 위한 도면.1 is a diagram for explaining the concept of a memory system according to an embodiment of the present invention;
도 1의 실시예는 시스템 온 칩(SoC; System On Chip), 즉, 프로세서 중심의 컴퓨팅(연산 장치) 구조에서 메모리 중심의 컴퓨팅 구조로 아키텍처가 변화되는 것을 나타낸다. 프로세서 중심의 컴퓨팅 구조에서는 하나의 시스템 온 칩이 하나의 메모리와 일대일 방식으로 연결된다. The embodiment of FIG. 1 represents a change in architecture from a System On Chip (SoC), that is, a processor-oriented computing (computing device) structure to a memory-oriented computing structure. In the processor-centric computing structure, one system-on-chip is connected to one memory in a one-to-one manner.
메모리 구동 컴퓨팅(Memory-Driven Computing)이란 여러 시스템 온 칩이 패브릭 네트워크(Fabric Network)를 통해 연결된 통합 메모리(Unified Memory)를 사용한다. 시스템 온 칩(SoC) 간에 데이터를 주고 받을 때에는 메모리 대역폭(Memory Bandwidth)으로 데이터를 주고 받게 된다. Memory-driven computing uses unified memory in which several systems-on-chips are connected through a fabric network. When data is exchanged between system-on-chips (SoCs), data is exchanged with a memory bandwidth.
또한, 패브릭 네트워크로 연결된 하나의 통합 메모리는 데이터를 주고 받기 위해 기존처럼 메모리 카피(Memory Copy)를 하지 않아도 된다. 위와 같은 메모리 구동 컴퓨팅(Memory-Driven Computing)이 상용화되려면 메모리 의미적 상호 연결(Memory Semantic Interconnect)이 높은 대역폭(Bandwidth), 낮은 레이턴시(Latency), 일관성(Coherency) 등을 지원해야 한다. In addition, a single unified memory connected through a fabric network does not require memory copy as in the past to send and receive data. For commercialization of memory-driven computing as described above, memory semantic interconnection must support high bandwidth, low latency, and coherency.
본 발명의 실시예가 속하는 기술분야에서는 이와 관련해 트랜잭션 기반 (Transaction-based) 메모리 시스템의 상호 연결(Interconnect)에 대한 연구가 활발히 진행 중이다.In the technical field to which an embodiment of the present invention belongs, research on interconnection of a transaction-based memory system is being actively conducted.
가속기와 관련해서는 근접 데이터 처리(Near Data Processing; NDP) 혹은 프로세싱 인 메모리(Processing In Memory; PIM)과 같이 워크 로드(Workload)의 특성에 따른 가속기의 위치에 대한 연구도 널리 진행되고 있다. 여기서, 프로세싱 인 메모리는 데이터 처리 속도 및 데이터 전송 속도를 증가시키기 위해 프로세서 로직이 메모리 셀들에 밀접하게 결합된 메모리를 의미한다. Regarding the accelerator, studies on the position of the accelerator according to the characteristics of the workload, such as Near Data Processing (NDP) or Processing In Memory (PIM), are also widely conducted. Here, processing-in-memory refers to a memory in which processor logic is closely coupled to memory cells in order to increase data processing speed and data transmission speed.
본 발명의 실시예는 다수의 메모리가 통합된 풀드 메모리 구조(Pooled Memory Architecture) 및 그에 적합한 인-메모리 데이터 베이스 운용(In-memory DataBase Usage)에 관한 기술이다. 이하에서는 본 발명의 실시예에 따른 맵-리듀스 어플리케이션(Map-Reduce Application)의 특징을 설명하고, 맵(Map) 연산을 풀드 메모리(Pooled Memory) 내의 가속기(후술함)에서 처리하는 과정을 설명하기로 한다.An embodiment of the present invention relates to a pooled memory architecture in which a plurality of memories are integrated and an in-memory database usage suitable therefor. Hereinafter, characteristics of a Map-Reduce Application according to an embodiment of the present invention will be described, and a process of processing a map operation in an accelerator (described later) in a pooled memory will be described. I'm going to do it.
도 2는 본 발명의 실시예에 따른 메모리 시스템의 구성을 보여주는 도면이다. 2 is a diagram showing the configuration of a memory system according to an embodiment of the present invention.
본 발명의 실시예에 따른 메모리 시스템(10)은 위에서 설명한 메모리 구동 컴퓨팅(Memory-Driven Computing) 구조를 기반으로 한다. 이러한 메모리 시스템(10)은 복수의 프로세서(예를 들면, 중앙처리장치, CPU)(20), 패브릭 네트워크(30), 복수의 채널(40) 및 복수의 풀드 메모리(100)를 포함한다. The
여기서, 복수의 프로세서(20)는 노드 CND를 통해 패브릭 네트워크(30)와 연결된다. 그리고, 복수의 프로세서(20)는 패브릭 네트워크(30)를 통해 복수의 풀드 메모리(100)와 연결된다. 또한, 풀드 메모리(100)는 복수의 채널(40)을 통해 패브릭 네트워크(30)에 연결된다. 즉, 복수의 풀드 메모리(100) 각각은 N개의 채널(40)을 통해 패브릭 네트워크(30)에 연결될 수 있다. Here, the plurality of
복수의 풀드 메모리(100) 각각은 복수의 메모리(120)와, 복수의 메모리(120)를 제어하기 위한 풀드 메모리 컨트롤러(PMC; Pooled Memory Controller)(110)를 포함한다. 풀드 메모리 컨트롤러(110)는 버스 BUS를 통해 각 메모리(120)와 연결된다. Each of the plurality of
각각의 메모리(120)는 패브릭 네트워크(30)에 바로 연결될 수도 있다. 하지만, 다수의 메모리(120)들이 하나의 통합된 풀드 메모리(100)에 포함되어, 풀드 메모리(100)가 패브릭 네트워크(30)에 연결될 수도 있다. Each
풀드 메모리(100)가 다수의 메모리(120)들을 포함하는 경우, 풀드 메모리 컨트롤러(110)는 패브릭 네트워크(30)와 다수의 메모리(120)들 사이에서 각 메모리(120)들을 관리한다. When the
여기서, 풀드 메모리 컨트롤러(110)는 처리율(Throughput)을 높이기 위해 메모리 인터리빙(Memory Interleaving)을 수행하거나 신뢰성(Reliability), 가용성(Availability) 및 내구성(Serviceability) 등을 높이기 위해 어드레스 리맵핑(Address Remapping) 등을 지원한다.Here, the
인-메모리 데이터 베이스(In-memory DataBase)란 빠른 접근을 위해 데이터 베이스(DB)를 스토리지(Storage)가 아닌 메인 메모리(Main Memory)에 저장하는 데이터 베이스 관리 시스템이다. An in-memory database is a database management system that stores a database in main memory rather than storage for fast access.
현재의 서버 시스템(Server System)은 메모리(Memory)의 용량을 증가시키는데 물리적인 한계가 있다. 이에 따라, 어플리케이션(Application)이 데이터 베이스의 크기를 각 서버(Server)가 가진 메모리 용량 이상으로 키울 수 없다. 데이터 베이스의 크기가 커지면 어쩔 수 없이 여러 서버에 나눠서 데이터 베이스를 저장하게 되고, 여러 서버를 엮는 과정에서 성능이 저하되는 부분이 있다. 풀드 메모리(100)는 많은 용량과 높은 대역폭(Bandwidth)을 제공하므로 인- 메모리(In-memory DB)에서 유용하게 사용될 수 있다.Current server systems have physical limitations in increasing the capacity of memory. Accordingly, the application cannot increase the size of the database beyond the memory capacity of each server. When the size of the database increases, the database is inevitably divided into several servers to store the database, and in the process of combining multiple servers, there is a part where performance deteriorates. Since the pulled
도 3은 도 2의 풀드 메모리 컨트롤러(110)에 관한 상세 구성을 보여주는 도면이다. FIG. 3 is a diagram showing a detailed configuration of the pulled
풀드 메모리 컨트롤러(110)는 인터페이스(111)와 가속기(112)를 포함한다. 여기서, 인터페이스(111)는 패브릭 네트워크(30)와 가속기(112) 및 메모리(120) 사이에서 패킷을 중계한다. 인터페이스(111)는 복수의 채널 CN을 통해 가속기(112)와 연결된다. The pulled
본 발명의 실시예에서 인터페이스(111)는 패브릭 네트워크(30)와 가속기(112) 및 메모리(120) 사이에서 패킷을 중계하기 위한 스위치를 포함할 수 있다. 본 발명의 실시예에서는 인터페이스(111)가 스위치를 포함하는 것을 일 예로 설명하였지만, 본 발명의 실시예는 이에 한정되는 것이 아니라 패킷을 중계하기 위한 수단은 이에 한정되지 않는다. In an embodiment of the present invention, the
그리고, 가속기(112)는 인터페이스(111)를 통해 인가되는 데이터의 연산 처리를 수행한다. 예를 들어, 가속기(112)는 인터페이스(111)를 통해 메모리(120)로부터 인가되는 데이터의 맵 연산을 수행하고, 맵 연산 결과에 대한 데이터를 인터페이스(111)를 통해 메모리(120)에 저장한다. And, the
본 발명의 실시에에서는 풀드 메모리 컨트롤러(110)에 하나의 가속기(112)가 포함되는 것을 일 예로 설명하였다. 하지만, 본 발명의 실시예는 이에 한정되는 것이 아니며 풀드 메모리 컨트롤러(110)에 다수의 가속기(112)가 포함될 수도 있다. In the embodiment of the present invention, it has been described that one
맵-리듀스(Map-Reduce) 어플리케이션은 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작한 소프트웨어 프레임워크(Software Framework)이다. 다양한 어플리케이션에서 이 맵-리듀스 라이브러리를 사용하고 있다. 맵-리듀스 어플리케이션에서 맵 연산은 (key, value) 형태로 중간 정보를 추출하면, 리듀스 연산이 이를 모아 원하는 최종 결과를 출력한다. The Map-Reduce application is a software framework designed for the purpose of processing large amounts of data in distributed parallel computing. Various applications use this map-reduce library. In map-reduce applications, map operation extracts intermediate information in the form of (key, value), and reduce operation collects them and outputs the desired final result.
예를 들어, 맵-리듀스 어플리케이션을 통해 "매년 제일 높았던 지구 기온"을 찾는다고 가정하면, 맵 연산은 텍스트 파일을 읽어서 연도 및 기온에 대한 정보를 추출해 (연도, 기온) 형태의 리스트를 출력한다. 그리고, 리듀스 연산은 이 결과를 수집해 온도 순으로 정렬해 원하는 최종 결과를 출력한다. 여기서, 눈여겨봐야 할 점은 맵 연산에 사용되는 데이터는 대체로 대용량인 반면, 맵 연산의 결과 데이터는 비교적 크기가 작다는 것이다.For example, assuming that you are looking for "the highest annual global temperature" through a map-reduce application, the map operation reads a text file, extracts year and temperature information, and outputs a list in the form of (year, temperature). . Then, the reduce operation collects these results, sorts them in order of temperature, and outputs the desired final result. Here, it should be noted that the data used for the map operation is generally large, whereas the data resulting from the map operation is relatively small.
본 발명의 실시예는 맵-리듀스 어플리케이션의 맵 연산과 같이 대용량 데이터를 처리하지만 데이터 재사용(Data Reuse)이 적은 연산을 풀드 메모리 컨트롤러(110) 내의 가속기(112)로 오프-로딩(Off-loading) 할 수 있다. 여기서, 오프-로딩이란 프로세서(20)로부터의 요청을 수신하여 해석하고 연산을 수행한 후 그 연산 결과를 출력하는 일련의 과정을 나타낸다. 데이터를 풀드 메모리(100) 내에서 처리하게 되면 프로세서(20)의 노드 CND까지 데이터를 전달하기 위한 에너지를 절약할 수 있고 성능도 더 높일 수 있다.The embodiment of the present invention processes large amounts of data, such as map operations of map-reduce applications, but off-loads operations with little data reuse to the
본 발명의 실시예에 따른 가속기(112)는 풀드 메모리 컨트롤러(110)의 내에 구비되거나 메모리(120) 내에 위치할 수 있다. 근접 데이터 처리의 관점에서는 데이터를 각 메모리(120) 내에서 처리하는 것이 풀드 메모리 컨트롤러(110)의 내부에서 처리하는 것 보다 더 효율적이다. The
풀드 메모리 컨트롤러(110)는 높은 대역폭(Bandwidth)을 제공하기 위해 메모리 인터리빙(Memory Interleaving)을 수행한다. 이러한 경우 데이터가 여러 메모리(120)에 나뉘어 저장된다. 이렇게 되면 가속기(112)가 필요로 하는 데이터 역시 여러 메모리(120)에 나뉘어질 수 있으므로, 본 발명의 실시예에서는 가속기(112)의 물리적인 위치가 풀드 메모리 컨트롤러(110) 내에 배치되는 것을 일 예로 설명하기로 한다. The pulled
지금부터는 맵-리듀스 어플리케이션의 맵 연산을 가속기(112)로 오프-로딩하는 것이 성능(Performance)과 에너지(Energy) 관점에서 메모리 시스템(10) 전체적으로 얼마나 이득인 지 살펴본다.From now on, how much benefit of off-loading the map operation of the map-reduce application to the
맵-리듀스 어플리케이션의 맵 연산과 같이 가속기(112)가 처리하는 연산이 단순하다면, 가속기(112)에서의 연산 시간은 데이터를 메모리에서 리드하는 대역폭에 의해 좌우된다. 따라서, 가속기(112)의 대역폭을 높임으로써 가속기(112)의 연산 시간을 줄일 수 있다. If an operation processed by the
도 3에 도시된 바와 같이, 일련의 프로세서(20)의 노드 CND들은 패브릭 네트워크(30)를 거쳐 풀드 메모리(100)와 연결된다. 각 노드 CND는 각 프로세서(20) 별로 1개의 링크(Link)(L1)를 갖고 있고 풀드 메모리 컨트롤러(110) 내부 가속기(112)가 4개의 링크(L2)를 갖는다고 가정한다. 즉, 프로세서(20)의 링크(L1) 보다 가속기(112)의 링크(L2)에 대한 대역폭을 더 넓게 할당한다. 그러면, 맵 연산을 가속기(112)에게 오프-로딩하는 경우 프로세서(20)에서 처리하는 것 보다 4 배 빠르게 연산할 수 있다. As shown in FIG. 3 , node CNDs of a series of
맵 연산 및 리듀스 연산을 프로세서(20)가 모두 수행하는 경우 맵 연산에 소요되는 시간이 전체 실행 시간의 99% 라고 가정한다. 또한, 하나의 프로세서(20)에서 여러 어플리케이션들이 실행되는데, 그 중 맵-리듀스 어플리케이션의 실행 시간이 전체 어플리케이션의 실행 시간의 10%를 차지한다고 가정한다. 맵 연산을 가속기(112)에게 오프-로딩하는 경우 맵 연산 시간이 1/4 로 줄어듦에 따라 전체 시스템 성능은 81% 향상될 수 있다.When the
도 4 내지 도 6은 본 발명의 실시예에 따른 메모리 시스템(10)의 동작을 설명하기 위한 도면이다. 4 to 6 are diagrams for explaining the operation of the
먼저, 도 4의 (1) 경로에서와 같이, 프로세서(20)는 풀드 메모리(100) 측으로 맵 연산 요청 패킷을 전달한다. 즉, 프로세서(20)로부터 송신된 맵 연산 요청 패킷은 패브릭 네트워크(30)를 통해 풀드 메모리 컨트롤러(110)의 인터페이스(111)를 거쳐 가속기(112)에 전달된다. 여기서, 맵 연산 요청 패킷은 맵 연산에 사용될 데이터가 저장된 주소, 데이터의 크기 및 맵 연산 결과 데이터를 저장할 주소 등에 대한 정보가 포함될 수 있다. First, as shown in path (1) of FIG. 4 , the
다음에, 풀드 메모리 컨트롤러(110)는 도 4의 (2) 경로에서와 같이, 맵 연산 응답 패킷을 패브릭 네트워크(30)를 통해 프로세서(20)에 전달한다. 즉, 풀드 메모리 컨트롤러(110)는 가속기(112)가 맵 연산 요청 패킷을 잘 수신하였음을 알리는 신호를 프로세서(20)에 전달한다. Next, the pulled
이후에, 도 5의 (3) 경로에서와 같이, 풀드 메모리 컨트롤러(110)는 각 메모리(120)에서 맵 연산에 필요한 데이터를 리드하여 가속기(112)에 전달한다. 여기서, 가속기(112)에서 필요로 하는 데이터가 여러 메모리(120)에 나뉘어 질 수 있으며, 이러한 경우 가속기(112)는 다수의 메모리(120)로부터 데이터를 리드한다. 그러면, 가속기(112)는 메모리(120)에서 리드된 데이터를 토대로 하여 맵 연산을 수행한다. Subsequently, as shown in path (3) of FIG. 5 , the pulled
이어서, 풀드 메모리 컨트롤러(110)는 도 5의 (4) 경로에서와 같이, 가속기(112)에서 연산된 맵 연산 결과 데이터를 리드하고 각 메모리(120)에 전달하여 저장한다. 가속기(112)에서 연산된 데이터를 다수의 메모리(120)에 나뉘어 저장될 수 있다. Subsequently, as shown in path (4) of FIG. 5 , the pulled
다음에, 도 6의 (5) 경로에서와 같이, 풀드 메모리 컨트롤러(110)는 프로세서(20) 측으로 인터럽트 패킷을 전달한다. 즉, 풀드 메모리 컨트롤러(110)는 가속기(112)의 맵 연산이 종료되었음을 나타내는 인터럽트 패킷을 패브릭 네트워크(30)를 통해 프로세서(20)로 전달한다. Next, as in the path (5) of FIG. 6, the pulled
이후에, 풀드 메모리 컨트롤러(110)는 도 6의 (6) 경로에서와 같이, 메모리(120)에 저장된 맵 연산 결과 데이터를 리드하여 인터페이스(111), 패브릭 네트워크(30)를 통해 프로세서(20)에 전달한다. Thereafter, the pulled
도 7은 본 발명의 실시예에 따른 메모리 시스템의 성능 개선을 보여주는 도면이다. 도 7은 가속기(112)에서 맵 연산을 수행하는 경우 가속기(112)의 채널 CN 수를 증가시킴에 따라 전체 시스템의 성능(Performance)이 얼마나 증가하는지를 나타내는 결과 그래프이다. 7 is a diagram illustrating performance improvement of a memory system according to an exemplary embodiment of the present invention. 7 is a result graph showing how much the performance of the entire system increases as the number of channel CNs of the
가속기(112)의 채널(Channel) CN 수를 증가시킴에 따라 성능 역시 함께 증가하는 것을 알 수 있다. 하지만, 채널 CN 수를 증가시키는 비용에 비해 성능 증가량은 점점 작아지므로 본 발명의 실시예에서는 가속기(112)의 채널 CN을 2개 내지 4개로 설정하는 것을 일 예로 설명하기로 한다. It can be seen that performance also increases as the number of channel CNs of the
프로세서(20)의 노드 CND를 통해 데이터를 이동시키는 데 한 링크 L1 당 1 pJ(에너지 소모량)/비트(bit)를 소모한다고 가정한다. 프로세서(20)에서 데이터를 처리하기 위해서는 도 3에서 메모리(120)의 버스 BUS, 패브릭 네트워크(30)의 채널(40) 및 프로세서(20)의 노드 CND, 즉, 총 3개의 링크를 거쳐야 하므로 3 pJ/bit이 소모된다. 하지만, 맵 연산을 가속기(112)로 오프-로딩하게 되면 데이터가 메모리(120)의 버스 BUS 만 거치게 되므로 데이터를 이동하는 데 소모되는 에너지를 1/3인 1 pJ/bit로 줄일 수 있다. 전체 시스템에서 얼마만큼의 에너지가 절약되는 것인지를 계산하려면 각 하드웨어의 스태틱 파워(Static Power)에 대해 모두 고려해야 한다. It is assumed that 1 pJ (energy consumption)/bit is consumed per link L1 to move data through the node CND of the
이상에서와 같이, 본 발명의 실시예에 따른 풀드 메모리(100)는 많은 용량과 높은 대역폭을 제공할 수 있으며, 인-메모리 데이터 베이스 등에서 유용하게 사용할 수 있다. 풀드 메모리 컨트롤러(110) 내부에 가속기(112)를 추가하고, 가속기(112)에서 맵-리듀스 어플리케이션의 맵 연산을 오프-로딩 함으로써 전체 시스템의 성능을 높이는 동시에 에너지를 절약할 수 있다.As described above, the pulled
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다. Those skilled in the art to which the present invention pertains should understand that the embodiments described above are illustrative in all respects and not limiting, since the present invention can be embodied in other specific forms without changing the technical spirit or essential characteristics thereof. only do The scope of the present invention is indicated by the claims to be described later rather than the detailed description, and all changes or modifications derived from the meaning and scope of the claims and equivalent concepts should be construed as being included in the scope of the present invention. .
Claims (20)
상기 복수의 메모리에 저장된 상기 데이터를 리드하여 맵 연산을 수행하고, 상기 맵 연산의 결과 데이터를 상기 복수의 메모리에 저장하는 풀드 메모리 컨트롤러를 포함하고,
상기 풀드 메모리 컨트롤러는
패브릭 네트워크를 통해 프로세서와 상기 복수의 메모리 사이에서 패킷을 중계하는 인터페이스; 및
상기 인터페이스를 통해 상기 복수의 메모리로부터 전달된 상기 데이터에 대해 상기 맵 연산을 수행하고, 상기 맵 연산의 결과 데이터를 상기 인터페이스를 통해 상기 복수의 메모리에 저장하는 가속기를 포함하고,
상기 가속기는 상기 인터페이스와 복수의 채널을 통해 연결되며,
상기 복수의 채널의 링크 수는 상기 프로세서의 링크 수보다 많으며,
상기 인터페이스는 리드된 상기 데이터를 상기 가속기로 전송하고, 상기 가속기에 의해 연산된 상기 결과 데이터를 수신하고, 수신된 상기 결과 데이터를 상기 복수의 메모리로 전송하는 메모리 시스템. A plurality of memories for storing data; and
a pulled memory controller that reads the data stored in the plurality of memories, performs a map operation, and stores result data of the map operation in the plurality of memories;
The pooled memory controller
an interface for relaying packets between a processor and the plurality of memories through a fabric network; and
An accelerator for performing the map operation on the data transmitted from the plurality of memories through the interface and storing result data of the map operation in the plurality of memories through the interface;
The accelerator is connected to the interface through a plurality of channels,
The number of links of the plurality of channels is greater than the number of links of the processor,
wherein the interface transmits the read data to the accelerator, receives the result data calculated by the accelerator, and transmits the received result data to the plurality of memories.
상기 프로세서로부터 상기 인터페이스를 통해 맵 연산 요청 패킷이 수신되는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
A memory system receiving a map operation request packet from the processor through the interface.
상기 맵 연산에 사용될 데이터가 저장된 주소, 상기 데이터의 크기 및 상기 맵 연산의 결과 데이터를 저장할 주소 중 적어도 어느 하나 이상의 정보를 포함하는 메모리 시스템. 6. The method of claim 5, wherein the map operation request packet
A memory system comprising information on at least one of an address where data to be used for the map operation is stored, a size of the data, and an address where result data of the map operation is stored.
상기 인터페이스를 통해 맵 연산 응답 패킷을 상기 프로세서에 송신하는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
A memory system configured to transmit a map operation response packet to the processor through the interface.
상기 복수의 메모리에서 상기 맵 연산에 필요한 데이터를 리드하여 상기 가속기에 전달하는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
A memory system that reads data necessary for the map operation from the plurality of memories and transmits the data to the accelerator.
상기 가속기에서 연산된 상기 맵 연산의 결과 데이터를 리드하고 상기 복수의 메모리에 저장하는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
A memory system configured to read result data of the map operation calculated in the accelerator and store the result data in the plurality of memories.
상기 맵 연산의 종료시 상기 인터페이스를 통해 상기 프로세서로 인터럽트 패킷을 전달하는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
When the map operation is finished, the memory system transmits an interrupt packet to the processor through the interface.
상기 복수의 메모리에 저장된 상기 맵 연산의 결과 데이터를 리드하여 상기 인터페이스를 통해 상기 프로세서에 전달하는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
A memory system for reading result data of the map operation stored in the plurality of memories and transmitting the data to the processor through the interface.
상기 복수의 메모리에 대해 인터리빙을 수행하는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
A memory system performing interleaving on the plurality of memories.
상기 복수의 메모리에 대해 어드레스 리맵핑을 수행하는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
A memory system performing address remapping on the plurality of memories.
상기 맵 연산시 맵-리듀스 어플리케이션을 이용하는 메모리 시스템. The method of claim 1 , wherein the pulled memory controller
A memory system using a map-reduce application during the map operation.
상기 패브릭 네트워크를 통해 상기 프로세서와 패킷을 중계하며, 상기 프로세서의 요청시 메모리에 저장된 데이터를 상기 프로세서에 전달하는 풀드 메모리를 포함하며,
상기 풀드 메모리는
상기 메모리에 저장된 데이터를 리드하여 맵 연산을 오프-로딩하고, 상기 맵 연산의 결과 데이터를 상기 메모리에 저장하는 풀드 메모리 컨트롤러를 포함하고,
상기 풀드 메모리 컨트롤러는
상기 패브릭 네트워크를 통해 상기 프로세서와 상기 풀드 메모리 컨트롤러 사이에서 상기 패킷을 중계하는 인터페이스; 및
상기 인터페이스를 통해 상기 메모리로부터 전달된 상기 데이터에 대해 상기 맵 연산을 오프-로딩하고, 상기 맵 연산의 결과 데이터를 상기 인터페이스를 통해 상기 메모리에 저장하는 가속기를 포함하고,
상기 가속기는
상기 인터페이스와 복수의 채널을 통해 연결되고,
상기 복수의 채널의 링크 수는 상기 프로세서의 링크 수보다 많으며,
상기 인터페이스를 통해 상기 메모리로부터 수신된 상기 데이터를 리드하여 상기 결과 데이터를 생성함으로써 상기 맵 연산 및 상기 맵 연산의 오프-로딩을 수행하고,
상기 인터페이스는 리드된 상기 데이터를 상기 가속기로 전송하고, 상기 가속기에 의해 연산된 상기 결과 데이터를 수신하고, 수신된 상기 결과 데이터를 상기 메모리로 전송하는 메모리 시스템. a fabric network associated with the processor; and
A pulled memory that relays packets with the processor through the fabric network and transmits data stored in the memory to the processor when requested by the processor;
The pooled memory is
a pulled memory controller that reads data stored in the memory, offloads a map operation, and stores result data of the map operation in the memory;
The pooled memory controller
an interface relaying the packet between the processor and the pulled memory controller through the fabric network; and
an accelerator for off-loading the map operation on the data transmitted from the memory through the interface and storing result data of the map operation in the memory through the interface;
the accelerator
connected through the interface and a plurality of channels,
The number of links of the plurality of channels is greater than the number of links of the processor,
performing the map operation and off-loading the map operation by reading the data received from the memory through the interface to generate the result data;
wherein the interface transmits the read data to the accelerator, receives result data calculated by the accelerator, and transmits the received result data to the memory.
상기 프로세서로부터 상기 인터페이스를 통해 맵 연산 요청 패킷이 수신되고, 상기 인터페이스를 통해 맵 연산 응답 패킷을 상기 프로세서에 송신하는 메모리 시스템. 16. The method of claim 15, wherein the pulled memory controller
A memory system configured to receive a map operation request packet from the processor through the interface and transmit a map operation response packet to the processor through the interface.
상기 메모리에서 상기 맵 연산에 필요한 데이터를 리드하여 상기 가속기에 전달하며, 상기 가속기에서 연산된 상기 맵 연산의 결과 데이터를 상기 메모리에 저장하는 메모리 시스템. 16. The method of claim 15, wherein the pulled memory controller
A memory system configured to read data necessary for the map operation from the memory, transfer the data to the accelerator, and store result data of the map operation calculated in the accelerator in the memory.
상기 맵 연산의 종료시 상기 인터페이스를 통해 상기 프로세서로 인터럽트 패킷을 전달하고, 상기 메모리에 저장된 상기 맵 연산의 결과 데이터를 리드하여 상기 인터페이스를 통해 상기 프로세서에 전달하는 메모리 시스템. 16. The method of claim 15, wherein the pulled memory controller
When the map operation is finished, an interrupt packet is transmitted to the processor through the interface, and result data of the map operation stored in the memory is read and transmitted to the processor through the interface.
상기 메모리에 대해 인터리빙 및 어드레스 리맵핑 동작 중 적어도 어느 하나를 수행하는 메모리 시스템. 16. The method of claim 15, wherein the pulled memory controller
A memory system performing at least one of an interleaving operation and an address remapping operation on the memory.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/367,700 US10915470B2 (en) | 2018-07-23 | 2019-03-28 | Memory system |
CN201910312218.3A CN110750210B (en) | 2018-07-23 | 2019-04-18 | Storage system |
TW108115926A TW202008172A (en) | 2018-07-23 | 2019-05-08 | Memory system |
JP2019093313A JP2020017263A (en) | 2018-07-23 | 2019-05-17 | Memory system |
US16/858,414 US11288012B2 (en) | 2018-07-23 | 2020-04-24 | Memory system |
US17/134,117 US11487473B2 (en) | 2018-07-23 | 2020-12-24 | Memory system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20180085506 | 2018-07-23 | ||
KR1020180085506 | 2018-07-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200018188A KR20200018188A (en) | 2020-02-19 |
KR102551726B1 true KR102551726B1 (en) | 2023-07-06 |
Family
ID=69670423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180155681A KR102551726B1 (en) | 2018-07-23 | 2018-12-06 | Memory system |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102551726B1 (en) |
TW (1) | TW202008172A (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220145656A (en) | 2021-04-22 | 2022-10-31 | 에스케이하이닉스 주식회사 | Host and computing system including thereof |
KR20230095775A (en) | 2021-12-22 | 2023-06-29 | 에스케이하이닉스 주식회사 | Memory expander performing near data processing function and accelerator system including the same |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104951570A (en) | 2015-07-27 | 2015-09-30 | 广州九尾信息科技有限公司 | Intelligent part-time job recommendation system based on data mining and LBS |
US20160283303A1 (en) | 2015-03-27 | 2016-09-29 | Intel Corporation | Reliability, availability, and serviceability in multi-node systems with disaggregated memory |
US20170364287A1 (en) | 2016-06-20 | 2017-12-21 | Vmware, Inc. | Virtual machine recovery in shared memory architecture |
-
2018
- 2018-12-06 KR KR1020180155681A patent/KR102551726B1/en active IP Right Grant
-
2019
- 2019-05-08 TW TW108115926A patent/TW202008172A/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160283303A1 (en) | 2015-03-27 | 2016-09-29 | Intel Corporation | Reliability, availability, and serviceability in multi-node systems with disaggregated memory |
CN104951570A (en) | 2015-07-27 | 2015-09-30 | 广州九尾信息科技有限公司 | Intelligent part-time job recommendation system based on data mining and LBS |
US20170364287A1 (en) | 2016-06-20 | 2017-12-21 | Vmware, Inc. | Virtual machine recovery in shared memory architecture |
Also Published As
Publication number | Publication date |
---|---|
KR20200018188A (en) | 2020-02-19 |
TW202008172A (en) | 2020-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11093287B2 (en) | Data management for edge architectures | |
JP6882511B2 (en) | Methods, devices and systems for blockchain consensus | |
US10355966B2 (en) | Managing variations among nodes in parallel system frameworks | |
US20150127649A1 (en) | Efficient implementations for mapreduce systems | |
US11265235B2 (en) | Technologies for capturing processing resource metrics as a function of time | |
CN104657308A (en) | Method for realizing server hardware acceleration by using FPGA | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
US10805392B2 (en) | Distributed gather/scatter operations across a network of memory nodes | |
CN112000598B (en) | Processor for federal learning, heterogeneous processing system and private data transmission method | |
US11863469B2 (en) | Utilizing coherently attached interfaces in a network stack framework | |
KR102551726B1 (en) | Memory system | |
US20210329354A1 (en) | Telemetry collection technologies | |
CN102446159A (en) | Method and device for managing data of multi-core processor | |
US20240152290A1 (en) | Data writing method, data reading method, apparatus, device, system, and medium | |
CN106250348A (en) | A kind of heterogeneous polynuclear framework buffer memory management method based on GPU memory access characteristic | |
CN112600761A (en) | Resource allocation method, device and storage medium | |
US11288012B2 (en) | Memory system | |
CN112685148A (en) | Asynchronous communication method and device of mass terminals, computer equipment and storage medium | |
US10152450B2 (en) | Remote processing and memory utilization | |
US10915470B2 (en) | Memory system | |
CN114710571A (en) | Data packet processing system | |
US20200167302A1 (en) | Communications for field programmable gate array device | |
Kachris et al. | A reconfigurable mapreduce accelerator for multi-core all-programmable socs | |
JP2021509240A (en) | Low power management for the entire system | |
US20150052328A1 (en) | User-controlled paging |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |