KR102615806B1 - 메모리 시스템 및 이를 이용한 웨어-레벨링 방법 - Google Patents

메모리 시스템 및 이를 이용한 웨어-레벨링 방법 Download PDF

Info

Publication number
KR102615806B1
KR102615806B1 KR1020160064322A KR20160064322A KR102615806B1 KR 102615806 B1 KR102615806 B1 KR 102615806B1 KR 1020160064322 A KR1020160064322 A KR 1020160064322A KR 20160064322 A KR20160064322 A KR 20160064322A KR 102615806 B1 KR102615806 B1 KR 102615806B1
Authority
KR
South Korea
Prior art keywords
area
stack area
memory
stack
address
Prior art date
Application number
KR1020160064322A
Other languages
English (en)
Other versions
KR20170133574A (ko
Inventor
홍도선
권정현
김동건
김용주
이성은
이재선
조상구
허경철
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020160064322A priority Critical patent/KR102615806B1/ko
Priority to US15/493,289 priority patent/US10114561B2/en
Publication of KR20170133574A publication Critical patent/KR20170133574A/ko
Application granted granted Critical
Publication of KR102615806B1 publication Critical patent/KR102615806B1/ko

Links

Images

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0669Configuration or reconfiguration with decentralised address assignment
    • G06F12/0676Configuration or reconfiguration with decentralised address assignment the address being position dependent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0033Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0035Evaluating degradation, retention or wearout, e.g. by counting writing cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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
    • G06F2212/1036Life time enhancement
    • 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/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • 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/7205Cleaning, compaction, garbage collection, erase control

Abstract

메모리 시스템은, 상변화 랜덤 억세스 메모리(PCRAM) 및 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는, 입력되는 명령에 따라 상기 상변화 랜덤 억세스 메모리(PCRAM)를 제어하되, 스택영역에 대한 쓰기 명령 입력시 쓰기 카운터가 임계값을 넘는 경우 상기 스택영역과 다른 메모리영역을 교체하는 스왑핑 동작을 수행한다.

Description

메모리 시스템 및 이를 이용한 웨어-레벨링 방법{Memory system and method of wear-leveling in the memory system}
본 개시의 여러 실시예들은 메모리 시스템 및 이를 이용한 웨어-레벨링 방법에 관한 것이다.
비휘발성 메모리소자들은, 무선통신이나 다른 응용분야에서 사용될 수 있는 고속(high-speed)의 디지털 전자장치에 사용된다. 그런데 저항성 랜덤 억세스 메모리(ReRAM) 및 상-변화 랜덤 억세스 메모리(PCRAM)와 같은 비휘발성 메모리소자들은 제한된 쓰기 내구성(limited write endurance)을 갖는다. 쓰기 내구성은, 저장매체(storage media)가 신뢰성을 잃기 전에 매모리 블록에 가해질 수 있는 프로그램/삭제 싸이클의 횟수로 정의될 수 있다. 이 쓰기 내구성은, 얼마나 자주 그리고 얼마나 전체적으로 메모리가 사용되는지를 추정함으로써 계산될 수 있다.
웨어-레벨링(wear-leveling)은, 저장매체의 쓰기 내구성을 연장하기 위해 사용되는 기술이다. 이 기술은, 저장매체에 데이터를 기록할 때 각 메모리 셀에 분산 쓰기 작업이 수행되도록 하고, 이로 인해 저장매체의 특정 메모리 셀의 반복 사용을 줄이고, 모든 메모리 셀들이 균등하게 사용될 수 있도록 한다. 통상적으로 웨어-레벨링 동작은 메모리 컨트롤러에 의해 수행된다. 예컨대 컨트롤러는, 저장매체에 대한 쓰기 요청이 들어오는 경우 덮어쓰기 횟수를 참고하여 논리적 주소와 물리적 주소 사이의 적절한 맵핑을 수행 및 변경함으로써, 비어있는 메모리 셀들 중 아직 덜 사용된 메모리 셀 위주로 쓰기 작업이 수행되도록 제어한다.
본 출원이 해결하고자 하는 과제는, 스택영역에 대해 웨어-레벨링을 수행함으로써 쓰기 내구성이 향상되도록 할 수 있는 메모리 시스템 및 이를 이용한 웨어-레벨링 방법을 제공하는 것이다.
본 개시의 일 예에 따른 메모리 시스템은, 상변화 랜덤 억세스 메모리(PCRAM) 및 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는, 입력되는 명령에 따라 상기 상변화 랜덤 억세스 메모리(PCRAM)를 제어하되, 스택영역에 대한 쓰기 명령 입력시 쓰기 카운터가 임계값을 넘는 경우 상기 스택영역과 다른 메모리영역을 교체하는 스왑핑 동작을 수행한다.
본 개시의 일 예에 따른 웨어-레벨링 방법은, 입력되는 쓰기 명령에 따라 상변화 랜덤 억세스 메모리(PCRAM)를 제어하는 메모리 시스템의 웨어-레벨링 방법에 있어서, 쓰기 명령 대상이 스택영역인 경우 스택영역에 대한 쓰기 카운터가 임계값을 넘는지의 여부를 판단하는 단계와, 그리고 쓰기 카운터가 임계값을 넘은 경우 스택영역과 다른 메모리영역을 교체하는 스왑핑 동작을 수행하는 단계를 포함한다.
여러 실시예들에 따르면, 큰 오버헤드(overhead) 없이 스택영역 정보와 스택포인터를 이용하여 빈번하게 쓰기 동작이 수행되는 핫 영역에 대한 효과적인 웨어-레벨링을 수행할 수 있다는 이점이 제공된다.
도 1은 본 개시의 일 예에 따른 메모리 시스템을 프로세서와 함께 나타내 보인 블록도이다.
도 2는 도 1의 메모리 시스템의 웨어-레벨러 구성의 일 예를 나타내 보인 블록도이다.
도 3은 프로세서에 의해 프로그램이 메모리에 탑재되었을 시의 메모리 구조를 나타내 보인 도면이다.
도 4는 도 3의 메모리 구조에서 가상메모리와, 메모리관리장치에 의한 물리메모리와, 그리고 리맵된 물리메모리에서의 스택영역을 각각 나타내 보인 도면이다.
도 5 및 도 6은 도 1의 메모리 시스템의 동작을 설명하기 위해 나타내 보인 플로챠트이다.
도 7은 도 3의 메모리 구조에서 스택영역의 핫 영역과 콜드 영역의 스왑핑 동작의 일 예를 설명하기 위해 나타내 보인 도면이다.
도 8은 도 3의 메모리 구조에서 스택영역의 핫 영역과 콜드 영역의 스왑핑 동작의 다른 예를 설명하기 위해 나타내 보인 도면이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 부재를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 또한, 어느 부재의 "상"에 위치하거나 "상부", "하부", 또는 "측면"에 위치한다는 기재는 상대적인 위치 관계를 의미하는 것이지 그 부재에 직접 접촉하거나 또는 사이 계면에 다른 부재가 더 도입되는 특정한 경우를 한정하는 것은 아니다. 또한, 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다.
도 1은 본 개시의 일 예에 따른 메모리 시스템을 프로세서와 함께 나타내 보인 블록도이다. 도 1을 참조하면, 메모리 시스템(200)은, 메모리 컨트롤러(300) 및 상변화 랜덤 억세스 메모리(PCRAM)(400)을 포함하여 구성된다. 비록 도면에 나타내지는 않았지만, 메모리 컨트롤러(300)와 상변화 랜덤 억세스 메모리(PCRAM)(400) 사이에는 인터페이스 장치가 배치될 수 있다. 메모리 컨트롤러(300)는, 프로세서(100)로부터의 요청에 따라서 상변화 랜덤 억세스 메모리(PCRAM)(400)의 제반 동작을 제어한다. 이를 위해 메모리 컨트롤러(300)는, 웨어-레벨러(wear-leveler)(310)와, 어드레스 리맵 버퍼(address remap buffer)(320)와, 그리고 스케줄러(scheduler)(330)를 포함할 수 있다. 일 예에서 메모리 컨트롤러(300)는, 프로세서(100)로부터 스택영역 정보(Stack area), 임계값(threshold), 스택포인터(stack pointer) 값(SP), 및 논리 어드레스(logical address)(LA)을 입력받는다. 스택영역 정보는 스택영역의 시작 어드레스 및 스택영역의 범위를 포함할 수 있다. 또한 메모리 컨트롤러(300)는, 프로세서(100)로부터의 읽기/쓰기 요청에 의한 읽기/쓰기 동작의 제어를 수행하며, 모드레지스터셋(Mode Resister Set; 이하 MRS) 입력에 의해 메모리 컨트롤러(300) 내의 레지스터에 저장된 정보 구성을 세팅할 수 있다. 다른 예에서 스택영역 정보(stack area) 및 임계값(threshold)은, MRS 입력에 의해 메모리 컨트롤러(300) 내의 내부 레지스터에 미리 저장되어 있을 수 있으며, 이 경우 메모리 컨트롤러(300)는 프로세서(100)로부터 스택영역 정보(stack area) 및 임계값(threshold)을 입력받지 않을 수도 있다.
웨어-레벨러(310)는, 프로세서(100)로부터의 쓰기 명령에 따라, 대상이 스택영역인 경우 스택영역에 대한 웨어-레벨링 여부를 판단한다. 이 판단 결과, 웨어-레벨링이 요구되지 않는 경우, 스택영역에 대한 논리 어드레스(LA)에 대응되는 물리 어드레스(PA; physical address)를 스케줄러(330)로 전송한다. 반면 위 판단 결과, 웨어-레벨링이 요구되는 경우, 핫 영역(hot area)의 제1 물리 어드레스(PA1)와 콜드 영역(cold area)의 제2 물리 어드레스(PA2)와 함께, 스왑 명령(swap)을 스케줄러(330)로 전송한다. 이와 같은 웨어-레벨링 과정에서 업데이트된 어드레스 정보를 어드레스 리맵 버퍼(320)로 전송한다.
어드레스 리맵 버퍼(320)에는 스택영역에 대한 논리 어드레스들이 저장된다. 웨어-레벨러(310)에 의한 웨어-레벨링이 수행되어 핫 영역과 콜드 영역의 스왑이 이루어지는 것이 요구되는 경우, 웨어-레벨러(310)로부터의 명령에 따라서 스왑된 스택영역들의 논리 어드레스들이 반영되도록 스택영역에 대한 논리 어드레스 정보들이 업데이트되며, 업데이트되어 변경된 스택영역들의 논리 어드레스들이 다시 웨어-레벨러(310)로 전달된다. 예컨대 핫 영역이 제1 논리 어드레스(LA1)를 갖고, 콜드 영역이 제2 논리 어드레스(LA2)를 가질 경우, 핫 영역의 어드레스 및 콜드 영역의 어드레스를 각각 제2 논리 어드레스(LA2) 및 제1 논리 어드레스(LA1)로 업데이트한 후, 그 결과를 웨어-레벨러(310)로 전송한다.
스케줄러(330)는, 웨어-레벨링이 요구되지 않는 경우, 웨어-레벨러(310)로부터 물리 어드레스(PA)를 입력받고, 상변화 랜덤 억세스 메모리(PCRAM)(400)의 스택영역들 중 입력되는 물리 어드레스(PA)의 스택영역에 데이터에 대한 쓰기 동작이 수행되도록 한다. 웨어-레벨링이 요구되는 경우, 스케줄러(330)는, 웨어-레벨러(310)로부터 스왑 명령(swap), 제1 물리 어드레스(PA1), 및 제2 물리 어드레스(PA2)를 입력받는다. 여기서 제1 물리 어드레스(PA1)는 핫 영역의 물리 어드레스에 해당하고, 제2 물리 어드레스(PA2)는 콜드 영역의 물리 어드레스에 해당한다. 스케줄러는, 상변화 랜덤 억세스 메모리(PCRAM)(400)의 스택영역들 중 콜드 영역의 물리 어드레스인 제2 물리 어드레스(PA2)의 스택영역에 대해 쓰기 동작이 수행되도록 한다.
도 2는 도 1의 메모리 시스템의 메모리 컨트롤러(300) 내의 웨어-레벨러(310) 구성의 일 예를 나타내 보인 블록도이다. 도 2를 참조하면, 웨어-레벨러(310)는, 구성부(configuration unit)(CFG)(311)와, 레지스터(312)와, 카운터 체크부(counter check unit)(313)와, 어드레스 변환부(address translation unit)(314)와, 그리고 스와핑부(swapping unit)(315)를 포함하여 구성될 수 있다.
구성부(CFG)(311)는, 프로세서(도 1의 100)로부터 읽기/쓰기 명령(read/write request)을 입력받고 웨어-레벨러(310)를 초기화시킨다. 그리고 구성부(CFG)(311)는 프로세서(도 1의 100)로부터 스택영역 정보(stack area) 및 임계값(threshold)을 입력받아 레지스터(312)로 전달한다. 또한 구성부(CFG)(311)는 스택영역 정보(stack area)에 포함되어 있는 스택영역의 시작 어드레스 및 범위를 어드레스 리맵 버퍼(320)로 전달하여, 어드레스 리맵 버퍼(320) 내에서 스택영역에 대한 어드레스를 특정하도록 한다. 레지스터(312)는, 구성부(CFG)(311)로부터의 스택영역 정보(stack area) 및 임계값(threshold)을 입력받아 저장한다. 또한 레지스터(312)는, 카운터 체크부(313)로부터 전송되는 카운터 값을 저장한다.
카운터 체크부(313)는, 스택영역에 대한 쓰기 요청이 구성부(CFG)(311)에 인가되는 경우, 즉 스택영역의 논리 어드레스(LA) 및 스택 포인터 값(SP)을 입력받는 경우, 증가된 카운터 값을 생성하고, 증가된 카운터 값은 레지스터(312)에 저장된다. 이 동작은, 스택영역에 대한 웨어-레벨링이 요구될 때까지, 즉 카운터 값이 임계값(threshold)보다 크게 될 때까지 수행된다. 스택영역에 대한 웨어-레벨링이 요구되면, 카운터 체크부(313)는, 레지스터(312)의 카운터 값을 리셋(reset)시켜 초기화시킨다. 스택영역에 대한 웨어-레벨링이 불필요한 경우, 카운터 체크부(313)는, 어드레스 변환부(314)에 인에이블신호를 인가하여 어드레스 변환부(314)를 동작시킨다. 반면에 스택영역에 대한 웨어-레벨링이 요구되는 경우, 카운터 체크부(313)는, 스왑핑부(315)에 인에이블신호를 인가하여 스왑핑부(315)에 의한 스왑핑 동작이 이루어지도록 한다.
어드레스 변환부(314)는, 카운터 체크부(313)로부터 출력되는 인에이블신호에 따라서 어드레스 리맵 버퍼(320)에 저장되어 있는 쓰기 명령 대상인 스택영역의 논리 어드레스(LA)를 물리 어드레스(PA)로 변환하여 출력한다. 스왑핑부(315)는, 카운터 체크부(313)로부터 출력되는 인에이블신호에 따라서 메모리영역의 어느 하나의 영역을 콜드 영역으로 선택한 후에 선택된 콜드 영역을 핫 영역(스택영역)으로 지정한다. 그리고 스왑핑부(315)는 콜드 영역으로 변경된 핫 영역의 제1 물리 어드레스(PA1)와, 핫 영역으로 변경된 콜드 영역의 제2 물리 어드레스(PA2)를 스왑 명령(swap)과 함께 출력한다. 이 과정에서 스왑핑부(315)는, 변경된 스택영역들의 어드레스 정보를 어드레스 리맵 버퍼(320)에 전송하여, 어드레스 리뱁 버퍼(320) 내의 어드레스 정보가 업데이트되도록 한다. 다른 예에서 스왑핑부(315)는, 스택영역을 복수개의 하위영역으로 구분한 후, 스택포인터(SP)에 대응되는 제1 하위영역과, 미사용중인 제2 하위영역을 선택하고, 제1 하위영역과 제2 하위영역이 서로 교체되도록 할 수도 있다.
도 3은 프로세서에 의해 프로그램이 메모리에 탑재되었을 시의 메모리 구조를 나타내 보인 도면이다. 그리고 도 4는 도 3의 메모리 구조에서 가상메모리와, 메모리관리장치에 의한 물리메모리와, 그리고 리맵된 물리메모리에서의 스택영역을 각각 나타내 보인 도면이다. 먼저 도 3에 나타낸 바와 같이, 프로그램 또는 쓰레드(thread)가 프로세서(100)에 의해 상변화 랜덤 억세스 메모리(PCRAM)(400)에 탑재되었을 시의 메모리 구조(500)는, 하위 어드레스부터 상위 어드레스에 이르기까지, 텍스트영역(TEXT), 데이터영역(DATA), BSS(Block Started by symbol)영역(BSS), 힙(heap)영역(HEAP), 스택영역(STACK), 및 OS 커널(OS kernel)로 구분될 수 있다. 이와 같은 메모리 구조(500)는 하나의 예로서, 다른 형태로 구성될 수도 있다. 텍스트영역(TEXT)는, 코드영역이고도 명명하며, 프로그램 명령이 위치하고 기계어로 제어되는 영역이다. 데이터영역(DATA)은 프로그램이 실행될 때 생성되고 프로그램이 종료되면 시스템에 반환되는 영역으로서, 전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등이 저장되는 영역이다. BSS영역(BSS) 및 힙영역(HEAP)은, 프로그램 로딩시 메모리를 동적으로 할당되는 지역이다. 스택영역(STACK)은 프로그램이 자동으로 사용하는 임시 메모리 영역이다. 구체적으로 스택영역(STAC)은, 지역변수(local), 매개변수(parameter), 리턴값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역으로서, 함수 호출시 생성되고 함수가 끝나면 시스템에 반환된다. 스택영역(STACK)에서 스택포인터(SP)는 스택영역(STACK)에서 현재 사용되는 위치를 나타낸다. 즉 스택영역(STACK)에서 현재 사용되는 영역은 스택 베이스(stack base)에서 스택포인터(SP)가 지정하는 위치까지가 된다. OS 커널(OS kernel)은 OS(Operating Sytem)이 사용하는 커널 영역이다. 이와 같은 메모리 구조에서, 쓰기 명령의 대상은 스택영역(STACK)일 수 있으며, 또는 데이터영역(DATA)일 수도 있다.
도 4에 나타낸 바와 같이, 프로세서(도 1의 100)는, 스택영역(STACK)을 연속되는 하나의 영역(651)으로 설정하는 가상메모리(610)를 설정한다. 이 가상메모리 구조는 메모리관리장치(MMU; Memory Menagement Unit)에 의해 관리되는 물리메모리(620)에 대응된다. 물리메모리(620)에서 스택영역은 연속적인 하나의 영역으로 구성될 수 있지만, 일반적으로는 도 4에 도시된 바와 같이 연속적이지 않게 분포되는 여러 영역들(652, 653, 654)로 나누어져 구성될 수 있다. 이 경우 물리 메모리를 리맵하여 리맵된 물리메모리(630)에서 스택영역(STACK)이 연속적인 하나의 영역(655)으로 구성되도록 한 후에 웨어-레벨링을 수행할 수 있다 이 경우 가상메모리(610)에서의 스택영역(STACK)의 위치는, 리맵된 물리메모리(630)에서의 스택영역(STACK)의 위치와 동일하지 않을 수 있다.
도 5 및 도 6은 도 1의 메모리 시스템의 동작을 설명하기 위해 나타내 보인 플로챠트이다. 그리고 도 7은 도 3의 메모리 구조에서 스택영역의 핫 영역과 콜드 영역의 스왑핑 동작의 일 예를 설명하기 위해 나타내 보인 도면이며, 도 8은 도 3의 메모리 구조에서 스택영역의 핫 영역과 콜드 영역의 스왑핑 동작의 다른 예를 설명하기 위해 나타내 보인 도면이다. 먼저 도 5 및 도 6을 도 1 및 도 2와 함께 참조하면, 프로세서(100)로부터 메모리 컨트롤러(300)를 구성하는 웨어-레벨러(310) 내의 구성부(311)로 쓰기 명령(즉, 쓰기 요청)이 입력된다(단계 710). 웨어-레벨러(310) 내의 카운터 체크부(313)는 쓰기 명령의 대상이 스택영역인지를 판별한다(단계 720). 단계 720에서의 판별 결과, 쓰기 명령의 대상이 스택영역이 아닌 경우, 웨어-레벨러(310) 내의 어드레스 변환부(314)는 쓰기 요청이 이루어진 메모리영역의 요청 어드레스를 메모리 컨트롤러(300)를 구성하는 어드레스 리맵 버퍼(320)에 리맵시킨다(단계 750). 그리고 요청 어드레스에 의해 할당되는 메모리영역에 쓰기 동작을 수행한다(단계 760). 단계 720에서의 판별 결과, 쓰기 명령의 대상이 스택영역인 경우, 카운터 체크부(313)는 레지스터(312) 내의 카운터를 동작시켜 레지스터(312) 내에 저장되어 있던 쓰기 카운팅 횟수를 증가시킨다(단계 730). 그리고 증가된 쓰기 카운팅 횟수가 임계값(threshold)보다 큰지의 여부를 판별한다(단계 740). 단계 740의 판별 결과, 증가된 쓰기 카운팅 횟수가 임계값을 초과하지 않는 경우, 어드레스 변환부(314)는 쓰기 요청이 이루어진 스택영역의 요청 어드레스를 어드레스 리맵 버퍼(320)에 리맵시킨다(단계 750). 그리고 요청 어드레스에 의해 할당되는 스택영역에 쓰기 동작을 수행한다(단계 760). 단계 740의 판별 결과, 증가된 쓰기 카운팅 횟수가 임계값을 초과하는 경우, 즉 스택영역에 대한 웨어-레벨링이 요구되는 경우, 카운터 체크부(313)는 레지스터(312) 내의 카운터를 초기화 또는 리셋(reset)시킨다(단계 770). 그리고 카운터 체크부(313)는 웨어-레벨러(310) 내의 스왑핑부(315)를 인에이블시킨다. 인에이블된 스왑핑부(315)는 스왑핑 동작을 수행한다(단계 780).
단계 780의 스왑핑 동작을 수행하기 위해, 먼저 스왑핑부(315)는 콜드 영역을 선택한다(단계 781). 그리고 스왑핑부(315)는 스왑 명령(swap)과 함께, 핫 영역의 제1 물리 어드레스(PA1)와 콜드 영역의 제2 물리 어드레스(PA2)를 메모리 시스템(300)을 구성하는 스케줄러(330)에 전송한다. 일 예에서 단계 780의 스왑핑 동작은, 콜드 영역과 핫 영역에 대한 스왑핑을 수행함으로써 수행될 수 있다. 즉 도 7의 왼쪽 도면에 나타낸 바와 같이, 쓰기 명령 대상인 스택영역이 핫 영역인 경우, 스왑핑부(315)는 다른 여러 메모리영역들 중 임의의 하나의 영역, 예컨대 "영역 4"를 콜드 영역으로 선택한다. 이 경우 제1 물리 어드레스(PA1)는 스택영역의 물리 어드레스이며, 제2 물리 어드레스(PA2)는 "영역 4"의 물리 어드레스일 수 있다. 일 예에서 "영역 4"는 데이터영역의 일부 영역일 수 있다. 이와 같은 스왑핑 명령(swap)에 따라, 스케줄러(330)는, 콜드 영역으로 선택된 "영역 4"와 핫 영역인 스택영역을 스왑핑시킨다. 그러면 도 7의 오른쪽 도면에 나타낸 바와 같이, 기존의 핫 영역인 스택영역은 "영역 4"로 설정되고, 기존의 콜드 영역인 "영역 4"는 스택영역으로 설정된다.
다른 예에서, 단계 781의 콜드 영역을 선택한 후에, 현재 스택포인터(SP)에 대응되는 제1 하위영역을 선택한다(단계 782), 그리고 다른 제2 하위영역을 선택한다(단계 783). 이어서 제1 하위영역과 제2 하위영역을 스왑핑시킨다(단계 784). 구체적으로 도 8의 왼쪽 도면에 나타낸 바와 같이, 스택영역을 복수개의 하위영역들(711부터 718까지)로 구분한다. 이 경우 스택영역의 하위영역들(711부터 718까지) 중 첫번째 하위영역(711)부터 스택포인터(SP)가 지정하는 하위영역(713) 까지의 하위영역들은 사용중인 하위영역들이며, 나머지 하위영역들(714부터 718까지)은 미사용중인 하위영역일 수 있다. 이 상태에서, 단계 782에서 현재 스택포인터(SP)에 대응되는 하위영역을 제1 하위영역(713)으로 선택한다. 그리고 단계 783에서 미사용중인 하위영역들(714부터 718까지) 중 임의의 하위영역을 제2 하위영역(717)으로 선택한다. 다음에 단계 784에서, 핫 영역인 제1 하위영역(713)을 콜드 영역인 제2 하위영역(717)으로 교체하는 스왑핑 동작을 수행한다. 다음에 스택영역과 다른 여러 메모리영역들 중 임의의 하나의 영역, 예컨대 "영역 4"를 스왑핑시킨다. 그러면 도 8의 우측 도면에 나타낸 바와 같이, 핫 영역을 포함하는 기존의 스택영역은 "영역 4"로 설정되고, 기존의 "영역 4"는 스택영역으로 설정된다. 또한 기존의 핫 영역인 제1 하위영역(713)은 스택영역 내에서 하위영역들(811부터 818까지) 중 콜드영역인 제2 하위영역(817)으로 설정된다. 스택포인터(SP)는 기존의 핫 영역인 제1 하위영역(713)이 스왑핑된 제2 하위영역(817)으로 설정된다.
단계 780의 스왑핑 동작을 수행한 후, 어드레스 리맵 버퍼(320)가 업데이트된다(단계 790). 어드레스 변환부(314)는 스왑핑되어 스택영역으로 전환되는 콜드 영역의 제2 물리 어드레스에 대응되는 논리 어드레스를 스택영역의 논리 어드레스로 변환하여 어드레스 리맵 버퍼(320)에 리맵시킨다(단계 750). 마찬가지로 어드레스 변환부(314)는 스택영역에서 콜드 영역으로 전환되는 스택영역의 제1 물리 어드레스에 대응되는 논리 어드레스를 콜드 영역의 논리 어드레스로 변환하여 어드레스 리맵 버퍼(320)에 리맵시킨다(단계 750). 그리고 요청 어드레스에 의해 할당되는 스택영역에 쓰기 동작을 수행한다(단계 760).
상술한 바와 같이 본 출원의 실시 형태들을 도면들을 예시하며 설명하지만, 이는 본 출원에서 제시하고자 하는 바를 설명하기 위한 것이며, 세밀하게 제시된 형상으로 본 출원에서 제시하고자 하는 바를 한정하고자 한 것은 아니다.
100...프로세서 200...메모리 시스템
300...메모리 컨트롤러 310...웨어-레벨러
320...어드레스 리맵 버퍼 330...스케줄러
400...상변화 랜덤 억세스 메모리(PCRAM)

Claims (15)

  1. 프로그램 탑재시 스택영역 및 상기 스택영역을 제외한 나머지 영역에 해당하는 메모리영역으로 구분되는 상변화 랜덤 억세스 메모리(PCRAM); 및
    입력되는 명령에 따라 상기 상변화 랜덤 억세스 메모리(PCRAM)를 제어하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는, 상기 스택영역에 대한 쓰기 명령 입력시 쓰기 카운터가 임계값을 넘는 경우 상기 스택영역과 상기 메모리영역을 교체하는 스왑핑 동작을 수행하되,
    상기 메모리영역은, 상기 프로그램 실행시에 생성되는 데이터 영역을 포함하고, 그리고
    상기 스택영역은, 상기 프로그램에 의해 자동으로 사용되는 임시 메모리영역으로 구성되는 메모리 시스템.
  2. ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서, 상기 메모리 컨트롤러는,
    상기 스왑핑 동작 여부를 판단하여 상기 스왑핑 동작이 요구되는 경우 스왑명령과, 상기 스택영역의 제1 물리 어드레스 및 상기 메모리영역의 제2 물리 어드레스를 출력하는 웨어-레벨러;
    상기 웨어-레벨러로부터의 상기 스왑명령, 상기 제1 물리 어드레스, 및 상기 제2 물리 어드레스를 입력받아 상기 상변화 랜덤 억세스 메모리(PCRAM)에 대한 쓰기 동작을 수행하는 스케줄러; 및
    상기 스택영역에 대한 논리 어드레스들이 저장되는 어드레스 리맵 버퍼를 포함하는 메모리 시스템.
  3. ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈
    제2항에 있어서, 상기 웨어-레벨러는,
    상기 스택영역에 대한 쓰기 명령 입력시 상기 웨어-레벨러를 초기화시키고, 스택영역 정보 및 임계값을 입력받는 구성부;
    상기 구성부로부터 스택영역 정보 및 임계값을 전달받아 저장하고 쓰기 카운팅 횟수를 저장하는 레지스터;
    스택포인터 및 상기 스택영역의 논리 어드레스를 입력받고 상기 스왑핑 동작 여부를 판단하는 카운터 체크부;
    상기 스왑핑 동작에 의해 변경되는 어드레스 정보가 반영되도록 상기 어드레스 리맵 버퍼에 저장되어 있는 상기 논리 어드레스에 대한 정보를 업데이트하는 어드레스 변환부; 및
    상기 스왑핑 동작을 위한 상기 스왑명령과, 상기 제1 물리 어드레스 및 상기 제2 물리 어드레스를 출력하는 스왑핑부를 포함하는 메모리 시스템.
  4. ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈
    제3항에 있어서,
    상기 구성부는, 상기 스택영역 정보에 포함되어 있는 스택영역의 시작 어드레스 및 범위를 상기 어드레스 리맵 버퍼로 전달하여, 상기 어드레스 리맵 버퍼 내에서 상기 스택영역에 대한 어드레스 데이터가 특정되도록 하는 메모리 시스템.
  5. ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈
    제3항에 있어서,
    상기 카운터 체크부는, 상기 쓰기 명령의 대상이 스택영역인 경우 상기 레지스터의 상기 쓰기 카운팅 횟수를 증가시키고,
    상기 카운터 체크부는, 증가된 쓰기 카운팅 횟수가 상기 임계값보다 큰 경우 상기 쓰기 카운팅 횟수를 리셋시키고 상기 스왑핑부를 동작시키는 메모리 시스템.
  6. ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈
    제3항에 있어서,
    상기 카운터 체크부는, 상기 쓰기 명령의 대상이 스택영역인 경우 상기 레지스터의 상기 쓰기 카운팅 횟수를 증가시키고,
    상기 카운터 체크부는, 증가된 쓰기 카운팅 횟수가 상기 임계값과 동일하거나 작은 경우 상기 어드레스 변환부를 통해 상기 스택영역의 논리 어드레스를 물리 어드레스로 변환하여 출력되도록 하는 메모리 시스템.
  7. ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈
    제3항에 있어서,
    상기 카운터 체크부는, 상기 쓰기 명령의 대상이 상기 스택영역 이외의 상기 메모리 영역인 경우 상기 어드레스 변환부를 통해 상기 메모리 영역의 논리 어드레스를 물리 어드레스로 변환하여 출력되도록 하는 메모리 시스템.
  8. ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈
    제3항에 있어서,
    상기 스왑핑부는, 상기 메모리영역의 어드 하나의 영역을 콜드 영역으로 선택한 후에 상기 콜드 영역을 상기 스택 영역으로 변경시키고,
    상기 스왑핑부는, 콜드 영역으로 변경된 스택 영역의 제1 물리 어드레스와, 상기 스택 영역으로 변경된 콜드 영역의 제2 물리 어드레스를 상기 스왑 명령과 함께 출력하는 메모리 시스템.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    제8항에 있어서,
    상기 스왑핑부는, 상기 스택 영역 및 콜드 영역의 변경된 어드레스 정보를 상기 어드레스 리맵 버퍼에 전송하여, 상기 어드레스 리맵 버퍼 내의 논리 어드레스를 업데이트시키는 메모리 시스템.
  10. ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈
    제8항에 있어서,
    상기 스왑핑부는, 상기 스택영역의 복수의 하위영역들 중 상기 스택포인터에 대응되는 제1 하위영역과, 상기 스택영역의 복수의 하위영역들 중 미사용중인 제2 하위영역을 선택한 후, 상기 제1 하위영역과 상기 제2 하위영역을 교체하는 메모리 시스템.
  11. 입력되는 쓰기 명령에 따라 상변화 랜덤 억세스 메모리(PCRAM)를 제어하는 메모리 시스템의 웨어-레벨링 방법에 있어서,
    프로그램이 상기 상변화 랜덤 억세스 메모리에 탑재시 상기 상변화 랜덤 억세스 메모리를 스택영역 및 상기 스택영역을 제외한 나머지 영역에 해당하는 메모리영역으로 구분되도록 하는 단계;
    상기 쓰기 명령의 대상이 상기 스택영역인 경우 상기 스택영역에 대한 쓰기 카운팅 횟수가 임계값을 넘는지의 여부를 판단하는 단계; 및
    상기 쓰기 카운팅 횟수가 상기 임계값을 넘은 경우 상기 스택영역과 상기 스택영역과 다른 메모리영역을 교체하는 스왑핑 동작을 수행하는 단계를 포함하되,
    상기 메모리영역은, 상기 프로그램 실행시에 생성되는 데이터 영역을 포함하고, 그리고
    상기 스택영역은, 상기 프로그램에 의해 자동으로 사용되는 임시 메모리영역으로 구성되는 웨어-레벨링 방법.
  12. ◈청구항 12은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 쓰기 명령의 대상이 상기 스택영역인 경우 상기 쓰기 카운팅 횟수를 증가시키는 단계를 더 포함하는 웨어-레벨링 방법.
  13. ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 쓰기 카운팅 횟수가 상기 임계값을 넘은 경우 상기 쓰기 카운팅 횟수를 리셋하는 단계를 더 포함하는 웨어-레벨링 방법.
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서, 상기 스왑핑 동작을 수행하는 단계는,
    상기 스택영역 외의 다른 메모리영역들 중 하나의 영역을 콜드영역으로 선택하는 단계;
    상기 스택영역과 상기 콜드영역을 교체하는 단계; 및
    상기 콜드영역에 대한 쓰기 동작을 수행하는 단계를 포함하는 웨어-레벨링 방법.
  15. ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈
    제14항에 있어서,
    상기 콜드영역을 선택한 후에,
    상기 스택영역의 하위영역들 중 스택포인터에 대응되는 제1 하위영역을 선택하는 단계;
    상기 스택영역의 하위영역들 중 미사용중인 하위영역을 제2 하위영역으로 선택하는 단계; 및
    상기 제1 하위영역 및 상기 제2 하위영역을 교체하는 단계를 더 포함하는 웨어-레벨링 방법.
KR1020160064322A 2016-05-25 2016-05-25 메모리 시스템 및 이를 이용한 웨어-레벨링 방법 KR102615806B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160064322A KR102615806B1 (ko) 2016-05-25 2016-05-25 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
US15/493,289 US10114561B2 (en) 2016-05-25 2017-04-21 Memory controllers, memory systems, and methods relating to wear-leveling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160064322A KR102615806B1 (ko) 2016-05-25 2016-05-25 메모리 시스템 및 이를 이용한 웨어-레벨링 방법

Publications (2)

Publication Number Publication Date
KR20170133574A KR20170133574A (ko) 2017-12-06
KR102615806B1 true KR102615806B1 (ko) 2023-12-21

Family

ID=60420605

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160064322A KR102615806B1 (ko) 2016-05-25 2016-05-25 메모리 시스템 및 이를 이용한 웨어-레벨링 방법

Country Status (2)

Country Link
US (1) US10114561B2 (ko)
KR (1) KR102615806B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190047451A (ko) * 2017-10-27 2019-05-08 에스케이하이닉스 주식회사 저항 변화 메모리 장치를 구비한 반도체 메모리 시스템 및 그 구동 방법
KR102500618B1 (ko) * 2017-12-12 2023-02-16 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102507646B1 (ko) * 2018-02-01 2023-03-09 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
KR20200118311A (ko) 2019-04-05 2020-10-15 삼성전자주식회사 데이터를 스왑하기 위한 메모리 장치 및 메모리 장치의 동작 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070208904A1 (en) * 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
KR101437123B1 (ko) * 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법
KR101411499B1 (ko) * 2008-05-19 2014-07-01 삼성전자주식회사 가변 저항 메모리 장치 및 그것의 관리 방법
KR20120128978A (ko) 2011-05-18 2012-11-28 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
US9032137B2 (en) 2012-11-21 2015-05-12 Intel Corporation Flexible wear management for non-volatile memory
US9329789B1 (en) * 2013-10-14 2016-05-03 Marvell International Ltd. Methods and apparatus for efficiently operating on a storage device
KR20150062039A (ko) * 2013-11-28 2015-06-05 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
US8874835B1 (en) * 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US10365835B2 (en) * 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations

Also Published As

Publication number Publication date
KR20170133574A (ko) 2017-12-06
US20170344278A1 (en) 2017-11-30
US10114561B2 (en) 2018-10-30

Similar Documents

Publication Publication Date Title
US11449436B1 (en) Storage system with division based addressing and cooperative flash management
JP6785205B2 (ja) メモリシステムおよび制御方法
CN109582599B (zh) 数据储存装置以及非挥发式存储器操作方法
KR101324688B1 (ko) 영구 가비지 컬렉션을 갖는 메모리 시스템
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
KR101612922B1 (ko) 메모리 시스템 및 메모리 시스템 관리 방법
KR102615806B1 (ko) 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
US20200226062A1 (en) Garbage collection method for data storage device
US11132143B2 (en) Universal flash storage (UFS) device and computing device and computing device including storage UFS device for reporting buffer size based on reuse time after erase
US9141302B2 (en) Snapshots in a flash memory storage system
US11494082B2 (en) Memory system
US10437738B2 (en) Storage device performing hashing-based translation between logical address and physical address
US20200192600A1 (en) Memory system and method for controlling nonvolatile
JP2020123038A (ja) メモリシステムおよび制御方法
CN102346682A (zh) 信息处理装置及信息处理方法
US20190146926A1 (en) Storage device and operating method of storage device
JP2021034091A (ja) メモリシステムおよび制御方法
JP2020123040A (ja) メモリシステムおよび制御方法
US11269559B2 (en) Data processing device
CN110888820B (zh) 数据储存装置以及非挥发式存储器控制方法
JP2021007059A (ja) メモリシステム
JP2020123039A (ja) メモリシステムおよび制御方法
CN110888593B (zh) 数据储存装置以及非挥发式存储器控制方法
CN109964210B (zh) 存储系统和存储控制方法
US11922036B2 (en) Host data stream assignment with space-leveling across storage block containers

Legal Events

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