KR102002921B1 - 버퍼 운영 방법 및 그에 따른 반도체 저장 장치 - Google Patents

버퍼 운영 방법 및 그에 따른 반도체 저장 장치 Download PDF

Info

Publication number
KR102002921B1
KR102002921B1 KR1020120140383A KR20120140383A KR102002921B1 KR 102002921 B1 KR102002921 B1 KR 102002921B1 KR 1020120140383 A KR1020120140383 A KR 1020120140383A KR 20120140383 A KR20120140383 A KR 20120140383A KR 102002921 B1 KR102002921 B1 KR 102002921B1
Authority
KR
South Korea
Prior art keywords
buffer
data
map
area
user data
Prior art date
Application number
KR1020120140383A
Other languages
English (en)
Other versions
KR20140072639A (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 KR1020120140383A priority Critical patent/KR102002921B1/ko
Priority to US14/056,458 priority patent/US9304911B2/en
Publication of KR20140072639A publication Critical patent/KR20140072639A/ko
Priority to US15/073,185 priority patent/US9734057B2/en
Application granted granted Critical
Publication of KR102002921B1 publication Critical patent/KR102002921B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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

Landscapes

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

Abstract

본 발명은 반도체 저장 장치의 개선된 버퍼 운영 방법을 개시한다. 불휘발성 메모리로부터 인가되는 유저 데이터와 맵 데이터를 임시적으로 저장하는 버퍼를 갖는 반도체 저장 장치의 콘트롤러에 포함된 버퍼를 운영하는 방법은, 상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈와 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈를 비교하고, 상기 비교 결과에 따라, 상기 유저 데이터를 저장하는 상기 버퍼의 데이터 영역과, 상기 맵 데이터를 저장하는 상기 버퍼의 맵 영역을 적응적으로 가변한다. 본 발명에 따르면, 버퍼를 맵 정보를 저장하는 맵 영역으로 활용할 수 있으므로 맵 히트율이 높아진다. 또한, 버퍼의 저장 영역들을 다이나믹하게 가변할 수 있으므로 한정된 용량을 갖는 버퍼가 효율적으로 사용된다.

Description

버퍼 운영 방법 및 그에 따른 반도체 저장 장치{Buffer managing method and therefore semiconductor storage device}
본 발명은 반도체 저장 장치에 관한 것으로, 보다 구체적으로 버퍼 운영 방법 및 그에 따른 반도체 저장 장치에 관한 것이다.
다양한 불휘발성 메모리들 중에서도 플래시 메모리는, 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지기 때문에, 컴퓨터, SSD(solid state drive/disk), 메모리 카드 등의 메모리로서 사용되고 있다. 최근 들어서는, 휴대폰, PDA, 디지털 카메라 등과 같은 휴대용 정보기기의 사용이 급증함에 따라, 플래시 메모리를 구비한 반도체 저장 장치가 늘어나고 있다.
반도체 저장 장치에서, 불휘발성 메모리를 제어하는 콘트롤러는 리드 동작 시에 맵 데이터 로딩 동작과 유저 데이터 로딩 동작을 수행할 수 있다. 콘트롤러는 맵 데이터와 유저 데이터를 임시적으로 저장하기 위한 버퍼를 일반적으로 포함하고 있다.
본 발명이 해결하고자 하는 기술적 과제는, 버퍼를 활용하여 맵 히트율을 높일 수 있는 반도체 저장 장치의 버퍼 운영 방법을 제공함에 있다.
본 발명이 해결하고자 하는 기술적 과제는, 버퍼의 저장 영역들을 다이나믹하게 가변할 수 있는 반도체 저장 장치를 제공함에 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 실시 예의 일 양상에 따라,
불휘발성 메모리로부터 인가되는 유저 데이터와 맵 데이터를 임시적으로 저장하는 버퍼를 갖는 반도체 저장 장치에서의 버퍼 운영 방법은,
상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈와 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈를 비교하고;
상기 비교 결과에 따라, 상기 유저 데이터를 저장하는 상기 버퍼의 데이터 영역과, 상기 맵 데이터를 저장하는 상기 버퍼의 맵 영역을 적응적으로 가변한다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈가 상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈가 보다 클 경우에 상기 버퍼의 데이터 영역은 감소되나 상기 버퍼의 맵 영역은 증가되고,
상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈가 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈보다 클 경우에 상기 버퍼의 맵 영역은 감소되나 상기 버퍼의 데이터 영역은 증가될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼의 데이터 영역의 증가는 시퀀셜 리드 동작 시에 수행될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼의 맵 영역의 증가는 랜덤 리드 동작 시에 수행될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 유저 데이터는 상기 버퍼의 최하위 어드레스에 대응되는 저장 영역부터 상위로 저장되기 시작하며, 상기 맵 데이터는 상기 버퍼의 최상위 어드레스에 대응되는 저장 영역부터 하위로 저장되기 시작할 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 맵 데이터는 상기 불휘발성 메모리에 전부 저장되고 상기 버퍼에 일부가 저장될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼의 데이터 영역의 증가는 상대적으로 좁은 어드레스 공간에서 상대적으로 큰 사이즈의 유저 데이터가 이동될 때 수행될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼의 맵 영역의 증가는 상대적으로 넓은 어드레스 공간에서 상대적으로 작은 사이즈의 유저 데이터가 이동될 때 수행될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼의 데이터 영역과 맵 영역의 경계는 상기 호스트로부터 요구된 리드 동작의 모드가 시퀀셜 리드 동작 모드인지 혹은 랜덤 리드 동작 모드인지에 따라 실시간적으로 가변될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼의 데이터 영역이 축소될 경우에 상기 버퍼의 맵 영역은 확장될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼의 데이터 영역이 확장될 경우에 상기 버퍼의 맵 영역은 축소될 수 있다.
본 발명의 개념에 따른 실시 예에서, 맵 히트율을 높이고자 할 경우에 상기 버퍼의 맵 영역은 확장될 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 실시 예의 일 양상에 따라, 반도체 저장 장치는,
불휘발성 메모리; 및
상기 불휘발성 메모리와 호스트 간에 연결되고, 상기 불휘발성 메모리로부터 인가되는 유저 데이터와 맵 데이터를 임시적으로 저장하는 버퍼를 가지며, 상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈와 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈를 비교하고, 상기 비교 결과에 따라, 상기 유저 데이터를 저장하는 상기 버퍼의 데이터 영역과, 상기 맵 데이터를 저장하는 상기 버퍼의 맵 영역을 적응적으로 가변 하는 콘트롤러를 포함한다.
본 발명의 개념에 따른 실시 예에서, 상기 버퍼는 캐시 메모리이며 맵 히트율을 높이고자 할 경우에 상기 버퍼의 맵 영역은 상기 콘트롤러에 의해 확장될 수 있다.
본 발명의 개념에 따른 실시 예에서, 상기 콘트롤러는, 시퀀셜 리드 동작에서 상기 버퍼의 데이터 영역을 확장하고, 랜덤 리드 동작에서 상기 버퍼의 맵 영역을 확장할 수 있다.
본 발명의 실시 예적인 구성에 따르면, 버퍼를 맵 정보를 저장하는 맵 영역으로 더 많이 활용할 수 있으므로 맵 히트율이 높아진다. 또한, 버퍼의 유저 데이터 저장 영역과 맵 데이터 저장 영역을 포함하는 저장 영역들을 다이나믹하게 가변할 수 있으므로 한정된 용량을 갖는 버퍼를 효율적으로 사용할 수 있는 이점이 있다.
도 1은 본 발명의 개념적 실시 예에 따른 반도체 저장 장치의 블록도,
도 2는 도 1의 예시를 보인 구체 블록도,
도 3은 도 1중 버퍼의 다이나믹 활용을 보여주는 예시도,
도 4는 도 1중 버퍼의 다이나믹 활용을 보여주는 다른 예시도,
도 5는 도 1중 버퍼의 다이나믹 활용을 위한 초기 시작 상태를 보여주는 예시도,
도 6은 도 4에 따른 버퍼의 맵 영역 확장의 개념을 보여주는 도면,
도 7은 도 3에 따른 버퍼의 데이터 영역 확장의 개념을 보여주는 도면,
도 8은 본 발명의 개념적 실시 예에 따른 버퍼 운영의 제어 흐름도,
도 9는 본 발명의 개념에 따른 반도체 저장 장치가 적용된 메모리 시스템의 블록도,
도 10은 본 발명의 개념에 따른 반도체 저장 장치가 적용된 메모리 카드의 블록도,
도 11은 본 발명의 개념에 따른 반도체 저장 장치가 적용된 SSD의 블록도,
도 12는 컴퓨팅 시스템에 적용된 본 발명의 응용 예를 도시한 블록도, 및
도 13은 전자기기에 적용된 본 발명의 다른 응용 예를 도시한 블록도.
위와 같은 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시 예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시 예들은, 이해의 편의를 제공할 의도 이외에는 다른 의도 없이, 개시된 내용이 보다 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
본 명세서에서, 어떤 소자 또는 라인들이 대상 소자 블록에 연결된다 라고 언급된 경우에 그것은 직접적인 연결뿐만 아니라 어떤 다른 소자를 통해 대상 소자 블록에 간접적으로 연결된 의미까지도 포함한다.
또한, 각 도면에서 제시된 동일 또는 유사한 참조 부호는 동일 또는 유사한 구성 요소를 가급적 나타내고 있다. 일부 도면들에 있어서, 소자 및 라인들의 연결관계는 기술적 내용의 효과적인 설명을 위해 나타나 있을 뿐, 타의 소자나 회로블록들이 더 구비될 수 있다.
여기에 설명되고 예시되는 각 실시 예는 그것의 상보적인 실시 예도 포함될 수 있으며, 반도체 저장 장치에 대한 기본적 동작과 일반적 구성에 관한 세부는 본 발명의 요지를 모호하지 않도록 하기 위해 상세히 설명되지 않음을 유의(note)하라.
도 1은 본 발명의 개념적 실시 예에 따른 반도체 저장 장치의 블록도이다.
도면을 참조하면,호스트에 연결된 반도체 저장 장치(500)는 콘트롤러(100)와 데이터 스토리지로서의 불휘발성 반도체 메모리(NVM:300)를 포함한다.
상기 콘트롤러(100)는 맵 로딩 동작과 데이터 로딩 동작을 수행하기 위해 맵(또는 맵정보)과 유저 데이터를 저장하기 위한 버퍼(170)를 포함한다. 상기 버퍼(170)는 스태틱 랜덤 억세스 메모리(이하 SRAM이라 함)로 일반적으로 구성될 수 있다.
eMMC 와 같이 DRAM이 구비되지 않은 반도체 저장 장치의 경우에 상기 버퍼(170)의 데이터 저장용량은 일반적으로 제한되어 있다. 따라서, 맵 데이터를 로딩 시 불휘발성 반도체 메모리(NVM:300)에 저장된 전체 맵 정보 중 일부만이 상기 버퍼(170)에 로딩될 수 있다. 여기서, 상기 eMMC는 임베디드 멀티미디어 카드(Multimedia Card: MMC)를 말한다.
결국, 버퍼(170)내에 맵 정보를 저장하는 맵 영역이 일정한 사이즈 만큼 고정되어 있을 경우에, 맵 히트율이 크게 낮아진다. 또한, 버퍼(170)의 저장 영역들이 스태틱하게 구분되어 있는 경우에 한정된 용량을 갖는 버퍼를 효율적으로 사용하는 것이 어렵게 된다.
본 발명의 실시 예의 경우에는 상기 콘트롤러(100)가 버퍼(170)의 저장 영역들의 사이즈가 다이나믹하게 가변되도록 함에 의해 효율적인 버퍼 운영이 수행되고, 맵 히트율도 높아진다. 결국, 상기 반도체 저장 장치(500)내의 상기 콘트롤러(100)는 상기 불휘발성 메모리(300)로부터 이동된 데이터를 저장하기 위해 버퍼(170)를 가지며, 상기 버퍼(170)의 데이터 사용율에 따라 상기 버퍼(170)의 맵 영역을 가변한다.
상기 맵 정보란 플래시 메모리 등과 같은 불휘발성 메모리 장치를 관리하는데 필요한 각종 관리정보를 포함하는 맵 데이터를 의미한다.
상기 콘트롤러(100)는 USB(Universal Serial Bus), MMC(MultiMediaCard) 인터페이스, PCIE(PCIExpress) 인터페이스, SATA(Serial AT Attachment), PATA(Parallel AT Attachment) , SCSI(Small Computer System Interface), SAS(Serial Attached SCSI) 인터페이스, ESDI(Enhanced Small Disk Interface), 그리고 IDE(Integrated Drive Electronics) 인터페이스 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트와 데이터를 주고 받을 수 있다.
또한, 상기 콘트롤러(100)는 상기 호스트로부터 입력된 커멘드에 응답하여 상기 NVM(300)로/로부터 데이터를 기록하는/읽는 동작을 제어한다.
한편, 불휘발성 반도체 메모리(300)는 텍스트, 그래픽, 소프트웨어 코드 등과 같은 다양한 데이터 형태들을 갖는 데이터 정보를 저장하는 데 사용될 수 있다. 상기 불휘발성 반도체 메모리(300)는, 예를 들면, 낸드 플래시 메모리, 노어 플래시 메모리, 상변화 메모리 장치(PRAM), 강유전체 메모리 장치(FeRAM), 자기 저항램 장치(MRAM) 등과 같은 다양한 메모리들을 이용하여 구성될 수 있다. 그렇지만, 데이터 저장 장치에 적용되는 불휘발성 메모리들이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다.
도 2는 도 1의 예시를 보인 구체 블록도이다.
도 2를 참조하면, 콘트롤러(100)는 중앙처리장치(110, 이하 CPU라 칭함), CPU 버스(130), 호스트 인터페이스(140), 버퍼 메모리 제어부(160), 버퍼(170: 또는 버퍼 메모리), 및 플래시 인터페이스(180)를 포함한다.
CPU(110), 호스트 인터페이스(140), 버퍼 메모리 제어부(160), 버퍼 (170), 및 플래시 인터페이스(180)는 CPU 버스(130)를 통해 상호 연결된다.
상기 버퍼(170)에는 불휘발성 메모리로부터 인가되는 유저 데이터와 맵 데이터를 임시적으로 저장하기 위해, 데이터 영역과 맵 영역이 내부적으로 할당되어 있다. 상기 버퍼(170)의 상기 데이터 영역에는 상기 유저 데이터가 저장되고, 상기 맵 영역에는 상기 맵 데이터가 저장된다.
CPU(110)는 콘트롤러(100)의 제반 동작을 제어한다. 호스트 인터페이스(140)는 CPU(110)의 제어에 따라 호스트 측과 커멘드, 어드레스, 및 데이터를 교환한다. 호스트 인터페이스(140)를 통해 호스트로부터 입력된 데이터, 또는 호스트로 전송되어야 할 데이터는 상기 버퍼(170)의 데이터 영역에 임시 저장되었다가 플래시 메모리(300) 또는 호스트(900)로 전달된다.
버퍼 메모리 제어부(160)는 CPU(110)의 제어에 응답하여 버퍼 (170)의 액세스 동작(예를 들면, 읽기/기록/소거 동작들)을 제어한다. 버퍼 메모리 제어부(160)는 플래시 메모리(300)로부터 제공되는 데이터의 일부를 선택적으로 마스킹하는(즉, 선택적으로 전송하지 않는) 마스킹부(40)를 포함할 수 있다. 예를 들어, 마스킹부(40)는 DQM 회로(DQ input/output Mask circuit)로 구성될 수 있다. 데이터 마스킹 동작을 수행하기 위해, 마스킹부(40) 내부에는 레지스터에 세팅된 데이터 값에 따라서 마스킹 클럭 신호를 발생하는 회로와, 마스킹될(또는 마스킹에서 제외된) 버퍼(170)의 섹터 어드레스를 결정하는 카운터가 구비될 수 있다. 마스킹부(40)의 데이터 마스킹 동작은 랜덤 액세스 제어부(50)의 제어에 의해 수행된다.
또한, 상기 버퍼 메모리 제어부(160)는 불휘발성 메모리로 예컨대 상기 플래시 메모리(300)에서 상기 버퍼(170)로 저장될 상기 유저 데이터의 사이즈와 상기 버퍼(170)에서 호스트로 전송될 상기 유저 데이터의 사이즈를 비교한다. 또한, 상기 버퍼 메모리 제어부(160)는 상기 비교 결과에 따라, 상기 유저 데이터를 저장하는 상기 버퍼의 데이터 영역과, 상기 맵 데이터를 저장하는 상기 버퍼의 맵 영역을 적응적으로 가변한다.
상기 버퍼(170)에서 호스트로 전송될 상기 유저 데이터의 사이즈가 상기 불휘발성 메모리(300)에서 상기 버퍼(170)로 저장될 상기 유저 데이터의 사이즈가 보다 클 경우에는 상기 버퍼(170)의 데이터 영역은 감소되나 상기 버퍼의 맵 영역은 증가된다.
또한, 상기 불휘발성 메모리(300)에서 상기 버퍼(170)로 저장될 상기 유저 데이터의 사이즈가 상기 버퍼(170)에서 호스트로 전송될 상기 유저 데이터의 사이즈보다 클 경우에는 상기 버퍼(170)의 맵 영역은 감소되나 상기 버퍼(170)의 데이터 영역은 증가될 수 있다.
상기 버퍼(170)의 데이터 영역의 증가는 시퀀셜 리드 동작 시에 수행될 수 있고, 상기 버퍼(170)의 맵 영역의 증가는 랜덤 리드 동작 시에 수행될 수 있다.
상기 버퍼(170)의 데이터 영역이 축소될 경우에 상기 버퍼(170)의 맵 영역은 확장될 수 있으며, 상기 버퍼(170)의 데이터 영역이 확장될 경우에 상기 버퍼(170)의 맵 영역은 축소될 수 있다.
여기서, 상기 버퍼 메모리(170)는 는 설정된 저장 용량을 갖는 스태틱 랜덤 억세스 메모리(SRAM)일 수 있다.
결국, 상기 버퍼의 데이터 영역의 증가는 상대적으로 좁은 어드레스 공간에서 상대적으로 큰 사이즈의 유저 데이터가 이동될 때 수행될 수 있으며, 상기 버퍼의 맵 영역의 증가는 상대적으로 넓은 어드레스 공간에서 상대적으로 작은 사이즈의 유저 데이터가 이동될 때 수행될 수 있다. 그러므로, 상기 버퍼(170)내에서 데이터 영역과 맵 영역의 경계는 상기 호스트로부터 요구된 리드 동작의 모드가시퀀셜 리드 동작 모드인지 혹은 랜덤 리드 동작 모드인지에 따라 실시간적으로 가변될 수 있다.
또한, 맵 히트율을 높이고자 할 경우에 상기 버퍼의 맵 영역이 확장될 수 있다.
버퍼(170)는 플래시 메모리와 호스트(900) 사이에서 전달되는 데이터를 임시적으로 저장하는 기능과, FTL 기능을 수행하는 데 필요한 소프트웨어 및 CPU(110)에 의해서 운용될 프로그램들을 저장하는 기능을 수행할 수 있다. 또한, 버퍼(170)는 FTL에 의해 처리된 부가 정보, 예를 들면 플래시 메모리의 어드레스 맵핑 정보등을 포함하는 맵 정보를 저장하는 기능을 수행할 수 있다.
본 발명의 실시 예에서는 상기 버퍼(170, 또는 버퍼 메모리)의 데이터 사용율에 따라 상기 버퍼(170)의 맵 영역이 가변될 수 있다.
FTL은 본 발명에서 플래시 메모리의 랜덤 액세스를 제어하는 랜덤 액세스 제어부(50)로서 동작할 수 있다. FTL에서 수행되는 기능들에 대해서는 아래에서 상세히 설명될 것이다.
상기 버퍼(170)는 휘발성 메모리(예를 들면, SRAM)로 구현될 수 있으며, 플래시 메모리의 페이지 사이즈 또는 복수의 페이지 사이즈에 대응하는 저장 용량을 갖도록 구성될 수 있다. 어드레스 맵핑 정보와 같은 부가 정보를 포함하는 맵 정보는 플래시 메모리(300)의 맵 영역(예를 들면, 메타 영역)에 저장될 수 있다. 플래시 메모리(300) 또는 이에 상응하는 데이터 저장 영역에 저장된 어드레스 맵핑 정보는 파워-업 동작시 상기 버퍼(170)의 맵 영역으로 로딩될 수 있다. 상기 맵 정보 등과 같은 맵 데이터는 상기 플래시 메모리에 전부 저장되고 상기 버퍼(170)에 일부가 저장될 수 있다. FTL 기능을 수행하는 데 필요한 소프트웨어 역시 플래시 메모리 또는 이에 상응하는 데이터 저장 영역 (예를 들면, 부트 코드 영역)에 저장될 수 있고, 파워-업시 버퍼(170)로 로딩될 수 있다.
플래시 메모리(300)는 오버 라이트(overwrite)가 불가능한 메모리이다. 따라서, 플래시 메모리(300)에 데이터를 재기입하기 위해서는 삭제 연산(또는 동작)이 반드시 선행되어야 한다. 플래시 메모리(300)에서 기입되는 데이터의 단위는, 삭제되는 데이터의 단위보다 작다. 이러한 특징은 플래시 메모리를 주 메모리(main memory)로 사용하는 것을 어렵게 한다. 또한, 이러한 특징은 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템(file system)을 그대로 활용하는 것을 저해하는 요인이 된다. 따라서, 플래시 메모리의 삭제 연산을 감추기 위해, 파일 시스템(미 도시됨, 통상 파일 시스템은 호스트 측에 소프트웨어 형태로 저장됨)과 플래시 메모리 사이에 FTL이 사용될 수 있다.
FTL은 플래시 메모리에 대한 기록 동작시 파일 시스템이 생성한 논리 블록 어드레스(LBA)를 삭제 연산이 수행된 플래시 메모리의 물리 블록 어드레스(Physical Block Address ; PBA)로 맵핑 시켜 주는 어드레스 맵핑 기능과, 배드 블록 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 마모도 관리 등의 기능을 수행한다. 또한, FTL은 호스트로부터 입력된 랜덤 액세스 커멘드에 응답해서 플래시 메모리에 대한 랜덤 데이터 액세스 동작을 제어하는 랜덤 액세스 제어부(50)로서의 기능을 수행한다.
랜덤 액세스 동작은 데이터 마스킹 방식과 섹터 비트맵 방식으로 구분될 수 있다.
데이터 마스킹 방식의 경우, FTL은 버퍼 메모리 제어부(160)에 구비된 마스킹부(40)의 동작을 제어하여 플래시 메모리(300)로부터 액세스되는 데이터의 일부를 선택적으로 마스킹한다. 그 결과, 하나의 랜덤 액세스 커멘드에 대해 복수의 랜덤 데이터가 선택적으로 버퍼(170)로 제공될 수 있게 된다.
한편, 섹터 비트맵 방식의 경우, FTL은 레지스터에 세팅된 값을 근거로 하여 랜덤 액세스될 섹터들의 어드레스를 자동으로 생성한다. 하나의 랜덤 액세스 커멘드에 대해 복수의 랜덤 데이터에 대한 어드레스가 연속으로 생성될 수 있다. 그리고, 랜덤하게 액세스될 섹터의 개수는 필요한 만큼 레지스터에 세팅될 수 있다.
랜덤 데이터 액세스는 레지스터에 세팅된 결과에 따라서 지정된 특정 섹터에서만 수행될 수 있다. 그 결과, 채널의 낭비 없이 최적의 랜덤 데이터 액세스가 가능해 진다. 섹터 비트 맵 방식의 랜덤 액세스 동작은 플래시 메모리(300)와 버퍼(170) 사이에서 양방향으로 모두 적용될 수 있으며, 모디파이드 카피백(modified copy back) 동작에도 적용될 수 있다.
플래시 인터페이스(180)는 정보 저장 매체로서 사용되는 플래시 메모리(300)와 복수 개의 채널들을 통해 데이터를 주고 받는다. 각각의 채널에는 복수의 플래시 메모리들이 전기적으로 연결될 수 있다. 여기서, 하나의 채널에는 동일한 종류의 플래시 메모리들이 연결될 수 있고, 다른 채널들에는 다른 종류 또는 동일한 종류의 플래시 메모리들이 연결될 수 있다. 각각의 채널에 연결되는 플래시 메모리는 NOR 플래시 메모리, NAND 플래시 메모리, One-NAND 플래시 메모리, 단일-레벨 플래시 메모리, 멀티-레벨 플래시 메모리 중 적어도 어느 하나, 또는 그와 같은 것을 포함할 수 있다.
플래시 인터페이스(180) 내부에는 레지스터(미 도시됨)가 구비되어 있어, 플래시 메모리(300)로부터 랜덤하게 액세스될 데이터를 지정하는 데 이용될 수 있다. 랜덤 액세스될 데이터를 레지스터에 지정하는 기능은 랜덤 액세스 제어부(50)로서 동작하는 FTL에 의해 제어될 수 있다. 랜덤 액세스 동작에 사용될 레지스터로서는 플래시 인터페이스(180)에 구비된 레지스터가 이용될 수도 있고, 버퍼 메모리 제어부(160)에 구비된 레지스터가 이용될 수도 있다.
도 2에서는 도 1의 불휘발성 반도체 메모리(300)가 플래시 메모리로써 구현된 경우이지만, 본 발명은 이에 한정되지 않는다.
도 3은 도 1중 버퍼의 다이나믹 활용을 보여주는 예시도이다.
도 3을 참조하면, SRAM 등으로 구현된 버퍼(170)는 저장 영역들(A10, A11, A12, A13, A14, A15, A16, A17)로 이루어져 있다. 결국, 버퍼(170)는 제한된 사이즈를 가진다. 도 3에서, 저장 영역들(A10-A15)은 유저 데이터가 저장되는 데이터 영역(DA)으로 활용된다. 한편, 버퍼(170)의 저장 영역들(A16-A17)은 맵 데이터가 저장되는 맵 영역(MA)으로 활용된다.
도 3은 상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈가 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈보다 클 경우에 적용되는 버퍼 운영 방법이다. 여기서는 상기 버퍼의 맵 영역(MA)은 감소되나 상기 버퍼의 데이터 영역(DA)은 증가된다. 버퍼의 데이터 영역의 증가 또는 확장은 시퀀셜 리드 동작 시에 보다 적합하게 수행될 수 있다. 결국, 상기 버퍼의 데이터 영역의 확장은 상대적으로 좁은 어드레스 공간에서 상대적으로 많은 양의 데이터가 이동될 때 수행될 수 있는 것이다.
도 4는 도 1중 버퍼의 다이나믹 활용을 보여주는 다른 예시도이다.
도 4를 참조하면, SRAM 등으로 구현된 버퍼(170)는 도 3과 동일하게 저장 영역들(A10, A11, A12, A13, A14, A15, A16, A17)로 이루어져 있다. 도 4에서, 저장 영역들(A10-A11)은 유저 데이터가 저장되는 데이터 영역(DA)으로 활용된다. 한편, 버퍼(170)의 저장 영역들(A12-A17)은 맵 데이터가 저장되는 맵 영역(MA)으로 활용된다.
도 4는 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈가 상기 불휘발성 메모리에서 상기 버퍼(170)로 저장될 상기 유저 데이터의 사이즈가 보다 클 경우에 적용되는 버퍼 운영 방법이다. 여기서는 상기 버퍼의 데이터 영역(DA)은 감소되나 상기 버퍼의 맵 영역(MA)은 증가된다. 버퍼의 맵 영역(MA)의 증가 또는 확장은 랜덤 리드 동작 시에 보다 적합하게 수행될 수 있다. 결국, 상기 버퍼의 맵 영역(MA)의 확장은 상대적으로 넓은 어드레스 공간에서 상대적으로 적은 양의 데이터가 이동될 때 수행될 수 있는 것이다.
결국, 도 3과 도 4를 비교시에, 상기 버퍼(170)의 데이터 영역(DA)과 맵 영역(MA)의 경계는 시퀀셜 리드 동작이나 랜덤 리드 동작에 따라 실시간적으로 가변될 수 있음을 알 수 있다.
도 5는 도 1중 버퍼의 다이나믹 활용을 위한 초기 시작 상태를 보여주는 예시도이다.
도 5를 참조하면, 하나의 버퍼(170)내에서 데이터 영역(DA)의 사이즈와 맵 영역(MA)의 사이즈를 다이나믹하게 가변시키기 위해, 버퍼(170)의 에지부에서 저장 위치가 시작될 수 있다. 즉, 데이터 영역(DA)은 시작 포인트(A1)에서 센터 포인트(CP)를 향해 사용이 시작된다. 한편, 맵 영역(MA)은 시작 포인트(B1)에서 센터 포인트(CP)를 향해 사용이 시작된다. 결국, 도 5에서 상기 유저 데이터는 상기 버퍼(170)의 최하위 어드레스에 대응되는 저장 영역부터 상위로 저장되기 시작할 수 있으며, 상기 맵 데이터는 상기 버퍼(170)의 최상위 어드레스에 대응되는 저장 영역부터 하위로 저장되기 시작할 수 있다. 도 5의 초기 시작 상태는 예시적인 방법에 불과하며, 본 발명은 이에 한정되지 않는다.
도 6은 도 4에 따른 버퍼의 맵 영역 확장의 개념을 보여주는 도면이다.
도 6을 참조하면, 도 5의 초기 시작 상태에서 저장 영역들에 대한 사용이 시작되어, 맵 영역이 데이터 영역에 비해 상대적으로 더 확장된 경우가 보여진다. 즉, 도 6의 경우에는 랜덤 리드 동작이 시퀀셜 리드 동작 보다 빈번하여 화살부호 AR1과 같이 맵 영역이 도 5의 센터 포인트(CP)를 지나 확장된 것이다. 이에 따라, 도 4와 같이 버퍼 운영이 수행된다. 이 경우에 상기 버퍼의 데이터 영역은 축소된다. 상기 버퍼의 맵 영역이 확장될 경우에 맵 정보는 그에 따라 저장 사이즈가 크므로 맵 히트율이 높아진다.
도 7은 도 3에 따른 버퍼의 데이터 영역 확장의 개념을 보여주는 도면이다.
도 7을 참조하면, 도 5의 초기 시작 상태에서 저장 영역들에 대한 사용이 시작되어, 데이터 영역이 맵 영역에 비해 상대적으로 더 확장된 경우가 보여진다.
도 7의 경우에는 시퀀셜 리드 동작이 랜덤 리드 동작보다 빈번하여 화살부호 AR2와 같이 데이터 영역이 도 5의 센터 포인트(CP)를 지나 확장된 것이다. 이에 따라, 도 3와 같이 버퍼 운영이 수행된다. 이 경우에 상기 버퍼의 맵 영역은 축소된다. 상기 버퍼의 맵 영역이 축소될 경우에 데이터는 그에 따라 저장 사이즈가 크게 된다.
도 8은 본 발명의 개념적 실시 예에 따른 버퍼 운영의 제어 흐름도이다.
도 8의 제어 흐름은 도 1의 콘트롤러(100)에 의해 수행되며, 구체적으로, 도 2의 CPU(110)나 버퍼 메모리 제어기(160)에 의해 제어될 수 있다.
도 8을 참조하면, S10 단계에서, 반도체 저장 장치의 리드 동작 모드의 진입 여부가 체크된다. 리드 동작 모드에서, 맵 로딩 동작과 데이터 로딩 동작이 수행될 수 있다. 상기 콘트롤러(100)는 S20 단계에서 진입된 리드 동작 모드가 시퀀셜 리드 모드인지를 체크한다.
상기 S20 단계에서 시퀀셜 리드 모드로 체크되면, 데이터 영역을 확장하는 S30 단계가 실행된다. 상기 S30 단계에서는 도 7과 같은 버퍼 운영이 수행된다.
상기 S20 단계에서 시퀀셜 리드 모드가 아니면, S40 단계에서 랜덤 리드 모드인지의 여부가 체크된다. 상기 S40 단계에서 랜덤 리드 모드로 체크되면, 맵 영역을 확장하는 S50 단계가 실행된다. 상기 S50 단계에서는 도 6과 같은 버퍼 운영이 수행된다. S30 단계나 S50 단계에서와 같은 버퍼 운영이 수행되면서, 대응되는 리드 동작이 S60 단계에서 실행된다.
이에 따라, 버퍼를 맵 정보를 저장하는 맵 영역으로 보다 많이 활용할 경우에는 맵 히트율이 그에 따라 높아진다. 따라서, 장치의 동작 퍼포먼스가 개선된다. 또한, 버퍼의 저장 영역들을 시퀀셜 리드 혹은 랜덤 리드에 따라 다이나믹하게 가변할 수 있으므로 한정된 용량을 갖는 버퍼가 효율적으로 사용된다.
도 9는 본 발명의 개념에 따른 반도체 저장 장치가 적용된 메모리 시스템의 블록도이다. 도 9를 참조하면, 메모리 시스템(1000)은 불휘발성 메모리 장치(1100) 및 메모리 제어기(1200)를 포함한다. 불휘발성 메모리 장치(1100)는, 도 1에 도시된 불휘발성 메모리 장치(300)와 동일한 구성 및 동작으로 구현될 수 있다.
메모리 제어기(1200)내에서 버퍼(1220)가 맵 정보를 저장하는 맵 영역으로 보다 많이 활용될 경우에 맵 히트율이 높아진다. 또한, 버퍼(1220)의 저장 영역들을 시퀀셜 리드 또는 랜덤 리드에 따라 다이나믹하게 가변할 수 있으므로 버퍼 사용 효율이 최적화된다.
메모리 제어기(1200)는 호스트 등에서 제공되는 외부 요청에 응답하여 불휘발성 메모리 장치(1100)를 제어할 수 있다. 상기 메모리 제어기(1200)는 외부로부터 제공되는 데이터를 압축할 수 있으며 그 압축된 데이터가 상기 불휘발성 메모리 장치(1100)에 저장되도록 할 수 있다. 데이터 압축 방식은 불휘발성 메모리 장치(1100)의 효과적인 사용(예를 들면, 낮은 비용으로 많은 양의 데이터를 저장하는 것)을 가능하게 한다. 또한, 데이터 압축 방식은 불휘발성 반도체 메모리(1100)와 메모리 제어기(1200) 사이에 연결된 버스의 트래픽을 감소시킨다.
소용량 메모리를 탑재한 반도체 저장장치의 경우에 상기 불휘발성 메모리 장치(1100)에 저장된 전체 메타 데이터 중 요청된 메타 데이터만이 상기 메모리 제어기(1200)의 버퍼(1220)에 로드될 수 있다. 즉, 버퍼(1220)의 메모리 용량 제한에 기인하여 이전에 로드되어 있던 메타 데이터는 언로딩되고, 현재 로드되는 메타 데이터가 로딩된다.
맵 정보에 포함되는 상기 메타 데이터는 플래시 메모리 등과 같은 불휘발성 반도체 메모리 장치(1100)를 관리하기 위한 데이터로서, 파일 데이터의 이름, 파일 데이터에 관련된 디렉터리의 이름, 파일 데이터에 대한 접근 권한, 및 파일 데이터가 생성된 시각 정보 중 적어도 하나를 포함할 수 있다. 또한, 메타 데이터는 상기 불휘발성 메모리 장치(1100)내의 사용 가능한 블록 및 페이지 영역에 대한 상태 정보를 포함할 수 있다.
도 10은 본 발명의 개념에 따른 반도체 저장 장치가 적용된 메모리 카드의 블록도이다. 도 10을 참조하면, 메모리 카드(2000)는 플래시 메모리 장치(2100), 버퍼 메모리(2200) 및 그 것들을 제어하는 메모리 제어기(2300)를 포함한다. 플래시 메모리 장치(2100)는 도 1에 도시된 불휘발성 메모리 장치(300)와 동일한 구성 및 동작으로 구현될 수 있다.
버퍼 메모리(2200)는 메모리 카드(2000)의 동작 중 발생되는 데이터 및 맵 정보를 임시로 저장하기 위한 장치이다. 버퍼 메모리(2200)는 에스램 등으로 구현될 수 있다.
상기 버퍼 메모리(2200)가 맵 정보를 저장하는 맵 영역으로 보다 많이 활용될 경우에 맵 히트율이 높아진다. 또한, 버퍼 메모리(2200)의 저장 영역들을 시퀀셜 리드 또는 랜덤 리드에 따라 다이나믹하게 가변할 수 있으므로 버퍼 사용 효율이 최적화된다.
메모리 제어기(2300)는 호스트 및 플래시 메모리(2100)에 사이에 연결된다. 호스트로부터의 요청에 응답하여, 메모리 제어기(2300)는 플래시 메모리 장치(2100)를 억세스한다. 메모리 제어기(2300)는 마이크로 프로세서(2310), 호스트 인터페이스(2320), 및 플래시 인터페이스(2330)를 포함한다.
마이크로 프로세서(2310)는 펌웨어(firmware)를 동작하도록 구현된다. 호스트 인터페이스(2320)는 호스트와 플래시 인터페이스(2330) 사이에 데이터 교환을 수행하기 위한 카드(예를 들어, MMC) 프로토콜을 통해 호스트와 인터페이싱한다.이러한 메모리 카드(2000)는 멀티미디어 카드(Multimedia Card: MMC), 보안 디지털(Security Digital: SD), miniSD, 메모리 스틱(Memory Stick), 스마트미디어(SmartMedia), 트랜스플래시(TransFlash) 카드 등에 적용가능하다.
한편, 본 발명의 응용은 솔리드 스테이트 드라이브(Solid State Drive: 이하, 'SSD'라고 함)에도 가능하다.
도 11은 본 발명의 개념에 따른 반도체 저장 장치가 적용된 SSD의 블록도이다. 도 11을 참조하면, SSD(4000)는 복수의 플래시 메모리 장치들(4100) 및 SSD 제어기(4200)를 포함한다.
단품의 플래시 메모리 장치(4100)는, 도 1에 도시된 불휘발성 메모리 장치(300)와 동일한 구성 및 동작으로 구현될 수 있다.
SSD 제어기(4200)는 복수의 플래시 메모리 장치들(4100)을 제어한다. SSD 제어기(4200)는 중앙처리장치(4210), 호스트 인터페이스(4220), 캐쉬 버퍼(4230), 및 플래시 인터페이스(4240)를 포함한다. 호스트 인터페이스(4220)는 중앙처리장치(4210)의 제어에 따라 호스트와 ATA 프로토콜 방식으로 데이터를 교환한다. 여기서 호스트 인터페이스(4220)는 SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, ESATA(External SATA) 인터페이스 등 중에서 어느 하나일 수 있다. 호스트 인터페이스(4220)를 통해 호스트로부터 입력되는 데이터나 호스트로 전송되어야 할 데이터는 중앙처리장치(4210)의 제어에 따라 CPU 버스를 경유하지 않고 캐시 버퍼(4230)를 통해 전달된다.
캐쉬 버퍼(4230)는 외부와 플래시 메모리 장치들(4100) 간의 이동 데이터를 임시로 저장한다. 또한, 캐쉬 버퍼(4230)는 중앙처리장치(4210)에 의해서 운용될 프로그램을 저장하는 데에도 사용된다. 캐쉬 버퍼(4230)는 일종의 버퍼 메모리로 간주할 수 있으며, 에스램(SRAM)으로 구현될 수 있다. 도 11에서 캐쉬 버퍼(4230)는 SSD 제어기(4200) 내부에 포함되어 있지만, 본 발명이 반드시 여기에 한정될 필요는 없다. 본 발명에 따른 캐쉬 버퍼는 SSD 제어기(4200)의 외부에도 포함될 수 있다.
본 발명의 적용에 따라, 상기 캐쉬 버퍼(4230)가 맵 정보를 저장하는 맵 영역으로 보다 많이 활용될 경우에 맵 히트율이 높아질 수 있다. 또한, 버퍼(1220)의 저장 영역들을 시퀀션 리드 또는 랜덤 리드에 따라 다이나믹하게 가변할 수 있으므로 버퍼 사용 효율이 최적화된다.
플래시 인터페이스(4240)는 저장 장치로 사용되는 플래시 메모리 장치들(4100)과 SSD 제어기(4200) 사이의 인터페이싱을 수행한다. 플래시 인터페이스(4240)는 낸드 플래시 메모리, 원낸드(One-NAND) 플래시 메모리, 멀티 레벨 플래시 메모리, 싱글 레벨 플래시 메모리를 지원하도록 구성될 수 있다.
플래시 메모리 장치들(4100)을 구성하는 플래시 메모리 셀의 데이터 저장 특성은 다양한 형태로 구성될 수 있다. 예를 들면, 각각의 플래시 메모리는 셀 당 1 비트의 데이터가 저장되는 단일-레벨 플래시 메모리 셀들로 구성될 수도 있고, 셀 당 복수 비트의 데이터가 저장되는 멀티-레벨 플래시 메모리 셀들로 구성될 수도 있다. 그리고, 플래시 메모리를 구성하는 메모리 셀의 종류 또한 다양한 형태로 구성될 수 있다. 예를 들면, 플래시 메모리는 낸드(NAND) 플래시 메모리, 노어(NOR) 플래시 메모리, One_NAND 플래시 메모리(플래시 메모리 코어 및 메모리 제어 로직이 단일의 칩으로 구현된 것) 중 적어도 어느 하나로 구성될 수 있고, 적어도 두 종류 이상의 플래시 메모리들이 혼합된 하이브리드 형태로도 구성될 수 있다. 이 외에도, 플래시 메모리 셀의 전하 저장층의 구조 또한 다양한 형태로 구성될 수 있다. 예를 들면, 플래시 메모리 셀의 전하 저장층은 전도성이 있는 다결정 실리콘 등으로 구성될 수도 있고, Si3N4, Al2O3, HfAlO, HfSiO 등과 같은 절연막을 이용하여 구성될 수도 있다. Si3N4, Al2O3, HfAlO, HfSiO 등과 같은 절연막을 전하 저장층으로 이용하는 플래시 메모리 구조를 차지 트랩형 트랩형 플래시(Charge Trap Flash, "CTF"라 불림) 메모리라 칭하기도 한다.
도 12는 컴퓨팅 시스템에 적용된 본 발명의 응용 예를 도시한 블록도이다. 도 12의 컴퓨팅 시스템은 도 11에 도시된 SSD(4000)를 가진다.
도 12를 참조하면, 컴퓨팅 시스템(5000)은, 중앙처리장치(5100), 롬(5200), 램(5300), 입출력 장치(5400), 및, SSD(5500)를 포함한다. 중앙처리장치(5100)는 시스템 버스에 연결된다. 롬(5200)은 컴퓨팅 시스템(5000)을 동작하는데 필요한 데이터가 저장된다. 이러한 데이터에는 개시 명령 시퀀스, 혹은 기본적인 입/출력 동작 시스템(예를 들어, BIOS) 시퀀스 등이다. 램(5300)은 중앙처리장치(5100)가 실행될 때 발생되는 데이터가 임시로 저장된다. 입출력 장치(5400)는, 실시 예에 있어서, 키보드, 포인팅 장치(마우스), 모니터, 모뎀, 등이 입출력 장치 인터페이스를 통하여 시스템 버스에 연결된다.
비록 도면에는 도시되지 않았지만, 상기 컴퓨팅 시스템(700)에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 시스템(710)은, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 또는, 메모리 시스템(710)은, 퓨전 플래시 메모리(예를 들면, 원낸드 플래시 메모리)로 제공될 수 있다.
상기 플래시 메모리 그리고/또는 메모리 콘트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 플래시 메모리 그리고/또는 메모리 콘트롤러는 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) 등의 패키지로서 패키지화될 수 있다.
SSD(5500)는 읽기 가능한 저장 장치로써, 도 11에 도시된 SSD(4000)와 동일하게 구현될 수 있다. SSD(5500)내의 버퍼는 맵 정보를 저장하는 맵 영역으로 보다 많이 활용될 경우에 맵 히트율이 높다. 또한, 버퍼의 저장 영역들을 시퀀션 리드 또는 랜덤 리드에 따라 다이나믹하게 가변할 수 있으므로 버퍼 사용 효율이 최적화되어, SSD(5500)의 퍼포먼스는 개선된다.
도 13은 전자기기에 적용된 본 발명의 다른 응용 예를 도시한 블록도이다. 도 13의 전자기지는 도 11에 도시된 SSD(4000)를 가진다.
도 13을 참조하면, 전자기기(6000)는, 프로세서(6100), 롬(6200), 램(6300), 및 플래시 인터페이스(6400), 및 SSD(6500)을 포함한다.
프로세서(6100)는 펌웨어 코드 혹은 임의의 코드를 실행하기 위하여 램(6300)을 억세스한다. 또한, 프로세서(6100)는 개시 명령 시퀀스 혹은 기본 입출력 동작 시스템 시퀀스들과 같은 고정 명령 시퀀스들을 실행하기 위하여 롬(6200)을 억세스한다. 플래시 인터페이스(6400)는 전자기기(6000)와 SSD(6500) 사이의 인터페이싱을 수행한다. SSD(6500)는 전자기기(6000)에 착탈이 가능할 수 있다. SSD(6500)는, 도 11에 도시된 SSD(4000)와 동일하게 구현될 수 있다.
마찬가지로, SSD(6500)에서, 본 발명의 실시 예에서 설명된 바와 같은 버퍼가 채용된다. 그러한 버퍼가 맵 정보를 저장하는 맵 영역으로 보다 많이 활용될 경우에 맵 히트율이 높다. 또한, 버퍼의 저장 영역들을 시퀀션 리드 또는 랜덤 리드에 따라 다이나믹하게 가변할 수 있으므로 버퍼 사용 효율이 최적화되어, 전자기기의 퍼포먼스는 개선된다.
본 발명의 전자기기(6000)는 셀룰러 폰, 개인 디지털 보조기(Personal Digital Assistants: PDAs), 디지털 카메라, 캠코더, 및 휴대용 오디오 재생장치(예를 들어, MP3), PMP 등이 될 수 있다.
이상에서와 같이 도면과 명세서를 통해 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 예를 들어, 사안이 다른 경우에 본 발명의 기술적 사상을 벗어남이 없이, 버퍼의 운영 방식을 다양하게 변경 또는 변형할 수 있을 것이다.
*도면의 주요 부분에 대한 부호의 설명*
100: 콘트롤러
170: 버퍼
300: NVM

Claims (10)

  1. 불휘발성 메모리로부터 인가되는 유저 데이터와 맵 데이터를 임시적으로 저장하는 버퍼를 갖는 반도체 저장 장치에서의 버퍼 운영 방법에 있어서:
    상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈와 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈를 비교하고;
    상기 비교 결과에 따라, 상기 유저 데이터를 저장하는 상기 버퍼의 데이터 영역과, 상기 맵 데이터를 저장하는 상기 버퍼의 맵 영역을 적응적으로 가변하되,
    상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈가 상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈가 보다 클 경우에 상기 버퍼의 데이터 영역은 감소되나 상기 버퍼의 맵 영역은 증가되고,
    상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈가 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈보다 클 경우에 상기 버퍼의 맵 영역은 감소되나 상기 버퍼의 데이터 영역은 증가되며,
    상기 버퍼의 데이터 영역의 증가는 시퀀셜 리드 동작 시에 수행되는 반도체 저장 장치의 버퍼 운영 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 버퍼의 맵 영역의 증가는 랜덤 리드 동작 시에 수행되는 반도체 저장 장치의 버퍼 운영 방법.
  5. 제1항에 있어서, 상기 유저 데이터는 상기 버퍼의 최하위 어드레스에 대응되는 저장 영역부터 상위로 저장되기 시작하며, 상기 맵 데이터는 상기 버퍼의 최상위 어드레스에 대응되는 저장 영역부터 하위로 저장되기 시작하는 반도체 저장 장치의 버퍼 운영 방법.
  6. 제1항에 있어서, 상기 맵 데이터는 상기 불휘발성 메모리에 전부 저장되고 상기 버퍼에 일부가 저장되는 반도체 저장 장치의 버퍼 운영 방법.
  7. 제1항에 있어서, 상기 버퍼의 데이터 영역과 맵 영역의 경계는 상기 호스트로부터 요구된 리드 동작의 모드가시퀀셜 리드 동작 모드인지 혹은 랜덤 리드 동작 모드인지에 따라 실시간적으로 가변되는 반도체 저장 장치의 버퍼 운영 방법.
  8. 불휘발성 메모리; 및
    상기 불휘발성 메모리와 호스트 간에 연결되고, 상기 불휘발성 메모리로부터 인가되는 유저 데이터와 맵 데이터를 임시적으로 저장하는 버퍼를 가지며, 상기 불휘발성 메모리에서 상기 버퍼로 저장될 상기 유저 데이터의 사이즈와 상기 버퍼에서 호스트로 전송될 상기 유저 데이터의 사이즈를 비교하고, 상기 비교 결과에 따라, 상기 유저 데이터를 저장하는 상기 버퍼의 데이터 영역과, 상기 맵 데이터를 저장하는 상기 버퍼의 맵 영역을 적응적으로 가변하는 콘트롤러를 포함하되,
    상기 콘트롤러는,
    시퀀셜 리드 동작에서 상기 버퍼의 데이터 영역을 확장하고;
    랜덤 리드 동작에서 상기 버퍼의 맵 영역을 확장하는 반도체 저장 장치.
  9. 제8항에 있어서, 상기 버퍼는 캐시 메모리이며 맵 히트율을 높이고자 할 경우에 상기 버퍼의 맵 영역은 상기 콘트롤러에 의해 확장되는 반도체 저장 장치.
  10. 삭제
KR1020120140383A 2012-12-05 2012-12-05 버퍼 운영 방법 및 그에 따른 반도체 저장 장치 KR102002921B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120140383A KR102002921B1 (ko) 2012-12-05 2012-12-05 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
US14/056,458 US9304911B2 (en) 2012-12-05 2013-10-17 Semiconductor storage device and buffer operation method thereof
US15/073,185 US9734057B2 (en) 2012-12-05 2016-03-24 Semiconductor storage device and buffer operation method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120140383A KR102002921B1 (ko) 2012-12-05 2012-12-05 버퍼 운영 방법 및 그에 따른 반도체 저장 장치

Publications (2)

Publication Number Publication Date
KR20140072639A KR20140072639A (ko) 2014-06-13
KR102002921B1 true KR102002921B1 (ko) 2019-07-23

Family

ID=50826685

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120140383A KR102002921B1 (ko) 2012-12-05 2012-12-05 버퍼 운영 방법 및 그에 따른 반도체 저장 장치

Country Status (2)

Country Link
US (1) US9304911B2 (ko)
KR (1) KR102002921B1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9734057B2 (en) 2012-12-05 2017-08-15 Samsung Electronics Co., Ltd. Semiconductor storage device and buffer operation method thereof
KR20150055413A (ko) * 2013-11-13 2015-05-21 에스케이하이닉스 주식회사 데이터 저장 장치
KR102157668B1 (ko) * 2014-04-03 2020-09-22 에스케이하이닉스 주식회사 호스트와 통신하는 메모리 컨트롤러, 그것의 동작 방법 및 그것을 포함하는 컴퓨팅 시스템
KR102245822B1 (ko) 2014-11-26 2021-04-30 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
US10108344B1 (en) * 2015-05-06 2018-10-23 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
US10048878B2 (en) 2015-06-08 2018-08-14 Samsung Electronics Co., Ltd. Nonvolatile memory module and storage system having the same
CN107590080B (zh) * 2016-07-07 2020-10-09 合肥兆芯电子有限公司 映射表更新方法、存储器控制电路单元及存储器存储装置
TWI650639B (zh) * 2016-11-07 2019-02-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
CN106681932B (zh) * 2016-11-14 2020-10-16 合肥兆芯电子有限公司 存储器管理方法、存储器控制电路单元及存储器存储装置
KR102310117B1 (ko) * 2017-07-07 2021-10-08 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102281966B1 (ko) 2017-11-01 2021-07-26 삼성전자주식회사 데이터 스토리지 장치 및 그 동작 방법
KR20190059053A (ko) 2017-11-22 2019-05-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102566635B1 (ko) 2017-12-18 2023-08-14 삼성전자주식회사 비휘발성 메모리 시스템 및 그 동작 방법
KR20190107449A (ko) * 2018-03-12 2019-09-20 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
KR20200099882A (ko) * 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11841767B2 (en) 2021-11-24 2023-12-12 Samsung Electronics Co., Ltd. Controller controlling non-volatile memory device, storage device including the same, and operating method thereof

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592342A (en) 1994-05-23 1997-01-07 Quantum Corporation Method for packing variable size user data records into fixed size blocks on a storage medium
JP3132754B2 (ja) 1997-09-08 2001-02-05 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 記録装置、記録媒体及び記録制御方法
KR100484147B1 (ko) 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
TW200515147A (en) 2003-10-17 2005-05-01 Matsushita Electric Ind Co Ltd Semiconductor memory device, controller, and read/write control method thereof
KR100648243B1 (ko) 2004-03-19 2006-11-24 삼성전자주식회사 낸드 플래시 메모리를 사용하는 메모리 카드
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US7788299B2 (en) 2004-11-03 2010-08-31 Spectra Logic Corporation File formatting on a non-tape media operable with a streaming protocol
US8001353B2 (en) 2005-06-10 2011-08-16 Hewlett-Packard Development Company, L.P. Apparatus and method for configuring memory blocks
KR100755700B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
US7681008B2 (en) * 2006-09-29 2010-03-16 Sandisk Corporation Systems for managing file allocation table information
JP5040773B2 (ja) 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
KR101104728B1 (ko) * 2008-10-31 2012-01-11 에스케이플래닛 주식회사 가변 버퍼링을 이용한 스트리밍 서비스 제공 방법 및 장치
KR101618634B1 (ko) * 2009-01-07 2016-05-09 삼성전자주식회사 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
US9003159B2 (en) * 2009-10-05 2015-04-07 Marvell World Trade Ltd. Data caching in non-volatile memory
KR101678571B1 (ko) * 2010-10-05 2016-11-22 삼성전자주식회사 컴퓨팅 시스템의 부팅방법
TWI421683B (zh) 2010-11-01 2014-01-01 Phison Electronics Corp 資料管理方法、記憶體控制器與記憶體儲存裝置

Also Published As

Publication number Publication date
KR20140072639A (ko) 2014-06-13
US9304911B2 (en) 2016-04-05
US20140156964A1 (en) 2014-06-05

Similar Documents

Publication Publication Date Title
KR102002921B1 (ko) 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
US11593259B2 (en) Directed sanitization of memory
US10430083B2 (en) Memory scheduling method for changing command order and method of operating memory system
US9760503B2 (en) Operation method of memory controller and nonvolatile memory system including the memory controller
US9128618B2 (en) Non-volatile memory controller processing new request before completing current operation, system including same, and method
US8843697B2 (en) Operating method of data storage device
US20110264884A1 (en) Data storage device and method of operating the same
CN114442914B (zh) 存储器系统
TWI597730B (zh) 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置
US9734057B2 (en) Semiconductor storage device and buffer operation method thereof
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
US9037781B2 (en) Method for managing buffer memory, memory controllor, and memory storage device
CN112540721A (zh) 存储器控制器及其操作方法
CN113885808A (zh) 映射信息记录方法以及存储器控制电路单元与存储装置
CN110888819A (zh) 存储器系统及其操作方法
US20230273878A1 (en) Storage device for classifying data based on stream class number, storage system, and operating method thereof
KR20160119607A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11775211B2 (en) Memory controller and method of operating the same
KR20200015185A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11455249B2 (en) Storage device for performing dump operation, method of operating storage device, computing system including storage device and host device for controlling storage device, and method of operating computing system
US10923178B1 (en) Data storage with improved write performance for preferred user data
KR20240003648A (ko) 메모리 시스템 및 그에 포함된 메모리 컨트롤러의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant