KR20200115114A - 메모리에서 계산 동작들을 수행하기 위한 스케일링가능 아키텍처를 제공하는 기술들 - Google Patents

메모리에서 계산 동작들을 수행하기 위한 스케일링가능 아키텍처를 제공하는 기술들 Download PDF

Info

Publication number
KR20200115114A
KR20200115114A KR1020200024139A KR20200024139A KR20200115114A KR 20200115114 A KR20200115114 A KR 20200115114A KR 1020200024139 A KR1020200024139 A KR 1020200024139A KR 20200024139 A KR20200024139 A KR 20200024139A KR 20200115114 A KR20200115114 A KR 20200115114A
Authority
KR
South Korea
Prior art keywords
memory
requested operation
data
logic units
computational logic
Prior art date
Application number
KR1020200024139A
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 KR20200115114A publication Critical patent/KR20200115114A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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
    • 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/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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)
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/803Three-dimensional arrays or hypercubes
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/0454
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)
  • Dram (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

메모리에서 계산 동작들을 효율적으로 수행하기 위한 스케일링가능 아키텍처를 제공하는 기술들은 메모리 매체에 결합된 매체 액세스 회로를 갖는 메모리를 포함한다. 매체 액세스 회로는, 요청된 동작을 수행하기 위해 메모리 매체로부터의 데이터에 액세스하고, 매체 액세스 회로에 포함된 다수의 계산 로직 유닛들 각각을 사용하여, 액세스된 데이터에 대해 요청된 동작을 동시에 수행하고, 요청된 동작의 실행으로부터 생성된 결과 데이터를 메모리 매체에 기입한다.

Description

메모리에서 계산 동작들을 수행하기 위한 스케일링가능 아키텍처를 제공하는 기술들{TECHNOLOGIES FOR PROVIDING A SCALABLE ARCHITECTURE FOR PERFORMING COMPUTE OPERATIONS IN MEMORY}
신경 네트워크들을 훈련시키고/거나 신경 네트워크들을 활용하여 추론하는(예를 들어, 이미지에서 객체를 식별하는 것, 음성 인식을 수행하는 것 등) 애플리케이션들과 같은 인공 지능 애플리케이션들은 통상적으로 행렬 데이터에 대해 텐서 동작들(tensor operations)(예를 들어, 행렬 곱셈(matrix multiplication)과 같은 행렬 계산들)을 수행하기 위해 비교적 많은 양의 계산 능력(compute capacity)을 이용한다. 일부 컴퓨팅 디바이스들에서, 인공 지능 애플리케이션을 지원하기 위한 계산 동작들은 범용 프로세서로부터 그래픽 처리 유닛(GPU)과 같은 가속기 디바이스(accelerator device)로 오프로드(offload)될 수 있다. 그러나, GPU가 프로세서보다 더 빠르게 텐서 동작들을 수행할 수 있지만, 컴퓨팅 디바이스가 동작들을 수행할 수 있는 효율(예를 들어, 에너지 사용량 및 속도)은, 동작될 데이터(예를 들어, 행렬 데이터)가 메모리에 상주하고 버스를 통해 메모리로부터 컴퓨팅 동작들을 수행하는 디바이스(예를 들어, GPU)로 송신되어, 시간 및 에너지를 소비한다는 사실에 의해 여전히 방해를 받는다. (예를 들어, 점점 더 복잡한 인공 지능 애플리케이션들에 의해) 동작될 데이터의 복잡도와 양이 증가함에 따라, 에너지 사용량 및 속도의 관점에서 기존의 시스템들의 비효율이 이에 대응하여 증가할 수 있다.
본 명세서에 설명된 개념들은 첨부 도면들에서 제한으로서가 아니라 예로서 예시된다. 예시의 단순함 및 명확성을 위해, 도면들에 예시되는 요소들은 반드시 일정 비율로 도시되지는 않는다. 적절한 것으로 간주되는 경우, 도면들 사이에서 대응하거나 유사한 요소들을 표시하기 위해 참조 라벨들이 반복되었다.
도 1은 메모리에서 계산 동작들을 효율적으로 수행하기 위한 스케일링가능 아키텍처(scalable architecture)를 갖는 컴퓨팅 디바이스의 적어도 하나의 실시예의 간략화된 도면이다.
도 2는 도 1의 컴퓨팅 디바이스에 포함된 메모리 매체의 적어도 하나의 실시예의 간략화된 도면이다.
도 3은 도 1의 컴퓨팅 디바이스에 포함된 메모리의 매체 액세스 회로의 컴포넌트들 및 메모리 매체의 파티션들의 적어도 하나의 실시예의 간략화된 도면이다.
도 4는 도 1의 컴퓨팅 디바이스에 포함될 수 있는 듀얼 인-라인 메모리 모듈들의 세트의 적어도 하나의 실시예의 간략화된 도면이다.
도 5는 도 1의 컴퓨팅 디바이스의 메모리에서 수행될 수 있는 텐서 동작의 적어도 하나의 실시예의 간략화된 도면이다.
도 6 내지 도 8은 도 1의 컴퓨팅 디바이스에 의해 수행될 수 있는 메모리에서의 효율적인 계산 동작들을 수행하기 위한 방법의 적어도 하나의 실시예의 간략화된 도면들이다.
도 9는 패키지 내로 결합된 도 1의 컴퓨팅 디바이스의 메모리로부터의 2개의 다이의 간략화된 도면이다.
본 개시내용의 개념들은 다양한 수정들 및 대안적인 형태들이 가능하지만, 그 특정 실시예들이 도면들에 예로서 도시되고, 본 명세서에서 상세히 설명될 것이다. 그러나, 본 개시내용의 개념을 개시되는 특정 형태로 한정하고자 하는 의도는 없으며, 오히려 본 개시내용 및 첨부된 청구항들에 따른 모든 수정들, 균등물들, 및 대안들을 커버하는 것을 의도한다는 것을 이해해야 한다.
본 명세서에서의 "일 실시예", "실시예", "예시적인 실시예" 등에 대한 언급은, 설명된 실시예가 특정한 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 그 특정한 특징, 구조, 또는 특성을 반드시 포함할 수 있거나 포함하지 않을 수 있다는 것을 나타낸다. 또한, 그러한 문구들이 반드시 동일한 실시예를 언급하는 것은 아니다. 게다가, 특정한 특징, 구조, 또는 특성이 실시예와 관련하여 설명될 때, 명시적인 설명 여부에 관계없이 다른 실시예들과 관련하여 그러한 특징, 구조, 또는 특성을 달성하는 것은 본 기술분야의 통상의 기술자의 지식 범위 내에 있다고 제안한다. 추가적으로, "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)는 컴퓨터에서 흔히 발견되는 것들(예를 들어, 디스플레이, 주변 디바이스들 등)과 같은 다른 또는 추가적인 컴포넌트들을 포함할 수 있다. 또한, 일부 실시예들에서는, 예시적인 컴포넌트들 중 하나 이상이 다른 컴포넌트에 통합될 수 있거나, 그렇지 않으면 다른 컴포넌트의 일부를 형성할 수 있다. 본 명세서에 설명되는 바와 같이, 컴퓨팅 디바이스(100), 및 특히 컴퓨팅 디바이스(100)의 메모리(104)는, 컴퓨팅 디바이스(100)에 제거가능하게 접속(예를 들어, 삽입)되도록 적응되는 하나 이상의 회로 보드(예를 들어, 듀얼 인-라인 메모리 모듈(DIMM)(160))가 각각 메모리(104)에 존재하는 데이터에 대해 텐서 동작들(예를 들어, 행렬 계산들)과 같은 계산 동작들을 수행하도록 구성되는 계산 로직 유닛들(예를 들어, 계산 로직 유닛들(136))을 갖는 한 세트의 패키지들(예를 들어, 각각은 하나 이상의 반도체 다이(190, 192)의 세트임)(150, 152)을 포함하는, 스케일링가능 아키텍처를 갖는다. 데이터에 대해 동작하기 위해 데이터를 버스를 통해 다른 컴포넌트(예를 들어, 프로세서(102))에 전송하는 것이 아니라, 데이터에 더 가까운 계산 동작들을 (예를 들어, 메모리(104)에서) 수행함으로써, 컴퓨팅 디바이스(100)는 동작들을 더 효율적으로 수행할 수 있다. 더욱이, 메모리(104)에 계산 로직 유닛들(136)을 갖는 추가적인 DIMM들 또는 유사한 회로 보드들을 추가함으로써, 컴퓨팅 디바이스(100)가 메모리(104)에서의 데이터에 대해 더 복잡한 계산 동작들(예를 들어, 더 복잡한 인공 지능 동작들)을 수행하는 능력이 그에 대응하여 스케일링 업(scaled up)될 수 있다.
여기서 더 상세히 설명되는 바와 같이, 예시적인 실시예에서, 메모리(104)는 계산 동작들을 수행하기 위해 메모리 매체(110)에 액세스하도록 구성되는 매체 액세스 회로(108)를 포함한다. 예시적인 실시예에서, 메모리 매체(110)는, 타일 당 1 비트로의 액세스를 가능하게 하고 동일한 파티션 또는 다른 파티션들에 대한 판독들 또는 기입들 사이의 시간 지연들을 발생시키는 것과 같은, 다른 메모리 아키텍처들(예를 들어, 동적 랜덤 액세스 메모리(DRAM))과 상이한 데이터 액세스 특성들을 갖는 3차원 크로스 포인트 아키텍처(three-dimensional cross point architecture)를 갖는다. 예시적인 실시예에서, 한 번에 하나의 파티션으로부터 128 비트가 판독될 수 있다.
프로세서(102)는 애플리케이션(예를 들어, 신경 네트워크 또는 다른 머신 학습 구조를 활용하여 학습하고 추론할 수 있는 인공 지능 관련 애플리케이션)을 실행하는 것과 같은, 본 명세서에 설명된 동작들을 수행할 수 있는 임의의 디바이스 또는 회로(예를 들어, 멀티 코어 프로세서(들), 마이크로컨트롤러, 또는 다른 프로세서 또는 처리/제어 회로)로서 구현될 수 있다. 일부 실시예들에서, 프로세서(102)는 FPGA, 특정 용도 집적 회로(ASIC), 재구성가능 하드웨어 또는 하드웨어 회로, 또는 본 명세서에 설명된 기능들의 수행을 용이하게 하는 다른 특수 하드웨어로서 구현될 수 있거나, 이들을 포함할 수 있거나, 또는 이들에 결합될 수 있다.
비휘발성 메모리(예를 들어, 2-레벨 메모리 스킴에서의 원거리 메모리(far memory))를 포함할 수 있는 메모리(104)는 메모리 매체(110) 및 메모리 매체(110) 아래에(예를 들어, 더 낮은 위치에) 결합된 매체 액세스 회로(108)(예를 들어, 상보형 금속 산화물 반도체(CMOS) 또는 다른 재료들로 구성된 집적 회로와 같은 디바이스 또는 회로)를 포함한다. 매체 액세스 회로(108)는, (예를 들어, 신경 네트워크를 훈련시키고/거나 추론하기 위해 텐서 동작들에 의존하는 인공 지능 관련 애플리케이션을 실행하고 있을 수 있는 프로세서(102)로부터의 요청들에 응답하여) 메모리 매체(110)로부터 선택적으로 판독하고/하거나 그에 기입하고 메모리 매체(110)에 존재하는 데이터(예를 들어, 행렬 데이터)에 대한 계산 동작들(예를 들어, 텐서 동작들)을 수행하도록 구성되는 임의의 디바이스 또는 회로(예를 들어, 프로세서, 코-프로세서, 전용 회로 등)로서 구현될 수 있는 메모리 제어기(106)에 또한 접속된다. 도 2를 간단히 참조하면, 메모리 매체(110)는, 예시적인 실시예에서, 본 명세서에서 크로스 포인트 아키텍처(예를 들어, 메모리 셀들이 워드 라인들과 비트 라인들의 교차점에 있고 개별적으로 어드레싱 가능하며 비트 저장이 벌크 저항의 변화에 기초하는 아키텍처)로도 지칭되는 타일 아키텍처를 포함하고, 여기서 각각의 타일(예를 들어, 메모리 셀)은 x 파라미터 및 y 파라미터(예를 들어, 열 및 행)에 의해 어드레싱 가능하다. 메모리 매체(110)는 다수의 파티션을 포함하고, 각각의 파티션은 타일 아키텍처를 포함한다. 파티션들은 3차원 크로스 포인트 아키텍처(예를 들어, 인텔 3D XPoint™ 메모리)를 형성하기 위해 층들(202, 204, 206)로서 적층될 수 있다. 고정 크기의 다중-비트 데이터 구조들(예를 들어, 바이트, 워드 등)만이 어드레싱 가능한 전형적인 메모리 디바이스들과는 달리, 매체 액세스 회로(108)는, 프로세서(102)로부터 대응하는 요청을 수신하는 것에 응답하여 요청을 생성할 수 있는, 메모리 제어기(106)의 요청에 따라 메모리 매체(110)로부터 개별 비트들 또는 다른 데이터 단위들을 판독하도록 구성된다. 예시적인 실시예에서, 128 비트가 주어진 파티션에서 동시에 액세스될 수 있다(예를 들어, 판독되거나 기입될 수 있다).
다시 도 1을 참조하면, 예시적인 실시예에서, 매체 액세스 회로(108)는, 매체 액세스 회로(108)의 다른 부분들로부터 텐서 동작들과 같은 계산 동작들의 수행을 오프로드하도록 구성되는 임의의 디바이스 또는 회로(예를 들어, CMOS 회로)로서 구현될 수 있는, 텐서 로직 유닛(130)을 포함한다. 예시적인 실시예에서, 텐서 로직 유닛(130)은 다수의 메모리 스크래치 패드들(132)을 포함하고, 이들 각각은 메모리 매체(110)로부터 판독되었던 행렬 데이터와 같은 데이터에 대한 상대적으로 빠른(예를 들어, 낮은 레이턴시) 액세스를 제공하기 위해 사용가능한 임의의 디바이스 또는 회로(예를 들어, 정적 랜덤 액세스 메모리(SRAM), 레지스터 파일 등)로서 구현될 수 있다. 예시적인 실시예에서, 스크래치 패드들(132)은 비교적 더 느린 액세스 시간 및 더 큰 용량을 갖는 메모리 매체(110)보다 더 빠른 판독 및 기입 액세스 시간을 제공한다. 텐서 로직 유닛(130)은, 메모리 매체(110)로부터 판독된 데이터가 에러를 포함하는지를 결정하고 Reed-Solomon 코드 또는 BCH(Bose-Chaudhuri-Hocquenghem) 코드와 같은 에러 정정 알고리즘(들)을 사용하여 임의의 에러들을 정정하도록 구성되는 임의의 디바이스 또는 회로(예를 들어, 재구성가능 회로, 주문형 집적 회로(ASIC) 등)로서 구현될 수 있는 에러 정정 코드(error correction code)(ECC) 로직 유닛(134)을 추가적으로 포함할 수 있다. 그에 부가하여, 예시적인 실시예에서, 텐서 로직 유닛(130)은 다수의 계산 로직 유닛(136)을 포함하며, 이들 각각은 스크래치 패드들(132)의 대응하는 세트에서 데이터(예를 들어, 행렬 데이터)에 대해 계산 동작들(예를 들어, 텐서 동작들)을 수행하도록 구성되는 임의의 디바이스 또는 회로(예를 들어, 재구성가능 회로, 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)을 포함한다. 일부 실시예들에서, 계산 로직 유닛(136)(예를 들어, 계산 로직 유닛(318))은 그 계산 로직 유닛(318)과 연관된 파티션(예를 들어, 파티션들(311) 중 하나)으로부터 하나 이상의 다른 계산 로직 유닛(136)으로(예를 들어, 그 다른 계산 로직 유닛들(136)과 연관된 스크래치 패드(들)(132)로) 한 세트의 데이터를 브로드캐스트(예를 들어, 제공)할 수 있다. 메모리 매체(110)의 대응하는 세트의 파티션들로부터 판독되었던 데이터를 다른 스크래치 패드들에 브로드캐스트함으로써, 매체 액세스 회로(108)는 메모리 매체(110)의 주어진 섹션(예를 들어, 파티션 세트)이 행렬 데이터를 획득하기 위해 액세스되어야 하는 횟수를 감소시킨다(예를 들어, 판독된 행렬 데이터는 메모리 매체(110)로부터 동일한 행렬 데이터를 여러 번 판독하는 것이 아니라, 메모리 매체(110)로부터 한번 판독된 후에 다수의 스크래치 패드들에 브로드캐스트될 수 있다). 또한, 대응하는 스크래치 패드들(312, 314, 316, 322, 324, 326, 332, 334, 336)과 각각 연관되는 다수의 계산 로직 유닛들(318, 328, 338)을 활용함으로써, 매체 액세스 회로(108)는 텐서 동작의 부분들(예를 들어, 행렬 곱셈 및 누적)을 동시에(예를 들어, 병렬로) 수행할 수 있다. 단순화를 위해 도 3에는 3개의 클러스터(310, 320, 330)가 도시되어 있지만, 클러스터들 및 대응하는 파티션들, 스크래치 패드들, 및 계산 로직 유닛들의 실제 수는 특정 실시예에 따라 상이할 수 있다는 것을 이해해야 한다. 도 9를 간단히 참조하면, 메모리 매체(110)는 다이(190) 상에 포함될 수 있고, 매체 액세스 회로(108)는 다른 다이(192) 상에 포함될 수 있다. 각각의 다이(190, 192)는 기능들의 세트를 수행하기 위한 회로를 정의하는 반도체 웨이퍼 상의 패턴으로서 구현될 수 있다. 도 9에 도시된 바와 같이, 두 다이(190, 192)는 함께 패키지(150) 내로 결합될 수 있다. 패키지(150)는 다이들(190, 192)을 하우징하는 케이싱(예를 들어, 금속 케이싱, 플라스틱 케이싱, 유리 케이싱, 세라믹 케이싱 등)을 포함할 수 있다. 다른 실시예들에서, 메모리 매체(110)와 매체 액세스 회로(108)는 동일한 다이 상에 위치된다.
도 4를 간단히 참조하면, 듀얼 인-라인 메모리 모듈(dual in-line memory module)(DIMM)들(420, 430)의 세트(400)가 도시되어 있다. DIMM(420)은 다수의 패키지(402, 404, 406, 408, 410, 412, 414, 및 416)를 포함하며, 각각의 패키지는 도 1 및 도 9의 패키지(150)와 유사하다. 또한, 예시적인 실시예에서, 각각의 패키지는 64개의 파티션을 포함하고, 4개의 파티션의 각각의 세트에 하나의 계산 로직 유닛(136)이 할당된다. 이와 같이, 8개의 패키지를 갖는 DIMM(예를 들어, DIMM(420))에서, DIMM은 128개의 계산 로직 유닛(136)을 갖는다. 다른 DIMM(예를 들어, DIMM(430))을 메모리(104)에 추가함으로써, 다른 128개의 계산 로직 유닛(136)에 의해 메모리-내 계산 용량이 두 배가 된다. 이와 같이, DIMM들을 메모리(104)에 연속적으로 추가함으로써, 메모리-내 계산 용량은 스케일링 업될 수 있어, 컴퓨팅 디바이스(100)가 인공 지능 동작들(예를 들어, 텐서 동작들)을 효율적으로 수행하는 능력을 상당히 증가시킨다. 일부 실시예들에서, DIMM(예를 들어, DIMM(420))은 매체 액세스 회로(108)를 갖는 하나의 다이 및 메모리 매체(110)의 다수의 다른 다이들을 포함할 수 있어, 전체 DIMM(420)이 패키지(예를 들어, 패키지(150))의 것과 유사한 컴포넌트들(예를 들어, 다이들)의 세트를 갖게 할 수 있다. 다른 실시예들에서, 하나 이상의 패키지(예를 들어, 패키지들(402, 404, 406, 408, 410, 412, 414, 416))는 DIMM 이외의 다른 타입의 회로 보드 상에 위치될 수 있다. 예를 들어, 패키지들은 컴퓨팅 디바이스(100)의 범용 직렬 버스(USB) 인터페이스에 삽입될 수 있는 비교적 작은 회로 보드 상에 포함될 수 있다.
도 5를 간단히 참조하면, 메모리(104)에 의해 수행될 수 있는 행렬 곱셈(예를 들어, 행렬 곱셈 및 누적) 동작(500)의 예가 도시되어 있다. 예시된 바와 같이, 입력 행렬 A에서의 행렬 데이터는 다른 행렬 B에서의 행렬 데이터(예를 들어, 컨볼루션 신경 네트워크(convolutional neural network)의 층에 대한 가중치 데이터)와 곱해지고, 결과 데이터는 출력 행렬 C에 기입된다. 도 5에 나타낸 각각의 행렬은 매체 액세스 회로(108)의 스크래치 패드들(132)에 행렬 데이터로서 일시적으로 저장된다. 일부 실시예들에서, 출력 행렬 C는 후속 텐서 동작에 대한 입력 행렬로서(예를 들어, 컨볼루션 신경 네트워크의 후속 층에 대한 입력 행렬로서) 활용될 수 있다.
도 1을 다시 참조하면, 메모리(104)는 비휘발성 메모리 및 휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는 (비휘발성 메모리에 전력이 중단되더라도) 지속적인 방식으로 데이터를 저장할 수 있는 임의의 타입의 데이터 스토리지로서 구현될 수 있다. 예를 들어, 비휘발성 메모리는 하나 이상의 비휘발성 메모리 디바이스로서 구현될 수 있다. 비휘발성 메모리 디바이스들은 비트-레벨 어드레싱 가능성(예를 들어, 바이트들 또는 다른 더 큰 데이터 단위들이 아니라, 데이터의 개별 비트들로부터 판독하고/하거나 그에 기입하는 능력)을 가능하게 하는 크로스 포인트 아키텍처에서 구성되는 하나 이상의 메모리 디바이스를 포함할 수 있고, 예시적으로 3차원(3D) 크로스 포인트 메모리로서 구현된다. 일부 실시예들에서, 비휘발성 메모리는, 칼코게나이드 상 변화 재료(예를 들어, 칼코게나이드 글래스)를 사용하는 메모리 디바이스들, 강유전 트랜지스터 랜덤 액세스 메모리(FeTRAM), 나노와이어-기반 비휘발성 메모리, 상 변화 메모리(PCM), 멤리스터 기술을 포함하는 메모리, 자기저항 랜덤 액세스 메모리(MRAM) 또는 스핀 트랜스퍼 토크(STT)-MRAM의 임의의 조합을 포함하는 다른 타입들의 메모리를 추가적으로 포함할 수 있다. 휘발성 메모리는, 휘발성 메모리에 전력이 공급되는 동안에 데이터를 저장할 수 있는 임의의 타입의 데이터 스토리지로서 구현될 수 있다. 예를 들어, 휘발성 메모리는 하나 이상의 휘발성 메모리 디바이스로서 구현될 수 있고, 휘발성 메모리가 다른 실시예들에서 다른 타입들의 비-지속적 데이터 스토리지로서 구현될 수 있다는 이해를 갖고서 이하 주기적으로 휘발성 메모리로 지칭된다. 휘발성 메모리는, 전술한 아키텍처와 유사한, 비트-레벨 어드레싱 가능성을 가능하게 하는 아키텍처를 가질 수 있다.
프로세서(102)와 메모리(104)는 프로세서(102) 및/또는 메인 메모리(104) 및 컴퓨팅 디바이스(100)의 다른 컴포넌트들과의 입/출력 동작들을 용이하게 하기 위한 회로 및/또는 컴포넌트들로서 구현될 수 있는 I/O 서브시스템(112)을 통해 컴퓨팅 디바이스(100)의 다른 컴포넌트들에 통신가능하게 결합된다. 예를 들어, I/O 서브시스템(112)은 입/출력 동작들을 용이하게 하기 위한 메모리 제어기 허브들, 입/출력 제어 허브들, 통합된 센서 허브들, 펌웨어 디바이스들, 통신 링크들(예를 들어, 포인트-투-포인트 링크들, 버스 링크들, 와이어들, 케이블들, 도광체들(light guides), 인쇄 회로 보드 트레이스들 등) 및/또는 다른 컴포넌트들 및 서브시스템들로서 구현되거나 그렇지 않으면 이들을 포함할 수 있다. 일부 실시예들에서, I/O 서브시스템(112)은 시스템 온 칩(SoC)의 일부를 형성할 수 있고, 단일 칩에, 프로세서(102), 메인 메모리(104), 및 컴퓨팅 디바이스(100)의 다른 컴포넌트들 중 하나 이상과 함께 통합될 수 있다.
데이터 저장 디바이스(114)는, 예를 들어, 메모리 디바이스들 및 회로들, 메모리 카드들, 하드 디스크 드라이브들, 솔리드 스테이트 드라이브들(solid state drives), 또는 다른 데이터 저장 디바이스와 같은, 데이터의 단기간 또는 장기간 저장을 위해 구성되는 임의의 타입의 디바이스로서 구현될 수 있다. 예시적인 실시예에서, 데이터 저장 디바이스(114)는 메모리 제어기(106)와 유사한 메모리 제어기(116), 메모리 매체(110)와 유사한 저장 매체(120), 및 매체 액세스 회로(108)와 유사한 매체 액세스 회로(118)를 포함하고, 매체 액세스 회로(118)는 텐서 로직 유닛(130)과 유사한 텐서 로직 유닛(140), 스크래치 패드들(132)과 유사한 스크래치 패드들(142), ECC 로직 유닛(134)과 유사한 ECC 로직 유닛(144), 및 계산 로직 유닛들(136)과 유사한 계산 로직 유닛들(146)을 포함한다. 또한, 메모리(104)와 유사하게, 저장 매체(120) 및 매체 액세스 회로(118)는 다수의 패키지(170, 172)(예를 들어, 각각 하나 이상의 다이(194, 196)의 세트를 가짐) 및 다수의 DIMM(180)에 존재할 수 있다. 이와 같이, 예시적인 실시예에서, 데이터 저장 디바이스(114)(예를 들어, 매체 액세스 회로(118))는 저장 매체(120)에 저장된 데이터(예를 들어, 행렬 데이터)에 대한 계산 동작들(예를 들어, 텐서 동작들)을 효율적으로 수행할 수 있고, 계산 용량은 추가적인 DIMM들(180)을 추가함으로써 쉽게 스케일링 업될 수 있다. 데이터 저장 디바이스(114)는 데이터 저장 디바이스(114)에 대한 데이터 및 펌웨어 코드를 저장하는 시스템 파티션 및 운영 체제들에 대한 데이터 파일들 및 실행파일들을 저장하는 하나 이상의 운영 체제 파티션을 포함할 수 있다.
통신 회로(122)는 컴퓨팅 디바이스(100)와 다른 디바이스 사이에 네트워크를 통한 통신들을 가능하게 할 수 있는 임의의 통신 회로, 디바이스, 또는 이들의 집합으로서 구현될 수 있다. 통신 회로(122)는 이러한 통신을 실현하기 위해 임의의 하나 이상의 통신 기술(예를 들어, 유선 또는 무선 통신) 및 연관된 프로토콜들(예를 들어, 이더넷, 블루투스®, Wi-Fi®, WiMAX 등)을 사용하도록 구성될 수 있다.
예시적인 통신 회로(122)는 호스트 패브릭 인터페이스(host fabric interface)(HFI)로도 지칭될 수 있는 네트워크 인터페이스 제어기(network interface controller)(NIC)(122)를 포함한다. NIC(124)는 하나 이상의 애드-인-보드(add-in-board), 도터 카드(daughter card), 네트워크 인터페이스 카드, 제어기 칩, 칩셋, 또는 다른 컴퓨팅 디바이스와 접속하기 위해 컴퓨팅 디바이스(100)에 의해 사용될 수 있는 다른 디바이스들로서 구현될 수 있다. 일부 실시예들에서, NIC(124)는 하나 이상의 프로세서를 포함하거나 또는 하나 이상의 프로세서를 또한 포함하는 멀티칩 패키지 상에 포함되는 시스템 온 칩(SoC)의 일부로서 구현될 수 있다. 일부 실시예들에서, NIC(124)는, 둘 다 NIC(124)에 로컬인 로컬 프로세서(도시되지 않음) 및/또는 로컬 메모리(도시되지 않음)를 포함할 수 있다. 이러한 실시예들에서, NIC(124)의 로컬 프로세서는 프로세서(102)의 기능들 중 하나 이상을 수행할 수 있다. 부가적으로 또는 대안적으로, 이러한 실시예들에서, NIC(124)의 로컬 메모리는 보드 레벨, 소켓 레벨, 칩 레벨, 및/또는 다른 레벨들에서 컴퓨팅 디바이스(100)의 하나 이상의 컴포넌트 내로 통합될 수 있다.
이제 도 6을 참조하면, 컴퓨팅 디바이스(100)는 동작시에 효율적인 메모리-내(예를 들어, 메모리(104) 내) 계산 동작들을 수행하기 위한 방법(600)을 실행할 수 있다. 방법(600)은 메모리(104)를 참조하여 설명된다. 그러나, 방법(600)은 데이터 저장 디바이스(114)의 메모리를 사용하여 추가적으로 또는 대안적으로 수행될 수 있다는 점이 이해되어야 한다. 방법(600)은, 컴퓨팅 디바이스(100)(예를 들어, 메모리(104))가 메모리(104)에서의 효율적인 계산 동작들(예를 들어, 텐서 동작들)의 수행을 가능하게 할지를 결정하는 블록(602)으로 시작한다. 컴퓨팅 디바이스(100)는, 매체 액세스 회로(108)가 텐서 로직 유닛(130)을 포함한다는 결정에 응답하여, 구성 설정(예를 들어, 구성 파일 내)이 메모리에서의 효율적인 계산 동작들의 수행을 가능하게 하는 것을 표시한다는 결정에 응답하여, 및/또는 다른 팩터들에 기초하여, 메모리(104)에서의 효율적인 계산 동작들의 수행을 가능하게 할 수 있다.
여하튼, 효율적인 메모리-내 계산 동작들의 수행을 가능하게 하는 결정에 응답하여, 방법(600)은 블록(604)으로 진행하고, 여기서 컴퓨팅 디바이스(100)는 메모리(104)에서의 데이터에 대해 하나 이상의 동작을 수행하라는 요청을 획득할 수 있다. 예를 들어, 블록(606)에 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는, 인공 지능 관련 애플리케이션(예를 들어, 신경 네트워크 또는 다른 머신 학습 구조를 활용하여 학습하고 추론할 수 있는 애플리케이션)을 실행할 수 있는 프로세서(예를 들어, 프로세서(102))로부터 요청을 수신할 수 있다. 블록(608)에 나타낸 바와 같이, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 메모리(104)에서의 동작될 데이터의 위치들(예를 들어, 어드레스들)을 나타내는 디스크립터들(예를 들어, 파라미터들 또는 다른 데이터)을 포함하는 요청을 수신할 수 있다. 블록(610)에 나타낸 바와 같이, 메모리(104)는 메모리(104)에서의 동작될 행렬들의 차원들을 나타내는 디스크립터들을 포함하는 요청을 수신할 수 있다.
후속하여, 방법(600)은 블록(612)으로 진행하고, 여기서 컴퓨팅 디바이스(100)는 메모리(104)에 포함된 매체 액세스 회로(예를 들어, 매체 액세스 회로(108))를 사용하여 메모리(104)에 포함된 메모리 매체(예를 들어, 메모리 매체(110))로부터의 요청된 동작(들)과 연관된 데이터(예를 들어, 동작될 데이터)에 액세스한다. 예시적인 실시예에서, 블록(614)에서 나타낸 바와 같이, 컴퓨팅 디바이스(100)는 상보적 금속 산화물 반도체(complimentary metal oxide semiconductor)(CMOS)(예를 들어, 매체 액세스 회로(108)는 CMOS로부터 형성될 수 있음)를 사용하여 (예를 들어, 메모리 매체(110)로부터의) 데이터에 액세스한다. 추가적으로, 그리고 블록(616)에 나타낸 바와 같이, 예시적인 실시예에서, 메모리(104)(예를 들어, 매체 액세스 회로(108))는 크로스 포인트 아키텍처(예를 들어, 메모리 셀들이 워드 라인들과 비트 라인들의 교차점에 있고 개별적으로 어드레싱 가능하며 비트 저장이 벌크 저항의 변화에 기초하는 아키텍처)를 갖는 메모리 매체(예를 들어, 메모리 매체(110))로부터 데이터를 판독한다. 또한, 블록(618)에 나타낸 바와 같이, 매체 액세스 회로(108)는 3차원 크로스 포인트 아키텍처(예를 들어, 도 2를 참조하여 설명된 바와 같이 타일들의 세트들이 층들로서 적층되는 아키텍처)를 갖는 메모리 매체(예를 들어, 메모리 매체(110))로부터 행렬 데이터를 판독할 수 있다. 다른 실시예들에서, 컴퓨팅 디바이스(100)는 상이한 아키텍처를 갖는 메모리 매체로부터 데이터를 판독할 수 있다.
블록(620)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 메모리 매체(110)의 다수의 파티션으로부터 (예를 들어, 동시에) 데이터를 판독할 수 있다. 그렇게 함에 있어서, 블록(622)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)는 각각의 파티션으로부터 미리 정의된 수의 비트들(예를 들어, 128 비트)을 판독할 수 있다. 블록(624)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 대응하는 파티션들과 연관된 스크래치 패드들 내로 데이터를 판독할 수 있다. 예를 들어, 매체 액세스 회로(108)는 파티션들(311) 중 하나로부터 스크래치 패드(312) 내로 데이터를 판독할 수 있고, 파티션들(321) 중 하나로부터 스크래치 패드(322) 내로 데이터를 판독할 수 있으며, 이와 같이 판독할 수 있다. 데이터를 스크래치 패드 내로 판독함에 있어서, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 각각 블록들(626 및 628)에 나타낸 바와 같이, 레지스터 파일(예를 들어, 레지스터들의 어레이) 또는 정적 랜덤 액세스 메모리(SRAM) 내로 데이터를 판독할 수 있다. 후속하여, 방법(600)은 도 7의 블록(630)으로 진행하며, 여기서 컴퓨팅 디바이스(100)는, 매체 액세스 회로(108)를 사용하여, 메모리 매체(110)로부터 액세스된 데이터에 대해 요청된 동작(들)의 적어도 일부를 수행한다.
이제 도 7을 참조하면, 블록(632)에 나타낸 바와 같이, 요청된 동작(들)의 적어도 일부를 수행함에 있어서, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 매체 액세스 회로(108)에서의 계산 로직 유닛들(136)을 사용하여 동작(들)을 수행한다. 블록(634)에 나타낸 바와 같이, 예시적인 실시예에서, 컴퓨팅 디바이스(100)는 다수의 계산 로직 유닛들(136)에 걸쳐 동시에 동작들(예를 들어, 하나 이상의 행렬의 부분들에 대해 동작하는 것과 같은 요청된 동작의 서브-동작들)을 수행한다. 블록(636)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)는 데이터가 판독된 파티션들과 연관된 계산 로직 유닛들을 사용하여 동작들(예를 들어, 요청된 동작의 서브-동작들)을 수행할 수 있다. 예시적인 실시예에서, 블록(638)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)는 데이터가 판독된 파티션들과 연관된 스크래치 패드(들)(예를 들어, 파티션(311)과 연관된 스크래치 패드들(312, 314, 316), 파티션(321)과 연관된 스크래치 패드들(322, 324, 326) 등) 내로 판독되었던 데이터에 대해 동작들을 수행한다. 블록(640)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)는 다이 또는 패키지(예를 들어, 패키지(402))에 위치한 다수의 계산 로직 유닛들(예를 들어, 계산 로직 유닛들(318, 328, 338))을 사용하여 동작들을 수행할 수 있다. 또한, 블록(642)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)는 DIMM(예를 들어, DIMM(420))의 다수의 다이 또는 패키지(예를 들어, 패키지들(402, 404, 406, 408, 410, 412, 414, 416))에 걸쳐 분산된 다수의 계산 로직 유닛들을 사용하여 동작들을 수행할 수 있다. 또한, 블록(644)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)는 다수의 DIMM들(예를 들어, DIMM들(420, 430))에 걸쳐 분산된 다수의 계산 로직 유닛들을 사용하여 동작들을 수행할 수 있다.
블록(646)에 나타낸 바와 같이, 동작(들)을 수행함에 있어서, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 메모리 매체(110)로부터 액세스된 데이터에 대해 하나 이상의 텐서 동작을 수행할 수 있다. 그렇게 함에 있어서, 블록(648)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 하나 이상의 행렬 곱셈 동작(예를 들어, 입력 행렬 A를 가중 행렬 B와 곱하여 출력 행렬 C를 생성하는 것)을 수행할 수 있다. 블록(650)에 나타낸 바와 같이, 하나 이상의 행렬 곱셈 동작을 수행함에 있어서, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 블록(650)에 나타낸 바와 같이, 하나 이상의 행렬 곱셈-누적 동작을 수행할 수 있다. 다른 실시예들에서, 블록(652)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 데이터에 대해 다른 타입들의 동작들(예를 들어, 텐서 동작들 이외의 동작)을 수행할 수 있다. 예를 들어, 블록(654)에 나타낸 바와 같이, 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 메모리 매체(110)로부터 액세스된 데이터에 대해 하나 이상의 비트단위 동작(bitwise operation)(예를 들어, AND, OR, XOR, NOR과 같은 개별 비트들에 대한 논리 연산)을 수행할 수 있다.
후속하여, 방법(600)은 블록(656)으로 진행하고, 여기서 컴퓨팅 디바이스(100)는 요청된 동작(들)의 수행을 계속하기 위해 추가적인 데이터에 액세스할지를 결정한다. 예를 들어, 텐서 동작이 요청되었고, 텐서 동작과 연관된 행렬 데이터의 일부(예를 들어, 행들 및/또는 열들 전부보다 적은 것)만이 동작되었다면, 컴퓨팅 디바이스(100)는 추가적인 데이터(예를 들어, 추가적인 행렬 데이터)가 요청된 동작을 완료하기 위해 액세스되어야 한다고 결정할 수 있다. 컴퓨팅 디바이스(100)가 추가적인 데이터에 액세스하기로 결정하는 경우, 방법(600)은 추가적인 데이터에 액세스하기 위해 도 6의 블록(612)으로 루프백한다. 그렇지 않으면, 방법(600)은 도 8의 블록(658)으로 진행하고, 여기서 컴퓨팅 디바이스(100)(예를 들어, 매체 액세스 회로(108))는 요청된 동작(들)의 실행으로부터 생성된 결과 데이터를 메모리에(예를 들어, 메모리 매체(110)에) 기입할 수 있다.
이제 도 8을 참조하면, 결과 데이터를 기입함에 있어서, 블록(660)에 나타낸 바와 같이, 매체 액세스 회로(108)는 초기에 결과 데이터를 하나 이상의 스크래치 패드에 기입할 수 있고, 각각의 스크래치 패드는 메모리 매체(110)의 파티션들의 세트와 연관된다(예를 들어, 스크래치 패드(312)로부터의 입력 행렬 A와 스크래치 패드(314)로부터의 가중 행렬 B의 곱셈의 결과를 스크래치 패드(316)에 추가하고, 스크래치 패드(322)로부터의 입력 행렬 A와 스크래치 패드(324)로부터의 가중 행렬 B의 곱셈의 결과를 스크래치 패드(326)에 추가하고, 기타등등). 블록(662)에 나타낸 바와 같이, 매체 액세스 회로(108)는 컨볼루션 신경 네트워크의 층(예를 들어, 후속 층)에 대한 입력 행렬로서 사용될 출력 행렬(예를 들어, 행렬 C)을 각각 유지하기 위해 스크래치 패드(예를 들어, 스크래치 패드들(316, 326, 336))에 결과 데이터를 기입할 수 있다. 블록(664)에 나타낸 바와 같이, 매체 액세스 회로(108)는 스크래치 패드(들)(316, 326, 336)로부터 메모리 매체(110)로(예를 들어, 대응하는 파티션들로) 결과 데이터를 기입할 수 있다. 후속하여, 블록(666)에서, 메모리(104)는 요청된 동작(들)의 완료를 나타내는 데이터를 컴퓨팅 디바이스(100)의 다른 컴포넌트에 제공할 수 있다. 그렇게 함에 있어서, 블록(668)에 나타낸 바와 같이, 메모리(104)는 (예를 들어, 블록(658)으로부터의) 결과 데이터를 애플리케이션(예를 들어, 메모리(104)에서 수행될 동작(들)에 대한 요청을 생성한 애플리케이션)을 실행하는 프로세서(예를 들어, 프로세서(102))에 제공할 수 있다. 블록(670)에 나타낸 바와 같이, 메모리(104)는 인공 지능 동작을 나타내는 결과 데이터를 컴퓨팅 디바이스(100)의 다른 컴포넌트(예를 들어, 프로세서(102))에 제공할 수 있다. 예를 들어, 블록(672)에 나타낸 바와 같이, 메모리(104)는 추론을 나타내는 데이터(예를 들어, 이미지 내의 객체의 식별 등)를 제공할 수 있다. 후속하여, 방법(600)은 도 6의 블록(602)으로 루프백되며, 여기서 컴퓨팅 디바이스(100)는 효율적인 메모리-내 계산 동작들을 계속 가능하게 할지를 결정한다.
예들
본 명세서에 개시된 기술들의 예시적인 예들이 아래에 제공된다. 기술들의 실시예는 아래에 설명되는 예들 중 임의의 하나 이상의 예 및 그의 임의의 조합을 포함할 수 있다.
예 1은 메모리 매체에 결합된 매체 액세스 회로를 포함하는 메모리를 포함하고, 매체 액세스 회로는, 요청된 동작을 수행하기 위해 메모리 매체로부터의 데이터에 액세스하고; 매체 액세스 회로에 포함된 다수의 계산 로직 유닛들 각각을 사용하여, 액세스된 데이터에 대해 요청된 동작을 동시에 수행하고; 요청된 동작의 실행으로부터 생성된 결과 데이터를 메모리 매체에 기입한다.
예 2는 예 1의 발명 대상을 포함하고, 다수의 계산 로직 유닛들 각각을 사용하여, 요청된 동작을 수행하는 것은, 메모리 매체의 상이한 파티션들과 연관된 다수의 계산 로직 유닛들을 사용하여, 요청된 동작을 수행하는 것을 포함한다.
예 3은 예 1 또는 예 2의 발명 대상을 포함하고, 다수의 계산 로직 유닛들 각각을 사용하여, 요청된 동작을 수행하는 것은, 다이 또는 패키지에 위치하는 다수의 계산 로직 유닛들 각각을 사용하여, 요청된 동작을 수행하는 것을 포함한다.
예 4는 예 1 내지 예 3 중 어느 하나의 발명 대상을 포함하고, 다수의 계산 로직 유닛들 각각을 사용하여, 요청된 동작을 수행하는 것은, 듀얼 인-라인 메모리 모듈의 다수의 다이들 또는 패키지들에 위치하는 다수의 계산 로직 유닛들 각각을 사용하여, 요청된 동작을 수행하는 것을 포함한다.
예 5는 예 1 내지 예 4 중 어느 하나의 발명 대상을 포함하고, 다수의 계산 로직 유닛들 각각을 사용하여, 요청된 동작을 수행하는 것은, 다수의 듀얼 인-라인 메모리 모듈들에 걸쳐 분산된 다수의 계산 로직 유닛들 각각을 사용하여, 요청된 동작을 수행하는 것을 포함한다.
예 6은 예 1 내지 예 5 중 어느 하나의 발명 대상을 포함하고, 메모리 매체로부터의 데이터에 액세스하는 것은, 메모리 매체의 다수의 파티션들로부터 데이터를 판독하는 것을 포함한다.
예 7은 예 1 내지 예 6 중 어느 하나의 발명 대상을 포함하고, 메모리 매체로부터의 데이터에 액세스하는 것은, 다수의 파티션들 각각과 연관된 스크래치 패드들 내로 데이터를 판독하는 것을 포함한다.
예 8은 예 1 내지 예 7 중 어느 하나의 발명 대상을 포함하고, 스크래치 패드들 내로 데이터를 판독하는 것은, 매체 액세스 회로의 레지스터 파일들 또는 정적 랜덤 액세스 메모리들 내로 데이터를 판독하는 것을 포함한다.
예 9는 예 1 내지 예 8 중 어느 하나의 발명 대상을 포함하고, 메모리 매체로부터의 데이터에 액세스하는 것은, 3차원 크로스 포인트 아키텍처를 갖는 메모리 매체로부터의 데이터에 액세스하는 것을 포함한다.
예 10은 예 1 내지 예 9 중 어느 하나의 발명 대상을 포함하고, 요청된 동작을 수행하는 것은, 텐서 동작을 수행하는 것을 포함한다.
예 11은 예 1 내지 예 10 중 어느 하나의 발명 대상을 포함하고, 요청된 동작을 수행하는 것은, 행렬 곱셈 동작을 수행하는 것을 포함한다.
예 12는 예 1 내지 예 11 중 어느 하나의 발명 대상을 포함하고, 요청된 동작을 수행하는 것은, 액세스된 데이터에 대해 비트단위 동작을 수행하는 것을 포함한다.
예 13은 예 1 내지 예 12 중 어느 하나의 발명 대상을 포함하고, 매체 액세스 회로는 추가로, 요청된 동작의 완료를 나타내는 데이터를 컴퓨팅 디바이스의 컴포넌트에 제공한다.
예 14는, 메모리에 포함된 매체 액세스 회로에 의해, 요청된 동작을 수행하기 위해 매체 액세스 회로에 결합된 메모리 매체로부터의 데이터에 액세스하는 단계; 매체 액세스 회로 내의 다수의 계산 로직 유닛들 각각에 의해, 액세스된 데이터에 대해 요청된 동작을 동시에 수행하는 단계; 및 매체 액세스 회로에 의해, 메모리 매체에, 요청된 동작의 실행으로부터 생성된 결과 데이터를 기입하는 단계를 포함하는 방법을 포함한다.
예 15는 예 14의 발명 대상을 포함하고, 다수의 계산 로직 유닛들 각각에 의해, 요청된 동작을 수행하는 단계는, 메모리 매체의 상이한 파티션들과 연관된 다수의 계산 로직 유닛들에 의해, 요청된 동작을 수행하는 단계를 포함한다.
예 16은 예 14 또는 예 15의 발명 대상을 포함하고, 다수의 계산 로직 유닛들 각각에 의해, 요청된 동작을 수행하는 단계는, 다이 또는 패키지에 위치하는 다수의 계산 로직 유닛들 각각에 의해, 요청된 동작을 수행하는 단계를 포함한다.
예 17은 예 14 내지 예 16 중 어느 하나의 발명 대상을 포함하고, 다수의 계산 로직 유닛들 각각에 의해, 요청된 동작을 수행하는 단계는, 듀얼 인-라인 메모리 모듈의 다수의 다이들 또는 패키지들에 위치하는 다수의 계산 로직 유닛들 각각에 의해, 요청된 동작을 수행하는 단계를 포함한다.
예 18은 예 14 내지 예 17 중 어느 하나의 발명 대상을 포함하고, 다수의 계산 로직 유닛들 각각에 의해, 요청된 동작을 수행하는 단계는, 다수의 듀얼 인-라인 메모리 모듈들에 걸쳐 분산된 다수의 계산 로직 유닛들 각각에 의해, 요청된 동작을 수행하는 단계를 포함한다.
예 19는 예 14 내지 예 18 중 어느 하나의 발명 대상을 포함하며, 메모리 매체로부터의 데이터에 액세스하는 단계는, 메모리 매체의 다수의 파티션들로부터 데이터를 판독하는 단계를 포함한다.
예 20은 저장된 복수의 명령어를 포함하는 하나 이상의 머신 판독가능 저장 매체를 포함하고, 그 복수의 명령어는, 실행되는 것에 응답하여, 메모리에 포함된 매체 액세스 회로가, 요청된 동작을 수행하기 위해 메모리 매체로부터의 데이터에 액세스하게 하고; 매체 액세스 회로에 포함된 다수의 계산 로직 유닛들 각각을 사용하여, 액세스된 데이터에 대해 요청된 동작을 동시에 수행하게 하고; 요청된 동작의 실행으로부터 생성된 결과 데이터를 메모리 매체에 기입하게 한다.

Claims (20)

  1. 메모리로서,
    메모리 매체(memory media)에 결합된 매체 액세스 회로(media access circuitry)를 포함하고, 상기 매체 액세스 회로는:
    요청된 동작을 수행하기 위해 상기 메모리 매체로부터의 데이터에 액세스하고;
    상기 매체 액세스 회로에 포함된 다수의 계산 로직 유닛들 각각을 사용하여, 상기 액세스된 데이터에 대해 상기 요청된 동작을 동시에 수행하고;
    상기 요청된 동작의 실행으로부터 생성된 결과 데이터를 상기 메모리 매체에 기입하는, 메모리.
  2. 제1항에 있어서, 다수의 계산 로직 유닛들 각각을 사용하여, 상기 요청된 동작을 수행하는 것은, 상기 메모리 매체의 상이한 파티션(partition)들과 연관된 다수의 계산 로직 유닛들을 사용하여 상기 요청된 동작을 수행하는 것을 포함하는, 메모리.
  3. 제1항에 있어서, 다수의 계산 로직 유닛들 각각을 사용하여, 상기 요청된 동작을 수행하는 것은, 다이 또는 패키지에 위치하는 다수의 계산 로직 유닛들 각각을 사용하여, 상기 요청된 동작을 수행하는 것을 포함하는, 메모리.
  4. 제1항에 있어서, 다수의 계산 로직 유닛들 각각을 사용하여, 상기 요청된 동작을 수행하는 것은, 듀얼 인-라인 메모리 모듈의 다수의 다이들 또는 패키지들에 위치하는 다수의 계산 로직 유닛들 각각을 사용하여, 상기 요청된 동작을 수행하는 것을 포함하는, 메모리.
  5. 제1항에 있어서, 다수의 계산 로직 유닛들 각각을 사용하여, 상기 요청된 동작을 수행하는 것은, 다수의 듀얼 인-라인 메모리 모듈들에 걸쳐 분산된 다수의 계산 로직 유닛들 각각을 사용하여, 상기 요청된 동작을 수행하는 것을 포함하는, 메모리.
  6. 제1항에 있어서, 상기 메모리 매체로부터의 데이터에 액세스하는 것은, 상기 메모리 매체의 다수의 파티션들로부터 상기 데이터를 판독하는 것을 포함하는, 메모리.
  7. 제6항에 있어서, 상기 메모리 매체로부터의 데이터에 액세스하는 것은, 상기 다수의 파티션들 각각과 연관된 스크래치 패드들(scratch pads) 내로 상기 데이터를 판독하는 것을 포함하는, 메모리.
  8. 제7항에 있어서, 스크래치 패드들 내로 상기 데이터를 판독하는 것은, 상기 매체 액세스 회로의 레지스터 파일들 또는 정적 랜덤 액세스 메모리들 내로 상기 데이터를 판독하는 것을 포함하는, 메모리.
  9. 제1항에 있어서, 상기 메모리 매체로부터의 데이터에 액세스하는 것은, 3차원 크로스 포인트 아키텍처(three dimensional cross point architecture)를 갖는 메모리 매체로부터의 데이터에 액세스하는 것을 포함하는, 메모리.
  10. 제1항에 있어서, 상기 요청된 동작을 수행하는 것은, 텐서 동작(tensor operation)을 수행하는 것을 포함하는, 메모리.
  11. 제1항에 있어서, 상기 요청된 동작을 수행하는 것은, 행렬 곱셈 동작(matrix multiplication operation)을 수행하는 것을 포함하는, 메모리.
  12. 제1항에 있어서, 상기 요청된 동작을 수행하는 것은, 액세스된 데이터에 대해 비트단위 동작(bitwise operation)을 수행하는 것을 포함하는, 메모리.
  13. 제1항에 있어서, 상기 매체 액세스 회로는 추가로, 상기 요청된 동작의 완료를 나타내는 데이터를 컴퓨팅 디바이스의 컴포넌트에 제공하는, 메모리.
  14. 방법으로서,
    메모리에 포함된 매체 액세스 회로에 의해, 요청된 동작을 수행하기 위해 상기 매체 액세스 회로에 결합된 메모리 매체로부터의 데이터에 액세스하는 단계;
    상기 매체 액세스 회로 내의 다수의 계산 로직 유닛들 각각에 의해, 상기 액세스된 데이터에 대해 상기 요청된 동작을 동시에 수행하는 단계; 및
    상기 매체 액세스 회로에 의해, 상기 메모리 매체에, 상기 요청된 동작의 실행으로부터 생성된 결과 데이터를 기입하는 단계
    를 포함하는 방법.
  15. 제14항에 있어서, 다수의 계산 로직 유닛들 각각에 의해, 상기 요청된 동작을 수행하는 단계는, 상기 메모리 매체의 상이한 파티션들과 연관된 다수의 계산 로직 유닛들에 의해, 상기 요청된 동작을 수행하는 단계를 포함하는, 방법.
  16. 제14항에 있어서, 다수의 계산 로직 유닛들 각각에 의해, 상기 요청된 동작을 수행하는 단계는, 다이 또는 패키지에 위치하는 다수의 계산 로직 유닛들 각각에 의해, 상기 요청된 동작을 수행하는 단계를 포함하는, 방법.
  17. 제14항에 있어서, 다수의 계산 로직 유닛들 각각에 의해, 상기 요청된 동작을 수행하는 단계는, 듀얼 인-라인 메모리 모듈의 다수의 다이들 또는 패키지들에 위치하는 다수의 계산 로직 유닛들 각각에 의해, 상기 요청된 동작을 수행하는 단계를 포함하는, 방법.
  18. 제14항에 있어서, 다수의 계산 로직 유닛들 각각에 의해, 상기 요청된 동작을 수행하는 단계는, 다수의 듀얼 인-라인 메모리 모듈들에 걸쳐 분산된 다수의 계산 로직 유닛들 각각에 의해, 상기 요청된 동작을 수행하는 단계를 포함하는, 방법.
  19. 제14항에 있어서, 상기 메모리 매체로부터의 데이터에 액세스하는 단계는, 상기 메모리 매체의 다수의 파티션들로부터 상기 데이터를 판독하는 단계를 포함하는, 방법.
  20. 저장된 복수의 명령어를 포함하는 하나 이상의 머신 판독가능 저장 매체로서,
    상기 복수의 명령어는, 실행되는 것에 응답하여, 메모리에 포함된 매체 액세스 회로가:
    요청된 동작을 수행하기 위해 상기 메모리 매체로부터의 데이터에 액세스하게 하고;
    상기 매체 액세스 회로에 포함된 다수의 계산 로직 유닛들 각각을 사용하여, 상기 액세스된 데이터에 대해 상기 요청된 동작을 동시에 수행하게 하고;
    상기 요청된 동작의 실행으로부터 생성된 결과 데이터를 상기 메모리 매체에 기입하게 하는, 하나 이상의 머신 판독가능 저장 매체.
KR1020200024139A 2019-03-29 2020-02-27 메모리에서 계산 동작들을 수행하기 위한 스케일링가능 아키텍처를 제공하는 기술들 KR20200115114A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/368,983 US10534747B2 (en) 2019-03-29 2019-03-29 Technologies for providing a scalable architecture for performing compute operations in memory
US16/368,983 2019-03-29

Publications (1)

Publication Number Publication Date
KR20200115114A true KR20200115114A (ko) 2020-10-07

Family

ID=67299999

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200024139A KR20200115114A (ko) 2019-03-29 2020-02-27 메모리에서 계산 동작들을 수행하기 위한 스케일링가능 아키텍처를 제공하는 기술들

Country Status (5)

Country Link
US (2) US10534747B2 (ko)
EP (1) EP3716101A3 (ko)
JP (1) JP2020166828A (ko)
KR (1) KR20200115114A (ko)
CN (1) CN111752744A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US10534747B2 (en) * 2019-03-29 2020-01-14 Intel Corporation Technologies for providing a scalable architecture for performing compute operations in memory
US11301167B2 (en) * 2019-05-16 2022-04-12 Intel Corporation Technologies for providing multiple tier memory media management
KR20210093521A (ko) 2020-01-20 2021-07-28 삼성전자주식회사 고대역폭 메모리 및 이를 포함하는 시스템
US11467834B2 (en) * 2020-04-01 2022-10-11 Samsung Electronics Co., Ltd. In-memory computing with cache coherent protocol

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192571A1 (en) * 2006-02-14 2007-08-16 Feghali Wajdi K Programmable processing unit providing concurrent datapath operation of multiple instructions
US9122492B2 (en) * 2010-10-25 2015-09-01 Wms Gaming, Inc. Bios used in gaming machine supporting pluralaties of modules by utilizing subroutines of the bios code
EP3031033B1 (en) * 2013-08-06 2018-09-05 Flir Systems, Inc. Vector processing architectures for infrared camera electronics
US9286216B2 (en) * 2014-01-16 2016-03-15 Carnegie Mellon University 3DIC memory chips including computational logic-in-memory for performing accelerated data processing
US11126549B2 (en) 2016-03-31 2021-09-21 Hewlett Packard Enterprise Development Lp Processing in-memory architectures for performing logical operations
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
GB2568776B (en) * 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
US10534747B2 (en) * 2019-03-29 2020-01-14 Intel Corporation Technologies for providing a scalable architecture for performing compute operations in memory

Also Published As

Publication number Publication date
US20190227981A1 (en) 2019-07-25
CN111752744A (zh) 2020-10-09
US11080226B2 (en) 2021-08-03
US20200311019A1 (en) 2020-10-01
US10534747B2 (en) 2020-01-14
EP3716101A2 (en) 2020-09-30
JP2020166828A (ja) 2020-10-08
EP3716101A3 (en) 2020-10-07

Similar Documents

Publication Publication Date Title
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
EP3739456A1 (en) Technologies for providing multiple tier memory media management
EP3754563A1 (en) Technologies for performing in-memory training data augmentation for artificial intelligence
US11307977B2 (en) Technologies for direct matrix read and write operations
US11237903B2 (en) Technologies for providing ECC pre-provisioning and handling for cross-point memory and compute operations
EP3731096A1 (en) Technologies for providing error correction for row direction and column direction in a cross point memory
EP3739457B1 (en) Technologies for performing macro operations in memory
EP3901775A1 (en) Technologies for media management in column-addressable memory media systems
US11392494B2 (en) Technologies for performant column read operations on clustered data in a dimm architecture
US20190227750A1 (en) Technologies for performing tensor operations in memory
EP3716076B1 (en) Technologies for providing high efficiency compute architecture on cross point memory for artificial intelligence operations
CN111796964A (zh) 用于提供多级纠错的技术
US11182158B2 (en) Technologies for providing adaptive memory media management
CN112068767A (zh) 在不改变介质层的情况下将计算能力添加到存储器设备的技术
US11593263B2 (en) Technologies to address individual bits in memory
US20240086344A1 (en) Input/output sequencer instruction set processing