KR20230037906A - 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템 - Google Patents

연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템 Download PDF

Info

Publication number
KR20230037906A
KR20230037906A KR1020210121030A KR20210121030A KR20230037906A KR 20230037906 A KR20230037906 A KR 20230037906A KR 1020210121030 A KR1020210121030 A KR 1020210121030A KR 20210121030 A KR20210121030 A KR 20210121030A KR 20230037906 A KR20230037906 A KR 20230037906A
Authority
KR
South Korea
Prior art keywords
data
storage
memory
operating system
storage controller
Prior art date
Application number
KR1020210121030A
Other languages
English (en)
Inventor
이황
서정민
허완
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210121030A priority Critical patent/KR20230037906A/ko
Priority to US17/689,049 priority patent/US20230084539A1/en
Priority to CN202211082337.2A priority patent/CN115933968A/zh
Priority to EP22194360.8A priority patent/EP4148572B1/en
Publication of KR20230037906A publication Critical patent/KR20230037906A/ko

Links

Images

Classifications

    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0658Controller construction 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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)
  • Stored Programmes (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

연산 스토리지 장치가 제공된다. 상기 연산 스토리지 장치는 데이터를 저장하는 비휘발성 메모리 및 데이터를 기초로 복수의 애플리케이션을 수행하도록 제어하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 복수의 애플리케이션을 실행하는 운영 체제(Operating System)을 구동하는 프로세서와 운영 체제에 의해 실행되는 사용자 프로그램이 미리 저장된 프로그램 슬롯을 저장하는 메모리를 포함하고, 비휘발성 메모리가 데이터에 대해 제1 동작을 수행하는 것에 대응하여, 운영 체제는 사용자 프로그램을 실행하여 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 수행한다.

Description

연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템{A COMPUTATIONAL STORAGE DEVICE, AND A STORAGE SYSTEM INCLUDING THE SAME COMPUTATIONAL STORAGE DEVICE}
본 발명은 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 비휘발성 메모리 장치로 구분된다.
플래시 메모리에 기반된 스토리지 장치는 컴퓨팅 시스템의 대용량 저장 매체로서 사용된다. 일반적인 스토리지 장치는 호스트 장치의 제어에 따라 데이터를 저장하는 기능을 갖는다. 최근에는, 호스트 장치의 연산 부담을 경감시키기 위해, 스토리지 장치 내에서 댜양한 연산 동작 또는 다양한 애플리케이션을 지원하는 스토리지 장치들이 개발되고 있다.
본 발명이 해결하고자 하는 기술적 과제는, 내부 동작을 응용한 사용자 프로그램을 이용하여 다양한 연산 동작을 수행하는 연산 스토리지 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는, 호스트 장치가 제공하는 실행 조건에 따라 내부 동작을 수행하는 연산 스토리지 장치를 포함하는 전자 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시 예에 따른 연산 스토리지 장치는 데이터를 저장하는 비휘발성 메모리 및 데이터를 기초로 복수의 애플리케이션을 수행하도록 제어하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 복수의 애플리케이션을 실행하는 운영 체제(Operating System)을 구동하는 프로세서와 운영 체제에 의해 실행되는 사용자 프로그램이 미리 저장된 프로그램 슬롯을 저장하는 메모리를 포함하고, 비휘발성 메모리가 데이터에 대해 제1 동작을 수행하는 것에 대응하여, 운영 체제는 사용자 프로그램을 실행하여 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 수행한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시 예에 따른 연산 스토리지 장치는 데이터를 저장하는 비휘발성 메모리, 데이터를 기초로 복수의 애플리케이션을 수행하도록 제어하는 스토리지 컨트롤러, 외부 커맨드에 따라 스토리지 컨트롤러에 의해 재구성되고, 외부 커맨드에 포함되는 실행 조건에 따라 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 결정하는 이벤트 핸들러 및 외부 커맨드에 따라 스토리지 컨트롤러에 의해 재구성되고, 적어도 하나의 애플리케이션을 실행하는 프로세서를 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시 예에 따른 전자 시스템은 데이터를 저장하는 비휘발성 메모리, 상기 데이터를 기초로 복수의 애플리케이션을 실행시키는 내부 운영 체제(Operating System)을 구동하는 프로세서 및 상기 내부 운영 체제에 의해 실행되는 사용자 프로그램이 미리 저장된 프로그램 슬롯을 저장하는 메모리를 포함하는 스토리지 컨트롤러 및 상기 스토리지 컨트롤러에 상기 사용자 프로그램에 대한 다운로드 커맨드를 제공하는 호스트 장치를 포함하되, 상기 비휘발성 메모리가 상기 데이터에 대해 제1 동작을 수행하는 것에 대응하여, 상기 내부 운영 체제는 상기 사용자 프로그램을 실행하여 상기 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 수행한다.
도 1은 본 발명의 몇몇 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 시스템을 보여주는 블록도이다.
도 3 및 도 4는 도 3의 스토리지 시스템의 동작을 설명하기 위한 순서도이다.
도 5 내지 도 10은 도 3의 스토리지 시스템의 동작을 설명하기 위한 도면들이다.
도 11은 도 3의 스토리지 시스템의 또 다른 동작을 설명하기 위한 도면들이다.
도 12는 본 발명의 또 다른 몇몇 스토리지 시스템의 동작을 설명하기 위한 순서도이다.
도 13은 본 발명의 또 다른 몇몇 스토리지 시스템을 설명하기 위한 블록도이다.
도 14는 본 발명의 또 다른 몇몇 스토리지 시스템을 설명하기 위한 블록도이다.
도 15는 본 발명의 몇몇 실시 예에 따른 스토리지 컨트롤러 및 비휘발성 메모리 장치 사이의 통신을 설명하기 위한 도면이다.
도 16은 본 발명의 몇몇 실시 예에 따른 연산 스토리지(storage) 장치가 적용된 시스템을 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 연산 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다. 도 1 내지 도 17의 설명에서 실질적으로 동일한 구성 요소에 대해서는 동일한 도면 부호 사용하며, 해당 구성요소에 대한 중복된 설명은 생략하기로 한다. 또한 본 발명의 여러 도면에 걸쳐서, 유사한 구성요소에 대해서는 유사한 참조부호가 사용된다.
도 1은 본 발명의 몇몇 실시 예에 따른 스토리지 시스템(100a)을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(100a)은 호스트 장치(110) 및 스토리지 장치(120)를 포함할 수 있다. 일 실시 예에서, 스토리지 시스템(100a)은 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 일 실시 예에서, 스토리지 시스템(100a)은 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player)와 같은 컴퓨팅 장치이거나 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등과 같은 시스템일 수 있다.
일 실시 예에서, 스토리지 장치(120)는 종래의 스토리지 장치의 일반적인 기능(예를 들어, 데이터 저장 및 출력)에 추가적으로, 다양한 연산 동작을 수행하도록 구성된 연산 스토리지 장치(computational storage device)일 수 있다. 이하에서, 설명의 편의를 위해, 스토리지 장치 및 연산 스토리지 장치의 용어들이 함께 사용된다.
호스트 장치(110)는 스토리지 장치(120)에 데이터를 저장하거나 또는 스토리지 장치(120)에 저장된 데이터를 읽을 수 있다. 호스트 장치(110)는 호스트 컨트롤러(111) 및 호스트 메모리(112)를 포함할 수 있다. 호스트 컨트롤러(111)는 스토리지 장치(120)를 제어하도록 구성될 수 있다. 일 실시 예에서, 호스트 컨트롤러(111)는 미리 정해진 인터페이스를 기반으로 스토리지 장치(120)와 통신할 수 있다. 미리 정해진 인터페이스는 NVMe 표준에 기반된 인터페이스일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
호스트 메모리(112)는 호스트 장치(110)의 버퍼 메모리, 동작 메모리, 또는 시스템 메모리일 수 있다. 예를 들어, 호스트 메모리(112)는 호스트 장치(110)가 동작하는데 필요한 다양한 정보를 저장하도록 구성될 수 있다. 호스트 메모리(112)는 스토리지 장치(120)로 전송될 데이터 또는 스토리지 장치(120)로부터 수신된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 사용될 수 있다. 일 실시 예에서, 호스트 메모리(112)는 스토리지 장치(120)에 의한 액세스를 지원할 수 있다.
일 실시 예에서, 호스트 컨트롤러(111) 및 호스트 메모리(112) 각각은 별도의 반도체 칩으로 구현될 수 있다. 또는, 일 실시 예에서, 호스트 컨트롤러(111) 및 호스트 메모리(112)는 단일 반도체 칩에 집적되거나 또는 멀티 칩 패키지로 구현될 수 있다. 예를 들어, 호스트 컨트롤러(111)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있다. 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 호스트 메모리(112)는 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 장치, 휘발성 메모리 장치, 비휘발성 메모리 모듈, 또는 휘발성 메모리 모듈일 수 있다.
스토리지 장치(120)는 호스트 장치(110)로부터의 요청에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력하도록 구성된 저장 매체일 수 있다. 일 실시 예에서, 스토리지 장치(120)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(120)가 SSD인 경우, 스토리지 장치(120)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(120)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(120)는 UFS(universal flash storage) 표준 또는 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트 장치(110)와 스토리지 장치(120)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(120)는 스토리지 컨트롤러(CTRL) 및 비휘발성 메모리 장치(NVM)를 포함할 수 있다. 스토리지 컨트롤러(CTRL)는 중앙 처리 유닛(CPU; central processing unit)(121), 하드웨어 가속기(HW accelerator)(122), 플래시 변환 계층(FTL; flash translation layer)(123), 내부 메모리(124), 패킷 매니저(125), 이벤트 핸들러(126), 연산 프로그램 메모리(127), 호스트 인터페이스 블록(128), 메모리 인터페이스 블록(129), 및 시스템 버스(BUS)를 포함할 수 있다. 일 실시 예에서, 스토리지 컨트롤러(CTRL)에 포함된 다양한 구성 요소들 각각은 IP(intellectual property) 블록 또는 기능 블록으로 구현될 수 있으며, 소프트웨어 형태, 하드웨어 형태, 펌웨어 형태, 또는 그것들의 조합의 형태로 구현될 수 있다.
CPU(121)는 프로세서로 스토리지 컨트롤러(CTRL)의 제반 동작을 제어할 수 있다. 예를 들어, CPU(121)는 스토리지 컨트롤러(CTRL)에서 구동되는 다양한 펌웨어 또는 소프트웨어를 구동하도록 구성될 수 있다.
하드웨어 가속기(122)는 스토리지 컨트롤러(CTRL)에서 수행되는 다양한 연산 동작을 수행하거나 또는 스토리지 컨트롤러(CTRL) 상에서 수행되는 애플리케이션 또는 연산 프로그램을 구동하도록 구성될 수 있다. 일 실시 예에서, 하드웨어 가속기(122)는 호스트 장치(110) 상에서 구동되는 호스트 애플리케이션의 일부 기능을 수행하도록 구성될 수 있다. 일 실시 예에서, 내부 애플리케이션은 암호화 동작, 필터링 동작, 기계 학습을 위한 컨볼루션 연산 등과 같은 다양한 데이터 연산 동작을 수행하도록 구성될 수 있다.
일 실시 예에서, CPU(121) 및 하드웨어 가속기(122)는 별도의 기능 블록으로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, CPU(121) 및 하드웨어 가속기(122) 각각은 별도의 프로세서 코어로 구현될 수 있다. 또는 CPU(121) 및 하드웨어 가속기(122)는 하나의 프로세서 코어로 구현되거나 또는 복수의 프로세서 코어들을 포함하는 멀티-코어 프로세서로 구현될 수 있다.
FTL(123)은, 비휘발성 메모리 장치(NVM)를 효율적으로 사용하기 위한 다양한 유지 관리 동작들을 수행할 수 있다. 예를 들어, 유지 관리 동작은 어드레스 매핑(address mapping) 동작, 웨어-레벨링(wear-leveling) 동작, 가비지 콜렉션(garbage collection) 동작 등을 포함할 수 있다.
어드레스 매핑 동작은 호스트 장치(110)에 의해 관리되는 논리 어드레스(logical address) 및 비휘발성 메모리 장치(NVM)의 물리 어드레스(physical address) 사이를 변환하거나 또는 매핑하는 동작일 수 있다.
웨어-레벨링 동작은 비휘발성 메모리 장치(NVM)에 포함된 복수의 메모리 블록들의 사용 빈도 또는 사용 횟수를 균일화하는 동작을 가리킬 수 있으며, 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 또는 하드웨어를 통해 구현될 수 있다. 일 실시 예에서, 웨어 레벨링 동작을 통해, 비휘발성 메모리 장치(NVM)의 복수의 메모리 블록들 각각이 균일하게 사용됨으로써, 특정 메모리 블록의 과도한 열화가 방지될 수 있으며, 이로 인해 비휘발성 메모리 장치(NVM)의 수명이 향상될 수 있다.
가비지 콜렉션 동작은 비휘발성 메모리 장치(NVM)의 희생 메모리 블록의 유효 데이터를 대상 메모리 블록으로 복사한 후, 희생 메모리 블록을 소거(erase)함으로써, 비휘발성 메모리 장치(NVM)의 가용한 메모리 블록 또는 자유 메모리 블록을 확보하는 동작을 가리킬 수 있다.
일 실시 예에서, FTL(123)은 펌웨어 또는 소프트웨어 형태로 구현되고, 내부 메모리(124) 또는 별도의 동작 메모리(미도시)에 저장될 수 있다. CPU(121)는 내부 메모리(124) 또는 별도의 동작 메모리(미도시)에 저장된 FTL(123)을 구동함으로써, 상술된 다양한 유지 관리 동작을 수행할 수 있다. 일 실시 예에서, FTL(123)은 상술된 다양한 유지 관리 동작을 수행하도록 구성된 다양한 하드웨어 자동화 회로들(hardware automation circuits)을 통해 구현될 수 있다. 즉, FTL(123)은 하드웨어로 구현될 수 있으며, 하드웨어를 통해 상술된 다양한 유지 관리 동작이 수행될 수 있다.
내부 메모리(124)는 스토리지 컨트롤러(CTRL)의 버퍼 메모리 또는 동작 메모리로서 동작할 수 있다. 예를 들어, 내부 메모리(124)는 호스트 장치(110) 또는 비휘발성 메모리 장치(NVM)로부터 수신된 데이터를 임시 저장할 수 있다. 또는 내부 메모리(124)는 스토리지 컨트롤러(CTRL)가 동작하는데 필요한 다양한 정보 또는 프로그램 코드를 저장할 수 있다. CPU(121)는 내부 메모리(124)에 저장된 정보 또는 프로그램 코드를 기반으로 다양한 제반 동작을 수행할 수 있다.
일 실시 예에서, 내부 메모리(124)는 하드웨어 가속기(122)에 의해 사용되는 데이터 또는 하드웨어 가속기(122)에 의해 수행되는 애플리케이션에 대한 프로그램 코드 및 후술할 프로그램 슬롯를 저장하도록 구성될 수 있다. 하드웨어 가속기(122)은 내부 메모리(124)에 저장된 프로그램 코드를 실행하거나 또는 내부 메모리(124)에 저장된 데이터에 대한 다양한 연산을 수행할 수 있다.
도면의 간결성 및 설명의 편의를 위해, 내부 메모리(124)가 스토리지 컨트롤러(CTRL)에 포함되는 것으로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 내부 메모리(124)는 스토리지 컨트롤러(CTRL) 외부에 위치한 별도의 메모리 모듈 또는 메모리 장치일 수 있다. 스토리지 컨트롤러(CTRL)는 외부에 위치한 메모리 모듈 또는 메모리 장치를 제어하도록 구성된 메모리 제어기(미도시)를 더 포함할 수 있다.
패킷 매니저(125)는 호스트 장치(110)로부터 수신된 패킷(packet)을 파싱(parsing)하거나 또는 호스트 장치(110)로 전송될 데이터에 대한 패킷(packet)을 생성하도록 구성될 수 있다. 일 실시 예에서, 패킷은 호스트 장치(110) 및 스토리지 장치(120) 사이의 인터페이스 규약을 기반으로 생성될 수 있다.
이벤트 핸들러(126)는 스토리지 컨트롤러(CTRL)에 포함된 기능 블록들의 실행 조건들에 따라 내부 운영 체제에 이벤트 신호를 발생하고, 내부 운영 체제는 상기 이벤트 신호에 따라 프로그램 슬롯 내 사용자 프로그램을 실행한다.
도면의 간결성 및 설명의 편의를 위해, 이벤트 핸들러(126)가 스토리지 컨트롤러(CTRL)에 포함되는 것으로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 스토리지 컨트롤러(CTRL)는 외부에 위치한 이벤트 핸들러를 제어하도록 구성된 이벤트 핸들러 제어기(미도시)를 더 포함할 수 있고, 이벤트 핸들러는 별도의 칩 또는 임베디드 FPGA(embedded Field Programmable Grid Arrays) 일 수 있다.
이벤트 핸들러(126)는 스토리지 컨트롤러(CTRL)에 포함된 기능 블록들의 실행 조건들에 따라 내부 운영 체제에 이벤트 신호를 발생하고, 내부 운영 체제는 상기 이벤트 신호에 따라 프로그램 슬롯 내 사용자 프로그램을 실행한다.
연산 프로그램 메모리(127)는 호스트 장치(110)로 전송될 데이터 또는 호스트 장치(110)로부터 수신된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 사용될 수 있다. 또한, 연산 프로그램 메모리(127)는 후술할 호스트 파일 시스템로부터 파일 데이터를 제공받아 저장하고, 내부 운영 체제는 저장된 파일 데이터를 기초로 사용자 프로그램을 실행한다.
스토리지 컨트롤러(CTRL)는 호스트 인터페이스 블록(128)을 통해 호스트 장치(110)와 통신할 수 있다. 이하에서, 본 발명의 실시 예들을 용이하게 설명하기 위해, 호스트 인터페이스 블록(128)은 NVMe(nonvolatile memory express) 표준에 따른 인터페이스를 지원하는 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트 인터페이스 블록(128)은 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial ATA) 인터페이스, e-SATA(external SATA) 인터페이스, SCSI(Small Computer Small Interface) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, PCI(Peripheral Component Interconnection) 인터페이스, PCIe(PCI express) 인터페이스, IEEE 1394, USB(universal serial bus) 인터페이스, SD(secure digital) 카드 인터페이스, MMC(multi-media card) 인터페이스, eMMC(embedded MMC) 인터페이스, UFS(Universal Flash Storage) 인터페이스, eUFS(embedded UFS) 인터페이스, 또는 CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 지원하도록 구성될 수 있다.
스토리지 컨트롤러(CTRL)는 메모리 인터페이스 블록(129)을 통해 비휘발성 메모리 장치(NVM)와 통신할 수 있다. 일 실시 예에서, 메모리 인터페이스 블록(129)은 토글(Toggle) 인터페이스 또는 온파이(Open NAND Flash Interface; ONFI) 인터페이스와 같은 플래시 인터페이스를 지원하도록 구성될 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
스토리지 컨트롤러(CTRL)에 포함된 다양한 구성 요소들은 시스템 버스(BUS)를 통해 서로 통신할 수 있다. 시스템 버스(BUS)는 ASB(Advanced System Bus), APB(Advanced Peripheral Bus), AHB(Advanced High Performance Bus, AXI(Advanced eXtensible Interface) 등과 같은 다양한 시스템 버스들을 포함할 수 있다.
비휘발성 메모리 장치(NVM)는 스토리지 컨트롤러(CTRL)의 제어에 따라, 데이터를 저장하거나, 저장된 데이터를 출력하거나, 또는 저장된 데이터를 소거하도록 구성될 수 있다. 일 실시 예에서, 비휘발성 메모리 장치(NVM)는 2차원 또는 3차원 낸드 플래시 메모리 장치일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 비휘발성 메모리 장치(NVM)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리에 기반된 메모리 장치일 수 있다. 일 실시 예에서, 비휘발성 메모리 장치(NVM)는 복수의 비휘발성 메모리들을 포함할 수 있고, 복수의 비휘발성 메모리들 각각은 별도의 칩, 별도의 패키지로 구현될 수 있다. 스토리지 컨트롤러(CTRL)는 복수의 채널들을 통해 비휘발성 메모리 장치(NVM)의 복수의 비휘발성 메모리들과 각각 통신할 수 있다.
상술된 바와 같이, 본 발명에 따른 스토리지 장치(100a)는 스토리지 컨트롤러(CTRL)의 CPU(121) 및 하드웨어 가속기(122)을 사용하여, 다양한 애플리케이션을 실행함으로써, 다양한 연산 동작을 수행할 수 있다. 이 경우, 호스트 장치(110)에서 수행될 연산 부하가 경감될 수 있기 때문에, 스토리지 시스템(100a)의 전체적인 성능이 향상될 수 있다.
도시되지 않았지만, 스토리지 컨트롤러(CTRL)은 ECC 엔진 및 AES 엔진을 더 포함할 수 있다. ECC 엔진은 비휘발성 메모리 장치(NVM)로부터 독출된 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 예를 들어, ECC 엔진은 비휘발성 메모리 장치(NVM)에 저장될 라이트 데이터에 대하여 패리티 비트들(parity bits)을 생성할 수 있다. 생성된 패리티 비트들은 라이트 데이터와 함께 비휘발성 메모리 장치(NVM)에 저장될 수 있다. 이후에, 비휘발성 메모리 장치(NVM)에 대한 리드 동작시, ECC 엔진은 리드 데이터 및 대응하는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
AES 엔진은, 스토리지 컨트롤러(CTRL)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
도 2는 도 1의 스토리지 시스템을 보여주는 블록도이다. 이하에서 설명의 편의를 위해 도 1에서 중복되는 설명에 대해서는 생략한다. 도 1 및 도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(110) 및 스토리지 장치(120)를 포함할 수 있다. 호스트 장치(110) 및 스토리지 장치(120)의 개략적인 구성 및 동작은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
일 실시 예에서, 호스트 장치(110)는 프로세서(미도시)를 포함할 수 있고, 프로세서는 호스트 애플리케이션(APP_h)을 구동할 수 있다. 호스트 애플리케이션(APP_h)은 호스트 운영 체제(OS_h) 상에서 실행되는 프로그램을 가리킬 수 있다. 호스트 애플리케이션(APP_h)은 스토리지 장치(120)에 데이터를 저장하거나 또는 스토리지 장치(120)에 저장된 데이터를 읽을 수 있다. 즉, 호스트 애플리케이션(APP_h)은 스토리지 장치(120)에 대한 입출력(I/O)에 대한 호스트 커맨드(CMD_h)을 발행(issue)할 수 있다. 이하에서, 호스트 장치(110)의 호스트 애플리케이션(AAP_h)에 의해 발행된 입출력(I/O)은 호스트 I/O라 칭한다.
호스트 운영 체제(OS_h)는 호스트 파일 시스템(FS_h)를 포함할 수 있다. 호스트 파일 시스템(FS_h)은 호스트 운영 체제(OS_h) 상에서, 스토리지 장치(120)의 저장 공간을 관리 또는 조직화하도록 구성될 수 있다. 호스트 운영 체제(OS_h)는 NVMe 표준에 기반된 인터페이스를 통해 스토리지 장치(120)와 연결될 수 있다.
몇몇 실시예에 따른 호스트 운영 체제(OS_h)는 호스트 파일 시스템(FS_h)에 대한 데이터(Data)를 호스트 인터페이스 블록(128)를 통해 연산 프로그램 메모리(127)에 전달하고, 연산 프로그램 메모리(127)은 상기 데이터(Data)를 기초로 파일 데이터(File_D)를 내부 운영 체제(OS_i)에 제공한다.
스토리지 장치(120)는 스토리지 컨트롤러(CTRL)와 비휘발성 메모리 장치(NVM)를 포함할 수 있다. 스토리지 컨트롤러(CTRL)는 FTL(123), 내부 메모리(124), 연산 프로그램 메모리(127), 호스트 인터페이스 블록(128), 및 메모리 인터페이스 블록(129)를 포함할 수 있다. 스토리지 컨트롤러(CTRL)는 호스트 장치(110)로부터 호스트 커맨드를 수신하고, 수신된 호스트 커맨드에 대응하는 동작을 수행할 수 있다.
예를 들어, 호스트 인터페이스 블록(128)은 물리 포트 및 NVMe 엔진 등을 포함할 수 있다. 상기 물리 포트는 PCIe(Peripheral Component Interconnect Express) 규약에 따른 물리 신호를 송수신하도록 구성된 회로 또는 물리 계층이고, 상기 NVMe 엔진은 물리 포트를 통해 수신된 신호를 처리하도록 구성될 수 있다. 일 실시 예에서, NVMe 엔진은 호스트 장치(110) 및 스토리지 장치(120)(또는 NVM 서브 시스템) 사이의 인터페이스를 제공하는 NVMe 컨트롤러이거나 NVMe 인터페이스를 지원하도록 구성된 물리 기능 블록(PF; physical function)일 수 있다.
FTL(123)은 상기 NVMe 엔진으로부터 신호를 수신하고, 수신된 신호를 기반으로 다양한 유지 관리 동작을 수행할 수 있다. FTL(123)의 동작은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다. FTL(123)은 메모리 인터페이스 블록(129)을 통해 비휘발성 메모리 장치(NVM)에 저장된 데이터를 읽거나 또는 비휘발성 메모리 장치(NVM)에 데이터를 저장할 수 있다.
상술된 바와 같이, 호스트 장치(110)의 호스트 애플리케이션(APP_h)에 의해 발생된 호스트 I/O는 호스트 파일 시스템(FS_h), 호스트 인터페이스 블록(128), FTL(123), 및 메모리 인터페이스 블록(129)을 통해 처리될 수 있다.
일 실시 예에서, 스토리지 장치(120)는 내부 애플리케이션(APP_i)을 수행함으로써, 다양한 연산 동작을 수행하도록 구성될 수 있다. 예를 들어, 스토리지 장치(120)의 스토리지 컨트롤러(CTRL)는 내부 애플리케이션(APP_i)을 수행할 수 있다. 내부 애플리케이션(APP_i)은 내부 운영 체제 또는 펌웨어(이하에서, "내부 운영 체제"라 칭함.)(OS_i) 상에서 수행될 수 있고, 이후 내부 애플리케이션(APP_i)은 사용자 프로그램(Pgm)로 실행될 수 있다. 내부 애플리케이션(APP_i) 및 내부 운영 체제(OS_i)는 도 1을 참조하여 설명된 CPU(121) 및 하드웨어 가속기(122)에 의해 구동될 수 있다.
일 실시 예에서, 스토리지 컨트롤러(CTRL)에서 구동되는 내부 애플리케이션(APP_i) 및 내부 운영 체제(OS_i)는 호스트 장치(110)에서 구동되는 호스트 애플리케이션(APP_h) 및 호스트 운영 체제(OS_h)와 다를 수 있다. 예를 들어, 내부 애플리케이션(APP_i)은 호스트 애플리케이션(AAP_h)과 물리적 또는 논리적으로 구분될 수 있고, 내부 운영 체제(OS_i)는 호스트 운영 체제(OS_h)와 물리적 또는 논리적으로 구분될 수 있다. 또는, 내부 애플리케이션(APP_i) 및 내부 운영 체제(OS_i)는 스토리지 장치(120) 내부의 구성 요소(예를 들어, 스토리지 컨트롤러(CTRL)의 CPU(121) 및 하드웨어 가속기(122))에 의해 구동되고, 호스트 애플리케이션(OS_h) 및 호스트 운영 제체(OS_h)는 호스트 장치(110)의 내부 구성 요소(예를 들어, 호스트 장치(110)의 프로세서)에 의해 구동될 수 있다. 또한 내부 애플리케이션(APP_i) 및 내부 운영 체제(OS_i)에 대한 프로그램 코드가 내부 메모리(124)에 저장되고 내부 애플리케이션(APP_i) 및 내부 운영 체제(OS_i)가 구동될 수 있다.
일 실시 예에서, 내부 애플리케이션(APP_i) 및 내부 운영 체제(OS_i)는 스토리지 컨트롤러(CTRL)의 스토리지 기능을 수행하는데 요구되는 프로그램들과 다른 구성일 수 있다. 스토리지 컨트롤러(CTRL)의 상기 스토리지 기능은 호스트 장치(110)로부터의 호스트 커맨드에 응답하여, 데이터를 라이트하거나, 데이터를 리드하거나, 또는 비휘발성 메모리 장치(NVM)의 저장 공간을 관리하는 기능들을 가리킬 수 있다. 즉, 본 발명의 실시 예에 따른 스토리지 장치(120)는 종래의 일반적인 스토리지 장치와 비교하여, 내부 애플리케이션(APP_i) 및 내부 운영 체제(OS_i)를 더 구비할 수 있으며, 이에 따라 추가적인 연산 동작을 수행하도록 구성될 수 있다.
내부 운영 체제(OS_i)는, 이벤트 핸들러(126)에서 제공되는 이벤트 신호(event_s)에 기초하여, 내부 메모리(124) 내 프로그램 슬롯(PS)에 저장된 사용자 프로그램(Pgm)을 결정하여 실행할 수 있고, 상기 사용자 프로그램(Pgm) 은 연산 프로그램 메모리(127)에 저장된 파일 테이터(File_D)를 기초로 실행될 수 있다.
내부 운영 체제(OS_i)가 사용자 프로그램(Pgm)을 실행시킴에 따라, 내부 운영 체제(OS_i)는 상기 종전의 스토리지 기능을 포함하는 적어도 하나의 내부 애플리케이션(APP_i)을 수행할 수 있다.
내부 애플리케이션(APP_i)이 수행됨에 따라, 내부 애플리케이션(APP_i)으로부터 I/O가 발행될 수 있다. 이하에서, 내부 애플리케이션(APP_i)에 의해 발행된 I/O는 내부 I/O라 칭한다. 내부 애플리케이션(APP_i)에 의해 발행된 내부 I/O는 내부 운영 체제(OS_i)의 내부 파일 시스템(FS_i)을 통해 FTL(123)로 전달될 수 있다. 일 실시 예에서, 내부 파일 시스템(FS_i)은 스토리지 컨트롤러(CTRL)의 내부 운영 체제(OS_i)에 의해 관리 또는 사용되는 구성이며, 호스트 장치(110)의 호스트 파일 시스템(FS_h)과 구분되는 구성일 수 있다.
이벤트 핸들러(126)은, 스토리지 장치(120) 내의 기능 블록으로 동작하는 프로그램 장치(PgmD)들의 동작에 따라, 내부 운영 체제(OS_i)에 이벤트 신호(event_s)를 제공한다.
상기 프로그램 장치(PgmD)은, 예시적으로 FTL(123), 호스트 인터페이스 블록(128), 메모리 인터페이스 블록(129) 및 비휘발성 메모리 장치(NVM) 등을 포함한다. 도시되지 않았지만, 프로그램 장치(PgmD)은 ECC 엔진 및 AES 엔진 등을 더 포함할 수 있다.
상기 프로그램 장치(PgmD)의 동작에 대한 예시로, FTL(123)은 데이터(DATA)의 가비지 콜렉션(garbage collection) 동작, 데이터(DATA)의 리드 리클레임(Read Reclaim) 동작, 웨어-레벨링(wear-leveling) 동작 등을 수행할 수 있고, 호스트 인터페이스 블록(128)은 데이터(DATA)의 제출(Submission) 동작, 데이터(DATA)의 프로그램 완료(Completion) 동작, 데이터(DATA)의 캐시 힛(Cache Hit) 동작 등을 수행할 수 있고, 비휘발성 메모리 장치(NVM)은 데이터(DATA)의 리드(Read) 동작, 데이터(DATA)의 라이트(Write) 동작 등을 수행할 수 있다.
일 실시 예에서, 스토리지 컨트롤러(CTRL) 내의 구성 요소들 사이의 통신은 시스템 버스(BUS) 또는 개별적인 통신 방식을 통해 구현될 수 있다. 예를 들어, 호스트 인터페이스 블록(128) 및 FTL(123) 사이의 통신, FTL(123) 및 메모리 인터페이스 블록(129) 사이의 통신 및 각각은 시스템 버스(BUS) 또는 개별적인 통신 방식을 통해 구현될 수 있다.
도 3 및 도 4는 도 3의 스토리지 시스템(100a)의 동작을 설명하기 위한 순서도이다. 도 5 내지 도 10은 도 3의 스토리지 시스템(100a)의 동작을 설명하기 위한 도면들이다.
도 2 내지 도 4를 참조하면, 스토리지 장치(120)는 사용자 프로그램(Pgm)를 다운로드한다(S110). 스토리지 장치(120)의 부트-온(Boot-on) 이후, 스토리지 장치(120)는, 호스트 장치(110)를 통해, 사용자 프로그램(Pgm)를 다운로드한다.
도 5를 추가적으로 참조하면, 호스트 장치(110)는, 호스트 운영 체제(OS_h)를 통해, 다운로드 커맨드(Download CMD)를 발행한다(S111). 호스트 장치(110)는 다운로드 커맨드(Download CMD)와 제a 내지 제Z 사용자 프로그램(Pgma-PgmZ)를 포함하는 사용자 프로그램(Pgm)를 전달한다(S112).
스토리지 장치(120)는, 다운로드 커맨드(Download CMD)에 대응하여, 내부 메모리(124) 내 프로그램 슬롯(PS)에 제a 내지 제Z 사용자 프로그램(Pgma-PgmZ)를 저장한다(S113).
프로그램 슬롯(PS)은 제1 영역(RG1), 제2 영역(RG2)를 포함한다. 프로그램 슬롯(PS)은, 제1 영역(RG1)에서 스토리지 장치(120)에서 정의된 제1 내지 제N 사용자 프로그램(Pgm1-PgmN)를 저장하고, 제2 영역(RG2)에서 호스트 장치(100)를 통해 저장될 수 있는 제a 내지 제N 사용자 프로그램(Pgma-PgmN)를 저장한다.
제a 내지 제Z 사용자 프로그램(Pgma-PgmZ)는, 프로그램 코드로 eBPF(extended Berkeley Packet Filter), 파이썬(Python)의 스크립트(script)에 해당할 수 있으나, 상기 예시가 본원의 기술적 사상을 제한하지 않는다. 다만, 설명의 편의를 위해, 이후에 제a 내지 제N 사용자 프로그램(Pgma-PgmN)가 eBPF 형태로 저장된 것을 전제로 설명한다.
도 6은 제Z 사용자 프로그램(PgmZ)의 내용을 나타내는 예시적인 프로그램 코드이다. 도 6을 추가적으로 참조하면, 제Z 사용자 프로그램(PgmZ)은 프로그래밍 언어로 작성될 수 있다. 일 실시예에서, 제Z 사용자 프로그램(PgmZ)은 C 언어로 eBPF 형태로 컴파일될 수 있다.
제Z 사용자 프로그램(PgmZ)은 논리 블록 주소(Logical Block Address, LBA) 필터링을 동반한 가비지 컬랙션(GC) 동작을 포함할 수 있다. 제Z 사용자 프로그램(PgmZ)에서 후술할 동작은 사용자 프로그램(Pgm)의 일 예시로, 해당 예시가 본 발명의 기술적 사상을 제한하지 않는다.
제Z 사용자 프로그램(PgmZ)은 가비지 컬랙션 수행(gc_copy) 동작 및 가비지 컬랙션 포기(gc_drop) 동작을 포함할 수 있다.
제Z 사용자 프로그램(PgmZ)은, 논리 블록 주소(LBA)에 대한 조건식(condition expression)을 포함하는 "if"문을 포함한다. 제Z 사용자 프로그램(PgmZ)은, 상기 "if"문을 통해, 논리 블록 주소(LBA)가 4000미만인 경우 가비지 컬랙션 수행(gc_copy) 동작으로 반환하고, 논리 블록 주소(LBA)가 4000초과인 경우 가비지 컬랙션 포기(gc_drop) 동작으로 반환할 수 있다. 스토리지 장치(120)은, 이후 제Z 사용자 프로그램(PgmZ)의 실행을 통해, 논리 블록 주소(LBA)가 4000미만인 블록에 대해서만 가비지 컬랙션 수행할 수 있다. 상기 4000은 예시적인 수치로, 본 발명의 기술적 사상을 제한하지 않는다.
즉, 상기 스토리지 장치(120)은, 제Z 사용자 프로그램(PgmZ)의 실행을 통해, 종전의 스토리지 기능인 가비지 컬랙션(gc)를 기초로 하는 논리 블록 주소(LBA) 필터링을 동반한 가비지 컬랙션(GC) 동작을 수행한다. 따라서, 제a 내지 제Z 사용자 프로그램(Pgma-PgmZ)가, 프로그램 코드에 따라, 종전의 스토리지 기능을 기초로 동작할 수 있는 것은 자명하고, 제a 내지 제Z 사용자 프로그램(Pgma-PgmZ)에 대한 설명은 상기 제Z 사용자 프로그램(PgmZ)에 대한 설명으로 대체될 수 있다.
도 7를 추가적으로 참조하면, 호스트 장치(110)는 호스트 파일 시스템(FS_h)에서 연산 프로그램 메모리(127)로 파일 데이터(File_D)를 전송한다(S120). 이후 실행될 사용자 프로그램은 연산 프로그램 메모리(127) 내 저장된 파일 데이터(File_D)를 기초로 실행된다.
도 8을 추가적으로 참조하면, 스토리지 장치(120)는 사용자 프로그램(Pgm)에 대한 실행 조건을 등록한다(S130).
호스트 장치(110)는, 호스트 운영 체제(OS_h)를 통해, 실행 커맨드(Execution CMD)를 발행한다(S131). 호스트 장치(110)는 실행 커맨드(Execution CMD)를 프로그램 장치(PgmD)에 전달한다(S132).
도 6의 제Z 사용자 프로그램(PgmZ)를 예시로 설명하면, 실행 커맨드(Execution CMD)은 실행 조건을 포함하고, 상기 실행 조건은 슬롯 ID(#PgmZ), 이벤트 발생 시점(GC event), 파라미터 데이터(para_D)을 포함한다.
슬롯 ID(#PgmZ)은 실행 커맨드(Execution CMD)이 대상으로 하는 사용자 프로그램(Pgm1-PgmN, Pgma-PgmZ)에 대해 내부 운영 체제(OS_i)가 로드하기 위한 데이터이다.
이벤트 발생 시점(GC event)은 실행 커맨드(Execution CMD)가 대상으로 하는 사용자 프로그램(Pgm1-PgmN, Pgma-PgmZ)이 기초로 하는 프로그램 장치(PgmD)의 동작 시점에 대응하는 정보이다. 예시적으로, 도 6의 제Z 사용자 프로그램(PgmZ)의 경우, 이벤트 발생 시점(GC event)은 FTL(123)의 가비지 컬렉션(GC) 동작 시점에 대응한다.
파라미터 데이터(para_D)는 사용자 프로그램(Pgm1-PgmN, Pgma-PgmZ)을 수행하기 위한 인자로, 사용자 프로그램(Pgm1-PgmN, Pgma-PgmZ)은 파라미터 데이터(para_D)을 기준으로 동작을 수행한다. 예시적으로, 도 6의 제Z 사용자 프로그램(PgmZ)의 경우, 파라미터 데이터(para_D)는 논리 블록 주소(LBA) 4000값에 대응한다.
프로그램 장치(PgmD)는 실행 커맨드(Execution CMD)에 포함된 슬롯 ID(#PgmZ), 이벤트 발생 시점(GC event), 파라미터 데이터(para_D)를 등록한다(S133). 도 6의 제Z 사용자 프로그램(PgmZ)의 경우, FTL(123)는 실행 조건인 슬롯 ID(#PgmZ), 이벤트 발생 시점(GC event), 파라미터 데이터(para_D)를 저장하고 등록한다.
도 9을 추가적으로 참조하면, 이벤트 핸들러(126)은 내부 운영 체제(OS_i)에 사용자 프로그램(Pgm)에 대한 이벤트 신호(event_s)를 전달한다(S140).
프로그램 장치(PgmD)에서 이벤트 발생한다(S141). 도 6의 제Z 사용자 프로그램(PgmZ)의 경우, 이벤트 핸들러(126)는 이벤트 발생 시점(event_123)에 FTL(123)로부터 슬롯 ID(#PgmZ), 파라미터 데이터(para_D)를 제공받는다.
이벤트 핸들러(126)는 제공받은 슬롯 ID(#PgmZ), 파라미터 데이터(para_D)를 기초로 내부 운영 체제(OS_i)에 이벤트 신호(event_s)를 제공한다(S142).
내부 운영 체제(OS_i)는 이벤트 신호(event_s)를 기초로 프로그램을 실행한다(S150). 내부 운영 체제(OS_i)는 이벤트 신호(event_s)를 기초로 프로그램 슬롯(PS)에 프로그램 요청(Req_pgm)을 수행한다(S151).
도 10을 추가적으로 참조하면, 내부 운영 체제(OS_i)는 이벤트 신호(event_s)를 기초로 하는 사용자 프로그램(Pgm)을 로드(S152)하고, 내부 운영 체제(OS_i)는 사용자 프로그램(Pgm)을 실행한다(S153).
도 6의 제Z 사용자 프로그램(PgmZ)의 경우, 내부 운영 체제(OS_i)는 제Z 사용자 프로그램(PgmZ)을 로드하여 내부 애플리케이션(APP_i)으로 실행한다.
내부 운영 체제(OS_i)는 연산 프로그램 메모리(127)에 저장된 파일 데이터(File_D)를 기초로 제Z 사용자 프로그램(PgmZ)을 실행한다.
제Z 사용자 프로그램(PgmZ)는, 프로그램 장치(PgmD)에 대한 내부 커맨드(CMD_i)를 발행한다(S154). 제Z 사용자 프로그램(PgmZ)는, 프로그램 장치(PgmD)에 내부 커맨드(CMD_i)를 발행한다(S155).
프로그램 장치(PgmD)는 내부 커맨드(CMD_i)에 대응하여 내부 동작을 수행한다(S156). 도 6의 제Z 사용자 프로그램(PgmZ)의 경우, 프로그램 장치(PgmD)는, 내부 커맨드(CMD_i)에 대응하여, 제Z 사용자 프로그램(PgmZ) 실행시 필요한 가비지 컬랙션 수행(gc_copy) 동작을 수행한다.
도 11은 도 3의 스토리지 시스템의 또 다른 동작을 설명하기 위한 도면들이다. 설명의 편의상, 도 6 내지 도 10을 이용하여 설명한 것과 다른 점을 중심으로 설명한다. 참고적으로, 도 11은 도 5의 프로그램 슬롯(PS)에 저장된 또 다른 사용자 프로그램(Pgm)를 설명하기 위한 도면이다.
도 11은 데이터 압축(Compression)을 동반한 가비지 컬랙션(GC) 동작을 포함할 수 있다. 도 11의 동작은 사용자 프로그램(Pgm)의 일 예시로, 해당 예시가 본 발명의 기술적 사상을 제한하지 않는다.
도 11의 동작은 비휘발성 메모리 장치(NVM)의 희생 블록(VB)의 유효 데이터(PG_A, PG_C, PG_E)를 압축 수행하고 압축 데이터(pg_a', pg_c', pg_e')에 대상 블록(DB)으로 라이트한 후, 희생 메모리 블록(PG_A-PG-E)을 소거(erase)하는 동작을 포함한다.
도 6 내지 도 10의 동작과 마찬가지로, 내부 운영 체제(OS_i)이 사용자 프로그램(Pgm)이 실행하여 FTL(123)의 가비지 컬랙션(GC) 동작을 기초로 도 11의 동작을 수행할 수 있다.
본 발명의 몇몇 실시예에 따른 연산 스토리지 장치(120)는, 호스트 장치(110)를 통해 다운로드되는 사용자 프로그램(Pgm)을 이용하여 다양한 연산 동작을 수행할 수 있고, 상기 사용자 프로그램(Pgm)은 연산 스토리지 장치(120) 내부의 기능 블록인 프로그램 장치(PgmD)을 응용할 수 있다.
뿐만 아니라, 호스트 장치(100)가 제공하는 실행 조건를 포함하는 실행 커맨드(Execution CMD)에 따라 연산 스토리지 장치(120)가 내부 동작을 수행하게 하여, 호스트 장치(100)에서 연산 스토리지 장치(120)의 내부 동작을 효율적으로 관리할 수 있다.
도 12는 본 발명의 또 다른 몇몇 스토리지 시스템의 동작을 설명하기 위한 순서도이다. 설명의 편의상, 도 3를 이용하여 설명한 것과 다른 점을 중심으로 설명한다. 이하에서 설명의 편의를 위해 도 3에서 중복되는 설명에 대해서는 생략한다.
도 3의 동작과 달리, 단계 S110의 사용자 프로그램 다운로드 동작과 단계 S130 단계의 사용자 프로그램 실행 조건 등록이 연속적으로 수행된다(S210).
사용자 프로그램 실행 조건 등록 이후에, 단계 S120에 대응되는 호스트 파일 시스템(FS_h)에서 연산 프로그램 메모리(127)로의 파일 데이터(File_D) 전송이 수행된다(S220).
이후, 단계 S140에 대응하는 이벤트 신호 전송(S230) 및 단계 S150에 대응하는 사용자 프로그램이 실행이 수행된다(S240).
도 13은 본 발명의 또 다른 몇몇 스토리지 시스템을 설명하기 위한 블록도이다. 설명의 편의상, 도 2를 이용하여 설명한 것과 다른 점을 중심으로 설명한다. 이하에서 설명의 편의를 위해 도 2에서 중복되는 설명에 대해서는 생략한다.
이벤트 핸들러(126)가, 내부 운영 체제(OS_i) 내에서, 소프트웨어 형태, 펌웨어 형태, 또는 그것들의 조합의 형태로 구현될 수 있다.
따라서, 내부 운영 체제(OS_i)는 이벤트 발생 시점(event)에 프로그램 장치(PgmD)로부터 슬롯 ID(#Pgm), 파라미터 데이터(para_D)를 제공받는다.
내부 운영 체제(OS_i)내에서, 이벤트 핸들러(126)는 슬롯 ID(#Pgm)에 대응하는 사용자 프로그램(Pgm)을 로드한다.
도 14은 본 발명의 또 다른 몇몇 스토리지 시스템을 설명하기 위한 블록도이다. 설명의 편의상, 도 2를 이용하여 설명한 것과 다른 점을 중심으로 설명한다. 이하에서 설명의 편의를 위해 도 2에서 중복되는 설명에 대해서는 생략한다.
별도의 연산 프로그램 메모리(127)를 배치하는 도 2와 달리, 호스트 파일 시스템(FS_h)에서 내부 메모리(124')로 파일 데이터(File_D)가 제공되어 저장되고,
내부 운영 체제(OS_i)는 내부 메모리(124')에 저장된 파일 데이터(File_D)를 기초로 사용자 프로그램(Pgm)을 실행한다.
도 15는 본 발명의 실시 예에 따른 스토리지 컨트롤러 및 비휘발성 메모리 장치 사이의 통신을 설명하기 위한 도면이다. 도 15를 참조하면, 스토리지 장치는 스토리지 컨트롤러(CTRL) 및 비휘발성 메모리 장치(NVM)를 포함할 수 있다. 일 실시 예에서, 스토리지 컨트롤러(CTRL) 및 비휘발성 메모리 장치(NVM) 사이의 하나의 통신 채널이 도 15를 참조하여 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 스토리지 컨트롤러(CTRL) 및 다른 비휘발성 메모리 장치들은 도 15를 참조하여 설명된 채널과 유사한 다른 채널들(즉, 복수의 채널들)을 통해 서로 통신할 수 있다.
스토리지 컨트롤러(CTRL)는 제1 인터페이스 회로(IFC_1)를 포함할 수 있다. 일 실시 예에서, 제1 인터페이스 회로(IFC_1)는 앞서 설명된 메모리 인터페이스 블록에 포함된 회로일 수 있다.
제1 인터페이스 회로(IFC_1)는 제1 내지 제8 신호 핀들(P11~P18)을 포함할 수 있다. 스토리지 컨트롤러(CTRL)는 제1 인터페이스 회로(IFC_1)의 복수의 신호 핀들(P11~P18)을 통해 다양한 신호들을 비휘발성 메모리 장치(NVM)로 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(CTRL)는 제1 핀(P11)을 통해 칩 인에이블 신호(nCE)를 비휘발성 메모리 장치(NVM)로 전송할 수 있고, 제2 핀(P12)을 통해 커맨드 래치 인에이블 신호(CLE)를 비휘발성 메모리 장치(NVM)로 전송할 수 있고, 제3 핀(P13)을 통해 어드레스 래치 인에이블 신호(ALE)를 비휘발성 메모리 장치(NVM)로 전송할 수 있고, 제4 핀(P14)을 통해 쓰기 인에이블 신호(nWE)를 비휘발성 메모리 장치(NVM)로 전송할 수 있고, 제5 핀(P15)을 통해 읽기 인에이블 신호(nRE)를 비휘발성 메모리 장치(NVM)로 전송할 수 있고, 제6 핀(P16)을 통해 데이터 스트로브 신호(DQS)를 비휘발성 메모리 장치(NVM)와 주고받을 수 있고, 제7 핀(P17)을 통해 데이터 신호(DQ)를 비휘발성 메모리 장치(NVM)와 주고받을 수 있고, 제8 핀(P18)을 통해 준비 신호(또는 비지 신호)(nR/B)를 비휘발성 메모리 장치(NVM)로부터 수신할 수 있다. 일 실시 예에서, 제7 핀(P17)은 구현 방식에 따라, 복수의 핀들을 포함할 수 있다.
비휘발성 메모리 장치(NVM)는 제2 인터페이스 회로(IFC_2), 제어 로직 회로(CL), 및 메모리 셀 어레이(MCA)를 포함할 수 있다. 제2 인터페이스 회로(IFC_2)는 제1 내지 제8 신호 핀들(P21~P28)을 포함할 수 있다. 제2 인터페이스 회로(IFC_2)는 제1 내지 제8 핀들(P21~P28)을 통해 스토리지 컨트롤러(CTRL)로부터 다양한 신호들을 수신할 수 있다. 스토리지 컨트롤러(CTRL) 및 비휘발성 메모리 장치(NVM) 사이의 다양한 신호들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
제2 인터페이스 회로(IFC_2)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 제2 인터페이스 회로(IFC_2)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
일 실시 예에서, 쓰기 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 제2 인터페이스 회로(IFC_2)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
비휘발성 메모리 장치(NVM)의 데이터(DATA) 출력 동작에서, 제2 인터페이스 회로(IFC_2)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 제2 인터페이스 회로(IFC_2)는 읽기 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 제2 인터페이스 회로(IFC_2)는 읽기 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 제2 인터페이스 회로(IFC_2)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 동기하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 스토리지 컨트롤러(CTRL)로 전송될 수 있다.
비휘발성 메모리 장치(NVM)의 데이터(DATA) 입력 동작에서, 메모리 인터페이스 회로(310)는 스토리지 컨트롤러(CTRL)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 제2 인터페이스 회로(IFC_2)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 제2 인터페이스 회로(IFC_2)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
제2 인터페이스 회로(IFC_2)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(CTRL)로 전송할 수 있다. 비휘발성 메모리 장치(NVM)가 비지 상태인 경우(즉, 내부 동작들이 수행 중인 경우), 제2 인터페이스 회로(IFC_2)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(CTRL)로 전송할 수 있다. 비휘발성 메모리 장치(NVM)가 레디 상태인 경우(즉, 내부 동작들이 수행되지 않거나 완료된 경우), 제2 인터페이스 회로(IFC_2)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다.
제어 로직 회로(CL)는 비휘발성 메모리 장치(NVM)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(CL)는 제2 인터페이스 회로(IFC_2)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(CL)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 비휘발성 메모리 장치(NVM)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(MCA)는 제어 로직 회로(CL)의 제어에 따라 제2 인터페이스 회로(IFC_2)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(MCA)는 제어 로직 회로(CL)의 제어에 따라 저장된 데이터(DATA)를 제2 인터페이스 회로(IFC_2)로 출력할 수 있다.
메모리 셀 어레이(MCA)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다.
도 16은 본 발명의 실시 예에 따른 스토리지(storage) 장치가 적용된 시스템을 보여주는 도면이다. 도 16을 참조하면, 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 일 실시 예에서, 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다. 일 실시 예에서, 메모리(1200a, 1200b)는 앞서 설명된 호스트 메모리로서 동작할 수 있다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
일 실시 예에서, 스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)의 제어에 따라 다양한 연산을 수행하도록 구성될 수 있으며, 도 1 내지 도 15를 참조하여 설명된 연산 스토리지 장치일 수 있다. 일 실시 예에서, 스토리지 장치(1300a, 1300b)는 가속기(1130)에 의해 실행되는 기능들 중 일부를 실행 또는 수행하도록 구성될 수 있다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
도 17는 본 발명의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다. 데이터 센터(2000)는 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 시설로서, 데이터 스토리지 센터로 불릴 수 있다. 데이터 센터(200)는 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용된 컴퓨팅 시스템일 수 있다. 데이터 센터(2000)는 복수의 애플리케이션 서버들(2100_1-2100_n) 및 복수의 스토리지 서버들(2200_1-2200_m)을 포함할 수 있다. 복수의 애플리케이션 서버들(2100_1-2100_n)의 개수 및 복수의 스토리지 서버들(2200_1-2200_m)의 개수는 다양하게 변형될 수 있다.
이하에서, 설명의 편의를 위해, 제1 스토리지 서버(2200_1)의 예시가 설명된다. 나머지 스토리지 서버들(2200_2-2200_m) 및 복수의 애플리케이션 서버들(2100_1-2100_n) 각각은 제1 스토리지 서버(2200_1)와 유사한 구조를 가질 수 있다.
제1 스토리지 서버(2200_1)는 프로세서(2210_1), 메모리(2220_1), 스위치(2230_1), 네트워크 인터페이스 커넥터(NIC; network interface connector)(2240_1), 및 스토리지 장치(2250_1)를 포함할 수 있다. 프로세서(2210_1)는 제1 스토리지 서버(2200_1)의 전반적인 동작을 제어할 수 있다. 메모리(2220_1)는 프로세서(2210_1)의 제어에 따라 다양한 명령어 또는 데이터를 저장할 수 있다. 프로세서(2210_1)는 메모리(2220_1)를 액세스하여 다양한 명령어를 실행하거나 또는 데이터를 처리하도록 구성될 수 있다. 일 실시 예에서, 메모리(2220_1)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVDIMM(Non-Volatile DIMM)과 같은 다양한 종류의 메모리 장치들 중 적어도 하나를 포함할 수 있다.
일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1)의 개수 및 메모리(2220_1)의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1) 및 메모리(2220_1)는 프로세서-메모리 페어를 구성할 수 있으며, 제1 스토리지 서버(2200_1)에 포함된 프로세서-메모리 페어의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1)의 개수 및 메모리(2220_1)의 개수는 서로 다를 수 있다. 프로세서(2210_1)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
스위치(2230_1)는 프로세서(2210_1)의 제어에 따라 프로세서(2210_1) 및 스스토리지 장치(2250_1) 사이를 선택적으로 연결시키거나 또는 NIC(2240_1) 및 스토리지 장치(2250_1) 사이를 선택적으로 연결시킬 수 있다.
NIC(2240_1)는 제1 스토리지 서버(2200_1)를 네트워크(NT)와 연결시키도록 구성될 수 있다. NIC(2240_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(2240_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(2240_1)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(2210_1) 또는 스위치(2230_1) 등과 연결될 수 있다. 호스트 버스 인터페이스는, ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, NIC(2240_1)는 프로세서(2210_1), 스위치(2230_1), 및 스토리지 장치(2250_1) 중 적어도 하나와 통합될 수도 있다.
스토리지 장치(2250_1)는 프로세서(2210_1)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 스토리지 장치(2250_1)는 컨트롤러(2251_1), 비휘발성 메모리(2252_1), DRAM(2253_1), 및 인터페이스(2254_1)를 포함할 수 있다. 일 실시 예에서, 스토리지 장치(2250_1)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 더 포함할 수 있다.
컨트롤러(2251_1)는 스토리지 장치(2250_1)의 제반 동작을 제어할 수 있다. 일 실시 예에서, 컨트롤러(2250_1)는 SRAM을 포함할 수 있다. 컨트롤러(2251_1)는 인터페이스(2254_1)를 통해 수신된 신호들에 응답하여 비휘발성 메모리(2252_1)에 데이터를 저장하거나 또는 비휘발성 메모리(2252_1)에 저장된 데이터를 출력할 수 있다. 일 실시 예에서, 컨트롤러(2251_1)는 토글 인터페이스 또는 ONFI 인터페이스를 기반으로 비휘발성 메모리(2252_1)를 제어하도록 구성될 수 있다.
DRAM(2253_1)은 비휘발성 메모리(2252_1)에 저장될 데이터 또는 비휘발성 메모리(2252_1)로부터 읽어진 데이터를 임시 저장하도록 구성될 수 있다. DRAM(2253_1)은 컨트롤러(2251_1)가 동작하는데 필요한 다양한 데이터(예를 들어, 메타 데이터, 매핑 데이터 등)를 저장하도록 구성될 수 있다. 인터페이스(2254_1)는 프로세서(2210_1), 스위치(2230_1), 또는 NIC(2240_1)와 컨트롤러(2251_1) 사이의 물리적 연결을 제공할 수 있다. 일 실시 예에서, 인터페이스(2254_1)는 스토리지 장치(2250_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 일 실시 예에서, 인터페이스(2254_1)는 앞서 호스트 인터페이스 버스를 통해 설명된 다양한 인터페이스들 중 적어도 하나를 기반으로 구성될 수 있다.
상술된 제1 스토리지 서버(2200_1)의 구성들은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 상술된 제1 스토리지 서버(2200_1)의 구성들은 다른 스토리지 서버들 또는 복수의 애플리케이션 서버들 각각에 적용될 수 있다. 일 실시 예에서, 복수의 애플리케이션 서버들(2100_1-2100_n) 각각에서, 스토리지 장치(2150_1)는 선택적으로 생략될 수 있다.
복수의 애플리케이션 서버들(2100_1-2100_n) 및 복수의 스토리지 서버들(2200_1-2200_m)은 네트워크(NT)를 통해 서로 통신할 수 있다. 네트워크(NT)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들(2200_1-2200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시 예에서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 또는, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 일 실시 예에서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
일 실시 예에서, 복수의 애플리케이션 서버들(2100_1-2100_n) 중 적어도 하나는 네트워크(NT)를 통해 복수의 애플리케이션 서버들(2100_1-2100_n) 중 적어도 다른 하나 또는 복수의 스토리지 서버들(2200_1-2200_m) 중 적어도 하나를 액세스하도록 구성될 수 있다.
예를 들어, 제1 애플리케이션 서버(2100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(2200_1-2200_m) 중 적어도 하나에 저장할 수 있다. 또는 제1 애플리케이션 서버(2100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(2200_1-2200_m) 중 적어도 하나로부터 획득할 수 있다. 이 경우, 제1 애플리케이션 서버(2100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
즉, 제1 애플리케이션 서버(2100_1)의 프로세서(2110_1)는 네트워크(NT)를 통해, 다른 애플리케이션 서버(예를 들어, 2100_n)의 메모리(2120_n) 또는 스토리지 장치(2150_n)을 액세스할 수 있다. 또는 제1 애플리케이션 서버(2100_1)의 프로세서(2110_1)는 네트워크(NT)를 통해, 제1 스토리지 서버(2200_1)의 메모리(2220_1) 또는 스토리지 장치(2250_1)를 액세스할 수 있다. 이를 통해, 제1 애플리케이션 서버(2100_1)는 다른 애플리케이션 서버들(2100_2-2100_n) 또는 복수의 스토리지 서버들(2200_1-2200_m)에 저장된 데이터에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 제1 애플리케이션 서버(2100_1)는 다른 애플리케이션 서버들(2100_2-2100_n) 또는 복수의 스토리지 서버들(2200_1-2200_m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행하거나 또는 발행할 수 있다. 이 경우, 이동 또는 카피되는 데이터는 스토리지 서버들(2200_1-2200_m)의 스토리지 장치들(2250_1-2250_m)로부터 스토리지 서버들(2200_1-2200_m)의 메모리들(2220_1-2220_m)를 거치거나 또는 직접 애플리케이션 서버들(2100_1-2100_n)의 메모리들(2120_1-2120_n)로 이동될 수 있다. 네트워크(NT)를 통해 전달되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
일 실시 예에서, 스토리지 장치들(2150_1-2170_n, 2250_1-2250_n)은 도 1 내지 도 15를 참조하여 설명된 연산 스토리지 장치일 수 있으며, 다양한 연산 동작들을 수행하도록 구성될 수 있다. 스토리지 장치들(2150_1-2170_n, 2250_1-2250_n)은 도 1 내지 도 15를 참조하여 설명된 바와 같이 다양한 내부 연산들을 수행하는 도중에 발생하는 내부 I/O를 각각의 인터페이스들을 통해 처리할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100a: 스토리지 시스템 110: 호스트 장치
123: FTL 124: 내부 메모리
126: 이벤트 핸들러 127: 연산 프로그램 메모리
128: 호스트 인터페이스 블록 129: 호스트 인터페이스 블록
App_h: 호스트 애플리케이션 OS_h: 호스트 운영 체제
FS_h: 호스트 파일 시스템 CMD_h: 호스트 커맨드
App_i: 내부 애플리케이션 OS_i: 내부 운영 체제
FS_i: 내부 파일 시스템 PS: 프로그램 슬롯
Pgm: 사용자 프로그램 event_s: 이벤트 신호
NVM: 비휘발성 메모리 장치 PgmD: 프로그램 장치

Claims (10)

  1. 데이터를 저장하는 비휘발성 메모리; 및
    상기 데이터를 기초로 복수의 애플리케이션을 수행하도록 제어하는 스토리지 컨트롤러를 포함하되,
    상기 스토리지 컨트롤러는,
    상기 복수의 애플리케이션을 실행하는 운영 체제(Operating System)을 구동하는 프로세서와
    상기 운영 체제에 의해 실행되는 사용자 프로그램이 미리 저장된 프로그램 슬롯을 저장하는 메모리를 포함하고,
    상기 비휘발성 메모리가 상기 데이터에 대해 제1 동작을 수행하는 것에 대응하여, 상기 운영 체제는 상기 사용자 프로그램을 실행하여 상기 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 수행하는 연산 스토리지 장치.
  2. 제1항에 있어서,
    상기 사용자 프로그램은,
    외부 커맨드를 기초하여 상기 프로그램 슬롯에 저장되는 연산 스토리지 장치.
  3. 제2항에 있어서,
    상기 사용자 프로그램은 상기 프로그램 슬롯에 eBPF(extended Berkeley Packet Filter) 형태로 저장되는 연산 스토리지 장치.
  4. 제1항에 있어서,
    상기 적어도 하나의 애플리케이션을 수행하는 것은,
    상기 제1 동작에 대한 내부 커맨드를 발행하는 것을 포함하는 연산 스토리지 장치.
  5. 제1항에 있어서,
    상기 스토리지 컨트롤러는, 외부 커맨드에 포함되는 상기 제1 동작에 대한 실행 조건에 따라 상기 적어도 하나의 애플리케이션을 결정하는 이벤트 핸들러를 더 포함하는 연산 스토리지 장치.
  6. 제1항에 있어서,
    상기 메모리는 외부로부터 입력되는 파일 데이터를 저장하고,
    상기 사용자 프로그램은 상기 파일 데이터를 기초로 실행되는 연산 스토리지 장치.
  7. 데이터를 저장하는 비휘발성 메모리;
    상기 데이터를 기초로 복수의 애플리케이션을 수행하도록 제어하는 스토리지 컨트롤러;
    외부 커맨드에 따라 상기 스토리지 컨트롤러에 의해 재구성되고, 상기 외부 커맨드에 포함되는 실행 조건에 따라 상기 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 결정하는 이벤트 핸들러; 및
    상기 외부 커맨드에 따라 상기 스토리지 컨트롤러에 의해 재구성되고, 상기 적어도 하나의 애플리케이션을 실행하는 프로세서를 포함하는 연산 스토리지 장치.
  8. 제7항에 있어서,
    상기 스토리지 컨트롤러는, 상기 프로세서를 포함하고,
    상기 프로세서는, 상기 복수의 애플리케이션을 실행시키는 운영 체제(Operating System)을 구동하고, 상기 운영 체제를 통해 상기 적어도 하나의 애플리케이션을 실행하는 연산 스토리지 장치.
  9. 데이터를 저장하는 비휘발성 메모리;
    상기 데이터를 기초로 복수의 애플리케이션을 실행시키는 내부 운영 체제(Operating System)을 구동하는 프로세서 및 상기 내부 운영 체제에 의해 실행되는 사용자 프로그램이 미리 저장된 프로그램 슬롯을 저장하는 메모리를 포함하는 스토리지 컨트롤러; 및
    상기 스토리지 컨트롤러에 상기 사용자 프로그램에 대한 다운로드 커맨드를 제공하는 호스트 장치를 포함하되,
    상기 비휘발성 메모리가 상기 데이터에 대해 제1 동작을 수행하는 것에 대응하여, 상기 내부 운영 체제는 상기 사용자 프로그램을 실행하여 상기 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 수행하는 전자 시스템.
  10. 제9항에 있어서,
    상기 호스트 장치는, 상기 다운로드 커맨드의 제공 이후, 상기 제1 동작에 대한 실행 조건을 포함하는 실행(Execution) 커맨드를 상기 스토리지 컨트롤러에 제공하고,
    상기 스토리지 컨트롤러는, 상기 실행 조건에 따라 상기 적어도 하나의 애플리케이션을 결정하는 이벤트 핸들러를 더 포함하는 전자 시스템.
KR1020210121030A 2021-09-10 2021-09-10 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템 KR20230037906A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210121030A KR20230037906A (ko) 2021-09-10 2021-09-10 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템
US17/689,049 US20230084539A1 (en) 2021-09-10 2022-03-08 Computational storage device and storage system including the computational storage device
CN202211082337.2A CN115933968A (zh) 2021-09-10 2022-09-06 计算存储装置和电子系统
EP22194360.8A EP4148572B1 (en) 2021-09-10 2022-09-07 Computational storage device and storage system including the computational storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210121030A KR20230037906A (ko) 2021-09-10 2021-09-10 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템

Publications (1)

Publication Number Publication Date
KR20230037906A true KR20230037906A (ko) 2023-03-17

Family

ID=83232576

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210121030A KR20230037906A (ko) 2021-09-10 2021-09-10 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템

Country Status (4)

Country Link
US (1) US20230084539A1 (ko)
EP (1) EP4148572B1 (ko)
KR (1) KR20230037906A (ko)
CN (1) CN115933968A (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10866740B2 (en) * 2018-10-01 2020-12-15 Western Digital Technologies, Inc. System and method for performance-based multiple namespace resource allocation in a memory

Also Published As

Publication number Publication date
EP4148572B1 (en) 2024-05-15
CN115933968A (zh) 2023-04-07
US20230084539A1 (en) 2023-03-16
EP4148572A1 (en) 2023-03-15

Similar Documents

Publication Publication Date Title
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
EP4283472A1 (en) Method for caching data, a host device for caching data, and a storage system for caching data
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
US20240037027A1 (en) Method and device for storing data
US20230393959A1 (en) Out-of-band management method for storage apparatus, baseboard management controller and storage apparatus
US11853614B2 (en) Synchronous write method and device, storage system and electronic device
KR20230071730A (ko) 데이터 프로세싱 장치 및 그것의 동작 방법
US20220179724A1 (en) Method for operating storage device and host device, and storage device
KR20230037906A (ko) 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템
EP3992799A1 (en) Electronic device and automotive device
US20230393749A1 (en) Method and device of storage data
US20230153237A1 (en) Method and device for storing data
EP4258097A1 (en) Operation method of host device and operation method of storage device
US11914879B2 (en) Storage controller and storage system comprising the same
KR20230067439A (ko) 보안 프로세서 및 이의 동작 방법과 이를 포함하는 스토리지 장치
US20230214258A1 (en) Storage controller and storage device
US20230325110A1 (en) Operation method of host device and operation method of storage device
KR20230169885A (ko) 영구 메모리 장치 및 컴퓨팅 시스템
CN117055816A (zh) 配置zns ssd的区域的方法和装置
CN116108442A (zh) 安全处理器及其操作方法和包括该安全处理器的存储装置
CN115756557A (zh) 网络存储器的固件升级方法以及网络存储器
CN116893877A (zh) 主机装置的操作方法及存储装置的操作方法