KR20220047443A - 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러 - Google Patents

메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러 Download PDF

Info

Publication number
KR20220047443A
KR20220047443A KR1020200130278A KR20200130278A KR20220047443A KR 20220047443 A KR20220047443 A KR 20220047443A KR 1020200130278 A KR1020200130278 A KR 1020200130278A KR 20200130278 A KR20200130278 A KR 20200130278A KR 20220047443 A KR20220047443 A KR 20220047443A
Authority
KR
South Korea
Prior art keywords
upiu
data packet
memory
host
data
Prior art date
Application number
KR1020200130278A
Other languages
English (en)
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 KR1020200130278A priority Critical patent/KR20220047443A/ko
Priority to US17/234,981 priority patent/US20220113895A1/en
Priority to EP21180029.7A priority patent/EP3982243A1/en
Priority to CN202111143816.6A priority patent/CN114296632A/zh
Publication of KR20220047443A publication Critical patent/KR20220047443A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 일 실시예에 따른 메모리 시스템은, 메모리 장치, 데이터 전송 요청(Ready To Transfer, RTT) UPIU(UFS Protocol Information Unit) 및 응답(Response) UPIU 중 적어도 하나를 저장하며, 상기 메모리 장치와 별개로 구현되는 버퍼 메모리, 및 외부 호스트로부터 수신한 읽기 요청에 응답하여 상기 메모리 장치로부터 읽기 데이터를 획득하고, 상기 읽기 데이터를 포함하는 읽기 데이터 패킷을 상기 외부 호스트로 내보내는 메모리 컨트롤러를 포함하며, 상기 버퍼 메모리에 저장된 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나가 존재하면, 상기 메모리 컨트롤러는 상기 읽기 데이터 패킷의 전송이 완료되기 전에 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나를 상기 외부 호스트로 내보낸다.

Description

메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러{MEMORY SYSTEM, ELECTRONIC DEVICE INCLUDING THE SAME, AND MEMORY CONTROLLER}
본 발명은 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러에 관한 것이다.
비휘발성 메모리 장치는 전원이 차단된 상태에서도 데이터를 유지할 수 있으며, 여러 전자 기기에 저장 매체로 적용된다. 최근에는 eMMC(embedded Multi Media Card), UFS (Universal Flash Storage), SSD (Solid State Drive) 등과 같이 비휘발성 메모리 장치를 포함하는 다양한 종류의 메모리 시스템이 개발된 바 있다. 메모리 시스템은 전자 기기 등의 호스트와 연결되어 호스트로부터 전달되는 커맨드에 따라 데이터를 저장, 출력, 삭제할 수 있다. 메모리 시스템의 성능을 개선하기 위해서는, 호스트와 메모리 시스템 사이의 데이터 전송 성능을 개선할 필요가 있다.
본 발명의 기술적 사상이 이루고자 하는 과제 중 하나는, 메모리 시스템에서 호스트로의 전송 대기 중인 메시지 UPIU가 존재하면, 읽기 데이터 패킷을 복수의 서브 데이터 패킷들로 분할하고 메시지 UPIU를 서브 데이터 패킷들 사이에 호스트로 전송함으로써, 호스트와 메모리 시스템 사이의 데이터 전송 성능을 개선하고자 하는 데에 있다.
본 발명의 일 실시예에 따른 메모리 시스템은, 메모리 장치, 데이터 전송 요청(Ready To Transfer, RTT) UPIU(UFS Protocol Information Unit) 및 응답(Response) UPIU 중 적어도 하나를 저장하며, 상기 메모리 장치와 별개로 구현되는 버퍼 메모리, 및 외부 호스트로부터 수신한 읽기 요청에 응답하여 상기 메모리 장치로부터 읽기 데이터를 획득하고, 상기 읽기 데이터를 포함하는 읽기 데이터 패킷을 상기 외부 호스트로 내보내는 메모리 컨트롤러를 포함하며, 상기 버퍼 메모리에 저장된 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나가 존재하면, 상기 메모리 컨트롤러는 상기 읽기 데이터 패킷의 전송이 완료되기 전에 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나를 상기 외부 호스트로 내보낸다.
본 발명의 일 실시예에 따른 전자 기기는, 데이터를 저장하는 메모리 장치, 및 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 메모리 시스템, 및 상기 메모리 시스템과 제1 채널 및 제2 채널을 통해 연결되며, 상기 제1 채널을 통해 상기 메모리 시스템에서 읽기 데이터 패킷을 수신하고, 상기 제2 채널을 통해 상기 메모리 시스템에 쓰기 데이터 패킷을 전송하는 호스트를 포함하며, 상기 메모리 시스템은, 상기 읽기 데이터 패킷과 다른 정보를 포함하는 메시지 UPIU가 존재하면, 상기 읽기 데이터 패킷의 전송이 완료되기 전에 상기 메시지 UPIU를 상기 호스트에 전송하고, 상기 호스트는, 상기 제1 채널을 통해 상기 메모리 장치로부터 상기 읽기 데이터 패킷과 상기 메시지 UPIU를 수신하고, 상기 읽기 데이터 패킷을 수신하는 동안 상기 메시지 UPIU에 응답하여 상기 메모리 시스템을 제어한다.
본 발명의 일 실시예에 따른 메모리 컨트롤러는, 호스트와 연결되는 호스트 인터페이스, 적어도 하나의 메모리 장치와 연결되는 메모리 인터페이스, 및 상기 메모리 인터페이스를 통해 상기 메모리 장치로부터 읽기 데이터를 생성하여 생성한 읽기 데이터 패킷, 및 상기 읽기 데이터 패킷과 다른 정보를 포함하는 메시지 UPIU를 상기 호스트 인터페이스에 전달하는 컨트롤러를 포함하며, 상기 컨트롤러는, 상기 읽기 데이터 패킷의 헤더 정보를 상기 호스트 인터페이스로 전송할 때 상기 메시지 UPIU가 존재하면, 상기 읽기 데이터 패킷을 제1 서브 데이터 패킷과 제2 서브 데이터 패킷으로 분할하며, 상기 호스트 인터페이스는 상기 제1 서브 데이터 패킷, 상기 메시지 UPIU, 및 상기 제2 서브 데이터 패킷을 순차적으로 상기 호스트에 출력한다.
본 발명의 일 실시예에 따르면, 메모리 시스템은 호스트로 읽기 데이터 패킷을 출력하기 이전, 또는 출력하는 시점 등에 호스트로 전송해야 할 다른 메시지 UPIU가 존재하는지 판단하고, 메시지 UPIU가 존재하면 읽기 데이터 패킷의 전송을 완료하기 이전에 메시지 UPIU를 먼저 호스트로 전송할 수 있다. 따라서, 메시지 UPIU를 빠르게 수신한 호스트가 메모리 시스템으로 쓰기 데이터 패킷을 전송하는 등의 동작을 시작할 수 있으며, 호스트와 메모리 시스템 사이의 데이터 전송 성능을 개선할 수 있다.
본 발명의 다양하면서도 유익한 장점과 효과는 상술한 내용에 한정되지 않으며, 본 발명의 구체적인 실시 형태를 설명하는 과정에서 보다 쉽게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 포함하는 전자 기기를 간단하게 나타낸 도면이다.
도 2a 내지 도 2c는 본 발명의 일 실시예에 따른 메모리 장치를 간단하게 나타낸 도면들이다.
도 3은 본 발명의 일 실시예에 따른 메모리 시스템을 간단하게 나타낸 블록도이다.
도 4는 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템을 포함하는 전자 기기의 동작을 설명하기 위해 제공되는 도면이다.
도 6 내지 도 11은 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 도면들이다.
도 12 및 도 13은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위해 제공되는 도면들이다.
도 14 내지 도 19는 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 도면들이다.
도 20 및 도 21은 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 도면들이다.
도 22는 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 흐름도이다.
도 23은 본 발명의 일 실시예에 따른 메모리 시스템을 포함하는 전자 기기의 동작을 설명하기 위해 제공되는 도면이다.
도 24 내지 도 30은 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 도면들이다.
도 31 및 도 32는 본 발명의 일 실시예에 따른 메모리 시스템에 적용될 수 있는 메모리 장치를 설명하기 위해 제공되는 도면들이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 형태들을 다음과 같이 설명한다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 포함하는 전자 기기를 간단하게 나타낸 도면이다.
도 1을 참조하여 설명하는 메모리 시스템(1)은, JEDEC(Joint Electron Device Engineering Council)에서 발표하는 UFS(Universal Flash Storage) 표준(standard)을 따르는 시스템일 수 있으며, UFS 호스트(10), UFS 장치(20) 및 UFS 인터페이스(30) 등을 포함할 수 있다. 도 1을 참조하면, UFS 호스트(10)와 UFS 장치(20)는 UFS 인터페이스(30)를 통해 서로 연결될 수 있다. 일례로 UFS 호스트(10)는 애플리케이션 프로세서(AP), 중앙 처리 장치(CPU) 등의 일부로서 구현될 수 있다.
UFS 호스트(10)는 UFS 호스트 컨트롤러(11), 애플리케이션(12), UFS 드라이버(13), 호스트 메모리(14) 및 UIC(UFS interconnect) 레이어(15) 등을 포함할 수 있다. UFS 장치(20)는 UFS 장치 컨트롤러(21), 비휘발성 메모리(22), 스토리지 인터페이스(23), 장치 메모리(24), UIC 레이어(25) 및 레귤레이터(26) 등을 포함할 수 있다. 비휘발성 메모리 장치(20)는 복수의 메모리 유닛(22A)으로 구성될 수 있으며, 이와 같은 메모리 유닛(22A)은 2D 구조 혹은 3D 구조의 플래시 메모리를 포함할 수 있다. 다만 실시예들에 따라, 메모리 유닛(22A)은 PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. UFS 장치 컨트롤러(21)와 비휘발성 메모리(22)는 스토리지 인터페이스(23)를 통해 서로 연결될 수 있다. 스토리지 인터페이스(23)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
애플리케이션(12)은 UFS 장치(20)의 기능을 이용하기 위해 UFS 장치(20)와의 통신을 필요로 하는 프로그램을 의미할 수 있다. 애플리케이션(12)은 UFS 장치(20)에 대한 입출력을 위해 입출력 요청(input-output request, IOR)을 UFS 드라이버(13)로 전송할 수 있다. 입출력 요청(IOR)은 데이터의 읽기(read) 요청, 쓰기(write) 요청 및/또는 소거(discard) 요청 등을 의미할 수 있으나, 반드시 이에 한정되는 것은 아니다.
UFS 드라이버(13)는 UFS-HCI(host controller interface)를 통해 UFS 호스트 컨트롤러(11)를 관리할 수 있다. UFS 드라이버(13)는 애플리케이션(12)에 의해 생성된 입출력 요청을 UFS 표준에 의해 정의된 UFS 명령으로 변환하고, 변환된 UFS 명령을 UFS 호스트 컨트롤러(11)로 전달할 수 있다. 하나의 입출력 요청은 복수의 UFS 명령으로 변환될 수 있다. UFS 명령은 기본적으로 SCSI 표준에 의해 정의된 명령일 수 있지만, UFS 표준 전용 명령일 수도 있다.
UFS 호스트 컨트롤러(11)는 UFS 드라이버(13)에 의해 변환된 UFS 명령을 UIC 레이어(15)와 UFS 인터페이스(30)를 통해 UFS 장치(20)의 UIC 레이어(25)로 전송할 수 있다. 이 과정에서, UFS 호스트 컨트롤러(11)의 UFS 호스트 레지스터(11A)는 명령 큐(command queue, CQ)로서의 역할을 수행할 수 있다.
UFS 호스트(10) 측의 UIC 레이어(15)는 MIPI M-PHY(15A)와 MIPI UniPro(15B)를 포함할 수 있으며, UFS 장치(20) 측의 UIC 레이어(25) 또한 MIPI M-PHY(25A)와 MIPI UniPro(25B)을 포함할 수 있다.
UFS 인터페이스(30)는 기준 클럭(REF_CLK)을 전송하는 라인, UFS 장치(20)에 대한 하드웨어 리셋 신호(RESET_n)를 전송하는 라인, 차동 입력 신호 쌍(DIN_T, DIN_C)을 전송하는 한 쌍의 라인 및 차동 출력 신호 쌍(DOUT_T, DOUT_C)을 전송하는 한 쌍의 라인을 포함할 수 있다.
UFS 호스트(10)로부터 UFS 장치(20)로 제공되는 기준 클럭의 주파수 값은 19.2MHz, 26MHz, 38.4MHz 및 52MHz의 네 개의 값 중 하나일 수 있으나, 반드시 이에 한정되지는 않는다. UFS 호스트(10)는 동작 중에도, 다시 말해 UFS 호스트(10)와 UFS 장치(20) 사이에서 데이터 송수신이 수행되는 중에도 기준 클럭의 주파수 값을 변경할 수 있다. UFS 장치(20)는 위상 동기 루프(phase-locked loop, PLL) 등을 이용하여, UFS 호스트(10)로부터 제공받은 기준 클럭으로부터 다양한 주파수의 클럭을 생성할 수 있다. 또한, UFS 호스트(10)는 기준 클럭의 주파수 값을 통해 UFS 호스트(10)와 UFS 장치(20) 간의 데이터 레이트(data rate)의 값을 설정할 수도 있다. 즉, 상기 데이터 레이트의 값은 기준 클럭의 주파수 값에 의존하여 결정될 수 있다.
UFS 인터페이스(30)는 복수의 레인들(multiple lanes)을 지원할 수 있으며, 각 레인은 차동(differential) 쌍으로 구현될 수 있다. 예컨대, UFS 인터페이스는 하나 이상의 수신 레인(receive lane)과 하나 이상의 송신 레인(transmit lane)을 포함할 수 있다. 도 1에서, 차동 입력 신호 쌍(DIN_T, DIN_C)을 전송하는 한 쌍의 라인은 수신 레인을, 차동 출력 신호 쌍(DOUT_T, DOUT_C)을 전송하는 한 쌍의 라인은 송신 레인을 각각 구성할 수 있다. 도 1에서는 하나의 송신 레인과 하나의 수신 레인을 도시하였지만, 송신 레인과 수신 레인의 수는 변경될 수 있다.
수신 레인 및 송신 레인은 직렬 통신(serial communication) 방식으로 데이터를 전송할 수 있으며, 수신 레인과 송신 레인이 분리된 구조에 의해 UFS 호스트(10)와 UFS 장치(20) 간의 풀 듀플렉스(full-duplex) 방식의 통신이 가능하다. 다시 말해, UFS 장치(20)는 수신 레인을 통해 UFS 호스트(10)로부터 데이터를 수신받는 동안, 송신 레인을 통해 UFS 호스트(10)로 데이터를 송신할 수 있다. 또한, UFS 호스트(10)로부터 UFS 장치(20)로의 명령과 같은 제어 데이터와, UFS 호스트(10)가 UFS 장치(20)의 비휘발성 메모리(22)에 저장하고자 하거나 비휘발성 메모리(22)로부터 독출하고자 하는 사용자 데이터는 동일한 레인을 통해 전송될 수 있다. 이에 따라, UFS 호스트(10)와 UFS 장치(20) 간에는 한 쌍의 수신 레인과 한 쌍의 송신 레인 외에 데이터 전송을 위한 별도의 레인이 더 구비되지 않을 수 있다.
UFS 장치(20)의 UFS 장치 컨트롤러(21)는 UFS 장치(20)의 동작을 전반적으로 제어할 수 있다. UFS 장치 컨트롤러(21)는 논리적인 데이터 저장 단위인 LU(logical unit)(21A)를 통해 비휘발성 메모리(22)를 관리할 수 있다. LU(21A)의 개수는 8개일 수 있으나, 이에 한정되는 것은 아니다. UFS 장치 컨트롤러(21)는 플래시 변환 계층(flash translation layer, FTL)을 포함할 수 있으며, FTL의 어드레스 매핑(address mapping) 정보를 이용하여 UFS 호스트(10)로부터 전달된 논리적인 데이터 주소, 예컨대 LBA(logical block address)를 물리적인 데이터 주소로, 예컨대 PBA(physical block address)로 변환할 수 있다. UFS 시스템(1)에서 사용자 데이터(user data)의 저장을 위한 논리 블록(logical block)은 소정 범위의 크기를 가질 수 있다. 예컨대, 논리 블록의 최소 크기는 4KB로 설정될 수 있다.
UFS 호스트(10)로부터의 명령이 UIC 레이어(25)를 통해 UFS 장치(20)로 입력되면, UFS 장치 컨트롤러(21)는 입력된 명령에 따른 동작을 수행하고, 상기 동작이 완료되면 완료 응답을 UFS 호스트(10)로 전송할 수 있다.
일례로, UFS 호스트(10)가 UFS 장치(20)에 사용자 데이터를 저장하고자 할 경우, UFS 호스트(10)는 데이터 저장 명령을 UFS 장치(20)로 전송할 수 있다. 사용자 데이터를 수신할 준비가 되었다는 데이터 전송 요청을 UFS 장치(20)로부터 수신하면, UFS 호스트(10)는 사용자 데이터를 UFS 장치(20)로 전송할 수 있다. UFS 장치 컨트롤러(21)는 전송받은 사용자 데이터를 장치 메모리(24) 내에 임시로 저장하고, FTL의 어드레스 매핑 정보에 기초하여 장치 메모리(24)에 임시로 저장된 사용자 데이터를 비휘발성 메모리(22)의 선택된 위치에 저장할 수 있다.
또 다른 예로서, UFS 호스트(10)가 UFS 장치(20)에 저장된 사용자 데이터를 읽어오고자 하는 경우, UFS 호스트(10)는 데이터 읽기 명령을 UFS 장치(20)로 전송할 수 있다. 명령을 수신한 UFS 장치 컨트롤러(21)는 데이터 읽기 명령에 기초하여 비휘발성 메모리(22)로부터 사용자 데이터를 읽어오고, 읽어온 사용자 데이터를 장치 메모리(24) 내에 임시로 저장할 수 있다. 상기와 같은 읽기 과정에서, UFS 장치 컨트롤러(21)는 내장된 ECC(error correction code) 엔진 등을 이용하여, 독출된 사용자 데이터의 에러를 검출하고 정정할 수 있다. 일례로, ECC 엔진은 비휘발성 메모리(22)에 저장되는 쓰기 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 쓰기 데이터와 함께 비휘발성 메모리(22) 내에 저장될 수 있다. 비휘발성 메모리(22)로부터 데이터를 읽어오는 동작에서, ECC 엔진은 읽기 데이터와 함께 비휘발성 메모리(22)로부터 읽어온 패리티 비트들을 이용하여 읽기 데이터의 에러를 정정하고, 에러가 정정된 읽기 데이터를 출력할 수 있다.
UFS 장치 컨트롤러(21)는 장치 메모리(24) 내에 임시로 저장된 사용자 데이터를 UFS 호스트(10)로 전송할 수 있다. 아울러, UFS 장치 컨트롤러(21)는 AES(advanced encryption standard) 엔진을 더 포함할 수 있다. AES 엔진은, UFS 장치 컨트롤러(21)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다.
UFS 호스트(10)는 명령 큐로 기능할 수 있는 UFS 호스트 레지스터(11A)에 UFS 장치(20)로 송신될 명령들을 순서에 따라 저장하고, 상기 순서대로 UFS 장치(20)에 명령을 송신할 수 있다. 이 때, UFS 호스트(10)는 이전에 송신된 명령이 아직 UFS 장치(20)에 의해 처리 중인 경우에도, 즉 이전에 송신된 명령이 UFS 장치(20)에 의해 처리가 완료되었다는 통지를 받기 전에도 명령 큐에 대기 중인 다음 명령을 UFS 장치(20)로 송신할 수 있으며, 이에 따라 UFS 장치(20) 역시 이전에 송신된 명령을 처리하는 중에도 다음 명령을 UFS 호스트(10)로부터 수신할 수 있다. 이와 같은 명령 큐에 저장될 수 있는 명령의 최대 개수(queue depth)는 예컨대 32개일 수 있다. 또한, 명령 큐는 헤드 포인터(head point)와 테일 포인터(tail pointer)를 통해 큐에 저장된 명령 열의 시작과 끝을 각각 나타내는 원형 큐(circular queue) 타입으로 구현될 수 있다.
복수의 메모리 유닛(22A) 각각은 셀 영역과, 셀 영역의 동작을 제어하는 주변 회로 영역(미도시)을 포함할 수 있다. 셀 영역은 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 셀을 포함하며, 각각의 메모리 셀은 1비트의 정보를 저장하는 셀(single level cell, SLC)이거나, 또는 MLC(multi level cell), TLC(triple level cell), QLC(quadruple level cell) 등과 같이 2비트 이상의 정보를 저장하는 셀일 수도 있다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다.
UFS 장치(20)에는 전원 전압으로서 VCC, VCCQ, VCCQ2 등이 입력될 수 있다. VCC는 UFS 장치(20)를 위한 주 전원 전압으로서, 2.4~3.6V의 값을 가질 수 있다. VCCQ는 낮은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 UFS 장치 컨트롤러(21)를 위한 것이며. 1.14~1.26V의 값을 가질 수 있다. VCCQ2는 VCC보다는 낮지만 VCCQ보다는 높은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 MIPI M-PHY(25B)와 같은 입출력 인터페이스를 위한 것이며, 1.7~1.95V의 값을 가질 수 있다. 전원 전압들은 레귤레이터(26)를 거쳐 UFS 장치(20)의 각 구성 요소들에 공급될 수 있다. 레귤레이터(26)는 전술한 전원 전압들 중 서로 다른 것에 각각 연결되는 단위 레귤레이터의 집합으로 구현될 수 있다.
도 2a 내지 도 2c는 본 발명의 일 실시예에 따른 메모리 장치를 간단하게 나타낸 도면들이다.
도 2a 내지 2c는 UFS 카드(card)의 폼 팩터(form factor)를 설명하기 위해 제공되는 도면이다. 도 1을 참조하여 설명된 UFS 장치(20)가 UFS 카드(40) 형태로 구현된 경우, UFS 카드(40)의 외형은 도 2a 내지 2c에 도시된 바를 따를 수 있다.
도 2a는 UFS 카드(40)의 평면도(top view)를 예시적으로 보여주고 있다. 도 2a를 참조하면, UFS 카드(40)는 전체적으로 상어(shark) 형상의 디자인을 따를 수 있다. 도 2a와 관련하여, UFS 카드(40)는 예시적으로 아래의 표 1에 기재된 바와 같은 치수(dimension) 값을 가질 수 있다.
항목 치수 (mm)
T1 9.70
T2 15.00
T3 11.00
T4 9.70
T5 5.15
T6 0.25
T7 0.60
T8 0.75
T9 R0.80
도 2b는 UFS 카드(40)의 측면도(side view)를 예시적으로 보여주고 있다. 도 2b와 관련하여, UFS 카드(40)는 예시적으로 아래의 표 2에 기재된 바와 같은 치수(dimension) 값을 가질 수 있다.
항목 치수 (mm)
S1 0.74±0.06
S2 0.30
S3 0.52
S4 1.20
S5 1.05
S6 1.00
도 2c는 UFS 카드(40)의 저면도(bottom view)를 예시적으로 보여주고 있다. 도 2c를 참조하면, UFS 카드(40)의 저면에는 UFS 슬롯과의 전기적 접촉을 위한 복수 개의 핀(pin)이 형성될 수 있으며, 각 핀의 기능에 대해서는 후술한다. UFS 카드(40)의 상면과 저면 간의 대칭성에 의거하여, 도 2a 및 표 1을 참조하여 설명된 치수에 관한 정보 중 일부(예컨대, T1 내지 T5 및 T9)는 도 2c에 도시된 바와 같은 UFS 카드(40)의 저면도에도 적용될 수 있다.
UFS 카드(40)의 저면에는 UFS 호스트와의 전기적 연결을 위해 복수의 핀이형성될 수 있으며, 도 2c에 의하면 핀의 개수는 총 12개일 수 있다. 각 핀은 직사각형 형상을 가질 수 있으며, 핀에 대응되는 신호명(signal name)은 도 2c에 표시된 바와 같다. 각 핀에 대한 개략적인 정보에 대해서는 아래의 표 3을 참조할 수 있으며, 도 2a와 관련하여 전술한 설명을 아울러 참조할 수 있다.
번호 신호명 설명 치수 (mm)
1 Vss 그라운드(GND) 3.00 × 0.72±0.05
2 DIN_C 호스트로부터 UFS 카드(4000)로 입력되는 차동 입력 신호 (DIN_C는 negative node, DIN_T는 positive node) 1.50 × 0.72±0.05
3 DIN_T
4 Vss 1번과 같음 3.00 × 0.72±0.05
5 DOUT_C UFS 카드(4000)로부터 호스트로 출력되는 차동 출력 신호 (DOUT_C는 negative node, DOUT_T는 positive node) 1.50 × 0.72±0.05
6 DOUT_T
7 Vss 1번과 같음 3.00 × 0.72±0.05
8 REF_CLK 호스트로부터 UFS 카드(4000)로 제공되는 기준 클락 1.50 × 0.72±0.05
9 VCCQ2 주로 PHY 인터페이스 혹은 컨트롤러를 위해 제공되는, Vcc에 비해 상대적으로 낮은 값을 갖는 전원 전압 3.00 × 0.72±0.05
10 C/D(GND) 카드 검출(Card Detection)용 신호 1.50 × 0.72±0.05
11 Vss 1번과 같음 3.00 × 0.80±0.05
12 Vcc 주 전원 전압
도 3은 본 발명의 일 실시예에 따른 메모리 시스템을 간단하게 나타낸 블록도이다.
도 3을 참조하면, 메모리 시스템(2)은 메모리 장치(50) 및 메모리 컨트롤러(60)를 포함할 수 있다. 메모리 장치(50)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(51), 제어 로직 회로(52), 및 메모리 셀 어레이(53) 등을 포함할 수 있다.
메모리 인터페이스 회로(51)는 제1 핀(P11)을 통해 메모리 컨트롤러(60)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(51)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(60)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(51)는 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(60)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(51)는 제2 내지 제4 핀들(P12~P14)을 통해 메모리 컨트롤러(60)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(51)는 제7 핀(P17)을 통해 메모리 컨트롤러(60)로부터 데이터 신호(DQ)를 수신하거나, 메모리 컨트롤러(60)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호들에 대응하는 복수개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(51)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(51)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
예시적인 실시 예에서, 쓰기 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(51)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(51)는 제5 핀(P15)을 통해 메모리 컨트롤러(60)로부터 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(51)는 제6 핀(P16)을 통해 메모리 컨트롤러(60)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 컨트롤러(60)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(50)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(51)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(51)는 읽기 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(51)는 읽기 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(51)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 메모리 컨트롤러(60)로 전송될 수 있다.
메모리 장치(50)의 데이터(DATA) 입력 동작에서, 메모리 컨트롤러(60)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)가 수신되는 경우, 메모리 인터페이스 회로(51)는 메모리 컨트롤러(60)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(51)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(51)는 데이터 스트로브 신호(DQS)의 상승 엣지 및 하강 엣지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(51)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(60)로 전송할 수 있다. 메모리 인터페이스 회로(51)는 레디/비지 출력 신호(nR/B)를 통해 메모리 장치(50)의 상태 정보를 메모리 컨트롤러(60)로 전송할 수 있다. 메모리 장치(50)가 비지 상태인 경우(즉, 메모리 장치(50) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(51)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(60)로 전송할 수 있다. 메모리 장치(50)가 레디 상태인 경우(즉, 메모리 장치(50) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(51)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(60)로 전송할 수 있다. 예를 들어, 메모리 장치(50)가 페이지 독출 명령에 응답하여 메모리 셀 어레이(53)로부터 데이터(DATA)를 독출하는 동안, 메모리 인터페이스 회로(51)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(60)로 전송할 수 있다. 예를 들어, 메모리 장치(50)가 프로그램 명령에 응답하여 메모리 셀 어레이(53)에 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(51)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(60)로 전송할 수 있다.
제어 로직 회로(52)는 메모리 장치(50)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(52)는 메모리 인터페이스 회로(51)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(52)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 메모리 장치(50)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(52)는 메모리 셀 어레이(53)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(53)로부터 데이터(DATA)를 독출하기 위한 각종 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(53)는 제어 로직 회로(52)의 제어에 따라 메모리 인터페이스 회로(51)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(53)는 제어 로직 회로(52)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(51)로 출력할 수 있다.
메모리 셀 어레이(53)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
메모리 컨트롤러(60)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스 회로(61)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 메모리 장치(50)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.
컨트롤러 인터페이스 회로(61)는 제1 핀(P21)을 통해 메모리 장치(50)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(61)는 칩 인에이블 신호(nCE)를 통해 선택한 메모리 장치(50)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스 회로(61)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 메모리 장치(50)로 전송할 수 있다. 컨트롤러 인터페이스 회로(61)는 제7 핀(P27)을 통해 메모리 장치(50)로 데이터 신호(DQ)를 전송하거나, 메모리 장치(50)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스 회로(61)는 토글하는 쓰기 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(50)로 전송할 수 있다. 컨트롤러 인터페이스 회로(61)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 메모리 장치(50)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(50)로 전송할 수 있다.
컨트롤러 인터페이스 회로(61)는 제5 핀(P25)을 통해 메모리 장치(50)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(61)는 제6 핀(P26)을 통해 메모리 장치(50)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 장치(50)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(50)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(61)는 토글하는 읽기 인에이블 신호(nRE)를 생성하고, 읽기 인에이블 신호(nRE)를 메모리 장치(50)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(61)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 읽기 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 메모리 장치(50)에서 읽기 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스 회로(61)는 메모리 장치(50)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스 회로(61)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
메모리 장치(50)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스 회로(61)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(61)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(61)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 메모리 장치(50)로 전송할 수 있다.
컨트롤러 인터페이스 회로(61)는 제8 핀(P28)을 통해 메모리 장치(50)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(61)는 레디/비지 출력 신호(nR/B)에 기초하여 메모리 장치(50)의 상태 정보를 판별할 수 있다.
도 4는 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 흐름도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 메모리 시스템의 동작은, 읽기 데이터 패킷을 생성하는 것으로 시작될 수 있다(S10). 일례로 메모리 시스템은, 외부 호스트로부터 수신한 데이터 읽기 명령에 응답하여, 읽기 데이터 패킷을 생성할 수 있다. 앞서 도 3을 참조하여 설명한 바와 같이, 메모리 시스템은 메모리 컨트롤러와 메모리 장치를 포함할 수 있으며, 메모리 컨트롤러는 메모리 장치로부터 데이터를 읽어와서 읽기 데이터 패킷을 생성할 수 있다.
읽기 데이터 패킷이 생성되고 호스트로의 전송이 준비되면, 메모리 컨트롤러는 전송 대기 중인 메시지 UPIU(UFS Protocol Information Unit)이 존재하는지 여부를 판단할 수 있다(S11). 일례로, 메시지 UPIU는 외부 호스트에 데이터를 수신할 준비가 되었음을 알리는 데이터 전송 요청(Ready To Transfer, RTT) UPIU 및 외부 호스트에 특정 동작의 완료 등을 알리는 응답(Response) UPIU 중 적어도 하나를 포함할 수 있다. 메시지 UPIU는 메모리 컨트롤러 내부 또는 외부의 버퍼 메모리에 저장될 수 있다. 일 실시예에서, S11 단계의 판단은 읽기 데이터 패킷의 헤더(header)를 전송하는 시점 또는 그 이전에 실행될 수 있다.
S11 단계의 판단 결과 전송 대기 중인 메시지 UPIU가 존재하면, 메모리 컨트롤러는 S10 단계에서 생성한 읽기 데이터 패킷을 제1 서브 데이터 패킷과 제2 서브 데이터 패킷으로 분할할 수 있다(S12). 읽기 데이터 패킷을 제1 서브 데이터 패킷과 제2 서브 데이터 패킷으로 분할하는 블록은, 메모리 컨트롤러 내부에 하드웨어로 구현될 수 있다. 읽기 데이터 패킷은, 메모리 컨트롤러가 결정하는 크기로 생성될 수 있으며, 일례로 32KB 이하의 크기를 가질 수 있다. 전송 대기 중인 메시지 UPIU가 존재하면, 메모리 컨트롤러는 읽기 데이터 패킷을 분할하여 제1 서브 데이터 패킷과 제2 서브 데이터 패킷을 생성하며, 제1 서브 데이터 패킷과 제2 서브 데이터 패킷 각각은 읽기 데이터 패킷보다 작은 크기를 가질 수 있다. 분할이 완료되면, 메모리 컨트롤러는 인터페이스를 통해 외부 호스트로 제1 서브 데이터 패킷을 전송할 수 있다(S13).
제1 서브 데이터 패킷이 전송되면, 메모리 컨트롤러는 메시지 UPIU와 제2 서브 데이터 패킷을 순차적으로 전송할 수 있다(S14, S15). 따라서, 읽기 데이터 패킷의 전송이 완료된 후 메시지 UPIU가 전송되어야 하는 일반적인 방식에 비해, 메시지 UPIU가 외부 호스트에 전송되는 시점을 앞당길 수 있으며, 외부 호스트는 메시지 UPIU를 참조하여 메모리 장치를 제어할 수 있다. 한편, S11 단계의 판단 결과 메시지 UPIU가 존재하지 않으면, 메모리 컨트롤러는 별도의 추가 동작 없이 S10 단계에서 생성한 읽기 데이터 패킷을 외부 호스트로 전송할 수 있다(S16).
도 5는 본 발명의 일 실시예에 따른 메모리 시스템을 포함하는 전자 기기의 동작을 설명하기 위해 제공되는 도면이다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 메모리 시스템(110)은 메모리 컨트롤러(111)와 메모리 장치(112)를 포함할 수 있다. 메모리 시스템(110)은 호스트(120)와 함께 전자 기기(100)에 포함될 수 있다. 일례로 메모리 시스템(110)은 UFS 장치일 수 있으며, 전자 기기(100)는 UFS 장치와 연결되어 UFS 장치에 데이터를 저장하거나 UFS 장치에 저장된 데이터를 읽어와서 소정의 기능을 실행하는 장치일 수 있다.
전자 기기(100)의 동작은, 호스트(120)가 메모리 시스템(110)에 읽기 커맨드 UPIU를 전송하는 것으로 시작될 수 있다(S20). 호스트(120)는 메모리 시스템(110)에 저장된 데이터를 가져오기 위하여 읽기 커맨드 UPIU를 메모리 컨트롤러(111)에 전송하며, 메모리 컨트롤러(111)는 읽기 커맨드 UPIU에 응답하여 메모리 장치(112)에 저장된 읽기 데이터를 가져올 수 있다.
한편, 도 5에 도시한 일 실시예에서는, 호스트(120)가 읽기 커맨드 UPIU를 전송한 이후, 쓰기 커맨드 UPIU를 메모리 시스템(110)으로 전송할 수 있다(S21). 쓰기 커맨드 UPIU는 호스트(120)가 메모리 시스템(110)에 데이터를 기록하기 위하여 전송하는 UPIU이며, 메모리 컨트롤러(111)는 쓰기 커맨드 UPIU에 응답하여 데이터 응답 요청 UPIU를 생성할 수 있다(S22). 데이터 응답 요청 UPIU는 메모리 시스템(110)이 호스트(120)로부터 데이터를 수신할 준비가 되었음을 알리는 메시지 UPIU일 수 있으며, 데이터 응답 요청 UPIU를 수신한 호스트(120)는 메모리 시스템(110)에 쓰기 데이터를 전송할 수 있다.
메모리 컨트롤러(111)는 데이터 응답 요청 UPIU를 생성함과 동시에, S20 단계에서 수신한 읽기 커맨드 UPIU에 응답하여 메모리 장치(112)에 읽기 데이터 획득 요청을 전송할 수 있다(S23). 읽기 데이터 획득 요청에는 읽기 데이터가 저장된 어드레스 데이터가 포함될 수 있으며, 메모리 장치(112)는 읽기 데이터를 메모리 컨트롤러(111)에 전송할 수 있다(S24). 메모리 컨트롤러(111)는, 메모리 장치(112)로부터 획득한 읽기 데이터를 이용하여, UFS 프로토콜에 의해 전송될 수 있는 포맷인 읽기 데이터 패킷을 생성할 수 있다(S25).
도 5에 도시한 일 실시예에서는, 메모리 컨트롤러(111)가 읽기 데이터 패킷을 생성하고 그 전송을 시작하는 시점에, 메모리 컨트롤러(111)의 내부 또는 외부의 버퍼 메모리에 저장된 데이터 응답 요청 UPIU가 존재할 수 있다. 따라서 메모리 컨트롤러(111)는 읽기 데이터 패킷을 전송하기 전에, 읽기 데이터 패킷을 제1 서브 데이터 패킷과 제2 서브 데이터 패킷으로 분할할 수 있다(S26). 메모리 컨트롤러(111)는 제1 서브 데이터 패킷을 먼저 호스트(120)에 전송하고(S27), 이후 데이터 응답 요청 UPIU를 호스트(120)에 전송할 수 있다(S28).
데이터 응답 요청 UPIU를 수신한 호스트(120)는, 쓰기 데이터 패킷을 메모리 시스템(110)에 전송할 수 있다(S29). 쓰기 데이터 패킷은 호스트(120)가 메모리 시스템(110)에 저장하고자 하는 쓰기 데이터를 포함할 수 있다. 한편 메모리 시스템(110)은 쓰기 데이터 패킷을 호스트(120)로부터 수신하는 동시에, 제2 서브 데이터 패킷을 호스트(120)로 전송할 수 있다(S30). 다시 말해, S29 단계의 동작과 S30 단계의 동작이 호스트(120)와 메모리 시스템(110) 사이에서 동시에 실행될 수 있다.
앞서 도 1을 참조하여 설명한 바와 같이, 메모리 시스템(110)이 UFS 장치인 경우, 메모리 시스템(110)과 호스트(120) 사이에는 데이터를 주고받기 위한 두 개의 차동 신호 쌍들이 존재할 수 있다. 두 개의 차동 신호 쌍들 중에서 제1 차동 신호 쌍은 메모리 시스템(110)이 호스트(120)로 데이터를 전송하는 데에 이용되며, 제2 차동 신호 쌍은 호스트(120)가 메모리 시스템(110)으로 데이터를 전송하는 데에 이용될 수 있다.
호스트(120)가 메모리 시스템(110)으로 쓰기 데이터 패킷 등을 전송하기 위해서는, 메모리 시스템(110)으로부터 데이터를 수신할 준비가 되었음을 알리는 데이터 전송 요청 UPIU 등을 먼저 수신해야 할 수 있다. 데이터 전송 요청 UPIU는 읽기 데이터 패킷 등과 마찬가지로 제1 차동 신호 쌍을 통해 메모리 시스템(110)에서 호스트(120)로 전송될 수 있다. 따라서, 읽기 데이터 패킷이 전송되는 동안에는 호스트(120)가 데이터 전송 요청 UPIU를 수신할 수 없으며, 결과적으로 두 개의 차동 신호 쌍들이 존재함에도 불구하고 읽기 데이터 패킷과 쓰기 데이터 패킷이 동시에 전송되지 못할 수 있다.
본 발명의 일 실시예에서는, 전송 대기 중인 데이터 전송 요청 UPIU가 존재하는 경우, 메모리 컨트롤러(111)가 읽기 데이터 패킷을 제1 서브 데이터 패킷과 제2 서브 데이터 패킷으로 분할하며, 제1 서브 데이터 패킷을 전송한 후 데이터 전송 요청 UPIU를 제2 서브 데이터 패킷보다 먼저 전송할 수 있다. 데이터 전송 요청 UPIU를 호스트(120)가 상대적으로 이른 시점에 수신할 수 있으므로, 제1 차동 신호 쌍을 통해 제2 서브 데이터 패킷이 전송되는 동안, 제2 차동 신호 쌍을 통해 쓰기 데이터 패킷이 동시에 전송될 수 있다. 따라서, 호스트(120)와 메모리 시스템(110) 간의 데이터 전송 성능을 개선할 수 있다.
도 6 내지 도 11은 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 도면들이다.
먼저 도 6을 참조하면, 메모리 시스템(200)은 메모리 컨트롤러(210)와 메모리 장치(220)를 포함하며, 호스트(300)와 연동되어 동작할 수 있다. 메모리 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212), 컨트롤러(213), 및 버퍼 메모리(214, 215) 등을 포함할 수 있다. 메모리 컨트롤러(210)는 호스트 인터페이스(211)를 통해 호스트(300)와 데이터를 주고받으며, 메모리 인터페이스(212)를 통해 메모리 장치(220)와 데이터를 주고받을 수 있다. 버퍼 메모리(214, 215)는 메모리 시스템(200)의 동작에 필요한 메시지 UPIU를 저장할 수 있다.
호스트 인터페이스(211)는 제1 채널(CH1)과 제2 채널(CH2)을 통해 호스트(300)와 데이터를 주고받을 수 있다. 일례로, 제1 채널(CH1)은 호스트 인터페이스(211)가 호스트(300)로 데이터를 전송하기 위한 데이터 전송 채널일 수 있으며, 제2 채널(CH2)은 호스트 인터페이스(211)가 호스트(300)로부터 데이터를 수신하기 위한 데이터 수신 채널일 수 있다. 제1 채널(CH1)과 제2 채널(CH2)에서 데이터는 차동 신호로 전송될 수 있다.
호스트(300)로부터 읽기 커맨드 UPIU를 수신하면, 메모리 컨트롤러(210)는 메모리 장치(220)로부터 읽기 데이터(RD DATA)를 획득하여 읽기 데이터 패킷(DATA IN UPIU 0)을 생성할 수 있다. 일례로 메모리 컨트롤러(210)는 읽기 데이터(RD)를 이용하여 호스트(300)로 전송 가능한 포맷과 크기를 갖는 읽기 데이터 패킷(DATA IN UPIU 0)을 생성할 수 있다. 일례로 읽기 데이터 패킷(DATA IN UPIU 0)의 최소 크기는 4KB이고, 최대 크기는 32KB일 수 있다. 읽기 데이터 패킷(DATA IN UPIU 0)은 제1 채널(CH1)을 통해 호스트(300)로 전송될 수 있다.
호스트(300)는 메모리 컨트롤러(210)로 읽기 커맨드 UPIU를 전송하는 한편, 메모리 시스템(200)에 기록할 쓰기 데이터(WR DATA)를 준비할 수 있다. 쓰기 데이터(WR DATA)는 제2 채널(CH2)을 통해 호스트(300)로부터 메모리 시스템(200)으로 전송될 수 있다. 따라서, 호스트(300)는 제1 채널(CH1)로 읽기 데이터 패킷(DATA IN UPIU 0)을 수신하는 동안, 동시에 제2 채널(CH2)로 쓰기 데이터(WR DATA)를 메모리 시스템(200)에 전송할 수 있다. 다만, 호스트(300)는 메모리 시스템(200)으로부터 데이터 전송 요청 UPIU(RTT UPIU 0)을 수신한 이후에, 쓰기 데이터(WR DATA)를 메모리 시스템(200)으로 전송할 수 있다.
도 7을 참조하면, 버퍼 메모리(214, 215)에 메시지 UPIU가 존재하므로, 메모리 컨트롤러(210)가 읽기 데이터 패킷(DATA IN UPIU 0)을 서브 데이터 패킷들(SUB1-SUB3)로 분할할 수 있다. 서브 데이터 패킷들(SUB1-SUB3) 각각의 크기는, 읽기 데이터 패킷(DATA IN UPIU 0)의 크기보다 작을 수 있다.
다음으로 도 8을 참조하면, 메모리 컨트롤러(210)는 호스트 인터페이스(211)를 통해 제1 서브 데이터 패킷(SUB1)을 호스트(300)로 전송할 수 있다. 제1 서브 데이터 패킷(SUB1)이 전송되는 동안, 메모리 컨트롤러(210)는 제1 버퍼 메모리(214)에 저장된 제1 데이터 전송 요청 UPIU(RTT UPIU 0)를 인출하여 호스트 인터페이스(211)를 통한 전송을 준비할 수 있다. 따라서, 도 9에 도시한 바와 같이, 제1 서브 데이터 패킷(SUB1)이 호스트(300)로 전송된 이후 제2 서브 데이터 패킷(SUB2)이 아닌 제1 데이터 전송 요청 UPIU(RTT UPIU 0)가 호스트(300)로 전송될 수 있다.
호스트(300)가 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 수신하면, 호스트(300)는 메모리 시스템(200)이 쓰기 데이터(WR DATA)를 수신할 준비가 되었음을 인식하고, 쓰기 데이터 패킷(DATA OUT UPIU)을 생성하여 메모리 시스템(200)으로 전송할 수 있다. 도 10을 참조하면, 쓰기 데이터 패킷(DATA OUT UPIU)은 제2 채널(CH2)을 통해 호스트 인터페이스(211)로 전송될 수 있다. 따라서, 메모리 시스템(200)은 제2 서브 데이터 패킷(SUB2)을 제1 채널(CH1)로 내보내는 동안, 쓰기 데이터 패킷(DATA OUT UPIU)을 제2 채널(CH2)을 통해 수신할 수 있다.
도 11을 참조하면, 제2 채널(CH2)을 통해 쓰기 데이터 패킷(DATA OUT UPIU)을 수신하는 동안, 메모리 시스템(200)은 응답 UPIU(RESP UPIU 0 )을 제1 채널(CH1)을 통해 호스트(300)로 전송할 수 있다. 응답 UPIU(RESP UPIU 0)의 전송이 완료되면, 메모리 시스템(200)은 제3 서브 데이터 패킷(SUB3)과 제2 데이터 전송 요청 UPIU(RTT UPIU 1)을 순차적으로 호스트(300)에 전송할 수 있다. 다시 말해, 읽기 데이터(RD DATA)를 포함하는 패킷들이, 버퍼 메모리(214, 215)에 저장된 메시지 UPIU들과 교대로 제1 채널(CH1)을 통해 호스트(300)에 전송될 수 있다.
제1 데이터 전송 요청 UPIU(RTT UPIU 0)를 수신한 후 호스트(300)가 쓰기 데이터 패킷(DATA OUT UPIU)을 전송할 수 있으므로, 호스트(300)와 메모리 시스템(200) 사이에서 적어도 제2 서브 데이터 패킷(SUB2)은 쓰기 데이터 패킷(DATA OUT UPIU)과 동시에 전송될 수 있다. 다만, 쓰기 데이터 패킷(DATA OUT UPIU)의 크기에 따라, 응답 UPIU(RESP UPIU 0) 및 제3 서브 데이터 패킷(SUB3) 중 적어도 하나는 쓰기 데이터 패킷(DATA OUT UPIU)과 동시에 전송되지 않을 수도 있다.
도 12 및 도 13은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위해 제공되는 도면들이다.
도 12를 참조하면, 제1 버퍼 메모리와 제2 버퍼 메모리 모두에 메시지 UPIU들이 존재할 수 있다. 따라서 메모리 컨트롤러는 호스트로 출력하고자 하는 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 서브 데이터 패킷들(SUB1-SUB3)로 분할할 수 있다. 서브 데이터 패킷들(SUB1-SUB3) 각각의 크기는 제1 읽기 데이터 패킷(DATA IN UPIU 0)보다 작을 수 있다.
일례로, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 크기가, 소정의 기준 크기 이하이면, 메모리 컨트롤러는 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 분할하지 않을 수 있다. 이는, 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 분할하지 않아도 메시지 UPIU들의 전송이 많이 늦춰지지 않는다고 판단한 데에 따른 결정일 수 있다. 또는, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 크기가 메모리 시스템에서 호스트로 전송 가능한 읽기 데이터 패킷의 최소 크기이면, 메모리 컨트롤러는 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 분할하지 않을 수 있다. 이 경우, 메모리 컨트롤러는, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송을 완료한 후 메시지 UPIU들을 호스트로 전송할 수 있다. 일 실시예에서, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 크기는 4KB 이상 32KB 이하일 수 있으며, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 분할 여부를 결정하는 기준 크기는 4KB, 8KB, 12KB 등으로 다양하게 결정될 수 있다.
도 12에 도시한 일 실시예에서, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 크기는 최소 크기보다 클 수 있으며, 따라서 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송이 완료될 때까지 대기할 경우 메시지 UPIU들의 전송이 지나치게 늦어질 수 있다. 따라서, 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 서브 데이터 패킷들(SUB1-SUB3)로 분할하고, 서브 데이터 패킷들(SUB1-SUB3)과 메시지 UPIU들을 교대로 전송함으로써, 메시지 UPIU들의 전송 시점을 앞당길 수 있다.
예시로, 메모리 컨트롤러는 제1 서브 데이터 패킷(SUB1)의 전송을 완료한 후, 제2 서브 데이터 패킷(SUB2)이 아닌 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 호스트로 전송할 수 있다. 따라서 시작 시점(t0)과 제1 시점(t1) 각각에 버퍼 메모리들에 저장된 메시지 UPIU들의 개수가 서로 다를 수 있다. 제1 데이터 전송 요청 UPIU(RTT UPIU 0)의 전송이 완료된 제1 시점(t1)에, 메모리 컨트롤러는 제2 서브 데이터 패킷(SUB2)의 전송을 시작할 수 있다.
또한 호스트 역시, 제1 시점(t1)부터 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)을 메모리 컨트롤러로 전송할 수 있다. 앞서 설명한 바와 같이 호스트는 데이터 전송 요청 UPIU를 수신한 이후에 쓰기 데이터 패킷을 메모리 컨트롤러로 전송할 수 있다. 따라서, 제1 시점(t1) 이후, 제1 채널을 통해 제2 서브 데이터 패킷(SUB2)이 전송되며, 동시에 제2 채널을 통해 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)이 전송될 수 있다.
메모리 컨트롤러는, 제2 서브 데이터 패킷(SUB2)의 전송을 완료한 이후, 응답 UPIU(RESP UPIU 0)를 호스트에 전송할 수 있다. 따라서 제2 시점(t2) 이후, 제2 버퍼 메모리에는 메시지 UPIU가 존재하지 않을 수 있다. 응답 UPIU(RESP UPIU 0)의 전송이 완료되는 제2 시점(t2) 이후, 메모리 컨트롤러는 제1 채널을 통해 호스트로 제3 서브 데이터 패킷(SUB3)을 전송할 수 있다.
제3 서브 데이터 패킷(SUB3)의 전송이 완료되면, 메모리 컨트롤러는 버퍼 메모리에 남아 있는 메시지 UPIU인, 제2 데이터 전송 요청 UPIU(RTT UPIU 1)을 호스트로 전송할 수 있다. 제2 데이터 전송 요청 UPIU(RTT UPIU 1)을 수신한 호스트는, 제2 채널을 통해 제2 쓰기 데이터 패킷(DATA OUT UPIU 1)을 메모리 컨트롤러에 전송할 수 있다. 또한 메모리 컨트롤러는, 제2 채널을 통해 제2 쓰기 데이터 패킷(DATA OUT UPIU 1)을 수신한 동시에, 제1 채널을 통해 제2 읽기 데이터 패킷(DATA IN UPIU 1)을 호스트로 전송할 수 있다. 따라서, 제4 시점(t4)에 제1 채널과 제2 채널을 통한 호스트와 메모리 시스템 간의 데이터 전송이 종료되며, 데이터 전송에 필요한 시간은 제1 시간(T1)으로 정의될 수 있다.
도 12에 도시한 일 실시예에서, 읽기 데이터 패킷들과 쓰기 데이터 패킷들 각각의 크기는 32KB일 수 있다. 또한, 제1 서브 데이터 패킷(SUB1)과 제2 서브 데이터 패킷(SUB2) 각각의 크기는 4KB일 수 있으며, 제3 서브 데이터 패킷(SUB3)의 크기는 24KB일 수 있다. 이와 같은 조건에서, 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)의 전송이 종료되는 시점과, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송이 종료되는 시점은 실질적으로 같을 수 있다.
다만 이는 하나의 실시예에 불과하며, 데이터 패킷들의 크기는 다양하게 변형될 수 있다. 예시로서, 필요에 따라 제1 읽기 데이터 패킷(DATA IN UPIU 0)이 4개 이상의 서브 데이터 패킷들로 분할될 수도 있다.
또한 앞서 설명한 바와 같이, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 크기가 최소 크기인 4KB인 경우, 메모리 컨트롤러는 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송을 완료한 후 메시지 UPIU들을 전송할 수 있다. 이 경우, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송이 완료된 후 제1 데이터 응답 요청 UPIU(RTT UPIU 0)와 응답 UPIU(RESP UPIU 0)가 제1 채널을 통해 순차적으로 전송될 수 있다. 따라서, 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)은 응답 UPIU(RESP UPIU 0) 및/또는 제2 읽기 데이터 패킷(DATA IN UPIU 1)과 동시에 전송될 수 있다.
도 12에 도시한 일 실시예에서, 제1 서브 데이터 패킷(SUB1)과 제2 서브 데이터 패킷(SUB2) 각각의 크기는 4KB로 설정함으로써, 제1 데이터 전송 요청 UPIU(RTT UPIU 0)와 응답 UPIU(RESP UPIU 0)의 전송 시점을 최대한 앞당길 수 있다. 한편 도 12에 도시한 일 실시예에서는 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)의 크기가 32KB이고, 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)의 전송이 종료되기 이전까지는 메모리 컨트롤러가 호스트로 제2 데이터 전송 요청 UPIU(RTT UPIU 1)을 전송할 필요가 없을 수 있다. 따라서, 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 3개의 서브 데이터 패킷들(SUB1-SUB3)로 분할하여 데이터 전송 성능을 높일 수 있다.
도 13은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 비교예를 나타낸 도면이다. 도 13을 참조하면, 비교예에서는 메시지 UPIU들이 존재하는 경우에도 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송을 완료한 후 메시지 UPIU들이 전송될 수 있다. 따라서, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송이 완료된 후 호스트가 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 수신할 수 있으며, 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)은 제5 시점(t5)부터 전송이 시작될 수 있다. 제5 시점(t5)은 도 12에 도시한 일 실시예에서 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)의 전송 시작 시점인 제1 시점(t1)보다 늦을 수 있다.
메모리 컨트롤러는, 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)을 수신한 후 응답 UPIU(RESP UPIU 0)와 제2 데이터 전송 요청 UPIU(RTT UPIU 1)을 호스트에 전송할 수 있다. 제6 시점(t6) 및 제7 시점(t7)까지 제2 읽기 데이터 패킷(DATA IN UPIU 1)이 호스트에 전송되지 않으며, 제7 시점(t7)이후에 제2 읽기 데이터 패킷(DATA IN UPIU 1)과 제2 쓰기 데이터 패킷(DATA OUT UPIU 1)이 호스트와 메모리 시스템 사이에서 동시에 전송될 수 있다. 따라서, 제8 시점(t8)에 제1 채널과 제2 채널을 통한 호스트와 메모리 시스템 간의 데이터 전송이 종료되며, 데이터 전송에는 제1 시간(T1)보다 긴 제2 시간(T2)이 필요할 수 있다.
도 14 내지 도 19는 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 도면들이다.
도 14 내지 도 19에 도시한 일 실시예에서, 메모리 시스템(200)과 호스트(300)의 구성은 앞서 도 6 내지 도 11을 참조하여 설명한 일 실시예와 유사할 수 있다. 메모리 컨트롤러(210)는 호스트(300)로부터의 읽기 요청에 응답하여 메모리 장치(220)에서 읽기 데이터(RD DATA)를 획득할 수 있으며, 읽기 데이터(RD DATA)를 UFS 프로토콜에 따라 호스트(300)로 전송할 수 있는 포맷의 읽기 데이터 패킷(DATA IN UPIU 0)으로 변환할 수 있다. 한편, 버퍼 메모리들(214, 215)에는 제1 데이터 전송 요청 UPIU(RTT UPIU 0)가 저장되어 있는 것을 가정한다.
도 14를 참조하면, 호스트(300)는 쓰기 데이터(WR DATA)의 전송을 준비할 수 있다. 다만, 메모리 시스템(200)으로부터 제1 데이터 전송 요청 UPIU(RTT UPIU 0)를 먼저 수신한 이후, 호스트(300)가 UFS 장치인 메모리 시스템(200)으로 쓰기 데이터(WR DATA)를 전송할 수 있다.
버퍼 메모리들(214, 215)에 하나의 메시지 UPIU만이 저장되어 있으므로, 메모리 컨트롤러(210)는 도 15에 도시한 바와 같이 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 제1 서브 데이터 패킷(SUB1)과 제2 서브 데이터 패킷(SUB2)으로 분할할 수 있다. 제1 서브 데이터 패킷(SUB1)과 제2 서브 데이터 패킷(SUB2) 각각의 크기는 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 크기보다 작고, 제1 서브 데이터 패킷(SUB1)과 제2 서브 데이터 패킷(SUB2) 각각의 크기는 서로 같거나 다를 수 있다. 예시로서, 제1 데이터 전송 요청 UPIU(RTT UPIU 0)의 전송 시점을 최대한 앞당기기 위해, 제1 서브 데이터 패킷(SUB1)이 제2 서브 데이터 패킷(SUB2)보다 작은 크기를 가질 수 있다.
도 16을 참조하면, 메모리 컨트롤러(210)는 호스트 인터페이스(211)를 통해 제1 채널(CH1)로 제1 서브 데이터 패킷(SUB1)을 먼저 전송할 수 있다. 제1 서브 데이터 패킷(SUB1)이 전송되면, 도 17 및 도 18에 도시한 바와 같이 제1 채널(CH1)을 통해 제1 데이터 전송 요청 UPIU(RTT UPIU 0)과 제2 서브 데이터 패킷(SUB2)을 순차적으로 전송할 수 있다.
호스트(300)는 메모리 시스템(200)으로부터 제1 채널(CH1)을 통해 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 수신한 이후, 쓰기 데이터(WR DATA)를 메모리 시스템(200)에 전송할 수 있다. 쓰기 데이터(WR DATA)는 쓰기 데이터 패킷(DATA OUT UPIU)으로 변환되어 제2 채널(CH2)을 통해 메모리 시스템(200)으로 전송될 수 있다. 따라서, 도 18에 도시한 바와 같이 쓰기 데이터 패킷(DATA OUT UPIU)이 제2 서브 데이터 패킷(SUB2)과 동시에 호스트(300)와 메모리 시스템(200) 사이에서 전송될 수 있다.
다음으로 도 19를 참조하면, 시작 시점(t0)에 제1 버퍼 메모리에 메시지 UPIU가 존재하는 것을 메모리 컨트롤러가 감지함에 따라, 제1 읽기 데이터 패킷(DATA IN UPIU 0)이 서브 데이터 패킷들(SUB1, SUB2)로 분할될 수 있다. 제1 채널을 통해 제1 서브 데이터 패킷(SUB1)이 전송되면, 메모리 컨트롤러는 제1 버퍼 메모리에 저장된 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 먼저 전송하고, 제2 서브 데이터 패킷(SUB2)을 나중에 전송할 수 있다.
일례로, 제1 데이터 전송 요청 UPIU(RTT UPUI 0)의 전송이 완료되는 제1 시점(t1)이 앞당겨질수록, 호스트가 쓰기 데이터 패킷(DATA OUT UPIU 0)을 메모리 시스템으로 전송하는 동작이 이른 시점에 시작 및 완료될 수 있다. 따라서 본 발명의 일 실시예에서는, 제1 서브 데이터 패킷(SUB1)의 크기가 제2 서브 데이터 패킷(SUB2)의 크기보다 작을 수 있으며, 일례로 제1 서브 데이터 패킷(SUB1)의 크기는 메모리 시스템이 호스트로 전송하는 읽기 데이터 패킷이 가질 수 있는 최소 크기일 수 있다.
제1 채널과 제2 채널은 서로 독립적으로 운영되므로, 메모리 시스템은 제2 서브 데이터 패킷(SUB2)을 출력하는 동시에 쓰기 데이터 패킷(DATA OUT UPIU 0)을 수신할 수 있다. 쓰기 데이터 패킷(DATA OUT UPIU 0)의 크기에 따라, 쓰기 데이터 패킷(DATA OUT UPIU 0)을 수신하는 동작은, 제2 읽기 데이터 패킷(DATA IN UPIU 1)을 수신하는 동작과 동시에 실행될 수도 있다.
도 20 및 도 21은 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 도면들이다.
도 20 및 도 21에 도시한 일 실시예에서, 메모리 시스템(200)과 호스트(300)의 구성은 앞서 도 6 내지 도 11을 참조하여 설명한 일 실시예와 유사할 수 있다. 메모리 컨트롤러(210)는 호스트(300)로부터의 읽기 요청에 응답하여 메모리 장치(220)에서 읽기 데이터(RD DATA)를 획득할 수 있으며, 읽기 데이터(RD DATA)를 UFS 프로토콜에 따라 호스트(300)로 전송할 수 있는 포맷의 읽기 데이터 패킷(DATA IN UPIU 0)으로 변환할 수 있다. 한편, 버퍼 메모리들(214, 215)에는 메시지 UPIU가 저장되어 있지 않을 수 있다.
버퍼 메모리들(214, 215)에 저장된 메시지 UPIU가 존재하지 않으므로, 메모리 컨트롤러(210)는 제1 채널(CH1)을 통해 읽기 데이터 패킷(DATA IN UPIU 0)을 바로 호스트(300)에 출력할 수 있다. 이때, 읽기 데이터(RD DATA)의 크기, 및 메모리 컨트롤러(210)가 결정하는 읽기 데이터 패킷(DATA IN UPIU 0)의 크기에 따라, 둘 이상의 읽기 데이터 패킷들이 호스트(300)로 전송될 수도 있다.
도 22는 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 흐름도이다.
도 22를 참조하면, 본 발명의 일 실시예에 따른 메모리 시스템의 동작은, 읽기 데이터 패킷을 생성하는 것으로 시작될 수 있다(S40). 일례로 메모리 시스템은 메모리 컨트롤러와 메모리 장치를 포함할 수 있으며, 메모리 컨트롤러는 외부 호스트로부터의 데이터 읽기 명령에 응답하여, 메모리 장치로부터 데이터를 읽어오고 읽기 데이터 패킷을 생성할 수 있다. 메모리 컨트롤러는 호스트 인터페이스, 메모리 인터페이스, 버퍼 메모리, 컨트롤러 등을 포함할 수 있다.
읽기 데이터 패킷이 생성되고 호스트로의 전송이 준비되면, 메모리 컨트롤러는 전송 대기 중인 메시지 UPIU(UFS Protocol Information Unit)이 존재하는지 여부를 판단할 수 있다(S41). 일례로, 메시지 UPIU는 외부 호스트에 데이터를 수신할 준비가 되었음을 알리는 데이터 전송 요청(Ready To Transfer, RTT) UPIU 및 외부 호스트에 특정 동작의 완료 등을 알리는 응답(Response) UPIU 중 적어도 하나를 포함할 수 있다. 일 실시예에서, S41 단계의 판단은 읽기 데이터 패킷의 헤더(header)를 전송하는 시점 또는 그 이전에 실행될 수 있다.
S41 단계의 판단 결과 전송 대기 중인 메시지 UPIU가 존재하면, 메모리 컨트롤러는 S40 단계에서 생성한 읽기 데이터 패킷을 제1 트래픽 클래스(traffic class)로 호스트 인터페이스에 전송할 수 있다(S42). 또한 메모리 컨트롤러는, 메시지 UPIU를 제2 트래픽 클래스로 호스트 인터페이스에 전송할 수 있다(S43). 제2 트래픽 클래스는 제1 트래픽 클래스보다 높은 우선 순위를 가질 수 있으며, 제1 트래픽 클래스와 다른 포트에 정의될 수 있다. 일례로, 제1 트래픽 클래스와 제2 트래픽 클래스 각각은, 호스트 인터페이스에 포함되는 MIPI UniPro에서 서로 다른 포트를 이용할 수 있다.
따라서 호스트 인터페이스는, 호스트로 읽기 데이터 패킷을 전송하는 도중에, 제2 트래픽 클래스로 수신한 메시지 UPIU를 호스트에 전송할 수 있다(S44). 읽기 데이터 패킷과 메시지 UPIU는 하나의 채널을 통해 호스트로 전송되며, 따라서 읽기 데이터 패킷의 전송이 완료되기 이전에 메시지 UPIU가 호스트로 전송될 수 있다. 호스트는 메시지 UPIU를 수신한 이후, 상기 읽기 데이터 패킷의 수신이 완료되기 이전에 메시지 UPIU에 응답하여 메모리 시스템을 제어할 수 있다. 한편, S41 단계의 판단 결과 메시지 UPIU가 존재하지 않으면, 메모리 컨트롤러는 별도의 추가 동작 없이 S40 단계에서 생성한 읽기 데이터 패킷을 외부 호스트로 전송할 수 있다(S45).
도 23은 본 발명의 일 실시예에 따른 메모리 시스템을 포함하는 전자 기기의 동작을 설명하기 위해 제공되는 도면이다.
도 23을 참조하면, 본 발명의 일 실시예에 따른 메모리 시스템(410)은 메모리 컨트롤러(411)와 메모리 장치(412)를 포함할 수 있다. 메모리 시스템(410)은 호스트(420)와 함께 전자 기기(400)에 포함될 수 있다. 일례로 메모리 시스템(410)은 UFS 장치일 수 있으며, 전자 기기(400)는 UFS 장치와 연결되어 UFS 장치에 데이터를 저장하거나 UFS 장치에 저장된 데이터를 읽어와서 소정의 기능을 실행하는 장치일 수 있다.
전자 기기(400)의 동작은, 호스트(420)가 메모리 시스템(410)에 읽기 커맨드 UPIU를 전송하는 것으로 시작될 수 있다(S50). 호스트(420)는 메모리 시스템(410)에 저장된 데이터를 가져오기 위하여 읽기 커맨드 UPIU를 메모리 컨트롤러(411)에 전송하며, 메모리 컨트롤러(411)는 읽기 커맨드 UPIU에 응답하여 메모리 장치(412)에 저장된 읽기 데이터를 가져올 수 있다.
일례로, 메모리 컨트롤러(411)는 메모리 장치(412)로 읽기 데이터 획득 요청을 전송할 수 있다(S51). 읽기 데이터 획득 요청에는 메모리 컨트롤러(411)가 메모리 장치(412)로부터 가져오고자 하는 데이터가 저장된 주소를 나타내는 어드레스 데이터가 포함될 수 있다. 메모리 장치(412)는 읽기 데이터 획득 요청에 포함된 어드레스 데이터를 참조하여, 읽기 데이터를 메모리 컨트롤러(411)에 전송할 수 있다.
한편 호스트(420)는, 쓰기 커맨드 UPIU를 메모리 시스템(410)으로 전송할 수 있다(S53). 실시예에 따라, S50 내지 S53 단계들의 실행 순서는 변경될 수 있다. 예를 들어, 쓰기 커맨드 UPIU가 읽기 커맨드 UPIU보다 먼저 전송되거나, 또는 메모리 컨트롤러(411)가 메모리 장치(412)로부터 읽기 데이터를 획득하는 도중에 쓰기 커맨드 UPIU를 호스트(420)로부터 수신할 수도 있다. 쓰기 커맨드 UPIU를 수신한 메모리 컨트롤러(411)는, 호스트(420)에게 데이터를 수신할 준비가 되었음을 알리기 위한 데이터 응답 요청 UPIU를 생성할 수 있다(S54). 또한 메모리 컨트롤러(411)는 메모리 장치(412)로부터 읽어온 읽기 데이터를 이용하여 읽기 데이터 패킷을 생성할 수 있다(S55). 읽기 데이터 패킷의 크기는, 메모리 컨트롤러(411)가 결정할 수 있다.
메모리 컨트롤러(411)는, S54 단계에서 생성된 데이터 응답 요청 UPIU의 전송 시점을 앞당기기 위해, 읽기 데이터 패킷을 제1 트래픽 클래스에 할당하고(S56), 데이터 응답 요청 UPIU는 제1 트래픽 클래스보다 높은 우선 순위를 갖는 제2 트래픽 클래스에 할당할 수 있다(S57). 메모리 컨트롤러(411)의 호스트 인터페이스는, 먼저 수신한 읽기 데이터 패킷을 호스트(420)에 전송하며(S58), 이후 상대적으로 높은 우선 순위가 할당된 데이터 응답 요청 UPIU를 수신할 수 있다. 따라서, 읽기 데이터 패킷의 전송이 완료되기 이전에, 데이터 응답 요청 UPIU가 우선적으로 호스트(420)에 전송될 수 있다(S59). 데이터 응답 요청 UPIU를 수신한 호스트(420)는, 쓰기 데이터 패킷을 메모리 시스템(410)에 전송할 수 있다(S60). 메모리 컨트롤러(411)는, 데이터 응답 요청 UPIU의 전송이 완료된 후, 읽기 데이터 패킷의 나머지를 호스트(420)에 전송할 수 있다(S61). 따라서, 본 발명의 일 실시예에서는, 호스트(420)가 데이터 응답 요청 UPIU를 수신하고 읽기 데이터 패킷의 전송이 완료되기 이전에, 호스트(420)가 쓰기 데이터 패킷을 메모리 시스템(410)에 전송할 수 있으며, 메모리 시스템(410)과 호스트(420) 사이의 데이터 전송 성능을 높일 수 있다.
도 24 내지 도 30은 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위해 제공되는 도면들이다.
먼저 도 24를 참조하면, 메모리 시스템(500)은 메모리 컨트롤러(510)와 메모리 장치(520)를 포함하며, 호스트(600)와 연동되어 동작할 수 있다. 메모리 컨트롤러(510)는 호스트 인터페이스(511), 메모리 인터페이스(512), 컨트롤러(513), 및 버퍼 메모리(514, 515) 등을 포함할 수 있다. 메모리 컨트롤러(510)는 호스트 인터페이스(511)를 통해 호스트(600)와 데이터를 주고받으며, 메모리 인터페이스(512)를 통해 메모리 장치(520)와 데이터를 주고받을 수 있다. 메모리 컨트롤러(510)는 메모리 시스템(500)의 동작에 필요한 메시지 UPIU를 버퍼 메모리(514, 515)에 저장할 수 있다.
호스트 인터페이스(511)는 제1 채널(CH1)과 제2 채널(CH2)을 통해 호스트(600)와 데이터를 주고받을 수 있다. 제1 채널(CH1)과 제2 채널(CH2)을 별도로 구비함으로써, 메모리 시스템(500)은 호스트(600)로부터 데이터를 수신함과 동시에 호스트(600)로 데이터를 전송할 수 있다.
호스트 인터페이스(511)와 컨트롤러(513)는 복수의 트래픽 클래스들을 통해 데이터를 주고받을 수 있다. 일례로, 호스트 인터페이스(511)와 컨트롤러(513)는 제1 트래픽 클래스, 및 제1 트래픽 클래스보다 높은 우선 순위를 갖는 제2 트래픽 클래스를 통해 데이터를 주고받을 수 있다. 호스트 인터페이스(511)는, 제1 트래픽 클래스로 수신한 데이터와 제2 트래픽 클래스로 수신한 데이터를 구분하기 위해, 호스트(600)로 출력하는 데이터에 트래픽 클래스 정보를 기록할 수 있다. 호스트 인터페이스(511)는 제1 트래픽 클래스로 수신한 데이터를 호스트(600)로 출력하는 동안 제2 트래픽 클래스로 데이터를 수신하면, 제2 트래픽 클래스로 수신한 데이터를 먼저 호스트(600)로 내보낼 수 있다. 일례로 트래픽 클래스 정보는 플래그 형태로 기록될 수 있다.
호스트(600)는 제1 트래픽 클래스가 할당된 데이터와 제2 트래픽 클래스가 할당된 데이터를 분리하여 수신할 수 있다. 일례로, 하나의 제1 채널(CH1)을 통해 수신한 데이터를 참조하여, 호스트(600)는 제1 채널(CH1)로 전송되는 데이터에서 제1 트래픽 클래스로 할당된 데이터와 제2 트래픽 클래스로 할당된 데이터를 각각 획득할 수 있다.
호스트(600)로부터 읽기 커맨드 UPIU를 수신하면, 메모리 컨트롤러(510)는 메모리 인터페이스(512)를 통해 메모리 장치(520)로부터 읽기 데이터(RD DATA)를 획득하고, 읽기 데이터 패킷(DATA IN UPIU 0)을 생성할 수 있다. 읽기 데이터 패킷(DATA IN UPIU 0)에는 제1 트래픽 클래스(TC0)가 부여될 수 있다. 일례로 읽기 데이터 패킷(DATA IN UPIU 0)의 최소 크기는 4KB이고, 최대 크기는 32KB일 수 있다.
제1 채널(CH1)과 제2 채널(CH2)에 의해, 호스트(600)와 메모리 시스템(500)이 동시에 신호를 주고받을 수 있으므로, 호스트(600)는 메모리 시스템(500)에 기록할 쓰기 데이터(WR DATA)를 준비할 수 있다. 쓰기 데이터(WR DATA)는 제2 채널(CH2)을 통해 메모리 시스템(500)으로 전송될 수 있다.
호스트(600)는 메모리 시스템(500)으로부터 제1 데이터 전송 요청 UPIU(RTT UPIU 0)를 수신한 이후에 쓰기 데이터(WR DATA)를 메모리 시스템(500)으로 전송할 수 있다. 제1 데이터 전송 요청 UPIU(RTT UPIU 0)를 포함하는 메시지 UPIU들은, 제1 채널(CH1)을 통해 메모리 시스템(500)으로부터 호스트(600)로 전송될 수 있다. 따라서, 읽기 데이터 패킷(DATA IN UPIU 0)이 전송되는 동안에는, 메시지 UPIU들을 호스트(600)가 수신할 수 없으며, 쓰기 데이터(WR DATA)의 전송 등과 같이 제2 채널(CH2)을 이용하는 동작이 지연될 수 있다.
본 발명의 일 실시예에서는 상기와 같은 문제를 해결하기 위해, 메시지 UPIU들이 존재하면 메모리 컨트롤러(510)가 읽기 데이터 패킷(DATA IN UPIU 0)의 전송을 완료하기 전에 메시지 UPIU들 중 적어도 하나를 먼저 호스트(600)에 전송할 수 있다. 도 24 내지 도 30을 참조하여 설명하는 일 실시예에서는, 메시지 UPIU들에 읽기 데이터 패킷(DATA IN UPIU 0)보다 높은 우선 순위를 갖는 트래픽 클래스를 할당함으로써, 호스트 인터페이스(511)가 메시지 UPIU들 중 적어도 하나를 먼저 전송 완료하도록 제어할 수 있다. 도 25를 참조하면, 컨트롤러(513)는 읽기 데이터 패킷(DATA IN UPIU 0)을 제1 트래픽 클래스(TC0)에 할당하고, 제1 버퍼 메모리(514)로부터 인출한 메시지 UPIU인 제1 데이터 전송 응답 UPIU(RTT UPIU 0)를 제2 트래픽 클래스(TC1)에 할당할 수 있다. 제2 트래픽 클래스(TC1)는 제1 트래픽 클래스(TC0)보다 높은 우선 순위를 가질 수 있으며, 제1 트래픽 클래스(TC0)와 제2 트래픽 클래스(TC1)에 할당된 데이터들은 서로 다른 포트를 통해 호스트 인터페이스(511)에 입력될 수 있다.
다음으로 도 26을 참조하면, 메모리 컨트롤러(510)는 읽기 데이터 패킷(DATA IN UPIU 0)과 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 호스트 인터페이스(511)에 전달할 수 있다. 호스트 인터페이스(511)는 읽기 데이터 패킷(DATA IN UPIU 0)과 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 수신한 순서에 따라 제1 채널(CH1)을 통해 호스트(600)로 내보낼 수 있다. 읽기 데이터 패킷(DATA IN UPIU 0)을 제1 데이터 전송 요청 UPIU(RTT UPIU 0)보다 먼저 수신하면, 도 27에 도시한 바와 같이 읽기 데이터 패킷(DATA IN UPIU 0)의 전송이 완료되기 이전이라도, 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 호스트(600)로 내보낼 수 있다.
도 28을 참조하면, 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 수신한 호스트(600)는 메모리 시스템(500)이 데이터를 수신할 준비가 되었다고 판단하고, 쓰기 데이터 패킷(DATA OUT UPIU)을 생성하여 메모리 시스템(500)에 전송할 수 있다. 쓰기 데이터 패킷(DATA OUT UPIU)은 제2 채널(CH2)을 통해 메모리 시스템(500)에 전송될 수 있다. 따라서, 제1 채널(CH1)을 통해 읽기 데이터 패킷(DATA IN UPIU 0)이 전송되는 동안, 제2 채널(CH2)을 통해 쓰기 데이터 패킷(DATA OUT UPIU)이 동시에 전송될 수 있다. 또한 컨트롤러(513)는 제2 버퍼 메모리(515)에 저장된 응답 UPIU(RESP UPIU)를 획득하여 제2 트래픽 클래스(TC1)로 호스트 인터페이스(511)에 전달할 수 있다.
도 29를 참조하면, 호스트 인터페이스(511)는 읽기 데이터 패킷(DATA IN UPIU 0)의 전송은 완료하기 전에 컨트롤러(513)로부터 제2 트래픽 클래스(TC1)가 할당된 응답 UPIU(RESP UPIU)를 수신할 수 있다. 따라서, 호스트 인터페이스(511)는 읽기 데이터 패킷(DATA IN UPIU 0)의 전송을 완료하기에 앞서, 응답 UPIU(RESP UPIU)를 호스트(600)에 먼저 전송할 수 있다.
도 30은 제1 채널과 제2 채널 각각을 통한 UPIU의 전송 순서를 설명하기 위한 도면일 수 있다. 도 30을 참조하면, 제1 버퍼 메모리와 제2 버퍼 메모리 모두에 메시지 UPIU들이 존재할 수 있다. 메모리 컨트롤러는 읽기 데이터 패킷들을 제1 트래픽 클래스(TC0)에 할당하고, 메시지 UPIU들은 제1 트래픽 클래스(TC0)보다 높은 우선 순위를 갖는 제2 트래픽 클래스(TC1)에 할당할 수 있다.
도 30에 도시한 일 실시예에서, 호스트 인터페이스는 시작 시점(t0)에 제1 트래픽 클래스(TC0)를 통해 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 수신하고, 제1 채널을 통해 호스트로 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 출력하기 시작할 수 있다. 이후, 메모리 컨트롤러가 제1 데이터 전송 요청 UPIU(RTT UPIU 0)에 제2 트래픽 클래스(TC1)를 할당하면, 호스트 인터페이스는 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송을 완료하기 이전에 제1 데이터 전송 요청 UPIU(RTT UPIU 0)를 호스트로 먼저 내보낼 수 있다. 따라서, 제1 시점(t1)에 호스트가 제1 데이터 전송 요청 UPIU(RTT UPIU 0)을 수신하고, 제2 채널을 통해 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)을 메모리 시스템에 전송할 수 있다.
한편, 제1 시점(t1) 이후 호스트 인터페이스가 제1 읽기 데이터 패킷(DATA IN UPIU 0)을 출력하는 동안 메모리 컨트롤러가 응답 요청 UPIU(RESP UPIU 0)에 제2 트래픽 클래스(TC1)를 할당하면, 호스트 인터페이스는 응답 요청 UPIU(RESP UPIU 0)를 먼저 호스트로 내보낼 수 있다. 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송은 제2 시점(t2) 이후 재개될 수 있다.
메모리 컨트롤러는, 제2 데이터 전송 요청 UPIU(RTT UPIU 1) 역시 제2 트래픽 클래스(TC1)에 할당할 수 있다. 도 30에 도시한 일 실시예에서는, 호스트 인터페이스가 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송을 완료한 이후, 제2 데이터 전송 요청 UPIU(RTT UPIU 1)이 제2 트래픽 클래스(TC1) 포트를 통해 호스트 인터페이스에 전달될 수 있다. 호스트 인터페이스는, 제2 읽기 데이터 패킷(DATA IN UPIU 1)을 먼저 전달받았음에도 불구하고, 더 높은 우선 순위의 포트를 통해 수신한 제2 데이터 전송 요청 UPIU(RTT UPIU 1)을 호스트에 먼저 출력할 수 있다. 제2 데이터 전송 요청 UPIU(RTT UPIU 1)이 호스트 인터페이스로 전달된 제3 시점(t3) 이후에는 버퍼 메모리들에 메시지 UPIU들이 존재하지 않을 수 있다.
도 30에 도시한 일 실시예에서는, 제1 채널을 통해 제1 읽기 데이터 패킷(DATA IN UPIU 0)이 전송되는 도중에 호스트 인터페이스가 제2 트래픽 클래스(TC1)가 할당된 메시지 UPIU를 수신하면, 메시지 UPIU가 우선적으로 제1 채널을 통해 호스트로 전송될 수 있다. 일례로 도 30에 도시한 바와 같이, 제1 읽기 데이터 패킷(DATA IN UPIU 0)의 전송이 완료되기 전에 제1 데이터 전송 요청 UPIU(RTT UPIU 0)과 같은 메시지 UPIU의 전송이 먼저 완료될 수 있다. 따라서, 제1 채널을 통해 제1 읽기 데이터 패킷(DATA IN UPIU 0)이 전송되는 동안, 동시에 제2 채널을 통해 제1 쓰기 데이터 패킷(DATA OUT UPIU 0)이 전송될 수 있으며, 호스트와 메모리 시스템 간의 데이터 전송 성능이 개선될 수 있다.
트래픽 클래스들(TC0, TC1)의 정보는, 읽기 데이터 패킷들과 메시지 UPIU들의 헤더 영역에 각각 기록될 수 있다. 일례로, 호스트 인터페이스는 제2 읽기 데이터 패킷(DATA IN UPIU 1)의 헤더 영역에 기록된 제1 트래픽 클래스(TC0)의 정보와, 제2 데이터 전송 요청 UPIU(RTT UPIU 1)의 헤더 영역에 기록된 제2 트래픽 클래스(TC1)의 정보를 이용하여, 제2 데이터 전송 요청 UPIU(RTT UPIU 1)가 더 높은 우선 순위의 포트로 전달되었음을 확인하고, 제2 데이터 전송 요청 UPIU(RTT UPIU 1)를 먼저 호스트로 내보낼 수 있다. 또한, 호스트는 제1 채널을 통해 연속적으로 수신한 읽기 데이터 패킷들과 메시지 UPIU들의 헤더 영역을 참조함으로써, 읽기 데이터 패킷들과 메시지 UPIU들을 구분하여 처리할 수 있다.
도 31 및 도 32는 본 발명의 일 실시예에 따른 메모리 시스템에 적용될 수 있는 메모리 장치를 설명하기 위해 제공되는 도면들이다.
먼저 도 31은 본 발명의 일 실시예에 따른 메모리 시스템의 메모리 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다. 메모리 장치의 스토리지 모듈이 3D V-NAND 타입의 플래시 메모리로 구현될 경우, 스토리지 모듈을 구성하는 복수의 메모리 블록 각각은 도 31에 도시된 바와 같은 등가 회로로 표현될 수 있다.
도 31에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 31을 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 8에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 31에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
도 32는 본 발명의 일 실시예에 따른 메모리 시스템의 메모리 장치에 적용될 수 있는 BVNAND 구조에 대해 설명하기 위한 도면이다. 도 32를 참조하면, 메모리 장치(700)는 C2C(chip to chip) 구조일 수 있다. C2C 구조는 제1 웨이퍼 상에 셀 영역(CELL)을 포함하는 상부 칩을 제작하고, 제1 웨이퍼와 다른 제2 웨이퍼 상에 주변 회로 영역(PERI)을 포함하는 하부 칩을 제작한 후, 상기 상부 칩과 상기 하부 칩을 본딩(bonidng) 방식에 의해 서로 연결하는 것을 의미할 수 있다. 일례로, 상기 본딩 방식은 상부 칩의 최상부 메탈층에 형성된 본딩 메탈과 하부 칩의 최상부 메탈층에 형성된 본딩 메탈을 서로 전기적으로 연결하는 방식을 의미할 수 있다. 예컨대, 상기 본딩 메탈이 구리(Cu)로 형성된 경우, 상기 본딩 방식은 Cu-Cu 본딩 방식일 수 있으며, 상기 본딩 메탈은 알루미늄 혹은 텅스텐으로도 형성될 수 있다.
메모리 장치(700)의 주변 회로 영역(PERI)과 셀 영역(CELL) 각각은 외부 패드 본딩 영역(PA), 워드라인 본딩 영역(WLBA), 및 비트라인 본딩 영역(BLBA)을 포함할 수 있다.
주변 회로 영역(PERI)은 제1 기판(810), 층간 절연층(815), 제1 기판(810)에 형성되는 복수의 회로 소자들(820a, 820b, 820c), 복수의 회로 소자들(820a, 820b, 820c) 각각과 연결되는 제1 메탈층(830a, 830b, 830c), 제1 메탈층(830a, 830b, 830c) 상에 형성되는 제2 메탈층(840a, 840b, 840c)을 포함할 수 있다. 일 실시예에서, 제1 메탈층(830a, 830b, 830c)은 상대적으로 저항이 높은 텅스텐으로 형성될 수 있고, 제2 메탈층(840a, 840b, 840c)은 상대적으로 저항이 낮은 구리로 형성될 수 있다.
본 명세서에서는 제1 메탈층(830a, 830b, 830c)과 제2 메탈층(840a, 840b, 840c)만 도시 되고 설명되나, 이에 한정되는 것은 아니고, 제2 메탈층(840a, 840b, 840c) 상에 적어도 하나 이상의 메탈층이 더 형성될 수도 있다. 제2 메탈층(840a, 840b, 840c)의 상부에 형성되는 하나 이상의 메탈층 중 적어도 일부는, 제2 메탈층(840a, 840b, 840c)을 형성하는 구리보다 더 낮은 저항을 갖는 알루미늄 등으로 형성될 수 있다.
층간 절연층(815)은 복수의 회로 소자들(820a, 820b, 820c), 제1 메탈층(830a, 830b, 830c), 및 제2 메탈층(840a, 840b, 840c)을 커버하도록 제1 기판(810) 상에 배치되며, 실리콘 산화물, 실리콘 질화물 등과 같은 절연 물질을 포함할 수 있다.
워드라인 본딩 영역(WLBA)의 제2 메탈층(840b) 상에 하부 본딩 메탈(871b, 872b)이 형성될 수 있다. 워드라인 본딩 영역(WLBA)에서, 주변 회로 영역(PERI)의 하부 본딩 메탈(871b, 872b)은 셀 영역(CELL)의 상부 본딩 메탈(971b, 972b)과 본딩 방식에 의해 서로 전기적으로 연결될 수 있으며, 하부 본딩 메탈(871b, 872b)과 상부 본딩 메탈(971b, 972b)은 알루미늄, 구리, 혹은 텅스텐 등으로 형성될 수 있다.
셀 영역(CELL)은 적어도 하나의 메모리 블록을 제공할 수 있다. 셀 영역(CELL)은 제2 기판(910)과 공통 소스 라인(920)을 포함할 수 있다. 제2 기판(910) 상에는, 제2 기판(910)의 상면에 수직하는 방향(Z축 방향)을 따라 복수의 워드라인들(931-338; 330)이 적층될 수 있다. 워드라인들(930)의 상부 및 하부 각각에는 스트링 선택 라인들과 접지 선택 라인이 배치될 수 있으며, 스트링 선택 라인들과 접지 선택 라인 사이에 복수의 워드라인들(930)이 배치될 수 있다.
비트라인 본딩 영역(BLBA)에서, 채널 구조체(CH)는 제2 기판(910)의 상면에 수직하는 방향으로 연장되어 워드라인들(930), 스트링 선택 라인들, 및 접지 선택 라인을 관통할 수 있다. 채널 구조체(CH)는 데이터 저장층, 채널층, 및 매립 절연층 등을 포함할 수 있으며, 채널층은 제1 메탈층(950c) 및 제2 메탈층(960c)과 전기적으로 연결될 수 있다. 예컨대, 제1 메탈층(950c)은 비트라인 컨택일 수 있고, 제2 메탈층(960c)은 비트라인일 수 있다. 일 실시예에서, 비트라인(960c)은 제2 기판(910)의 상면에 평행한 제1 방향(Y축 방향)을 따라 연장될 수 있다.
도 32에 도시한 일 실시예에서, 채널 구조체(CH)와 비트라인(960c) 등이 배치되는 영역이 비트라인 본딩 영역(BLBA)으로 정의될 수 있다. 비트라인(960c)은 비트라인 본딩 영역(BLBA)에서 주변 회로 영역(PERI)에서 페이지 버퍼(993)를 제공하는 회로 소자들(820c)과 전기적으로 연결될 수 있다. 일례로, 비트라인(960c)은 주변 회로 영역(PERI)에서 상부 본딩 메탈(971c, 972c)과 연결되며, 상부 본딩 메탈(971c, 972c)은 페이지 버퍼(993)의 회로 소자들(820c)에 연결되는 하부 본딩 메탈(871c, 872c)과 연결될 수 있다.
워드라인 본딩 영역(WLBA)에서, 워드라인들(930)은 제2 기판(910)의 상면에 평행한 제2 방향(X축 방향)을 따라 연장될 수 있으며, 복수의 셀 컨택 플러그들(941-347; 340)와 연결될 수 있다. 워드라인들(930)과 셀 컨택 플러그들(940)은, 제2 방향을 따라 워드라인들(930) 중 적어도 일부가 서로 다른 길이로 연장되어 제공하는 패드들에서 서로 연결될 수 있다. 워드라인들(930)에 연결되는 셀 컨택 플러그들(940)의 상부에는 제1 메탈층(950b)과 제2 메탈층(960b)이 차례로 연결될 수 있다. 셀 컨택 플러그들(940)은 워드라인 본딩 영역(WLBA)에서 셀 영역(CELL)의 상부 본딩 메탈(971b, 972b)과 주변 회로 영역(PERI)의 하부 본딩 메탈(871b, 872b)을 통해 주변 회로 영역(PERI)과 연결될 수 있다.
셀 컨택 플러그들(940)은 주변 회로 영역(PERI)에서 로우 디코더(994)를 제공하는 회로 소자들(820b)과 전기적으로 연결될 수 있다. 일 실시예에서, 로우 디코더(994)를 제공하는 회로 소자들(820b)의 동작 전압은, 페이지 버퍼(993)를 제공하는 회로 소자들(820c)의 동작 전압과 다를 수 있다. 일례로, 페이지 버퍼(993)를 제공하는 회로 소자들(820c)의 동작 전압이 로우 디코더(994)를 제공하는 회로 소자들(820b)의 동작 전압보다 클 수 있다.
외부 패드 본딩 영역(PA)에는 공통 소스 라인 컨택 플러그(980)가 배치될 수 있다. 공통 소스 라인 컨택 플러그(980)는 금속, 금속 화합물, 또는 폴리실리콘 등의 도전성 물질로 형성되며, 공통 소스 라인(920)과 전기적으로 연결될 수 있다. 공통 소스 라인 컨택 플러그(980) 상부에는 제1 메탈층(950a)과 제2 메탈층(960a)이 차례로 적층될 수 있다. 일례로, 공통 소스 라인 컨택 플러그(980), 제1 메탈층(950a), 및 제2 메탈층(960a)이 배치되는 영역은 외부 패드 본딩 영역(PA)으로 정의될 수 있다.
한편 외부 패드 본딩 영역(PA)에는 입출력 패드들(805, 905)이 배치될 수 있다. 도 32를 참조하면, 제1 기판(810)의 하부에는 제1 기판(810)의 하면을 덮는 하부 절연막(801) 이 형성될 수 있으며, 하부 절연막(801) 상에 제1 입출력 패드(805)가 형성될 수 있다. 제1 입출력 패드(805)는 제1 입출력 컨택 플러그(803)를 통해 주변 회로 영역(PERI)에 배치되는 복수의 회로 소자들(820a, 820b, 820c) 중 적어도 하나와 연결되며, 하부 절연막(801)에 의해 제1 기판(810)과 분리될 수 있다. 또한, 제1 입출력 컨택 플러그(803)와 제1 기판(810) 사이에는 측면 절연막이 배치되어 제1 입출력 컨택 플러그(803)와 제1 기판(810)을 전기적으로 분리할 수 있다.
도 32를 참조하면, 제2 기판(910)의 상부에는 제2 기판(910)의 상면을 덮는 상부 절연막(901)이 형성될 수 있으며, 상부 절연막(901) 상에 제2 입출력 패드(905)가 배치될 수 있다. 제2 입출력 패드(905)는 제2 입출력 컨택 플러그(903)를 통해 주변 회로 영역(PERI)에 배치되는 복수의 회로 소자들(820a, 820b, 820c) 중 적어도 하나와 연결될 수 있다.
실시예들에 따라, 제2 입출력 컨택 플러그(903)가 배치되는 영역에는 제2 기판(910) 및 공통 소스 라인(920) 등이 배치되지 않을 수 있다. 또한, 제2 입출력 패드(905)는 제3 방향(Z축 방향)에서 워드라인들(980)과 오버랩되지 않을 수 있다. 도 32를 참조하면, 제2 입출력 컨택 플러그(903)는 제2 기판(910)의 상면에 평행한 방향에서 제2 기판(910)과 분리되며, 셀 영역(CELL)의 층간 절연층(915)을 관통하여 제2 입출력 패드(905)에 연결될 수 있다.
실시예들에 따라, 제1 입출력 패드(805)와 제2 입출력 패드(905)는 선택적으로 형성될 수 있다. 일례로, 메모리 장치(700)는 제1 기판(801)의 상부에 배치되는 제1 입출력 패드(805)만을 포함하거나, 또는 제2 기판(901)의 상부에 배치되는 제2 입출력 패드(905)만을 포함할 수 있다. 또는, 메모리 장치(700)가 제1 입출력 패드(805)와 제2 입출력 패드(905)를 모두 포함할 수도 있다.
셀 영역(CELL)과 주변 회로 영역(PERI) 각각에 포함되는 외부 패드 본딩 영역(PA)과 비트라인 본딩 영역(BLBA) 각각에는 최상부 메탈층의 메탈 패턴이 더미 패턴(dummy pattern)으로 존재하거나, 최상부 메탈층이 비어있을 수 있다.
메모리 장치(700)는 외부 패드 본딩 영역(PA)에서, 셀 영역(CELL)의 최상부 메탈층에 형성된 상부 메탈 패턴(972a)에 대응하여 주변 회로 영역(PERI)의 최상부 메탈층에 셀 영역(CELL)의 상부 메탈 패턴(972a)과 동일한 형태의 하부 메탈 패턴(876a)을 형성할 수 있다. 주변 회로 영역(PERI)의 최상부 메탈층에 형성된 하부 메탈 패턴(876a)은 주변 회로 영역(PERI)에서 별도의 콘택과 연결되지 않을 수 있다. 이와 유사하게, 외부 패드 본딩 영역(PA)에서 주변 회로 영역(PERI)의 최상부 메탈층에 형성된 하부 메탈 패턴에 대응하여 셀 영역(CELL)의 상부 메탈층에 주변 회로 영역(PERI)의 하부 메탈 패턴과 동일한 형태의 상부 메탈 패턴을 형성할 수도 있다.
워드라인 본딩 영역(WLBA)의 제2 메탈층(840b) 상에는 하부 본딩 메탈(871b, 872b)이 형성될 수 있다. 워드라인 본딩 영역(WLBA)에서, 주변 회로 영역(PERI)의 하부 본딩 메탈(871b, 872b)은 셀 영역(CELL)의 상부 본딩 메탈(971b, 972b)과 본딩 방식에 의해 서로 전기적으로 연결될 수 있다.
또한, 비트라인 본딩 영역(BLBA)에서, 주변 회로 영역(PERI)의 최상부 메탈층에 형성된 하부 메탈 패턴(852)에 대응하여 셀 영역(CELL)의 최상부 메탈층에 주변 회로 영역(PERI)의 하부 메탈 패턴(852)과 동일한 형태의 상부 메탈 패턴(992)을 형성할 수 있다. 셀 영역(CELL)의 최상부 메탈층에 형성된 상부 메탈 패턴(992) 상에는 콘택을 형성하지 않을 수 있다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.

Claims (20)

  1. 메모리 장치;
    데이터 전송 요청(Ready To Transfer, RTT) UPIU(UFS Protocol Information Unit) 및 응답(Response) UPIU 중 적어도 하나를 저장하며, 상기 메모리 장치와 별개로 구현되는 버퍼 메모리; 및
    외부 호스트로부터 수신한 읽기 요청에 응답하여 상기 메모리 장치로부터 읽기 데이터를 획득하고, 상기 읽기 데이터를 포함하는 읽기 데이터 패킷을 상기 외부 호스트로 내보내는 메모리 컨트롤러; 를 포함하며,
    상기 버퍼 메모리에 저장된 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나가 존재하면, 상기 메모리 컨트롤러는 상기 읽기 데이터 패킷의 전송이 완료되기 전에 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나를 상기 외부 호스트로 내보내는 메모리 시스템.
  2. 제1항에 있어서,
    상기 버퍼 메모리는 상기 데이터 전송 요청 UPIU를 저장하는 제1 버퍼 메모리 및 상기 응답 UPIU를 저장하는 제2 버퍼 메모리를 포함하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 메모리 컨트롤러는 상기 읽기 데이터 패킷을 제1 서브 데이터 패킷과 제2 서브 데이터 패킷으로 분할하고, 상기 제1 서브 데이터 패킷과 상기 제2 서브 데이터 패킷 사이에 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나를 상기 외부 호스트로 내보내는 메모리 시스템.
  4. 제3항에 있어서,
    상기 제1 서브 데이터 패킷과 상기 제2 서브 데이터 패킷 각각의 크기는 상기 읽기 데이터 패킷의 크기보다 작은 메모리 시스템.
  5. 제3항에 있어서,
    상기 제1 서브 데이터 패킷의 크기는 상기 제2 서브 데이터 패킷의 크기와 다른 메모리 시스템.
  6. 제3항에 있어서,
    상기 제1 서브 데이터 패킷의 크기는 상기 제2 서브 데이터 패킷의 크기와 같은 메모리 시스템.
  7. 제1항에 있어서,
    상기 메모리 컨트롤러는 상기 외부 호스트로 데이터를 전송하는 제1 채널, 및 상기 외부 호스트로부터 데이터를 수신하는 제2 채널을 포함하는 호스트 인터페이스를 포함하는 메모리 시스템.
  8. 제7항에 있어서,
    상기 제1 채널을 통해 상기 데이터 전송 요청 UPIU가 상기 외부 호스트로 전송된 후, 상기 호스트 인터페이스는 상기 제1 채널을 통해 상기 읽기 데이터 패킷을 출력하는 동시에 상기 제2 채널을 통해 상기 외부 호스트로부터 쓰기 데이터 패킷을 수신하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 메모리 컨트롤러는, 상기 쓰기 데이터 패킷에 포함된 쓰기 데이터를 상기 메모리 장치에 기록하는 메모리 시스템.
  10. 제7항에 있어서,
    상기 메모리 컨트롤러는 제1 트래픽 클래스로 상기 읽기 데이터 패킷을 상기 호스트 인터페이스에 전달하고, 상기 제1 트래픽 클래스보다 높은 우선 순위를 갖는 제2 트래픽 클래스로 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나를 상기 호스트 인터페이스에 전달하는 메모리 시스템.
  11. 제10항에 있어서,
    상기 메모리 컨트롤러는, 상기 읽기 데이터 패킷에 상기 제1 트래픽 클래스의 정보를 기록하고, 상기 데이터 전송 요청 UPIU 및 상기 응답 UPIU 중 적어도 하나에 상기 제2 트래픽 클래스의 정보를 기록하는 메모리 시스템.
  12. 데이터를 저장하는 메모리 장치, 및 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 메모리 시스템; 및
    상기 메모리 시스템과 제1 채널 및 제2 채널을 통해 연결되며, 상기 제1 채널을 통해 상기 메모리 시스템에서 읽기 데이터 패킷을 수신하고, 상기 제2 채널을 통해 상기 메모리 시스템에 쓰기 데이터 패킷을 전송하는 호스트; 를 포함하며,
    상기 메모리 시스템은, 상기 읽기 데이터 패킷과 다른 정보를 포함하는 메시지 UPIU가 존재하면, 상기 읽기 데이터 패킷의 전송이 완료되기 전에 상기 메시지 UPIU를 상기 호스트에 전송하고,
    상기 호스트는, 상기 제1 채널을 통해 상기 메모리 장치로부터 상기 읽기 데이터 패킷과 상기 메시지 UPIU를 수신하고, 상기 읽기 데이터 패킷을 수신하는 동안 상기 메시지 UPIU에 응답하여 상기 메모리 시스템을 제어하는 전자 기기.
  13. 제12항에 있어서,
    상기 호스트는, 상기 메시지 UPIU를 수신한 이후, 상기 제1 채널을 통해 상기 읽기 데이터 패킷을 수신하는 동시에, 상기 제2 채널을 통해 상기 쓰기 데이터 패킷을 전송하는 전자 기기.
  14. 제12항에 있어서,
    상기 메시지 UPIU는 데이터 전송 요청 UPIU 및 응답 UPIU 중 적어도 하나를 포함하는 전자 기기.
  15. 제12항에 있어서,
    상기 메모리 시스템은 상기 읽기 데이터 패킷을 제1 서브 데이터 패킷과 제2 서브 데이터 패킷으로 분할하고, 상기 제1 서브 데이터 패킷, 상기 메시지 UPIU, 및 상기 제2 서브 데이터 패킷을 상기 호스트에 순차적으로 전송하며,
    상기 제1 서브 데이터 패킷과 상기 제2 서브 데이터 패킷 중 적어도 하나는, 상기 쓰기 데이터 패킷과 다른 크기를 갖는 전자 기기.
  16. 제15항에 있어서,
    상기 제1 서브 데이터 패킷과 상기 제2 서브 데이터 패킷 각각의 크기는, 상기 쓰기 데이터 패킷의 크기보다 작은 전자 기기.
  17. 호스트와 연결되는 호스트 인터페이스;
    적어도 하나의 메모리 장치와 연결되는 메모리 인터페이스; 및
    상기 메모리 인터페이스를 통해 상기 메모리 장치로부터 읽기 데이터를 생성하여 생성한 읽기 데이터 패킷, 및 상기 읽기 데이터 패킷과 다른 정보를 포함하는 메시지 UPIU를 상기 호스트 인터페이스에 전달하는 컨트롤러; 를 포함하며,
    상기 컨트롤러는, 상기 읽기 데이터 패킷의 헤더 정보를 상기 호스트 인터페이스로 전송할 때 상기 메시지 UPIU가 존재하면, 상기 읽기 데이터 패킷을 제1 서브 데이터 패킷과 제2 서브 데이터 패킷으로 분할하며,
    상기 호스트 인터페이스는 상기 제1 서브 데이터 패킷, 상기 메시지 UPIU, 및 상기 제2 서브 데이터 패킷을 순차적으로 상기 호스트에 출력하는 메모리 컨트롤러.
  18. 제17항에 있어서,
    상기 제1 서브 데이터 패킷의 크기는, 상기 제2 서브 데이터 패킷의 크기 이하인 메모리 컨트롤러.
  19. 제18항에 있어서,
    상기 제1 서브 데이터 패킷의 크기는, 상기 호스트 인터페이스가 상기 호스트에 출력할 수 있는 데이터 패킷의 최소 크기인 메모리 컨트롤러.
  20. 제17항에 있어서,
    상기 메시지 UPIU는 데이터 전송 요청 UPIU 및 응답 UPIU 중 적어도 하나를 포함하는 메모리 컨트롤러.

KR1020200130278A 2020-10-08 2020-10-08 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러 KR20220047443A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200130278A KR20220047443A (ko) 2020-10-08 2020-10-08 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러
US17/234,981 US20220113895A1 (en) 2020-10-08 2021-04-20 Memory system, electronic device including the same, and memory controller
EP21180029.7A EP3982243A1 (en) 2020-10-08 2021-06-17 Memory system, electronic device including the same, and memory controller
CN202111143816.6A CN114296632A (zh) 2020-10-08 2021-09-28 存储器系统、包括存储器系统的电子设备及存储器控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200130278A KR20220047443A (ko) 2020-10-08 2020-10-08 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러

Publications (1)

Publication Number Publication Date
KR20220047443A true KR20220047443A (ko) 2022-04-18

Family

ID=76641599

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200130278A KR20220047443A (ko) 2020-10-08 2020-10-08 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러

Country Status (4)

Country Link
US (1) US20220113895A1 (ko)
EP (1) EP3982243A1 (ko)
KR (1) KR20220047443A (ko)
CN (1) CN114296632A (ko)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050281277A1 (en) * 2004-06-22 2005-12-22 Killian Thomas J Establishing traffic priorities in a voice over IP network
US8804751B1 (en) * 2005-10-04 2014-08-12 Force10 Networks, Inc. FIFO buffer with multiple stream packet segmentation
US7769014B2 (en) * 2007-02-13 2010-08-03 Seiko Epson Corporation Transmitting and receiving system, transmitting apparatus, and receiving apparatus
JP2013077278A (ja) * 2011-09-16 2013-04-25 Toshiba Corp メモリ・デバイス
TWI582599B (zh) * 2012-12-22 2017-05-11 群聯電子股份有限公司 資料傳輸方法、記憶體控制器、資料傳輸系統
US9450708B2 (en) * 2013-04-05 2016-09-20 Texas Instruments Incorporated System and method for avoiding hidden node collisions in a communication network
US10230665B2 (en) * 2013-12-20 2019-03-12 Intel Corporation Hierarchical/lossless packet preemption to reduce latency jitter in flow-controlled packet-based networks
KR102238652B1 (ko) * 2014-11-12 2021-04-09 삼성전자주식회사 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법
KR102317787B1 (ko) * 2015-02-11 2021-10-26 삼성전자주식회사 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스
JP2020144410A (ja) * 2019-03-04 2020-09-10 キオクシア株式会社 メモリコントローラ

Also Published As

Publication number Publication date
US20220113895A1 (en) 2022-04-14
CN114296632A (zh) 2022-04-08
EP3982243A1 (en) 2022-04-13

Similar Documents

Publication Publication Date Title
US10534738B2 (en) Host bus adaptor with configurable interface
US11941249B2 (en) Memory device, host device and memory system comprising the memory device and host device
TW201602900A (zh) 記憶體模組
US20220102224A1 (en) Test method of storage device implemented in multi-chip package (mcp) and method of manufacturing an mcp including the test method
KR20220069543A (ko) 스토리지 장치, 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
US20240062790A1 (en) Memory device, memory system, and operating method of memory system
EP4156191A1 (en) Operating method of storage device, operating method of host, and storage system including the storage device and the host
US20240184480A1 (en) Storage device for high speed link startup and storage system including the same
US20220229599A1 (en) Storage device for transmitting data having an embedded command in both directions of a shared channel, and a method of operating the storage device
US11593031B2 (en) Operating method of host device and storage device using credit
US11809737B2 (en) Storage device for performing high-speed link startup and storage system including the same
CN113111024A (zh) 存储装置、存储系统和及操作存储装置的方法
EP3982243A1 (en) Memory system, electronic device including the same, and memory controller
EP3982244B1 (en) Storage controller, storage system and operating methods thereof
US20240095166A1 (en) Storage system and method providing cache area in memory included in host device
KR20210156187A (ko) 고속 링크 스타트업을 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템
KR20210132569A (ko) 스토리지 장치의 링크 스타트업 방법
CN114116294A (zh) 存储设备及其操作方法

Legal Events

Date Code Title Description
A201 Request for examination