[go: up one dir, main page]

KR102727610B1 - 버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법 - Google Patents

버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법 Download PDF

Info

Publication number
KR102727610B1
KR102727610B1 KR1020180090124A KR20180090124A KR102727610B1 KR 102727610 B1 KR102727610 B1 KR 102727610B1 KR 1020180090124 A KR1020180090124 A KR 1020180090124A KR 20180090124 A KR20180090124 A KR 20180090124A KR 102727610 B1 KR102727610 B1 KR 102727610B1
Authority
KR
South Korea
Prior art keywords
memory area
host
virtual
memory
flushing
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020180090124A
Other languages
English (en)
Other versions
KR20200014964A (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 KR1020180090124A priority Critical patent/KR102727610B1/ko
Priority to US16/291,402 priority patent/US11216383B2/en
Priority to CN201910475002.9A priority patent/CN110795365B/zh
Publication of KR20200014964A publication Critical patent/KR20200014964A/ko
Application granted granted Critical
Publication of KR102727610B1 publication Critical patent/KR102727610B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • 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/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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
    • G06F2212/657Virtual address space management
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

전자 시스템은 호스트 장치 및 스토리지 장치를 포함한다. 상기 스토리지 장치는 상기 호스트 장치에 의해 메모리 맵 입출력 인터페이스를 통하여 액세스되는 휘발성의 제1 메모리 장치 및 상기 호스트 장치에 의해 블록 액세서블 인터페이스를 통하여 액세스되는 비휘발성의 제2 메모리 장치를 포함한다. 상기 스토리지 장치는, 상기 제1 메모리 장치에 포함되고 제1 사이즈를 갖는 호스트 전속 메모리 영역에 매핑되고 상기 제1 사이즈보다 큰 제2 사이즈를 갖는 버츄얼 메모리 영역을 상기 호스트 장치에 제공한다. 상기 호스트 전속 메모리 영역 및 상기 버츄얼 메모리 영역 사이의 매핑 관계를 동적으로 변경하여 실제의 메모리 자원인 호스트 전속 메모리 영역보다 큰 사이즈의 버츄얼 메모리 영역을 제공하고, 플러싱 동작을 통하여 버츄얼 메모리 영역의 비휘발성을 지원한다.

Description

버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법{Storage device providing virtual memory region, electronic system including the same and method of operating the same}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 버츄얼 메모리 영역을 제공하는 스토리지 장치, 상기 스토리지 장치를 포함하는 전자 시스템 및 전자 시스템의 동작 방법에 관한 것이다.
정보를 저장하기 위한 메모리로는 소프트웨어 구동을 위한 주 메모리로서의 디램(DRAM)과 같은휘발성 메모리, 그리고 사용자의 대용량 데이터의 저장을 위한 낸드 플래시 메모리 등이 있다. 디램은 가장 빠른 독출/기입(read/write) 속도 및 바이트 액세스가 가능한 특성을 가지고 있지만, 휘발성이라는 단점을 가지고 있으며 주기적인 리프레쉬 때문에 전력 소모가 많은 단점을 가지고 있다. 한편 낸드 플래시 메모리는 페이지와 같은 블록 단위의 입출력만을 지원하는 단점 때문에 소프트웨어 코드 실행이나 소프트웨어 데이터 저장용도로는 사용이 힘들지만, 대용량 데이터 전송 시의 빠른 입출력 속도와 저렴한 비용과 대용량의 특성으로 사용자 데이터를 저장하는 용도로 주로 사용이 된다. 이렇게 각각의 용도에 맞게 개별적으로 메모리를 사용하기 때문에, 시스템 디자인 복잡도가 높아지고 비용이 증가하는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 호스트 장치에 효율적으로 메모리 공간을 제공하는 스토리지 장치를 제공하는 것이다.
또한 본 발명의 일 목적은, 호스트 장치에 효율적으로 메모리 공간을 제공하는 스토리지 장치를 포함하는 전자 시스템을 제공하는 것이다.
또한 본 발명의 일 목적은, 호스트 장치에 효율적으로 메모리 공간을 제공하는 스토리지 장치를 포함하는 전자 시스템의 동작 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 전자 시스템은 호스트 장치 및 스토리지 장치를 포함한다. 상기 스토리지 장치는 상기 호스트 장치에 의해 메모리 맵 입출력 인터페이스를 통하여 액세스되는 휘발성의 제1 메모리 장치 및 상기 호스트 장치에 의해 블록 액세서블 인터페이스를 통하여 액세스되는 비휘발성의 제2 메모리 장치를 포함한다. 상기 스토리지 장치는, 상기 제1 메모리 장치에 포함되고 제1 사이즈를 갖는 호스트 전속 메모리 영역에 매핑되고 상기 제1 사이즈보다 큰 제2 사이즈를 갖는 버츄얼 메모리 영역을 상기 호스트 장치에 제공한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는 호스트 장치에 의해 메모리 맵 입출력 인터페이스를 통하여 액세스되는 휘발성의 제1 메모리 장치, 상기 호스트 장치에 의해 블록 액세서블 인터페이스를 통하여 액세스되는 비휘발성의 2 메모리 장치 및 상기 제1 메모리 장치에 포함되고 제1 사이즈를 갖는 호스트 전속 메모리 영역에 매핑되고 상기 제1 사이즈보다 큰 제2 사이즈를 갖는 버츄얼 메모리 영역을 상기 호스트 장치에 제공하는 버츄얼 메모리 콘트롤러를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 호스트 장치 및 스토리지 장치를 포함하는 전자 시스템의 동작 방법은, 상기 호스트 장치에 의해 메모리 맵 입출력 인터페이스를 통하여 상기 스토리지 장치에 포함된 휘발성의 제1 메모리 장치에 액세스하는 단계, 상기 호스트 장치에 의해 블록 액세서블 인터페이스를 통하여 상기 스토리지 장치에 포함된 비휘발성의 2 메모리 장치를 액세스하는 단계 및 상기 스토리지 장치에 의해 상기 제1 메모리 장치에 포함되고 제1 사이즈를 갖는 호스트 전속 메모리 영역에 매핑되고 상기 제1 사이즈보다 큰 제2 사이즈를 갖는 버츄얼 메모리 영역을 상기 호스트 장치에 제공하는 단계를 포함한다
본 발명의 실시예들에 따른 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법은, 상기 호스트 전속 메모리 영역 및 상기 버츄얼 메모리 영역 사이의 매핑 관계를 동적으로 변경하여 실제의 메모리 자원인 호스트 전속 메모리 영역보다 큰 사이즈의 버츄얼 메모리 영역을 제공함으로써 스토리지 장치 및 이를 포함하는 전자 시스템의 사이즈를 감소하고 성능을 향상시킬 수 있다.
또한, 본 발명의 실시예들에 따른 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법은, 플러싱 동작을 통하여 버츄얼 메모리 영역의 비휘발성을 지원하고 호스트 장치와 스토리지 장치 사이의 바이트 단위의 액세스 및 블록 단위의 액세스를 효율적으로 지원함으로써 스토리지 장치 및 이를 포함하는 전자 시스템의 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 전자 시스템의 동작 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 전자 시스템의 어드레스 매핑을 나타내는 도면이다.
도 4는 본 발명의 실시예들에 따른 전자 시스템의 버츄얼 메모리 영역 및 호스트 전속 메모리 영역을 나타내는 도면이다.
도 5는 본 발명의 실시예들에 따른 전자 시스템의 다이내믹 매핑 테이블의 일 실시예를 나타내는 도면이다.
도 6 및 7은 본 발명의 실시예들에 따른 전자 시스템의 스태틱 매핑 테이블의 실시예들을 나타내는 도면들이다.
도 8은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 버츄얼 메모리 콘트롤러의 일 실시예를 나타내는 블록도이다.
도 9는 본 발명의 실시예들에 따른 전자 시스템의 어펜딩 기입 동작을 나타내는 도면이다.
도 10은 도 9의 어펜딩 기입 동작에 따른 다이내믹 매핑 테이블의 매핑 관계를 나타내는 도면이다.
도 11은 도 9의 어펜딩 기입 동작에 따른 퍼시스턴트 메모리 영역의 설정의 일 실시예를 나타내는 도면이다.
도 12는 도 9의 어펜딩 기입 동작에 따른 퍼시스턴트 메모리 영역의 설정의 다른 실시예를 나타내는 도면이다.
도 13은 본 발명의 실시예들에 따른 전자 시스템의 랜덤 기입 동작을 나타내는 도면이다.
도 14는 도 13의 랜덤 기입 동작에 따른 다이내믹 매핑 테이블의 매핑 관계를 나타내는 도면이다.
도 15는 도 13의 랜덤 기입 동작에 따른 퍼시스턴트 메모리 영역의 설정의 일 실시예를 나타내는 도면이다.
도 16은 본 발명의 실시예들에 따른 전자 시스템의 동작 방법을 나타내는 도면이다.
도 17은 블록 액세서블 인터페이스의 코맨드들의 예를 나타내는 도면이다.
도 18은 본 발명의 실시예들에 따른 전자 시스템의 어드레스 매핑을 나타내는 도면이다.
도 19는 본 발명의 실시예들에 따른 스토리지 장치를 나타내는 블록도이다.
도 20은 도 19의 스토리지 장치에 포함되는 전력 차단보호 회로의 일 실시예를 나타내는 블록도이다.
도 21은 본 발명의 실시예들에 따른 플러싱 사이즈의 결정 방법을 나타내는 도면이다.
도 22는 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
도 23은 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 전자 시스템의 동작 방법을 나타내는 순서도이고, 도 2는 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
도 1 및 2를 참조하면, 호스트 장치(100)에 의해 메모리 맵 입출력(MMIO, memory-mapped input-output) 인터페이스(30)를 통하여 스토리지 장치(200)에 포함된 휘발성의 제1 메모리 장치(MEM1)(210)에 액세스한다(S100). 호스트 장치(100)에 의해 블록 액세서블 인터페이스(40)를 통하여 스토리지 장치(200)에 포함된 비휘발성의 2 메모리 장치(MEM2)(220)를 액세스한다(S200). 스토리지 장치(200)에 의해 제1 메모리 장치(210)에 포함되고 제1 사이즈를 갖는 호스트 전속 메모리 영역(HDMR)에 매핑되고 상기 제1 사이즈보다 큰 제2 사이즈를 갖는 버츄얼 메모리 영역을 호스트 장치(100)에 제공한다.
도 3, 4 및 5를 참조하여 후술하는 바와 같이, 스토리지 장치(200)는 호스트 전속 메모리 영역(HDMR)의 리얼 어드레스들(RA1~RAm) 및 버츄얼 메모리 영역(VMR)의 버츄얼 어드레스들(VA1~VAn) 사이의 매핑 관계를 포함하는 다이내믹 매핑 테이블(DMT)을 발생하고, 호스트 장치(100)의 버츄얼 메모리 영역(VMR)에 대한 액세스 동작의 진행에 따라서 다이내믹 매핑 테이블(DMT)의 매핑 관계를 동적으로 변경할 수 있다. 이와 같이, 호스트 전속 메모리 영역(HDMR) 및 버츄얼 메모리 영역(VMR) 사이의 매핑 관계를 동적으로 변경하여 실제의 메모리 자원인 호스트 전속 메모리 영역(HDMR)보다 큰 사이즈의 버츄얼 메모리 영역(VMR)을 제공함으로써 스토리지 장치(200) 및 이를 포함하는 전자 시스템(1000)의 사이즈를 감소하고 성능을 향상시킬 수 있다.
도 3, 6 및 7을 참조하여 후술하는 바와 같이, 호스트 장치(100)는 상기 제2 사이즈를 갖는 버츄얼 메모리 영역(VMR)의 버츄얼 어드레스들(VA1~VAn) 및 제2 메모리 장치(220)에 포함되고 상기 제2 사이즈를 갖는 플러싱 메모리 영역(FMR)의 로직 블록 어드레스들(LBA1~LBAn) 사이의 매핑 관계를 포함하는 스태틱 매핑 테이블(SMT)을 발생하고, 스태틱 매핑 테이블(SMT)을 스토리지 장치(200)에 제공할 수 있다. 이와 같이, 호스트 장치(100) 및 스토리지 장치(200)는 스태틱 매핑 테이블(SMT)을 공유하여 호스트 장치(100)와 스토리지 장치(200) 사이의 바이트 단위의 액세스 및 블록 단위의 액세스를 효율적으로 지원할 수 있다.
도 9 내지 15를 참조하여 후술하는 바와 같이, 스토리지 장치(200)는 호스트 전속 메모리 영역(HDMR)에 대하여 복수의 플러싱 유닛들(FU1, FU2)을 포함하는 퍼시스턴트 메모리 영역(PMR)을 설정하고, 복수의 플러싱 유닛들(FU1, FU2) 중 하나의 플러싱 유닛에 대한 기입 동작이 완료된 경우 상기 하나의 플러싱 유닛에 기입된 데이터를 제2 메모리 장치(220)에 저장하는 플러싱 동작을 수행할 수 있다. 이와 같은 플러싱 동작을 통하여 버츄얼 메모리 영역(VMR)의 비휘발성을 지원하고 호스트 장치(100)와 스토리지 장치(200) 사이의 바이트 단위의 액세스 및 블록 단위의 액세스를 효율적으로 지원함으로써 스토리지 장치(200) 및 이를 포함하는 전자 시스템(1000)의 성능을 향상시킬 수 있다.
도 2를 참조하면, 전자 시스템(1000)은 호스트 장치(100) 및 스토리지 장치(200)를 포함한다. 호스트 장치(100)는 중앙 처리 장치(Central Processing Unit; CPU)와 같은 프로세서(110)를 포함할 수 있다. 스토리지 장치(200)는 제1 메모리 장치(MEM1)(210), 제2 메모리 장치(MEM2)(220), 버츄얼 메모리 콘트롤러(VMCON)(230) 및 블록 콘트롤러(BLCON)(240)를 포함할 수 있다.
프로세서(110)는 도 3, 6 및 7을 참조하여 후술하는 바와 같은 스태틱 매핑 테이블(SMT)을 발생할 수 있다. 프로세서(110)는 스태틱 매핑 테이블(SMT)의 매핑 정보에 기초하여, 제1 메모리 장치(210)를 액세스하기 위한 바이트 액세스 코맨드(BTCMD) 및 제2 메모리 장치(220)를 액세스하기 위한 블록 액세스 코맨드(STCMD)를 발생할 수 있다.
프로세서(110)는 스태틱 매핑 테이블(SMT)의 점유 상태 정보(OCS)에 기초하여 버츄얼 어드레스(VA)에 매핑되는 제2 메모리 장치(220)의 로직 블록 어드레스(LBA)에 데이터가 기입되어 있는지 여부를 결정하고, 이러한 결정에 기초하여 제1 메모리 장치(210)에 대한 바이트 단위의 액세스 또는 제2 메모리 장치(220)에 대한 블록 단위의 액세스를 선택적으로 수행할 수 있다.
버츄얼 메모리 콘트롤러(230)는 메모리 맵 입출력 인터페이스(30)를 통하여 바이트 액세스 코맨드(BTCMD)를 수신할 수 있다. 버츄얼 메모리 콘트롤러(230)는 바이트 액세스 코맨드(BTCMD)에 기초하여 제1 메모리 장치(MEM1)에 대한 바이트 단위의 액세스를 수행할 수 있다.
블록 콘트롤러(240)는 블록 액세서블 인터페이스(40)를 통하여 블록 액세스 코맨드(STCMD)를 수신할 수 있다. 블록 콘트롤러(240)는 블록 액세스 코맨드(STCMD)에 기초하여 제2 메모리 장치(220)에 대한 블록 단위의 액세스를 수행할 수 있다.
또한, 버츄얼 메모리 콘트롤러(230) 및 블록 콘트롤러(240)는 제1 메모리 장치(210) 및 제2 메모리 장치(220) 사이의 내부 데이터 전송을 수행할 수 있다. 상기 내부 데이터 전송은 후술하는 바와 같은 제1 메모리 장치(210)로부터 제2 메모리 장치(220)로의 데이터 전송에 해당하는 플러싱 동작 및 제2 메모리 장치(220)로부터 제1 메모리 장치(210)로의 데이터 전송에 해당하는 로딩 동작을 포함할 수 있다.
메모리 맵 입출력 인터페이스(30) 및 블록 액세서블 인터페이스(40)의 각각은 버스와 같은 하드웨어, 드라이브 프로그램과 같은 소프트 또는 이들의 조합에 상응할 수 있다.
일 실시예에 있어서, 스토리지 장치(200)의 제1 메모리 장치(210)는 PCIe(Peripheral Component Interconnect Express) 버스를 포함하는 바이트 액세서블 인터페이스(byte accessible interface) (30)를 통해 호스트 장치(100)의 프로세서(110)와 연결될 수 있다. 본 발명의 실시예들에 따라서, 스토리지 장치(200)의 버츄얼 메모리 콘트롤러(230)는 호스트 전속 메모리 영역(HDMR)보다 큰 사이즈의 바이트 액세서블 어드레스 공간(byte accessible address space)을 사용하여 호스트 전속 메모리 영역(HDMR)에 저장된 데이터에 대해 바이트 단위의 액세스를 허용하는 바이트 액세서블 인터페이스(30)를 호스트 장치(100)에 제공할 수 있다. 즉, 호스트 장치(100)에 제공되는 버츄얼 메모리 영역(VMR)은 호스트 전속 메모리 영역(HDMR)의 사이즈보다 큰 사이즈를 가질 수 있다.
실시예에 따라서, 스토리지 장치(200)의 제2 메모리 장치(220)는 SATA(Serial Advanced Technology Attachment) 버스, NVMe(Non-Volatile Memory Express) 버스, SAS(Serial Attached SCSI) 버스 등의 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)(40)를 통해 호스트 장치(100)의 프로세서(110)와 연결될 수 있다.
또한, 스토리지 장치(200)는 제2 메모리 장치(220)의 사이즈에 상응하는 블록 액세서블 어드레스 공간(block accessible address space)을 사용하여 제2 메모리 장치(220)에 저장된 데이터에 대해 블록 단위의 액세스를 허용하는 블록 액세서블 인터페이스(40)를 호스트 장치(100)에 제공할 수 있다.
제1 메모리 장치(210)는 호스트 장치(100)에 의해 바이트 액세서블 인터페이스(30)를 통하여 바이트 단위로 액세스되는 휘발성의 메모리 장치일 수 있다. 예를 들어, 디램(DRAM, dynamic random access memory), 에스램(SRAM, static random access memory)와 같이 빠른 동작 속도를 갖는 메모리로 구현될 수 있다.
제2 메모리 장치(220)는 호스트 장치(100)에 의해 블록 액세서블 인터페이스(40)를 통하여 블록 단위로 액세스되는 비휘발성의 메모리 장치일 수 있다. 예를 들어, 제2 메모리 장치(220)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
도 3은 본 발명의 실시예들에 따른 전자 시스템의 어드레스 매핑을 나타내는 도면이다.
도 3을 참조하면, 호스트 장치(100)의 버츄얼 어드레스 공간(VAS, virtual address space)는 버츄얼 메모리 영역(VMR) 및 플러싱 메모리 영역(FMR)을 포함할 수 있다.
버츄얼 메모리 영역(VMR)은 제1 메모리 장치(MEM1)의 호스트 전속 메모리 영역(HDMR)에 매핑된다. 호스트 전속 메모리 영역(HDMR)은 제1 메모리 장치(210)의 일 부분일 수 있다. 즉 호스트 전속 메모리 영역(HDMR)의 제1 사이즈(SZ1)는 제1 메모리 장치(210)의 사이즈(SZV)보다 작을 수 있다. 여기서 사이즈라 함은 데이터의 저장 용량, 즉 메모리 용량을 나타낼 수 있다.
호스트 전속 메모리 영역(HDMR)은 제1 사이즈(SZ1)를 갖고, 버츄얼 메모리 영역(VMR)은 제1 사이즈(SZ1)보다 큰 제2 사이즈(SZ2)를 갖는다. 실제의 메모리 자원인 호스트 전속 메모리 영역(HDMR)보다 큰 사이즈의 버츄얼 메모리 영역(VMR)을 제공하기 위하여 스토리지 장치(200)는 호스트 전속 메모리 영역(HDMR) 및 버츄얼 메모리 영역(VMR) 사이의 매핑 관계를 동적으로 변경할 수 있다.
제2 메모리 장치(220)는 자신과 동일한 사이즈(SZN)의 어드레스 공간을 호스트 장치(100)에 제공한다. 버츄얼 메모리 영역(VMR)에 매핑되는 플러싱 메모리 영역(FMR)은 제2 메모리 장치(220)의 일 부분일 수 있다. 즉 플러싱 메모리 영역(FMR)의 제2 사이즈(SZ2)는 제2 메모리 장치(220)의 사이즈(SZN)보다 작을 수 있다.
버츄얼 메모리 영역(VMR) 및 플러싱 메모리 영역(FMR)은 동일하게 제2 사이즈(SZ2)를 가질 수 있다. 동일한 사이즈를 갖기 때문에 호스트 장치(100)는 버츄얼 메모리 영역(VMR) 및 플러싱 메모리 영역(FMR) 사이의 매핑 관계를 변경 없이 정적으로 설정할 수 있다.
도 4는 본 발명의 실시예들에 따른 전자 시스템의 버츄얼 메모리 영역 및 호스트 전속 메모리 영역을 나타내는 도면이다.
도 4를 참조하면, 버츄얼 메모리 영역(VMR) 및 호스트 전속 메모리 영역(HDMR)은 일정한 사이즈를 갖는 단위 영역(UR)들로 분할될 수 있다. 버츄얼 메모리 영역(VMR)의 단위 영역들(UR)에는 버츄얼 어드레스들(VA1~VAn)이 각각 할당되고(assigned) 호스트 전속 메모리 영역(HDMR)의 단위 영역들(UR)에는 리얼 어드레스들(RA1~RAm)이 각각 할당될 수 있다. 예를 들어, 버츄얼 어드레스들(VA1~VAn) 및 리얼 어드레스들(RA1~RAm)의 각각은 상응하는 단위 영역(UR)의 시작 어드레스일 수 있다.
단위 영역(UR)의 사이즈는 전자 시스템의 특성 및 동작 시나리오에 따라서 다양하게 결정될 수 있다.
일 실시예에서, 도 6에 도시된 바와 같이, 하나의 버츄얼 어드레스는 하나의 로직 블록 어드레스에 해당할 수 있고, 이 경우 단위 영역(UR)의 사이즈는 제2 메모리 장치(220)의 데이터 블록의 사이즈에 해당할 수 있다.
다른 실시예에서, 도7에 도시된 바와 같이, 두 개의 버츄얼 어드레스들은 하나의 로직 블록 어드레스에 해당할 수 있고, 이 경우 단위 영역(UR)의 사이즈는 제2 메모리 장치(220)의 데이터 블록의 사이즈에 절반에 해당할 수 있다.
도 5는 본 발명의 실시예들에 따른 전자 시스템의 다이내믹 매핑 테이블의 일 실시예를 나타내는 도면이다.
도 5를 참조하면, 다이내믹 매핑 테이블(DMT)은 호스트 전속 메모리 영역(HDMR)의 리얼 어드레스(RAD) 및 버츄얼 메모리 영역(VMR)의 버츄얼 어드레스(VAD) 사이의 매핑 관계를 포함할 수 있다.
예를 들어, 시점 T1에서 리얼 어드레스들(RA1, RA2, RA3, RA4)은 버츄얼 어드레스들(VAa, VAb, VAc, VAd)에 각각 상응할 수 있다. EMP는 상응하는 리얼 어드레스에 버츄얼 어드레스가 매핑되지 않았음을 나타낸다. 즉 도 5는 리얼 어드레스(RAm)에 버츄얼 어드레스가 매핑되지 않음을 나타낸다.
이러한 리얼 어드레스(RAD)와 버츄얼 어드레스(VAD) 사이의 매핑 관계는 호스트 장치(100)의 버츄얼 메모리 영역(VMR)에 대한 액세스 동작의 진행에 따라서 변경될 수 있다. 예를 들어, 시점 T1과 다른 시점 T2에서 리얼 어드레스들(RA1, RA2, RA3, RA4, RAm)은 버츄얼 어드레스들(VAf, VAg, VAh, VAi, VAj)에 각각 상응할 수 있다.
시점 T1의 다이내믹 매핑 테이블(DMT)은 시점 T1을 기준으로 가장 최근에 액세스된 버츄얼 어드레스들 및 리얼 어드레스들 사이의 매핑 관계를 나타내고, 마찬가지로 시점 T2의 다이내믹 매핑 테이블(DMT)은 시점 T2를 기준으로 가장 최근에 액세스된 버츄얼 어드레스들 및 리얼 어드레스들 사이의 매핑 관계를 나타낸다.
이와 같이, 호스트 전속 메모리 영역(HDMR) 및 버츄얼 메모리 영역(VMR) 사이의 매핑 관계를 동적으로 변경하여 실제의 메모리 자원인 호스트 전속 메모리 영역(HDMR)보다 큰 사이즈의 버츄얼 메모리 영역(VMR)을 제공함으로써 스토리지 장치(200) 및 이를 포함하는 전자 시스템(1000)의 사이즈를 감소하고 성능을 향상시킬 수 있다.
도 6 및 7은 본 발명의 실시예들에 따른 전자 시스템의 스태틱 매핑 테이블의 실시예들을 나타내는 도면들이다.
도 6 및 7을 참조하면, 스태틱 매핑 테이블(SMT)은 버츄얼 메모리 영역(VMR)의 버츄얼 어드레스들(VAD) 및 플러싱 메모리 영역(FMR)의 로직 블록 어드레스(LBA) 사이의 매핑 관계를 포함할 수 있다. 또한, 스태틱 매핑 테이블(SMT)은 버츄얼 어드레스(VAD)에 매핑되는 로직 블록 어드레스(LBA)에 데이터가 기입되어 있는지 여부를 나타내는 점유 상태 정보(OCS)를 더 포함할 수 있다. 점유 상태 정보(OCS)는 버츄얼 어드레스(VAD)에 매핑되는 로직 블록 어드레스(LBA)에 데이터가 기입되어 있는 경우에는 제1 값(OC)을 갖고 기입되어 있지 않은 경우에는 제2 값(UO)을 가질 수 있다.
일 실시예에서, 도 6에 도시된 바와 같이, 하나의 버츄얼 어드레스가 하나의 로직 블록 어드레스에 해당할 수 있다. 즉 버츄얼 어드레스들(VA1, VA2, VA3, VAn)은 로직 블록 어드레스들(LBA1, LBA2, LBA3, LBAn)에 각각 매핑될 수 있다. 이 경우 단위 영역(UR)의 사이즈는 제2 메모리 장치(220)의 데이터 블록의 사이즈에 해당할 수 있다. 도 6의 예에서, 점유 상태 정보(OCS)에 기초하여 제1 값(OC)이 할당된 버츄얼 어드레스들(VA1, VA2)에 매핑되는 로직 블록 어드레스들(LBA1, LBA2)에는 데이터가 기입되어 있고 제2 값(UO)이 할당된 버츄얼 어드레스들(VA3, VAn)에 매핑되는 로직 블록 어드레스들(LBA3, LBAn)에는 데이터가 기입되어 있지 않음을 알 수 있다.
다른 실시예에서, 도 7에 도시된 바와 같이, 두 개의 버츄얼 어드레스는 하나의 로직 블록 어드레스에 해당할 수 있다. 즉 버츄얼 어드레스들(VA1, VA2)은 로직 블록 어드레스(LBA1)에 매핑되고, 버츄얼 어드레스들(VA3, VA4)은 로직 블록 어드레스(LBA2)에 매핑되고, 버츄얼 어드레스들(VA5, VA6)은 로직 블록 어드레스(LBA3)에 매핑되고, 버츄얼 어드레스들(VAn-1, VAn)은로직 블록 어드레스(LBAq)에 매핑될 수 있다. 이 경우 2q=n에 해당하고, 단위 영역(UR)의 사이즈는 제2 메모리 장치(220)의 데이터 블록의 절반에 해당할 수 있다. 도 7의 예에서, 점유 상태 정보(OCS)에 기초하여 제1 값(OC)이 할당된 버츄얼 어드레스들(VA1, VA2)에 매핑되는 로직 블록 어드레스(LBA1)에는 데이터가 기입되어 있고, 제2 값(UO)이 할당된 버츄얼 어드레스들(VA5, VA6, Vn-1, VAn)에 매핑되는 로직 블록 어드레스들(LBA3, LBAq)에는 데이터가 기입되어 있지 않고, 제1 값(OC) 및 제2 값(OC)이 각각 할당된 버츄얼 어드레스들(VA3, VA4)에 매핑되는 로직 블록 어드레스(LBA2)에는 데이터 블록의 일부에만 데이터가 기입되어 있음을 알 수 있다.
이러한 스태틱 매핑 테이블(SMT)은 호스트 장치(100)에 의해 발생되고 스토리지 장치(200)에 제공될 수 있다. 이와 같이, 호스트 장치(100) 및 스토리지 장치(200)는 스태틱 매핑 테이블(SMT)을 공유하여 호스트 장치(100)와 스토리지 장치(200) 사이의 바이트 단위의 액세스 및 블록 단위의 액세스를 효율적으로 지원할 수 있다.
도 8은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 버츄얼 메모리 콘트롤러의 일 실시예를 나타내는 블록도이다.
도 8을 참조하면, 버츄얼 메모리 콘트롤러(230)는 매핑 매니저(232), 내부 전송 매니저(234) 및 복구 매니저(236)를 포함할 수 있다.
매핑 매니저(232)는 호스트 전속 메모리 영역(HDMR)의 리얼 어드레스들(RA1~RAm) 및 버츄얼 메모리 영역(VMR)의 버츄얼 어드레스들(VA1~VAn) 매핑 관계를 포함하는 다이내믹 매핑 테이블(DMT)을 발생할 수 있다. 매핑 매니저(232)는 도 5를 참조하여 전술한 바와 같이 호스트 장치(100)의 버츄얼 메모리 영역(VMR)에 대한 액세스 동작의 진행에 따라서 다이내믹 매핑 테이블(DMT)의 매핑 관계를 동적으로 변경할 수 있다.
내부 전송 매니저(234)는 버츄얼 메모리 영역(VMR)의 버츄얼 어드레스들(VA1~VAn) 및 플러싱 메모리 영역(FMR)의 로직 블록 어드레스들(LBA1~LBAn) 사이의 매핑 관계와 버츄얼 어드레스들(VA1~VAn)에 각각 매핑되는 로직 블록 어드레스들(LBA1~LBAn)에 각각 데이터가 기입되어 있는지 여부를 나타내는 점유 상태 정보(OCS)를 포함하는 스태틱 매핑 테이블(SMT) 및 다이내믹 매핑 테이블(DMT)에 기초하여 제1 메모리 장치(210) 및 제2 메모리 장치(220) 사이의 데이터 전송을 제어할 수 있다.
상기 내부 데이터 전송은 후술하는 바와 같은 제1 메모리 장치(210)로부터 제2 메모리 장치(220)로의 데이터 전송에 해당하는 플러싱 동작 및 제2 메모리 장치(220)로부터 제1 메모리 장치(210)로의 데이터 전송에 해당하는 로딩 동작을 포함할 수 있다.
매핑 매니저(232) 및 내부 전송 매니저(234)는 주소 변환 유닛(ATU, address translation unit), 메모리 관리 유닛(MMU, memory management unit), 데이터의 리디렉션(redirection)을 위한 멀티플렉서와 같은하드웨어 및 이를 제어하기 위한 소프트웨어의 조합으로 구현될 수 있다.
복구 매니저(236)는 도 11을 참조하여 후술하는 바와 같이 호스트 전속 메모리 영역(HDMR)에 대해 설정된 퍼시스턴트 메모리 영역(PMR)의 비휘발성(nonvolatility) 또는 지속성(persistency)를 보장하기 위한 동작을 제어할 수 있다. 복구 매니저(236)는 후술하는 바와 같은 전력 차단 보호 회로와 같은 하드웨어 및 이를 제어하기 위한 소프트웨어의 조합으로 구현될 수 있다. 복구 매니저(236)는 스토리지 장치(200)에 공급되는 입력 전력의 인터럽트 발생시 보조 전력을 이용하여 퍼시스턴트 메모리 영역(PMR)에 저장된 데이터를 비휘발성의 제2 메모리 장치(220)의 플러싱 메모리 영역(FMR)에 저장하는 백업 동작을 수행할 수 있다. 또한, 복구 매니저(236)는 입력 전력의 인터럽트 발생시 전술한 스태틱 매핑 테이블(SMT) 및 다이내믹 매핑 테이블(DMT)을 제2 메모리 장치(220)의 메타 영역 등에 저장할 수 있다.
입력 전력이 복원된 후에 이와 같이 저장된 정보 및 데이터에 기초하여 버츄얼 메모리 영역(VMR)의 모든 데이터들이 복구될 수 있다.
도 9는 본 발명의 실시예들에 따른 전자 시스템의 어펜딩 기입 동작을 나타내는 도면이고, 도 10은 도 9의 어펜딩 기입 동작에 따른 다이내믹 매핑 테이블의 매핑 관계를 나타내는 도면이다.
도 9를 참조하면, 호스트 장치(100)는 버츄얼 어드레스(VAD)를 순차적으로 증가시키면서 버츄얼 메모리 영역(VMR)에 데이터를 기입하는 어펜딩 기입 동작(appending write operation)을 수행할 수 있다. 도 9에서 ACO 는 기입 순서를 나타낸다.
도 10에는 상기 어펜딩 기입 동작에 상응하는 다이내믹 매핑 테이블(DMT)의 매핑 관계의 변경이 도시되어 있다. 도 10에는 설명 및 도시의 편의상 호스트 전속 메모리 영역(HDMR)이 8개의 리얼 어드레스들(RA1~RA8)에 상응하는 것으로 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니다.
시점 T11에서, 다이내믹 매핑 테이블(DMT)은 제1 리얼 어드레스(RA1) 및 제2 리얼 어드레스(RA2)에 대해서 순차적으로 제1 버츄얼 어드레스(VA1) 및 제2 버츄얼 어드레스(VA2)이 각각 매핑되고, 제3 내지 제8 리얼 어드레스들(RA3~RA8)에는 아직 버츄얼 어드레스들이 매핑되지 않았음(EMP)을 나타낸다.
이후, 시점 T12에서, 다이내믹 매핑테이블(DMT)은 제1 내지 제8 리얼 어드레스들(RA1~RA8)의 모두에 대해서 순차적으로 제1 내지 제8 버츄얼 어드레스들(VA1~VA8))이 각각 매핑되었음을 나타낸다.
이후 시점 T13에서 제9 버츄얼 어드레스(VA9) 및 제10 버츄얼 어드레스(VA10)에 대한 기입 동작이 수행되면 제1 리얼 어드레스(RA1) 및 제2 리얼 어드레스(RA2)에 대해서 순차적으로 제9 버츄얼 어드레스(VA9) 및 제10 버츄얼 어드레스(VA10)가 각각 매핑된다.
이와 같이 로테이션 방식 또는 라운드 로빈 방식에 의해 버츄얼 어드레스들(VA1~VAn)이 더 작은 개수의 리얼 어드레스들(RA1~RAm)에 동적으로 매핑될 수 있다. 이러한 동적 매핑 관계의 설정에 따라서, 제1 사이즈(SZ1)의 호스트 전속 메모리 영역(HDMR)를 이용하여 제1 사이즈(SZ1)보다 큰 제2 사이즈(SZ2)의 버츄얼 메모리 영역(VMR)을 호스트 장치(100)에 제공할 수 있다.
도 11은 도 9의 어펜딩 기입 동작에 따른 퍼시스턴트 메모리 영역의 설정의 일 실시예를 나타내는 도면이다.
도 11을 참조하면, 스토리지 장치(200)는 호스트 전속 메모리 영역(HDMR)에 대하여 복수의 플러싱 유닛들(F1, F2)을 포함하는 퍼시스턴트 메모리 영역(PMR)을 설정할 수 있다. 도 11에는 편의상 퍼시스턴트 메모리 영역(PMR)이 2개의 플러싱 유닛들(F1, F2)을 포함하는 것으로 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니며 퍼시스턴트 메모리 영역(PMR)은 3개 이상의 플러싱 유닛들을 포함할 수 있다.
스토리지 장치(200)는 복수의 플러싱 유닛들(F1, F2) 중 하나의 플러싱 유닛에 대한 기입 동작이 완료된 경우 상기 하나의 플러싱 유닛에 기입된 데이터를 제2 메모리 장치(220)에 저장하는 플러싱 동작을 수행할 수 있다. 예를 들어, 도 8의 버츄얼 메모리 콘트롤러(230)에 포함되는 내부 전송 매니저(234)는 전술한 바와 같은 스태틱 매핑 테이블(SMT) 및 다이내믹 매핑 테이블(DMT)에 기초하여 하나의 플러싱 유닛에 기입된 데이터를 제1 메모리 장치(210)의 플러싱 메모리 영역(FMR)의 상응하는 부분들에 각각 저장할 수 있다.
내부 전송 매니저(234)는 상기 플러싱 동작이 완료될 때마다 퍼시스턴트 메모리 영역(PMR)의 시작 위치에 상응하는 플러싱 위치를 호스트 전속 메모리 영역(HDMR)의 시작 어드레스부터 시작하여 복수의 플러싱 유닛들(FU1, FU2)의 각각의 플러싱 사이즈(SZF)만큼 순차적으로 증가시킬 수 있다. 도 11에는 시점 T21에서의 플러싱 위치(FPOS1) 및 하나의 플러싱 유닛(FU1)에 대한 플러싱 동작이 완료된 후의 시점 T22에서 플러싱 사이즈(SZF)만큼 증가한 플러싱 위치(FPOS2)가 도시되어 있다.
플러싱 동작이 완료된 플러싱 유닛은 퍼시스턴트 메모리 영역(PMR)에서 배제되고 다시 새로운 플러싱 유닛이 퍼시스턴트 메모리 영역(PMR)에 편입되는 방식으로 퍼시스턴트 메모리 영역(PMR)은 동적으로 변경된다.
상기 플러싱 위치가 호스트 전속 메모리 영역(HDMR)의 종료 어드레스 도달한 경우 상기 플러싱 위치를 다시 호스트 전속 메모리 영역(HDMR)의 시작 어드레스부터 시작하여 플러싱 사이즈(SZF)만큼 순차적으로 증가시킬 수 있다.
이와 같이, 이전에 호스트 전속 메모리 영역(HDMR)에 기입된 데이터에 대해서는 이미 플러싱 동작이 완료된 상태이고 가장 최근에 기입된 데이터는 퍼시스턴트 메모리 영역(PMR)에 포함되어 있다. 퍼시스턴트 메모리 영역(PMR)의 데이터는 전력이 갑자기 차단되더라도 전술한 복구 매니저(236)가 보조 전력을 이용하여 제2 메모리 장치(220)의 플러싱 메모리 영역(FMR)에 백업할 수 있다.
결과적으로, 이러한 플러싱 동작 및 백업 동작을 통하여 스토리지 장치(200)의 전원이 차단된 경우에도 버츄얼 메모리 영역(VMR)에 저장된 모든 데이터가 유지되도록 버츄얼 메모리 영역(VMR)의 비휘발성(nonvolatility) 또는 지속성(persistency)을 지원할 수 있다.
도 12는 도 9의 어펜딩 기입 동작에 따른 퍼시스턴트 메모리 영역의 설정의 다른 실시예를 나타내는 도면이다.
도 12를 참조하면, 스토리지 장치(200)의 내부 전송 매니저(234)는 상기 어펜딩 기입 동작이 수행된 리얼 어드레스들 및 복수의 플러싱 유닛들(F1, F2)에 대한 매핑 관계를 포함하는 플러싱 상태 테이블(FST)을 발생할 수 있다. 내부 전송 매니저(234)는 플러싱 상태 테이블(FST)에 기초하여 전술한 플러싱 동작을 수행할 수 있다.
도 12에서 FUX는 플러싱 유닛의 인덱스를 나타내고, ACX는 기입 순서 인덱스를 나타내고, ACAD는 기입 순서 인덱스에 상응하는 리얼 어드레스를 나타낸다. EMP는 상응하는 기입 순서 인덱스에 리얼 어드레스가 매핑되지 않았음을 나타낸다.
시점 T31에서 플러싱 상태 테이블(FST)은 제1 플러싱 유닛(FU1)에 제1, 제2 및 제3 리얼 어드레스들(RA1, RA2, RA3)이 매핑되어 있음을 나타낸다. 즉 시점 T31의 플러싱 상태 테이블(FST)은 제1 및 제2 리얼 어드레스들(RA1, RA2)에 대한 기입 동작이 완료되고 제3 리얼 어드레스(RA3)에 대한 기입 동작이 진행 중임을 나타낸다.
이후 제3 리얼 어드레스(RA3)에 대한 기입 동작이 완료되고 제4 리얼 어드레스(RA4)에 대한 기입 동작이 개시되면, 내부 전송 매니저(234)는 제1 플러싱 유닛(FU1)에 매핑된 제1, 제2 및 제3 리얼 어드레스들(RA1, RA2, RA3)에 대한 플러싱 동작을 수행한 후 제1 플러싱 유닛(FU1)의 매핑 관계를 삭제한다.
이와 같은 방식으로, 시점 T32에서 플러싱 상태 테이블(FST)은 제4 리얼 어드레스(RA4)에 대한 기입 동작이 진행 중임을 나타내고, 시점 T33에서 플러싱 상태 테이블(FST)은 제4 및 제5 리얼 어드레스들(RA4, RA5)에 대한 기입 동작이 완료되고 제6 리얼 어드레스(RA6)에 대한 기입 동작이 진행 중임을 나타내고, 시점 T34에서 플러싱 상태 테이블(FST)은 제7 리얼 어드레스(RA7)에 대한 기입 동작이 진행 중임을 나타낸다. 한편, 제1 플러싱 유닛(FU1) 및 제2 플러싱 유닛(FU1)에 매핑되는 리얼 어드레스들의 기입동작이 완료될 때마다 제1 플러싱 유닛(FU1) 및 제2 플러싱 유닛(FU1)에 대한 플러싱 동작이 교호적으로(alternately) 수행된다.
도 13은 본 발명의 실시예들에 따른 전자 시스템의 랜덤 기입 동작을 나타내는 도면이고, 도 14는 도 13의 랜덤 기입 동작에 따른 다이내믹 매핑 테이블의 매핑 관계를 나타내는 도면이다.
도 13을 참조하면, 호스트 장치(100)는 버츄얼 어드레스(VAD)의 순차적인 순서에 관계 없이 버츄얼 메모리 영역(VMR)에 데이터를 기입하는 랜덤 기입 동작(random write operation)을 수행할 수 있다. 도 13에서ACO 는 기입 순서를 나타낸다.
도 14에는 상기 랜덤 기입 동작에 상응하는 다이내믹 매핑 테이블(DMT)의 매핑 관계의 변경이 도시되어 있다. 한편 도 14에 도시된 바와 같이, 다이내믹 매핑 테이블(DMT)은 상기 랜덤 기입 동작이 수행된 리얼 어드레스들의 순서를 나타내는 기입 순서 정보(ACO)를 포함할 수 있다.
도 14에는 설명 및 도시의 편의상 호스트 전속 메모리 영역(HDMR)이 8개의 리얼 어드레스들(RA1~RA8)에 상응하는 것으로 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니다.
시점 T41에서, 다이내믹 매핑 테이블(DMT)은 제1 리얼 어드레스(RA1) 및 제2 리얼 어드레스(RA2)에 대해서 순차적으로 제3 버츄얼 어드레스(VA3) 및 제7 버츄얼 어드레스(VA7)이 각각 매핑되고, 제3 내지 제8 리얼 어드레스들(RA3~RA8)에는 아직 버츄얼 어드레스들이 매핑되지 않았음(EMP)을 나타낸다.
이후, 시점 T42에서, 다이내믹 매핑 테이블(DMT)은 제3 및 제4 리얼 어드레스들(RA3, RA4)에 대해서 순차적으로 제2 및 제9 버츄얼 어드레스들(VA2, VA9))이 각각 매핑되었음을 나타내고, 이미 매핑되어 있는 제3 버츄얼 어드레스(VA3)에 대한 기입 동작이 추가적으로 수행되어 상응하는 제1 리얼 어드레스(RA1)의 기입 순서가 1에서 5로 변경되었음을 나타낸다.
시점 T43에서, 다이내믹 매핑 테이블(DMT)은 제5 및 제6 리얼 어드레스들(RA5, RA6)에 대해서 순차적으로 제6 및 제5 버츄얼 어드레스들(VA6, VA5))이 각각 매핑되었음을 나타내고, 이미 매핑되어 있는 제2 버츄얼 어드레스(VA2)에 대한 기입 동작이 추가적으로 수행되어 상응하는 제3 리얼 어드레스(RA3)의 기입 순서가 3에서 8로 변경되었음을 나타낸다.
시점 T44에서, 다이내믹 매핑 테이블(DMT)은 제9 및 제10 리얼 어드레스들(RA9, RA10)에 대해서 순차적으로 제1 및 제4 버츄얼 어드레스들(VA1, VA4))이 각각 매핑되었음을 나타낸다.
이와 같이, 모든 리얼 어드레스들(RA1~RA8)에 대해 버츄얼 어드레스들이 매핑된 상태에서 새로운 버츄얼 어드레스에 대해 기입 동작이 수행되면 기입 순서가 가장 오래된 리얼 어드레스에 새로운 버츄얼 어드레스를 매핑시킨다.
즉, 시점 T45에서, 다이내믹 매핑 테이블(DMT)은 제2 리얼 어드레스(RA2)에 매핑된 제7 버츄얼 어드레스(VA7)가 삭제되고 새로이 기입 동작이 수행된 제8 버츄얼 어드레스(VA8)이 제2 리얼 어드레스(RA2)에 매핑됨을 나타낸다.
이와 같이 기입 순서 정보(ACO)를 이용하여 버츄얼 어드레스들(VA1~VAn)이 더 작은 개수의 리얼 어드레스들(RA1~RAm)에 동적으로 매핑될 수 있다. 이러한 동적 매핑 관계의 설정에 따라서, 제1 사이즈(SZ1)의 호스트 전속 메모리 영역(HDMR)를 이용하여 제1 사이즈(SZ1)보다 큰 제2 사이즈(SZ2)의 버츄얼 메모리 영역(VMR)을 호스트 장치(100)에 제공할 수 있다.
도 15는 도 13의 랜덤 기입 동작에 따른 퍼시스턴트 메모리 영역의 설정의 일 실시예를 나타내는 도면이다.
도 15를 참조하면, 스토리지 장치(200)의 내부 전송 매니저(234)는 상기 랜덤 기입 동작이 수행된 리얼 어드레스들 및 복수의 플러싱 유닛들(F1, F2)에 대한 매핑 관계를 포함하는 플러싱 상태 테이블(FST)을 발생할 수 있다. 내부 전송 매니저(234)는 플러싱 상태 테이블(FST)에 기초하여 전술한 플러싱 동작을 수행할 수 있다.
도 15에서 FUX는 플러싱 유닛의 인덱스를 나타내고, ACX는 기입 순서 인덱스를 나타내고, ACAD는 기입 순서 인덱스에 상응하는 리얼 어드레스를 나타낸다. EMP는 상응하는 기입 순서 인덱스에 리얼 어드레스가 매핑되지 않았음을 나타낸다.
시점 T51에서 플러싱 상태 테이블(FST)은 제1 플러싱 유닛(FU1)에 제1, 제2 및 제3 리얼 어드레스들(RA1, RA2, RA3)이 매핑되어 있음을 나타낸다. 즉 시점 T51의 플러싱 상태 테이블(FST)은 제1 및 제2 리얼 어드레스들(RA1, RA2)에 대한 기입 동작이 완료되고 제3 리얼 어드레스(RA3)에 대한 기입 동작이 진행 중임을 나타낸다.
이후 제3 리얼 어드레스(RA3)에 대한 기입 동작이 완료되고 제4 리얼 어드레스(RA4)에 대한 기입 동작이 개시되면, 내부 전송 매니저(234)는 제1 플러싱 유닛(FU1)에 매핑된 제1, 제2 및 제3 리얼 어드레스들(RA1, RA2, RA3)에 대한 플러싱 동작을 수행한 후 제1 플러싱 유닛(FU1)의 매핑 관계를 삭제한다.
이와 같은 방식으로, 시점 T52에서 플러싱 상태 테이블(FST)은 제4 및 제1 리얼 어드레스들(RA4, RA1)에 대한 기입 동작이 완료되고 제5 리얼 어드레스(RA5)에 대한 기입 동작이 진행 중임을 나타내고, 시점 T53에서 플러싱 상태 테이블(FST)은 제6 및 제3 리얼 어드레스들(RA6, RA3)에 대한 기입 동작이 완료되고 제7 리얼 어드레스(RA7)에 대한 기입 동작이 진행 중임을 나타내고, 시점 T54에서 플러싱 상태 테이블(FST)은 제8 리얼 어드레스(RA8)에 대한 기입 동작이 완료되고 제2 리얼 어드레스(RA2)에 대한 기입 동작이 진행 중임을 나타낸다. 한편, 제1 플러싱 유닛(FU1) 및 제2 플러싱 유닛(FU1)에 매핑되는 리얼 어드레스들의 기입 동작이 완료될 때마다 제1 플러싱 유닛(FU1) 및 제2 플러싱 유닛(FU1)에 대한 플러싱 동작이 교호적으로(alternately) 수행된다.
도 16은 본 발명의 실시예들에 따른 전자 시스템의 동작 방법을 나타내는 도면이다.
도 16을 참조하면, 스토리지 장치(200)는 호스트 장치(100)로부터 버츄얼 어드레스(VAi)를 액세스 어드레스로서 수신한다(S510). 상기 버츄얼 어드레스(VAi)는 기입 동작을 위한 기입 어드레스 또는 독출 동작을 위한 독출 어드레스일 수 있다.
스토리지 장치(200)의 버츄얼 메모리 콘트롤러(230)는 다이내믹 매핑 테이블(DMT)에 기초하여 버츄얼 어드레스(VAi)에 매핑된 리얼 어드레스(RAj)가 존재하는지 여부를 결정한다(S520).
버츄얼 메모리 콘트롤러(230)는 버츄얼 어드레스(VAi)에 매핑된 리얼 어드레스(RAj)가 다이내믹 매핑 테이블(DMT)에 존재하는 경우(S520: YES), 리얼 어드레스(RAj)에 대한 액세스 동작을 수행한다(S560). 버츄얼 메모리 콘트롤러(230)는 버츄얼 어드레스(VAi)에 매핑된 리얼 어드레스(RAj)가 다이내믹 매핑 테이블(DMT)에 존재하지 않는 경우(S520: NO), 전술한 동적인 매핑 관계의 설정에 따라서 버츄얼 어드레스(VAi)에 리얼어드레스(RAj)를 할당한다(S530).
스토리지 장치(200)의 내부 전송 매니저(234)는 스태틱 매핑 테이블(SMT)의 점유 상태 정보(OCS)에 기초하여 버츄얼 어드레스(VAi)에 상응하는 점유 상태 정보(OCS)의 값이 제1 값(OC)인지 여부를 결정한다(S540).
점유 상태 정보(OCS)의 값이 제1 값(OC)인 경우(S540: YES), 내부 전송 매니저(234)는 버츄얼 어드레스(VAi)에 매핑되는 로직 블록 어드레스의 데이터를 제2 메모리 장치(220)의 플러싱 메모리 영역(FMR)으로부터 호스트 전속 메모리 영역(HDMR)의 리얼 어드레스(RAj)로 로딩하고(S550), 리얼 어드레스(RAj)에 대한 액세스 동작을 수행한다(S560). 따라서, 기존에 저장된 데이터에 대한 동일성을 유지한 상태에서 독출 동작 및/또는 덮어쓰기 동작이 수행될 수 있다. 점유 상태 정보(OCS)의 값이 제1 값(OC)이 아닌 경우(S540: NO), 내부 전송 매니저(234)는 상기 로딩 동작의 수행 없이 리얼 어드레스(RAj)에 대한 액세스 동작을 수행한다(S560).
이와 같이, 버츄얼 어드레스(VAi)에 대한 액세스를 수행할 때, 스토리지 장치(200)는 전술한 점유 상태 정보(OCS)에 기초하여 버츄얼 어드레스(VAi)에 매핑되는 로직 블록 어드레스의 데이터를 버츄얼 어드레스(VAi)에 매핑되는 리얼 어드레스(RAj)에 저장하는 로딩 동작의 수행 여부를 결정할 수 있다.
액세스 동작이 완료되면, 스토리지 장치(200)는 버츄얼 어드레스(VAi)상응하는 점유 상태 정보(OCS)를 갱신한다(S570). 버츄얼 어드레스(VAi)에 상응하는 점유 상태 정보(OCS)가 제1 값(OC)인 경우에는 기입 동작 또는 독출 동작에 관계 없이 제1 값(OC)을 그대로 유지할 수 있다. 점유 상태 정보(OCS)가 제2 값(UO)인 버츄얼 어드레스(VAi)에 대해서 기입 동작이 수행된 경우에는 기입 동작이 완료된 후 버츄얼 어드레스(VAi)의 점유 상태 정보(OCS)를 제2 값(UO)에서 제1 값(OC)으로 변경한다.
도 17은 블록 액세서블 인터페이스의 코맨드들의 예를 나타내는 도면이다.
도 17에서 b는 이진수 값(binary value)을 나타내고 h는 16진수 값(hexadecimal value)을 나타낸다. O는 선택적임(optional)을 나타내고 M은 강제적임(mandatory)을 나타낸다. Opcode(01:00)의 값이 00b인 경우는 호스트 장치(100) 및 스토리지 장치(200) 사이에 데이터 전송이 수반되지 않는 것을 나타내며, 01b인 경우는 호스트 장치(100)로부터 스토리지 장치(200)로의 데이터 전송이 수반되는 것을 나타내며, 10b인 경우는 스토리지 장치(200)로부터 호스트 장치(100)로의 데이터 전송이 수반되는 것을 나타낼 수 있다.
도 17에서 Opcode(07)의 값이 0인 경우는 전술한 블록 액세스 코맨드(STCMD)에 해당할 수 있다. 블록 액세스 코맨드(STCMD)에 해당하는 코맨드들(FL, WR, RD, WU, CP, WZ, DM)은, 예를 들어, NVMe(non-volatile memory express) 표준에 정의된 스탠다드 코맨드들일 수 있다.
상기 코맨드들 중에서, 제로 기입 코맨드(WZ)는 기입 어드레스에 0을 기입하는, 즉 해당 어드레스의 데이터를 삭제하는 데이터 삭제 동작을 지시하는 코맨드이다. 호스트 장치(100)는 제로 기입 코맨드(WZ)를 이용하여 버츄얼 메모리 영역(VMR)의 버츄얼 어드레스에 상응하는 제2 메모리 장치(220)의 플러싱 메모리 영역(FMR)의 로직 블록 어드레스에 대한 데이터를 삭제할 수 있다. 이 경우 호스트 장치(100)는 상기 버츄얼 어드레스에 상응하는 점유 상태 정보(OCS)를 제1 값(OC)에서 제2 값(UO)으로 변경하고, 이러한 변경 사항을 스토리지 장치(200)에 알릴 수 있다.
도 18은 본 발명의 실시예들에 따른 전자 시스템의 어드레스 매핑을 나타내는 도면이다.
도 18을 참조하면, 호스트 전속 메모리 영역(HDMR)은 복수의 서브 호스트 전속 메모리 영역들(HDMR1, HDMR2)을 포함하고, 버츄얼 메모리 영역(VMR)은 복수의 서브 호스트 전속 메모리 영역들(HDMR1, HDMR2)에 각각 매핑되는 복수의 서브버츄얼 메모리 영역들(VMR1, VMR2)을 포함할 수 있다. 도 18에는 편의상 호스트 전속 메모리 영역(HDMR) 및 버츄얼 메모리 영역(VMR)이 각각 2개의 서브 영역들로 분할되는 예를 도시하였으나, 본 발명의 실시예들이 이에한정되는 것은 아니다.
스토리지 장치(200)는 복수의 서브 버츄얼 메모리 영역들(VMR1, VMR2)을 호스트 장치(100)의 복수의 애플리케이션들(APP1, APP2)에 각각전속적으로 제공할 수 있다. 전술한 스태틱 매핑 테이블(SMT), 다이내믹 매핑 테이블(DMT), 플러싱 상태 테이블(FST)은 각 애플리케이션별로 작성 및 관리된다. 호스트 장치(100)가 이러한 정보를 관리하거나 스토리지 장치(200)가 NVMe의 네임스페이스(Namespace) 등의 기능을 활용하여 구분하고 관리할 수 있다. 또한 스토리지 장치(200)는 내부적으로 메모리 보호 유닛(MPU, memory protection unit)을 활용하여 각 애플리케이션이 다른 애플리케이션의 서브버츄얼 메모리 영역에 침범하지 못하도록 보호할 수 있다.
도 19는 본 발명의 실시예들에 따른 스토리지 장치를 나타내는 블록도이다.
도 19를 참조하면, 스토리지 장치(500)는 전력 차단 보호(PLP, power loss protection) 회로(510), 보조 전력 공급 장치(APWM)(520), 내부 회로(INT)(530) 및 파워 레일(400)을 포함할 수 있다.
전력 차단 보호 회로(510)는 제1 노드(N1)를 통하여 입력 전력(Pin)을 공급받을 수 있다. 또한 전력 차단 보호 회로(510)는 제2 노드(N2)를 통하여 커패시터 모듈과 같은 보조 전력 공급 장치(520)를 충전하기 위한 충전 전력(Pch)을 공급하거나 제2 노드(N2)를 통하여 보조 전력 공급 장치(520)로부터 보조 전력(Pcap)을 공급받을 수 있다. 전력 차단 보호 회로(510)는 공급받는 입력 전력(Pin) 및 보조 전력(Pcap) 중 적어도 하나를 제3 노드(N3)를 통하여 내부 회로(530)에 공급할 수 있다. 여기서 제3 노드(N3)는 내부 회로(530)에 전력을 공급하는 파워 레일(400)에 상응하는 노드이다.
보조 전력 공급 장치(520)는 커패시터 모듈 또는 보조 배터리를 포함할 수 있다. 내부 회로(530)는 스토리지 장치(500)의 종류에 따라서 다양한 구성을 가질 수 있다. 예를 들어, 스토리지 장치(500)는 에스에스디(SSD, solid state drive), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card)와 같은스토리지 장치이고 내부 회로(530)는 휘발성의 제1 메모리, 비휘발성의 제2 메모리, 이를 제어하기 위한 가상 메모리 콘트롤러, 블록 콘트롤러 등의 회로를 포함할 수 있다.
전력 차단 보호 회로(510)는 보조 전력 공급 장치(520)의 전력 공급 용량을 나타내는 상태 신호(STA)를 발생하고, 상태 신호(STA)를 스토리지 장치(500)의 내부 회로(530)에 제공할 수 있다. 상태 신호(STA)는 상기 전력 공급 용량을 나타내는 복수 비트의 신호일 수 있다. 내부 회로(530)는 상태 신호(STA)에 기초하여 스토리지 장치(500)의 동작을 제어할 수 있다. 특히 후술하는 바와같이 내부 회로(530)는 상태 신호(STA)에 기초하여 전술한 플러싱 사이즈(SZF)를 제어할 수 있다.
도 20은 도 19의 스토리지 장치에 포함되는 전력 차단보호 회로의 일 실시예를 나타내는 블록도이다.
도 20을 참조하면, 전력 차단 보호 회로(510)는 콘트롤러(511), 제1 모니터(512), 제2 모니터(513), 충전기(514) 및 전력 스위치(515)를 포함할 수 있다.
콘트롤러(511)는 전력 차단 보호 회로(510)의 전반적인 동작을 제어할 수 있다. 제1 모니터(512)는 제1 노드(N1)를 통하여 공급되는 입력 전력(Pin)을 모니터링하여 제1 검출 신호(DET1)를 발생할 수 있다. 입력 전력(Pin)의 모니터링은 다양한 방법으로 구현될 수 있다. 예를 들어, 제1 모니터(512)는 제1 노드(N1)의 전압에 기초하여 입력 전력(Pin)을 모니터링할 수 있다. 제1 모니터(512)는 제1 노드(N1)의 전압이 기준 레벨보다 낮아지는 경우에는 입력 전력(Pin)에 인터럽트가 발생한 것으로 판단하고 제1 검출 신호(DET1)를 통하여 이를 콘트롤러(511)에 알릴 수 있다.
제2 모니터(513)는 보조 전력 공급 장치(520)의 상태를 모니터링하고, 콘트롤러(511)는 상기 모니터링 결과에 기초하여 상태 신호(STA)를 발생할 수 있다. 예를 들어, 제2 모니터(513)는 제2 노드(N2)의 전압 및 전류에 기초하여 보조 전력 공급 장치(520)의 상태를 모니터링할 수 있다.
충전기(514)는 입력 전력(Pin)에 기초하여 보조 전력 공급 장치(520)를 충전하기 위한 충전 전력(Pch)을 공급할 수 있다. 이러한 충전 동작의 타이밍은 콘트롤러(511)로부터의 제어 신호에 의해 결정될 수 있다. 상기 충전 동작은 주기적 또는 비주기적으로 수행될 수 있다.
전력 스위치(515)는 콘트롤러(511)로부터의 제어 신호에 응답하여 입력 제1 노드(N1) 및/또는 제2 노드(N2)를 제3 노드(N3)에 전기적으로 연결될 수 있다. 제1 노드(N1)가 제3 노드(N3)에 전기적으로 연결되는 경우에는 입력 전력(Pin)이 내부 전력(Pint)으로서 내부 회로(530)에 제공될 수 있고, 제2 노드(N2)가 제3 노드(N3)에 전기적으로 연결되는 경우에는 보조 전력(Pcap)이 내부 전력(Pint)으로서 내부 회로(530)에 제공될 수 있다.
실시예에 따라서, 제1 노드(N1) 및 제2 노드(N2)가 동시에 제3 노드(N3)에 전기적으로 연결될 수도 있고, 이 경우, 입력 전력(Pin)과 보조 전력(Pcap)의 합이 내부 전력(Pint)으로서 내부 회로(530)에 제공될 수 있다.
도 21은 본 발명의 실시예들에 따른 플러싱 사이즈의 결정 방법을 나타내는 도면이다.
도 21의 상부에는 전술한 상태 신호(STA)가 보조 전력(Pcap), 즉 보조 전력 공급 장치(520)의 전원 공급 용량이 상대적으로 낮음을 나타내는 경우의 플러싱 동작(FOP)이 도시되어 있고, 도 21의 하부에는 상태 신호(STA)가 보조 전력(Pcap)이 상대적으로 높음을 나타내는 경우의 플러싱 동작(FOP)이 도시되어 있다.
도 21에 도시된 바와 같이, 보조 전력(Pcap)에 기초하여 플러싱 데이터의 양, 즉 전술한 플러싱 사이즈(SZF)을 제어할 수 있다.
보조 전력(Pcap)이 상대적으로 낮은 경우에는 호스트 전속 메모리 영역(HDMR)의 플러싱 유닛(FU)의 플러싱 사이즈(SZF1)가 상대적으로 작게 설정될 수 있다. 반면에 보조 전력(Pcap)이 상대적으로 높은 경우에는 호스트 전속 메모리 영역(HDMR)의 플러싱 유닛(FU)의 플러싱 사이즈(SZF2)가 상대적으로 크게 설정될 수 있다.
이와 같이, 보조 전력(Pcap) 또는 보조 전력 공급 장치(520)의 전원 공급 용량이 감소할수록 상기 플러싱 사이즈를 감소하여 플러싱 동작이 빈번하게 수행되도록 할 수 있다. 플러싱 동작이 자주 수행되는 경우에는 스토리지 장치의 성능이 감소하는 결과를 초래하더라도 입력 전력(Pin)의 예기치 않은 인터럽트 발생시 작은 보조 전력(Pcap)으로도 플러싱 동작을 완료할 수 있도록 하여 버츄얼 메모리 영역(VMR)의 비휘발성 또는 지속성을 보장할 수 있다.
도 22는 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
도 22를 참조하면, 시스템(1001)은 호스트 장치(2000) 및 스토리지 장치(3000)를 포함한다. 예를 들어, 스토리지 장치(3000)는 에스에스디(SSD, solid state drive), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card) 등일 수 있다.
호스트 장치(2000)는 스토리지 장치(3000)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다. 호스트 장치(2000)는 씨피유(CPU, central processing unit), 프로세서, 마이크로프로세서 (microprocessor) 또는 애플리케이션 프로세서(application processor) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치일 수 있고, 상기 데이터 처리 장치(2000) 및 스토리지 장치(3000)는 전자 장치에 내장(embedded) 또는 구현될 수 있다.
호스트 장치(2000)와 스토리지 장치(3000)는 버스(10)를 통하여 상호 연결될 수 있다.
호스트 장치(2000)는 버스(20)를 통하여 연결된 프로세서(CPU)(2100), 메모리(MEM)(2200) 및 호스트 콘트롤러 인터페이스(HCI)(2300)를 포함할 수 있다. 프로세서(2100)에 의해 운영 체제(OS) 및/또는 호스트 펌웨어(FW)(2110)가 구동될 수 있다.
프로세서(2100)는 코맨드(CMD)의 생성, 응답(RES)의 해석, 스토리지 장치(3000)에 데이터 및/또는 데이터 처리 동작을 제어할 수 있는 하드웨어를 의미할 수 있다. 프로세서(2100)는 운영 체제/호스트 펌웨어(2110)를 구동하여 상기와 같은 동작들을 수행할 수 있다.
호스트 콘트롤러 인터페이스(2300)는 스토리지 장치(3000)와 인터페이스하기 위한 구성요소이다. 호스트 콘트롤러 인터페이스(2300)는 스토리지 장치(3000)로 코맨드를 발급하고(issuing), 코맨드에 대한 응답을 스토리지 장치(3000)로부터 수신하고, 스토리지 장치(3000)에 저장될 기입 데이터를 전송하고, 스토리지 장치(3000)로부터 독출한 독출 데이터를 수신한다.
스토리지 장치(3000)는 복수의 비휘발성 메모리 장치들(NVM)(3100), 스토리지 콘트롤러(3200) 및 보조 전력 공급 장치(APWM)(3300)를 포함한다.
비휘발성 메모리 장치들(3100)은 옵션적으로 외부 고전압(VPP)을 제공받도록 구현될 수 있다. 비휘발성 메모리 장치들(3100)은 플래시 메모리, 에프램(FRAM, ferroelectric random access memory), 피램(PRAM, phase-change random access memory), 엠램(MRAM, magnetic random access memory) 등으로 구현될 수 있다.
스토리지 콘트롤러(3200)는 복수의 채널들(CH1~CHi)을 통하여 비휘발성 메모리 장치들(3100)에 연결된다. 스토리지 콘트롤러(3200)는 버스(30)를 통하여 연결된 적어도 하나의 프로세서(3210), 전력 차단 보호 회로(3220), 호스트 인터페이스(3230), 휘발성 메모리 장치(MEM)(3240), 블록 콘트롤러(BLCON)(3270), 가상 메모리 콘트롤러(VMCON)(3260), 비휘발성 메모리 인터페이스(3250)를 포함한다.
전력 차단 보호 회로(3220)는 보조 전력 공급 장치(3300)의 상태를 모니터링하고, 상기 모니터링의 결과에 기초하여 전술한 상태 신호(STA)를 발생하여 스토리지 장치(3000)의 동작을 제어할 수 있다.
프로세서(3210)는 스토리지 콘트롤러(3200)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, 프로세서(3210)는 플래시 변환 계층(FTL, Flash Translation Layer) 등을 포함하는 펌웨어(3212)를 운용하도록 구성된다.
호스트 인터페이스(3230)는 호스트 장치(2000)와의 인터페이스 기능을 제공할 수 있다. 비휘발성 메모리 인터페이스(3250)는 비휘발성 메모리 장치(3100)와의 인터페이스 기능을 제공할 수 있다.
휘발성 메모리 장치(3240)는 전술한 제1 메모리 장치(210)에 해당하고 비휘발성 메모리 장치들(3100)은 전술한 제2 메모리 장치(220)에 해당할 수 있다.
도 23은 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
도 23을 참조하면, 모바일 장치(4000)는 어플리케이션 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 저장 장치(4400), 및 모바일 램(4500)을 포함한다.
어플리케이션 프로세서(4100)는 모바일 장치(4000)의 전반적인 동작을 제어한다. 어플리케이션 프로세서(4100)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 통신 모듈(4200)은 외부와의 유선 통신 및/또는 무선 통신을 제어하도록 구현될 수 있다. 디스플레이/터치 모듈(4300)은 어플리케이션 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다. 저장 장치(4400)는 사용자의 데이터를 저장하도록 구현될 수 있다.
저장 장치(4400)는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 솔리드 스테이트 드라이브(SSD, solid state drive), 유니버셜 플래시 스토리지(UFS, universal flash storage) 장치일 수 있다. 저장 장치(4400)는 전술한 바와 같이 본 발명의 실시예들에 따른 버츄얼 메모리 영역(VMR)을 제공할 수 있다.
모바일 램(4500)은 모바일 장치(4000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 예를 들어, 모바일 램(4500)은 DDR SDRAM, LPDDR SDRAM, GDDR SDRAM, RDRAM 등과 같은 동적 랜덤 액세스 메모리일 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법은, 상기 호스트 전속 메모리 영역 및 상기 버츄얼 메모리 영역 사이의 매핑 관계를 동적으로 변경하여 실제의 메모리 자원인 호스트 전속 메모리 영역보다 큰 사이즈의 버츄얼 메모리 영역을 제공함으로써 스토리지 장치 및 이를 포함하는 전자 시스템의 사이즈를 감소하고 성능을 향상시킬 수 있다.
또한, 본 발명의 실시예들에 따른 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법은, 플러싱 동작을 통하여 버츄얼 메모리 영역의 비휘발성을 지원하고 호스트 장치와 스토리지 장치 사이의 바이트 단위의 액세스 및 블록 단위의 액세스를 효율적으로 지원함으로써 스토리지 장치 및 이를 포함하는 전자 시스템의 성능을 향상시킬 수 있다.
본 발명의 실시예들은 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 호스트 장치; 및
    상기 호스트 장치에 의해 메모리 맵 입출력 인터페이스를 통하여 액세스되는 휘발성의 제1 메모리 장치 및 상기 호스트 장치에 의해 블록 액세서블 인터페이스를 통하여 액세스되는 비휘발성의 제2 메모리 장치를 포함하는 스토리지 장치를 포함하고,
    상기 스토리지 장치는, 상기 제1 메모리 장치에 포함되고 제1 사이즈를 갖는 호스트 전속 메모리 영역에 매핑되고 상기 제1 사이즈보다 큰 제2 사이즈를 갖는 버츄얼 메모리 영역을 상기 호스트 장치에 제공하고,
    상기 스토리지 장치는,
    상기 호스트 전속 메모리 영역의 리얼 어드레스들 및 상기 버츄얼 메모리 영역의 버츄얼 어드레스들 사이의 매핑 관계를 포함하는 다이내믹 매핑 테이블을 발생하고,
    상기 호스트 장치의 상기 버츄얼 메모리 영역에 대한 액세스 동작의 진행에 따라서 상기 다이내믹 매핑테이블의 매핑 관계를 동적으로 변경하고,
    상기 호스트 전속 메모리 영역에 대하여 복수의 플러싱 유닛들을 포함하는 퍼시스턴트 메모리 영역을 설정하고,
    상기 복수의 플러싱 유닛들 중 하나의 플러싱 유닛에 대한 기입 동작이 완료된 경우 상기 하나의 플러싱 유닛에 기입된 데이터를 상기 제2 메모리 장치에 저장하는 플러싱 동작을 수행하는 것을 특징으로 하는 전자 시스템.
  2. 삭제
  3. 호스트 장치; 및
    상기 호스트 장치에 의해 메모리 맵 입출력 인터페이스를 통하여 액세스되는 휘발성의 제1 메모리 장치 및 상기 호스트 장치에 의해 블록 액세서블 인터페이스를 통하여 액세스되는 비휘발성의 제2 메모리 장치를 포함하는 스토리지 장치를 포함하고,
    상기 스토리지 장치는, 상기 제1 메모리 장치에 포함되고 제1 사이즈를 갖는 호스트 전속 메모리 영역에 매핑되고 상기 제1 사이즈보다 큰 제2 사이즈를 갖는 버츄얼 메모리 영역을 상기 호스트 장치에 제공하고,
    상기 스토리지 장치는,
    상기 호스트 전속 메모리 영역의 리얼 어드레스들 및 상기 버츄얼 메모리 영역의 버츄얼 어드레스들 사이의 매핑 관계를 포함하는 다이내믹 매핑 테이블을 발생하고,
    상기 호스트 장치의 상기 버츄얼 메모리 영역에 대한 액세스 동작의 진행에 따라서 상기 다이내믹 매핑테이블의 매핑 관계를 동적으로 변경하고,
    상기 호스트 장치는,
    상기 제2 사이즈를 갖는 상기 버츄얼 메모리 영역의 버츄얼 어드레스들 및 상기 제2 메모리 장치에 포함되고 상기 제2 사이즈를 갖는 플러싱 메모리 영역의 로직 블록 어드레스들 사이의 매핑 관계를 포함하는 스태틱 매핑 테이블을 발생하고,
    상기 스태틱 매핑 테이블을 상기 스토리지 장치에 제공하고,
    상기 버츄얼 메모리 영역 및 상기 플러싱 메모리 영역 사이의 매핑 관계를 변경 없이 정적으로 설정하는 것을 특징으로 하는 전자 시스템.
  4. 제3 항에 있어서,
    상기 스태틱 매핑 테이블은,
    상기 버츄얼 어드레스에 매핑되는 상기로직 블록 어드레스에 데이터가 기입되어 있는지 여부를 나타내는 점유 상태 정보를 더 포함하고,
    상기 버츄얼 어드레스에 대한 액세스를 수행할 때, 상기 스토리지 장치는 상기 점유 상태 정보에 기초하여 상기 버츄얼 어드레스에 매핑되는 상기 로직 블록 어드레스의 데이터를 상기 버츄얼 어드레스에 매핑되는 상기 리얼 어드레스에 저장하는 로딩 동작의 수행 여부를 결정하는 것을 특징으로 하는 전자 시스템.
  5. 삭제
  6. 제1 항에 있어서,
    상기 호스트 장치는 상기 버츄얼 어드레스를 순차적으로 증가시키면서 상기 버츄얼 메모리 영역에 데이터를 기입하는 어펜딩 기입 동작을 수행하고,
    상기 스토리지 장치는 상기 플러싱 동작이 완료될 때마다 상기 퍼시스턴트 메모리 영역의 시작 위치에 상응하는 플러싱 위치를 상기 호스트 전속 메모리 영역의 시작 어드레스부터 시작하여 상기 복수의 플러싱 유닛들의 각각의 플러싱 사이즈만큼 순차적으로 증가시키고 상기 플러싱 위치가 상기 호스트 전속 메모리 영역의 종료 어드레스 도달한 경우 상기 플러싱 위치를 다시 상기 호스트 전속 메모리 영역의 시작 어드레스부터 시작하여 상기 플러싱 사이즈만큼 순차적으로 증가시키는 것을 특징으로 하는 전자 시스템.
  7. 제1 항에 있어서,
    상기 호스트 장치는 상기 버츄얼 어드레스의 순차적인 순서에 관계 없이 상기 버츄얼 메모리 영역에 데이터를 기입하는 랜덤 기입 동작을 수행하고,
    상기 다이내믹 매핑 테이블은,
    상기 랜덤 기입 동작이 수행된 상기 리얼 어드레스들의 순서를 나타내는 기입 순서 정보를 더 포함하는 것을 특징으로 하는 전자 시스템.
  8. 제1 항에 있어서,
    상기 스토리지 장치에 공급되는 입력 전력의 인터럽트 발생시 보조 전력을 공급하기 위한 보조 전력 공급 장치를 더 포함하고,
    상기 복수의 플러싱 유닛들의 각각의 플러싱 사이즈는 상기 보조 전력 공급 장치의 전력 공급 용량의 범위 내에서 결정되는 것을 특징으로 하는 전자 시스템.
  9. 제1 항에 있어서,
    상기 호스트 전속 메모리 영역은 복수의 서브 호스트 전속 메모리 영역들을 포함하고,
    상기 버츄얼 메모리 영역은 상기 복수의 서브 호스트 전속 메모리 영역들에 각각 매핑되는 복수의 서브버츄얼 메모리 영역들을 포함하고,
    상기 복수의 서브 버츄얼 메모리 영역들은 상기 호스트 장치의 복수의 애플리케이션들에 각각 전속적으로 제공되는 것을 특징으로 하는 전자 시스템.
  10. 호스트 장치에 의해 메모리 맵 입출력 인터페이스를 통하여 액세스되는 휘발성의 제1 메모리 장치;
    상기 호스트 장치에 의해 블록 액세서블 인터페이스를 통하여 액세스되는 비휘발성의 제2 메모리 장치; 및
    상기 제1 메모리 장치에 포함되고 제1 사이즈를 갖는 호스트 전속 메모리 영역에 매핑되고 상기 제1 사이즈보다 큰 제2 사이즈를 갖는 버츄얼 메모리 영역을 상기 호스트 장치에 제공하는 버츄얼 메모리 콘트롤러를 포함하고,
    상기 호스트 전속 메모리 영역의 리얼 어드레스들 및 상기 버츄얼 메모리 영역의 버츄얼 어드레스들 사이의 매핑 관계를 포함하는 다이내믹 매핑 테이블을 발생하고,
    상기 호스트 장치의 상기 버츄얼 메모리 영역에 대한 액세스 동작의 진행에 따라서 상기 다이내믹 매핑테이블의 매핑 관계를 동적으로 변경하고,
    상기 호스트 전속 메모리 영역에 대하여 복수의 플러싱 유닛들을 포함하는 퍼시스턴트 메모리 영역을 설정하고,
    상기 복수의 플러싱 유닛들 중 하나의 플러싱 유닛에 대한 기입 동작이 완료된 경우 상기 하나의 플러싱 유닛에 기입된 데이터를 상기 제2 메모리 장치에 저장하는 플러싱 동작을 수행하는 스토리지 장치.
KR1020180090124A 2018-08-02 2018-08-02 버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법 Active KR102727610B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180090124A KR102727610B1 (ko) 2018-08-02 2018-08-02 버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법
US16/291,402 US11216383B2 (en) 2018-08-02 2019-03-04 Storage device providing a virtual memory region, electronic system including the same, and method of operating the same
CN201910475002.9A CN110795365B (zh) 2018-08-02 2019-05-31 存储设备、包括所述存储设备的电子系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180090124A KR102727610B1 (ko) 2018-08-02 2018-08-02 버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법

Publications (2)

Publication Number Publication Date
KR20200014964A KR20200014964A (ko) 2020-02-12
KR102727610B1 true KR102727610B1 (ko) 2024-11-07

Family

ID=69228729

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180090124A Active KR102727610B1 (ko) 2018-08-02 2018-08-02 버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법

Country Status (3)

Country Link
US (1) US11216383B2 (ko)
KR (1) KR102727610B1 (ko)
CN (1) CN110795365B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269780B2 (en) * 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
CN112527698B (zh) * 2020-12-04 2024-03-22 联想(北京)有限公司 一种处理方法、装置及设备
CN114328297B (zh) * 2021-12-29 2024-08-06 合肥兆芯电子有限公司 映射表管理方法、存储器控制电路单元与存储器存储装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180107596A1 (en) * 2016-10-13 2018-04-19 Microsoft Technology Licensing, Llc Battery-based data persistence management in computing systems

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276867A (en) * 1989-12-19 1994-01-04 Epoch Systems, Inc. Digital data storage system with improved data migration
US6425047B1 (en) * 1999-06-24 2002-07-23 Matsushita Electric Industrial Co., Ltd. Process containing address decoders suited to improvements in clock speed
US7243185B2 (en) * 2004-04-05 2007-07-10 Super Talent Electronics, Inc. Flash memory system with a high-speed flash controller
US6557077B1 (en) * 2000-07-07 2003-04-29 Lsi Logic Corporation Transportable memory apparatus and associated methods of initializing a computer system having the same
AU2003272358A1 (en) * 2002-09-16 2004-04-30 Tigi Corporation Storage system architectures and multiple caching arrangements
US20070211551A1 (en) * 2005-11-25 2007-09-13 Yoav Yogev Method for dynamic performance optimization conforming to a dynamic maximum current level
US20070255889A1 (en) * 2006-03-22 2007-11-01 Yoav Yogev Non-volatile memory device and method of operating the device
US7822941B2 (en) * 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US7928990B2 (en) * 2006-09-27 2011-04-19 Qualcomm Incorporated Graphics processing unit with unified vertex cache and shader register file
US20080082714A1 (en) * 2006-09-29 2008-04-03 Nasa Hq's. Systems, methods and apparatus for flash drive
US7694091B2 (en) 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
US7653762B1 (en) * 2007-10-04 2010-01-26 Xilinx, Inc. Profiling circuit arrangement
US8176233B1 (en) * 2008-07-17 2012-05-08 Virident Systems Inc. Using non-volatile memory resources to enable a virtual buffer pool for a database application
US8898417B1 (en) * 2009-10-20 2014-11-25 Micron Technology, Inc. Block-based storage device with a memory-mapped interface
US9021182B2 (en) * 2010-10-03 2015-04-28 Winbond Electronics Corporation Flash memory for code and data storage
WO2012069872A1 (en) * 2010-11-22 2012-05-31 Freescale Semiconductor, Inc. Method for setting breakpoints, and an integrated circuit and debug tool therefor
US9348515B2 (en) * 2011-01-17 2016-05-24 Hitachi, Ltd. Computer system, management computer and storage management method for managing data configuration based on statistical information
JP5664347B2 (ja) * 2011-03-04 2015-02-04 ソニー株式会社 仮想メモリシステム、仮想メモリの制御方法、およびプログラム
US9323659B2 (en) * 2011-08-12 2016-04-26 Sandisk Enterprise Ip Llc Cache management including solid state device virtualization
JP2013068105A (ja) * 2011-09-21 2013-04-18 Hitachi Automotive Systems Ltd 自動車用電子制御装置
JP5776474B2 (ja) * 2011-09-29 2015-09-09 富士通株式会社 ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
TWI480733B (zh) * 2012-03-29 2015-04-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9678863B2 (en) 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
US9612956B2 (en) * 2013-03-15 2017-04-04 Seagate Technology Llc Multi-tiered caching for data storage management in a device
US9058274B2 (en) * 2013-05-20 2015-06-16 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method of selective READ cache retention for a rebooted node of a multiple-node storage cluster
US9817756B1 (en) 2013-05-23 2017-11-14 Amazon Technologies, Inc. Managing memory in virtualized environments
US9292204B2 (en) * 2013-05-24 2016-03-22 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method of rebuilding READ cache for a rebooted node of a multiple-node storage cluster
KR102025180B1 (ko) * 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
KR20160048814A (ko) * 2013-08-09 2016-05-04 샌디스크 테크놀로지스, 인코포레이티드 지속적 데이터 구조
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
US10235103B2 (en) 2014-04-24 2019-03-19 Xitore, Inc. Apparatus, system, and method of byte addressable and block addressable storage and retrival of data to and from non-volatile storage memory
US9870083B2 (en) * 2014-06-12 2018-01-16 Microsoft Technology Licensing, Llc Multi-device multi-user sensor correlation for pen and computing device interaction
US9626108B2 (en) * 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
US10275171B2 (en) * 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
US9841902B2 (en) 2014-11-20 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Peripheral component interconnect express controllers configured with non-volatile memory express interfaces
US9824041B2 (en) * 2014-12-08 2017-11-21 Datadirect Networks, Inc. Dual access memory mapped data structure memory
US20160210044A1 (en) * 2015-01-15 2016-07-21 Commvault Systems, Inc. Intelligent hybrid drive caching
US9904627B2 (en) * 2015-03-13 2018-02-27 International Business Machines Corporation Controller and method for migrating RDMA memory mappings of a virtual machine
WO2016159930A1 (en) * 2015-03-27 2016-10-06 Hewlett Packard Enterprise Development Lp File migration to persistent memory
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
US9811276B1 (en) * 2015-09-24 2017-11-07 EMC IP Holding Company LLC Archiving memory in memory centric architecture
US10303371B2 (en) * 2015-12-02 2019-05-28 Toshiba Memory Corporation Data storage device that stabilizes write latency
US9772942B2 (en) * 2015-12-09 2017-09-26 Lenovo Enterprise Solutions (Singapore) PTE., LTD. Committing transaction without first flushing processor cache to non-volatile memory when connected to UPS
US10423568B2 (en) 2015-12-21 2019-09-24 Microsemi Solutions (U.S.), Inc. Apparatus and method for transferring data and commands in a memory management environment
US9875329B1 (en) * 2015-12-29 2018-01-23 Cadence Design Systems, Inc. Method and system for import of mask layout data to a target system
US10229051B2 (en) * 2015-12-30 2019-03-12 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
US20170206033A1 (en) * 2016-01-19 2017-07-20 SK Hynix Inc. Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme
US20170212835A1 (en) 2016-01-22 2017-07-27 Samsung Electronics Co., Ltd. Computing system with memory management mechanism and method of operation thereof
US9934151B2 (en) * 2016-06-28 2018-04-03 Dell Products, Lp System and method for dynamic optimization for burst and sustained performance in solid state drives
US10289544B2 (en) * 2016-07-19 2019-05-14 Western Digital Technologies, Inc. Mapping tables for storage devices
US10152393B2 (en) * 2016-08-28 2018-12-11 Microsoft Technology Licensing, Llc Out-of-band data recovery in computing systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180107596A1 (en) * 2016-10-13 2018-04-19 Microsoft Technology Licensing, Llc Battery-based data persistence management in computing systems

Also Published As

Publication number Publication date
KR20200014964A (ko) 2020-02-12
CN110795365A (zh) 2020-02-14
US11216383B2 (en) 2022-01-04
CN110795365B (zh) 2024-06-04
US20200042459A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
CN107179996B (zh) 数据存储装置和其操作方法
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
TWI566097B (zh) 邏輯區塊位址位元映射之使用
KR102002921B1 (ko) 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
KR20210108107A (ko) 메모리 시스템 및 그것의 동작방법
US12182431B2 (en) Memory system and method of operating the same
US20170206172A1 (en) Tehcniques with os- and application- transparent memory compression
US11449418B2 (en) Controller and method for selecting victim block for wear leveling operation
US20200320012A1 (en) Memory system and method for operating the same
CN104347104A (zh) 一种大容量存储设备
US20200363965A1 (en) Memory system, controller, and operation method of the controller
KR102727610B1 (ko) 버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법
US9734057B2 (en) Semiconductor storage device and buffer operation method thereof
KR20190051530A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
CN109426448B (zh) 存储器系统及其操作方法
US20200249873A1 (en) Method for performing storage space management, associated data storage device, and controller thereof
CN118426679A (zh) 包括存储装置和控制器的电子装置及其操作方法
WO2017023339A1 (en) Snapshot storage management
KR20220042673A (ko) 컨트롤러, 컨트롤러의 동작 방법, 및 이를 포함하는 메모리 시스템
US10572382B2 (en) Method of operating data storage device and method of operating data processing system including the same
KR102732425B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR102793912B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
TW202424717A (zh) 資料儲存裝置與動態決定緩存器大小的方法
KR20220096013A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
CN117215968A (zh) 用于减少固态装置开启时间的方法及其系统

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20180802

PG1501 Laying open of application
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20210702

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20180802

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20231011

Patent event code: PE09021S01D

E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20240621

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20231011

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I

AMND Amendment
PX0901 Re-examination

Patent event code: PX09012R01I

Patent event date: 20240820

Comment text: Amendment to Specification, etc.

PX0701 Decision of registration after re-examination

Patent event date: 20240920

Comment text: Decision to Grant Registration

Patent event code: PX07013S01D

X701 Decision to grant (after re-examination)
GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20241104

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20241105

End annual number: 3

Start annual number: 1

PG1601 Publication of registration