KR20200131741A - 메모리에서 매크로 연산을 수행하기 위한 기술 - Google Patents

메모리에서 매크로 연산을 수행하기 위한 기술 Download PDF

Info

Publication number
KR20200131741A
KR20200131741A KR1020200044621A KR20200044621A KR20200131741A KR 20200131741 A KR20200131741 A KR 20200131741A KR 1020200044621 A KR1020200044621 A KR 1020200044621A KR 20200044621 A KR20200044621 A KR 20200044621A KR 20200131741 A KR20200131741 A KR 20200131741A
Authority
KR
South Korea
Prior art keywords
memory
request
macro operation
perform
medium
Prior art date
Application number
KR1020200044621A
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 KR20200131741A publication Critical patent/KR20200131741A/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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/785Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) with decentralized control, e.g. smart memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/045Combinations of 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
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L27/00Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate
    • H01L27/02Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers
    • H01L27/04Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body
    • H01L27/08Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including only semiconductor components of a single kind
    • H01L27/085Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including only semiconductor components of a single kind including field-effect components only
    • H01L27/088Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including only semiconductor components of a single kind including field-effect components only the components being field-effect transistors with insulated gate
    • H01L27/092Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including only semiconductor components of a single kind including field-effect components only the components being field-effect transistors with insulated gate complementary MIS field-effect transistors
    • H01L27/2463
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B63/00Resistance change memory devices, e.g. resistive RAM [ReRAM] devices
    • H10B63/80Arrangements comprising multiple bistable or multi-stable switching components of the same type on a plane parallel to the substrate, e.g. cross-point arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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/048Activation functions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

인-메모리 매크로 연산들을 수행하기 위한 기술들은 메모리 매체에 접속된 매체 액세스 회로를 갖는 메모리를 포함한다. 매체 액세스 회로는 다수의 인-메모리 연산의 세트를 나타내는 인-메모리 매크로 연산을 수행하기 위한 요청을 수신한다. 매체 액세스 회로는 또한, 요청에 응답하여, 메모리 매체에 존재하는 데이터에 대해 인-메모리 매크로 연산을 수행한다.

Description

메모리에서 매크로 연산을 수행하기 위한 기술{TECHNOLOGIES FOR PERFORMING MACRO OPERATIONS IN MEMORY}
전통적으로, 컴퓨팅 디바이스의 프로세서와 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM) 및/또는 비휘발성 메모리) 사이의 통신들은 개별 판독 및/또는 기입 동작들(예를 들어, 지정된 어드레스로부터 데이터를 판독하기 위한 요청, 지정된 어드레스에 데이터를 기입하기 위한 요청 등)에 집중된다. 요청에 응답하여 메모리가 단일 메모리 액세스 동작을 수행하기 위해 요구되는 시간의 양은 예측가능하고 잘 정의된다. 그러나, 프로세서와 메모리 사이의 개별 메모리 액세스 요청들의 통신(예를 들어, 버스를 통한)은 시간 및 에너지를 소비한다.
메모리가 단일 요청(예를 들어, 프로세서로부터의)에 응답하여 다수의 연산을 수행할 수 있는 경우, 연산들의 세트를 완료하는 것과 연관된 레이턴시는 확인하기가 어려울 수 있다. 또한, 메모리가 데이터를 판독 및/또는 기입하는 것보다 많은 것을 수반하는 다수의 연산을 수행하게 되어 있다면, 요청에 응답하는 것과 연관된 레이턴시들은 확인하기가 훨씬 더 어려울 수 있고 연산들을 수행하기 위해 메모리에 의존하는 작업부하와 연관된 연산들의 시퀀스를 조정하는 것이 실현 불가능할 수 있다.
본 명세서에 설명된 개념들은 첨부 도면들에서 제한이 아니라 예로서 예시되어 있다. 예시의 단순성 및 명료성을 위해, 도면들에 예시된 요소들은 반드시 축척대로 그려진 것은 아니다. 적절한 것으로 간주되는 경우, 대응하거나 유사한 요소들을 나타내기 위해 도면들 사이에서 참조 라벨들이 반복되었다.
도 1은 메모리에서 매크로 연산들을 수행하기 위한 컴퓨팅 디바이스의 적어도 하나의 실시예의 단순화된 도면이다.
도 2는 도 1의 컴퓨팅 디바이스에 포함된 메모리 매체의 적어도 하나의 실시예의 단순화된 도면이다.
도 3은 도 1의 컴퓨팅 디바이스에 포함된 메모리의 매체 액세스 회로의 컴포넌트들 및 메모리 매체의 파티션들의 적어도 하나의 실시예의 단순화된 도면이다.
도 4는 도 1의 컴퓨팅 디바이스의 메모리에서 수행될 수 있는 텐서 연산의 적어도 하나의 실시예의 단순화된 도면이다.
도 5 내지 도 7은 도 1의 컴퓨팅 디바이스에 의해 수행될 수 있는 메모리에서 매크로 연산들을 수행하기 위한 방법의 적어도 하나의 실시예의 단순화된 도면들이다.
도 8은 도 1의 컴퓨팅 디바이스에 의해 이용될 수 있는 인-메모리 매크로 연산에 대한 커맨드 포맷의 적어도 하나의 실시예의 단순화된 도면이다.
본 개시내용의 개념들은 다양한 수정들 및 대안적인 형식들의 여지가 있지만, 그의 특정 실시예들이 도면들에 예로서 도시되었으며, 본 명세서에서 상세히 설명될 것이다. 그러나, 본 개시내용의 개념들을 개시된 특정 형식들로 제한하려는 의도는 없고, 오히려, 그 의도는 본 개시내용 및 첨부된 청구항들에 부합하는 모든 수정들, 등가물들 및 대안들을 커버하려는 것임을 이해해야 한다.
명세서에서 "일 실시예", "실시예", "예시적인 실시예" 등에 대한 언급들은 설명된 실시예가 특정 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 그 특정 특징, 구조, 또는 특성을 포함할 수 있거나 반드시 포함하는 것은 아닐 수도 있음을 나타낸다. 또한, 그러한 문구들이 반드시 동일한 실시예를 언급하는 것은 아니다. 또한, 특정 특징, 구조, 또는 특성이 실시예와 관련하여 설명될 때, 명시적으로 설명되든지 아니든지 간에, 다른 실시예들과 관련하여 그러한 특징, 구조, 또는 특성을 달성하는 것은 본 기술분야의 통상의 기술자의 지식 범위 내에 있다고 할 수 있다. 또한, "적어도 하나의 A, B, 및 C"의 형식으로 리스트에 포함된 항목들은 (A); (B); (C); (A 및 B); (A 및 C); (B 및 C); 또는 (A, B, 및 C)를 의미할 수 있다는 것을 이해해야 한다. 유사하게, "A, B, 및 C 중 적어도 하나"의 형식으로 열거된 항목들은 (A); (B); (C); (A 및 B); (A 및 C); (B 및 C); 또는 (A, B, 및 C)를 의미할 수 있다.
개시된 실시예들은, 일부 경우들에서, 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 개시된 실시예들은 또한 하나 이상의 프로세서에 의해 판독 및 실행될 수 있는, 일시적 또는 비일시적 머신 판독가능(예를 들어, 컴퓨터 판독가능) 저장 매체에 의해 운반되거나 그에 저장된 명령어들로서 구현될 수 있다. 머신 판독가능 저장 매체는 머신에 의해 판독가능한 형식으로 정보를 저장하거나 송신하기 위한 임의의 저장 디바이스, 메커니즘, 또는 다른 물리적 구조(예를 들어, 휘발성 또는 비휘발성 메모리, 매체 디스크, 또는 다른 매체 디바이스)로서 구현될 수 있다.
도면들에서, 일부 구조적 또는 방법 특징들은 특정 배열들 및/또는 순서들로 도시될 수 있다. 그러나, 그러한 특정 배열들 및/또는 순서들이 요구되지 않을 수도 있다는 것을 이해해야 한다. 오히려, 일부 실시예들에서, 그러한 특징들은 예시적인 도면들에 도시된 것과는 상이한 방식 및/또는 순서로 배열될 수 있다. 또한, 특정 도면에서 구조적 또는 방법 특징의 포함은 그러한 특징이 모든 실시예들에서 요구되다는 것을 암시하도록 의도되지 않으며, 일부 실시예들에서는, 포함되지 않을 수 있거나 다른 특징들과 조합될 수 있다.
이제 도 1을 참조하면, 메모리에서 매크로 연산들(예를 들어, 다수의 연산의 세트를 나타내는 연산)을 수행하기 위한 컴퓨팅 디바이스(100)는 프로세서(102), 메모리(104), 입력/출력(I/O) 서브시스템(112), 데이터 저장 디바이스(114), 및 통신 회로(122)를 포함한다. 물론, 다른 실시예들에서, 컴퓨팅 디바이스(100)는 컴퓨터에서 흔히 발견되는 것들과 같은 다른 또는 추가적인 컴포넌트들(예를 들어, 디스플레이, 주변 디바이스 등)을 포함할 수 있다. 또한, 일부 실시예들에서, 예시적인 컴포넌트들 중 하나 이상은 다른 컴포넌트에 통합되거나 다른 방식으로 다른 컴포넌트의 일부를 형성할 수 있다. 본 명세서에서 더 상세히 설명되는 바와 같이, 매체 액세스 회로(108)는, 예시적인 실시예에서, 메모리 매체(110)에 로컬이고(예를 들어, 동일한 다이 상에, 동일한 패키지 내에 등) 메모리 매체(110)(예를 들어, 데이터가 기입되고 판독되는 임의의 디바이스 또는 재료)로부터의 데이터에 대해 계산 연산들을 수행할 수 있고, 그에 의해 데이터에 대해 수행될 계산들을 위해 컴퓨팅 디바이스(100)의 프로세서(102) 또는 다른 컴포넌트에 데이터가 송신될(예를 들어, 버스를 통해) 필요성을 제거한다. 그렇게 함에 있어서, 매체 액세스 회로(108)는 메모리(104) 내의 데이터(예를 들어, 메모리 매체(110)에 존재하는 데이터)에 대해 매크로 연산을 수행하기 위해, 단일 요청(예를 들어, 프로세서(102)로부터, 메모리 컨트롤러(106)를 통해, 매체 액세스 회로(108)로 송신된)에 응답하여 메모리 매체(110) 내의 데이터에 대해 다수의 연산의 세트를 수행할 수 있다. 또한, 인-메모리 매크로 연산의 수행을 요청한 컴퓨팅 디바이스(100)의 프로세서(102) 또는 다른 컴포넌트가 매크로 연산의 상태를 추적하는 것을 가능하게 하기 위해, 매체 액세스 회로(108)는, 예시적인 실시예에서, 컴퓨팅 디바이스(100)에게 상태에 대한 업데이트를 위해 매체 액세스 회로(108)를 계속 폴링하는 시간 및 에너지 비용을 초래하도록 요구하기보다는, 상태 데이터(예를 들어, 매크로 연산이 여전히 진행 중인지 또는 완료되었는지를 나타내는 임의의 데이터)를 컴포넌트에 제공한다(예를 들어, 컴포넌트에 의해 액세스 가능한 레지스터에 상태 데이터를 기입함으로써). 그에 따라, 메모리(104)는 컴퓨팅 디바이스(100)가 다른 컴퓨팅 디바이스들보다 더 효율적으로 데이터에 대해 연산들(예를 들어, 텐서 연산들이라고도 지칭되는, 행렬 연산들과 같은 인공 지능 연산들과 연관된 인-메모리 계산 연산들)을 수행하는 것을 가능하게 할 수 있다.
메모리 매체(110)는, 예시적인 실시예에서, 타일 당 1 비트에 대한 액세스를 가능하게 하고 동일한 파티션 또는 다른 파티션들에 대한 판독들 또는 기입들 사이의 시간 지연들을 초래하는 것과 같은, 다른 메모리 아키텍처들(예를 들어, 동적 랜덤 액세스 메모리(DRAM))과 상이한 데이터 액세스 특성들을 갖는 3차원 크로스 포인트 아키텍처(three dimensional cross point architecture)를 갖는다. 매체 액세스 회로(108)는, 예컨대 주어진 파티션 내에서 병렬로 다수의 타일에 액세스하고, 스크래치 패드들(예를 들어, 비교적 작은, 낮은 레이턴시 메모리)을 이용하여 메모리 매체(110)로부터 판독된 데이터를 일시적으로 보유하고 그에 대해 연산하고, 하나의 파티션으로부터 판독된 데이터를 메모리(104)의 다른 부분들로 브로드캐스트하여 행렬 계산들(예를 들어, 텐서 연산들)이 메모리(104) 내에서 병렬로 수행될 수 있게 하는 것에 의해, 메모리 매체(110)의 아키텍처를 효율적으로 사용하도록 구성된다(예를 들어, 전력 사용 및 속도의 측면에서). 또한, 예시적인 실시예에서, 행렬 데이터에 액세스하기 위해 메모리(104)에 판독 또는 기입 요청을 송신하는 대신에, 프로세서(102)는 상위 레벨 요청(예를 들어, 매크로 연산에 대한 요청, 예컨대 특정 타입의 행렬 계산을 수행하기 위한 요청)을 송신하고 요청된 연산에서 이용될 행렬들(예를 들어, 입력 행렬, 가중치 행렬, 및 출력 행렬)의 위치들을 제공할 수 있다. 또한, 결과 데이터를 프로세서(102)에 다시 송신하기보다는, 메모리(104)는 단지 요청된 연산이 완료되었다는 것을 지시하는 확인응답 또는 상태의 다른 지시(예를 들어, "Done")를 다시 송신할 수 있다. 그에 따라, 프로세서(102)와 메모리(104) 사이의 버스의 최소 사용으로, 인공 지능 연산들(예를 들어, 행렬 계산들을 수반하는 텐서 연산들)과 같은 많은 계산 연산들이 메모리(104)에서 수행될 수 있다. 일부 실시예들에서, 매체 액세스 회로(108)는 메모리 매체(110)와 동일한 다이에 포함된다. 다른 실시예들에서, 매체 액세스 회로(108)는 별개의 다이 상에 있지만 메모리 매체(110)와 동일한 패키지 내에 있다. 또 다른 실시예들에서, 매체 액세스 회로(108)는 별개의 다이 및 별개의 패키지에 있지만 메모리 매체(110)와 동일한 듀얼 인-라인 메모리 모듈(DIMM) 또는 보드 상에 있다.
프로세서(102)는 애플리케이션(예를 들어, 학습하고 추론하기 위해 신경망 또는 다른 머신 학습 구조를 이용할 수 있는 인공 지능 관련 애플리케이션)을 실행하는 것과 같은, 본 명세서에 설명된 동작들을 수행할 수 있는 임의의 디바이스 또는 회로(예를 들어, 멀티-코어 프로세서(들), 마이크로컨트롤러, 또는 다른 프로세서 또는 처리/제어 회로)로서 구현될 수 있다. 일부 실시예들에서, 프로세서(102)는 FPGA, ASIC(application specific integrated circuit), 재구성 가능 하드웨어 또는 하드웨어 회로, 또는 본 명세서에 설명된 기능들의 수행을 용이하게 하기 위한 다른 특수 하드웨어로서 구현될 수 있거나, 이들을 포함하거나, 이들에 결합될 수 있다.
비휘발성 메모리(예를 들어, 2-레벨 메모리 스킴에서의 원거리 메모리(far memory))를 포함할 수 있는 메모리(104)는 메모리 매체(110) 및 메모리 매체(110)의 밑에 있고(예를 들어, 더 낮은 위치에 있고) 그에 결합된 매체 액세스 회로(108)(예를 들어, 상보형 금속-산화물-반도체들(CMOS) 또는 다른 재료들로 구성된 집적 회로와 같은, 디바이스 또는 회로)를 포함한다. 매체 액세스 회로(108)는 또한, 대응하는 요청들(예를 들어, 신경망을 훈련시키고/시키거나 추론을 하기 위해 텐서 연산들에 의존하는 인공 지능 관련 애플리케이션을 실행하고 있을 수 있는 프로세서(102)로부터의)에 응답하여 메모리 매체(110)로부터 선택적으로 판독하고/하거나 그것에 기입하도록 구성된 임의의 디바이스 또는 회로(예를 들어, 프로세서, 코-프로세서, 전용 회로 등)로서 구현될 수 있는, 메모리 컨트롤러(106)에 접속된다.
잠시 도 2를 참조하면, 메모리 매체(110)는, 예시적인 실시예에서, 본 명세서에서 크로스 포인트 아키텍처(예를 들어, 메모리 셀들이 워드 라인들과 비트 라인들의 교차부에 있고 개별적으로 어드레싱 가능한 그리고 비트 저장이 벌크 저항의 변화에 기초하는 아키텍처)라고도 지칭되는 타일 아키텍처를 포함하고, 각각의 메모리 셀(예를 들어, 타일)(210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240)은 x 파라미터 및 y 파라미터(예를 들어, 열 및 행)에 의해 어드레싱 가능하다. 메모리 매체(110)는 다수의 파티션을 포함하고, 이들 각각은 타일 아키텍처를 포함한다. 파티션들은 3차원 크로스 포인트 아키텍처(예를 들어, 인텔 3D XPoint™메모리)를 형성하기 위해 층들(202, 204, 206)로서 적층될 수 있다. 고정 크기의 다중-비트 데이터 구조들(예를 들어, 바이트, 워드 등)만이 어드레싱 가능한 전형적인 메모리 디바이스들과는 달리, 매체 액세스 회로(108)는, 프로세서(102)로부터 대응하는 요청을 수신하는 것에 응답하여 요청을 생성할 수 있는, 메모리 컨트롤러(106)의 요청에 의해 메모리 매체(110)로부터 개별 비트들 또는 다른 데이터 단위들을 판독하도록 구성된다.
다시 도 1을 참조하면, 매체 액세스 회로(108)는, 예시적인 실시예에서, 텐서 로직 유닛(130)을 포함하고, 이는 매체 액세스 회로(108)의 다른 부분들로부터의 텐서 연산들의 수행을 오프로드하도록 구성된 임의의 디바이스 또는 회로(예를 들어, CMOS 회로)로서 구현될 수 있다. 텐서 로직 유닛(130)은, 예시적인 실시예에서, 다수의 메모리 스크래치 패드(132)를 포함하고, 이들 각각은 메모리 매체(110)로부터 판독된 데이터(예를 들어, 행렬 데이터)로의 비교적 빠른(예를 들어, 낮은 레이턴시) 액세스를 제공하기 위해 사용가능한 임의의 디바이스 또는 회로(예를 들어, 정적 랜덤 액세스 메모리들(SRAM들), 레지스터 파일들 등)로서 구현될 수 있다. 예시적인 실시예에서, 스크래치 패드들(132)은 비교적 느린 액세스 시간들 및 더 큰 용량을 갖는 메모리 매체(110)보다 더 빠른 판독 및 기입 액세스 시간들을 제공한다. 텐서 로직 유닛(130)은 오류 정정 코드(ECC)로직 유닛(134)을 또한 포함할 수 있고, 이는 메모리 매체(110)에 기입되고 그로부터 판독된 데이터에 대해 임의의 오류(예를 들어, 변질로 인한)를 검출하고 정정하기 위해 오류 정정 알고리즘(예를 들어, 리드-솔로몬 알고리즘, BCH(Bose-Chaudhuri-Hocquenghem) 알고리즘, 저밀도 패리티 체크(LDPC) 알고리즘 등)을 수행하도록 구성된 임의의 디바이스 또는 회로(예를 들어, 재구성 가능 회로, ASIC 등)로서 구현될 수 있다. 또한, 예시적인 실시예에서, 텐서 로직 유닛(130)은 다수의 계산 로직 유닛(136)을 포함하고 그 각각은 메모리 매체(110)로부터 판독된 데이터에 대해 계산 연산들을 수행하도록(예를 들어, ECC 로직 유닛(134)이 데이터에 대해 오류 정정 프로세스를 수행한 후에) 구성된 임의의 디바이스 또는 회로(예를 들어, 재구성 가능 회로, ASIC 등)로서 구현될 수 있다.
잠시 도 3을 참조하면, 예시적인 실시예에서, 메모리(104)의 컴포넌트들은 클러스터들(310, 320, 330)(예를 들어, 컴포넌트들의 그룹들)로 분할된다. 클러스터(310)는 메모리 매체(110)의 다수의 파티션(311), 도 1의 스크래치 패드들(132)과 각각 유사한 스크래치 패드들의 세트(312, 314, 316), 및 도 1의 계산 로직 유닛(136)과 유사한 대응하는 계산 로직 유닛(318)을 포함한다. 유사하게, 클러스터(320)는 메모리 매체(110)의 다른 파티션들의 세트(321), 대응하는 스크래치 패드들의 세트(322, 324, 326), 및 대응하는 계산 로직 유닛(328)을 포함한다. 클러스터(330)는 메모리 매체(110)의 파티션들의 세트(331), 대응하는 스크래치 패드들의 세트(332, 334, 336), 및 계산 로직 유닛(338)을 또한 포함한다. 예시적인 실시예에서, 동작 시에, 계산 로직 유닛(318)은 행렬 데이터의 서브세트(예를 들어, 파티션들의 세트(예를 들어, 파티션들(311))로부터의 입력 행렬 A의 하나의 값)를 판독하고 판독된 데이터를 데이터의 임의의 오류들을 정정하기 위한 오류 정정 프로세스를 수행하기 위해 ECC 로직 유닛(134)에 제공한다. 계산 로직 유닛(318)은 또한 대응하는 스크래치 패드(312) 내에 데이터를 기입할 수 있고(예를 들어, 오류 정정 프로세스가 수행된 후에) 동일한 행렬 데이터의 서브세트를 다른 클러스터들의 대응하는 스크래치 패드들로(예를 들어, 스크래치 패드들(322, 332)로) 브로드캐스트할 수 있다. 유사하게, 계산 로직 유닛(328)은 대응하는 파티션들의 세트(321)로부터 다른 행렬 데이터의 서브세트(예를 들어, 입력 행렬 A의 다른 값)를 대응하는 스크래치 패드(322) 내로 판독하고, ECC 로직 유닛(134)을 이용하여 임의의 오류들을 정정하고, 해당 행렬 데이터의 서브세트를 해당 행렬에 대한 데이터를 저장할 다른 스크래치 패드들로(예를 들어, 스크래치 패드들(312, 332)로) 브로드캐스트할 수 있다. 계산 로직 유닛(338)은 유사한 연산들을 수행할 수 있다.
메모리 매체(110)의 대응하는 파티션들의 세트로부터 판독된 행렬 데이터를 다른 스크래치 패드들로 브로드캐스트함으로써, 매체 액세스 회로(108)는 동일한 행렬 데이터를 획득하기 위해 메모리 매체(110)의 주어진 섹션(예를 들어, 파티션들의 세트)이 액세스되어야 하는 횟수를 감소시킨다(예를 들어, 동일한 행렬 데이터를 메모리 매체(110)로부터 여러 번 판독하기보다는, 메모리 매체(110)로부터 한 번 판독된 후에 판독된 행렬 데이터가 다수의 스크래치 패드로 브로드캐스트될 수 있다). 또한, 각각이 대응하는 스크래치 패드들(312, 314, 316, 322, 224, 226, 232, 234, 236)과 연관되어 있는 다수의 계산 로직 유닛(318, 328, 338)을 이용함으로써, 매체 액세스 회로(108)는 텐서 연산(예를 들어, 행렬 곱하기 및 누적)의 부분들을 동시에(예를 들어, 병렬로) 수행할 수 있다. 단순성을 위해 도 3에는 3개의 클러스터(310, 320, 330)가 도시되어 있지만, 클러스터들 및 대응하는 파티션들, 스크래치 패드들, 및 계산 로직 유닛들의 실제 수는 특정 실시예에 따라 상이할 수 있다는 것을 이해해야 한다.
잠시 도 4를 참조하면, 메모리(104)에 의해 수행될 수 있는 행렬 곱셈(예를 들어, 행렬 곱하기 및 누적) 연산(400)의 예가 도시되어 있다. 예시된 바와 같이, 입력 행렬 A 내의 행렬 데이터는 다른 행렬 B 내의 행렬 데이터(예를 들어, 합성곱 신경망(convolutional neural network)의 계층에 대한 가중치 데이터)와 곱해지고 결과 데이터는 출력 행렬 C에 기입된다. 도 4에 표현된 각각의 행렬은 매체 액세스 회로(108)의 스크래치 패드들(132)에 행렬 데이터로서 일시적으로 저장된다. 일부 실시예들에서, 출력 행렬 C는 후속 텐서 연산에 대한 입력 행렬로서(예를 들어, 합성곱 신경망의 후속 계층에 대한 입력 행렬로서)이용될 수 있다.
다시 도 1을 참조하면, 메모리(104)는 비휘발성 메모리 및 휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는 지속적인 방식으로(비휘발성 메모리로의 전력이 중단되더라도) 데이터를 저장할 수 있는 임의의 타입의 데이터 저장소로서 구현될 수 있다. 예를 들어, 비휘발성 메모리는 하나 이상의 비휘발성 메모리 디바이스로서 구현될 수 있다. 비휘발성 메모리 디바이스들은 비트 레벨 어드레싱 가능성(예를 들어, 바이트들 또는 다른 데이터 유닛들이 아니라 데이터의 개별 비트들로부터 판독하고/하거나 이들에 기입하는 능력)을 가능하게 하는 크로스 포인트 아키텍처에서 구성된 하나 이상의 메모리 디바이스를 포함할 수 있고, 예시적으로 3차원(3D) 크로스 포인트 메모리로서 구현된다. 일부 실시예들에서, 비휘발성 메모리는 칼코게나이드 상 변화 재료(예를 들어, 칼코게나이드 유리), 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 나노와이어 기반 비휘발성 메모리, 상 변화 메모리(PCM, 멤리스터 기술을 포함하는 메모리, 자기저항성 랜덤 액세스 메모리(MRAM) 또는 스핀 전달 토크(STT)-MRAM을 사용하는 메모리 디바이스들의 임의의 조합을 포함하는 다른 타입의 메모리를 또한 포함할 수 있다. 휘발성 메모리는 휘발성 메모리에 전력이 공급되는 동안에 데이터를 저장할 수 있는 임의의 타입의 데이터 저장소로서 구현될 수 있다. 예를 들어, 휘발성 메모리는 하나 이상의 휘발성 메모리 디바이스로서 구현될 수 있고, 휘발성 메모리가 다른 실시예들에서 다른 타입의 비-영구적 데이터 저장소로서 구현될 수 있다는 이해와 함께 때때로 이후 휘발성 메모리라고 지칭된다. 휘발성 메모리는, 위에 설명된 아키텍처와 유사하게, 비트-레벨 어드레싱 가능성을 가능하게 하는 아키텍처를 가질 수 있다.
프로세서(102) 및 메모리(104)는 컴퓨팅 디바이스(100)의 프로세서(102) 및/또는 메인 메모리(104) 및 다른 컴포넌트들과의 입력/출력 동작들을 용이하게 하기 위한 회로 및/또는 컴포넌트들로서 구현될 수 있는 I/O 서브시스템(112)을 통해 컴퓨팅 디바이스(100)의 다른 컴포넌트들에 통신가능하게 결합된다. 예를 들어, I/O 서브시스템(112)은, 메모리 컨트롤러 허브들, 입력/출력 제어 허브들, 통합된 센서 허브들, 펌웨어 디바이스들, 통신 링크들(예를 들어, 포인트-투-포인트 링크들, 버스 링크들, 와이어들, 케이블들, 광 가이드들, 인쇄 회로 보드 트레이스들 등), 및/또는 입력/출력 동작들을 용이하게 하기 위한 다른 컴포넌트들 및 서브시스템들로서 구현될 수 있거나 또는 달리 이들을 포함할 수 있다. 일부 실시예들에서, I/O 서브시스템(112)은 시스템 온 칩(SoC)의 일부를 형성할 수 있고, 컴퓨팅 디바이스(100)의 프로세서(102), 메인 메모리(104), 및 다른 컴포넌트들 중 하나 이상과 함께 단일 칩에서 통합될 수 있다.
데이터 저장 디바이스(114)는, 예를 들어, 메모리 디바이스들 및 회로들, 메모리 카드들, 하드 디스크 드라이브들, 솔리드 스테이트 드라이브들, 또는 다른 데이터 저장 디바이스들과 같은, 데이터의 단기간 또는 장기간 저장을 위해 구성된 임의의 타입의 디바이스로서 구현될 수 있다. 예시적인 실시예에서, 데이터 저장 디바이스(114)는 메모리 컨트롤러(106)와 유사한 메모리 컨트롤러(116), 메모리 매체(110)와 유사한 저장 매체(120), 및 매체 액세스 회로(108)와 유사한 매체 액세스 회로(118)를 포함하는데, 이 매체 액세스 회로는 텐서 로직 유닛(130)과 유사한 텐서 로직 유닛(140), 스크래치 패드들(132)과 유사한 스크래치 패드들(142), ECC 로직 유닛(134)과 유사한 ECC 로직 유닛(144), 및 계산 로직 유닛들(136)과 유사한 계산 로직 유닛들(146)을 포함한다. 데이터 저장 디바이스(114)는 데이터 저장 디바이스(114)에 대한 데이터 및 펌웨어 코드를 저장하는 시스템 파티션 및 운영 체제들을 위한 실행파일들 및 데이터 파일들을 저장하는 하나 이상의 운영 체제 파티션을 포함할 수 있다.
통신 회로(122)는 컴퓨팅 디바이스(100)와 다른 디바이스 사이에 네트워크를 통한 통신들을 가능하게 할 수 있는 임의의 통신 회로, 디바이스, 또는 이들의 집합으로서 구현될 수 있다. 통신 회로(122)는 그러한 통신을 달성하기 위해 임의의 하나 이상의 통신 기술(예를 들어, 유선 또는 무선 통신) 및 연관된 프로토콜들(예를 들어, 이더넷, Bluetooth®, Wi-Fi®, WiMAX 등)을 사용하도록 구성될 수 있다.
예시적인 통신 회로(122)는 호스트 패브릭 인터페이스(HFI)라고도 지칭될 수 있는 네트워크 인터페이스 컨트롤러(NIC)(124)를 포함한다. NIC(124)는 다른 컴퓨팅 디바이스와 접속하기 위해 컴퓨팅 디바이스(100)에 의해 사용될 수 있는 하나 이상의 애드-인-보드(add-in-board), 도터 카드(daughter card), 네트워크 인터페이스 카드, 컨트롤러 칩, 칩셋, 또는 다른 디바이스들로서 구현될 수 있다. 일부 실시예들에서, NIC(124)는 하나 이상의 프로세서를 포함하는 시스템 온 칩(SoC)의 일부로서 구현되거나, 하나 이상의 프로세서를 또한 포함하는 멀티칩 패키지 상에 포함될 수 있다. 일부 실시예들에서, NIC(124)는 로컬 프로세서(도시되지 않음) 및/또는 로컬 메모리(도시되지 않음)를 포함할 수 있고 이들은 둘 다 NIC(124)에 로컬이다. 그러한 실시예들에서, NIC(124)의 로컬 프로세서는 프로세서(102)의 기능들 중 하나 이상을 수행할 수 있다. 또한 또는 대안적으로, 그러한 실시예들에서, NIC(124)의 로컬 메모리는 보드 레벨, 소켓 레벨, 칩 레벨, 및/또는 다른 레벨들에서 컴퓨팅 디바이스(100)의 하나 이상의 컴포넌트에 통합될 수 있다.
이제 도 5를 참조하면, 컴퓨팅 디바이스(100)는, 동작 시에, 인-메모리 매크로 연산들을 수행하기 위한 방법(500)을 실행할 수 있다. 방법(500)은 메모리(104)를 참조하여 설명된다. 그러나, 방법(500)은 추가적으로 또는 대안적으로 데이터 저장 디바이스(114)의 메모리를 이용하여 수행될 수 있다는 것을 이해해야 한다. 방법(500)은 컴퓨팅 디바이스(100)(예를 들어, 메모리(104))가 인-메모리 매크로 연산들의 수행을 인에이블할지를 결정하는 블록 502로 시작된다. 컴퓨팅 디바이스(100)는 텐서 로직 유닛(130)이 메모리(104)에(예를 들어, 매체 액세스 회로(108)에) 존재한다는 결정에 응답하여, 구성 설정(예를 들어, 구성 파일 내의)이 인-메모리 매크로 연산들을 인에이블하는 것을 지시한다는 결정에 응답하여, 및/또는 다른 인자들에 기초하여 인-메모리 매크로 연산들의 수행을 인에이블할 수 있다. 여하튼, 인-메모리 매크로 연산들의 수행을 인에이블하는 결정에 응답하여, 방법(500)은 블록 504로 진행하고 여기서 컴퓨팅 디바이스(100)(예를 들어, 메모리(104))는 다수의 인-메모리 연산들의 세트를 나타내는 인-메모리 매크로 연산을 수행하기 위한 요청을 수신할 수 있다(예를 들어, 애플리케이션을 실행하는 프로세서(102)로부터). 블록 506에서 나타낸 바와 같이, 메모리(104)는 크로스 포인트 아키텍처(예를 들어, 메모리 셀들이 워드 라인들과 비트 라인들의 교차부에 있고 개별적으로 어드레싱 가능한 그리고 비트 저장이 벌크 저항의 변화에 기초하는 아키텍처)를 갖는 메모리 매체에 대해 다수의 인-메모리 계산 연산을 수행하기 위한 요청을 수신할 수 있다. 또한, 그리고 블록 508에서 나타낸 바와 같이, 요청은 3차원 크로스 포인트 아키텍처(예를 들어, 도 2를 참조하여 설명된 바와 같이, 타일들의 세트들이 층들로 적층되는 아키텍처)를 갖는 메모리 매체에 대해 인-메모리 계산 연산들을 수행하기 위한 요청일 수 있다. 다른 실시예들에서, 요청은 상이한 아키텍처를 갖는 메모리 매체에 대해 메모리 액세스 연산들을 수행하기 위한 것일 수 있다.
블록 510에서 나타낸 바와 같이, 요청은 인공 지능 연산들(예를 들어, 신경망을 훈련시키는 것, 신경망을 이용하여 추론을 생성하는 것 등에 관한 연산들)을 수행하기 위한 것일 수 있다. 관련하여, 그리고 블록 512에서 나타낸 바와 같이, 요청은 매체 액세스 회로(108)를 이용하여, 메모리 매체(110)에 존재하는 행렬 데이터에 대해 인-메모리 연산들의 세트를 수행하기 위한 것일 수 있다. 예를 들어, 블록 514에서 나타낸 바와 같이, 요청은 행렬들을 함께 곱하기 위한 것일 수 있다. 다른 예로서, 블록 516에서 나타낸 바와 같이, 요청은 행렬을 필터와 컨볼루션하기 위한 것일 수 있다. 블록 518에서 나타낸 바와 같이, 요청은 추가적으로 또는 대안적으로 2개의 행렬을 더하거나 빼기 위한 것일 수 있다. 블록 520에서 나타낸 바와 같이, 요청은 행렬을 상수 값으로 더하거나, 빼거나, 곱하거나, 나누기 위한 것일 수 있다. 일부 실시예들에서, 블록 522에서 나타낸 바와 같이, 요청은 행렬 전치를 수행하기 위한 것일 수 있다. 블록 524에서 나타낸 바와 같이, 요청은 행렬에 활성화 함수를 적용하기 위한 것일 수 있다(예를 들어, ReLU(rectified linear unit) 함수, 시그모이드 함수, 하이퍼볼릭 탄젠트 함수 등). 일부 실시예들에서, 블록 526에서 나타낸 바와 같이, 요청은 행렬에 풀링 함수를 적용하기 위한 것일 수 있다(예를 들어, maxpool/average-pool). 블록 528에서 나타낸 바와 같이, 요청은 추가적으로 또는 대안적으로 행렬에 대해 초월 함수(예를 들어, 지수, 로그, 제곱근 등)를 수행하기 위한 것일 수 있다. 일부 실시예들에서, 블록 530에서 나타낸 바와 같이, 요청은 행렬 데이터에 대해 배치 정규화(batch normalization)를 수행하기 위한 것일 수 있다.
이제 도 6을 참조하면, 블록 532에서 나타낸 바와 같이, 요청은 벡터들의 내적을 결정하거나, 블록 534에서 나타낸 바와 같이, 벡터들의 외적을 수행하기 위한 것일 수 있다. 블록 536에서 나타낸 바와 같이, 요청은 열 우선 포맷(column major format)(예를 들어, 열들의 연속적인 요소들이 인접하는 포맷) 또는 행 우선 포맷(예를 들어, 행들의 연속적인 요소들이 인접하는 포맷)으로 행렬을 기입 또는 판독하기 위한 것일 수 있다. 블록 538에서 나타낸 바와 같이, 메모리(104)는, 메모리 매체(110)에서, 입력 데이터 세트들의 위치들 및 결과 데이터 세트에 대한 위치를 지시하는 요청을 수신할 수 있다. 예를 들어, 그리고 도 8에 도시된 바와 같이, 인-메모리 매크로 연산에 대한 요청은 TxpMatrixOperation(TensorOpcode, StartAddressA, StartAddressB, StartAddressC, NumRowsA, NumColumnsA, NumColumnsB)로서 포맷될 수 있다. 상기 예에서, TensorOpcode는 위에 블록 514 내지 블록 536에서 논의된 매크로 연산들의 타입들 중 하나를 나타내는 정수일 수 있다. 또한, StartAddressA는 행렬 A(예를 들어, 입력 행렬)의 메모리 매체(110)에서의 시작 어드레스일 수 있고, StartAddressB는 행렬 B(예를 들어, 가중치 행렬)의 메모리 매체(110)에서의 시작 어드레스일 수 있다. StartAddressC는 매크로 연산이 완료될 때 출력 행렬(예를 들어, 결과 데이터)이 기입되어야 하는 곳의 메모리 매체(110)에서의 시작 어드레스일 수 있다. 또한, NumRowsA는 행렬 A 내의 행들의 수를 나타내고, NumColumnsA는 행렬 A 내의 열들의 수를 나타내고, NumColumnsB는 행렬 B 내의 열들의 수를 나타낸다. 그 후, 블록 540에서, 컴퓨팅 디바이스(100)(예를 들어, 메모리(104))는 블록 504에서 요청이 수신되었는지에 기초하여 후속 행동 방침(course of action)을 결정한다. 요청이 수신되지 않았다면, 방법(500)은 도 5의 블록 504로 루프백하여 인-메모리 매크로 연산을 수행하기 위한 요청을 기다린다. 그렇지 않다면(예를 들어, 요청이 수신되었다면), 방법(500)은 블록 542로 진행하고, 여기서 컴퓨팅 디바이스(100)(예를 들어, 메모리(104) 및 특히, 매체 액세스 회로(108))는, 요청에 응답하여, 메모리 매체(110)에 존재하는 데이터에 대해 인-메모리 매크로 연산을 수행한다.
블록 544에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는, 컴퓨팅 디바이스(100)의 다른 컴포넌트에(예를 들어, 프로세서(102)에), 매크로 연산이 진행 중인 것을 지시하는 상태 데이터(예를 들어, 참의 부울 값, 1로 설정된 정수, 등)를 제공한다. 일부 실시예들에서, 블록 546에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 다른 컴포넌트(예를 들어 프로세서(102))에 의해 액세스 가능한 레지스터(예를 들어, 메모리 영역)에 상태 데이터를 기입할 수 있다. 블록 548에서 나타낸 바와 같이, 메모리(104)는 요청된(예를 들어 블록 504에서) 인-메모리 매크로 연산과 연관된 인-메모리 연산들을 수행한다. 예시적인 실시예에서, 블록 550에서 나타낸 바와 같이, 메모리(104)는 매체 액세스 회로(108)를 이용하여 인-메모리 매크로 연산을 수행한다. 그렇게 함에 있어서, 블록 552에서 나타낸 바와 같이, 메모리(104)는 상보형 금속-산화물 반도체(CMOS)로 형성된 매체 액세스 회로(예를 들어, 매체 액세스 회로(108)가 CMOS로 형성될 수 있음)를 이용하여 인-메모리 매크로 연산을 수행할 수 있다. 블록 554에서 나타낸 바와 같이, 메모리(104)는 메모리 매체(110)에 접속된 매체 액세스 회로(예를 들어, 매체 액세스 회로(108)가 메모리 매체(110)에 접속됨)를 이용하여 인-메모리 매크로 연산을 수행한다. 또한, 그리고 블록 556에서 나타낸 바와 같이, 메모리(104)는 메모리 매체(110)와 동일한 다이(예를 들어, 동일한 반도체 다이) 또는 동일한 패키지(예를 들어, 동일한 반도체 패키지)에 있는 매체 액세스 회로(예를 들어, 매체 액세스 회로(108)가 메모리 매체(110)와 동일한 반도체 다이 또는 패키지에 있음)를 이용하여 인-메모리 매크로 연산을 수행한다. 이제 도 7을 참조하면, 인-메모리 매크로 연산을 수행함에 있어서, 블록 558에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 메모리 매체(110)로부터의 다수의 판독을 수행할 수 있다. 유사하게, 그리고 블록 560에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 메모리 매체(110)로의 다수의 기입을 수행할 수 있다. 관련하여, 블록 562에서 나타낸 바와 같이, 매크로 연산 동안 자주 사용되는 데이터로의 비교적 빠른 액세스를 가능하게 하기 위해 메모리(104)(예를 들어, 매체 액세스 회로(108))는 스크래치패드들(예를 들어, 스크래치 패드들(132))로부터의 기입들 및/또는 판독들을 수행할 수 있다. 블록 564에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 메모리(104)의 다수의 부분에 걸쳐 데이터를 브로드캐스트할 수 있다(예를 들어, 파티션으로부터 데이터를 판독하고 판독된 데이터를 상이한 파티션들에 할당된 스크래치 패드들(132)로 브로드캐스트하는 것에 의해). 또한, 그리고 블록 566에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 다수의 계산 로직 유닛(예를 들어, 계산 로직 유닛들(136))을 이용하여 병렬로 인-메모리 계산 연산들을 수행할 수 있다. 블록 568에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 인공 지능 관련 연산들(예를 들어, 신경망을 훈련시키는 것, 인공 망을 이용하여 추론을 생성하는 것 등)을 수행할 수 있다. 유사하게, 그리고 블록 570에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 행렬 연산들(예를 들어, 행렬 곱셈, 행렬 전치 등)을 수행할 수 있다.
블록 572에서, 컴퓨팅 디바이스(100)(예를 들어, 메모리(104) 및 더 구체적으로 매체 액세스 회로(108))는 매크로 연산이 완료되었는지(예를 들어, 요청된 매크로 연산과 연관된 인-메모리 연산들 모두가 수행되었는지)에 기초하여 후속 행동 방침을 결정한다. 매크로 연산이 완료되지 않았다면, 방법(500)은 도 6의 블록 542로 루프백하여 요청된 매크로 연산과 연관된 연산들을 계속 수행한다. 그렇지 않다면, 방법(500)은 블록 574로 진행하고, 여기서 메모리(104)(예를 들어, 매체 액세스 회로(108))는 인-메모리 매크로 연산의 결과를 나타내는 결과 데이터를 메모리 매체(110)에 기입한다. 그렇게 함에 있어서, 그리고 블록 576에서 나타낸 바와 같이, 매체 액세스 회로(108)는 인-메모리 매크로 연산을 수행하기 위한 요청에서 지시된 위치(예를 들어, 위에 설명된, 행렬 C에 대한 위치)에 결과 데이터를 기입할 수 있다. 블록 578에서 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는, 컴퓨팅 디바이스(100)의 다른 컴포넌트에, 매크로 연산이 완료되었다는 것을 지시하는 상태 데이터를 제공한다. 예를 들어, 그리고 블록 580에서 나타낸 바와 같이, 매체 액세스 회로(108)는 상태 데이터를 요청된 인-메모리 매크로 연산에 대한 애플리케이션(예를 들어, 신경망을 훈련시키고 이를 이용하여 추론을 생성하기 위해 인-메모리 매크로 연산들에 의존하는 인공 지능 애플리케이션)을 실행하는 프로세서(예를 들어, 프로세서(102))에 제공할 수 있다. 블록 582에서 나타낸 바와 같이, 매체 액세스 회로(108)는 상태 데이터를 컴퓨팅 디바이스(100)의 다른 컴포넌트(예를 들어, 프로세서(102))에 의해 액세스 가능한 레지스터에 기입할 수 있다. 일부 실시예들에서, 블록 584에서 나타낸 바와 같이, 상태 데이터는, 메모리 매체(110)에서, 결과 데이터(예를 들어, 행렬 C)가 기입된 위치를 지시할 수 있다. 그 후, 방법(500)은 도 5의 블록 504로 루프백하여 인-메모리 매크로 연산을 수행하기 위한 다른 요청을 기다린다.
예들
본 명세서에 개시된 기술들의 예시적인 예들이 아래에 제공된다. 기술들의 실시예는 아래에 설명되는 예들 중 임의의 하나 이상, 및 그 예들의 임의의 조합을 포함할 수 있다.
예 1은 메모리 매체에 접속된 매체 액세스 회로를 포함하는 메모리를 포함하고, 상기 매체 액세스 회로는 다수의 인-메모리 연산의 세트를 나타내는 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하고; 상기 요청에 응답하여, 상기 메모리 매체에 존재하는 데이터에 대해 상기 인-메모리 매크로 연산을 수행한다.
예 2는 예 1의 주제를 포함하고, 상기 요청에 응답하여, 상기 인-메모리 매크로 연산을 수행하는 것은, 상기 메모리가 위치하는 컴퓨팅 디바이스의 컴포넌트에, 상기 매크로 연산이 진행 중인 것을 지시하는 상태 데이터를 제공하는 것을 포함한다.
예 3은 예 1 및 예 2 중 어느 하나의 주제를 포함하고, 상기 매체 액세스 회로는 추가로 상기 인-메모리 매크로 연산의 수행이 완료되었는지를 결정하고; 상기 인-메모리 매크로 연산의 수행이 완료되었다는 결정에 응답하여, 상기 매크로 연산이 완료되었다는 것을 지시하는 상태 데이터를 제공한다.
예 4는 예 1 내지 예 3 중 어느 하나의 주제를 포함하고, 상기 상태 데이터를 제공하는 것은 상기 상태 데이터를 상기 컴퓨팅 디바이스의 컴포넌트에 의해 액세스 가능한 레지스터에 기입하는 것을 포함한다.
예 5는 예 1 내지 예 4 중 어느 하나의 주제를 포함하고, 상기 요청을 수신하는 것은 상기 매크로 연산을 수행할 데이터의 상기 메모리 매체에서의 위치를 지시하는 요청을 수신하는 것을 포함한다.
예 6은 예 1 내지 예 5 중 어느 하나의 주제를 포함하고, 상기 요청을 수신하는 것은 상기 매크로 연산의 결과를 나타내는 결과 데이터가 기입되어야 할 상기 메모리 매체에서의 위치를 지시하는 요청을 수신하는 것을 포함한다.
예 7은 예 1 내지 예 6 중 어느 하나의 주제를 포함하고, 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 것은 다수의 인-메모리 계산 연산을 수행하기 위한 요청을 수신하는 것을 포함한다.
예 8은 예 1 내지 예 7 중 어느 하나의 주제를 포함하고, 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 것은 인공 지능 관련 연산들을 수행하기 위한 요청을 수신하는 것을 포함한다.
예 9는 예 1 내지 예 8 중 어느 하나의 주제를 포함하고, 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 것은 상기 메모리 매체에 존재하는 행렬 데이터에 대해 인-메모리 연산들을 수행하기 위한 요청을 수신하는 것을 포함한다.
예 10은 예 1 내지 예 9 중 어느 하나의 주제를 포함하고, 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 것은 행렬들을 곱하기 위한, 행렬을 필터와 컨볼루션하기 위한, 행렬들을 더하거나 빼기 위한, 행렬을 상수로 더하거나, 빼거나, 곱하거나, 나누기 위한, 행렬 전치를 수행하기 위한, 행렬에 활성화 함수를 적용하기 위한, 행렬에 풀링 함수를 적용하기 위한, 행렬에 초월 함수를 적용하기 위한, 배치 정규화를 수행하기 위한, 벡터들의 내적을 결정하기 위한, 벡터들의 외적을 결정하기 위한, 열 우선 포맷으로 행렬을 판독 또는 기입하기 위한, 또는 행 우선 포맷으로 행렬을 판독 또는 기입하기 위한 요청을 수신하는 것을 포함한다.
예 11은 예 1 내지 예 10 중 어느 하나의 주제를 포함하고, 상기 매체 액세스 회로는 상보형 금속-산화물-반도체로 형성된다.
예 12는 예 1 내지 예 11 중 어느 하나의 주제를 포함하고, 상기 메모리 매체는 크로스 포인트 아키텍처를 갖는다.
예 13은 예 1 내지 예 12 중 어느 하나의 주제를 포함하고, 상기 메모리 매체는 3차원 크로스 포인트 아키텍처를 갖는다.
예 14는 방법을 포함하는데, 이는 메모리 매체에 접속된 매체 액세스 회로에 의해, 다수의 인-메모리 연산의 세트를 나타내는 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 단계; 및 상기 요청에 응답하여 그리고 상기 매체 액세스 회로에 의해, 상기 메모리 매체에 존재하는 데이터에 대해 상기 인-메모리 매크로 연산을 수행하는 단계를 포함한다.
예 15는 예 14의 주제를 포함하고, 상기 요청에 응답하여, 상기 인-메모리 매크로 연산을 수행하는 단계는, 상기 매체 액세스 회로가 위치하는 컴퓨팅 디바이스의 컴포넌트에, 상기 매크로 연산이 진행 중인 것을 지시하는 상태 데이터를 제공하는 단계를 포함한다.
예 16은 예 14 및 15 중 어느 하나의 주제를 포함하고, 상기 매체 액세스 회로에 의해, 상기 인-메모리 매크로 연산의 수행이 완료되었는지를 결정하는 단계; 및 상기 매체 액세스 회로에 의해 그리고 상기 인-메모리 매크로 연산의 수행이 완료되었다는 결정에 응답하여, 상기 매크로 연산이 완료되었다는 것을 지시하는 상태 데이터를 제공하는 단계를 추가로 포함한다.
예 17은 예 14 내지 예 16 중 어느 하나의 주제를 포함하고, 상기 상태 데이터를 제공하는 단계는 상기 상태 데이터를 상기 컴퓨팅 디바이스의 컴포넌트에 의해 액세스 가능한 레지스터에 기입하는 단계를 포함한다.
예 18은 예 14 내지 예 17 중 어느 하나의 주제를 포함하고, 상기 요청을 수신하는 단계는 상기 매크로 연산을 수행할 데이터의 상기 메모리 매체에서의 위치를 지시하는 요청을 수신하는 단계를 포함한다.
예 19는 그 위에 저장된 복수의 명령어를 포함하는 하나 이상의 머신 판독가능 저장 매체를 포함하는데, 상기 복수의 명령어는, 실행되는 것에 응답하여, 메모리 매체에 접속된 매체 액세스 회로로 하여금 다수의 인-메모리 연산의 세트를 나타내는 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하고; 상기 요청에 응답하여, 상기 메모리 매체에 존재하는 데이터에 대해 상기 인-메모리 매크로 연산을 수행하게 한다.
예 20은 예 19의 주제를 포함하고, 상기 요청에 응답하여, 상기 인-메모리 매크로 연산을 수행하는 것은, 상기 매체 액세스 회로가 위치하는 컴퓨팅 디바이스의 컴포넌트에, 상기 매크로 연산이 진행 중인 것을 지시하는 상태 데이터를 제공하는 것을 포함한다.

Claims (20)

  1. 메모리로서,
    메모리 매체에 접속된 매체 액세스 회로를 포함하고, 상기 매체 액세스 회로는:
    다수의 인-메모리 연산의 세트를 나타내는 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하고;
    상기 요청에 응답하여, 상기 메모리 매체에 존재하는 데이터에 대해 상기 인-메모리 매크로 연산을 수행하는, 메모리.
  2. 제1항에 있어서,
    상기 요청에 응답하여, 상기 인-메모리 매크로 연산을 수행하는 것은, 상기 메모리가 위치하는 컴퓨팅 디바이스의 컴포넌트에, 상기 매크로 연산이 진행 중인 것을 지시하는 상태 데이터를 제공하는 것을 포함하는, 메모리.
  3. 제2항에 있어서,
    상기 매체 액세스 회로는 추가로:
    상기 인-메모리 매크로 연산의 수행이 완료되었는지를 결정하고;
    상기 인-메모리 매크로 연산의 수행이 완료되었다는 결정에 응답하여, 상기 매크로 연산이 완료되었다는 것을 지시하는 상태 데이터를 제공하는, 메모리.
  4. 제2항에 있어서,
    상기 상태 데이터를 제공하는 것은 상기 상태 데이터를 상기 컴퓨팅 디바이스의 컴포넌트에 의해 액세스 가능한 레지스터에 기입하는 것을 포함하는, 메모리.
  5. 제1항에 있어서,
    상기 요청을 수신하는 것은 상기 매크로 연산을 수행할 데이터의 상기 메모리 매체에서의 위치를 지시하는 요청을 수신하는 것을 포함하는, 메모리.
  6. 제1항에 있어서,
    상기 요청을 수신하는 것은 상기 매크로 연산의 결과를 나타내는 결과 데이터가 기입되어야 할 상기 메모리 매체에서의 위치를 지시하는 요청을 수신하는 것을 포함하는, 메모리.
  7. 제1항에 있어서,
    인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 것은 다수의 인-메모리 계산 연산을 수행하기 위한 요청을 수신하는 것을 포함하는, 메모리.
  8. 제1항에 있어서,
    인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 것은 인공 지능 관련 연산들을 수행하기 위한 요청을 수신하는 것을 포함하는, 메모리.
  9. 제1항에 있어서,
    인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 것은 상기 메모리 매체에 존재하는 행렬 데이터에 대해 인-메모리 연산들을 수행하기 위한 요청을 수신하는 것을 포함하는, 메모리.
  10. 제1항에 있어서,
    인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 것은 행렬들을 곱하기 위한, 행렬을 필터와 컨볼루션하기 위한, 행렬들을 더하거나 빼기 위한, 행렬을 상수로 더하거나, 빼거나, 곱하거나, 나누기 위한, 행렬 전치를 수행하기 위한, 행렬에 활성화 함수를 적용하기 위한, 행렬에 풀링 함수를 적용하기 위한, 행렬에 초월 함수를 적용하기 위한, 배치 정규화를 수행하기 위한, 벡터들의 내적을 결정하기 위한, 벡터들의 외적을 결정하기 위한, 열 우선 포맷으로 행렬을 판독 또는 기입하기 위한, 또는 행 우선 포맷으로 행렬을 판독 또는 기입하기 위한 요청을 수신하는 것을 포함하는, 메모리.
  11. 제1항에 있어서,
    상기 매체 액세스 회로는 상보형 금속-산화물-반도체로 형성되는, 메모리.
  12. 제1항에 있어서,
    상기 메모리 매체는 크로스 포인트 아키텍처를 갖는, 메모리.
  13. 제12항에 있어서,
    상기 메모리 매체는 3차원 크로스 포인트 아키텍처를 갖는, 메모리.
  14. 방법으로서,
    메모리 매체에 접속된 매체 액세스 회로에 의해, 다수의 인-메모리 연산의 세트를 나타내는 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하는 단계; 및
    상기 요청에 응답하여 그리고 상기 매체 액세스 회로에 의해, 상기 메모리 매체에 존재하는 데이터에 대해 상기 인-메모리 매크로 연산을 수행하는 단계를 포함하는, 방법.
  15. 제14항에 있어서,
    상기 요청에 응답하여, 상기 인-메모리 매크로 연산을 수행하는 단계는, 상기 매체 액세스 회로가 위치하는 컴퓨팅 디바이스의 컴포넌트에, 상기 매크로 연산이 진행 중인 것을 지시하는 상태 데이터를 제공하는 단계를 포함하는, 방법.
  16. 제15항에 있어서,
    상기 매체 액세스 회로에 의해, 상기 인-메모리 매크로 연산의 수행이 완료되었는지를 결정하는 단계; 및
    상기 매체 액세스 회로에 의해 그리고 상기 인-메모리 매크로 연산의 수행이 완료되었다는 결정에 응답하여, 상기 매크로 연산이 완료되었다는 것을 지시하는 상태 데이터를 제공하는 단계를 추가로 포함하는, 방법.
  17. 제15항에 있어서,
    상기 상태 데이터를 제공하는 단계는 상기 상태 데이터를 상기 컴퓨팅 디바이스의 컴포넌트에 의해 액세스 가능한 레지스터에 기입하는 단계를 포함하는, 방법.
  18. 제14항에 있어서,
    상기 요청을 수신하는 단계는 상기 매크로 연산을 수행할 데이터의 상기 메모리 매체에서의 위치를 지시하는 요청을 수신하는 단계를 포함하는, 방법.
  19. 그 위에 저장된 복수의 명령어를 포함하는 하나 이상의 머신 판독가능 저장 매체로서, 상기 복수의 명령어는, 실행되는 것에 응답하여, 메모리 매체에 접속된 매체 액세스 회로로 하여금:
    다수의 인-메모리 연산의 세트를 나타내는 인-메모리 매크로 연산을 수행하기 위한 요청을 수신하고;
    상기 요청에 응답하여, 상기 메모리 매체에 존재하는 데이터에 대해 상기 인-메모리 매크로 연산을 수행하게 하는, 하나 이상의 머신 판독가능 저장 매체.
  20. 제19항에 있어서,
    상기 요청에 응답하여, 상기 인-메모리 매크로 연산을 수행하는 것은, 상기 매체 액세스 회로가 위치하는 컴퓨팅 디바이스의 컴포넌트에, 상기 매크로 연산이 진행 중인 것을 지시하는 상태 데이터를 제공하는 것을 포함하는, 하나 이상의 머신 판독가능 저장 매체.
KR1020200044621A 2019-05-14 2020-04-13 메모리에서 매크로 연산을 수행하기 위한 기술 KR20200131741A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/411,730 US11620358B2 (en) 2019-05-14 2019-05-14 Technologies for performing macro operations in memory
US16/411,730 2019-05-14

Publications (1)

Publication Number Publication Date
KR20200131741A true KR20200131741A (ko) 2020-11-24

Family

ID=67684546

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200044621A KR20200131741A (ko) 2019-05-14 2020-04-13 메모리에서 매크로 연산을 수행하기 위한 기술

Country Status (3)

Country Link
US (1) US11620358B2 (ko)
EP (1) EP3739457B1 (ko)
KR (1) KR20200131741A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301167B2 (en) * 2019-05-16 2022-04-12 Intel Corporation Technologies for providing multiple tier memory media management
KR20220101518A (ko) * 2021-01-11 2022-07-19 에스케이하이닉스 주식회사 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치
US20220413849A1 (en) * 2021-06-28 2022-12-29 Advanced Micro Devices, Inc. Providing atomicity for complex operations using near-memory computing

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7057914B2 (en) * 2002-08-02 2006-06-06 Unity Semiconductor Corporation Cross point memory array with fast access time
US8719463B2 (en) * 2010-11-16 2014-05-06 Taiwan Semiconductor Manufacturing Company, Ltd. Processor with tightly coupled smart memory unit
US10909447B2 (en) 2017-03-09 2021-02-02 Google Llc Transposing neural network matrices in hardware
US10534607B2 (en) 2017-05-23 2020-01-14 Google Llc Accessing data in multi-dimensional tensors using adders
US11307977B2 (en) 2018-09-27 2022-04-19 Intel Corporation Technologies for direct matrix read and write operations
US11270763B2 (en) * 2019-01-18 2022-03-08 Silicon Storage Technology, Inc. Neural network classifier using array of three-gate non-volatile memory cells
US11158561B2 (en) * 2019-05-01 2021-10-26 Micron Technology, Inc. Memory device with low density thermal barrier

Also Published As

Publication number Publication date
US11620358B2 (en) 2023-04-04
EP3739457A1 (en) 2020-11-18
EP3739457B1 (en) 2022-08-24
US20190266219A1 (en) 2019-08-29

Similar Documents

Publication Publication Date Title
US11301167B2 (en) Technologies for providing multiple tier memory media management
EP3754563A1 (en) Technologies for performing in-memory training data augmentation for artificial intelligence
US10534747B2 (en) Technologies for providing a scalable architecture for performing compute operations in memory
US11416170B2 (en) Technologies for efficiently accessing data columns and rows in a memory
US11307977B2 (en) Technologies for direct matrix read and write operations
KR20200131741A (ko) 메모리에서 매크로 연산을 수행하기 위한 기술
US11237903B2 (en) Technologies for providing ECC pre-provisioning and handling for cross-point memory and compute operations
CN112114996A (zh) 用于保留计算近存储器操作中的错误校正能力的技术
EP3731096A1 (en) Technologies for providing error correction for row direction and column direction in a cross point memory
US11755227B2 (en) Command batching for a memory sub-system
US20190227750A1 (en) Technologies for performing tensor operations in memory
CN113535077A (zh) 用于列可寻址存储器介质系统中的介质管理的技术
EP3716076B1 (en) Technologies for providing high efficiency compute architecture on cross point memory for artificial intelligence operations
CN111796964A (zh) 用于提供多级纠错的技术
CN112908384A (zh) 可选择性操作的存储器装置
US11182158B2 (en) Technologies for providing adaptive memory media management
KR20240043148A (ko) 메모리 디바이스에서 메모리 액세스 커맨드 큐를 사용하는 개선된 메모리 성능
US11221973B2 (en) Parallel iterator for machine learning frameworks
US20230251935A1 (en) Storage device for storing model checkpoints of recommendation deep-learning models
WO2023033967A1 (en) Dynamic queue depth adjustment