KR102415867B1 - 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법 - Google Patents

메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법 Download PDF

Info

Publication number
KR102415867B1
KR102415867B1 KR1020170161977A KR20170161977A KR102415867B1 KR 102415867 B1 KR102415867 B1 KR 102415867B1 KR 1020170161977 A KR1020170161977 A KR 1020170161977A KR 20170161977 A KR20170161977 A KR 20170161977A KR 102415867 B1 KR102415867 B1 KR 102415867B1
Authority
KR
South Korea
Prior art keywords
ranks
refresh
program
information
rank
Prior art date
Application number
KR1020170161977A
Other languages
English (en)
Other versions
KR20190063123A (ko
Inventor
김웅래
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020170161977A priority Critical patent/KR102415867B1/ko
Priority to US16/026,633 priority patent/US10825502B2/en
Publication of KR20190063123A publication Critical patent/KR20190063123A/ko
Application granted granted Critical
Publication of KR102415867B1 publication Critical patent/KR102415867B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40603Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1636Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40618Refresh operations over multiple banks or interleaving
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40626Temperature related aspects of refresh operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/401Indexing scheme relating to cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C2211/406Refreshing of dynamic cells
    • G11C2211/4062Parity or ECC in refresh operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 셀에서 발생할 수 있는 결함을 최소화하기 위한 메모리 시스템 및 그의 동작 방법이 제공된다. 일 실시 예에 따르면, 메모리 시스템은 다수의 랭크들을 포함하는 메모리 디바이스; 및 상기 메모리 디바이스에 대하여 수행되는 적어도 하나의 프로그램과 상기 랭크들의 조합들 각각에 대응하는 다수의 리프레쉬 주기들을 상기 프로그램의 수행 시 상기 랭크들 각각에서의 성능을 진단한 결과에 기초하여 결정하고, 상기 결정된 리프레쉬 주기들에 기초하여 상기 랭크들에 대한 리프레쉬 동작을 제어하는 메모리 컨트롤러를 포함할 수 있다.

Description

메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법{MEMORY SYSTEM FOR REMOVING MEMORY CELL FAULT AND METHOD THEREOF}
본 발명은 메모리 시스템 및 그의 동작 방법에 관한 것이다.
일반적으로 메모리는 제조 단계에서 충분한 테스트를 거쳐 제품으로 출하된다. 그러나 실제 사용 환경에서 메모리에는 추가적으로 결함(fault)이 발생할 수 있다. 추가적으로 발생할 수 있는 결함은 메모리 셀의 동작 또는 환경에 따라 간헐적으로 발생되는 간헐적 결함(intermittent fault)과, 메모리 셀의 물리적인 오류에 기인하여 정상 상태로 복원이 불가능한 영구적 결함(aging fault)로 구분될 수 있다.
본 발명의 실시 예들은 메모리 셀에서 발생할 수 있는 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법을 제공하기 위한 것이다.
본 발명의 실시 예들은 메모리 셀에서 발생할 수 있는 간헐적 결함을 최소화할 수 있도록 최적의 리프레쉬 주기를 예측하여 제어하는 메모리 시스템 및 그의 동작 방법을 제공하기 위한 것이다.
본 발명의 일 실시 예에 따르면, 메모리 시스템은, 다수의 랭크들을 포함하는 메모리 디바이스; 및 상기 메모리 디바이스에 대하여 수행되는 적어도 하나의 프로그램과 상기 랭크들의 조합들 각각에 대응하는 다수의 리프레쉬 주기들을 상기 프로그램의 수행 시 상기 랭크들 각각에서의 성능을 진단한 결과에 기초하여 결정하고, 상기 결정된 리프레쉬 주기들에 기초하여 상기 랭크들에 대한 리프레쉬 동작을 제어하는 메모리 컨트롤러를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 다수의 랭크들을 포함하는 메모리 디바이스를 포함하는 메모리 시스템의 동작 방법은, 상기 메모리 디바이스에 대하여 수행되는 적어도 하나의 프로그램과 상기 랭크들의 조합들 각각에 대응하는 다수의 리프레쉬 주기들을 상기 프로그램의 수행 시 상기 랭크들 각각에서의 성능을 진단한 결과에 기초하여 결정하는 과정; 및 상기 결정된 리프레쉬 주기들에 기초하여 상기 랭크들에 대한 리프레쉬 동작을 제어하는 과정을 포함할 수 있다.
본 발명의 실시 예들에 따르면, 메모리 컨트롤러는 메모리 디바이스에 포함되는 다수의 랭크별, 메모리 디바이스에서 수행되는 다수의 프로그램별 조합들 각각에 대응하는 최적화된 리프레쉬 주기를 결정할 수 있다. 이와 같이 랭크별, 프로그램별로 최적화된 리프레쉬 주기를 결정함으로써 시스템 신뢰성을 향상시킬 수 있으며, 시스템의 성능도 최적화할 수 있다.
도 1a 및 도 1b는 데이터 처리 시스템을 도시하는 도면들이다.
도 2는 본 발명의 실시 예에 따른 메모리 시스템을 도시하는 도면이다.
도 3은 본 발명의 실시 예에 따른 연산 네트워크에 구현될 수 있는 뉴럴 네트워크 구조를 도시하는 도면이다.
도 4는 본 발명의 실시 예에 따른 메모리 컨트롤러를 도시하는 도면이다.
도 5는 본 발명의 실시 예에 따른 연산 네트워크를 도시하는 도면이다.
도 6은 본 발명의 실시 예에 따른 연산 유닛들을 도시하는 도면이다.
도 7은 본 발명의 실시 예에 따른 컨트롤 블록을 도시하는 도면이다.
도 8은 본 발명의 실시 예에 따른 제2 컨트롤 유닛을 도시하는 도면이다.
도 9는 본 발명의 실시 예에 따른 제1 컨트롤 유닛을 도시하는 도면이다.
도 10은 본 발명의 실시 예에 따른 단위 연산 유닛을 도시하는 도면이다.
도 11은 본 발명의 실시 예에 따른 성능 진단 유닛을 도시하는 도면이다.
도 12는 본 발명의 실시 예에 따른 ECC 진단 유닛을 도시하는 도면이다.
도 13은 본 발명의 실시 예에 따른 조정 컨트롤러를 도시하는 도면이다.
도 14는 본 발명의 실시 예에 따른 레지스터 유닛을 도시하는 도면이다.
도 15는 본 발명의 실시 예에 따른 에이징 조정기를 도시하는 도면이다.
도 16은 본 발명의 실시 예에 따른 메모리 디바이스를 위한 리프레쉬 주기를 조정하는 처리 흐름을 도시하는 도면이다.
도 17a 내지 도 17d는 본 발명의 실시 예에 따른 메모리 시스템에 의해 수행되는 메모리 디바이스를 위한 리프레쉬 주기 조정 동작의 흐름을 도시하는 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1a 및 도 1b는 데이터 처리 시스템을 도시한 도면들이다.
도 1a를 참조하면, 데이터 처리 시스템 10은 호스트 20과 주변 장치 30을 포함할 수 있다. 주변 장치 30은 호스트 20로부터 커맨드 CMD(또는 요청)를 수신하며, 수신된 커맨드에 따른 데이터 DATA를 주고 받는다. 예를 들어, 호스트 20은 컴퓨터, 서버, 스마트폰 등이 될 수 있으며, 주변 장치 30은 모바일 또는 저장 장치 제품(mobile or storage product)이 될 수 있다.
도 1b를 참조하면, 도 1a에 도시된 주변 장치 30은 메모리 시스템 35에 의해 구현될 수 있다. 즉, 데이터 처리 시스템 10은 호스트 20 및 메모리 시스템 35를 포함할 수 있다. 호스트 20은 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
메모리 시스템 35는 호스트 20로부터의 커맨드에 응답하여 액세스될 수 있다. 다시 말해, 메모리 시스템 35는 호스트 20의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다.
메모리 시스템 35는 메모리 컨트롤러 100과 메모리 디바이스 200을 포함할 수 있다. 메모리 컨트롤러 100은 호스트 20으로부터의 커맨드에 응답하여 해당하는 메모리 디바이스 200에 대한 액세스 동작을 수행한다. 예를 들어, 메모리 컨트롤러 100은 호스트 20으로부터의 라이트 커맨드에 응답하여 호스트 20으로부터의 라이트 데이터를 메모리 디바이스 200에 저장한다. 다른 예로, 메모리 컨트롤러 100은 호스트 20으로부터의 리드 커맨드에 응답하여 메모리 디바이스 200에 저장된 데이터를 리드하고, 그 리드 데이터를 호스트 20으로 전달한다. 다양한 실시 예들에서, 메모리 디바이스 200은 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 디바이스가 될 수 있다. 다른 실시 예들에서, 메모리 디바이스 200은 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 디바이스가 될 수 있다.
한편 DRAM(Dynamic Random Access Memory)와 같은 메모리 디바이스는 제조 단계에서 충분한 테스트를 거쳐 제품으로 출하된다. 그러나 실제 사용 환경에서 메모리 디바이스에는 추가적으로 결함(fault)이 발생할 수 있다. 추가적으로 발생할 수 있는 결함(이하 "추가 결함"이라 칭함)은 간헐적 결함(intermittent fault)과 영구적 결함(aging fault)로 구분될 수 있다. BTI(Bias Temperature Instability), 게이트-옥사이드 파괴(gate-oxide breakdown) 등과 같은 영구적 결함은 시간이 지나면서 영구적으로 회복이 어려운 디펙(defect)이다. 반면에, 간헐적 결함은 온도, 환경, 프로세스의 변이(variation) 및 테스트 벤치(test bench) 특성 등에 따라 발생하는 디펙(defect)이다. 간헐적 결함이 발생하는 경우에도 메모리 셀은 다시 정상적으로 동작할 수도 있다.
이러한 추가 결함을 해결하기 위하여 소위 ECC(Error Correction Code)를 이용한 에러 정정 기술이 사용될 수 있다. 그러나 메모리의 용량(capacity)이 증가하고, 사물인터넷(Internet of Things, IoT)/자동화(automotive)와 같은 다양한 환경에서 메모리를 사용하는 경우, 해당 추가 결함은 더 증가하게 되고, 그 결과 ECC를 이용하여 결함을 정정하지 하지 못하는 ECC 정정 불가능(uncorrectable) 상황이 많이 발생할 수 있다. ECC 정정 불가능 상황을 해결하기 위한 다양한 기술들이 논의되어 오고 있다.
이러한 다양한 기술들은 결함을 최소화하기 위하여 메모리 디바이스에 대한 리프레쉬 레이트(refresh rate)(또는 리프레쉬 주기)를 조절하는 방식을 포함할 수 있다. 예를 들어, 도 1b에 도시된 메모리 디바이스 200이 DRAM인 경우, 메모리 컨트롤러 100은 메모리 디바이스 200에 대한 ECC 정정 레이트를 모니터링하고, 모니터링 결과에 기초하여 메모리 디바이스 200을 위한 리프레쉬 레이트를 증가(또는 단위 리프레쉬 주기를 감소)시킬 수 있다.
이러한 리프레쉬 레이트의 조절을 통하여 메모리의 결함을 최소화하는 기존 연구는 아래와 같은 한계를 갖는다.
첫째, 메모리 디바이스에 대한 간헐적 결함을 줄이기 위하여 리프레쉬 레이트를 증가시키게 되면, 메모리 컨트롤러의 성능(performance)이 감소, 즉 메모리 컨트롤러가 단위 시간에 처리해야 할 명령(instruction) 및 커맨드의 수가 감소될 수 있다.
둘째, 특정 메모리 랭크(rank)의 리프레쉬 레이트만 증가시키게 되면, 동일 프로그램(또는 커맨드 셋)에 대하여 특정 랭크의 사용도가 떨어지기 때문에, DRAM 칩의 사용의 불균형이 야기된다. 하나의 랭크만이 노후화(aging)로 인하여 고장이 발생한다고 하여도, 모든 DRAM 시스템에서 페일(fail)이 발생하기 때문에, 랭크를 골고루 사용하여 전체 시스템 수명(system lifetime)을 상승시킬 필요가 있다.
셋째, 리프레쉬 주기를 짧게 함으로써 ECC 에러 발생의 빈도수를 낮출 수 있지만, 영구적 결함의 경우는 리프레쉬 주기 조절의 큰 의미는 없다. 그렇기 때문에 ECC 정정시마다 리프레쉬 주기를 짧게 하게 되면, 불필요한 성능 저하(performance penalty)가 야기될 수 있다. 즉 메모리 컨트롤러는 ECC 경향성을 분석하여 결함의 종류를 구분하고, 간헐적 결함의 경우에만 리프레쉬 주기를 조절할 필요가 있다.
도 2는 본 발명의 실시 예에 따른 메모리 시스템을 도시하는 도면이다.
도 2를 참조하면, 메모리 시스템은 메모리 컨트롤러 100과 메모리 디바이스 200을 포함할 수 있다. 메모리 컨트롤러 100은 외부, 예를 들어 도 1a 및 도 1b의 호스트 20으로부터 수신되는 액세스 요청에 응답하여 메모리 디바이스 200을 제어할 수 있다. 상기 수신되는 요청은 메모리 디바이스 200에 대한 리드(read) 커맨드 또는 라이트(write) 커맨드와 같은 단일의 커맨드를 포함할 수 있다. 이와 달리, 상기 수신되는 요청은 특정 기능을 수행하기 위한 함수로서의 다수의 메모리 커맨드들의 조합, 즉 커맨드 셋을 포함할 수 있다. 이하에서 용어 “프로그램(program)”은 다수의 메모리 커맨드들의 조합인 커맨드 셋을 의미하는 것으로 정의될 수 있다.
예를 들어, 프로그램은 도 1a 및 도1b에 도시된 바와 같은 메모리 시스템 35을 사용하는 데이터 처리 시스템에서 수행될 수 있는 인터넷(internet), 게임(game) 등과 같이 넓은 범위의 기능 또는 어플리케이션(application)을 의미할 수 있다. 다른 예로, 프로그램은 데이터 처리 시스템에서 수행될 수 있는 배경화면, 시계 등과 같이 범위의 기능 또는 어플리케이션을 의미할 수 있다. 또 다른 예로, 프로그램은 데이터 처리 시스템에서 수행될 수 있는 좁은 범위의 기능 또는 어플리케이션을 위한 랜덤 함수(random function) 또는 순차적 함수(incremental function)을 의미할 수 있다.
또한, 메모리 디바이스 200이 DRAM인 경우, 프로그램은 액티브 커맨드 ACT, 리드 커맨드 RD, 라이트 커맨드 WR 등의 커맨드 조합으로 표현될 수도 있다.
메모리 디바이스 200은 메모리 컨트롤러 100으로부터 액세스 요청에 응답하여 동작한다. 예를 들어, 메모리 디바이스 200은 메모리 컨트롤러 100으로부터의 라이트 커맨드에 응답하여 메모리 컨트롤러 100으로부터 제공되는 데이터를 자신의 해당하는 저장 영역에 저장한다. 다른 예로, 메모리 디바이스 200은 메모리 컨트롤러 100으로부터의 리드 커맨드에 응답하여 해당하는 저장 영역에 저장되어 있는 데이터를 리드하여 메모리 컨트롤러 100으로 전달한다.
다양한 실시 예에서, 메모리 디바이스 200은 DRAM(dynamic random access memory)일 수 있다. 이러한 경우 메모리 디바이스 200은 메모리 저장 영역으로서 다수의 메모리 뱅크(bank)들 210을 포함할 수 있다. 다수의 메모리 뱅크들 각각은 워드 라인과 비트 라인 사이에 연결된 다수의 메모리 셀들을 포함하는 메모리 셀 어레이로 구성될 수 있다. 하나의 메모리 뱅크는 다수의 메모리 셀들을 포함하는 하나의 메모리 칩을 포함할 수 있으며, 하나의 메모리 랭크(rank)는 다수의 메모리 뱅크들 또는 다수의 메모리 칩들을 포함할 수 있다. 예를 들어, 8bit wide DRAM들의 rank는 8개의 메모리 칩들을 포함할 수 있으며, 4bit wide DRAM들의 rank는 16개의 메모리 칩들을 포함할 수 있다.
또한, 메모리 디바이스 200은 메모리 컨트롤러 100의 액세스 요청에 응답하는 동작 수행 중에 에러가 발생할 시 에러를 정정하는 동작을 수행할 수 있다. 이를 위하여, 메모리 디바이스 200은 ECC(error correction code) 회로 220을 포함할 수 있다. 예를 들어, ECC 회로 220은 다수의 메모리 뱅크들 210의 특정 셀에 라이트되는 데이터 또는 다수의 메모리 뱅크(bank)들 210의 특정 셀로부터 리드되는 데이터에 대하여 에러 정정 동작을 수행할 수 있다.
메모리 컨트롤러 100은 컨트롤 유닛 100A와 연산 네트워크 300을 포함할 수 있다. 컨트롤 유닛 100A는 외부(예; 도 1A와 도 1B의 호스트 20)로부터 액세스 요청에 대응하는 동작을 수행할 수 있다. 예를 들어, 컨트롤 유닛 100A는 호스트 20으로부터 제공되는 커맨드 CMD와 어드레스 ADDR을 수신하고, 수신된 커맨드 및 어드레스에 대응하는 라이트 데이터 DATA를 메모리 디바이스 200으로 제공하거나, 수신된 커맨드 및 어드레스에 대응하는 리드 데이터 DATA를 메모리 디바이스 200으로부터 수신한다. 이러한 컨트롤 유닛 100A는 제1 컨트롤 유닛 400과 제2 컨트롤 유닛 500을 포함할 수 있다. 제1 컨트롤 유닛 400과 제2 컨트롤 유닛 500 각각의 구성과 동작에 대한 설명은 후술될 것이다.
본 발명의 실시 예들에 따르면, 메모리 컨트롤러 100은 우선 메모리 디바이스 200에 대한 결함이 프로세스 변이, 환경/온도, 프로그램(또는 커맨드 셋)의 종류에 영향을 받을 수 있다는 사실을 고려한다. 구체적으로, 메모리 컨트롤러 100은 DRAM과 같은 메모리 디바이스 200의 간헐적 결함이 DRAM 랭크 별 프로세스 변이, 온도/환경, 그리고 수행될 커맨드 셋의 종류에 의존한다는 사실을 고려할 수 있다. 또한, 메모리 컨트롤러 100은 DRAM과 같은 메모리 디바이스 200에 대한 리프레쉬 주기를 조절함에 있어서, 그로 인한 시스템 성능 저하를 최소화하는 요소도 고려할 수 있다.
다시 말하면, 메모리 컨트롤러 100은 메모리 디바이스 200에 대한 최적의 리프레쉬 주기를 예측하기 위해서, 메모리 랭크 별 프로세스 변이, 온도/환경, 수행 커맨드 셋(또는 프로그램)의 종류, 단위 시간 별 모든 메모리 랭크가 처리한 커맨드 셋의 총 처리량(throughput), 단위 시간 별 메모리 랭크 별 워크로드(workload) 분배도, 실제 메모리에서 실시간으로 발생하는 추가적인 결함 레이트(fault rate)(즉, ECC 정정 레이트), 영구적 결함과 간헐적 결함의 구분과 같은 다수의 변수들, 예를 들어 총 7가지 변수들을 고려할 수 있다. 7가지의 변수들을 고려하는 경우, 메모리 컨트롤러 100은 리프레쉬 주기라는 출력을 위해서 8차원 함수를 구현할 수 있다. 이하에서는 메모리 컨트롤러 100이 메모리 디바이스 200에 대한 최적의 리프레쉬 주기를 예측하기 위해서 7가지의 변수들을 고려하는 경우가 예시적으로 설명될 것이지만, 본 발명의 사상은 이에 제한되는 것이 아님에 유의하여야 할 것이다.
앞서서 언급한 바와 같이 메모리 디바이스 200에서의 간헐적 결함은 프로세스 변이, 온도/환경 등에 영향을 받을 수 있다. 어느 한 메모리 랭크에 포함되는 메모리 셀들은 유사한 프로세스 변이를 가지며, 다른 메모리 랭크에 포함되는 메모리 셀들은 마찬가지로 유사한 프로세스 변이를 가지는 것이 일반적이다. 마찬가지로 어느 한 메모리 랭크에 포함되는 메모리 셀들은 유사한 온도/환경 조건을 가질 수 있다. 그러므로 메모리 컨트롤러 100가 메모리 랭크별로 리프레쉬 주기를 결정한다면, 랭크별 프로세스 변이, 온도/환경 등의 변수가 고려되게 될 것이다.
메모리 컨트롤러 100은 최적의 다차원 함수를 구현하기 위한 연산 네트워크(computation network) 300을 포함할 수 있다. 연산 네트워크 300은 뉴럴 네트워크(neural network) 구조를 이용하여 구현될 수 있다. 뉴럴 네트워크 구조는 인공지능, 기계학습(machine learning), 뉴로모픽 프로세서(neuromorphic processor) 등에 사용될 수 있는 구조로, 방대한 양의 데이터를 병렬적으로 처리 가능하게 한다. 또한, 연산 네트워크 300은 기존의 변수 및 처리 데이터를 계속하여 누적하여 활용하는 병렬 처리 기법을 사용하여, 메모리 디바이스 200에 대한 최적의 리프레쉬 레이트를 예측할 수 있다. 이러한 구조를 통하여 구현될 수 있는 메모리 컨트롤러 100은 성능 저하(CPU performance penalty)를 최소화하는 최적의 리프레쉬 레이트를 예측함으로써 시스템 신뢰도(system reliability)와 시스템 성능(system performance)를 최적화할 수 있다.
도 3은 본 발명의 실시 예에 따른 도 2에 도시된 연산 네트워크 300에 구현될 수 있는 뉴럴 네트워크 구조를 도시하는 도면이다. 뉴럴 네트워크 구조는 소위 recurrent Neural Network (RNN) 구조일 수 있다.
RNN 구조는 입력 레이어들(input layers) 32와, 은닉 레이어들(hidden layers) 34와, 출력 레이어들(output layers) 36을 포함할 수 있다. 각각의 레이어에는 메모리와 연산기가 포함될 수 있다. 입력 레이어들 32와 은닉 레이어들 34는 데이터들을 수집하여 연산하고, 출력 레이어들 36은 원하는 파라미터(parameter) 값을 연산한다. 이러한 RNN 구조는 방대한 양의 데이터를 병렬 처리하면서도, 동시에 방대한 양의 연산에 저전력이 소모된다는 장점과, 출력 레이어들이 이전에 은닉 레이어들에 저장된 데이터들을 가지고 학습하여 최적의 데이터를 예측할 수 있다는 장점이 있다.
RNN 구조를 가지도록 구현되는 도 2의 메모리 컨트롤러 100은 메모리 랭크별 프로세스 변이, 온도/환경, 수행 커맨드 셋(또는 프로그램)의 종류, 단위 시간 별 모든 랭크가 처리한 커맨드 셋의 총 양, 단위 시간 별 랭크 별 워크로드(workload) 분배도, 실제 메모리에서 실시간으로 발생하는 추가적인 결함 레이트(fault rate)(또는 ECC correction rate), 영구적 결함(aging fault)과 간헐적 결함(intermittent fault)의 구분의 총 7가지 변수로, 메모리 디바이스 200에 대한 리프레쉬 레이트를 표현한다. 즉 메모리 컨트롤러 100은 메모리 디바이스 200에 대한 리프레쉬 레이트가 상기 총 7가지 변수를 통하여 표현되도록 연산 네트워크 300을 구현한다.
여기서 단위 시간 별 모든 랭크가 처리한 커맨드 셋의 총 양에 대한 데이터와 단위 시간 별 랭크 별 워크로드 분배도에 대한 데이터는 서로 상관 관계가 있다. 그러므로, RNN 구조를 이용함으로써 메모리 컨트롤러 100은 랭크 별 모든 데이터가 상관 관계를 가지면서 연산이 이루어지도록 할 수 있다. 대비적으로, 일반적인 CPU는 시리얼 처리(serial processing) 구조이기 때문에, 랭크 별 모든 데이터를 연결하기에 어려움이 있을 수 있다.
도 3에서, y축(또는 세로축)의 레이어들 각각은 독립된 메모리 랭크의 정보를 연산하기 위한 레이어이다. 예를 들어, y축 1번째 상단 레이어는 DRAM 랭크 1에 대한 정보를 연산하고, y축 2번째 상단 레이어는 DRAM 랭크 1에 대한 정보를 연산하고, y축 3번째 상단 레이어는 DRAM 랭크 3에 대한 정보를 연산하고, y축 4번째 상단 레이어는 DRAM 랭크 4에 대한 정보를 연산한다. 즉, 이러한 구조는 서로 다른 메모리 랭크의 프로세스 변이를 표현한다.
x축(또는 가로축)에서 은닉 레이어들 34 각각은 서로 다른 프로그램의 종류 (또는 커맨드 셋의 종류, 구동 시간 단위), 온도/환경을 표현한다. 즉 하나의 세로축 레이어 단위는 서로 다른 프로그램 셋의 종류를 나타낸다. 즉, 은닉 레이어들 34의 개수는 정보를 수집하고 싶은 프로그램 종류의 수에 대응한다.
입력 레이어들 32와 출력 레이어들 36은 후술되는 도 7에 도시된 컨트롤 블록 300B에 해당하는 구성요소들이고, 은닉 레이어들 34는 도 6에 도시된 단위 연산 유닛들 300A에 해당하는 구성요소들이다.
도 4는 본 발명의 실시 예에 따른 메모리 컨트롤러 100을 도시하는 도면이다.
도 4를 참조하면, 메모리 컨트롤러 100은 컨트롤 유닛 100A와 연산 네트워크 300을 포함할 수 있다. 컨트롤 유닛 100A는 커맨드 CMD, 프로그램 정보 Program[0:j], 어드레스 정보 ADDR, 에러정정 정보 ECC info.를 수신할 수 있다. 예를 들어, 컨트롤 유닛 100A는 커맨드 CMD와 프로그램 정보 Program[0:j]와 어드레스 정보 ADDR을 도 1b에 도시된 호스트 20으로부터 수신할 수 있으며, 에러정정 정보 ECC info.를 도 2에 도시된 메모리 디바이스 200으로부터 수신할 수 있다. 컨트롤 유닛 100A는 도 2에 도시된 바와 같이 2개의 컨트롤 유닛들 400, 500을 포함하여 구성될 수 있다. 이때 제1 컨트롤 유닛 400은 일반적인 메모리 컨트롤러의 내부에 포함되는 컨트롤 유닛일 수 있으며, 제2 컨트롤 유닛 500은 본 발명의 실시 예들에 따른 연산 네트워크 300과의 연계 동작을 위한 컨트롤 유닛일 수 있다. 이와 달리, 컨트롤 유닛 100A는 단일의 컨트롤 유닛을 포함하는 형태로 구성될 수도 있다.
연산 네트워크 300은 메모리 랭크들과 프로그램들의 조합들 각각에 대하여 최적의 리프레쉬 주기를 결정하기 위한 연산을 수행할 수 있다. 이러한 연산을 위하여, 연산 네트워크 300은 컨트롤 유닛 100A로부터 프로그램 정보 Program[0:j]와, m개의 랭크별 ECC 정정된 메모리 셀의 수 ECC_1, ECC_2, ... ECC_m과, m개의 랭크별 실행되는 커맨드의 수 N_1, N_2, ... N_m을 수신한다. 또한, 연산 네트워크 300은 연산 수행 결과에 따른 각 랭크에 대한 리프레쉬 주기 정보 Tref_1, Tref_2, ... Tref_m을 도 2에 도시된 메모리 디바이스 200으로 출력할 수 있다.
하기에서 본 발명의 다양한 실시 예들을 설명함에 있어서 사용되는 주요한 용어들은 다음의 <표 1>과 같이 정의될 수 있다.

ADDR : 어드레스
CMD : 커맨드
ECC info. : ECC 정보
ECC_1, ECC_2, ... ECC_m : m개의 랭크별 ECC 정정된 메모리 셀의 수
ECC_ref1 : 특정 프로그램 내에서 랭크 1에 최대 허용되는 ECC 카운트 수
EN1, EN2, ... ENp : p개의 프로그램들을 선택하기 위한 인에이블 신호
N_1, N_2, ... N_m : m개의 랭크별 실행되는 커맨드의 수
N_Average : m개의 랭크가 수행하는 평균 커맨드의 수
N_critical : m개의 랭크가 수행해야 하는 최소 커맨드의 수의 평균 값
Program[0:j] : 프로그램 정보
Tref1, Tref2, ... Tref_m : m개의 랭크별 리프레쉬 주기
도 5는 본 발명의 실시 예에 따른 연산 네트워크 300을 도시하는 도면이다.
도 5를 참조하면, 연산 네트워크 300은 다수의 연산 유닛들 300A와, 컨트롤 블록 300B를 포함할 수 있다. 다수의 연산 유닛들 300A 각각은 m개의 메모리 뱅크들과 p개의 프로그램들의 조합에 따른 (m x p)개의 연산 유닛들을 포함할 수 있다. 컨트롤 블록 300B는 도 4에 도시된 바와 같이 컨트롤 유닛 100A로부터 프로그램 정보 Program[0:j]와, m개의 랭크별 ECC 정정된 메모리 셀의 수 ECC_1, ECC_2, ... ECC_m과, m개의 랭크별 실행되는 커맨드의 수 N_1, N_2, ... N_m을 수신하고, 이를 연산 유닛들 300A로 전달한다. 또한, 컨트롤 블록 300B는 연산 유닛들 300A에 의한 연산 수행 결과에 따른 각 랭크에 대한 리프레쉬 주기 정보 Tref_1, Tref_2, ... Tref_m을 연산 유닛들 300A로부터 수신하고, 이를 도 4에 도시된 컨트롤 유닛 100A로 전달할 수 있다.
도 6은 본 발명의 실시 예에 따른 연산 유닛들 300A을 도시하는 도면이다.
도 6을 참조하면, 연산 유닛들 300A는 m개의 메모리 랭크들과 p개의 프로그램들의 조합에 해당하는 (m x p)개의 연산 유닛들을 포함할 수 있다. 연산 유닛들 300A는 도 5에 도시된 컨트롤 블록 300B로부터 EN1 ~ Enp, N_1 ~ N_m, N_Average, N_Critical, ECC_1 ~ ECC_m의 값들을 수신하고, 해당 연산 동작을 수행한다. 또한, 연산 유닛들 300A는 연산 수행 결과에 따른 Tref1_t1, ... Trefm_t1, Tref1_t2, ... Trefm_t2, ...... , Tref1_tp, ... Trefm_tp의 값들을 컨트롤 블록 300B로 출력한다.
연산 유닛들 311 내지 319는 제1 DRAM 랭크 310에 대한 연산 유닛들이고, 연산 유닛들 321 내지 329는 제2 DRAM 랭크 320에 대한 연산 유닛들이고, 연산 유닛들 331 내지 339는 제3 DRAM 랭크 330에 대한 연산 유닛들이다. 연산 유닛들 311, 321, 331은 제1 프로그램 Program 1에 대한 연산 유닛들이다. 연산 유닛들 312, 322, 332는 제2 프로그램 Program 2에 대한 연산 유닛들이다. 연산 유닛들 313, 323, 333은 제3 프로그램 Program 3에 대한 연산 유닛들이다. 연산 유닛들 319, 329, 339는 제p 프로그램 Program p에 대한 연산 유닛들이다.
연산 유닛 311은 EN1, ECC_1, N_1, N_Average, N_Critical의 값들을 수신하고, 이에 응답하여 연산 동작을 수행하고 Tref1_t1을 출력한다. 제1 DRAM 랭크 310에 대한 다른 연산 유닛들 312, 313, 319는 마찬가지의 연산 동작을 수행한다. 연산 유닛 321은 EN1, ECC_2, N_2, N_Average, N_Critical의 값들을 수신하고, 이에 응답하여 연산 동작을 수행하고 Tref2_t1을 출력한다. 제2 DRAM 랭크 320에 대한 다른 연산 유닛들 322, 323, 329는 마찬가지의 연산 동작을 수행한다. 연산 유닛 331은 EN1, ECC_m, N_m, N_Average, N_Critical의 값들을 수신하고, 이에 응답하여 연산 동작을 수행하고 Trefm_t1을 출력한다. 제m DRAM 랭크 330에 대한 다른 연산 유닛들 332, 333, 339는 마찬가지의 연산 동작을 수행한다.
다시 도 2, 도 4, 도 5 및 도 6을 참조하면, 연산 네트워크 300은 단위 연산을 하는 연산 유닛들 300A와, 모든 연산 유닛들을 병렬로 간접 연결하는 컨트롤 블록 300B로 구성된다. 각각의 연산 유닛들 300A의 가로축에는 DRAM 랭크 1 (Unit_R1_t1 ~ Unit_R1_tp)부터 랭크 m (Unit_Rm_t1 ~ Unit_Rm_tp)까지의 레이어들이 존재한다. 각각의 연산 유닛들 300A의 세로축은 프로그램 셋의 종류 별로 구분된다. 프로그램 셋의 단위는 사용자에 의해 자유롭게 설정될 수 있다. 1번째 세로축의 연산 유닛들의 그룹 (Unit_R1_t1, Unit_R2_t1, ... Unit_Rm_t1)은 단위 프로그램 1에서 수행되는 랭크들을 포함한다. 이러한 연산 유닛들의 그룹은 p개 존재하며, 이들은 p개의 프로그램 셋에 해당하는 정보를 저장할 수 있다.
연산 유닛들 각각은 특정 프로그램 선택을 알리는 EN신호 (EN1~ENp), 해당 단위 프로그램 실행시 해당 기간 동안 발생하는 랭크별 누적 ECC 정정 에러 카운트 수 (ECC_1 ... ECC_m), 단위 프로그램 셋 동작시 랭크별로 수행하는 커맨드의 누적 수 (N_1, N_2, ... N_m), 단위 프로그램 셋 동작시 m개의 랭크들이 수행하는 평균 커맨드의 수 (N_Average), 단위 프로그램 셋 동작시 m개의 랭크들이 수행해야 하는 최소 커맨드의 수의 평균 (N_critical)을 입력으로 제공받는다. 또한, 단위 연산 유닛은 각 랭크의 각 프로그램 별 리프레쉬 주기 (Tref1_t1 ... Trefm_tp)을 출력한다.
다시 말하면, 연산 유닛들 300A에 입력되는 값들은 컨트롤 유닛 100A이 메모리 디바이스 200으로부터 실시간으로 측정해서 받아온 실시간 파라미터(real parameter)이다. 각 연산 유닛들은 입력 값들을 내부에 있는 레지스터들(예; 도 10에 도시된 레지스터 유닛 940)에 계속 누적하여 학습하고 스스로 연산을 하여 각 랭크 별, 프로그램 별 리프레쉬 주기들, 즉 총 랭크 개수 (m) x 프로그램 셋 개수 (p) 가지의 Tref들을 결정한다. 이렇게 결정된 리프레쉬 주기들에 대한 정보는 제2 컨트롤 유닛 500을 거쳐 제1 컨트롤 유닛 400으로 전달되며, 제1 컨트롤 유닛 400은 수신된 리프레쉬 주기들에 대한 정보에 기초하여 메모리 디바이스 200의 해당하는 랭크들에 대한 리프레쉬 동작들이 수행되도록 한다. 예를 들면, 총 랭크 개수가 8이고, 프로그램 셋 개수가 10이라면, 연산 유닛들 300A는 80가지의 리프레쉬 주기들에 대한 정보를 출력할 수 있다.
도 7은 본 발명의 실시 예에 따른 컨트롤 블록 300B를 도시하는 도면이다.
도 7을 참조하면, 컨트롤 블록 300B는 멀티플렉서(MUX) 360과 연산 로직(computation logic) 370을 포함할 수 있다. 컨트롤 블록 300B는 도 4에 도시된 컨트롤 유닛 100A로부터 Program[0:j], ECC_1 ... ECC_m, N_1 ... N_m의 값들을 수신한다. 컨트롤 블록 300B는 도 6에 연산 유닛들 300A로 EN1 ... ENp, N_1 ... N_m, N_Average, N_Critical, ECC_1 ... ECC_m의 값들을 출력한다. 또한, 컨트롤 블록 300B는 연산 유닛들 300A로부터 Tref1_t1, ... Trefm_t1, Tref1_t2, ... Trefm_t2, ... , Tref1_tp - Trefm_tp의 값들을 수신한다. 컨트롤 블록 300B는 도 4에 도시된 컨트롤 유닛 100A로 Tref1, Tref2, ... Tref_m의 값들을 출력한다.
멀티플렉서(MUX) 360은 Tref1_t1, Tref2_t1, ... Trefm_t1, Tref1_t2, Tref2_t2, ... Trefm_t2, ...... Tref1_tp, Tref2_tp, ... Trefm_tp의 값들을 수신하고, EN1, EN2, ... ENp에 응답하여 Tref1, Tref2, ... Trefm을 출력한다.
연산 로직 370은 평균화 로직(average logic) 372, 레지스터(register) 374, 디코더(decoder) 376을 포함할 수 있다. 평균화 로직 372는 N_1, N_2 - N_m을 수신하고, 이들에 대한 평균값을 취하여 N_Average를 출력한다. 레지스터 374는 Program[0:j]를 수신하고, N_Critical을 출력한다. 디코더 376은 Program[0:j]를 수신하고, 특정 프로그램을 선택하기 위한 EN1, EN2, ... ENp를 출력한다.
다시 도 4, 도 5 및 도 7을 참조하면, 연산 네트워크 300 내의 컨트롤 블록 300B는 연산 유닛들 300A을 모두 연결하고 제어하는 역할을 수행한다. 컨트롤 블록 300B 내부의 연산 로직 370은 도 2의 제1 컨트롤 유닛 400이 수행한 메모리 디바이스 200에 대한 프로그램 정보를 수신하고, 특정 프로그램에 해당하는 연산 네트워크 300 내의 연산 유닛을 선택하기 위한 인에이블 신호 EN1, EN2, ... ENp를 디코더 376을 통해 생성한다. 또한, 연산 로직 370은 평균화 로직 372를 통하여 해당 프로그램 셋을 실행하는데 있어서 수행한, 각 랭크의 커맨드 셋의 누적 카운트 수 N_1, N_2, ... N_m에 대하여 평균을 취하고, N_Average를 출력한다. 또한, 연산 로직 370은 레지스터 374에 업데이트된 각 프로그램 별 m개의 랭크가 반드시 처리해야 할 최소 커맨드 수의 평균 값 N_critical을 출력 한다.
컨트롤 블록 300B 내부의 멀티플렉서 360는 디코더 376에 의해 생성된 인에이블 신호 EN1, EN2, ... ENp에 응답하여 특정 프로그램 셋이 실행될 때 연산 유닛들 300A에서 출력되는 (m x p) 개의 Tref의 출력 값들을 m개의 Tref (Tref1, Tref2, ... Trefm)로 멀티플렉싱한다.
도 8은 본 발명의 실시 예에 따른 제2 컨트롤 유닛 500을 도시하는 도면이다.
도 8을 참조하면, 제2 컨트롤 유닛 500은 컨트롤 블록(control block) 510, 제1 레지스터 블록(register block) 520, 제2 레지스터 블록 530, 카운터 블록(counter block) 540을 포함할 수 있다.
카운터 블록 540은 제1 컨트롤 유닛 400으로부터 CMD, Program[0:j], ECC info.를 수신한다. 또한, 카운터 블록 540은 랭크별 CMD들에 대한 카운트 동작을 수행하고, 카운트 동작 결과에 따른 N_1, N_2, ... N_m을 제2 레지스터 블록 530으로 전달한다. 또한, 카운터 블록 540은 랭크별 ECC info.들에 대한 카운트 동작을 수행하고, 카운트 동작 결과에 따른 ECC_1, ECC_2, ... ECC_m을 제2 레지스터 블록 530으로 전달한다.
레지스터 블록 530은 카운터 블록 540으로부터 전달된 N_1, N_2, ... N_m, ECC_1, ECC_2, ... ECC_m을 랭크별로 저장한다.
컨트롤 블록 510은 제2 레지스터 블록 530에 저장된 N_1, N_2, ... N_m, ECC_1, ECC_2, ... ECC_m을 수신하고, 연산 네트워크 300으로부터 Tref_1, Tref_2, ... Tref_m을 수신한다. 또한, 컨트롤 블록 510은 Program[0:j], N_1, N_2, ... N_m, ECC_1, ECC_2, ... ECC_m을 연산 네트워크 300으로 전달하고, Tref_1, Tref_2, ... Tref_m을 제1 레지스터 블록 520으로 전달한다.
제1 레지스터 블록 520은 컨트롤 블록 510으로부터의 Tref_1, Tref_2, ... Tref_m을 저장한다. 제1 레지스터 블록 520에 저장된 Tref_1, Tref_2, ... Tref_m은 제1 컨트롤 유닛 400으로 전달된다.
다시 도 2, 도 4 및 도 8을 참조하면, 제2 컨트롤 유닛 500은 제1 컨트롤 유닛 400으로부터 커맨드 CMD, 프로그램 정보(또는 단위 커맨드 셋), ECC 정보를 수신한다. 커맨드 카운터와 ECC 카운터를 포함할 수 있는 카운터 블록 540은 단위 프로그램 내의 m개의 랭크별로 실행하는 커맨드 수 N_1, N_2, ... N_m과, 단위 프로그램 내에 발생한 m개의 랭크별 ECC 정정의 총 수 ECC_1, ECC_2, ... ECC_m을 카운트한다. 제2 레지스터 블록 530은 해당 랭크별로 커맨드 수와 ECC 정보를 저장한다. 제1 레지스터 블록 520은 연산 네트워크 300에 의해 연산된 리프레쉬 주기 Tref_1, Tref_2, ... Tref_m을 랭크별로 저장한다.
도 9는 본 발명의 실시 예에 따른 제1 컨트롤 유닛 400을 도시하는 도면이다.
도 9를 참조하면, 제1 컨트롤 유닛 400은 컨트롤 블록(control block) 410, 데이터 버퍼(data buffer) 420 및 요청 큐(request queue) 430을 포함할 수 있다. 데이터 버퍼 420은 외부(예; 호스트 20)로부터 수신되는 메모리 디바이스 200에 저장될 데이터 또는 메모리 디바이스 200으로부터 수신되는 데이터를 저장할 수 있다. 데이터 버퍼 420에 저장된 데이터는 외부(예; 호스트 20)로도 전달될 수 있다.
요청 큐 430은 메모리 디바이스 200으로부터 ECC info.를 수신하여 저장할 수 있다. 또한, 요청 큐 430은 외부(예; 호스트 20)로부터 수신되는 CMD, Addr을 수신하여 저장할 수 있다.
컨트롤 블록 410은 제2 컨트롤 유닛 500으로부터 Tref_1, Tref_2, ... Tref_m을 수신하고, 이를 메모리 디바이스 200으로 전달할 수 있다. 또한, 컨트롤 블록 410은 요청 큐 430을 제어하여 제2 컨트롤 유닛 500으로 CMD, Program[0:j], ECC info., Addr을 전달할 수 있다.
도 10은 본 발명의 실시 예에 따른 단위 연산 유닛 313을 도시하는 도면이다. 예시적으로, 도 10은 연산 네트워크 300에 포함되는 다수의 단위 연산 유닛들 중에서 단위 연산 유닛 313의 구성을 도시하고 있지만, 다른 나머지의 단위 연산 유닛들도 유사하게 구성되고 동작할 수 있음에 유의하여야 한다.
도 10을 참조하면, 단위 연산 유닛 313은 성능 진단 유닛(performance diagnosis unit) 910, ECC 진단 유닛(diagnosis unit) 920, 조정 컨트롤러(adjust controller) 930 및 레지스터 유닛(register unit) 940을 포함할 수 있다. 단위 연산 유닛 313은 컨트롤 블록 300B로부터 EN3, N_1, N_Average, N_Critical, ECC_1을 수신하고, 컨트롤 블록 300B로 Tref1_t3을 전달할 수 있다. 레지스터 유닛(register unit) 940은 SRAM 및 FF/Latch 등으로 표현될 수 있다.
다시 도 4, 도 5, 도 6, 도 7 및 도 10을 참조하면, 연산 유닛들 300A에 포함되는 단일 유닛 Unit_R1_t3에서, R1은 랭크 1의 의미이고, t3은 프로그램 셋 3의 의미이다. 상기 유닛 Unit_R1_t3 313은 과거 정보 (N_1, Tref1_t3, ECC_1)를 저장해놓은 레지스터 유닛 940과, 성능 저하(performance drop) 여부를 판별하는 성능 진단 유닛 910과, 현재 ECC 페일(fail)의 정도를 판별하는 ECC 진단 유닛 920과, 조정 컨트롤러 930으로 구성되어 있다. 조정 컨트롤러 930은 과거 N_1, Tref1_t3, ECC_1의 정보의 경향 테이블(table)을 분석하여, 영구적 결함과 간헐적 결함을 구분하고, 또 과거 정보를 학습하여 성능 오버헤드(performance overhead)와 ECC 실패 레이트(failure rate)를 최소화하는 리프레쉬 주기를 찾는 기능을 수행한다.
성능 진단 유닛 910은 N_Average, N_Critical을 수신하고, 진단 결과에 따른 T1, T2를 출력할 수 있다. ECC 진단 유닛 920은 ECC_1을 수신하고, 진단 결과에 따른 T3, T4를 출력할 수 있다. 레지스터 유닛 940은 조정 컨트롤러 930으로부터 수신되는 N1, Tref1_t3, ECC_1을 저장할 수 있고, 또한 저장되어 있는 N1, Tref1_t3, ECC_1을 조정 컨트롤러 930으로 전달할 수 있다. 레지스터 유닛 940에 의한 저장 및 전달 동작은 선택 신호 S에 응답하여 수행될 수 있다.
조정 컨트롤러 930은 컨트롤 블록 300B로부터 ECC_1, N_1, N_Average, N_Critical를 수신하고, 성능 진단 유닛 910으로부터 T1, T2를 수신하고, ECC 진단 유닛 920으로부터 T3, T4를 수신하고, 컨트롤 블록 300B로 Tref1_t3를 출력할 수 있다. 조정 컨트롤러 930은 연산 로직(computation logic) 930A, 캐시 컨트롤러(cache controller) 930B를 포함할 수 있다.
도 11은 본 발명의 실시 예에 따른 성능 진단 유닛 910을 도시하는 도면이다.
도 11을 참조하면, 성능 진단 유닛 910은 감산기(subtractor)들 912, 916, 비교기(comparator)들 914, 918을 포함할 수 있다. 감산기들 912, 916, 비교기들 914, 918은 EN3에 응답하여 인에이블된다. 감산기 912는 N_Average, N_Critical을 수신하고, 수신된 신호들에 대한 감산 동작을 수행하고, 감산 결과를 비교기 914로 출력한다. 비교기 914는 감산기 912로부터의 감산 결과와 Ref_N1을 비교하고, 비교 결과 T1을 출력한다. 감산기 916은 N_1, N_Average를 수신하고, 수신된 신호들에 대한 감산 동작을 수행하고, 감산 결과를 비교기 918로 출력한다. 비교기 918은 감산기 916으로부터의 감산 결과와 Ref_N2을 비교하고, 비교 결과 T2를 출력한다.
위와 같이 구성되는 성능 진단 유닛 910은 해당 프로그램 셋의 실행시 모든 랭크들이 수행한 커맨드 셋의 수의 평균 값 N_Average가 기준 처리량(throughput) N_critical보다 많이 부족한지 여부를 판단한다. {N_Critical - N_Average}가 Ref_N1보다 큰 경우, 성능 진단 유닛 910은 리프레쉬 주기를 너무 하향화함에 따라 성능 저하(performance penalty)가 크다고 판단한다. 이러한 경우 성능 진단 유닛 910은 로직 하이(logic high)(예; 5V)(이하 'H' 이라 칭함)레벨의 T1 신호를 생성한다.
만약 해당 랭크 1의 커맨드 처리량 N_1이 다른 랭크들에 비해 현저히 적다면 리프레쉬 주기를 상향하는 기능을 요구된다. {N_Average - N_1} > Ref_N2 인 경우, 성능 진단 유닛 910은 랭크 1의 리프레쉬 주기가 다른 랭크들에 비해 너무 짧다고 판단한다. 이러한 경우 성능 진단 유닛 910은 logic 'H' 레벨의 T2 신호를 생성한다. 성능 진단 유닛 910에 포함되는 구성요소들은 EN3 신호가 인에이블되면, 즉 해당 프로그램 번호가 실행되면 동작을 한다. 만약 2번째 랭크 스케줄 분배(rank schedule distribution) 기능이 한 프로그램 셋 내에서 실행될 필요가 없으면 도 11에서의 Ref_N2값을 조정하여 사용하지 않을 수도 있다.
도 12는 본 발명의 실시 예에 따른 ECC 진단 유닛 920을 도시하는 도면이다.
도 12를 참조하면, ECC 진단 유닛 920은 감산기(subtractor) 922, 비교기(comparator) 924를 포함할 수 있다. 감산기 922, 비교기 924는 EN3에 응답하여 인에이블된다. 감산기 922는 ECC_1, ECC_ref를 수신하고, 수신된 신호들에 대한 감산 동작을 수행하고, 감산 결과 Ref_ECC1을 비교기 924로 출력한다. 비교기 924는 감산기 922로부터의 감산 결과 Ref_ECC1과 Ref_ECC2를 비교하고, 비교 결과 T3, T4를 출력한다.
ECC 진단 유닛 920은 현재 ECC 실패(failure) 수의 레벨을 최대 허용(maximum tolerance) 값과 비교하여 특정 경우에만 리프레쉬 레이트 또는 주기를 조절할 수 있다. 리프레쉬 주기의 조절은 2가지 케이스로 구분될 수 있다.
1번째 케이스는 성능 진단 유닛 910이 리프레쉬 주기를 상향하라는 커맨드를제공하는 경우, 즉 T1 또는 T2가 'H'레벨인 경우이다. 이러한 경우, ECC 진단 유닛 920은 {현재의 ECC_ref1 (한 프로그램 내에 랭크 1에 최대 허용되는 ECC count 수) - ECC_1 (현재 한 프로그램 셋 내에서 랭크 1로부터 누적된 ECC count 수)} > Ref_ECC2 값보다 큰 경우만 리프레쉬 주기가 상향되도록 제어한다. 이 경우는 아직 리프레쉬 주기를 상향해서 ECC 실패 레이트가 증가를 하여도 ECC_ref1에는 미치지 못할 것이라 예상하여 여유가 좀 더 있는 경우이다. 이러한 경우에 ECC 진단 유닛 920은 logic 'H'레벨의 T3 신호를 생성한다.
2번째 케이스는 리프레쉬 주기가 충분히 긴 경우, 즉 성능 오버헤드(performance overhead)가 없어서 T1과 T2가 모두 'L' 레벨인 경우이다. 이러한 경우는 {(ECC_ref-ECC_1)<Ref_ECC2} 일 때 기준으로 리프레쉬 주기 튜닝(tuning) 여부를 판단한다. 이러한 경우는 현재 ECC 레이트가 너무 높다는 의미이다. 이러한 경우는 리프레쉬 주기를 더 짧게 하향하여 ECC_1을 낮춰서 실패 레이트를 줄일 필요가 있으므로, logic 'H'레벨의 T4 신호를 출력한다. 이렇게 실패 레이트, 즉 ECC 레이트가 높은 경우에는 리프레쉬 주기를 하향하고, 리프레쉬 주기를 너무 하향하여 성능 저하가 생기는 경우에는 다시 리프레쉬 주기를 상향하는 연속적인 반복 루프(iteration loop)를 통하여 최적의 리프레쉬 주기값을 새로운 환경과 온도에 맞추어 찾아갈 수 있다.
위와 같이 리프레쉬 주기를 조정해야 하는 경우, 얼마로 조정해야 하는지 결정하는데 어려움이 있을 수 있다. 정확도를 극대화하기 위하여, 조정 컨트롤러 930은 기존에 사용된 정보 (N_1, Tref1_t3, ECC_1)을 룩업 테이블(look up table) 형태로 구성될 수 있는 내부 레지스터 유닛 940에 저장하고, 다시 읽어서 기존 정보와 현재 정보를 비교하여 최적의 리프레쉬 주기값을 찾는다.
만약 성능 진단 유닛 910과 ECC 진단 유닛 920이 리프레쉬 주기를 변경하라는 커맨드를 제공하면, 조정 컨트롤러 930은 레지스터 유닛 940에 저장되어 있는 과거 룩업 테이블을 불러와서 메모리 디바이스의 결함이 에이징 결함인지 간헐적 결함인지 구분을 하고 학습을 통해 가장 최적의 리프레쉬 주기 값을 찾는다.
도 13은 본 발명의 실시 예에 따른 조정 컨트롤러 930을 도시하는 도면이다.
도 13을 참조하면, 조정 컨트롤러 930은 연산 로직(computation logic) 930A, 캐시 컨트롤러(cache controller) 930B를 포함할 수 있다. 조정 컨트롤러 930은 컨트롤 블록 300B로부터 ECC_1, N_1, N_Average, N_Critical를 수신하고, 성능 진단 유닛 910으로부터 T1, T2를 수신하고, ECC 진단 유닛 920으로부터 T3, T4를 수신하고, 컨트롤 블록 300B로 Tref1_t3를 출력할 수 있다.
연산 로직 930A는 컨트롤 블록(control block) 931, 컨트롤 블록 931의 동작을 보조하기 위한 보조 구성요소들을 포함할 수 있다. 예를 들어, 보조 구성요소들은 가산기들(multipliers), 곱셈기들(comparators), 비교기들(comparators), ECC 경향성 분석 유닛(trend analysis unit)을 포함할 수 있다. 컨트롤 블록 931은 에이징 조정기(aging adjuster) 932, 리프레쉬 조정기(Tref adjuster) 934, 스테이트 머신(state machine) 936을 포함할 수 있다.
캐시 컨트롤러 930B는 컨트롤러(controller), 카운터(counter), 리드 버퍼(read buffer), 라이트 버퍼(write buffer)를 포함할 수 있다. 컨트롤러는 컨트롤 블록 931의 스테이트 머신 930으로부터 출력을 수신하고, CTR 신호를 출력한다. 카운터는 컨트롤러로부터의 CTR 신호에 응답하여 카운트 동작을 수행하여 S 신호를 레지스터 블록 940으로 출력한다. 리드 버퍼는 컨트롤러로부터의 CTR 신호에 응답하여 레지스터 블록 940에 저장된 ECC_1, N_1, Tref1_t3을 리드하여 저장하고, ECC_1_M, N_1M, Tref1_t3M을 연산 블록 930A로 출력한다. 라이트 버퍼는 컨트롤러로부터의 CTR 신호에 응답하여 ECC_1_M, N_1M, Tref1_t3M을 수신하여 저장하고, 레지스터 블록 940에 라이트한다.
도 14는 본 발명의 실시 예에 따른 레지스터 유닛 940을 도시하는 도면이다.
도 14를 참조하면, 레지스터 유닛 940은 레지스터들 942, 디코더(decoder) 944를 포함할 수 있다. 레지스터들 942는 캐시 컨트롤러 930B로부터의 ECC_1, N_1, Tref1_t3이 라이트되도록 한다. 또한, 레지스터들 942는 저장되어 있는 ECC_1, N_1, Tref1_t3이 캐시 컨트롤러 930B에 의해 리드되도록 한다. 디코더 944는 캐시 컨트롤러 930B로부터 제공되는 신호 S에 따라 캐시 컨트롤러 930B에 의한 라이트 또는 리드 동작이 수행되도록 한다.
도 15는 본 발명의 실시 예에 따른 에이징 조정기(aging adjuster) 932를 도시하는 도면이다.
도 15를 참조하면, 에이징 조정기 932는 레지스터 셋들(register sets) 1412, 1422, 감산기들(subtractors) 1414, 1424, 레지스터 셋들(register sets) 1416, 1426, 및 분석기(analyzer) 1430을 포함할 수 있다. 에이징 조정기 932는 컨트롤 블록 300B로부터 ECC1_M, N_1M, Tref1_t3M을 수신하고, ECC 카운트 수의 경향과 리프레쉬 주기의 경향을 분석하여 에이징의 정도를 파악할 수 있다. 에이징 조정기 932는 파악된 에이징의 정도에 따라 메모리 셀들에 대한 결함이 영구적 결함인지 간헐적 결함인지 여부를 판단하고, 그 판단 결과에 따라 Tref_offset을 출력할 수 있다.
레지스터 셋들 1412는 ECC_1_M 값들을 수신하여 저장한다. 감산기들 1414는 레지스터 셋들 1412에 저장된 ECC_1_M 값들에 대하여 감산 동작을 수행한다. 레지스터 셋들 1416은 상기 감산 동작에 따른 ECC 정정 누적 카운트 수의 서로 다른 사이클(또는 구간)의 변화량을 저장한다.
레지스터 셋들 1422는 Tref1_t3M 값들을 수신하여 저장한다. 감산기들 1424는 레지스터 셋들 1422에 저장된 Tref_1_t3M 값들에 대하여 감산 동작을 수행한다. 레지스터 셋들 1426은 상기 감산 동작에 따른 리프레쉬 주기의 서로 다른 사이클(또는 구간)의 변화량을 저장한다.
분석기 1430은 ECC 정정 누적 카운트 수의 서로 다른 사이클의 변화량과 리프레쉬 주기의 서로 다른 사이클의 변화량에 기초하여 에이징의 정도를 판단할 수 있다. 에이징의 정도를 판단함에 있어서, 분석기 1430은 ECC 정정 누적 카운트 수와 리프레쉬 주기의 서로 다른 사이클의 변화량에 대한 평균값에 기초하여 에이징의 정도를 판단할 수도 있다.
다시 도 10, 도 13 내지 도 15를 참조하면, 조정 컨트롤러 930은 레지스터 블록 940에 저장된 과거 데이터의 리드 동작과 레지스터 블록 940에 현재 변경된 데이터의 라이트 동작을 수행하는 캐시 컨트롤러 930B, 해당 데이터를 분석하여 리프레쉬 주기를 최종 출력하는 연산 로직 930A로 구성된다.
연산 로직 930A는 ECC trend analysis를 통해 과거의 ECC 정정 누적 카운트 수 경향을 분석하고 리프레쉬 주기의 경향을 분석함으로써 메모리 셀에 대한 결함이 영구적 결함인지 간헐적 결함인지 여부를 알 수 있다. 제어 블록 931은 {(랭크 1의 ECC 정정 누적 카운트 수의 서로 다른 사이클의 변화량)/(리프레쉬 주기의 서로 다른 사이클의 변화량)}의 값을 분석한다. 만약 제어 블록 931은 해당 분석 값이 계속하여 증가한다면 영구적 결함의 정도를 파악할 수 있다. 에이징 결함 또는 실패란 리프레쉬 주기를 하향해도 그 실패 레이트가 줄지 않는 영구적인 결함이다. 이와 같이 영구적 결함의 정도가 높다고 파악된다면, 제어 블록 931의 에이징 조정기 932는 Tref_offset을 적절하게 설정하여 영구적 결함의 정도를 감소시킴으로써 리프레쉬 주기를 조절한다.
로직 하이(logic high)(예; 5V)(이하'H'라 칭함)레벨의 T1 및 T3가 생성되는 경우, 즉 전체 랭크들의 처리량이 낮고 리프레쉬 주기를 조정할 수 있는 경우, 조정 컨트롤러 930은 도 11과 같이 {m*N_Critical - m*N_average}가 Ref_N1과 가장 비슷한 N_1을 만드는 Tref_1_t3 값을 설정한다. 이 때 조정 컨트롤러 930은 레지스터 블록 940의 룩업 테이블에 저장된 기존 데이터들을 검색하여 찾아서 새로운 Tref_1_t3 값으로 설정한다.
'H'레벨의 T2 및 T3가 생성되는 경우, 즉 해당 랭크만 커맨드 처리량이 다른 랭크들에 비해 떨어지고, 동시에 리프레쉬 주기를 조정할 여유가 있는 경우, 조정 컨트롤러 930은 (N_Average - N_1)가 Ref_N2와 가장 비슷한 N_1을 만드는 Tref_1_t3 값을 설정한다. 이 때 조정 컨트롤러 930은 레지스터 블록 940의 룩업 테이블에 저장된 기존 데이터들을 검색하여 찾아서 새로운 Tref_1_t3 값으로 설정한다.
'H'레벨의 T4가 생성되는 경우, 즉 ECC 실패 레이트가 너무 높은 경우, 조정 컨트롤러 930은 도 12와 같이 (ECC_ref1 - ECC_1)이 Ref_ECC2와 가장 비슷한 ECC_1을 만드는 Tref_1_t3 값을 설정한다. 이 때 조정 컨트롤러 930은 레지스터 블록 940의 룩업 테이블에 저장된 기존 데이터들을 검색하여 찾아서 새로운 Tref_1_t3 값으로 설정한다.
이와 같이 최종 리프레쉬 주기가 결정되면 조정 컨트롤러 930은 해당하는 데이터 셋을 레지스터 블록 940의 룩업 테이블에 업데이트한다.
도 16은 본 발명의 실시 예에 따른 메모리 디바이스를 위한 리프레쉬 주기를 조정하는 처리 흐름을 도시하는 도면이다. 도 16에 도시된 흐름은 도 2 내지 도 15에 도시된 바와 같이 컨트롤 유닛 100A와 연산 네트워크 300을 포함하여 구성되는 메모리 컨트롤러 100가 다수의 랭크들을 포함하는 메모리 디바이스 200을 제어함에 의해 수행될 수 있다.
도 16을 참조하면, 메모리 컨트롤러 100은 적어도 하나의 프로그램과 다수의 랭크들의 조합들 각각에 대응하는 다수의 리프레쉬 주기들을 결정하는 동작을 수행한다(1600A). 또한, 메모리 컨트롤러 100은 상기 결정된 리프레쉬 주기들에 기초하여 상기 랭크들에 대한 리프레쉬 동작을 제어하는 동작을 수행한다(1600B).
일 실시예에서, 상기 결정하는 동작은 상기 프로그램의 수행 시 상기 랭크들 각각에서의 성능을 진단하는 과정; 및 상기 진단 결과에 기초하여 상기 리프레쉬 주기들을 결정하는 과정을 포함할 수 있다.
일 실시예에서, 상기 결정하는 동작은 상기 랭크들 중에서 상기 프로그램의 수행에 따른 성능 저하가 진단되는 랭크에 대하여 리프레쉬 주기를 상향 조정하는 과정을 포함할 수 있다.
일 실시예에서, 상기 결정하는 동작은 상기 랭크들 중에서 상기 프로그램의 수행에 따른 성능 저하가 진단되는 적어도 하나의 랭크에 대하여 리프레쉬 주기를 상향 조정하는 과정을 포함할 수 있다.
일 실시예에서, 상기 결정하는 동작은 상기 적어도 하나의 랭크에 대하여 상기 프로그램의 수행에 따른 에러 레이트가 미리 결정된 범위 이내인 경우 상기 적어도 하나의 랭크에 대한 리프레쉬 주기를 상향 조정하는 과정을 포함할 수 있다.
일 실시예에서, 상기 결정하는 동작은 상기 적어도 하나의 랭크에 대한 에러 레이트와 리프레쉬 주기의 변화량을 계산하는 과정; 및 상기 계산된 변화량에 기초하여 상기 적어도 하나의 랭크에 대한 리프레쉬 주기를 결정하는 과정을 포함할 수 있다.
일 실시예에서, 상기 결정하는 동작은 미리 결정된 다수의 변수들에 기초하여 상기 리프레쉬 주기들을 결정하는 과정을 포함할 수 있다. 상기 다수의 변수들은 프로세스 변이, 온도/환경, 수행 프로그램의 종류, 단위 시간별 모든 랭크가 처리한 프로그램의 총 처리량, 단위 시간별 랭크별 워크로드 분배도, 실시간 에러 정정 레이트 및 영구적 결함과 간헐적 결함의 구분 중의 적어도 하나를 포함할 수 있다.
도 17a 내지 도 17d는 본 발명의 실시 예에 따른 메모리 시스템에 의해 수행되는 메모리 디바이스를 위한 리프레쉬 주기 조정 동작의 흐름을 도시하는 도면이다.
도 17a에 도시된 흐름 1610은 도 2, 도 4, 도 5, 도 7 및 도 8에 도시된 컨트롤 유닛 100A의 제2 컨트롤 유닛 500과 연산 네트워크 300의 컨트롤 블록 300B에 의해 수행될 수 있다.
도 17a를 참조하면, 특정 프로그램 셋의 수행이 완료되면(1612), 제2 컨트롤 유닛 500은 각 랭크별 수행한 CMD 셋의 수 {N_1, N_2, ... N_m}과 ECC 정정 수 {ECC_1, ECC_2, ... ECC_m}를 카운트하여 누적한다(1614). 컨트롤 블록 300B는 제2 컨트롤 유닛 500에 의해 누적된 결과 값들을 수신하고, 이 값들에 기초하여 N_Average, N_Critical, EN신호들을 생성한다(1618).
도 17b에 도시된 흐름 1620은 도 10 및 도 11에 도시된 성능 진단 유닛 910에 의해 수행될 수 있다.
도 17b를 참조하면, 성능 진단 유닛 910은 {N_Critical - N_Average} > Ref_N1 인 것으로 판단되는 경우(1622), 모든 랭크들이 수행하는 커맨드 수의 총 처리량이 저하되었다고 판단하고, 이에 응답하여 'H'레벨의 T1 신호를 생성한다(1624). 성능 진단 유닛 910은 {N_Average - N_m} > Ref_N2 인 것으로 판단되는 경우(1626), 해당 랭크의 처리 커맨드의 수가 다른 랭크들의 처리량보다 부족하다고 판단하고, 이에 응답하여 'H'레벨의 T2 신호를 생성한다(1628).
도 17c에 도시된 흐름 1630은 도 10 및 도 12에 도시된 ECC 진단 유닛 920에 의해 수행될 수 있다.
도 17c를 참조하면, T1 신호 또는 T2 신호가 'H'레벨(또는 '1'레벨)인 경우에는 리프레쉬 주기를 상향 조정할 필요가 있다(1631). 그러나 리프레쉬 주기를 바로 상향시키지 않고, ECC 진단 유닛 920에 의해 ECC 실패 상황이 상향 가능한지 판단하는 과정이 수행되도록 한다.
ECC 진단 유닛 920은 ECC_m (현재 상태의 ECC failure level)이 ECC_ref (maximum tolerance)보다 많이 작아 여유가 있는 경우, 즉 {(ECC_ref - ECC_m) > Ref_ECC1} 인 것으로 판단되는 경우(1632), 'H' 레벨의 T3 신호를 생성함으로써 리프레쉬 주기 Tref_m_tp가 상향 조정되도록 한다(1633). 반면에, {(ECC_ref - ECC_m) > Ref_ECC1} 가 아닌 것으로 판단되는 경우, ECC 진단 유닛 920은 리프레쉬 주기 Tref_m_tp가 상향 조정이 불가능하다고 판단한다(1633).
만약 성능 저하가 발견되지 않은 경우, 즉 T1 신호 및 T2 신호가 모두 'L'레벨(또는 '0'레벨)인 경우에는 선택적으로 리프레쉬 주기를 하향 조정한다. 리프레쉬 주기의 하향 조정 동작은 ECC 진단 유닛 920에 의해 현재 ECC 레벨이 기준치보다 많이 높은지 여부에 대한 판단 결과에 따라 수행한다.
현재 ECC 레벨이 기준치보다 많이 높은 것으로 판단되는 경우, 즉 {ECC_ref - ECC_m} < Ref_ECC2 인 것으로 판단되는 경우(1635), ECC 진단 유닛 920은 'H' 레벨의 T4 신호를 생성함으로써 리프레쉬 주기 Tref_m_tp가 하향 조정되도록 한다(1636). 반면에, {ECC_ref - ECC_m} < Ref_ECC2 이 아닌 것으로 판단되는 경우(1635), ECC 진단 유닛 920은 리프레쉬 주기 Tref_m_tp에 대한 하향 조정이 불필요하다고 판단한다(1637).
도 17d에 도시된 흐름 1640은 도 10, 도 13 및 도 15에 도시된 조정 컨트롤러 930에 의해 수행될 수 있다.
도 17d를 참조하면, T3 신호 또는 T4 신호가 'H'레벨(또는 '1'레벨)인 경우(1641), 조정 컨트롤러 930은 레지스터 유닛 940에 포함된 룩업 테이블로부터 이전 사이클에 저장된 N_m/Tref_m/ECC_m 값들을 읽어들인다(1642).
T3 신호와 T4 신호가 모두 'H'레벨(또는 '1'레벨)인 경우(1643), 조정 컨트롤러 930은 리프레쉬 주기 Tref를 상향 조정한다(1644). 즉, 조정 컨트롤러 930은 {m*N_Critical - m*N_average}(여기서 m은 랭크 수)가 Ref_N1과 가장 비슷하도록 N_m을 만드는 Tref_m_tp 값을 설정한다. 이 때 조정 컨트롤러 930은 레지스터 블록 940의 룩업 테이블에 저장된 기존 데이터들을 검색하여 찾아서 새로운 Tref_m_tp 값으로 설정한다.
T3 신호와 T2 신호가 모두 'H'레벨(또는 '1'레벨)인 경우(1645), 조정 컨트롤러 930은 해당 랭크의 성능이 다른 랭크들에 비해 너무 떨어지는 것으로 판단하고 리프레쉬 주기 Tref를 상향 조정한다(1646). 즉, 조정 컨트롤러 930은 {N_average - N_m}이 Ref_N2와 가장 비슷하도록 N_m을 만드는 Tref_m_tp 값을 설정한다. 이 때 조정 컨트롤러 930은 레지스터 블록 940의 룩업 테이블에 저장된 기존 데이터들을 검색하여 찾아서 새로운 Tref_m_tp 값으로 설정한다.
T4 신호가 'H'레벨(또는 '1'레벨)인 경우(1647), 조정 컨트롤러 930은 현재 ECC 실패 레이트가 너무 높은 것으로 판단하고, 리프레쉬 주기 Tref를 하향 조정한다(1648).
T4 신호가 'H'레벨(또는 '1'레벨)가 아닌 것으로 판단되는 경우(1647), 조정 컨트롤러 930은 리프레쉬 주기 Tref를 조정하는 동작을 수행하지 않는다(1649).
위에서 언급한 바와 같은 리프레쉬 주기 Tref를 조정하는 동작은 조정 컨트롤러 930의 Tref 조정기 934에 의해 수행될 수 있으며, 이후에 에이징 조정 동작이 수행될 수 있다. 이러한 에이징 조정 동작은 조정 컨트롤러 930의 에이징 조정기 932에 의한 동작이 수행될 수 있다.
조정 컨트롤러 930은 레지스터 유닛 940에 포함된 룩업 테이블로부터 로딩한이전 사이클에 저장된 N_m/Tref_m/ECC_m 값들로부터 ECC 카운트 변화량을 계산하고(1650), 리프레쉬 주기 Tref의 변화량을 계산한다(1651). 즉, 조정 컨트롤러 930은 ECC_m_tp의 주기별 변화량과 Tref_m_tp의 주기별 변화량을 계산하고, 해당 값들을 레지스터 블록 940의 룩업 테이블에 저장한다.
조정 컨트롤러 930은 (ECC_m_tp의 주기별 변화량)/(Tref_m_tp의 주기별 변화량)의 비율이 시간에 따라 증가하는지 여부를 분석한다(1652). (ECC_m_tp의 주기별 변화량)/(Tref_m_tp의 주기별 변화량)의 비율이 시간에 따라 증가하는 것으로 판단되는 경우, 조정 컨트롤러 930은 에이징 현상이 심화되고 있다고 판단하고, 에이징의 정도를 참고하여 리프레쉬 레이트에 대한 에이징 오프셋 Tref_m_tp-offset을 설정한다(1652).
최종적으로, 조정 컨트롤러 930은 이전에 결정된 리프레쉬 레이트 Tref_m_tp에 해당 오프셋 값만큼 차감하여 최종 리프레쉬 레이트를 결정한다. 조정 컨트롤러 930은 이렇게 결정된 최종 리프레쉬 레이트를 컨트롤러 유닛 100A의 제1 컨트롤 유닛 400으로 전달한다. 그러면 이에 기초하여 제1 컨트롤 유닛 400은 메모리 디바이스 200에 대한 리프레쉬 동작을 수행할 수 있다. 또한, 조정 컨트롤러 930은 최종 리프레쉬 레이트에 대한 정보를 레지스터 유닛 940에 업데이트한다.
전술한 바와 같이 본 발명의 실시 예들에 따르면, 메모리 컨트롤러는 메모리 디바이스에 포함되는 다수의 랭크별, 메모리 디바이스에서 수행되는 다수의 프로그램별 조합들 각각에 대응하는 최적화된 리프레쉬 주기를 결정할 수 있다. 이와 같이 랭크별, 프로그램별로 최적화된 리프레쉬 주기를 결정함으로써 시스템 신뢰성을 향상시킬 수 있으며, 시스템의 성능도 최적화할 수 있다.
다양한 실시 예들에서, 메모리 컨트롤러는 뉴럴 네트워크 알고리즘을 이용한 동시 병렬 처리 기법을 사용하여 리프레쉬 주기 결정을 위한 다양한 변수들을 누적, 저장, 분석 및 학습한다. 이러한 병렬 처리 기법은 메모리 컨트롤러의 연산 속도, 정확성, 전력 소모 측면에서 유리할 수 있다. 복수의 변수들은 메모리 랭크 별 프로세스 변이(process variation), 온도/환경, 수행 커맨드 셋의 종류(또는 프로그램 종류), 단위 시간 별 모든 랭크가 처리한 커맨드 셋의 총 처리량, 단위 시간 별 랭크 별 워크로드(workload) 분배도, 실제 메모리에서 실시간으로 발생하는 추가적인 결함 레이트(fault rate)(즉, ECC 정정 레이트), 영구적 결함과 간헐적 결함의 구분과 같은 총 7가지 변수들을 포함할 수 있다.
또한, 다양한 실시 예들에서, 메모리 컨트롤러는 ECC 실패 레이트(fault rate)의 경향성과 리프레쉬 주기 경향성의 비율을 시간에 따라 저장하여 분석 및 학습을 함으로써 메모리 디바이스의 결함이 간헐적 결함인지 영구적 결함인지 여부를 구분하고, 그 결과에 따라 리프레쉬 주기를 적절하게 조정할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 다수의 랭크들을 포함하는 메모리 디바이스; 및
    상기 메모리 디바이스에 대하여 수행되는 적어도 하나의 프로그램과 상기 랭크들의 조합들 각각에 대응하는 다수의 리프레쉬 주기들을 상기 프로그램의 수행 시 상기 랭크들 각각에서의 성능을 진단한 결과에 기초하여 결정하고, 상기 결정된 리프레쉬 주기들에 기초하여 상기 랭크들에 대한 리프레쉬 동작을 제어하는 메모리 컨트롤러를 포함하고,
    상기 랭크들 각각에서의 성능을 진단한 결과는, 상기 프로그램의 수행 시 상기 모든 랭크들이 수행한 커맨드 셋들의 평균 값과 기준 처리량을 비교하여 결정되는 메모리 시스템.
  2. ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 1에 있어서, 상기 메모리 컨트롤러는,
    상기 랭크들 중에서 상기 프로그램의 수행에 따른 성능 저하가 진단되는 적어도 하나의 랭크에 대하여 리프레쉬 주기를 상향 조정하는 메모리 시스템.
  3. ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 2에 있어서, 상기 메모리 컨트롤러는,
    상기 적어도 하나의 랭크에 대하여 상기 프로그램의 수행에 따른 에러 레이트가 미리 결정된 범위 이내인 경우 상기 적어도 하나의 랭크에 대한 리프레쉬 주기를 상향 조정하는 메모리 시스템.
  4. ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 3에 있어서, 상기 메모리 컨트롤러는,
    상기 적어도 하나의 랭크에 대한 에러 레이트와 리프레쉬 주기의 변화량을 계산하고,
    상기 계산된 변화량에 기초하여 상기 적어도 하나의 랭크에 대한 리프레쉬 주기를 결정하는 메모리 시스템.
  5. ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 1에 있어서, 상기 메모리 컨트롤러는,
    미리 결정된 다수의 변수들에 기초하여 상기 리프레쉬 주기들을 결정하고,
    상기 다수의 변수들은,
    프로세스 변이, 온도/환경, 수행 프로그램의 종류, 단위 시간별 모든 랭크가 처리한 프로그램의 총 처리량, 단위 시간별 랭크별 워크로드 분배도, 실시간 에러 정정 레이트 및 영구적 결함과 간헐적 결함의 구분 중의 적어도 하나를 포함하는 메모리 시스템.
  6. ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 5에 있어서, 상기 메모리 컨트롤러는,
    상기 적어도 하나의 프로그램과 상기 랭크들의 상기 조합들 각각에 대응하는 다수의 연산 유닛들에 의해, 상기 다수의 변수들에 대한 연산 처리를 병렬적으로 수행하고, 상기 다수의 리프레쉬 주기들을 결정하는 연산 네트워크; 및
    상기 프로그램과 상기 프로그램 수행 시 에러정정 정보를 상기 메모리 디바이스로부터 수신하고, 상기 수신된 정보에 기초하여 상기 다수의 변수들에 대한 정보를 생성하여 상기 연산 네트워크로 제공하는 컨트롤 유닛을 포함하는 메모리 시스템.
  7. ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 6에 있어서, 상기 연산 네트워크는,
    상기 컨트롤 유닛으로부터 상기 프로그램의 수행과 관련한 상기 랭크별 실행되는 커맨드의 수와 에러정정 수에 대한 제1 정보를 수신하고, 상기 랭크들이 수행하는 평균 커맨드의 수와 최소 커맨드의 수의 평균값에 대한 제2 정보를 결정하는 컨트롤 블록; 및
    상기 조합들 각각에 대응하며, 상기 컨트롤 블록으로부터 상기 제1 정보와 상기 제2 정보를 수신하고, 상기 리프레쉬 주기들을 결정하는 다수의 연산 유닛들을 포함하는 메모리 시스템.
  8. ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 7에 있어서, 상기 컨트롤 블록은,
    상기 다수의 연산 유닛들로부터 상기 리프레쉬 주기들에 대한 정보를 수신하고, 상기 리프레쉬 주기들에 대한 정보에 기초하여 상기 랭크들에 대한 리프레쉬 동작이 수행되도록 제어하는 메모리 시스템.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 7에 있어서, 상기 연산 유닛들 각각은,
    상기 제1 정보 및 상기 제2 정보에 기초하여 상기 랭크들 각각에 대한 성능을 진단하는 성능 진단 유닛; 및
    상기 성능 진단 유닛에 의한 진단 결과와, 상기 제1 정보 및 상기 제2 정보에 기초하여 상기 리프레쉬 주기들을 조정하는 조정 컨트롤러를 포함하는 메모리 시스템.
  10. ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 9에 있어서, 상기 연산 유닛들 각각은,
    상기 제1 정보에 기초하여 상기 랭크들 각각에 대한 에러 레이트를 진단하는 ECC 진단 유닛을 더 포함하고,
    상기 조정 컨트롤러는,
    상기 성능 진단 유닛과 상기 ECC 진단 유닛에 의한 진단 결과들과, 상기 제1 정보 및 상기 제2 정보에 기초하여 상기 리프레쉬 주기들을 조정하는 메모리 시스템.
  11. ◈청구항 11은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 10에 있어서, 상기 조정 컨트롤러는,
    상기 적어도 하나의 랭크에 대한 에러 레이트와 리프레쉬 주기의 변화량을 계산하고,
    상기 계산된 변화량에 기초하여 상기 적어도 하나의 랭크에 대한 리프레쉬 주기를 결정하는 메모리 시스템.
  12. 다수의 랭크들을 포함하는 메모리 디바이스를 포함하는 메모리 시스템의 동작 방법에 있어서;
    상기 메모리 디바이스에 대하여 수행되는 적어도 하나의 프로그램과 상기 랭크들의 조합들 각각에 대응하는 다수의 리프레쉬 주기들을 상기 프로그램의 수행 시 상기 랭크들 각각에서의 성능을 진단한 결과에 기초하여 결정하는 과정; 및
    상기 결정된 리프레쉬 주기들에 기초하여 상기 랭크들에 대한 리프레쉬 동작을 제어하는 과정을 포함하고,
    상기 랭크들 각각에서의 성능을 진단한 결과는, 상기 프로그램의 수행 시 상기 모든 랭크들이 수행한 커맨드 셋들의 평균 값과 기준 처리량을 비교하여 결정되는 방법.
  13. ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 12에 있어서, 상기 결정하는 과정은,
    상기 프로그램의 수행 시 상기 랭크들 각각에서의 성능을 진단하는 과정; 및
    상기 진단 결과에 기초하여 상기 리프레쉬 주기들을 결정하는 과정을 포함하는 방법.
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 13에 있어서, 상기 결정하는 과정은,
    상기 랭크들 중에서 상기 프로그램의 수행에 따른 성능 저하가 진단되는 적어도 하나의 랭크에 대하여 리프레쉬 주기를 상향 조정하는 과정을 포함하는 방법.
  15. ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 14에 있어서, 상기 결정하는 과정은,
    상기 적어도 하나의 랭크에 대하여 상기 프로그램의 수행에 따른 에러 레이트가 미리 결정된 범위 이내인 경우 상기 적어도 하나의 랭크에 대한 리프레쉬 주기를 상향 조정하는 과정을 포함하는 방법.
  16. ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 15에 있어서, 상기 결정하는 과정은,
    상기 적어도 하나의 랭크에 대한 에러 레이트와 리프레쉬 주기의 변화량을 계산하는 과정; 및
    상기 계산된 변화량에 기초하여 상기 적어도 하나의 랭크에 대한 리프레쉬 주기를 결정하는 과정을 포함하는 방법.
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 12에 있어서, 상기 결정하는 과정은,
    미리 결정된 다수의 변수들에 기초하여 상기 리프레쉬 주기들을 결정하는 과정을 포함하고,
    상기 다수의 변수들은,
    프로세스 변이, 온도/환경, 수행 프로그램의 종류, 단위 시간별 모든 랭크가 처리한 프로그램의 총 처리량, 단위 시간별 랭크별 워크로드 분배도, 실시간 에러 정정 레이트 및 영구적 결함과 간헐적 결함의 구분 중의 적어도 하나를 포함하는 방법.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 17에 있어서, 상기 결정하는 과정은,
    상기 적어도 하나의 프로그램과 상기 랭크들의 상기 조합들 각각에 대응하는 다수의 연산 유닛들에 의해,
    상기 프로그램과 상기 프로그램 수행 시 에러정정 정보를 상기 메모리 디바이스로부터 수신하는 과정, 및
    상기 수신된 정보에 기초하여 상기 다수의 변수들에 대한 연산 처리를 병렬적으로 수행하여 상기 다수의 리프레쉬 주기들을 결정하는 과정을 포함하는 방법.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 18에 있어서, 상기 다수의 리프레쉬 주기들을 결정하는 과정은,
    상기 프로그램의 수행과 관련한 상기 랭크별 실행되는 커맨드의 수와 에러정정 수에 대한 제1 정보와, 상기 랭크들이 수행하는 평균 커맨드의 수와 최소 커맨드의 수의 평균값에 대한 제2 정보에 기초하여, 상기 리프레쉬 주기들을 결정하는 과정을 포함하는 방법.
  20. ◈청구항 20은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 19에 있어서, 상기 다수의 리프레쉬 주기들을 결정하는 과정은,
    상기 제1 정보 및 상기 제2 정보에 기초하여 상기 랭크들 각각에 대한 성능을 진단하는 과정; 및
    성능 진단 유닛에 의한 진단 결과와, 상기 제1 정보 및 상기 제2 정보에 기초하여 상기 리프레쉬 주기들을 조정하는 과정을 포함하는 방법.
KR1020170161977A 2017-11-29 2017-11-29 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법 KR102415867B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170161977A KR102415867B1 (ko) 2017-11-29 2017-11-29 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법
US16/026,633 US10825502B2 (en) 2017-11-29 2018-07-03 Memory system for removing memory cell fault and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170161977A KR102415867B1 (ko) 2017-11-29 2017-11-29 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190063123A KR20190063123A (ko) 2019-06-07
KR102415867B1 true KR102415867B1 (ko) 2022-07-04

Family

ID=66632604

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170161977A KR102415867B1 (ko) 2017-11-29 2017-11-29 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법

Country Status (2)

Country Link
US (1) US10825502B2 (ko)
KR (1) KR102415867B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10446246B2 (en) 2018-03-14 2019-10-15 Silicon Storage Technology, Inc. Method and apparatus for data refresh for analog non-volatile memory in deep learning neural network
US11354189B2 (en) 2019-11-07 2022-06-07 SK Hynix Inc. Semiconductor devices and semiconductor systems including the same
US11145351B2 (en) 2019-11-07 2021-10-12 SK Hynix Inc. Semiconductor devices
US11249843B2 (en) 2019-11-07 2022-02-15 SK Hynix Inc. Semiconductor devices and semiconductor systems including the same
KR20210055865A (ko) 2019-11-07 2021-05-18 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US11726543B2 (en) * 2019-12-13 2023-08-15 Stmicroelectronics S.R.L. Computing system power management device, system and method
KR20210092986A (ko) 2020-01-17 2021-07-27 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법
CN112435699A (zh) * 2020-11-30 2021-03-02 海光信息技术股份有限公司 参数控制方法、内存控制器及中央处理器

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4154010B2 (ja) * 1997-07-17 2008-09-24 キヤノン株式会社 メモリ制御装置およびメモリ制御方法
US7073099B1 (en) * 2002-05-30 2006-07-04 Marvell International Ltd. Method and apparatus for improving memory operation and yield
US7042785B2 (en) * 2003-12-19 2006-05-09 Infineon Technologies, Ag Method and apparatus for controlling refresh cycles of a plural cycle refresh scheme in a dynamic memory
KR20060084071A (ko) * 2005-01-17 2006-07-24 삼성전자주식회사 반도체 메모리에서의 리프레쉬 제어회로 및 그에 따른제어방법
GB2466566B (en) * 2008-12-22 2010-12-22 N trig ltd Digitizer, stylus and method of synchronization therewith
US8612669B1 (en) * 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
KR101873526B1 (ko) * 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
US9076499B2 (en) 2012-12-28 2015-07-07 Intel Corporation Refresh rate performance based on in-system weak bit detection
US9870834B2 (en) * 2015-10-19 2018-01-16 California Institute Of Technology Error characterization and mitigation for 16nm MLC NAND flash memory under total ionizing dose effect
US9812185B2 (en) * 2015-10-21 2017-11-07 Invensas Corporation DRAM adjacent row disturb mitigation
US10048877B2 (en) * 2015-12-21 2018-08-14 Intel Corporation Predictive memory maintenance

Also Published As

Publication number Publication date
KR20190063123A (ko) 2019-06-07
US20190164595A1 (en) 2019-05-30
US10825502B2 (en) 2020-11-03

Similar Documents

Publication Publication Date Title
KR102415867B1 (ko) 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법
US8307259B2 (en) Hardware based memory scrubbing
US9318182B2 (en) Apparatus, method and system to determine memory access command timing based on error detection
US20190114078A1 (en) Storage device, computing system including storage device and operating method of storage device
US10558518B2 (en) Dynamic adjustments within memory systems
US11080135B2 (en) Methods and apparatus to perform error detection and/or correction in a memory device
US11119851B2 (en) Determining when to perform error checking of a storage unit by training a machine learning module
EP3262508B1 (en) Patrol scrub periods based on power status
US20190087127A1 (en) Memory system and operating method thereof
US11514992B2 (en) Method and apparatus for reading a flash memory device
KR102417692B1 (ko) 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법
CN110543280A (zh) 基于温度的存储器管理的装置和方法
CN112817880A (zh) 一种固态硬盘及其磨损平衡方法和终端设备
US11188244B2 (en) Adjusting trim settings to improve memory performance or reliability
US7533303B2 (en) Method and system for performing system-level correction of memory errors
CN112817523A (zh) 存储介质可靠性等级判断方法及系统、存储介质、设备
CN116909378A (zh) 一种基于深度强化学习的gpu动态能源效率优化运行时方法及系统
US20220406396A1 (en) Read destructive memory wear leveling system
Yan et al. On designing efficient and reliable nonvolatile memory-based computing-in-memory accelerators
KR20210006664A (ko) 메모리 시스템 및 그것의 동작방법
US20080294961A1 (en) Method and apparatus for reading data
US20210208811A1 (en) Processing-in-memory (pim) system and operating methods of the pim system
US20230086101A1 (en) Assessing risk of future uncorrectable memory errors with fully correctable patterns of error correction code
US10866096B2 (en) Method and apparatus for reducing sensor power dissipation
US11782642B2 (en) Systems and methods of determining degradation in analog compute-in-memory (ACIM) modules

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant