KR102537770B1 - 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 - Google Patents

기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 Download PDF

Info

Publication number
KR102537770B1
KR102537770B1 KR1020220069419A KR20220069419A KR102537770B1 KR 102537770 B1 KR102537770 B1 KR 102537770B1 KR 1020220069419 A KR1020220069419 A KR 1020220069419A KR 20220069419 A KR20220069419 A KR 20220069419A KR 102537770 B1 KR102537770 B1 KR 102537770B1
Authority
KR
South Korea
Prior art keywords
write
data blocks
write data
storage
storage areas
Prior art date
Application number
KR1020220069419A
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 KR1020220069419A priority Critical patent/KR102537770B1/ko
Priority to US18/132,092 priority patent/US20230401002A1/en
Priority to EP23173484.9A priority patent/EP4290355A1/en
Application granted granted Critical
Publication of KR102537770B1 publication Critical patent/KR102537770B1/ko
Priority to CN202310660747.9A priority patent/CN117193630A/zh

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/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0614Improving the reliability 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/0653Monitoring storage devices or 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/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
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)

Abstract

스토리지 장치의 데이터 기입 방법에서, 외부의 호스트 장치로부터 스토리지 장치의 복수의 저장 영역들에 기입하고자 하는 기입 데이터를 수신한다. 스토리지 장치의 동작 온도를 수신하여 모니터링한다. 기입 데이터에 기초하여 복수의 기입 데이터 블록들을 생성한다. 동작 온도의 변화를 기초로, 복수의 저장 영역들 중 일부의 저장 영역에 기입 커맨드를 전송하고 다른 일부의 저장 영역에 기입 커맨드를 미전송하여, 복수의 기입 데이터 블록들 중 일부의 기입 데이터 블록에 대한 기입 동작을 수행하고 다른 일부의 기입 데이터 블록에 대한 기입 동작을 생략하는 기입 스로틀링 동작을 수행한다.

Description

기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치{METHOD OF WRITING DATA IN STORAGE DEVICE USING WRITE THROTTLING AND STORAGE DEVICE PERFORMING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 상기 데이터 기입 방법을 수행하는 스토리지 장치에 관한 것이다.
스토리지 시스템(storage system)은 호스트 장치(host device) 및 스토리지 장치(storage device)를 포함한다. 스토리지 장치는 메모리 컨트롤러와 메모리 장치를 포함하는 메모리 시스템 또는 메모리 장치만을 포함하여 구현될 수 있다. 스토리지 시스템 내에서 호스트와 스토리지 장치는 UFS(universal flash storage), SATA(serial ATA), SCSI(small computer small interface), SAS(serial attached SCSI), eMMC(embedded MMC), NVMe(nonvolatile memory express) 등과 같은 다양한 인터페이스 표준을 통해 서로 연결된다. 최근에는 스토리지 시스템이 고성능의 스토리지 장치를 채용하고 있고 인터페이스의 사양도 고속화 되고 있으며, 데이터 기입 시에 스토리지 시스템의 동작 온도가 상승하고 파워 소모가 증가하게 되어 스토리지 시스템 전체에 영향을 미치게 됨에 따라, 스토리지 시스템을 보호하기 위한 다양한 기술들이 연구되고 있다.
본 발명의 일 목적은 기입 스로틀링(write throttling)을 이용하여 데이터 기입 성능의 저하가 상대적으로 적으면서 데이터 기입을 효과적으로 수행할 수 있는 스토리지 장치의 데이터 기입 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 데이터 기입 방법을 수행하는 스토리지 장치를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 외부의 호스트 장치로부터 스토리지 장치의 복수의 저장 영역들에 기입하고자 하는 기입 데이터를 수신한다. 상기 스토리지 장치의 동작 온도를 수신하여 모니터링한다. 상기 기입 데이터에 기초하여 복수의 기입 데이터 블록들을 생성한다. 상기 동작 온도의 변화를 기초로, 상기 복수의 저장 영역들 중 일부의 저장 영역에 기입 커맨드를 전송하고 다른 일부의 저장 영역에 기입 커맨드를 미전송하여, 상기 복수의 기입 데이터 블록들 중 일부의 기입 데이터 블록에 대한 기입 동작을 수행하고 다른 일부의 기입 데이터 블록에 대한 기입 동작을 생략(skip)하는 기입 스로틀링(write throttling) 동작을 수행한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는 복수의 저장 영역들 및 상기 복수의 저장 영역들의 동작을 제어하는 스토리지 컨트롤러를 포함한다. 상기 스토리지 컨트롤러는, 외부의 호스트 장치로부터 상기 복수의 저장 영역들에 기입하고자 하는 기입 데이터를 수신하고, 스토리지 장치의 동작 온도를 수신하여 모니터링하고, 상기 기입 데이터에 기초하여 복수의 기입 데이터 블록들을 생성하며, 상기 동작 온도의 변화를 기초로 상기 복수의 저장 영역들 중 일부의 저장 영역에 기입 커맨드를 전송하고 다른 일부의 저장 영역에 기입 커맨드를 미전송하여 상기 복수의 기입 데이터 블록들 중 일부의 기입 데이터 블록에 대한 기입 동작을 수행하고 다른 일부의 기입 데이터 블록에 대한 기입 동작을 생략(skip)하는 기입 스로틀링(write throttling) 동작을 수행한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 외부의 호스트 장치로부터 스토리지 장치의 복수의 저장 영역들에 기입하고자 하는 기입 데이터를 수신한다. 상기 스토리지 장치의 동작 온도를 수신하여 모니터링한다. 상기 기입 데이터를 N(N은 2 이상의 자연수)개의 서브 데이터들로 분할한다. 상기 N개의 서브 데이터들을 인코딩하여 N개의 데이터 블록들 및 K(K는 자연수)개의 패리티 블록들을 포함하는 복수의 기입 데이터 블록들을 획득한다. 상기 동작 온도가 제1 기준 온도보다 낮거나 같은 경우에, 상기 복수의 저장 영역들 모두에 기입 커맨드를 전송하여, 상기 복수의 기입 데이터 블록들 모두에 대한 기입 동작을 수행한다. 상기 동작 온도가 상기 제1 기준 온도보다 높아지는 경우에, 상기 복수의 기입 데이터 블록들 중 X(X는 자연수)개의 기입 데이터 블록들에 대한 기입 동작을 생략한다. 상기 동작 온도가 상기 제1 기준 온도보다 높아지는 경우에, 상기 복수의 기입 데이터 블록들 중 P(P는 자연수)개의 기입 데이터 블록들에 대해서만 기입 동작을 수행한다. 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략한 이후에, 상기 호스트 장치로부터의 기입 완료 요청을 수신하거나 상기 스토리지 장치가 유휴(idle) 상태이거나 상기 동작 온도가 상기 제1 기준 온도보다 낮은 제2 기준 온도보다 낮아지는 경우에, 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 추가적으로 수행한다. 기입 동작이 생략되는 기입 데이터 블록의 개수를 나타내는 X는, 패리티 블록의 개수를 나타내는 K보다 작거나 같다.
상기와 같은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법 및 스토리지 장치에서는, 스토리지 장치의 동작 온도의 변화 기초로 일부의 기입 데이터 블록에 대한 기입 동작을 수행하고 다른 일부의 기입 데이터 블록에 대한 기입 동작을 생략할 수 있다. 이 때, 기입 동작이 생략된 기입 데이터 블록에 대해서는 추후에 미리 정해진 조건을 만족하는 경우에 추가 기입 동작을 수행할 수 있다. 이 경우, 데이터 기입 성능의 저하가 상대적으로 적고 상대적으로 빠르게 정상 온도로 회복하며, 따라서 스토리지 장치의 데이터 기입 성능 및/또는 효율이 향상될 수 있다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 2는 도 1의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 3은 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 5는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 6은 도 1의 복수의 기입 데이터 블록들을 생성하는 단계의 일 예를 나타내는 순서도이다.
도 7a 및 7b는 도 6의 동작을 설명하기 위한 도면들이다.
도 8은 도 2의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 구체적인 일 예를 나타내는 순서도이다.
도 9는 도 8의 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계의 일 예를 나타내는 순서도이다.
도 10은 도 8의 P개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 11a 및 11b는 도 9 및 10의 동작을 설명하기 위한 도면들이다.
도 12는 도 8의 (X+P)개의 기입 데이터 블록들에 대한 기입 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 13은 도 12의 동작을 설명하기 위한 도면이다.
도 14는 도 9의 X개의 기입 데이터 블록들을 선택하는 단계의 일 예를 나타내는 순서도이다.
도 15는 도 14의 동작을 설명하기 위한 도면이다.
도 16은 도 9의 X개의 기입 데이터 블록들을 선택하는 단계의 다른 예를 나타내는 순서도이다.
도 17은 도 16의 동작을 설명하기 위한 도면이다.
도 18은 도 9의 X개의 기입 데이터 블록들을 선택하는 단계의 또 다른 예를 나타내는 순서도이다.
도 19는 도 18의 동작을 설명하기 위한 도면이다.
도 20은 도 9의 X개의 기입 데이터 블록들을 선택하는 단계의 또 다른 예를 나타내는 순서도이다.
도 21은 도 8의 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계의 다른 예를 나타내는 순서도이다.
도 22는 도 1의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 다른 예를 나타내는 순서도이다.
도 23은 도 22의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 구체적인 일 예를 나타내는 순서도이다.
도 24는 도 23의 X개의 기입 데이터 블록들에 대한 기입 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 25a 및 25b는 도 24의 동작을 설명하기 위한 도면들이다.
도 26 및 27은 도 23의 X개의 기입 데이터 블록들에 대한 기입 동작을 수행하는 단계의 다른 예들을 나타내는 순서도들이다.
도 28은 도 2의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 구체적인 다른 예를 나타내는 순서도이다.
도 29는 도 22의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 구체적인 다른 예를 나타내는 순서도이다.
도 30은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 31은 도 30의 복수의 기입 데이터 블록들을 생성하는 단계의 일 예를 나타내는 순서도이다.
도 32는 도 31의 복수의 기입 데이터 블록들을 생성하는 단계의 구체적인 일 예를 나타내는 순서도이다.
도 33은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 34는 본 발명의 실시예들에 따른 스토리지 장치가 적용된 데이터 센터를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법은, 스토리지 컨트롤러 및 복수의 저장 영역들을 포함하는 스토리지 장치에 의해 수행된다. 상기 복수의 저장 영역들은 복수의 비휘발성 메모리들에 의해 형성될 수 있다. 상기 스토리지 장치 및 이를 포함하는 스토리지 시스템에 대해서는 도 3 등을 참조하여 후술하도록 한다.
본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 외부의 호스트 장치로부터 상기 복수의 저장 영역들에 기입하고자 하는 기입 데이터를 수신한다(단계 S100). 예를 들어, 기입 요청 및 기입 어드레스(예를 들어, 논리 어드레스)가 상기 기입 데이터와 함께 수신될 수 있다. 예를 들어, 상기 호스트 장치로부터 수신되는 요청은 호스트 커맨드라고 지칭될 수 있고, 상기 기입 요청은 호스트 기입 커맨드라고 지칭될 수 있다.
상기 스토리지 장치의 동작 온도를 수신하여 모니터링한다(단계 S200). 예를 들어, 스토리지 장치의 내부 또는 외부에 배치되는 온도 센서로부터 상기 동작 온도가 수신될 수 있다. 예를 들어, 상기 동작 온도를 모니터링하면서, 상기 동작 온도의 변화에 대한 통계적 정보를 나타내는 온도 프로파일(profile) 데이터가 저장 및/또는 기록될 수 있다.
상기 기입 데이터에 기초하여 복수의 기입 데이터 블록들을 생성한다(단계 S300). 예를 들어, 이레이저 코딩(erasure coding) 방식, RAID(Redundant Array of Independent Disks) 5 방식, RAID 6 방식 등에 기초하여 상기 복수의 기입 데이터 블록들이 생성될 수 있다. 단계 S300에 대해서는 도 6 등을 참조하여 후술하도록 한다.
상기 동작 온도에 기초하여 기입 스로틀링(write throttling) 동작 또는 정상 기입(normal write) 동작을 수행한다(단계 S400). 단계 S400에 대해서는 도 2 등을 참조하여 후술하도록 한다.
도 2는 도 1의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 1 및 2를 참조하면, 단계 S400에서, 상기 동작 온도가 변화한 것으로 판단된 경우에(단계 S500: 예), 예를 들어 상기 동작 온도가 기입 동작의 조정(throttling)이 필요한 온도 범위라고 판단될 경우에, 상기 기입 스로틀링 동작을 수행한다(단계 S600). 구체적으로, 상기 기입 스로틀링 동작은 상기 복수의 저장 영역들 중 일부의 저장 영역에 기입 커맨드를 전송하고 다른 일부의 저장 영역에 기입 커맨드를 미전송하여, 상기 복수의 기입 데이터 블록들 중 일부의 기입 데이터 블록에 대한 기입 동작을 수행하고 다른 일부의 기입 데이터 블록에 대한 기입 동작을 생략(skip)하는 것을 나타낸다. 예를 들어, 상기 동작 온도가 상승한 경우에 상기 기입 스로틀링 동작이 수행될 수 있다.
상기 동작 온도가 변화하지 않고 유지되는 것으로 판단된 경우에(단계 S500: 아니오), 예를 들어 상기 동작 온도가 기입 동작의 조정(throttling)이 필요한 온도가 아니고 모든 블록에 기입 동작을 수행해도 온도 조절이 필요하지 않다고 판단될 경우에, 상기 정상 기입 동작을 수행한다(단계 S700). 구체적으로, 상기 정상 기입 동작은 상기 복수의 저장 영역들 모두에 기입 커맨드를 전송하여, 상기 복수의 기입 데이터 블록들 모두에 대한 기입 동작을 수행하는 것을 나타낸다.
예를 들어, 하나의 저장 영역에 하나의 기입 데이터 블록이 전송 및 기입되며, 기입 커맨드 및 기입 어드레스(예를 들어, 물리 어드레스)가 상기 기입 데이터 블록과 함께 전송될 수 있다. 예를 들어, 상기 저장 영역으로 전송되는 커맨드는 메모리 커맨드라고 지칭될 수 있고, 상기 기입 커맨드는 메모리 기입 커맨드라고 지칭될 수 있다.
최근에는 스토리지 시스템이 고성능의 스토리지 장치를 채용함에 따라, 데이터 기입 시에 스토리지 시스템의 동작 온도가 상승하고 파워 소모가 증가하게 되며, 온도 상승의 경우 메모리의 읽기, 쓰기 및 신뢰성에 영향을 미치게 되므로 스토리지 시스템을 보호하기 위한 적절한 스로틀링 동작이 필요하게 되었다.
상기 스토리지 장치가 정상 동작하는 경우에는, 단계 S700과 같이 상기 기입 데이터에 기초하여 생성된 상기 복수의 기입 데이터 블록들 모두에 대한 기입 동작을 수행할 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서는, 상기 스토리지 장치의 상기 동작 온도의 변화(예를 들어, 상승)를 기초로 상기 복수의 기입 데이터 블록들 중 일부의 기입 데이터 블록에 대한 기입 동작을 수행하고 다른 일부의 기입 데이터 블록에 대한 기입 동작을 생략할 수 있다. 이 때, 기입 동작이 생략된 기입 데이터 블록에 대해서는 추후에 미리 정해진 조건을 만족하는 경우에 추가 기입 동작을 수행할 수 있다. 이 경우, 데이터 기입 성능의 저하가 상대적으로 적고 상기 스토리지 장치가 상대적으로 빠르게 정상 온도로 회복할 수 있다. 따라서, 상기 스토리지 장치의 데이터 기입 성능 및/또는 효율이 향상될 수 있다.
도 3은 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 3을 참조하면, 스토리지 시스템(100)은 호스트 장치(200) 및 스토리지 장치(300)를 포함한다.
호스트 장치(200)는 스토리지 시스템(100)의 전반적인 동작을 제어한다. 호스트 장치(200)는 호스트 프로세서(210) 및 호스트 메모리(220)를 포함할 수 있다.
호스트 프로세서(210)는 호스트 장치(200)의 동작을 제어할 수 있다. 예를 들어, 호스트 프로세서(210)는 운영 체제(Operating System; OS)를 실행할 수 있다. 예를 들어, 상기 운영 체제는 파일 관리를 위한 파일 시스템(file system), 및 스토리지 장치(300)를 포함하는 주변 기기를 상기 운영 체제 레벨에서 제어하기 위한 장치 드라이버(device driver)를 포함할 수 있다. 호스트 메모리(220)는 호스트 프로세서(210)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다.
스토리지 장치(300)는 호스트 장치(200)에 의해 액세스된다. 스토리지 장치(300)는 스토리지 컨트롤러(310), 복수의 저장 영역(storage region, SR)들(320a, 320b, 320c) 및 버퍼 메모리(330)를 포함할 수 있다.
스토리지 컨트롤러(310)는 스토리지 장치(300)의 동작을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 호스트 장치(200)로부터 수신되는 요청(REQ)(예를 들어, 기입 요청)에 기초하여 스토리지 장치(300)의 동작(예를 들어, 기입 동작)을 제어하고, 호스트 장치(200)와 스토리지 장치(300) 사이의 데이터(DAT)의 교환(예를 들어, 기입 데이터의 수신 및 저장)을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 복수의 저장 영역들(320a~320c)의 동작(예를 들어, 기입 동작)을 제어하기 위한 커맨드(예를 들어, 기입 커맨드)를 생성하여 복수의 저장 영역들(320a~320c)에 전송하고, 복수의 저장 영역들(320a~320c)과의 데이터(DAT)의 교환(예를 들어, 기입 데이터의 전송 및 프로그램)을 제어할 수 있다.
복수의 저장 영역들(320a~320c)은 스토리지 컨트롤러(310)에 의해 제어되고, 메타 데이터들 및 그 밖의 사용자 데이터들과 같은 복수의 데이터들을 저장할 수 있다. 예를 들어, 복수의 저장 영역들(320a~320c) 각각은 하나 또는 그 이상의 비휘발성 메모리를 포함할 수 있다.
일 실시예에서, 상기 비휘발성 메모리는 NAND 플래시 메모리(Flash Memory)를 포함할 수 있다. 다른 실시예에서, 상기 비휘발성 메모리는 EEPROM, PRAM, RRAM, NFGM, PoRAM, MRAM, FRAM 등을 포함할 수 있다.
버퍼 메모리(330)는 스토리지 컨트롤러(310)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있고, 복수의 저장 영역들(320a~320c)에 저장되어 있거나 저장하고자 하는 데이터를 임시로 저장할 수 있다. 예를 들어, 버퍼 메모리(330)는 SRAM, DRAM 등과 같은 휘발성 메모리를 포함할 수 있다. 실시예에 따라서, 버퍼 메모리(330)는 스토리지 컨트롤러(310)에 포함될 수도 있다.
스토리지 컨트롤러(310)는 도 1 및 2를 참조하여 상술한 본 발명의 실시예들에 따른 데이터 기입 방법을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 호스트 장치(200)로부터 기입 데이터를 수신하고, 스토리지 장치(300)의 동작 온도를 수신하여 모니터링하고, 상기 기입 데이터에 기초하여 복수의 기입 데이터 블록들을 생성하며, 상기 동작 온도에 따라 기입 스로틀링 동작을 수행하거나 정상 기입 동작을 수행할 수 있다.
스토리지 컨트롤러(310)는 도 1 및 2를 참조하여 상술한 본 발명의 실시예들에 따른 데이터 기입 방법을 수행하기 위해 온도 모니터부(312) 및 블록 생략 관리부(314)를 포함할 수 있다.
온도 모니터부(312)는 상기 동작 온도를 수신하여 모니터링할 수 있다. 다시 말하면, 온도 모니터부(312)는 단계 S200을 수행할 수 있다. 예를 들어, 온도 센서로부터 상기 동작 온도가 수신될 수 있다. 실시예에 따라서, 상기 온도 센서는 온도 모니터부(312)의 내부에 배치될 수도 있고, 온도 모니터부(312)의 외부 및 스토리지 컨트롤러(310)의 내부에 배치될 수도 있으며, 스토리지 컨트롤러(310)의 외부에 배치될 수도 있다.
블록 생략 관리부(314)는 상기 기입 스로틀링 동작을 수행하는 경우에 상기 복수의 기입 데이터 블록들 중 기입 동작이 생략되는 기입 데이터 블록의 개수를 결정하고 상기 기입 동작이 생략되는 기입 데이터 블록을 선택할 수 있다. 다시 말하면, 블록 생략 관리부(314)는 단계 S600을 수행할 수 있다.
또한, 스토리지 컨트롤러(310)는 도 30 및 33을 참조하여 후술하는 본 발명의 실시예들에 따른 데이터 기입 방법을 수행할 수도 있다.
일 실시예에서, 스토리지 장치(300)는 SSD(Solid State Drive), UFS(Universal Flash Storage), MMC(Multi Media Card) 또는 eMMC(embedded MMC)일 수 있다. 다른 실시예에서, 스토리지 장치(300)는 SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(memory stick), 칩 카드(chip card), USB(Universal Serial Bus) 카드, 스마트 카드(smart card), CF(Compact Flash) 카드 또는 이와 유사한 형태로 구현될 수 있다.
일 실시예에서, 스토리지 장치(300)는 SATA(Serial Advanced Technology Attachment), SCSI(Small Computer Small Interface), NVMe(Non-Volatile Memory Express), SAS(Serial Attached SCSI), UFS, eMMC와 같은 블록 액세서블 인터페이스(block accessible interface)를 통해 호스트 장치(200)와 연결되고, 호스트 장치(200)에 의해 상기 블록 액세서블 인터페이스를 통하여 블록 단위로 액세스될 수 있다.
실시예에 따라서, 스토리지 시스템(100)은 PC, 서버 컴퓨터, 데이터 센터, 워크스테이션 등의 임의의 컴퓨팅 시스템이거나, 핸드폰, 스마트 폰, MP3 플레이어, PDA, PMP, 디지털 TV, 디지털 카메라, 포터블 게임 콘솔, 네비게이션 기기, 웨어러블 기기, IoT 기기, IoE 기기, e-북, VR 기기, AR 기기, 드론 등의 임의의 모바일 시스템일 수 있다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 4를 참조하면, 스토리지 컨트롤러(400)는 호스트 인터페이스(412), 비휘발성 메모리 인터페이스(414), 프로세서(420), 메모리(430), 인코더(442), 데이터 복원 모듈(444), 온도 모니터부(450), 온도 프로파일부(460), 블록 생략 관리부(470) 및 기입 모듈(480)을 포함할 수 있다.
호스트 인터페이스(412)는 호스트 장치(200)와 스토리지 장치(300) 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(410)는 호스트 장치(200)의 버스 포맷(bus format)에 대응하여 스토리지 장치(300)와의 인터페이싱을 제공할 수 있다. 예를 들어, 호스트 인터페이스(410)는 호스트 장치(200)로부터 기입 요청(WREQ) 및 기입하고자 하는 기입 데이터(WDAT)를 수신할 수 있다.
비휘발성 메모리 인터페이스(414)는 복수의 저장 영역들(320a~320c)과 데이터를 교환할 수 있다. 예를 들어, 비휘발성 메모리 인터페이스(414)는 기입 요청(WREQ)에 대응하는 기입 커맨드(WCMD) 및 기입 데이터(WDAT)에 기초하여 생성된 복수의 기입 데이터 블록들(WDB)을 복수의 저장 영역들(320a~320c)에 전송할 수 있다. 예를 들어, 비휘발성 메모리 인터페이스(414)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
프로세서(420)는 호스트 장치(200)로부터 호스트 인터페이스(412)를 통하여 수신된 요청(예를 들어, WREQ)에 응답하여 스토리지 컨트롤러(400)의 동작을 제어할 수 있다. 예를 들어, 프로세서(420)는 스토리지 장치(300)의 동작을 제어하며, 스토리지 장치(300)를 구동하기 위한 펌웨어(Firmware)를 채용하여 각각의 구성들을 제어할 수 있다.
메모리(430)는 프로세서(420)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있다. 예를 들어, 메모리(430)는 SRAM, DRAM 등과 같은 휘발성 메모리로 구현될 수 있다.
인코더(442)는 데이터 기입 동작 시에(즉, 본 발명의 실시예들에 따른 데이터 기입 방법에서), 호스트 장치(200)로부터 수신되는 기입 데이터(WDAT)에 기초하여 복수의 기입 데이터 블록들(WDB)을 생성할 수 있다. 예를 들어, 이레이저 코딩 방식, RAID 5 방식, RAID 6 방식 등에 기초하여 복수의 기입 데이터 블록들(WDB)이 생성될 수 있다. 복수의 기입 데이터 블록들(WDB)을 생성하는 동작에 대해서는 도 7a를 참조하여 후술하도록 한다.
데이터 복원 모듈(444)은 데이터 독출 동작 시에, 복수의 저장 영역들(320a~320c)로부터 독출된 데이터 블록들에 기초하여 독출 데이터를 생성할 수 있다. 또한, 데이터 복원 모듈(444)은 데이터 기입 동작 시에(즉, 본 발명의 실시예들에 따른 데이터 기입 방법에서), 기입 스로틀링 동작이 수행됨에 따라 기입 동작이 생략된 데이터 블록을 복원하여 복원 데이터 블록(RDB)을 생성할 수 있다. 상기 독출 데이터를 생성하는 동작에 대해서는 도 7b를 참조하여 후술하도록 하고, 복원 데이터 블록(RDB)을 생성하는 동작에 대해서는 도 25a 및 25b를 참조하여 후술하도록 한다.
온도 모니터부(450)는 도 3의 온도 모니터부(312)와 실질적으로 동일할 수 있다. 온도 모니터부(450)는 데이터 기입 동작 시에(즉, 본 발명의 실시예들에 따른 데이터 기입 방법에서), 스토리지 장치(300)의 동작 온도를 나타내는 온도 정보(TINF)를 수신하여 모니터링할 수 있다. 실시예에 따라서, 온도 정보(TINF)는 온도 모니터부(450)에 포함되는 온도 센서로부터 내부적으로 수신될 수도 있고, 온도 모니터부(450)의 외부 및/또는 스토리지 컨트롤러(400)의 외부에 배치되는 온도 센서로부터 수신될 수도 있다.
온도 프로파일부(460)는 데이터 기입 동작 시에(즉, 본 발명의 실시예들에 따른 데이터 기입 방법에서), 온도 정보(TINF)에 기초하여 상기 동작 온도의 변화에 대한 통계적 정보를 나타내는 온도 프로파일 데이터(TPRF)를 저장 및/또는 기록할 수 있다.
블록 생략 관리부(470)는 도 3의 블록 생략 관리부(314)와 실질적으로 동일할 수 있다. 블록 생략 관리부(470)는 데이터 기입 동작 시에(즉, 본 발명의 실시예들에 따른 데이터 기입 방법에서), 상기 기입 스로틀링 동작을 수행하는 경우에 복수의 기입 데이터 블록들(WDB) 중 기입 동작이 생략되는 기입 데이터 블록의 개수를 결정하고, 상기 기입 동작이 생략되는 기입 데이터 블록을 선택하며, 상기 기입 동작이 생략되는 기입 데이터 블록의 개수 및 상기 기입 동작이 생략되도록 선택된 기입 데이터 블록을 나타내는 생략 제어 신호(SCS)를 생성할 수 있다.
기입 모듈(480)은 스토리지 장치(300)의 데이터 기입 동작을 제어할 수 있다. 또한, 기입 모듈(480)은 데이터 기입 동작 시에(즉, 본 발명의 실시예들에 따른 데이터 기입 방법에서), 상기 기입 스로틀링 동작을 수행하는 경우에 상기 기입 동작이 생략되도록 선택된 기입 데이터 블록에 대한 생략 데이터 정보(SDI)를 생성할 수 있다.
한편 도시하지는 않았으나, 스토리지 컨트롤러(400)는 에러 정정을 위한 ECC(Error Correction Code) 엔진, 데이터에 대한 암호화/복호화를 수행하는 AES(Advanced Encryption Standard) 엔진 등을 더 포함할 수도 있다.
도 5는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 5를 참조하면, 비휘발성 메모리(500)는 메모리 셀 어레이(510), 어드레스 디코더(520), 페이지 버퍼 회로(530), 데이터 입출력 회로(540), 전압 생성기(550) 및 제어 회로(560)를 포함한다. 하나 또는 그 이상의 비휘발성 메모리에 의해 하나의 저장 영역이 형성될 수 있다.
메모리 셀 어레이(510)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 어드레스 디코더(520)와 연결된다. 또한, 메모리 셀 어레이(510)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(530)와 연결된다. 메모리 셀 어레이(510)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(510)는 각각 메모리 셀들을 포함하는 복수의 메모리 블록들(BLK1, BLK2, ..., BLKz)로 구분될 수 있다. 또한, 메모리 블록들(BLK1~BLKz) 각각은 복수의 페이지들로 구분될 수 있다.
실시예에 따라서, 메모리 셀 어레이(510)는 2차원 어레이(array) 구조 또는 3차원 수직 어레이 구조로 형성될 수 있다. 수직형(또는 3차원) 메모리 셀 어레이에 대한 자세한 설명은 본 명세서에 참고 문헌으로 결합된 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
제어 회로(560)는 외부(예를 들어, 스토리지 컨트롤러(310))로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 비휘발성 메모리(500)의 소거 루프(예를 들어, 소거 동작과 소거 검증 동작), 프로그램 루프(예를 들어, 프로그램 동작과 프로그램 검증 동작) 및 독출 동작을 제어한다.
예를 들어, 제어 회로(560)는 커맨드(CMD)에 기초하여 전압 생성기(550)를 제어하기 위한 제어 신호들(CON) 및 페이지 버퍼 회로(530)를 제어하기 위한 제어 신호들(PBC)을 발생하고, 어드레스(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 발생할 수 있다. 제어 회로(560)는 로우 어드레스(R_ADDR)를 어드레스 디코더(520)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(540)에 제공할 수 있다.
어드레스 디코더(520)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(510)와 연결된다. 예를 들어, 소거/프로그램/독출 동작 시에, 어드레스 디코더(520)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 워드 라인들(WL) 중 적어도 하나, 복수의 스트링 선택 라인들(SSL) 중 적어도 하나 및 복수의 접지 선택 라인들(GSL) 중 적어도 하나를 선택 워드 라인, 선택 스트링 선택 라인 및 선택 접지 선택 라인으로 각각 결정할 수 있다.
전압 생성기(550)는 전원 전압(PWR) 및 제어 신호들(CON)에 기초하여 비휘발성 메모리(500)의 동작에 필요한 전압들(VS)을 발생할 수 있다. 전압들(VS)은 어드레스 디코더(520)를 통해 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)에 인가될 수 있다. 또한, 전압 생성기(550)는 전원 전압(PWR) 및 제어 신호들(CON)에 기초하여 소거 동작에 필요한 소거 전압(VERS)을 발생할 수 있다.
페이지 버퍼 회로(530)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(510)와 연결될 수 있다. 페이지 버퍼 회로(530)는 복수의 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼 회로(530)는 메모리 셀 어레이(510)에 프로그램 될 기입 데이터(DAT)를 저장하거나 혹은 메모리 셀 어레이(510)로부터 감지된 독출 데이터(DAT)를 저장할 수 있다. 즉, 페이지 버퍼 회로(530)는 비휘발성 메모리(500)의 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다.
데이터 입출력 회로(540)는 데이터 라인들(DL)을 통해 페이지 버퍼 회로(530)와 연결될 수 있다. 데이터 입출력 회로(540)는 컬럼 어드레스(C_ADDR)에 응답하여, 데이터(DAT)를 페이지 버퍼 회로(530)를 거쳐서 메모리 셀 어레이(510)에 제공하거나 메모리 셀 어레이(510)로부터 페이지 버퍼 회로(530)를 거쳐서 출력되는 데이터(DAT)를 외부에 제공할 수 있다.
도 6은 도 1의 복수의 기입 데이터 블록들을 생성하는 단계의 일 예를 나타내는 순서도이다. 도 7a 및 7b는 도 6의 동작을 설명하기 위한 도면들이다.
도 1, 6 및 7a를 참조하면, 단계 S300에서, 상기 기입 데이터를 N(N은 2 이상의 자연수)개의 서브 데이터들로 분할할 수 있다(단계 S310). 예를 들어, 도 7a에 도시된 것처럼 기입 데이터(WDAT)에 대한 데이터 분할(dividing 또는 striping) 동작(DIV)을 수행하여, N개의 서브 데이터들(F1, F2, ..., FN)이 생성될 수 있다. 예를 들어, 기입 데이터(WDAT)는 하나의 파일(file) 또는 데이터 오브젝트(object)에 대응할 수 있다.
상기 N개의 서브 데이터들을 인코딩하여 N개의 데이터 블록들 및 K(K는 자연수)개의 패리티 블록들을 포함하는 상기 복수의 기입 데이터 블록들을 획득할 수 있다(단계 S330). 예를 들어, 도 7a에 도시된 것처럼 N개의 서브 데이터들(F1~FN)에 대한 인코딩 동작(ENC)을 수행하여, N개의 데이터 블록들(DB1, DB2, ..., DBN) 및 K개의 패리티 블록들(PB1. ,,,. PBK)이 생성될 수 있다.
단계 S310 및 S330은 도 4의 인코더(442)에 의해 수행될 수 있다.
한편, 단계 S310 및 S330이 수행된 이후에, 정상 기입 동작이 수행되는 경우에는 (N+K)개의 저장 영역들(SR1, SR2, ..., SRN, SR(N+1), ..., SR(N+K)) 모두에 기입 커맨드(WCMD)를 전송하고 데이터 블록들(DB1~DBN) 및 패리티 블록들(PB1~PBK)을 전송하여, 데이터 블록들(DB1~DBN) 및 패리티 블록들(PB1~PBK) 모두가 저장 영역들(SR1~SR(N+K))에 기입될 수 있다. 예를 들어, 저장 영역들(SR1~SR(N+K))은 하나 이상의 스토리지 장치들에 포함되며, 하나의 저장 영역이 하나의 스토리지 장치에 대응할 수도 있고 둘 이상의 저장 영역들이 하나의 스토리지 장치에 대응할 수도 있다.
일 실시예에서, 도 6 및 7a를 참조하여 상술한 동작은, 이레이저 코딩 방식, RAID 5 방식, RAID 6 방식 등에 기초하여 수행될 수 있다.
코딩 이론에서, 이레이저 코드는 비트 소거를 전제로 한 순방향 에러 정정 코드이며, 이는 원본 메시지가 N개의 심볼(symbol)의 서브 세트로부터 복원될 수 있도록 K개의 심볼의 메시지를 N개의 심볼을 갖는 더 긴 메시지로 변환하는 것을 나타낸다. 즉, (N+K)개의 심볼 중에서 K개의 심볼에 불량이 발생하더라도 N개의 심볼만으로 원본 메시지가 복원될 수 있다. 예를 들어, 리드-솔로몬(Reed-Solomon) 코드, Tahoe-LAFS(Least-Authority File Store), 위버(Weaver) 코드 등을 이용하여 인코딩이 수행될 수 있다.
RAID는 데이터 중복성, 성능 향상 또는 둘 다를 목적으로 여러 물리적 디스크 드라이브 구성 요소를 하나 이상의 논리 장치로 결합하는 데이터 저장소 가상화 기술을 나타낸다. 데이터는 요구되는 중복성 및 성능 수준에 따라 RAID 레벨이라고 하는 여러 가지 방법 중 하나로 드라이브에 분산된다. RAID 5는 분산된 패리티가 있는 블록 레벨 스트라이핑으로 구성되며, RAID 6은 이중 분산된 패리티가 있는 블록 레벨 스트라이핑으로 구성된다.
도 7b를 참조하면, 도 7a에 도시된 것처럼 데이터 블록들(DB1~DBN, PB1~PBK)에 대한 정상 기입 동작이 수행된 이후에 데이터 독출 동작을 예시하고 있다.
구체적으로, 저장 영역들(SR1~SR(N+K)) 모두에 전송되는 독출 커맨드(RCMD)에 응답하여, 데이터 블록들(DB1~DBN) 및 패리티 블록들(PB1~PBK) 모두가 저장 영역들(SR1~SR(N+K))로부터 독출될 수 있다. 이후에, 데이터 블록들(DB1~DBN) 및 패리티 블록들(PB1~PBK)에 기초하여 데이터 복원 동작(RCON)을 수행하여, N개의 서브 데이터들(F1', F2', ..., FN')이 생성될 수 있다. 이후에, N개의 서브 데이터들(F1'~FN')에 대한 결합 동작(COMB)을 수행하여, 독출 데이터(RDAT)가 생성될 수 있다.
상술한 것처럼, 이레이저 코딩이 적용된 경우에, N개의 데이터 블록들(DB1, DB2, ..., DBN) 및 K개의 패리티 블록들(PB1. ,,,. PBK) 중에서 최대 K개의 블록들에 불량이 발생하더라도 원본 데이터가 정상적으로 복원될 수 있다. 도 7b에서는 데이터 블록(DB2) 및 패리티 블록(PB1)에 불량이 발생한 것으로 도시하였으며, 이 경우 K가 2보다 크거나 같다면 원본 데이터가 정상적으로 복원될 수 있다. 따라서, 도 7b의 예에서 K가 2보다 크거나 같은 경우에, 서브 데이터들(F1'~FN') 및 독출 데이터(RDAT)는 도 7a의 서브 데이터들(F1~FN) 및 기입 데이터(WDAT)와 실질적으로 동일할 수 있다.
도 8은 도 2의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 구체적인 일 예를 나타내는 순서도이다.
도 2 및 8을 참조하면, 단계 S500에서, 상기 동작 온도와 제1 기준 온도(TOFS1)를 비교할 수 있다(단계 S510). 다시 말하면, 제1 기준 온도(TOFS1)에 기초하여 상기 동작 온도가 변화하는지 유지되는지 판단할 수 있다. 제1 기준 온도(TOFS1)는 오프셋(offset) 온도, 열 관리(thermal management) 온도 등으로 지칭될 수 있다.
상기 동작 온도가 제1 기준 온도(TOFS1)보다 높아지는 경우에(단계 S510: 예), 단계 S600의 상기 기입 스로틀링 동작이 수행될 수 있다. 상기 동작 온도가 제1 기준 온도(TOFS1)보다 낮거나 같은 경우에(단계 S510: 아니오), 단계 S700의 상기 정상 기입 동작이 수행될 수 있다.
단계 S600에서, 상기 복수의 기입 데이터 블록들 중 X(X는 자연수)개의 기입 데이터 블록들에 대한 기입 동작을 생략하고(단계 S610), 상기 복수의 기입 데이터 블록들 중 P(P는 자연수)개의 기입 데이터 블록들에 대해서만 기입 동작을 수행할 수 있다(단계 S630). 예를 들어, 도 6을 참조하여 상술한 것처럼, 단계 S300에 의해 상기 N개의 데이터 블록들 및 상기 K개의 패리티 블록들을 포함하는 상기 복수의 기입 데이터 블록들이 획득된 경우에, (X+P)=(N+K)일 수 있다. 이 때, 상기 복수의 기입 데이터 블록들 중 상기 기입 스로틀링 동작에서 기입 동작이 생략되는 상기 다른 일부의 기입 데이터 블록의 개수를 나타내는 X는, K보다 작거나 같을 수 있다.
일 실시예에서, 기입 동작이 수행되는 기입 데이터 블록의 개수를 나타내는 P는, N+K-X보다 작거나 같을 수 있다. 예를 들어, X가 K보다 작은 경우에, P는 N+K-X보다 작거나 같을 수 있다.
단계 S700에서, (X+P)개의 기입 데이터 블록들(즉, 상기 복수의 기입 데이터 블록들 모두)에 대한 기입 동작을 수행할 수 있다(단계 S710).
도 9는 도 8의 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계의 일 예를 나타내는 순서도이다.
도 8 및 9를 참조하면, 단계 S610에서, 상기 동작 온도에 대한 온도 프로파일 데이터를 독출할 수 있다(단계 S611). 예를 들어, 도 4의 온도 프로파일부(460)는 기입 시에 대한 온도 정보를 프로파일링하여 특정 온도 시에 몇 개의 기입 데이터 블록에 대한 기입 동작을 생략할지에 대한 온도 프로파일 데이터(TPRF)를 보유할 수 있다.
상기 온도 프로파일 데이터에 기초하여, 기입 동작을 생략하고자 하는 기입 데이터 블록들의 개수를 나타내는 X를 결정할 수 있다(단계 S613). 예를 들어, 상기 온도 프로파일 데이터에 기초하여, 상기 기입 동작을 생략하고자 하는 기입 데이터 블록들의 개수를 나타내는 X가 조정 가능할 수 있다.
상기 복수의 기입 데이터 블록들 중 상기 X개의 기입 데이터 블록들을 선택할 수 있다(단계 S615). 예를 들어, 다양한 기준에 기초하여 상기 X개의 기입 데이터 블록들이 선택될 수 있다. 단계 S615에 대해서는 도 14 내지 20을 참조하여 후술하도록 한다.
상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하도록, 상기 복수의 저장 영역들 중 상기 X개의 기입 데이터 블록들에 대응하는 X개의 저장 영역들에 대한 기입 커맨드의 전송을 생략할 수 있다(단계 S617). 예를 들어, 상기 X개의 기입 데이터 블록들은 물리적으로 프로그램되지 않을 수 있다.
단계 S613 및 S615는 도 4의 블록 생략 관리부(470)에 의해 수행되고, 단계 S617은 도 4의 기입 모듈(480)에 의해 수행될 수 있다.
도 10은 도 8의 P개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 8 및 10을 참조하면, 단계 S630에서, 상기 P개의 기입 데이터 블록들에 대한 기입 동작을 수행하도록, 상기 복수의 저장 영역들 중 상기 P개의 기입 데이터 블록들에 대응하는 P개의 저장 영역들에 대해 기입 커맨드를 전송할 수 있다(단계 S631).
단계 S631은 도 4의 기입 모듈(480)에 의해 수행될 수 있다.
도 11a 및 11b는 도 9 및 10의 동작을 설명하기 위한 도면들이다.
도 11a 및 11b를 참조하면, 도 6의 단계 S310 및 S330에 의해 4개의 데이터 블록들(DB1, DB2, DB3, DB4) 및 2개의 패리티 블록들(PB1, PB2)이 생성된 경우, 즉 N=4이고 K=2인 경우에 도 9 및 10의 동작을 예시하고 있다.
예를 들어, 도 11a에 도시된 것처럼, 상기 온도 프로파일 데이터에 기초하여 X=1로 결정되고, 기입 동작을 생략하고자 하는 기입 데이터 블록으로서 데이터 블록(DB3)이 선택될 수 있다. 이에 따라, 저장 영역들(SR1, SR2, SR4, SR5, SR6)에는 기입 커맨드(WCMD)가 전송되고 데이터 블록들(DB1, DB2, DB4) 및 패리티 블록들(PB1, PB2)이 기입되며, 저장 영역(SR3)에는 기입 커맨드(WCMD)가 전송되지 않고 데이터 블록(DB3)에 대한 기입 동작이 생략될 수 있다.
다른 예에서, 도 11b에 도시된 것처럼, 상기 온도 프로파일 데이터에 기초하여 X=2로 결정되고, 기입 동작을 생략하고자 하는 기입 데이터 블록으로서 데이터 블록(DB3) 및 패리티 블록(PB1)이 선택될 수 있다. 이에 따라, 저장 영역들(SR1, SR2, SR4, SR6)에는 기입 커맨드(WCMD)가 전송되고 데이터 블록들(DB1, DB2, DB4) 및 패리티 블록(PB2)이 기입되며, 저장 영역(SR3, SR5)에는 기입 커맨드(WCMD)가 전송되지 않고 데이터 블록(DB3) 및 패리티 블록(PB1)에 대한 기입 동작이 생략될 수 있다.
일 실시예에서, 기입 데이터 블록에 대한 기입 동작을 생략할 때의 온도 변화를 프로파일하여 기입 동작이 생략되는 기입 데이터 블록의 개수를 미세 조정할 수 있다. 예를 들어, 기입 동작이 생략되는 기입 데이터 블록의 개수와 온도와의 상관 관계를 고려하여 미세 조정이 수행될 수 있다. 예를 들어, 상기 미세 조정에 의해 도 11a 및 11b의 동작이 선택적으로 수행될 수 있다.
일 실시예에서, 기입 동작이 생략되는 기입 데이터 블록의 개수(즉, X)는 패리티 블록의 개수(즉, K)보다 작거나 같을 수 있다. 도 11a 및 11b의 예에서, K=2이며, 따라서 X=1 또는 2일 수 있다.
도 12는 도 8의 (X+P)개의 기입 데이터 블록들에 대한 기입 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 8 및 12를 참조하면, 단계 S710에서, 상기 (X+P)개의 기입 데이터 블록들에 대한 기입 동작을 수행하도록, 상기 복수의 저장 영역들 모두인 상기 (X+P)개의 기입 데이터 블록들에 대응하는 (X+P)개의 저장 영역들에 대해 기입 커맨드를 전송할 수 있다(단계 S711).
단계 S711은 도 4의 기입 모듈(480)에 의해 수행될 수 있다.
도 13은 도 12의 동작을 설명하기 위한 도면이다. 이하 도 11a 및 11b와 중복되는 설명은 생략한다.
도 13을 참조하면, 저장 영역들(SR1, SR2, SR3, SR4, SR5, SR6) 모두에 기입 커맨드(WCMD)가 전송되고 데이터 블록들(DB1, DB2, DB3, DB4) 및 패리티 블록들(PB1, PB2)이 모두 기입될 수 있다.
도 14는 도 9의 X개의 기입 데이터 블록들을 선택하는 단계의 일 예를 나타내는 순서도이다. 도 15는 도 14의 동작을 설명하기 위한 도면이다.
도 9, 11a, 11b, 14 및 15를 참조하면, 단계 S615에서, 상기 복수의 저장 영역들 각각에 대해 저장 영역 온도를 모니터링할 수 있다(단계 S615a1). 예를 들어, 저장 영역들(SR1~SR6)에 대한 저장 영역 온도들(TEMP_SR1, TEMP_SR2, TEMP_SR3, TEMP_SR4, TEMP_SR5, TEMP_SR6)이 모니터링될 수 있다.
상기 저장 영역 온도에 기초하여 상기 복수의 저장 영역들 중 상기 X개의 저장 영역들을 선택하고(단계 S615a2), 상기 복수의 기입 데이터 블록들 중 상기 X개의 저장 영역들에 기입하고자 하는 기입 데이터 블록들을 상기 X개의 기입 데이터 블록들로 선택할 수 있다(단계 S615a3). 예를 들어, 상기 저장 영역 온도가 상대적으로 높은(즉, 오버히트된(overheated)) 저장 영역들이 선택될 수 있다.
예를 들어, 저장 영역들(SR1~SR6)을 저장 영역 온도에 따라 내림차순으로 정렬할 수 있다. 도 11a와 같이 X=1인 경우에는, 온도가 가장 높은 저장 영역(SR3) 및 이에 대응하는 데이터 블록(DB3)이 선택될 수 있다. 도 11b와 같이 X=2인 경우에는, 온도가 높은 2개의 저장 영역들(SR3, SR5) 및 이에 대응하는 데이터 블록(DB3) 및 패리티 블록(PB1)이 선택될 수 있다.
도 16은 도 9의 X개의 기입 데이터 블록들을 선택하는 단계의 다른 예를 나타내는 순서도이다. 도 17은 도 16의 동작을 설명하기 위한 도면이다.
도 9, 11a, 11b, 16 및 17을 참조하면, 단계 S615에서, 상기 복수의 저장 영역들 각각에 대해 프로그램/소거 사이클(P/E cycle) 값을 모니터링할 수 있다(단계 S615b1). 예를 들어, 저장 영역들(SR1~SR6)에 대한 프로그램/소거 사이클 값들(PE_SR1, PE_SR2, PE_SR3, PE_SR4, PE_SR5, PE_SR6)이 모니터링될 수 있다.
상기 프로그램/소거 사이클 값에 기초하여 상기 복수의 저장 영역들 중 상기 X개의 저장 영역들을 선택하고(단계 S615b2), 상기 복수의 기입 데이터 블록들 중 상기 X개의 저장 영역들에 기입하고자 하는 기입 데이터 블록들을 상기 X개의 기입 데이터 블록들로 선택할 수 있다(단계 S615b3). 예를 들어, 상기 프로그램/소거 사이클 값이 상대적으로 큰(즉, 많이 사용된) 저장 영역들이 선택될 수 있다.
예를 들어, 저장 영역들(SR1~SR6)을 프로그램/소거 사이클 값에 따라 내림차순으로 정렬하고, 도 11a의 경우에는 프로그램/소거 사이클 값이 가장 큰 저장 영역(SR3) 및 이에 대응하는 데이터 블록(DB3)이 선택되며, 도 11b의 경우에는, 프로그램/소거 사이클 값이 큰 2개의 저장 영역들(SR3, SR5) 및 이에 대응하는 데이터 블록(DB3) 및 패리티 블록(PB1)이 선택될 수 있다.
도 18은 도 9의 X개의 기입 데이터 블록들을 선택하는 단계의 또 다른 예를 나타내는 순서도이다. 도 19는 도 18의 동작을 설명하기 위한 도면이다.
도 9, 11a, 11b, 18 및 19를 참조하면, 단계 S615에서, 상기 복수의 저장 영역들 각각에 대해 프로그램 소요 시간을 모니터링할 수 있다(단계 S615c1). 예를 들어, 저장 영역들(SR1~SR6)에 대한 프로그램 소요 시간들(PT_SR1, PT_SR2, PT_SR3, PT_SR4, PT_SR5, PT_SR6)이 모니터링될 수 있다.
상기 프로그램 소요 시간에 기초하여 상기 복수의 저장 영역들 중 상기 X개의 저장 영역들을 선택하고(단계 S615c2), 상기 복수의 기입 데이터 블록들 중 상기 X개의 저장 영역들에 기입하고자 하는 기입 데이터 블록들을 상기 X개의 기입 데이터 블록들로 선택할 수 있다(단계 S615c3). 예를 들어, 상기 프로그램 소요 시간이 상대적으로 긴(즉, 프로그램 속도가 느린) 저장 영역들이 선택될 수 있다.
예를 들어, 저장 영역들(SR1~SR6)을 프로그램 소요 시간에 따라 내림차순으로 정렬하고, 도 11a의 경우에는 프로그램 소요 시간이 가장 긴 저장 영역(SR3) 및 이에 대응하는 데이터 블록(DB3)이 선택되며, 도 11b의 경우에는, 프로그램 소요 시간이 긴 2개의 저장 영역들(SR3, SR5) 및 이에 대응하는 데이터 블록(DB3) 및 패리티 블록(PB1)이 선택될 수 있다.
도 20은 도 9의 X개의 기입 데이터 블록들을 선택하는 단계의 또 다른 예를 나타내는 순서도이다.
도 9 및 20을 참조하면, 단계 S615에서, 상기 복수의 저장 영역들 중 상기 X개의 저장 영역들을 랜덤하게(randomly) 선택하고(단계 S615d2), 상기 복수의 기입 데이터 블록들 중 상기 X개의 저장 영역들에 기입하고자 하는 기입 데이터 블록들을 상기 X개의 기입 데이터 블록들로 선택할 수 있다(단계 S615d3).
도 14 내지 20을 참조하여 상기 X개의 기입 데이터 블록들을 선택하기 위한 예시적인 기준들을 설명하였으나, 본 발명은 이에 한정되지 않으며, 그 밖에 다양한 기준들을 이용하여 상기 X개의 기입 데이터 블록들을 선택할 수 있다. 또한, 하나의 기준을 이용하여 상기 X개의 기입 데이터 블록들을 선택하는 것으로 설명하였으나, 본 발명은 이에 한정되지 않으며, 2개 이상의 기준들을 동시에 이용하여(예를 들어, 저장 영역 온도 및 프로그램/소거 사이클 값을 동시에 고려하여) 상기 X개의 기입 데이터 블록들을 선택할 수도 있다.
도 21은 도 8의 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계의 다른 예를 나타내는 순서도이다. 이하 도 9와 중복되는 설명은 생략한다.
도 8 및 21을 참조하면, 단계 S610에서, 단계 S611, S613, S615 및 S617은 도 9를 참조하여 상술한 것과 실질적으로 동일할 수 있다.
이후에, 상기 X개의 기입 데이터 블록들에 대한 생략 데이터 정보를 생성하고(단계 S621), 상기 생략 데이터 정보를 저장할 수 있다(단계 S623). 예를 들어, 상기 생략 데이터 정보는 스트라이핑 정보, 생략 블록 관련 정보 등을 포함할 수 있다. 상기 X개의 기입 데이터 블록들을 직접 저장하는 대신에, 상기 X개의 기입 데이터 블록들과 관련된 상기 생략 데이터 정보만이 저장될 수 있다.
단계 S621 및 S623은 도 4의 기입 모듈(480)에 의해 수행될 수 있다.
도 22는 도 1의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 다른 예를 나타내는 순서도이다. 이하 도 2와 중복되는 설명은 생략한다.
도 1 및 22를 참조하면, 단계 S400에서, 단계 S500, S600 및 S700은 도 2를 참조하여 상술한 것과 실질적으로 동일할 수 있다.
상기 기입 스로틀링 동작을 수행한 이후에, 추가 기입 동작을 수행할 수 있다(단계 S800). 구체적으로, 상기 추가 기입 동작은 상기 복수의 기입 데이터 블록들 중 기입 동작이 생략된 상기 다른 일부의 기입 데이터 블록에 대한 기입 동작을 수행하는 것을 나타낸다. 예를 들어, 상기 기입 스로틀링 동작을 수행한 이후에 미리 정해진 조건을 만족하는 경우에 상기 추가 기입 동작이 수행될 수 있다.
일 실시예에서, 단계 S600이 수행된 이후에, 상기 스토리지 장치는 상기 기입 데이터에 대한 기입 동작이 완료되지 않았음을 상기 호스트 장치에 통지할 수 있다. 예를 들어, AER(Asynchronous Event Request)에 기초하여 상술한 통지 동작이 수행될 수 있다. 이 경우, 상기 스토리지 장치는 외부로부터 수신되는 요청(예를 들어, 상기 호스트 장치로부터의 요청)에 기초하여 단계 S800을 수행할 수 있다.
다른 실시예에서, 단계 S600이 수행된 이후에, 상기 스토리지 장치는 상기 기입 데이터에 대한 기입 동작이 완료되었음을 상기 호스트 장치에 통지할 수 있다. 이 경우, 상기 스토리지 장치는 내부적으로 상기 미리 정해진 조건을 만족하는지 판단하고 이에 기초하여 단계 S800을 수행할 수 있다.
일 실시예에서, 단계 S800이 수행되기 전에, 상기 스토리지 장치는 단계 S800이 수행될 예정임을 상기 호스트 장치에 통지할 수 있다. 이에 따라, 상기 호스트 장치로부터 독출 요청이 수신되는 경우에, 독출 동작에 대해 레이턴시(latency)가 발생할 수 있음을 상기 호스트 장치에게 알릴 수 있다. 이를 통해, 상기 호스트 장치는 상기 스토리지 장치에서 데이터의 독출이 불가능하다는 메시지 또는 신호를 수신할 경우, 복사본을 저장한 백업 서버(backup server)를 통해 해당 데이터에 대한 독출을 수행할 수 있도록 준비할 수 있다. 예를 들어, NVMe-oF와 같은 네트워크 프로토콜(network protocol)을 이용하여 독출할 수 있다.
도 23은 도 22의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 구체적인 일 예를 나타내는 순서도이다. 이하 도 8과 중복되는 설명은 생략한다.
도 22 및 23을 참조하면, 단계 S510, S610, S630 및 S710은 도 8을 참조하여 상술한 것과 실질적으로 동일할 수 있다.
단계 S800에서, 상기 미리 정해진 조건을 만족하는 경우에, 단계 S610에서 기입 동작이 생략된 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 수행할 수 있다(단계 S810).
도 24는 도 23의 X개의 기입 데이터 블록들에 대한 기입 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 23 및 24를 참조하면, 단계 S810에서, 상기 호스트 장치로부터의 기입 완료 요청이 수신된 경우에(단계 S811a: 예), 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하면서 생성되어 저장된 생략 데이터 정보를 독출할 수 있다(단계 S813). 예를 들어, 상기 생략 데이터 정보는 도 21의 단계 S621 및 S623에 의해 생성 및 저장되며, 도 4의 기입 모듈(480)에 저장되어 있을 수 있다.
상기 생략 데이터 정보에 기초하여 상기 X개의 기입 데이터 블록들을 복원하고(단계 S815), 복원된 상기 X개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하도록, 상기 복수의 저장 영역들 중 상기 X개의 기입 데이터 블록들에 대응하는 상기 X개의 저장 영역들에 대해 기입 커맨드를 전송할 수 있다(단계 S817).
단계 S815는 도 4의 데이터 복원 모듈(444)에 의해 수행되고, 단계 S817은 도 4의 기입 모듈(480)에 의해 수행될 수 있다.
한편, 상기 기입 완료 요청이 수신되지 않은 경우에는(단계 S811a: 아니오), 상기 기입 완료 요청의 수신을 대기할 수 있다.
도 25a 및 25b는 도 24의 동작을 설명하기 위한 도면들이다.
도 25a를 참조하면, 도 11a와 같이 데이터 블록(DB3)에 대한 기입 동작이 생략된 이후에 도 24의 동작을 예시하고 있다.
예를 들어, 상기 기입 완료 요청이 수신된 경우에, 생략 데이터 정보(SDI)에 기초하여 데이터 복원 동작(RCON)을 수행하여, 데이터 블록(DB3')이 생성될 수 있다. 복원된 데이터 블록(DB3')은 도 11a의 데이터 블록(DB3)과 실질적으로 동일할 수 있다. 이후에, 저장 영역(SR3)에 기입 커맨드(WCMD)가 전송되고 복원된 데이터 블록(DB3')이 기입될 수 있다.
도 25b를 참조하면, 도 11b와 같이 데이터 블록(DB3) 및 패리티 블록(PB1)에 대한 기입 동작이 생략된 이후에 도 24의 동작을 예시하고 있다.
예를 들어, 상기 기입 완료 요청이 수신된 경우에, 생략 데이터 정보(SDI)에 기초하여 데이터 복원 동작(RCON)을 수행하여, 데이터 블록(DB3') 및 패리티 블록(PB1')이 생성될 수 있다. 복원된 데이터 블록(DB3') 및 복원된 패리티 블록(PB1')은 도 11b의 데이터 블록(DB3) 및 패리티 블록(PB1)과 실질적으로 동일할 수 있다. 이후에, 저장 영역들(SR3, SR5)에 기입 커맨드(WCMD)가 전송되고 복원된 데이터 블록(DB3') 및 복원된 패리티 블록(PB1')이 기입될 수 있다.
도 26 및 27은 도 23의 X개의 기입 데이터 블록들에 대한 기입 동작을 수행하는 단계의 다른 예들을 나타내는 순서도들이다. 이하 도 24와 중복되는 설명은 생략한다.
도 23 및 26을 참조하면, 단계 S810에서, 상기 스토리지 장치가 유휴(idle) 상태(또는 유휴 시간)인 경우에(단계 S811b: 예), 단계 S813, S815 및 S817이 수행될 수 있다. 단계 S813, S815 및 S817은 도 24를 참조하여 상술한 것과 실질적으로 동일할 수 있다.
한편, 상기 스토리지 장치가 상기 유휴 상태가 아닌 경우에는(단계 S811b: 아니오), 상기 유휴 상태로의 진입을 대기할 수 있다.
도 23 및 27을 참조하면, 단계 S810에서, 상기 동작 온도가 상기 제1 기준 온도보다 낮은 제2 기준 온도(TNORM)보다 낮아지는 경우에(단계 S811c: 예), 단계 S813, S815 및 S817이 수행될 수 있다. 단계 S813, S815 및 S817은 도 24를 참조하여 상술한 것과 실질적으로 동일할 수 있다. 제2 기준 온도(TNORM)는 정상 온도 등으로 지칭될 수 있다.
한편, 상기 동작 온도가 제2 기준 온도(TNORM)보다 높거나 같은 경우에는(단계 S811c: 아니오), 상기 동작 온도의 하강을 대기할 수 있다.
도 24 내지 27을 참조하여 상기 추가 기입 동작을 수행하기 위한 예시적인 조건들을 설명하였으나, 본 발명은 이에 한정되지 않으며, 그 밖에 다양한 조건들에 기초하여 상기 추가 기입 동작을 수행할 수 있다. 또한, 하나의 조건에 기초하여 상기 추가 기입 동작을 수행하는 것으로 설명하였으나, 본 발명은 이에 한정되지 않으며, 2개 이상의 조건들을 동시에 만족하는 경우에 상기 추가 기입 동작을 수행할 수도 있다.
한편, 실시예에 따라서, 기입 동작이 생략된 기입 데이터 블록들에 대한 복원이 어려운 경우에는, 상기 기입 데이터를 복제하여 여러 개 기입한 경우에 복제된 데이터에 기초하여 상기 복원 동작이 수행될 수도 있다.
도 28은 도 2의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 구체적인 다른 예를 나타내는 순서도이다. 이하 도 8과 중복되는 설명은 생략한다.
도 2 및 28을 참조하면, 단계 S510, S610, S630 및 S710은 도 8을 참조하여 상술한 것과 실질적으로 동일할 수 있다. 상기 동작 온도가 제1 기준 온도(TOFS1)보다 높고(단계 S510: 예) 제1 기준 온도(TOFS1)보다 높은 제3 기준 온도(TOFS2)보다 낮거나 같은 경우에(단계 S520: 아니오), 단계 S610 및 S630이 수행될 수 있다.
상기 동작 온도가 제3 기준 온도(TOFS2)보다 높아지는 경우에(단계 S520: 예), 상기 복수의 기입 데이터 블록들 중 Y(Y는 X보다 큰 자연수)개의 기입 데이터 블록들에 대한 기입 동작을 생략하고(단계 S650), 상기 복수의 기입 데이터 블록들 중 Q(Q는 P보다 작은 자연수)개의 기입 데이터 블록들에 대해서만 기입 동작을 수행할 수 있다(단계 S670). X 및 P가 Y 및 Q로 변경되는 것을 제외하면, 단계 S650 및 S670은 단계 S610 및 S630과 실질적으로 동일할 수 있다. 예를 들어, 단계 S610 및 S630은 도 11a에 대응하고, 단계 S650 및 S670은 도 11b에 대응할 수 있다. 다시 말하면, 동작 온도가 증가할수록 기입 동작이 생략되는 기입 데이터 블록의 개수가 증가할 수 있다.
도 29는 도 22의 기입 스로틀링 동작 또는 정상 기입 동작을 수행하는 단계의 구체적인 다른 예를 나타내는 순서도이다. 이하 도 8 및 23과 중복되는 설명은 생략한다.
도 22 및 29를 참조하면, 단계 S510, S610, S630, S810 및 S710은 도 8을 참조하여 상술한 것과 실질적으로 동일하고, 단계 S520, S650 및 S670은 도 28을 참조하여 상술한 것과 실질적으로 동일할 수 있다.
단계 S800에서, 상기 미리 정해진 조건을 만족하는 경우에, 단계 S650에서 기입 동작이 생략된 상기 Y개의 기입 데이터 블록들에 대한 기입 동작을 수행할 수 있다(단계 S850). X가 Y로 변경되는 것을 제외하면, 단계 S850은 단계 S810과 실질적으로 동일할 수 있다.
도 8 내지 29를 참조하여 기준 온도가 1개 또는 2개인 경우에 기초하여 상기 기입 스로틀링 동작을 설명하였으나, 본 발명은 이에 한정되지 않으며, 기준 온도가 3개 이상인 경우에 기초하여 상기 기입 스로틀링 동작이 수행될 수도 있다.
도 30은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 30을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 단계 S1100 및 S1200은 도 1의 단계 S100 및 S200과 실질적으로 동일할 수 있다.
상기 기입 데이터 및 상기 동작 온도에 기초하여 복수의 기입 데이터 블록들을 생성한다(단계 S1300). 단계 S1300은 도 1의 단계 S300과 유사하며, 다만 상기 동작 온도의 변화에 기초하여 상기 기입 데이터 블록들을 생성하는 방식이 변경되며, 상기 기입 데이터 블록들의 개수가 변경될 수 있다. 단계 S1300에 대해서는 도 31 등을 참조하여 후술하도록 한다.
상기 복수의 저장 영역들 모두에 기입 커맨드를 전송하여, 상기 복수의 기입 데이터 블록들 모두에 대한 기입 동작을 수행하는 정상 기입 동작을 수행한다(단계 S1400). 예를 들어, 단계 S1400은 도 12 및 13을 참조하여 상술한 것처럼 수행될 수 있다.
도 31은 도 30의 복수의 기입 데이터 블록들을 생성하는 단계의 일 예를 나타내는 순서도이다.
도 30 및 31을 참조하면, 단계 S1300에서, 상기 동작 온도가 변화한 것으로 판단된 경우에(단계 S1500: 예), 상기 기입 데이터에 기초하여 제1 개수의 기입 데이터 블록들을 생성할 수 있다(단계 S1600). 상기 동작 온도가 변화하지 않고 유지되는 것으로 판단된 경우에(단계 S1500: 아니오), 상기 제1 개수와 다른 제2 개수의 기입 데이터 블록들을 생성할 수 있다(단계 S1700).
도 32는 도 31의 복수의 기입 데이터 블록들을 생성하는 단계의 구체적인 일 예를 나타내는 순서도이다.
도 31 및 32를 참조하면, 단계 S1510은 도 8의 단계 S510과 실질적으로 동일하고, 단계 S1610 및 S1620은 도 6의 단계 S310 및 S330과 실질적으로 동일할 수 있다. 상기 동작 온도가 제1 기준 온도(TOFS1)보다 낮거나 같은 경우에(단계 S1510: 아니오), 단계 S1620이 수행될 수 있다.
상기 동작 온도가 제1 기준 온도(TOFS1)보다 높아지는 경우에(단계 S1510: 예), 상기 N개의 서브 데이터들을 인코딩하여 N개의 데이터 블록들 및 L(L은 K보다 큰 자연수)개의 패리티 블록들을 포함하는 상기 복수의 기입 데이터 블록들을 획득할 수 있다(단계 S1720). 다시 말하면, 동작 온도가 증가할수록 생성되는 패리티 블록의 개수가 증가하며, 따라서 데이터 복구율이 증가할 수 있다.
도 33은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 33을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 단계 S2100, S2200 및 S2400은 도 1의 단계 S100, S200 및 S400과 실질적으로 동일하고, 단계 S2300은 도 30의 단계 S2300과 실질적으로 동일할 수 있다. 도 33의 실시예는 도 1의 실시예 및 도 30의 실시예가 조합된 실시예일 수 있다.
도 34는 본 발명의 실시예들에 따른 스토리지 장치가 적용된 데이터 센터를 나타내는 블록도이다.
도 34를 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 어플리케이션 서버들(3100~3100n) 및 스토리지 서버들(3200~3200m)을 포함할 수 있다. 어플리케이션 서버들(3100~3100n)의 개수 및 스토리지 서버들(3200~3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(3100~3100n)의 개수 및 스토리지 서버들(3200~3200m)의 개수는 서로 다를 수 있다.
어플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 어플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다.
어플리케이션 서버들(3100~3100n) 및 스토리지 서버들(3200~3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fiber Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200~3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)과 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예에서, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 어플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 어플리케이션 서버(3100)에 대한 설명은 다른 어플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.
어플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200~3200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200~3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 어플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버(3200~3200m)에 포함된 메모리(3220~3220m) 또는 스토리지 장치(3250~3250m)에 액세스할 수 있다. 이로써, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100~3100n) 및/또는 스토리지 서버들(3200~3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100~3100n) 및/또는 스토리지 서버들(3200~3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200~3200m)의 스토리지 장치로(3250~3250m)부터 스토리지 서버들(3200~3200m)의 메모리들(3220~3220m)을 거쳐서, 또는 바로 어플리케이션 서버들(3100~3100n)의 메모리(3120~3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 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), CXL(Compute eXpress Link), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS, eUFS(embedded UFS), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)과 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다. 이와 유사하게, 어플리케이션 서버(3100)는 스위치(3130) 및 NIC(3140)을 더 포함할 수 있다.
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버(3200~3200m) 또는 어플리케이션 서버(3100~3100n)에서 프로세서는 스토리지 장치(3150~3150n, 3250~3250m) 또는 메모리(3120~3120n, 3220~3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150~3150m, 3250~3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252~3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252~3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 어플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다.
스토리지 장치(3250~3250m)는 본 발명의 실시예들에 따른 스토리지 장치이고, 본 발명의 실시예들에 따른 데이터 기입 방법을 수행할 수 있다.
본 발명의 실시예들은 스토리지 장치를 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 PC, 서버 컴퓨터, 데이터 센터, 워크스테이션, 노트북, 핸드폰, 스마트 폰, MP3 플레이어, PDA, PMP, 디지털 TV, 디지털 카메라, 포터블 게임 콘솔, 네비게이션 기기, 웨어러블 기기, IoT 기기, IoE 기기, e-북, VR 기기, AR 기기, 드론 등과 같은 전자 시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 외부의 호스트 장치로부터 스토리지 장치의 복수의 저장 영역들에 기입하고자 하는 기입 데이터를 수신하는 단계;
    상기 스토리지 장치의 동작 온도를 수신하여 모니터링하는 단계;
    상기 기입 데이터에 기초하여 복수의 기입 데이터 블록들을 생성하는 단계;
    상기 동작 온도의 변화를 기초로, 상기 복수의 저장 영역들 중 일부의 저장 영역에 기입 커맨드를 전송하고 다른 일부의 저장 영역에 기입 커맨드를 미전송하여, 상기 복수의 기입 데이터 블록들 중 일부의 기입 데이터 블록에 대한 기입 동작을 수행하고 다른 일부의 기입 데이터 블록에 대한 기입 동작을 생략(skip)하는 기입 스로틀링(write throttling) 동작을 수행하는 단계; 및
    상기 기입 스로틀링 동작을 수행한 이후에, 상기 복수의 기입 데이터 블록들 중 상기 다른 일부의 기입 데이터 블록에 대한 기입 동작을 수행하는 추가 기입 동작을 수행하는 단계를 포함하는 스토리지 장치의 데이터 기입 방법.
  2. 제 1 항에 있어서, 상기 기입 스로틀링 동작을 수행하는 단계는,
    상기 동작 온도가 제1 기준 온도보다 높아지는 경우에, 상기 복수의 기입 데이터 블록들 중 X(X는 자연수)개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계; 및
    상기 동작 온도가 상기 제1 기준 온도보다 높아지는 경우에, 상기 복수의 기입 데이터 블록들 중 P(P는 자연수)개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  3. 제 2 항에 있어서, 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계는,
    상기 동작 온도에 대한 온도 프로파일(profile) 데이터를 독출하는 단계;
    상기 온도 프로파일 데이터에 기초하여, 기입 동작을 생략하고자 하는 기입 데이터 블록들의 개수를 나타내는 X를 결정하는 단계;
    상기 복수의 기입 데이터 블록들 중 상기 X개의 기입 데이터 블록들을 선택하는 단계; 및
    상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하도록, 상기 복수의 저장 영역들 중 상기 X개의 기입 데이터 블록들에 대응하는 X개의 저장 영역들에 대한 기입 커맨드의 전송을 생략하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  4. 제 3 항에 있어서, 상기 X개의 기입 데이터 블록들을 선택하는 단계는,
    상기 복수의 저장 영역들 각각에 대해 저장 영역 온도를 모니터링하는 단계;
    상기 저장 영역 온도에 기초하여 상기 복수의 저장 영역들 중 상기 X개의 저장 영역들을 선택하는 단계; 및
    상기 복수의 기입 데이터 블록들 중 상기 X개의 저장 영역들에 기입하고자 하는 기입 데이터 블록들을 상기 X개의 기입 데이터 블록들로 선택하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  5. 제 3 항에 있어서, 상기 X개의 기입 데이터 블록들을 선택하는 단계는,
    상기 복수의 저장 영역들 각각에 대해 프로그램/소거 사이클(P/E cycle) 값을 모니터링하는 단계;
    상기 프로그램/소거 사이클 값에 기초하여 상기 복수의 저장 영역들 중 상기 X개의 저장 영역들을 선택하는 단계; 및
    상기 복수의 기입 데이터 블록들 중 상기 X개의 저장 영역들에 기입하고자 하는 기입 데이터 블록들을 상기 X개의 기입 데이터 블록들로 선택하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  6. 제 3 항에 있어서, 상기 X개의 기입 데이터 블록들을 선택하는 단계는,
    상기 복수의 저장 영역들에 대해 프로그램 소요 시간을 모니터링하는 단계;
    상기 프로그램 소요 시간에 기초하여 상기 복수의 저장 영역들 중 상기 X개의 저장 영역들을 선택하는 단계; 및
    상기 복수의 기입 데이터 블록들 중 상기 X개의 저장 영역들에 기입하고자 하는 기입 데이터 블록들을 상기 X개의 기입 데이터 블록들로 선택하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  7. 제 3 항에 있어서, 상기 X개의 기입 데이터 블록들을 선택하는 단계는,
    상기 복수의 저장 영역들 중 상기 X개의 저장 영역들을 랜덤하게(randomly) 선택하는 단계; 및
    상기 복수의 기입 데이터 블록들 중 상기 X개의 저장 영역들에 기입하고자 하는 기입 데이터 블록들을 상기 X개의 기입 데이터 블록들로 선택하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  8. 제 3 항에 있어서,
    상기 온도 프로파일 데이터에 기초하여, 상기 기입 동작을 생략하고자 하는 기입 데이터 블록들의 개수를 나타내는 X가 조정 가능한 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  9. 제 3 항에 있어서, 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계는,
    상기 X개의 기입 데이터 블록들에 대한 생략 데이터 정보를 생성하는 단계; 및
    상기 생략 데이터 정보를 저장하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  10. 제 3 항에 있어서, 상기 P개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계는,
    상기 P개의 기입 데이터 블록들에 대한 기입 동작을 수행하도록, 상기 복수의 저장 영역들 중 상기 P개의 기입 데이터 블록들에 대응하는 P개의 저장 영역들에 기입 커맨드를 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  11. 삭제
  12. 제 2 항에 있어서, 상기 추가 기입 동작을 수행하는 단계는,
    상기 호스트 장치로부터의 기입 완료 요청에 기초하여, 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하면서 생성되어 저장된 생략 데이터 정보를 독출하는 단계;
    상기 생략 데이터 정보에 기초하여 상기 X개의 기입 데이터 블록들을 복원하는 단계; 및
    복원된 상기 X개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  13. 제 2 항에 있어서, 상기 추가 기입 동작을 수행하는 단계는,
    상기 스토리지 장치가 유휴(idle) 상태인 경우에, 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하면서 생성되어 저장된 생략 데이터 정보를 독출하는 단계;
    상기 생략 데이터 정보에 기초하여 상기 X개의 기입 데이터 블록들을 복원하는 단계; 및
    복원된 상기 X개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  14. 제 2 항에 있어서, 상기 추가 기입 동작을 수행하는 단계는,
    상기 동작 온도가 상기 제1 기준 온도보다 낮은 제2 기준 온도보다 낮아지는 경우에, 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략하면서 생성되어 저장된 생략 데이터 정보를 독출하는 단계;
    상기 생략 데이터 정보에 기초하여 상기 X개의 기입 데이터 블록들을 복원하는 단계; 및
    복원된 상기 X개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  15. 제 2 항에 있어서, 상기 기입 스로틀링 동작을 수행하는 단계는,
    상기 동작 온도가 상기 제1 기준 온도보다 높은 제3 기준 온도보다 높아지는 경우에, 상기 복수의 기입 데이터 블록들 중 Y(Y는 X보다 큰 자연수)개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계; 및
    상기 동작 온도가 상기 제3 기준 온도보다 높아지는 경우에, 상기 복수의 기입 데이터 블록들 중 Q(Q는 P보다 작은 자연수)개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  16. 제 1 항에 있어서,
    상기 동작 온도의 유지를 기초로, 상기 복수의 저장 영역들 모두에 기입 커맨드를 전송하여, 상기 복수의 기입 데이터 블록들 모두에 대한 기입 동작을 수행하는 정상 기입 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  17. 제 1 항에 있어서, 상기 복수의 기입 데이터 블록들을 생성하는 단계는,
    상기 기입 데이터를 N(N은 2 이상의 자연수)개의 서브 데이터들로 분할하는 단계; 및
    상기 N개의 서브 데이터들을 인코딩하여 N개의 데이터 블록들 및 K(K는 자연수)개의 패리티 블록들을 포함하는 상기 복수의 기입 데이터 블록들을 획득하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  18. 제 17 항에 있어서,
    상기 복수의 기입 데이터 블록들 중 상기 기입 스로틀링 동작에서 기입 동작이 생략되는 상기 다른 일부의 기입 데이터 블록의 개수는 K보다 작거나 같은 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  19. 복수의 저장 영역들; 및
    상기 복수의 저장 영역들의 동작을 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는, 외부의 호스트 장치로부터 상기 복수의 저장 영역들에 기입하고자 하는 기입 데이터를 수신하고, 스토리지 장치의 동작 온도를 수신하여 모니터링하고, 상기 기입 데이터에 기초하여 복수의 기입 데이터 블록들을 생성하며, 상기 동작 온도의 변화를 기초로 상기 복수의 저장 영역들 중 일부의 저장 영역에 기입 커맨드를 전송하고 다른 일부의 저장 영역에 기입 커맨드를 미전송하여 상기 복수의 기입 데이터 블록들 중 일부의 기입 데이터 블록에 대한 기입 동작을 수행하고 다른 일부의 기입 데이터 블록에 대한 기입 동작을 생략(skip)하는 기입 스로틀링(write throttling) 동작을 수행하며, 상기 기입 스로틀링 동작을 수행한 이후에 상기 복수의 기입 데이터 블록들 중 상기 다른 일부의 기입 데이터 블록에 대한 기입 동작을 수행하는 추가 기입 동작을 수행하는 스토리지 장치.
  20. 외부의 호스트 장치로부터 스토리지 장치의 복수의 저장 영역들에 기입하고자 하는 기입 데이터를 수신하는 단계;
    상기 스토리지 장치의 동작 온도를 수신하여 모니터링하는 단계;
    상기 기입 데이터를 N(N은 2 이상의 자연수)개의 서브 데이터들로 분할하는 단계;
    상기 N개의 서브 데이터들을 인코딩하여 N개의 데이터 블록들 및 K(K는 자연수)개의 패리티 블록들을 포함하는 복수의 기입 데이터 블록들을 획득하는 단계;
    상기 동작 온도가 제1 기준 온도보다 낮거나 같은 경우에, 상기 복수의 저장 영역들 모두에 기입 커맨드를 전송하여, 상기 복수의 기입 데이터 블록들 모두에 대한 기입 동작을 수행하는 단계;
    상기 동작 온도가 상기 제1 기준 온도보다 높아지는 경우에, 상기 복수의 기입 데이터 블록들 중 X(X는 자연수)개의 기입 데이터 블록들에 대한 기입 동작을 생략하는 단계;
    상기 동작 온도가 상기 제1 기준 온도보다 높아지는 경우에, 상기 복수의 기입 데이터 블록들 중 P(P는 자연수)개의 기입 데이터 블록들에 대해서만 기입 동작을 수행하는 단계; 및
    상기 X개의 기입 데이터 블록들에 대한 기입 동작을 생략한 이후에, 상기 호스트 장치로부터의 기입 완료 요청을 수신하거나 상기 스토리지 장치가 유휴(idle) 상태이거나 상기 동작 온도가 상기 제1 기준 온도보다 낮은 제2 기준 온도보다 낮아지는 경우에, 상기 X개의 기입 데이터 블록들에 대한 기입 동작을 추가적으로 수행하는 단계를 포함하고,
    기입 동작이 생략되는 기입 데이터 블록의 개수를 나타내는 X는, 패리티 블록의 개수를 나타내는 K보다 작거나 같은 스토리지 장치의 데이터 기입 방법.
KR1020220069419A 2022-06-08 2022-06-08 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 KR102537770B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220069419A KR102537770B1 (ko) 2022-06-08 2022-06-08 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
US18/132,092 US20230401002A1 (en) 2022-06-08 2023-04-07 Method of writing data in storage device using write throttling and storage device performing the same
EP23173484.9A EP4290355A1 (en) 2022-06-08 2023-05-15 Method of writing data in storage device using write throttling and storage device performing the same
CN202310660747.9A CN117193630A (zh) 2022-06-08 2023-06-06 使用写节流在存储装置中写数据的方法及存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220069419A KR102537770B1 (ko) 2022-06-08 2022-06-08 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR102537770B1 true KR102537770B1 (ko) 2023-05-30

Family

ID=86386958

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220069419A KR102537770B1 (ko) 2022-06-08 2022-06-08 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치

Country Status (4)

Country Link
US (1) US20230401002A1 (ko)
EP (1) EP4290355A1 (ko)
KR (1) KR102537770B1 (ko)
CN (1) CN117193630A (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090131285A (ko) * 2008-02-29 2009-12-28 가부시끼가이샤 도시바 반도체 기억 장치
JP2014167809A (ja) * 2014-04-21 2014-09-11 Toshiba Corp 情報処理装置
JP2015032317A (ja) * 2013-08-06 2015-02-16 慧榮科技股▲分▼有限公司 データ記憶装置とアクセス制御方法
JP2017117054A (ja) * 2015-12-22 2017-06-29 株式会社東芝 メモリシステムおよび制御方法
KR20210013845A (ko) * 2019-07-29 2021-02-08 삼성전자주식회사 QoS 레이턴시 향상을 위한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101490327B1 (ko) * 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US9152568B1 (en) * 2011-12-05 2015-10-06 Seagate Technology Llc Environmental-based device operation
US10156987B1 (en) * 2015-06-26 2018-12-18 Amazon Technologies, Inc. Temperature management in a data storage system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090131285A (ko) * 2008-02-29 2009-12-28 가부시끼가이샤 도시바 반도체 기억 장치
JP2015032317A (ja) * 2013-08-06 2015-02-16 慧榮科技股▲分▼有限公司 データ記憶装置とアクセス制御方法
JP2014167809A (ja) * 2014-04-21 2014-09-11 Toshiba Corp 情報処理装置
JP2017117054A (ja) * 2015-12-22 2017-06-29 株式会社東芝 メモリシステムおよび制御方法
KR20210013845A (ko) * 2019-07-29 2021-02-08 삼성전자주식회사 QoS 레이턴시 향상을 위한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치

Also Published As

Publication number Publication date
EP4290355A1 (en) 2023-12-13
CN117193630A (zh) 2023-12-08
US20230401002A1 (en) 2023-12-14

Similar Documents

Publication Publication Date Title
US10496312B2 (en) Method of operating a storage device to compress or decompress data and a data storage system including the storage device
KR20140044070A (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
US11762572B2 (en) Method of operating storage device and method of operating storage system using the same
KR102537770B1 (ko) 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
US20230126685A1 (en) Storage device and electronic system
US20220164144A1 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
US11675504B2 (en) Memory controller, memory system including the same, and method of operating the same
US11669470B2 (en) Storage system with capacity scalability and method of operating the same
KR20200128825A (ko) 분리된 rpmb 기능을 가지는 스토리지 시스템 및 그 구동 방법
KR102482116B1 (ko) 연산 스토리지 장치의 메모리 할당 및 보호 방법 및 이를 수행하는 연산 스토리지 장치
US12032492B2 (en) Method of operating storage device and method of operating storage system using the same
KR102477051B1 (ko) 네트워크를 이용한 스토리지 장치의 데이터 복구 방법 및 이를 수행하는 스토리지 장치
US20230128638A1 (en) Method of operating storage device and method of operating storage system using the same
KR102482115B1 (ko) 멀티-레벨 어드레스 변환을 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
KR102435910B1 (ko) 스토리지 장치 및 그것의 동작 방법
US11854648B2 (en) Method of resetting storage device, storage device performing the same and data center including the same
EP4375839A1 (en) Method of operating storage device using program suspension control and storage device performing the same
EP4180969B1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same
KR102545465B1 (ko) 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치
US20230143943A1 (en) Method of operating storage device for retention enhancement and storage device performing the same
EP4187398A1 (en) Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
KR20230087863A (ko) 메모리 시스템의 동작 방법 및 이를 수행하는 메모리 시스템
TW202301074A (zh) 控制充電電壓的方法
KR20230067457A (ko) 스토리지 컨트롤러, 스토리지 시스템 및 그 동작방법
KR20230076709A (ko) 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
GRNT Written decision to grant