KR20200124937A - 컨트롤러 및 그것의 동작방법 - Google Patents
컨트롤러 및 그것의 동작방법 Download PDFInfo
- Publication number
- KR20200124937A KR20200124937A KR1020190048429A KR20190048429A KR20200124937A KR 20200124937 A KR20200124937 A KR 20200124937A KR 1020190048429 A KR1020190048429 A KR 1020190048429A KR 20190048429 A KR20190048429 A KR 20190048429A KR 20200124937 A KR20200124937 A KR 20200124937A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- slave
- data
- time
- rtt
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title description 2
- 238000012549 training Methods 0.000 claims abstract description 41
- 230000004044 response Effects 0.000 claims abstract description 40
- 238000012546 transfer Methods 0.000 claims abstract description 27
- 238000002360 preparation method Methods 0.000 claims abstract description 24
- 238000010606 normalization Methods 0.000 claims abstract description 21
- 238000005259 measurement Methods 0.000 claims abstract description 7
- 238000000034 method Methods 0.000 claims description 32
- 238000003860 storage Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
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)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Transfer Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 실시 예들에 따른 컨트롤러에 있어서, 호스트로부터 제공된 프로그램 커맨드에 응답하여 상기 호스트로 임계치만큼의 수신 준비 신호들을 제공하는 호스트 인터페이스; 및 상기 임계치에 대한 최적 값을 결정하는 트레이닝을 수행하는 프로세서를 포함하되, 상기 프로세서는 상기 임계치를 최소값부터 최대값 중 어느 하나의 값으로 선택하는 ORTTV 선택부; 상기 선택된 임계치만큼의 수신 준비 신호들을 상기 호스트로 제공하도록 상기 호스트 인터페이스를 제어하며, 상기 수신 준비 신호들에 대응하는 데이터에 대한 수신 시간을 측정하는 시간 측정부; 상기 수신 시간을 정규화 하는 정규화부; 및 상기 최소값부터 상기 최대값에 대해 측정한 정규화 시간들 중 최소 정규화 시간에 대응하는 임계치를 상기 최적 값으로 결정하는 옵티말 ORTTV 결정부를 포함하는 컨트롤러가 개시된다.
Description
본 발명은 컨트롤러에 관한 것으로, 보다 구체적으로는 프로그램 동작을 효율적으로 수행하기 위한 컨트롤러 및 그것의 동작방법에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용할 수 있다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함할 수 있다.
본 발명의 실시 예에 따른 컨트롤러는 트레이닝 동작을 통해 최적의 아웃스탠딩(Outstanding) RTT(Ready To Transfer) 값(Value)을 검출할 수 있다.
본 발명의 실시 예에 따른 컨트롤러에 있어서, 호스트로부터 제공된 프로그램 커맨드에 응답하여 상기 호스트로 임계치만큼의 수신 준비 신호들을 제공하는 호스트 인터페이스; 및 상기 임계치에 대한 최적 값을 결정하는 트레이닝을 수행하는 프로세서를 포함하되, 상기 프로세서는 상기 임계치를 최소값부터 최대값 중 어느 하나의 값으로 선택하는 ORTTV 선택부; 상기 선택된 임계치만큼의 수신 준비 신호들을 상기 호스트로 제공하도록 상기 호스트 인터페이스를 제어하며, 상기 수신 준비 신호들에 대응하는 데이터에 대한 수신 시간을 측정하는 시간 측정부; 상기 수신 시간을 정규화 하는 정규화부; 및 상기 최소값부터 상기 최대값에 대해 측정한 정규화 시간들 중 최소 정규화 시간에 대응하는 임계치를 상기 최적 값으로 결정하는 옵티말 ORTTV 결정부를 포함하는 컨트롤러가 제시된다.
본 발명의 일 실시 예에 따른 컨트롤러의 동작방법에 있어서, 호스트로부터 제공된 프로그램 커맨드에 응답하여 임계치만큼의 수신 준비 신호들을 출력하는 단계; 및 상기 임계치에 대한 최적 값을 결정하는 트레이닝을 수행하는 단계를 포함하되, 상기 트레이닝을 수행하는 단계는 상기 임계치를 최소값부터 최대값 중 어느 하나의 값으로 선택하는 단계; 상기 선택된 임계치만큼의 수신 준비 신호들을 출력하고, 상기 수신 준비 신호들에 대응하는 데이터에 대한 수신 시간을 측정하는 단계; 상기 수신 시간을 정규화 하는 단계; 상기 최소값부터 상기 최대값에 대해 측정한 정규화 시간들 중 최소 정규화 시간에 대응하는 임계치를 상기 최적 값으로 결정하는 단계를 포함하는 컨트롤러의 동작 방법이 제시된다.
본 발명의 실시 예에 따른 컨트롤러는 호스트와 트레이닝 동작을 수행함으로써 상기 호스트의 성능에 따른 최적의 아웃스탠딩 RTT값을 검출할 수 있다. 컨트롤러는 상기 최적의 아웃 스탠딩 RTT값에 기초하여 메모리 장치의 프로그램 동작을 제어함으로써 프로그램 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 데이터 처리 시스템에서 마스터와 슬래이브의 트랜잭션을 설명하기 위한 도면이다.
도 3은 RTT 신호의 요청 정보와 상기 RTT 신호에 응답하여 제공된 데이터 정보가 불일치하는 경우를 설명하기 위한 도면이다.
도 4 및 도 5는 아웃스탠딩 RTT의 개념을 설명하기 위한 도면이다.
도 6은 본 발명의 종래기술에 따른 데이터 처리 시스템의 동작 과정을 나타낸 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 동작 과정을 나타낸 흐름도이다.
도 8은 트레이닝 동작을 상세히 설명하기 위한 순서도이다.
도 9는 트랜잭션에 소요된 시간을 측정하는 방법을 상세히 설명하기 위한 순서도이다.
도 10은 본 발명의 일 실시예에 따른 메모리 시스템(110)을 상세히 나타내는 도면이다.
도 11은 RTT 트레이닝 수행부의 세부 구성을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 데이터 처리 시스템에서 마스터와 슬래이브의 트랜잭션을 설명하기 위한 도면이다.
도 3은 RTT 신호의 요청 정보와 상기 RTT 신호에 응답하여 제공된 데이터 정보가 불일치하는 경우를 설명하기 위한 도면이다.
도 4 및 도 5는 아웃스탠딩 RTT의 개념을 설명하기 위한 도면이다.
도 6은 본 발명의 종래기술에 따른 데이터 처리 시스템의 동작 과정을 나타낸 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 동작 과정을 나타낸 흐름도이다.
도 8은 트레이닝 동작을 상세히 설명하기 위한 순서도이다.
도 9는 트랜잭션에 소요된 시간을 측정하는 방법을 상세히 설명하기 위한 순서도이다.
도 10은 본 발명의 일 실시예에 따른 메모리 시스템(110)을 상세히 나타내는 도면이다.
도 11은 RTT 트레이닝 수행부의 세부 구성을 나타내는 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명할 수 있다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 할 수 있다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(Host)(102) 및 메모리 시스템(110)을 포함할 수 있다.
호스트(102)는 프로세서(104), 메모리(106) 및 호스트 컨트롤러 인터페이스(108)를 포함할 수 있다.
호스트(102)는, 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함, 즉 유무선 전자 장치들을 포함할 수 있다.
프로세서(104)는 적어도 하나의 운영 시스템(OS: operating system) 혹은 복수의 운영 시스템들을 포함할 수 있으며, 사용자의 요청에 상응한 메모리 시스템(110)과의 동작 수행을 위해 운영 시스템을 실행할 수 있다. 프로세서(104)는 사용자 요청에 해당하는 복수의 커맨드들을 생성할 수 있으며, 메모리 시스템(110)은 상기 커맨드들에 해당하는 동작들, 즉 사용자 요청에 상응하는 동작들을 수행할 수 있다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공할 수 있다.
메모리(106)는 호스트(102) 및 메모리 시스템(110)의 구동을 위한 데이터를 저장할 수 있다. 메모리(106)는 상기 복수의 커맨드들을 저장할 수 있으며, 데이터 버퍼를 포함할 수 있다. 상기 데이터 버퍼는 메모리 시스템(110)으로 제공되는 데이터 및 상기 메모리 시스템(110)으로부터 제공된 데이터를 저장할 수 있다.
호스트 컨트롤러 인터페이스(108)는 상기 사용자 요청에 해당하는 복수의 커맨드들을 메모리 시스템(110)으로 전달하여 상기 사용자 요청에 상응하는 동작들을 수행하도록 상기 메모리 시스템(110)을 제어할 수 있다. 후술하는 바와 같이 상기 호스트 컨트롤러 인터페이스(108)는 메모리 시스템(110)으로부터 제공된 RTT(Ready To Transfer) 신호를 수신할 수 있다. 상기 RTT 신호는 메모리 시스템(110)이 수신하고자 하는 데이터 사이즈 및 데이터 버퍼 오프셋에 대한 정보를 포함할 수 있다. 호스트 컨트롤러 인터페이스(108)는 상기 RTT 신호에 응답하여 상기 메모리(106)에 저장된 데이터를 메모리 시스템(110)으로 전달할 수 있으며, 상기 메모리 시스템(110)으로부터 제공된 커맨드 응답신호(RESPONSE)를 수신할 수 있다.
메모리 시스템(110)은 호스트(102)의 요청에 응답하여 동작하며, 특히 호스트(102)에 의해서 액세스되는 데이터를 저장할 수 있다. 메모리 시스템(110)은, 호스트(102)의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다. 메모리 시스템(110)은 호스트(102)와 연결되는 호스트 인터페이스 프로토콜에 따라, 다양한 종류의 저장 장치(솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC))들 중 어느 하나로 구현될 수 있다.
메모리 시스템(110)을 구현하는 저장 장치들은, DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구현될 수 있다.
메모리 시스템(110)은 메모리 장치(150) 및 컨트롤러(130)를 포함할 수 있다.
컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적되어 SSD, PC 카드(PCMCIA: Personal Computer Memory Card International Association), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등으로 구성할 수 있다. 또한, 다른 일 예로, 메모리 시스템(110)은, 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나(컴퓨터, 스마트폰, 휴대용 게임기) 등을 구성할 수 있다.
한편, 메모리 장치(150)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있으며, 특히 프로그램(program) 동작을 통해 호스트(102)로부터 제공된 데이터를 저장하고, 리드(read) 동작을 통해 저장된 데이터를 호스트(102)로 제공할 수 있다. 메모리 장치(150)는 복수의 메모리 블록(memory block)들(152,154,156)을 포함하며, 각각의 메모리 블록들(152,154,156)은, 복수의 페이지들(pages)을 포함할 수 있다. 각각의 페이지들은, 복수의 워드라인(WL: Word Line)들이 연결된 복수의 메모리 셀들을 포함할 수 있다. 또한, 메모리 장치(150)는, 복수의 메모리 블록들(152,154,156)이 각각 포함된 복수의 플래인들(plane)을 포함하며, 복수의 플래인들이 각각 포함된 복수의 메모리 다이(memory die)들을 포함할 수 있다. 메모리 장치(150)는 비휘발성 메모리 장치, 일 예로 플래시 메모리가 될 수 있으며, 이때 플래시 메모리는 3차원(dimension) 입체 스택(stack) 구조가 될 수 있다.
컨트롤러(130)는 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어할 수 있다. 예컨대, 컨트롤러(130)는, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하며, 메모리 장치(150)의 리드, 프로그램, 이레이즈(erase) 등의 동작을 제어할 수 있다.
보다 구체적으로 설명하면, 컨트롤러(130)는, 호스트 인터페이스(Host I/F) 유닛(132), 프로세서(134). 메모리 인터페이스(Memory I/F) 유닛(142) 및 메모리(Memory)(144)를 포함할 수 있다. 도 10을 참조하여 후술하는 바와 같이, 상기 프로세서(134)는 최대 ORTTV 결정부(1002), RTT 트레이닝 수행부(1004) 및 버퍼 관리부(1010)를 포함할 수 있다.
호스트 인터페이스 유닛(132)은, 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다. 여기서, 호스트 인터페이스 유닛(132)은, 호스트(102)와 데이터를 주고 받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
또한, 메모리 인터페이스 유닛(142)은, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 수행하는 메모리/스토리지(storage) 인터페이스가 된다.
메모리(144)는, 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다.
메모리(144)는, 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 메모리(144)는 컨트롤러(130)의 내부에 존재하거나, 또는 컨트롤러(130)의 외부에 존재할 수 있으며, 메모리 인터페이스를 통해 컨트롤러(130)로부터 데이터가 입출력되는 외부 휘발성 메모리로 구현될 수도 있다.
메모리(144)는, 호스트(102)와 메모리 장치(150) 간 프로그램 및 리드 등의 동작을 수행하기 위해 필요한 데이터 및 프로그램 및 리드 등의 동작 수행 시의 데이터를 저장할 수 있다. 메모리(144)는 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.
프로세서(134)는, 메모리 시스템(110)의 전체적인 동작을 제어하며, 특히 호스트(102)로부터의 프로그램 요청 또는 리드 요청에 응답하여, 메모리 장치(150)에 대한 프로그램 동작 또는 리드 동작을 제어할 수 있다. 여기서, 프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동할 수 있다. 또한, 프로세서(134)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
컨트롤러(130)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 호스트(102)로부터 요청된 동작을 메모리 장치(150)에서 수행할 수 있다. 또한 컨트롤러(130)는 상기 프로세서(134)를 통해 메모리 장치(150)에 대한 백그라운드(background) 동작을 수행할 수도 있다. 메모리 장치(150)에 대한 백그라운드 동작은, 가비지 컬렉션(GC: Garbage Collection) 동작, 웨어 레벨링(WL: Wear Leveling) 동작, 맵 플러시(map flush) 동작, 배드 블록 관리(bad block management) 동작 등을 포함할 수 있다.
호스트(102)가 메모리 장치(150)에 데이터를 저장하고자 하는 경우, 상기 호스트(102)는 프로그램 커맨드, 논리 주소 및 저장하고자 하는 데이터를 컨트롤러(130)로 제공할 수 있다. 컨트롤러(130)는 상기 데이터를 메모리(144)에 라이트한 이후, 상기 데이터의 사이즈가 메모리 장치(150)가 프로그램할 수 있는 단위(예를 들어 페이지 단위 또는 원샷 단위)를 만족하면, 상기 데이터를 오픈 블록에 프로그램하도록 상기 메모리 장치(150)를 제어할 수 있다. 상기 메모리(144)의 저장 공간은 제한적이므로, 상기 메모리(144)의 잔여 공간보다 호스트(102)로부터 제공된 데이터의 사이즈가 더 큰 경우, 컨트롤러(130)는 프로그램 커맨드에 응답하여 바로 상기 데이터를 메모리(144)에 라이트하지 못할 수 있다.
유니버설 플래시 기억 장치(Universal Flash Storage: UFS)의 경우, 마스터(MASTER)가 프로그램 커맨드를 이슈하면, 슬래이브(SLAVE)는 상기 슬래이브(SLAVE)의 잔여 공간을 확인하고, 상기 프로그램 커맨드에 대한 데이터를 저장하기 위한 용량이 확보되면 마스터(MASTER)로 RTT(Ready To Transfer) 신호를 제공할 수 있다. 상기 RTT 신호는 마스터(MASTER)로부터 데이터를 제공받을 준비가 된 경우, 슬래이브(SLAVE)가 마스터(MASTER)로 제공하는 준비 완료 신호일 수 있다. 상기 마스터(MASTER)는 상기 RTT 신호에 응답하여 슬래이브(SLAVE)로 상기 프로그램 커맨드에 대한 데이터를 제공할 수 있다. 상기 마스터(MASTER) 및 슬래이브(SLAVE)는 각각 앞서 설명한 호스트(102) 및 메모리 시스템(110)에 대응할 수 있다. 마스터(MASTER)는 슬래이브(SLAVE)가 RTT 신호를 제공한 경우에만 프로그램 커맨드에 대한 데이터를 출력할 수 있다. 따라서, 상기 슬래이브(SLAVE)는 충분한 크기의 잔여 저장 공간을 확보한 이후 비로소 출력 데이터를 모두 수신할 수 있다.
도 2는 마스터(MASTER)와 슬래이브(SLAVE)의 트랜잭션을 설명하기 위한 도면이다.
마스터(MASTER)는 프로그램 커맨드(CMD)와 프로그램 데이터의 사이즈 정보(EXPECTED DATA TRANSFER LENGTH)를 슬래이브(SLAVE)로 제공할 수 있다. 예를 들어, 상기 프로그램 데이터 사이즈는 '300'일 수 있다. 슬래이브(SLAVE)는 상기 프로그램 커맨드(CMD)에 응답하여 상기 슬래이브(SLAVE)의 잔여 저장 공간의 크기와 상기 프로그램 데이터의 사이즈를 비교할 수 있다. 상기 슬래이브(SLAVE)의 잔여 저장 공간의 크기가 상기 프로그램 데이터의 사이즈 이상인 경우, 상기 슬래이브(SLAVE)는 마스터(MASTER)로 RTT 신호를 제공할 수 있다. 예를 들어, 상기 슬래이브(SLAVE)의 잔여 저장 공간이 상기 프로그램 데이터 사이즈인 '300'이상인 경우 슬래이브(SLAVE)는 RTT신호를 출력할 수 있다.
RTT 신호는 요청 데이터 사이즈 정보(DATA TRANSFER COUNT) 및 버퍼 오프셋 정보(DATA BUFFER OFFSET)를 포함할 수 있다. 마스터(MASTER)는 상기 RTT 신호에 응답하여 메모리(106)에 저장된 프로그램 데이터를 슬래이브(SLAVE)로 제공할 수 있다. 상기 버퍼 오프셋 정보(DATA BUFFER OFFSET)는 마스터(MASTER)가 슬래이브(SLAVE)로 제공하는 프로그램 데이터 중 상기 슬래이브(SLAVE)가 요청하는 일부 데이터가 저장된 위치를 나타내는 메모리(106)의 오프셋에 관한 정보를 포함할 수 있다. 상기 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)는 상기 슬래이브(SLAVE)가 요청하는 데이터의 사이즈에 관한 정보를 포함할 수 있다. 상기 마스터(MASTER)는 상기 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 상기 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)에 기초하여 상기 메모리(106)의 오프셋에 데이터의 헤더가 위치하며 상기 데이터의 태일까지의 사이즈가 상기 슬래이브(SLAVE)가 요청하는 데이터의 사이즈에 해당하는 데이터를 슬래이브(SLAVE)로 제공할 수 있다.
도 2를 참조하면, 메모리(106)는 3개의 포션들(A 내지 C)을 포함할 수 있으며, 제1 포션 내지 제3 포션(A 내지 C)의 오프셋은 각각'0, 100, 200'의 값을 가질 수 있으며, 상기 제1 포션 내지 제3 포션(A 내지 C)의 데이터 사이즈는 모두 '100'의 값을 가질 수 있다. 슬래이브(SLAVE)는 '200'의 값을 갖는 오프셋에 대한 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 '100'의 값을 갖는 데이터 사이즈에 대한 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)를 포함하는 제1 RTT 신호를 마스터(MASTER)로 제공할 수 있다. 마스터(MASTER)는 상기 제1 RTT 신호에 응답하여 제3 포션(C)에 대응하는 제1 데이터(DATA1)을 슬래이브(SLAVE)로 제공할 수 있다.
슬래이브(SLAVE)는 상기 제1 데이터(DATA1)를 제공받은 이후, 마스터(MASTER)로 제2 RTT 신호를 제공할 수 있다. 상기 제2 RTT 신호는 '100'의 값을 갖는 오프셋에 대한 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 '100'의 값을 갖는 데이터 사이즈에 대한 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)를 포함할 수 있다. 마스터(MASTER)는 상기 제2 RTT 신호에 응답하여 슬래이브(SLAVE)로 제2 포션(B)에 대응하는 제2 데이터(DATA2)를 슬래이브(SLAVE)로 제공할 수 있다. 마찬가지 방식으로 슬래이브(SLAVE)는 상기 제2 데이터(DATA2)를 제공받은 이후, 제3 RTT 신호를 마스터(MASTER)로 제공할 수 있으며, 상기 마스터(MASETER)는 상기 제3 RTT 신호에 응답하여 슬래이브(SLAVE)로 제1 포션(A)에 대응하는 데이터를 슬래이브(SLAVE)로 제공할 수 있다.
슬래이브(SLAVE)는 RTT 신호에 따라 요청한 오프셋과 데이터 사이즈를 만족하는 데이터를 수신하여 프로그램 커맨드(CMD)에 대한 프로그램 데이터를 모두 수신할 경우, 마스터(MASTER)로 응답 신호(RESPONSE)를 제공할 수 있다. 만약, 슬래이브(SLAVE)가 RTT 신호에 따라 요청한 오프셋과 데이터 사이즈를 만족하지 아니하는 데이터를 수신할 경우, 슬래이브(SLAVE)는 마스터(MASTER)로 에러 플래그(MISMATCH ERROR FLAG)를 포함하는 응답 신호(RESPONSE)를 마스터(MASTER)로 제공할 수 있다.
도 3은 RTT 신호의 요청 정보와 상기 RTT 신호에 응답하여 제공된 데이터 정보가 불일치하는 경우를 설명하기 위한 도면이다.
앞서 도 2를 참조하여 설명한 바와 같이, 마스터(MASTER)는 슬래이브(SLAVE)로 프로그램 커맨드(CMD)와 프로그램 데이터의 사이즈에 대한 정보(EXPECTED DATA TRANSFER LENGTH)를 제공할 수 있다. 상기 프로그램 데이터의 사이즈는 '300'의 값을 가질 수 있다. 슬래이브(SLAVE)는 잔여 공간이 '300'이상인 경우, 마스터(MASETER)로 제1 RTT 신호를 제공할 수 있다. 상기 제1 RTT 신호는 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 요청 데이터 사이즈에 대한 정보(DATA TRANSFER COUNT)를 포함할 수 있다. 상기 버퍼 오프셋 정보(DATA BUFFER OFFSET)의 오프셋 및 상기 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)의 데이터 사이즈는 각각 '200'및 '100'의 값을 가질 수 있다.
마스터(MASTER)는 상기 제1 RRT 신호에 응답하여 슬래이브(SLAVE)로 프로그램 데이터를 제공할 수 있다. 마스터(MASTER)는 상기 제1 RRT 신호에 포함된 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 요청 데이터 사이즈에 대한 정보(DATA TRANSFER COUNT)에 기초하여 메모리(106)에 저장된 프로그램 데이터를 슬래이브(SLAVE)로 제공할 수 있다. 마스터(MASTER)는 상기 메모리(106)로부터'200'의 값을 갖는 오프셋에 데이터의 헤더가 위치하고, '100'의 값을 갖는 데이터 사이즈에 해당하는 데이터를 슬래이브(SLAVE)로 제공할 수 있다. 만약, 오류가 발생하여 슬래이브(SLAVE)가 상기 오프셋 및 데이터 사이즈 중 어느 하나라도 상기 제1 RRT 신호에 포함된 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 요청 데이터 사이즈에 대한 정보(DATA TRANSFER COUNT)와 불일치하는 데이터를 수신할 경우 슬래이브(SLAVE)는 마스터(MASTER)로 응답 신호(RESPONSE)와 함께 에러 플래그(MISMATCH ERROR FLAG)를 제공할 수 있다. 예를 들어, 마스터(MASTER)가 제1 RRT 신호에 응답하여 '200'의 값을 갖는 오프셋과 '80'의 값을 갖는 데이터 사이즈를 갖는 프로그램 데이터를 슬래이브(SLAVE)로 제공한 경우, 슬래이브(SLAVE)는 마스터(MASTER)로 응답 신호(RESPONSE)와 함께 에러 플래그(MISMATCH ERROR FLAG)를 제공할 수 있다.
도 4 및 도 5는 아웃스탠딩 RTT의 개념을 설명하기 위한 도면이다.
앞서 도 2를 참조하여 설명한 트렌젝션의 경우, 슬래이브(SLAVE)가 하나의 RRT 신호에 대응하는 프로그램 데이터를 수신한 이후 비로소 후속 RRT 신호를 마스터(MASTER)로 제공할 수 있다. 슬래이브(SLAVE)는 하나의 RRT 신호에 대한 프로그램 데이터를 수신하기 전에도 마스터(MASTER)로 복수의 RTT 신호들을 제공할 수 있다. 상기 하나의 RTT 신호에 대한 프로그램 데이터를 수신하기 전까지 마스터(MASTER)로 제공할 수 있는 RTT 신호의 개수를 아웃스탠딩 RRT로 정의할 수 있다. 앞서 설명한 도 2 및 도 3은 상기 아웃스탠딩 RTT의 값이 '1'인 경우일 수 있다.
도 4는 상기 아웃스탠딩 RTT의 값이 '2'인 경우 마스터(MASTER)와 슬래이브(SLAVE)의 트랜잭션을 설명한다. 설명의 편의를 위해 아웃스탠딩 RTT의 값이 '2'인 경우로 설명하지만, 상기 아웃스탠딩 RTT의 값이 '2'이상인 경우에도 동일한 방식으로 트랜잭션 동작이 수행될 수 있다.
마스터(MASTER)는 프로그램 커맨드(CMD)와 프로그램 데이터의 사이즈 정보(EXPECTED DATA TRANSFER LENGTH)를 슬래이브(SLAVE)로 제공할 수 있다. 예를 들어, 상기 프로그램 데이터 사이즈는 '300'일 수 있다. 슬래이브(SLAVE)는 상기 프로그램 커맨드(CMD)에 응답하여 상기 슬래이브(SLAVE)의 잔여 저장 공간의 크기와 상기 프로그램 데이터의 사이즈를 비교할 수 있다. 상기 슬래이브(SLAVE)의 잔여 저장 공간의 크기가 상기 프로그램 데이터의 사이즈 이상인 경우, 상기 슬래이브(SLAVE)는 마스터(MASTER)로 RTT 신호를 제공할 수 있다.
아웃 스탠딩 RRT의 값(OUTSTANDING RTT VALUE)이 '2'이므로, 슬래이브(SLAVE)는 마스터(MASTER)로 제1 및 제2 RRT 신호를 제공할 수 있다. 슬래이브(SLAVE)는 '0'의 값을 갖는 오프셋에 대한 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 '75'의 값을 갖는 데이터 사이즈에 대한 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)를 포함하는 제1 RTT 신호를 마스터(MASTER)로 제공할 수 있다. 슬래이브(SLAVE)는 '75'의 값을 갖는 오프셋에 대한 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 '75'의 값을 갖는 데이터 사이즈에 대한 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)를 포함하는 제2 RTT 신호를 마스터(MASTER)로 제공할 수 있다.
마스터(MASETER)는 제1 RTT 신호에 응답하여 슬래이브(SLAVE)로 제1 데이터(DATA1)을 제공할 수 있다. 마스터(MASTER)는 메모리(106)로부터'0'의 값을 갖는 오프셋에 데이터의 헤더가 위치하고, '75'의 값을 갖는 데이터 사이즈에 해당하는 데이터를 슬래이브(SLAVE)로 제공할 수 있다. 마스터(MASTER)와 슬래이브(SLAVE) 간 데이터 전송 버스는 하나만 존재하므로, 마스터(MASETER)는 제1 데이터(DATA1)를 제공한 이후 비로소 제2 데이터(DATA2)를 슬래이브(SLAVE)로 제공할 수 있다.
마스터(MASETER)는 제2 RTT 신호에 응답하여 슬래이브(SLAVE)로 제2 데이터(DATA2)를 제공할 수 있다. 마스터(MASTER)는 메모리(106)로부터'75'의 값을 갖는 오프셋에 데이터의 헤더가 위치하고, '75'의 값을 갖는 데이터 사이즈에 해당하는 데이터를 슬래이브(SLAVE)로 제공할 수 있다. 슬래이브(SLAVE)는 제2 데이터(DATA2)를 수신하는 동안 마스터(MASTER)로 제3 RTT신호를 제공할 수 있다. 아웃 스탠딩 RRT의 값(OUTSTANDING RTT VALUE)이 '2'이고, 슬래이브(SLAVE)가 제1 데이터(DATA1)를 모두 수신하면, 계류 중인 RTT 신호는 제2 RTT 신호만 존재하므로, 계류 중인 RTT 신호의 개수가 상기 아웃 스탠딩 RRT의 값(OUTSTANDING RTT VALUE)을 만족하도록 슬래이브(SLAVE)는 마스터(MASTER)로 제3 RTT 신호를 제공할 수 있다.
슬래이브(SLAVE)는 '150'의 값을 갖는 오프셋에 대한 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 '75'의 값을 갖는 데이터 사이즈에 대한 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)를 포함하는 제3 RTT 신호를 마스터(MASTER)로 제공할 수 있다. 슬래이브(SLAVE)가 제2 데이터(DATA2)를 모두 수신하면 마스터(MASTER)는 제3 데이터(DATA3)를 슬래이브(SLAVE)로 제공할 수 있다. 마스터(MASTER)는 메모리(106)로부터'150'의 값을 갖는 오프셋에 데이터의 헤더가 위치하고, '75'의 값을 갖는 데이터 사이즈에 해당하는 데이터를 슬래이브(SLAVE)로 제공할 수 있다.
도 5는 마스터(MASETER)로부터 제공된 프로그램 커맨드가 복수 개이고, 아웃 스탠딩 RTT의 값이 '1'보다 큰 경우 마스터(MASTER)와 슬래이브(SLAVE)의 트랜잭션을 설명한다.
마스터(MASTER)는 복수의 프로그램 커맨드들을 슬래이브(SLAVE)로 제공할 수 있다. 설명의 편의를 위해 상기 복수의 프로그램 커맨드들의 개수가 '2'인 경우로 설명한다. 마스터(MASTER)는 제1 및 제2 프로그램 커맨드(CMD1 및 CMD2)를 슬래이브(SLAVE)로 제공할 수 있다. 마스터(MASTER)는 프로그램 커맨드와 함께 논리 유닛 넘버(Logical Unit Number: LUN), 프로그램 데이터의 사이즈 정보(EXPECTED DATA TRANSFER LENGTH)를 슬래이브(SLAVE)로 제공할 수 있다. 상기 논리 유닛 넘버(LUN)은 복수의 커맨드들 각각을 식별하기 위한 정보일 수 있다.
마스터(MASTER)는 슬래이브(SLAVE)로 제1 커맨드(CMD1)와 함께 '1'의 값을 갖는 논리 유닛 넘버(LUN)과 '100'의 값을 갖는 프로그램 데이터의 사이즈에 대한 프로그램 데이터의 사이즈 정보(EXPECTED DATA TRANSFER LENGTH)를 슬래이브(SLAVE)로 제공할 수 있다. 또한, 마스터(MASTER)는 슬래이브(SLAVE)로 제2 커맨드(CMD2)와 함께 '2'의 값을 갖는 논리 유닛 넘버(LUN)과 '100'의 값을 갖는 프로그램 데이터의 사이즈에 대한 프로그램 데이터의 사이즈 정보(EXPECTED DATA TRANSFER LENGTH)를 슬래이브(SLAVE)로 제공할 수 있다. 슬래이브(SLAVE)는 상기 제1 및 제2 프로그램 커맨드(CMD1 및 CMD2)에 응답하여 상기 슬래이브(SLAVE)의 잔여 저장 공간의 크기와 제1 및 제2 커맨드(CMD1 및 CMD2) 각각에 대한 프로그램 데이터의 사이즈의 합을 비교할 수 있다. 상기 슬래이브(SLAVE)의 잔여 저장 공간의 크기가 제1 프로그램 커맨드(CMD1)에 대한 프로그램 데이터 사이즈인 '100'과 제2 프로그램 커맨드(CMD2)에 대한 프로그램 데이터 사이즈인 '100'의 합인 '200' 이상인 경우, 상기 슬래이브(SLAVE)는 마스터(MASTER)로 RTT 신호를 제공할 수 있다.
설명의 편의를 위해 아웃스탠딩 RTT의 값이 '2'인 경우로 설명하지만, 상기 아웃스탠딩 RTT의 값이 '2'이상인 경우에도 동일한 방식으로 트랜잭션 동작이 수행될 수 있다. 아웃 스탠딩 RRT의 값(OUTSTANDING RTT VALUE)이 '2'이므로, 슬래이브(SLAVE)는 마스터(MASTER)로 제1 및 제2 RRT 신호를 제공할 수 있다. 슬래이브(SLAVE)는 '1'의 값을 갖는 논리 유닛 넘버(LUN),'0'의 값을 갖는 오프셋에 대한 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 '50'의 값을 갖는 데이터 사이즈에 대한 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)를 포함하는 제1 RTT 신호를 마스터(MASTER)로 제공할 수 있다. 슬래이브(SLAVE)는 '2'의 값을 갖는 논리 유닛 넘버(LUN),'0'의 값을 갖는 오프셋에 대한 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 '50'의 값을 갖는 데이터 사이즈에 대한 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)를 포함하는 제2 RTT 신호를 마스터(MASTER)로 제공할 수 있다.
마스터(MASETER)는 제1 RTT 신호에 응답하여 슬래이브(SLAVE)로 제1 데이터(DATA1)을 제공할 수 있다. 마스터(MASTER)는 논리 유닛 넘버(LUN)가 '1'의 값을 갖고,'0'의 값을 갖는 오프셋에 데이터의 헤더가 위치하며, '50'의 값을 갖는 데이터 사이즈에 해당하는 데이터를 슬래이브(SLAVE)로 제공할 수 있다. 앞서 설명한 바와 같이, 마스터(MASTER)와 슬래이브(SLAVE) 간 데이터 전송 버스는 하나만 존재하므로, 마스터(MASETER)는 제1 데이터(DATA1)를 제공한 이후 비로소 제2 데이터(DATA2)를 슬래이브(SLAVE)로 제공할 수 있다.
마스터(MASETER)는 제2 RTT 신호에 응답하여 슬래이브(SLAVE)로 제2 데이터(DATA2)를 제공할 수 있다. 마스터(MASTER)는 논리 유닛 넘버(LUN)가 '2'의 값을 갖고, '0'의 값을 갖는 오프셋에 데이터의 헤더가 위치하며, '50'의 값을 갖는 데이터 사이즈에 해당하는 데이터를 슬래이브(SLAVE)로 제공할 수 있다. 슬래이브(SLAVE)는 제2 데이터(DATA2)를 수신하는 동안 마스터(MASTER)로 제3 RTT신호를 제공할 수 있다. 아웃 스탠딩 RRT의 값(OUTSTANDING RTT VALUE)이 '2'이고, 슬래이브(SLAVE)가 제1 데이터(DATA1)를 모두 수신하면, 계류 중인 RTT 신호는 제2 RTT 신호만 존재하므로, 계류 중인 RTT 신호의 개수가 상기 아웃 스탠딩 RRT의 값(OUTSTANDING RTT VALUE)을 만족하도록 슬래이브(SLAVE)는 마스터(MASTER)로 제3 RTT 신호를 제공할 수 있다.
슬래이브(SLAVE)는 '50'의 값을 갖는 오프셋에 대한 버퍼 오프셋 정보(DATA BUFFER OFFSET) 및 '20'의 값을 갖는 데이터 사이즈에 대한 요청 데이터 사이즈 정보(DATA TRANSFER COUNT)를 포함하는 제3 RTT 신호를 마스터(MASTER)로 제공할 수 있다. 제1 및 제2 프로그램 커맨드(CMD1 및 CMD2)에 대한 프로그램 데이터를 모두 슬래이브(SLAVE)로 제공할 때까지 마스터(MASTER)와 슬래이브(SLAVE)는 전술한 트랜잭션 동작을 반복하여 수행할 수 있다. 슬래이브(SLAVE)는 제1 프로그램 커맨드(CMD1)에 대한 프로그램 데이터를 모두 수신하면, 마스터(MASTER)로'1'의 값을 갖는 논리 유닛 넘버(LUN)를 포함하는 응답 신호(RESPONSE)를 제공할 수 있다. 슬래이브(SLAVE)는 제2 프로그램 커맨드(CMD2)에 대한 프로그램 데이터를 모두 수신하면, 마스터(MASTER)로'2'의 값을 갖는 논리 유닛 넘버(LUN)를 포함하는 응답 신호(RESPONSE)를 제공할 수 있다.
도 6은 본 발명의 종래기술에 따른 데이터 처리 시스템의 동작 과정을 나타낸 흐름도이다.
단계 S602에서, 슬래이브(SLAVE)는 최대 아웃스탠딩 RRT 값을 설정할 수 있다. 슬래이브(SLAVE)는 상기 슬래이브(SLAVE)의 기준으로 설정할 수 있는 최대 아웃스탠딩 RRT 값인 제1 최대 아웃스탠딩 RRT 값에 대한 정보를 마스터(MASTER)로 제공할 수 있다. 마스터(MASTER)는 상기 마스터(MASTER)를 기준으로 설정할 수 있는 최대 아웃스탠딩 값인 제2 최대 아웃스탠딩 RRT 값에 대한 정보를 슬래이브(SLAVE)로 제공할 수 있다. 상기 제1 최대 아웃스탠딩 RRT 값은 제2 최대 아웃스탠딩 RRT 값 이상일 수 있다. 슬래이브(SLAVE)는 상기 제공된 제2 최대 아웃스탠딩 RRT 값에 기초하여 최대 아웃 스탠딩 RRT 값을 설정할 수 있다. 슬래이브(SLAVE)는 상기 제1 및 제2 최대 아웃스탠딩 RRT 값 중 작은 값을 상기 최대 아웃 스탠딩 RRT값으로 설정할 수 있다. 상기 제2 최대 아웃스탠딩 RRT 값은 상기 제1 최대 아웃스탠딩 RRT 값 이하이므로, 슬래이브(SLAVE)는 상기 제2 최대 아웃스탠딩 RRT 값을 상기 최대 아웃스탠딩 RRT 값으로 설정할 수 있다.
단계 S604에서, 슬래이브(SLAVE)는 아웃스탠딩 RRT 값을 최소 아웃스탠딩 RRT 값부터 상기 단계 S602에서 설정한 최대 아웃스탠딩 RRT 값 중 어느 하나의 값으로 고정할 수 있다. 상기 최소 아웃스탠딩 RRT 값은 '1' 또는 '2'의 값을 가질 수 있다. 예를 들어, 상기 최소 아웃스탠딩 RRT 값이 '2'의 값을 갖고, 상기 최대 아웃스탠딩 RRT 값이 '16'의 값을 가질 경우 슬래이브(SLAVE)는 상기 '2'과 '16' 사이의 값들 중 어느 하나인 '5'를 상기 아웃 스탠딩 RRT 값으로 고정할 수 있다.
단계 S606에서, 마스터(MASTER)와 슬래이브(SLAVE)는 단계 S604에서 고정된 아웃 스탠딩 RRT 값으로, 도 2 내지 도 5를 참조하여 설명한 트랜잭션 동작을 수행할 수 있다. 마스터(MASTER)가 슬래이브(SLAVE)로 제공한 프로그램 커맨드에 응답하여 슬래이브(SLAVE)는 RTT 신호를 출력할 수 있으며, 마스터(MASTER)는 상기 RTT 신호에 응답하여 슬래이브(SLAVE)로 프로그램 데이터를 제공할 수 있다.
종래 기술에 따르면 슬래이브(SLAVE)는 최소 아웃스탠딩 RRT 값부터 최대 아웃스탠딩 RRT 값 중 어느 하나의 값으로 고정된 아웃 스탠딩 RRT 값에 따라 RTT신호 및 데이터의 트랜잭션을 수행한다. 마스터(MASTER)와 슬래이브(SLAVE) 각각의 성능에 따라 상기 트랜잭션을 가장 신속하게 수행할 수 있는 최적의 아웃 스탠딩 RRT 값은 상이할 수 있다. 종래기술에 따라 초기에 고정된 아웃스탠딩 RRT 값은 상기 최적의 아웃스텐딩 RRT 값에 해당하지 아니할 수 있다. 상기 최적의 아웃 스탠딩 RRT 값을 검출하기 위해서는 아웃 스탠딩 RRT 값을 변경시켜가면서 실제로 마스터(MASTER)와 슬래이브(SLAVE) 간 트랜잭션을 수행하는 트레이닝이 필요하며, 종래기술에 따르면 상기 트레이닝을 수행하지 아니하므로 상기 최적의 아웃 스탠딩 RRT 값을 검출하지 못하는 문제가 발생한다.
본 발명의 일 실시예에 따르면, 마스터(MASTER)와 슬래이브(SLAVE)는 아웃 스탠딩 RRT 값을 변경하며 트랜잭션을 직접 수행하는 트레이닝 동작을 수행할 수 있다. 슬래이브(SLAVE)는 상기 트레이닝 동작에 따라 상기 트랜잭션을 수행하기 위해 소요되는 시간이 가장 적은 경우에 해당하는 아웃 스탠딩 RRT 값을 최적의 아웃 스탠딩 RRT 값으로 검출한 이후, 상기 최적의 아웃 스탠딩 RRT 값을 아웃 스탠딩 RRT 값으로 설정하여 마스터(MASTER)와 트랜잭션을 수행할 수 있다. 따라서, 마스터(MASTER)가 변경되는 경우에도, 슬래이브(SLAVE)는 상기 트레이닝을 통해 최적의 아웃 스탠딩 RRT 값을 검출함으로써 신속하게 데이터 트랜잭션을 수행할 수 있다.
도 7은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 동작 과정을 나타낸 흐름도이다.
단계 S702에서, 슬래이브(SLAVE)는 최대 아웃스탠딩 RRT 값을 설정할 수 있다. 슬래이브(SLAVE)는 상기 슬래이브(SLAVE)의 기준으로 설정할 수 있는 최대 아웃스탠딩 RRT 값인 제1 최대 아웃스탠딩 RRT 값에 대한 정보를 마스터(MASTER)로 제공할 수 있다. 마스터(MASTER)는 상기 마스터(MASTER)를 기준으로 설정할 수 있는 최대 아웃스탠딩 값인 제2 최대 아웃스탠딩 RRT 값에 대한 정보를 슬래이브(SLAVE)로 제공할 수 있다. 상기 제1 최대 아웃스탠딩 RRT 값은 제2 최대 아웃스탠딩 RRT 값 이상일 수 있다. 슬래이브(SLAVE)는 상기 제2 최대 아웃스탠딩 RRT 값을 상기 최대 아웃스탠딩 RRT 값으로 설정할 수 있다.
단계 S704에서, 마스터(MASTER)와 슬래이브(SLAVE)는 최적의 아웃스탠딩 RTT 값을 검출하는 트레이닝 동작을 수행할 수 있다. 슬래이브(SLAVE)는 아웃 스탠딩 RTT 값을 최소 아웃스탠딩 RTT 값부터 단계 S702에서 설정한 최대 아웃스탠딩 RTT 값까지 순차적으로 변경하면서, 마스터(MASTER)와 트랜잭션을 수행할 수 있다.
도 8은 트레이닝 동작을 상세히 설명하기 위한 순서도이다.
단계 S704는 단계 S802 내지 단계 S810을 포함할 수 있으며, 아웃스탠딩 RTT 값에 따라 상기 단계 S802 내지 단계 S810를 반복 수행할 수 있다.
단계 S802에서, 마스터(MASTER)는 슬래이브(SLAVE)로 프로그램 커맨드(CMD)를 제공할 수 있다. 상기 프로그램 커맨드(CMD)는 복수 개의 프로그램 커맨드들(CMDS)일 수도 있다. 앞서 도 2 내지 도 4를 참조하여 설명한 바와 같이, 상기 프로그램 커맨드(CMD)는 프로그램 데이터의 사이즈에 대한 정보 및 논리 유닛 넘버를 포함할 수 있다.
단계 S804에서, 아웃 스탠딩 RTT 값(i)을 최소 아웃스탠딩 RTT 값(MIN_ORTTV)으로 설정할 수 있다. 상기 최소 아웃 스탠딩 RTT 값은 '1'또는 '2'의 값을 가질 수 있다. 본 발명의 일 실시예에 따르면, 슬래이브(SLAVE)는 아웃 스탠딩 RTT 값을 최소 아웃스탠딩 RTT 값(MIN_ORTTV)부터 최대 아웃스탠딩 RTT 값(MAX_ORTTV)까지 순차적으로 변경하여 트레이닝 동작을 수행함으로써 트랜잭션에 소요되는 실제 시간이 가장 적은 아웃 스탠딩 RTT 값을 검출할 수 있다. 상기 아웃 스탠딩 RTT 값(i)을 설정하는 순서는 다양할 수 있으며, 앞서 설명한 실시예와 같이 오름차순으로 값을 설정하는 실시예에 국한되지 않을 수 있다.
단계 S806에서, 슬래이브(SLAVE)는 메모리(144)의 사이즈(SIZE_WB)와 단계S802에서 제공된 프로그램 커맨드에 포함된 프로그램 데이터의 사이즈(SIZE_CMD)를 비교할 수 있다. 메모리(144)의 사이즈(SIZE_WB)가 프로그램 커맨드에 포함된 프로그램 데이터의 사이즈(SIZE_CMD)보다 작은 경우(단계 S806에서 'N'), 슬래이브(SLAVE)는 메모리(144)의 잔여 공간이 확보될 때까지 후속 동작을 수행하지 아니할 수 있다.
단계 S808에서, 메모리(144)의 사이즈(SIZE_WB)가 프로그램 커맨드에 포함된 프로그램 데이터의 사이즈(SIZE_CMD) 이상인 경우(단계 S806에서 'Y'), 마스터(MASTER)와 슬래이브(SLAVE)는 트랜잭션을 수행할 수 있다. 도2 내지 도 5를 참조하여 설명한 바와 같이, 슬래이브(SLAVE)는 마스터(MASTER)로 단계 S804에서 설정된 아웃스탠딩 RTT 값에 따라 RTT 신호를 제공할 수 있으며, 마스터(MASTER)는 상기 RTT 신호에 응답하여 프로그램 데이터를 출력할 수 있다.
단계 S810에서, 슬래이브(SLAVE)는 단계 S808에서 수행한 트랜잭션에 소요된 시간을 측정할 수 있다. 도 9를 참조하여 후술하는 바와 같이, RTT 신호에 응답하여 출력되는 프로그램 데이터의 사이즈는 상기 RTT 신호 별로 상이할 수 있으므로, 슬래이브(SLAVE)는 RTT 신호 각각에 소요된 시간을 정규화할 수 있다. 또한, 아웃 스탠딩 RTT 값에 따라 마스터(MASTER)로 제공하는 RTT 신호의 개수는 상이할 수 있으므로, 슬래이브(SLAVE)는 상기 정규화된 RTT 신호들의 평균값을 구할 수 있다. 슬래이브(SLAVE)는 아웃 스탠딩 RTT 값에 따라 구한 평균값을 트랜잭션에 소요된 시간(TIME_MEASURE)으로서 구할 수 있다.
도 9는 트랜잭션에 소요된 시간을 측정하는 방법을 상세히 설명하기 위한 순서도이다.
단계 S810은 단계 S902 내지 단계 S906을 포함할 수 있다.
단계 S902에서, 슬래이브(SLAVE)는 단계 S804에서 설정된 아웃 스탠딩 RTT 값(i)에 해당하는 개수의 RTT 신호들 각각을 마스터(MASTER)로 제공한 시점부터, 상기 RTT 신호들 각각에 대한 프로그램 데이터를 수신하기까지 소요된 시간(TIME_RTT_n)을 구할 수 있다. 예를 들어, 아웃 스탠딩 RTT 값(i)가 '2'인 경우, 슬래이브(SLAVE)는 제1 RTT 신호를 출력한 시점부터, 상기 제1 RTT 신호에 대응하는 제1 데이터를 수신하기까지 소요된 시간을 제1 소요 시간(TIME_RTT_1)으로 구하고, 제2 RTT 신호를 출력한 시점부터, 상기 제2 RTT 신호에 대응하는 제2 데이터를 수신하기까지 소요된 시간을 제2 소요 시간(TIME_RTT_2)으로 구할 수 있다.
단계 S904에서, 슬래이브(SLAVE)는 상기 RTT 신호들 각각에 대한 프로그램 데이터를 수신하기까지 소요된 시간(TIME_RTT_n)을 정규화할 수 있다. 상기 RTT 신호들 각각에 포함된 요청 데이터 사이즈는 상이할 수 있으므로, 마스터(MASTER)로부터 제공된 데이터의 사이즈도 상이할 수 있다. 따라서, 동일한 사이즈의 데이터를 전송하는데 소요된 시간을 구하기 위해 슬래이브(SLAVE)는 하기 수학식 1과 같이 소요 시간을 정규화할 수 있다.
슬래이브(SLAVE)는 RTT 신호를 마스터(MASTER)로 제공한 시점부터 상기 RTT 신호에 대한 프로그램 데이터를 수신하기까지 소요된 시간(TIME_RTT_n)을 상기 RTT 신호에 포함된 요청 데이터 사이즈(DTC_n)의 역수를 곱한 이후, 정규화하고자 하는 사이즈(SIZE_NORMALIZE)를 곱하여 정규화된 소요 시간(TIME_NORMALIZE_n)을 구할 수 있다. 예를 들어, 상기 요청 데이터 사이즈(DTC_n)가 16 KB이고, 정규화하고자 하는 사이즈(SIZE_NORMALIZE)가 4KB인 경우, 슬래이브(SLAVE)는 측정된 시간(TIME_RTT_n)을 16으로 나눈 값에 4를 곱하여 정규화된 소요 시간(TIME_NORMALIZE_n)을 구할 수 있다.
단계 S906에서, 슬래이브(SLAVE)는 단계 S904에서 구한 정규화된 소요 시간들(TIME_NORMALIZE_n)의 평균 값을 구할 수 있다. 슬래이브(SLAVE)는 하기 수학식 2와 같이 상기 정규화된 소요 시간들(TIME_NORMALIZE_n)을 모두 더한 값을 아웃 스탠딩 RTT 값(ORTTV)로 나누어 상기 평균 값을 구할 수 있다. 상기 아웃 스탠딩 RTT 값(ORTTV)에 따라 마스터(MASTER)로부터 프로그램 데이터가 출력되는 횟수가 상이할 수 있으므로, 상기 평균값을 구함으로써 단위 RTT 신호에 대응하는 프로그램 데이터를 슬래이브(SLAVE)가 수신하기까지 소요된 시간을 구할 수 있다.
슬래이브(SLAVE)는 아웃 스탠딩 RRT 값(ORTTV)에 해당하는 만큼의 정규화된 소요 시간들을 모두 합한 이후, 상기 아웃 스탠딩 RTT 값(ORTTV)로 나누어 평균값(TIME_AVERAGE)를 구할 수 있다. 예를 들어, 아웃 스탠딩 RRT 값(ORTTV)가 2인 경우, 슬래이브(SLAVE)는 제1 RTT 신호를 출력한 시점부터 제1 데이터를 수신하기까지 소요된 시간을 정규화한 제1 소요시간과 제2 RTT 신호를 출력한 시점부터 제2 데이터를 수신하기까지 소요된 시간을 정규화한 제2 소요시간을 합한 이후, 상기 아웃 스탠딩 RRT 값(ORTTV)인 '2'로 나누어 상기 평균값(TIME_AVERAGE)을 구할 수 있다.
다시 도 7로 돌아와, 단계 S706에서, 슬래이브(SLAVE)는 상기 서로 다른 아웃 스탠딩 RTT 값에 기초하여 수행한 트랜잭션에 소요된 시간들 중 최소값에 대응하는 아웃 스탠딩 RTT 값을 최적의 아웃스탠딩 RTT 값으로 검출할 수 있다. 구체적으로 슬래이브(SLAVE)는 앞서 도 9를 참조하여 설명한 단계 S906에서 서로 다른 아웃 스탠딩 RTT 값에 대해 구한 구한 평균값을 비교하여 최소값을 갖는 아웃 스탠딩 RTT 값을 최적의 아웃 스탠딩 RTT 값(OPTIMAL_ORTTV)으로 검출할 수 있다.
단계 S708에서, 마스터(MASTER)와 슬래이브(SLAVE)는 단계 S706에서 검출된 최적의 아웃스탠딩 RRT 값(OPTIMAL_ORTTV)에 기초하여 트랜잭션을 수행할 수 있다. 본 발명의 일 실시예에 따르면, 마스터(MASTER)와 슬래이브(SLAVE)는 아웃 스탠딩 RTT 값을 변경하여 실제 트랜잭션을 수행하는 트레이닝을 수행함으로써, 상기 마스터(MASTER)와 슬래이브(SLAVE)의 성능에 따라 변할 수 있는 최적의 아웃스탠딩 RTT 값을 검출할 수 있다. 상기 최적의 아웃스탠딩 RTT 값에 따라 트랜잭션을 수행함으로써, 슬래이브(SLAVE)는 프로그램 속도를 향상시킬 수 있다.
본 발명의 일 실시예에 따르면, 슬래이브(SLAVE)는 전술한 트레이닝 동작을 플래시 메모리 제조 직후 초기 단계에서 수행할 수 있다. 뿐만 아니라, 슬래이브(SLAVE)는 플래시 메모리의 동작 중에도 주기적으로 상기 트레이닝 동작을 수행할 수 있다. 슬래이브(SLAVE)는 다이나믹(dynamic)하게 상기 트레이닝 동작을 수행함으로써 시간에 따라 변하는 마스터(MASTER)와 슬래이브(SLAVE)의 성능을 반영하여 최적의 아웃스탠딩 RTT 값을 검출할 수 있다.
도 10은 본 발명의 일 실시예에 따른 메모리 시스템(110)을 상세히 나타내는 도면이다.
도 10은 도 1에 도시된 데이터 처리 시스템(100)에서 본 발명과 관련된 구성만 간략히 도시한다.
컨트롤러(130)는 호스트 인터페이스 유닛(132) 및 프로세서(134)를 포함할 수 있다. 프로세서(134)는 최대 ORTTV 결정부(1002), RTT 트레이닝 수행부(1004) 및 버퍼 관리부(1010)를 포함할 수 있다.
최대 ORTTV 결정부(1002)는 최대 아웃스탠딩 RRT 값을 설정할 수 있다. 최대 ORTTV 결정부(1002)는 앞서 도 7을 참조하여 설명한 단계 S702에 대응하는 동작을 수행할 수 있다. 최대 ORTTV 결정부(1002)는 상기 메모리 시스템(110)의 기준으로 설정할 수 있는 최대 아웃스탠딩 RRT 값인 제1 최대 아웃스탠딩 RRT 값(INFO_MAX_DEVICE)에 대한 정보를 호스트 인터페이스 유닛(132)으로 제공할 수 있다. 호스트(102)는 상기 호스트(102)를 기준으로 설정할 수 있는 최대 아웃스탠딩 값인 제2 최대 아웃스탠딩 RRT 값에 대한 정보(INFO_MAX_HOST)를 호스트 인터페이스 유닛(132)으로 제공할 수 있다. 상기 제1 최대 아웃스탠딩 RRT 값은 제2 최대 아웃스탠딩 RRT 값 이상일 수 있다. 최대 ORTTV 결정부(1002)는 상기 제2 최대 아웃스탠딩 RRT 값을 상기 최대 아웃스탠딩 RRT 값으로 설정할 수 있다. 최대 ORTTV 결정부(1002)는 상기 최대 아웃스탠딩 RRT 값에 대한 정보(INFO_MAX_RTT)를 RTT 트레이닝 수행부(1004)로 제공할 수 있다.
RTT 트레이닝 수행부(1004)는 상기 제공된 최대 아웃스탠딩 RRT 값에 대한 정보(INFO_MAX_RTT)에 기초하여 최적의 아웃스탠딩 RTT 값을 검출하는 트레이닝 동작을 수행할 수 있다. RTT 트레이닝 수행부(1004)는 앞서 도 7을 참조하여 설명한 단계 S704에 대응하는 동작을 수행할 수 있다. RTT 트레이닝 수행부(1004)는 아웃 스탠딩 RTT 값을 최소 아웃스탠딩 RTT 값부터 최대 아웃스탠딩 RTT 값까지 순차적으로 변경하면서, 호스트(102)와 트랜잭션을 수행할 수 있다. RTT 트레이닝 수행부(1004)는 상기 트레이닝 동작에 따라 검출한 최적의 아웃스탠딩 RTT 값에 대한 정보(INFO_OPTIMAL)을 호스트 인터페이스 유닛(132)으로 제공할 수 있다.
버퍼 관리부(1010)는 메모리(144)의 사이즈(SIZE_WB)와 프로그램 커맨드에 포함된 프로그램 데이터의 사이즈(SIZE_CMD)를 비교할 수 있다. 메모리(144)의 사이즈(SIZE_WB)가 프로그램 커맨드에 포함된 프로그램 데이터의 사이즈(SIZE_CMD)보다 작은 경우 RTT 트레이닝 수행부(1004)는 메모리(144)의 잔여 공간이 확보될 때까지 트레이닝 동작을 수행하지 아니할 수 있다.
호스트 인터페이스 유닛(132)은 최적의 아웃스탠딩 RTT 값에 대한 정보(INFO_OPTIMAL)에 기초하여 호스트(102)와 트랜잭션을 수행할 수 있다. 호스트 인터페이스 유닛(132)은 호스트(102)로부터 제공된 프로그램 커맨드에 응답하여 아웃 스탠딩 RTT 값을 상기 최적의 아웃스탠딩 RTT 값으로 설정한 이후 RTT 신호를 출력하고 프로그램 데이터를 수신할 수 있다. 또한, 호스트 인터페이스 유닛(132)은 제1 최대 아웃스탠딩 RRT 값(INFO_MAX_DEVICE)에 대한 정보를 호스트(102)로 전달하고, 제2 최대 아웃스탠딩 RRT 값에 대한 정보(INFO_MAX_HOST)를 최대 ORTTV 결정부(1002)로 전달할 수 있다.
도 11은 RTT 트레이닝 수행부의 세부 구성을 나타내는 도면이다.
RTT 트레이닝 수행부(1004)는 ORTTV 선택부(1102), 시간 측정부(1104), 정규화부(1106), 평균값 계산부(1108) 및 최적 ORTTV 결정부(1110)을 포함할 수 있다.
ORTTV 선택부(1102)는 아웃 스탠딩 RTT 값을 최소 아웃스탠딩 RTT 값(MIN_ORTTV)으로 설정할 수 있다. 상기 최소 아웃 스탠딩 RTT 값은 '1'또는 '2'의 값을 가질 수 있다. ORTTV 선택부(1102)는 상기 최소 아웃 스탠딩 RTT 값에 대한 트레이닝 동작이 완료되면 상기 아웃 스탠딩 RTT 값을 순차적으로 증가시켜 최대 아웃스탠딩 RTT 값(MAX_ORTTV)까지 선택할 수 있다. ORTTV 선택부(1102)는 선택된 아웃 스탠딩 RTT 값에 대한 정보(INFO_SELECT)를 호스트 인터페이스 유닛(132)으로 제공할 수 있다.
시간 측정부(1104)는 선택된 아웃 스탠딩 RTT 값에 해당하는 개수의 RTT 신호들 각각을 호스트(102)로 제공한 시점부터, 상기 RTT 신호들 각각에 대한 프로그램 데이터를 수신하기까지 소요된 시간(TIME_RTT_n)을 구할 수 있다. 예를 들어, 아웃 스탠딩 RTT 값(i)가 '2'인 경우, 시간 측정부(1104)는 제1 RTT 신호를 출력한 시점부터, 상기 제1 RTT 신호에 대응하는 제1 데이터를 수신하기까지 소요된 시간을 제1 소요 시간(TIME_RTT_1)으로 구하고, 제2 RTT 신호를 출력한 시점부터, 상기 제2 RTT 신호에 대응하는 제2 데이터를 수신하기까지 소요된 시간을 제2 소요 시간(TIME_RTT_2)으로 구할 수 있다. 시간 측정부(1104)는 측정된 시간에 대한 정보(INFO_RESULT)를 정규화부(1106)으로 제공할 수 있다.
정규화부(1106)는 상기 RTT 신호들 각각에 대한 프로그램 데이터를 수신하기까지 소요된 시간(TIME_RTT_n)을 정규화할 수 있다. 상기 RTT 신호들 각각에 포함된 요청 데이터 사이즈는 상이할 수 있으므로, 호스트(102)로부터 제공된 데이터의 사이즈도 상이할 수 있다. 따라서, 동일한 사이즈의 데이터를 전송하는데 소요된 시간을 구하기 위해 슬래이브(SLAVE)는 상기 수학식 1과 같이 소요 시간을 정규화할 수 있다.
정규화부(1106)는 RTT 신호를 호스트(102)로 제공한 시점부터 상기 RTT 신호에 대한 프로그램 데이터를 수신하기까지 소요된 시간(TIME_RTT_n)을 상기 RTT 신호에 포함된 요청 데이터 사이즈(DTC_n)의 역수를 곱한 이후, 정규화하고자 하는 사이즈(SIZE_NORMALIZE)를 곱하여 정규화된 소요 시간(TIME_NORMALIZE_n)을 구할 수 있다. 예를 들어, 상기 요청 데이터 사이즈(DTC_n)가 16 KB이고, 정규화하고자 하는 사이즈(SIZE_NORMALIZE)가 4KB인 경우, 정규화부(1106)는 측정된 시간(TIME_RTT_n)을 16으로 나눈 값에 4를 곱하여 정규화된 소요 시간(TIME_NORMALIZE_n)을 구할 수 있다. 정규화부(1106)는 정규화된 시간에 대한 정보(INFO_NORM)을 평균값 계산부(1108)로 제공할 수 있다.
평균값 계산부(1108)는 정규화된 소요 시간들(TIME_NORMALIZE_n)의 평균 값을 구할 수 있다. 평균값 계산부(1108)는 상기 수학식 2와 같이 상기 정규화된 소요 시간들(TIME_NORMALIZE_n)을 모두 더한 값을 아웃 스탠딩 RTT 값(ORTTV)로 나누어 상기 평균 값을 구할 수 있다. 상기 아웃 스탠딩 RTT 값(ORTTV)에 따라 호스트(102)로부터 프로그램 데이터가 출력되는 횟수가 상이할 수 있으므로, 상기 평균값을 구함으로써 단위 RTT 신호에 대응하는 프로그램 데이터를 슬래이브(SLAVE)가 수신하기까지 소요된 시간을 구할 수 있다.
평균값 계산부(1108)는 아웃 스탠딩 RRT 값(ORTTV)에 해당하는 만큼의 정규화된 소요 시간들을 모두 합한 이후, 상기 아웃 스탠딩 RTT 값(ORTTV)로 나누어 평균값(TIME_AVERAGE)를 구할 수 있다. 예를 들어, 아웃 스탠딩 RRT 값(ORTTV)가 2인 경우, 평균값 계산부(1108)는 제1 RTT 신호를 출력한 시점부터 제1 데이터를 수신하기까지 소요된 시간을 정규화한 제1 소요시간과 제2 RTT 신호를 출력한 시점부터 제2 데이터를 수신하기까지 소요된 시간을 정규화한 제2 소요시간을 합한 이후, 상기 아웃 스탠딩 RRT 값(ORTTV)인 '2'로 나누어 상기 평균값(TIME_AVERAGE)을 구할 수 있다. 평균값 계산부(1108)는 평균값에 대한 정보(INFO_TIME)을 최적 ORTTV 결정부(1110)로 제공할 수 있다.
최적 ORTTV 결정부(1110)는 상기 서로 다른 아웃 스탠딩 RTT 값에 기초하여 수행한 트랜잭션에 소요된 시간들 중 최소값에 대응하는 아웃 스탠딩 RTT 값을 최적의 아웃스탠딩 RTT 값으로 검출할 수 있다. 구체적으로 최적 ORTTV 결정부(1110)는 서로 다른 아웃 스탠딩 RTT 값에 대해 구한 구한 평균값을 비교하여 최소값을 갖는 아웃 스탠딩 RTT 값을 최적의 아웃 스탠딩 RTT 값(OPTIMAL_ORTTV)으로 검출할 수 있다. 최적 ORTTV 결정부(1110)는 최적의 아웃 스탠딩 RTT 값에 대한 정보(INFO_OPTIMAL)을 호스트 인터페이스 유닛(132)으로 제공할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 할 수 있다.
102: 호스트
130: 컨트롤러
150: 메모리 장치
130: 컨트롤러
150: 메모리 장치
Claims (20)
- 호스트로부터 제공된 프로그램 커맨드에 응답하여 상기 호스트로 임계치만큼의 수신 준비 신호들을 제공하는 호스트 인터페이스; 및
상기 임계치에 대한 최적 값을 결정하는 트레이닝을 수행하는 프로세서
를 포함하되,
상기 프로세서는 상기 임계치를 최소값부터 최대값 중 어느 하나의 값으로 선택하는 ORTTV 선택부;
상기 선택된 임계치만큼의 수신 준비 신호들을 상기 호스트로 제공하도록 상기 호스트 인터페이스를 제어하며, 상기 수신 준비 신호들에 대응하는 데이터에 대한 수신 시간을 측정하는 시간 측정부;
상기 수신 시간을 정규화 하는 정규화부; 및
상기 최소값부터 상기 최대값에 대해 측정한 정규화 시간들 중 최소 정규화 시간에 대응하는 임계치를 상기 최적 값으로 결정하는 옵티말 ORTTV 결정부
를 포함하는 컨트롤러.
- 제1 항에 있어서,
상기 프로그램 커맨드에 대응하는 데이터를 임시 저장하는 메모리
를 더 포함하는 컨트롤러.
- 제2 항에 있어서,
상기 프로세서는
외부로부터 제공된 정보에 기초하여 상기 최대값을 결정하는 최대 ORTTV 결정부; 및
상기 메모리의 잔여 공간이 상기 프로그램 커맨드에 대응하는 데이터의 사이즈보다 크면 상기 수신 준비 신호를 출력하도록 제어하는 버퍼 관리부
를 컨트롤러.
- 제1 항에 있어서,
상기 ORTTV 선택부는
상기 임계치를 상기 최소값부터 상기 최대값까지 변경하여 상기 임계치를 선택하는
컨트롤러.
- 제1 항에 있어서,
상기 시간 측정부는
상기 수신 준비 신호들 각각을 출력한 시점부터 상기 수신 준비 신호들 각각에 대응하는 데이터를 수신 완료한 시점까지 소요된 시간을 측정하는
컨트롤러.
- 제1 항에 있어서,
상기 정규화부는
상기 수신 준비 신호들 각각에 대해 측정된 시간을 상기 수신 준비 신호들 각각에 대응하는 데이터 사이즈로 나눈 값과 정규화 사이즈를 곱하는
컨트롤러.
- 제6 항에 있어서,
상기 정규화부는
상기 수신 준비 신호들 각각에 대해 정규화된 시간을 모두 더한 값을 상기 선택된 임계치로 나누는
를 포함하는 컨트롤러.
- 제1 항에 있어서,
상기 프로세서는
단일 커맨드에 응답하여 복수의 수신 준비 신호들을 생성하는
컨트롤러.
- 제1 항에 있어서,
상기 시간 측정부는
외부로부터 데이터를 수신한 시점부터 상기 데이터를 수신 완료한 시점까지 소요된 시간을 측정하는
컨트롤러.
- 호스트로부터 제공된 프로그램 커맨드에 응답하여 임계치만큼의 수신 준비 신호들을 출력하는 단계; 및
상기 임계치에 대한 최적 값을 결정하는 트레이닝을 수행하는 단계
를 포함하되,
상기 트레이닝을 수행하는 단계는
상기 임계치를 최소값부터 최대값 중 어느 하나의 값으로 선택하는 단계;
상기 선택된 임계치만큼의 수신 준비 신호들을 출력하고, 상기 수신 준비 신호들에 대응하는 데이터에 대한 수신 시간을 측정하는 단계;
상기 수신 시간을 정규화 하는 단계; 및
상기 최소값부터 상기 최대값에 대해 측정한 정규화 시간들 중 최소 정규화 시간에 대응하는 임계치를 상기 최적 값으로 결정하는 단계
를 포함하는 컨트롤러의 동작 방법.
- 제10 항에 있어서,
상기 프로그램 커맨드에 대응하는 데이터를 메모리에 임시 저장하는 단계
를 포함하는 컨트롤러의 동작 방법.
- 제11 항에 있어서,
상기 트레이닝을 수행하는 단계는
외부로부터 제공된 정보에 기초하여 상기 최대값을 결정하는 단계; 및
상기 메모리의 잔여 공간이 상기 프로그램 커맨드에 대응하는 데이터의 사이즈보다 크면 상기 수신 준비 신호를 출력하는 단계
를 포함하는 컨트롤러의 동작 방법.
- 제10 항에 있어서,
상기 임계치를 선택하는 단계는
상기 임계치를 상기 최소값부터 상기 최대값까지 변경하여 상기 임계치를 선택하는
컨트롤러의 동작 방법.
- 제10 항에 있어서,
상기 수신 시간을 측정하는 단계는
상기 수신 준비 신호들 각각을 출력한 시점부터 상기 수신 준비 신호들 각각에 대응하는 데이터를 수신 완료한 시점까지 소요된 시간을 측정하는
컨트롤러의 동작 방법.
- 제10 항에 있어서,
상기 정규화하는 단계는
상기 수신 준비 신호들 각각에 대해 측정된 시간을 상기 수신 준비 신호들 각각에 대응하는 데이터 사이즈로 나눈 값과 정규화 사이즈를 곱하는
컨트롤러의 동작 방법.
- 제15 항에 있어서,
상기 정규화하는 단계는
상기 수신 준비 신호들 각각에 대해 정규화된 시간을 모두 더한 값을 상기 선택된 임계치로 나누는
컨트롤러의 동작 방법.
- 제10 항에 있어서,
단일 커맨드에 응답하여 복수의 수신 준비 신호들을 생성하는 단계
를 포함하는 컨트롤러의 동작 방법.
- 제10 항에 있어서,
상기 수신 시간 측정하는 단계는
외부로부터 데이터를 수신한 시점부터 상기 데이터를 수신 완료한 시점까지 소요된 시간을 측정하는
컨트롤러의 동작 방법.
- 제10 항에 있어서,
상기 최소 값은
미리 정해진 값인
컨트롤러의 동작 방법.
- 유니버설 플래시 기억 장치(Universal Flash Storage:UFS)의 통신 방법에 있어서,
마스터로부터 최대 ORTTV(Outstanding Ready To Transfer Value)를 수신하는 단계;
ORTTV를 최소 ORTTV부터 상기 최대 ORTTV까지 변경하여 어느 하나의 값으로 선택하고, 데이터 트랜잭션을 수행하는 트레이닝을 수행하는 단계; 및
상기 트레이닝에 따라 선택된 최적의 ORTTV에 기초하여 후속 데이터 트랜잭션을 수행하는 단계
를 포함하는 데이터 처리 시스템의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190048429A KR20200124937A (ko) | 2019-04-25 | 2019-04-25 | 컨트롤러 및 그것의 동작방법 |
US16/701,990 US11521123B2 (en) | 2019-04-25 | 2019-12-03 | Controller and operating method thereof |
CN201911354700.XA CN111857566B (zh) | 2019-04-25 | 2019-12-25 | 控制器及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190048429A KR20200124937A (ko) | 2019-04-25 | 2019-04-25 | 컨트롤러 및 그것의 동작방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200124937A true KR20200124937A (ko) | 2020-11-04 |
Family
ID=72917273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190048429A KR20200124937A (ko) | 2019-04-25 | 2019-04-25 | 컨트롤러 및 그것의 동작방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11521123B2 (ko) |
KR (1) | KR20200124937A (ko) |
CN (1) | CN111857566B (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240123019A (ko) * | 2023-02-06 | 2024-08-13 | 에스케이하이닉스 주식회사 | 라이트 캐시 태그 순서 유지 기능을 가지는 메모리 컨트롤러, 메모리 컨트롤러 구동 방법 및 상기 메모리 컨트롤러를 구비한 메모리 시스템 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5916309A (en) * | 1997-05-12 | 1999-06-29 | Lexmark International Inc. | System for dynamically determining the size and number of communication buffers based on communication parameters at the beginning of the reception of message |
US9171585B2 (en) * | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US20070091922A1 (en) * | 2005-10-21 | 2007-04-26 | Steven Elliot | Method and apparatus for adaptive bandwidth control with a bandwidth guarantee |
KR101804521B1 (ko) * | 2011-08-16 | 2017-12-07 | 에스케이하이닉스 주식회사 | 집적회로 칩, 이를 포함하는 시스템 및 동작방법, 메모리 및 메모리 시스템 |
KR20140013893A (ko) | 2012-07-25 | 2014-02-05 | 삼성전자주식회사 | 메모리 코어 트레이닝 방법 및 메모리 시스템 |
KR102145420B1 (ko) * | 2013-07-25 | 2020-08-18 | 삼성전자주식회사 | 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 |
KR20160111222A (ko) * | 2015-03-16 | 2016-09-26 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템, 그것을 포함하는 컴퓨팅 시스템 |
US9864716B2 (en) * | 2015-05-20 | 2018-01-09 | International Business Machines Corporation | Receiving buffer credits by a plurality of channels of one or more host computational devices for transmitting data to a control unit |
KR102314135B1 (ko) * | 2015-06-22 | 2021-10-18 | 삼성전자 주식회사 | 적응적인 루프를 수행하는 플래시 메모리 장치, 메모리 시스템 및 그 동작방법 |
US10126968B2 (en) * | 2015-09-24 | 2018-11-13 | International Business Machines Corporation | Efficient configuration of memory components |
US10141935B2 (en) * | 2015-09-25 | 2018-11-27 | Intel Corporation | Programmable on-die termination timing in a multi-rank system |
US9865328B1 (en) * | 2015-12-04 | 2018-01-09 | Integrated Device Technology, Inc. | Nullifying incorrect sampled data contribution in decision feedback equalizer at restart of forwarded clock in memory system |
KR20170110448A (ko) * | 2016-03-23 | 2017-10-11 | 삼성전자주식회사 | 메모리 컨트롤러 및 이를 포함하는 저장 장치 |
KR102375695B1 (ko) * | 2017-03-14 | 2022-03-18 | 에스케이하이닉스 주식회사 | 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치 |
KR102353027B1 (ko) * | 2017-07-03 | 2022-01-20 | 삼성전자주식회사 | 스토리지 장치의 데이터 트레이닝 방법 |
-
2019
- 2019-04-25 KR KR1020190048429A patent/KR20200124937A/ko not_active Application Discontinuation
- 2019-12-03 US US16/701,990 patent/US11521123B2/en active Active
- 2019-12-25 CN CN201911354700.XA patent/CN111857566B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20200342355A1 (en) | 2020-10-29 |
US11521123B2 (en) | 2022-12-06 |
CN111857566B (zh) | 2024-04-16 |
CN111857566A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11995003B2 (en) | Method of data caching and device caching data | |
KR102691851B1 (ko) | 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법 | |
KR20200022118A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
KR102419036B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
KR20180121187A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20200095103A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
KR102507140B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102691906B1 (ko) | 저장 장치 및 그 동작 방법 | |
KR20200085967A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
KR20210051921A (ko) | 메모리 시스템 및 그것의 동작방법 | |
KR102678655B1 (ko) | 메모리 인터페이스, 이를 포함하는 데이터 저장 장치 및 그 동작 방법 | |
US11520694B2 (en) | Data storage device and operating method thereof | |
KR20240116679A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20200137244A (ko) | 메모리 시스템 및 그것의 동작방법 | |
KR20200059936A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
US20240330175A1 (en) | Storage device for classifying data based on stream class number, storage system, and operating method thereof | |
US11922062B2 (en) | Controller and operating method thereof | |
KR20200114086A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
CN111857566B (zh) | 控制器及其操作方法 | |
KR102695482B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20190113107A (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
KR102687571B1 (ko) | 메모리 시스템 및 컨트롤러 | |
KR20150102329A (ko) | 데이터 저장 장치 | |
KR20210156061A (ko) | 저장 장치 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |