KR101923661B1 - 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 - Google Patents

플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 Download PDF

Info

Publication number
KR101923661B1
KR101923661B1 KR1020160041120A KR20160041120A KR101923661B1 KR 101923661 B1 KR101923661 B1 KR 101923661B1 KR 1020160041120 A KR1020160041120 A KR 1020160041120A KR 20160041120 A KR20160041120 A KR 20160041120A KR 101923661 B1 KR101923661 B1 KR 101923661B1
Authority
KR
South Korea
Prior art keywords
flash
memory
data
accelerator
host
Prior art date
Application number
KR1020160041120A
Other languages
English (en)
Other versions
KR20170114405A (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 KR1020160041120A priority Critical patent/KR101923661B1/ko
Priority to US15/184,179 priority patent/US10824341B2/en
Priority to CN201610577356.0A priority patent/CN107291424A/zh
Publication of KR20170114405A publication Critical patent/KR20170114405A/ko
Priority to US16/032,817 priority patent/US10831376B2/en
Application granted granted Critical
Publication of KR101923661B1 publication Critical patent/KR101923661B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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/0893Caches characterised by their organisation or structure
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

플래시 기반 가속기는 페이지 단위로 데이터를 저장하는 플래시 기반 비휘발성 메모리, 워드 또는 바이트 단위로 데이터를 저장하는 버퍼 서브시스템, 상기 플래시 기반 비휘발성 메모리와 상기 버퍼 서브시스템 사이에서의 데이터 이동을 관리하는 가속기 컨트롤러, 상기 버퍼 서브시스템에 저장된 데이터를 처리하는 복수의 프로세서, 그리고 상기 플래시 기반 비휘발성 메모리, 상기 버퍼 서브시스템, 상기 가속기 컨트롤러 및 상기 복수의 프로세서를 통합하는 네트워크를 포함한다.

Description

플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스{FLASH-BASED ACCELERATOR AND COMPUTING DEVICE INCLUDING THE SAME}
본 발명은 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스에 관한 것이다.
현재 많은 병렬 연산을 상대적으로 낮은 전력 소모로 수행할 수 있는 그래픽 처리 유닛(graphic processing unit, GPU) 및 MIC(many integrated core) 디바이스와 같은 많은 코어 기반의 가속기(manycore-based accelerator)가 널리 사용되고 있다. 이러한 가속기에서는 많은 수의 프로세싱 코어가 실행 컨트롤을 공유하면서 쓰레드 레벨 병렬화(thread-level parallelism) 및 데이터 레벨 병렬화(data-level parallelism)을 통해 수많은 조각의 데이터에 대해서 동일한 연산을 수행할 수 있다. 이에 따라 중앙 프로세싱 유닛(central processing unit, CPU)만 사용하는 시스템에 비해서, 가속기를 함께 사용하는 시스템에서는 상당한 속도 향상을 가져올 수 있다.
이와 같이 가속기는 전에 비해 많은 양의 데이터를 처리할 수 있으며, 데이터의 볼륨도 증가할 것으로 예상된다. 그런데 현재의 가속기는 호스트 메모리에 비해서 상대적으로 적은 크기의 온보드(on-board) 메모리를 채용하고 있다. 따라서 가속기는 많은 양의 데이터를 처리하기 위해서 호스트에 연결된 별도의 비휘발성 메모리, 예를 들면 솔리드 스테이트 디스트(solid state disk, SSD)를 사용하고 있다.
그러나 가속기와 비휘발성 메모리가 서로 완전히 분리되어 있으며 서로 다른 소프트웨어 스택에 의해 관리되므로, 가속기가 비휘발성 메모리로부터 데이터를 읽거나 비휘발성 메모리로 데이터를 쓰기 위해서는, 사용자 공간과 커널 공간 사이에 불필요한 많은 메모리 할당/해제 및 데이터 복사가 이루어진다. 또한 커널 모듈이 사용자 공간에 직접 접근할 수 없으므로, 커널 공간과 사용자 공간 사이의 메모리 관리 및 데이터 복사 오버헤드를 피할 수 없다. 또한 데이터 복사에 동반한 커널 모드와 사용자 모드의 스위칭 오버헤드로 인해 데이터 이동에 지연이 발생할 수 있다. 이러한 오버헤드로 인해 가속기의 성능에 비해서 실제 속도 향상 효과가 크지 않다는 문제점이 있다.
이러한 문제점을 해결하기 위해서 액티브 스토리지(active storage)의 형태로 특정 어플리케이션을 솔리드 스테이트 디스크(solid state disk, SSD)에 통합하는 기술이 연구되고 있다. 그러나 이러한 연구는 SSD와 같은 저장 장치에 초점을 두고 SSD 내에서 데이터를 처리하기 위해서 이미 존재하는 SSD 컨트롤러를 이용하거나 맞춤형(customized) 필드 프로그램 가능 게이트 어레이스(field-programmable gate arrays, FPGAs)를 도입하고 있으므로, SSD 제작 시에 이미 통합된 특정 어플리케이션만 실행할 수 있을 뿐, 범용 계산 어플리케이션을 데이터가 존재하는 플래시 근처에서 실행할 수 없다는 문제점이 있다.
본 발명이 이루고자 하는 과제는 다양한 어플리케이션을 실행할 수 있는 플래시 기반 코프로세서 가속기 및 이를 포함하는 컴퓨팅 디바이스를 제공하는 것이다.
본 발명의 한 실시예에 따르면, 호스트의 CPU의 기능을 보조하거나 상기 CPU와 별도로 데이터 프로세싱을 수행하는 플래시 기반 가속기가 제공된다. 상기 플래시 기반 가속기는 플래시 기반 비휘발성 메모리, 버퍼 서브시스템, 가속기 컨트롤러, 복수의 프로세서, 그리고 네트워크를 포함한다. 상기 플래시 기반 비휘발성 메모리는 페이지 단위로 데이터를 저장하고, 상기 버퍼 서브시스템은 워드 또는 바이트 단위로 데이터를 저장한다. 상기 가속기 컨트롤러는 상기 플래시 기반 비휘발성 메모리와 상기 버퍼 서브시스템 사이에서의 데이터 이동을 관리하고, 상기 복수의 프로세서는 상기 버퍼 서브시스템에 저장된 데이터를 처리한다. 상기 네트워크는 상기 플래시 기반 비휘발성 메모리, 상기 버퍼 서브시스템, 상기 가속기 컨트롤러 및 상기 복수의 프로세서를 통합한다.
상기 가속기 컨트롤러는 상기 플래시 기반 가속기와 상기 호스트를 연결하는 인터페이스의 베이스 어드레스 레지스터를 상기 버퍼 서브시스템 및 상기 복수의 프로세서 중 적어도 하나에 매핑하고 있으며, 상기 베이스 어드레스 레지스터에 기초하여서 상기 호스트로부터의 요청을 수신할 수 있다.
상기 가속기 컨트롤러는 상기 베이스 어드레스 레지스터의 제1값에 상기 버퍼 서브시스템을 매핑하고 있으며, 상기 제1값에 기초하여서 상기 호스트로부터의 데이터를 상기 버퍼 서브시스템으로 이동할 수 있다.
상기 가속기 컨트롤러는 상기 베이스 어드레스 레지스터의 제2값에 상기 복수의 프로세서 중 적어도 하나의 프로세서를 매핑하고 있으며, 상기 제2값에 기초하여서 상기 호스트로부터의 데이터의 유형을 통지할 수 있다.
상기 버퍼 서브시스템은, 상기 플래시 기반 비휘발성 메모리와 매핑되어 있는 제1 데이터 공간을 포함하는 제1 메모리, 그리고 상기 제1 데이터 공간과 상기 플래시 기반 비휘발성 메모리의 페이지를 매핑하기 위한 페이지 테이블을 저장하는 제2 메모리를 포함할 수 있다.
상기 제1 메모리는 상기 호스트로부터의 데이터가 다운로드되거나 상기 호스트로 데이터를 업로드하는 제2 데이터 공간을 더 포함할 수 있다.
상기 데이터는 상기 복수의 프로세서 중 적어도 하나의 프로세서에 의해 실행될 어플리케이션을 포함할 수 있다.
상기 페이지 테이블의 페이지 테이블 엔트리는 상기 플래시 기반 비휘발성 메모리의 물리적 플래시 페이지 번호에 매핑되어 있는 상기 제1 데이터 공간의 페이지 번호를 포함할 수 있다.
상기 페이지 테이블 엔트리는 상기 페이지 테이블 엔트리를 소유하는 소유자의 프로세서 식별자를 더 포함할 수 있다.
상기 플래시 기반의 비휘발성 메모리에 접근을 요청한 요청자의 프로세서 식별자가 상기 소유자의 프로세서 식별자와 다른 경우에, 상기 버퍼 서브시스템은 상기 요청자의 접근 요청을 거부할 수 있다.
상기 페이지 테이블 엔트리는 요청된 데이터가 상기 제1 데이터 공간에 존재하는지 상기 플래시 기반의 비휘발성 메모리에 존재하는지를 지시하는 현재 비트 플래그를 더 포함할 수 있다.
상기 제2 메모리는 상기 호스트로부터의 가상 어드레스로부터 획득되는 상기 플래시 기반 비휘발성 메모리의 논리적 페이지 번호를 상기 플래시 기반 비휘발성 메모리의 물리적 플래시 페이지 번호에 매핑하는 매핑 테이블을 더 포함할 수 있다.
상기 제2 메모리는 어플리케이션을 포함하는 섹션의 섹션 헤더를 더 포함하며, 상기 섹션 헤더는 대응하는 섹션이 사용하는 어드레스 공간의 범위를 지시하는 섹션 정보를 포함할 수 있다.
상기 호스트로부터 접근 요청된 어드레스가 상기 섹션 헤더의 상기 어드레스 공간의 범위 내에 있는 경우, 상기 버퍼 서브시스템은 상기 호스트로부터의 접근 요청을 거부할 수 있다.
본 발명의 다른 실시예에 따르면, 상기 플래시 기반 가속기, 상기 호스트, 그리고 상기 플래시 기반 가속기를 상기 호스트에 연결하는 인터페이스를 포함하는 컴퓨팅 디바이스가 제공된다.
본 발명의 또 다른 실시예에 따른 플래시 기반 가속기는, 플래시 기반 비휘발성 메모리, 상기 플래시 기반 비휘발성 메모리와 매핑되는 제1 데이터 공간을 포함하는 제1 메모리 및 상기 플래시 기반 비휘발성 메모리와 상기 제1 데이터 공간 사이의 매핑을 관리하는 컨트롤러를 포함하는 버퍼 서브시스템, 상기 버퍼 서브시스템에 저장된 데이터를 처리하는 복수의 프로세서, 그리고 상기 플래시 기반 비휘발성 메모리, 상기 버퍼 서브시스템, 상기 가속기 컨트롤러 및 상기 복수의 프로세서를 통합하는 네트워크를 포함한다.
상기 제1 메모리는 상기 호스트로부터의 어플리케이션을 저장하는 제2 데이터 공간을 더 포함할 수 있다.
상기 어플리케이션은 상기 복수의 프로세서 중 적어도 하나의 프로세서에 의해 실행될 수 있다.
상기 버퍼 서브시스템은 상기 플래시 기반 비휘발성 메모리의 페이지와 상기 제1 데이터 공간 사이의 매핑을 지시하는 페이지 테이블을 저장하는 제2 메모리를 더 포함할 수 있다.
상기 페이지 테이블의 페이지 테이블 엔트리는 상기 플래시 기반 비휘발성 메모리의 물리적 플래시 페이지 번호에 매핑되어 있는 상기 제1 데이터 공간의 페이지 번호를 포함할 수 있다.
본 발명의 한 실시예에 따르면, 복수의 프로세서와 플래시 기반 비휘발성 메모리를 물리적으로 통합하여서 플래시 기반 가속기를 형성함으로써, 데이터 복사/이동에 따른 오버헤드를 줄일 수 있다. 또한 복수의 프로세서와 플래시 기반 비휘발성 메모리가 통합함으로써 다양한 어플리케이션을 별도의 운영 체제 없이 플래시 기반 가속기에 실행할 수 있으며, 어플리케이션 실행 시에 프로세서가 직접 플래시 기반 비휘발성 메모리에 접근할 수 있다.
도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이다.
도 2는 본 발명의 한 실시예에 따른 가속기의 개략적인 블록도이다.
도 3은 도 2에 도시한 가속기에서 버퍼 서브시스템의 개략적인 블록도이다.
도 4는 도 2에 도시한 가속기에서 종단 브리지의 개략적인 블록도이다.
도 5는 본 발명의 한 실시예에 따른 가속기의 통신 인터페이스를 설명하는 도면이다.
도 6은 도 5에서 설명한 통신 인터페이스에서 NDP 커널 실행의 한 예를 나타내는 도면이다.
도 7은 본 발명의 한 실시예에 따른 가속기에서 어드레스 가상화를 위한 버퍼 서브시스템을 나타내는 도면이다.
도 8은 본 발명의 한 실시예에 따른 가속기에서의 어드레스 가상화를 설명하는 도면이다.
도 9 및 도 10은 본 발명의 한 실시예에 따른 가속기에서의 데이터 일관성을 설명하기 위한 도면이다.
도 11은 두 개의 NDP 커널의 한 예를 나타내는 도면이다.
도 12는 정적 커널간 스케줄링의 한 예를 나타내는 도면이다.
도 13은 동적 커널간 스케줄링의 한 예를 나타내는 도면이다.
도 14는 두 개의 NDP 커널의 다른 예를 나타내는 도면이다.
도 15는 인오더 커널내 스케줄링의 한 예를 나타내는 도면이다.
도 16은 아웃오브오더 커널내 스케줄링의 한 예를 나타내는 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이다. 도 1은 가능한 컴퓨팅 디바이스의 한 예이며, 본 발명의 실시예에 따른 컴퓨팅 디바이스의 다른 다양한 구조로 구현될 수 있다.
도 1을 참고하면, 본 발명의 한 실시예에 따른 컴퓨팅 디바이스는 CPU(100), CPU측 메모리(200) 및 플래시 기반 가속기(accelerator)(300)를 포함한다. 가속기(300)는 범용 CPU와는 다른 보조 데이터 프로세싱 디바이스로서, CPU의 기능을 보조하여서 데이터 프로세싱을 수행하거나 CPU와 별도로 데이터 프로세싱을 수행할 수 있는 컴퓨터 하드웨어일 수 있다. 이러한 코프로세서 (Coprocessor)기반 가속기(300)의 한 예로 그래픽 처리 유닛(graphic processing unit, GPU), MIC(many integrated core) 디바이스 등이 있다.
컴퓨팅 디바이스는 메모리(200)와 가속기(300)를 CPU(110)와 연결하기 위해서 노스브릿지(northbridge)(400)를 더 포함할 수 있다. 가속기(300)는 CPU(300) 측에 위치한 노스브릿지(400)에 연결된다. 예를 들면, 가속기(300)는 PCIe(peripheral component interconnect express) 인터페이스를 통해서 노스브릿지(400)에 연결될 수 있다. 노스브릿지(400)는 메모리 컨트롤러 허브(memory controller hub, MCH)로 불리기도 한다.
전형적인 가속기의 경우 병렬 처리를 위한 복수의 프로세서만 포함하지만, 본 발명의 한 실시예에 따른 가속기(300)는 플래시 기반의 가속기로서, 가속기의 코어에 해당하는 복수의 프로세서(310)와 플래시 기반 비휘발성 메모리(320)를 물리적으로 통합한 형태를 가진다.
어떤 실시예에서 가속기(300)의 각 프로세서로 경량 프로세서(light-weight processor, LWP)가 사용될 수 있다. 한 실시예에서 LWP는 고속 네트워크를 통해 연결되는 저전력 프로세서일 수 있다. 이 경우, 고속 네트워크를 통해 LWP는 가속기(300) 내의 가속기 컨트롤러 및 플래시 기반 비휘발성 메모리와 같은 다른 내부 자원과 통신할 수 있다. 앞으로 설명의 편의상 가속기(300)의 각 프로세서를 LWP로 설명한다.
어떤 실시예에서, CPU(100) 및 메모리(200)를 포함하는 시스템을 호스트(host)라 할 수 있다.
컴퓨팅 디바이스는 다양한 어플리케이션을 가속기(300)에 오프로드(offload)하여서 가속기(300)가 해당 어플리케이션을 직접 실행할 수 있다. 예를 들면 이러한 어플리케이션은 호스트로부터의 계산(computation)을 가속기(300)에 오프로드(offload)하는 데이터 근접 프로세싱(near data processing, NDP)을 위한 어플리케이션(NDP 어플리케이션)일 수 있다. 앞으로 설명의 편의상 어플리케이션을 NDP 어플리케이션으로 설명하며, NDP 어플리케이션은 NDP 커널로 불릴 수 있다. 따라서 컴퓨티 디바이스는 NDP 커널을 오프로드하거나 데이터의 읽기/쓰기(write/read)를 처리하기 위해서 가속기(300)에 접근할 수 있다. 이 경우, 가속기(300)의 프로세서는 NDP 커널을 실행하면서 가속기(300)의 비휘발성 메모리에 직접 접근할 수 있으므로, 종래의 가속기가 외부에 존재하는 비휘발성 메모리로부터 데이터를 읽거나 비휘발성 메모리로 데이터를 쓰기 위해서 필요한 많은 메모리 할당/해제 및 데이터 복사가 필요 없게 된다.
다음 본 발명의 한 실시예에 따른 가속기에 대해서 도 2 내지 도 4를 참고로 하여 설명한다.
도 2는 본 발명의 한 실시예에 따른 가속기의 개략적인 블록도이며, 도 3은 도 2에 도시한 가속기에서 버퍼 서브시스템의 개략적인 블록도이고, 도 4는 도 2에 도시한 가속기에서 종단 브리지의 개략적인 블록도이다.
도 2를 참고하면, 가속기(300)는 복수의 LWP(310), 플래시 기반의 비휘발성 메모리(320), 버퍼 서브시스템(buffer subsystem, BS)(330) 및 가속기 컨트롤러(340)를 포함한다.
어떤 실시예에서 LWP(310)는 긴 명령어 워드(very long instruction word, VLIW) 아키텍처 상에 설치될 수 있다. 복수의 LWP(310)는 종래의 다수 프로세서 아키텍처와 유사하게 모두 연결되어 있으며 단일 메모리, 즉 버퍼 서브시스템(330)을 공유할 수 있다. 한 실시예에서, 각 LWP(310)가 수행하는 작업에 기초해서, 복수의 LWP(310)는 마스터 LWP(311), 플래시 LWP(312) 및 워커(worker) LWP(313)로 분류될 수 있다. 마스터 LWP는 NDP 커널 오프로딩 및 실행 스케줄링과 같은 관리 업무를 수행하며, 플래시 LWP는 플래시 입출력(input/output, I/O) 관리를 수행하고, 워커 LWP는 플래시 주변 데이터 처리(data processing near flash)를 수행할 수 있다.
플래시 기반의 비휘발성 메모리(320)는 복수의 플래시 패키지(flash packages)(321)를 포함할 수 있다. 플래시 기반의 비휘발성 메모리(320)는 복수의 플래시 패키지(321)를 네트워크에 통합함으로써 내부 스토리지 풀(internal storage pool)을 구축한다. 이러한 플래시 기반의 비휘발성 메모리(320)를 앞으로 플래시 백본(flash backbone)이라 한다.
버퍼 서브시스템(330)은 페이지 단위, 예를 들면 4KB 내지 16KB 단위의 페이지 단위로만 데이터를 읽고 쓸 수 있는 플래시 백본(320)과 워드(word)나 바이트(byte) 단위로 데이터를 읽고 쓸 수 있는 호스트나 LWP(310) 사이에서 버퍼 메모리로 동작한다.
어떤 실시예에서, 도 3에 도시한 것처럼 버퍼 서브시스템(330)은 제1 메모리(331), 제2 메모리(332) 및 메모리 컨트롤러(333)를 포함할 수 있다.
한 실시예에서, 제1 메모리(331)는 워드나 바이트 단위의 접근을 허용하는 메모리로, 예를 들면 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM)와 같은 저전력 메모리가 사용될 수 있다. 이러한 제1 메모리는 플래시 관리 및 데이터의 프리페칭/버퍼링(prefetching/buffering)을 위해 사용될 수 있다. 제2 메모리(332)는 예를 들면 L2 캐시만큼 빠른 처리를 위해서 사용되는 메모리로, 예를 들면 고속 스크래치패드 메모리(scratchpad memory, SPM)가 사용될 수 있다. 이러한 제2 메모리는 L2 캐시만큼 빨리 프로세서 네트워크 상에서 I/O 요청을 관리하기 위해서 사용될 수 있다. 앞으로 제1 메모리와 제2 메모리를 각각 저전력 메모리와 스크래치패드 메모리라 한다. 메모리 컨트롤러(333)는 저전력 메모리(331)와 스크래치패드 메모리(332)의 관리를 위해서 제공될 수 있다.
가속기 컨트롤러(340)는 가속기(300)의 LWP(310)과 플래시 백본(320) 사이의 데이터 이동 또는 호스트와 가속기(300)의 플래시 백본(320) 사이의 데이터 이동을 관리하며, 페이지 단위의 데이터와 워드나 바이트 단위의 데이터 사이의 변환을 관리한다. 호스트 또는 LWP(310)로부터 데이터 읽기 요청이 있는 경우, 가속기 컨트롤러(340)는 해당하는 데이터가 이미 버퍼 서브시스템에 저장되어 있으면 버퍼 서브시스템(330)으로부터 데이터를 읽어서 호스트 또는 LWP(310)로 전달하고, 해당하는 데이터가 이미 버퍼 서브시스템(330)에 저장되어 있지 않으면 플래시 백본에서 해당하는 데이터를 워드나 바이트 단위로 변환하여서 버퍼 서브시스템(330)에 저장하고 버퍼 서브시스템(330)에서 해당하는 데이터를 읽어서 호스트 또는 LWP(310)로 전달한다. 호스트 또는 LWP(310)로부터 데이터 쓰기 요청이 있는 경우, 가속기 컨트롤러는 해당하는 데이터를 버퍼 서브시스템(330)에 쓰고, 버퍼 서브시스템(330)에 쓴 데이터를 페이지 단위로 변환하여서 플래시 백본(320)으로 전달한다.
이와 같이 본 발명의 한 실시예에 따르면, 가속기에서 페이지 단위의 읽기/쓰기를 수행하는 플래시 백본의 데이터를 버퍼 서브시스템에 매핑함으로써, 워드 또는 바이트 단위로 읽기/쓰기를 수행하는 호스트 또는 LWP(310)가 추가적인 동작 없이 플래시 백본(320)에서 데이터를 읽거나 플래시 백본(320)에 데이터를 쓸 수 있다.
어떤 실시예에서, 가속기(300)가 PCIe 인터페이스를 통해서 노스브릿지(400)에 연결되는 경우, 가속기 컨트롤러(340)는 PCIe 컨트롤러일 수 있다.
다시 도 2를 참고하면, 어떤 실시예에서 복수의 LWP(310), 플래시 백본(320), 버퍼 서브시스템(330) 및 가속기 컨트롤러(340)는 네트워크(350, 360, 370)를 통해 서로 연결되어 있을 수 있다. 복수의 LWP(310)와 버퍼 서브시스템(330)이 네트워크(350)에 연결되고, 네트워크(350)는 플래시 백본(320)이 연결된 네트워크(360) 및 가속기 컨트롤러(340)가 연결된 네트워크(370)에 네트워크 스위치(351, 352)를 통해 연결될 수 있다.
한 실시예에서 대형 네트워크가 부분 크로스바 스위치(partial crossbar switch)를 사용하여 크로스바 구성(crossbar configuration)의 두 개의 세트로 분리되어 네트워크(350, 360, 370)가 형성될 수 있다. 두 개의 세트는 다중 간소화된 크로스바(multiple simplified-crossbars (tier-2))와 스트리밍 크로스바(streaming crossbar (tier-1))일 수 있다. 이때, 복수의 LWP(310)를 통합하는 네트워크(350)가 티어 1(tier-1) 네트워크이고, 티어 1 네트워크는 고속 네트워크용으로 설계되어 있을 수 있다. 네트워크(360, 370)가 티어 2(tier-2) 네트워크일 수 있다. 이때 티어 2 네트워크는 플래시 백본과 인터페이스(예를 들면 PCIe) 통신을 수용하기에 충분한 수율을 가질 수 있다.
어떤 실시예에서 플래시 백본(320)의 플래시 패키지는 본 발명자의 "Triple-A: A Non-SSD Based Autonomic All-Flash Array for High Performance Storage Systems" 논문에서 정의된 플래시 인라인 메모리 모듈(flash inline memory module, FIMM)를 사용하여서 형성될 수 있다. 본 논문은 참조로서 여기에 통합된다.
FIMM에서는 복수의 플래시 패키지가 단일 데이터 채널을 통해 통합된다. 이때, 단일 데이터 채널은 플래시 어드레스와 트랜잭션 명령을 수용할 수 있는 16개의 I/O 핀을 공유한다. 실제 각 플래시 패키지가 자신의 I/O 컨트롤 로직과 데이터 레지스터의 세트를 가지므로, 플래시를 위한 모든 저전력 트랜잭션은 레디/비지(ready/busy, R/B) 핀 및 칩 인에이블(chip enable, CE) 핀을 거쳐 외부에서 처리될 수 있다. 그러므로 FIMM은 쉽게 대체 가능한 아키텍처를 정의할 뿐만 아니라 모든 플래시 인터널을 호스트에 노출할 수 있는 높은 포텐셜을 제공한다.
FIMM의 표준은 기계적인 인터페이스와 신호 그룹을 정의하고 있지만, 위 논문에서 정의한 FIMM의 클록 주파수와 I/O 핀의 개수는 본 발명의 실시예에 따른 플래시 패키지에 FIMM을 적용하는 경우와 다를 수 있다. 이 차이를 보완하기 위해서, 어떤 실시예에서는 도 2 및 도 4에 도시한 것처럼 각 FIMM에 대해서 종단 브리지(endpoint bridge)를 추가할 수 있다.
종단 브리지는 플래시 백본으로 수신되는 I/O 요청을 FIMM을 위한 클록 도메인으로 변경한다. 도 4에 도시한 것처럼, 종단 브리지는 플래시 인터페이스 계층(flash interface layer, FIL), 송수신 인터페이스 계층(send/receive interface layer), 인바운드 태그 큐 및 아웃바운드 태그 큐를 포함한다. 플래시 인터페이스 계층은 플래시 패키지, 즉 FIMM와 인터페이스를 담당하며, 송수신 인터페이스 계층은 네트워크(370)를 통한 송수신을 담당한다. 인바운드 태그 큐 및 아웃바운드 태그 큐는 I/O 요청을 버퍼링하는데 사용된다. 클록 도메인 변환 동안, 인바운드 태그 큐 및 아웃바운드 태그 큐는 플래시 트랜잭션을 처리하고, 네트워크를 통해 대응하는 데이터를 수신하거나 전달할 수 있다.
다음 본 발명의 한 실시예에 따른 가속기의 통신 인터페이스에 대해서 도 5 및 도 6을 참고로 하여 설명한다.
도 5는 본 발명의 한 실시예에 따른 가속기의 통신 인터페이스를 설명하는 도면이며, 도 6은 도 5에서 설명한 통신 인터페이스에서 NDP 커널 실행의 한 예를 나타내는 도면이다.
도 5를 참고하면, 가속기 컨트롤러(340)가 호스트로부터 요청을 수신하고, 가속기(300)의 LWP(310)가 요청을 처리한다. 가속기 컨트롤러(340)는 물리 계층(physical layer, PHY)(341)과 코어(core)(342)를 포함한다.
코어(342)에는 가속기(300)와 호스트를 연결하는 인터페이스의 베이스 어드레스 레지스터(base address register, BAR), 예를 들면 PCIe 베이스 어드레스 레지스터가 매핑되어 있을 수 있다. 어떤 실시예에서 코어(342)의 BAR1 값을 가지는 베이스 어드레스 레지스터에는 버퍼 서브시스템(330)이 매핑되어 있고, BAR2 값을 가지는 베이스 어드레스 레지스터에는 마스터 LWP(311)의 프로세서간 통신 인터럽트 레지스터(interprocess communication interrupt register, IPC-IR)가 매핑되어 있을 수 있다. 이러한 베이스 어드레스 레지스터를 통해서 가속기(300)의 버퍼 서브시스템(330), 특히 버퍼 서브시스템(330)의 저전력 메모리(331)와 마스터 LWP(311)의 IPC-IR이 가속기 컨트롤러(340)를 통해 호스트로 노출될 수 있다. 저전력 메모리(331)는 가속기의 콘텐트 마이그레이션을 처리하고, 마스터 LWP(311)의 IPC-IR은 가속기의 계산 제어를 처리할 수 있다.
가속기(300)와 호스트 사이의 통신 시작 시에 가속기 컨트롤러(340)의 PHY(341)는 호스트로부터 수신되는 요청을 코어로 전달한다. 이때, PHY(341)는 인터페이스 타이밍 필요조건, 예를 들면 PCIe 타이밍 필요조건을 처리할 수 있다. 코어(342)는 호스트로부터의 데이터를 파싱/결집하고(parse/marshal), 이들을 호스트가 지시하는 베이스 어드레스 레지스터(BAR1, BAR2)에 기초하여 버퍼 서브시스템(330) 또는 마스터 LWP(311)의 IPC-IR로 전달한다.
호스트는 베이스 어드레스 레지스터(BAR1)를 지시하여서 데이터를 버퍼 서브시스템(330)으로 이동(migration)한다. 호스트가 데이터를 버퍼 서브시스템(330)으로 이동하는 것을 완료하면, 호스트는 베이스 어드레스 레지스터(BAR2)를 지시하여서 마스터 LWP(311)로 마이그레이션의 완료를 통지할 수 있다. 어떤 실시예에서 호스트는 마스터 LWP(311)의 IPC-IR을 다른 이벤트 식별자(identifier, ID)로 갱신함으로써 마이그레이션의 완료를 통지할 수 있다.
호스트가 NDP 커널을 오프로드하는 경우, 마스터 LWP(311)는 NDP 커널 실행을 준비하고, 워커 LWP(313)로 NDP 커널 실행을 지시한다. 이 경우, 이벤트 ID는 마이그레이션된 데이터가 NDP 커널의 실행 가능한 이미지(executable image)라고 지시할 수 있다.
이와는 달리 호스트가 I/O 서비스를 요청하는 경우, 마스터 LWP(311)는 I/O 서비스를 위한 플래시 실행 인터페이스를 거쳐 플래시 LWP(312)에 신호를 보내고, 플래시 LWP(312)는 플래시 백본(320) 상에서 데이터 읽기/쓰기를 실행한다. 이 경우, 이벤트 ID는 마이그레이션된 데이터가 I/O 서비스라고 지시할 수 있다. I/O 서비스에 따라 데이터 읽기/쓰기가 수행될 플래시 백본(320)의 동일한 장소에서 데이터를 처리하는 워커 LWP(313)가 있다면, I/O 서비스에 일관성(coherent) 이슈가 제기될 수 있다. 이를 위해, 메모리 접근 승인 제어가 플래시 LWP(312)와 마스터 LWP(311)에 의해 함께 수행될 수 있다. 메모리 접근 승인 제어에 대해서는 아래에서 상세하게 설명한다.
한편, 도 5에 도시한 것처럼, NDP 커널은 NDP 디스크립션 테이블(NDP description table, NDT)에 의해 마스터 LWP(311)로 제시될 수 있다. 어떤 실시예에서 NDP 디스크립션 테이블은 ELP(executable and linkable format)와 유사한 형태를 가질 수 있다.
NDP 디스크립션 테이블은 NDP 커널 코드(예를 들면 .text)와 같은 미리 정의된 섹션을 포함하는 실행 파일 및 섹션 헤더를 포함할 수 있다. 섹션 헤더는 대응하는 섹션의 이름, 시작 어드레스 및 길이와 같은 섹션 정보를 포함한다. 어떤 실시예에서, NDP 디스크립션 테이블의 섹션 헤더는 ELF와 달리 NDP 커널이 사용하는 입력 어레이 변수를 위한 어드레스 공간을 정의하는 .input 정보 및 NDP 커널이 사용하는 출력 어레이 변수를 위한 어드레스 공간을 정의하는 .output 정보를 제공할 수 있다.
도 5를 참고로 하여 설명한 것처럼, 호스트가 NDP 커널을 버퍼 서브시스템(330)으로 오프로드하면, NDP 커널은 NDP 디스크립션 테이블에 의해 마스터 LWP(311)로 제시된다. 그러면 도 6에 도시한 한 것처럼, 마스터 LWP(311)는 먼저 컨트롤 레지스터(control register)를 통해 타깃 워커 LWP(313)를 프리즈(freeze)한다(S610). 다음, 마스터 LWP(311)는 NDP 디스크립션 테이블을 파싱하여서 버퍼 서브시스템(330)으로부터 타깃 NDP 커널(예를 들면 .text)을 로드하고, 로드한 NDP 커널을 워커 LWP(313)의 L2 캐시에 할당한다(S620). 또한 마스터 LWP(311)는 섹션 헤더의 .input 및 .output을 버퍼 서브시스템(330), 즉 버퍼 서브시스템(330)의 스크래치패드 메모리(332)로 옮겨서(S630) 플래시 백본(320)의 적절한 어드레스 공간을 관리한다(S640). 또한 .input 및 .output 정보에 기초하여서 버퍼 서브시스템(330)의 저전력 메모리(331)에 어드레스 공간에 대응하는 공간이 할당되어 플래시 백본(320)의 어드레스 공간과 매핑된다(S640). 다음 마스터 LWP(311)는 워커 LWP(313)의 부트 어드레스 레지스터(boot address register)를 통해 NDP 커널(.text)의 시작 어드레스를 갱신하고, 컨트롤러 레지스터를 다시 리셋하고, 타깃 LWP(313)의 IPC-IR을 트리거함으로써 NDP 커널을 론치한다(S650). 이에 따라 NDP 커널이 가속기(300)로 오프로드되어 워커 LWP(313)에 의해 실행될 수 있으며, 매핑된 플래시 백본(320)의 어드레스 공간과 버퍼 서브시스템(330)의 공간을 이용해서 NDP 커널 실행 시에 데이터의 읽기/쓰기가 수행될 수 있다.
플래시 LWP(312)가 I/O 요청을 처리하므로, 스크래치패드 메모리(332) 상에 메시지 버퍼 메커니즘을 실현하는 큐 서브시스템(q-subsys)을 플래시 실행 인터페이스로서 제공할 수 있다. 큐 서브시스템(q-subsys)은 create(), open(), alloc_msg(), put(), delete_msg() 및 delete()와 같은 일반적인 큐 인터페이스를 제공할 수 있다. create(), open(), alloc_msg(), put(), delete_msg() 및 delete()는 각각 큐를 생성하고, 큐를 열며, 메시지를 할당하고, 메시지를 타깃으로 보내며, 메시지를 삭제하고, 큐를 삭제한다. 이러한 큐 서브시스템(q-subsys)은 마스터 LWP(311)와 버퍼 서브시스템(330)을 위한 아비트레이터(arbitrator)를 가지는 두 개의 양방향 I/O 버퍼에 의해 형성될 수 있다. 이러한 일반적인 큐 API(application programming interface)를 이용하여서, 마스터 LWP(311)와 버퍼 서브시스템(330)은 다른 인터페이스 프로토콜 구현 없이 플래시 LWP(312)와 통신할 수 있다.
이와 같이 본 발명의 한 실시예에 따르면 다양한 NDP 커널을 가속기(300)에 오프로드하여서 실행할 수 있으며, 가속기(300)는 NDP 커널의 실행 시에 호스트와의 추가적인 데이터 복사/이동 과정 없이 플래시 백본(320)으로부터 데이터를 읽거나 플래시 백본(320)으로 데이터를 쓸 수 있다.
다음 본 발명의 한 실시예에 따른 가속기(300)에서 플래시 백본(320)과 버퍼 서브시스템(330)의 매핑을 위한 어드레스 가상화(address virtualization)에 대해서 도 7, 도 8, 도 9 및 도 10을 참고로 하여 설명한다.
도 7은 본 발명의 한 실시예에 따른 가속기에서 어드레스 가상화를 위한 버퍼 서브시스템을 나타내는 도면이고, 도 8은 본 발명의 한 실시예에 따른 가속기에서의 어드레스 가상화를 설명하는 도면이다. 도 9 및 도 10은 본 발명의 한 실시예에 따른 가속기에서의 데이터 일관성을 설명하기 위한 도면이다.
플래시 어드레스 가상화(flash address virtualization)를 위해서 플래시 어드레스 공간을 일반적인 워킹 메모리 공간과 호환되도록 하는 머신(예를 들면, 소프트웨어)가 도입될 수 있으며, 이러한 머신은 메모리 컨트롤러(333)에 구현될 수 있다. 아래에서 메모리 컨트롤러(333)의 동작으로 설명되는 부분은 이 머신에 의해서 실행될 수 있다.
구체적으로, 도 7을 참고하면, 버퍼 서브시스템(330)의 저전력 메모리(331)는 NDP 데이터 공간(NDP data space)(331a)과 플래시 데이터 공간(flash data space)(331b)으로 분할되고, 플래시 데이터 공간(331b)과 플래시 백본(320) 사이에 어드레스가 매핑되어 있을 수 있다. 저전력 메모리(331)의 NDP 데이터 공간(331a)은 베이스 어드레스 레지스터(예를 들면 도 5의 BAR1)을 통해 호스트에 노출될 수 있으며, NDP 커널의 실행 파일(executables) 또는 I/O 요청을 호스트로 업로드하거나 호스트로부터 다운로드할 수 있다. 두 개의 서로 다른 어드레스 도메인을 매핑하기 위해서, 버퍼 서브시스템(330)의 스크래치패드 메모리(332)는 저전력 메모리(331)의 플래시 데이터 공간(331b)과 플래시 백본(320)의 페이지를 매핑하기 위해서 페이지 테이블(332a)을 관리한다.
스크래치패드 메모리(332)에서 관리하는 페이지 테이블(332a)의 페이지 테이블 엔트리(page table entry, PTE)는 플래시 백본(320)의 물리적 플래시 페이지 번호(FPN)에 매핑되는 플래시 데이터 공간(331b)의 페이지 번호(PNF), 현재(present) 비트(P), 상기 페이지 테이블 엔트리를 소유하는 소유자의 LWP ID(LID) 및 더티(dirty) 비트(D)를 포함할 수 있으며, 수신하는 메모리 요청의 가상 어드레스에 의해 참조될 수 있다. 이 가상 어드레스는 메모리 컨트롤러(333)가 플래시 LWP(312)로 메시지를 보내기 위해서 필요로 하는 논리적 페이지 번호(logical page number, LPN)를 얻는데 사용될 수 있다.
또한 스크래치패드 메모리(332)는 섹션 헤더(332b)와 매핑 테이블(332c)을 더 포함할 수 있다. 섹션 헤더(332b)는 대응하는 섹션의 이름, 시작 어드레스 및 길이와 같은 섹션 정보를 포함한다. 섹션은 NDP 커널 코드(예를 들면 .text)와 같이 미리 정의된 실행 파일에 해당한다. 매핑 테이블(332c)은 플래시 번역 레이어(flash translation layer, FTL)에서 제공되며, 호스트가 사용하는 가상 어드레스(즉, 논리적 어드레스)를 플래시가 노출하는 물리적 어드레스로 매핑한다. 이를 위해 매핑 테이블은 논리적 페이지 번호와 물리적 플래시 페이지 번호(flash page number, FPN) 사이의 매핑을 제공한다.
NDP 데이터 공간(331a)은 마스터 LWP(311)에 의해 사용되고, 매핑 테이블은 플래시 LWP(312)에 의해 사용되고, 플래시 데이터 공간(331b) 및 페이지 테이블은 워커 LWP(313)에 의해 사용될 수 있다.
도 8을 참고하면, NDP 커널 실행에 의해 요청된 메모리 접근이 워커 LWP(313)의 L1 캐시에서 미스(miss)가 난 경우, 메모리 접근은 메모리 컨트롤러(333)에서 직접 진행한다(S810), 메모리 컨트롤러(333)는 버퍼 서브시스템(330)의 스크래치패드 메모리(332)에서 섹션 헤더(332b)를 체크한다(S820). 메모리 접근을 위한 메모리 어드레스가 섹션 헤더에 의해 정의된 어드레스 범위(예를 들면, 섹션 헤더의 시작 어드레스(start)와 길이(length)에 의해 정의되는 어드레스 범위) 내에 있으면, 메모리 컨트롤러(333)는 메모리 어드레스에 의해 인덱스되는 페이지 테이블 엔트리(332a)에 질의한다(S830).
페이지 테이블 엔트리의 LID가 메모리 접근을 요청한 요청자의 LID와 다르면, 메모리 컨트롤러(333)는 메모리 접근 요청을 거절함으로써 버퍼 서브시스템을 보호한다. 즉, 스크래치패드 메모리의 페이지 테이블을 소유하는 LWP와 관련이 없는 요청자가 요청하는 경우 승인된 접근 요청이 아니므로, 메모리 컨트롤러(333)는 메모리 접근 요청을 거절함으로써 버퍼 서브시스템을 보호할 수 있다.
페이지 테이블 엔트리의 LID가 요청자의 LID와 동일하면(즉, 승인된 접근 요청이면), 메모리 컨트롤러(333)는 현재 비트(P) 플래그를 검토한다. 현재 비트(P) 플래그가 '0'이면 메모리 컨트롤러(333)는 플래시 LWP(312)로 읽기를 요청하는 메시지를 전달한다(S840). 이때, 플래시 LWP(312)로 메시지를 보내기 위해서 필요한 논리적 페이지 번호(LPN)는 호스트로부터의 메모리 접근 요청의 가상 어드레스를 플래시 페이지의 크기로 나눔으로써 획득될 수 있다.
그러면 플래시 LWP(312)는 매핑 테이블(332c)을 사용하여서 논리적 페이지 번호(LPN)를 물리적 플래시 페이지 번호(FPN)로 번역하고(S850), 플래시 백본(320)의 물리적 플래시 페이지 번호(FPN)에서 대응하는 데이터를 읽어서 플래시 데이터 공간(331b)의 페이지 번호로 가져온다(S860). 데이터가 플래시 데이터 공간에 존재함에 따라, 메모리 컨트롤러(333)는 현재 비트(P) 플래그를 갱신하고(S870), 데이터를 워커 LWP(313)의 L1 캐시로 공급한다(S880).
메모리 컨트롤러(333)가 현재 비트(P) 플래그를 검토할 때, 현재 비트(P) 플래그가 '1'이면(S840) 대응하는 데이터가 플래시 데이터 공간에 존재하는 경우이므로, 메모리 컨트롤러(333)는 플래시 백본(320)으로부터 데이터를 가져올 필요 없이 플래시 데이터 공간(331b)에 있는 데이터를 워커 LWP(313)의 L1 캐시로 공급할 수 있다.
앞서 설명한 것처럼, 다수의 워크 LWP(313)가 플래시의 동일한 위치에 접근을 요청하는 경우, 페이지 테이블 엔트리(332a)의 LID와 요청자의 LID를 비교함으로써 플래시 데이터 공간(331b)의 일관성을 유지할 수 있다. 그러나 호스트와 워커 LWP(313)에 의해 병렬로 메모리 접근이 요청되는 경우 일관성이 손상될 수 있다. 도 9 및 도 10의 예를 고려하면, 가상 어드레스 0x11에서 데이터를 읽으려는 호스트의 요청에 기초하여서, 플래시 LWP(312)는 매핑 테이블을 룩업하여 가상 어드레스 0x11로부터 획득되는 논리적 페이지 번호(LPN) 0x0를 플래시 페이지 번호(FPN) 0x80로 번역하고, 플래시 백본(320)의 플래시 페이지 번호(FPN) 0x80로부터 데이터(A[])를 제공한다. 이 경우, 워커 LWP(313)가 플래시 데이터 공간(331b)의 페이지 번호(PNF) 0x22에 위치한 데이터(B[])를 가상 어드레스 0x11에 쓰려고 할 수 있다. 그러면 데이터(A[])가 워커 LWP(313)에 의해 변경될 수 있다. 즉, 호스트와 워커 LWP(313)가 동시에 데이터(A[])에 접근함으로써 데이터의 일관성이 손상될 수 있다. 이러한 상황을 방지하기 위해서, 어떤 실시예에서 도 10에 도시한 것처럼 플래시 LWP(312)는 호스트 요청에 대해서 스크래치패드 메모리(332)에서의 섹션 헤더(332b)를 검토한다(S1010). 호스트 요청의 가상 어드레스로부터 획득된 타깃 논리적 페이지 번호(LPN)가 스크래치패드 메모리(332)의 섹션 헤더(332b)가 기술하는 어떤 NDP 커널이 사용하는 어드레스 공간의 범위 내에 있다면, 가속기(300)는 호스트 요청의 접근을 거부하고(S1020), 거부를 호스트로 알린다(S1030). 예를 들면, 도 9에 도시한 예처럼, 호스트가 가상 어드레스 0x11에서 데이터를 읽으려고 요청하는 경우, 섹션 헤더(332b)를 참고하면 가상 어드레스 0x11은 시작 어드레스가 0x10이고 길이가 5인 섹션의 어드레스 공간의 범위 내에 있으므로, 가속기(300)는 호스트 요청의 접근을 거부할 수 있다. 이에 따라 플래시 백본(320)의 데이터 일관성을 유지할 수 있다.
이와 같이, 복수의 LWP(310)가 다양한 NDP 커널을 실행할 때, 버퍼 서브시스템(330)을 사용하여서 플래시 백본(320)이 일반적인 워킹 메모리 공간과 호환되도록 할 수 있다. 그리고 이러한 기능은 버퍼 서브시스템(330)의 메모리 컨트롤러(333)에 구현된 머신에 의해 실행될 수 있으므로, 별도의 운영 체제 없이 복수의 LWP(310)와 플래시 백본(320)을 물리적으로 통합할 수 있다.
한편, 단일 명령어 다중 쓰레드(single instruction multiple threads, SIMT) 모델을 사용하는 전통적인 가속기와 달리, 본 발명의 한 실시예에 따른 가속기의 LWP는 서로 다른 유형의 NDP 커널을 병렬로 실행할 수 있으며, 서로 다른 유형의 NDP 커널 각각은 다양한 연산 함수를 포함할 수 있다. 이는 사용자가 다이버스(diverse) 어플리케이션을 오프로드할 수 있도록 하고, 서로 다른 유형의 NDP를 수행할 수 있도록 한다. 아래에서는 서로 다른 유형의 NDP를 수행하기 위한 NDP 커널 실행 스케줄링(NDP kernel execution scheduling)에 대해서 설명한다.
본 발명의 한 실시예에 따르면, NDP 커널 실행 스케줄링을 위해서 커널간 실행 스케줄링(inter-kernel execution scheduling) 및 커널내 실행 스케줄링(intra-kernel execution scheduling)이 제공될 수 있다. 커널간 실행 스케줄링에서 각 워커 LWP는 특정 NDP 커널을 실행하고, 커널내 실행 스케줄링에서는 NDP 커널을 다중 코드 블록으로 분할하고, 입력 데이터 레이아웃에 기초해서 다중 워커 LWP에 걸쳐 다중 코드 블록이 동시에 실행될 수 있다.
먼저 본 발명의 한 실시예에 따른 가속기에서의 커널간 실행 스케줄링에 대해서 도 11, 도 12 및 도 13을 참고로 하여 설명한다.
도 11은 두 개의 NDP 커널의 한 예를 나타내는 도면이고, 도 12는 정적 커널간 스케줄링의 한 예를 나타내는 도면이며, 도 13은 동적 커널간 스케줄링의 한 예를 나타내는 도면이다.
커널간 실행 스케줄링은 정적 커널간 스케줄링(static inter-kernel scheduling)과 동적 커널간 스케줄링(dynamic inter-kernel scheduling)으로 구분될 수 있다.
도 11에 도시한 예를 참고하면, 두 개의 NDP 커널(NDP0, NDP2)이 제공되고, NDP 커널(NDP0)에 두 개의 NDP 인스턴스(i0, i1)가 연관되어 있고, NDP 커널(NDP2)에 두 개의 NDP 인스턴스(i2, i3)가 연관되어 있다.
한 실시예에 따른 정적 커널간 스케줄링에서는 호스트로부터 수신되는 인커밍 NDP 요청이 그 실행 유형에 기초해서 특정 LWP에 정적으로 할당된다. 예를 들어, 도 12를 참고하면, 정적 커널간 스케줄링에서는 워커 LWP(LWP0)에 NDP 커널(NDP0)의 인스턴스(i0, i1)이 정적으로 할당되고, 워커 LWP(LWP2)에 NDP 커널(NDP2)의 인스턴스(i2, i3)이 정적으로 할당될 수 있다.
이러한 정적 커널간 스케줄링은 이종 NDP 커널을 구현하고 관리하기 쉽다는 장점을 가진다. 그러나 각 NDP 커널을 위한 실행 시간이 균형을 이루지 못하는 경우에는 자원 활용성이 좋지 못할 수 있다.
다른 실시예에 따른 동적 커널간 스케줄링에서는 정적 스케줄링의 열악한 자원 활용성 문제를 해결하기 위해서, 마스터 LWP는 NDP 요청을 서비스 이용 가능성(availability)에 기초해서 워커 LWP 풀의 어느 워크 LWP에 동적으로 할당할 수 있다. 예를 들면, 스케줄링의 초기에, 마스터 LWP는 서로 다른 유형의 NDP 커널을 라운드 로빈(round robin) 방식으로 모든 워커 LWP에 분배할 수 있다. 그 후에, 워커 LWP가 인스턴스 실행을 완료함으로써 IPC-IR를 통해 마스터 LWP에 신호를 보낼 때마다, 마스터 LWP는 다음으로 이용 가능한 NDP 커널 인스턴스를 워커 LWP에 백투백(back-to-back)으로 할당할 수 있다. 예를 들면 도 12에 도시한 것처럼, 마스터 LWP는 두 NDP 커널(NDP0, NDP2)의 인스턴스(i0, i1, i2, i3)을 4개의 워커 LWP(LWP0, LWP1, LWP2, LWP3)에 차례로 할당할 수 있다. 그러면 인스턴스(i1, i3)와 인스턴스(i0, i2)가 병렬로 제공될 수 있으므로, 자원 활용성이 향상되고, 시간 슬롯을 절약할 수 있다.
먼저 본 발명의 한 실시예에 따른 가속기에서의 커널내 실행 스케줄링에 대해서 도 14, 도 15 및 도 16을 참고로 하여 설명한다.
도 14는 두 개의 NDP 커널의 다른 예를 나타내는 도면이고, 도 15는 인오더 커널내 스케줄링의 한 예를 나타내는 도면이며, 도 16은 아웃오브오더 커널내 스케줄링의 한 예를 나타내는 도면이다.
커널내 실행 스케줄링은 인오더 커널내 스케줄링(in-order intra-kernel scheduling)과 아웃오브오더 커널내 스케줄링(out-of-order intra-kernel scheduling)으로 구분될 수 있다.
실제 NDP 커널은 마이크로블록(microblock)으로 불리는 코드 세그먼트의 다중 그룹으로 이루어질 수 있다. 각 그룹은 입력/출력 데이터에 실행 의존성을 가진다. 마이크로블록은 어떤 순서로 실행되지만, 마이크로블록 내에 I/O 행렬의 서로 다른 부분에서 병렬로 실행될 수 있는 스크린이라 불리는 오퍼레이션이 있다. 도 14에 도시한 예를 참고하면, 두 개의 NDP 커널(NDP0, NDP2)이 제공되고, NDP 커널(NDP0)에 두 개의 NDP 인스턴스(i0, i1)가 연관되어 있고, NDP 커널(NDP2)에 두 개의 NDP 인스턴스(i2, i3)가 연관되어 있으며, 각 인스턴스는 두 개의 마이크로블록(m0, m1)을 포함한다. 이 경우, 인스턴스(i0)의 마이크로블록(m0)은 두 개의 스크린(①, ②)을 포함하고, 인스턴스(i0)의 마이크로블록(m1)은 두 개의 스크린(ⓐ, ⓑ)을 포함한다. 인스턴스(i1)의 마이크로블록(m0)은 하나의 스크린(①)을 포함하고, 인스턴스(i1)의 마이크로블록(m1)은 하나의 스크린(ⓐ, ⓑ)을 포함한다. 인스턴스(i2)의 마이크로블록(m0)은 두 개의 스크린(①, ②)을 포함하고, 인스턴스(i2)의 마이크로블록(m1)은 하나의 스크린(ⓐ)을 포함한다. 인스턴스(i3)의 마이크로블록(m0)은 두 개의 스크린(①, ②)을 포함하고, 인스턴스(i3)의 마이크로블록(m1)은 하나의 스크린(ⓐ)을 포함한다.
한 실시예에 따른 인오더 커널내 스케줄링에서는 각 인스턴스의 각 마이크로블록이 차례로 실행되고, 각 인스턴스의 각 마이크로블록에 있는 모든 스크린들이 서로 다른 LWP에 의해서 동시 실행될 수 있다. 예를 들면 도 15에 도시한 것처럼, 인스턴스(i0)의 마이크로블록(m0)의 스크린(①, ②)이 T0 시간에서 실행된 후에, 인스턴스(i0)의 마이크로블록(m1)의 스크린(ⓐ, ⓑ)이 T1 시간에서 실행되고, 이어서 T2 시간에서 인스턴스(i1)의 마이크로블록(m0)의 스크린(①)이 실행된 후에, 인스턴스(i1)의 마이크로블록(m1)의 스크린(ⓐ)이 T3 시간에서 실행될 수 있다. 이어서, T4 시간에서 인스턴스(i2)의 마이크로블록(m0)의 스크린(①, ②)이 실행된 후에, 인스턴스(i2)의 마이크로블록(m1)의 스크린(ⓐ)이 T5 시간에서 실행되고, 이어서 T6 시간에서 인스턴스(i3)의 마이크로블록(m0)의 스크린(①, ②)이 실행된 후에, 인스턴스(i3)의 마이크로블록(m1)의 스크린(ⓐ)이 T7 시간에서 실행될 수 있다. 이때, 인스턴스(i0)의 마이크로블록(m0)의 두 스크린(①, ②)은 서로 다른 LWP(LWP0, LWP1)에 의해서 동시에 실행될 수 있다. 마찬가지로 동일한 인스턴스의 동일한 마이크로블록의 복수의 스크린은 서로 다른 LWP에 의해 동시에 실행될 수 있다.
이와 같이 복수의 스크린이 동시에 실행되므로 하나의 인스턴스의 스크린이 차례로 실행되는 커널간 실행 스케줄링에 비해서 실행 시간을 줄일 수 있다.
다른 실시예에 따른 아웃오브오더 커널내 스케줄링에서는, 인오더 커널내 스케줄링과 달리, 서로 다른 인스턴스 및 마이크로블록과 관련된 많은 스크린을 순서에 관계 없이 실행할 수 있다. 즉, 어떤 시점에서 유휴 상태의 LWP가 있다면, 아웃오브오더 커널내 스케줄링은 다른 인스턴스 또는 다른 NDP 커널 영역에 존재하는 다른 마이크로블록으로 스크린으로 가지고 올 수 있다. 따라서 마이크로블록의 처리 지연을 줄일 수 있으며, 전체 시스템 성능을 향상시킬 수 있다.
도 15에 도시한 것처럼 시간 T0에서 두 개의 LWP(LWP2, LWP3)가 유휴 상태이므로, 도 16에 도시한 것처럼 시간 T0에 다른 마이크로블록의 스크린을 채울 수 있다. 예를 들면 시간 T0에서 인스턴스(i0)의 마이크로블록(m0)의 스크린(①, ②), 인스턴스(i1)의 마이크로블록(m0)의 스크린(①) 및 인스턴스(i2)의 마이크로블록(m0)의 스크린(①)이 서로 다른 LWP(LWP0, LWP1, LWP2, LWP3)에 의해 동시에 실행될 수 있다. 또한 시간 T1에서 인스턴스(i2)의 마이크로블록(m0)의 스크린(②), 인스턴스(i3)의 마이크로블록(m0)의 스크린(①, ②) 및 인스턴스(i0)의 마이크로블록(m1)의 스크린(ⓐ)이 서로 다른 LWP(LWP0, LWP1, LWP2, LWP3)에 의해 동시에 실행될 수 있다. 또한 시간 T2에서 인스턴스(i0)의 마이크로블록(m1)의 스크린(ⓑ), 인스턴스(i1)의 마이크로블록(m1)의 스크린(ⓐ), 인스턴스(i2)의 마이크로블록(m1)의 스크린(ⓐ) 및 인스턴스(i3)의 마이크로블록(m1)의 스크린(ⓐ)이 서로 다른 LWP(LWP0, LWP1, LWP2, LWP3)에 의해 동시에 실행될 수 있다.
한편, 본 발명의 한 실시예에 따른 플래시 기반 가속기(300)를 실제 하드웨어에 구현하여서 성능을 측정한 결과에 대해서 설명한다.
아래 표 1에 나타낸 것처럼, 성능 측정에서 1GHz 클록에서 동작하고 64KB L1 캐시와 512KB L2 캐시를 가지는 8개의 LWP를 사용하고, 8개의 LWP 중 6개를 워커 LWP로 사용하고 나머지 2개를 각각 마스터 LWP와 플래시 LWP로 사용한다. 또한 버퍼 서브시스템에서 스크래치패드 메모리로 4MB SRAM 기반 스크래치패드 메모리를 사용하고, 2GB의 DDR3L DRAM를 저전력 메모리로 사용한다. 또한 플래시 기반 비휘발성 메모리로 32개의 플래시 다이(flash dies)를 사용한다.
Components Specification Working frequency Port width Estimated bandwidth
LWP 8 processors 1GHz 128b 16000MB/s
L1/L2 cache 64KB/512KB 500MHz 256b 16000MB/s
SPM shared, 4MB 500MHz 256b 16000MB/s
DRAM DDR3L, 2GB 800MHz 64b 6400MB/s
Flash 32 dies 200MHz 64b 3200MB/s
PCIe v2.0, 2 lanes 5GHz 2b 1024MB/s
Tier-1 crossbar 256 lanes 500MHz 256b 16000MB/s
Tier-2 crossbar 128 lanes 333MHz 128b 5328MB/s
이 경우, 본 발명의 한 실시예에 따른 가속기는 CPU 구동(CPU-driven) 데이터 프로세싱 접근 방법 및 GPU 기반 데이터 프로세싱 접근 방법에 비해서, 88% 및 57%만큼 에너지 소모를 감소시키면서, 7.8배 및 75%만큼 성능을 향상시킬 수 있었다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 호스트의 중앙 프로세싱 유닛(central processing unit, CPU)의 기능을 보조하거나 상기 CPU와 별도로 데이터 프로세싱을 수행하는 플래시 기반 가속기로서,
    페이지 단위로 데이터를 저장하는 플래시 기반 비휘발성 메모리,
    워드 또는 바이트 단위로 데이터를 저장하는 버퍼 서브시스템,
    상기 플래시 기반 비휘발성 메모리와 상기 버퍼 서브시스템 사이에서의 데이터 이동을 관리하는 가속기 컨트롤러,
    상기 버퍼 서브시스템에 저장된 데이터를 처리하는 복수의 프로세서, 그리고
    상기 플래시 기반 비휘발성 메모리, 상기 버퍼 서브시스템, 상기 가속기 컨트롤러 및 상기 복수의 프로세서를 통합하는 네트워크
    를 포함하며,
    상기 버퍼 서브시스템은,
    상기 플래시 기반 비휘발성 메모리와 매핑되어 있는 제1 데이터 공간을 포함하는 제1 메모리, 그리고
    상기 제1 데이터 공간과 상기 플래시 기반 비휘발성 메모리를 매핑하기 위한 페이지 테이블을 저장하는 제2 메모리를 포함하고,
    상기 복수의 프로세서 중 적어도 하나의 프로세서에서의 어플리케이션 실행에 의해 요청된 메모리 접근에 따라, 상기 메모리 접근의 메모리 어드레스로 상기 페이지 테이블을 참조함으로써 확인되는 상기 메모리 어드레스에 대응하는 상기 제1 데이터 공간의 영역과 상기 플래시 기반 비휘발성 메모리의 영역 사이에서 데이터가 이동되는
    플래시 기반 가속기.
  2. 제1항에서,
    상기 가속기 컨트롤러는 상기 플래시 기반 가속기와 상기 호스트를 연결하는 인터페이스의 베이스 어드레스 레지스터를 상기 버퍼 서브시스템 및 상기 복수의 프로세서 중 적어도 하나에 매핑하고 있으며, 상기 베이스 어드레스 레지스터에 기초하여서 상기 호스트로부터의 요청을 수신하는 플래시 기반 가속기.
  3. 제2항에서,
    상기 가속기 컨트롤러는 상기 베이스 어드레스 레지스터의 제1값에 상기 버퍼 서브시스템을 매핑하고 있으며, 상기 제1값에 기초하여서 상기 호스트로부터의 데이터를 상기 버퍼 서브시스템으로 이동하는 플래시 기반 가속기.
  4. 제3항에서,
    상기 가속기 컨트롤러는 상기 베이스 어드레스 레지스터의 제2값에 상기 복수의 프로세서 중 적어도 하나의 프로세서를 매핑하고 있으며, 상기 제2값에 기초하여서 상기 호스트로부터의 데이터의 유형을 통지하는 플래시 기반 가속기.
  5. 삭제
  6. 제1항에서,
    상기 제1 메모리는 상기 호스트로부터의 데이터가 다운로드되거나 상기 호스트로 데이터를 업로드하는 제2 데이터 공간을 더 포함하는 플래시 기반 가속기.
  7. 제6항에서,
    상기 데이터는 상기 복수의 프로세서 중 적어도 하나의 프로세서에 의해 실행될 상기 어플리케이션을 포함하는 플래시 기반 가속기.
  8. 제1항에서,
    상기 페이지 테이블의 페이지 테이블 엔트리는 상기 플래시 기반 비휘발성 메모리의 물리적 플래시 페이지 번호에 매핑되어 있는 상기 제1 데이터 공간의 페이지 번호를 포함하는 플래시 기반 가속기.
  9. 제8항에서,
    상기 페이지 테이블 엔트리는 상기 페이지 테이블 엔트리를 소유하는 소유자의 프로세서 식별자를 더 포함하는 플래시 기반 가속기.
  10. 제9항에서,
    상기 메모리 접근을 요청한 요청자의 프로세서 식별자가 상기 소유자의 프로세서 식별자와 다른 경우에, 상기 버퍼 서브시스템은 상기 요청자의 접근 요청을 거부하는 플래시 기반 가속기.
  11. 제8항에서,
    상기 페이지 테이블 엔트리는 요청된 데이터가 상기 제1 데이터 공간에 존재하는지 상기 플래시 기반의 비휘발성 메모리에 존재하는지를 지시하는 현재 비트 플래그를 더 포함하는 플래시 기반 가속기.
  12. 제8항에서,
    상기 제2 메모리는 상기 플래시 기반 비휘발성 메모리의 논리적 페이지 번호를 상기 플래시 기반 비휘발성 메모리의 물리적 플래시 페이지 번호에 매핑하는 매핑 테이블을 더 포함하는 플래시 기반 가속기.
  13. 제8항에서,
    상기 제2 메모리는 어플리케이션을 포함하는 섹션의 섹션 헤더를 더 포함하며,
    상기 섹션 헤더는 대응하는 섹션이 사용하는 어드레스 공간의 범위를 지시하는 섹션 정보를 포함하는 플래시 기반 가속기.
  14. 제13항에서,
    상기 호스트로부터 접근 요청된 어드레스가 상기 섹션 헤더의 상기 어드레스 공간의 범위 내에 있는 경우, 상기 버퍼 서브시스템은 상기 호스트로부터의 접근 요청을 거부하는 플래시 기반 가속기.
  15. 제1항 내지 제4항, 제6항 내지 제14항 중 어느 한 항에 기재된 플래시 기반 가속기,
    상기 호스트, 그리고
    상기 플래시 기반 가속기를 상기 호스트에 연결하는 인터페이스
    를 포함하는 컴퓨팅 디바이스.
  16. 호스트의 중앙 프로세싱 유닛(central processing unit, CPU)의 기능을 보조하거나 상기 CPU와 별도로 데이터 프로세싱을 수행하는 플래시 기반 가속기로서,
    플래시 기반 비휘발성 메모리,
    상기 플래시 기반 비휘발성 메모리와 매핑되는 제1 데이터 공간을 포함하는 제1 메모리, 상기 플래시 기반 비휘발성 메모리와 상기 제1 데이터 공간 사이의 매핑을 지시하는 페이지 테이블을 저장하는 제2 메모리 및 상기 플래시 기반 비휘발성 메모리와 상기 제1 데이터 공간 사이의 매핑을 관리하는 컨트롤러를 포함하는 버퍼 서브시스템,
    상기 버퍼 서브시스템에 저장된 데이터를 처리하는 복수의 프로세서, 그리고
    상기 플래시 기반 비휘발성 메모리, 상기 버퍼 서브시스템 및 상기 복수의 프로세서를 통합하는 네트워크
    를 포함하며,
    상기 복수의 프로세서 중 적어도 하나의 프로세서에서의 어플리케이션 실행에 의해 요청된 메모리 접근에 따라, 상기 메모리 접근의 메모리 어드레스로 상기 페이지 테이블을 참조함으로써 확인되는 상기 메모리 어드레스에 대응하는 상기 제1 데이터 공간의 영역과 상기 플래시 기반 비휘발성 메모리의 영역 사이에서 데이터가 이동되는
    플래시 기반 가속기.
  17. 제16항에서,
    상기 제1 메모리는 상기 호스트로부터의 상기 어플리케이션을 저장하는 제2 데이터 공간을 더 포함하는 플래시 기반 가속기.
  18. 삭제
  19. 삭제
  20. 제16항에서,
    상기 페이지 테이블의 페이지 테이블 엔트리는 상기 플래시 기반 비휘발성 메모리의 물리적 플래시 페이지 번호에 매핑되어 있는 상기 제1 데이터 공간의 페이지 번호를 포함하는 플래시 기반 가속기.
KR1020160041120A 2016-04-04 2016-04-04 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 KR101923661B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160041120A KR101923661B1 (ko) 2016-04-04 2016-04-04 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US15/184,179 US10824341B2 (en) 2016-04-04 2016-06-16 Flash-based accelerator and computing device including the same
CN201610577356.0A CN107291424A (zh) 2016-04-04 2016-07-20 基于闪存的加速器和包含其的计算设备
US16/032,817 US10831376B2 (en) 2016-04-04 2018-07-11 Flash-based accelerator and computing device including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160041120A KR101923661B1 (ko) 2016-04-04 2016-04-04 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스

Publications (2)

Publication Number Publication Date
KR20170114405A KR20170114405A (ko) 2017-10-16
KR101923661B1 true KR101923661B1 (ko) 2018-11-29

Family

ID=59960977

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160041120A KR101923661B1 (ko) 2016-04-04 2016-04-04 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스

Country Status (3)

Country Link
US (2) US10824341B2 (ko)
KR (1) KR101923661B1 (ko)
CN (1) CN107291424A (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534639B2 (en) * 2017-07-06 2020-01-14 Bitfusion.io, Inc. Virtualization of multiple coprocessors
US10719474B2 (en) 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
US10585819B2 (en) 2018-03-05 2020-03-10 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
US10884672B2 (en) 2018-04-02 2021-01-05 Samsung Electronics Co., Ltd. NDP-server: a data-centric computing architecture based on storage server in data center
KR102660399B1 (ko) * 2018-09-20 2024-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200046264A (ko) * 2018-10-24 2020-05-07 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
US10754795B2 (en) * 2018-11-26 2020-08-25 Qualcomm Incorporated MMU assisted address sanitizer
US11204819B2 (en) * 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
WO2020140261A1 (en) * 2019-01-04 2020-07-09 Baidu.Com Times Technology (Beijing) Co., Ltd. Method and system for protecting data processed by data processing accelerators
US10897627B2 (en) 2019-01-11 2021-01-19 Western Digital Technologies, Inc. Non-volatile memory system including a partial decoder and event detector for video streams
CN110083387B (zh) * 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 使用轮询机制的处理系统及其访存方法
US11048447B2 (en) * 2019-10-17 2021-06-29 International Business Machines Corporation Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data
US11064194B2 (en) 2019-10-31 2021-07-13 Western Digital Technologies, Inc. Encoding digital videos using controllers of data storage devices
US10841645B1 (en) 2019-12-09 2020-11-17 Western Digital Technologies, Inc. Storage system and method for video frame segregation to optimize storage
US11562018B2 (en) 2020-02-04 2023-01-24 Western Digital Technologies, Inc. Storage system and method for optimized surveillance search
US11526435B2 (en) 2020-02-04 2022-12-13 Western Digital Technologies, Inc. Storage system and method for automatic data phasing
JP7500994B2 (ja) * 2020-02-27 2024-06-18 セイコーエプソン株式会社 半導体装置
US11328511B2 (en) 2020-03-13 2022-05-10 Western Digital Technologies, Inc. Storage system and method for improved playback analysis
US20210406170A1 (en) * 2020-06-24 2021-12-30 MemRay Corporation Flash-Based Coprocessor
US11755251B2 (en) * 2021-06-02 2023-09-12 Samsung Electronics Co., Ltd. Virtual computational storage devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100806343B1 (ko) 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
US20120239904A1 (en) 2011-03-15 2012-09-20 International Business Machines Corporation Seamless interface for multi-threaded core accelerators

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027194B2 (en) * 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
US5471617A (en) * 1991-06-24 1995-11-28 Compaq Computer Corporation Computer management system and associated management information base
JPH06314264A (ja) 1993-05-06 1994-11-08 Nec Corp セルフ・ルーティング・クロスバー・スイッチ
KR100252752B1 (ko) 1997-06-26 2000-04-15 김영환 다단계 제어 버스 중재장치
US6272584B1 (en) * 1998-09-10 2001-08-07 Compaq Computer Corporation System board with consolidated EEPROM module
US20010040581A1 (en) * 2000-02-04 2001-11-15 Alliance Semiconductor Corporation Shared memory graphics accelerator system
TWI229290B (en) * 2002-09-11 2005-03-11 Sunplus Technology Co Ltd Storage structure and the method capable of storing and forwarding instructions and data
US7133857B1 (en) * 2002-10-15 2006-11-07 Ximpleware, Inc. Processing structured data
US6741257B1 (en) * 2003-01-20 2004-05-25 Neomagic Corp. Graphics engine command FIFO for programming multiple registers using a mapping index with register offsets
US7779207B2 (en) * 2005-08-25 2010-08-17 Microsoft Corporation Accelerated write performance
US7350043B2 (en) 2006-02-10 2008-03-25 Sun Microsystems, Inc. Continuous data protection of block-level volumes
JP4961781B2 (ja) * 2006-03-14 2012-06-27 ソニー株式会社 情報処理装置、その起動方法およびプログラム
WO2008008512A2 (en) * 2006-07-14 2008-01-17 Interdigital Technology Corporation Symbol rate hardware accelerator
KR100844850B1 (ko) * 2006-10-12 2008-07-08 엘지전자 주식회사 디지털 비디오 레코더에서의 팬/틸트/줌 카메라 컨트롤장치 및 방법
US8332610B2 (en) * 2007-04-17 2012-12-11 Marvell World Trade Ltd. System on chip with reconfigurable SRAM
US8738840B2 (en) * 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
US20090307416A1 (en) * 2008-06-04 2009-12-10 Intitio Corporation Ssd with a controller accelerator
KR101038167B1 (ko) 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
US8266636B2 (en) 2008-09-30 2012-09-11 International Business Machines Corporation Virtualize, checkpoint, and restart system V IPC objects during checkpointing and restarting of a software partition
US8549543B2 (en) 2008-09-30 2013-10-01 International Business Machines Corporation Virtualize, checkpoint, and restart POSIX IPC objects during checkpointing and restarting of a software partition
WO2011002438A1 (en) * 2009-06-29 2011-01-06 Hewlett-Packard Development Company, L.P. Organizing and managing a memory blade with super pages and buffers
US8417889B2 (en) * 2009-07-24 2013-04-09 International Business Machines Corporation Two partition accelerator and application of tiered flash to cache hierarchy in partition acceleration
US20110072192A1 (en) * 2009-09-24 2011-03-24 Agiga Tech Inc. Solid state memory wear concentration
WO2011044154A1 (en) * 2009-10-05 2011-04-14 Marvell Semiconductor, Inc. Data caching in non-volatile memory
US8898417B1 (en) 2009-10-20 2014-11-25 Micron Technology, Inc. Block-based storage device with a memory-mapped interface
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US9552299B2 (en) * 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
US8341382B2 (en) * 2010-09-30 2012-12-25 Nxp B.V. Memory accelerator buffer replacement method and system
US8892827B2 (en) 2011-01-07 2014-11-18 Apple Inc. Cooperative memory management
US20180074843A1 (en) * 2011-03-31 2018-03-15 P4tents1, LLC System, method, and computer program product for linking devices for coordinated operation
US9088476B2 (en) * 2011-04-01 2015-07-21 Cortina Access, Inc. Network communication system with packet forwarding and method of operation thereof
KR20130084846A (ko) 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US9329877B2 (en) * 2012-03-18 2016-05-03 Microsoft Technology Licensing, Llc Static verification of parallel program code
CN104204990B (zh) * 2012-03-30 2018-04-10 英特尔公司 在使用共享虚拟存储器的处理器中加速操作的装置和方法
US9411736B2 (en) * 2013-03-13 2016-08-09 Drobo, Inc. System and method for an accelerator cache based on memory availability and usage
US9146678B2 (en) * 2013-04-29 2015-09-29 International Business Machines Corporation High throughput hardware acceleration using pre-staging buffers
US20160070701A1 (en) * 2013-07-31 2016-03-10 Hewlett-Packard Development Company, L.P. Indexing accelerator with memory-level parallelism support
CN103500076A (zh) * 2013-10-13 2014-01-08 张维加 一种基于多通道slc nand与dram缓存的新usb协议计算机加速设备
US10185499B1 (en) * 2014-01-07 2019-01-22 Rambus Inc. Near-memory compute module
US10133488B2 (en) * 2014-03-17 2018-11-20 Primaryio, Inc. Apparatus and method for cache provisioning, configuration for optimal application performance
US9575807B2 (en) 2014-04-15 2017-02-21 Intel Corporation Processing accelerator with queue threads and methods therefor
KR102430198B1 (ko) * 2014-06-12 2022-08-05 삼성전자주식회사 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법
US20160050112A1 (en) * 2014-08-13 2016-02-18 PernixData, Inc. Distributed caching systems and methods
US9710624B2 (en) * 2014-11-20 2017-07-18 International Business Machines Corporation Implementing extent granularity authorization initialization processing in CAPI adapters
US9513832B2 (en) 2015-03-25 2016-12-06 International Business Machines Corporation Accessing global data from accelerator devices
US20160335064A1 (en) * 2015-05-12 2016-11-17 Advanced Micro Devices, Inc. Infrastructure to support accelerator computation models for active storage
US9507711B1 (en) * 2015-05-22 2016-11-29 Sandisk Technologies Llc Hierarchical FTL mapping optimized for workload
US9671970B2 (en) * 2015-10-27 2017-06-06 International Business Machines Corporation Sharing an accelerator context across multiple processes
US10025722B2 (en) * 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
US9996357B2 (en) * 2015-10-30 2018-06-12 International Business Machines Corporation Resolving page faults out of context for shared contexts
US9690495B2 (en) * 2015-11-03 2017-06-27 International Business Machines Corporation Emulating memory mapped I/O for coherent accelerators in error state
US10261703B2 (en) * 2015-12-10 2019-04-16 International Business Machines Corporation Sharing read-only data among virtual machines using coherent accelerator processor interface (CAPI) enabled flash
KR101936950B1 (ko) 2016-02-15 2019-01-11 주식회사 맴레이 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램
US10585611B2 (en) * 2016-04-26 2020-03-10 Netapp Inc. Inline deduplication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100806343B1 (ko) 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
US20120239904A1 (en) 2011-03-15 2012-09-20 International Business Machines Corporation Seamless interface for multi-threaded core accelerators

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Cho, Benjamin Y., et al. "Xsd: Accelerating mapreduce by harnessing the gpu inside an ssd." Proceedings of the 1st Workshop on Near-Data Processing. 2013.

Also Published As

Publication number Publication date
KR20170114405A (ko) 2017-10-16
CN107291424A (zh) 2017-10-24
US20170285968A1 (en) 2017-10-05
US10831376B2 (en) 2020-11-10
US10824341B2 (en) 2020-11-03
US20180321859A1 (en) 2018-11-08

Similar Documents

Publication Publication Date Title
KR101923661B1 (ko) 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
US8112611B2 (en) Allocating resources to partitions in a partitionable computer
EP1805629B1 (en) System and method for virtualization of processor resources
US10761736B2 (en) Method and apparatus for integration of non-volatile memory
US10007464B1 (en) Method and apparatus for integration of non-volatile memory
US20060070069A1 (en) System and method for sharing resources between real-time and virtualizing operating systems
JP2023509818A (ja) チップ、データ移行方法及び電子機器
US20160085450A1 (en) System for providing remote memory and temporary page pool operating method for providing remote memory
CN112997161A (zh) 将储存系统用作主存储器的方法和装置
KR101943312B1 (ko) 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
CN118159951A (zh) 一种处理请求的方法、装置及系统
US11144473B2 (en) Quality of service for input/output memory management unit
US20230350811A1 (en) Real time input/output address translation for virtualized systems
US20230144038A1 (en) Memory pooling bandwidth multiplier using final level cache system
US8762647B2 (en) Multicore processor system and multicore processor
US20220027294A1 (en) Storage card and storage device
US20020161452A1 (en) Hierarchical collective memory architecture for multiple processors and method therefor
US20230315328A1 (en) High bandwidth extended memory in a parallel processing system
KR102067735B1 (ko) 가상화 시스템의 메모리 관리 장치 및 그 방법
US20240012684A1 (en) Memory disaggregation method, computing system implementing the method
US20220327063A1 (en) Virtual memory with dynamic segmentation for multi-tenant fpgas
KR20230023563A (ko) 스토리지 장치의 메모리 액세스를 위한 시스템, 방법 및 장치
CN117312224A (zh) 数据处理系统、方法、装置和控制器
CN118314939A (en) Apparatus and method for purging shared memory devices or memory expanders

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right