KR102608354B1 - 전자 장치 및 이를 포함하는 컴퓨팅 시스템 - Google Patents

전자 장치 및 이를 포함하는 컴퓨팅 시스템 Download PDF

Info

Publication number
KR102608354B1
KR102608354B1 KR1020230072077A KR20230072077A KR102608354B1 KR 102608354 B1 KR102608354 B1 KR 102608354B1 KR 1020230072077 A KR1020230072077 A KR 1020230072077A KR 20230072077 A KR20230072077 A KR 20230072077A KR 102608354 B1 KR102608354 B1 KR 102608354B1
Authority
KR
South Korea
Prior art keywords
volatile memory
memory device
data
mapping table
bitmap
Prior art date
Application number
KR1020230072077A
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 KR1020230072077A priority Critical patent/KR102608354B1/ko
Application granted granted Critical
Publication of KR102608354B1 publication Critical patent/KR102608354B1/ko
Priority to US18/409,321 priority patent/US11995002B1/en

Links

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/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
    • 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/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
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/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

전자 장치 및 이를 포함하는 컴퓨팅 시스템{ELECTRONIC DEVICE AND COMPUTING SYSTEM INCLUDING SAME}
본 개시는 전자 장치 및 이를 포함하는 컴퓨팅 시스템에 관한 것이다.
바이트 어드레서블(byte-addressable) 메모리의 대표적인 DRAM은 바이트 단위로 읽고 쓸 수는 있지만, 블록 스토리지에 비해 단위 가격이 비싸고 확장의 한계를 가지고 있다. 블록 스토리지는 DRAM에 비해 가격이 싸고 고용량이지만, 바이트 단위로 읽고 쓸 수 없고 512 Byte 또는 4 KB 블록 단위로만 동작이 가능하다.
블록 스토리지의 데이터는 DRAM에 캐싱되어 바이트 어드레서블로 읽기 및 쓰기가 가능할 수 있고, 블록 스토리지의 사이즈만큼 DRAM이 있는 것으로 호스트에 보여주게 할 수 있다. 여기서 DRAM과 블록 스토리지 간의 관계를 기술하는 방법을 매핑이라고 하며, 각 장치 간 장점을 최대한 활용할 수 있도록 알고리즘을 설계해야 할 필요성이 있다.
본 개시는 휘발성 메모리 장치와 비휘발성 스토리지 장치 각각의 장점을 최대한 활용할 수 있는 매핑 구조를 제공하는 것을 기술적 과제로 한다.
본 개시는 성능이 빠르고, 매핑 테이블의 사이즈는 크지 않으며, 또한 라이트/리드 앰플리케이션이 증가되지 않도록 하는 매핑 알고리즘을 제공하는 것을 기술적 과제로 한다.
본 개시는 최적화된 메모리 매핑 알고리즘을 제공함으로써, 전체 시스템 성능을 향상시키고 효율을 높여 총 소요 비용(TCO)을 절감하는 것을 기술적 과제로 한다.
본 개시는 장치, 시스템, 방법 또는 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 한 측면으로서, 바이트 어드레서블 전자 장치가 개시된다. 상기 장치는, 휘발성 메모리 장치; 비휘발성 스토리지 장치의 어드레스 정보에 대응하는 상기 휘발성 메모리 장치의 어드레스 정보, 및 상기 휘발성 메모리 장치의 어드레스 정보와 관련하여 데이터 접근과 관련된 명령이 처리되었는지 여부를 지시하는 정보를 저장하는 매핑 테이블; 및 호스트 프로세서, 상기 휘발성 메모리 장치, 및 상기 비휘발성 스토리지 장치와 연결되고, 상기 매핑 테이블을 기초로 상기 호스트 프로세서로부터 수신되는 데이터 접근과 관련된 명령을 처리하도록 구성된 컨트롤러를 포함할 수 있다.
일 실시예에서, 상기 매핑 테이블은, 상기 비휘발성 스토리지 장치의 복수의 페이지 번호에 각각 대응하는 복수의 엔트리를 포함하고, 상기 복수의 엔트리 각각은, 상기 비휘발성 스토리지 장치의 소정의 페이지 번호에 대응하는 상기 휘발성 메모리 장치의 페이지 번호; 상기 휘발성 메모리 장치의 페이지 번호의 특정 오프셋 위치의 데이터의 읽기 여부를 지시하는 리드 비트맵; 및 상기 휘발성 메모리 장치의 페이지 번호의 특정 오프셋 위치의 데이터의 쓰기 여부를 지시하는 라이트 비트맵을 포함할 수 있다.
본 개시의 다른 일 측면에 따르면, 컴퓨팅 시스템이 개시된다. 상기 컴퓨팅 시스템은, 호스트 프로세서; 바이트 어드레서블 전자 장치; 및 비휘발성 스토리지 장치를 포함하고, 상기 바이트 어드레서블 전자 장치는, 휘발성 메모리 장치; 상기 비휘발성 스토리지 장치의 어드레스 정보에고 대응하는 상기 휘발성 메모리 장치의 어드레스 정보, 및 상기 휘발성 메모리 장치의 어드레스 정보와 관련하여 데이터 접근과 관련된 명령이 처리되었는지 여부를 지시하는 정보를 저장하는 매핑 테이블; 및 상기 호스트 프로세서, 상기 휘발성 메모리 장치, 및 상기 비휘발성 스토리지 장치와 연결되고, 상기 매핑 테이블을 기초로 상기 호스트 프로세서로부터 수신되는 데이터 접근과 관련된 명령을 처리하도록 구성된 컨트롤러를 포함할 수 있다.
본 개시의 다양한 실시예들에 의하면, 휘발성 메모리 장치와 비휘발성 스토리지 장치 각각의 장점을 최대한 활용할 수 있는 매핑 구조를 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 성능이 빠르고, 매핑 테이블의 사이즈는 크지 않으며, 또한 라이트/리드 앰플리케이션이 증가되지 않도록 하는 매핑 알고리즘을 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 최적화된 메모리 매핑 알고리즘을 제공함으로써, 전체 시스템 성능을 향상시키고 효율을 높여 총 소요 비용(TCO)을 절감할 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자(이하, '통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시예에 따른 컴퓨팅 시스템을 개념적으로 도시한 예시도이다.
도 2는 본 개시의 일 실시예에 따른 전자 장치를 포함하는 컴퓨팅 시스템의 블록도이다.
도 3은 본 개시의 일 실시예에 따른 매핑 테이블의 자료구조를 도시한 도면이다.
도 4는 본 개시의 일 실시예에 따른 컨트롤러가 매핑 테이블을 이용하여 데이터 접근과 관련된 명령을 처리하는 과정을 나타낸 순서도이다.
도 5는 본 개시의 일 실시예에 따른 컨트롤러가 비휘발성 스토리지 장치에 저장된 데이터를 읽기 처리하는 과정을 개념적으로 나타낸 도면이다.
도 6은 본 개시의 일 실시예에 따라 데이터 접근과 관련된 명령에 따른 매핑 테이블 및 휘발성 메모리 장치의 변경사항을 예시적으로 나타낸 도면이다.
도 7은 본 개시의 일 실시예에 따른 컨트롤러가 플러시 명령을 처리하는 과정을 나타낸 순서도이다.
도 8은 본 개시의 일 실시예에 따른 컨트롤러가 휘발성 메모리 장치에 저장된 데이터를 플러시 처리하는 과정을 개념적으로 나타낸 도면이다.
도 9는 본 개시의 일 실시예에 따른 매핑 구조에 따른 기술적 효과를 설명하기 위한 테이블이다.
도 10은 본 개시의 일 실시예에 따른 컨트롤러의 블록도이다.
본 명세서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 명세서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 명세서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 명세서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만, '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면, '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 명세서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 명세서에서 사용되는 "A, B, 및 C," "A, B, 또는 C," "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나," "A, B, 또는 C 중 적어도 하나," "A, B, 및/또는 C 중 적어도 하나," "A, B, 및 C 중에서 선택된 적어도 하나," "A, B, 또는 C 중에서 선택된 적어도 하나," "A, B, 및/또는 C 중에서 선택된 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 및 B 중에서 선택된 적어도 하나"는, (1) A, (2) A 중 적어도 하나, (3) B, (4) B 중 적어도 하나, (5) A 중 적어도 하나 및 B 중 적어도 하나, (6) A 중 적어도 하나 및 B, (7) B 중 적어도 하나 및 A, (8) A 및 B를 모두 지칭할 수 있다.
본 명세서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 명세서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 명세서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1은 본 개시의 일 실시예에 따른 컴퓨팅 시스템(100)을 개념적으로 도시한 예시도이다.
본 개시에 따른 컴퓨팅 시스템(100)은 데이터센터에서 사용될 수 있는 스토리지 서버 또는 다른 종류의 서버일 수 있다. 도 1에 도시된 바와 같이, 컴퓨팅 시스템(100)은 호스트 프로세서(110)(예: x86 CPU, ARM, RISC-V), 전자 장치(130) 및 비휘발성 스토리지 장치(140)를 포함할 수 있다. 호스트 프로세서(110)는 호스트 메모리(120)와 연결될 수 있다. 전자 장치(130)는 휘발성 메모리 장치(132)를 포함할 수 있다.
본 개시에 따른 컴퓨팅 시스템(100)은 전자 장치(130)의 휘발성 메모리 장치(132)를 중간 저장 매체로 사용하며, 비휘발성 스토리지 장치(140)를 최종 저장 매체로 사용할 수 있는 확장 가능한 장치 구조를 가질 수 있다. 호스트 프로세서(110)는 전자 장치(130)에 연결되어 있는 비휘발성 스토리지 장치(140)의 전체 용량을 인식할 수 있다.
호스트 프로세서(110)는 전자 장치(130)와 제1 인터페이스(150)를 이용하여 통신할 수 있다. 제1 인터페이스(150)는 직렬 인터페이스(serial interface)일 수 있고, 예를 들어, PCIe 혹은 CXL(compute express link) 프로토콜을 이용한 인터페이스일 수 있다. 전자 장치(130)는 비휘발성 스토리지 장치(140)와 제2 인터페이스(160)를 이용하여 통신할 수 있다. 제2 인터페이스(160)는 직렬 인터페이스일 수 있다.
본 개시에 따른 컴퓨팅 시스템(100)에 있어서, 제1 인터페이스(150)는 바이트 어드레서블 프로토콜(또는 바이트 어드레싱 프로토콜)일 수 있고, 제2 인터페이스(160)는 블록 어드레서블 프로토콜(또는 블록 어드레싱 프로토콜)일 수 있다. 호스트 프로세서(110)는 전자 장치(130)에 대하여 바이트 단위로 어드레스를 지정하여 데이터를 읽고 쓸 수 있다. 이러한 특징과 관련하여, 전자 장치(130)는 바이트 어드레서블(byte-addressable) 전자 장치로서 지칭될 수 있다. 전자 장치(130)는 비휘발성 스토리지 장치(140)에 대하여 블록 단위로 어드레스를 지정하여 데이터를 읽고 쓸 수 있다. 전자 장치(130)는 바이트 어드레스를 바탕으로 비휘발성 스토리지 장치(140)로부터 블록 단위의 데이터를 가져와서 전자 장치(130)의 휘발성 메모리 장치(132)에 저장할 수 있다. 전자 장치(130)는 휘발성 메모리 장치(132)에 저장된 데이터 중 호스트 프로세서(110)가 접근 명령한 어드레스에 대응하는 데이터에 접근할 수 있다.
일 실시예에 의하면, 전자 장치(130)는 성능 향상을 위하여 휘발성 메모리 장치(132)에 저장된 데이터에 대한 캐시(cache)를 내부적으로 가질 수 있다.
도 1에서는 설명의 편의를 위해, 비휘발성 스토리지 장치(140)가 전자 장치(130)와 별도로 구성된 것을 예시하였다. 그러나, 본 개시는 이에 한정되지 않는다. 예를 들어, 본 개시에서는 비휘발성 스토리지 장치(140)가 전자 장치(130)와 함께 통합 구성될 수 있다.
도 2는 본 개시의 일 실시예에 따른 전자 장치(130)를 포함하는 컴퓨팅 시스템(100)의 블록도이다.
도 2에 도시된 바와 같이, 컴퓨팅 시스템(100)은 호스트 프로세서(110), 전자 장치(130) 및 비휘발성 스토리지 장치(140)를 포함한다. 호스트 프로세서(110)는 통신 포트(210)를 포함할 수 있다. 전자 장치(130)는 휘발성 메모리 장치(132) 및 컨트롤러(240)를 포함할 수 있다.
호스트 프로세서(110)는 하나 또는 그 이상의 프로세서의 집합을 의미할 수 있다. 호스트 프로세서(110)는 소프트웨어(예: 명령, 프로그램 등)를 구동하여 호스트 프로세서(110)와 연결된 장치 또는 단말(예: 전자 장치(130))의 적어도 하나의 구성요소를 제어할 수 있다. 또한, 호스트 프로세서(110)는 다양한 연산, 처리, 데이터 생성 또는 가공 등의 동작을 수행할 수 있다. 또한, 호스트 프로세서(110)는 데이터 등을 각종 메모리 장치나 스토리지 장치로부터 로드하거나 메모리 장치나 스토리지 장치에 저장할 수 있다.
컨트롤러(240)는 하나 이상의 휘발성 메모리 채널을 가질 수 있으며, 이러한 휘발성 메모리 채널을 통해 개별 컴포넌트 또는 휘발성 메모리 장치(132)와 통신할 수 있다. 휘발성 메모리 장치(132)는 예를 들어 DIMM 타입의 DRAM일 수 있다. 컨트롤러(240)는 제1 통신 포트(220)를 포함할 수 있다. 예를 들어, 제1 통신 포트(220)는 PCIe 엔드 포인트이거나 CXL 엔드 포인트(CXL End Point)일 수 있다. 일 실시예에 의하면, 컨트롤러(240)는 제2 통신 포트(230)을 더 포함할 수 있다. 예를 들어, 제2 통신 포트(230)는 PCIe 루트 콤플렉스 포트(PCIe Root Complex port)일 수 있다.
컨트롤러(240)는 제1 통신 포트(220) 및 통신 포트(210)를 통해 호스트 프로세서(110)와 제1 인터페이스(150)로 통신할 수 있다. 또한, 컨트롤러(240)는 휘발성 메모리 장치(132)와 제3 인터페이스(250)로 통신할 수 있다. 또한, 컨트롤러(240)는 제2 통신 포트(230)를 통해 비휘발성 스토리지 장치(140)와 제2 인터페이스(160)로 통신할 수 있다. 여기서, 제1 인터페이스(150) 및 제2 인터페이스(160)는 직렬 인터페이스일 수 있고, 제3 인터페이스(250)는 병렬 인터페이스일 수 있다.
컨트롤러(240)는 호스트 프로세서(110)와 제1 프로토콜로 통신할 수 있다. 또한, 컨트롤러(240)는 휘발성 메모리 장치(132)와 제2 프로토콜로 통신할 수 있다. 또한, 컨트롤러(240)는 비휘발성 스토리지 장치(140)와 제3 프로토콜로 통신할 수 있다. 여기서, 제1 프로토콜 및 제2 프로토콜은 바이트(byte) 단위로 어드레스를 지정하여 데이터를 읽고 쓸 수 있는 바이트 어드레서블 프로토콜일 수 있고, 제3 프로토콜은 블록 단위로 어드레스를 지정하여 데이터를 읽고 쓸 수 있는 블록 어드레서블 프로토콜일 수 있다.
비휘발성 스토리지 장치(140)는 하나 이상의 비휘발성 스토리지를 포함할 수 있다. 일 실시예에 의하면, 제2 통신 포트(230)에는 인터페이스가 허용하는 개수만큼의 비휘발성 스토리지가 직접 연결될 수 있다. 여기서, 비휘발성 스토리지는 HDD(hard disk drive), SSD(solid state drive) 등을 포함할 수 있다.
본 개시에 따른 컨트롤러(240)는 호스트 프로세서(110)로부터 어드레스 정보를 포함한 데이터 접근과 관련된 명령 또는 요청을 수신할 수 있다. 해당 명령은 데이터 읽기 또는 쓰기에 대한 명령일 수 있으며, 통신 포트(210) 및 제1 통신 포트(220)를 통해 전달될 수 있다. 컨트롤러(240)는 휘발성 메모리 장치(132) 및 비휘발성 스토리지 장치(140)와 통신하여 데이터 접근 명령을 처리할 수 있다.
본 개시에 따른 전자 장치(130)는 매핑 테이블(260)을 포함할 수 있다. 매핑 테이블(260)은 휘발성 메모리 장치(132)와 비휘발성 스토리지 장치(140) 간의 관계를 지시하는 데이터 또는 정보의 집합을 의미할 수 있다. 예를 들어, 비휘발성 스토리지 장치(140)에 저장된 데이터가 휘발성 메모리 장치(132)에 캐싱되거나 저장될 경우, 해당 데이터에 대한 서로 다른 장치 간의 위치 관계가 메타데이터 형태로 매핑 테이블(260)에 저장될 수 있다. 일 실시예에 의하면, 매핑 테이블(260)에는 비휘발성 스토리지 장치(140)의 어드레스 정보에 대응하는 휘발성 메모리 장치(132)의 어드레스 정보, 휘발성 메모리 장치(132)의 어드레스 정보와 관련하여 데이터 접근과 관련된 명령이 처리되었는지 여부를 지시하는 정보 등이 저장될 수 있다. 도 2에는 매핑 테이블(260)이 휘발성 메모리 장치(132) 내부에 포함(저장)된 예가 도시되어 있으나, 본 개시는 이에 한정되지 않는다. 예를 들어, 매핑 테이블(260)은 컨트롤러(240) 내에 포함되거나, 전자 장치(130) 내에서 별도의 메모리로 구현되는 것도 가능하다.
도 3은 본 개시의 일 실시예에 따른 매핑 테이블(260)의 자료구조를 도시한 도면이다.
본 개시에 의하면, 매핑 테이블(260)은 비휘발성 스토리지 장치(140)의 복수의 페이지 번호(BPN)(310)에 각각 대응하는 복수의 엔트리(320)를 포함한다. 본 개시에서 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)라는 용어는 비휘발성 스토리지 장치(140)의 블록 페이지 번호(block page number)뿐 아니라 비휘발성 스토리지 장치(140)의 어드레스 또는 어드레스 범위를 나타낼 수 있는 정보도 포괄할 수 있다. 복수의 엔트리(320) 각각은 리드 비트맵(read bitmap)(322), 라이트 비트맵(write bitmap)(324) 및 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)를 포함한다. 본 개시에서 휘발성 메모리 장치(132)의 페이지 번호(DPN)라는 용어는 휘발성 메모리 장치(132)의 디램 페이지 번호(DRAM page number)뿐 아니라 휘발성 메모리 장치(132)의 어드레스 또는 어드레스 범위를 나타낼 수 있는 정보도 포괄할 수 있다.
휘발성 메모리 페이지 번호(BPN)(326)는 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)(310)에 대응될 수 있다. 리드 비트맵(322)은 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)의 특정 오프셋 위치의 데이터의 읽기 여부를 지시할 수 있다. 또한, 라이트 비트맵(324)은 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)의 특정 오프셋 위치의 데이터의 읽기 여부를 지시할 수 있다.
일 실시예에 의하면, 복수의 엔트리(320) 각각의 사이즈는 호스트 프로세서(110)가 휘발성 메모리 장치(132)를 1회 접근하는 단위와 동일할 수 있다. 예를 들어, 복수의 엔트리(320) 각각의 사이즈는 4 Byte 또는 8 Byte일 수 있다. 매핑 테이블(260)의 유닛 사이즈는 페이지 단위(예: 4 KB)보다 크게 설정될 수 있다. 여기서, 매핑 테이블(260)의 유닛 사이즈는 복수의 엔트리(320) 각각에 대응하는 비휘발성 스토리지 장치(140)의 사이즈를 지시할 수 있다. 또는, 매핑 테이블(260)의 유닛 사이즈는 비휘발성 스토리지 장치(140)의 복수의 페이지 번호(BPN)(310) 간의 간격에 해당하는 사이즈를 지시할 수 있다. 일 실시예에 의하면, 매핑 테이블(260)의 유닛 사이즈는 페이지 단위에 m을 곱한 값일 수 있고, 여기서 m은 자연수(m = 1, 2, 3 ??)이다. 다른 실시예에 의하면, 매핑 테이블(260)의 유닛 사이즈는 페이지 단위에 2의 n승을 곱한 값일 수 있고, 여기서 n은 자연수(n = 1, 2, 3 ??)이다. 예를 들어, 유닛 사이즈는 64 KB일 수 있다.
일 실시예에 의하면, 리드 비트맵(322) 및 라이트 비트맵(324)은 소정 수의 비트로 구성될 수 있다. 일 예로서, 복수의 엔트리(320) 각각의 사이즈가 4 Byte이고, 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)가 28 bit로 구성된 경우, 리드 비트맵(322) 및 라이트 비트맵(324)은 각각 2 bit로 구성될 수 있다. 다른 예로서, 복수의 엔트리(320) 각각의 사이즈가 8 Byte이고, 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)가 4 Byte로 구성된 경우, 리드 비트맵(322) 및 라이트 비트맵(324)은 각각 2 Byte로 구성될 수 있다.
본 개시에 따른 리드 비트맵(322)은 m개의 비트로 구성되고, 라이트 비트맵(324)은 n개의 비트로 구성될 수 있다. 여기서, m과 n은 같은 값일 수도 있으나 다른 값일 수도 있다. 일 실시예에 의하면, 읽기를 수행하는 데이터 단위와 쓰기를 수행하는 데이터 단위가 다르게 설정될 경우, m과 n은 서로 다른 값을 가질 수 있다. 예를 들어, 매핑 테이블의 유닛 사이즈가 64 K인 경우, 읽기와 쓰기가 각각 16 K 및 4 K 단위로 수행하도록 설정된 경우, 리드 비트맵(322)과 라이트 비트맵(324)은 각각 4개의 비트 및 16개의 비트로 구성될 수 있다. 이와 같이, 읽기를 수행하는 데이터 단위를 상대적으로 크게 설정함으로써 리드 비트맵(322)의 사이즈를 줄일 수 있다. 본 개시는 상기 예와 같이 리드 비트맵(322)의 사이즈를 줄이는 것에 한정되는 것은 아니며, 라이트 비트맵(324)의 사이즈를 줄이는 것도 가능하다.
리드 비트맵(322)에 있어서, 최하위 비트(LSB)로부터 x번째 비트(0≤x≤m-1)가 셋(set) 된 것은 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)에서 x번째 오프셋 위치에 있는 데이터가 읽기 처리된 것을 의미할 수 있다. 이와 유사하게, 라이트 비트맵(324)에 있어서, 최하위 비트(LSB)로부터 x번째 비트(0≤x≤n-1)가 셋 된 것은 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)에서 x번째 오프셋 위치에 있는 데이터가 쓰기 처리된 것을 의미할 수 있다. 여기서, 소정 비트가 셋 된 것은 해당 비트의 값이 '1'인 것을 의미할 수 있고, 소정 비트가 클리어(clear) 된 것은 해당 비트의 값이 '0'인 것을 의미할 수 있다.
도 3을 참조하면, 매핑 테이블(260)의 리드 비트맵(322) 및 라이트 비트맵(324)이 각각 2 Byte로 구성된다. 제1 엔트리(330)는 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)(310)가 '0'인 어드레스 또는 어드레스 범위가 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)가 '3'인 어드레스 또는 어드레스 범위에 대응됨을 의미할 수 있다. 또한, 제1 엔트리(330)의 리드 비트맵 및 라이트 비트맵과 관련하여, 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)가 '3'인 어드레스에서 0번째 오프셋 위치에 있는 데이터가 읽기 처리되었고, 0번째 및 3번째 오프셋 위치에 있는 데이터가 쓰기 처리되었음을 의미할 수 있다. 제2 엔트리(340)는 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)(310)가 '1'인 어드레스 또는 어드레스 범위가 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)가 '0'인 어드레스 또는 어드레스 범위에 대응됨을 의미할 수 있다. 또한, 제2 엔트리(340)의 리드 비트맵 및 라이트 비트맵과 관련하여, 휘발성 메모리 장치(132)의 페이지 번호(BPN)(326)가 '0'인 어드레스에서 2번째 및 5번째 오프셋 위치에 있는 데이터가 읽기 처리되었고, 2번째 및 3번째 오프셋 위치에 있는 데이터가 쓰기 처리되었음을 의미할 수 있다.
도 4는 본 개시의 일 실시예에 따른 컨트롤러(240)가 매핑 테이블(260)을 이용하여 데이터 접근과 관련된 명령을 처리하는 과정을 나타낸 순서도이다.
컨트롤러(240)는 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋을 산출한다(S410). 일 실시예에 의하면, 컨트롤러(240)는 호스트 프로세서(110)로부터 수신되는 데이터 접근과 관련된 명령에 포함된 어드레스를 기초로 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋을 계산한다. 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)는 데이터 접근과 관련된 명령에 포함된 어드레스를 매핑 테이블(260)의 유닛 사이즈로 나눈 몫과 관련될 수 있다. 또한, 비트맵 오프셋은 데이터 접근과 관련된 명령에 포함된 어드레스를 매핑 테이블(260)의 유닛 사이즈로 나눈 나머지와 관련될 수 있다. 예를 들어, 비트맵 오프셋은 데이터 접근과 관련된 명령에 포함된 어드레스를 매핑 테이블(260)의 유닛 사이즈로 나눈 나머지를 최소 매핑 유닛 사이즈(예: 4 KB)로 나눈 값일 수 있다.
다음으로, 컨트롤러(240)는 캐싱 유무를 판단한다(S420). 일 실시예에 의하면, 컨트롤러(240)는 매핑 테이블(260)을 이용하여 산출된 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋에 대응하는 소정의 데이터가 휘발성 메모리 장치(132)에 캐싱되어 있는지 여부를 판단할 수 있다. 만약 판단 단계(S420)에서 해당 데이터가 휘발성 메모리 장치(132)에 캐싱되어 있지 않다고 판단한 경우, 컨트롤러(240)는 산출된 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋에 해당하는 블록 스토리지를 읽어와서 휘발성 메모리 장치(132)에 캐싱할 수 있다(S430). 또한, 컨트롤러(240)는 비트맵 오프셋에 해당하는 리드 비트맵을 셋 할 수 있다(S440). 만약 판단 단계(S420)에서 해당 데이터가 휘발성 메모리 장치(132)에 캐싱되어 있다고 판단한 경우, 컨트롤러(240)는 비트맵이 셋되어 있지 않은 경우인지 여부를 판단한다(S450). 만약 비트맵이 셋 되어 있다면(S450-no), 데이터 접근과 관련된 명령에 대한 판단 단계(S460)로 진행된다. 만약 비트맵이 셋 되어 있지 않다면(S450-yes), 비트맵 오프셋에 해당하는 리드 비트맵을 셋 하고(S440), 상기 판단 단계(S460)로 진행된다.
다음으로, 컨트롤러(240)는 데이터 접근과 관련된 명령이 읽기 명령인지 쓰기 명령인지 판단한다(S460). 만약 판단 단계(S460)에서 읽기 명령이라고 판단한 경우, 컨트롤러(240)는 휘발성 메모리 장치(132)에서 읽어온다(S470). 일 실시예에 의하면, 컨트롤러(240)는 휘발성 메모리 장치(132)에 캐싱된 데이터를 읽고 호스트 프로세서(110)로 전송할 수 있다. 만약 판단 단계(S460)에서 쓰기 명령이라고 판단한 경우, 컨트롤러(240)는 비트맵 오프셋에 해당하는 라이트 비트맵을 셋 한다(S480). 다음으로, 컨트롤러(240)는 휘발성 메모리 장치(132)에 쓴다(S490). 일 실시예에 의하면, 컨트롤러(240)는 쓰기 명령에 기초하여 휘발성 메모리 장치(132)에 캐싱된 데이터를 갱신할 수 있다.
도 5는 본 개시의 일 실시예에 따른 컨트롤러(240)가 비휘발성 스토리지 장치(140)에 저장된 데이터를 읽기 처리하는 과정을 개념적으로 나타낸 도면이다. 도 5에 의한 처리 과정은 도 4의 단계 S410, S420, S430, S440, S460, S470와 적어도 일부 관련될 수 있다.
컨트롤러(240)는 매핑 테이블(260)을 확인한다(S510). 컨트롤러(240)는 호스트 프로세서(110)로부터의 읽기 명령에 포함된 어드레스 정보에 기초하여, 매핑 테이블(260)을 확인할 수 있다. 매핑 테이블(260)의 확인 결과, 컨트롤러(240)는 해당 데이터가 휘발성 메모리 장치(132)에 캐싱되어 있지 않다고 판단할 수 있다.
컨트롤러(240)는 블록 스토리지를 읽을 수 있다(S520). 컨트롤러(240)는 읽기 명령에 포함된 어드레스로부터 산출된 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋에 대응하는 데이터를 비휘발성 스토리지 장치(140)에서 읽을 수 있다. 또한, 컨트롤러(240)는 비휘발성 스토리지 장치(140)에서 읽은 데이터를 휘발성 메모리 장치(132)에 캐싱할 수 있다(S530). 컨트롤러(240)는 비트맵 오프셋에 해당하는 리드 비트맵을 셋하여 데이터가 캐싱되어 있음을 표현할 수 있다. 다음으로, 컨트롤러(240)는 휘발성 메모리 장치(132)에서 캐싱한 데이터를 호스트 프로세서(110)로 전달할 수 있다(S540).
도 6은 본 개시의 일 실시예에 따라 데이터 접근과 관련된 명령에 따른 매핑 테이블(260) 및 휘발성 메모리 장치(132)의 변경사항을 예시적으로 나타낸 도면이다. 도 6에서는 매핑 테이블(260)의 유닛 사이즈가 64 KB로 설정된 것과, 최소 매핑 유닛 사이즈가 4 KB인 것을 가정한다.
전자 장치(130)는 호스트 프로세서(110)로부터 제1 명령(610), 제2 명령(620) 및 제3 명령(630)을 순차적으로 수신한다. 제1 명령(610)은 쓰기 명령이고 어드레스와 데이터는 각각 0 K와 'AB'이다. 전자 장치(130)의 컨트롤러(240)는 0 K의 어드레스로부터 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋을 산출한다. 예를 들어, 컨트롤러(240)는 0 K를 매핑 테이블(260)의 유닛 사이즈인 64 K로 나눈 몫인 0을 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)로 결정하고, 0 K를 매핑 테이블(260)의 유닛 사이즈인 64 K로 나눈 나머지인 0을 비트맵 오프셋으로 결정할 수 있다.
컨트롤러(240)는 매핑 테이블(260)을 이용하여 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋에 해당하는 데이터가 휘발성 메모리 장치(132)에 캐싱되어 있지 않다고 판단한다. 이러한 판단에 따라, 컨트롤러(240)는 비휘발성 스토리지 장치(140)에서 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)와 비트맵 오프셋이 각각 0인 데이터를 읽어와서 휘발성 메모리 장치(132)에서 페이지 번호(DPN)와 비트맵 오프셋이 각각 3과 0인 영역에 캐싱한다. 컨트롤러(240)는 매핑 테이블(260)에서 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)가 0인 엔트리에 휘발성 메모리 장치(132)의 페이지 번호(DPN)를 3으로 업데이트한다. 또한, 비트맵 오프셋이 0이므로, 컨트롤러(240)는 리드 비트맵의 최하위 비트(LSB)를 셋 한다. 또한, 컨트롤러(240)는 휘발성 메모리 장치(132)에 캐싱되어 있는 해당 데이터를 'AB'로 갱신하고, 라이트 비트맵의 최하위 비트(LSB)를 셋 한다.
제2 명령(620)은 읽기 명령이고 어드레스는 4 K이다. 전자 장치(130)의 컨트롤러(240)는 4 K의 어드레스로부터 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋을 산출한다. 예를 들어, 컨트롤러(240)는 4 K를 매핑 테이블(260)의 유닛 사이즈인 64 K로 나눈 몫인 0을 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)로 결정할 수 있다. 또한, 컨트롤러(240)는 4 K를 매핑 테이블(260)의 유닛 사이즈인 64 K로 나눈 나머지인 4 K를 최소 매핑 유닛 사이즈인 4 K로 나눈 값인 1을 비트맵 오프셋으로 결정할 수 있다.
컨트롤러(240)는 매핑 테이블(260)을 이용하여 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋에 해당하는 데이터가 휘발성 메모리 장치(132)에 캐싱되어 있지 않다고 판단한다. 이러한 판단에 따라, 컨트롤러(240)는 비휘발성 스토리지 장치(140)에서 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)와 비트맵 오프셋이 각각 0과 1인 데이터 'XX'를 읽어와서 휘발성 메모리 장치(132)에서 페이지 번호(DPN)와 비트맵 오프셋이 각각 3과 1인 영역에 캐싱한다. 비트맵 오프셋이 1이므로, 컨트롤러(240)는 리드 비트맵의 최하위 비트(LSB)로부터 1번째 비트를 셋 한다.
제3 명령(630)은 쓰기 명령이고 어드레스와 데이터는 각각 68 K와 'CD'이다. 전자 장치(130)의 컨트롤러(240)는 68 K의 어드레스로부터 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋을 산출한다. 예를 들어, 컨트롤러(240)는 68 K를 매핑 테이블(260)의 유닛 사이즈인 64 K로 나눈 몫인 1을 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)로 결정할 수 있다. 또한, 컨트롤러(240)는 68 K를 매핑 테이블(260)의 유닛 사이즈인 64 K로 나눈 나머지인 4 K를 최소 매핑 유닛 사이즈인 4 K로 나눈 값인 1을 비트맵 오프셋으로 결정할 수 있다.
컨트롤러(240)는 매핑 테이블(260)을 이용하여 비휘발성 스토리지 장치(140)의 페이지 번호(BPN) 및 비트맵 오프셋에 해당하는 데이터가 휘발성 메모리 장치(132)의 페이지 번호(DPN) 0에 캐싱되어 있다고 판단한다. 예를 들어, 컨트롤러(240)는 비트맵이 셋되어 있지 않다고 판단하고 리드 비트맵의 최하위 비트(LSB)에서 1번째 비트를 셋한다. 또한, 컨트롤러(240)는 휘발성 메모리 장치(132)의 해당 데이터를 'CD'로 갱신하고, 라이트 비트맵의 최하위 비트(LSB)에서 1번째 비트를 셋 한다.
도 7은 본 개시의 일 실시예에 따른 컨트롤러(240)가 플러시 명령을 처리하는 과정을 나타낸 순서도이다.
컨트롤러(240)는 빅팀이 될 데이터를 선택한다(S710). 일 실시예에 의하면, 호스트 프로세서(110)는 플러시(flush) 명령을 발행할 수 있다. 다른 실시예에 의하면, 컨트롤러(240)는 자체적으로 플러시 명령을 발생시킬 수 있다. 컨트롤러(240)는 플러시 명령에 응답하여, 매핑 테이블(260)을 이용하여 빅팀이 될 데이터를 선택할 수 있다. 이를 위하여, 컨트롤러(240)는 매핑 테이블(260)에서 라이트 비트맵이 셋된 데이터를 식별할 수 있다. 예를 들어, 도 6의 제3 명령(630)이 처리된 매핑 테이블(260)에서 휘발성 메모리 장치(132)의 페이지 번호(DPN)가 3이고 비트맵 오프셋이 0인 데이터와 휘발성 메모리 장치(132)의 페이지 번호(DPN)가 0이고 비트맵 오프셋이 각각 0, 1, 3인 데이터가 빅팀이 될 데이터로 식별될 수 있다.
다음으로, 컨트롤러(240)는 라이트 비트맵이 셋된 데이터를 비휘발성 스토리지 장치(140)에 쓴다(S720). 일 실시예에 의하면, 컨트롤러(240)는 매핑 테이블(260)에서 라이트 비트맵이 셋된 데이터만 비휘발성 스토리지 장치(140)에 쓰고, 라이트 비트맵이 클리어된 데이터는 비휘발성 스토리지 장치(140)에 쓰지 않을 수 있다. 예를 들어, 컨트롤러(240)는 도 6의 제3 명령(630)이 처리된 매핑 테이블(260)에서 휘발성 메모리 장치(132)의 페이지 번호(DPN)가 3이고 비트맵 오프셋이 0인 데이터를 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)가 0이고 비트맵 오프셋이 0인 블록 영역에 쓸 수 있다. 또한, 컨트롤러(240)는 도 6의 제3 명령(630)이 처리된 매핑 테이블(260)에서 휘발성 메모리 장치(132)의 페이지 번호(DPN)가 0이고 비트맵 오프셋이 각각 0, 1, 3인 데이터를 각각 비휘발성 스토리지 장치(140)의 페이지 번호(BPN)가 1이고 비트맵 오프셋이 각각 0, 1, 3인 블록 영역에 쓸 수 있다.
도 8은 본 개시의 일 실시예에 따른 컨트롤러(240)가 휘발성 메모리 장치(132)에 저장된 데이터를 플러시 처리하는 과정을 개념적으로 나타낸 도면이다. 도 8에 의한 처리 과정은 도 7의 단계들과 관련될 수 있다.
컨트롤러(240)는 매핑 테이블(260)을 확인한다(S810). 컨트롤러(240)는 호스트 프로세서(110)로부터 수신한 플러시 명령 또는 컨트롤러(240) 자체적으로 발생시킨 플러시 명령에 따라 매핑 테이블(260)을 확인할 수 있다. 매핑 테이블(260)의 확인 결과, 컨트롤러(240)는 빅팀이 될 데이터를 결정할 수 있다. 일 실시예에 의하면, 빅팀이 될 데이터는 매핑 테이블(260)에서 라이트 비트맵이 셋된 데이터일 수 있다.
컨트롤러(240)는 라이트 비트맵이 셋된 데이터만 비휘발성 스토리지 장치(140)에 쓸 수 있다(S820). 컨트롤러(240)는 매핑 테이블(260)에서 라이트 비트맵이 셋된 데이터만 비휘발성 스토리지 장치(140)에 쓰고, 라이트 비트맵이 클리어된 데이터는 비휘발성 스토리지 장치(140)에 쓰지 않을 수 있다.
본 개시에 따른 방법들은 컴퓨터로 구현된 방법들일 수 있다. 본 개시에서, 해당 방법들의 각 단계가 소정의 순서대로 도시되고 설명되었지만, 각 단계들은 순차적으로 수행되는 것 이외에, 본 개시에 따라 임의로 조합될 수 있는 순서로 수행될 수도 있다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 본 개시는 해당 방법들에 변화 또는 수정을 가하는 것을 제외하지 않는다. 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
도 9는 본 개시의 일 실시예에 따른 매핑 구조에 따른 기술적 효과를 설명하기 위한 테이블(900)이다.
도 9를 참조하여, 본 개시에 따른 매핑 방식과 다른 매핑 방식들 간의 차이에 대해 설명한다. 여기서, 다른 매핑 방식들은 종래의 매핑 방식일 수 있다. 도 9에서는 휘발성 메모리 장치(132)의 사이즈가 128 GB이고, 비휘발성 스토리지 장치(140)의 사이즈가 64 TB인 경우를 가정한다.
4K 매핑은 일반적인 페이지 크기인 4 KB 단위에 기초한 다이렉트 매핑 테이블을 이용한 방식이다. 4K 매핑 방식의 경우, 1회 휘발성 메모리 장치(132)의 접근을 통해 데이터를 바로 찾을 수 있어 알고리즘 복잡도가 O(1)이다. 그러나, 매핑 테이블의 사이즈가 매우 증가하여 비휘발성 스토리지 장치(140)의 용량의 약 1/1,000이 메타데이터로 소요될 수 있다. 예를 들어, 64 TB의 블록 스토리지를 매핑하는 경우 매핑 테이블 사이즈가 64 GB가 필요하므로, 최소 64 GB 이상의 휘발성 메모리 장치(132)가 있어야 캐시 운영이 가능할 수 있다.
만약 매핑 유닛 사이즈를 키운다면, 예를 들어, 64K 매핑 방식을 채용한다면, 매핑 테이블 사이즈는 4K 매핑 방식에 비해 1/16로 줄어들 수 있다. 그러나, 64K 매핑 방식의 경우, 매핑 사이즈보다 작은 쓰기 처리와 읽기 처리를 하게 되므로, 라이트/리드 앰플리케이션이 최대 16배 증가한다는 단점이 있다. 그 결과, 비휘발성 스토리지 장치(140)의 수명이 저하될 수 있다.
비휘발성 스토리지 장치(140)의 사이즈만큼의 매핑 테이블을 가지지 않고, 실제로 매핑이 이루어지는 휘발성 메모리 장치(132)의 사이즈만큼만 매핑을 유지하기 위해서 트리 방식을 채용할 수 있다. 이 경우, 매핑 사이즈는 감소할 수 있다. 그러나, 최악의 경우 트리의 뎁스만큼 휘발성 메모리 장치(132)로의 접근을 통해 데이터를 찾아야 하기 때문에, 실제 원하는 데이터에 접근하는데 필요한 지연이 증가하는 문제가 있다.
본 개시에서는 기본적으로 가장 빠르게 데이터의 위치를 찾기 위해, 트리 방식이 아닌 매핑 테이블 방식을 채용한다. 매핑 테이블의 사이즈를 감소시키기 위해서는 매핑 유닛 사이즈를 키워야 한다. 하지만, 매핑 유닛 사이즈를 키웠을 때 라이트/리드 앰플리케이션이 증가되는 문제가 발생할 수 있으나, 본 개시에 따른 실시예에서는 라이트/리드 앰플리케이션이 증가되는 것을 방지하기 위해 매핑 정보와 최소의 컨텍스트가 결합된 형태의 매핑을 제안한다.
본 개시의 일 실시예에서는 매핑 테이블의 엔트리에 휘발성 메모리 장치(132)의 페이지 번호(DPN)의 여유 공간이나, 혹은 추가적인 공간에 라이트 비트맵 및 리드 비트맵을 추가하고 매핑 유닛 사이즈를 높인다. 쓰기 또는 읽기 수행 시 비트맵을 활용하여 최소 매핑 유닛으로 동작하여 라이트/리드 앰플리케이션 비용을 최소화할 수 있다. 본 개시에 따른 방식은 다른 방식들에 비해 성능은 가장 빠르고, 매핑 유닛 사이즈는 키웠기 때문에 매핑 테이블 사이즈도 감소하였고, 실제 비휘발성 스토리지 장치(140)에 쓰기 또는 읽기 처리는 최소 매핑 유닛 단위로 하기 때문에 라이트/리드 앰플리케이션이 증가되지 않는다. 다시 말해, 본 개시의 다양한 실시예에 따른 매핑 방식은 매핑 테이블 사이즈, 알고리즘 복잡도, 및 라이트/리드 앰플리케이션에 대한 요구조건들을 모두 충족할 수 있는 방식일 수 있다.
도 10은 본 개시의 일 실시예에 따른 컨트롤러(240)의 블록도이다.
도 10에 도시된 바와 같이, 컨트롤러(240)는 어드레스 리매퍼(address remapper)(1010) 및 메모리 변환 컨트롤러(memory translation controller)(1020)를 포함할 수 있다. 컨트롤러(240)는 호스트 프로세서(110)로부터 제1 통신 포트(220)를 통해 어드레스 정보를 포함하는 읽기 또는 쓰기 명령을 수신할 수 있다. 어드레스 리매퍼(1010)는 매핑 테이블(260)에 기초하여 상기 명령에 포함된 바이트 단위의 어드레스가 대응하는 데이터가 휘발성 메모리 장치(132)에 캐싱되어 있는지 여부를 판정할 수 있다.
상기 데이터가 휘발성 메모리 장치(132)에 캐싱되어 있다고 판정할 경우, 어드레스 리매퍼(1010)는 바이트 단위의 어드레스를 휘발성 메모리 장치(132)의 물리적 어드레스(또는, 휘발성 메모리 어드레스)로 변환할 수 있다. 어드레스 리매퍼(1010)는 변환된 어드레스를 호스트 프로세서(110)에 전달하여 호스트 프로세서(110)가 휘발성 메모리 장치(132)의 데이터에 접근할 수 있도록 한다. 상기 데이터가 휘발성 메모리 장치(132)에 저장되어 없다고 판정할 경우, 어드레스 리매퍼(1010)는 호스트 프로세서(110)로부터 수신한 바이트 단위의 어드레스 정보를 메모리 변환 컨트롤러(1030)에 보낼 수 있다.
메모리 변환 컨트롤러(1020)는 어드레스 리매퍼(1010)가 이용하는 매핑 테이블(260)을 생성하거나 관리할 수 있다. 휘발성 메모리 장치(132)의 일 영역에 저장될 수 있다. 메모리 변환 컨트롤러(1020)는 휘발성 메모리 장치(132)와 비휘발성 스토리지 장치(140) 사이의 메모리 변환 동작을 결정하고 실행할 수 있다. 메모리 변환 컨트롤러(1020)는 이러한 메모리 변환 동작에 따라 매핑 테이블(260)을 갱신할 수 있다. 갱신된 매핑 테이블(260)은 어드레스 리매퍼(1010)가 이용할 수 있다.
메모리 변환 컨트롤러(1020)는 비휘발성 스토리지 장치(140)에 저장된 소정의 데이터를 휘발성 메모리 장치(132)로 캐싱할지 여부를 판단할 수 있다. 일 실시예에 의하면, 메모리 변환 컨트롤러(1020)는 비휘발성 스토리지 장치(140)에 저장된 데이터 중 호스트 프로세서(110)의 호출이 예상되는 데이터를 휘발성 메모리 장치(132)에 가져오는 것으로 판단할 수 있다. 예를 들어, 호출이 예상되는 데이터는 사용 빈도가 임계값보다 높은 워킹 세트와 관련될 수 있다. 메모리 변환 컨트롤러(1020)는 비휘발성 스토리지 장치(140)에서 데이터를 읽어와서 휘발성 메모리 장치(132)에 저장할 수 있다. 이 경우, 메모리 변환 컨트롤러(1020)는 데이터가 위치하였던 비휘발성 스토리지 장치(140)의 블록 어드레스와 데이터가 저장되는 휘발성 메모리 장치(132)의 바이트 어드레스를 연관지어 매핑 테이블(260)에 저장할 수 있다.
메모리 변환 컨트롤러(1020)는 휘발성 메모리 장치(132)에 캐싱된 소정의 데이터를 비휘발성 스토리지 장치(140)로 보내거나 복사할지 여부를 판단할 수 있다. 일 실시예에 의하면, 메모리 변환 컨트롤러(1020)는 휘발성 메모리 장치(132)에 저장된 데이터 중 호스트 프로세서(110)의 호출이 예상되지 않는 데이터를 비휘발성 스토리지 장치(140)로 보내는 것으로 판단할 수 있다. 예를 들어, 호출이 예상되지 않는 데이터는 사용 빈도가 임계값보다 낮은 데이터 세트와 관련될 수 있다. 메모리 변환 컨트롤러(1020)는 비휘발성 스토리지 장치(140)로 보내진 데이터를 휘발성 메모리 장치(132)에서 삭제할 수 있다. 이 경우, 메모리 변환 컨트롤러(1020)는 매핑 테이블(260)에서 서로 연관되어 저장되어 있던 비휘발성 스토리지 장치(140)의 블록 어드레스와 휘발성 메모리 장치(132)의 바이트 어드레스를 삭제할 수 있다.
본 개시에 따른 컨트롤러(240)는 메모리 매니저(memory manager)(1030) 및 스토리지 컨트롤러(storage controller)(1040)를 더 포함할 수 있다. 메모리 매니저(1030)는 메모리 변환 동작을 위해 필요한 휘발성 메모리를 할당해 줄 수 있다. 메모리 매니저(1030)는 휘발성 메모리 장치(132)에 비어 있는 공간을 확보할 수 있다. 일 실시예에 의하면, 메모리 변환 컨트롤러(1020)가 비휘발성 스토리지 장치(140)에 저장된 소정의 데이터를 휘발성 메모리 장치(132)로 가져오는 것으로 판단하는 것에 응답하여, 메모리 매니저(1030)는 휘발성 메모리 장치(132)에서 블록 사이즈만큼의 빈 공간을 할당할 수 있다.
스토리지 컨트롤러(1040)는 메모리 변환 컨트롤러(1020)의 결정에 따라 비휘발성 스토리지 장치(140)를 구동하여 블록 단위로 어드레스를 지정하여 데이터 읽기 또는 쓰기를 수행할 수 있다. 일 실시예에 의하면, 메모리 변환 컨트롤러(1020)가 비휘발성 스토리지 장치(140)에 저장된 소정의 데이터를 휘발성 메모리 장치(132)로 가져오는 것으로 판단하고 메모리 매니저(1030)가 휘발성 메모리 장치(132)에서 블록 사이즈만큼의 빈 공간을 할당한 것에 응답하여, 스토리지 컨트롤러(1040)는 비휘발성 스토리지 장치(140)를 구동하여 비휘발성 스토리지 장치(140)로부터 블록 데이터를 읽어올 수 있다.
본 개시에 따른 컨트롤러(240)는 캐시 메모리(cache memory)(1060) 및 메모리 컨트롤러(memory controller)(1050)를 더 포함할 수 있다. 캐시 메모리(1060)는 접근한 적이 있거나 접근이 예상되는 데이터를 저장할 수 있다. 일 실시예에 의하면, 캐시 메모리(1060)는 SRAM으로 구현될 수 있다. 컨트롤러(240)는 캐시 메모리(1060)를 더 포함함으로써 성능 향상, 특히 읽기와 쓰기 속도의 향상을 달성할 수 있다. 메모리 컨트롤러(1050)는 휘발성 메모리 장치(132) 및 캐시 메모리(1060)와 연결될 수 있다.
도 10에 도시된 어드레스 리매퍼(1010), 메모리 변환 컨트롤러(1020), 메모리 매니저(1030), 스토리지 컨트롤러(1040) 및 메모리 컨트롤러(1050)는 각각 하드웨어 장치 혹은 소프트웨어 코드로 구현될 수 있다. 일 실시예에 의하면, 어드레스 리매퍼(1010)는 하드웨어 장치로 구현되고, 그 외 구성은 소프트웨어 코드로 구현될 수 있다. 다른 실시예에 의하면, 어드레스 리매퍼(1010) 및 메모리 변환 컨트롤러(1020)는 하드웨어 장치로 구현되고, 그 외 구성은 소프트웨어 코드로 구현될 수 있다. 또한, 도 10는 컨트롤러(240)의 구성들을 예시적으로 나타낸 것이며, 본 개시는 이에 한정되지 않는다. 예를 들어, 도 10에 도시된 구성들 중 일부 구성이 생략되거나 특정 구성의 기능이 다른 구성에 포함되도록 구현될 수 있다.
본 개시의 다양한 실시예들은 기기(machine)가 읽을 수 있는 기록 매체(machine-readable recording medium)에 기록된 소프트웨어로 구현될 수 있다. 소프트웨어는 상술한 본 개시의 다양한 실시예들을 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예들로부터 추론될 수 있다. 예를 들어 소프트웨어는 기기가 읽을 수 있는 명령(예: 코드 또는 코드 세그먼트) 또는 프로그램일 수 있다. 기기는 기록 매체로부터 호출된 명령어에 따라 동작이 가능한 장치로서, 예를 들어 컴퓨터일 수 있다. 일 실시예에서, 기기는 본 개시의 실시예들에 따른 호스트 프로세서(110), 전자 장치(130) 내지 이를 포함하는 컴퓨팅 시스템(100)일 수 있다. 일 실시예에서, 기기의 프로세서는 호출된 명령을 실행하여, 기기의 구성요소들이 해당 명령에 해당하는 기능을 수행하게 할 수 있다. 기록 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체(recording medium)를 의미할 수 있다. 기록 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등을 포함할 수 있다. 일 실시예에서, 기록 매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수도 있다. 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 기록 매체는 비일시적(non-transitory) 기록 매체일 수 있다. 비일시적 기록 매체는, 데이터가 반영구적 또는 임시적으로 저장되는 것과 무관하게 실재하는 매체(tangible medium)를 의미하며, 일시적(transitory)으로 전파되는 신호(signal)를 포함하지 않는다.
이상 다양한 실시예들에 의해 본 개시의 기술적 사상이 설명되었지만, 본 개시의 기술적 사상은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다. 본 개시에 따른 실시예들은 서로 조합될 수 있다. 각 실시예들은 경우의 수에 따라 다양하게 조합될 수 있으며, 조합되어 만들어진 실시예 역시 본 개시의 범위에 속한다.

Claims (15)

  1. 바이트 어드레서블(byte-addressable) 전자 장치로서,
    휘발성(volatile) 메모리 장치;
    비휘발성(non-volatile) 스토리지 장치의 어드레스 정보에 대응하는 상기 휘발성 메모리 장치의 어드레스 정보, 및 상기 휘발성 메모리 장치의 어드레스 정보와 관련하여 데이터 접근과 관련된 명령이 처리되었는지 여부를 지시하는 정보를 저장하는 매핑 테이블; 및
    호스트 프로세서, 상기 휘발성 메모리 장치, 및 상기 비휘발성 스토리지 장치와 연결되고, 상기 매핑 테이블을 기초로 상기 호스트 프로세서로부터 수신되는 데이터 접근과 관련된 명령을 처리하도록 구성된 컨트롤러
    를 포함하고,
    상기 매핑 테이블은,
    상기 비휘발성 스토리지 장치의 복수의 페이지 번호에 각각 대응하는 복수의 엔트리를 포함하고,
    상기 복수의 엔트리 각각은,
    상기 비휘발성 스토리지 장치의 소정의 페이지 번호에 대응하는 상기 휘발성 메모리 장치의 페이지 번호;
    상기 휘발성 메모리 장치의 페이지 번호의 특정 오프셋 위치의 데이터가 읽기 처리되었는지 여부를 지시하는 리드 비트맵(read bitmap); 및
    상기 휘발성 메모리 장치의 페이지 번호의 특정 오프셋 위치의 데이터가 쓰기 처리되었는지 여부를 지시하는 라이트 비트맵(write bitmap)
    을 포함하는, 전자 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 복수의 엔트리 각각의 사이즈는 상기 호스트 프로세서가 상기 휘발성 메모리 장치를 1회 접근하는 단위와 동일한, 전자 장치.
  4. 제1항에 있어서,
    상기 매핑 테이블의 유닛 사이즈는 페이지 단위에 m을 곱한 값이고, m은 자연수인, 전자 장치.
  5. 제1항에 있어서,
    상기 리드 비트맵은 m개의 비트로 구성되고,
    상기 리드 비트맵에 있어서, 최하위 비트(LSB)로부터 x번째 비트(0≤x≤m-1)가 셋(set) 된 것은 상기 휘발성 메모리 장치의 페이지 번호에서 x번째 오프셋 위치에 있는 데이터가 읽기 처리된 것을 의미하고,
    상기 라이트 비트맵은 n개의 비트로 구성되고,
    상기 라이트 비트맵에 있어서, 최하위 비트(LSB)로부터 x번째 비트(0≤x≤n-1)가 셋 된 것은 상기 휘발성 메모리 장치의 페이지 번호에서 x번째 오프셋 위치에 있는 데이터가 쓰기 처리된 것을 의미하는, 전자 장치.
  6. 제1항에 있어서,
    상기 복수의 엔트리 각각의 사이즈는 4 Byte 또는 8 Byte이고,
    상기 매핑 테이블의 유닛 사이즈는 64 KB인, 전자 장치.
  7. 제1항에 있어서,
    상기 컨트롤러는,
    상기 명령에 포함된 어드레스를 기초로, 상기 비휘발성 스토리지 장치의 페이지 번호 및 비트맵 오프셋을 산출하고, 상기 매핑 테이블을 이용하여 상기 산출된 페이지 번호 및 비트맵 오프셋에 대응하는 소정의 데이터가 상기 휘발성 메모리 장치에 캐싱되어 있는지 여부를 판단하도록 더 구성되고,
    상기 비휘발성 스토리지 장치의 상기 산출된 페이지 번호는 상기 명령에 포함된 어드레스를 상기 매핑 테이블의 유닛 사이즈로 나눈 몫과 관련되고,
    상기 산출된 비트맵 오프셋은 상기 명령에 포함된 어드레스를 상기 매핑 테이블의 유닛 사이즈로 나눈 나머지와 관련된, 전자 장치.
  8. 제7항에 있어서,
    상기 명령은 읽기 명령이고,
    상기 컨트롤러는 상기 소정의 데이터가 상기 휘발성 메모리 장치에 캐싱되어 있다고 판단하는 것에 응답하여, 상기 캐싱된 소정의 데이터를 상기 호스트 프로세서로 전송하도록 더 구성된, 전자 장치.
  9. 제7항에 있어서,
    상기 명령은 쓰기 명령이고,
    상기 컨트롤러는 상기 소정의 데이터가 상기 휘발성 메모리 장치에 캐싱되어 있다고 판단하는 것에 응답하여, 상기 쓰기 명령에 기초하여 상기 캐싱된 소정의 데이터를 갱신하고 상기 갱신된 소정의 데이터에 대응하는 라이트 비트맵을 셋(set) 하도록 더 구성된, 전자 장치.
  10. 제7항에 있어서,
    상기 컨트롤러는,
    상기 소정의 데이터가 상기 휘발성 메모리 장치에 캐싱되어 있지 않다고 판단하는 것에 응답하여, 상기 비휘발성 스토리지 장치에서 상기 산출된 페이지 번호 및 비트맵 오프셋에 대응하는 데이터를 상기 휘발성 메모리 장치에 캐싱하고 상기 캐싱된 데이터에 대응하는 리드 비트맵을 셋 하도록 더 구성된, 전자 장치.
  11. 제1항에 있어서,
    상기 컨트롤러는,
    플러시 명령에 응답하여, 상기 매핑 테이블에서 상기 라이트 비트맵이 셋된 데이터를 식별하고,
    상기 식별된 데이터를 상기 비휘발성 스토리지 장치에 쓰도록 더 구성된, 전자 장치.
  12. 제1항에 있어서,
    상기 컨트롤러는,
    상기 매핑 테이블에 기초하여 상기 명령에 포함된 어드레스에 대응하는 데이터가 상기 휘발성 메모리 장치에 캐싱되어 있는지 여부를 판정하고, 상기 매핑 테이블을 사용하여 상기 어드레스를 상기 휘발성 메모리 장치의 어드레스로 변환하도록 구성된 어드레스 리매퍼(address remapper); 및
    상기 매핑 테이블을 관리하도록 구성된 메모리 변환 컨트롤러(memory translation controller)
    를 포함하는, 전자 장치.
  13. 제1항에 있어서,
    상기 매핑 테이블은 상기 휘발성 메모리 장치에 저장된, 전자 장치.
  14. 컴퓨팅 시스템에 있어서,
    호스트 프로세서;
    바이트 어드레서블 전자 장치; 및
    비휘발성 스토리지 장치를 포함하고,
    상기 바이트 어드레서블 전자 장치는,
    휘발성 메모리 장치;
    상기 비휘발성 스토리지 장치의 어드레스 정보에 대응하는 상기 휘발성 메모리 장치의 어드레스 정보, 및 상기 휘발성 메모리 장치의 어드레스 정보와 관련하여 데이터 접근과 관련된 명령이 처리되었는지 여부를 지시하는 정보를 저장하는 매핑 테이블; 및
    상기 호스트 프로세서, 상기 휘발성 메모리 장치, 및 상기 비휘발성 스토리지 장치와 연결되고, 상기 매핑 테이블을 기초로 상기 호스트 프로세서로부터 수신되는 데이터 접근과 관련된 명령을 처리하도록 구성된 컨트롤러
    를 포함하고,
    상기 매핑 테이블은,
    상기 비휘발성 스토리지 장치의 복수의 페이지 번호에 각각 대응하는 복수의 엔트리를 포함하고,
    상기 복수의 엔트리 각각은,
    상기 비휘발성 스토리지 장치의 소정의 페이지 번호에 대응하는 상기 휘발성 메모리 장치의 페이지 번호;
    상기 휘발성 메모리 장치의 페이지 번호의 특정 오프셋 위치의 데이터가 읽기 처리되었는지 여부를 지시하는 리드 비트맵(read bitmap); 및
    상기 휘발성 메모리 장치의 페이지 번호의 특정 오프셋 위치의 데이터가 쓰기 처리되었는지 여부를 지시하는 라이트 비트맵(write bitmap)
    을 포함하는, 컴퓨팅 시스템.
  15. 삭제
KR1020230072077A 2023-06-05 2023-06-05 전자 장치 및 이를 포함하는 컴퓨팅 시스템 KR102608354B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020230072077A KR102608354B1 (ko) 2023-06-05 2023-06-05 전자 장치 및 이를 포함하는 컴퓨팅 시스템
US18/409,321 US11995002B1 (en) 2023-06-05 2024-01-10 Electronic device and computing system including same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230072077A KR102608354B1 (ko) 2023-06-05 2023-06-05 전자 장치 및 이를 포함하는 컴퓨팅 시스템

Publications (1)

Publication Number Publication Date
KR102608354B1 true KR102608354B1 (ko) 2023-12-01

Family

ID=89124343

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230072077A KR102608354B1 (ko) 2023-06-05 2023-06-05 전자 장치 및 이를 포함하는 컴퓨팅 시스템

Country Status (2)

Country Link
US (1) US11995002B1 (ko)
KR (1) KR102608354B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220006913A (ko) * 2020-07-09 2022-01-18 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20220097101A (ko) * 2020-12-30 2022-07-07 삼성전자주식회사 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법
KR20220105304A (ko) * 2021-01-20 2022-07-27 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370603B2 (en) 2008-12-23 2013-02-05 Apple Inc. Architecture for address mapping of managed non-volatile memory
KR102254392B1 (ko) * 2014-05-12 2021-05-25 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
US9727368B1 (en) * 2016-08-16 2017-08-08 Red Hat Israel Virtual machine migration acceleration with page state indicators
KR20180044635A (ko) 2016-10-24 2018-05-03 삼성전자주식회사 저장 시스템 및 그것의 동작 방법
KR20220087782A (ko) 2020-12-18 2022-06-27 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
KR20230068935A (ko) 2021-11-11 2023-05-18 삼성전자주식회사 스토리지 장치 및 그 구동 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220006913A (ko) * 2020-07-09 2022-01-18 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20220097101A (ko) * 2020-12-30 2022-07-07 삼성전자주식회사 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법
KR20220105304A (ko) * 2021-01-20 2022-07-27 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법

Also Published As

Publication number Publication date
US11995002B1 (en) 2024-05-28

Similar Documents

Publication Publication Date Title
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
JP6514569B2 (ja) データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
US20150074328A1 (en) Dynamic map pre-fetching for improved sequential reads of a solid-state media
TWI709854B (zh) 資料儲存裝置及用於存取邏輯至物理位址映射表之方法
US20110231598A1 (en) Memory system and controller
US11210020B2 (en) Methods and systems for accessing a memory
JP2017519275A (ja) データキャッシング方法、キャッシュおよびコンピュータシステム
US8661179B2 (en) Cache memory architecture having reduced tag memory size and method of operation thereof
US9063860B2 (en) Method and system for optimizing prefetching of cache memory lines
US20170010830A1 (en) Semiconductor Device and Cache Memory Control Method
CN113419675B (zh) 用于存储器的写操作方法及读操作方法
EP1467284A2 (en) Data memory cache unit and data memory cache system
JP4113524B2 (ja) キャッシュ・メモリ・システムとその制御方法
TWI755168B (zh) 用來產生基於主機的快取資訊或基於快閃記憶體的快取資訊以建立及最佳化二元樹的快閃記憶體控制器、方法及記憶裝置
KR102608354B1 (ko) 전자 장치 및 이를 포함하는 컴퓨팅 시스템
CN111026678B (zh) 基于固态硬盘的缓存设计方法、装置及计算机设备
JP2010102623A (ja) キャッシュメモリ及びその制御方法
US11989090B2 (en) Method and system for ensuring failure atomicity in non-volatile memory
KR102557557B1 (ko) 전자 장치 및 이를 포함하는 컴퓨팅 시스템
CN111352865B (zh) 存储控制器的写缓存
KR102560109B1 (ko) 바이트 어드레서블 장치 및 이를 포함하는 컴퓨팅 시스템
CN111177034A (zh) 一种固态硬盘的自适应ftl算法
CN113253947B (zh) 一种重删方法、装置、设备及可读存储介质
CN110879794B (zh) 存储器管理方法以及存储控制器

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant