[go: up one dir, main page]

KR101739556B1 - 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법 - Google Patents

데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법 Download PDF

Info

Publication number
KR101739556B1
KR101739556B1 KR1020100113466A KR20100113466A KR101739556B1 KR 101739556 B1 KR101739556 B1 KR 101739556B1 KR 1020100113466 A KR1020100113466 A KR 1020100113466A KR 20100113466 A KR20100113466 A KR 20100113466A KR 101739556 B1 KR101739556 B1 KR 101739556B1
Authority
KR
South Korea
Prior art keywords
data
write data
address
mapping
block
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
KR1020100113466A
Other languages
English (en)
Other versions
KR20120052028A (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 KR1020100113466A priority Critical patent/KR101739556B1/ko
Priority to US13/239,474 priority patent/US9563549B2/en
Priority to DE102011086227A priority patent/DE102011086227A1/de
Priority to JP2011248579A priority patent/JP2012108912A/ja
Priority to TW100141589A priority patent/TW201227741A/zh
Priority to CN2011103617705A priority patent/CN102591589A/zh
Publication of KR20120052028A publication Critical patent/KR20120052028A/ko
Application granted granted Critical
Publication of KR101739556B1 publication Critical patent/KR101739556B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명에 따른 혼합 맵핑 방식을 사용하는 저장 장치의 주소 맵핑 방법은, 버퍼 메모리에 저장된 쓰기 데이터가 적어도 하나의 수퍼 연속 블록을 구성하는지를 판단하는 단계, 그리고 상기 판단 결과에 따라 상기 쓰기 데이터에 대한 주소 맵핑 모드를 결정하는 단계를 포함하되, 상기 쓰기 데이터 중 상기 수퍼 연속 블록을 구성하는 부분은 블록 맵핑 모드에 따라 논리 주소를 물리 주소로 맵핑한다.

Description

데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법{DATA STORAGE DEVICE, USER DEVICE AND DATA WRITE METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 더욱 상세하게는 머지 동작의 효율을 높일 수 있는 주소 맵핑을 수행하는 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법에 관한 것이다.
반도체 메모리 장치(Semiconductor Memory Device)는 크게 휘발성 메모리 장치(Volatile Memory Device)와 불휘발성 메모리 장치(Non-volatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다. 특히, 불휘발성 메모리 중에서 플래시 메모리(Flash memory)는 기존의 EEPROM에 비해 집적도가 높아, 대용량 보조 기억 장치로의 응용에 매우 유리하다.
플래시 메모리는 소거와 쓰기 동작의 단위가 일치하지 않는다. 그래서 플래시 변환 계층(FTL: Flash Translation Layer)이라는 소프트웨어가 이러한 단점을 극복하기 위하여 사용된다. 플래시 변환 계층(FTL)의 주요 기능 중에 주소 맵핑(Address Mapping) 기능이 있다. 플래시 변환 계층(FTL)은 호스트로부터 논리 주소(LA: Logical Address)를 입력받고, 이를 물리 주소(PA: Physical Address)로 변환한다. 여기에서, 물리 주소(PA)는 실제 플래시 메모리에서 사용할 주소이다.
대표적인 주소 맵핑 방법으로, 페이지 맵핑(Page Mapping), 블록 맵핑 방법(Block Mapping), 그리고 혼합 맵핑(Hybrid Mapping) 등이 있다. 페이지 맵핑을 위해서는 페이지 맵핑 테이블이 사용된다. 페이지 맵핑 테이블은 페이지 단위로 맵핑 동작을 수행하기 위한 것이며, 논리 페이지 어드레스 및 이에 대응하는 물리 페이지 어드레스를 저장한다. 블록 맵핑을 위해서는 블록 맵핑 테이블이 사용된다. 블록 맵핑 테이블은 블록 단위로 맵핑 동작을 수행하기 위한 것이며, 논리 블록 어드레스 및 이에 대응하는 물리 블록 어드레스를 저장한다. 혼합 맵핑 방법은 페이지 맵핑과 블록 맵핑을 혼용하는 주소 맵핑 방법이다.
일반적으로 하나의 메모리 블록은 수십 또는 수백 개의 페이지로 구성된다. 따라서 페이지 맵핑 방법을 사용할 경우에, 맵핑 테이블의 크기는 블록 맵핑 방법을 사용할 때보다 수십 배 또는 수백 배 증가하게 된다. 즉, 페이지 맵핑 방법은 맵핑 테이블을 사용하는 데 너무 많은 메모리 공간을 필요로 한다는 단점을 갖는다.
반면, 블록 맵핑 방법은 블록 단위로 맵핑 동작을 수행하기 때문에, 페이지 맵핑 방법에 비해 맵핑 테이블의 크기를 줄일 수 있는 장점을 갖는다. 그러나 블록 맵핑 방법에 의하면, 블록 내에서 페이지의 위치가 고정되기 때문에, 많은 머지 연산을 수행해야 한다는 단점을 갖는다.
본 발명의 목적은 혼합 맵핑 방식을 적용할 때, 머지 동작의 효율을 높일 수 있는 주소 맵핑을 수행하는 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 혼합 맵핑 방식을 사용하는 저장 장치의 주소 맵핑 방법은, 버퍼 메모리에 저장된 쓰기 데이터가 적어도 하나의 수퍼 연속 블록을 구성하는지를 판단하는 단계, 그리고 상기 판단 결과에 따라 상기 쓰기 데이터에 대한 주소 맵핑 모드를 결정하는 단계를 포함하되, 상기 쓰기 데이터 중 상기 수퍼 연속 블록을 구성하는 부분은 블록 맵핑 모드에 따라 논리 주소를 물리 주소로 맵핑한다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 외부로부터 제공되는 쓰기 데이터를 일시 저장하는 버퍼 메모리, 상기 쓰기 데이터가 프로그램되는 불휘발성 메모리 장치, 그리고 상기 쓰기 데이터에 대응하는 논리 어드레스를 상기 불휘발성 메모리 장치의 물리 어드레스에 맵핑하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 버퍼 메모리에 저장되는 데이터가 적어도 하나의 수퍼 연속 블록을 구성하는지에 따라 블록 맵핑 모드 또는 페이지 맵핑 모드 중 어느 하나를 주소 맵핑 방식으로 적용한다.
본 발명의 다른 실시 예에 따른 저장 매체로서 불휘발성 메모리 장치를 포함하는 사용자 장치는, 쓰기 데이터를 상기 불휘발성 메모리에 프로그램하기 위한 논리 어드레스와 주소 맵핑 모드를 생성하는 호스트, 그리고 상기 주소 맵핑 모드를 참조하여 복수의 맵핑 방식들 중 어느 하나를 선택하고 선택된 주소 맵핑 방식에 따라 상기 논리 어드레스를 상기 불휘발성 메모리 장치의 물리 어드레스로 맵핑하는 데이터 저장 장치를 포함한다.
본 발명에 따르면, 머지 동작의 효율을 높여 고속의 데이터 쓰기 동작이 가능하고, 긴 수명을 가지는 데이터 저장 장치 및 사용자 장치를 구현할 수 있다.
도 1은 본 발명의 실시 예에 따른 소프트웨어 계층을 보여주는 도면이다.
도 2는 본 발명의 제 1 실시 예에 따른 데이터 저장 장치를 보여주는 블록도이다.
도 3은 도 2의 메모리 컨트롤러의 소프트웨어 계층 구조를 보여주는 블록도이다.
도 4는 도 2의 메모리 컨트롤러와 불휘발성 메모리 장치의 연결 관계를 예시적으로 보여주는 블록도이다.
도 5는 본 발명의 데이터 인터리빙을 예시적으로 보여주는 도면이다.
도 6은 본 발명의 논리 어드레스와 수퍼 연속 블록의 관계를 보여주는 도면이다.
도 7은 버퍼 계층의 주소 맵핑 모드(AM_mode) 결정의 과정을 간략히 보여주는 블록도이다.
도 8은 연속 데이터의 논리 어드레스와 수퍼 연속 블록의 구성 관계를 예시적으로 보여주는 표이다.
도 9 및 도 10은 본 발명의 실시 예에 따른 주소 맵핑을 간략히 보여주는 타이밍도 들이다.
도 11은 본 발명의 제 1 실시 예에 따른 주소 맵핑 방법을 보여주는 순서도이다.
도 12는 본 발명의 제 2 실시 예에 따른 사용자 장치를 간략히 보여주는 블록도이다.
도 13은 도 12의 호스트에서 저장 장치로 전달되는 쓰기 요청의 구성을 간략히 보여주는 도면이다.
도 14는 도 12의 사용자 장치의 소프트웨어 계층 구조를 보여주는 블록도이다.
도 15는 본 발명의 제 2 실시 예에 따른 주소 맵핑 방법을 보여주는 순서도이다.
도 16은 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(SSD) 시스템을 보여주는 블록도이다.
도 17은 본 발명에 따른 메모리 시스템을 보여주는 블록도이다.
도 18은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 저장 매체로서 플래시 메모리 장치를 한 예로서 사용할 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 저장 매체로서 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
낸드 플래시 메모리와 같은 불휘발성 메모리 장치를 사용하는 저장 장치에서는 대용량 데이터(예를 들면, 미디어 데이터)의 쓰기 성능이 중요하다. 하지만, 메타 데이터(Meta data)와 같이 빈번하게 업데이트되는 데이터의 쓰기 성능도 중요하다. 빈번하게 업데이트되는 데이터는 랜덤 쓰기 패턴에 해당된다. 따라서, 데이터의 속성에 따라서 블록 맵핑 방식, 또는 페이지 맵핑 방식을 선택적으로 사용하는 혼합 맵핑 방식의 주소 맵핑이 사용된다.
혼합 맵핑 방식을 사용하는 저장 장치에서, 쓰기 성능의 핵심은 맵핑 모드의 결정 방법에 있다. 입력되는 데이터의 패턴에 따라 페이지 맵핑 모드나 블록 맵핑 모드를 적절하게 결정하면 쓰기 성능을 극대화할 수 있다. 왜냐하면, 쓰기 성능은 머지 방법과 머지 회수에 따라 결정되기 때문이다. 쓰기 데이터에 대한 적절한 주소 맵핑 모드의 선택은 머지 횟수의 감축이나 실질적인 페이지 복사 횟수의 감축을 가능케 한다.
도 1은 본 발명의 실시 예에 따른 사용자 장치의 소프트웨어의 계층 구조를 보여주는 도면이다. 도 1을 참조하면, 본 발명에 따른 사용자 장치의 소프트웨어는 애플리케이션(10), 파일 시스템(20), 버퍼 계층(30), 플래시 변환 계층(40) 및 불휘발성 메모리(50)로 표현될 수 있다.
운영체제(OS) 계층은 최상위의 애플리케이션(10)과 파일 시스템(20)으로 나뉜다. 파일 시스템(20)은 자료를 계층적으로 저장, 탐색, 접근, 조작하기 위한 추상적 자료구조의 집합으로 정의된다.
버퍼 계층(30)은 파일 시스템(20)으로부터의 요청에 의해서 버퍼 메모리에 저장된 데이터를 관리한다. 예를 들면, 버퍼 계층(30)은 사용자 장치의 호스트 측에 구비되는 램과 같은 워킹 메모리(Working memory)에 저장되는 데이터를 관리한다. 또는, 버퍼 계층(30)은 데이터 저장 장치에 구비되는 버퍼 메모리에 저장되는 데이터를 관리한다. 특히, 본 발명의 버퍼 계층(30)은 워킹 메모리 또는 버퍼 메모리에 저장되는 데이터의 사이즈 및 연속성을 참조하여 주소 맵핑 모드(AM_mode)를 결정할 수 있다. 즉, 혼합 맵핑 방식의 주소 맵핑을 수행하는 데이터 저장 장치의 맵핑 모드를 버퍼 계층(30)이 제어할 수 있다. 버퍼 계층(30)에서 결정된 맵핑 모드에 의해서, 페이지의 복사가 빈번하게 발생하는 카피 머지의 횟수를 줄일 수 있다.
플래시 변환 계층(40, FTL)은 파일 시스템(20) 및 버퍼 계층(30)과 불휘발성 메모리 장치(50) 사이에서 불휘발성 메모리 장치(50)의 삭제 연산을 감추기 위한 인터페이싱을 제공한다. 플래시 변환 계층(40)에 의하여 쓰기 전 소거(Erase-before-Write) 및 소거 단위와 쓰기 단위의 불일치라는 불휘발성 메모리 장치(50)의 단점이 보완될 수 있다. 또한, 플래시 변환 계층(40)은 불휘발성 메모리 장치(50)의 기입 동작시, 파일 시스템이 생성한 논리 주소(LA)를 불휘발성 메모리 장치(50)의 물리 주소(PA)로 맵핑(Mapping)시킨다. 특히, 플래시 변환 계층(40)은 버퍼 계층(30)으로부터 제공되는 주소 맵핑 모드(AM_mode)를 참조하여 대응하는 데이터에 대한 주소 맵핑을 실시한다.
이상에서 설명된 사용자 장치의 소프트웨어의 계층 구조에 따르면, 버퍼 계층(30)은 버퍼링 데이터의 패턴을 검출한다. 그리고 검출된 버퍼링 데이터의 패턴에 따라서 플래시 변환 계층(40)이 수행할 주소 맵핑 모드를 결정한다. 혼합 맵핑 방식에서 이러한 맵핑 모드의 선택에 의하여 데이터의 머지에 소요되는 비용을 최소화할 수 있다. 여기서, 버퍼 계층(30)은 사용자 장치의 호스트 측에서 구동되거나, 또는, 저장 장치의 인터페이스에서 구동될 수 있을 것이다.
도 2는 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 2를 참조하면, 본 발명에 따른 사용자 장치(100)는 호스트(110)와 저장 장치(120)를 포함한다. 저장 장치(120)는 메모리 컨트롤러(122), 불휘발성 메모리 장치(124) 및 버퍼 메모리(126)를 포함한다.
호스트(110)는 쓰기 요청이 발생하면, 쓰기 데이터(Data)와 논리 어드레스(Logical Address: LA)를 저장 장치(120)로 전달한다. 개인용 컴퓨터나, 노트북과 같은 사용자 장치(100)에서 논리 어드레스(LA)는 섹터(Sector) 단위로 제공된다. 즉, 쓰기 요청시, 호스트(110)는 데이터의 기입을 위한 시작 어드레스(LBA)와 섹터의 수(nSC)를 저장 장치(120)로 제공한다.
저장 장치(120)는 호스트(110)로부터의 쓰기 데이터를 버퍼 메모리(126)에 버퍼링한다. 그리고 저장 장치(120)는 버퍼링된 쓰기 데이터를 불휘발성 메모리 장치(124)에 프로그램할 것이다.
메모리 컨트롤러(122)는 호스트(110)와 불휘발성 메모리 장치(124)를 인터페이싱한다. 메모리 컨트롤러(122)는 호스트(110)의 쓰기 명령에 응답하여 호스트(110)로부터 제공되는 데이터를 불휘발성 메모리 장치(124)에 기입하기 위하여 불휘발성 메모리 장치(124)를 제어한다. 또한, 메모리 컨트롤러(122)는 호스트(110)로부터의 읽기 명령에 응답하여 불휘발성 메모리 장치(124)의 독출 동작을 제어한다.
특히, 메모리 컨트롤러(122)는 호스트(110)로부터 제공되는 쓰기 데이터를 버퍼 메모리(126)에 저장한다. 메모리 컨트롤러(122)는 버퍼 메모리(126)에 저장되는 데이터의 패턴에 따라 쓰기 데이터의 맵핑 모드를 결정한다. 메모리 컨트롤러(122)는 특정 단위와 같거나 큰 쓰기 데이터가 연속적으로 버퍼 메모리(126)에 저장되면, 버퍼링된 데이터에 대한 주소 맵핑 방식으로 블록 맵핑 모드를 선택한다. 반면, 메모리 컨트롤러(122)는 특정 단위보다 작은 쓰기 데이터가 버퍼 메모리(126)에 저장되면, 버퍼링된 데이터에 대한 주소 맵핑 방식으로 페이지 맵핑 모드를 선택한다.
불휘발성 메모리 장치(124)는 메모리 컨트롤러(100)의 제어에 따라, 소거 동작, 읽기 동작 또는 쓰기 동작을 수행한다. 불휘발성 메모리 장치(124)는 복수의 메모리 블록으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 복수의 불휘발성 메모리가 적어도 2개의 채널을 통해서 연결되는 경우, 퍼포먼스의 향상을 위해서 불휘발성 메모리 장치(124)는 메모리 인터리빙 방식에 따라 제어된다.
하나의 채널에는 복수의 메모리 장치들이 연결되며, 이들 메모리 장치들은 각각 동일한 데이터 버스에 연결된다. 저장 매체로서 메모리 장치들이 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 그리고 저장 매체로서 휘발성 메모리 장치(예를 들면, DRAM)가 포함될 수도 있다.
버퍼 메모리(126)에는 호스트(110)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리로부터 읽혀진 데이터가 일시 저장된다. 호스트(110)의 읽기 요청시에 불휘발성 메모리 장치(124)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(126)는 캐시된 데이터를 직접 호스트(110)로 제공하는 캐시 기능을 지원할 수 있다. 이때, 불휘발성 메모리 장치(124)로의 액세스는 발생하지 않는다. 일반적으로, 호스트(110)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 저장 장치(120)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(110)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(126)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다.
버퍼 메모리(126)는 대용량의 보조 기억 장치로 사용되는 SSD와 같은 저장 장치(120)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(126)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
이상의 설명에 따르면, 본 발명의 저장 장치(120)는 버퍼 메모리(126)에 저장되는 데이터의 버퍼링 패턴이나 크기에 따라 주소 맵핑 모드를 결정한다. 연속적으로 입력되는 데이터가 기준 용량 단위를 충족하면, 기준 용량에 해당되는 데이터들은 모두 블록 맵핑 테이블로 관리된다. 만일, 연속적이라 하더라도 기준 용량을 넘지 못하는 데이터는 페이지 맵핑 테이블로 관리될 것이다. 물론, 랜덤하게 입력되는 데이터는 페이지 맵핑 테이블로 관리될 것이다.
이러한 주소 맵핑 방식을 사용하면, 페이지 복사가 빈번한 머지 동작의 횟수를 줄일 수 있다. 따라서, 머지 동작의 성능에 메모리 시스템이 크게 영향을 받는 경우에는, 고속의 데이터 쓰기가 가능하다. 그리고 본 발명의 실시 예에 따른 사용자 장치에 따르면, 저장 장치(120)의 수명 단축 및 성능 저하를 방지할 수 있다.
특히, 최근 활발히 진행되는 반도체 디스크 장치(Solid State Disk: 이하, SSD)와 같은 메모리 시스템에서 본 발명의 기술적 특징이 채용될 수 있다. 이 경우, 메모리 컨트롤러(122)는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
도 3은 도 2의 저장 장치를 구동하기 위한 소프트웨어의 계층 구조를 좀더 구체적으로 보여주는 도면이다. 도 3을 참조하면, 본 발명의 메모리 컨트롤러(122, 도 2 참조)에서 구동되는 소프트웨어 계층(200)은 호스트 인터페이스 계층(211), 플래시 변환 계층(213) 및 플래시 인터페이스 계층(214)을 포함한다.
호스트 인터페이스 계층(211, HIL)은 호스트(110)와 저장 장치(120) 사이의 인터페이싱을 제공한다. 호스트 인터페이스 계층(211, HIL)은 호스트(110, 도 2 참조)와의 인터페이싱과 저장 장치(120, 도 2 참조)의 내부 캐시 기능을 담당한다. 호스트 인터페이스 계층(211)은 호스트(110)로부터 제공되는 읽기 또는 쓰기와 같은 요청(Request)을 디코딩한다.
그리고 호스트 인터페이스 계층(211)은 호스트(110)로 전송되는 데이터에 대한 캐시 기능을 제공한다. 즉, 버퍼 메모리(126, 도 2 참조)에 현재 존재하는 데이터와 읽기 요청된 데이터가 매칭되는 경우, 호스트 인터페이스 계층(212)은 불휘발성 메모리 장치(124)로의 액세스 없이 버퍼 메모리(126)에 저장된 데이터를 호스트(110)로 전달한다. 이러한 기능은, 호스트 인터페이스 계층(211)에 포함되는 버퍼 관리 모듈(212)에서 수행할 것이다.
버퍼 관리 모듈(212)은 또한, 버퍼 메모리(126)에 저장되는 데이터의 패턴을 모니터링한다. 모니터링 결과에 따라 버퍼 관리 모듈(212)은 해당 데이터의 주소 맵핑 모드를 결정할 수 있다. 버퍼 관리 모듈(212)은 연속적으로 입력되는 데이터가 특정 데이터 단위를 구성하면, 특정 데이터 단위에 해당되는 데이터에 대해서는 블록 맵핑 테이블에서 관리하도록 플래시 변환 계층(213)에 주소 맵핑 모드(AM_mode)를 전달한다. 그리고 버퍼 관리 모듈(212)은 특정 데이터 단위를 구성하지 못하는 연속 데이터나, 랜덤 쓰기 패턴으로 버퍼 메모리(126)에 저장되는 데이터에 대해서는 페이지 맵핑 테이블에서 관리하도록 플래시 변환 계층(213)에 맵핑 모드(AM_mode)를 전달한다.
플래시 변환 계층(FTL, 213)은 주소 맵핑 모드(AM_mode)에 대응하는 주소 맵핑 방식에 따라 논리 어드레스(LA)를 불휘발성 메모리 장치(124)의 물리 어드레스로 맵핑한다. 만일 주소 맵핑 모드(AM_mode)가 블록 맵핑 모드를 지시하면, 플래시 변환 계층(213)은 쓰기 요청된 데이터의 논리 주소(LA)를 블록 맵핑 방식에 따라 물리 주소(PA)로 변환한다. 만일 주소 맵핑 모드(AM_mode)가 페이지 맵핑 모드를 지시하면, 플래시 변환 계층(213)은 쓰기 요청된 데이터의 논리 주소(LA)를 페이지 맵핑 방식에 따라 물리 주소(PA)로 변환한다.
이밖에, 플래시 변환 계층(213)은 호스트(110)의 파일 시스템(File system)의 읽기/쓰기 요청에 응답하여 웨어 레벨링, 그리고 가비지 컬렉션을 수행할 수 있다. 웨어 레벨링 동작은 불휘발성 메모리 장치(124)의 메모리 블록들의 소거 카운트(Erase count)를 참조하여 사용 회수를 평균화하는 동작이다. 가비지 컬렉션 동작은 불휘발성 메모리 장치(124)의 각 블록들에 흩어져 있는 유효 데이터들을 모아서 하나의 블록에 채우는 동작이다.
플래시 인터페이스 계층(FIL, 214)은 메모리 컨트롤러(122)와 불휘발성 메모리 장치(124)와의 인터페이싱 동작을 위한 로우 레벨(Low level) 동작을 수행한다. 예를 들면, 불휘발성 메모리 장치(124)의 하드웨어를 제어하기 위한 로우 레벨 드라이버(LLD), 불휘발성 메모리 장치(124)로부터 독출된 데이터의 에러를 정정하기 위한 에러 정정 코드(Error correction code: ECC) 및 오류 블록 관리 모듈(Bad Block Management: BBM) 등이 플래시 인터페이스 계층(214)에 포함된다. 즉, 플래시 변환 계층(213)의 제어에 따라 플래시 인터페이스 계층(214)은 메모리 컨트롤러(122)와 불휘발성 메모리 장치(124) 간의 데이터 교환을 담당한다. 특히, 복수의 채널 또는 웨이를 통해서 메모리 인터리빙을 사용하는 경우 플래시 인터페이스 계층(214)은 인터리빙을 위한 채널 및 웨이의 제어 동작을 수행한다.
상술한 버퍼 관리 모듈(212)의 기능에 따라, 저장 장치(120)는 버퍼 메모리(126)에 저장되는 데이터의 연속성 및 크기를 참조하여 맵핑 모드를 결정할 수 있다. 연속적인 데이터가 특정 데이터 단위를 구성하는 경우, 특정 데이터 단위는 블록 맵핑 방식으로 관리된다. 연속적이라 하더라도, 특정 데이터 단위를 구성하지 못하거나, 랜덤 패턴으로 버퍼링되는 데이터는 페이지 맵핑 방식으로 관리될 것이다. 따라서, 블록 맵핑 방식으로 관리되는 데이터는 이후 교환 머지(Swap merge) 방식에 의해서 관리될 것이다. 따라서, 머지 동작시 페이지 복사의 회수가 줄고, 머지 속도를 높일 수 있어 불휘발성 메모리 장치(124)의 수명 연장을 기대할 수 있다.
도 4는 상술한 도 2의 메모리 컨트롤러(122)와 불휘발성 메모리 장치의 연결 관계를 예시적으로 보여주는 블록도이다. 도 4를 참조하면, 메모리 컨트롤러(122)는 복수의 채널(CH0, CH1)을 통해서 불휘발성 메모리 장치들(NVM_00, NVM_01, NVM_10, NVM_11)과 연결된다. 여기서, 채널의 수 또는 각 채널에 연결되는 불휘발성 메모리 장치의 수는 다양하게 변경될 수 있음은 잘 이해될 것이다. 다만, 설명의 편의를 위해서 2개 채널과, 채널당 2개의 불휘발성 메모리 장치들이 연결되는 것으로 가정하기로 한다.
채널(CH0)에는 불휘발성 메모리 장치들(NVM_00, NVM_01) 각각의 입출력 포트(예를 들면, 8비트 I/O 포트)가 연결된다. 채널(CH1)에는 불휘발성 메모리 장치들(NVM_10, NVM_11) 각각의 입출력 포트(예를 들면, 8비트 I/O 포트)가 연결된다. 메모리 컨트롤러(122)는 버퍼 메모리(126, 도 2 참조)에 저장된 쓰기 데이터를 불휘발성 메모리 장치들(NVM_00, NVM_01, NVM_10, NVM_11)에 저장한다. 이때, 쓰기 데이터는 불휘발성 메모리 장치들(NVM_00, NVM_01, NVM_10, NVM_11) 각각에 분산되어 저장된다. 이러한 데이터 관리 방식을 데이터 인터리빙(Data interleaving)이라 한다. 쓰기 데이터에 대한 데이터 인터리빙 동작은 플래시 인터페이스 계층(214, 도 3 참조)에서 담당할 것이다.
데이터 인터리빙을 위하여, 불휘발성 메모리 장치들은 채널과 웨이(Way, 또는 뱅크) 단위로 관리된다. 각 채널들에 연결되는 불휘발성 메모리 장치들의 병렬화를 극대화하기 위하여, 메모리 컨트롤러(122)는 연속적인 논리적 메모리 영역을 채널과 웨이로 분산하여 할당한다. 연속적으로 쓰기 데이터가 입력되면 웨이0(124a)의 채널들(CH0, CH1)을 통해서 페이지 데이터들은 불휘발성 메모리 장치들(NVM_00, NVM_10)에 순차적으로 기입된다. 그리고 웨이0(124a)에 대한 1회의 쓰기 동작이 완료되면, 웨이1(124b)의 채널들(CH0, CH1)을 통해서 페이지 데이터들은 불휘발성 메모리 장치들(NVM_01, NVM_11)에 순차적으로 기입된다.
예를 들면, 4개 페이지 크기의 데이터가 연속적으로 입력되면, 첫 번째 페이지는 웨이0(124a)의 채널0(CH0)에 연결된 불휘발성 메모리 장치(NVM_00)에 기입된다. 그리고 첫 번째 페이지에 대한 프로그램이 종료되기 이전에, 두 번째 페이지는 웨이0(124a)의 채널1(CH1)에 연결된 불휘발성 메모리 장치(NVM_10)에 프로그램된다. 세 번째 페이지는 웨이1(124b)의 채널0(CH0)에 연결된 불휘발성 메모리 장치(NVM_01)에 기입된다. 그리고 세 번째 페이지에 대한 프로그램이 종료되기 이전에, 네 번째 페이지는 웨이1(124b)의 채널1(CH1)에 연결된 불휘발성 메모리 장치(NVM_11)에 프로그램된다.
비록 여기서, 2채널/2웨이 구조에서의 데이터 인터리빙을 설명하였으나, 인터리빙의 효율은 채널 수가 많을수록 그리고 웨이(Way)의 수가 많을수록 효율적이다.
도 5는 본 발명의 실시 예에 따른 데이터 인터리빙의 예를 간략히 보여주는 도면이다. 도 5를 참조하면, 데이터 인터리빙을 위하여 하나의 데이터 단위가 정의된다. 연속적으로 입력되는 데이터가 하나의 인터리빙 단위를 구성하는 경우, 이를 수퍼 연속 블록(Super Sequential Block: 이하, SSB)이라 정의하기로 한다. 여기서, 하나의 인터리빙 단위는 데이터 인터리빙을 통하여 불휘발성 메모리 장치들 각각에 대응하는 메모리 블록들에 채워질 수 있는 데이터 양을 의미한다. 인터리빙 단위의 예로 4개의 메모리 블록들을 포함하는 경우를 예로 들기로 한다.
먼저, 수퍼 연속 블록0(310, SSB_0)은 불휘발성 메모리 장치들(NVM_00, NVM_01, NVM_10, NVM_11) 각각에 대응하는 메모리 블록들(311, 312, 313, 314)로 구성된다. 버퍼 메모리(126, 도 2 참조)에 연속적인 데이터가 입력되면, 프로그램 동작시에는 메모리 블록들 각각에 순차적으로 페이지 단위의 데이터가 기입될 것이다. 논리 페이지(LPN0)는 메모리 블록(311)에, 논리 페이지(LPN1)는 메모리 블록(312)에, 논리 페이지(LPN2)는 메모리 블록(313)에, 그리고 논리 페이지(LPN3)은 메모리 블록(314)에 할당된다. 이어지는 논리 페이지(LPN4)는 다시 메모리 블록(311)에 할당되고, 이러한 방식으로 쓰기 동작시의 데이터 인터리빙이 이루어진다. 연속되는 쓰기 데이터의 인터리빙 방식에 의한 기입 순서는 화살표로 도시된 순서(①→②→③→④→…)와 같다.
4개의 메모리 블록들에 채워지는 연속 데이터가 하나의 수퍼 연속 블록(SSB_0)을 구성한다. 마찬가지로, 연속되는 데이터의 사이즈가 커지면, 복수의 수퍼 연속 블록들(SSB_1, SSB_2, SSB_3)이 구성될 수 있을 것이다. 본 발명의 실시 예에 따르면, 연속적으로 입력되는 데이터 중에서 수퍼 연속 블록(SSB)을 구성하는 데이터는 블록 맵핑 모드로 주소 맵핑된다. 반면, 랜덤 쓰기 패턴으로 입력되는 데이터나, 또는, 연속 쓰기 패턴으로 입력되더라도 수퍼 연속 블록을 구성하지 못하는 데이터는 페이지 맵핑 모드로 주소 맵핑된다.
도 6은 본 발명에 따른 논리 어드레스(LBA)와 수퍼 연속 블록(SSB)의 맵핑 관계를 간략히 보여주는 도면이다. 도 6을 참조하면, 호스트(110, 도 2 참조)로부터 제공되는 논리 어드레스와 수퍼 연속 블록(SSB)의 범위가 간략히 도시되어 있다.
호스트(110)로부터의 논리 어드레스는 섹터 단위(예를 들면, 512-Byte)로 제공된다. 하나의 페이지가 32개 섹터로 구성되고 하나의 블록이 128개의 페이지로 구성되는 경우, 하나의 수퍼 연속 블록(SSB)은 16384 섹터로 구성될 수 있다. 따라서, 연속적으로 제공되는 쓰기 데이터의 논리 어드레스(LBA, nSC) 범위가 수퍼 연속 블록들(SSB_0, SSB_1, SSB_2, SSB_3, …) 중에 적어도 하나 이상에 중첩되는 경우, 중첩되는 수퍼 연속 블록에 대응하는 데이터는 블록 맵핑 모드로 주소 맵핑된다. 반면, 랜덤 쓰기 패턴으로 입력되거나, 연속적인 쓰기 데이터라 할지라도 논리 어드레스의 범위가 수퍼 연속 블록들 중 적어도 하나를 완전히 커버하지 못하는 데이터는 페이지 맵핑 모드로 주소 맵핑될 것이다.
혼합 맵핑 방식에서는 입력되는 논리 어드레스에 대한 블록의 물리 어드레스는 대개 고정적으로 주어진다. 따라서, 수퍼 연속 블록의 어드레스 범위는 고정적으로 주어질 수 있을 것이다.
도 7은 맵핑 모드를 결정하는 버퍼 계층의 구성을 보여주는 블록도이다. 도 7을 참조하면, 호스트(100, 도 2 참조)로부터의 요청에 따라 호스트 인터페이스 계층(410)의 맵핑 모드 결정 절차가 간략히 도시된다.
호스트(110)는 쓰기 요청 발생시, 저장 장치(120)로 쓰기 명령어와 함께 논리 어드레스(LBA, nSC)를 전달한다. 여기서, LBA(Logical Block Address)는 하드 디스크 기반의 논리 어드레스로, 쓰기 데이터가 기입되는 메모리 영역의 시작 어드레스이다. nSC는 쓰기 데이터가 기입되는 섹터(Sector)의 수를 의미한다. 즉, LBA와 nSC에 의해서 쓰기 데이터가 저장될 영역이 결정될 수 있다.
호스트 인터페이스 계층(410)은 호스트(110, 도 2 참조)로부터 제공되는 논리 어드레스(LBA, nSC)를 입력받는다. 그리고 호스트 인터페이스 계층(410)은 논리 어드레스(LBA, nSC)에 대응하는 쓰기 데이터를 버퍼 메모리(126, 도 2 참조)에 저장할 것이다. 호스트 인터페이스 계층(410)은 논리 어드레스(LBA, nSC)를 참조하여 쓰기 데이터가 수퍼 연속 블록(SSB)을 구성하는지 판단한다.
호스트 인터페이스 계층(410)은 연속되는 쓰기 데이터의 일부 또는 전부가 수퍼 연속 블록을 구성하는 경우, 수퍼 연속 블록에 할당되는 데이터의 맵핑 방식을 블록 맵핑으로 결정한다. 반면, 호스트 인터페이스 계층(410)은 쓰기 데이터의 어드레스가 고정된 수퍼 연속 블록(SSB)의 어드레스 범위를 커버하지 못하면, 해당 데이터를 페이지 맵핑 방식으로 주소 맵핑한다. 호스트 인터페이스 계층(410)은 쓰기 데이터의 사이즈가 수퍼 연속 블록의 사이즈보다 크더라도, 수퍼 연속 블록을 구성하지 못하면 페이지 맵핑 모드로 주소 맵핑할 것이다. 다시 말하면, 논리 어드레스의 시작점(LBA)이 수퍼 연속 블록과 매칭되지 못하여 하나의 완전한 수퍼 연속 블록에 채워지지 않으면, 대응하는 데이터를 페이지 맵핑으로 결정한다. 물론, 연속 쓰기 데이터가 아닌 랜덤 쓰기 패턴으로 입력되는 데이터는 모두 페이지 맵핑 모드로 주소 맵핑될 것이다.
이러한 주소 맵핑 모드의 결정을 위하여, 호스트 인터페이스 계층(410)은 수퍼 연속 블록 검출 모듈(415, SSB Detection Module)을 포함할 수 있다. 입력되는 논리 어드레스(LBA, nSC)나 버퍼링 되는 쓰기 데이터의 패턴을 참조하여, 수퍼 연속 블록 검출 모듈(415)은 쓰기 데이터의 수퍼 연속 블록 구성 여부를 판단할 수 있다.
호스트 인터페이스 계층(410)에 의해서 결정된 주소 맵핑 모드(AM_mode)에 따라 플래시 변환 계층(420, FTL)은 쓰기 데이터에 대한 주소 맵핑 동작을 수행한다. 만일, 쓰기 요청되는 데이터의 주소 맵핑 모드로 블록 맵핑 모드가 선택되면, 플래시 변환 계층(420)은 해당 데이터의 논리 주소를 블록 맵핑 테이블(422)에서 관리한다. 반면, 쓰기 요청되는 데이터의 주소 맵핑 모드로 페이지 맵핑 모드가 선택되면, 플래시 변환 계층(420)은 해당 데이터의 논리 주소를 페이지 맵핑 테이블(424)에서 관리한다.
도 8은 도 7의 버퍼 계층의 맵핑 모드 결정 방법을 예시적으로 보여주는 테이블이다. 도 8을 참조하면, 4개의 연속 데이터(Data1, Data2, Data3, Data4)에 대한 버퍼링 및 그에 대한 맵핑 모드 결정 방법이 도시되어 있다.
먼저, 연속 데이터(Data1)가 논리 어드레스(LBA=0, nSC=16384)에 의하여 쓰기 요청되는 예를 살펴보자. 연속 데이터(Data1)는 버퍼 메모리(126)에 저장된 후에, 논리 어드레스(LBA=0, nSC=16384)에 대응하는 물리 어드레스(Physical address)에 맵핑될 것이다. 이 경우, 연속적으로 쓰기 요청된 데이터(Data1)는 수퍼 연속 블록(SSB_0)에 채워질 수 있다. 연속 데이터(Data1)는 하나의 수퍼 연속 블록을 구성할 수 있다. 따라서, 쓰기 요청된 데이터(Data1)에 대한 주소 맵핑 모드는 블록 맵핑으로 결정될 수 있다.
논리 어드레스(LBA=8192, nSC=11809)에 의하여 쓰기 요청되는 연속 데이터(Data2)에 대한 예를 살펴보자. 연속 데이터(Data2)는 버퍼 메모리(126)에 저장된 후에, 논리 어드레스(LBA=8192, nSC=11809)에 대응하는 물리 어드레스(Physical address)에 맵핑될 것이다. 이 경우, 연속적으로 쓰기 요청된 데이터(Data2)는 수퍼 연속 블록(SSB_0)과 수퍼 연속 블록(SSB_1)에 각각 나뉘어 할당된다. 연속 데이터(Data2)는 하나의 완전한 수퍼 연속 블록을 구성하지 못한다. 따라서, 쓰기 요청된 데이터(Data2)는 페이지 맵핑 방식으로 주소 맵핑될 것이다.
논리 어드레스(LBA=8192, nSC=41809)에 의하여 쓰기 요청되는 연속 데이터(Data3)에 대한 예를 살펴보자. 연속 데이터(Data3)는 버퍼 메모리(126)에 저장된 후에, 논리 어드레스(LBA=8192, nSC=41809)에 대응하는 물리 어드레스(Physical address)에 맵핑될 것이다. 이 경우, 연속적으로 쓰기 요청된 데이터(Data3)는 수퍼 연속 블록들(SSB_1, SSB_2)에 채워질 것이다. 그리고 연속 데이터(Data3)는 수퍼 연속 블록(SSB_0) 및 수퍼 연속 블록(SSB_3)의 일부에도 각각 할당될 것이다. 하지만, 하나의 완전한 수퍼 연속 블록을 구성하는 수퍼 연속 블록(SSB_1, SSB_2)에 대응하는 데이터만이 블록 맵핑 방식에 따라 어드레스가 맵핑될 것이다. 그리고 데이터(Data3) 중에서, 수퍼 연속 블록(SSB_0) 및 수퍼 연속 블록(SSB_3)의 일부에 할당된 데이터는 각각 페이지 맵핑 방식에 따라 주소가 맵핑될 것이다.
논리 어드레스(LBA=10000, nSC=6001)에 의하여 쓰기 요청되는 연속 데이터(Data4)에 대한 예를 살펴보자. 연속 데이터(Data4)는 비록 연속 쓰기 패턴에 해당되지만, 데이터의 크기가 작아 하나의 수퍼 연속 블록에 채워지지 못한다. 연속 데이터(Data4)는 수퍼 연속 블록(SSB_0)의 일부만 채울 수 있다. 따라서, 연속 데이터(Data4)는 페이지 맵핑 방식에 따라 주소 맵핑이 이루어져야 할 것이다.
여기서, 4개의 연속 데이터(Data1, Data2, Data3, Data4)들을 예로 하여 본 발명의 주소 맵핑 방법이 설명되었다. 물론, 랜덤 쓰기 패턴으로 기입되는 데이터는 수퍼 연속 블록의 구성 여부에 관계없이 페이지 맵핑 모드로 주소 맵핑될 것이다.
도 9는 본 발명의 실시 예에 따른 주소 맵핑을 간략히 보여주는 타이밍도이다. 도 9를 참조하면, 연속적으로 입력되는 쓰기 데이터 중에서 수퍼 연속 블록을 구성하는 데이터는 블록 맵핑 방식에 따라 주소를 맵핑한다. 반면, 연속적으로 입력되는 쓰기 데이터 중에서 완전한 수퍼 연속 블록을 구성하지 못하는 데이터는 페이지 맵핑 방식에 따라 주소를 맵핑한다.
버퍼 메모리(126, 도 2 참조)에 저장되는 연속 데이터의 일부는 수퍼 연속 블록들(SSB_n, SSB_n+1)을 구성한다. 반면, 연속 데이터의 나머지 일부는 수퍼 연속 블록(SSB_n-1)의 일부와, 수퍼 연속 블록(SSB_n+2)의 일부에만 채워진다. 따라서, 수퍼 연속 블록(SSB_n, SSB_n+1)에 대응하는 데이터는 모두 블록 맵핑 모드로 맵핑된다. 반면, 수퍼 연속 블록(SSB_n-1, SSB_n+2)의 일부만을 채운 데이터는 페이지 맵핑 모드로 처리될 것이다.
도 10은 본 발명의 실시 예에 따른 주소 맵핑의 예를 보여주는 타이밍도이다. 도 10을 참조하면, 연속적으로 입력되는 쓰기 데이터의 사이즈가 비록 하나의 수퍼 연속 블록의 사이즈보다 크다고 할지라도 페이지 맵핑으로 처리되는 예가 도시되어 있다.
연속적으로 입력되는 쓰기 데이터의 사이즈가 비록 하나의 수퍼 연속 블록의 사이즈(예를 들면, 8MByte)보다 크다고 가정하자. 하지만, 연속 쓰기 데이터가 할당되는 논리 어드레스는 수퍼 연속 블록(SSB_m)과 수퍼 연속 블록(SSB_m+1)에 걸쳐 있는 경우에는 하나의 완전한 수퍼 연속 블록을 구성하지는 못한다. 이 경우, 데이터는 페이지 맵핑 방식으로 처리되어야 할 것이다.
도 11은 본 발명의 실시 예에 따른 주소 맵핑 방법을 보여주는 순서도이다. 도 11을 참조하면, 버퍼 계층(Buffer Layer)과 플래시 변환 계층(FTL)은 쓰기 요청되는 데이터의 논리 어드레스를 참조하여 주소 맵핑 모드를 결정한다. 호스트(110, 도 2 참조)로부터 쓰기 데이터 및 논리 어드레스가 제공되면, 메모리 컨트롤러(120, 도 2 참조)에 의한 주소 맵핑 동작이 시작된다.
단계 S110에서, 메모리 컨트롤러(122)는 호스트(110)로부터 쓰기 요청을 전달받는다. 메모리 컨트롤러(122)는 호스트(110)로부터 제공되는 쓰기 데이터를 버퍼 메모리(126)에 일시 저장한다.
단계 S120에서, 메모리 컨트롤러(122)는 쓰기 요청되는 데이터의 쓰기 패턴을 검출한다. 예를 들면, 메모리 컨트롤러(122)는 쓰기 요청되는 데이터의 어드레스를 참조하여 연속 쓰기 패턴에 해당하는지 또는 랜덤 쓰기 패턴에 해당하는지 판단한다.
단계 S130에서, 쓰기 패턴의 검출 결과에 따라 동작 절차가 분기된다. 만일, 쓰기 요청된 데이터의 쓰기 패턴이 랜덤 쓰기 패턴으로 검출되면(No), 절차는 해당 데이터를 페이지 맵핑 모드에 따라 관리하기 위한 단계 S170으로 이동한다. 반면, 쓰기 요청된 데이터의 쓰기 패턴이 연속 쓰기 패턴으로 검출되면(Yes), 절차는 해당 데이터가 수퍼 연속 블록(SSB)을 구성하는지 판단하기 위한 단계 S140으로 이동한다.
단계 S140에서, 메모리 컨트롤러(122)는 쓰기 요청시 호스트(110)로부터 제공된 논리 어드레스(LBA, nSC)를 수퍼 연속 블록(SSB) 조합에 따라 분류한다. 수퍼 연속 블록(SSB)에 대응하는 논리 어드레스는 고정된 값이다. 따라서, 메모리 컨트롤러(122)는 호스트(110)로부터 제공되는 연속 쓰기 데이터의 논리 어드레스를 참조하여 수퍼 연속 블록(SSB)의 구성 여부를 판단할 수 있다.
단계 S150에서, 메모리 컨트롤러(122)는 쓰기 데이터의 논리 어드레스를 분석하여 수퍼 연속 블록(SSB)을 구성하는지의 여부를 판단한다. 만일, 쓰기 요청되어 버퍼 메모리에 저장되는 데이터가 수퍼 연속 블록(SSB)을 구성하는 경우, 절차는 단계 S160으로 이동한다.
단계 S160에서는, 수퍼 연속 블록(SSB)을 구성하는 데이터 부분에 대해서는 블록 맵핑 모드의 주소 맵핑을 적용한다. 그리고 수퍼 연속 블록(SSB)을 구성하지 못하는 나머지 데이터 부분에 대해서는 페이지 맵핑 모드의 주소 맵핑을 적용한다.
반면, 메모리 컨트롤러(122)는 쓰기 데이터의 논리 어드레스의 분석 결과, 수퍼 연속 블록(SSB)을 구성하지 못하는 경우, 절차는 단계 S170으로 이동한다. 단계 S170에서, 쓰기 요청된 데이터는 페이지 맵핑 테이블에 등록될 것이다. 그리고 불휘발성 메모리 장치(124)에 기입될 때, 페이지 맵핑 방식에 따라 논리 페이지와 물리 페이지가 맵핑될 것이다.
이상의 주소 맵핑 방법에 따르면, 버퍼 메모리에 저장되는 데이터의 패턴이나, 크기에 따라 수퍼 연속 블록의 구성 여부가 결정된다. 수퍼 연속 블록의 구성이 불가한 데이터는 페이지 맵핑 테이블에, 수퍼 연속 블록을 구성하는 데이터는 블록 맵핑 테이블에 등록할 것이다. 블록 맵핑에 의해서 연속 데이터가 기입된 메모리 블록들은 모두 교환 머지(Swap merge)에 의해서 관리될 수 있다. 따라서, 머지 동작시 실질적인 페이지 복사 회수가 획기적으로 줄어든다.
도 12는 본 발명의 제 2 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 12를 참조하면, 본 발명에 따른 사용자 장치(500)는 호스트(510)와 저장 장치(520)를 포함한다. 저장 장치(520)는 메모리 컨트롤러(522), 불휘발성 메모리 장치(524) 및 버퍼 메모리(526)를 포함한다.
호스트(510)는 쓰기 요청이 발생하면, 쓰기 데이터(Data)와 논리 어드레스(Logical Address: LA)를 저장 장치(520)로 전달한다. 하지만, 호스트(510)는 저장 장치로 쓰기 요청을 전달하기 전에 파일 시스템(File system) 상에서 쓰기 요청이 발생할 것이다. 그리고 호스트(510)에는 저장 장치(520)로 전달하기 이전에 쓰기 요청할 데이터가 워킹 메모리(512)에 저장될 것이다. 호스트(510)는 워킹 메모리(512)에 저장되는 데이터를 참조하여 저장 장치(520)의 주소 맵핑 모드를 판단할 수 있다. 즉, 쓰기 요청되는 데이터가 호스트(510)의 워킹 메모리(512)에 저장될 때의 정보를 참조하여 해당 데이터 또는 해당 데이터의 일부에 대한 주소 맵핑 모드를 결정할 수 있다.
예를 들면, 호스트(510)의 장치 드라이버(514)가 수퍼 연속 블록(SSB)에 대응하는 논리 어드레스 테이블을 참조하여 호스트(510)에서 수퍼 연속 블록의 구성 여부를 판단할 수 있다. 워킹 메모리(512)에 저장되는 데이터나, 장치 드라이버(514)로 전달되는 논리 어드레스를 참조하여, 장치 드라이버(514)는 쓰기 요청되는 연속 데이터의 수퍼 연속 블록(SSB)의 구성 여부를 판단할 수 있다. 이러한 동작을 위해서는, 호스트(510)에는 수퍼 연속 블록에 대응하는 논리 주소의 범위를 정의하는 수퍼 연속 블록 주소 테이블(516, SSB Address table)을 포함해야 할 것이다.
수퍼 연속 블록 주소 테이블(516)과의 비교를 통해서, 장치 드라이버(514)는 쓰기 요청 데이터에 대한 맵핑 모드를 결정한다. 그리고 장치 드라이버(514)는 결정된 주소 맵핑 모드(AM_mode) 정보를 쓰기 요청시 저장 장치(520)로 전달할 수 있다.
저장 장치(520)의 메모리 컨트롤러(522)는 호스트(510)와 불휘발성 메모리 장치(524)를 인터페이싱한다. 메모리 컨트롤러(522)는 호스트(510)의 쓰기 요청에 포함되는 논리 어드레스(LBA, nSC), 그리고 논리 어드레스 영역들 각각에 대한 맵핑 모드(Map_mode)를 참조하여, 논리 어드레스와 물리 어드레스 사이의 주소 사상을 실시한다.
불휘발성 메모리 장치(524)는 메모리 컨트롤러(522)의 제어에 따라, 소거 동작, 읽기 동작 또는 쓰기 동작을 수행한다. 불휘발성 메모리 장치(524)는 복수의 메모리 블록으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 복수의 불휘발성 메모리가 적어도 2개의 채널을 통해서 연결되는 경우, 퍼포먼스의 향상을 위해서 불휘발성 메모리 장치(524)는 메모리 인터리빙 방식에 따라 제어된다.
저장 장치(520)에는 버퍼 메모리(526)가 포함될 수 있다. 또한, 자원이 한정된 저장 장치(520)의 내부에서 맵핑 모드를 결정하기 위해서는 저장 장치의 부담이 클 수 있다. 그러나 자원의 제한이 적은 호스트(510)에서 맵핑 모드를 결정하면, 퍼포먼스 면이나 자원의 활용 면에서 더 유리할 수 있을 것이다.
도 13은 호스트(510)에서 저장 장치(520)로 쓰기 요청시 제공되는 데이터의 구성을 간략히 보여주는 도면이다. 도 13을 참조하면, 쓰기 요청이 발생하면 호스트(510)는 쓰기 명령(CMD, 531)과 논리 어드레스(LBA-533, nSC-535), 그리고 쓰기 데이터(Data, 539)를 전달한다. 특히, 본 발명에 따른 실시 예에 따른 쓰기 요청에는 데이터에 대한 주소 맵핑 모드(AM_mode, 537)가 추가된다.
주소 맵핑 모드(AM_mode, 537)에는 각 논리 어드레스 영역들에 대한 주소 맵핑 방식이 포함된다. 즉, 논리 어드레스(LBA, nSC)에 대응하는 복수의 데이터 영역들에 대한 주소 맵핑 모드(AM_mode, 537)가 각각 포함될 수 있다. 즉, 수퍼 연속 블록(SSB)을 구성하는 데이터 단위는 블록 맵핑 모드로 주소 맵핑 모드(AM_mode)가 정의될 것이다. 수퍼 연속 블록(SSB)을 구성하지 못하는 데이터 단위나 랜덤 쓰기 패턴으로 입력되는 데이터의 경우에는 페이지 맵핑 모드로 주소 맵핑 모드(AM_mode)가 정의될 것이다.
도 14는 도 12의 사용자 장치를 구동하기 위한 소프트웨어의 계층 구조를 보여주는 도면이다. 도 14를 참조하면, 호스트 계층(610)에는 파일 시스템(612) 및 장치 드라이버(614)가 포함된다. 그리고 저장 장치 계층(620)에는 호스트 인터페이스 계층(622), 플래시 변환 계층(624), 그리고 플래시 인터페이스 계층(626)의 소프트웨어 계층이 포함될 수 있다.
호스트 계층(610)의 파일 시스템(612)은, 파일의 생성 및 삭제에 따른 저장 장치(520)로의 액세스 요청을 생성한다. 호스트(510)의 버퍼 메모리에 생성된 파일에 대한 쓰기 요청이 발생하면, 파일 시스템(612)은 해당 파일에 대한 쓰기 요청을 장치 드라이버(614)에 전달한다. 장치 드라이버(614)는 수퍼 연속 블록(SSB)의 어드레스 정보를 참조하여, 쓰기 요청된 데이터가 수퍼 연속 블록(SSB)을 구성하는지의 여부를 판단한다. 판단 여부에 따라 장치 드라이버(614)는 쓰기 요청된 데이터의 각 유닛별 주소 맵핑 모드를 결정한다. 그리고 결정된 주소 맵핑 모드는 쓰기 요청 명령이 제공되는 시점에 저장 장치 계층(620)에 전달된다.
저장 장치 계층(610)은 호스트(610)로부터 전달된 쓰기 요청에 응답하여 데이터의 논리 어드레스를 불휘발성 메모리 장치의 물리 어드레스로 맵핑한다. 그리고 맵핑된 물리 어드레스에 따라 인터리빙 방식으로 쓰기 요청된 데이터가 불휘발성 메모리 장치에 프로그램될 것이다. 이러한 동작을 위해 저장 장치 계층(620)에는 호스트 인터페이스 계층(622), 플래시 변환 계층(624) 및 플래시 인터페이스 계층(626)이 포함된다.
호스트 인터페이스 계층(HIL, 622)은 호스트(510)와 저장 장치(520) 사이의 인터페이싱을 제공한다. 그리고 호스트 인터페이스 계층(622)은 저장 장치(520)의 내부 캐시 기능을 담당할 수 있다. 호스트 인터페이스 계층(622)은 호스트(510)로부터 제공되는 읽기 또는 쓰기와 같은 요청(Request)을 디코딩한다.
플래시 변환 계층(FTL, 624)은 호스트(510)로부터 제공되는 논리 주소(Logical address)를 불휘발성 메모리의 물리 주소(Physical address)로 변환하는 역할을 수행한다. 이밖에 플래시 변환 계층(624)은 웨어 레벨링(Wear leveling) 동작을 수행하기 위한 소거 카운트(Erase count)를 수행한다. 또한, 플래시 변환 계층(624)은 불휘발성 메모리의 각 블록들에 흩어져 있는 유효 데이터들을 모아서 하나의 블록에 채우는 가비지 컬렉션(Garbage Collection) 동작을 지원한다.
플래시 인터페이스 계층(626)은 메모리 컨트롤러(522)와 불휘발성 메모리 장치(524)와의 인터페이싱 동작을 위한 로우 레벨(Low level) 동작을 수행한다. 예를 들면, 불휘발성 메모리 장치(524)의 하드웨어를 제어하기 위한 로우 레벨 드라이버(LLD), 불휘발성 메모리 장치(524)로부터 독출된 데이터의 에러를 정정하기 위한 에러 정정 코드(Error correction code: ECC) 및 오류 블록 관리 모듈(Bad Block Management : BBM) 등이 플래시 인터페이스 계층(626)에 포함된다. 즉, 플래시 변환 계층(624)의 제어에 따라 플래시 인터페이스 계층(626)은 메모리 컨트롤러(522)와 불휘발성 메모리 장치(524) 간의 데이터 교환을 담당한다.
본 발명의 제 2 실시 예에 따르면, 호스트(510)에서의 쓰기 요청의 발생시에 해당 데이터에 대한 주소 맵핑 모드는 호스트(510)에서 결정될 수 있다. 따라서, 한정적 자원을 가진 저장 장치(520)의 부담을 줄이고도 저장 장치(520)의 머지 동작 효율을 극대화할 수 있다.
도 15는 본 발명의 제 2 실시 예에 따른 주소 맵핑 방법을 보여주는 순서도이다. 도 15를 참조하면, 쓰기 요청의 발생시에 호스트(512, 도 12 참조)에서 수퍼 연속 블록(SSB)의 구성 여부를 판단한다. 판단 결과에 따라 호스트(510)는 해당 데이터의 주소 맵핑 모드를 결정한다. 그리고 호스트(510)가 저장 장치(520, 도 12 참조)에 쓰기 요청을 전달할 때, 주소 맵핑 모드(AM_mode)를 함께 전달할 것이다.
단계 S210에서, 호스트(510)의 장치 드라이버(514, 도 12 참조)는 쓰기 요청에 대응하는 논리 어드레스(LBA, nSC)을 전달받는다.
단계 S220에서, 장치 드라이버(514)는 쓰기 요청되는 데이터의 쓰기 패턴을 검출한다. 예를 들면, 장치 드라이버(514)는 쓰기 요청되는 데이터의 어드레스를 참조하여 연속 쓰기 패턴에 해당하는지 또는 랜덤 쓰기 패턴에 해당하는지 판단한다.
단계 S230에서, 쓰기 패턴의 검출 결과에 따라 동작 절차가 분기된다. 만일, 쓰기 요청된 데이터의 쓰기 패턴이 랜덤 쓰기 패턴으로 검출되면(No), 절차는 해당 데이터를 페이지 맵핑 모드에 따라 관리하도록 저장 장치에 지시하기 위한 단계 S270으로 이동한다. 반면, 쓰기 요청된 데이터의 쓰기 패턴이 연속 쓰기 패턴으로 검출되면(Yes), 절차는 해당 데이터가 수퍼 연속 블록(SSB)을 구성하는지 판단하기 위한 단계 S240으로 이동한다.
단계 S240에서, 호스트(510)의 내부 동작에 의해서 쓰기 요청이 발생하면, 장치 드라이버(514)는 쓰기 요청될 데이터에 대한 주소 맵핑 방식을 결정한다. 즉, 장치 드라이버(514)는 SSB 범위 정보(516)를 참조하여 쓰기 요청된 데이터가 수퍼 연속 블록(SSB)을 구성하는지 판단한다.
단계 S250에서, 수퍼 연속 블록(SSB)을 구성하는 데이터에 대한 처리를 위해서 절차는 단계 S260으로 이동한다. 그리고 수퍼 연속 블록(SSB)을 구성하지 못하거나 랜덤 패턴으로 쓰기 요청되는 데이터를 처리하기 위해서 절차는 단계 S270으로 이동한다.
단계 S260에서, 장치 드라이버(514)는 수퍼 연속 블록을 구성하는 데이터에 대한 쓰기 요청시, 블록 맵핑 방식으로 주소 맵핑을 하도록 저장 장치(520)에 지시한다.
단계 S270에서, 장치 드라이버(514)는 수퍼 연속 블록(SSB)을 구성하지 못하거나 랜덤 패턴으로 쓰기 요청되는 데이터에 대해서 페이지 맵핑 방식으로 주소 맵핑하도록 저장 장치(520)에 지시한다.
이상의 주소 맵핑 방법에 따르면, 호스트(510)에서 쓰기 요청되는 데이터에 대한 주소 맵핑 방식이 결정된다. 호스트(510)의 지시에 따라 저장 장치(520)는 수퍼 연속 블록(SSB)의 구성이 불가한 데이터는 페이지 맵핑 테이블에, 수퍼 연속 블록을 구성하는 데이터는 블록 맵핑 테이블에 등록할 것이다. 블록 맵핑에 의해서 연속 데이터가 기입된 메모리 블록들은 모두 교환 머지(Swap merge)에 의해서 관리될 수 있다. 따라서, 머지 동작시 실질적인 페이지 복사 회수가 획기적으로 줄어든다.
도 16은 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(SSD) 시스템을 보여주는 블록도이다. 도 14를 참조하면, SSD 시스템(1000)은 호스트(1100)와 SSD(1200)를 포함한다. SSD(1200)는 SSD 컨트롤러(1210), 버퍼 메모리(1220), 그리고 불휘발성 메모리 장치(1230)를 포함한다.
SSD 컨트롤러(1210)는 호스트(1100)와 SSD(1200)와의 물리적 연결을 제공한다. 즉, SSD 컨트롤러(1210)는 호스트(1100)의 버스 포맷(Bus format)에 대응하여 SSD(1200)와의 인터페이싱을 제공한다. 특히, SSD 컨트롤러(1210)는 호스트(1100)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, SSD 컨트롤러(1210)는 불휘발성 메모리 장치(1230)를 액세스한다. 호스트(1100)의 버스 포맷(Bus format)으로 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 포함될 수 있다.
여기서, SSD 컨트롤러(1210)는 주소 맵핑시 블록 맵핑 방식과 페이지 맵핑 방식을 모두 사용하는 혼합 맵핑 방식을 적용한다. 본 발명의 실시 예에 따른 수퍼 연속 블록에 대한 검출 및 주소 맵핑 모드의 결정은 호스트(1100)에서 수행될 수도 있다. 또는, 쓰기 요청시 전달되는 논리 어드레스(LBA, nSC)를 참조하여 SSD 컨트롤러(1210)에서 맵핑 모드를 결정할 수도 있을 것이다.
버퍼 메모리(1220)에는 호스트(1100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치(1230)로부터 읽혀진 데이터가 일시 저장된다. 호스트(1100)의 읽기 요청시에 불휘발성 메모리 장치(1230)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(1220)는 캐시된 데이터를 직접 호스트(1100)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(1100)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(1200)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(1100)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(1220)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다.
버퍼 메모리(1220)는 대용량의 보조 기억 장치로 사용되는 SSD(1200)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(1220)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
불휘발성 메모리 장치(1230)는 SSD(1200)의 저장 매체로서 제공된다. 예를 들면, 불휘발성 메모리 장치(1230)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 제공될 수 있다. 불휘발성 메모리 장치(1230)는 복수의 메모리 장치로 구성될 수 있다. 이 경우, 각각의 메모리 장치들은 채널 단위로 SSD 컨트롤러(1210)와 연결된다. 저장 매체로서 불휘발성 메모리 장치(1230)가 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 그리고 저장 매체로서 휘발성 메모리 장치(예를 들면, DRAM)이 포함될 수도 있다.
도 17은 본 발명에 따른 메모리 시스템(2000)을 간략히 보여주는 블록도이다. 도 17을 참조하면, 본 발명에 따른 메모리 시스템(2000)은 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)를 포함한다.
메모리 컨트롤러(2100)는 불휘발성 메모리 장치(2200)를 제어하도록 구성될 것이다. 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)의 결합에 의해 메모리 카드로 제공될 수 있을 것이다. SRAM(2110)은 프로세싱 유닛(2120)의 동작 메모리로 사용된다. 호스트 인터페이스(2130)는 메모리 시스템(2000)과 접속되는 호스트의 데이터 교환 프로토콜을 구비한다. 에러 정정 블록(2140)은 불휘발성 메모리 장치(2200)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 메모리 인터페이스(2150)는 본 발명의 불휘발성 메모리 장치(2200)와 인터페이싱 한다. 프로세싱 유닛(2120)은 메모리 컨트롤러(2100)의 데이터 교환을 위한 제반 제어 동작을 수행한다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(2000)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
여기서, 메모리 컨트롤러(2100)는 혼합 맵핑 방식에 따라 호스트로부터의 논리 주소를 불휘발성 메모리 장치(2200)의 물리 주소로 맵핑한다. 본 발명의 실시 예에 따른 수퍼 연속 블록에 대한 검출 및 주소 맵핑 모드의 결정은 호스트(미도시됨)에서 수행될 수도 있다. 또는, 쓰기 요청시 전달되는 논리 어드레스(LBA, nSC)를 참조하여 메모리 컨트롤러(2100)에서 맵핑 모드를 결정할 수도 있을 것이다. 메모리 컨트롤러(2100)는 호스트의 쓰기 요청에 따라 SRAM(2110)에 저장되는 쓰기 데이터를 참조하여 블록 맵핑 방식 또는 페이지 맵핑 방식 중 어느 하나의 주소 맵핑 모드를 결정할 수 있다.
불휘발성 메모리 장치(2200)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다. 이상의 본 발명의 메모리 시스템(2000)은 에러의 발생 확률이 낮은 고신뢰성의 저장 매체로 제공될 수 있다. 이 경우, 메모리 컨트롤러(2100)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
도 18에는 플래시 메모리 장치(3120)를 포함한 컴퓨팅 시스템(3000)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(3000)은 시스템 버스(3600)에 전기적으로 연결된 마이크로프로세서(3200), 램(3300), 사용자 인터페이스(3400), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(3500) 및 메모리 시스템(3100)을 포함한다.
본 발명에 따른 컴퓨팅 시스템(3000)이 모바일 장치인 경우, 컴퓨팅 시스템(3000)의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템(3000)에는 응용 칩세트(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 시스템(3100)은, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 또는, 메모리 시스템(3100)은, 퓨전 플래시 메모리(예를 들면, 원낸드 플래시 메모리)로 제공될 수 있다.
여기서, 메모리 시스템(3100)은 메모리 컨트롤러(3110)와 플래시 메모리(3120)을 포함한다. 메모리 컨트롤러(3110)는 혼합 맵핑 방식에 따라 호스트로부터의 논리 주소를 플래시 메모리(3120)의 물리 주소로 맵핑한다. 본 발명의 실시 예에 따른 수퍼 연속 블록에 대한 검출 및 주소 맵핑 모드의 결정은 호스트(예를 들면, CPU)에서 수행될 수도 있다. 또는, 쓰기 요청시 전달되는 논리 어드레스(LBA, nSC)를 참조하여 메모리 컨트롤러(3110)에서 맵핑 모드를 결정할 수도 있을 것이다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), BGAs(Ball grid arrays), CSPs(Chip scale packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-Line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-Line Package), MQFP(Plastic Metric Quad Flat Pack), TQFP(Thin Quad Flatpack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline), TQFP(Thin Quad Flatpack), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 애플리케이션 20 : 파일 시스템
30 : 버퍼 계층 40 : 플래시 변환 계층
50 : 불휘발성 메모리 장치 110, 510 : 호스트
120, 520 : 저장 장치 122, 522 : 메모리 컨트롤러
124, 524 : 불휘발성 메모리 장치 126, 526 : 버퍼 메모리
211 : 호스트 인터페이스 계층 212 : 버퍼 관리 모듈
213 : 플래시 변환 계층 214 : 플래시 인터페이스 계층
310, 320, 330, 340 : 메모리 블록 410 : 버퍼 계층
415 : SSB 결정 모듈 420 : 플래시 변환 계층
422 : 블록 맵핑 테이블 424 : 페이지 맵핑 테이블
512 : 워킹 메모리 514 : 장치 드라이버
516 : SSB 범위 정보 1100 : 호스트
1200 : SSD 1210 : SSD 컨트롤러
1220 : 버퍼 메모리 1230 : 불휘발성 메모리 장치
2100 : 메모리 컨트롤러 2110 : 에스램
2120 : 프로세싱 유닛 2130 : 호스트 인터페이스
2140 : 에러 정정 블록 2140 : 메모리 인터페이스
2200 : 불휘발성 메모리 장치 3000 : 컴퓨팅 시스템
3100 : 메모리 시스템 3110 : 메모리 컨트롤러
3120 : 플래시 메모리 장치 3200 : 중앙처리장치
3300 : 램 3400 : 유저 인터페이스
3500 : 모뎀 3600 : 시스템 버스

Claims (21)

  1. 혼합 맵핑 방식을 사용하며, 복수의 채널에 연결되는 복수의 불휘발성 메모리 장치들을 포함하는 저장 장치의 주소 맵핑 방법에 있어서:
    버퍼 메모리에 저장된 쓰기 요청된 쓰기 데이터의 논리 주소가 연속 쓰기 패턴에 대응하는지 판단하는 단계;
    상기 버퍼 메모리에 저장된 연속 쓰기 패턴의 상기 쓰기 데이터가 적어도 하나의 수퍼 연속 블록을 구성하는지를 판단하는 단계;
    상기 판단 결과에 따라 상기 쓰기 데이터 중 상기 수퍼 연속 블록을 구성하는 부분은 블록 맵핑 모드에 따라 논리 주소를 물리 주소로 맵핑하고, 상기 쓰기 데이터 중 상기 수퍼 연속 블록을 구성하지 못하는 부분은 페이지 맵핑 모드에 따라 논리 주소를 물리 주소로 맵핑하는 단계; 그리고
    상기 맵핑 결과에 따라 상기 쓰기 데이터를 상기 복수의 불휘발성 메모리 장치들에 기입하는 단계를 포함하되,
    상기 쓰기 데이터 중에서 상기 수퍼 연속 블록을 구성하는 부분의 페이지들은 채널 단위로 인터리빙되어 상기 복수의 불휘발성 메모리 장치들에 기입되는 주소 맵핑 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 수퍼 연속 블록은 복수의 블록들로 구성되며, 상기 복수의 블록들 각각에는 상기 쓰기 데이터가 분산되어 저장되는 주소 맵핑 방법.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 쓰기 데이터가 랜덤 쓰기 패턴으로 입력된 경우, 상기 쓰기 데이터의 논리 주소는 페이지 맵핑 방식에 따라 물리 주소에 맵핑되는 주소 맵핑 방법.
  7. 제 1 항에 있어서,
    상기 쓰기 데이터를 버퍼 메모리에 저장하는 단계를 더 포함하는 주소 맵핑 방법.
  8. 외부로부터 제공되는 쓰기 데이터를 일시 저장하는 버퍼 메모리;
    상기 쓰기 데이터가 프로그램되는 복수의 불휘발성 메모리 장치들; 그리고
    복수의 채널들을 통하여 상기 불휘발성 메모리 장치들과 연결되고, 상기 쓰기 데이터에 대응하는 논리 어드레스를 상기 복수의 불휘발성 메모리 장치들의 물리 어드레스에 맵핑하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는 상기 버퍼 메모리에 저장되는 상기 쓰기 데이터가 상기 불휘발성 메모리 장치로의 데이터 인터리빙 단위에 대응하는 적어도 하나의 수퍼 연속 블록을 구성하는지에 따라 블록 맵핑 모드 또는 페이지 맵핑 모드로 주소를 맵핑하되,
    상기 메모리 컨트롤러는 상기 쓰기 데이터 중 상기 수퍼 연속 블록을 구성하지 못하는 부분은 페이지 맵핑 모드에 따라 논리 주소를 물리 주소로 맵핑하고, 상기 쓰기 데이터 중 상기 수퍼 연속 블록을 구성하는 부분은 블록 맵핑 모드에 따라 논리 주소를 물리 주소로 맵핑하며,
    상기 쓰기 데이터 중에서 상기 수퍼 연속 블록을 구성하는 부분의 페이지들은 채널 단위로 인터리빙되어 상기 복수의 불휘발성 메모리 장치들에 기입되는 데이터 저장 장치.
  9. 제 8 항에 있어서,
    상기 메모리 컨트롤러는 상기 쓰기 데이터를 불휘발성 메모리 장치에 포함되는 복수의 메모리 블록들에 분산하여 프로그램하는 데이터 저장 장치.
  10. 제 8 항에 있어서,
    상기 메모리 컨트롤러는,
    외부와의 인터페이싱을 제공하고, 상기 버퍼 메모리의 입출력을 제어하는 호스트 인터페이스 계층;
    상기 버퍼 메모리에 저장된 쓰기 데이터의 논리 주소를 상기 불휘발성 메모리 장치의 물리 주소로 맵핑하는 플래시 변환 계층; 그리고
    상기 맵핑된 물리 주소로 상기 쓰기 데이터를 분산하여 프로그램하는 플래시 인터페이스 계층을 포함하는 소프트웨어 구조를 갖는 데이터 저장 장치.
  11. 제 10 항에 있어서,
    상기 호스트 인터페이스 계층은, 상기 버퍼 메모리에 저장되는 쓰기 데이터가 적어도 하나의 수퍼 연속 블록을 구성하는지에 따라 주소 맵핑 방식을 결정하는 버퍼 관리 모듈을 포함하는 데이터 저장 장치.
  12. 제 10 항에 있어서,
    상기 호스트 인터페이스 계층은, 외부로부터 제공되는 상기 논리 어드레스를 참조하여 상기 쓰기 데이터가 적어도 하나의 수퍼 연속 블록을 구성하는지를 검출하는 수퍼 연속 블록 결정 모듈을 포함하는 데이터 저장 장치.
  13. 제 12 항에 있어서,
    상기 수퍼 연속 블록 결정 모듈은 상기 쓰기 데이터가 적어도 하나의 수퍼 연속 블록을 구성하면, 상기 적어도 하나의 수퍼 연속 블록에 대응하는 데이터를 블록 맵핑 방식에 따라 주소 맵핑이 이루어지도록 상기 플래시 변환 계층을 제어하는 데이터 저장 장치.
  14. 제 13 항에 있어서,
    상기 플래시 변환 계층은 상기 적어도 하나의 수퍼 연속 블록에 대응하는 데이터를 상기 불휘발성 메모리 장치에 기입할 때, 교환 머지 방식으로 관리하는 데이터 저장 장치.
  15. 저장 매체로서 복수의 불휘발성 메모리 장치들을 포함하는 사용자 장치에 있어서:
    쓰기 데이터를 상기 복수의 불휘발성 메모리 장치들에 프로그램하기 위한 논리 주소와 주소 맵핑 모드를 생성하며, 상기 쓰기 데이터 중 적어도 하나의 수퍼 연속 블록을 구성하지 못하는 부분은 페이지 맵핑 모드로 결정하고, 상기 쓰기 데이터 중 적어도 하나의 상기 수퍼 연속 블록을 구성하는 부분은 블록 맵핑 모드로 결정하는 호스트; 그리고
    상기 호스트에 의해서 결정된 주소 맵핑 모드를 참조하여 블록 맵핑 방식과 페이지 맵핑 방식 중 어느 하나를 선택하고 선택된 주소 맵핑 방식에 따라 상기 쓰기 데이터의 상기 논리 어드레스를 상기 불휘발성 메모리 장치의 물리 어드레스로 맵핑하는 데이터 저장 장치를 포함하되,
    상기 데이터 저장 장치는 상기 쓰기 데이터 중에서 상기 수퍼 연속 블록을 구성하는 부분의 페이지들은 채널 단위로 인터리빙하여 상기 복수의 불휘발성 메모리 장치들에 기입하는 사용자 장치.
  16. 삭제
  17. 삭제
  18. 제 15 항에 있어서,
    상기 수퍼 연속 블록은 상기 불휘발성 메모리 장치에 포함되는 복수의 메모리 블록들에 대응하는 사용자 장치.
  19. 제 18 항에 있어서,
    상기 복수의 메모리 블록들 각각에 상기 쓰기 데이터가 분산되어 프로그램되도록 상기 논리 어드레스가 상기 물리 어드레스로 맵핑되는 사용자 장치.
  20. 제 15 항에 있어서,
    상기 호스트는,
    생성된 상기 쓰기 데이터를 일시 저장하기 위한 워킹 메모리; 그리고
    상기 쓰기 데이터의 사이즈 또는 상기 논리 어드레스를 참조하여 상기 쓰기 데이터의 주소 맵핑 모드를 결정하는 장치 드라이버를 포함하는 사용자 장치.
  21. 제 20 항에 있어서,
    상기 호스트는 상기 쓰기 데이터가 상기 수퍼 연속 블록을 구성하는지 판단하기 위한 수퍼 연속 블록 범위 정보를 포함하는 사용자 장치.
KR1020100113466A 2010-11-15 2010-11-15 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법 Active KR101739556B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020100113466A KR101739556B1 (ko) 2010-11-15 2010-11-15 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법
US13/239,474 US9563549B2 (en) 2010-11-15 2011-09-22 Data storage device, user device and data write method
DE102011086227A DE102011086227A1 (de) 2010-11-15 2011-11-11 Adress mapping method, data storage device and user device
JP2011248579A JP2012108912A (ja) 2010-11-15 2011-11-14 データ格納装置、使用者装置及びそれの住所マッピング方法
TW100141589A TW201227741A (en) 2010-11-15 2011-11-15 Data storage device, user device and data write method
CN2011103617705A CN102591589A (zh) 2010-11-15 2011-11-15 数据存储设备、用户设备以及数据写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100113466A KR101739556B1 (ko) 2010-11-15 2010-11-15 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법

Publications (2)

Publication Number Publication Date
KR20120052028A KR20120052028A (ko) 2012-05-23
KR101739556B1 true KR101739556B1 (ko) 2017-05-24

Family

ID=45999107

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100113466A Active KR101739556B1 (ko) 2010-11-15 2010-11-15 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법

Country Status (6)

Country Link
US (1) US9563549B2 (ko)
JP (1) JP2012108912A (ko)
KR (1) KR101739556B1 (ko)
CN (1) CN102591589A (ko)
DE (1) DE102011086227A1 (ko)
TW (1) TW201227741A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10776008B2 (en) 2018-05-04 2020-09-15 SK Hynix Inc. Memory system and operating method thereof
US10901653B2 (en) 2018-04-18 2021-01-26 SK Hynix Inc. Electronic device
KR20210027625A (ko) * 2019-08-29 2021-03-11 동국대학교 산학협력단 데이터 저장장치의 주소 맵핑 테이블 운용 방법
US11561712B2 (en) 2020-10-20 2023-01-24 SK Hynix Inc. Storage device and method of operating the same

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5708216B2 (ja) * 2011-05-09 2015-04-30 ソニー株式会社 フラッシュメモリ装置、メモリ制御装置、メモリ制御方法、ストレージシステム
WO2012166050A1 (en) * 2011-05-30 2012-12-06 Agency For Science, Technology And Research Buffer management apparatus and method
US9619174B2 (en) * 2011-12-30 2017-04-11 Intel Corporation Write mechanism for storage class memory
US9213632B1 (en) 2012-02-29 2015-12-15 Marvell International Ltd. Systems and methods for data storage devices to use external resources
US9141296B2 (en) 2012-05-31 2015-09-22 Sandisk Technologies Inc. Method and host device for packing and dispatching read and write commands
US20130326169A1 (en) * 2012-05-31 2013-12-05 Amir Shaharabany Method and Storage Device for Detection of Streaming Data Based on Logged Read/Write Transactions
CN102819494B (zh) * 2012-07-18 2015-09-02 山东华芯半导体有限公司 一种闪存顺序写入时的优化方法
JP2014044490A (ja) * 2012-08-24 2014-03-13 Toshiba Corp ホスト装置及びメモリデバイス
KR20140040998A (ko) * 2012-09-27 2014-04-04 삼성전자주식회사 로그기반 데이터 저장 시스템의 관리방법
US8547745B1 (en) * 2012-11-16 2013-10-01 Avalanche Technology, Inc. Host-managed logical mass storage device using magnetic random access memory (MRAM)
KR102011135B1 (ko) * 2012-12-11 2019-08-14 삼성전자주식회사 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
TWI497292B (zh) * 2013-01-09 2015-08-21 Memoright Corp A Method of Finding System Data Based on Index Block
TWI528379B (zh) * 2014-02-05 2016-04-01 廣明光電股份有限公司 固態硬碟的讀取方法
KR102157668B1 (ko) * 2014-04-03 2020-09-22 에스케이하이닉스 주식회사 호스트와 통신하는 메모리 컨트롤러, 그것의 동작 방법 및 그것을 포함하는 컴퓨팅 시스템
CN106663070B (zh) * 2014-07-01 2020-06-16 雷蛇(亚太)私人有限公司 数据储存系统、计算系统、用于控制数据储存系统的方法以及用于控制计算系统的方法
KR20160016421A (ko) * 2014-08-05 2016-02-15 삼성전자주식회사 비휘발성 메모리 기반의 스토리지 장치의 최적화 방법
KR102344834B1 (ko) 2014-09-24 2021-12-29 삼성전자주식회사 솔리드 스테이트 드라이브 및 이를 포함하는 컴퓨팅 시스템
US9489141B2 (en) 2014-12-18 2016-11-08 Nimble Storage, Inc. Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device
US10049035B1 (en) * 2015-03-10 2018-08-14 Reniac, Inc. Stream memory management unit (SMMU)
KR20160112135A (ko) * 2015-03-18 2016-09-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9904490B2 (en) * 2015-06-26 2018-02-27 Toshiba Memory Corporation Solid-state mass storage device and method for persisting volatile data to non-volatile media
CN112765006B (zh) * 2015-07-21 2024-09-03 北京忆恒创源科技股份有限公司 固态硬盘日志生成方法及其固态硬盘
KR102491622B1 (ko) 2015-11-17 2023-01-25 삼성전자주식회사 가상 어드레스 생성기의 동작 방법과 이를 포함하는 시스템의 동작 방법
KR102535700B1 (ko) * 2016-02-01 2023-05-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10296264B2 (en) 2016-02-09 2019-05-21 Samsung Electronics Co., Ltd. Automatic I/O stream selection for storage devices
US20170255387A1 (en) * 2016-03-04 2017-09-07 Intel Corporation Techniques to Cause a Content Pattern to be Stored to Memory Cells of a Memory Device
US9971691B2 (en) * 2016-09-12 2018-05-15 Intel Corporation Selevtive application of interleave based on type of data to be stored in memory
KR102681659B1 (ko) * 2017-01-12 2024-07-05 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN108319618B (zh) * 2017-01-17 2022-05-06 阿里巴巴集团控股有限公司 一种分布式存储系统的数据分布控制方法、系统及装置
KR102398186B1 (ko) * 2017-07-03 2022-05-17 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
KR102398181B1 (ko) * 2017-07-03 2022-05-17 삼성전자주식회사 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치
TWI645288B (zh) 2017-07-04 2018-12-21 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US10719394B2 (en) * 2017-10-25 2020-07-21 Innogrit Technologies Co., Ltd. Systems and methods for fast access of non-volatile storage devices
KR20190083051A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
CN110018897B (zh) 2018-01-09 2023-05-26 阿里巴巴集团控股有限公司 数据处理方法、装置及计算设备
US10564868B2 (en) * 2018-01-24 2020-02-18 Western Digital Technologies, Inc. Method and apparatus for selecting power states in storage devices
US11709539B2 (en) 2018-01-24 2023-07-25 Western Digital Technologies, Inc. Low power state staging
WO2019153355A1 (zh) * 2018-02-12 2019-08-15 北京小米移动软件有限公司 随机接入时机的配置方法及装置、随机接入方法及装置
KR102687593B1 (ko) * 2018-03-12 2024-07-24 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
KR102619954B1 (ko) 2018-03-29 2024-01-02 삼성전자주식회사 데이터를 처리하기 위한 방법 및 이를 지원하는 전자 장치
KR102519339B1 (ko) * 2018-04-17 2023-04-07 삼성전자주식회사 무선 통신 시스템에서 동기 개선을 위한 방법 및 장치
JP7131053B2 (ja) * 2018-04-24 2022-09-06 富士通株式会社 記憶装置,情報処理プログラムおよび情報処理システム
KR102520412B1 (ko) * 2018-09-19 2023-04-12 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10795576B2 (en) * 2018-11-01 2020-10-06 Micron Technology, Inc. Data relocation in memory
KR102803710B1 (ko) * 2018-11-21 2025-05-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102663661B1 (ko) * 2018-12-06 2024-05-10 에스케이하이닉스 주식회사 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
KR102693311B1 (ko) * 2018-12-20 2024-08-09 삼성전자주식회사 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
KR102705754B1 (ko) * 2019-03-05 2024-09-12 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작방법
TWI724427B (zh) * 2019-05-22 2021-04-11 群聯電子股份有限公司 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元
CN110471861B (zh) * 2019-07-10 2022-02-11 华为技术有限公司 一种闪存设备中的数据存储方法及闪存设备
CN110554298B (zh) * 2019-08-27 2022-03-22 江苏芯盛智能科技有限公司 芯片和芯片测试方法
TWI721660B (zh) * 2019-11-22 2021-03-11 財團法人工業技術研究院 控制資料讀寫裝置與方法
KR20220014212A (ko) * 2020-07-28 2022-02-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11836074B2 (en) * 2020-10-07 2023-12-05 Micron Technology, Inc. Multiple flash translation layers at a memory device
CN112925481B (zh) 2021-03-09 2024-04-05 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
CN113419675B (zh) * 2021-06-11 2023-03-03 联芸科技(杭州)股份有限公司 用于存储器的写操作方法及读操作方法
US11455110B1 (en) * 2021-09-08 2022-09-27 International Business Machines Corporation Data deduplication
KR102385572B1 (ko) 2021-11-02 2022-04-13 삼성전자주식회사 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
CN114586017A (zh) 2021-12-21 2022-06-03 长江存储科技有限责任公司 用于存储器设备的碎片整理的系统和方法
CN117372236B (zh) * 2022-07-06 2024-09-06 格兰菲智能科技股份有限公司 共享内存的访问方法、装置、计算机设备
US12298902B2 (en) 2022-08-31 2025-05-13 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and operating method of storage device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US20100023676A1 (en) 2008-07-25 2010-01-28 Moon Yang-Gi Solid state storage system for data merging and method of controlling the same according to both in-place method and out-of-place method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027194B2 (en) * 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
JP3766396B2 (ja) 2003-04-21 2006-04-12 株式会社東芝 メモリ制御装置およびメモリ制御方法
US7188228B1 (en) 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
EP1966700A2 (en) 2005-12-21 2008-09-10 Nxp B.V. Non-volatile memory with block erasable locations
KR100806343B1 (ko) * 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US20100023676A1 (en) 2008-07-25 2010-01-28 Moon Yang-Gi Solid state storage system for data merging and method of controlling the same according to both in-place method and out-of-place method

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901653B2 (en) 2018-04-18 2021-01-26 SK Hynix Inc. Electronic device
US10776008B2 (en) 2018-05-04 2020-09-15 SK Hynix Inc. Memory system and operating method thereof
KR20210027625A (ko) * 2019-08-29 2021-03-11 동국대학교 산학협력단 데이터 저장장치의 주소 맵핑 테이블 운용 방법
KR102316271B1 (ko) 2019-08-29 2021-10-22 동국대학교 산학협력단 데이터 저장장치의 주소 맵핑 테이블 운용 방법
US11561712B2 (en) 2020-10-20 2023-01-24 SK Hynix Inc. Storage device and method of operating the same

Also Published As

Publication number Publication date
DE102011086227A1 (de) 2012-05-16
JP2012108912A (ja) 2012-06-07
TW201227741A (en) 2012-07-01
US20120124276A1 (en) 2012-05-17
CN102591589A (zh) 2012-07-18
KR20120052028A (ko) 2012-05-23
US9563549B2 (en) 2017-02-07

Similar Documents

Publication Publication Date Title
KR101739556B1 (ko) 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법
KR101717081B1 (ko) 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치
US10936203B2 (en) Memory storage device and system employing nonvolatile read/write buffers
US8984219B2 (en) Data storage device and method of writing data in the same
US8843697B2 (en) Operating method of data storage device
US10339046B1 (en) Data moving method and storage controller
US8966156B2 (en) Memory device, memory system and mapping information recovering method
US8700881B2 (en) Controller, data storage device and data storage system having the controller, and data processing method
KR102711044B1 (ko) 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
KR101734200B1 (ko) 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
KR102813343B1 (ko) 데이터 처리 시스템 및 그의 동작 방법
US20130275657A1 (en) Data storage device and operating method thereof
US20110271037A1 (en) Storage device performing data invalidation operation and data invalidation method thereof
US20100217920A1 (en) Memory system and address allocating method of flash translation layer thereof
KR20130032155A (ko) 데이터 저장 장치 및 그것의 데이터 관리 방법
CN112599170A (zh) 用于在存储器系统中提供多流操作的设备和方法
KR20120128978A (ko) 데이터 저장 장치 및 그것의 데이터 관리 방법
KR20100097960A (ko) 메모리 시스템 및 그것의 플래시 변환 계층의 데이터 관리 방법
US12293106B2 (en) Storage device, storage system, and control method
US20240231663A1 (en) Storage device and method of operating the same
CN115390746A (zh) 主机设备、存储设备以及电子设备
US8239616B2 (en) Semiconductor device comprising flash memory and address mapping method
TWI786288B (zh) 儲存裝置、儲存裝置的控制方法及記錄媒體
TW202414221A (zh) 資料處理方法及對應之資料儲存裝置
KR20220159270A (ko) 스토리지 장치 및 그 동작 방법

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20101115

AMND Amendment
PG1501 Laying open of application
A201 Request for examination
AMND Amendment
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20151113

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20101115

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: 20160928

Patent event code: PE09021S01D

AMND Amendment
E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20170329

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20160928

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I

PX0901 Re-examination

Patent event code: PX09011S01I

Patent event date: 20170329

Comment text: Decision to Refuse Application

Patent event code: PX09012R01I

Patent event date: 20161109

Comment text: Amendment to Specification, etc.

Patent event code: PX09012R01I

Patent event date: 20151113

Comment text: Amendment to Specification, etc.

Patent event code: PX09012R01I

Patent event date: 20110323

Comment text: Amendment to Specification, etc.

PX0701 Decision of registration after re-examination

Patent event date: 20170515

Comment text: Decision to Grant Registration

Patent event code: PX07013S01D

Patent event date: 20170421

Comment text: Amendment to Specification, etc.

Patent event code: PX07012R01I

Patent event date: 20170329

Comment text: Decision to Refuse Application

Patent event code: PX07011S01I

Patent event date: 20161109

Comment text: Amendment to Specification, etc.

Patent event code: PX07012R01I

Patent event date: 20151113

Comment text: Amendment to Specification, etc.

Patent event code: PX07012R01I

Patent event date: 20110323

Comment text: Amendment to Specification, etc.

Patent event code: PX07012R01I

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20170518

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20170519

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20200429

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20210428

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20220420

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20230426

Start annual number: 7

End annual number: 7