KR20210044083A - 컨트롤러 및 이의 동작 방법 - Google Patents
컨트롤러 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR20210044083A KR20210044083A KR1020190127206A KR20190127206A KR20210044083A KR 20210044083 A KR20210044083 A KR 20210044083A KR 1020190127206 A KR1020190127206 A KR 1020190127206A KR 20190127206 A KR20190127206 A KR 20190127206A KR 20210044083 A KR20210044083 A KR 20210044083A
- Authority
- KR
- South Korea
- Prior art keywords
- address
- logical address
- hexadecimal
- controller
- flash
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
Abstract
본 기술은 커맨드를 생성하고, 2진수보다 높은 기수법(notation)으로 논리 어드레스를 관리하며, 상기 커맨드 및 상기 논리 어드레스를 출력하는 중앙 처리 장치; 및 상기 커맨드를 다이들의 워크로드에 따라 큐잉하고, 상기 논리 어드레스를 물리 어드레스로 변환하여, 선택된 채널을 통해 상기 커맨드 및 상기 물리 어드레스를 출력하는 플래시 인터페이스 계층을 포함하는 컨트롤러 및 이의 동작 방법을 포함한다.
Description
본 발명은 컨트롤러 및 이의 동작 방법에 관한 것으로, 보다 구체적으로는 논리 어드레스를 물리 어드레스로 변환하는 컨트롤러 및 이의 동작 방법에 관한 것이다.
메모리 시스템(memory system)은 저장 장치(storage device) 및 컨트롤러(controller)를 포함할 수 있다.
메모리 장치는 다수의 다이들(dies)을 포함할 수 있으며, 각각의 다이들은 데이터가 저장되는 다수의 메모리 셀들을 포함할 수 있다. 메모리 장치는 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치로 구현되거나, 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치로 구현될 수 있다. 최근에는 휴대폰 및 노트북 등의 휴대용 전자 기기의 사용이 증가하면서, 비휘발성 메모리 장치로써 플래시 메모리 장치가 많이 사용되고 있다.
컨트롤러는 호스트(host)와 메모리 장치 사이에서 데이터 통신을 제어할 수 있다. 예를 들면, 컨트롤러는 호스트의 요청(request)에 따라 메모리 장치를 제어할 수 있다. 또한, 컨트롤러는 호스트의 요청이 없더라도 메모리 시스템의 성능을 향상시키기 위한 백그라운드 동작(background operation)을 수행할 수도 있다.
호스트는 PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 컨트롤러를 통해 메모리 장치와 통신할 수 있다. 호스트와 메모리 시스템 간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들이 포함될 수 있다.
본 발명의 실시예는 플래시 변환 계층(flash translation layer)의 어드레스 변환 방식을 변경함으로써, 플래시 변환 계층의 워크로드(workload)를 감소시킬 수 있는 컨트롤러 및 이의 동작 방법을 제공한다.
본 발명의 실시예에 따른 컨트롤러는, 커맨드를 생성하고, 2진수보다 높은 기수법(notation)으로 논리 어드레스를 관리하며, 상기 커맨드 및 상기 논리 어드레스를 출력하는 중앙 처리 장치; 및 상기 커맨드를 다이들의 워크로드에 따라 큐잉하고, 상기 논리 어드레스를 물리 어드레스로 변환하여, 선택된 채널을 통해 상기 커맨드 및 상기 물리 어드레스를 출력하는 플래시 인터페이스 계층을 포함한다.
본 발명의 실시예에 따른 컨트롤러는, 다수의 채널들의 워크로드를 고려하여 하나의 채널을 선택하고, 상기 선택된 채널에 연결된 다수의 다이들에 포함된 메모리 블록들의 어드레스들을 오름차순 방식의 16진수(hexadecimal number) 값으로 관리하고, 상기 16진수 값의 어드레스를 2진수 코드로 변환하여 논리 어드레스를 출력하는 플래시 변환 계층(flash translation layer); 및 상기 논리 어드레스를 상기 16진수 값으로 변환하고, 변환된 상기 16 진수 값에 따라 선택된 다이 및 메모리 블록의 물리 어드레스를 생성하고, 상기 물리 어드레스를 상기 선택된 채널을 통해 출력하는 플래시 인터페이스 계층(flash interface layer)을 포함한다.
본 발명의 실시예에 따른 컨트롤러의 동작 방법은, 다수의 다이들에 포함된 메모리 블록들의 어드레스들을 16진수 값으로 관리하는 단계; 채널들의 워드로드에 따라 선택된 플래시 인터페이스에, 상기 메모리 블록들 중에서 선택된 메모리 블록에 대응되는 어드레스의 논리 어드레스를 출력하는 단계; 상기 논리 어드레스를 16진수 값으로 변환하고, 변환된 상기 16진수 값에 대응되는 다이의 어드레스 및 메모리 블록의 어드레스를 포함하는 물리 어드레스를 출력하는 단계; 및 상기 물리 어드레스에 따라 선택된 상기 메모리 블록에 액세스하는 단계를 포함한다.
본 기술은 논리 어드레스를 물리 어드레스로 변환하는 방식을 변경함으로써, 컨트롤러에 포함된 플래시 변환 계층의 워크로드를 감소시킬 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1에 도시된 다수의 다이들(dies) 중 어느 하나의 다이를 구체적으로 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 컨트롤러를 구체적으로 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 플래시 변환 계층과 플래시 인터페이스들 사이에서의 통신 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 플래시 변환 계층을 구체적으로 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 플래시 인터페이스를 구체적으로 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 논리 어드레스 생성 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 실시예에 따른 논리 어드레스 생성부를 구체적으로 설명하기 위한 도면이다.
도 9는 본 발명의 실시예에 따른 L2P 변환부를 구체적으로 설명하기 위한 도면이다.
도 10은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 11은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 12는 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 13은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 2는 도 1에 도시된 다수의 다이들(dies) 중 어느 하나의 다이를 구체적으로 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 컨트롤러를 구체적으로 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 플래시 변환 계층과 플래시 인터페이스들 사이에서의 통신 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 플래시 변환 계층을 구체적으로 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 플래시 인터페이스를 구체적으로 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 논리 어드레스 생성 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 실시예에 따른 논리 어드레스 생성부를 구체적으로 설명하기 위한 도면이다.
도 9는 본 발명의 실시예에 따른 L2P 변환부를 구체적으로 설명하기 위한 도면이다.
도 10은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 11은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 12는 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 13은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(1000)은 데이터가 저장되는 메모리 장치(1100)와, 메모리 장치(1100)와 호스트(2000) 사이에서 통신하는 컨트롤러(1200)를 포함할 수 있다.
메모리 장치(1100)는 다수의 다이들(D1~Di; i는 양의 정수)을 포함할 수 있다. 예를 들면, 다이들(D1~Di)은 전원 공급이 중단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치(volatile memory device) 또는 전원 공급이 중단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치(non-volatile memory device)로 구현될 수 있다. 이하 실시예에서는 비휘발성 메모리 장치로 구현된 다이들(D1~Di)이 실시예로써 도시되었다. 비휘발성 메모리 장치는 낸드 플래시 메모리 장치(NAND flash memory device)일 수 있다.
다이들(D1~Di)은 다수의 채널들(channels; CH1~CHk; k는 양의 정수)을 통해 컨트롤러(1200)에 연결될 수 있다. 예를 들면, 제1 채널(CH1)에는 제1 내지 제i 다이들(D1~Di)이 연결될 수 있고, 제2 채널(CH2)에는 제1 내지 제i 다이들(D1~Di)이 연결될 수 있고, 제k 채널(CHk)에는 제1 내지 제i 다이들(D1~Di)이 연결될 수 있다. 서로 다른 채널들(CH1~CHk)에 연결된 제1 내지 제i 다이들(D1~Di)은 물리적으로(physically) 서로 다른 다이들로 구성된다. 예를 들면, 제1 채널(CH1)에 연결된 제1 다이(D1)는 제2 채널(CH2)에 연결된 제1 메모리 장치(MD1)와 물리적으로 서로 다르다. 따라서, 다이들(D1~Di)의 물리 어드레스는 서로 다르다.
컨트롤러(1200)는 호스트(2000)와 메모리 장치(1100) 사이에서 통신할 수 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)의 요청에 따라 메모리 장치(1100)에 액세스(access)하거나, 백그라운드 동작을 위해 메모리 장치(1100)에 액세스할 수 있다. 컨트롤러(1200)와 메모리 장치(1100)가 하나의 채널을 통해서 연결된 경우에는 채널 어드레스가 불필요하다. 하지만, 도 1에 도시된 바와 같이, 멀티 채널(multi channel) 방식의 메모리 시스템(1000)에서는 다수의 채널들을 통해 컨트롤러(1200)와 메모리 장치(1100)가 서로 연결되므로, 메모리 장치에 액세스하기 위해서는 채널 어드레스도 필요하다.
즉, 컨트롤러(1200)가 선택된 메모리 블록에 액세스하기 위해서는, 채널 어드레스, 다이 어드레스 및 메모리 블록의 어드레스가 필요하다. 어드레스는 컨트롤러(1200)의 플래시 변환 계층(flash translation layer)에서 관리하는데, 플래시 변화 계층의 구체적인 기능은 후술하도록 한다.
호스트(2000)는 다양한 동작을 위한 요청들(RQ)을 생성하고, 생성된 요청들(RQ)을 메모리 시스템(1000)에게 출력할 수 있다. 예를 들면, 요청들(RQ)은 프로그램 동작(program operation)을 제어할 수 있는 프로그램 요청(program request), 리드 동작(read operation)을 제어할 수 있는 리드 요청(read request), 소거 동작(erase operation)을 제어할 수 있는 소거 요청(erase request) 등을 포함할 수 있다. 호스트(2000)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI), NVMe(Non-Volatile Memory Express), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들을 통해 메모리 시스템(1000)과 통신할 수 있다.
도 2는 도 1에 도시된 다수의 다이들(dies) 중 어느 하나의 다이를 구체적으로 설명하기 위한 도면이다.
도 2를 참조하면, 제i 다이(Di)는 데이터가 저장되는 메모리 셀 어레이(Memory Cell Array; 110)와, 프로그램, 리드 또는 소거 동작을 수행하는 주변 회로들(120~160)과, 주변 회로들(120~160)을 제어하는 제어 로직(170)을 포함할 수 있다.
메모리 셀 어레이(110)는 데이터가 저장되는 다수의 메모리 블록들을 포함할 수 있다. 메모리 블록들 각각은 다수의 메모리 셀들을 포함하며, 메모리 셀들은 기판에 평행하게 배열되는 2차원 구조 또는 기판에 수직 방향으로 적층되는 3차원 구조로 구현될 수 있다.
주변 회로들(120~160)은 전압 생성부(Voltage Generator; 120), 로우 디코더(Row Decoder; 130), 페이지 버퍼 그룹(Page Buffer Group; 140), 컬럼 디코더(Column Decoder; 150) 및 입출력 회로(Input/output Circuit; 160)을 포함할 수 있다.
전압 생성부(120)는 동작 신호(OPS)에 응답하여 다양한 동작들에 필요한 동작 전압들(Vop)을 생성 및 출력할 수 있다. 예를 들면, 전압 생성부(120)는 프로그램 전압, 검증 전압, 리드 전압, 패스 전압 및 소거 전압 등의 동작 전압들(Vop)을 생성하고 출력할 수 있다.
로우 디코더(130)는 로우 어드레스(RADD)에 따라 메모리 셀 어레이(110)에 포함된 메모리 블록들 중에서 하나의 메모리 블록을 선택하고, 선택된 메모리 블록에 연결된 로컬 라인들(local lines)을 통해 동작 전압들(Vop)을 전송할 수 있다.
페이지 버퍼 그룹(140)은 비트 라인들(bit lines)에 연결된 다수의 페이지 버퍼들을 포함할 수 있으며, 페이지 버퍼 제어 신호(PBSIG)에 응답하여 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수 있다. 페이지 버퍼들 각각은 프로그램, 리드 및 검증 동작 시 데이터를 임시로 저장하기 위한 다수의 래치들(latches)을 포함할 수 있다.
컬럼 디코더(150)는 컬럼 어드레스(CADD)에 응답하여, 프로그램 동작 시 입출력 회로(160)로부터 수신받은 데이터를 페이지 버퍼 그룹(140)에 전달하거나, 리드 동작 시 페이지 버퍼 그룹(140)으로부터 수신된 데이터를 입출력 회로(160)에 전달할 수 있다.
입출력 회로(160)는 채널(channel)에 포함된 입출력 라인들을 통해 컨트롤러(도 1의 1200)에 연결되어 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 입출력 할 수 있다. 예를 들면, 입출력 회로(160)는 컨트롤러(1200)로부터 수신된 커맨드(CMD) 및 어드레스(ADD)를 제어 로직(170)으로 전송하고, 데이터(DATA)를 컬럼 디코더(150)로 전송할 수 있다. 제i 다이(Di)의 입출력 회로(160)에 입력되는 어드레스(ADD)는 컨트롤러(1200)가 출력한 물리 어드레스(physical address)일 수 있다. 입출력 회로(160)는 리드 동작 시 컬럼 디코더(150)로부터 수신된 데이터(DATA)를 입출력 라인들을 통해 컨트롤러(1200)로 출력할 수 있다.
제어 로직(170)은 입출력 회로(160)를 통해 수신되는 커맨드(CMD) 및 어드레스(ADD)에 응답하여 주변 회로들(120~160)을 제어할 수 있다. 제어 로직(170)은 커맨드(CMD)에 응답하여 동작 신호(OPS) 및 페이지 버퍼 제어 신호(PBSIG)를 생성할 수 있으며, 어드레스(ADD)에 응답하여 로우 어드레스(RADD) 및 컬럼 어드레스(CADD)를 생성할 수 있다.
도 3은 본 발명의 실시예에 따른 컨트롤러를 구체적으로 설명하기 위한 도면이다.
도 3을 참조하면, 컨트롤러(1200)는 호스트 인터페이스 계층(host interface layer; HIL; 210), 중앙 처리 장치(central processing unit; CPU; 220) 및 플래시 인터페이스 계층(flash interface layer; FIL; 240)을 포함할 수 있다. 도 3에 도시된 구성 외에도 컨트롤러(1200)에는 에러 정정 부(error correction component), 버퍼(buffer) 등을 더 포함할 수 있다.
호스트 인터페이스 계층(210)은 호스트(2000)와 컨트롤러(1200) 사이에서 설정된 프로토콜(protocol)에 따라 통신할 수 있다. 호스트 인터페이스 계층(210)은 호스트(2000)로부터 요청(RQ)이 수신되면, 수신된 요청(RQ)을 중앙 처리 장치(220)로 전송할 수 있다. 요청(RQ) 외에도, 호스트 인터페이스 계층(210)은 호스트(2000)로부터 데이터 등을 수신받을 수 있다.
중앙 처리 장치(220)는 컨트롤러(1200)의 전반적인 동작을 제어할 수 있다. 중앙 처리 장치(220)는 수신된 요청(RQ)을 메모리 시스템(1000)에서 사용될 수 있는 커맨드(CMD)로 변환하고, 커맨드(CMD)을 출력할 수 있다. 또한, 중앙 처리 장치(220)는 어드레스(address)를 관리하는 플래시 변환 계층(flash translation layer; FTL; 230)을 포함할 수 있다. 본 실시예에서, 플래시 변환 계층(230)은 논리 어드레스(logical address)를 물리 어드레스(physical address)로 변환하지 않고, 다이 어드레스 및 메모리 블록 어드레스의 정보가 포함된 논리 어드레스(LADD)를 생성 및 출력할 수 있다. 예를 들면, 플래시 변환 계층(230)은 2진수보다 높은 기수법(notation)을 사용하여 논리 어드레스를 생성함으로써, 연산되는 비트의 수를 감소시킬 수 있다.
또한, 본 실시예에 따른 플래시 변환 계층(230)은 논리 어드레스에 맵핑된 물리 어드레스를 찾는 동작을 생략하고 논리 어드레스만을 생성 및 출력하므로, 플래시 변환 계층(230)의 워크로드(workload)가 감소할 수 있다.
도 4는 본 발명의 실시예에 따른 플래시 변환 계층과 플래시 인터페이스들 사이에서의 통신 방법을 설명하기 위한 도면이다.
도 4를 참조하면, 플래시 변환 계층(230)은 생성된 커맨드(CMD) 및 논리 어드레스(LADD)를 플래시 인터페이스 계층(240)으로 출력하고, 플래시 인터페이스 계층(240)은 논리 어드레스(LADD)를 물리 어드레스(PADD)로 변환하고, 커맨드(CMD) 및 물리 어드레스(PADD)를 선택된 채널로 출력할 수 있다. 이를 위해, 플래시 인터페이스 계층(240)은 제1 내지 제k 플래시 인터페이스들(FI1~FIk)을 포함할 수 있다. 제1 내지 제k, 플래시 인터페이스들(FI1~FIk)의 개수는 채널들(CH1~CHk)의 개수와 동일할 수 있다. 예를 들면, 메모리 장치(1100)와 컨트롤러(1200)가 제1 내지 제k 채널들(CH1~CHk)을 통해 서로 연결된 경우, 컨트롤러(1200)의 플래시 인터페이스 계층(240)에는 제1 내지 제k 플래시 인터페이스들(FI1~FIk)이 포함될 수 있다. 즉, 제1 내지 제k 플래시 인터페이스들(FI1~FIk)은 제1 내지 제k 채널들(CH1~CHk)에 각각 연결될 수 있다.
플래시 변환 계층(230)은 제1 내지 제k 채널들(CH1~CHk)의 현재 워크로드(workload)를 고려하여 제1 내지 제k 플래시 인터페이스들(FI1~Fik) 중에서 하나를 선택하고, 선택된 플래시 인터페이스에 커맨드(CMD) 및 논리 어드레스(LADD)를 출력할 수 있다. 예를 들면, 제1 채널(CH1)의 워크로드가 다른 채널들보다 낮은 경우, 플래시 변환 계층(230)은 제1 채널(CH1)에 연결된 제1 플래시 인터페이스(FI1)에 커맨드(CMD) 및 논리 어드레스(LADD)를 전송할 수 있다.
제1 플래시 인터페이스(FI1)는 수신된 논리 어드레스(LADD)를 물리 어드레스(PADD)로 변환하고, 제1 채널(CH1)을 통해 커맨드(CMD) 및 물리 어드레스(PADD)를 출력할 수 있다.
이러한 방식으로, 플래시 변환 계층(230)은 채널들의 워크로드를 고려하여, 제1 내지 제k 플래시 인터페이스들(FI1~FIk)에 커맨드(CMD) 및 논리 어드레스(LADD)를 순차적으로 전송할 수 있다.
제1 내지 제k 플래시 인터페이스들(FI1~FIk) 각각은 채널에 연결된 다이들의 워크로드를 고려하여 커맨드(CMD)를 큐잉하고, 논리 어드레스(LADD)를 물리 어드레스(PADD)로 변환하여 커맨드(CMD) 및 물리 어드레스(PADD)를 채널을 통해 출력할 수 있다.
도 5는 본 발명의 실시예에 따른 플래시 변환 계층을 구체적으로 설명하기 위한 도면이다.
도 5를 참조하면, 플래시 변환 계층(230)은 채널 매니저(channel manager; 231) 및 논리 어드레스 생성부(LADD Generator; 232)를 포함할 수 있다.
채널 매니저(231)는 채널들의 워크로드를 고려하여 채널(CH#)을 선택할 수 있다. 채널 매니저(231)는 채널들(CH1, CH2, CH3, CH4, …) 중 워크로드가 가장 낮은 채널을 선택하고, 선택된 채널의 어드레스(CH#)를 생성할 수 있다. 채널 매니저(231)는 다양한 방식으로 채널들(CH1, CH2, CH3, CH4, …)의 워크로드를 판단할 수 있다.
예를 들면, 채널 매니저(231)는 채널들(CH1, CH2, CH3, CH4, …)에 로드된 커맨드에 따라 워크로드를 판단할 수 있다. 워크로드는 커맨드에 따라 다를 수 있으며, 채널에 로드된 커맨드들의 워크로드를 합하여 채널의 워크로드를 산출할 수 있다. 따라서, 채널에 로드된 커맨드가 종료되면, 해당 채널의 워크로드는 종료된 커맨드(CMD)의 워크로드만큼 감소할 수 있다.
또는, 채널 매니저(231)는 채널에 로드된 데이터의 량에 따라 워크로드를 판단할 수도 있으며, 커맨드 및 데이터 량을 모두 고려하여 워크로드를 판단할 수도 있다.
이러한 방식으로 채널 매니저(231)는 채널들의 워크로드들을 모니터링하고, 다른 채널들보다 워크로드가 낮은 채널을 선택하고, 선택된 채널의 어드레스(CH#)를 생성할 수 있다.
논리 어드레스 생성부(232)는 논리 어드레스(LADD)를 생성하고, 논리 어드레스(LADD)를 선택된 채널의 어드레스(CH#)에 대응되는 플래시 인터페이스(FI#)로 출력할 수 있다. 논리 어드레스 생성부(232)는 다이 어드레스와 블록 어드레스가 포함된 논리 어드레스(LADD)를 생성할 수 있다. 예를 들면, 논리 어드레스 생성부(232)는 다이 어드레스와 블록 어드레스를 2진수 보다 큰 기수법(notation)인 16진수(hexadecimal number)로 관리하고, 논리 어드레스를 출력할 때에는 2진수의 코드[K:0]로 변환된 논리 어드레스를 출력할 수 있다. 다이 어드레스와 블록 어드레스를 16진수(hexadecimal number)로 생성하는 구체적인 방법은 도 7에서 후술하도록 한다.
도 6은 본 발명의 실시예에 따른 플래시 인터페이스를 구체적으로 설명하기 위한 도면이다.
도 6을 참조하면, 플래시 인터페이스(FI#)는 커맨드 큐 컨트롤러(CMD Queue Controller; 241) 및 L2P 변환부(Logical to Physical Translation Component; 242)를 포함할 수 있다.
커맨드 큐 컨트롤러(241)는 중앙 처리 장치(220)로부터 커맨드(CMD)를 수신받고, 채널에 연결된 각 다이들의 워크로드를 고려하여 커맨드(CMD)를 큐잉할 수 있다.
L2P 변환부(242)는 플래시 변환 계층(230)으로부터 논리 어드레스(LADD)를 수신받고, 수신된 논리 어드레스(LADD)를 물리 어드레스(PADD)로 변환하여 출력할 수 있다.
도 7은 본 발명의 실시예에 따른 논리 어드레스 생성 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 논리 어드레스는 다이 어드레스와 블록 어드레스를 모두 포함할 수 있다. 이를 위해, 동일한 채널에 연결된 다이들의 모든 메모리 블록들의 논리 어드레스는 오름차순 방식의 16진수(hexadecimal number)로 생성될 수 있다.
하나의 채널에 제1 내지 제4 다이들(D1~D4)이 연결되고, 제1 내지 제4 다이들(D1~D4) 각각에 950개의 메모리 블록들(MB)이 포함된 경우를 가정하면 다음과 같다.
제1 다이(D1)의 첫 번째 메모리 블록(MB1)을 십진수로 표현하면 0이 되고, 이를 16진수의 논리 어드레스로 표현하면 0이 된다. 도 7에서 괄호 안의 숫자는 16진수의 논리 어드레스를 의미한다. 제1 다이(D1)의 두 번째 메모리 블록(MB2)을 십진수로 표현하면 1이 되고, 이를 16진수의 논리 어드레스로 표현하면 1이 된다. 제1 다이(D1)의 950번째 메모리 블록(MB950)을 십진수로 표현하면 949가 되고, 이를 16진수의 논리 어드레스로 표현하면 3B5가 된다.
제2 다이(D2)의 첫 번째 메모리 블록(MB1)을 십진수로 표현하면 1024가 되고, 이를 16진수의 논리 어드레스로 표현하면 400이 된다. 제2 다이(D2)의 두 번째 메모리 블록(MB2)을 십진수로 표현하면 1025가 되고, 이를 16진수의 논리 어드레스로 표현하면 401이 된다. 제2 다이(D2)의 950번째 메모리 블록(MB950)을 십진수로 표현하면 1973이 되고, 이를 16진수의 논리 어드레스로 표현하면 7B5가 된다.
제3 다이(D3)의 첫 번째 메모리 블록(MB3)을 십진수로 표현하면 2048이 되고, 이를 16진수의 논리 어드레스로 표현하면 800이 된다. 제3 다이(D3)의 두 번째 메모리 블록(MB2)을 십진수로 표현하면 2049가 되고, 이를 16진수의 논리 어드레스로 표현하면 801이 된다. 제3 다이(D3)의 950번째 메모리 블록(MB950)을 십진수로 표현하면 2997이 되고, 이를 16진수의 논리 어드레스로 표현하면 BB5가 된다.
제4 다이(D4)의 첫 번째 메모리 블록(MB4)을 십진수로 표현하면 3072가 되고, 이를 16진수의 논리 어드레스로 표현하면 C00이 된다. 제4 다이(D4)의 두 번째 메모리 블록(MB2)을 십진수로 표현하면 3073이 되고, 이를 16진수의 논리 어드레스로 표현하면 C01이 된다. 제4 다이(D4)의 950번째 메모리 블록(MB950)을 십진수로 표현하면 4021이 되고, 이를 16진수의 논리 어드레스로 표현하면 FB5가 된다.
이러한 논리 어드레스는 논리 어드레스 생성부(도 5의 232)가 생성할 수 있으며, L2P 변환부(도 6의 242)는 논리 어드레스 생성부(232)에서 생성된 논리 어드레스에 따라 다이와 메모리 블록의 어드레스들을 판단하여 물리 어드레스(PADD)를 출력할 수 있다.
상술한 바와 같이, 제1 내지 제4 다이들(D1~D4)에 포함된 모든 메모리 블록들에 서로 다른 논리 어드레스들이 부여되므로, 플래시 인터페이스는 기존보다 적은 비트의 논리 어드레스를 사용하여 선택된 메모리 블록에 액세스할 수 있다. 기존에는 다이 어드레스와 메모리 블록의 어드레스들이 각각 사용되었으므로, 선택된 메모리 블록에 액세스하기 위해서는 다이 어드레스 A 비트와 메모리 블록 어드레스 B 비트가 모두 필요하였다. 즉, 기존에는 다이와 메모리 블록의 어드레스로 A+B 비트가 필요하였으나, 본 실시예에서는 16진수의 논리 어드레스만으로 다이와 메모리 블록의 구분이 가능하므로, 기존의 A+B 비트보다 적은 비트로 논리 어드레스가 표현될 수 있다. 본 실시예에서는 16진수의 논리 어드레스를 생성하는 방법에 대하여 설명되지만, 논리 어드레스는 16진수로 제한되지 아니하며, 채널, 다이 및 메모리 블록의 개수에 따라 16진수 이상의 비트를 사용한 논리 어드레스가 사용될 수도 있다.
도 8은 본 발명의 실시예에 따른 논리 어드레스 생성부를 구체적으로 설명하기 위한 도면이다.
도 8을 참조하면, 논리 어드레스 생성부(232)는 16진수 테이블(Hexadecimal number Table; 81) 및 H2B 변환부(Hexadecimal number to Binary number Translation Component; 82)를 포함할 수 있다.
16진수 테이블(81)은 메모리 블록들의 어드레스를 16진수 값들로 관리하고, 메모리 블록을 할당하거나 호스트로부터 수신된 어드레스에 대응되는 16진수 값을 H2B 변환부(82)로 전송할 수 있다. 16진수 값은 메모리 시스템에 포함된 다이 및 메모리 블록의 개수에 따라 다를 수 있다. 예를 들면, 동일한 다이에 포함된 메모리 블록들에 대한 16진수 값들은 첫 번째 메모리 블록부터 연속적으로 증가하고, 다음 다이에 포함된 첫 번째 메모리 블록에 대한 16진수 값은 이전 다이의 마지막 메모리 블록의 16진수 값에서 불연속적으로 증가한 16진수 값을 가질 수 있다.
H2B 변환부(82)는 수신된 16진수 값을 2진수(Binary number)의 코드로 변환하여 논리 어드레스(LADD)를 출력할 수 있다. 예를 들면, 16진수 테이블(81)에서 16진수 값이 800인 어드레스가 선택되면, H2B 변환부(82)는 16진수 값인 800을 2진수 값인 1000 0000 0000로 변환할 수 있다. 이때, H2B 변환부(82)는 변환된 2진수 값에 4비트의 추가 비트 0000를 추가하여 총 16비트의 논리 어드레스(LADD)를 출력할 수 있다. 예를 들면, 논리 어드레스(LADD)가 0000 1000 0000 0000으로 생성되면, 이 중에서 [15:13] 비트에 해당되는 000은 예비 비트로 구분될 수 있고, [12:10] 비트에 해당되는 010은 다이 어드레스(DA)로 구분될 수 있으며, 나머지 [9:0] 비트에 해당되는 0000000000은 블록 어드레스(BA)로 구분될 수 있다. 즉, 논리 어드레스(LADD)를 어드레스 별로 구분하면 000 010 0000000000이 되고, [15:0] 비트에 따라 예비 비트, 다이 어드레스 및 블록 어드레스가 각각 구분될 수 있다. 다른 실시예로써 16진수 값인 BB5를 예를 들면, H2B 변환부(82)는 BB5를 2진수 값인 1011 1011 0101로 변환하고, 여기에 4비트의 추가 비트 0000를 추가하여 000 010 1110110101의 논리 어드레스(LADD)를 출력할 수 있다. 여기서, 010은 다이 어드레스(DA)로 구분될 수 있고, 1110110101은 블록 어드레스(BA)로 구분될 수 있다.
도 9는 본 발명의 실시예에 따른 L2P 변환부를 구체적으로 설명하기 위한 도면이다.
도 9를 참조하면, L2P 변환부(242)는 논리 어드레스 생성부(232)에서 출력된 논리 어드레스(LADD)를 수신받고, 수신된 논리 어드레스(LADD)를 다시 16진수 값으로 변환한 후, 16진수 값에 따라 다이 및 메모리 블록의 물리 어드레스(PADD)를 생성할 수 있다.
예를 들면, 0000100000000000의 논리 어드레스(LADD)가 수신되면, L2P 변환부(242)는 0000100000000000를 16진수 값인 800으로 변환하고, 800에 대응되는 제2 다이(D2)의 제1 메모리 블록(MB1)에 대응되는 물리 어드레스(PADD)를 생성할 수 있다. 상술한 방식으로, L2P 변환부(242)는 L2P 변환부(242)에 연결된 채널(CH#)을 통해 물리 어드레스(PADD)를 출력할 수 있다.
도 10은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 10을 참조하면, 메모리 시스템(Memory System; 30000)은 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다. 메모리 시스템(30000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)를 포함할 수 있다.
컨트롤러(1200)는 프로세서(Processor; 3100)의 제어에 따라 메모리 장치(1100)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작 등을 제어할 수 있다. 본 실시예에 따른 컨트롤러(1200)는 메모리 장치(1100)에 액세스할 때, 16진수 값의 논리 어드레스를 사용하여 물리 어드레스를 생성하고, 생성된 물리 어드레스에 따라 메모리 장치(1100)에 액세스할 수 있다.
메모리 장치(1100)에 프로그램된 데이터는 컨트롤러(1200)의 제어에 따라 디스플레이(Display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(RADIO TRANSCEIVER; 3300)는 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(3100)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(3100)는 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 컨트롤러(1200) 또는 디스플레이(3200)로 전송할 수 있다. 컨트롤러(1200)는 프로세서(3100)에 의하여 처리(process)된 신호를 메모리 장치(1100)에 전송할 수 있다. 또한, 무선 송수신기(3300)는 프로세서(3100)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(Input Device; 3400)는 프로세서(3100)의 동작을 제어하기 위한 제어 신호 또는 프로세서(3100)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다. 프로세서(3100)는 컨트롤러(1200)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
실시 예에 따라, 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(3100)의 일부로서 구현될 수 있고 또한 프로세서(3100)와 별도의 칩으로 구현될 수 있다.
도 11은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 11을 참조하면, 메모리 시스템(Memory System; 40000)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
메모리 시스템(40000)은 데이터가 저장되는 메모리 장치(1100)와, 메모리 장치(1100)의 데이터 처리 동작을 제어할 수 있는 컨트롤러(1200)를 포함할 수 있다.
프로세서(Processor; 4100)는 입력 장치(Input Device; 4200)를 통하여 입력된 데이터에 따라 메모리 장치(1100)에 저장된 데이터를 디스플레이(Display; 4300)를 통하여 출력할 수 있다. 예컨대, 입력 장치(4200)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
프로세서(4100)는 메모리 시스템(40000)의 전반적인 동작을 제어할 수 있고 컨트롤러(1200)의 동작을 제어할 수 있다. 실시 예에 따라 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(4100)의 일부로서 구현되거나, 프로세서(4100)와 별도의 칩으로 구현될 수 있다.
본 실시예에 따른 컨트롤러(1200)는 메모리 장치(1100)에 액세스할 때, 16진수 값의 논리 어드레스를 사용하여 물리 어드레스를 생성하고, 생성된 물리 어드레스에 따라 메모리 장치(1100)에 액세스할 수 있다.
도 12는 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 12를 참조하면, 메모리 시스템(50000)은 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
메모리 시스템(50000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 데이터 처리 동작, 예컨대 프로그램 동작, 소거 동작 또는 리드 동작을 제어할 수 있는 컨트롤러(1200)를 포함한다.
메모리 시스템(50000)의 이미지 센서(Image Sensor; 5200)는 광학 이미지를 디지털 신호들로 변환할 수 있고, 변환된 디지털 신호들은 프로세서(Processor; 5100) 또는 컨트롤러(1200)로 전송될 수 있다. 프로세서(5100)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(Display; 5300)를 통하여 출력되거나 컨트롤러(1200)를 통하여 메모리 장치(1100)에 저장될 수 있다. 또한, 메모리 장치(1100)에 저장된 데이터는 프로세서(5100) 또는 컨트롤러(1200)의 제어에 따라 디스플레이(5300)를 통하여 출력될 수 있다.
실시 예에 따라 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(5100)의 일부로서 구현되거나 프로세서(5100)와 별개의 칩으로 구현될 수 있다.
본 실시예에 따른 컨트롤러(1200)는 메모리 장치(1100)에 액세스할 때, 16진수 값의 논리 어드레스를 사용하여 물리 어드레스를 생성하고, 생성된 물리 어드레스에 따라 메모리 장치(1100)에 액세스할 수 있다.
도 13은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 13을 참조하면, 메모리 시스템(Memory System; 70000)은 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(70000)은 메모리 장치(1100), 컨트롤러(1200) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다.
컨트롤러(1200)는 메모리 장치(1100)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 본 실시예에 따른 컨트롤러(1200)는 메모리 장치(1100)에 액세스할 때, 16진수 값의 논리 어드레스를 사용하여 물리 어드레스를 생성하고, 생성된 물리 어드레스에 따라 메모리 장치(1100)에 액세스할 수 있다.
카드 인터페이스(7100)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(7100)는 호스트(HOST; 60000)의 프로토콜에 따라 호스트(60000)와 컨트롤러(1200) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라 카드 인터페이스(7100)는 USB(Universal Serial Bus) 프로토콜, IC(Inter Chip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는 호스트(60000)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
메모리 시스템(70000)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(60000)의 호스트 인터페이스(6200)와 접속될 때, 호스트 인터페이스(6200)는 마이크로프로세서(Microprocessor; μP; 6100)의 제어에 따라 카드 인터페이스(7100)와 컨트롤러(1200)를 통하여 메모리 장치(1100)와 데이터 통신을 수행할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000: 메모리 시스템
1100: 메모리 장치
1200: 컨트롤러 2000: 호스트
210: 호스트 인터페이스 계층 220: 중앙 처리 장치
230: 플래시 변환 계층 231: 채널 매니저
232: 논리 어드레스 생성부 240: 플래시 인터페이스 계층
241: 커맨드 큐 컨트롤러 242: L2P 변환부
81: 16진수 테이블 82: H2B 변환부
1200: 컨트롤러 2000: 호스트
210: 호스트 인터페이스 계층 220: 중앙 처리 장치
230: 플래시 변환 계층 231: 채널 매니저
232: 논리 어드레스 생성부 240: 플래시 인터페이스 계층
241: 커맨드 큐 컨트롤러 242: L2P 변환부
81: 16진수 테이블 82: H2B 변환부
Claims (14)
- 커맨드를 생성하고, 2진수보다 높은 기수법(notation)으로 논리 어드레스를 관리하며, 상기 커맨드 및 상기 논리 어드레스를 출력하는 중앙 처리 장치; 및
상기 커맨드를 다이들의 워크로드에 따라 큐잉하고, 상기 논리 어드레스를 물리 어드레스로 변환하여, 선택된 채널을 통해 상기 커맨드 및 상기 물리 어드레스를 출력하는 플래시 인터페이스 계층을 포함하는 컨트롤러.
- 제1항에 있어서,
상기 중앙 처리 장치는 상기 기수법에 대응되는 상기 논리 어드레스를 상기 2진수의 코드로 출력하고,
상기 플래시 인터페이스 계층은 상기 논리 어드레스를 상기 기수법의 값으로 변환하고, 변환된 상기 기수법의 값으로부터 다이 및 메모리 블록의 어드레스를 포함하는 상기 물리 어드레스를 출력하는 컨트롤러.
- 제2항에 있어서, 상기 중앙 처리 장치는,
채널들의 워크로드에 따라 상기 커맨드를 큐잉하고, 큐잉된 상기 커맨드와 상기 논리 어드레스를 상기 플래시 인터페이스 계층으로 출력하는 컨트롤러.
- 제3항에 있어서, 상기 중앙 처리 장치는,
상기 논리 어드레스를 상기 기수법으로 관리하고, 상기 논리 어드레스를 상기 2진수의 코드로 출력하는 플래시 변환 계층(flash translation layer)을 포함하는 컨트롤러.
- 다수의 채널들의 워크로드를 고려하여 하나의 채널을 선택하고, 상기 선택된 채널에 연결된 다수의 다이들에 포함된 메모리 블록들의 어드레스들을 오름차순 방식의 16진수(hexadecimal number) 값으로 관리하고, 상기 16진수 값의 어드레스를 2진수 코드로 변환하여 논리 어드레스를 출력하는 플래시 변환 계층(flash translation layer); 및
상기 논리 어드레스를 상기 16진수 값으로 변환하고, 변환된 상기 16 진수 값에 따라 선택된 다이 및 메모리 블록의 물리 어드레스를 생성하고, 상기 물리 어드레스를 상기 선택된 채널을 통해 출력하는 플래시 인터페이스 계층(flash interface layer)을 포함하는 컨트롤러.
- 제5항에 있어서, 상기 플래시 변환 계층은,
상기 다수의 다이들에 포함된 메모리 블록들의 상기 어드레스들을 상기 16진수 값들로 관리하는 16진수 테이블(Hexadecimal number Table); 및
상기 16진수 값들 중에서 선택된 16진수 값을 2진수(Binary number)의 코드로 변환하여 상기 논리 어드레스를 출력하는 H2B 변환부(Hexadecimal number to Binary number Translation Component)를 포함하는 컨트롤러.
- 제5항에 있어서,
상기 16진수 테이블에 저장되는 상기 16진수 값은 서로 다른 값을 가지는 컨트롤러.
- 제7항에 있어서,
동일한 다이에 포함된 메모리 블록들에 대한 16진수 값들은 첫 번째 메모리 블록부터 연속적으로 증가하고,
다음 다이에 포함된 첫 번째 메모리 블록에 대한 16진수 값은 이전 다이의 마지막 메모리 블록의 16진수 값에서 불연속적으로 증가한 16진수 값을 가지는 컨트롤러.
- 제5항에 있어서, 상기 플래시 인터페이스 계층은,
채널들에 각각 연결된 다수의 플래시 인터페이스들을 포함하는 컨트롤러.
- 제9항에 있어서,
상기 다수의 플래시 인터페이스들 중에서, 상기 선택된 채널에 연결된 플래시 인터페이스에 상기 논리 어드레스가 수신되고,
상기 논리 어드레스가 수신된 상기 플래시 인터페이스가 상기 선택된 채널을 통해 상기 물리 어드레스를 출력하는 컨트롤러.
- 제9항에 있어서,
상기 다수의 플래시 인터페이스들 각각은,
수신되는 커맨드들을 상기 다이들의 워크로드에 따라 큐잉하고, 큐잉된 순서대로 상기 커맨드들을 출력하는 커맨드 큐 컨트롤러; 및
상기 논리 어드레스를 상기 물러 어드레스로 변환하여 출력하는 L2P 변환부(Logical to Physical Translation Component)를 포함하는 컨트롤러.
- 다수의 다이들에 포함된 메모리 블록들의 어드레스들을 16진수 값으로 관리하는 단계;
채널들의 워드로드에 따라 선택된 플래시 인터페이스에, 상기 메모리 블록들 중에서 선택된 메모리 블록에 대응되는 어드레스의 논리 어드레스를 출력하는 단계;
상기 논리 어드레스를 16진수 값으로 변환하고, 변환된 상기 16진수 값에 대응되는 다이의 어드레스 및 메모리 블록의 어드레스를 포함하는 물리 어드레스를 출력하는 단계; 및
상기 물리 어드레스에 따라 선택된 상기 메모리 블록에 액세스하는 단계를 포함하는 컨트롤러의 동작 방법.
- 제12항에 있어서,
상기 메모리 블록들의 어드레스들을 16진수 값으로 관리하는 단계에서,
상기 메모리 블록들의 어드레스들은 오름차순 방식의 상기 16진수 값으로 관리되는 컨트롤러의 동작 방법.
- 제12항에 있어서,
상기 선택된 메모리 블록에 대응되는 어드레스의 논리 어드레스를 출력하는 단계는, 상기 선택된 메모리 블록에 대응되는 16진수 값의 상기 어드레스를 2진수의 코드로 변환하여 상기 논리 어드레스로써 출력하는 컨트롤러의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190127206A KR20210044083A (ko) | 2019-10-14 | 2019-10-14 | 컨트롤러 및 이의 동작 방법 |
US16/899,164 US11200163B2 (en) | 2019-10-14 | 2020-06-11 | Controller and method of operating the same |
CN202010740991.2A CN112732590A (zh) | 2019-10-14 | 2020-07-29 | 控制器及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190127206A KR20210044083A (ko) | 2019-10-14 | 2019-10-14 | 컨트롤러 및 이의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210044083A true KR20210044083A (ko) | 2021-04-22 |
Family
ID=75382100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190127206A KR20210044083A (ko) | 2019-10-14 | 2019-10-14 | 컨트롤러 및 이의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11200163B2 (ko) |
KR (1) | KR20210044083A (ko) |
CN (1) | CN112732590A (ko) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101555022B1 (ko) | 2008-12-02 | 2015-09-23 | 삼성전자주식회사 | 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 맵핑정보 복원 방법 |
US20120110239A1 (en) * | 2010-10-27 | 2012-05-03 | Seagate Technology Llc | Causing Related Data to be Written Together to Non-Volatile, Solid State Memory |
CN111143235A (zh) * | 2018-11-06 | 2020-05-12 | 爱思开海力士有限公司 | 多内核存储器系统中的逻辑地址分配 |
KR20200073794A (ko) * | 2018-12-14 | 2020-06-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11507290B2 (en) * | 2019-07-31 | 2022-11-22 | EMC IP Holding Company LLC | Method and apparatus for storage device management |
-
2019
- 2019-10-14 KR KR1020190127206A patent/KR20210044083A/ko active Search and Examination
-
2020
- 2020-06-11 US US16/899,164 patent/US11200163B2/en active Active
- 2020-07-29 CN CN202010740991.2A patent/CN112732590A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20210109853A1 (en) | 2021-04-15 |
CN112732590A (zh) | 2021-04-30 |
US11200163B2 (en) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10877887B2 (en) | Data storage device and operating method thereof | |
KR102503177B1 (ko) | 메모리 시스템 및 그것의 동작 방법 | |
KR20190123090A (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
KR102523327B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
KR20190051564A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
US10877689B2 (en) | Memory controller and operating method thereof | |
US10990539B2 (en) | Controller, memory system including the same, and method of operating memory system | |
US11061607B2 (en) | Electronic system having host and memory controller, and operating method thereof | |
US20210004323A1 (en) | Controller, memory system having the same, and operating method thereof | |
US20230161589A1 (en) | Memory controller and memory system for generating instruction set based on non-interleaving block group information | |
US20220350655A1 (en) | Controller and memory system having the same | |
KR20210039872A (ko) | 프리 블록의 할당을 관리하는 호스트 시스템, 이를 포함하는 데이터 처리 시스템 및 호스트 시스템의 동작방법 | |
US11418217B2 (en) | Error correction circuit and error correction encoding method | |
KR20170021557A (ko) | 다수의 맵핑 단위를 이용하는 불휘발성 메모리 시스템 및 그 동작방법 | |
KR102569177B1 (ko) | 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 | |
CN110309075B (zh) | 存储器控制器以及具有存储器控制器的存储器系统 | |
US11106581B2 (en) | Memory controller and memory system having the memory controller | |
US11200163B2 (en) | Controller and method of operating the same | |
KR20190112546A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
KR102611354B1 (ko) | 컨트롤러 및 이를 포함하는 메모리 시스템 | |
KR20200069889A (ko) | 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |