KR20200143922A - Memory card and method for processing data using the card - Google Patents

Memory card and method for processing data using the card Download PDF

Info

Publication number
KR20200143922A
KR20200143922A KR1020190071611A KR20190071611A KR20200143922A KR 20200143922 A KR20200143922 A KR 20200143922A KR 1020190071611 A KR1020190071611 A KR 1020190071611A KR 20190071611 A KR20190071611 A KR 20190071611A KR 20200143922 A KR20200143922 A KR 20200143922A
Authority
KR
South Korea
Prior art keywords
memory
address
card
area
access request
Prior art date
Application number
KR1020190071611A
Other languages
Korean (ko)
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 한국전자통신연구원
Priority to KR1020190071611A priority Critical patent/KR20200143922A/en
Publication of KR20200143922A publication Critical patent/KR20200143922A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus

Abstract

Provided are a memory card and a data processing method using the same. The memory card connected to a system bus of a host device comprises: a memory module; an address determination unit configured to determine that a memory address included in a memory access request transmitted from a protocol engine is located in which physical space; a memory access unit configured to perform a read/write operation according to the memory access request with respect to the memory module when it is determined that the memory address corresponds to the memory module; and a host access unit configured to perform a read/write operation according to the memory access request for the local memory or the storage when it is determined that the memory address corresponds to the local memory or storage of the host device.

Description

메모리 카드 및 이를 이용한 데이터 처리 방법{Memory card and method for processing data using the card} Memory card and method for processing data using the card

본 발명은 메모리 확장에 관한 것으로, 더욱 상세하게 말하자면, 메모리 카드 및 이를 이용한 데이터 처리 방법에 관한 것이다. The present invention relates to memory expansion, and more particularly, to a memory card and a data processing method using the same.

최근 머신 러닝(machine learning), 딥 러닝(deep learning), 인메모리(in-memory) 컴퓨팅, 대규모 지구 환경 시뮬레이터 등 기존의 컴퓨팅 환경을 완전히 초월하는 하드웨어 환경을 요구하는 응용 소프트웨어가 급격히 빠른 속도로 개발 및 사용되고 있다. 전술한 컴퓨팅 응용 소프트웨어는 우선 CPU(central processing unit)에 접속되어 있는 로컬 및 공유 메모리를 사용하여 하드디스크 입출력을 최소화함으로써 그 연산 속도를 극대화시켜 나가는 방향으로 발전하고 있다. CPU에 직접 연결하여 가장 빠른 데이터 접근 속도를 가질 수 있는 로컬 메모리는 컴퓨팅 보드 설계시 이미 그 최대 용량이 결정되기 때문에, 최대 용량 이상의 메모리 증설이 불가능하다. 따라서 임의 노드의 로컬 메모리가 부족할 경우 원격 컴퓨터 노드의 메모리를 네트워크 기술을 사용하여 공유시켜 자신의 메모리처럼 사용할 수 있는 공유 메모리 기술 또한 빠르게 발전하고 있다. 그러나 네트워크를 사용하는 공유 메모리를 사용하는 기술의 경우, 네트워크 지연 시간에 종속되는 접속 속도를 가질 수 밖에 없는 한계가 존재한다. Recently, application software that requires a hardware environment that completely transcends the existing computing environment such as machine learning, deep learning, in-memory computing, and large-scale global environment simulator has been developed at a rapid pace. And are being used. The above-described computing application software is developing in the direction of maximizing the operation speed by minimizing input/output from the hard disk using local and shared memory connected to a central processing unit (CPU). Since the maximum capacity of the local memory, which is directly connected to the CPU and has the fastest data access speed, is already determined when designing the computing board, it is impossible to increase the memory capacity beyond the maximum capacity. Therefore, when the local memory of an arbitrary node is insufficient, the memory of a remote computer node is shared using network technology, and a shared memory technology that can be used as its own memory is also rapidly developing. However, in the case of a technology using a shared memory using a network, there is a limitation that cannot but have a connection speed dependent on the network delay time.

현재 메모리 사용 기술 발전의 일환으로 대용량 메모리를 컴퓨팅 노드 자체에 혹은 노드 간에 상호 공유할 수 있는 기술인 Gen-Z 프로토콜 기술이 제안되었다. Gen-Z 프로토콜은 메모리 풀(pool)을 만들어 대용량 메모리를 확보하고 서버 시스템의 버스를 확장해 이 메모리 풀을 연결하려는 대표적인 프로토콜이다. 현재 Gen-Z 프로토콜을 이용한 시스템은 아직 발전 중에 있으며, 현재는 크기가 작은 메모리 모듈에 프로토콜 처리 장치를 추가하여 Gen-Z 버스에 연결하는 제품이 개발되어 있으나 아직 상용화되고 있지 않은 상태이다. As part of the development of the current memory use technology, the Gen-Z protocol technology, a technology that enables large-capacity memory to be shared with the computing node itself or between nodes, has been proposed. The Gen-Z protocol is a representative protocol that tries to secure a large amount of memory by creating a memory pool and to connect this memory pool by expanding the bus of the server system. Currently, the system using the Gen-Z protocol is still developing, and a product that connects to the Gen-Z bus by adding a protocol processing device to a small memory module has been developed, but has not been commercialized yet.

그러나 이와 같은 장치를 컴퓨팅 서버에 직접 장착하거나 외부에 장착할 경우에, 별도의 섀시를 제작하여야 하며, 여러 개의 장치를 서버에 연결하려고 하는 경우에는 프로토콜 스위치 등을 사용해야 하는 문제점이 있다.However, when such a device is directly mounted on a computing server or externally mounted, a separate chassis must be manufactured, and when multiple devices are to be connected to the server, a protocol switch or the like must be used.

관련 선행 문헌으로는 대한민국 출원 공개번호 제2017-0074718호에 기재된 "메모리 확장 카드"가 있다. As a related prior document, there is a "memory expansion card" described in Korean Application Publication No. 2017-0074718.

본 발명이 해결하고자 하는 과제는, 대용량 메모리 풀을 위한 장치를 컴퓨팅 서버에 용이하게 연결하여 메모리를 확장시켜 데이터를 처리하는 방법과, 메모리 카드를 제공하는 것이다. The problem to be solved by the present invention is to provide a method for processing data by easily connecting a device for a large-capacity memory pool to a computing server to expand a memory to process data, and a memory card.

본 발명의 일 실시 예에 따른 장치는 호스트 장치의 시스템 버스에 연결되어 있는 메모리 카드로서, 메모리 모듈; 메모리 접근 요청을 수신하고, 상기 메모리 접근 요청에 따른 데이터를 전송하도록 구성된 프로토콜 엔진; 상기 프로토콜 엔진으로부터 전달되는 메모리 접근 요청에 포함하는 메모리 주소가 어느 물리적 공간에 있는지를 판별하도록 구성된 제1 주소 판별 유닛; 상기 제1 주소 판별 유닛에 의해 상기 메모리 주소가 상기 메모리 모듈에 해당하는 것으로 판별된 경우, 상기 메모리 모듈에 대하여 상기 메모리 접근 요청에 따른 읽기/쓰기 동작을 수행하도록 구성된 메모리 접근 유닛; 및 상기 제1 주소 판별 유닛에 의해 상기 메모리 주소가 상기 호스트 장치의 로컬 메모리 또는 스토리지에 해당하는 것으로 판별된 경우, 상기 로컬 메모리 또는 상기 스토리지에 대하여 상기 메모리 접근 요청에 따른 읽기/쓰기 동작을 수행하도록 구성된 호스트 접근 유닛을 포함한다. A device according to an embodiment of the present invention is a memory card connected to a system bus of a host device, comprising: a memory module; A protocol engine configured to receive a memory access request and transmit data according to the memory access request; A first address determination unit configured to determine in which physical space a memory address included in a memory access request transmitted from the protocol engine is located; A memory access unit configured to perform a read/write operation according to the memory access request with respect to the memory module when it is determined by the first address determination unit that the memory address corresponds to the memory module; And when it is determined by the first address determination unit that the memory address corresponds to the local memory or storage of the host device, to perform a read/write operation according to the memory access request with respect to the local memory or the storage. It contains a configured host access unit.

상기 메모리 카드는, 상기 제1 주소 판별 유닛에 의해 상기 메모리 주소가 메모리 확장 카드에 해당하는 것으로 판별된 경우, 상기 메모리 확장 카드에 대하여 상기 메모리 접근 요청에 따른 읽기/쓰기 동작을 수행하도록 구성된 확장 메모리 접근 유닛을 더 포함할 수 있다. The memory card is an expansion memory configured to perform a read/write operation according to the memory access request with respect to the memory expansion card when it is determined by the first address determination unit that the memory address corresponds to a memory expansion card It may further include an access unit.

상기 제1 주소 판별 유닛은 주소 레지스터를 포함하고, 상기 주소 레지스터는, 상기 메모리 카드가 제공하는 전체 메모리 주소 영역, 상기 메모리 모듈의 물리 주소, 메모리 확장 카드의 물리 주소, 사용 가능한 호스트 로컬 메모리의 물리 주소, 사용 가능한 스토리지 공간의 주소, 전체 메모리 주소 영역과 물리 주소 영역에 대한 매핑 정보 중 적어도 하나를 포함할 수 있다. The first address determination unit includes an address register, wherein the address register includes a total memory address area provided by the memory card, a physical address of the memory module, a physical address of a memory expansion card, and a physical address of a usable host local memory. It may include at least one of an address, an address of an usable storage space, and mapping information for an entire memory address area and a physical address area.

상기 제1 주소 판별 유닛은 각각의 메모리 접근 요청 정보별로 태그(Tag) 정보를 관리하고, 메모리 접근 요청의 읽기 동작에 따른 응답 데이터가 수신되면 태그 정보와 함께 응답 데이터를 상기 프로토콜 엔진으로 전달하도록 구성될 수 있다. The first address determination unit is configured to manage tag information for each memory access request information, and to transmit response data along with tag information to the protocol engine when response data according to a read operation of a memory access request is received. Can be.

상기 호스트 접근 유닛은, 상기 호스트 장치의 로컬 메모리와 스토리지 캐싱 영역에 대한 읽기/쓰기 동작을 수행하도록 구성된 DMA(direct memory access) 엔진; 및 도어벨(doorbell) 레지스터를 포함할 수 있다. The host access unit includes: a direct memory access (DMA) engine configured to perform read/write operations on a local memory and a storage caching area of the host device; And a doorbell register.

상기 도어벨 레지스터는, 스토리지 캐시로 사용되는 로컬 메모리의 물리 주소, 스토리지 버퍼로 사용되는 로컬 메모리의 물리 주소, 현재 캐싱되어 있는 스토리지 공간의 주소, 스토리지 공간에 대한 쓰기 요청시 DMA 완료를 상기 호스트 장치의 CPU(central processing unit)에게 알리기 위한 도어벨, 스토리지 공간에 대한 읽기 요청시 요청이 수신되었음을 CPU에게 알리기 위한 도어벨, 및 스토리지 공간에 대한 읽기 요청에 대해 데이터가 준비되었음을 메모리 카드에게 알리기 위한 도어벨 중 적어도 하나를 포함할 수 있다. The doorbell register includes a physical address of a local memory used as a storage cache, a physical address of a local memory used as a storage buffer, an address of a currently cached storage space, and a DMA completion when a write request to the storage space is requested. A doorbell to notify the central processing unit (CPU) of the storage space, a doorbell to notify the CPU that a request has been received when a read request for storage space is requested, and a door to notify the memory card that data is ready for a read request to the storage space It may include at least one of the bells.

상기 호스트 접근 유닛은 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있는 경우, 상기 DMA 엔진을 통해 상기 로컬 메모리에 상기 스토리지의 공간이 캐싱되어 있는 로컬 메모리 영역에 접근해서 읽기/쓰기를 수행하도록 구성될 수 있다. When the access target of the memory access request is an address area of the storage of the host device and the corresponding address area is cached, the host access unit is a local area in which the storage space is cached in the local memory through the DMA engine. It can be configured to read/write by accessing the memory area.

상기 호스트 접근 유닛은 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있지 않고, 요청된 동작이 쓰기 동작인 경우, 상기 DMA 엔진을 통해 상기 로컬 메모리에 스토리지 버퍼로 사용되는 메모리 영역에 접근해서 쓰기를 수행하도록 구성될 수 있다. When the access target of the memory access request is an address area of the storage of the host device and the corresponding address area is not cached, and the requested operation is a write operation, the host access unit may access the local memory through the DMA engine. It can be configured to access and write to a memory area used as a storage buffer.

상기 호스트 접근 유닛은, 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있지 않고, 요청된 동작이 읽기 동작인 경우, 이를 상기 호스트 장치의 CPU에게 알려서 상기 CPU가 해당 영역을 캐싱 영역으로 가져와서 상기 도어벨 레지스터에 해당 캐싱 영역의 주소를 기록하여 캐싱이 완료되었음을 기록하게 하도록 하고, 상기 도어벨 레지스터를 폴링(polling)하여 캐싱이 완료됨이 인지되면, 상기 호스트 접근 유닛은 추가로, 상기 로컬 메모리의 캐싱된 스토리지 공간에 DMA를 통해 접근하여 읽기 동작을 수행하도록 구성될 수 있다. The host access unit informs the CPU of the host device when an access target of the memory access request is an address area of the storage of the host device and the address area is not cached, and the requested operation is a read operation. The CPU brings the corresponding area to the caching area and writes the address of the corresponding caching area in the doorbell register to record that caching is complete, and when it is recognized that the caching is completed by polling the doorbell register , The host access unit may be further configured to access the cached storage space of the local memory through DMA and perform a read operation.

한편, 상기 메모리 카드는, 상기 메모리 접근 유닛과 연계하여 상기 메모리 모듈에 대한 데이터 읽기/쓰기 동작을 수행하는 컨트롤러를 더 포함할 수 있다. Meanwhile, the memory card may further include a controller that performs data read/write operations on the memory module in connection with the memory access unit.

상기 메모리 카드에 연결되는 상기 메모리 확장 카드는, 메모리 모듈; 상기 메모리 카드와의 통신 채널을 형성하는 제1 입력 포트 및 제1 출력 포트; 및 상기 제1 입력 포트를 통해 전달되는 상기 메모리 카드로부터의 메모리 접근 요청이 대상을 판별하고, 상기 대상이 상기 메모리 확장 카드의 메모리 모듈인 경우 상기 메모리 모듈에 대하여 읽기/쓰기 동작을 수행하도록 구성되는 제2 주소 판별 유닛을 포함할 수 있으며, 상기 제2 주소 판별 유닛으로부터의 읽기 동작 수행에 따른 응답 데이터가 상기 제1 출력 포트를 통해 상기 메모리 카드로 전달될 수 있다. The memory expansion card connected to the memory card includes: a memory module; A first input port and a first output port forming a communication channel with the memory card; And a memory access request from the memory card transmitted through the first input port determines a target, and when the target is a memory module of the memory expansion card, a read/write operation is performed on the memory module. A second address determination unit may be included, and response data according to a read operation performed from the second address determination unit may be transmitted to the memory card through the first output port.

상기 메모리 확장 카드는, 다른 메모리 확장 카드와의 통신 채널을 형성하는 제2 입력 포트 및 제2 출력 포트를 더 포함할 수 있으며, 상기 제2 주소 판별 유닛은 상기 메모리 카드로부터의 메모리 접근 요청의 대상이 다른 메모리 확장 카드인 경우, 상기 메모리 접근 요청을 상기 제2 출력 포트를 통해 다른 메모리 확장 카드로 전달하도록 구성될 수 있으며, 상기 제2 출력 포트를 통해 상기 다른 메모리 확장 카드로 전달된 요청에 대한 응답 데이터가 상기 제2 입력 포트를 통해 입력된 다음에, 상기 제1 출력 포트를 통해 상기 메모리 카드로 전달될 수 있다. The memory expansion card may further include a second input port and a second output port forming a communication channel with another memory expansion card, and the second address determination unit is a target of a memory access request from the memory card. In the case of this other memory expansion card, it may be configured to transmit the memory access request to another memory expansion card through the second output port, and the request transmitted to the other memory expansion card through the second output port is After response data is input through the second input port, it may be transferred to the memory card through the first output port.

본 발명의 다른 실시 예에 따른 방법은, 메모리 카드를 이용하여 데이터를 처리하는 방법으로서, 호스트 장치의 시스템 버스에 연결되어 있는 메모리 카드가 메모리 접근 요청을 수신하는 단계; 상기 메모리 접근 요청의 접근 대상이 상기 호스트 장치의 로컬 메모리인 경우, 상기 메모리 카드가 상기 로컬 메모리의 해당 메모리 영역에 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계; 및 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역인 경우, 상기 호스트 장치의 로컬 메모리에 스토리지 공간이 캐싱된 메모리 영역으로 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계를 포함한다. A method according to another embodiment of the present invention is a method of processing data using a memory card, the method comprising: receiving a memory access request by a memory card connected to a system bus of a host device; When the access target of the memory access request is a local memory of the host device, the memory card accessing a corresponding memory area of the local memory and performing data read/write processing; And performing data read/write processing by accessing a memory area in which the storage space is cached in the local memory of the host device when the access target of the memory access request is the address area of the storage of the host device. do.

상기 로컬 메모리의 해당 메모리 영역에 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계는, 상기 메모리 카드가 DMA를 사용해 상기 로컬 메모리의 해당 메모리 영역에 읽기/쓰기를 수행할 수 있다. In the step of performing data read/write processing by accessing the corresponding memory area of the local memory, the memory card may read/write to the corresponding memory area of the local memory using DMA.

상기 스토리지 공간이 캐싱된 메모리 영역으로 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계는, 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있는 경우, 상기 메모리 카드가 DMA를 통해 상기 로컬 메모리에 상기 스토리지의 공간이 캐싱되어 있는 로컬 메모리 영역에 접근해서 읽기/쓰기를 수행하는 단계를 포함할 수 있다. The step of performing data read/write processing by accessing the memory area in which the storage space is cached includes, when the access target of the memory access request is an address area of the storage of the host device and the corresponding address area is cached, The memory card may include performing read/write by accessing a local memory area in which the storage space is cached in the local memory through DMA.

상기 스토리지 공간이 캐싱된 메모리 영역으로 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계는, 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있지 않고, 요청된 동작이 쓰기 동작인 경우, 상기 메모리 카드가 DMA를 통해 상기 로컬 메모리의 스토리지 버퍼로 사용되는 메모리 영역에 접근해서 쓰기를 수행하는 단계를 포함할 수 있으며, 상기 쓰기를 수행하는 단계 이후에 상기 호스트 장치의 CPU가 해당 영역의 캐싱 절차를 수행할 수 있다. In the step of performing data read/write processing by accessing the memory area in which the storage space is cached, the access target of the memory access request is an address area of the storage of the host device and the corresponding address area is not cached, When the requested operation is a write operation, the memory card may access a memory area used as a storage buffer of the local memory through DMA to perform writing, and after performing the write operation, the The host device's CPU can perform the caching procedure for that area.

상기 스토리지 공간이 캐싱된 메모리 영역으로 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계는, 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있지 않고, 요청된 동작이 읽기 동작인 경우, 상기 메모리 카드가 이를 상기 호스트 장치의 CPU로 알려서, 상기 CPU가 상기 스토리지 주소 영역의 캐싱을 수행하고 도어벨 레지스터에 해당 캐싱 영역의 주소를 기록하여 캐싱이 완료되었음을 기록하게 하도록 하는 단계; 및 상기 캐싱이 완료되면, 상기 메모리 카드가 상기 로컬 메모리의 캐싱된 스토리지 공간에 DMA를 통해 접근하여 읽기 동작을 수행하는 단계를 포함할 수 있다. In the step of performing data read/write processing by accessing the memory area in which the storage space is cached, the access target of the memory access request is an address area of the storage of the host device and the corresponding address area is not cached, When the requested operation is a read operation, the memory card informs the CPU of the host device so that the CPU performs caching of the storage address area and writes the address of the corresponding caching area in the doorbell register to indicate that caching is complete. Making it record; And when the caching is completed, the memory card accesses the cached storage space of the local memory through DMA to perform a read operation.

상기 방법은, 상기 메모리의 접근 요청의 접근 대상이 상기 메모리 카드에 장착된 메모리인 경우, 상기 메모리 카드 자체에서 데이터의 읽기/쓰기를 처리하는 단계를 더 포함할 수 있다. The method may further include processing data read/write in the memory card itself when the access target of the memory access request is a memory installed in the memory card.

상기 방법은, 상기 메모리의 접근 요청의 접근 대상이 상기 메모리 카드에 연결되는 메모리 확장 카드인 경우, 상기 접근 요청을 상기 메모리 확장 카드로 전달하고, 상기 메모리 확장 카드로부터의 데이터의 읽기/쓰기 처리에 따른 결과를 수신하는 단계를 더 포함할 수 있다. The method comprises, when the access target of the memory access request is a memory expansion card connected to the memory card, transfers the access request to the memory expansion card, and reads/writes data from the memory expansion card. It may further include receiving the result according to.

상기 방법은, 상기 메모리 확장 카드는 상기 접근 요청을 수신하고, 상기 접근 요청의 대상이 다른 메모리 확장 카드인 경우, 상기 접근 요청을 다른 메모리 확장 카드로 전달하고, 상기 메모리 확장 카드로부터의 데이터의 읽기/쓰기 처리에 따른 결과를 수신하여 상기 메모리 카드 또는 체인 방식으로 연결된 앞 단계의 메모리 확장 카드로 전달하는 단계를 더 포함할 수 있다. The method, wherein the memory expansion card receives the access request, and when the object of the access request is another memory expansion card, transmits the access request to another memory expansion card, and reads data from the memory expansion card It may further include the step of receiving the result of the /write process and transferring the result to the memory card or the memory expansion card of the previous step connected in a chain manner.

본 발명의 실시 예에 따른 확장식 종단 메모리 카드를 장착한 서버를 메모리 풀로 이용하면, 랙에 장착되는 시스템 구현시, 별도의 섀시 제작 없이, 기존의 서버를 이용하여 간단히 시스템을 구축할 수 있다. 또한, 서버의 로컬 메모리를 메모리 풀 공간으로 활용할 수 있다. 또한, 일반적으로는 제공하기 힘든 용량의 메모리 공간을 서버의 스토리지 공간을 이용하여 제공할 수 있다. 따라서, 서버 자체의 메모리 및 스토리지까지 메모리 풀로 활용하여 시스템의 용량을 확장시킬 수 있다.When a server equipped with an expandable end memory card according to an embodiment of the present invention is used as a memory pool, when implementing a system mounted in a rack, a system can be simply constructed using an existing server without making a separate chassis. In addition, the server's local memory can be used as a memory pool space. In addition, a memory space having a capacity that is difficult to provide in general can be provided by using the storage space of the server. Therefore, the capacity of the system can be expanded by utilizing the memory and storage of the server as a memory pool.

도 1은 본 발명의 실시 예에 따른, 메모리 용량이 확장된 메모리 서버의 구조를 나타낸 도이다.
도 2는 본 발명의 실시 예에 따른 메모리 카드의 구체적인 구조를 나타낸 도이다.
도 3은 본 발명의 실시 예에 따른 메모리 확장 카드의 구체적인 구조를 나타낸 도이다.
도 4는 본 발명의 실시 예에 따른 데이터 처리 방법의 흐름도이다.
1 is a diagram illustrating a structure of a memory server with an expanded memory capacity according to an embodiment of the present invention.
2 is a diagram showing a specific structure of a memory card according to an embodiment of the present invention.
3 is a diagram showing a detailed structure of a memory expansion card according to an embodiment of the present invention.
4 is a flowchart of a data processing method according to an embodiment of the present invention.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those of ordinary skill in the art may easily implement the present invention. However, the present invention may be implemented in various forms and is not limited to the embodiments described herein. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and similar reference numerals are assigned to similar parts throughout the specification.

명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 나타낸다. Throughout the specification, when a certain part "includes" a certain component, this indicates that other components may be further included rather than excluding other components unless otherwise stated.

본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.Expressions described in the singular in this specification may be interpreted as the singular or plural unless an explicit expression such as "one" or "single" is used.

또한, 본 발명의 실시 예에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.In addition, terms including ordinal numbers such as first and second used in the embodiments of the present invention may be used to describe the elements, but the elements should not be limited by terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, a first component may be referred to as a second component, and similarly, a second component may be referred to as a first component.

다음에는 첨부된 도면을 참조하여 본 발명의 실시 예에 따른 메모리 카드 및 이를 이용한 데이터 처리 방법에 대하여 설명한다. Next, a memory card according to an embodiment of the present invention and a data processing method using the same will be described with reference to the accompanying drawings.

도 1은 본 발명의 실시 예에 따른, 메모리 용량이 확장된 메모리 서버의 구조를 나타낸 도이다. 1 is a diagram illustrating a structure of a memory server with an expanded memory capacity according to an embodiment of the present invention.

본 발명의 실시 예에서, 메모리 서버(1)는 도 1에서와 같이, CPU(central processing unit)(11), 로컬 메모리(12), 스토리지(13)를 포함하는 상태에서, 메모리 카드(14)와 메모리 확장카드(15)를 사용하여 메모리 용량을 확장시킬 수 있다. 본 실시 예에서, 메모리 서버(1)는 메모리 카드를 관리하는 주체라는 의미로 호스트 장치라고 명명될 수 있으며, 메모리 카드를 사용하는 외부의 컴퓨팅 호스트와는 다른 것임을 유의한다. In an embodiment of the present invention, the memory server 1 includes a central processing unit (CPU) 11, a local memory 12, and a storage 13, as shown in FIG. 1, and the memory card 14 And the memory expansion card 15 can be used to expand the memory capacity. Note that in the present embodiment, the memory server 1 may be referred to as a host device in the sense of a subject that manages a memory card, and is different from an external computing host using a memory card.

메모리 카드(14)는 하나의 서버에 1개가 장착되며, 메모리 확장 카드(15)는 필요한 경우 남아 있는 PCIe(Peripheral Component Interconnect Express) 슬롯의 개수만큼 장착할 수 있도록 구성된다. One memory card 14 is mounted in one server, and the memory expansion card 15 is configured to be mounted as many as the number of remaining Peripheral Component Interconnect Express (PCIe) slots if necessary.

메모리 서버(1)는 외부에 존재하는 컴퓨팅 서버와 케이블로 연결되어 거대한 메모리 모듈로 인식될 수 있다. 해당 케이블은 메모리 카드(14)에 연결되며, 메모리 카드(14)가 프로토콜 처리 기능을 포함하게 된다. 메모리 카드(14)는 자체적인 메모리를 가지고 있으며, 해당 메모리는 가장 낮은 지연시간으로 접근할 수 있는 메모리 공간이다. The memory server 1 may be recognized as a huge memory module by being connected to an external computing server by a cable. The cable is connected to the memory card 14, and the memory card 14 includes a protocol processing function. The memory card 14 has its own memory, which is a memory space that can be accessed with the lowest delay time.

메모리 확장 카드(15)는 메모리 카드(14)와 직접 케이블로 연결되거나, 다른 메모리 확장 카드에 데이지 체인(daisy chain) 방식으로 연결된다. 메모리 카드(14)로 수신된 메모리 접근 요청 주소가 메모리 확장 카드(15)의 메모리 공간에 해당한다면, 메모리 카드(14)는 메모리 확장 카드(15)에게 데이터 접근을 요청한다. 메모리 확장 카드(15)는 해당하는 메모리 주소 영역에 접근하여, 데이터를 기록하거나 데이터를 읽어서 메모리 카드(14)로 전달한다. 만일 요청된 주소가 자신의 물리적 메모리에 할당된 주소 영역이 아니면, 후방 포트에 체인으로 연결된 다른 메모리 확장 카드로 데이터 접근 요청을 전달한다. 메모리 확장 카드(15)는 후방 포트에서 데이터 접근 결과가 도착하면, 이를 전방 포트 방향으로 전달한다. 여기서는 메모리 확장 카드(15)가 2개인 것을 예로 들었으나, 본 발명은 이에 한정되지 않는다. The memory expansion card 15 is directly connected to the memory card 14 by a cable, or connected to another memory expansion card in a daisy chain method. If the memory access request address received by the memory card 14 corresponds to a memory space of the memory expansion card 15, the memory card 14 requests data access from the memory expansion card 15. The memory expansion card 15 accesses a corresponding memory address area, writes data or reads data, and transfers the data to the memory card 14. If the requested address is not an address area allocated to its own physical memory, it sends a data access request to another memory expansion card chained to the rear port. When the data access result arrives from the rear port, the memory expansion card 15 transmits it to the front port. Here, it is exemplified that there are two memory expansion cards 15, but the present invention is not limited thereto.

이러한 구조의 메모리 서버(1)의 주소 영역은 위에 기술된 두 가지 경우 이외에도 추가로 확장될 수 있다. The address area of the memory server 1 having such a structure may be further expanded in addition to the two cases described above.

로컬 메모리(12)의 일부 공간을 외부에서 접근 가능한 공간으로 활용한다. CPU(11)는 로컬 메모리(12)의 일부 영역을 외부에서 접근 가능한 영역으로 할당하고 이를 메모리 카드(14)에 알려준다. 메모리 카드(14)는 해당 영역에 대한 접근 요청이 수신되면, 해당 로컬 메모리(12)의 물리적 주소로 변환한 후, DMA(direct memory access)를 통하여 직접 접근할 수 있다.A partial space of the local memory 12 is used as a space accessible from the outside. The CPU 11 allocates a part of the local memory 12 as an externally accessible area and informs the memory card 14 of this. When a request for access to a corresponding area is received, the memory card 14 converts to a physical address of the corresponding local memory 12, and then can directly access it through direct memory access (DMA).

또한, 메모리 서버(1)의 스토리지(13)의 공간도 외부 접근이 가능한 공간으로 활용할 수 있다. 이 경우 CPU(11)는 스토리지(13)의 일부 영역을 외부 접근이 가능한 영역으로 설정하고, 로컬 메모리(12)의 일정 영역을 해당 스토리지 영역에 대한 캐시 및 버퍼로 사용한다. 이하에서는 설명의 편의상, 외부 접근이 가능한 영역으로 설정된 스토리지의 일부 영역을 "스토리지 공간"이라고 명명한다. 메모리 카드(14)는 스토리지(13)의 주소 영역에 대한 접근 요청이 들어오면 이를 CPU(11)에게 알려주며, CPU(11)가 직접 스토리지(13)의 주소 영역에 대한 데이터 접근에 관여하여 해당 메모리 요청을 처리한다.In addition, the space of the storage 13 of the memory server 1 may be utilized as a space capable of external access. In this case, the CPU 11 sets a partial region of the storage 13 as an externally accessible region, and uses a certain region of the local memory 12 as a cache and buffer for the storage region. Hereinafter, for convenience of description, a partial area of the storage set as an externally accessible area is referred to as "storage space". The memory card 14 notifies the CPU 11 when an access request to the address area of the storage 13 is received, and the CPU 11 directly engages in accessing data to the address area of the storage 13 Process the request.

도 2는 본 발명의 실시 예에 따른 메모리 카드의 구체적인 구조를 나타낸 도이다. 2 is a diagram showing a specific structure of a memory card according to an embodiment of the present invention.

본 발명의 실시 예에 따른 메모리 카드(14)는 첨부한 도 2와 같이, 메모리 모듈(141), 컨트롤러(142), 호스트 접근 유닛(143), 메모리 접근 유닛(144), 확장 메모리 접근 유닛(145), 주소 판별 유닛(146), 및 프로토콜 엔진(147)을 포함한다. 여기서 메모리 모듈(141)은 DDR(Double data rate) 메모리 모듈일 수 있으며, 컨트롤러(142)는 DDR 컨트롤러일 수 있다. The memory card 14 according to the embodiment of the present invention includes a memory module 141, a controller 142, a host access unit 143, a memory access unit 144, and an extended memory access unit ( 145), an address determination unit 146, and a protocol engine 147. Here, the memory module 141 may be a double data rate (DDR) memory module, and the controller 142 may be a DDR controller.

프로토콜 엔진(147)은 외부로부터 메모리 접근 요청이 수신된 경우, 수신된 요청에 대응하는 패킷을 Gen-Z 등 메모리 연결망 프로토콜에 맞추어 분석하고, 프로토콜에 따른 ACK/NACK 패킷을 송신하며, 에러 처리 등을 수행하도록 구성된다. 프로토콜 엔진(147)은 수신된 패킷이 정상적인 메모리 접근 패킷인 경우 수신된 패킷을 주소 판별 유닛(146)으로 전달하며, 수신된 패킷이 읽기 요청에 해당하는 경우, 주소 판별 유닛(146)으로부터 전달되는 메모리 데이터를 프로토콜에 맞추어 외부로 전송하도록 구성된다. When a memory access request is received from the outside, the protocol engine 147 analyzes the packet corresponding to the received request according to a memory connection network protocol such as Gen-Z, transmits ACK/NACK packets according to the protocol, and handles errors, etc. Is configured to perform. When the received packet is a normal memory access packet, the protocol engine 147 transfers the received packet to the address determination unit 146, and when the received packet corresponds to a read request, the received packet is transmitted from the address determination unit 146. It is configured to transmit memory data to the outside according to the protocol.

주소 판별 유닛(146)은 프로토콜 엔진(147)으로부터 전달되는 패킷을 수신하고, 수신된 패킷의 메모리 접근 요청에 따라 해당 메모리 주소가 어느 물리적 공간에 있는지를 판별한다. 판별 결과에 따라 호스트 접근 유닛(143), 메모리 접근 유닛(144) 혹은 확장 메모리 접근 유닛(145)으로 읽기/쓰기에 대한 요청을 전달한다. 또한 각 요청별로 태그(Tag) 정보를 관리하여, 읽기 요청에 대한 응답이 각 유닛(143~145)으로부터 수신되면 이를 태그 정보와 함께 프로토콜 엔진(147)으로 전달한다. 주소 판별 유닛(146)은 주소 레지스터(1461)를 포함한다. The address determination unit 146 receives a packet transmitted from the protocol engine 147, and determines in which physical space the corresponding memory address is in accordance with a memory access request of the received packet. According to the determination result, a request for read/write is transmitted to the host access unit 143, the memory access unit 144, or the extended memory access unit 145. In addition, tag information is managed for each request, and when a response to a read request is received from each unit 143 to 145, it is transmitted to the protocol engine 147 together with the tag information. The address determination unit 146 includes an address register 1461.

주소 레지스터(1461)는 CPU가 설정해 두는 레지스터로 다음과 같은 정보가 저장되어 있다.The address register 1461 is a register set by the CPU and stores the following information.

Figure pat00001
메모리 카드가 제공하는 전체 메모리 주소 영역
Figure pat00001
Total memory address area provided by the memory card

Figure pat00002
카드 내부의 메모리 모듈의 물리 주소
Figure pat00002
Physical address of the memory module inside the card

Figure pat00003
메모리 확장 카드의 물리 주소
Figure pat00003
Physical address of the memory expansion card

Figure pat00004
사용 가능한 호스트 로컬 메모리의 물리 주소
Figure pat00004
Physical address of available host local memory

Figure pat00005
사용 가능한 스토리지 공간의 물리 주소
Figure pat00005
Physical address of available storage space

Figure pat00006
전체 메모리 주소 영역과 물리 주소 영역에 대한 매핑 정보
Figure pat00006
Mapping information for the entire memory address area and physical address area

여기서, 스토리지 공간의 물리 주소는 외부에서 보는 메모리 공간에 매핑하기 위해 CPU가 외부에서 접근 가능한 스토리지의 영역에 할당한 주소를 나타낸다. Here, the physical address of the storage space represents an address allocated by the CPU to an externally accessible storage area in order to map to a memory space viewed from the outside.

메모리 접근 유닛(144)은 메모리 카드(14)에 물리적으로 존재하는 메모리 모듈(141)에 대한 접근 요청을 처리하도록 구성된다. 메모리 접근 유닛(144)은 DDR 컨트롤러(142)와 인터페이스하여 메모리 모듈(141)에 대한 데이터 읽기나 쓰기를 수행한다.The memory access unit 144 is configured to process an access request for the memory module 141 physically present in the memory card 14. The memory access unit 144 interfaces with the DDR controller 142 to read or write data to the memory module 141.

확장 메모리 접근 유닛(145)은 메모리 서버(1)에 장착된 메모리 확장 카드(15)가 있는 경우, 메모리 카드(15)와의 인터페이스를 통해 메모리 읽기/쓰기 요청을 수행하도록 구성된다. The extended memory access unit 145 is configured to perform a memory read/write request through an interface with the memory card 15 when there is a memory expansion card 15 mounted in the memory server 1.

호스트 접근 유닛(143)은 메모리 서버(1)의 로컬 메모리(12) 및 스토리지(13)에 대한 메모리 접근 요청이 있는 경우, 메모리 서버(1)의 CPU(11) 혹은 로컬 메모리(12)와 인터페이스하여, 로컬 메모리(12) 및 스토리지(13)에 대한 데이터의 읽기/쓰기를 수행하도록 구성된다. 호스트 접근 유닛(143)은 DMA 엔진(1431)과 도어벨(doorbell) 레지스터(1432)를 포함한다. 또한, 호스트 접근 유닛(143)은 CPU(11)와 통신하기 위한 PCIe 앤드포인트용 코어(PCIe Endpoint Core)(도시하지 않음)를 가진다. DMA 엔진(1431)은 CPU(11)의 간섭 없이 로컬 메모리(12)에 접근하기 위한 하드웨어이다. 도어벨 레지스터(1432)는 CPU(11)와 통신을 위한 레지스터 파일로, 다음과 같은 정보들을 포함한다. When there is a memory access request for the local memory 12 and the storage 13 of the memory server 1, the host access unit 143 interfaces with the CPU 11 or the local memory 12 of the memory server 1 Thus, it is configured to read/write data to the local memory 12 and the storage 13. The host access unit 143 includes a DMA engine 1431 and a doorbell register 1432. In addition, the host access unit 143 has a PCIe endpoint core (not shown) for communicating with the CPU 11. The DMA engine 1431 is hardware for accessing the local memory 12 without interference from the CPU 11. The doorbell register 1432 is a register file for communication with the CPU 11, and includes the following information.

Figure pat00007
스토리지 버퍼로 사용되는 로컬 메모리의 물리 주소
Figure pat00007
Physical address of local memory used as storage buffer

Figure pat00008
현재 캐싱되어 있는 스토리지 공간의 물리 주소 및 해당 스토리지 캐시로 사용되는 로컬 메모리의 물리 주소 테이블
Figure pat00008
Table of physical addresses of currently cached storage spaces and physical addresses of local memory used by the corresponding storage cache

Figure pat00009
스토리지 공간에 대한 쓰기 요청시 DMA 완료를 CPU에게 알리기 위한 도어벨
Figure pat00009
Doorbell to notify CPU of DMA completion when requesting to write to storage space

Figure pat00010
스토리지 공간에 대한 읽기 요청시 요청이 수신되었음을 CPU에게 알리기 위한 도어벨
Figure pat00010
Doorbell to notify the CPU that the request has been received when requesting to read storage space

Figure pat00011
스토리지 공간에 대한 읽기 요청에 대해 데이터가 준비되었음을 메모리 카드에게 알리기 위한 도어벨
Figure pat00011
Doorbell to inform the memory card that data is ready for a read request for storage space

도 3은 본 발명의 실시 예에 따른 메모리 확장 카드의 구체적인 구조를 나타낸 도이다. 3 is a diagram showing a detailed structure of a memory expansion card according to an embodiment of the present invention.

본 발명의 실시 예에 따른 메모리 확장 카드(15)는, 첨부한 도 3에서와 같이, 메모리 모듈(151), 컨트롤러(152), 주소 판별 유닛(153), 병합(merge) 유닛(154), 전면 입력 포트(155), 전면 출력 포트(156), 바이패스(bypass) 출력 포트(157) 및 바이패스 입력 포트(168)를 포함한다. 여기서 메모리 모듈(151)은 DDR 메모리 모듈일 수 있으며, 컨트롤러(152)는 DDR 컨트롤러일 수 있다.The memory expansion card 15 according to an exemplary embodiment of the present invention includes a memory module 151, a controller 152, an address determination unit 153, a merge unit 154, as shown in FIG. 3. It includes a front input port 155, a front output port 156, a bypass output port 157, and a bypass input port 168. Here, the memory module 151 may be a DDR memory module, and the controller 152 may be a DDR controller.

메모리 확장 카드(15)는 메모리 카드(14)와 데이지 체인 방식으로 연결될 수 있어서 또 다른 메모리 확장 카드와 인터페이스하여 데이터 읽기/쓰기를 수행할 수 있다. The memory expansion card 15 may be connected to the memory card 14 in a daisy chain manner, so that data read/write may be performed by interfacing with another memory expansion card.

전면 입력 포트(155)는 메모리 카드(14) 또는 전면에 체인으로 연결되는 다른 메모리 확장 카드로부터의 입력을 수신하여 주소 판별 유닛(153)으로 전달한다. 전면 입력 포트(155)는 설명의 편의상 제1 입력 포트라고도 명명될 수 있다.The front input port 155 receives an input from the memory card 14 or another memory expansion card connected to the front in a chain and transmits the input to the address determination unit 153. The front input port 155 may also be referred to as a first input port for convenience of description.

전면 출력 포트(156)는 주소 판별 유닛(153), 컨트롤러(152) 또는 병합 유닛(154)으로부터의 결과를 메모리 카드(14) 또는 전면에 체인으로 연결되는 다른 메모리 확장 카드로 전달한다. 전면 출력 포트(156)는 설명의 편의상 제1 출력 포트라고도 명명될 수 있다. The front output port 156 transfers the results from the address determination unit 153, the controller 152 or the merge unit 154 to the memory card 14 or another memory expansion card that is chained to the front. The front output port 156 may also be referred to as a first output port for convenience of description.

바이패스 입력 포트(158)는 후면에 체인으로 연결되는 다른 메모리 확장 카드로부터의 입력을 수신하여 주소 판별 유닛(153), 컨트롤러(152) 또는 병합 유닛(154)으로 전달한다. 바이패스 입력 포트(158)는 설명의 편의상 제2 입력 포트라고도 명명될 수 있다. The bypass input port 158 receives an input from another memory expansion card connected in a chain at the rear and transmits the input to the address determination unit 153, the controller 152 or the merge unit 154. The bypass input port 158 may also be referred to as a second input port for convenience of description.

바이패스 출력 포트(157)는 주소 판별 유닛(153)으로부터의 요청을 후면에 체인으로 연결되는 다른 메모리 확장 카드로 전달한다. 바이패스 출력 포트(157)는 설명의 편의상 제2 출력 포트라고도 명명될 수 있다. 바이패스 출력 포트(157)와 바이패스 입력 포트(158)에는 다른 메모리 확장 카드가 연결될 수 있다. The bypass output port 157 transfers the request from the address determination unit 153 to another memory expansion card that is chained to the rear. The bypass output port 157 may also be referred to as a second output port for convenience of description. Another memory expansion card may be connected to the bypass output port 157 and the bypass input port 158.

메모리 카드(14)에서 메모리 확장 카드(15)에 대한 메모리 접근 요청이 발생하면 메모리 카드(14)의 확장 메모리 접근 유닛(145)으로부터의 메모리 접근 요청이 전면 입력 포트(155)를 통해 주소 판별 유닛(153)으로 전달된다. 주소 판별 유닛(153)은 주소 레지스터(1531)를 포함하며, 주소 레지스터(1531)는 자신이 가지고 있는 메모리 모듈(151)에 할당된 물리 주소를 저장한다. 주소 레지스터(1521)는 호스트의 CPU(11)에 의해 시스템 초기화 과정에서 설정된다. 주소 판별 유닛(153)은 입력된 메모리 접근 요청의 주소가 주소 레지스터(1531)에 저장된 주소와 일치하면, 컨트롤러(152)를 통해 메모리 모듈(151)에 접근한다. 주소 판별 유닛(153)은 메모리 접근 요청의 동작이 읽기 동작이면, 컨트롤러(152)를 통해 메모리 모듈(151)로부터 읽어온 데이터를 병합 유닛(154)으로 전달한다. 주소 판별 유닛(153)은 메모리 접근 요청의 동작이 쓰기 동작이면, 컨트롤러(152)를 통해 메모리 모듈(151)의 해당 주소에 데이터를 기록한다. When a memory access request for the memory expansion card 15 occurs from the memory card 14, the memory access request from the extended memory access unit 145 of the memory card 14 is sent to the address determination unit through the front input port 155. It is delivered to (153). The address determination unit 153 includes an address register 1531, and the address register 1531 stores a physical address allocated to the memory module 151 it has. The address register 1521 is set by the CPU 11 of the host during system initialization. The address determination unit 153 accesses the memory module 151 through the controller 152 when the address of the input memory access request matches the address stored in the address register 1531. If the operation of the memory access request is a read operation, the address determination unit 153 transfers the data read from the memory module 151 through the controller 152 to the merge unit 154. When the operation of the memory access request is a write operation, the address determination unit 153 writes data to a corresponding address of the memory module 151 through the controller 152.

주소 판별 유닛(153)은 입력된 메모리 접근 요청의 주소가 주소 레지스터(1531)에 저장된 주소와 일치하지 않으면, 해당 메모리 접근 요청을 바이패스 출력 포트(157)를 통해 다른 메모리 확장 카드로 전달한다. 바이패스 출력 포트(157)를 통해 메모리 접근 요청을 전달받은 다른 메모리 확장 카드는 메모리 접근 요청의 동작을 수행하며, 읽기 동작인 경우 해당 주소의 데이터를 읽어서 전달하며, 이에 따라 바이패스 입력 포트(158)를 통해 관련 데이터가 입력된다. If the address of the input memory access request does not match the address stored in the address register 1531, the address determination unit 153 transmits the corresponding memory access request to another memory expansion card through the bypass output port 157. Another memory expansion card that has received a memory access request through the bypass output port 157 performs a memory access request operation, and in the case of a read operation, reads and transmits the data of the corresponding address. Accordingly, the bypass input port 158 The relevant data is entered through ).

바이패스 입력 포트(158)를 통해 다른 메모리 확장 카드로부터 입력되는 데이터는 병합 유닛(154)으로 전달된다. Data input from another memory expansion card through the bypass input port 158 is transferred to the merging unit 154.

병합 유닛(154)은 주소 판별 유닛(153) 또는 바이패스 입력 포트(158)로부터 제공되는 데이터를 전면 출력 포트(156)를 통해 메모리 카드(14)로 전달한다. The merging unit 154 transfers data provided from the address determination unit 153 or the bypass input port 158 to the memory card 14 through the front output port 156.

다음에는 본 발명의 실시 예에 따른 메모리 카드를 이용하여 데이터를 처리하는 방법에 대하여 설명한다. Next, a method of processing data using a memory card according to an embodiment of the present invention will be described.

도 4는 본 발명의 실시 예에 따른 데이터 처리 방법의 흐름도이다. 4 is a flowchart of a data processing method according to an embodiment of the present invention.

구체적으로, 도 4는 본 발명의 실시 예에 따른 메모리 카드(14)의 호스트 접근 유닛(143)이 호스트의 CPU(11) 혹은 로컬 메모리(12)와 인터페이스 하여, 로컬 메모리(12) 및 스토리지(13)에 대한 데이터의 읽기/쓰기를 수행하여 데이터를 처리하는 방법의 흐름을 도시한다. 일차적으로는 메모리 요청이 카드에 탑재된 메모리 영역(141, 151)에 대한 것인지를 판단하여 카드에 탑재된 메모리 영역에 대한 것이면, 메모리 카드 및 확장 메모리 카드에서 데이터 접근을 처리하게 되며 이는 도 4에서 언급되지 않는다. Specifically, FIG. 4 shows that the host access unit 143 of the memory card 14 according to the embodiment of the present invention interfaces with the CPU 11 or the local memory 12 of the host, so that the local memory 12 and the storage ( 13) is a flow diagram of a method of processing data by reading/writing data. First, it is determined whether the memory request is for the memory areas 141 and 151 mounted on the card, and if it is for the memory area mounted on the card, the memory card and the extended memory card process data access, which is shown in FIG. Not mentioned.

이하에서, 메모리 요청의 접근 대상이 로컬 메모리인지 스토리지 공간의 주소 영역인지는, 메모리 카드(14)의 주소 판별 유닛(146)의 주소 레지스터(1461)에 저장된 정보를 토대로 판별될 수 있다. Hereinafter, whether the access target of the memory request is a local memory or an address area of the storage space may be determined based on information stored in the address register 1461 of the address determination unit 146 of the memory card 14.

첨부한 도 4에 도시되어 있듯이, 메모리 카드(14)의 호스트 접근 유닛(143)은 대기상태에서(S100), 메모리 요청이 입력되고 해당 메모리 카드 또는 확장 메모리 카드에 탑재된 메모리 영역에 대한 접근이 아니면, 먼저 메모리 요청의 접근 대상이 로컬 메모리(12)인지 또는 스토리지 공간의 주소 영역인지를 판단한다(S110). 로컬 메모리가 접근 대상인 경우, 호스트 접근 유닛(143)은 DMA를 사용해 로컬 메모리(12)의 해당 메모리 영역에 읽기/쓰기를 수행한다(S120). 이 경우, 메모리 요청이 읽기에 관한 것이면, 호스트 접근 유닛(143)은 DMA를 사용해 로컬 메모리(12)로부터 읽어 온 데이터를 주소 판별 유닛(146)으로 전달한다. 메모리 요청이 쓰기에 관한 것이면, 호스트 접근 유닛(143)은 DMA를 사용해 로컬 메모리(12)의 해당 메모리 영역에 데이터 쓰기를 수행한다. 4, the host access unit 143 of the memory card 14 is in a standby state (S100), a memory request is input, and access to the memory area mounted on the corresponding memory card or the extended memory card is Otherwise, it is first determined whether the access target of the memory request is the local memory 12 or an address area of the storage space (S110). When the local memory is an access target, the host access unit 143 reads/writes to a corresponding memory area of the local memory 12 using DMA (S120). In this case, if the memory request relates to read, the host access unit 143 transfers the data read from the local memory 12 to the address determination unit 146 using DMA. If the memory request relates to a write, the host access unit 143 writes data to the corresponding memory area of the local memory 12 using DMA.

한편, 메모리 요청의 접근 대상이 스토리지 공간의 주소 영역인 경우, 해당 주소 영역이 캐싱되어 있는 상태인지의 여부를 판단한다(S130). 해당 주소 영역이 캐싱되어 있는 상태이면, 호스트 접근 유닛(143)은 DMA를 통해 캐싱되어 있는 로컬 메모리 영역에 접근해서 읽기/쓰기를 수행한다(S140). 즉, 호스트 접근 유닛(143)은 메모리 요청의 접근 대상이 도어벨 레지스터(1432)에 저장된 정보 즉, 캐싱되어 있는 스토리지 공간의 물리 주소에 해당하면 스토리지 캐시로 매핑된 로컬 메모리의 물리 주소를 이용하여 DMA를 통해 로컬 메모리(12)의 캐싱된 스토리지 공간에 접근해서 읽기/쓰기를 수행한다. 읽기/쓰기에 따른 처리는 위에 기술된 바와 같이(단계 S120 참조) 수행될 수 있다. 읽기/쓰기에 따른 처리가 완료되면, 호스트 접근 유닛(143)은 도어벨 레지스터에 해당 처리에 따른 동작이 완료되었음을 기록한다(S150). 이후, 추가적인 인터럽트나 CPU(11)의 폴링(Polling)을 통해서 캐싱 영역의 접근이 이루어졌음을 CPU(11)가 인식하며, 이에 따라 CPU(11)가 스토리지 공간에 라이트 백(Write Back)을 수행하거나, 캐시 관리 정책에 정보를 추가할 수 있다.Meanwhile, when the access target of the memory request is an address area of the storage space, it is determined whether the corresponding address area is in a cached state (S130). If the corresponding address area is in a cached state, the host access unit 143 accesses the cached local memory area through DMA and performs read/write (S140). That is, if the access target of the memory request corresponds to information stored in the doorbell register 1432, that is, the physical address of the cached storage space, the host access unit 143 uses the physical address of the local memory mapped to the storage cache. Read/write is performed by accessing the cached storage space of the local memory 12 through DMA. Processing according to the read/write may be performed as described above (see step S120). When the processing according to the read/write is completed, the host access unit 143 records that the operation according to the processing is completed in the doorbell register (S150). Thereafter, the CPU 11 recognizes that the caching area has been accessed through an additional interrupt or polling of the CPU 11, and accordingly, the CPU 11 performs a write back to the storage space. Or, you can add information to the cache management policy.

한편, 메모리 요청의 접근 대상이 스토리지 공간의 주소 영역이면서 캐싱되어 있지 않은 경우, 호스트 접근 유닛(143)은 해당 메모리 요청의 동작이 읽기 동작인지 아니면 쓰기 동작인지를 판단한다(S160). 쓰기 동작이면, 호스트 접근 유닛(143)은 스토리지 버퍼로 할당되어 있는 로컬 메모리 영역에 DMA를 통해 데이터를 기록한다(S170). 즉, 호스트 접근 유닛(143)은 메모리 요청의 접근 대상이 도어벨 레지스터(1432)에 저장된 캐싱되어 있는 스토리지 공간의 물리 주소에 해당하지 않으면, 스토리지 버퍼로 사용되는 로컬 메모리의 물리 주소를 이용하여 DMA를 통해 로컬 메모리(12)의 스토리지 버퍼로 할당되어 있는 영역에 접근해서 쓰기를 수행한다. 쓰기에 따른 처리가 완료되면, 호스트 접근 유닛(143)은 도어벨 레지스터에 해당 처리에 따른 동작이 완료되었음을 기록한다(S150). 이에 따라, CPU(11)는 로컬 메모리의 스토리지 버퍼 영역의 데이터를 실제 스토리지 공간에 라이트백하고, 해당 공간을 캐시 영역으로 가져오는 동작을 수행한다.Meanwhile, when the access target of the memory request is an address area of the storage space and is not cached, the host access unit 143 determines whether the operation of the corresponding memory request is a read operation or a write operation (S160). In the write operation, the host access unit 143 writes data through DMA to a local memory area allocated as a storage buffer (S170). That is, if the access target of the memory request does not correspond to the physical address of the cached storage space stored in the doorbell register 1432, the host access unit 143 uses the physical address of the local memory used as the storage buffer. Through this, an area allocated as a storage buffer of the local memory 12 is accessed and written. When the processing according to the writing is completed, the host access unit 143 records that the operation according to the processing is completed in the doorbell register (S150). Accordingly, the CPU 11 writes back data in the storage buffer area of the local memory to the actual storage space, and performs an operation of bringing the corresponding space to the cache area.

한편, 단계(S160)에서, 읽기 동작이면, 호스트 접근 유닛(143)은 도어벨 레지스터(1432)에 주소를 기록하고 CPU(11)에 읽기를 요청한다(S180). CPU(11)는 인터럽트 또는 도어벨 레지스터(1432) 폴링을 통해 스토리지 물리 주소를 획득하고, 획득된 주소에 대응하는 스토리지 영역 데이터를 캐싱 영역으로 가져오며, 캐싱이 완료되었음을 캐싱 영역의 주소와 함께 도어벨 레지스터(1432)에 기록한다. 호스트 접근 유닛(143)은 도어벨 레지스터(1432)의 해당 도어벨을 폴링하며(S190), 캐싱이 완료되었음을 인지하면, 해당 캐싱 영역에 DMA를 통해 접근한다(S200). 즉, 로컬 메모리(12)의 캐싱된 스토리지 공간에 DMA를 통해 접근하여 읽기 동작을 수행한다.Meanwhile, in step S160, in the case of a read operation, the host access unit 143 writes the address to the doorbell register 1432 and requests the CPU 11 to read (S180). The CPU 11 acquires a storage physical address through an interrupt or polling the doorbell register 1432, brings the storage area data corresponding to the obtained address to the caching area, and indicates that caching is completed, along with the address of the caching area. Writes to the bell register 1432. The host access unit 143 polls the corresponding doorbell of the doorbell register 1432 (S190), and when it recognizes that caching is complete, accesses the corresponding caching area through DMA (S200). That is, a read operation is performed by accessing the cached storage space of the local memory 12 through DMA.

이러한 본 발명의 실시 예에 따르면, 확장식 종단 메모리 카드를 서버에 장착하여 서버를 메모리 풀로 이용할 수 있다. 랙에 장착되는 시스템 구현시, 별도의 섀시 제작 없이, 기존의 서버를 이용하여 간단히 시스템을 구축할 수 있으며, 서버의 로컬 메모리를 메모리 풀 공간으로 활용할 수 있다. 또한, 일반적으로는 제공하기 힘든 용량의 메모리 공간을 서버의 스토리지 공간을 이용하여, 제공할 수 있다.According to such an embodiment of the present invention, the server may be used as a memory pool by mounting an expandable end memory card in the server. When implementing a system mounted on a rack, a system can be simply constructed using an existing server without a separate chassis, and the server's local memory can be used as a memory pool space. Also, a memory space having a capacity that is difficult to provide in general can be provided by using the storage space of the server.

이러한 본 발명의 실시 예는, 메모리 중심 컴퓨팅에 사용될 메모리 풀 구성에 있어서, 메모리 연결망 프로토콜을 처리하기 위한 프로토콜 엔진, 실제 메모리로 사용될 메모리 장치에 적용될 수 있으며, PC 혹은 서버에 장착되는 확장 장치 관리 기술 및 메모리 버스 확장 기술 분야에 적용될 수 있다. The embodiment of the present invention, in the configuration of a memory pool to be used for memory-centric computing, can be applied to a protocol engine for processing a memory connection network protocol, a memory device to be used as an actual memory, and an expansion device management technology mounted on a PC or server And memory bus expansion technology.

전술한 실시 예의 전부 또는 일부는 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어가 실시 예를 구현하는데 사용될 때, 실시 예는 컴퓨터 프로그램 제품의 형태로 완전히 또는 부분적으로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령을 포함한다.All or part of the above-described embodiments may be implemented by software, hardware, firmware, or any combination thereof. When software is used to implement an embodiment, the embodiment may be fully or partially implemented in the form of a computer program product. The computer program product includes one or more computer instructions.

컴퓨터 프로그램 명령들이 로딩되어 컴퓨터상에서 실행될 때, 본 발명에 따른 절차 또는 기능들이 전부 또는 부분적으로 생성된다. 처리 장치는 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크 또는 다른 프로그램 가능한 장치일 수 있다. 컴퓨터 명령은 컴퓨터 판독 가능 저장 매체에 저장되거나, 컴퓨터 판독 가능 저장 매체를 사용하여 전송될 수 있다.When computer program instructions are loaded and executed on a computer, the procedures or functions according to the present invention are created in whole or in part. The processing device may be a general purpose computer, a dedicated computer, a computer network or other programmable device. The computer instructions may be stored in a computer-readable storage medium or transmitted using a computer-readable storage medium.

본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시 예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시 예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.The embodiments of the present invention are not implemented only through the apparatus and/or method described above, but may be implemented through a program for realizing a function corresponding to the configuration of the embodiment of the present invention, a recording medium in which the program is recorded. Also, such implementation can be easily implemented by an expert in the technical field to which the present invention belongs from the description of the above-described embodiment.

이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements by those skilled in the art using the basic concept of the present invention defined in the following claims are also provided. It belongs to the scope of rights.

Claims (20)

호스트 장치의 시스템 버스에 연결되어 있는 메모리 카드로서,
메모리 모듈;
메모리 접근 요청을 수신하고, 상기 메모리 접근 요청에 따른 데이터를 전송하도록 구성된 프로토콜 엔진;
상기 프로토콜 엔진으로부터 전달되는 메모리 접근 요청에 포함하는 메모리 주소가 어느 물리적 공간에 있는지를 판별하도록 구성된 제1 주소 판별 유닛;
상기 제1 주소 판별 유닛에 의해 상기 메모리 주소가 상기 메모리 모듈에 해당하는 것으로 판별된 경우, 상기 메모리 모듈에 대하여 상기 메모리 접근 요청에 따른 읽기/쓰기 동작을 수행하도록 구성된 메모리 접근 유닛; 및
상기 제1 주소 판별 유닛에 의해 상기 메모리 주소가 상기 호스트 장치의 로컬 메모리 또는 스토리지에 해당하는 것으로 판별된 경우, 상기 로컬 메모리 또는 상기 스토리지에 대하여 상기 메모리 접근 요청에 따른 읽기/쓰기 동작을 수행하도록 구성된 호스트 접근 유닛
을 포함하는 메모리 카드.
A memory card connected to the host device's system bus,
Memory module;
A protocol engine configured to receive a memory access request and transmit data according to the memory access request;
A first address determination unit configured to determine in which physical space a memory address included in a memory access request transmitted from the protocol engine is located;
A memory access unit configured to perform a read/write operation according to the memory access request with respect to the memory module when it is determined by the first address determination unit that the memory address corresponds to the memory module; And
When it is determined by the first address determination unit that the memory address corresponds to the local memory or storage of the host device, the local memory or the storage is configured to perform a read/write operation according to the memory access request Host access unit
A memory card comprising a.
제1항에 있어서,
상기 제1 주소 판별 유닛에 의해 상기 메모리 주소가 메모리 확장 카드에 해당하는 것으로 판별된 경우, 상기 메모리 확장 카드에 대하여 상기 메모리 접근 요청에 따른 읽기/쓰기 동작을 수행하도록 구성된 확장 메모리 접근 유닛
을 더 포함하는 메모리 카드.
The method of claim 1,
When it is determined by the first address determination unit that the memory address corresponds to a memory expansion card, an expanded memory access unit configured to perform a read/write operation according to the memory access request with respect to the memory expansion card
The memory card further comprising.
제2항에 있어서,
상기 제1 주소 판별 유닛은 주소 레지스터를 포함하고, 상기 주소 레지스터는, 상기 메모리 카드가 제공하는 전체 메모리 주소 영역, 상기 메모리 모듈의 물리 주소, 메모리 확장 카드의 물리 주소, 사용 가능한 호스트 로컬 메모리의 물리 주소, 사용 가능한 스토리지 공간의 주소, 전체 메모리 주소 영역과 물리 주소 영역에 대한 매핑 정보 중 적어도 하나를 포함하는, 메모리 카드.
The method of claim 2,
The first address determination unit includes an address register, wherein the address register includes a total memory address area provided by the memory card, a physical address of the memory module, a physical address of a memory expansion card, and a physical address of a usable host local memory. The memory card comprising at least one of an address, an address of an usable storage space, and mapping information for an entire memory address area and a physical address area.
제1항에 있어서,
상기 제1 주소 판별 유닛은 각각의 메모리 접근 요청 정보별로 태그(Tag) 정보를 관리하고, 메모리 접근 요청의 읽기 동작에 따른 응답 데이터가 수신되면 태그 정보와 함께 응답 데이터를 상기 프로토콜 엔진으로 전달하도록 구성되는, 메모리 카드.
The method of claim 1,
The first address determination unit is configured to manage tag information for each memory access request information, and to transmit response data along with tag information to the protocol engine when response data according to a read operation of a memory access request is received. Being, the memory card.
제1항에 있어서,
상기 호스트 접근 유닛은,
상기 호스트 장치의 로컬 메모리와 스토리지 캐싱 영역에 대한 읽기/쓰기 동작을 수행하도록 구성된 DMA(direct memory access) 엔진; 및
도어벨(doorbell) 레지스터
를 포함하는, 메모리 카드.
The method of claim 1,
The host access unit,
A direct memory access (DMA) engine configured to perform read/write operations on a local memory and a storage caching area of the host device; And
Doorbell register
Including a memory card.
제5항에 있어서,
상기 도어벨 레지스터는, 스토리지 캐시로 사용되는 로컬 메모리의 물리 주소, 스토리지 버퍼로 사용되는 로컬 메모리의 물리 주소, 현재 캐싱되어 있는 스토리지 공간의 주소, 스토리지 공간에 대한 쓰기 요청시 DMA 완료를 상기 호스트 장치의 CPU(central processing unit)에게 알리기 위한 도어벨, 스토리지 공간에 대한 읽기 요청시 요청이 수신되었음을 CPU에게 알리기 위한 도어벨, 및 스토리지 공간에 대한 읽기 요청에 대해 데이터가 준비되었음을 메모리 카드에게 알리기 위한 도어벨 중 적어도 하나를 포함하는, 메모리 카드.
The method of claim 5,
The doorbell register includes a physical address of a local memory used as a storage cache, a physical address of a local memory used as a storage buffer, an address of a currently cached storage space, and a DMA completion when a write request to the storage space is requested. A doorbell to notify the central processing unit (CPU) of the storage space, a doorbell to notify the CPU that a request has been received when a read request for storage space is requested, and a door to notify the memory card that data is ready for a read request to the storage space A memory card comprising at least one of bells.
제5항에 있어서,
상기 호스트 접근 유닛은 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있는 경우, 상기 DMA 엔진을 통해 상기 로컬 메모리에 상기 스토리지의 공간이 캐싱되어 있는 로컬 메모리 영역에 접근해서 읽기/쓰기를 수행하도록 구성되는, 메모리 카드.
The method of claim 5,
When the access target of the memory access request is an address area of the storage of the host device and the corresponding address area is cached, the host access unit is a local area in which the storage space is cached in the local memory through the DMA engine. A memory card, configured to read/write by accessing a memory area.
제5항에 있어서,
상기 호스트 접근 유닛은 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있지 않고, 요청된 동작이 쓰기 동작인 경우, 상기 DMA 엔진을 통해 상기 로컬 메모리에 스토리지 버퍼로 사용되는 메모리 영역에 접근해서 쓰기를 수행하도록 구성되는, 메모리 카드.
The method of claim 5,
When the access target of the memory access request is an address area of the storage of the host device and the corresponding address area is not cached, and the requested operation is a write operation, the host access unit may access the local memory through the DMA engine. A memory card that is configured to perform writes by accessing an area of memory used as a storage buffer.
제5항에 있어서,
상기 호스트 접근 유닛은, 상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있지 않고, 요청된 동작이 읽기 동작인 경우, 이를 상기 호스트 장치의 CPU에게 알려서 상기 CPU가 해당 영역을 캐싱 영역으로 가져와서 상기 도어벨 레지스터에 해당 캐싱 영역의 주소를 기록하여 캐싱이 완료되었음을 기록하게 하도록 하고,
상기 도어벨 레지스터를 폴링(polling)하여 캐싱이 완료됨이 인지되면, 상기 호스트 접근 유닛은 추가로, 상기 로컬 메모리의 캐싱된 스토리지 공간에 DMA를 통해 접근하여 읽기 동작을 수행하도록 구성되는, 메모리 카드.
The method of claim 5,
The host access unit informs the CPU of the host device when an access target of the memory access request is an address area of the storage of the host device and the address area is not cached, and the requested operation is a read operation. The CPU brings the corresponding area to the caching area and writes the address of the corresponding caching area in the doorbell register to record that caching is complete,
When it is recognized that caching is completed by polling the doorbell register, the host access unit is further configured to access the cached storage space of the local memory through DMA and perform a read operation. .
제1항에 있어서,
상기 메모리 접근 유닛과 연계하여 상기 메모리 모듈에 대한 데이터 읽기/쓰기 동작을 수행하는 컨트롤러를 더 포함하는, 메모리 카드.
The method of claim 1,
The memory card further comprising a controller that performs data read/write operations for the memory module in connection with the memory access unit.
제2항에 있어서,
상기 메모리 카드에 연결되는 상기 메모리 확장 카드는,
메모리 모듈;
상기 메모리 카드와의 통신 채널을 형성하는 제1 입력 포트 및 제1 출력 포트; 및
상기 제1 입력 포트를 통해 전달되는 상기 메모리 카드로부터의 메모리 접근 요청이 대상을 판별하고, 상기 대상이 상기 메모리 확장 카드의 메모리 모듈인 경우 상기 메모리 모듈에 대하여 읽기/쓰기 동작을 수행하도록 구성되는 제2 주소 판별 유닛
을 포함하고,
상기 제2 주소 판별 유닛으로부터의 읽기 동작 수행에 따른 응답 데이터가 상기 제1 출력 포트를 통해 상기 메모리 카드로 전달되는, 메모리 카드.
The method of claim 2,
The memory expansion card connected to the memory card,
Memory module;
A first input port and a first output port forming a communication channel with the memory card; And
A memory access request from the memory card transmitted through the first input port determines a target, and when the target is a memory module of the memory expansion card, a read/write operation is performed on the memory module 2 Address determination unit
Including,
A memory card, wherein response data according to a read operation performed by the second address determination unit is transmitted to the memory card through the first output port.
제11항에 있어서,
상기 메모리 확장 카드는,
다른 메모리 확장 카드와의 통신 채널을 형성하는 제2 입력 포트 및 제2 출력 포트
를 더 포함하고,
상기 제2 주소 판별 유닛은 상기 메모리 카드로부터의 메모리 접근 요청의 대상이 다른 메모리 확장 카드인 경우, 상기 메모리 접근 요청을 상기 제2 출력 포트를 통해 다른 메모리 확장 카드로 전달하도록 구성되고,
상기 제2 출력 포트를 통해 상기 다른 메모리 확장 카드로 전달된 요청에 대한 응답 데이터가 상기 제2 입력 포트를 통해 입력된 다음에, 상기 제1 출력 포트를 통해 상기 메모리 카드로 전달되는, 메모리 카드.
The method of claim 11,
The memory expansion card,
A second input port and a second output port forming a communication channel with another memory expansion card
Including more,
The second address determination unit is configured to transmit the memory access request to another memory expansion card through the second output port when a target of the memory access request from the memory card is another memory expansion card,
A memory card, wherein response data for a request transmitted to the other memory expansion card through the second output port is input through the second input port and then transferred to the memory card through the first output port.
메모리 카드를 이용하여 데이터를 처리하는 방법으로서,
호스트 장치의 시스템 버스에 연결되어 있는 메모리 카드가 메모리 접근 요청을 수신하는 단계;
상기 메모리 접근 요청의 접근 대상이 상기 호스트 장치의 로컬 메모리인 경우, 상기 메모리 카드가 상기 로컬 메모리의 해당 메모리 영역에 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계; 및
상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역인 경우, 상기 호스트 장치의 로컬 메모리에 스토리지 공간이 캐싱된 메모리 영역으로 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계
를 포함하는, 데이터 처리 방법.
As a method of processing data using a memory card,
Receiving a memory access request by a memory card connected to the system bus of the host device;
When the access target of the memory access request is a local memory of the host device, the memory card accessing a corresponding memory area of the local memory and performing data read/write processing; And
When the access target of the memory access request is the address area of the storage of the host device, performing data read/write processing by accessing the memory area in which the storage space is cached in the local memory of the host device
Containing, data processing method.
제13항에 있어서,
상기 로컬 메모리의 해당 메모리 영역에 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계는, 상기 메모리 카드가 DMA를 사용해 상기 로컬 메모리의 해당 메모리 영역에 읽기/쓰기를 수행하는, 데이터 처리 방법.
The method of claim 13,
The step of performing data read/write processing by accessing a corresponding memory area of the local memory, the memory card performing read/write to a corresponding memory area of the local memory by using DMA.
제13항에 있어서,
상기 스토리지 공간이 캐싱된 메모리 영역으로 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계는,
상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있는 경우, 상기 메모리 카드가 DMA를 통해 상기 로컬 메모리에 상기 스토리지의 공간이 캐싱되어 있는 로컬 메모리 영역에 접근해서 읽기/쓰기를 수행하는 단계를 포함하는, 데이터 처리 방법.
The method of claim 13,
The step of performing data read/write processing by accessing the memory area in which the storage space is cached,
When the access object of the memory access request is an address area of the storage of the host device and the corresponding address area is cached, the memory card is in the local memory area in which the storage space is cached through DMA. A method of processing data comprising the step of accessing and performing read/write.
제13항에 있어서,
상기 스토리지 공간이 캐싱된 메모리 영역으로 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계는,
상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있지 않고, 요청된 동작이 쓰기 동작인 경우, 상기 메모리 카드가 DMA를 통해 상기 로컬 메모리의 스토리지 버퍼로 사용되는 메모리 영역에 접근해서 쓰기를 수행하는 단계
를 포함하며,
상기 쓰기를 수행하는 단계 이후에 상기 호스트 장치의 CPU가 해당 영역의 캐싱 절차를 수행하는, 데이터 처리 방법.
The method of claim 13,
The step of performing data read/write processing by accessing the memory area in which the storage space is cached,
When the access target of the memory access request is an address area of the storage of the host device, the address area is not cached, and the requested operation is a write operation, the memory card is transferred to the storage buffer of the local memory through DMA. Steps to access and write the used memory area
Including,
After the step of performing the writing, the CPU of the host device performs a caching procedure of a corresponding region.
제13항에 있어서,
상기 스토리지 공간이 캐싱된 메모리 영역으로 접근하여 데이터의 읽기/쓰기 처리를 수행하는 단계는,
상기 메모리의 접근 요청의 접근 대상이 상기 호스트 장치의 스토리지의 주소 영역이고 해당 주소 영역이 캐싱되어 있지 않고, 요청된 동작이 읽기 동작인 경우, 상기 메모리 카드가 이를 상기 호스트 장치의 CPU로 알려서, 상기 CPU가 상기 스토리지 주소 영역의 캐싱을 수행하고 도어벨 레지스터에 해당 캐싱 영역의 주소를 기록하여 캐싱이 완료되었음을 기록하게 하도록 하는 단계; 및
상기 캐싱이 완료되면, 상기 메모리 카드가 상기 로컬 메모리의 캐싱된 스토리지 공간에 DMA를 통해 접근하여 읽기 동작을 수행하는 단계
를 포함하는, 데이터 처리 방법.
The method of claim 13,
The step of performing data read/write processing by accessing the memory area in which the storage space is cached,
When the access target of the memory access request is an address area of the storage of the host device, and the address area is not cached, and the requested operation is a read operation, the memory card informs the CPU of the host device, and the Causing the CPU to perform caching of the storage address area and write the address of the corresponding caching area in a doorbell register to record that the caching is completed; And
Upon completion of the caching, performing a read operation by accessing the memory card to the cached storage space of the local memory through DMA
Containing, data processing method.
제13항에 있어서,
상기 메모리의 접근 요청의 접근 대상이 상기 메모리 카드에 장착된 메모리인 경우, 상기 메모리 카드 자체에서 데이터의 읽기/쓰기를 처리하는 단계
를 더 포함하는 데이터 처리 방법.
The method of claim 13,
When the access target of the memory access request is a memory installed in the memory card, processing data read/write in the memory card itself
Data processing method further comprising a.
제13항에 있어서,
상기 메모리의 접근 요청의 접근 대상이 상기 메모리 카드에 연결되는 메모리 확장 카드인 경우, 상기 접근 요청을 상기 메모리 확장 카드로 전달하고, 상기 메모리 확장 카드로부터의 데이터의 읽기/쓰기 처리에 따른 결과를 수신하는 단계
를 더 포함하는 데이터 처리 방법.
The method of claim 13,
When the access target of the memory access request is a memory expansion card connected to the memory card, the access request is transmitted to the memory expansion card, and a result of the read/write processing of data from the memory expansion card is received. Steps to
Data processing method further comprising a.
제19항에 있어서,
상기 메모리 확장 카드는 상기 접근 요청을 수신하고, 상기 접근 요청의 대상이 다른 메모리 확장 카드인 경우, 상기 접근 요청을 다른 메모리 확장 카드로 전달하고, 상기 메모리 확장 카드로부터의 데이터의 읽기/쓰기 처리에 따른 결과를 수신하여 상기 메모리 카드 또는 체인 방식으로 연결된 앞 단계의 메모리 확장 카드로 전달하는 단계
를 더 포함하는 데이터 처리 방법.










The method of claim 19,
The memory expansion card receives the access request, and when the object of the access request is another memory expansion card, transfers the access request to another memory expansion card, and reads/writes data from the memory expansion card. Receiving the result and transferring it to the memory card or the memory expansion card of the previous step connected in a chain manner
Data processing method further comprising a.










KR1020190071611A 2019-06-17 2019-06-17 Memory card and method for processing data using the card KR20200143922A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190071611A KR20200143922A (en) 2019-06-17 2019-06-17 Memory card and method for processing data using the card

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190071611A KR20200143922A (en) 2019-06-17 2019-06-17 Memory card and method for processing data using the card

Publications (1)

Publication Number Publication Date
KR20200143922A true KR20200143922A (en) 2020-12-28

Family

ID=74087073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190071611A KR20200143922A (en) 2019-06-17 2019-06-17 Memory card and method for processing data using the card

Country Status (1)

Country Link
KR (1) KR20200143922A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116880773A (en) * 2023-09-05 2023-10-13 苏州浪潮智能科技有限公司 Memory expansion device and data processing method and system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116880773A (en) * 2023-09-05 2023-10-13 苏州浪潮智能科技有限公司 Memory expansion device and data processing method and system
CN116880773B (en) * 2023-09-05 2023-11-17 苏州浪潮智能科技有限公司 Memory expansion device and data processing method and system

Similar Documents

Publication Publication Date Title
US9678918B2 (en) Data processing system and data processing method
US7028106B2 (en) Remapping routing information entries in an expander
US8645594B2 (en) Driver-assisted base address register mapping
TWI718969B (en) Memory device, memory addressing method, and article comprising non-transitory storage medium
US20190196989A1 (en) Method, Apparatus, and System for Accessing Memory Device
JP4401305B2 (en) Configuration definition setting method of disk array device and disk array device
CN115495389A (en) Storage controller, computing storage device and operating method of computing storage device
CN110114762B (en) Method and apparatus for accessing non-volatile memory as byte addressable memory
US10503657B2 (en) DIMM SSD Addressing performance techniques
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
CN110765060B (en) MDIO bus-to-parallel bus conversion method and device, equipment and medium
KR20200143922A (en) Memory card and method for processing data using the card
CN115203110A (en) PCIe function and method of operating the same
WO2021093249A1 (en) Method for external device to access computer memory
US11200172B2 (en) Storage system and method of controlling storage system
JP6704127B2 (en) Information processing equipment
EP4310683A1 (en) Method for executing read-write operation, and soc chip
KR102438319B1 (en) Apparatus and method for interfacing common memory
CN116955228A (en) Accelerator for processing write command
CN117648264A (en) Network card equipment and data transmission system
CN117591037A (en) Virtualized data access system, method, device and server
CN116225996A (en) Mapping system, mapping method, mapping equipment and medium
CN117009259A (en) L2P accelerator
CN114546902A (en) System, apparatus and method for multi-protocol based access to memory
CN117435535A (en) Storage system, main control chip, data storage method and data reading method

Legal Events

Date Code Title Description
A201 Request for examination