KR20220046211A - 저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents
저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 Download PDFInfo
- Publication number
- KR20220046211A KR20220046211A KR1020200129363A KR20200129363A KR20220046211A KR 20220046211 A KR20220046211 A KR 20220046211A KR 1020200129363 A KR1020200129363 A KR 1020200129363A KR 20200129363 A KR20200129363 A KR 20200129363A KR 20220046211 A KR20220046211 A KR 20220046211A
- Authority
- KR
- South Korea
- Prior art keywords
- request
- command
- lock
- memory
- queue
- Prior art date
Links
Images
Classifications
-
- 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/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/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
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0004—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0023—Address circuits or decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/004—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0069—Writing or programming circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1012—Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1063—Control signal output circuits, e.g. status or busy flags, feedback command signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0061—Timing circuits or methods
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)
- Chemical & Material Sciences (AREA)
- Crystallography & Structural Chemistry (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명의 실시예에 따른 메모리 시스템은, 다수의 메모리 셀들은 각각 포함하는 다수의 뱅크들을 포함하고, 커맨드 및 어드레스에 따라 리드 동작 혹은 라이트 동작을 수행하는 저항성 메모리 장치; 및 호스트로부터의 리퀘스트를 스케쥴링하여 상기 커맨드 및 상기 어드레스를 생성하되, 동일한 메모리 셀에 대한 이전 라이트 커맨드의 생성 시점으로부터 상기 리퀘스트에 따라 생성된 상기 커맨드의 생성 시점까지의 시간 간격이 제 1 시간 보다 짧은 경우, 상기 커맨드 생성을 중지하고 상기 리퀘스트에 대응되는 커맨드를 리-스케쥴링하는 메모리 컨트롤러를 포함할 수 있다.
Description
본 특허 문헌은 반도체 설계 기술에 관한 것으로, 구체적으로는 호스트로부터의 리퀘스트에 따라 저항성 메모리 장치로 커맨드를 제공하는 메모리 컨트롤러를 포함하는 메모리 시스템에 관한 것이다.
반도체 메모리 장치의 고용량화 및 저전력화의 요구에 따라 비휘발성(non-volatile)이면서 리프레쉬(refresh)가 필요 없는 차세대 메모리 장치들이 연구되고 있다. 이와 같은 차세대 메모리 장치로서, 상변화 물질을 이용하는 PCRAM(Phase Change Random Access Memory), 전이금속 산화물 등의 가변저항 특성을 갖는 물질을 이용한 ReRAM(Resistive Random Access Memory), 그리고 강자성 물질을 이용한 MRAM(Magnetic Random Access Memory) 등이 있다. 이러한 차세대 반도체 메모리 소자들을 구성하는 물질들은 전류 또는 전압에 따라, 그 저항값이 달라지며, 전류 또는 전압 공급이 중단되더라도 저항값을 그대로 유지하는 특성을 가질 뿐만 아니라, 빠른 동작 속도가 보장된다.
특히, 이러한 저항성 메모리 장치 중 PCRAM은 비휘발성이면서도 랜덤하게 데이터 억세스가 가능하여 다양한 메모리 시스템에 적용되고 있다.
본 발명은 호스트로부터의 리퀘스트에 따라 커맨드를 생성할 때, 저항성 메모리 장치의 락-아웃 시간을 충족하지 못하는 리퀘스트는 스케쥴러로 리-인서트할 수 있는 메모리 컨트롤러를 포함하는 반도체 메모리 시스템을 제공한다.
본 발명의 일 실시예에 따른 메모리 시스템은, 다수의 메모리 셀들은 각각 포함하는 다수의 뱅크들을 포함하고, 커맨드 및 어드레스에 따라 리드 동작 혹은 라이트 동작을 수행하는 저항성 메모리 장치; 및 호스트로부터의 리퀘스트를 스케쥴링하여 상기 커맨드 및 상기 어드레스를 생성하되, 동일한 메모리 셀에 대한 이전 라이트 커맨드의 생성 시점으로부터 상기 리퀘스트에 따라 생성된 상기 커맨드의 생성 시점까지의 시간 간격이 제 1 시간 보다 짧은 경우, 상기 커맨드 생성을 중지하고 상기 리퀘스트에 대응되는 커맨드를 리-스케쥴링하는 메모리 컨트롤러를 포함할 수 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러는, 호스트로부터 전달되는 리퀘스트를 저장하는 제 1 큐; 상기 리퀘스트 또는 리-리퀘스트 중 하나를 선택하여 스케쥴링하는 스케쥴러; 상기 스케쥴러로부터 할당된 리퀘스트에 따라 메모리 장치의 각 뱅크별 타이밍 파라미터를 관리하여 커맨드 생성 정보를 생성하는 다수의 뱅크 머신들; 상기 메모리 장치의 동일한 메모리 셀에 라이트 동작을 수행하기 위한 커맨드 생성 후, 후속되는 라이트 동작 또는 리드 동작을 수행하기 위한 커맨드를 생성하기 위해 설정된 최소한의 시간 간격인 제 1 시간을 고려하여, 상기 커맨드 생성 정보 및 상기 리-리퀘스트의 발행 유무를 결정하는 락-아웃 매니저; 상기 커맨드 생성 정보를 저장하는 제 2 큐; 및 상기 제 1 큐 및 상기 제 2 큐에 저장된 정보에 따라 커맨드 및 어드레스를 생성하는 커맨드/어드레스 생성부를 포함할 수 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법은, 호스트로부터 전달되는 리퀘스트를 제 1 큐에 저장하는 단계; 상기 리퀘스트 또는 리-리퀘스트 중 하나를 선택하여 스케쥴링하는 단계; 상기 스케쥴러로부터 할당된 리퀘스트에 따라 메모리 장치의 각 뱅크별 타이밍 파라미터를 관리하여 커맨드 생성 정보를 생성하는 단계; 상기 메모리 장치의 동일한 메모리 셀에 라이트 동작을 수행하기 위한 커맨드 생성 후, 후속되는 라이트 동작 또는 리드 동작을 수행하기 위한 커맨드를 생성하기 위해 설정된 최소한의 시간 간격인 제 1 시간을 고려하여, 상기 커맨드 생성 정보 또는 상기 리-리퀘스트의 발행 유무를 결정하는 단계; 상기 커맨드 생성 정보를 제 2 큐에 저장하는 단계; 및 상기 제 1 큐 및 상기 제 2 큐에 저장된 정보에 따라 커맨드 및 어드레스를 생성하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은, 저항성 메모리 장치의 메모리 셀에 라이트 동작을 수행하기 위한 커맨드 생성 후, 동일한 메모리 셀에 후속되는 라이트 동작 또는 리드 동작을 수행하기 위한 커맨드를 생성하기 위해 설정된 최소한의 시간 간격인 락-아웃 시간을 고려하여 커맨드를 생성함으로써 저항성 메모리 장치의 신뢰성을 확보할 수 있다는 효과가 있다.
도 1 은 저항성 메모리 장치의 메모리 셀을 설명하는 도면 이다.
도 2 는 저항성 메모리 장치의 메모리 셀의 상변화 물질의 특성을 설명하기 위한 그래프이다.
도 3 은 본 발명의 실시예에 따른 전자 시스템의 구성을 설명하기 위한 블록도 이다.
도 4 는 본 발명의 실시예에 따른 메모리 시스템의 구성을 설명하기 위한 블록도 이다.
도 5 는 도 4 의 메모리 컨트롤러의 상세 구성을 설명하기 위한 블록도 이다.
도 6 은 도 5 의 스케쥴러 및 커맨드 정보 생성부의 상세 구성을 설명하기 위한 블록도 이다.
도 7 내지 도 9 는 도 6 의 락-아웃 매니저의 상세 구성을 설명하기 위한 도면 이다.
도 10 내지 도 12b 는 도 7 의 락-아웃 매니저의 동작을 설명하기 위한 도면 이다.
도 13 은 도 4 의 메모리 장치의 상세 구성을 설명하기 위한 블록도 이다.
도 14 는 본 발명의 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 순서도 이다.
도 15 은 본 발명의 실시예에 따른 저항성 메모리 장치를 포함하는 컴퓨팅 시스템의 블록도 이다.
도 2 는 저항성 메모리 장치의 메모리 셀의 상변화 물질의 특성을 설명하기 위한 그래프이다.
도 3 은 본 발명의 실시예에 따른 전자 시스템의 구성을 설명하기 위한 블록도 이다.
도 4 는 본 발명의 실시예에 따른 메모리 시스템의 구성을 설명하기 위한 블록도 이다.
도 5 는 도 4 의 메모리 컨트롤러의 상세 구성을 설명하기 위한 블록도 이다.
도 6 은 도 5 의 스케쥴러 및 커맨드 정보 생성부의 상세 구성을 설명하기 위한 블록도 이다.
도 7 내지 도 9 는 도 6 의 락-아웃 매니저의 상세 구성을 설명하기 위한 도면 이다.
도 10 내지 도 12b 는 도 7 의 락-아웃 매니저의 동작을 설명하기 위한 도면 이다.
도 13 은 도 4 의 메모리 장치의 상세 구성을 설명하기 위한 블록도 이다.
도 14 는 본 발명의 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 순서도 이다.
도 15 은 본 발명의 실시예에 따른 저항성 메모리 장치를 포함하는 컴퓨팅 시스템의 블록도 이다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 공지의 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성 요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1 은 저항성 메모리 장치의 메모리 셀(MC)을 설명하는 도면 이다.
도 1 을 참조하면, 저항성 메모리 장치의 메모리 셀(MC)은 가변 저항체(C)와 액세스 트랜지스터(M)로 구성된다.
가변 저항체(C)는 비트 라인(BL)에 연결된다. 액세스 트랜지스터(M)는 가변 저항체(C)와 접지 사이에 연결된다. 액세스 트랜지스터(M)의 게이트에는 워드 라인(WL)이 연결되어 있다. 워드 라인(WL)에 소정의 전압이 인가되면, 액세스 트랜지스터(M)는 턴 온(turn on) 된다. 액세스 트랜지스터(M)가 턴 온(turn on) 되면, 가변 저항체(C)는 비트 라인(BL)을 통해 전류(Ic)를 공급받는다.
가변 저항체(C)가 온도에 따라 결정 상태(crystal state) 또는 비정질 상태(amorphous state)를 갖는 캘코제나이드 합금(chalcogenide alloy)과 같은 상변화 물질(phase change material)을 포함하는 경우, 저항성 메모리 장치는 상변화 메모리 장치로 구성될 수 있다. 상변화 물질을 가열하는 방법으로서는, 레이저 빔을 이용하는 방법과 전류를 이용하는 방법 등이 알려져 있는데, 메모리 칩의 구현용이성 측면에서 전류를 이용하는 방법이 선호된다. 따라서, 상변화 메모리 장치는 비트 라인(BL)을 통해 공급되는 전류(Ic)에 따라 결정 상태(crystal state) 또는 비정질 상태(amorphous state)로 변하는 상변화 물질의 특성을 이용하여 데이터를 라이트할 수 있다.
도 2 는 저항성 메모리 장치의 메모리 셀(MC)의 상변화 물질의 특성을 설명하기 위한 그래프이다.
도 2 에서 도면 부호 "AS" 은 상변화 물질이 비정질 상태(amorphous state)로 되기 위한 조건(이하, 리셋 펄스(AS)라 한다)를 나타내며, 도면 부호 "CS" 는 결정 상태(crystal state)로 되기 위한 조건(이하, 셋 펄스(CS)라 한다)를 나타낸다.
도 2 를 참조하면, 상변화 물질은 제 1 시간(T1) 동안 비트 라인을 통하여 공급되는 리셋 펄스(AS)에 의해 용융 온도(melting temperature; Tm) 보다 높은 온도로 가열된 후 급속히 냉각되면(quenching), 비정질 상태로 된다. 비정질 상태는 보통 리셋 상태(reset state)라고 부르며, 하이 데이터("1")가 저장될 수 있다.
이와는 달리, 상변화 물질은 제 1 시간(T1) 보다 긴 제 2 시간(T2>T1) 동안 비트 라인을 통하여 공급되는 셋 펄스(CS)에 의해 결정화 온도(crystallization temperature; Tc) 보다 높고 녹는점(Tm)보다는 낮은 온도에서 가열된 뒤 서서히 냉각되면 결정 상태로 된다. 결정 상태는 보통 셋 상태(set state)라고도 부르며, 로우 데이터("0")가 저장될 수 있다. 메모리 셀은 상변화 물질의 비정질 양(amorphous volume)에 따라 저항값(resistance)이 달라진다. 메모리 셀의 저항값은 비정질 상태일 때 가장 높고, 결정 상태일 때 가장 낮다.
이하, 도 1 및 도 2 를 참조하여, 저항성 메모리 장치의 기본적인 동작을 설명하면 다음과 같다.
우선, 저항성 메모리 장치의 라이트 동작 시, 워드 라인(WL)에 소정의 전압이 인가되면 액세스 트랜지스터(M)는 턴온(turn on)되고, 비트 라인(BL)을 통해 전류(Ic)가 가변 저항체(C)(즉, 상변화 물질)로 공급된다. 이에 따라, 가변 저항체(C)는 결정 상태(Crystalline State) 또는 비정질 상태(Amorphous State)로 변화하게 된다.
라이트 동작은, 리셋 펄스(AS)를 공급하여 상변화 물질을 리셋 상태(Reset State)로 전환시켜 하이 데이터("1")를 라이트하는 리셋 동작과, 셋 펄스(CS)를 공급하여 상변화 물질을 셋 상태(Set State)로 전환시켜 로우 데이터("0")를 라이트하는 셋 동작을 포함한다. 상변화 물질은 결정 상태(Crystalline State) 보다 비정질 상태(Amorphous State)에서 더 큰 저항값을 가지므로, 리셋 동작 시 인가되는 리셋 펄스(AS)가 셋 동작 시 인가되는 셋 펄스(CS) 보다 큰 피크 전류를 가진다. 반면, 셋 동작 시 인가되는 셋 펄스(CS)는 리셋 동작 시 인가되는 리셋 펄스(AS) 보다 더 긴 시간 동안 인가되어 더 큰 전류 소모량을 가진다.
또한, 저항성 메모리 장치의 리드 동작 시, 워드 라인(WL)에 소정의 전압이 인가되면 액세스 트랜지스터(M)는 턴온(turn on)되고, 비트 라인(BL)을 통해 리드 펄스가 가변 저항체(C)(즉, 상변화 물질)로 공급된다. 이 때, 상변화 물질의 저항값에 따라 흐르는 전류량이 다르므로 이를 이용하여 상변화 물질의 상태(즉, 상변화 물질에 저장된 데이터)를 판별하게 된다.
일반적으로 저항성 메모리 장치의 라이트 동작은 상변화 물질의 상태를 변화시키기 위해 많은 전류가 필요하며 레이턴시(latency) 또한 길어질 수 있는 반면, 리드 동작은 상변화 물질의 현재 상태만을 감지하기 때문에 작은 전류와 적은 레이턴시로 값을 읽어올 수 있다.
도 3 은 본 발명의 실시예에 따른 전자 시스템(10)의 구성을 설명하기 위한 블록도 이다.
도 3 을 참조하면, 전자 시스템(10)은 호스트(20) 및 메모리 시스템(30)을 포함할 수 있다. 메모리 시스템(30)은 메모리 컨트롤러(100) 및 다수의 반도체 메모리 장치들(200a~200k)을 포함할 수 있다.
호스트(20)는 PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 메모리 시스템(30)과 통신할 수 있다. 또한 호스트(20)와 메모리 시스템(30)간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다른 인터페이스 프로토콜들 중 하나일 수 있다.
메모리 컨트롤러(100)는, 메모리 시스템(30)의 동작을 전반적으로 제어하며, 호스트(20)와 반도체 메모리 장치들(200a~200k) 사이의 전반적인 데이터 교환을 제어할 수 있다. 예컨대, 메모리 컨트롤러(100)는 호스트(20)의 리퀘스트에 따라 반도체 메모리 장치들(200a~200n)을 제어하여 데이터를 라이트하거나 데이터를 독출할 수 있다. 메모리 컨트롤러(100)는, 반도체 메모리 장치들(200a~200k)로 커맨드를 인가하여, 반도체 메모리 장치들(200a~200k)의 동작을 제어할 수 있다.
실시예에 따라, 반도체 메모리 장치들(200a~200k) 각각은 저항성 메모리 장치일 수 있다. 저항성 메모리 장치는, PCRAM(Phase changeable RAM), NFGM(Nano Floating Gate Memory), PoRAM(Polymer RAM), MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM) 및 ReRAM(Resistive RAM) 장치를 포함할 수 있다. 이하에서, 저항성 메모리 장치가 PCRAM 장치인 경우를 예로 들어 설명한다. PCRAM 장치는 3D 크로스 포인트 어레이(cross point array)를 포함할 수 있으며, 적층형 메모리 장치로 구현될 수 있다.
한편, 신뢰성 확보를 위해, PCRAM 장치와 같은 저항성 메모리 장치는 특정 셀에 라이트 동작을 위한 셋 펄스 혹은 리셋 펄스를 인가한 후 일정 시간 이상의 쿨링 타임(Cooling Time)을 확보해 주어야 한다. 쿨링 타임 동안, 해당 셀에 대한 라이트 동작 및 리드 동작이 모두 금지된다. PCRAM 장치에서는, 쿨링 타임 준수를 위해 라이트 동작 및 리드 동작이 모두 금지되는 시간을 락-아웃 시간(Lockout Time)이라 정의하고, 대략 1.5-2 us 규모로 관리하고 있다. 이러한 저항성 메모리 장치를 제어하기 위해 메모리 컨트롤러(100)는, 락-아웃 시간(Lockout Time) 준수를 위한 스케쥴링 정책을 가지고 있어야 한다.
이하, 본 발명의 실시예에서는, 락-아웃 시간(Lockout Time) 준수를 위한 메모리 컨트롤러의 스케쥴링 정책에 대해 논의한다.
도 4 는 본 발명의 실시예에 따른 메모리 시스템(30)의 구성을 설명하기 위한 블록도 이다.
도 4 를 참조하면, 메모리 컨트롤러(100)에 대응되는 하나의 반도체 메모리 장치(200a)을 포함하는 메모리 시스템(30)이 도시되어 있다.
메모리 컨트롤러(100)와 반도체 메모리 장치(200a)는 각각 대응하는 커맨드 핀들(101, 201), 어드레스 핀들(102, 202) 및 데이터 핀들(103, 203)을 통하여 서로 연결될 수 있다. 커맨드 핀들(101, 201)은 커맨드 전송선(TL1)을 통하여 커맨드(CMD)를 전송하고, 어드레스 핀들(102, 202)은 어드레스 전송선(TL2)을 통하여 어드레스(ADDR)를 전송하고, 데이터 핀들(103, 203)은 데이터 전송선(TL3)을 통하여 데이터(DQ)를 교환할 수 있다.
메모리 컨트롤러(100)는, 호스트(20)로부터의 리퀘스트(REQ)에 따라 커맨드(CMD) 및 어드레스(ADDR)를 생성하여 반도체 메모리 장치(200a)로 제공할 수 있다. 메모리 컨트롤러(100)는, 호스트(20)로부터 제공되는 호스트 데이터(HDATA)에 대응되는 데이터(DQ)를 반도체 메모리 장치(200a)로 제공할 수 있다. 메모리 컨트롤러(100)는, 반도체 메모리 장치(200a)로부터 독출된 데이터(DQ)를 입력받아 호스트(20)에 제공할 수 있다. 이 때, 호스트(20)로부터 제공되는 리퀘스트(REQ)에 포함된 어드레스는 논리 어드레스(logical address)이고, 반도체 메모리 장치(200a)로 전달되는 어드레스(ADDR)는 물리 어드레스(physical address)일 수 있다. 따라서, 메모리 컨트롤러(100)는, 어드레스 맵핑 정보(address mapping information)를 저장하고, 이에 따라 논리 어드레스를 물리 어드레스로 변환하는 어드레스 변환 동작을 수행할 수 있다.
반도체 메모리 장치(200a)는, 다수의 메모리 셀들은 각각 포함하는 다수의 뱅크들(BK0~BKk)을 포함하고, 메모리 컨트롤러(100)로부터 제공되는 커맨드(CMD), 어드레스(ADDR) 및/또는 데이터(DQ)에 따라 라이트 동작 및 리드 동작을 수행할 수 있다.
한편, 본 발명의 실시예에서, 메모리 컨트롤러(100)는, 호스트(20)로부터의 리퀘스트(REQ)가 입력되면, 락-아웃 시간을 고려하여 커맨드(CMD) 및 어드레스(ADDR)를 생성하여 반도체 메모리 장치(200a)로 제공할 수 있다. 메모리 컨트롤러(100)는, 호스트(20)로부터의 리퀘스트(REQ)를 스케쥴링하여 커맨드(CMD) 및 어드레스(ADDR)를 생성하되, 동일한 메모리 셀에 대한 이전 라이트 커맨드의 생성 시점으로부터 리퀘스트(REQ)에 따라 생성된 커맨드(CMD)의 생성 시점까지의 시간 간격이 보다 짧은 경우, 커맨드 생성을 중지하고 리퀘스트(REQ)를 리-스케쥴링할 수 있다. 이 때, 락-아웃 시간은, 특정 셀에 라이트 동작을 수행하기 위한 라이트 커맨드 생성 후, 동일한 메모리 셀에 후속되는 라이트 동작 또는 리드 동작을 수행하기 위한 커맨드를 생성할 수 있는 최소한의 시간 간격으로 정의될 수 있다.
보다 자세하게, 메모리 컨트롤러(100)는, 내부 메모리(Internal Memory; 110), 프로세서(120), 커맨드/어드레스 컨트롤러(130), 호스트 인터페이스(Host Interface; 140), 및 메모리 인터페이스(Memory Interface; 160)를 포함할 수 있다.
내부 메모리(110)는, 메모리 컨트롤러(100)의 동작에 필요한 다양한 시스템 정보들을 저장할 수 있으며, 이 외에도 메모리 시스템(30)의 동작에 필요한 어드레스 맵핑 정보, 디버깅(debugging) 정보 등을 저장할 수 있다. 예를 들면, 내부 메모리(110)는 SRAM으로 구현될 수 있다.
프로세서(120)는, 메모리 장치(200a)를 제어하기 위한 각종 연산을 수행하거나 펌웨어(firmware)를 수행할 수 있다. 프로세서(120)는 호스트(20)로부터 수신된 리퀘스트(REQ)를 커맨드/어드레스 컨트롤러(130)로 전송하고, 호스트 데이터(HDATA)를 메모리 인터페이스(160)로 전송하도록 제어할 수 있다. 프로세서(120)는 내부 메모리(110), 커맨드/어드레스 컨트롤러(130), 호스트 인터페이스(140) 및 메모리 인터페이스(160)를 전반적으로 제어할 수 있다.
커맨드/어드레스 컨트롤러(130)는, 호스트(20)로부터의 리퀘스트(REQ)가 입력되면 리퀘스트(REQ)를 스케쥴링하여 커맨드(CMD) 및 어드레스(ADDR)를 생성하고, 락-아웃 시간을 충족하지 못하는 리퀘스트(REQ)는 리-스케쥴링할 수 있다.
호스트 인터페이스(140)는, 프로세서(120)의 제어에 따라 메모리 시스템(30)과 접속되는 호스트(20)와 통신하도록 구성될 수 있다. 예를 들면, 호스트 인터페이스(140)는 호스트(20)로부터의 리퀘스트(REQ) 및 호스트 데이터(HDATA)를 수신받을 수 있고, 메모리 장치(200a)로부터 리드된 데이터(DQ)를 호스트(20)로 출력할 수 있다.
메모리 인터페이스(160)는, 프로세서(120)의 제어에 따라 메모리 장치(200a)와 통신하도록 구성될 수 있다. 예를 들면, 메모리 인터페이스(160)는, 커맨드(CMD), 어드레스(ADDR) 및 데이터(DQ)를 메모리 장치(200a)로 전송할 수 있고, 메모리 장치(200a)로부터 리드된 데이터(DQ)를 프로세서(120)로 전송할 수 있다.
프로세서(120)는 버스(bus; 170)를 통해 내부 메모리(110), 커맨드/어드레스 컨트롤러(130), 호스트 인터페이스(140) 및 메모리 인터페이스(160) 간 데이터를 전송할 수 있다. 실시예에 따라, 커맨드/어드레스 컨트롤러(130), 호스트 인터페이스(140) 및 메모리 인터페이스(160)는 버스(170)를 통하지 않고 독립적으로 서로 통신할 수도 있다. 예를 들면, 커맨드/어드레스 컨트롤러(130)와 호스트 인터페이스(140)는 버스(170)를 통하지 않고 서로 직접 통신할 수 있고, 커맨드/어드레스 컨트롤러(130)와 메모리 인터페이스(160)도 버스(170)를 통하지 않고 서로 직접 통신할 수 있으며, 호스트 인터페이스(140)와 메모리 인터페이스(160)도 버스(170)를 통하지 않고 서로 직접 통신할 수 있다.
도 5 는 도 4 의 메모리 컨트롤러(100)의 구성을 설명하기 위한 블록도 이다.
도 5 를 참조하면, 메모리 컨트롤러(100)의 호스트 인터페이스(140), 커맨드/어드레스 컨트롤러(130)와 메모리 인터페이스(160)가 도시되어 있다.
호스트 인터페이스(140)는, 호스트(20)로부터의 리퀘스트(REQ) 및 호스트 데이터(HDATA)를 수신 받고, 메모리 장치(200a)로부터 리드된 데이터(DQ)를 호스트(20)로 출력할 수 있다.
보다 자세하게, 호스트 인터페이스(140)는, 데이터 입출력(I/O) 버퍼(142) 및 리퀘스트 핸들러(144)를 포함할 수 있다. 데이터 I/O 버퍼(142)는, 프로그램 동작 시, 호스트(20)로부터 제공되는 호스트 데이터(HDATA)를 임시로 저장하고, 프로세서(120)의 제어에 따라 저장된 호스트 데이터(HDATA)를 메모리 인터페이스(160)로 전송할 수 있다. 또한, 데이터 I/O 버퍼(142)는, 리드 동작 시, 메모리 장치(200a)로부터 메모리 인터페이스(160)를 통해 수신된 데이터(DQ)를 임시로 저장하고, 프로세서(120)의 제어에 따라 저장된 데이터를 호스트(20)로 출력할 수 있다. 리퀘스트 핸들러(144)는, 호스트(20)로부터의 리퀘스트(REQ)를 커맨드/어드레스 컨트롤러(130) 및 프로세서(120)에 전달할 수 있다. 리퀘스트 핸들러(144)는, 리퀘스트 분배기(distributer)로 정의될 수 있다. 리퀘스트 핸들러(144)는, 비지 신호(BUSY)에 따라 커맨드/어드레스 컨트롤러(130)에 전달할 리퀘스트(REQ)를 임시로 저장한 후 다시 전달할 수 있다.
커맨드/어드레스 컨트롤러(130)는, 호스트 인터페이스(140)를 통해 호스트(20)로부터의 전달되는 리퀘스트(REQ)를 스케쥴링하여 커맨드(CMD) 및 어드레스(ADDR)를 생성하되, 락-아웃 시간을 고려하여 커맨드(CMD)를 생성할 수 있다. 즉, 커맨드/어드레스 컨트롤러(130)는 메모리 장치(200a)의 락-아웃 시간에 따라 메모리 장치(200a)의 액세스(access)를 제어할 수 있다.
보다 상세하게, 커맨드/어드레스 컨트롤러(130)는, 제 1 큐(Q1), 스케쥴러(132), 커맨드 정보 생성부(134), 제 2 큐(Q2) 및 커맨드/어드레스 생성부(136)를 포함할 수 있다.
제 1 큐(Q1)는, 리퀘스트 핸들러(144)로부터 전달되는 리퀘스트(REQ)를 저장할 수 있다. 바람직하게, 제 1 큐(Q1)는, SRAM 으로 구현될 수 있다. 예를 들어, 제 1 큐(Q1)의 깊이(depth)가 128개로 정의된 경우, 제 1 큐(Q1)는 128개의 엔트리를 구비하고, 128개의 리퀘스트들을 각 엔트리에 저장할 수 있다. 실시예에 따라, 제 1 큐(Q1)는, 리드 리퀘스트를 위한 리드 리퀘스트 큐 및 라이트 리퀘스트를 위한 쓰기 라이트 리퀘스트 큐를 포함하고, 리드 리퀘스트 큐 및 라이트 리퀘스트 큐에서 리드 리퀘스트와 라이트 리퀘스트가 분리되어 관리될 수 있다.
한편, 리퀘스트 핸들러(144)는, 호스트(20)로부터의 리퀘스트(REQ)가 수신되면, 메타 정보를 포함한 리퀘스트(REQ)의 모든 정보를 제 1 큐(Q1)에 제공할 있다. 이에 따라, 제 1 큐(Q1)는, 메타 정보를 포함한 리퀘스트(REQ)의 모든 정보를 각 엔트리에 저장할 수 있다. 이 때, 메타 정보는, 커맨드/어드레스 정보를 제외한 부가적인 관리 정보로, 예를 들어, 에러 정보, 웨어 레벨링 정보, 라이트 디스터번스 정보 등을 포함할 수 있다. 반면, 리퀘스트 핸들러(144)는, 호스트(20)로부터의 리퀘스트(REQ)가 수신되면, 메타 정보를 제외한 유저 데이터 정보, 예를 들어, 커맨드/어드레스 정보만을 스케쥴러(132)에 전달할 수 있다. 이에 따라, 스케쥴러(132)는, 리퀘스트(REQ)에 포함된 커맨드/어드레스 정보를 이용하여 리퀘스트(REQ)를 스케쥴링할 수 있다.
스케쥴러(132)는, 리퀘스트 핸들러(144)로부터 전달되는 리퀘스트(REQ) 또는 커맨드 정보 생성부(134)로부터 전달되는 리-리퀘스트(Re_REQ) 중 하나를 선택하여 스케쥴링할 수 있다. 스케쥴러(132)는, 리-리퀘스트(Re_REQ)가 전달되는 경우, 리퀘스트 핸들러(144)로 비지 신호(BUSY)를 전송하고 리-리퀘스트(Re_REQ)를 우선적으로 스케쥴링할 수 있다. 스케쥴러(132)는, 리퀘스트들의 전체 입력 순서 및 뱅크별 입력 순서를 트래킹할 수 있는 연결형 리스트 구조(linked list structure)를 형성하고, 연결형 리스트 구조를 토대로 선택된 리퀘스트를 스케쥴링할 수 있다. 스케쥴러(132)는, 처리량(Throughput)을 최대화시키기 위한 정책을 사용하여, 커맨드 정보 생성부(134)에 우선적으로 할당될 리퀘스트(ReqLL)를 결정할 수 있다. 스케쥴러(132)의 상세 구성에 대해서는 도 6 에서 설명하기로 한다.
커맨드 정보 생성부(134)는, 스케쥴러(132)의 출력, 즉, 스케쥴러(132)에 의해 할당된 리퀘스트(ReqLL)에 따라, 각 뱅크별 타이밍 파라미터를 관리하여 커맨드 생성 정보(BMI)를 생성할 수 있다. 커맨드 정보 생성부(134)는, 락-아웃 시간을 고려하여 커맨드 생성 정보(BMI)의 발행 유무를 결정하고, 커맨드 생성 정보(BMI)의 발행 유무에 따라 리퀘스트(ReqLL)를 리-리퀘스트(Re_REQ)로 재발행할 수 있다. 커맨드 정보 생성부(134)는, 스케쥴러(132)에 의해 할당된 리퀘스트(ReqLL)가 락-아웃 시간을 충족시키지 못한 경우, 커맨드 생성 정보(BMI)를 생성하지 않고, 리-리퀘스트(Re_REQ)를 스케쥴러(132)로 재발행할 수 있다. 이하에서, 락-아웃 시간을 충족시키지 못한 리퀘스트(ReqLL)가 스케쥴러(132)로 재발행되는 경우를 리-인서트 동작이라고 정의한다. 커맨드 정보 생성부(134)에 대한 상세 구성 및 동작에 대해서는 도 6 내지 도 10 에서 설명하기로 한다.
제 2 큐(Q2)는, 커맨드 생성 정보(BMI)를 수신하여 저장할 수 있다. 제 2 큐(Q2)는, 커맨드 생성 정보(BMI)를 수신하여 커맨드 종류별로 분류하여 저장할 수 있다. 예를 들어, 제 2 큐(Q2)는, 커맨드 생성 정보(BMI)에 따라 버퍼 라이트 동작, 뱅크 라이트 동작, 버퍼 리드 동작, 뱅크 리드 동작, 캘리브레이션 동작 등으로 구분하여 저장할 수 있다. 바람직하게, 제 2 큐(Q2)는, 커맨드들을 종류별로 저장하기 위한 FIFO (First-In-First-Out)로 구현될 수 있다.
커맨드/어드레스 생성부(136)는, 제 1 큐(Q1)와 제 2 큐(Q2)에 저장된 정보에 따라 커맨드(CMD) 및 어드레스(ADDR)를 생성할 수 있다. 커맨드/어드레스 생성부(136)는, 제 1 큐(Q1)에 저장된 리퀘스트 정보 및 제 2 큐(Q2)에 저장된 커맨드 생성 정보(BMI)를 토대로 커맨드(CMD) 및 어드레스(ADDR)를 생성할 수 있다. 이 때, 커맨드/어드레스 생성부(136)는, 내부 메모리(110)에 저장된 어드레스 맵핑 정보를 이용하여 호스트(20)로부터 제공되는 리퀘스트(REQ)에 포함된 논리 어드레스를 물리 어드레스로 변환하여 어드레스(ADDR)를 생성할 수 있다. 한편, 본 발명은 이에 한정되지 않으며, 실시예에 따라 프로세서(120)가 내부 메모리(110)에 저장된 어드레스 맵핑 정보를 이용하여 호스트(20)로부터 제공되는 리퀘스트(REQ)에 포함된 논리 어드레스를 물리 어드레스로 변환한 후 커맨드/어드레스 생성부(136)에 제공할 수 있다.
메모리 인터페이스(160)는, 커맨드(CMD), 어드레스(ADDR) 및 데이터(DQ)를 메모리 장치(200a)로 전송할 수 있고, 메모리 장치(200a)로부터 리드된 데이터(DQ)를 프로세서(120)로 전송할 수 있다.
도 6 은 도 5 의 스케쥴러(132) 및 커맨드 정보 생성부(134)를 설명하기 위한 블록도 이다. 이하에서는, 설명의 편의를 위해 메모리 장치에 8 개의 뱅크가 구비된 경우를 예로 들어 설명하기로 한다.
도 6 을 참조하면, 스케쥴러(132)는, 리-인서트 핸들러(310), 멀티플렉서(320), 리퀘스트 연결형 리스트(Request Linked List)(330), 및 리퀘스트 스케쥴러(340)를 포함할 수 있다.
리-인서트 핸들러(310)는, 커맨드 정보 생성부(134)로부터 리-리퀘스트(Re_REQ)가 재발행되는 경우, 리퀘스트 핸들러(144)로 비지 신호(BUSY)를 전송하고 리-리퀘스트(Re_REQ)를 선택하도록 선택 신호(SEL)를 생성할 수 있다. 멀티플렉서(320)는, 선택 신호(SEL)에 따라 리퀘스트(REQ) 또는 리-리퀘스트(Re_REQ) 중 하나를 선택할 수 있다. 리퀘스트 연결형 리스트(330)는, 멀티플렉서(320)로부터 제공되는 리퀘스트를 연결형 리스트 구조로 관리 하기 위한 구성으로, 리퀘스트들의 전체 입력 순서 / 뱅크별 입력 순서를 알 수 있도록 자료를 구조화 시킬 수 있다. 리퀘스트 연결형 리스트(330)는, 리퀘스트들의 전체 입력 순서를 구조화시킨 메인 연결형 리스트(MLL)와 뱅크별 입력 순서를 구조화시킨 다수의 뱅크 연결형 리스트들(BLL0~BLL7)을 포함할 수 있다. 메모리 장치에 8 개의 뱅크가 구비된 경우, 제 1 내지 제 8 뱅크 연결형 리스트(BLL0~BLL7)가 배치될 수 있다. 리퀘스트 스케쥴러(340)는, 리퀘스트 연결형 리스트(330)의 연결형 리스트 구조를 토대로, 멀티플렉서(320)로부터 제공되는 리퀘스트를 스케쥴링하여 커맨드 정보 생성부(134)로 할당할 수 있다. 즉, 메인 연결형 리스트(MLL)와 제 1 내지 제 8 뱅크 연결형 리스트(BLL0~BLL7)를 토대로, 리퀘스트 스케쥴러(340)는, 처리량(Throughput)을 최대화시키기 위한 정책을 사용하여, 커맨드 정보 생성부(134)에 우선적으로 할당될 리퀘스트(ReqLL)를 결정할 수 있다.
커맨드 정보 생성부(134)는, 락-아웃 매니저(410) 및 뱅크 머신 셋(420)을 포함할 수 있다.
뱅크 머신 셋(420)은, 각 뱅크에 대응되는 제 1 내지 제 8 뱅크 머신(BM0~BM7)을 포함할 수 있다. 제 1 내지 제 8 뱅크 머신(BM0~BM7)은, 리퀘스트 스케쥴러(340)로부터 할당된 리퀘스트(ReqLL)에 따라 메모리 장치(200a) 내 뱅크 단위(즉, 뱅크별)로 타이밍 파라미터를 관리하고, 타이밍 파라미터를 토대로 커맨드 생성 정보(BMI)를 생성할 수 있다. 제 1 내지 제 8 뱅크 머신(BM0~BM7)은, 제 1 내지 제 8 뱅크에 각각 대응되며, 각 뱅크 머신은 상태 머신(State Machine), 바람직하게는 FSM(Finite State Machine)으로 구현될 수 있다.
락-아웃 매니저(410)는, 커맨드 생성 정보(BMI)가 생성되면, 락-아웃 시간을 고려하여 리퀘스트 스케쥴러(340)로부터 할당된 리퀘스트(ReqLL)에 대응되는 커맨드 생성이 적절한지를 판단할 수 있다. 락-아웃 매니저(410)는, 판단 결과에 따라 뱅크 머신 셋(420)으로부터 생성된 커맨드 생성 정보(BMI) 또는 리-리퀘스트(Re_REQ)의 발행 유무를 결정할 수 있다. 예를 들어, 락-아웃 매니저(410)는, 커맨드 생성 정보(BMI)를 토대로, 동일한 메모리 셀에 대한 이전 라이트 커맨드의 생성 시점으로부터 리퀘스트(ReqLL)에 따라 현재 생성된 커맨드의 생성 시점까지의 간격이 락-아웃 시간 보다 짧은 경우, 커맨드 생성이 부적절하다고 판단하고, 커맨드 생성 정보(BMI)의 발행을 마스킹하고, 리퀘스트(ReqLL)를 리-리퀘스트(Re_REQ)로 스케쥴러(132)에 재발행할 수 있다.
한편, 리-리퀘스트(Re_REQ)가 스케쥴러(132)로 재발행되는 리-인서트 동작이 수행되는 경우, 원래 의도한 리퀘스트 처리 순서와 달라지는 경우가 발생할 수 있다. 본 발명의 실시예에서, 락-아웃 매니저(410)는, 제 1 내지 제 8 뱅크 머신(BM0~BM7)에 각각 대응되는 적어도 하나의 가상 원형 큐(VCQ, Virtual Circular Queue)를 포함할 수 있다. 락-아웃 매니저(410)는, 가상 원형 큐(VCQ)를 이용하여 리-인서트 동작에 따라 리오더링(re-ordering)된 리-리퀘스트(Re_REQ)를 트래킹하고, 트래킹한 결과에 따라 리퀘스트(ReqLL)의 처리 순서가 적절한지를 판단할 수 있다. 락-아웃 매니저(410)는, 판단 결과에 따라 뱅크 머신 셋(420)으로부터 생성된 커맨드 생성 정보(BMI)의 발행 유무를 결정하고, 커맨드 생성 정보(BMI)의 발행 유무에 따라 리-리퀘스트(Re_REQ)를 발행할 수 있다. 락-아웃 매니저(410)는, 처리 순서가 부적절하다고 판단되면, 커맨드 생성 정보(BMI)의 발행을 마스킹하고, 리퀘스트(ReqLL)를 리-리퀘스트(Re_REQ)로 스케쥴러(132)에 재발행할 수 있다. 본 발명의 실시예에서, 가상 원형 큐(VCQ)는 물리적으로 리퀘스트 연결형 리스트(330)에 배치되고, 락-아웃 매니저(410)는, 가상 원형 큐(VCQ)를 논리적으로 관리할 수 있다. 예를 들어, 가상 원형 큐(VCQ)는 리퀘스트 연결형 리스트(330)의 제 1 내지 제 8 뱅크 연결형 리스트(BLL0~BLL7)에 각각 배치될 수 있다. 락-아웃 매니저(410)는, 가상 원형 큐(VCQ)를 리퀘스트 연결형 리스트(330)와 공유할 수 있다.
이하, 도 7 내지 도 12b 를 참조하여 락-아웃 매니저(410)의 상세 구성 및 동작을 설명하기로 한다.
도 7 내지 도 9 는 도 6 의 락-아웃 매니저(410)의 상세 구성을 설명하기 위한 도면 이다.
도 7 을 참조하면, 락-아웃 매니저(410)는, 제 1 내지 제 8 락-아웃부(412_0~412_7) 및 리-인서트 판단부(414)를 포함할 수 있다.
제 1 내지 제 8 락-아웃부(412_0~412_7)는, 제 1 내지 제 8 뱅크 머신(BM0~BM7)에 각각 대응할 수 있다. 제 1 내지 제 8 락-아웃부(412_0~412_7) 각각은, 적어도 하나의 가상 원형 큐(VCQ, Virtual Circular Queue)로 구현될 수 있다. 각 락-아웃부에 배치되는 가상 원형 큐(VCQ)의 개수는 제 1 시간과 제 2 시간을 고려하여 설정될 수 있다. 이 때, 제 1 시간은, 락-아웃 시간에 대응되며, 즉, 동일한 메모리 셀에 라이트 동작을 수행하기 위한 커맨드 생성 후, 후속 커맨드를 생성하기 위해 설정된 최소한의 시간 간격으로 정의할 수 있다. 제 2 시간은, 동일한 뱅크에 라이트 동작을 수행하기 위한 커맨드 생성 후, 후속 커맨드를 생성하기 위해 설정된 최소한의 시간 간격으로 정의할 수 있다. 예를 들어, 동일한 셀에 접근 가능한 최소한의 시간으로 제 1 시간(락-아웃 시간)이 1500 ns 으로 설정되고, 동일한 뱅크에 접근 가능한 최소한의 시간으로 제 2 시간이 500 ns 으로 설정된 경우, 각 락-아웃부에 배치되는 가상 원형 큐(VCQ)의 개수는 제 2 시간/제 1 시간에 대응되는 3 개로 결정될 수 있다. 이는, 제 2 시간 규약에 따라 동일한 뱅크에 대해 128 개의 리퀘스트가 연속하여 입력되어 가상 원형 큐(VCQ)가 모두 채워지더라도, 제 1 시간 후에는 가상 원형 큐(VCQ)의 리퀘스트가 모두 처리될 수 있기 때문이다.
도 8 을 참조하면, 각 락-아웃부에 배치되는 가상 원형 큐(VCQ)는 제 1 큐(Q1)의 깊이(depth)에 대응되는 최대 깊이를 가질 수 있다. 예를 들어, 제 1 큐(Q1)의 깊이(depth)가 128개로 정의된 경우, 가상 원형 큐(VCQ)는 최대 128개의 엔트리를 구비할 수 있다. 가상 원형 큐(VCQ)는, 엔트리들의 시작 위치를 나타내는 헤드(Head), 마지막 위치를 나타내는 테일(Tail) 및 엔트리 개수를 나타내는 깊이(Depth)를 포함할 수 있다.
도 9 를 참조하면, 가상 원형 큐(VCQ)는 최대 128개의 엔트리를 포함하는 물리적인 구조를 포함할 수 있다. 각 엔트리는, 락-아웃 시간을 충족하지 못한 리퀘스트(ReqLL)가 입력되는 경우 설정되는 유효-락 비트(LOCK_VALID), 유효-락 비트(LOCK_VALID)가 설정된 경우 순차적으로 부여되는 ID(VCQ_ID), 및 해당 리퀘스트(ReqLL)에 대응되는 뱅크/로우/컬럼 어드레스에 대한 페이지 정보(LOCK_PAGE)를 포함할 수 있다. 가상 원형 큐(VCQ)는 물리적으로는 제 1 내지 제 8 락-아웃부(412_0~412_7)에 배치되지 않으며, 논리적으로 제 1 내지 제 8 락-아웃부(412_0~412_7)에서 배치되어 가상으로 관리될 수 있다. 바람직하게, 가상 원형 큐(VCQ)는 리퀘스트 연결형 리스트(330)에 물리적으로 배치될 수 있다. 즉, 제 1 내지 제 8 락-아웃부(412_0~412_7)의 가상 원형 큐(VCQ)는 제 1 내지 제 8 뱅크 연결형 리스트(BLL0~BLL7)에 물리적으로 각각 배치되며, 제 1 내지 제 8 락-아웃부(412_0~412_7)에서는 원형 큐의 형태로 깊이(Depth), 헤드(Head) 및 테일(Tail) 만이 관리될 수 있다. 참고로, 8 개의 뱅크에 대응되는 8 개의 락-아웃부에 배치되는 가상 원형 큐(VCQ)의 개수가 3개로 설정된 경우, 24 개의 가상 원형 큐(VCQ)가 구비될 수 있다.
다시 도 7 을 참조하면, 리-인서트 판단부(414)는, 커맨드 생성 정보(BMI)가 생성되면, 락-아웃 시간을 고려하여 리퀘스트(ReqLL)에 대응되는 커맨드 생성이 적절한지를 판단할 수 있다. 리-인서트 판단부(414)는, 락-아웃 시간을 충족하지 못한 리퀘스트(ReqLL)가 입력되는 경우, 커맨드 생성 정보(BMI)의 발행을 마스킹하고, 리퀘스트(ReqLL)를 리-리퀘스트(Re_REQ)로 스케쥴러(132)에 재발행할 수 있다. 또한, 리-인서트 판단부(414)는, 제 1 내지 제 8 락-아웃부(412_0~412_7)의 가상 원형 큐들(VCQ)을 이용하여 리-리퀘스트(Re_REQ)를 트래킹하고, 트래킹한 결과에 따라 리퀘스트(ReqLL)의 처리 순서가 적절한지를 판단할 수 있다. 리-인서트 판단부(414)는, 리퀘스트(ReqLL)의 처리 순서가 부적절하다고 판단되면, 커맨드 생성 정보(BMI)의 발행을 마스킹하고, 리퀘스트(ReqLL)를 리-리퀘스트(Re_REQ)로 스케쥴러(132)에 재발행할 수 있다.
리-인서트 판단부(414)는, 리-리퀘스트(Re_REQ)가 재발행되는 경우, 대응되는 락-아웃부의 가상 원형 큐(VCQ)의 엔트리를 생성하고, 가상 원형 큐(VCQ)의 깊이(Depth), 헤드(Head) 및 테일(Tail)을 관리할 수 있다. 즉, 리-인서트 판단부(414)는, 리-리퀘스트(Re_REQ)가 재발행되는 경우, 리-리퀘스트(Re_REQ)에 대응되는 락-아웃부의 가상 원형 큐(VCQ)의 엔트리를 생성하고, 생성된 엔트리의 유효-락 비트(LOCK_VALID)를 설정하고 ID(VCQ_ID)를 증가시키고, 리-리퀘스트(Re_REQ)에 대응되는 페이지 정보(LOCK_PAGE)를 해당 엔트리에 저장할 수 있다. 리-인서트 판단부(414)는, 유효-락 비트(LOCK_VALID)가 설정되는 경우, 깊이(Depth), 헤드(Head) 및 테일(Tail)을 업데이트하여 리-리퀘스트(Re_REQ)를 트래킹할 수 있다. 리-인서트 판단부(414)는, 제일 먼저 입력된 리퀘스트(ReqLL)에 부여된 ID(VCQ_ID)를 헤드(Head)로 지정하고, 제일 늦게 입력된 리퀘스트(ReqLL)에 부여된 ID(VCQ_ID)를 테일(Tail)로 지정할 수 있다.
본 발명의 실시예에서, 리-인서트 판단부(414)는, 가상 원형 큐(VCQ)의 헤드(Head)에 따라 리퀘스트(ReqLL)의 처리 순서가 적절한지를 판단할 수 있다. 리-인서트 판단부(414)는, 리퀘스트(ReqLL)에 대응되는 유효-락 비트(LOCK_VALID)가 설정된 경우, 리퀘스트(ReqLL)에 대응되는 ID(VCQ_ID)가 가상 원형 큐(VCQ)의 헤드(Head)와 일치하는지를 확인할 수 있다. 확인 결과가 일치하는 경우, 리-인서트 판단부(414)는, 해당 리퀘스트(ReqLL)에 대응되는 커맨드 생성 정보(BMI)를 발행하도록 제 1 내지 제 8 뱅크 머신(BM0~BM7)을 제어할 수 있다. 이에 따라 리퀘스트(ReqLL)에 대응되는 리드 혹은 라이트 동작이 수행될 수 있다. 리-인서트 판단부(414)는, 정상적인 리드 혹은 라이트 동작이 수행된 후, 헤드(Head)를 +1 증가시키고, 깊이(Depth)는 -1 감소시킬 수 있다.
리퀘스트(ReqLL)에 대응되는 ID(VCQ_ID)가 가상 원형 큐(VCQ)의 헤드(Head)와 일치하지 않는 경우 또는 리퀘스트(ReqLL)에 대응되는 유효-락 비트(LOCK_VALID)가 해제된 경우, 리-인서트 판단부(414)는, 더 선행하는 리퀘스트가 존재하므로 리퀘스트(ReqLL)의 처리 순서가 부적절하다고 판단할 수 있다. 이 경우, 리-인서트 판단부(414)는, 리퀘스트(ReqLL)를 리-리퀘스트(Re_REQ)를 재발행하고, 리-리퀘스트(Re_REQ)에 대응되는 엔트리를 생성하고, 그에 따른 깊이(Depth), 헤드(Head) 및 테일(Tail)을 업데이트하여 리-리퀘스트(Re_REQ)를 트래킹할 수 있다.
가상 원형 큐(VCQ)의 헤드(Head)와 테일(Tail)이 일치하고 깊이(Depth)가 “0”가 되면 스케쥴러(132)로 재발행된 리-리퀘스트(Re_REQ)가 모두 처리되었다는 의미로, 리-인서트 판단부(414)는 가상 원형 큐(VCQ)의 관리를 종료할 수 있다.
이하에서는, 제안 발명의 실시예에 따라 리-인서트 동작을 수행하기 위한 구성 및 동작을 상세하게 설명하도록 한다.
도 10 내지 도 12b 는 도 7 의 락-아웃 매니저(410)의 동작을 설명하기 위한 도면 이다.
도 10 은 호스트로부터 전달되는 모든 리퀘스트가 락-아웃 시간을 충족시키는 경우를 설명하기 위한 도면이다.
도 10 을 참조하면, 제 1 뱅크(BK0)에 대한 리퀘스트(RO)가 입력되고 제 2 뱅크(BK1)에 대한 리퀘스트들(R1, R2)이 순차적으로 입력된다. 이 때, 리퀘스트(R1)는 제 2 뱅크(BK1)의 페이지 #3에 “3”을 라이트하는 라이트 동작을 요청하고, 리퀘스트(R2)는 동일한 제 2 뱅크(BK1)의 페이지 #3에 “7”을 라이트하는 라이트 동작을 요청하는 경우를 가정한다.
제 2 뱅크(BK1)가 이용가능하게 되면(①), 제 2 뱅크 머신(BM1)은, 리퀘스트(R1)에 따라 제 2 뱅크(BK1)의 타이밍 파라미터를 관리하고, 타이밍 파라미터를 토대로 커맨드 생성 정보(BMI)를 생성한다. 락-아웃 매니저(410)는, 리퀘스트(R1)가 락-아웃 시간을 충족시켰다고 판단하여 커맨드 생성 정보(BMI)를 발행할 수 있다. 이에 따라 라이트 커맨드(CMD) 및 어드레스(ADD)가 생성되어, 페이지 #3에 “3”을 라이트하기 위한 라이트 동작이 수행될 수 있다(②). 이 후, 제 2 뱅크 머신(BM1)은, 리퀘스트(R2)에 따라 커맨드 생성 정보(BMI)를 생성하고, 락-아웃 매니저(410)는, 리퀘스트(R2)가 락-아웃 시간을 충족시켰다고 판단하여 커맨드 생성 정보(BMI)를 발행할 수 있다. 이에 따라 라이트 커맨드(CMD) 및 어드레스(ADDR)가 생성되어, 페이지 #3에 “7”을 라이트하기 위한 라이트 동작이 수행될 수 있다(③). 최종적으로, 제 2 뱅크(BK1)의 페이지 #3에는 호스트가 의도한 “7”이 라이트될 수 있다.
도 11 은 락-아웃 시간을 고려하여 호스트로부터 전달되는 리퀘스트에 대응하는 커맨드의 생성 유무를 결정하지만, 리-오더링에 따른 리퀘스트의 처리 순서는 고려하지 않은 경우의 문제점을 설명하기 위한 도면이다.
도 11 을 참조하면, 동일한 조건에서, 제 2 뱅크(BK1)가 이용가능하게 되면(①), 제 2 뱅크 머신(BM1)은, 리퀘스트(R1)에 따라 제 2 뱅크(BK1)의 타이밍 파라미터를 관리하고, 타이밍 파라미터를 토대로 커맨드 생성 정보(BMI)를 생성한다. 락-아웃 매니저(410)는, 리퀘스트(R1)가 락-아웃 시간을 충족하지 못하다고 판단하여 커맨드 생성 정보(BMI)의 발행을 마스킹하고 리-리퀘스트(Re_REQ)를 스케쥴러(132)로 발행할 수 있다(②). 즉, 리-인서트 동작이 수행되고 이에 따라 리-오더링에 따른 리퀘스트의 처리 순서가 변경될 수 있다(③). 이 후, 제 2 뱅크 머신(BM1)은, 리퀘스트(R2)에 따라 커맨드 생성 정보(BMI)를 생성하고, 락-아웃 매니저(410)는, 리퀘스트(R2)가 락-아웃 시간을 충족시켰다고 판단하여 커맨드 생성 정보(BMI)를 발행할 수 있다. 이에 따라 라이트 커맨드(CMD) 및 어드레스(ADDR)가 생성되어, 페이지 #3에 “7”을 라이트하기 위한 라이트 동작이 수행될 수 있다(④). 이후, 제 2 뱅크 머신(BM1)은, 재발행된 리퀘스트(R1)에 따라 커맨드 생성 정보(BMI)를 생성하고, 락-아웃 매니저(410)는, 리퀘스트(R1)가 락-아웃 시간을 충족시켰다고 판단하여 커맨드 생성 정보(BMI)를 발행할 수 있다. 이에 따라 라이트 커맨드(CMD) 및 어드레스(ADDR)가 생성되어, 페이지 #3에 “3”을 라이트하기 위한 라이트 동작이 수행될 수 있다(⑤). 최종적으로, 제 2 뱅크(BK1)의 페이지 #3에는 호스트가 의도한 “7”이 아닌 “3”이 라이트하게 된다. 즉, 리-인서트 동작에 의해 리퀘스트가 리오더링(re-ordering) 된 경우 리퀘스트의 처리 순서가 변경되어 호스트의 의도와는 다른 오동작이 수행된다.
도 12a 및 도 12b 는 본 발명의 실시예에 따라 락-아웃 시간 및 리-오더링에 따른 리퀘스트의 처리 순서를 모두 고려하여 리퀘스트에 대응하는 커맨드의 생성 유무를 결정하는 경우를 설명하기 위한 도면이다.
도 12a 를 참조하면, 동일한 조건에서, 제 2 뱅크(BK1)가 이용가능하게 된다(①). 이 때, 제 2 뱅크(BK1)에 대응되는 제 2 락-아웃부(412_1)의 가상 원형 큐(VCQ)는 초기화되어 엔트리가 생성되어 있지 않으므로 깊이(Depth), 헤드(Head) 및 테일(Tail)이 모두 “0”이 된다.
제 2 뱅크 머신(BM1)은, 리퀘스트(R1)에 따라 제 2 뱅크의 타이밍 파라미터를 관리하고, 타이밍 파라미터를 토대로 커맨드 생성 정보(BMI)를 생성한다. 락-아웃 매니저(410)는, 리퀘스트(R1)가 락-아웃 시간을 충족하지 못하다고 판단하여 커맨드 생성 정보(BMI)의 발행을 마스킹하고 리-리퀘스트(Re_REQ)를 스케쥴러(132)로 발행할 수 있다(②). 즉, 리-인서트 동작이 수행되고 이에 따라 리-오더링에 따른 리퀘스트의 처리 순서가 변경될 수 있다(③). 이 때, 리-인서트 판단부(414)는, 리-리퀘스트(Re_REQ)에 대응되는 가상 원형 큐(VCQ)의 엔트리를 생성하고, 생성된 엔트리의 유효-락 비트(LOCK_VALID)를 설정하고, ID(VCQ_ID)를 증가시킬 수 있다. 리-인서트 판단부(414)는, 리퀘스트(R1)에 대응되는 페이지 정보(LOCK_PAGE)를 해당 엔트리에 저장할 수 있다. 리-인서트 판단부(414)는, 가상 원형 큐(VCQ)의 깊이(Depth), 헤드(Head) 및 테일(Tail)을 각각 “1”, “0”, “0”로 업데이트할 수 있다.
도 12b 를 참조하면, 이 후, 제 2 뱅크 머신(BM1)은, 리퀘스트(R2)에 따라 커맨드 생성 정보(BMI)를 생성한다. 이 때, 리-인서트 판단부(414)는, 리퀘스트(R2)가 락-아웃 시간을 충족시켰지만 가상 원형 큐(VCQ)의 깊이(Depth)가 “1” 로 설정되었으므로, 헤드(Head)에 따라 리퀘스트(R2)의 처리 순서가 적절한지를 판단할 수 있다. 리-인서트 판단부(414)는, 리퀘스트(R2)의 ID(VCQ_ID)가 해제된 경우, 커맨드 생성 정보(BMI)의 발행을 마스킹하고 리-리퀘스트(Re_REQ)를 스케쥴러(132)로 발행할 수 있다(④). 리-인서트 판단부(414)는, 리-리퀘스트(Re_REQ)에 대응되는 엔트리를 생성하고, 생성된 엔트리의 유효-락 비트(LOCK_VALID)를 설정하고 ID(VCQ_ID)를 증가시킬 수 있다. 새로운 엔트리가 생성되었으므로, 리-인서트 판단부(414)는, 가상 원형 큐(VCQ)의 깊이(Depth), 헤드(Head) 및 테일(Tail)을 각각 “2”, “0”, “1”로 업데이트할 수 있다. 리-인서트 동작이 수행되고 이에 따라 리-오더링에 따른 리퀘스트의 처리 순서가 원복될 수 있다(⑤).
이 후, 제 2 뱅크 머신(BM1)은, 재발행된 리퀘스트(R1)에 따라 커맨드 생성 정보(BMI)를 생성한다. 이 때, 리-인서트 판단부(414)는, 리퀘스트(R1)가 락-아웃 시간을 충족시켰지만 가상 원형 큐(VCQ)의 깊이(Depth)가 “2” 로 설정되었으므로, 헤드(Head)에 따라 리퀘스트(R2)의 처리 순서가 적절한지를 판단할 수 있다. 리-인서트 판단부(414)는, 리퀘스트(R2)의 ID(VCQ_ID)가 헤드(Head)와 일치하는 경우, 해당 리퀘스트(R2)에 대응되는 커맨드 생성 정보(BMI)를 발행할 수 있다. 이에 따라 라이트 커맨드(CMD) 및 어드레스(ADDR)가 생성되어, 페이지 #3에 “3”을 라이트하기 위한 라이트 동작이 수행될 수 있다(⑥). 리-인서트 판단부(414)는, 라이트 동작이 수행된 후, 헤드(Head)를 +1 증가시키고, 깊이(Depth)는 -1 감소시킬 수 있다. 즉, 가상 원형 큐(VCQ)의 깊이(Depth), 헤드(Head) 및 테일(Tail)을 각각 “1”, “1”, “1”로 업데이트할 수 있다.
이 후, 제 2 뱅크 머신(BM1)은, 재발행된 리퀘스트(R2)에 따라 커맨드 생성 정보(BMI)를 생성한다. 이 때, 리-인서트 판단부(414)는, 리퀘스트(R2)가 락-아웃 시간을 충족시켰지만 가상 원형 큐(VCQ)의 깊이(Depth)가 “1” 로 설정되었으므로, 헤드(Head)에 따라 리퀘스트(R1)의 처리 순서가 적절한지를 판단할 수 있다. 리-인서트 판단부(414)는, 리퀘스트(R1)의 ID(VCQ_ID)가 헤드(Head)와 일치하는 경우, 해당 리퀘스트(R1)에 대응되는 커맨드 생성 정보(BMI)를 발행할 수 있다. 이에 따라 라이트 커맨드(CMD) 및 어드레스(ADDR)가 생성되어, 페이지 #3에 “7”을 라이트하기 위한 라이트 동작이 수행될 수 있다(⑦). 리-인서트 판단부(414)는, 라이트 동작이 수행된 후, 깊이(Depth)는 -1 감소시킬 수 있다. 이 때, 깊이(Depth)가 “0”가 되므로 헤드(Head)는 테일(Tail)과 동일한 “1”로 유지될 수 있다. 즉, 가상 원형 큐(VCQ)의 깊이(Depth), 헤드(Head) 및 테일(Tail)을 각각 “0”, “1”, “1”로 업데이트할 수 있다.
이 후, 가상 원형 큐(VCQ)의 헤드(Head)와 테일(Tail)이 일치하고 깊이(Depth)가 “0”가 되므로, 리-인서트 판단부(414)는 가상 원형 큐(VCQ)의 관리를 종료할 수 있다. 최종적으로, 락-아웃 시간 및 리-오더링에 따른 리퀘스트의 처리 순서를 모두 고려하여 리퀘스트에 대응하는 커맨드의 생성 유무를 결정함으로써 제 2 뱅크(BK1)의 페이지 #3에는 호스트가 의도한 “7”이 라이트될 수 있다.
도 13 은 도 4 의 메모리 장치(200a)의 상세 구성을 설명하기 위한 블록도 이다.
도 13 을 참조하면, 메모리 장치(200a)는 메모리 셀 어레이(210)와 주변 회로(220)를 포함할 수 있다.
메모리 셀 어레이(210)는, 다수의 메모리 셀들(MC)을 포함할 수 있다. 다수의 메모리 셀들(MC)은, 도 1 및 도 2 에서 설명된 상변화 물질을 포함하는 메모리 셀들일 수 있다. 다수의 메모리 셀들(MC)은 각각, 상변화 물질이 결정 상태를 가지는 제 1 상태(즉, 셋 상태(set state))를 포함하고, 상기 상변화 물질이 비정질 상태를 가지는 제 2 상태(즉, 리셋 상태(reset state))를 포함할 수 있다. 메모리 셀 어레이(210)의 다수의 메모리 셀들(MC)은 워드 라인(WL0~WLn) 및 비트 라인(BL0~BLm)을 통해 주변 회로(220)와 연결될 수 있다.
주변 회로(220)는, 커맨드(CMD), 어드레스(ADDR) 및 데이터(DQ)를 메모리 컨트롤러(100)로부터 입력받을 수 있다. 주변 회로(220)는, 라이트 동작 시 라이트 커맨드(WT), 라이트 데이터(WDATA) 및 어드레스(ADDR)를 메모리 컨트롤러(100)로부터 입력받을 수 있다. 주변 회로(220)는, 리드 동작 시 리드 커맨드(RD) 및 어드레스(ADDR)를 메모리 컨트롤러(100)로부터 입력받고, 리드 데이터(RDATA)를 출력할 수 있다. 주변 회로(220)는, 라이트 동작 시 라이트 데이터(WDATA)가 셋 상태의 데이터인지 리셋 상태의 데이터인지 판단할 수 있다. 주변 회로(220)는, 라이트 데이터(WDATA)가 셋 상태의 데이터인 경우, 어드레스(ADDR)에 대응하는 타겟 메모리 셀에 제 1 펄스(즉, 셋 펄스)를 인가할 수 있다. 주변 회로(220)는, 라이트 데이터(WDATA)가 리셋 상태의 데이터인 경우, 타겟 메모리 셀에 제 2 펄스(즉, 리셋 펄스)를 인가할 수 있다.
보다 상세하게, 주변 회로(220)는, 어드레스 디코더(230), 페이지 버퍼 회로(240), 라이트 드라이버(250), 감지 증폭 회로(260), 데이터 입출력 회로(270) 및 제어 로직(280)을 포함할 수 있다.
제어 로직(280)은, 어드레스 디코더(230), 페이지 버퍼 회로(240), 라이트 드라이버(250), 감지 증폭 회로(260) 및 데이터 입출력 회로(270)를 제어하며, 라이트 커맨드(WT) 및 리드 커맨드(RD)에 응답하여, 로우 제어 신호(RCON)를 어드레스 디코더(230)로 제공하고, 펄스 제어 신호(P_WT)를 라이트 드라이버(250)로 제공하고, 센싱 제어 신호(P_RD)를 감지 증폭 회로(260)로 제공하고, 입출력 제어 신호(CON)를 데이터 입출력 회로(270)로 제공할 수 있다.
어드레스 디코더(230)는, 워드 라인(WL0~WLn)을 통해 메모리 셀 어레이(210)와 연결된다. 어드레스 디코더(230)는, 제어 로직(280)으로부터 제공되는 로우 제어 신호(RCON)에 따라 외부에서 입력된 어드레스(ADDR)를 디코딩하여 선택된 워드 라인으로 바이어스를 제공한다. 또한, 어드레스 디코더(230)는 비트 라인(BL0~BLm)을 선택하기 위한 선택 신호(Yi)를 발생한다. 선택 신호(Yi)는 페이지 버퍼 회로(240)에 제공된다.
페이지 버퍼 회로(240)는, 비트 라인(BL0~BLm)을 통해 메모리 셀 어레이(210)와 연결된다. 페이지 버퍼 회로(240)는 어드레스 디코더(230)로부터 제공되는 선택 신호(Yi)에 응답하여 비트 라인을 선택한다. 페이지 버퍼 회로(240)는 선택 신호(Yi)에 응답하여, 비트 라인(BL)과 데이터 라인(DL)을 연결하고, 비트 라인(BL)과 감지 라인(SL)을 연결한다.
라이트 드라이버(250)는, 펄스 제어 신호(P_WT) 및 입력 데이터(DI)에 따라 프로그램 펄스(I_PGM)를 데이터 라인(DL)으로 제공한다. 프로그램 펄스(I_PGM)는 셋 펄스, 리셋 펄스 또는 추가적인 동작을 위한 바이어스들을 포함할 수 있다.
감지 증폭 회로(260)는 센싱 제어 신호(P_RD)에 따라 감지 라인(SL)의 전압과 기준 전압(VREF)의 차이를 감지하여, 타겟 메모리 셀에 저장된 데이터를 독출하여 출력 데이터(DO)로 제공한다. 기준 전압(VREF)은 기준 전압 발생 회로(미도시)에서 제공될 수 있다.
데이터 입출력 회로(270)는, 입출력 제어 신호(CON)에 따라, 라이트 데이터(WDATA)를 입력받아 입력 데이터(DI)로 제공하거나, 감지 증폭 회로(260)로부터 제공되는 출력 데이터(DO)를 리드 데이터(RDATA)로 컨트롤러 또는 테스트 장치로 출력할 수 있다.
도 14 는 본 발명의 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 순서도 이다.
도 14 를 참조하면, 리퀘스트 핸들러(144)는, 호스트(20)로부터의 리퀘스트(REQ)를 수신한다(S1410). 리퀘스트 핸들러(144)는, 메타 정보를 포함한 리퀘스트(REQ)의 모든 정보를 제 1 큐(Q1)에 제공하고, 메타 정보를 제외한 유저 데이터 정보, 예를 들어, 커맨드/어드레스 정보만을 스케쥴러(132)에 전달할 수 있다. 제 1 큐(Q1)는, 리퀘스트 핸들러(144)로부터 전달되는 리퀘스트(REQ)를 저장할 수 있다.
스케쥴러(132)는, 리퀘스트 핸들러(144)로부터 전달되는 리퀘스트(REQ) 또는 커맨드 정보 생성부(134)로부터 전달되는 리-리퀘스트(Re_REQ) 중 하나를 선택하여 스케쥴링한다. 보다 자세하게, 리-인서트 핸들러(310)는, 커맨드 정보 생성부(134)로부터 리-리퀘스트(Re_REQ)가 재발행되지 않는 경우, 리퀘스트(REQ)를 선택하도록 선택 신호(SEL)를 생성한다. 반면, 리-인서트 핸들러(310)는, 커맨드 정보 생성부(134)로부터 리-리퀘스트(Re_REQ)가 재발행되는 경우, 리퀘스트 핸들러(144)로 비지 신호(BUSY)를 전송하고 리-리퀘스트(Re_REQ)를 선택하도록 선택 신호(SEL)를 생성한다. 멀티플렉서(320)는, 선택 신호(SEL)에 따라 리퀘스트(REQ) 또는 리-리퀘스트(Re_REQ) 중 하나를 선택할 수 있다(S1420). 이 때, 리퀘스트 핸들러(144)는, 비지 신호(BUSY)에 따라 커맨드/어드레스 컨트롤러(130)에 전달할 리퀘스트(REQ)를 임시로 저장한 후 다시 전달할 수 있다.
리퀘스트 스케쥴러(340)는, 리퀘스트 연결형 리스트(330)의 연결형 리스트 구조를 토대로, 멀티플렉서(320)로부터 제공되는 리퀘스트를 스케쥴링하여 커맨드 정보 생성부(134)에 우선적으로 할당될 리퀘스트(ReqLL)를 결정할 수 있다(S1430).
커맨드 정보 생성부(134)의 제 1 내지 제 8 뱅크 머신(BM0~BM7)은, 리퀘스트 스케쥴러(340)로부터 할당된 리퀘스트(ReqLL)에 따라 메모리 장치(200a) 내 뱅크 단위(즉, 뱅크별)로 타이밍 파라미터를 관리하고, 타이밍 파라미터를 토대로 커맨드 생성 정보(BMI)를 생성할 수 있다(S1440).
락-아웃 매니저(410)는, 락-아웃 시간을 고려하여 리퀘스트 스케쥴러(340)로부터 할당된 리퀘스트(ReqLL)에 대응되는 커맨드 생성이 적절한지를 판단한다(S1450). 락-아웃 매니저(410)는, 리퀘스트(ReqLL)가 락-아웃 시간을 충족시키지 못하는 경우, 즉, 동일한 메모리 셀에 대해 이전에 생성된 라이트 커맨드의 생성 시점으로부터 리퀘스트(ReqLL)에 따라 현재 생성될 예정인 커맨드의 생성 시점까지의 간격이 락-아웃 시간 보다 짧은 경우(S1450의 “NO”), 커맨드 생성이 부적절하다고 판단하고, 커맨드 생성 정보(BMI)의 발행을 마스킹하고, 리-리퀘스트(Re_REQ)를 스케쥴러(132)로 발행할 수 있다(S1460). 이 때, 리-리퀘스트(Re_REQ)가 재발행되는 경우, 락-아웃 매니저(410)의 리-인서트 판단부(414)는, 리-리퀘스트(Re_REQ)에 대응되는 가상 원형 큐(VCQ)에 엔트리를 생성하고, 생성된 엔트리의 유효-락 비트(LOCK_VALID)를 설정하고 ID(VCQ_ID)를 증가시키고, 페이지 정보(LOCK_PAGE)를 해당 엔트리에 저장할 수 있다. 리-인서트 판단부(414)는, 유효-락 비트(LOCK_VALID)가 설정되는 경우, 깊이(Depth), 헤드(Head) 및 테일(Tail)을 업데이트할 수 있다.
반면, 락-아웃 매니저(410)는, 리퀘스트(ReqLL)가 락-아웃 시간을 충족시키는 경우(S1450의 “YES”), 가상 원형 큐(VCQ)의 헤드(Head)에 따라 리퀘스트(ReqLL)의 처리 순서가 원래 의도한 리퀘스트 처리 순서에 부합하는 지를 판단할 수 있다(S1470). 리-인서트 판단부(414)는, 리퀘스트(ReqLL)의 ID(VCQ_ID)가 헤드(Head)와 일치하는지를 확인하고, 확인 결과가 일치하지 않는 경우(S1470의 “NO”), 커맨드 생성 정보(BMI)의 발행을 마스킹하고, 리-리퀘스트(Re_REQ)를 스케쥴러(132)로 발행할 수 있다(S1460). 마찬가지로, 리-인서트 판단부(414)는, 대응되는 가상 원형 큐(VCQ)에 엔트리를 생성하고, 생성된 엔트리의 유효-락 비트(LOCK_VALID)를 설정하고 ID(VCQ_ID)를 증가시키고, 페이지 정보(LOCK_PAGE)를 해당 엔트리에 저장할 수 있다. 리-인서트 판단부(414)는, 유효-락 비트(LOCK_VALID)가 설정되는 경우, 깊이(Depth), 헤드(Head) 및 테일(Tail)을 업데이트할 수 있다.
반면, 확인 결과가 일치하는 경우(S1470의 “YES”), 리-인서트 판단부(414)는, 해당 리퀘스트(ReqLL)에 대응되는 커맨드 생성 정보(BMI)를 발행하도록 제 1 내지 제 8 뱅크 머신(BM0~BM7)을 제어할 수 있다(S1480). 이에 따라 리퀘스트(ReqLL)에 대응되는 리드 혹은 라이트 동작이 수행될 수 있다. 리-인서트 판단부(414)는, 정상적인 리드 혹은 라이트 동작이 수행된 후, 헤드(Head)를 +1 증가시키고, 깊이(Depth)는 -1 감소시킬 수 있다. 리-인서트 판단부(414)는, 가상 원형 큐(VCQ)의 헤드(Head)와 테일(Tail)이 일치하고 깊이(Depth)가 “0”가 되면 가상 원형 큐(VCQ)의 관리를 종료할 수 있다.
제 2 큐(Q2)는, 커맨드 생성 정보(BMI)를 수신하여 저장하고, 커맨드/어드레스 생성부(136)는, 제 1 큐(Q1)와 제 2 큐(Q2)에 저장된 정보에 따라 커맨드(CMD) 및 어드레스(ADDR)를 생성할 수 있다(S1490).
상기와 같이, 본 발명의 실시에서는, 호스트로부터의 리퀘스트에 따라 커맨드를 생성할 때, 저항성 메모리 장치의 락-아웃 시간을 충족하지 못하는 리퀘스트가 입력되는 경우, 대응하는 커맨드를 생성하지 않고 해당 리퀘스트를 스케쥴러로 리-인서트한 후 커맨드를 다시 생성할 수 있다. 참고로, 리-인서트 동작을 지원하지 않는 종래의 메모리 시스템의 경우, 락-아웃 시간이 초과될 때까지 해당 뱅크 머신이 대기하고 있어야하기 때문에 동일 뱅크의 다른 어드레스에 대한 커맨드를 처리할 수 없다. 즉, 특정 어드레스에 할당된 락-아웃 시간으로 인해 전체 뱅크 머신들(즉, 뱅크들)이 대기하고 있어야하기 때문에 다른 동작들을 수행할 수 없게 된다. 반면, 본 발명의 실시예에 따라 리-인서트 동작을 지원하는 메모리 시스템의 경우, 락-아웃 시간 내에도 해당 뱅크 머신이 다시 이용 가능한(Available from occupied) 상태가 되어 같은 뱅크의 다른 어드레스에 대한 커맨드를 처리할 수 있게 된다. 예를 들어, 락-아웃 시간이 상대적으로 길기 때문에 해당 시간 동안 10개의 리드 커맨드도 처리할 수 있다. 따라서, 락-아웃 시간을 충족하지 못하는 커맨드 생성을 방지함으로써 저항성 메모리 장치의 대역폭 효율(Bandwidth efficiency)과 QoS(Quality of Service)를 모두 충족시킬 수 있다. 락-아웃 시간을 충족하지 못하는 커맨드 생성을 방지함으로써 저항성 메모리 장치의 신뢰성을 확보할 수 있다. 또한, 본 발명의 실시에서는, 가상 원형 큐(VCQ)를 이용하여 리-인서트된 리퀘스트를 트래킹한 결과에 따라 리-오더링에 따른 리퀘스트의 처리 순서를 고려하여 커맨드를 생성할 수 있다. 즉, 리-인서트된 리퀘스트를 트래킹하기 위한 가상 원형 큐(VCQ)를 물리적으로 리퀘스트 연결형 리스트에 배치하고 논리적으로만 관리함으로써 기존의 자원을 활용하여 면적 증가를 최소화할 수 있다.
도 15 는 본 발명의 실시예에 따른 저항성 메모리 장치(511)를 포함하는 컴퓨팅 시스템(500)을 간략히 보여주는 블록도 이다.
도 15 를 참조하면, 컴퓨팅 시스템(500)은 저항성 메모리 장치(511) 및 메모리 컨트롤러(512)로 구성되는 메모리 시스템(510), 시스템 버스(550)에 전기적으로 연결된 중앙처리장치(CPU, 530), 사용자 인터페이스(540), 전원 공급 장치(520)를 포함한다.
저항 메모리 장치(511)에는 사용자 인터페이스(540)를 통해서 제공되거나 또는, 중앙처리장치(530)에 의해서 처리된 데이터가 메모리 컨트롤러(512)를 통해 저장된다.
본 발명의 실시예에서, 메모리 컨트롤러(512)는, 호스트로부터의 리퀘스트에 따라 커맨드를 생성할 때, 저항성 메모리 장치(511)의 락-아웃 시간을 충족하지 못하는 리퀘스트가 입력되는 경우, 대응하는 커맨드를 생성하지 않고 해당 리퀘스트를 스케쥴러로 리-인서트한 후 커맨드를 다시 생성한다. 또한, 본 발명의 실시에서는, 메모리 컨트롤러(512)는, 리-인서트 동작으로 인한 리-오더링에 따른 리퀘스트의 처리 순서를 고려하여 커맨드를 생성할 수 있다. 따라서, 락-아웃 시간을 충족하지 못하는 커맨드 생성을 방지함으로써 저항성 메모리 장치(511)의 대역폭 효율(Bandwidth efficiency)과 QoS(Quality of Service)를 모두 충족시킬 수 있다. 락-아웃 시간을 충족하지 못하는 커맨드 생성을 방지함으로써 신뢰성을 확보할 수 있다.
비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(Application Chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기록되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
Claims (25)
- 다수의 메모리 셀들은 각각 포함하는 다수의 뱅크들을 포함하고, 커맨드 및 어드레스에 따라 리드 동작 혹은 라이트 동작을 수행하는 저항성 메모리 장치; 및
호스트로부터의 리퀘스트를 스케쥴링하여 상기 커맨드 및 상기 어드레스를 생성하되, 동일한 메모리 셀에 대한 이전 라이트 커맨드의 생성 시점으로부터 상기 리퀘스트에 따라 생성된 상기 커맨드의 생성 시점까지의 시간 간격이 제 1 시간 보다 짧은 경우, 상기 커맨드 생성을 중지하고 상기 리퀘스트에 대응되는 커맨드를 리-스케쥴링하는 메모리 컨트롤러
를 포함하는 메모리 시스템.
- 제 1 항에 있어서,
상기 제 1 시간은,
상기 각 메모리 셀들에 라이트 동작을 수행하기 위한 커맨드 생성 후, 동일한 메모리 셀에 후속되는 라이트 동작 또는 리드 동작을 수행하기 위한 커맨드를 생성하기 위해 설정된 최소한의 시간 간격인 메모리 시스템.
- 제 1 항에 있어서,
상기 메모리 컨트롤러는,
상기 호스트로부터 전달되는 상기 리퀘스트 또는 리-리퀘스트 중 하나를 선택하여 스케쥴링하는 스케쥴러;
상기 스케쥴러로부터 할당된 리퀘스트에 따라 상기 각 뱅크별 타이밍 파라미터를 관리하여 커맨드 생성 정보를 생성하는 다수의 뱅크 머신들;
상기 제 1 시간을 고려하여 상기 커맨드 생성 정보 또는 상기 리-리퀘스트의 발행 유무를 결정하는 락-아웃 매니저; 및
상기 호스트로부터 전달되는 리퀘스트와 상기 커맨드 생성 정보에 따라 상기 커맨드 및 상기 어드레스를 생성하는 커맨드/어드레스 생성부
를 포함하는 메모리 시스템.
- 제 3 항에 있어서,
상기 락-아웃 매니저는,
상기 뱅크 머신들에 대응되며, 각각 적어도 하나의 가상 원형 큐를 포함하는 다수의 락-아웃부들; 및
상기 할당된 리퀘스트가 상기 제 1 시간을 충족시키지 못한 경우 또는 상기 락-아웃부들의 가상 원형 큐를 이용하여 상기 리-리퀘스트를 트래킹한 결과에 따라 상기 할당된 리퀘스트의 처리 순서가 부적절한 경우에, 상기 커맨드 생성 정보의 발행을 마스킹하고 상기 할당된 리퀘스트를 상기 리-리퀘스트로 재발행하는 리-인서트 판단부
를 포함하는 메모리 시스템.
- 제 4 항에 있어서,
상기 리-인서트 판단부는,
상기 리-리퀘스트가 재발행되는 경우, 상기 리-리퀘스트에 대응되는 가상 원형 큐의 엔트리를 생성하고, 상기 가상 원형 큐의 깊이, 헤드 및 테일을 업데이트하여 상기 리-리퀘스트를 트래킹하는 메모리 시스템.
- 제 3 항에 있어서,
상기 스케쥴러는,
상기 락-아웃 매니저로부터 상기 리-리퀘스트가 재발행되는 경우, 상기 호스트로부터 전달되는 상기 리퀘스트를 임시로 저장하기 위한 비지 신호를 전송하고, 상기 리-리퀘스트를 우선적으로 스케쥴링하는 메모리 시스템.
- 제 3 항에 있어서,
상기 스케쥴러는,
상기 리-리퀘스트가 재발행되는 경우, 상기 리-리퀘스트를 선택하도록 선택 신호를 생성하고, 상기 리퀘스트를 임시로 저장하기 위한 비지 신호를 전송하는 리-인서트 핸들러;
상기 선택 신호에 따라 상기 리퀘스트 또는 상기 리-리퀘스트 중 하나를 선택하는 멀티플렉서;
상기 멀티플렉서로부터 제공되는 리퀘스트를 연결형 리스트 구조로 관리하는 리퀘스트 연결형 리스트; 및
상기 연결형 리스트 구조를 토대로, 상기 멀티플렉서로부터 제공되는 리퀘스트를 스케쥴링하여 상기 커맨드 정보 생성부로 할당하는 리퀘스트 스케쥴러
를 포함하는 메모리 시스템.
- 제 1 항에 있어서,
상기 다수의 메모리 셀들은 상변화 물질을 포함하며,
상기 제 1 상태는, 상기 상변화 물질이 결정 상태를 가지는 셋 상태(set state)를 포함하고, 상기 제 2 상태는, 상기 상변화 물질이 비정질 상태를 가지는 리셋 상태(reset state)를 포함하는 메모리 시스템.
- 호스트로부터 전달되는 리퀘스트를 저장하는 제 1 큐;
상기 리퀘스트 또는 리-리퀘스트 중 하나를 선택하여 스케쥴링하는 스케쥴러;
상기 스케쥴러로부터 할당된 리퀘스트에 따라 메모리 장치의 각 뱅크별 타이밍 파라미터를 관리하여 커맨드 생성 정보를 생성하는 다수의 뱅크 머신들;
상기 메모리 장치의 동일한 메모리 셀에 라이트 동작을 수행하기 위한 커맨드 생성 후, 후속되는 라이트 동작 또는 리드 동작을 수행하기 위한 커맨드를 생성하기 위해 설정된 최소한의 시간 간격인 제 1 시간을 고려하여, 상기 커맨드 생성 정보 또는 상기 리-리퀘스트의 발행 유무를 결정하는 락-아웃 매니저;
상기 커맨드 생성 정보를 저장하는 제 2 큐; 및
상기 제 1 큐 및 상기 제 2 큐에 저장된 정보에 따라 커맨드 및 어드레스를 생성하는 커맨드/어드레스 생성부
를 포함하는 메모리 컨트롤러.
- 제 9 항에 있어서,
상기 락-아웃 매니저는,
상기 커맨드 생성 정보를 토대로, 동일한 메모리 셀에 대한 이전 라이트 커맨드의 생성 시점으로부터 상기 할당된 리퀘스트에 따라 생성된 상기 커맨드의 발행 시점까지의 시간 간격이 상기 제 1 시간 보다 짧은 경우, 상기 커맨드 생성 정보의 발행을 마스킹하고 상기 할당된 리퀘스트를 상기 리-리퀘스트로 재발행하는 메모리 컨트롤러.
- 제 9 항에 있어서,
상기 락-아웃 매니저는,
상기 뱅크 머신들에 각각 대응되는 적어도 하나의 가상 원형 큐(Virtual Circular Queue)를 이용하여 상기 리-리퀘스트를 트래킹한 결과에 따라 상기 할당된 리퀘스트의 처리 순서가 적절한지를 판단하여 상기 커맨드 생성 정보의 발행을 마스킹하고 상기 할당된 리퀘스트를 상기 리-리퀘스트로 재발행하는 메모리 컨트롤러.
- 제 11 항에 있어서,
상기 스케쥴러는, 상기 호스트로부터 전달되는 리퀘스트들의 전체 입력 순서 및 뱅크별 입력 순서를 구조화시킨 다수의 뱅크 연결형 리스트들을 포함하고,
상기 락-아웃 매니저는, 상기 가상 원형 큐를 상기 뱅크 연결형 리스트들과 공유하는 메모리 컨트롤러.
- 제 9 항에 있어서,
상기 락-아웃 매니저는,
상기 뱅크 머신들에 대응되며, 각각 적어도 하나의 가상 원형 큐를 포함하는 다수의 락-아웃부들; 및
상기 할당된 리퀘스트가 상기 제 1 시간을 충족시키지 못한 경우, 또는 상기 락-아웃부들의 가상 원형 큐를 이용하여 상기 리-리퀘스트를 트래킹한 결과에 따라 상기 할당된 리퀘스트의 처리 순서가 부적절한 경우, 상기 커맨드 생성 정보의 발행을 마스킹하고 상기 할당된 리퀘스트를 상기 리-리퀘스트로 재발행하는 리-인서트 판단부
를 포함하는 메모리 컨트롤러.
- 제 13 항에 있어서,
상기 락-아웃부들 각각에 배치되는 상기 가상 원형 큐의 개수는,
상기 제 1 시간과 제 2 시간- 상기 메모리 장치의 동일한 뱅크에 라이트 동작을 수행하기 위한 커맨드 생성 후, 후속되는 라이트 동작 또는 리드 동작을 수행하기 위한 커맨드를 생성하기 위해 설정된 최소한의 시간 간격임-을 고려하여 설정되는 메모리 컨트롤러.
- 제 14 항에 있어서,
상기 가상 원형 큐 각각의 깊이는 상기 제 1 큐의 깊이에 대응하는 메모리 컨트롤러.
- 제 13 항에 있어서,
상기 리-인서트 판단부는,
상기 리-리퀘스트가 재발행되는 경우, 상기 리-리퀘스트에 대응되는 가상 원형 큐의 엔트리를 생성하고, 상기 가상 원형 큐의 깊이, 헤드 및 테일을 업데이트하여 상기 리-리퀘스트를 트래킹하는 메모리 컨트롤러.
- 제 9 항에 있어서,
상기 스케쥴러는,
상기 락-아웃 매니저로부터 상기 리-리퀘스트가 재발행되는 경우, 상기 호스트로부터 전달되는 상기 리퀘스트를 임시로 저장하기 위한 비지 신호를 전송하고, 상기 리-리퀘스트를 우선적으로 스케쥴링하는 메모리 컨트롤러.
- 제 9 항에 있어서,
상기 스케쥴러는,
상기 리-리퀘스트가 재발행되는 경우, 상기 리-리퀘스트를 선택하도록 선택 신호를 생성하고, 상기 리퀘스트를 임시로 저장하기 위한 비지 신호를 전송하는 리-인서트 핸들러;
상기 선택 신호에 따라 상기 리퀘스트 또는 상기 리-리퀘스트 중 하나를 선택하는 멀티플렉서;
상기 멀티플렉서로부터 제공되는 리퀘스트를 연결형 리스트 구조로 관리하는 리퀘스트 연결형 리스트; 및
상기 연결형 리스트 구조를 토대로, 상기 멀티플렉서로부터 제공되는 리퀘스트를 스케쥴링하여 상기 커맨드 정보 생성부로 할당하는 리퀘스트 스케쥴러
를 포함하는 메모리 컨트롤러.
- 제 18 항에 있어서,
상기 리퀘스트 연결형 리스트는,
상기 리퀘스트들의 전체 입력 순서를 구조화시킨 메인 연결형 리스트; 및
상기 리퀘스트들의 뱅크별 입력 순서를 구조화시킨 다수의 뱅크 연결형 리스트들
을 포함하는 메모리 컨트롤러.
- 제 18 항에 있어서,
상기 호스트로부터 전달되는 상기 리퀘스트를 상기 제 1 큐 또는 상기 스케쥴러에 제공하고, 상기 비지 신호에 따라 상기 리퀘스트를 임시로 저장한 후 다시 전달하는 리퀘스트 핸들러
를 더 포함하는 메모리 컨트롤러.
- 호스트로부터 전달되는 리퀘스트를 제 1 큐에 저장하는 단계;
상기 리퀘스트 또는 리-리퀘스트 중 하나를 선택하여 스케쥴링하는 단계;
상기 스케쥴러로부터 할당된 리퀘스트에 따라 메모리 장치의 각 뱅크별 타이밍 파라미터를 관리하여 커맨드 생성 정보를 생성하는 단계;
상기 메모리 장치의 동일한 메모리 셀에 라이트 동작을 수행하기 위한 커맨드 생성 후, 후속되는 라이트 동작 또는 리드 동작을 수행하기 위한 커맨드를 생성하기 위해 설정된 최소한의 시간 간격인 제 1 시간을 고려하여, 상기 커맨드 생성 정보 또는 상기 리-리퀘스트의 발행 유무를 결정하는 단계;
상기 커맨드 생성 정보를 제 2 큐에 저장하는 단계; 및
상기 제 1 큐 및 상기 제 2 큐에 저장된 정보에 따라 커맨드 및 어드레스를 생성하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
- 제 21 항에 있어서,
상기 제 1 시간을 고려하여 상기 커맨드 생성 정보 또는 상기 리-리퀘스트의 발행 유무를 결정하는 단계는,
상기 커맨드 생성 정보를 토대로, 동일한 메모리 셀에 대한 이전 라이트 커맨드의 생성 시점으로부터 상기 할당된 리퀘스트에 따라 생성된 상기 커맨드의 발행 시점까지의 시간 간격이 상기 제 1 시간 보다 짧은 경우, 상기 커맨드 생성 정보의 발행을 마스킹하고 상기 할당된 리퀘스트를 상기 리-리퀘스트로 재발행하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
- 제 21 항에 있어서,
상기 뱅크 머신들에 각각 대응되는 적어도 하나의 가상 원형 큐(Virtual Circular Queue)를 이용하여 상기 리-리퀘스트를 트래킹한 결과에 따라 상기 할당된 리퀘스트의 처리 순서가 적절한지를 판단하여 상기 커맨드 생성 정보의 발행을 마스킹하고 상기 할당된 리퀘스트를 상기 리-리퀘스트로 재발행하는 단계
를 더 포함하는 메모리 컨트롤러의 동작 방법.
- 제 23 항에 있어서,
상기 리-리퀘스트가 재발행되는 경우, 상기 리-리퀘스트에 대응되는 가상 원형 큐의 엔트리를 생성하고, 상기 가상 원형 큐의 깊이, 헤드 및 테일을 업데이트하여 상기 리-리퀘스트를 트래킹하는 단계
를 더 포함하는 메모리 컨트롤러의 동작 방법.
- 제 21 항에 있어서,
상기 리퀘스트 또는 리-리퀘스트 중 하나를 선택하여 스케쥴링하는 단계는,
상기 리-리퀘스트가 재발행되는 경우, 상기 호스트로부터 전달되는 상기 리퀘스트를 임시로 저장하기 위한 비지 신호를 전송하고, 상기 리-리퀘스트를 우선적으로 스케쥴링하는 단계
를 더 포함하는 메모리 컨트롤러의 동작 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200129363A KR20220046211A (ko) | 2020-10-07 | 2020-10-07 | 저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US17/205,647 US11501832B2 (en) | 2020-10-07 | 2021-03-18 | Memory controller for controlling resistive memory device and memory system including the same |
CN202110659240.2A CN114297103B (zh) | 2020-10-07 | 2021-06-15 | 存储器控制器和包括其的存储系统 |
TW110121677A TW202215438A (zh) | 2020-10-07 | 2021-06-15 | 用於控制電阻式記憶體裝置的記憶體控制器和包括其的記憶體系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200129363A KR20220046211A (ko) | 2020-10-07 | 2020-10-07 | 저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220046211A true KR20220046211A (ko) | 2022-04-14 |
Family
ID=80932586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200129363A KR20220046211A (ko) | 2020-10-07 | 2020-10-07 | 저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11501832B2 (ko) |
KR (1) | KR20220046211A (ko) |
CN (1) | CN114297103B (ko) |
TW (1) | TW202215438A (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11977465B2 (en) | 2022-05-26 | 2024-05-07 | Changxin Memory Technologies, Inc. | Method for testing a command, an apparatus for testing a command and a readable storage medium |
CN117174160A (zh) * | 2022-05-26 | 2023-12-05 | 长鑫存储技术有限公司 | 指令的测试方法、装置、测试平台及可读存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6675272B2 (en) * | 2001-04-24 | 2004-01-06 | Rambus Inc. | Method and apparatus for coordinating memory operations among diversely-located memory components |
KR101424176B1 (ko) * | 2008-03-21 | 2014-07-31 | 삼성전자주식회사 | 저항체를 이용한 비휘발성 메모리 장치, 이를 포함하는메모리 시스템 |
KR101962874B1 (ko) * | 2012-04-24 | 2019-03-27 | 삼성전자주식회사 | 메모리 장치, 메모리 컨트롤러, 메모리 시스템 및 이의 동작 방법 |
KR20140028618A (ko) * | 2012-08-29 | 2014-03-10 | 삼성전자주식회사 | 쓰기 페일을 줄이는 메모리 장치, 이를 포함하는 메모리 시스템 및 그 쓰기 방법 |
US9904635B2 (en) | 2015-08-27 | 2018-02-27 | Samsung Electronics Co., Ltd. | High performance transaction-based memory systems |
US10037167B2 (en) * | 2015-09-11 | 2018-07-31 | Sandisk Technologies Llc | Multiple scheduling schemes for handling read requests |
KR101888405B1 (ko) * | 2016-06-01 | 2018-08-14 | 주식회사 맴레이 | 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서 |
US10387081B2 (en) * | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10572168B2 (en) * | 2017-11-16 | 2020-02-25 | International Business Machines Corporation | DRAM bank activation management |
KR102432713B1 (ko) * | 2017-11-28 | 2022-08-17 | 에스케이하이닉스 주식회사 | 저항성 메모리 장치를 구비한 메모리 시스템 및 그의 동작 방법 |
KR102426107B1 (ko) * | 2017-12-20 | 2022-07-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102514772B1 (ko) * | 2017-12-28 | 2023-03-28 | 삼성전자주식회사 | 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법 |
KR102545189B1 (ko) * | 2018-09-07 | 2023-06-19 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 |
-
2020
- 2020-10-07 KR KR1020200129363A patent/KR20220046211A/ko unknown
-
2021
- 2021-03-18 US US17/205,647 patent/US11501832B2/en active Active
- 2021-06-15 TW TW110121677A patent/TW202215438A/zh unknown
- 2021-06-15 CN CN202110659240.2A patent/CN114297103B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114297103A (zh) | 2022-04-08 |
US20220108747A1 (en) | 2022-04-07 |
CN114297103B (zh) | 2023-09-08 |
TW202215438A (zh) | 2022-04-16 |
US11501832B2 (en) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691626B2 (en) | Memory channel that supports near memory and far memory access | |
US10025522B2 (en) | Memory interface command queue throttling | |
US10529421B2 (en) | Memory system having resistive memory device for scheduling write command and operating method thereof | |
CN113168374B (zh) | 写入命令在分区命名空间中的保持 | |
US10073790B2 (en) | Electronic system with memory management mechanism and method of operation thereof | |
US8935467B2 (en) | Memory system, and a method of controlling an operation thereof | |
EP3441885B1 (en) | Technologies for caching persistent two-level memory data | |
CN108228473B (zh) | 通过动态地传送存储器范围分配的负载平衡的方法及系统 | |
CN112558744A (zh) | 用于减少用于刷新存储器模块上的存储器设备的功耗的方法和装置 | |
US20180150233A1 (en) | Storage system | |
JP7357169B2 (ja) | Dramのリフレッシュ管理 | |
US12013797B2 (en) | Memory controller, memory system and operating method of the memory system using a channel arbitration circuit | |
KR20220046211A (ko) | 저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
US11636895B2 (en) | Non-volatile resistive memory device including a plurality of write modes | |
JPWO2016174744A1 (ja) | 不揮発性メモリの制御方法、制御装置、および半導体記憶装置 | |
US20220391115A1 (en) | Dissimilar Write Prioritization in ZNS Devices | |
US20210373809A1 (en) | Write Data-Transfer Scheduling in ZNS Drive | |
US20230161478A1 (en) | Skip program verify for dynamic start voltage sampling | |
WO2024063821A1 (en) | Dynamic and shared cmb and hmb allocation | |
US11735272B2 (en) | Noise reduction during parallel plane access in a multi-plane memory device | |
US20240105251A1 (en) | Apparatuses and methods to deprioritize traffic to unavilable memory banks | |
US20230110110A1 (en) | Starvation mitigation for associative cache designs | |
WO2024072500A1 (en) | Hmb multi-segment optimal selection | |
WO2023034448A1 (en) | Power loss protection of data in memory devices | |
CN114115710A (zh) | 电子设备及其操作方法、固态硬盘控制器、存储器件 |