[go: up one dir, main page]

KR102819857B1 - 시공간 융합-곱하기-더하기 및 관련 시스템, 방법 및 디바이스 - Google Patents

시공간 융합-곱하기-더하기 및 관련 시스템, 방법 및 디바이스 Download PDF

Info

Publication number
KR102819857B1
KR102819857B1 KR1020227010818A KR20227010818A KR102819857B1 KR 102819857 B1 KR102819857 B1 KR 102819857B1 KR 1020227010818 A KR1020227010818 A KR 1020227010818A KR 20227010818 A KR20227010818 A KR 20227010818A KR 102819857 B1 KR102819857 B1 KR 102819857B1
Authority
KR
South Korea
Prior art keywords
bit
memory
line
data line
access
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020227010818A
Other languages
English (en)
Other versions
KR20220053017A (ko
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 KR20220053017A publication Critical patent/KR20220053017A/ko
Application granted granted Critical
Publication of KR102819857B1 publication Critical patent/KR102819857B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)

Abstract

동작 메모리 시스템의 시스템, 장치, 및 방법이 기재된다. 프로세싱-인-메모리 가능 메모리 디바이스가 또한 기재되며, 상기 메모리 디바이스에서 융합-곱하기-더하기 연산을 수행하는 방법이 기재된다. 동일하거나 상이한 액세스 라인을 활성화함으로써 하나 이상의 메모리 어레이의 하나 이상의 부분에 저장된 비트의 비트 위치가 데이터 라인을 통해 액세스될 수 있다. 데이터 라인에 작동 가능하게 연결된 감지 회로가 데이터 라인의 액세스된 비트 위치의 상태(비제한적 예를 들면, 논리 "1"인 비트의 수의 카운트)를 결정하도록 임시로 형성 및 측정될 수 있고, 상태 정보가 계산 결과를 결정하도록 사용될 수 있다.

Description

시공간 융합-곱하기-더하기 및 관련 시스템, 방법 및 디바이스
우선권 주장
본 출원은, 특허 협력 조약의 8조 하에서, 2019년 09월 05일에 출원된 미국 가특허 출원 번호 62/896,242 발명의 명칭 "Spatiotemporal Fused-Multiply-Add, and Related Systems, Methods and Devices" 및 2020년 05월 29일에 출원된 미국 특허 출원 번호 16/888,345 "Spatiotemporal Fused-Multiply-Add, and Related Systems, Methods and Devices"의 우선권을 주장하는, 대한민국을 지정국으로 하며 2021년 03월 11일에 영어로 국제 특허 공개 번호 WO US2020/070372 A1로 공개된 2020년 08월 05일에 출원된 국제 특허 출원 PCT/US2020/070372의 국내 단계 진입 출원이다.
기술분야
본 개시 내용의 실시예는 프로세싱-인-메모리(processing-in-memory)와 관련되고 더 구체적으로 메모리 어레이 상에서의 프로세싱-인-메모리 내적 연산과 관련된다. 더 구체적으로, 일부 실시예는 프로세싱-인-메모리 가능 메모리 디바이스 내에서 내적 연산을 수행하기 위한 방법과 관련되고, 관련 메모리 디바이스, 메모리 시스템, 및 전자 시스템과 관련된다. 더 구체적으로, 일부 실시예는 프로세스-인-메모리 가능 메모리 디바이스 내에서 융합-곱하기-더하기(fused-multiply-add) 연산을 수행하는 방법과 관련되며, 관련 메모리 디바이스, 메모리 시스템 및 전자 시스템과 관련된다.
메모리 디바이스는 일반적으로 컴퓨터 또는 그 밖의 다른 전자 시스템의 내부, 반도체-기반, 집적 회로로서 제공된다. 여러 다른 유형의 메모리, 가령, 휘발성 및 비휘발성 메모리가 존재한다. 파워 사이클링된 후 저장된 정보를 불러올 수 있는 비휘발성 메모리는 플래시 메모리, 가령, NAND 또는 NOR 플래시 메모리, 3D XPoint 메모리 및 ReRAM를 포함할 수 있으나, 이에 한정되지 않는다. 휘발성 메모리는 자신의 데이터(비제한적 예를 들면, 호스트 데이터, 에러 데이터 등)를 유지하기 위해 전력을 필요로 할 수 있으며 랜덤 액세스 메모리(RAM: random-access memory), 동적 랜덤 액세스 메모리(DRAM: dynamic random access memory), 정적 랜덤 액세스 메모리(SRAM: static random access memory), 동기식 동적 랜덤 액세스 메모리(SDRAM: synchronous dynamic random access memory), 콘텐츠 주소지정 메모리(CAM: content addressable memory) 및 사이리스터 랜덤 액세스 메모리(TRAM: thyristor random access memory) 등을 포함한다.
전자 시스템은 종종, 명령을 불러오고 실행시켜 실행된 명령의 결과를 적절한 위치에 저장할 수 있는 다수의 처리 자원(비제한적 예를 들면, 하나 이상의 프로세서)을 포함한다. 프로세서는 예를 들어 데이터(비제한적 예를 들면, 하나 이상의 피연산자)에 연산을 수행함으로써 명령을 실행하는 데 사용될 수 있는 다수의 기능 유닛, 가령, 산술 논리 유닛(ALU) 회로, 부동 소수점 유닛(FPU) 회로, 및 조합 논리 블록을 포함할 수 있다. 본 명세서에서 사용될 때, 동작은 예를 들어, 부울 연산, 가령, AND, OR, NOT, NOT, NAND, NOR, 및 XOR 및/또는 그 밖의 다른 연산(비제한적 예를 들면, 반전, 시프트, 산술, 통계, 그 밖의 다른 많은 가능한 연산)을 포함할 수 있다. 예를 들어, 다수의 연산을 통해 피연산자에 산술 연산, 가령, 더하기, 빼기, 곱하기, 및 나누기를 수행하기 위해 기능 유닛 회로가 사용될 수 있다.
전자 시스템의 다수의 구성요소가 실행을 위해 기능 유닛 회로에 명령을 제공하는 데 관련될 수 있다. 명령은, 예를 들어, 프로세싱 자원, 가령, 제어기 및/또는 호스트 프로세서에 의해 실행될 수 있다. 데이터(비제한적 예를 들면, 명령이 실행될 수 있는 데이터)가 기능 유닛 회로에 의해 액세스 가능한 메모리 어레이에 저장될 수 있다. 명령 및/또는 데이터가 메모리 어레이로부터 불러와질 수 있고 기능 유닛 회로가 데이터에 대해 명령을 실행하기 시작하기 전에 시퀀싱 및/또는 버퍼링될 수 있다.
하나 이상의 예시가 방법과 관련되며, 상기 방법은 메모리 어레이의 제1 부분에 저장된 피연산자의 제1 비트의 제1 비트 위치를 액세스를 위해 선택하는 단계를 포함하며, 제1 비트는 제1 데이터 라인을 통해 액세스 가능하다. 방법은 또한 선택된 제1 비트 위치와 연관된 제1 액세스 라인을 활성화하는 단계를 포함한다. 상기 방법은 또한 피연산자의 제1 비트를 액세스하는 단계를 포함한다. 방법은 또한 액세스된 제1 비트에 응답하여 계산 결과의 적어도 일부를 수신하는 단계를 포함한다.
상기 방법은 선택적으로, 피연산자의 제1 비트 위치 중 연산자의 제1 비트 위치의 비트의 값에 응답하는 제1 비트 위치를 선택하는 단계, 및 상기 피연산자의 제1 비트 위치 중 연산자의 제2 비트 위치의 비트의 값에 응답하는 제2 비트 위치를 선택하는 단계를 더 포함한다. 상기 방법은 선택적으로, 특정 비트 값을 갖는 액세스되는 제1 비트의 수에 적어도 부분적으로 기초하여 부분 계산 결과를 생성하는 단계를 더 포함한다. 상기 방법에서 부분 계산 결과를 생성하는 것이 선택적으로, 합산 결과 및 캐리-오버를 생성하는 것을 포함한다. 상기 방법은 피연산자의 제2 비트의 제2 비트 위치를 액세스를 위해 선택하는 단계를 더 포함한다. 상기 방법은 선택적으로, 선택된 제2 비트 위치와 연관된 제2 액세스 라인을 활성화하는 단계를 포함한다. 상기 방법은 또한 활성화된 제2 액세스 라인에 응답하여 피연산자의 제2 비트를 액세스하는 단계를 포함할 수 있다. 상기 방법은 선택적으로, 액세스된 제2 비트에 응답하여 제1 부분 계산 결과를 수신하는 단계를 더 포함한다. 상기 방법은 선택적으로, 액세스된 제2 비트에 응답하여 제2 부분 계산 결과를 수신하는 단계를 포함한다. 상기 방법은 선택적으로 제1 부분 계산 결과 및 제2 부분 계산 결과를 결합하는 단계를 포함한다. 상기 방법은 선택적으로, 제1 데이터 라인, 메모리 요소, 제1 액세스 라인, 및 이들의 임의의 조합 또는 부분조합 중 하나 이상을 이용해 제1 비트 위치의 제1 데이터 라인을 액세스하는 단계를 더 포함한다. 상기 방법은 선택적으로 제1 데이터 라인, 메모리 요소, 및 제1 액세스 라인을 포함하는 병렬 저항 네트워크를 이용해 각자의 제1 비트 위치의 제1 데이터 라인을 액세스하는 단계를 더 포함한다. 상기 방법에서, 제1 데이터 라인을 액세스하는 단계는 제1 개수의 직렬 연결된 메모리 요소를 로우(low) 임피던스 모드로 배치하는 단계, 및 제2 개수의 직렬 연결된 메모리 요소가 디폴트 임피던스 모드에 있는 동안, 제2 개수의 직렬 연결된 메모리 요소를 액세스하는 단계, 및 특정 비트 값을 갖는 액세스되는 직렬 연결된 메모리 요소의 제2 개수를 결정하는 단계를 포함한다. 상기 방법은 선택적으로, 제1 액세스 라인을 특정 레벨로 연결하는 단계를 더 포함한다. 상기 방법은 선택적으로, 드라이버 신호를 제1 데이터 라인으로 제공하는 단계를 포함한다. 상기 방법은 제1 데이터 라인의 신호를 감지하는 단계를 더 포함할 수 있다. 상기 방법은 선택적으로 제1 데이터 라인의 비트의 그룹을 액세스하는 단계를 포함한다. 상기 방법은 제1 데이터 라인의 비트의 액세스된 그룹의 상태에 응답하여 중간 부분 계산을 수신하는 단계를 더 포함할 수 있다. 상기 방법은 중간 부분 계산을 결합하여 부분 계산 결과를 획득하는 단계를 더 포함할 수 있다. 상기 방법은 선택적으로, 메모리 어레이의 제2 부분에 저장된 제2 피연산자의 제1 비트 위치에서의 제2 비트를 액세스하는 단계 - 상기 제2 비트는 활성화된 제1 액세스 라인에 응답하여 제2 데이터 라인을 통해 액세스 가능함 - 를 더 포함할 수 있다. 상기 방법은 모든 연산자 시퀀스에 공통된 비트를 출력하는 단계를 더 포함한다. 상기 방법은 선택적으로 고유 연산자를 피연산자와 함께 할당하는 단계를 포함한다. 상기 방법은 연산자 비트가 논리 하이라고 결정하는 것에 응답하여 액세스 라인을 활성화하는 단계를 더 포함할 수 있다.
하나 이상의 예시는 데이터 라인을 포함하는 시스템과 관련된다. 시스템은 또한, 액세스 라인, 데이터 라인에 연결된 비트 정량화기 - 비트 정량화기는 데이터 라인의 하나 이상의 상태를 결정하도록 구성됨 - , 및 데이터 라인의 하나 이상의 상태에 응답하여 계산 결과를 제공하도록 구성된 계산 유닛을 포함한다.
시스템은 선택적으로, 액세스 라인 중 하나 이상을 활성화하도록 구성된 비트 정렬기를 더 포함한다. 시스템에서, 선택적으로, 상기 액세스 라인은 특정 레벨에 작동 가능하게 연결됨으로써 활성화되도록 구성된다. 시스템에서, 선택적으로 계산 유닛은 데이터 라인의 상태에 대응하는 부분 계산 결과를 비동기식으로 제공하도록 구성된다. 시스템에서, 선택적으로, 비트 정량화기는 전압 분배기를 포함한다. 시스템은 입력 양자화기를 포함할 수 있다. 시스템은 선택적으로 인코더를 더 포함할 수 있다. 시스템은 선택적으로 데이터 라인 및 액세스 라인을 형성하는 복수의 직렬 연결된 메모리 요소를 포함할 수 있다. 시스템에서, 선택적으로, 계산 유닛은 데이터 라인의 각자의 상태에 대응하는 부분 계산 결과를 획득하고, 부분 계산 결과들을 조합하여 계산 결과를 획득하도록 구성된다. 시스템은 메모리를 더 포함하며, 계산 유닛은 메모리에서 중간 부분 계산을 저장하도록 구성된다. 시스템은 선택적으로 메모리에 저장된 중간 부분 계산에 적어도 부분적으로 기초하여 부분 계산을 획득할 수 있다.
하나 이상의 예시가 제1 라인을 포함하는 회로와 관련된다. 회로는 상기 제1 라인에 연결되도록 구성된 복수의 제2 라인을 더 포함하며 복수의 제2 라인의 각각의 라인은 메모리 요소를 통해 제1 라인에 연결되도록 구성되고 제1 라인을 특정된 전압 레벨로 번갈아 연결 및 연결해제하도록 구성된 활성화 요소를 포함한다. 회로는 제1 라인을 기준 노드에 작동 가능하게 연결함으로써 활성화된 병렬 네트워크를 통해 회로망이 전압을 측정할 수 있게 하도록 배열된 단자에 연결된 회로망을 더 포함한다.
회로에서, 선택적으로, 기준 노드는 병렬 네트워크에 대해 배열되어, 전압 측정 동안, 기준 노드가 전압 분배기로서 동작하게 한다.
임의의 특정 요소 또는 동작의 언급을 용이하게 식별하기 위해, 도면부호의 최상위 숫자가 해당 요소가 처음 소개된 도면 번호를 지칭한다.
도 1은 본 개시 내용의 다수의 실시예에 따른 메모리 디바이스를 포함하는 시스템의 블록도이다.
도 2는 하나 이상의 실시예에 따른 시스템(200)의 기능 블록도를 도시한다.
도 3은 하나 이상의 실시예에 따른 시공간 FMA의 다이어그램을 나타낸다.
도 4는 하나 이상의 실시예에 따른, 저항성 메모리를 나타내는 회로의 회로도를 나타낸다.
도 5는 하나 이상의 실시예에 따른 감지 증폭 제어기의 기능 블록도를 나타낸다.
도 6은 하나 이상의 실시예에 따른, 시공간 FMA 를 수행하는 데 사용되는 감지 회로에 대한 회로도를 나타낸다.
도 7은 하나 이상의 실시예에 따른, 시공간 FMA 를 수행하는 데 사용되는 감지 회로에 대한 회로도를 나타낸다.
도 8은 하나 이상의 실시예에 따른, NAND 스트링 유형 메모리를 나타내는 회로의 회로도를 나타낸다.
도 9는 하나 이상의 실시예에 따른, 시공간 FMA 를 수행하는 데 사용되는 감지 회로에 대한 회로도를 나타낸다.
도 10은 하나 이상의 실시예에 따른, 시공간 FMA를 수행하기 위한 감지 증폭기에 포함될 수 있는 집적 ADC의 기능 블록도를 나타낸다.
도 11은 하나 이상의 실시예에 따른 시공간 FMA을 수행하기 위한 프로세스를 나타낸다.
도 12는 하나 이상의 실시예에 따른 시공간 FMA을 수행하기 위한 프로세스를 나타낸다.
융합-곱하기-더하기(FMA: fused-multiply-add) 및 행렬 곱셈 연산이 많은 경우에서, 가령, 머신 러닝, 이미지 처리, 인공 지능, 시스템 모델링(비제한적 예를 들면, 전기 시스템, 기계 시스템 등), 및 그 밖의 다른 많은 경우에서 사용된다. 이들 연산의 로직이 비교적 단순할 수 있다(비제한적 예를 들면, 곱하기와 누산). 그러나 종래의 컴퓨터 기반 계산이 프로세서 및 메모리 집약적 연산, 가령, 계산 코어와 메모리 어레이 사이에 많은 양의 데이터를 전송하는 것을 포함할 수 있다.
많은 경우, 프로세싱 자원(비제한적 예를 들면, 프로세서 및 연관된 기능 유닛 회로)이 메모리 어레이 외부에 있을 수 있고, 프로세싱 자원과 메모리 어레이 간 버스를 통해 데이터가 액세스되어 명령의 세트를 실행할 수 있다. 프로세서가 메모리 내부에서 및/또는 메모리 근처에서(비제한적 예를 들면, 메모리 어레이와 동일한 칩 상에서 직접) 구현될 수 있는 프로세서-인-메모리(PIM) 디바이스에서 프로세싱 성능이 개선될 수 있다. PIM 디바이스는 외부 통신을 감소시키고 제거함으로써 시간을 절약 및/또는 전력을 보존할 수 있다.
본 명세서에 기재된 기술이 프로세싱 인 스토리지(비제한적 예를 들면, 프로세싱 인 NAND 또는 NOR 플래시, 3D XPoint™ (Micron Technology, Inc.의 상용화된 3D 크로스포인트 메모리 디바이스) 등에도 적용 가능할 수 있다. PIM은 메모리에서의 계산(compute in memory) 또는 스토리지에서의 계산(compute in storage)이라고도 지칭될 수 있다. 다시 말해서, 본 개시 내용은 일부 아키텍처에서 CPU, GPU, GPGPU, FPGA, ASIC 등과 구별되는 메모리 또는 스토리지와 같은 데이터를 저장하거나 구성하는 것과 종종 연관된 디바이스에서의 처리 또는 계산을 고려힌다.
도 1은 본 개시 내용의 다수의 실시예에 따른 메모리 디바이스(120)를 포함하는 시스템(100)의 블록도이다. 본 명세서에서 "PIM 가능 디바이스" 또는 "PIM 가능 메모리 디바이스"로도 지칭될 수 있는 메모리 디바이스(120)는 임의의 적절한 메모리 디바이스를 포함할 수 있다. 예를 들어, 메모리 디바이스(120)는 휘발성 메모리(비제한적 예를 들면, RAM, DRAM) 및/또는 비휘발성 메모리(비제한적 예를 들어, 플래시 메모리, 크로스포인트 메모리 디바이스, 가령, 3D 크로스포인트 메모리 디바이스)를 포함할 수 있다. 메모리 디바이스(120)는 이하에서 더 상세히 설명되는 바와 같이 감지 회로에 결합된 메모리 어레이(130)(즉, 메모리 셀을 포함함)를 포함할 수 있다. 일부 실시예에 따르면, 메모리 디바이스(120)는 뱅크, 랭크, 데크, 플레인, 블록, 세그먼트 또는 일부 다른 형태로 구성된 다중 메모리 어레이(130)를 포함할 수 있다.
시스템(100)은 메모리 디바이스(120)에 연결된 호스트(111)를 더 포함한다. 호스트(111)는 다양한 다른 유형의 호스트 중에서 개인용 랩톱 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 스마트폰, 또는 메모리 카드 판독기와 같은 호스트 시스템을 포함할 수 있다. 호스트(111)는 시스템 마더보드 및/또는 백플레인을 포함할 수 있고 다수의 프로세싱 자원(비제한적 예를 들면, 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로)를 포함할 수 있다. 시스템(100)이 개별 집적 회로를 포함할 수 있거나, 호스트(111)와 메모리 디바이스(120) 모두는 동일한 집적 회로의 일부일 수 있다(비제한적 예를 들면, 동일한 칩 상에 있을 수 있다). 시스템(100)은 예를 들어, 서버 시스템 및/또는 고성능 컴퓨팅(HPC) 시스템 및/또는 그 일부를 포함할 수 있다.
호스트(111)는 PIM 제어 구성요소(비제한적 예를 들면, 제어 로직(131), 시퀀서(132)), 채널 제어기(143), 및 메모리 관리 유닛(MMU) 제어기(134)를 포함하는 다양한 구성요소를 포함할 수 있다. 제어 로직(131)은 실행 중인 PIM 프로그램과 연관된 제어 흐름 커맨드를 실행하고 복합 커맨드를 시퀀스(132)로 제공하도록 구성될 수 있다. 제어 로직(131)은 시퀀스(132)로 전송된 DDR 커맨드와 상이한 커맨드를 포함하는 복합 연산 PIM 커맨드의 확장 세트를 생성하고 발행하도록 구성된 RISC 유형 제어기거나 이를 포함할 수 있다. 일부 실시예에서, 제어 로직(131)은 비트 벡터 연산이 메모리 디바이스(120) 상에서 수행되게 하도록 복합 연산 커맨드를 발행하도록 구성될 수 있다. 일부 실시예에서, 복합 연산 커맨드는 제어 로직(131)으로부터 메모리 디바이스(120)로 (비제한적 예를 들면, 시퀀서(132) 및 채널(157)을 통해) 전송될 수 있다.
제어 로직(131)은, 일부 실시예에서, 마이크로코드 명령을 시퀀서(132)에 의해 구현되는 비트 벡터 연산 수행과 연관된 마이크로코드 함수 호출일 수 있는 함수 호출로 디코딩할 수 있다. 마이크로코드 함수 호출은 시퀀서(132)가 메모리 디바이스(120)가 감지 회로, 가령, 감지 회로(150)를 이용해 특정 비트 벡터 연산을 수행하게 하도록 수신 및/또는 실행하는 연산일 수 있다.
도 1에 나타난 바와 같이, 제어 로직(131) 및 MMU 제어기(134)가 호스트(111) 상에 위치하며, 이로써 제어 로직(131) 및/또는 MMU 제어기(134)가 명령을 메모리 디바이스(120)로 전송하기 전에 호스트(111) 상에 저장된 가상 주소를 액세스하고 가상-물리 주소 분해(비제한적 예를 들면, 호스트(111) 상에서 실행되는 애플리케이션과 연관된 주소 공간의 가상 주소를 메모리 디바이스(120)의 실제 물리 주소로 변환)를 수행할 수 있다. 메모리 디바이스(120)에 저장된 주소 변환 테이블(비제한적 예를 들면, 페이지 테이블)을 검색함으로써 또는 메모리 디바이스(120) 상에서 동일한 것을 수행함으로써 변환이 호스트에서 수행될 수 있다. 일부 실시예에서, 제어 로직(131) 및/또는 시퀀서(132)는 메모리 디바이스(120), 예를 들어 제어기(140) 또는 행 디코더(146)에 위치한다. 또 다른 실시예에서, 제어 로직(131), 시퀀서(132), 또는 MMU 제어기(134)가 그들의 기능의 일부가 호스트(111) 상에 위치하고 다른 부분이 메모리 디바이스(120)에 위치하도록 분산될 수 있다.
본 명세서에 사용될 때, "비트 벡터"는 행(비제한적 예를 들면, 수평으로 배향)으로 또는 열(비제한적 예를 들면, 수직으로 배향)로 물리적으로 연속되는지에 무관하게, 물리적으로 연속된 비트 수를 지칭할 수 있다. PIM 가능 디바이스는 물리 주소 공간의 다수의 연속 부분(비제한적 예를 들면, "청크(chunk)")에서 비트 벡터 연산, 가령, 논리 연산 및/또는 전송 연산을 수행하도록 구성될 수 있다. 비제한적인 예로서, 물리적 주소 공간의 청크는 256비트의 비트 길이를 가질 수 있다. 청크는 가상 주소 공간의 다른 청크에 순차적으로 인접하거나 인접하지 않을 수 있지만, 메모리 페이지 범위 내에서는 인접할 것이다. 개시된 실시예에서, PIM 가능 디바이스는 가상 페이지의 가상 주소를 물리 페이지의 물리 주소로 변환한 후 가상 주소 공간에서 상기 동작을 수행하도록 구성될 수 있다.
(도 1에 도시된 바와 같이) 호스트(111)에 상주할 수 있는 MMU 제어기(134)는 가상 메모리 주소(비제한적 예를 들면, 호스트(111)와 연관된 주소)의 물리 주소(비제한적 예를 들면, 메모리 주소(120)와 연관된 주소)로의 변환을 수행하는 것을 담당할 수 있다. MMU 제어기(134)는 또한 메모리 보호 동작, 캐시 제어, 및/또는 버스 중재 동작을 수행할 수 있다.
타이밍 회로(133)는 논리 연산의 성능을 조정하기 위한 타이밍을 제공할 수 있고 충돌 없는 액세스를 어레이, 가령 도 1의 메모리 어레이(130)로 제공하는 역할을 할 수 있다. 다양한 실시예에서, 제어기(140) 및/또는 타이밍 관리 회로(135)는 상태 정보를 생성할 수 있으며, 상기 상태 정보는 예를 들어 채널(157)을 통해 호스트(111)로 또는 호스트로부터 전송될 수 있다. 채널(157)은 호스트(111)와 메모리 디바이스(120), 메모리 액세스 디바이스 또는 또 다른 메모리 인터페이스 간에 커맨드를 전송하는 데 사용될 수 있는 메모리 인터페이스(비제한적 예를 들면, 제어 버스(154))에 독립적일 수 있다. 메모리 인터페이스의 비제한적 예시는 DDR(double data rate) 메모리 인터페이스, PCIe(peripheral component interconnect express) 메모리 인터페이스, CAPI(coherent accelerator processor interface), CXL(compute express link), CCIX(cache coherent interconnect for accelerator), 이의 조합 및 부분조합을 포함한다.
비제한적인 예로서, DDR 메모리 인터페이스(비제한적 예를 들면, 제어 버스(154))는 호스트(111)와 메모리 디바이스(120) 사이에서 DDR 커맨드를 전송(비제한적 예를 들면, 전달)하기 위해 사용될 수 있다. 즉, 일부 실시예에서, 채널(157)이 호스트(111)로부터 메모리 디바이스(120)로의 비트 벡터 연산의 수행을 야기하기 위한 커맨드를 전송하는 데 사용될 수 있으며, 제어 버스(154)는 DRAM 커맨드(또는 또 다른 유형의 메모리 인터페이스의 커맨드)를 호스트(111)로부터 메모리 디바이스(120)로 전송하는 데 사용될 수 있다. 일부 실시예에서, 제어 버스(154)를 통해 전송되는 DRAM 커맨드(또는 그 밖의 다른 유형의 커맨드)가 DRAM, 비제한적 예를 들면, DDR1 SDRAM, DDR2 SDRAM, DDR3 SDRAM, DDR4, DDR5 및 그 밖의 다른 버전의 DDR 유형의 프로토콜의 동작을 제어하기 위한 커맨드(또는 다른 유형의 메모리, 메모리 액세스 디바이스, 또는 메모리 인터페이스를 제어하기 위한 커맨드)일 수 있다. 다른 실시예에서, 메모리 디바이스(120)는 채널(157)을 통해 동작의 준비 상태(readiness)에 대해 호스트에 시그널링할 수 있다. 일부 실시예에서, 채널(157)은 제어 버스(154) 및/또는 데이터 버스(156)와 결합된다. 또한, 일부 실시예에서, 호스트(111)는 다중 채널 및/또는 제어 버스를 갖는 다중 메모리 디바이스(120)를 포함할 수 있다.
일부 실시예에서, 시퀀서(132)는 논리 연산 커맨드를 연산하도록 구성된 명령 제어기, 가령, VLIW(very large instruction word) 유형 제어기 또는 SIMD(single instruction multiple data) 유형 제어기를 포함할 수 있고 제어 로직(131)은 호스트(111)의 프로세싱 자원(비제한적 예를 들면, CPU 또는 GPU)(도시되지 않음)으로부터의 신호에 응답하여 시퀀서(132)로 논리 연산 커맨드를 발행하도록 구성될 수 있다. 예를 들어, 시퀀서(132)는 다중 논리 연산을 시퀀싱하도록 구성될 수 있어서, 시퀀서(132)에 의해 복합 연산 커맨드가 발행될 수 있도록 한다. 일부 실시예에서 제어 로직(131)은 실행형 명령, 가령, VLIW 유형 명령 또는 SMID 유형 명령을 생성하도록 구성될 수 있다. VLIW 유형 명령 제어기를 포함하는 실시예에서, 제어 로직(131)은 VLIW를 비트 벡터 연산 커맨드(들)로서 생성하도록 구성될 수 있다. VLIW는 마이크로코드 명령을 포함할 수 있다. 시퀀서(132)는 VLIW를 복수의 개별 마이크로코드 명령으로 디코딩하도록 구성된 VLIW 유형 제어기거나 이를 포함할 수 있다. 예를 들어, 시퀀서(132)는 VLIW를 복합 연산(비제한적 예를 들어, ADD, MULTIPLY, DOT PRODUCT)의 수행을 야기하기 위한 명령으로 디코딩할 수 있다. 일부 실시예에서, 복합 연산 커맨드는 VLIW 명령의 시퀀스에 진입 포인트를 제공하여 이러한 복합 연산을 수행하게 할 수 있다. SMID 유형 명령 제어기를 포함하는 실시예에서, 제어 로직(131)은 데이터 유닛, 비제한적 예를 들면, 데이터 벡터를 생성하도록 구성될 수 있고, 시퀀서(132)는 데이터 유닛에서 식별된 다중 데이터 포인트 상에서 병렬로 단일 명령의 실행을 야기할 수 있다.
시퀀서(132)는 메모리 디바이스(120)에 연결될 수 있고 채널(157)을 통해 메모리 디바이스(120)에 비트 벡터 동작을 조정하기 위한 커맨드를 전달할 수 있다. 시퀀서(132) 자체 및/또는 메모리 디바이스(120) 내 다른 구성요소(비제한적 예를 들면, 비트 벡터 연산 타이밍 회로(139), 타이밍 회로(133), 타이밍 관리 회로(135) 및/또는 감지 회로(150))에 의해 시퀀스로 및/또는 병렬로 마이크로코드 명령이 실행 가능할 수 있다.
메모리 어레이(130)는 예를 들어 DRAM 어레이, SRAM 어레이, STT RAM 어레이, PCRAM 어레이, TRAM 어레이, RRAM 어레이, NAND 플래시 어레이, 및/또는 NOR 플래시 어레이를 포함할 수 있다. 메모리 어레이(130)는, 본 명세서에서 워드 라인 또는 선택 라인이라고도 지칭될 수 있는 액세스 라인에 의해 연결된 행, 및 본 명세서에서 데이터 라인, 디지터 라인, 또는 비트 라인이라고도 지칭될 수 있는 감지 라인에 의해 연결된 열으로 배열된 메모리 셀을 포함할 수 있다. 단일 메모리 어레이가 도 1에 도시되어 있지만, 실시예는 이에 한정되지 않는다. 예를 들어, 메모리 디바이스(120)는 다수의 메모리 어레이(130)(비제한적 예를 들면, 다수의 DRAM 셀, NAND 플래시 셀 등의 뱅크)를 포함할 수 있다.
메모리 디바이스(120)는 I/O 회로(144)를 통해 데이터 버스(156)(비제한적 예를 들면, 데이터/주소 버스)를 통해 제공된 데이터에 대한 주소 신호를 래치(lath)하기 위한 주소 회로(142)를 포함한다. 상태 및/또는 예외 정보는 메모리 디바이스(120) 상의 제어기(140)로부터, 채널(157)을 포함하는 인터페이스(비제한적 예를 들면, 고속 인터페이스(HSI))를 통해, 채널 제어기(143)로 제공될 수 있다. 주소 신호는 주소 회로(142)를 통해 수신되고 행 디코더(146) 및 열 디코더(152)에 의해 디코딩되어 메모리(130)를 액세스할 수 있다. 데이터는 감지 회로(150)를 사용하여 디지트 라인 상의 메모리 셀의 상태를 감지함으로써 메모리 어레이(130)로부터 읽힐 수 있다. 메모리 셀의 상태가 메모리 셀 기술에 따라 예를 들어 전압 및/또는 전류 변화, 자기 상태 변화, 저항률, 및 양자 상태 등으로서 감지될 수 있다. 감지 회로(150)는 메모리 어레이(130)로부터 데이터의 페이지(비제한적 예를 들면, 행)를 읽고 래치할 수 있다. I/O 회로(144)는 데이터 버스(156)를 통해 호스트(111)와 양방향 데이터 통신하기 위해 사용될 수 있다. 쓰기 회로(148)는 메모리 어레이(130)로 데이터를 쓰기 위해 사용될 수 있다. 일부 실시예에서, 쓰기 회로(148)는 감지 회로(150)와 결합된다. 또 다른 실시예에서, 감지 회로(150)는 열 디코더(152) 및/또는 행 디코더(146)의 일부일 수 있다. 일부 실시예에서, 제어 버스(154)는 (비제한적 예를 들면, 제어 버스(154)가 단방향 데이터 버스로서 동작하는 DDR 프로토콜에 따라) DRAM 제어 및 주소 지정을 위한 제어 및 주소 버스 모두의 역할을 할 수 있다. 도 1에서 개별 버스로서 나타나지만, 일부 실시예에서, 제어 버스(154) 및 데이터 버스(156)는 개별 버스가 아닐 수 있다.
제어기(140)(비제한적 예를 들면, 메모리 제어기)는 호스트(111)로부터 제어 버스(154)에 의해 제공되는 신호를 디코딩할 수 있다. 이들 신호는 메모리 어레이(130) 상에서 수행되는 DRAM 연산, 가령, 데이터 읽기, 데이터 쓰기, 및 데이터 소거 연산을 제어하도록 사용되는 칩 인에이블 신호, 쓰기 인에이블 신호, 및 주소 래치 신호를 포함할 수 있다. 다양한 실시예에서, 제어기(140)는 호스트(111)로부터의 명령을 실행하고 메모리 어레이(130)로 액세스를 시퀀싱하는 것을 담당한다. 제어기(140)는 상태 머신, 시퀀서, 또는 일부 다른 유형의 제어기를 포함할 수 있고 하드웨어 및/또는 펌웨어(비제한적 예를 들면, 마이크로코드 명령)를 ASIC(Application Specific Integrated Circuit) 형태로 제공할 수 있다. 다수의 실시예에서, 제어기(140)는 비트 벡터 연산 타이밍 회로(139)를 포함할 수 있다. 제어기(140)는 예를 들어 감지 회로(150)를 제어할 수 있다. 예를 들어, 제어기(140)는 클록 신호의 생성 및 비트 벡터 연산의 수행과 연관된 계산 구성요소로의 클록 신호의 인가를 제어할 수 있다.
도 1에 도시된 바와 같이, 비트 벡터 연산 타이밍 회로(139)는 타이밍 회로(133) 및 타이밍 관리 회로(135)를 포함할 수 있다. 타이밍 회로(133)는 메모리 셀의 메모리 어레이(130)와 연관된 감지 회로(150)와의 타이밍 조정을 제공하기 위해 FIFO 버퍼를 포함할 수 있다. 일부 실시예에서, 타이밍 회로(133)는 상태 머신, 가령, 원자 상태 머신을 포함할 수 있다.
타이밍 관리 회로(135)는 메모리 어레이(130)와 연관된 행 주소 스트로브(RAS)/열 주소 스트로브(CAS) 구성요소(136)를 이용해 수행된 비트 벡터 연산과 연관된 논리 연산(비제한적 예를 들면, 논리 연산의 시퀀스)의 타이밍을 조정하도록 구성될 수 있다. RAS 구성요소(136)는 메모리 어레이(130)로 신호(비제한적 예를 들면, RAS/CAS 신호)를 전송 및/또는 수신하여, 메모리 어레이(130)의 행 및/또는 열 주소를 식별 및/또는 선택하도록 구성될 수 있다. 일부 실시예에서 메모리 디바이스(120)는 제어 버스(154)를 통해 호스트(111)에 의해 발행될 수 있는 DRAM 연산, 가령, 메모리 어레이 액세스 요청을 실행하도록 구성될 수 있다. 일부 실시예에서, 타이밍 관리 회로(135)는 비트 벡터 연산의 수행의 타이밍을 제어하기 위해 명령을 실행하도록 구성될 수 있다.
하나 이상의 실시예에서, 제어기(140)의 부분(비제한적 예를 들면, 비트 벡터 연산 타이밍 회로(139), 타이밍 회로(133), 및/또는 타이밍 관리 회로(135))은 예를 들어, 32 및/또는 64비트 길이 명령에 대한 RISC(reduced instruction set computer) 유형 제어기를 포함할 수 있다. 다양한 실시예에서, 타이밍 관리 회로(135)는 타이밍 회로(133)로부터 수신된 명령을 실행하여 감지 회로(150)와 연관된 데이터 값을 포함하는 비트 벡터 연산의 수행을 야기하는 것을 담당할 수 있다.
이하에서 더 기재될 바와 같이, 다수의 실시예에서, 감지 회로(150)는 복수의 감지 구성요소를 포함할 수 있으며, 각각의 감지 구성요소는 감지 증폭기 및 계산 구성요소를 포함할 수 있다. 계산 구성요소는 누산기로서 역할 할 수 있고, 감지 회로(150)는 (비제한적 예를 들면, 상보 디지트 라인과 연관된 데이터에) 비트 벡터 연산을 수행하는 데 사용될 수 있다. 다수의 실시예에서, 감지 회로(150)는 메모리 어레이(130)에 저장된 데이터를 입력으로 이용해 비트 벡터 연산을 수행 및/또는 디지트 라인 주소 액세스를 통해 데이터를 전송하지 않고(비제한적 예를 들면, 열 디코딩 신호를 발생시키지 않고) 연산의 결과를 메모리 어레이(130)에 다시 저장하도록 사용될 수 있다. 예를 들어, 감지 회로(150) 외부의 프로세싱 자원에 의해(비제한적 예를 들면, 호스트(111) 및/또는 메모리 디바이스(120) 상에(비제한적 예를 들면, 제어기(140) 상에 또는 그 밖의 다른 곳에) 위치하는 그 밖의 다른 프로세싱 회로, 가령, ALU 회로에 의해) 수행되는 것 대신(또는 이와 연관되어) 감지 회로(150)를 이용해 그리고 감지 회로 내에서, 다양한 연산(비제한적 예를 들면, 비트 벡터 연산)이 수행될 수 있다. 다수의 실시예에서, 감지 회로(150)(비제한적 예를 들면, 다수의 감지 구성요소)는 열 단위로 1-비트 프로세싱 요소로서 역할 하는 감지 구성요소에 의해 SIMD(single instruction multiple data) 방식으로 비트 벡터 연산을 실행하기 위해 사용될 수 있다.
다른 실시예에서, 이웃하는 감지 구성요소는 서로 간에 데이터 비트를 교환할 수 있으며, 따라서 다중 데이터 소스에 기초한 계산을 생성할 수 있다. 다른 실시예에서, 감지 구성요소는 감지 회로(150) 내의 위치에 따라 상이한 계산을 생성할 수 있고, 따라서 VLIW 또는 SIMD 방식으로 계산을 제공할 수 있다. 감지 회로(150)가 비트 벡터 연산을 실행하는 실시예에서, 감지 회로(150)는 "메모리 내 프로세서"로서 기능 및/또는 지칭될 수 있다. 이하에서 더 충분히 기재될 바와 같이, 일부 실시예에서, 감지 회로(150)는 시퀀서(비제한적 예를 들면, 시퀀서(132)와 유사)를 포함할 수 있다.
다양한 접근 방식에서, 피연산자와 관련된 데이터는, 예를 들어 감지 회로를 통해 메모리로부터 읽힐 수 있고 I/O 라인을 통해(비제한적 예를 들면, 로컬 I/O 라인 및/또는 글로벌 I/O를 통해) 외부 메모리 어레이 ALU 회로에 제공될 수 있다. 외부 메모리 어레이 ALU 회로는 다수의 레지스터를 포함할 수 있고 피연산자를 사용하여 비트 벡터 연산을 수행하고 결과는 I/O 라인을 통해 어레이로 다시 전송될 수 있다. 또 다른 실시예에서, 감지 회로(150)는 메모리 어레이(130)에 저장된 데이터에 대해 비트 벡터 연산을 수행하고 감지 회로(150)에 연결된 I/O 라인(비제한적 예를 들면, 로컬 I/O 라인)을 활성화하지 않고 결과를 메모리 어레이(130)로 다시 저장하도록 구성된다.
다수의 실시예에서, 감지 회로(150)가 외부 처리 자원을 사용하지 않고 적절한 비트 벡터 연산을 수행할 수 있기 때문에 메모리 어레이(130) 및 감지 회로(150) 외부의 회로는 연산을 수행하는 데 필요하지 않을 수 있다. 따라서, 감지 회로(150)는 그러한 외부 처리 자원(또는 적어도 그러한 외부 처리 자원의 대역폭 소비)을, 적어도 어느 정도, 보완 및/또는 대체하기 위해 사용될 수 있다. 그러나, 다수의 실시예에서, 감지 회로(150)는 외부 처리 자원(비제한적 예를 들면, 호스트(111))에 의해 수행되는 논리 연산에 추가하여 논리 연산(비제한적 예를 들면, 명령을 실행하기 위한 논리 연산)을 수행하는 데 사용될 수 있다. 예를 들어, 호스트(111) 및/또는 감지 회로(150)는 특정 논리 연산 및/또는 특정 수의 논리 연산만을 수행하도록 제한될 수 있다.
I/O 라인을 활성화하는 것은 디코드 신호(비제한적 예를 들면, 열 디코딩 신호)에 연결된 게이트를 갖는 트랜지스터 및 I/O 라인에 연결된 소스/드레인을 활성화시키는 것(비제한적 예를 들면, 켜는 것)을 포함할 수 있다. 그러나, 실시예는 어레이의 열 디코드 라인을 인에이블하지 않고 감지 회로(비제한적 예를 들면, 감지 회로(150))를 사용하여 논리 연산을 수행하는 것으로 제한되지 않는다. 로컬 I/O 라인이 감지 회로(150)를 통해 논리 연산을 수행하는 것과 연관하여 사용되는지 여부에 관계없이, 로컬 I/O 라인(들)은 결과를 메모리 어레이(130)로 다시 전송하는 것이 아니라 적절한 위치(비제한적 예를 들면, 외부 레지스터)로 전송하기 위해 인에이블될 수 있다.
본 개시의 다양한 실시예는 융합-곱하기-더하기(FMA: fused-multiply-add) 연산에 관한 것이고, 더 구체적으로 프로세싱-인-메모리(PIM: processing-in-memory) FMA 연산을 수행하는 것에 관한 것이다. 다양한 실시예에 따르면, 하나 이상의 계산에 사용될 데이터가 (비제한적 예를 들면, 시퀀서에 의해) 액세스될 수 있고 다수의 비트에 걸쳐 재사용될 수 있다(비제한적 예를 들면, 다수의 데이터 라인을 통해 감지 증폭기 어레이로 로딩될 수 있다). 달리 말하면, 다양한 실시예가 다수의 데이터 라인과 연관된 다수의 비트에 걸쳐 시퀀서 로직을 재사용하는 것과 관련될 수 있다. 따라서, 기존의 방법 및 시스템과 비교하여, 메모리 로드 및 메모리 저장소의 수가 감소될 수 있고, 따라서 메모리 디바이스의 효율이 증가 및/또는 메모리 디바이스와 관련된 레이턴시가 감소될 수 있다.
적어도 이러한 이유 때문에, 본 명세서에서 보다 충분히 설명된 바와 같이, 본 개시의 다양한 실시예는 사람에 의해 합리적으로 수행될 수 없는 기술로부터 발생하는 하나 이상의 문제에 대한 기술적 솔루션을 제공하고, 본 명세서에 개시된 다양한 실시예는 앞서 기재된 문제 및/또는 도전과제를 극복하기 위해 컴퓨터 기술에 뿌리를 두고 있다. 또한, 본 명세서에 개시된 적어도 일부 실시예가 이전에는 컴퓨터에 의해 수행 가능하지 않은 기능의 컴퓨터 성능을 가능하게 함으로써 컴퓨터-관련 기술을 개선할 수 있다.
행렬 곱셈의 경우, 중앙 처리 장치(CPU)와 그래픽 처리 장치(GPU) 모두 입력 행렬을 타일로 분해하며 타일은 프로세서 코어에 할당될 수 있다. 출력 행렬의 각각의 타일에 대해, 입력 행렬의 타일이 정확히 한 번 인출(fetch)되는데, 이는 거의 O(N)의 계산 강도를 달성한다(즉, 프로세싱이 입력 데이터 세트의 크기에 선형으로 정비례하여 증가할 것이다). 출력 행렬의 각각의 타일의 크기는 레벨 L1 캐시 또는 타깃 프로세서의 레지스터의 용량과 일치하도록 선택될 수 있다.
GPU의 경우, 타일이 스레드 블록 타일, 워프 타일 및 스레드 타일의 계층 구조를 형성하도록 타일이 선택된다. 이 타일 구조는 전역 메모리에서 공유 메모리로(즉, 행렬에서 스레드 블록 타일로), 공유 메모리에서 레지스터 파일로(즉, 스레드 블록 타일에서 워프 타일로), 그리고 계산 결과(즉, 워프 타일에서 스레드 타일로)에 대해 레지스터 파일에서 GPU 코어로의 데이터 이동의 경로를 생성한다.
PIM에서, 메모리 어레이(비제한적 예를 들면, DRAM 어레이) 및 하나 이상의 레지스터(비제한적 예를 들면, 감지 증폭기(SA) 어레이 내) 외에, 메모리는 메모리 계층 구조의 큰 부분을 구성한다. 그러나, 본 명세서에서 더 충분히 기재될 바와 같이, 다양한 실시예에 따르면, 데이터 라인 상 또는 메모리 데이터 라인 레지스터의 로컬에서의 계산에 의해 데이터가 PIM FMA 연산에서 재사용될 수 있다.
도 2는 하나 이상의 실시예에 따른 시공간 FMA를 수행하기 위한 시스템(200)의 기능 블록도를 도시한다. 시스템(200)은 저장된 피연산자 및 연산자(202), 비트 정렬기(bit aligner)(206), 비트 정량화기(bit quantifier)(210), 및 계산 유닛(214)을 포함할 수 있다.
저장된 피연산자 및 연산자(202)는 일반적으로 메모리 어레이(비제한적 예를 들면, 메모리 어레이(130))의 일부에 저장된 피연산자 및/또는 연산자에 대한 비트 시퀀스를 액세스하고 수신하도록 구성될 수 있다. 하나 이상의 실시예에서, 저장된 피연산자 및 연산자(202)는 데이터 비트를 수신하기 위한 하나 이상의 데이터 라인, 및 데이터 라인을 통해 데이터 비트를 액세스하기 위한 하나 이상의 액세스 라인을 포함할 수 있다.
비트 정렬기(206)는 일반적으로 피연산자 및 연산자에 대응하는 데이터 비트를 포함하는 비트(204)를 수신하고, 연산자의 비트에 응답하여 피연산자의 비트의 하나 이상의 정렬을 수행하고, 정렬된 비트(208)를 제공하도록 구성될 수 있다. 수행된 비트 정렬에 대해, 비트 정렬기(206)는 정렬된 비트(208)를 제공하도록 구성될 수 있다. 비트 정량화기(210)는 일반적으로 지정 값(비제한적 예를 들어, "1" 또는 "0")을 갖는 정렬된 비트(208)의 수량 비트를 결정하도록 구성될 수 있다. 일반적으로 계산 유닛(214)은 부분적 결과(212)에 적어도 부분적으로 기초하여 계산 결과(216)를 결정하도록 구성될 수 있다.
시스템(200)의 고려된 연산에서, 비트 정렬기(206)는 저장된 피연산자 및 연산자(202) 각각의 피연산자의 비트 및 연산자의 비트를 포함하는 비트(204)를 수신할 수 있다. 비트 정렬기(206)는 피연산자의 비트, 그리고 더 구체적으로 피연산자의 정렬된 비트 위치의 비트 중 하나 이상에 대응하는 정렬된 비트(208)를 제공할 수 있다. 비트 정량화기(210)는 정렬된 비트(208)를 수신할 수 있고, 지정 값을 갖는 정렬된 비트(208) 내 비트의 결정된 수량을 나타내는 부분 결과(212)를 제공할 수 있다. 계산 유닛(214)은 다수의 부분 결과(212)를 수신하고, 다수의 부분 결과(212)를 결합하고(본 명세서에서 나중에 더 충분히 기재될 것임), 계산 결과(216)를 제공할 수 있다.
도 3은 하나 이상의 실시예에 따른 시공간 FMA(300)에 대한 도면을 도시한다. 이 특정한 비제한적인 실시예에 대해, 피연산자 "A"에 대한 비트 시퀀스, 연산자 "B"에 대한 비트 시퀀스, 시공간 FMA(300)의 부분 계산 결과에 사용되는 비트 값을 포함하는 행렬(302), 다양한 부분 계산 결과의 계산 동안 계산되는 캐리-오버(carry-over) 값을 포함하는 캐리-오버(304), 및 시공간 FMA(300)의 결과에 대해 비트 시퀀스를 포함하는 결과(306)가 나타난다.
도 3을 참조하여 나타나고 언급된 예에서, 행렬(302)은 시공간 FMA의 실시예에서 사용되는 (비제한적 예를 들어, 비트 정렬기(206)에 의한) 비트 정렬을 나타내기 위한 편의적인 구성에 불과하다. 특히, 시공간 FMA의 실시예 동안 또는 이 실시예와 함께 행렬이 반드시 생성되어야 하는 것은 아니다. 실제로, 행렬(302)은 시공간 FMA(300) 동안 메모리 내 회로에 의한(비제한적 예를 들어, 비트 정렬기(206)에 의한) 피연산자 A의 다양한 비트 위치 및 비트의 정렬을 나타내며, 각각의 비트 값은 (비제한적 예를 들면, 비트 정량화기(210)에 의해) 정량화되고 (비제한적 예를 들면, 계산 유닛(214)에 의해) 결합되어 계산 결과를 생성할 수 있다.
도 3의 실시예에서, 피연산자 A는 각자의 비트 위치 A3, A2, A1 및 A0에서의 비트에 대한 비트 값 1 1 0 1을 포함한다. 또한, 연산자 B는 각자의 비트 위치 B3, B2, B1 및 B0의 비트에 대한 비트 값 1 1 0 1을 포함한다. 행렬(302)의 각각의 열, 즉, Col0 내지 Col6은 피연산자 A 및 캐리 비트 C의 비트 위치 및 각자의 비트의 정렬을 나타낸다. 각각의 특정 정렬은 연산자 B의 비트의 비트 값에 응답하여 이뤄진다. 달리 말하면, 1의 비트 값을 갖는 연산자 B의 비트 위치는 피연산자 A의 비트 값이 행렬(302)의 주어진 행/열의 주어진 셀에 있는지 여부와 어떤 비트 값인지를 나타낸다. 결과(306)의 셀에 있는 각각의 특정 비트가 행렬(302)의 하나의 열에 대응하는 정렬된 비트 및 캐리 비트의 정량화를 나타낸다.
도 3의 실시예에서, 행렬(302)은 N x M(즉, N개의 행 곱하기 M개의 열) 행렬이다. 행렬(302)의 각각의 행에 대해, 연산자 B의 대응하는 비트 위치의 비트 값은 A의 비트 값이 행의 임의의 셀에 있는지 여부를 나타낸다. B의 대응하는 비트 값이 "1"인 경우 A의 비트 값은 행의 일부 셀에 있지만 B의 대응하는 비트 값이 "0"인 경우 행의 모든 셀이 "0"이다. 특히, 그 밖의 다른 규칙이 사용될 수 있는데, 가령, "0"을 사용하여 A의 비트 값이 하나의 행의 셀에 있음을 지시하고 "1"을 사용하여 하나의 행의 모든 셀이 "0"임을 지시할 수 있다. 최하위 비트 B0의 비트 위치에서부터 최상위 비트 B3의 비트 위치까지 연산자 B의 비트 값은 각각 Row0 내지 Row3을 지시한다. 연산자 B가 피연산자 A의 비트 값의 사용을 지시하는 행렬(302)의 각 행에서, 피연산자 A의 비트 값은 최하위 비트 A0에서 최상위 비트 A3의 순서로 사용된다.
각각의 행에서, A0 내지 A3의 비트 값에 대한 셀 위치는 각 열에서, 비제한적 예를 들어 Col0 내지 Col7 중 하나 이상에서, 합산을 위해 피연산자 A의 비트 값을 정렬하도록 선택된다. 행렬(302)의 각각의 열(또한 캐리-오버(304)의 대응하는 비트 위치)은 시공간 FMA(300)의 부분 계산 결과를 나타낸다. 특히, 행의 서브세트을 선택하고 선택된 서브세트의 열 내에서 합산을 수행함으로써 합산이 수행될 수 있다. 이러한 서브세트 선택은 무작위 순서를 포함하는 임의의 순서로 수행될 수 있다. 또한, 행의 서브세트이 부분 계산 결과로 합산될 수 있고 부분 계산 결과가 합산될 수 있다. 일부 실시예에서, 서브세트을 선택하는 것은 순서화 알고리즘, 비제한적 예를 들면, 대수 순서화 알고리즘에 따라 이뤄질 수 있다. 비제한적 예로서, 대수 순서화 알고리즘은 log_L(B) 단계일 수 있으며, 여기서 L은 하드웨어 제한(비제한적 예를 들면, 행의 서브세트에서 2개의 행 또는 행 서브세트에서 3개의 행)이고 B는 연산자의 비트 폭에 대응하는 숫자이다.
이진수의 일반적인 곱셈에서, 피승수는 승수의 0이 아닌 각각의 비트에 대해 적절하게 왼쪽으로 시프트된 다음 시프트된 숫자가 함께 더해진다.
결과(306)의 비트의 비트 값은 결과(306)의 각각의 비트 위치의 열에 있는 비트 값을 합산함으로써 얻어진다. 하나의 실시예에서, 합산은 배타적 논리합(XOR) 유형 논리 연산을 수행하는 것, 값 "1"을 갖는 비트의 수가 홀수인지 또는 짝수인지를 결정하는 것, 값 "1"을 갖는 비트의 쌍의 수를 카운팅하는 것 등을 포함한다.
따라서, 행렬(302)의 모든 열이 시공간 FMA(300)의 부분 계산을 위한 비트 정렬로 간주되고, 결과(306)의 각각의 비트 위치가 시공간 FMA(300)의 부분 결과인 경우, 시공간 FMA(300)는 이 특정 예에 대한 8개의 부분 결과를 포함한다. 도 3에 의해 고려된 각각의 부분 계산에 대한 정렬된 비트 위치가 표 1에서 제공된다.
표 1: 부분 계산 결과에서 사용된 비트 시퀀스 A의 비트 위치
표 1의 세 번째 열은 하나의 실시예에서 열 2의 정렬된 비트 위치로부터 결정될 수 있고 캐리-오버 비트 C와 추가로 정렬될 수 있는 코드를 보여준다. 달리 말하면, 정렬된 비트 위치의 그룹이 코드, 여기서, 디지털 코드로 표현될 수 있다.
도 4는 하나 이상의 실시예에 따른 감지 회로(400)의 회로도를 도시한다. 감지 회로(400)는 하나 이상의 감지 증폭기에 작동 가능하게 결합되고 하나 이상의 액세스 라인에 의해 하나 이상의 시퀀서에 작동 가능하게 결합된 하나 이상의 데이터 라인(여기서는 비트 라인 BL0 및 BL1)을 포함할 수 있다. 도 4에 나타난 특정 비제한적 실시예에서, 감지 회로(400)는 비트 라인 BL0을 따라 메모리 어레이의 일부분에 저장된 피연산자 A 및 비트 라인 BL1을 따라 메모리 어레이에 저장된 피연산자 C의 비트를 수신하기 위한 비트 라인(BL0 및/또는 BL1)을 포함한다. BL0 및 BL1은 액세스 라인, 여기서 워드 라인 WL 0 내지 WL 3에 의해 시퀀서(402)에 작동 가능하게 연결된다. 비트 라인 BL0은 또한 감지 증폭기(404)에 작동 가능하게 연결되고, 비트 라인 BL1은 감지 증폭기(410)에 작동 가능하게 연결된다. 다중 데이터 라인에 개별 액세스 라인을 작동 가능하게 연결하는 것은 선택 사항이며, 도 4에 여러 실시예를 강조하도록 도시되어 있다.
감지 회로(400)를 사용하여, 피연산자 A의 다중 비트가 실질적으로 동시에 액세스될 수 있고 계산 결과(비제한적 예를 들면, 액세스된 비트의 정량화)가 이러한 다중 비트 액세스 동안 수행될 수 있다. 감지 회로(400)의 고려되는 동작에서, 다중 비트 액세스는 피연산자 A의 비트 위치에 대응하는 다중 액세스 라인(즉, 워드 라인 WL0 내지 WL3 중 하나 이상)을 활성화함으로써 수행될 수 있다.
시퀀서(402)는 표 1에 나타낸 바와 같이 정렬된 비트 위치의 각자의 그룹의 비트 위치에 대응하는 워드 라인 WL0 내지 WL3 중 하나 이상 및 캐리 오버가 각자의 감지 증폭기(비제한적 예를 들면, 감지 증폭기(404 및 410))에 의해 로컬하게 저장될 수 있는 캐리 오버 C를 활성화하도록 구성될 수 있다. 하나의 실시예에서, 시퀀서(402)는 피연산자 A 및 연산자 B에 적어도 부분적으로 기초하여 주어진 부분 계산에 대응하는 정렬된 비트 위치 그룹의 각각의 비트 위치를 결정하도록 구성될 수 있다. 추가로 또는 대안으로, 일부 실시예에서, 시퀀서(402)는 코드, 비제한적 예를 들어, 표 1의 세 번째 열에 나타난, 각각의 감지 증폭기에 의해 로컬하게 저장될 수 있는 코드 및 캐리에 응답하여 각자의 워드 라인을 활성화하도록 구성될 수 있다.
연산자 B는 워드 라인 WL0-WL3에 활성화 패턴을 제공하는 제어 시퀀스로서 사용될 수 있다. 어떤 경우에는, B가 많은 피연산자에 대한 공통 연산자(비제한적 예를 들면, 승수)일 수 있다. 그러한 경우, 다수의 곱셈 연산이 본 명세서에서 논의된 바와 같이 병렬로(즉, 실질적으로 동시에) 다수의 데이터 유닛에 대해 수행될 수 있다.
감지 회로(400)의 고려된 동작으로 되돌아가서, 시퀀서(402)는 A0 및 A2(즉, 표 1의 부분 계산 결과 2)를 액세스하기 위해 워드 라인 WL 0 및 WL 2를 활성화하는데, 두 비트 모두 비트 라인 BL0을 통한 이들의 액세스 동안 발생하는 계산 결과를 위해 감지 증폭기(404)에 의해 이용 가능해진다. BL 0에 작동 가능하게 연결된 감지 증폭기(404)는 주어진 순간에서(비제한적 예를 들면, 주어진 액세스 동작에 대해) 비트 값 "1"인 비트 라인 BL 0 상의 액세스된 비트의 수를 정량화한다. 비트 라인(BL0) 상의 다수의 활성화된 비트에서, 감지 증폭기(404)는 계산 결과의 결과(비제한적 예를들면 부분 계산 결과에 응답하여 제공되는 부분 결과)를 즉시 제공할 수 있다.
하나 이상의 실시예에서, 감지 증폭기(비제한적 예를 들면, 감지 증폭기(404))는 데이터 라인(비제한적 예를 들면, 비트 라인 BL0 및 BL1) 상의 활성화된 비트의 하나 이상의 상태를 구별(즉, 해결)하도록 구성될 수 있다. 일반적으로, 감지 회로(400)의 비트 라인 상의 N개의 동시에 활성화된 비트에 대해, 하나 이상의 실시예에서 상태 진리표는 다음의 N+1개의 상태를 제공한다: 모든 비트가 0일 때 제1 상태, 정확히 1개의 비트가 값 1을 가질 때 제2 상태 , 정확히 2개의 비트가 값 1을 가질 때 제3 상태,...정확히 N-1개의 비트가 값 1을 가질 때 제N 상태, 모든 N개의 비트가 값 1을 가질 때, 제N+1 N 상태. 따라서, 진리표는 본질적으로 그들의 위치와 무관하게 값 1을 갖는 얼마나 많은 비트가 비트 라인 상에서 활성화되는지를 카운트한다. 이러한 진리표는 감지 증폭기에 추가로 또는 감지 증폭기의 일부로 회로로 구현될 수 있으며, 대안으로, 룩업 테이블로서 각각의 감지 증폭기 근처의 메모리 또는 레지스터에 저장될 수 있으며, 대안으로 시퀀서는 감지 증폭기의 요청이 있을 때 또는 조건 없이 테이블 값을 조사할 수 있다.
표 2는 하나 이상의 실시예에 따른, 특히 도 2 및 도 3의 예시적인 실시예에 대응하는 진리표를 보여준다.
표 2: 진리표
하나 이상의 실시예에서, 감지 증폭기(404)는 BL 0의 모든 N개의 상태를 분석하도록 구성된 하나 이상의 감지 증폭기를 포함할 수 있다. 하나의 실시예에서, 감지 증폭기(404)는 회로(비제한적 예를 들면, 감지 회로(400))의 모든 N 개의상태를 분석하도록 구성될 수 있다. 그러한 실시예에서, BL 0의 모든 비트는 동시에(contemporaneously) 또는 동시에(concurrently) 액세스될 수 있다.
또 다른 실시예에서, 감지 증폭기(404)는 N보다 적은 상태(즉, N-1 이하의 상태)를 해결하도록 구성될 수 있다. 그러한 실시예에서, 시퀀서(402)는 BL 0 비트의 서브세트을 순차적으로 활성화하도록 구성될 수 있다. 두 개의 상태를 해결하도록 구성된 감지 증폭기(404)의 예를 사용하여, 시퀀서(402)는 한 번에 비트 라인 BL 0에서 최대 두 개의 비트를 활성화하도록 구성될 수 있다. 이러한 방식으로, 감지 증폭기(404)는 각각의 액세스 동작에서 비트 라인 BL0 상의 최대 두 개의 활성화된 비트에 대해 연산하고 결과를 누산할 수 있다. 비제한적인 예로서, 감지 증폭기(404)는 표 1의 "코드" 열에 있는 코드의 처음 두 개의 활성화된 비트 및 캐리를 연산할 수 있고, 그런 다음 동일한 코드의 두 번째 두 개의 활성화된 비트 및 코드의 캐리를 연산할 수 있으며, 그런 다음 이들 부분 계산을 결합된 부분 계산으로 결합할 수 있다.
대안으로, 이들 부분 계산은 동일한 피연산자를 갖는 두 개의 상이한 비트 라인 세트를 인터페이싱하는 두 개의 상이한 감지 증폭기 세트에 의해 동시에 수행될 수 있다. 두 비트 세트 모두의 시퀀싱은 제1 감지 증폭기 세트의 코드의 처음 2비트 및 제2 감지 증폭기 세트의 코드의 두 번째 2비트에 따라 수행될 수 있다. 두 세트의 감지 증폭기 모두의 부분 결과의 결합 또는 이 경우 합산은 이들 세트에 의한 부분 계산을 생성하는 것과 동시에 또는 순차적으로 수행될 수 있다. 특히, 각각의 세트에 대한 코드의 비트 위치를 선택하는 것은 임의의 순서를 포함하는 임의의 순서(비제한적 예를 들면, 한 세트의 모든 네 번째 비트, 또 다른 세트의 모든 두 번째 비트 및 모든 세 번째 비트)를 포함하는 임의의 순서로 수행될 수 있다. 그런 다음 부분 계산 결과가 합산될 수 있다. 일부 실시예에서, 부분 계산은 순서화 알고리즘에 따라 합산될 수 있다. 순서화 알고리즘의 비제한적인 예는 대수 순서화 알고리즘을 포함한다. 비제한적 예로서, 대수 순서화 알고리즘은 log_L(B) 단계일 수 있으며, 여기서 L은 하드웨어 제한(비제한적 예를 들면, "코드" 내 2비트 위치에 대응하는 2-제한 활성화의 2 유닛 또는 감지 증폭기의 세트에 대해 선택된 "코드"의 3 비트 위치에 대응하는 3-제한 활성화의 3 유닛)이고 B는 연산자의 비트 폭에 대응하는 숫자이다.
표 2의 진리표는 동시 2비트 감지, 즉, 2비트 상태 표를 사용하여 계산 결과 결정의 예이지만, 3비트, 4비트 등, 최대 N비트 상태 진리표가 하나 이상의 실시예에서 사용될 수 있다. 특히, 활성화로 인해 일시적으로 형성된 회로의 복잡도는 일반적으로 진리표에서 사용되는 비트 수에 비례할 것이다.
캐리-오버(carry-over)와 관련하여, 캐리-오버는 이전 동시 활성화로부터 "캐리 오버"된 1의 수의 카운트이며, 이러한 수는 마지막 동시 활성화로부터 값 "1"을 갖는 비트의 쌍의 수에 대응한다(쌍을 결정할 때 이의 캐리 값을 포함). 일부 경우, 최대 캐리는 상태 테이블에 따라 달라질 것인데, 2-비트 상태 테이블의 경우 1, 3-비트 상태 테이블의 경우 2, 4-비트 상태 테이블의 경우 3 등이다. 따라서 부분 계산 중 동시 활성화가 많을수록, 캐리 오버되는 가능한 1의 최대 수량이 많아진다.
하나의 실시예에서, 현재 부분 계산에서 이전 부분 계산으로부터의 캐리-오버를 포함하기 위해, 활성화 드라이버(비제한적 예를 들면, 전류원, 전압원, 또는 기준 저항기)의 강도가 이전 부분 계산으로부터의 캐리-오버의 함수로서 스케일링될 수 있다.
또 다른 실시예에서, 이전 부분 계산으로부터의 캐리-오버는 캐리-오버와 동일한 "1"의 수를 갖는 디지털 값으로서 계산될 수 있고, 디지털 값은 활성화된 비트 위치의 비트와 합산되어 결과를 계산할 수 있다. 비제한적인 예를 들면, 캐리에 대한 디지털 값은 룩업 테이블 또는 회로에 저장될 수 있다. 디지털 값은 검색될 수 있고, 감지 증폭기에게서 디지털 방식으로 유지될 수 있으며, 다음 부분 계산 결과 및 캐리와 함께 디지털 방식으로 결합될 수 있다.
또 다른 실시예에서, 캐리-오버는 "1"의 전하 또는 저항 값과 캐리-오버를 곱한 값과과 실질적으로 동일한 전하 또는 저항 값으로서 저장될 수 있고 그런 다음 하나 이상의 패스에 걸쳐 결과와 통합될 수 있다. 전하/저항 값은 이 전하/저항 값으로 프로그래밍된(비제한적 예를 들면, 감지 증폭기에 로컬인) 메모리 셀의 추가 수로서 저장될 수 있고, 캐리-오버의 값에 대응하는 셀의 수가 결과와 통합될 수 있다.
위에서 언급했듯이 일부 경우 B는 다수의 피연산자에 대한 공통 연산자일 수 있다. 그러한 경우에, 다중 연산 또는 그 일부는 다중 피연산자를 사용하여 병렬로(즉, 실질적으로 동시에) 수행될 수 있다. 앞서 언급된 바와 같이, 그리고 하나 이상의 실시예에 따르면, 도 4는 제2 비트 라인 BL1 및 BL1에 위치한 피연산자 C에 대한 선택적 연산 결합을 도시하며, 피연산자 C는 피연산자 A와 상이한 값을 저장할 수 있다.
감지 회로(400)의 고려된 다중-액세스 동작에서, 시퀀서(402)는 제1 계산을 위해 A0 및 A2에 액세스하고 제2 계산을 위해 동시에 C0 및 C2에 액세스하기 위해 WL 0 및 WL 2를 활성화한다. A0, A2, C0 및 C2에서의 비트는 BL0 및 BL1의 각자의 비트 위치의 액세스 동안 발생하는 계산 결과에 대해 이용 가능해진다. BL1에 작동 가능하게 연결된 감지 증폭기(410)는 앞서 기재된 감지 증폭기(404)와 유사하게 BL1의 액세스된 비트의 수를 정량화하도록 구성될 수 있다(비제한적 예를 들면, 주어진 순간에 비트 값 "1"인 BL 1 상의 액세스된 비트의 수를 정량화하도록 구성됨). BL0 및 BL1의 다중 비트가 활성화되면, 감지 증폭기(404) 및 감지 증폭기(410)는 계산 결과의 각각의 결과(비제한적 예를 들면, 부분 계산 결과에 응답하여 제공되는 부분 결과)를 즉시 제공할 수 있다.
도 5는 감지 증폭기 제어기(500)의 실시예의 기능 블록도를 도시한다. 하나 이상의 부분 계산 동안, 감지 증폭기 제어기(500)는 일반적으로 본 명세서에 기재된 시공간 FMA의 실시예의 하나 이상의 동작을 수행하도록 구성될 수 있다. 도 5에 도시된 특정한 비제한적인 실시예에서, 감지 증폭기 제어기(500)는 신호 드라이버(502), 감지 프로세서(504), 결과 레지스터(506) 및 캐리-오버 레지스터(508)를 포함한다. 감지 증폭기 제어기(500)는 선택적으로 다른 레지스터를 포함할 수 있다. 일부 실시예에서, 신호 드라이버(502)는 하나의 기능 유닛에서 감지 프로세서(504)와 결합될 수 있다. 일부 실시예에서, 감지 증폭기 제어기(500)는 워드 라인을 위한 제1 신호 드라이버(502)/감지 프로세서(504) 쌍 및 비트 라인을 위한 제2 신호 드라이버(502)/감지 프로세서(504) 쌍을 포함할 수 있다. 일부 실시예에서, 감지 및 구동은 액세스 라인 및 데이터 라인 중 하나 또는 둘 모두에서 구현될 수 있다.
신호 드라이버(502)는 데이터 라인 및/또는 액세스 라인을 구동하기 위한 드라이버 신호(510)를 제공하도록 구성될 수 있으며, 비제한적 예를 들어 도 4의 비트 라인 및/또는 워드 라인을 구동하기 위한 구동 신호(406)를 제공할 수 있다. 하나 이상의 실시예에서, 신호 드라이버(502)는 캐리-오버 레지스터(508)에 저장된 값에 응답하여 드라이버 신호(510)를 제공하도록 구성될 수 있다. 더 구체적으로, 신호 드라이버(502)는 캐리-오버 레지스터(508)에 저장된 비트 값에 응답하여 (이전 부분 계산 동안 제공된 드라이버 신호(510)와 비교하여) 부분 계산 동안 제공된 드라이버 신호(510)의 레벨을 증가 또는 감소시키도록 구성될 수 있다. 즉, 신호 드라이버(502)의 다음 출력(비제한적 예를 들어 전류원, 전압원, 또는 기준 저항기)의 레벨을 전파된 캐리(즉, 캐리-오버 레지스터(508)에 저장된 비트 값)의 함수로서 스케일링한다. 다른 실시예에서, 드라이버 신호에 추가로 또는 대안으로, 스케일링된 값은 감지 증폭기를 감지 증폭기에 로컬하게 저장된 추가 비트의 수에 작동 가능하게 연결함으로써 - 각각의 이러한 추가 비트는 논리 "1"을 저장함 - 획득될 수 있다. 추가 비트의 수는 감지 증폭기에서 통합될 캐리-오버 값에 대응할 수 있다(즉, 표 1의 비트 위치 정렬 열의 "C"에 대응). 이들 기능을 활성화하는 것과 관련된 추가 회로가 필요할 수 있다.
감지 프로세서(504)는 데이터 라인으로부터 감지 신호(512)을 수신하도록, 비제한적 예를 들어 도 4의 비트 라인으로부터 감지 신호(408)를 수신하도록 구성될 수 있다. 감지 프로세서(504)는 각각 결과 레지스터(506) 및 캐리오버 레지스터(508)에 저장되는 부분 결과 및 감지된 신호(512)에 응답하는 캐리-오버를 결정하도록 구성될 수 있다.
하나 이상의 실시예는 일반적으로 활성화된 데이터 라인(비제한적 예를 들면, 도 4의 비트 라인 BL0)에 대한 상태 정보를 획득하고 상태 정보를 부분 계산 결과 및 부분 계산 결과에 응답하여 결정된 계산 결과로 변환하는 것에 관한 것이다.
액세스 트랜지스터가 없는 메모리 디바이스의 경우, 중간 회로가 형성되어 상태 정보를 결과로 변환하는 데 사용될 수 있다. 액세스 트랜지스터가 없는 메모리 디바이스의 비제한적인 예는 저항성 크로스포인트 메모리 디바이스 및 용량성 크로스포인트 메모리를 포함한다.
저항성 크로스포인트 메모리, 비제한적 예를 들면, ReRAM(Resistive Random-Access Memory) 또는 3D XPoint(Micron Technology, Inc.에서 상업적으로 이용 가능)의 경우, 병렬 저항 네트워크가 형성되어 상태 정보를 결과로 변환하는 데 사용될 수 있다.
도 6 및 도 7은 데이터 라인의 상태를 측정(비제한적 예를 들면, 데이터 라인 상의 활성화된 비트와 연관된 상태를 측정)하기 위해 일시적으로 활성화된 감지 회로의 실시예에 대한 회로도를 도시한다. 감지 회로의 하나 이상의 실시예는 액세스 라인을 특정 레벨, 비제한적 예를 들면, 특정 전압 레벨 또는 특정 전류 레벨로 작동 가능하게 연결함으로써 활성화될 수 있다.
도 6은 도 4의 감지 회로(400)로부터 일시적으로 활성화된 병렬 저항 네트워크(즉, 감지 회로)의 예시적 활성화를 나타내며, 더 일반적으로 도 3의 COL 2(COL 0에서 시작하여 우측에서 좌측으로)의 부분 계산 결과에 대응한다.
도 6에서 고려되는 실시예에서, 활성화된 감지 회로(602)는 WL 2 및 WL 0를 특정 전압 레벨, 여기서 접지(GND)로 작동 가능하게 연결/연결해제하도록 구성된, (도 6에 스위치로서 도시된) 활성화 요소(604) 및 활성화 요소(608)에 의해 활성화된 워드 라인 WL 2 및 WL 0을 포함하나, 이에 한정되지는 않는다. 하나 이상의 실시예에서, 활성화 요소(604) 및 활성화 요소(608)는 전류(비제한적 예를 들면, 도 6의 전류 I)가 액세스 라인, 가령, 워드 라인 WL0 내지 WL2에서 흐를 수 있게 하는 임의의 적절한 전자 회로 및/또는 디바이스, 비제한적 예를 들면, 다이오드, 트랜지스터, 용량성 스위치, 유도성 스위치, 전류원 및 이들의 조합 일 수 있다.
워드 라인 WL1이 도 6에서 단지, 예시적인 동작에서 워드 라인 WL 1이 GND에 작동 가능하게 연결되어 있지 않음(이 도면에서 생략된 워드 라인 WL 3도 마찬가지임)을 예시하기 위해 나타난다, 즉, 활성화 요소(606)가 개방 스위치로서 나타나고 어떠한 전류도 저항 요소(614)를 통해 흐르지 않는다.
두 메모리 셀(여기서, 저항성 요소(610) 및 저항성 요소(612)) 모두는 비트 값 "1"을 포함하며, 이는 10 Ohm의 로우 저항 상태(비제한적 예를 들면, 1000 Ohm의 하이 저항 상태와 대비됨)에 대응하도록 미리 지정된다. 하나 이상의 실시예에서, 저항 요소(610) 및 저항 요소(612)는 액세스 라인(여기서, WL 3 및 WL 0)에서 보이는 저항에 영향을 미치도록 선택된 임의의 적절한 전자 회로 및/또는 장치일 수 있으며, 비제한적 예를 들어 저항기, 커패시터, 와이어/전도체, 트랜지스터, 및 이들의 조합일 수 있다.
. 전류 I가 비트 라인 BL 0에 제공될 때, 병렬 저항 네트워크, 여기서는 감지 회로(616) 및 전압 분배기, 여기서는 전류원(620)을 포함하는 기준 노드를 포함하는 회로(600)가 형성된다.
비트 라인 저항(즉, 감지 및 증폭 회로(618)에서 보이는 BL 0의 저항)은 R = 1 / (1/10 + 1/10) = 5 Ohm으로 결정될 수 있다. 전류원(620)이 1 AMP인 경우, 비트 라인에서 감지되는 전압(즉, 감지 전압 V)은 V = R x I = 5 x 1 = 5V로 결정될 수 있다.이러한 감지된 전압은 비트 라인 BL 0의 상태를 나타내고 감지 및 증폭 회로(618)는 감지된 전압을 (내부적으로) 조회하고 응답으로 결과 및 캐리를 제공할 수 있다. 비제한적인 예로서, 감지 및 증폭 회로(618)는 감지된 전압에 대한 값에 응답하여 결과 및 캐리 정보를 제공하도록 구성된 룩업 테이블(LUT)을 포함할 수 있다.
특히, 도 6에 도시된 실시예에서, 도 6의 병렬 저항 네트워크(616)의 활성화에 따라 병렬 저항 네트워크가 활성화된 때, 일반적으로 감지된 전압이 비트 값 1을 포함하는 비트 라인의 더 많은 셀을 감소시킬 것이다. 비제한적 예로서, 단일 셀이 1의 비트 값을 갖는 비트를 포함하는 경우, 비트 라인 저항이 R = 1 / (1/10 + 1/1000) = 9.9 Ohm이도록 결정될 수 있으며, 1 Amp의 전류를 인가한 후 비트 라인 전압은 V = 9.9V이다.
또 다른 비제한적인 예로서, 활성화된 감지 회로(602)의 두 메모리 셀 모두 하이 저항 상태에 있으면 비트 라인 저항은 R = 1 / (1/1000 + 1/1000) = 500 Ohm으로 결정될 수 있으며, 1 Amp의 전류를 인가한 후 비트 라인 전압은 V = 500V이다. 대부분의 고려되는 사용 사례에서 500V는 회로의 동적 범위를 벗어날 것이며 감지된 전압은 레일 전압(rail voltage)과 같을 것이다.
도 6을 참조하여 기재된 실시예에 추가로 또는 대안으로, 일부 실시예에서 하나 이상의 워드 라인이 공급 전압에 작동 가능하게 연결되어 병렬 저항 네트워크를 활성화할 수 있다. 도 7은 기준 베이스 저항기 노드에서(비제한적 예를 들어 전압 분배기에서) 전압을 감지함으로써 수행될 수 있도록, 신호 감지가 수행될 수 있도록 감지 회로의 액세스 라인(비제한적 예를 들어, 감지 회로(400)의 워드 라인)을 전압원에 작동 가능하게 연결함으로써 활성화된 병렬 저항 네트워크의 비제한적 예를 보여준다.
도 7에 도시된 예시적인 실시예에서, 워드 라인 WL2 및 WL0은 각각 활성화 요소(706) 및 활성화 요소(708)에 의해 전압원(비제한적 예를 들면, Vdd)에 작동 가능하게 연결함으로써 활성화된다. 감지 및 증폭 회로(704)는 비트 라인 BL 0에 작동 가능하게 연결되고 내부적으로 내부 베이스 저항기(718)에 의해 GND에 작동 가능하게 연결된다. 전류 I가 비트 라인 BL 0에 제공될 때, 병렬 저항 네트워크, 여기서, 감지 회로(720), 및 전압 분배기, 여기서, 베이스 저항기(718)를 포함하는 기준 노드 를 포함하는 회로(700)가 형성된다.
워드 라인 WL1이 도 7에서 단지, 워드 라인 WL1이 VDD에 작동 가능하게 연결되지 않은(도시되지 않은 WL 3도 연결되어 있지 않음) 실시예를 도시하기 위해 도시되어 있다, 즉, 활성화 요소(710)가 개방 스위치로서 도시되고 저항 요소(714)를 통해 전류가 흐르지 않는다.
도 7에서, 워드 라인 WL0 및 WL2는 (즉, 활성화 요소(708) 및 활성화 요소(706)에 의해)특정 전압 레벨, 여기서 Vdd = 10V으로 작동 가능하게 연결함으로써 활성화된다. 두 메모리 셀(여기서, 저항 요소(712) 및 저항 요소(716)) 모두는 로우 저항 상태 10 Ohm(1000 Ohm의 하이 저항 상태에 대비됨)에 대응하는 비트 값 1을 포함한다. 비트 라인 저항은 R = 1 / (1/10 + 1/10) = 5 Ohm으로 결정될 수 있다. 베이스 저항(718)이 10 Ohms이면, BL 0에서 감지된 전압은 V = R_div x Vdd = (10/15) x 10 = 6.67V으로 결정될 수 있다. 감지된 전압은 BL 0 의 상태를 나타낼 수 있고, 감지 및 증폭 회로(704)는 (비제한적 예를 들면, 도 6을 참조하여 설명된 바와 같이 LUT를 사용해) 캐리 및 결과 값을 조회하고 제공하도록 구성될 수 있다.
특히, 감지 회로(720)는 전압 분배기를 갖는 병렬 저항 네트워크를 형성할 때 형성되며, 감지된 전압은 비트 값 1을 포함하는 비트 라인의 더 많은 셀을 증가시킬 것이다. 비제한적 예를 들면, 단 하나의 셀이 1의 비트 값을 갖는 비트를 갖는 시나리오에서, 비트 라인 저항이 R = 1 / (1/10 + 1/1000) = 9.9 Ohm인 것으로 결정될 수 있으며, 전압 분배기를 인가한 후 V = (10/19.9) x 10 = 5V이다.
또 다른 비제한적인 예로서, 활성화된 회로(702)의 두 메모리 셀 모두 하이 저항 상태에 있는 경우 베이스 라인 저항은 R = 1 / (1/1000 + 1/1000) = 500 Ohm으로 결정될 수 있으며, 전압 분배기로 인가한 후 비트 라인 전압은 V = (10 / 510) x 10 = 0.19V이다.
특히, 실시예, 비제한적 예를 들면, 도 6 및 7을 참조하여 기재된 실시예에서 제공된 전압, 저항, 및 전류의 값이 설명을 위해 제공된다. 동작 시, 전압, 저항 및 전류는 비제한적 예를 들어, 노이즈, 디바이스의 고유의 특성, 및 기생 임피던스 중 하나 이상에 의해 영향을 받을 수 있다.
특히, 해당 분야의 통상의 기술자라면 도 5-7을 참조하여 설명된 회로 및 동작을 생성 및/또는 수행하기 위한 수많은 회로 및 등가 회로를 이해할 것이다. 비제한적인 예로서, 감지 및 증폭 회로(비제한적 예를 들어, 감지 및 증폭 회로(618) 및 감지 및 증폭 회로(704))는 전압 분배기 및 전압원 및 GND에 작동 가능하게 연결된 액세스 라인(비제한적 예를 들면, WL 0 및 WL 3)을 포함한다.
특히, 해당 분야의 통상의 기술자라면 임의의 적절한 전압 감지 기법이 하나 이상의 비트 라인의 하나 이상의 상태와 연관된 전압을 감지하도록 사용될 수 있음을 알 것이며, 비제한적 예를 들면 감지 및 증폭 회로(618) 및 감지 및 증폭 회로(704)가 있다. 하나 이상의 실시예에서, 크로스-포인트 저항성 메모리의 대칭성에 적어도 부분적으로 기초하는 전압 감지 기술 및 전압 감지 회로가 사용될 수 있다. 비제한적 예로서, 크로스-포인트 저항성 메모리의 대칭에 적어도 부분적으로 기초하는 전압 감지 기술의 비제한적 예를 들면, 양방향 전압 레벨 감지 기법 또는 차등 전압 레벨 감지 기법 및 다중 병렬 비트 라인 감지 기법, 및 이들을 구현하는 회로가 있다.
하나 이상의 실시예는 일반적으로 포화 모드(비제한적 예를 들면, 1D 또는 다이오드형 메모리 셀)에서 동작하는 스냅백 저항성 메모리 디바이스에 대한 결과로 상태 정보를 변환하는 것과 관련될 수 있다. 이러한 실시예에서, 드라이버 신호는 활성화된 워드 라인에 인가될 수 있고 감지 및 증폭 회로(비제한적 예를 들면, 감지 및 증폭 회로(618) 및 감지 및 증폭 회로(704))는 비트 라인 BL 0에서 스냅백 전류의 양을 관측하도록 구성된다. 일반적으로 스냅백 전류의 양은 (비제한적 예를 들어, 전류-전압 변환기에 의해) 전압으로 변환될 수 있으며 상기 전압이 감지되어 스냅백되는 디바이스의 수(즉, "1"의 비트 값을 갖는 비트를 포함하는 메모리 셀의 수)를 결정하며, 계산 결과를 수행할 수 있다.
앞서 서술한 실시예에서, 비트를 액세스하고 읽는 것은 파괴적으로 또는 비파괴적으로 수행될 수 있으며, 특정 유형의 읽기(즉, 파괴적 또는 비파괴적 읽기)가 암시되지 않으며 설명된 실시예 또는 이의 법정 균등물을 수행하는 데 반드시 필요한 것으로 이해되어서도 안 된다.
용량성 크로스-포인트 메모리(비제한적 예를 들어 동적 랜덤 액세스 메모리(DRAM) 및 하이브리드 랜덤 액세스 메모리(HRAM))의 경우, 앞서 설명된 저항성 메모리에 대한 기술이, 저항기 대신 커패시터 및 전하 공유를 수용하기 위해 약간의 변경으로 적용될 수 있다. 일부 경우에, 용량성 크로스-포인트 메모리는 파괴적일 수 있지만, 회로가 판독 후에 데이터 비트를 보존하기 위해 크로스-포인트 메모리에 포함될 수 있다는 것이 구체적으로 고려된다.
도 8 및 도 9는 데이터 라인의 액세스된 비트에 대한 하나 이상의 상태 정보를 부분 결과로 변환하고 메모리가 NAND 스트링 유형 메모리, 가령, 3D 플래시 NAND를 포함하는 NAND 플래시 메모리를 포함하는 경우 계산 결과로 변환하기 위해 사용되는 회로도를 보여준다.
본 명세서에서 사용될 때, "NAND 스트링"은 NAND 셀의 소스가 다음 NAND 셀의 드레인에 연결된 둘 이상의 NAND 셀을 의미한다.
하나 이상의 실시예에서, 온도-이진 디코딩(thermometric to binary decoding)이 사용되어 상태 정보를 결과로 변환할 수 있다. NAND 스트링(800)은 본 개시 내용의 발명자들에게 알려진 전형적인 NAND 스트링을 나타내며, 이중 게이트, 즉, 비트를 기록하기 위한 부동 게이트 및 특정 NAND 셀에 기록된 데이터를 바이패스하기 위한 제어 게이트를 갖는 직렬 연결된 트랜지스터를 포함한다.
NAND 스트링(800)에서, 트랜지스터의 부동 게이트 내부에 일정량의 전하를 배치함으로써 비트가 기록될 수 있다. 트랜지스터 컨덕턴스는 이 전하에 의해 제어 가능하다. 예를 들어, 비트 1은 로우 전도 상태에 해당할 수 있다(하이 저항 상태로도 특징지어질 수 있음). NAND 셀의 바이패스는 WL에 연결된 제2 게이트(즉, 제어 게이트)에 특정 바이어스를 일시적으로 인가함으로써 수행될 수 있으며, 이는 셀에 걸친 저항을 이의 최소값으로 감소시킴으로써(트랜지스터를 패스 트랜지스터 상태에서 효과적으로 전도성으로 만듦으로써) 부동 게이트의 영향을 "덮어 쓴다".
하나의 실시예에서, 모든 트랜지스터는 동작의 바이패스 모드로 유지되고 그런 다음 바이패스 모드는 관심 있는 특정 트랜지스터에 대해 선택적으로 꺼진다. 더 구체적으로, 바이패스 모드는 시공간 FMA에 대해 선택된 비트를 활성화하기 위해 선택적으로 꺼진다. 도 8의 워드 라인 0 및 워드 라인 2를 액세스하는 것을 포함하는 부분 계산을 사용하여, 앞서 설명된 첫 번째 경우에 WL0 및 WL2는 비활성 상태로 유지되고 다른 모든 워드 라인은 바이패스로 배치된다. 앞서 설명된 다른 경우에서, 모든 워드 라인은 초기에 바이패스 동작 모드에 있고 그 다음 WL0 및 WL3에 대한 바이패스 모드가 선택적으로 꺼진다.
어느 경우라도, 하이 저항 상태(즉, 비트 1)는 1000 Ohm으로 인코딩되고 로우 저항 상태(즉, 비트 0)는 10 Ohm에 대응하고 바이패스 모드와 같다고 가정하면, 이는 (1000 Ohm에 비해) 무시될 수 있다. 따라서, NAND 스트링(800)은 도 9에 도시된 바와 같이 직렬 연결된 두 개의 저항을 포함하는 액세스 회로로 표현될 수 있다.
도 9는 NAND 스트링(800)으로부터 감지 전압(비제한적 예를 들면, 비트 값)을 액세스/읽는 데 사용될 수 있는 감지 회로(여기서, 감지 회로(902) 및 감지 회로(904))의 두 개의 실시예인 감지 회로(900)에 대한 회로도이다.
감지 회로(902)의 고려된 사용에서, 전류원(906)(비제한적 예를 들면, 1mA) 및 감지 전압이 전류원(906) 이후의 위치에서 V = I x R = 0.001 x (1000 + 1000) = 2V로 읽힐 수 있다.
감지 회로(904)의 고려된 사용에서, 전압원(가령, 1V)가 인가되고 기준 저항(908))(Rref = 1000 Ohm) 이후의 위치에서 전압이 V = Vref x R = 1 x (1000 + 1000) / (1000 + 1000 + 1000) = 2/3 V로 읽힌다.
비제한적인 예로서, 셀 중 하나만 값이 1인 경우 비트 라인 저항은 R = R = 1000 Ohm으로 결정될 수 있으며 출력 전압은 다음일 것이다: 1V(감지 회로(902)의 경우 ) 및 1/2V(904의 경우).
다른 비제한적인 예로서, 모든 셀이 0인 경우(달리 말해 어떤 셀도 "1"이 아님), 비트 라인 저항은 0 Ohm에 가까운 것으로 결정될 수 있고 출력 전압은 감지 회로(902) 및 감지 회로(904) 모두에 대해 0V 근처일 것이다.
감지 증폭기는 결과 및 캐리를 (내부적으로) 조회하기 위해 감지 회로(902) 및 감지 회로(904)의 경우에 관측된 출력 전압을 사용할 수 있다.
본 개시내용의 하나 이상의 실시예는 일반적으로 감지된 전압을 결과 및 캐리-오버로 변환하는 것에 관한 것이다. 일부 실시예에서, 멀티-레벨 셀 NAND 플래시 메모리(비제한적 예를 들면, 트리플-레벨 셀(TLC) NAND 플래시 메모리 및 쿼드-레벨-셀(QLC) NAND 플래시 메모리)용 감지 증폭기는 감지된 전압에 응답하여 결과 및 캐리-오버를 조회하기 위한 회로를 포함하는 것으로 구성될 수 있다.
일부 실시예에서, 감지 증폭기는 통합된 아날로그-디지털 변환기(ADC)를 포함할 수 있다. 도 10은 감지 증폭기, 비제한적 예를 들어 감지 증폭기(404)에 포함될 수 있는 통합 ADC(1000)의 기능 블록도를 도시한다. 하나 이상의 실시예에서, 통합 ADC(1000)는 전압 분배(1004), 입력 양자화(1010), 및 온도-이진 인코딩(1014)을 포함할 수 있다.
하나 이상의 실시예에서, 전압 분배(1004)은 일반적으로 기준 전압(1002)의 하나 이상의 전압 분배를 수행하도록 구성될 수 있다. 전압 분배(1004)는 개시된 실시예에 따라 전압 분배를 수행하기 위한 임의의 적절한 전자 회로/디바이스, 비제한적 예를 들어, 하나 이상의 저항 요소(비제한적 예를 들어, 저항기, 트랜지스터, 및 다이오드)를 직렬로 포함하는 저항 스트링 중 하나 이상을 포함할 수 있다. 하나의 실시예에서, 전압 분배(1004)의 저항성 스트링은 비트 라인 연속의 일부일 수 있고 데이터 비트 라인으로부터 분리될 수 있다.
하나 이상의 실시예에서, 입력 양자화(1010)는 일반적으로 기준 전압(1006)에 응답하여 아이템 입력 전압(1008)의 하나 이상의 입력 양자화를 수행하도록 구성될 수 있다. 입력 양자화(1010)는 개시된 실시예에 따른 입력 양자화를 수행하기 위한 임의의 적절한 전자 회로/디바이스, 비제한적 예를 들어, 하나 이상의 전압 비교기(비제한적 예를 들면, 하나 이상의 슈미트 트리거(Schmidt trigger)) 중 하나 이상을 포함할 수 있다.
하나 이상의 실시예에서, 온도-이진 인코딩(1014)은 일반적으로 양자화된 입력(1012)에 응답하여 결과 및 캐리-오버를 제공하도록 구성될 수 있다. 온도-이진 인코딩(1014)은 개시된 실시예에 따른 온도-이진 인코딩을 수행하기 위한 하나 이상의 전자 회로/디바이스, 비제한적 예를 들어, 게이트 어레이, 룩-업 테이블(LUTS), 및 이들의 조합 중 하나 이상을 포함할 수 있다.
통합 ADC(1000)의 고려된 동작에서, 입력 전압(1008)이 통합 ADC(1000)의 입력(도시되지 않음)에서 어서트될 때, 입력 양자화(1010)의 각자의 입력 양자화기는 입력 전압(1008)을 전압 분배(1004)의 각자의 전압 분배기에 의해 제공된 각자의 기준 전압(1006)에 비교한 것에 응답하여 트리거된다. 온도-이진 인코딩(1014)은 양자화된 입력(1012)에 응답하여 결과 및 캐리 비트를 제공한다. 결과 및 캐리 비트는 완전한 계산 결과(비제한적 예를 들어, 도 2의 부분 결과(212)를 생성하기 위해 (비제한적 예를 들어, 도 2의 비트 정량화기(210)에 의해) 사용되는 부분 계산 결과로서 저장될 수 있다.
하나 이상의 실시예에서, 온도-이진 인코딩(1014)을 위한 회로(비제한적 예를 들어, 에러 정정 회로 및 인코더 회로)가 메모리 어레이 아래, 위에, 주변에, 또는 통과하여 라우팅될 수 있다. 하나의 실시예에서, 이러한 회로는, 비제한적 예를 들어, 다른 라우팅 배열에 의해 열화되지 않도록 메모리 용량을 보호하기 위해 메모리 어레이 아래에 라우팅될 수 있다.
도 11은 시공간 FMA를 수행하기 위한 프로세스(1100)의 실시예의 흐름도를 도시한다.
동작(1102)에서, 프로세스(1100)는 데이터 라인을 따라 메모리 어레이의 일부에 있는 하나 이상의 위치를 액세스하기 위해 선택하고, 메모리 어레이의 일부에 있는 위치에 저장된 비트가 데이터 라인을 통해 액세스 가능하다. 하나 이상의 위치의 각자의 위치는 데이터 라인을 따라 저장된 피연산자의 하나 이상의 비트에 대한 하나 이상의 비트 위치에 대응할 수 있다. 하나 이상의 실시예에서, 연산자의 비트는 하나 이상의 비트 위치에 포함된 비트 위치의 선택을 지시하기 위해 사용될 수 있다.
크로스-포인트 메모리에서의 메모리내 프로세싱을 포함하는 실시예에서, 각자의 제1 액세스 라인은 제1 비트 위치의 비트 위치와 연관된 특정 위치에서 데이터 라인과 수직으로 교차할 수 있다. NAND 스트링 메모리에서의 메모리내 프로세싱을 포함하는 실시예에서, 각자의 제1 액세스 라인은 NAND 셀의 게이트를 포함하거나 이에 작동 가능하게 연결될 수 있다.
동작(1104)에서, 프로세스(1100)는 이전 부분 계산으로부터의 캐리-오버에 응답하여 신호 드라이버를 구성한다. 이전 부분 계산이 없었다면 동작(1104)를 건너뛸 수 있다. 하나의 실시예에서, 신호 드라이버를 구성하는 것은 특정된 레벨에서 전류를 제공하도록 전류원을 구성하는 것을 포함할 수 있다. 다른 실시예에서, 신호 드라이버를 구성하는 것은 특정된 레벨에서 전압을 제공하도록 전압원을 구성하는 것을 포함할 수 있다.
동작(1106)에서, 프로세스(1100)는 동작(1104)에서 구성된 신호 드라이버에서 드라이버 신호(비제한적 예를 들면, 감지 전류 또는 감지 전압)를 생성한다. 하나 이상의 실시예에서, 드라이버 신호는 활성화 데이터 라인의 상태, 더 구체적으로, 활성화된 데이터 라인에서의 비트 값 = "1"을 갖는 비트 수량를 나타내는 감지 신호를 생성하도록 구성된 감지 회로로 제공될 수 있다.
동작(1108)에서, 프로세스(1100)는 동작(1102)에서 선택된 액세스 라인을 활성화하고, 이로써 데이터 라인에서 활성화된 비트를 제공한다. 액세스 라인을 활성화하는 단계는 메모리 어레이의 일부에 있는 위치 중 둘 이상과 연관된 둘 이상의 액세스 라인 및 더 구체적으로 둘 이상의 위치에 대응하는 둘 이상의 비트 위치를 실질적으로 동시에 활성화하는 것을 포함할 수 있다.
동작(1110)에서, 프로세스(1100)는 감지 회로를 가로질러 감지 신호, 즉 동작(1106)에서 드라이버 신호를 수신한 감지 회로를 관측한다. 본 명세서에 설명된 바와 같이, 하나 이상의 실시예에서 감지 신호는 데이터 라인 상의 활성화된 비트의 양을 나타낸다. 하나 이상의 실시예에서, 감지 회로는 동작(1108)에서 활성화된 선택된 액세스 라인의 상태(또는 상태를 나타내는 신호)를 측정하기 위해 일시적으로 활성화되었을 수 있다.
동작(1112)에서, 프로세스(1100)는 관측된 감지 신호에 응답하여 부분 결과를 결정하고 상기 부분 결과를 저장한다.
다음 부분 계산이 있는 경우, 동작(1112)에서, 프로세스(1100)는 관측된 감지 신호에 응답하여 캐리-오버를 결정하고 상기 캐리-오버를 저장한다. 그런 다음 저장된 캐리-오버는 후속 부분 계산에서 신호 드라이버를 구성하는 데 사용될 수 있다.
일부 실시예에서, 비제한적 예를 들면, 하드웨어 제한 때문에, 선택된 비트 위치에 대응하는 액세스 라인의 서브세트가 모든 선택된 비트 위치에 대한 액세스 라인 대신 동시에 활성화될 수 있다. 따라서, 일부 실시예에서, 부분 계산을 수행하고 부분 결과를 획득하는 것은 다수의 중간 부분 계산을 수행하고 다수의 중간 부분 결과를 얻는 것을 포함할 수 있다.
도 12는 다수의 중간 부분 계산을 수행하는 것을 포함하는 부분 계산을 수행하기 위한 프로세스(1200)의 실시예에 대한 흐름도를 도시한다. 비제한적인 예로서, 프로세스(1200)는 프로세스(1100)의 동작(1108), 동작(1110), 동작(1112) 및 동작(1114) 대신에 수행될 수 있다.
동작(1202)에서, 프로세스(1200)는 메모리 어레이의 일부 내의 위치와 연관된 액세스 라인의 서브세트를 활성화하며, 이러한 위치는 선택된 비트 위치의 비트 위치의 서브세트에 대응한다.
동작(1204)에서, 프로세스(1200)는 메모리 어레이의 데이터 라인에서 중간 감지 신호를 관측한다. 중간 감지 신호는 데이터 라인 상의 활성화된 비트를 나타낼 수 있다. 활성화된 비트는 동작(1202)에서 활성화된 액세스 라인과 연관된 메모리 어레이의 위치에 저장된 비트, 보다 구체적으로 비트 시퀀스의 선택된 비트 위치의 비트에 대응할 수 있다.
동작(1206)에서, 프로세스(1200)는 관측된 중간 감지 신호를 현재 부분 계산의 이전에 관측된 중간 감지 신호와 함께(있는 경우) 누산한다.
동작(1208)에서, 프로세스(1200)는 동작(1206)에서 중간 감지 신호를 누산함으로써 획득된 감지 신호에 응답하여 캐리-오버를 결정한다.
동작(1210)에서, 프로세스(1200)는 액세스 라인의 모든 서브세트에 대한 중간 감지 신호가 누산될 때까지 동작(1202), 동작(1204), 및 동작(1206)의 서브-프로세스를 반복한다. 달리 말하면, 부분 계산의 모든 위치/선택된 비트 위치에 대한 액세스 라인에 대응하는 중간 감지 신호가 누산될 때까지 서브-프로세스가 반복된다. 실질적으로 누산된 중간 감지 신호의 합인 감지 신호가 획득된다.
동작(1212)에서, 프로세스(1200)는 중간 감지 신호를 누산함으로써 획득된 감지 신호에 응답하여 부분 계산 결과를 결정한다.
본 명세서에 기재된 하나 이상의 실시예는 방법을 포함한다. 방법은 메모리 어레이 내 데이터 라인을 따라 제1 위치에 저장된 피연산자의 제1 비트의 제1 비트 위치를 액세스를 위해 선택하는 단계를 포함할 수 있다. 방법은 또한 선택된 제1 비트 위치와 연관된 제1 액세스 라인을 활성화하는 단계를 포함한다. 방법은 또한 선택된 제1 비트 위치에 저장된 피연산자의 제1 비트에 액세스하는 단계를 포함한다. 방법은 또한 액세스된 제1 비트에 응답하여 계산 결과의 적어도 일부를 수신하는 단계를 포함한다.
본 명세서에 설명된 하나 이상의 실시예는 시스템을 포함한다. 시스템은 액세스 라인, 데이터 라인, 비트 정량화기 및 계산 유닛을 포함할 수 있다. 비트 정량화기는 데이터 라인에 작동 가능하게 연결될 수 있다. 비트 정량화기는 데이터 라인의 하나 이상의 상태를 결정하도록 구성될 수 있다. 계산 유닛은 데이터 라인의 하나 이상의 상태에 응답하여 계산 결과를 제공하도록 구성될 수 있다.
본 명세서에 기재된 하나 이상의 실시예는 회로를 포함한다. 상기 회로는 제1 라인, 복수의 제2 라인, 및 측정 회로를 포함할 수 있다. 복수의 제2 라인은 제1 라인을 따라 위치하는 메모리 요소를 통해 제1 라인에 연결되도록 구성된다. 복수의 제2 라인의 각자의 라인은 특정된 전압 레벨(비제한적 예를 들면, 접지 또는 공급 전압)에 라인을 번갈아 연결 및 연결해제하도록 구성된 활성화 요소를 포함할 수 있다. 하나의 실시예에서, 복수의 제2 라인의 라인은 저항성 요소를 포함할 수 있다. 회로는 또한 라인을 기준 노드에 작동 가능하게 연결함으로써 활성화된 병렬 저항 네트워크에 걸친 전압을 측정하도록 배열된 회로를 포함할 수 있다.
본 개시의 추가적인 실시예는 전자 시스템을 포함한다. 전자 시스템은 적어도 하나의 입력 디바이스, 적어도 하나의 출력 디바이스, 및 입력 디바이스 및 출력 디바이스에 작동 가능하게 연결된 적어도 하나의 프로세서 디바이스를 포함할 수 있다. 전자 시스템은 또한 적어도 하나의 프로세서 디바이스에 작동 가능하게 연결되고 하나 이상의 메모리 셀 어레이 및 각각의 메모리 셀 어레이에 결합된 하나 이상의 FMA(fuse-multiply-add) 유닛을 포함하는 적어도 하나의 메모리 디바이스를 포함할 수 있다. FMA 유닛은 데이터 라인에 저장된 피연산자의 제1 비트의 제1 비트 위치를 액세스를 위해 선택하도록 구성될 수 있다. FMA 유닛은 선택된 제1 비트 위치에 응답하여 제1 액세스 라인을 활성화하도록 더 구성될 수 있다. FMA 유닛은 제1 활성화된 액세스 라인에 응답하여 선택된 제1 비트 위치에 저장된 피연산자의 제1 비트를 액세스하도록 추가로 구성될 수 있다. FMA 유닛은 액세스된 제1 비트에 응답하여 계산 결과를 획득하도록 더 구성될 수 있다.
일반적인 관행에 따라, 도면에 예시된 다양한 특징부가 실제 비율에 따라 그려지지 않을 수 있다. 본 개시에 제시된 예시는 임의의 특정 장치(비제한적 예를 들어, 디바이스 또는 시스템) 또는 방법의 실제 보기를 의미하지 않으며, 본 개시의 다양한 실시예를 설명하기 위해 사용되는 단지 이상화된 표현에 불과하다. 따라서, 다양한 특징부의 치수는 명확성을 위해 임의로 확대 또는 축소될 수 있다. 또한, 일부 도면은 명확성을 위해 간략화될 수 있다. 따라서, 도면은 주어진 디바이스(비제한적 예를 들어, 디바이스)의 모든 구성요소 또는 특정 방법의 모든 동작을 묘사하지 않을 수 있다.
본 명세서에서 사용될 때, 용어 "디바이스" 또는 "메모리 디바이스"는 메모리가 있는 디바이스를 포함하지만, 메모리만 있는 디바이스로 한정되는 것은 아니다. 예를 들어, 디바이스 또는 메모리 디바이스는 메모리, 프로세서, 및/또는 그 밖의 다른 구성요소 또는 기능을 포함할 수 있다. 예를 들어, 디바이스 또는 메모리 디바이스는 시스템 온 칩(SOC)를 포함할 수 있다. 일부 실시예에서, 본 명세서에 기재된 계산 방법은 저장 디바이스, 가령, 솔리드-스테이트 드라이브에 적용 가능할 수 있다. 따라서, 본 명세서에서 사용되는 용어 "메모리 디바이스"는 저장 디바이스를 포함할 수 있다.
본 명세서에서, 특히 청구항(비제한적 예를 들어, 청구항 본문)에서 사용된 용어는 일반적으로 "개방형" 용어로 의도된다(비제한적 예를 들어, "포함하는"이라는 용어는 "포함하지만 이에 제한되지 않는"으로 해석되어야 하며, "~를 갖는"이라는 용어는 "적어도 ~를 갖는"으로 해석되어야 하고, "포함한다"라는 용어는 "포함하지만 이에 제한되지 않는"으로 해석되어야 하는 등이다).
또한, 특정 수의 도입된 청구항 기재를 의도하는 경우, 그러한 의도는 청구항에서 명시적으로 기재되며, 그러한 기재가 없을 경우 그러한 의도가 존재하지 않는다. 예를 들어, 이해를 돕기 위해, 다음 첨부된 청구항은 청구항 기재를 도입하기 위해 도입 구문 "적어도 하나" 및 "하나 이상"의 사용을 포함할 수 있다. 그러나 이러한 구문의 사용은 부정관사 "a" 또는 "an"에 의한 청구항 기재의 도입이, 동일한 청구항이 도입 구문 "하나 이상" 또는 "적어도 하나" 및 부정관사, 가령, "a" 또는 "an"(비제한적 예를 들어, "a" 및/또는 "an"이 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 해석되어야 한다)을 포함할 때에도, 그러한 도입된 청구항 기재를 포함하는 임의의 특정 청구항을 이러한 기재를 단 하나만 포함하는 실시예로 한정함을 의미하는 것으로 해석되어서는 안 되며, 이는 청구항 기재를 도입하는 데 사용되는 정관사의 사용에도 마찬가지이다. 본 명세서에 사용될 때 "및/또는"은 하나 이상의 연관된 목록 항목 중 임의의 것 및 모든 조합을 포함한다.
또한, 도입된 청구항 기재의 특정 수가 명시적으로 기재된 경우에도, 그러한 기재는 적어도 기재된 수를 의미하는 것으로 해석되어야 하는 것으로 이해된다(비제한적 예를 들어, 다른 수식어 없이 "두 개의 기재"의 맨 기재는 적어도 두 개의 기재, 또는 둘 이상의 기재를 의미한다). 또한, "A, B 및 C 등 중 적어도 하나" 또는 "A, B 및 C 등 중 하나 이상"과 유사한 관용어가 사용되는 경우, 일반적으로 그러한 구성은 A 단독, B 단독, C 단독, A와 B 함께, A와 C 함께, B와 C 함께, 또는 A, B 및 C 함께 등을 포함하는 것으로 의도된다. 예를 들어, "및/또는"이라는 용어의 사용은 이러한 방식으로 해석되는 것으로 의도된다.
또한, 둘 이상의 대안 용어를 제시하는 임의의 분리 단어 또는 구문이, 설명, 청구항 또는 도면에서인지에 무관하게, 용어들 중 하나, 용어들 중 어느 하나, 또는 둘 모두를 포함할 가능성을 고려하는 것으로 이해되어야 한다. 예를 들어, "A 또는 B"라는 구문은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해되어야 한다.
또한, "제1", "제2", "제3" 등의 용어의 사용은 요소의 특정 순서 또는 수를 의미하기 위해 본 명세서에서 반드시 사용되는 것은 아니다. 일반적으로 "제1", "제2", "제3" 등의 용어는 일반 식별자로 서로 다른 요소를 구별하는 데 사용된다. "제1", "제2", "제3" 등의 용어가 특정 순서를 의미한다는 것을 보여주지 않으면 이러한 용어가 특정 순서를 의미하는 것으로 이해되어서는 안 된다. 또한, "제1", "제2", "제3" 등의 용어가 특정 개수의 요소를 의미한다는 것을 보여주지 않는 경우 이러한 용어가 특정 개수의 요소를 의미하는 것으로 이해되어서는 안 된다.
앞서 기재되고 첨부된 도면에 도시된 본 개시의 실시예는 첨부된 청구항 및 이의 법적 균등물의 범위에 의해 포함되는 개시의 범위를 제한하지 않는다. 임의의 균등 실시예가 본 개시의 범위 내에 있다. 실제로, 본 명세서에 도시되고 기재된 것에 추가로, 본 개시의 다양한 수정예, 가령, 기재된 요소의 유용한 대안 조합이, 기재로부터 해당 분야의 통상의 기술자에게 자명해질 것이다. 이러한 수정 및 실시예는 첨부된 청구항 및 균등물의 범위 내에 있다.

Claims (23)

  1. 방법으로서,
    메모리 어레이의 제1 부분에 저장된 피연산자의 제1 비트의 제1 비트 위치를 액세스를 위해 선택하는 단계 - 상기 제1 비트는 제1 데이터 라인을 통해 액세스 가능함 - ,
    선택된 제1 비트 위치와 연관된 제1 액세스 라인을 활성화하는 단계,
    상기 피연산자의 제1 비트를 액세스하는 단계, 및
    진리표에 적어도 부분적으로 기초하여, 그리고 액세스된 제1 비트에 응답하여 계산 결과의 적어도 일부분을 수신하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    피연산자의 제1 비트 위치 중 연산자의 제1 비트 위치의 비트의 값에 응답하는 제1 비트 위치를 선택하는 단계, 및
    상기 피연산자의 제1 비트 위치 중 연산자의 제2 비트 위치의 비트의 값에 응답하는 제2 비트 위치를 선택하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    특정 비트 값을 갖는 액세스되는 제1 비트의 수에 적어도 부분적으로 기초하여 부분 계산 결과를 생성하는 단계를 더 포함하는, 방법.
  4. 제3항에 있어서, 상기 부분 계산 결과를 생성하는 단계는
    합산 결과 및 캐리-오버를 생성하는 단계를 포함하는, 방법.
  5. 제1항에 있어서,
    피연산자의 제2 비트의 제2 비트 위치를 액세스를 위해 선택하는 단계,
    선택된 제2 비트 위치와 연관된 제2 액세스 라인을 활성화하는 단계, 및
    활성화된 제2 액세스 라인에 응답하여 피연산자의 제2 비트를 액세스하는 단계를 더 포함하는, 방법.
  6. 제5항에 있어서,
    액세스된 제2 비트에 응답하여 제1 부분 계산 결과를 수신하는 단계,
    액세스된 제2 비트에 응답하여 제2 부분 계산 결과를 수신하는 단계, 및
    제1 부분 계산 결과와 제2 부분 계산 결과를 조합하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서, 제1 데이터 라인, 메모리 요소, 제1 액세스 라인, 및 이들의 임의의 조합 또는 부분조합 중 하나 이상을 이용해 제1 비트 위치의 제1 데이터 라인을 액세스하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서, 제1 데이터 라인, 메모리 요소, 및 제1 액세스 라인을 포함하는 병렬 저항 네트워크를 이용해 각자의 제1 비트 위치의 제1 데이터 라인을 액세스하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서, 제1 데이터 라인을 액세스하는 단계는
    제1 개수의 직렬 연결된 메모리 요소를 로우(low) 임피던스 모드로 배치하는 단계, 및
    제2 개수의 직렬 연결된 메모리 요소가 디폴트 임피던스 모드에 있는 동안,
    제2 개수의 직렬 연결된 메모리 요소를 액세스하는 단계, 및
    특정 비트 값을 갖는 액세스되는 직렬 연결된 메모리 요소의 제2 개수를 결정하는 단계를 포함하는, 방법.
  10. 제1항에 있어서,
    제1 액세스 라인을 특정 레벨로 연결하는 단계,
    드라이버 신호를 제1 데이터 라인으로 제공하는 단계, 및
    제1 데이터 라인에서의 신호를 감지하는 단계를 더 포함하는, 방법.
  11. 제1항에 있어서,
    제1 데이터 라인의 비트 그룹을 액세스하는 단계,
    제1 데이터 라인의 액세스된 비트 그룹의 상태에 응답하여 중간 부분 계산을 수신하는 단계, 및
    중간 부분 계산을 조합하여 부분 계산 결과를 획득하는 단계를 포함하는, 방법.
  12. 제1항에 있어서,
    메모리 어레이의 제2 부분에 저장된 제2 피연산자의 제1 비트 위치에서의 제2 비트를 액세스하는 단계 - 상기 제2 비트는 활성화된 제1 액세스 라인에 응답하여 제2 데이터 라인을 통해 액세스 가능함 - 를 더 포함하는, 방법.
  13. 제1항에 있어서,
    모든 연산자 시퀀스에게 공통인 비트를 출력하는 단계,
    고유 연산자를 피연산자와 함께 할당하는 단계, 및
    연산자 비트가 논리 하이(high)라고 결정하는 것에 응답하여 액세스 라인을 활성화하는 단계를 더 포함하는, 방법.
  14. 시스템으로서,
    데이터 라인,
    액세스 라인,
    데이터 라인에 연결된 비트 정량화기 - 비트 정량화기는 데이터 라인의 하나 이상의 상태를 결정하도록 구성됨 - , 및
    진리표에 적어도 부분적으로 기초하여, 그리고 데이터 라인의 하나 이상의 상태에 응답하여 계산 결과를 제공하도록 구성된 계산 유닛을 포함하는, 시스템.
  15. 제14항에 있어서, 액세스 라인 중 하나 이상을 활성화하도록 구성된 비트 정렬기를 더 포함하는, 시스템.
  16. 제15항에 있어서, 상기 액세스 라인은 특정 레벨에 동작 가능하게 연결됨으로써 활성화되도록 구성되는, 시스템.
  17. 제14항에 있어서, 계산 유닛은 데이터 라인의 상태에 대응하는 부분 계산 결과를 비동기식으로 제공하도록 구성되는, 시스템.
  18. 제14항에 있어서, 상기 비트 정량화기는
    전압 분배기,
    입력 양자화기, 및
    인코더를 포함하는, 시스템.
  19. 제14항에 있어서, 복수의 직렬 연결된 메모리 요소는 데이터 라인 및 액세스 라인을 형성하는, 시스템.
  20. 제14항에 있어서, 계산 유닛은
    데이터 라인의 각자의 상태에 대응하는 부분 계산 결과를 획득하고,
    부분 계산 결과들을 조합하여 계산 결과를 획득하도록 구성되는, 시스템.
  21. 제14항에 있어서, 메모리를 더 포함하고, 상기 계산 유닛은
    메모리에 중간 부분 계산을 저장하고,
    메모리에 저장된 중간 부분 계산에 적어도 부분적으로 기초하여 부분 계산을 획득하도록 구성되는, 시스템.
  22. 회로로서,
    제1 라인,
    상기 제1 라인에 연결되도록 구성된 복수의 제2 라인 - 복수의 제2 라인의 각각의 라인은 메모리 요소를 통해 제1 라인에 연결되도록 구성되고 제1 라인을 특정된 전압 레벨로 번갈아 연결 및 연결해제하도록 구성된 활성화 요소를 포함함 - , 및
    제1 라인을 기준 노드로 작동 가능하게 연결함으로써 활성화된 병렬 네트워크 양단의 전압을 회로망이 측정하게 하도록 배열된 단자에 연결된 회로망을 포함하는, 회로.
  23. 제22항에 있어서, 기준 노드는 병렬 네트워크에 대해 배열되어, 전압 측정 동안, 기준 노드가 전압 분배기로서 동작하게 하는, 회로.
KR1020227010818A 2019-09-05 2020-08-05 시공간 융합-곱하기-더하기 및 관련 시스템, 방법 및 디바이스 Active KR102819857B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962896242P 2019-09-05 2019-09-05
US62/896,242 2019-09-05
US16/888,345 2020-05-29
US16/888,345 US11829729B2 (en) 2019-09-05 2020-05-29 Spatiotemporal fused-multiply-add, and related systems, methods and devices
PCT/US2020/070372 WO2021046566A1 (en) 2019-09-05 2020-08-05 Spatiotemporal fused-multiply-add, and related systems, methods and devices

Publications (2)

Publication Number Publication Date
KR20220053017A KR20220053017A (ko) 2022-04-28
KR102819857B1 true KR102819857B1 (ko) 2025-06-12

Family

ID=74849773

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227010818A Active KR102819857B1 (ko) 2019-09-05 2020-08-05 시공간 융합-곱하기-더하기 및 관련 시스템, 방법 및 디바이스

Country Status (5)

Country Link
US (1) US11829729B2 (ko)
EP (1) EP4025991A4 (ko)
KR (1) KR102819857B1 (ko)
CN (1) CN114514502A (ko)
WO (1) WO2021046566A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7034984B2 (ja) * 2019-05-30 2022-03-14 株式会社東芝 演算装置
KR102582800B1 (ko) * 2021-04-09 2023-09-26 광운대학교 산학협력단 분할된 비트라인 기반 계산 메모리 장치를 이용한 곱의 합 연산을 수행하는 방법
US12481867B2 (en) * 2021-04-28 2025-11-25 Arm Limited Memory for artificial neural network accelerator
US20240161222A1 (en) * 2022-11-16 2024-05-16 Nvidia Corporation Application programming interface to indicate image-to-column transformation
DE112022008018T5 (de) 2022-11-17 2025-09-25 Nvidia Corporation Anwendungsprogrammierschnittstelle zum durchführen asynchroner datenbewegungen

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170345481A1 (en) * 2014-06-05 2017-11-30 Micron Technology, Inc. Performing logical operations using sensing circuitry
US20180210994A1 (en) * 2017-01-26 2018-07-26 Advanced Micro Devices, Inc. Memory including side-car arrays with irregular sized entries
US20190042199A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Compute in memory circuits with multi-vdd arrays and/or analog multipliers

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
KR100280518B1 (ko) 1998-11-10 2001-03-02 김영환 동기 에스램 회로
US7852671B2 (en) 2008-10-30 2010-12-14 Micron Technology, Inc. Data path for multi-level cell memory, methods for storing and methods for utilizing a memory array
US8577950B2 (en) 2009-08-17 2013-11-05 International Business Machines Corporation Matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US8984043B2 (en) 2009-12-23 2015-03-17 Intel Corporation Multiplying and adding matrices
WO2013077845A1 (en) 2011-11-21 2013-05-30 Intel Corporation Reducing power consumption in a fused multiply-add (fma) unit of a processor
US9430735B1 (en) * 2012-02-23 2016-08-30 Micron Technology, Inc. Neural network in a memory device
KR101975534B1 (ko) 2012-09-11 2019-05-07 삼성전자주식회사 연산기능을 갖는 반도체 메모리 장치
US9158667B2 (en) * 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9779792B2 (en) 2013-06-27 2017-10-03 Advanced Micro Devices, Inc. Register file with read ports clustered by entry
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
WO2016003740A1 (en) 2014-07-02 2016-01-07 Via Alliance Semiconductor Co., Ltd. Split-path fused multiply-accumulate operation using first and second sub-operations
US9847110B2 (en) * 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9373408B2 (en) * 2014-10-07 2016-06-21 SanDisk Technologies, Inc. Highly linear analog-to-digital converter and method for nonvolatile memory
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US10997275B2 (en) 2016-03-23 2021-05-04 Gsi Technology Inc. In memory matrix multiplication and its usage in neural networks
KR102481418B1 (ko) 2016-06-07 2022-12-26 목원대학교 산학협력단 단일 곱셈-누산 방법 및 장치
US10416896B2 (en) 2016-10-14 2019-09-17 Samsung Electronics Co., Ltd. Memory module, memory device, and processing device having a processor mode, and memory system
US10140092B2 (en) 2016-11-04 2018-11-27 Samsung Electronics Co., Ltd. Closepath fast incremented sum in a three-path fused multiply-add design
WO2018154268A1 (en) 2017-02-23 2018-08-30 Arm Limited Multiply-accumulation in a data processing apparatus
US10817587B2 (en) 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US10482929B2 (en) * 2017-07-13 2019-11-19 Qualcomm Incorporated Non-volative (NV) memory (NVM) matrix circuits employing NVM matrix circuits for performing matrix computations
JP2019028569A (ja) 2017-07-26 2019-02-21 株式会社東芝 メモリシステム、半導体記憶装置及び信号処理システム
US10741239B2 (en) * 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10878317B2 (en) * 2017-09-11 2020-12-29 Samsung Electronics Co., Ltd. Method and system for performing analog complex vector-matrix multiplication
US11127460B2 (en) 2017-09-29 2021-09-21 Crossbar, Inc. Resistive random access memory matrix multiplication structures and methods
KR102592146B1 (ko) 2017-11-06 2023-10-20 삼성전자주식회사 시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법
US10635398B2 (en) * 2018-03-15 2020-04-28 Macronix International Co., Ltd. Voltage sensing type of matrix multiplication method for neuromorphic computing system
US10692570B2 (en) 2018-07-11 2020-06-23 Sandisk Technologies Llc Neural network matrix multiplication in memory cells
US10643705B2 (en) 2018-07-24 2020-05-05 Sandisk Technologies Llc Configurable precision neural network with differential binary non-volatile memory cell structure
US11309334B2 (en) * 2018-09-11 2022-04-19 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips comprising non-volatile random access memory cells
US10748603B2 (en) 2018-09-28 2020-08-18 Intel Corporation In-memory multiply and accumulate with global charge-sharing
US10877752B2 (en) 2018-09-28 2020-12-29 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory
US10642922B2 (en) 2018-09-28 2020-05-05 Intel Corporation Binary, ternary and bit serial compute-in-memory circuits
US10497442B1 (en) 2018-11-15 2019-12-03 Hewlett Packard Enterprise Development Lp Memristor arrays in crossbars
KR102703432B1 (ko) * 2018-12-31 2024-09-06 삼성전자주식회사 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치
US11423979B2 (en) * 2019-04-29 2022-08-23 Silicon Storage Technology, Inc. Decoding system and physical layout for analog neural memory in deep learning artificial neural network
US10998037B2 (en) * 2019-05-07 2021-05-04 Memryx Incorporated Memory processing units and methods of computing dot products
US11934824B2 (en) 2019-09-05 2024-03-19 Micron Technology, Inc. Methods for performing processing-in-memory operations, and related memory devices and systems
US11568200B2 (en) * 2019-10-15 2023-01-31 Sandisk Technologies Llc Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170345481A1 (en) * 2014-06-05 2017-11-30 Micron Technology, Inc. Performing logical operations using sensing circuitry
US20180210994A1 (en) * 2017-01-26 2018-07-26 Advanced Micro Devices, Inc. Memory including side-car arrays with irregular sized entries
US20190042199A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Compute in memory circuits with multi-vdd arrays and/or analog multipliers

Also Published As

Publication number Publication date
CN114514502A (zh) 2022-05-17
US11829729B2 (en) 2023-11-28
KR20220053017A (ko) 2022-04-28
EP4025991A4 (en) 2023-09-27
US20210072957A1 (en) 2021-03-11
WO2021046566A1 (en) 2021-03-11
EP4025991A1 (en) 2022-07-13

Similar Documents

Publication Publication Date Title
KR102819857B1 (ko) 시공간 융합-곱하기-더하기 및 관련 시스템, 방법 및 디바이스
KR102780371B1 (ko) 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템
US11755206B2 (en) Bank to bank data transfer
US12340217B2 (en) Apparatus and methods related to microcode instructions indicating instruction types
US10929283B2 (en) Apparatuses and methods for transferring data
US20200364138A1 (en) Apparatuses and methods for write address tracking
CN110326046B (zh) 用于在数据路径中计算的设备及方法
US20200327923A1 (en) Utilization of data stored in an edge section of an array
US10971214B2 (en) Apparatuses and methods to perform logical operations using sensing circuitry
US10387058B2 (en) Apparatuses and methods to change data category values
US10510381B2 (en) Data transfer between subarrays in memory
KR102780370B1 (ko) Pim(processing-in-memory) 연산 수행 방법, 및 관련 메모리 디바이스 및 시스템
US10522210B2 (en) Apparatuses and methods for subarray addressing
CN107408405A (zh) 用于并行写入到多个存储器装置位置的设备及方法
CN107430874A (zh) 用于数据移动的设备及方法
US20250191969A1 (en) Apparatuses and methods for organizing data in a memory device

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20220331

Patent event code: PA01051R01D

Comment text: International Patent Application

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20240719

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20250324

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20250609

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20250610

End annual number: 3

Start annual number: 1

PG1601 Publication of registration