KR102147993B1 - 불휘발성 메모리 시스템 및 그것의 동작 방법 - Google Patents

불휘발성 메모리 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102147993B1
KR102147993B1 KR1020130138423A KR20130138423A KR102147993B1 KR 102147993 B1 KR102147993 B1 KR 102147993B1 KR 1020130138423 A KR1020130138423 A KR 1020130138423A KR 20130138423 A KR20130138423 A KR 20130138423A KR 102147993 B1 KR102147993 B1 KR 102147993B1
Authority
KR
South Korea
Prior art keywords
buffer
nonvolatile memory
dma
data
read
Prior art date
Application number
KR1020130138423A
Other languages
English (en)
Other versions
KR20150055882A (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 KR1020130138423A priority Critical patent/KR102147993B1/ko
Priority to US14/459,652 priority patent/US9582439B2/en
Publication of KR20150055882A publication Critical patent/KR20150055882A/ko
Application granted granted Critical
Publication of KR102147993B1 publication Critical patent/KR102147993B1/ko

Links

Images

Classifications

    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 불휘발성 메모리; 제 1 및 제 2 버퍼들을 포함하는 버퍼 메모리; 및 제 1 및 제 2 인덱스들을 기반으로 상기 제 1 및 제 2 버퍼들을 관리하고, 외부 장치로부터 쓰기 요청을 수신하고, 수신된 쓰기 요청에 응답하여 불휘발성 메모리를 제어하는 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는 수신된 쓰기 요청에 응답하여 제 1 버퍼 중 일부 영역을 DMA 버퍼로 할당하고, 직접 메모리 접근 동작을 기반으로 외부 장치로부터 수신된 쓰기 데이터를 할당된 DMA 버퍼에 저장하고, 제 1 인덱스 및 제 2 인덱스 중 일부를 스왑하여 할당된 DMA 버퍼에 저장된 쓰기 데이터를 제 2 버퍼로 이동시키고, 제 2 버퍼로 이동된 쓰기 데이터를 불휘발성 메모리로 전송한다.

Description

불휘발성 메모리 시스템 및 그것의 동작 방법{NONVOLATILE MEMORY SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 반도체 메모리에 관한 것으로 더욱 상세하게는 불휘발성 메모리 시스템 및 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화 인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억 장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile Memory Device) 및 불휘발성 메모리(Nonvolatile Memory Device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다.
최근에는 하드 디스크를 대신해서 불휘발성 메모리를 사용하는 저장 매체들이 개발되고 있다. 그러나, 불휘발성 메모리의 동작 속도가 하드 디스크에 비해 빠르지만, 호스트 및 저장 매체간 인터페이스 속도보다 느리기 때문에 이를 보완하기 위한 버퍼 메모리를 사용한다. 이 때, 버퍼 메모리는 데이터를 임시 저장하는 역할을 수행하며, 직접 메모리 접근 동작을 통해 호스트 및 저장 매체와 통신을 수행한다.
본 발명의 목적은 탐색 동작을 생략하여 DMA 버퍼를 할당함으로써 향상된 성능을 갖는 불휘발성 메모리 시스템 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 불휘발성 메모리; 제 1 및 제 2 버퍼들을 포함하는 버퍼 메모리; 및 제 1 및 제 2 인덱스들을 기반으로 상기 제 1 및 제 2 버퍼들을 관리하고, 상기 외부 장치로부터 쓰기 요청을 수신하고 상기 수신된 쓰기 요청에 응답하여 상기 불휘발성 메모리를 제어하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 상기 수신된 쓰기 요청에 응답하여 상기 제 1 버퍼 중 일부 영역을 DMA 버퍼로 할당하고, 직접 메모리 접근 동작을 기반으로 상기 외부 장치로부터 수신된 쓰기 데이터를 상기 할당된 DMA 버퍼에 저장하고, 상기 제 1 인덱스 및 제 2 인덱스 중 일부를 스왑하여 상기 할당된 DMA 버퍼에 저장된 쓰기 데이터를 상기 제 2 버퍼로 이동시키고, 상기 제 2 버퍼로 이동된 쓰기 데이터를 상기 불휘발성 메모리로 전송한다.
실시 예로서, 상기 메모리 컨트롤러는 상기 수신된 쓰기 요청에 응답하여 상기 제 1 버퍼 중 일부 영역을 DMA 버퍼로 할당하는 중앙처리부; 및 상기 중앙처리부에 의해 프로그램되어 상기 직접 메모리 접근 동작을 수행하는 DMA 엔진을 포함한다.
실시 예로서, 상기 중앙처리부는 상기 할당된 DMA 버퍼의 정보를 상기 DMA 엔진에 프로그램하고, 상기 DMA 엔진은 상기 프로그램된 DMA 버퍼의 정보를 기반으로 상기 직접 메모리 접근 동작을 수행한다.
실시 예로서, 상기 제 1 인덱스는 상기 제 1 버퍼의 논리적 페이지 넘버 및 상기 호스트로부터 수신된 데이터와 대응되는 논리적 어드레스 간 맵핑 정보를 포함하고, 상기 제 2 인덱스는 상기 제 2 버퍼의 논리적 페이지 넘버 및 상기 호스트로부터 수신된 데이터와 대응되는 논리적 어드레스 간 맵핑 정보를 포함한다.
실시 예로서, 상기 할당된 DMA 버퍼에 저장된 쓰기 데이터가 상기 제 2 버퍼로 이동할 때, 상기 메모리 컨트롤러는 상기 쓰기 데이터가 상기 제 2 버퍼에 포함되는지 판별하고, 상기 판별 결과를 기반으로 상기 제 1 및 제 2 인덱스들을 스왑한다.
실시 예로서, 상기 쓰기 데이터가 상기 제 2 버퍼에 포함된 경우, 상기 메모리 컨트롤러는 상기 제 2 버퍼에 포함된 상기 쓰기 데이터를 상기 불휘발성 메모리로 전송하고, 상기 불휘발성 메모리는 상기 전송된 쓰기 데이터를 수신하고, 상기 수신된 쓰기 데이터를 프로그램한다.
실시 예로서, 상기 메모리 컨트롤러는 해쉬 알고리즘, 트리 알고리즘, 및 선형 알고리즘 중 적어도 하나를 기반으로 상기 제 2 버퍼를 관리한다.
실시 예로서, 상기 제 1 및 제 2 버퍼들은 논리적 영역으로 분할된다.
실시 예로서, 상기 메모리 컨트롤러는 상기 외부 장치로부터 읽기 요청을 수신하고, 상기 수신된 읽기 요청에 응답하여 상기 제 1 버퍼 중 일부를 DMA 읽기 버퍼로 할당하고, 상기 할당된 DMA 읽기 버퍼에 상기 불휘발성 메모리로부터 독출된 읽기 데이터를 저장하고, 상기 할당된 DMA 읽기 버퍼에 저장된 읽기 데이터를 상기 외부 장치로 전송한다.
실시 예로서, 상기 읽기 데이터가 상기 외부 장치로 전송된 이 후에, 상기 메모리 컨트롤러는 상기 제 1 버퍼의 상기 할당된 DAM 읽기 버퍼를 해제한다.
본 발명의 다른 실시 예에 따른 제 1 및 제 2 버퍼들 및 불휘발성 메모리를 포함하는 불휘발성 메모리 시스템의 동작 방법은 외부 장치로부터 쓰기 요청을 수신하는 단계; 상기 수신된 쓰기 요청에 응답하여 상기 제 1 버퍼 중 일부를 DMA 버퍼로 할당하는 단계; 상기 할당된 DMA 버퍼에 상기 외부 장치로부터 수신된 쓰기 데이터를 저장하는 단계; 제 1 및 제 2 인덱스들을 스왑하여 상기 할당된 DMA 버퍼에 저장된 쓰기 데이터를 상기 제 2 버퍼로 이동시키는 단계; 및 상기 제 2 버퍼에 저장된 쓰기 데이터를 상기 불휘발성 메모리로 전송하는 단계를 포함하고, 상기 제 1 및 제 2 버퍼들은 각각 상기 제 1 및 제 2 인덱스들을 기반으로 관리된다.
실시 예로서, 상기 할당된 DMA 버퍼에 저장된 쓰기 데이터를 상기 제 2 버퍼로 이동시키는 단계는, 상기 쓰기 데이터가 상기 제 2 버퍼에 저장되어 있는지 판별하는 단계; 및 상기 판별 결과에 따라 상기 쓰기 데이터를 상기 제 2 버퍼로 이동시키는 단계를 포함한다.
실시 예로서, 상기 판별 결과에 따라 상기 쓰기 데이터를 상기 제 2 버퍼로 이동시키는 단계는, 상기 판별 결과에 따라 상기 쓰기 데이터가 상기 제 2 버퍼에 포함되지 않은 경우 상기 제 1 인덱스 중 상기 할당된 DMA 버퍼의 정보 및 상기 제 2 인덱스 중 제 2 버퍼의 일부의 정보를 서로 스왑하는 단계를 포함한다.
실시 예로서, 상기 외부 장치로부터 읽기 요청을 수신하는 단계; 상기 수신된 읽기 요청에 응답하여 상기 제 1 버퍼 중 일부를 DMA 읽기 버퍼로 할당하는 단계; 상기 할당된 DMA 읽기 버퍼에 상기 불휘발성 메모리로부터 독출된 읽기 데이터를 저장하는 단계; 및 상기 저장된 읽기 데이터를 상기 외부 장치로 전송하는 단계를 더 포함한다.
실시 예로서, 상기 저장된 읽기 데이터를 상기 외부 장치로 전송한 이 후에, 상기 제 1 버퍼의 상기 할당된 DMA 읽기 버퍼를 해제하는 단계를 더 포함한다.
본 발명에 따르면, 불휘발성 메모리 시스템은 외부 장치로부터 읽기 또는 쓰기 요청이 수신하여 별도의 탐색 동작을 수행하지 않고 DMA 버퍼를 할당할 수 있다. 따라서, 탐색 동작 시간만큼 DMA 레이턴시가 감소하게 되므로, 향상된 성능을 갖는 불휘발성 메모리 시스템 및 그것의 동작 방법이 제공된다.
도 1은 사용자 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1에 도시된 불휘발성 메모리 시스템의 동작을 보여주는 순서도이다.
도 3은 도 1에 도시된 버퍼 메모리의 버퍼 상태를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 5는 도 4에 도시된 메모리 컨트롤러를 상세하게 보여주는 블록도이다.
도 6은 도 4에 도시된 불휘발성 메모리 시스템의 동작을 보여주는 순서도이다.
도 7은 도 4에 도시된 불휘발성 메모리 시스템의 쓰기 동작을 좀 더 상세하게 보여주는 순서도이다.
도 8은 도 4에 도시된 버퍼 메모리의 버퍼 상태를 보여주는 도면이다.
도 9는 도 4에 도시된 버퍼 메모리의 동작을 설명하기 위한 도면이다.
도 10은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD 시스템을 보여주는 블록도이다.
도 11은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 12는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 모바일 시스템을 예시적으로 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세하게 설명하기 위하여 본 발명의 실시 예들을 첨부된 도면들을 참조하여 설명하기로 한다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 제 1 및 제 2 버퍼들을 포함한다. 제 1 버퍼는 버퍼 탐색 동작을 수행하지 않고,(다시 말해서, 캐쉬 히트(cache hit)를 고려하지 않고) 호스트 또는 불휘발성 메모리와 직접 메모리 접근(DMA; Direct Memory Access) 동작을 수행한다. 제 2 버퍼는 불휘발성 메모리에 기입될 쓰기 데이터를 관리하고 불휘발성 메모리로 전송한다. 즉, 불휘발성 메모리 시스템은 직접 메모리 접근 동작을 수행할 때, 탐색 동작을 수행하지 않고 DMA 버퍼를 할당하기 때문에 탐색 동작으로 인한 오버헤드가 감소한다. 따라서, DMA 레이턴시가 감소하므로, 향상된 성능을 갖는 불휘발성 메모리 시스템 및 그것의 동작 방법이 제공된다.
도 1은 사용자 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 사용자 시스템(10)은 호스트(11) 및 불휘발성 메모리 시스템(12)을 포함한다. 호스트(11)는 불휘발성 메모리 시스템(12)으로 데이터(DATA), 읽기 및 쓰기 요청(RQ_r, RQ_w), 및 논리적 어드레스(LA)를 전송할 수 있다. 호스트(11)는 불휘발성 메모리 시스템(12)과 데이터(DATA)를 주고 받을 수 있다.
불휘발성 메모리 시스템(12)은 호스트(11)로부터 수신된 신호들에 응답하여 동작할 수 있다. 불휘발성 메모리 시스템(12)은 메모리 컨트롤러(13), 버퍼 메모리(14), 및 불휘발성 메모리(15)를 포함한다. 메모리 컨트롤러(13)는 호스트(11)로부터 읽기 및 쓰기 요청들(RQ_r, RQ_w) 및 논리적 어드레스(LA)를 수신하고, 수신된 신호들을 기반으로 불휘발성 메모리(15)에 데이터(DATA)를 기입하거나, 불휘발성 메모리(15)에 저장된 데이터(DATA)를 읽을 수 있다.
버퍼 메모리(14)는 호스트(11) 및 불휘발성 메모리(15)간 속도 차이를 보상하기 위한 버퍼 메모리일 수 있다. 버퍼 메모리(14)는 호스트(11)로부터 수신된 데이터 또는 불휘발성 메모리(15)로부터 읽은 데이터를 임시 저장할 수 있다. 버퍼 메모리(14)는 직접 메모리 접근 동작을 기반으로 호스트(11) 또는 불휘발성 메모리(15)와 데이터를 주고 받을 수 있다. 예시적으로, 메모리 컨트롤러(13)는 버퍼 메모리(14)를 관리하고, 선형 알고리즘, 트리 알고리즘, 해쉬 알고리즘 등과 같은 캐쉬 알고리즘을 기반으로 버퍼 메모리(14)에 저장된 데이터를 탐색할 수 있다.
도 2는 도 1에 도시된 불휘발성 메모리 시스템의 동작을 보여주는 순서도이다. 도 3은 도 1에 도시된 버퍼 메모리의 버퍼 상태를 예시적으로 보여주는 도면이다. 도 1 내지 도 3을 참조하면, 버퍼 메모리(14)는 복수의 버퍼 유닛들을 포함하고, 복수의 버퍼 유닛들 각각은 복수의 버퍼 상태들(B1~B6) 중 어느 하나의 상태를 가질 수 있다.
버퍼 유닛은 자유 상태(B1, FREE)일 수 있다. 자유 상태(B1)는 쓰기 데이터 및 읽기가 저장되어 있지 않고, DMA 버퍼로 할당되지 않은 버퍼 상태를 가리킨다.
S11 단계에서, 불휘발성 메모리 시스템(12)은 호스트(11)로부터 쓰기 요청(RQ) 및 논리적 어드레스(LA)를 수신한다.
S12 단계에서, 불휘발성 메모리 시스템(12)은 수신된 논리적 어드레스(LA)와 대응되는 데이터를 버퍼 메모리(14)에서 탐색한다. 예를 들어, 메모리 컨트롤러(12)는 캐쉬 알고리즘을 기반으로 논리적 어드레스(LA)에 대응되는 데이터가 버퍼 메모리(14)에 포함되어 있는지 탐색 동작을 수행한다.
S13 단계에서, 불휘발성 메모리 시스템(12)은 S12 단계의 탐색 결과를 기반으로 DMA 버퍼를 할당한다. 예를 들어, 탐색 결과에 따라 수신된 논리적 어드레스(LA)에 대응되는 데이터가 버퍼 메모리(14)에 저장되어 있지 않은 경우 불휘발성 메모리 시스템(12)은 버퍼 메모리(14) 중 일부 버퍼 유닛을 DMA 버퍼로 할당한다.
탐색 결과에 따라 수신된 논리적 어드레스(LA)에 대응되는 데이터가 버퍼 메모리(14)에 저장된 경우 수신된 논리적 어드레스(LA)에 대응되는 데이터가 저장된 버퍼 유닛을 DMA 버퍼로 할당한다. 예시적으로, 수신된 논리적 어드레스(LA)에 대응되는 데이터가 저장된 버퍼 유닛을 DMA 버퍼로 할당된 경우, 할당된 DMA 버퍼에 데이터가 덮어 쓰기(overwrite)될 수 있다.
예시적으로, DMA 버퍼는 DMA 동작을 기반으로 호스트(11)로부터 수신된 데이터(DATA)가 임시 저장될 버퍼 영역을 가리킨다. 할당된 DMA 버퍼 영역은 쓰기 상태(B2, WRITE)일 수 있다(ⓐ). 쓰기 상태(B2)는 쓰기 동작시 호스트(11)와의 DMA 동작을 위해 할당된 버퍼 상태를 가리킨다.
S14 단계에서, 불휘발성 메모리 시스템(12)은 할당된 DMA 버퍼를 기반으로 DMA 동작을 수행한다. 예를 들어, DMA 동작을 통해 호스트(11)로부터 수신된 쓰기 데이터가 할당된 DMA 버퍼에 저장될 수 있다. 이 때, 쓰기 데이터가 저장된 DMA 버퍼는 쓰기 데이터 저장 상태(B3, WRITE_H)로 변경된다(ⓑ). 쓰기 데이터 저장 상태(B3)는 DMA 동작이 완료되어 쓰기 데이터를 저장하고 있는 버퍼 상태를 가리킨다.
예시적으로, DMA 버퍼에 저장된 쓰기 데이터는 불휘발성 메모리(15)로 전송될 수 있다. 불휘발성 메모리(15)가 쓰기 데이터의 프로그램 동작을 시작한 경우, 쓰기 데이터 저장 상태(B3)의 버퍼 유닛은 프로그램 상태(B4, PEND)로 변경될 수 있다(ⓒ). 프로그램 상태(B4)는 쓰기 데이터가 불휘발성 메모리에 프로그램되는 도중의 버퍼 상태를 가리킨다.
S15 단계에서, 프로그램이 완료된 후 할당된 DMA 버퍼는 해제(release)될 수 있다. 예를 들어, 프로그램 완료 상태(PEND)의 버퍼는 프로그램 동작이 완료된 후 자유 상태(B1)의 버퍼로 변경될 수 있다(ⓓ).
예시적으로, 불휘발성 메모리 시스템(11)이 호스트(12)로부터 읽기 요청(RQ)을 수신한 경우, 버퍼 메모리(14) 중 일부는 읽기 상태(B5, READ)로 변경될 수 있다(ⓔ). 읽기 상태(B5)는 읽기 동작시 불휘발성 메모리(15)와의 DMA 동작을 위해 할당된 버퍼 상태를 가리킨다. 이 후, DMA 동작이 완료된 후 읽기 상태(B5)를 갖는 버퍼는 읽기 데이터 저장 상태(B6, READ_H)로 변경될 수 있다(ⓕ). 읽기 데이터 저장 상태(B6)는 DMA 동작이 완료되어 읽기 데이터를 저장하고 있는 버퍼 상태를 가리킨다. 예시적으로, 읽기 데이터 저장 상태(B5)의 버퍼에 대응하는 논리적 주소(LA)에 대하여 읽기 요청(RQ_r)이 수신된 경우, 읽기 데이터 저장 상태(B5)의 버퍼에 저장된 읽기 데이터가 호스트(11)로 전송된다. 읽기 데이터 저장 상태(B6)의 버퍼는 버퍼 교체 정책에 따라 제 1 상태(B1)로 버퍼로 변경될 수 있다. 예시적으로, 버퍼 교체 정책은 선입선출법, 최저 사용 빈도 방식 등의 방법을 기반으로 버퍼를 해제하는 동작일 수 있다.
상술된 바와 같이, 버퍼 메모리(14)의 버퍼 유닛이 자유 상태(B1)에서 쓰기 상태(B2)로 변경될 경우 또는 자유 상태(B1)에서 읽기 상태(B5)로 변경될 경우(즉, 호스트(11)로부터 읽기 또는 쓰기 요청(RQ_r or RQ_w)이 수신된 경우) 메모리 컨트롤러(13)는 DMA 버퍼를 할당하기 위하여 호스트(11)로부터 수신된 논리적 어드레스(LA)에 대응하는 데이터가 버퍼 메모리(14)에 저장되어 있는지 판별하는 탐색 동작을 수행하고, 탐색 결과를 기반으로 DMA 버퍼를 할당한다.
예시적으로, 특정 사용자 패턴(예를 들어, QD1 등)에서는 탐색 동작이 오버헤드로 작용되어 DMA 레이턴시가 증가하게 되므로, 전체적인 사용자 시스템의 성능이 하락하게 된다.
도 4는 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다. 예시적으로, 사용자 시스템(100)은 UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(Bmart phone), e-북(e-book), PMP (portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB (Digital Multimedia Broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등과 같은 컴퓨팅 시스템들 중 하나로 제공될 수 있다.
도 4를 참조하면, 사용자 시스템(100)은 호스트(110) 및 불휘발성 메모리 시스템(120)을 포함한다. 호스트(110)는 불휘발성 메모리 시스템(120)과 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (Bmall computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, IDE (Integrated Drive Electronics) 프로토콜, MIPI (Mobile Industry Processor Interface) 프로토콜, UFS(Universal Flash Storage) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나에 기반하여 데이터를 교환할 수 있다. 호스트(110)는 불휘발성 메모리 시스템(120)으로 읽기 및 쓰기 요청(RQ_r, RQ_w), 및 논리적 어드레스(LA)를 전송할 수 있다. 호스트(110)는 불휘발성 메모리 시스템(120)과 데이터(DATA)를 주고 받을 수 있다.
불휘발성 메모리 시스템(120)은 메모리 컨트롤러(130), 버퍼 메모리(140), 및 불휘발성 메모리(150)를 포함한다. 메모리 컨트롤러(130)는 호스트(110)로부터 수신된 읽기 및 쓰기 요청(RQ_r, RQ_w)에 응답하여, 불휘발성 메모리(150)에 데이터를 기입하거나 또는 불휘발성 메모리(150)에 저장된 데이터를 독출할 수 있다.
메모리 컨트롤러(130)는 직접 메모리 접근 엔진(131, 이하에서 'DMA 엔진'라 칭한다.)를 포함할 수 있다. DMA 엔진(131)은 메모리 컨트롤러(130)의 간섭없이 호스트(110), 버퍼 메모리(140), 및 불휘발성 메모리(150) 사이의 데이터 흐름을 제어할 수 있다.
메모리 컨트롤러(130)는 제 1 및 제 2 인덱스들(141_i, 142_i) 각각을 관리하도록 구성된다. 제 1 인덱스(141_i)는 제 1 버퍼들(141)의 논리적 페이지 넘버(LPN) 및 논리적 어드레스(LA) 간의 맵핑 정보를 포함할 수 있다. 제 2 인덱스(142_i)는 제 2 버퍼들(142)의 논리적 페이지 넘버(LPN) 및 논리적 어드레스(LA) 간의 맵핑 정보를 포함할 수 있다.
예를 들어, 제 1 및 제 2 버퍼들(141, 142)은 각각 페이지 단위로 관리될 수 있다. 페이지 단위는 호스트(110)의 운영 체제(OS)에서 정의된 데이터 단위일 수 있다. 메모리 컨트롤러(130)는 페이지 단위로 제 1 및 제 2 버퍼들(141, 142)의 인덱스들(141_i, 142_i)을 관리한다. 메모리 컨트롤러(130)의 구성은 도 5를 참조하여 더욱 상세하게 설명된다.
버퍼 메모리(140)는 호스트(110) 및 불휘발성 메모리(150)간 속도 차이를 보상하기 위한 버퍼 메모리일 수 있다. 버퍼 메모리(140)는 호스트(110)로부터 수신된 데이터 또는 불휘발성 메모리(150)로부터 독출된 데이터를 임시 저장할 수 있다. 버퍼 메모리(140)는 DMA 엔진(131)의 제어에 따라 호스트(110) 또는 불휘발성 메모리(150)와 데이터를 송수신할 수 있다.
버퍼 메모리(140)는 제 1 버퍼(141) 및 제 2 버퍼(142)를 포함한다. 제 1 버퍼(141)는 호스트(110) 또는 불휘발성 메모리(150)와 데이터를 주고 받기 위한 데이터 전송 버퍼일 수 있다. 제 2 버퍼(142)는 불휘발성 메모리(150)에 기입될 데이터를 관리하는 프로그램 관리 버퍼일 수 있다.
제 1 버퍼(141)는 호스트(110) 또는 불휘발성 메모리(150)로부터 수신된 데이터를 임시 저장하는 버퍼 영역을 포함한다. 예를 들어, 제 1 버퍼(141)의 일부 영역(또는 버퍼 유닛)은 메모리 컨트롤러(130)의 제어에 따라 DMA 버퍼로 할당될 수 있다. 제 1 버퍼(141)는 DMA 엔진(131)의 제어에 따라 호스트(110)로부터 수신된 쓰기 데이터 또는 불휘발성 메모리(150)로부터 독출된 읽기 데이터를 저장할 수 있다. 예시적으로, 메모리 컨트롤러(130)는 탐색 동작(도 2의 S12 단계 참조)없이 제 1 버퍼(141) 중 일부 영역을 DMA 버퍼로 할당할 수 있다.
제 2 버퍼(142)는 불휘발성 메모리(150)에 기입될 쓰기 데이터를 임시 저장하는 버퍼 영역을 포함할 수 있다. 예를 들어, 제 1 버퍼(141)는 DMA 엔진(131)의 제어에 따라 호스트(110)로부터 수신된 쓰기 데이터를 저장할 수 있다. 이 때, 제 1 버퍼(141)에 저장된 쓰기 데이터가 제 2 버퍼(142)로 이동될 수 있다.
예시적으로, 제 1 버퍼(141)에 저장된 쓰기 데이터가 제 2 버퍼(142)로 이동될 경우, 메모리 컨트롤러(130)는 쓰기 데이터가 제 2 버퍼(142)에 포함되도록 제 1 버퍼(141) 중 쓰기 데이터가 저장된 버퍼 영역의 논리적 페이지 넘버 및 제 2 버퍼(142) 중 일부 버퍼 영역의 페이지 넘버를 서로 스왑하여 제 1 및 제 2 인덱스들(141_i, 142_i)을 관리할 수 있다. 즉, 메모리 컨트롤러(130)는 물리적인 데이터 복사없이 제 1 및 제 2 버퍼들(141, 142)을 관리할 수 있다.
예시적으로, 제 1 버퍼(141) 및 제 2 버퍼(142)는 논리적 영역으로 구분될 수 있다. 즉, 제 1 및 제 2 버퍼들(141, 142)은 하나의 메모리 장치, 하나의 패키지, 하나의 칩, 또는 하나의 모듈 등으로 제공될 수 있고, 제 1 및 제 2 버퍼들(141, 142)은 논리적 영역으로 구분될 수 있다. 예시적으로, 제 2 버퍼(142)는 제 1 버퍼(141)보다 많은 용량의 버퍼 영역을 포함할 수 있다.
예시적으로, 메모리 컨트롤러(130)는 선형 알고리즘, 트리 알고리즘, 해쉬 알고리즘 등과 같은 캐쉬 알고리즘을 기반으로 제 2 버퍼(142)를 관리할 수 있다. 버퍼 메모리(140)의 동작 및 구성은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
불휘발성 메모리(150)는 메모리 컨트롤러(130)의 제어에 따라 동작할 수 있다. 예시적으로, 불휘발성 메모리(150)는 사용자 시스템(100)의 스토리지로 사용될 수 있다. 예시적으로, 불휘발성 메모리(150)는 낸드 플래시, 노어 플래시, PRAM, MRAM, ReRAM, PRAM 등과 같은 불휘발성 메모리 소자들을 기반으로 구성될 수 있다.
상술된 본 발명의 실시 예에 따르면, 불휘발성 메모리 시스템(120)은 DMA 버퍼 할당시 탐색 동작(도 2의 S12 단계 참조)을 수행하지 않기 때문에 DMA 레이턴시가 감소된다. 따라서, 향상된 성능을 갖는 불휘발성 메모리 시스템이 제공된다.
도 5는 도 4에 도시된 메모리 컨트롤러를 상세하게 보여주는 블록도이다. 도 4 및 도 5를 참조하면, 메모리 컨트롤러(130)는 DMA 엔진(131), CPU(132), SRAM(133), ROM(134), 호스트 인터페이스(135), 버퍼 인터페이스(136), 및 메모리 인터페이스(137)을 포함한다.
CPU(132)는 메모리 컨트롤러(130)의 제반 동작을 제어할 수 있다. DMA 엔진(131)은 CPU(132)의 제어에 따라 동작할 수 있다. 예를 들어, DMA 엔진(131)은 CPU(132)에 의해 프로그램되고, 프로그램된 정보를 기반으로 동작할 수 있다. CPU(132)는 DMA 버퍼를 할당하고, 할당된 DMA 버퍼의 정보를 DMA 엔진(131)에 프로그램할 수 있다. 프로그램된 DMA 엔진(131)은 프로그램된 정보를 기반으로 CPU(132)의 제어없이 호스트(110), 버퍼 메모리(140), 또는 불휘발성 메모리(150) 간 데이터 흐름을 제어할 수 있다.
SRAM(133)은 CPU(131)의 캐쉬 메모리, 버퍼 메모리, 또는 임시 메모리일 수 있다. 예시적으로, SRAM(133)은 제 1 및 제 2 인덱스들(141_i, 142_i)을 포함할 수 있다. CPU(131)는 SRAM(133)에 저장된 제 1 및 제 2 인덱스들(141_i, 142_i)을 기반으로 제 1 및 제 2 버퍼들(141, 142)을 관리할 수 있다.
ROM(134)은 불휘발성 메모리 시스템(120)이 동작하는데 필요한 정보들을 저장할 수 있다. ROM(114)은 불휘발성 메모리 시스템(100)이 동작하는데 필요한 정보들을 펌웨어 형태로 저장할 수 있다.
호스트 인터페이스(135)는 호스트(110)와의 통신을 지원할 수 있다. 버퍼 인터페이스(136)는 버퍼 메모리(140)와의 통신을 지원할 수 있다. 메모리 인터페이스(137)는 불휘발성 메모리(150)와의 통신을 지원할 수 있다.
도 6은 도 4에 도시된 불휘발성 메모리 시스템의 동작을 보여주는 순서도이다. 도 6을 참조하면, S110 단계에서, 불휘발성 메모리 시스템(120)은 호스트(110)로부터 요청(RQ) 및 논리적 어드레스(LA)를 수신할 수 있다. 예시적으로, 요청(RQ)은 읽기 요청(RQ_r) 또는 쓰기 요청(RQ_w)일 수 있다.
S120 단계에서, 불휘발성 메모리 시스템(120)은 제 1 버퍼(141) 중 일부를 DMA 버퍼로 할당한다. 예를 들어, CPU(132)는 제 1 버퍼(141) 중 일부 영역이 DMA 버퍼로 할당되도록 DMA 엔진(141)을 프로그램할 수 있다. 예시적으로, 도 2에 도시된 동작 방법과 비교하여 본 발명의 실시 예에 따른 불휘발성 메모리 시스템(120)은 탐색 동작(도 2의 S12 단계 참조)을 수행하지 않는다. 즉, 불휘발성 메모리 시스템(120)이 탐색 동작을 수행하지 않고 DMA 버퍼를 할당하기 때문에 DMA 레이턴시가 감소한다. 예시적으로, DMA 레이턴시는 호스트(110)로부터 요청(RQ)을 수신한 시점부터 DMA 버퍼가 할당되어 DMA 동작을 시작하는 시점까지의 시간을 가리킨다.
S130 단계에서, 할당된 DMA 버퍼에 대하여 DMA 동작이 수행된다. 예를 들어, 호스트(110)로부터 쓰기 요청이 수신된 경우, DMA 엔진(131)은 호스트(110)로부터 수신된 쓰기 데이터를 할당된 DMA 버퍼에 저장할 수 있다. 호스트(110)로부터 읽기 요청이 수신된 경우, 불휘발성 메모리(150)로부터 독출된 읽기 데이터를 할당된 DMA 버퍼에 저장할 수 있다. 예시적으로, DMA 동작은 DMA 엔진(132)에 의해 CPU(131)의 제어없이 쓰기 또는 읽기 데이터가 DMA 버퍼에 저장되는 동작을 가리킨다.
S140 단계에서, DMA 동작이 완료된 후, 할당된 DMA 버퍼에 저장된 데이터는 수신된 요청(RQ)에 따라 호스트(110) 또는 불휘발성 메모리(150)로 전송된다. 예를 들어, 호스트(110)로부터 쓰기 요청(RQ_w)이 수신된 경우 메모리 컨트롤러(130)는 할당된 DMA 버퍼에 저장된 데이터를 불휘발성 메모리(150)로 전송할 수 있다. 호스트(110)로부터 읽기 요청(RQ_r)이 수신된 경우 메모리 컨트롤러(130)는 할당된 DMA 버퍼에 저장된 데이터를 호스트(110)로 전송할 수 있다.
S150 단계에서, 데이터 전송이 완료된 DMA 버퍼는 해제될 수 있다. 예시적으로, 해제된 버퍼들은 자유 상태로 변경될 수 있다.
상술된 본 발명의 실시 예에 따르면 버퍼 탐색 동작을 수행하지 않고, DMA 버퍼를 할당하기 때문에 DMA 레이턴시가 감소된다. 예시적으로, DMA 레이턴시는 호스트(110)로부터 요청(RQ)이 발생된 시점부터 DMA 버퍼가 할당되어 DMA 동작을 시작하는 시점까지의 시간을 가리킨다. 즉, 본 발명에 따르면, 탐색 동작을 수행하지 않고 DMA 버퍼를 할당하기 때문에 호스트(110)로부터 쓰기 요청(RQ_w)이 발생한 시점부터 DMA 버퍼가 할당되어 호스트(110)로부터 쓰기 데이터를 수신하는 시점까지의 DMA 레이턴시 또는 호스트(110)로부터 읽기 요청(RQ_r)이 발생한 시점부터 DMA 버퍼가 할당되어 불휘발성 메모리(150)로부터 읽기 데이터를 수신하는 시점까지의 DMA 레이턴시가 감소한다.
예시적으로, 본 발명에 따른 불휘발성 메모리 시스템의 DMA 레이턴시는 쓰기 요청 수신시 탐색 동작을 수행하는 종래의 기술과 비교하여 대략 6㎲에서 3.4㎲로 감소될 수 있다. 즉, 종래 기술의 탐색 동작(도 2의 S12 단계)에 해당하는 약 2.6㎲의 시간이 DMA 레이턴시에서 감소하게 된다.
예시적으로, DMA 레이턴시는 호스트(110)의 읽기 또는 쓰기 요청(RQ_r, RQ_w)의 특정 사용자 패턴(예를 들어, QD1 등)에 상승하는 데이터들은 DMA 레이턴시가 성능에 결정적인 요소로 작용하게 된다. 즉, 본 발명에 따른 불휘발성 메모리 시스템은 DMA 레이턴시를 감소시킬 수 있으므로, 특정 사용자 패턴(예를 들어, QD1)에 대한 읽기 또는 쓰기 요청에 대하여 향상된 성능을 갖는다.
도 7은 도 4에 도시된 S140 단계를 상세하게 보여주는 순서도이다. 예시적으로, 도 7을 참조하여 불휘발성 메모리 시스템(120)의 쓰기 동작이 설명된다. 도 4 내지 도 7을 참조하면, 호스트(110)로부터 쓰기 요청(RQ_w)이 수신된 경우, 불휘발성 메모리 시스템(120)은 S130 단계 이후에 S141 단계의 동작을 수행한다. S141 단계에서, 불휘발성 메모리 시스템(120) 수신된 데이터가 제 2 버퍼(142)에 저장되었는지 판별할 수 있다.
판별 결과에 따라 수신된 데이터가 제 2 버퍼(142)에 저장되어 있지 않은 경우 S142 단계에서 불휘발성 메모리 시스템(120)은 제 1 및 제 2 버퍼들(141, 412)의 인덱스들(141_i, 142_i)을 서로 스왑할 수 있다. 예를 들어, 쓰기 데이터가 제 2 버퍼(142)에 저장되어 있지 않는 경우 제 1 버퍼(141) 중 DMA 버퍼로 할당된 버퍼 영역과 대응되는 논리적 페이지 넘버 및 제 2 버퍼(142) 중 자유 상태(B10)를 갖는 버퍼 영역의 논리적 페이지 넘버를 스왑할 수 있다. 이 후에 쓰기 데이터가 저장된 DMA 버퍼는 제 2 버퍼(142)로서 관리될 것이다.
판별 결과에 따라 쓰기 데이터가 제 2 버퍼(142)에 저장된 경우 불휘발성 메모리 시스템(120)은 S143 단계의 동작을 수행한다. S133 단계에서, 제 2 버퍼(142)에 저장된 쓰기 데이터가 불휘발성 메모리(150)로 전송된다. 예시적으로, 불휘발성 메모리(150)는 수신된 쓰기 데이터를 프로그램할 수 있다.
예시적으로, 불휘발성 메모리(150)의 프로그램 동작이 완료된 이후에, S150 단계에서, 불휘발성 메모리 시스템(120)은 쓰기 데이터가 저장된 제 2 버퍼(142)를 해제할 수 있다.
도 7을 참조하여 설명된 바와 같이 제 1 버퍼(141)에 저장된 쓰기 데이터가 제 2 버퍼(142)로 이동할 때 제 1 및 제 2 인덱스들(141_i, 142_i)을 스왑함으로써 데이터 복사로 인한 오버헤드를 감소시킬 수 있다. 따라서, 향상된 성능을 갖는 불휘발성 메모리 시스템이 제공된다.
도 8은 도 4에 도시된 버퍼 메모리의 상태를 예시적으로 보여주는 도면이다. 도 4 내지 도 8을 참조하면, 제 1 버퍼(141) 및 제 2 버퍼(142)는 복수의 버퍼 상태들(B10, B20, S40, B50) 중 어느 하나의 상태를 가질 수 있다.
예를 들어, 제 1 버퍼(141) 및 제 2 버퍼(142)는 자유 상태(B1, FREE)일 수 있다. 자유 상태(B10)는 데이터가 저장되어 있지 않거나 또는 DMA 버퍼로 할당되지 않은 버퍼 상태를 가리킨다.
제 1 버퍼(141)는 호스트(110)로부터 쓰기 데이터를 수신하기 위하여 쓰기 상태(B20, WRITE)로 변경될 수 있다. 쓰기 상태(B20)는 호스트(110)로부터 수신된 쓰기 데이터를 저장하기 위해 할당된 버퍼 상태를 가리킨다.
DMA 엔진(131)의 동작에 따라 호스트(110)로부터 수신된 쓰기 데이터가 쓰기 상태(B20)의 제 1 버퍼(141)에 저장된 경우, 제 1 버퍼(141)에 저장된 쓰기 데이터는 제 2 버퍼(142)로 이동될 수 있다.
예를 들어, 호스트(110)로부터 수신된 쓰기 데이터가 쓰기 상태(B20)의 제 1 버퍼(141)에 저장된 이후에, 메모리 컨트롤러(130)는 저장된 쓰기 데이터가 제 2 버퍼(142)에 존재하는지 탐색할 수 있다. 예시적으로, 메모리 컨트롤러(130)는 해쉬 알고리즘, 트리 알고리즘, 선형 알고리즘 등과 같은 캐쉬 알고리즘을 기반으로 제 2 버퍼(142)를 관리하고 이를 기반으로 제 2 버퍼(142)를 탐색할 수 있다.
메모리 컨트롤러(130)는 탐색 결과를 기반으로 데이터의 복사없이 쓰기 데이터를 제 2 버퍼(142)에 포함되도록 제 1 버퍼(141)의 인덱스(131) 및 제 2 버퍼(142)의 인덱스(132)를 서로 스왑할 수 있다. 스왑된 인덱스와 대응되는 제 2 버퍼(142)의 영역은 자유 상태(B10)에서 프로그램 상태(B40)로 변경될 수 있다. 이 후, 불휘발성 메모리(150)의 프로그램 동작이 완료된 후 프로그램 상태(B40)의 버퍼들은 자유 상태(B10)로 변경될 수 있다.
불휘발성 메모리 시스템(120)은 호스트(110)로부터 읽기 요청(RQ)을 수신할 수 있다. 이 때, 제 1 버퍼(141)의 일부 영역이 DMA 버퍼로 할당되고, DMA 버퍼로 할당된 버퍼 유닛은 읽기 상태(B50)로 변경될 수 있다. 읽기 상태(B50)는 DMA 동작을 통해 불휘발성 메모리(150)로부터 읽은 읽기 데이터를 저장하기 위해 할당된 버퍼 상태를 가리킨다. DMA 동작을 통해 불휘발성 메모리(150)로부터 읽은 읽기 데이터 수신을 완료한 경우, 수신된 쓰기 데이터는 호스트(110)로 전송된다. 호스트(110)로 전송이 완료된 이후, 읽기 상태(B50)의 버퍼 영역은 자유 상태(B10)로 변경된다.
도 8을 참조하여 설명된 바와 같이 본 발명에 따른 불휘발성 메모리 시스템(100)은 별도의 탐색 동작(도 2의 S12 참조)을 수행하지 않기 때문에, 도 3에 도시된 쓰기 데이터 저장 상태(B3) 및 읽기 데이터 저장 상태(B6)를 갖지 않는다. 따라서, DMA 동작시 탐색 오버헤드(search overhead)가 감소하므로, DMA 지연 시간이 감소된다. 즉, 향상된 성능을 갖는 불휘발성 메모리 시스템이 제공된다.
도 9는 도 8에 도시된 불휘발성 메모리 시스템의 동작을 설명하기 위한 도면이다. 도 4, 도 8, 및 도 9를 참조하면, 메모리 컨트롤러(130)는 제 1 및 제 2 인덱스들(141_i, 142_i)을 기반으로 제 1 및 제 2 버퍼들(141, 142)을 관리할 수 있다. 제 1 및 제 2 인덱스들(141_i, 142_i)은 제 1 및 제 2 버퍼들(141, 142)의 논리적 페이지 넘버(LPN), 논리적 어드레스(LA)의 사상 정보를 포함할 수 있다.
예를 들어, 제 1 버퍼(141)는 제 1 내지 제 4 논리적 페이지 넘버(LPN_1~LPN_4)에 대응되는 버퍼 유닛들을 포함할 수 있다. 제 2 버퍼(142)는 제 5 내지 제 8 논리적 페이지 넘버들(LPN_5~LPN_8)에 대응되는 버퍼 유닛들을 포함할 수 있다. 간결한 설명을 위하여 제 1 및 제 2 버퍼들이 제 1 내지 제 4 및 제 5 내지 제 8 버퍼 유닛들을 포함하는 것으로 가정되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 제 1 및 제 2 버퍼들(141, 142)은 복수의 버퍼 유닛들을 더 포함할 수 있다.
호스트(110)로부터 쓰기 요청(RQ_w)이 수신된 경우, 메모리 컨트롤러(130)는 제 1 버퍼(141) 중 일부를 DMA 버퍼로 할당할 수 있다. 예를 들어, 메모리 컨트롤러(130)는 제 1 논리적 페이지 넘버(LPN_1)와 대응되는 버퍼 유닛(이하에서, '제 1 버퍼 유닛'이라 칭한다.)을 DMA 버퍼로 할당할 수 있다. DMA 버퍼로 할당된 제 1 버퍼 유닛에 제 1 논리적 어드레스와 대응되는 제 1 데이터(DAT_1)가 기입된다. 이 때, 메모리 컨트롤러(130)는 제 1 데이터(DAT_1)의 논리적 어드레스 및 제 1 논리적 페이지 넘버(LPN_1)의 맵핑 정보를 제 1 인덱스(141_i)에 기입하고 이를 기반으로 제 1 버퍼(141)를 관리한다.
할당된 DMA 버퍼에 대한 DMA 동작이 완료된 후, 메모리 컨트롤러(130)는 제 1 데이터(DAT_1)가 제 2 버퍼(142)에 포함되는지 판별한다. 판별 결과에 따라, 메모리 컨트롤러(130)는 제 1 및 제 2 인덱스들(141_i, 141_i)을 스왑할 수 있다. 예를 들어, 제 2 인덱스(142_i)는 제 5 및 제 6 논리적 페이지 넘버들(LPN_5, LPN_6)의 맵핑 정보를 포함할 수 있다. 제 5 논리적 페이지 넘버(LPN_5)와 대응되는 버퍼 유닛은 제 2 데이터(DAT_2)를 저장하고, 제 6 논리적 페이지 넘버(LPN_6)와 대응되는 버퍼 유닛은 제 3 데이터(DAT_3)를 저장할 수 있다. 이 경우, 메모리 컨트롤러(130)는 제 1 데이터(DAT_1)가 제 2 버퍼(142)에 저장되어 있지 않은 것으로 판단한다.
이 때, 메모리 컨트롤러(130)는 자유 상태(B10, 도 8 참조)를 갖는 버퍼 유닛들(예를 들어, 제 7 및 제 8 논리적 페이지 넘버들(LPN_7, LPN_8)과 대응되는 버퍼 유닛들) 중 어느 하나 또는 그 이상과 대응되는 인덱스 정보를 제 1 인덱스(141_i)와 스왑할 수 있다. 예를 들어, 메모리 컨트롤러(130)는 제 1 인덱스(141_i)의 제 1 논리적 페이지 넘버(LPN_1)의 정보 및 제 2 인덱스(142_i)의 제 7 논리적 페이지 넘버(LPN_7)의 정보를 서로 스왑할 수 있다.
이 후, 제 1 버퍼(141)는 제 7, 제 2 내지 제 4 논리적 페이지 넘버들(LPN_7, LPN_2~LPN_4)와 대응되는 버퍼 유닛들을 포함할 것이고, 제 2 버퍼(142)는 제 5, 제 6, 제 1, 및 제 8 논리적 페이지들(LPN_5, LPN_6, LPN_1, LPN_8)과 대응되는 버퍼 유닛들을 포함할 것이다. 또한, 메모리 컨트롤러(130)는 스왑된 제 1 및 제 2 인덱스들(141_i, 142_i)을 기반으로 제 1 및 제 2 버퍼들(141, 142)을 관리할 수 있다.
비록 도면에 도시되지는 않았으나, 제 2 버퍼(142)는 트리 알고리즘, 선형 알고리즘, 해쉬 알고리즘 등과 같은 캐쉬 알고리즘을 기반으로 관리될 수 있다. 즉, 메모리 컨트롤러(130)는 트리 알고리즘, 선형 알고리즘, 해쉬 알고리즘 등과 같은 캐쉬 알고리즘을 기반으로 제 2 인덱스(142_i)를 관리할 수 있고, 상술된 캐쉬 알고리즘을 기반으로 제 2 버퍼(142)를 탐색할 수 있다.
상술된 본 발명의 실시 예에 따르면, 불휘발성 메모리 시스템(120)의 쓰기 동작시 제 1 버퍼(141)에 저장된 쓰기 데이터는 제 2 버퍼(142)로 이동한다. 이 때, 제 1 버퍼(141)의 제 1 인덱스(141_i) 및 제 2 버퍼(142)의 제 2 인덱스(142_i)를 스왑함으로써, 데이터의 물리적인 복사로 인한 오버헤드를 감소시킬 수 있다. 따라서, 향상된 성능을 갖는 불휘발성 메모리 시스템이 제공된다.
도 10은 본 발명의 실시 예에 따른 불휘발성 메모리 시스템이 적용된 SSD 시스템의 예를 보여주는 블록도이다. 도 10를 참조하면, SSD 시스템(1000)은 호스트(1100)와 SSD(1200)를 포함한다.
SSD(1200)는 신호 커넥터(signal connector, 2211)를 통해 호스트(1100)와 신호를 주고 받으며, 전원 커넥터(power connector, 2221)를 통해 전원을 입력받는다. SSD(1200)는 복수의 플래시 메모리(1201~120n), SSD 컨트롤러(1210), 그리고 보조 전원 장치(1220)를 포함할 수 있다.
복수의 플래시 메모리(1201~220n)는 SSD(1200)의 저장 매체로서 사용된다. SSD(1200)는 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등의 불휘발성 메모리 장치가 사용될 수도 있다. 복수의 플래시 메모리(1201~120n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 플래시 메모리가 연결될 수 있다. 하나의 채널에 연결되는 플래시 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(1210)는 신호 커넥터(1211)를 통해 호스트(1100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(1210)는 호스트(1100)의 커맨드에 따라 해당 플래시 메모리 에 데이터를 쓰거나 해당 플래시 메모리로부터 데이터를 읽어낸다. SSD 컨트롤러(1210)는 도 1 내지 도 9를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다. 예시적으로, SSD 컨트롤러(1210)는 버퍼 메모리를 포함할 수 있다. 버퍼 메모리는 도 1 내지 도 10을 참조하여 설명된 방법을 기반으로 SSD 컨트롤러(1210)의 제어에 따라 동작할 수 있다.
보조 전원 장치(1220)는 전원 커넥터(1221)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1220)는 호스트(1100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(1220)는 SSD(1200) 내에 위치할 수도 있고, SSD(1200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(1220)는 메인 보드에 위치하며, SSD(1200)에 보조 전원을 제공할 수도 있다.
도 11은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 전자 장치을 예시적으로 보여주는 블록도이다. 여기에서, 전자 장치(2000)는 UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP (portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB (Digital Multimedia Broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등과 같은 컴퓨팅 시스템들 중 하나로 제공될 수 있다.
도 11을 참조하면, 전자 장치(2000)는 메모리 시스템(2100), 전원 장치(2200), 보조 전원 장치(2250), 중앙처리장치(2300), 램(2400), 그리고 사용자 인터페이스(2500)를 포함한다. 메모리 시스템(2100)은 플래시 메모리(2110) 및 메모리 컨트롤러(2120)를 포함한다. 여기에서, 메모리 시스템(2100)은 도 1 내지 도 10을 참조하여 설명된 불휘발성 메모리 시스템일 수 있다. 예시적으로, 메모리 컨트롤러(2120)는 버퍼 메모리를 포함하고, 도 1 내지 도 10을 참조하여 설명된 방법을 기반으로 버퍼 메모리를 제어할 수 있다.
도 12는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 모바일 시스템을 예시적으로 보여주는 블록도이다. 도 12를 참조하면, 모바일 시스템(3000)은 프로세서(3100), 메모리(3200), 스토리지(3300), 모뎀(3400), 그리고 사용자 인터페이스(3500)를 포함한다.
프로세서(3100)는 모바일 시스템(3000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 프로세서(3100)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 프로세서(3100)는 범용 프로세서 또는 어플리케이션 프로세서일 수 있다.
메모리(3200)는 프로세서(3100)와 통신할 수 있다. 메모리(3200)는 프로세서(3100) 또는 모바일 시스템(3000)의 동작 메모리(또는 메인 메모리)일 수 있다. 메모리(3200)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지(3300)는 모바일 시스템(3000)에서 장기적으로 저장하고자 하는 데이터를 저장할 수 있다. 스토리지(3300)는 하드 디스크 드라이브(HDD, Hard Disk Drive) 또는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다. 예시적으로, 스토리지(3300)는 도 1 내지 도 10을 참조하여 설명된 불휘발성 메모리 시스템일 수 있다. 스토리지(3300)는 도 1 내지 도 10을 참조하여 설명된 바와 같이, 버퍼 메모리를 포함하고 버퍼 메모리를 관리할 수 있다.
예시적으로, 스토리지(3300)는 도 1의 불휘발성 메모리(150)이고, 프로세서(3100)는 도 1의 메모리 컨트롤러(130)를 포함할 수 있다. 즉, 프로세서(3100)는 스토리지(3300)를 제어하도록 구성되고, 프로세서(3100) 및 스토리지(3300)는 도 1 내지 도 10을 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
예시적으로, 메모리(3200) 및 스토리지(3300)는 동일한 종류의 불휘발성 메모리로 구성될 수 있다. 이때, 메모리(3200) 및 스토리지(3300)는 하나의 반도체 집적 회로로 구성될 수 있다.
모뎀(3400)은 프로세서(3100)의 제어에 따라 외부 장치와 통신을 수행할 수 있다. 예를 들어, 모뎀(3400)은 외부 장치와 유선 또는 무선 통신을 수행할 수 있다. 모뎀(3400)은 LTE (Long Term Evolution), 와이맥스(WiMax), GSM (Global System for Mobile communication), CDMA (Code Division Multiple Access), 블루투스(Bluetooth), NFC (Near Field Communication), 와이파이(WiFi), RFID (Radio Frequency IDentification) 등과 같은 다양한 무선 통신 방식들, 또는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SCSI (Small Computer Small Interface), 파이어와이어(Firewire), PCI (Peripheral Component Interconnection) 등과 같은 다양한 유선 통신 방식들 중 적어도 하나에 기반하여 통신을 수행할 수 있다.
사용자 인터페이스(3500)는 프로세서(3100)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(3500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(4500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
상술된 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템은 메모리 컨트롤러, 버퍼 메모리, 및 불휘발성 메모리를 포함한다. 버퍼 메모리는 데이터 전송 버퍼 및 프로그램 관리 버퍼를 포함한다. 불휘발성 메모리 시스템은 호스트로부터 읽기/쓰기 요청을 수신하고, 수신된 읽기/쓰기 요청에 응답하여 DMA 버퍼를 할당한다. 이 때, 불휘발성 메모리 시스템은 버퍼 메모리에 쓰기 데이터 또는 읽기 데이터가 포함되는지 판별하는 탐색 동작을 수행하지 않는다. 탐색 동작으로 인한 오버헤드가 줄어들기 때문에, DMA 레이턴시가 감소한다. 따라서, 향상된 성능을 갖는 불휘발성 메모리 시스템 및 그것의 동작 방법이 제공된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100 : 사용자 시스템
110 : 호스트
120 : 불휘발성 메모리 시스템
130 : 메모리 컨트롤러
140 : 버퍼 메모리
141, 142 : 제 1 및 제 2 버퍼들
141_i, 142_i : 제 1 및 제 2 인덱스들
150 : 불휘발성 메모리

Claims (10)

  1. 불휘발성 메모리;
    제 1 및 제 2 버퍼들을 포함하는 버퍼 메모리; 및
    제 1 및 제 2 인덱스들을 기반으로 상기 제 1 및 제 2 버퍼들을 관리하고, 외부 장치로부터 쓰기 요청을 수신하고 상기 수신된 쓰기 요청에 응답하여 상기 불휘발성 메모리를 제어하는 메모리 컨트롤러를 포함하고,
    상기 제1 인덱스는 제1 버퍼의 논리적 페이지 넘버 및 상기 외부 장치로부터 수신된 데이터에 대응하는 논리적 어드레스를 맵핑하는 제1 맵핑 정보를 포함하고,
    상기 제2 인덱스는 상기 제2 버퍼의 논리적 페이지 넘버 및 상기 외부 장치로부터 수신된 데이터의 상기 논리적 어드레스를 맵핑하는 제2 맵핑 정보를 포함하고,
    상기 메모리 컨트롤러는:
    상기 수신된 쓰기 요청에 응답하여 상기 제 1 버퍼 중 일부 영역을 DMA 버퍼로 할당하고;
    직접 메모리 접근 동작을 기반으로 상기 외부 장치로부터 수신된 쓰기 데이터를 상기 할당된 DMA 버퍼에 저장하고;
    상기 제2 버퍼가 상기 쓰기 데이터를 포함하지 않는 경우, 상기 제 1 인덱스 및 제 2 인덱스를 일부 스왑하여 상기 할당된 DMA 버퍼로부터 상기 제2 버퍼로의 상기 쓰기 데이터에 대한 물리적인 데이터 복사 없이, 상기 할당된 DMA 버퍼에 저장된 상기 쓰기 데이터를 상기 제 2 버퍼로 이동시키고;
    상기 제 2 버퍼로 이동된 상기 쓰기 데이터를 상기 불휘발성 메모리로 전송하는 불휘발성 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 메모리 컨트롤러는
    상기 수신된 쓰기 요청에 응답하여 상기 제 1 버퍼 중 일부 영역을 DMA 버퍼로 할당하는 중앙처리부; 및
    상기 중앙처리부에 의해 프로그램되어 상기 직접 메모리 접근 동작을 수행하는 DMA 엔진을 포함하는 불휘발성 메모리 시스템.
  3. 제 2 항에 있어서,
    상기 중앙처리부는 상기 할당된 DMA 버퍼의 정보를 상기 DMA 엔진에 프로그램하고, 상기 DMA 엔진은 상기 프로그램된 DMA 버퍼의 정보를 기반으로 상기 직접 메모리 접근 동작을 수행하는 불휘발성 메모리 시스템.
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 쓰기 데이터가 상기 제 2 버퍼에 포함된 경우, 상기 메모리 컨트롤러는 상기 제 2 버퍼에 포함된 상기 쓰기 데이터를 상기 불휘발성 메모리로 전송하고,
    상기 불휘발성 메모리는 상기 전송된 쓰기 데이터를 수신하고, 상기 수신된 쓰기 데이터를 프로그램하는 불휘발성 메모리 시스템.
  7. 제 1 항에 있어서,
    상기 제 1 및 제 2 버퍼들은 논리적 영역으로 분할되는 불휘발성 메모리 시스템.
  8. 제 1 항에 있어서,
    상기 메모리 컨트롤러는 상기 외부 장치로부터 읽기 요청을 수신하고, 상기 수신된 읽기 요청에 응답하여 상기 제 1 버퍼 중 일부를 DMA 읽기 버퍼로 할당하고, 상기 할당된 DMA 읽기 버퍼에 상기 불휘발성 메모리로부터 독출된 읽기 데이터를 저장하고, 상기 할당된 DMA 읽기 버퍼에 저장된 읽기 데이터를 상기 외부 장치로 전송하는 불휘발성 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 읽기 데이터가 상기 외부 장치로 전송된 이 후에, 상기 메모리 컨트롤러는 상기 제 1 버퍼의 상기 할당된 DAM 읽기 버퍼를 해제하는 불휘발성 메모리 시스템.
  10. 제 1 및 제 2 버퍼들 및 불휘발성 메모리를 포함하는 불휘발성 메모리 시스템의 동작 방법에 있어서,
    외부 장치로부터 쓰기 요청을 수신하는 단계;
    상기 수신된 쓰기 요청에 응답하여 상기 제 1 버퍼 중 일부를 DMA 버퍼로 할당하는 단계;
    상기 할당된 DMA 버퍼에 상기 외부 장치로부터 수신된 쓰기 데이터를 저장하는 단계;
    상기 제2 버퍼가 상기 쓰기 데이터를 포함하지 않는 경우, 제 1 및 제 2 인덱스들을 스왑하여 상기 할당된 DMA 버퍼에 저장된 상기 쓰기 데이터를 물리적인 복사 없이 상기 제 2 버퍼로 이동시키는 단계; 및
    상기 제 2 버퍼에 저장된 쓰기 데이터를 상기 불휘발성 메모리로 전송하는 단계를 포함하고,
    상기 제 1 및 제 2 버퍼들은 각각 상기 제 1 및 제 2 인덱스들을 기반으로 관리되고,
    상기 제1 인덱스는 제1 버퍼의 논리적 페이지 넘버 및 상기 외부 장치로부터 수신된 데이터에 대응하는 논리적 어드레스를 맵핑하는 제1 맵핑 정보를 포함하고,
    상기 제2 인덱스는 상기 제2 버퍼의 논리적 페이지 넘버 및 상기 외부 장치로부터 수신된 데이터의 상기 논리적 어드레스를 맵핑하는 제2 맵핑 정보를 포함하는 동작 방법.

KR1020130138423A 2013-11-14 2013-11-14 불휘발성 메모리 시스템 및 그것의 동작 방법 KR102147993B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130138423A KR102147993B1 (ko) 2013-11-14 2013-11-14 불휘발성 메모리 시스템 및 그것의 동작 방법
US14/459,652 US9582439B2 (en) 2013-11-14 2014-08-14 Nonvolatile memory system and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130138423A KR102147993B1 (ko) 2013-11-14 2013-11-14 불휘발성 메모리 시스템 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150055882A KR20150055882A (ko) 2015-05-22
KR102147993B1 true KR102147993B1 (ko) 2020-08-25

Family

ID=53044825

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130138423A KR102147993B1 (ko) 2013-11-14 2013-11-14 불휘발성 메모리 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9582439B2 (ko)
KR (1) KR102147993B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160087224A (ko) * 2015-01-13 2016-07-21 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR102032892B1 (ko) * 2015-05-06 2019-10-16 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
KR20170025948A (ko) * 2015-08-31 2017-03-08 에스케이하이닉스 주식회사 반도체 시스템 및 제어 방법
KR20170094674A (ko) 2016-02-11 2017-08-21 에스케이하이닉스 주식회사 데이터 저장 장치
JP6843508B2 (ja) * 2016-03-01 2021-03-17 キヤノン株式会社 情報処理装置及び情報処理装置の制御方法
KR102398186B1 (ko) * 2017-07-03 2022-05-17 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
KR102450514B1 (ko) * 2017-09-19 2022-10-05 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법
US10725942B2 (en) * 2018-11-09 2020-07-28 Xilinx, Inc. Streaming platform architecture for inter-kernel circuit communication for an integrated circuit
US10924430B2 (en) 2018-11-09 2021-02-16 Xilinx, Inc. Streaming platform flow and architecture for an integrated circuit
US10990547B2 (en) 2019-08-11 2021-04-27 Xilinx, Inc. Dynamically reconfigurable networking using a programmable integrated circuit
JP2021108058A (ja) * 2019-12-27 2021-07-29 株式会社日立製作所 ストレージシステム
US11232053B1 (en) 2020-06-09 2022-01-25 Xilinx, Inc. Multi-host direct memory access system for integrated circuits
KR20220009523A (ko) 2020-07-15 2022-01-25 삼성전자주식회사 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법
US20210075633A1 (en) * 2020-11-18 2021-03-11 Intel Corporation Packet multi-cast for memory pool replication
US11539770B1 (en) 2021-03-15 2022-12-27 Xilinx, Inc. Host-to-kernel streaming support for disparate platforms
US11456951B1 (en) 2021-04-08 2022-09-27 Xilinx, Inc. Flow table modification for network accelerators
US11606317B1 (en) 2021-04-14 2023-03-14 Xilinx, Inc. Table based multi-function virtualization

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030061414A1 (en) * 2001-09-27 2003-03-27 Richardson Ray M. Controlling data flow between processor systems
US20090164700A1 (en) * 2007-12-19 2009-06-25 Spansion Llc efficient memory hierarchy in solid state drive design

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5467460A (en) * 1990-02-14 1995-11-14 Intel Corporation M&A for minimizing data transfer to main memory from a writeback cache during a cache miss
US6658537B2 (en) * 1997-06-09 2003-12-02 3Com Corporation DMA driven processor cache
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US7237036B2 (en) * 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US6327644B1 (en) * 1998-08-18 2001-12-04 International Business Machines Corporation Method and system for managing data in cache
US7509391B1 (en) * 1999-11-23 2009-03-24 Texas Instruments Incorporated Unified memory management system for multi processor heterogeneous architecture
US6502169B1 (en) * 2000-06-27 2002-12-31 Adaptec, Inc. System and method for detection of disk storage blocks containing unique values
US7603516B2 (en) 2000-12-15 2009-10-13 Stmicroelectronics Nv Disk controller providing for the auto-transfer of host-requested-data from a cache memory within a disk memory system
US6941390B2 (en) * 2002-11-07 2005-09-06 National Instruments Corporation DMA device configured to configure DMA resources as multiple virtual DMA channels for use by I/O resources
US6874054B2 (en) * 2002-12-19 2005-03-29 Emulex Design & Manufacturing Corporation Direct memory access controller system with message-based programming
DE10300030A1 (de) * 2003-01-03 2004-07-22 Micronas Gmbh DMA-Modul und Betriebsverfahren hierfür
GB0317699D0 (en) * 2003-07-29 2003-09-03 Ibm A copy engine and a method for data movement
US7200691B2 (en) * 2003-12-22 2007-04-03 National Instruments Corp. System and method for efficient DMA transfer and buffering of captured data events from a nondeterministic data bus
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7146466B2 (en) 2004-03-23 2006-12-05 International Business Machines System for balancing multiple memory buffer sizes and method therefor
US20050289253A1 (en) * 2004-06-24 2005-12-29 Edirisooriya Samantha J Apparatus and method for a multi-function direct memory access core
JP4673584B2 (ja) 2004-07-29 2011-04-20 富士通株式会社 キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
KR100626392B1 (ko) 2005-04-01 2006-09-20 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 플래시 메모리 장치
US20090259789A1 (en) * 2005-08-22 2009-10-15 Shuhei Kato Multi-processor, direct memory access controller, and serial data transmitting/receiving apparatus
US7761687B2 (en) * 2007-06-26 2010-07-20 International Business Machines Corporation Ultrascalable petaflop parallel supercomputer
US8271700B1 (en) * 2007-11-23 2012-09-18 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
US8176252B1 (en) * 2007-11-23 2012-05-08 Pmc-Sierra Us, Inc. DMA address translation scheme and cache with modified scatter gather element including SG list and descriptor tables
US8495301B1 (en) * 2007-11-23 2013-07-23 Pmc-Sierra Us, Inc. System and method for scatter gather cache processing
KR101067457B1 (ko) 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
US8296782B2 (en) 2008-04-22 2012-10-23 Lsi Corporation System eliminating hardware duplication during application testing of an internal storage array across different operating systems
KR101030146B1 (ko) 2008-08-29 2011-04-18 서울대학교산학협력단 페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법
US8595457B1 (en) * 2008-10-30 2013-11-26 Netapp, Inc. Method and system for replicating stored information
KR101574207B1 (ko) 2009-10-16 2015-12-14 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 저장 방법
KR101162679B1 (ko) 2010-07-27 2012-07-05 주식회사 셀픽 다채널 캐쉬를 이용한 솔리드 스테이트 디스크 및 캐쉬 데이터 저장방법
US20130262736A1 (en) * 2012-03-30 2013-10-03 Ati Technologies Ulc Memory types for caching policies

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030061414A1 (en) * 2001-09-27 2003-03-27 Richardson Ray M. Controlling data flow between processor systems
US20090164700A1 (en) * 2007-12-19 2009-06-25 Spansion Llc efficient memory hierarchy in solid state drive design

Also Published As

Publication number Publication date
US20150134891A1 (en) 2015-05-14
KR20150055882A (ko) 2015-05-22
US9582439B2 (en) 2017-02-28

Similar Documents

Publication Publication Date Title
KR102147993B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102094393B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
US10061521B2 (en) Storage device and method of operating the same
KR102291803B1 (ko) 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법
JP6190045B2 (ja) 高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法
KR102146037B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
US9189397B2 (en) Data storage device including buffer memory
KR102106261B1 (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
US20170270045A1 (en) Hybrid memory device and operating method thereof
KR20190066466A (ko) 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법
US20160062659A1 (en) Virtual memory module
KR20220060372A (ko) 메모리 시스템 및 그것의 동작방법
KR20200132047A (ko) 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
KR20200016074A (ko) 데이터 처리 시스템 및 그의 동작 방법
KR20190113479A (ko) 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법
US20190042415A1 (en) Storage model for a computer system having persistent system memory
US20180004657A1 (en) Data storage in a mobile device with embedded mass storage device
KR102653373B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
KR20190051530A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US20150106573A1 (en) Data processing system
KR102480016B1 (ko) 다수의 맵핑 단위를 이용하는 불휘발성 메모리 시스템 및 그 동작방법
CN105765540A (zh) 管理用于非易失性存储器的传输缓冲器
US11520519B2 (en) Storage device and method of operating the same
US11029854B2 (en) Memory controller for concurrently writing host data and garbage collected data and operating method thereof
KR102583592B1 (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Legal Events

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