KR101876574B1 - 데이터 입출력 컨트롤러 및 이를 포함하는 시스템 - Google Patents

데이터 입출력 컨트롤러 및 이를 포함하는 시스템 Download PDF

Info

Publication number
KR101876574B1
KR101876574B1 KR1020120010595A KR20120010595A KR101876574B1 KR 101876574 B1 KR101876574 B1 KR 101876574B1 KR 1020120010595 A KR1020120010595 A KR 1020120010595A KR 20120010595 A KR20120010595 A KR 20120010595A KR 101876574 B1 KR101876574 B1 KR 101876574B1
Authority
KR
South Korea
Prior art keywords
buffer
data
controller
memory device
semiconductor memory
Prior art date
Application number
KR1020120010595A
Other languages
English (en)
Other versions
KR20130089324A (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 KR1020120010595A priority Critical patent/KR101876574B1/ko
Priority to US13/753,447 priority patent/US9262098B2/en
Publication of KR20130089324A publication Critical patent/KR20130089324A/ko
Application granted granted Critical
Publication of KR101876574B1 publication Critical patent/KR101876574B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

본 발명의 넓은 형태 중 하나는 데이터 입출력 컨트롤러에 관한 것이다. 본 발명에 의한 컨트롤러는 인터페이스 및 상기 반도체 장치와 데이터를 송수신하는 제 1 버퍼, 외부 요청에 따라 반도체 메모리 장치를 제어하는 제 1 제어기 및 다수의 외부 요청들을 파이프라인 방식으로 동시에 처리하기 위해 제 1 버퍼와 제 1 제어기를 제어하는 제 2 제어기를 포함한다. 본 발명의 넓은 형태 중 다른 하나는 이러한 컨트롤러를 포함하는 시스템에 관한 것이다.

Description

데이터 입출력 컨트롤러 및 이를 포함하는 시스템{DATA I/O CONTROLLER AND SYSTEM HAVING THE SAME}
본 발명은 데이터 입출력 컨트롤러 및 이를 포함하는 시스템에 대한 것이다. 보다 구체적으로 본 발명은 파이프라인 방식으로 다수의 외부 요청을 동시에 처리할 수 있는 데이터 입출력 컨트롤러 및 이를 포함하는 시스템에 관한 것이다. 보다 구체적으로 본 발명은 솔리드 스테이드 드라이브(SSD: SOLID STATE DRIVE)를 위한 컨트롤러 및 이를 포함하는 시스템에 관한 것이다.
종래의 자기 플레이트를 사용하는 대용량 기억 장치(HDD)를 대체하는 솔리스 스테이트 드라이브(SSD)의 사용이 증가하고 있다. SSD는 자기 플레이트 대신에 반도체 메모리 장치 특히 비휘발성 반도체 메모리 장치를 저장 매체로 사용한다.
SSD에 사용되는 반도체 메모리 장치에서의 데이터 처리 속도 또는 데이터 처리 단위는 SSD 외부에서 요청되는 데이터 처리 속도 또는 데이터 처리 단위와 상이할 수 있다. 또한 반도체 메모리 장치를 제어하는데 있어서 여러가지 제한 사항이 존재할 수 있다. 이로 인하여 SSD 전체의 성능이 저하되는 문제가 생길 수 있다.
예를 들어 종래의 SSD에 널리 사용되고 있는 낸드 플래시 메모리의 경우 덮어쓰기가 불가능한 점, 읽기 및 쓰기는 페이지 단위로 이루어지는데 비하여 지우기의 단위는 페이지보다 큰 블록 단위로 이루어지는 점, 멀티 레벨 셀(MLC)의 경우 읽기 및 쓰기에 필요한 연산 시간이 길어지는 점 등과 같은 제한 사항이 존재한다. 이와 같이 종래의 낸드 플래시 메모리 기반의 SSD는 낸드 플래시 메모리에서의 지연으로 인하여 병목 현상이 발생하였다.
이러한 문제를 해결하기 위하여 종래의 SSD는 휘발성 메모리 장치를 이용한 나중 쓰기(write-back) 방식을 도입하고 있으나 이 역시 낸드 플래시 메모리로의 접근을 반드시 수행해야 하므로 그 과정에서의 지연은 피할 수 없다. 더구나 최근 SSD의 동작에 필요한 대역폭이 넓어지고 있는 추세에 있다. 따라서 나중 쓰기로 인한 대역폭의 손실은 SSD의 전체 성능의 저하를 야기할 수 있다.
이상에서는 종래 기술의 문제를 SSD를 예로 들어 설명하였으나 이러한 문제는 SSD와 같이 반도체 메모리 장치를 데이터 저장 매체로 사용하는 시스템에서는 공통적으로 발생할 수 있다.
본 발명은 파이프라인 방식으로 다수의 외부 요청을 동시에 처리할 수 있는 데이터 입출력 컨트롤러 및 이를 포함하는 시스템을 제공하는 것을 목적으로 한다.
본 발명은 파이프라인 방식으로 다수의 외부 요청을 동시에 처리할 수 있는 SSD를 위한 컨트롤러 및 이를 포함하는 시스템을 제공하는 것을 목적으로 한다.
본 발명의 넓은 형태 중 하나는 반도체 메모리 장치에 대한 데이터 입출력을 제어하는 컨트롤러에 관한 것이다.
본 발명에 의한 컨트롤러는 인터페이스 및 상기 반도체 장치와 데이터를 송수신하는 제 1 버퍼, 외부 요청에 따라 반도체 메모리 장치를 제어하는 제 1 제어기 및 다수의 외부 요청들을 파이프라인 방식으로 동시에 처리하기 위해 제 1 버퍼와 제 1 제어기를 제어하는 제 2 제어기를 포함한다.
본 발명에 의한 컨트롤러에서 제 2 제어기는 외부 요청의 종류를 판단하고 제 1 버퍼를 할당하는 제 1 단계 및 외부 요청에 따라 제 1 버퍼와 반도체 메모리 장치 사이에서 데이터를 이동시키는 제 2 단계를 포함하는 파이프라인 단계들이 수행되도록 제 1 버퍼와 제 1 제어기를 제어한다.
본 발명에 의한 다른 컨트롤러는 제 2 제어기의 제어에 따라 제 1 버퍼와 데이터를 송수신하는 제 2 버퍼를 더 포함할 수 있다.
본 발명에 의한 다른 컨트롤러에서 제 2 제어기는 제 1 버퍼를 할당하는 제 1 단계, 외부 요청에 해당하는 주소의 데이터가 제 2 버퍼에 존재하는지 판단하고, 외부 요청에 해당하는 주소의 데이터가 제 2 버퍼에 존재하면 제 1 버퍼와 제 2 버퍼 사이에서 데이터를 이동하는 제 2 단계 및 외부 요청에 해당하는 주소의 데이터가 상기 제 2 버퍼에 존재하지 않으면 외부 요청에 따라 반도체 메모리 장치와 제 1 버퍼 사이에서 데이터를 이동하는 제 3 단계를 포함하는 파이프라인 단계들이 수행되도록 제 1 버퍼, 제 2 버퍼 및 제 1 제어기를 제어한다.
본 발명의 다른 형태는 위와 같은 컨트롤러를 포함하는 시스템에 관한 것이다.
본 발명을 통해 읽기 쓰기를 포함하는 다수의 외부 요청을 파이프라인 방식으로 동시에 처리하는 컨트롤러를 제공함으로써 반도체 메모리 장치에 대한 데이터 입출력 속도를 향상시킬 수 있다.
도 1은 본 발명의 제 1 실시예에 의한 컨트롤러 및 시스템의 블록도.
도 2는 도 1의 컨트롤러에 포함될 수 있는 파이프라인 레지스터의 구조.
도 3은 도 1의 컨트롤러에서 수행될 수 있는 파이프라인 동작을 나타내는 FSM 다이어그램.
도 4는 도 1의 컨트롤러에서 수행될 수 있는 또 다른 파이프라인 동작을 나타내는 FSM 다이어그램.
도 5는 본 발명의 제 2 실시예에 의한 컨트롤러 및 시스템의 블록도.
도 6은 도 5의 컨트롤러에 포함될 수 있는 파이프라인 레지스터의 구조.
도 7은 도 5의 컨트롤러에서 수행될 수 있는 파이프라인 동작을 나타낸 FSM 다이어그램.
도 8은 도 5의 컨트롤러에서 수행될 수 있는 파이프라인 동작을 나타낸 FSM 다이어그램.
도 9a - 9c는 도 5의 컨트롤러에서 수행될 수 있는 다수의 외부 요청에 대한 파이프라인 동작을 예시한 도면.
도 10a - 10g는 도 8에 예시된 파이프라인 동작을 단계별로 예시한 설명도.
이하에서는 첨부한 도면을 참조하여 본 발명에 의한 다양한 실시예들을 구체적으로 개시한다. 이하에서 동일한 참조번호는 실질적으로 동일한 구성요소를 지시한다.
도 1은 본 발명의 제 1 실시예에 의한 데이터 입출력 컨트롤러(1100) 및 이를 포함하는 시스템(1000)을 나타내는 블록도이다.
본 발명의 제 1 실시예에 의한 시스템(1000)은 컨트롤러(1100), 반도체 메모리 장치(1200) 및 인터페이스(1300)를 포함한다.
본 발명의 제 1 실시예에 의한 컨트롤러(1100)는 인터페이스(1300) 및 반도체 메모리 장치(1200)와 데이터를 송수신하는 제 1 버퍼(1110)를 포함한다. 제 1 제어기(1120)는 외부 요청에 따라 반도체 메모리 장치를 제어하는 내부 명령을 생성한다. 제 2 제어기(1130)는 다수의 외부 요청을 파이프라인 방식으로 처리하기 위하여 제 1 버퍼(1110) 및 제 1 제어기(1120)를 제어한다. 다수의 외부 요청을 파이프라인 방식으로 처리하는 구체적인 예에 대해서는 아래에서 살펴본다.
제 1 버퍼(1110)는 반도체 메모리 장치(1200)에 비하여 처리 속도가 빠른 것이 바람직하며 DRAM, SRAM 등의 휘발성 메모리 장치 또는 비휘발성 메모리 장치를 사용할 수 있다.
반도체 메모리 장치(1200)는 대용량의 데이터를 저장할 수 있는 비휘발성 메모리 장치인 것이 바람직하나 이에 한정되는 것은 아니다. 비휘발성 메모리 장치로서 플래시 메모리, 상변화 메모리, 자기 메모리 장치 등이 있으나 본 발명에 적용가능한 반도체 메모리 장치가 이에 한정되는 것은 아니며 종래의 비휘발성 메모리 장치는 물론 향후에 개발될 수 있는 비휘발성 메모리 장치도 본 발명에 의한 시스템(1000)에 적용될 수 있다.
제 1 제어기(1120)는 외부 요청에 대응하는 내부 명령을 생성한다. 외부 요청은 데이터 읽기 또는 쓰기 등의 명령일 수 있다. 예를 들어 외부 요청이 주소 A에 데이터 B를 쓰는 것이라고 가정하면 제 1 제어기(1120)는 이러한 요청을 반도체 메모리 장치(1200)가 수행할 수 있도록 제어하기 위한 하나 또는 둘 이상의 내부 명령(들)을 생성할 수 있다. 외부 요청에 대응하는 내부 명령을 생성하는 것은 반도체 메모리 장치(1200)의 규격에 따라 통상의 기술자가 용이하게 설계할 수 있는 것이다.
반도체 메모리 장치(1200)의 종류에 따라서 외부 요청에 대응하는 내부 명령의 형태는 상이할 수 있다. 예를 들어 외부 요청(예를 들어 특정 주소에 대한 데이터 읽기 또는 쓰기)이 동일하더라도 반도체 메모리 장치(1200)가 플래시 메모리인 경우의 내부 명령과 상변화 메모리인 경우의 내부 명령은 그 개수 및 형태가 상이할 수 있다. 또한 외부 요청에 포함된 주소(논리 주소)와 이에 대응하는 반도체 메모리 장치(1200)의 주소(물리 주소)는 동일하거나 상이할 수 있다. 또한 논리 주소에 대응하는 물리 주소는 반도체 메모리 장치(1200)의 종류에 따라 상이하게 정해질 수 있다. 따라서 내부 명령은 외부 요청에 의한 논리 주소를 반도체 메모리 장치(1200)에 적합하게 변형한 물리 주소를 포함할 수 있다.
도 1에서 인터페이스(1300)는 컨트롤러(1100)의 외부에 존재하는 구성으로 도시되어 있으나 실시예에 따라서는 인터페이스(1300)가 컨트롤러(1100)의 내부에 위치할 수도 있다. 도시된 인터페이스(1300)는 시스템(1000) 외부와의 데이터의 입출력을 담당한다. 도시되지는 않았으나 외부 요청의 입력을 담당하는 인터페이스(미도시)가 시스템(1000) 내에 별도로 존재할 수 있다.
컨트롤러(1100)는 다수의 외부 요청을 파이프라인 방식으로 동시에 처리하는 과정에서 각 외부 요청의 현재 처리 상태를 저장하기 위한 파이프라인 레지스터를 더 포함할 수 있다. 제 2 제어기(1130)는 파이프라인 레지스터에 설정되는 데이터를 참고하여 외부 요청 각각의 현재 상태를 파악할 수 있고 파이프라인 동작을 진행하기 위해 제 1 버퍼(1110)와 제 1 제어기(1120)를 제어할 수 있다.
도 2는 하나의 외부 요청을 위해 할당되는 파이프라인 레지스터의 구조를 나타낸 도면이다. 도시된 레지스터는 32비트 폭을 가지나 이는 실시예에 따라 통상의 기술자에 의해 용이하게 변경될 수 있다.
엔트리 인덱스(Entry Index)는 외부 요청을 식별하기 위하여 부여되는 번호를 의미한다. 단계(STAGE)는 해당 외부 요청에 대해서 현재 수행되고 있는 파이프라인 단계를 나타낸다.
RW는 외부 요청이 읽기인지 또는 쓰기인지를 나타낸다. 예를 들어 RW = '1(또는 T)'은 쓰기, RW = '0(또는 F)'은 읽기를 의미한다. Valid는 현재 외부 요청이 처리되고 있는지를 나타낸다. 예를 들어 Valid = 1(T)또는 은 외부 요청이 처리되는 중임을 의미하고, Valid = 0(또는 F)은 현재 외부 요청이 처리되고 있지 않거나 처리가 완료되었음을 의미한다. Complete는 현재 파이프라인 단계가 완료되었는지를 나타낸다. 예를 들어 Complete = 1(또는 T)은 현재 파이프라인 단계가 종료되었음을 나타내고, Complete = 0(또는 F)은 현재 파이프라인 단계가 종료되지 않았음을 나타낸다. 요청된 주소는 외부 요청에 의해 데이터를 읽거나 쓸 주소(논리 주소)를 나타낸다. 이하의 설명에서 비트값 1과 T는 같은 의미로 사용되고 비트값 0과 F는 같은 의미로 사용된다.
도 2에 도시된 파이프라인 레지스터는 하나의 외부 요청을 위해 할당되는 데이터 구조를 나타내므로 컨트롤러(1100)는 동시에 처리할 수 있는 외부 요청의 최대 개수와 적어도 같은 수의 파이프라인 레지스터를 구비하는 것이 바람직하다. 또한 도 2에 도시된 파이프라인 레지스터의 구조는 일 실시예에 불과하므로 통상의 기술자에 의해 용이하게 수정 또는 변경될 수 있다.
도 3은 도 1에 도시된 컨트롤러(1100)에서 수행될 수 있는 파이프라인 동작의 일 예를 나타내는 FSM(Finate State Machine) 다이어그램을 나타낸다. 도시된 파이프라인 동작은 제 2 제어기(1130)의 제어에 의해 진행된다. 이러한 FSM은 소프트웨어, 하드웨어 또는 소프트웨어 및 하드웨어가 결합된 형태 등으로 제 2 제어기(1130)에 구현될 수 있으며 이는 이하에서 설명하는 다른 FSM의 경우에도 마찬가지로 적용된다.
IDLE 상태는 외부 요청이 없어 대기 중인 상태를 나타낸다. 외부 요청이 처음 입력되면 해당 외부 요청에 대응하는 파이프라인 레지스터(예를 들어 도 2와 같은)에서 Valid = T, Complete = F, STAGE = 1로 설정된다. 이에 따라 외부 요청에 대한 처리는 제 1 단계로 진행하게 된다. 외부 요청이 이미 처리 중이었다면 STAGE에 설정된 값에 따라 해당 단계로 진행하게 된다.
제 1 단계(STAGE = 1)에서는 쓰여질 데이터를 저장하거나 읽을 데이터를 저장하기 위해 제 1 버퍼(1110)를 할당한다. 다음으로 외부 요청이 읽기인지 쓰기인지를 판단하여 파이프라인 레지스터의 RW 값을 설정한다. 외부 요청이 쓰기인 경우에는 인터페이스(1300)의 데이터를 제 1 버퍼(1110)로 읽어 들이고 파이프라인 레지스터에서 Complete = T, STAGE = 2로 설정하고 WAIT 상태로 이동한다. 외부 요청이 읽기인 경우에는 다른 동작 없이 파이프라인 레지스터에서 Complete = T, STAGE = 2로 설정하고 WAIT 상태로 이동한다.
제 2 단계(STAGE = 2)는 파이프라인 레지스터의 RW 비트를 통해 읽기/쓰기 여부를 판단한다. 쓰기인 경우 제 1 버퍼(1110)의 데이터를 반도체 메모리 장치(1200)에 저장하고 파이프라인 레지스터에서 Complete = T, Valid = F로 설정하여 외부 요청의 처리를 종료했음을 나타낸다. 읽기인 경우 반도체 메모리 장치(1200)의 데이터를 제 1 버퍼(1110)에 저장하고, 제 1 버퍼(1110)의 데이터를 인터페이스(1300)에 제공한 이후 파이프라인 레지스터에서 Complete = F, Valid = F로 설정하여 외부 요청의 처리를 종료했음을 나타낸다. 이후 WAIT 상태로 이동한다.
WAIT 상태는 제 1 단계(STAGE = 1), 제 2 단계(STAGE = 2)가 동시에 진행되고 있었던 경우 두 단계가 모두가 완료된 이후(모든 Complete == T)에야 IDLE 상태로 진행되도록 하고 그렇지 않은 경우 WAIT 상태에 대기하도록 한다. 이를 통해 두 개의 서로 다른 외부 요청에 대하여 동일한 파이프라인 단계가 진행되는 것을 피할 수 있다.
전술한 FSM은 파이프라인의 단계가 둘이므로 본 실시예에 의한 컨트롤러는 적어도 두 개의 외부 요청을 동시에 처리할 수 있다. 그러나 전술한 FSM은 실시예에 따라 변경 및 수정이 가능하며 이 경우 동시에 처리할 수 있는 외부 요청의 개수는 증가할 수 있다.
예를 들어 만일 반도체 메모리 장치(1200)가 동시에 접근할 수 있는 다수의 독립된 메모리 블록으로 구성된 경우라면 다수의 외부 요청에 대해서 동시에 제 2 단계가 수행될 수 있다. 즉 두 개의 메모리 블록이 존재한다면 하나의 메모리 블록에 대해서 제 2 단계에서 수행되고 있는 도중이라도 다른 외부 요청에 대해서도 제 2 단계가 병렬적으로 진행될 수 있다. 이러한 병렬적 구성은 반도체 메모리 장치(1300)에 대한 접근 속도가 느려 제 2 단계의 처리에 걸리는 시간이 긴 경우 유용할 수 있다. 이에 대해서는 아래의 도 9c와 관련하여 다시 살펴본다.
이를 위해 도 3의 WAIT 상태를 비롯한 FSM의 동작은 통상의 기술자에 의해 용이하게 수정할 수 있다. 이 경우 동시에 처리할 수 있는 외부 요청의 개수가 증가함에 따라 파이프라인 레지스터가 추가되어야 함은 전술한 바와 같이 자명하다.
이하에서는 편의상 반도체 메모리 장치(1300)가 독립적으로 접근 가능한 하나의 블록을 포함하는 것으로 가정하고 실시예를 설명한다. 그러나 이하의 실시예들은 전술한 바와 같이 반도체 메모리 장치(1300)가 독립적으로 접근 가능한 다수의 메모리 블록을 포함하는 실시예로 용이하게 확장될 수 있다.
도 3에서는 파이프라인의 단계가 둘인 실시예를 개시하고 있다. 그러나 실시예에 따라 파이프라인 단계의 개수가 증가될 수 있다. 도 3의 제 1 단계와 제 2 단계 외에 별도의 파이프라인 단계가 추가될 수 있다. 예를 들어 제 1 제어기(1120)에서 외부 요청에 대응하는 내부 명령을 생성하는 단계를 별도의 단계로 추가할 수 있다. 또는 제 1 버퍼(1100)와 반도체 메모리 장치(1200) 사이에 추가 버퍼를 설치하여 파이프라인 단계를 추가할 수 있다. 이와 같이 파이프라인 단계의 추가 또는 변경을 통한 성능의 최적화는 통상의 기술자에 의해 용이하게 수행될 수 있다.
도 4는 도 1에 도시된 컨트롤러(1100)에서 수행할 수 있는 또 다른 파이프라인 동작을 나타내는 FSM 다이어그램이다. 도 4에 도시된 FSM 다이어그램은 도 3의 FSM 다이어그램에 제 1 제어기(1120)에서 내부 명령을 생성하는 단계를 별도의 파이프라인 단계(STAGE = 2)로 추가한 것이다. 이는 제 1 제어기(1120)에서 내부 명령을 생성하는데 걸리는 시간이 충분히 긴 경우 유용할 수 있다. 도 4의 실시예는 파이프라인 단계가 총 3개이므로 동시에 3개의 외부 요청을 처리할 수 있다.
제 2 단계(STAGE = 2)에 진입하면 제 1 제어기(1120)가 반도체 메모리 장치(1200)를 제어하기 위한 내부 명령을 생성한다. 이후 파이프라인 레지스터에서 Complete = T, STAGE = 3으로 설정하고 이후 WAIT 단계로 진입한다. IDLE, WAIT 단계 및 제 1 단계(STAGE = 1), 제 3 단계(STAGE = 3)의 설명은 도 3과 관련하여 설명한 것과 중복되므로 설명을 생략한다.
반도체 메모리 장치(1200)가 낸드 플래시 메모리인 경우 제 1 제어기(1120)에서 내부 명령을 생성하는 동작은 FTL(Flash Translation Layer) 동작으로 지칭되기도 한다. FTL 동작에 대해서는 다양한 기법들이 공지되어 있다. FTL 동작을 수행하는 제 1 제어기(1120)는 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어가 결합된 형태로 구현될 수 있다. 또한 FTL 동작을 통해 생성된 하나 또는 그 이상의 내부 명령(들)은 별개의 레지스터(미도시)에 저장되어 반도체 메모리 장치(1200)의 데이터 입출력을 제어하기 위해 사용될 수 있다.
도 5는 본 발명의 제 2 실시예에 의한 데이터 입출력 컨트롤러(1100) 및 이를 포함하는 시스템(1000)을 나타내는 블록도이다. 본 발명의 제 2 실시예에 의한 시스템(1000)은 컨트롤러(1100)가 제 2 버퍼(1140)를 더 포함하는 점에서 제 1 실시예와 상이하다.
제 2 실시예에서 제 2 버퍼(1140)는 일종의 캐시의 역할을 한다. 즉 제 2 버퍼(1140)에 외부에서 요청된 데이터가 존재하는 경우(Hit) 반도체 메모리 장치(1200)에 접근하지 않고 외부 요청에 대한 처리를 완료함으로써 처리 속도를 증가시킬 수 있다.
도 6은 제 2 실시예에 의한 컨트롤러(1100)에 더 포함될 수 있는 파이프라인 레지스터의 구조를 나타낸다. 도시된 파이프라인 레지스터는 하나의 외부 요청에 대응하는 것이며 동시에 처리하는 외부 요청의 개수에 따라 추가 레지스터가 할당되는 것이 바람직하다.
파이프라인 레지스터에서 엔트리 인덱스(Entry Index)는 외부 요청을 식별하는 역할을 한다. STAGE는 외부 요청이 처리되고 있는 파이프라인 단계를 식별한다.
RW는 외부 요청이 읽기인지 또는 쓰기인지를 나타낸다. 예를 들어 RW = '1(또는 T)'은 쓰기, RW = '0(또는 F)'은 읽기를 의미한다. Valid는 현재 외부 요청이 처리되고 있는지를 나타낸다. 예를 들어 Valid = 1(T)또는 은 외부 요청이 처리되는 중임을 의미하고, Valid = 0(또는 F)은 현재 외부 요청이 처리되고 있지 않거나 처리가 완료되었음을 의미한다. Complete는 현재 파이프라인 단계가 완료되었는지를 나타낸다. 예를 들어 Complete = 1(또는 T)은 현재 파이프라인 단계가 종료되었음을 나타내고, Complete = 0(또는 F)은 현재 파이프라인 단계가 종료되지 않았음을 나타낸다. 요청된 주소는 외부 요청에 의해 데이터를 읽거나 쓸 주소(논리 주소)를 나타낸다.
Hit는 외부 요청에서 요청된 주소에 해당하는 데이터가 제 2 버퍼(1140)에 존재하는지를 나타낸다. 예를 들어 Hit = 1(T)은 요청된 주소(논리 주소)에 해당하는 데이터가 제 2 버퍼(1140)에 존재하는 것을 나타내고 Hit=0(F)은 요청된 주소(논리 주소)에 해당하는 데이터가 제 2 버퍼(1140)에 존재하지 않는 것을 나타낸다.
캐시 주소는 요청된 주소(논리 주소)에 해당하는 데이터의 주소를 의미한다. 추방된 캐시 주소는 Hit가 발생하지 않아 제 2 버퍼(1140)에 다른 데이터가 저장되기 위해 제 2 버퍼(1140)로부터 추방되는 데이터의 주소(논리 주소)를 나타낸다.
도 7은 본 발명의 제 2 실시예에 의한 컨트롤러(1100)에서 수행될 수 있는 일 실시예에 의한 파이프라인 동작을 나타내는 FSM 다이어그램을 나타낸다. 도 7에 도시된 실시예는 제 2 버퍼(1140)가 추가됨으로 인하여 제 2 단계(STAGE = 2)가 추가된 점에서 도 3에 도시된 실시예와 상이하다. 그러나 IDLE, WAIT, 제 1 단계(STAGE = 1), 제 3 단계(STAGE = 3)의 동작은 도 3과 관련하여 설명한 것과 동일하므로 이하에서는 제 2 단계의 동작을 중심으로 살펴본다.
제 2 단계(STAGE = 2)는 레지스터의 RW 비트와 Hit 비트를 참조하여 읽기 또는 쓰기 동작 여부와 제 2 버퍼(1140) 내에 요청된 주소의 데이터가 존재하는지 여부(Hit 또는 Miss)를 판단한다. 도 7에서는 읽기/쓰기 동작에 대한 판단을 Hit 여부에 대한 판단보다 선행하고 있으나 순서는 바뀌어도 무방하다.
먼저 쓰기 요청인 경우에 대해서 설명한다. 쓰기 요청인 경우 Hit = 1이면 요청된 주소에 해당하는 데이터가 제 2 버퍼(1140)에 존재하므로 새로운 데이터로 제 2 버퍼(1140)의 해당 주소의 데이터를 덮어쓰고 레지스터에서 Complete = T, Valid = F으로 설정하고 WAIT 상태로 진행한다. 그러나 Hit = 0이면 요청된 주소에 해당하는 데이터가 제 2 버퍼(1140)에 존재하지 않는 경우로서 이 경우에는 제 2 버퍼(1140)에서 임의의 데이터(추방되는 데이터)와 인터페이스(1300)로부터 입력되어 제 1 버퍼(1110)에 대기하고 있는 데이터를 교환하여 저장한다. 이때 레지스터에서 캐시 주소 필드와 추방된 캐시 주소 필드에 제 2 버퍼(1140)로부터 추방된 데이터의 주소를 기록하고 Complete = T, STAGE = 3으로 설정한 후 WAIT 상태로 진행한다. 추방된 데이터는 제 1 버퍼(1110)에 저장되고 다음 파이프라인 단계들을 거치면서 반도체 메모리 장치(1200)에 기록된다.
다음으로 읽기 요청에 대해서 설명한다. 읽기 요청인 경우 Hit = 1이면 제 2 버퍼(1140)의 데이터를 제 1 버퍼(1110)에 저장하여 저장된 제 1 버퍼(1110)의 데이터가 인터페이스(1300)로 제공되도록 한 후 레지스터에서 Complete = T, Valid = F으로 설정하고 WAIT 상태로 진행한다. 그러나 Hit = 0인 경우에는 다른 동작 없이 레지스터에서 Complete = T, STAGE = 3으로 설정하고 WAIT 상태로 진행한다.
요약하면 Hit = 1인 경우에는 제 2 단계에서 해당 외부 요청에 대한 처리가 종료되나, Hit = 0 인 경우에는 제 3 단계에서 해당 외부 요청에 대한 처리가 종료된다.
제 2 버퍼(1140)는 일반적으로 반도체 메모리 장치(1200)에 비하여 고속의 메모리 장치로 구현된다. 따라서 다수의 외부 요청을 처리하는데 걸리는 시간은 도 3에 도시된 파이프라인 동작에 비하여 도 7에 도시된 파이프라인 동작의 경우 더 빠를 수 있다.
특히 외부 요청의 주소가 무작위로 변경되는 경우와 같이 Hit = 1이 될 확률과 Hit = 0이 될 확률이 비슷한 경우 처리 속도의 향상은 자명하다. 캐싱 효율의 최적화를 위한 제 2 버퍼(1140)의 크기 및 세부적인 캐싱 기법 등에 대한 수정 및 변경은 통상의 기술자에게 용이한 것으로서 본 발명의 범주 내에서 이러한 수정 변경 역시 본 발명의 범주에 속하는 것으로 보아야 한다.
도 8은 본 발명의 제 2 실시예에 의하여 수행될 수 있는 파이프라인 동작의 다른 실시예를 나타내는 FSM 다이어그램을 나타낸다. 도 8에 도시된 FSM은 제 1 제어기(1120)에서 내부 명령을 생성하는 단계를 별도의 파이프라인 단계로 추가한 점에서 상이하다. 이를 제외하고 나머지 동작은 도 7에서 설명한 것과 실질적으로 동일하다. 또한 내부 명령을 생성하는 단계에 대해서는 도 4와 관련하여 설명한 것과 실질적으로 동일하므로 이에 대해서는 구체적인 설명을 생략한다.
도 9a 내지 9c는 도 5의 반도체 메모리 장치(1200)와 관련하여 도 8에 도시된 FSM에 의한 파이프라인 동작의 여러 시나리오를 나타낸 것이다. 도시된 예는 외부 요청 1 ~ 5 모두에 대해서 제 4 단계까지 진행되는 경우를 가정한 것이다.
도 9a는 4개의 파이프라인 단계 모두의 처리 시간이 같은 경우를 나타낸다.
도 9b는 제 4 단계의 처리 시간이 다른 단계에 비하여 두 배인 경우를 나타낸다. 이로써 제 4 단계가 종료될 때까지 다른 단계는 WAIT 상태에서 대기하게 되므로 그만큼 처리 시간이 지연된다. 반도체 메모리 장치(1200)의 처리 시간이 상대적으로 오래 걸리는 경우 도 9a에 비하여 지연이 발생할 수 있다.
도 9c는 반도체 메모리 장치(1200)가 독립적으로 접근할 수 있는 두 메모리 블록을 포함하여 각각에 대한 접근이 제 4-1 단계와 제 4-2 단계로 표현되는 경우를 나타낸다. 도 9c와 같이 독립적으로 접근할 수 있는 메모리 블록이 다수 존재하는 경우 도 9b에 비하여 지연을 줄일 수 있다. 도시된 예는 인접한 외부 요청이 서로 다른 메모리 블록을 번갈아가며 지정하는 경우이나 그렇지 않더라도 외부 요청이 지정하는 주소가 임의로 변하는 경우 도 9b에 비하여 처리 시간은 평균적으로 감소하게 된다.
본 발명의 권리범위 내에서 성능의 최적화를 위해 반도체 메모리 장치(1200)에서 독립적으로 접근 가능한 메모리 블록의 개수를 정하는 것은 통상의 기술자에게 용이하다.
도 10a 내지 10g는 도 9에 도시된 실시예에 따라 다수의 외부 요청을 처리하는 파이프라인 동작을 예시한 설명도이다.
본 설명도에서 도 5의 반도체 메모리 장치(1200)는 낸드 플래시 메모리이고, 제 3 단계(STAGE = 3)에서 제 1 제어기(1120)가 FTL에 의해 내부 명령을 생성하는 것을 나타낸다. 또한 외부 요청은 쓰기(0), 쓰기(4), 읽기(2), 읽기(5)의 명령이 순차적으로 입력되는 경우를 가정한다. 여기서 괄호 안의 숫자는 논리 주소를 나타낸다. 또한 초기 제 2 버퍼(1140)에 저장된 데이터의 논리 페이지 주소는 0, 1, 2, 3으로 가정한다. 또한 제 2 버퍼(1140) 또는 낸드 플래시(1200)에 저장된 데이터는 D(0)' 등과 같이 표시하고 외부에서 입력되는 데이터는 D(0)와 같이 표시한다.
도 10a에서 외부 요청 쓰기(0)에 대해서 제 1 단계 동작이 수행된다. 이때 인터페이스(1300)로부터 제 1 버퍼(1110)로 데이터 D(0)가 입력된다. 이에 대응하는 파이프라인 레지스터는 RW = 1, Valid = 1, Complete = 0과 같이 설정된다.
도 10b에서 외부 요청 쓰기(0)에 대해서 제 2 단계 동작이 수행된다. Hit = 1이므로 제 2 버퍼(1140)에 제 1 버퍼(1110)의 데이터 D(0)를 덮어쓴다. 이로써 쓰기(0)에 대한 처리는 종료된다.
또한 새로운 외부 요청 쓰기(4)에 대해서 제 1 단계 동작이 수행되어 인터페이스(1300)로부터 제 1 버퍼(1110)로 데이터 D(4)가 입력된다. 이에 대응하는 파이프라인 레지스터는 RW=1, Valid = 1, Complete = 0과 같이 설정된다.
도 10c에서 쓰기(0)에 대응하는 파이프라인 레지스터에서 Valid = 0으로 설정되어 쓰기(0)에 대한 처리가 종료되었음을 알 수 있다. 이로써 다른 요청이 해당 레지스터를 할당받아 사용할 수 있다.
쓰기(4)에 대해서는 제 2 단계 동작이 수행된다. 여기서 Hit = 0이므로 제 1 버퍼(1110)의 데이터(D(4))와 제 2 버퍼(1140)에 있는 임의의 데이터(D(3)')를 교환한다. 이에 대응하는 파이프라인 레지스터에서 캐시 주소와 추방된 캐시 주소가 모두 3으로 설정되었음을 알 수 있다.
또한 새로운 외부 요청 읽기(2)에 대해서 제 1 단계 동작이 수행되어 제 1 버퍼(1110)가 할당되어 데이터 D(2)'의 저장을 대기한다.
도 10d에서 쓰기(4)에 대한 제 3 단계 동작이 수행되어 제 1 제어기(1120)에서 FTL 동작을 통해 D(3)'을 낸드 플래시(1200)에 쓰기 위한 내부 명령을 생성한다.
읽기(2)에 대해서는 제 2 단계 동작이 수행된다. 여기서 Hit = 1이므로 제 2 버퍼(1140)의 데이터 D(2)'이 제 1 버퍼(1110)에 저장되고 인터페이스(1300)로 제공된다. 이로써 읽기(2)에 대한 처리는 종료된다.
또한 새로운 외부 요청 읽기(5)에 대해서 제 1 단계 동작이 수행되어 제 1 버퍼(1110)가 할당되어 데이터 D(5)'의 저장을 대기한다.
도 10e에서 쓰기(4)에 대한 제 4 단계 동작이 수행되어 제 1 버퍼에 있는 D(3)'이 낸드 플래시(1200)에 저장된다.
읽기(2)에 대한 파이프라인 레지스터에서 Valid = 0으로 설정되어 읽기(2)에대한 처리가 종료되었음을 알 수 있다. 이로써 다른 요청이 해당 레지스터를 할당받아 사용할 수 있다.
또한 읽기(5)에 대해서는 제 2 단계 동작이 수행된다. 여기서 Hit = 0이므로 다른 동작 없이 다음 단계로 이동하게 된다.
도 10f에서 쓰기(4)에 대한 파이프라인 레지스터에서 Valid = 0으로 설정되어 쓰기(4)에 대한 처리가 종료되었음을 알 수 있다.
읽기(5)에 대해서 제 3 단계 동작이 수행되어 제 1 제어기(1120)에서 FTL 동작을 수행하여 D(5)'를 낸드 플래시(1200)에 기록하기 위한 내부 명령을 생성한다.
도 10g에서 읽기(5)에 대해서 제 4 단계 동작이 수행되어 낸드 플래시(1200)의 데이터가 제 1 버퍼(1110)에 저장되고 제 1 버퍼(1110)의 데이터가 인터페이스(1200)로 제공되어 읽기(5)에 대한 처리를 종료한다.
도시되지는 않았으나 이후 읽기(5)에 대한 파이프라인 레지스터에서 Valid = 0으로 설정되어 해당 레지스터가 다른 외부 요청에 할당될 수 있다.
이상과 같이 데이터 입출력을 위한 컨트롤러(1100)와 이를 포함하는 시스템(1000)의 다양한 실시예들을 도면을 참조하여 설명하였다. 본 발명에 의한 시스템(1000)은 솔리드 스테이트 드라이브의 형태로 구현될 수 있으나 랩톱, PDA, 데스크톱, 서버 컴퓨터와 같은 컴퓨터 시스템, 통신 장비, 스마트폰과 같은 통신 시스템 의 일부로서 구현될 수도 있다. 따라서 본 발명에 의한 시스템(1000)은 이들 모두를 포괄하는 것으로 이해해야 할 것이다.
또한 본 발명에 의한 컨트롤러(1100)와 함께 동작하는 반도체 메모리 장치(1200)는 휘발성 및 비휘발성 반도체 메모리 장치를 모두 포함할 수 있으나 대용량 보조 기억장치로 사용되는 경우에는 비휘발성 반도체 메모리 장치인 것이 바람직하다. 또한 비휘발성 반도체 메모리 장치는 플래시 메모리 장치에 한정되지 않고 MRAM, PRAM, ReRAM 등을 포함하는 임의의 비휘발성 반도체 메모리 장치를 포함할 수 있다.
이상의 설명은 본 발명의 실시예에 대한 설명을 위한 것이나 본 발명의 권리범위를 한정하는 것은 아니다. 본 발명의 권리범위는 청구범위에 의하여 정해진다. 또한 청구범위에 기재된 사항으로부터 통상의 기술자가 용이하게 수정 또는 변경할 수 있는 균등물 또한 본 발명의 권리범위에 속하는 것으로 보아야 한다.
1000: 시스템
1100: 컨트롤러
1200: 반도체 메모리 장치
1300: 인터페이스
1110: 제 1 버퍼
1120: 제 1 제어기
1130: 제 2 제어기
1140: 제 2 버퍼

Claims (27)

  1. 반도체 메모리 장치에 대한 데이터 입출력을 제어하는 컨트롤러로서,
    인터페이스 및 상기 반도체 메모리 장치와 데이터를 송수신하는 제 1 버퍼;
    외부 요청에 따라 상기 반도체 메모리 장치의 읽기 동작 또는 쓰기 동작을 제어하는 제 1 제어기 및
    다수의 상기 외부 요청들을 파이프라인 방식으로 동시에 처리하기 위해 상기 제 1 버퍼와 상기 제 1 제어기를 제어하는 제 2 제어기
    를 포함하는 컨트롤러.
  2. 청구항 1에 있어서, 상기 제 2 제어기는
    상기 제 1 버퍼를 할당하는 제 1 단계 및
    상기 외부 요청에 따라 상기 제 1 버퍼와 상기 반도체 메모리 장치 사이에서 데이터를 이동시키는 제 2 단계
    를 포함하는 파이프라인 단계들이 수행되도록 상기 제 1 버퍼와 상기 제 1 제어기를 제어하는 컨트롤러.
  3. 청구항 2에 있어서, 상기 외부 요청이 데이터 쓰기 요청인 경우
    상기 제 1 단계는 상기 인터페이스로부터의 데이터를 상기 제 1 버퍼에 저장하고 상기 제 2 단계는 상기 제 1 버퍼의 데이터를 상기 반도체 메모리 장치에 저장하는 컨트롤러.
  4. 청구항 2에 있어서, 상기 외부 요청이 데이터 읽기 요청인 경우
    상기 제 2 단계는 상기 반도체 메모리 장치의 데이터를 상기 제 1 버퍼에 저장하여 상기 인터페이스로 제공하는 컨트롤러.
  5. 청구항 1에 있어서, 상기 컨트롤러는 상기 다수의 외부 요청 각각이 위치하는 파이프라인 단계 및 요청된 주소 중 적어도 하나를 저장하는 레지스터를 더 포함하는 컨트롤러.
  6. 청구항 1에 있어서, 상기 제 2 제어기는
    상기 제 1 버퍼를 할당하는 제 1 단계;
    상기 제 1 제어기에서 외부 요청에 따라 내부 명령을 생성하는 제 2 단계; 및
    상기 내부 명령에 따라 상기 제 1 버퍼와 상기 반도체 메모리 장치 사이에서 데이터를 이동시키는 제 3 단계
    를 포함하는 파이프라인 단계들이 수행되도록 상기 제 1 버퍼와 상기 제 1 제어기를 제어하는 컨트롤러.
  7. 청구항 6에 있어서, 상기 외부 요청이 데이터 쓰기 요청인 경우
    상기 제 1 단계는 상기 인터페이스로부터의 데이터를 상기 제 1 버퍼에 저장하고 상기 제 3 단계는 상기 제 1 버퍼의 데이터를 상기 반도체 메모리 장치에 저장하는 컨트롤러.
  8. 청구항 6에 있어서, 상기 외부 요청이 데이터 읽기 요청인 경우
    상기 제 3 단계는 상기 반도체 메모리 장치의 데이터를 상기 제 1 버퍼에 저장하여 상기 인터페이스로 제공하는 컨트롤러.
  9. 청구항 6에 있어서, 상기 반도체 메모리 장치는 비휘발성 메모리 장치인 컨트롤러.
  10. 청구항 9에 있어서, 상기 반도체 메모리 장치는 플래시 메모리 장치이고 상기 제 1 제어기는 FTL(Flash Translation Layer) 동작을 수행하여 상기 외부 요청에 대응하는 내부 명령을 생성하는 컨트롤러.
  11. 청구항 1에 있어서, 상기 제 2 제어기의 제어에 따라 상기 제 1 버퍼와 데이터를 송수신하는 제 2 버퍼를 더 포함하는 컨트롤러.
  12. 청구항 11에 있어서, 상기 제 2 제어기는
    상기 제 1 버퍼를 할당하는 제 1 단계;
    상기 외부 요청에 해당하는 주소의 데이터가 상기 제 2 버퍼에 존재하는지 판단하고, 상기 외부 요청에 해당하는 주소의 데이터가 상기 제 2 버퍼에 존재하면 상기 제 1 버퍼와 상기 제 2 버퍼 사이에서 데이터를 이동하는 제 2 단계 및
    상기 외부 요청에 해당하는 주소의 데이터가 상기 제 2 버퍼에 존재하지 않으면 상기 외부 요청에 따라 상기 반도체 메모리 장치와 상기 제 1 버퍼 사이에서 데이터를 이동하는 제 3 단계
    를 포함하는 파이프라인 단계들이 수행되도록 상기 제 1 버퍼, 상기 제 2 버퍼 및 상기 제 1 제어기를 제어하는 컨트롤러.
  13. 청구항 12에 있어서, 상기 외부 요청이 데이터 쓰기 요청인 경우
    상기 제 1 단계는 상기 인터페이스로부터의 데이터를 상기 제 1 버퍼에 저장하고,
    상기 외부 요청에 대응하는 주소의 데이터가 상기 제 2 버퍼에 존재하면 상기 제 2 단계는 상기 제 1 버퍼의 데이터를 상기 제 2 버퍼에 저장하고,
    상기 외부 요청에 대응하는 주소의 데이터가 상기 제 2 버퍼에 존재하지 않으면 상기 제 2 단계는 상기 제 2 버퍼의 데이터를 상기 제 1 버퍼의 데이터와 교환하여 저장하고 상기 제 3 단계는 상기 외부 요청에 따라 상기 제 1 버퍼의 데이터를 상기 반도체 메모리 장치에 저장하는 컨트롤러.
  14. 청구항 12에 있어서, 상기 외부 요청이 데이터 읽기 요청인 경우
    상기 외부 요청에 대응하는 주소의 데이터가 상기 제 2 버퍼에 존재하면 상기 제 2 단계는 상기 제 2 버퍼의 데이터를 상기 제 1 버퍼에 저장하여 상기 인터페이스로 제공하고,
    상기 외부 요청에 대응하는 주소가 상기 제 2 버퍼에 존재하지 않으면 상기 제 3 단계는 상기 외부 요청에 따라 상기 반도체 메모리 장치의 데이터를 상기 제 1 버퍼에 저장하여 상기 인터페이스로 제공하는 컨트롤러.
  15. 청구항 11에 있어서, 상기 컨트롤러는 상기 다수의 외부 요청 각각의 파이프라인 단계 및 주소 중 적어도 하나를 포함하는 레지스터를 더 포함하는 컨트롤러.
  16. 청구항 11에 있어서, 상기 제 2 제어기는
    상기 제 1 버퍼를 할당하는 제 1 단계;
    상기 외부 요청에 해당하는 주소의 데이터가 상기 제 2 버퍼에 존재하는지 판단하고, 상기 외부 요청에 해당하는 주소의 데이터가 상기 제 2 버퍼에 존재하면 상기 제 1 버퍼와 상기 제 2 버퍼 사이에서 데이터를 이동하는 제 2 단계;
    상기 외부 요청에 해당하는 주소의 데이터가 상기 제 2 버퍼에 존재하지 않으면 상기 제 1 제어기에서 FTL 동작을 수행하여 내부 명령을 생성하는 제 3 단계 및
    상기 내부 명령에 따라 상기 반도체 메모리 장치와 상기 제 1 버퍼 사이에서 데이터를 이동하는 제 4 단계
    를 포함하는 파이프라인 단계들이 수행되도록 상기 제 1 버퍼, 상기 제 2 버퍼 및 상기 제 1 제어기를 제어하는 컨트롤러.
  17. 청구항 16에 있어서, 상기 외부 요청이 데이터 쓰기 요청인 경우
    상기 제 1 단계는 상기 인터페이스로부터의 데이터를 상기 제 1 버퍼에 저장하고,
    상기 외부 요청에 대응하는 주소의 데이터가 상기 제 2 버퍼에 존재하면 상기 제 2 단계는 상기 제 1 버퍼의 데이터를 상기 제 2 버퍼에 저장하고,
    상기 외부 요청에 대응하는 주소의 데이터가 상기 제 2 버퍼에 존재하지 않으면 상기 제 2 단계는 상기 제 2 버퍼의 데이터를 상기 제 1 버퍼의 데이터와 서로 교환하고 상기 제 4 단계는 상기 내부 명령에 따라 상기 제 1 버퍼의 데이터를 상기 반도체 메모리 장치에 저장하는 컨트롤러.
  18. 청구항 16에 있어서, 상기 외부 요청이 데이터 읽기 요청인 경우
    상기 외부 요청에 대응하는 주소의 데이터가 상기 제 2 버퍼에 존재하면 상기 제 2 단계는 상기 제 2 버퍼의 데이터를 상기 제 1 버퍼에 저장하여 상기 인터페이스로 제공하고,
    상기 외부 요청에 대응하는 주소의 데이터가 상기 제 2 버퍼에 존재하지 않으면 상기 제 4 단계는 상기 내부 명령에 따라 상기 반도체 메모리 장치의 데이터를 상기 제 1 버퍼에 저장하여 상기 인터페이스로 제공하는 컨트롤러.
  19. 청구항 16에 있어서, 상기 반도체 메모리 장치는 비휘발성 메모리 장치인 컨트롤러.
  20. 청구항 19에 있어서, 상기 반도체 메모리 장치는 플래시 메모리 장치인 컨트롤러.
  21. 반도체 메모리 장치 및
    인터페이스 및 상기 반도체 메모리 장치와 데이터를 송수신하는 제 1 버퍼;
    외부 요청에 따라 상기 반도체 메모리 장치의 읽기 동작 또는 쓰기 동작을 제어하는 제 1 제어기 및
    다수의 상기 외부 요청들을 파이프라인 방식으로 동시에 처리하기 위해 상기 제 1 버퍼와 상기 제 1 제어기를 제어하는 제 2 제어기
    를 포함하는 컨트롤러
    를 포함하는 시스템.
  22. 청구항 21에 있어서, 상기 컨트롤러는 상기 제 2 제어기의 제어에 따라 상기 제 1 버퍼와 데이터를 송수신하는 제 2 버퍼를 더 포함하는 시스템.
  23. 청구항 21 에 있어서, 상기 반도체 메모리 장치는 비휘발성 메모리 장치인 시스템.
  24. 청구항 23 에 있어서, 상기 반도체 메모리 장치는 플래시 메모리 장치인 시스템.
  25. 청구항 24 에 있어서, 상기 제 1 제어기는 FTL(Flash Translation Layer) 동작을 수행하여 상기 외부 요청에 대응하는 내부 명령을 생성하는 시스템.
  26. 청구항 21 에 있어서, 상기 반도체 메모리 장치는 다수의 메모리 블록을 포함하되 상기 다수의 메모리 블록 각각은 상기 컨트롤러에서 독립적으로 제어할 수 있는 시스템.
  27. 청구항 21 내지 26항 중 어느 한 항에 있어서, 상기 시스템은 솔리드 스테이트 드라이브인 시스템.
KR1020120010595A 2012-02-02 2012-02-02 데이터 입출력 컨트롤러 및 이를 포함하는 시스템 KR101876574B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120010595A KR101876574B1 (ko) 2012-02-02 2012-02-02 데이터 입출력 컨트롤러 및 이를 포함하는 시스템
US13/753,447 US9262098B2 (en) 2012-02-02 2013-01-29 Pipelined data I/O controller and system for semiconductor memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120010595A KR101876574B1 (ko) 2012-02-02 2012-02-02 데이터 입출력 컨트롤러 및 이를 포함하는 시스템

Publications (2)

Publication Number Publication Date
KR20130089324A KR20130089324A (ko) 2013-08-12
KR101876574B1 true KR101876574B1 (ko) 2018-07-09

Family

ID=48903942

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120010595A KR101876574B1 (ko) 2012-02-02 2012-02-02 데이터 입출력 컨트롤러 및 이를 포함하는 시스템

Country Status (2)

Country Link
US (1) US9262098B2 (ko)
KR (1) KR101876574B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6453729B2 (ja) * 2015-08-17 2019-01-16 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
US10884933B2 (en) * 2019-01-18 2021-01-05 Silicon Motion Technology (Hong Kong) Limited Method and apparatus for performing pipeline-based accessing management in a storage server
KR20220067797A (ko) 2020-11-18 2022-05-25 에스케이하이닉스 주식회사 메모리 컨트롤러
WO2023008008A1 (ja) * 2021-07-30 2023-02-02 株式会社ソフトギア 情報処理プログラム、情報処理装置及び情報処理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090168525A1 (en) * 2007-12-27 2009-07-02 Pliant Technology, Inc. Flash memory controller having reduced pinout

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272609B1 (en) * 1998-07-31 2001-08-07 Micron Electronics, Inc. Pipelined memory controller
US8806144B2 (en) * 2009-05-12 2014-08-12 Stec, Inc. Flash storage device with read cache
KR101662824B1 (ko) 2009-07-08 2016-10-06 삼성전자주식회사 고체 상태 드라이브 장치 및 그것의 구동 방법
WO2012050934A2 (en) * 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
US10031850B2 (en) * 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
US8984225B2 (en) * 2011-06-22 2015-03-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Method to improve the performance of a read ahead cache process in a storage array

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090168525A1 (en) * 2007-12-27 2009-07-02 Pliant Technology, Inc. Flash memory controller having reduced pinout

Also Published As

Publication number Publication date
KR20130089324A (ko) 2013-08-12
US20130205074A1 (en) 2013-08-08
US9262098B2 (en) 2016-02-16

Similar Documents

Publication Publication Date Title
KR102584018B1 (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
US20190073132A1 (en) Method and system for active persistent storage via a memory bus
US9244619B2 (en) Method of managing data storage device and data storage device
US10860494B2 (en) Flushing pages from solid-state storage device
US20140095555A1 (en) File management device and method for storage system
US9710191B1 (en) Rapid memory buffer write storage system and method
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US20190163623A1 (en) Memory system and operating method thereof
US9798498B2 (en) Method of operating memory controller and methods for devices having the same
US20180018095A1 (en) Method of operating storage device and method of operating data processing system including the device
CN108153682B (zh) 一种利用闪存内部并行性进行闪存转换层地址映射的方法
US20220083256A1 (en) Read Handling in Zoned Namespace Devices
CN111143234A (zh) 存储设备、包括这种存储设备的系统及其操作方法
CN109891397A (zh) 用于固态装置中的操作系统高速缓冲存储器的设备及方法
KR101876574B1 (ko) 데이터 입출력 컨트롤러 및 이를 포함하는 시스템
KR102365602B1 (ko) 지능형 임계치 검출을 통한 커맨드 최적화
CN105389134B (zh) 一种闪存接口控制方法及装置
CN110543433B (zh) 一种混合内存的数据迁移方法及装置
US11662932B2 (en) Tiered storage system with defragmentation based on weighted flash fragmentation factor
KR102330394B1 (ko) 컨트롤러의 작동 방법과 상기 컨트롤러를 포함하는 장치의 작동 방법
US9417805B2 (en) Exporting computational capabilities into a block-oriented disk memory
US11704249B2 (en) Frozen time cache for multi-host read operations
US9817767B2 (en) Semiconductor apparatus and operating method thereof
US11182329B2 (en) Data processing system and operating method thereof
US10579519B2 (en) Interleaved access of memory

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