KR20120066198A - 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법 - Google Patents

휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법 Download PDF

Info

Publication number
KR20120066198A
KR20120066198A KR1020100127424A KR20100127424A KR20120066198A KR 20120066198 A KR20120066198 A KR 20120066198A KR 1020100127424 A KR1020100127424 A KR 1020100127424A KR 20100127424 A KR20100127424 A KR 20100127424A KR 20120066198 A KR20120066198 A KR 20120066198A
Authority
KR
South Korea
Prior art keywords
data
swap
volatile memory
address
host
Prior art date
Application number
KR1020100127424A
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 KR1020100127424A priority Critical patent/KR20120066198A/ko
Priority to US13/315,822 priority patent/US20120151127A1/en
Publication of KR20120066198A publication Critical patent/KR20120066198A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/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
    • 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

Abstract

휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법에서, 호스트로부터 데이터가 수신된다. 수신된 데이터에 대하여 스왑 데이터 여부가 판단된다. 판단 결과에 따라, 수신된 데이터가 휘발성 메모리 또는 비휘발성 메모리에 선택적으로 저장된다. 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법에 의해 스왑 동작이 고속으로 수행되고, 시스템의 성능이 향상될 수 있다.

Description

휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법{METHOD OF STORING DATA IN STORAGE DEVICE INCLUDING VOLATILE MEMORY}
본 발명은 저장 장치에 관한 것으로서, 더욱 상세하게는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법에 관한 것이다.
일반적인 컴퓨팅 시스템에서 새로운 페이지를 로드할 때, 메인 메모리에 미사용 영역이 없는 경우 스왑 동작을 수행할 수 있다. 상기 스왑 동작은 저장 공간을 확보하기 위하여 상기 메인 메모리에 로드된 페이지를 저장 장치에 저장할 수 있다. 그러나, 상기 저장 장치의 기입/독출 동작의 속도가 상기 메인 메모리의 기입/독출 동작의 속도보다 낮으므로, 상기 스왑 동작을 수행하는 컴퓨팅 시스템의 동작 속도가 저하되고 성능이 악화된다.
상기와 같은 문제점을 해결하기 위하여, 본 발명의 일 목적은 시스템의 성능을 향상시킬 수 있는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법에서, 스왑 데이터에 대한 어드레스 정보를 포함하는 스왑 어드레스 테이블이 생성된다. 호스트로부터 데이터가 수신되고, 상기 스왑 어드레스 테이블에 저장된 상기 어드레스 정보에 기초하여 상기 수신된 데이터가 상기 스왑 데이터인지가 판단된다. 상기 판단 결과에 따라 상기 수신된 데이터가 휘발성 메모리 또는 비휘발성 메모리에 선택적으로 저장된다.
일 실시예에서, 상기 스왑 어드레스 테이블을 생성하도록, 상기 비휘발성 메모리에 저장된 파티션 테이블로부터 스왑 파티션의 어드레스가 독출되고, 상기 독출된 어드레스에 기초하여 상기 스왑 어드레스 테이블이 생성될 수 있다.
일 실시예에서, 상기 스왑 어드레스 테이블을 생성하도록, 상기 비휘발성 메모리에 저장된 스왑 파일의 어드레스가 독출되고, 상기 독출된 어드레스에 기초하여 상기 스왑 어드레스 테이블이 생성될 수 있다.
일 실시예에서, 상기 비휘발성 메모리에 저장된 상기 스왑 파일의 상기 어드레스를 독출하도록, 상기 비휘발성 메모리에 저장된 디렉토리 테이블로부터 상기 스왑 파일의 시작 어드레스가 독출되고, 상기 비휘발성 메모리에 저장된 파일 할당 테이블로부터 상기 스왑 파일의 상기 시작 어드레스에 링크된 어드레스들이 독출될 수 있다.
일 실시예에서, 상기 수신된 데이터가 상기 스왑 데이터인지를 판단하도록, 상기 수신된 데이터의 어드레스가 상기 스왑 어드레스 테이블 내에 존재하는지가 판단될 수 있다.
일 실시예에서, 상기 수신된 데이터가 상기 스왑 데이터인지를 판단하도록, 상기 수신된 데이터의 논리적 어드레스가 물리적 어드레스로 변환되고, 상기 물리적 어드레스가 상기 스왑 어드레스 테이블 내에 존재하는지가 판단될 수 있다.
일 실시예에서, 상기 수신된 데이터를 상기 휘발성 메모리 또는 상기 비휘발성 메모리에 선택적으로 저장하도록, 상기 수신된 데이터가 상기 스왑 데이터가 아닌 경우, 상기 수신된 데이터가 상기 비휘발성 메모리에 저장되고, 상기 수신된 데이터가 상기 스왑 데이터인 경우, 상기 수신된 데이터가 상기 스왑 데이터로서 상기 휘발성 메모리에 저장될 수 있다.
일 실시예에서, 상기 수신된 데이터를 상기 비휘발성 메모리에 저장하도록, 상기 휘발성 메모리를 버퍼 메모리로 활용하여 상기 수신된 데이터가 상기 비휘발성 메모리에 저장될 수 있다.
일 실시예에서, 상기 호스트로부터 상기 스왑 데이터의 독출 요청이 수신되고, 상기 독출 요청에 응답하여 상기 휘발성 메모리에 저장된 상기 스왑 데이터가 상기 호스트에 제공될 수 있다.
일 실시예에서, 상기 저장 장치가 기입 동작 또는 독출 동작을 수행하지 않는 동안, 상기 휘발성 메모리에 저장된 상기 스왑 데이터를 상기 비휘발성 메모리에 기입하는 지연 기입 동작이 수행될 수 있다.
일 실시예에서, 상기 호스트로부터 상기 스왑 데이터의 독출 요청이 수신되고, 상기 독출 요청에 응답하여 상기 휘발성 메모리에 저장된 상기 스왑 데이터가 상기 호스트에 제공되며, 상기 지연 기입 동작에 의해 상기 비휘발성 메모리에 저장된 상기 스왑 데이터가 소거될 수 있다.
일 실시예에서, 상기 휘발성 메모리에 저장될 다른 데이터가 수신되고, 상기 휘발성 메모리의 미사용 영역이 없는 경우, 상기 휘발성 메모리의 상기 스왑 데이터가 저장된 영역에 상기 다른 데이터가 기입되며, 상기 호스트로부터 상기 스왑 데이터의 독출 요청이 수신되고, 상기 독출 요청에 응답하여 상기 지연 기입 동작에 의해 상기 비휘발성 메모리에 저장된 상기 스왑 데이터가 상기 호스트에 제공될 수 있다.
상기 일 목적을 달성하기 위해, 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법에서, 호스트로부터 데이터 및 스왑 데이터 여부를 나타내는 스왑 플래그가 수신되고, 상기 스왑 플래그에 기초하여 상기 수신된 데이터가 스왑 데이터인지가 판단되며, 상기 판단 결과에 따라 상기 수신된 데이터가 휘발성 메모리 또는 비휘발성 메모리에 선택적으로 저장될 수 있다.
일 실시예에서, 상기 스왑 플래그는 상기 호스트로부터 수신되는 기입 커맨드에 포함될 수 있다.
일 실시예에서, 상기 스왑 플래그는 상기 수신된 데이터에 부가될 수 있다.
상기 일 목적을 달성하기 위해, 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법에서, 호스트로부터 데이터가 수신되고, 상기 수신된 데이터가 스왑 데이터인지가 판단되며, 상기 판단 결과에 따라 상기 수신된 데이터가 휘발성 메모리 또는 비휘발성 메모리에 선택적으로 저장될 수 있다.
일 실시예에서, 상기 저장 장치는 메모리 카드 또는 솔리드 스테이트 드라이브일 수 있다.
일 실시예에서, 상기 휘발성 메모리는 동적 랜덤 액세스 메모리일 수 있다.
일 실시예에서, 상기 비휘발성 메모리는 NAND 플래시 메모리, NOR 플래시 메모리, 상변화 랜덤 액세스 메모리(phase change random access memory), 강유전체 랜덤 액세스 메모리(ferroelectric random access memory), 저항 랜덤 액세스 메모리(resistive random access memory), 또는 강자성 랜덤 액세스 메모리(magnetic random access memory)를 포함할 수 있다.
일 실시예에서, 상기 호스트는 모바일 장치일 수 있다.
본 발명의 실시예들에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법은 시스템의 성능을 향상시킬 수 있다.
또한, 본 발명의 실시예들에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법은 스왑 동작의 속도를 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 저장 장치를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 2a 및 도 2b는 도 1의 컴퓨팅 시스템에서 스왑 동작이 수행되는 예들을 설명하기 위한 도면들이다.
도 3은 본 발명의 실시예들에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 나타내는 순서도이다.
도 4는 도 1에 도시된 저장 장치가 스왑 데이터를 저장하는 동작을 설명하기 위한 블록도이다.
도 5a 및 도 5b는 도 1에 도시된 저장 장치가 스왑 데이터를 출력하는 동작을 설명하기 위한 블록도이다.
도 6은 본 발명의 일 실시예에 따른 저장 장치를 나타내는 블록도이다.
도 7은 도 6에 도시된 비휘발성 메모리의 일 예를 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 나타내는 순서도이다.
도 9는 본 발명의 일 실시예에 따른 휘발성 메모리를 포함하는 저장 장치의 스왑 데이터 출력 방법을 나타내는 순서도이다.
도 10은 본 발명의 다른 실시예에 따른 저장 장치를 나타내는 블록도이다.
도 11은 도 10에 도시된 비휘발성 메모리의 일 예를 나타내는 도면이다.
도 12는 본 발명의 다른 실시예에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 나타내는 순서도이다.
도 13은 본 발명의 또 다른 실시예에 따른 저장 장치를 나타내는 블록도이다.
도 14는 스왑 플래그가 부가된 데이터의 일 예를 나타내는 도면이다.
도 15a 및 도 15b는 스왑 플래그를 포함하는 커맨드의 예들을 나타내는 도면들이다.
도 16은 본 발명의 또 다른 실시예에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 나타내는 순서도이다.
도 17은 본 발명의 실시예들에 따른 저장 장치가 메모리 카드에 응용된 예를 나타내는 도면이다.
도 18은 본 발명의 실시예들에 따른 저장 장치가 임베디드 멀티미디어 카드에 응용된 예를 나타내는 도면이다.
도 19는 본 발명의 실시예들에 따른 저장 장치가 솔리드 스테이트 드라이브에 응용된 예를 나타내는 도면이다.
도 20은 본 발명의 실시예들에 따른 저장 장치가 모바일 시스템에 응용된 예를 나타내는 도면이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제1 구성 요소로 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 실시예들을 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성 요소에 대해서는 동일하거나 유사한 참조 부호를 사용한다.
도 1은 본 발명의 실시예들에 따른 저장 장치를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 호스트(200) 및 저장 장치(200)를 포함한다.
호스트(200)는 프로세서(210), 메인 메모리(220) 및 버스(230)를 포함한다. 프로세서(210)는 특정 계산들 또는 태스크들을 실행하는 특정 소프트웨어를 실행하는 것과 같이 다양한 컴퓨팅 기능들을 실행할 수 있다. 예를 들어, 프로세서(210)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다.
프로세서(210)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(230)를 통하여 메인 메모리(220)에 연결될 수 있다. 예를 들어, 메인 메모리(220)는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)를 포함할 수 있다. 다른 예에서, 메인 메모리(220)는 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM), 플래시 메모리(Flash Memory), 상변화 랜덤 액세스 메모리(Phase change Random Access Memory; PRAM), 강유전체 랜덤 액세스 메모리(Ferroelectric Random Access Memory; FRAM), 저항 랜덤 액세스 메모리(Resistive Random Access Memory; RRAM), 또는 강자성 랜덤 액세스 메모리(Magnetic Random Access Memory; MRAM)를 포함할 수 있다.
프로세서(210)는, 새로운 페이지를 메인 메모리(220)에 로드할 때, 메인 메모리(220)에 미사용 영역이 없는 경우 스왑 동작을 수행할 수 있다. 상기 스왑 동작은, 새로운 페이지의 저장 공간을 확보하기 위하여, 메인 메모리(220)에 로드된 페이지들 중 적어도 하나를 스왑 데이터로서 저장 장치(300)에 저장하는 동작이다. 상기 스왑 동작이 수행되는 예는 도 2a 및 도 2b를 참조하여 후술한다.
저장 장치(300)는 컨트롤러(310), 휘발성 메모리(320) 및 적어도 하나의 비휘발성 메모리(330)를 포함한다. 컨트롤러(310)는 호스트(200)로부터 커맨드를 수신하고, 상기 커맨드에 응답하여 저장 장치(300)의 동작을 제어할 수 있다.
휘발성 메모리(320)는 호스트(200)로부터 수신된 논리적 어드레스를 비휘발성 메모리(330)에 대한 물리적 어드레스로 변환하기 위한 어드레스 변환 테이블(Address Translation Table)을 저장할 수 있다. 실시예에 따라, 휘발성 메모리(320)는 호스트(200)로부터 제공된 데이터를 일시적으로 저장하는 기입 버퍼 및/또는 비휘발성 메모리(330)로부터 출력된 데이터를 일시적으로 저장하는 독출 캐시로 동작할 수 있다. 예를 들어, 휘발성 메모리(320)는 DRAM일 수 있다. 다른 예에서, 휘발성 메모리(320)는 SRAM일 수 있다. 도 1에는 휘발성 메모리(320)가 컨트롤러(310)의 외부에 위치한 예가 도시되어 있으나, 실시예에 따라 휘발성 메모리(320)가 컨트롤러(310)의 내부에 위치할 수 있다.
비휘발성 메모리(330)는 호스트(200)로부터 제공된 데이터를 저장할 수 있다. 비휘발성 메모리(330)는 전원 공급이 차단되더라도 저장된 데이터를 유지할 수 있다. 예를 들어, 비휘발성 메모리(330)는 NAND 플래시 메모리, NOR 플래시 메모리, PRAM, FRAM, RRAM, 또는 MRAM을 포함할 수 있다.
컨트롤러(310)는 호스트(200)로부터 데이터를 수신하고, 상기 데이터가 일반 데이터인지 또는 상기 스왑 데이터인지를 판단한다. 컨트롤러(310)는 상기 판단 결과에 따라 상기 수신된 데이터를 휘발성 메모리(320) 또는 비휘발성 메모리(330)에 선택적으로 저장할 수 있다. 예를 들어, 컨트롤러(310)는 상기 수신된 데이터가 상기 일반 데이터인 경우, 상기 수신된 데이터를 비휘발성 메모리(330)에 저장하고, 상기 수신된 데이터가 상기 스왑 데이터인 경우, 상기 수신된 데이터를 휘발성 메모리(320)에 저장할 수 있다. 이에 따라, 상기 스왑 데이터가 저장 장치(300)에 기입되는 시간이 단축됨으로써, 호스트(200)가 상기 스왑 데이터의 기입 요청에 대한 응답을 대기하는 시간이 감소될 수 있다. 또한, 저장 장치(300) 및/또는 호스트(200)는 상기 스왑 데이터를 휘발성 메모리(320)에 저장한 직후 다른 동작을 수행할 수 있다. 그러므로, 컴퓨팅 시스템(100)의 성능이 향상될 수 있다.
일 실시예에서, 컨트롤러(310)는, 호스트(200)로부터의 요청이 많지 않은 경우, 휘발성 메모리(320)에 저장된 상기 스왑 데이터를 비휘발성 메모리(330)에 기입하는 지연 기입 동작을 수행할 수 있다. 예를 들어, 저장 장치(300)가 기입 동작 또는 독출 동작을 수행하지 않는 동안, 컨트롤러(310)는 상기 지연 기입 동작을 수행할 수 있다. 다른 예에서, 저장 장치(300)가 대기 상태(Stand-by State), 슬립 상태(Sleep State), 또는 비연결 상태(Disconnect State)일 때, 컨트롤러(310)는 상기 지연 기입 동작을 수행할 수 있다.
컨트롤러(310)는 호스트(200)로부터 상기 스왑 데이터에 대한 독출 요청을 수신할 수 있다. 컨트롤러(310)는 상기 독출 요청에 응답하여 휘발성 메모리(320)에 저장된 상기 스왑 데이터를 휘발성 메모리(320)로부터 호스트(200)에 제공할 수 있다. 이에 따라, 상기 스왑 데이터가 저장 장치(300)로부터 독출되는 시간이 단축됨으로써, 호스트(200)가 상기 스왑 데이터의 독출 요청에 대한 응답을 대기하는 시간이 감소될 수 있다.
한편, 휘발성 메모리(320)에서 상기 스왑 데이터가 제거된 경우, 컨트롤러(310)는 상기 지연 기입 동작에 의해 비휘발성 메모리(330)에 저장된 상기 스왑 데이터를 비휘발성 메모리(330)로부터 호스트(200)에 제공할 수 있다. 예를 들어, 컨트롤러(310)가 호스트(200)로부터 다른 스왑 데이터를 수신하고, 휘발성 메모리(320)에 미사용 영역이 없는 경우, 컨트롤러(310)는 휘발성 메모리(320)의 상기 스왑 데이터가 저장된 영역에 상기 다른 스왑 데이터를 기입할 수 있다. 이에 따라, 상기 스왑 데이터가 휘발성 메모리(320)에서 제거될 수 있다. 이 경우, 컨트롤러(310)는 상기 스왑 데이터가 휘발성 메모리(320)에서 제거되기 전에 상기 지연 기입 동작을 수행하고, 상기 스왑 데이터에 대한 독출 요청에 응답하여 상기 지연 기입 동작에 의해 기입된 상기 스왑 데이터를 비휘발성 메모리(330)로부터 호스트(200)에 제공할 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 컴퓨팅 시스템(100)에서 상기 스왑 데이터가 휘발성 메모리(320)에 기입된 직후 호스트(200) 및/또는 저장 장치(300)가 다른 동작을 수행할 수 있으므로, 컴퓨팅 시스템(100)의 성능이 향상될 수 있다.
도 2a 및 도 2b는 도 1의 컴퓨팅 시스템에서 스왑 동작이 수행되는 예들을 설명하기 위한 도면들이다.
도 2a를 참조하면, 메인 메모리(220)는 복수의 세그먼트(segment)들 또는 복수의 페이지(page)들로 나누어질 수 있다. 예를 들어, 메인 메모리(220)의 각 페이지는 약 4 KB 이상의 크기를 가질 수 있다.
메인 메모리(220)에 새로운 페이지(221)가 로드되어야 하고, 메인 메모리(220)에 미사용 페이지들이 존재하지 않는 경우, 상기 복수의 페이지들 중 적어도 하나의 페이지(222)가 스왑 데이터로서 저장 장치에 기입되는 스왑-아웃 동작이 수행될 수 있다. 예를 들어, 상기 저장 장치에 기입되는 페이지(222)는 가장 오래 전에 사용된(least recently used) 페이지일 수 있다. 후에, 상기 저장 장치에 저장된 페이지(222)에 대한 액세스가 필요한 경우, 다른 페이지가 스왑-아웃 동작에 의해 상기 저장 장치에 저장되고, 페이지(222)는 스왑-인 동작에 의해 메인 메모리(220)에 기입될 수 있다.
본 발명의 실시예들에 따른 컴퓨팅 시스템에서 페이지(222)가 상기 스왑-아웃 동작에 의해 상기 저장 장치에 저장될 때, 페이지(222)가 비휘발성 메모리가 아닌 휘발성 메모리에 저장됨으로써, 상기 컴퓨팅 시스템의 성능이 향상될 수 있다.
도 2b를 참조하면, 도 1의 컴퓨팅 시스템(100)은 가상 메모리(virtual memory)를 지원하는 메모리 관리 기술을 채용할 수 있다. 예를 들어, 도 1의 컴퓨팅 시스템(100)은 실행된 프로세스들에 대하여 가상 메모리들(241, 242)을 각각 할당할 수 있다. 예를 들어, 제1 프로세스에 대하여 제1 가상 메모리(241)가 할당되고, 제2 프로세스에 대하여 제2 가상 메모리(243)가 할당될 수 있다. 또한, 새로운 프로세스가 실행될 때, 상기 프로세스에 대해여 새로운 가상 메모리가 할당될 수 있다.
상기 실행된 프로세스들에 의해 가상 메모리들(241, 242)이 접근될 때, 상기 프로세스들은 가상 메모리(241, 242)에 대한 어드레스인 가상 어드레스(virtual address)로 데이터의 위치를 지정한다. 상기 가상 어드레스는, 도 1의 프로세서(210)가 상기 데이터를 처리할 수 있도록, 메인 메모리(220)에 대한 어드레스인 물리적 어드레스(physical address)(또는, 실제 어드레스(real address)라 일컬어짐)로 변환되어야 한다. 예를 들어, 도 1의 프로세서(210)가 지시(instruction) 또는 데이터를 페치(fetch)하거나 데이터를 저장할 때, 상기 가상 어드레스가 상기 물리적 어드레스로 변환되어야 한다.
이러한 상기 가상 어드레스에서 상기 물리적 어드레스로의 변환은 메모리 관리 유닛(Memory Management Unit; MMU)에 의해 수행될 수 있다. 상기 메모리 관리 유닛은 도 1의 프로세서(210)에 포함되거나, 별도의 장치로 구현될 수 있다.
상기 메모리 관리 유닛은 상기 가상 어드레스와 상기 물리적 어드레스 사이의 매핑 정보를 포함하는 페이지 테이블을 참조하여 상기 변환을 수행할 수 있다. 실시예에 따라, 상기 메모리 관리 유닛은 최근에 사용된 매핑 정보를 저장하는 캐시로서 변환 룩어사이드 버퍼(Translation Lookaside Buffer; TLB)를 포함할 수 있다.
상기 변환 동작을 수행하도록, 상기 메모리 관리 유닛은 우선적으로 상기 TLB를 서치할 수 있다. 변환이 요청되는 가상 어드레스의 매핑 정보가 상기 TLB에 없는 경우, 상기 메모리 관리 유닛은 상기 페이지 테이블을 서치할 수 있다. 상기 변환이 요청되는 가상 어드레스에 상응하는 가상 메모리(241, 242)의 페이지가 메인 메모리(220)에 로드된 경우, 상기 메모리 관리 유닛은 상기 TLB 또는 상기 페이지 테이블에 저장된 매핑 정보에 기초하여 상기 가상 어드레스를 메인 메모리(220)에 대한 상기 물리적 어드레스로 변환할 수 있다.
상기 변환이 요청되는 가상 어드레스에 상응하는 가상 메모리(241, 242)의 페이지가 저장 장치(300)에 저장된 경우, 상기 메모리 관리 유닛은 스왑-인 동작을 수행함으로써 저장 장치(300)에 저장된 상기 페이지를 메인 메모리(220)에 로드할 수 있다. 그 후, 상기 메모리 관리 유닛은 메인 메모리(220)에 로드된 페이지에 상응하는 상기 물리적 어드레스를 출력할 수 있다. 또한, 상기 메모리 관리 유닛은 상기 TLB 및/또는 상기 페이지 테이블을 업데이트할 수 있다.
메인 메모리(220)에 새로운 페이지가 로드되어야 하고, 메인 메모리(220)에 미사용 페이지들이 존재하지 않는 경우, 메인 메모리(220)에 로드된 페이지들 중 적어도 하나의 페이지가 스왑 데이터로서 저장 장치(300)에 스왑-아웃 됨으로써 상기 새로운 페이지에 대한 저장 공간이 확보되어야 한다. 예를 들어, 제1 가상 메모리(241) 또는 제2 가상 메모리(242)에 상응하는 상기 제1 프로세스 또는 상기 제2 프로세스가 활성화된 경우, 제1 가상 메모리(241) 또는 제2 가상 메모리(242)의 저장 장치(300)에 저장된 페이지가 메인 메모리(220)에 로드될 수 있다. 다른 예에서, 새로운 프로세스가 실행되는 경우, 상기 새로운 프로세스에 대하여 가상 메모리가 새로 할당되고, 상기 새로 할당된 가상 메모리의 페이지가 메인 메모리(220)에 로드될 수 있다. 이 때, 메인 메모리(220)에 미사용 페이지들이 존재하지 않는 경우, 메인 메모리(220)의 페이지가 스왑-아웃 되어야 한다. 예를 들어, 상기 스왑-아웃 되는 페이지는 가장 오래 전에 사용된(least recently used) 페이지일 수 있다.
본 발명의 실시예들에 따른 컴퓨팅 시스템에서 페이지가 상기 스왑-아웃 동작에 의해 저장 장치(300)에 저장될 때, 상기 페이지가 비휘발성 메모리가 아닌 휘발성 메모리에 저장됨으로써, 상기 컴퓨팅 시스템의 성능이 향상될 수 있다.
도 3은 본 발명의 실시예들에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 나타내는 순서도이다.
도 1 및 도 3을 참조하면, 저장 장치(300)는 호스트(200)로부터 데이터를 수신한다(S410). 상기 수신된 데이터는 비휘발성 메모리(330)에 저장되어야 하는 일반 데이터이거나, 메인 메모리(220)의 저장 공간 확보를 위하여 저장 장치(300)에 제공된 데이터인 스왑 데이터일 수 있다. 저장 장치(300)는 상기 수신된 데이터가 상기 스왑 데이터인지를 판단한다(S420).
상기 수신된 데이터가 상기 일반 데이터인 경우(S420: NO), 저장 장치(300)는 상기 수신된 데이터를 비휘발성 메모리(330)에 저장한다(S440). 일 실시예에서, 저장 장치(300)는 휘발성 메모리(320)를 버퍼 메모리로 활용하여 상기 수신된 데이터를 비휘발성 메모리(330)에 저장할 수 있다.
상기 수신된 데이터가 상기 스왑 데이터인 경우(S420: YES), 저장 장치(300)는 상기 수신된 데이터를 휘발성 메모리(320)에 저장한다(S430). 상기 스왑 데이터가 저장 장치(300)에 기입될 때, 호스트(200)는 상기 스왑 데이터가 비휘발성 메모리(330)에 기입되는 것을 대기하지 않고, 상기 스왑 데이터가 휘발성 메모리(320)에 기입된 직후, 후속 동작을 수행할 수 있다. 또한, 저장 장치(300)는 상기 스왑 데이터를 휘발성 메모리(320)에 저장한 직후, 호스트(200)의 다른 요청에 따른 동작을 수행할 수 있다. 이에 따라, 본 발명의 실시예들에 따른 휘발성 메모리(320)를 포함하는 저장 장치(300)의 데이터 저장 방법은 스왑 동작을 신속하게 수행할 수 있고, 컴퓨팅 시스템(100)의 성능을 향상시킬 수 있다.
도 4는 도 1에 도시된 저장 장치가 스왑 데이터를 저장하는 동작을 설명하기 위한 블록도이고, 도 5a 및 도 5b는 도 1에 도시된 저장 장치가 스왑 데이터를 출력하는 동작을 설명하기 위한 블록도이다.
도 4를 참조하면, 호스트로부터 제공된 스왑 데이터(341)는 휘발성 메모리(320)에 기입된다(S450). 이 후, 저장 장치(300)가 상기 호스트로부터 요청, 예를 들어 일반 데이터에 대한 독출 요청 또는 기입 요청을 수신하는 경우, 저장 장치(300)는 상기 독출 요청 또는 상기 기입 요청에 따른 동작을 수행할 수 있다(S460). 즉, 저장 장치(300)를 포함하는 컴퓨팅 시스템은 스왑 동작을 신속하게 수행한 직후 다른 동작을 수행할 수 있다.
일 실시예에서, 컨트롤러(310)는, 상기 호스트로부터의 요청이 많지 않은 경우, 비휘발성 메모리(330)에 스왑 데이터(342)를 기입하는 지연 기입 동작을 수행할 수 있다(S470). 예를 들어, 저장 장치(300)가 기입 동작 또는 독출 동작을 수행하지 않거나, 저장 장치(300)가 대기 상태, 슬립 상태, 또는 비연결 상태일 때, 컨트롤러(310)는 상기 지연 기입 동작을 수행할 수 있다.
상술한 바와 같이, 저장 장치(300)를 포함하는 컴퓨팅 시스템에서, 스왑 데이터(341)가 휘발성 메모리(320)에 기입되고, 상기 요청이 많지 않을 때 스왑 데이터(342)가 비휘발성 메모리(330)에 기입됨으로써, 상기 스왑 동작이 신속하게 수행되고, 상기 컴퓨팅 시스템의 성능이 향상될 수 있다.
도 5a를 참조하면, 저장 장치(300)가 호스트로부터 스왑 데이터에 대한 독출 요청을 수신한 경우, 저장 장치(300)는 휘발성 메모리(320)에 저장된 스왑 데이터(341)를 상기 호스트에 제공할 수 있다(S480). 일 실시예에서, 저장 장치(300)가 스왑 데이터(341)를 상기 호스트에 제공한 후, 컨트롤러(310)는 지연 기입 동작에 의해 비휘발성 메모리(330)에 저장된 스왑 데이터(342)를 무효(invalid) 표시를 할 수 있다(S490). 상기 무효 표시된 스왑 데이터(342)는 바로 소거되거나, 상기 호스트로부터의 요청이 없는 동안 소거될 수 있다. 이에 따라, 불필요해진 데이터를 처리하는 오버헤드(overhead)가 감소될 수 있다.
다른 실시예에서, 스왑-인 동작에 의해 휘발성 메모리(320)에 저장된 스왑 데이터(341)가 상기 호스트에 제공되더라도, 비휘발성 메모리(330)에 저장된 스왑 데이터(342)가 유지될 수 있다. 상기 스왑-인 동작에 의해 메인 메모리에 로드된 스왑 데이터(341)가 업데이트되지 않고 그대로 스왑-아웃 되는 경우, 비휘발성 메모리(330)에 스왑 데이터(342)가 저장되어 있으므로, 컴퓨팅 시스템은 별도의 스왑-아웃 동작을 수행하지 않을 수 있다. 또한, 상기 스왑-인 동작이 다시 수행될 때, 저장 장치(300)는 비휘발성 메모리(330)에 저장된 스왑 데이터(342)를 상기 호스트에 제공할 수 있다. 이에 따라, 상기 컴퓨팅 시스템의 성능이 더욱 향상될 수 있다.
도 5b를 참조하면, 저장 장치(300)가 호스트로부터 스왑 데이터에 대한 독출 요청을 수신하기 전에 다른 스왑 데이터(343)에 대한 기입 요청을 수신할 수 있다. 이 때, 휘발성 메모리(320)에 미사용 영역이 없는 경우, 다른 스왑 데이터(343)가 상기 스왑 데이터가 저장된 영역에 기입될 수 있다(S475). 이에 따라, 휘발성 메모리(320)에서 상기 스왑 데이터가 제거될 수 있다.
휘발성 메모리(320)에서 상기 스왑 데이터가 제거된 경우, 저장 장치(300)는 상기 스왑 데이터에 대한 상기 독출 요청에 응답하여 비휘발성 메모리(330)에 저장된 스왑 데이터(342)를 상기 호스트에 제공할 수 있다(S485).
도 6은 본 발명의 일 실시예에 따른 저장 장치를 나타내는 블록도이다.
도 6을 참조하면, 저장 장치(300a)는 컨트롤러(310), 휘발성 메모리(320a) 및 비휘발성 메모리(330a)를 포함한다.
비휘발성 메모리(330a)는 데이터 파티션 및 스왑 파티션으로 구분될 수 있고, 상기 파티션들에 대한 정보를 가지는 파티션 테이블(331)을 포함할 수 있다. 컨트롤러(310)는 파티션 테이블(331)로부터 상기 스왑 파티션의 어드레스를 독출하고, 상기 독출된 스왑 파티션의 어드레스에 기초하여 스왑 데이터에 대한 어드레스 정보를 포함하는 스왑 어드레스 테이블(321)을 생성할 수 있다. 실시예에 따라, 스왑 어드레스 테이블(321)은 휘발성 메모리(320a)에 저장되거나, 컨트롤러(310) 내부의 다른 메모리에 저장될 수 있다. 실시예에 따라, 스왑 어드레스 테이블(321)은 상기 스왑 데이터에 대한 논리적 어드레스를 포함하거나, 물리적 어드레스를 포함할 수 있다.
컨트롤러(310)가 호스트로부터 데이터를 수신한 경우, 컨트롤러(310)는 스왑 어드레스 테이블(321)에 저장된 상기 어드레스 정보에 기초하여 상기 수신된 데이터가 상기 스왑 데이터인지를 판단할 수 있다. 예를 들어, 상기 수신된 데이터의 어드레스가 스왑 어드레스 테이블(321) 내에 존재하는 경우, 컨트롤러(310)는 상기 수신된 데이터를 상기 스왑 데이터로 판단하고, 상기 수신된 데이터의 어드레스가 스왑 어드레스 테이블(321) 내에 존재하지 않는 경우, 컨트롤러(310)는 상기 수신된 데이터를 일반 데이터로 판단할 수 있다.
일 실시예에서, 스왑 어드레스 테이블(321)에는 상기 스왑 데이터에 대한 물리적 어드레스가 저장되고, 컨트롤러(310)는 상기 수신된 데이터의 논리적 어드레스를 물리적 어드레스로 변환 후 상기 수신된 데이터의 상기 물리적 어드레스가 스왑 어드레스 테이블(321) 내에 존재하는지를 판단할 수 있다. 다른 실시예에서, 스왑 어드레스 테이블(321)에는 상기 스왑 데이터에 대한 논리적 어드레스가 저장되고, 컨트롤러(310)는 상기 수신된 데이터의 논리적 어드레스가 스왑 어드레스 테이블(321) 내에 존재하는지를 판단할 수 있다.
컨트롤러(310)는 상기 판단 결과에 따라 상기 수신된 데이터를 휘발성 메모리(320a) 또는 비휘발성 메모리(330a)에 선택적으로 저장할 수 있다. 예를 들어, 컨트롤러(310)는 상기 수신된 데이터가 상기 일반 데이터인 경우, 상기 수신된 데이터를 비휘발성 메모리(330a)에 저장하고, 상기 수신된 데이터가 상기 스왑 데이터인 경우, 상기 수신된 데이터를 휘발성 메모리(320a)에 저장할 수 있다. 이에 따라, 스왑 동작이 신속하게 수행될 수 있다.
도 7은 도 6에 도시된 비휘발성 메모리의 일 예를 나타내는 도면이다.
도 7을 참조하면, 비휘발성 메모리(330a)는 파티션 테이블(331), 데이터 파티션(332) 및 스왑 파티션(333)을 포함한다. 데이터 파티션(332)에는 일반 데이터가 저장되고, 스왑 파티션(333)에는 스왑 데이터가 저장될 수 있다. 파티션 테이블(331)에는 데이터 파티션(332) 및 스왑 파티션(333)에 대한 정보가 저장될 수 있다. 예를 들어, 파티션 테이블(331)에는 데이터 파티션(332) 및 스왑 파티션(333)의 시작 어드레스, 사이즈 등이 저장될 수 있다. 도 6의 컨트롤러(310)는 파티션 테이블(331)에 저장된 정보에 기초하여 상기 스왑 데이터에 대한 어드레스 정보를 포함하는 스왑 어드레스 테이블을 생성할 수 있다.
도 8은 본 발명의 일 실시예에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 나타내는 순서도이고, 도 9는 본 발명의 일 실시예에 따른 휘발성 메모리를 포함하는 저장 장치의 스왑 데이터 출력 방법을 나타내는 순서도이다.
도 6 내지 도 9를 참조하면, 컨트롤러(310)는 비휘발성 메모리(330a)에 저장된 파티션 테이블(331)로부터 스왑 파티션(333)에 대한 어드레스를 독출할 수 있다(S510). 컨트롤러(310)는 상기 독출된 어드레스에 기초하여 스왑 데이터에 대한 어드레스 정보를 포함하는 스왑 어드레스 테이블(321)을 생성할 수 있다(S520).
컨트롤러(310)가 호스트로부터 데이터를 수신한 경우(S530), 컨트롤러(310)는 스왑 어드레스 테이블(321)에 기초하여 상기 수신된 데이터가 상기 스왑 데이터인지를 판단할 수 있다(S540). 예를 들어, 상기 수신된 데이터의 어드레스가 스왑 어드레스 테이블(321) 내에 존재하는 경우, 즉, 상기 수신된 데이터의 어드레스가 스왑 파티션(333)에 대한 어드레스인 경우, 컨트롤러(310)는 상기 수신된 데이터를 상기 스왑 데이터로 판단할 수 있다. 또한, 상기 수신된 데이터의 어드레스가 스왑 어드레스 테이블(321) 내에 존재하지 않는 경우, 즉, 상기 수신된 데이터의 어드레스가 데이터 파티션(332)에 대한 어드레스인 경우, 컨트롤러(310)는 상기 수신된 데이터를 일반 데이터로 판단할 수 있다.
상기 수신된 데이터가 상기 일반 데이터인 경우(S550: NO), 컨트롤러(310)는 상기 수신된 데이터를 비휘발성 메모리(330a)에 저장할 수 있다(S560). 상기 수신된 데이터가 상기 스왑 데이터인 경우(S550: YES), 컨트롤러(310)는 상기 수신된 데이터를 휘발성 메모리(320a)에 저장할 수 있다(S570).
컨트롤러(310)가 상기 호스트로부터 동작에 대한 요청을 수신한 경우(S580: YES), 저장 장치(300a)는 상기 수신된 데이터를 휘발성 메모리(320a)에 저장한 직후 상기 요청에 따른 상기 동작을 수행할 수 있다(S590). 이에 따라, 저장 장치(300a)를 포함하는 컴퓨팅 시스템의 성능이 향상될 수 있다.
컨트롤러(310)가 상기 호스트로부터 소정의 시간 동안 상기 요청을 수신하지 않은 경우(S580: NO), 컨트롤러(310)는 휘발성 메모리(320a)에 저장된 상기 스왑 데이터를 비휘발성 메모리(330a)에 기입하는 지연 기입 동작을 수행할 수 있다(S600).
상기 지연 기입 동작 전이거나, 상기 지연 기입 동작 후 상기 호스트로부터 휘발성 메모리(320a)에 저장될 다른 데이터(예를 들어, 다른 스왑 데이터)가 수신되지 않은 경우(S610: NO), 컨트롤러(310)는 상기 호스트로부터 상기 스왑 데이터에 대한 독출 요청을 수신하고(S620), 상기 독출 요청에 응답하여 휘발성 메모리(320a)에 저장된 상기 스왑 데이터를 상기 호스트에 제공할 수 있다(S630).
또한, 상기 지연 기입 동작 후 휘발성 메모리(320a)에 저장될 상기 다른 데이터가 수신되었더라도(S610: YES) 휘발성 메모리(320a)에 미사용 영역이 있는 경우(S640: NO), 컨트롤러(310)는, 휘발성 메모리(320a)에 상기 다른 데이터를 저장하고(S650), 상기 스왑 데이터에 대한 독출 요청(S620)에 응답하여 휘발성 메모리(320a)에 저장된 상기 스왑 데이터를 상기 호스트에 제공할 수 있다(S630).
상기 지연 기입 동작 후 휘발성 메모리(320a)에 저장될 상기 다른 데이터가 수신되었을 때(S610: YES), 휘발성 메모리(320a)에 미사용 영역이 없는 경우(S640: YES), 컨트롤러(310)는 상기 스왑 데이터가 저장된 영역에 상기 다른 데이터를 기입할 수 있다(S660). 이에 따라, 휘발성 메모리(320a)에서 상기 스왑 데이터가 삭제될 수 있다. 이 경우, 컨트롤러(310)는 상기 스왑 데이터에 대한 독출 요청(S670)에 응답하여 상기 지연 기입 동작 의해 비휘발성 메모리(330a)에 저장된 상기 스왑 데이터를 상기 호스트에 제공할 수 있다(S680).
도 10은 본 발명의 다른 실시예에 따른 저장 장치를 나타내는 블록도이다.
도 10을 참조하면, 저장 장치(300b)는 컨트롤러(310), 휘발성 메모리(320b) 및 비휘발성 메모리(330b)를 포함한다.
비휘발성 메모리(330b)에는 스왑 데이터가 기입될 영역인 스왑 파일(337)이 저장될 수 있다. 컨트롤러(310)는 비휘발성 메모리(330b)에 저장된 스왑 파일(337)의 어드레스를 독출하고, 상기 독출된 어드레스에 기초하여 스왑 데이터에 대한 어드레스 정보를 포함하는 스왑 어드레스 테이블(321)을 생성할 수 있다. 예를 들어, 컨트롤러(310)는, 비휘발성 메모리(330b)에 저장된 디렉토리 테이블로부터 스왑 파일(337)의 시작 어드레스를 추출하고, 비휘발성 메모리(330b)에 저장된 파일 할당 테이블로부터 스왑 파일(337)의 상기 시작 어드레스에 링크된 어드레스들을 추출함으로써, 스왑 파일(337)의 상기 어드레스를 추출할 수 있다.
컨트롤러(310)가 호스트로부터 데이터를 수신한 경우, 컨트롤러(310)는 스왑 어드레스 테이블(321)에 저장된 상기 어드레스 정보에 기초하여 상기 수신된 데이터가 상기 스왑 데이터인지를 판단할 수 있다. 컨트롤러(310)는 상기 판단 결과에 따라 상기 수신된 데이터를 휘발성 메모리(320b) 또는 비휘발성 메모리(330b)에 선택적으로 저장할 수 있다. 예를 들어, 컨트롤러(310)는 상기 수신된 데이터가 일반 데이터인 경우, 상기 수신된 데이터를 비휘발성 메모리(330b)에 저장하고, 상기 수신된 데이터가 상기 스왑 데이터인 경우, 상기 수신된 데이터를 휘발성 메모리(320b)에 저장할 수 있다. 이에 따라, 스왑 동작이 신속하게 수행될 수 있다.
도 11은 도 10에 도시된 비휘발성 메모리의 일 예를 나타내는 도면이다.
도 11을 참조하면, 비휘발성 메모리(330b)는 파일 할당 테이블(334), 디렉토리 테이블(335) 및 데이터 영역(336)을 포함한다. 데이터 영역(336)은 복수의 클러스터(cluster)들로 구분되고, 데이터 영역(336)에 저장된 각 파일은 산재된 클러스터들이 링크드 리스트(linked list) 방식으로 연결되어 구성될 수 있다. 파일 할당 테이블(334)에는 상기 클러스터들의 링크 정보가 저장될 수 있다. 디렉토리 테이블(335)에는 각 파일 또는 폴더의 이름, 확장자(extension), 속성(attribute, 생성(creation) 날짜 및 시간, 시작 클러스터의 어드레스 및 사이즈가 저장될 수 있다.
데이터 영역(336)에는 스왑 데이터가 기입될 영역인 스왑 파일(337)이 저장될 수 있다. 스왑 파일(337)는 복수의 클러스터들(337a, 337b, 337c, 337d)를 포함할 수 있고, 복수의 클러스터들(337a, 337b, 337c, 337d)은 산재되고, 링크드 리스트 방식으로 연결될 수 있다.
도 10의 컨트롤러(310)는 디렉토리 테이블(335)로부터 스왑 파일(337)의 시작 어드레스, 즉 스왑 파일(337)의 시작 클러스터(337a)의 어드레스를 추출할 수 있다. 또한, 도 10의 컨트롤러(310)는 파일 할당 테이블(334)로부터 스왑 파일(337)의 상기 시작 어드레스에 링크된 어드레스들, 즉 시작 클러스터(337a)에 링크된 클러스터들(337b, 337c, 337d)의 어드레스들을 추출할 수 있다. 도 10의 컨트롤러(310)는 상기 추출된 시작 어드레스 및 링크된 어드레스들에 기초하여 상기 스왑 데이터에 대한 어드레스 정보를 포함하는 스왑 어드레스 테이블을 생성할 수 있다.
도 12는 본 발명의 다른 실시예에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 나타내는 순서도이다.
도 10 내지 도 12를 참조하면, 컨트롤러(310)는 비휘발성 메모리(330b)에 포함된 디렉토리 테이블(335)로부터 스왑 파일(337)의 시작 어드레스를 독출할 수 있다(S505). 컨트롤러(310)는 비휘발성 메모리(330b)에 포함된 파일 할당 테이블(334)로부터 상기 시작 어드레스에 링크된 어드레스들을 독출할 수 있다(S515). 또한, 컨트롤러(310)는 상기 독출된 어드레스들에 기초하여 스왑 데이터에 대한 어드레스 정보를 포함하는 스왑 어드레스 테이블(321)을 생성할 수 있다(S525).
컨트롤러(310)가 호스트로부터 데이터를 수신한 경우(S530), 컨트롤러(310)는 스왑 어드레스 테이블(321)에 기초하여 상기 수신된 데이터가 상기 스왑 데이터인지를 판단할 수 있다(S540). 예를 들어, 상기 수신된 데이터의 어드레스가 스왑 어드레스 테이블(321) 내에 존재하는 경우, 즉, 상기 수신된 데이터의 어드레스가 스왑 파일(337)에 대한 어드레스인 경우, 컨트롤러(310)는 상기 수신된 데이터를 상기 스왑 데이터로 판단할 수 있다. 또한, 상기 수신된 데이터의 어드레스가 스왑 어드레스 테이블(321) 내에 존재하지 않는 경우, 즉, 상기 수신된 데이터의 어드레스가 스왑 파일(337)에 대한 어드레스가 아닌 경우, 컨트롤러(310)는 상기 수신된 데이터를 일반 데이터로 판단할 수 있다.
상기 수신된 데이터가 상기 일반 데이터인 경우(S550: NO), 컨트롤러(310)는 상기 수신된 데이터를 비휘발성 메모리(330b)에 저장할 수 있다(S560). 상기 수신된 데이터가 상기 스왑 데이터인 경우(S550: YES), 컨트롤러(310)는 상기 수신된 데이터를 휘발성 메모리(320b)에 저장할 수 있다(S570).
한편, 이와 같이 저장된 휘발성 메모리(320b)에 저장된 상기 스왑 데이터는 도 9에 도시된 스왑 데이터 출력 방법과 같이 출력될 수 있다.
도 13은 본 발명의 또 다른 실시예에 따른 저장 장치를 나타내는 블록도이다.
도 13을 참조하면, 저장 장치(300c)는 컨트롤러(310a), 휘발성 메모리(320) 및 비휘발성 메모리(330)를 포함한다.
컨트롤러(310a)는 호스트로부터 데이터 및 상기 데이터가 스왑 데이터인지 여부를 나타내는 스왑 플래그를 수신할 수 있다. 컨트롤러(310a)는 상기 스왑 플래그에 기초하여 상기 수신된 데이터가 상기 스왑 데이터인지를 판단할 수 있다. 실시예에 따라, 상기 스왑 플래그는 상기 호스트로부터 수신되는 기입 커맨드에 포함되어 전송되거나, 상기 수신된 데이터에 부가되어 전송될 수 있다.
컨트롤러(310a)는 상기 판단 결과에 따라 상기 수신된 데이터를 휘발성 메모리(320) 또는 비휘발성 메모리(330)에 선택적으로 저장할 수 있다. 예를 들어, 컨트롤러(310a)는 상기 수신된 데이터가 일반 데이터인 경우, 상기 수신된 데이터를 비휘발성 메모리(330)에 저장하고, 상기 수신된 데이터가 상기 스왑 데이터인 경우, 상기 수신된 데이터를 휘발성 메모리(320)에 저장할 수 있다. 이에 따라, 스왑 동작이 신속하게 수행될 수 있다.
도 14는 스왑 플래그가 부가된 데이터의 일 예를 나타내는 도면이다.
도 14를 참조하면, 호스트로부터 데이터(346)가 전송될 때, 상기 호스트는 데이터(346)의 전단에 시작 비트(344)를 부가하고, 후단에 종료 비트(347)를 부가할 수 있다. 또한, 상기 호스트는 시작 비트(344)와 데이터(346) 사이에 또는 데이터(346)와 종료 비트(347) 사이에 데이터(346)가 스왑 데이터인지를 나타내는 스왑 플래그(345)를 삽입할 수 있다. 일 실시예에서, 스왑 플래그(345)는 1 비트의 사이즈를 가질 수 있다. 실시예에 따라, 데이터(346)는 스트림 방식으로 전송되거나 블록 방식으로 전송될 수 있고, 순환 중복 검사(Cyclic Redundancy Check; CRC) 코드가 더욱 부가될 수 있다.
도 13의 컨트롤러(310a)는 데이터(346)에 부가된 스왑 플래그(345)에 기초하여 데이터(346)가 상기 스왑 데이터인지를 판단할 수 있다.
도 15a 및 도 15b는 스왑 플래그를 포함하는 커맨드의 예들을 나타내는 도면들이다.
도 15a를 참조하면, 커맨드(350a)는 시작 비트(351), 송신 비트(352), 스왑 플래그(353), 커맨드 인덱스(354), 인자(argument, 355) 및 종료 비트(356)을 포함한다. 시작 비트(351)는 커맨드(350a)의 시작을 나타낸다. 예를 들어 시작 비트(351)는 ‘0’으로 고정될 수 있다. 송신 비트(352)는 커맨드(350a)의 송신 방향을 나타낸다. 예를 들어, 호스트가 커맨드(350a)를 송신하는 경우, 송신 비트(352)는 ‘1’이고, 저장 장치가 커맨드(350a)를 송신하는 경우, 송신 비트(352)는 ‘0’일 수 있다. 스왑 플래그(353)는 기입될 데이터가 스왑 데이터인지를 나타낼 수 있다. 커맨드 인덱스(354)는 전송되는 커맨드(350a)의 종류를 나타낼 수 있다. 인자(355)에는 커맨드 인덱스(354)와 함께 전송될 정보가 기입될 수 있다. 예를 들어, 인자(355)에는 어드레스가 기입될 수 있다. 종료 비트(356)는 커맨드(350a)의 끝을 나타낸다. 도 15a에 도시되어 있지는 않지만, 커맨드(350a)는 CRC 코드를 더욱 포함할 수 있다.
도 13의 컨트롤러(310a)는 커맨드(350a)에 포함된 스왑 플래그(353)에 기초하여 기입될 데이터가 상기 스왑 데이터인지를 판단할 수 있다.
도 15b를 참조하면, 커맨드(350b)는 시작 비트(351), 송신 비트(352), 커맨드 인덱스(354a), 인자(355) 및 종료 비트(356)을 포함한다. 도 15b에 도시되어 있지는 않지만, 커맨드(350b)는 CRC 코드를 더욱 포함할 수 있다.
호스트가 스왑 데이터에 대한 기입 커맨드를 송신할 때, 상기 호스트는 커맨드 인덱스(354a)에 스왑 데이터 기입 커맨드를 기입하여 커맨드(350b)를 전송함으로써, 도 13의 컨트롤러(310a)에 기입될 데이터가 상기 스왑 데이터인지를 알릴 수 있다.
도 16은 본 발명의 또 다른 실시예에 따른 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법을 나타내는 순서도이다.
도 13 및 도 16을 참조하면, 컨트롤러(310a)는 호스트로부터 데이터 및 상기 데이터가 스왑 데이터인지를 나타내는 스왑 플래그를 수신한다(S535). 컨트롤러(310a)는 상기 스왑 플래그에 기초하여 상기 수신된 데이터가 상기 스왑 데이터인지를 판단할 수 있다(S545).
상기 수신된 데이터가 상기 일반 데이터인 경우(S550: NO), 컨트롤러(310a)는 상기 수신된 데이터를 비휘발성 메모리(330)에 저장할 수 있다(S560). 상기 수신된 데이터가 상기 스왑 데이터인 경우(S550: YES), 컨트롤러(310a)는 상기 수신된 데이터를 휘발성 메모리(320)에 저장할 수 있다(S570).
한편, 이와 같이 저장된 휘발성 메모리(320)에 저장된 상기 스왑 데이터는 도 9에 도시된 스왑 데이터 출력 방법과 같이 출력될 수 있다.
도 17은 본 발명의 실시예들에 따른 저장 장치가 메모리 카드에 응용된 예를 나타내는 도면이다.
도 17을 참조하면, 저장 장치(700)는 복수의 접속 핀들(710), 컨트롤러(310), 휘발성 메모리(320) 및 비휘발성 메모리(330)를 포함한다.
호스트와 저장 장치(700) 사이의 신호들이 송수신되도록 복수의 접속 핀들(710)은 호스트에 연결될 수 있다. 복수의 접속 핀들(710)은 클록 핀, 커맨드 핀, 데이터 핀 및/또는 리셋 핀을 포함할 수 있다.
컨트롤러(310)는, 상기 호스트로부터 데이터를 수신하고, 상기 수신된 데이터가 일반 데이터인 경우 비휘발성 메모리(330)에 저장하고, 상기 수신된 데이터가 스왑 데이터인 경우 휘발성 메모리(320)에 저장할 수 있다.
도 17의 저장 장치(700)는 메모리 카드일 수 있다. 예를 들어, 저장 장치(700)는 멀티미디어 카드(MultiMedia Card; MMC), SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA(Personal Computer Memory Card International Association) 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card)등과 같은 메모리 카드일 수 있다.
실시예에 따라, 저장 장치(700)는 모바일 장치, 셀룰러 폰, PDA, PMP, 디지털 카메라, 포터블 게임 콘솔, MP3 플레이어, 데스크 톱 컴퓨터, 노트북 컴퓨터, 스피커, 비디오, 텔레비전 등과 같은 호스트에 장착될 수 있다.
도 18은 본 발명의 실시예들에 따른 저장 장치가 임베디드 멀티미디어 카드에 응용된 예를 나타내는 도면이다.
도 18을 참조하면, 저장 장치(800)는 임베디드 멀티미디어 카드(embedded MultiMedia Card; eMMC) 또는 하이브리드 임베디드 멀티미디어 카드(hybrid embedded MultiMedia Card; hybrid eMMC)일 수 있다. 저장 장치(800)의 일면에는 복수의 볼들(810)이 형성될 수 있다. 호스트와 저장 장치(800) 사이의 신호들이 송수신되도록 복수의 볼들(810)은 호스트의 시스템 보드에 연결될 수 있다. 복수의 볼들(810)은 클록 볼, 커맨드 볼, 데이터 볼 및/또는 리셋 볼을 포함할 수 있다. 실시예에 따라, 복수의 볼들(810)은 다양한 방식으로 배치될 수 있다. 도 18의 저장 장치(800)는, 상기 호스트에 착탈 가능한 도 17의 저장 장치(700)와는 달리, 사용자에 의해 분리되지 않도록 상기 시스템 보드에 장착될 수 있다.
실시예에 따라, 저장 장치(800)는 모바일 장치, 셀룰러 폰, PDA, PMP, 디지털 카메라, 포터블 게임 콘솔, MP3 플레이어, 데스크 톱 컴퓨터, 노트북 컴퓨터, 스피커, 비디오, 텔레비전 등과 같은 호스트에 장착될 수 있다.
도 19는 본 발명의 실시예들에 따른 저장 장치가 솔리드 스테이트 드라이브에 응용된 예를 나타내는 도면이다.
도 19를 참조하면, 저장 장치(900)는 솔리드 스테이트 드라이브(Solid State Drive; SSD)일 수 있다. 저장 장치(900)는 컨트롤러(310), 휘발성 메모리(320) 및 복수의 비휘발성 메모리들(330_1, 330_2, …, 330_n)을 포함한다.
컨트롤러(310)는 프로세서(311), 휘발성 메모리 컨트롤러(312), 호스트 인터페이스(313), 에러 정정 코드(Error Correction Code; ECC)부(314), 및 비휘발성 메모리 인터페이스(315)를 포함할 수 있다. 프로세서(311)는 휘발성 메모리 컨트롤러(312)를 통하여 휘발성 메모리(320)의 동작을 제어할 수 있다. 도 19에는 컨트롤러(310)가 별도의 휘발성 메모리 컨트롤러(312)를 포함하는 예가 도시되어 있으나, 실시예에 따라, 휘발성 메모리 컨트롤러(312)는 프로세서(311) 또는 휘발성 메모리(320) 내에 구현될 수 있다. 프로세서(311)는 호스트 인터페이스(313)를 통하여 호스트와 통신하고, 비휘발성 메모리 인터페이스(315)를 통하여 복수의 비휘발성 메모리들(330_1, 330_2, …, 330_n)과 통신할 수 있다. 호스트 인터페이스(313)는 USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 상기 호스트와 통신하도록 구성될 수 있다. 도 19에는 컨트롤러(310)가 복수의 채널들을 통하여 복수의 비휘발성 메모리들(330_1, 330_2, …, 330_n)과 통신하는 예가 도시되어 있으나, 실시예에 따라 컨트롤러(310)는 하나의 채널을 통하여 복수의 비휘발성 메모리들(330_1, 330_2, …, 330_n)과 통신할 수 있다.
ECC부(314)는 상기 호스트로부터 제공된 데이터에 기초하여 에러 정정 코드를 생성하고, 상기 데이터는 상기 에러 정정 코드와 함께 복수의 비휘발성 메모리들(330_1, 330_2, …, 330_n)에 저장될 수 있다. ECC부(314)는 복수의 비휘발성 메모리들(330_1, 330_2, …, 330_n)로부터 상기 에러 정정 코드를 수신하고, 상기 에러 정정 코드에 기초하여 원본 데이터를 복원할 수 있다. 이에 따라, 데이터의 전송 또는 저장 과정에서 오류가 발생하더라도 원본 데이터가 정확하게 복원될 수 있다. 실시예에 따라, 컨트롤러(310)는 ECC부(314)를 포함하거나 ECC부(314) 없이 구현될 수 있다.
컨트롤러(310)는, 상기 호스트로부터 데이터를 수신하고, 상기 수신된 데이터가 일반 데이터인 경우 복수의 비휘발성 메모리들(330_1, 330_2, …, 330_n)에 저장하고, 상기 수신된 데이터가 스왑 데이터인 경우 휘발성 메모리(320)에 저장할 수 있다.
실시예에 따라, 저장 장치(900)는 모바일 장치, 셀룰러 폰, PDA, PMP, 디지털 카메라, 포터블 게임 콘솔, MP3 플레이어, 데스크 톱 컴퓨터, 노트북 컴퓨터, 스피커, 비디오, 텔레비전 등과 같은 호스트에 장착될 수 있다.
도 20은 본 발명의 실시예들에 따른 저장 장치가 모바일 시스템에 응용된 예를 나타내는 도면이다.
도 20을 참조하면, 모바일 시스템(1000)은 프로세서(1010), 메인 메모리(1020), 사용자 인터페이스(1030), 베이스밴드 칩 셋(baseband chipset)과 같은 모뎀(1040) 및 저장 장치(300)을 포함한다.
프로세서(1010)는 특정 계산들 또는 태스크들을 실행하는 특정 소프트웨어를 실행하는 것과 같이 다양한 컴퓨팅 기능들을 실행할 수 있다. 예를 들어, 프로세서(1010)는 마이크로프로세서 또는 중앙 처리 장치(CPU)일 수 있다. 프로세서(1010)는 어드레스 버스, 제어 버스 및/또는 데이터 버스와 같은 버스(1050)를 통하여 메인 메모리(1020)에 연결될 수 있다. 예를 들어, 메인 메모리(1020)는 DRAM, 모바일 DRAM, SRAM, PRAM, FRAM, RRAM 및/또는 MRAM으로 구현될 수 있다. 또한, 프로세서(1010)는 주변 구성요소 상호연결(peripheral component interconnect, PCI) 버스와 같은 확장 버스에 연결될 수 있다. 이에 따라, 프로세서(610)는 키보드 또는 마우스와 같은 하나 이상의 입력 장치, 프린터 또는 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함하는 사용자 인터페이스(1030)를 제어할 수 있다. 모뎀(1040)은 외부 장치와 무선으로 데이터를 송수신할 수 있다. 비휘발성 메모리(330)에는 프로세서(1010)에 의해 처리된 데이터 또는 모뎀(1040)을 통하여 수신된 데이터 등이 콘트롤러(310)를 통해 저장될 수 있다. 모바일 시스템(1000)은 동작 전압을 공급하기 위한 파워 서플라이를 더 포함할 수 있다. 또한, 모바일 시스템(1000)은 실시예에 따라 응용 칩셋(application chipset), 카메라 이미지 프로세서(camera image processor, CIS) 등을 더 포함할 수 있다.
컨트롤러(310)는 일반 데이터를 비휘발성 메모리(330)에 저장하고, 스왑 데이터를 휘발성 메모리(320)에 저장할 수 있다. 이에 따라, 상기 스왑 데이터가 메인 메모리(1020)로부터 저장 장치(300)에 저장되는 스왑-아웃 동작 및 상기 스왑 데이터가 저장 장치(300)로부터 메인 메모리(1020)에 저장되는 스왑-인 동작이 고속으로 수행될 수 있다. 또한, 모바일 시스템(1000)의 성능이 향상될 수 있다.
저장 장치(300)는 다양한 형태들의 패키지로 구현될 수 있다. 예를 들어, 저장 장치(300)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다.
본 발명은 휘발성 메모리를 포함하는 저장 장치에 적용될 수 있다. 특히, 본 발명은 메모리 카드, 솔리드 스테이트 드라이브, 임베디드 멀티미디어 카드, 하이브리드 멀티미디어 카드, 유니버설 플래시 스토리지, 하이브리드 유니버설 플래시 스토리지 등에 적용될 수 있다.
상기에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술분야에서 통상의 지식을 가진 자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
300, 300a, 300b, 300c: 저장 장치
310, 310a: 컨트롤러
320, 320a, 320b: 휘발성 메모리
330, 330a, 330b: 비휘발성 메모리

Claims (10)

  1. 스왑 데이터에 대한 어드레스 정보를 포함하는 스왑 어드레스 테이블을 생성하는 단계;
    호스트로부터 데이터를 수신하는 단계;
    상기 스왑 어드레스 테이블에 저장된 상기 어드레스 정보에 기초하여 상기 수신된 데이터가 상기 스왑 데이터인지를 판단하는 단계; 및
    상기 판단 결과에 따라 상기 수신된 데이터를 휘발성 메모리 또는 비휘발성 메모리에 선택적으로 저장하는 단계를 포함하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  2. 제1 항에 있어서, 상기 스왑 어드레스 테이블을 생성하는 단계는,
    상기 비휘발성 메모리에 저장된 파티션 테이블로부터 스왑 파티션의 어드레스를 독출하는 단계; 및
    상기 독출된 어드레스에 기초하여 상기 스왑 어드레스 테이블을 생성하는 단계를 포함하는 것을 특징으로 하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  3. 제1 항에 있어서, 상기 스왑 어드레스 테이블을 생성하는 단계는,
    상기 비휘발성 메모리에 저장된 스왑 파일의 어드레스를 독출하는 단계; 및
    상기 독출된 어드레스에 기초하여 상기 스왑 어드레스 테이블을 생성하는 단계를 포함하는 것을 특징으로 하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  4. 제1 항에 있어서, 상기 수신된 데이터가 상기 스왑 데이터인지를 판단하는 단계는,
    상기 수신된 데이터의 어드레스가 상기 스왑 어드레스 테이블 내에 존재하는지를 판단하는 단계를 포함하는 것을 특징으로 하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  5. 제1 항에 있어서, 상기 수신된 데이터를 상기 휘발성 메모리 또는 상기 비휘발성 메모리에 선택적으로 저장하는 단계는,
    상기 수신된 데이터가 상기 스왑 데이터가 아닌 경우, 상기 수신된 데이터를 상기 비휘발성 메모리에 저장하는 단계; 및
    상기 수신된 데이터가 상기 스왑 데이터인 경우, 상기 수신된 데이터를 상기 스왑 데이터로서 상기 휘발성 메모리에 저장하는 단계를 포함하는 것을 특징으로 하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  6. 제5 항에 있어서,
    상기 호스트로부터 상기 스왑 데이터의 독출 요청을 수신하는 단계; 및
    상기 독출 요청에 응답하여 상기 휘발성 메모리에 저장된 상기 스왑 데이터를 상기 호스트에 제공하는 단계를 더 포함하는 것을 특징으로 하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  7. 제5 항에 있어서,
    상기 저장 장치가 기입 동작 또는 독출 동작을 수행하지 않는 동안, 상기 휘발성 메모리에 저장된 상기 스왑 데이터를 상기 비휘발성 메모리에 기입하는 지연 기입 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  8. 제7 항에 있어서,
    상기 호스트로부터 상기 스왑 데이터의 독출 요청을 수신하는 단계;
    상기 독출 요청에 응답하여 상기 휘발성 메모리에 저장된 상기 스왑 데이터를 상기 호스트에 제공하는 단계; 및
    상기 지연 기입 동작에 의해 상기 비휘발성 메모리에 저장된 상기 스왑 데이터를 소거하는 단계를 더 포함하는 것을 특징으로 하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  9. 호스트로부터 데이터 및 스왑 데이터 여부를 나타내는 스왑 플래그를 수신하는 단계;
    상기 스왑 플래그에 기초하여 상기 수신된 데이터가 스왑 데이터인지를 판단하는 단계; 및
    상기 판단 결과에 따라 상기 수신된 데이터를 휘발성 메모리 또는 비휘발성 메모리에 선택적으로 저장하는 단계를 포함하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
  10. 호스트로부터 데이터를 수신하는 단계;
    상기 수신된 데이터가 스왑 데이터인지를 판단하는 단계; 및
    상기 판단 결과에 따라 상기 수신된 데이터를 휘발성 메모리 또는 비휘발성 메모리에 선택적으로 저장하는 단계를 포함하는 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법.
KR1020100127424A 2010-12-14 2010-12-14 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법 KR20120066198A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100127424A KR20120066198A (ko) 2010-12-14 2010-12-14 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법
US13/315,822 US20120151127A1 (en) 2010-12-14 2011-12-09 Method of storing data in a storing device including a volatile memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100127424A KR20120066198A (ko) 2010-12-14 2010-12-14 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법

Publications (1)

Publication Number Publication Date
KR20120066198A true KR20120066198A (ko) 2012-06-22

Family

ID=46200578

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100127424A KR20120066198A (ko) 2010-12-14 2010-12-14 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법

Country Status (2)

Country Link
US (1) US20120151127A1 (ko)
KR (1) KR20120066198A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150018688A (ko) * 2013-08-08 2015-02-24 삼성전자주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
KR20150106144A (ko) * 2014-03-11 2015-09-21 삼성전자주식회사 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템
US10599467B2 (en) 2016-10-21 2020-03-24 Samsung Electronics Co., Ltd. Computing systems and methods of operating computing systems
KR102561316B1 (ko) * 2023-03-20 2023-07-31 메티스엑스 주식회사 전자 장치 및 이를 포함하는 컴퓨팅 시스템

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972696B2 (en) 2011-03-07 2015-03-03 Microsoft Technology Licensing, Llc Pagefile reservations
US20130268726A1 (en) * 2011-07-01 2013-10-10 Xin Guo Dual Mode Write Non-Volatile Memory System
US8832411B2 (en) 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
KR101924022B1 (ko) * 2012-04-03 2019-02-22 삼성전자주식회사 메모리 시스템 및 그것의 페이지 교체 방법
US20140025921A1 (en) * 2012-07-19 2014-01-23 Jmicron Technology Corp. Memory control method utilizing main memory for address mapping and related memory control circuit
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
US20150248345A1 (en) * 2014-03-02 2015-09-03 Ralink Technology Corp. Swap method and Electronic System thereof
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
US9483346B2 (en) * 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10061515B2 (en) * 2014-09-11 2018-08-28 Toshiba Memory Corporation Information processing apparatus and memory system
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
CN105988875B (zh) * 2015-03-04 2020-08-14 华为技术有限公司 一种运行进程的方法及装置
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US9703492B2 (en) 2015-05-19 2017-07-11 International Business Machines Corporation Page replacement algorithms for use with solid-state drives
KR102532581B1 (ko) * 2016-03-17 2023-05-17 에스케이하이닉스 주식회사 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법
TWI601155B (zh) * 2016-06-08 2017-10-01 群聯電子股份有限公司 記憶體的介面、控制電路單元、儲存裝置及時脈產生方法
US10452539B2 (en) 2016-07-19 2019-10-22 Sap Se Simulator for enterprise-scale simulations on hybrid main memory systems
US10698732B2 (en) 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US10437798B2 (en) 2016-07-19 2019-10-08 Sap Se Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems
US20180024754A1 (en) * 2016-07-19 2018-01-25 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
US10540098B2 (en) 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10474557B2 (en) 2016-07-19 2019-11-12 Sap Se Source code profiling for line-level latency and energy consumption estimation
US10387127B2 (en) 2016-07-19 2019-08-20 Sap Se Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases
US10783146B2 (en) 2016-07-19 2020-09-22 Sap Se Join operations in hybrid main memory systems
JP6961349B2 (ja) * 2017-01-24 2021-11-05 キヤノン株式会社 不揮発性記憶装置を有する情報処理装置、制御方法
US10845866B2 (en) * 2017-06-22 2020-11-24 Micron Technology, Inc. Non-volatile memory system or sub-system
US11010379B2 (en) 2017-08-15 2021-05-18 Sap Se Increasing performance of in-memory databases using re-ordered query execution plans
US11531614B2 (en) * 2020-06-02 2022-12-20 Vmware, Inc. Saving virtual memory space in a clone environment
EP4276642A1 (en) * 2022-05-09 2023-11-15 Samsung Electronics Co., Ltd. Computing system including cxl switch, memory device and storage device and operating method thereof

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW561339B (en) * 2002-07-24 2003-11-11 C One Technology Corp Non-volatile memory based storage system capable of directly overwriting without using redundancy and the method thereof
CN1985244B (zh) * 2005-06-24 2010-05-12 捷讯研究有限公司 管理移动设备中存储器的系统和方法
US8131814B1 (en) * 2008-07-11 2012-03-06 Hewlett-Packard Development Company, L.P. Dynamic pinning remote direct memory access

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150018688A (ko) * 2013-08-08 2015-02-24 삼성전자주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US10789160B2 (en) 2013-08-08 2020-09-29 Samsung Electronics Co., Ltd. Utilizing different data storage policies in response to different characteristics of data
KR20150106144A (ko) * 2014-03-11 2015-09-21 삼성전자주식회사 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템
US10599467B2 (en) 2016-10-21 2020-03-24 Samsung Electronics Co., Ltd. Computing systems and methods of operating computing systems
US11204797B2 (en) 2016-10-21 2021-12-21 Samsung Electronics Co., Ltd. Computing systems and methods of operating computing systems
KR102561316B1 (ko) * 2023-03-20 2023-07-31 메티스엑스 주식회사 전자 장치 및 이를 포함하는 컴퓨팅 시스템

Also Published As

Publication number Publication date
US20120151127A1 (en) 2012-06-14

Similar Documents

Publication Publication Date Title
KR20120066198A (ko) 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법
KR102395538B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
JP4829365B1 (ja) データ記憶装置及びデータ書き込み方法
CN107179996B (zh) 数据存储装置和其操作方法
JP6045567B2 (ja) 不揮発性記憶のための可変オーバープロビジョニング
KR102565895B1 (ko) 메모리 시스템 및 그것의 동작 방법
US8886884B2 (en) System and method for increasing read and write speeds of hybrid storage unit
KR102002921B1 (ko) 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
KR20170087044A (ko) Os 및 애플리케이션 투명 메모리 압축 기술
JP2017503266A (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
KR20170109133A (ko) 하이브리드 메모리 장치 및 그의 데이터 관리 방법
KR20200020464A (ko) 데이터 저장 장치 및 그 동작 방법
KR20200114052A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
TWI710905B (zh) 資料儲存裝置及邏輯至物理位址映射表之載入方法
KR20200114086A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US11144380B2 (en) Memory controller and storage device including the same
CN110309075B (zh) 存储器控制器以及具有存储器控制器的存储器系统
KR102648790B1 (ko) 데이터 저장 장치 및 그 동작 방법
US11775211B2 (en) Memory controller and method of operating the same
KR20230037240A (ko) 호스트 장치, 메모리 컨트롤러 및 이를 포함하는 컴퓨팅 시스템
KR20220045342A (ko) 호스트 장치, 데이터 저장 장치, 데이터 처리 시스템 및 데이터 처리 방법
US20230103797A1 (en) Memory controller and method of operating the same
KR102555511B1 (ko) 저장 장치 및 그 동작 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid