IndexFiguresTables |
Myung-in Kim♦ and Jeong-seok Ha°Selective AN Code Design for Correcting Computation Errors and Mis-Decoding Detection in Process-in-MemoryAbstract: This work proposes a selective AN coding scheme for correcting errors which happen during computations in the process-in-memory devices. AN codes are error-correcting codes which encode the message data by multiplying a positive integer A to them. AN codes correct errors by mapping the division remainders of the erroneous coded data divided by A to the error patterns in the look-up-table. This paper proposes an AN coding scheme which selectively determines different error-correcting capabilities according to the significancy of computational results. At first, the proposed work defines the set of bit-lines with high significance as the correctable set. Then, it identifies conditions which ensure the correction and the mis-decoding detection for the error patterns inside and outside of the correctable set, respectively. The proposed AN coding scheme enables more flexible code design for a given noisy environment compared to the existing static AN coding scheme. Additionally, in terms of the storage capacity, a more efficient decoder implementation is possible compared to the ABN coding scheme which is known suitable for flexible code design. Keywords: PIM , AN codes , weight matrix , look-up-table , correctable set , mis-decoding 김명인♦, 하정석°메모리 내 컴퓨팅의 연산 오류 정정 및 비-복호 감지를 위한 선택적 AN 부호 설계요 약: 본 논문은 메모리 내 컴퓨팅 장치의 연산 과정에서 발생하는 오류를 정정하고 비-복호 (mis-decoding) 현상을감지할 수 있는 선택적 AN 부호의 설계 방식을 제안하였다. AN 부호는 메시지 데이터에 양의 정수 A를 곱하여부호화하는 오류정정부호이다. 이 부호는 오류가 발생한 부호화 데이터를 A로 나눈 나머지와 오류 패턴 사이의순람표를 통해 오류를 색출하여 정정한다. 본 논문에서는 주어진 오류 환경에 따라 선택적으로 AN 부호를 설계하는 방법을 제안하였다. 먼저, 중요도가 높은 비트 라인들을 묶어서 정정 가능 집합으로 정의하고 이 집합 내에서발생하는 오류 패턴들을 고칠 수 있으며 정정 가능 집합 외의 비트라인에서 발생한 오류 패턴의 비-복호를 감지할수 있는 AN 부호 설계 조건을 제안하였다. 제안한 선택적 (selective) AN 부호 설계 방식은 기존의 정적 (static) AN 부호 방식과 비교하여 오류 환경에 따른 유연한 설계가 가능하다. 또한, 마찬가지로 유연한 부호 설계가 가능한 기존의 ABN 부호보다 저장공간 측면에서 더 효율적으로 복호기 구현이 가능하다. 키워드: PIM, AN 부호, 가중치 행렬, 순람표, 정정 가능 집합, 비-복호 Ⅰ. 서 론메모리 내 컴퓨팅 (Process-In-Memory, PIM)은 메모리 내에서 연산 처리의 일부를 수행할 수 있는 기술로 최근 인공지능 기술의 발전에 따른 고속 대용량 처리를 위한 해결책으로 주목받고 있다[1]. 이를 구현하기 위해 저항 변화 메모리 (resistive random access memory, ReRAM)와 같은 저항성 메모리 장치 (memristive device)를 크로스바 어레이 (crossbar array) 형태로 배치하여 다층 신경망 (multi-layer perceptron, MLP), 합성곱 신경망 (convolutional neural network, CNN)과 같은 다양한 인공지능 알고리즘에서 요구하는 행렬 연산을 수행할 수 있다[2]. 그러나, 메모리 셀에서 발생하는 열잡음 (thermal noise), 산탄 잡음 (shot noise), random telegraph noise (RTN), stuck-at-fault와 같은 다양한 오류 요인에 의해 행렬 연산 결과의 신뢰도가 저하되는 문제가 발생한다[3]. 오류정정부호는 메모리 셀에 데이터를 부호화하여 저장함으로써 위와 같은 요인들로 인해 발생한 오류를 정정할 수 있는 기술이다[4]. 그러나 PIM 장치에서는 기존의 메모리 시스템과 달리 각 메모리 셀에 저장된 데이터가 아니라 행렬 연산 결과를 읽어온다. 따라서, 이 행렬 연산 결과가 부호어로 표현될 수 있어야 한다는 조건이 PIM을 위한 적절한 부호의 선택에 필요하다. PIM 장치 내부의 행렬 연산 결과는 크로스바 어레이의 각 행에 저장된 데이터의 선형 결합으로 표현할 수 있다. 따라서, 크로스바 어레이의 각 행에 선형성을 가지는 부호의 부호어를 저장하면 행렬 연산 결과 역시 부호어로 표현할 수 있으므로 연산 과정에서 발생한 오류를 정정할 수 있다. 그러나, 저장장치 시스템에서 일반적으로 사용되는 BCH (Bose-Chauduri-Hocquenghem)[5]나 저밀도 패리티 검사 부호 (low-density parity-check codes, LDPC)[6] 부호와 같은 선형 부호들은 유한체 (finite field) 위에서 모듈로 (modulo) 연산을 기반으로 설계되었다. 그러므로 이러한 유한체 위에서 정의된 부호를 사용하면, PIM의 행렬 연산 결과가 부호어가 되기 위해 모듈로 연산이 이루어지므로 연산 결과의 정보가 손실되는 문제가 발생한다. AN 부호는 정수 형태의 데이터에 A라는 정수를 곱하여 부호화시키는 부호로 부호화된 데이터들을 더하더라도 A의 배수 형태, 즉 선형성이 유지되고 모듈로 연산이 아닌 정수 집합에서 정의된 연산이 이루어지기 때문에 연산 결과의 정보가 손실되지 않는다. 이러한 이유로 AN 부호는 PIM에서 이루어지는 행렬 연산 오류를 정정하는데 적합한 부호이다[7-9]. AN 부호는 오류가 발생한 부호화된 데이터가 A로 나누어 떨어지지 않을 때 오류의 발생 여부를 탐지할 수 있다. 또한, 오류가 발생한 부호화 데이터를 A로 나눠서 나올 수 있는 나머지와 오류 패턴 사이의 관계를 정리한 순람표 (look-up table, LUT)를 통해 오류를 정정할 수 있다. 기존의 PIM 설계 방식에 적용하였던 AN 부호화 방식은 크게 static AN[8]과 ABN-X[9]로 구분할 수 있다. 먼저, static AN은 오류 요인이나 저장한 데이터와 상관없이 고정된 형태의 오류 패턴이 발생할 때 고칠 수 있도록 순람표를 설계한 AN 부호 기술이다[8]. ABN-X는 static 방식과 달리 크로스바 어레이에 저장된 데이터의 형태나 RTN과 같은 오류를 발생시키는 요인들을 고려하여 연산 결과에 크게 영향을 미치는 오류 패턴을 선택적으로 고칠 수 있도록 순람표를 설계한 부호이다[9]. 그러나 PIM 구조에서는 행렬 정보를 저장하는 크로스바 어레이마다 저장되는 데이터의 형태가 다르므로 연산 결과에 주로 영향을 미치는 오류 패턴도 달라진다. 따라서 ABN-X를 구현하기 위해서는 각 크로스바 어레이에 해당하는 순람표를 행렬 정보를 저장할 때마다 개별적으로 생성하여 저장해야한다. 본 논문에서는 static AN 부호의 비탄력적인 설계 방식 및 ABN-X의 낮은 저장공간 효율성을 개선하기 위한 선택적 AN 부호 설계 방식을 제안하였다. 먼저, 정정하기 위한 정확도 범위의 오류 패턴의 집합을 정정 가능 집합으로 정의하고 이 오류 패턴을 고치기 위한 AN 부호 설계 조건을 명시하였다. 또한, 다른 부호어로 복호되는 현상인 비-복호 (mis-decoding) 현상을 감지하기 위한 조건을 수학적으로 정의하고 AN 부호 설계 조건에 추가하였다. 제안한 AN 부호 설계 방식은 오류 환경에 따라 요구되는 오류 정정 능력을 만족시킬 수 있는 A를 선택할 수 있어 탄력적인 설계가 가능하고 비-복호 현상을 방지할 수 있다. 또한, 크로스바 어레이에 저장된 데이터와 무관하게 AN 부호를 설계하므로 모든 크로스바 어레이에 같은 순람표를 사용할 수 있어 저장공간 효율성 문제를 개선할 수 있다. Ⅱ. 저항성 메모리 기반 행렬 연산 방식본 논문의 신경망 구조 내의 행렬 연산을 구현하기 위한 저항성 메모리를 기반으로 한 크로스바 어레이 구조는 ISAAC을 참고로 하였으며 그림 1과 같다[10]. 입력 벡터와 가중치 행렬 사이의 행렬 연산을 수행하기 위해서는 먼저, 각 데이터를 해당하는 인가전압 및 셀 상태로 변환시켜 주어야 한다. 예를 들어, (1)의 입력 행벡터와 가중치 행렬 사이의 연산을 비트 수준이 1인 셀로 구성된 크로스바 어레이 구조로 구현한다고 가정해 보자.
(1)[TeX:] $$\left[\begin{array}{llll} 1 & 1 & 0 & 1 \end{array}\right] \times\left[\begin{array}{ll} 3 & 0 \\ 0 & 3 \\ 3 & 3 \\ 2 & 1 \end{array}\right]$$입력 벡터는 그림 1의 디지털-아날로그 변환기에 의해 데이터에 비례하는 전압으로 변환되어 각 워드라인(word line, WL)에 인가된다. 가중치 행렬의 원소의 최댓값은 3이므로 각 원소를 비트 수준이 1인 셀 하나에 저장할 수 없다. 이를 해결하기 위해, 비트-슬라이싱 (bit-slicing) 기법을 이용하여 각 행렬 원소를 두 개의 비트로 분할하여 두 개의 셀에 각각 저장한다. 비트-슬라이싱 기법이란 가중치 행렬의 각 원소가 하나의 셀로 표현할 수 없는 경우 이를 워드 라인 내의 여러 개의 연속된 셀에 중요도에 따라 나누어 저장하는 방식이다[10]. 각 비트 라인 (bit line, BL) 하단에서 읽어온 전류의 데이터는 그 비트 라인에 존재하는 저항에 흐르는 전류의 합에 비례한다. 따라서, 아날로그-디지털 변환기의 양자화 간격을 1이 저장된 cell에 1의 데이터에 해당하는 전압을 가해줬을 때 흐르는 전류의 세기로 두고 각 비트라인 하단에 흐르는 전류 를 측정하여 양자화시키면 입력 벡터와 해당 비트라 인에 존재하는 셀에 저장된 데이터의 내적값을 그림 1 과 같이 계산할 수 있다. 그 이후, shift & add unit을 통해 각 비트라인에서 연산된 결과를 비트 중요도를 고려하여 가중치를 두고 결합하여 원하는 행렬 연산 의 결과를 얻을 수 있다. Ⅲ. 저항 변화 메모리 오류 모델저항 변화 메모리로 이루어진 크로스바 어레이에서는 열잡음, 산탄 잡음, RTN과 같은 오류 요인들이 행렬 연산 결과에 영향을 미친다. 열잡음의 경우 각 셀에 흐르는 전하의 열 교란 현상 때문에 발생하는 오류 요인이다. 이러한 열잡음은 평균이 0, 분산이 [TeX:] $$4 K_B T f G$$과 같은 가우시안 (Gaussian) 분포를 따르는 전류의 세기로 모델링 가능하다[3]. 산탄 잡음도 동일하게 가우시안 분포를 따르는 전류의 세기로 모델링 가능하고, 평균은 0, 분산은 2qGVf와 같다[3,11]. 여기서 [TeX:] $$K_B$$는 볼츠만 (Boltzmann) 상수, T는 온도, f는 동작 빈도수, G는 셀의 컨덕턴스, q는 기본 전하량, 그리고 V는 워드 라인에 가해주는 인가전압을 의미한다. RTN은 전류가 셀에 흐를 때 전자가 일시적으로 소자에 갇히는 현상 때문에 발생한다. 이는 셀의 유효 저항값을 감소시키는 효과를 발생시키므로 전압을 가해주었을 때 셀에 흐르는 전류의 세기를 일시적으로 증가시킨다[12,13]. 이 외에도 stuck-at-fault나 IR drop과 같은 다른 오류 요인들도 존재하지만 본 논문에서는 기존의 AN 부호를 PIM에 적용한 결과와[9] 제안한 방식과의 성능 비교를 위해서 열잡음, 산탄 잡음, RTN 만을 고려하여 셀에 흐르는 전류의 오류를 모델링하였다. 이러한 오류 요인들로 인한 전류 잡음은 그림 1과 같은 크로스바 어레이에서 각 비트라인 하단에서 합해진 후 아날로그-디지털 변환기에 의해 양자화되어 정수 형태의 오류로 변환된다. Ⅳ. AN 부호 설계 방식4.1 AN 부호의 부호화 및 복호 과정AN 부호는 정수 형태의 메시지 데이터에 정수 A를 곱하여 부호화하기 때문에, 부호화된 데이터를 더하더라도 A의 배수 형태를 유지하여 선형성을 가지는 부호로 알려져 있다[8]. AN 부호에 의해 부호화된 데이터에 오류가 발생했을 때, 이를 정정하기 위한 복호 AN 부호는 정수 형태의 메시지 데이터에 정수 A를 곱하여 부호화하기 때문에, 부호화된 데이터를 더하더라도 A의 배수 형태를 유지하여 선형성을 가지는 부호로 알려져 있다[8]. AN 부호에 의해 부호화된 데이터에 오류가 발생했을 때, 이를 정정하기 위한 복호 [TeX:] $$\hat{n}$$과 대응시킨 후 Ax+n에서 대응된 [TeX:] $$\hat{n}$$을 빼준다. 마지막으로, 본래의 데이터 x를 얻기 위해 최종 결과 [TeX:] $$A x+(n-\hat{n})$$을 A로 나누어준다. 4.2 기존 AN 부호화를 통한 행렬 연산 오류 정정AN 부호화된 가중치 행렬의 각 원소는 한 셀에 저장할 수 있는 비트의 수를 고려하여, 비트-슬라이싱 기법을 이용하여서 한 워드 라인 내의 여러 개의 셀에 나누어 연속적으로 저장한다. 이 때, 각 비트라인에서의 연산 결과의 중요도가 차이가 나기 때문에 그 중요도를 반영한 형태의 오류를 정정할 수 있는 AN 부호의 설계가 필요하다. 가령, static AN 부호의 경우에는 각 비트라인에서 발생한 ±1 오류 패턴에 중요도를 반영한 형태의 오류를 고칠 수 있도록 순람표를 설계한다[8]. 예를 들어, 가중치 심벌을 A=19인 AN 부호로 부호화하여 9비트로 변환하고 비트 수준이 1인 셀에 저장하였다고 가정하자. ±1 오류 패턴에 중요도를 반영한 [TeX:] $$\pm 2^k(k \in\{0,1, \ldots, 8\})$$ 오류 패턴은 19로 나누었을 때 나올 수 있는 0이 아닌 모든 나머지와 일대일 대응이 가능하다. 따라서, A=19인 static AN 부호는 표 1과 같이 순람표를 설계하여 모든 단일 ±1 오류 패턴을 정정할 수 있다. 그러나 상대적으로 중요도가 떨어지는 비트라인에서 발생하는 ±1 오류의 경우 실제 연산 결과에 영향을 미치는 정도가 다. 또한, 기존의 static AN 부호 관련 논문에서는 두 개 이상의 비트라인에서 발생하는 ±1 오류를 고칠 수 있는 부호를 구체적으로 설계하는 방법에 대한 설명이 없다[8]. 표(Table) 1. 비트 수준이 1인 셀에서 A=19인 static AN 부호의 순람표 (Look-up table for the static AN codes for A=19 and the single-bit level cell)
ABN-X 부호는 이를 해결하기 위해 크로스바 어레이에 저장된 데이터, 비트의 중요도, 그리고 각 비트라인의 오류 발생 확률을 고려하여 다수의 비트라인에서 발생하는 오류 패턴도 정정하도록 설계한 AN 부호 방식이다[9]. ABN-X는 먼저, 단일 및 다수의 비트라인에서 발생하는 오류 패턴들의 연산 결과에 미치는 영향력을 측정할 수 있는 점수 함수 (score function)을 정의하였다. 그리고, 이 점수 함수가 큰 오류 패턴부터 순차적으로 순람표에 추가하여 AN 복호기가 연산 결과에 크게 영향을 미칠 수 있는 오류 패턴을 특정화하여 고칠 수 있도록 하였다. Static AN 부호와 ABN-X 부호는 모두 발생한 오류 패턴이 다른 오류 패턴으로 고쳐지는 비-복호 현상이 발생할 수 있다. 비-복호 현상이란 발생한 오류 패턴이 A로 나누었을 때 같은 나머지 값을 가지는 순람표에 존재하는 다른 오류 패턴으로 복호되는 현상을 의미한다. 이러한 비-복호 현상은 오류를 정정하지 않았을 때와 비교하여 오히려 연산 오류의 정도를 증가시킬 가능성이 존재한다. 기존의 AN 부호화 방식에서는 비-복호로 인한 오류를 감지하기 위해 정수 A뿐만 아니라 B라는 정수를 곱하여 저장한다[9]. 복호과정에서는 연산 결과를 A로 나눈 나머지로 복호를 진행한 후 결과를 B로 나눈 나머지 값이 0이 나오지 않는 경우 비-복호가 발생했다고 판단한다. 이 경우에는 복호 결과를 원래 오류가 발생했던 연산 결과로 되돌린다. 실제 PIM 구조에서는 인공 신경망의 한 계층의 가중치 행렬의 행 또는 열의 크기가 각각 단위 크로스바 어레이의 행 또는 열의 크기보다 큰 경우가 발생한다. 이 경우에는 계층별 단위 가중치 행렬을 다수의 크로스바 어레이에 나누어 저장한다[10]. 또한, 열잡음 및 RTN이 발생한 셀의 전류의 잡음의 세기는 셀에 저장된 데이터의 값에 따라 다르다. 그러므로 ABN-X의 부호화 방식을 실제 PIM 구조에 구현하기 위해서는 각 크로스바 어레이마다 저장되는 가중치 행렬의 데이터 특성을 고려하여 순람표도 개별적으로 생성되어야 한다. 또한, 이렇게 생성된 개별적인 순람표를 저장할 수 있는 공간이 필요하다. 그리고 모든 패턴의 비-복호 현상을 항상 B로 나눈 나머지로 감지하는 것은 불가능하므로 평균적으로 연산 오류에 영향을 크게 미치는 비-복호 오류 패턴을 선택적으로 감지할 수 있도록 A를 설정해야 한다. 4.3 제안한 AN 부호화 방식본 논문에서는 비트라인의 중요도를 고려하여 오류를 정정할 수 있는 비트라인을 미리 설정하고, 그 비트라인 내에서 발생하는 단일 ±1 오류 및 다중 ±1 오류를 정정할 수 있는 AN 부호를 설계하였다. 아래에서는 제안한 부호의 설계 조건을 설명하기 위해 사용할 기본적인 용어를 정의하려고 한다. 먼저, 비트라인의 위치를 나타내는 숫자들의 집합에서 중요도가 높은 비트라인을 나타내는 일부 원소들을 택하여 모은 부분집합을 정정 가능 집합 (correctable set) C로 정의한다. 그리고, C의 여집합 즉, 정정 대상이 아닌 비트라인의 위치를 나타내는 숫자들의 집합을 N이라 하자. 그리고 오류 패턴을 나타내는 집합 [TeX:] $$E_1^C, E_2^C, E_2^{C, N}, E_1^N, E_2^N$$을 다음과 같이 정의한다.
(3)[TeX:] $$\begin{aligned} & E_2^C=\left\{2^i+2^j: i \neq j \in C\right\} \\ & \cup\left\{2^i-2^j: i \neq j \in C\right\} \\ & \cup\left\{-2^i-2^j: i \neq j \in C\right\} \end{aligned}$$
(4)[TeX:] $$\begin{aligned} & E_2^{C, N}=\left\{2^i+2^j: i \in C, j \in N\right\} \\ & \cup\left\{2^i-2^j: i \in C, j \in N\right\} \\ & \cup\left\{-2^i+2^j: i \in C, j \in N\right\} \\ & \cup\left\{-2^i-2^j: i \in C, j \in N\right\} \end{aligned}$$
(6)[TeX:] $$\begin{aligned} & E_2^N=\left\{2^i+2^j: i \neq j \in N\right\} \\ & \cup\left\{2^i-2^j: i \neq j \in N\right\} \\ & \cup\left\{-2^i-2^j: i \neq j \in N\right\} \end{aligned}$$여기서 (2), (5)의 [TeX:] $$E_1^C, E_1^N$$은 각각 C와 N내에서 정의된 단일 ±1 오류 패턴을 나타낸 집합이고, (3), (6)의 [TeX:] $$E_2^C, E_2^N$$은 각각 C와 N내에서 정의된 2개의 ±1 오류 패턴을 나타낸 집합이다. (4)의 [TeX:] $$E_2^{C,N}$$은 2개의 ±1 오류 패턴 중에서 하나는 C, 하나는 N내에서 정의된 집합이다. 4.3.1 단일 ±1 오류 정정 AN 부호 단일 ±1 오류를 정정할 수 있는 부호의 경우 부호화에 사용하는 A를 선택 및 그에 적합한 순람표를 설계할 때, 다음 두 가지 조건을 만족하도록 한다. 먼저, [TeX:] $$E_1^C$$내의 원소들은 모두 고칠 수 있는 오류 패턴이어야 한다. 그렇게 하기 위해서는 [TeX:] $$E_1^C$$내의 오류 패턴들 사이에는 복호과정에서 비-복호가 발생하지 않아야 한다. 이를 수식으로 표현하면 아래의 조건 1과 같다. 조건 1. [TeX:] $$E_1^C$$내의 원소들은 모듈로 A로 같지 않다. 두 번째로, 비-복호 방지를 위해 사용하는 B가, 정정 대상이 아닌 N의 비트라인에서 발생하는 오류 패턴이 C에서 발생하는 오류 패턴으로 비-복호되는 것을 전부 감지할 수 있어야 한다. 이는 조건 2와 같이 표현할 수 있다. 조건 2. [TeX:] $$E_1^N$$의 임의의 원소 [TeX:] $$e_n$$에 대해, 만약 [TeX:] $$e_n=e_c(\bmod A)$$을 만족시키는 [TeX:] $$e_c \text{ 가 } E_1^C$$에 존재하면, [TeX:] $$e_n \neq e_c(\bmod B)$$을 만족시켜야 한다. 예를 들어, 16비트의 메시지를 A=37, B=3으로 부호화하여 생성된 총 23비트를 비트 수준이 1인 셀들에 연달아 저장한다고 가정하자. 정정 가능 집합 C를 [TeX:] $$\{6,7, \ldots, 22\}$$로 정했을 때, 나올 수 있는 [TeX:] $$\pm 2^i$$ 오류 패턴들을 A=37로 나누면 그 나머지들이 서로 다르므로 첫 번째 조건을 만족한다. 또한, 정정 가능 집합의 여집합 N={0,1,2,3,4,5}에서 나올 수 있는 +1 오류 패턴 중 하나인 25은 모듈로 A로 같은 오류 패턴이 순람표에 없어서 비-복호가 일어나지 않고, -25 역시 대칭성에 의해 모듈로 A로 같은 오류 패턴이 순람표에 존재하지 않는다. 나머지 +1 오류 패턴들의 집합인 [TeX:] $$\left\{2^4, 2^3, 2^2, 2^1, 2^0\right\}$$이 C에서 나올 수 있는 오류 패턴 [TeX:] $$\left\{-2^{22},-2^{21},-2^{20},-2^{19},-2^{18}\right\}$$과 모듈로 A로 같으나 오류 정정 시 발생하는 비-복호 오류 패턴인 [TeX:] $$\left\{2^4+2^{22}, 2^3+2^{21}, 2^2+2^{20}, 2^1+2^{19}, 2^0+2^{18}\right\}$$가 전부 B로 나누어떨어지지 않기 때문에 이를 감지할 수 있다. -1 오류 패턴인 [TeX:] $$\left\{-2^4,-2^3,-2^2,-2^1,-2^0\right\}$$도 대칭성 때문에 [TeX:] $$\left\{2^{22}, 2^{21}, 2^{20}, 2^{19}, 2^{18}\right\}$$와 모듈로 A로 같으나 나올 수 있는 모든 비-복호 오류 패턴이 전부 B로 나누어떨어지지 않기 때문에 이를 감지할 수 있다. 4.3.2 다중 ±1 오류 정정 AN 부호 다중 ±1 오류 정정 AN 부호의 경우에는 2개의 비트라인에서 발생한 ±1 오류를 고칠 수 있는 부호를 설계하였다. 다중 ±1 오류 정정 AN 부호도 단일 ±1 오류 정정 AN 부호와 마찬가지로 첫 번째 조건으로는, 발생하는 모든 단일 ±1 및 2개의 ±1 오류 패턴은 모듈로 A로 같지 않아야 한다. 2개의 ±1 오류 패턴 중에서 하나는 C , 하나는 N에서 발생한 [TeX:] $$E_2^{C,N}$$내의 오류 패턴의 경우, C에서 선택한 단일 ±1 오류 패턴의 중요도가 더 높으므로 이 값으로 근사시킬 수 있다. 따라서, [TeX:] $$E_2^{C,N}$$내의 오류 패턴도 단일 ±1 오류 패턴으로 간주하고 정정 대상으로 포함한다. 예를 들어, 3.1절의 예제에서 2개의 오류 패턴이 [TeX:] $$2^4+2^{17}$$으로 발생하였을 때 17번째 비트라인에서 발생한 ±1 오류의 중요도가 더 높기 때문에 217으로 근사시킬 수 있다. 고쳐야 할 오류 패턴을 모아놓은 집합인 [TeX:] $$E^C$$을 [TeX:] $$E_1^C \cup E_2^C \cup E_2^{C, N}$$로 정의하면 첫 번째 조건은 다음과 같이 표현할 수 있다. 조건 1. [TeX:] $$E^C$$내의 원소들은 모듈로 A로 같지 않다. 두 번째 조건도 단일 ±1 오류 정정 AN 부호와 마찬가지로 의 비트라인에서 발생하는 오류 패턴이 C에서 발생하는 오류 패턴으로 비-복호되는 것을 B로 감지할 수 있어야 한다. N의 비트라인에서 발생하는 오류 패턴의 집합인 [TeX:] $$E^N \text { 을 } E_1^N \cup E_2^N$$으로 정의하면 이 조건은 다음과 같이 표현할 수 있다. 조건 2. [TeX:] $$E^N$$의 임의의 원소 [TeX:] $$e_n$$에 대해, 만약 [TeX:] $$e_n=e_c(\bmod A)$$을 만족시키는 [TeX:] $$e_c$$가 [TeX:] $$E^C$$에 존재하면, [TeX:] $$e_n \neq e_c(\bmod B)$$을 만족시켜야 한다. 4.3.3 AN 부호 구성 방법 각 비트라인의 중요도는 하나의 셀에 저장하는 비트의 수 및 부호화된 데이터의 크기에 따라 결정된다. 따라서, 셀 레벨 및 데이터의 크기에 따라 조건 1, 조건2를 만족시키는 A,B 및 정정 가능 집합의 조합이 달라진다. 정해진 데이터의 크기 및 셀 레벨에서 조건1, 조건2를 만족시키는 A와 B 및 정정 가능 집합을 찾은 경우 조건 1의 오류 패턴 집합 (단일 ±1 오류 정정 부호의 경우 [TeX:] $$E_1^C,$$ 다중 ±1 오류 정정 부호의 경우 [TeX:] $$E^C$$) 내의 원소들을 로 나눈 나머지와 각각 대응시켜 복호기의 순람표를 형성한다. ±1 오류를 정정하는 데 필요한 A의 크기는 ±1 오류의 개수에 따라 기하급수적으로 증가한다. [TeX:] $$\left(A=O\left(n^k\right), k: \pm 1\right.$$ 오류 발생한 비트라인 개수, n: 단위 부호화 가중치 심벌당 필요한 셀의 개수) 메모리 저장공간은 일반적으로 높은 부호율을 가지는 부호를 요구하기 때문에 정정할 수 있는 ±1 오류의 개수에는 한계가 있다. 반면, 오류 발생 확률의 경우에는 ±1 오류 개수가 증가함에 따라 기하급수적으로 감소한다. [TeX:] $$\left(O\left(p^k\right), k: \pm 1\right.$$ 오류 발생한 비트라인 개수, p: 단위 비트라인에서 ±1 오류 발생 확률) 따라서, 본 논문에서는 발생 빈도수가 높은 단일 혹은 2개의 비트라인에서 발생한 ±1 오류를 고칠 수 있는 AN 부호만 고려하였다. Ⅴ. 시뮬레이션 결과제안한 AN 부호의 오류 정정 성능을 평가하기 위해 MNIST 데이터 집합의 분류 정확도를 평가 기준으로 사용하였다. 학습 모델은 계층의 개수가 3인 MLP1[14]을 사용하였다. 해당 학습 모델의 입력 유닛의 개수는 MNIST 데이터의 각 샘플의 픽셀 수인 784, 2개의 은닉 계층의 유닛의 개수는 각각 500, 150이고, 출력 유닛의 개수는 숫자를 분류하기 위해 10으로 설정되어 있다. 입력 벡터의 각 원소는 MNIST 데이터가 0과 255 사이에 분포하고 있으므로 8비트로 양자화하였고, 이를 통해 입력 벡터를 8개의 이진 입력 벡터로 나누었다. 나머지 계층에서는 이전 계층에서의 연산 결과 중 중요도가 높은 순으로 16비트의 정보만을 가져와서 행렬 연산에 사용하였다. 각 계층에서의 가중치 행렬의 경우 ISAAC 및 기존의 AN 부호에서 수행한 방식과 같게 16비트로 양자화하였다[10]. 학습된 가중치 행렬은 AN 부호로 부호화하여 저항 변화 메모리로 이루어진 크로스바 어레이에 저장하도록 시뮬레이션하였다. 오류 모델링에 사용된 변수들은 표 2의 값들을 사용하였다. 여기서, [TeX:] $$R_{L O} \text { 와 } R_{H I}$$는 각각 셀이 가질 수 있는 최소 저항값과 최대 저항값을 의미한다. [TeX:] $$\frac{\Delta R}{R}$$은 RTN에 의해서 감소되는 저항값의 변화량과 본래 저항값 사이의 비율을 나타낸다. [TeX:] $$\frac{\Delta R}{R}$$는 R의 선형함수 형태로 나타나므로 aR+b와 같이 표현할 수 있다[3,13]. [TeX:] $$R_{L O} \text { 와 } R_{H I}$$의 [TeX:] $$\frac{\Delta R}{R}$$값을 이용해서 a와 b를 구하고 [TeX:] $$R_{L O} \text { 와 } R_{H I}$$사이에 있는 레벨의 저항값의 [TeX:] $$\frac{\Delta R}{R}$$를 구하여 RTN에 의해 영향받은 셀의 저항값을 구하였다. 비트 수준이 1 또는 2 정도로 낮은 셀에서는 저항 마진 (resistance margin)이 충분히 크기 때문에 분류 정확도에 영향을 줄 정도의 오류가 발생하지 않아 각 셀에 저장할 수 있는 비트의 수는 3으로 설정하였다. 표(Table) 2. 오류 모델링 매개 변수 (Parameters of the error modeling)
표 3은 static AN 부호, 제안한 AN 부호, 부호화를 사용하지 않은 경우, 그리고 오류가 발생하는 메모리 장치가 아닌 software에서 구한 MNIST 데이터 분류 실패율을 시뮬레이션한 결과의 값들이다. 표 3의 제안한 AN 부호의 경우 A=395, B=3을 이용하여 각 계층의 가중치 행렬을 부호화하였고 C={6,7,8}, N={0,1,2,3,4,5}으로 설정하여 2개의 ±1오류까지 정정할 수 있도록 설계하였다. 표 3을 보면 static 부호는 비-복호 현상에 의해 발생하는 오류로 인해 부호를 사용하지 않았을 때 결과보다 더 높은 분류 실패율을 보여준다. 제안한 AN 부호의 경우 부호를 걸지 않았을 때와 static 부호의 결과보다 더 낮은 분류 실패율을 얻으면서 ABN-X의 경우보다도 더 낮은 분류 실패율을 보인다. ABN-X는 제안한 AN 부호화 방식과 동일한 A 및 B를 사용하였으므로 부호화된 데이터를 저장하는데 필요한 셀의 개수는 같다. 그러나, 제안한 AN 부호화 방식은 순람표를 크로스바 어레이마다 생성하여 저장할 필요가 없이 하나의 순람표만 사용하기 때문에 ABN-X 부호화 방식과 비교해서 저장효율 면에서 더 우수한 측면을 보인다. 표(Table) 3. MNIST 데이터 분류 실패율 (Misclassification rate of the MNIST data)
표 4는 표 2의 매개 변수에서 더 높은 잡음 환경을 만들기 위해 [TeX:] $$R_{L O}$$에 대한 [TeX:] $$\frac{\Delta R}{R}$$값을 0.042까지 올리고 RTN 발생 확률을 0.37까지 올렸을 때 구한 MNIST 데이터 분류 실패율이다. 표 4의 제안한 AN 부호의 경우에는 더 강한 오류 정정 성능의 AN 부호를 사용하기 위해 A=533로 증가시키고, C={1,2,3,4,5,6,7,8}, N={0}으로 설정하였다. 표 4의 결과를 통해 제안한 AN 부호는 중요도가 상대적으로 낮은 비트 라인들도 정정 가능 집합에 포함하여 더 강한 오류정정부호를 설계함으로써 더 잡음이 심한 환경에서도 표 3의 결과와 비슷한 정도의 분류 실패율을 얻을 수 있다. 또한 오류에 크게 영향을 미치는 비-복호 패턴을 확정적으로 감지할 수 있으므로 동일한 A 및 B를 사용한 ABN-X 부호보다도 더 낮은 분류 실패율을 보인다. Ⅵ. 결 론본 논문에서는 저항 변화 메모리로 이루어진 PIM 구조에서 디바이스 환경에서 요구되는 오류 정정 능력에 따라 선택적으로 설계할 수 있는 AN 부호를 제안하였다. 제안한 AN 부호 설계 방식은 한정된 저장 공간에서 연산장치를 구현해야 하는 PIM 구조 내부에서 효율적인 오류 정정 방식으로 이용할 수 있을 것으로 기대된다. 또한, 본 AN 부호 설계 방식은 저항 변화 메모리뿐만 아니라 스핀 전달 토크형 자기 저항 메모리 (STT-MRAM)와 같이 다른 저항성 메모리로 구성된 PIM 구조에도 응용할 수 있다. 제안한 부호화 방식은 현재 저항성 메모리 기반 PIM 구조의 한계점 중 하나인 낮은 신뢰도의 연산 결과를 효율적으로 정정할 수 있는 오류정정부호로 사용될 수 있을 것으로 기대된다. BiographyBiographyReferences
|
StatisticsCite this articleIEEE StyleM. Kim and J. Ha, "Selective AN Code Design for Correcting Computation Errors and Mis-Decoding Detection in Process-in-Memory," The Journal of Korean Institute of Communications and Information Sciences, vol. 49, no. 1, pp. 104-112, 2024. DOI: 10.7840/kics.2024.49.1.104.
ACM Style Myung-in Kim and Jeong-seok Ha. 2024. Selective AN Code Design for Correcting Computation Errors and Mis-Decoding Detection in Process-in-Memory. The Journal of Korean Institute of Communications and Information Sciences, 49, 1, (2024), 104-112. DOI: 10.7840/kics.2024.49.1.104.
KICS Style Myung-in Kim and Jeong-seok Ha, "Selective AN Code Design for Correcting Computation Errors and Mis-Decoding Detection in Process-in-Memory," The Journal of Korean Institute of Communications and Information Sciences, vol. 49, no. 1, pp. 104-112, 1. 2024. (https://doi.org/10.7840/kics.2024.49.1.104)
|