[go: up one dir, main page]

KR102773892B1 - Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof - Google Patents

Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof Download PDF

Info

Publication number
KR102773892B1
KR102773892B1 KR1020220151328A KR20220151328A KR102773892B1 KR 102773892 B1 KR102773892 B1 KR 102773892B1 KR 1020220151328 A KR1020220151328 A KR 1020220151328A KR 20220151328 A KR20220151328 A KR 20220151328A KR 102773892 B1 KR102773892 B1 KR 102773892B1
Authority
KR
South Korea
Prior art keywords
memory
address
value
dnn
bit
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020220151328A
Other languages
Korean (ko)
Other versions
KR20240070026A (en
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 KR1020220151328A priority Critical patent/KR102773892B1/en
Publication of KR20240070026A publication Critical patent/KR20240070026A/en
Application granted granted Critical
Publication of KR102773892B1 publication Critical patent/KR102773892B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

개시된 실시예는 고착 결함을 갖는 메모리 셀의 고착 값과 학습에 의해 미리 결정된 DNN의 가중치가 매칭되도록 메모리 셀의 어드레스를 재맵핑함으로써, 고착 결함이 발생된 메모리 셀이 가능한 정상 메모리 셀과 같이 동작하도록 하여 데이터 오류를 저감시켜 내결함성과 신뢰성을 향상시킬 수 있는 DNN을 위한 비휘발성 메모리 장치 및 이의 신뢰도 개선 방법을 제공한다.The disclosed embodiment provides a nonvolatile memory device for a DNN and a method for improving the reliability thereof, which can reduce data errors and improve fault tolerance and reliability by remapping an address of a memory cell so that a sticky value of a memory cell having a sticky defect matches a weight of a DNN predetermined by learning, thereby allowing a memory cell having a sticky defect to operate like a normal memory cell as much as possible.

Description

심층 신경망을 위한 비휘발성 메모리 장치 및 이의 신뢰도 향상 방법{Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof}{Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof}

개시되는 실시예들은 DNN을 위한 비휘발성 메모리 장치 및 이의 신뢰도 개선 방법에 관한 것으로, 내결함성이 향상된 DNN을 위한 비휘발성 메모리 장치 및 이의 신뢰도 개선 방법에 관한 것이다.The disclosed embodiments relate to a nonvolatile memory device for DNN and a method for improving reliability thereof, and more particularly, to a nonvolatile memory device for DNN with improved fault tolerance and a method for improving reliability thereof.

머신 러닝(Machine Learning: ML) 기법의 일종인 심층 신경망(Deep Neural Network: 이하 DNN)은 기존 프로그래밍 접근 방식에 비해 높은 효율성과 활용성으로 인해 최근 컴퓨터 비전, 자연어 처리, 빅 데이터 분석 등의 다양한 분야에서 매우 활발하게 이용되고 있다.Deep Neural Networks (DNNs), a type of machine learning (ML) technique, have been actively used in various fields such as computer vision, natural language processing, and big data analysis due to their high efficiency and usability compared to existing programming approaches.

도 1은 DNN의 개략적 구조를 나타내며, DNN 중에서도 대표적인 CNN의 하나인 ResNet-18의 구조를 나타낸다.Figure 1 shows a schematic structure of DNN, and shows the structure of ResNet-18, one of the representative CNNs among DNNs.

도 1에 도시된 바와 같이, 일반적으로 DNN은 입력 레이어와 출력 레이어, 그리고 입력 레이어와 출력 레이어 사이에 위치하고 각각 학습에 의해 결정된 다수의 가중치를 포함하여 신경망 연산을 수행하는 다수의 은닉 레이어를 포함하여 구성된다. 이와 같은 DNN이 신경망 연산을 수행하기 위해서는 각 레이어의 가중치를 저장하고, 입력 데이터 또는 이전 레이어의 출력 데이터와 각 레이어의 가중치에 대해 지정된 방식에 따른 연산(컨볼루션 연산, 풀링 연산 등)을 수행할 수 있어야 한다. 따라서 DNN을 활용하기 위해서는 대량의 연산 리소스와 함께 가중치를 저장하기 위한 대용량의 저장 용량이 함께 요구된다.As illustrated in Fig. 1, DNNs are generally configured to include an input layer, an output layer, and a plurality of hidden layers that are located between the input layer and the output layer and perform neural network operations, each of which includes a plurality of weights determined by learning. In order for such a DNN to perform neural network operations, it must be able to store the weights of each layer and perform operations (such as convolution operations and pooling operations) according to a specified method on the input data or the output data of the previous layer and the weights of each layer. Therefore, in order to utilize a DNN, a large amount of computational resources and a large storage capacity for storing the weights are required.

그러므로 DNN을 효율적으로 활용하기 위해서는 고밀도, 저전력 소모 및 성능 효율적인 메모리 기술이 필요하다. 기존에는 DNN을 위해 DRAM 및 플래시와 같은 차지 기반 메모리 소자를 포함하는 메모리 장치가 주로 이용되었으나, 이러한 메모리 소자들은 제한된 확장성, 전력 누설 및 결함에 대한 취약성 증가 등의 문제가 있어 DNN에 적용하기 적합하지 않다는 한계가 있다. 이에 DNN을 위한 새로운 메모리 소자에 대한 요구가 증가하였으며, 최근에는 상변이 메모리(Phase Change Memory: 이하 PCM), ReRAM(Resistive Random-Access Memory) 및 STT-MRAM(Spin-Transfer Torque Magnetic Memory)과 같은 새로운 비휘발성 메모리(Non-Volatile Memory: NVM)들이 DNN을 위한 메모리 소자로서 주목받고 있다.Therefore, high-density, low-power consumption, and performance-efficient memory technology are required to efficiently utilize DNNs. Previously, memory devices including charge-based memory devices such as DRAM and flash were mainly used for DNNs. However, these memory devices have limitations such as limited scalability, power leakage, and increased vulnerability to defects, making them unsuitable for application to DNNs. Accordingly, the demand for new memory devices for DNNs has increased, and recently, new non-volatile memories (NVMs) such as phase change memory (PCM), resistive random-access memory (ReRAM), and spin-transfer torque magnetic memory (STT-MRAM) have attracted attention as memory devices for DNNs.

다만, PCM이나 ReRAM과 같은 비휘발성 메모리 소자들은 낮은 내구성과 제조 공정의 미성숙 등으로 인해, 고착 결함(stuck-at fault)이 발생하는 경우가 있다. 이러한 고착 결함은 메모리 소자에 현재 저장된 데이터에 대한 리드는 가능하지만 새로운 데이터를 라이트할 수 없도록 하여, 비휘발성 메모리 소자를 메모리 장치에 이용하기 어렵게 하는 요인이 된다.However, nonvolatile memory devices such as PCM or ReRAM may experience stuck-at faults due to low durability and immaturity of the manufacturing process. These stuck-at faults make it difficult to use nonvolatile memory devices in memory devices because they allow reading of data currently stored in the memory device but prevent writing of new data.

한국 공개 특허 제2021-0026767호 (공개)Korean Patent Publication No. 2021-0026767 (Public)

개시되는 실시예들은 데이터 오류를 저감시켜 신뢰성을 높일 수 있는 DNN을 위한 비휘발성 메모리 장치 및 이의 신뢰도 개선 방법을 제공하는데 목적이 있다.The disclosed embodiments aim to provide a nonvolatile memory device for DNNs capable of reducing data errors and increasing reliability, and a method for improving the reliability thereof.

개시되는 실시예들은 고착 결함을 갖는 메모리 셀의 고착 값이 학습에 의해 미리 결정된 DNN의 가중치에 대응하도록 메모리 셀의 어드레스를 재맵핑하여, 고착 결함에도 우수한 내결함성을 갖는 DNN을 위한 비휘발성 메모리 장치 및 이의 신뢰도 개선 방법을 제공하는데 목적이 있다.The disclosed embodiments aim to provide a nonvolatile memory device for a DNN having excellent fault tolerance even to stuck-in faults and a method for improving the reliability thereof by remapping an address of a memory cell so that the stuck-in value of a memory cell having a stuck-in fault corresponds to a weight of a DNN predetermined by learning.

실시예에 따른 DNN을 위한 비휘발성 메모리 장치는 다수의 메모리 셀을 구비하는 셀 어레이; 및 저장될 메모리 셀을 지정하는 어드레스에 각각 맵핑된 다수의 가중치를 인가받고, 다수의 비트 구성된 보조 비트를 기반으로 상기 어드레스를 인코딩하여 획득된 인코딩 어드레스를 상기 가중치에 재맵핑하며, 상기 다수의 메모리 셀 중 상기 인코딩 어드레스에 따라 선택된 메모리 셀에 상기 가중치를 저장하는 메모리 컨트롤러를 포함하되, 상기 보조 비트는 상기 가중치가 저장되는 메모리 셀이 상기 인코딩 어드레스에 따라 선택되는 메모리 셀로 변경되어, 상기 다수의 메모리 셀 중 저장된 값이 고착값으로 고정되어 고착 결함이 발생된 고착 결함 메모리 셀의 고착값과 상기 가중치의 비트값이 매치되도록 설정된다.A nonvolatile memory device for a DNN according to an embodiment comprises: a cell array having a plurality of memory cells; and a memory controller which receives a plurality of weights, each mapped to an address designating a memory cell to be stored, and remaps an encoding address obtained by encoding the address based on an auxiliary bit composed of a plurality of bits to the weights, and stores the weights in a memory cell selected from among the plurality of memory cells according to the encoding address, wherein the auxiliary bits are set such that a memory cell in which the weights are stored is changed to a memory cell selected from among the plurality of memory cells according to the encoding address, and a stored value among the plurality of memory cells is fixed as a stuck-in value, and a bit value of the weight matches the stuck-in value of a stuck-in defective memory cell in which a stuck-in defect occurs.

상기 메모리 컨트롤러는 상기 어드레스와 상기 보조 비트를 비트별 XOR 연산하여 상기 인코딩 어드레스를 획득할 수 있다.The above memory controller can obtain the encoding address by performing a bitwise XOR operation on the address and the auxiliary bit.

상기 보조 비트는 상기 인코딩 어드레스에 따라 선택된 다수의 메모리 셀에 저장되는 상기 다수의 가중치 각각의 비트값과 상기 고착 결함 메모리 셀의 고착값이 동일한 값으로 매치되지 않아 발생되는 비트값 오류의 개수가 최소가 되도록 설정될 수 있다.The above auxiliary bits can be set so that the number of bit value errors that occur because the bit values of each of the plurality of weights stored in the plurality of memory cells selected according to the encoding address and the stickiness value of the stickiness defective memory cell do not match as the same value is minimized.

상기 보조 비트는 상기 인코딩 어드레스에 따라 선택된 다수의 메모리 셀에 저장되는 상기 다수의 가중치 각각의 비트값과 상기 고착 결함 메모리 셀의 고착값이 동일한 값으로 매치되지 않아 발생되는 비트값 오류에 의해 상기 메모리 셀에 저장된 값과 상기 가중치 사이의 편차가 최소가 되도록 설정될 수 있다.The above auxiliary bits may be set such that a deviation between a value stored in the memory cell and the weight is minimized due to a bit value error that occurs when a bit value of each of the plurality of weights stored in the plurality of memory cells selected according to the encoding address and a sticking value of the sticking defective memory cell do not match as the same value.

상기 보조 비트는 상기 메모리 셀에 저장된 값과 상기 가중치 사이의 편차가 최소인 보조 비트가 다수개이면, 더 작은 개수의 비트값 오류가 발생되도록 설정될 수 있다.The above auxiliary bits can be set so that a smaller number of bit value errors occur when there are a plurality of auxiliary bits having a minimum deviation between the value stored in the memory cell and the weight.

상기 다수의 메모리 셀은 저장된 데이터가 일괄하여 리드되는 크기인 메모리 블록으로 구분되고, 상기 보조 비트는 상기 어드레스의 다수의 비트 중 상기 메모리 블록 내에 포함된 다수의 메모리를 구분하여 선택하는 내부 블록 어드레스의 비트 개수에 대응하는 비트 개수를 가질 수 있다.The above-mentioned plurality of memory cells are divided into memory blocks of a size from which stored data is read out in bulk, and the auxiliary bit may have a number of bits corresponding to the number of bits of an internal block address that distinguishes and selects a plurality of memories included in the memory block among a plurality of bits of the address.

상기 메모리 컨트롤러는 상기 다수의 메모리 셀 중 저장된 값이 고정된 고착 결함이 발생된 메모리 셀의 어드레스를 검출하고, 검출된 메모리 셀의 고착값을 판별할 수 있다.The above memory controller can detect an address of a memory cell in which a stuck-in defect has occurred, in which a stored value is fixed, among the plurality of memory cells, and determine the stuck-in value of the detected memory cell.

상기 메모리 컨트롤러는 상기 인코딩 어드레스에 따라 선택된 메모리 셀에 저장된 가중치를 리드하는 경우, 상기 가중치에 재맵핑된 상기 인코딩 어드레스를 상기 보조 비트를 기반으로 디코딩하여 상기 어드레스에 다시 맵핑할 수 있다.The above memory controller can read the weight stored in the memory cell selected according to the encoding address, decode the encoding address remapped to the weight based on the auxiliary bit, and remap it to the address.

상기 다수의 메모리 셀은 상변이 메모리(Phase Change Memory: 이하 PCM) 소자 또는 ReRAM(Resistive Random-Access Memory) 소자 중 하나로 구현될 수 있다.The above plurality of memory cells can be implemented as either a phase change memory (PCM) device or a resistive random-access memory (ReRAM) device.

상기 다수의 가중치는 심층 신경망(Deep Neural Network: DNN)에 다수의 레이어 각각에 포함되어 신경망 연산에 이용되고, 학습에 의해 미리 결정된 값을 가질 수 있다.The above multiple weights are included in each of multiple layers of a deep neural network (DNN) and are used in neural network operations, and may have values determined in advance through learning.

실시예에 따른 DNN을 위한 비휘발성 메모리 장치의 신뢰도 개선 방법은 저장될 메모리 셀을 지정하는 어드레스에 각각 맵핑된 다수의 가중치를 획득하는 단계; 다수의 비트 구성된 보조 비트를 기반으로 상기 어드레스를 인코딩하여 획득된 인코딩 어드레스를 상기 가중치에 재맵핑하는 단계; 및 상기 다수의 메모리 셀 중 상기 인코딩 어드레스에 따라 선택된 메모리 셀에 상기 가중치를 저장하는 단계를 포함하되, 상기 보조 비트는 상기 가중치가 저장되는 메모리 셀이 상기 인코딩 어드레스에 따라 선택되는 메모리 셀로 변경되어, 상기 다수의 메모리 셀 중 저장된 값이 고착값으로 고정되어 고착 결함이 발생된 고착 결함 메모리 셀의 고착값과 상기 가중치의 비트값이 매치되도록 설정된다.A method for improving the reliability of a nonvolatile memory device for a DNN according to an embodiment comprises the steps of: obtaining a plurality of weights, each of which is mapped to an address designating a memory cell to be stored; remapping an encoding address obtained by encoding the address based on an auxiliary bit composed of a plurality of bits, to the weights; and storing the weights in a memory cell selected from among the plurality of memory cells according to the encoding address, wherein the auxiliary bits are set such that a memory cell in which the weights are stored is changed to a memory cell selected from among the plurality of memory cells according to the encoding address, so that a stored value among the plurality of memory cells is fixed as a stuck-in value, and a bit value of the weights matches the stuck-in value of a stuck-in defective memory cell in which a stuck-in defect occurs.

따라서, 실시예에 따른 DNN을 위한 비휘발성 메모리 장치 및 이의 신뢰도 개선 방법은 고착 결함을 갖는 메모리 셀의 고착 값과 학습에 의해 미리 결정된 DNN의 가중치가 매칭되도록 메모리 셀의 어드레스를 재맵핑함으로써, 고착 결함이 발생된 메모리 셀이 가능한 정상 메모리 셀과 같이 동작하도록 할 수 있다. 그러므로 데이터 오류를 저감시켜 내결함성과 신뢰성을 향상시킬 수 있다. 또한 DNN에 적용되는 경우, 연산 오류를 저감시켜 DNN의 성능 저하를 방지할 수 있다.Therefore, the nonvolatile memory device for DNN according to the embodiment and the method for improving the reliability thereof can enable a memory cell with a stuck-on defect to operate as similarly as possible to a normal memory cell by remapping the address of the memory cell so that the stuck-on value of the memory cell with the stuck-on defect matches the weight of the DNN determined in advance by learning. Therefore, data errors can be reduced, and fault tolerance and reliability can be improved. In addition, when applied to a DNN, the method can prevent performance degradation of the DNN by reducing computational errors.

도 1은 DNN의 개략적 구조를 나타낸다.
도 2는 비휘발성 메모리의 고착 결함을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 DNN을 위한 비휘발성 메모리 장치의 개략적 구조를 나타낸다.
도 4는 보조 비트에 따른 어드레스 재맵핑을 설명하기 위한 도면이다.
도 5는 DNN을 위한 비휘발성 메모리 장치의 신뢰성 향상 기법의 일 예를 설명하기 위한 도면이다.
도 6은 오류 비트 위치에 따른 가중치 편차를 설명하기 위한 도면이다.
도 7은 DNN을 위한 비휘발성 메모리 장치의 신뢰성 향상 기법의 다른 예를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 DNN을 위한 메모리 장치의 신뢰성 향상 방법을 나타낸다.
Figure 1 shows a schematic structure of DNN.
Figure 2 is a diagram for explaining a sticky defect in nonvolatile memory.
FIG. 3 illustrates a schematic structure of a non-volatile memory device for a DNN according to one embodiment.
Figure 4 is a diagram for explaining address remapping according to auxiliary bits.
Figure 5 is a diagram illustrating an example of a technique for improving the reliability of a non-volatile memory device for DNN.
Figure 6 is a diagram for explaining weight deviation according to error bit position.
Figure 7 is a diagram illustrating another example of a technique for improving the reliability of a non-volatile memory device for DNN.
FIG. 8 illustrates a method for improving the reliability of a memory device for a DNN according to one embodiment.

이하, 도면을 참조하여 일 실시예의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.Hereinafter, specific embodiments of one embodiment will be described with reference to the drawings. The following detailed description is provided to help a comprehensive understanding of the methods, devices, and/or systems described herein. However, this is only an example and the present invention is not limited thereto.

일 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 일 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 일 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다. 또한, 명세서에 기재된 "...부", "...기", "모듈", "메모리 블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.In describing the embodiments, if it is judged that a detailed description of a known technology related to the present invention may unnecessarily obscure the gist of the embodiment, the detailed description will be omitted. In addition, the terms described below are terms defined in consideration of their functions in the present invention, and may vary depending on the intention or custom of the user or operator. Therefore, the definitions should be made based on the contents throughout this specification. The terms used in the detailed description are only for describing the embodiments, and should never be limited. Unless clearly used otherwise, the singular form includes the plural form. In this description, the expressions such as "comprises" or "comprising" are intended to indicate certain features, numbers, steps, operations, elements, parts or combinations thereof, and should not be construed to exclude the presence or possibility of one or more other features, numbers, steps, operations, elements, parts or combinations thereof other than those described. Additionally, terms such as “unit,” “unit,” “module,” “memory block,” etc., described in the specification mean a unit that processes at least one function or operation, which may be implemented by hardware, software, or a combination of hardware and software.

도 2는 비휘발성 메모리의 고착 결함을 설명하기 위한 도면이다.Figure 2 is a diagram for explaining a sticky defect in nonvolatile memory.

도 2에서 (b)는 비휘발성 메모리의 다수의 메모리 셀 중 일부 메모리 셀에 0 또는 1으로 비트값이 고정된 고착 결함이 발생된 경우를 나타내고, (a)는 (b)의 메모리 셀에 저장되어야 하는 데이터를 나타내며, (c)는 (a)의 데이터가 저장된 (b)의 메모리 셀의 데이터를 리드하여 획득된 리드 데이터를 나타낸다.In Fig. 2, (b) represents a case where a stuck-on defect occurs in which a bit value is fixed to 0 or 1 in some memory cells among a plurality of memory cells of a nonvolatile memory, (a) represents data that should be stored in the memory cell of (b), and (c) represents read data obtained by reading the data of the memory cell of (b) in which the data of (a) is stored.

도 2의 (b)에서는 16개의 메모리 셀이 각각 4개씩 그룹으로 구분되어 표시되었으며, 제1 그룹과 제2 메그룹에서는 각각 3번째 메모리 셀과 첫번째 메모리 셀이 0과 1의 고착값을 가져 하나씩의 메모리 셀에 고착 결함이 발생하였고, 제3 그룹에서는 2번째 및 3번째 메모리 셀이 0 및 1의 고착값을 가져 2개의 메모리 셀에 고착 결함이 발생되었다. 그리고 제4 그룹에서도 4번째 메모리 셀의 비트값이 0의 고착값을 가져 하나의 고착 결함이 발생되었음을 알 수 있다.In Fig. 2 (b), 16 memory cells are displayed divided into groups of 4 each. In the first and second groups, the third memory cell and the first memory cell each have sticking values of 0 and 1, resulting in a sticking defect in one memory cell. In the third group, the second and third memory cells have sticking values of 0 and 1, resulting in two memory cells having sticking defects. In addition, it can be seen that in the fourth group, the bit value of the fourth memory cell has a sticking value of 0, resulting in one sticking defect.

도 2의 (b)와 같이, 4개의 그룹 각각에 (a)의 4개의 데이터(0111, 0101, 1001, 0110)을 저장하는 경우, 고착 결함이 발생되지 않은 메모리 셀에는 (a)의 데이터가 정상적으로 라이트 되지만, 고착 결함이 발생된 메모리 셀은 데이터가 라이트되지 않고 고착값으로 유지된다. 따라서 4개 그룹의 데이터를 리드하게 되면, 고착값이 변화되지 않으므로 리드된 데이터는 (c)와 같이, "0101", "1101", "1101", "0110"으로 획득된다.As in (b) of Fig. 2, when four data (0111, 0101, 1001, 0110) of (a) are stored in each of four groups, the data of (a) is normally written to memory cells in which no sticking defect occurs, but the data of memory cells in which sticking defects occur is not written and is maintained as a stuck value. Therefore, when the data of the four groups are read, the stuck values do not change, so the read data are obtained as "0101", "1101", "1101", "0110", as in (c).

이때 (a)의 라이트 데이터와 (c)의 리드 데이터를 비교해보면, 제1 및 제2 그룹 및 제3 그룹에서 각각 하나씩의 비트값이 고착 결함에 의해 오류로 나타나는 반면, 제3 그룹의 3번째 메모리 셀과 제4 그룹에서는 고착 결함에 의한 오류가 나타나지 않았음을 알 수 있다. 이는 고착 결함의 특성상, 저장되는 데이터의 비트값이 고착 결함이 발생된 메모리의 고착값과 동일하다면, 데이터의 비트값이 정상적으로 리드될 수 있어 오류로 볼 수 없기 때문이다. 따라서 고착 결함을 갖는 메모리 셀을 포함한 메모리 장치일지라도, 저장되는 데이터의 비트값이 고착 결함 메모리 셀의 고착값에 매칭된다면 정상적인 메모리 장치와 같이 동작할 수 있다.At this time, when comparing the write data of (a) with the read data of (c), it can be seen that while one bit value each in the first and second groups and the third group appears as an error due to a sticking defect, no error due to a sticking defect appears in the third memory cell of the third group and the fourth group. This is because, due to the nature of a sticking defect, if the bit value of the data to be stored is identical to the sticking value of the memory where the sticking defect has occurred, the bit value of the data can be read normally and thus cannot be regarded as an error. Therefore, even if a memory device includes a memory cell having a sticking defect, it can operate like a normal memory device if the bit value of the data to be stored matches the sticking value of the sticking defect memory cell.

그럼에도 불구하고, 통상의 메모리 장치의 경우, 임의의 데이터가 저장될 수 있어야 하므로, 도 2의 (b)와 같이 고착 결함이 발생된 메모리는 일반적으로 사용될 수 없다. 또한 저장할 데이터를 미리 확인할 수 있으며, 확인된 데이터의 값이 변경되지 않는다 할지라도, 저장하고자 하는 데이터의 비트값과 고착 결함이 발생된 메모리 셀의 고착값이 동일하지 않는다면, 메모리 장치는 해당 데이터를 저장하기 위해 사용될 수 없다.However, in the case of a typical memory device, since arbitrary data must be able to be stored, a memory in which a sticky defect occurs, as in (b) of Fig. 2, cannot be generally used. In addition, even if the data to be stored can be confirmed in advance and the value of the confirmed data does not change, if the bit value of the data to be stored and the sticky value of the memory cell in which the sticky defect occurs are not the same, the memory device cannot be used to store the data.

도 3은 일 실시예에 따른 DNN을 위한 비휘발성 메모리 장치의 개략적 구조를 나타낸다.FIG. 3 illustrates a schematic structure of a non-volatile memory device for a DNN according to one embodiment.

도 3을 참조하면, 일 실시예에 따른 DNN을 위한 비휘발성 메모리 장치(10)는 셀 어레이(11)와 메모리 컨트롤러(12), 인코더(13) 및 디코더(14)를 포함할 수 있다.Referring to FIG. 3, a nonvolatile memory device (10) for a DNN according to one embodiment may include a cell array (11), a memory controller (12), an encoder (13), and a decoder (14).

셀 어레이(11)는 다수의 메모리 셀(미도시)을 포함한다. 여기서 다수의 메모리 셀 각각은 PCM 또는 ReRAM과 같은 비휘발성 메모리 소자로 구현될 수 있으며, 다수의 메모리 셀 중 일부는 고착 결함을 가질 수 있다.The cell array (11) includes a plurality of memory cells (not shown). Here, each of the plurality of memory cells may be implemented as a nonvolatile memory element such as PCM or ReRAM, and some of the plurality of memory cells may have a stuck-on defect.

그리고 대부분의 비휘발성 메모리 소자는 데이터 처리의 효율성을 위해 다수의 메모리 셀을 포함하는 메모리 블록 단위로 데이터를 리드 또는 라이트한다. 이때 셀 어레이(11)의 다수의 메모리 블록은 각각 다수 비트로 구성된 어드레스 중 지정된 개수의 상위 비트에 의해 구분되어 선택될 수 있으며, 각 메모리 블록 내에서 다수의 메모리 셀들은 어드레스에서 나머지 하위 비트에 의해 구분되어 선택될 수 있다. 여기서 메모리 블록 내의 메모리 셀들을 선택하기 위한 어드레스의 하위 비트를 내부 블록 어드레스(intra-block address)라 한다. 즉 셀 어레이(11)에서 각 메모리 블록에 포함된 다수의 메모리 셀은 어드레스의 일부 비트로 구성된 내부 블록 어드레스에 의해 구분되어 선택될 수 있다.And most nonvolatile memory devices read or write data in memory block units including a plurality of memory cells for data processing efficiency. At this time, a plurality of memory blocks of the cell array (11) can be distinguished and selected by a specified number of upper bits among addresses each consisting of a plurality of bits, and a plurality of memory cells within each memory block can be distinguished and selected by the remaining lower bits of the address. Here, the lower bit of the address for selecting memory cells within the memory block is called an intra-block address. That is, a plurality of memory cells included in each memory block in the cell array (11) can be distinguished and selected by an intra-block address consisting of some bits of the address.

또한 메모리 장치(10)는 메모리 블록 내에서도 다수의 메모리 셀 각각에 개별적으로 내부 블록 어드레스가 할당되어 선택되도록 구성될 수도 있으나, 데이터 입출력 효율성을 위해, 지정된 개수의 메모리 셀이 하나의 내부 블록 어드레스에 의해 그룹으로 선택되도록 구성될 수 있다. 예로서 도 2의 (b)의 경우, 16개의 메모리 셀에서 구분된 4개의 그룹 각각에 포함된 4개씩 메모리 셀은 동일한 내부 블록 어드레스에 의해 선택될 수 있다.In addition, the memory device (10) may be configured so that an internal block address is individually assigned to each of a plurality of memory cells within a memory block and selected, but for data input/output efficiency, a specified number of memory cells may be configured so that they are selected as a group by one internal block address. For example, in the case of (b) of Fig. 2, four memory cells included in each of four groups distinguished from 16 memory cells may be selected by the same internal block address.

한편 메모리 장치가 DNN을 위해 이용되는 경우, 셀 어레이(11)에는 DNN 배포 모듈(20)에서 전송된 DNN의 다수의 레이어에 구비되는 다수의 가중치가 저장될 수 있다. 여기서 각 가중치는 지정된 비트수를 갖도록 양자화되어 다수의 비트값으로 구성된다.Meanwhile, when the memory device is used for DNN, a plurality of weights provided in a plurality of layers of the DNN transmitted from the DNN distribution module (20) can be stored in the cell array (11). Here, each weight is quantized to have a specified number of bits and is composed of a plurality of bit values.

또한 도시하지 않았으나, 셀 어레이(11)에는 로우 디코더나 칼럼 디코더 및 센스 앰프 등을 포함하는 주변 회로 모듈(미도시)을 더 포함하여 구성될 수 있다. 주변 회로 모듈은 메모리 컨트롤러(12)의 제어에 따라 어드레스에 의해 선택되는 메모리 블록의 메모리 셀에 라이트 전압(또는 전류)을 인가하여 저장되어야 하는 비트값을 라이트할 수 있다. 또한 주변 회로는 메모리 컨트롤러(12)의 제어에 따라 선택된 메모리 블록의 메모리 셀에 리드 전압(또는 전류)을 인가하여, 메모리 블록 내 메모리 셀의 상태에 따른 비트값을 판별하여 메모리 컨트롤러(12)로 전달할 수 있다.In addition, although not illustrated, the cell array (11) may further include a peripheral circuit module (not illustrated) including a row decoder, a column decoder, a sense amplifier, etc. The peripheral circuit module may apply a write voltage (or current) to a memory cell of a memory block selected by an address under the control of the memory controller (12) to write a bit value to be stored. In addition, the peripheral circuit may apply a read voltage (or current) to a memory cell of a memory block selected under the control of the memory controller (12) to determine a bit value according to the state of a memory cell in the memory block and transmit the determined bit value to the memory controller (12).

메모리 컨트롤러(12)는 DNN을 구성하는 다수의 레이어에 대한 가중치가 인가되면, 셀 어레이(11)에서 인가된 가중치를 저장할 메모리 블록을 어드레스에 따라 선택하고, 내부 블록 어드레스에 따라 셀 어레이(11)의 주변 회로 모듈을 제어하여 선택된 메모리 블록에 포함된 메모리 셀에 가중치의 각 비트값에 따른 라이트 전압(또는 전류)을 인가하여 가중치가 저장되도록 한다.When weights are applied to multiple layers constituting the DNN, the memory controller (12) selects a memory block in which to store the applied weights from the cell array (11) according to an address, and controls the peripheral circuit modules of the cell array (11) according to the internal block address to apply a light voltage (or current) according to each bit value of the weights to the memory cells included in the selected memory block so that the weights are stored.

또한 메모리 컨트롤러(12)는 어드레스에 따라 메모리 블록을 선택하고, 내부 블록 어드레스에 따라 주변 회로 모듈을 제어하여 선택된 메모리 블록의 메모리 셀에 리드 전압(또는 전류)를 인가한다. 그리고 셀 어레이(11)의 주변 회로 모듈이 된 리드 전압(또는 전류)에 따라 메모리 셀에서 출력되는 출력 전류(또는 전압)로부터 메모리 셀의 상태를 판별하여 비트값을 획득하면, 주변 회로 모듈에서 획득된 비트값을 인가받아 가중치를 확인할 수 있다.In addition, the memory controller (12) selects a memory block according to an address, and controls a peripheral circuit module according to an internal block address to apply a read voltage (or current) to a memory cell of the selected memory block. Then, by determining the state of the memory cell from the output current (or voltage) output from the memory cell according to the read voltage (or current) that has become the peripheral circuit module of the cell array (11), and obtaining a bit value, the bit value obtained from the peripheral circuit module can be applied to check the weight.

뿐만 아니라 메모리 컨트롤러(12)는 셀 어레이(11)에 포함된 다수의 메모리 셀 각각에 비트값을 라이트하고, 메모리 셀에 라이트된 비트값을 리드하여 고착 결함이 발생된 메모리 셀과 이의 고착값을 판별할 수 있다. 그리고 고착 결함이 발생된 메모리 셀과 고착값이 판별되고, 각 메모리 블록의 메모리 셀에 저장되어야 하는 가중치의 비트값이 확인되면, 확인된 비트값이 고착 결함이 발생된 메모리 셀의 고착값이 동일한 값으로 매치되도록 하는 보조 비트를 생성하여 인코더(13)와 디코더(14)로 각각 전송할 수 있다.In addition, the memory controller (12) can write a bit value to each of a plurality of memory cells included in the cell array (11) and read the bit value written to the memory cell to determine a memory cell in which a sticky defect has occurred and its sticky value. Then, when the memory cell in which a sticky defect has occurred and the sticky value are determined and the bit value of the weight to be stored in the memory cell of each memory block is confirmed, an auxiliary bit that matches the confirmed bit value with the sticky value of the memory cell in which the sticky defect has occurred to the same value can be generated and transmitted to the encoder (13) and the decoder (14), respectively.

메모리 컨트롤러(12)는 셀 어레이(11)에 포함된 다수의 메모리 셀 각각에 0의 비트값을 저장하고, 저장된 비트값을 리드하여 1의 고착값의 고착 결함이 발생된 메모리 셀을 판별하고, 다시 다수의 메모리 셀 각각에 1의 비트값을 저장하고 이를 리드하여 0의 고착값의 고착 결함이 발생된 메모리 셀을 판별할 수 있다.The memory controller (12) stores a bit value of 0 in each of a plurality of memory cells included in the cell array (11), reads the stored bit value to determine a memory cell in which a sticky value of 1 has occurred, and then stores a bit value of 1 in each of a plurality of memory cells and reads the stored bit value to determine a memory cell in which a sticky value of 0 has occurred.

상기한 바와 같이, 고착 결함을 갖는 메모리 셀에서는 현재 저장된 비트값이 변경되지 않으므로, 고착 결함을 갖는 메모리 셀에 저장될 가중치의 비트값과 메모리 셀의 고착값이 동일하게 매치되지 않으면, 가중치가 오류값을 갖게 된다. 그리고 이는 메모리 장치(10)를 이용하는 DNN의 연산 오류를 유발하여 DNN의 성능을 저하시키는 요인으로 작용한다.As described above, in a memory cell having a stuck-in defect, the currently stored bit value is not changed, so if the bit value of the weight to be stored in the memory cell having a stuck-in defect and the stuck-in value of the memory cell do not match identically, the weight has an error value. This causes an operation error of the DNN using the memory device (10), which acts as a factor that deteriorates the performance of the DNN.

따라서 실시예의 메모리 컨트롤러(12)는 가중치에 맵핑된 어드레스를 인코딩하여 재맵핑함으로써, 가중치의 각 비트값이 저장되는 메모리 셀이 변경되도록 한다. 이때 메모리 컨트롤러(12)는 가중치의 비트값이 고착 결함 메모리 셀의 고착값에 매칭될 수 있도록 어드레스를 변환하기 위한 보조 비트(Auxiliary Bits)를 획득하고, 획득된 보조 비트를 인코더(13)와 디코더(14)로 전송할 수 있다.Therefore, the memory controller (12) of the embodiment encodes and remaps the address mapped to the weight, thereby changing the memory cell in which each bit value of the weight is stored. At this time, the memory controller (12) can obtain auxiliary bits for converting the address so that the bit value of the weight can match the stuck value of the stuck-on fault memory cell, and transmit the obtained auxiliary bits to the encoder (13) and the decoder (14).

일반적인 메모리 장치의 경우, 임의의 데이터가 저장될 뿐만 아니라, 저장된 데이터가 항시 변경될 수 있어야 하므로, 고착 결함 메모리 셀이 확인될 지라도, 고착 결함 메모리 셀의 고착값과 저장할 데이터를 매치시키가 용이하지 않다. 그러나 실시예의 메모리 장치는 DNN의 위한 메모리 장치이고, 학습이 완료된 DNN에서 학습에 의해 결정된 가중치는 일반적으로 변경되지 않는다. 즉 고착 결함 메모리 셀의 고착값과 가중치의 비트값을 모두 확인할 수 있다. 따라서 메모리 컨트롤러(12)는 고착값과 가중치의 비트값이 최적으로 매치될 수 있도록, 가중치에 맵핑된 어드레스를 인코딩 어드레스로 변경하여 재맵핑하기 위한 보조 비트를 획득할 수 있다. 보조 비트를 획득하는 기법에 대한 상세한 설명은 후술하도록 한다.In the case of a general memory device, since not only arbitrary data can be stored, but also the stored data must be able to be changed at all times, even if a stuck-in fault memory cell is identified, it is not easy to match the stuck-in value of the stuck-in fault memory cell with the data to be stored. However, the memory device of the embodiment is a memory device for a DNN, and the weights determined by learning in a DNN where learning is completed are generally not changed. That is, both the stuck-in value of the stuck-in fault memory cell and the bit values of the weights can be identified. Therefore, the memory controller (12) can obtain an auxiliary bit for remapping by changing the address mapped to the weights into an encoding address so that the stuck-in value and the bit values of the weights can be optimally matched. A detailed description of a technique for obtaining the auxiliary bits will be described later.

인코더(13)와 디코더(14)는 실시예에서 메모리 장치(10)에 추가되는 구성으로 메모리 컨트롤러(12)와 셀 어레이(11) 사이에 위치할 수 있다.The encoder (13) and decoder (14) may be positioned between the memory controller (12) and the cell array (11) as a configuration added to the memory device (10) in the embodiment.

인코더(13)는 보조 비트에 따라 메모리 컨트롤러(12)에서 가중치에 맵핑된 어드레스를 인코딩하여 인코딩 어드레스로 변환함으로써, 가중치가 인코딩 어드레스에 재맵핑되도록 한다. 즉 인코더(13)는 어드레스에 맵핑된 메모리 블록이 인코딩 어드레스에 재맵핑되도록 하여, 셀 어레이(11)에서 가중치가 저장되는 메모리 셀이 변경되도록 한다.The encoder (13) encodes an address mapped to a weight in the memory controller (12) according to the auxiliary bit and converts it into an encoding address, thereby causing the weight to be remapped to the encoding address. In other words, the encoder (13) causes a memory block mapped to the address to be remapped to the encoding address, thereby causing the memory cell in which the weight is stored in the cell array (11) to be changed.

일 예로 인코더(13)는 보조 비트와 어드레스를 비트별 XOR 연산하여 인코딩 어드레스를 획득할 수 있다. 인코더(13)는 보조 비트와 어드레스에 대해 비트별 XOR 연산을 수행하는 다수의 XOR 게이트(미도시)로 구현될 수 있다.For example, the encoder (13) can obtain an encoded address by performing a bitwise XOR operation on the auxiliary bit and the address. The encoder (13) can be implemented with a plurality of XOR gates (not shown) that perform a bitwise XOR operation on the auxiliary bit and the address.

이때 인코더(13)에 의해 가중치에 맵핑된 어드레스의 상위 비트 위치가 변경되면, 가중치는 셀 어레이(11)에서 재맵핑되기 이전과는 다른 메모리 블록에 저장될 수 있다. 이는 다수의 가중치가 서로 다른 메모리 블록에 분산되어 저장될 수 있음을 의미하여 메모리 액세스 관점에서 비효율적이다. 그러므로 가중치는 인코더(13)에 의해 재맵핑된 인코딩 어드레스에 따라 저장되는 메모리 셀이 변경될 지라도, 동일한 메모리 블록 내의 메모리 셀에 저장되는 것이 바람직하다. 따라서 실시예에서는 보조 비트는 내부 블록 어드레스의 비트 수에 대응하는 비트수로 획득되고, 인코더(13)는 보조 비트를 이용하여 어드레스의 내부 블록 어드레스에 대해 인코딩을 수행하는 것으로 가정한다. 다만 본 실시예는 이에 한정되지 않는다.At this time, if the upper bit position of the address mapped to the weight by the encoder (13) is changed, the weight may be stored in a different memory block than before being remapped in the cell array (11). This means that a plurality of weights may be distributed and stored in different memory blocks, which is inefficient from the perspective of memory access. Therefore, it is preferable that the weights be stored in memory cells within the same memory block, even if the memory cells in which they are stored are changed according to the encoding address remapped by the encoder (13). Therefore, in the embodiment, it is assumed that the auxiliary bits are obtained as the number of bits corresponding to the number of bits of the internal block address, and the encoder (13) performs encoding on the internal block address of the address using the auxiliary bits. However, the present embodiment is not limited thereto.

한편 디코더(14)는 가중치가 인코딩 어드레스에 재맵핑되어, 인코딩 어드레스에 따라 변경된 위치의 메모리 셀이 선택되고, 선택된 메모리 셀의 상태에 따른 가중치가 주변 회로 모듈에 의해 판별되어 인가되면, 보조 비트에 따라 인코딩 어드레스를 디코딩하여 인코딩되기 이전의 어드레스로 역변환하고, 역변환된 어드레스와 판별된 가중치를 맵핑하여 메모리 컨트롤러(12)로 전달함으로써, 메모리 컨트롤러(12)가 기존과 동일한 방식으로 판별된 가중치를 처리할 수 있도록 한다.Meanwhile, the decoder (14) decodes the encoding address according to the auxiliary bit and reversely converts it to the address before encoding when the weight is remapped to the encoding address, the memory cell at the changed position is selected according to the encoding address, and the weight according to the state of the selected memory cell is determined and applied by the peripheral circuit module, and maps the reversed address and the determined weight and transfers it to the memory controller (12), thereby enabling the memory controller (12) to process the determined weight in the same manner as before.

여기서 디코더(14) 또한 인코더(13)와 유사하게 다수의 XOR 게이트를 구비하여 보조 비트와 인코딩 어드레스를 XOR 연산하여 디코딩된 어드레스를 획득할 수 있다.Here, the decoder (14) also has a number of XOR gates similar to the encoder (13) to perform an XOR operation on the auxiliary bit and the encoded address to obtain a decoded address.

도 3에서는 이해의 편의를 위하여, 인코더(13)와 디코더(14)를 메모리 컨트롤러(12)와 별개의 구성으로 도시하였으나, 인코더(13)와 디코더(14)는 메모리 컨트롤러(12)에 포함되어 구성될 수 있다.In Fig. 3, for convenience of understanding, the encoder (13) and decoder (14) are depicted as separate configurations from the memory controller (12), but the encoder (13) and decoder (14) may be configured to be included in the memory controller (12).

그리고 DNN 배포 모듈(20)은 메모리 컨트롤러(12)로 학습된 DNN의 가중치를 제공한다. DNN 배포 모듈(20)은 메모리 장치(10)의 외부에 별도로 구비된 외부 장치일 수 있다. 예로서 DNN 배포 모듈(20)은 학습된 DNN의 가중치가 저장된 다양한 저장 매체(미도시)로 구현되거나, DNN의 가중치를 메모리 컨트롤러(12)로 전송하는 통신 모듈(미도시)로 구현될 수 있다.And the DNN distribution module (20) provides the weight of the DNN learned by the memory controller (12). The DNN distribution module (20) may be an external device separately provided outside the memory device (10). For example, the DNN distribution module (20) may be implemented as various storage media (not shown) in which the weight of the learned DNN is stored, or may be implemented as a communication module (not shown) that transmits the weight of the DNN to the memory controller (12).

상기에서는 메모리 컨트롤러(12)가 보조 비트를 획득하는 것으로 설명하였으나, 대부분의 경우 메모리 장치(10)는 프로세서(미도시)와 함께 이용되며, 이 경우, 보조 비트는 메모리 장치(10)의 외부 장치인 프로세서(미도시)에서 획득되어 메모리 컨트롤러(12)로 전달될 수도 있다. 그리고 가중치는 DNN 배포 모듈(20)에서 프로세서를 통해 메모리 컨트롤러로 인가될 수도 있으며, 가중치에 맵핑된 어드레스 또한 프로세서에서 인가되도록 구성될 수도 있다.In the above, it has been described that the memory controller (12) acquires the auxiliary bit, but in most cases, the memory device (10) is used together with a processor (not shown), and in this case, the auxiliary bit may be acquired from a processor (not shown), which is an external device of the memory device (10), and transmitted to the memory controller (12). In addition, the weight may be applied from the DNN distribution module (20) to the memory controller through the processor, and the address mapped to the weight may also be configured to be applied from the processor.

도 4는 보조 비트에 따른 어드레스 재맵핑을 설명하기 위한 도면으로, 다양한 보조 비트의 값에 따라 다수의 가중치(W0 ~ W15)에 맵핑된 어드레스가 인코딩 어드레스로 재맵핑된 결과를 나타낸다.Figure 4 is a diagram for explaining address remapping according to auxiliary bits, showing the result of remapping an address mapped to a number of weights (W 0 to W 15 ) according to the values of various auxiliary bits into an encoding address.

도 4에서 초기 어드레스(Initial address)는 다수의 가중치(W0 ~ W15)에 맵핑된 어드레스를 나타내고, XOR과 함께 표시된 값은 보조 비트의 값을 나타내며, 리맵핑된 어드레스(Remapped address)는 인코딩 어드레스를 나타낸다. 여기서는 설명의 편의를 위하여 어드레스와 인코딩 어드레스에서 하위 4비트의 내부 블록 어드레스만을 표시하였으며, 보조 비트는 4비트의 내부 블록 어드레스에 따라 4비트로 구성되었다. 그리고 다수의 가중치(W0 ~ W15)는 맵핑된 어드레스에 따라 동일한 메모리 블록에 저장될 가중치들이며, 여기서는 16개의 가중치가 하나의 메모리 블록에 저장되는 경우를 도시하였다. 또한 각 가중치(W0 ~ W15)의 다수의 비트값들은 동일한 어드레스에 의해 함께 선택되는 메모리 셀 그룹에 저장되는 경우를 가정한다. 예로서 8비트로 구성된 가중치는 동일한 어드레스를 공유하여 동일 어드레스로 선택되는 8개의 메모리 셀에 저장될 수 있다.In Fig. 4, the initial address represents an address mapped to a number of weights (W 0 to W 15 ), the value displayed with XOR represents the value of the auxiliary bit, and the remapped address represents an encoding address. Here, for the convenience of explanation, only the lower 4 bits of the internal block address in the address and the encoding address are displayed, and the auxiliary bits are composed of 4 bits according to the 4-bit internal block address. In addition, the number of weights (W 0 to W 15 ) are weights to be stored in the same memory block according to the mapped address, and here, the case where 16 weights are stored in one memory block is illustrated. In addition, it is assumed that the number of bit values of each weight (W 0 to W 15 ) are stored in a group of memory cells selected together by the same address. For example, a weight composed of 8 bits can be stored in 8 memory cells selected by the same address by sharing the same address.

인코더(13)가 구비되지 않는 경우, 16개의 가중치(W0 ~ W15)는 도 4에 도시된 바와 같이, 내부 블록 어드레스에 따른 배치로 "0000"에서 "1111"의 어드레스를 갖는 메모리 셀 그룹에 저장된다. 그러나 상기한 바와 같이 인코더(13)는 어드레스의 내부 블록 어드레스와 보조 비트를 XOR 연산으로 인코딩하여, 각 가중치(W0 ~ W15)가 인코딩 어드레스에 따른 메모리 셀에 저장되도록 재맵핑한다. 이때, 보조 비트의 값은 "0000" 부터 "1111"까지 다양하게 설정될 수 있으며, 설정된 보조 비트의 값에 따라 가중치(W0 ~ W15)는 각각 저장되는 위치가 재맵핑된 메모리 셀로 변경된다.When the encoder (13) is not provided, 16 weights (W 0 to W 15 ) are stored in memory cell groups having addresses from "0000" to "1111" in an arrangement according to the internal block address, as illustrated in FIG. 4. However, as described above, the encoder (13) encodes the internal block address and auxiliary bits of the address by an XOR operation, and remaps each weight (W 0 to W 15 ) to be stored in a memory cell according to the encoding address. At this time, the value of the auxiliary bit can be variously set from "0000" to "1111", and the storage location of each weight (W 0 to W 15 ) is changed to the remapped memory cell according to the value of the set auxiliary bit.

(a)와 같이 보조 비트의 값이 "0000"인 경우, 인코딩 내부 블록 어드레스는 내부 블록 어드레스와 동일하다. 따라서 가중치(W0 ~ W15)가 저장되는 메모리 셀은 변경되지 않는다.When the value of the auxiliary bit is "0000" as in (a), the encoding internal block address is the same as the internal block address. Therefore, the memory cell where the weight (W 0 to W 15 ) is stored does not change.

그러나 (p)와 같이 보조 비트의 값이 "0000"인 경우에 인코딩 내부 블록 어드레스는 내부 블록 어드레스가 반전된 것과 동일하게 나타난다. 따라서 (p)의 경우, 16개의 가중치(W)가 (a)와 반대로 배열 순서를 갖고 저장되게 된다. 그리고 (b)는 보조 비트의 값이 "0001"인 경우로, (b)의 인코딩 어드레스를 (a)의 인코딩 어드레스와 비교하면, 16개의 가중치(W0 ~ W15)가 저장되는 메모리 셀의 위치가 2개씩 서로 교차되었음을 알 수 있다. 예로서 16개의 가중치(W0 ~ W15)가 재맵핑되기 이전에 제0 내지 제15 메모리 셀 그룹에 순차 배열로 저장된다고 가정하면, 인코딩 어드레스로 재맵핑된 이후에 제0 가중치(W0)는 제1 메모리 셀 그룹에 저장되는 반면, 제1 가중치(W1)는 제0 메모리 셀 그룹에 저장된다. 즉 저장되는 메모리 셀이 상호 교차된다.However, in the case where the value of the auxiliary bit is "0000", as in (p), the encoding internal block address appears as if the internal block address is inverted. Therefore, in the case of (p), the 16 weights (W) are stored in the arrangement order opposite to (a). In addition, in the case of (b), the value of the auxiliary bit is "0001". When the encoding address of (b) is compared with the encoding address of (a), it can be seen that the positions of the memory cells where the 16 weights (W 0 to W 15 ) are stored are interlaced by two. For example, assuming that the 16 weights (W 0 to W 15 ) are sequentially stored in the 0th to 15th memory cell groups before being remapped, the 0th weight (W 0 ) is stored in the 1st memory cell group after being remapped to the encoding address, while the 1st weight (W 1 ) is stored in the 0th memory cell group. In other words, the stored memory cells are interlaced.

따라서 내부 블록 어드레스를 인코딩하는 보조 비트의 값을 조절함으로써, 각 가중치(W0 ~ W15)가 저장되는 메모리 셀이 변경될 수 있음을 알 수 있다.Therefore, it can be seen that the memory cell in which each weight (W 0 to W 15 ) is stored can be changed by adjusting the value of the auxiliary bit encoding the internal block address.

도 5는 DNN을 위한 비휘발성 메모리 장치의 신뢰성 향상 기법의 일 예를 설명하기 위한 도면이다.Figure 5 is a diagram illustrating an example of a technique for improving the reliability of a non-volatile memory device for DNN.

도 5에서는 각 내부 블록 어드레스(00, 01, 10, 11)에 4개의 가중치(1010, 0001, 0010, 1100)이 맵핑된 경우를 도시하였으며, 도 2와 유사하게 16개의 메모리 셀 중 5개의 메모리 셀에 교착 결함이 발생된 경우를 도시하였다. 그리고 4개의 메모리 셀이 메모리 셀 그룹을 이루어 동일한 내부 블록 어드레스(00, 01, 10, 11)에 의해 선택된다.In Fig. 5, a case is illustrated where four weights (1010, 0001, 0010, 1100) are mapped to each internal block address (00, 01, 10, 11), and similarly to Fig. 2, a case is illustrated where a deadlock defect occurs in five memory cells out of 16 memory cells. In addition, four memory cells form a memory cell group and are selected by the same internal block address (00, 01, 10, 11).

도 5에서 4개의 메모리 셀 단위로 구분된 제1 그룹과 제2 그룹에서는 각각 3번째 메모리 셀과 첫번째 메모리 셀에 0 및 1의 고착값을 갖는 고착 결함이 발생하였고, 제3 그룹에서는 2번째 및 3번째 메모리 셀에 각각 0 및 1의 고착값을 갖는 고착 결함이 발생되었다. 그리고 제4 그룹에서는 4번째 메모리 셀이 1의 고착값을 갖는다.In the first and second groups divided into four memory cell units in Fig. 5, a sticking defect having sticking values of 0 and 1 occurred in the third memory cell and the first memory cell, respectively, and in the third group, a sticking defect having sticking values of 0 and 1 occurred in the second and third memory cells, respectively. And in the fourth group, the fourth memory cell had a sticking value of 1.

따라서 4개의 가중치(W)에 맵핑된 내부 블록 어드레스가 재맵핑되지 않는다면, 고착 결함이 발생된 모든 메모리 셀에서 비트값 오류가 발생하게 되므로, 5개 비트에서 오류가 발생되며, 4개의 가중치(W) 모두에 데이터 오류가 발생된다.Therefore, if the internal block address mapped to the four weights (W) is not remapped, a bit value error occurs in all memory cells where a stuck-at fault occurs, resulting in errors in five bits and data errors in all four weights (W).

그러나 4개의 가중치(W)에 맵핑된 내부 블록 어드레스가 01의 값을 갖는 보조 비트와 XOR 연산으로 인코딩되어 인코딩 내부 블록 어드레스로 재팹핑되면, 제1 내지 제3 그룹에서는 저장되는 가중치(W)의 비트값과 고착 결함이 발생된 메모리 셀의 고착값이 동일한 값으로 매치되므로 비트값 오류가 발생되지 않는다. 비록 제4 그룹에서는 재맵핑에서도 불구하고 여전히 고착값과 가중치의 비트값이 매치되지 않아 1개의 비트값 오류가 여전히 남아 있으나, 재맵핑되기 이전과 비교하여 비트값 오류가 5개에서 1개로 저감되었으며, 4개의 가중치 중 하나의 가중치에만 데이터 오류가 발생하므로 메모리 장치의 오류를 대폭 저감시켰음을 알 수 있다. 결과적으로 메모리 장치의 신뢰성을 크게 향상시킬 수 있다. 또한 DNN의 특성을 고려할 때, 다른 데이터와 달리 DNN에서는 일부 가중치에 데이터가 오류가 존재할지라도 DNN의 성능은 크게 저하되지 않을 수 있다. 따라서 메모리 장치에 고착 결함을 갖는 메모리 셀이 포함되더라도, 메모리 장치를 DNN에 사용할 수 있도록 한다.However, when the internal block address mapped to the four weights (W) is encoded with an auxiliary bit having a value of 01 and an XOR operation and re-fabricated as an encoded internal block address, the bit value of the weight (W) stored in the first to third groups and the sticky value of the memory cell where the sticky defect occurs match the same value, so no bit value error occurs. Although in the fourth group, despite the remapping, the bit value of the sticky value and the bit value of the weight still do not match, so one bit value error still remains, but compared to before the remapping, the bit value error is reduced from five to one, and since a data error occurs in only one of the four weights, it can be seen that the error of the memory device is significantly reduced. As a result, the reliability of the memory device can be greatly improved. In addition, considering the characteristics of the DNN, unlike other data, even if there is a data error in some weights in the DNN, the performance of the DNN may not be greatly degraded. Therefore, even if the memory device includes a memory cell with a sticky defect, the memory device can be used for the DNN.

도 6은 오류 비트 위치에 따른 가중치 편차를 설명하기 위한 도면이다.Figure 6 is a diagram for explaining weight deviation according to error bit position.

상기에서는 단순히 비트값 오류가 발생되는 개수가 줄어들도록 보조 비트가 설정되는 것으로 설명하였다. 그러나 DNN의 가중치와 같이 양자화된 데이터에서 비트 위치는 각 비트의 비트값보다 더 큰 영향을 미치게 된다.In the above, it was explained that auxiliary bits are set simply to reduce the number of bit value errors that occur. However, in quantized data such as the weights of DNN, the bit position has a greater influence than the bit value of each bit.

도 6에서는 179의 값을 갖는 가중치가 8비트로 양자화되어 "10110011"의 비트값을 갖는 경우를 도시하였다. 그리고 이와 같은 가중치에서 마지막 3개 비트 위치의 비트값이 고착 결함이 발생된 메모리 셀에 저장되어 비트값 오류가 나타난 경우, 비트값 오류가 발생된 개수는 3개이지만 180의 값을 가지므로 실제 가중치와의 편차(deviation)는 1이다. 그에 반해, 3번째 비트 위치에서 고착 결함이 발생된 경우, 비트값 오류가 발생된 개수는 단지 1개이지만 값은 147을 가지므로 실제 가중치와의 편차는 32이다.In Fig. 6, a case is illustrated where a weight having a value of 179 is quantized to 8 bits and has a bit value of "10110011". In addition, if the bit values of the last 3 bit positions of such a weight are stored in a memory cell where a sticky defect occurs and a bit value error occurs, the number of bit value errors is 3, but the value is 180, so the deviation from the actual weight is 1. In contrast, if a sticky defect occurs at the 3rd bit position, the number of bit value errors is only 1, but the value is 147, so the deviation from the actual weight is 32.

즉 비트값의 오류 개수보다 비트값 오류가 발생된 비트 위치가 실제 가중치에서는 더 큰 영향을 미치게 된다. 특히 상위 비트 위치에서 나타나는 비트값 오류는 하위 비트 위치의 다수의 비트값 오류보다 더 큰 영향을 미치게 된다. 따라서 보조 비트는 비트값의 오류 개수를 줄이는 것보다 상위 비트 위치의 비트값 오류를 줄일 수 있도록 설정되어야 한다.In other words, the bit position where the bit value error occurs has a greater effect on the actual weight than the number of errors in the bit value. In particular, the bit value error that occurs in the upper bit position has a greater effect than the multiple bit value errors in the lower bit position. Therefore, the auxiliary bit should be set to reduce the bit value error in the upper bit position rather than to reduce the number of errors in the bit value.

도 7은 DNN을 위한 비휘발성 메모리 장치의 신뢰성 향상 기법의 다른 예를 설명하기 위한 도면이다.Figure 7 is a diagram illustrating another example of a technique for improving the reliability of a non-volatile memory device for DNN.

도 7에서도 도 5에서와 마찬가지로 내부 블록 어드레스(00, 01, 10, 11)에 의해 4개의 메모리 셀이 그룹으로 선택되는 16개의 메모리 셀 중 5개의 메모리 셀에 동일한 교착 결함이 발생되었다. 그리고 4비트로 양자화된 4개의 가중 치(W1 = 0111, W2 = 0101, W3 = 1011, W4 = 0110)를 저장하는 경우를 도시하였다.In Fig. 7, as in Fig. 5, the same deadlock fault occurred in 5 memory cells out of 16 memory cells in which 4 memory cells were selected as a group by internal block addresses (00, 01, 10, 11). In addition, the case of storing 4 weighted values (W 1 = 0111, W 2 = 0101, W 3 = 1011, W 4 = 0110) quantized into 4 bits is illustrated.

이에 4개의 가중치(W1, W2, W3, W4)에 맵핑된 내부 블록 어드레스(00, 01, 10, 11)가 재맵핑되지 않거나 00의 값을 갖는 보조 비트와의 XOR 연산으로 재맵핑되어 저장되는 경우, 발생되는 비트 오류의 개수는 5개이고, 4개의 가중치에 각각 2, 8, 2 및 1의 편차가 발생되어 총 13(=2+8+2+1)의 편차를 갖는다.Accordingly, when the internal block address (00, 01, 10, 11) mapped to four weights (W 1 , W 2 , W 3 , W 4 ) is not remapped or is remapped and stored by XOR operation with an auxiliary bit having a value of 00, the number of bit errors that occur is 5, and deviations of 2, 8, 2, and 1 occur in the four weights, respectively, resulting in a total deviation of 13 (= 2+8+2+1).

그러나 (a)와 같이, 내부 블록 어드레스(00, 01, 10, 11)가 01의 값을 갖는 보조 비트와의 XOR 연산으로 재맵핑되면, 4개의 가중치(W1, W2, W3, W4) 중 제2 가중치(W2)가 제1 메모리 그룹에 저장되고, 제1 가중치(W1)는 제2 메모리 그룹에 저장되며, 제3 가중치(W3)는 제4 메모리 그룹에 저장되고, 제4 가중치(W4)는 제3 메모리 그룹에 저장된다. 따라서 제2 메모리 그룹과 제3 메모리 그룹에 저장되는 제1 및 제4 가중치(W1, W4)에서 2개의 비트에만 비트값 오류가 발생되고, 편차는 10(=8+2)가 된다.However, as in (a), when the internal block address (00, 01, 10, 11) is remapped by an XOR operation with an auxiliary bit having a value of 01, the second weight (W 2 ) among the four weights (W 1 , W 2 , W 3 , W 4 ) is stored in the first memory group, the first weight (W 1 ) is stored in the second memory group, the third weight (W 3 ) is stored in the fourth memory group, and the fourth weight (W 4 ) is stored in the third memory group. Therefore, bit value errors occur in only two bits of the first and fourth weights (W 1 , W 4 ) stored in the second and third memory groups, and the deviation becomes 10 (=8+2).

그리고 (b)와 같이, 내부 블록 어드레스(00, 01, 10, 11)가 10의 값을 갖는 보조 비트와의 XOR 연산으로 재맵핑되면, 4개의 가중치(W1, W2, W3, W4) 중 제3 및 제4 가중치(W3, W4)가 제1 및 제2 메모리 그룹에 저장되고, 제1 및 제2 가중치(W1, W2)는 각각 제3 및 제4 메모리 그룹에 저장된다. 따라서 제1 내지 제3 메모리 그룹에 저장되는 제1, 제3 및 제4 가중치(W1, W3, W4)에서 3개의 비트에 비트값 오류가 발생되고, 편차는 12(=2+8+2)가 된다.And as in (b), when the internal block address (00, 01, 10, 11) is remapped by an XOR operation with an auxiliary bit having a value of 10, the third and fourth weights (W 3 , W 4 ) among the four weights (W 1 , W 2 , W 3 , W 4 ) are stored in the first and second memory groups, and the first and second weights (W 1 , W 2 ) are stored in the third and fourth memory groups, respectively. Therefore, bit value errors occur in three bits in the first, third, and fourth weights (W 1 , W 3 , W 4 ) stored in the first to third memory groups, and the deviation becomes 12 (=2+8+2).

마지막으로 (c)와 같이, 내부 블록 어드레스(00, 01, 10, 11)가 11의 값을 갖는 보조 비트와의 XOR 연산으로 재맵핑되면, 4개의 가중치(W1, W2, W3, W4)가 제1 내지 제4 메모리 그룹에 역순으로 저장된다. 이에 제1 메모리 그룹에 저장되는 제4 가중치(W4)에서 1개의 비트에 비트값 오류가 발생되고, 편차는 2가 된다.Finally, as in (c), when the internal block address (00, 01, 10, 11) is remapped by an XOR operation with an auxiliary bit having a value of 11, the four weights (W 1 , W 2 , W 3 , W 4 ) are stored in the first to fourth memory groups in reverse order. Accordingly, a bit value error occurs in one bit of the fourth weight (W 4 ) stored in the first memory group, and the deviation becomes 2.

이에 보조 비트는 편차가 최소가 되는 11의 값을 갖도록 설정될 수 있다.Accordingly, the auxiliary bit can be set to have a value of 11, which minimizes the deviation.

상기한 바와 같이, 실시예에서는 보조 비트를 가능한 모든 값으로 변경하면서 비트 오류 개수와 편차를 확인하고, 편차가 최소가 되도록 하는 보조 비트를 우선 선택할 수 있으며, 편차가 최소가 되도록 하는 보조 비트가 다수개이면 비트 오류 개수를 더 적게 하는 보조 비트를 최종적으로 선택하여 설정할 수 있다.As described above, in the embodiment, the number of bit errors and the deviation can be checked while changing the auxiliary bits to all possible values, and the auxiliary bit that minimizes the deviation can be preferentially selected, and if there are multiple auxiliary bits that minimize the deviation, the auxiliary bit that minimizes the number of bit errors can be finally selected and set.

도시된 실시예에서, 각 구성들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 것 이외에도 추가적인 구성을 포함할 수 있다. 또한, 일 실시예에서, 각 구성은 물리적으로 구분된 하나 이상의 장치를 이용하여 구현되거나, 하나 이상의 프로세서 또는 하나 이상의 프로세서 및 소프트웨어의 결합에 의해 구현될 수 있으며, 도시된 예와 달리 구체적 동작에 있어 명확히 구분되지 않을 수 있다.In the illustrated embodiment, each component may have different functions and capabilities other than those described below, and may include additional components other than those described below. Furthermore, in one embodiment, each component may be implemented using one or more physically separate devices, or may be implemented by one or more processors, or a combination of one or more processors and software, and may not be clearly distinguished in specific operations, unlike the illustrated example.

그리고 도 3에 도시된 메모리 장치는 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합에 의해 로직회로 내에서 구현될 수 있고, 범용 또는 특정 목적 컴퓨터를 이용하여 구현될 수도 있다. 장치는 고정배선형(Hardwired) 기기, 필드 프로그램 가능한 게이트 어레이(Field Programmable Gate Array, FPGA), 주문형 반도체(Application Specific Integrated Circuit, ASIC) 등을 이용하여 구현될 수 있다. 또한, 장치는 하나 이상의 프로세서 및 컨트롤러를 포함한 시스템온칩(System on Chip, SoC)으로 구현될 수 있다.And the memory device illustrated in FIG. 3 can be implemented in a logic circuit by hardware, firmware, software, or a combination thereof, and can also be implemented using a general-purpose or special-purpose computer. The device can be implemented using a hardwired device, a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc. In addition, the device can be implemented as a system on chip (SoC) including one or more processors and controllers.

뿐만 아니라 메모리 장치는 하드웨어적 요소가 마련된 컴퓨팅 장치 또는 서버에 소프트웨어, 하드웨어, 또는 이들의 조합하는 형태로 탑재될 수 있다. 컴퓨팅 장치 또는 서버는 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신장치, 프로그램을 실행하기 위한 데이터를 저장하는 메모리, 프로그램을 실행하여 연산 및 명령하기 위한 마이크로프로세서 등을 전부 또는 일부 포함한 다양한 장치를 의미할 수 있다.In addition, the memory device may be installed in a computing device or server equipped with hardware elements in the form of software, hardware, or a combination thereof. The computing device or server may refer to various devices including all or part of a communication device such as a communication modem for communicating with various devices or wired/wireless communication networks, a memory for storing data for executing a program, and a microprocessor for executing a program to perform calculations and commands.

도 8은 일 실시예에 따른 DNN을 위한 메모리 장치의 신뢰성 향상 방법을 나타낸다.FIG. 8 illustrates a method for improving the reliability of a memory device for a DNN according to one embodiment.

도 2 내지 도 7을 참조하여, 도 8의 DNN을 위한 메모리 장치의 신뢰성 향상 방법을 설명하면, 우선 셀 어레이(11)의 다수의 메모리 셀 중 고착 결함이 발생된 메모리 셀과 해당 메모리 셀의 고착값을 판별한다(31). 고착 결함이 발생된 메모리 셀을 판별하기 위해서는 셀 어레이(11)의 모든 메모리 셀에 0의 비트값을 저장하고, 저장된 비트값을 리드하여 1의 비트값이 출력된 메모리 셀을 확인하고, 다시 모든 메모리 셀에 1의 비트값을 저장하고, 저장된 비트값을 리드하여 0의 비트값이 출력된 메모리 셀을 확인하여 고착 결함이 발생된 메모리 셀과 이의 고착값을 판별할 수 있다. 이때 고착 결함이 발생된 고착 결함 메모리 셀의 어드레스에 따른 위치도 함께 확인한다.Referring to FIGS. 2 to 7, a method for improving the reliability of a memory device for the DNN of FIG. 8 will be described. First, a memory cell in which a sticking defect has occurred among a plurality of memory cells of a cell array (11) and a sticking value of the corresponding memory cell are determined (31). In order to determine a memory cell in which a sticking defect has occurred, a bit value of 0 is stored in all memory cells of the cell array (11), the stored bit value is read to check a memory cell in which a bit value of 1 has been output, and a bit value of 1 is stored in all memory cells again, the stored bit value is read to check a memory cell in which a bit value of 0 has been output, thereby determining a memory cell in which a sticking defect has occurred and its sticking value. At this time, the location according to the address of the sticking defect memory cell in which the sticking defect has occurred is also determined.

그리고 DNN을 구성하는 다수의 레이어 각각에 포함되는 다수의 가중치를 획득한다(32). 여기서 가중치는 다수 비트로 양자화되어 인가되며, 저장될 메모리 셀을 나타내는 어드레스에 맵핑되어 인가될 수 있다.And a plurality of weights included in each of a plurality of layers constituting the DNN are obtained (32). Here, the weights are quantized into multiple bits and applied, and can be mapped to an address indicating a memory cell to be stored and applied.

고착 결함 메모리 셀과 가중치가 획득되면, 가중치에 맵핑된 어드레스에 보조 비트의 값을 가능한 모든 비트의 값으로 가변하면서, 가변된 보조 비트를 기반으로 어드레스를 인코딩함으로써 인코딩 어드레스를 획득한다(33). 여기서 보조 비트는 맵핑된 어드레스에서 내부 블록 어드레스의 비트수에 대응하는 비트수를 가질 수 있으며, 어드레스는 보조 비트와 XOR 연산으로 인코딩될 수 있다.When the stuck-on fault memory cell and the weight are obtained, the encoded address is obtained by varying the value of the auxiliary bit in the address mapped to the weight to all possible bit values, and encoding the address based on the varied auxiliary bit (33). Here, the auxiliary bit can have a number of bits corresponding to the number of bits of the internal block address in the mapped address, and the address can be encoded by an XOR operation with the auxiliary bit.

그리고 가변되는 모든 보조 비트 각각에 의해 획득된 인코딩 어드레스에 따라 가중치가 저장되는 변경된 메모리 셀의 위치를 확인하여, 가중치의 각 비트와 확인된 메모리 셀의 고착값을 비교한다(34).Then, the location of the changed memory cell where the weight is stored is checked according to the encoding address obtained by each of the variable auxiliary bits, and each bit of the weight is compared with the sticking value of the checked memory cell (34).

비교 결과로서, 가변되는 보조 비트에 따라 가중치의 비트값과 메모리 셀의 고착값 사이의 오차로 인해 나타나는 비트값 오류 개수와 비트값 오류로 인해 메모리 셀에 저장되는 가중치와 실제 가중치 사이의 편차를 계산한다(35)As a result of the comparison, the number of bit value errors that occur due to the error between the bit value of the weight and the fixed value of the memory cell according to the variable auxiliary bit and the deviation between the weight stored in the memory cell and the actual weight due to the bit value error are calculated (35).

보조 비트별 비트값 오류 개수와 편차가 계산되면, 계산된 편차 중 최소 편차를 나타내는 보조 비트를 검출한다(36). 그리고 동일하게 최소 편차를 나타내는 것으로 검출된 보조 비트가 다수개인지 판별한다(37). 만일 최소 편차를 나타내는 보조 비트가 다수개로 검출되면, 비트값 오류 개수를 최소로 하는 보조 비트를 검출한다(38). 그리고 검출된 보조 비트를 인가된 가중치에 맵핑된 어드레스를 인코딩하기 위한 보조 비트로 설정한다(39). 보조 비트가 설정되면, 설정된 보조 비트를 이용하여 가중치에 맵핑된 어드레스를 인코딩하여 획득되는 인코딩 어드레스를 가중치에 재맵핑한다(40). 그리고 재맵핑된 인코딩 어드레스에 따라 선택되는 메모리 셀에 가중치를 저장한다(41).When the number of bit value errors and deviations per auxiliary bit are calculated, the auxiliary bit indicating the minimum deviation among the calculated deviations is detected (36). Then, it is determined whether there are multiple auxiliary bits detected as indicating the same minimum deviation (37). If multiple auxiliary bits indicating the minimum deviations are detected, the auxiliary bit that minimizes the number of bit value errors is detected (38). Then, the detected auxiliary bit is set as an auxiliary bit for encoding an address mapped to an applied weight (39). When the auxiliary bit is set, the address mapped to the weight is encoded using the set auxiliary bit, and the obtained encoding address is remapped to the weight (40). Then, the weight is stored in a memory cell selected according to the remapped encoding address (41).

도시하지 않았으나, 인코딩 어드레스에 재맵핑되어 메모리 셀에 저장된 가중치는 리드 시에 인코딩 어드레스에 대해 다시 보조 비트를 이용하여 XOR 연산으로 디코딩함으로써, 어드레스에 맵핑되어 출력될 수 있다.Although not illustrated, the weights stored in the memory cells by being remapped to the encoding address can be output by being mapped to the address by decoding them again with an XOR operation using the auxiliary bits for the encoding address at read time.

상기한 메모리 장치의 신뢰성 향상 방법에서 보조 비트는 메모리 컨트롤러(12)에 의해 설정될 수 있다. 그러나 메모리 컨트롤러(12)가 가중치와 고착 결함 메모리 셀의 위치를 프로세서로 전달하고, 프로세서(미도시)가 편차와 비트 오류 개수를 최소화하는 보조 비트를 검출하여 메모리 컨트롤러(12)로 전달할 수도 있다.In the above method for improving the reliability of a memory device, the auxiliary bit may be set by the memory controller (12). However, the memory controller (12) may transmit the weight and the location of the stuck-on fault memory cell to the processor, and the processor (not shown) may detect the auxiliary bit that minimizes the deviation and the number of bit errors and transmit it to the memory controller (12).

도 8에서는 각각의 과정을 순차적으로 실행하는 것으로 기재하고 있으나 이는 예시적으로 설명한 것에 불과하고, 이 분야의 기술자라면 본 발명의 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 8에 기재된 순서를 변경하여 실행하거나 또는 하나 이상의 과정을 병렬적으로 실행하거나 다른 과정을 추가하는 것으로 다양하게 수정 및 변형하여 적용 가능하다.Although FIG. 8 describes each process as being executed sequentially, this is merely an example, and those skilled in the art may change the order described in FIG. 8 without departing from the essential characteristics of the embodiments of the present invention, or may modify and change the order described in FIG. 8 in various ways, such as executing one or more processes in parallel, or adding other processes.

이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.Although the present invention has been described in detail above through representative examples, those skilled in the art will understand that various modifications and equivalent other embodiments are possible. Therefore, the true technical protection scope of the present invention should be determined by the technical idea of the appended claims.

10: 메모리 장치 11: 셀 어레이
12: 메모리 컨트롤러 13: 인코더
14: 디코더 20: DNN 배포 모듈
10: Memory device 11: Cell array
12: Memory controller 13: Encoder
14: Decoder 20: DNN deployment module

Claims (20)

다수의 메모리 셀을 구비하는 셀 어레이; 및
저장될 메모리 셀을 지정하는 어드레스에 각각 맵핑된 다수의 가중치를 인가받고, 다수의 비트 구성된 보조 비트를 기반으로 상기 어드레스를 인코딩하여 획득된 인코딩 어드레스를 상기 가중치에 재맵핑하며, 상기 다수의 메모리 셀 중 상기 인코딩 어드레스에 따라 선택된 메모리 셀에 상기 가중치를 저장하는 메모리 컨트롤러를 포함하되,
상기 보조 비트는 상기 가중치가 저장되는 메모리 셀이 상기 인코딩 어드레스에 따라 선택되는 메모리 셀로 변경되어, 상기 다수의 메모리 셀 중 저장된 값이 고착값으로 고정되어 고착 결함이 발생된 고착 결함 메모리 셀의 고착값과 상기 가중치의 비트값이 매치되도록 설정되는 DNN을 위한 메모리 장치.
A cell array having a plurality of memory cells; and
A memory controller is included, which receives a plurality of weights each mapped to an address designating a memory cell to be stored, encodes the address based on auxiliary bits composed of a plurality of bits, remaps the obtained encoding address to the weights, and stores the weights in a memory cell selected according to the encoding address among the plurality of memory cells.
A memory device for a DNN in which the auxiliary bit is changed so that the memory cell in which the weight is stored is selected according to the encoding address, and the stored value among the plurality of memory cells is fixed as a stuck value, so that the stuck value of a stuck-on defective memory cell in which a stuck-on defect occurs matches the bit value of the weight.
제1항에 있어서, 상기 메모리 컨트롤러는
상기 어드레스와 상기 보조 비트를 비트별 XOR 연산하여 상기 인코딩 어드레스를 획득하는 DNN을 위한 메모리 장치.
In the first paragraph, the memory controller
A memory device for a DNN that obtains the encoded address by performing a bitwise XOR operation on the above address and the auxiliary bit.
제1항에 있어서, 상기 보조 비트는
상기 인코딩 어드레스에 따라 선택된 다수의 메모리 셀에 저장되는 상기 다수의 가중치 각각의 비트값과 상기 고착 결함 메모리 셀의 고착값이 동일한 값으로 매치되지 않아 발생되는 비트값 오류의 개수가 최소가 되도록 설정되는 DNN을 위한 메모리 장치.
In the first paragraph, the auxiliary bit is
A memory device for a DNN, wherein the number of bit value errors that occur because the bit values of each of the plurality of weights stored in the plurality of memory cells selected according to the encoding address and the stickiness value of the stickiness fault memory cell do not match as the same value is set to a minimum.
제1항에 있어서, 상기 보조 비트는
상기 인코딩 어드레스에 따라 선택된 다수의 메모리 셀에 저장되는 상기 다수의 가중치 각각의 비트값과 상기 고착 결함 메모리 셀의 고착값이 동일한 값으로 매치되지 않아 발생되는 비트값 오류에 의해 상기 메모리 셀에 저장된 값과 상기 가중치 사이의 편차가 최소가 되도록 설정되는 DNN을 위한 메모리 장치.
In the first paragraph, the auxiliary bit is
A memory device for a DNN, wherein the deviation between the values stored in the memory cells and the weights is set to be minimal due to a bit value error that occurs when the bit value of each of the plurality of weights stored in the plurality of memory cells selected according to the encoding address and the stickiness value of the stickiness defective memory cell do not match as the same value.
제4항에 있어서, 상기 보조 비트는
상기 메모리 셀에 저장된 값과 상기 가중치 사이의 편차가 최소인 보조 비트가 다수개이면, 더 작은 개수의 비트값 오류가 발생되도록 설정되는 DNN을 위한 메모리 장치.
In the fourth paragraph, the auxiliary bit is
A memory device for a DNN, wherein a smaller number of bit value errors occur when there are a plurality of auxiliary bits having a minimum deviation between the value stored in the memory cell and the weight.
제1항에 있어서, 상기 다수의 메모리 셀은
저장된 데이터가 일괄하여 리드되는 크기인 메모리 블록으로 구분되고,
상기 보조 비트는
상기 어드레스의 다수의 비트 중 상기 메모리 블록 내에 포함된 다수의 메모리를 구분하여 선택하는 내부 블록 어드레스의 비트 개수에 대응하는 비트 개수를 갖는 DNN을 위한 메모리 장치.
In the first paragraph, the plurality of memory cells
The stored data is divided into memory blocks of a size that is read in batches.
The above auxiliary bits are
A memory device for a DNN having a number of bits corresponding to the number of bits of an internal block address for distinguishing and selecting a number of memories included in the memory block among a number of bits of the above address.
제1항에 있어서, 상기 메모리 컨트롤러는
상기 다수의 메모리 셀 중 저장된 값이 고정된 고착 결함이 발생된 메모리 셀의 어드레스를 검출하고, 검출된 메모리 셀의 고착값을 판별하는 DNN을 위한 메모리 장치.
In the first paragraph, the memory controller
A memory device for a DNN that detects an address of a memory cell in which a stuck-in defect has occurred, wherein a stored value is fixed among the plurality of memory cells, and determines the stuck-in value of the detected memory cell.
제1항에 있어서, 상기 메모리 컨트롤러는
상기 인코딩 어드레스에 따라 선택된 메모리 셀에 저장된 가중치를 리드하는 경우, 상기 가중치에 재맵핑된 상기 인코딩 어드레스를 상기 보조 비트를 기반으로 디코딩하여 상기 어드레스에 다시 맵핑하는 DNN을 위한 메모리 장치.
In the first paragraph, the memory controller
A memory device for a DNN that decodes the encoding address remapped to the weight based on the auxiliary bit and remaps it to the address when reading the weight stored in the memory cell selected according to the encoding address.
제1항에 있어서, 상기 다수의 메모리 셀은
상변이 메모리(Phase Change Memory: 이하 PCM) 소자 또는 ReRAM(Resistive Random-Access Memory) 소자 중 하나로 구현되는 DNN을 위한 메모리 장치.
In the first paragraph, the plurality of memory cells
A memory device for DNN implemented with either a phase change memory (PCM) device or a resistive random-access memory (ReRAM) device.
제1항에 있어서, 상기 다수의 가중치는
심층 신경망(Deep Neural Network: DNN)에 다수의 레이어 각각에 포함되어 신경망 연산에 이용되고, 학습에 의해 미리 결정된 값을 갖는 DNN을 위한 메모리 장치.
In the first paragraph, the plurality of weights are
A memory device for a deep neural network (DNN) that is included in each of the multiple layers and used for neural network operations and has values that are predetermined through learning.
다수의 메모리 셀을 구비하는 셀 어레이 및 메모리 컨트롤러를 포함하는 메모리 장치의 신뢰도 개선 방법으로서,
저장될 메모리 셀을 지정하는 어드레스에 각각 맵핑된 다수의 가중치를 획득하는 단계;
다수의 비트 구성된 보조 비트를 기반으로 상기 어드레스를 인코딩하여 획득된 인코딩 어드레스를 상기 가중치에 재맵핑하는 단계; 및
상기 다수의 메모리 셀 중 상기 인코딩 어드레스에 따라 선택된 메모리 셀에 상기 가중치를 저장하는 단계를 포함하되,
상기 보조 비트는 상기 가중치가 저장되는 메모리 셀이 상기 인코딩 어드레스에 따라 선택되는 메모리 셀로 변경되어, 상기 다수의 메모리 셀 중 저장된 값이 고착값으로 고정되어 고착 결함이 발생된 고착 결함 메모리 셀의 고착값과 상기 가중치의 비트값이 매치되도록 설정되는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
A method for improving the reliability of a memory device including a cell array having a plurality of memory cells and a memory controller,
A step of obtaining a plurality of weights, each mapped to an address specifying a memory cell to be stored;
A step of remapping the encoded address obtained by encoding the address based on auxiliary bits composed of a plurality of bits to the weight; and
A step of storing the weight in a memory cell selected according to the encoding address among the plurality of memory cells,
A method for improving the reliability of a memory device for a DNN, wherein the auxiliary bit is changed to a memory cell selected according to the encoding address in which the memory cell in which the weight is stored is fixed as a stuck value among the plurality of memory cells, and the stuck value of a stuck-on defective memory cell in which a stuck-on defect has occurred matches the bit value of the weight.
제11항에 있어서, 상기 재맵핑하는 단계는
상기 어드레스와 상기 보조 비트를 비트별 XOR 연산하여 상기 인코딩 어드레스를 획득하는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
In the 11th paragraph, the remapping step
A method for improving the reliability of a memory device for a DNN that obtains the encoded address by performing a bitwise XOR operation on the above address and the auxiliary bit.
제11항에 있어서, 상기 보조 비트는
상기 인코딩 어드레스에 따라 선택된 다수의 메모리 셀에 저장되는 상기 다수의 가중치 각각의 비트값과 상기 고착 결함 메모리 셀의 고착값이 동일한 값으로 매치되지 않아 발생되는 비트값 오류의 개수가 최소가 되도록 설정되는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
In the 11th paragraph, the auxiliary bit is
A method for improving the reliability of a memory device for a DNN, wherein the number of bit value errors that occur because the bit values of each of the plurality of weights stored in the plurality of memory cells selected according to the encoding address and the stickiness value of the stickiness defective memory cell do not match as the same value is set to a minimum.
제11항에 있어서, 상기 보조 비트는
상기 인코딩 어드레스에 따라 선택된 다수의 메모리 셀에 저장되는 상기 다수의 가중치 각각의 비트값과 상기 고착 결함 메모리 셀의 고착값이 동일한 값으로 매치되지 않아 발생되는 비트값 오류에 의해 상기 메모리 셀에 저장된 값과 상기 가중치 사이의 편차가 최소가 되도록 설정되는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
In the 11th paragraph, the auxiliary bit is
A method for improving the reliability of a memory device for a DNN, wherein the deviation between the values stored in the memory cells and the weights is set to be minimal due to a bit value error that occurs when the bit value of each of the plurality of weights stored in the plurality of memory cells selected according to the encoding address and the stickiness value of the stickiness defective memory cell do not match as the same value.
제14항에 있어서, 상기 보조 비트는
상기 메모리 셀에 저장된 값과 상기 가중치 사이의 편차가 최소인 보조 비트가 다수개이면, 더 작은 개수의 비트값 오류가 발생되도록 설정되는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
In the 14th paragraph, the auxiliary bit is
A method for improving the reliability of a memory device for a DNN, wherein a smaller number of bit value errors occur when there are a plurality of auxiliary bits having a minimum deviation between the value stored in the memory cell and the weight.
제11항에 있어서, 상기 다수의 메모리 셀은
저장된 데이터가 일괄하여 리드되는 크기인 메모리 블록으로 구분되고,
상기 보조 비트는
상기 어드레스의 다수의 비트 중 상기 메모리 블록 내에 포함된 다수의 메모리를 구분하여 선택하는 내부 블록 어드레스의 비트 개수에 대응하는 비트 개수를 갖는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
In the 11th paragraph, the plurality of memory cells
The stored data is divided into memory blocks of a size that is read in batches.
The above auxiliary bits are
A method for improving the reliability of a memory device for a DNN having a number of bits corresponding to the number of bits of an internal block address for distinguishing and selecting a number of memories included in the memory block among a number of bits of the above address.
제11항에 있어서, 상기 신뢰도 개선 방법은
상기 가중치를 획득하는 단계 이전, 상기 다수의 메모리 셀 중 저장된 값이 고정된 고착 결함이 발생된 메모리 셀의 어드레스를 검출하고, 검출된 메모리 셀의 고착값을 판별하는 단계를 더 포함하는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
In the 11th paragraph, the reliability improvement method
A method for improving the reliability of a memory device for a DNN, further comprising, prior to the step of obtaining the weights, the step of detecting an address of a memory cell in which a stuck-in defect has occurred, wherein a stored value is fixed among the plurality of memory cells, and determining the stuck-in value of the detected memory cell.
제11항에 있어서, 상기 신뢰도 개선 방법은
상기 가중치를 저장하는 단계 이후, 상기 인코딩 어드레스에 따라 선택된 메모리 셀에 저장된 가중치를 확인하고, 확인된 가중치를 재맵핑된 상기 인코딩 어드레스를 상기 보조 비트를 기반으로 디코딩하여 상기 어드레스에 다시 맵핑하는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
In the 11th paragraph, the reliability improvement method
A method for improving the reliability of a memory device for a DNN, wherein after the step of storing the weights, the weights stored in the selected memory cells according to the encoding address are checked, and the checked weights are remapped to the encoding address by decoding the remapped weights based on the auxiliary bits.
제11항에 있어서, 상기 다수의 메모리 셀은
PCM 소자 또는 ReRAM 소자 중 하나로 구현되는 DNN을 위한 메모리 장치의 신뢰도 개선 방법.
In the 11th paragraph, the plurality of memory cells
A method for improving the reliability of a memory device for DNNs implemented with either PCM devices or ReRAM devices.
제11항에 있어서, 상기 다수의 가중치는
DNN에 다수의 레이어 각각에 포함되어 신경망 연산에 이용되고, 학습에 의해 미리 결정된 값을 갖는 DNN을 위한 비휘발성 메모리 장치의 신뢰도 개선 방법.
In the 11th paragraph, the plurality of weights are
A method for improving the reliability of a non-volatile memory device for a DNN, which is included in each of a plurality of layers of the DNN and used for neural network operations and has values determined in advance by learning.
KR1020220151328A 2022-11-14 2022-11-14 Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof Active KR102773892B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220151328A KR102773892B1 (en) 2022-11-14 2022-11-14 Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220151328A KR102773892B1 (en) 2022-11-14 2022-11-14 Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof

Publications (2)

Publication Number Publication Date
KR20240070026A KR20240070026A (en) 2024-05-21
KR102773892B1 true KR102773892B1 (en) 2025-02-26

Family

ID=91320562

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220151328A Active KR102773892B1 (en) 2022-11-14 2022-11-14 Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof

Country Status (1)

Country Link
KR (1) KR102773892B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037246B1 (en) 2016-07-25 2018-07-31 Cadence Design Systems, Inc. System and method for memory control having self writeback of data stored in memory with correctable error

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101633048B1 (en) * 2010-02-25 2016-06-24 삼성전자주식회사 Memory system and data processing method thereof
US11183266B2 (en) * 2019-06-26 2021-11-23 Micron Technology, Inc. Apparatuses and methods for repairing defective memory cells based on a specified error rate for certain memory cells
KR102356126B1 (en) 2019-09-02 2022-01-27 한국과학기술원 Method for Estimating Read Reference Voltages for Flash Storage Using Neural Network and Apparatus Therefore
US11507443B2 (en) * 2020-04-10 2022-11-22 Micron Technology, Inc. Memory fault map for an accelerated neural network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037246B1 (en) 2016-07-25 2018-07-31 Cadence Design Systems, Inc. System and method for memory control having self writeback of data stored in memory with correctable error

Also Published As

Publication number Publication date
KR20240070026A (en) 2024-05-21

Similar Documents

Publication Publication Date Title
US8510633B2 (en) Semiconductor storage device and method of operating the same
US20030023928A1 (en) Manufacturing test for a fault tolerant magnetoresistive solid-state storage device
US20230012648A1 (en) Selective and Dynamic Deployment of Error Correction Code Techniques in Integrated Circuit Memory Devices
TWI652685B (en) Self-identifying memory errors
US12072762B2 (en) Error-handling management during copyback operations in memory devices
US11475969B2 (en) Scan optimization using data selection across wordline of a memory array
US12272412B2 (en) Performing selective copyback in memory devices
KR20140113100A (en) Non-volatile memory device and data management method thererof
US20250004645A1 (en) Copyback clear command for performing a scan and read in a memory device
US20250284589A1 (en) Memory compaction management in memory devices
US11830545B2 (en) Data programming techniques to store multiple bits of data per memory cell with high reliability
KR102773892B1 (en) Non-Volatile Memory Device for Deep Neural Network and method for improving reliability thereof
US20240185924A1 (en) Pass voltage adjustment for program operation in a memory device with a defective deck
US20240185931A1 (en) Program verify compensation in a memory device with a defective deck
US20240185934A1 (en) Program verify compensation by sensing time modulation in a memory device with a defective deck
US20240220110A1 (en) Multi-tier health status in a memory device
JP2009043384A (en) Nonvolatile magnetic memory device and its driving method
US11687248B2 (en) Life time extension of memory device based on rating of individual memory units
US12164779B2 (en) Deck based media management operations in memory devices
US20240185935A1 (en) Bitline voltage adjustment for program operation in a memory device with a defective deck
US20250069683A1 (en) Flexible address swap column redundancy
US12315574B2 (en) Auto-calibrated corrective read
US20240282399A1 (en) Optimizing read error handling in a memory sub-system
US20230307058A1 (en) Pre-read operation for multi-pass programming of memory devices
US20240086104A1 (en) Data sensing with error correction

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20221114

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20240719

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20250220

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20250224

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20250224

End annual number: 3

Start annual number: 1

PG1601 Publication of registration