KR20230134590A - 통신 비용 절감을 위한 저항 처리 유닛(rpu) 어레이에서 계층적 데이터의 로딩 활성화 - Google Patents

통신 비용 절감을 위한 저항 처리 유닛(rpu) 어레이에서 계층적 데이터의 로딩 활성화 Download PDF

Info

Publication number
KR20230134590A
KR20230134590A KR1020237029108A KR20237029108A KR20230134590A KR 20230134590 A KR20230134590 A KR 20230134590A KR 1020237029108 A KR1020237029108 A KR 1020237029108A KR 20237029108 A KR20237029108 A KR 20237029108A KR 20230134590 A KR20230134590 A KR 20230134590A
Authority
KR
South Korea
Prior art keywords
baseline
bitline
probability
difference
data
Prior art date
Application number
KR1020237029108A
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 KR20230134590A publication Critical patent/KR20230134590A/ko

Links

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • G06G7/16Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
    • G06G7/161Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division with pulse modulation, e.g. modulation of amplitude, width, frequency, phase or form
    • 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/047Probabilistic or stochastic networks
    • 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
    • G06N3/065Analogue 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
    • 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
    • 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
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0026Bit-line or column circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0028Word-line or row circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/003Cell access
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0092Write characterized by the shape, e.g. form, length, amplitude of the write pulse
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/77Array wherein the memory element being directly connected to the bit lines and word lines without any access device being used

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Probability & Statistics with Applications (AREA)
  • Character Discrimination (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Power Engineering (AREA)

Abstract

통신 비용 절감을 위한 저항 처리 유닛(RPU) 어레이에서 계층적 데이터의 로딩 활성화(ENABLING HIERARCHICAL DATA LOADING IN A RESISTIVE PROCESSING UNIT (RPU) ARRAY FOR REDUCED COMMUNICATION COST)
전자 회로는 워드 라인들; 복수의 그리드 포인트들에서 상기 워드 라인들과 교차하는 비트 라인들; 상기 그리드 포인트들에 위치한 저항 처리 유닛들을 포함한다. 베이스라인 확률 펄스 입력 유닛들은 상기 워드 라인들에 결합되고; 차이 확률 펄스 입력 유닛들은 상기 워드 라인들에 결합되며; 그리고 비트라인 확률 펄스 입력 유닛들은 상기 비트 라인들에 결합된다. 상기 펄스 입력 유닛들에 결합된 제어 회로는 상기 베이스라인 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터를 사용하여 베이스라인 펄스 트레인을 생성하게 하고, 상기 차이 확률 펄스 입력 유닛들 각각으로 하여금 상기 기본 입력 데이터로부터의 차이들을 정의하는 차이 입력 데이터를 사용하여 차이 펄스 트레인을 생성하게 하며, 그리고 상기 비트라인 확률 펄스 입력 유닛들 각각으로 하여금 비트라인 입력 데이터를 사용하여 비트라인 펄스 트레인을 생성하게 하도록 구성된다. 따라서 신경망 가중치들은 저항 처리 유닛들에 저장될 수 있다.

Description

통신 비용 절감을 위한 저항 처리 유닛(RPU) 어레이에서 계층적 데이터의 로딩 활성화
[0001] 본 발명은 전기, 전자, 및 컴퓨터 기술들(computer arts)에 관한 것으로, 보다 상세하게는, 신경망들(neural networks), 등을 구현하기에 적합한 전자 회로에 관한 것이다.
[0002] 신경망들은 다양한 애플리케이션들에서 인기가 높아지고 있다. 신경망들은 머신 러닝을 수행하는 데 사용된다. 컴퓨터는 훈련 예들(training examples)을 분석하여 일부 작업을 수행하는 방법을 배운다. 일반적으로, 훈련 예들은 인간 전문가에 의해 미리 수동-라벨지정(hand-labeled) 되었다. 신경망은 조밀하게 상호 연결된 수천 또는 수백만 개의 단순 처리 노드들을 포함한다. 신경망들의 훈련, 및 훈련된 신경망들을 사용한 추론은, 계산에 비용이 많이 든다. 실제로, 대규모 병렬 신경망들을 훈련하는 데 필요한 데이터 세트들은 점점 더 많은 입력 데이터가 필요하며, 크기가 테라바이트들(TB)의 급(order)을 초과한다.
[0003] 신경망들과 관련된 계산 문제들을 해결하기 위해 하드웨어-기반 기술들이 제안되었다; 예를 들어, 훨씬 적은 전력을 사용하면서 잠재적으로 신경망 훈련을 수백 배 이상(by orders of magnitude) 가속화할 수 있는 저항 처리 유닛(resistive processing unit : RPU) 디바이스들이 있다. 그러나, 빠른 RPU 연산들에서도 불구하고, 무선 통신 또는 오프-칩 인터페이스를 통한 입력 데이터 통신 비용은, 예를 들어 심층 신경망 학습 등과 같은, 많은 애플리케이션들에서 여전히 상당한 오버헤드 부담이다.
[0004] 본 발명의 원리는 통신 비용 절감을 위해 저항 처리 유닛(RPU) 어레이에서 계층적 데이터 로딩을 활성화하기 위한 기술들을 제공한다. 일 실시예에서, 예시적 전자 회로는 복수의 워드 라인들; 복수의 그리드 포인트들(a plurality of grid points)에서 상기 복수의 워드 라인들과 교차하는 복수의 비트 라인들; 상기 복수의 그리드 포인트들에 위치된 복수의 저항 처리 유닛들(a plurality of resistive processing units); 상기 복수의 워드 라인들에 결합된 복수의 베이스라인 확률 펄스 입력 유닛들(a plurality of baseline stochastic pulse input units); 상기 복수의 워드 라인들에 연결된 복수의 차이 확률 펄스 입력 유닛들(a plurality of differential stochastic pulse input units); 및 상기 복수의 비트 라인들에 결합된 복수의 비트라인 확률 펄스 입력 유닛들(a plurality of bitline stochastic pulse input units)을 포함한다. 또한 상기 복수의 베이스라인 확률 펄스 입력 유닛들, 상기 복수의 차이 확률 펄스 입력 유닛들, 및 상기 복수의 비트라인 확률 펄스 입력 유닛들에 결합된 제어 회로(control circuitry)가 포함되고, 상기 제어회로는 상기 베이스라인 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터를 사용하여 베이스라인 펄스 트레인(a baseline pulse train)을 생성하게 하고, 상기 차이 확률 펄스 입력 유닛들 각각으로 하여금 상기 베이스 입력 데이터로부터 차이들을 정의하는 차이 입력 데이터를 사용하여 차이 펄스 트레인(a differential pulse train)을 생성하게 하며, 그리고 상기 비트라인 확률 펄스 입력 유닛들 각각으로 하여금 비트라인 입력 데이터를 사용하여 비트라인 펄스 트레인(a bitline pulse train)을 생성하게 하도록 구성된다.
[0005] 다른 실시예에서, 하드웨어 기술 언어(HDL) 설계 구조(A hardware description language (HDL) design structure)가 머신-판독 가능 데이터 스토리지 매체에 인코딩 되고, 상기 HDL 설계 구조는 컴퓨터-지원 설계 시스템(a computer-aided design system)에서 처리될 때 장치의 머신-실행 가능 표현(a machine-executable representation of an apparatus)을 생성하는 엘리멘트들을 포함한다. 상기 HDL 설계 구조는 전술한 전자 회로를 포함한다.
[0006] 또 다른 실시예에서, 예시적 방법은 전술한 전자 회로를 제공하는 단계를포함하고, 상기 제어 회로를 사용하여, 상기 베이스라인 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터를 사용하여 베이스라인 펄스 트레인(a baseline pulse train)을 생성하게 하고, 상기 차이 확률 펄스 입력 유닛들 각각으로 하여금 상기 베이스 입력 데이터로부터 차이들을 정의하는 차이 입력 데이터를 사용하여 차이 펄스 트레인(a differential pulse train)을 생성하게 하며, 그리고 상기 비트라인 확률 펄스 입력 유닛들 각각으로 하여금 비트라인 입력 데이터를 사용하여 비트라인 펄스 트레인(a bitline pulse train)을 생성하게 하는 단계를 포함한다.
[0007] 본 명세서에서 사용되는 바와 같이, 동작(an action)을 "촉진시키는 단계(facilitating)"는 동작을 수행하는 단계, 동작을 더 쉽게 만드는 단계, 동작을 수행하는 것을 돕는 단계, 또는 동작이 수행되도록 하는 단계를 포함한다. 따라서 제한이 아닌 예로서, 하나의 프로세서에서 실행되는 명령들(instructions)은 원격 프로세서에서 실행되는 명령들에 의해 수행되는 동작을 용이하게 할 수 있는데, 상기 동작이 수행되도록 또는 수행되는 것을 돕기 위해 적절한 데이터 또는 명령(command)을 보냄으로써 용이하게 할 수 있다. 의심의 여지를 없애기 위해, 실행자(an actor)가 동작을 수행하는 것 외에 동작을 용이하게 하는 경우에도 그 동작은 그럼에도 불구하고 일부 주체 또는 주체들의 조합에 의해 수행된다.
[0008] 본 발명의 하나 또는 그 이상의 실시예들 또는 그 관련 엘리멘트들은 디지털 회로와 같은 하드웨어로 구현될 수 있다. 그 다음, 이 디지털 회로를 컴퓨터에서 사용되어 효율적인 계산 방식으로 머신 러닝 소프트웨어를 훈련/실행할 수 있다. 상기 머신 러닝 소프트웨어는 상기 표시된 방법 단계들을 수행하기 위한 컴퓨터 사용 가능 프로그램 코드를 갖는 컴퓨터 판독 가능 저장 매체를 포함하는 컴퓨터 프로그램 제품의 형태로 구현될 수 있다. 그 다음, 상기 소프트웨어는 메모리, 및 상기 메모리에 결합되고 예시적인 머신 러닝 훈련 및 추론을 수행하도록 동작하는 적어도 하나의 프로세서를 포함하는 시스템(또는 장치)에서 실행될 수 있다. 상기 프로세서는 여기에 설명된 대로 구성될 수 있다.
[0009] 본 발명의 기술들은 실질적으로 유익한 기술적 효과들을 제공할 수 있다. 예를 들어, 하나 혹은 그 이상의 실시예들 다음을 제공한다:
대규모, 병렬 신경망들 등을 훈련하기 위한 입력 데이터 통신 비용에서 상당한 감소가 있다;
입력 데이터 볼륨을 줄이기 위한 다른 압축 기술들과 달리, 명시적인 압축 해제 작업이 필요하지 않다;
및/또는 데이터의 연속 프레임들은 유사도가 높기 때문에 입력 데이터 양이 크게 감소된다.
[0010] 본 발명의 이들 및 다른 특징들과 장점들은, 첨부된 도면들과 관련하여 읽혀지는, 관련 예시적인 실시예들에 대한 다음의 자세한 설명으로부터 명백해질 것이다.
[0011] 도 1은 확률 업데이트 규칙을 RPU-기반 어레이에 적용하기 위한 종래 기술을 도시한다.
[0012] 도 2는 본 발명의 특징에 따라, 확률 업데이트 규칙을 RPU-기반 어레이에 적용하기 위한 기술을 도시한다.
[0013] 도 3은 본 발명의 특징에 따라, 도 2의 어레이에 대한 업데이트의 2개의 예시적인 사이클들(cycles)을 도시한다.
[0014] 도 4는 본 발명의 특징들에 따라, 베이스라인 및 차이 데이터의 예들을 도시한다.
[0015] 도 5는 본 발명의 한 특징에 따라, 희소성 대 임계치에 대한 예시적인 데이터를 도시한다.
[0016] 도 6은 본 발명의 특징에 따라, 예시적인 파일(데이터) 크기 대 임계값을 도시한다.
[0017] 도 7은 본 발명의 한 특징에 따라, 예시적인 추론 프로세스 동안 도 2의 어레이를 도시한다.
[0018] 도 8은 본 발명의 특징들에 따라, 코프로세서를 사용하는 컴퓨터 시스템을 나타내며, 신경망 구현을 가속화하는 데 적합하다 (또한 도 9에 표시된 것과 같은 설계 프로세스를 구현할 수있는 범용 컴퓨터를 대표한다); 및
[0019] 도 9는 반도체 설계, 제조 및/또는 테스트에 사용되는 설계 프로세스의 플로 다이어그램이다.
[0020] 전술한 바와 같이, 빠른 RPU 연산들에서 조차도, 입력 데이터 통신 비용은 여전히 주요 오버헤드 부담이다. 본 발명의 하나 혹은 그 이상의 실시예들은 종래의 디지털 가속기 하드웨어에 비해 10,000 배 정도의 가속이 가능하다는 것이 장점이다. 본 발명의 하나 혹은 그 이상의 실시예들은 높은 데이터-데이터 유사성들(high data-to-data similarities)을 나타내는 많은 관심 데이터 세트들이 있다는 사실을 이용한다. 이들은, 제한 없는 예로서, 분자 역학들(MD) 시뮬레이션 데이터의 프레임들과 연속적으로 움직이는 물체들이 있는 비디오 프레임들에서의 패턴 인식을 포함한다. 본 발명의 하나 혹 그 이상의 실시예들은 바람직하게도 유사성들을 제거하고 입력 데이터 크기를 줄이기 위해 베이스라인 데이터(baseline data)와 차이 데이터(difference data)로 입력 데이터(전-처리 동안)를 나눈다. 입력 데이터를 베이스라인 데이터와 차이 데이터로 나누는 것은 그 자체로 알려져 있지만, 본 발명의 하나 혹은 그 이상의 실시예들은 원본 데이터를 명시적으로 복구할 필요 없이 RPU 컨텍스트에서 효율적인 구현에 의한 추가 개선들을 제공한다.
[0021] 그러나, 본 발명의 하나 혹은 그 이상의 실시예들은, 하나 혹은 그 이상의 확률 펄스 발생기들을 사용하는 대신, 입력 층 행들(the input layer rows)을 위해 2 개의 확률 펄스 생성기들(two stochastic pulse generators) (베이스라인 및 차이)를 사용한다. 하나 혹은 그 이상의 실시예들에서, 베이스 데이터는 가끔(occasionally) 전송되는 반면, 차이 데이터는 감소된 수의 비트들(a reduced number of bits)로 전송된다. 이 것은 바람직하게도 통신 비용이 크게 감소시킬 수 있다 (이 기술을 적용하지 않는 RPU들에 비해 최대 75% 감소). 베이스 데이터 및 차이 데이터는 일반적으로 디지털 도메인에서 계산되지 않으므로, 추가 계산 하드웨어/비용이 필요하지 않다.
[0022] 이와 관련하여, 도 1은 확률 업데이트 규칙(a stochastic update rule)을 RPU-기반 어레이(an RPU-based array)에 적용하기 위한 종래 기술을 보여준다. 업데이트 사이클에서, 상기 어레이의 모든 RPU들은, 어레이 크기와 관계없이, 병렬로 업데이트될 수 있다. 확률 비트 스트림들(Stochastic bit streams)이 수들(the numbers)을 인코딩하는 데 사용된다. 신호(들)를 중첩함으로써 증분 방식으로(in an incremental fashion) 가중치를 업데이트한다. 수학식(101)을 참조하면, 가중치 변화(the weight change)는 평균적으로 에 비례한다(w ij i th 행 및 j th 열에 대한 가중치 값이고, x i 는 입력 뉴런에서의 활동도(the activity)이며, 그리고δj는 출력 뉴런에 의해 계산된 오차이다). 업데이트 시간은 BL(확률 변환기들 199의 출력에서 확률 비트 스트림의 길이)에 비례한다. 매트릭스에서 RPU 디바이스(103-1,1, 103-1,2, 103-2,1, 103-2,2)의 스위칭은 포지티브 및 네거티브 펄스들이 동시에 일어날(coincide)때만 발생한다. 따라서, 화살표(105)는 디바이스(103-1,1)의 제1 업데이트를 나타내고; 화살표(107)는 디바이스(103-2,1)의 제1 업데이트를 나타내며; 화살표(109)는 디바이스(103-2,2)의 제1 업데이트를 나타내고; 화살표(111)는 디바이스(103-1,1)의 제2 업데이트를 나타내며; 화살표(113)는 디바이스(103-2,1)의 제2 업데이트를 나타내고; 화살표(115)는 디바이스(103-1, 2)의 제1 업데이트를 나타낸다. 전압들 Vx1 및 Vx2가 하이(high)로 토글할 확률들(probabilities)은, 각각, 0.5 및 0.6이다. 따라서, Vx2는 총 업데이트 기간 = 10 동안 Vx1보다 더 많은 하이 펄스들을 갖는다. 유사하게, 전압들(Vδ1 및 Vδ2)이 로우(low)로 될 확률들은 도 1의 우측에 소수 형태로(in decimal form) 라벨된 0.3, 및 0.4이고 화살표들(105-115)의 우측에 표시된 분수 형태로(in fractional form) 표시된다.
[0023] 도 2 및 3은 이중 펄스 생성기들(dual pulse generators)이 제1 신경망 층의 각 행에 채용되는 경우 본 발명의 예시적인 실시예를 도시한다. "차이" 데이터는 매 사이클마다 수신되는 반면 베이스 데이터는 매 nth 사이클마다 수신되면 된다. 도 1에서와 같이, 신호(들)를 중첩함으로서 증분 방식으로 가중치가 업데이트된다. 수학식(201)을 참조하면, 여기서 가중치 변화는 평균(x i_베이스 + x i_차이 ) x δj에 비례한다(w ij i th 행과 j th 열의 가중치 값이고, x i_베이스 는 입력 뉴런에서 활동도의 베이스 부분(the base portion of the activity)이며, x i_차이 는 입력 뉴런에서 활동도의 차이 부분(the differential portion of the activity)이고, 그리고 δj는 출력 뉴런에 의해 계산된 오류임).
[0024] 워드 라인들(WL)(701)(어수선함을 피하기 위해 2개만 도시됨) 및 비트 라인들(BL)(703)(어수선함을 피하기 위해 2개만 도시됨)을 주목한다. 도 2에서, 각각의 비트 라인은 단일 확률 변환기(a single stochastic translator)(299)를 포함하는 반면, 각각의 워드 라인(701)은 2개의 확률 변환기들을 포함한다; 즉, "베이스"(B) 확률 변환기(a "base" (B) stochastic translator)(297) 및 "차이"(D) 확률 변환기(a "diff" (D) stochastic translator)(295)를 포함한다.
[0025] 업데이트 시간은 BL(확률 변환기들(295)의 출력에서 확률 비트 스트림의 길이)에 비례한다. 또한 도 3을 참조하면, 두 개의 연속적인 업데이트 사이클들(two consecutive update cycles)이 도시된다. 따라서, 도 3에서, BL의 총 기간은 20(2 x 10)이다. 도 3은 차이 값들(the diff values)이 사이클들에 걸쳐 변화되고, 따라서 펄스들의 수도 또한 변화되는 예를 더 보여준다. 매트릭스에서 RPU 디바이스(203-1,1, 203-1,2, 203-2,1, 203-2,2)의 스위칭은 포지티브 및 네거티브 펄스들이 동시에 발생할 때만 일어난다. 따라서, 화살표(205)는 제1 사이클 동안 차이 데이터로 디바이스(203-1,1)의 제1 업데이트를 나타내고; 화살표(207)는 제1 사이클 동안 차이 데이터로 디바이스(203-2,1)의 제1 업데이트를 나타내며; 화살표(209)는 제1 사이클 동안 차이 데이터로 디바이스(103-2,2)의 제1 업데이트를 나타내고; 화살표(211)는 제1 사이클 동안 차이 데이터로 디바이스(203-1,1)의 제2 업데이트를 나타내며; 화살표(213)는 제1 사이클 동안 차이 데이터로 디바이스(203-2,1)의 제2 업데이트를 나타내고; 화살표(215)는 제1 사이클 동안 차이 데이터로 디바이스(203-1,2)의 제1 업데이트를 나타낸다. 전술한바와 같이, 베이스라인 데이터는 일반적으로 매 사이클마다 변경되지 않지만 차이 데이터는 변경된다.
[0026] 도 2에서, 수들(0.45, 0.05, 0.55, 0.05, 0.3, 0.4)을 갖는 박스들(265)은 레지스터들과 같은 임시 스토리지 디바이스들을 나타내며, 즉, 베이스라인 수(baseline number) 0.45 및 또한 차이 수(the diff number) 0.05가 레지스터들에 저장된다. 적절한 경우, 베이스라인 수 레지스터는 상대적으로 더 높은 비트 정밀도(예: 16비트)를 가질 수 있고, 차이 수 레지스터는 상대적으로 더 작은 정밀도(예: 4비트)를 가질 수 있는데, 이는 차이 수들이 일반적으로 베이스라인 수들에 비해 매우 작기 때문이다. 하나 혹은 그 이상의 실시예들에서, 임의의 특별한 활성화 신호들(any special enable signals)을 제공하기보다는 상기 레지스터의 수들은 주기적으로 업데이트될 것이다. 도 2의 예에서, 차이 수는 매 사이클마다 업데이트되며; 베이스라인 수는 드물게 업데이트될 것이다; 업데이트들은 컨트롤러(279)에 의해 관리된다. "베이스 업데이트" 신호가 수 0.45 및 0.55를 갖는 박스들(265)에 연결되고 "차이 업데이트" 신호가 수 0.05를 갖는 다른 박스들(265)에 연결되는 것에 주목한다. 확률 변환기들(the stochastic translators)(295, 297)은 레지스터들(265)의 입력 데이터를 하이 및 로우 확률 스트림(a stochastic stream of high and low)으로 변환한다. 그 다음, 확률 펄스 생성기들(the stochastic pulse generators)(705, 707)은 확률 변환기들의 출력(하이/로우의 스트림)에 기초하여 WL(701)을 구동하고; 즉, 더 이상 입력 데이터를 직접 사용하지 않는다. 따라서, 펄스 생성기들은 베이스/차이 입력 데이터 자체를 사용하지 않고 확률 변환기들의 출력들을 사용한다. 달리 표현하면, 도시한 바와 같이, 데이터 A, B가 레지스터로 들어오고, 변환기는 그 값을 사용하여 하이와 로우의 스트림을 생성하며, 그 다음, 스트림이 펄스 생성기로 이동하여, 워드 라인들을 구동한다(WL).
[0027] 또한, 도 3에서, 화살표(205')는 제2 사이클 동안 차이 데이터로 디바이스(203-1,1)의 제1 업데이트를 나타내고; 화살표(207')는 제2 사이클 동안 차이 데이터로 디바이스(203-2,1)의 제1 업데이트를 나타내며; 화살표(209')는 제2 사이클 동안 차이 데이터로 디바이스(103-2,2)의 제1 업데이트를 나타내고; 화살표(211')는 제2 사이클 동안 차이 데이터로 디바이스(203-1,1)의 제2 업데이트를 나타내며; 화살표(213')는 제2 사이클 동안 차이 데이터로 디바이스(203-2,1)의 제2 업데이트를 나타내고; 화살표(215')는 제2 사이클 동안 차이 데이터로 디바이스(203-1,2)의 제1 업데이트를 나타낸다.
[0028] 전압들 Vx1, Vx2가 하이(high)일 확률들(the probabilities)은 제1 사이클에서 0.5 (0.45 + 0.05), 0.6 (0.55 + 0.05)이고, 전압들 Vδ1, Vδ2가 로우(low)일 확률들은 제1 사이클에서 0.3, 0.4이다. 이것은 도 2에서는 소수 형식으로, 도 3에서는 분수 형식으로 표시된다. 전압들 Vx1, Vx2가 하이일 확률들은 제2 사이클에서 0.4 (0.45 - 0.05), 0.5 (0.55 - 0.05)이고, 전압들 Vδ1, Vδ2가 로우일 확률들은 제2 사이클에서 0.3, 0.4(도 3의 분수 표기법 참조)이다.
[0029] 도 2에는 또한 종래의 전압 공급장치(voltage supply)(278), 제어 회로(279), 레지스터(265)에 결합된 온-칩 메모리(269)(아래에서 더 설명됨), 및 외부 메모리(267)(아래에서 더 설명됨)가 도시되어 있다. 외부 메모리(267) 이외의 컴포넌트들의 일부 또는 전부는 집적 회로 칩(263)에서 구현될 수 있다(전압 공급 장치 및/또는 제어 회로는 원하는 경우 오프-칩 일 수 있음). 제어 회로(279)는 여기에 정의된 기능들을 수행한다; 상기 기능들에 대한 기술적 사상들(teachings) 및 설명을 고려할 때, 공지된 제어 회로 기술들이 채용될 수 있다; 예를 들어, 임의의 적합한 기술군(예를 들어, 7nm CMOS, 5NM CMOS 등)을 사용하여 멀티 싸이클 또는 파이프라인 되거나, 하드와이어 되거나 또는 마이크로프로그래밍 될 수 있다. 예를 들어, 상기 명시된 기능들은 도 9와 관련하여 아래에 설명되는 논리 회로에서 인스턴스화될 수 있다.
[0030] 도 4는 베이스라인 및 차이 데이터(the baseline and difference data)의 예들을 보여준다. 원본 데이터는 도면번호(401)에 도시된다. 원본 데이터는 베이스라인 데이터(403)와 차이 데이터(405)로 나뉜다. 베이스라인 데이터에 차이 데이터를 더하면 도면번호(407)에서 원본 데이터가 재생된다. 베이스라인을 복사하는 단계가 무시해도 될 정도라고 가정하면, 본 발명의 예시적인 실시예에 대한 원본 데이터(96바이트)를 복사하기 위한 총 오버헤드는 1회 베이스라인 데이터 오버헤드를 무시하는 경우 16바이트((16/96) * 100 = 17%)가 될 것이다. 또한, 이와 관련하여, 애플리케이션들의 훈련 데이터 볼륨은 일반적으로 매우 크므로, 따라서 데이터는 일반적으로 오프칩 인터페이스 또는 무선 통신을 통해 솔리드-스테이트 드라이브들(SSDs)과 같은 외부 대형 스토리지 디바이스들에서 온칩 메모리(랜덤 엑세스 메모리(RAM))로 이동해야 한다. 이러한 통신 비용은 매우 비싸므로, 본 발명의 하나 혹은 그 이상의 실시예들에서는 통신 비용을 최소화하고자 한다. SSD와 RAM은 이러한 통신의 비제한적인 예이다. 하나 혹은 그 이상의 실시예에서 적절한 점은, 베이스라인 데이터 복사가 드물기 때문에, 베이스라인에 대한 통신 비용을 무시할 수 있다는 것이다.
[0031] 하나 혹은 그 이상의 실시예들에서, 8 바이트는 부동-소수점 수를 나타낸다고 가정한다. 베이스라인 데이터는, 예를 들어, 휴리스틱 또는 통계적 방법들(heuristics or statistical methods)(예: 평균, 중앙값)을 사용하여 결정될 수 있다. 베이스라인 데이터는 일반적으로 오랜 기간 동안의 특정 대표적인 데이터이며, 예를 들어, 만일 3 사이클에 걸친 전체 데이터가 0.6 -> 0.7 -> 0.5이면, 베이스라인 데이터 = 0.6이고 차이 데이터는 0 -> 0.1 -> -0.1이다. 여기서, 0.6은 0.6, 0.7, 0.5 세 개의 값들의 평균값이다. "평균 및 중앙값"은 많은 수들에서 대표 값을 찾기 위해 가장 널리 사용되는 메트릭스이다. 베이스라인 데이터(403)는 32바이트(4 * 8)인 반면 차이 데이터(405)는 16바이트(2 * 8)가 된다. 32바이트의 베이스라인 데이터는 만일 n(베이스라인 변경 전의 차이 프레임들의 수, 즉, 베이스 데이터는 nth 사이클마다 수신되어야 한다.)이 충분히 크다면 상각될 수 있다(amortized). 따라서, 베이스라인 데이터의 오버헤드는 n이 충분히 클 때 무시할 수 있을 것이라고 가정할 수 있다(이 그림에서 n = 3의 값이지만; 즉, 차이 데이터의 프레임들이 3개이지만, 이는 설명의 편의를 위한 것이고, 실제 경우에 상기 수는 일반적으로 훨씬 커야, 즉 >24이어야 한다). 베이스라인 데이터 오버헤드 = 0이라고 가정하면 데이터는 96바이트 대신 16바이트로 보내질 수 있다(17% 값에 해당). 96바이트 값은 다음과 같이 결정됨에 주목해야한다: 원본 데이터는 3개의 2x2 어레이들을 갖는다; 즉 2 * 2 = 4이고; 4 * 3 * 8바이트/부동 소수점 수 = 96바이트가 된다. 또한, 희소한 차이 메트릭스들을 갖는 차이 데이터는 0이 아닌 값들(non-zero values)을 갖는 차이 메트릭스들의 두 엘리멘트들뿐이고, 부동 소수점 수 당 8 배인 바이트 또는 16바이트이다.
[0032] 도 5는 희소성 대 임계값(sparsity versus threshold)을 보여주고 도 6은 파일(데이터) 크기 대 임계값(file (data) size versus threshold)을 보여준다. 입력 데이터는 단백질들(proteins) 간의 거리들을 나타내는, 분자 역학에서의 거리 매트릭스(the distance matrix in molecular dynamics)이다(183 X 183 * 8바이트 = 프레임 당 262KB). 임계값(허용 가능한 오류율)은 드로에 허용가능한(tolerable to draw) 오류의 양을 나타낸다(설명된 예의 경우 옹스트롬(Angstrom)). 희소성은 0들의 수를 매트릭스 셀들의 수로 나눈 값이다; 희소성은 임계값이 높을수록 증가하고, 데이터(파일) 크기는 희소성이 높을수록 감소한다. 따라서, 희소성이 높을수록 파일 크기는 작아지고, 로드할 데이터는 감소된다. 그러한 애플리케이션들에서, 연속 이미지 프레임들(the consecutive image frames)은 유사성이 높으므로, 매우 높은 희소성을 갖는 매우 작은 차이 데이터(very small diff data)가 생성된다. 따라서, 매우 낮은 양의 데이터 통신(a very low volume of data communication)이 달성 가능하다. 허용 가능한 오류 범위 내에서 더 높은 임계값을 채용하면 데이터 통신의 양은 훨씬 더 감소될 수 있다.
[0033] 따라서, 대규모 신경망 훈련에는 대량의 입력 데이터 스트림이 필요하므로, 예를 들어, 움직이는 물체들 대한 비디오 프레임들 및 분자 역학과 같은, ~TB 크기를 초과하는 원시 데이터 통신들이 자주 발생한다. 유사성들을 제거하기 위해 입력 데이터를 베이스라인 데이터와 차이 데이터로 분리하여, 베이스라인 데이터는 드물게(infrequently) 전송하고, 낮은 양의 차이 데이터(the low-volume difference data)는 자주 전송하는 것은 알려져 있다. 이렇게 하면 통신 비용이 크게 절감되지만, 베이스라인 데이터와 차이 데이터를 병합함에 의한 명시적인 복구 프로세스가 필요하다; 바람직하게도, 본 발명의 하나 혹은 그 이상의 실시예들은 그러한 명시적인 압축해제 프로세스를 요구하거나 채용하지 않는다.
[0034] 또한, 하나 혹은 그 이상의 실시예들은 프레임들 간의 유사성이 높은 스트리밍된 입력 이미지들에 대한 저항 처리 유닛들(RPUs)의 어레이를 사용하는 효율적인 훈련 하드웨어 시스템을 제공한다. 베이스 및 차이 데이터에 대한 워드 라인당 2개의 개별 펄스 생성기들을 가짐으로써 훈련 중에 베이스 및 차이 데이터를 어레이에 동시에 적용할 수 있다. 언급한 바와 같이, 종래의 디지털 구현들과 달리, 본 발명의 하나 혹은 그 이상의 실시예들에 따른 아키텍처는 원래 데이터의 명시적 복구(explicit recovery)를 요구하지 않는다.
[0035] 하나 혹은 그 이상의 실시예들에서, 가중치들은 훈련될 어레이에 저장된다. 전술한 바와 같이, 확률 변환기들(295, 297)은 레지스터들(265)의 입력 데이터를 하이 및 로우 확률 스트림으로 변환한다. 그 다음, 확률 펄스 생성기들(705, 707)은 확률 변환기들의 출력(하이/로우의 스트림)에 기초하여 WL들(701)을 구동하고; 즉, 더 이상 입력 데이터를 직접 사용하지 않는다. 따라서, 펄스 생성기들은 베이스/차이 입력 데이터 자체를 사용하지 않고, 확률 변환기들의 출력들을 사용한다. 달리 표현하면, 도시된 바와 같이 데이터 A, B는 레지스터로 유입되고, 그 다음, 변환기는 그 값을 사용하여 하이 및 로우의 스트림을 생성하며, 그 다음, 스트림은 펄스 생성기로 이동하여, 워드 라인들을 구동한다(WL). 차이 데이터는 매 사이클마다 수신되며 베이스 데이터는 nth 사이클마다 수신된다. 업데이트 활성화 신호의 펄스 폭(the update enabling signal's pulse width)(BL)을 변조함으로써 학습 속도(the learning rate)가 제어될 수 있다.
[0036] 따라서, 하나 혹은 그 이상의 실시예들은 프레임들 사이의 높은 유사성 또는 유사한 데이터를 갖는 스트리밍된 입력 이미지들에 대해 저항 처리 유닛들(RPUs)을 갖는 신경망들의 효율적인 하드웨어-기반 훈련을 위한 방법들 및 회로들을 제공한다.
[0037] 훈련 동안 업데이트 프로세스의 맥락에서 예시적인 사용 사례가 설명되었지만, 순방향 및 추론의 주요 컴퓨팅 커널들도 매트릭스 곱셈임을 이해해야 한다. 예를 들어, (전압) 벡터 X와 (매트릭스, 예를 들어 가중치) W 사이에서, X * W를 계산해야 할 수도 있다. 비-제한적인 사용 사례에서, 추론하는 동안, 타겟의 위치를 찾기 위해 비디오 프레임들의 스트림이 수신될 수 있다. 그러한 경우, 통신 비용들을 절약하기 위해 벡터 X를 "X_베이스 + X_차이"("X_base + X_diff")로 분해함으로써 유사한 기술이 채용될 수 있다.
[0038] 예시적인 추론 프로세스가 도 7에 도시되어 있다. 추론 동안, RPU 비트 셀들(203)의 저장된 값들은 변경되지 않는다. 전압 벡터 주변 회로(796)로부터 워드 라인들(701)로 X_베이스 + X_차이를 입력하고 적분기(op-amp 753 및 커패시터 755) 및 아날로그-디지털 변환기(ADC)(751)를 사용하여 비트 라인들(703) 하단에서의 전류를 간단히 측정한다.
[0039] 숙련된 기술자는, 예를 들어, 다음의 참고문헌들로부터 RPU 어레이들에 대한 기존 교육 및 추론에 익숙할 것이다. Gokmen T. 과 Vlasov Y.의, 저항성 교차-점 디바이스들을 사용한 심층 신경망 훈련의 가속화: 설계 고려 사항들(Acceleration of Deep Neural Network Training with Resistive Cross-Point Devices: Design Considerations), Front. Neurosci. 10:333, doi: 10.3389/fnins.2016.00333, 2016년 7월 21 및 Gokmen T., Onen M. 과 Haensch W.의, 저항 교차점 디바이스들을 사용한 심층 컨벌루션 신경망들의 훈련(Training Deep Convolutional Neural Networks with Resistive Cross-Point Devices), Front. Neurosci. 11:538. doi: 10.3389/fnins.2017.00538, 2017년 10월 10일.
[0040] 지금까지 논의된 바를 고려할 때, 일반적으로, 본 발명의 일 실시예에 따른, 예시적인 전자 회로는, 복수의 워드 라인들(701); 복수의 그리드 포인트들에서 복수의 워드 라인들과 교차하는 복수의 비트 라인들(703); 및 복수의 그리드 포인트들에 위치한 복수의 저항 처리 유닛들(203-1,1...203-2,2)을 포함함을 이해할 수 있을 것이다. 또한, 복수의 워드 라인들에 결합된 복수의 베이스라인 확률 펄스 입력 유닛들(265(즉, 변환기들(297)에 결합된 레지스터들),297, 705); 복수의 워드 라인들에 결합된 복수의 차이 확률 펄스 입력 유닛들(265(즉, 변환기들 295에 결합된 레지스터들), 295, 707); 및 복수의 비트라인에 결합된 복수의 비트라인 확률 펄스 입력 유닛들(265(즉, 변환기들 299에 결합된 레지스터들), 299, 298)을 포함한다. 복수의 베이스라인 확률 펄스 입력 유닛들, 상기 복수의 차이 확률 펄스 입력 유닛들, 및 상기 복수의 비트라인 확률 펄스 입력 유닛들에 결합된 제어 회로(279)가 더 포함되며, 제어 회로(279)는 상기 베이스라인 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터를 사용하여 베이스라인 펄스 트레인(a baseline pulse train)을 생성하게 하고, 상기 차이 확률 펄스 입력 유닛들 각각으로 하여금 상기 베이스 입력 데이터로부터의 차이들을 정의하는 차이 입력 데이터를 사용하여 차이 펄스 트레인(a differential pulse train)을 생성하게 하며, 그리고 상기 비트라인 확률 펄스 입력 유닛들 각각으로 하여금 비트라인 입력 데이터를 사용하여 비트라인 펄스 트레인(a bitline pulse train)을 생성하게 하도록 구성된다.
[0041] 하나 혹은 그 이상의 실시예들에서, 상기 제어 회로는 복수의 저항 처리 유닛들에 신경망들 가중치를 저장하기 위해 복수의 베이스라인 확률 펄스 입력 유닛들, 복수의 차이 확률 펄스 입력 유닛들 및 복수의 비트라인 확률 펄스 입력 유닛들을 제어한다. 하나 혹은 이상의 실시예들에서, 애플리케이션이 무엇이든, 가중치들은 정확한 최종 결정, 예를 들어, 이미지가 사람인지 고양이인지; 세포가 암세포인지 정상 세포인지, 등등에 관한 정확한 최종 결정을 내리기 위해 반복 훈련 머신 러닝 프로세스로부터 단순히 획득된 수들(the numbers)이다. 일단 가중치들이 획득되면, 매트릭스 곱셈 또는 컨벌루션들(convolutions) 동안에 상기 수들을 입력 이미지 값들과 곱함으로써 애플리케이션에 대해 가중치들이 사용될 수 있다(즉, 추론 동안에). 따라서, 예를 들어, 이미지들을 인식하기 위해 추론하는 단계(Inferencing)가 수행될 수 있다. 인식된 이미지들에 기초하여, 예를 들어, 자율 차량, 로봇 수술 디바이스 등을 제어하는 것과 같은, 적절한 조치가 취해질 수 있다.
[0042] 하나 혹은 그 이상의 실시예들에서, 복수의 베이스라인 확률 펄스 입력 유닛들 각각은 베이스 입력 데이터의 대응하는 부분을 저장하도록 구성된 베이스라인 레지스터(즉, 변환기들(297)에 결합된 레지스터들), 베이스라인 레지스터에 결합된 베이스라인 확률 변환기(297), 및 베이스라인 확률 변환기 및 워드 라인들 중 대응하는 하나에 결합된 베이스라인 펄스 생성기(705)를 포함하고; 복수의 차이 확률 펄스 입력 유닛들 각각은 차이 입력 데이터의 대응 부분을 저장하도록 구성된 차이 레지스터(즉, 변환기들(295)에 결합된 레지스터들), 차이 레지스터에 결합된 차이 확률 변환기(295), 및 차이 확률 변환기 및 대응하는 워드 라인들(701)에 결합된 차이 펄스 생성기(707)를 포함하며; 복수의 비트라인 확률 펄스 입력 유닛들 각각은 비트라인 입력 데이터의 대응 부분을 저장하도록 구성된 비트라인 레지스터(즉, 변환기들(299)에 결합된 레지스터들), 비트라인 레지스터에 결합된 비트라인 확률 변환기(299), 및 비트라인 확률 변환기 및 비트 라인들(703) 중 대응하는 하나에 결합된 비트라인 펄스 생성기(298)를 포함한다.
[0043] 하나 혹은 그 이상의 실시예들에서, 베이스라인 확률 변환기들(297)은 베이스라인 레지스터들의 베이스라인 데이터를 하이 및 로우의 베이스라인 출력 확률 스트림으로 변환하도록 구성되고, 베이스라인 펄스 생성기들(705)은 베이스라인 출력에 기초하여 워드 라인들을 구동하도록 구성되며; 차이 확률 변환기들(295)은 차이 레지스터의 차이 데이터를 차이 출력 확률 하이 및 로우 스트림들로 변환하도록 구성되고, 차이 펄스 생성기들(707)은 차이 출력에 기초하여 워드 라인들을 구동하도록 구성되며; 비트라인 확률 변환기들(299)은 비트라인 레지스터의 비트라인 데이터를 비트라인 출력 확률 하이 및 로우 스트림들로 변환하도록 구성되고, 비트라인 펄스 생성기들(298)은 비트라인 출력에 기초하여 비트 라인들을 구동하도록 구성된다.
[0044] 하나 혹은 그 이상의 실시예들에서, 상기 전자 회로는 집적 회로 칩(263)으로 구현되며, 레지스터들(265)에 결합되고 오프-칩 저장/외부 메모리(267)(비제한적인 예로, 솔리드-스테이트 드라이브(SSD))에 대한 인터페이스(I/F)를 포함하는 온-칩 메모리(269)(예를 들어, SRAM(정적 RAM)과 같은 랜덤 액세스 메모리(RAM))를 더 포함한다.
[0045] 하나 혹은 그 이상의 실시예들에서, 차이 데이터는 매 사이클마다 수신되며; 베이스 데이터는 nth 사이클마다 수신된다. 하나 혹은 그 이상의 실시예들에서, 새로운 입력 데이터가 외부 디바이스들(SSD와 같은)로부터 수신될 때마다, 그러한 데이터는 일반적으로 온-칩 임시 스토리지 디바이스(269), 예를 들어 RAM(비-제한적인 예에서, SRAM)에 저장된다. 그러나, (업데이트/학습) 계산들 중에, 데이터는 RPU 코어에 훨씬 더 가깝게, 예를 들어, 레지스터들로 이동된다. 상기 값들은 레지스터들에 저장되며, 베이스 레지스터는 자주 업데이트되지 않는다.
[0046] 업데이트 방정식(201)에서, 비트라인 데이터는 "델타(δ)"이다. 상기 델타 결과는 이전의 역 전파 프로세스(the previous back propagation process)로부터 나와서 온-칩 스토리지 디바이스들(269)에 저장되며 업데이트 프로세스 동안 RPU 코어 근처의 레지스터들(265)로 이동된다. 그러나, 하나 혹은 그 이상의 실시예들에서, 이 델타는 자주 업데이트되지 않는다. 델타는 소위 "배치(batch)-기반" 처리를 통해 많은 새로운 입력들에 재-사용된다.
[0047] 다른 곳에서 논의된 바와 같이, 학습 속도(the learning rate)는 업데이트 활성화 신호의 펄스 폭(the update enabling signal's pulse width)(BL)을 변조함으로써 제어될 수 있다. 따라서, 하나 혹은 그 이상의 실시예들에서, 제어 회로는 차이 확률 변환기들의 출력(outputs of the differential stochastic translators)에서 확률 비트 스트림(도 3의 제1 및 제2 사이클들에 대한 BL 참조)의 길이를 제어함으로써 업데이트 시간을 제어하도록 구성된다.
[0048] 하나 혹은 그 이상의 실시예들에서, 도 7을 참조하면, 상기 전자 회로는 복수의 워드 라인들에 결합된 전압 벡터 주변 회로(a voltage vector peripheral circuit)(796) 및 복수의 비트 라인들에 결합된 복수의 적분기들(예를 들어, 751, 753, 755)를 더 포함한다. 상기 제어 회로는 신경망 가중치들이 저장된 복수의 저항 처리 유닛들과 추론을 수행하기 위해 전압 벡터 주변 회로와 복수의 적분기들을 제어한다. 적합한 통합 기술들은, 예를 들어, 위에서 언급한 Gokmen 등의 논문들에서 알려져 있다.
[0049] 하나 혹은 그 이상의 실시예들에서, 상기 제어 회로는 전압 벡터를 베이스라인 데이터 더하기 차이 데이터 X_베이스 + X_차이(baseline data plus differential data X_base + X_diff)로서 복수의 워드 라인에 입력하도록 전압 벡터 주변 회로를 제어한다.
[0050] 본 발명의 기술적 사상들이 주어지면, 숙련된 기술자는 공지된 집적 회로 제조 기술들을 사용하여 본 발명의 회로들을 구현할 수 있다. 상기 셀들의 다양한 상태들과 프로그래밍 방법을 고려하여, 신호(들)를 중첩하는 단계는 증분 방식으로 가중치를 업데이트한다. 열과 행에 대해 두 개의 독립적인 난수 생성기들이면 하나 혹은 그 이상의 실시예들에서 충분하다.
[0051] 다른 실시예에서, 컴퓨터-구현 신경망을 학습하기 위한 예시적인 방법은, 전술한 바와 같은 전자 회로를 제공하는 단계를 포함한다(대안으로서, 명시적인 제공 단계 대신, 상기 회로가 방법이 작동하는 물건으로 제공될 수 있다). 상기 방법은 (예를 들어, 제어 회로를 사용하여) 상기 베이스라인 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터를 사용하여 베이스라인 펄스 트레인을 생성하게 하고, 상기 차이 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터로부터의 차이를 정의하는 차이 입력 데이터를 사용하여 차이 펄스 트레인을 생성하게 하며, 그리고 상기 비트라인 확률 펄스 입력 유닛들 각각으로 하여금 비트라인 입력 데이터를 사용하여 비트라인 펄스 트레인을 생성하게 하는 단계를 포함한다.
[0052] 하나 혹은 그 이상의 실시예들에서, 상기 방법은 (예를 들어, 상기 제어 회로를 사용하여) 상기 복수의 저항 처리 유닛들에 신경망 가중치들을 저장하기 위해 상기 복수의 베이스라인 확률 펄스 입력 유닛들, 상기 복수의 차이 확률 펄스 입력 유닛들, 및 상기 복수의 비트라인 확률 펄스 입력 유닛들을 제어하는 단계를 더 포함한다.
[0053] 하나 혹은 그 이상의 실시예들에서, 상기 제공 단계에서(또는 대안으로, 상기방법이 작동하는 물건에서), 상기 복수의 베이스라인 확률 펄스 입력 유닛들 각각은 상기 베이스 입력 데이터의 대응 부분을 저장하도록 구성된 베이스라인 레지스터, 상기 베이스라인 레지스터에 결합된 베이스라인 확률 변환기, 및 상기 베이스라인 확률 변환기 및 상기 워드 라인들 중 대응하는 하나에 결합된 베이스라인 펄스 생성기를 포함하고; 상기 복수의 차이 확률 펄스 입력 유닛들 각각 상기 차이 입력 데이터의 대응하는 부분을 저장하도록 구성된 차이 레지스터, 상기차이 레지스터에 결합된 차이 확률 변환기, 및 상기 차이 확률 변환기 및 상기 워드 라인들 중 대응하는 하나에 결합된 차이 펄스 생성기를 포함하며; 상기 복수의 비트라인 확률 펄스 입력 유닛들 각각은 상기 비트라인 입력 데이터의 대응 부분을 저장하도록 구성된 비트라인 레지스터, 상기 비트라인 레지스터에 결합된 비트라인 확률 변환기, 및 상기 비트라인 확률 변환기와 상기 비트 라인들 중 대응하는 하나에 결합된 비트라인 펄스 발생기를 포함한다. 상기 방법은, 상기 베이스라인 확률 변환기들로, 상기 베이스라인 레지스터들의 베이스라인 데이터를 하이 및 로우 베이스라인 출력 확률 스트림들로 변환하는 단계; 상기 베이스라인 펄스 생성기들로, 상기 베이스라인 출력에 기초하여 상기 워드 라인들을 구동하는 단계; 상기 차이 확률 변환기들로, 상기 차이 레지스터들의 차이 데이터를 하이 및 로우 차이 출력 확률 스트림들로 변환하는 단계; 상기 차이 펄스 생성기들로, 상기 차이 출력에 기초하여 상기 워드 라인들을 구동하는 단계; 상기 비트라인 확률 변환기들로, 상기 비트라인 레지스터들의 비트라인 데이터를 비트라인 출력 확률 하이 및 로우 스트림들로 변환하는 단계; 및 상기 비트라인 펄스 생성기들로, 상기 비트라인 출력에 기초하여 상기 비트 라인들을 구동하는 단계를 포함한다.
[0054] 하나 혹은 그 이상의 실시예들은 상기 차이 확률 변환기들의 출력들에서 확률 비트 스트림의 길이를 제어함으로써 업데이트 시간을 제어하는 단계(예를 들어, 상기 제어 회로를 사용하여)을 더 포함한다.
[0055] 도 7을 참조하면, 하나 혹은 그 이상의 실시예들에서, 상기 제공하는 단계에서(또는 대안으로, 상기 방법이 작동하는 물건에서)에서, 상기 전자 회로는 상기 복수의 워드 라인들에 결합된 전압 벡터 주변 회로 및 상기 복수의 비트 라인들에 결합된 복수의 적분기들을 더 포함한다. 추가 단계는 (예를 들어, 상기 제어 회로를 사용하여), 내부에 저장된 신경망 가중치들을 갖는 복수의 저항 처리 유닛들로 추론을 수행하기 위해, 상기 전압 벡터 주변 회로 및 상기 복수의 적분기들을 제어하는 단계를 포함한다.
[0056] 여전히 도 7을 참조하면, 하나 혹은 그 이상의 실시예들은 (예를 들어, 상기 제어 회로를 사용하여), 상기 전압 벡터를 베이스라인 데이터 더하기 차이 데이터(baseline data plus differential data)로서 상기 복수의 워드 라인들에 입력하기 위해 상기 전압 벡터 주변 회로를 제어하는 단계를 더 포함한다.
[0057] 도 8을 참조하면, 본 발명의 일부 실시예들은 신경망들 등에 대한 훈련(선택적으로 추론)을 가속화하기 위해 전문화된 하드웨어 기술들을 사용하는 하드웨어 코프로세서(999)로서 구현될 수 있다. 도 8은 그러한 하드웨어 코프로세서를 포함하는 컴퓨터 시스템(12)을 도시한다. 컴퓨터 시스템(12)은, 예를 들어, 하나 혹은 그 이상의 종래의 프로세서들 또는 처리 유닛들(16), 시스템 메모리(28), 및 시스템 메모리(28), 및 하나 혹은 그 이상의 하드웨어 코프로세서들(999)을 포함하는 다양한 시스템 컴포넌트들을 프로세서(16)에 연결하는 버스(18)를 포함한다. 요소들(999 및 16)은, 예를 들어, 적절한 버스 인터페이스 유닛들을 사용하여 버스에 연결할 수 있다.
[0058] 버스(18)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 가속 그래픽들 포트, 다양한 버스 구조들을 사용하는 프로세서 또는 로컬 버스를 포함하는 여러 유형들의 버스 구조들 중 하나 혹은 그 이상을 나타낸다. 제한이 아닌, 예로서, 그러한 아키텍처들에는 업계 표준 구조(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 향상된 업계 표준 구조(EISA) 버스, 비디오 전자공학 표준위원회(VESA) 로컬 버스 및 주변 컴포넌트 상호 연결(Peripheral Component Interconnect; PCI) 버스가 포함된다.
[0059] 컴퓨터 시스템/서버(12)는 일반적으로 다양한 컴퓨터 시스템 판독 가능 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(12)에 의해 액세스 가능한 모든 사용 가능한 매체일 수 있으며, 휘발성 및 비-휘발성 매체, 착탈식 및 비-착탈식 매체를 모두 포함한다.
[0060] 시스템 메모리(28)는, 랜덤-엑세스 메모리(RAM)(30) 및/또는 캐시 메모리(32)와 같은, 휘발성 메모리 형태의 컴퓨터 시스템 판독 가능 매체를 포함할 수 있다. 컴퓨터 시스템/서버(12)는 다른 착탈식/비-착탈식, 휘발성/비-휘발성 컴퓨터 시스템 스토리지 매체를 더 포함할 수 있다. 단지 예로서, 스토리지 시스템(34)은 비-착탈식, 비-휘발성 자기 매체(도시되지 않았으며 일반적으로 "하드 드라이브"라고 함)를 읽고 기록하기 위해 제공될 수 있다. 도시되지는 않았지만, 착탈식, 비-휘발성 자기 디스크(예: "플로피 디스크")를 읽고 쓰기 위한 자기 디스크 드라이브 및 착탈식 비-휘발성 광 디스크에서 읽거나 쓰기 위한 광 디스크 드라이브 CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은 디스크가 제공될 수 있다. 그러한 경우들에서, 각각은 하나 혹은 그 이상의 데이터 매체 인터페이스들에 의해 버스(18)에 연결될 수 있다. 아래에서 추가로 묘사되고 설명되는 바와 같이, 메모리(28)는, 예를 들어, 신경망 또는 디지털 필터의 소프트웨어 구현 부분들을 수행하도록 구성된 프로그램 모듈들 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0061] 프로그램 모듈(42)의 세트(적어도 하나)를 갖는 프로그램/유틸리티(40)는 운영 체제, 하나 혹은 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터뿐만 아니라, 예로서 메모리(28)에 저장될 수 있으며, 이에 제한되지 않는다. 각각의 운영 체제, 하나 혹은 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합은, 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈(42)은 일반적으로 소프트웨어-구현 기능들 및/또는 방법을 수행한다.
[0062] 컴퓨터 시스템/서버(12)는 또한 하나 혹은 그 이상의 외부 디바이스들(14), 키보드, 포인팅 디바이스, 디스플레이(24) 등과 같은; 사용자가 컴퓨터 시스템/서버(12)와 상호 작용할 수 있게 해주는 하나 혹은 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(12)가 하나 혹은 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 하는 모든 디바이스들(예: 네트워크 카드, 모뎀 등)과 통신할 수 있다. 그러한 통신은 입력/출력(I/O) 인터페이스들(22)을 통해 발생할 수 있다. 여전히, 컴퓨터 시스템/서버(12)는 네트워크 어댑터(20)를 통해 근거리 네트워크(LAN), 일반 광역 네트워크(WAN) 및/또는 공중 네트워크(예를 들어, 인터넷)와 같은 하나 혹은 그 이상의 네트워크들과 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(20)는 버스(18)를 통해 컴퓨터 시스템/서버(12)의 다른 컴포넌트들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들이 컴퓨터 시스템/서버(12)와 함께 사용될 수 있음을 이해해야 한다. 예들은, 다음을 포함하지만, 이에 제한되지 않는다: 마이크로코드, 디바이스 드라이버들, 중복 처리 장치들, 및 외부 디스크 드라이브 어레이, RAID 시스템들, 테이프 드라이브들, 및 데이터 아카이브 스토리지 시스템들 등.
[0063] 여전히 도 8을 참조하면, 프로세서(16), 메모리(28), 디스플레이(24) 및 키보드, 포인팅 디바이스 등과 같은 외부 디바이스(들)(14)에 대한 입력/출력 인터페이스(22)를 기록한다. 본 명세서에서 사용되는 용어 "프로세서"는, 예를 들어, CPU(중앙 처리 장치) 및/또는 다른 형태들의 처리 회로(예를 들어, 999)를 포함하는 것과 같은 모든 처리 디바이스를 포함하도록 의도된다. 또한, "프로세서"라는 용어는 둘 이상의 개별 프로세서를 의미할 수 있다. "메모리"라는 용어는, 예를 들어, 랜덤-액세스 메모리(RAM)(30), 읽기 전용 메모리(ROM), 고정 메모리 디바이스(예를 들어, 하드 드라이브 34), 착탈식 메모리 장치(예: 디스켓), 플래시 메모리 등과 같은 프로세서 또는 CPU와 관련된 메모리를 포함하도록 의도된다. 또한, 본 명세서에서 사용되는 "입력/출력 인터페이스"라는 문구는, 예를 들어, 데이터를 처리 유닛(예: 마우스)에 입력하기 위한 하나 혹은 그 이상의 메커니즘들 및 처리 유닛과 관련된 결과들을 제공하기 위한 하나 혹은 그 이상의 메커니즘들(예: 프린터)에 대한 인터페이스를 고려하도록 의도된다. 프로세서(16), 코프로세서(999), 메모리(28) 및 입력/출력 인터페이스(22)는, 예를 들어, 데이터 처리 유닛(12)의 일부로서 버스(18)를 통해 상호 연결될 수 있다. 예를 들어, 버스(18)를 통한, 적절한 상호접속들은, 또한 컴퓨터 네트워크와 인터페이스하기 위해 제공될 수 있는, 네트워크 카드와 같은, 네트워크 인터페이스(20), 및 적절한 매체와 인터페이스하기 위해 제공될 수 있는, 디스켓 또는 CD-ROM 드라이브와 같은 미디어 인터페이스에 제공될 수 있다.
[0064] 따라서, 원하는 작업들을 수행하기 위한 명령들 또는 코드를 포함하는 컴퓨터 소프트웨어는 하나 혹은 그 이상의 관련 메모리 디바이스들(예를 들어, ROM, 고정 또는 착탈식 메모리)에 저장될 수 있으며, 사용할 준비가 되면, 부분적으로 또는 전체적으로(예: RAM으로) 로드되고 CPU에 의해 구현된다. 그러한 소프트웨어는 펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함할 수 있지만, 이에 제한되지 않는다.
[0065] 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템은 시스템 버스(18)를 통해 메모리 요소들(28)에 직접 또는 간접적으로 연결된 적어도 하나의 프로세서(16)를 포함할 것이다. 메모리 엘리멘트들은 프로그램 코드의 실제 구현 중에 사용되는 로컬 메모리, 대용량(bulk) 스토리지, 및 구현 중에 대용량 스토리지에서 코드를 검색해야 하는 횟수들을 줄이기 위해 적어도 일부 프로그램 코드의 임시 스토리지를 제공하는 캐시 메모리들(32)을 포함할 수 있다.
[0066] 입력/출력 또는 I/O 디바이스들(키보드들, 디스플레이들, 포인팅 디바이스들 등을 포함하되, 이에 제한되지 않음)는 직접 또는 중간 I/O 컨트롤러들을 통해 시스템에 연결될 수 있다.
[0067] 네트워크 어댑터들(20)은 또한 데이터 처리 시스템들이 개재하는 사설 또는 공공 네트워크들을 통해 다른 데이터 처리 시스템이나 원격 프린터들 또는 스토리지 디바이스들에 연결될 수 있도록 시스템에 연결될 수 있다. 모뎀들, 케이블 모뎀 및 이더넷 카드들은 현재 사용 가능한 네트워크 어댑터들 유형들 중 일부에 불과하다.
[0068] 청구범위를 포함하여, 본 명세서에서 사용되는 바와 같이, "서버"는 서버 프로그램을 실행하는 물리적 데이터 처리 시스템(예를 들어, 도 8에 도시된 바와 같은 시스템 12)을 포함한다. 그러한 물리적 서버는 디스플레이 및 키보드를 포함하거나 포함하지 않을 수 있음을 이해할 것이다. 또한, 도 8은, 예를 들어, 아래에 설명된 설계 프로세스의 특징들을 구현하는 데 사용될 수 있는, (예를 들어, 코-프로세서(999)가 없는) 기존의 범용 컴퓨터를 대표한다.
[0069] 반도체 설계, 제조 및/또는 테스트에 사용되는 모범적인 설계 프로세스
[0070] 본 발명의 특징들에 따른 하드웨어의 하나 혹은 그 이상의 실시예들은 반도체 집적 회로 설계 시뮬레이션, 테스트, 레이아웃 및/또는 제조를 위한 기술들을 사용하여 구현될 수 있다. 이와 관련하여, 도 9는, 예를 들어, 반도체 IC 논리 설계, 시뮬레이션, 테스트, 레이아웃 및 제조에 사용되는 예시적인 설계 흐름(700)의 블록도를 보여준다. 설계 흐름(700)은 여기에 개시된 것과 같은 설계 구조들 및/또는 디바이스들의 논리적 또는 기능적으로 동등한 표현들을 생성하기 위해 설계 구조들 또는 디바이스들을 처리하기 위한 프로세스들, 머신들 및/또는 메커니즘들을 포함한다. 설계 흐름(700)에 의해 처리 및/또는 생성된 설계 구조는 데이터 처리 시스템에서 실행되거나 달리 처리될 때 논리적으로, 구조적으로, 기계적으로, 또는 하드웨어 컴포넌트들, 회로들, 디바이스들, 또는 시스템들의 기능적으로 동등한 표현을 생성하는 데이터 및/또는 명령들을 포함하도록 기계-판독가능 스토리지 매체에 인코딩될 수 있다. 머신에는 회로, 부품, 디바이스, 또는 시스템의 설계, 제조 또는 시뮬레이션과 같은 IC 설계 프로세스에 사용되는 모든 머신이 포함되지만 이에 국한되지 않는다. 예를 들어, 머신들에는 다음이 포함될 수 있다: 리소그래피 머신들, 마스크들을 생성하기 위한 머신들 및/또는 장비(예: e-빔 기록기), 설계 구조들을 시뮬레이션하기 위한 컴퓨터들 또는 장비, 제조 또는 테스트 프로세스에 사용되는 모든 장치(apparatus), 또는 설계 구조들의 기능적으로 동등한 표현들을 임의의 매체로 프로그래밍하기 위한 머신들(예를 들어, 프로그래밍 가능한 게이트 어레이를 프로그래밍하는 머신).
[0071] 설계 흐름(700)은 설계되는 표현의 유형에 따라 달라질 수 있다. 예를 들어, 주문형 집적 회로(ASIC)를 구축하기 위한 설계 흐름(700)은 표준 컴포넌트를 설계하기 위한 설계 흐름(700) 또는 설계를 프로그래머블 어레이, 예를 들어 Altera® Inc. 또는 Xilinx® Inc.에서 제공하는 PGA(프로그래밍 가능 게이트 어레이) 또는 FPGA(필드 프로그래밍 가능 게이트 어레이)로 인스턴스화하기 위한 설계 흐름(700)과 다를 수 있다.
[0072] 도 9는 설계 프로세스(710)에 의해 바람직하게 처리되는 입력 설계 구조들(720)을 포함하는 다수의 그러한 설계 구조를 도시한다. 설계 구조(720)는 하드웨어 디바이스의 논리적으로 등가인 기능적 표현을 생성하기 위해 설계 프로세스(710)에 의해 생성되고 처리되는 논리적 시뮬레이션 설계 구조일 수 있다. 설계 구조(720)는 또한 대안으로 설계 프로세스(710)에 의해 처리될 때 하드웨어 디바이스의 물리적 구조의 기능적 표현을 생성하는 데이터 및/또는 프로그램 명령들을 포함할 수 있다. 기능적 및/또는 구조적 설계 특징들을 나타내든 간에, 설계 구조(720)는 핵심 개발자/설계자에 의해 구현되는 것과 같은 전자 컴퓨터-지원 설계(ECAD)를 사용하여 생성될 수 있다. 게이트 어레이 또는 스토리지 매체 등에 인코딩될 때, 설계 구조(720)는 설계 프로세스(710) 내의 하나 혹은 그 이상의 하드웨어들 및/또는 소프트웨어 모듈들에 의해 액세스 및 처리되어 전자 컴포넌트들, 회로, 전자 또는 논리 모듈, 장치, 디바이스, 또는 시스템을 시뮬레이션하거나 기능적으로 나타낼 수 있다. 이와 같이, 설계 구조(720)는 인간 및/또는 기계-판독 가능 소스 코드를 포함하는 파일들 또는 다른 데이터 구조들을 포함할 수 있다. 컴파일된 구조들, 및 설계 또는 시뮬레이션 데이터 처리 시스템에 의해 처리될 때 컴퓨터 실행 가능 코드 구조들, 회로들 또는 다른 수준들의 하드웨어 논리 설계를 기능적으로 시뮬레이션하거나 다른 방식으로 표현할 수 있다. 그러한 데이터 구조는 하드웨어-기술 언어(HDL) 디자인 주체들 또는 Verilog 및 VHDL과 같은 하위 수준 HDL 디자인 언어들 및/또는 C 또는 C++와 같은 상위 수준 디자인 언어들에 부합 및/또는 호환되는 다른 데이터 구조들을 포함할 수 있다.
[0073] 설계 프로세스(710)는 설계 구조(720)와 같은 설계 구조를 포함할 수 있는 네트리스트(Netlist)(780)를 생성하기 위한 회로들, 디바이스들, 또는 논리 구조들 바람직하게 컴포넌트들의 설계/시뮬레이션 기능 등가물을 합성, 변환 또는 처리하기 위한 하드웨어 및/또는 소프트웨어 모듈을 채택하고 통합할 수 있다. 네트리스트(780)는, 예를 들어, 집적 회로 설계의 다른 엘리멘트들 및 회로들에 대한 연결들을 설명하는 와이어들, 개별 컴포넌트들, 논리 게이트들, 제어 회로들, I/O 디바이스들, 모델들 등의 목록을 나타내는 컴파일되거나 처리된 데이터 구조들이다. 네트리스트(780)는 네트리스트(780)가 디바이스에 대한 설계 사양들 및 파라미터들에 따라 한 번 혹은 그 이상 재합성되는 반복 프로세스를 사용하여 합성될 수 있다. 여기에 설명된 다른 설계 구조 유형과 마찬가지로, 네트리스트(780)는 머신-판독 가능 데이터 스토리지 매체에 기록되거나 프로그래밍 가능한 게이트 어레이에 프로그래밍될 수 있다. 매체는 자기 또는 광학 디스크 드라이브, 프로그래밍 가능한 게이트 어레이, 컴팩트 플래시 또는 기타 플래시 메모리와 같은 비-휘발성 스토리지 매체일 수 있다. 추가로, 또는 대안적으로, 매체는 시스템 또는 캐시 메모리, 버퍼 공간 또는 기타 적합한 메모리일 수 있다.
[0074] 설계 프로세스(710)는 네트리스트(780)를 포함하는 다양한 입력 데이터 구조 유형들을 처리하기 위한 하드웨어 및 소프트웨어 모듈들을 포함할 수 있다. 그러한 데이터 구조 유형들은, 예를 들어, 라이브러리 엘리멘트들(730) 내에 상주할 수 있으며, 주어진 제조 기술(예: 다른 기술 노드들, 32nm, 45nm, 90nm 등)에 대한 모델들, 레이아웃들, 및 기호 표현들을 포함하여 일반적으로 사용되는 일련의 엘리멘트들, 회로들 및 디바이스들을 포함할 수 있다. 데이터 구조 유형들은 설계 사양(740), 특성화 데이터(750), 검증 데이터(760), 설계 규칙들(770), 입력 테스트 패턴들, 출력 테스트 결과들, 및 기타 테스트 정보를 포함할 수 있는 테스트 데이터 파일들(785)을 더 포함할 수 있다. 설계 프로세스(710)는, 예를 들어, 응력 분석, 열 분석, 기계적 이벤트 시뮬레이션, 주조, 몰딩 및 다이 프레스 성형 등과 같은 동작들을 위한 프로세스 시뮬레이션과 같은 표준 기계적 설계 프로세스를 더 포함할 수 있다. 기계 설계 분야의 통상의 기술자는 본 발명의 범위를 벗어나지 않고 설계 프로세스(710)에서 사용되는 가능한 기계 설계 도구들 및 애플리케이션들의 정도를 이해할 수 있다. 설계 프로세스(710)는 또한 타이밍 분석, 검증, 설계 규칙 검사, 배치 및 라우팅 동작들 등과 같은 표준 회로 설계 프로세스들을 수행하기 위한 모듈들을 포함할 수 있다.
[0075] 설계 프로세스(710)는 임의의 추가적인 기계적 설계 또는 데이터(적용 가능한 경우)와 함께 묘사된 지원 데이터 구조들의 일부 또는 전부와 함께 설계 구조(720)를 처리하기 위해 HDL 컴파일러들 및 시뮬레이션 모델 빌드 도구들과 같은 논리 및 물리적 설계 도구를 채택하고 통합하고, 제2 설계 구조(790)를 생성한다. 설계 구조(790)는 기계 디바이스들 및 구조들(예를 들어, IGES, DXF, Parasolid XT, JT, DRG 또는 그러한 기계 설계 구조들을 저장하거나 렌더링하는 데 적합한 기타 형식으로 저장된 정보)의 데이터 교환에 사용되는 데이터 형식으로 스토리지 매체 또는 프로그래밍 가능한 게이트 어레이에 상주한다. 설계 구조(720)와 유사하게, 설계 구조(790)는 바람직하게는 하나 혹은 그 이상의 파일들, 데이터 구조들, 또는 데이터 스토리지 매체에 상주하고 ECAD 시스템에 의해 처리될 때 여기에 개시된 하나 혹은 그 이상의 IC 설계들 등의 논리적 또는 기능적으로 동등한 형태를 생성하는 다른 컴퓨터-인코딩 데이터 또는 명령들을 포함한다. 일 실시예에서, 설계 구조(790)는 여기에 개시된 디바이스들을 기능적으로 시뮬레이션하고 컴파일되고 실행 가능한 HDL 시뮬레이션 모델을 포함할 수 있다.
[0076] 설계 구조(790)는 또한 집적 회로들의 레이아웃 데이터 및/또는 기호 데이터 형식(예를 들어, GDSII(GDS2), GL1, OASIS, 지도 파일들, 또는 그러한 설계 데이터 구조들을 저장하기 위한 기타 적절한 형식에 저장된 정보)의 교환에 사용되는 데이터 형식을 채용할 수 있다. 설계 구조(790)는, 예를 들어, 기호 데이터, 맵 파일들, 테스트 데이터 파일들, 설계 콘텐츠 파일들, 제조 데이터, 레이아웃 파라미터들, 와이어들, 금속 레벨들, 바이어스, 모양들, 제조 라인을 통한 라우팅 데이터, 및 제조업체 또는 여기에 설명된 디바이스 또는 구조를 생산하는 다른 설계자/개발자와 같은 정보를 포함할 수 있다. 설계 구조(790)는, 예를 들어, 단계(795)로 진행할 수 있다: 여기서 설계 구조(790)는 테이핑-아웃, 제조 반출, 마스크 하우스 반출, 다른 디자인 하우스로 반출, 고객에게 반송 등이 진행된다.
[0077] 본 발명의 다양한 실시예들에 대한 설명은 설명의 목적들로 제공되었지만 개시된 실시예들이 전부라거나, 이들로 제한되는 것으로 의도되지 않는다. 기술된 실시예들의 범위를 벗어나지 않고 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술에 대한 실제 적용 또는 기술적 개선을 가장 잘 설명하기 위해, 또는 당업자가 본 명세서에 개시된 실시예들을 이해할 수 있도록 선택되었다.

Claims (20)

  1. 전자 회로에 있어서, 상기 전자 회로는:
    복수의 워드 라인들;
    복수의 그리드 포인트들(a plurality of grid points)에서 상기 복수의 워드 라인들과 교차하는 복수의 비트 라인들;
    상기 복수의 그리드 포인트들에 위치된 복수의 저항 처리 유닛들(a plurality of resistive processing units);
    상기 복수의 워드 라인들에 결합된 복수의 베이스라인 확률 펄스 입력 유닛들(a plurality of baseline stochastic pulse input units);
    상기 복수의 워드 라인들에 연결된 복수의 차이 확률 펄스 입력 유닛들(a plurality of differential stochastic pulse input units);
    상기 복수의 비트 라인들에 결합된 복수의 비트라인 확률 펄스 입력 유닛들(a plurality of bitline stochastic pulse input units); 및
    상기 복수의 베이스라인 확률 펄스 입력 유닛들, 상기 복수의 차이 확률 펄스 입력 유닛들, 및 상기 복수의 비트라인 확률 펄스 입력 유닛들에 결합된 제어 회로(control circuitry)를 포함하고, 상기 제어회로는 상기 베이스라인 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터를 사용하여 베이스라인 펄스 트레인(a baseline pulse train)을 생성하게 하고, 상기 차이 확률 펄스 입력 유닛들 각각으로 하여금 상기 베이스 입력 데이터로부터 차이들을 정의하는 차이 입력 데이터를 사용하여 차이 펄스 트레인(a differential pulse train)을 생성하게 하며, 그리고 상기 비트라인 확률 펄스 입력 유닛들 각각으로 하여금 비트라인 입력 데이터를 사용하여 비트라인 펄스 트레인(a bitline pulse train)을 생성하게 하도록 구성되는
    전자 회로.
  2. 제1항에 있어서, 상기 제어 회로는 상기 복수의 저항 처리 유닛들에 신경망 가중치들을 저장하기 위해 상기 복수의 베이스라인 확률 펄스 입력 유닛들, 상기 복수의 차이 확률 펄스 입력 유닛들, 및 상기 복수의 비트라인 확률 펄스 입력 유닛들을 제어하는
    전자 회로.
  3. 제2항에 있어서,
    상기 복수의 베이스라인 확률 펄스 입력 유닛들 각각은 상기 베이스 입력 데이터의 대응하는 부분을 저장하도록 구성된 베이스라인 레지스터, 상기 베이스라인 레지스터에 결합된 베이스라인 확률 변환기(a baseline stochastic translator), 및 상기 베이스라인 확률 변환기 및 상기 워드 라인들 중 대응하는 하나에 결합된 베이스라인 펄스 생성기(a baseline pulse generator)를 포함하고;
    상기 복수의 차이 확률 펄스 입력 유닛들 각각은 상기 차이 입력 데이터의 대응하는 부분을 저장하도록 구성된 차이 레지스터, 상기 차이 레지스터에 결합된 차이 확률 변환기, 및 상기 차이 확률 변환기 및 상기 워드 라인들 중 대응하는 하나에 결합된 차이 펄스 생성기를 포함하며; 그리고
    상기 복수의 비트라인 확률 펄스 입력 유닛들 각각은 상기 비트라인 입력 데이터의 대응하는 부분을 저장하도록 구성된 비트라인 레지스터, 상기 비트라인 레지스터에 결합된 비트라인 확률 변환기, 및 상기 비트라인 확률 변환기 및 상기 비트 라인들 중 대응하는 하나에 결합된 비트라인 펄스 발생기를 포함하는
    전자 회로.
  4. 제3항에 있어서,
    상기 베이스라인 확률 변환기들은 상기 베이스라인 레지스터들의 베이스라인 데이터를 하이 및 로우 베이스라인 출력 확률 스트림들(baseline output stochastic streams of high and low)로 변환하도록 구성되고, 상기 베이스라인 펄스 발생기들은 상기 베이스라인 출력에 기초하여 상기 워드 라인들을 구동하도록 구성되며;
    상기 차이 확률 변환기들은 상기 차이 레지스터들의 차이 데이터를 하이 및 로우 차이 출력 확률 스트림들(differential output stochastic streams of high and low)로 변환하도록 구성되고, 상기 차이 펄스 생성기들은 상기 차이 출력에 기초하여 상기 워드 라인들을 구동하도록 구성되며; 그리고
    상기 비트라인 확률 변환기들은 상기 비트라인 레지스터들의 비트라인 데이터를 하이 및 로우 비트라인 출력 확률 스트림들(bitline output stochastic streams of high and low)로 변환하도록 구성되고, 상기 비트라인 펄스 발생기들은 상기 비트라인 출력에 기초하여 상기 비트라인들을 구동하도록 구성되는
    전자 회로.
  5. 제4항에 있어서, 상기 전자 회로는 집적 회로 칩으로서 구현되며, 상기 레지스터에 결합되고 오프-칩 스토리지(off-chip storage)에 대한 인터페이스를 포함하는 온-칩 랜덤 액세스 메모리를 더 포함하는
    전자 회로.
  6. 제5항에 있어서, 상기 제어 회로는 상기 차이 확률 변환기들의 출력에서 확률 비트 스트림의 길이를 제어함으로써 업데이트 시간을 제어하도록 구성되는
    전자 회로.
  7. 제2항에 있어서, 상기 전자 회로는 상기 복수의 워드 라인들에 결합된 전압 벡터 주변 회로(a voltage vector peripheral circuit) 및 상기 복수의 비트 라인들에 결합된 복수의 적분기들(a plurality of integrators)을 더 포함하고, 상기 제어 회로는 내부에 저장된 상기 신경망 가중치들을 갖는 상기 복수의 저항 처리 유닛들을 사용하여 추론하는 단계(inferencing)를 수행하도록 상기 전압 벡터 주변 회로 및 상기 복수의 적분기들을 제어하는
    전자 회로.
  8. 제7항에 있어서, 상기 제어 회로는 베이스라인 데이터 더하기 차이 데이터(baseline data plus differential data)로서 상기 복수의 워드 라인들에 전압 벡터를 입력하기 위해 상기 전압 벡터 주변 회로를 제어하는
    전자 회로.
  9. 컴퓨터-구현 신경망을 훈련시키는 방법에 있어서, 상기 방법은:
    전자 회로를 제공하는 단계를 포함하고, 상기 전자 회로는:
    복수의 워드 라인들;
    복수의 그리드 포인트들(a plurality of grid points)에서 상기 복수의 워드 라인들과 교차하는 복수의 비트 라인들;
    상기 복수의 그리드 포인트들에 위치된 복수의 저항 처리 유닛들(a plurality of resistive processing units);
    상기 복수의 워드 라인들에 결합된 복수의 베이스라인 확률 펄스 입력 유닛들(a plurality of baseline stochastic pulse input units);
    상기 복수의 워드 라인들에 연결된 복수의 차이 확률 펄스 입력 유닛들(a plurality of differential stochastic pulse input units);
    상기 복수의 비트 라인들에 결합된 복수의 비트라인 확률 펄스 입력 유닛들(a plurality of bitline stochastic pulse input units); 및
    상기 복수의 베이스라인 확률 펄스 입력 유닛들, 상기 복수의 차이 확률 펄스 입력 유닛들, 및 상기 복수의 비트라인 확률 펄스 입력 유닛들에 결합된 제어 회로(control circuitry)를 포함하며, 상기 방법은 상기 제어회로를 사용하여
    상기 베이스라인 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터를 사용하여 베이스라인 펄스 트레인(a baseline pulse train)을 생성하게 하고, 상기 차이 확률 펄스 입력 유닛들 각각으로 하여금 상기 베이스 입력 데이터로부터 차이들을 정의하는 차이 입력 데이터를 사용하여 차이 펄스 트레인(a differential pulse train)을 생성하게 하며, 그리고 상기 비트라인 확률 펄스 입력 유닛들 각각으로 하여금 비트라인 입력 데이터를 사용하여 비트라인 펄스 트레인(a bitline pulse train)을 생성하게 하는 단계를 포함하는
    방법.
  10. 제9항에 있어서, 상기 방법은, 상기 제어 회로를 사용하여, 상기 복수의 저항 처리 유닛들에 신경망 가중치들을 저장하기 위해 상기 복수의 베이스라인 확률 펄스 입력 유닛들, 상기 복수의 차이 확률 펄스 입력 유닛들, 및 상기 복수의 비트라인 확률 펄스 입력 유닛들을 제어하는 단계를 더 포함하는
    방법.
  11. 제10항에 있어서, 상기 제공 단계에서:
    상기 복수의 베이스라인 확률 펄스 입력 유닛들 각각은 상기 베이스 입력 데이터의 대응하는 부분을 저장하도록 구성된 베이스라인 레지스터, 상기 베이스라인 레지스터에 결합된 베이스라인 확률 변환기(a baseline stochastic translator), 및 상기 베이스라인 확률 변환기 및 상기 워드 라인들 중 대응하는 하나에 결합된 베이스라인 펄스 생성기(a baseline pulse generator)를 포함하고;
    상기 복수의 차이 확률 펄스 입력 유닛들 각각은 상기 차이 입력 데이터의 대응하는 부분을 저장하도록 구성된 차이 레지스터, 상기 차이 레지스터에 결합된 차이 확률 변환기, 및 상기 차이 확률 변환기 및 상기 워드 라인들 중 대응하는 하나에 결합된 차이 펄스 생성기를 포함하며; 그리고
    상기 복수의 비트라인 확률 펄스 입력 유닛들 각각은 상기 비트라인 입력 데이터의 대응하는 부분을 저장하도록 구성된 비트라인 레지스터, 상기 비트라인 레지스터에 결합된 비트라인 확률 변환기, 및 상기 비트라인 확률 변환기 및 상기 비트 라인들 중 대응하는 하나에 결합된 비트라인 펄스 발생기를 포함하고;
    상기 방법은:
    상기 베이스라인 확률 변환기들로, 상기 베이스라인 레지스터들의 베이스라인 데이터를 하이 및 로우 베이스라인 출력 확률 스트림들(baseline output stochastic streams of high and low)로 변환하는 단계;
    상기 베이스라인 펄스 발생기들로, 상기 베이스라인 출력에 기초하여 상기 워드 라인들을 구동하는 단계;
    상기 차이 확률 변환기들롤, 상기 차이 레지스터들의 차이 데이터를 하이 및 로우 차이 출력 확률 스트림들(differential output stochastic streams of high and low)로 변환하는 단계;
    상기 차이 펄스 생성기들로, 상기 차이 출력에 기초하여 상기 워드 라인들을 구동하는 단계;
    상기 비트라인 확률 변환기들롤, 상기 비트라인 레지스터들의 비트라인 데이터를 하이 및 로우 비트라인 출력 확률 스트림들(bitline output stochastic streams of high and low)로 변환하는 단계; 및
    상기 비트라인 펄스 발생기들로, 상기 비트라인 출력에 기초하여 상기 비트라인들을 구동하는 단계를 더 포함하는
    방법.
  12. 제11항에 있어서, 상기 방법은, 상기 제어 회로를 사용하여, 상기 차이 확률 변환기들의 출력에서 확률 비트 스트림의 길이를 제어함으로써 업데이트 시간을 제어하는 단계를 더 포함하는
    방법.
  13. 제10항에 있어서, 상기 제공 단계에서, 상기 전자 회로는 상기 복수의 워드 라인들에 결합된 전압 벡터 주변 회로(a voltage vector peripheral circuit) 및 상기 복수의 비트 라인들에 결합된 복수의 적분기들(a plurality of integrators)을 더 포함하고, 상기 방법은, 상기 제어 회로를 사용하여, 내부에 저장된 상기 신경망 가중치들을 갖는 상기 복수의 저항 처리 유닛들을 사용하여 추론하는 단계(inferencing)를 수행하도록 상기 전압 벡터 주변 회로 및 상기 복수의 적분기들을 제어하는 단계를 더 포함하는,
    방법.
  14. 제13항에 있어서, 상기 방법은, 상기 제어 회로를 사용하여, 베이스라인 데이터 더하기 차이 데이터(baseline data plus differential data)로서 상기 복수의 워드 라인들에 전압 벡터를 입력하기 위해 상기 전압 벡터 주변 회로를 제어하는 단계를 더 포함하는
    방법.
  15. 머신-판독 가능 데이터 스토리지 매체에 인코딩된 하드웨어 기술 언어(HDL) 설계 구조(A hardware description language (HDL) design structure)에 있어서, 상기 HDL 설계 구조는 컴퓨터-지원 설계 시스템(a computer-aided design system)에서 처리될 때 장치의 머신-실행 가능 표현(a machine-executable representation of an apparatus)을 생성하는 엘리멘트들을 포함하며, 상기 HDL 설계 구조는:
    복수의 워드 라인들;
    복수의 그리드 포인트들(a plurality of grid points)에서 상기 복수의 워드 라인들과 교차하는 복수의 비트 라인들;
    상기 복수의 그리드 포인트들에 위치된 복수의 저항 처리 유닛들(a plurality of resistive processing units);
    상기 복수의 워드 라인들에 결합된 복수의 베이스라인 확률 펄스 입력 유닛들(a plurality of baseline stochastic pulse input units);
    상기 복수의 워드 라인들에 연결된 복수의 차이 확률 펄스 입력 유닛들(a plurality of differential stochastic pulse input units);
    상기 복수의 비트 라인들에 결합된 복수의 비트라인 확률 펄스 입력 유닛들(a plurality of bitline stochastic pulse input units); 및
    상기 복수의 베이스라인 확률 펄스 입력 유닛들, 상기 복수의 차이 확률 펄스 입력 유닛들, 및 상기 복수의 비트라인 확률 펄스 입력 유닛들에 결합된 제어 회로(control circuitry)를 포함하고, 상기 제어회로는 상기 베이스라인 확률 펄스 입력 유닛들 각각으로 하여금 베이스 입력 데이터를 사용하여 베이스라인 펄스 트레인(a baseline pulse train)을 생성하게 하고, 상기 차이 확률 펄스 입력 유닛들 각각으로 하여금 상기 베이스 입력 데이터로부터 차이들을 정의하는 차이 입력 데이터를 사용하여 차이 펄스 트레인(a differential pulse train)을 생성하게 하며, 그리고 상기 비트라인 확률 펄스 입력 유닛들 각각으로 하여금 비트라인 입력 데이터를 사용하여 비트라인 펄스 트레인(a bitline pulse train)을 생성하게 하도록 구성되는
    HDL 설계 구조.
  16. 제15항에 있어서,
    상기 복수의 베이스라인 확률 펄스 입력 유닛들 각각은 상기 베이스 입력 데이터의 대응하는 부분을 저장하도록 구성된 베이스라인 레지스터, 상기 베이스라인 레지스터에 결합된 베이스라인 확률 변환기(a baseline stochastic translator), 및 상기 베이스라인 확률 변환기 및 상기 워드 라인들 중 대응하는 하나에 결합된 베이스라인 펄스 생성기(a baseline pulse generator)를 포함하고;
    상기 복수의 차이 확률 펄스 입력 유닛들 각각은 상기 차이 입력 데이터의 대응하는 부분을 저장하도록 구성된 차이 레지스터, 상기 차이 레지스터에 결합된 차이 확률 변환기, 및 상기 차이 확률 변환기 및 상기 워드 라인들 중 대응하는 하나에 결합된 차이 펄스 생성기를 포함하며; 그리고
    상기 복수의 비트라인 확률 펄스 입력 유닛들 각각은 상기 비트라인 입력 데이터의 대응하는 부분을 저장하도록 구성된 비트라인 레지스터, 상기 비트라인 레지스터에 결합된 비트라인 확률 변환기, 및 상기 비트라인 확률 변환기 및 상기 비트 라인들 중 대응하는 하나에 결합된 비트라인 펄스 발생기를 포함하는
    HDL 설계 구조.
  17. 제16항에 있어서,
    상기 베이스라인 확률 변환기들은 상기 베이스라인 레지스터들의 베이스라인 데이터를 하이 및 로우 베이스라인 출력 확률 스트림들(baseline output stochastic streams of high and low)로 변환하도록 구성되고, 상기 베이스라인 펄스 발생기들은 상기 베이스라인 출력에 기초하여 상기 워드 라인들을 구동하도록 구성되며;
    상기 차이 확률 변환기들은 상기 차이 레지스터들의 차이 데이터를 하이 및 로우 차이 출력 확률 스트림들(differential output stochastic streams of high and low)로 변환하도록 구성되고, 상기 차이 펄스 생성기들은 상기 차이 출력에 기초하여 상기 워드 라인들을 구동하도록 구성되며; 그리고
    상기 비트라인 확률 변환기들은 상기 비트라인 레지스터들의 비트라인 데이터를 하이 및 로우 비트라인 출력 확률 스트림들(bitline output stochastic streams of high and low)로 변환하도록 구성되고, 상기 비트라인 펄스 발생기들은 상기 비트라인 출력에 기초하여 상기 비트라인들을 구동하도록 구성되는
    HDL 설계 구조.
  18. 제17항에 있어서, 상기 HDL 설계 구조는 상기 레지스터에 결합되고 오프-칩 스토리지(off-chip storage)에 대한 인터페이스를 포함하는 온-칩 랜덤 액세스 메모리를 더 포함하는
    HDL 설계 구조.
  19. 제18항에 있어서, 상기 제어 회로는 상기 차분 확률 변환기들의 출력에서 확률 비트 스트림의 길이를 제어함으로써 업데이트 시간을 제어하도록 구성되는
    HDL 설계 구조.
  20. 제16항에 있어서, 상기 HDL 설계 구조는 상기 복수의 워드 라인들에 결합된 전압 벡터 주변 회로(a voltage vector peripheral circuit) 및 상기 복수의 비트 라인들에 결합된 복수의 적분기들(a plurality of integrators)을 더 포함하고, 상기 제어 회로는 내부에 저장된 상기 신경망 가중치들을 갖는 상기 복수의 저항 처리 유닛들을 사용하여 추론(inferencing)을 수행하도록 상기 전압 벡터 주변 회로 및 상기 복수의 적분기들을 제어하는
    HDL 설계 구조.
KR1020237029108A 2021-03-16 2022-02-17 통신 비용 절감을 위한 저항 처리 유닛(rpu) 어레이에서 계층적 데이터의 로딩 활성화 KR20230134590A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/203,705 2021-03-16
US17/203,705 US20220300797A1 (en) 2021-03-16 2021-03-16 Enabling hierarchical data loading in a resistive processing unit (rpu) array for reduced communication cost
PCT/EP2022/053908 WO2022194480A1 (en) 2021-03-16 2022-02-17 Enabling hierarchical data loading in a resistive processing unit (rpu) array for reduced communication cost

Publications (1)

Publication Number Publication Date
KR20230134590A true KR20230134590A (ko) 2023-09-21

Family

ID=80461127

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237029108A KR20230134590A (ko) 2021-03-16 2022-02-17 통신 비용 절감을 위한 저항 처리 유닛(rpu) 어레이에서 계층적 데이터의 로딩 활성화

Country Status (6)

Country Link
US (1) US20220300797A1 (ko)
EP (1) EP4309175A1 (ko)
JP (1) JP2024513645A (ko)
KR (1) KR20230134590A (ko)
CN (1) CN116997968A (ko)
WO (1) WO2022194480A1 (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152827B2 (en) * 2012-12-19 2015-10-06 The United States Of America As Represented By The Secretary Of The Air Force Apparatus for performing matrix vector multiplication approximation using crossbar arrays of resistive memory devices
US10248907B2 (en) * 2015-10-20 2019-04-02 International Business Machines Corporation Resistive processing unit
US10529418B2 (en) * 2016-02-19 2020-01-07 Hewlett Packard Enterprise Development Lp Linear transformation accelerators

Also Published As

Publication number Publication date
WO2022194480A1 (en) 2022-09-22
US20220300797A1 (en) 2022-09-22
JP2024513645A (ja) 2024-03-27
CN116997968A (zh) 2023-11-03
EP4309175A1 (en) 2024-01-24

Similar Documents

Publication Publication Date Title
US11928600B2 (en) Sequence-to-sequence prediction using a neural network model
US11604956B2 (en) Sequence-to-sequence prediction using a neural network model
JP7434146B2 (ja) ニューラルネットワークの、アーキテクチャに最適化された訓練
US11030997B2 (en) Slim embedding layers for recurrent neural language models
US20190180176A1 (en) Concurrent training of functional subnetworks of a neural network
US11915128B2 (en) Neural network circuit device, neural network processing method, and neural network execution program
CN110622178A (zh) 学习神经网络结构
US12020145B2 (en) End-to-end data format selection for hardware implementation of deep neural networks
US11769041B2 (en) Low latency long short-term memory inference with sequence interleaving
CN111414987A (zh) 神经网络的训练方法、训练装置和电子设备
EP3480689B1 (en) Hierarchical mantissa bit length selection for hardware implementation of deep neural network
US11295236B2 (en) Machine learning in heterogeneous processing systems
WO2014073206A1 (ja) 情報処理装置、及び、情報処理方法
US20220300797A1 (en) Enabling hierarchical data loading in a resistive processing unit (rpu) array for reduced communication cost
Julian Deep learning with pytorch quick start guide: learn to train and deploy neural network models in Python
Huai et al. Crossbar-aligned & integer-only neural network compression for efficient in-memory acceleration
AU2021352577A1 (en) Systems and methods for enforcing constraints in character recognition
CN113906448A (zh) 用于在神经网络中提供分块稀疏性的系统和方法
JP2020129209A (ja) 最適化方法、最適化プログラム、推論方法、および推論プログラム
EP4310730A1 (en) Processing data using a neural network "nn" implemented in hardware
Aimar Energy-efficient convolutional neural network accelerators for edge intelligence
Dey Exploring Complexity Reduction in Deep Learning
CN115936081A (zh) 基于位单元架构的存内计算
Sarma Optimizing Deep Learning for Memory and Compute: A joint Algorithm-Architecture Exploration
CN117371490A (zh) 用于在卷积加速器中计算大卷积核的迭代引擎

Legal Events

Date Code Title Description
A201 Request for examination