KR102553264B1 - 메모리 컨트롤러 및 이의 동작 방법 - Google Patents
메모리 컨트롤러 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR102553264B1 KR102553264B1 KR1020180104780A KR20180104780A KR102553264B1 KR 102553264 B1 KR102553264 B1 KR 102553264B1 KR 1020180104780 A KR1020180104780 A KR 1020180104780A KR 20180104780 A KR20180104780 A KR 20180104780A KR 102553264 B1 KR102553264 B1 KR 102553264B1
- Authority
- KR
- South Korea
- Prior art keywords
- write
- command
- power level
- commands
- read
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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
-
- 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
- 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0625—Power saving in storage 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/24—Bit-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- 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/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/7211—Wear leveling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
메모리 컨트롤러의 동작 방법이 개시된다. 복수의 뱅크들을 포함하는 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법은, 메모리 컨트롤러의 커맨드 큐에 인큐된 기입 커맨드들의 수가 기준 값을 초과하는지 판단하는 단계, 인큐된 기입 커맨드들의 수가 기준 값을 초과하는 경우에, 인큐된 기입 커맨드들 중 적어도 일부의 기입 커맨드에 의해 소모될 기입 전력 레벨을 산출하는 단계 및 산출된 기입 전력 레벨에 기초하여 인큐된 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 스케줄링하는 단계를 포함한다.
Description
본 발명은 메모리 장치에 관한 것으로서, 메모리 장치를 제어하는 메모리 컨트롤러 및 이의 동작 방법에 관한 것이다.
불휘발성 메모리 장치로서, PRAM(Phase change RAM), RRAM(Resistive RAM), MRAM(Magnetic RAM) 등과 같은 저항성 메모리 장치들은 저항 상태의 변화에 의해 데이터를 저장하는 가변 저항 소자를 메모리 셀로서 이용하고 있다. 저항성 메모리 장치들을 구성하는 물질들의 공통점은 전류 또는 전압의 크기 및/또는 방향에 따라서 그 저항값이 가변되며, 전류 또는 전압이 차단되어도 그 저항값을 그대로 유지하는 불휘발성 특성을 가진다.
최근 화상 처리나 빅데이터 처리 등 많은 양의 데이터를 사용하는 분야가 증가함으로써, 데이터의 처리 속도를 빠르게 하는 것이 중요하게 대두되고 있다. 메모리 장치의 데이터 처리 속도를 증가시키기 위해 이용되는 방법으로써, 복수의 뱅크를 동시에 이용하도록 데이터를 제어하는 뱅크 인터리빙 기술이 이용되고 있다. 이에 따라, 단일 뱅크를 이용하는 경우에 비해 데이터 처리 속도를 향상시킬 수 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는, 기입 동작에 따른 전력 소모 레벨에 따라 동시에 이용되는 뱅크의 수를 조절할 수 있는 메모리 컨트롤러 및 이의 동작 방법을 제공하는 데에 있다.
본 개시의 기술적 사상에 따른 복수의 뱅크들을 포함하는 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법으로서, 메모리 컨트롤러의 커맨드 큐에 인큐된 기입 커맨드들의 수가 기준 값을 초과하는지 판단하는 단계, 인큐된 기입 커맨드들의 수가 기준 값을 초과하는 경우에, 인큐된 기입 커맨드들 중 적어도 일부의 기입 커맨드에 의해 소모될 기입 전력 레벨을 산출하는 단계 및 산출된 기입 전력 레벨에 기초하여, 인큐된 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 스케줄링하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 복수의 뱅크들을 포함하는 메모리 장치의 인터리빙 동작을 제어하는 메모리 컨트롤러는, 메모리 장치로 제공될 복수의 기입 커맨드들 중 적어도 일부의 기입 커맨드에 의해 메모리 장치에서 소모될 기입 전력 레벨을 산출하는 전력 레벨 산출부, 및 상기 산출된 기입 전력 레벨에 기초하여 복수의 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 스케줄링하는 커맨드 스케줄러를 포함하고, 전력 레벨 산출부는 복수의 기입 커맨드들의 수가 기준 값을 초과할 때, 기입 전력 레벨을 산출할 수 있다.
본 개시의 기술적 사상에 따른 메모리 시스템은, 복수의 뱅크들을 포함하고 데이터 비교 기입 동작을 수행하는 메모리 장치 및 메모리 장치의 인터리빙 동작을 제어하는 메모리 컨트롤러를 포함하고, 메모리 컨트롤러는 메모리 장치로 제공될 복수의 기입 커맨드들 중 적어도 일부의 기입 커맨드에 의해 상기 메모리 장치에서 소모될 기입 전력 레벨을 산출하는 전력 레벨 산출부 및 산출된 기입 전력 레벨에 기초하여 복수의 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 스케줄링하는 커맨드 스케줄러를 포함하고, 전력 레벨 산출부는 복수의 기입 커맨드들의 수가 기준 값을 초과할 때, 기입 전력 레벨을 산출할 수 있다.
본 개시의 기술적 사상에 따르면, 메모리 컨트롤러의 동작 방법은 인터리빙 동작 시에 소모되는 전력을 일정 값 이하로 유지할 수 있다. 또한, 메모리 컨트롤러의 동작 방법은 서로 다른 뱅크에 대한 기입 동작을 수행함에 따라 소모되는 기입 전력 레벨을 미리 계산하여, 동시에 이용 가능한 뱅크의 개수를 조절할 수 있다. 동시에 동작하는 뱅크를 변경함으로써, 동시에 이용 가능한 뱅크의 수를 증가시킬 수 있으므로 기입 동작을 수행하는 데에 걸리는 시간이 감소될 수 있다.
도 1는 본 개시의 예시적 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 도 1의 메모리 시스템에 포함된 메모리 장치를 예시적으로 나타내는 블록도이다.
도 3은 도 2의 메모리 셀 어레이의 예시적 실시예를 나타내는 회로도이다.
도 4a 내지 도 4c는 도 3의 메모리 셀의 변형 예들을 나타내는 회로도들이다.
도 5는 도 1의 메모리 시스템에 포함된 메모리 컨트롤러의 예시적 실시예를 나타내는 블록도이다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러의 동작 방법을 나타내는 순서도이다.
도 7은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러의 동작 방법을 나타내는 순서도이다.
도 8a는 도 5의 커맨드 큐의 예시적 실시예를 나타내는 테이블이다.
도 8b는 선 독출 커맨드들이 인큐된 커맨드 큐의 예시적 실시예를 나타내는 테이블이다.
도 9는 도 6의 단계 S30 및 도 7의 단계 S40의 예시적 실시예를 설명하기 위한 도면이다.
도 10은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러의 동작 방법을 나타내는 순서도로서, 도 6의 S50단계의 예시적 실시예를 나타내는 순서도이다.
도 11은 도 10의 단계 S50의 예시적 실시예를 설명하기 위한 타이밍도이다.
도 12a는 도 10의 단계 S50의 예시적 실시예를 설명하기 위한 타이밍도이다.
도 12b는 도 5의 커맨드 큐의 예시적 실시예를 나타내는 테이블이다.
도 2는 도 1의 메모리 시스템에 포함된 메모리 장치를 예시적으로 나타내는 블록도이다.
도 3은 도 2의 메모리 셀 어레이의 예시적 실시예를 나타내는 회로도이다.
도 4a 내지 도 4c는 도 3의 메모리 셀의 변형 예들을 나타내는 회로도들이다.
도 5는 도 1의 메모리 시스템에 포함된 메모리 컨트롤러의 예시적 실시예를 나타내는 블록도이다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러의 동작 방법을 나타내는 순서도이다.
도 7은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러의 동작 방법을 나타내는 순서도이다.
도 8a는 도 5의 커맨드 큐의 예시적 실시예를 나타내는 테이블이다.
도 8b는 선 독출 커맨드들이 인큐된 커맨드 큐의 예시적 실시예를 나타내는 테이블이다.
도 9는 도 6의 단계 S30 및 도 7의 단계 S40의 예시적 실시예를 설명하기 위한 도면이다.
도 10은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러의 동작 방법을 나타내는 순서도로서, 도 6의 S50단계의 예시적 실시예를 나타내는 순서도이다.
도 11은 도 10의 단계 S50의 예시적 실시예를 설명하기 위한 타이밍도이다.
도 12a는 도 10의 단계 S50의 예시적 실시예를 설명하기 위한 타이밍도이다.
도 12b는 도 5의 커맨드 큐의 예시적 실시예를 나타내는 테이블이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다.
도 1는 본 개시의 예시적 실시예에 따른 메모리 시스템(10)을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(10)은 메모리 장치(100) 및 메모리 컨트롤러(200)를 포함할 수 있다.
메모리 컨트롤러(200)는 호스트(HOST)로부터의 기입/독출 요청에 응답하여 메모리 장치(100)에 데이터를 기입하도록 또는 메모리 장치(100)에 저장된 데이터를 독출하도록 메모리 장치(100)를 제어할 수 있다. 예를 들어, 메모리 컨트롤러(200)는 메모리 장치(100)에 어드레스(ADDR), 커맨드(CMD, 예를 들어, 기입 커맨드(WCMD) 및 독출 커맨드(RCMD)) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(100)에 대한 프로그램(또는 기입) 및 독출 동작을 제어할 수 있다. 또한, 기입될 데이터(DATA)와 독출된 데이터(DATA)가 메모리 컨트롤러(200)와 메모리 장치(100) 사이에서 송수신될 수 있다.
메모리 장치(100)는 메모리 셀 어레이(110) 및 제어 회로(130)를 포함할 수 있다. 메모리 셀 어레이(110)는 복수의 제1 신호 라인들과 복수의 제2 신호 라인들이 교차하는 영역들에 각각 배치되는 복수의 메모리 셀들(예를 들어, 도 3의 MC)을 포함할 수 있다. 일 실시예에서, 복수의 제1 신호 라인들은 복수의 워드 라인들일 수 있고, 복수의 제2 신호 라인들은 복수의 비트 라인들일 수 있다. 다른 실시예에서, 복수의 제1 신호 라인들은 복수의 비트 라인들일 수 있고, 복수의 제2 신호 라인들은 복수의 워드 라인들일 수 있다.
일 실시예에서, 복수의 메모리 셀들(MC)은 가변 저항 소자를 포함하는 저항성 메모리 셀들을 포함할 수 있다. 예를 들어, 가변 저항 소자가 상변화(phase change) 물질(GST, Ge-Sb-Te)로서 온도에 따라 저항이 변화하는 경우에는 메모리 장치(100)는 PRAM이 될 수 있다. 또는 예를 들어, 가변 저항 소자가 상부 전극, 하부 전극 및 그 사이에 있는 전이금속 산화물(complex metal oxide)로 형성된 경우에는 메모리 장치(100)는 RRAM이 될 수 있다. 또는 예를 들어, 가변 저항 소자가 자성체의 상부 전극, 자성체의 하부 전극 및 그 사이에 있는 유전체로 형성된 경우에는 메모리 장치(100)는 MRAM이 될 수 있다. 이에 따라, 메모리 장치(100)는 저항성 메모리 장치라고 지칭할 수 있고, 메모리 시스템(10)은 저항성 메모리 시스템이라고 지칭할 수 있다.
일 실시예에서, 복수의 메모리 셀들 각각은 1 비트의 데이터를 저장하는 싱글 레벨 셀(single level cell, SLC)일 수 있고, 이 때, 메모리 셀들은 저장된 데이터에 따라 서로 다른 두 개의 저항 분포를 가질 수 있다. 일 실시예에서, 복수의 메모리 셀들 각각은 2 비트의 데이터를 저장할 수 있는 멀티 레벨 셀(multi level cell, MLC)일 수 있고, 이 때, 메모리 셀들은 저장된 데이터에 따라 네 개의 저항 분포를 가질 수 있다. 일 실시예에서, 복수의 메모리 셀들 각각은 3 비트의 데이터를 저장할 수 있는 트리플 레벨 셀(triple level cell, TLC)일 수 있고, 이 때, 메모리 셀들은 저장된 데이터에 따라 여덟 개의 저항 분포를 가질 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 일 실시예에서, 메모리 셀 어레이(110)는 4 비트 이상의 데이터를 각각 저장할 수 있는 메모리 셀들을 포함할 수도 있고, 메모리 셀 어레이(110)는 싱글 레벨 셀과 멀티 레벨 셀 또는 트리플 레벨 셀을 함께 포함할 수도 있다.
제어 회로(130)는 메모리 장치(100)의 동작들을 제어할 수 있다. 본 실시예에서, 제어 회로(130)는 메모리 셀 어레이(110)에 연결된 제1 및 제2 신호 라인들에 인가되는 전압들의 전압 레벨 또는 상기 전압들이 인가되는 타이밍을 제어할 수 있다. 여기서, 상기 전압들은 선택된 제1 및 제2 신호 라인들에 인가되는 동작 전압들 및 비선택된 제1 및 제2 신호 라인들에 인가되는 인히빗 전압들을 포함할 수 있다.
메모리 컨트롤러(200)는 인터리빙 컨트롤러(210)를 포함할 수 있다. 인터리빙 컨트롤러(210)는 메모리 장치(100)에 데이터가 기입될 때, 인터리빙 동작이 수행되게끔 제어할 수 있다. 예를 들어, 인터리빙 컨트롤러(210)는, 서로 다른 뱅크들에 동시에 데이터를 기입할 때 소모될 전력 레벨을 미리 산출할 수 있다. 인터리빙 컨트롤러(210)는 산출된 소모 전력 레벨에 기초하여, 인터리빙 동작에 대응되는 기입 커맨드(WCMD)의 수를 결정할 수 있고, 인터리빙 동작에 대응되는 기입 커맨드(WCMD)를 선택할 수 있다. 따라서, 본 개시에 따른 메모리 장치(100)의 동작 방법에 의하면, 효율적으로 인터리빙 동작을 제어함으로써 동시에 이용 가능한 뱅크의 수를 증가시킬 수 있어 기입 동작을 수행하는 데에 걸리는 시간이 감소될 수 있다.
도 2는 도 1의 메모리 시스템(10)에 포함된 메모리 장치(100)를 예시적으로 나타내는 블록도이다.
도 2를 참조하면, 메모리 장치(100)는 메모리 셀 어레이(110), 기입/독출 회로(120), 제어 회로(130), 기준 신호 발생 회로(140), 전압 발생 회로(150), 로우 디코더(160) 및 칼럼 디코더(170)를 포함할 수 있고, 기입/독출 회로(120)는 센스 앰프(121) 및 기입 드라이버(122)를 포함할 수 있다.
메모리 셀 어레이(110)에 구비되는 메모리 셀들은 복수의 제1 신호 라인들 및 복수의 제2 신호 라인들에 연결될 수 있다. 일 실시예에서, 복수의 제1 신호 라인들은 워드 라인들(WL)이고, 복수의 제2 신호 라인들은 비트 라인들(BL)일 수 있다. 복수의 워드 라인들(WL) 및 비트 라인들(BL)을 통해 각종 전압 신호나 전류 신호가 제공됨에 따라, 선택된 메모리 셀들에 대해서는 데이터가 기입되거나 독출되며, 나머지 비선택된 메모리 셀들에 대해서는 기입이나 독출이 수행되는 것이 방지될 수 있다.
메모리 셀 어레이(110)에 구비되는 메모리 셀들은 서로 다른 뱅크들(BANK)로 구분될 수 있다. 각각의 뱅크들(BANK)은 복수의 페이지들(PAGE)을 포함할 수 있고, 하나의 페이지(PAGE)는 뱅크(BANK) 내에서 동일한 로우 어드레스(RA)를 갖는 메모리 셀들을 의미할 수 있다. 뱅크(BANK)는 인터리빙 동작이 수행되는 단위일 수 있고, 페이지(PAGE)는 독출 또는 기입 동작이 수행되는 단위일 수 있다.
메모리 장치(100)에는 커맨드(CMD)에 수반하여 억세스할 메모리 셀을 지시하기 위한 어드레스(ADDR)가 수신될 수 있으며, 어드레스(ADDR)는 메모리 셀 어레이(110)의 워드 라인들(WL)을 선택하기 위한 로우 어드레스(RA)와 메모리 셀 어레이(110)의 비트 라인들(BL)을 선택하기 위한 칼럼 어드레스(CA)를 포함할 수 있다. 로우 디코더(160)는 로우 어드레스(RA)에 응답하여 워드 라인 선택 동작을 수행하며, 칼럼 디코더(170)는 칼럼 어드레스(CA)에 응답하여 비트 라인 선택 동작을 수행할 수 있다.
기입/독출 회로(120)는 메모리 셀 어레이(110)의 제1 신호 라인들 및/또는 제2 신호 라인들에 연결되어 메모리 셀에 데이터를 기입하거나, 메모리 셀로부터 데이터를 독출할 수 있다. 전압 발생 회로(150)는 기입 동작에 이용되는 기입 전압(Vwrite)을 생성하고, 독출 동작에 이용되는 독출 전압(Vread)을 생성할 수 있다. 기입 전압(Vwrite)은 기입 동작에 관련된 각종 전압으로서 셋 펄스 및 리셋 펄스 등을 포함할 수 있다. 기입 전압(Vwrite) 및 독출 전압(Vread)은 칼럼 디코더(170)를 통해 비트 라인들(BL)로 제공되거나, 로우 디코더(160)를 통해 워드 라인들(WL)로 제공될 수 있다.
기준 신호 발생 회로(140)는 데이터 독출 동작에 관련된 각종 기준 신호들로서, 기준 전압(Vref) 및 기준 전류(Iref)를 생성할 수 있다. 예를 들어, 센스 앰프(121)는 데이터를 판별하기 위하여 비트 라인(BL)의 일 노드(예를 들어, 센싱 노드)에 연결될 수 있으며, 센싱 노드의 전압과 기준 전압(Vref)에 대한 비교 동작을 통해 데이터 값이 판별될 수 있다. 또는, 전류 센싱 방법이 적용되는 경우, 기준 신호 발생 회로(150)는 기준 전류(Iref)를 생성하여 메모리 셀 어레이(110)로 제공할 수 있으며, 상기 기준 전류(Iref)에 기인한 센싱 노드의 전압과 기준 전압(Vref)을 비교함에 의해 데이터 값이 판별될 수 있다.
기입/독출 회로(120)는 독출된 데이터에 대한 판별 결과를 제어 회로(130)로 제공할 수 있다. 제어 회로(130)는 판별 결과를 참조하여 메모리 셀 어레이(110)의 기입 및 독출 동작을 제어할 수 있다.
제어 회로(130)는 메모리 컨트롤러(200)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(110)에 데이터를 기입하거나 메모리 셀 어레이(110)로부터 데이터를 독출하기 위한 각종 제어 신호(CTRL_RW)를 출력할 수 있다. 제어 회로(130)는 메모리 장치(100) 내의 각종 동작을 전반적으로 제어할 수 있다.
제어 회로(130)는 메모리 셀 어레이(110)에 포함되어있는 서로 다른 뱅크에 대하여 인터리빙 동작을 수행할 수 있다. 제어 회로(130)는 제1 뱅크 및 제2 뱅크에 대하여 인터리빙 동작을 수행할 때, 제1 뱅크 및 제2 뱅크의 워드 라인 어드레싱을 변경할 수 있다.
제어 회로(130)는 데이터 비교 기입(Data Compare Write, DCW) 동작을 수행할 수 있다. 제어 회로(130)는 기입 커맨드(WCMD) 및 기입 데이터가 메모리 컨트롤러(200)로부터 수신되는 경우, 제어 회로(130)는 기입 커맨드(WCMD)에 대응되는 어드레스에 저장되어 있던 기존 데이터와 기입 데이터를 비교할 수 있고, 기입 데이터 중 기존 데이터와 다른 데이터를 갖는 메모리 셀에 대해서만 덮어 쓰기 동작을 수행할 수 있다. 예를 들어, 기존 데이터가 “00000000”이고, 기입 데이터가 “00000001”인 경우에는 8번째 비트에 대응되는 메모리 셀에 대해서만 덮어 쓰기 동작을 수행할 수 있다. 따라서, 이미 저장된 데이터와 기입될 데이터가 서로 유사할수록, 즉, 다른 데이터를 갖는 메모리 셀의 수가 적을수록 기입 동작을 수행하는 데에 소모되는 전력이 감소할 수 있다.
도 3은 도 2의 메모리 셀 어레이(110)의 예시적 실시예를 나타내는 회로도이다. 메모리 셀 어레이(110)는 복수의 뱅크들을 포함할 수 있으며, 도 3은 하나의 뱅크(BANK)를 나타낼 수 있다.
도 3을 참조하면, 뱅크(BANK)는 복수의 메모리 셀들(MC)을 포함할 수 있다. 여기서, 복수의 메모리 셀들(MC)과 연결되는 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수 및 메모리 셀들(MC)의 개수는 실시예에 따라 다양하게 변경될 수 있다. 본 도면은 워드 라인들(WL)의 개수가 비트 라인들(BL)의 개수와 동일한 것으로 도시되었으나, 이에 한정되지 않으며 서로 다를 수도 있다. 뱅크(BANK)는 복수의 페이지들(PAGE)을 포함할 수 있다. 하나의 페이지(PAGE)는 뱅크(BANK) 내에서 동일한 워드 라인과 연결되는 메모리 셀들을 의미할 수 있다.
일 실시예에 따르면, 복수의 메모리 셀들(MC)의 각각은 가변 저항(R) 및 선택 소자(D)를 포함할 수 있다. 여기서, 가변 저항(R)은 가변 저항 소자 또는 가변 저항 물질이라고 지칭할 수 있고, 선택 소자(D)는 스위칭 소자라고 지칭할 수 있다.
일 실시예에서, 가변 저항(R)은 복수의 비트 라인들(BL0∼BLm) 중 하나와 선택 소자(D)의 사이에 연결되며, 선택 소자(D)는 가변 저항(R)과 복수의 워드 라인들(WL0∼WLm) 중 하나의 사이에 연결될 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 선택 소자(D)가 복수의 비트 라인들(BL0∼BLm) 중 하나와 가변 저항(R) 사이에 연결되고, 가변 저항(R)이 선택 소자(D)와 복수의 워드 라인들(WL0∼WLm) 중 하나의 사이에 연결될 수 있다.
선택 소자(D)는 복수의 워드 라인들(WL0∼WLm) 중 어느 하나와 가변 저항(R) 사이에 연결될 수 있으며, 연결된 워드 라인과 비트 라인에 인가되는 전압에 따라 가변 저항(R)으로의 전류 공급을 제어할 수 있다. 일 실시예에서, 선택 소자(D)는 PN 접합 또는 PIN 접합 다이오드일 수 있으며, 다이오드의 애노드(anode)가 가변 저항(R)에 연결되고, 다이오드의 캐소드(cathode)가 복수의 비트 라인들(BL0∼BLm) 중 하나에 연결될 수 있다. 이 때, 다이오드의 애노드와 캐소드 사이의 전압 차가 다이오드의 문턱 전압보다 커지면, 다이오드가 턴 온되어 가변 저항(R)에 전류가 공급될 수 있다.
도 4a 내지 도 4c는 도 3의 메모리 셀(MC)의 변형 예들을 나타내는 회로도들이다.
도 4a를 참조하면, 메모리 셀(MCa)은 가변 저항(Ra)을 포함하고, 가변 저항(Ra)은 비트 라인(BL)과 워드 라인(WL) 사이에 연결될 수 있다. 메모리 셀(MCa)은 비트 라인(BL)과 워드 라인(WL)에 각각 인가되는 전압들에 의해서 데이터를 저장할 수 있다.
도 4b를 참조하면, 메모리 셀(MCb)은 가변 저항(Rb)과 양방향 다이오드(Db)를 포함할 수 있다. 가변 저항(Rb)은 데이터를 저장하기 위한 저항 물질을 포함할 수 있다. 양방향 다이오드(Db)는 가변 저항(Rb)과 비트 라인(BL) 사이에 연결되며, 가변 저항(Rb)은 워드 라인(WL)과 양방향 다이오드(Db) 사이에 연결될 수 있다. 양방향 다이오드(Db)와 가변 저항(Rb)의 위치는 서로 바뀔 수도 있다. 양방향 다이오드(Db)를 통해서 비선택된 메모리 셀에 흐르게 되는 누설 전류를 차단할 수 있다.
도 4c를 참조하면, 메모리 셀(MCc)은 가변 저항(Rc)과 트랜지스터(TR)를 포함할 수 있다. 트랜지스터(TR)는 워드 라인(WL)의 전압에 따라 가변 저항(Rc)에 전류를 공급 또는 차단하는 선택 소자, 즉, 스위칭 소자일 수 있다. 도 4c의 실시예에서는, 워드 라인(WL) 이외에, 가변 저항(Rc)의 양 단의 전압 레벨을 조절하기 위한 소스 라인(SL)이 추가로 구비될 수 있다. 트랜지스터(TR)는 가변 저항(Rc)과 비트 라인(BL) 사이에 연결되며, 가변 저항(R)은 소스 라인(SL)과 트랜지스터(TR) 사이에 연결될 수 있다. 트랜지스터(TR)와 가변 저항(Rc)의 위치는 서로 바뀔 수도 있다. 메모리 셀(MCc)은 워드 라인(WL)에 의해서 구동되는 트랜지스터(TR)의 온/오프 여부에 따라 선택 또는 비선택될 수 있다.
도 5는 도 1의 메모리 시스템에 포함된 메모리 컨트롤러(200)의 예시적 실시예를 나타내는 블록도이다.
도 5를 참조하면, 메모리 컨트롤러(200)는 인터리빙 컨트롤러(210), 프로세서(220), RAM(230), 호스트 인터페이스(240) 및 메모리 인터페이스(250)를 포함할 수 있다.
인터리빙 컨트롤러(210)는 전력 레벨 산출부(211) 및 커맨드 스케줄러(212)를 포함할 수 있다. 전력 레벨 산출부(211)는 복수의 기입 커맨드들이 메모리 장치로 제공됨에 따라, 각각의 기입 커맨드들에 의해 소모될 기입 전력 레벨을 산출할 수 있다. 예를 들어, 전력 레벨 산출부(211)는 복수의 기입 커맨드들 각각에 대응되는 뱅크에 대한 기입 동작으로 인하여 소모될 전력 레벨을 산출할 수 있다. 전력 레벨 산출부(211)의 기입 동작에 의한 전력 소모 레벨을 산출하는 방법은 도 7 등에 대한 설명에서 후술하겠다.
커맨드 스케줄러(212)는 메모리 장치(100)의 성능이 향상되도록 호스트로부터 수신된 기입/독출 요청을 관리할 수 있다. 예를 들어, 호스트로부터 수신된 기입 요청에 따라 복수의 기입 커맨드들이 커맨드 큐(231)에 인큐될 수 있고, 커맨드 스케줄러(111)는 인큐된(enqueued) 복수의 기입 커맨드들을 순차적(in-order) 또는 비순차적(out-of-order) 방식으로 메모리 장치로 제공할 수 있다. 일 실시예에 따른, 커맨드 스케줄러(111)는 전력 레벨 산출부(211)가 산출한 기입 전력 레벨에 기초하여 인큐된 복수의 기입 커맨드들을 스케줄링할 수 있고, 커맨드 스케줄러(111)는 인큐된 복수의 기입 커맨드들을 메모리 장치로 제공하는 타이밍을 조절할 수 있다. 커맨드 스케줄러(212)의 스케줄링 방법은 도 10 등에 대한 설명에서 후술하겠다.
프로세서(220)는 중앙처리장치 또는 마이크로 프로세서 등을 포함할 수 있고, 메모리 컨트롤러(200)의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(220)는 메모리 컨트롤러(200)를 제어하기 위한 소프트 웨어(software) 또는 펌웨어(firmware)를 구동하도록 구성될 수 있으며, 소프트 웨어 또는 펌웨어는 RAM(230)에 로딩되어 구동될 수 있다. RAM(230)은 프로세서(220)의 동작 메모리, 캐시 메모리, 또는 버퍼 메모리로 이용될 수 있다. RAM(230)에는 메모리 장치에 기입될 기입 데이터가 일시적으로 저장될 수 있고, 또한, 메모리 장치에서 독출된 독출 데이터가 일시적으로 저장될 수 있다.
일 실시예에서, RAM(230)에는 커맨드 큐(231)가 저장될 수 있다. 커맨드 큐(231)에는, 호스트로부터 수신된 기입 요청에 따라 복수의 커맨드들이 인큐될 수 있다. 예를 들어, 기입 커맨드들 및 독출 커맨드들이 인큐될 수 있다. 또한, 커맨드 큐(231)에는 인터리빙 컨트롤러(210)에 의해 생성된 선 독출 커맨드들이 인큐될 수 있다. 커맨드 큐(231)에 대해서는 도 8a 등에서 후술하겠다.
호스트 인터페이스(240)는 호스트와 인터페이스하여 호스트로부터 메모리 동작의 요청을 수신한다. 예를 들어, 호스트 인터페이스(240)는 호스트(HOST)로부터 데이터의 독출 및 기입 등의 각종 요청을 수신하고, 이에 응답하여 메모리 장치에 대한 메모리 동작을 위한 각종 내부 신호들을 발생할 수 있다.
메모리 인터페이스(250)는 메모리 컨트롤러(200)와 메모리 장치(100) 사이의 인터페이스를 제공할 수 있으며, 예를 들어, 기입 데이터 및 독출 데이터가 메모리 인터페이스(250)를 통해 메모리 장치와 송수신될 수 있다. 또한, 메모리 인터페이스(250)는 커맨드 및 어드레스를 메모리 장치로 제공할 수 있으며, 또한 메모리 장치(100)로부터 각종 정보들을 수신하여 이를 메모리 컨트롤러(200) 내부로 제공할 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러(200)의 동작 방법을 나타내는 순서도이다.
도 1 및 도 6을 참조하면, 단계 S10에서, 메모리 컨트롤러(200)는 호스트(HOST)로부터 기입 요청 및 기입 데이터를 수신할 수 있다. 수신된 기입 요청에 기초하여, 메모리 컨트롤러(200)는 커맨드 큐에 복수의 기입 커맨드들을 인큐(enqueue)할 수 있다.
단계 S20에서, 메모리 컨트롤러(200)의 인터리빙 컨트롤러(210)는, 인큐된 기입 커맨드들의 수가 기준 값을 초과하는지 판단할 수 있다. 일 실시예에서, 인터리빙 컨트롤러(210)는 서로 다른 뱅크들에 대응되는 기입 커맨드들의 수가 기준 값을 초과하는지 판단할 수 있다.
이 때, 기준 값은 기입 커맨드에 따른 기입 동작이 수행될 때 하나의 뱅크에서 소모되는 기입 전력 레벨이 최대라고 가정할 때, 인터리빙 동작에 따라 동시에 이용 가능한 뱅크의 수의 최대값을 의미할 수 있다. 예를 들어, 메모리 장치(100)가 기입 동작의 인터리빙 동작을 통해 소모할 수 있는 최대 전력 레벨이 32이고 기입 커맨드에 따라 하나의 뱅크에 기입하는 데에 소모되는 기입 전력 레벨의 최대 값이 8이면, 기준 값은 4일 수 있다.
단계 S30에서, 인큐된 기입 커맨드들의 수가 기준 값을 초과하지 않는 경우에는, 인터리빙 컨트롤러(210)는 인큐된 기입 커맨드들에 따른 인터리빙 동작을 수행하도록 메모리 장치를 제어할 수 있다.
인터리빙 컨트롤러(210)는 기입 동작에 따른 전력 소모를 미리 산출하지 않고 메모리 장치(100)가 인큐된 기입 커맨드들에 대한 인터리빙 동작을 수행하도록 제어할 수 있다. 즉, 인터리빙 컨트롤러(210)는 인큐된 기입 커맨드들을 메모리 장치로 병렬적으로 전송할 수 있다. 인큐된 기입 커맨드들의 수가 기준 값을 초과하지 않는 경우에는, 기입 커맨드 각각에 의한 기입 동작으로 서로 다른 뱅크에서 실제로 소모되는 기입 전력 레벨에 무관하게, 메모리 장치(100)가 인터리빙 동작으로 소모할 수 있는 전력 레벨의 상한 값을 초과하지 않을 수 있다.
단계 S40에서, 인터리빙 컨트롤러(210)는 인큐된 기입 커맨드들의 수가 기준 값을 초과하는 경우에, 기입 커맨드들 중 적어도 일부의 기입 커맨드에 의해 메모리 장치(100)에서 소모되는 기입 전력 레벨을 계산할 수 있다. 단계 S40에 대해서는 도 7에 대한 설명에서 자세히 후술하겠다.
단계 S50에서, 인터리빙 컨트롤러(210)는 단계 S40에서 산출된 기입 전력 레벨에 기초하여 인터리빙 동작을 위한 인터리빙 커맨드들을 스케줄링할 수 있다. 상기 인터리빙 커맨드들은 인큐된 기입 커맨드들 중 적어도 일부의 기입 커맨드일 수 있다. 단계 S50에 대해서는 도 11에 대한 설명에서 자세히 후술하겠다. 본 도면에서 단계 S40 및 단계 S50은 순차적으로 수행되는 것으로 도시되었으나, 본 개시에 따른 메모리 컨트롤러(200)의 동작 방법은 이에 한정되지 않는다. 단계 S40 및 단계 S50는 서로 오버랩되어 병렬적으로 수행될 수도 있다.
단계 S60에서, 메모리 컨트롤러(200)는 인터리빙 동작을 위해 스케줄링된 인터리빙 커맨드들에 기초하여, 메모리 장치(100)가 인큐된 기입 커맨드들에 대한 인터리빙 동작을 수행하도록 제어할 수 있다. 예를 들어, 메모리 장치(100)는 스케줄링된 인터리빙 커맨드들을 메모리 장치(100)로 병렬적으로 전송할 수 있다.
본 개시의 예시적 실시예에 따른 메모리 컨트롤러(200)의 동작 방법은 인큐된 기입 커맨드들의 수에 따라 단계 S40 및 단계 S50을 수행할지 결정할 수 있다. 따라서, 메모리 컨트롤러(200)가 단계 S40 및 단계 S50가 불필요하게 수행함으로써 소모되는 시간이 감소될 수 있다.
또한, 인큐된 기입 커맨드들의 수가 기준 값을 초과하는 경우에, 메모리 컨트롤러(200)는 기입 동작으로 인하여 소모될 전력을 반영하여 기입 커맨드들을 스케줄링하므로, 인터리빙 동작을 수행할 기입 커맨드의 수가 증가될 수 있고, 기입 동작으로 인한 메모리 장치(100)의 전력 소모가 효율적으로 관리될 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러(200)의 동작 방법을 나타내는 순서도로서, 도 6의 S40단계의 예시적 실시예를 나타내는 순서도이다.
도 5 및 도 7을 참조하면, 단계 S410에서, 인터리빙 컨트롤러(210), 예를 들어, 도 5의 전력 레벨 산출부(211)는 인큐된 기입 커맨드들 중 전력을 산출하기 위한 적어도 일부의 기입 커맨드들을 선택할 수 있다. 단계 S410에서 선택된 적어도 일부의 기입 커맨드들 각각에 대해 이하의 단계들(단계 S420 내지 단계 S490)이 수행될 수 있다.
S420 단계에서, 전력 레벨 산출부(211)는 선택된 기입 커맨드보다 선행하는, 타겟 뱅크에 대한 독출 커맨드가 존재하는지 확인할 수 있다. 즉, 전력 레벨 산출부(211)는 타겟 뱅크에 대한 독출 커맨드가 현재 계류 중(Pending)인지 또는, 메모리 장치(100)가 독출 커맨드에 따라 독출 동작을 수행 중인지 확인할 수 있다. 이 때, 타겟 뱅크는 선택된 기입 커맨드의 타겟 뱅크를 의미할 수 있다.
단계 S430에서, 선택된 기입 커맨드보다 선행하는 타겟 뱅크에 대한 독출 커맨드가 존재하지 않는 경우에, 전력 레벨 산출부(211)는 선택된 기입 커맨드보다 선행하는, 타겟 뱅크에 대한 다른 기입 커맨드가 존재하는지 확인할 수 있다. 선택된 기입 커맨드보다 선행하는 타겟 뱅크에 대한 독출 커맨드 또는 다른 기입 커맨드가 존재하지 않은 경우, 단계 S440 및 단계 S450이 수행될 수 있다.
단계 S440에서, 전력 레벨 산출부(211)는 선 독출 커맨드를 생성할 수 있다. 이 때, 상기 선 독출 커맨드는 상기 기입 데이터가 기입될 어드레스에 대한 독출 커맨드일 수 있다. 단계 S450에서, 전력 레벨 산출부(211)는 선 독출 커맨드에 의해 독출된 선 독출 데이터와 기입 데이터를 비교하여 소모될 기입 전력 레벨을 산출할 수 있다.
메모리 장치(100)는 데이터 비교 기입(DCW) 동작을 수행하므로, 메모리 장치(100)는 기입 커맨드가 수신되면, 기존에 기입되어 있던 기존 데이터와 기입될 기입 데이터를 비교하여 서로 다른 데이터를 갖는 메모리 셀에 대해서만 덮어쓰기 동작을 수행할 수 있다. 기존 데이터와 기입 데이터의 차이에 따라 기입 동작으로 인하여 소모되는 전력의 크기가 상이해질 수 있다. 따라서, 전력 레벨 산출부(211)는 선 독출 커맨드를 생성하여 메모리 장치(100)에 제공한 후 선 독출 데이터와 기입 데이터를 비교하고, 선 독출 데이터와 기입 데이터의 차이에 기초하여 기입 동작에 의해 소모될 전력 레벨을 산출할 수 있다.
선택된 기입 커맨드보다 선행하는 다른 기입 커맨드가 존재하는 경우에는 단계 S460이 수행될 수 있다. 단계 S460에서, 전력 레벨 산출부(211)는 선 독출 커맨드를 생성하지 않고, 기입 동작으로 인해 소모될 기입 전력 레벨을 최대 값으로 가정하여 산출할 수 있다. 기입 동작을 수행하려는 타겟 뱅크에 대한 다른 기입 동작이 이미 수행 중인 경우에는, 수행 중인 기입 동작이 완료되어야 선택된 기입 커맨드에 의한 기입 동작이 수행될 수 있다. 따라서, 인터리빙 컨트롤러(210)는 뱅크 충돌(Bank Conflict) 상황을 방지하기 위해 전력 레벨 산출 단계(S40)에서는 뱅크 충돌 가능성이 있을 경우 기입 전력 레벨이 최대 값을 갖는 것으로 가정하여 산출할 수 있다.
선택된 기입 커맨드보다 선행하는 독출 커맨드가 존재하는 경우에는 단계 S470이 수행될 수 있다. 단계 S470에서, 전력 레벨 산출부(211)는 독출 커맨드에 대응되는 로우 어드레스와 선택된 기입 커맨드에 대응되는 로우 어드레스가 서로 동일한지 확인할 수 있다. 서로 상이한 경우에는 단계 S480가 수행될 수 있다. 예를 들어, 단계 S470에서, 전력 레벨 산출부(211)는 독출 커맨드에 대응되는 페이지와 선택된 기입 커맨드에 대응되는 타겟 페이지가 서로 동일한지 확인할 수 있다.
단계 S480에서, 독출 커맨드에 대응되는 로우 어드레스와 선택된 기입 커맨드에 대응되는 로우 어드레스가 서로 상이한 경우에는, 전력 레벨 산출부(211)는 선 독출 커맨드를 생성하지 않고, 기입 동작으로 인해 소모될 기입 전력 레벨을 최대 값으로 가정할 수 있다. 기입 동작을 수행하려는 타겟 뱅크에 대한 독출 동작이 이미 수행 중인 경우에는, 수행 중인 독출 동작이 완료되어야 선택된 기입 커맨드에 의한 기입 동작이 수행될 수 있다. 따라서, 인터리빙 컨트롤러(210)는 뱅크 충돌 상황을 방지하기 위해 전력 레벨 산출 단계(S40)에서는 뱅크 충돌 가능성이 있을 경우 전력 소모 레벨이 최대 값을 갖는 것으로 가정하여, 이 후 단계(예를 들어, 도 6의 단계 S50)에서 최대 값의 전력 레벨에 기초하여 커맨드 스케줄링 동작을 수행할 수 있다.
선택된 기입 커맨드에 대응되는 로우 어드레스와 독출 커맨드에 대응되는 로우 어드레스가 서로 동일한 경우에는 단계 S490가 수행될 수 있다. 예를 들어, 선택된 기입 커맨드의 타겟 페이지와 독출 커맨드에 대응되는 페이지가 서로 동일한 경우에는 단계 S490가 수행될 수 있다. 단계 S490에서, 전력 레벨 산출부(211)는 독출 커맨드에 의해 독출된 독출 데이터와 기입 데이터를 비교하여 기입 동작으로 인해 소모될 기입 전력 레벨을 산출할 수 있다. 선택된 기입 커맨드에 대응되는 타겟 페이지에 대한 독출 커맨드가 이미 선행하므로, 전력 레벨 산출부(211)는 전력 레벨을 산출하기 위해 별도의 선 독출 커맨드를 생성할 필요 없이, 독출 데이터를 활용하여 기입 동작으로 인해 소모될 전력 레벨을 산출할 수 있다. 일 실시예에서, 독출 커맨드로 인해 독출된 독출 데이터가 메모리 컨트롤러(200)의 RAM(230)에 저장되어 있는 경우에는 단계 S480가 수행된 이후에 단계 S490가 바로 이어서 수행될 수 있다. 일 실시예에서, 타겟 페이지에 대한 독출 커맨드가 커맨드 큐(231)에 계류 중(pending)이거나, 메모리 장치(100)에 독출 커맨드가 제공되었으나 아직 독출 데이터가 메모리 컨트롤러(200)로 수신되지 않은 경우에는, 단계 S480이 종료된 이후 일정 시간 동안 대기한 후 단계 S490가 수행될 수 있다.
도 8a는 도 5의 커맨드 큐(231)의 예시적 실시예를 나타내는 테이블이다. 도 8b는 도 5의 인터리빙 컨트롤러(210)가 도 7의 단계 S440를 수행함으로써 생성된 선 독출 커맨드들이 인큐된 커맨드 큐의 예시적 실시예를 나타내는 테이블이다.
도 8a를 참조하면, 호스트로부터 수신된 기입 요청에 따라 복수의 커맨드들이 커맨드 큐(231)에 인큐될 수 있다. 커맨드 큐(231)는 기입 커맨드들이 인큐된 기입 커맨트 큐(231a_1) 및 독출 커맨드들이 인큐된 독출 커맨드 큐(231a_2)를 포함할 수 있다.
일 실시예에서, 기입 커맨트 큐(231a_1) 및 독출 커맨드 큐(231a_2)에는 기입 요청 및 독출 요청이 호스트로부터 수신되는 순서대로 커맨드들의 인큐될 수 있다. 예를 들어, 기입 커맨트 큐(231a_1)에는 호스트로부터 기입 요청이 수신된 순서에 따라 제1 내지 제10 기입 커맨드(WCMD0~WCMD9)가 순차적으로 인큐될 수 있다. 독출 커맨트 큐(231a_2)에는 호스트로부터 독출 요청이 수신된 순서에 따라 제1 및 제2 독출 커맨드(RCMD0, RCMD1)가 순차적으로 인큐될 수 있다. 도 8a에 도시된 기입 커맨트 큐(231_1) 및 독출 커맨드 큐(231_2)는 메모리 컨트롤러에 포함된 인터리빙 컨트롤러의 동작을 설명하기 위한 예시일 뿐이며, 본 개시의 메모리 컨트롤러의 동작 방법은 도시된 바에 한정되는 것은 아니다. 도 8a 에서는 기입 커맨트 큐(231a_1) 및 독출 커맨드 큐(231a_2)가 별도로 구성되는 것으로 도시되었으나, 이에 한정되지 않으며, 독출 커맨드들이 함께 하나의 커맨드 큐(231)를 이룰 수 있다.
기입 커맨트 큐(231_1)에 인큐된 제1 내지 제10 기입 커맨드(WCMD0~WCMD9) 중 기준 값을 초과하지 않는 기입 커맨드들에 대해 도 6의 단계 S30이 수행될 수 있다. 또한, 기준 값을 초과하는 기입 커맨드들에 대해서는 도 6의 단계 S40 내지 S60가 수행될 수 있다. 예를 들어, 기준 값이 4인 경우, 상대적으로 앞서 인큐되는 4개의 기입 커맨드들인 제1 내지 제4 기입 커맨드(WCMD0~WCMD3)에 대해서 단계 S30이 수행될 수 있고, 나머지 기입 커맨드들(WCMD5~WCMD9)에 대해 단계 S40 내지 S60이 수행될 수 있다.
도 8a 및 도 8b를 참조하면, 인터리빙 컨트롤러는 선행하는 독출 커맨드 또는 선행하는 다른 기입 커맨드가 없는 기입 커맨드들, 예를 들어, 제5, 제8, 제9 및 제10 기입 커맨드(WCMD4, WCMD7, WCMD8, WCMD9)와 관련하여 단계 S440 및 S450을 수행할 수 있다. 단계 S440이 수행됨에 따라 기입 커맨드들(WCMD4, WCMD7, WCMD8, WCMD9) 각각에 대응되는 선 독출 커맨드들(pre_RCMD0, pre_RCMD1, pre_RCMD2, pre_RCMD3)이 생성될 수 있다. 선 독출 커맨드들(pre_RCMD0, pre_RCMD1, pre_RCMD2, pre_RCMD3)은 대응되는 기입 커맨드들(WCMD4, WCMD7, WCMD8, WCMD9)의 순서대로 프리 독출 커맨드 큐(231b)에 인큐될 수 있다. 따라서, 도 5의 커맨드 큐(231)는 프리 독출 커맨드 큐(231b)를 더 포함할 수 있다.
도 9는 도 6의 단계 S30 및 도 7의 단계 S40의 예시적 실시예를 설명하기 위한 도면으로, 전력 레벨 산출부가 각각의 기입 커맨드에 대응되는 기입 전력 레벨을 산출한 값을 나타낸다.
도 8a, 도 8b 및 도 9를 참조하면, 예를 들어, 기입 동작으로 인한 기입 전력 레벨은 8개의 레벨(레벨 1~레벨 8)로 나눠질 수 있고, 숫자가 높아질수록 소비되는 전력이 높은 것을 의미할 수 있다. 다만, 이는 예시적인 것이며 기입 전력 레벨은 다양하게 세분화될 수 있다.
인터리빙 컨트롤러의 전력 레벨 산출부(예를 들어, 도 5의 211)는 커맨드 큐에 인큐된 제1 내지 제10 기입 커맨드(WCMD0~WCMD9) 중 기준 값(예를 들어, 기준 값이 4라고 가정)을 초과하지 않는 기입 커맨드들(WCMD0~WCMD3) 각각에 대응되는 기입 전력 레벨은 최대 값(레벨 8)으로 산출할 수 있다. 즉, 전력 레벨 산출부(211)는 제1 내지 제4 기입 커맨드WCMD0~WCMD3)에 대해서는 도 6의 단계 S40 내지 S60을 수행하지 않고, 기입 커맨드들(WCMD0~WCMD3) 각각에 대응되는 기입 전력 레벨이 최대 값(레벨 8)을 갖는 것으로 가정하여 산출할 수 있다.
전력 레벨 산출부(211)는 상기 기준 값을 초과하는 기입 커맨드들(WCMD4~WCMD9) 중 적어도 일부에 대해 기입 전력 레벨을 산출할 수 있다. 예를 들어, 상기 기준 값을 초과하는 기입 커맨드들(WCMD4~WCMD9) 모두에 대해 기입 전력 레벨을 산출할 수 있다.
전력 레벨 산출부(211)는, 선행하는 독출 커맨드 또는 선행하는 다른 기입 커맨드가 없는 제5, 제8, 제9 및 제10 기입 커맨드(WCMD4, WCMD7, WCMD8, WCMD9)에 대응되는 선 독출 커맨드들(pre_RCMD0, pre_RCMD1, pre_RCMD2, pre_RCMD3)을 생성할 수 있다(도 7의 S440). 제5, 제8, 제9 및 제10 기입 커맨드(WCMD4, WCMD7, WCMD8, WCMD9)에 선행하여 선 독출 커맨드들(pre_RCMD0, pre_RCMD1, pre_RCMD2, pre_RCMD3)이 메모리 장치로 제공되고, 전력 레벨 산출부(211)는 선 독출 커맨드들(pre_RCMD0, pre_RCMD1, pre_RCMD2, pre_RCMD3)에 의해 수신된 선 독출 데이터와 기입 데이터를 비교하여, 기입 전력 레벨을 산출할 수 있다(도 7의 S450). 예를 들어, 제5, 제8, 제9 및 제10 기입 커맨드(WCMD4, WCMD7, WCMD8, WCMD9)에 각각 대응되는 기입 전력 레벨은 각각 3, 4, 4, 3 레벨로 산출될 수 있다.
전력 레벨 산출부(211)는, 타겟 뱅크에 대해 선행하는 다른 기입 커맨드가 존재하는 제6 기입 커맨드(WCMD5)에 대해서, 기입 전력 레벨을 최대 값(레벨 8)으로 가정하여 산출할 수 있다(도 7의 S460).
또한, 전력 레벨 산출부(211)는, 선행하는 독출 커맨드(RCMD1)가 존재하고 독출 커맨드(RCMD1)에 대응되는 뱅크(Bank6)가 제7 기입 커맨드(WCMD6)에 대응되는 타겟 뱅크(Bank6)와 동일한 경우, 특히, 선행하는 독출 커맨드(RCMD1)에 대응되는 페이지가 제7 기입 커맨드(WCMD6)에 대응되는 타겟 페이지와 동일한 경우에는, 독출 커맨드(RCMD1)에 의해 독출된 독출 데이터와 기입 데이터를 비교하여 기입 전력 레벨을 산출할 수 있다(도 7의 S490). 예를 들어, 상기 제7 기입 커맨드(WCMD6)에 대응되는 기입 전력 레벨은 레벨 6으로 산출될 수 있다.
다만, 도시된 것과 달리 전력 레벨 산출부(211)는, 선행하는 독출 커맨드에 대응되는 뱅크가 제7 기입 커맨드(WCMD6)에 대응되는 타겟 뱅크와 동일하나, 선행하는 독출 커맨드에 대응되는 페이지가 제7 기입 커맨드(WCMD6)에 대응되는 타겟 페이지와 서로 상이한 경우에는, 기입 전력 레벨을 최대 값(레벨 8)으로 가정하여 산출할 수도 있다(도 7의 S480).
도 10은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러(200)의 동작 방법을 나타내는 순서도로서, 도 6의 단계 S50의 예시적 실시예를 나타내는 순서도이다.
도 5 및 도 10을 참조하면, 단계 S510에서, 인터리빙 컨트롤러(210), 예를 들어, 도 5의 커맨드 스케줄러(212)는 커맨드 큐(231)에 인큐된 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 선택할 수 있다. 예를 들어, 인터리빙 커맨드들은 인큐된 기입 커맨드들 중 적어도 일부일 수 있다.
단계 S520에서, 커맨드 스케줄러(212)는 인터리빙 커맨드들에 따른 인터리빙 동작으로 인하여 소모될 인터리빙 전력 레벨을 산출할 수 있다. 예를 들어, 커맨드 스케줄러(212)는 인터리빙 커맨드들 각각에 따른 기입 동작으로 인하여 메모리 장치에서 소모되는 기입 전력 레벨을 합산하여 인터리빙 전력 레벨을 산출할 수 있다.
단계 S530에서, 산출된 상기 인터리빙 전력 레벨이 기준 전력 레벨을 초과하는지 판단할 수 있다. 상기 기준 전력 레벨은 메모리 장치가 인터리빙 동작에 따라 복수의 뱅크들에 기입 동작들을 수행할 때 이용 가능한 최대의 전력 레벨로 설정될 수 있다.
상기 인터리빙 전력 레벨이 기준 전력 레벨을 초과하지 않는 경우에, 단계 S540에서, 커맨드 스케줄러(212)는 상기 인터리빙 커맨드들을 스케줄링할 수 있다. 즉, 커맨드 스케줄러(212)는 상기 인터리빙 커맨드들을 병렬적으로 메모리 장치에 전송할 수 있도록 인터리빙 커맨드들을 스케줄링할 수 있다.
반면, 상기 인터리빙 전력 레벨이 기준 전력 레벨을 초과하는 경우에, 단계 S510으로 돌아가서 커맨드 스케줄러(212)는 기준 전력 레벨을 만족할 수 있도록 커맨드 큐(231)에 인큐된 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 재선택할 수 있다. 예를 들어, 커맨드 스케줄러(212)는 이전에 선택되었던 인터리빙 커맨드들 중에서 적어도 하나를 제외하여 인터리빙 커맨드들을 다시 선택할 수 있다. 또는, 예를 들어, 커맨드 스케줄러(212)는 이전에 선택되었던 인터리빙 커맨드들 중에서 적어도 하나를 제외하고, 선택되지 않았던 다른 기입 커맨드를 인터리빙 기입 커맨드로 다시 선택할 수도 있다.
단계 S550에서, 커맨드 스케줄러(212)는 스케줄링되지 않은 인큐된 기입 커맨드가 존재하는지 확인할 수 있다. 커맨드 스케줄러(212)는 스케줄링되지 않은 기입 커맨드가 존재하면, 다시 단계 S510 내지 S540 단계를 수행할 수 있다.
본 개시에 따른 메모리 컨트롤러(200)의 동작 방법은, 각각의 기입 커맨드들에 따른 기입 전력 레벨을 미리 산출한 후, 복수의 기입 커맨드들의 인터리빙 동작으로 인한 인터리빙 전력 레벨을 고려하여 인터리빙 동작을 제어할 수 있다. 따라서, 인터리빙 동작을 위한 기입 커맨드의 수가 증가되어 기입 동작에 걸리는 시간이 감소될 수 있고, 기입 동작으로 인한 메모리 장치의 전력 소모를 효율적으로 관리할 수 있다.
도 11은 도 10의 단계 S50의 예시적 실시예를 설명하기 위한 타이밍도이다. 도 11은 메모리 장치로 전송될 커맨드들에 따라 타겟 뱅크들이 기입 동작 또는 독출 동작을 수행하는 데에 걸리는 시간을 도시한 도면이다.
도 9, 도 10 및 도 11을 참조하면, 커맨드 스케줄러(예를 들어, 도 5의 212)는 커맨트 큐에 인큐된 제1 내지 제10 기입 커맨드(WCMD0~WCMD9) 중 기준 값(예를 들어, 4)을 초과하지 않는 제1 내지 제4 기입 커맨드(WCMD0~WCMD3)에 대해서 인터리빙 동작을 수행할 수 있도록 스케줄링할 수 있다. 즉, 메모리 장치가 제1 내지 제4 기입 커맨드(WCMD0~WCMD3)에 따른 기입 동작을 병렬적으로 수행할 수 있도록, 커맨드 스케줄러(212)는 제1 내지 제4 기입 커맨드(WCMD0~WCMD3)를 스케줄링할 수 있다.
단계 S510에서, 커맨드 스케줄러(212)는 제1 내지 제4 기입 커맨드(WCMD0~WCMD3)와 함께 제5 기입 커맨드(WCMD4)를 선택할 수 있고, 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 35(8+8+8+8+3)가 되어 기준 전력 레벨(레벨 32)을 초과하게 된다. 따라서, 커맨드 스케줄러(212)는 제1 기입 커맨드(WCMD0)에 따른 기입 동작이 종료된 시간(t1) 이 후에 제5 기입 커맨드(WCMD4)를 메모리 장치에 제공하도록 스케줄링할 수 있다.
다시 단계 S510에서, 커맨드 스케줄러(212)는 제2 내지 제5 기입 커맨드(WCMD1~WCMD4)와 함께 제6 기입 커맨드(WCMD5)를 선택할 수 있고, 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 35(8+8+8+3+8)가 되어 기준 전력 레벨(레벨 32)을 초과하게 된다. 제2 기입 커맨드(WCMD1)에 따른 기입 동작이 종료된 시간(t2) 이후에 메모리 장치는 제3 내지 제5 기입 커맨드(WCMD2~WCMD4)와 함께 제6 기입 커맨드(WCMD5)에 따른 인터리빙 동작을 수행할 수 있다. 따라서, 커맨드 스케줄러(212)는 제2 기입 커맨드(WCMD1)에 따른 기입 동작이 종료된 시간(t2) 이 후에 제6 기입 커맨드(WCMD5)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
다시 단계 S510에서, 커맨드 스케줄러(212)는 제3 내지 제6 기입 커맨드(WCMD2~WCMD5)와 함께 제7 기입 커맨드(WCMD6)를 선택할 수 있고, 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 33(8+8+3+8+6)이 되어 기준 전력 레벨(레벨 32)을 초과하게 된다. 제3 기입 커맨드(WCMD2)에 따른 기입 동작이 종료된 시간(t3) 이후에 메모리 장치는 제4 내지 제6 기입 커맨드(WCMD3~WCMD5)와 함께 제7 기입 커맨드(WCMD6)에 따른 인터리빙 동작을 수행할 수 있다. 따라서, 커맨드 스케줄러(212)는 제3 기입 커맨드(WCMD2)에 따른 기입 동작이 종료된 시간(t3) 이 후에 제7 기입 커맨드(WCMD6)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
다시 단계 S510에서, 커맨드 스케줄러(212)는 제4 내지 제7 기입 커맨드(WCMD3~WCMD6)와 함께 제8 기입 커맨드(WCMD7)를 선택할 수 있고, 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 29(8+3+8+6+4)이 되어 기준 전력 레벨(레벨 32) 이하의 전력 레벨을 갖게 된다. 따라서, 커맨드 스케줄러(212)는 제3 기입 커맨드(WCMD2)에 따른 기입 동작이 종료된 시간(t3) 이 후에 제7 기입 커맨드(WCMD6) 및 제8 기입 커맨드(WCMD7)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
다시 단계 S510에서, 커맨드 스케줄러(212)는 제4 내지 제8 기입 커맨드(WCMD3~WCMD7)와 함께 제9 기입 커맨드(WCMD8)를 선택할 수 있고, 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 33(8+3+8+6+4+4)이 되어 기준 전력 레벨(레벨 32)을 초과하게 된다. 제4 기입 커맨드(WCMD3)에 따른 기입 동작이 종료된 시간(t4) 이후에 메모리 장치는 제5 내지 제8 기입 커맨드(WCMD4~WCMD7)와 함께 제9 기입 커맨드(WCMD8)에 따른 인터리빙 동작을 수행할 수 있다. 따라서, 커맨드 스케줄러(212)는 제4 기입 커맨드(WCMD3)에 따른 기입 동작이 종료된 시간(t4) 이 후에 제9 기입 커맨드(WCMD8)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
다시 단계 S510에서, 커맨드 스케줄러(212)는 제5 내지 제9 기입 커맨드(WCMD4~WCMD8)와 함께 제10 기입 커맨드(WCMD9)를 선택할 수 있고, 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 28(3+8+6+4+4+3)이 되어 기준 전력 레벨(레벨 32) 이하의 전력 레벨을 갖게 된다. 따라서, 커맨드 스케줄러(212)는 제4 기입 커맨드(WCMD3)에 따른 기입 동작이 종료된 시간(t4) 이 후에 제9 기입 커맨드(WCMD8) 및 제10 기입 커맨드(WCMD9)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
도 12a는 도 10의 단계 S50의 예시적 실시예를 설명하기 위한 타이밍도이다. 도 12a은 메모리 장치로 전송될 커맨드들에 따라 타겟 뱅크들이 기입 동작 또는 독출 동작을 수행하는 데에 걸리는 시간을 도시한 도면이다.
도 9, 도 10 및 도 12a를 참조하면, 커맨드 스케줄러(예를 들어, 도 5의 212)는 커맨트 큐에 인큐된 제1 내지 제10 기입 커맨드(WCMD0~WCMD9) 중 기준 값(예를 들어, 4)을 초과하지 않는 제1 내지 제4 기입 커맨드(WCMD0~WCMD3)는 인터리빙 동작을 수행할 수 있도록 스케줄링할 수 있다.
단계 S510에서, 커맨드 스케줄러(212)는 제1 내지 제4 기입 커맨드(WCMD0~WCMD3)와 함께 제5 기입 커맨드(WCMD4)를 선택할 수 있고, 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 35(8+8+8+8+3)가 되어 기준 전력 레벨(레벨 32)을 초과하게 된다. 따라서, 커맨드 스케줄러(212)는 제1 기입 커맨드(WCMD0)에 따른 기입 동작이 종료된 시간(t1) 이 후에 제5 기입 커맨드(WCMD4)를 메모리 장치에 제공하도록 스케줄링할 수 있다.
다시 단계 S510에서, 커맨드 스케줄러(212)는 제2 내지 제5 기입 커맨드(WCMD1~WCMD4)와 함께 제8 기입 커맨드(WCMD7)를 선택할 수 있고, 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 31(8+8+8+3+4)이 되어 기준 전력 레벨(레벨 32)이하의 값을 갖게 된다. 따라서, 커맨드 스케줄러(212)는 제1 기입 커맨드(WCMD0)에 따른 기입 동작이 종료된 시간(t1) 이 후에 제5 기입 커맨드(WCMD4) 및 제8 기입 커맨드(WCMD7)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
제2 기입 커맨드(WCMD1)에 따른 기입 동작이 종료되면(t2), 다시 단계 S510에서, 커맨드 스케줄러(212)는 제3, 제4, 제5 및 제8 기입 커맨드(WCMD2~WCMD4, WCMD7)와 함께 제9 기입 커맨드(WCMD8) 및 제10 기입 커맨드(WCMD9)를 더 선택할 수 있다. 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 30(8+8+3+4+4+3)이 되어 기준 전력 레벨(레벨 32)이하의 값을 갖게 된다. 따라서, 커맨드 스케줄러(212)는 제2 기입 커맨드(WCMD1)에 따른 기입 동작이 종료된 시간(t2) 이 후에 제9 기입 커맨드(WCMD8) 및 제10 기입 커맨드(WCMD9)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
제3 기입 커맨드(WCMD2)에 따른 기입 동작이 종료되면(t3), 다시 단계 S510에서, 커맨드 스케줄러(212)는 제4, 제5, 제8, 제9 및 제10 기입 커맨드(WCMD3~WCMD4, WCMD7~WCMD9)와 함께 제7 기입 커맨드(WCMD6)를 더 선택할 수 있다. 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 28(8+3+4+4+3+6)이 되어 기준 전력 레벨(레벨 32)이하의 값을 갖게 된다. 따라서, 커맨드 스케줄러(212)는 제3 기입 커맨드(WCMD2)에 따른 기입 동작이 종료된 시간(t3) 이 후에 제7 기입 커맨드(WCMD6)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
제4 기입 커맨드(WCMD3)에 따른 기입 동작이 종료되면(t4), 다시 단계 S510에서, 커맨드 스케줄러(212)는 제5, 제7, 제8, 제9 및 제10 기입 커맨드(WCMD4, WCMD6~WCMD9)와 함께 제6 기입 커맨드(WCMD5)를 더 선택할 수 있다. 단계 S520에서 산출된 인터리빙 전력 레벨이 레벨 28(3+6+4+4+3+8)이 되어 기준 전력 레벨(레벨 32)이하의 값을 갖게 된다. 따라서, 커맨드 스케줄러(212)는 제4 기입 커맨드(WCMD3)에 따른 기입 동작이 종료된 시간(t4) 이 후에 제6 기입 커맨드(WCMD5)가 메모리 장치에 제공되도록 스케줄링할 수 있다.
도 11 및 도 12a를 참조하면, 본 개시에 따른 메모리 컨트롤러의 동작 방법은, 각각의 기입 커맨드들에 따른 기입 전력 레벨을 미리 산출한 후, 복수의 기입 커맨드들의 인터리빙 동작으로 인한 인터리빙 전력 레벨을 고려하여 인터리빙 동작을 제어할 수 있다. 따라서, 인터리빙 동작을 통해 동시에 이용 가능한 뱅크의 수가 특정 값으로 한정되지 않고 증가될 수 있다. 또한, 기입 동작으로 인한 메모리 장치의 전력 소모를 효율적으로 관리할 수 있다.
도 12b는 도 5의 커맨드 큐(231)의 예시적 실시예를 나타내는 테이블로서, 도 12a에서 설명된 커맨드 스케줄러의 동작에 따라 변경된 커맨드 큐를 설명하기 위한 도면이다.
도 8a, 도 12a 및 도 12b를 참조하면, 커맨드 스케줄러(212)는 소모될 인터리빙 전력 레벨을 미리 산출하여 인터리빙 커맨드들을 스케줄링할 수 있다. 커맨드 스케줄러(212)는, 도 8a의 기입 커맨드 큐(231a_1)에 포함된 적어도 일부의 기입 커맨드의 순서가 변경된 도 12b의 기입 커맨드 큐(231a_1')를 RAM(230)에 새로 저장할 수 있다. 이 때, 도 8a의 기입 커맨드 큐(231a_1)는 호스트로부터 기입 요청이 수신된 순서에 따라 제1 내지 제10 기입 커맨드(WCMD0~WCMD9)가 순차적으로 저장된 것일 수 있다. 예를 들어, 제10 기입 커맨드(WCMD9)가 메모리 장치로 전송된 이후에 제7 기입 커맨드(WCMD6)가 전송되고, 제7 기입 커맨드(WCMD6)가 메모리 장치로 전송된 이후에 제6 기입 커맨드(WCMD5)가 전송되도록 기입 커맨드 큐(231a_1')가 새로이 저장될 수 있다. 도 12b의 기입 커맨드 큐(231a_1')에 인큐된 순서에 기초하여, 메모리 컨트롤러는 메모리 장치에 기입 커맨드를 전송할 수 있다.
본 개시는 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
10: 메모리 시스템, 100: 메모리 장치, 200: 메모리 컨트롤러
210: 인터리빙 컨트롤러, 211: 전력 레벨 산출부, 212: 커맨드 스케줄러
210: 인터리빙 컨트롤러, 211: 전력 레벨 산출부, 212: 커맨드 스케줄러
Claims (10)
- 복수의 뱅크들을 포함하는 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법으로서,
호스트로부터 수신된 기입 요청의 순서에 따라 복수의 기입 커맨드들을 상기 메모리 컨트롤러의 커맨드 큐에 저장하는 단계;
상기 메모리 컨트롤러의 커맨드 큐에 인큐된 기입 커맨드들의 수가 기준 값을 초과하는지 판단하는 단계;
상기 인큐된 기입 커맨드들의 수가 기준 값을 초과하는 경우에, 상기 인큐된 기입 커맨드들 중 적어도 일부의 기입 커맨드에 의해 소모될 기입 전력 레벨을 산출하는 단계; 및
산출된 기입 전력 레벨에 기초하여, 상기 인큐된 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 스케줄링하는 단계;를 포함하고,
상기 기입 전력 레벨을 산출하는 단계는,
상기 인큐된 기입 커맨드들 중 전력 레벨을 산출하기 위한 적어도 일부의 기입 커맨드를 선택하는 단계;
선택된 기입 커맨드의 타겟 뱅크에 대응하고, 상기 선택된 기입 커맨드보다 선행하는 독출 커맨드가 존재하는지 확인하는 단계;
상기 선택된 기입 커맨드보다 선행하는 독출 커맨드 및 다른 기입 커맨드가 존재하지 않는 경우, 상기 선택된 기입 커맨드보다 선행하는 선 독출 커맨드를 생성하는 단계; 및
상기 선 독출 커맨드에 의해 상기 메모리 장치로부터 독출된 선 독출 데이터 및 상기 선택된 기입 커맨드에 대응되는 기입 데이터를 비교하여, 상기 선택된 기입 커맨드의 상기 기입 전력 레벨을 산출하는 단계를 포함하고,
상기 인터리빙 커맨드들을 스케쥴링하는 단계는, 상기 산출된 기입 전력 레벨에 기초하여, 상기 커맨드 큐에 인큐된 기입 커맨드들의 처리 순서를 변경하는 단계를 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1 항에 있어서,
상기 기준 값은 기입 동작에 따라 하나의 뱅크에서 소모되는 기입 전력 레벨이 최대 값을 가질 때, 동시에 이용 가능한 뱅크의 수의 최대값인 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 삭제
- 제1 항에 있어서,
상기 기입 전력 레벨을 산출하는 단계는,
상기 선택된 기입 커맨드보다 선행하는 다른 기입 커맨드가 존재하는 경우, 상기 선택된 기입 커맨드의 상기 기입 전력 레벨을 최대 값으로 산출하는 단계를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1 항에 있어서,
상기 기입 전력 레벨을 산출하는 단계는,
상기 선택된 기입 커맨드보다 선행하는 독출 커맨드가 존재하는 경우, 상기 선택된 기입 커맨드에 대응되는 로우 어드레스와 상기 독출 커맨드에 대응되는 로우 어드레스가 서로 동일한지 확인하는 단계; 및
상기 선택된 기입 커맨드에 대응되는 로우 어드레스와 상기 독출 커맨드에 대응되는 로우 어드레스가 서로 상이한 경우, 상기 선택된 기입 커맨드의 상기 기입 전력 레벨을 최대 값으로 산출하는 단계; 를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1 항에 있어서,
상기 기입 전력 레벨을 산출하는 단계는,
상기 선택된 기입 커맨드보다 선행하는 독출 커맨드가 존재하는 경우, 상기 선택된 기입 커맨드에 대응되는 로우 어드레스와 상기 독출 커맨드에 대응되는 로우 어드레스가 서로 동일한지 확인하는 단계; 및
상기 선택된 기입 커맨드에 대응되는 로우 어드레스와 상기 독출 커맨드에 대응되는 로우 어드레스가 서로 동일한 경우, 상기 독출 커맨드에 의해 상기 메모리 장치로부터 독출된 독출 데이터 및 상기 선택된 기입 커맨드에 대응되는 기입 데이터를 비교하여, 상기 선택된 기입 커맨드의 상기 기입 전력 레벨을 산출하는 단계를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1 항에 있어서,
상기 인터리빙 커맨드들을 스케줄링하는 단계는,
인큐된 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 선택하는 단계;
상기 인터리빙 커맨드들에 따른 인터리빙 동작으로 인하여 상기 메모리 장치에서 소모될 인터리빙 전력 레벨을 산출하는 단계;
상기 인터리빙 전력 레벨이 기준 전력 레벨을 초과하는지 판단하는 단계; 및
상기 인터리빙 전력 레벨이 상기 기준 전력 레벨 이하인 경우 상기 인터리빙 커맨드들을 스케줄링하는 단계;를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 복수의 뱅크들을 포함하는 메모리 장치의 인터리빙 동작을 제어하는 메모리 컨트롤러로서,
상기 메모리 컨트롤러는,
호스트로부터 수신된 기입 요청의 순서에 따라 복수의 기입 커맨드들을 저장하는 커맨드 큐;
상기 메모리 장치로 제공될 복수의 기입 커맨드들 중 적어도 일부의 기입 커맨드에 의해 상기 메모리 장치에서 소모될 기입 전력 레벨을 산출하는 전력 레벨 산출부; 및
상기 산출된 기입 전력 레벨에 기초하여, 상기 복수의 기입 커맨드들 중 인터리빙 동작을 위한 인터리빙 커맨드들을 스케줄링하는 커맨드 스케줄러를 포함하고,
상기 전력 레벨 산출부는, 상기 복수의 기입 커맨드들의 수가 기준 값을 초과할 때, 상기 기입 전력 레벨을 산출하고,
상기 전력 레벨 산출부는,
상기 적어도 일부의 기입 커맨드의 타겟 뱅크에 대응하고, 상기 적어도 일부의 기입 커맨드보다 선행하는 독출 커맨드가 존재하는지 확인하고,
상기 적어도 일부의 기입 커맨드보다 선행하는 독출 커맨드 및 다른 기입 커맨드가 존재하지 않는 경우, 상기 적어도 일부의 기입 커맨드보다 선행하는 선 독출 커맨드를 생성하고,
상기 선 독출 커맨드에 의해 상기 메모리 장치로부터 독출된 선 독출 데이터 및 상기 적어도 일부의 기입 커맨드에 대응되는 기입 데이터를 비교하여, 상기 기입 전력 레벨을 산출하고,
상기 커맨드 스케줄러는 상기 산출된 기입 전력 레벨에 기초하여, 상기 커맨드 큐에 인큐된 상기 복수의 기입 커맨드들의 처리 순서를 변경함으로써, 상기 인터리빙 커맨드들을 스케쥴링하는 것을 특징으로 하는 메모리 컨트롤러. - 제8 항에 있어서,
상기 전력 레벨 산출부는,
상기 적어도 일부의 기입 커맨드의 타겟 뱅크에 대응되고, 상기 적어도 일부의 기입 커맨드보다 선행하는 다른 기입 커맨드가 존재하는 경우, 상기 기입 전력 레벨을 최대 값으로 산출하는 것을 특징으로 하는 메모리 컨트롤러. - 제8 항에 있어서,
상기 전력 레벨 산출부는,
상기 적어도 일부의 기입 커맨드의 타겟 페이지에 대응되고 상기 적어도 일부의 기입 커맨드보다 선행하는 독출 커맨드가 존재하는 경우, 상기 독출 커맨드에 의해 상기 메모리 장치로부터 독출된 독출 데이터 및 상기 적어도 일부의 기입 커맨드에 대응되는 기입 데이터를 비교하여, 상기 기입 전력 레벨을 산출하는 것을 특징으로 하는 메모리 컨트롤러.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180104780A KR102553264B1 (ko) | 2018-09-03 | 2018-09-03 | 메모리 컨트롤러 및 이의 동작 방법 |
US16/445,005 US10990523B2 (en) | 2018-09-03 | 2019-06-18 | Memory controller and operating method thereof |
CN201910609034.3A CN110875077A (zh) | 2018-09-03 | 2019-07-08 | 存储器控制器及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180104780A KR102553264B1 (ko) | 2018-09-03 | 2018-09-03 | 메모리 컨트롤러 및 이의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200026609A KR20200026609A (ko) | 2020-03-11 |
KR102553264B1 true KR102553264B1 (ko) | 2023-07-07 |
Family
ID=69639979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180104780A KR102553264B1 (ko) | 2018-09-03 | 2018-09-03 | 메모리 컨트롤러 및 이의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10990523B2 (ko) |
KR (1) | KR102553264B1 (ko) |
CN (1) | CN110875077A (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10922242B2 (en) * | 2018-10-09 | 2021-02-16 | Western Digital Technologies, Inc. | Adaptable logical to physical tables for multiple sector pattern support |
KR20210081093A (ko) * | 2019-12-23 | 2021-07-01 | 주식회사 실리콘웍스 | 메모리 컨트롤러, 및 이의 동작 방법 |
US11183248B1 (en) * | 2020-07-29 | 2021-11-23 | Micron Technology, Inc. | Timing parameter adjustment mechanisms |
US11971772B2 (en) * | 2021-08-31 | 2024-04-30 | Micron Technology, Inc. | Unified sequencer concurrency controller for a memory sub-system |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7471556B2 (en) | 2007-05-15 | 2008-12-30 | Super Talent Electronics, Inc. | Local bank write buffers for accelerating a phase-change memory |
US7889544B2 (en) | 2004-04-05 | 2011-02-15 | Super Talent Electronics, Inc. | High-speed controller for phase-change memory peripheral device |
TW515949B (en) * | 2000-06-08 | 2003-01-01 | Via Tech Inc | Method for scheduling run sequence of read and write requests |
US7911824B2 (en) | 2007-08-01 | 2011-03-22 | Panasonic Corporation | Nonvolatile memory apparatus |
JP2010176646A (ja) | 2009-02-02 | 2010-08-12 | Toshiba Information Systems (Japan) Corp | メモリシステムおよびメモリシステムのインターリーブ制御方法 |
US8570828B2 (en) | 2010-04-12 | 2013-10-29 | Mosaid Technologies Incorporated | Memory programming using variable data width |
US8848465B2 (en) | 2011-07-06 | 2014-09-30 | Samsung Electronics Co., Ltd. | Memory devices including selective RWW and RMW decoding |
KR20140008702A (ko) | 2012-07-11 | 2014-01-22 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 쓰기 방법 |
KR102031661B1 (ko) | 2012-10-23 | 2019-10-14 | 삼성전자주식회사 | 데이터 저장 장치 및 컨트롤러, 그리고 데이터 저장 장치의 동작 방법 |
KR20150121537A (ko) * | 2014-04-21 | 2015-10-29 | 에스케이하이닉스 주식회사 | 멀티 레벨 셀 저항 메모리 장치 및 그의 데이터 기입 방법 |
KR102298607B1 (ko) | 2015-02-17 | 2021-09-06 | 삼성전자주식회사 | 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법 |
JP2016167210A (ja) * | 2015-03-10 | 2016-09-15 | 株式会社東芝 | メモリコントローラ、データストレージデバイス、及び、データ書き込み方法 |
KR102608731B1 (ko) * | 2016-05-13 | 2023-12-04 | 에스케이하이닉스 주식회사 | 뱅크 인터리빙 제어 장치 및 이를 포함하는 반도체 장치 |
KR20170136382A (ko) * | 2016-06-01 | 2017-12-11 | 주식회사 맴레이 | 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서 |
KR102577160B1 (ko) * | 2016-06-07 | 2023-09-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US9727267B1 (en) * | 2016-09-27 | 2017-08-08 | Intel Corporation | Power management and monitoring for storage devices |
KR102636091B1 (ko) * | 2016-10-14 | 2024-02-14 | 에스케이하이닉스 주식회사 | 저항성 메모리 장치, 이를 위한 선택적 쓰기 장치 및 동작 방법 |
KR102549620B1 (ko) * | 2017-01-10 | 2023-06-28 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 이의 동작 방법 |
US11029859B2 (en) * | 2017-08-23 | 2021-06-08 | Toshiba Memory Corporation | Credit based command scheduling |
-
2018
- 2018-09-03 KR KR1020180104780A patent/KR102553264B1/ko active IP Right Grant
-
2019
- 2019-06-18 US US16/445,005 patent/US10990523B2/en active Active
- 2019-07-08 CN CN201910609034.3A patent/CN110875077A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20200026609A (ko) | 2020-03-11 |
US20200073799A1 (en) | 2020-03-05 |
CN110875077A (zh) | 2020-03-10 |
US10990523B2 (en) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102553264B1 (ko) | 메모리 컨트롤러 및 이의 동작 방법 | |
KR102131324B1 (ko) | 저항성 메모리 장치 및 저항성 메모리 장치의 동작방법 | |
US9952766B2 (en) | Memory system, including memory device capable of overwrite operation, and method of operating the memory system | |
US9728252B2 (en) | Resistive memory device with temperature compensation, resistive memory system, and operating method thereof | |
US10529421B2 (en) | Memory system having resistive memory device for scheduling write command and operating method thereof | |
US10546637B2 (en) | Method of operating resistive memory device reducing read disturbance | |
KR102151183B1 (ko) | 저항성 메모리 장치 및 저항성 메모리 장치의 동작방법 | |
KR102217243B1 (ko) | 저항성 메모리 장치, 저항성 메모리 시스템 및 저항성 메모리 장치의 동작방법 | |
EP3547318B1 (en) | Tailoring current magnitude and duration during a programming pulse for a memory device | |
US9514813B2 (en) | Resistive memory device, resistive memory system, and operating method thereof | |
JP2018200689A (ja) | 調節ポーリング時間によるデータ転送 | |
KR102251814B1 (ko) | 메모리 장치, 그것의 동작 및 제어 방법 | |
KR102386198B1 (ko) | 저항성 메모리 장치를 구비한 메모리 시스템 및 그의 동작 방법 | |
KR20150144177A (ko) | 저항성 메모리 장치 및 저항성 메모리 장치의 동작방법 | |
US10020052B2 (en) | Resistive memory device and memory system including the same | |
KR102079370B1 (ko) | 비휘발성 메모리 장치 및 그것의 쓰기 방법 | |
CN111316360A (zh) | 存储器装置上的可选修整设置 | |
CN109872751B (zh) | 存储器装置及其操作方法 | |
US11307918B2 (en) | Memory controller performing recovery operation, operating method of the same, and memory system including the same | |
KR20210047606A (ko) | 메모리 장치 | |
US9449686B2 (en) | Resistive memory device, resistive memory system and method of operating the resistive memory device | |
KR20200074872A (ko) | 에너지 효율적인 pram 어레이 기입 동작을 수행하는 메모리 장치 및 이를 포함하는 메모리 시스템 | |
KR20140013384A (ko) | 비휘발성 메모리 장치의 동작 방법 | |
US11183239B2 (en) | Resistive memory device and operating method thereof | |
US12020769B2 (en) | Systems and methods for dual standby modes in memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |