KR20140113176A - 매핑 정보 업데이트 방법 및 이를 이용한 메모리 시스템 - Google Patents
매핑 정보 업데이트 방법 및 이를 이용한 메모리 시스템 Download PDFInfo
- Publication number
- KR20140113176A KR20140113176A KR1020130028243A KR20130028243A KR20140113176A KR 20140113176 A KR20140113176 A KR 20140113176A KR 1020130028243 A KR1020130028243 A KR 1020130028243A KR 20130028243 A KR20130028243 A KR 20130028243A KR 20140113176 A KR20140113176 A KR 20140113176A
- Authority
- KR
- South Korea
- Prior art keywords
- write
- information
- order
- mapping information
- request
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
멀티 뱅크의 메모리 시스템에서의 매핑 정보를 업데이트하는 방법 및 이를 이용한 메모리 시스템에 관하여 개시한다. 매핑 정보 업데이트 방법은 라이트 리퀘스트에 따른 라이트 트랜잭션 정보를 생성시키는 단계, 상기 라이트 트랜잭션 정보를 이용하여 프로그램 동작을 수행하는 단계 및 상기 프로그램 동작 완료 후에 상기 라이트 리퀘스트의 발행 순서에 기초하여 매핑 정보를 업데이트하는 단계를 포함한다.
Description
본 발명은 메모리 시스템 및 메모리 시스템의 매핑 정보 관리 방법에 관한 것으로서, 자세하게는 멀티 뱅크의 메모리 시스템에서의 매핑 정보를 업데이트하는 방법 및 이를 이용한 메모리 시스템에 관한 것이다.
반도체를 저장매체로 사용하는 메모리 시스템인 솔리드 스테이트 드라이브(Solid State Drive; SSD)는 호스트의 리퀘스트(request)들을 병렬로 처리하여 성능 향상을 도모한다. 반도체 저장매체 중의 하나인 플래시 메모리 디바이스는 물리적 어드레스를 변경하지 않고 동일한 물리적 어드레스에서의 업데이트 동작을 수행할 수 없기 때문에 카피 온 라이트(copy-on-write) 방식으로 데이터를 업데이트한다. 이에 따라서, 플래시 메모리 디바이스를 기반으로 하는 멀티 뱅크의 솔리드 스테이트 드라이브에서의 동일한 논리 주소에 대한 라이트 리퀘스트(write request)가 발생되는 경우에 라이트 성능 하락을 방지하면서 효율적으로 매핑 정보를 관리하는 방법에 대한 연구가 필요하게 되었다.
본 발명의 목적은 멀티 뱅크의 메모리 시스템에서의 라이트 성능 하락을 방지하면서 효율적으로 매핑 정보를 관리하는 매핑 정보 업데이트 방법을 제공하는데 있다.
본 발명의 다른 목적은 라이트 성능 하락을 방지하면서 효율적으로 매핑 정보를 관리하는 메모리 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 매핑 정보 업데이트 방법은 라이트 리퀘스트에 따른 라이트 트랜잭션 정보를 생성시키는 단계, 상기 라이트 트랜잭션 정보를 이용하여 프로그램 동작을 수행하는 단계 및 상기 프로그램 동작 완료 후에 상기 라이트 리퀘스트의 발행 순서에 기초하여 매핑 정보를 업데이트하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 라이트 트랜잭션 정보는 논리적 페이지 번호, 물리적 페이지 번호 및 라이트 리퀘스트 발행 순서에 기초하여 생성되는 디펜던시 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 디펜던시 정보는 라이트 리퀘스트가 발행된 시간을 나타내는 타임 스탬프 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 디펜던시 정보는 펜딩 중인 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 발행 순서를 나타내는 링크 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 라이트 트랜잭션 정보를 생성시키는 단계는 상기 라이트 리퀘스트를 메모리 디바이스에서 처리하는 데이터 사이즈에 기초하여 분할하는 단계, 상기 분할된 라이트 리퀘스트들 각각에 대하여 어드레스 변환 처리를 수행하는 단계 및, 상기 어드레스 변환 처리 결과에 기초하여 상기 라이트 트랜잭션 정보를 생성시키는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 라이트 트랜잭션 정보를 생성시키는 단계는 동일한 논리적 페이지 번호에 대한 복수의 라이트 리퀘스트들이 펜딩되어 있는 경우에, 이전 라이트 트랜잭션 정보에는 다음 라이트 트랜잭션을 가리키는 링크 정보가 포함되고 새로운 라이트 트랜잭션 정보에는 이전 라이트 트랜잭션을 가리키는 링크 정보가 포함되도록 동일한 논리적 페이지 번호에 대한 라이트 트랜잭션 정보를 생성시키는 동작을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 프로그램 동작을 수행하는 단계는 동일한 논리적 페이지 번호에 대한 복수개의 라이트 리퀘스트들이 펜딩된 경우에 상기 라이트 트랜잭션 정보에 포함된 디펜던시 정보에 기초하여 이전에 발행된 라이트 리퀘스트에 따른 프로그램 동작을 완료한 후에 새로 발행된 라이트 리퀘스트에 따른 프로그램 동작을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 매핑 정보를 업데이트하는 단계는 상기 라이트 트랜잭션 정보에 포함된 타임 스탬프 정보를 이용하여 라이트 리퀘스트가 발행된 시간 순서대로 매핑 정보들의 업데이트 순서를 결정하는 단계 및, 상기 결정된 업데이트 순서에 따라서 맵 테이블 정보에 상기 매핑 정보들을 업데이트하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 매핑 정보를 업데이트하는 단계는 프로그램 동작 완료 순서에 기초하여 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 초기 결정하는 단계, 상기 초기 결정된 동일한 논리적 페이지 번호의 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 상기 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 라이트 리퀘스트 발행 순서대로 변경하는 단계 및, 상기 변경된 업데이트 순서에 따라서 맵 테이블 정보에 상기 매핑 정보들을 업데이트하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 매핑 정보를 업데이트하는 단계는 상기 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 펜딩 중인 동일한 논리적 페이지 번호에 대한 복수개의 매핑 정보들 중에서 이전에 발행된 라이트 리퀘스트에 따른 매핑 정보에 대한 업데이트 동작은 스킵하고, 가장 최근에 발행된 라이트 리퀘스트에 따른 매핑 정보에 대한 업데이트 동작을 수행할 수 있다.
본 발명의 기술적 사상의 다른 면에 따른 메모리 시스템은 복수의 뱅크들로 구획되는 메모리 디바이스들 및, 라이트 리퀘스트에 따른 라이트 트랜잭션 정보를 생성시키고, 상기 라이트 트랜잭션 정보를 이용하여 상기 메모리 디바이스들에서 프로그램 동작을 수행시키기 위한 제어신호들을 발생시키고, 상기 프로그램 동작 수행 후에 상기 라이트 리퀘스트의 발행 순서에 기초하여 매핑 정보의 업데이트 동작을 수행하는 메모리 컨트롤러를 포함한다.
본 발명의 일실시 예에 따르면, 상기 메모리 컨트롤러는 맵 테이블 정보를 저장하는 랜덤 액세스 메모리 및, 상기 라이트 리퀘스트에 따른 라이트 트랜잭션 정보를 생성시키고, 상기 라이트 리퀘스트에 따른 프로그램 동작 완료 후에 라이트 트랜잭션들의 매핑 정보들을 상기 라이트 리퀘스트의 발행 순서에 기초하여 상기 맵 테이블 정보에 업데이트시키는 중앙 처리 장치를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 메모리 컨트롤러는 프로그램 동작이 완료된 라이트 리퀘스트들에 대한 매핑 정보들을 저장하는 맵 업데이트 큐를 더 포함하고, 상기 맵 업데이트 큐에 저장된 매핑 정보들을 상기 라이트 트랜잭션 정보를 이용하여 상기 라이트 리퀘스트의 발행 순서에 기초하여 재배열시키고, 상기 재배열된 맵 업데이트 큐로부터 순차적으로 읽어낸 매핑 정보들을 상기 맵 테이블 정보에 업데이트시키는 동작을 수행할 수 있다.
본 발명의 일실시 예에 따르면, 상기 중앙 처리 장치는 동일한 논리적 페이지 번호에 대한 매핑 정보들의 업데이트 순서를 프로그램 동작 완료 순서로부터 상기 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 라이트 리퀘스트 발행 순서로 변경하고, 상기 변경된 순서에 따라 상기 맵 테이블 정보에 대한 업데이트 동작을 수행할 수 있다.
본 발명의 일실시 예에 따르면, 상기 메모리 컨트롤러는 메모리 시스템이 파워 오프 되기 전에 상기 랜덤 액세스 메모리로부터 맵 테이블 정보를 읽어내어 상기 메모리 디바이스에 라이트하고, 상기 메모리 시스템이 파워 온 되면 상기 메모리 디바이스로부터 맵 테이블 정보를 읽어내어 상기 랜덤 액세스 메모리에 저장하는 동작을 수행할 수 있다.
본 발명에 의하면 라이트 리퀘스트의 발행 순서에 기초하여 라이트 리퀘스트들에 대한 매핑 정보를 맵 테이블 정보에 업데이트 처리함으로써, 맵 테이블 정보에서 최신 데이터가 저장된 페이지에 대한 매핑 정보를 오래된 데이터가 저장된 페이지에 대한 매핑 정보로 대체하는 현상을 방지할 수 있는 효과가 발생된다.
본 발명에 의하면 라이트 리퀘스트에 대한 프로그램 동작을 완료한 후에 라이트 리퀘스트 발행 순서에 기초하여 맵 테이블 정보를 업데이트하기 위한 매핑 정보들을 직렬화시킴으로써, 라이트 성능 하락을 초래하지 않으면서 맵 테이블 정보를 정상적으로 업데이트시킬 수 있는 효과가 발생된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템의 구성도이다.
도 2는 도 1에 도시된 메모리 시스템의 채널 및 뱅크의 구성을 예시적으로 보여주는 도면이다.
도 3은 도 1의 메모리 시스템에 포함된 플래시 메모리 디바이스를 상세하게 나타내는 블록도이다.
도 4는 도 1의 저장 장치를 구성하는 하나의 메모리 디바이스에 대한 저장 구조의 예를 보여주는 도면이다.
도 5는 도 1의 저장 장치를 구성하는 하나의 메모리 디바이스에 포함된 메모리 블록의 회로에 대한 일 예를 보여주는 도면이다.
도 6은 도 5의 메모리 블록에 포함된 메모리 셀의 일 예를 나타내는 단면도이다.
도 7은 도 1의 메모리 시스템의 소프트웨어 구조의 일 예를 보여주는 도면이다.
도 8a ~ 8c는 본 발명과 관련된 멀티 뱅크 메모리 시스템에서의 라이트 리퀘스트에 대한 프로그램 완료 순서에 따라서 매핑 정보를 업데이트하는 방법에 대한 하나의 사례를 보여주는 개념도이다.
도 9a ~ 9c는 본 발명과 관련된 멀티 뱅크 메모리 시스템에서의 라이트 리퀘스트에 대한 프로그램 완료 순서에 따라서 매핑 정보를 업데이트하는 방법에 대한 다른 사례를 보여주는 개념도이다.
도 10은 도 1에 도시된 메모리 컨트롤러의 세부 구성을 예시적으로 보여주는 도면이다.
도 11은 본 발명에서 제안하는 매핑 정보 업데이트 동작에 대한 처리 과정을 개념적으로 보여주는 도면이다.
도 12a 및 12b는 본 발명의 기술적 사상에 따른 매핑 정보 업데이트 방법에서의 링크 정보를 이용하여 매핑 정보 업데이트 순서를 변경하는 처리 과정을 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 매핑 정보 업데이트 방법의 흐름도이다.
도 14는 도 13에 도시된 라이트 트랜잭션 정보를 생성시키는 단계에 대한 세부적인 흐름도를 예시적으로 보여주는 도면이다.
도 15는 도 13에 도시된 매핑 정보 업데이트 단계에 대한 세부적인 흐름도의 일 예를 보여주는 도면이다.
도 16은 도 13에 도시된 매핑 정보 업데이트 단계에 대한 세부적인 흐름도의 다른 예를 보여주는 도면이다.
도 17은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 18은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 다른 구현 예를 나타내는 블록도이다.
도 19는 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 네트워크 시스템의 구현 예를 나타내는 블록도이다.
도 2는 도 1에 도시된 메모리 시스템의 채널 및 뱅크의 구성을 예시적으로 보여주는 도면이다.
도 3은 도 1의 메모리 시스템에 포함된 플래시 메모리 디바이스를 상세하게 나타내는 블록도이다.
도 4는 도 1의 저장 장치를 구성하는 하나의 메모리 디바이스에 대한 저장 구조의 예를 보여주는 도면이다.
도 5는 도 1의 저장 장치를 구성하는 하나의 메모리 디바이스에 포함된 메모리 블록의 회로에 대한 일 예를 보여주는 도면이다.
도 6은 도 5의 메모리 블록에 포함된 메모리 셀의 일 예를 나타내는 단면도이다.
도 7은 도 1의 메모리 시스템의 소프트웨어 구조의 일 예를 보여주는 도면이다.
도 8a ~ 8c는 본 발명과 관련된 멀티 뱅크 메모리 시스템에서의 라이트 리퀘스트에 대한 프로그램 완료 순서에 따라서 매핑 정보를 업데이트하는 방법에 대한 하나의 사례를 보여주는 개념도이다.
도 9a ~ 9c는 본 발명과 관련된 멀티 뱅크 메모리 시스템에서의 라이트 리퀘스트에 대한 프로그램 완료 순서에 따라서 매핑 정보를 업데이트하는 방법에 대한 다른 사례를 보여주는 개념도이다.
도 10은 도 1에 도시된 메모리 컨트롤러의 세부 구성을 예시적으로 보여주는 도면이다.
도 11은 본 발명에서 제안하는 매핑 정보 업데이트 동작에 대한 처리 과정을 개념적으로 보여주는 도면이다.
도 12a 및 12b는 본 발명의 기술적 사상에 따른 매핑 정보 업데이트 방법에서의 링크 정보를 이용하여 매핑 정보 업데이트 순서를 변경하는 처리 과정을 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 매핑 정보 업데이트 방법의 흐름도이다.
도 14는 도 13에 도시된 라이트 트랜잭션 정보를 생성시키는 단계에 대한 세부적인 흐름도를 예시적으로 보여주는 도면이다.
도 15는 도 13에 도시된 매핑 정보 업데이트 단계에 대한 세부적인 흐름도의 일 예를 보여주는 도면이다.
도 16은 도 13에 도시된 매핑 정보 업데이트 단계에 대한 세부적인 흐름도의 다른 예를 보여주는 도면이다.
도 17은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 18은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 다른 구현 예를 나타내는 블록도이다.
도 19는 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 네트워크 시스템의 구현 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)의 구성도이다.
도 1에 도시된 바와 같이, 메모리 시스템(100)은 메모리 컨트롤러(110) 및 저장 장치(120)를 포함한다.
일 예로서, 저장 장치(120)를 플래시 메모리 디바이스 등과 같은 비휘발성 메모리 디바이스로 구현하는 경우에 메모리 시스템(100)은 SSD(Solid State Drive)가 될 수 있다. SSD는 솔리드 스테이트 디스크(Solid State Disc)라고 칭해지기도 한다.
도 1에서는 저장 장치(120)를 플래시 메모리 디바이스들(121, 123)로 구현한 예를 보여준다. 도 1에서는 채널별로 4개의 플래시 메모리 디바이스들이 결합되는 멀티 뱅크 구조의 예를 보여준다.
저장 장치(120)는 비휘발성 메모리 디바이스들 중에서도 플래시 메모리 디바이스들로 구성되는 경우뿐만 아니라 다양한 종류 및 형태의 메모리 디바이스들이 적용될 수 있다. 예를 들면, 저장 장치(120)에 적용되는 메모리 디바이스는 플래시 메모리 디바이스뿐만 아니라 PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 디바이스 등이 포함될 수 있다. 저장 장치(120)는 적어도 하나 이상의 비휘발성 메모리 디바이스(들)와 적어도 하나 이상의 휘발성 메모리 디바이스(들)가 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수도 있다.
메모리 컨트롤러(110)는 호스트에서 발행된 리퀘스트(request)에 응답하여 저장 장치(120)에서의 소거, 쓰기 또는 읽기 프로세스를 수행하도록 메모리 시스템(100)을 제어할 있다.
메모리 컨트롤러(110)와 호스트간의 데이터 I/O(Input/Output)는 연속된 논리 주소 단위로 구성될 수 있다. 이 때 한번에 요청되는 I/O를 리퀘스트(request)로 정의할 수 있다.
메모리 컨트롤러(110)와 저장 장치(120) 사이에는 오퍼레이션 수행에 필요한 신호들을 전달하기 위한 채널(channel)들이 형성되어 있다. 오퍼레이션 수행에 필요한 신호들은 예로서 커맨드, 어드레스 및, 데이터 등이 될 수 있다. 채널이란 메모리 컨트롤러(110)와 저장 장치(120)가 신호를 주고받을 수 있는 독립적인 신호의 통로이다.
본 발명의 실시 예에 따른 메모리 시스템(100)은 메모리 컨트롤러(110)와 저장 장치(120) 사이에 하나 이상의 채널이 형성될 수 있다. 도 1에서는 N(N은 자연수)개의 채널이 형성되는 예를 보여준다.
그리고, 각각의 채널들은 복수 개의 뱅크(bank)들로 구성될 수 있다. 여기에서, 뱅크는 채널을 공유하는 메모리 디바이스들을 의미한다. 참고적으로, 뱅크는 웨이(way)라 칭해지기도 한다. 채널과 뱅크의 상세 구성 예는 아래에서 상세히 설명될 것이다.
메모리 컨트롤러(110)는 도 13 ~ 도 16에 도시된 흐름도에 따라서 매핑 정보 업데이트 방법을 수행할 수 있다. 메모리 컨트롤러(110)의 세부적인 동작은 아래에서 설명되어질 것이다.
도 2는 도 1에 도시된 저장 장치(120)의 채널 및 뱅크의 구성을 예시적으로 보여주는 도면이다.
각각의 채널(CH1 ~ CHN))에는 복수 개의 플래시 메모리 디바이스들(121, 122, 123)이 전기적으로 연결될 수 있다. 각각의 채널(CH1 ~ CHN)들은 대응되는 플래시 메모리 디바이스들(121, 122, 123)로 커맨드, 어드레스 및 데이터를 송수신할 수 있는 독립적인 버스를 의미할 수 있다. 서로 다른 채널에 접속된 플래시 메모리 디바이스들은 각각 독립적으로 동작할 수 있다. 각각의 채널에 접속된 복수의 플래시 메모리 디바이스들(121, 122, 123)은 복수 개의 뱅크(Bank0 ~ BankM)들을 구성할 수 있다. 각 채널에 구성된 (M+1)개의 뱅크에는 (M+1)개의 플래시 메모리 디바이스들이 접속될 수 있다.
예를 들어, 참조번호 121의 플래시 메모리 디바이스들은 1번 채널(CH1)에서 (M+1)개의 뱅크들(Bank0 ~ BankM)을 구성할 수 있다. 1번 채널(CH1)에는 (M+1)개의 뱅크들(Bank0 ~ BankM) 각각에 대응되는 플래시 메모리 디바이스(121-0 ~ 121-M)가 접속될 수 있다. 이와 같은 플래시 메모리 디바이스들과 각각의 채널과 뱅크와의 접속 관계는 참조 번호 122의 플래시 메모리 디바이스들 및 참조번호 123의 플래시 메모리 디바이스들에도 동일하게 적용될 수 있다.
뱅크는 동일한 채널을 공유하는 플래시 메모리 디바이스들을 구분하기 위한 단위이다. 채널 번호와 뱅크 번호에 따라서 각각의 플래시 메모리 디바이스들이 식별될 수 있다. 호스트로부터 제공된 리퀘스트(request)가 어느 채널의 어느 뱅크의 플래시 메모리 디바이스에서 수행될 지는 호스트로부터 전달된 논리 블록 어드레스(Logical Block Address; LBA)에 따라서 정해질 수 있다.
다른 예로서, 호스트로부터 제공된 라이트 리퀘스트(request)가 채널 또는 뱅크에서의 오퍼레이션 수행 상태를 고려하여 대기 중인 채널 또는 뱅크에서 수행되도록 논리적 페이지 주소에 대한 물리적 페이지 주소를 할당할 수 있다. 또 다른 예로서, 호스트로부터 제공된 리퀘스트(request)가 하나의 채널에서 페이지 단위로 순차적으로 시프트된 뱅크에서 수행되도록 논리적 페이지 주소에 대한 물리적 페이지 주소를 할당할 수 있다.
도 3은 도 1의 메모리 시스템(100)의 저장 장치(120)를 구성하는 하나의 플래시 메모리 디바이스(121-0)의 회로 구성을 예시적으로 보여주는 도면이다.
도 3을 참조하면, 플래시 메모리 디바이스(121-0)는 메모리 셀 어레이(21), 제어 로직(22), 전압 발생기(23), 로우 디코더(24) 및 페이지 버퍼(25)를 포함할 수 있다.
제어 로직(22)은 메모리 컨트롤러(110)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여 메모리 셀 어레이(21)에 데이터를 기입하거나 메모리 셀 어레이(21)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이때, 제어 로직(22)에서 출력된 제어 신호는 전압 발생기(23), 로우 디코더(24) 및 페이지 버퍼(25)에 전달될 수 있다.
전압 발생기(23)는 제어 로직(22)으로부터 수신한 제어 신호를 기초로 하여 복수의 워드 라인들(WL)을 구동하기 위한 구동 전압(VWL)을 생성할 수 있다. 구체적으로, 구동 전압(VWL)은 기입 전압(또는 프로그램 전압), 독출 전압, 소거 전압 또는 패스(pass) 전압일 수 있다.
로우 디코더(24)는 로우 어드레스를 기초로 하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(24)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 한편, 기입 동작 시에 로우 디코더(24)는 선택된 워드 라인에 기입 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
페이지 버퍼(25)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(21)에 연결될 수 있다. 페이지 버퍼(25)는 메모리 셀 어레이(21)에 기록될 데이터 또는 메모리 셀 어레이(21)로부터 독출된 데이터를 임시적으로 저장할 수 있다.
도 4는 도 1의 저장 장치를 구성하는 하나의 메모리 디바이스에 대한 저장 구조의 예를 보여주는 도면이다.
도 4를 참조하면, 메모리 셀 어레이(21)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(21)는 a(a는 2 이상의 정수)개의 블록들(BLK0 내지 BLKa-1)을 포함하고, 각 블록들(BLK0 내지 BLKa-1)은 b(b는 2 이상의 정수)개의 페이지들(PAG0 내지 PAGb-1)을 포함하며, 각 페이지들(PAG0 내지 PAGb-1)은 c(c는 2 이상의 정수)개의 섹터들(SEC0 내지 SECc-1)을 포함할 수 있다. 도 4에서는 도시의 편의를 위해, 블록 BLK0에 대하여만 페이지들(PAG0 내지 PAGb-1) 및 섹터들(SEC0 내지 SECc-1)을 도시하였으나, 다른 블록들(BLK1 내지 BLKa-1)도 블록 BLK0과 동일한 구조를 가질 수 있다.
도 5는 도 1의 저장 장치를 구성하는 하나의 메모리 디바이스에 포함된 메모리 블록의 회로에 대한 일 예를 보여주는 도면이다.
참고적으로, 도 4에 도시된 각 블록들(BLK0 내지 BLKa-1)은 도 5와 같이 구현될 수 있다. 도 5를 참조하면, 각 블록들(BLK0 내지 BLKa-1)은 비트 라인(BL0 내지 BLd-1) 방향으로, 8개의 메모리 셀(MCEL)들이 직렬로 연결되는 d(d는 2 이상의 정수)개의 스트링(STR)들을 포함할 수 있다. 각 스트링(STR)은 각각 직렬로 연결되는 메모리 셀(MCEL)들의 양 끝에 연결되는, 드레인(drain) 선택 트랜지스터(Str1) 및 소스(source) 선택 트랜지스터(Str2)를 포함할 수 있다.
도 5와 같은 구조를 갖는 낸드 플래시 메모리 장치는 블록 단위로 소거(erase)가 수행되고, 각 워드 라인(WL0 내지 WL7)에 대응되는 페이지(PAG) 단위로 프로그램을 수행한다. 도 5는 하나의 블록에 8개의 워드 라인들(WL0 내지 WL7)에 대한 8개의 페이지(PAG)들이 구비되는 예를 도시한다. 다만, 본 발명의 실시예에 따른 메모리 셀 어레이(21)의 블록들(BLK0 내지 BLKa-1)은 도 5에 도시되는 메모리 셀(MCEL) 및 페이지(PAG)의 개수와 다른 개수의 메모리 셀 및 페이지를 구비할 수도 있다.
도 6은 도 5의 메모리 블록(BLK0)에 포함된 메모리 셀(MCEL)의 일 예를 나타내는 단면도이다.
도 6을 참조하면, 기판(SUB) 상에 소스(S) 및 드레인(D)이 형성되고, 소스(S)와 드레인(D)의 사이에는 채널 영역이 형성될 수 있다. 채널 영역의 상부에는 플로팅 게이트(FG)가 형성되는데, 채널 영역과 플로팅 게이트(FG)의 사이에는 터널링(tunneling) 절연층과 같은 절연층이 배치될 수 있다. 플로팅 게이트(FG)의 상부에는 컨트롤 게이트(CG)가 형성되는데, 플로팅 게이트(FG)와 컨트롤 게이트(CG)의 사이에는 블로킹(blocking) 절연층과 같은 절연층이 배치될 수 있다. 기판(SUB), 소스(S), 드레인(D) 및 컨트롤 게이트(CG)에는 메모리 셀(MCEL)에 대한 프로그램, 소거 및 독출 동작에 필요한 전압들이 인가될 수 있다.
플래시 메모리 디바이스에서는 메모리 셀(MCEL)의 문턱 전압(threshold voltage, Vth)의 구별에 의해 메모리 셀(MCEL)에 저장된 데이터가 독출될 수 있다. 이때, 메모리 셀(MCEL)의 문턱 전압(Vth)은 플로팅 게이트(FG)에 저장된 전자(electron)의 양에 따라 결정될 수 있다. 구체적으로, 플로팅 게이트(FG)에 저장된 전자가 많을수록 메모리 셀(MCEL)의 문턱 전압은 높아질 수 있다.
메모리 셀(MCEL)의 플로팅 게이트(FG)에 저장된 전자는 다양한 원인들에 의해 화살표 방향으로 누설(leakage)될 수 있고, 이에 따라, 메모리 셀(MCEL)의 문턱 전압이 변경될 수 있다. 예를 들어, 플로팅 게이트(FG)에 저장된 전자는 메모리 셀의 마모에 의해 누설될 수 있다. 구체적으로, 메모리 셀(MCEL)에 대한 프로그램, 소거 또는 독출과 같은 액세스 동작을 반복하면 채널 영역과 플로팅 게이트(FG) 사이의 절연막은 마모될 수 있고, 이에 따라, 플로팅 게이트(FG)에 저장된 전자가 누설될 수 있다. 또 다른 예로, 플로팅 게이트(FG)에 저장된 전자는 고온 스트레스 또는 프로그램/독출 시의 온도 차이 등에 의해 누설될 수도 있다. 이와 같은 누설 현상은 메모리 장치의 신뢰성을 저하시키는 요인이 된다.
플래시 메모리 디바이스에서는 데이터의 기입 및 독출은 페이지 단위로 수행되고, 전기적 소거는 블록 단위로 이루어진다. 또한, 기입 전에 블록의 전기적 소거 작업이 요구된다. 이에 따라서, 덮어쓰기가 불가능하다.
덮어쓰기가 불가능한 메모리 장치에서는 사용자 데이터를 사용자가 원하는 물리적 영역에 기입할 수 없다. 따라서 호스트로부터 기입 또는 독출을 위하여 액세스를 요청받는 경우, 호스트로부터 기입 또는 독출이 요청된 논리적 어드레스를 실제로 데이터가 저장되어 있는 또는 데이터가 저장될 물리적 어드레스로 변환시키는 어드레스 변환 동작이 필요하다.
메모리 시스템(100)에서 논리적 어드레스를 물리적 어드레스로 변환시키는 과정을 도 7을 참조하여 설명하기로 한다.
도 7은 메모리 시스템(100)의 소프트웨어 구조를 보여주는 블록도이다. 일 예로서, 도 7에서는 메모리 시스템(100)을 구성하는 메모리 장치(20)를 플래시 메모리 디바이스들로 구현한 경우의 메모리 시스템(100)의 소프트웨어 구조를 보여준다.
도 7을 참조하면, 메모리 시스템(100)은 애플리케이션(101), 파일 시스템(102), 플래시 변환 계층(103), 그리고 플래시 메모리(104)순으로 소프트웨어 계층 구조를 갖는다. 여기에서, 플래시 메모리(104)는 물리적으로 도 3에 도시된 플래시 메모리 디바이스(121-0)를 의미한다.
애플리케이션(101)은 사용자 데이터를 가공하는 펌웨어를 의미한다. 예를 들어, 애플리케이션(101)은 워드 프로세서와 같은 문서 처리 소프트웨어, 계산 소프트웨어, 웹 브라우저와 같은 문서 뷰어가 될 수 있다. 애플리케이션(101)은 사용자의 입력에 응답하여 사용자 데이터를 처리하고, 처리된 사용자 데이터를 플래시 메모리(104)에 저장하기 위한 커맨드를 파일 시스템(102)에 전달한다.
파일 시스템(102)은 플래시 메모리(104)에 사용자 데이터를 저장하기 위해 사용되는 구조 또는 소프트웨어를 의미한다. 파일 시스템(102)은 애플리케이션(101)으로부터의 커맨드에 응답하여, 사용자 데이터가 저장될 논리적 어드레스를 할당한다. 파일 시스템(102)의 일종으로 FAT(File Allocation Table) 파일 시스템, NTFS 등이 있다.
플래시 변환 계층(Flash Translation Layer; FTL, 103)에서는 파일 시스템(102)으로부터 전달받은 논리적 어드레스를 플래시 메모리(104)에서의 읽기/쓰기 동작을 위한 물리적 어드레스로의 변환 과정을 수행한다. 플래시 변환 계층(103)에서는 맵 테이블 정보를 이용하여 논리적 어드레스를 물리적 어드레스로 변환시킨다.
예로서, 논리적 어드레스들을 논리적 페이지 단위로 분할하여 논리적 페이지 번호(LPN)를 할당하고, 논리적 페이지 번호를 맵 테이블 정보를 이용하여 물리적 페이지 번호로 변환시킬 수 있다.
다른 예로서, 논리적 어드레스들을 논리적 페이지 단위로 분할하여 논리적 페이지 번호(LPN)를 할당하고, 논리적 페이지 번호를 맵 테이블 정보를 이용하여 가상 페이지 번호(VPN)로 변환시키고, 가상 페이지 번호(VPN)를 이용하여 물리적 페이지 번호(PPN)를 산출할 수도 있다.
어드레스 매핑 방법은 페이지 매핑 방법 또는 블록 매핑 방법을 이용할 수 있다. 페이지 매핑 방법은 페이지 단위로 어드레스 매핑 동작을 수행하고, 블록 매핑 방법은 블록 단위로 어드레스 매핑 동작을 수행하는 방식이다. 또한, 페이지 매핑과 블록 매핑을 혼합한 혼합 매핑 방법이 적용될 수도 있다. 여기에서, 물리적 어드레스는 플래시 메모리(104)의 데이터 저장 위치를 나타낸다.
예로서, 플래시 변환 계층(103)에서는 논리 블록 어드레스(Logical Block Address; LBA)를 페이지 단위의 논리적 페이지 번호(Logical Page Number; LPN)로 나누고, 논리적 페이지 번호(Logical Page Number; LPN)를 플래시 메모리 디바이스의 물리적 저장 위치를 나타내는 물리적 페이지 번호(Physical Page Number; PPN)로 변환시키는 처리를 수행할 수 있다.
도 8a ~ 8c는 본 발명과 관련된 멀티 뱅크 메모리 시스템에서의 라이트 리퀘스트에 대한 프로그램 완료 순서에 따라서 매핑 정보를 업데이트하는 방법에 대한 하나의 사례를 보여주는 개념도이다.
도 8a는 호스트로부터 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 발행 순서를 보여준다. 도 8a를 참조하면, 동일한 논리적 페이지 번호 LPN 1000에 대하여 호스트로부터 Write A, Write B 순으로 라이트 리퀘스트가 수신되었다는 것을 알 수 있다.
도 8b는 도 8a와 같은 순서로 요청된 라이트 리퀘스트들을 플래시 메모리 디바이스에서 처리하는 사례를 보여준다.
도 8b를 참조하면, 첫 번째 라이트 리퀘스트에 따라서 PPN a를 할당받아 뱅크 0의 플래시 메모리 디바이스에서 Write A가 수행되고, 다음으로 두 번째 라이트 리퀘스트에 따라서 PPN b를 할당받아 뱅크 1의 플래시 메모리 디바이스에서 Write B가 수행된다.
도 8c는 라이트 리퀘스트에 따라 프로그램을 수행하고 나서 맵 테이블 정보에서 매핑 정보를 업데이트하는 순서를 보여준다. 맵 테이블은 L2P 맵이라 칭할 수 있다.
도 8c를 참조하면, 프로그램 완료 순서에 기초하여 Write A에 따라서 LPN 1000이 PPN a에 매핑되도록 맵 테이블 정보를 업데이트한다. 그리고 나서, Write B에 따라서 LPN 1000이 PPN b에 매핑되도록 맵 테이블 정보를 업데이트한다. 이에 따라서, 맵 테이블에서 LPN 1000에 대응되는 물리적 페이지 번호는 PPN a에서 PPN b로 정상적으로 갱신된다.
도 9a ~ 9c는 본 발명과 관련된 멀티 뱅크 메모리 시스템에서의 라이트 리퀘스트에 대한 프로그램 완료 순서에 따라서 매핑 정보를 업데이트하는 방법에 대한 다른 사례를 보여주는 개념도이다.
도 9a는 호스트로부터 동일한 논리적 페이지 번호에 대하여 요청된 라이트 리퀘스트들의 순서를 보여준다. 도 9a를 참조하면, 동일한 논리적 페이지 번호 LPN 1000에 대하여 호스트로부터 Write A, Write B 순으로 라이트 리퀘스트가 수신되었다는 것을 알 수 있다.
도 9b는 도 9a와 같은 순서로 요청된 라이트 리퀘스트들을 플래시 메모리 디바이스에서 처리하는 사례를 보여준다.
도 9b를 참조하면, 첫 번째 라이트 리퀘스트에 따라서 PPN a를 할당받아 뱅크 0의 플래시 메모리 디바이스에서 Write A를 수행하기 전에 PPN a가 포함된 블록에서 소거 처리를 해야 하는 경우를 보여준다. 이에 비하여, 두 번째 라이트 리퀘스트에 따라서 PPN b를 할당받아 뱅크 1의 플래시 메모리 디바이스에서 Write B를 수행하기 전에 소거 처리가 선행되지 않는 경우를 보여준다. 이에 따라서, 실제 프로그램 동작은 뱅크 1에서 먼저 완료되고 나서 뱅크 0에서 완료된다. 즉, 실제 프로그램 동작은 Write B, Write A 순으로 완료된다.
도 9c는 라이트 리퀘스트에 따라 프로그램을 수행하고 나서 매핑 정보를 업데이트하는 순서를 보여준다.
도 9c를 참조하면, 프로그램 완료 순서에 기초하여 Write B에 따라서 LPN 1000이 PPN b에 매핑되도록 맵 테이블 정보를 업데이트한다. 그리고 나서, Write A에 따라서 LPN 1000이 PPN a에 매핑되도록 맵 테이블 정보를 업데이트한다. 이에 따라서, 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트 발행 순서와는 다르게 맵 테이블에서 LPN 1000에 대응되는 물리적 페이지 번호는 PPN b에서 PPN a로 갱신된다. 이로 인하여, 맵 테이블에는 LPN 1000에 대한 최신 데이터가 아닌 갱신 전의 오래된 데이터가 저장된 물리적 페이지 번호가 매핑되는 결과를 초래한다.
이와 같은 라이트 리퀘스트들에 대한 프로그램 완료 순서에 기초하여 매핑 정보의 업데이트 순서를 결정하는 방식에 대한 단점을 해결하기 위하여 본 발명에서는 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들에 대한 매핑 정보를 라이트 리퀘스트의 발행 순서에 기초하여 관리하는 방식을 제안한다.
도 10은 도 1에 도시된 메모리 컨트롤러의 세부 구성을 예시적으로 보여주는 도면이다.
도 10을 참조하면, 메모리 컨트롤러(110)는 중앙처리장치(CPU; 111), ROM(Read Only Memory; 112), RAM(Random Access Memory; 113), 호스트 인터페이스(Host Interface; 114), 리퀘스트 큐(Request Queue; 115), 서브 리퀘스트 큐(Sub Request Queue; 116), 맵 업데이트 큐(Map Update Queue; 117), 메모리 인터페이스(118) 및, 버스(Bus; 119)를 구비한다.
메모리 컨트롤러(110)의 구성요소들은 버스(119)를 통하여 전기적으로 연결될 수 있다.
호스트 인터페이스(114)는 메모리 시스템(100)과 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 시스템(100)과 호스트 사이의 인터페이스를 수행한다. 호스트 인터페이스(114)는 예로서 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 호스트 인터페이스(114)는 중앙처리장치(111)의 제어에 따라 호스트와 커맨드, 어드레스 및, 데이터를 주고받을 수 있다.
ROM(112)에는 메모리 시스템(100)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들이 저장될 수 있다. 예로서, 도 13 ~ 도 16의 흐름도에 따른 매핑 정보 업데이트 방법을 실행하기 위한 프로그램 코드들도 ROM(112)에 저장될 수 있다.
RAM(113)에는 ROM(112)에서 읽어낸 프로그램 코드 및 데이터가 저장될 수 있다. 또한, RAM(113)에는 호스트 인터페이스(114)를 통하여 수신되는 데이터 또는 메모리 인터페이스(118)를 통하여 저장 장치(120)로부터 수신되는 데이터가 저장될 수 있다.
중앙처리장치(111)는 RAM(113)에 저장된 프로그램 코드 및 데이터들을 이용하여 메모리 시스템(100)의 동작을 전반적으로 제어할 수 있다.
예컨대, 메모리 시스템(100)이 파워 온(power on) 되면 중앙처리장치(111)는 ROM(112)에 저장된 메모리 시스템(100)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(113)에 저장할 수 있다. 예로서, 중앙처리장치(111)는 저장 장치(120)로부터 맵 테이블 정보를 읽어내어 RAM(113)에 저장할 수 있다. 세부적으로, 메모리 시스템(100)이 파워 온 되면, 중앙처리장치(111)는 저장 장치(120)로부터 맵 테이블 정보를 읽어내어 RAM(113)에 저장할 수 있다. 그리고, 메모리 시스템(100)이 파워 오프 되기 전에 중앙처리장치(111)는 RAM(113)로부터 맵 테이블 정보를 읽어내어 저장 장치(120)에 라이트하도록 제어한다.
리퀘스트 큐(115)에는 호스트 인터페이스(114)를 통하여 호스트로부터 수신되는 하나 또는 다수의 I/O 리퀘스트가 순차적으로 저장된다. 예로서, I/O 리퀘스트에는 라이트 리퀘스트, 소거 리퀘스트, 또는 리드 리퀘스트 등이 포함될 수 있다. 그리고, I/O 리퀘스트는 커맨드 코드로 정의될 수 있다. 이에 따라서, 리퀘스트 큐(115)에는 라이트 커맨드 코드, 소거 커맨드 코드, 또는 리드 커맨드 코드 등이 저장될 수 있다.
예로서, 호스트로부터 라이트 리퀘스트가 수신되는 경우에 라이트 커맨드 코드, 시작 LBA(Logical Block Address) 정보 및 라이트 동작을 수행할 LBA 개수 정보가 리퀘스트 큐(115)에 저장될 수 있다.
리퀘스트 큐(115)에 저장된 I/O 리퀘스트는 예로서 플래시 메모리 디바이스들로 구성된 저장 장치(120)에서 직접 처리할 수 없는 규격을 가질 수 있다.
이에 따라서, 중앙처리장치(111)는 리퀘스트 큐(115)에 저장된 I/O 리퀘스트를 독출하여, 저장 장치(120)에서 오퍼레이션을 수행할 수 있도록 서브 리퀘스트로 분할한다. 그리고, 저장 장치(120)에서 인식할 수 있는 물리적 주소로 변환시킨다. 예로서, I/O 리퀘스트를 플래시 메모리 디바이스에서 프로그램/리드 오퍼레이션이 가능한 규격의 서브 리퀘스트로 분할할 수 있다. 서브 리퀘스트의 크기는 플래시 메모리 디바이스에서 독립적으로 처리할 수 있는 페이지 단위로 정의될 수 있다. 예로서, 서브 리퀘스트는 커맨드 코드와 논리적 페이지 번호를 포함할 수 있다.
중앙처리장치(111)는 I/O 리퀘스트에서 서브 리퀘스트로 분할되어 할당된 논리적 페이지 번호를 플래시 메모리 디바이스의 물리적 페이지 번호로 변환시킨다. 예로서, 중앙처리장치(111)는 I/O 리퀘스트에서 서브 리퀘스트로 분할되어 할당된 논리적 페이지 번호(LPN)를 가상 페이지 번호(VPN)로 변환시키고, 가상 페이지 번호(VPN)를 이용하여 물리적 페이지 번호(PPN)를 산출할 수도 있다.
중앙처리장치(111)는 서브 리퀘스트들 각각에 대한 트랜잭션 정보(Transaction Information)를 생성시킨다. 예로서, 중앙처리장치(111)는 라이트 리퀘스트에 대한 I/O 리퀘스트를 서브 리퀘스트로 분할할 때 라이트 트랜잭션 정보를 생성시킬 수 있다. 예로서, 라이트 트랜잭션 정보는 논리적 페이지 번호, 물리적 페이지 번호 및 디펜던시 정보를 포함할 수 있다. 여기에서, 디펜던시 정보는 라이트 리퀘스트 발행 순서에 기초하여 생성되는 정보이다.
중앙처리장치(111)는 라이트 리퀘스트에 대한 서브 리퀘스트들이 복수의 뱅크들에서 분산되어 수행될 수 있도록 논리적 페이지 주소에 대한 물리적 페이지 주소를 변환할 수 있다. 예로서, 중앙처리장치(111)는 라이트 리퀘스트에 대한 서브 리퀘스트들의 트랜잭션 정보를 생성시킬 때, 복수의 뱅크들에서 순차적으로 번갈아 가면서 메모리 디바이스가 액세스되도록 논리적 페이지 주소에 대한 물리적 페이지 주소를 변환할 수 있다. 이에 따라서, 복수의 뱅크들을 인터리빙(interleaving) 방식으로 액세스할 수 있게 된다.
예로서, 디펜던시 정보는 라이트 리퀘스트가 발행된 시간을 나타내는 타임 스탬프 정보를 포함할 수 있다. 다른 예로서, 디펜던시 정보는 펜딩 중인 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 발행 순서를 나타내는 링크 정보를 포함할 수 있다.
예로서, 중앙처리장치(111)는 링크 정보를 다음과 같이 생성시킬 수 있다.
동일한 논리적 페이지 번호에 대한 복수의 라이트 리퀘스트들이 펜딩되어 있는 경우에, 이전 라이트 트랜잭션 정보에는 다음 라이트 트랜잭션을 가리키는 링크 정보를 생성시키고 새로운 라이트 트랜잭션 정보에는 이전 라이트 트랜잭션을 가리키는 링크 정보가 포함되도록 동일한 논리적 페이지 번호에 대한 라이트 트랜잭션 정보를 생성시킬 수 있다.
이에 따라서, 동일한 논리적 페이지 번호에 대한 복수의 라이트 리퀘스트들이 펜딩되어 있는 경우에, 링크 정보에 기초하여 이전 라이트 트랜잭션 정보가 저장된 서브 리퀘스트를 검색할 수 있다. 같은 방식으로, 동일한 논리적 페이지 번호에 대한 복수의 라이트 리퀘스트들이 펜딩되어 있는 경우에, 링크 정보에 기초하여 다음 라이트 트랜잭션 정보가 저장된 서브 리퀘스트를 검색할 수 있다.
중앙처리장치(111)는 이와 같이 생성된 트랜잭션 정보가 포함되는 서브 리퀘스트 정보를 서브 리퀘스트 큐(116)에 저장할 수 있다. 일 예로서, 서브 리퀘스트 큐(116)에는 라이트 커맨드 코드, 논리적 페이지 번호, 물리적 페이지 번호, 타임 스탬프 정보가 저장될 수 있다. 다른 예로서, 서브 리퀘스트 큐(116)에는 라이트 커맨드 코드, 논리적 페이지 번호, 물리적 페이지 번호, 링크 정보가 저장될 수 있다. 서브 리퀘스트 큐(116)에는 메모리 디바이스 별로 독자적으로 수행되는 커맨드들이 저장된다. 이에 따라서, 서브 리퀘스트 큐(116)를 메모리 디바이스에 대한 커맨드 큐라 칭할 수도 있다.
서브 리퀘스트는 저장 장치(120)를 구성하는 플래시 메모리 디바이스에서 오퍼레이션을 수행하는 단위가 된다. 따라서, 서브 리퀘스트가 오퍼레이션 발행 단위가 될 수 있다.
예로서, 중앙처리장치(111)는 서브 리퀘스트 큐(116)를 채널별로 분할하여 관리할 수 있다. 다른 예로서, 중앙처리장치(111)는 서브 리퀘스트 큐(116)를 저장 장치(120)를 구성하는 메모리 디바이스 단위로 분할하여 관리할 수도 있다.
중앙처리장치(111)는 저장 장치(120)에서 채널별로 동시에 오퍼레이션을 수행하는 메모리 디바이스들의 개수를 고려하여 리퀘스트 큐(115)에 저장된 I/O 리퀘스트의 독출 시간을 조정할 수 있다. 예로서, 인터럽트 방식 또는 폴링 방식을 통하여 메모리 디바이스들의 오퍼레이션 상태를 확인할 수 있다.
서브 리퀘스트 큐(116)에서 읽어낸 서브 리퀘스트에 기초하여 저장 장치(120)에서의 프로그램 동작이 완료되면, 중앙처리장치(111)는 프로그램 동작이 완료된 순서대로 서브 리퀘스트 정보를 순차적으로 맵 업데이트 큐(Map Update Queue; 117)에 저장한다. 이에 따라서, 맵 업데이트 큐(Map Update Queue; 117)에는 프로그램 완료된 라이트 트랜잭션 정보들이 저장된다.
메모리 인터페이스(118)는 메모리 컨트롤러(110)와 저장 장치(120)간의 인터페이싱 동작을 수행한다. 메모리 인터페이스(118)는 서브 리퀘스트 큐(116)에서 읽어낸 서브 리퀘스트 정보를 기초하여 선택된 채널을 통하여 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 저장 장치(120)로 전달하고, 라이트할 데이터를 저장 장치(120)로 전송하거나 저장 장치(120)로부터 읽어낸 데이터를 수신할 수 있다.
메모리 인터페이스(118)는 저장 장치(120)로부터 읽어낸 데이터의 에러를 정정하기 위한 에러 정정 코드 처리 및 오류 블록 관리 등을 수행할 수 있다.
중앙처리장치(111)는 다음과 같은 방식으로 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 서브 리퀘스트들 간의 직렬화(serialization) 동작을 수행시킬 수 있다.
첫 번째 방식으로 중앙처리장치(111)는 이전에 수행중인 동일한 논리적 페이지 번호의 라이트 오퍼레이션이 완료될 때까지 새로운 라이트 서브 리퀘스트들이 저장 장치(120)로 전송되는 것을 지연시킨다. 이 경우에 일정 시간이 지나면 이전 라이트 오퍼레이션이 완료되므로 약간의 파이프-라인 스톨(pipe-line stall)이 발생될 수 있다. 그러나, 이 경우 이전 라이트 오퍼레이션이 플래시 프로그램 방식에 따라 시간이 지나도 펜딩(pending) 상태를 유지할 수 있다. 예를 들면, 일정량의 페이지를 버퍼링 해야만 다음 프로그램 스텝으로 진행되는 경우처럼 별도의 페이지 버퍼링이 필요한 경우에, 동일 논리적 페이지 번호에 대한 이와 같은 방식의 처리에 있어서 데드-락(dead-lock)을 유발시킬 수도 있다. 이러한 경우에는 더미 라이트(dummy write) 오퍼레이션을 발생시켜 이전 동일한 논리적 페이지 번호에 대한 라이트 오퍼레이션을 강제로 완료시킬 수 있다.
두 번째 방식으로 리퀘스트들 간의 의존성 정보를 이용해 이전 라이트 리퀘스트 이후에 새로운 리퀘스트에 대한 프로그램 동작을 수행되도록 보장하는 방식이다. 이전 프로그램 완료 이후에 다른 뱅크에서 새로운 리퀘스트를 이어서 수행할 수 있는 방식이다. 다른 예로서, 동일한 뱅크에서 라이트를 순차적으로 수행할 수도 있다.
위의 2가지 방식들은 플래시 메모리 디바이스들의 각 뱅크에서 수행되는 프로그램이 시작되는 시점이 지연되는 현상으로 인하여 프로그램 시간이 증가될 수 있다.
본 발명에서 제안하는 세 번째 방식은 플래시 메모리 디바이스에 프로그램하기 전에 직렬화(serialization) 동작을 수행하는 위의 2가지 방식들과는 달리 프로그램 완료 이후에 L2P(Logical address to Physical address) 맵 업데이트 시점에 직렬화(serialization) 동작을 수행시키는 방식이다.
본 발명에서 제안하는 프로그램 완료 이후에 L2P(Logical address to Physical address) 맵 업데이트 시점에 직렬화(serialization) 동작을 수행시키는 세 번째 방식에 기초하여 매핑 정보를 업데이트하는 동작에 대한 처리 과정을 도 11에 개념적으로 도시하였다.
도 11을 참조하면, 동일한 논리적 페이지 번호 LPN 1000에 대하여 호스트로부터 Write A, Write B 순으로 라이트 리퀘스트가 수신되었다는 것을 알 수 있다. 중앙처리장치(111)는 FTL 펌웨어를 이용하여 첫 번째 라이트 리퀘스트 Write A의 논리적 페이지 번호 LPN 1000을 물리적 페이지 번호 PPN a(뱅크 0)로 변환시키고, 두 번째 라이트 리퀘스트 Write B의 논리적 페이지 번호 LPN 1000을 물리적 페이지 번호 PPN b(뱅크 1)로 변환시킨다.
도 11을 참조하면, 뱅크 0의 플래시 메모리 디바이스에서 Write A를 수행하기 전에 PPN a가 포함된 블록에서 소거 처리를 해야 하는 경우를 보여준다. 이에 비하여, 두 번째 라이트 리퀘스트에 따라서 PPN b가 포함된 뱅크 1의 플래시 메모리 디바이스에서 Write B를 수행하기 전에 소거 처리가 선행되지 않는 경우를 보여준다. 이에 따라서, 실제 프로그램 동작은 뱅크 1에서 먼저 완료되고 나서 뱅크 0에서 완료된다. 즉, 실제 프로그램 동작은 Write B, Write A 순으로 완료된다.
도 11을 참조하면, 중앙처리장치(111)는 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 발행 순서에 기초하여 라이트 리퀘스트들에 매핑 정보를 맵 테이블에 업데이트하도록 처리한다. 이에 따라서, 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트 발행 순서에 기초하여 맵 테이블에서 LPN 1000에 대응되는 물리적 페이지 번호는 최종적으로 PPN b로 갱신된다.
예로서, 라이트 리퀘스트 발행 순서에 기초하여 생성되는 디펜던시(dependency) 정보를 이용하여 라이트 리퀘스트의 발행 순서에 기초하여 매핑 정보를 업데이트 시킬 수 있다. 예로서, 디펜던시 정보는 라이트 트랜잭션 정보에 포함될 수 있다.
예로서, 디펜던시 정보는 라이트 리퀘스트가 발행된 시간을 나타내는 타임 스탬프 정보를 포함할 수 있다. 다른 예로서, 디펜던시 정보는 펜딩 중인 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 발행 순서를 나타내는 링크 정보를 포함할 수 있다.
예로서, 중앙처리장치(111)는 라이트 트랜잭션 정보에 포함된 타임 스탬프 정보를 이용하여 맵 업데이트 큐(117)에 저장된 매핑 정보들에 대한 업데이트 순서를 결정할 수 있다.
세부적으로, 중앙처리장치(111)는 라이트 트랜잭션 정보에 포함된 타임 스탬프 정보를 이용하여 맵 업데이트 큐(Map Update Queue; 117)에 저장된 서브 리퀘스트들에 대한 매핑 정보들의 업데이트 순서를 라이트 리퀘스트가 발행된 시간 순서대로 결정하고, 결정된 업데이트 순서에 기초하여 RAM(113)에 저장된 맵 테이블 정보를 맵 업데이트 큐(117)에 저장된 매핑 정보로 업데이트 처리한다.
다른 예로서, 중앙처리장치(111)는 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 맵 업데이트 큐(117)에 저장된 매핑 정보들에 대한 업데이트 순서를 결정하여 매핑 정보를 업데이트할 수 있다.
중앙처리장치(111)는 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 펜딩 중인 동일한 논리적 페이지 번호에 대한 복수개의 매핑 정보들 중에서 이전에 발행된 라이트 리퀘스트에 따른 매핑 정보에 대한 업데이트 동작은 스킵하고, 가장 최근에 발행된 라이트 리퀘스트에 따른 매핑 정보에 대한 업데이트 동작을 수행할 수 있다.
중앙처리장치(111)는 프로그램 동작 완료 순서에 기초하여 초기 설정된 매핑 정보들의 업데이트 순서를 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 리퀘스트 발행 순서대로 변경할 수 있다.
중앙처리장치(111)는 프로그램 동작이 완료된 순서대로 서브 리퀘스트 정보를 순차적으로 맵 업데이트 큐(117)에 저장함으로써, 프로그램 동작 완료 순서에 기초하여 업데이트 순서가 초기 설정된다.
다음으로, 중앙처리장치(111)는 맵 업데이트 큐(117)에 저장된 동일한 논리적 페이지 번호에 대한 매핑 정보들의 업데이트 순서를 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 리퀘스트 발행 순서대로 변경한다.
도 12a 및 12b는 본 발명의 기술적 사상에 따른 매핑 정보 업데이트 방법에서의 링크 정보를 이용하여 매핑 정보 업데이트 순서를 변경하는 처리 과정을 보여주는 도면이다.
도 12a는 펜딩 중인 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 라이트 트랜잭션 정보에 따른 링크 관계를 보여준다.
도 12a에 도시된 바와 같이, 라이트 트랜잭션 정보에 포함된 링크 정보에 기초하여 라이트 트랜잭션 Write 100(1)에는 다음 라이트 트랜잭션 Write 100(2)을 가리키는 링크 정보가 포함되고, 라이트 트랜잭션 Write 100(2)에는 이전 라이트 트랜잭션 Write 100(1)을 가리키는 링크 정보가 포함된다.
도 12b는 맵 업데이트 큐(117)에서의 링크 정보를 이용하여 매핑 정보 업데이트 순서를 변경하는 처리 과정을 보여주는 도면이다.
도 12b는 맵 업데이트 큐(117)에 저장된 라이트 트랜잭션 정보들을 저장된 순서대로 나열한 것으로, 화살표 방향으로 매핑 업데이트 동작을 순차적으로 수행한다.
링크 정보가 포함되지 않은 라이트 트랜잭션들에 대해서는 맵 업데이트 큐(117)에 저장된 순서대로 매핑 정보를 RAM(113)에 저장된 맵 테이블 정보에 업데이트시킨다. 그리고, 이전 라이트 트랜잭션을 가리키는 링크 정보가 포함되지 않은 라이트 트랜잭션들에 대해서는 맵 업데이트 큐(117)에 저장된 순서대로 매핑 정보를 업데이트 처리한다. 그러나, 이전 라이트 트랜잭션을 가리키는 링크 정보가 포함된 펜딩 중인 라이트 트랜잭션들에 대해서는 매핑 업데이트를 수행하지 않고 맵 업데이트 큐(117)의 마지막 순서 위치로 이동시킨다.
도 12b를 참조하면, 라이트 트랜잭션 Write 100(1)에는 펜딩 중인 다음 라이트 트랜잭션을 가리키는 링크 정보가 포함되어 있으나, 펜딩 중인 이전 라이트 트랜잭션을 가리키는 링크 정보가 포함되어 있지 않다. 따라서, 최초로 라이트 트랜잭션 Write 100(1)에 대한 매핑 정보로 RAM(113)에 저장된 맵 테이블 정보를 업데이트한다. 라이트 트랜잭션 Write 100(1)에 대한 맵 테이블 정보를 업데이트하고 나서, 라이트 트랜잭션 Write 100(1)이 가리키는 다음 라이트 트랜잭션 Write 100(2)에서의 이전 트랜잭션을 가리키는 링크 정보를 삭제하도록 링크 정보를 갱신한다.
이와 같은 방식에 따라 화살표 방향으로 라이트 트랜잭션들에 대한 매핑 정보 업데이트를 순차적으로 수행한다.
라이트 트랜잭션 Write 100(3)에는 펜딩 중인 이전 라이트 트랜잭션 Write 100(2)을 가리키는 링크 정보가 존재하므로, 라이트 트랜잭션 Write 100(3)에 대한 매핑 업데이트를 수행하지 않고 맵 업데이트 큐(117)의 마지막 순서 위치로 이동시킨다.
다음으로, 라이트 트랜잭션 Write 100(2)에는 펜딩 중인 이전 라이트 트랜잭션을 가리키는 링크 정보가 존재하지 않으므로, 라이트 트랜잭션 Write 100(2)에 대한 매핑 정보로 RAM(113)에 저장된 맵 테이블 정보를 업데이트한다. 라이트 트랜잭션 Write 100(2)에 대한 맵 테이블 정보를 업데이트하고 나서, 라이트 트랜잭션 Write 100(2)이 가리키는 다음 라이트 트랜잭션 Write 100(3)에서의 이전 트랜잭션을 가리키는 링크 정보를 삭제하도록 링크 정보를 갱신한다.
최종적으로, 라이트 트랜잭션 Write 100(3)에는 펜딩 중인 이전 라이트 트랜잭션을 가리키는 링크 정보가 존재하지 않으므로, 라이트 트랜잭션 Write 100(3)에 대한 매핑 정보로 RAM(113)에 저장된 맵 테이블 정보를 업데이트한다.
도 12a 및 12b를 참조하면, 동일한 논리적 페이지 번호 LPN 100에 대한 복수의 라이트 트랜잭션들에 대하여 Write 100(1) -> Write 100(2) -> Write 100(3) 순으로 매핑 정보들이 업데이트된다. 즉, 라이트 리퀘스트 발행 순서대로 매핑 정보들을 업데이트시키게 된다.
다음으로, 본 발명의 실시예에 따른 매핑 정보 업데이트 방법에 대하여 설명하기로 한다.
도 13에 도시된 매핑 정보 업데이트 방법은 도 1에 도시된 메모리 시스템의 메모리 컨트롤러(110)에 의하여 수행될 수 있다. 세부적으로, 도 10에 도시된 메모리 컨트롤러(110)의 중앙처리장치(111)의 제어에 의하여 수행될 수 있다.
우선, 메모리 컨트롤러(110)는 호스트로부터 발행된 라이트 리퀘스트에 따라서 라이트 트랜잭션 정보를 생성시킨다(S110). 라이트 트랜잭션 정보는 논리적 페이지 번호, 물리적 페이지 번호 및 라이트 리퀘스트 발행 순서에 기초하여 생성되는 디펜던시 정보를 포함할 수 있다.
다음으로, 메모리 컨트롤러(110)는 라이트 트랜잭션 정보를 이용하여 프로그램 동작을 수행하도록 메모리 시스템을 제어한다(S120). 메모리 컨트롤러(110)는 라이트 트랜잭션 정보에 포함된 물리적 페이지 번호가 지정하는 뱅크의 플래시 메모리 디바이스의 저장 영역에서 논리적 페이지 번호에 대응되는 데이터를 프로그램 처리하는데 필요한 커맨드, 어드레스, 제어 신호 및 데이터를 저장 장치(120)로 전달한다. 저장 장치(120)의 메모리 디바이스들은 메모리 컨트롤러(110)로부터 전달된 커맨드, 어드레스, 제어 신호 및 데이터를 이용하여 프로그램 동작을 수행한다.
예로서, 메모리 컨트롤러(110)는 동일한 논리적 페이지 번호에 대한 복수개의 라이트 리퀘스트들이 펜딩된 경우에 상기 라이트 트랜잭션 정보에 포함된 디펜던시 정보에 기초하여 이전에 발행된 라이트 리퀘스트에 따른 프로그램 동작을 완료한 후에 새로 발행된 라이트 리퀘스트에 따른 프로그램 동작을 수행하도록 시스템을 제어할 수 있다. 예로서, 메모리 컨트롤러(110)는 이전에 수행중인 동일한 논리적 페이지 번호의 라이트 오퍼레이션이 완료될 때까지 새로운 라이트 리퀘스트에 대한 라이트 트랜잭션 정보들이 저장 장치(120)로 전송되는 것을 지연시키는 방식으로 리퀘스트 발행 순서에 기초하여 프로그램 동작을 수행시킬 수 있다.
다음으로, 메모리 컨트롤러(110)는 프로그램 동작 완료 후에 라이트 리퀘스트 발행 순서에 기초한 매핑 정보를 업데이트하는 처리를 수행한다(S130). 예로서, 프로그램 동작을 완료한 라이트 리퀘스트에 대한 라이트 트랜잭션 정보를 이용하여 라이트 리퀘스트 발행 순서에 따라서 라이트 트랜잭션의 매핑 정보를 맵 테이블 정보에 업데이트시키는 처리를 수행한다.
도 14는 도 13에 도시된 라이트 트랜잭션 정보를 생성시키는 단계(S110)에 대한 세부적인 흐름도를 예시적으로 보여주는 도면이다.
메모리 컨트롤러(110)는 호스트로부터 수신되는 라이트 리퀘스트를 메모리 디바이스에서 처리하는 데이터 사이즈에 기초하여 분할 처리한다(S110-1). 예로서, 메모리 디바이스에서 독립적으로 처리할 수 있는 데이터 사이즈 단위로 라이트 리퀘스트를 분할할 수 있다. 예로서, 라이트 리퀘스트를 플래시 메모리 디바이스에서 독립적으로 처리할 수 있는 페이지 단위로 분할 처리할 수 있다.
다음으로, 메모리 컨트롤러(110)는 단계110-1(S110-1)에서 분할된 라이트 리퀘스트들 각각에 대하여 어드레스 변환 처리를 수행한다(S110-2). 예로서, 메모리 컨트롤러(110)는 분할된 라이트 리퀘스트들 각각에 대하여 논리적 페이지 번호를 할당하고, 할당된 논리적 페이지 번호를 물리적 페이지 번호로 변환시킬 수 있다.
다음으로, 메모리 컨트롤러(110)는 어드레스 변환 처리 결과에 기초하여 라이트 트랜잭션 정보를 생성시킨다(S110-3). 예로서, 라이트 트랜잭션 정보에는 페이지 단위로 분할된 라이트 리퀘스트에 대한 논리적 페이지 번호와 논리적 페이지 번호에 대응되어 변환 처리된 물리적 페이지 번호가 포함될 수 있다. 또한, 라이트 트랜잭션 정보에는 라이트 리퀘스트 발행 순서에 기초하여 생성되는 디펜던시 정보를 포함할 수 있다. 예로서, 디펜던시 정보는 라이트 리퀘스트가 발행된 시간을 나타내는 타임 스탬프 정보를 포함할 수 있다. 다른 예로서, 디펜던시 정보는 펜딩 중인 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 발행 순서를 나타내는 링크 정보를 포함할 수 있다.
도 15는 도 13에 도시된 매핑 정보 업데이트 단계에 대한 세부적인 흐름도의 일 예를 보여주는 도면이다.
도 15에 도시된 매핑 정보 업데이트 단계(S130A)는 라이트 트랜잭션 정보에 포함된 디펜던시 정보를 타임 스탬프 정보로 정의한 경우의 매핑 정보 업데이트 동작을 수행하는 예를 보여준다.
메모리 컨트롤러(110)는 라이트 트랜잭션 정보에 포함된 타임 스탬프 정보를 이용하여 프로그램 완료된 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 결정한다(S130-1A). 타임 스탬프 정보에는 라이트 리퀘스트가 발행된 시간에 대한 정보가 포함되어 있다. 따라서, 타임 스탬프 정보를 이용하여 프로그램 완료된 라이트 트랜잭션들을 라이트 리퀘스트 발행 순서대로 재정렬할 수 있다. 이와 같이, 메모리 컨트롤러(110)는 라이트 리퀘스트 발행 순서대로 프로그램 완료된 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 결정할 수 있다. 예로서, 펜딩 중인 동일한 논리적 페이지 번호에 대한 복수의 라이트 트랜잭션들에서만 라이트 리퀘스트 발행 순서대로 프로그램 완료된 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 결정할 수도 있다.
메모리 컨트롤러(110)는 단계130-1A(S130-1A)에서와 같이 결정된 업데이트 순서에 따라서 프로그램 완료된 라이트 트랜잭션들에 대한 매핑 정보들을 맵 테이블 정보에 업데이트시키는 처리를 수행한다(S130-2A).
도 16은 도 13에 도시된 매핑 정보 업데이트 단계에 대한 세부적인 흐름도의 다른 예를 보여주는 도면이다.
도 16에 도시된 매핑 정보 업데이트 단계(S130B)는 라이트 트랜잭션 정보에 포함된 디펜던시 정보를 동일한 논리적 페이지 번호에 대한 라이트 리퀘스트들의 발행 순서를 나타내는 링크 정보로 정의한 경우의 매핑 정보 업데이트 동작을 수행하는 예를 보여준다.
메모리 컨트롤러(110)는 프로그램 완료 순서에 기초하여 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 초기 결정한다(S130-1B). 즉, 라이트 리퀘스트의 발행 순서와는 관계없이 메모리 디바이스에서 프로그램이 완료된 순서에 기초하여 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 초기 결정한다.
다음으로, 메모리 컨트롤러(110)는 초기 결정된 매핑 정보들의 업데이트 순서를 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 변경하는 처리를 수행한다(S130-2B). 예로서, 초기 결정된 동일한 논리적 페이지 번호에 대한 복수의 라이트 트랜잭션들의 매핑 정보들의 업데이트 순서를 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 라이트 리퀘스트 발행 순서로 변경한다. 예로서, 도 12a 및 12b에서 설명한 바와 같은 방식을 이용하여 동일한 논리적 페이지 번호에 대한 복수의 라이트 트랜잭션들의 매핑 정보들의 업데이트 순서를 매핑 정보들의 업데이트 순서에 기초하여 결정할 수 있다.
다음으로, 메모리 컨트롤러(110)는 단계130-2B(S130-2B)에서와 같이 변경된 업데이트 순서에 따라서 프로그램 완료된 라이트 트랜잭션들에 대한 매핑 정보들을 맵 테이블 정보에 업데이트시키는 처리를 수행한다(S130-3B).
도 17은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치(1000)의 일 구현 예를 나타내는 블록도이다.
도 17을 참조하면, 전자 장치(1000)는 버스(210)를 통하여 전기적으로 연결된 프로세서(CPU, 220), RAM(230), 사용자 인터페이스(UI, 240), 어플리케이션 칩셋(Application Chipset; 250) 및 메모리 시스템(100)을 구비한다.
전자 장치(1000)는 노트북, 퍼스널 컴퓨터 등의 컴퓨팅 시스템이 포함될 수 있다. 또한, 전자 장치(1000)는 PDA(Personal Digital Assistance), 디지털 카메라, 게임기 등이 포함될 수도 있다.
전자 장치(1000)는 본 발명의 실시예에 따른 메모리 시스템(예로서, SSD; 100)을 포함할 수 있다. 메모리 시스템(100)은 도 1에 도시된 메모리 시스템(100)이 적용될 수 있다.
도 18은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치(2000)의 다른 구현 예를 나타내는 블록도이다.
도 18을 참조하면, 전자 장치(2000)는 휴대 전화기, 스마트 폰 등과 같은 모바일 장치 또는 태블릿(Tablet) PC 등이 포함될 수 있다.
전자 장치(2000)는 메모리 시스템(100; 예로서 SSD), 프로세서(310), 무선 송수신기(320), 입력 장치(330), 디스플레이(340) 및 안테나(350)를 포함한다.
메모리 시스템(100)은 도 1에 도시된 메모리 시스템(100)이 적용될 수 있다.
무선 송수신기(320)는 안테나(350)를 통하여 무선 신호를 기지국으로 전송하거나 기지국으로부터 무선 신호를 받을 수 있다. 무선 송수신기(320)는 수신된 무선 신호를 프로세서(310)가 처리할 수 있는 신호로 변환할 수 있다.
프로세서(310)는 전자 장치(2000)를 전반적으로 제어한다. 그리고, 프로세서(310)는 무선 송수신기(320)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 시스템(100)에 저장하거나 또는 디스플레이(340)를 통하여 출력할 수 있다.
입력 장치(330)는 프로세서(310)의 동작을 제어하기 위한 제어 신호 또는 프로세서(310)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드, 마우스, 키패드 또는 키보드로 구현될 수 있다.
도 19는 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 네트워크 시스템(3000)의 구현 예를 나타내는 블록도이다.
도 19를 참조하면, 본 발명의 실시 예에 따른 네트워크 시스템(3000)은 네트워크를 통해 연결되는 서버 시스템(400) 및 다수의 단말들(500_1~500_n)을 포함할 수 있다. 본 발명의 실시 예에 따른 서버 시스템(400)은 네트워크에 연결되는 다수의 단말들(500_1~500_n)로부터 수신되는 요청을 처리하는 서버(410) 및 단말들(500_1~500_n)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD(100)를 포함할 수 있다. 여기에서, SSD(100)는 도 1에 도시된 메모리 시스템(100)이 적용될 수 있다.
한편, 상기에서 설명된 본 발명에 따른 플래시 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 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 MetricQuad 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), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 메모리 시스템(SSD) 110 : 메모리 컨트롤러
120 : 저장 장치 10 : 셀 어레이
20 : 페이지 버퍼 30 : 제어 회로
40 : 로우 디코더 111 : 중앙처리장치
112 : ROM 113, 230 : RAM
114 : 호스트 인터페이스 115 : 리퀘스트 큐
116 : 서브 리퀘스트 큐 117 : 맵 업데이트 큐
118 : 메모리 인터페이스 119 : 버스
1000 및 2000 : 전자 장치 220, 310 : 프로세서
240 : 사용자 인터페이스 250 : 어플리케이션 칩셋
320 : 무선 송수신기 330 : 입력 장치
340 : 디스플레이 350 : 안테나
3000 : 네트워크 시스템 400 : 서버 시스템
410 : 서버 500_1 ~ 500_n : 다수의 단말들
120 : 저장 장치 10 : 셀 어레이
20 : 페이지 버퍼 30 : 제어 회로
40 : 로우 디코더 111 : 중앙처리장치
112 : ROM 113, 230 : RAM
114 : 호스트 인터페이스 115 : 리퀘스트 큐
116 : 서브 리퀘스트 큐 117 : 맵 업데이트 큐
118 : 메모리 인터페이스 119 : 버스
1000 및 2000 : 전자 장치 220, 310 : 프로세서
240 : 사용자 인터페이스 250 : 어플리케이션 칩셋
320 : 무선 송수신기 330 : 입력 장치
340 : 디스플레이 350 : 안테나
3000 : 네트워크 시스템 400 : 서버 시스템
410 : 서버 500_1 ~ 500_n : 다수의 단말들
Claims (10)
- 라이트 리퀘스트에 따른 라이트 트랜잭션 정보를 생성시키는 단계;
상기 라이트 트랜잭션 정보를 이용하여 프로그램 동작을 수행하는 단계; 및
상기 프로그램 동작 완료 후에 상기 라이트 리퀘스트의 발행 순서에 기초하여 매핑 정보를 업데이트하는 단계를 포함함을 특징으로 하는 매핑 정보 업데이트 방법. - 제1항에 있어서, 상기 라이트 트랜잭션 정보는 논리적 페이지 번호, 물리적 페이지 번호 및 라이트 리퀘스트 발행 순서에 기초하여 생성되는 디펜던시 정보를 포함함을 특징으로 하는 매핑 정보 업데이트 방법.
- 제1항에 있어서, 상기 라이트 트랜잭션 정보를 생성시키는 단계는
상기 라이트 리퀘스트를 메모리 디바이스에서 처리하는 데이터 사이즈에 기초하여 분할하는 단계;
상기 분할된 라이트 리퀘스트들 각각에 대하여 어드레스 변환 처리를 수행하는 단계; 및
상기 어드레스 변환 처리 결과에 기초하여 상기 라이트 트랜잭션 정보를 생성시키는 단계를 포함함을 특징으로 하는 매핑 정보 업데이트 방법. - 제1항에 있어서, 상기 프로그램 동작을 수행하는 단계는 동일한 논리적 페이지 번호에 대한 복수개의 라이트 리퀘스트들이 펜딩된 경우에 상기 라이트 트랜잭션 정보에 포함된 디펜던시 정보에 기초하여 이전에 발행된 라이트 리퀘스트에 따른 프로그램 동작을 완료한 후에 새로 발행된 라이트 리퀘스트에 따른 프로그램 동작을 수행하는 것을 특징으로 하는 매핑 정보 업데이트 방법.
- 제1항에 있어서, 상기 매핑 정보를 업데이트하는 단계는
상기 라이트 트랜잭션 정보에 포함된 타임 스탬프 정보를 이용하여 라이트 리퀘스트가 발행된 시간 순서대로 매핑 정보들의 업데이트 순서를 결정하는 단계; 및
상기 결정된 업데이트 순서에 따라서 맵 테이블 정보에 상기 매핑 정보들을 업데이트하는 단계를 포함함을 특징으로 하는 매핑 정보 업데이트 방법. - 제1항에 있어서, 상기 매핑 정보를 업데이트하는 단계는
프로그램 동작 완료 순서에 기초하여 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 초기 결정하는 단계;
상기 초기 결정된 동일한 논리적 페이지 번호의 라이트 트랜잭션들에 대한 매핑 정보들의 업데이트 순서를 상기 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 라이트 리퀘스트 발행 순서대로 변경하는 단계; 및
상기 변경된 업데이트 순서에 따라서 맵 테이블 정보에 상기 매핑 정보들을 업데이트하는 단계를 포함함을 특징으로 하는 매핑 정보 업데이트 방법. - 제1항에 있어서, 상기 매핑 정보를 업데이트하는 단계는
상기 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 펜딩 중인 동일한 논리적 페이지 번호에 대한 복수개의 매핑 정보들 중에서 이전에 발행된 라이트 리퀘스트에 따른 매핑 정보에 대한 업데이트 동작은 스킵하고, 가장 최근에 발행된 라이트 리퀘스트에 따른 매핑 정보에 대한 업데이트 동작을 수행하는 것을 특징으로 하는 매핑 정보 업데이트 방법. - 복수의 뱅크들로 구획되는 메모리 디바이스들; 및
라이트 리퀘스트에 따른 라이트 트랜잭션 정보를 생성시키고, 상기 라이트 트랜잭션 정보를 이용하여 상기 메모리 디바이스들에서 프로그램 동작을 수행시키기 위한 제어신호들을 발생시키고, 상기 프로그램 동작 수행 후에 상기 라이트 리퀘스트의 발행 순서에 기초하여 매핑 정보의 업데이트 동작을 수행하는 메모리 컨트롤러를 포함함을 특징으로 하는 메모리 시스템. - 제8항에 있어서, 상기 메모리 컨트롤러는
맵 테이블 정보를 저장하는 랜덤 액세스 메모리; 및
상기 라이트 리퀘스트에 따른 라이트 트랜잭션 정보를 생성시키고, 상기 라이트 리퀘스트에 따른 프로그램 동작 완료 후에 라이트 트랜잭션들의 매핑 정보들을 상기 라이트 리퀘스트의 발행 순서에 기초하여 상기 맵 테이블 정보에 업데이트시키는 중앙 처리 장치를 포함함을 특징으로 하는 메모리 시스템. - 제9항에 있어서, 상기 중앙 처리 장치는 동일한 논리적 페이지 번호에 대한 매핑 정보들의 업데이트 순서를 프로그램 동작 완료 순서로부터 상기 라이트 트랜잭션 정보에 포함된 링크 정보를 이용하여 라이트 리퀘스트 발행 순서로 변경하고, 상기 변경된 순서에 따라 상기 맵 테이블 정보에 대한 업데이트 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130028243A KR20140113176A (ko) | 2013-03-15 | 2013-03-15 | 매핑 정보 업데이트 방법 및 이를 이용한 메모리 시스템 |
US14/194,126 US20140281188A1 (en) | 2013-03-15 | 2014-02-28 | Method of updating mapping information and memory system and apparatus employing the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130028243A KR20140113176A (ko) | 2013-03-15 | 2013-03-15 | 매핑 정보 업데이트 방법 및 이를 이용한 메모리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140113176A true KR20140113176A (ko) | 2014-09-24 |
Family
ID=51533853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130028243A KR20140113176A (ko) | 2013-03-15 | 2013-03-15 | 매핑 정보 업데이트 방법 및 이를 이용한 메모리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20140281188A1 (ko) |
KR (1) | KR20140113176A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10838874B2 (en) | 2017-11-08 | 2020-11-17 | SK Hynix Inc. | Memory system managing mapping information corresponding to write data and operation method thereof |
US10970001B2 (en) | 2018-10-22 | 2021-04-06 | SK Hynix Inc. | Memory controller and memory system having the same wherein read request that has a logical to physical mapping in a cache, is prioritized over pairing operation for multi-plane reading |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9996297B2 (en) | 2014-11-14 | 2018-06-12 | SK Hynix Inc. | Hot-cold data separation method in flash translation layer |
US20160162416A1 (en) * | 2014-12-08 | 2016-06-09 | Intel Corporation | Apparatus and Method for Reducing Latency Between Host and a Storage Device |
KR20160070920A (ko) * | 2014-12-10 | 2016-06-21 | 에스케이하이닉스 주식회사 | 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법 |
KR20170001235A (ko) * | 2015-06-26 | 2017-01-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US10089255B2 (en) * | 2015-07-24 | 2018-10-02 | SK Hynix Inc. | High performance host queue monitor for PCIE SSD controller |
CN106201778B (zh) * | 2016-06-30 | 2019-06-25 | 联想(北京)有限公司 | 信息处理方法及存储设备 |
KR102293069B1 (ko) * | 2017-09-08 | 2021-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법 |
KR102679985B1 (ko) * | 2018-10-18 | 2024-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6591349B1 (en) * | 2000-08-31 | 2003-07-08 | Hewlett-Packard Development Company, L.P. | Mechanism to reorder memory read and write transactions for reduced latency and increased bandwidth |
US6697076B1 (en) * | 2001-12-31 | 2004-02-24 | Apple Computer, Inc. | Method and apparatus for address re-mapping |
US7716388B2 (en) * | 2005-05-13 | 2010-05-11 | Texas Instruments Incorporated | Command re-ordering in hub interface unit based on priority |
US7711923B2 (en) * | 2006-06-23 | 2010-05-04 | Microsoft Corporation | Persistent flash memory mapping table |
US8321639B2 (en) * | 2009-12-30 | 2012-11-27 | Lsi Corporation | Command tracking for direct access block storage devices |
JP5547154B2 (ja) * | 2011-09-21 | 2014-07-09 | 株式会社東芝 | メモリ・デバイス |
US9811533B2 (en) * | 2012-12-05 | 2017-11-07 | International Business Machines Corporation | Accessing distributed computing functions in a distributed computing system |
-
2013
- 2013-03-15 KR KR1020130028243A patent/KR20140113176A/ko not_active Application Discontinuation
-
2014
- 2014-02-28 US US14/194,126 patent/US20140281188A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10838874B2 (en) | 2017-11-08 | 2020-11-17 | SK Hynix Inc. | Memory system managing mapping information corresponding to write data and operation method thereof |
US10970001B2 (en) | 2018-10-22 | 2021-04-06 | SK Hynix Inc. | Memory controller and memory system having the same wherein read request that has a logical to physical mapping in a cache, is prioritized over pairing operation for multi-plane reading |
Also Published As
Publication number | Publication date |
---|---|
US20140281188A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107957958B (zh) | 存储器系统及其操作方法 | |
CN105739915B (zh) | 存储系统中执行的条带重建方法和存储系统 | |
US11287992B2 (en) | Controller and storage device including controller and nonvolatile memory devices | |
KR20140113176A (ko) | 매핑 정보 업데이트 방법 및 이를 이용한 메모리 시스템 | |
US11226895B2 (en) | Controller and operation method thereof | |
KR102503177B1 (ko) | 메모리 시스템 및 그것의 동작 방법 | |
KR20190106228A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR102537373B1 (ko) | 메모리 시스템에서의 데이터 전달 방법 및 장치 | |
KR20200063257A (ko) | 동적 l2p 캐시 | |
US10061695B2 (en) | Memory system and operating method thereof | |
KR102287760B1 (ko) | 메모리 시스템 및 상기 메모리 시스템의 동작 방법 | |
KR20130084846A (ko) | 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법 | |
US11543986B2 (en) | Electronic system including host, memory controller and memory device and method of operating the same | |
US11307803B2 (en) | Storage device for suspending program operation and performing read operation and operating method thereof | |
KR20160050393A (ko) | 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법 | |
KR20190138419A (ko) | 메모리 시스템 및 그것의 동작방법 | |
CN110928485B (zh) | 存储器系统及其操作方法 | |
US20200320019A1 (en) | Controller, memory system including the same, and method of operating memory system | |
CN112306385A (zh) | 存储器控制器及其操作方法 | |
KR20200033460A (ko) | 메모리 시스템 및 그것의 동작방법 | |
KR20140118555A (ko) | 메모리 시스템 및 그것의 액세스 성능 조절 방법 | |
KR20240057337A (ko) | 쓰기 데이터를 복수의 메모리 영역에 분산 저장하는 장치 및 방법 | |
US11029854B2 (en) | Memory controller for concurrently writing host data and garbage collected data and operating method thereof | |
KR20210041233A (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 | |
CN113126895B (zh) | 存储装置及其操作方法 |
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 |