나르지 말고 그 자리에서 하자 — 메모리에 계산을 시켰더니 질문이 여섯 개 남았다
상점에서 산 D램 칩 256개
상점에서 파는 DDR4 D램 칩 256개를 사다가, 제조사가 지원하지 않는 방식으로 명령 순서를 집어넣은 연구가 있다. 칩들은 시키지 않은 일을 했다. NOT 연산을 평균 98.37%의 성공률로 해냈고, 입력을 열여섯 개까지 받는 NAND·NOR·AND·OR를 각각 평균 94.94%·95.87%·94.94%·95.85%의 성공률로 해냈다. 데이터 패턴을 무작위로 바꾸면 성공률이 1.39~1.98% 떨어졌고, 온도를 섭씨 50도에서 95도까지 올려도 흔들림은 최대 1.66%였다 (DOI: 10.1109/hpca57654.2024.00030, 상용 칩 실측).
가장 중요한 낱말은 98.37이 아니라 「성공률」이다. 계산하라고 만든 적 없는 부품에 계산을 시키면 결과에 그 말이 붙는다.
통념은 이렇다. 컴퓨터에는 계산하는 부분과 담아 두는 부분이 따로 있고 그 사이로 데이터가 오간다 — 폰노이만 구조다. 그러니 빠르게 하려면 나르는 길을 넓히면 된다. 이 시리즈의 앞 다섯 편이 전부 그 길 공사였다. 메모리를 프로세서 옆에 쌓아 올렸고, 두 면 사이에 아무것도 끼우지 않고 직접 붙였고, 하나의 칩을 조각내 붙였고, 바닥을 유리로 바꾸고 빛을 칩 옆에 앉혔고, 전기를 웨이퍼 뒷면으로 돌렸다.
이 편은 그 전제를 뒤집는 제안이다. 길을 넓히는 대신, 계산을 데이터가 있는 자리로 보내자는 것.
눈금을 맞춰 두자. 이 편의 근거는 네 층위가 섞여 있고 그 넷은 같은 자로 잰 값이 아니다 — ⓐ 상용 칩을 두드려 본 것, ⓑ 회로 덩어리를 잰 것, ⓒ 칩 전체나 실물 시스템에서 잰 것, ⓓ 시뮬레이터와 모형으로 계산한 것. 라벨은 논문이 아니라 문장에 붙인다. 그리고 「N배 빠르다」의 기준선이 논문마다 다르다 — CPU인가, GPU인가, 디지털 가속기인가, 같은 종류의 이전 기법인가. 매번 밝힌다.
이 분야가 즐겨 쓰는 「와트당 몇 테라 연산(TOPS/W)」은 몇 비트로 계산했는지를 밝히지 않으면 비교가 아니다. 뒤에서 보겠지만 같은 회로가 1비트에서 117.3, 16비트에서 2.06을 낸다. 57배 차이가 기술이 아니라 눈금에서 나온다.
1950년대에 이미 있던 생각
더들리 벅이라는 사람이 1950년대에 「인식 장치」를 제안했다. 저장해 둔 내용 자체로 무언가를 찾아내는 장치였고, 이것이 내용주소 메모리로 이어진다. 1960년대에는 「분산 논리 메모리」가 나왔고, 1990년대에 메모리 벽이 화제가 됐을 때 EXECUBE와 IRAM으로 한 번 더 돌아왔다. 그리고 가라앉았다 (DOI: 10.18130/q5ar-1c61, 학위논문의 기술사 연구).
메모리 벽은 계산 장치는 계속 빨라지는데 메모리에서 데이터를 실어 오는 속도가 따라오지 못해, 계산이 아니라 기다림이 성능을 정하게 된 상태다. 주방을 아무리 키워도 재료를 실어 오는 수레가 한 대뿐이면 저녁 장사의 속도는 수레가 정한다.
이 생각을 정리한 개관 논문은 오늘의 시스템이 데이터를 계산 쪽으로 옮기도록 설계돼 있다고 적고, 옮기는 일이 에너지와 지연 양쪽에서 계산보다 훨씬 비싸다고 적는다. 해법은 데이터가 저장된 자리 안에 또는 그 곁에 계산 장치를 두는 것 — 메모리 칩 안, 3D 적층 구조의 논리층, 메모리 컨트롤러다 (arXiv:1905.04376v1, 개관·입장 논문). 여기서 이름 두 개가 갈라진다.
인메모리 컴퓨팅은 데이터를 연산기로 실어 오는 대신, 데이터가 이미 놓여 있는 메모리 안에서 계산을 끝내는 방식이다. 창고에서 재료를 주방으로 실어 나르는 대신, 창고 안에 조리대를 들여놓는 일이다. 수레가 병목이었다면 수레를 키우는 것보다 이쪽이 낫다 — 창고 안에 조리대를 놓을 자리가 있다면.
니어메모리 처리는 메모리 배열 자체는 건드리지 않고, 그 배열 바로 옆에 작은 연산 회로를 붙여 데이터가 칩 밖으로 나가기 전에 계산을 끝내는 방식이다. 창고 안까지는 못 들어가고 창고 문 앞에 조리대를 놓는 것이다. 선반에서 문까지의 거리는 그대로지만, 문에서 주방까지의 먼 길을 안 가도 된다.
같은 개관 논문이 굴러갈 만한 갈래로 꼽은 것이 이 둘이다 — D램의 아날로그 동작으로 메모리 안에서 대규모 병렬 연산을 하는 것, 그리고 3D 적층 메모리의 논리층으로 그 안의 연산 회로에 넓은 길을 대 주는 것. 뒤쪽은 마지막 절에서 다시 나온다.
어떤 일이 맞는지는 이 시리즈가 가르쳐 준 값으로 잰다 — 바이트당 연산량, 메모리에서 1바이트 실어 올 때마다 그 데이터로 계산을 몇 번이나 하는지를 센 값이다. 한 상자로 한 접시만 만드는 식당은 주방을 넓혀도 소용이 없다.
창고 문 앞에 조리대를 놓다
2015년의 한 논문은 D램 소자를 새로 만들지 않았다. 상용 D램과 표준 모듈을 그대로 쓰고, 실리콘 관통 전극 — 칩을 위아래로 꿰뚫어 만든 수직 배선 — 을 넣어 그 위에 가속기를 3차원으로 얹은 것이 변경의 거의 전부였다. 결과는 같은 가속기 로직을 프로세서 안에 집어넣은 시스템과 견줘 적었다. 전체 에너지 46% 감소, 데이터 전송 에너지 68% 감소, 성능 1.67배 (DOI: 10.1109/hpca.2015.7056040, 설계와 평가). 기준선이 CPU도 GPU도 아니라 같은 가속기의 다른 위치라는 점이 이 숫자를 값지게 만든다.
여기서 낱말 하나가 필요하다. 뱅크는 메모리 칩 하나를 여러 조각으로 나눠, 조각마다 따로 열고 닫을 수 있게 만든 구획이다. 큰 서고를 여러 열람실로 나눠 놓은 것과 같다. 열람실마다 사서가 따로 있어서 한 곳이 책을 꺼내는 동안 다른 곳도 동시에 일한다. 니어메모리 처리는 대개 이 뱅크 바로 옆에 연산기를 붙인다.
그리고 실물이 나왔다. UPMEM이라는 회사가 상용 D램 배열과 범용 순차 코어를 한 칩에 담은 모듈을 팔았고, 연구자들이 640개와 2,556개의 코어를 가진 두 실물 시스템에서 열여섯 개 작업을 돌려 봤다. 그전까지 이 분야의 평가는 시뮬레이션이거나 잘해야 단순화된 시제품이었다 (DOI: 10.1109/access.2022.3174101, 실물 시스템 측정).
상용 부품을 그대로 쓴다는 것은 그 부품의 규칙도 따른다는 뜻이다. 여기서부터가 청구서다.
D램은 뱅크 전체를 한꺼번에 깨워야 병렬성이 최대가 되는데, 그러면 순간 전력이 시스템의 한계를 넘을 수 있다 — 언어모델 추론용으로 이런 소자를 여러 장 쌓을 때 특히 그렇다. 전력 제약을 지키려면 뱅크를 하나씩 깨운 뒤에야 전체 명령을 내보낼 수 있고 그동안 빈 사이클이 생긴다. 이 논문은 명령 큐를 분리해 전체 활성화를 기다리지 않게 만들어, A100 GPU 대비 2.03~3.33배, 뱅크를 차례로 깨우는 방식 대비 1.11~1.52배, 그리고 동시 활성화 방식 대비 최대 전력 21.3~41.7% 감소를 보고한다 (DOI: 10.23919/date64628.2025.10992691, 설계와 평가).
상용 인메모리 부품이 뭘 못 하는지 가장 또렷하게 적은 문장은 이것이다 — 시판 중인 HBM-PIM 플랫폼은 명령어 집합이 제한적이고 네이티브 합산 명령이 없다. 곱한 결과를 메모리 안에서 합쳐 줄 전용 명령이 없다는 뜻이다. 그래서 저자들은 합산 단계가 없는 외적 방식으로 데이터 흐름을 다시 짰고, 삼성 Aquabolt-XL의 의사 채널 하나에서 최대 14.9 GFLOP/s(사이클당 59.4번)를 실측했다 (DOI: 10.1145/3801487.3806067, 상용 하드웨어 측정).
이 절에서 가장 무거운 문장이 있다. 3D 적층 D램의 밑판 위에 연산기를 얹는 방식을 파고든 2019년 연구는, 자기 플랫폼에서 8비트 정수 행렬-벡터 곱을 돌려 뱅크 전체 방식 406%, 뱅크별 방식 35.2%의 향상을 얻었다고 적는다 — 기준선은 CPU가 아니라 외부 D램의 대역폭을 전부 쓴다고 가정하고 피연산자를 읽어 오기만 했을 때다. 그러고는 덧붙인다. 3D 적층 메모리의 밑판 위에 올린 연산기의 성능은 어떤 경우에도 그 대역폭이 주는 것보다 좋을 수 없다 (DOI: 10.1109/access.2019.2924240).
문 앞에 조리대를 놓아도 선반에서 문까지의 폭은 그대로다.
메모리가 스스로 논리를 푼다
2016년의 한 논문은 D램 안에서 한 행을 통째로 다른 행에 복사하는 방법을 적었다. 칩 밖으로는 한 바이트도 나오지 않는다. 같은 논문의 두 번째 기법은 메모리 안에서 대량의 AND와 OR를 수행하는 것인데, 둘 다 D램이 값을 읽을 때 실제로 일어나는 아날로그 동작을 그대로 이용한다. 그전까지 메모리 인터페이스가 할 수 있는 일은 읽기와 쓰기뿐이었다 (DOI: 10.48550/arxiv.1610.09603).
여기서 하는 일에 이름이 있다. 비트 단위 연산은 아주 긴 비트열 두 줄을 통째로 겹쳐 놓고, 자리마다 같은 논리 규칙을 한꺼번에 적용하는 일이다. 체크리스트 두 장을 겹쳐 놓고 「둘 다 체크된 칸」만 골라내는 일이라고 보면 된다. 데이터베이스가 조건에 맞는 행을 거를 때, 그래프에서 이웃 집합을 교차시킬 때, 유전체를 맞춰 볼 때가 전부 이 모양이다.
이 글을 연 256개의 칩이 한 일이 그것이었다. 그런데 상용 D램은 이 동작을 공식적으로 지원하지 않는다. 성공률이라는 말이 붙은 이유가 여기 있다. 제조사가 권고한 타이밍 밖에서 칩을 몰아붙이니 잡음과 공정 산포에 노출되고, 그래서 일부 컬럼만 제대로 동작한다. 한 연구팀이 이 문제를 잡았다 — 명령 순서를 정교하게 짜면 최대 32개의 행을 동시에 열 수 있음을 발견했고, 같은 입력을 여러 벌 복제해 성공률을 올렸다. 두 대형 제조사의 상용 DDR4 칩 120개에서, 일곱 가지 산술·논리 연산에 대해 선행 기법 대비 성공률이 24.18%, 성능이 121% 높았다 (DOI: 10.48550/arxiv.2312.02880, 상용 칩 실측).
낸드 플래시에서도 같은 일이 일어난다. 한 연구는 한 번의 감지로 수십 개의 피연산자를 처리하는 방식과 오류를 줄이는 프로그래밍을 함께 넣고 실물 3D 낸드 칩 160개로 동작을 확인했다. 성능과 에너지 효율은 최신 낸드 내부 처리 기법 대비 3.5배와 3.3배, 저장장치 바깥에서 처리하는 방식 대비 32배와 95배로 보고된다 (DOI: 10.1109/micro56248.2022.00069). 같은 성과의 두 숫자가 열 배 가까이 벌어지는 이유는 기술이 아니라 무엇과 견줬느냐다.
그다음 논문은 한 걸음 더 나간다. 그때까지 낸드 내부 연산은 같은 세로줄 안에서만 가능했는데 세로줄을 건너뛰는 연산을 추가했다. 그러자 낸드 안에서 오류 정정이 가능해져, 한 칸에 한 비트만 넣던 기존 방식 대신 여러 비트를 넣어 밀도가 1.8배로 올랐다. 기본 질의는 최신 기법 대비 2.1배 빠르고 에너지 효율은 2.5배였다. 그런데 벤치마크의 질의 전체를 끝에서 끝까지 돌리면 1.7배다(이 값만 무엇 대비인지 초록에 없다) (DOI: 10.1145/3725843.3756055). 커널의 숫자와 프로그램의 숫자는 다르다.
비휘발성 메모리 — 전원이 끊겨도 값이 남아 있는 메모리 — 에서는 저항으로 값을 적는다는 성질을 그대로 쓴다. 두 개 이상의 행을 동시에 켜면 읽기 회로에 흘러드는 전류가 그 행들의 논리 연산 결과를 담게 된다. 2016년에 이 구조를 제안한 논문은 복잡한 논리를 메모리 안에 넣는 대신 읽기 회로만 고쳤다. 2024년에는 다른 연구팀이 실제 PCRAM(상변화 메모리) 소자로 같은 구조를 만들어 실험으로 시연했다. 저항 상태 사이의 차이가 네 자릿수에 이르렀는데, 그 팀이 자기 실측을 견준 상대가 원래 연구의 시뮬레이션 데이터였다 (DOI: 10.1145/2897937.2898064; DOI: 10.1109/vlsid60093.2024.00103, 실험 시연).
멤리스터 논리로 디지털 시스템을 짜고 실제 데이터베이스 질의를 돌린 연구도 있다. 필터 연산이 1.6~18배, 질의 전체가 56~608배 빨라졌다. 그런데 에너지는 필터에서 1.7~18.6배 줄고 질의 전체에서는 0.81~12배다. 0.81배는 어떤 경우엔 오히려 더 썼다는 뜻이고, 저자들이 초록에 그대로 적어 두었다. 기준선은 같은 호스트의 동등한 인메모리 데이터베이스이고, 요구되는 소자 수명은 기존 ReRAM(저항변화 메모리)의 범위 안이었다 (DOI: 10.1109/tetc.2023.3315189, 전체 시스템 시뮬레이션).
메모리가 계산을 시작하면 새 문제가 생긴다. 메모리 안의 연산은 읽기·쓰기 옆에 새로 생긴 메모리 연산의 한 부류인데, 그것과 다른 연산 사이의 순서 규칙이 없었다. 이 자리를 짚은 논문은 기존의 일관성 해법들이 오히려 호스트의 원래 규칙을 깨뜨려 어떤 정확성도 보장하지 못하게 만들었다고 지적하고, 엄격한 것부터 느슨한 것까지 네 규칙을 설계해 평가했다 — 정확성을 보장하는 실행 시간 비용은 최대 6%였고 많은 경우 오히려 빨라졌으며, 하드웨어 추가 비용은 0.22% 미만이었다 (DOI: 10.1109/hpca56546.2023.10071007, 전체 시스템 시뮬레이션).
이 절의 결론이다. 앞서 나온 2016년의 비휘발성 메모리 논리 논문은 자기 성과를 이렇게 적었다. 비트 연산만 따로 재면 약 500배 빠르고 에너지는 약 28,000배 아낀다. 그리고 같은 문장이 이어진다 — 기존 프로세서 대비 전체로는 1.12배 빠르고 1.11배 아낀다 (DOI: 10.1145/2897937.2898064, 제안과 시뮬레이션 평가).
500과 1.12가 한 문장 안에 있다. 이 편의 나머지는 그 간격에 관한 이야기다.
전류가 저절로 곱셈을 한다
아날로그 인메모리 구조는 문제 크기와 프로세서 크기가 함께 커지면 에너지 효율이 임의로 높아질 수 있다. 디지털과 아날로그 인메모리 구조의 에너지 효율 한계를 스칼라 기계와 나란히 놓고 분석한 논문의 결론이다. 저자들이 꼽은 축은 셋 — 문제의 크기, 바이트당 연산량, 그리고 몇 비트로 계산하느냐다 (arXiv:2302.06417v1, 이론 한계 분석).
이 주장을 떠받치는 물건에 이름이 있다. 크로스바 배열은 가로줄과 세로줄을 격자로 깔고, 교차점마다 저항을 바꿀 수 있는 소자를 하나씩 앉힌 구조다. 바둑판의 교차점마다 굵기를 조절할 수 있는 수도꼭지를 하나씩 달아 둔 것과 같다. 가로줄마다 다른 세기로 물을 밀어 넣으면, 세로줄 끝에서 받는 물의 양은 그 줄에 달린 꼭지들이 얼마씩 열려 있는지에 따라 저절로 정해진 합이 된다.
신경망이 하는 일의 대부분이 그 모양이다. 가중치를 꼭지의 굵기로 저장해 두고 입력을 전압으로 걸면 곱셈과 덧셈이 회로를 한 번 지나가는 동안 물리적으로 끝난다. 명령어도 곱셈기도 없다.
그런데 얻은 답은 전류다. 다음 층으로 넘기려면 숫자로 바꿔야 하고, 그 일을 하는 회로에 이름이 있다. 아날로그-디지털 변환기는 전압이나 전류처럼 끊김 없이 변하는 값을, 컴퓨터가 다룰 수 있는 숫자로 옮겨 적는 회로다. 눈금 없는 물통의 물 높이를 자로 재서 「37」이라고 적는 일이다. 몇 자리까지 적을지를 먼저 정해야 하는데, 자릿수를 한 자리 늘릴 때마다 그 회로가 먹는 전기와 차지하는 면적이 는다.
이 분야를 정리한 리뷰가 꼽는 과제 셋이 변환기 병목, 아날로그 연산의 변동, 소자의 비이상성이다 (DOI: 10.1109/mcas.2021.3092533, 리뷰). 얼마나 정밀한 변환기가 필요한지 파고든 연구의 답은 6비트였다 — 배열이 커져도 정확도를 잃지 않으면서 성능과 면적 사이 최적 절충이 되는 값 (DOI: 10.1109/mdat.2021.3050715).
그럼 6비트면 되는데 왜 병목인가. 변환기 하나가 차지하는 면적이 크로스바 하나당 몇 개를 붙일 수 있는지를 정하고, 그것이 처리량까지 묶기 때문이다. 이 자리를 잡은 연구는 변환기를 없애는 쪽으로 갔다 — 중간 합을 1비트나 1.5비트까지 줄이면 변환기가 필요 없어진다. 그런데 그러면 곱해 줘야 할 실수 배율이 무더기로 생겨 이득을 도로 갉아먹는다. 저자들의 답은 나누는 것이었다. 곱의 합은 아날로그 크로스바가 하고, 배율은 디지털 인메모리 배열이 한다. 7비트와 2비트 변환기를 쓴 아날로그 기준 구조 대비 에너지가 최대 28배와 11배 줄었고 정확도 손실은 최소였다 (DOI: 10.1145/3658617.3697572).
최근 연구 하나는 우리가 변환기의 정밀도를 과대평가하고 있었다고 말한다. 선행 연구들이 양자화 오차를 입력과 무관한 잡음으로 보고, 변환 전 신호가 원래 띄엄띄엄하다는 사실을 무시했기 때문이다. 계산 정확도에 맞춘 지표로 다시 풀자 256차원 이진 내적에서 요구 정밀도를 3비트 줄이면서 신호 대 잡음비는 6데시벨 높일 수 있었다 (arXiv:2507.09776v2, 28나노 회로 인지 행동 모형).
아날로그가 실제로 치르는 값
곱의 합만이 아니라 비선형 연산까지 같은 배열에서 처리해 변환기를 통째로 없앤 완전 아날로그 구조를 SPICE로 풀어 본 연구가 있다. 입력 400개에서 출력 10개까지 가는 작은 신경망을 올렸더니 문제는 소자가 아니라 배선이었다. 격자를 이루는 금속선의 저항과 용량이 계산을 흐트러뜨린다. 배열을 층마다 가로 16·8·8개, 세로 8·8·1개로 쪼개자 손글씨 숫자 인식 정확도가 94.84%까지 올라왔다 — 저자들의 표현으로 CPU 위의 디지털 구현이 내는 약 97%에 견줄 만한 값이다. 대가도 같은 초록에 있다. 쪼개기 위해 붙인 회로 때문에 전력이 더 든다 (arXiv:2201.12480v1, 회로 시뮬레이션).
배열을 키우면 물리가 발목을 잡고 쪼개면 값을 치른다. 크로스바가 커지지 못하는 이유다.
정확도 쪽도 보자. 아날로그 계산은 전하 보존이라는 해상도가 무한한 동작에 기대기 때문에 오차에 그대로 노출된다. 대규모 신경망을 여기 올릴 수 있는지 시뮬레이션으로 확인한 연구의 결론은 고정밀 디지털용으로 훈련된 신경망은 아날로그 소자의 불확실성을 견디지 못한다였다. 그런데 이 논문은 거기서 끝나지 않는다 — 아날로그 부동소수점 표현과 새 훈련 알고리즘으로 추론 하드웨어에 비용을 더하지 않고도 정확도가 크게 개선됐다 (arXiv:2008.02400v1, 시뮬레이션).
유효 정밀도가 제한적이라 이 분야는 아날로그 타일과 디지털 처리기를 섞는 쪽으로 움직였다. 그 매핑 방법들을 정리한 프리프린트가 GPT-2에 적용해 얻은 결과가 인상적이다. 49개의 행렬 가운데 4개가 민감도를 지배했고, 첫 디코더 블록의 어텐션 출력 하나가 나머지를 자릿수 차이로 압도했다 (arXiv:2606.02672v1, 프리프린트). 전부 아날로그로 올릴지 말지의 문제가 아니라 어느 넷을 디지털로 남길지의 문제라는 뜻이다.
실물도 있다. 상변화 메모리 기반 아날로그 인메모리 칩에서 커널 근사를 구현한 연구는, 커널 릿지 분류에서 정확도 하락 1% 미만, 커널화 어텐션 벤치마크에서 1% 이내를 하드웨어로 보였다. 다만 같은 초록에서 에너지 효율 우위는 측정이 아니라 추정치로 적혀 있다 (arXiv:2411.03375v1, 실물 칩 시연 + 추정).
가장 영리한 타협은 이것이다. 트랜스포머의 어텐션 가속기를 만든 연구는, 회로 비이상성에 민감한 아날로그 ReRAM 배열에 값의 크기가 아니라 순서만 맞으면 되는 일 — 어느 토큰이 더 관련 있는지 고르는 일 — 만 맡겼다. 정확해야 하는 계산은 디지털이 한다. 결과는 GPU 대비 속도 13.5~28.5배, 에너지 효율 291.6~1894.3배였다. 그런데 같은 논문이 최신 트랜스포머 전용 가속기와 견준 값은 같은 처리량에서 에너지 효율 1.2~14.9배다 (DOI: 10.1109/tvlsi.2023.3337777). 기준선을 GPU에서 전용 가속기로 바꾸자 세 자릿수가 한 자릿수가 됐다.
그래서 디지털로 하면 안 되나
「아날로그 접근은 높은 정확도를 요구하는 일부 응용에는 맞지 않을 수 있다.」 이 문장은 아날로그를 비판하는 글이 아니라, 22나노 공정으로 완전 디지털 인메모리 회로를 만든 2021년 학회 논문의 초록에 있다. 저자들의 진단은 이렇다 — 인메모리 컴퓨팅 연구는 에너지 효율이 높은 아날로그 쪽에 집중돼 왔는데, 신호 대 잡음비가 낮아 생기는 정확도 부족이 그 방식의 주된 단점이다 (DOI: 10.1109/isscc42613.2021.9365766). 이 논문의 제목에는 89TOPS/W와 16.3TOPS/mm²가 박혀 있는데 초록은 그 값을 설명하지 않는다. 여기서는 제목의 숫자가 아니라 초록의 진단만 쓴다.
디지털 쪽의 주장을 가장 또렷하게 적은 것은 비트를 한 자리씩 처리하는 다른 회로다. 저자들은 완전 디지털 구현이 공정 변동과 잡음 민감성, 데이터 변환 오버헤드에서 자유롭다고 적고, 대가도 같은 초록에 적는다 — 비트를 하나씩 처리하는 방식은 면적 부담을 크게 줄이는 대신 지연을 희생한다.
여기 이 편에서 가장 중요한 숫자가 있다. 65나노 공정으로 만든 128×128 시험칩에서, 같은 회로를 1비트로 쓰면 와트당 117.3테라 연산, 16비트로 쓰면 2.06테라 연산이었다 (DOI: 10.1109/jssc.2021.3061508, 시제품 실측). 회로도 공정도 그대로인데 57배 가까이 차이가 난다. 몇 비트로 계산했는지를 밝히지 않은 「와트당 몇 테라 연산」은 비교가 아니다.
두 번째 눈금 문제는 어디까지 세었느냐다. 아날로그와 디지털을 섞은 어텐션 가속기를 65나노로 잰 연구는 최고 에너지 효율이 아날로그 코어에서 14.8, 칩 전체에서 1.65라고 적는다. 면적당 성능도 976.6과 79.4로 갈린다 (arXiv:2409.04940v2, 시제품 실측). 한 논문, 한 칩, 둘 다 측정값인데 아홉 배 가까이 벌어진다. 초록이 비트 수를 안 밝히지만 같은 칩의 같은 측정이라 여기서 갈리는 축은 정밀도가 아니라 범위다. 회로 덩어리 하나만 떼어 낸 수치에는 주변 회로도, 그 덩어리들 사이의 데이터 이동도 들어 있지 않다.
다른 논문은 이 문제를 더 어렵게 만든다. 22나노 인메모리 신경망 가속기를 만들어 잰 연구는 가속기 전체의 4비트 환산 효율이 와트당 813테라 연산이라고 적고, 몇 줄 뒤에 회로 덩어리만 떼면 와트당 4.2페타 연산이라고 적는다. 그런데 뒤 숫자가 몇 비트 기준인지는 초록에 없다. 나란히 적혀 있다고 나란히 놓을 수 있는 값이 아니다. 이 논문의 핵심 장치는 변환기 양자화의 정보 손실을 우회하는 다중비트 아날로그 정규화 회로였다 (DOI: 10.1109/jssc.2023.3269098, 시제품 실측).
여기서 하나 못 박아 둔다. 「아날로그는 효율이 임의로 높아질 수 있다」는 분석과 「아날로그는 정확도가 약하다」는 진단은 서로를 반박하지 않는다. 앞은 에너지에 대한 말이고 뒤는 정확도에 대한 말이다 — 서로 다른 손잡이를 돌린 것이지 한 손잡이를 두고 반대로 돌린 것이 아니다. 두 논문은 서로를 인용하지도 반박하지도 않는다. 이 글이 둘을 한자리에 놓은 것은 축이 여러 개라는 사실 자체를 보이기 위해서다.
무엇이 남았나
프로그램의 어느 구간을 메모리로 내려보낼지 자동으로 고르는 도구를 만든 연구가 있다. 그때까지 그 판단을 도울 도구가 없었기 때문이다. 정적 분석으로 구간마다의 접근 패턴과 구간을 넘나드는 데이터 이동을 함께 보게 했더니, 평균 2.63배(CPU만 쓴 경우 대비), 그리고 평균 4.45배(전부 메모리에 내려보낸 경우 대비) 빨랐다. 최대치는 각각 7.14배와 10.64배다 (DOI: 10.23919/date58400.2024.10546698, 정적 분석과 평가).
두 번째 숫자를 다시 읽어야 한다. 가장 느린 선택지가 「전부 인메모리」였다.
희소 행렬-벡터 곱을 실물 시스템 2,528개 코어에서 돌린 연구는 답이 하나가 아니라고 말한다. 저자들이 설계한 분할은 두 갈래다. 하나는 계산을 전부 메모리 안에서 끝내는 것이고, 다른 하나는 계산 비용과 데이터 전송 비용 사이에서 균형을 잡는 것이다. 커널 스물다섯 가지와 압축 형식 네 가지를 준비한 것 자체가, 행렬의 모양에 따라 답이 달라진다는 뜻이다 (DOI: 10.48550/arxiv.2201.05072, 실물 시스템 측정).
내려보낸 뒤에도 다 쓰지 못한다. 희소 행렬 곱을 뱅크 옆에서 가속한 연구는 자체 실험 분석에서 메모리 대역폭의 80%가 버려지고 있었다고 보고한다. 충돌하지 않는 열을 찾아 여러 뱅크에서 동시에 처리하자 최신 전용 가속기 대비 최대 17.88배, 최신 인메모리 방식 대비 최대 8.19배 빨라졌다 (DOI: 10.1109/tc.2025.3624920).
그리고 소프트웨어가 있다. 이 문제를 가장 정직하게 적은 것은, 그 빈자리를 메우려고 28나노 인메모리 마이크로컨트롤러를 만든 팀이다. 그들이 그때까지의 제품들을 이렇게 진단한다 — 회로가 커서 면적을 먹었고, 대부분 아날로그 혼성신호라 공정·전압·온도 변동에 견고성이 제한됐으며, 텐서플로 라이트 같은 실용 개발 프레임워크를 지원하는 것이 하나도 없었다. 그래서 그 제품들은 표준 벤치마크 성적을 못 냈고 인메모리가 아닌 최신 제품과 견줄 수가 없었다. 그들이 만든 물건의 성과도 기존 인메모리 제품 대비로 보고된다 (DOI: 10.1109/jssc.2024.3362274, 선행연구 진단 + 시제품 실측).
「견줄 수가 없다」는 이 편에서 가장 무거운 문장이다. 성능이 나쁘다는 말이 아니라, 성능을 말할 공통의 자가 없다는 말이기 때문이다.
이 자리를 메우려는 시도가 여럿이라는 사실이 증거다. 표준 실행 환경에 인메모리 연산을 붙인 연구는 기준 플랫폼이 x86 CPU 대비 평균 1.64배, ARM CPU 대비 1.71배 빨랐다고 보고한다 (DOI: 10.1109/iceic54506.2022.9748444). 실물 UPMEM 시스템을 겨냥한 두 연구는 더 구체적이다 — 데이터 이동과 작업 분배를 사람이 손으로 짜야 했던 것을 패턴 기반 인터페이스로 자동화한 프레임워크는 손으로 튜닝한 구현보다 평균 2.1배 빠르면서 코드 줄 수는 94% 적었고 (DOI: 10.48550/arxiv.2310.10168), 손튜닝 라이브러리 의존을 걷어 내고 자동 탐색으로 코드를 생성한 컴파일러는 실물 하드웨어에서 커널 최대 6.18배, 언어모델 계층 최대 8.21배의 성능 향상을 보고한다(초록은 무엇 대비인지 밝히지 않는다) (DOI: 10.1145/3695053.3731096).
자동화 도구가 손으로 짠 코드를 2.1배 이긴다는 건, 지금까지 사람이 이 하드웨어를 제대로 못 쓰고 있었다는 뜻이다 — 이건 우리 독해다.
마지막으로 프로그래밍 모델 자체가 깨진다. RISC-V 프로세서에 인메모리 연산기를 실행 유닛으로 붙이고 전용 명령어와 컴파일러·어셈블러·프로파일러까지 만든 연구는, 인메모리 가속기가 메모리와 연산을 한 덩어리로 묶어 표준 폰노이만 프로그래밍 모델을 깨뜨리기 때문에 기존 스택에 통합되기 어렵다고 문제를 적는다. 그렇게 통합한 결과 곱셈 커널 하나는 17.63배 빨라졌고, 같은 기준선에 대해 전체 벤치마크는 2.74배 빨라졌다 (DOI: 10.3389/felec.2022.898273).
기준선도 하드웨어도 같은데 17.63과 2.74다. 앞 절에서 본 500과 1.12와 같은 간격이다.
같은 벽의 양면
「3D 적층 메모리의 밑판 위에 올린 연산기의 성능은 어떤 경우에도 그 대역폭이 주는 것보다 좋을 수 없다.」 앞에서 한 번 인용한 이 문장은, 자기 방식으로 406%의 성능 향상을 얻은 논문이 그 결과를 적은 바로 다음에 덧붙인 것이다 (DOI: 10.1109/access.2019.2924240).
이 편의 제안은 앞 다섯 편과 경쟁하지 않는다.
그 개관 논문이 꼽은 두 갈래 중 하나가 3D 적층 메모리의 논리층을 써서 그 안의 연산 회로에 넓은 길을 대 주는 것이었다 (arXiv:1905.04376v1). 길을 없애자는 제안의 절반이 길을 넓힌 기술 위에 얹혀 있다. 상용 D램을 거의 그대로 쓴 2015년의 니어메모리 구조도 실리콘 관통 전극을 넣는 것만은 예외였다 (DOI: 10.1109/hpca.2015.7056040). 위아래를 꿰뚫는 그 구멍이 없었으면 이 제안도 없다.
그리고 길은 짧아지는 것이지 사라지는 것이 아니다. D램 안쪽 구조까지 내려가 연산 방식을 설계 공간 전체에 걸쳐 탐색한 연구는, 덧셈·뺄셈·비트 세기·자리 옮김·곱셈을 다 돌려 본 뒤 적는다 — 메모리 바로 곁에서 실행하는 경우에도 데이터 이동이 전체 실행 시간의 3분의 1 이상을 차지했고, 그래서 주된 병목이었다 (DOI: 10.18130/q5ar-1c61, 학위논문·시뮬레이션 프레임워크).
다섯 편과 이 편은 같은 벽의 양면이다. 한쪽은 벽에 더 넓은 문을 내는 공사고, 다른 쪽은 벽 안쪽으로 조리대를 옮기는 일이다. 메모리를 프로세서 옆에 쌓아 올린 이야기, 두 면을 직접 붙인 이야기, 하나의 칩을 조각내 붙인 이야기, 바닥을 유리로 바꾸고 빛을 칩 옆에 앉힌 이야기, 전기를 웨이퍼 뒷면으로 돌린 이야기. 그런데 이 편의 물건이 실제로 딛고 선 갈래는 적층 하나뿐이고, 이 글을 연 상점표 칩들은 그마저도 필요 없었다. 양면이라는 말은 다섯이 여기 다 겹친다는 뜻이 아니라 벽이 하나라는 뜻이다.
이 생각이 1950년대에 나왔다가 가라앉고 1990년대에 돌아왔다가 다시 가라앉은 이유를, 앞의 기술사 연구는 이렇게 정리한다. 연구 아이디어는 주변 기술과 경제 조건과 응용 수요가 그것을 떠받칠 만큼 익었을 때 다시 나타난다 (DOI: 10.18130/q5ar-1c61).
그럼 이번에는 익었는가. 여기서부터는 우리 정리다 — 인용이 아니라, 앞에서 읽은 것들을 놓았을 때 남는 질문 목록이다. 답할 수 있는 건 「이긴다/진다」가 아니라 이 여섯이다.
① 데이터 한 바이트로 계산을 몇 번 하는가. 바이트당 연산량이 낮은 일에만 이 방식이 이긴다. 답은 일마다 다르다.
② 어느 부분을 내려보낼 것인가. 전부 내려보낸 것이 가장 느렸다 — 자동 선별 도구가 그 선택지를 4.45배 이겼다.
③ 몇 비트가 필요한가. 같은 회로가 1비트에서 117.3, 16비트에서 2.06이다. 정밀도 없는 효율 수치는 비교가 아니다.
④ 그 숫자는 회로 덩어리의 것인가 칩 전체의 것인가. 한 칩 안에서 14.8과 1.65였다.
⑤ 그 코드를 누가 짜는가. 그때까지의 인메모리 마이크로컨트롤러 중 실용 개발 프레임워크를 지원하는 것이 없었다는 진단이 2024년에 실렸다 — 그 진단을 적은 팀이 직접 물건을 만들었다.
⑥ 새 연산의 순서 규칙이 있는가. 메모리 안의 연산과 바깥의 연산 사이에 규칙이 없었고, 그것을 만드는 비용은 실행 시간 최대 6%로 밝혀졌다.
이 여섯 중 셋은 답이 났고, 둘은 답이 일마다 다르며, 하나는 아직 답이 없다. 그래서 이 기술의 질문은 「언제 폰노이만 구조를 대체하는가」가 아니다. 어떤 일을 벽 안쪽으로 들여놓을 것인가이다.
상점에서 산 D램 칩 256개가 NOT 연산을 98.37%의 성공률로 해낸다는 사실은, 그 칩들이 처음부터 계산할 줄 알았다는 뜻이다. 우리가 그렇게 쓰지 않았을 뿐이다.
근거 논문
등급 라벨은 논문이 아니라 인용한 문장에 붙였다. 아래 요지 줄의 등급은 논문 전체의 성격.
- "상용 D램 칩의 기능적 완전 불 논리" (2024) — DOI: 10.1109/hpca57654.2024.00030 — 상용 DDR4 256개 실측. NOT 98.37%, 16입력 논리 94.94~95.87%, 50~95도 1.66%.
- "PULSAR — 상용 D램의 다중 행 동시 활성화" (2023, 프리프린트) — DOI: 10.48550/arxiv.2312.02880 — 상용 칩 실측. 일부 컬럼만 성공하던 것을 선행 기법 대비 성공률 24.18%·성능 121%.
- "실용적 인·니어메모리 처리" (2019, 프리프린트) — arXiv:1905.04376v1 — 개관·입장 논문. 두 갈래(D램의 아날로그 성질 / 3D 적층 논리층)와 채택 과제.
- "수평 배치 인메모리 설계공간 탐색·간략사" (2026) — DOI: 10.18130/q5ar-1c61 — 학위논문·시뮬레이션. 근거리 실행에서도 데이터 이동이 실행 시간의 3분의 1 이상. 1950~60년대 인식 장치, 1990년대 EXECUBE.
- "NDA — 상용 D램·표준 모듈 기반 근거리 가속" (2015) — DOI: 10.1109/hpca.2015.7056040 — 같은 가속기를 프로세서 안에 넣은 시스템 대비 에너지 46%↓·전송 68%↓·성능 1.67배.
- "새 패러다임 벤치마킹" (2022) — DOI: 10.1109/access.2022.3174101 — 실물 시스템 측정. 640개·2,556개 코어, 메모리 병목 작업 16개.
- "D램 동작에 맞춘 메모리 「내부」 처리" (2019) — DOI: 10.1109/access.2019.2924240 — 전체 뱅크 406%·뱅크별 35.2%(기준선 = 대역폭을 다 쓴 피연산자 읽기). 밑판 위 연산기는 어떤 경우에도 그 대역폭보다 좋을 수 없다.
- "DEAR-PIM — 전체 뱅크 요청 분리 실행" (2025) — DOI: 10.23919/date64628.2025.10992691 — 설계·평가. A100 대비 2.03~3.33배, 순차 대비 1.11~1.52배, 동시 활성화 대비 최대 전력 21.3~41.7%↓.
- "AME-PIM — 메모리가 텐서 가속기가 될 수 있나" (2026) — DOI: 10.1145/3801487.3806067 — 상용 하드웨어 측정. 명령어 집합 제한·네이티브 합산 없음 → 합산 없는 외적 흐름. 의사 채널당 최대 14.9 GFLOP/s.
- "메모리로 처리하는 패러다임" (2016, 프리프린트) — DOI: 10.48550/arxiv.1610.09603 — 메모리 인터페이스는 읽기·쓰기만 한다. D램의 아날로그 동작을 쓴 행 복사.