KR20200078047A - 메모리 시스템 및 메모리 시스템의 동작방법 - Google Patents

메모리 시스템 및 메모리 시스템의 동작방법 Download PDF

Info

Publication number
KR20200078047A
KR20200078047A KR1020180167585A KR20180167585A KR20200078047A KR 20200078047 A KR20200078047 A KR 20200078047A KR 1020180167585 A KR1020180167585 A KR 1020180167585A KR 20180167585 A KR20180167585 A KR 20180167585A KR 20200078047 A KR20200078047 A KR 20200078047A
Authority
KR
South Korea
Prior art keywords
data
memory
local address
address
attribute
Prior art date
Application number
KR1020180167585A
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 KR1020180167585A priority Critical patent/KR20200078047A/ko
Priority to US16/571,979 priority patent/US11243716B2/en
Priority to JP2019185774A priority patent/JP7449063B2/ja
Priority to CN201910967869.6A priority patent/CN111352857B/zh
Publication of KR20200078047A publication Critical patent/KR20200078047A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0646Horizontal data movement in storage systems, i.e. moving data in between 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Memory System (AREA)

Abstract

메모리 시스템은, 복수의 메모리 유닛을 포함하는 메모리 풀; 및 상기 복수의 메모리 유닛을 제어하는 컨트롤러를 포함하되, 상기 컨트롤러는 호스트로부터 액세스 커맨드와 함께 수신되는 시스템 어드레스를 상기 메모리 풀 내부의 로컬 어드레스로 변환하는 어드레스 변환부; 상기 메모리 풀 내부 데이터의 시간적으로 가변하는 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경하는 기준치 결정부; 상기 데이터 속성 기준치 및 상기 변환된 로컬 어드레스의 액세스 횟수에 기초하여 상기 변환된 로컬 어드레스와 연관된 데이터의 속성을 판단하는 데이터 속성 판단부; 및 상기 판단된 속성에 기초하여 상기 데이터를 구분하여 저장하기 위해 상기 데이터를 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하도록 상기 새로운 로컬 어드레스와 연관된 메모리 유닛을 제어하는 데이터 입출력부를 포함한다.

Description

메모리 시스템 및 메모리 시스템의 동작방법 {MEMORY SYSTEM AND OPERATION METHOD THEREOF}
본 발명은 메모리 시스템에 관한 것으로, 메모리 풀을 포함하는 메모리 시스템 및 그것의 동작방법에 관한 것이다.
데이터는 4차 산업혁명 시대 기업들의 비즈니스에 가장 중요한 자산이 되고 있으며, 이에 대규모 데이터를 빠르게 전송 및 분석하도록 지원하는 최신 기술에 대한 수요가 점차 증가하고 있다. 예를 들어, 인공지능, 자율주행, 로봇, 헬스케어, 가상현실(virtual reality, VR)/증강현실(augmented reality, AR), 스마트홈 등이 확대됨에 따라 서버나 데이터 센터에 대한 수요의 증가가 예상되고 있다.
레거시(legacy) 데이터 센터는 자원들(예; 컴퓨팅, 네트워킹, 스토리지)을 하나의 장비 내에 포함시키는 구조였다. 그러나 미래의 대용량 데이터 센터는 자원 들을 각각 별개로 구성하고, 논리적으로 자원들을 재구성하는 구조를 가질 수 있다. 예를 들어, 대용량 데이터 센터는 자원들을 각각 랙(rack) 수준에서 모듈화하고, 용도에 따라 자원들을 재구성하여 공급할 수 있는 구조를 가질 수 있다. 따라서 미래의 대용량 데이터 센터에 사용하기 적합한 통합형 스토리지 또는 메모리 디바이스가 요구되고 있다.
시간적으로 가변하는 로컬 어드레스별 액세스 횟수를 반영하여 데이터 속성을 결정하고, 서로 다른 속성의 데이터를 메모리 풀에 구분하여 저장하는 메모리 시스템 및 그의 동작 방법을 제공하고자 한다.
본 발명의 일 실시예에 따른 메모리 시스템은, 복수의 메모리 유닛을 포함하는 메모리 풀; 및 상기 복수의 메모리 유닛을 제어하는 컨트롤러를 포함하되, 상기 컨트롤러는 호스트로부터 액세스 커맨드와 함께 수신되는 시스템 어드레스를 상기 메모리 풀 내부의 로컬 어드레스로 변환하는 어드레스 변환부; 상기 메모리 풀 내부 데이터의 시간적으로 가변하는 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경하는 기준치 결정부; 상기 데이터 속성 기준치 및 상기 변환된 로컬 어드레스의 액세스 횟수에 기초하여 상기 변환된 로컬 어드레스와 연관된 데이터의 속성을 판단하는 데이터 속성 판단부; 및 상기 판단된 속성에 기초하여 상기 데이터를 구분하여 저장하기 위해 상기 데이터를 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하도록 상기 새로운 로컬 어드레스와 연관된 메모리 유닛을 제어하는 데이터 입출력부를 포함한다.
본 발명의 일 실시예에 따르면, 메모리 풀을 포함하는 메모리 시스템의 동작 방법은, 호스트로부터 액세스 커맨드와 함께 수신되는 시스템 어드레스를 상기 메모리 풀 내부의 로컬 어드레스로 변환하는 단계; 상기 메모리 풀 내부 데이터의 시간적으로 가변하는 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경하는 단계; 상기 데이터 속성 기준치 및 상기 변환된 로컬 어드레스의 액세스 횟수에 기초하여 상기 변환된 로컬 어드레스와 연관된 데이터의 속성을 판단하는 단계; 및 상기 판단된 속성에 기초하여 상기 데이터를 구분하여 저장하기 위해 상기 데이터를 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하는 단계를 포함한다.
시간적으로 가변하는 로컬 어드레스별 액세스 횟수를 반영하여 데이터 속성을 결정하고, 서로 다른 속성의 데이터를 메모리 풀에 구분하여 저장하는 메모리 시스템 및 그의 동작 방법을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 구조를 나타내는 도면이다.
도 2는 데이터 속성에 따라 제1 및 제2 메모리 유닛에 데이터를 구분하여 저장하기 위한 어드레스 매핑을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 데이터 컨트롤 유닛의 구조를 개략적으로 나타내는 도면이다.
도 4는 시스템 어드레스를 새로운 로컬 어드레스에 매핑하는 동작을 설명하기 위한 도면이다.
도 5 내지 도 6은 본 발명의 일 실시예에 따른 메모리 시스템의 라이트 동작을 나타내는 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템의 리드 동작을 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 메모리 시스템의 데이터 속성 업데이트 동작을 나타내는 흐름도이다.
도 9 내지 도 12는 본 발명의 일 실시예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 구조를 나타내는 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(110)을 포함하는 데이터 처리 시스템(100)의 구조를 나타내는 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은 메모리 시스템(110) 및 호스트(102)를 포함할 수 있다.
미래의 데이터 센터와 같은 서버 시스템 또는 데이터 처리 시스템은 연산 보드들, 메모리 보드들 등과 같은 다수의 보드들이 단위 랙 내에서 구별되어 장착되는 구조를 가질 수 있다. 메모리 시스템(110)은 상기 메모리 보드와 대응할 수 있다. 호스트(102)는 상기 연산 보드와 대응할 수 있다.
도 1을 참조하면, 메모리 시스템(110)은 메모리 풀(150) 및 컨트롤러(130)를 포함할 수 있다.
메모리 풀(150)은 복수의 메모리 유닛을 포함할 수 있다. 상기 메모리 유닛들은 컨트롤러(130)의 제어에 따라 데이터를 저장(또는 라이트)하고, 저장된 데이터를 출력(또는 리드)할 수 있다.
메모리 풀(150)은 다양한 사용자 워크로드(user workload)를 충족시키기 위하여 서로 다른 특성을 가지는 다수의 메모리 유닛들을 포함할 수 있다. 즉, 하나의 메모리 풀(150)은 DRAM, PCRAM, MRAM, STT-RAM, 플래시 메모리와 같은 다수의 메모리들이 통합된 형태를 가지는 통합 메모리 디바이스(convergence memory device)일 수 있다. 이러한 통합 메모리 디바이스는 각 메모리들이 서로 다른 특성을 가지기 때문에 다양한 사용 모델(usage model)에 활용될 수 있다.
메모리 풀(150)은 제1 메모리 그룹(1st memory group) 및 제2 메모리 그룹(2nd memory group)을 포함할 수 있다. 제1 메모리 그룹 및 제2 메모리 그룹은 각각 하나 이상의 메모리 유닛을 포함할 수 있다. 메모리 유닛들은 외부의 커맨드에 응하여 내부에 데이터를 저장할 수 있다.
일 실시예에서, 제1 메모리 그룹에 포함된 제1 메모리 유닛(1st memory unit)들 및 제2 메모리 그룹에 포함된 제2 메모리 유닛(2nd memory unit)들은 서로 다른 특성을 가질 수 있다. 일 예로, 제1 메모리 유닛들은 제2 메모리 유닛들에 비해 액세스 속도가 빠른 메모리 장치를 포함할 수 있다. 일 예로, 제1 메모리 유닛들은 휘발성 메모리 유닛이고, 제2 메모리 유닛들은 비휘발성 메모리 유닛일 수 있다. 휘발성 메모리 유닛의 예로 DIMM과 같은 DRAM 유닛이 있다. 비휘발성 메모리 유닛의 예로 UFS(Universal Flash Stroage), eMMC와 같은 NAND 플래시 메모리 유닛이 있다.
제1 메모리 유닛과 제2 메모리 유닛은 서로 다른 장점을 가질 수 있다. 제1 메모리 유닛이 DRAM 유닛이고 제2 메모리 유닛이 NAND 플래시 메모리 유닛인 경우를 예로 들어 상기 제1 및 제2 메모리 유닛의 서로 다른 장점을 설명한다. 제1 메모리 유닛은 제2 메모리 유닛에 비해 액세스 속도가 빠르며, 제2 메모리 유닛보다 수명이 길 수 있다. 제2 메모리 유닛은 비휘발성 메모리로서, 내부에 저장된 데이터를 유지하기 위해 리프레시 동작을 수행할 필요가 없으므로 저전력으로 동작할 수 있다.
한편, 상기 제2 메모리 유닛이 제1 메모리 유닛에 비해 액세스 속도가 느릴 수 있다. 일 실시예에서, 제2 메모리 그룹은 느린 액세스 속도를 개선하기 위해 캐시 메모리 유닛(미도시)을 더 포함할 수 있다. 상기 캐시 메모리 유닛은 DRAM 유닛일 수 있다. 실시예에 따라, 상기 캐시 메모리 유닛은 라이트 스루(Write through)방식으로 동작하거나, 라이트 백(Write back)방식으로 동작할 수 있다.
컨트롤러(130)는 호스트(102)와 메모리 풀(150) 내부의 메모리 유닛 사이에서 데이터 송수신을 제어할 수 있다.
컨트롤러(130)는 호스트 인터페이스(132), 데이터 컨트롤 유닛(134) 및 메모리 인터페이스(136)를 포함할 수 있다.
데이터 컨트롤 유닛(134)은 메모리 시스템(110)의 전반적인 동작을 제어할 수 있다. 예를 들어, 데이터 컨트롤 유닛(134)은 라이트 요청에 응하여 호스트(102)로부터 수신한 라이트 데이터를 메모리 유닛에 저장하는 라이트 동작을 제어할 수 있다. 다른 예로, 데이터 컨트롤 유닛(134)은 리드 요청에 응하여 메모리 유닛에 저장된 데이터를 리드하고, 리드 데이터를 호스트(102)로 출력하는 리드 동작을 제어할 수 있다.
호스트 인터페이스(132)는 호스트(102)와 데이터 컨트롤 유닛(134) 사이에서의 인터페이싱을 지원한다. 일 실시예에서, 호스트 인터페이스(132)는 데이터 컨트롤 유닛(134)과 호스트(102) 사이에서의, 상호접속 보드를 통한 인터페이싱을 지원할 수 있다. 상기 상호접속 보드는 도 11에서 구체적으로 설명된다.
호스트 인터페이스(132)는 하나 이상의 유선 또는 무선 통신 기술들과 관련된 프로토콜들을 사용하여, 데이터 컨트롤 유닛(134)으로부터 수신되는 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 수신되는 데이터를 데이터 컨트롤 유닛(134)으로 제공할 수 있다. 예를 들어, 호스트 인터페이스(132)는 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 호스트(102)와 데이터 컨트롤 유닛(134) 사이의 통신을 지원할 수 있다. 뿐만 아니라, 호스트 인터페이스(132)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 따라 호스트(102)와 데이터 컨트롤 유닛(134) 사이의 통신을 지원할 수 있다.
메모리 인터페이스(136)는 데이터 컨트롤 유닛(134)과 메모리 풀(150)의 메모리 유닛 사이의 인터페이싱을 지원한다. 메모리 인터페이스(136)는 트래픽 중재기(Traffic Arbitrator) 및 제1 메모리 컨트롤 유닛(1st MCU) 및 제2 메모리 컨트롤 유닛(2nd MCU)을 포함할 수 있다.
제1 메모리 컨트롤 유닛은 제1 메모리 그룹에 포함된 제1 메모리 유닛들을 제어할 수 있다. 즉, 상기 제1 메모리 컨트롤 유닛은 컨트롤러(130)와 제1 메모리 유닛들 사이에서 데이터 송수신을 지원할 수 있다.
제2 메모리 컨트롤 유닛은 제2 메모리 그룹에 포함된 제2 메모리 유닛들을 제어할 수 있다. 즉, 상기 제2 메모리 컨트롤 유닛은 컨트롤러(130)와 제2 메모리 유닛들 사이에서 데이터 송수신을 지원할 수 있다.
트래픽 중재기는 데이터 컨트롤 유닛(134)과 상기 제1 및 제2 메모리 컨트롤 유닛 간 신호 송수신을 중재할 수 있다. 구체적으로, 상기 트래픽 중재기는 데이터 컨트롤 유닛(134)으로부터 수신한 리드 또는 라이트 커맨드를 메모리 풀(150)의 로컬 어드레스와 연관된 메모리 컨트롤 유닛으로 제공할 수 있다.
한편, 컨트롤러(130)는 상기 제1 메모리 유닛과 제2 메모리 유닛의 서로 다른 장점을 모두 취하기 위해 상기 제1 메모리 유닛과 제2 메모리 유닛이 서로 다른 속성의 데이터를 저장하도록 제어할 수 있다. 예를 들어, 컨트롤러(130)는 자주 액세스되는 핫 데이터는 액세스 속도가 빠른 제1 메모리 유닛에 저장되고, 드물게 액세스되는 콜드 데이터는 저전력으로 동작할 수 있는 제2 메모리 유닛에 저장되도록 제어할 수 있다.
도 2는 데이터 속성에 따라 제1 및 제2 메모리 유닛에 데이터를 구분하여 저장하기 위한 어드레스 매핑을 설명하기 위한 도면이다.
도 2는 호스트(102)의 시스템 어드레스, 메모리 풀(150)의 로컬 어드레스 및 상기 시스템 어드레스와 로컬 어드레스의 어드레스 매핑을 예시한다.
상기 시스템 어드레스는 호스트(102)에서 메모리 시스템(110)으로 액세스하기 위한 어드레스이다. 상기 시스템 어드레스의 일 예는 LBA(Logical Block Address)이다.
상기 로컬 어드레스는 상기 시스템 어드레스를 수신한 컨트롤러(130)가 메모리 풀(150) 내부의 메모리 유닛으로 액세스하기 위한 어드레스이다. 상기 로컬 어드레스들 각각은 소정의 메모리 유닛에 연관된다. 메모리 유닛의 종류에 따라서, 상기 로컬 어드레스는 물리 어드레스일 수도 있고 논리 어드레스일 수도 있다. 예를 들어 메모리 유닛이 NAND 플래시 메모리 유닛인 경우, 상기 로컬 어드레스는 논리 어드레스로서, 연관된 메모리 유닛 내부에서 물리 어드레스로 변환될 수 있다.
상기 로컬 어드레스들 각각이 어느 메모리 유닛과 연관되는지에 따라 상기 로컬 어드레스들을 제1 로컬 어드레스 그룹(1st local address group) 및 제2 로컬 어드레스 그룹(2nd local address group)으로 나눌 수 있다. 제1 로컬 어드레스 그룹에 속하는 로컬 어드레스들은 제1 메모리 유닛들과 연관되고, 제2 로컬 어드레스 그룹에 속하는 로컬 어드레스들은 제2 메모리 유닛들과 연관될 수 있다. 즉, 제1 로컬 어드레스 그룹에 속하는 로컬 어드레스들은 핫 데이터와 연관되고, 제2 로컬 어드레스 그룹에 속하는 로컬 어드레스들은 콜드 데이터와 연관될 수 있다.
도 2는 시스템 어드레스 '1'이 로컬 어드레스 'A'에 매핑된 것을 예시하고 있다. 로컬 어드레스 'A'는 제1 로컬 어드레스 그룹에 속하므로, 로컬 어드레스 'A'에 연관된 데이터는 핫 데이터일 수 있다. 마찬가지로, 시스템 어드레스 '2'는 로컬 어드레스 'a'에 매핑되는 경우, 로컬 어드레스 'a'에 연관된 데이터는 콜드 데이터일 수 있다.
본 발명의 일 실시예에 따르면, 컨트롤러(130)는 호스트(102)로부터 액세스 커맨드와 함께 수신되는 시스템 어드레스를 상기 메모리 풀(150)의 로컬 어드레스로 변환할 수 있다. 그리고 컨트롤러(130)는 메모리 풀(150)의 로컬 어드레스별로 상기 액세스 커맨드 수신 횟수, 즉 액세스 횟수를 카운트할 수 있다. 상기 액세스 커맨드는 리드 커맨드 및 라이트 커맨드를 포함할 수 있다.
컨트롤러(130)는 시간적으로 가변하는 상기 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경할 수 있다. 상기 데이터 속성 기준치는 상기 변환된 로컬 어드레스와 연관된 데이터의 속성을 판단하기 위한 액세스 횟수의 기준치이다.
컨트롤러(130)는 상기 데이터 속성 기준치 및 상기 로컬 어드레스별 액세스 횟수에 기초하여 로컬 어드레스와 연관된 데이터의 속성을 판단하며, 상기 판단된 속성에 따라 상기 데이터를 메모리 풀(150)에 구분하여 저장할 수 있다. 또한, 컨트롤러(130)는 로컬 어드레스의 액세스 횟수 및 상기 데이터 속성 기준치가 동적으로 변경됨에 따라 상기 로컬 어드레스와 연관된 데이터의 속성이 변경되면, 상기 변경된 속성에 따라 상기 데이터를 메모리 풀(150) 내에서 옮겨 저장할 수 있다.
본 발명의 일 실시예에 따르면, 컨트롤러(130)는 시간적으로 가변하는 상기 로컬 어드레스별 액세스 횟수 및 데이터 속성 기준치를 반영하여 메모리 풀(150)에 핫 데이터와 콜드 데이터를 구분하여 저장할 수 있다. 따라서, 메모리 시스템(110) 내부의 제1 메모리 유닛과 제2 메모리 유닛의 장점이 최대한 발휘될 수 있다.
도 3은 본 발명의 일 실시예에 따른 데이터 컨트롤 유닛(134)의 구조를 개략적으로 나타내는 도면이다.
데이터 컨트롤 유닛(134)은 맵 테이블(302), 어드레스 변환부(304), 액세스 카운터(306), 기준치 결정부(308), 데이터 속성 판단부(310), 어드레스 매핑 변경부(312) 및 데이터 입출력부(314)를 포함할 수 있다.
맵 테이블(302)은 시스템 어드레스 및 로컬 어드레스 사이의 어드레스 매핑 정보를 저장할 수 있다.
어드레스 변환부(304)는 맵 테이블(302)을 참조하여 호스트(102)로부터 리드 커맨드 또는 라이트 커맨드와 함께 수신되는 시스템 어드레스를 로컬 어드레스로 변환할 수 있다. 상기 수신된 시스템 어드레스에 매핑된 로컬 어드레스가 저장되어있지 않은 경우 어드레스 변환부(304)는 상기 수신된 시스템 어드레스를 새로운 로컬 어드레스에 매핑할 수 있다.
액세스 카운터(306)는 로컬 어드레스별 액세스 횟수를 카운트할 수 있다. 구체적으로, 액세스 카운터(306)는 컨트롤러(130) 내부의 메모리(미도시)에 저장된 로컬 어드레스별 액세스 횟수 값들 중 상기 리드 또는 라이트 커맨드에 응하여 변환된 로컬 어드레스의 액세스 횟수를 변경할 수 있다. 일 실시예에서, 액세스 카운터(306)는 최근의 액세스 경향을 반영하기 위해 소정 주기로 모든 로컬 어드레스별 액세스 횟수 값을 초기화하고 상기 액세스 횟수 카운트를 재개할 수 있다.
기준치 결정부(308)는 시간적으로 가변하는 로컬 어드레스별 액세스 횟수 값들에 기초하여 데이터 속성 기준치를 동적으로 변경할 수 있다. 기준치 결정부(308)가 데이터 속성 기준치를 동적으로 변경하는 동작의 예는 도 6을 참조하여 설명된다.
데이터 속성 판단부(310)는 상기 동적으로 결정된 데이터 속성 기준치에 기초하여 각 로컬 어드레스에 연관된 데이터의 속성을 판단할 수 있다. 일 실시예에서, 데이터 속성 판단부(310)는 로컬 어드레스가 액세스될 때마다 해당 로컬 어드레스에 연관된 데이터의 속성을 판단할 수 있다. 일 실시예에서, 데이터 속성 판단부(310)는 소정 주기로 메모리 풀(150)에 저장된 모든 데이터의 속성을 로컬 어드레스별로 판단할 수 있다. 데이터 속성 판단부가 소정 주기로 상기 모든 데이터의 속성을 로컬 어드레스별로 판단하는 동작의 예는 도 8을 참조하여 설명된다.
어드레스 매핑 변경부(312)는 소정 조건에 따라 어드레스 매핑을 변경할 수 있다. 일 실시예에서, 상기 소정 조건은 상기 판단된 데이터의 속성이 변경되었는지 여부를 포함할 수 있다. 어드레스 매핑 변경부(312)는 데이터 속성 판단부(310)에 의해 판단된 데이터의 속성에 기초하여 해당 데이터의 속성이 변경되었는지 여부를 판단할 수 있다. 해당 데이터의 속성이 변경된 경우 어드레스 매핑 변경부(312)는 해당 데이터의 어드레스 매핑을 변경할 수 있다.
어드레스 매핑 변경부(312)는 해당 데이터가 메모리 풀(150)의 다른 메모리 유닛에 저장되도록 해당 데이터에 연관된 시스템 어드레스를 새로운 로컬 어드레스에 매핑함으로써 상기 어드레스 매핑을 변경할 수 있다.
도 4는 시스템 어드레스를 새로운 로컬 어드레스에 매핑하는 동작을 설명하기 위한 도면이다.
도 4는 도 2와 유사하게 시스템 어드레스, 로컬 어드레스 및 상기 시스템 어드레스와 로컬 어드레스의 어드레스 매핑을 예시하고 있다.
다시 도 2를 참조하면, 시스템 어드레스 '2'가 로컬 어드레스 'a'에 매핑되는 경우, 시스템 어드레스 '2'에 연관된 데이터는 콜드 데이터일 수 있다. 호스트(102)로부터 상기 시스템 어드레스 '2'에 대한 리드 또는 라이트 커맨드를 수신하여 로컬 어드레스 'a'의 액세스 카운트가 증가하면 상기 데이터의 속성이 핫 데이터로 판단될 수 있다. 어드레스 매핑 변경부(312)는 제2 로컬 어드레스 그룹에 포함된 로컬 어드레스 'a'에 연관된 데이터가 핫 데이터로 판단되었으므로, 상기 데이터의 속성이 변경된 것으로 판단할 수 있다.
도 4를 참조하면, 어드레스 매핑 변경부(312)는 상기 데이터가 제1 메모리 유닛에 저장되도록 상기 시스템 어드레스 '2'를 제1 로컬 어드레스 그룹에 속하는 새로운 로컬 어드레스 'D'에 매핑할 수 있다. 어드레스 매핑 변경부(312)는 상기 시스템 어드레스와 새로운 로컬 어드레스 사이의 어드레스 매핑 정보를 맵 테이블(302)에 반영할 수 있다.
일 실시예에서, 상기 소정 조건은 상기 판단된 데이터의 속성이 변경되었는지 여부뿐만 아니라 액세스 카운터(306)가 상기 액세스 횟수 카운트를 개시한지 소정 시간이 지났는지 여부를 더 포함할 수 있다. 액세스 카운터(306)가 상기 액세스 횟수 카운트를 개시한 초기에는 각 로컬 어드레스별 액세스 횟수 값이 메모리 풀(150)에 저장된 데이터의 속성을 결정하기에 충분히 수집되지 않았을 수 있기 때문이다.
다시 도 3을 참조하면, 데이터 입출력부(314)는 메모리 인터페이스(136)로 커맨드를 제공함으로써 메모리 유닛의 데이터 입출력을 제어할 수 있다. 일 실시예에서, 데이터 입출력부(314)는 변경되기 전의 이전 로컬 어드레스(Old Local Address)의 대응 메모리 영역에 저장된 데이터를 리드하여 새로운 로컬 어드레스(New Local Address)의 대응 메모리 영역에 상기 리드된 데이터를 라이트할 수 있다.
이하 도 5 내지 도 8을 참조하여, 본 발명의 실시예에 따른 메모리 시스템(110)의 라이트 동작, 리드 동작 및 데이터 속성 업데이트 동작을 설명한다.
도 5 내지 도 6은 본 발명의 일 실시예에 따른 메모리 시스템(110)의 라이트 동작을 나타내는 흐름도이다.
도 5를 참조하면, 단계 S502에서 호스트 인터페이스(132)는 호스트(102)로부터 라이트 커맨드, 라이트 데이터 및 라이트 동작을 수행할 제1 시스템 어드레스를 수신할 수 있다. 호스트 인터페이스(132)는 상기 제1 시스템 어드레스를 어드레스 변환부(304)로 제공할 수 있다. 호스트 인터페이스(132)는 상기 라이트 커맨드를 데이터 컨트롤 유닛(134) 내부의 커맨드 큐(미도시)에 큐잉하고, 라이트 데이터 및 제1 시스템 어드레스를 데이터 컨트롤 유닛(134) 내부의 버퍼(미도시)에 버퍼링할 수 있다.
단계 S504에서, 어드레스 변환부(304)는 맵 테이블(302)을 참조하여 호스트 인터페이스(132)로부터 수신한 상기 제1 시스템 어드레스를 제1 로컬 어드레스로 변환할 수 있다.
한편, 메모리 풀(150)이 상기 제1 시스템 어드레스와 연관된 데이터를 처음 저장하는 경우 상기 제1 시스템 어드레스의 매핑 정보가 맵 테이블(302)에 저장되어있지 않을 수 있다. 일 실시예에서, 어드레스 변환부(304)는 상기 제1 시스템 어드레스의 매핑 정보가 맵 테이블(302)에 저장되어있지 않은 경우 상기 제1 시스템 어드레스를 새로운 로컬 어드레스에 매핑하고, 후술되는 단계 S506에서 상기 새로운 로컬 어드레스의 액세스 카운트를 시작할 수 있다. 한편 처음 저장되는 데이터의 액세스 카운트는 '0'이므로, 어드레스 변환부(304)는 상기 데이터를 콜드 데이터로 간주하고 상기 제1 시스템 어드레스를 제2 로컬 어드레스 그룹에 포함된 새로운 로컬 어드레스에 매핑할 수 있다. 메모리 풀(150)이 상기 제1 시스템 어드레스와 연관된 데이터를 처음 저장하는 경우, 상기 제1 로컬 어드레스는 상기 새로운 로컬 어드레스에 해당할 수 있다.
어드레스 변환부(304)는 액세스 카운터(306)로 상기 제1 로컬 어드레스를 제공할 수 있다.
단계 S506에서, 액세스 카운터(306)는 상기 제1 로컬 어드레스의 액세스 횟수를 변경할 수 있다.
액세스 카운터(306)는 메모리 풀(150)에 저장된 모든 데이터의 로컬 어드레스별 액세스 횟수 값들을 기준치 결정부(308)로 제공할 수 있다. 그리고, 액세스 카운터(306)는 상기 제1 로컬 어드레스 및 이의 액세스 횟수 값을 데이터 속성 판단부(310)로 제공할 수 있다.
단계 S508에서, 기준치 결정부(308)는 시간적으로 가변하는 로컬 어드레스별 액세스 횟수 값들에 기초하여 데이터 속성 기준치를 동적으로 결정할 수 있다.
도 6는 단계 S508의 세부 동작을 나타낸 흐름도이다.
일 실시예에서, 단계 S508은 단계 S602 내지 단계 S606를 포함할 수 있다.
단계 S602에서, 기준치 결정부(308)는 액세스 카운터(306)로부터 수신한 최근 소정 시간의 로컬 어드레스별 액세스 횟수 값들의 최댓값과 최솟값을 추출할 수 있다.
단계 S604에서, 기준치 결정부(308)는 상기 최댓값과 최솟값의 평균값을 산출할 수 있다.
단계 S606에서, 기준치 결정부(308)는 상기 산출된 평균값을 상기 데이터 속성 기준치로 결정할 수 있다.
한편, 단계 S604에서 기준치 결정부(308)가 반드시 평균값을 산출해야 하는 것은 아니다. 일 실시예에서, 기준치 결정부(308)는 소정 기준에 따라 최댓값과 최솟값 사이에 있는 다른 값을 산출하여, 단계 S606에서 상기 산출된 값을 상기 데이터 속성 기준치로 결정할 수 있다. 또한, 단계 S602에서 기준치 결정부(308)가 반드시 최댓값 및 최솟값만을 추출해야 하는 것은 아니다. 기준치 결정부(308)는 소정 기준에 따라 로컬 어드레스별 액세스 횟수 값들 중 이들을 대표할 수 있는 복수의 값들을 추출할 수 있다.
일 실시예에서, 상기 데이터 속성 기준치의 상한이 사전에 결정될 수 있다. 메모리 유닛들 내부의 메모리 장치는 액세스 횟수에 따라 수명이 제한될 수 있다. 예를 들어 멀티 레벨 셀 NAND 플래시 메모리 장치의 EW 사이클은 약 1만 회 정도로 제한되어 있다.
제2 메모리 유닛이 수명이 제한된 메모리 유닛인 경우, 내부의 메모리 장치에 소정 빈도 이상 액세스되는 데이터가 저장되면 상기 내부의 메모리 장치가 빠르게 노후화될 수 있다. 따라서 수명이 제한된 메모리 유닛에 소정 빈도 이상 액세스되는 데이터가 저장되지 않도록 상기 데이터 속성 기준치의 상한이 사전에 결정될 수 있다. 일 실시예에서, 상기 데이터 속성 기준치의 상한은 상기 EW 사이클에 기초하여 결정될 수 있다. 기준치 결정부(308)는 단계 S604에서 로컬 어드레스별 액세스 횟수 값들에 기초하여 산출된 값과 상기 데이터 속성 기준치의 상한 중 작은 값을 데이터 속성 기준치로 결정할 수 있다.
다시 도 5를 참조하면, 단계 S510에서 데이터 속성 판단부(310)는 상기 데이터 속성 기준치에 기초하여 라이트 데이터의 속성을 판단할 수 있다.
구체적으로, 데이터 속성 판단부(310)는 상기 제1 로컬 어드레스 및 그의 액세스 횟수 값을 액세스 카운터(306)로부터 수신하고, 상기 데이터 속성 기준치를 기준치 결정부(308)로부터 수신할 수 있다.
데이터 속성 판단부(310)는 비교기(미도시)를 포함할 수 있다. 상기 비교기는 상기 제1 로컬 어드레스의 액세스 횟수 값이 상기 데이터 속성 기준치 이상인지 여부에 따라 상기 제1 로컬 어드레스와 연관된 상기 라이트 데이터의 속성을 판단할 수 있다. 예를 들어, 상기 제1 로컬 어드레스의 액세스 횟수 값이 상기 데이터 속성 기준치 이상이면 상기 라이트 데이터는 핫 데이터로 판단될 수 있다. 반면에 상기 제1 로컬 어드레스의 액세스 횟수 값이 상기 데이터 속성 기준치 미만이면 상기 라이트 데이터는 콜드 데이터로 판단될 수 있다.
단계 S512에서, 데이터 속성 판단부(310)는 어드레스 매핑을 변경하기 위한 소정 조건이 만족되는지 판단할 수 있다. 도 3을 참조하여 설명된 것과 같이, 상기 소정 조건은 상기 판단된 라이트 데이터의 속성이 변경되었는지 여부를 포함하고, 액세스 카운터(306)가 액세스 횟수 카운트를 개시한지 소정 시간이 지났는지 여부를 더 포함할 수 있다.
상기 소정 조건이 만족되는 경우(단계 S512에서, "Yes"), 데이터 속성 판단부(310)는 상기 제1 로컬 어드레스 및 이와 연관된 데이터의 속성을 어드레스 매핑 변경부(312)로 제공할 수 있다. 데이터 컨트롤 유닛(134)은 후술되는 단계 S514 내지 단계 S516의 동작을 수행할 수 있다.
상기 소정 조건이 만족되지 않은 경우(단계 S512에서, "No"), 데이터 속성 판단부(310)는 상기 제1 로컬 어드레스를 데이터 입출력부(314)로 제공할 수 있다. 데이터 컨트롤 유닛(134)은 후술되는 단계 S518의 동작을 수행할 수 있다.
단계 S514에서, 어드레스 매핑 변경부(312)는 제1 시스템 어드레스를 새로운 제1 로컬 어드레스에 매핑할 수 있다.
어드레스 매핑 변경부(312)는 상기 새로운 제1 로컬 어드레스를 데이터 입출력부(314)로 제공할 수 있다. 어드레스 매핑 변경부(312)는 상기 제1 시스템 어드레스와 상기 새로운 제1 로컬 어드레스의 어드레스 매핑 정보를 맵 테이블(302)에 업데이트할 수 있다. 그리고 어드레스 매핑 변경부(312)는 액세스 카운터(306)가 새로운 제1 로컬 어드레스의 액세스 횟수 값을 이전 제1 로컬 어드레스의 액세스 횟수 값으로 변경하고, 상기 이전 제1 로컬 어드레스의 액세스 횟수 값을 초기화하도록 액세스 카운터(306)를 제어할 수 있다.
단계 S516에서, 데이터 입출력부(314)는 메모리 인터페이스(136)로 상기 새로운 제1 로컬 어드레스, 라이트 커맨드 및 라이트 데이터를 제공할 수 있다. 여기서, 상기 라이트 커맨드는 단계 S502에서 커맨드 큐(미도시)에 큐잉된 라이트 커맨드이고, 상기 라이트 데이터는 단계 S502에서 버퍼(미도시)에 버퍼링된 라이트 데이터일 수 있다. 메모리 인터페이스(136)는 데이터 입출력부(314)로부터 수신한 라이트 커맨드에 응하여 상기 새로운 제1 로컬 어드레스와 연관된 메모리 유닛이 라이트 동작을 수행하도록 상기 메모리 유닛을 제어할 수 있다.
한편, 상기 제1 시스템 어드레스와 상기 이전 제1 로컬 어드레스의 매핑이 해제되므로 호스트(102)로부터 액세스 커맨드와 함께 상기 제1 시스템 어드레스가 다시 수신되면 상기 이전 제1 로컬 어드레스로는 액세스되지 않을 것이다. 상기 이전 제1 로컬 어드레스는 향후 어드레스 변환부(302) 또는 어드레스 매핑 변경부(312)에 의해 다른 시스템 어드레스에 매핑될 수 있다.
단계 S518에서, 데이터 입출력부(314)는 기존 제1 로컬 어드레스에 호스트(102)로부터 수신한 라이트 데이터를 라이트하도록 메모리 인터페이스(136)로 라이트 커맨드를 제공할 수 있다. 여기서, 상기 라이트 커맨드는 단계 S502에서 커맨드 큐(미도시)에 큐잉된 라이트 커맨드이고, 상기 라이트 데이터는 단계 S502에서 버퍼(미도시)에 버퍼링된 라이트 데이터일 수 있다. 메모리 인터페이스(136)는 데이터 입출력부(314)로부터 수신한 라이트 커맨드에 응하여 상기 기존 제1 로컬 어드레스와 연관된 메모리 유닛이 라이트 동작을 수행하도록 상기 메모리 유닛을 제어할 수 있다.
도 5 내지 도 6에서 설명된 메모리 시스템(110)의 라이트 동작에 의하면, 시간적으로 가변하는 로컬 어드레스별 액세스 카운트 및 동적으로 변경되는 데이터 속성 기준치에 기초하여 판단된 라이트 데이터의 속성에 따라 상기 라이트 데이터를 메모리 풀에 구분하여 저장할 수 있다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템(110)의 리드 동작을 나타내는 흐름도이다.
단계 S702에서, 호스트 인터페이스(132)는 호스트(102)로부터 리드 커맨드 및 리드 동작을 수행할 제1 시스템 어드레스를 수신할 수 있다. 호스트 인터페이스(132)는 상기 리드 커맨드를 데이터 컨트롤 유닛(134) 내부의 커맨드 큐(미도시)에 큐잉하고, 제1 시스템 어드레스를 데이터 컨트롤 유닛(134) 내부의 버퍼(미도시)에 버퍼링할 수 있다.
단계 S704에서, 어드레스 변환부(304)는 맵 테이블(302)을 참조하여 호스트 인터페이스(132)로부터 수신한 제1 시스템 어드레스를 제1 로컬 어드레스로 변환할 수 있다. 어드레스 변환부(304)는 액세스 카운터(306)로 상기 제1 로컬 어드레스를 제공할 수 있다.
단계 S706에서, 액세스 카운터(306)는 상기 제1 로컬 어드레스의 액세스 횟수를 카운트할 수 있다. 단계 S706의 구체적인 동작은 단계 S506에서 설명된 것과 같다.
단계 S708에서, 기준치 결정부(308)는 시간적으로 가변하는 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 변경할 수 있다. 단계 S708의 구체적인 동작은 단계 S508에서 설명된 것과 같다.
단계 S710에서, 데이터 속성 판단부(310)는 상기 데이터 속성 기준치에 기초하여 리드 데이터의 속성을 판단할 수 있다. 단계 S710의 구체적인 동작은 단계 S510에서 설명된 것과 같다.
단계 S712에서, 데이터 입출력부(314)는 상기 제1 로컬 어드레스와 연관된 메모리 유닛이 리드 동작을 수행하도록 메모리 인터페이스(136)로 리드 커맨드를 제공할 수 있다. 여기서, 상기 리드 커맨드는 단계 S702에서 커맨드 큐(미도시)에 큐잉된 리드 커맨드일 수 있다. 메모리 인터페이스(136)는 상기 메모리 유닛으로부터 독출된 리드 데이터를 상기 버퍼(미도시)에 버퍼링할 수 있다. 데이터 입출력부(314)는 상기 버퍼링된 리드 데이터를 호스트 인터페이스(132)를 통해 호스트(102)로 제공할 수 있다.
한편, 본 발명의 실시예에 따르면 로컬 어드레스별 액세스 횟수 및 데이터 속성 기준치는 시간에 따라 가변한다. 따라서, 메모리 풀(150) 내부에 저장된 데이터의 속성은 시간에 따라 변경될 수 있다. 예를 들어, 어떤 데이터가 콜드 데이터로 판단되어 제2 메모리 유닛에 저장되었는데, 해당 데이터를 리드할 때는 해당 데이터가 핫 데이터로 판단될 수 있다. 후술하는 단계 S714 내지 S718에서, 어드레스 매핑 변경부(312)는 리드 데이터의 데이터 속성이 변경된 경우 해당 데이터가 다른 메모리 유닛에 저장되도록 어드레스 매핑을 변경할 수 있다.
단계 S714에서, 데이터 속성 판단부(310)는 어드레스 매핑을 변경하기 위한 소정 조건이 만족되었는지 판단할 수 있다. 도 3을 참조하여 설명된 것과 같이, 상기 소정 조건은 상기 판단된 리드 데이터의 속성이 변경되었는지 여부를 포함하고, 액세스 카운터(306)가 액세스 횟수 카운트를 개시한지 소정 시간이 지났는지 여부를 더 포함할 수 있다.
상기 소정 조건이 만족되는 경우(단계 S714에서, "Yes"), 데이터 속성 판단부(310)는 상기 제1 로컬 어드레스 및 이와 연관된 데이터의 속성을 어드레스 매핑 변경부(312)로 제공할 수 있다. 데이터 컨트롤 유닛(134)은 후술되는 단계 S716 내지 단계 S718의 동작을 수행할 수 있다.
상기 소정 조건이 만족되지 않은 경우(단계 S714에서, "No"), 데이터 컨트롤 유닛(134)은 동작을 종료할 수 있다.
단계 S716에서, 어드레스 매핑 변경부(312)는 제1 시스템 어드레스를 새로운 제1 로컬 어드레스에 매핑할 수 있다. 단계 S716의 구체적인 동작은 단계 S514에서 설명된 것과 같다.
단계 S718에서, 데이터 입출력부(314)는 메모리 인터페이스(136)로 새로운 제1 로컬 어드레스, 라이트 커맨드 및 리드 데이터를 제공할 수 있다. 여기서, 상기 라이트 커맨드는 상기 제1 시스템 어드레스에 연관된 데이터를 상기 새로운 제1 로컬 어드레스에 옮겨 저장하기 위한 커맨드이다. 상기 리드 데이터는 단계 S712에서 독출되어 버퍼(미도시)에 버퍼링된 데이터이다. 메모리 인터페이스(136)는 데이터 입출력부(314)로부터 수신한 라이트 커맨드에 응하여 상기 새로운 제1 로컬 어드레스와 연관된 메모리 유닛이 라이트 동작을 수행하도록 상기 메모리 유닛을 제어할 수 있다.
도 7을 참조하여 설명된 메모리 시스템(110)의 리드 동작에 의하면, 시간적으로 가변하는 로컬 어드레스별 액세스 카운트 및 동적으로 변경되는 데이터 속성 기준치에 기초하여 판단된 리드 데이터의 속성에 따라 상기 리드 데이터를 메모리 풀에 구분하여 저장할 수 있다.
한편, 전술한 대로 메모리 풀(150) 내부에 저장된 데이터의 속성은 시간에 따라 변경될 수 있다. 본 발명의 일 실시예에 따르면, 데이터 컨트롤 유닛(134)은 주기적으로 메모리 풀(150)에 저장된 모든 데이터 속성을 로컬 어드레스별로 갱신하고, 상기 갱신된 속성에 따라 상기 데이터를 구분하여 저장하도록 메모리 풀(150) 내부의 메모리 유닛들을 제어하는, 데이터 속성 업데이트 동작을 수행할 수 있다.
도 8은 본 발명의 일 실시예에 따른 메모리 시스템(110)의 데이터 속성 업데이트 동작을 나타내는 흐름도이다.
후술되는 단계 S802 내지 단계 S808의 데이터 속성 업데이트 동작은 소정 주기로 수행될 수 있다.
도 3을 참조하여 설명된 바에 따르면, 액세스 카운터(306)는 소정 주기로 모든 로컬 어드레스별 액세스 횟수 값을 초기화하고 상기 액세스 횟수 카운트를 재개할 수 있다. 일 실시예에서, 상기 데이터 속성 업데이트 동작은 상기 로컬 어드레스별 액세스 횟수 값을 초기화하는 동작과 같은 주기로 수행될 수 있다. 예컨대 상기 데이터 속성 업데이트 동작은 상기 로컬 어드레스별 액세스 횟수 값을 초기화하기 직전에 수행될 수 있다.
단계 S802에서, 데이터 속성 판단부(310)는 데이터 속성 기준치에 기초하여 메모리 시스템(150)에 저장된 모든 데이터의 속성을 로컬 어드레스별로 판단할 수 있다. 구체적으로, 데이터 속성 판단부(310) 내부의 비교기(미도시)는 동적으로 변경되는 데이터 속성 기준치와 메모리 풀(150)에 저장된 모든 데이터의 로컬 어드레스별 액세스 횟수 값을 비교하여 상기 모든 데이터의 속성을 로컬 어드레스별로 판단할 수 있다. 데이터 속성 판단부(310)는 상기 판단 결과에 기초하여 메모리 풀(150)에 저장된 데이터의 속성이 변경되었는지 여부를 로컬 어드레스별로 판단할 수 있다. 데이터 속성 판단부(310)는 속성이 변경된 데이터와 연관된 로컬 어드레스들을 어드레스 매핑 변경부(312)로 제공할 수 있다.
단계 S804에서, 어드레스 매핑 변경부(312)는 상기 속성이 변경된 데이터가 메모리 풀(150)의 다른 메모리 유닛에 옮겨 저장되도록 어드레스 매핑을 변경할 수 있다.
구체적으로, 어드레스 매핑 변경부(312)는 데이터 속성 판단부(310)로부터 수신한 로컬 어드레스들 및 맵 테이블(302)을 참조하여 상기 속성이 변경된 데이터와 연관된 시스템 어드레스들을 새로운 로컬 어드레스들에 매핑할 수 있다. 어드레스 매핑 변경부(312)는 상기 시스템 어드레스와 새로운 로컬 어드레스들의 어드레스 매핑 정보를 맵 테이블(302)에 반영할 수 있다. 그리고 어드레스 매핑 변경부(312)는 액세스 카운터(306)가 새로운 로컬 어드레스들의 액세스 횟수 값을 이전 로컬 어드레스의 액세스 횟수 값들로 각각 변경하도록 액세스 카운터(306)를 제어할 수 있다.
어드레스 매핑 변경부(312)는 데이터 속성 판단부(310)로부터 수신한 로컬 어드레스, 즉 이전 로컬 어드레스들과 상기 새로운 로컬 어드레스들을 데이터 입출력부(314)로 제공할 수 있다.
단계 S806에서, 데이터 입출력부(314)는 메모리 인터페이스(136)로 상기 이전 로컬 어드레스들을 제공할 수 있다. 메모리 인터페이스(136)는 상기 리드 커맨드에 응하여 상기 이전 로컬 어드레스들과 연관된 메모리 유닛들의 리드 동작을 각각 제어하고, 상기 리드 동작에 의해 독출된 리드 데이터를 메모리 컨트롤 유닛(134) 내부의 버퍼(미도시)에 버퍼링할 수 있다.
단계 S808에서, 데이터 입출력부(314)는 메모리 인터페이스(136)로 라이트 커맨드, 상기 새로운 로컬 어드레스들 및 상기 버퍼링된 리드 데이터를 제공할 수 있다. 메모리 인터페이스(136)는 상기 라이트 커맨드에 응하여 상기 새로운 로컬 어드레스들과 연관된 메모리 유닛 각각의 라이트 동작을 제어할 수 있다.
도 8에서 설명된 메모리 시스템(110)의 데이터 속성 업데이트 동작에 따르면, 시간적으로 가변하는 로컬 어드레스별 액세스 카운트 및 동적으로 변경되는 데이터 속성 기준치에 기초하여 판단된 메모리 풀(150) 내부에 저장된 데이터의 속성에 따라 메모리 풀(150) 내부에 저장된 데이터를 구분하여 저장할 수 있다. 특히, 메모리 컨트롤러(134)는 과거에 핫 데이터로 판단되어 제1 메모리 유닛에 저장되었다가 오랫동안 액세스되지 않은 채로 제1 메모리 유닛에 저장되어 있는 데이터를 제2 메모리 유닛으로 옮겨 저장할 수 있다.
도 1 내지 도 8에서 설명된 메모리 시스템(110)은 메모리 보드 형태로 랙(rack) 내에 장착되어 데이터 센터와 같은 서버 시스템 또는 데이터 처리 시스템을 구성할 수 있다. 본 발명의 일 실시예에 따른 메모리 시스템(110)을 포함하는 데이터 처리 시스템이 도 9 내지 도 12에서 설명된다.
도 9는 데이터 처리 시스템(10)을 도시하는 도면이다.
도 9를 참조하면, 데이터 처리 시스템(10)은 다수의 컴퓨팅 랙들(computing racks, 20)과 관리 인터페이스(management interface, 30), 그리고 이들 사이의 통신이 가능하도록 하는 네트워크(network, 40)을 포함할 수 있다. 이러한 랙스케일 구조(rack-scale architecture)를 가지는 데이터 처리 시스템(10)은 대용량 데이터 처리를 위한 데이터 센터 등에 사용될 수 있다.
다수의 컴퓨팅 랙(20)들 각각은 다른 컴퓨팅 랙(20)들과의 조합으로 하나의 컴퓨팅 시스템을 구현할 수 있다. 이러한 컴퓨팅 랙(20)들의 구체적인 구성 및 동작에 대한 설명은 후술될 것이다.
관리 인터페이스(30)는 사용자가 데이터 처리 시스템(10)을 조정, 운영 또는 관리할 수 있도록 하는 인터액티브 인터페이스(interactive interface)를 제공할 수 있다. 관리 인터페이스(30)는 컴퓨터, 멀티프로세서 시스템, 서버, 랙마운트(rack-mount) 서버, 보드(board) 서버, 랩탑(lap-top) 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨팅 시스템, 네트워크 기기, 웹 기기, 분산 컴퓨팅 시스템, 프로세서 기반 시스템, 및/또는 소비자 전자 기기를 포함하는, 임의 유형의 연산 디바이스로서 구현될 수 있다.
일부 실시 예들에서, 관리 인터페이스(30)는 컴퓨팅 랙(20)들에 의해 수행될 수 있는 연산 기능들이나, 관리 인터페이스(30)에 의해 수행될 수 있는 사용자 인터페이스 기능들을 가지는 분산 시스템에 의해 구현될 수 있다. 다른 일부 실시 예들에서, 관리 인터페이스(30)는 네트워크(40)를 통하여 분산된 다중 컴퓨팅 시스템들에 의해 구성되고 클라우드(cloud)로서 동작하는 가상 서버(virtual server)에 의해 구현될 수 있다. 관리 인터페이스(30)는 프로세서, 입력/출력 서브시스템, 메모리, 데이터 스토리지 디바이스 및 통신 회로를 포함할 수 있다.
네트워크(40)는 컴퓨팅 랙들과 관리 인터페이스(30) 사이 및/또는 컴퓨팅 랙들 사이에서의 데이터를 송수신할 수 있다. 네트워크(40)는 적절한 수의 다양한 유선 및/또는 유선 네트워크들에 의해 구현될 수 있다. 예를 들어, 네트워크(40)는 유선 또는 무선 LAN(local area network), WAN(wide area network) 셀룰라 네트워크, 및/또는 인터넷과 같이 공개적으로 억세스 가능한 글로벌 네트워크(publicly-accessible, global network)에 의해 구현되거나 이를 포함할 수 있다. 추가적으로, 네트워크(40)는 보조적인 컴퓨터들, 라우터(router)들 및 스위치들과 같은 적절한 수의 보조적인 네트워크 디바이스들을 포함할 수 있다. 또한, 네트워크(40)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 의해서 연결될 수 있다.
도 10은 본 발명의 실시 예에 따른 컴퓨팅 랙 구조를 개략적으로 도시하는 도면이다.
도 10을 참조하면, 컴퓨팅 랙(20)은 구성요소들의 구조, 형태 및 호칭 등에 제한되는 것은 아니지만, 다양한 형태의 구성요소들을 포함할 수 있다. 예를 들어, 컴퓨팅 랙(20) 은 다수의 드로워(drawer)들(21 내지 29)를 포함할 수 있다. 다수의 드로워들 (21 내지 29) 각각은 다수의 보드(board)들을 포함할 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 랙(20)은 적절한 수의 연산 보드(compute board), 메모리 보드(memory board) 및/또는 상호접속 보드(interconnect board)의 조합에 의해 구현될 수 있다. 여기서는 컴퓨팅 랙(20)이 다수의 보드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여, 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다. 이러한 컴퓨팅 랙(20)의 구성요소들은 구현의 편의상 기능별로 분류 및 구별되는 구조를 가질 수 있다. 제한되는 것은 아니지만, 컴퓨팅 랙(20)은 상단부터 상호접속 보드, 연산 보드, 메모리 보드의 순서로 분류된 구조를 가질 수 있다. 이러한 컴퓨팅 랙(20) 및 이에 의해 구현되는 컴퓨팅 시스템은 "랙-스케일 시스템(rack-scale system)" 또는"분류 시스템(disaggregated system)"으로 명명될 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 시스템은 하나의 컴퓨팅 랙(20)에 의해 구현될 수 있다. 이를 대신하여, 컴퓨팅 시스템은 2개 이상의 컴퓨팅 랙들에 포함되는 모든 구성요소들에 의해 구현되거나, 2개 이상의 컴퓨팅 랙들에 포함되는 일부 구성요소들의 조합에 의해 구현되거나, 하나의 컴퓨팅 랙(20)에 포함되는 일부 구성요소들에 의해 구현될 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 시스템은 컴퓨팅 랙(20)에 포함되는 적절한 수의 연산 보드, 메모리 보드 및 상호접속 보드(interconnect board)의 조합에 의해 구현될 수 있다. 예를 들어, 컴퓨팅 시스템(20A)는 2개의 연산 보드들, 3개의 메모리 보드들 및 1개의 상호접속 보드에 의해 구현될 수 있다. 다른 예로, 컴퓨팅 시스템(20B)는 3개의 연산 보드들, 2개의 메모리 보드들 및 1개의 상호접속 보드에 의해 구현될 수 있다. 또 다른 예로, 컴퓨팅 시스템(20C)는 1개의 연산 보드들, 4개의 메모리 보드들 및 1개의 상호접속 보드에 의해 구현될 수 있다.
비록 도 10에서는 컴퓨팅 랙(20)이 적절한 수의 연산 보드, 메모리 보드 및/또는 상호접속 보드의 조합에 의해 구현되는 경우를 도시하고 있지만, 컴퓨팅 랙(20)은 통상의 서버 등에서 확인될 수 있는, 파워 시스템, 냉각 시스템, 입력/출력 디바이스들과 같은 추가적인 구성요소들을 포함할 수 있다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 랙(20)의 블록 구성을 도시하는 도면이다.
도 11을 참조하면, 컴퓨팅 랙(20)은 다수의 연산 보드들(compute boards, 200), 다수의 메모리 보드들(memory boards, 400) 및 상호접속 보드(interconnect board, 300)를 포함할 수 있다. 다수의 연산 보드들(200)은 풀드 연산 보드(pooled compute boards), 풀드 연산 시스템 등으로 불리울 수 있다. 유사하게, 다수의 메모리 보드들은 풀드 메모리 보드(pooled memory board), 풀드 메모리 시스템 등으로 불리울 수 있다. 여기서는 컴퓨팅 시스템이 다수의 보드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다.
다수의 연산 보드들(200) 각각은 하나 또는 그 이상의 프로세서, 프로세싱/컨트롤 회로, 또는 중앙처리장치(central processing unit, CPU)와 같은 프로세싱 요소를 포함할 수 있다. 도 1에서 설명된 호스트(102)는 연산 보드(200)에 대응할 수 있다.
다수의 메모리 보드들(400) 각각은 다수의 휘발성 메모리(volatile memory)들 및/또는 비휘발성 메모리(nonvolatile memory)들과 같은 다양한 형태의 메모리들을 포함할 수 있다. 예를 들어, 다수의 메모리 보드들(400) 각각은 다수의 DRAM(Dynamic Random Access Memory)들, 플래시 메모리(flash memory)들, 메모리 카드들, 하드 디스크 드라이브(hard disk drive, HDD)들, 솔리드 스테이트 드라이브(solid state drive, SSD)들, 및/또는 이들의 조합들을 포함할 수 있다.
도 1 내지 도 8에서 설명된 메모리 시스템(110)은 각각의 메모리 보드(400)에 대응할 수 있다. 각각의 메모리 보드(400)는 시간적으로 가변하는 로컬 어드레스별 커맨드 수신 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경하고, 상기 데이터 속성 기준치에 기초하여 판단된 데이터의 속성에 따라 상기 데이터가 구분하여 저장되도록 어드레스 매핑을 수행하는 컨트롤러를 포함할 수 있다.
다수의 메모리 보드들(400) 각각은 연산 보드들(200) 각각에 포함되는 하나 이상의 프로세싱 요소에 의해 분할되거나, 할당되거나, 또는 지정되어 사용될 수 있다. 또한 다수의 메모리 보드들(400) 각각은 연산 보드들(200)에 의해 초기화 및/또는 수행될 수 있는 하나 이상의 오퍼레이팅 시스템(operating system, OS)들을 저장할 수 있다.
상호접속 보드(300)는 연산 보드들(200) 각각에 포함되는 하나 이상의 프로세싱 요소에 의해 분할, 할당 또는 지정되어 사용될 수 있는, 임의의 통신 회로, 디바이스, 또는 이들의 결합에 의해 구현될 수 있다. 예를 들어, 상호접속 보드(300)은 임의 개수의 네트워크 인터페이스 포트들, 카드들, 또는 스위치들로서 구현될 수 있다. 상호접속 보드(300)는 통신을 실행시키기 위한, 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용할 수 있다. 예를 들어, 상호접속 보드(300)은 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 연산 보드들(200)과 메모리 보드들(400) 사이의 통신을 지원할 수 있다. 뿐만 아니라, 상호접속 보드(300)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 의해서 연산 보드들(200)과 연결될 수 있다.
도 12는 본 발명의 실시 예에 따른 연산 보드(200)의 구성을 도시하는 도면이다.
도 12를 참조하면, 연산 보드(200)는 하나 이상의 중앙처리장치(central processing unit, CPU, 210), 하나 이상의 로컬 메모리(local memory, 220) 및 입출력(input/output, I/O) 인터페이스(interface, 230)를 포함할 수 있다.
CPU(210)은 도 10에 도시된 다수의 메모리 보드들(400) 중에서 사용하기 위한 적어도 하나의 메모리 보드를 분할, 할당 또는 지정할 수 있다. 또한 CPU(210)은 분할, 할당 또는 지정된 적어도 하나의 메모리 보드를 초기화하고, 이들을 통해 데이터의 리드 동작, 라이트(또는 프로그램) 동작 등을 수행할 수 있다.
로컬 메모리(220)는 CPU(210)의 동작 수행 중에 필요한 데이터를 저장할 수 있다. 다양한 실시 예들에 있어서, 하나의 로컬 메모리(220)는 하나의 CPU(210)에 일대일 대응하는 구조를 가질 수 있다.
I/O 인터페이스(230)는 도 11의 상호접속 보드(300)를 통한 CPU(210)과 메모리 보드들(400) 사이에서의 인터페이싱을 지원할 수 있다. I/O 인터페이스 (230)은 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용하여, CPU(210)으로부터 상호접속 보드(300)으로의 송신 데이터를 출력하고, 상호접속 보드(300)으로부터 CPU(210)으로의 수신 데이터를 입력할 수 있다. 예를 들어, I/O 인터페이스(230)는 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 CPU (210)과 상호접속 보드(300) 사이의 통신을 지원할 수 있다. 뿐만 아니라, I/O 인터페이스(230)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 따라 CPU(210)와 상호접속 보드(300) 사이의 통신을 지원할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
110: 메모리 시스템
130: 컨트롤러
150: 메모리 풀

Claims (17)

  1. 복수의 메모리 유닛을 포함하는 메모리 풀; 및
    상기 복수의 메모리 유닛을 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는
    호스트로부터 액세스 커맨드와 함께 수신되는 시스템 어드레스를 상기 메모리 풀 내부의 로컬 어드레스로 변환하는 어드레스 변환부;
    상기 메모리 풀 내부 데이터의 시간적으로 가변하는 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경하는 기준치 결정부;
    상기 데이터 속성 기준치 및 상기 변환된 로컬 어드레스의 액세스 횟수에 기초하여 상기 변환된 로컬 어드레스와 연관된 데이터의 속성을 판단하는 데이터 속성 판단부; 및
    상기 판단된 속성에 기초하여 상기 데이터를 구분하여 저장하기 위해 상기 데이터를 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하도록 상기 새로운 로컬 어드레스와 연관된 메모리 유닛을 제어하는 데이터 입출력부
    를 포함하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 복수의 메모리 유닛 각각은
    제1 또는 제2 메모리 유닛 중 어느 하나이고,
    상기 데이터 입출력부는
    상기 변환된 로컬 어드레스의 액세스 횟수가 상기 데이터 속성 기준치 이상인지 여부에 따라 상기 데이터를 제1 메모리 유닛 또는 제2 메모리 유닛 중 어느 하나에 저장함으로써 상기 데이터를 구분하여 저장하는
    메모리 시스템.
  3. 제2항에 있어서,
    상기 컨트롤러는
    상기 시스템 어드레스를 상기 새로운 로컬 어드레스에 매핑하는 어드레스 매핑부를 더 포함하는
    메모리 시스템.
  4. 제2항에 있어서,
    상기 기준치 결정부는
    소정 시간 주기로 상기 메모리 풀 내부 데이터의 로컬 어드레스별 액세스 횟수들의 최댓값 및 최솟값을 추출하고, 상기 최댓값 및 최솟값의 평균값을 산출하고, 상기 산출된 평균값을 상기 기준치로 결정함으로써 상기 데이터 속성 기준치를 동적으로 변경하는
    메모리 시스템.
  5. 제2항에 있어서,
    상기 기준치 결정부는
    소정 시간 주기로 상기 메모리 풀 내부 데이터의 로컬 어드레스별 액세스 횟수들의 최댓값 및 최솟값을 추출하고, 상기 최댓값 및 최솟값의 평균값을 산출하고, 상기 산출된 평균값 및 상기 기준치의 상한 중 작은 값을 상기 기준치로 결정함으로써 데이터 속성 기준치를 동적으로 변경하는
    메모리 시스템.
  6. 제2항에 있어서,
    상기 데이터 입출력부는
    상기 액세스 커맨드가 리드 커맨드인 경우 상기 데이터 속성이 변경되면 상기 변환된 로컬 어드레스에 대응하는 메모리 영역으로부터 독출된 리드 데이터를 상기 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하도록 상기 새로운 로컬 어드레스와 연관된 메모리 유닛을 제어하는
    메모리 시스템.
  7. 제2항에 있어서,
    상기 데이터 입출력부는
    상기 액세스 커맨드가 라이트 커맨드인 경우 상기 데이터 속성이 변경되면 상기 호스트로부터 수신한 라이트 데이터를 상기 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하도록 상기 새로운 로컬 어드레스와 연관된 메모리 유닛을 제어하는
    메모리 시스템.
  8. 제2항에 있어서,
    상기 데이터 속성 판단부는
    주기적으로 상기 메모리 풀 내부의 모든 데이터의 속성을 로컬 어드레스별로 판단하고,
    상기 데이터 입출력부는
    상기 메모리 풀 내부의 모든 데이터 중 데이터 속성이 변경된 데이터를 로컬 어드레스에 대응하는 메모리 영역으로부터 획득하고, 상기 획득된 데이터를 각각 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하도록 상기 새로운 로컬 어드레스와 연관된 메모리 유닛을 제어하는
    메모리 시스템.
  9. 제2항에 있어서,
    상기 제1 메모리 유닛은 DRAM 유닛이고,
    상기 제2 메모리 유닛은 NAND 플래시 메모리 유닛인
    메모리 시스템.
  10. 메모리 풀을 포함하는 메모리 시스템의 동작 방법에 있어서,
    호스트로부터 액세스 커맨드와 함께 수신되는 시스템 어드레스를 상기 메모리 풀 내부의 로컬 어드레스로 변환하는 단계;
    상기 메모리 풀 내부 데이터의 시간적으로 가변하는 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경하는 단계;
    상기 데이터 속성 기준치 및 상기 변환된 로컬 어드레스의 액세스 횟수에 기초하여 상기 변환된 로컬 어드레스와 연관된 데이터의 속성을 판단하는 단계; 및
    상기 판단된 속성에 기초하여 상기 데이터를 구분하여 저장하기 위해 상기 데이터를 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하는 단계
    를 포함하는 동작 방법.
  11. 제10항에 있어서,
    상기 메모리 풀은 하나 이상의 제1 및 제2 메모리 유닛을 포함하고,
    상기 판단된 속성에 기초하여 상기 데이터를 구분하여 저장하기 위해 상기 데이터를 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하는 단계는
    상기 변환된 로컬 어드레스의 액세스 횟수가 상기 데이터 속성 기준치 이상인지 여부에 따라 상기 데이터를 제1 메모리 유닛 또는 제2 메모리 유닛 중 어느 하나에 저장함으로써 상기 데이터를 구분하여 저장하는 단계를 포함하는
    동작 방법.
  12. 제10항에 있어서,
    상기 시스템 어드레스를 상기 새로운 로컬 어드레스에 매핑하는 단계
    를 더 포함하는 동작 방법.
  13. 제10항에 있어서,
    상기 메모리 풀 내부 데이터의 시간적으로 가변하는 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경하는 단계는
    소정 시간 주기로 상기 메모리 풀 내부 데이터의 로컬 어드레스별 액세스 횟수들의 최댓값 및 최솟값을 추출하는 단계;
    상기 최댓값 및 최솟값의 평균값을 산출하는 단계;
    상기 산출된 평균값을 상기 기준치로 결정하는 단계를 포함하는
    동작 방법.
  14. 제10항에 있어서,
    상기 메모리 풀 내부 데이터의 시간적으로 가변하는 로컬 어드레스별 액세스 횟수에 기초하여 데이터 속성 기준치를 동적으로 변경하는 단계는
    소정 시간 주기로 상기 메모리 풀 내부 데이터의 로컬 어드레스별 액세스 횟수들의 최댓값 및 최솟값을 추출하는 단계;
    상기 최댓값 및 최솟값의 평균값을 산출하는 단계; 및
    상기 산출된 평균값 및 상기 기준치의 상한 중 작은 값을 상기 기준치로 결정하는 단계를 포함하는
    동작 방법.
  15. 제10항에 있어서,
    상기 판단된 속성에 기초하여 상기 데이터를 구분하여 저장하기 위해 상기 데이터를 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하는 단계는
    상기 액세스 커맨드가 리드 커맨드인 경우 상기 데이터 속성이 변경되면 상기 변환된 로컬 어드레스에 대응하는 메모리 영역으로부터 독출된 리드 데이터를 상기 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하는 단계를 포함하는
    동작 방법.
  16. 제10항에 있어서,
    상기 판단된 속성에 기초하여 상기 데이터를 구분하여 저장하기 위해 상기 데이터를 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하는 단계는
    상기 액세스 커맨드가 리드 커맨드인 경우 상기 데이터 속성이 변경되면 상기 변환된 로컬 어드레스에 대응하는 메모리 영역으로부터 독출된 리드 데이터를 상기 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하는 단계를 포함하는
    동작 방법.
  17. 제10항에 있어서,
    주기적으로 상기 메모리 풀 내부의 모든 데이터의 속성을 로컬 어드레스별로 판단하는 단계;
    상기 메모리 풀 내부의 모든 데이터 중 데이터 속성이 변경된 데이터를 로컬 어드레스에 대응하는 메모리 영역으로부터 획득하는 단계; 및
    상기 획득된 데이터를 각각 새로운 로컬 어드레스에 대응하는 메모리 영역에 저장하는 단계
    를 더 포함하는 동작 방법.

KR1020180167585A 2018-12-21 2018-12-21 메모리 시스템 및 메모리 시스템의 동작방법 KR20200078047A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180167585A KR20200078047A (ko) 2018-12-21 2018-12-21 메모리 시스템 및 메모리 시스템의 동작방법
US16/571,979 US11243716B2 (en) 2018-12-21 2019-09-16 Memory system and operation method thereof
JP2019185774A JP7449063B2 (ja) 2018-12-21 2019-10-09 メモリシステム及びメモリシステムの動作方法
CN201910967869.6A CN111352857B (zh) 2018-12-21 2019-10-12 存储器***及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180167585A KR20200078047A (ko) 2018-12-21 2018-12-21 메모리 시스템 및 메모리 시스템의 동작방법

Publications (1)

Publication Number Publication Date
KR20200078047A true KR20200078047A (ko) 2020-07-01

Family

ID=71098485

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180167585A KR20200078047A (ko) 2018-12-21 2018-12-21 메모리 시스템 및 메모리 시스템의 동작방법

Country Status (4)

Country Link
US (1) US11243716B2 (ko)
JP (1) JP7449063B2 (ko)
KR (1) KR20200078047A (ko)
CN (1) CN111352857B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11158358B2 (en) * 2019-07-22 2021-10-26 Micron Technology, Inc. Adaptive write operations for a memory device
CN112286843B (zh) * 2020-08-12 2022-04-08 深圳安捷丽新技术有限公司 数据存储***的***和方法
US11669455B2 (en) 2021-05-05 2023-06-06 Meta Platforms, Inc. Systems and methods for profiling host-managed device memory
CN115841415A (zh) * 2021-09-18 2023-03-24 平头哥(上海)半导体技术有限公司 处理***、操作处理***的方法和计算机可读存储介质
CN115373594A (zh) * 2022-07-12 2022-11-22 浙江大学 一种双向动态切换的存储***及动态切换管理方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496711B2 (en) * 2006-07-13 2009-02-24 International Business Machines Corporation Multi-level memory architecture with data prioritization
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
JP5422984B2 (ja) * 2008-12-08 2014-02-19 富士通株式会社 不揮発性メモリ、メモリ制御装置、メモリ制御システムおよび不揮発性メモリの制御方法
JP2011186558A (ja) * 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置及び方法
US7818525B1 (en) * 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
JP5995071B2 (ja) * 2012-09-19 2016-09-21 学校法人 中央大学 メモリコントローラ,データ記憶装置およびメモリの制御方法
US20150039837A1 (en) * 2013-03-06 2015-02-05 Condusiv Technologies Corporation System and method for tiered caching and storage allocation
JP5751354B1 (ja) * 2014-01-28 2015-07-22 日本電気株式会社 メモリ制御装置、情報処理装置、メモリ制御方法、および、コンピュータ・プログラム
US9323462B2 (en) * 2014-04-08 2016-04-26 International Business Machines Corporation File system snapshot data management in a multi-tier storage environment
TWI599880B (zh) * 2016-03-22 2017-09-21 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
JP2018036711A (ja) * 2016-08-29 2018-03-08 富士通株式会社 ストレージシステム,ストレージ制御装置および制御プログラム
KR20180051706A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템
JP6765321B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
US10496315B1 (en) * 2018-07-05 2019-12-03 Western Digital Technologies, Inc. Unified tier and cache structure

Also Published As

Publication number Publication date
CN111352857B (zh) 2023-04-14
JP7449063B2 (ja) 2024-03-13
US20200201573A1 (en) 2020-06-25
JP2020102197A (ja) 2020-07-02
CN111352857A (zh) 2020-06-30
US11243716B2 (en) 2022-02-08

Similar Documents

Publication Publication Date Title
JP7449063B2 (ja) メモリシステム及びメモリシステムの動作方法
CN110008149B (zh) 融合式存储器件及其操作方法
JP7116381B2 (ja) クラウド・ベースのランクを使用するデータの動的再配置
US11163452B2 (en) Workload based device access
US20200348871A1 (en) Memory system, operating method thereof and computing system for classifying data according to read and write counts and storing the classified data in a plurality of types of memory devices
US20190082008A1 (en) Storage system using cloud storage as a rank
US11842051B2 (en) Intelligent defragmentation in a storage system
CN115687193A (zh) 存储模块、包括其的***以及存储模块的操作方法
US11461024B2 (en) Computing system and operating method thereof
KR20210006664A (ko) 메모리 시스템 및 그것의 동작방법
US11016666B2 (en) Memory system and operating method thereof
US11221931B2 (en) Memory system and data processing system
US20220237112A1 (en) Tiered persistent memory allocation
KR102433549B1 (ko) 통합 메모리 디바이스 및 그의 동작 방법
KR20200059493A (ko) 데이터 처리 시스템
KR20190123038A (ko) 메모리 시스템 및 그것의 동작방법
US20240070065A1 (en) Method to offload memory tiering from the cpu to the memory device

Legal Events

Date Code Title Description
A201 Request for examination