KR102659832B1 - 데이터 저장 장치 및 시스템 - Google Patents

데이터 저장 장치 및 시스템 Download PDF

Info

Publication number
KR102659832B1
KR102659832B1 KR1020190025059A KR20190025059A KR102659832B1 KR 102659832 B1 KR102659832 B1 KR 102659832B1 KR 1020190025059 A KR1020190025059 A KR 1020190025059A KR 20190025059 A KR20190025059 A KR 20190025059A KR 102659832 B1 KR102659832 B1 KR 102659832B1
Authority
KR
South Korea
Prior art keywords
data
functional block
storage device
buffer memory
data storage
Prior art date
Application number
KR1020190025059A
Other languages
English (en)
Other versions
KR20200106620A (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 KR1020190025059A priority Critical patent/KR102659832B1/ko
Priority to US16/560,417 priority patent/US11137921B2/en
Priority to CN202010118988.7A priority patent/CN111666039A/zh
Publication of KR20200106620A publication Critical patent/KR20200106620A/ko
Priority to US17/468,107 priority patent/US11768618B2/en
Application granted granted Critical
Publication of KR102659832B1 publication Critical patent/KR102659832B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0626Reducing size or complexity of storage systems
    • 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/0638Organizing or formatting or addressing of data
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

데이터 저장 장치가 제공된다. 상기 데이터 저장 장치는 서로 독립된 기능을 수행하는 제1 및 제2 기능 블록을 포함하는 장치 컨트롤러, 제1 기능 블록과 연결되는 제1 버퍼 메모리, 제2 기능 블록과 연결되고, 데이터 저장 장치 외부의 액세스를 허용하는 제2 버퍼 메모리, 및 제1 기능 블록과 연결되는 비휘발성 메모리를 포함하고, 제1 기능 블록과 제2 기능 블록은 서로 연결되어 데이터가 직접 교환되고, 제1 기능 블록은 데이터 라이트 명령에 따라, 제2 기능 블록으로부터 제1 프로세스 데이터를 수신하여 비휘발성 메모리에 라이트한다.

Description

데이터 저장 장치 및 시스템{Data storage device and system}
본 발명은 데이터 저장 장치 및 시스템에 관한 것이다. 더욱 구체적으로, 본 발명은 데이터 프로세싱의 효과가 증가되고, 프로세서의 오버 헤드를 감소시키는 데이터 저장 장치 및 시스템에 관한 것이다.
기술이 발전함에 따라, 관리 및 저장해야할 데이터의 양이 극단적으로 증가되었다. 따라서, 이러한 데이터들을 이용할 때, 방대한 양의 데이터를 로우 데이터(raw data) 그대로 모두 저장하는 것은 매우 어려운 실정이다.
따라서, 사용자는 로우 데이터에 대한 프로세싱을 수행하여, 효과적이고 경제적인 데이터 저장 방법을 모색하고 있다. 그러나, 데이터 프로세싱도 기술이 발전함에 따라 복잡하고 다양하게 발전되고 있다. 복잡한 데이터 프로세싱을 수행하기 위해서는 많은 연산이 필요하며, 단일 프로세서가 수많은 연산을 수행하는 경우, 프로세서는 오버 헤드가 걸려 레이턴시(latency)가 증가되게 된다.
그러므로, 프로세서의 오버헤드를 적정 수준으로 유지하면서, 복잡한 데이터 프로세싱을 수행하여 효과적으로 데이터를 관리하는 방법 또는 시스템이 필요하다.
본 발명이 해결하고자 하는 기술적 과제는 효과적인 데이터 프로세싱을 수행하는 데이터 처리 장치 및 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 레이턴시가 감소된 데이터 프로세싱을 수행하는 데이터 처리 장치 및 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는 서로 독립된 기능을 수행하는 제1 및 제2 기능 블록을 포함하는 장치 컨트롤러, 제1 기능 블록과 연결되는 제1 버퍼 메모리, 제2 기능 블록과 연결되고, 데이터 저장 장치 외부의 액세스를 허용하는 제2 버퍼 메모리, 및 제1 기능 블록과 연결되는 비휘발성 메모리를 포함하고, 제1 기능 블록과 제2 기능 블록은 서로 연결되어 데이터가 직접 교환되고, 제1 기능 블록은 데이터 라이트 명령에 따라, 제2 기능 블록으로부터 제1 프로세스 데이터를 수신하여 비휘발성 메모리에 라이트한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는 유저 데이터를 수신하여 제1 데이터 프로세싱을 수행하는 제1 기능 블록, 제1 기능 블록과 연결되고, 제1 데이터 프로세싱이 수행된 유저 데이터를 제1 프로세스 데이터로 저장하는 제1 버퍼 메모리, 제1 프로세스 데이터에 기초하여 결정된 데이터 라이트 명령을 수신하는 제2 기능 블록, 및 제2 기능 블록과 연결되고, 제1 버퍼 메모리에 저장된 데이터를 제공받아 저장하는 비휘발성 메모리를 포함하고, 데이터 라이트 명령이 제2 기능 블록에 제공되기 전, 유저 데이터가 제1 기능 블록에 제공된다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 시스템은 데이터 라이트 명령 및 데이터 리드 명령을 생성하는 호스트 프로세서, 및 호스트 프로세서와 통신하는 장치 컨트롤러를 포함하는 데이터 저장 장치를 포함하고, 장치 컨트롤러는 호스트 프로세서로부터 데이터 라이트 명령을 수신하기 전, 유저 데이터를 수신하고, 장치 컨트롤러는 데이터 리드 명령에 응답하여, 호스트 프로세서에 제1 프로세스 데이터를 제공하고, 제1 프로세스 데이터는 유저 데이터가 장치 컨트롤러와 호스트 프로세서에 의해 프로세싱된 데이터이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 데이터 저장 시스템을 설명하기 위한 예시적인 도면이다.
도 2는 몇몇 실시예에 따른 제1 데이터 경로를 설명하기 위한 예시적인 도면이다.
도 3 및 도 4는 몇몇 실시예에 따른 제2 데이터 경로를 설명하기 위한 예시적인 도면이다.
도 5는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 라이트 동작을 설명하기 위한 예시적인 순서도이다.
도 6 내지 도 8은 각각 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 라이트 동작을 설명하기 위한 예시적인 도면이다.
도 9는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 순서도이다.
도 10 및 도 11은 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 도면이다.
도 12는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 순서도이다.
도 13 및 도 14는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 도면이다.
도 15는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 도면이다.
도 1은 몇몇 실시예에 따른 데이터 저장 시스템을 설명하기 위한 예시적인 도면이다.
도 1을 참조하면, 몇몇 실시예에 따른 데이터 저장 시스템은 데이터 저장 장치(100), 호스트(200) 및 시스템 버스(300)를 포함할 수 있다. 몇몇 실시예에 따른 데이터 저장 시스템은 PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터(internet data center(IDC)), SAN(storage area network), NAS(network attached storage) 또는 모바일 컴퓨팅 장치로 구현될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
상기 모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA (personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP (portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(MID: mobile internet device), 웨어러블 컴퓨터, 사물 인터넷(IoT: internet of things) 장치, 만물 인터넷(IoE: internet of everything) 장치, 드론(drone), RFID 장치 또는 e-북 (e-book) 등으로 구현될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
호스트(200)는 데이터 저장 장치(100)와 시스템 버스(300)를 통해 연결될 수 있다. 시스템 버스(300)는 예를 들어, UFS(Universal Flash Storage), SCSI((Small Computer System Interface), SAS(Serial Attached SCSI), SATA(Serial Advanced Technology Attachment), PCIe(Peripheral Component Interconnect Express), eMMC(embedded MultiMediaCard), FC(Fibre Channel), ATA(Advanced Technology Attachment), IDE(Intergrated Drive Electronics), USB(Universal Serial Bus), IEEE 1394(Firewire)등일 수 있다. 그러나, 실시예들이 이에 제한되지 않고, 시스템 버스(300)는 호스트(200)와 데이터 저장 장치(100) 사이에 데이터를 주고받을 수 있게 하는 인터페이스일 수 있다.
이하에서는 설명의 편의를 위해, 시스템 버스(300)가 PCIe인 것을 가정하여 설명한다. 그러나, 실시예들이 이에 한정되지 않으며, 앞서 예시한 전기적 인터페이스를 비롯한 임의의 인터페이스를 사용하는 임의의 데이터 저장 시스템에 적용 가능하다.
몇몇 실시예에 따르면, 데이터 저장 장치(100)는 장치 컨트롤러(110), 컨트롤러 메모리(120), 및 비휘발성 메모리(130)를 포함할 수 있다. 장치 컨트롤러(110)는 데이터 저장 장치(100)를 제어하기 위한 프로그램 코드를 실행할 수 있다. 예를 들어, 장치 컨트롤러(110)는 호스트(200)로부터의 요청에 따라 데이터 라이트(write) 동작 및 데이터 리드(read) 동작을 수행하기 위한 프로그램 코드를 실행할 수 있다. 다른 예를 들어, 장치 컨트롤러(110)는 비휘발성 메모리(130)에 대한 가비지 콜렉션(garbage collection) 동작 등 백그라운드(background) 동작을 수행하기 위한 프로그램 코드를 실행할 수 있다. 다른 예를 들어, 장치 컨트롤러(110)는 비휘발성 메모리(130)에 라이트될 데이터나, 비휘발성 메모리(130)로부터 리드될 데이터에 대한 데이터 프로세싱을 수행할 수 있다.
장치 컨트롤러(110)는 CPU(Central Processing Unit), GPU(Graphic Processing Unit), AP(Application Processor) 및 MPU(Micro Processor Unit) 등을 포함할 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
장치 컨트롤러(110)는 제1 기능 블록(112)과 제2 기능 블록(114)을 포함할 수 있다. 제1 기능 블록(112) 및 제2 기능 블록(114)은 각각 서로 독립된 기능을 수행하는 기능 블록을 의미할 수 있다. 제1 기능 블록(112)과 제2 기능 블록(114)은 각각 하드웨어(hardware), 펌웨어(firmware), 소프트웨어(software) 또는 이들의 조합으로 구현할 수 있다. 제1 기능 블록(112)과 제2 기능 블록(114)은 서로 연결되어, 버스(예컨대, 시스템 버스(300))를 이용하지 않고 직접 데이터가 교환될 수 있다. 예를 들어, 장치 컨트롤러(110)는 PCIe의 앤드 포인트(EP: End Point)에 연결되고, 제1 기능 블록(112)과 제2 기능 블록(114)은 PCIe 브릿지(bridge)를 통해 상호 연결될 수 있다. 그러나, 이는 단순히 예시일 뿐이며, 실시예들이 이에 제한되는 것은 아니다.
컨트롤러 메모리(120)는 데이터를 임시로 저장하는 메모리일 수 있다. 컨트롤러 메모리(120)는 제1 버퍼 메모리(122)와 제2 버퍼 메모리(124)를 포함할 수 있다. 비록 도 1은 제1 버퍼 메모리(122)와 제2 버퍼 메모리(124)가 컨트롤러 메모리(120) 내에 모두 포함되는 것으로 도시하였으나, 이는 설명의 편의를 위한 것이며, 실시예들이 이에 제한되지는 않는다. 예를 들어, 제1 버퍼 메모리(122)와 제2 버퍼 메모리(124)는 서로 동일한 메모리 장치의 서로 다른 영역으로 구현될 수도 있고, 각각 물리적으로 서로 다른 메모리 장치로 구현될 수도 있다. 또한, 도 1은 컨트롤러 메모리(120)가 장치 컨트롤러(110)와 구분되는 별개의 구성요소인 것으로 도시하였으나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 컨트롤러 메모리(120)는 장치 컨트롤러(110)내에 포함될 수 있다.
제1 버퍼 메모리(122)는 데이터 저장 장치(100)의 외부, 즉 호스트(200)로부터의 액세스가 허용되지 않는다. 반면, 제2 버퍼 메모리(124)는 호스트(200)로부터의 액세스가 허용된다. 다시 말해서, 제2 버퍼 메모리(124)는 데이터 저장 장치(100)의 외부에 노출되지만, 제1 버퍼 메모리(122)는 데이터 저장 장치(100)의 외부에 노출되지 않는다. 비록 도 1은 제2 버퍼 메모리(124)가 시스템 버스(300)를 통해 호스트(200)에 노출되는 것으로 도시하였으나, 이는 설명의 편의를 위한 것일 뿐 실시예들이 이에 제한되지는 않는다. 예를 들어, 호스트(200)와 제2 버퍼 메모리(124)는 직접 연결되어, 제2 버퍼 메모리(124)는 호스트(200)의 직접 메모리 액세스(DMA: Direct Memory Access)를 허용할 수 있다. 관련된 설명은 도 3 및 도 4를 참조하여 후술한다.
컨트롤러 메모리(120), 즉, 제1 버퍼 메모리(122)와 제2 버퍼 메모리(124)는 각각 정적 램(SRAM: Static Random Access Memory), 빠른 정적 램(Fast-SRAM), 및/또는 동적 램(DRAM: Dynamic RAM) 등으로 구현될 수 있으나, 실시예들이 이에 제한되지는 않는다.
비휘발성 메모리(130)는 데이터가 반영구적으로 저장되는 메모리이다. 비휘발성 메모리(130)는 플래시 메모리(Flash Memory), 저항성 램(RRAM), 상변화 메모리(PRAM), 자기저항 메모리(MRAM), 강유전체 메모리(FRAM), 스핀주입 자화반전 메모리(Spin STT-RAM) 중 적어도 하나를 포함할 수 있으나, 실시예들이 이러한 예시들에 제한되는 것은 아니다.
몇몇 실시예에 따르면, 제1 기능 블록(112), 제1 버퍼 메모리(122) 및 비휘발성 메모리(130)는 제1 데이터 경로(도 2의 P1)를 형성할 수 있다. 예시적 설명을 위해 도 2를 참조한다.
도 2는 몇몇 실시예에 따른 제1 데이터 경로를 설명하기 위한 예시적인 도면이다.
도 2를 참조하면, 제1 기능 블록(112)은 제1 버퍼 메모리(122)와 연결될 수 있다. 또한, 제1 기능 블록(112)은 비휘발성 메모리(130)와 연결될 수 있다. 다시 말해서, 제1 기능 블록(112), 제1 버퍼 메모리(122) 및 비휘발성 메모리(130)는 데이터가 전송되는 제1 데이터 경로(P1)를 형성할 수 있다. 예를 들어, 제1 데이터 경로(P1)는 NVMe 인터페이스로 구현될 수 있다.
몇몇 실시예에 따르면, 제1 기능 블록(112)은 비휘발성 메모리(130)를 제어하기 위한 펌웨어 또는 소프트웨어를 구동하도록 구성될 수 있다. 예를 들어, 제1 기능 블록(112)은 비휘발성 메모리(130)에 칩 인에이블 신호, 라이트 인에이블 신호 및 리드 인에이블 신호 등을 제공할 수 있다. 제1 기능 블록(112)은 제1 버퍼 메모리(122) 및 비휘발성 메모리(130)에 대한 데이터의 입출력을 제어할 수 있다. 예를 들어, 비휘발성 메모리(130)에 대한 가비지 콜렉션 동작이 수행될 때, 제1 기능 블록(112)은 비휘발성 메모리(130)로부터 데이터를 리드하여, 제1 버퍼 메모리(122)에 저장할 수 있다. 제1 기능 블록(112)은 비휘발성 메모리(130)의 특정 메모리 블록에 대해 이레이즈(erase) 전압을 인가하거나, 제1 버퍼 메모리(122)에 저장된 데이터를 다시 비휘발성 메모리(130)에 라이트할 수 있다. 다른 예를 들어, 호스트(200)로부터의 데이터 리드 요청에 따라, 제1 기능 블록(112)은 비휘발성 메모리(130)에서 리드된 데이터를 임시로 제1 버퍼 메모리(122)에 저장할 수 있고, 이를 호스트(200)에 제공할 수 있다.
몇몇 실시예에 따르면, 제1 버퍼 메모리(122)는 보안이 요구되는 데이터(예를 들어, 암호화 코드 또는 매핑 데이터 등)가 저장될 수 있다. 따라서, 제1 버퍼 메모리(122)는 데이터 저장 장치(100) 외부에 노출되지 않도록 구성한다. 전술한 바와 같이, 호스트(200)는 제1 버퍼 메모리(122)에 액세스할 수 없으며, 제1 버퍼 메모리(122)에 저장된 데이터를 직접 리드하거나 변경할 수 없다.
다시 도 1을 참조하면, 제2 기능 블록(114)과 제2 버퍼 메모리(124)는 제2 데이터 경로(도 3 및 도 4의 P2)를 형성할 수 있다. 예시적 설명을 위해, 도 3 및 도 4를 참조한다.
도 3 및 도 4는 몇몇 실시예에 따른 제2 데이터 경로를 설명하기 위한 예시적인 도면이다.
도 3을 참조하면, 제2 기능 블록(114)은 제2 버퍼 메모리(124)와 연결될 수 있다. 다시 말해서, 제2 기능 블록(114)과 제2 버퍼 메모리(124)는 서로 연결되어, 제2 데이터 경로(P2)를 형성할 수 있다.
몇몇 실시예에 따르면, 제2 기능 블록(114)은 수신한 데이터에 대해, 제1 데이터 프로세싱을 수행할 수 있다. 제2 기능 블록(114)은 데이터 압축 엔진(301), 데이터 암호화 엔진(302), 데이터 스캐닝 엔진(303), 데이터 필터링 엔진(304), 데이터 해싱 엔진(305) 및 뉴럴 네트워크 엔진(306) 중 적어도 하나를 포함할 수 있다. 다시 말해서, 제2 기능 블록(114)은 데이터 압축 엔진(301), 데이터 암호화 엔진(302), 데이터 스캐닝 엔진(303), 데이터 필터링 엔진(304), 데이터 해싱 엔진(305) 및 뉴럴 네트워크 엔진(306) 중 적어도 하나를 이용하여, 제1 데이터 프로세싱을 수행할 수 있다. 예를 들어, 제1 데이터 프로세싱은 데이터 압축 또는 압축해제, 데이터 암호화 또는 해독, 데이터 스캐닝, 데이터 필터링 및 데이터 해싱 중 적어도 하나의 기능을 수행하거나, 수신한 데이터에 대한 딥 러닝 트레이닝(deep learning training) 중 적어도 하나일 수 있다.
몇몇 실시예에 따르면, 제2 기능 블록(114)에 의해 제1 데이터 프로세싱이 수행된 데이터는, 제2 버퍼 메모리(124)에 제공될 수 있다. 다시 말해서, 제2 버퍼 메모리(124)는 제1 데이터 프로세싱의 결과 데이터를 저장할 수 있다. 뿐만 아니라, 제2 버퍼 메모리(124)는 제1 데이터 프로세싱의 중간 데이터도 역시 저장할 수 있다. 예를 들어, 제2 기능 블록(114)은 데이터 압축 엔진(301)을 이용하여, 수신된 데이터를 압축할 수 있다. 이때, 압축된 데이터 또는 중간 데이터는 제2 버퍼 메모리(124)에 저장될 수 있다.
전술한 바와 같이, 제2 버퍼 메모리(124)는 데이터 저장 장치(100)의 외부, 즉 호스트(200)에서의 액세스를 허용할 수 있다. 몇몇 실시예에 따르면, 도 3에서 도시된 바와 같이, 호스트(200)는 직접 메모리 액세스(DMA: Direct Memory Access)를 통해 제2 버퍼 메모리(124)에 액세스할 수 있다. 다른 몇몇 실시예에 따르면, 도 4에서 도시된 바와 같이, 호스트(200)는 시스템 버스(300)를 통해 제2 버퍼 메모리(124)에 액세스할 수 있다. 몇몇 실시예에 따르면, 호스트(200)는 제2 버퍼 메모리(124)에 액세스하여, 제2 버퍼 메모리(124)에 저장된 데이터에 대해 제2 데이터 프로세싱을 수행할 수 있다. 구체적인 실시예는 후술한다.
다시 도 1을 참조하면, 호스트(200)는 호스트 프로세서(210)와 호스트 메모리(220)를 포함할 수 있다. 호스트 프로세서(210)는 호스트 메모리(220)와 연결될 수 있다. 호스트 프로세서(210)는 CPU, GPU, AP 및 MPU 등을 포함할 수 있으나, 실시예들이 이에 제한되는 것은 아니다. 또한, 호스트 메모리(220)는 정적 램(SRAM), 빠른 정적 램(Fast-SRAM), 및/또는 동적 램(DRAM) 등으로 구현될 수 있으나, 실시예들이 이에 제한되지는 않는다.
호스트 프로세서(210)는 데이터 저장 장치(100)를 제어할 수 있다. 예를 들어, 호스트 프로세서(210)는 데이터 라이트 명령을 생성하고, 이를 제1 기능 블록(112)에 제공할 수 있다. 다른 예를 들어, 호스트 프로세서(210)는 호스트 메모리(220)에 저장된 데이터를 제2 기능 블록(114)에 제공할 수 있다. 또한, 호스트 프로세서(210)는 데이터 저장 장치(100)의 제2 버퍼 메모리(124)에 액세스하여, 제2 버퍼 메모리(124)에 저장된 데이터에 대한 데이터 프로세싱(예컨대, 제2 데이터 프로세싱)을 수행할 수 있다. 호스트 프로세서(210)가 수행하는 기능들은 각각 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합을 통해 구현될 수 있다.
도 1 내지 도 4를 참조하면, 호스트(200)의 관점에서, 제1 데이터 경로(P1)와 제2 데이터 경로(P2)는 서로 독립적인 데이터 경로를 형성한다. 그러나, 제1 기능 블록(112)과 제2 기능 블록(114)은 서로 연결되어 있기 때문에, 제1 데이터 경로(P1)와 제2 데이터 경로(P2) 사이의 직접적인 데이터 교환이 가능하다. 다시 말해서, 제1 데이터 경로(P1)와 제2 데이터 경로(P2)는 시스템 버스(300)를 이용하지 않고, 서로 데이터가 교환될 수 있다. 즉, 시스템 버스(300)를 이용하지 않으면서, 제1 데이터 경로(P1)와 제2 데이터 경로(P2) 사이의 데이터 교환이 가능하여, 데이터 송/수신의 레이턴시(latency)가 감소될 수 있다. 제1 데이터 경로(P1)와 제2 데이터 경로(P2)를 이용한 데이터 라이트 동작을 설명하기 위해, 도 5 내지 도 8을 참조하여 설명한다.
도 5는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 라이트 동작을 설명하기 위한 예시적인 순서도이다. 도 6 내지 도 8은 각각 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 라이트 동작을 설명하기 위한 예시적인 도면이다.
도 1, 도 5 및 도 6을 참조하면, 호스트 프로세서(210)가 데이터 라이트 명령(또는 요청)을 생성하기 전, 호스트 프로세서(210)는 데이터 저장 장치(100)에 제1 유저 데이터(UD_1)를 제공할 수 있다. 다시 말해서, 데이터 저장 장치(100), 예를 들어, 제2 기능 블록(114)은 호스트(200)로부터 제1 유저 데이터(UD_1)를 수신할 수 있다(S510). 제2 기능 블록(114)은 수신된 제1 유저 데이터(UD_1)에 대해, 제1 데이터 프로세싱을 수행할 수 있다. 전술한 바와 같이, 제2 기능 블록(114)은 제1 데이터 프로세싱을 수행하기 위해, 제2 기능 블록(114)에 포함된 데이터 압축 엔진(301), 데이터 암호화 엔진(302), 데이터 스캐닝 엔진(303), 데이터 필터링 엔진(304), 데이터 해싱 엔진(305) 및 뉴럴 네트워크 엔진(306) 중 적어도 하나를 이용할 수 있다. 예를 들어, 제2 기능 블록(114)은, 데이터 압축 엔진(301)을 이용하여, 수신된 제1 유저 데이터(UD_1)에 대해 데이터 압축 프로세싱을 수행할 수 있다.
설명의 편의를 위해, 제2 기능 블록(114)에 의해 제1 데이터 프로세싱이 수행된 제1 유저 데이터(UD_1)를 제1 프로세스 데이터(PD_1)로 정의한다. 예를 들어, 제1 프로세스 데이터(PD_1)는 데이터 압축 프로세싱이 수행된 제1 유저 데이터(UD_1)를 의미할 수 있다. 다시 말해서, 제2 기능 블록(114)은 제1 유저 데이터(UD_1)를 이용하여, 제1 프로세스 데이터(PD_1)를 생성할 수 있다. 생성된 제1 프로세스 데이터(PD_1)는 제2 버퍼 메모리(124)에 저장될 수 있다(S520).
비록, 도 6은 호스트(200)로부터 수신된 제1 유저 데이터(UD_1)가 바로 제2 기능 블록(114)에 제공되어, 제1 프로세스 데이터(PD_1)가 생성되는 것으로 도시하였으나, 실시예들이 이에 제한되는 것은 아니다. 예를 들어, 호스트(200)로부터 수신된 제1 유저 데이터(UD_1)는 일단 제2 버퍼 메모리(124)에 저장되고, 제2 기능 블록(114)은 제2 버퍼 메모리(124)로부터 제1 유저 데이터(UD_1)를 리드하여, 제1 프로세스 데이터(PD_1)를 생성할 수도 있다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 본 발명의 범위를 벗어나지 않으면서, 본 발명의 실시예들을 변경 또는 채용하여 다양한 데이터 저장 시스템을 구현할 수 있을 것이다.
도 1, 도 5 및 도 7을 참조하면, 호스트 프로세서(210)는 제2 버퍼 메모리(124)에 액세스할 수 있다. 호스트 프로세서(210)는 제2 버퍼 메모리(124)에 저장된 제1 프로세스 데이터(PD_1)에 대해, 제2 데이터 프로세싱을 수행할 수 있다. 제2 데이터 프로세싱은 제1 데이터 프로세싱 이후 단계의 데이터 프로세싱일 수 있다. 예를 들어, 제1 데이터 프로세싱이 데이터 압축 프로세싱인 경우, 제2 데이터 프로세싱은 압축된 데이터에 대한 패킹(packing) 프로세싱일 수 있다. 예를 들어, 제1 데이터 프로세싱에 의해, 압축되어 파편화된 데이터들(즉, 제1 프로세스 데이터(PD_1))은 제2 데이터 프로세싱에 의해 패킹되어 연속적으로 유효한 값을 갖는 데이터 페이지들로 변경될 수 있다. 설명의 편의를 위해, 호스트 프로세서(210)에 의해 제2 데이터 프로세싱이 수행된 제1 프로세스 데이터(PD_1)를 제2 프로세스 데이터(PD_2)로 정의한다. 다시 말해서, 호스트 프로세서(210)는 제2 버퍼 메모리(124)에 저장된 제1 프로세스 데이터(PD_1)를 이용하여, 제2 프로세스 데이터(PD_2)를 생성할 수 있다(S530).
몇몇 실시예에 따르면, 호스트 프로세서(210)가 제2 프로세스 데이터(PD_2)를 생성할 때, 제1 메타 데이터(MD_1)는 호스트 메모리(220)에 저장될 수 있다. 제1 메타 데이터(MD_1)는 예를 들어 제1 프로세스 데이터(PD_1)에 대한 크기 정보 및 오프셋 정보 등일 수 있다. 제1 메타 데이터(MD_1)는 제3 데이터 프로세싱을 수행할 때 이용될 수 있다. 구체적 내용은 후술한다.
비록 도 7은 제1 메타 데이터(MD_1)가 제2 프로세스 데이터(PD_2)와 분리되어, 호스트 메모리(220)에 저장되는 것으로 설명하였으나, 실시예들이 이에 제한되지는 않는다. 다른 몇몇 실시예에 따르면, 제1 메타 데이터(MD_1)는 호스트 메모리(220)가 아닌 제2 버퍼 메모리(124)에 저장될 수도 있다. 또 다른 몇몇 실시예에 따르면, 제2 프로세스 데이터(PD_2)는 제1 메타 데이터(MD_1)를 포함할 수 있다. 예를 들어, 호스트 프로세서(210)가 제1 프로세스 데이터(PD_1)를 이용하여, 제2 프로세스 데이터(PD_2)를 생성할 때, 제1 프로세스 데이터(PD_1)에 대한 크기 정보 등을 제2 프로세스 데이터(PD_2) 내에 포함시킬 수 있다(도 11 참조). 본 발명의 기술 분야에서 통상의 지식을 가진 자는 다양한 방식으로, 제1 메타 데이터(MD_1)를 관리할 수 있을 것이다.
몇몇 실시예에 따르면, 호스트 프로세서(210)에 의해 제2 프로세스 데이터(PD_2)가 생성되면, 호스트 프로세서(210)는 제2 프로세스 데이터(PD_2)를 이용하여 데이터 라이트 명령을 생성할 수 있다. 호스트 프로세서(210)는 생성한 데이터 라이트 명령을 장치 컨트롤러(110)에 제공할 수 있다. 다시 말해서, 데이터 저장 장치(100)는 호스트(200)로부터 데이터 라이트 명령을 수신하기 전, 제1 유저 데이터(UD_1)를 수신할 수 있다.
도 1 내지 도 5 및 도 8을 참조하면, 장치 컨트롤러(110)는 제2 프로세스 데이터(PD_2)에 대한 데이터 라이트 명령을 수신할 수 있다(S540). 장치 컨트롤러(110)는 제2 프로세스 데이터(PD_2)에 대한 데이터 라이트 명령을 수신하면, 제2 데이터 경로(P2)를 통해 제2 프로세스 데이터(PD_2)를 리드하고, 제1 데이터 경로(P1)를 통해 제2 프로세스 데이터(PD_2)를 비휘발성 메모리(130)에 저장할 수 있다(S550). 다시 말해서, 장치 컨트롤러(110)는 제2 프로세스 데이터에 대한 데이터 라이트 명령을 수신하면, 제2 기능 블록(114)을 이용하여, 제2 버퍼 메모리(124)에 저장된 제2 프로세스 데이터(PD_2)를 리드할 수 있다. 이어서, 제2 프로세스 데이터(PD_2)는 시스템 버스(300)를 통하지 않고, 제2 기능 블록(114)에서 제1 기능 블록(112)으로 직접 제공될 수 있다. 제1 기능 블록(112)은 제2 기능 블록(114)으로부터 제2 프로세스 데이터(PD_2)를 수신할 수 있다. 제1 기능 블록(112)은 수신된 제2 프로세스 데이터(PD_2)를 비휘발성 메모리(130)에 제공하여 저장할 수 있다. 이때, 제2 프로세스 데이터(PD_2)가 저장되는 비휘발성 메모리(130)의 위치 등에 관한 어드레스 정보(또는 매핑 정보)는, 제2 메타 데이터(MD_2)로 제1 버퍼 메모리(122)에 저장될 수 있다.
몇몇 실시예에 따르면, 제1 데이터 프로세싱은 장치 컨트롤러(110)에 의해 수행되고, 제2 데이터 프로세싱은 호스트 프로세서(210)에 의해 수행될 수 있다. 즉, 데이터 저장 장치(100)에 라이트될 데이터에 대한 데이터 프로세싱은 장치 컨트롤러(110)와 호스트 프로세서(210)에 분배되어, 장치 컨트롤러(110)와 호스트 프로세서(210)의 연산 오버헤드(overhead)를 감소시킬 수 있다.
또한, 장치 컨트롤러(110)는 호스트 프로세서(210)와 비교하여 상대적으로 낮은 성능을 가질 수 있다. 따라서, 장치 컨트롤러(110)만 이용하는 경우 상대적으로 복잡한 데이터 프로세싱이 불가능할 수 있다. 그러나 몇몇 실시예에 따르면, 단순한 연산 등의 프로세싱은 장치 컨트롤러(110)에서 구현되도록 하고, 복잡한 연산이나 메타 데이터 관리 등의 프로세싱은 호스트 프로세서(210)에서 구현되도록 함으로써, 더욱 복잡하고 효과적인 데이터 프로세싱이 가능할 수 있다. 또한, 전술한 바와 같이 제1 기능 블록(112)과 제2 기능 블록(114)이 서로 연결되어, 직접 데이터 교환이 가능하므로 데이터 교환에 따른 레이턴시(latency)도 효과적으로 감소될 수 있다.
도 9는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 순서도이다. 도 10 및 도 11은 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 도면이다.
도 1, 도 9 및 도 10을 참조하면, 호스트 프로세서(210)는 장치 컨트롤러(110)에 제2 프로세스 데이터(PD_2)와 관련된 데이터 리드 명령을 제공할 수 있다. 장치 컨트롤러(110)는 제2 프로세스 데이터(PD_2)와 관련된 데이터 리드 명령을 수신할 수 있다(S910).
비휘발성 메모리(130)에 저장된 제2 프로세스 데이터(PD_2)는 제1 데이터 경로(P1)를 통해 리드되어, 제2 데이터 경로(P2)를 통해 제2 버퍼 메모리(124)에 저장될 수 있다. 다시 말해서, 데이터 리드 명령을 수신한 제1 기능 블록(112)은 제1 버퍼 메모리(122)의 제2 메타 데이터(MD_2)를 참조하여, 비휘발성 메모리(130)에서 제2 프로세스 데이터(PD_2)를 리드할 수 있다. 이때, 제2 프로세스 데이터(PD_2)는 제1 메타 데이터(MD_1)를 포함할 수 있다. 제1 기능 블록(112)은 리드된 제2 프로세스 데이터(PD_2)를 제2 기능 블록(114)에 직접 제공할 수 있다. 제2 기능 블록(114)은 제공된 제2 프로세스 데이터(PD_2)에 대해, 제3 데이터 프로세싱을 수행할 수 있다. 설명의 편의를 위해, 제2 기능 블록(114)에 의해 제3 데이터 프로세싱이 수행된 제2 프로세스 데이터(PD_2)를 제3 프로세스 데이터(PD_3)로 정의한다. 다시 말해서, 제2 기능 블록(114)은 제2 프로세스 데이터(PD_2)를 이용하여, 제3 프로세스 데이터(PD_3)를 생성할 수 있다(S920). 몇몇 실시예에 따르면, 제2 기능 블록(114)은 제3 프로세스 데이터(PD_3)를 생성하기 위해, 제2 프로세스 데이터(PD_2)에 포함된 제1 메타 데이터(MD_1)를 참조할 수 있다. 제2 기능 블록(114)의 제3 데이터 프로세싱은 제2 버퍼 메모리(124)에서 수행될 수 있다. 제2 프로세스 데이터(PD_2)가 압축된 데이터라고 가정하면, 제3 프로세스 데이터(PD_3)는 예를 들어, 압축 해제된 데이터일 수 있다.
도 1, 도 9 및 도 11을 참조하면, 제1 기능 블록(112)은 제2 기능 블록(114)으로부터 제3 프로세스 데이터(PD_3)를 제공받을 수 있다. 호스트(200)로부터의 데이터 리드 명령에 응답하여, 제1 기능 블록(112)은 제공받은 제3 프로세스 데이터(PD_3)를 호스트(200)에 제공할 수 있다(S930).
도 12는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 순서도이다. 도 13 및 도 14는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해, 중복되거나 유사한 내용은 생략하거나 간단히 설명한다.
도 1, 도 12 내지 도 14를 참조하면, 제1 기능 블록(112)은 호스트 프로세서(210)로부터 제2 프로세스 데이터(PD_2)와 관련된 데이터 리드 명령을 수신할 수 있다(S1210). 제1 기능 블록(112)은 제1 데이터 경로(P1)를 통해, 비휘발성 메모리(130)에 저장된 제2 프로세스 데이터(PD_2)를 리드하여, 호스트(200)에 제공할 수 있다(S1220). 다시 말해서, 제1 기능 블록(112)은 제1 버퍼 메모리(122)에 저장된 제2 메타 데이터(MD_2)를 참조하여, 제2 프로세스 데이터(PD_2)를 리드하고, 리드된 제2 프로세스 데이터(PD_2)를 호스트 프로세서(210)에 제공할 수 있다. 호스트 프로세서(210)는 제공받은 제2 프로세스 데이터(PD_2)를 호스트 메모리(220)에 저장할 수 있다. 호스트 프로세서(210)는 호스트 메모리(220)에 저장된 제1 메타 데이터(MD_1)를 참조하여, 제2 프로세스 데이터(PD_2)에 대해 제3 데이터 프로세싱을 수행할 수 있다. 다시 말해서, 호스트 프로세서(210)는 제2 프로세스 데이터(PD_2)를 이용하여, 제3 프로세스 데이터(PD_3)를 생성할 수 있다(S1230).
예를 들어, 제2 프로세스 데이터(PD_2)가 압축비가 x:1로 압축된 데이터임을 가정하고, 시스템 버스(300)의 최대 데이터 리드 속도를 y (byte/s)라고 가정한다. 몇몇 실시예에 따르면, 제3 데이터 프로세싱, 예를 들어, 압축 해제 프로세싱은 호스트 프로세서(210)에 의해 수행될 수 있다. 이때, 호스트(200)에 제공된 제2 프로세스 데이터(PD_2)는 x:1로 압축된 데이터가 y (byte/s)의 속도로 리드되므로, 호스트 프로세서(210)에서 압축 해제 프로세싱이 수행되는 경우, 호스트(200)가 데이터를 리드하는 최대 속도는 x*y (byte/s)일 수 있다. 다시 말해서, 몇몇 실시예에 따른 데이터 저장 시스템은 시스템 버스(300)가 물리적으로 제공하는 최대 데이터 리드 속도보다 더 향상된 속도로 데이터를 리드할 수 있다.
도 15는 몇몇 실시예에 따른 데이터 저장 시스템의 데이터 리드 동작을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해, 중복되거나 유사한 내용은 생략하거나 간단히 설명한다.
도 1, 도 12, 도 13 및 도 15를 참조하면, 호스트(200)는 프로세스 모듈(1510)을 더 포함할 수 있다. 프로세스 모듈(1510)은 호스트 프로세서(1510)와 구별되는 모듈일 수 있다. 프로세스 모듈(1510)은 호스트 메모리(220)에 액세스할 수 있다. 몇몇 실시예에 따르면, 프로세스 모듈(1510)은 호스트 메모리(220)에 저장된 데이터에 대해, 제3 데이터 프로세싱을 수행할 수 있다. 다시 말해서, 호스트 프로세서(210)와 구별되는 프로세스 모듈(1510)은 제2 프로세스 데이터(PD_2)를 이용하여, 제3 프로세스 데이터(PD_3)를 생성할 수 있다. 즉, 호스트 프로세서(210)는 데이터 저장 장치(100)로부터 제2 프로세스 데이터(PD_2)를 수신하고, 이를 호스트 메모리(220)에 저장할 수 있다. 이어서, 프로세스 모듈(1510)은 호스트 메모리(220)에 저장된 제1 메타 데이터(MD_1)를 참조하여, 제3 프로세스 데이터(PD_3)를 생성할 수 있다.
몇몇 실시예에 따르면, 제3 데이터 프로세싱은 호스트 프로세서(210)와 별개의 모듈, 즉 프로세스 모듈(1510)에 의해 수행될 수 있다. 따라서, 호스트 프로세서(210)의 오버 헤드(overhead)는 감소될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 데이터 저장 장치 200: 호스트
300: 시스템 버스 110: 장치 컨트롤러
120: 컨트롤러 메모리 130: 비휘발성 메모리
210: 호스트 프로세서 220: 호스트 메모리
1510: 프로세스 모듈

Claims (10)

  1. 서로 독립된 기능을 수행하는 제1 및 제2 기능 블록을 포함하는 장치 컨트롤러;
    상기 제1 기능 블록과 연결되는 제1 버퍼 메모리;
    상기 제2 기능 블록과 연결되고, 데이터 저장 장치 외부의 액세스를 허용하는 제2 버퍼 메모리; 및
    상기 제1 기능 블록과 연결되는 비휘발성 메모리를 포함하고,
    상기 제1 기능 블록과 상기 제2 기능 블록은 서로 연결되어 데이터가 직접 교환되고,
    상기 제1 기능 블록은 데이터 라이트 명령에 따라, 상기 제2 기능 블록으로부터 제1 프로세스 데이터를 수신하여 상기 비휘발성 메모리에 라이트하는 데이터 저장 장치.
  2. 제 1항에 있어서,
    상기 제1 버퍼 메모리는 상기 데이터 저장 장치 외부의 액세스를 비허용하는 데이터 저장 장치.
  3. 제 1항에 있어서,
    상기 제2 기능 블록은,
    유저 데이터를 수신하여, 제1 데이터 프로세싱을 통해 제2 프로세스 데이터를 생성하고,
    상기 제2 프로세스 데이터를 상기 제2 버퍼 메모리에 저장하는 데이터 저장 장치.
  4. 제 1항에 있어서,
    상기 제1 기능 블록은 데이터 리드 명령에 따라, 상기 비휘발성 메모리에서 상기 제1 프로세스 데이터를 리드하여, 상기 데이터 저장 장치 외부에 제공하는 데이터 저장 장치.
  5. 제 1항에 있어서,
    상기 제2 기능 블록은 데이터 압축 엔진, 데이터 암호화 엔진, 데이터 스캐닝 엔진, 데이터 필터링 엔진, 데이터 해싱 엔진 및 뉴럴 네트워크 엔진 중 적어도 하나를 포함하는 데이터 저장 장치.
  6. 유저 데이터를 수신하여 제1 데이터 프로세싱을 수행하는 제1 기능 블록;
    상기 제1 기능 블록과 연결되고, 상기 제1 데이터 프로세싱이 수행된 유저 데이터를 제1 프로세스 데이터로 저장하는 제1 버퍼 메모리;
    상기 제1 프로세스 데이터에 기초하여 결정된 데이터 라이트 명령을 수신하는 제2 기능 블록; 및
    상기 제2 기능 블록과 연결되고, 상기 제1 버퍼 메모리에 저장된 데이터를 제공받아 저장하는 비휘발성 메모리를 포함하고,
    상기 데이터 라이트 명령이 상기 제2 기능 블록에 제공되기 전, 상기 유저 데이터가 상기 제1 기능 블록에 제공되는 데이터 저장 장치.
  7. 제 6항에 있어서,
    상기 제1 기능 블록과 상기 제2 기능 블록은 서로 연결되어 직접 데이터 교환이 수행되는 데이터 저장 장치.
  8. 제 6항에 있어서,
    상기 제1 버퍼 메모리는 상기 데이터 저장 장치 외부의 액세스를 비허용하는 데이터 저장 장치.
  9. 데이터 라이트 명령 및 데이터 리드 명령을 생성하는 호스트 프로세서; 및
    상기 호스트 프로세서와 통신하는 장치 컨트롤러를 포함하는 데이터 저장 장치를 포함하고,
    상기 장치 컨트롤러는 상기 호스트 프로세서로부터 상기 데이터 라이트 명령을 수신하기 전, 유저 데이터를 수신하고,
    상기 장치 컨트롤러는 상기 데이터 리드 명령에 응답하여, 상기 호스트 프로세서에 제1 프로세스 데이터를 제공하고,
    상기 제1 프로세스 데이터는 상기 유저 데이터가 상기 장치 컨트롤러와 상기 호스트 프로세서에 의해 프로세싱된 데이터인 데이터 저장 시스템.
  10. 제 9항에 있어서,
    상기 장치 컨트롤러는 상기 호스트 프로세서로부터 수신한 유저 데이터를 이용하여, 제2 프로세스 데이터를 생성하고,
    상기 호스트 프로세서는 상기 제2 프로세스 데이터를 이용하여 상기 제1 프로세스 데이터를 생성하고, 상기 제1 프로세스 데이터를 이용하여 상기 데이터 라이트 명령을 생성하는 데이터 저장 시스템.
KR1020190025059A 2019-03-05 2019-03-05 데이터 저장 장치 및 시스템 KR102659832B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190025059A KR102659832B1 (ko) 2019-03-05 2019-03-05 데이터 저장 장치 및 시스템
US16/560,417 US11137921B2 (en) 2019-03-05 2019-09-04 Data storage device and system
CN202010118988.7A CN111666039A (zh) 2019-03-05 2020-02-26 数据储存装置和系统
US17/468,107 US11768618B2 (en) 2019-03-05 2021-09-07 Distributed processing data storage device and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190025059A KR102659832B1 (ko) 2019-03-05 2019-03-05 데이터 저장 장치 및 시스템

Publications (2)

Publication Number Publication Date
KR20200106620A KR20200106620A (ko) 2020-09-15
KR102659832B1 true KR102659832B1 (ko) 2024-04-22

Family

ID=72336335

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190025059A KR102659832B1 (ko) 2019-03-05 2019-03-05 데이터 저장 장치 및 시스템

Country Status (3)

Country Link
US (2) US11137921B2 (ko)
KR (1) KR102659832B1 (ko)
CN (1) CN111666039A (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005065172A (ja) 2003-08-20 2005-03-10 Renesas Technology Corp データ処理装置
US20090254705A1 (en) 2008-04-07 2009-10-08 International Business Machines Corporation Bus attached compressed random access memory

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI233616B (en) * 2004-05-06 2005-06-01 Carry Computer Eng Co Ltd Silicon storage media and controller thereof, controlling method thereof, and data frame based storage media
US7561930B2 (en) * 2006-10-02 2009-07-14 Fisher-Rosemount Systems, Inc. Dynamic modifier function blocks for use in a process control system
CN101657798A (zh) * 2007-04-11 2010-02-24 松下电器产业株式会社 数据存储系统、数据恢复系统、数据存储方法和数据恢复方法
US9582431B2 (en) * 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
US9063663B2 (en) * 2010-09-21 2015-06-23 Hitachi, Ltd. Semiconductor storage device and data control method thereof
CN103620690A (zh) * 2011-04-29 2014-03-05 Lsi公司 加密传输固态盘控制器
WO2013022915A1 (en) * 2011-08-09 2013-02-14 Lsi Corporation I/o device and computing host interoperation
KR102081980B1 (ko) 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US9778885B2 (en) * 2013-03-15 2017-10-03 Skyera, Llc Compressor resources for high density storage units
US9009375B2 (en) * 2013-06-11 2015-04-14 Lsi Corporation Sharing of bypassed I/O transaction information
US9336135B1 (en) * 2013-07-24 2016-05-10 NXGN Data, Inc. Systems and methods for performing search and complex pattern matching in a solid state drive
US9336313B1 (en) * 2013-07-24 2016-05-10 NXGN Data, Inc. Systems and methods for performing single and multi threaded searches and complex pattern matching in a solid state drive
JP6009676B2 (ja) * 2013-08-09 2016-10-19 株式会社日立製作所 データ圧縮装置およびデータ伸張装置
US9620202B2 (en) * 2013-11-01 2017-04-11 Seagate Technology Llc Reduction or elimination of a latency penalty associated with adjusting read thresholds for non-volatile memory
WO2015145647A1 (ja) * 2014-03-27 2015-10-01 株式会社日立製作所 ストレージ装置とデータ処理方法及びストレージシステム
KR102157668B1 (ko) * 2014-04-03 2020-09-22 에스케이하이닉스 주식회사 호스트와 통신하는 메모리 컨트롤러, 그것의 동작 방법 및 그것을 포함하는 컴퓨팅 시스템
KR101621139B1 (ko) * 2014-04-15 2016-05-16 동양물산기업 주식회사 뿌리 수확을 위한 줄기 제거장치
KR102229024B1 (ko) * 2014-12-03 2021-03-17 삼성전자주식회사 스스로 에러를 검출하고 로그를 저장할 수 있는 데이터 저장 장치와 이를 포함하는 시스템
WO2016135954A1 (ja) * 2015-02-27 2016-09-01 株式会社日立製作所 ストレージ装置および不揮発メモリデバイス
US20160378352A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Efficient solid state drive data compression scheme and layout
US20170068458A1 (en) 2015-09-03 2017-03-09 Qualcomm Incorporated Hardware-accelerated storage compression
KR20170060739A (ko) * 2015-11-25 2017-06-02 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US10037245B2 (en) * 2016-03-29 2018-07-31 International Business Machines Corporation Raid system performance enhancement using compressed data and byte addressable storage devices
US10769098B2 (en) * 2016-04-04 2020-09-08 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
US9965210B2 (en) * 2016-05-27 2018-05-08 Ngd Systems, Inc. System and methods for in-storage on-demand data decompression
US20170371593A1 (en) * 2016-06-23 2017-12-28 Qualcomm Incorporated Selective flash memory compression/decompression using a storage usage collar
CA3028821C (en) 2016-06-24 2023-01-24 Huawei Technologies Co., Ltd. Data processing method, storage apparatus, solid state disk, and storage system
KR20180011376A (ko) * 2016-07-21 2018-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102558947B1 (ko) * 2016-08-25 2023-07-25 에스케이하이닉스 주식회사 데이터 저장 장치
JP6553566B2 (ja) * 2016-09-23 2019-07-31 東芝メモリ株式会社 メモリシステムおよび制御方法
KR102611638B1 (ko) 2016-09-27 2023-12-08 삼성전자주식회사 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템
KR20180040769A (ko) * 2016-10-12 2018-04-23 삼성전자주식회사 저장 장치 및 그것의 동작 방법
JP6692448B2 (ja) * 2016-11-08 2020-05-13 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
US10268413B2 (en) * 2017-01-27 2019-04-23 Samsung Electronics Co., Ltd. Overflow region memory management
JP6820060B2 (ja) 2017-03-29 2021-01-27 日本電気株式会社 ストレージ装置、ストレージ装置の制御方法及びプログラム
CN110770710B (zh) * 2017-05-03 2023-09-05 艾德蒂克通信公司 用于控制数据加速的装置和方法
US10229052B2 (en) * 2017-05-31 2019-03-12 Seagate Technology Llc Reverse map logging in physical media
JP7109992B2 (ja) * 2018-05-22 2022-08-01 キオクシア株式会社 メモリシステムおよび制御方法
TWI703438B (zh) * 2018-09-11 2020-09-01 慧榮科技股份有限公司 映射表更新方法
US11327929B2 (en) * 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US11112972B2 (en) * 2018-12-05 2021-09-07 Samsung Electronics Co., Ltd. System and method for accelerated data processing in SSDs
JP2020154525A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステムおよび情報処理システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005065172A (ja) 2003-08-20 2005-03-10 Renesas Technology Corp データ処理装置
US20090254705A1 (en) 2008-04-07 2009-10-08 International Business Machines Corporation Bus attached compressed random access memory

Also Published As

Publication number Publication date
US11768618B2 (en) 2023-09-26
US20200285392A1 (en) 2020-09-10
CN111666039A (zh) 2020-09-15
US20210405875A1 (en) 2021-12-30
US11137921B2 (en) 2021-10-05
KR20200106620A (ko) 2020-09-15

Similar Documents

Publication Publication Date Title
KR102395538B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102580820B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102395190B1 (ko) 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
US11714578B2 (en) Method of operating storage device, storage device performing the same and method of operating storage system using the same
JP6324494B2 (ja) 記憶システムおよびエイリアス・メモリ
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
US20240103755A1 (en) Data processing system and method for accessing heterogeneous memory system including processing unit
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
KR20200114086A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR20140128819A (ko) 아토믹 라이트 방법
KR102634776B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102659832B1 (ko) 데이터 저장 장치 및 시스템
KR102570581B1 (ko) 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
KR20150102329A (ko) 데이터 저장 장치
CN113495850B (zh) 管理垃圾回收程序的方法、装置及计算机可读取存储介质
KR20210001206A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR20190102998A (ko) 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법
US11914879B2 (en) Storage controller and storage system comprising the same
KR102275706B1 (ko) 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US20240160362A1 (en) Memory devices and methods for managing use history
TWI749490B (zh) 寫入閃存管理表的電腦程式產品及方法及裝置
KR102430982B1 (ko) 프로세싱부를 포함하는 이종 메모리 시스템을 억세스하는 데이터 처리 시스템 및 방법
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
KR20240010310A (ko) 컴퓨팅 시스템 및 그 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant