KR20220054664A - 시냅스-전 스파이크 신호에 관련된 메모리 내 프로세싱 동작 수행 및 관련 방법, 시스템 - Google Patents

시냅스-전 스파이크 신호에 관련된 메모리 내 프로세싱 동작 수행 및 관련 방법, 시스템 Download PDF

Info

Publication number
KR20220054664A
KR20220054664A KR1020227010826A KR20227010826A KR20220054664A KR 20220054664 A KR20220054664 A KR 20220054664A KR 1020227010826 A KR1020227010826 A KR 1020227010826A KR 20227010826 A KR20227010826 A KR 20227010826A KR 20220054664 A KR20220054664 A KR 20220054664A
Authority
KR
South Korea
Prior art keywords
signal
neuron
memory
spike
synaptic
Prior art date
Application number
KR1020227010826A
Other languages
English (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 마이크론 테크놀로지, 인크
Publication of KR20220054664A publication Critical patent/KR20220054664A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)

Abstract

인-메모리(in-memory) 또는 니어-메모리(near-memory) 프로세싱을 위한 방법들, 장치들, 및 시스템들이 설명된다. 스파이킹 신경망에서의 스파이크 이벤트가 메모리 시스템을 통해 프로세싱될 수 있다. 메모리 시스템은 목적지 뉴런들의 그룹에 대응하는 데이터를 저장할 수 있다. 메모리 시스템은 SNN의 각 시간 간격에서 각 소스 뉴런으로부터 시냅스-전 스파이크 이벤트의 그룹에 대응하는 데이터를 통과시킬 수 있다. 시냅스-전 스파이크 이벤트들의 그룹에 대응하는 데이터는 메모리 시스템에 후속하여 저장될 수 있다.

Description

시냅스-전 스파이크 신호에 관련된 메모리 내 프로세싱 동작 수행 및 관련 방법, 시스템
우선권 주장
본 출원은 "시냅스-전 스파이크 신호에 관련된 메모리 내 프로세싱 동작 수행 및 관련 방법, 시스템"에 대하여, 2019년 9월 5일에 출원된 미국 가특허 출원 일련 번호 62/896,267의 35 U.S.C §119(e)의 이익을 주장하고, "시냅스-전 스파이크 신호에 관련된 메모리 내 프로세싱 동작 수행 및 관련 방법, 시스템"에 대하여 2020년 8월 31일에 출원된 미국 특허 출원 일련 번호 17/007,588의 출원일의 이익을 주장한다.
기술 분야
본 개시의 실시예는 메모리 내 프로세싱에 관한 것으로, 보다 구체적으로 스파이킹 신경망(SNN: spiking neural network)의 스파이크 이벤트와 관련된 메모리 내 프로세싱(PIM: processing-in-memory) 동작을 수행하는 것에 관한 것이다. 더욱 더 구체적으로, 일부 실시예는 메모리 내 프로세싱 가능 메모리 디바이스 내에서 PIM 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스, 메모리 시스템 및 전자 시스템에 관한 것이다.
메모리 디바이스는 통상적으로 컴퓨터 또는 기타 전자 시스템에서 내부의 반도체 기반 집적 회로로서 제공된다. 휘발성 메모리와 비휘발성 메모리를 포함하여 많은 상이한 유형의 메모리가 있다. 전원이 사이클링된 후에 저장된 정보를 검색할 수 있는 휘발성 메모리는 특히 NAND 또는 NOR 플래시 메모리를 포함하는 플래시 메모리를 포함할 수 있다. 휘발성 메모리는 데이터(예를 들어, 호스트 데이터, 에러 데이터 등)를 유지하기 위해 전원을 필요로 할 수 있으며, 특히 랜덤 액세스 메모리(RAM: random access memory), 동적 랜덤 액세스 메모리(DRAM: dynamic random access memory), 정적 랜덤 액세스 메모리(SRAM: static random access memory), 동기식 동적 랜덤 액세스 메모리(SDRAM: synchronous dynamic random access memory), 콘텐츠 어드레스 지정 메모리(CAM: content addressable memory), 사이리스터 랜덤 액세스 메모리(TRAM: thyristor random access memory)를 포함한다.
전자 시스템은 명령을 검색 및 실행할 수 있고 실행된 명령의 결과를 적절한 위치에 저장할 수 있는 다수의 프로세싱 리소스(예를 들어, 하나 이상의 프로세서)를 종종 포함한다. 프로세서는 산술 로직 유닛(ALU: arithmetic logic unit) 회로부, 부동 소수점 유닛(FPU: floating point unit) 회로부 및 조합 로직 블록과 같은 다수의 기능 유닛을 포함할 수 있으며, 이는 데이터(예를 들어, 하나 이상의 피연산자)에 대한 연산을 수행함으로써 명령을 실행하는 데 사용될 수 있다. 본원에서 사용되는 바와 같이, 연산은 AND, OR, NOT, NOT, NAND, NOR 및 XOR과 같은 부울(Boolean) 연산 및/또는 다른 연산(예를 들어, 다른 많은 가능한 연산 중에서 반전, 시프트, 산술, 통계)을 포함할 수 있다. 예를 들어, 기능 유닛 회로부의 피연산자에 대한 덧셈, 뺄셈, 곱셈 및 나눗셈과 같은 산술 연산을 다수의 연산을 통해 수행하는 데 사용될 수 있다.
전자 시스템의 많은 컴포넌트는 실행을 위해 기능 유닛 회로부에 명령을 제공하는 데 관련될 수 있다. 명령은 예를 들어, 컨트롤러 및/또는 호스트 프로세서와 같은 프로세싱 리소스에 의해 실행될 수 있다. 데이터(예를 들어, 명령이 실행될 수 있는 데이터)는 기능 유닛 회로부에 의해 액세스 가능한 메모리 어레이에 저장될 수 있다. 명령 및/또는 데이터는 기능 유닛 회로부가 데이터에 대한 명령 실행을 시작하기 전에 메모리 어레이로부터 검색되고 시퀀싱 및/또는 버퍼링될 수 있다.
많은 경우에, 프로세싱 리소스(예를 들어, 프로세서 및 관련 기능 유닛 회로부)는 메모리 어레이의 외부에 있을 수 있고, 데이터는 명령 세트를 실행하기 위해 프로세싱 리소스와 메모리 어레이 사이의 버스를 통해 액세스된다. 프로세싱 성능은 프로세서가 내부적으로 및/또는 메모리 부근에서(예를 들어, 메모리 어레이와 동일한 칩 상에서 직접) 구현될 수 있는 프로세서-인-메모리(PIM: processor-in-memory) 디바이스에서 개선될 수 있다. PIM 디바이스는 외부 통신을 감소시키거나 제거하여 시간을 절약하고 전력을 보존할 수 있다.
본 개시의 하나 이상의 실시예들은 시스템을 포함한다. 예를 들어, 시스템은 다수의 워드 라인들과 다수의 비트 라인들의 교차점에서 다수의 메모리 셀들을 포함하는 메모리 어레이를 포함할 수 있으며, 다수의 메모리 셀들에 기록된 데이터는 시냅스 가중치 값들에 대응한다. 시스템은 다수의 워드 라인들을 구동하도록 구성된 드라이버를 포함할 수 있다. 시스템은 또한 다수의 비트 라인에 결합된 감지 증폭기를 포함하는 회로부를 포함할 수 있다. 회로부는 다수의 비트 라인로부터의 출력 신호를 수신하도록 구성된다. 회로부는 또한, 뉴런의 스파이크 신호의 생성 전에 워드 라인 상에서 구동되는 제1 신호에 응답하여, 제1 메모리 셀의 스파이크 타이밍 종속 소성(STDP : spike timing dependent plasticity) 특성에 따라 다수의 메모리 셀의 제1 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 또는 타이밍 특성, 또는 이들의 조합을 갖는 제2 신호를 생성하도록 구성된다. 회로부는 또한, 뉴런의 스파이크 신호의 생성 후에 워드 라인 상에서 구동되는 제1 신호에 응답하여, STDP 특성에 따라 제1 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제3 신호를 생성하도록 구성된다.
다른 실시예에 따르면, 방법은 워드 라인 상에서 제1 신호를 구동시키는 단계를 포함한다. 상기 방법은 뉴런의 스파이크 신호를 생성하기 전에 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여, STDP(spike timing dependent plasticity) 특성의 LTP(long-term potentiation) 윈도우에서 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 또는 타이밍 특성, 또는 이들의 조합을 갖는 제2 신호를 생성하는 단계, 및 상기 제2 신호를 비트 라인으로 송신하는 단계를 더 포함하고, 상기 메모리 셀은 상기 워드 라인 및 상기 비트 라인에 커플링된다. 상기 방법은 또한 뉴런의 스파이크 신호가 생성된 후 워드 라인 상에서 구동되는 제1 신호에 응답하여, STDP 특성에 따라 LTD(Long-term depression) 윈도우에서 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제3 신호를 생성하는 단계, 및 제3 신호를 비트 라인으로 송신하는 단계를 포함한다.
또 다른 실시예에서, 전자 시스템은 적어도 하나의 입력 디바이스, 적어도 하나의 출력 디바이스, 입력 디바이스 및 출력 디바이스에 동작 가능하게 커플링된 적어도 하나의 프로세서 디바이스, 및 적어도 하나의 프로세서 디바이스에 동작 가능하게 커플링된 적어도 하나의 메모리 디바이스를 포함한다. 메모리 디바이스는 다수의 워드 라인들 및 다수의 비트 라인들의 교차점에 다수의 메모리 셀들을 포함하는 메모리 어레이로서, 다수의 메모리 셀에 기록된 데이터는 시냅스 가중치 값들에 대응하는, 상기 메모리 어레이, 및 비트 라인들의 개수에 결합된 감지 증폭기를 포함하는 회로부를 포함한다. 회로부는 뉴런의 스파이크 신호의 생성 전에 워드 라인 상에서 구동되는 제1 신호에 응답하여, 다수의 메모리 셀들의 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제2 신호를 생성하고, 그리고 뉴런의 스파이크 신호의 생성 후 워드 라인 상에서 구동되는 제1 신호에 응답하여, 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제3 신호를 생성하도록 구성된다.
다른 실시예에 따르면, 전자 시스템은 적어도 하나의 입력 디바이스, 적어도 하나의 출력 디바이스, 입력 디바이스 및 출력 디바이스에 동작 가능하게 커플링된 적어도 하나의 프로세서 디바이스, 및 적어도 하나의 프로세서 디바이스에 동작 가능하게 커플링된 적어도 하나의 메모리 디바이스를 포함한다. 적어도 하나의 메모리 디바이스는 시냅스 가중치 값들을 저장하도록 구성된 다수의 저항성 소자들을 포함하는 메모리 셀 어레이, SNN의 일련의 시간 양자들의 각각의 시간 양자들에서 다수의 저항성 소자들에 커플링된 다수의 워드 라인들에 걸쳐 스파이킹 이벤트들을 구동하도록 구성된 드라이버, 및 저항성 소자들에 커플링된 비트 라인들의 출력 전압을 적분하도록 구성된 적분 회로를 포함한다.
다른 실시예에 따르면, 시스템은 다수의 메모리 셀들을 포함하는 메모리 어레이를 포함하고, 다수의 메모리 셀들의 컨덕턴스 값들은 시냅스 가중치 값들에 대응한다. 시스템은 메모리 어레이에 연결된 회로부를 더 포함한다. 상기 회로부는 상기 메모리 어레이로부터 출력 신호들을 수신하고, 상기 메모리 어레이에서 수신된 제1 신호에 응답하여, STDP(spike timing dependent plasticity) 규칙에 따라 상기 다수의 메모리 셀들의 메모리 셀의 컨덕턴스를 증가 또는 감소시키도록 제2 신호를 생성하도록 구성된다.
다른 실시예에 따르면, 전자 시스템은 적어도 하나의 입력 디바이스, 적어도 하나의 출력 디바이스, 입력 디바이스 및 출력 디바이스에 동작 가능하게 커플링된 적어도 하나의 프로세서 디바이스 및 적어도 하나의 프로세서 디바이스에 동작 가능하게 커플링된 적어도 하나의 메모리 디바이스를 포함한다. 상기 적어도 하나의 메모리 디바이스는 다수의 메모리 엘리먼트들을 포함하는 메모리 어레이 및 메모리 어레이에 커플링된 하나 이상의 감지 증폭기들을 포함하는 회로부를 포함한다. 회로부는 뉴런의 스파이크 신호의 생성 전에 메모리 어레이에 도달하는 제1 신호를 나타내는 메모리 어레이로부터의 출력 신호를 수신한 것에 응답하여, 다수의 메모리 소자의 하나 이상의 메모리 소자의 저항을 감소시키기 위해 제2 신호를 생성하도록 구성된다. 회로부는 또한, 뉴런의 스파이크 신호의 생성 후에 메모리 어레이에 도달하는 제1 신호를 나타내는 메모리 어레이로부터의 출력 신호를 수신한 것에 응답하여, 다수의 메모리 소자의 하나 또는 메모리 소자의 저항을 증가시키기 위한 제3 신호를 생성하도록 구성된다.
도 1은 본 개시의 다수의 실시예에 따른 메모리 디바이스를 포함하는 시스템의 블록도이다.
도 2는 본 개시의 다양한 실시예에 따른 스파이킹 신경망을 도시한다.
도 3은 본 개시의 다양한 실시예에 따른 스파이크 이벤트를 프로세싱하기 위한 메모리 시스템을 도시한다.
도 4는 본 개시의 다양한 실시예에 따른 스파이킹 이벤트를 필터링하도록 구성된 필터를 도시한다.
도 5는 본 개시의 다양한 실시예에 따른 스파이킹 이벤트를 프로세싱하기 위한 포인터 테이블을 포함하는 메모리 시스템을 도시한다.
도 6은 본 개시의 다양한 실시예에 따른 스파이킹 이벤트를 프로세싱하기 위한 메모리 시스템을 도시한다.
도 7은 본 개시의 다양한 실시예에 따른 스파이킹 신경망(SNN)에서 스파이크 타이밍 종속 소성(STDP: spike-timing-dependent plasticity) 규칙의 그래프를 도시한다.
도 8은 본 개시의 다양한 실시예에 따른 메모리 내 스파이킹 이벤트를 프로세싱하는 예시적인 방법의 흐름도이다.
도 9는 본 개시의 다양한 실시예에 따른 메모리 내 스파이킹 이벤트를 프로세싱하는 다른 예시적인 방법의 흐름도이다.
도 10은 본 개시의 다양한 실시예에 따른 스파이킹 이벤트를 프로세싱하기 위한 메모리 시스템을 도시한다.
도 11은 본 개시의 다양한 실시예에 따른 임계 지연 효과(threshold delay effect)를 나타낸 도면이다.
도 12는 본 개시의 다양한 실시예들에 따른 메모리 내 스파이킹 이벤트들을 프로세싱하는 또 다른 예시적인 방법의 흐름도이다.
도 13은 본원에 설명된 하나 이상의 실시예에 따라 구현된 예시적인 메모리 시스템의 단순화된 블록도이다.
도 14는 본원에 설명된 하나 이상의 실시예에 따라 구현된 예시적인 전자 시스템의 단순화된 블록도이다.
스파이킹 신경망(SNN)에서 스파이킹 이벤트를 프로세싱하는 것은 기계 학습, 이미지 프로세싱, 인공 지능, 시스템 모델링(예를 들어, 전기 시스템, 기계 시스템, 뇌-컴퓨터 인터페이스, 대규모 뇌 시뮬레이션, 로봇 공학, 제어 시스템 등) 및 기타 여러 가지와 같은 많은 애플리케이션에서 사용된다. 스파이킹 이벤트(예를 들어, 시냅스-전 이벤트, 시냅스 이벤트)를 프로세싱하기 위한 연산은 비교적 간단할 수 있다(예를 들어, 필터링, 매칭 및 누적). 그러나, 통상의 컴퓨터 기반 계산은 컴퓨팅 코어와 메모리 어레이 간에 많은 양의 데이터를 전송하는 것을 포함하여 프로세서 집약적 및 메모리 집약적인 연산을 포함할 수 있다.
본 개시의 다양한 실시예는 메모리 내 프로세싱(PIM: processing-in-memory) 연산에 관한 것으로, 더욱 구체적으로는 SNN에서 스파이킹 이벤트를 프로세싱하기 위해 PIM 연산을 수행하는 것에 관한 것이다. 적어도 하나의 실시예에서, 메모리 시스템은 메모리의 블록을 포함한다. 메모리는 목적지 뉴런의 그룹에 대응하는 데이터를 저장하도록 구성된다. 메모리는 SNN의 일련의 시간 간격의 각각의 시간 간격(본원에서 "시간 양자(time quanta)"라고도 칭함)에서 각각의 소스 뉴런으로부터의 시냅스-전 스파이크 이벤트의 그룹에 대응하는 데이터를 통과시키도록 구성된 스파이크 신호 필터를 포함할 수 있다. 시냅스-전 스파이크 이벤트의 그룹에 대응하는 데이터는 후속하여 메모리의 블록에 저장될 수 있다. 메모리의 블록은 또한 포인터 테이블을 저장하도록 구성된다. 포인터 테이블은 메모리의 블록에 저장된 시냅스-전 스파이크 이벤트의 각각의 그룹에 대한 포인터를 저장하고 각각의 포인터에 대응하는 증분 레이블을 각각의 시간 간격에서 증분시키도록 구성된다.
본원에서 사용되는 바와 같이, 메모리 내 프로세싱(PIM) 가능 디바이스는 (예를 들어, 데이터를 호스트 프로세서와 같은 외부 프로세싱 리소스로 전송하지 않고) 메모리 디바이스 내부의 프로세싱 리소스를 사용하여 메모리 셀의 어레이에 저장된 데이터에 대해 산술 및 로직 연산을 수행할 수 있는 메모리 디바이스를 지칭한다. 예를 들어, PIM 가능 디바이스는 (예를 들어, 열 기반으로 병렬 프로세싱을 수행하기 위해) 1-비트 프로세싱 요소 또는 (예를 들어, 슬라이스 기반으로 병렬 프로세싱을 수행하기 위해, 여기서 각각의 슬라이스(예를 들어, 행의 슬라이스)는 복수의 열을 포함함) 다중-비트 프로세싱 요소로서 동작 가능한 감지 컴포넌트를 포함하는 감지 회로부에 커플링된 메모리 어레이를 포함할 수 있다. PIM 가능 디바이스는 또한 "비트 벡터 연산"으로 지칭될 수 있는, "메모리에서" 수행되는 로직 연산 외에 메모리 연산을 수행할 수 있다. 예를 들어, PIM 가능 디바이스는 데이터에 대한 연산을 포함하는 덧셈 연산뿐만 아니라 데이터에 대한 연산을 포함하지 않는 다른 연산 중에서 판독(예를 들어, 로드) 및 기록(예를 들어, 저장)와 같은 메모리 액세스 연산을 포함하는 메모리 연산을 위해 구성된 동적 랜덤 액세스 메모리(DRAM) 어레이를 포함할 수 있다. 예를 들어, PIM 가능 디바이스는 메모리 연산 및 비트 벡터 연산 모두를 포함할 수 있는 (예를 들어, 호스트에 의해) 실행 중인 프로그램의 유형에 따라 "정상" DRAM 어레이 및/또는 PIM DRAM 어레이로서 DRAM 어레이를 동작시킬 수 있다. 예를 들어, 비트 벡터 연산은 부울 연산(예를 들어, AND, OR, XOR 등)과 같은 로직 연산 및 예를 들어, 어레이에서의 데이터 값 시프팅 및 데이터 값 반전과 같은 전달 연산을 포함할 수 있다.
본원에서 사용되는 바와 같이, PIM 연산은 PIM 가능 디바이스를 이용하여 메모리 프로세싱을 수행하는 것과 관련된 다양한 연산을 지칭할 수 있다. 연산 계층이 PIM 연산을 정의하는 데 사용될 수 있다. 예를 들어, 연산 계층의 제1(예를 들어, 최저) 레벨은 비트 벡터 연산(예를 들어, "프리미티브(primitive)" 연산으로 지칭될 수 있는 기본 로직 연산)을 포함할 수 있다. 계층에서 다음(예를 들어, 중간) 레벨은 다중 비트 벡터 연산을 포함하는 복합 연산을 포함할 수 있다. 예를 들어, 복합 연산은 다수의 로직 AND, OR, XOR, 시프트 등을 포함할 수 있는 덧셈, 곱셈 등과 같은 수학적 연산을 포함할 수 있다. 계층에서 제3(예를 들어, 최고) 레벨은 그 실행이 PIM 가능 디바이스를 사용하여 프로세싱을 수행하는 것을 포함하는 프로그램 실행과 관련된 제어 흐름 연산(예를 들어, 루핑(looping), 분기(branching), 필터링, 매칭 등)을 포함할 수 있다.
본원에서 더 상세히 설명되는 바와 같이, PIM 연산은 PIM 가능 디바이스를 포함하는 시스템 내의 다양한 컴포넌트에 의해 실행될 수 있다. 예를 들어, 호스트 상에 위치될 수 있는 제1 PIM 제어 컴포넌트(예를 들어, "스칼라 유닛"으로 지칭될 수 있는 제어 로직)는 제어 흐름 동작을 실행하고 복합 연산을 호스트 또는 PIM 가능 디바이스 상에 또한 위치될 수 있는 제2 PIM 제어 컴포넌트(예를 들어, 시퀀서)에 제공할 수 있다. 다수의 실시예에서, 제2 제어 컴포넌트는 메모리에서 비트 벡터 연산을 실행하고 결과를 호스트에 반환할 수 있는 PIM 가능 디바이스(예를 들어, 비트 벡터 타이밍 회로부) 상에 위치된 PIM 제어 컴포넌트에 낮은 레벨 비트 벡터 연산을 제공할 수 있다. 본원에 추가로 설명되는 바와 같이, PIM 가능 디바이스와 호스트 사이에서 PIM 연산을 전달하는 데 사용되는 인터페이스는 커맨드, 어드레스 및/또는 데이터를 전달하는 데 사용되는 DDR 인터페이스와 같은 통상적인 메모리 인터페이스와 별도의 버스를 포함할 수 있는 채널을 포함할 수 있다. 또한, 다수의 실시예에서, 호스트 상에 PIM 제어 컴포넌트를 제공하는 것은 (예를 들어, PIM 가능 디바이스가 물리적 어드레스 상에서만 동작할 수 있기 때문에 호스트 상의 가상 어드레스를 결정함으로써) PIM 프로그램이 가상 어드레싱을 사용하는 것을 허용하는 것과 같은 이점을 제공할 수 있다.
도 1은 본 개시의 다수의 실시예에 따른 메모리 디바이스(120)를 포함하는 시스템(100)의 블록도이다. 본원에서 "PIM 가능 디바이스" 또는 "PIM 가능 메모리 디바이스"로도 지칭될 수 있는 메모리 디바이스(120)는 임의의 적절한 메모리 디바이스를 포함할 수 있다. 예를 들어, 메모리 디바이스(120)는 휘발성 메모리(예를 들어, RAM, DRAM 등) 및/또는 비휘발성 메모리(예를 들어, 플래시 메모리, 3D 크로스포인트 메모리 디바이스와 같은 크로스포인트 메모리 디바이스 등)를 포함할 수 있다. 메모리 디바이스(120)는 더욱 상세하게 후술되는 바와 같이, 감지 회로부에 커플링된 메모리 어레이(130)(즉, 메모리 셀을 포함)를 포함할 수 있다. 일부 실시예에 따르면, 메모리 디바이스(120)는 뱅크, 랭크, 데크, 플레인, 블록, 세그먼트 또는 일부 다른 형태로 조직된 다중 메모리 어레이(130)를 포함할 수 있다.
시스템(100)은 메모리 디바이스(120)에 커플링된 호스트(111)를 추가로 포함한다. 호스트(111)는 다양한 다른 유형의 호스트 중에서 퍼스널 랩탑 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 스마트 폰, 또는 메모리 카드 판독기와 같은 호스트 시스템을 포함할 수 있다. 호스트(111)는 시스템 마더보드 및/또는 백플레인을 포함할 수 있고, 다수의 프로세싱 리소스(예를 들어, 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로부)를 포함할 수 있다. 시스템(100)은 별개의 집적 회로를 포함할 수 있거나, 호스트(111)와 메모리 디바이스(120) 모두가 (예를 들어, 동일한 칩 상에서) 동일한 집적 회로의 일부일 수 있다. 시스템(100)은 예를 들어, 서버 시스템 및/또는 고성능 컴퓨팅(HPC: high performance computing) 시스템 및/또는 그 일부를 포함할 수 있다.
호스트(111)는 PIM 제어 컴포넌트(예를 들어, 제어 로직(131), 시퀀서(132)), 채널 컨트롤러(143) 및 메모리 관리 유닛(MMU: memory management unit) 컨트롤러(134)를 포함하는 다양한 컴포넌트를 포함할 수 있다. 제어 로직(131)은 실행 중인 PIM 프로그램과 관련된 제어 흐름 커맨드를 실행하고 복합 커맨드를 시퀀서(132)에 제공하도록 구성될 수 있다. 제어 로직(131)은 시퀀서(132)로 전송되는 DDR 커맨드와 상이한 커맨드를 포함할 수 있는 복합 연산 PIM 커맨드의 확장 가능한 세트를 생성 및 발행하도록 구성된 RISC 유형 컨트롤러이거나 이를 포함할 수 있다. 일부 실시예에서, 제어 로직(131)은 비트 벡터 연산이 메모리 디바이스(120) 상에서 수행되게 하기 위해 복합 연산 커맨드를 발행하도록 구성될 수 있다. 일부 실시예에서, 복합 연산 커맨드는 제어 로직(131)으로부터 메모리 디바이스(120)로 (예를 들어, 시퀀서(132) 및 채널(157)을 통해) 전달될 수 있다.
제어 로직(131)은 일부 실시예에서 마이크로코드 명령을 시퀀서(132)에 의해 구현되는 비트 벡터 연산 수행과 관련된 마이크로코드 함수 호출일 수 있는 함수 호출로 디코딩할 수 있다. 마이크로코드 함수 호출은 시퀀서(132)가 메모리 디바이스(120)가 감지 회로부(150)와 같은 감지 회로부를 사용하여 특정 비트 벡터 연산을 수행하도록 수신하고/수신하거나 실행하는 연산일 수 있다.
도 1에 도시된 바와 같이, 제어 로직(131) 및 MMU 컨트롤러(134)는 호스트(111) 상에 위치하며, 이는 제어 로직(131) 및/또는 MMU 컨트롤러(134)가 호스트(111) 상에 저장된 가상 어드레스에 액세스할 수 있게 하고 명령을 메모리 디바이스(120)로 전달하기 전에 가상 대 물리적 어드레스 결정을 수행할 수 있다(예를 들어, 호스트(111) 상에서 실행되는 애플리케이션과 관련된 어드레스 공간의 가상 어드레스를 메모리 디바이스(120)의 실제 물리적 어드레스로 변환). 변환은 메모리 디바이스(120)에 저장된 어드레스 변환 테이블을 검색하거나 메모리 디바이스(120) 상에서 동일한 것을 수행함으로써 호스트에서 수행될 수 있다. 일부 실시예에서, 제어 로직(131) 및/또는 시퀀서(132)는 메모리 디바이스(120), 예를 들어, 컨트롤러(140) 또는 행 디코더(146)에 위치된다. 다른 실시예에서, 제어 로직(131), 시퀀서(132) 또는 MMU 컨트롤러(134)는 그 기능의 일부가 호스트(111) 상에 위치되고 다른 부분이 메모리 디바이스(120) 상에 위치되도록 분산될 수 있다.
본원에 사용되는 바와 같이, "비트 벡터"는 행(예를 들어, 수평으로 배향) 또는 열(예를 들어, 수직으로 배향)에서 물리적으로 인접되든 물리적으로 인접한 비트 수를 지칭할 수 있다. PIM 가능 디바이스는 로직 연산 및/또는 가상 어드레스 공간의 다수의 인접한 부분(예를 들어, "청크(chunk)")에 대한 전달 연산과 같은 비트 벡터 연산을 수행하도록 구성될 수 있다. 예를 들어, 가상 어드레스 공간의 청크는 256 비트의 비트 길이를 가질 수 있다. 청크는 가상 어드레스 공간의 다른 청크에 순차적으로 인접하거나 인접하지 않을 수 있지만, 메모리 페이지 범위 내에서는 인접할 것이다. 개시된 실시예에서, PIM 가능 디바이스는 가상 페이지의 가상 어드레스를 물리적 페이지의 물리적 어드레스로 변환한 후에 가상 어드레스 공간에서 연산을 수행하도록 구성될 수 있다.
(도 1에 도시된 바와 같이) 호스트(111) 상에 상주할 수 있는 MMU 컨트롤러(134)는 가상 메모리 어드레스(예를 들어, 호스트(111)와 관련된 어드레스)를 물리적 어드레스(예를 들어, 메모리 디바이스(120)와 관련된 어드레스)로 변환하는 것을 수행하는 것을 담당할 수 있다. MMU 컨트롤러(134)는 또한 메모리 보호 동작, 캐시 제어 및/또는 버스 중재 동작을 수행할 수 있다.
타이밍 회로부(133)는 로직 연산의 성능을 조정하기 위한 타이밍을 제공할 수 있고, 도 1의 메모리 어레이(130)와 같은 어레이에 대한 충돌 없는 액세스를 제공하는 것을 담당할 수 있다. 다양한 실시예에서, 컨트롤러(140) 및/또는 타이밍 관리 회로부(135)는 예를 들어, 채널(157)을 통해 호스트(111)로 또는 호스트로부터 전달될 수 있는 상태 정보를 생성할 수 있다. 채널(157)은 호스트(111)와 메모리 디바이스(120) 사이에서 DDR 커맨드를 전달(예를 들어, 패스)하는 데 사용될 수 있는 이중 데이터 레이트(DDR) 메모리 인터페이스(예를 들어, 제어 버스(154))에 독립적(예를 들어, 분리)일 수 있다. 즉, 일부 실시예에서, 채널(157)은 호스트(111)와 메모리 디바이스(120), 메모리 액세스 디바이스, 또는 다른 메모리 인터페이스 사이의 커맨드 전달에 사용될 수 있다. 메모리 인터페이스의 비제한적인 예는 이중 데이터 레이트(DDR) 메모리 인터페이스, 주변 컴포넌트 상호 접속 익스프레스(PCIe: peripheral component interconnect express) 메모리 인터페이스, 코히런트 가속기 프로세서 인터페이스(CAPI: coherent accelerator processor interface), 컴퓨트 익스프레스 링크(CXL: compute express link), 가속기를 위한 캐시 코히런트 상호 접속(CCIX: cache coherent interconnect for accelerator) 및 상술한 것의 조합 및 하위 조합을 제한 없이 포함한다.
비제한적인 예로서, DDR 메모리 인터페이스(예를 들어, 제어 버스(154))는 호스트(111)와 메모리 디바이스(120) 사이에서 DDR 명령을 전달(예를 들어, 패스)하는 데 사용될 수 있다. 즉, 일부 실시예에서, 채널(157)은 호스트(111)로부터 메모리 디바이스(120)로 비트 벡터 연산의 수행을 야기하는 커맨드를 전달하는 데 사용될 수 있으며, 제어 버스(154)는 호스트(111)로부터 메모리 디바이스(120)로 DRAM 커맨드(또는 다른 유형의 메모리 인터페이스의 커맨드)를 전달하는 데 사용될 수 있다. 일부 실시예에서, 제어 버스(154)를 통해 전달되는 DRAM 커맨드(또는 다른 유형의 커맨드)는 제한 없이 DDR1 SDRAM, DDR2 SDRAM, DDR3 SDRAM, DDR4, DDR5 및 다른 버전의 DDR 유형 프로토콜과 같은 DRAM의 연산을 제어하는 커맨드(또는 다른 유형의 메모리, 메모리 액세스 디바이스 또는 메모리 인터페이스를 제어하는 커맨드)일 수 있다. 다른 실시예에서, 메모리 디바이스(120)는 채널(157)을 통해 연산의 준비 상태에 대해 호스트에 시그널링할 수 있다. 일부 실시예에서, 채널(157)은 제어 버스(154) 및/또는 데이터 버스(156)와 결합된다. 또한, 일부 실시예에서, 호스트(111)는 다중 채널 및/또는 제어 버스를 갖는 다중 메모리 디바이스(120)를 포함할 수 있다.
일부 실시예에서, 시퀀서(132)는 로직 연산 커맨드에 대해 동작하도록 구성된 매우 큰 명령 워드(VLIW: very large instruction word) 유형 컨트롤러를 포함할 수 있고 제어 로직(131)은 호스트(111)의 프로세싱 리소스(미도시)로부터의 신호에 응답하여 로직 연산 커맨드를 시퀀서(132)에 발행하도록 구성될 수 있다. 예를 들어, 시퀀서(132)는 복합 연산 커맨드가 시퀀서(132)에 의해 발행될 수 있도록 다중 로직 연산을 시퀀싱하도록 구성될 수 있다. 일부 실시예에서, 제어 로직(131)은 VLIW 유형 명령 또는 SMID 유형 명령과 같은 실행 가능한 명령을 생성하도록 구성될 수 있다. VLIW 유형 명령 컨트롤러를 포함하는 실시예에서, 제어 로직(131)은 VLIW를 비트 벡터 연산 커맨드(들)로서 생성하도록 구성될 수 있다. VLIW는 마이크로코드 명령을 포함할 수 있다. 시퀀서(132)는 VLIW를 복수의 개별 마이크로코드 명령으로 디코딩하도록 구성된 VLIW 유형 컨트롤러이거나 이를 포함할 수 있다. 예를 들어, 시퀀서(132)는 VLIW를 명령으로 디코딩하여 복합 연산(예를 들어, 제한 없이 덧셈(ADD), 곱셈(MULTIPLY), 내적(DOT PRODUCT))의 수행을 유발할 수 있다. 일부 실시예에서, 복합 연산 커맨드는 VLIW 명령의 시퀀스에 진입점을 제공하여 이러한 복합 연산을 수행하게 할 수 있다. SMID 유형 명령 컨트롤러를 포함하는 실시예에서, 제어 로직(131)은 제한 없이 데이터의 벡터와 같은 데이터의 유닛을 생성하도록 구성될 수 있고, 시퀀서(132)는 데이터의 유닛으로 식별된 다중 데이터 포인트 상에서 병렬로 단일 명령의 실행을 야기할 수 있다.
시퀀서(132)는 메모리 디바이스(120)에 커플링될 수 있고, 채널(157)을 통해 메모리 디바이스(120)에 비트 벡터 연산을 조정하기 위한 커맨드를 전달할 수 있다. 마이크로코드 명령은 시퀀서(132) 자체 및/또는 메모리 디바이스(120)의 다른 컴포넌트(예를 들어, 비트 벡터 연산 타이밍 회로부(139), 타이밍 회로부(133), 타이밍 관리 회로부(135) 및/또는 감지 회로부(150))에 의해 순차적으로 및/또는 병렬로 실행될 수 있다. 메모리 어레이(130)는 예를 들어, DRAM 어레이, SRAM 어레이, STT RAM 어레이, PCRAM 어레이, TRAM 어레이, RRAM 어레이, NAND 플래시 어레이 및/또는 NOR 플래시 어레이를 포함할 수 있다. 메모리 어레이(130)는 본원에서 워드 라인 또는 선택 라인으로 지칭될 수 있는 액세스 라인에 의해 커플링된 행, 및 본원에서 데이터 라인, 디지트 라인 또는 비트 라인으로 지칭될 수 있는 감지 라인에 의해 커플링된 열으로 배열된 메모리 셀을 포함할 수 있다. 단일 메모리 어레이가 도 1에 도시되어 있지만, 실시예는 이에 제한되지 않는다. 예를 들어, 메모리 디바이스(120)는 다수의 메모리 어레이(130)(예를 들어, DRAM 셀, NAND 플래시 셀 등의 다수의 뱅크)를 포함할 수 있다.
메모리 디바이스(120)는 I/O 회로부(144)를 통해 버스(156)(예를 들어, 데이터/어드레스 버스)를 통해 제공된 데이터에 대한 어드레스 신호를 래칭하기 위한 어드레스 회로부(142)를 포함한다. 상태 및/또는 예외 정보는 메모리 디바이스(120) 상의 컨트롤러(140)로부터 채널(157)을 포함하는 인터페이스(예를 들어, 고속 인터페이스(HSI: high speed interface))를 통해 채널 컨트롤러(143)로 제공될 수 있다. 어드레스 신호는 어드레스 회로부(142)를 통해 수신되고, 행 디코더(146) 및 열 디코더(152)에 의해 디코딩되어 메모리 어레이(130)에 액세스한다. 데이터는 감지 회로부(150)를 사용하여 디지트 라인 상의 메모리 셀의 상태를 감지함으로써 메모리 어레이(130)로부터 판독될 수 있다. 메모리 셀의 상태는 메모리 셀 기술에 따라 예를 들어, 전압 및/또는 전류 변화, 자기 상태 변화, 저항 및 양자 상태 등으로서 감지될 수 있다. 감지 회로부(150)는 메모리 어레이(130)로부터 데이터의 페이지(예를 들어, 행)를 판독하고 래칭할 수 있다. I/O 회로부(144)는 데이터 버스(156)를 통해 호스트(111)와 양방향 데이터 통신을 위해 사용될 수 있다. 기록 회로부(148)는 메모리 어레이(130)에 데이터를 쓰는 데 사용될 수 있다. 일부 실시예에서, 기록 회로부(148)는 감지 회로부(150)와 결합된다. 다른 실시예에서, 감지 회로부(150)는 열 디코더(152) 및/또는 행 디코더(146)의 일부일 수 있다. 일부 실시예에서, 제어 버스(154)는 (예를 들어, 제어 버스(154)가 단방향 데이터 버스로서 동작하는 DDR 프로토콜에 따라) DRAM 제어 및 어드레싱을 위한 제어 및 어드레스 버스 모두로서의 역할을 할 수 있다. 도 1에서는 별도의 버스로 도시되어 있지만, 일부 실시예에서, 제어 버스(154) 및 데이터 버스(156)는 별도의 버스가 아닐 수 있다. 컨트롤러(140)(예를 들어, 메모리 컨트롤러)는 호스트(111)로부터 제어 버스(154)에 의해 제공되는 신호를 디코딩할 수 있다. 이러한 신호는 칩 인에이블 신호, 기록 인에이블 신호, 및 데이터 판독, 데이터 기록 및 데이터 소거 연산을 포함하는 메모리 어레이(130) 상에서 수행되는 DRAM 연산을 제어하는 데 사용되는 어드레스 래치 신호를 포함할 수 있다. 다양한 실시예에서, 컨트롤러(140)는 호스트(111)로부터 명령을 실행하고 메모리 어레이(130)에 대한 액세스를 시퀀싱하는 것을 담당할 수 있다. 컨트롤러(140)는 상태 머신, 시퀀서, 또는 일부 다른 유형의 컨트롤러를 포함할 수 있고 주문형 집적 회로(ASIC)의 형태로 하드웨어 및/또는 펌웨어(예를 들어, 마이크로코드 명령)를 포함할 수 있다. 다수의 실시예에서, 컨트롤러(140)는 비트 벡터 연산 타이밍 회로부(139)를 포함할 수 있다. 컨트롤러(140)는 예를 들어, 감지 회로부(150)를 제어할 수 있다. 예를 들어, 컨트롤러(140)는 클럭 신호의 생성 및 클럭 신호의 인가를 제어하여 비트 벡터 연산 수행과 관련하여 컴포넌트를 계산할 수 있다.
도 1에 도시된 바와 같이, 비트 벡터 연산 타이밍 회로부(139)는 타이밍 회로부(133) 및 타이밍 관리 회로부(135)를 포함할 수 있다. 타이밍 회로부(133)는 메모리 셀의 메모리 어레이(130)와 관련된 감지 회로부(150)와의 타이밍 조정을 제공하기 위해 FIFO 버퍼를 포함할 수 있다. 일부 실시예에서, 타이밍 회로부(133)는 원자 상태 머신과 같은 상태 머신을 포함할 수 있다.
타이밍 관리 회로부(135)는 메모리 어레이(130)와 관련된 행 어드레스 스트로브(RAS: row address strobe)/열 어드레스 스트로브(CAS: column address strobe)컴포넌트(136)를 사용하여 수행된 비트 벡터 연산과 관련된 로직 연산(예를 들어, 로직 연산의 시퀀스)의 타이밍을 조정하도록 구성될 수 있다. RAS 컴포넌트(136)는 메모리 어레이(130)의 행 및/또는 열 어드레스를 식별 및/또는 선택하기 위해 메모리 어레이(130)로 또는 메모리 어레이로부터 신호(예를 들어, RAS/CAS 신호)를 전송 및/또는 수신하도록 구성될 수 있다. 메모리 디바이스(120)는 일부 실시예에서 버스(154)를 통해 호스트(111)에 의해 발행될 수 있는 메모리 어레이 액세스 요청과 같은 DRAM 연산을 실행하도록 구성될 수 있다. 일부 실시예에서, 타이밍 관리 회로부(135)는 비트 벡터 연산의 수행 타이밍을 제어하는 명령을 실행하도록 구성될 수 있다.
하나 이상의 실시예에서, 컨트롤러(140)의 일부(예를 들어, 비트 벡터 연산 타이밍 회로부(139), 타이밍 회로부(133) 및/또는 타이밍 관리 회로부(135))은 예를 들어, 32 및/또는 64 비트 길이 명령에 대해 동작하는 감소된 명령 세트 컴퓨터(RISC: reduced instruction set computer) 유형 컨트롤러를 포함할 수 있다. 다양한 실시예에서, 타이밍 관리 회로부(135)는 타이밍 회로부(133)로부터 수신된 명령을 실행하여 감지 회로부(150)와 관련된 데이터 값을 포함하는 비트 벡터 연산의 수행을 유발하는 것을 담당할 수 있다.
아래에 추가로 설명되는 바와 같이, 다수의 실시예에서, 감지 회로부(150)는 각각 감지 증폭기 및 계산 컴포넌트를 포함할 수 있는 복수의 감지 컴포넌트를 포함할 수 있다. 계산 컴포넌트는 누산기로서의 역할을 할 수 있고, 감지 회로부(150)는 (예를 들어, 상보적인 디지트 라인과 관련된 데이터에 대해) 비트 벡터 연산을 수행하는 데 사용될 수 있다. 다수의 실시예에서, 감지 회로부(150)는 입력으로서 메모리 어레이(130)에 저장된 데이터를 사용하여 비트 벡터 연산을 수행하고/수행하거나 (예를 들어, 열 디코드 신호를 발화시키지 않고) 디지트 라인 어드레스 액세스를 통해 데이터를 전달하지 않고 연산의 결과를 메모리 어레이(130)에 다시 저장하는 데 사용될 수 있다. 예를 들어, 다양한 연산(예를 들어, 비트 벡터 연산)은 (예를 들어, (예를 들어, 컨트롤러(140) 상에 또는 다른 곳에서) 메모리 디바이스(120) 상에 위치된 ALU 회로부와 같은 호스트(111) 및/또는 다른 프로세싱 회로부와 관련된 프로세싱 리소스에 의해) 감지 회로부(150) 외부의 프로세싱 리소스에 의해 수행되는 것이 아니라 (또는 이와 관련하여) 감지 회로부(150)를 사용하여 그리고 그 내부에서 수행될 수 있다. 다수의 실시예에서, 감지 회로부(150)(예를 들어, 다수의 감지 컴포넌트)는 SIMD(단일 명령 다중 데이터) 방식으로 비트 벡터 연산을 실행하는 데 사용될 수 있으며 감지 컴포넌트는 열 기반으로 1-비트 프로세싱 요소로서의 역할을 한다. 감지 회로부(150)가 비트 벡터 연산을 실행하는 실시예에서, 감지 회로부(150)는 "메모리 내 프로세서"로서 역할을 하고/하거나 이로 지칭될 수 있다. 더 충분히 후술되는 바와 같이, 일부 실시예에서, 감지 회로부(150)는 시퀀서(예를 들어, 시퀀서(132)와 유사)를 포함할 수 있다. 다른 실시예에서, 이웃하는 감지 컴포넌트는 서로 간에 데이터 비트를 교환할 수 있으며, 따라서 다중 데이터 소스에 기초한 계산을 생성할 수 있다. 다른 실시예에서, 감지 컴포넌트는 감지 회로부(150) 내의 그 위치에 따라 상이한 계산을 생성할 수 있고, 따라서 VLIW 또는 SIMD 방식으로 계산을 제공할 수 있다. 감지 회로부(150)가 비트 벡터 연산을 실행하는 실시예에서, 감지 회로부(150)는 "메모리 내 프로세서"로서 역할을 하고/하거나 이로 지칭될 수 있다. 더 충분히 후술되는 바와 같이, 일부 실시예에서, 감지 회로부(150)는 시퀀서(예를 들어, 시퀀서(132)와 유사)를 포함할 수 있다.
다양한 접근법에서, 피연산자와 관련된 데이터는 예를 들어, 감지 회로부를 통해 메모리로부터 판독될 수 있고 I/O 라인을 통해(예를 들어, 로컬 I/O 라인 및/또는 글로벌 I/O 라인을 통해) 외부 메모리 어레이 ALU 회로부에 제공될 수 있다. 외부 메모리 어레이 ALU 회로부는 다수의 레지스터를 포함할 수 있고 피연산자를 사용하여 비트 벡터 연산을 수행하고 결과는 I/O 라인을 통해 어레이로 다시 전달될 수 있다. 다른 실시예에서, 감지 회로부(150)는 메모리 어레이(130)에 저장된 데이터에 대해 비트 벡터 연산을 수행하고 감지 회로부(150)에 커플링된 I/O 라인(예를 들어, 로컬 I/O 라인)을 인에이블하지 않고 그 결과를 메모리 어레이(130)에 다시 저장하도록 구성된다.
다수의 실시예에서, 메모리 어레이(130) 및 감지 회로부(150) 외부의 회로부는 연산을 수행하는 데 필요하지 않을 수 있는데, 이는 감지 회로부(150)가 외부 프로세싱 리소스를 사용하지 않고 적절한 비트 벡터 연산을 수행할 수 있기 때문이다. 따라서, 감지 회로부(150)는 이러한 외부 프로세싱 리소스(또는 적어도 이러한 외부 프로세싱 리소스의 대역폭 소비)를 적어도 어느 정도 보완 및/또는 대체하기 위해 사용될 수 있다. 그러나, 다수의 실시예에서, 감지 회로부(150)는 외부 프로세싱 리소스(예를 들어, 호스트(111))에 의해 수행되는 로직 연산에 추가하여 로직 연산을 수행하기 위해 (예를 들어, 명령을 실행하기 위해) 사용될 수 있다. 예를 들어, 호스트(111) 및/또는 감지 회로부(150)는 특정 로직 연산 및/또는 특정 수의 로직 연산만을 수행하도록 제한될 수 있다.
I/O 라인을 인에이블하는 것은 디코드 신호(예를 들어, 열 디코드 신호)에 커플링된 게이트 및 I/O 라인에 커플링된 소스/드레인을 갖는 트랜지스터를 인에이블(예를 들어, 턴 온)하는 것을 포함할 수 있다. 그러나, 실시예는 어레이의 열 디코드 라인을 인에이블하지 않고 감지 회로부(예를 들어, 감지 회로부(150))를 사용하여 로직 연산을 수행하는 것으로 제한되지 않는다. 로컬 I/O 라인이 감지 회로부(150)를 통한 로직 연산을 수행하는 것과 관련하여 사용되는지 여부에 관계없이, 로컬 I/O 라인(들)은 결과를 메모리 어레이(130)로 다시 전달하지 않고 적절한 위치로 (예를 들어, 외부 레지스터로) 전달하기 위해 인에이블될 수 있다.
본 개시의 다양한 실시예는 SNN에서 스파이킹 이벤트를 프로세싱하는 것에 관한 것으로, 보다 구체적으로 PIM 스파이킹 이벤트 연산을 수행하는 것에 관한 것이다. 본원에 설명된 다양한 실시예에 따르면, SNN에서, 소스 뉴런의 시냅스-전 스파이크 신호는 PIM 연산을 수행함으로써 목적지 뉴런으로 라우팅된다. 예를 들어, SNN은 하나 이상의 저항성 메모리 어레이 상에서 PIM 연산을 수행하여 적어도 부분적으로 에뮬레이팅된다. 추가적으로 그리고 더욱 구체적으로, 본원에 설명된 다양한 실시예에 따라, SNN에서, PIM 연산은 특히 그 적절한 목적지에 따라 시냅스-전 이벤트를 필터링하고, 시냅스-전 스파이크 이벤트가 트리거링되는 때를 결정하고, 시냅스-전 스파이크 이벤트가 스파이크 이벤트가 되는 때를 결정하고, 뉴런 멤브레인 전위를 유지하고, 스파이크 이벤트를 생성하고, 시냅스 가중치를 조정하는 등을 위해 수행된다.
도 2는 다중 레벨의 뉴런을 포함하는 SNN(200)의 실시예를 도시한다. SNN(200)은 시냅스(230)(또한 시냅스 연결이라고도 칭함)를 통해 제2 레벨의 뉴런(예를 들어, 목적지 뉴런(220-1), 목적지 뉴런(220-2) 및 목적지 뉴런(220-3)을 포함하는 목적지 뉴런(220))에 연결된 제1 레벨의 뉴런(예를 들어, 소스 뉴런(210-1), 소스 뉴런(210-2) 및 소스 뉴런(210-3)을 포함하는 소스 뉴런(210))을 포함한다. 간결함과 명료함을 위해, SNN(200)에는 2개의 레벨의 뉴런만이 도시되어 있다. 그러나, SNN(200)은 임의의 수의 레벨의 뉴런을 포함할 수 있다. 또한, 각각의 레벨의 뉴런은 임의의 수의 뉴런을 포함할 수 있다. 예를 들어, SNN(200)의 임의의 레벨의 소스 뉴런은 각각 수천개의 뉴런을 포함할 수 있으며, 여기서 제1 레벨의 각각의 뉴런(예를 들어, 소스 뉴런(210))은 다음 레벨의 각각의 뉴런(예를 들어, 목적지 뉴런(220))과의 시냅스(230)(또는 시냅스 연결(230))을 갖는다. 이러한 예에서, 시냅스(230-1)는 뉴런(210-1)을 뉴런(220-1)과 연결하고, 시냅스(230-2)는 뉴런(210-2)을 뉴런(220-1)과 연결하고, 시냅스(230-3)는 뉴런(210-3)을 뉴런(220-1)과 연결한다. 마찬가지로, 뉴런(210-2)은 각각의 목적지 뉴런(220)과 시냅스 연결을 갖고, 뉴런(210-3)은 목적지 뉴런(220) 각각과 시냅스 연결을 갖는다.
소스 뉴런(210)의 각각은 SNN(200)(미도시)의 이전 레벨 또는 계층에서 다수의 뉴런에 의해 생성된 입력(예를 들어, 스파이크 이벤트(205))을 수신할 수 있다. 이와 같이, 소스 뉴런(210)은 목적지 뉴런으로 고려될 수 있으며, 이전 레벨의 뉴런은 소스 뉴런으로 고려될 수 있다. 본 명세서에서는 표현하기 쉽도록 "레벨"의 용의가 사용된다. 레벨은 고정된 경계를 갖지 않으며, 레벨은 선택된 그룹, 랜덤 선택을 포함하여 뉴런 기능, 로컬성, 근접성 등과 같은 특정 기준에 의해 선택된 뉴런의 임의의 그룹일 수 있다. 따라서, 뉴런은 레벨 내에서 연결을 형성할 수 있다. 따라서, 임의의 레벨의 소스 뉴런 그룹의 임의의 뉴런은 또한 임의의 다른 레벨의 목적지 뉴런의 임의의 그룹의 목적지 뉴런일 수 있다. 유사하게, 임의의 레벨의 목적지 뉴런 그룹의 임의의 뉴런은 또한 임의의 다른 레벨의 임의의 소스 뉴런 그룹의 소스 뉴런일 수 있다. 스파이크 이벤트(205)는 소스 뉴런(210)에 대한 입력 전류를 나타낼 수 있다. 이러한 전류는 뉴런(예를 들어, 뉴런(210))의 뉴런 멤브레인에 축적되어 멤브레인 전위를 충전할 수 있다. 멤브레인 전위가 임계값에 도달하면, 뉴런은 다음 레벨의 뉴런(예를 들어, 목적지 뉴런(220))으로 전달되는 출력 스파이크를 생성하고 발화한다.
하나의 레벨의 뉴런(예를 들어, 소스 뉴런(210))으로부터 다음 레벨의 뉴런(예를 들어, 목적지 뉴런(220))으로의 스파이크의 전달은 시냅스(230)(또는 시냅스 연결)를 통해 달성될 수 있다. 시냅스(230)는 소스 뉴런(210)으로부터 출력 신호(예를 들어, 스파이크)를 수신하고 해당 신호를 목적지 뉴런(220)으로 송신할 수 있다. 예를 들어, 뉴런(210-1)이 하나 이상의 스파이크 이벤트(205)를 수신하고 임계 전위 값에 도달하면, 뉴런(210-1)은 "스파이킹"되고 출력 스파이크는 (1) 시냅스(230-1)를 통해 목적지 뉴런(220-1), (2) 시냅스를 통해 목적지 뉴런(220-2) 및 (3) 시냅스를 통해 목적지 뉴런(220-3)으로 송신된다.
추가적으로, 시냅스(230)는 소스 뉴런(210)으로부터 출력 신호를 수신할 때 조정 가능한 시냅스 가중치에 따라 신호를 스케일링할 수 있다. 이와 같이, 시냅스는 결합된 스케일링된 신호들을 입력 신호(들)로서 목적지 뉴런에 제공한다. 예를 들어, 뉴런(210-1)이 하나 이상의 스파이크 이벤트(205)를 수신하고 임계 전위 값에 도달할 때, 뉴런(210-1)은 "스파이킹"되고 출력 스파이크는 (1) 시냅스(230-1)를 통해 목적지 뉴런(220-1), (2) 시냅스를 통해 목적지 뉴런(220-2) 및 (3) 시냅스를 통해 목적지 뉴런(220-3)으로 송신된다. 예를 들어, 시냅스(230-1)를 따른 뉴런(210-1)으로부터 뉴런(220-1)으로의 스파이크 신호는 시냅스 가중치, W_1에 의해 스케일링되고(그리고 뉴런(210-1)으로부터 뉴런(220-2 및 220-3)으로의 스파이크 신호는 동일하거나 다른 가중치에 의해 스케일링됨), 시냅스(230-2)를 따른 뉴런(210-2)으로부터 뉴런(220-1)으로의 스파이크 신호는 시냅스 가중치, W_2에 의해 스케일링되고(그리고 뉴런(210-2)으로부터 뉴런(220-2 및 220-3)으로의 스파이크 신호는 동일하거나 다른 가중치에 의해 스케일링될 수 있음), 시냅스(230-3)를 따른 뉴런(210-3)으로부터 뉴런(220-1)으로의 스파이크 신호는 시냅스 가중치, W_3에 의해 스케일링된다(그리고 뉴런(210-3)으로부터 뉴런(220-2 및 220-3)으로의 스파이크 신호는 동일하거나 다른 가중치에 의해 스케일링될 수 있음). 따라서, 목적지 뉴런(220)은 대응하는 결합된 입력 신호에 기초하여 출력 스파이크(예를 들어, 스파이크 이벤트(207))를 생성할 수 있다. 그런 다음, 출력 스파이크(예를 들어, 스파이크 이벤트(207))는 SNN(200)의 다른 시냅스 네트워크를 사용하여 다른 레벨 또는 계층의 뉴런(미도시)으로 송신된다.
SNN에서 스파이킹 이벤트를 프로세싱하는 데 필요한 대역폭은 상당히 클 수 있다. 이하의 설명은 SNN을 프로세싱하는 데 필요한 대역폭의 예를 제공한다. 일반적으로, SNN에서, 1 밀리초(ms)마다, 뉴런의 3 내지 5%가 스파이크를 생성한다. 다양한 실시예에서, 각각의 스파이크 이벤트는 작은 데이터 구조: 소스 뉴런 ID 및 스파이크 타임 스탬프(스파이크 타임 스탬프는 선택 사항이며 추가로 도시되는 바와 같이 SNN 시간 간격으로부터 추론될 수 있음)에 의해 표현된다. 평균적으로 각각의 SNN 뉴런은 약 1000개의 다른 뉴런에 연결된다. 뉴런이 생성하는 스파이크는 약간의 지연 후에 모든 연결에 전달된다. 전달 시 이러한 스파이크 이벤트는 시냅스 이벤트가 된다. 예를 들어, 스파이크 이벤트는 소스 뉴런 ID가 목적지 시냅스 ID와 매칭될 때 시냅스 이벤트가 되고, 스파이크 플러스 연결 플러스 연결 지연 시간에 SNN 시스템 실시예에 의해 생성된 스파이크 타임 스탬프는 현재 SNN 시스템 타임 스탬프에 대응한다.
또한, 지연 값은 각각의 연결에 대해 상이하며 일반적으로 평균(부동 소수점 또는 정수)으로 1 내지 100 ms 또는 50 ms이다. 스파이크 타임 스탬프는 각각의 스파이크 이벤트에 대해 고유하다. 결과적으로, 특정 시냅스에서 도달 예정일 때 적시에 스파이크를 전달하는 것이 바람직할 수 있다. 백만(M) 뉴런을 갖는 작은 SNN의 경우(인간 뇌의 0.001%): 5% 스파이크 x 1 M 뉴런 x 뉴런 당 1000개 연결 x 시냅스 이벤트 당 64 바이트(b) = 400 MB/ms 또는 400 GB/s이다. 즉, SNN을 에뮬레이팅하는 컴퓨팅 시스템은 400 MB/ms(또는 400 GB/s)를 송신하기 위한 하드웨어와 대역폭을 갖는 것이 필요하다. 일부 통상의 컴퓨팅 시스템에서, 프로세싱 리소스(예를 들어, 프로세서 및 관련 기능 유닛 회로부)는 버스를 통해 이러한 요건에서 데이터를 송신할 수 없다. 따라서, 높은 데이터 송신 대역폭을 필요로 하는 SNN 이벤트(예를 들어, 시냅스-전 이벤트, 스파이킹 이벤트 등)를 프로세싱하는 컴퓨팅 시스템이 필요하다. 더욱 상세히 후술되는 바와 같이, 고대역폭 요건은 저항성 메모리 어레이에 대한 계층적 라우팅 및 컴팩트 이벤트 저장에 의해 충분히 충족될 수 있다. 예를 들어, 저항성 메모리 어레이 상에 구현된 PIM 연산은 외부 통신을 감소시키고 제거함으로써 시간을 절약하고/절약하거나 전력을 보존할 수 있다. 본원에서 더욱 상세히 설명되는 바와 같이, (도 2의 SNN(200)과 같은) SNN은 하나 이상의 저항성 메모리 어레이(예를 들어, 도 1의 메모리 어레이(130)) 상에서 PIM 연산을 수행함으로써 적어도 부분적으로 에뮬레이팅될 수 있다.
도 3은 스파이크 이벤트의 데이터 분할 및 라우팅을 위한 시스템(300)의 실시예를 도시한다. 시스템(300)은 메모리 블록(310)과 같은 다수의 메모리 블록 및 네트워크(350)를 포함한다. 다양한 실시예에서, 메모리 블록(310)은 저항성 메모리 어레이를 포함한다. 일반적으로 저항성 메모리 어레이는 메모리 셀을 포함하는 비휘발성 랜덤 액세스 컴퓨터 메모리의 유형이고, 이의 저항은 (즉, 메모리 셀을 통해 인가된 전압의 함수로서 메모리 셀을 통해 흐르는 전류의 양)은 변화될 수 있다. 이러한 메모리 셀은 메모리 소자, PCM 셀, 3D X-포인트, 다이오드형 셀 및 트랜지스터 기반 셀일 수 있으며, 이의 임계 전압이 조정될 수 있으므로 이러한 조정은 메모리 셀(예를 들어, 플로팅 게이트 트랜지스터를 갖는 플래시 메모리 소자)에 걸쳐 전류를 변조하는 능력을 제공할 수 있다. 다양한 실시예에서, 메모리 블록(310)은 단일 메모리 다이, 메모리 타일 등을 포함한다.
메모리 블록(310)은 SNN에서 뉴런(330)의 서브세트를 포함한다. 뉴런(330)은 SNN에서 뉴런의 임의의 서브세트일 수 있다. 메모리 블록(310)은 뉴런과 뉴런들 사이의 시냅스(예를 들어, 시냅스(230))를 모두 포함한다는 것을 이해해야 한다. 이와 같이, 뉴런(330)은 또한 뉴런과 관련된 시냅스를 포함할 수 있다.
일 예에서, 뉴런(330)은 SNN의 특정 계층 또는 레벨에 있는 뉴런을 포함한다. 이러한 예에서, 도 2를 참조하면, 뉴런(330)은 목적지 뉴런(220)을 포함한다. SNN에서 뉴런의 다른 서브세트는 네트워크(350)에도 커플링된 메모리의 다른 블록(미도시)에 저장된다. 이와 같이, SNN(예를 들어, SNN(200))의 뉴런 및 시냅스는 블록으로 분할되고 이러한 블록은 네트워크(350)에 의해 연결된다. 다양한 실시예에서, 네트워크(350)는 디지털 또는 아날로그일 수 있는 링 또는 토러스(torus) 토폴로지를 포함한다. 뉴런의 분할은 계층적 블록 조직을 포함할 수 있음을 이해해야 한다. 예를 들어, 제1 큰 메모리 블록은 많은 더 작은 메모리 블록의 집합이다.
특정 시간 간격(예를 들어, 1 ms마다)에서, 뉴런의 블록은 스파이크 이벤트를 생성한다. 예를 들어, 하나 이상의 뉴런(330)(예를 들어, 목적지 뉴런(220))은 네트워크(350)를 통해 다른 블록(미도시)의 다른 뉴런으로 브로드캐스팅되는 스파이크(316)(예를 들어, 스파이크 이벤트(207))를 생성한다. 동시에(예를 들어, 동일한 시간 간격 또는 기간 내에서) 동시에(예를 들어, 동일한 시간 간격 또는 기간 내에서) 생성된 다른 블록으로부터의 스파이크(312)는 다수의 블록(예를 들어, 시스템(300)의 모든 단일 블록)에 도달한다. 예를 들어, 다른 블록(예를 들어, 다른 블록에 저장된 소스 뉴런(210))으로부터의 스파이크(312)는 블록(310)에서 뉴런(330)으로 브로드캐스팅된다. 일부 예에서, 시간의 간격, 기간 또는 지속 시간은 시간 양자로 지칭될 수 있고, 간격, 시간 간격 및 일련의 시간 간격은 일련의 시간 양자(quanta)로 지칭될 수 있다.
다양한 실시예에서, 1 M 뉴런 및 64 b 스파이크 이벤트 데이터에 대해, 네트워크(350)를 통한 스파이크의 브로드캐스트는 예를 들어, 스파이킹된 뉴런의 5% x 1 M 뉴런 x 시냅스 이벤트 당 64 b = 400 KB/ms 또는 400 MB/s로 추정될 수 있다. 또한, 일부 실시예에서, 시스템(300)은 시냅스 이벤트를 국부적으로 유지하기 위해 40 MB의 저장소를 필요로 할 수 있다(예를 들어, 400 KB x 100 ms 최대 지연). 네트워크(350)를 통한 스파이크 이벤트의 브로드캐스트는 공유된 메모리(예를 들어, 1 M 뉴런마다 400 KB만이 필요함) 또는 특수 버스 또는 하이브리드 접근법(둘 모두의 조합)을 통해 구현될 수 있다.
일부 실시예에서, 시스템(300)의 메모리의 하나 이상의 블록(예를 들어, 각각의 블록)은 필터를 포함한다. 예를 들어, 블록(310)은 필터(320)를 포함한다. 필터(320)는 블록(310)에서 목적지를 갖는 스파이크를 통과시키도록 구성된다. 보다 구체적으로, 예를 들어, 각각의 시간 양자(예를 들어, 1 ms마다)에서, 필터(320)는 스파이크(312)를 필터링하고 블록(310)에서 목적지를 갖는 필터링된 스파이크(314)를 통과시킨다.
다양한 실시예에서, 필터(320)는 뉴런 ID에 적어도 부분적으로 기초하여 스파이크(312)를 필터링할 수 있다. 예를 들어, 스파이크(312)는 뉴런 ID(예를 들어, 소스 뉴런의 ID)를 포함하고 뉴런(330)은 시냅스 ID(즉, 이러한 시냅스가 연결된 소스 뉴런 ID와 매칭되는 시냅스의 ID)를 포함한다. 이와 같이, 필터(320)는 뉴런(330)의 시냅스 ID와 매칭되는 뉴런 ID를 갖는 필터링된 스파이크(314)를 통과시킨다. 1 M 뉴런, 및 32 b 뉴런 ID에 대해, 각각의 블록에 대한 각각의 로컬 필터(예를 들어, 블록(310)의 필터(320))는 모든 블록에서 예를 들어, 200 KB/ms 또는 200 MB/s의 속도로 부분 어드레스 매치를 수행할 수 있다(즉, 5% 스파이크 x 1 M 뉴런 x 뉴런 ID 당 32 b = 200 KB/ms 또는 200 MB/s).
다양한 실시예에서, 필터(320)에 대해 대안적인 매칭 또는 필터링 기능은 사전 결정된 알고리즘 할당을 갖는 어드레스 스킴을 포함할 수 있다. 예를 들어, 블록 ID가 소스 뉴런 ID의 일부와 매칭되도록 타깃 뉴런을 할당한다. 이는 고유한 토폴로지로 인해 항상 가능한 것은 아닐 수 있다. 일부 실시예에서, 필터 및 어드레스 스킴의 조합을 포함하는 하이브리드 방법이 사용될 수 있다. 동일한 아키텍처(링과 같은 버스 상에 조직된 블록)가 다른 신경 모델: 예를 들어, 심층 신경망(DNN: deep neural network), 인공 신경망(ANN: artificial neural network), 장단기 메모리(LSTM: long short-term memory)에 대해 사용될 수 있으며, 여기서 후속 계층이 다음 계층으로 데이터를 공급하도록 각각의 블록은 신경망 계층의 세트를 순차적으로 저장한다. 결과적으로, 블록은 데이지-체인(daisy-chain) 방식으로 작동한다. 예를 들어, 각각의 블록은 이전 블록으로부터 데이터를 수신하고 후속 블록을 위해 데이터를 버스로 푸싱(pushing)한다. 또한 스파이크 대신, 이는 사용된 신경 모델에 특정적인 임의의 데이터일 수 있다. 낮은 레이턴시(latency) 로컬 통신의 이점을 얻을 수 있으므로 블록 내에서 신경망의 재귀(recursion)가 가능하다.
도 4는 필터(400)의 실시예를 도시한다. 일 실시예에서, 필터(400)는 필터(320)(도 3에 도시)이다. 필터(400)는 저항성 메모리 어레이(420)를 포함하고, 다른 블록의 뉴런으로부터 (예를 들어, 다른 블록에 저장된 뉴런(210)(도 2 참조)으로부터) 스파이크 이벤트(예를 들어, 도 3에 도시된 스파이크(312))를 수신하도록 구성된다. 예를 들어, 스파이크 이벤트는 소스 뉴런(210)에서 소스 뉴런의 아이덴티피케이션과 같은 스파이킹된 뉴런 아이덴티피케이션(410)를 포함한다. 다양한 실시예에서, 스파이킹된 뉴런 아이덴티피케이션(410)는 N-비트 수(예를 들어, 00110011과 같은 8-비트 수)를 포함할 수 있다.
저항성 메모리 어레이(420)는 다수의 워드 라인(422) 및 비트 라인(424)을 포함한다. 저항성 메모리 어레이(420)의 워드 라인과 비트 라인의 각각의 교차점에는 저항성 메모리 소자(예를 들어, 메모리 소자, PCM 요소, MTX 등)가 있다. 저항성 메모리 어레이(420)의 각각의 비트 라인은 목적지 시냅스 아이덴티피케이션의 비트를 저장한다. 예를 들어, 도 4에 도시된 바와 같이, 제1 비트 라인은 각각의 메모리 소자를 따라 목적지 시냅스 아이덴티피케이션(예를 들어, 01111111)을 저장하고, 제2 비트 라인은 각각의 메모리 소자를 따라 목적지 시냅스 아이덴티피케이션(예를 들어, 111101111)을 저장하는 등이다. 도 3을 참조하면, 저항성 메모리 어레이(420)에 저장된 목적지 시냅스 아이덴티피케이션은 뉴런(330)의 시냅스 아이덴티피케이션을 포함할 수 있다. 특정 목적지 뉴런의 각각의 시냅스는 동일한 비트 라인 상에 저장될 수 있거나(비트 라인이 도 4에 도시된 것보다 훨씬 더 긴 것으로 가정), 또는 특정 목적지 뉴런의 시냅스는 몇몇 비트 라인 상에 저장될 수 있다.
스파이킹된 뉴런 ID(410)는 워드 라인(422) 상에서 송신된다. 예를 들어, 스파이킹된 뉴런 ID(410)의 비트0("0")은 제1 워드 라인으로 송신된다. 스파이킹된 뉴런 ID(410)의 비트1("0")은 제2 워드 라인 상에서 송신된다. 스파이킹된 뉴런 ID(410)의 비트2("1")는 제3 워드 라인 송신되는 등이다. 다양한 실시예에서, 워드 라인(422)으로 입력되는 스파이킹된 뉴런 ID는 양극 및 음극 순방향 전파 위상으로 그룹화된다. 예를 들어, 워드 라인(422)으로의 스파이킹된 뉴런 ID(410)의 입력은 2단계로 이루어질 수 있다. 예를 들어, 비트의 제1 위상은 각각의 워드 라인 상에서 송신된다. 제1 위상이 송신되면, 비트의 제2 위상이 각각의 워드 라인 상에서 송신된다.
워드 라인(422)을 따라 스파이킹된 뉴런 ID(410)의 송신 시, 각각의 감지 증폭기(426)의 출력은 스파이킹된 뉴런 ID(410)와 비트 라인(424)을 따라 저장된 목적지 뉴런 ID 사이에 매치가 있는지 여부를 나타낸다. 일 실시예에서, 비트의 제1 위상이 각각의 워드 라인 상에서 송신된 후 부분적인 매치가 결정된다. 대안적으로, 비트의 제1 및 제2 위상이 워드 라인(422) 상에서 송신된 후에 완전한 매치가 결정된다. 메모리 소자가 예를 들어, QLC, MLC, 플래시 메모리 셀 등을 포함하는 플래시 메모리 소자와 같은 다중 비트를 저장할 수 있는 경우 2개 초과의 위상이 필요할 수 있다.
다양한 실시예에서, 미스매치의 결정은 스냅백(snapback) 이벤트의 검출에 기초한다. 대안적으로, 매치의 결정은 스냅백 이벤트의 무검출에 기초한다. 제1 위상에서 스냅백의 검출은 제2 위상을 중단하는 데 사용될 수 있다. 특정 조건에서, 스냅백 이벤트는 갑작스러운 컨덕턴스로 이어질 수 있다. 스냅백 이벤트의 발생은 메모리 셀의 전류-전압 거동에 상당한 영향을 미치는 경향이 있다. 이와 같이, 예를 들어, 메모리 셀에서 스냅백 이벤트 발생에 응답하는 감지 회로가 제공될 수 있다. 감지 회로는 메모리 셀에 인가되는 전위의 변화를 개시하는 하나 이상의 피드백 신호를 생성할 수 있다.
표 1은 스냅백 이벤트 검출에 기초하여 매치 또는 미스매치를 결정하는 것을 나타낸다.
표 1:
Figure pct00001
입력 상태는 스파이킹된 뉴런 ID(410)의 비트 값을 나타낸다. 예를 들어, 비트0의 입력 상태는 "0"이고 비트1의 입력 상태는 "1"인 등이다. 마찬가지로, 메모리 상태는 비트 라인을 따른 메모리 소자의 비트 값을 나타낸다. 예를 들어, 제5 비트 라인(좌측으로부터)을 참조하면, 목적지 뉴런 ID는 00110011이다. 이와 같이, 제1 비트의 메모리 상태는 "0"이고, 제2 비트의 메모리 상태는 "0"이고, 제3 비트의 메모리 상태는 "1"인 등이다.
비트 라인 및 워드 라인 선택 방향은 모두 각각의 위상에서 변경될 수 있음에 유의한다. 또한, 선택되지 않은 비트 라인과 워드 라인은 금지 레벨로 유지된다. 입력 패턴은 워드 라인과 비트 라인 신호 모두에 영향을 미친다.
매치의 표시는 비트 라인에 대응하는 감지 증폭기에 의해 생성된 "1"(예를 들어, 좌측으로부터 제5 비트 라인)의 출력(428)이다. 출력(428)은 특정 목적지 뉴런의 매칭되는 대상 시냅스 ID의 비트마스크이다. 다중 목적지 뉴런을 타깃화하는 동일한 소스 뉴런으로 인해 다중 시냅스가 동일한 ID를 가질 수 있다.
도 5는 시스템(500)의 실시예를 도시한다. 일 실시예에서, 시스템(500)은 시스템(300)과 유사하다. 예를 들어, 시스템(500)은 블록(310), 필터(320), 뉴런(330) 및 네트워크(350)를 포함한다. 또한, 필터(320)는 네트워크(350)로부터 진입 스파이크(312)를 수신하도록 구성되고, (뉴런(330)으로부터의) 진출 스파이크(316)가 네트워크(350)로 송신된다. 다양한 실시예에서, 블록(310) 내의 데이터의 송신은 라우팅 요소(530)(예를 들어, 데이터 버스)를 통해 이루어진다.
스파이크 이벤트(520)는 필터(320)에 의해 필터링되는 스파이크 이벤트를 포함할 수 있다. 일 실시예에서, 스파이크 이벤트(520)는 필터링된 스파이크 이벤트(314)(적어도 도 3과 관련하여 설명됨)이다. 예를 들어, 스파이크 이벤트(520)는 블록(310)에서 목적지를 갖고 필터(320)를 통과하는 스파이크(312)의 서브세트이다. 스파이크 이벤트(520)는 (필터(320)를 통과할 때) 블록(310)에 저장된다. 다양한 실시예에서, 스파이크 이벤트(520)의 각각의 스파이크 이벤트는 메모리 어드레스, 스파이킹된 뉴런 ID 및 스파이크 시간을 포함한다.
블록(310)은 필터(320)를 통과하고 후속하여 블록(310)에 저장되는 스파이크 이벤트(520)에 대한 레이블을 저장하도록 구성된 포인터 테이블(510)을 포함한다. 예를 들어, 포인터 테이블(510)은 필터(320)를 통과한 스파이크 이벤트의 다양한 그룹의 포인터에 대한 레이블을 포함한다. 다양한 실시예에서, 모든 시간 양자에서(예를 들어, 1 ms마다), 스파이크 이벤트(520)의 그룹은 필터(320)를 통과하고 지정된 메모리 어레이(들)의 블록(310)에 저장된다. 그룹에는 포인터 테이블(510)에서 레이블 "0"이 할당되며, 이는 (가장 최근 시간 양자에서) 필터(320)를 통과한 가장 최근의 스파이크 이벤트임을 나타낸다. 그런 다음, 이전에 필터링된 다른 그룹의 레이블이 1만큼 증분된다. 한 쌍의 뉴런 사이의 (예를 들어, 소스 뉴런과 목적지 뉴런 사이의) 가능한 최대 지연의 시간 간격만큼 많은 그룹이 있다. 예를 들어, 최대 지연이 100 ms이고 시간 양자가 1 ms이면, 100개의 그룹 및 관련 레이블이 있다. 100으로 증분되는 레이블은 "0"이 되고, 이전에 저장된 스파이크 이벤트는 방금 도달한(가장 최근의 시간 양자) 스파이크 이벤트(또는 단순히 스파이크)의 그룹으로 덮어쓴다.
최대 지연은 100 ms보다 크거나 작을 수 있다. 예를 들어, 스파이크 타이밍 종속 소성(STDP: spike-timing-dependent plasticity)은 시간 양자의 관점에서 측정된 단지 최대 지연보다 더 많은 그룹을 필요로 할 수 있으며(예를 들어, 최대 지연이 100 ms이고 단일 시간 간격이 1 ms인 경우 100개 그룹), 이는 아래에서 추가로 상세히 설명될 것이다. 일반적으로, STDP는 뇌의 뉴런들 간의 연결(즉, 시냅스)의 강도를 조정하는 생물학적 프로세스이다. 해당 프로세스는 특정 뉴런의 출력 및 입력 활동 전위(또는 스파이크)의 상대적 타이밍에 기초하여 연결 강도를 조정한다.
일 실시예에서, 스파이크 이벤트의 스파이크 시간은 정확한 타이밍을 요구하는 SNN 서브-섹션에 대한 시간 양자화를 감소시키기 위한 선택적인 데이터이다. 스파이크의 시간은 대략적인(coarse-grain) 시간이 시간 간격 및 관련 레이블에 의해 암시되므로 0과 1 사이이다(시간 간격 내의 정확한 값). 결과적으로, 스파이크 이벤트(520)(및 포인터 테이블(510))는 시간 간격에 의해 버킷화된(bucketized) 모든 시냅스-전 스파이크 이벤트의 컴팩트한 표현이다.
도 6은 시냅스-전 스파이크 이벤트를 시냅스 이벤트로 변환하도록 구성된 시스템(600)의 실시예를 도시한다. 특히, 시스템(600)은 메모리 블록(예를 들어, 블록(310)) 내에서 시냅스-전 스파이크 이벤트를 변환하도록 구성된다.
시스템(600)은 메모리 블록의 메모리 어레이에 저장되는 스파이크 이벤트(620)를 포함한다. 다양한 실시예에서, 스파이크 이벤트(620)(예를 들어, 필터링된 스파이크(314), 스파이크 이벤트(520))는 예를 들어, 소스 뉴런으로부터의 시냅스-전 스파이크 이벤트이다. 예를 들어, 도 2를 참조하면, 스파이크 이벤트(620)는 소스 뉴런(210)으로부터의 시냅스-전 스파이크 이벤트이다.
시냅스(630)(예를 들어, 시냅스(230))는 소스 뉴런으로부터 출력 신호(예를 들어, 스파이크)를 수신하고 해당 신호를 목적지 뉴런으로 송신할 수 있다. 시냅스(630)는 각각의 뉴런의 시냅스가 사전 결정된 가능한 인접 영역에 저장되도록 메모리 블록의 메모리 어레이에 저장된다. 시냅스는 또한 스파이크 이벤트(620)를 저장하는 메모리 어레이와 별개의 구분되는 (그리고 메모리 어레이(640)와 상이함) 메모리 어레이에 저장될 수 있다.
각각의 뉴런(예를 들어, 목적지 뉴런)은 시냅스-전 (진입) 연결을 갖는다. 다양한 실시예에서, 연결(예를 들어, 시냅스)은 시냅스 전 뉴런 ID, 정확한 지연 값(선택 사항) 및 연결 가중치와 같은 정보를 포함한다.
또한, 각각의 연결은 예를 들어, 1 ms와 100 ms 사이와 같은 일정 범위의 지연 값을 포함하는 지연을 갖는다. 지연 값은 시간 양자의 증분으로 양자화되거나(예를 들어, 1 ms, 2 ms, 3 ms 등) 정확할 수 있다(예를 들어, 1.23523 ms). 지연의 양자화된 부분에 따라 1 시간 양자의 증분으로 버킷에 저장되거나 할당된 각각의 뉴런(구체적으로 시냅스-전 뉴런 ID, 즉, 소스 뉴런의 ID)의 시냅스 연결: 예를 들어, 모두 1 ms의 지연을 갖는 연결의 버킷, 모두 2 ms의 지연을 갖는 연결의 버킷 등이다. 정확한 지연 값은 양자화를 감소시키는 데 사용될 수 있지만, 선택 사항이다. 정확한 지연 값은 양자화된 지연에 대한 추가이며: 예를 들어, 2 ms(버킷 번호로부터 암시됨) + 0.34234 ms = 2.34234 ms, 여기서 2.34234 ms는 정확한 지연 값이다. 높은 정확도를 요구하는 일부 SNN 섹션에 대해서는 정확한 지연 값이 필요할 수 있다. 실시예에 따라, 이는 부동 소수점 또는 정수 또는 일부 다른 맞춤형 포맷일 수 있다.
뉴런의 각각의 시냅스 연결이 양자의 버킷으로 추가로 그룹화되는 뉴런의 수에 의해 그룹화된 시냅스(630)가 있다. 예를 들어, 뉴런(632)(예를 들어, 목적지 뉴런)의 시냅스 연결은 그 지연 값에 의해 1-2 ms 지연에 대응하는 1 ms 시간 간격, 2-3 ms에 대응하는 2 ms 시간 등과 다수의 시간 양자로 분리된다. 유사하게, 뉴런(634)(예를 들어, 목적지 뉴런)의 시냅스 연결은 1-2 ms 지연에 대응하는 1 ms 시간 간격, 2-3 ms 지연에 대응하는 2 ms 시간 간격 등과 같은 다수의 시간 간격으로 분리된다. 또한, 상이한 뉴런으로부터 동일한 시간 간격에 대응하는 시냅스 그룹이 메모리 어레이 섹션에 동일한 워드 라인을 따라 저장되거나 할당될 수 있다. 시냅스 연결은 임의의 수의 시간 간격(예를 들어, 1 ms 시간 간격에서 1 ms 내지 50 ms)으로 분리될 수 있음을 이해해야 한다. 또한, 시냅스(630)는 2개의 뉴런(632 및 634)을 포함하지만, 시냅스(630)는 임의의 수의 뉴런(예를 들어, 목적지 뉴런)을 포함할 수 있음을 이해해야 한다.
각각의 시간 양자에서, 스파이크 이벤트(620)의 포인터는 이전에 설명된 바와 같이 증분된다(예를 들어, 0 ms 버킷은 1 ms 버킷으로 증분되고, 1 ms 버킷은 2 ms 버킷으로 증분되는 등).
또한, 각각의 시간 양자에서, 스파이크 이벤트(620)의 모든 버킷에서 스파이킹된 뉴런 ID는 대응하는 시냅스 버킷에서 시냅스-전 뉴런 ID와 매칭된다(예를 들어, 1 ms 스파이크 버킷은 1 ms 시냅스 버킷과 매칭되고, 2 ms 스파이크 버킷은 2 ms 시냅스 버킷과 매칭되는 등이다). 특히, 각각의 시간 양자에서, 스파이크 이벤트(620)의 버킷(예를 들어, 2 ms 버킷)의 스파이크 뉴런 ID가 시냅스(630)의 대응하는 버킷의 시냅스-전 뉴런 ID와 매칭되는지가 결정될 수 있다. 예를 들어, 스파이크 이벤트(620)의 2 ms 버킷의 스파이크 뉴런 ID가 뉴런(632) 및 뉴런(634)의 2 ms 버킷의 시냅스-전 뉴런 ID와 매칭되는지를 결정하는 매칭 기능이 구현된다. 다양한 실시예에서, 매칭 기능은 상술한 바와 같이, 필터(320) 및/또는 필터(400)에 의해 구현된 필터링과 유사하다. 예를 들어, 월드 라인 드라이버는 시냅스-전 뉴런 ID의 비트에 대응하는 신호로 워드 라인을 구동할 수 있고(도 4 참조), 감지 증폭기는 비트 라인 상의 미스매치의 매칭을 결정할 수 있다.
매치는 스파이크 이벤트가 특정 시간 양자와 해당 특정 시냅스 연결에 대해 도달 예정임을 나타낸다. 예를 들어, 2 ms 시간 양자의 스파이크 이벤트는 시간 양자 2 ms의 시냅스-전 ID와 매칭된다. 유사하게, 1 ms의 시간 양자의 스파이크 이벤트는 시간 양자 1 ms의 시냅스-전 ID와 매칭되는 등이다. 다양한 실시예에서, 많은 시냅스 이벤트는 각각의 뉴런에 대한 시간 양자마다 생성된다.
다양한 실시예에서, 매치 기능은 병렬이다. 예를 들어, 각각의 시냅스 버킷은 다른 메모리 어레이에 있을 수 있으며 매칭 기능은 병렬로 매칭을 결정할 수 있다. 다양한 실시예에서, 뉴런은 많은 서브어레이 등에 분포될 수 있다. 다양한 실시예에서, 많은 뉴런으로부터의 시냅스-전 뉴런 ID는 워드 라인을 따라 할당될 수 있어 많은 뉴런으로부터의 동일한 지연 버킷에 속하는 ID가 매치에 대해 병렬로 테스트된다. 이는 병렬 검색 연산으로 귀결될 수 있다. 대안적으로, 매칭은 직렬 방식으로 수행될 수 있다. 예를 들어, 매칭 기능은 실제 시간 양자가 만료되기 전에 버킷이 생성되는 한 단일 어레이에서 해당 시간에 하나의 버킷에 대해 수행될 수 있다. 이러한 방법의 많은 파이프라인 및 멀티플렉싱된 변형이 가능하다.
매칭 기능에 의해 생성된 매칭에 대한 응답으로, 각각의 시간 양자에서, 시냅스 이벤트의 비트마스크가 생성된다. 예를 들어, 매칭 기능은 도 4의 필터(400)와 유사하게 구현된다. 매치의 출력은 비트마스크를 포함한다. 다시 도 6을 참조하면, 매칭 기능의 매치의 출력은 목적지 시냅스(614)(예를 들어, 비트마스크)에 대응하는 매칭된 시냅스 ID이다.
일부 실시예에서, 비트마스크는 상이한 뉴런에 대해 병합될 수 있다. 그러나, 이는 공간 효율성을 희생시키면서 수행될 수 있다. 예를 들어, 더 작은 공통 비트마스크를 병합하기 위해 고려되는 뉴런 그룹에 걸쳐 더 많은 공통 연결이 있다. 일 예에서(즉, 시간 양자에 공통 시냅스-전 뉴런이 없음), 공통 비트마스크는 그룹의 뉴런 수만큼 실질적으로 증가한다. 다른 예에서(즉, 시간 양자의 모든 시냅스-전 뉴런이 공통), 공통 비트마스크는 모두에 대해 동일하다. 일부 실시예에서, 비트마스크는 각각의 뉴런에 대해 특정적이다. 일부 실시예에서, 시냅스 연결의 평균 5%는 각각의 시간 양자에서 시냅스 이벤트를 얻는다. 예를 들어, 1000개의 진입 연결의 경우 이는 시간 양자 당 50개의 시냅스 이벤트로 귀결된다. 따라서, 비트마스크의 크기는 희소하다(1000에서 ~50 세트 비트). 비트마스크는 또한 압축될 수 있다.
일부 실시예에서, 매칭 기능이 회피될 수 있다. 예를 들어, 네트워크 연결이 패턴화되고 컴팩트한 방식으로 알고리즘적으로 설명될 수 있는 경우 매칭 기능이 회피될 수 있다(예를 들어, 어레이 공간을 희생하면서 3-비트 수 내지 8-비트 1-핫(hot)). 하이브리드 매칭 방법이 또한 구현될 수 있다(예를 들어, 계층적 라우팅 필터 및 매칭 기능, 이벤트 어드레스 및 매칭 기능 등).
다양한 실시예에서, 메모리 어레이(640)는 비트마스크에 따른 시냅스-전 이벤트의 적분을 용이하게 한다. 다양한 실시예에서, 메모리 어레이(640)는 스파이크 이벤트(620)를 저장하기 위한 메모리 어레이 및 시냅스(630)를 저장하기 위한 메모리 어레이와 별개이고 구분된다.
메모리 어레이(640)는 다수의 워드 라인(예를 들어, WL0 및 WL1) 및 다수의 비트 라인(예를 들어, BL0 및 BL1)을 포함한다. 메모리 소자(또는 저항성 디바이스)는 각각의 워드 라인과 비트 라인의 교차점에 있다. 다양한 실시예에서, 메모리 소자는 시냅스 연결의 가중치를 저장하는 데 이용된다. 예를 들어, 메모리 소자의 저항이나 컨덕턴스는 시냅스 연결의 가중치에 대응되게 조정된다. 시냅스 연결의 가중치는 단일 비트 라인 상의 하나 이상의 메모리 소자에 저장될 수 있다(또는 다중 비트 라인 상에 저장될 수 있음).
드라이버(642)는 하나 이상의 워드 라인 상의 매칭된 시냅스(예를 들어, 비트마스크)에 대응하는 신호(예를 들어, 전압 신호 또는 전류 신호)를 구동할 수 있다. 각각의 개별 비트 라인에서 감지 증폭기(예를 들어, 감지 증폭기(644 및 646))는 대응하는 메모리 소자로부터 출력되는 전류에 기초하여 출력 전압을 생성할 수 있다. (감지 증폭기를 포함하는) 적분 회로부(650)는 감지 증폭기의 출력을 적분할 수 있다. 뉴런의 임계 전위 값이 충족되면, 스파이크(616)가 생성될 수 있다. 따라서, 메모리 어레이(640)는 적어도 부분적으로 SNN에서 스파이킹 이벤트를 에뮬레이팅한다. 예를 들어, (1) 드라이버(642)에 의해 구동되는 신호는 시냅스-전 이벤트를 에뮬레이팅하고, (2) 워드 라인, 비트 라인 및 메모리 소자는 시냅스와 대응하는 가중치를 에뮬레이팅하고, (3) 감지 증폭기는 뉴런을 에뮬레이팅한다.
시냅스 이벤트의 적분은 (1) 시냅스 가중치의 디지털 표현 또는 (2) 시냅스 가중치의 아날로그 또는 혼합-신호 표현과 같은 데이터 표현에 따라 다양한 구현을 포함할 수 있다. 일 실시예에서, 시냅스 가중치가 디지털(부동 소수점 또는 정수)이면, 계산은 비트마스크의 "설정" 위치에 대한 시냅스 컨덕턴스 식의 내적이다. 예를 들어, 계산(또는 적분)은 일정한 시냅스 전류에 시냅스 가중치를 곱한 것에 기초한다. 다양한 실시예에서, 적분은 내장된 곱셈-누산(MAC: multiply-accumulate) 유닛(예를 들어, MAC 유닛(645))을 포함하는 감지 증폭기(예를 들어, 감지 증폭기(644 및 646))에 의해 수행된다. 다양한 실시예에서, 감지 증폭기는 뉴런 멤브레인 식에 대한 함수를 제공한다.
또한, 시냅스 가중치는 메모리 어레이(640)의 일부 섹션 상에서 비트-직렬 또는 비트-병렬 방식으로 디지털로 저장될 수 있다. 이러한 구현에서, 시간-양자화 효과가 바람직하지 않은 경우, 감지 증폭기는 각각의 시냅스-전 스파이크 이벤트 및 정확한 지연이 제공되는 타임 스탬프와 같은 선택적인 데이터를 사용하여 정확한 시간 스파이크에서 적분을 계산할 수 있다. 이러한 선택적인 데이터는 시냅스 이벤트가 다음 버킷으로 점프하게 할 수 있다(그러나 그 이상은 아님).
아날로그 또는 혼합-신호 구현에서, 시냅스 가중치는 다른(또는 동일한) 메모리 어레이에 저장된다. 각각의 가중치는 하나 이상의 저항성 메모리 셀로 표현될 수 있다. 비트마스크는 순차적으로 표현된다. 예를 들어, 드라이버(642)는 비트마스크를 순차적으로 구동한다. 이러한 시퀀스의 각각의 사이클에 대해, 관련 비트 라인(들)이 인에이블된다.
시퀀스의 크기는 얼마나 많은 뉴런이 공통 연결을 갖는지에 따른다. 예를 들어, 각각의 뉴런이 공통인 경우, 하나의 사이클에서 모든 비트 라인(또는 데이터 라인)에 대해 하나의 시퀀스가 제시된다. 다양한 실시예에서, 선택적인 데이터(예를 들어, 각각의 워드 라인에 대한 시냅스 전류, 정확한 시냅스 이벤트 시간 등)가 제공되면, 각각의 워드 라인은 시냅스 전류 강도에 따라 규정된 정확한 시간 값에서 구동된다.
일부 실시예에서, 워드 라인 상에서 구동되는 신호는 펄스, 주파수, 진폭(전류 및 전압), 형상(예를 들어, 톱니, 램프 업-다운(lamp up-down)), 스파이크 등과 같은 다양한 방식으로 인코딩될 수 있다. 위에서 언급한 바와 같이, 감지 증폭기는 신경 기능을 나타낸다. 예를 들어, 감지 증폭기는 비트 라인 상에서 전류 적분을 수행하고 멤브레인 전위 역학을 풀어서 및 유지하고 타깃 뉴런이 스파이킹될 때(예를 들어, 스파이크(616))를 검출한다. 더 나은 병렬 처리를 위해, 뉴런 및 관련 비트 라인이 복수의 그룹으로 분할되고 공유된 워드 라인 드라이버로 멀티플렉싱될 수 있다.
시냅스 가중치를 저장하는 것은 또한 매칭이 발생하는 동일한 어레이에서 수행될 수 있음을 이해해야 한다. 예를 들어, 시냅스-전 뉴런 ID는 가중치와 상호 혼합된다. 이러한 예에서, 메모리 어레이는 이중 기능을 수행할 것이며: 제1 사이클 세트에서 시냅스 마스크를 생성하고 제2 사이클 세트에서는 자체(워드 라인)에 시냅스 마스크를 피드백하지만 상이한 비트 라인(가중치 정보를 저장하는 비트 라인)을 타깃화함으로써 적분을 수행할 것이다. 이러한 사이클 세트는 더 나은 효율성을 위해 시간-멀티플렉싱되고 인터리빙(interleaving)될 수 있다.
도 7은 시냅스 가중화에서 STDP 결과의 예시적인 그래프를 도시한다. y 축은 시냅스 가중치(예를 들어, 컨덕턴스의 변화)를 나타내고 x 축은 시간을 나타낸다. 수직 라인(LTD와 LTP 사이)은 스파이크-후(예를 들어, 목적지 뉴런에 의해 생성된 스파이크)가 발생하는 시간을 나타낸다. 시냅스-후 뉴런이 스파이크를 생성하기 전에 시냅스-전 스파이크가 그 타깃 시냅스에 도달한 조건에 있어서, 그래프 부분(702)에 도시된 바와 같이, 대응하는 시냅스 가중치가 증가된다. 이러한 가중치 증가는 시냅스의 장기 증강(LTP: Long-Term Potentiation)으로 지칭될 수 있다. 그래프 부분(702)으로부터 LTP의 양이 시냅스-전과 시냅스-후 스파이크 시간 사이의 차이의 함수로서 대략 기하 급수적으로 감소할 수 있음을 관찰할 수 있다. 대조적으로, 시냅스-후 뉴런이 스파이크를 생성한 후 시냅스-전 스파이크가 그 타깃 시냅스에 도달한 조건에 있어서, 그래프 부분(704)에 도시된 바와 같이 대응하는 시냅스 가중치가 감소한다. 이러한 가중치 감소는 장기 저하(LTD: Long-Term Depression)로 지칭될 수 있다. 그래프 부분(704)으로부터 LTD의 양이 시냅스-전 및 시냅스-후 스파이크 시간 사이의 차이의 함수로서 대략 기하 급수적으로 감소할 수 있음을 관찰할 수 있다. 도 7에 도시된 바와 같이, 시냅스 가중치-트레이닝 곡선은 비대칭일 수 있다. 부분(702)에 의해 표현된 LTP 가중치 증분은 짧은 스파이크 간 간격에 대해 더 클 수 있지만, LTD 가중치 간격보다 더 빠르게 감쇠할 수 있다.
다양한 실시예에서, LTD 윈도우 내에 도달한 스파이크-후 시냅스 이벤트에 대해, 시냅스-후 뉴런 스파이크 시간이 알려져 있다. 따라서, 시냅스 컨덕턴스의 조정은 알려진 시냅스-후 뉴런 스파이크 시간에 기초하여 쉽게 결정된다. 다양한 실시예에서, LTP 윈도우 내의 스파이크-전 시냅스 이벤트의 경우, (1) 시냅스-후 뉴런 스파이크 시간이 알려져 있지 않고; (2) 모든 시간 양자는 멤브레인 전위를 교란하고 시냅스-후 뉴런의 스파이크 시간에 영향을 줄 수 있는 새로운 시냅스-전 이벤트를 가져올 수 있고(흥분성 시냅스의 경우 그 시냅스-전 이벤트는 시냅스-후 뉴런 스파이크 생성을 촉진하고 억제 시냅스의 경우 시냅스-전 이벤트는 시냅스-후 뉴런 스파이크 생성을 지연시킴) (3) 시간 양자는 1 ms 정도인 반면, LTP 윈도우는 약 50 ms에 걸쳐 있기 때문에 시냅스 컨덕턴스의 조정이 문제이다. 따라서, 시냅스-후 스파이크 시간은 타깃 뉴런이 현재 시간 양자에서 실제로 스파이킹할 때까지 비확정적(indeterministic)이다.
생물학은 모든 단일 시냅스에서 "적격 윈도우"를 개방하여 신경 조절제, "제2 메신저" 및 수용체를 사용하여 셀 내 레벨에서 이 문제를 해결한다. 이러한 윈도우는 STDP 규칙에 비례하여 시간에 따라 감쇠하며: 즉, 처음 몇 마이크로초 동안 시냅스는 타깃 뉴런 스파이크와 그 포텐셜 파동이 시냅스로 역전파되는 경우 변화에 매우 민감하다. 그러나, 실제 시냅스 컨덕턴스는 이러한 역전파된 포텐셜 파동 없이 변하지 않는다. 다른 시냅스-전 이벤트가 시냅스-후 뉴런 스파이크 전에 도달하면, 이미 개방된 "적격 윈도우"에 추가될 것이다.
컴퓨터-에뮬레이팅 또는 시뮬레이팅된 네트워크에서, 다양한 실시예에서, 위에 언급된 문제를 해결하기 위해, LTP 윈도우의 시간 길이 동안 모든 또는 가장 최근의 시냅스-전 이벤트(즉, 타임 스탬프)가 저장된 후, 시냅스-후 뉴런이 스파이크를 생성하면, 이러한 이벤트가 재생되고 시냅스 컨덕턴스 값이 그에 따라 조정된다. 다른 실시예에서, 위에서 언급한 문제는 메모리 어레이의 메모리 셀에 "적격 윈도우" 피처를 구현함으로써 해결된다.
다시 도 6을 참조하면, 감지 증폭기로부터의 피드백 경로는 각각의 비트 라인에 제공된다. 일 실시예에서, 피드백 경로는 STDP 규칙에 따라 시냅스-전 이벤트에 도달하는 스파이크-후의 문제를 해결하기 위해 저하를 제공한다.
도 8은 본 개시의 다양한 실시예에 따른 시냅스-전 스파이크 이벤트를 가리키는 포인터에 레이블을 할당하는 방법(800)의 흐름도이다. 방법(800)은 본 개시에서 설명된 적어도 하나의 실시예에 따라 배열될 수 있다. 방법(800)은 일부 실시예에서 도 1의 시스템(100), 도 3의 시스템(300), 도 5의 시스템(500) 및/또는 도 6의 시스템(600) 또는 다른 디바이스 또는 시스템과 같은 디바이스 또는 시스템에 의해 수행될 수 있다. 별개의 블록으로 도시되어 있지만, 다양한 블록이 원하는 구현에 따라 추가 블록으로 분할되거나 더 적은 수의 블록으로 결합되거나 제거될 수 있다.
방법(800)의 블록(810)에서, SNN의 일련의 시간 양자의 제1 시간 양자에서, 제1 시냅스-전 스파이크 이벤트가 SNN의 각각의 소스 뉴런으로부터 수신된다. 제1 시냅스-전 스파이크 이벤트는 각각의 소스 뉴런 아이덴티피케이션을 포함한다. 예를 들어, 적어도 도 3을 참조하면, 제1 시간 양자(예를 들어, 1 ms)에서, 스파이크(312)는 SNN의 소스 뉴런(예를 들어, 소스 뉴런(210))으로부터 수신된다. 일 실시예에서, 각각의 뉴런으로부터의 시냅스-전 스파이크는 소스 뉴런(210-1)의 ID, 소스 뉴런(210-2)의 ID 등과 같은 소스 뉴런 ID를 포함한다.
블록(820)에서, 메모리 블록에서 목적지 뉴런의 목적지 시냅스 아이덴티피케이션과 적어도 부분적으로 매칭되는 소스 뉴런 아이덴티피케이션을 갖는 제1 시냅스-전 스파이크 이벤트의 그룹이 필터링된다. 예를 들어, 필터(320)는 스파이크(312)의 소스 뉴런 ID가 뉴런(330)의 목적지 시냅스 ID(예를 들어, 목적지 뉴런(220)의 ID)와 적어도 부분적으로 매칭되는지를 결정한다. 매치가 결정되면, 필터(320)는 필터링된 스파이크(314)를 블록(310)으로 전달한다.
블록(830)에서, 제1 시냅스-전 스파이크 이벤트의 그룹이 메모리 블록에 저장된다. 필터링된 스파이크(314)의 결정 시, 필터링된 스파이크(314)는 블록(310), 예를 들어, 블록(310)의 저항성 메모리 어레이에 저장된다. 예를 들어, 도 5를 참조하면, 스파이크 이벤트(520)(예를 들어, 필터링된 스파이크(314))는 블록(310)에서 저장된다.
블록(840)에서, 레이블이 제1 시냅스-전 스파이크 이벤트의 그룹을 가리키는 메모리 블록의 포인터 테이블의 포인터에 할당된다. 레이블은 SNN의 일련의 시간 양자의 시간 양자에 대응한다. 예를 들어, 여전히 도 5을 참조하면, 포인터 테이블(510)은 스파이크 이벤트(520)의 포인터와 관련된 레이블을 포함한다.
본 개시의 범위를 벗어나지 않고 방법(800)에 수정, 추가 또는 생략이 이루어질 수 있다. 예를 들어, 방법(800)의 동작은 상이한 순서로 구현될 수 있다. 또한, 개요 동작 및 액션은 예로서만 제공되며, 동작 및 액션 중 일부는 선택적이거나, 개시된 실시예의 본질을 손상시키지 않으면서 더 적은 동작 및 액션으로 결합되거나, 추가 동작 및 액션으로 확장될 수 있다. 예를 들어, 다양한 실시예에서, 각각의 연속적인 시간 양자에서, 포인터 테이블(510)의 레이블은 연속적인 시간 양자로 증분된다.
도 9는 본 개시의 다양한 실시예에 따른 시냅스-전 스파이크 이벤트와 시냅스 연결의 매칭의 비트마스크를 생성하는 방법(900)의 흐름도이다. 방법(900)은 본 개시에서 설명된 적어도 하나의 실시예에 따라 배열될 수 있다. 방법(900)은 일부 실시예에서, 도 1의 시스템(100), 도 3의 시스템(300), 도 5의 시스템(500) 및/또는 도 6의 시스템(600) 또는 다른 디바이스 또는 시스템과 같은 디바이스 또는 시스템에 의해 수행될 수 있다. 별개의 블록으로 도시되어 있지만, 다양한 블록이 원하는 구현에 따라 추가 블록으로 분할되거나 더 적은 수의 블록으로 결합되거나 제거될 수 있다.
방법(900)의 블록(910)에서, 목적지 뉴런의 시냅스 연결(즉, 시냅스 및 그 관련 변수 또는 값)은 제1 메모리 어레이에 저장되고, 각각의 시냅스 연결은 지연 값 및 진입 뉴런 아이덴티피케이션을 포함한다. 각각의 시냅스-전 연결은 지연 값에 기초하여 함께 그룹화되며, 여기서 각각의 지연 값은 SNN의 일련의 시간 양자의 시간 양자에 대응한다. 예를 들어, 시냅스(630)는 메모리 어레이에 저장된다. 뉴런(632 및 634)의 시냅스는 시간 양자의 버킷(예를 들어, 1 ms 버킷, 2 ms 버킷 등)으로 그룹화된다. 뉴런의 각각의 시냅스는 아이덴티피케이션을 포함한다.
블록(920)에서, 각각의 소스 뉴런으로부터의 시냅스-전 스파이크 이벤트는 제2 메모리 어레이에 저장된다. 각각의 수의 시냅스-전 스파이크 이벤트는 진입 뉴런 아이덴티피케이션을 포함하며, 시냅스-전 스파이크 이벤트의 수는 SNN의 일련의 시간 양자의 시간 양자에 의해 함께 그룹화된다. 예를 들어, 도 6을 참조하면, 스파이크 이벤트(620)는 시간 양자의 버킷(예를 들어, 0 ms 버킷, 1 ms 버킷, 2 ms 버킷 등)에 저장된다. 각각의 스파이크 이벤트(620)는 시간 지연(예를 들어, 대응하는 시간 양자) 및 진입 뉴런 ID(예를 들어, 소스 뉴런 ID)를 포함한다.
블록(930)에서, 목적지 뉴런의 시냅스 연결의 진입 뉴런 아이덴티피케이션은 제1 시간 양자에서 소스 뉴런의 진입 뉴런 아이덴티피케이션과 매칭된다. 예를 들어, 소스 뉴런(소스 뉴런 ID를 가짐)의 스파이크 이벤트(620)는 시냅스(630)의 목적지 뉴런 ID와 매칭된다. 이러한 매칭 피처는 (필터(400)의) 필터(320)와 유사한 필터에 의해 구현될 수 있다.
블록(940)에서, 매칭에 응답하여, 시냅스-전 스파이크 이벤트의 비트마스크에 대응하는 출력 신호가 제2 메모리 어레이에서 생성된다. 예를 들어, 목적지 시냅스(614)의 ID를 갖는 소스 뉴런의 매칭된 ID의 비트마스크가 매칭에 응답하여 생성된다. 이러한 예에서, 목적지 시냅스(614)는 그런 다음 드라이버(642)를 통해 워드 라인 상에서 구동하기 위해 메모리 어레이(640)로 전송된다.
본 개시의 범위를 벗어나지 않고 방법(900)에 수정, 추가 또는 생략이 이루어질 수 있다. 예를 들어, 방법(900)의 동작은 상이한 순서로 구현될 수 있다. 또한, 개요 동작 및 액션은 예로서만 제공되며, 동작 및 액션 중 일부는 선택적이거나, 개시된 실시예의 본질을 손상시키지 않으면서 더 적은 동작 및 액션으로 결합되거나, 추가 동작 및 액션으로 확장될 수 있다.
도 10은 시냅스-전 스파이크 이벤트들에 적어도 부분적으로 기초하여 시냅스 이벤트들을 생성하도록 구성된 시스템(1000)의 실시예를 도시한다. 특히, 시스템(1000)은 메모리(예를 들어, 메모리 어레이(1010)) 내에서 스파이크 이벤트들을 생성하도록 구성된다.
적어도 하나의 실시예에서, 시스템(1000)은 도 7과 관련하여 설명된 STDP 규칙에 따라 스파이크 이벤트들을 생성한다. 전술한 바와 같이, STDP 규칙을 고려하여, LTD 윈도우 내에 도달하는 스파이크-후 시냅스 이벤트의 경우, 시냅스-후 뉴런 스파이크 시간이 알려져 있다. 따라서, 시냅스 컨덕턴스의 조정은 알려진 시냅스-후 뉴런 스파이크 시간에 기초하여 용이하게 결정된다. 그러나, LTP 윈도우 내의 스파이크-전 시냅스 이벤트의 경우, 시냅스-후 스파이크 시간은 타깃 뉴런이 실제로 현재 시간 양자에서 스파이크할 때까지 비확정적이다.
본 명세서에 기술된 다양한 실시예에서, 상기 언급된 문제를 해결하기 위해, LTP 윈도우에 수신된 시냅스-전 이벤트들이 저장되고, 그런 다음, 시냅스-후 뉴런이 스파이크를 생성하면, 시냅스-전 이벤트들이 재생되고 그에 따라 시냅스 컨덕턴스 값들이 조정된다.
시스템(1000)은 메모리 어레이(1010)를 포함한다. 적어도 하나의 실시예에서, 메모리 어레이(1010)는 전술한 바와 같이 메모리 어레이(610)와 유사하다. 메모리 어레이(1010)는 다수의 워드 라인들(예를 들어, WL0, WL1 등) 및 다수의 비트 라인들(예를 들어, BL0, BL1, BL2 등)을 포함한다. 각 워드 라인과 비트 라인의 교차점에는 메모리 셀이 배치된다. 예를 들어, 메모리 어레이(1010)는 워드 라인(WL0)을 따라 (각각 BL0, BL1 및 BL2의 교차점에서) 메모리 셀들(1030, 1032 및 1034)을 포함하고, 워드 라인(WL1)을 따라 (각각 BL0, BL1 및 BL2의 교차점에서) 메모리 셀들(1040, 1042 및 1044)을 포함한다. 다양한 실시예에서, 메모리 셀은 메모리 소자를 포함한다. 다양한 실시예들에서, 메모리 셀들은 시냅스 연결의 가중치를 저장하기 위해 이용된다. 예를 들어, 메모리 셀의 저항 또는 컨덕턴스는 시냅스 연결의 가중치에 대응하도록 조정된다. 시냅스 연결의 가중치는 단일 비트 라인 상의 하나 이상의 메모리 셀들에 저장될 수 있다(또는 다수의 비트 라인들 상에 저장될 수 있다).
드라이버(1020)는 하나 이상의 워드 라인들 상에서 매칭된 뉴런들(예를 들어, 비트 마스크)에 대응하는 신호들(예를 들어, 전압 신호 또는 전류 신호)을 구동시킬 수 있다. 하나 이상의 비트 라인들에 커플링된 하나 이상의 감지 증폭기들(예를 들어, 감지 증폭기(1052))은 대응하는 메모리 셀로부터 출력된 전류에 기초하여 출력 전압을 생성할 수 있다.
적분 회로(1050)(하나 이상의 감지 증폭기를 포함함)는 감지 증폭기(1052)의 출력을 적분할 수 있다. 뉴런의 임계 전위 값이 충족되면, 스파이크(1060)가 생성될 수 있다. 따라서, 시스템(1000)은 적어도 부분적으로 SNN에서 스파이킹 이벤트들을 에뮬레이트한다. 예를 들어, (1) 드라이버에 의해 구동되는 신호들은 시냅스-전 이벤트들을 에뮬레이트(emulate)하고, (2) 메모리 셀들은 적어도 부분적으로 시냅스들 및 대응하는 시냅스 가중치들을 에뮬레이트하며, (3) 적분 회로부(1050)(감지 증폭기를 포함함)는 하나 이상의 뉴런들을 에뮬레이트한다. 예를 들어, 적분 회로부(1050) 및/또는 감지 증폭기(1052)는 SNN에서 뉴런을 에뮬레이트할 수 있다. 이와 같이, 감지 증폭기(1052) 및 적분 회로(1050)는 본 명세서에서 "뉴런", "뉴런 회로부", 또는 간단히 "회로부"로서 설명될 수 있다.
다음은 스파이크-후 도달 시냅스-전 이벤트 관리에 관한 것이다. 스파이크-후 도달 시냅스-전 이벤트는 시냅스-전 신호가 목적지 뉴런이 스파이크를 발생시킨 후 목적지 시냅스에 도달하는 경우이다. STDP 규칙을 고려하여, 전술한 바와 같이, 시냅스 컨덕턴스(또는 시냅스 가중치)는 LTD 윈도우에 따라 조정(예를 들어, 저하)된다.
메모리 어레이(1010)는 적분 회로(1050)로부터 적분 회로(1050)에 연결된 비트 라인들로의 피드백 경로들을 포함한다. 예를 들어, 감지 증폭기(1052)는 비트 라인(BL0)에 대한 피드백(1055)에 커플링되고, 비트 라인(BL1)에 대한 피드백(1057)에 커플링된다.
적분 회로(1050)(또는 뉴런 회로부)로부터 각각의 비트 라인들로 거꾸로 피드백 경로를 제공하는 것은 스파이크-후 도달 시냅스-전 이벤트들의 문제를 해결한다. STDP 규칙의 LTD 윈도우에 따라, 이러한 이벤트의 시냅스는 저하(depress)되어야 한다. 이와 같이, 피드백 경로들은 정확한 전위의 감쇠 바이어스를 제공한다. 일 실시예에서, 감쇠 바이어스(decaying bias)는 비트 라인 상의 각 메모리 셀에 인가된다(예를 들어, 각 셀에 전체적으로 적용). 예를 들어, 감쇠 바이어스 신호가 피드백(1055)으로부터 BL0에 인가된다. 따라서, 감쇠 바이어스는 BL0 상의 셀(1030) 및 셀(1040)에 인가된다. 마찬가지로, 예를 들어, 감쇠 바이어스 신호는 피드백(1057)으로부터 BL1에 인가된다. 따라서, 감쇠 바이어스는 BL1 상의 셀(1032) 및 셀(1042)에 인가된다. 감쇠 바이어스는 또한 차동적일 수 있는 감지 증폭기(1052)를 동작시키기 위해 차동적일 수 있다.
다양한 실시예들에서, 피드백 신호(또는 감쇠 바이어스)는 메모리 어레이 내의 비트 라인 상에서 구동되는 시냅스-전 이벤트에 응답하여 적분 회로(1050)(또는 뉴런 회로부)에 의해 생성된다. 추가적으로, 다양한 실시예들에서, 적분 회로(1050)(또는 뉴런 회로부)는 메모리 어레이에 의해 수신되는 시냅스-전 신호를 나타내는 출력 신호를 메모리 어레이로부터 수신한다.
임의의 시냅스-전 이벤트가 이 감쇠 바이어스 동안(LTD 윈도우에서) 도달하면, 시냅스-전 이벤트에 대응하는 셀 컨덕턴스 값은 그것들이 도달하는 순간의 감쇠 바이어스에 따라 조정된다. 비트 라인에 인가되는 감쇠 바이어스는 펄스, 주파수, 진폭(전류 및 전압), 형상(예를 들어, 톱니(saw tooth), 램프 업-다운(ramp up-down)), 스파이크(spikes) 등과 같은 다수의 방식으로 비트 라인 피드백 전위 또는 전류를 변화시킴으로써 인코딩될 수 있다. 드라이버(1020)에 의해 워드 라인들 상에서 구동되는 시냅스-전 신호들(시냅스-전 이벤트들을 에뮬레이트함)은 또한 피드백 전위 또는 전류를 변화시킴으로써 인코딩될 수 있다. 인코딩된 바이어스와 인코딩된 시냅스-전 신호(드라이버(1020)에 의해 구동됨) 사이의 상호작용 결과, 메모리 셀 컨덕턴스는 LTD 규칙에 따라 조정되고, 실질적으로 동시에 감지 증폭기(1052)는 조정된 컨덕턴스에 따라 시냅스 전류를 수신한다. 시냅스 전류들은 감지 증폭기(1052)의 출력을 적분할 수 있는 (하나 이상의 감지 증폭기들을 포함하는) 적분 회로(1050)에 의해 적분될 수 있다. 뉴런의 임계 전위 값이 충족되면, 출력 스파이크(1060)가 생성될 수 있다.
다양한 실시예들에서, 메모리 어레이(1010)는 메모리 셀 스냅백(snapback) 없이 서브 임계값 도메인에서 시냅스-전 전류들의 적분을 가능하게 한다. 전술한 바와 같이, 스냅백 이벤트는 메모리 셀에서 갑작스러운 컨덕턴스로 이어질 수 있다. 스냅백 이벤트의 발생은 메모리 셀의 전류-전압 거동에 상당한 영향을 미치는 경향이 있다. 메모리 어레이(1010)는 서브 임계값 도메인에서 동작을 가능하게 하기 때문에, 비트 라인에서의 전류 적분에 소비되는 전력은 매우 낮을 수 있다.
다양한 실시예에서, 메모리 어레이(1010)는 임계 지연 효과(threshold delay effect)를 가능하게 한다. 임계 지연 효과는 스냅백을 유도하지 않고 메모리 셀의 유효 임계값(및 전류-전압(I-V) 곡선)을 변화시키는 메모리 셀에 인가되는 바이어스(예를 들어, 단일 펄스 또는 다중 펄스)이다. 추가적으로, 바이어스의 효과는 일정 시간 후에 사라진다. 따라서, 비트 라인에 전체적으로 감소 피드백 바이어스를 인가하는 것이 아니라, 스파이크 후 바로 비트 라인에 임계 변조 바이어스 펄스를 인가할 수 있다. 그 결과, 개별 방식으로 비트 라인 상의 각 셀에 대한 임계값이 증가 또는 감소(구현에 따라)되고 있다. 즉, 각각의 메모리 셀에 대한 셀 감쇠 LTD 윈도우(I-V 곡선 드리프팅의 형태로)는 각각의 메모리 셀의 고유성으로 인해 고유하다(즉, 모든 셀은 다른 셀들과 약간 상이하다).
도 11은 임계 지연 효과의 가능한 분포를 도시한다. 하나 이상의 임계값들은 굵은 선들(예를 들어, 임계값(1110))에 의해 도시된다. 단일 펄스 또는 다중 펄스에 응답하여, 임계 분포는 점선(예를 들어, 시프트된 임계값(1120))으로 도시된 바와 같이 시프트된다. 다양한 실시예들에서, 임계 분포들은 긴 선택 시간들(바이어스-전(pre-bias))로 측정되는 경우 원점을 향해 시프트한다.
시냅스는 서로는 고유하지만 동일한 STDP 규칙을 따르기 때문에 임계 지연 효과는 시냅스 신경역학에서 바람직한 피처이다. STDP 규칙에 따르면, 각 시냅스에 대한 바이어스 드리프트는 지수적이어야 하며 50시간 양자에서 원래 상태로 복귀되어야 한다. 다양한 실시예들에서, 스파이크-후 워드 라인들 상에 도달하는 시냅스-전 이벤트들 각각은 그들이 도달하는 시간에 셀 I-V 곡선의 고유(그들의 타깃 셀들에 대한) "스냅샷(snapshot)"을 경험할 것이다. 예를 들어, 워드 라인(WL0) 상에서 구동되는 시냅스-전 신호는, 신호가 메모리 셀(1030)에 도달하는 시간에, 메모리 셀(1030)(도 10 참조)의 I-V 곡선의 "스냅샷"에 의해 수행될 수 있다. 또한, 메모리 셀에 시냅스-전 이벤트 도달 즉시, 메모리 셀의 I-V 곡선 "스냅샷"을 영구적으로 "고정(fix)"하기 위한 동작이 메모리 셀 컨덕턴스에 취해질 수 있다. 다양한 실시예들에서, I-V 곡선 "스냅샷"을 영구적으로 "고정"하는 동작은 (1) 리프레시 펄스들을 전송하는 동작 및/또는 (2) 뉴런당 2개의 메모리 셀들을 갖는 동작일 수 있다: 설명된 바와 같이 컨덕턴스 드리프팅(drifting) 또는 I-V 곡선을 위한 하나의 셀(예를 들어, 메모리 셀(1030))과 영구 컨덕턴스(예를 들어, "임계 지연 효과"와 상이한 것을 사용하는 것과 상이한 피처)를 고정하기 위한 다른 셀(예를 들어, 메모리 셀(1032); 도 10 참조). 추가적으로, 다양한 실시예들에서, 시냅스-전 이벤트가 메모리 셀에 도달할 때, 드리프팅 메모리 셀의 아날로그 값은 다른 메모리 셀로 복사된다. 이는, 예를 들어, 연속 근사 차동-감지 컨버터(successive approximation differential-sensing converter)(도시되지 않음)에 의해 수행될 수 있다. 일부 실시예들에서, 임계 지연 효과는 스파이크-후 도달 시냅스-전 이벤트들(LTD)에 대해 회피될 수 있다. 그러나, 임계 지연 효과는 LTP에 대해 매우 요구될 수 있다.
다음은 뉴런 스파이크 이전의 시냅스-전 이벤트 관리에 대한 설명이다. STDP 규칙을 고려하여, 전술한 바와 같이, 시냅스의 시냅스 컨덕턴스(또는 시냅스 가중치)는 LTP 윈도우에 따라 조정(강화)된다. 또한, LTP를 에뮬레이트하기 위한 도전은 비확정적 시냅스-후 스파이크 시간(post-synaptic spike time)이므로, 실제 스파이크가 방출될 때까지 시냅스-후 스파이크에 대한 모든 시냅스-전 이벤트의 기여는 알려지지 않는다는 것에 유의한다.
적어도 하나의 실시예에서, LTP 윈도우는 각각의 시냅스에 정렬된 시냅스-전 이벤트의 타임 스탬프(time stamp)를 저장함으로써 모델링된다. 시냅스-후 뉴런이 언젠가 스파이크할 때 타임 스탬프는 워드 라인에서 판독된다. 타임 스탬프와 스파이크 시간 사이의 시간 델타를 계산하고, 시간 델타에 따라 가중치를 조정한다. 예를 들어, 시냅스-전 신호(시냅스-전 이벤트에 기초함)는 시간(T1)에서 워드 라인(WL1) 상에서 구동된다. 시간(T1)은 그런 다음 셀(1044)(도 10 참조)과 같은 메모리 셀 상에 저장된다. 시간, T2에서, 스파이크(예를 들어, 스파이크(1060))는 뉴런의 스파이크를 에뮬레이트하는 적분 회로(1050)에 의해 생성된다. 그런 다음, T2 및 T1의 델타가 결정된다. 이어서, 메모리 셀(예를 들어, 셀(1042))의 컨덕턴스(예를 들어, 시냅스 가중치)는 STPD 규칙의 LTP 윈도우에 기초하여 조정된다. 예를 들어, 도 7을 참조하면, T2 및 T1의 델타는 그래프(700)의 부분(702)에 기초하여 결정되며, 여기서 부분(702)은 시냅스-전 및 시냅스-후 스파이크 시간들 사이의 차이의 함수로서 컨덕턴스의 변화를 나타낸다.
더욱이, 일부 실시예들에서, 임계 지연 효과는 시냅스 컨덕턴스의 변화가 가장 높을 때(임계값은 구현에 따라 최소 또는 최대로 감소됨) 시냅스-전 이벤트 도달(pre-synaptic event arrival)의 시간 양자에서 시냅스-후 스파이크가 발생한 것처럼, 컨덕턴스 증강을 "페이크(fake)" 또는 추정하는데 사용될 수 있다. (전술한 바와 같이) LTD 경우와 유사하게, I-V 곡선은 약 50 시간 양자 후에 원래 상태로 다시 드리프트할 것이다. 그러나 이 윈도우 동안 시냅스-후 뉴런 스파이크가 도달하면 정확한 시간에 I-V 곡선 "스냅샷"을 고려하고, 스파이크 시 셀 컨덕턴스를 영구적으로 고정시키기 위한 조치가 즉시 취해진다.
일부 실시예들에서, 메모리 셀 컨덕턴스는 컨덕턴스 증강을 추정하거나 "페이킹(faking)"에 의해 편향되기 때문에, 시냅스당 적어도 2개의 셀들이 사용된다(전술한 LTD 경우와 유사함). 예를 들어, 제1 메모리 셀(예를 들어, 메모리 셀(1030))은 정상 전류 적분을 위한 원래의 컨덕턴스 상태를 위해 사용되고, 제2 메모리 셀(예를 들어, 메모리 셀(1032))은 임계 변조를 위해 사용된다. 두 셀 모두 원점에서 동일한 컨덕턴스를 포함한다. 따라서, LTP 윈도우 내에 도달한 임의의 시냅스-전 이벤트는 제1 셀에 전류를 주입하고 멤브레인 전위 교란에 참여할 수 있고, 동시에, 컨덕턴스 증강을 "페이크"하거나 추정하는 제2 셀의 I-V 임계값를 재조정할 수 있다.
추가적으로, 일부 실시예들에서, 양쪽 셀들은 시냅스-후 스파이크의 시간에 동일한 컨덕턴스를 갖는다. 예를 들어, 임계 변조된 셀(예를 들어, 메모리 셀(1032))로부터의 컨덕턴스는 시냅스의 상태가 보존되도록 제1 셀(예를 들어, 메모리 셀(1030))로 "복사"된다. 스파이크-후 및 두 셀이 동일한 컨덕턴스의 "복사(copy)"를 취한 후 바로, 셀(예를 들어, 메모리 셀(1032)) 중 하나는 전술한 바와 같이 LTD 모드로 들어가고(임계값은 증가됨), 다른 셀(예를 들어, 메모리 셀(1030))은 전류 적분을 수행한다. 일부 실시예들에서, 단일 셀은 LTD 모드 및 전류 적분 둘 모두를 위해 사용될 수 있다. 일부 실시예들에서, LTD 모드 및 전류 적분을 구현하기 위해 2개 초과의 셀들이 사용된다.
자연 임계 드리프트(natural threshold drift)에 대안적으로, 강제 임계 조정은 매 시간 양자마다 사용된다(예를 들어, 시냅스 이벤트를 수신한 셀에 대해 매 시간 양자마다 95% 만큼 감소). 자연 임계 드리프트가 시냅스 이벤트를 에뮬레이트하기 위한 하나 이상의 요건에 맞지 않는 경우 강제 임계 조정이 사용될 수 있다. 강제 임계값은 임계값 조정 및 직접 사용 "영구" 임계값의 개선된 제어를 가능하게 한다. 추가적으로, 한 쌍의 셀들은 뉴런으로부터의 스파이크 신호에 따라 균등화될 수 있다. 균등화는 차동 증폭기를 포함하여 행해질 수 있다.
도 10을 참조하면, 일 예에서, 비트 라인(BL0)은 전류 적분을 위해 사용되고 비트 라인(BL1)은 뉴런의 변조(감지 증폭기(1052)에 의해 에뮬레이트됨)를 위해 사용된다. 시냅스-전 이벤트는 워드 라인(WL1)에 도달한다. 메모리 셀(1040)은 그 컨덕턴스를 통해 WL1 입력을 허용한다. 메모리 셀(1042)에 대한 바이어스는 시냅스-전 이벤트가 도달한 시간 양자에서 뉴런이 스파이크된 경우처럼 조정된다. 그 결과, 메모리 셀(1042)의 임계값은 STDP 규칙에 따라 감소(예를 들어, 바이어스가 최대로 조정됨)될 수 있다. 추가적으로, 메모리 셀(1042)의 바이어스는 50 ms(LTP 윈도우) 후에 그것의 원래 상태로 복귀된다. 얼마의 시간 양자화 후에, 뉴런(예를 들어, 감지 증폭기(1052))은 비트 라인(예를 들어, BL0) 상에서 충분한 전하를 적분하고 스파이크(예를 들어, 스파이크(1060))를 생성한다. 그 결과, 스파이크(1060)는 임계 변조를 위해 양쪽 비트 라인들에 다시 반사된다. 따라서, 워드 라인(WL0) 상에 도달하는 스파이크-후 시냅스-전 이벤트는 (비트 라인들 중 하나의 상에서) 전하 적분에 참여하고 메모리 셀들(1030 및 1040)을 저하(depress)시킨다.
도 12는 본 개시의 다양한 실시예들에 따른 시냅스의 시냅스 가중치를 조정하는 방법(1200)의 흐름도이다. 방법(1200)은 본 개시에서 설명된 적어도 하나의 실시예에 따라 배열될 수 있다. 방법(1200)은 일부 실시예들에서, 도 1의 시스템(100), 도 6의 시스템(600), 도 10의 시스템(1000) 또는 다른 장치 또는 시스템과 같은 장치 또는 시스템에 의해 수행될 수 있다. 이산 블록들로 예시되지만, 다양한 블록들은 원하는 구현에 따라 추가적인 블록들로 분할되거나, 더 적은 블록들로 결합되거나, 제거될 수 있다.
방법(1200)의 블록(1210)에서, 시냅스-전 스파이크 신호가 워드 라인 상에서 구동된다. 예를 들어, 드라이버(1020)는 메모리 어레이(1010)의 워드 라인 상에서 신호를 구동한다. 워드 라인 상에서 구동되는 신호는 뉴런에 의해 수신되는 시냅스-전 신호를 에뮬레이트한다.
블록(1220)에서, 뉴런에 의한 스파이크 신호의 생성 전에 워드 라인 상에서 구동되는 시냅스-전 스파이크 신호에 응답하여: (1) STDP(spike timing dependent plasticity) 규칙의 LTP(long-term potentiation) 윈도우에서 메모리 셀의 컨덕턴스를 증가시키기 위해 피드백 신호를 생성하고, (2) 상기 피드백 신호를 비트 라인으로 전송한다. 예를 들어, 감지 증폭기(1052)에 의해 스파이크(1060)의 생성 전에 그리고 드라이버(1020)에 의한 워드 라인(WL1) 상에서 시냅스-전 스파이크 신호 구동에 응답하여, 피드백 신호(예를 들어, 피드백(1055) 및/또는 피드백(1057))가 생성되어 워드 라인(WL1)에 커플링된 하나 이상의 메모리 셀들의 컨덕턴스를 증가시킨다. 특히, 피드백 신호는 워드 라인(WL1)으로 전송된다.
블록(1230)에서, 뉴런의 스파이크 신호의 생성 후 워드 라인 상에서 구동되는 시냅스-전 스파이크 신호에 응답하여: (1) STDP(spike timing dependent plasticity) 규칙의 LTP(long-term potentiation) 윈도우에서 메모리 셀의 컨덕턴스를 감소시키기 위한 피드백 신호를 생성하고, (2) 상기 피드백 신호를 비트 라인으로 전송한다. 예를 들어, 감지 증폭기(1052)에 의한 스파이크(1060)의 생성 후 그리고 드라이버(1020)에 의한 워드 라인(WL1) 상의 시냅스-전 스파이크 신호 구동에 응답하여, 피드백 신호(예를 들어, 피드백(1055) 및/또는 피드백(1057))가 워드 라인(WL1)에 커플링된 하나 이상의 메모리 셀들의 컨덕턴스를 감소시키기 위해 생성된다. 특히, 피드백 신호는 워드 라인(WL1)으로 전송된다.
본 개시의 범위를 벗어나지 않고 방법(1200)에 대한 수정, 추가 또는 누락이 이루어질 수 있다. 예를 들어, 방법(1200)의 동작들은 상이한 순서로 구현될 수 있다. 또한, 개괄된 동작 및 액션들은 단지 예들로서 제공되고, 동작 및 액션들 중 일부는 선택적이거나, 더 적은 동작 및 액션들로 결합되거나, 개시된 실시예의 본질으로부터 벗어나지 않고 추가적인 동작 및 액션들로 확장될 수 있다.
도 13은 본원에 설명된 하나 이상의 실시예에 따라 구현된 메모리 시스템(1300)의 단순화된 블록도이다. 메모리 시스템(1300)은 다수의 메모리 디바이스(1302) 및 제어 로직 컴포넌트(1304)를 포함하는 메모리 모듈을 포함한다. 예를 들어, 메모리 디바이스(1302)는 도 1의 메모리 디바이스(120) 및/또는 메모리 어레이(130) 및/또는 도 3의 메모리 블록(310) 및/또는 도 6의 메모리 어레이(640) 및/또는 도 10의 메모리 어레이(1010)를 포함할 수 있고 제어 로직 컴포넌트(1304)는 도 1의 컨트롤러(140) 및/또는 호스트(111)를 포함할 수 있다. 제어 로직 컴포넌트(1304)는 메모리 디바이스(1302) 내의 임의의 또는 모든 메모리 셀에 판독, 기록 또는 리프레시(re-fresh)하기 위해 메모리 디바이스(1302)와 동작 가능하게 커플링될 수 있다.
전자 시스템이 또한 개시된다. 전자 시스템은 다수의 메모리 디바이스를 포함하는 메모리 시스템을 포함할 수 있다. 도 14는 본원에 설명된 하나 이상의 실시예에 따라 구현되는 전자 시스템(1400)의 단순화된 블록도이다. 전자 시스템(1400)은 적어도 하나의 입력 디바이스(1402)를 포함한다. 입력 디바이스(1402)는 키보드, 마우스 또는 터치 스크린일 수 있다. 전자 시스템(1400)은 적어도 하나의 출력 디바이스(1404)를 추가로 포함한다. 출력 디바이스(1404)는 모니터, 터치 스크린 또는 스피커일 수 있다. 입력 디바이스(1402) 및 출력 디바이스(1404)는 반드시 서로 분리 가능할 필요는 없다. 전자 시스템(1400)은 저장 디바이스(1406)를 추가로 포함한다. 입력 디바이스(1402), 출력 디바이스(1404) 및 저장 디바이스(1406)는 프로세서(1408)에 커플링된다.
전자 시스템(1400)은 프로세서(1408)에 커플링된 메모리 디바이스(1410)를 추가로 포함한다. 메모리 디바이스(1410)는 메모리 디바이스(예를 들어, 도 1의 메모리 디바이스(120))의 일부를 포함하고 및/또는 일부일 수 있고 및/또는 도 13의 메모리 시스템 예컨대, 메모리 시스템(1300) 및/또는 다른 시스템의 일부일 수 있다. 전자 시스템(1400)은 컴퓨팅, 프로세싱, 산업 또는 소비자 제품을 포함할 수 있다. 예를 들어, 제한 없이, 전자 시스템(1400)은 퍼스널 컴퓨터 또는 컴퓨터 하드웨어 컴포넌트, 서버 또는 다른 네트워킹 하드웨어 컴포넌트, 휴대용 디바이스, 태블릿 컴퓨터, 전자 노트북, 카메라, 전화, 음악 재생기, 무선 디바이스, 디스플레이, 칩셋, 게임, 차량 또는 다른 알려진 시스템을 포함할 수 있다.
본원에 개시된 다양한 실시예에 따르면, 그리고 일부 통상의 디바이스, 시스템 및 방법과 대조적으로, 하나 이상의 PIM 계산에 사용되는 데이터가 SNN 스파이크 이벤트를 수행하는 데 사용될 수 있다. 그 결과, 하나 이상의 메모리 어레이에 대한 판독 및/또는 기록의 횟수가 감소될 수 있으며, 이는 PIM 연산의 효율성 및/또는 속도를 개선하고/개선하거나 PIM 연산과 관련된 레이턴시를 감소시킬 수 있다.
본 개시의 하나 이상의 실시예들은 시스템을 포함한다. 예를 들어, 시스템은 다수의 워드 라인들과 다수의 비트 라인들의 교차점에 다수의 메모리 셀들을 포함하는 메모리 어레이를 포함할 수 있으며, 다수의 메모리 셀들에 기록된 데이터는 시냅스 가중치 값들에 대응한다. 시스템은 다수의 워드 라인들을 구동하도록 구성된 드라이버를 포함할 수 있다. 시스템은 또한 다수의 비트 라인에 커플링된 감지 증폭기를 포함하는 회로부를 포함할 수 있다. 회로부는 다수의 비트 라인으로부터 출력 신호를 수신하도록 구성된다. 회로부는 또한, 뉴런의 스파이크 신호의 생성 전에 워드 라인 상에서 구동되는 제1 신호에 응답하여, 제1 메모리 셀의 스파이크 타이밍 종속 소성(STDP : spike timing dependent plasticity) 특성에 따라 다수의 메모리 셀의 제1 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 또는 타이밍 특성, 또는 이들의 조합을 갖는 제2 신호를 생성하도록 구성된다. 회로부는 또한, 뉴런의 스파이크 신호의 생성 후에 워드 라인 상에서 구동되는 제1 신호에 응답하여, STDP 특성에 따라 제1 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제3 신호를 생성하도록 구성된다.
다른 실시예에 따르면, 방법은 워드 라인 상에서 제1 신호를 구동시키는 단계를 포함한다. 상기 방법은 뉴런의 스파이크 신호를 생성하기 전에 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여, STDP(spike timing dependent plasticity) 특성의 LTP(long-term potentiation) 윈도우에서 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 또는 타이밍 특성, 또는 이들의 조합을 갖는 제2 신호를 생성하는 단계, 및 상기 제2 신호를 비트 라인으로 전송하는 단계를 더 포함하고, 상기 메모리 셀은 상기 워드 라인 및 상기 비트 라인에 커플링된다. 상기 방법은 또한 뉴런의 스파이크 신호가 생성된 후 워드 라인 상에서 구동되는 제1 신호에 응답하여, STDP 특성에 따라 LTD(Long-term depression) 윈도우에서 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성을 갖는 제3 신호를 생성하고, 제3 신호를 비트 라인으로 전송하는 단계를 포함한다.
또 다른 실시예에서, 전자 시스템은 적어도 하나의 입력 디바이스, 적어도 하나의 출력 디바이스, 입력 디바이스 및 출력 디바이스에 동작 가능하게 커플링된 적어도 하나의 프로세서 디바이스, 및 적어도 하나의 프로세서 디바이스에 동작 가능하게 커플링된 적어도 하나의 메모리 디바이스를 포함한다. 메모리 디바이스는 다수의 워드 라인들 및 다수의 비트 라인들의 교차점에 다수의 메모리 셀들을 포함하는 메모리 어레이로서, 다수의 메모리 셀들에 기록된 데이터는 시냅스 가중치 값들에 대응하는, 상기 메모리 어레이 및 다수의 비트 라인들에 커플링된 감지 증폭기를 포함하는 회로부를 포함한다. 회로부는 뉴런의 스파이크 신호의 생성 전에 워드 라인 상에서 구동되는 제1 신호에 응답하여, 다수의 메모리 셀들의 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제2 신호를 생성하고, 뉴런의 스파이크 신호의 생성 후에 워드 라인 상에서 구동되는 제1 신호에 응답하여, 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성, 또는 이들의 조합을 갖는 제3 신호를 생성하도록 구성된다.
추가 실시예에 따르면, 전자 시스템은 적어도 하나의 입력 디바이스, 적어도 하나의 출력 디바이스, 입력 디바이스 및 출력 디바이스에 동작 가능하게 커플링된 적어도 하나의 프로세서 디바이스 및 적어도 하나의 프로세서 디바이스에 동작 가능하게 커플링된 적어도 하나의 메모리 디바이스를 포함한다. 적어도 하나의 메모리 디바이스는 시냅스 가중치를 저장하도록 구성된 다수의 저항성 소자를 포함하는 메모리 셀 어레이, SNN의 일련의 시간 양자의 각각의 시간 양자에서 다수의 저항성 소자에 커플링된 다수의 워드 라인에 걸쳐 스파이킹 이벤트를 드라이빙하도록 구성된 드라이버 및 저항성 소자에 커플링된 비트 라인의 출력 전압을 적분하도록 구성된 적분 회로를 포함한다.
다른 실시예에 따르면, 시스템은 다수의 메모리 셀들을 포함하는 메모리 어레이를 포함하고, 다수의 메모리 셀들의 컨덕턴스 값들은 시냅스 가중치 값들에 대응한다. 시스템은 메모리 어레이에 커플링된 회로부를 더 포함한다. 회로부는 메모리 어레이로부터 출력 신호들을 수신하고, 메모리 어레이에서 수신된 제1 신호에 응답하여, STDP(spike timing dependent plasticity) 규칙에 따라 다수의 메모리 셀들의 메모리 셀의 컨덕턴스를 증가 또는 감소시키도록 제2 신호를 생성하도록 구성된다.
다른 실시예에 따르면, 전자 시스템은 적어도 하나의 입력 디바이스, 적어도 하나의 출력 디바이스, 입력 디바이스 및 출력 디바이스에 동작 가능하게 커플링된 적어도 하나의 프로세서 디바이스 및 적어도 하나의 프로세서 디바이스에 동작 가능하게 커플링된 적어도 하나의 메모리 디바이스를 포함한다. 적어도 하나의 메모리 디바이스는 다수의 메모리 엘리먼트들을 포함하는 메모리 어레이 및 메모리 어레이에 커플링된 하나 이상의 감지 증폭기들을 포함하는 회로부를 포함한다. 회로부는 뉴런의 스파이크 신호의 생성 전에 메모리 어레이에 도달하는 제1 신호를 나타내는 메모리 어레이로부터 출력 신호를 수신한 것에 응답하여, 메모리 소자의 수의 하나 이상의 메모리 소자의 저항을 감소시키기 위해 제2 신호를 생성하도록 구성된다. 회로부는 또한, 뉴런의 스파이크 신호의 생성 후에 메모리 어레이에 도달하는 제1 신호를 나타내는 메모리 어레이로부터 출력 신호를 수신한 것에 응답하여, 다수의 메모리 소자의 하나 또는 메모리 소자의 저항을 증가시키기 위한 제3 신호를 생성하도록 구성된다.
일반적인 관행에 따라, 도면에 도시된 다양한 피처는 축척에 맞게 도시되지 않을 수 있다. 본 개시에 제시된 예시는 임의의 특정 장치(예를 들어, 디바이스, 시스템 등) 또는 방법의 실제 보기를 의미하지 않으며, 본 개시의 다양한 실시예를 설명하기 위해 채용되는 단지 이상화된 표현일 뿐이다. 따라서, 다양한 피처의 치수는 명료성을 위해 임의로 확장되거나 축소될 수 있다. 또한, 일부 도면은 명확성을 위해 간략화될 수 있다. 따라서, 도면은 주어진 장치(예를 들어, 디바이스)의 모든 컴포넌트 또는 특정 방법의 모든 동작을 도시하지 않을 수 있다.
본원에서 사용되는 "디바이스" 또는 "메모리 디바이스"라는 용어는 메모리를 갖는 디바이스를 포함할 수 있지만 메모리만 갖는 디바이스에 한정되지 않는다. 예를 들어, 디바이스 또는 메모리 디바이스는 메모리, 프로세서 및/또는 다른 컴포넌트 또는 기능을 포함할 수 있다. 예를 들어, 디바이스 또는 메모리 디바이스는 시스템 온 칩(SOC: system on a chip)을 포함할 수 있다.
본원 및 특히 첨부된 청구항(예를 들어, 첨부된 청구항의 본문)에 사용된 용어는 일반적으로 "개방형" 용어로 의도된다(예를 들어, "포함하는"이라는 용어는 "포함하지만 이에 한정되지 않는"으로 해석되어야 하며, "갖는"이라는 용어는 "적어도 갖는"으로 해석되어야 하고, "포함하다"라는 용어는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함).
또한, 특정 수의 도입된 청구항 인용이 의도되는 경우, 이러한 의도는 청구항에서 명시적으로 인용되며, 이러한 인용이 없을 경우 이러한 의도는 존재하지 않는다. 예를 들어, 이해를 돕기 위해, 이하의 첨부된 청구항은 청구항 인용을 도입하기 위해 "적어도 하나" 및 "하나 이상"이라는 도입 문구의 사용을 포함할 수 있다. 그러나, 이러한 문구의 사용은 부정관사 "어느(a)" 또는 "어떤(an)"에 의한 청구항 인용의 도입이 동일한 청구항이 도입 문구 "하나 이상의" 또는 "적어도 하나의" 및 "어느" 또는 "어떤"과 같은 부정 관사(예를 들어, "어느" 및/또는 "어떤"은 "적어도 하나의" 또는 "하나 이상의"를 의미하는 것으로 해석되어야 함)를 포함하는 경우에도 이러한 단지 하나의 인용을 포함하는 실시예에 대한 이러한 도입된 청구항 인용을 포함하는 임의의 특정 청구항을 한정하는 것을 의미하도록 해석되어서는 안되며; 동일한 사항이 청구항 인용을 도입하는 데 사용되는 정관사의 사용에 대해서도 유효하다. 본원에서 사용되는 "및/또는"은 하나 이상의 연관된 나열된 항목의 임의의 그리고 모든 조합을 포함한다.
또한, 도입된 청구항 인용의 특정 수가 명시적으로 인용된 경우에도, 이러한 인용은 적어도 인용된 수를 의미하는 것으로 해석되어야 하는 것이 이해된다(예를 들어, 다른 수식어 없이 "두 인용"의 맨 인용은 적어도 2회의 인용 또는 2회 이상의 인용을 의미함). 또한, "A, B 및 C 등 중 적어도 하나" 또는 "A, B 및 C 등 중 하나 이상"과 유사한 관례가 사용되는 경우, 일반적으로 이러한 구성은 A 단독, B 단독, C 단독, A와 B 함께, A와 C 함께, B와 C 함께, 또는 A, B 및 C 함께 등을 포함하도록 의도된다. 예를 들어, "및/또는"이라는 용어의 사용은 이러한 방식으로 해석되도록 의도된다.
또한, 설명, 청구항 또는 도면에서 둘 이상의 대안적인 용어를 제시하는 임의의 분리 단어 또는 문구는 용어 중 하나, 용어 중 어느 하나 또는 양쪽 용어를 포함하는 가능성을 고려하는 것으로 이해되어야 한다. 예를 들어, "A 또는 B"라는 문구는 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해되어야 한다.
또한, "제1", "제2", "제3" 등의 용어의 사용은 요소의 특정 순서 또는 개수를 의미하기 위해 본원에서 반드시 사용되는 것은 아니다. 일반적으로 "제1", "제2", "제3" 등의 용어는 일반 식별자로서 다른 요소들 간에 구별하는 데 사용된다. "제1", "제2", "제3" 등의 용어가 특정 순서를 의미한다는 것을 보여주지 않으면, 이러한 용어는 특정 순서를 의미하는 것으로 이해되어서는 안 된다. 또한, "제1", "제2", "제3" 등의 용어가 특정 개수의 요소를 의미한다는 것을 보여주지 않으면, 이러한 용어가 특정 개수의 요소를 의미하는 것으로 이해되어서는 안 된다.
위에서 설명되고 첨부 도면에 도시된 본 개시의 실시예는 첨부된 청구항 및 그 법적 균등물의 범위에 의해 포함되는 본 개시의 범위를 제한하지 않는다. 임의의 균등한 실시예는 본 개시의 범위 내에 있다. 실제로, 설명된 요소의 대안적인 유용한 조합과 같이, 본원에 도시되고 설명된 것에 추가하여 본 개시의 다양한 수정이 설명으로부터 본 기술 분야의 통상의 기술자에게 명백해질 것이다. 이러한 수정 및 실시예는 또한 첨부된 청구범위 및 균등물의 범위 내에 속한다.

Claims (23)

  1. 시스템에 있어서,
    다수의 워드 라인들과 다수의 비트 라인들의 교차점들에 다수의 메모리 셀들을 포함하는 메모리 어레이로서, 상기 다수의 메모리 셀들에 기록된 데이터는 시냅스 가중치 값들에 대응하는, 상기 메모리 어레이;
    상기 다수의 워드 라인들을 구동하도록 구성된 드라이버; 및
    상기 다수의 비트 라인들에 커플링된 감지 증폭기를 포함하는 회로부를 포함하고, 상기 회로부는,
    상기 다수의 비트 라인들로부터 출력 신호를 수신하고;
    뉴런의 스파이크 신호의 생성 전에 상기 다수의 워드 라인들의 워드 라인 상에서 구동되는 제1 신호에 응답하여, 제1 메모리 셀의 스파이크 타이밍 종속 소성(STDP : spike timing dependent plasticity) 특성에 따라 상기 다수의 메모리 셀들의 상기 제1 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 타이밍 특성 또는 이들의 조합을 갖는 제2 신호를 생성하고; 및
    상기 뉴런의 스파이크 신호 생성 후에 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여, 상기 STDP 특성에 따라 상기 제1 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성, 또는 이들의 조합을 갖는 제3 신호를 생성하도록 구성된, 시스템.
  2. 제1항에 있어서, 상기 회로부는, 상기 뉴런의 상기 스파이크 신호의 생성에 응답하여, 피드백 신호를 상기 다수의 비트 라인의 비트 라인으로 전송하도록 더 구성되고, 상기 피드백 신호는 감쇠 바이어스(decaying bias)인, 시스템.
  3. 제2항에 있어서, 상기 제2 신호는 상기 비트 라인 상의 상기 다수의 메모리 셀들의 각각에 인가되는, 시스템.
  4. 제2항에 있어서, 상기 회로부는, 상기 뉴런의 상기 스파이크 신호의 생성 후에 상기 워드 라인 상에서 구동되는 제4 신호에 응답하여, 상기 감쇠 바이어스 동안 상기 감쇠 바이어스에 따라 상기 제1 메모리 셀의 컨덕턴스 값을 조정하도록 추가로 구성된, 시스템.
  5. 제1항에 있어서, 상기 회로부는 상기 뉴런의 상기 스파이크 신호의 생성에 응답하여, 상기 다수의 비트 라인들의 비트 라인에 임계 변조 바이어스를 인가하도록 추가로 구성되는, 시스템.
  6. 제5항에 있어서, 상기 임계 변조 바이어스는 상기 스파이크 신호의 생성 직후에 인가되는 것을 특징으로 하는, 시스템.
  7. 제1항에 있어서, 상기 회로부는, 상기 뉴런의 상기 스파이크 신호의 생성 후에 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여, 상기 다수의 비트 라인들의 비트 라인 상의 상기 메모리 셀들의 각각의 메모리 셀에 개별 감쇠 바이어스를 인가하도록 추가로 구성되는, 시스템.
  8. 제1항에 있어서, 상기 회로부는 상기 뉴런의 상기 스파이크 신호의 생성에 응답하여, 상기 다수의 비트 라인들의 비트 라인 상의 각각의 메모리 셀에 감쇠 피드백 신호를 인가하도록 추가로 구성되고, 상기 감쇠 피드백 신호는 감쇠 LTD(long-term depression) 윈도우를 에뮬레이트(emulate)하는, 시스템.
  9. 제1항에 있어서, 상기 회로부는, 상기 뉴런의 상기 스파이크 신호의 생성 전에 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여, 상기 워드 라인 상의 상기 다수의 메모리 셀들의 하나 이상의 메모리 셀들에 다른 신호를 인가하도록 추가로 구성되고, 상기 하나 이상의 메모리 셀들의 컨덕턴스(conductance)는 미리 결정된 시간 지속기간 후에 원래의 컨덕턴스 상태로 복귀하는, 시스템.
  10. 제1항에 있어서, 상기 제1 신호의 타임 스탬프는 상기 메모리 어레이의 상기 다수의 메모리 셀들 중 하나 이상에 저장되는, 시스템.
  11. 제1항에 있어서, 상기 회로부는, 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여,
    상기 워드 라인과 교차하는 상기 다수의 비트 라인들의 제1 비트 라인 상의 전류를 적분하고; 및
    상기 워드 라인과 교차하는 상기 다수의 비트 라인들의 제2 비트 라인에 임계 변조를 인에이블하도록 추가로 구성된, 시스템.
  12. 제1항에 있어서, 상기 회로부는, 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여,
    상기 워드 라인과 교차하는 상기 다수의 비트 라인들의 제1 비트 라인의 상기 다수의 메모리들의 제2 메모리 셀에 전류를 주입하고; 및
    상기 워드 라인과 교차하는 상기 다수의 비트 라인들의 제2 비트 라인 상의 상기 다수의 메모리 셀들의 제3 메모리 셀 상의 임계 바이어스를 조정하도록 추가로 구성된, 시스템.
  13. 제1항에 있어서, 장기 증강(long-term potentiation) LTP 윈도우 동안 그리고 상기 뉴런의 스파이크 신호의 생성에 응답하여, 상기 워드 라인에 교차하는 상기 다수의 비트 라인들의 제1 비트 라인 상의 제1 메모리 셀에 상기 워드 라인을 교차하는 상기 다수의 비트 라인들의 제2 비트 라인 상의 상기 다수의 메모리 셀들의 제2 메모리 셀 상의 컨덕턴스를 복사하도록 구성된 메모리 컨트롤러를 더 포함하는, 시스템.
  14. 제1항에 있어서, 상기 회로부는 상기 다수의 비트 라인들의 비트 라인 상의 상기 메모리 셀들의 컨덕턴스를 적분하도록 추가로 구성된, 시스템.
  15. 제1항에 있어서, 상기 회로부는, 상기 출력 신호들에 적어도 부분적으로 기초하여 미리 결정된 임계값을 충족하는 상기 뉴런의 멤브레인 전위에 응답하여, 상기 스파이크 신호를 생성하도록 추가로 구성된, 시스템.
  16. 방법에 있어서,
    워드 라인 상에서 제1 신호를 구동하는 단계;
    뉴런의 스파이크 신호 생성 전에 워드 라인 상에서 구동되는 제1 신호에 응답하여,
    스파이크 타이밍 종속 소성(STDP : spike timing dependent plasticity) 특성의 LTP(long-term potentiation) 윈도우에서 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 타이밍 특성 또는 이들의 조합을 갖는 제2 신호를 생성하는 단계; 및
    뉴런의 스파이크 신호 생성에 응답하여 비트 라인으로 상기 제2 신호를 전송하는 단계, 상기 메모리 셀은 상기 워드 라인 및 상기 비트 라인에 커플링된, 상기 제2 신호를 전송하는 단계; 및
    상기 뉴런의 스파이크 신호 생성 후에 상기 워드 라인 상에서 구동되는 제1 신호에 응답하여,
    상기 STDP 특성에 따라 LTD(Long-term depression) 윈도우에서 상기 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제3 신호를 생성하는 단계; 및
    상기 제3 신호를 상기 비트 라인으로 전송하는 단계를 포함하는, 방법.
  17. 제16항에 있어서, 뉴런의 스파이크 신호의 생성 전에 상기 워드 라인 상에서 구동되는 제1 신호에 응답하여, 상기 메모리 셀의 전도도를 감쇠(decaying) 방식으로 변화시키는 감쇠 신호를 생성하는 단계를 더 포함하는, 방법.
  18. 제17항에 있어서, 상기 뉴런의 상기 스파이크 신호의 생성에 응답하여, 상기 감쇠 신호 동안, 상기 감쇠 신호, 상기 메모리 셀의 전도도, 또는 둘 모두에 따라 상기 메모리 셀의 컨덕턴스 값을 조정하는 단계를 더 포함하는, 방법.
  19. 제16항에 있어서, 상기 뉴런의 상기 스파이크 신호의 생성 전에 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여,
    상기 워드 라인과 교차하는 제1 비트 라인 상의 제1 메모리 셀에 전류를 인가하는 단계; 및
    상기 워드 라인과 교차하는 제2 비트 라인 상의 제2 메모리 셀 상의 임계 바이어스를 조정하는 단계를 더 포함하는, 방법.
  20. 전자 시스템에 있어서,
    적어도 하나의 입력 디바이스;
    적어도 하나의 출력 디바이스;
    상기 입력 디바이스 및 상기 출력 디바이스에 동작 가능하게 커플링된 적어도 하나의 프로세서 디바이스; 및
    상기 적어도 하나의 프로세서 디바이스에 동작 가능하게 커플링된 적어도 하나의 메모리 디바이스를 포함하며, 상기 적어도 하나의 메모리 디바이스는,
    다수의 워드 라인들과 다수의 비트 라인들의 교차점들에 다수의 메모리 셀들을 포함하는 메모리 어레이로서, 상기 다수의 메모리 셀들에 기록된 데이터는 시냅스 가중치 값들에 대응하는, 상기 메모리 어레이;
    상기 다수의 비트 라인의 수에 커플링된 감지 증폭기를 포함하는 회로부를 포함하고, 상기 회로부는,
    뉴런의 스파이크 신호의 생성 전에 상기 다수의 워드 라인의 워드 라인 상에서 구동되는 제1 신호에 응답하여, 상기 다수의 메모리들의 메모리 셀의 컨덕턴스를 증가시키는 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제2 신호를 생성하고; 및
    상기 뉴런의 상기 스파이크 신호의 생성 후에 상기 워드 라인 상에서 구동되는 상기 제1 신호에 응답하여, 상기 메모리 셀의 컨덕턴스를 감소시키는 상이한 전압, 전류, 또는 타이밍 특성 또는 이들의 조합을 갖는 제3 신호를 생성하도록 구성된, 전자 시스템.
  21. 제20항에 있어서, LTP(long-term potentiation) 윈도우 동안 그리고 상기 뉴런의 상기 스파이크 신호의 생성에 응답하여, 상기 워드 라인과 교차하는 상기 다수의 비트 라인들의 제2 비트 라인 상의 상기 다수의 메모리 셀들의 제2 메모리 셀 상의 컨덕턴스를 상기 워드 라인과 교차하는 상기 다수의 비트 라인들의 제1 비트 라인 상의 상기 다수의 메모리 셀들의 제1 메모리 셀에 복사하도록 구성된 메모리 컨트롤러를 더 포함하는, 전자 시스템.
  22. 제20항에 있어서, 상기 회로부는 비트 라인 상의 메모리 셀들의 컨덕턴스를 적분하도록 추가로 구성된, 전자 시스템.
  23. 제20항에 있어서, 상기 회로부는 상기 뉴런의 멤브레인 전위가 미리 결정된 멤브레인 전위 임계값을 충족하는 것에 응답하여, 상기 스파이크 신호를 생성하도록 추가로 구성된, 전자 시스템.
KR1020227010826A 2019-09-05 2020-08-31 시냅스-전 스파이크 신호에 관련된 메모리 내 프로세싱 동작 수행 및 관련 방법, 시스템 KR20220054664A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962896267P 2019-09-05 2019-09-05
US62/896,267 2019-09-05
PCT/US2020/048822 WO2021046000A1 (en) 2019-09-05 2020-08-31 Performing processing-in-memory operations related to pre-synaptic spike signals, and related methods and systems
US17/007,588 US12008460B2 (en) 2019-09-05 2020-08-31 Performing processing-in-memory operations related to pre-synaptic spike signals, and related methods and systems
US17/007,588 2020-08-31

Publications (1)

Publication Number Publication Date
KR20220054664A true KR20220054664A (ko) 2022-05-03

Family

ID=74851295

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227010826A KR20220054664A (ko) 2019-09-05 2020-08-31 시냅스-전 스파이크 신호에 관련된 메모리 내 프로세싱 동작 수행 및 관련 방법, 시스템

Country Status (5)

Country Link
US (2) US12008460B2 (ko)
EP (1) EP4026062A4 (ko)
KR (1) KR20220054664A (ko)
CN (1) CN114341984A (ko)
WO (1) WO2021046000A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI782573B (zh) * 2021-01-28 2022-11-01 旺宏電子股份有限公司 記憶體內運算器及記憶體內運算方法
JP2022191630A (ja) * 2021-06-16 2022-12-28 キオクシア株式会社 半導体記憶装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8606732B2 (en) * 2010-08-04 2013-12-10 Qualcomm Incorporated Methods and systems for reward-modulated spike-timing-dependent-plasticity
US8655813B2 (en) 2010-12-30 2014-02-18 International Business Machines Corporation Synaptic weight normalized spiking neuronal networks
FR2977351B1 (fr) 2011-06-30 2013-07-19 Commissariat Energie Atomique Methode d'apprentissage non supervise dans un reseau de neurones artificiel a base de nano-dispositifs memristifs et reseau de neurones artificiel mettant en oeuvre la methode.
US8868477B2 (en) 2012-03-29 2014-10-21 International Business Machines Coproration Multi-compartment neurons with neural cores
US20150278685A1 (en) 2014-03-31 2015-10-01 Qualcomm Incorporated Probabilistic representation of large sequences using spiking neural network
US10387770B2 (en) 2015-06-10 2019-08-20 Samsung Electronics Co., Ltd. Spiking neural network with reduced memory access and reduced in-network bandwidth consumption
US10332004B2 (en) * 2015-07-13 2019-06-25 Denso Corporation Memristive neuromorphic circuit and method for training the memristive neuromorphic circuit
US9653127B1 (en) 2015-12-15 2017-05-16 Micron Technology, Inc. Methods and apparatuses for modulating threshold voltages of memory cells
US10586147B2 (en) 2016-09-22 2020-03-10 Intel Corporation Neuromorphic computing device, memory device, system, and method to maintain a spike history for neurons in a neuromorphic computing environment
US10748060B2 (en) 2016-10-14 2020-08-18 Intel Corporation Pre-synaptic learning using delayed causal updates
US20180174028A1 (en) 2016-12-20 2018-06-21 Intel Corporation Sparse coding using neuromorphic computing
US11037054B2 (en) 2016-12-20 2021-06-15 Intel Corporation Trace-based neuromorphic architecture for advanced learning
US20180174042A1 (en) 2016-12-20 2018-06-21 Intel Corporation Supervised training and pattern matching techniques for neural networks
US11151441B2 (en) 2017-02-08 2021-10-19 Brainchip, Inc. System and method for spontaneous machine learning and feature extraction
US10922608B2 (en) 2017-03-08 2021-02-16 Arm Ltd Spiking neural network
US10878313B2 (en) 2017-05-02 2020-12-29 Intel Corporation Post synaptic potential-based learning rule
US11354568B2 (en) * 2017-06-30 2022-06-07 Intel Corporation In-memory spiking neural networks for memory array architectures
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US11403479B2 (en) 2017-12-19 2022-08-02 Intel Corporation Feedback signaling to facilitate data classification functionality of a spiking neural network
US20190303740A1 (en) 2018-03-30 2019-10-03 International Business Machines Corporation Block transfer of neuron output values through data memory for neurosynaptic processors
US11514327B2 (en) 2018-06-19 2022-11-29 Orbai Technologies, Inc. Apparatus and method for utilizing a parameter genome characterizing neural network connections as a building block to construct a neural network with feedforward and feedback paths
US11487464B2 (en) * 2019-07-03 2022-11-01 Micron Technology, Inc. Neural network memory
US11693657B2 (en) * 2019-09-05 2023-07-04 Micron Technology, Inc. Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems

Also Published As

Publication number Publication date
EP4026062A1 (en) 2022-07-13
US20240273349A1 (en) 2024-08-15
WO2021046000A1 (en) 2021-03-11
CN114341984A (zh) 2022-04-12
US20210073623A1 (en) 2021-03-11
EP4026062A4 (en) 2024-01-24
US12008460B2 (en) 2024-06-11

Similar Documents

Publication Publication Date Title
US11693657B2 (en) Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
Imani et al. Ultra-efficient processing in-memory for data intensive applications
CN112101534A (zh) 用于深度神经网络的可重新配置存储器压缩技术
US20180075345A1 (en) Spatio-temporal spiking neural networks in neuromorphic hardware systems
Liu et al. Low‐power computing with neuromorphic engineering
US20240232601A1 (en) Performing processing-in-memory operations related to spiking events, and related methods, systems and devices
US20240273349A1 (en) Performing processing-in-memory operations related to pre-synaptic spike signals, and related methods and systems
US20190005376A1 (en) In-memory spiking neural networks for memory array architectures
CN114341981B (zh) 具有人工智能模式的存储器
US11537861B2 (en) Methods of performing processing-in-memory operations, and related devices and systems
KR20200025200A (ko) 전자 장치 및 전자 장치의 동작 방법
US20240192953A1 (en) Methods for performing processing-in-memory operations, and related systems
Kim et al. MViD: Sparse matrix-vector multiplication in mobile DRAM for accelerating recurrent neural networks
CN114286977B (zh) 人工智能加速器
Luo et al. AILC: Accelerate on-chip incremental learning with compute-in-memory technology
CN114341983A (zh) 用于人工智能操作的激活函数
KR20210113099A (ko) 조정 가능한 기능-인-메모리 컴퓨팅 시스템
US11733763B2 (en) Intelligent low power modes for deep learning accelerator and random access memory
EP3966698A1 (en) Memory processing unit architecture
Miralaei Near-Memory Processing for Low-precision Deep Neural Networks
KR20240118633A (ko) 메모리 장치 및 그 동작 방법
Imani et al. Deep Learning Acceleration using Digital-Based Processing In-Memory
EP4022525A1 (en) Transfer data in a memory system with artificial intelligence mode